测试 Cache 的相联度
实验过程
实验思路 1
- 使用一个 2 倍 Cache Size 大小的数组
- 将数组分为 2^{n} 块,只访问其中的奇数块
- 逐渐增大 n 的取值,当某一次访问变慢的时候,2^{n-2} 就是相联度
实验思路 2
- 计算总共的 Cache Line 数量,记为 X
- 使用一个 2 倍 Cache Size 大小的数组
- 每次使用 X/n 个缓存行的步长,多次访问这个数组
- 当从某一次测试开始,访问时间显著增加,则该次对应的 n 就是相联度
注意:
- 控制访存次数
- 可以使用其他的方法进行测试
- 在报告中给出你所使用的方法以及对应的理论分析
- 相联度测试可能会受到其他因素影响导致实验效果不明显
- 相联度可能并非 2 的幂次
示例结果
实验使用方法 2,通过读取 ways_of_associativity
文件,获得了 i7-10750H 的 L1 DCache 的相联度为 8。
某次测试的运行时间结果如下:
发现当 n = 8 开始,访问时间显著增加,与预期相符。
最后更新:
2025年3月12日
作者: