测量缓存大小
实验1:测量自己 CPU 的 L1 DCache 和 L2 Cache 大小
基本思路:从内存中连续读取数组中不同大小的数据,观察平均读取速度。
- 当数组大小超过 L1 DCache Size 之后,会出现 L1 DCache 的读缺失,平均读取速度会增加。
- 同理可以测出 L2 Cache 的大小。
注意:
- 访问序列的步长需要稍微大一些
- 可以多重复几次访存
- 对于不同规模的测试数组,需要保证访存次数一致。当然也可以进行归一化。
- 可以使用最简单的顺序访问模式,也可以构造随机访问序列
- 小心 O2 和 O3 优化,求 1+……+n 可能会被优化掉
- python 和 java 等语言可能不好控制地址等关键参数,不建议使用
i7-10750H CPU 的一次测试结果统计如下图:
可以发现 L1 DCache 结果匹配,L2 Cache 结果偏小。
思考题
理论上 L2 Cache 的测量与 L1 DCache 没有显著区别。但为什么 L1 DCache 结果匹配但是 L2 Cache 不匹配呢?你的实验有出现这个现象吗?请给出一个合理的解释。
提示:DCache v.s. Cache
不同数组大小和访问步长对时间测量的结果如下图,仅供参考:
最后更新:
2025年3月12日
作者: