LAOXU 发表于 2024-11-14 07:31:15

新版的 MPU32D 指令, 非常不错!!!

新版的 STC8H手册已下载, 增加了对 MDU32D 指令的描述, 看后觉得非常不错!!!
下面是观后感, 个人观点, 仅供参考.

新版的 MDU32D 指令, 如应用于 C251, 那么, 单有 32位x32位=64位 指令, 就显得不够(仅能加速 双精度浮点乘法运算),
还要有 64位/32位=64位 指令配套, 这样, 才能同时加速 双精度浮点除法运算.

另外, 我对比 DPU32 和 MDU32D 指令, 发现 MDU32D 是 DPU32D 指令一个子集,
新版的 MDU32D 指令, 如应用于 51, 方便的话, 是否把 DPU32D 指令多搬 几条上去?
比如:
交换指令 R0-R3 <--> R4-R7 , 可加快 单精度浮点加/减法运算的速度(单条指令, 可缩短 20多条指令执行周期, 超值!!!).
其他:
CMP比较指令, 可弥补 51比较指令的不足, 加快运算速度
对 R0-R3 清0指令, 可加快对 R3赋值 10, 用于 BCD,BIN 码之间的快速转换(用于乘/除法定数运算)
......

bkeuqoaq 发表于 2024-11-14 08:54:11

64位除法别想了
64位/32位=32位,这明显不行,结果可能是64位的,怎么办?

LAOXU 发表于 2024-11-14 10:33:23

bkeuqoaq 发表于 2024-11-14 08:54
64位除法别想了
64位/32位=32位,这明显不行,结果可能是64位的,怎么办?

可扩展位数使用,用于双精度浮点除法运算,或者64位长整数除法。

LAOXU 发表于 2024-11-14 10:38:41

bkeuqoaq 发表于 2024-11-14 08:54
64位除法别想了
64位/32位=32位,这明显不行,结果可能是64位的,怎么办?
应该是笔误,结果是64位最佳,使用方便,结果是32位商也能接受(英特尔PC指令标准格式除法),
只是想要64位商,需做2次除法,慢一些,对以前来说,可大幅降低芯片的晶体管数量,
现在无所谓了,不再乎这个门电路。

bkeuqoaq 发表于 2024-11-14 10:39:13

LAOXU 发表于 2024-11-14 10:33
可扩展位数使用,用于双精度浮点除法运算,或者64位长整数除法。

我的意思是不能64/32=32位,结果必须是至少64位,否则某些调用结果就是64位,这样会引起错误的

LAOXU 发表于 2024-11-14 10:49:23

bkeuqoaq 发表于 2024-11-14 10:39
我的意思是不能64/32=32位,结果必须是至少64位,否则某些调用结果就是64位,这样会引起错误的 ...

PC机的CPU,标准除法就是这种格式标准,使用略为麻烦点(比没有要强),顶楼是笔误,我修改一下,这上面没啥讨论的意义。

LAOXU 发表于 2024-11-14 11:29:20

新版的 32位x32位=64位乘法,可代替小除乘法,在51中,计算 单精度浮点数,做一次乘法即可,运算速度快,否则,需用16位的乘除法,组合运算数次,再累加后得出结果,速度慢,当然,这种组合算法,比常规的移加模拟算法,还是要快几倍。

LAOXU 发表于 2024-11-17 14:07:06

关于 32位 PC机(x86芯片, 64位/32位 --> 商32位,余数32位), 扩展到 64位/32位 除法算法。

非常简单,算法如下。

1.计算x = x / y,其中x是64位,y是32位。
2.x.l是x的低32位,x.h是x的高32位。
3.h <- x.h / y
4.x.h <- x.h % y
5.x.l <- x / y
6.x.h <- h
7.return x

神农鼎 发表于 2024-11-17 15:06:16


Ai8052U-144K256-LQFP100/64/48, DSP 功能已验证完成























社区闲人 发表于 2024-11-17 20:31:20

DSP的32位乘除复合运算指令,很nice!
页: [1] 2
查看完整版本: 新版的 MPU32D 指令, 非常不错!!!