计算机组成原理--无符号数相乘

  要说乘法,可就比除法简单多了。

  在《计算机组成原理》中,总共介绍了三种乘法方案:(人工计算)无符号数相乘、原码相乘、补码相乘。
  往下,又细分了:一位乘法、二位乘法。 如果继续,还可能有四位、八位的乘法。
  其实,任何的 CPU,也就集成了一种乘法器而已,绝不可能既安装无符号数乘法器、又安装了带符号数乘法器。 更不可能既有一位乘法器、又集成二位乘法器。
  究竟什么乘法器是可以兼容两种数字呢? 翻遍了整本书,也没找到一个实用的方案。 既然书上没有明确的结论,那就来看看做而论道的博客吧。

  首先看看无符号数的乘法运算。 其实,这事简单,不用细说,大家都会。  
  已知 x = 1110、y = -1101,求 x·y。
  咦,不是无符号数吗? 这里面怎么有个负数?
  别担心啊!
  乘法运算,都是用绝对值相乘的。 绝对值都是正数,也就相当于无符号数相乘了。

  

  在计算机的教材中,一般不用这种通俗易懂的小学生格式。 总是使用表格的形式,来说明这个相乘的问题。 那就看看下图吧。

  确实,所谓的乘法,的确是:相加、右移一位、相加、右移一位 ... 。
  四位乘以四位数,乘积就是八位的。 过程的细节,就不用说了吧。

  下面,再看看,同样的数字,用原码来相乘,又是怎么操作的。

  可以看出,用原码相乘时,两个乘数,都要在绝对值前面添上一个符号位 0。 乘积,也就要多出来两位数。 这就是说:同样的数值,用原码乘法来实现,乘法器的规模,就必须比无符号数乘法器的规模要大。 那么,性价比,原码乘法器显然就要低一些了。
  另外,原码相乘后,也不能解决乘积的符号问题。 乘积的符号,还是需要另外计算。
  由此来看,原码乘法,没有任何可取之处。
  所以,做而论道是强烈推荐使用无符号数乘法这个方案的。 原码乘法,以后,就别提了。

  无符号数的相乘,用电子器件来实现,在做而论道这里,是轻而易举的。 可见下图。

  在图中的左上角,用两组拨动开关输入了:乘数 A =1110、乘数 B =1101。
  你可以用开关旁边的红蓝点,观察到这些数值。
  在图中的右下角,由八个 LED 显示出来了乘积:1011 0110。
  这个运算结果,和前面的几张图片中的绝对值,是完全相同的。 由它们来互相印证,就可以证明,本电路的计算结果,是完全正确的。
  再看几组数的相乘结果吧。

  上图是:1111 * 1111 = 1110 0001,也就是十进制的:15 * 15 = 225。

  上图是:0011 * 0111 = 0001 0101,也就是十进制的:三七二十一。

  这个无符号数相乘的电路,是正确无误的。 如果哪位网友有 PROTEUS 软件,就可以仿照本图进行绘制,于是,你就有了一个四位乘以四位的乘法计算器。 百试百灵的!

  做而论道设计的电路,采用了阵列式结构。 虽然零件稍多一些,但是其工作速度,却是极高的。 数据的右移,做而论道采用了导线直接连接的形式。 这样设计,就屏弃了用时钟脉冲控制移位的慢动作。
  大家如果看过《计算机组成原理》教材,就知道,教材中是用时钟脉冲来控制数据移位的。 时钟脉冲不来,就移不了位,只能干等。

  上图就是《计算机组成原理》所介绍的原码乘法器的组成框图。
  是不是有点华而不实? 其实这张图,连 “华” 都谈不上,更别说。。。
  时钟脉冲的频率,是由系统控制的,也可以理解为计算机的主频。 八位数乘以八位数,就至少要等来八个脉冲之后,才能得出乘积。
  要知道,加法运算的速度,可比时钟脉冲的速度快多了。 因此,在做而论道设计的电路中,数据的移位,是用导线直接连接的,这就不需要等待时钟脉冲了。 无论何时,数据 A、B 送到输入端,本电路就直接做多次加法运算,直接就能算出乘积的数值。

  上图是《计算机组成原理》所介绍的原码乘法的控制流程。 其中也只有异或运算,还是值得留用的。 其它功能框,并无可取之处。
  咦,这个流程图,是不是还少了点步骤? 
  哦,是乘积!
  在前面,用异或算法算出了乘积的符号位,算完了,就没有下文了。
  在前面有:
X0 ⊕ Q0 → S,这个 S,貌似是乘积。 在此处仅仅是算出了符号位,那么,S 的绝对值呢? 没有看到乘积,这个流程图,怎么就结束了? 

  做而论道设计的无符号数乘法电路,其原理,还是很简单的。
  原理的介绍,还是等下篇博文再说吧。

  本博文中,引用了几张网上的图,侵删。

--本文完--
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值