インテル アーキテクチャー コード・アナライザー (IACA) は、最新のコンピューターで実行される命令のスケジューリングに関する貴重な洞察を提供する強力な静的分析ツールです。インテルプロセッサ。 IACA は 2019 年にサポートが終了しましたが、コードのパフォーマンスを分析するための有用なリソースであり続けています。
IACA を使用すると、C/C または x86 アセンブラーでのコードの分析が可能になります。 3 つのモードで動作します。
分析するにはIACA を使用したコードでは、コンパイルされたコードにマーカーを挿入する必要があります。バイナリ。
C/C :
#include "iacaMarks.h" while (cond) { IACA_START /* Loop body */ /* ... */ } IACA_END
アセンブリ (x86):
; NASM usage of IACA mov ebx, 111 ; Start marker bytes db 0x64, 0x67, 0x90 ; Start marker bytes .innermostlooplabel: ; Loop body ; ... jne .innermostlooplabel ; Conditional branch backwards to top of loop mov ebx, 222 ; End marker bytes db 0x64, 0x67, 0x90 ; End marker bytes
IACA はテキストレポートを生成し、スケジュール分析の詳細を示す Graphviz 図。これらのレポートは、命令実行における潜在的なボトルネックを浮き彫りにします。たとえば、Haswell プロセッサ分析の次の出力は、フロント エンドと AGU ポートがパフォーマンスのボトルネックであることを示しています。
Throughput Analysis Report -------------------------- Block Throughput: 1.55 Cycles Throughput Bottleneck: FrontEnd, PORT2_AGU, PORT3_AGU
IACA にはいくつかの制限があります。
その制限にもかかわらず、IACA は命令スケジューリングに関する貴重な洞察を提供し、コードのパフォーマンスを最適化します。ただし、より最近の分析については、LLVM-MCA などの代替ツールの使用を検討してください。
以上がIACA は、Intel プロセッサーでのコードのパフォーマンスの分析と最適化にどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。