我需要一些帮助来计算循环中的缓存命中/未命中,该循环将 128 个 32 位数字加在一起,这些数字位于数组 a[i] (0 <= i <= 127) 中。
缓存本身是空的,并且有 32 字节/行。计算缓存命中率。
a)计数器/总和变量在存储中。b) 将计数器/和变量缓冲到寄存器中 c) 如果我们使用 16 位数字而不是 32 位数字,命中率有何不同。
我不知道如何计算程序中的命中/未命中。我们有一个乘法示例,但我不明白它是如何工作的。
(蓝色为第一道,绿色为第二道)
编辑:
sum = 0
j = 0
loop: read j
if(j >= 128) exit
else
read g[j]
read sum
compute sum + g[j]
write sum
read j
compute j+1
write j
jump to loop
任务的伪代码