第4章计算机组成原理与系统结构_第1页
第4章计算机组成原理与系统结构_第2页
第4章计算机组成原理与系统结构_第3页
第4章计算机组成原理与系统结构_第4页
第4章计算机组成原理与系统结构_第5页
已阅读5页,还剩152页未读 继续免费阅读

下载本文档

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

文档简介

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

2、一二二三三四四 MIPSMIPS的加减运算的加减运算五五5一、补码加减运算与运算器一、补码加减运算与运算器 补码加减运算方法补码加减运算方法 补码加减运算的溢出判补码加减运算的溢出判断断2 2 补码加减运算器的实现补码加减运算器的实现3 31 161 1、补码加减运算方法、补码加减运算方法补码的加减运算的公式是补码的加减运算的公式是:nX+YX+Y补补 = X= X补补 + Y+ Y补补nX-YX-Y补补 = X= X补补 + -Y+ -Y补补特点:特点:n使用补码进行加减运算,使用补码进行加减运算,符号位和数值位一样参符号位和数值位一样参加运算加运算。n补码的减法可以用加法来实现补码的减法可

3、以用加法来实现,任意两数之差的,任意两数之差的补码等于被减数的补码与减数相反数的补码之和。补码等于被减数的补码与减数相反数的补码之和。注意:注意:该公式不适合任何其他机器数编码(原码、反码、该公式不适合任何其他机器数编码(原码、反码、移码)。移码)。7求补运算:求补运算:YY补补 -Y -Y补补 求补规则:求补规则:将将YY补补包括符号位在内每一位取反,包括符号位在内每一位取反,末位加末位加1 1。n若若YY补补 = Y0= Y0,Y1Y1Yn Yn ,则:,则:n若若YY补补 = Y0.Y1 = Y0.Y1Yn Yn ,则:,则:1YYY-Yn10 补补1YYY-Yn1000 . 0 补补例

4、:例:XX补补 =0.1101 =0.1101,则:,则: XX补补 = = ? Y Y补补 =1.1101 =1.1101,则:,则: YY补补 = = ?8补码加减运算举例补码加减运算举例例:例:已知已知X=+1011X=+1011,Y=-0100Y=-0100,用补码计算,用补码计算X+YX+Y和和X-YX-Y。n写出补码:写出补码: X X补补 =0,1011 Y =0,1011 Y补补 =1,1100 =1,1100 -Y -Y补补 =0,0100 =0,0100 n 计算:计算: 92 2、补码加减运算的溢出判断、补码加减运算的溢出判断 溢出溢出: :当运算结果超出机器数的表示范围

5、时,称为当运算结果超出机器数的表示范围时,称为溢溢出出。 对于加减运算,可能发生溢出的情况:同号(两数)对于加减运算,可能发生溢出的情况:同号(两数)相加,或者异号(两数)相减。相加,或者异号(两数)相减。 确定发生溢出的情况:确定发生溢出的情况:n正数相加,且结果符号位为正数相加,且结果符号位为1 1;n负数相加,且结果符号位为负数相加,且结果符号位为0 0;n正数负数,且结果符号位为正数负数,且结果符号位为1 1;n负数正数,且结果符号位为负数正数,且结果符号位为0 0;10常用的判溢方法(补码加减运算)常用的判溢方法(补码加减运算) 单符号位判溢方法单符号位判溢方法2 2 n当当最高有效

6、位最高有效位产生的进位和产生的进位和符号位符号位产生的进位产生的进位不不同同时,加减运算发生了溢出。时,加减运算发生了溢出。nV VC C1 1CCf f 双符号位判溢方法双符号位判溢方法nX X和和Y Y采用双符号位补码参加运算,正数的双符号采用双符号位补码参加运算,正数的双符号位为位为0000,负数的双符号位为,负数的双符号位为1111;当运算结果的;当运算结果的两两位符号位符号S Sf1f1 S Sf2f2不同不同时(时(0101或或1010),发生溢出。),发生溢出。 nV V S Sf1f1 S Sf2f2= X= Xf f Y Yf f CCf f S Sf f nS Sf1f1

7、S Sf2f2=01=01,则正溢出;,则正溢出;S Sf1f1 S Sf2f2=10=10,则负溢出,则负溢出。 11双符号位判溢方法举例双符号位判溢方法举例例:例:用补码计算用补码计算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 Sf2=00,无溢出,无溢出Sf1 Sf2=10,负溢出,负溢出123 3、补码加减运算器、补码加减运算器133 3、补码加减运算器的实现、补码加减运算器的实现 核心部件

8、:核心部件:一个普通的二进制并行加法器。一个普通的二进制并行加法器。A A:累加器,存放:累加器,存放XX补补;B B:寄存器,存放:寄存器,存放YY补补; 取反电路取反电路: :n =0 =0时,补码加法器,将时,补码加法器,将B B寄存器直接送寄存器直接送入并行加法器入并行加法器; ;n =1 =1时,补码减法器,将时,补码减法器,将B B送入并行加法送入并行加法器,同时,并行加法器的最低位产生进位,即器,同时,并行加法器的最低位产生进位,即B B取取反加反加1 1,此时并行加法器的运算相当于,此时并行加法器的运算相当于AA补补加加-B-B补补 ,完成减法运算。,完成减法运算。SUBADD

9、 /SUBADD /14二、机器数的移位运算二、机器数的移位运算v二进制数据(真值)每相对于小数点左移一位,相当二进制数据(真值)每相对于小数点左移一位,相当于乘以于乘以2 2;每相对于小数点右移一位,相当于除以;每相对于小数点右移一位,相当于除以2 2。1.1.计算机中的移位运算分为:计算机中的移位运算分为:n逻辑移位:逻辑移位:对无符号数据移位,导致无符号数据的对无符号数据移位,导致无符号数据的数值(无正负)放大或缩小。数值(无正负)放大或缩小。 n算术移位:算术移位:对带符号数据(机器数)移位,在数值对带符号数据(机器数)移位,在数值的绝对值上进行放大或缩小,同时,符号位必须要的绝对值上

10、进行放大或缩小,同时,符号位必须要保持不变。保持不变。 n循环移位:循环移位:所有的数据位在自身范围内进行左移或所有的数据位在自身范围内进行左移或者右移,左移时最高位移入最低位,右移时最低位者右移,左移时最高位移入最低位,右移时最低位移入最高位。移入最高位。 15二、机器数的移位运算二、机器数的移位运算补码的算术移位补码的算术移位n算术左移:算术左移:符号位不变,高位移出,低位补符号位不变,高位移出,低位补0 0。为保证补码算术左移时不发生溢出,为保证补码算术左移时不发生溢出,移位的数移位的数据最高有效位必须与符号位相同据最高有效位必须与符号位相同。在不发生溢出的前提下,在不发生溢出的前提下,

11、用硬件实现补码的算用硬件实现补码的算术左移时,直接将数据最高有效位移入符号位,术左移时,直接将数据最高有效位移入符号位,不会改变机器数的符号。不会改变机器数的符号。n算术右移:算术右移:符号位不变,低位移出,符号位不变,低位移出,高位正数补高位正数补0 0,负数补负数补1 1,即高位补符号位。即高位补符号位。16补码的算术移位举例补码的算术移位举例例:例:设设X X0.1001,Y0.1001,Y0.01010.0101,求,求nXX补补 ?n2X2X补补 ?nX/2X/2补补 ?nYY补补 ?n2Y2Y补补 ?nY/2Y/2补补 ?17三、移码加减运算与判溢三、移码加减运算与判溢1.1.移码

12、和移码计算移码和移码计算XX移移 =2 =2n n+X Y+X Y移移 =2 =2n n+Y -2+Y -2n nX2X2n n-1-1XX移移 + Y + Y移移 =2 =2n n+X+2+X+2n n+Y= 2+Y= 2n n+ +(2 2n n +X+Y +X+Y) = 2= 2n n + X+Y + X+Y移移XX移移 + -Y + -Y移移 = 2 = 2n n + X-Y + X-Y移移 2.2.移码和补码混合计算移码和补码混合计算YY补补 =2 =2n+1n+1+Y +Y (mod 2mod 2n+1n+1) XX移移 + Y + Y补补 = X+Y = X+Y移移 3.3.移码

13、运算结果判溢:移码运算结果判溢:双符号位双符号位nXX移移的最高符号位恒为的最高符号位恒为0 0nYY补补采用双符号位采用双符号位18三、移码加减运算与判溢三、移码加减运算与判溢移码运算结果溢出的判断条件是:移码运算结果溢出的判断条件是:n当结果的最高符号位当结果的最高符号位Sf1=1Sf1=1时溢出,时溢出,Sf1=0Sf1=0时结果时结果正确。正确。Sf1 Sf2=10Sf1 Sf2=10时,结果正溢出;时,结果正溢出;Sf1 Sf2=11Sf1 Sf2=11时,结果负溢出。时,结果负溢出。n由于移码运算用于浮点数的阶码,当运算结果正由于移码运算用于浮点数的阶码,当运算结果正溢出时,浮点数

14、溢出时,浮点数上溢上溢;当运算结果负溢出时,浮;当运算结果负溢出时,浮点数点数下溢,当作机器零处理下溢,当作机器零处理。 19举例举例: :vX=+1000X=+1000,Y=+1001Y=+1001,用移码计算,用移码计算X+YX+Y和和X-YX-Y。v解解: : X X移移 = 01= 01,1000 1000 Y Y补补 = 00= 00,1001 -Y1001 -Y补补 =11=11,01110111 X+YX+Y移移 =X=X移移 + Y+ Y补补 = 01 = 01,1000 + 001000 + 00,1001=101001=10,0001 0001 最高符号位为最高符号位为1

15、1,溢出,最低符号位为,溢出,最低符号位为0 0,正溢出。,正溢出。 X-YX-Y移移 =X=X移移 + -Y+ -Y补补 = 01 = 01,1000 + 111000 + 11,0111= 000111= 00,1111 1111 最高符号位为最高符号位为0 0,无溢出,无溢出,X-Y= -1X-Y= -1。20四、十进制加法运算四、十进制加法运算1.1.计算机中的十进制加法器通常采用计算机中的十进制加法器通常采用BCDBCD码设计,在二码设计,在二进制加法器的基础上,加上适当的校正电路,可以实进制加法器的基础上,加上适当的校正电路,可以实现现BCDBCD码的加法器。码的加法器。2.2.对

16、于对于8421BCD8421BCD码来说,当相加的两数之和码来说,当相加的两数之和S9S9时,加时,加6 6校正;当校正;当S9S9时,且无进位时,结果正确,不需校正。时,且无进位时,结果正确,不需校正。 21五、五、MIPSMIPS的加减法指令以及溢出判断的加减法指令以及溢出判断1 1、指令、指令v加(加(addadd)、立即数加()、立即数加(addiaddi)、减法()、减法(subsub)溢出)溢出时引起中断;时引起中断;v无符号数加(无符号数加(adduaddu)、无符号数立即数加)、无符号数立即数加(addiuaddiu)、无符号数减法()、无符号数减法(subusubu)在溢出时

17、不引)在溢出时不引起中断。起中断。22MIPSMIPS的加减法运算举例的加减法运算举例v add $t0,$t1,$t2 add $t0,$t1,$t2 # $t0 = $t1 + $t2; # $t0 = $t1 + $t2; 有符号数的加法运算有符号数的加法运算 v sub $t2,$t3,$t4 sub $t2,$t3,$t4 # $t2 = $t3 - $t4 # $t2 = $t3 - $t4 有符号数的减法运算有符号数的减法运算v addi $t2,$t3, 5 addi $t2,$t3, 5 # $t2 = $t3 + 5; # $t2 = $t3 + 5; 操作数是立即数的加法

18、运算操作数是立即数的加法运算v addu $t1,$t6,$t7 addu $t1,$t6,$t7 # $t1 = $t6 + $t7; # $t1 = $t6 + $t7; 无符号数的加法运算无符号数的加法运算v subu $t1,$t6,$t7 subu $t1,$t6,$t7 # $t1 = $t6 - $t7; # $t1 = $t6 - $t7; 无符号数的减法运算无符号数的减法运算23MIPSMIPS的加减法指令以及溢出判断的加减法指令以及溢出判断2 2、测试溢出程序举例、测试溢出程序举例n无无符号数加法(符号数加法($t0=$t1+$t2),$t0=$t1+$t2),判溢出测试程

19、序:判溢出测试程序:vaddu $t0,$t1,$t2addu $t0,$t1,$t2vnor $t3,$t1,$zeronor $t3,$t1,$zero#$t3=($t1|0)#$t3=($t1|0)按位或非,即按位或非,即$t3= not $t1=2$t3= not $t1=23232-1-$t1-1-$t1vsltu #t3,$t3,$t2sltu #t3,$t3,$t2# if($t3=2# if($t3=23232-1-$t1)$t2 -1-$t1)$t2 即(即(2 23232-1-1) ($t1+$t2$t1+$t2), ,# then $t3=1;else $t3=0# th

20、en $t3=1;else $t3=0vbne $t3,$zero,Overflowbne $t3,$zero,Overflow# if $t3# if $t300 则溢出则溢出24MIPSMIPS的加减法指令以及溢出判断的加减法指令以及溢出判断n有有符号数加法符号数加法($t0=$t1+$t2),$t0=$t1+$t2),判溢出测试程序:判溢出测试程序:vaddu $t0,$t1,$t2addu $t0,$t1,$t2#$t0=sum,#$t0=sum,但是没有陷入异常但是没有陷入异常vxor $t3,$t1,$t2 #xor $t3,$t1,$t2 #检查检查2 2个操作数符号是否不同个操

21、作数符号是否不同vslt slt $t3$t3, ,$t3$t3,$zero,$zero# #小于比较,补码表示,小于比较,补码表示,if if $t3$t30,then 0,then $t3$t3=1,else =1,else $t3$t3=0,=0,即符号不同即符号不同$t3$t3=1=1vbne $t3,$zero,No_overflowbne $t3,$zero,No_overflow# if $t3# if $t30,then go to 0,then go to No_overflow(No_overflowNo_overflow(No_overflow的地址是的地址是PCPC+4

22、+PCPC+4+符号位扩展符号位扩展immediate2immediate2,即当前指令的下一,即当前指令的下一条指令地址条指令地址+ +符号位扩展符号位扩展immediate2)immediate2)即即$t1$t1和和$t2$t2符号不同,则不会溢出符号不同,则不会溢出25MIPSMIPS的加减法指令以及溢出判断的加减法指令以及溢出判断vxor $t3,$t0,$t1xor $t3,$t0,$t1# # 如果如果$t1$t1和和$t2$t2符号相同,那么它们与和的符号符号相同,那么它们与和的符号也相同吗?如果不同,则也相同吗?如果不同,则$t30$t30 0 时,时,XXY Y 补补 =

23、X = X补补YY补补 =X=X补补(0 0.Y.Y1 1Y Yn n)50 补码一位乘法补码一位乘法校正法校正法n当被乘数当被乘数X X的符号任意,的符号任意,Y Y为负数时:为负数时:YY补补 = 2 + Y = 1 .Y = 2 + Y = 1 .Y1 1Y Yn n则:则:Y = Y = YY补补 2 = 2 = 0 0.Y.Y1 1Y Yn n -1 -1XXY Y 补补 = = X X0 0.Y.Y1 1Y Yn n XX补补 = = X X0 0.Y.Y1 1Y Yn n 补补 + +XX补补因为因为0 0.Y.Y1 1Y Yn n 0 0,所以:,所以: X X0 0.Y.Y1

24、 1Y Yn n 补补 = =XX补补(0 0.Y.Y1 1Y Yn n)所以:所以:Y Y0=0=0,商的第,商的第i i位上位上1 1,并执行操作:,并执行操作:余数左移一位,再减余数左移一位,再减|Y|Y|,得,得R Ri+1i+1,则:,则:R Ri i1 1=2R=2Ri i|Y|Y|733 3、原码不恢复余数算法、原码不恢复余数算法如果如果R Ri i00E0,则,则E EX XEEY Y,M MY Y每右移一位,每右移一位,E EY Y+1+1,直至,直至 E EY Y=E=EX X 。若若E0E0,则,则E EX XEEY Y,M MX X每右移一位,每右移一位,E EX X+

25、1+1,直至,直至E EX X=E=EY Y 。n尾数相加减尾数相加减111浮点加减运算步骤浮点加减运算步骤n结果规格化结果规格化:尾数运算的结果可能出现两种:尾数运算的结果可能出现两种非规格化情况:非规格化情况:尾数溢出:需要尾数溢出:需要右规(右规(1 1次)次),即尾数右移,即尾数右移1 1位,阶码位,阶码1 1| |尾数尾数| 2| 0E=30,将,将M MY Y右移右移3 3位,位,E EY Y加加3 3:YY浮浮 = 00= 00,001 00.0001100 001 00.0001100 (101101)一、浮点加减运算一、浮点加减运算116n尾数相加:尾数相加: M MZ Z

26、补补 = = 11.100000111.1000001(101101)n结果规格化:左规一位,无溢出:结果规格化:左规一位,无溢出:MMZ Z 补补 = = 11.000001111.0000011(0101) EEZ Z 补补 = 00 = 00,001 + 11001 + 11,111= 00111= 00,000000n舍入:按照舍入:按照0 0舍舍1 1入法,尾数多余位舍去入法,尾数多余位舍去n结果为:结果为:ZZ浮浮 = 0= 0,000 1.0000011000 1.0000011一、浮点加减运算一、浮点加减运算117二、浮点乘法运算二、浮点乘法运算假设两个浮点数假设两个浮点数X

27、X和和Y Y:XEX2MXYEY2MY)E(EYXYX2)MM(YXZ118v浮点乘法运算步骤浮点乘法运算步骤n0 0操作数检查操作数检查n阶码相加阶码相加:阶码相加可以采用补码或者移:阶码相加可以采用补码或者移码的定点整数加法,同时对相加结果判溢,码的定点整数加法,同时对相加结果判溢,一旦发生正溢出,则需报告溢出,若发生负一旦发生正溢出,则需报告溢出,若发生负溢出,则将结果置为机器零。溢出,则将结果置为机器零。n尾数相乘尾数相乘n结果规格化结果规格化:可能需要左规:可能需要左规1 1位位n舍入处理:舍入处理:尾数相乘的结果长度是尾数长尾数相乘的结果长度是尾数长度的两倍,必须对低位舍入。度的两

28、倍,必须对低位舍入。 二、浮点乘法运算二、浮点乘法运算119浮点数乘法运算流程浮点数乘法运算流程120二、浮点乘法运算(举例)二、浮点乘法运算(举例)例:例:一浮点数表示格式为:一浮点数表示格式为:1010位浮点数,阶码位浮点数,阶码4 4位,包位,包含含1 1位阶符,用移码表示,尾数位阶符,用移码表示,尾数6 6位,包含位,包含1 1位数符,位数符,用补码表示,阶码在前,尾数(包括数符)在后,用补码表示,阶码在前,尾数(包括数符)在后,已知:已知:X=X=(-0.11001-0.11001)2 2011011 Y Y=0.10011=0.100112 2-001-001 ,求,求Z=XZ=X

29、Y Y。要求阶码用移码计算,尾数用补码要求阶码用移码计算,尾数用补码BoothBooth算法计算。算法计算。解:解:按照浮点数的格式分别写出它们的表示形式,为计按照浮点数的格式分别写出它们的表示形式,为计算方便,阶码采用双符号位移码,尾数采用双符号算方便,阶码采用双符号位移码,尾数采用双符号位补码:位补码:XX浮浮 = 01= 01,011 11.00111011 11.00111YY浮浮 = 00= 00,111 00.10011111 00.10011121举例举例阶码相加阶码相加 E EZ Z 移移=E=EX X 移移+E+EY Y 补补 =01,011 + 11,111 =01,011

30、 + 11,111 =01,010 =01,010 无溢出无溢出 E EZ Z 移移 =1=1,010010尾数相乘尾数相乘 采用补码采用补码BoothBooth算法算法计算计算MMX X M MY Y 补补: M MX X 补补 = 11.00111 = 11.00111 M MY Y 补补 = 0.10011 = 0.10011 -M -MX X 补补= 00.11001 = 00.11001 MZ补补= 1.10001 00101122二、浮点乘法运算(举例)二、浮点乘法运算(举例)-MX-MX补补 = 00.11001 = 00.11001 MZMZ补补= 1.10001 00101

31、= 1.10001 00101 结果规格化结果规格化MZMZ左规一次得:左规一次得:MZ MZ 补补= 1.00010 01010 = 1.00010 01010 EZEZ减减1 1得:得:EZEZ移移 = 01= 01,010 + 11010 + 11,111 =01111 =01,001001 舍入舍入对尾数对尾数MZMZ进行进行0 0舍舍1 1入,最后得入,最后得 ZZ浮浮 = 1= 1,001 1.00010001 1.00010123三、浮点除法运算三、浮点除法运算假设两个浮点数假设两个浮点数X X和和Y Y:XEX2MX YEY2MY )(YXE(EYX2MMYXZ 124v浮点数

32、除法运算步骤浮点数除法运算步骤n0 0操作数检查操作数检查当除数为当除数为0 0,则报告除法出错,或者结果,则报告除法出错,或者结果(商)无穷大;(商)无穷大;当被除数为当被除数为0 0,则商为,则商为0 0。n阶码相减阶码相减阶码相减的结果也可能溢出,若发生正溢出,阶码相减的结果也可能溢出,若发生正溢出,则需报告浮点数溢出,若发生负溢出,则将则需报告浮点数溢出,若发生负溢出,则将结果置为机器零。结果置为机器零。n尾数相除尾数相除n结果规格化结果规格化n舍入处理舍入处理 浮点数除法运算步骤浮点数除法运算步骤125浮点数除法运算流程浮点数除法运算流程126三、浮点除法运算(举例)三、浮点除法运算

33、(举例)例:例:一浮点数表示格式为:一浮点数表示格式为:1010位浮点数,阶码位浮点数,阶码4 4位,包位,包含含1 1位阶符,用移码表示,尾数位阶符,用移码表示,尾数6 6位,包含位,包含1 1位数符,位数符,用补码表示,阶码在前,尾数(包括数符)在后,用补码表示,阶码在前,尾数(包括数符)在后,已知:已知: X=X=(-0.11001-0.11001)2 2011011 Y Y=0.10011=0.100112 2-001-001,求,求Z=XZ=XY Y。要求阶码用移码计算,尾数用原码加减交。要求阶码用移码计算,尾数用原码加减交替除法计算。替除法计算。解:解:按照浮点数的格式分别写出它们

34、的表示形式为:按照浮点数的格式分别写出它们的表示形式为: XX浮浮 = 1= 1,011 1.00111 Y011 1.00111 Y浮浮 = 0= 0,111 0.10011111 0.10011 阶码相减阶码相减EZEZ移移 = EX= EX移移 +-EY+-EY补补 = 01= 01,011 + 00011 + 00,001 = 01001 = 01,100100127举例举例尾数相除尾数相除采用原码加减交替法计采用原码加减交替法计算算|MX| |MX| |MY|MY|,首,首先写出下例数据:先写出下例数据:|MX| = 00.11001 |MX| = 00.11001 |MY| = 0

35、0.10011 |MY| = 00.10011 -|MY|-|MY|补补 = 11.01101 = 11.01101 |MZ| =|MX| |MZ| =|MX| |MY| = |MY| = 1.01010 1.01010 128三、浮点除法运算(举例)三、浮点除法运算(举例)结果规格化结果规格化由于由于|MX|MY|MX|MY|,所以,所以|MZ|1|MZ|1,必须右规一位,得,必须右规一位,得|MZ| = |MZ| = 0.10101 00.10101 0EZEZ加加1 1得:得:EZEZ移移 = 01= 01,100 + 00100 + 00,001 001 = 01 = 01,10110

36、1舍入舍入对对|MZ|MZ|进行进行0 0舍舍1 1入,得入,得|MZ| = 0.10101 MZ|MZ| = 0.10101 MZ原原 = = 1.10101 MZ1.10101 MZ补补 = 1.01011= 1.01011最后:最后:ZZ浮浮 = 1= 1,101 1.01011101 1.01011129四、浮点运算器四、浮点运算器130四、浮点运算器四、浮点运算器v 浮点运算复杂程度远远大于定点运算。浮点运算复杂程度远远大于定点运算。v 根据性能要求和需要来确定是否设置浮点运算器。根据性能要求和需要来确定是否设置浮点运算器。v 在在没有浮点运算器没有浮点运算器的机器中,基于一定的定点

37、运算部的机器中,基于一定的定点运算部件,可以按照上述浮点运算的算法件,可以按照上述浮点运算的算法用软件来实现用软件来实现。这。这种方法速度较慢。种方法速度较慢。v 浮点运算器浮点运算器由两个松散连接的定点运算部件组成由两个松散连接的定点运算部件组成:阶阶码运算部件和尾数运算部件码运算部件和尾数运算部件。 阶码运算部件要求具有加减运算和阶码运算部件要求具有加减运算和+1+1、-1-1的功能的功能 尾数运算部件要求具有加减乘除四则运算和移位的尾数运算部件要求具有加减乘除四则运算和移位的功能。功能。 1314.6 4.6 浮点运算器举例浮点运算器举例 80X8780X87算术协处理器算术协处理器 浮

38、点运算流水线浮点运算流水线一一二二 MIPSMIPS的浮点操作的浮点操作三三132一、一、 80X8780X87算术协处理器算术协处理器v 算术协处理器是一个特殊用途的微处理器,专门是为算术协处理器是一个特殊用途的微处理器,专门是为有效地执行算术或超越函数的运算而设计的。有效地执行算术或超越函数的运算而设计的。v 微处理器截取和执行常规指令系统中的指令,而协处微处理器截取和执行常规指令系统中的指令,而协处理器只截取和执行协处理器指令。协处理器指令实际理器只截取和执行协处理器指令。协处理器指令实际上是换码(上是换码(ESCESC)指令,微处理器使用这些指令为协)指令,微处理器使用这些指令为协处理

39、器产生一个内存地址,使得协处理器可以执行协处理器产生一个内存地址,使得协处理器可以执行协处理器指令处理器指令 1338038780387的主要性能和结构的主要性能和结构8038780387的性能的性能 可与配套的可与配套的CPUCPU芯片异步并行工作芯片异步并行工作 支持多种数据类型支持多种数据类型 具有高性能的具有高性能的8080位字长的体系结构位字长的体系结构 具有出色的内部出错管理功能,能检测出具有出色的内部出错管理功能,能检测出6 6种种错误错误 可在可在80386/8048680386/80486微机系统的两种工作模式下微机系统的两种工作模式下运行运行 扩展了扩展了80386/804

40、8680386/80486的指令系统的指令系统 1348038780387支持的支持的7 7种数据类型及其格式种数据类型及其格式 数据类型数据类型数据格式数据格式说明说明单字整数(单字整数(16位整数)位整数)二进制补码二进制补码短整数(短整数(32位整数)位整数)二进制补码二进制补码长整数(长整数(64位整数)位整数)二进制补码二进制补码短实数(短实数(32位浮点数)位浮点数)单精度浮点数单精度浮点数长实数(长实数(64位浮点数)位浮点数)双精度浮点数双精度浮点数临时实数(临时实数(80位浮点位浮点数)数)临时浮点数临时浮点数十进制数串(十进制数串(80位)位)18位位BCD码码S31位位S

41、63位位S阶码(阶码(8位)位) 尾数(尾数(23位)位)S阶码(阶码(11位)位) 尾数(尾数(52位)位)S阶码(阶码(15位)位) 尾数(尾数(64位)位)S(7位)位) d17 d16d1 d0S15位位S符号位;符号位;3种种浮点数均符合浮点数均符合IEEE754标准,标准,即阶码的底为即阶码的底为2,阶码值用移码表阶码值用移码表示,尾数用原码示,尾数用原码表示表示1358038780387的主要性能和结构的主要性能和结构8038780387的结构:分为两个单元。的结构:分为两个单元。n控制单元控制单元(Control UnitControl Unit,CUCU)将协处理器连)将协处

42、理器连接到微处理器系统数据总线上。微处理器和协接到微处理器系统数据总线上。微处理器和协处理器均监视指令流,如果为处理器均监视指令流,如果为ESCESC指令,则由协指令,则由协处理器予以执行。处理器予以执行。1368038780387的主要性能和结构的主要性能和结构8038780387的结构:分为两个单元。的结构:分为两个单元。n数字执行单元数字执行单元(Numeric Execution unitNumeric Execution unit,NEUNEU)负责执行所有协处理器指令。)负责执行所有协处理器指令。 NEUNEU中有一个由中有一个由8 8个个8080位寄存器构成的堆栈,位寄存器构成的

43、堆栈,用于存储算术指令的操作数和结果。用于存储算术指令的操作数和结果。 NEUNEU中还包含状态寄存器、控制寄存器、标中还包含状态寄存器、控制寄存器、标记寄存器和异常指针寄存器。记寄存器和异常指针寄存器。 FSTSWAXFSTSWAX指令是协处理器允许通过指令是协处理器允许通过AXAX寄存器寄存器和微处理器直接通信的唯一指令。和微处理器直接通信的唯一指令。1378038780387内部结构框图内部结构框图 138寄存器堆栈寄存器堆栈 8038780387包含包含8 8个寄存器个寄存器,每个为,每个为8080位位宽,它们首尾相宽,它们首尾相接,组成一个接,组成一个“先进后出先进后出”的寄存器堆栈

44、。这些堆的寄存器堆栈。这些堆栈寄存器中总是栈寄存器中总是包含一个包含一个8080位的扩展精度浮点数位的扩展精度浮点数。数据只有驻留在内存时才可能是任何其他格式。当数据只有驻留在内存时才可能是任何其他格式。当数据从内存中移到协处理器的寄存器堆栈中时,协数据从内存中移到协处理器的寄存器堆栈中时,协处理器将这些带符号的整数、处理器将这些带符号的整数、BCDBCD数、单精度或双精数、单精度或双精度数转换为扩展精度浮点数。度数转换为扩展精度浮点数。 8 8个寄存器编号为个寄存器编号为0-70-7,处于栈顶的寄存器称为,处于栈顶的寄存器称为栈顶栈顶寄存器寄存器,它的,它的编号由状态寄存器的编号由状态寄存器

45、的TOPTOP字段指出字段指出。在。在协处理器指令中,用协处理器指令中,用STST表示栈顶寄存器,用表示栈顶寄存器,用STST(i i)(i=1-7i=1-7)访问相对于栈顶寄存器偏移量为)访问相对于栈顶寄存器偏移量为i i的寄存的寄存器,即器,即i i是偏移量,而不是寄存器实际的编号。是偏移量,而不是寄存器实际的编号。139状态寄存器状态寄存器v状态寄存器反映协处理器所有指令的运行情况。状态寄存器反映协处理器所有指令的运行情况。只在只在8018780187以上的以上的更高型号中使用更高型号中使用 140状态寄存器状态寄存器nB B忙位忙位(busy bitbusy bit)表明协处理器正忙于

46、执行一项)表明协处理器正忙于执行一项任务,通过检测状态寄存器或者使用任务,通过检测状态寄存器或者使用FWAITFWAIT指令均指令均可测试忙位。由于较新的协处理器自动与微处理器可测试忙位。由于较新的协处理器自动与微处理器同步,所以在执行其他协处理器任务之前不必测试同步,所以在执行其他协处理器任务之前不必测试忙标志。忙标志。nC3C3C0C0 条件码位条件码位(condition code bit(condition code bit),表明了),表明了协处理器的条件。协处理器的条件。nTOPTOP栈顶栈顶(top-of-stacktop-of-stack,STST)位表示当前寻)位表示当前寻址

47、为栈顶的寄存器,通常是寄存器址为栈顶的寄存器,通常是寄存器STST(0 0)。nESES错误汇总错误汇总(error summaryerror summary)位,当任何一)位,当任何一个非屏蔽的错误位(个非屏蔽的错误位(PEPE、UEUE、OEOE、ZEZE、DEDE或或IEIE)被)被置位时,则置位时,则ESES被置位。在被置位。在80878087协处理器中该位也可协处理器中该位也可引起协处理器中断。但从引起协处理器中断。但从8018780187开始,不再有协处开始,不再有协处理器中断。理器中断。141状态寄存器状态寄存器nSFSF堆栈标志堆栈标志(stack flagstack flag

48、)位用于区分堆栈)位用于区分堆栈上溢和下溢的非法操作。当该位被置上溢和下溢的非法操作。当该位被置1 1时,再根据时,再根据标志位标志位B9B9(C1C1)来区分上溢和下溢两种情况。)来区分上溢和下溢两种情况。nPEPE精度错误精度错误(precision errorprecision error)表明结果)表明结果或操作数超过了设定的精度范围。或操作数超过了设定的精度范围。nUEUE下溢错误下溢错误(underflow errorunderflow error)表明一个)表明一个非非0 0的结果太小,以致于不能用由控制字选择的当的结果太小,以致于不能用由控制字选择的当前精度来表示。前精度来表示

49、。nOEOE上溢错误上溢错误(overflow erroroverflow error)表明结果太)表明结果太大而不能被表示出来,如果此错误被屏蔽,则协大而不能被表示出来,如果此错误被屏蔽,则协处理器对上溢错误就会产生一个无穷大。处理器对上溢错误就会产生一个无穷大。142状态寄存器状态寄存器nZEZE被零除错误被零除错误(zero errorzero error)表明当被除)表明当被除数是非无穷大和非零时,除数是零。数是非无穷大和非零时,除数是零。nDEDE非规格化操作数错误非规格化操作数错误(denormalized denormalized errorerror)表明至少有一个操作数是非规

50、格化的。)表明至少有一个操作数是非规格化的。nIEIE非法操作错误非法操作错误(Invalid errorInvalid error)表明堆)表明堆栈有上溢或下溢错误,是不确定的形式(栈有上溢或下溢错误,是不确定的形式(0 00 0、+ + 和和- -等),或者使用了等),或者使用了NANNAN作为操作数。此标作为操作数。此标志表明诸如对负数开平方等类似的错误。志表明诸如对负数开平方等类似的错误。143状态寄存器状态寄存器 执行执行FSTSWFSTSW指令就可以访问状态寄存器,此指令将状指令就可以访问状态寄存器,此指令将状态寄存器中的内容存人内存的一个字单元中。在态寄存器中的内容存人内存的一个

51、字单元中。在8018780187或或8018780187以上的协处理器中,以上的协处理器中,FSTSW AXFSTSW AX指令可将指令可将状态寄存器中的内容直接复制到微处理器的状态寄存器中的内容直接复制到微处理器的AXAX寄存器寄存器中。一旦状态寄存器的状态被存储到内存或中。一旦状态寄存器的状态被存储到内存或AXAX寄存器寄存器中,则可以使用常规软件检测状态寄存器中的各位,中,则可以使用常规软件检测状态寄存器中的各位,譬如使用以下两种方法测试状态寄存器的各位。一种譬如使用以下两种方法测试状态寄存器的各位。一种方法是使用方法是使用TESTTEST指令来测试状态寄存器的各位,另一指令来测试状态寄

52、存器的各位,另一种方法是使用种方法是使用SAHFSAHF指令将状态寄存器中最左边的指令将状态寄存器中最左边的8 8位位传送到微处理器的标志寄存器中。传送到微处理器的标志寄存器中。 协处理器和微处理器之间的通信在协处理器和微处理器之间的通信在8018780187和和8028780287中是中是通过通过I IO O端口端口00FAH00FAH00FFH00FFH实现的,而在实现的,而在8038780387Pentium4Pentium4中是通过中是通过I IO O端口端口800000FAH800000FAH800000FFH800000FFH实实现的。现的。144控制寄存器控制寄存器 控制寄存器包

53、括精度控制、舍入控制和无穷大控制,控制寄存器包括精度控制、舍入控制和无穷大控制,它也可以屏蔽或者不屏蔽与状态寄存器最右边它也可以屏蔽或者不屏蔽与状态寄存器最右边6 6位对位对应的异常位。应的异常位。FLDCWFLDCW指令用于给控制寄存器赋值。指令用于给控制寄存器赋值。 控制寄存器中各位及各个组合位的功能:控制寄存器中各位及各个组合位的功能:nICIC无穷大控制(无穷大控制(infinity controlinfinity control)nRCRC舍入控制(舍入控制(rounding controlrounding control)nPCPC精度控制(精度控制(precision contr

54、olprecision control)nException MasksException Masks异常屏蔽字段异常屏蔽字段1458038780387控制寄存器控制寄存器146标记寄存器标记寄存器 标记寄存器(标记寄存器(tag registertag register)表明协处理器堆栈中)表明协处理器堆栈中每个寄存器内容的状态特征,又叫每个寄存器内容的状态特征,又叫特征寄存器特征寄存器。标。标记寄存器用每记寄存器用每2 2位表示寄存器堆栈中位表示寄存器堆栈中1 1个寄存器的状个寄存器的状态,即态,即TAGTAG(i i)表示堆栈寄存器)表示堆栈寄存器STST(i i)的状态。)的状态。TA

55、GTAG(i i)特征值为)特征值为00001111四种组合时分别表明相应四种组合时分别表明相应的寄存器有正确数据、数据为的寄存器有正确数据、数据为0 0、数据非法、无数据、数据非法、无数据4 4种情况。种情况。 通过程序查看标记寄存器的唯一方法通过程序查看标记寄存器的唯一方法是使用是使用FSTENVFSTENV、FSAVEFSAVE或或FRSTORFRSTOR指令来存储协处理器操作环境。其指令来存储协处理器操作环境。其中每条指令均可将标记寄存器与其他协处理器数据中每条指令均可将标记寄存器与其他协处理器数据一起存储。一起存储。 147标记寄存器标记寄存器148二、浮点运算流水线二、浮点运算流水

56、线v为了实现流水,首先必须把输入的任务分割为为了实现流水,首先必须把输入的任务分割为一系列的子任务,使各子任务能在流水线的各一系列的子任务,使各子任务能在流水线的各个阶段个阶段并发地并发地执行。将任务连续不断地输入流执行。将任务连续不断地输入流水线,从而实现了子任务的水线,从而实现了子任务的并行并行。v流水处理大幅度地改善了计算机的系统性能,流水处理大幅度地改善了计算机的系统性能,是在计算机上实现是在计算机上实现时间并行性时间并行性的一种非常经济的一种非常经济的方法。的方法。149二、浮点运算流水线二、浮点运算流水线 v PentiumPentium浮点流水线由预取浮点流水线由预取PFPF、首

57、次译码、首次译码D1D1、二次译、二次译码码D2D2、取操作数、取操作数EXEX、首次执行、首次执行X1X1、二次执行、二次执行X2X2、浮点、浮点寄存器写入寄存器写入WFWF和出错报告和出错报告ERER共共8 8个操作步骤组成。个操作步骤组成。v PentiumPentium微处理器的浮点流水线由浮点接口、寄存器微处理器的浮点流水线由浮点接口、寄存器组及控制部件组及控制部件FIRCFIRC、浮点指数功能部件、浮点指数功能部件FEXPFEXP、浮点乘、浮点乘法部件法部件FMULFMUL、浮点加法部件、浮点加法部件FADDFADD、浮点除法部件、浮点除法部件FDIVFDIV以及浮点舍入处理部件以

58、及浮点舍入处理部件PFRNDPFRND共共7 7个部件组成。个部件组成。v PentiumPentium浮点流水线对于浮点的取数、加减法、乘法浮点流水线对于浮点的取数、加减法、乘法和比较等和比较等“基本基本”操作,采用了新的算法并用硬件来操作,采用了新的算法并用硬件来实现,其执行速度是实现,其执行速度是8048680486的的1010倍多,允许单周期通倍多,允许单周期通过,即能以每个时钟执行一条浮点指令的速度来执行。过,即能以每个时钟执行一条浮点指令的速度来执行。150二、浮点运算流水线二、浮点运算流水线 v PentiumPentium浮点部件内配置了直接支持浮点部件内配置了直接支持3 3倍

59、精度浮点计倍精度浮点计算的部件,极大地简化了微体系结构,并明显地改算的部件,极大地简化了微体系结构,并明显地改进了浮点部件的性能。进了浮点部件的性能。v 基于基于NetBurstNetBurst微架构的微架构的Pentium4Pentium4实现了被称作为流实现了被称作为流SIMDSIMD扩展扩展2 2(SSE2SSE2)的)的144144条新条新SIMDSIMD指令,这些新指指令,这些新指令支持令支持128128位的位的SIMDSIMD整数操作和整数操作和128128位位SIMDSIMD双精度浮双精度浮点操作。点操作。v CoreCore构架拥有构架拥有2 2个浮点执行单元同时处理向量和标个浮点执行单元同时处理向量和标量的浮点运算,其中一个浮点单元负责加减等简单量的浮点运算,其中一个浮点单元负责加减等简单的处理,而另一个浮点单元则负责乘除等运算。的处理,而另一个浮点单元则负责乘除等运算。CoreCore构架对浮点性能的改进效果是显而易见的。构架对浮点性能的改进效果是显而易见的。 151三、三、MIPSMIPS的浮点操作的浮点操作v支持支持IEEE754IEEE754的单精度和双精度格式的单精度和双精度格

温馨提示

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

评论

0/150

提交评论