浮点运算计算机组成原理.ppt

上传人:zhu****ei 文档编号:3414345 上传时间:2019-12-14 格式:PPT 页数:38 大小:361.50KB
返回 下载 相关 举报
浮点运算计算机组成原理.ppt_第1页
第1页 / 共38页
浮点运算计算机组成原理.ppt_第2页
第2页 / 共38页
浮点运算计算机组成原理.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
计算机组成原理,PrinciplesofComputerOrganization,广义双语教学课程,http:/211.64.192.109/skyclass25/,青岛理工大学校级精品课程,2,第3章运算方法和运算部件,(5),Floating-pointcomputationinacomputercanrunintothreekindsofproblems:,Anoperationcanbemathematicallyillegal,suchasdivisionbyzero.,Anoperationcanbelegalinprinciple,butnotsupportedbythespecificformat,forexample,calculatingthesquarerootof1ortheinversesineof2(bothofwhichresultincomplexnumbers).,Anoperationcanbelegalinprinciple,buttheresultcanbeimpossibletorepresentinthespecifiedformat,becausetheexponentistoolargeortoosmalltoencodeintheexponentfield.Suchaneventiscalledanoverflow(exponenttoolarge)orunderflow(exponenttoosmall).,3,3.5浮点数的运算方法,Floating-PointArithmetic,浮点加减法运算,浮点乘法运算,Floating-PointMultiplication,Floating-PointAddition&Subtraction,浮点除法运算,Floating-PointDivision,4,浮点运算Floating-PointArithmetic,浮点运算要把阶码和尾数分别处理。,阶码的运算是定点整数运算,对阶码的运算有四种:阶码加1,阶码减1,两阶码求和,两阶码求差。,尾数的运算是定点小数运算。,运算过程中一般取双符号位。,浮点运算器总是由处理阶码和处理尾数的两部分组成。,Floating-pointrepresentationissimilarinconcepttoscientificnotation.Thewayinwhichthesignificand,exponentandsignbitsareinternallystoredonacomputerisimplementation-dependent.,5,浮点数的溢出Overflow,当一个数的大小超出了浮点数的表示范围时,机器无法表示该数,就发生溢出。浮点数的溢出判断方法与定点数不同,是对规格化数的阶码Exponent进行判断。,当浮点数的阶码大于机器所能表示的最大阶码时(即阶码发生正溢出),称为溢出(Overflow)或上溢,此时机器应停止运算,进行出错中断处理。,当浮点数的阶码小于机器所能表示的最小阶码时(即阶码发生负溢出),称为下溢(Underflow)。这时一般规定把该浮点数的尾数强迫置零,作为零处理,机器可继续运行。,当一个浮点数的尾数为0,不论其阶码为何值,或者阶码的值小于等于它能表示的最小数值(下溢)时,不论其尾数为何值,计算机都把该浮点数看成零值,称为机器零。,浮点数的尾数运算的溢出可以通过右规消除。,不算溢出,6,浮点加减法运算Floating-PointAddition&Subtraction,设有两个规格化浮点数,X=MX2Ex,Y=MY2Ey,若两数的阶码相等,即EX=EY,有,X+Y=,将两浮点数的尾数相加,就可得到浮点形式的和。,一般情况下,EXEY,计算X+Y要用如下五个步骤来完成:,对阶尾数相加规格化舍入检查阶码是否溢出。,1、浮点加法运算Floating-PointAddition,MX2Ex+MY2Ey,=(MX+MY)2Ex,7,(1)对阶Alignment,两数相加,必须使小数点对齐。对于浮点数来说,就是使阶码相等。使阶码相等的过程称为对阶。,对阶的原则是:小的阶码向大阶码看齐。,对阶操作,首先比较两数的阶码值的大小,即求E=EXEY,并保留其最大值E=MAX(EX,EY)作为和的阶码。,当E0时,将阶码小的数的尾数右移|E|位。,尾数每右移一次将阶码加1,直至E0。,为了减少误差,可用附加线路(Guardbits保留位)保留右移出的1位或几位的高位,在以后的舍入操作时用。,(2)尾数相加AddtheSignificands(Mantissa),完成对阶后,将两浮点数的尾数部分相加,方法与定点小数加法相同。,8,(3)规格化处理NormalizetheResult,当运算结果的尾数部分不是规格化数(即不是00.1或11.0的形式)时,必须进行规格化处理。,规格化处理的规则:,若结果尾数的两个符号位不同(01或10),表明尾数运算结果溢出,应进行右规。将结果尾数右移一位,并将阶码的值加1。,若尾数的运算结果不溢出,但最高数值位与符号位同值(即11.1或00.0),则应进行左规。,将尾数连同符号位一起左移一位,并将和的阶码减1,如此反复直至尾数最高数值位与符号位不同为止。,9,(4)舍入操作Rounding,在进行对阶或右规操作时,尾数低位的一位或几位数值被移出。如果采用“截断法”把移出的数位丢掉,会影响数值的精度。因此,可采用舍入法来减少误差。,“0”舍“1”入法,当移出部分的最高位为1时在尾数末位加1,为0时则舍去移出的数值。此方法的最大误差为2(n+1)。,“0”舍“1”入法由于有舍有入,舍入机会均等,有利于减少误差积累。但对末位加1的操作可能引起一连串的进位而使尾数溢出,此时还要再做一次右规。,末位恒置1法,无论右移丢失的是何数值,一律将结果的末位置1。,把尾数最低位的0置成1,对于正数,是使其值变大,对于负数补码和反码,则使其值变小。而舍入前尾数最低位已经是1时,再置1无实际效用,与截断法无异。,10,(5)检查阶码是否溢出ChecktheExponentOverfloworUnderflow,若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志。,【例1】浮点数的阶码为4位补码,尾数为9位补码。,X0.110110112010,Y=(0.10101100)2100,求X+Y=?,Roundingisusedwhentheexactresultofafloating-pointoperation(oraconversiontofloating-pointformat)wouldneedmoredigitsthantherearedigitsinthesignificand.Thereareseveraldifferentroundingschemes(orroundingmodes).,11,例1浮点数的阶码为4位补码,尾数为9位补码。求X+Y=?,X0.110110112010,Y=(0.10101100)2100,,解:,EX补=0010,EY补=0100,-EY补=1100,MX补=0.11011011,MY补=1.01010100,对阶,E补=EXEY补=EX补-EY补=00010+11100=11110,即E2。由于X的阶码小,应使MX右移两位,EX加2,,尾数相加,12,规格化处理,结果的符号位与最高数值位同值,应进行左规。,尾数左移1位,阶码减1。,MX+Y补=11.0001010110,EX+Y补=00011,舍入处理,采用0舍1入法,MX+Y补=11.00010110,判断溢出,补码表示的阶码的符号位为00,不溢出。结果:,MX+Y补=1.00010110,EX+Y补=0011,XY(0.11101010)2+011,例1浮点数的阶码为4位补码,尾数为9位补码。求X+Y=?,13,2、浮点数减法Floating-PointSubtraction,对阶,尾数相减,规格化,舍入,检查阶码是否溢出。,浮点数减法运算的步骤:,Thefactthatfloating-pointnumberscannotfaithfullymimictherealnumbers,andthatfloating-pointoperationscannotfaithfullymimictruearithmeticoperations,leadstomanysurprisingsituations.Thisisrelatedtothefiniteprecisionwithwhichcomputersgenerallyrepresentnumbers.,14,浮点乘法运算Floating-PointMultiplication,两浮点数相乘,乘积的尾数为相乘两数的尾数之积,阶码为两数的阶码之和,即,XY,浮点乘法运算可分为四个步骤:,阶码相加,尾数相乘,规格化和舍入处理,判断溢出,(MX2Ex)(MY2Ey)=,(MXMY)2Ex+Ey,规格化浮点数,X=MX2Ex,Y=MY2Ey,Tomultiply,thesignificandsaremultipliedwhiletheexponentsareadded,andtheresultisroundedandnormalized.,15,阶码相加AddExponent,乘数和被乘数的阶码按定点整数补码或移码加法的规则相加,得到乘积的阶码。,尾数相乘MultiplySignificands,乘数和被乘数的尾数按定点小数(原码或补码)乘法运算的方法相乘,得到乘积的尾数。,规格化和舍入处理Normalizing&Round,规格化和舍入方法与浮点加减法处理的方法相同。但两个数值位是m位的数相乘,乘积的数值位为2m位。舍入处理后,尾数只保留m个数值位。,一般情况下,两个规格化数相乘,尾数最多左规一次,因为两个纯小数相乘是不会溢出的。但是有一个特例,当尾数做补码乘法的时候,如果乘数和被乘数尾数的值都是-1,则乘积的尾数的值是+1,此时需要做一次右规。,16,判断溢出ChecktheExponentOverfloworUnderflow,检查阶码是否溢出。若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志。,Floating-pointarithmeticisatitsbestwhenitissimplybeingusedtomeasurereal-worldquantitiesoverawiderangeofscales(suchastheorbitalperiodofplanetorthemassoftheproton),andatitsworstwhenitisexpectedtomodeltheinteractionsofquantitiesexpressedasdecimalstringsthatareexpectedtobeexact.,Anexampleofthelattercaseisfinancialcalculations.Forthisreason,financialsoftwaretendsnottouseabinaryfloating-pointnumberrepresentation.,浮点乘法运算Floating-PointMultiplication,17,【例2】浮点数,阶码为4位移码(含1符号位),尾数为8位补码(含1符号位),阶码以2为底。,X0.11100112-101,Y=(0.1110010)2011,求XY=?,解:,MX补=,MY补=,阶码相加,EXEY移=,EX移=,0.1110011,=00011,0011,EY移=,1.0001110,=01011,1011,00110,=00011+00011=,EX移EY补,EX补=,EY补=,1011,0011,00011,+00011,00110,浮点乘法运算Floating-PointMultiplication,例2浮点数,阶码为4位移码(含1符号位),尾数为8位补码(含1符号位),阶码以2为底。,尾数相乘,规格化和舍入处理,判断溢出,MX补MY补=,已经是规格化数。,MXY补=1.0011010,移码表示的阶码符号位为00,未溢出。,XY=,采用0舍1入法,将低n位舍去。,1.00110011001010,0.11100111.0001110=,EXY移=00110,X0.11100112-101,Y=(0.1110010)2011,求X*Y=?,MX补=0.1110011,MY补=1.0001110,EXY移=00110,2,(-0.1100110),010,19,浮点除法运算Floating-PointDivision,除了除数不能为0外,浮点除法对除数和被除数的大小没有限制。,两浮点数相除,商的尾数部分是被除数的尾数除以除数的尾数所得的商,阶码部分是被除数的阶码减去除数的阶码所得的差。,XY=,浮点除法运算分以下五个步骤:,尾数调整,阶码求差,尾数相除,规格化,判断溢出,(MX2Ex)(MY2Ey),(MXMY)2ExEy,20,尾数调整DividendAlignment,检查|MX|是否小于|MY|。,若|MX|MY|,则将MX右移一位并将阶码加1。,阶码求差SubtractExponent,被除数的阶码减去除数的阶码得到商的阶码(按定点整数补码或移码减法的规则)。,尾数相除DivideSignificands,两数的尾数按定点小数(原码或补码)除法的规则相除。,浮点除法运算Floating-PointDivision,21,判断溢出,检查阶码是否溢出。,规格化NormalizetheResult,由于除数和被除数都是规格化数并经过尾数的调整,所以,尾数相除的结果一般是规格化定点小数。,只有一个例外,当补码表示的商为-0.5时,必须做一次左规。,IntheIEEE754standard,zeroissigned,meaningthatthereexistbothapositivezero(+0)andanegativezero(-0).Inmostrun-timeenvironments,positivezeroisusuallyprintedas0,whilenegativezeromaybeprintedas-0.Thetwovaluesbehaveasequalinnumericalcomparisons,butsomeoperationsreturndifferentresultsfor+0and0.,浮点除法运算Floating-PointDivision,例3设浮点数基数为2,阶码为4位补码,尾数为5位原码(均包含1个符号位)。X=+6.5,Y=2.25。,(1)写出X和Y的规格化浮点机器数。,(2)计算XY(尾数运算用补码加减交替除法),解:,X=(+6.5)10=,Y=(-2.25)10=,EX补=0011,设浮点数格式为:,浮点机器数:,X浮点=000111101,(1)写出X和Y的规格化浮点机器数。,(+110.1)2=,+0.11012+011,(-10.01)2=,-0.10012+010,EY补=0010,MX原=0.1101,MY原=1.1001,Y浮点=100101001,(2)计算XY(尾数运算用补码加减交替除法),MX补=,尾数调整,阶码求差,尾数相除,|MX|MY|,MX补=,-EY补=,EXEY补=,MY补=1.0111,EX补=0011EY补=0010MX原=0.1101MY原=1.1001,0.1101,MY补=,1.0111,-MY补=,需进行尾数调整,,将MX右移1位,EX加1。,EX补=,=00100+11110=,EX补+-EY补,00010,0.01101=0.0111,0100,1110,00010,0.1001,0舍1入,24,规格化,判断溢出,MXY补=1.0011,MXY原=,阶码(补码)的符号位为00,没有溢出。,尾数已经是规格化的。,结果:XY=,-0.11012+010,1.1101,Therangeoffloating-pointnumbersdependsonthenumberofbitsordigitsusedforrepresentationofthesignificand(thesignificantdigitsofthenumber)andfortheexponent.,浮点除法运算Floating-PointDivision,25,计算机中的运算器是对数据进行加工处理的部件,有定点运算器和浮点运算器之分。,定点运算器主要用于实现对定点整数或定点小数的算术运算,对二进制位串的逻辑运算,以及对主存的地址计算等。,只有定点运算器的计算机可以用软件实现浮点运算。,运算器能同时处理的二进制位数称为计算机的字长,它与通用寄存器的位数是一致的。字长影响到计算机的运算速度快慢,计算精度和指令功能的强弱等,是计算机性能的重要指标。,定点运算部件,运算器由算术逻辑运算单元、通用寄存器组、状态标志位、输入数据选择电路和输出数据控制电路等组成。高档计算机的运算器还有专门的乘法和除法部件。,3.6运算部件,26,AtypicalschematicsymbolforanALU:ADisanoutputstatus.Incomputing,anarithmeticlogicunit(ALU)isadigitalcircuitthatperformsarithmeticandlogicaloperations.,MathematicianJohnvonNeumannproposedtheALUconceptin1945,whenhewroteareportonthefoundationsforanewcomputercalledtheEDVAC.,VonNeumannstatedthatanALUisanecessityforacomputerbecauseitisguaranteedthatacomputerwillhavetocomputebasicmathematicaloperations,includingaddition,subtraction,multiplication,anddivision.,ALU,27,计算机中的所有算术运算(、)都可用加法和移位来完成,所以ALU中的最主要的部件是加法器。,ALU也是计算机中传送数据的一条重要途径。,通用寄存器组用来暂存参与运算的数据和某些中间运算结果。,TheinputstotheALUarethedatatobeoperatedon(calledoperands)andacodefromthecontrolunitindicatingwhichoperationtoperform.Itsoutputistheresultofthecomputation.,InmanydesignstheALUalsotakesorgeneratesasinputsoroutputsasetofconditioncodesfromortoastatusregister.,Thesecodesareusedtoindicatecasessuchascarry-inorcarry-out,overflow,divide-by-zero,etc.,ALU,28,状态标志位用来记录算术/逻辑运算或测试操作的结果状态。这些状态通常用作程序条件转移指令的判断条件,所以又称为“程序状态字”(PSW),“条件码寄存器”(ConditionCodes)等。,常用的状态标志(Flag)有:,进位标志Cy(加法运算结果最高位产生进位或减法运算结果最高位有借位时,Cy置1),零标志Z(运算结果为0时,Z置1),符号标志S(算术运算结果的最高位为1即认为是负值,S置1),溢出标志V(算术运算结果发生溢出时,V置1),奇偶标志P(逻辑运算结果有偶数个1时,P置1),29,输入数据选择电路用来选择把哪一个或哪两个数据送入ALU,以及决定送入的数据是以补码或是以反码的形式。,输出数据控制电路一般有移位功能,并具有把加法器输出的数据传送到通用寄存器的通路和通往总线的控制电路。,如果ALU与各寄存器之间有直接数据通路,30,如果,ALU与各寄存器之间采用总线结构,内部单数据总线结构的运算器,31,内部双数据总线结构的运算器,ALU与各寄存器之间采用总线结构,32,内部三数据总线结构的运算器,ALU与各寄存器之间采用总线结构,33,浮点运算部件FloatingPointUnit,AFloatingPointUnitalsoperformsarithmeticoperationsbetweentwovalues,buttheydosofornumbersinfloatingpointrepresentation,whichismuchmorecomplicatedthanthetwoscomplementrepresentationusedinatypicalALU.,每个浮点部件都包含阶码运算和尾数运算两个定点运算器。,浮点运算器包含浮点加法、乘法和除法三个浮点运算部件。,Inordertodothesecalculations,aFPUhasseveralcomplexcircuitsbuilt-in,includingsomeinternalALUs.,34,3.1.2十进制数的编码与运算,(1)8421码的加法运算,两个8421BCD码数相加如果按照二进制数加法规则进行,当其和小于或等于9时,结果是正确的。,例如,计算2348?,00100011)0100100001101011低4位大于9+)0110加6修正01110001和数是71,十进制数是以十为模,“逢十进一”的。,但4位二进制数的模是2416,当和大于9而小于16时,加法器并不产生进位。此时,和数是10101111,这6种代码不是8421码,结果是错误的。因此,应对和数的对应位进行加6修正。,35,当两个8421码数相加,和大于16时,会产生进位。,但这是按模16进位的,故结果比正确的和数小6,也是错误的,需加6修正。,如,计算1829?,00011000)0010100101000001低位向高位产生进位)0110加6修正01000111和数是47,实现8421码加减法运算的加法器是在二进制加法器的基础上,增加一些逻辑电路,根据是否有进位或借位,以及和是否大于9等条件决定是否要进行修正。,也可预先在被加数的各位上加6,然后再与加数相加。若本位有进位,则结果正确,否则再减去6就得到正确结果。这样就不需判断和是否大于9。,36,(2)余3码的加法运算,余3码的每个代码都比对应的8421码多0011。若一位十进制数的8421码为X,则该数的余3码YX0011。,两个一位的余三码数相加,若没有进位,和,SY1Y2X10011X200110011(X1X20011),即和数比正确的余3码数多了0011。故应将多出的0011减去。,如,计算15?,0100)10001100无进位)0011减3修正1001和是6,37,若两个余3码数相加产生进位,则应加3修正。,如,计算1618?,01001001)0100101110010100)0011低位加3修正)0011高位减3修正01100111和是34,38,Homework,3-21,22,,TheIEEEhasstandardizedthecomputerrepresentationforbinaryfloating-pointnumbersinIEEE754.Thisstandardisfollowedbyalmostallmodernmachines.,Singleprecision,calledfloatintheClanguagefamily,andrealorreal*4inFortran.Thisisabinaryformatthatoccupies32bitsanditssignificandhasaprecisionof24bits(about7decimaldigits).,Doubleprecision,calleddoubleintheClanguagefamily,anddoubleprecisionorreal*8inFortran.Thisisabinaryformatthatoccupies64bits(8bytes)anditssignificandhasaprecisionof53bits(about16decimaldigits).,下次课有小测验(第3章),设计性大作业1请在第4周末交,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!