第二章 运算方法和运算器_第1页
第二章 运算方法和运算器_第2页
第二章 运算方法和运算器_第3页
第二章 运算方法和运算器_第4页
第二章 运算方法和运算器_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,华北电力大学计算机系王晓霞,计算机组成原理,第二章,本章结构,2.4定点数乘法运算,2.3定点数加减运算及实现,2.2机器数的编码格式,2.1数据信息的表示方法,2.5定点数除法运算,2.6浮点数运算方法,2.7运算器部件及进位链结构,2.8位片式运算器部件Am2901,2.1数据信息的表示方法,数值数据的表示方法,小数点按约定方式标出,1.定点表示法,2.浮点表示,计算机中r取2、4、8、16等,当r=2,N=11.0101,=0.110101210,=1.1010121,=1101.012-10,=0.001101012100,计算机中S正负定点小数,可用补码或原码表示,j正负整数,可用补码或移码表示,规格化数,数值数据的表示方法,(1)浮点数的表示形式,Sf代表浮点数的符号,n其位数反映浮点数的精度,m其位数反映浮点数的表示范围,jf和m共同表示小数点的实际位置,浮点表示,(2)浮点数的表示范围,2(2m1)(12n),2(2m1)2n,2(2m1)(12n),2(2m1)2n,215(12-10),2-152-10,2-152-10,215(12-10),上溢阶码最大阶玛下溢阶码B,YC,0A,0CR,Cn=1?,A+0A,A+BA,A和C右移一位,CR+1CR,CR=n?,结束,xsysps,3.原码一位乘流程,N,Y,N,Y,4.原码一位乘法逻辑结构图,计数器:对移位的次数进行计数,以便判断乘法运算是否结束。当计数器i=n时,计数器i的溢出信号使控制触发器Cx置0,关闭时序脉冲T,乘法操作结束。,设被乘数X补=xs.x1x2xn,乘数Y补=ys.y1y2yn,1.校正法,X补Y补=(2n+1+X)Y=2n+1Y+XY=22n0.y1y2yn+XY=2+XY=XY补(mod2),分两种情况讨论:,被乘数任意,乘数为正,X补=xs.x1x2xn=2+X=2n+1+X(mod2),Y补=Y=0.y1y2yn,即:X补Y补=XY补=X补Y,可见,当乘数为正时,可按原码一位乘法的规则运算,结果不需要校正,二、补码一位乘,被乘数任意,乘数为负,故XY补=X0.y1y2yn补+-X补,X补=xs.x1x2xn,Y补=1.y1y2yn2Y(mod2),则XY补=X补(0.y1y2yn)+-X补,可见,当乘数为负时,先把y补的符号位丢掉不管,仍按原码一位乘运算,最后加X补进行校正,则Y=Y补-2=1.y1y2yn-20.y1y2yn-1,XY=X(0.y1y2yn-1)=X0.y1y2yn-X,将上式中0.y1y2yn视为一个正数,正好与情况相同,二、补码一位乘,校正法的运算规则如下:,设被乘数,乘数,被乘数任意,乘数为正,同原码乘,但加和移位按补码规则运算,乘积的符号自然形成,被乘数任意,乘数为负,乘数y补,去掉符号位,操作同,最后加x补,校正,以小数为例,例:已知x=+0.1101y=0.1011求xy补,解:,X补=00.1101,Y补=1.0101,X补=11.0011,举例,00.0000,00.1101,00.1101,00.0000,00.1101,00.0000,00.0100,0001,00.0110,00.0011,00.1000,11.0011,11.0111,0001,所以XY补11.01110001,XY0.10001111,结果,2.比较法(Booth算法),XY补=X补(0.y1y2yn)Y0,XY补=X补(0.y1y2yn)+-X补YB,Y补C,0A,0CR,0Cn+1,CnCn+1=?,A+BA,A-BA,CR+1CR,CR=n+1?,结束,A和C右移一位,N,Y,10,01,00/11,比较法(Booth算法)流程图,补码一位乘法逻辑结构图,三、原码两位乘,原码乘,符号位和数值位部分分开运算,两位乘,每次用乘数的2位判断原部分积是否加和如何加被乘数,3?,先减1倍的被乘数X再加4倍的被乘数+4X,原码两位乘运算规则:,(1)乘积的符号位单独处理(2)部分积与被乘数均取三位符号位(3)CJ是一位独立的触发器,初始值为0(4)按下表所示的操作进行(5)运算之前,要将乘数凑为偶数。若乘数的数值位n为偶数,乘数取双符号位,这种情况共做(n/2)+1步,最后一步不移位;若乘数的数值位n为奇数,乘数取单符号位,每步处理2位,恰好做(n+1)/2步,最后一步移一位。,1,11,0,11,1,10,0,10,1,01,0,01,1,00,0,00,操作内容,触发器CJ,乘数判断位yi-1yi,原部分积右移两位,0=CJ,原部分积右移两位,1=CJ,原部分积-X,右移两位,1=CJ,原部分积+X,右移两位,0=CJ,原部分积+X,右移两位,0=CJ,原部分积+2X,右移两位,0=CJ,原部分积-X,右移两位,1=CJ,原部分积+2X,右移两位,0=CJ,原码两位乘运算规则表,例:已知x=0.111111y=0.111001求xy原,000.000000,000.111111,000.111111,00.111001,0,初始部分积为0,+X,CJ=0,001.111110,+2X,CJ=0,111.000001,X,CJ=1,000.111111,+X,CJ=0,0,0,1,解:,数值部分的运算,数值部分的运算,xy=0.111000000111,则xy原=1.111000000111,结果,原码两位乘和原码一位乘比较,绝对值,绝对值的补码,逻辑右移,算术右移,n,n,思考n为奇数时,原码两位乘移?次,设上一步的部分积为Pi补,本步的部分积应为:Pi+1补2-1Pi补+(yn-i+1yn-i)X补下一步的部分积应为:Pi+2补2-1Pi+1补+(yn-iyn-i-1)X补将前一个公式中的Pi+1补代入Pi+2补公式中,则Pi+2补2-12-1Pi补+(yn-i+1yn-i)X补+(yn-iyn-i-1)X补2-2Pi补+(yn-i+1yn-i)X补+2(yn-iyn-i-1)X补2-2Pi补+(yn-i+1+yn-i2yn-i-1)X补,四、补码两位乘,由上式可见,补码两位乘可以通过yn-i+1,yn-i,yn-i-1作为判断位来确定运算操作。,补码两位乘法的运算规则为:,(1)两数均用补码表示,符号位参加运算。(2)部分积与被乘数均采用3位符号表示,乘数末位增加一位附加位yn+1,其初始值为0。(3)按下表所示操作。(4)若乘数的数值位n为偶数,乘数取双符号位,这种情况共做(n/2)+1步,最后一步不移位;若乘数的数值位n为奇数,乘数取单符号位这种情况共做(n+1)/2步,最后一步移一位。,1,11,0,11,1,10,0,10,1,01,0,01,1,00,0,00,操作内容,yn-i-1yn-iyn-i+1,原部分积右移两位,原部分积右移两位,原部分积+-X补,右移两位,原部分积+X补,右移两位,原部分积+X补,右移两位,原部分积+2X补,右移两位,原部分积+-X补,右移两位,原部分积+2-X补,右移两位,补码两位乘运算规则表,乘法小结,原码乘符号位单独处理补码乘符号位自然形成,原码乘去掉符号位运算即为无符号数乘法,不同的乘法运算需有不同的硬件支持,整数乘法与小数乘法完全相同可用逗号代替小数点,一、分析笔算除法,x=0.1011y=0.1101求xy,0.1011,0.1101,0.01101,0.01001,0.001101,0.000101,0.00001101,0.00000111,1,商符单独处理,心算上商,余数不动低位补“0”减右移一位的除数,上商位置不固定,商符心算求得,0,0.,1,0,1,0,0,0,?,?,?,2.5定点除法运算,笔算除法和机器除法的比较,商符单独处理,心算上商,符号位异或形成,|x|y|0上商1,|x|y|0上商0,2倍字长加法器,上商位置不固定,1倍字长加法器,在寄存器最末位上商,二、原码除法,以小数为例,被除数不等于0,除数不能为0,约定,1、恢复余数法,0.1011,1.0011,1.0011,1.0011,0.0000,+y*补,0,0.1101,恢复余数,+y*补,+y*补,解:,x原=1.1011y原=1.1101,1,+y*补,y*补=0.1101y*补=1.0011,1.0011,0.1101,1.0011,+y*补,恢复余数,+y*补,上商5次,第一次上商判溢出,余数为正上商1,余数为负上商0,恢复余数,移4次,1,0,1,+y*补,2、不恢复余数法(加减交替法),余数Ri0上商“1”,2Riy*,余数Ri0上商“0”,Ri+y*恢复余数,2(Ri+y*)y*=2Ri+y*,加减交替,恢复余数法运算规则,不恢复余数法运算规则,余数Ri0上商“1”2Riy*,余数Ri0上商“0”2Ri+y*,解:,例,0.1011,1.0011,0.1101,1.0011,1.0011,0.1101,0.0000,+y*补,0,+y*补,+y*补,+y*补,+y*补,x原=1.1011,y*补=0.1101,y*补=1.0011,y原=1.1101,1,1,0,1,结果,Ri补=0.1000,三、补码不恢复余数除法,(1)商值的确定,x补=0.1011,y补=1.1101,Ri补=0.1000,x补=1.1101,y补=0.1011,x*y*,Ri补与y补同号,“够减”,x*y*,Ri补与y补异号,“不够减”,+,+,比较被除数和除数绝对值的大小,x与y同号,小结,x补=0.1011,y补=1.1101,Ri补=0.1000,x补=1.1101,y补=0.1011,Ri补=0.1000,x*y*,Ri补与y补异号,“够减”,x*y*,Ri补与y补同号,“不够减”,+,+,x与y异号,商值的确定,x补与y补同号,正商,按原码上商,x补与y补异号,负商,按反码上商,末位恒置“1”法,小结,(同号),(异号),(异号),(同号),小结,简化为,(同号),(异号),(异号),(同号),(2)商符的形成,除法过程中自然形成,x补和y补同号,x补y补,比较Ri补和y补,同号(够)“1”,异号(不够)“0”,原码上商,小数除法第一次“不够”上“0”,正商,x补和y补异号,x补+y补,比较Ri补和y补,异号(够)“0”,同号(不够)“1”,反码上商,小数除法第一次“不够”上“1”,负商,(3)新余数的形成,加减交替,例,解:,x补=1.0101y补=0.1101y补=1.0011,1.0101,0.1101,1.0011,0.1101,0.1101,0.0000,异号做加法,1,0.0010,同号上“1”,异号上“0”,+y补,异号上“0”,+y补,同号上“1”,末位恒置“1”,0,0,1,1,+y补,一、浮点加减运算,x=Sx2jx,y=Sy2jy,1.对阶,(1)求阶差,(2)对阶原则,j=jxjy=,jx=jy已对齐,jxjy,jxjy,x向y看齐,y向x看齐,x向y看齐,y向x看齐,小阶向大阶看齐,2.6浮点数运算方法,例如,x=0.1101201y=(0.1010)211,求x+y,解:,x补=00,01;00.1101y补=00,11;11.0110,1.对阶,j补=jx补jy补,=00,01,11,01,11,10,阶差为负(2),11.1001,x+y补=00,11;11.1001,对阶,x补=00,11;00.0011,+,+,对阶后的Sx补,求阶差,2.尾数求和,3.规格化,(1)规格化数的定义,(2)规格化数的判断,S0,真值,原码,补码,反码,规格化形式,S0,规格化形式,真值,原码,补码,反码,原码不论正数、负数,第一数位为1,补码符号位和第1数位不同,特例,S=1,1补是规格化的数,(3)左规,(4)右规,上例x+y补=00,11;11.1001,左规后x+y补=00,10;11.0010,x+y=(0.1110)210,当尾数溢出(1)时,需右规,例1,解:,x补=00,010;00.110100,y补=00,001;00.101100,对阶,尾数求和,j补=jx补jy补,=00,010,11,111,100,001,阶差为+1,y补=00,010;00.010110,Sx补=00.110100,Sy补=00.010110,对阶后的Sy补,01.001010,+,+,尾数溢出需右规,右规,x+y补=00,010;01.001010,x+y补=00,011;00.100101,右规后,x+y=0.100101211,4.舍入,在对阶和右规过程中,可能出现尾数末位丢失引起误差,需考虑舍入,(1)0舍1入法,(2)恒置“1”法,例2,解:,x补=11,011;11.011000,y补=11,100;00.111000,对阶,j补=jx补jy补,=11,011,00,100,11,111,阶差为1,x补=11,100;11.101100,x=(0.101000)2-101,y=(0.111000)2-100,+,尾数求和,Sx补=11.101100,Sy补=11.001000,+,110.110100,右规,x+y补=11,100;10.110100,x+y补=11,101;11.011010,右规后,xy=(0.100110)2-11,5.溢出判断,设机器数为补码,尾数为规格化形式,并假设阶符取2位,阶码的数值部分取7位,数符取2位,尾数取n位,则该补码在数轴上的表示为,2127(1),2-128(2-1+2-n),2-1282-1,2127(12-n),阶码01,阶码01,阶码10,按机器零处理,二、浮点乘除运算,x=Sx2jx,y=Sy2jy,1.乘法,xy=(SxSy)2jx+jy,2.除法,(2)尾数乘除同定点运算,4.浮点运算部件,阶码运算部件,尾数运算部件,3.步骤,(3)规格化,(1)阶码采用补码定点加(乘法)减(除法)运算,思考题,假定有4个整数用8位补码分别表示r1=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是()A.r1xr2B.r2xr3C.r1xr4D.r2xr4,2.一个C语言程序在一台32位机器上运行。程序中定义了三个变量xyz,其中x和z是int型,y为short型。当x=127,y=-9时,执行赋值语句z=x+y后,xyz的值分别是()AX=0000007FH,y=FFF9H,z=00000076HBX=0000007FH,y=FFF9H,z=FFFF0076HCX=0000007FH,y=FFF7H,z=FFFF0076HDX=0000007FH,y=FFF7H,z=00000076H3.浮点数加减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含2位符号位)。若有两个数X=2729/32,Y=255/8,则用浮点加法计算X+Y的最终结果是()A001111100010B.001110100010C010000010001D.发生溢出,思考题,2.7运算器部件及进位链结构,2.7.1加法器,一、全加器3个输入量:Ai,Bi,Ci-12个输入量:本位和Si,向高位的进位Ci全加器的逻辑表达式为:Si=AiBiCi-1Ci=AiBi+(AiBi)Ci-1,2.7.1加法器,2.7.1加法器,二、串行加法器与并行加法器,2.7.2并行加法器的进位链,一、进位信号的基本逻辑Ci=AiBi+(AiBi)Ci-1设Gi=AiBi为进位产生函数Pi=AiBi为进位传递函数PiCi-1为传送进位,2.7.2并行加法器的进位链,二、串行进位串行进位又称行波进位,每一级进位直接依赖于前一级进位,进位信号的逻辑式如下:C1=A1B1+(A1B1)C0=G1+P1C0C2=A2B2+(A2B2)C1=G2+P2C1Cn=AnBn+(AnBn)Cn-1=Gn+PnCn-1,2.7.2并行加法器的进位链,图2-22串行进位的并行加法器,C1,S1,C0,A1,B1,C2,S2,A2,B2,Cn,Sn,An,Bn,Cn-1,2.7.2并行加法器的进位链,三、并行进位并行进位又称先行进位、跳跃进位,其特点是各级进位信号同时形成。逻辑式如下:C1=G1+P1C0C2=G2+P2C1=G2+P2G2+P2P1C0C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0Cn=Gn+PnCn-1=Gn+PnGn-1+PnPn-1P2G1+PnPn-1P1C0,2.7.2并行加法器的进位链,四、分组并行进位主要思想:将n位全加器分成若干小组,组内各位之间并行进位,组间可以并行进位,也可以串行进位。1.组内并行,组间串行的进位链也称为单重分组跳跃进位。以16位加法器为例讨论。第一小组组内各位的进位逻辑表达式为:C1=G1+P1C0C2=G2+P2C1=G2+P2G2+P2P1C0C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,2.7.2并行加法器的进位链,C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,G,P,C=C4=G+PC0,同理,C=C8=G+PCC=C12=G+PCC=C16=G+PC,2.7.2并行加法器的进位链,图2-234位一组并行进位示意图,2.7.2并行加法器的进位链,图2-2416位组内并行组间串行进位链框图,2.7.2并行加法器的进位链,2.组内并行,组间并行的进位链仍以16位加法器为例。由串行进位:,C=C4=G+PC0C=C8=G+PCC=C12=G+PCC=C16=G+PC,2.7.2并行加法器的进位链,C=C4=G+PC0C=C8=G+PC=G+PG+PPC0C=C12=G+PC=G+PG+PPG+PPPC0C=C16=G+PC=G+PG+PPG+PPPG+PPPPC0,2.7.2并行加法器的进位链,为了要产生每个小组的进位生成函数Gi和进位传递函数Pi,需要对小组内的并行进位线路进行修改:第一小组内产生G、P、C3、C2、C1,不产生C4;第二小组内产生G、P、C7、C6、C5,不产生C8;第三小组内产生G、P、C11、C10、C9,不产生C12;第四小组内产生G、P、C15、C14、C13,不产生C16。,2.7.2并行加法器的进位链,各小组的进位生成函数和进位传递函数的逻辑表达式为:G=G4+P4G3+P4P3G2+P4P3P2G1G=G8+P8G7+P8P7G6+P8P7P6G5G=G12+P12G11+P12P11G10+P12P11P10G9G=G16+P16G15+P16P15G14+P16P15P14G13P=P4P3P2P1P=P8P7P6P5P=P12P11P10P9P=P16P15P14P13,2.7.2并行加法器的进位链,2.7.3多位ALU部件,一、4位ALU芯片,图2-26SN74181芯片示意图,2.7.3多位ALU部件,2.7.3多位ALU部件,*:A加A=2A,算术左移一位,2.7.3多位ALU部件,二、多位ALU部件的设计,74181ALU为4位并行加法器,组成16位的并行加法器怎么办?4片(组)74181连接怎样连?组与组之间串行连接组与组之间并行连接,2.7.3多位ALU部件,图2-2716位组内并行组间串行进位ALU,C0,C4,C8,C12,C16,1.组间串行,组内并行进位的16位ALU的设计,2.7.3多位ALU部件,2.组内并行,组间并行的16位ALU的设计,2.7.3多位ALU部件,并行进位部件SN74182的芯片示意图,图2-29SN74182芯片示意图,2.7.3多位ALU部件,图2-3016位两级并行进位ALU重分组跳跃,SN74182,P,G,P3,G3,P2,G2,P1,G1,P0,G0,Cn+z,Cn+y,Cn+x,SN74181,SN74181,SN74181,SN74181,C0,P,G,P,G,P,G,P,G,4片SN74181和1片SN74182构成的16位两级并行进位ALU,2.7.3多位ALU部件,例:用SN74181和SN74182设计如下的32位ALU(1)行波进位方式(2)两重进位方式(3)三重进位方式解:(1)行波进位方式的32位ALU,SN74181,SN74181,SN74181,SN74181,.,C0,C4,C8,C28,C32,2.7.3多位ALU部件,(2)两重进位方式的32位ALU,2.7.3多位ALU部件,(3)三重进位方式的32位ALU,SN74182,SN74181,SN74181,SN74181,SN74181,SN74182,SN74181,SN74181,SN74181,SN74181,C0,SN74182,2.8位片式运算器部件Am2901,2.8.1Am2901的内部组成,一、Am2901的内部组成,F,2.8.1Am2901的内部组成,二、Am2901的控制与操作1.选择运算功能(3种算术运算、5种逻辑运算),2.8.1Am2901的内部组成,2.选择数据来源,2.8.1Am2901的内部组成,3.选择结果处置,Am2901的操作使用,操作功能,控制信号B口A口I8I7I6I5I4I3I2I1I0Cn,R0R0+R1,R2R2R0,QR0,右移R0R0+R1,R0R0R1,YA口,YF,0000,011,0001,000,001,0,0010,0000,010,001,001,1,0000,101,0001,000,001,0,0000,000,000,100,0,/0000,0000,010,0001,100,001,0,YF,0000,011,0001,100,001,0,2.8.1Am2901的内部组成,三、外部的数据1.通过D接收外部线路送来的数据。2.应正确给出芯片的最低位的进位输入信号Cn,需要在Am2901芯片之外用另外的电路解决。3.关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论