Intel Architecture Code Analyzer (IACA) ialah alat analisis statik yang kini dihentikan direka untuk mengoptimumkan arahan penjadualan pada pemproses Intel. Ia menganalisis binari yang disusun dengan penanda yang disuntik, membenarkan cerapan tentang corak pelaksanaan kod dan penggunaan sumber.
C/C :
#include "iacaMarks.h" while (cond) { IACA_START // Loop body IACA_END }
Perhimpunan (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
Jalankan IACA dengan arahan berikut:
iaca.sh -<bitness> -arch <architecture> -graph <output file> <binary>
Contoh:
iaca.sh -64 -arch HSW -graph insndeps.dot foo
IACA menjana dua jenis output:
Laporan Analisis Laluan:
Graf Kebergantungan Grafviz:
Snippet Perhimpunan:
.L2: vmovaps ymm1, [rdi+rax] ;L2 vfmadd231ps ymm1, ymm2, [rsi+rax] ;L2 vmovaps [rdx+rax], ymm1 ; S1 add rax, 32 ; ADD jne .L2 ; JMP
Output (bahagian):
Intel(R) Architecture Code Analyzer Version - 2.1 ... Throughput Analysis Report -------------------------- Block Throughput: 1.55 Cycles Throughput Bottleneck: FrontEnd, PORT2_AGU, PORT3_AGU
Laporan mengenal pasti kesesakan sebagai bahagian hadapan dan dua AGU pada Haswell seni bina.
Atas ialah kandungan terperinci Bagaimanakah IACA Boleh Membantu Mengoptimumkan Penjadualan Arahan untuk Pemproses Intel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!