打印

请问:硬件除法究竟有多快?一个时钟?

[复制链接]
2935|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haha01|  楼主 | 2008-7-9 16:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
香水城| | 2008-7-9 17:24 | 只看该作者

STM32的乘法指令为单周期的,除法指令根据操作数大小为2~12

使用特权

评论回复
板凳
lidawei| | 2008-7-9 23:24 | 只看该作者

千万别被误导

所有的CortexM3执行乘法指令MUL都是1个时钟周期,但此指令执行的结果是两个32位寄存器相乘后的低32位,高32位没有保存,也就是说要获得正确的结果,要么相乘后结果小于32位,要么不用此指令,改用长乘指令,即32位x32位=64位的UMULL、SMULL指令,此两指令的执行时间与MUL指令有天壤之别:
Multiply:1 or 2 cycles。
Multiply with 64-bit result:3-7 cycles。

UMULL/SMULL/UMLAL/SMLAL use early termination depending on the size
of source values. These are interruptible (abandoned/restarted), with worst case latency of one cycle. MLAL versions take four to seven cycles and MULL
versions take three to five cycles. In both cases, the signed version is one cycle longer than the unsigned.
UMULL/SMULL/UMLAL/SMLAL执行起来甚至比ARM7慢!据说AVR32也只需2或4周期,感觉这几个指令是M3中设计得最失败的,不知是基于功耗的考虑还是芯片面积或是其他方面的考虑。总之觉得M3不适于大的数据处理,只适于较小数据量方面的应用。STM32那个12位的ADC特别可爱。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

26

帖子

1

粉丝