首页 文章

调试CPU缓存

提问于
浏览
1

有时'm currently trying to optimize my software for better CPU cache usage. There are some posts on SO which suggest that it' s CPU缓存正在做什么以及为什么在某些情况下会出现性能下降的原因 . 例如:

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

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

1 回答

  • 0

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

相关问题