杭州电子科技大学计算机组成原理课件(4)_第1页
杭州电子科技大学计算机组成原理课件(4)_第2页
杭州电子科技大学计算机组成原理课件(4)_第3页
杭州电子科技大学计算机组成原理课件(4)_第4页
杭州电子科技大学计算机组成原理课件(4)_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

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

文档简介

1、2第第4 4章章 运算方法与运算器运算方法与运算器 定点数的加减运算及实现定点数的加减运算及实现4.14.1 定点运算器的组成与结构定点运算器的组成与结构 定点数的乘法运算及实现定点数的乘法运算及实现4.24.2 定点数除法运算及实现定点数除法运算及实现4.34.34.44.4 浮点运算及运算器浮点运算及运算器4.54.5 浮点运算器举例浮点运算器举例 4.64.6 本章小结本章小结34.1 4.1 定点数的加减运算及实现定点数的加减运算及实现 补码加减运算与运算器补码加减运算与运算器 机器数的移位运算机器数的移位运算 移码加减运算与判溢移码加减运算与判溢 十进制加法运算十进制加法运算一一二二

2、三三四四4一、补码加减运算与运算器一、补码加减运算与运算器 补码加减运算方法补码加减运算方法 补码加减运算的溢出判断补码加减运算的溢出判断二二 补码加减运算器的实现补码加减运算器的实现三三一一51 1、补码加减运算方法、补码加减运算方法v 补码的补码的加法加法运算公式是:运算公式是: X+YX+Y补补 = X= X补补 + Y+ Y补补v 补码的补码的减法减法运算公式是:运算公式是: X-YX-Y补补 = X+ = X+ (-Y)-Y)补补 = X = X补补 + -Y+ -Y补补v 证明:证明:XX补补 = 2= 2n+1 n+1 + X (mod 2+ X (mod 2n+1n+1) )Y

3、Y补补 = 2= 2n+1 n+1 + Y (mod 2+ Y (mod 2n+1n+1) )XX补补 + Y+ Y补补 = 2= 2n+1 n+1 + X + 2+ X + 2n+1 n+1 + Y (mod 2+ Y (mod 2n+1n+1) ) = 2= 2n+1 n+1 + X + Y (mod 2+ X + Y (mod 2n+1n+1) ) = X + Y= X + Y补补 (mod 2(mod 2n+1n+1) )61 1、补码加减运算方法、补码加减运算方法v补码的加减运算的公式是补码的加减运算的公式是: X+YX+Y补补 = X= X补补 + Y+ Y补补 X-YX-Y补补

4、= X= X补补 + -Y+ -Y补补v特点:特点: 使用补码进行加减运算,使用补码进行加减运算,符号位和数值位一样参符号位和数值位一样参加运算加运算。 补码的减法可以用加法来实现补码的减法可以用加法来实现,任意两数之差的,任意两数之差的补码等于被减数的补码与减数相反数的补码之和补码等于被减数的补码与减数相反数的补码之和 。v注意:注意:该公式不适合任何其他机器数编码该公式不适合任何其他机器数编码(原码、反码、移码)(原码、反码、移码)7求补运算:求补运算:YY补补 -Y-Y补补 v 求补规则:求补规则:将将YY补补包括符号位在内每一位取反,末包括符号位在内每一位取反,末位加位加1 1。v 若

5、若YY补补 = Y0= Y0,Y1Y1Yn Yn ,则:,则:1YYY-Yn10 补补1YYY-Yn1000 . 0 补补8补码加减运算举例补码加减运算举例v例:已知例:已知X=+1011X=+1011,Y=-0100Y=-0100,用补码计算,用补码计算X+YX+Y和和X-YX-Y。写出补码:写出补码: XX补补 =0,1011 Y=0,1011 Y补补 =1,1100 =1,1100 -Y -Y补补 =0,0100 =0,0100 计算:计算: 92 2、补码加减运算的溢出判断、补码加减运算的溢出判断v 当运算结果超出机器数的表示范围时,称为当运算结果超出机器数的表示范围时,称为溢出溢出。

6、计。计算机必须具备检测运算结果是否发生溢出的能力,否算机必须具备检测运算结果是否发生溢出的能力,否则会得到错误的结果。则会得到错误的结果。v 对于加减运算,对于加减运算,可能发生溢出的情况可能发生溢出的情况:同号(两数):同号(两数)相加,或者异号(两数)相减。相加,或者异号(两数)相减。v 确定发生溢出的情况:确定发生溢出的情况: 正数相加,且结果符号位为正数相加,且结果符号位为1 1; 负数相加,且结果符号位为负数相加,且结果符号位为0 0; 正数负数,且结果符号位为正数负数,且结果符号位为1 1; 负数正数,且结果符号位为负数正数,且结果符号位为0 0;10常用的判溢方法(补码加减运算)

7、常用的判溢方法(补码加减运算)(1 1)单符号位判溢方法)单符号位判溢方法 =0=0:做加法;:做加法; =1=1:做减法。:做减法。 XX补补= X= Xf fX X1 1X X2 2X X3 3X Xn n; YY补补= Y= Yf fY Y1 1Y Y2 2Y Y3 3Y Yn n; XXYY补补= S= Sf fS S1 1S S2 2S S3 3S Sn n; ADD/SUBADD/SUBADD/SUBADD/SUB)SYXSYX/SUB(ADD)SYXSYX(/SUBADDVffffffffffff11常用的判溢方法(补码加减运算)常用的判溢方法(补码加减运算) X Xf fY Y

8、f fC C1 1S Sf fC Cf fV V说明说明加加法法0 00 00 00 00 00 00 0无溢出无溢出0 00 00 01 11 10 01 1正溢出正溢出0 01 11 10 00 01 11 1负溢出负溢出0 01 11 11 11 11 10 0无溢出无溢出减减法法1 10 01 10 00 00 00 0无溢出无溢出1 10 01 11 11 10 01 1正溢出正溢出1 11 10 00 00 01 11 1负溢出负溢出1 11 10 01 11 11 10 0无溢出无溢出ADD/SUBADD/SUB最高有效位相加产生的进位位最高有效位相加产生的进位位符号位相加产生的

9、进位位符号位相加产生的进位位12常用的判溢方法(补码加减运算)常用的判溢方法(补码加减运算)v (2 2)单符号位判溢方法)单符号位判溢方法2 2 当当最高有效位产生的进位和符号位产生的进位不最高有效位产生的进位和符号位产生的进位不同同时,加减运算发生了溢出。时,加减运算发生了溢出。 V VC C1 1CCf fv (3 3)双符号位判溢方法)双符号位判溢方法 X X和和Y Y采用双符号位补码参加运算,正数的双符号采用双符号位补码参加运算,正数的双符号位为位为0000,负数的双符号位为,负数的双符号位为1111;当;当运算结果的两运算结果的两位符号位符号S Sf1f1 S Sf2f2不同时不同

10、时(0101或或1010),发生溢出。),发生溢出。 V V S Sf1f1 S Sf2f2= X= Xf f Y Yf f CCf f S Sf f S Sf1f1 S Sf2f2=01=01,则正溢出;,则正溢出;S Sf1f1 S Sf2f2=10=10,则负溢出。,则负溢出。 13双符号位判溢方法举例双符号位判溢方法举例v 例:用补码计算例:用补码计算X+YX+Y和和X-YX-Y (1 1)X=+1000X=+1000,Y=+1001Y=+1001(2 2)X=-1000X=-1000,Y=1001Y=1001Sf1 Sf2=01,正溢出正溢出Sf1 Sf2=11,无溢出无溢出Sf1

11、Sf2=00,无溢出无溢出Sf1 Sf2=10,负,负溢出溢出143 3、补码加减运算器、补码加减运算器153 3、补码加减运算器的实现、补码加减运算器的实现v 核心部件核心部件:一个普通的二进制并行加法器。:一个普通的二进制并行加法器。v A A:累加器,存放:累加器,存放XX补补;B B:寄存器,存放:寄存器,存放YY补补;v 取反电路取反电路: :v =0 =0时,补码加法器,将时,补码加法器,将B B寄存器直接送入并寄存器直接送入并行加法器行加法器; ;v =1 =1时,补码减法器,将时,补码减法器,将B B送入并行加法器,送入并行加法器,同时,并行加法器的最低位产生进位,即同时,并行

12、加法器的最低位产生进位,即B B取反加取反加1 1,此时并行加法器的运算相当于此时并行加法器的运算相当于AA补补加加-B-B补补 ,完成减,完成减法运算。法运算。SUBADD/SUBADD /16二、机器数的移位运算二、机器数的移位运算v二进制数据(真值)每相对于小数点二进制数据(真值)每相对于小数点左移一位,相当于左移一位,相当于乘以乘以2 2;每相对于小数点;每相对于小数点右移一位,相当于除以右移一位,相当于除以2 2。v计算机中的移位运算分为:计算机中的移位运算分为:1 1、逻辑移位:、逻辑移位:将移位的数据视为无符号数据,各数将移位的数据视为无符号数据,各数据位在位置上发生了变化,据位

13、在位置上发生了变化,导致无符号数据的数值导致无符号数据的数值(无正负)放大或缩小(无正负)放大或缩小。 2 2、算术移位:、算术移位:将移位的数据视为带符号数据(机器将移位的数据视为带符号数据(机器数)。算术移位的结果,在数)。算术移位的结果,在数值的绝对值上进行放大数值的绝对值上进行放大或缩小,同时,符号位必须要保持不变或缩小,同时,符号位必须要保持不变。 3 3、循环移位:、循环移位:所有的数据位在自身范围内进行左移所有的数据位在自身范围内进行左移或者右移,或者右移,左移时最高位移入最低位,右移时最低位左移时最高位移入最低位,右移时最低位移入最高位。移入最高位。17补码的算术移位补码的算术

14、移位v 算术左移:算术左移:符号位不变,高位移出,低位补符号位不变,高位移出,低位补0 0。 为保证补码算术左移时不发生溢出,为保证补码算术左移时不发生溢出,移位的数据最移位的数据最高有效位必须与符号位相同高有效位必须与符号位相同。 在不发生溢出的前提下,在不发生溢出的前提下,用硬件实现补码的算术左用硬件实现补码的算术左移时,直接将数据最高有效位移入符号位,不会改移时,直接将数据最高有效位移入符号位,不会改变机器数的符号。变机器数的符号。v 算术右移:算术右移:符号位不变,低位移出,符号位不变,低位移出,高位正数补高位正数补0 0,负数补负数补1 1,即高位补符号位。即高位补符号位。18补码的

15、算术移位举例补码的算术移位举例v例:设例:设X X0.1001,Y0.1001,Y0.01010.0101,求,求 XX补补 ? 2X2X补补 ? X/2X/2补补? YY补补 ? 2Y2Y补补 ? Y/2Y/2补补?19三、移码加减运算与判溢三、移码加减运算与判溢v 移码和移码计算移码和移码计算v 移码和补码混合计算移码和补码混合计算v 移码运算结果判溢:移码运算结果判溢:20三、移码加减运算与判溢三、移码加减运算与判溢v 移码运算结果溢出的判断条件是:移码运算结果溢出的判断条件是: 当结果的最高符号位当结果的最高符号位SfSf1 1=1=1时溢出,时溢出,SfSf1 1=0=0时结果时结果

16、正确。正确。 SfSf1 1 Sf Sf2 2=10=10时,结果正溢出;时,结果正溢出; SfSf1 1 Sf Sf2 2=11=11时,结果负溢出。时,结果负溢出。 由于移码运算用于浮点数的阶码,当运算结果正由于移码运算用于浮点数的阶码,当运算结果正溢出时,浮点数溢出时,浮点数上溢上溢;当运算结果负溢出时,浮;当运算结果负溢出时,浮点数点数下溢,当作机器零处理下溢,当作机器零处理。 21四、四、十进制加法运算十进制加法运算v 十进制加法器十进制加法器 = = 二进制加法器二进制加法器 + + 校正电路校正电路v 对于对于8421BCD8421BCD码来说,当相加的两数之和码来说,当相加的两

17、数之和S9S9时,加时,加6 6校正;当校正;当S9S9时,且无进位时,结果正确,不需校正。时,且无进位时,结果正确,不需校正。 四位二进制加法器四位二进制加法器A8A1A2A4B8B1B2B4S8S1S2S4C00PC0S8S1S2S4C1224.2 4.2 定点数的乘法运算及实现定点数的乘法运算及实现 原码乘法及实现原码乘法及实现 补码乘法及实现补码乘法及实现 阵列乘法器阵列乘法器一一二二三三23一、原码乘法及实现一、原码乘法及实现v 由于计算机的软硬件在逻辑上具有一定的等价性,因由于计算机的软硬件在逻辑上具有一定的等价性,因此实现乘除法运算,可以有三种方式:此实现乘除法运算,可以有三种方

18、式:v.用软件实现。用软件实现。 硬件上:硬件上:设计简单,没有乘法器和除法器。设计简单,没有乘法器和除法器。 指令系统:指令系统:没有乘除指令,但有加没有乘除指令,但有加/ /减法和移位指令减法和移位指令 实现:实现:乘除运算通过编制一段子程序来实现乘除运算通过编制一段子程序来实现 算法:算法:程序中运用串行乘除运算算法,循环累加、程序中运用串行乘除运算算法,循环累加、左移指令左移指令乘法,循环减、右移指令乘法,循环减、右移指令除法。除法。 运算速度:运算速度:较慢。较慢。 适用场合适用场合:单片机。:单片机。24一、原码乘法及实现一、原码乘法及实现v.用硬件乘法器和除法器实现。用硬件乘法器

19、和除法器实现。 硬件上:硬件上:设置有并行加法器、移位器和若干循环、设置有并行加法器、移位器和若干循环、计数控制逻辑电路搭成的计数控制逻辑电路搭成的串行乘除法器。串行乘除法器。 指令系统:指令系统:具有乘除法指令。具有乘除法指令。 实现:实现:乘除运算通过乘除运算通过微程序一级(硬件微程序)微程序一级(硬件微程序)来实现。来实现。 算法:算法:在微程序中在微程序中依据串行乘除运算算法依据串行乘除运算算法,循环累,循环累加、左移指令加、左移指令乘法,循环减、右移指令乘法,循环减、右移指令除法。除法。 运算速度:运算速度:有所提高,但硬件设计也相对复杂。有所提高,但硬件设计也相对复杂。 适用场合适

20、用场合:低性能:低性能CPUCPU。25一、原码乘法及实现一、原码乘法及实现v.用高速的阵列乘法器和阵列除法器来实现。用高速的阵列乘法器和阵列除法器来实现。 硬件上:硬件上:设置有专用的、并行运算的设置有专用的、并行运算的阵列乘法器和阵列乘法器和阵列除法器阵列除法器。 指令系统:指令系统:具有乘除法指令。具有乘除法指令。 实现:实现:完全完全通过硬件通过硬件来实现。来实现。 算法:算法:并行乘并行乘/ /除法。除法。 运算速度:运算速度:很快,但硬件设计相当复杂。很快,但硬件设计相当复杂。 适用场合适用场合:高性能:高性能CPUCPU。26一、原码乘法及实现一、原码乘法及实现v手工计算手工计算

21、1011101111011101,步骤:,步骤:v手工算法手工算法:对应每对应每1 1位乘数求得位乘数求得1 1项位积,项位积,将位积逐位左移将位积逐位左移,最后将所有的位积一次相加最后将所有的位积一次相加,得到最,得到最后的乘积。后的乘积。 v计算机上能否实现?若能,又如计算机上能否实现?若能,又如何实现?何实现?27改造手工算法,适合计算机硬件实现改造手工算法,适合计算机硬件实现 手工算法手工算法 机器算法机器算法所有位积一次相加所有位积一次相加位积逐次累加位积逐次累加位积左移位积左移部分积右移部分积右移即:累加、右移、即:累加、右移、构成循环构成循环部分积部分积28二、原码一位乘法算法二

22、、原码一位乘法算法v 假设假设XX原原=X=XS S X X1 1 X X2 2 X Xn n , Y Y原原=Y=YS S Y Y1 1 Y Y2 2 Y Yn n , P=X P=XY Y,P PS S是积的符号:是积的符号: 符号位符号位单独处理:单独处理: Ps=Xs Ps=Xs Ys Ys 绝对值绝对值进行数值运算:进行数值运算: |P|=|X|P|=|X|* *|Y|Y| 先设置初始部分积为先设置初始部分积为0 0;从乘数的最低位开始,每;从乘数的最低位开始,每次根据乘数位得到其次根据乘数位得到其位积位积(即(即Y Yi i=0,=0,部分积加部分积加0 0; Y Yi i=1=1

23、,部分积加,部分积加|X|X|) ;累加结果右移一位得到;累加结果右移一位得到新部分积;新部分积;循环累加、右移循环累加、右移n n次(乘数的位数)次(乘数的位数)v例如:例如:X=+1011X=+1011,Y=-1101Y=-1101,用原码一位乘法计算,用原码一位乘法计算P=XP=XY Y。29举例举例 XX原原=0=0,1011 1011 YY原原=1=1,11011101 Ps=XsPs=XsYsYs =01=1 =01=1 |P| = |X|P| = |X|Y|Y|部分积部分积0,0000乘数乘数Y1 1 0 1 1 0 1 1操作说明操作说明Y4=1,+ +| |X| |0,101

24、1+ +0,1011右移一位右移一位0,01011 1 1 1 1 1 0 0Y3=0,+ +0 00,0000+ +0,0101右移一位右移一位0,00101 1 1 1 1 1 1 1Y2=1,+ +| |X| |0,1011+ +0,1101右移一位右移一位0,01101 1 1 1 1 1 1 1Y1=1,+ +| |X| |0,1011+ +1,0001右移一位右移一位0,10001 1 1 11 1 1 130一、原码乘法及实现一、原码乘法及实现 BBiQQn控制逻辑电路控制逻辑电路 3 3、原码乘法的硬件、原码乘法的硬件实现实现并行加法器并行加法器 (n位位)A(部分积部分积 )

25、B(被乘数被乘数| |X| |)控制逻辑控制逻辑计数器计数器缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnQCLRDQCPMUL=0右移一位右移一位CFC0Cn31原码乘法的硬件实现原码乘法的硬件实现vA:A:累加寄存器累加寄存器vB:B:被乘数寄存器被乘数寄存器vQ:Q:乘数寄存器乘数寄存器vA A、Q:Q:右移寄存器右移寄存器初始:初始:vA=0A=0vB=B=|X|X|vQ=Q=|Y|Y|v计数器计数器=n=n结果:结果:vA=A=乘积高位乘积高位vB= B= |X|X|vQ=Q=乘积低位乘积低位v计数器计数器= =0 0累加、右移累加、右移n n次次32原码一位乘法原码一位乘法并

26、行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0000011010 0 0 0 0 1 1 0 1为各寄存器给初值为各寄存器给初值0 1 0 1 133第一次求部分积第一次求部分积000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 0 0 0 0 1 1 0 10 1 0 1 10 1 0 1 1010111101加

27、运算:加运算:|X|34000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 1 0 1 1 1 1 0 10 1 0 1 10 0 1 0 1 1 1 1 0010111101右移右移1位位001011110第一次求部分积第一次求部分积35000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 0 1

28、0 1 1 1 1 00 1 0 1 10 0 1 0 1 1 1 1 0010111101加运算加运算:0001011110001011110第二次求部分积第二次求部分积36000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 0 1 0 1 1 1 1 00 1 0 1 10 0 0 1 0 1 1 1 1010111101右移右移1位位001011110001011110000101111第二次求部分积第二次求部分积37000001101并行

29、加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 0 0 1 0 1 1 1 10 1 0 1 10 1 1 0 1010111101加运算:加运算:|X|001011110001011110000101111011011111第三次求部分积第三次求部分积38000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 1 1

30、0 1 1 1 1 10 1 0 1 10 0 1 1 0 1 1 1 1010111101右移右移1位位001011110001011110000101111011011111001101111第三次求部分积第三次求部分积39000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn0 0 1 1 0 1 1 1 10 1 0 1 11 0 0 0 1010111101加运算:加运算:|X|00101111000101111000010111101101

31、1111001101111100011111第四次求部分积第四次求部分积40000001101并行加法器并行加法器(n位位)A(部分积部分积)B(被乘数被乘数| |X| |)控制逻辑控制逻辑缓冲器缓冲器 Q(乘数乘数| |Y| |) ) QnCP右移一位右移一位CFC0Cn1 0 0 0 1 1 1 1 10 1 0 1 10 1 0 0 0 1 1 1 1010111101右移右移1 1位位001011110001011110000101111011011111001101111010001111低位积低位积高位积高位积符号位异或符号位异或结果为:结果为:1 1,10001111,10001

32、111第四次求部分积第四次求部分积41原码一位乘法流程原码一位乘法流程 :开始开始0A,|X|B,|Y|Q,n计数器计数器Qn=1?A+ +BACF、A、Q联合联合右移一位右移一位计数器减计数器减1 1计数器计数器=0?结束结束Pf =XfYf ,|P|=A、QYNYN42二、补码乘法及实现二、补码乘法及实现v 1 1、补码乘法算法、补码乘法算法v (1 1)补码一位乘法)补码一位乘法校正法校正法假设假设XX补补 = X= X0 0 .X .X1 1XXn n ,YY补补 = Y= Y0 0 .Y .Y1 1YYn n ,则有:则有:XX YY补补 = X= X补补 (0 0.Y.Y1 1YY

33、n n)+ + Y Y0 0 -X-X补补 注意:注意:a)a)、符号位与数值位一起参加运算、符号位与数值位一起参加运算 b) b)、为保存累加过程中临时出现的溢出位,、为保存累加过程中临时出现的溢出位,部分积采用双符号位部分积采用双符号位 C) C)、部分积右移时,采用补码的移位规则、部分积右移时,采用补码的移位规则43二、补码乘法及实现二、补码乘法及实现证明如下:证明如下:当被乘数当被乘数X X的符号任意,的符号任意,Y Y为正数时:为正数时:根据补码定义有:根据补码定义有:XX补补 = 2 + X = 2= 2 + X = 2n+1n+1+ X + X (mod 2mod 2)YY补补

34、= Y = Y 则:则:XX补补 YY补补 = =(2 2n+1n+1+ X+ X) Y = 2Y = 2n+1n+1 Y + XY + X Y Y = 2 = 2 n+1n+1 (0 .Y0 .Y1 1YYn n)+ X+ X Y Y = 2= 2 (Y Y1 1YYn n)+ + X X Y Y = = 2 2 + + X X Y Y (mod 2mod 2)= X= XY Y 补补即:即:Y Y 0 0 时,时,XXY Y 补补 = X= X补补YY补补 =X=X补补 (0 0.Y.Y1 1YYn n)44二、补码乘法及实现二、补码乘法及实现当被乘数当被乘数X X的符号任意,的符号任意,

35、Y Y为负数时:为负数时:YY补补 = 2 + Y = 1 .Y= 2 + Y = 1 .Y1 1YYn n则:则:Y = Y = YY补补 2 = 2 = 0 0.Y.Y1 1YYn n -1 -1XXY Y 补补 = = X0 X0.Y.Y1 1YYn n X X 补补 = = X X 0 0.Y.Y1 1YYn n 补补 +X +X 补补因为因为0 0.Y.Y1 1YYn n 0 0,所以:,所以: X X 0 0.Y.Y1 1YYn n 补补 = =XX补补 (0 0.Y.Y1 1YYn n)所以:所以:Y Y00时,时,XXY Y 补补 =X=X补补 (0 0.Y.Y1 1YYn n

36、)+ + -X-X补补45X=+0.1011X=+0.1011,Y=-0.1101Y=-0.1101,用补码一位乘法的校正法计算,用补码一位乘法的校正法计算P=XYP=XY。XX补补=00.1011 Y=00.1011 Y补补=11.0011 -X=11.0011 -X补补=11.0101=11.0101部分积00.0000乘数Y0 0 1 1操作说明Y4=1,+X补00.1011+00.1011右移一位00.01011 0 0 1Y3=1,+X补00.1011+01.0000右移一位00.10000 1 0 0Y2=0,+000.0000+00.1000右移一位00.01000 0 1 0Y

37、1=0,+000.0000+00.0100右移一位00.00100 0 0 1Y0=1,+-X补校正11.0101+11.01110 0 0 1XY补 = 1.0111 0001 XY = -0.1000 1111二、补码乘法及实现二、补码乘法及实现46例:设例:设X=-0.1101,Y=-0.1011,X=-0.1101,Y=-0.1011,即:即:XX补补=11.0011,Y=11.0011,Y补补=11.0101,=11.0101,求求XX* *YY补补计算结果:计算结果: XX* *YY补补=0.10001111=0.10001111 1 0. 1 1 1 1 右移一位 1 1. 0

38、1 1 1 1 1 1 0 右移一位 +0 0 0. 0 0 0 0 +0 1 1. 0 1 1 1 右移一位 1 1. 1 0 1 1 1 1 1 1 右移一位+-X补 0 0. 1 1 0 1 +-X补部分积 乘数 说明 0 0. 0 0 0 0 0 1 0 1 初始值+X补 1 1. 0 0 1 1 +X补 1 1. 0 0 1 1右移一位 1 1. 1 0 0 1 1 0 1 0 右移一位 +0 0 0. 0 0 0 0 +01 1. 1 0 0 1右移一位 1 1. 1 1 0 0 1 1 0 1 右移一位 +X补 1 1. 0 0 1 1 +X补 0 0. 1 0 0 0 1 1

39、1 147v(2 2)补码一位乘法补码一位乘法BoothBooth算法算法 做出如下推导做出如下推导 :XXYY补补 = X= X补补(0 0.Y.Y1 1Y Yn n)+ + Y Y0 0-X-X补补= X= X补补(Y Y1 12 2-1-1 + + Y Y2 22 2-2-2 + + + + Y Yn n2 2-n-n - -Y Y0 0)= X= X补补 Y Y1 1(2 20 0 - 2 - 2-1-1)+ + Y Y2 2(2 2-1-1 - 2 - 2-2-2)+ + + + Y Yn n(2 2-n+1-n+1 - - 2 2-n-n)- -Y Y0 02 20 0 = X=

40、X补补 Y Y1 12 20 0 - - Y Y1 12 2-1-1 + + Y Y2 22 2-1-1 - - Y Y2 22 2-2 -2 + + + + Y Yn n2 2-n+1-n+1 - - Y Yn n2 2- -n n - -Y Y0 02 20 0 = = XX补补 (Y Y1 1- -Y Y0 0)2 20 0 + +(Y Y2 2- - Y Y1 1)2 2-1-1 + +(Y Y3 3- - Y Y2 2)2 2-2 -2 + + + + (Y Yn n- Y- Yn-1n-1)2 2-n+1-n+1 - - Y Yn n2 2-n-n = = XX补补 (Y Y1 1

41、- -Y Y0 0)2 20 0 + +(Y Y2 2- - Y Y1 1)2 2-1-1 + +(Y Y3 3- - Y Y2 2)2 2-2 -2 + + + + (Y Yn n- Y- Yn-1n-1)2 2-n+1-n+1 + +(Y Yn+1n+1 - - Y Yn n)2 2-n-n = = XX补补(a a0 02 20 0 + a + a1 12 2-1-1 + a + a2 22 2-2-2 + + + a+ an-1n-12 2-n+1-n+1 + a + an n2 2-n-n)其中,将乘数其中,将乘数Y Y的补码在最末位添加一位附加位的补码在最末位添加一位附加位Y Yn

42、+1n+1(初始为(初始为0 0),a ai i= = Y Yi+1i+1- - Y Yi i ,i=0i=0,1 1,n-1n-1,n n。二、补码乘法及实现二、补码乘法及实现48假设假设YY补补 = Y0 .Y1= Y0 .Y1Yn Yn v 被乘数被乘数X X和乘数和乘数Y Y均以补码的形式参加乘法运算,运算均以补码的形式参加乘法运算,运算的结果是积的补码。的结果是积的补码。v 部分积和被乘数部分积和被乘数X X采用双符号位,乘数采用双符号位,乘数Y Y采用单符号位。采用单符号位。v 初始部分积为初始部分积为0 0;运算前,在乘数;运算前,在乘数Y Y的补码末位后添加的补码末位后添加一位

43、附加位一位附加位Yn+1Yn+1,初始为,初始为0 0。v 根据根据YnYn+1YnYn+1的值,按照表的值,按照表4.34.3进行累加右移操作,右移进行累加右移操作,右移时遵循补码的移位规则。时遵循补码的移位规则。v 累加累加n+1n+1次,右移次,右移n n次,即最后一次不右移。次,即最后一次不右移。BoothBooth算法的运算规则算法的运算规则49X=+0.1011,Y=-0.1101,用补码一位乘法的Booth算法计算P=XY。X补=00.1011 Y补=11.0011 -X补=11.0101部分积00.0000乘数Y (Yn Yn+1)1.0 0 1 1 0操作说明Y4Y5=10,

44、+-X补11.0101+11.0101右移一位11.10101 1.0 0 1 1Y3Y4=11,+000.0000+11.1010右移一位11.11010 1 1.0 0 1Y2Y3=01,+X补00.1011+00.1000右移一位00.01000 0 1 1.0 0 00.0000+00.0100右移一位00.00100 0 0 1 1.0Y0Y1=10,+-X补11.0101+11.01110 0 0 1Y1Y2=00,+0XXYY补补 = 1.0111 0001 = 1.0111 0001 X XY = -0.1000 1111Y = -0.1000 1111 50 3 3、Boot

45、hBooth乘法的硬件实现乘法的硬件实现 并行加法器(n+2位)A(部分积)B(被乘数X补)控制逻辑计数器缓冲器 Q(乘数Y补)QCLRDQCPMUL=0右移一位C0QnQn+1二、补码乘法及实现二、补码乘法及实现v 2 2、补码乘法的硬件实现、补码乘法的硬件实现51 BBiQQnQn+1Q位积的第i位C0+X补+-X补 QQQQQ控制逻辑电路控制逻辑电路 补码乘法的补码乘法的BoothBooth算法流程算法流程 开始0A,X补B,Y补Q,n+1计数器,0Qn+1QnQn+1=?A+BAA、Q联合右移一位计数器减1计数器=0?结束P补=A、QYN0100 11A+-B补A1052三、阵列乘法器

46、三、阵列乘法器v 绝对值整列乘法器原理类似于二进制手工算法绝对值整列乘法器原理类似于二进制手工算法 位积的每一位位积的每一位XiYjXiYj用一个与门产生用一个与门产生 每一位的累加都用一个每一位的累加都用一个FAFA来实现来实现 本次累加的本次累加的FA FA 的进位,送到下一次再累加。的进位,送到下一次再累加。 X1 X2 X3 X4Y1 Y2 Y3 Y4X1Y4 X2Y4 X3Y4 X4Y4X1Y2 X2Y2 X3Y2 X4Y2X1Y1 X2Y1 X3Y1 X4Y1X1Y3 X2Y3 X3Y3 X4Y3+P1 P2 P3 P4 P5 P6 P7 P853绝对值阵列乘法器绝对值阵列乘法器F

47、AAiBiCiCi+1FiX4Y4FAFAFAFAFAFAFAFAFAFAFAFAX3Y4X2Y4X1Y4X4Y3X3Y3X2Y3X1Y3X4Y2X3Y2X2Y2X1Y2X4Y1X3Y1X2Y1X1Y10000P1 P2P3 P4 P5 P6 P7 P8 动画演示动画演示54补码阵列乘法器补码阵列乘法器 n位补码求绝对值电路位补码求绝对值电路n位补码求绝对值电路位补码求绝对值电路n位位n位绝对值阵列乘法器位绝对值阵列乘法器2 2n n位绝对值求补码电路位绝对值求补码电路 X 补补= =X0X1Xn Y 补补= =Y0Y1YnX0Y0P1P2nP0 P 补补= =P0P1P2nn+1位补码位补码

48、n位绝对值位绝对值2n位补码数值位位补码数值位n+1位补码位补码n位绝对值位绝对值2n位绝对值位绝对值55XnXn-1Xn-2X1X0XnXn-1Xn-2X1补码求绝对值电路补码求绝对值电路补码阵列乘法器补码阵列乘法器 先通过一个补码求绝对值的逻辑电路变为绝对值后,先通过一个补码求绝对值的逻辑电路变为绝对值后,送入绝对值阵列乘法器,运算得到积的绝对值,然后送入绝对值阵列乘法器,运算得到积的绝对值,然后再通过一个绝对值求补码的逻辑电路,根据积的符号再通过一个绝对值求补码的逻辑电路,根据积的符号求出积的补码形式。求出积的补码形式。564.3 4.3 定点数除法运算及实现定点数除法运算及实现 原码除

49、法及实现原码除法及实现 补码除法及实现补码除法及实现 阵列除法器阵列除法器一一二二三三57手工除法算法手工除法算法 判断判断被除数是否大于除数,决被除数是否大于除数,决定商定商0/10/1。 若商若商1 1,则减除数,再添加,则减除数,再添加1 1位位数或者数或者0 0。 若商若商0 0,则直接添加一位数或,则直接添加一位数或者者0.0.X=+0.1011,Y=-0.1101XY58改进手工算法改进手工算法适合机器实现适合机器实现v计算机只能通过计算机只能通过做减法做减法测试来实现判断:结果测试来实现判断:结果大于等于大于等于0 0,表明够减,商,表明够减,商1 1;结果小于;结果小于0 0,

50、表明,表明不够减,商不够减,商0 0。v计算机计算机将余数左移一位,再直接与不右移的除将余数左移一位,再直接与不右移的除数相减。数相减。v即:即:减减(加上除数相反数的补码)(加上除数相反数的补码) 左移左移,构成循环,构成循环592 2、原码恢复余数算法原码恢复余数算法v假设假设XX原原=X=XS S .X .X1 1 X X2 2 X Xn n ,YY原原=Y=YS S .Y.Y1 1 Y Y2 2 Y Yn n ,Q Q是是X XY Y的商,的商,Q QS S是商的符号,是商的符号,R R是是X XY Y的余数,的余数,R RS S是余数的符号是余数的符号v原码除法运算的规则是:原码除法

51、运算的规则是: 1.1.符号位:符号位:Q QS S = X = XS S Y YS S ,R RS S = X= XS S,数值部分:数值部分:|Q| = (|X|-|R|)|Q| = (|X|-|R|)|Y|Y| 2.2.余数和被除数、除数均采用余数和被除数、除数均采用双符号位双符号位;初始余数初始余数为为|X|X|。60一、原码除法及实现一、原码除法及实现v原码除法运算的规则是:原码除法运算的规则是: 3.3.每次用每次用余数减去余数减去|Y|Y|(通过加上(通过加上-|Y|-|Y|补补来实来实现),若结果的符号位为现),若结果的符号位为0 0,则,则够减够减,商上,商上1 1,余,余数

52、左移一位;若结果的符号位为数左移一位;若结果的符号位为1 1,则,则不够减不够减,商,商上上0 0,先加,先加|Y|Y|恢复余数,然后余数左移一位。恢复余数,然后余数左移一位。 4.4.循环操作步骤循环操作步骤3 3,共做,共做n+1n+1次,次,最后一次不左移最后一次不左移,但若最后一次上商但若最后一次上商0 0,则必须,则必须+|Y|+|Y|恢复余数;若为恢复余数;若为定点小数除法,余数则为最后计算得到的余数右定点小数除法,余数则为最后计算得到的余数右移移n n位的值。位的值。 61 X=+0.1011X=+0.1011, Y= - 0.1101 Y= - 0.1101用原码恢复余数算法计

53、算用原码恢复余数算法计算X XY Y。XX原原=0.1011 =0.1011 Y Y原原=1.1101 =1.1101 |X|=0.1011 |Y|=0.1101 |X|=0.1011 |Y|=0.1101 -|Y| -|Y|补补=11.0011 =11.0011 Q QS S = X = XS S Y YS S = 1 R = 1 RS S = 0 = 0被除数被除数/余数余数00.1011商商Q0 0 0 0 0 0 0 0 0 0 操作说明操作说明+- -| |Y| | 补补11.0011+ +11.101100.110100.1011+ +01.0110左移一位左移一位R0 00 0,

54、上商上商1 10 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 +- -| |Y| | 补补11.0011+ +00.010100.1010左移一位左移一位R2 20 0,上商上商1 10 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 +- -| |Y| | 补补11.0011+ +11.110100.110100.1010+ +01.0100左移一位左移一位R3 30 0,上商上商1 10 1 1 0 0 1 1 0 1 1 623 3、原码不恢复余数算法原码不恢复余数算法v又称为又称为加减交

55、替法加减交替法:当某一次求得的差值当某一次求得的差值(余(余数数R Ri i) )为负时为负时,不是恢复它,而是,不是恢复它,而是继续求下一位继续求下一位商商,但,但用加上除数(用加上除数(+|Y|+|Y|)的办法来取代)的办法来取代 (-|Y|-|Y|)操作)操作,其他操作不变。,其他操作不变。v其原理证明如下:其原理证明如下: 在恢复余数除法中,若第在恢复余数除法中,若第i-1i-1次求商的余数为次求商的余数为R Ri-1i-1,下一次求商的余数为,下一次求商的余数为R Ri i,则:,则:R Ri i=2R=2Ri-1i-1|Y|Y| 如果如果R Ri i=0=0,商的第,商的第i i位

56、上位上1 1,并执行操作:余数,并执行操作:余数左移一位,再减左移一位,再减|Y|Y|,得,得R Ri+1i+1,则:,则:R Ri i1 1=2R=2Ri i|Y|Y|63一、原码除法及实现一、原码除法及实现 如果如果R Ri i00,商的第,商的第i i位上位上0 0,并执行操作:恢复余,并执行操作:恢复余数(数(+|Y|+|Y|),将余数左移一位,再减),将余数左移一位,再减|Y|Y|,得,得R Ri+1i+1。其过程可用公式表示如下:其过程可用公式表示如下: R Ri+1i+1=2=2(R Ri i+|Y|+|Y|)|Y|=2R|Y|=2Ri i+2|Y|+2|Y|Y|=2R|Y|=2

57、Ri i+|Y|+|Y|v加减交替法的规则如下:加减交替法的规则如下: 余数为正时,商上余数为正时,商上1 1,求下一位商的办法,是余数,求下一位商的办法,是余数左移一位,再左移一位,再减去除数减去除数; 当余数为负时,商上当余数为负时,商上0 0,求下一位商的办法,是余,求下一位商的办法,是余数左移一位,再数左移一位,再加上除数加上除数。 若最后一次上商为若最后一次上商为0 0,而又需得到正确余数,则在,而又需得到正确余数,则在这最后一次仍需恢复余数。这最后一次仍需恢复余数。64被除数被除数/余数余数00.1011商商Q0 0 0 0 0 0 0 0 0 0 操作说明操作说明+- -| |Y

58、| | 补补11.0011+ +11.111011.1100左移一位左移一位R0 00 0,上商上商1 10 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 +- -| |Y| | 补补11.0011+ +00.010100.1010左移一位左移一位R2 20 0,上商上商1 10 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 +- -| |Y| | 补补11.0011+ +11.110111.1010左移一位左移一位R3 30 0,上商上商1 10 1 1 0 0 1 1 0 1 1 X=+0.

59、1011X=+0.1011, Y=-0.1101Y=-0.1101,用原码不,用原码不恢复余数算法计算恢复余数算法计算X XY Y。XX原原=0.1011 =0.1011 YY原原=1.1101 =1.1101 |X|=0.1011 |X|=0.1011 |Y|=0.1101 |Y|=0.1101 -|Y| -|Y|补补=11.0011=11.0011Q QS S = X = XS S Y YS S = 1 = 1 RS = 0RS = 0Q原原=1.1101 R原原=0.00000111 65一、原码除法及实现一、原码除法及实现 A0A(| |X| |/ /余数余数)并行加法器并行加法器(n

60、+2位位)B(除数除数| |Y| |)控制逻辑控制逻辑计数器计数器缓冲器缓冲器 Q (商商| |Q| |)QCLRDQCPDIV=0左移一位左移一位C0QnBBiQQnQ控制电路逻辑控制电路逻辑 v2 2、原码除法的硬件实现、原码除法的硬件实现66原码除法的硬件实现原码除法的硬件实现vA:A:累加寄存器累加寄存器vB:B:除数寄存器除数寄存器vQ:Q:商寄存器商寄存器vA A、Q:Q:左移寄存器左移寄存器初始:初始:vA=A=|X|X|vB=B=|Y|Y|vQ=0 Q=0 v计数器计数器=n+1=n+1结果:结果:vA=A=余数低位余数低位vB= B= |Y|Y|vQ= Q= 商商v计数器计数

温馨提示

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

评论

0/150

提交评论