跳转至

测量缓存大小

实验1:测量自己 CPU 的 L1 DCache 和 L2 Cache 大小

基本思路:从内存中连续读取数组中不同大小的数据,观察平均读取速度。

  • 当数组大小超过 L1 DCache Size 之后,会出现 L1 DCache 的读缺失,平均读取速度会增加。
  • 同理可以测出 L2 Cache 的大小。

注意:

  1. 访问序列的步长需要稍微大一些
  2. 可以多重复几次访存
  3. 对于不同规模的测试数组,需要保证访存次数一致。当然也可以进行归一化。
  4. 可以使用最简单的顺序访问模式,也可以构造随机访问序列
  5. 小心 O2 和 O3 优化,求 1+……+n 可能会被优化掉
  6. python 和 java 等语言可能不好控制地址等关键参数,不建议使用

i7-10750H CPU 的一次测试结果统计如下图:

可以发现 L1 DCache 结果匹配,L2 Cache 结果偏小。

思考题

理论上 L2 Cache 的测量与 L1 DCache 没有显著区别。但为什么 L1 DCache 结果匹配但是 L2 Cache 不匹配呢?你的实验有出现这个现象吗?请给出一个合理的解释。

提示:DCache v.s. Cache

不同数组大小和访问步长对时间测量的结果如下图,仅供参考:


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