第二章 运算方法和运算器2015(2)_第1页
第二章 运算方法和运算器2015(2)_第2页
第二章 运算方法和运算器2015(2)_第3页
第二章 运算方法和运算器2015(2)_第4页
第二章 运算方法和运算器2015(2)_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章第二章 运算方法和运算器运算方法和运算器第二章第二章 运算方法和运算器运算方法和运算器2.1数据与文字的表示2.2定点加法、减法运算2.3定点乘法运算2.4定点除法运算2.5定点运算器的组成2.6浮点运算与浮点运算器返回2.22.2定点运算器定点运算器定点加减法定点加减法2.2.1 补码的加法运算 任意两个数的补码之和,等于该两数和的补码。 X补+Y补=X+Y补 两个数不管正负,均用补码表示,符号位应当作为数值位参加运算,符号位相加所产生的进位要丢掉,结果为补码。加法公式的证明加法公式的证明 现分四种情况来证明。假设采用定点小数表示,因此证明的先决条件是 1, 1, 1。 (1)0,0,

2、则0。 由补码定义可得:补补补 (mod 2) (2)0,0,则0或0时, 2 () 2,进位2必丢失,又因()0,故补补补(mod 2)当0时, 2 () 2,又因()0,故补补2()补(mod 2)(3)0,则0或 0。这种情况和第2种情况一样,把和的位置对调即得证。 加法公式的证明加法公式的证明(4)0,0,则0。 相加两数都是负数,则其和也一定是负数。补2,补2补补222(2)=2+x+y 所以补补2()补(mod 2)至此我们证明了,在模2意义下,任意两数的补码之和等于该两数之和的补码.这是补码加法的理论基础,其结论也适用于定点整数定点运算器定点运算器 定点加减法定点加减法n例: X

3、0.1011 Y-0.0101,求 X+Y? 解:X补=0. 1 0 1 1Y补=1. 1 0 1 1+011010.丢到1 X补+Y补=x+y补=0.0110X+Y=0.0110定点运算器定点运算器 定点加减法定点加减法例: X-11001 ,Y-00011,求 X+Y? 解:X补=1 0 0 1 1 1Y补=1 1 1 1 0 1+00101 1丢到1 X补+Y补= x+y补= 100100X+Y=-1110002.2.2 2.2.2 定点运算器定点运算器定点加减法定点加减法2.2.2 补码的减法: X补- Y补=X+(-Y)补=X补+-Y补 (-Y)的补码称为Y补的机器负数,由Y补求-Y

4、补的过程称为将Y补“变补”或对Y补求补,由Y补求-Y补的方法是,不管Y的真值为正或为负,都是将Y补的各位连同符号位在内全变反后,最低位加1。 公式的证明见教材P27-28定点运算器定点运算器 定点加减法定点加减法例: X-0.1011 Y-0.0110,求 XY? 解:X补=1. 0 1 0 1-Y补=0. 0 1 1 0+1101 1.11X补 Y补=XY补1.1011XY= 0.01012.2.3 2.2.3 定点运算器定点运算器溢出及判别溢出及判别2.2.3 溢出及其判别方法: 在计算机中数的表示范围是有限的,若两数进行加减运算的结果超出了给定的取值范围,就称为溢出。一旦出现溢出,必须及

5、时处理,否则会出现错误。 可以采用两种方法来判别是否产生溢出: 单符号位单符号位法法 双符号位双符号位法法2.2.3 2.2.3 定点运算器定点运算器溢出及判别溢出及判别采用单符号位的判断方法采用单符号位的判断方法 两异号数相加或两同号数相减决不会产生溢出,仅当两同号数相加或两异号数相减时才有可能产生溢出。 两同号数相加时,如果结果的符号与参与运算的操作数符号相反,则表明有溢出;两异号数相减时,如果结果的符号与被减数的符号相反,则表明有溢出。 2.2.3 2.2.3 定点运算器定点运算器溢出及判别溢出及判别利用进位值的判断方法利用进位值的判断方法 两补码数进行加减运算时,若最高数值位产生向符号

6、的进位而符号位不产生进位时,发生正溢出,若最高数值位无进位而符号位有进位时,发生负溢出 溢出判别的逻辑表达式为: V=Cf C02.2.3 2.2.3 定点运算器定点运算器 溢出及判别溢出及判别例: X-0.100 Y-0.101,求 X+Y? 解:X补=1. 1 0 0Y补=1. 0 1 1+11110.丢到两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生 2.2.3 2.2.3 定点运算器定点运算器 溢出及判别溢出及判别例: X100 ,Y-11,求 X-Y? 解:X补=0 1 0 0 -Y补=0 1 1 0+01 1一个正数减去一个负数,结果为正数,但计算结果为负数,表明有溢出

7、发生,出错02.2.32.2.3定点运算器定点运算器 溢出及判别溢出及判别采用双符号位的判断方法采用双符号位的判断方法 每个操作数的补码符号用两个二进制数表示,称为变形补码,用“00”表示正数,“11”表示负数,左边第一位叫第一符号位,右边第一位称为第二符号位,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。“10”表示负溢出,说明运算结果为负数,“01”表示正溢出,说明运算结果为正数。 溢出判别的逻辑表达式为: VSf1 Sf22.2.3 2.2.3 溢出及判别举例溢出及判别举例例例 0.1100, 0.1000,求。解解: 补0

8、0.1100,补00.1000 补00.1100 补 00.1000 01.0100两个符号位出现“01”,表示已溢出,即结果大于1。2.2.3 2.2.3 溢出及判别举例溢出及判别举例例例 0.1100, -0.1000,求。解解:补11.0100,补11.1000补 11.0100补 11.1000 10.1100 两个符号位出现“10”,表示已溢出,即结果小于1。2.2.4 2.2.4 基本的二进制加法基本的二进制加法/ /减法器减法器 根据真值表,可以写出一位全加器的逻辑方程:SiAi Bi CiCi1AiBiBiCiCiAi按此表达式组成的一位全加器如下图所示:输输 入入 输输 出出

9、 Ai Bi Ci Si Ci+ 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 一位全加器的真值表FAFA逻辑电路和框图逻辑电路和框图FA(全加器)逻辑电路图 FA框图FAFA逻辑电路和框图逻辑电路和框图n n位行波进位的补码加法减法器位行波进位的补码加法减法器图2-3行波进位的补码加法/加法器行波进位的补码加法减法器行波进位的补码加法减法器为什么叫行波进位 a3a2a1a0 + b3b2b1b0 s3s2s1s0如何完成减法运算 AB运算转化成A补B补运算,求补过程由B变反1

10、来实现。行波进位的补码加法减法器行波进位的补码加法减法器如何进行溢出检测处理?请思考!延迟时间的计算 考虑溢出:ta=n2T+9T 不考虑溢出时ta=(n-1)2T+9T 2T即每一位的进位延迟 9T包括:溢出的异或门为3T,最下的一排异或门为3T;FA内部Ai和Bi输入的异或门为3T,故共9T。十进制加法器十进制加法器 主要讲清楚下图的两个问题:为什么要进行加6调整。 在十进制运算时,当相加两数之和大于9时,便产生进位。可是四位二进制数能表示的范围是015。两者相差为6。 因此,当和数大于9时,必须对和数进行加6修正。如何实现加6调整。 十进制加法器十进制加法器2.3 2.3 定点运算器定点

11、运算器定点原码一位乘法定点原码一位乘法定点原码一位乘法设被乘数X原=XfXn-1Xn-2X1X0 乘 数Y原=YfYn-1Yn-2Y1Y0 乘 积X原=ZfZ2n-1Z2n-2Z1Z0 运算原则:同号相乘为正,异号相乘为负,符号可按:异或运算得到,数值部分的运算方法与普通的十进制乘数相类似 。不论真值的正负,尾数都用正数参加运算。fffYXZ2.3 2.3 定点运算器定点运算器定点原码一位乘法定点原码一位乘法手工算法0. 1 1 0 10. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1+ 1 0 0 0 1 1 1 1 0.l 两个n位数相乘,其积为2n位,则

12、需要2n位长的加法器,这不适用于定点机的形式。l 机器一次只能进行两个数的相加,不能进行多个数据的加法。2.3 2.3 定点运算器定点运算器定点原码一位乘法定点原码一位乘法定点原码一位乘法 运算法则: 1.乘积的符号位由被乘数和乘数的符号位通过一个异或门实现。 2.数值部分的运算规则是:从最低位Y0开始,当乘数Yi为1时,将上次部分积加上被乘数X的绝对值,然后右移一位,得到新的部分积;当Yi为0时,将部分积直接右移一位,得到新的部分积。3.重复“加右移”操作N次,可得到最后的乘积。 2.3 2.3 定点运算器定点运算器定点原码一位乘法定点原码一位乘法例:X=0.1101,Y=0.1011, 求

13、X*Y=? 解: 部分积 乘数 说明0 0. 0 0 0 00 0. 1 1 0 1+Yf 1 0 1 10 0. 1 1 0 10 0. 0 1 1 0 0 0. 1 1 0 1+0 1. 0 0 1 10 0. 1 0 0 10 0. 0 0 0 0+0 0. 1 0 0 10 0. 0 1 0 00 0. 1 1 0 10 1. 0 0 0 10 0. 1 0 0 0+1 Yf 1 0 11 1 Yf 1 01 1 1 Yf 11 1 1 1 YfZ0=0Y0=1, +XY1=1, +XY2=0, +0Y3=1, +X右移,得Z1右移,得Z2右移,得Z3右移,得Z4=X*Y定点运算器定点

14、运算器定点原码一位乘法定点原码一位乘法结果: X*Y=0.100011112.3 2.3 定点运算器定点运算器定点原码一位乘法定点原码一位乘法原码一位乘法的逻辑电路图定点运算器定点运算器定点原码一位乘法定点原码一位乘法存放部分积,2存放被乘数,存放乘数。一、 R0清零,R2存放被乘数,R1存放乘数。乘法开始时,“启动”信号时控制置,于是开启时序脉冲, 当乘数寄存其最末位为“时,部分积和被乘数在加法器中相加,其结果输出至的输入端。一旦打入控制脉冲到来,控制信号使部分积右移位,与此同时,乘数寄存其也在控制信号作用下右移一位,且计数器记数一次,二、 上述步骤重复执行N次三、 当计数器n时,计数器的溢

15、出信号使控制触法器置,关闭时序脉冲,乘法宣告结束。2.3 2.3 定点运算器定点运算器定点原码一位乘法定点原码一位乘法原码算法存在的缺点: 一是符号位需要单独运算,最后给出运算结果的正确符号; 二是对于采用补码存储的数,从存储器中取出的是操作数的补码,需先将其转换成原码,这样很不方便,而且影响速度。定点运算器定点运算器定点补码一位乘法定点补码一位乘法定点一位补码乘法: 补码乘法的特点是乘数、被乘数用补码表示,符号位参加运算 ,希望得到的结果就是乘积的补码,符号位在运算中形成。但是与补码加减法不同,两数的补码如果直接相乘,结果不是乘积的补码。 设被乘数X补0.123和乘数补0.12均为任意符号,

16、则有补码乘法算式,这就是有名的布斯算法(Booth)。定点运算器定点运算器定点补码一位乘法定点补码一位乘法 X*Y补 =X补*Y =X补-YS+Y12-1+Y2*2-2+Yn2-n =X补-YS+(Y1-Y12-1)+(Y22-1-Y22-2)+(YN2-(n-1)-Yn2-n) =X补(Y1-YS)+(Y2-Y1)2-1+(Yn-Yn-1)2-(n-1)+(0-Yn)2-n =X补(Y1-YS)+2-1(X补(Y2-Y1)+2-1(X补(Y3-Y2)+2-1(X补 (Yn-Y n-1)+2-1(X补(Y n+1-Yn) (Y n+1=0)iniiiYYx2)(01定点运算器定点运算器-定点补

17、码一位乘法定点补码一位乘法递推公式为:P0补=0P1补= 2-1(P0补+(Y n+1-Yn) X补)P2补= 2-1(P1补+(Y n-Yn-1) X补)Pi补= 2-1(Pi-1补+(Y n-i+2-Yn-i+1) X补)Pn补= 2-1(Pn-1补+(Y 2-Y1) X补)Pn+1补= Pn补+(Y 1-Ys) X补=X*Y补2.3 2.3 定点运算器定点运算器-定点补码一位乘法定点补码一位乘法补码一位乘法的运算规则如下(开始时yn+1=0);(1)如果yn= yn+1,部分积zi加0,再右移1位(2)如果ynyn+1=01,部分积加x补,再右移1位(3)如果ynyn+1=10,部分积加

18、-x补,再右移1位 这样重复n+1步,最后一步不移位。 定点运算器定点运算器定点补码一位乘法定点补码一位乘法例:X补=0.1101,Y补=0.1011,求X*Y=? 解: 部分积 乘数 说明 0 0 . 0 0 0 00. 1 0 1 1 0Y n+1=0 1 1 . 0 0 1 1YnY n+1=10, 加-X补+ 1 1 . 0 0 1 1 1 1 . 1 0 0 11. 0 1 0 1 1右移一位+ 0 0 . 0 0 0 0YnY n+1=11, 加0 1 1 . 1 0 0 1 1 1 . 1 1 0 0 1 1 0 1 0 1 右移一位+ 0 0 . 1 1 0 1YnY n+1=

19、01, 加X补 0 0 . 1 0 0 1 0 0 . 0 1 0 01 1 1 0 1 0 右移一位+ 1 1 . 0 0 1 1 1 1 . 0 1 1 1YnY n+1=10, 加-X补 1 1 . 1 0 1 11 1 1 1 0 1右移一位 0 0 . 1 1 0 1+YnY n+1=01, 加X补 0 0 . 1 0 0 01 1 1 1 0 1最后一次不移位定点运算器定点运算器定点补码一位乘法定点补码一位乘法结果: X*Y补=0.100011112.3 2.3 定点运算器定点运算器定点补码一位乘法定点补码一位乘法定点运算器定点运算器定点补码一位乘法定点补码一位乘法 nn位数的延迟

20、时间估计为: (2n+9)Tn故,乘法的运算时间与运算的位数平方成正比。2 2、不带符号位的阵列乘法器、不带符号位的阵列乘法器不带符号阵列乘法器逻辑图2 2、不带符号位的阵列乘法器、不带符号位的阵列乘法器2 2、不带符号位的阵列乘法器、不带符号位的阵列乘法器 例例 已知两个不带符号的二进制整数 A 11011,B 10101,用原码并行乘法求A B的值。 解解: 2 2、不带符号位的阵列乘法器、不带符号位的阵列乘法器阵列乘法器之所以快速,因为阵列当中的行加法器不是串行进位,进位位移到了下一行运算,因而提高了运算速度,但最后一行是行波进位。实现n位n时,要n (n-1)个全加器和n2“与”门。延

21、迟时间: tm=Ta+(n-1) 6T+(n-1)Tf =(8n-6)T 其中Ta对应图2.4的上半部“与”门延迟时间2T。 (n-1)对应斜线的FA运算延迟,单行为6T。 (n-1)对应虚线框内的行波进位延迟。 3 3、带符号位的阵列乘法器、带符号位的阵列乘法器n求补电路3 3、带符号的阵列乘法器、带符号的阵列乘法器n求补电路小结nE=0时,输入和输出相等nE=1时,则从数最右端往左边扫描,直到第一个1的时候,该位和右边各位保持不变0 A=A,左边各数值位按位取反1 A=乛An可以用符号作为E 的输入n原:1.11110 补:1.00010n时间延迟分析:转换n+1位带符号的时间延迟为t=n

22、*2T+5T,其中n*2T为或门延迟时间,5T为最高位与门和异或门的时延。不变,左边数值位取反3 3、带符号的阵列乘法器、带符号的阵列乘法器( (间接法间接法) ) 原码补码3 3、带符号的阵列乘法器、带符号的阵列乘法器( (间接法间接法) )例例 设15,13,用带求补器的原码阵列乘法器求出乘积?解解: 设最高位为符号位,则输入数据为原 01111 原 11101 符号位单独考虑,算前求补级后 |1111,|1101 3 3、带符号的阵列乘法器、带符号的阵列乘法器( (间接法间接法) ) 算后经求补级输出并加上乘积符号位1,则原码乘积值为111000011。 换算成二进制数真值是 ( 110

23、00011)2=(-195)10 十进制数验证: 15 (13) 195相等。3 3、带符号的阵列乘法器、带符号的阵列乘法器( (间接法间接法) )例例 设 15,13,用带求补器的补码阵列乘法器求出乘积?解解: 设最高位为符号位,则输入数据为补10001 补 10011 乘积符号位单独运算:1 1=0 尾数部分算前求补输出为: |1111,|1101 3 3、带符号的阵列乘法器、带符号的阵列乘法器( (间接法间接法) )乘积符号位为0,算后求补器输出为 11000011所以补码乘积为 补= 011000011 换算成二进制数真值是 (11000011)2=(195)104.4.直接补码并行乘

24、法直接补码并行乘法 补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。这种直接的方法排除了较慢的对2求补操作,因而大大加速了乘法过程。 常规的一位全加器可假定它的3个输入和 2个输出都是正权。这种加法器通过把正权或 负权加到输入/输出端,可以归纳出四类加法 单元。4.4.直接补码并行乘法直接补码并行乘法 例例20 设A补(01101)2,B补(11011)2,求AB补?解解: (0) 1101 13) (1) 1011 5 (0) 1101 (0) 1 1 01(0) 0000 (0) 1101 0 (1) (1) (0) (1) 0 (1) 0 1 1 111 1 1

25、1 0 1 1 11 1 1 652.4 2.4 定点运算器定点运算器定点原码一位除法定点原码一位除法定点原码一位除法 在定点计算机中,完成两个原码表示的数相除时,商的符号由两数的符号位按位异或得到,而商的数值部分则是两个正数相除得到。设 被除数 X原=Xf.X1X2Xn 除 数 Y原=Yf.Y1Y2Yn则 商 Q原=(Xf+Yf).(X1X2Xn/Y1Y2Yn)1.1.定点运算器定点运算器定点原码一位除法定点原码一位除法 手工计算除法的方法:设被除数为X=0.1001,Y=0.1011,求X/Y=?1.1.定点运算器定点运算器定点原码一位除法定点原码一位除法 0.1 1 0 1 0.1011

26、 0. 1 0 0 1 0 被除数 -0. 0 1 0 1 1 除数右移1位,减除数,商上1 0. 0 0 1 1 1 0 得余数r1 -0. 0 0 1 0 1 1 除数右移1位,减除数,商上1 0. 0 0 0 0 1 1 0 得余数r2 0. 0 0 0 0 0 0 0 除数右移1位,不减除数,商上0 0. 0 0 0 0 1 1 0 0 得余数r3 -0. 0 0 0 0 1 0 1 1 除数右移1位,减除数,商上1n 0.0 0 0 0 0 0 0 1 得余数r4n X/Y=0.1101;余数;余数=0.0001*2-41.1.定点运算器定点运算器定点原码一位除法定点原码一位除法 手

27、工计算除法的缺点是:1.商0还是商1人可以比较后确定,计算机如何确定?2.余数末位补0后,减去除数右移后的值,导致加法器尾数逐渐增多,最后要求加法器的位数必须位被除数的两倍。1.1.原码一位除法原码一位除法-恢复余数法恢复余数法恢复余数法的运算规则: 计算机中进行除法时,是模仿十进制除法笔算的过程,但又不能完全照搬。在机器中判断是否够减,必须先做减法,若余数为正,表示够减;若余数为负,表示不够减 ,不够减时,必须恢复原来的余数,以便再继续往下运算,这种方法称为恢复余数法。要恢复原来的余数,只要当前的余数加上除数即可。1.1.原码一位除法原码一位除法-恢复余数法恢复余数法恢复余数法的缺点: 当某

28、一次减Y的差值为负时,要多一次加Y恢复余数的操作,降低了执行速度,又使控制线路变得复杂,因此在计算机中很少采用. 运算的步骤无法确定。1.1.原码一位除法原码一位除法加减交替法加减交替法加减交替法的规则: 首先作X-Y,余数为正,表明产生溢出,应终止除法运算;余数为负,上商为0(作为商的符号位),然后重复下述操作n次,可得商的n位数值余数为正时,商为1,余数左移一位,减除数;余数为负时,商为0 ,余数左移一位,加除数。 由于运算中余数共左移了n次,相当于乘2n,故最后得余数应乘上2-n才是真正的正确余数。1.1.原码一位除法原码一位除法加减交替法加减交替法解: X原=X补=X=0.1001,Y

29、补=0.1011,-Y补=1.0101 被除数X/余数r 商数q 说明0 0 . 1 0 0 11 1 . 0 1 0 11 1 . 1 1 1 01 1 . 1 1 0 00 0 . 1 0 1 10 0 . 0 1 1 10 0 . 1 1 1 01 1 . 0 1 0 10 0 . 0 0 1 10 0 . 0 1 1 01 1 . 0 1 0 11 1 . 1 0 1 11 1 . 0 1 1 00 0 . 1 0 1 10 0 . 0 0 0 1+-Y补+Y补+-Y补+-Y补+Y补00.10.110.1100.1101X减Y余数r0为负余数r1为正余数r2为正余数r3为负余数r4为正

30、商0,r和q左移一位商1,r和q左移一位商1,r和q左移一位商0,r和q左移一位加Y减Y减Y加Y商1,仅q左移一位1.1.原码一位除法原码一位除法加减交替法加减交替法Q=0.1101R=2-4*0.0001结果:1.1.原码一位除法原码一位除法加减交替法加减交替法 1.1.原码一位除法原码一位除法加减交替法加减交替法 寄存器为n位,是双向移位寄存器,R0为双向移位寄存器。 除法开始前R1可存放被除数的低n位,R0保存被除数或者余数。 在进商左移的过程中,被除数(余数)的低位部分由串行移至。经n步后,求得n位商。 每次进商置于R1的最末位,由加法器符号位f来设置, 运算结束后R1存放n位的商,R

31、0中存放余数。2.2.补码一位除法补码一位除法加减交替法加减交替法补码加减交替除法的算法规则如下: (1)被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加除数; (2)余数和除数同号,商上1,余数左移一位,下次减除数;当余数和除数异号,商上0,余数左移一位,下次加除数。 (3)重复步骤(2),包括符号位在内,共做n+1步。 为了统一并简化控制线路,一开始上一次假商,如果x补和y补同号,假商上1,正好控制下一次做减法;如果x补和y补异号,假商上0,正好控制下一次做加法。 2.2.补码一位除法补码一位除法加减交替法加减交替法商的校正 在没有特殊精度要求的情况下,一般就采用商的未位“恒置

32、1”的方式进行舍入,这样简单,便于实现。 如果要提高精度要求,可采用如下校正方法对商进行处理: (1)刚好解除尽时,如果除数为正,商不必校正;如果除数为负,则商加2-n。(最低位加1) (2)不能除尽时,如果商为正,则不必校正;如果商为负,则商加2-n。2.2.补码一位除法补码一位除法加减交替法加减交替法补码一位除法的流程图2.2.补码一位除法补码一位除法加减交替法加减交替法 例:X=0.1001,Y=0.1011,求X/Y补解: X补=0.1001 Y补=0.1011 -Y补=1.01012.2.补码一位除法补码一位除法加减交替法加减交替法解:X补=0.1001,Y补=0.1011,-Y补=

33、1.0101 被除数/余数 商数 说明 0 0 . 1 0 0 11 1 . 0 1 0 11 1 . 1 1 1 01 1 . 1 1 0 00 0 . 1 0 1 10 0 . 0 1 1 10 0 . 1 1 1 01 1 . 0 1 0 10 0 . 0 0 1 10 0 . 0 1 1 01 1 . 0 1 0 11 1 . 1 0 1 11 1 . 0 1 1 00 0 . 1 0 1 10 0 . 0 0 0 10 0 . 0 0 0 1+-Y补+Y补+-Y补+-Y补+Y补1101011011101100.1101X补和Y补同号,q0=1减除数加除数减除数减除数加除数余数和除数异

34、号余数和除数同号余数和除数同号余数和除数异号余数和除数同号左移1位,商1左移1位,商1左移1位,商0左移1位,商0左移1位,商02.2.补码一位除法补码一位除法加减交替法加减交替法Q补=0.1101R补=0.0001*2-4结果:3.3.定点运算器定点运算器_ _并行除法并行除法1.可控加法可控加法/减法减法(CAS)单元单元见教材见教材P41 P41 图图2.9(a)2.9(a)它有四个输出端和四个输入端。它有四个输出端和四个输入端。 当输入线当输入线P P0 0时时,CAS,CAS作加法运算;作加法运算; 当输入线当输入线P P1 1时时,CAS,CAS作减法运算。作减法运算。CASCAS

35、单元的输入与输出的关系可用如下一组逻辑方程来单元的输入与输出的关系可用如下一组逻辑方程来表示:表示: SiAi (Bi P) Ci Ci1(AiCi)(Bi P)AiCi当当P P0 0时时, ,即得我们熟悉的一位全加器即得我们熟悉的一位全加器(FA)(FA)的公式的公式当当P P1 1时时, ,即得求差公式即得求差公式可控的加法/减法单元CAS单元P=0,作加法运算P=1,作减法运算第一行:P=1减法运算;不恢复余数算法除数右代替部分积左依x/y商Q=0.q3q2q1余数R=0.00r6r5r4r33.3.定点运算器定点运算器_ _并行除法并行除法 在不恢复余数的除法阵列中,每一行所执行的操

36、作究竟是加法还是减法,取决于前一行输出的符号与被除数的符号是否一致。 当出现不够减时,部分余数相对于被除数来说要改变符号。这时应该产生一个商位“0”,除数首先沿对角线右移,然后加到下一行的部分余数上。当部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该是减法。对一个2n位除以n位的加减交替除法阵列器来说,单元数量为由(n1)2个CAS单元组成。 除法执行时间为Td=3T (n+1)23.3.定点运算器定点运算器_ _并行除法并行除法举例举例p43p43例例230.101001, 0.111, 求。解解:补1.001 除数右移被除数0.1 0 1 0 0 1减1.0 0 1 余数为负1

37、.1 1 0 0 0q00加 0 1 1 1 余数为正 0 0 1 1 0 0q11减 1 0 0 1 余数为负 1 1 1 1 10q20加 0 1 1 1 余数为正 0 1 1 0 0q31 故得商 qq0.q1q2q30.101余数 r(0.00r3r4r5r6)0.000110 举例举例p43p43例例230.101001, 0.111, 求。解解:补1.001 除数右移被除数0.1 0 1 0 0 1减1.0 0 1 余数为负1.1 1 0 0 0 1 0q00加0.0 1 1 1 余数为正0.0 0 1 1 0 1 0q11减1.1 1 0 0 1 余数为负1.1 1 1 1 1

38、10q20加0.0 0 0 1 1 1 余数为正0.0 0 0 1 1 0 0q31 故得商 qq0.q1q2q30.101余数 r(0.00r3r4r5r6)0.000110 补充两种加快除法运算的算法补充两种加快除法运算的算法一。跳0跳1除法 这是一种对规格化小数绝对值相除的除法加速算法。基本思想基本思想:当余数的绝对值很小时,可根据余数前几位代码值再次求得几位同为1或0的商。 基本规则基本规则: 1。如果余数R大于等于0,且R的高K个数位均为0,则本次的商为1后跟K-1个0,R左移K位后,减去除数D,得新余数。 2。如果余数R小于0,且R的高K个数位均为1,则本次商为0后跟K-1个1,R

39、左移K位后,加上除数D,得新余数。例题:M=0.1010000 D=0.1100011 -D补=10011101 0.1010000 1. 0011101 M-D 1 .1101101 R0,符号后有2位0,商为10 0 .1011100 左移两位 1 .0011101 -D 1 .1111001 R0,符号后有4位1,商为0111最后得商Q=0.1100111 (接下去可左移4位,+D继续求商)二二. .用快速乘法器实现快速除法用快速乘法器实现快速除法按下式完成M/D:由上式可知:递乘几次之后,可以使则商应为:若M和D为规格化正的二进制小数代码时,可写成: rrFFFFDFFFFMDM210

40、2101210rFFFFDFFFFM2101D210那么可取Fi的值如下:可见,当i增大时,Di将很快趋近于1,其误差为42210121200011111111FDDFFDDF12i2 2.5 .5 定点运算器的组成定点运算器的组成2.5.1 逻辑运算2.5.2 多功能算术/逻辑运算单元ALU2.5.3 内部总线2.5.4 定点运算器的基本结构2.5 2.5 定点运算器的组成定点运算器的组成 前面讲到的行波进位加法器存在两个大问题: 由于串行进位,所以它的运算时间较长。 只能完成算术运算,不能进行逻辑运算。2 2.5.2 .5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU

41、1.基本思想 一位全加器(FA)的逻辑表达式为: Fi=Ai+ Bi+ Ci Ci+1=AiBi+BiCi+CiAi 为了将全加器的功能进行扩展以完成多种算术逻辑运算,我们先不将输入Ai和Bi和下一位的进位Ci直接进行全加,而是将Ai和Bi先组合成由控制参数S0,S1,S2,S3控制的组合函数Xi和Yi,然后再将Xi,Yi和下一位进位数通过全加器进行全加,这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。2 2.5.2 .5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUS1全加器函数发生器FiC n+i+1C n+iXiYiAi BiS0S2

42、S3S0 S1 Yi S2 S3 Xi 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 Xi 、Yi与控制参数和输入量的关系iAiiBAiiBAiAiiBA iiBA S0 S1 Yi S2 S3 Xi 0001101 10001101 1 1iAiiBAiiBA0iiBA iiBA iiiiiiiiiiiiASSBASSBASSSSXBASSBASSASSY32323232101010)()(XiYi 与控制参数和输入量的关系构造如下真值表2 2.5.2 .5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUiA2 2.5.2 .5.2 多功能算术多

43、功能算术/ /逻辑运算单元逻辑运算单元ALUALUinniiiinniiiXCCYYXCCYXF11112 2.5.2 .5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUiiiiiiiiiBSBSAYBASBASX1023iniiiniiininniiiinniiiXCYXYCYXCXCCYYXCCYXF1111111)(可以证明: XiYi=Yi(自己试试看)进一步化简得到下式2 2.5.2 .5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUnALU的某一位逻辑表达式见下:iniiiCYXFiniiinCXYC1iiiiiiiiiBSBSAYBAS

44、BASX10232.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUn4位ALU 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元n每一位的进位公式可递推如下: C n+1=Y0+X0CnC n+2=Y1+X1Cn+1= Y1+ Y0X1+X0X1CnC n+3=Y2+X2Cn+2 =Y2 +X2 Y1+ Y0X1 X2 +X0X1 X2 CnC n+4=Y3+X3Cn+3 =Y3+X3 Y2 +X2 X3 Y1+ Y0X1 X2 X3 +X0X1 X2 X3 Cn2.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU 令GY

45、3Y2X3Y1X2X3Y0X1X2X3 PX0X1X2X3 G为进位发生输出 P为进位传送输出 增加P和G的目的在于实现多片(组)ALU之间的先行进位,需要配合电路,称为先行进位发生器(CLA) 器件: 741812.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALU 具有正逻辑和负逻辑两种内部逻辑结构图见下页74181ALU74181ALU逻辑图(总体)逻辑图(总体)2.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUn算术逻辑运算的实现(74181)nM=0时,对进位信号没有影响,做算术运算nM=1时,进位门被封锁,做逻辑运

46、算n说明:n74181执行正逻辑输入/输出方式的一组算术运算和逻辑运算和负逻辑输入/输出方式的一组算术运算和逻辑运算是等效的。nA=B端可以判断两个数是否相等。2.5.2 2.5.2 多功能算术多功能算术/ /逻辑运算单元逻辑运算单元ALUALUn设计16位ALUnCn+x=G0+P0Cn Cn+y=G1+P1Cn+xn Cn+x=G2+P2Cn+y Cn+4=G3+P3Cn+zn片内先行进位,片间串行进位2 2.5.3 .5.3 先行进位先行进位ALUALUn两级先行进位的ALUn4片(组)的先行进位逻辑nCn+x=G0+P0Cn nCn+y=G1+P1Cn+x=G1+G0P1+P0P1Cn

47、n Cn+x=G2+P2Cn+yn =G2+G1P2+G0P1P2+P0P1P2Cn nCn+4=G3+P3Cn+zn =G3+G2P3+G1P2P3+G0P1P2P3+P0P1P2P3Cnn =G*+P*CnnG*为成组先行进位发生输出nP*为成组先行进位传送输出成组先行进位部件成组先行进位部件CLACLA的逻辑图的逻辑图2 2.5.3 .5.3 先行进位先行进位ALUALU设计16位先行进位ALU(片内和片间都是先行进位)3232位位ALUALU逻辑方框图逻辑方框图 2个74L1828个4位ALU74L1814位ALUA15-A12B15-B12F15-F12C124位ALUA11-A8B

48、11-B8F11-F8C84位ALUA7-A4B7-B4F7-F4C44位ALUA3-A0B3-B0F3-F0C0C16G*P*7 4 L 1 8 2 CG3 P3 Cnz G2 P2 Cny G1P1 CnxG0 P0G PG PG PG P4位ALUA15-A12B15-B12F15-F12C124位ALUA11-A8B11-B8F11-F8C84位ALUA7-A4B7-B4F7-F4C44位ALUA3-A0B3-B0F3-F0C0C16G*P*7 4 L 1 8 2 CG3 P3 Cnz G2 P2 Cny G1P1 CnxG0 P0G PG PG PG P4位ALUA15-A12B15

49、-B12F15-F12C124位ALUA11-A8B11-B8F11-F8C84位ALUA7-A4B7-B4F7-F4C44位ALUA3-A0B3-B0F3-F0C0C16G*P*7 4 L 1 8 2 CG3 P3 Cnz G2 P2 Cny G1P1 CnxG0 P0G PG PG PG PG*P*7 4 L 1 8 2 CG3 P3 Cnz G2 P2 Cny G1P1 CnxG0 P0.64位组间先行进位ALU例题例题 利用74181和74182芯片组成下列ALU:16位行波进位的ALU; 16位并行进位的ALU;64位并行进位的ALU。问需要上述芯片各多少片?解: 需要74181共4

50、片,不需要74182需要74181共4片,需要74182共1片需要74181共16片,需要74182共5片2.5.4 2.5.4 内部总线内部总线n内部总线内部总线是指CPU内部各部件的连线。由三态门组成的数据总线由三态门组成的数据总线2.5.5 2.5.5 定点运算器的基本结构定点运算器的基本结构 运算器包括ALU、阵列乘除器件、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。计算机的运算器的结构一般有三种。2.5.5 2.5.5 定点运算器的基本结构定点运算器的基本结构ABALU通 用寄存器特 殊寄存器单总线结构的运算器 输入数据和操作结构需要三次串行的选通操作,但它并不会对每种指令都增

51、加很多执行时间。由于只控制一条总线,所以控制电路比较简单。通 用寄存器特 殊寄存器特 殊寄存器ALU缓冲器总线1总线2 两个操作数同时加到两个操作数同时加到ALU进行运算,只需要一进行运算,只需要一次操作控制,而且马上得次操作控制,而且马上得到运算结果。到运算结果。 ALU的输出不能直接加到总线上的输出不能直接加到总线上去,这是因为,当形成操作结构的输去,这是因为,当形成操作结构的输出时,两条总线都被输入数据占据,出时,两条总线都被输入数据占据,因而必须在因而必须在ALU的输出端设置缓冲器。的输出端设置缓冲器。双总线结构的运算器2.5.52.5.5定点运算器的基本结构定点运算器的基本结构2.5

52、.5 2.5.5 定点运算器的基本结构定点运算器的基本结构通 用寄存器ALU特 殊寄存器总 线旁路器总线1总线2总线3 ALU的两个输入端分别由总线提供,而ALU的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。 设置一个总线旁路器,如果一个操作数不需要修改,而直接从总线2传送到总线3,那么可以通过控制总线旁路器把数据传出。三总线结构2 2.6 .6 浮点运算方法和浮点运算器浮点运算方法和浮点运算器2.6.1 浮点加法、减法运算浮点加法、减法运算2.6.2 浮点乘法、除法运算浮点乘法、除法运算2.6.3 浮点运算流水线浮点运算流水线2.6.4 浮点运算器实例浮点运算器实例

53、2.6.1 浮点加法、减法运算1、浮点加减运算设有两个浮点数和,它们分别为2EM2EM其中E和E分别为数和的阶码,M和M为数和的尾数。两浮点数进行加法和减法的运算规则是(M2EEM)2E,设EE2.6.1 浮点加法、减法运算2、浮点运算步骤如下:1. 0 操作数的检查,看有无简化操作的可能;2. 比较阶码大小并完成对阶(小阶向大阶对齐);3. 尾数进行加或减运算;4. 结果规格化并进行舍入处理浮点运算器浮点运算器加法、减法运算加法、减法运算例:设X=2010*0.11011011, Y=2100*(-0. 10101100),求X+Y.(假设两数均以补码表示,阶码、尾数都采用双符号位.)浮点运

54、算器浮点运算器加法、减法运算加法、减法运算解:浮点表示为: X浮= 00 010, 00. 11011011 Y浮= 00 100, 11. 01010100()对阶 E=Ex-Ey=00010+11100=11110即E为-2,X的阶码小,应使Mx右移两位, Ex加2,得: X浮=00100, 00.00110110(11)浮点运算器浮点运算器加法、减法运算加法、减法运算+(2).尾数求和 0()11 1()()浮点运算器浮点运算器加法、减法运算加法、减法运算 (3).规格化和舍入处理 结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移1位,阶码减1,所以结果

55、为11.00010101(10) ,阶码为00 011 舍入处理,采用0舍1入法处理,则有 11. 0 0 0 1 0 1 0 1 1 11. 0 0 0 1 0 1 1 0(4).判溢出 阶码的符号位为00,不溢出。所以最终的结果为 X+Y=2011*(-0.11101010)浮点运算器浮点运算器加法、减法运算加法、减法运算例:设X=2001*(-0.111),Y=2010*0. 101,求X-Y.(假设两数均以补码表示,阶码采用3位,尾数采用4位,均包括符号位.)浮点运算器浮点运算器加法、减法运算加法、减法运算解:浮点表示为: X浮=001,11. 001 Y浮=010,00. 101()

56、对阶E补=Ex补-Ey补=001+110=111 即E为-1,X的阶码小,应使Mx右移1位, Ex加1,得: X浮=010, 11.100(1)浮点运算器浮点运算器加法、减法运算加法、减法运算+(2).尾数求差: -Y补=1.011 11 . 1 0 0 (1)11 . 0 1 1 10 . 1 1 1 (1)丢失1两个负数相加,结果为正数,说明产生了溢出.但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出。此时只是说明尾数的结果为不规格化数,应进行右规。浮点运算器浮点运算器加法、减法运算加法、减法运算 (3).规格化和舍入处理 由于结果产生了溢出,应执行右规处理,所谓右规格化的规则,就是尾

57、数右移1位,阶码加1,所以结果为1.011(1) ,阶码为011 舍入处理,采用恒舍法处理,则有尾数为11.011 浮点运算器浮点运算器加法、减法运算加法、减法运算(4).判溢出 阶码不溢出。所以最终的结果为 X-Y=2011*(-0.101)浮点运算器浮点运算器乘除乘除运算运算 浮点数的乘除法: 设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,则浮点数乘法运算规则: X*Y=2(EX+EY)*(MX*MY) 设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,则浮点除法运算规则: X*Y=2(EX-EY)*(MXMY)浮点运算器浮点运算器乘除乘除运算运算浮点乘、除法的运算步骤

58、:n浮点数的阶码运算n 阶码通常用补码和移码形式表示。对于移码来说:n X+Y移=X移+Y补n X-Y移=X移+-Y补n 使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用 0 参加加减运算,则溢出条件是结果的最高符号位为1。此时,当低位符号位为 0时,表明结果上溢,为1时,表明结果下溢。n 当最高符号位为0时,表明没有溢出;低位符号位为 1,表明结果为正;为 0 时,表明结果为负。浮点运算器浮点运算器乘除乘除运算运算 例例 011,110,求移 和 移,并判断是否溢出。 解解: 移01 011, 补00 110, 补11 010 移移补10 001, 结果上溢。 移移补00

59、 101, 结果正确,为3。浮点运算器浮点运算器乘除乘除运算运算n浮点数的尾数处理n第一种方法:无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理。n第二种方法:运算过程中保留右移中移出的若干高位的值,最后按某种规则用这些位上的值修正尾数,这种处理称为舍入处理。浮点运算器浮点运算器流水线流水线 1.流水线原理流水线原理 为了实现流水为了实现流水,首先必须把输入的任务分割首先必须把输入的任务分割为一系列的子任务,使各子任务能在流水线的为一系列的子任务,使各子任务能在流水线的各个阶段并发地执行。是在计算机上实现各个阶段并发地执行。是在计算机上实现时间时间并行性并行性的一种非常经济的方法

60、。的一种非常经济的方法。 在流水线中,原则上要求各个阶段的处理时间都相同。若某一阶段的处理时间较长,势必造成其他阶段的空转等待。因此对子任务的划分,是决定流水线性能的一个关键因素,它取决于操作部分的效率、所期望的处理速度,以及成本价格等等。浮点运算器浮点运算器流水线流水线假定作业 T 被分成 k 个子任务,可表达为 TT1,T2,Tk 各个子任务之间有一定的优先关系:若ik 时, Ck k 。这就是说,理论上k级线性流水线处理几乎可以提高k倍速度。但实际上由于存储器冲突、数据相关,这个理想的加速比不一定能达到。流水线浮点运算器流水线浮点运算器Aa2P,Bb2q在4级流水线加法器中实现上述浮点加

温馨提示

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

评论

0/150

提交评论