【问题标题】:How to count the number of instructions executed in an ARM program?如何计算ARM程序中执行的指令数?
【发布时间】:2012-04-02 19:53:59
【问题描述】:

我想通过计数指令对我想对应用程序进行的更改执行性能测量。但是,我对 ARM 的调试接口不够熟悉,不知道如何执行此操作。这种事情甚至有接口吗?如有必要,我完全有能力深入内核,但我的直觉告诉我这种事情应该在用户空间中实现。

【问题讨论】:

  • 看看这个关于访问循环计数器的讨论stackoverflow.com/questions/3247373/…
  • 感谢您的提示,但我在模拟器中运行,这使得循环计数毫无用处。我不得不依赖指令计数。
  • 您使用的是哪个模拟器?也许它有能力报告指令计数,或产生指令跟踪。

标签: linux performance assembly linux-kernel arm


【解决方案1】:

Linux 内核中的CONFIG_PERF_EVENTS .config

用于访问它的用户空间工具位于linux-source/tools/perf/

HW_PERF_EVENTS 启用 PMU,CPU_HAS_PMU 是这样定义的:(CPU_V6 || CPU_V6K || CPU_V7 || XSCALE_PMU) && (!ARCH_OMAP3 || OMAP3_EMU) 所以你的芯片可能有它。否则,Linux 将尝试在软件中获取一些统计信息(我想在中断中采样 %pc 的值)。

【讨论】:

    【解决方案2】:

    ARM Profiler User Guide 表示在 Real-Time System Model 中运行时可以创建 instruction trace 并且可以在代码和回放视图disassembly panel中显示执行的指令计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多