计算机组成原理 (3)._第1页
计算机组成原理 (3)._第2页
计算机组成原理 (3)._第3页
计算机组成原理 (3)._第4页
计算机组成原理 (3)._第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第三章第三章 运算方法与运算器运算方法与运算器31运算器的设计方法运算器的设计方法 运算器的逻辑组织结构设计通常运算器的逻辑组织结构设计通常可以分为以下层次:可以分为以下层次: (1)根据机器的字长,将根据机器的字长,将N个一位个一位全加器通过加法进位链连接构成全加器通过加法进位链连接构成N位并行加法器。位并行加法器。 (2)利用多路选择逻辑在加法器的利用多路选择逻辑在加法器的输入端实现多种输入组合,将加法输入端实现多种输入组合,将加法器扩展为多功能的算术逻辑运算部器扩展为多功能的算术逻辑运算部件。件。 (3)根据乘除运算的算法,将加法根据乘除运算的算法,将加法器与移位器组合,构成定点乘法器

2、器与移位器组合,构成定点乘法器与除法器。将计算定点整数的阶码与除法器。将计算定点整数的阶码运算器和计算定点小数的尾数运算运算器和计算定点小数的尾数运算器组合构成浮点运算器。器组合构成浮点运算器。 (4)在算术逻辑运算部件的基在算术逻辑运算部件的基础上,配合各类相关的寄存器础上,配合各类相关的寄存器,构成计算,构成计算机中的运算器。机中的运算器。 23.2 定点补码加减运算定点补码加减运算 3.2.1 补码加减运算的基础补码加减运算的基础 1补码加法补码加法 补码加法所依据的基本关系是:补码加法所依据的基本关系是: x+y补补=x补补+y补补 (mod M) (3- -1) x- -y补补=x补

3、补+- -y补补 现现以定点小数为例,以定点小数为例,证明证明x+y补补=x补补+y补补 设设x0 ,y0则则 (x+y)0根据补码定义有根据补码定义有 x补补=x, y补补=y故有故有x补补+y补补=x+y= x+y补补 设设x0,y0则则 (x+y)0,y0根据补码定义有根据补码定义有 x补补=x, y补补=M+y故有故有x补补+y补补=M+(x+y) (MOD M) = x+y补补 补码减法补码减法 x- -y补补= x+(- -y)补补= x补补- -y补补 (3-2) 证明:证明: x补补+y补补=x+y补补 y补补=x+y补补- -x朴朴 又又x- -y补补=x+(- -y)补补=

4、x补补+- -y补补 - -y补补=x- -y补补- -x补补 因此因此 y补补+- -y补补=(x+y补补- -x补补)+(x- -y补补- -x补补) =x+y补补+x- -y补补- -x补补- -x补补 =x+y+x- -y补补- -x补补- -x补补 =x 补补+x 补补- - x 补补-x 补补=0=0 由此证明了由此证明了- -y补补=- -y补补,即证明了式,即证明了式(3-2)成立。成立。 根据第二章由根据第二章由y补补求求- -y补补的规则:的规则:连符号位一起各位取反,末位连符号位一起各位取反,末位加加1。 - -y补补称为称为y补补的的机器负数机器负数。 4 补码加减法运

5、算规则补码加减法运算规则 参加者运算的两操作数均用补码表示。参加者运算的两操作数均用补码表示。 按二进制数按二进制数“逢二进逢二进- -”的运算规则进行运算。的运算规则进行运算。 符号位作为数的一部分参加运算,符号位作为数的一部分参加运算,结果的符号位由运算得出。结果的符号位由运算得出。 若做加法,则两数直接相加;若做减法,则被减数与减数的若做加法,则两数直接相加;若做减法,则被减数与减数的机机器负数器负数相加。运算结果仍是补码表示。相加。运算结果仍是补码表示。 (5)补码总是对确定的模而言,如果运算结果超过了模补码总是对确定的模而言,如果运算结果超过了模(即符号位即符号位运算产生了进位运算产

6、生了进位),则将模自动丢掉。则将模自动丢掉。 例例3.1 x =+0.1001,y=+0.0101,求,求xy=? 解:解: x补补=0.1001, y补补=0.0101,-y补补= 1.1011 x+y补补=x补补+y补补=0.1001+0.0101 x- -y补补=x补补+- -y补补=0.1001+1.1011 x补补 0.1001+ +y补补 0.0101 0.1110 x补补 0.1001+ +- -y补补 1.101110.0100 x+y补补=0.1110 x- -y补补=0.01005 例例3.2 x =- -0.0110,y=- -0.0011,求,求xy=? 解:解: x补

7、补=1.1010, y补补=1.1101,- -y补补=0.0011 x+y补补=x补补+y补补=1.1010+1.1101 x- -y补补=x补补+- -y补补=1.1010+0.0011 x补补 1.1010+ +y补补 1.1101 11.0111 x补补 1.1010+ +- -y补补 0.0011 1.1101 x+y补补=1.0111 x- -y补补=1.1101 例例3.3 x =- -0.1000,y=+ +0.0110,求,求xy=? 解:解: x补补=1.1000, y补补=0.0110 ,- -y补补=1.1010 x+y补补=x补补+y补补=1.1000+0.0110

8、x- -y补补=x补补+- -y补补=1.1000+1.1010 x补补 1.1000+ +y补补 0.0110 1.1110 x补补 1.1000+ +- -y补补 1.101011.0010 x+y补补=1.1110 x- -y补补=1.00106 例例3.4 x =+ +0.1010,y=+ +0.1001,求,求x+y=? 解:解: x补补=0.1010, y补补= 0.1001, x+y补补=x补补+y补补=0.1010+0.1001 x补补 0.1010+ +y补补 0.1001 1.0011 两个正数相加,得到的结果的符号却为负两个正数相加,得到的结果的符号却为负,显然结果出错,

9、显然结果出错- -超出超出了计算机所能表示的最大正数了计算机所能表示的最大正数。 例例3.5 x =- -0.110l,y=- -0.1011,求,求x+y=? 解:解: x补补=1.0011, y补补=1.0101 x+y补补=x补补+y补补= 1.0011+1.0101 两个负数相加,得到的结果的符号却为正,显然结果出错两个负数相加,得到的结果的符号却为正,显然结果出错- -超出超出了计算机所能表示的最小负数了计算机所能表示的最小负数。 x补补 1.0011+ +y补补 1.010110.1000 73.2.2溢出判断与变形补码溢出判断与变形补码 设参加运算的操作数为:设参加运算的操作数为

10、:x补补=xf.x1x2 xn,y补补=yf.y1y2 yn x补补+ y补补的和为:的和为: s补补= sf.s1s2 sn 。 发生溢出时判别信号为:发生溢出时判别信号为:OVR=1。 常用的溢出判别方法有以下三种。常用的溢出判别方法有以下三种。 1根据两个操作数的符号与结果的符号判别溢出根据两个操作数的符号与结果的符号判别溢出 判断的条件为:判断的条件为: 2)-(3 )(OVRfffffffffsysxsyxsyxf 即如果即如果xf和和yf均与均与sf 不同,则产生溢出,不同,则产生溢出,OVR=1。 例例3.4中中xf=0,yf=0, sf=1,OVR=(xf sf)(yf sf)

11、= (01)(0 1)=l, 因此可以判定运算结果产生了溢出。又因为操作数因此可以判定运算结果产生了溢出。又因为操作数x、y均为正数均为正数,所以产生的是,所以产生的是正溢正溢。8图图3- -1根据符号判别根据符号判别 溢出的电路溢出的电路 2. 根据两数相加时产生的进位判别溢出根据两数相加时产生的进位判别溢出 两个补码实现加减运算时,若最高数值位向符号位的进位值两个补码实现加减运算时,若最高数值位向符号位的进位值Cn- -1与符号位产生的进位值与符号位产生的进位值Cn不同时,表明产生了溢出不同时,表明产生了溢出OVE,即,即OVE=Cn- -1 Cn OVE=1时,表明结果有溢出,时,表明结

12、果有溢出, OVE=0时,表明结果正常。时,表明结果正常。 设有两数运算时产生的进位位为设有两数运算时产生的进位位为 Cn,Cn- -1Cn- -2C1。Cn为符号位产生的进位,为符号位产生的进位,Cn- -1为最高数值位产生的进位,则为最高数值位产生的进位,则9 x补补 0.1011 + y补补 0.0111 1.0010 x补补 1.0101 + y补补 1.1001 10.0010正溢正溢Cn-1Cn负溢负溢Cn-1Cn 左边的例子中左边的例子中Cn=0,Cn- -1=1,OVE=Cn- -1 Cn=0 1=1,故溢出。,故溢出。 3采用变形补码进行运算采用变形补码进行运算 采用两个符号

13、位表示的补码称为采用两个符号位表示的补码称为。 定点小数的变形补码定义为:定点小数的变形补码定义为: 5)-(3 4) (mod 01- 410 xxxxx补补 定点小数的变形补码是以定点小数的变形补码是以4 4为模的,所以也称其为模为模的,所以也称其为模4 4补码。补码。 定点整数的变形补码定义为:定点整数的变形补码定义为: 6)-(3 )2 (mod 02- 220 22 nnnnxxxxx补补10 例例3.6 已知已知x的真值,求的真值,求x对应的变形补码。对应的变形补码。 x=+0.1101 x=- -0.1011 x=+1101 x=- -1011 解:解: x=+0.11010 x

14、变形补变形补=00.1101 x=- -0.10110 x变形补变形补=4+(- -0.1011)=11.0101 x=+11010 x变形补变形补=00 1101 x=- -10110 x变形补变形补=24+2+(- -1011)=11 0101 例例3.7利用变形补码求利用变形补码求x +y。 x=+0.1001,y=+0.0101 x=- -0.0110,y=- -0.0011 x=+0.1010,y=+0.1001 x=- -0.1101, y =- -0.1011 解:解: x补补 00.1001 + y补补 00.0101 00.1110 x补补 11.1010 + y补补 11.

15、1101 111.0111 x+y变形补变形补= x变形补变形补+y变形补变形补=00.1001+00.0101=00.1110 x+y变形补变形补= x变形补变形补+y变形补变形补=00.1010+00.1101=11.011111 x+y变形补变形补= x变形补变形补+y变形补变形补=00.1010+00.1001=01.0011 x+y变形补变形补= x变形补变形补+y变形补变形补=00.0011+00.0101=10.1000 当双符号当双符号 sf1sf2=00或或sf1sf2=11 结果正确。结果正确。 sf1sf2=01 正溢正溢, sf1sf2=10 负溢负溢。 一般说来,两个

16、同号数据相加,或两个异号数据相减要注意溢出。一般说来,两个同号数据相加,或两个异号数据相减要注意溢出。式式3.17给出了补码加减法的判定溢出条件给出了补码加减法的判定溢出条件:OVE=sf1 sf2 x补补 00.1010 + y补补 00.1001 01.0011 正溢正溢 x补补 11.0011 + y补补 11.0101 1 10.1000 负溢负溢123.2.3算术逻辑运算部件算术逻辑运算部件 是进行算术逻辑运算,其是进行算术逻辑运算,其。 半加器半加器 不考虑低位进位影响的两个一位二进制数的相加。称为半加。实不考虑低位进位影响的两个一位二进制数的相加。称为半加。实现半加操作的电路称为

17、现半加操作的电路称为半加器半加器。 下表给出了两下表给出了两 个一位二进制数的个一位二进制数的xi、yi相加的真值表。表中相加的真值表。表中Hi是半是半加,加,Ci是向高位的进位。是向高位的进位。半加器运算真表半加器运算真表xiyiHiCi0000011010101101iiiiiiiiiiyxCyxyxyxH 半加器的逻辑图和符号如下图所示。半加器的逻辑图和符号如下图所示。13 全加器全加器 在多位二进制数相加时要考虑位与位之间进位的影响。在多位二进制数相加时要考虑位与位之间进位的影响。全加运算的真值表见表所示。全加运算的真值表见表所示。进位进位 和和(3.1)11111 iiiiiiiii

18、iiiiiCyxCyxCyxCyxCyxFii1111)(1 iiiiiiiiiiiiiiiiiCyxyxCyxCyxCyxCyxCi全加器运算真值表全加器运算真值表xiyiCi-1FiCi000000011001010011011001010101110011111114全加器的逻辑图和符号表示全加器的逻辑图和符号表示 图图3.4是实现上述表达式的全加器逻辑图和全加器的符号表示。从是实现上述表达式的全加器逻辑图和全加器的符号表示。从图中可以看出全加器的图中可以看出全加器的进位进位及及全加和全加和的形成时间分别有的形成时间分别有3级门级门的延的延迟和迟和2级门级门的延迟。的延迟。3.2.2 串

19、行进位与并行进位串行进位与并行进位 将将n个全加器相连便可得到个全加器相连便可得到n位的加法器,如下图所示。位的加法器,如下图所示。15 上图的进位方式叫做上图的进位方式叫做串行进位或行波进位串行进位或行波进位。 这种进位的加法运行时间随着两个相加的二进制数的位数的增加这种进位的加法运行时间随着两个相加的二进制数的位数的增加而增加而增加。 为此应设法预先形成各位进位,将进位信号同时送到各位全加器为此应设法预先形成各位进位,将进位信号同时送到各位全加器的进位输入端,这种进位方法称为的进位输入端,这种进位方法称为先行进位或并行进位先行进位或并行进位。采用先行。采用先行进位的加法器称为进位的加法器称

20、为先行进位加法器先行进位加法器。 设有一个设有一个4位加法器,现讨论其进位位加法器,现讨论其进位C1、C2、C3和和C4产产生的条件。生的条件。根据式根据式(3- -1)有有Ci= xiyi+(xi yi)Ci- -1。 式中式中xiyi称为称为进位产生函数进位产生函数(又称又称本地进位本地进位),用,用Gi表示,它与低位表示,它与低位进位无关。进位无关。16 (xi yi)Ci-1不但与本地两个数有关,还与低位进位有关,因此称不但与本地两个数有关,还与低位进位有关,因此称xi yi进位传送函数进位传送函数(又称又称低位传递进位低位传递进位),用,用Pi表示。表示。即即 根据式根据式(3- -

21、1)可得可得 C1=G1+P1C0 C2=G2+P2C1 C3=G3+P3C2 C4=G4+P4C3那么有那么有 (3-2) Gi = xiyi Pi = xi yi(3-3) C1=G1+P1C0 C2=G2+P2C1= G2+P2G1+P2P1C0 C3=G3+P3C2= G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4C3= G4+P4G3+P4P3G2+P4P3P2G1 +P4P3P2P1C0 根据上述表达式构成根据上述表达式构成C1C4电路。下图给出了电路。下图给出了“先行进位产生电先行进位产生电路路”及及“4位先行进位加法器位先行进位加法器”的逻辑图。的逻辑图。17

22、4位并行加法器位并行加法器18 自然,为了提高自然,为了提高16位加法器的运算速度,用上述方法将各进位位加法器的运算速度,用上述方法将各进位Ci用用xi、yi和和C0来表示。并设来表示。并设 G1*= G4+P4G3+P4P3G2+P4P3P2G1 P1*=P4P3P2P1则式则式(3- -3)中中C4可改写为可改写为C4=G1*+P1*C0 (3- -4)将将C4看着第二组的看着第二组的C0,则,则 C5=G5+P5C4 C8=G8+P8C7= G8+P8G7+P8P7G6+P8P7P6G5 +P8P7P6P5C4 以此类推,对以此类推,对16 位加法器,可得位加法器,可得 C16=G16+

23、P16C15 = G16+P16G15+P16P15G14+ +P16P15P2G1+ P16P15P1C019令令 G2*= G8+P8G7+P8P7G6+P8P7P6G5 P2*= P8P7P6P5则则 C8 =G2*+P2*C4同样可得同样可得 C12=G3*+P3*C8 C16=G4*+P4*C12按前方式推理,可得按前方式推理,可得 为了要产生为了要产生组进位函数组进位函数,须要对原来的,须要对原来的CLA电路进行改进:电路进行改进: 第一组内产生第一组内产生G1*、P1*、C3、C2、C1不产生不产生C4。 第二组内产生第二组内产生G2*、P2*、C7、C6、C5不产生不产生C8。

24、 第三组内产生第三组内产生G3*、P3*、C11、C10、C9不产生不产生C12。 第四组内产生第四组内产生G4*、P4*、C15、C14、C13不产生不产生C16。(3- -5) C4 =G1*+P1*C0 C8 =G2*+P2*G1*+ P2*P1*C0 C12=G3*+P3*G2*+P3*P2*G1*+ P3*P2*P1*C0 C16=G4*+P4*G3*+P4*P3*G2*+ P4*P3*P2*G1*+ P4*P3*P2*P1*C020 将将CLA电路及进位电路及进位/传递产生电路和求和电路构成一个四位传递产生电路和求和电路构成一个四位BCLA加法器。见下图。加法器。见下图。 这种电路

25、称为这种电路称为成组先行进位电路成组先行进位电路(BCLA- -Block Carry Look Ahead)。 3.2.3 ALU部件部件 1.补码加减运算的逻辑实现补码加减运算的逻辑实现 设参加运算的操作数为设参加运算的操作数为A、B,根据补码加减运算的规则,可知:,根据补码加减运算的规则,可知: A补补+B补补=A+B补补 A补补- -B补补=A- -B补补 (3-8)21 图图3- -2 采用串行进位的补码加减运算逻辑电路采用串行进位的补码加减运算逻辑电路 当当M=0时时,操作数,操作数B与与M异或后得到的仍是异或后得到的仍是B的原变量,因此加法的原变量,因此加法器的运算结果为:器的运

26、算结果为:F=A补补+B补补=A+B补补; 当当M=1时时,操作数操作数B与与M异或后得到的是异或后得到的是B连符号一起取反的值连符号一起取反的值(B M=B 1),由于由于M=1,又使,又使C0=1,实现了最低位加,实现了最低位加1的功能即求的功能即求(- -B)补补,所以加法器的运算结果为:,所以加法器的运算结果为:F= A补补+(- -B反反+1)=A补补- -B补补=A- -B补补。 运运算控制信号逻辑如下:算控制信号逻辑如下:符号位符号位22图图3-3 3-3 实现补码加减运算的逻辑电路实现补码加减运算的逻辑电路 FA=ADD+SUB,FA信号控制将寄存器信号控制将寄存器A的正向信号

27、输入加的正向信号输入加法器法器F的输入端。的输入端。 FB=ADD,FB信号控制将操作数信号控制将操作数B的正向信号输入加法器的正向信号输入加法器F的输入端。的输入端。 F =SUB,FB信号控制将操作数信号控制将操作数B的反向信号输入加法器的反向信号输入加法器F的输入端。的输入端。 B23 C01=SUB,C01信号控制使加法器信号控制使加法器F的最低位进位的最低位进位C01。 AF=ADD+SUB,AF信号控制使加法器信号控制使加法器F的运算结果写入寄的运算结果写入寄存器存器A。 其中其中ADD和和SUB分别为控制器根据加法指令和减法指令译码后分别为控制器根据加法指令和减法指令译码后得到的

28、控制电位信号。得到的控制电位信号。 2算术逻辑运算部件举例算术逻辑运算部件举例 下面以中规模集成电路芯片下面以中规模集成电路芯片SN74181为例,说明为例,说明ALU组件的工作组件的工作原理。原理。图图3- -4 SN74181的外部特性图的外部特性图 24 其中其中 A30、B30为参加运算的两组为参加运算的两组4位操作数;位操作数; C0为低位来的进位;为低位来的进位; F30为输出的运算结果;为输出的运算结果; Cn+4为向高位的进位;为向高位的进位; G为小组本地进位;为小组本地进位;P为小组传递函数;为小组传递函数; A=B用于输出两个操作数的相等情况。用于输出两个操作数的相等情况

29、。 如果将多个如果将多个SN74181的的“A=B”端按端按“与与”逻辑连就可以检测两个逻辑连就可以检测两个字长超过字长超过4位的操作数的相等情况。位的操作数的相等情况。 在控制信号中:在控制信号中: S3S2S1S0用于控制产生用于控制产生16种不同的逻辑函数。种不同的逻辑函数。 M=0,则允许位间进位,执行算术运算;若,则允许位间进位,执行算术运算;若M=1,则封锁,则封锁位间进位间进位,执行逻辑运算。位,执行逻辑运算。 表表3- -1列出了采用负逻辑方式时列出了采用负逻辑方式时SN74181 ALU完成的功能。完成的功能。 在表中,在表中,“加加”是指算术加;是指算术加; “+”是指逻辑

30、加,即是指逻辑加,即“或或”运算运算。 进行算术加运算时,最低位的进位为进行算术加运算时,最低位的进位为0。25 注:注:*表示表示A+A=2A ,即,即A算术左移算术左移1位位表表3- -1 SN74181 ALU的功能表的功能表 26 图图3- -5给出了利用给出了利用4片片SN74181和和1片片sN74182构成构成16位快速并行加位快速并行加法器的例子。法器的例子。 图图3-5 16位快速并行加法器位快速并行加法器用两个用两个16位全先行进位逻辑级联组成的位全先行进位逻辑级联组成的32位位ALU 273.3 定点乘法运算定点乘法运算 计算机中实现乘除运算通常采用以下三种方式:计算机中

31、实现乘除运算通常采用以下三种方式: (1)利用乘除运算子程序利用乘除运算子程序 这种方式的基本思想是采用软件实现乘除运算这种方式的基本思想是采用软件实现乘除运算。 (2)在加法器的基础上增加左、右移位及计数器等逻辑线路构成乘在加法器的基础上增加左、右移位及计数器等逻辑线路构成乘除运算部件除运算部件 这种方式的基本思想是采用硬件实现乘除运算这种方式的基本思想是采用硬件实现乘除运算。 (3)设置专用的阵列乘除运算器设置专用的阵列乘除运算器 阵列乘除运算器将多个加减运算部件排成乘除运算阵列,依靠硬阵列乘除运算器将多个加减运算部件排成乘除运算阵列,依靠硬件资源的重复设置,同时进行多位乘除运算,赢得了乘

32、除运算的高件资源的重复设置,同时进行多位乘除运算,赢得了乘除运算的高速度速度。 3.3.1 原码乘法运算原码乘法运算 用原码实现乘法运算时,符号位与数值位分开计算,因此原码乘用原码实现乘法运算时,符号位与数值位分开计算,因此原码乘法分两步:法分两步: 计算乘积的符号位,它等于两个相乘数符号的异或值。计算乘积的符号位,它等于两个相乘数符号的异或值。 计算乘积的数值位,它等于两个相乘数的绝对值之积。计算乘积的数值位,它等于两个相乘数的绝对值之积。28 1101 x y4 2- -4 1101 x y3 2- -3 0000 x y2 2- -2 1101 x y1 2- -1 乘积的数值乘积的数值

33、z1z2zn =|x| |y|= x1x2xn y1y2yn 乘积的符号乘积的符号zf = xf yf 例例3.8 x=0.1101,y=- -0.1011,手算过程是,手算过程是 0.1101 被乘数被乘数x=0. x1x2x3x4 0.1011 乘数乘数y=0.y1y2 y3y4 0.10001111 412iiiyx表表3-2 乘积符号真值表乘积符号真值表xf yfzf0 000 111 011 1029 1原码一位乘法原码一位乘法 在计算机的原码一位乘法中,参加运算的被乘数和乘数均用原码在计算机的原码一位乘法中,参加运算的被乘数和乘数均用原码表示;运算时符号位单独处表示;运算时符号位单

34、独处理,被乘数与乘数的绝对值相乘;所得理,被乘数与乘数的绝对值相乘;所得的积也采用原码表示。的积也采用原码表示。 乘法过程采用右移的方法乘法过程采用右移的方法。 用乘数用乘数y的一位的一位yi去乘以被乘数去乘以被乘数x,得,得x yi与前面所得的结果相加与前面所得的结果相加得到得到zi,称为部分积。,称为部分积。 将前面所得部分积将前面所得部分积zi右移一位后与本次求得的结果右移一位后与本次求得的结果x yi相加。而相加。而不是采用左移最后求总和的方法。不是采用左移最后求总和的方法。 对乘数中为对乘数中为“1”的位执行加的位执行加x和右移运算,对乘数中为和右移运算,对乘数中为 “0”的的位只执

35、行前面部分积位只执行前面部分积zi右移操作,节省本次部分积的生成时间。右移操作,节省本次部分积的生成时间。 上述基本思想可以推导如下:上述基本思想可以推导如下: 设设x原原=xf .x1x2xn y原原=yf .y1y2yn则乘积则乘积z原原= x原原 y原原= (xf yf)|x| |y|10001111. 02 41 iiiyxyx30 |x| |y|=x (0.y1y2yn) = x (y1 2- -1+y2 2- -2+ +yn 2- -n) =2- -1 (xy1+2- -1 (xy2+ 2- -1 (xyn+0) 得其原码一位乘法递推公式得其原码一位乘法递推公式 z0 =0 初值初

36、值 z1 =2- -1 (xyn+z0) z2 =2- -1 (xyn- -1+z1) zn- -1=2- -1 (xy2+zn- -2) zn =2- -1 (xy1+zn- -1)z1zn-1znz031 例例3.9:设:设 x=0.1101,y=- -0.1011,按原码一位乘法规则计算,按原码一位乘法规则计算z原原= x原原 y原原=x y原原,即求,即求z=x y zf=xf yf=1,所以所以z原原=1.10001111,即,即x y=- -0.10001111 被乘数被乘数x原原1 1 0 1yiyi=1,故,故+)1 1 0 1z0=0 1 1 0 1yi=1,故,故+)1 1

37、 0 1 10 1 1 0 1 1 0 1部分积部分积y原原c 0 0 0 0 1 0 1 1 1 0 0 1 1 11 0 0 1 1 1 1 0yi=0,故,故+)0 0 0 0 1 0 0 1 10 1 0 0 1 1 1 1yi=1,故,故+)1 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 132 实现原码一位乘法的算法的硬件逻辑电路如图实现原码一位乘法的算法的硬件逻辑电路如图3- -6所示。所示。图图3-6 原码一位乘法逻辑原理图原码一位乘法逻辑原理图 33图图3-7 原码一位乘法的流程原码一位乘法的流程 34图图3- -8 实现移位功能的逻辑电路实现移位功能

38、的逻辑电路 35 2. 原码两位乘法原码两位乘法 在两位乘法中,乘数相邻两位有在两位乘法中,乘数相邻两位有4种可能性的组合,每种组合对种可能性的组合,每种组合对应以下操作:应以下操作: ynyn- -1 操作操作 00 zi+1=2- -2zi 01 zi+1=2- -2(zi+x) 10 zi+1=2- -2(zi+2x) 11 zi+1=2- -2(zi+3x) 对于对于+3x操作有两种实现方法操作有两种实现方法: 分分+x和和+2x两次进行,这种实现方法速度较低。两次进行,这种实现方法速度较低。 以以4x- -x来实现,即本次只执行来实现,即本次只执行- -x(即即+- -x补补)操作,

39、操作,+4x操作归并操作归并在下一步执行。即在下一步执行。即zi+1=2- -2(zi+3x) =2- -2(zi+ 4x- -x)=2- -2(zi- -x)+x。欠下的。欠下的4x变为在下一步执行中变为变为在下一步执行中变为+x, 设置一个设置一个欠账触发器欠账触发器T记录是否欠记录是否欠+x。 若有欠账,则若有欠账,则1T。否则,。否则, 0T。36 由于在迭代过程中,存在右移送入加数操作,因此,加法的溢出由于在迭代过程中,存在右移送入加数操作,因此,加法的溢出会侵占两位符号位。会侵占两位符号位。为保证右移为保证右移2 位的操作正确实现,并且在右移位的操作正确实现,并且在右移中又能自动纠

40、正这种溢出错误,在原码两位乘法运算中,数据都以中又能自动纠正这种溢出错误,在原码两位乘法运算中,数据都以模模8补码形式补码形式(3 位符号位符号 位位,最高位符号才是真正的符号最高位符号才是真正的符号)操作。此时,操作。此时,也不需要进位标志。也不需要进位标志。表表3- -3 原码两位乘法的运算规则原码两位乘法的运算规则 yn- -1 yn T操操 作作迭代公式迭代公式0 0 00 Tzi+1=2- -2zi0 1 0+x0 Tzi+1=2- -2( (zi+ x) )0 0 1+x0 Tzi+1=2- -2( (zi+ x) )0 1 1+2x0 Tzi+1=2- -2( (zi+ 2x)

41、)1 0 0+2x0 Tzi+1=2- -2( (zi+ 2x) )1 0 1-x1 Tzi+1=2- -2( (zi- -x) )1 1 0-x1 Tzi+1=2- -2( (zi- -x) )1 1 11 Tzi+1=2- -2zi37 1001.100011 2 000.011000 111110 0 z和和y同时右移同时右移2位,得位,得z2。 例例3.10 设设 x=0.111001,y=- -0.100111,用原码两位乘法规则计算,用原码两位乘法规则计算Z原原= x原原 y原原, 即求即求Z=x y。 解:解:x原原=0.111001,y原原=1.100111 |x|补补=0.1

42、11001, - -|x|补补=1.000111。 z y T 说明说明 000.000000 100111 0 初始初始z=0,T=0+ -|x|补补 111.000111 y5y6T=110,- -x,1T 111.000111 2 111.110001 111001 1 z和和y同时右移同时右移2位,得位,得z1。 010.001010 2 000.100010 101111 0 z和和y同时右移同时右移2位,得位,得z3。+2x 001.110010 y3y4T=011,+ +2x,0T+2x 001.110010 y1y2T=100,+ +2x,0T38 zf=xf yf=0 1=1

43、 z原原= x原原 y原原= 1.100010101111。 在例在例3.8中,若采用模中,若采用模4补码计算,会发现:在计算补码计算,会发现:在计算z3的过程,加的过程,加法溢出侵占了两位符号位,如法溢出侵占了两位符号位,如“”所指处。那么,在进行所指处。那么,在进行z和和y同同时右移时右移2位操作时,按照补码右移规则,将得到位操作时,按照补码右移规则,将得到z是负数,而两个正是负数,而两个正数相乘是不可能得负数乘积的。就象加法运算要用模数相乘是不可能得负数乘积的。就象加法运算要用模4加补杩来防加补杩来防止溢出一样,止溢出一样,加加2|x|可能侵占最高符号位,故用模可能侵占最高符号位,故用模

44、8补码防止溢出,补码防止溢出,最高符号位是真正符号位最高符号位是真正符号位。 原码两位乘法运算次数的控制方法为:原码两位乘法运算次数的控制方法为: 若操作数字长为奇数,则去掉一位符号位后,数值部分长度若操作数字长为奇数,则去掉一位符号位后,数值部分长度n为偶数,因此共需做为偶数,因此共需做n/ /2次运算。次运算。 若操作数字长为偶数,则去掉一位符号位后,数值部分长度若操作数字长为偶数,则去掉一位符号位后,数值部分长度n为奇数,因此需将乘数再加上一个符号位并使之为为奇数,因此需将乘数再加上一个符号位并使之为0,以便形成偶,以便形成偶数位,此时共需做数位,此时共需做(n+1)/2次运算,但最后一

45、次移位仅移一位。次运算,但最后一次移位仅移一位。 若最后一次运算后若最后一次运算后T仍为仍为1,则需再做一次加,则需再做一次加x操作,最高符号操作,最高符号位作为真正的符位作为真正的符号位,才能保证运算过程正确无误,以便还清欠账。号位,才能保证运算过程正确无误,以便还清欠账。 例例3.11 x原原=0.1011,y原原=1.1101,分别用原码一位和两位乘法计,分别用原码一位和两位乘法计算算x y原原39 解:解:积积z原原=x y原原,符号部分单独处理,符号部分单独处理,zf =0 1=1 用原码一位乘法计算用原码一位乘法计算=x y原原。 |x|=1011,|y|=1101,数值部分为,数

46、值部分为4位,共需运算位,共需运算4次。运算过程如次。运算过程如下:下:被乘数被乘数x原原1 0 1 1yiyi=1,故,故+)1 0 1 1z0=0 1 0 1 1yi=0,故,故+)0 0 0 0 10 1 0 1 1 1 1 0部分积部分积y原原c 0 0 0 0 1 1 0 1 0 1 0 1 10 0 1 0 1 1 1 1yi=1,故,故+)1 0 1 1 1 1 0 1 10 1 1 0 1 1 1 1yi=1,故,故+)1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 140 用原码二位乘法计算用原码二位乘法计算=x y原原。 |x|=000 1011,|

47、y|=1101,- -|x|=111 0101。 数值部分为数值部分为4位,共需运算位,共需运算4/2=2次。运算过程如下:次。运算过程如下:被乘数被乘数x原原0 0 0 1 0 1 1 yn-1ynCj +)0 0 0 1 0 1 1yn-1ynCj=010,+x,Cj0部分积部分积y原原c 0 0 0 0 0 0 0 1 1 0 1 00 0 0 1 0 1 1 20 0 0 0 0 1 0 1 1 1 1 0 +)1 1 1 0 1 0 1yn-1ynCj=110,- -x,Cj11 1 1 0 1 1 1 21 1 1 1 1 0 1 1 1 1 1 1 +)0 0 0 1 0 1 1

48、Cj=1,补补+x 1 0 0 0 1 0 0 0 1 1 1 1得:得:|x y|=10001111 加上符号部分得:加上符号部分得: z原原=x y原原=1 10001111,即,即x y=- -10001111 413.3.2 补码乘法运算补码乘法运算 1 1补码一位乘法补码一位乘法 例例 已知已知x=0.1011,y=0.0001 则则x补补=0.1011,y补补=0.0001 可以计算出可以计算出x y补补=0.00001011 x补补 y补补=0.00001011 得得 x y补补= x补补 y补补 例例 已知已知x=0.1011,y=- -0.0001 则则x补补=0.1011,

49、y补补=1.1111 可以计算出可以计算出x y补补=1.11110101 而而 x补补 y补补=1.01010101 得得 x y补补 x补补 y补补 从上述两例子看到,补码乘法从上述两例子看到,补码乘法有时有正确结果有时有正确结果,而有时结果存在而有时结果存在问题问题,其原因从下面推导可以得出。以小数为例,其原因从下面推导可以得出。以小数为例 设设x补补=x0.x1x2xn y补补=y0.y1y2yn 根据补码定义,根据补码定义,y0时,时,y补补=y=y0.y1y2yn, y0=0。 对于负小数,即对于负小数,即y0时,此时,时,此时,y0=1。y补补=2+y (mod 2),42=y0

50、+0.y1y2yn 2=(2+ y0)+ 412iiiy niiiyy102即即 y=y补补- -2=- -1+ 412iiiy补补补补201yxyxniii 补补补补因因此此)2- ( 10 niiiyyxyx,补补201yxyxniii 乘数是正数乘数是正数时,时,y0=0, x y补补= x补补 y补补。 当乘数为负数时,当乘数为负数时,y0=1,即即x y补补x补补 y补补。需要再加上。需要再加上- -x补补进行修正。这种方法称为进行修正。这种方法称为加终端修正的补码制乘法加终端修正的补码制乘法。 在加终端修正的补码制乘法中被乘数的符号参与乘法运算,在加终端修正的补码制乘法中被乘数的符

51、号参与乘法运算,43 A.D.Booth提出了一种算法:相乘两数用补码表示,它提出了一种算法:相乘两数用补码表示,它们的符号们的符号位与数值位一起参与乘法运算,直接得到用补码表示的乘积,且正位与数值位一起参与乘法运算,直接得到用补码表示的乘积,且正数与负数同等对待。数与负数同等对待。称为称为 Booth算法算法。 设被乘数设被乘数 x补补=x0.x1x2xn, 乘数乘数 y补补=y0.y1y2yiyi+1 yn。 y=- -y0+y1 2- -1+y2 2- -2 +y3 2- -3+yn 2- -n =- -y0+(y1- -y1 2- -1)+(y2 2- -1 - -y2 2- -2)

52、+(y3 2- -2- -y3 2- -3 ) +(yn 2- -(n- -1)- - yn 2- -n ) =(y1- - y0)+(y2- -y1) 2- -1+(y3- -y2) 2- -2+ +(yn- -yn-1) 2- -(n- -1) +(0- - yn) 2-n =(y1- -y0)+(y2- -y1) 2- -1+(y3- - y2) 2- -2+ +(yn- -yn-1) 2- -(n- -1) +(yn+1- - yn) 2- -n niiiiyy012)( niiiyy102 根据补码的定义可得出真值根据补码的定义可得出真值y= 这里这里yn+1称为辅助位称为辅助位,实

53、初值设为,实初值设为0。因此。因此44 =(y1- - y0)x补补+ 2- -1(y2- - y1)x补补+ 2- -1(y3- - y2)x补补+ + 2- -1(yn- - yn-1)x+2- -1(yn+1- - yn)x) ) )补补 因此,得到如下递推公式:因此,得到如下递推公式: zi+1补补=2- -1(zi+(yn- -i+1- - yn- -i)x)补补 (i=0,1,2,n- -1) zn+1补补=zn+(y1- - y0)x补补 式中式中zi为上次部分积,为上次部分积,zi+1为本次部分积。为本次部分积。令令 z0补补=0,则有:,则有: z1补补=2- -1(z0+(

54、yn+1- - yn)x)补补=2- -1(yn+1- - yn)x补补 (i=0) z2补补=2- -1(z1+(yn- - yn- -1)x)补补 (i=1) zn补补=2- -1(zn- -1+(y2- - y1)x)补补 (i=n- -1) zn+1补补=zn+(y1- - y0)x补补 可以得知:可以得知: x y补补=zn+1补补=zn+(y1- - y0)x补补=zn 补补+(y1- - y0)x补补 2)()(1101iniiiyyxyyxyx 补补补补补补45 根据补码编码规则根据补码编码规则 ,补码数据的右移是连同符号位一起右移,且,补码数据的右移是连同符号位一起右移,且最

55、高位补充符号位的值。因此,最高位补充符号位的值。因此,2- -1 (zi x)补补 为为 zn 补补+x补补后右后右移一位;移一位;2- -1zn 补补为为zn补补右移一位。那么右移一位。那么Booth算法规则如下算法规则如下: 参加运算的两乘数均用补码表示参加运算的两乘数均用补码表示,并在乘数的最低位之后再增,并在乘数的最低位之后再增加一位辅助位加一位辅助位yn+1=0,并以乘数的最低两位并以乘数的最低两位ynyn+1作为判断位作为判断位,两数两数的符号位参加运算的符号位参加运算; 由于右移操作,对乘数的相邻两位由于右移操作,对乘数的相邻两位yn- -i和和 yn- -i +1的判断,实际变

56、的判断,实际变为每次以乘数的最低的两位为每次以乘数的最低的两位ynyn+1为判断位,为判断位, 以决定相应操作是以决定相应操作是+x或或- -x(- -x补补由由+- - x补补实现实现),或仅右移一位;得新的部分积,或仅右移一位;得新的部分积zi+1 补补; yn- -i yn- -i +1 运算运算 0 0 zi+1 补补=2- -1 zi补补 0 1 zi +1补补=2- -1(zi +x)补补 1 0 zi +1补补=2- -1(zi - -x)补补 1 1 zi +1补补=2- -1 zi补补 移位按补码右移规则进行移位按补码右移规则进行; 循环做循环做n+1次判断次判断- -累加,

57、累加,n次移位次移位。即第即第n+1次判断次判断(y1- - y0)后,后,仅做仅做 (y1- - y0)x+ zn操作,但不作移位操作,但不作移位,本次是对乘数的符号位进行处,本次是对乘数的符号位进行处理,得结果理,得结果x y补补。46 判断与相应的操作见下表判断与相应的操作见下表 注注:由于符号位参加运算,故:由于符号位参加运算,故被乘数采用双符号位被乘数采用双符号位,而乘数仍采而乘数仍采用单符号位用单符号位。 例例3.12 设设x=- -0.1101,y=0.1011,按补码一位乘法规则计算,按补码一位乘法规则计算Z补补= x补补 y补补, 即求即求Z=x y。 解:解: x补补=1.

58、0011,- -x补补=0.1101,y补补=0.1011,0z。表表3- -4 补码一位乘法的操作补码一位乘法的操作判断位判断位ynyn+1操作操作判断位判断位ynyn+1操作操作0 00 1原部分积右移原部分积右移1位位原部分积加原部分积加x补补右移右移1位位1 01 1原部分积加原部分积加- -x补补右移右移1位位原部分积右移原部分积右移1位位47部分积部分积z补补:00.0000 0.1011 0 y yn+1 说明说明+ +- -x补补 +00.1101ynyn+1=10,故,故+ +- -x补补00.110111 00.0110 1 0101 1 ynyn+1=11,故,故+0+0

59、0.000000.011011 00.0011 0 1010 1 ynyn+1=01,故,故+ +x补补+ +x补补 +11.001111.011011 11.1011 0 0101 0 ynyn+1=10,故,故+ +- -x补补+ +- -x补补 +00.110100.100011 00.0100 0 0010 1 ynyn+1=01,故,故+ +x补补+ +- -x补补 +11.001111.0111 0 001 得:得:x y补补=1.01110001,则,则x y原原=1.10001111,48 所以所以 x y=- -0.10001111 补码一位乘法的硬件逻辑结构如图补码一位乘法

60、的硬件逻辑结构如图3-9所示。所示。 图图3-9 补码一位乘法的逻辑结构图补码一位乘法的逻辑结构图 补码一位乘法的算法流程如图补码一位乘法的算法流程如图3- -10所示。所示。49图图3-10 补码一位乘法的算法流程补码一位乘法的算法流程 50 2. 补码两位乘法补码两位乘法 补码数的乘法也可以采用两位一乘的方法。补码数的乘法也可以采用两位一乘的方法。 设已经求得部分积设已经求得部分积 zi补补,则,则 zi+1补补可以写为:可以写为: zi+1补补=2- -1zi补补+(yn- -i+1- - yn- -i) x补补 zi+2补补=2- -1zi+1补补+(yn- -i- - yn- -i-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论