英特尔架构代码分析器 (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 生成两种类型输出:
吞吐量分析报告:
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中文网其他相关文章!