IACA(Intel Architecture Code Analyser)는 현재 단종된 정적 분석 도구로, 명령어 최적화를 위해 설계되었습니다. 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는 두 가지를 생성합니다. 출력 유형:
처리량 분석 보고서:
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의 프런트엔드 및 두 개의 AGU 아키텍처.
위 내용은 IACA는 인텔 프로세서에 대한 명령어 스케줄링을 최적화하는 데 어떻게 도움을 줄 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!