跳转至

测量 Cache Line Size 的大小

实验思路

使用不同步长,对大于 L1 DCache Size 的某个数组做相同次数的访问

  • 只有当数组大小 大于 L1 DCache Size 时,L1 DCache 才会发生替换
  • 当命中时,访问速度会快
  • 当 Cache Line 的第一个字节缺失时,会访问更高层的 Cache 以及内存,将整个 Cache Line 移入 L1 DCache,导致运行时间增加
  • 当测试步长大于 L1 DCache Line Size 的时候,可以近似认为每次访问都 miss。但实际上可能会有 prefetch 的影响。
  • 使用数组循环访问模式即可

注意:

  • 保证访问次数相同
  • 保证数组大小超过 L1 DCache Size 但不超过 L2 Cache Size

结果示例

通过 cache 设备目录下的 coherency_line_size 文件,得知 i7-10750H 的 Cache Line Size 为 64B

一个测试程序的运行结果如下:

可以发现运行时间在 64B 步长之后有显著提升,与预期相符。

思考题

Prefetch 对于该实验的结果有影响吗?给出你的分析和结论。


最后更新: 2025年3月11日
作者:cuibst