我是 cachegrind 用于程序分析的长期用户,最近又回去查看官方文档:https ://valgrind.org/docs/manual/cg-manual.html
其中,多处引用了 2000 年代中期的 CPU 模型、实现决策和仿真模型,还有一些声明表明“现代”处理器上的某些行为发生了变化:
LL 缓存通常复制 L1 缓存的所有条目 [...] 这是 Pentium 芯片的标准配置,但 AMD Opterons、Athlon 和 Durons 使用专有的 LL 缓存 [...]
Cachegrind 模拟了 2004 年左右主流桌面/服务器处理器的典型分支预测器。
最新的处理器具有更好的分支预测器 [...] Cachegrind 的预测器设计是故意保守的,以便代表在更复杂的间接分支预测器广泛部署之前的大量处理器安装基础。特别是,后期模型 Pentium 4s (Prescott)、Pentium M、Core 和 Core 2 具有比 Cachegrind 建模的更复杂的间接分支预测器。
现在我想知道
- 在最新一代 CPU 上开发时,这些选择中有多少在 2021 年仍然适用,
- cachegrind 的实现是否已更新以反映最新的 CPU,但手册已过时,
- cachegrind 是否由于模拟遗留行为而在现代 CPU 上显示出偏差的结果。
非常感谢任何见解!