有人可以发布一些关于缓存感知算法的简单解释吗?虽然有很多链接可用,但这些网站上的阅读材料都具有学术性质,需要花费时间才能阅读和理解。
一个“缓存感知算法”旨在最小化内存页在处理器芯片上的缓存中进出移动。其想法是避免所谓的“缓存未命中”,这会导致处理器停顿,同时从RAM加载数据到处理器缓存中。
一个看起来不太优秀的“缓存感知算法”可以胜过理论上更快的传统算法,因为缓存感知算法更有效地使用内存。
一个“缓存感知算法”被明确编码以利用处理器的缓存行为。处理器的内存页大小和“缓存行”的详细信息被编码到算法中。因此,缓存感知算法将非常依赖于特定处理器。
一个“缓存无关算法”编码的方式比传统算法更适合缓存,但它不依赖于底层硬件的详细信息。
for (int i = 0; i < MAX_N; ++i) {
for (int j = 0; j < MAX_N; ++j) {
a[i][j] = 10;
}
}
如果我交换所访问的单元格的索引(即,访问a[j][i]
),那么在我的计算机上运行速度比原来快3-4倍。