Caching 运行算法时,检测CPU缓存未命中的最佳方法是什么?

Caching 运行算法时,检测CPU缓存未命中的最佳方法是什么?,caching,cpu,cpu-cache,Caching,Cpu,Cpu Cache,我们有一个算法性能很差,我们认为这是因为CPU缓存未命中。然而,我们无法证明这一点,因为我们没有任何方法来检测它们。有没有办法知道一个算法会产生多少CPU缓存未命中?我们可以将其移植到任何允许我们检测它们的语言 提前感谢。英特尔CPU保留性能计数器,您可以使用一些汇编指令提取这些计数器 您能否(1)在静态系统上进行基线缓存未命中,(2)运行程序并进行比较 请参阅第18节第15页(18-15)第3B卷,了解您必须编写的汇编程序。找出此类问题的最简单方法是使用探查器并收集与缓存相关的性能计数器 我建

我们有一个算法性能很差,我们认为这是因为CPU缓存未命中。然而,我们无法证明这一点,因为我们没有任何方法来检测它们。有没有办法知道一个算法会产生多少CPU缓存未命中?我们可以将其移植到任何允许我们检测它们的语言


提前感谢。

英特尔CPU保留性能计数器,您可以使用一些汇编指令提取这些计数器

您能否(1)在静态系统上进行基线缓存未命中,(2)运行程序并进行比较


请参阅第18节第15页(18-15)第3B卷,了解您必须编写的汇编程序。

找出此类问题的最简单方法是使用探查器并收集与缓存相关的性能计数器

我建议检查以下工具:

  • 英特尔VTune™ 放大器XE(支持linux和windows;C/C++、Java、.NET)-
  • OProfile-
是否可以看到算法的整体结构(如果不是太长)