浮点运算计算机组成原理

上传人:re****.1 文档编号:589903439 上传时间:2024-09-12 格式:PPT 页数:36 大小:410KB
返回 下载 相关 举报
浮点运算计算机组成原理_第1页
第1页 / 共36页
浮点运算计算机组成原理_第2页
第2页 / 共36页
浮点运算计算机组成原理_第3页
第3页 / 共36页
浮点运算计算机组成原理_第4页
第4页 / 共36页
浮点运算计算机组成原理_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《浮点运算计算机组成原理》由会员分享,可在线阅读,更多相关《浮点运算计算机组成原理(36页珍藏版)》请在金锄头文库上搜索。

1、计算机组成原理Principles of Computer Organization广义双语教学课程http:/211.64.192.109/skyclass25/青岛理工大学 校级精品课程http:/ 运算方法和运算部件运算方法和运算部件( 5 )Floating-point computation in a computer can run into three kinds of problems:An operation can be mathematically illegal, such as division by zero. An operation can be legal i

2、n principle, but not supported by the specific format, for example, calculating the square root of 1 or the inverse sine of 2 (both of which result in complex numbers). An operation can be legal in principle, but the result can be impossible to represent in the specified format, because the exponent

3、 is too large or too small to encode in the exponent field. Such an event is called an overflow (exponent too large) or underflow (exponent too small).23.5 浮点数的运算方法浮点数的运算方法Floating-Point Arithmetic浮点加减法运算浮点加减法运算浮点乘法运算浮点乘法运算Floating-Point MultiplicationFloating-Point Addition & Subtraction浮点除法运算浮点除法运

4、算Floating-Point Division3浮点运算浮点运算 Floating-Point Arithmetic浮点运算浮点运算要把阶码阶码和尾数分别处理。尾数分别处理。 阶码阶码的运算运算是定点整数运算定点整数运算,对阶码对阶码的运算运算有四种:阶码加四种:阶码加1,阶码减阶码减1,两阶码求和两阶码求和,两阶码求差两阶码求差。尾数尾数的运算运算是定点小数运算。定点小数运算。运算运算过程中一般取双符号位。一般取双符号位。浮点运算器浮点运算器总是由处理阶码处理阶码和处理尾数处理尾数的两部分组成。两部分组成。Floating-point representation is similar i

5、n concept to scientific notation. The way in which the significand, exponent and sign bits are internally stored on a computer is implementation-dependent.4浮点数的溢出浮点数的溢出 Overflow 当一个数的大小超出了浮点数的表示范围超出了浮点数的表示范围时,机器无法表示该数,就发生溢出溢出。浮点数的溢出判断方法与定点数不同,是对规格化数的阶码规格化数的阶码Exponent进行判断。 当浮点数的阶码大于机器所能表示的最大阶码阶码大于机器所

6、能表示的最大阶码时(即阶码发阶码发生正溢出生正溢出),称为溢出溢出(Overflow)或上溢上溢,此时机器应停止运算,进行出错中断处理。 当浮点数的阶码小于机器所能表示的最小阶码阶码小于机器所能表示的最小阶码时(即阶码发阶码发生负溢出生负溢出),称为下溢下溢(Underflow)。这时一般规定把该浮点数浮点数的尾数强迫置零尾数强迫置零,作为零处理作为零处理,机器可继续运行。 当一个浮点数浮点数的尾数为尾数为0,不论其阶码为何值,或者阶码阶码的值小于等于它能表示的最小数值小于等于它能表示的最小数值(下溢下溢)时,不论其尾数为何值,计算机都把该浮点数看成零零值,称为机器零机器零。浮点数浮点数的尾数

7、运算尾数运算的溢出溢出可以通过右规消除通过右规消除。不算溢出5浮点加减法运算浮点加减法运算Floating-Point Addition & Subtraction 设有两个规格化浮点数规格化浮点数X=MX2Ex , Y=MY2Ey若两数的阶码相等阶码相等,即 EX=EY,有X+Y =将两浮点数的尾数相加,就可得到浮点形式的和。一般情况下,EXEY,计算X+Y要用如下五个步骤来完成: 对阶对阶 尾数相加尾数相加 规格化规格化 舍入舍入 检查阶码是否溢出检查阶码是否溢出。1、浮点加法浮点加法运算 Floating-Point AdditionMX 2Ex + MY 2Ey=(MX + MY )2

8、Ex6 (1) 对阶对阶 Alignment 两数相加,必须使小数点对齐小数点对齐。对于浮点数来说,就是使阶码相等阶码相等。使阶码相等的过程称为对阶对阶。对阶对阶的原则是:小的阶码向大阶码看齐小的阶码向大阶码看齐。 对阶对阶操作,首先比较两数比较两数的阶码值阶码值的大小,即求E=EXEY,并保留其最大值 E=MAX(EX,EY)作为和的阶码和的阶码。当E0时,将阶码小的数阶码小的数的尾数右移尾数右移|E|位位。尾数每右移一次将阶码加尾数每右移一次将阶码加1,直至E0。 为了减少误差,可用附加线路(Guard bits保留位)保留右移出的1位或几位的高位,在以后的舍入操作时用。(2) 尾数相加尾

9、数相加 Add the Significands(Mantissa) 完成对阶后,将两浮点数两浮点数的尾数部分相加尾数部分相加,方法与定点小数定点小数加法加法相同。7(3) 规格化处理规格化处理 Normalize the Result 当运算结果运算结果的尾数部分不是规格化数尾数部分不是规格化数(即不是 00.1或 11.0的形式)时,必须进行规格化处理规格化处理。规格化处理规格化处理的规则: 若结果尾数结果尾数的两个符号位不同两个符号位不同(01或10),表明尾数运算尾数运算结果溢出结果溢出,应进行右规右规。将结果尾数右移一位尾数右移一位,并将阶码阶码的值加加1。 若尾数的运算结果不溢出,

10、但最高数值位与符号位同值最高数值位与符号位同值(即11.1 或 00.0 ),则应进行左规左规。 将尾数尾数连同符号位一起左移一同符号位一起左移一位,并将和的阶码减和的阶码减1,如此反复直至尾数最高数值位与符号位不同为止。8(4) 舍入操作舍入操作 Rounding 在进行对阶或右规操作时,尾数低位的一位或几位数值被移出。如果采用“截断法”把移出的数位丢掉,会影响数值的精度。因此,可采用舍入法来减少误差。 “0”舍舍“1”入法入法 当移出部分的最高位为1时在尾数末位加1,为0时则舍去移出的数值。此方法的最大误差为2(n+1)。 “0”舍“1”入法由于有舍有入,舍入机会均等,有利于减少误差积累。

11、但对末位加1的操作可能引起一连串的进位而使尾数溢出,此时还要再做一次右规。 末位恒置末位恒置1法法无论右移丢失的是何数值,一律将结果结果的末位置末位置1。 把尾数最低位的0置成1,对于正数,是使其值变大,对于负数补码和反码,则使其值变小。而舍入前尾数最低位已经是1时,再置1无实际效用,与截断法无异。9(5) 检查阶码是否溢出检查阶码是否溢出 Check the Exponent Overflow or Underflow 若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志。【例1】浮点数的阶码为4位补码,尾数为9位补码。X0.1101101120

12、10,Y=(0.10101100)2100,求X+Y=?Rounding is used when the exact result of a floating-point operation (or a conversion to floating-point format) would need more digits than there are digits in the significand. There are several different rounding schemes (or rounding modes).10例1浮点数的阶码为4位补码,尾数为9位补码。求X+Y=?

13、X0.110110112010,Y=(0.10101100)2100,解:EX补=0010, EY补= 0100, -EY补= 1100MX补=0.11011011, MY补=1.01010100 对阶E 补= EXEY补 = EX补-EY补= 00010+11100 = 11110即E2。由于X的阶码小,应使MX右移两位,EX加2,EX+Y补=EY补=00100 MX补=00.00110110 11 尾数相加 0 0 . 0 0 1 1 0 1 1 0+) 1 1. 0 1 0 1 0 1 0 0 1 1. 1 0 0 0 1 0 1 0MX+Y补= MX补+MY补= 00.00110110

14、 11 +11.01010100= 11.10001010 11 00010+ 11100 1111011 规格化处理结果的符号位与最高数值位同值,应进行左规。尾数左移1位,阶码减1。MX+Y补=11.00010101 10 , EX+Y补=00011 舍入处理采用0舍1入法, MX+Y补=11.00010110 判断溢出补码表示的阶码的符号位为00,不溢出。结果:MX+Y补=1.00010110, EX+Y补=0011XY(0.11101010)2+011例1浮点数的阶码为4位补码,尾数为9位补码。求X+Y=?122、浮点数减法 Floating-Point Subtraction 对阶,

15、尾数相减尾数相减, 规格化, 舍入, 检查阶码是否溢出。浮点数减法运算的步骤:The fact that floating-point numbers cannot faithfully mimic the real numbers, and that floating-point operations cannot faithfully mimic true arithmetic operations, leads to many surprising situations. This is related to the finite precision with which compute

16、rs generally represent numbers.13浮点乘法运算浮点乘法运算 Floating-Point Multiplication 两浮点数相乘,乘积乘积的尾数尾数为相乘两数两数的尾数之积尾数之积,阶码阶码为两数两数的阶码之和阶码之和,即XY浮点乘法运算浮点乘法运算可分为四个步骤: 阶码相加阶码相加 尾数相乘尾数相乘 规格化和舍入处理规格化和舍入处理 判断溢出判断溢出(MX2Ex )(MY2Ey)=(MXMY)2 Ex+ Ey规格化浮点数规格化浮点数X= MX2Ex , Y= MY2EyTo multiply, the significands are multiplied

17、 while the exponents are added, and the result is rounded and normalized.14 阶码相加阶码相加 Add Exponent 乘数和被乘数的阶码按定点整数补码或移码加法的规则相加阶码按定点整数补码或移码加法的规则相加,得到乘积的阶码。 尾数相乘尾数相乘 Multiply Significands 乘数和被乘数的尾数按定点小数尾数按定点小数(原码或补码原码或补码)乘法运算的乘法运算的方法相乘方法相乘,得到乘积的尾数。 规格化规格化和舍入处理舍入处理 Normalizing & Round 规格化和舍入方法与浮点加减法处理的方法

18、相同。但两个数值位是m位的数相乘,乘积的数值位为2m位。舍入处理后,尾数尾数只保留只保留m个数值位个数值位。 一般情况下,两个规格化数相乘两个规格化数相乘,尾数最多左规一次尾数最多左规一次,因为两个纯小数相乘是不会溢出的。但是有一个特例,当尾数做补码补码乘法乘法的时候,如果乘数和被乘数尾数的值都是-1,则乘积的尾数的值是+1,此时需要做一次右规右规。15 判断溢出判断溢出 Check the Exponent Overflow or Underflow 检查阶码是否溢出。若阶码正常,加减运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零;若阶码上溢,则置溢出标志。Floating-poi

19、nt arithmetic is at its best when it is simply being used to measure real-world quantities over a wide range of scales (such as the orbital period of planet or the mass of the proton), and at its worst when it is expected to model the interactions of quantities expressed as decimal strings that are

20、expected to be exact.An example of the latter case is financial calculations. For this reason, financial software tends not to use a binary floating-point number representation.浮点乘法运算浮点乘法运算 Floating-Point Multiplication16【例2】浮点数,阶码为4位移码位移码(含1符号位),尾数为8位位补码补码(含1符号位),阶码以2为底。X0.11100112-101,Y=(0.1110010

21、)2011,求XY=?解:MX补=MY补= 阶码相加阶码相加EXEY移=EX移=0.1110011= 000110011EY移=1.0001110= 01011101100110= 00011+00011=EX移EY补EX补=EY补=10110011 00011+ 0001100110浮点乘法运算浮点乘法运算 Floating-Point Multiplication17例2 浮点数,阶码为4位移码(含1符号位),尾数为8位补码(含1符号位),阶码以2为底。 尾数相乘尾数相乘 规格化和舍入处理规格化和舍入处理 判断溢出判断溢出MX补MY补=已经是规格化数。MXY补=1.0011010移码移码表

22、示的阶码符号位阶码符号位为00,未溢出。XY=采用采用0舍舍1入法入法,将低将低n位舍去位舍去。1.001100110010100.11100111.0001110=EXY移= 00110X0.11100112-101,Y=(0.1110010)2011,求X*Y=?MX补= 0.1110011MY补= 1.0001110EXY移= 001102(-0.1100110)01018浮点除法运算浮点除法运算 Floating-Point Division 除了除数不能为除数不能为0外,浮点除法对除数和被除数的大小没有限制。 两浮点数相除,商商的尾数尾数部分是被除数的尾数除以除数被除数的尾数除以除数

23、的尾数尾数所得所得的商商,阶码阶码部分是被除数被除数的阶码减去除数阶码减去除数的阶码所得阶码所得的差差。XY=浮点除法运算浮点除法运算分以下五个步骤: 尾数调整尾数调整 阶码求差阶码求差 尾数相除尾数相除 规格化规格化 判断溢出判断溢出(MX2Ex)(MY2Ey)(MXMY )2 ExEy19 尾数调整尾数调整 Dividend Alignment检查 | MX | 是否小于 | MY | 。若 | MX | MY | ,则将MX 右移一位右移一位并将阶码加阶码加1。 阶码求差阶码求差 Subtract Exponent被除数的阶码减去除数的阶码得到商的阶码被除数的阶码减去除数的阶码得到商的阶

24、码(按定点整数补码或移码减法的规则)。 尾数相除尾数相除 Divide Significands两数的尾数按定点小数(原码或补码)除法的规则相除。浮点除法运算浮点除法运算 Floating-Point Division20 判断溢出判断溢出检查阶码是否溢出。 规格化规格化 Normalize the Result由于除数和被除数都是规格化数并经过尾数的调整,所以,尾数相除的结果一般是规格化定点小数。只有一个例外有一个例外,当补码表示的商为-0.5时,必须做一次左左规。In the IEEE 754 standard, zero is signed, meaning that there exi

25、st both a positive zero (+0) and a negative zero (-0). In most run-time environments, positive zero is usually printed as 0, while negative zero may be printed as -0. The two values behave as equal in numerical comparisons, but some operations return different results for +0 and 0.浮点除法运算浮点除法运算 Float

26、ing-Point Division21例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设浮点数格式浮点数格式为:尾符尾数阶码1 2 5 6 9浮点机器数浮点机器数:X浮点=0 0011 1101(1)写出X和Y的规格化浮点机器数规格化浮点机器数。(+110.1)2 = +0.11012+011(-10.01)2 = -0.10012+010EY补=0010MX原=0.1101MY原=

27、1.1001Y浮点=1 0010 100122(2)计算XY (尾数运算用补码加减交替除法)MX补= 尾数调整尾数调整 阶码求差阶码求差 尾数相除尾数相除| MX | MY |MX补=-EY补=EXEY补= 00100+ 11110MY补=1. 0111EX补=0011 EY补=0010 MX原=0.1101 MY原=1.10010.1101MY补=1. 0111-MY补=需进行尾数调整,将MX右移1位,EX加1。EX补= 00100+11110 =EX补+-EY补000100.01101= 0.011101001110 000100.10010舍1入23 规格化规格化 判断溢出判断溢出MXY

28、补=1 . 0 0 1 1MXY原=阶码(补码)的符号位为00,没有溢出。尾数已经是规格化的。结果: XY=-0.11012+0101 . 1 1 01The range of floating-point numbers depends on the number of bits or digits used for representation of the significand (the significant digits of the number) and for the exponent.浮点除法运算浮点除法运算 Floating-Point Division24 计算机中的运

29、算器运算器是对数据进行加工处理的部件对数据进行加工处理的部件,有定点运定点运算器算器和浮点运算器浮点运算器之分。 定点运算器定点运算器主要用于实现对定点整数定点整数或定点小数定点小数的算术运算算术运算,对二进制位串二进制位串的逻辑运算逻辑运算,以及对主存主存的地址计算地址计算等。只有定点运算器的计算机可以用软件实现浮点运算。 运算器能同时处理运算器能同时处理的二进制位数二进制位数称为计算机计算机的字长,字长,它与通通用寄存器用寄存器的位数位数是一致一致的。字长影响到计算机字长影响到计算机的运算速度快慢运算速度快慢,计算精度计算精度和指令功能指令功能的强弱强弱等,是计算机性能的重要指标。定点运算

30、部件定点运算部件 运算器运算器由算术逻辑运算单元、通用寄存器组、状态标志位、算术逻辑运算单元、通用寄存器组、状态标志位、输入数据选择电路输入数据选择电路和输出数据控制电路输出数据控制电路等组成。组成。高档计算机的运算器还有专门的乘法乘法和除法除法部件。 3.6 运算部件运算部件25A typical schematic symbol for an ALU: A & B are the data (registers); R is the output; F is the instruction from the Control Unit; D is an output status. In c

31、omputing, an arithmetic logic unit (ALU) is a digital circuit that performs arithmetic and logical operations.Mathematician John von Neumann proposed the ALU concept in 1945, when he wrote a report on the foundations for a new computer called the EDVAC.Von Neumann stated that an ALU is a necessity f

32、or a computer because it is guaranteed that a computer will have to compute basic mathematical operations, including addition, subtraction, multiplication, and division.ALU26 计算机计算机中的所有算术运算(、所有算术运算(、)都可用加法)都可用加法和移移位位来完成,完成,所以ALU中中的最主要最主要的部件是加法器部件是加法器。ALU也是计算机中传送数据计算机中传送数据的一条重要途径。一条重要途径。通用寄存器组用来暂存参与运

33、算通用寄存器组用来暂存参与运算的数据数据和某些中间运算结果某些中间运算结果。The inputs to the ALU are the data to be operated on (called operands) and a code from the control unit indicating which operation to perform. Its output is the result of the computation.In many designs the ALU also takes or generates as inputs or outputs a set

34、of condition codes from or to a status register. These codes are used to indicate cases such as carry-in or carry-out, overflow, divide-by-zero, etc.ALU27 状态标志位状态标志位用来记录算术记录算术/逻辑运算逻辑运算或测试操作测试操作的结果状态结果状态。这这些状态些状态通常用作程序条件转移指令程序条件转移指令的判断条件判断条件,所以又称为“程程序状态字序状态字”(PSW),“条件码寄存器条件码寄存器”(Condition Codes)等。常用的

35、状态标志(常用的状态标志(Flag)有:有: 进位标志进位标志Cy(加法运算结果最高位产生进位加法运算结果最高位产生进位或减法运算结果减法运算结果最高位有借位时,最高位有借位时,Cy置置1) 零标志零标志Z(运算结果为运算结果为0时,时,Z置置1) 符号标志符号标志S(算术运算结果算术运算结果的最高位为最高位为1即认为是负值负值,S置置1) 溢出标志溢出标志V(算术运算结果发生溢出时,算术运算结果发生溢出时,V置置1) 奇偶标志奇偶标志P(逻辑运算结果有偶数个逻辑运算结果有偶数个1时,时,P置置1)28 输入数据选择电路输入数据选择电路用来选择选择把哪一个哪一个或哪两个数据送入哪两个数据送入A

36、LU,以及决定送入决定送入的数据是数据是以补码补码或是以反码反码的形式。形式。 输出数据控制电路输出数据控制电路一般有移位功能移位功能,并具有把加法器输出加法器输出的数据传送数据传送到通用寄存器通用寄存器的通路通路和通往总线通往总线的控制电路。控制电路。多路开关多路开关多路开关多路开关ALU移位电路移位电路多路开关多路开关控制信号控制信号功能控制功能控制控制信号控制信号斜传电路斜传电路如果如果ALU与各与各寄存器之间有直接数据通路寄存器之间有直接数据通路29如果,如果,ALU与各与各寄存器之间采用总线结构寄存器之间采用总线结构内部单数据总线结构的运算器内部单数据总线结构的运算器暂存器暂存器AL

37、U内部总线内部总线功能控制功能控制移位电路移位电路30缓冲器缓冲器通用寄存器组通用寄存器组ALU移位电路移位电路总总线线1总总线线2内部双数据总线结构的运算器内部双数据总线结构的运算器ALU与各与各寄存器之间采用总线结构寄存器之间采用总线结构31总线总线旁路器旁路器通用寄存器组通用寄存器组ALU移位电路移位电路总线总线1总线总线2总线总线3内部三数据总线结构的运算器内部三数据总线结构的运算器ALU与各与各寄存器之间采用总线结构寄存器之间采用总线结构32浮点运算部件浮点运算部件 Floating Point UnitA Floating Point Unit also performs arit

38、hmetic operations between two values, but they do so for numbers in floating point representation, which is much more complicated than the twos complement representation used in a typical ALU. 每个浮点部件每个浮点部件都包含阶码运算包含阶码运算和尾数运算两个定点运算器尾数运算两个定点运算器。浮点运算器包含浮点加法浮点运算器包含浮点加法、乘法乘法和除法三个浮点运算部件。除法三个浮点运算部件。In order

39、 to do these calculations, a FPU has several complex circuits built-in, including some internal ALUs.333.1.2 十进制数的编码与运算十进制数的编码与运算(1) 8421码的加法运算码的加法运算 两个8421 BCD码数相加如果按照二进制数加法规则进行,当其和小于或等于9时,结果是正确的。例如,计算2348? 0010 0011) 0100 1000 0110 1011低4位大于9+) 0110加6修正 0111 0001和数是71十进制数是以十为模,“逢十进一”的。 但4位二进制数的模是2

40、416,当和大于9而小于16时,加法器并不产生进位。此时,和数是10101111,这6种代码不是8421码,结果是错误的。因此,应对和数的对应位进行加6修正。34当两个8421码数相加,和大于16时,会产生进位。 但这是按模16进位的,故结果比正确的和数小6,也是错误的,需加6修正。如,计算1829? 0001 1000) 0010 1001 0100 0001低位向高位产生进位) 0110加6修正 0100 0111和数是47 实现8421 码加减法运算的加法器是在二进制加法器的基础上,增加一些逻辑电路,根据是否有进位或借位,以及和是否大于9等条件决定是否要进行修正。 也可预先在被加数的各位上加6,然后再与加数相加。若本位有进位,则结果正确,否则再减去6就得到正确结果。这样就不需判断和是否大于9。35(2)余)余3码的加法运算码的加法运算 余3码的每个代码都比对应的8421码多0011。若一位十进制数的8421 码为X,则该数的余3码YX0011。两个一位的余三码数相加,若没有进位,和SY1Y2X 10011X 200110011(X 1X 20011)即和数比正确的余3码数多了0011。故应将多出的0011减去。如,计算15?0100)10001100无进位)0011减3修正 1001 和是636

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号