2009-01-23 46 views

回答

10

缓存感知算法的设计,以尽量减少进出处理器的片上内存缓存的内存页的运动。这个想法是为了避免所谓的“缓存未命中”,这会导致处理器在将数据从RAM加载到处理器缓存时停顿。

缓存感知算法小于最佳的纸上可以超越传统的算法,在理论上是“更快,”因为缓存感知算法更有效地使用内存。

缓存感知算法明确的编码才能处理器的缓存行为的优势。有关处理器内存页面大小和“缓存行”的详细信息被编码到算法中。因此,高速缓存感知算法将是高度特定于处理器的。

缓存遗忘算法被编码为以比传统算法更友好的方式使用内存,但它并不依赖于底层硬件的详细细节。

+2

嗯他没有要求例子?!第 – ljs 2009-01-24 14:25:15

+1

号这个问题说“简单的解释”。 – 2009-01-27 16:52:38

4

我想到了一个高速缓存感知算法的最简单的例子之一访问二维数组行主要与列重大。由于二维数组通常作为数组所有行的串联存储在内存中,因此逐行访问它会在合适的时间将适当的数据放入缓存中。但是,当按列 - 主要顺序访问数组时,内存中的大量跳转和缓存未命中可能会导致大幅减速。

举个例子,这个C++代码:

for (int i = 0; i < MAX_N; ++i) { 
    for (int j = 0; j < MAX_N; ++j) { 
    a[i][j] = 10; 
    } 
} 

运行速度更快我的机器上3-4倍,如果我交换接入蜂窝小区的指标(即接入a[j][i]代替)。