概要分析指令缓存未命中

我想构建我的代码中每个非内联函数f()所产生的指令缓存惩罚的直方图。因此,如果我的代码中总共有k个非内联函数,我需要k个单独的直方图。我想知道是否有任何已知的解决方案。概要分析指令缓存未命中

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

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

回答:

根据您的操作系统和处理器,有更精确的解决方案。如果你在linux上,使用perf_events。它为PMU事件提供了一个良好的接口。您可以使用它来获取确切的icache-misses计数,并对这些事件的堆栈快照进行采样,以确定icache-misses发生的位置。

以上是 概要分析指令缓存未命中 的全部内容, 来源链接: utcz.com/qa/265883.html

回到顶部