Intel Architecture Code Analyzer (IACA) ist ein inzwischen eingestelltes statisches Analysetool zur Optimierung des Unterrichts Planung auf Intel-Prozessoren. Es analysiert kompilierte Binärdateien mit injizierten Markern und ermöglicht so Einblicke in Codeausführungsmuster und Ressourcennutzung.
C/C:
#include "iacaMarks.h" while (cond) { IACA_START // Loop body IACA_END }
Montage (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
Führen Sie IACA mit dem folgenden Befehl aus:
iaca.sh -<bitness> -arch <architecture> -graph <output file> <binary>
Beispiel:
iaca.sh -64 -arch HSW -graph insndeps.dot foo
IACA generiert zwei Arten von Ausgabe:
Durchsatzanalysebericht:
Graphviz Abhängigkeitsdiagramm:
Assembly-Snippet:
.L2: vmovaps ymm1, [rdi+rax] ;L2 vfmadd231ps ymm1, ymm2, [rsi+rax] ;L2 vmovaps [rdx+rax], ymm1 ; S1 add rax, 32 ; ADD jne .L2 ; JMP
Ausgabe (Teil):
Intel(R) Architecture Code Analyzer Version - 2.1 ... Throughput Analysis Report -------------------------- Block Throughput: 1.55 Cycles Throughput Bottleneck: FrontEnd, PORT2_AGU, PORT3_AGU
Der Bericht identifiziert den Engpass als Frontend und zwei AGUs auf der Haswell-Architektur.
Das obige ist der detaillierte Inhalt vonWie kann die IACA dabei helfen, die Befehlsplanung für Intel-Prozessoren zu optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!