arm's multiply(arm的乘)之五 乘法器的基本结构

本文大部分内容是对《计算机组成和结构》的阅读总结。
一如何设计一个乘法器
这个乘法器使用几个积存器?
使用了拿些基本运算功能?
乘法运算用了几个机器周期?
无符号和有符号的乘法区别?

1 . 我们都知道乘法运算可以用加法和移位来完成。
每个运算周期大概是:


if(乘数最右位是1)
    乘积 = 被乘数+乘积
乘数右移1位<==========这里决定了采用的是无符号还是有符号的乘法

一共循环32次

这个算法的直接实现是要使用2个32位的积存器和一个64位的积存器,以及一些控制电路
控制移位,还有一个加法器。运算需要32个周期。

2. 实际上乘数和乘积可共用一个64位积存器,因为乘机每次右移后就有效位数就少了一个,也
就空出一个位来给乘积用。这样就产生了下面的算法:


开始积存器的分配:
64位 :被乘数(高32位)乘数(低32位)《======此处的被乘数就是最开是的乘积
32位 :乘数

每次循环,64位积存器右移一位,如果乘数最低位是1,就把乘数加到64位积存器的
最高位上。此方法也用32个周期。

3 .BOOTH方法:
BOOTH方法主要是查看连续的1,以减少加法操作,因为在那个年代,加法还比移位操作慢,
(这个可以理解,因为加法需要一位一位的进行)

未完...

posted on 2004-07-19 11:50  embed  阅读(964)  评论(0编辑  收藏  举报

导航