欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    计算机组成原理第4章数值的机器运算(终).ppt

    • 资源ID:6023940       资源大小:1.11MB        全文页数:150页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机组成原理第4章数值的机器运算(终).ppt

    1,第4章数值的机器运算,2,运算器是计算机进行算术运算和逻辑运算的主要部件,运算器的逻辑结构取决于机器的指令系统、数据表示方法和运算方法等。本章主要讨论数值数据在计算机中实现算术运算和逻辑运算的方法,以及运算部件的基本结构和工作原理。,3,本章学习内容,4.1 基本算术运算的实现4.2 定点加减运算4.3 带符号数的移位和舍入操作4.4 定点乘法运算4.5 定点除法运算4.6 规格化浮点运算4.7 十进制整数的加法运算4.8 逻辑运算与实现4.9 运算器的基本组成与实例,4,本章学习要求,掌握:定点补码加法和减法运算方法理解:3种溢出检测方法理解:补码移位运算和常见的舍入操作方法了解:串行加法器与并行加法器理解:进位产生和进位传递掌握:定点原码、补码乘法运算方法掌握:定点原码、补码加减交替除法运算方法理解:浮点加减乘除运算理解:逻辑运算了解:运算器的基本结构及浮点协处理器,5,4.1 基本算术运算的实现,计算机中最基本的算术运算是加法运算,不论加、减、乘、除运算最终都可以归结为加法运算。所以在此讨论最基本的运算部件加法器,以及并行加法器的进位问题。,6,4.1.1 加法器,1.全加器 全加器(FA)是最基本的加法单元,它有三个输入量:操作数Ai和Bi、低位传来的进位Ci-1,两个输出量:本位和Si、向高位的进位Ci。图4-1 全加器的逻辑框图,7,全加器真值表,8,根据真值表,可得到全加器的逻辑表达式为:Si=AiBiCi-1 Ci=AiBi+(AiBi)Ci-1,全加器的逻辑表达式,9,2.串行加法器与并行加法器,加法器有串行和并行之分:在串行加法器中,只有一个全加器,数据逐位串行送入加法器进行运算;在并行加法器中,由多个全加器组成,其位数的多少取决于机器的字长,数据的各位同时运算。,10,串行加法器具有器件少、成本低的优点,但运算速度太慢,所以除去某些低速的专用运算器外很少采用,全加器,串行加法器,2.串行加法器与并行加法器,ai,bi,si,ci,Ci-1,11,2.串行加法器与并行加法器(续),并行加法器可同时对数据的各位相加,但存在着一个加法的最长运算时间问题。这是因为虽然操作数的各位是同时提供的,但低位运算所产生的进位会影响高位的运算结果。例如:1111和0001相加,最低位产生的进位将逐位影响至最高位,因此,并行加法器的最长运算时间主要是由进位信号的传递时间决定的,而每个全加器本身的求和延迟只是次要因素。很明显,提高并行加法器速度的关键是尽量加快进位产生和传递的速度。,12,并行加法器中的每一个全加器都有一个从低位送来的进位输入和一个传送给高位的进位输出。我们将传递进位信号的逻辑线路连接起来构成的进位网络称为进位链。每一位的进位表达式为:Ci=AiBi+(AiBi)Ci-1 其中:Gi=AiBi为进位产生函数 Pi=AiBi为进位传递函数 进位表达式Ci=Gi+PiCi-1,4.1.2 进位的产生和传递,13,C1=G1+P1C0C2=G2+P2C1 Cn=Gn+PnCn-1,串行进位的并行加法器,图4-3 串行进位的并行加法器,串行进位的并行加法器,总的延迟时间正比于字长,字长越长,总延迟时间也越长。若一位进位需2ty时间,完成n位进位就需要2nty.要提高加法运算速度,必须改进进位方式。,14,1.并行进位方式 并行进位又叫先行进位、同时进位,其特点是各级进位信号同时形成。C1=G1+PC0 C2=G2+P2C1=G2+P2G1+P2P1C0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,4.1.3 并行加法器的快速进位,以上进位输出只与Gi、Pi以及最低进位C0有关,且不依赖于其低位进位Ci-1的输入,因此各级进位可以同时产生,形成并行进位。,15,优点:这种进位方式是快速的,若不考虑Gi、Pi的形成时间,从C0Cn的最长延迟时间仅为2ty,而与字长无关。缺点:但是随着加法器位数的增加,Ci的逻辑表达式会变得越来越长,输入变量会越来越多,这会使电路结构变得很复杂,所以完全采用并行进位是不现实的。,1.并行进位方式(续),16,单级先行进位方式(组内并行、组间串行)以16位加法器为例,可分为4组,每组4位。第一小组组内的进位逻辑函数C1、C2、C3、C4的表达式与前述相同,它们是同时产生的,实现上述进位逻辑函数的电路称之为4位先行进位电路CLA,其延迟时间是2ty。利用这种4位的CLA电路以及进位产生/传递电路和求和电路可以构成4位的CLA加法器。用4个这样的CLA加法器,很容易构成16位的单级先行进位加法器。,2.分组并行进位方式,17,16位单级先行进位加法器,图4-4 16位单级先行进位加法器,组数越长,进位延迟时间就越长,18,16位单级先行进位时间图,图4-5 16位单级先行进位时间图,19,多级先行进位方式(组内并行、组间并行)仍以字长为16位的加法器作为例子,分析两级先行进位加法器的设计方法。第一小组的进位输出C4可以变成两个与项相或:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0=G1*+P1*C0 其中:G1*=G4+P4G3+P4P3G2+P4P3P2G1 P1*=P4P3P2P1 Gi*称为组进位产生函数 Pi*称为组进位传递函数,2.分组并行进位方式(续),20,依次类推,可以得到:C8=G2*+P2*C4=G2*+P2*G1*+P2*P1*C0 C12=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,2.分组并行进位方式(续),21,成组先行进位电路BCLA,其延迟时间是2ty。利用这种4位的BCLA电路以及进位产生/传递电路和求和电路可以构成4位的BCLA加法器。16位的两级先行进位加法器可由4个BCLA加法器和1个CLA电路组成。,2.分组并行进位方式(续),22,16位两级先行进位加法器,图4-6 16位两级先行进位加法器,23,若不考虑Gi、Pi的形成时间,C0经过2ty产生第一小组的C1、C2、C3及所有组进位产生函数Gi*和组进位传递函数Pi*;再经过2ty,由CLA电路产生C4、C8、C12、C16;再经过2ty后,才能产生第二、三、四小组内的C5C7、C9C11、C13C15。此时加法器的最长进位延迟时间是6ty。,2.分组并行进位方式(续),24,16位两级先行进位时间图,图4-7 16位两级先行进位时间图,25,定点数的加减运算包括原码、补码和反码3种带符号数的加减运算,其中补码加减运算实现起来最方便。,4.2 定点加减运算,26,原码加减运算规则:参加运算的操作数取其绝对值;若做加法,则两数直接相加,若做减法,则将减数先变一次补,再进行加法运算;运算之后,可能有两种情况:有进位,结果为正,即得到正确的结果。无进位,结果为负,则应再变一次补,才能得到正确的结果。结果加上符号位。通常,把运算之前的变补称为前变补,运算之后的变补称为后变补。,4.2.1 原码加减运算,27,4.2.2 补码加减运算,1.补码加法 两个补码表示的数相加,符号位参加运算,且两数和的补码等于两数补码之和,即:X+Y补=X补+Y补证明P94,28,根据补码加法公式可推出:X-Y补=X+(-Y)补=X补+-Y补 从补码减法公式可以看出,只要求得-Y补,就可以变减法为加法。不管Y的真值为正或为负,已知Y补求-Y补的方法是:将Y补连同符号位一起求反,末尾加“1”。-Y补被称为Y补的机器负数,由Y补求-Y补的过程称为对Y补变补(求补),表示为-Y补=Y补变补,2.补码减法,29,2.补码减法(续),“某数的补码表示”与“变补”是两个不同的概念。一个负数由原码转换成补码时,符号位是不变的,仅对数值位各位变反,末位加“1”。变补则不论这个数的真值是正是负,一律连同符号位一起变反,末位加“1”。Y补表示的真值如果是正数,则变补后-Y补所表示的真值变为负数,反之亦然。例1:Y=-0.0110,Y原=1.0110,Y补=1.1010,-Y补=0.0110 例2:Y=0.0110,Y原=0.0110,Y补=0.0110,-Y补=1.1010,30,参加运算的两个操作数均用补码表示;符号位作为数的一部分参加运算;若做加法,则两数直接相加,若做减法,则将被减数与减数的机器负数相加;运算结果仍用补码表示。,3.补码加减运算规则,31,例3:A=0.1011,B=-0.1110,求A+B A补=0.1011 B补=1.0010 0.1011 A补+1.0010 B补 1.1101 A+B补 A+B补=1.1101 A+B=-0.0011,补码加法示例,32,例4:A=0.1011,B=-0.0010,求A-B A补=0.1011 B补=1.1110-B补=0.0010 0.1011 A补+0.0010-B补 0.1101 A-B补 A-B补=0.1101 A-B=0.1101,补码减法示例,33,练习:P1364-4-24-5-3,4-4-2:00.001104-5-3:01.01110 正溢,34,4.2.3 补码的溢出判断与检测方法,1.溢出的产生 在补码运算中,若两个正数相加,而结果为负;两个负数相加,而结果为正,则结果出错。例5:设:X=1011B=11D,Y=111B=7D 则 X补=0,1011,Y补=0,0111 0,1 0 1 1X补+0,0 1 1 1Y补 1,0 0 1 0X+Y补 X+Y补=1,0010 X+Y=-1110B=-14D 两正数相加结果为-14D,显然是错误的。,35,1.溢出的产生(续),例6:设:X=-1011B=-11D,Y=-111B=-7D 则 X补=1,0101 Y补=1,1001 1,0 1 0 1X补+1,1 0 0 1Y补 0,1 1 1 0X+Y补 X+Y补=0,1110 X+Y=1110B=14D 两负数相加结果为14D,显然也是错误的。,原因在于两数相加之和的数值 已经超过了机器允许表示的范围。,36,1.溢出的产生(续),字长为n+1位的定点整数(其中一位为符号位),采用补码表示,当运算结果大于2n-1或小于-2n时,就产生溢出。当运算结果超出了机器所能表示的范围时,数值位侵占了符号位,这种现象称为溢出。两个同符号的数相加会产生溢出。两个正数相加,结果大于机器所能表示的最大正数,称为上溢(正溢)。两个负数相加,结果小于机器所能表示的最小负数,称为下溢(负溢)。,37,2.溢出检测方法,设:被操作数为:X补=Xs,X1X2Xn 操作数为:Y补=Ys,Y1Y2Yn 其和(差)为:S补=Ss,S1S2Sn 采用一个符号位 采用一个符号位检测溢出时,当Xs=Ys=0,Ss=1时,产生正溢;当Xs=Ys=1,Ss=0时,产生负溢。溢出判断条件为 溢出=Ss+Xs Ys,38,2.溢出检测方法(续),采用进位位判断 两数运算时,产生的进位为 Cs,C1C2Cn,其中:Cs为符号位产生的进位,C1为最高数值位产生的进位。两正数相加,当最高有效位产生进位(C1=1)而符号位不产生进位(Cs=0)时,发生正溢;两负数相加,当最高有效位不产生进位(C1=0)而符号位产生进位(Cs=1)时,发生负溢。故溢出条件为 溢出=C1+Cs=CsC1,39,2.溢出检测方法(续),采用变形补码(双符号位补码)在双符号位的情况下,把左边的符号位Ss1叫做真符,两个符号位都作为数的一部分参加运算。这种编码又称为变形补码。双符号位的含义如下:Ss1Ss2=00 结果为正数,无溢出 Ss1Ss2=01 结果正溢 Ss1Ss2=10 结果负溢 Ss1Ss2=11 结果为负数,无溢出 当两位符号位的值不一致时,表明产生溢出,溢出条件为 溢出=Ss1Ss2,40,4.2.4 补码定点加减运算的实现,要实现补码加法,则需给出XF、YF和FX三个控制信号,同时打开门A、门B和门C,把寄存器X和寄存器Y的内容送入加法器的两个输入端进行加法运算,并把结果送回,最后由打入脉冲CPX打入寄存器X。减法与加法的不同之处在于,加法使用YF控制信号,减法使用 F和1F控制信号,其余控制信号相同。,41,补码加减运算的逻辑电路,图4-8 补码加减运算器框图,1,F-多位的并行加法器,接受参加运算的两个数,进行加法运算,并在输出端给出本次运算结果,寄存器X的打入脉冲,补码加法:在XF、YF、FX三个控制信号的控制下,打开门A、门B和门C,把寄存器X和寄存器Y的内容送入加法器的两个输入端进行加法运算,把结果送回寄存器X中.补码减法:与补码加法不同之处在于要用YF来代替YF、并在1F控制信号作用下使结果加1,即可完成补码减法运算。,42,在计算机中,实现乘除运算的方案通常有3种:软件实现。在低档微机中无乘除运算指令,只能用乘法和除法子程序来实现乘除运算。在原有实现加减运算的运算器基础上增加一些逻辑线路,使乘除运算变换成加减和移位操作。在机器中设有乘除指令。设置专用的乘、除法器,机器中设有相应的乘除指令。不管采用什么方案实现乘除法,基本原理是相同的。如果采用第种方案,则必然会涉及到移位操作。,4.3 带符号数的移位和舍入操作,43,1.原码的移位规则 不论正数还是负数,在左移或右移时,符号位均不变,空出位一律以“0”补入。负数的原码移位前后结果为:左移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 X2 X3 Xn 0 右移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 0 X1 Xn-2 Xn-1,4.3.1 带符号数的移位操作,44,2.补码的移位规则,正数 符号位不变,不论左移或右移,空出位一律以“0”补入。负数 符号位不变,左移后的空出位补“0”,右移后的空出位补“1”。左移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 X2 X3 Xn 0 右移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 1 X1 Xn-2 Xn-1,45,3.移位功能的实现,移位器是由与门和或门组成的逻辑电路(实际是一个多路选择器),可以实现直传(不移位)、左斜一位送(左移一位)和右斜一位送(右移一位)的功能。移位器逻辑电路如图所示。,左移由2FL控制,Fi-1Li直传由FL来控制,FiLi 右移由F/2L来控制,Fi+1Li移位器无数据寄存能力。,46,移位器逻辑电路,1,图4-9 移位器逻辑电路,左移相当于乘2,只有移位功能,没有保存功能,47,4.3.2 带符号数的舍入操作,在算术右移时,由于受到硬件的限制,运算结果有可能需要舍去一定的尾数,这会造成一些误差。为了缩小误差,就要进行舍入处理。假定经过运算后的数共有p+q位,现仅允许保留前p位。常见的舍入方法有:恒舍(切断)无论多余部分q位为何代码,一律舍去,保留部分的p位不作任何改变。,48,4.3.2 带符号数的舍入操作(续),冯诺依曼舍入法 这种舍入法又称为恒置1法,即不论多余部分q位为何代码,都把保留部分p位的最低位置1。下舍上入法 下舍上入就是0舍1入。用将要舍去的q位的最高位作为判断标志,以决定保留部分是否加1。如该位为0,则舍去整个q位(相当于恒舍);如该位为1,则在保留的p位的最低位上加1。,49,4.3.2 带符号数的舍入操作(续),查表舍入法(ROM舍入法)用ROM来存放舍入处理表,每次经查表来读得相应的处理结果。通常,ROM表的容量为2K个单元,每个单元字长为K-1位。舍入处理表的内容设置一般采用的方法是:当K位数据的高K-1位为全“1”时,让那些单元按恒舍法填入K-1位全“1”,其余单元都按下舍上入法来填其内容。,50,4.4 定点乘法运算,在计算机中,乘法运算大多数由累加与移位来实现,也有些机器中具有由大规模集成电路制造的阵列乘法模块。,51,4.4.1 原码一位乘法,1.原码一位乘法算法 原码一位乘法是从手算演变而来的,即用两个操作数的绝对值相乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负)。乘积P=|X|Y|符号Ps=XsYs 式中:Ps为乘积的符号,Xs和Ys为被乘数和乘数的符号。,52,1.原码一位乘法算法(续),原码一位乘法的规则:参加运算的操作数取其绝对值;令乘数的最低位为判断位,若为“1”,加被乘数,若为“0”,不加被乘数(加0);累加后的部分积以及乘数右移一位;重复n次和;符号位单独处理,同号为正,异号为负。,53,1.原码一位乘法算法(续),通常,乘法运算需要3个寄存器。被乘数存放在B寄存器中;乘数存放在C寄存器中;A寄存器用来存放部分积与最后乘积的高位部分,它的初值为0。运算结束后寄存器C中不再保留乘数,改为存放乘积的低位部分。例8:已知:X=0.1101,Y=-0.1011,求:XY。|X|=00.1101B,|Y|=.1011C,0A,54,原码一位乘法示例,A C 说明,0 0.0 0 0 0 1 0 1 1,+|X|0 0.1 1 0 1 C4=1,+|X|,0 0.1 1 0 1,0 0.0 1 1 0 1 1 0 1 部分积右移一位,0 1.0 0 1 1,+|X|0 0.1 1 0 1 C4=1,+|X|,0 0.1 0 0 1 1 1 1 0 部分积右移一位,+0 0 0.0 0 0 0 C4=0,+0,0 0.1 0 0 1,0 0.0 1 0 0 1 1 1 1 部分积右移一位,+|X|0 0.1 1 0 1 C4=1,+|X|,0 1.0 0 0 1,0 0.1 0 0 0 1 1 1 1 部分积右移一位,PS=XSYS=01=1XY=-0.10001111,55,原码一位乘法流程图,56,2.原码一位乘法运算的实现,图4-12中A、B是n+2位的寄存器,C是n位的寄存器,A寄存器和C寄存器是级联在一起的,它们都具有右移一位的功能,在右移控制信号的作用下,A寄存器最低一位的值将移入C寄存器的最高位。C寄存器的最低位的值作为字级与门的控制信号,以控制加被乘数还是不加被乘数(即加0)。C寄存器中的乘数在逐次右移过程中将逐步丢失,取而代之的是乘积的低位部分。原码一位乘法运算器电路中除去三个寄存器外,还需要一个n+2位的加法器、一个计数器、n+2个与门(控制是否加被乘数)和一个异或门(处理符号位)。,57,4.4.2 补码一位乘法,虽然原码乘法比补码乘法容易实现,但因为补码加减法简单,在以加减运算为主的通用机中操作数都用补码表示,所以这类计算机在做乘法时常使用补码乘法。1.校正法 校正法是将X补和Y补按原码规则运算,所得结果根据情况再加以校正,从而得到正确的XY补。补码乘法的统一表达式:XY补=X补(0.Y1Y2Yn)+-X补Ys,58,2.比较法Booth乘法,递推公式:Z0补=0 Z1补=2-1Z0补+(Yn+1-Yn)X补 Z2补=2-1Z1补+(Yn-Yn-1)X补 Zn补=2-1Zn-1补+(Y2-Y1)X补 XY补=Zn补+(Y1-Ys)X补 式中,Z0补为初始部分积,Z1补Zn补依次为各次求得的累加并右移之后的部分积。,59,2.比较法Booth乘法(续),Booth乘法规则:参加运算的数用补码表示;符号位参加运算;乘数最低位后面增加一位附加位Yn+1,其初值为0;由于每求一次部分积要右移一位,所以乘数的最低两位Yn、Yn+1的值决定了每次应执行的操作;移位按补码右移规则进行;共需做n+1次累加,n次移位,第n+1次不移位。,60,Booth乘法运算操作,判断位Yn Yn+1 操 作 0 0 原部分积右移一位 0 1 原部分积加X补后右移一位 1 0 原部分积加-X补后右移一位 1 1 原部分积右移一位,61,2.比较法Booth乘法(续),由于符号位要参加运算,部分积累加时最高有效位产生的进位可能会侵占符号位,故被乘数和部分积应取双符号位,而乘数只需要一位符号位。运算时仍需要有3个寄存器,各自的作用与原码时相同,只不过存放的内容均为补码表示而已。例9:已知X=-0.1101,Y=0.1011;求XY。X补=11.0011B,Y补=0.1011C,0A-X补=00.1101,62,Booth乘法示例,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 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,XY补=1.01110001XY=-0.10001111,63,Booth乘法流程图,图4-13 Booth乘法流程图,64,3.Booth乘法运算的实现,各器件的作用与原码一位乘法相同,A、B寄存器长n+2位,C寄存器长n+1位,还需一个n+2位的加法器、n+2个与或门和一个计数器。由C寄存器的最低两位CnCn+1来控制是加/减被乘数还是加0,当CnCn+1=01时,加被乘数,即加B寄存器的内容;CnCn+1=10时,减被乘数,即加上B寄存器中内容的反,并在加法器的最低位加1;CnCn+1=00或11时,不加也不减(加0)。由于符号位参与运算,所以不需要专门处理符号位的异或门。,65,4.4.3 补码两位乘法,为了提高乘法的执行速度,可以选用两位乘法的方案。所谓两位乘法,就是每次处理乘数中的两位,从而使乘法的速度提高了一倍。根据Booth乘法方便地推导出补码两位乘法,即把补码两位乘理解为将Booth乘法的两次合并为一次来做。,66,补码两位乘法操作,Yn-1YnYn+10 0 0+0,右移2位0 0 1+X补,右移2位0 1 0+X补,右移2位0 1 1+2X补,右移2位1 0 0+2-X补,右移2位1 0 1+-X补,右移2位1 1 0+-X补,右移2位1 1 1+0,右移2位,67,4.4.3 补码两位乘法(续),被乘数和部分积取3符号位,当乘数的数值位n为偶数时,乘数取两符号位,共需作+1次累加,次移位(最后一次不移位);当n为奇数时,乘数只需一个符号位,共需 次累加和移位,但最后一次仅移一位。例10:已知:X=0.0110011,Y=-0.0110010,求:XY。X补=000.0110011B,Y补=1.1001110C,0A 2X补=000.1100110,-X补=111.1001101,2-X补=111.0011010,68,补码两位乘法示例,A C 附加位,+2-X补 1 1 1.0 0 1 1 0 1 0,0 0 0.0 0 0 0 0 0 0 1.1 0 0 1 1 1 0 0,1 1 1.0 0 1 1 0 1 0,2 1 1 1.1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1,+0 0 0 0.0 0 0 0 0 0 0,1 1 1.1 1 0 0 1 1 0,2 1 1 1.1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1,+X补 0 0 0.0 1 1 0 0 1 1,0 0 0.0 1 0 1 1 0 0,2 0 0 0.0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0,+-X补 1 1 1.1 0 0 1 1 0 1,1 1 1.1 0 1 1 0 0 0,1 1 1 1.1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1,XY补 XY,69,4.5 定点除法运算,除法是乘法的逆运算,与乘法运算的处理思想相似,可以将n位除转化成若干次“减法移位”,也有些计算机具有由大规模集成电路制造的阵列除法模块。,70,4.5.1 原码除法运算,1.原码比较法和恢复余数法比较法 比较法类似于手工运算,只是为了便于机器操作,将除数右移改为部分余数左移,每一位的上商直接写到寄存器的最低位。设A寄存器中存放被除数(或部分余数),B寄存器中存放除数,C 寄存器用来存放商Q,若AB,则上商1,并减除数;若AB,则上商0。比较法需要设置比较线路,从而增加了硬件的代价。,71,比较过程的流程图,图4-16(a)比较过程流程,72,1.原码比较法和恢复余数法(续),恢复余数法 恢复余数法是直接作减法试探方法,不管被除数(或部分余数)减除数是否够减,都一律先做减法。若部分余数为正,表示够减,该位商上“1”;若部分余数为负,表示不够减,该位商上“0”,并要恢复余数。,73,恢复余数过程的流程图,图4-16(b)恢复余数过程流程,74,1.原码比较法和恢复余数法(续),由于部分余数的正、负是根据不同的操作数组合随机出现的,恢复除数法会使得除法运算的实际操作次数不固定,从而导致控制电路比较复杂。而且在恢复余数时,要多作一次加法,降低了除法的执行速度。因此,原码恢复余数法在计算机中一般很少采用。,75,2.原码不恢复余数法(原码加减交替法),原码不恢复余数法是对恢复余数法的一种改进,它减少了浪费的加法时间,且运算的次数固定,故被广泛采用。在恢复余数法中,若第i-1次求商的部分余数为ri-1,则第i次求商操作为:ri=2ri-1-Y,若够减,部分余数ri=2ri-1-Y0,商1。若不够减,部分余数ri=2ri-1-Y0,商0,恢复余数后,ri=ri+Y=2ri-1,然后再左移一位,进行第i+1次操作:ri+1=2ri-Y=2(r i+Y)-Y=2ri+2Y-Y=2ri+Y,76,2.原码不恢复余数法(续),原码不恢复余数除法由下面的通式表示:ri+1=2ri+(1-2Qi)Y 式中Qi为第i次所得的商,若部分余数为正,则Qi=1,部分余数左移一位,下一次继续减除数;若部分余数为负,则Qi=0,部分余数左移一位,下一次加除数。由于加减运算交替地进行,故称为原码加减交替法。,77,2.原码不恢复余数法(续),除法运算需要3个寄存器。A和B寄存器分别用来存放被除数和除数,C寄存器用来存放商,它的初值为0。运算过程中A寄存器的内容为部分余数,它将不断地变化,最后剩下的是扩大了若干倍的余数,只有将它乘上2-n才是真正的余数。例12:已知:X=-0.10101,Y=0.11110,求:XY。|X|=00.10101A,|Y|=00.11110B,0C|Y|变补=11.00010,78,原码不恢复余数除法示例,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.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 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,79,原码不恢复余数除法示例(续),经过原码不恢复余数除法,有:商=0.10110 余数=0.011002-5 XY=-(0.10110+),0.011002-5,0.11110,80,原码加减交替除法流程图,图4-17 原码加减交替除法流程图,81,2.原码不恢复余数法(续),在定点除法运算时,为了防止溢出,要求被除数的绝对值小于除数的绝对值,|X|Y|(|X|=|Y|除外),且除数不能为0。因此第一次减除数肯定是不够减的,如果我们采用先移位后减除数的方法,得到的结果也是相同的。另外,在原码加减交替法中,当最终余数为负数时,必须恢复一次余数,使之变为正余数,注意此时不需要再左移了。,82,3.原码加减交替除法的实现,图4-18中A、B寄存器长n+2位,C寄存器长n+1位,还需一个n+2位的加法器、n+2个与或门、一个计数器和一个异或门。应当注意,A寄存器和C寄存器是级联在一起的,它们都具有左移一位的功能,在左移控制信号的作用下,C寄存器最高位的值将移入A寄存器的最低位。A寄存器中的初值是被除数,但在运算过程中将变为部分余数。C寄存器的最低位用来保存每次运算得到的商值,此商值同时也作为下一次操作是做加法还是做减法的控制信号。,83,4.5.2 补码除法运算,1.够减的判断 参加运算的两个数符号任意,当被除数(或部分余数)的绝对值大于或等于除数的绝对值时,称为够减;反之称为不够减。当两数同号时,实际应作减法;两数异号时,实际应作加法。判断的方法和结果如下:当被除数(或部分余数)与除数同号时,如果得到的新部分余数与除数同号,表示够减,否则为不够减;当被除数(或部分余数)与除数异号时,如果得到的新部分余数与除数异号,表示够减,否则为不够减。,84,2.上商规则,补码除法运算的商也是用补码表示的,上商的规则是:如果X补和Y补同号,则商为正数,够减时上商“1”,不够减时上商“0”;如果X补和Y补异号,则商为负数,够减时上商“0”,不够减时上商“1”。补码的上商规则可归结为:部分余数ri补和除数Y补同号,商上“1”,反之,商上“0”。,85,3.商符的确定,商符是在求商的过程中自动形成的,按补码上商规则,第一次得出的商,就是实际应得的商符。为了防止溢出,必须有|X|Y|,所以第一次肯定不够减。当被除数与除数同号时,部分余数与除数必然异号,商上“0”,恰好与商符一致;当被除数与除数异号,部分余数与除数必然同号,商上“1”,也恰好就是商的符号。,86,4.求新部分余数,求新部分余数ri+1补的通式如下:ri+1补=2ri补+(1-2Qi)Y补 Qi表示第i步的商。若商上“1”,下一步操作为部分余数左移一位,减去除数;若商上“0”,下一步操作为部分余数左移一位,加上除数。5.末位恒置1 商的最末一位恒置为“1”,运算的最大误差为2-n。此法操作简单,易于实现。,87,补码加减交替除法规则,88,补码加减交替除法示例,例13:已知X=0.1000,Y=-0.1010;求XY。X补=00.1000A,Y补=11.0110B,0C-Y补=00.1010,89,补码加减交替除法示例(续),A C 说明,0 0.1 0 0 0 0.0 0 0 0,+Y补 1 1.0 1 1 0 X补、Y补异号,+Y补,1 1.1 1 0 0 左移一位,+-Y补 0 0.1 0 1 0+-Y补,0 0.0 1 1 0 0.0 0 1 0 ri补、Y补异号,商0,0 0.1 1 0 0 左移一位,+Y补 1 1.0 1 1 0+Y补,0 0.0 0 1 0 0.0 1 0 0 ri补、Y补异号,商0,+Y补 1 1.0 1 1 0+Y补,1 1.1 0 1 0 0.1 0 0 1 ri补、Y补同号,商1,1 1.0 1 0 0 左移一位,+-Y补 0 0.1 0 1 0+-Y补,1 1.1 1 1 0 1.0 0 1 1 末位恒置1,1 1.1 1 1 0 0.0 0 0 1 ri补、Y补同号,商1,0 0.0 1 0 0 左移一位,90,补码加减交替除法示例(续),商补=1.0011 余数补=1.11102-4,商=-0.1101 余数=-0.00102-4,91,补码加减交替除法流程图,图4-19 补码加减交替除法流程图,92,4.6 规格化浮点运算,浮点数比定点数的表示范围宽,有效精度高,更适合于科学与工程计算的需要。浮点数中包含两组代码,采用定点整数格式的阶码和采用定点小数格式的尾数。因此,浮点运算实质上包含两组定点运算,阶码运算和尾数运算,但这两部分运算既有各自的作用,也有相互间的关联。主要讨论规格化浮点数的运算,并特别强调对阶和规格化两个概念。,93,4.6.1 浮点加减运算,设两个非0的规格化浮点数分别为:A=MA B=MB 规格化浮点数A、B加减运算通式为:AB=(MA,EA)(MB,EB)=,94,1.浮点数加减运算步骤,对阶 两个浮点数相加或相减,首先要把小数点的位置对齐,而浮点数的小数点的实际位置取决于阶码的大小,因此,对齐两数的小数点,就是使两数的阶码相等,这个过程称为对阶。要对阶,首先应求出两数阶码EA和EB之差E=EA-EB 若E=0,表示两数阶码相等,即EA=EB;若E0,表示EAEB;若E0,表示EAEB。,95,1.浮点数加减运算步骤(续),当EAEB时,要通过尾数的移位来改变EA或EB。对阶的规则是:小阶向大阶看齐。要使小阶的阶码增大,则相应的尾数右移,直到两数的阶码相等为止。每右移一位,阶码加1。EAEB,则MB右移。每右移一位,EB+1EB,直至EA=EB为止。EAEB,则MA右移。每右移一位,EA+1EA,直至EA=EB为止。尾数右移后,应对尾数进行舍入。,96,1.浮点数加减运算步骤(续),尾数加/减 对阶之后,就可以进行尾数加/减,即:MAMBMC 其算法与定点加/减法相同。尾数结果规格化 尾数加/减运算之后得到的数可能不是规格化数,为了增加有效数字的位数,提高运算精度,必须进行结果规格化操作。,97,1.浮点数加减运算步骤(续),尾数结果规格化|M|1 设尾数用双符号位补码表示,经过加/减运算之后,可能出现以下6种情况,即: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,98,1.浮点数加减运算步骤(续),第和种情况:如2个异号数相加或者同号数相减,使|M|1/2;需要使尾数左移以实现规格化,这个过程称为左规。尾数每左移一位,阶码相应减1(EC-1EC),直至成为规格化数为止。左规=+Cs1 Cs2 C1 左规可以进行多次。Cs1、Cs2表示尾数MC的两个符号位,C1为MC的最高数值位。,例:00.0101 正尾数的最高有效位不为1,应该左移为00.101011.1011补码表示的负尾数,尾数最高有效位不为0,)应该左移为11.0110,99,1.浮点数加减运算步骤(续),01.x x x x 10.x x x x 在定点加减运算中称为溢出;但浮点加减运算中,只表明此时尾数的绝对值大于1,而并非真正的溢出。这种情况应将尾数右移以实现规格化。这个过程称为右规。尾数每右移一位,阶码相应加1(EC+1EC)。右规=Cs1Cs2 右规最多只有一次。,100,1.浮点数加减运算步骤(续),舍入 最简单的舍入方法是恒舍法,即无条件的丢掉正常尾数最低位之后的全部数值。溢出判断 当尾数右规后,根据阶码来判断浮点运算结果是否溢出。EC补=01,x x x x,表示上溢。此时,浮点数真正溢出,机器需停止运算,做溢出中断处理。EC补=10,x x x x,表示下溢。浮点数值趋于零,机器不做溢出处理,而是按机器零处理。,101,2.浮点数加减运算举例,有两浮点数为 A=0.1011102-01 B=-(0.101011)2-10 假设这两数的格式:阶码4位,用移码(偏置值为23)表示;尾数8位,用补码表示,包含一位符号位,即 阶码 尾数 A浮=0111;0.10

    注意事项

    本文(计算机组成原理第4章数值的机器运算(终).ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开