【问题标题】:Analysing assembly code performance分析汇编代码性能
【发布时间】:2014-10-01 15:56:19
【问题描述】:

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

我的问题是由于我缺乏经验,我很难理解为什么汇编输出在一种情况下表现更差,而在另一种情况下表现更好。 oprofile 之类的工具在这里并没有真正的帮助,查看官方的 IBM 指令文档并没有提供任何关于特定指令的性能特征的见解(至少到目前为止我所看到的)。如何解决这类分析问题?如前所述,我在装配和管道分析方面几乎没有经验,因此我将不胜感激有关通常如何解决此类问题的任何建议。有什么工具可以帮助我吗?

另外,我对编译器生成代码的方式并不感兴趣(从某种意义上说,我对原始 C 代码的工作方式并不感兴趣),我真的只对理解程序集感兴趣性能分析。

更新

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

【问题讨论】:

  • 这是一个很大的主题,对于 StackOverflow 而言,这个问题太宽泛了 - 尝试选择一个小的具体示例,然后发布源代码和汇编代码并提出一个非常具体的问题。跨度>
  • 我知道这是一个大而广泛的主题,但欢迎任何可能帮助我解决问题的指针。明天我会尝试添加示例汇编代码
  • 哪些指令看起来比较慢?
  • G5 处理器是特定的(例如与 G4 处理器相比):调度组、一些微编码的委托、更深的管道……如果您专门为 G5 编译程序,并且如果您使用 gcc,您是否尝试过选项 -mcpu=970 和 -mtune=970 ?

标签: performance assembly powerpc


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2022-12-04
    • 2011-03-26
    • 2021-07-25
    相关资源
    最近更新 更多