指令:嵌入式RISC中的DSP扩展

所有DSP架构都有一个特征,那就是支持整数乘法累加。

其中,乘法倾向于发生在比常规整数更短的数上面,比如16位的数相乘。

而累加则倾向于发生在更长的数字上面,比如64位数累加。

至于为什么DSP会需要乘法累加,则是因为,DSP的典型应用,比如滤波器功能的实现会有很多的乘加。

由于Thumb和MIPS16是ARM和MIPS64的子集,所以不支持这样的扩展。相应的,如果想要使用DSP扩展,应该直接使用ARM和MIPS64指令集中定义的扩展指令。

表21罗列了嵌入式RISC支持的乘加操作的乘法的位数和累加的位数,以及操作的指令名。

支持饱和操作的累加器,会将累加器的高位作为符号位,如果操作溢出,则将其设置为最大或者最小值。

ARM v.4 Thumb SuperH M32R MIPS16
相乘大小 32B × 32B 32B × 32B, 16B × 16B 32B × 16B, 16B × 16B
累加大小 32B/64B 32B/42B, 48B/64B 56B
累加器名 任意通用寄存器或者通用寄存器对 MACH, MACL ACC
操作 32B/64B的结果和64B累加,包括有符号和无符号 32B的结果和43B/32B累加(内存中操作);64B的结果和64B/48B累加(内存中操作);清除MAC 32B/48B的结果和64B累加,舍入,赋值
对应的指令名 MLA,SMLAL,UMLAL MAC, MACS, MAC.L,MAC.LS, CLRMAC MACHI/MACLO,MACWHI/MACWLO,RAC, RACH,MVFACHI/MVFACLO,MVTACHI/MVTACLO

表21 嵌入式RISC乘加汇总.

results matching ""

    No results matching ""