Apple M1/M3/M4 CPU中aese/aesmc指令分数周期延迟机制问询
Apple M1/M3 Max/M4上ARM AES指令延迟特性测试与分析
测试背景与M1结果复现
我正在测试Apple M1、M3 Max和M4 CPU中ARM的aese与aesmc指令的延迟特性。
针对M1,Dougall Johnson测得*融合指令对aese+aesmc*的延迟为3周期。我基于ibireme的代码修改profile_func后复现了该结果:
#define AESE_AESMC \ "aese.16b %[vi], %[vsk]\n\t" \ "aesmc.16b %[vi], %[vi]\n\t" static void profile_func(void) { uint8x16_t vi = vdupq_n_u8(0), vsk = vdupq_n_u8(0); asm volatile("nop"); for (uint64_t i = 0; i < 2097152; i++) { asm( // 64 copies of AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC AESE_AESMC : [vi] "+&w"(vi) : [vsk] "w"(vsk) ); } asm volatile("" : : "r,m"(vi) : "memory"); }
在M1上用-O3 -falign-loops=64编译运行,得到结果:
cycles: 404296596 instructions: 272824106
分析汇编可知共有130条指令(64条aese+64条aesmc+subs+b.ne),将指令数除以2(因aese与aesmc融合)并乘以修正系数128/130后,得到CPI为3.01,与Dougall的结果一致。
M3 Max与M4的特殊测试结果
在M3 Max和M4上运行相同代码时结果更特殊:
- M3 Max的结果为:
cycles: 359632763 instructions: 273144120
经相同修正后CPI为2.67;
- M4的结果为:
cycles: 296016336 instructions: 272749120
修正后CPI为2.20。
我还单独测试了aese指令,得到M1、M3 Max、M4的CPI分别为3.00、2.67、2.14。
并行流配置的困惑
我试图理解M3 Max和M4的分数周期延迟对AES实现并行流数量选择的影响:
- M1有4个可执行这类指令的执行单元,延迟3周期,需至少12个并行流才能达到最佳性能,实际测试IPC接近8(4个执行单元×2条融合指令)。
- M3 Max按计算只需11个并行流,但实际该配置下IPC约7.14,12个并行流时IPC接近8,初步推测延迟在2-3周期波动,需12个流才能充分利用执行单元。
- M4的情况更复杂:理论计算需9个并行流,但最高IPC仅6.22;12个流时IPC约7.56,需至少14个流才能接近8的IPC,这似乎说明延迟有时会超过3周期。
恳请业内人士从底层机制角度,解释M3 Max与M4 CPU出现上述测试结果的原因,以明确AES实现的最优并行流配置。
内容的提问来源于stack exchange,提问作者swineone
相关产品推荐
相关产品推荐

