浮点运算方法和浮点运算器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浮点加减法运算
舍入
(1) “0舍1入”法,即右移时丢掉的最高位为0,则 舍去;是1,则将尾数的末位加1(相当于进入)。 (2)“恒置1”法,即不管移掉的是0还是1,都把尾数 的末位置1。
溢出处理
阶码最高位为00或11不溢出 [E]补=01 XX…X为上溢,真正溢出,需做溢出处理。 [E] 补=10 XX…X为下溢,浮点数值趋于零,用机器零 表示。
解:浮点表示为: [X]浮= 00 010,0. 11011011 [Y]浮= 00 100,1. 01010100 (1)对阶
原则:小阶向大阶 • 设△E>0,表示Ex>Ey,则移动y的尾数,My右移△E 位,问题:为什么要小阶向大阶看齐?
• 阶差=Ex-Ey=00 010- 00 100 =11 110 • 即阶差为-2,Mx右移两位,Ex加2
2.6 浮点运算方法和浮点运算器
2.6.1 浮点加法、减法运算 2.6.2 浮点乘法、除法运算 2.6.3 浮点运算流水线 2.6.4 浮点运算器实例
2.6.1 浮点加法、减法运算
1、浮点加减运算
设有两个浮点数x和y,它们分别为 x=2Ex· Mx y=2Ey· My 其中 E x和 E y分别为数x和y的阶码 ,M x和 M y为 数x和y的尾数。两浮点数进行加法和减法的运算规 则是 x±y=(Mx2Ex-Ey±My)2Ey, 设Ex<=Ey
[X]浮=00100, 0.00110110(11)
(2)尾数求和
+
0.00110110(11) 1.01010100 1.10001010(11)
(3)规格化和舍入处理
结果的符号位与最高符号数值位相同, 应执行左规处理,所谓左规格化的规则, 就是尾数左移1位,阶码减1,所以结果为 1.00010101(10) ,阶码为00 011 舍入处理,采用0舍1入法处理,则有 1. 0 0 0 1 0 1 0 1 + 1 1. 0 0 0 1 0 1 1 0
返回
本章小结
一个定点数由符号位和数值域两部分组成。按小数点位置 按IEEE754标准,一个浮点数由符号位S、阶码E、尾数M 三个域组成。其中阶码E的值等于指数的真值e加上一个固 为了使计算机能直接处理十进制形式的数据,采用两种表 示形式:(1)字符串形式,主要用在非数值计算的应用领域; (2)压缩的十进制数串形式,用于直接完成十进制数的算术
(4).判溢出 阶码不溢出。所以最终的结果为 X+Y=2011*(-0.101)
2.6.2 浮点乘法和除法运算
设有两个浮点数x和y: x=2Ex· Mx y=2Ey· My x×y=2(Ex+Ey)· (Mx×My) x÷y=2(Ex-Ey)· (Mx÷My) 乘除运算分为四步
在流水线中必须是连续的任务,只有不断的提供任务才能充 分发挥流水线的效率 把一个任务分解为几个有联系的子任务。每个子任务由一个 专门的功能部件实现 在流水线中的每个功能部件之后都要有一个缓冲寄存器,或 称为锁存器 流水线中各段的时间应该尽量相等,否则将会引起“堵塞” 和“断流”的现象 流水线需要有装入时间和排空时间,只有当流水线完全充满 时,才能充分发挥效率
0操作数检查 阶码加减操作 尾数乘除操作 结果规格化和舍入处理
2.6.2 浮点乘法和除法运算
•浮点乘、除法的运算步骤: 1.浮点数的阶码运算 阶码通常用补码和移码形式表示。对于 移码来说:(课本的证明) [X+Y]移=[X]移+[Y]补 [X-Y]移=[X]移+[-Y]补 在用移码进行计算时,判断溢出的条件 是当结果的最高符号位为1时,则产生了溢 出。
丢失
两个负数相加,结果为正数, 说明产生了溢出.
但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出。 此时只是说明尾数的结果为不规格化数,应进行右规。
(3).规格化和舍入处理
由于结果产生了溢出,应执行右规处理,所谓右规格 化的规则,就是尾数右移1位,阶码加1,所以结果为 1.011(1) ,阶码为011 舍入处理,采用恒舍法处理,则有尾数为1.011
2.6.2 浮点乘法和除法运算
移码采用双符号位,为了对溢出进行判断 01 为正 00 为负 10 上溢 11 下溢
x=+011,y=+110,求[x+y]移 和 [x-y]移,并判断是否溢出。
[x]移=01 011, [y]补=00 110, [-y]补=11 010 [x+y]移=[x]移+[y]补=10 001, 结果上溢。 [x-y]移=[x]移+[-y]补=00 101, 结果正确,为-3。
本章小结
数的真值变成机器码时有四种表示方法:原码表示法,反 码表示法,补码表示法,移码表示法。其中移码主要用于 表示浮点数的阶码E,以利于比较两个指数的大小和对阶 字符信息属于符号数据,是处理非数值领域的问题。国际 上采用的字符系统是七单位的ASCII码。直接使用西文标 准键盘输入汉字,进行处理,并显示打印汉字,是一项重 大成就。为此要解决汉字的输入编码、汉字内码、字模码 等三种不同用途的编码。
解:浮点表示为: [X]浮=001,1. 001 [Y]浮=010,0. 101 (1)对阶 [△E]补=[Ex]补-[Ey]补=001+110=111 即△E为-1,X的阶码小,应使Mx右移1位, Ex加1, 得: [X]浮=010, 1.100(1)
(2).尾数求差: [-Y]补=1.011 1 . 1 0 0 (1) + 1.011 1 1 0 . 1 1 1 (1)
只要尾数最低为1或者移出位中有1数值位,使最低位置1 0舍1入 * 尾数用补码表示时 丢失的位全为0,不必舍入。 丢失的最高位为0,以后各位不全为0时;或者最高为1, 以后各位全为0时,不必舍入。 丢失的最高位为1,以后各位不全为0时,则在尾数的 最低位入1的修正操作。
2.6.2 浮点乘法和除法运算
流水线原理
设过程段 S i 所需的时间为 τ i , 缓冲寄存器的延时为 τ l,线性流水线的时钟周期定义为 τ =max{τ i}+τ l=τ m+τ l 流水线处理的频率为 f=1/τ 。
流水线原理
一个具有 k 级过程段的流水线处理 n 个任务需要的时钟 周期数为Tk=k+(n-1), 所需要的时间为: T=Tk × τ 而同时,顺序完成的时间为:T=n×k×τ k级线性流水线的加速比: Ck = TL = n· k Tk k+(n-1)
判溢出 阶码的符号位为 00 ,不溢出。所以最终的 结果为: X+Y=2011*(-0.11101010)
结果规格化 (1)在浮点加减运算时,尾数求和的结果也可以得到 01.ф …ф 或10.ф …ф ,即两符号位不等,此时将运算结 果右移以实现规格化表示,称为向右规格化。 规则:尾数右移1位,阶码加1 (2)结果是00.0..01.....或11.1...10...时,则向左规 格化 规则:尾数左移1位,阶码减1,直到规格化 右规,阶码加1,左规,阶码减1 例子中左规为11.00010101(10),阶码减1为00011 练习:01.1101 10.0001 11.1001
2.6.1 浮点加法、减法运算
•浮点数的加法、减法运算
设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey, 实现浮点加减法算的基本步骤分为四步完成: 0操作数检查:用来判断两个操作数中是否有一 个为0. 对阶操作:即比较两个浮点数的阶码值的大小, 求E=Ex-Ey,然后将小阶对大阶。 尾数进行加或减运算:实现尾数的加减运算, 执行两个完成对阶后的浮点数的求和(差)的过程
溢出判断和处理
课堂作业
设[x1]补=11.01100000,
[x2]补=11.01100001, [x3]补=11.01101000, [x4]补=11.01111001,
求执行只保留小数点后4位有效数字的 舍入操作值。
• 例:设X=2001*(-0.111),Y=2010*0. 101 ,求X-Y.(假设两数均以补码表示,阶码采 用3位,尾数采用4位,均包括符号位.)
设有浮点数x=2-5×0.0110011,y= 23×(-0.1110010),阶码用4位移码表示,尾数 (含符号位)用8位补码表示。求[x×y]浮。要 求用补码完成尾数乘法运算,运算结果尾数保 留高8位(含符号位),并用尾数低位字长值处理 舍入操作。
[解:] 移码采用双符号位,尾数补码采用单符号位,则有 [Mx]补=0.0110011, [My]补=1.0001110, [Ey]移=01 011, [Ey]补=00 011, [Ex]移=00 011, [x]浮=00 011, 0.0110011, [y]浮=01 011, 1.0001110 (1)判断操作是否为”0”,求阶码和 [Ex+Ey]移=[Ex]移+[Ey]补=00 011+00 011=00 110, 值为移码形式-2。 (2) 尾数乘法运算可采用补码阵列乘法器实现,即有 [Mx]补×[My]补=[0.0110011]补×[1.0001110]补 =[1.1010010,1001010]补 (3) 规格化处理 乘积的尾数符号位与最高数值位符号相同,不是规格化的数,需 要左规,阶码变为00 101(-3), 尾数变为 1.0100101,0010100。 (4) 舍入处理 尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故 尾数为1.0100101 。 最终相乘结果为 [x×y]浮=00 101,1.0100101 其真值为 x×y=2-3×(-0.1011011)
Leabharlann Baidu
规格化:若得到的结果不满足规格化规则,就 必须把它变成规格化的数。
规格化规则: 尾数的符号为01或10时,绝对值大于1,尾数 右移1位,阶码+1
尾数的符号为11或00时,补码表示的数往左移 n位,将尾数移成1.0或0.1
注意:在执行对阶或右规操作时,会使位数低位上的 一位或若干位的数值被移掉,使数值精度受到影响, 可以把移掉的几个高位的值保存起来供舍入使用。
舍入处理(对阶和向右规格化时)
就近舍入(0舍1入):类似”四舍五入”,丢弃 的最高位为1,进1 朝0舍入:截尾 朝+∞舍入:正数多余位不全为”0”,进1;负 数,截尾 朝-∞ 舍入:负数多余位不全为”0”,进1;正 数,截尾
阶码上溢,一般将其认为是+∞和-∞ 。 阶码下溢,则数值为0
2.6.1 浮点加法、减法运算
2.6.1 浮点加法、减法运算
[例25] 设x=22×0.11011011,y=24×0.10101100
1、0操作数检查(非0) 2、对阶:阶码对齐后才能加减。规则是阶码小的向 阶码大的数对齐; 若△E=0,表示两数阶码相等,即Ex=Ey; 若△E>0,表示Ex>Ey; 若△E<0,表示Ex>Ey。 当Ex≠Ey 时,要通过尾数的移动以改变Ex或Ey, 使之相等。
2.
浮点数的尾数处理 第一种方法:无条件地丢掉正常尾数最 低位之后的全部数值,这种方法称为截断 处理。 第二种方法:运算过程中保留右移中移 出的若干高位的值,最后按某种规则用这 些位上的值修正尾数,这种处理称为舍入 处理。
2.6.2 浮点乘法和除法运算
尾数处理
截断 舍入 * 尾数用原码表示时
流水线浮点运算器
A=a×2P, B=b×2q 在4级流水线加法器中实现上述浮点加法时, 分为以下操作: (1) 求阶差 (2) 对阶 (3) 相加 (4) 规格化
2.6.4浮点运算器实例
浮点运算器实例
CPU之外的浮点运算器(数学协处理器)如80287 完成浮点运算功能,不能单用。 可以和80386或80286异步并行工作。 高性能的80位字长的内部结构。有8个80位字长以堆栈方式 管理的寄存器组。 浮点数格式完全符合IEEE标准。 CPU之内的浮点运算器(486DX以上)
2.6.2 浮点乘法和除法运算
实现的逻辑框图
C A M
阶码加法器
尾数相加以 及控制线路
C
B
2.6.3 浮点运算流水线
1、提高并行性的两个渠道: 空间并行性:增加冗余部件,如增加多操作部件处 理机和超标量处理机 时间并行性:改善操作流程如:流水线技术
2.6.3 浮点运算流水线
2、流水技术原理