我想计算使用此代码片段的每次循环迭代的缓存未命中率:
int x[2][256];
int i;
int sum = 0;
for(i = 1;i < 256; i++) {
sum += x[0][i] * x[1][i];
}
假设:
- 数组 x 从 0x0 开始
- 缓存为空
- 大小为 1024 字节和块大小为 32 字节的直接映射缓存
我会说我们每次循环迭代的未命中率是一次,因为我们还要遍历 x 的列。这样对吗?
下一个问题:如果缓存大小为 2048 字节,那么未命中率是多少?