インテル アーキテクチャ コード アナライザー (IACA) は、命令を最適化するために設計された、現在は廃止された静的解析ツールです。 Intel プロセッサーでのスケジューリング。挿入されたマーカーを使用してコンパイルされたバイナリを分析し、コードの実行パターンとリソース使用率についての洞察を可能にします。
C/C :
#include "iacaMarks.h" while (cond) { IACA_START // Loop body IACA_END }
アセンブリ(x86):
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 を実行します:
iaca.sh -<bitness> -arch <architecture> -graph <output file> <binary>
例:
iaca.sh -64 -arch HSW -graph insndeps.dot foo
IACA は 2 つを生成します出力の種類:
スループット分析レポート:
Graphviz 依存関係グラフ:
アセンブリ スニペット:
.L2: vmovaps ymm1, [rdi+rax] ;L2 vfmadd231ps ymm1, ymm2, [rsi+rax] ;L2 vmovaps [rdx+rax], ymm1 ; S1 add rax, 32 ; ADD jne .L2 ; JMP
出力 (部分):
Intel(R) Architecture Code Analyzer Version - 2.1 ... Throughput Analysis Report -------------------------- Block Throughput: 1.55 Cycles Throughput Bottleneck: FrontEnd, PORT2_AGU, PORT3_AGU
レポートはボトルネックを特定しますHaswell 上のフロントエンドと 2 つの AGU として
以上がIACA はインテル プロセッサーの命令スケジューリングの最適化にどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。