| ?单周期的乘加指令(MAC) ?乘法器可以在单周期内完成相乘或乘加指令
 ?有符号和无符号的乘法
 ?有符号和无符号的乘加
 ?有符号和无符号的长数据乘加(64位)
 ?单周期的SIMD指令
 ?同时有多个数据参与运算
 ?例如:16x16 + 16x16 + 32
 ?相对Cortex-M3指令显著提高了速度
 ?16位乘加指令提高4倍(双16位乘加器)
 ?32位乘加指令提高2倍
 ?32位乘加指令提高至7倍
 DSP指令提高了控制应用的性能
 这是一个无刷电机控制中用到的一个复数计算
 ?获益于LOAD操作和SIMD指令
 ?整体性能提高25%至35%
 Cortex M3 (28-38周期)
 Cortex M4 (18-28周期)
 LDRSH R12,[R4, #+12]
 LDR R10,[R4, #+12]
 LDRSH R0,[SP, #+20]
 (1条32位load指令代替了2条带符号扩展的16位load指令:减少2个周期)
 SXTH LR,R8
 MUL R8,LR,R0
 LDR R1,[R4, #+44]
 SDIV R0,R1,R7
 LDRSH R2,[R4, #+24]
 LDRSH R3,[R4, #+26]
 LDR R2,[R4, #+22]
 LDRSH R10,[R4, #+22]
 (1条32位load指令代替了2条带符号扩展的16位load指令:减少2个周期)
 SXTH R6,R6
 MLS R5,R6,R10,R5
 MLA R5,R9,R12,R5
 SMLSD R5, R10, R6, R5
 (1条SIMD指令代替2条乘加指令:减少3个周期)
 ASR R6,R8,#+15
 MLA R5,R6,R3,R5
 SXTH R0,R0
 MLS R5,R0,R2,R5
 SMLSD R5, R0, R2
 (1条SIMD指令代替2条乘加指令:减少3个周期)
 STR R5,[SP, #+12]
 |