调试CPU缓存

时间:2016-11-28 08:57:18

标签: c++ c performance caching cpu-cache

我目前正在尝试优化我的软件以获得更好的CPU缓存使用率。 SO上有一些帖子表明它有时难以猜测 CPU缓存正在做什么以及为什么在某些情况下会出现性能下降的原因。例如:

因此,为了获得缓存未命中的线索,我可以运行perf来获取缓存未命中数以及它们发生的位置以及valgrind --tool=cachegrind来模拟缓存(至少L1和最后一级缓存。)

很高兴知道哪里缓存未命中,但我想知道为什么它们发生(例如缓存垃圾等) )。有没有办法明确暂停程序并查看缓存中的内容(可能是程序在valgrindvgdb附加了)?

1 个答案:

答案 0 :(得分:0)

根据我的经验,您需要反汇编二进制文件,并查看程序使用缓存的位置。查看调用预取或高速缓存指令的位置。这将为您提供它的地点和原因。这是一个不幸的痛苦过程。