机器数的运算方法及运算器.ppt

上传人:牧羊曲112 文档编号:6300793 上传时间:2023-10-15 格式:PPT 页数:96 大小:1.01MB
返回 下载 相关 举报
机器数的运算方法及运算器.ppt_第1页
第1页 / 共96页
机器数的运算方法及运算器.ppt_第2页
第2页 / 共96页
机器数的运算方法及运算器.ppt_第3页
第3页 / 共96页
机器数的运算方法及运算器.ppt_第4页
第4页 / 共96页
机器数的运算方法及运算器.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《机器数的运算方法及运算器.ppt》由会员分享,可在线阅读,更多相关《机器数的运算方法及运算器.ppt(96页珍藏版)》请在三一办公上搜索。

1、第4章机器数的运算方法及运算器,下一页,目 录,4.1 机器数的加减运算及其实现4.2 定点乘法及其实现4.3 定点除法及其实现4.4 浮点数的算术运算4.5 运算器的组成和结构,下一页,上一页,4.1 机器数的加减运算及其实现,4.1.1 原码加法4.1.2 补码加法4.1.3 减法运算 补码加减运算线路的实现,上一页,下一页,4.1.1 原码加法,1.符号相同的两个原码相加:符号相同的两个原码相加,只要两个数的数值相加即可,其符号不变。【例4.1】设X=+10001,Y=+01011,求Z=X+Y解:即,Z=+11100。【例4.2】设X=-10001,Y=-01011,求Z=X+Y解:即

2、,Z=-11100。,上一页,下一页,2.符号相异的两个原码相加:先比较两数的绝对值大小,用绝对值大的数减去绝对值小的数,结果的符号是绝对值大的数的符号。【例4.3】设X=+10101,Y=-01010,求Z=X+Y解:先比较X与Y的绝对值,本题X|Y|,所以做减法|X-|Y|,结果是Z=+01011【例4.2】设X=+01010,Y=-10111,求Z=X+Y解:先比较X与Y的绝对值,本题Y|X|,所以做减法|Y-|X|,结果是Z=-01101,上一页,4.1.1 原码加法,下一页,用原码进行符号不同的两个数相加时有以下三步运算:比较两个数的绝对值的大小;绝对值大的数的绝对值减去绝对值小的数

3、的绝对值;结果赋以绝对值大的那个数的符号。,上一页,4.1.1 原码加法,下一页,4.1.2 补码加法,1.定点补码运算性质性质1 两数之和的补码等于两数补码之和。X+Y补=X补+Y补【例4.5】设X=+11010,Y=-10101,用补码的加法求Z=X+Y解:加数和被加数的数值位都是5位,在数值位之前加1位符号位。这样,X补=011010,Y补=101011 X+Y补=X补+Y补=011010+101011=000101所以,X+Y=+00101。注意:在运算中,数值位和符号位有进位,本例采用单符号位,以2为模,进位的1就丢掉了。,上一页,下一页,【例4.6】设X=+10101,Y=-110

4、10,用补码加法求Z=X+Y解:X补=010101,Y补=100110 X+Y补=X补+Y补=010101+100110=111011所以,X+Y=-00101。,上一页,下一页,性质2 一个负数的补码的补码就是这个负数的原码。X补补X原【例4.7】设有两个定点小数 X=-0.10011,Y=-0.11001,求这两个负数补码的补码。解:X原1.10011 Y原1.11001 X补1.01101 Y补1.00111 X补补1.10011X原 Y补补1.11001Y原,上一页,下一页,计算机中计算结果的补码均可化成该数的原码。【例4.8】设有两个定点小数 X=-0.1101,Y=0.0111,(

5、-1X+Y0),求这两数之和。解:X补1.0011 Y补0.0111X补+Y补1.0011+0.01111.1010X+Y原X补+Y补补1.1010补1.0110所以,X+Y-0.0110用真值进行运算:X+Y-0.1101+0.0111-0.0110结果相同。用补码做加法是数值位连同符号位一起参加运算的。但是在有溢出的情况下,用一般的补码加法就得不到正确的结果,再看下面的例子。,上一页,下一页,【例4.9】设有两个定点小数X=+0.10111,Y=+0.10001,用补码的加法求Z=X+Y解:X补=0.10111,Y补=0.10001X+Y补=X补+Y补=0.10111+0.10001=1.

6、01000 Z=X+Y=-0.11000两个大于0.5的正数相加,结果就为负值,结果显然是错误的。【例4.10】设X=-0.10111,Y=-0.10001,用补码的加法求Z=X+Y解:X补=1.01001,Y补=1.01111X+Y补=X补+Y补=1.01001+1.01111=0.11000 Z=X+Y=+0.11000两个绝对值大于0.5的负数相加,结果为正值,这也是错误的。它们的和超出了机器数所能表示的最大范围,即产生了溢出,在有溢出的情况下,用一般补码加法就无法得到正确结果。,上一页,下一页,【例4.11】设有两个定点小数X=+0.10111,Y=-0.10001,用补码的加法求Z=

7、X+Y解:X补=0.10111,Y补=1.01111 X+Y补=X补+Y补=0.10111+1.01111=0.00110 所以,Z=+0.00110,没有发生溢出,结果是正确的。,上一页,下一页,【例4.12】设有两个定点小数X=-0.10111,Y=+0.10001,用补码的加法求Z=X+Y解:X补=1.01001,Y补=0.10001 X+Y补=X补+Y补=1.01001+0.10001=1.11010 X+Y补补=1.00110 Z=X+Y=-0.00110所以,Z=-0.00110,没有发生溢出,结果也是正确的。,上一页,下一页,2.变形补码加法,变形补码是符号位用两位来表示的补码。

8、变形补码的定义为:对于变形补码,补码的加法性质公式同样适用,即:X+Y变形补=X变形补+Y变形补X 变形补 变形补X原用双符号位进行判断,若和的两个符号位相同(00或11),不发生溢出;若和的两个符号位相异(01或10),就说明发生了溢出。遇到溢出,就要停机进行如下处理:选取一个合理的比例因子H=2i,对每个加数都除以H,然后相加,其结果再乘以H,即得所求。,上一页,下一页,下面我们对例4.9和例4.10用变形补码加法来求结果。【例4.13】设X=+10111,Y=+10001,用变形补码的加法求Z=X+Y解:设比例因子H=2,则有所以,X+Y=+101000,上一页,下一页,【例4.14】设

9、X=-10111,Y=-10001,用变形补码的加法求Z=X+Y解:设比例因子H=2,则有:所以:X+Y=-101000,上一页,下一页,说 明,舍入处理 在变形补码运算中,加数除以H=2i,是通过把X补右移I位得到的。在移位时,末几位可能超出机器的最末位而丢失,造成误差。为了减少误差,通常要进行舍入处理,一般有两种方法:恒置1。即移位后机器末位总是1。上面的例子就是用的恒置1的方法。0舍1入。即移出去的数是0则抹去,移出去的数是1则进1到末位。符号位扩展 补码在右移时,要注意符号位要一起移,且最左边一位要补上原符号位的值,这就叫做符号位扩展,即把符号位扩展到为3位。总结以上,得出补码相加的规

10、则:若两数符号不同,相加的结果即为和的补码。若两数符号相同,相加后若其和的符号不变,则结果是和的补码。若两数符号相同,相加后若其和的符号改变,则表示发生了溢出。两个正数相加,结果的符号为“01”,表示发生正溢出;两个负数相加,结果的符号为“10”,表示发生负溢出。,上一页,下一页,4.1.3 减法运算,性质3 两数之差的补码等于被减数的补码与负的减数补码之和。X-Y补=X补+-Y补 由性质1推导得:X-Y补=X+(-Y)补=X补+-Y补【例4.15】两个正数相减,被减数大于减数的例子。设X=+11001,Y=+10001,求Z=X-Y。解:X补=00.11001,-Y补=11.01111X-Y

11、补=X补+-Y补=00.11001+11.01111=00.01000 X-Y=+01000所以,Z=+01000,上一页,下一页,【例4.16】两个正数相减,被减数小于减数的例子。设X=+10011,Y=+11001,求Z=X-Y。解:X补=00.10011,-Y补=11.00111X-Y补=X补+-Y补=00.10011+11.00111=11.11010 X-Y=-00110所以,Z=-00110,上一页,下一页,【例4.17】两负数相减,被减数大于减数的例子。设X=-10011,Y=-11001,求Z=X-Y。解:X补=11.01101,-Y补=00.11001X-Y补=X补+-Y补=

12、11.01101+00.11001=00.00110X-Y=+00110所以,Z=+00110,上一页,下一页,【例4.18】两负数相减,被减数小于减数的例子。设X=-11001,Y=-10011,求Z=X-Y。解:X补=11.00111,-Y补=00.10011X-Y补=X补+-Y补=11.00111+00.10011=11.11010 X-Y=-00110所以,Z=-00110,上一页,下一页,4.1.4 补码加减运算线路的实现,在线路实现上,若已有Y补,求-Y补可用把Y补每一位(包括符号位和数值位)取反,再在最低位加1来实现。实现补码加减运算的逻辑电路如右图所示。,下一页,上一页,4.1

13、.4 补码加减运算线路的实现,图中各个部件的名称和功能是:F 表示多位并行加法器,它的功能是接收参加运算的两个数X和Y,实现加法运算,并在输出端给出本次运算结果。加法器的最低一位可以接收一个进位信号1F。X和Y 临时存放参加运算数据的两个寄存器,X还用来保存运算的结果。A“与”门,功能是控制寄存器X输出的内容是否送到加法器F的左输入端,用XF信号控制。C“与”门,功能是控制加法器F的运算结果是否写回寄存器X,用FX信号控制。B“与或”门,功能是通过控制信号YF和F分别把Y寄存器中的内容是原数据送加法器F还是各位取反后送加法器F。,下一页,上一页,运算原理如下:参加运算的两个数被送到寄存器X和Y

14、,以补码的形式保存。要实现X+Y补X,需给出XF、YF两个控制信号,就可以把X补和Y补送入加法器F的两个输入端,加法器再完成两个补码X补和Y补的相加。加法完成之后,再通过FX命令,把相加结果送入寄存器X。若要完成X-Y补X,“与”门A送出的还是X补,但“与或”门B送出的应是Y每一位的取反值,并在加法器的最低位加进位信号1F,这样就得到-Y补,通过加法器F相加,就实现了X补+-Y补,也就是X-Y补。再通过FX命令,把X-Y补送入寄存器X。,上一页,下一页,4.2 定点乘法及其实现,4.2.1 原码一位乘法及其实现4.2.2 定点补码一位乘法及其实现4.2.3 原码两位乘法4.2.4 补码两位乘法

15、,上一页,下一页,4.2.1 原码一位乘法及其实现,在定点计算机中,用两个原码表示的数相乘,其乘积的符号由两数的符号位异或得到,乘积的数值部分是两数的绝对值相乘之积。例如,有两个数X和YX原=XsX1X2 XnY原=YsY1Y2 Yn则 X*Y原=X原*Y原。乘积的符号位为:XsYs乘积的数值部分为:(X1X2 Xn)*(Y1Y2 Yn)。,上一页,下一页,在计算机中其运算规则是:根据乘数Y绝对值每个数位上的值Yi是“1”还是“0”(从最低位Y0开始),决定本次部分积是加上被乘数X的绝对值,还是加上全“0”,得到的新部分积右移一位,再重复上面的动作,直到乘法做完为止。【例4.19】X=+110

16、10,Y=+10110,求Z=X*Y 解:X原=0.11010,Y原=0.10110 乘积的符号位Z0=00=0 乘积的数值部分是两数的绝对值相乘。开始时,部分积为全“0”。,上一页,下一页,所得结果Z=+0.1000111100。有时部分积的符号位出现“1”,并不是出现了负数,而是部分积的值超出了“1”,右移时符号位应补“0”。,上一页,下一页,要实现原码一位乘法,乘积的符号可以用异或门实现,异或门的两个输入为相乘两数的符号,输出即为乘积的符号。下图给出了实现原码一位乘法的逻辑电路框图,以实现对相乘两数的数值位相乘。,上一页,下一页,实现原码一位乘法的逻辑电路框图,主要组成部件有:寄存器A,

17、存放计算的部分积Z,具有自动移位功能;寄存器B,存放被乘数X;寄存器C,存放乘数Y,具有自动移位功能;加法器F,进行部分积和被乘数相加;计数器i,用来控制逐位相乘的次数。控制信号AF、BF分别通过与门控制部分积、被乘数送入加法器F进行相加;控制信号A/2A、C/2C分别控制寄存器A、C自行右移一位。,下一页,上一页,4.2.2 定点补码一位乘法及其实现,两个补码数相乘,其结果应直接得到乘积的补码:X补*Y补=X*Y补 当被乘数X的符号为任意,乘数Y的符号为正。因为Y0,Y补=Y,则X补*Y补=X补*Y=X*Y补这种情况,可以由两个补码数直接相乘得到正确的结果。运算过程中的加、移位等操作均按补码

18、规则进行。,上一页,下一页,当被乘数X的符号为任意,乘数Y的符号为负。因为Y0,Y补=2n+Y,则X补*Y补=X补*2n+Y=X补*2n+X补*Y而正确的乘积应为X补*Y,这种情况,结果应该进行修正,把X补*2n作为修正值,这就是修正法补码乘法。总结修正法补码乘法的运算规则是:符号位参加运算,结果的符号由运算结果得出,重复执行n步右移操作进行相加。当乘数为负时,需进行n+1步操作,进行修正。,上一页,下一页,当被乘数X和乘数Y的符号都任意时:应该用比较法补码乘法。比较法又叫BOOTH法,是由修正法导出的用两个补码直接相乘后就得到正确结果的方法。乘数 Y=-2n+Y补=-2n+Y0Y1Y2Yn-

19、1=-2n+Y0*2n-1+Y1*2n-2+Y3*2n-3+Yn-1*20=-2n*Y0+Y0*2n-1+Y1*2n-2+Yn-1*20=-2n-1*Y0+Y1*2n-2+Y2*2n-3+Yn-2*21+Yn-1*20上式中,-2n乘以Y0,该公式仍然正确。将上式提出2n,则有:Y=-2-1*Y0+Y1*2-2+Y2*2-3+Yn-2*2-(n-1)+Yn-1*2-(n)2n=2-1*(Y1-Y0)+2-2*(Y2-Y1)+2-3*(Y3-Y2)+2-(n-1)*(Yn-1-Yn-2)+2-n*(Yn-Yn-1)*2n,上一页,下一页,得:X补*Y=(2-1*(Y1-Y0)*X补+2-2*(Y

20、2-Y1)*X补+2-3*(Y3-Y2)*X补+2-(n-1)*(Yn-1-Yn-2)*X补+2-n*(Yn-Yn-1)*X补)*2n也即:X补*Y=2-1*(Y1-Y0)*X补*2n+2-1*(Y2-Y1)*X补*2n+2-1*(Y3-Y2)*X补*2n+2-1*(Yn-1-Yn-2)*X补*2n+2-1*(Yn-Yn-1)*X补*2n)写成递推公式:Z0补=2-1*(Yn-Yn-1)*X补*2nZ1补=2-1*(Z0补+(Yn-1-Yn-2)*X补*2n)Z2补=2-1*(Z1补+(Yn-2-Yn-3)*X补*2n)Zi补=2-1*(Zi-1补+(Yn-i-1-Yn-i-2)*X补*2n)

21、Zn-1补=2-1*(Zn-2补+(Y1-Y0)*X补*2n)最后乘积为Zn-1补 式中,Yn为附加位,在Yn-1以后,Yn=0。,上一页,下一页,由此,可以总结出比较法补码乘法的规则:在作补码一位乘法时,在乘数的最末位后面再加一位附加位yn。开始时,yn=0,第一步运算是根据yn-1 yn这两位的值判断后决定,然后再根据yn-2 yn-1这两位的值判断第二步该作什么运算,再根据yn-3 yn-2这两位的值判断第三步该作什么运算,如此等等。因为每进行一步,乘数都要右移一位,yn-2 yn-1 就移到yn-1 yn位置上。作第三步时,原来的yn-3 yn-2移到了yn-2 yn-1位置上。所以每

22、次只要判断yn-1 yn这两位的值就行。判断规则如表4-1所示。,上一页,下一页,补码一位比较乘法规则,上一页,下一页,比较法计算用流程图表示,上一页,下一页,【例4.20】利用补码一位乘法计算Z=X*Y,其中X=-0.1101,Y=0.1011。解:X补=11.0011,Y补=0.1011,-X补=00.1101乘积的数值部分是两数的绝对值相乘。开始时,部分积为全“0”。,所以X*Y补=11.01110001,结果Z=X*Y=-0.10001111。,上一页,下一页,实现一位补码乘法的逻辑原理图如图4-4所示。它与一位原码乘法的逻辑原理图有些相似,不同的地方有以下几点:被乘数和乘数的符号位参

23、加运算;乘数寄存器C有附加位Yn,其初始状态为“0”。当乘数和部分积每次右移时,部分积最低位移入寄存器C的首位位置,所以寄存器C必须是具有右移功能的寄存器。被乘数寄存器B的每一位用原码或反码(可用触发器的Q端或端输出)经多路开关传送到加法器对应位的一个输入端,而多路开关的控制信号由Yn-1、Yn的输出译码器产生。当Yn-1Yn=01时,送X补;当Yn-1Yn=10时,送-X补,即送寄存器B内容的反码且在加法器末位加1。寄存器A用来保存部分积,该寄存器也应具有右移的功能,其符号位与加法器的符号位始终一致。当计数器i=n+1时,封锁A/2A,C/2C控制信号,使最后一步不移位。,上一页,下一页,补

24、码一位乘法逻辑原理图,上一页,下一页,4.2.3 原码两位乘法,定点原码两位乘法是根据乘数中相邻两位数码的值来确定乘法的每一步作什么运算。两位乘法的判别位是2位,即yn yn+1,共有4种可能,即00,01,10,11,其操作方法如下表所列。,下一页,上一页,【例4.21】设X=1101,Y=1001,用原码两位乘法求Z=X*Y 解:以X为被乘数,Y为乘数,其判别位Y1Y0=01,Y3Y2=10,其两位乘法的运算过程如下:,上一页,下一页,所得结果Z=1110101。,【例4.22】用原码两位乘法求Z=X*Y,其中X=101011,Y=001001,解:以X为被乘数,Y为乘数,其判别位Y1Y0

25、=01,Y3Y2=10,Y5Y4=00,其两位乘法的运算过程如下:,上一页,下一页,所得结果Z=110000011。,说明:部分积减去被乘数X,是用补码进行运算,即用+-X补的方法实现。部分积减去被乘数所得结果一般为负数,这是因为部分积要右移2位,所以总是小于被乘数的缘故。当判别位为11时,要用上次部分积减被乘数,右移2位,再在下一个判别位上加1。其原因是判别位为11(即3),应加上3倍的被乘数。两种方法是等效的。符号位扩展的实质是采用几位加法器的问题。若采用n+2位加法器,符号位扩展2位;若采用n+3位加法器,则符号位应扩展3位。,下一页,上一页,4.2.4 补码两位乘法,进行定点补码两位乘

26、法,要有3位判别位,3位判别位的组合关系为:-2Yi+Yi-1+Yi-2 它们的组合值与相应的加法操作,如下表所示。,下一页,上一页,判别位。在乘数的最低位后增加一位附加位。乘数的符号位要视数值部分的位数来决定。若数值部分的位数为偶数,则必须采用2位符号位;否则,就采用1位符号位。加法操作的次数。定点补码两位乘法运算所做加法操作的次数为乘数的位数(包括符号位)除以2的值。被乘数的符号位。可采用2位符号位或3位符号位,视情况而定。符号位扩展。在进行定点补码两位乘法运算中,在进行右移2位操作时,要注意符号位的扩展,即右移时符号要一起移,空出的符号位以符号的原值填充。最后一步的移位。视乘数的符号位而

27、定。若符号位为2位,则不用移位;若符号位为1位,则要进行右移1位的操作。,下一页,进行定点补码两位乘法运算需注意如下问题,上一页,【例4.23】设X=-1101,Y=-0101,用补码的两位乘法求Z=X*Y 解:X补=11.0011,-X补=00.1101,Y补=11.1011采用2位符号位,X*Y补的补码两位乘法运算过程如下:,下一页,故运算结果为:X*Y补=00.01000001,所以 Z=X*Y=+1000001,上一页,4.3 定点除法及其实现,4.3.1 定点原码除法4.3.2 定点补码除法,下一页,上一页,4.3.1 定点原码除法,恢复余数法 恢复余数法的运算规则如下:从被除数减去

28、2n-1倍除数,如果第一次余数为正,则除法溢出,停止运算;如果第一次余数为负,表示除法不溢出。当余数为负时,将2n-1倍除数加到余数上,以恢复原来余数,然后减去2n-2倍的除数。如果余数为正,表示够减,商为“1”;如果余数为负,表示不够减,商为“0”。并需要恢复余数。重复第步,一直做到余数减去20为止,计算结束。,下一页,上一页,【例4.24】设X=1011,Y=1101,用恢复余数法求Z=XY解:-Y补=110011,除法过程如右。,所以,结果是:商D=0.1101,余数R=0.0111,下一页,上一页,加减交替法,运算规则如下:商的符号位单独处理,由ZS=XSYS求得。被除数与除数同符号,

29、被除数减去除数;被除数与除数异号,被除数加上除数。余数与除数同符号,上商“1”,余数左移一位,下次减除数,得到新的余数;余数与除数异号,上商“0”,余数左移一位,下次加除数,得到新的余数。重复第步,共做n次(n为除数的位数),除法结束。,上一页,下一页,加减交替法求两定点原码数的除法:【例4.25】设X=1011,Y=1101,用加减交替法求Z=XY解:加减交替法中经常要加除数,减除数,减除数Y,就是加-Y补,-Y补=110011,运算过程如下:,得到同样结果:D=0.1101,余数R=0.0111,说明:如果最末一位商为0,则要在负余数上加上除数才是真正的余数。本题中,商到第3位时,商为0,

30、此时真正的余数应为111101+1101,即1.010。,下一页,上一页,【例4.26】设X=00101011,Y=0110,用加减交替法求Z=XY解:-Y补=11010,运算过程如下:,结果是:商D=0.0111,余数 R=0.0001,上一页,下一页,实现原码加减交替除法的逻辑结构框图表示于下图中。,上一页,下一页,4.3.2 定点补码除法,用X补Y补直接求得X/Y补。补码除法的运算规则如下:如果被除数与除数同号,求商时,用被除数减去除数;若两数异号,则用被除数加上除数的办法处理。若余数与除数同号,上商1,左移一位后下次作余数减除数操作;若余数与除数异号,上商0,左移一位后下次作余数加除数

31、操作。商的符号是在第一次试算时求出的,若定点除不溢出,得到的就是正确的符号位的值。商的修正问题。在对精度不高时,将商的最低一位恒置1。此时最大误差为2-n。若对商的精度要求较高时,可对n位数求商n+1次,按得到的不同结果对商进行修正。当商为负时,要在商的最低一位加1,从反码的结果得到商的正确的补码值。,上一页,下一页,补码除法运算实例:【例4.27】设X=-1001,Y=+1101,用补码除法求Z=XY。解:X补=11 0111,Y补=00 1101,-Y补=11 0011,运算过程如下:,运算结果,商的补码 q补=110101,余数的补码r补=110010;商q=-1011,余数为 R=-1

32、110。,下一页,上一页,【例4.28】设X=+1011,Y=+1101,用补码加减交替除法求Z=XY。解:X补=00 1011,Y补=00 1101,-Y补=11 0011,运算过程如下:,运算结果,商的补码q补=001101,余数的补码 r补=000111;商 q=+1101,余数为r=+0111。,上一页,下一页,4.4 浮点数的算术运算,4.4.1 浮点数的补码加法运算4.4.2 浮点数的乘法运算4.4.3 浮点数的除法运算,下一页,上一页,4.4.1 浮点数的补码加法运算,完成浮点数加减运算的步骤:对阶。方法是,小阶向大阶看齐,阶码较小的数的尾数每向右移1位,该数阶码便加1,直到两数

33、的阶码相同为止。对阶时要进行舍入处理。尾数求和。尾数连同符号相加。规格化。若进行右规,还需要进行舍入处理。,下一页,上一页,【例4.29】有两个浮点数 A=210(-0.110100),B=2100(+0.101011),求A+B=?解:对阶。先把A、B两数用补码表示:A补=00.010;11.001100 B补=00.100;00.101011 可以看出,A补的阶码小,应向B补阶码看齐,A补阶码增2,尾数向右移2位:A补=00.100;11.110011 B补=00.100;00.101011 尾数求和。11 110011 00 101011 100.011110,下一页,上一页,规格化上述

34、结果为:A+B=2100(+0.011110)这是一个非规格化的数,对上述结果规格化,即进行左规:尾数向左移1位,阶码减1。得到最后结果:A+B=2011(+0.111100)舍入处理舍入处理不是对每一个题目都是必须的,主要看在对阶和右规格化尾数向右移位时,尾数的低位部分有否被丢掉。常用的舍入方法有两种:一种是“0舍1入”法,即如果右移时被丢掉的数位的最高位为0,则舍去;反之则将尾数的末位加“1”。另一种是“恒置1”法,即只要有数位被移掉,就在尾数的末位恒置“1”。,下一页,上一页,4.4.2 浮点数的乘法运算,浮点数乘法的运算规则是:乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码

35、之和。结果也要进行规格化和舍入处理。如有两个浮点数 X 和 Y:X=2exSx Y=2eyS 则 Z=XY=2(ex+ey)(SxSy)在具体实现中,两数阶码的求和运算可在阶码加法器中进行,两个尾数的乘法运算,就是定点数的乘法运算。,下一页,上一页,4.4.3 浮点数的除法运算,浮点数除法的运算规则是:商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。结果也要进行规格化和舍入处理。如有两个浮点数 X 和 Y:X=2exSx Y=2eySy则 Z=XY=2(exey)(SxSy)综上所述,浮点数的算术运算比定点数的算术运算要复杂许多,从运算器的结构来说,不但要有尾数运算器,而且还要有阶

36、码运算器。阶码运算器用来求阶差,修改阶码等等,一般只进行加减运算。而尾数运算器不但要有加法器用以求和,还应有左移和右移的功能,以实现对阶操作和规格化操作。关于浮点运算器的一般结构,将在本章的最后小节进行介绍。,下一页,上一页,4.5 运算器的组成和结构,算术逻辑单元ALU 通用寄存器组 状态寄存器 数据通路 运算器的基本结构 运算器组成实例,下一页,上一页,4.5.1 算术逻辑单元ALU,ALU的主要功能是对二进制数据进行算术运算、逻辑运算和各种移位操作。算术运算包括定点加、减、乘和除的运算;逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作;移位操作主要完成逻辑左移、逻辑右移、算术左移、算术

37、右移及其它一些移位操作。74181是一种典型的4位ALU器件。下页图是74181的电路图,及用正逻辑和负逻辑表示的4位ALU74181的方框图。和74181的运算功能表。,上一页,下一页,74181 ALU的方框图,下一页,上一页,74181 ALU的方框图,下一页,上一页,74181的运算功能表,下一页,上一页,4.5.2 通用寄存器组,通用寄存器用来保存参加运算的操作数和运算的结果。寄存器是计算机中存取速度最快的存储器件,同时还可以兼作某些指令的专用寄存器。例如,IBM PC系列微型计算机中,其CPU有8个16位的通用寄存器,其结构如下图所示。,下一页,上一页,4.5.3 状态寄存器,记录

38、运算结果状态,一般设置下面几种标志状态位:Z(零标志位):当运算结果为零时,Z位置1;结果非零时,Z位清0。N(符号标志位):当运算结果为负时,N位置1;结果为正时,N位清0。V(溢出标志位):当运算结果有溢出发生时,V位置1;无溢出时,V位清0。C(进位或借位标志位):当作加法时,如果运算中最高有效位向前有进位,C位置1;否则C位清0。当作减法运算时,如果不够减,最高位向前有借位时,C位置1;否则C位清0。,下一页,上一页,4.5.4 数据通路,通常把从一个功能部件向另一个功能部件传送数据所经过的功能部件、总线等称为数据通路。数据通路是个很重要的概念,正确理解数据通路,能帮助我们理解指令执行

39、过程,理解计算机总体运行过程。在上面图所示的右半部分运算器中,MUX1、MUX2分别是两个多路数据选择器,用它们来选择当前哪两组数据送到ALU中。MUX1数据有三个来源:通用寄存器的输出、指令中的相对位移量和常数“0”;MUX2数据也有三个来源:通用寄存器的输出、程序计数器的输出和数据寄存器的输出。ALU的输出信息通过内部数据总线送到通用寄存器中。,下一页,上一页,假设这个通用寄存器组有两个输出端口RA和RB,有一个输入端口RI。寄存器中的数据以补码表示。并假设寄存器组中的寄存器1用R1表示,寄存器2用R2表示,寄存器3用R3表示。运算之前,R1=0110,R2=1100,Z、N、C、V标志位

40、全为0。第一种操作:R1加R2,结果送R3 其操作过程如下:R1的内容通过端口RA输出,MUX1选择RA的内容送到ALU的A输入端;R2的内容通过端口RB输出,MUX2选择RB的内容送入ALU的B输入端。令ALU作A+B算术加法操作,从Y输出端输出加的结果,并存入R3寄存器中。,下一页,上一页,第二种操作:0减R1,结果送R3,即求与R1相补的数。其操作过程如下:R1的内容从RB输出,经过MUX2选择,送到ALU的B输入端,在MUX1处选择常数“0”送入ALU的A输入端,在ALU中选择A-B的算术运算功能。由于运算器要进行的是补码运算,A-B功能是通过A补+-B补来完成的。第三种操作:利用运算

41、器计算操作数地址或转移地址 假设当前执行转移指令,转移地址由程序计数器的值加上相对位移量得出。运算器计算转移地址的过程是:MUX2选择程序计数器PC的内容送往ALU的B输入端,MUX1选择指令字中的相对位移量到ALU的A输入端,令ALU做A+B算术加运算,从Y输出的内容送往程序计数器PC中,这时PC中就为转移地址了。下次执行指令就从转移地址开始执行。,下一页,上一页,第四种操作:关于移位操作 为简单起见,我们以4位二进制数(最左边一位为符号位)为例,来说明移位操作的规则和操作结果。,下一页,上一页,下一页,上一页,下一页,上一页,下一页,上一页,4.5.5 运算器的基本结构,单总线结构的运算器

42、 运算器所有部件都接到同一条总线上的运算器结构是单总线结构的运算器。,下一页,例如要执行一次加法操作,需要先把第一个操作数放入A缓冲器,然后再把第二个操作数放入B缓冲器,只有当这两个操作数同时出现在ALU的两个输入端,ALU才能执行加法操作。这种结构的运算器主要缺点是操作速度较慢。,上一页,双总线结构的运算器,双总线结构的运算器如下图所示。在这种结构中,两个操作数同时加到ALU进行运算,只需要一次操作控制,而且马上可以得到运算结果。,ALU的输出不能直接加到总线上,必须在ALU的输出端设置一个缓冲寄存器。整个操作分两步完成:第一步,在ALU 的两个输入端输入操作数,形成结果并送入缓冲寄存器;第

43、二步,把结果送入目的寄存器。,下一页,上一页,三总线结构的运算器,三总线结构的运算器如下图所示。在三总线结构运算器中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连。三总线结构的运算器的特点是操作时间快。,下一页,上一页,4.5.6 运算器组成实例,最简单的运算器 下图示出的一个运算器只有三个逻辑部件:算术逻辑运算单元ALU、累加寄存器AC和数据缓冲寄存器DR。是最简单的运算器。,上一页,下一页,一台小型机的运算器,下页图示出了一台小型机的运算器逻辑方框图。该运算器的基本功能包括:两数的加减运算、一个数的加1运算、两数的逻辑加运算、一个数的变补、变反传送,以及数码的左移

44、、右移、直送和字节交换等操作。该运算器由以下几部分组成:算术逻辑运算单元ALU:由4片74181 ALU芯片和1片74182 CLA(Carry lookahead adder,先行进位加法器)芯片组成16位字长的运算部件,因而具有两级先行进位。锁存器:在ALU的两个输入端上有两个锁存器A和B,用来暂存来自外部设备或存储器(经数据总线)的数据,或者暂存来自通用寄存器(R0R7)和源寄存器、暂存寄存器中的数据。一旦数据放入锁存器,不管其外部的数据如何变化,ALU将依据锁存器A和B中的数据进行运算。,上一页,下一页,上一页,下一页,移位器 将ALU的输出进行左移、右移、直送、半字交换。因此这里的移

45、位器也是一个4选1的多路开关,每次只能从4路输入中选择1路进行输出。寄存器组 寄存器组包括8个可由程序编址的通用寄存器(R0R7)和两个程序不能访问的工作寄存器(源寄存器SR和暂存寄存器DR)。状态寄存器 运算器中设有一个状态寄存器,运算过程中产生的“进位”、“溢出”、“零、”“负”等状态标志可以保存在这个寄存器中,以供程序判断之用。状态寄存器的状态数据也可经由数据总线送到存储器加以保存。,下一页,上一页,4.6 浮点运算器,4.6.1 80387的主要性能4.6.2 80387的内部结构4.6.3 80387的硬件特性4.6.4 协处理器的工作方式,下一页,上一页,80387是在80287的

46、基础上扩展了三角函数的功能而制成的高性能的协处理器。它的主要特性如下:具有高性能的80位的体系结构。时钟频率较高,一般工作频率为16MHz,改进后可达20MHz。可执行IEEE754标准的浮点运算。能处理7种数据类型,这7种数据类型如下表所示。,下一页,4.6.1 80387的主要性能,上一页,可在386/486微机系统的实模式和保护模式两种模式下工作。扩展了80386/80486的硬件指令,80387的主要指令包括数据传送类指令的取数、存数、交换指令,算术运算类指令的加、减、乘、除、反减、反除、换算、求余、取整、变符号、取绝对值、开平方、分解实数等指令,比较类指令的比较、检测、测试指令,超越

47、函数(正切、反正切、2x-1、Ylog2(X+1)、Ylog2(X),常数(0、1、log102、loge2、log210、log2e),处理器控制类指令的取控制字、存控制字、存状态字、取环境、存环境、保护、恢复、允许中断、禁止中断、消除事故、初始化等指令,以及三角函数指令等。能检测出数据运算的6种错误:非法处理、非法操作数、零作除数、上溢、下溢和精度下降。,上一页,下一页,4.6.2 80387的内部结构,寄存器堆栈 寄存器堆栈中有8个80位的寄存器,这8个寄存器是一个整体,头尾相接,组成一个能容纳8个临时浮点数的先进后出的堆栈。8个寄存器的编号为07,处于栈顶的寄存器称为栈顶寄存器,其编号

48、由状态寄存器的TOP字段给出。在协处理器的指令中,用ST表示栈顶寄存器,而用ST(i)访问相对于栈顶寄存器的偏移量为i的寄存器。应注意i是相对于栈顶的偏移量,而不是8个寄存器中的实际编号。例如,当栈顶为0号寄存器时,寄存器正好用ST(1)ST(7)表示;而当栈顶为5号寄存器时,则ST(1)ST(7)分别表示寄存器6、7、0、1、2、3、4,如下页图所示。,上一页,下一页,寄存器栈顶的表示方法,上一页,下一页,上一页,下一页,上一页,下一页,上一页,下一页,4.6.3 80387的硬件特性,80387的硬件特性:80387采用1.5m的高速CHMOS工艺制作,有68个引脚,采用PGA封装,速度快

49、,功耗低。具有84位宽度的内部数据通路。操作分为三级,彼此互相独立。第一级是同系统总线的接口,第二级是数据接口和控制接口,第三级是浮点运算部件执行浮点运算。一次操作仅能执行一条指令。,上一页,下一页,80387与80386的连接 80387与80386的连接如下图所示。,上一页,下一页,4.6.4 协处理器的工作方式,80387的工作方式可以归纳为两点。80387以80386的外部设备工作 80387的指令(称为ESC指令)是由80386读取,再通过I/O端口传给80387。80387访问存储器,是由80386生成地址,进行读写,再通过I/O端口传给80387进行数据的输入和输出。80387与80386同步工作。80387接收到80386传送的指令后,就执行该指令,这时,80386不能再给80387新的指令。同步工作是靠80386的BUSY脚实现的。80387在执行指令期间,使BUSY置为低电平;80386检测到BUSY的低电平信号后,就暂不向 80387传送新的指令,等待BUSY变为高电平后,再传送。,上一页,下一页,第 4 章 结 束The End,谢谢!,上一页,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号