STM32F4显著增强的DSP指令

2019-07-21 05:24发布

?单周期的乘加指令(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]
STM32F4_高性能的数字信号控制器.pdf
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
lvjing880907
1楼-- · 2019-07-21 05:36
有点乱!还是谢谢楼主分享
shihantu
2楼-- · 2019-07-21 06:57
编译器支持才有意义.
M4F能直接用上的都是浮点指令,DSP指令要自己内嵌汇编,或者调用CMSIS的函数,本质还是内嵌汇编.
而且没有定点-浮点硬件转换,时间都浪费在这里了.
骤雨龙元
3楼-- · 2019-07-21 07:09
同意楼上的说法。
shyinyang
4楼-- · 2019-07-21 07:48
 精彩回答 2  元偷偷看……
lvjing880907
5楼-- · 2019-07-21 13:38
我来继续定下!
lvjing880907
6楼-- · 2019-07-21 17:24
不错

一周热门 更多>