我理解缓存命中和遗漏的概念,但不知何故,我并没有真正了解代码示例。以下代码应生成许多catch Hits,但为什么呢?我们在哪个部分看到了这个?我们现在怎么说这段代码会在大部分时间内查找缓存中的数据?
char array[1000];
for ( int i=0; i<1000; i++ ){
printf("%d ", array[i]);
}
答案 0 :(得分:1)
给定代码是空间位置引用的完美示例,因为array[i]
是以连续和前向方式访问的。根据{{3}}:
空间位置
如果在特定时间引用特定存储位置, 然后很可能会引用附近的内存位置 不久的将来。在这种情况下,通常会尝试猜测 当前参考区域周围区域的大小和形状 值得准备更快的访问。
您可能还注意到i
变量显示时间局部性,在这种情况下,它可能会被Wikipedia放入CPU寄存器。