计算cache hit rate例题
题目
cache结构分析
1kB blocks => 2^10 B => b=10
1MB Mem => 2^20 B => m=20
16kB cache with 1kB block => 16(2^4)set => s=4
m = s+t+b => t=6
分析line1的冲突情况
注意,此手稿中分析了i和total,但sol说这两个变量会放入register
i和total不需要考虑访存,sol说会放入register
除此之外,还需要考虑i和total的冲突情况
i的地址是0x18000 = 0b 0001, 1000, 0000, 0000, 0000
set为0, tag为0001,10,根据上述int[]分析,会和最后的set为0的int元素(A[4096]的tag为0001,01)冲突,覆盖该int元素
total的地址是0x18004 = 0b 0001, 1000, 0000, 0000, 0100
set为0, tag为0001,10.与i相同。
关于line2的代码
for (i=0; i < NUM_INTS; i += 128) {
total += A[i];
}
分析line2的冲突情况
-
代码共三个io操作,read A[], read total, write total
-
A[]数组每两个相隔128的元素有相同的set/tag
逐步分析
由于step=128的访问A数组,共64个元素,后32个元素和前32个元素冲突,但是在相邻的一组数据中,(例如A[0]和A[128], A[256]和A[512])之间有相同tag和set,不会冲突
读A[0],与cache中的A[4096]冲突
读A[128], 与A[0]相同,hit
读A[256], 与A[4096+256]冲突
读A[512], hit
省略部分步骤
本文来自博客园,作者:ijpq,转载请注明原文链接:https://www.cnblogs.com/ijpq/p/16417341.html