如何衡量ARM性能?

时间:2011-06-17 09:28:31

标签: c arm

我正在优化软件并希望衡量性能。所以我目前正在使用OVP(开放虚拟平台)模拟ARM平台,我将统计数据作为模拟时间和模拟指令。

我的问题是,为什么每次运行软件时模拟指令都不同(不同,但非常接近)?它应该每次都不一样吗?是不是这样,我用C编写的软件将编译成ARM汇编程序指令,每次运行软件时,模拟指令将运行这些ARM汇编程序指令的次数?它应该每次都一样吗?

我该如何衡量表现?取10个模拟指令样本并得到平均值?

1 个答案:

答案 0 :(得分:4)

根据我在真实(非模拟)ARM中的经验,如果我对代码的一部分采用循环计数,循环次数会有所不同,这是因为:

  • 执行代码中间可以有上下文切换。
  • 进入代码部分时,CPU的初始状态可能不同。 (例如管道的内容,分支预测等)。
  • 进入代码部分时缓存状态会有所不同。
  • 外部因素,如其他硬件访问外部存储器。

由于所有这些,采用平均值(加上一些其他统计指标)实际上是实际硬件和真实操作系统的唯一实用方法。在一个好的模拟器中,这些因素中的一些或可能被消除。

在某些真实芯片上(或者如果模拟器支持),ARM Performance Monitoring Unit可能很有用。

如果您正在为Cortex A8编码this是一个很酷的在线周期计数器,可以真正帮助您从代码中挤出更多性能。

相关问题