跳转至

测试 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日
作者:cuibst (97.06%), Zheng Hongpei (2.94%)