„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > IACA hilft bei der Optimierung der Intel -CPU -Code -Leistungsanalyse

IACA hilft bei der Optimierung der Intel -CPU -Code -Leistungsanalyse

Gepostet am 2025-04-29
Durchsuche:217

How Does Intel Architecture Code Analyzer (IACA) Help Analyze and Optimize Code Performance for Intel CPUs?

als Intel Architecture Code Analyzer bekannt, ist IACA ein erweitertes Tool zur Bewertung der Codeplanung gegen Intel CPUs. Es arbeitet in drei Modi:

  • Durchsatzmodus: iaca maximale Durchsatz, vorausgesetzt, es ist der Körper einer verschachtelten Schleife. Anweisungen.
  • Trace -Modus: iaca verfolgt die Abfolge von Anweisungen, während sie durch Pipelines voranschreiten. Abhängig von der Version).
  • Berichte in detaillierten ASCII- oder interaktiven Graphviz -Diagrammen. unterstützt C, C und x86 Assembly -Analyse. Sprache.

c/c:

geben den notwendigen IACA -Header (iacamarks.h) ein und platzieren Sie Start- und Endmarker um Ihre Zielschleife:
  • / * C oder C -Nutzung *///C oder C -Nutzung *////c oder c -Nutzung *////cr. while (cond) { IACA_START / * Innerste Schleifenkörper *// / * ... */ } IACA_END
  • Assembly (x86):
fügen Sie die angegebenen magischen Byte -Muster ein, um Marker manuell zu benennen:

/ * Nasm Usage *//////// MOV EBX, 111; Start Marker -Bytes DB 0x64, 0x67, 0x90; Start Marker -Bytes .inner MostLooplabel: ; Schleifenkörper ; ... JNE .inner MOSTLOOPLABEL; Bedingter Zweig nach hinten bis zur Schleife Mov Ebx, 222; Endmarker -Bytes DB 0x64, 0x67, 0x90; Endmarker -Bytes

Befehlszeile Invocation:

icaica aus der Befehlszeile mit entsprechenden Parametern wie:

iaca.sh -64 -arch -Grafe InnDeps.DOT FOOSEM

. Eine Haswell -CPU, die einen Analysebericht und eine GraphViz -Visualisierung generiert. Betrachten Sie zum Beispiel den folgenden Assembly -Snippet:

/* C or C   Usage */

while(cond){
    IACA_START
    /* Innermost Loop Body */
    /* ... */
}
IACA_END

Durch Einfügen von Markierungen in diesen Code und analysieren, kann IACA melden (gekürzt): Durchsatzanalysebericht ------------------------------ Blockdurchsatz: 1,55 Fahrraddurchsatz Engpass: Frontend, Port2_agu, port3_agu [Portdruckausfall] | Anweisung -------------------------- | ----------------- | | VMOVAPS YMM1, YMMWORD PTR [RDI RAX*1] | 0,5 cp | | 1,5 CP | VFMADD231PS YMM1, YMM2, YMMWORD PTR [RSI RAX*1] | 1,5 CP | VMOVAPS YMMWORD PTR [RDX RAX*1], YMM1 | 1 cp | Fügen Sie Rax, 0x20 hinzu | 0 cp | Jnz 0xffffffffffffffeC

Aus dieser Ausgabe identifiziert IACA den Haswell -Frontend und den AGU von Port 2 und 3 als Engpässe. Es deutet darauf hin, dass die Optimierung der von Port 7 zu verarbeitenden Speicheranweisung die Leistung verbessern könnte.

/* NASM Usage */

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
Einschränkungen:

iaca hat einige Einschränkungen:

Es unterstützt bestimmte Anweisungen, die in Analyse ignoriert wurden. Ausschließen älterer Modelle.
/* NASM Usage */

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
Der Durchsatzmodus ist auf innerste Schleifen beschränkt, da er keine Verzweigungsmuster für andere Schleifen schließen kann.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3