浮点运算计算机组成原理_第1页
浮点运算计算机组成原理_第2页
浮点运算计算机组成原理_第3页
浮点运算计算机组成原理_第4页
浮点运算计算机组成原理_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1第1页,共38页,2023年,2月20日,星期日第3章运算方法和运算部件(5)Floating-pointcomputationinacomputercanrunintothreekindsofproblems:Anoperationcanbemathematicallyillegal,suchasdivisionbyzero.Anoperationcanbelegalinprinciple,butnotsupportedbythespecificformat,forexample,calculatingthesquarerootof−1ortheinversesineof2(bothofwhichresultincomplexnumbers).Anoperationcanbelegalinprinciple,buttheresultcanbeimpossibletorepresentinthespecifiedformat,becausetheexponentistoolargeortoosmalltoencodeintheexponentfield.Suchaneventiscalledanoverflow(exponenttoolarge)orunderflow(exponenttoosmall).2第2页,共38页,2023年,2月20日,星期日§3.5浮点数的运算方法Floating-PointArithmetic浮点加减法运算浮点乘法运算Floating-PointMultiplicationFloating-PointAddition&Subtraction浮点除法运算Floating-PointDivision3第3页,共38页,2023年,2月20日,星期日浮点运算

Floating-PointArithmetic浮点运算要把阶码和尾数分别处理。阶码的运算是定点整数运算,对阶码的运算有四种:阶码加1,阶码减1,两阶码求和,两阶码求差。尾数的运算是定点小数运算。运算过程中一般取双符号位。浮点运算器总是由处理阶码和处理尾数的两部分组成。Floating-pointrepresentationissimilarinconcepttoscientificnotation.Thewayinwhichthesignificand,exponentandsignbitsareinternallystoredonacomputerisimplementation-dependent.4第4页,共38页,2023年,2月20日,星期日浮点数的溢出Overflow当一个数的大小超出了浮点数的表示范围时,机器无法表示该数,就发生溢出。浮点数的溢出判断方法与定点数不同,是对规格化数的阶码Exponent进行判断。当浮点数的阶码大于机器所能表示的最大阶码时(即阶码发生正溢出),称为溢出(Overflow)或上溢,此时机器应停止运算,进行出错中断处理。当浮点数的阶码小于机器所能表示的最小阶码时(即阶码发生负溢出),称为下溢(Underflow)。这时一般规定把该浮点数的尾数强迫置零,作为零处理,机器可继续运行。当一个浮点数的尾数为0,不论其阶码为何值,或者阶码的值小于等于它能表示的最小数值(下溢)时,不论其尾数为何值,计算机都把该浮点数看成零值,称为机器零。浮点数的尾数运算的溢出可以通过右规消除。不算溢出5第5页,共38页,2023年,2月20日,星期日浮点加减法运算Floating-PointAddition&Subtraction设有两个规格化浮点数X=MX·2Ex, Y=MY·2Ey若两数的阶码相等,即EX=EY,有X+Y=将两浮点数的尾数相加,就可得到浮点形式的和。一般情况下,EX≠EY,计算X+Y要用如下五个步骤来完成:①对阶②尾数相加③规格化④舍入⑤检查阶码是否溢出。1、浮点加法运算Floating-PointAdditionMX·2Ex+MY·2Ey=(MX+MY

)·2Ex6第6页,共38页,2023年,2月20日,星期日

(1)对阶Alignment两数相加,必须使小数点对齐。对于浮点数来说,就是使阶码相等。使阶码相等的过程称为对阶。对阶的原则是:小的阶码向大阶码看齐。

对阶操作,首先比较两数的阶码值的大小,即求ΔE=EX-EY,并保留其最大值E=MAX(EX,EY)作为和的阶码。当ΔE≠0时,将阶码小的数的尾数右移|ΔE|位。尾数每右移一次将阶码加1,直至ΔE=0。为了减少误差,可用附加线路(Guardbits保留位)保留右移出的1位或几位的高位,在以后的舍入操作时用。(2)尾数相加

AddtheSignificands(Mantissa)完成对阶后,将两浮点数的尾数部分相加,方法与定点小数加法相同。7第7页,共38页,2023年,2月20日,星期日(3)规格化处理

NormalizetheResult当运算结果的尾数部分不是规格化数(即不是00.1×…×或11.0×…×的形式)时,必须进行规格化处理。规格化处理的规则:①若结果尾数的两个符号位不同(01或10),表明尾数运算结果溢出,应进行右规。将结果尾数右移一位,并将阶码的值加1。②若尾数的运算结果不溢出,但最高数值位与符号位同值(即11.1×或00.0×),则应进行左规。将尾数连同符号位一起左移一位,并将和的阶码减1,如此反复直至尾数最高数值位与符号位不同为止。8第8页,共38页,2023年,2月20日,星期日(4)舍入操作

Rounding在进行对阶或右规操作时,尾数低位的一位或几位数值被移出。如果采用“截断法”把移出的数位丢掉,会影响数值的精度。因此,可采用舍入法来减少误差。①“0”舍“1”入法当移出部分的最高位为1时在尾数末位加1,为0时则舍去移出的数值。此方法的最大误差为2-(n+1)。“0”舍“1”入法由于有舍有入,舍入机会均等,有利于减少误差积累。但对末位加1的操作可能引起一连串的进位而使尾数溢出,此时还要再做一次右规。②末位恒置1法无论右移丢失的是何数值,一律将结果的末位置1。把尾数最低位的0置成1,对于正数,是使其值变大,对于负数补码和反码,则使其值变小。而舍入前尾数最低位已经是1时,再置1无实际效用,与截断法无异。9第9页,共38页,2023年,2月20日,星期日(5)检查阶码是否溢出

ChecktheExponentOverfloworUnderflow若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志。【例1】浮点数的阶码为4位补码,尾数为9位补码。X=0.11011011×2010,Y=(-0.10101100)×2100,求X+Y=?Roundingisusedwhentheexactresultofafloating-pointoperation(oraconversiontofloating-pointformat)wouldneedmoredigitsthantherearedigitsinthesignificand.Thereareseveraldifferentroundingschemes(orroundingmodes).10第10页,共38页,2023年,2月20日,星期日[例1]浮点数的阶码为4位补码,尾数为9位补码。求X+Y=?X=0.11011011×2010,Y=(-0.10101100)×2100,解:[EX]补=0010,[EY]补=0100,[-EY]补=1100[MX]补=0.11011011,[MY]补=1.01010100①对阶[ΔE]

补=[EX-EY]补

=[EX]补+[-EY]补=00010+11100=11110即ΔE=-2。由于X的阶码小,应使MX右移两位,EX加2,[EX+Y]补=[EY]补=00100[MX]补=00.0011011011②尾数相加

00.00110110+)11.0101010011.10001010[MX+Y]补=[MX]补+[MY]补=00.0011011011+11.01010100=11.1000101011

00010+

111001111011第11页,共38页,2023年,2月20日,星期日③规格化处理结果的符号位与最高数值位同值,应进行左规。尾数左移1位,阶码减1。[MX+Y]补=11.0001010110,[EX+Y]补=00011④舍入处理采用0舍1入法,[MX+Y]补=11.00010110⑤判断溢出补码表示的阶码的符号位为00,不溢出。结果:[MX+Y]补=1.00010110,[EX+Y]补=0011X+Y=(-0.11101010)×2+011[例1]浮点数的阶码为4位补码,尾数为9位补码。求X+Y=?12第12页,共38页,2023年,2月20日,星期日2、浮点数减法Floating-PointSubtraction①对阶,②尾数相减,③规格化,④舍入,⑤检查阶码是否溢出。浮点数减法运算的步骤:Thefactthatfloating-pointnumberscannotfaithfullymimictherealnumbers,andthatfloating-pointoperationscannotfaithfullymimictruearithmeticoperations,leadstomanysurprisingsituations.Thisisrelatedtothefiniteprecisionwithwhichcomputersgenerallyrepresentnumbers.13第13页,共38页,2023年,2月20日,星期日浮点乘法运算Floating-PointMultiplication两浮点数相乘,乘积的尾数为相乘两数的尾数之积,阶码为两数的阶码之和,即X·Y=浮点乘法运算可分为四个步骤:①阶码相加②尾数相乘③规格化和舍入处理④判断溢出(MX·2Ex

)·(MY·2Ey)=(MX·MY)·2Ex+Ey规格化浮点数X=MX·2Ex, Y=MY·2EyTomultiply,thesignificandsaremultipliedwhiletheexponentsareadded,andtheresultisroundedandnormalized.14第14页,共38页,2023年,2月20日,星期日①阶码相加

AddExponent乘数和被乘数的阶码按定点整数补码或移码加法的规则相加,得到乘积的阶码。②尾数相乘

MultiplySignificands乘数和被乘数的尾数按定点小数(原码或补码)乘法运算的方法相乘,得到乘积的尾数。③规格化和舍入处理

Normalizing&Round规格化和舍入方法与浮点加减法处理的方法相同。但两个数值位是m位的数相乘,乘积的数值位为2m位。舍入处理后,尾数只保留m个数值位。一般情况下,两个规格化数相乘,尾数最多左规一次,因为两个纯小数相乘是不会溢出的。但是有一个特例,当尾数做补码乘法的时候,如果乘数和被乘数尾数的值都是-1,则乘积的尾数的值是+1,此时需要做一次右规。15第15页,共38页,2023年,2月20日,星期日④判断溢出

ChecktheExponentOverflowor

Underflow

检查阶码是否溢出。若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志。Floating-pointarithmeticisatitsbestwhenitissimplybeingusedtomeasurereal-worldquantitiesoverawiderangeofscales(suchastheorbitalperiodofplanetorthemassoftheproton),andatitsworstwhenitisexpectedtomodeltheinteractionsofquantitiesexpressedasdecimalstringsthatareexpectedtobeexact.Anexampleofthelattercaseisfinancialcalculations.Forthisreason,financialsoftwaretendsnottouseabinaryfloating-pointnumberrepresentation.浮点乘法运算Floating-PointMultiplication16第16页,共38页,2023年,2月20日,星期日【例2】浮点数,阶码为4位移码(含1符号位),尾数为8位补码(含1符号位),阶码以2为底。X=0.1110011×2-101,Y=(-0.1110010)×2011,求X·Y=?解:[MX]补=[MY]补=①阶码相加[EX+EY]移=[EX]移=0.1110011=000110011[EY]移=1.0001110=01011101100110=00011+00011=[EX]移+[EY]补[EX]补=[EY]补=10110011

00011+0001100110浮点乘法运算Floating-PointMultiplication17第17页,共38页,2023年,2月20日,星期日[例2]浮点数,阶码为4位移码(含1符号位),尾数为8位补码(含1符号位),阶码以2为底。②尾数相乘③规格化和舍入处理④判断溢出[MX]补×[MY]补=已经是规格化数。[MX·Y]补=1.0011010移码表示的阶码符号位为00,未溢出。X·Y=采用0舍1入法,将低n位舍去。1.001100110010100.1110011×1.0001110=[EX·Y]移=00110X=0.1110011×2-101,Y=(-0.1110010)×2011,求X*Y=?[MX]补=0.1110011[MY]补=1.0001110[EX·Y]移=00110×2(-0.1100110)—010第18页,共38页,2023年,2月20日,星期日浮点除法运算Floating-PointDivision除了除数不能为0外,浮点除法对除数和被除数的大小没有限制。两浮点数相除,商的尾数部分是被除数的尾数除以除数的尾数所得的商,阶码部分是被除数的阶码减去除数的阶码所得的差。X÷Y=浮点除法运算分以下五个步骤:①尾数调整②阶码求差③尾数相除④规格化⑤判断溢出(MX·2Ex)÷(MY·2Ey)=(MX÷MY

)·2Ex-Ey19第19页,共38页,2023年,2月20日,星期日①尾数调整

DividendAlignment检查|MX|

是否小于|MY|

。若|MX|≥|MY|

,则将MX

右移一位并将阶码加1。②阶码求差

SubtractExponent被除数的阶码减去除数的阶码得到商的阶码(按定点整数补码或移码减法的规则)。③尾数相除

DivideSignificands两数的尾数按定点小数(原码或补码)除法的规则相除。浮点除法运算Floating-PointDivision20第20页,共38页,2023年,2月20日,星期日⑤判断溢出检查阶码是否溢出。④规格化

NormalizetheResult由于除数和被除数都是规格化数并经过尾数的调整,所以,尾数相除的结果一般是规格化定点小数。只有一个例外,当补码表示的商为-0.5时,必须做一次左规。IntheIEEE754standard,zeroissigned,meaningthatthereexistbotha"positivezero"(+0)anda"negativezero"(-0).Inmostrun-timeenvironments,positivezeroisusuallyprintedas"0",whilenegativezeromaybeprintedas"-0".Thetwovaluesbehaveasequalinnumericalcomparisons,butsomeoperationsreturndifferentresultsfor+0and−0.浮点除法运算Floating-PointDivision21第21页,共38页,2023年,2月20日,星期日[例3]设浮点数基数为2,阶码为4位补码,尾数为5位原码(均包含1个符号位)。X=+6.5,Y=—2.25。(1)写出X和Y的规格化浮点机器数。(2)计算X÷Y(尾数运算用补码加减交替除法)解:X=(+6.5)10=Y=(-2.25)10=[EX]补=0011设浮点数格式为:尾符尾数阶码12569浮点机器数:[X]浮点=000111101(1)写出X和Y的规格化浮点机器数。(+110.1)2=

+0.1101×2+011(-10.01)2=

-0.1001×2+010[EY]补=0010[MX]原=0.1101[MY]原=1.1001[Y]浮点=100101001第22页,共38页,2023年,2月20日,星期日(2)计算X÷Y(尾数运算用补码加减交替除法)[MX]补=①尾数调整②阶码求差③尾数相除∵|MX|>|MY|[MX]补=[-EY]补=[EX—EY]补=

00100+11110[MY]补=1.0111[EX]补=0011[EY]补=0010[MX]原=0.1101[MY]原=1.10010.1101[MY]补=1.0111[-MY]补=∴需进行尾数调整,将MX右移1位,EX加1。[EX]补==00100+11110=[EX]补+[-EY]补000100.01101=0.011101001110

000100.10010舍1入第23页,共38页,2023年,2月20日,星期日④规格化⑤判断溢出[MX÷Y]补=1.0011[MX÷Y]原=阶码(补码)的符号位为00,没有溢出。尾数已经是规格化的。结果:X÷Y=-0.1101×2+0101.1101Therangeoffloating-pointnumbersdependsonthenumberofbitsordigitsusedforrepresentationofthesignificand(thesignificantdigitsofthenumber)andfortheexponent.浮点除法运算Floating-PointDivision24第24页,共38页,2023年,2月20日,星期日计算机中的运算器是对数据进行加工处理的部件,有定点运算器和浮点运算器之分。

定点运算器主要用于实现对定点整数或定点小数的算术运算,对二进制位串的逻辑运算,以及对主存的地址计算等。只有定点运算器的计算机可以用软件实现浮点运算。运算器能同时处理的二进制位数称为计算机的字长,它与通用寄存器的位数是一致的。字长影响到计算机的运算速度快慢,计算精度和指令功能的强弱等,是计算机性能的重要指标。定点运算部件运算器由算术逻辑运算单元、通用寄存器组、状态标志位、输入数据选择电路和输出数据控制电路等组成。高档计算机的运算器还有专门的乘法和除法部件。§3.6运算部件25第25页,共38页,2023年,2月20日,星期日AtypicalschematicsymbolforanALU:A&Barethedata(registers);Ristheoutput;FistheinstructionfromtheControlUnit;Disanoutputstatus.Incomputing,anarithmeticlogicunit(ALU)isadigitalcircuitthatperformsarithmeticandlogicaloperations.MathematicianJohnvonNeumannproposedtheALUconceptin1945,whenhewroteareportonthefoundationsforanewcomputercalledtheEDVAC.VonNeumannstatedthatanALUisanecessityforacomputerbecauseitisguaranteedthatacomputerwillhavetocomputebasicmathematicaloperations,includingaddition,subtraction,multiplication,anddivision.ALU26第26页,共38页,2023年,2月20日,星期日计算机中的所有算术运算(+、-、×、÷)都可用加法和移位来完成,所以ALU中的最主要的部件是加法器。ALU也是计算机中传送数据的一条重要途径。通用寄存器组用来暂存参与运算的数据和某些中间运算结果。TheinputstotheALUarethedatatobeoperatedon(calledoperands)andacodefromthecontrolunitindicatingwhichoperationtoperform.Itsoutputistheresultofthecomputation.InmanydesignstheALUalsotakesorgeneratesasinputsoroutputsasetofconditioncodesfromortoastatusregister.Thesecodesareusedtoindicatecasessuchascarry-inorcarry-out,overflow,divide-by-zero,etc.ALU27第27页,共38页,2023年,2月20日,星期日状态标志位用来记录算术/逻辑运算或测试操作的结果状态。这些状态通常用作程序条件转移指令的判断条件,所以又称为“程序状态字”(PSW),“条件码寄存器”(ConditionCodes)等。常用的状态标志(Flag)有:①进位标志Cy(加法运算结果最高位产生进位或减法运算结果最高位有借位时,Cy置1)②零标志Z(运算结果为0时,Z置1)③符号标志S(算术运算结果的最高位为1即认为是负值,S置1)④溢出标志V(算术运算结果发生溢出时,V置1)⑤奇偶标志P(逻辑运算结果有偶数个1时,P置1)28第28页,共38页,2023年,2月20日,星期日输入数据选择电路用来选择把哪一个或哪两个数据送入ALU,以及决定送入的数据是以补码或是以反码的形式。输出数据控制电路一般有移位功能,并具有把加法器输出的数据传送到通用寄存器的通路和通往总线的控制电路。………………多路开关多路开关ALU移位电路多路开关控制信号功能控制控制信号斜传电路如果ALU与各寄存器之间有直接数据通路29第29页,共38页,2023年,2月20日,星期日如果,ALU与各寄存器之间采用总线结构内部单数据总线结构的运算器暂存器ALU内部总线功能控制移位电路30第30页,共38页,2023年,2月20日,星期日缓冲器通用寄存器组ALU移位电路总线1总线2内部双数据总线结构的运算器ALU与各寄存器之间采用总线结构31第31页,共38页,2023年,2月20日,星期日总线旁路器通用寄存器组ALU移位电路总线1总线2总线3内部三数据总线结构的运算器ALU与各寄存器之间采用总线结构32第32页,共38页,2023年,2月20日,星期日浮点运算部件FloatingPointUnitAFloatingPointUnitalsoperformsarithmeticoperationsbetweentwovalues,buttheydosofornumbersinfloatingpointrepresentation,whichismuchmorecomplicatedthanthetwo'scomplementrepresentationusedinatypicalALU.每个浮点部件都包含阶码运算和尾数运算两个定点运算器。浮点运算器包含浮点加法、乘法和除法三个浮点运算部件。Inordertodothesecalculations,aFPUhasseveralcomplexcircuitsbuilt-in,includingsomeinternalALUs.33第33页,共38页,2023年,2月20日,星期日§3.1.2

十进制数的编码与运算(1)8421码的加法运算两个8421BCD码数相加如果按照二进制数加法规则进行,当其和小于或等于9时,结果是正确的。例如,计算23+48=?

00100011+)0100100001101011 低4位大于9+)0110 加6修正

01110001 和数是71十进制数是以十为模,“逢十进一”的。但4位二进制数的模是24=16,当和大于9而小于16时,加法器并不产生进位。此时,和数是1010~1111,这6种代码不是8421码,结果是错误的。因此,应对和数的对应位进行加6修正。34第34页,共38页,2023年,2月20日,星期日当两个8421码数相加,和大于16时,会产生进位。但这是按模16进位的,故结果比正确的和数小6,也是错误的,需加6修正。如,计算18+29=?

00011000+)0010100101000001

温馨提示

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

评论

0/150

提交评论