《第四章运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《第四章运算方法和运算器.ppt(49页珍藏版)》请在三一办公上搜索。
1、计算机组成原理,主编:杨光煜,第4章 运算方法和运算器,计算机中的运算包括算术运算和逻辑运算两大类。算术运算是指带符号数的加法、减法、乘法和除法运算。由于在计算机中数值有定点和浮点两种表示方式,因此算术运算应有定点数的算术运算和浮点数的算术运算之分。逻辑运算是指不考虑进位“位对位”的运算,参加逻辑运算的操作数,常被称作逻辑数。一般来说,逻辑数是不带符号的整数,广义的逻辑运算可定义为非算术运算。本章主要讨论各种运算的运算方法及其实现。运算器就是计算机中完成各种运算的一个必不可少的重要部件。4.1定点加减法运算4.2定点乘法运算4.3定点除法运算4.4浮点运算的基本思想4.5运算器的基本结构及分类
2、4.6 浮点运算器基本思路4.7小结,4.1 定点加减法运算,4.1.1 补码加、减法运算,4.1 定点加减法运算,4.1 定点加减法运算,4.1 定点加减法运算,4.1.2 反码加、减法运算对于反码加、减法运算有如下的公式:,4.1 定点加减法运算,4.1 定点加减法运算,4.1 定点加减法运算,4.1 定点加减法运算,4.1.3 定点加、减法中的溢出问题 所谓“运算溢出”是指运算结果大于机器所能表示的最大正数或者小于机器所能表示的最小负数,这就是说,运算溢出只对带符号数的运算有效。下面举例说明补码加法运算中什么情况下会产生运算溢出。【例4-10】两个正数相加【例4-11】两个负数相加,4.
3、1 定点加减法运算,常用的判定溢出方法有以下三种:,4.1 定点加减法运算,4.1 定点加减法运算,4.1 定点加减法运算,4.1.4 加法器 计算机中的加、减、乘、除四则运算,都是在加法器的基础上再辅之以适当的电路来实现的。因此,加法运算电路是计算机中最基本的运算电路。本节先介绍加法运算的核心部件半加单元和全加单元。1.半加单元 不考虑进位输入时,两数码、相加称为半加。图4-1(a)是半加单元的真值表。由此表可以得出半加和的表达式如下:,4.1 定点加减法运算,4.1 定点加减法运算,4.2 定点乘法运算,4.2.1 原码乘法运算及原码乘法器 首先要给原码乘法下个定义:“符号位单独运算,将两
4、个操作数的数码位相乘,最后给乘积冠以正确符号”称作原码乘法。从最低位开始,每次取一位乘数与被乘数相乘,最后累加结果,称作“原码一位乘法”。原码一位乘法的操作过程与十进制乘法运算的过程很类似,下面通过一个具体例子来说明。,4.2 定点乘法运算,4.2 定点乘法运算,这是二进制乘法的手算过程。这一过程如果在计算机中实现,存在两个问题:其一是两个n位数相乘,需要2n位的加法器,这不合算;其二是n此部分积一次累加,实现有困难,而这两个问题只需要操作上稍微改动就可以得到满意的解决。我们首先假设被乘数与乘数为N+1位的原码,分别为:,4.2 定点乘法运算,在计算机中实现上述乘法过程的具体做法是:每得到一次
5、部分积,立即与上次部分积相加,然后将结果右移一位,待n次的“相加右移”操作结束,乘法运算过程也告结束。用递推公式描述如下:,4.2 定点乘法运算,我们还用上面的这个例子,在计算机内实现原码一位乘法的操作过程如下:,4.2 定点乘法运算,可以看出,上面的例子中经过四次相加右移的操作,在粗黑线左方可得到正确的运算结果,最后给它冠以正确的符号“1”,所以 从上述过程来看,两个n位带符号数相乘需要一个n+1位加法器。并且需要两个n+1位寄存器,操作前分别存放部分积和乘数Y,操作后分别存放最后乘积的高n位和低n位,并要求这两个寄存器能连接起来一起进行右移操作。,4.2 定点乘法运算,4.2.2 补码乘法
6、运算及补码乘法器“补码乘法”是指采用操作数的补码进行乘法运算,最后乘积仍为补码,能自然得到乘积的正确符号。从乘数的最低位开始,每次取一位乘数与被乘数相乘,经过(n+1)次“相加右移”操作完成乘法运算的过程被称为“补码一位乘法”。,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.2 定点乘法运算,4.3 定点除法运算,定点除法运算与定点乘法运算类似,也有原码除法和补码除法之分。本节先讨论原码除法运算。N位原码除法是指被除数为2n位,除数、商数和余数均为n位。在实际的
7、运算中,如果被除数也是n位,则需扩展为2n位后再进行运算。原码除法运算有恢复余数法和不恢复余数法(加减交替法)之分。,4.3 定点除法运算,4.3.1恢复余数法 恢复余数法的计算与手算过程很类似。两个原码数相除,商的符号为两数符号的异或值,数值则为两数绝对值相除后的结果。在计算机中,右移除数,可以通过左移被除数(余数)来替代,左移出界的被除数(余数)的最高位,对运算不会产生任何影响。另外,上商0还是1,用做减法判断结果的符号为正还是负。当差为负时,上商为0,同时还应该把除数再加到差上去,恢复余数为原来的正值之后再将其左移一位。若减得的差为0或为正值,就没有恢复余数的操作。上商为1,余数左移一位
8、。,4.3 定点除法运算,4.3.2不恢复余数法 不恢复余数法是对恢复余数法的一种修正。当某一次得的差值(余数)为负时,不是恢复它,而是继续求下一位商,但用加上除数(+Y)的办法来取代(Y)操作,其他操作依然不变,和恢复余数法是一样的。,4.3 定点除法运算,由此可得不恢复余数法的计算规则:当余数为正时,商上1,求下一位商的办法,是余数左移一位,再减去除数;当余数为负时,商上0,求下一位商的办法,是余数左移一位,再加上除数。但若最后一次上商为0,而又得到正确余数,则在这最后一次仍需恢复余数。,4.4 浮点运算的基本思想,4.4.1浮点数加减法的运算规则 前面已经讲过,浮点数通常被写成X=Mx2
9、Ex 的形式,其中Mx是该浮点数的尾数,一般为绝对值小于1的规格化的二进制小数,在 计算机中通常使用补码或原码的形式表示。Ex为该浮点数的阶码,一般为二进制整数,在计算机中多用补码或移码表示。假设有两个浮点数:X=Mx2Ex,Y=My2Ey 要完成XY运算,通常需要以下几个步骤:,4.4 浮点运算的基本思想,1对阶操作 两浮点数进行加减,首先要看两数的阶码是否相同,也就是看两数的小数点位置是否对齐。若二数阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。反之,若二数阶码不同,表示小数点位置没有对齐,此时必须使二数阶码相同,这个过程称为“对阶”。要进行对阶,首先应求出两数阶码Ex和Ey之差
10、,即E=Ex-Ey 若E=0,表示两数阶码相等,即Ex=Ey;若ExEy,则需要通过尾数的移动以改变Ex或Ey,使之相等。原则上,既可以通过Mx移位以改变Ex来达到Ex=Ey,也可以通过My移位以改变Ey来实现Ex=Ey。但是,由于浮点表示的数多是规格化的,尾数左移会引起最高有效位的丢失,造成很大误差。尾数右移虽引起最低有效位的丢失,但造成的误差较小。基于这种考虑,对阶操作规定使尾数右移,尾数右移后阶码作相应增加。因此,在进行对阶时,总是使小阶向大阶看齐,即小阶的尾数向右移位(相当于小数点左移)每右移一位,其阶码加1,直到两数的阶码相等为止,右移的位数等于阶差的绝对值|E|,这种方法同时也是为
11、了保证浮点数的尾数部分为纯小数。尾数右移时,如果是原码形式的尾数,符号位不参与加移位,尾数高位补0;如果尾数采用补码形式,则符号位要参加移位并使自己保持不变。,4.4 浮点运算的基本思想,2尾数加减运算 对阶完毕后就可对尾数进行加减运算。不论是加法运算还是减法运算,都按加法进行操作,其方法与定点加减运算完全一样。3规格化处理 若上一步得到的结果不满足规格化的规则,则必须将其变成规格化的形式。当尾数用二进制表示时,浮点规格化的定义是尾数M应满足:1/2|M|1 对于双符号位的补码尾数,如果是正数,其形式应为M=001.;如果是负数,其形式应为M=110.。如果不满足上述形式,则应该按照以下两种情
12、况进行规格化处理:第一种情况,尾数运算的结果得到如01.或10.的形式,即两符号位不相等,表明尾数运算结果溢出,此时将尾数运算结果右移以实现规格化表示,称为向右规格化,简称右规,即尾数右移1位,阶码加1。第二种情况,尾数运算的结果并不溢出,但得到如000.或111.的形式,即运算结果的符号位和小数点后的第一位相同,表明不满足规格化规则,此时应重复地使尾数左移、阶减减1,直到出现在最高数值位上的值与符号位的值不同为止,这是向左规格化的操作,简称左规。,4.4 浮点运算的基本思想,4舍入操作 在执行对阶或右规操作时,会使尾数低位上的一位或若干位的数值被移掉,使数值的精度降低,从而造成误差,因此要进
13、行舍入操作。舍入操作总的原则是要有舍有入,而且尽量使舍和入的机会均等,以避免误差累积。常用的方法有两种,一种是“0舍1入”法,即移掉的最高位为1时,则在尾数末位加1;移掉的最高位为0时,则舍去移掉的数值。这种方法的最大误差为2-(n+1)。另一种方法是“恒置1”法,即在右移时只要有效数位被移掉,就在结果的最低位置1。在IEEE754浮点数标准中,舍入处理提供了四种可选方法:l 就近舍入:其实质就是通常所说的“四舍五入”。例如,尾数超出规定的23位的多余位数字是10010,多余位的值超过规定的最低有效位值的一半,故最低有效位应加1。若多余的5位是01111,则简单的截尾即可。对多余的5位1000
14、0这种特殊情况,若最低有效位现为0,则截尾;若最低有效位现为1,则向上进一位使其变为 0。l 朝0舍入:即朝数轴原点方向舍入,就是简单的截尾。无论尾数是正数还是负数,截尾都使取值的绝对值比原值的绝对值小。这种方法容易导致误差积累。l 朝舍入:对正数来说,只要多余位不全为0则向最低有效位进1;对负数来说则是简单的截尾。朝舍入:处理方法正好与朝舍入情况相反。对正数来说,只要多余位不全为0则简单截尾;对负数来说,向最低有效位进1。,4.4 浮点运算的基本思想,5溢出检查首先,考察一下浮点机器数在数轴上的分布情况,如图所示:在图中,“可表示的负浮点数”区域和“可表示的正数区域”及0,是机器可表示的数据
15、区域;上溢区(包括负上溢和正上溢)是数据绝对值太大,机器无法表示的区域;下溢区(包括负下溢和正下溢)是数据绝对值太小,机器无法表示的区域。若运算结果落在上溢区,就产生了溢出错误,使得结果不能被正确表示,要停止机器运行,进行溢出处理。若运算结果落在下溢区,也不能正确表示之,机器当0处理,称为机器零。浮点数的溢出是以其阶码溢出表现出来的。在加减运算过程中要检查是否产生了溢出:若阶码正常,加减运算正常结束;若阶码溢出,则要进行相应处理:若阶码下溢,要置运算结果为浮点形式的机器0;若阶码上溢,则置溢出标志。,4.4 浮点运算的基本思想,4.4.2浮点数乘除法的运算规则设有两个浮点数和:X=Mx2ExY
16、=My2Ey浮点乘法运算的规则是XY=(MxMy)2(ExEy)即乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和。浮点除法运算的规则是 XY=(MxMy)2(Ex-Ey)即商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。浮点数的乘除运算,通常需要以下几个步骤:,4.4 浮点运算的基本思想,1阶码进行加减运算 根据阶码表示形式的不同(补码或移码),利用前文所讨论过的计算规则进行计算。2尾数进行乘除运算 尾数的乘除法运算根据4.2、4.3小节中讨论的定点乘除法的规则进行计算。3结果规格化和舍入处理 浮点加减法对结果的规格化及舍入处理也适用于浮点乘除法。由于在计算机中,浮
17、点数的尾数的位数通常是确定的,但浮点运算结果常常会超过给定的位数,如前面讨论过的浮点数加减法计算过程中的对阶和右规处理。而浮点的乘除运算可能会得到位数更多的结果,因此舍入问题,即如何处理多出来的这些位上的数值的问题比加减运算更需要注意。4判结果的正确性,即检查阶码是否溢出 根据前面分别介绍的用补码或移码表示阶码时判断溢出的方法进行判断并处理即可。,4.5 运算器的基本结构及分类,4.5.1 运算器的基本组成具有普通代表性的、以加法器为核心部件的运算器的基本结构主要包括以下几个部分:1加法器实现两个数的相加运算,及支持逻辑运算,也常作为数据通路,对数据进行加工处理。2通用寄存器组用来暂存参加运算
18、的数据、运算结果以及或中间结果。此外还有变址寄存器、状态寄存器、堆栈指示器等。3输入数据选择电路用来选择将哪一个或哪两个数据(数据来源于寄存器或总线等部件)送入加法器;此外,还用来控制数据以何种编码形式送入加法器。4输出数据控制电路控制加法器的数据输出,具有移位功能,且将加法器输出的数据送到运算器、通用寄存器和送往总线控制电路。,4.5 运算器的基本结构及分类,上述运算器的基本结构如图所示:,4.5 运算器的基本结构及分类,4.5.2 运算器的分类对运算器的分类可以从不同的角度进行:1从加法器的电路设计的角度分类,可以分为串行加法器和并行加法器。(1)串行加法器:串行加法器可以只用一个全加单元
19、实现,也可以由多个全加单元级联构成,高位的进位依赖于低位的进位。串行加法器的特点是:被加数和加数的各位能同时并行到达各位的输入端,而各位全加单元的进位输入则是按照由低位向高位逐级串行传递的,各进位形成一个进位链。由于每一位相加的和都与本位进位输入有关,所以,最高位必须等到各低位全部相加完成并送来进位信号之后才能产生运算结果。显然,这种加法器运算速度较慢,而且位数越多,速度就越低。(2)并行加法器:为了提高加法器的运算速度,必须设法减小或去除由于进位信号逐级传送所花的时间,使各位的进位直接由加数和被加数来决定,而不需依赖低位进位。根据这一思想设计的加法器称为并行加法器,称为超前进位并行加法器。其
20、特点是由逻辑电路根据输入信号同时形成各位向高位的进位。,4.5 运算器的基本结构及分类,2从工作性质角度分类,可以分为定点运算器和浮点运算器。在本章的前面部分已经分别讨论过计算机内定点运算和浮点运算的基本思想。定点运算器用于完成定点算术运算,其基本结构可以参阅4.5.1小节中的介绍。除算术运算之外,定点运算器还被用于实现逻辑运算,这是通过在原有加法器上再附加部分线路实现的。这种用于完成算术运算和逻辑运算的部件被称为算术逻辑单元(ALU)。浮点运算器是专门针对计算机内的浮点数进行运算的部件,有关浮点运算器的相关内容,将在下一节中介绍。3从加法器操作数的结构角度分类,可以分为二进制加法器和十进制加
21、法器。,4.6 浮点运算器基本思路,浮点数通常由阶码和尾数两部分组成,阶码为整数形式,尾数为定点小数形式,在浮点运算过程中,这两部分执行的操作不尽相同。浮点运算器可用两个松散连接的定点运算部件来实现,即阶码部件和尾数部件,浮点运算器的基本结构如图所示。,4.7小结,运算器是计算机的核心部件之一,负责完成各种算术运算和逻辑运算。计算机中的数值有定点和浮点两种不同的形式,相应的运算方法和运算器的设计也有所不同。定点数的加、减法运算通常以补码和反码的形式进行;定点数的乘法运算通常采用原码乘法和补码乘法来实现;对于定点数的除法运算则通常有恢复余数法和不恢复余数法两种计算方法。浮点数的组成包括尾数和阶码两部分,进行计算时也要分别对这两个部分进行不同的操作。浮点数的加减法运算包括对阶、尾数加减、规格化、舍入及溢出检查等步骤;浮点数的乘除运算包括阶码加减、尾数乘除、结果规格化及舍入处理等步骤。计算机中的加、减、乘、除运算,都是在加法器基础上辅之以适当电路实现的。具有一般性的运算器组成通常包括加法器、通用寄存器组、输入选择电路和输出控制电路等部件,其中加法器是运算器的核心部分。浮点运算器的设计需要对阶码和尾数分别使用一个定点运算部件实现。,
链接地址:https://www.31ppt.com/p-5860921.html