为什么此代码会多次生成缓存命中?

时间:2017-02-06 13:26:35

标签: c caching hardware memory-access

我理解缓存命中和遗漏的概念,但不知何故,我并没有真正了解代码示例。以下代码应生成许多catch Hits,但为什么呢?我们在哪个部分看到了这个?我们现在怎么说这段代码会在大部分时间内查找缓存中的数据?

char array[1000]; 
for ( int i=0; i<1000; i++ ){ 
printf("%d ", array[i]); 
}

1 个答案:

答案 0 :(得分:1)

给定代码是空间位置引用的完美示例,因为array[i]是以连续和前向方式访问的。根据{{​​3}}:

  

空间位置

     

如果在特定时间引用特定存储位置,   然后很可能会引用附近的内存位置   不久的将来。在这种情况下,通常会尝试猜测   当前参考区域周围区域的大小和形状   值得准备更快的访问。

您可能还注意到i变量显示时间局部性,在这种情况下,它可能会被Wikipedia放入CPU寄存器。