分析指令缓存未命中

时间:2015-06-11 18:25:53

标签: c++ caching

我想在我的代码中为每个非内联函数f()构造一个指令缓存惩罚的直方图。因此,如果我的代码中总共有k个非内联函数,我想要k个单独的直方图。我想知道是否有任何已知的解决方案。

任何一个特定函数f1()的简单方法是在代码中找到对f1()的所有调用,在调用之前立即记录时间戳值,并在开始时记录时间戳f1()的{​​{1}},构建差异的直方图。它需要添加(n + 1)个新代码行,其中n是调用f1()的次数。

我基本上想要这个天真解决方案的可扩展版本。

1 个答案:

答案 0 :(得分:0)

根据您的操作系统和处理器,可提供更精确的解决方案。如果您使用的是Linux,请使用perf_events。它为PMU事件提供了良好的界面。您可以使用它来获取icache-miss的精确计数,并对这些事件的堆栈快照进行采样,以找出icache-miss正在发生的位置。