分析汇编代码性能

时间:2014-10-01 15:56:20

标签: performance assembly powerpc

我是堆叠溢出的新手,希望得到一些关于如何处理我遇到的问题的建议。由于组装经验很少,我很难理解我所拥有的代码的性能特征。代码在PowerPC架构(旧的Apple G5)上用C语言编写。使用O3运行代码和其他一些优化代码实际运行速度比仅使用O3慢30%。汇编代码之间的区别归结为几条指令(比如3-4)及其排列。

我的问题是由于我的经验不足我很难理解为什么装配输出在情况下表现更差而在另一方面表现更好。诸如oprofile之类的工具在这里并不真正有用,查看官方的IBM指令文档并没有给出关于特定指令的性能特征的任何见解(至少我迄今为止看到过的内容)。如何处理这类分析问题?如上所述,我对装配和管道分析几乎没有经验,因此我很感激有关如何解决这些问题的任何建议。那里有什么工具可以帮助我吗?

另外,我真的不感兴趣为什么编译器以它的方式生成代码(从某种意义上说,我对原始C代码的工作原理并不感兴趣),我真的只对理解汇编感兴趣绩效分析。

更新

我只是想简要介绍一下这个问题 - 通过使用IBM的PowerPC管道模拟器,可以准确地看到管道中发生了什么,因此更容易理解问题(原来是与问题队列充满和调度组形成有关的问题。我建议任何看到类似问题的人使用管道模拟器,它将有助于理解程序的性能!由于功能强大的机器的复杂性,在不使用管道模拟器的情况下分析程序的性能特征似乎非常困难。这可能意味着,为了真正理解您的程序如何影响性能,有必要了解运行代码的体系结构。

1 个答案:

答案 0 :(得分:1)

  

[...]如上所述,我对装配和管道分析的经验很少,因此我很欣赏任何关于如何解决这些问题的建议。 [...]

我建议使用以下材料和用法示例。虽然它们基于IBM POWER7(+),但其中的想法和解释可能会为您提供一些背景信息:

"Commonly Used Metrics for Performance Analysis – POWER7" [0] 
    (First, this paper briefly covers the POWER7 execution pipeline and the PMU hardware. ...)

 "Comprehensive PMU Event Reference – POWER7" [0]  (Performance Monitor
 Unit instrumentation. These events can be measured using tools
 like...)

"Evaluate performance for Linux on POWER" (developerWorks) (Learn to evaluate Linux on POWER® performance issues that focus on compiled language (such as C or C++) environments...)

"Java performance improvements seen on POWER7+" (PowerLinux Community)
    (The processors feature a built-in Performance Monitoring Unit (PMU), designed to provide instrumentation for performance monitoring, workload characterization, and code analysis....)

Source