《(数值运算和运算器).ppt》由会员分享,可在线阅读,更多相关《(数值运算和运算器).ppt(70页珍藏版)》请在三一办公上搜索。
1、1,第4章 运算方法与运算器,2.1 定点数的加减运算及实现 2.2 定点数的乘法运算及实现2.3 定点数除法运算及实现 2.4 定点运算器的组成与结构2.5 浮点运算及运算器 作业,2,2.1 定点数的加减运算及实现,一、补码加减运算及运算器二、机器数的移位运算,3,一、补码加减运算及运算器,1、补码加减运算方法2、补码加减运算的溢出判断3、补码加减运算器,4,1、补码加减运算方法,补码的加减运算的公式是:X+Y补=X补+Y补X-Y补=X补+-Y补特点:使用补码进行加减运算,符号位和数值位一样参加运算。补码的减法可以用加法来实现,任意两数之差的补码等于被减数的补码与减数相反数的补码之和。,5
2、,求补运算:Y补-Y补,求补规则:将Y补包括符号位在内每一位取反,末位加1。若Y补=Y0,Y1Yn,则:,若Y补=Y0.Y1Yn,则:,例:X补=0.1101,则:X补=?Y补=1.1101,则:Y补=?,1.0011,0.0011,6,补码加减运算举例,例:已知X=+1011,Y=-0100,用补码计算X+Y和X-Y。写出补码:X补=0,1011 Y补=1,1100-Y补=0,0100 计算:,0,1011,1,1100,0,0111,XY补=0,0111,0,1011,0,0100,0,1111,XY补=0,1111,7,2、补码加减运算的溢出判断,当运算结果超出机器数的表示范围时,称为溢
3、出。计算机必须具备检测运算结果是否发生溢出的能力,否则会得到错误的结果(例2.2)。对于加减运算,可能发生溢出的情况:同号(两数)相加,或者异号(两数)相减。确定发生溢出的情况:正数相加,且结果符号位为1;负数相加,且结果符号位为0;正数负数,且结果符号位为1;负数正数,且结果符号位为0;,8,常用的判溢方法(补码加减运算),(1)单符号位判溢方法2 当最高有效位产生的进位和符号位产生的进位不同时,加减运算发生了溢出。VC1Cf(2)双符号位判溢方法X和Y采用双符号位补码参加运算,正数的双符号位为00,负数的双符号位为11;当运算结果的两位符号Sf1 Sf2不同时(01或10),发生溢出。V
4、Sf1 Sf2=Xf Yf Cf Sf Sf1 Sf2=01,则正溢出;Sf1 Sf2=10,则负溢出。,9,双符号位判溢方法举例,例:用补码计算X+Y和X-Y(1)X=+1000,Y=+1001(2)X=-1000,Y=1001,Sf1 Sf2=01,正溢出,Sf1 Sf2=11,无溢出,Sf1 Sf2=00,无溢出,Sf1 Sf2=10,负溢出,10,3、补码加减运算器,11,3、补码加减运算器,核心部件:一个普通的二进制并行加法器。A:累加器,存放X补;B:寄存器,存放Y补;,12,二、机器数的移位运算,二进制数据(真值)每相对于小数点左移一位,相当于乘以2;每相对于小数点右移一位,相当
5、于除以2。计算机中的移位运算分为:1、逻辑移位:将移位的数据视为无符号数据,各数据位在位置上发生了变化,导致无符号数据的数值(无正负)放大或缩小。2、算术移位:将移位的数据视为带符号数据(机器数)。算术移位的结果,在数值的绝对值上进行放大或缩小,同时,符号位必须要保持不变。3、循环移位:所有的数据位在自身范围内进行左移或者右移,左移时最高位移入最低位,右移时最低位移入最高位。,13,补码的算术移位,算术左移:符号位不变,高位移出,低位补0。为保证补码算术左移时不发生溢出,移位的数据最高有效位必须与符号位相同。在不发生溢出的前提下,用硬件实现补码的算术左移时,直接将数据最高有效位移入符号位,不会
6、改变机器数的符号。,算术右移:符号位不变,低位移出,高位正数补0,负数补1,即高位补符号位。,14,补码的算术移位举例,例:设X0.1001,Y0.0101,求X补?2X补?X/2补?Y补?2Y补?Y/2补?,0.1001,1.0010(溢出),0.0100,1.1011,1.0110,1.1101,15,2.2 定点数的乘法运算及实现,一、计算机中乘除运算的实现方法二、原码乘法算法三、原码乘法的硬件实现四、阵列乘法器,16,一、计算机中乘除运算的实现方法,由于计算机的软硬件在逻辑上具有一定的等价性,因此实现乘除法运算,可以有三种方式:1、用软件实现。硬件上:设计简单,没有乘法器和除法器。指令
7、系统:没有乘除指令,但有加/减法和移位指令实现:乘除运算通过编制一段子程序来实现算法:程序中运用串行乘除运算算法,循环累加、右移指令乘法,循环减、左移指令除法。运算速度:较慢。适用场合:单片机。,17,一、计算机中乘除运算的实现方法,2、用硬件乘法器和除法器实现。硬件上:设置有并行加法器、移位器和若干循环、计数控制逻辑电路搭成的串行乘除法器。指令系统:具有乘除法指令。实现:乘除运算通过微程序一级(硬件微程序)来实现。算法:在微程序中依据串行乘除运算算法,循环累加、右移指令乘法,循环减、左移指令除法。运算速度:有所提高,但硬件设计也相对复杂。适用场合:低性能CPU。,18,一、计算机中乘除运算的
8、实现方法,3、用高速的阵列乘法器和阵列除法器来实现。硬件上:设置有专用的、并行运算的阵列乘法器和阵列除法器。指令系统:具有乘除法指令。实现:完全通过硬件来实现。算法:并行乘/除法。运算速度:很快,但硬件设计相当复杂。适用场合:高性能CPU。,19,二、原码乘法算法,1、手工乘法算法手工计算10111101,步骤:手工算法:对应每1位乘数求得1项位积,并将位积逐位左移,然后将所有的位积一次相加,得到最后的乘积。乘法的机器算法:从乘数的最低位开始,每次根据乘数位得到其位积,乘数位为0,位积为0,乘数位为1,则位积为被乘数;用原部分积右移1位加上本次位积,得新部分积;初始部分积为0。,20,二、原码
9、乘法算法,2、原码一位乘法算法:假设X原=XS X1 X2 Xn,Y原=YS Y1 Y2 Yn,P=XY,PS是积的符号:符号位单独处理 Ps=Xs Ys 绝对值进行数值运算|P|=|X|*|Y|例如:X=+1011,Y=-1101,用原码一位乘法计算P=XY。,21,举例,X原=0,1011 Y原=1,1101Ps=XsYs=01=1|P|=|X|Y|,P原=1,10001111,22,三、原码乘法的硬件实现,控制逻辑电路,23,原码一位乘法,00000,1101,0 0 0 0 0,1 1 0 1,为各寄存器给初值,0 1 0 1 1,24,第一次求部分积,00000,1101,0 1 0
10、 1 1,01011,1101,加运算:|X|,25,第一次求部分积,00000,1101,0 0 1 0 1,1 1 1 0,01011,1101,右移1位,00101,1110,26,第二次求部分积,00000,1101,0 0 1 0 1,1 1 1 0,01011,1101,加运算:0,00101,1110,00101,1110,27,第二次求部分积,00000,1101,0 0 0 1 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1110,00010,1111,28,第三次求部分积,00000,1101,0 1 1 0 1,01011,110
11、1,加运算:|X|,00101,1110,00101,1110,00010,1111,01101,1111,29,第三次求部分积,00000,1101,0 0 1 1 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1110,00010,1111,01101,1111,00110,1111,30,第四次求部分积,00000,1101,1 0 0 0 1,01011,1101,加运算:|X|,00101,1110,00101,1110,00010,1111,01101,1111,00110,1111,10001,1111,31,第四次求部分积,00000,1
12、101,0 1 0 0 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1110,00010,1111,01101,1111,00110,1111,01000,1111,低位积,高位积,符号位异或结果为:1,10001111,32,原码一位乘法流程:,33,四、阵列乘法器,原理类似于二进制手工算法位积的每一位XiYj都可以用一个与门实现,而每一位的相加均可以使用一个全加器来实现。,34,绝对值阵列乘法器,动画演示,35,补码阵列乘法器,36,2.3 定点数除法运算及实现,一、原码除法算法二、原码除法的硬件实现三、阵列除法器,37,一、原码除法算法,1、手工
13、除法算法2、原码恢复余数算法3、原码不恢复余数算法,38,1、手工除法算法,X=+0.1011,Y=-0.1101XY,改进手工算法即可适合机器运算:计算机通过做减法测试来实现判断:结果大于等于0,表明够减,商1;结果小于0,表明不够减,商0。计算机将余数左移一位,再直接与不右移的除数相减。,39,2、原码恢复余数算法,假设X原=XS.X1 X2 Xn,Y原=YS.Y1 Y2 Yn,Q是XY的商,QS是商的符号,R是XY的余数,RS是余数的符号原码除法运算的规则是:1.QS=XS YS,RS=XS,|Q|=|X|Y|-|R|Y|2.余数和被除数、除数均采用双符号位;初始余数为|X|。3.每次用
14、余数减去|Y|(通过加上-|Y|补来实现),若结果的符号位为0,则够减,上商1,余数左移一位;若结果的符号位为1,则不够减,上商0,先加|Y|恢复余数,然后余数左移一位。2.循环操作步骤3,共做n+1次,最后一次不左移,但若最后一次上商0,则必须+|Y|恢复余数;若为定点小数除法,余数则为最后计算得到的余数右移n位的值。,40,例如:X=+0.1011,Y=-0.1101用原码恢复余数算法计算XY。解:X原=0.1011 Y原=1.1101|X|=0.1011|Y|=0.1101-|Y|补=11.0011 QS=XS YS=1 RS=0,得Q原=1.1101 R原=0.00000111,11.
15、1110,41,3、原码不恢复余数算法,又称为加减交替法:当某一次求得的差值(余数Ri)为负时,不是恢复它,而是继续求下一位商,但用加上除数(+|Y|)的办法来取代(-|Y|)操作,其他操作不变。其原理证明如下:在恢复余数除法中,若第i-1次求商的余数为Ri-1,下一次求商的余数为Ri,则:Ri=2Ri-1|Y|如果Ri=0,商的第i位上1,并执行操作:余数左移一位,再减|Y|,得Ri+1,则:Ri1=2Ri|Y|如果Ri0,商的第i位上0,并执行操作:恢复余数(+|Y|),将余数左移一位,再减|Y|,得Ri+1。其过程可用公式表示如下:Ri+1=2(Ri+|Y|)|Y|=2Ri+2|Y|Y|
16、=2Ri+|Y|,42,3、原码不恢复余数算法,加减交替法的规则如下:余数为正时,商上1,求下一位商的办法,是余数左移一位,再减去除数;当余数为负时,商上0,求下一位商的办法,是余数左移一位,再加上除数。若最后一次上商为0,而又需得到正确余数,则在这最后一次仍需恢复余数。,43,例如:X=+0.1011,Y=-0.1101,用原码不恢复余数算法计算XY。解:X原=0.1011 Y原=1.1101|X|=0.1011|Y|=0.1101-|Y|补=11.0011QS=XS YS=1 RS=0,Q原=1.1101 R原=0.00000111,44,二、原码除法的硬件实现,控制电路逻辑,45,原码不
17、恢复余数除法流程,46,三、阵列除法器,被除数X=X1 X2 X3 X4 X5 X6,除数=123得到的商Q=Q1Q2Q3(Q0=0),R=R4 R5 R6。若为定点小数,则X=0.X1 X2 X3 X4 X5 X6,除数=0.123,得到的商Q=0.Q1Q2Q3(Q0=0),R=0.000 R4 R5 R6构成的基本部件:可控加减单元CAS,47,三、阵列除法器,48,2.4 定点运算器的组成与结构,一、定点运算器的组成二、定点运算器的总线结构,49,一、定点运算器的组成,基本组成包括:算术逻辑运算单元ALU:核心部件暂存器:用来存放参与计算的数据及运算结果,它只对硬件设计者可见,即只被控制
18、器硬件逻辑控制或微程序所访问 通用寄存器堆:用于存放程序中用到的数据,它可以被软件设计者所访问。内部总线:用于连接各个部件的信息通道。其他可选电路,50,一、定点运算器的组成,设计定点运算器,如何确定各部件的功能和组织方式是关键,这取决于以下几个方面:指令系统机器字长机器数及其运算原理体系结构,51,二、定点运算器的总线结构,1、单总线结构 单总线运算器的结构形式1,52,二、定点运算器的总线结构,单总线运算器的结构形式2,53,2、双总线结构 双总线运算器的结构形式1,54,双总线运算器的结构形式2,55,3、三总线结构,最后必须指出的是,在分析某一种运算器的运算过程和通路时,一个基本的原则
19、就是在一个CPU周期(一步)内,某条总线上的数据必须是唯一的,且不能保留(至下一个CPU周期)。,56,2.5 浮点运算及运算器,一、浮点加减运算二、浮点乘除运算三、浮点运算器,57,一、浮点加减运算,假设两个浮点数X和Y,则必须保证X和Y的阶码(指数)是相同的,然后对尾数做加减运算。,58,浮点加减运算步骤,(1)0操作数检查:以尽可能的简化操作。(2)对阶:原则是小阶对向大阶求阶差E=EX-EY,若E0,即EXEY时需要对阶。若E0,则EXEY,MY每右移一位,EY+1,直至 EY=EX。若E0,则EXEY,MX每右移一位,EX+1,直至EX=EY。(3)尾数相加减(4)结果规格化:尾数运
20、算的结果可能出现两种非规格化情况:A、尾数溢出:需要右规(1次),即尾数右移1位,阶码1B、|尾数|2-1:需要左规,即尾数左移1位,阶码1,左规可能多次,直到尾数变为规格化形式。(5)舍入:可采用截断法、0舍1入法、末位恒置1。,59,浮点加减运算流程,60,举例:12位浮点数,阶码4位,包含1位阶符,尾数8位,包含1位数符,用补码表示,阶码在前,尾数(包括数符)在后,已知:X=(-0.1001011)2001 Y=0.11001012-010 求Z=X+Y。,解:X浮=00,001 11.0110101 Y浮=11,110 00.1100101(1)对阶E=EX-EY=EX补+-EY补=0
21、0,001+00,010=00,011E=30,将MY右移3位,EY加3:Y浮=00,001 00.0001100(101)(2)尾数相加:MZ补=11.1000001(101)(3)结果规格化:左规一位,无溢出:MZ补=11.0000011(01)EZ补=00,001+11,111=00,000(4)舍入:按照0舍1入法,尾数多余位舍去结果为:Z浮=0,000 1.0000011,61,二、浮点乘除运算,1、浮点数乘法运算:假设两个浮点数X和Y:,62,(1)0操作数检查(2)阶码相加:阶码相加可以采用补码或者移码的定点整数加法,同时对相加结果判溢,一旦发生正溢出,则需报告溢出,若发生负溢出
22、,则将结果置为机器零。(3)尾数相乘(4)结果规格化:可能需要左规1位(5)舍入处理:尾数相乘的结果长度是尾数长度的两倍,必须对低位舍入。,浮点乘法运算步骤,63,浮点数乘法运算流程,64,二、浮点乘除运算,2、浮点数除法运算:假设两个浮点数X和Y:,65,(1)0操作数检查当除数为0,则报告除法出错,或者结果(商)无穷大;当被除数为0,则商为0。(2)阶码相减阶码相减的结果也可能溢出,若发生正溢出,则需报告浮点数溢出,若发生负溢出,则将结果置为机器零。(3)尾数相除(4)结果规格化(5)舍入处理,浮点数除法运算步骤,66,浮点数除法运算流程,67,三、浮点运算器,68,本章小结,定点机器数的加减法运算:通过补码来实现补码的加减运算规则使得计算机中的减法转化为加法来运算,方便了硬件设计。定点机器数的乘法运算乘法运算:原码一位乘法乘法器件可以采用基于上述串行乘法算法的乘法器,也可以采用高速的阵列乘法器。定点机器数的除法运算除法运算:原码恢复余数除法、原码加减交替法除法的硬件实现中,陈列除法器大大地提高除法运算的速度。浮点数的运算也均由定点数的运算复合而成。浮点运算器由阶码运算部件和尾数运算部件两部分构成。本章重点为定点数和浮点数的运算方法,69,作业,P64:14,15,17,70,The End!,