在执行for循环期间确定直接映射高速缓存的未命中率

时间:2015-11-26 06:07:16

标签: caching computer-architecture

假设我有一个直接映射的缓存,每行有1024行,大小为16字节。 A,B和C也连续存储在存储器中。我运行以下for循环:

for (int i = 0; i < 1024; i++) {
    C[i] = A[i] + B[i];
}

我很担心直接映射缓存在这种情况下是如何工作的。这是我的理由:

在循环的第一次迭代中,存在缓存未命中。高速缓存A [0] - A [15]和B [0] -B [15]。然后,对于循环的接下来的15次迭代,所有缓存请求都会导致命中。因此,对于1024次迭代,每次第16次迭代都是未命中的。因此,此循环中总共有64个缓存未命中。

我的推理是对的吗?而且,如果我的循环运行2000次迭代而不是1024次呢?由于我的信息有限,是否有可能在这种情况下估计缓存未命中数?如果我不必考虑需要覆盖缓存的情况,似乎问题会大大简化。

0 个答案:

没有答案