收藏 分享(赏)

计算机组成课件44737.ppt

上传人:weiwoduzun 文档编号:5300864 上传时间:2019-02-19 格式:PPT 页数:102 大小:1.65MB
下载 相关 举报
计算机组成课件44737.ppt_第1页
第1页 / 共102页
计算机组成课件44737.ppt_第2页
第2页 / 共102页
计算机组成课件44737.ppt_第3页
第3页 / 共102页
计算机组成课件44737.ppt_第4页
第4页 / 共102页
计算机组成课件44737.ppt_第5页
第5页 / 共102页
点击查看更多>>
资源描述

1、计算机组成原理,第4章 数值的机器运算,主要内容 4.1 基本算术运算的实现 4.2定点加减运算 4.3带符号数的移位和舍入操作 4.4定点乘法运算 4.5定点除法运算 4.6规格化浮点运算 4.7运算器的基本组成,4.1基本算术运算的实现,全加器 串行加法器与并行加法器 并行进位的并行加法器 4ALU举例,4.1.1全加器基本的加法单元称为全加器,实现两个1位二进制数相加。它要求三个输入量:操作数Ai和Bi、低位传来的进位Ci-1,并产生两个输出量:本位和Si、向高位的进位Ci。,1.全加器的真值表:,2.全加器的逻辑表达式为Si=AiBiCi-1Ci=AiBi+(AiBi)Ci-1,4.1

2、.2串行加法器与并行加法器1.在串行加法器中,只有一个全加器,数据逐位串行送入加法器进行运算。如果操作数长n位,加法就要分n次进行,每次只能产生一位和。,2.串行进位并行加法器 把n个全加器串接起来,就可进行两个n位数的相加。串行进位又称行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。其位数的多少取决于机器的字长,数据的各位同时运算。串行进位链的总延迟时间与字长成正比。,串行进位并行加法器虽然操作数的各位是同时提供的,但低位运算所产生的进位有可能会影响高位的运算结果。例如:1111和0001相加,最低位产生的进位将逐位影响至最高位。因此,并行加法器的最长运算时间主要是由进位

3、信号的传递时间决定的。提高并行加法器速度的关键是尽量加快进位产生和传递的速度。,4.1.3并行进位的并行加法器 并行进位又叫先行进位,其特点是各级进位信号同时形成。各进位信号的表达式如下:,C1=G1+P1C0 C2=G2+P2C1=G2+P2G1+P2P1C0,C3=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,Pi =(AiBi) 称为进位传递函数 Gi =AiBi称为进位产生函数,进位产生函数表示和如果同为1,则肯定会向高位产生进位 进位传递函数表示和中有一个为1,肯定会将地位的进位Ci-1传递上去,上述各式中

4、所有各位的进位均不依赖于低位的进位,各位的进位可以同时产生。利用先行进位部件产生进位信号。,4.1.4分组并行进位方式,随着加法器位数的增加,Ci的逻辑表达式会变得越来越复杂。所以,完全采用并行进位是不现实的。通常采用分组并行进位方式。这种进位方式是把n位字长分为若干小组,在组内各位之间实行并行快速进位,在组间既可以采用串行进位方式,也可以采用并行快速进位方式。,(1)单级先行进位方式 组内并行、组间串行方式。 以16位加法器为例,可分为四组,每组四位。第1小组组内的进位逻辑函数C1、C2、C3、C4的表达式与前述相同,C1C4信号是同时产生的,从C0出现到产生C1C4的延迟时间是2ty。,8

5、,=G1*+P1*C0,(2)多级先行进位方式 组内并行、组间并行进位方式。字长为16位的两级先行进位加法器,第一小组的最高位进位C4:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,组进位 产生函数G1*,组进位 传递函数P1*,依次类推:C8=G2*+P2*G1*+P2*P1*C0C12=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*C0,CLA电路为实现进位逻辑函数的电路,若不考虑Gi、Pi的形成时间,C0经过2ty产生第1小组的C1、C

6、2、C3及所有组进位产生函数Gi*和组进位传递函数Pi*;再经过2ty,产生C4、C8、C12、C16;最后经过2ty后,才能产生第2、3、4小组内的C5C7、C9C11、C13C15。,基本算术运算的实现电路,四位CLA加法器,四位BCLA加法器,4.1.5 ALU举例 74181是四位算术逻辑运算部件,能执行16种算术运算和16种逻辑运算。A0、B0A3、B3:操作数输入端;F0F3:输出端;Cn:进位输入端;Cn+4:进位输出端;G* :组进位产生函数输出端;P*:组进位传递函数输出端; M:工作方式,M=0为算术操作,M=1为逻辑操作;S0S3:功能选择线。74181的4位作为一个小组

7、,组间既可以采用串行进位,也可以采用并行进位。当采用组间串行进位时,只要把前片的Cn+4与下一片的Cn相连即可。 当采用组间并行进位时,需要增加一片先行进位部件(74182)。 74181和74182的结合可组成各种位数的ALU部件。,构造16位ALU,用4片74181电路可组成16位ALU。 方案1:如图:片内进位是快速的,但片间进位是逐片传递的,因此形成F0F15的时间还是比较长。,图: 16位快速ALU,方案2:16位快速ALU 片间超前进位产生电路,又称超前进位扩展器。 例如74182,4.2 定点加减运算器,4.2.1 原码加减运算 符号位不参与运算 两数的绝对值加或者减 实现复杂(

8、需要一套加法电路和一套减法电路) 例如:两异号数相加,实际要做减法,4.2.2补码加减运算,1.补码加法规则 根据补码定义可以证明: X+Y补=X补+Y补 两数和的补码等于两数补码之和 2.补码减法规则X-Y补=X+(-Y)补=X补+-Y补-Y补叫Y的机器负数,3.计算机中补码加减运算规则 参加运算的两个操作数均用补码表示; 符号位作为数的一部分参加运算; 若做加法,则两数直接相加;若做减法,则将被减数与减数的机器负数相加; 运算结果用补码表示。 一套加法电路和求补电路,4.已知Y补求-Y补的方法是 将Y补连同符号位一起求反,末尾加“1” 例1:Y=-0.0110Y补=1.1010,-Y补=0

9、.0110 例2:Y=0.0110Y补=0.0110,-Y补=1.1010,5.补码加减运算举例 例1:A=0.1011,B=-0.1110,求:A+BA补=0.1011,B补=1.00100.1011+ 1.00101.1101 A+B补=1.1101,A+B=-0.0011,例2:A=0.1011,B=-0.0010,求:A-BA补=0.1011,B补=1.1110,-B补=0.00100.1011 + 0.00100.1101 A-B补=0.1101, A-B=0.1101,4.2.3溢出的产生和判断在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为1(结果为负);

10、两个负数相加,而结果的符号位却为0(结果为正)。例1:设:X=1011B=11D,Y=111B=7DX补=0,1011,Y补=0,0111X+Y补=1,0010,X+Y=-1110B=-14D两正数相加结果为-14D,显然是错误的。,0,1 0 1 1,+ 0,0 1 1 1,1,0 0 1 0,例2:设:X=-1011B=-11D,Y=-111B=-7DX补=1,0101 Y补=1,1001X+Y补=0,1110,X+Y=1110B=14D两负数相加结果为14D,显然也是错误的。,1,0 1 0 1,+ 1,1 0 0 1,0,1 1 1 0,为什么会发生这种错误呢?原因在于两数相加之和的数

11、值已超过了机器允许的表示范围。字长为n+1位的定点整数(其中一位为符号位),采用补码表示,当运算结果大于2n-1或小于-2n时,就产生溢出。,当采用补码加减运算时,由于只做做加法运算,则参加运算的两数为X、Y, 若X、Y异号,(两个异号数相加)不会溢出。 若X、Y同号,可能产生溢出。 同为正,则运算结果可能大于所能表示的最大正数,则产生溢出,称为正溢 同为负数,运算结果可能小于所能表示的最小负数时,产生溢出,称为负溢。,溢出检测方法设:被操作数为:X补=Xs,X1X2Xn操作数为:Y补=Ys,Y1Y2Yn其和(差)为:S补=Ss,S1S2Sn 利用用符号位判断当Xs=Ys=0,Ss=1时,产生

12、正溢。当Xs=Ys=1,Ss=0时,产生负溢。, 采用进位位判断溢出两数运算时,符号位产生的进位Cf和最高数值位产生的进位C1不相同时,产生溢出,如图所示:单符号位补码加法及溢出检测, 采用变形补码(双符号位补码)时的溢出检测 采用双符号位补码时,左边的符号位Sf1代表该数真正的符号 两个符号位都作为数的一部分参加运算。 可以证明:Sf1Sf2=00 结果为正数,无溢出Sf1Sf2=01 结果正溢Sf1Sf2=10 结果负溢Sf1Sf2=11 结果为负数,无溢出 当两位符号位的值不一致时,表明产生溢出。溢出=Sf1Sf2,如图所示:双符号数溢出检测,例:4位补码数的表示范围为-1615,采用变

13、形补码(双符号位)运算,则有:11+7=18(正溢) 0 0,1 0 1 1+ 0 0,0 1 1 1,0 1,0 0 1 0,-11+(-7)=-18(负溢) 1 1,0 1 0 1+ 1 1,1 0 0 1,1 0,1 1 1 0,补码加减法规则,1、 X补,Y补,-Y补 2、 X+Y补=X补+ Y补X-Y补=X补+ -Y补 竖式求和 3、写结果X+Y补=/ X-Y补= 或 结果发生溢出 4、验证(二选一) (1)正确性验证 Z1 = X+Y ;真值求和 由第三步求得的 X+Y补,计算X+Y=Z2(真值) 由于Z1和Z2相等,结果正确 (2)异常验证 根据判溢出规则判断是否溢出,例:字长N

14、=5,X=+13,Y=-11,求X+Y, X-Y。 1、求机器数 X补= +13补= +1101B补=01101B Y补= -11补= -1011B补=10101B -Y补=01011B2、求X+Y00 1101+ 11 010100 0010 3、 X+Y补=00010B 4、 Z1 =X+Y=+13+(-11)=+2X+Y补=00010BX+Y=+0010B=+2= Z2Z1 = Z2,结果正确,求X-Y: 2、 00 1101+ 00 101101 1000 3、两个符号位不同,结果发生溢出 4、Z =X-Y=+13-(-11)=+24 字长为5,补码表示数的范围是-16-+15+24+

15、15,结果发生正溢出,4.2.4补码定点加减法的实现电路补码加法:图中X、Y代表两个寄存器,F代表多位并行加法器。由控制信号XF、YF、FX、CPX控制数据的传送。,加法时: 1F无效(为0),补码减法:XF、YF、1F、FX、CPX,FX,CPX,1F,同一套电路实现加减运算,减法时:1F有效(为1),4.3带符号数移位和舍入操作,4.3.1带符号数移位和舍入操作二进制数左移一位使数值增大一倍,相当于该数乘以2,而右移一位则使数值缩小一倍,相当于该数除以2。,1.移位规则 原码:无论正负,保持符号位不变,空出位补0 例如:负数的原码移位后的空出位补0,补码: 左移:保持符号位不变,空出位补0

16、 右移:保持符号位不变,空出位补符号位。,2. 移位功能的实现计算机中, 移位操作通常由移位寄存器来实现。 移位寄存器:除了具有寄存信息的功能外,还具有移位功能,在移位脉冲的作用下,能够把寄存器中代码依次向右或向左移动。,4.3.2 带符号数的舍入操作在算术右移中,运算结果有可能需要舍去一定的尾数,会造成一些误差。为了缩小误差,就要进行舍入处理。 1.恒舍(切断) 无论移出部分为何代码,一律舍去,保留部分不作任何改变。 2.恒置1法 不论移出多余部分为何代码,都把剩余部分的最低位置1。3. 0舍1入法 用将要舍去的q位部分的最高位作为判断标志,如该位为0,则舍去整个q位部分,如该位为1,则在前

17、面的p位部分的最低位上加1。,4.查表舍入法用ROM存放下溢处理表,每次经查表来读得相应的处理结果。ROM表的容量为2K个单元,每个单元字长为K-1位。下溢处理表的内容设置一般采用的方法是:当K位数据的高K-1位为全“1”时,让那些单元按截断法填入K-1位全“1”,其余单元都按最低位(即附加位)0舍1入的结果来填其内容。,地址 内容 000 00 001 01 010 01 011 10 100 10 101 1111 111 11,截断法 将尾数超出机器字长的那部分简单截掉。 最大误差:整数时接近1,分数时接近2-m。 对于正数总存在负误差。 截断误差均匀分布。 统计平均误差为负且较大,无法

18、调节 实现最简单,不增加硬件,不需要处理时间 最大误差较大,平均误差大且不能调节。目前很少用。 舍人法 在机器运算部分规定字长之外,再增设一位附加位存放溢出部分的最高位,每当尾数下溢处理时,将附加位加1,再截取规定字长部分作为处理后的结果。 最大误差:整数时0.5,分数时2-(m+1)。 对于正数误差有正有负。 统计平均误差趋于零但略偏正。 平均误差无法调节 实现简单,增加硬件很少,最大误差小,平均误差接近于零 处理速度慢。在中低速机器上或者要求精度损失尽可能小的场合下使用较多。 恒置“1”法 让机器运算器规定字长的最低位恒为“1”状态 最大误差:整数时1,分数时2-m。 对于正数误差有正有负

19、。 统计平均误差接近零但略偏正。 平均误差无法调节 实现最简单,不增加硬件,不需要处理时间,平均误差接近于零 最大误差最大。多用于中、高速机器(增长尾数)。 查表舍入法 用ROM或PLA芯片存放下溢处理结果表,每次经查表来读得相应的处理结果。当尾数最低k-1位全“1”时以截取法设置,其余情况按舍入法设置。 速度较快,平均误差可调节到零 硬件量大 上述4种处理方法中,最大误差最大的是恒置“1”法,最小的是舍人法;平均误差最大的是截断法;平均误差可人为调节的是查表舍入法;下溢处理不需要附加时间开销,即速度最快的是截断法和恒置“1”法,处理速度最慢的是舍人法;实现上最花费硬件的是查表舍入法,最省硬件

20、的是截断法和恒置“1”法。,4.4定点乘法运算,4.4.1原码一位乘法用原码实现乘法运算是十分方便的。用两个操作数的绝对值相乘乘积的符号为两操作数符号的异或值(同号为正,异号为负)。即:乘积 P|X|Y|符号Ps=XsYs,0.1 1 0 10.1 0 1 1,1 1 0 11 1 0 10 0 0 0+ 1 1 0 1,0.1 0 0 0 1 1 1 1因为Ps=XsYs=01=1所以XY=-0.10001111,1.手算乘法 例如: X=0.1101, Y=-0.1011,,2.手工乘法存在的问题 多个数同时相加机器很难实现 加法器位数是操作数位数的两倍,3.机器原码一位乘法的规则为:(部

21、分积右移) 符号位单独处理,同号为正,异号为负; 部分积初值为0,令乘数的最低位为判断位,若为“1”,加被乘数,若为“0”,不加被乘数(加0); 累加后的部分积右移一位。(需保存)循环上述过程,4.实现: 乘法运算需要三个寄存器: A寄存器:存放部分积与最后乘积的高位部分,初值为0。 B寄存器:被乘数X。 C寄存器:乘数Y,运算后C寄存器中不再需要保留乘数,改为存放乘积的低位部分。还需要进行移位次数控制 部分积右移时,部分积和乘数两个寄存器串联移位。,流程图,例: 已知:X=0.1101,Y=-0.1011,求:XY。|X|=0.1101B,|Y|=0.1011C,0A 符号位不参加运算A、C

22、寄存器级联,右移。PS=XSYS=01=1 XY=-0.10001111,运算过程,4.4.2 补码一位乘法 比较法(Booth法)设:被乘数X补=Xs.X1X2Xn乘数Y补=Ys.Y1Y2Yn,Booth乘法规则如下: 参加运算的数用补码表示; 符号位参加运算; 在乘数的最低位之后增加一位附加位Yn+1,它的初值为0。 每次运算由乘数相邻两位Yn、Yn+1(称为判断位)的值决定每次应执行的操作;,判断位Yn Yn+1 操 作0 0 原部分积加0右移一位0 1 原部分积加X补后右移一位1 0 原部分积加-X补后右移一位1 1 原部分积加0右移一位 移位按补码右移规则进行; 共需做n+1次累加,

23、n次移位。(最后一次不移位),流程图:,例:已知X=-0.1101,Y=0.1011;求XY。X补=1.0011B,Y补=0.1011C,0A-X补=0.1101 需进行5次累加,4次移位,如图所示: XY补=1.01110001 X Y=-0.10001111,A C 附加位 说明,0 0.0 0 0 0 0.1 0 1 1 0,+-X补 0 0.1 1 0 1 C4C5=10,+-X补,0 0.1 1 0 1, 0 0.0 1 1 0 1 0 1 0 1 1 部分积右移一位,+0 0 0.0 0 0 0 C4C5=11,+0,0 0.0 1 1 0, 0 0.0 0 1 1 0 1 0 1

24、 0 1 部分积右移一位,+X补 1 1.0 0 1 1 C4C5=01,+X补,1 1.0 1 1 0, 1 1.1 0 1 1 0 0 1 0 1 0 部分积右移一位,+-X补 0 0.1 1 0 1 C4C5=10,+-X补,0 0.1 0 0 0, 0 0.0 1 0 0 0 0 0 1 0 1 部分积右移一位,+X补 1 1.0 0 1 1 C4C5=01,+X补,1 1.0 1 1 1,为了进一步提高乘法运算的速度,可采用高速乘法模块组成的阵列乘法器。可同时得到各项部分积,并一次将其相加就得到乘积。,例:m=n=4时,有:x4 x3 x2 x1 x0* y4 y3 y2 y1 y0

25、-X4y0 x3y0 x2y0 x1y0 x0y0 X4y1 x3y1 x2y1 x1y1 x0y1X4y2 x3y2 x2y2 x1y2 x0y2X4y3 x3y3 x2y3 x1y3 x0y3 X4y4 x3y4 x2y4 x1y4 x0y4,P8 P7 P6 P5 P4 P3 P2 P1 P0,内部结构:,4.5 定点除法 1.手工除法计算XY:X=0.1011,Y=0.1101,0.1 1 0 1 商 0.1 1 0 1 0.1 0 1 1 01 1 0 11 0 0 1 01 1 0 11 0 1 0 01 1 0 11 1 1 余数XY=商+ =0.1101+0.01112-4/0

26、.1101,余数,除数,除法实际是从被除数中不断的减除数,商即为被除数中包含除数的个数。 对于二进制除法,够减则商1,否则商0,计算得新的余数后,末位加一个0 然后除数缩小一个数量级(右移1位 )与新余数继续比较,上商。此时商缩小一个数量级。,2. 原码一位恢复余数法恢复余数法是人工除法的改进。改除数右移为余数左移。 (1)直接作减法试探X-Y,通过X+(-Y)补 (2)若余数为正,表示够减,该位商上“1” ; 若余数为负,表示不够减,该位商上“0”,并要恢复原来的被除数(或余数)。即在余数上加上Y; (3)余数左移一位 (4)重复 参见课本例3.38,3. 原码不恢复余数法(原码加减交替法)

27、,分析原码一位恢复余数除法过程,设第i步的余数为Ri(减法试探的结果),则: 当Ri0时:上商1,左移一位,然后减|除数|,结果作为下次上商的依据(新余数)即2*Ri+- |Y|补 当Ri0时:上商0,恢复余数Ri+ |Y|补,左移一位后减|除数|,即:2*(Ri+ |Y|补)+- |Y|补=2* Ri+2* |Y|补+- |Y|补=2* Ri+ |Y|补 所以,不恢复余数,前一次商1,求新余数时+- |Y|补 前一次商0,求新余数时+ |Y|补,原码不恢复余数法是对恢复余数法的一种改进。 第一步: |X|+-|Y| 补 第二步:余数为正,商0,左移, +|Y|补余数为负,商1,左移, +-|

28、Y|补 重复第二步。 注意: 若除数n位,不含符号,则进行n+1次判断和上商,最后一次不移位。 当最终余数为负数时,必须恢复一次余数,使之变为真余数,例:已知:X=0.10101,Y=-0.11110,求:XY。|X|=0.10101A,|Y|=0.11110B,0C|Y|变补=1.00010 经过原码加减交替除法,有: 商=0.10110 余数=0.011002-5 XY=-(0.10110+ ),A C 说明,0 0.1 0 1 0 1 0.0 0 0 0 0,+-|Y|补 1 1.0 0 0 1 0 -|Y|,1 1.1 0 1 1 1 0.0 0 0 0 0 余数为负,商0, 1 1.

29、0 1 1 1 0 左移一位,+|Y| 0 0.1 1 1 1 0 +|Y|,0 0.0 1 1 0 0 0.0 0 0 0 1 余数为正,商1, 0 0.1 1 0 0 0 左移一位,+-|Y|补 1 1.0 0 0 1 0 -|Y|,1 1.1 1 0 1 0 0.0 0 0 1 0 余数为负,商0, 1 1.1 0 1 0 0 左移一位,+|Y| 0 0.1 1 1 1 0 +|Y|,0 0.1 0 0 1 0 0.0 0 1 0 1 余数为正,商1, 0 1.0 0 1 0 0 左移一位,+-|Y|补 1 1.0 0 0 1 0 -|Y|,0 0.0 0 1 1 0 0.0 1 0 1

30、 1 余数为正,商1, 0 0.0 1 1 0 0 左移一位,+-|Y|补 1 1.0 0 0 1 0 -|Y|,1 1.0 1 1 1 0 0.1 0 1 1 0 余数为负,商0,+|Y| 0 0.1 1 1 1 0 恢复余数,+|Y|,0 0.0 1 1 0 0,计算过程,4.6 规格化浮点数运算方法,4.6.1规格化浮点数的尾数M应满足:1/2|M|1设尾数用双符号位补码表示。则以下为规格化表示: 00.1 x x x 11.0 x x x,4.6.2 移码表示 移码相当于X在数轴上向正方向偏移了若干单位即:移码=偏置值+真值 对于字长为n的计算机,若最高位为符号位,数值为n1位,当偏移

31、量取2 n-1时,其移码就是在补码的基础上对于符号位取反。移码常用于浮点数中的阶码表示。,移码计算举例: (1)写出X移=10111101和Y移=00101011所代表的实际值。 (2)说明移码的使用场合。 (3)计算二移码数的和、差。 解:x移=10111101=(00111101)补 x=(0111101) 2=(61)10 或:10111101-10000000=0 0111101y移=00101011=(10101011) 补 y=(-1010101) 2=(-85)10,x移+y移=10111101+00101011=11101000 对运算结果要加27进行修正得01101000,即

32、十进制-24 x移+-y移=10111101+11010101=10010010 对运算结果要加27进行修正得00010010 发生了溢出,4.6.3浮点加减运算设两个非0的规格化浮点数分别为A=MA2EAB=MB2EB 运算步骤: 1.对阶两个浮点数相加或相减,首先要把小数点的位置对齐,而浮点数的小数点的实际位置取决于阶码的大小。因此,对齐两数的小数点,就是使两数的阶码相等,这个过程称为对阶。 对阶的规则是:小阶向大阶看齐。,首先应求出两数阶码EA和EB之差,即:E=EA-EB当EAEB时,要通过尾数的移位来使EA=EB相等。要使小阶的阶码增大,则相应的尾数右移,直到两数的阶码相等为止。对于

33、r=2,每右移一位,阶码加1。 尾数右移后,应对尾数进行舍入。 2.尾数加/减对阶之后,就可以进行尾数加/减,即MAMBMC,3.尾数结果规格化尾数加/减运算之后得到的数可能不是规格化数,必须进行结果规格化操作。 设尾数用双符号位补码表示,经过加/减运算之后,可能出现以下六种情况:, 00.1 x x x 11.0 x x x 00.0 x x x 11.1 x x x 01.x x x x 10.x x x x,第、种情况,已是规格化数。 第、种情况需要使尾数左移以实现规格化,这个过程称为左规。尾数每左移一位,阶码相应减1(EC-1EC),直至成为规格化数为止。(左规可能需进行多次)第、种情

34、况应将尾数右移一次以实现规格化。这个过程称为右规。尾数每右移一位,阶码相应加1(EC+1EC)。,4.舍入 右规或对阶时尾数低位上的数值会移掉,使数值精度受影响,应该进行舍入处理减少误差 “0”舍“1”入法:当移掉的最高位为1时,在尾数的末位加1 恒置一法:,5.检查阶码是否溢出 阶码下溢,则置结果为机器零。 若上溢,则置溢出标志。 什么是机器0? 当一个浮点数的尾数为0(不论阶码是何值),或阶码的值比能在机器中表示的最小值还小时,计算机都把该浮点数看成零值,称为机器零。,例:有两浮点数为A=0.1011102-01B=-(0.101011)2-10假设这两数的格式:阶码4位,用移码表示;尾数

35、8位,用补码表示,包含一位符号位,即,A浮=0111;0;1011100B浮=0110;1;0101010, 对阶求阶差:E=EA-EB=-1-(-2)=1E=1,表示EAEB。按对阶规则,将MB右移一位,其阶码加1,得:B浮=0111;1;1010101 尾数求和00.1011100+ 11.1010101,00.0110001, 尾数结果规格化及判溢出由于结果的尾数是非规格化的数,故应左规。尾数每左移一位,阶码减1,直至尾数成为规格化数为止。A+B尾补=00.0110001A+B尾补 =00.11000102-1最后结果为A+B浮 =0110;0;1100010A+B=(0.110001)

36、2-10,4.6.4 浮点乘除运算设两个非0的规格化浮点数分别为A=MA2EAB=MB2EB 则浮点乘法和除法为AB=(MAMB)2(EA+EB)AB=(MAMB)2(EA-EB),1.乘法步骤 阶码相加两个浮点数的阶码相加,当阶码用移码表示的时候,应注意要减去一个偏置值2n。因为EA移=2n+EA,EB移=2n+EBEA+EB移=2n+(EA+EB)而EA移+EB移=2n+EA+2n+EB显然,此时阶码和中多余了一个偏移量2n,应将它减去。另外,阶码相加后有可能产生溢出,此时应另作处理。,尾数相乘与定点小数乘法算法相同。 尾数结果规格化,2.除法步骤 尾数调整首先须要检测|MA|MB|。如果

37、不小于,则MA右移一位,EA+1EA,称为尾数调整。因为A、B都是规格化数,所以最多调整一次。 阶码相减两浮点数的阶码相减,当阶码用移码表示时,应注意要加上一个偏移量2n。 尾数相除与定点小数除法算法相同。,4.9运算器的基本组成,4.9.1定点运算部件基本组成 算术逻辑运算部件ALU:实现基本算术、逻辑运算 若干个寄存器:暂存操作数与结果 移位电路 计数器、门电路等控制电路 有关判别逻辑,实例,(1)带多路选择器的运算器,(2)带输入锁存器的运算器,4.9.2 运算器的内部总线结构,(1)单总线结构运算器运算器实现一次双操作数的运算需要分成三步。 (2)双总线结构运算器运算器实现一次双操作数的运算需要两步。,(3)三总线结构运算器实现一次双操作数的运算仅需要一步。,当采用组间并行进位时,需要增加一片先行进位部件(74182)。,4.9.3 ALU举例,4.9.4浮点运算部件 阶码运算部件:仅执行加减法运算 尾数运算部件:执行加减乘除运算,左规时有时需要左移多位。为加速移位过程,有的机器设置了可移动多位的电路。,

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

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报