首页 > 解决方案 > 显示汇编代码的 cpu 周期和延迟的分析器工具

问题描述

我记得在过去,当为第一部 iPhone 开发代码时,XCode 有一个名为 Shark 的分析工具。虽然 Shark IIRC 可以使用时间采样代码进行定期分析,但当我优化代码的热瓶颈时,有一个功能非常有用。

该工具将逐行显示汇编指令,并且对于每一行显示它需要执行多少个 cpu 周期以及它必须为之前的指令停止多长时间。

它看起来像这样: 鲨鱼探查器

指令的周期显示为 X:Y,其中 X 是 CPU 周期的总数,Y 是在执行下一条指令之前需要多少个周期(只要它不依赖于该指令的结果)。“停止”显示下一行的执行停止了多长时间,因为它取决于前一条指令的结果。

这使我能够重组我已经高度优化的代码,通过优化流水线指令并用指令隐藏所有延迟,使其再次快两到三倍。

是否还有这样的工具可以做到这一点?很明显,周期时间取决于执行它的特定 cpu,但我想这样的工具将允许选择架构来显示时间,或者是特定架构的特定工具(在我的情况下,我主要是有兴趣针对英特尔至强 SP 1 和 2 进行优化)

//编辑:虽然很明显现代 CPU 非常复杂(能够无序执行指令或有多个可以并行运行的执行单元),但这种分析仍然是可能的,并且有这样的指令延迟表(和各种架构的累积指令延迟):https ://www.agner.org/optimize/instruction_tables.pdf

标签: assemblyprofiling

解决方案


推荐阅读