测量 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日
作者: