📜  电脑组织|展位算法

📅  最后修改于: 2021-04-24 20:51:26             🧑  作者: Mango

Booth算法给出了一种以有效方式将带符号2的补码表示形式的二进制整数相乘的过程,即所需的加/减次数较少。它基于这样的事实:乘法器中的0字符串不需要加法,只需要移位,乘法器中的1字符串从位权重2 ^ k到权重2 ^ m可以视为2 ^(k + 1)到2 ^ m。

像在所有乘法方案中一样,booth算法需要检查乘法器位和部分乘积的移位。在移位之前,可以根据以下规则将被乘数添加到部分乘积,从部分乘积中减去或保持不变:

  1. 在乘数的字符串1中遇到第一个最低有效1时,从部分乘积中减去被乘数
  2. 一旦在乘数的0字符串中遇到前一个0(假设存在先前的“ 1”),被乘数就被添加到部分乘积。
  3. 当乘数位与前一个乘数位相同时,部分乘积不会更改。

展位算法的硬件实现–展位算法的硬件实现需要下图所示的寄存器配置。

展位的算法流程图–

我们将寄存器分别命名为A,B和Q,AC,BR和QR。 Qn指定寄存器QR中乘法器的最低有效位。 QR上附加了一个额外的触发器Qn + 1,以方便对乘法器进行双重检查.booth算法的流程图如下所示。

AC和附加的位Qn + 1最初被清除为0,并将序列SC设置为等于乘法器中位数的数字n。检查乘数Qn和Qn + 1中的两位。如果两个位等于10,则表示已遇到字符串中的第一个1。这需要从AC中的部分乘积中减去被乘数。如果2位等于01,则表示遇到了0字符串中的第一个0。这要求将被乘数添加到AC中的部分乘积中。

当两个位相等时,部分乘积不变。因为被乘数的加法和减法相互跟随,所以不会发生溢出。因此,相加的2个数字始终具有相反的符号,这是排除溢出的条件。下一步是右移部分乘积和乘数(包括Qn + 1)。这是算术右移(ashr)操作,其中AC和QR向右移,而AC中的符号位保持不变。序列计数器递减,计算循环重复n次。

示例–下面显示了n = 4时Booth算法的数值示例。该示例显示了-5和-7的逐步乘法。

MD = -5 = 1011, MD = 1011, MD'+1 = 0101
MR = -7 = 1001 
The explanation of first step is as follows: Qn+1                             
AC = 0000, MR = 1001, Qn+1 = 0,  SC = 4   
Qn Qn+1 = 10    
So, we do AC + (MD)'+1, which gives AC = 0101
On right shifting AC and MR, we get
AC = 0010, MR = 1100 and Qn+1 = 1 
OPERATION AC MR Qn+1 SC
0000 1001 0 4
AC + MD’ + 1 0101 1001 0
ASHR 0010 1100 1 3
AC + MR 1101 1100 1
ASHR 1110 1110 0 2
ASHR 1111 0111 0 1
AC + MD’ + 1 0010 0011 1 0

乘积计算如下:

Product = AC MR
Product = 0010 0011 =  35

最佳情况和最坏情况:
最好的情况是当乘法器中有一个大的连续的1和0的块时,因此进行加减运算的逻辑运算次数最少。

最糟糕的情况是当乘法器中有成对的0和1,即01或10,因此需要最大的加法和减法次数。

门实践问题–

  1. GATE IT 2008 |第40章
  2. GATE IT 2006 |第38章
  3. GATE IT 2005 |问题8
  4. GATE CS 1996 |问题23