收藏 分享(赏)

用限位数方法设计精确浮点加减法运算器[管理资料].doc

上传人:精品资料 文档编号:8568666 上传时间:2019-07-03 格式:DOC 页数:5 大小:303.50KB
下载 相关 举报
用限位数方法设计精确浮点加减法运算器[管理资料].doc_第1页
第1页 / 共5页
用限位数方法设计精确浮点加减法运算器[管理资料].doc_第2页
第2页 / 共5页
用限位数方法设计精确浮点加减法运算器[管理资料].doc_第3页
第3页 / 共5页
用限位数方法设计精确浮点加减法运算器[管理资料].doc_第4页
第4页 / 共5页
用限位数方法设计精确浮点加减法运算器[管理资料].doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、用限位数方法设计精确浮点加减法运算器姜咏江(对外经济贸易大学信息学院 北京 100013)摘要:仅用二进制补码制来说明机器如何表示数值运算,存在多方面的缺失,很难说清楚机器计算的理论依据,并带来了设计冗余和资 源的浪费。限位数不用 书写正 负号就可以表示有符号数。只用无符号数做加法就能够进行加减运算。用限位数方法 设计浮点运算器, 阶码 不用引进移码就能够方便进行计算,而且能够方便进行尾数扩充,得到精确的 计算结果。关键词:计算机体系结构,限位数,硬件设计, 软件设计中图分类号:TP301,TP311Design Exact Floats ADD/SUB with theFixed-Lengt

2、h NumberJiang Yongjiang(School of Information Technology & Management Engineering,UIBE,Beijing 100013):Abstract:Only use Binary-complement to explain the machine how to represent numerical computation, there are many losses. It is difficult to clarify the theoretical basis for machine-computation an

3、d bring the design redundancy and waste of resources. The Fixed-length number can express the value not use the - or + symbol. Only use unsigned addition will be able to carry out addition and subtraction. Use the Fixed-length number to design the floats ADD/SUB, Exponent no need to shift and can fa

4、cilitate the mantissa expansion, get accurate results.Key words: architecture,fixed-length number,hardware,software1 引言国际标准化组织给出的单精度 IEEE754 标准(见 图 1)将 32 位数用一位表示尾数的正负号,8 位做阶码,尾数 23 位,并且做了如下规定:(1( 如果阶码 E=0,并且尾数 M=0,这个数是0(和符号位相关);(2( 如果阶码 E=2255-1,并且尾数 M=0,这个数是无穷大(同样和符号位相关);(3( 如果阶码 E=22551,并且尾数 M0,这

5、 不是一个数(NaN)。SE ( 阶码 ) M ( 尾数 )符号 小数点位置图 1 IEEE754 浮点数的格式计算机浮点数是数学“科学记数法”表达的数,一般形式为:M2 E,这种形式可以与定点数通过移动小数点的方法自由转换。IEEE754 标准的规定不仅使一定长度数码表数范围减少了,而且失去了运用浮点数进行精确计算的可能。本文根据限位数理论和方法 1设计了 32 位可实现精确计算的浮点数加减法运算器,阶码 8 位,尾码24 位,没有尾码的符号位。阶码 E 的值是-128+127 的所有整数,不论 24 位尾码 M 如何,32 位浮点格式都表示惟一确定的数。通过保留移出数据的方式,该浮点运算器

6、就能够运用于任意范围的浮点数精确计算。2 限位浮点数的表示限位数理论使用数码原样排列的算术运算来完成数值计算,同样也适合浮点数算数运算。2.1 限位数和对称制我们将位数固定只用数码表示的数叫“限位数” 。为了表示出限位数的长度,无效数码不能够省略。两限位数之和为数的总数,那么一个叫另一个“对称数” 。因而 0 和负数没有对称数。两个数码之和为最大数码时,一个叫另一个数码的“反码” 。一个限位数的对称数可以用“求反加一”得到。用较大的限位数来表示其对称数的相反数,0 就是 0,这就是比补码制更一般化的“对称制” 2。对称制中判断数的正负只要与对称点比较即可。限位数可以直接表示一定范围的正负数,不

7、用在运算过程中转换。保值扩充限位数,正数添“0” ,负数添最大数码。例如,3 位十进制的限位数是 000999,总数是 1000 个,其中较大的一半 501999 的每个数都表示较小一半对称数 499001 的相反数,对称点 500 的对称数是自身,这种情况规定为负数(基数是奇数时没有这种情况) 。2.2 用限位数表示浮点数浮点数的限位数表示不必分为单精度或双精度,也不必将阶码用移码表示,数码的直接运算就能得到任何精确度的计算结果。由 y=M2E函数的性质知,阶码 E 的值越大,2 E的值越大。按着我们这里规定的阶码 8 位,尾码 24 位,浮点数直接表数范围应为: -0.8388608212

8、7+0.83886072 127,阶码的变化范围是-128+127 的整数。需要指出,限位数小数点的左方是不能够随便添加“0”的,原因是限位数的最高位数码关系到该数的正负,并且小数点左面有数码就会增加限位数的位数。例如,0.866 和.866 在限位数表示中是不同值的,前者是一个 4 位正数,而后者是一个 3 位的负数。如果将后者变为 4 位数,左面的最高位应是添最大数码 9,那么应有.866 = 9.866。因为浮点数尾数的小数点隐含在左边的位置,并且对阶时是将较小阶码的尾数右移进行的,因而不会出现小数点左面添 0 的情况。3 可精确计算的浮点运算器设计限位浮点数加减法器的设计要分为对阶和计

9、算两大步骤。对阶不会产生阶码溢出,如果用 24 位加减法器来进行第二步工作,那么设计时要考虑数据位数扩充问题。3.1 设计思想计算机浮点运算的不精确来自于单精度或双精度的浮点数不能根据需要进行位数扩充。浮点数在尾数移位的过程中,由于位数限制,阶码小的尾数右移时就会丢失掉一些有效数字。如果将丢失的有效数值随时能够捡回来,那么就可以实现精确的计算。图 2 所示是两个浮点数精确加减运算的流程,其特点是直接将存储形式的数据 A、B 分离阶码和尾码,然后对阶和计算,移出的尾数如果包含有效数字,则将移出部分适当变化后添加到结果的尾部。阶码比较确定移位数阶码小的移出尾数浮点数 A 浮点数 B分离 阶码 尾码

10、浮点数 A 浮点数 B 移移阶码 大数 加减 小数结果浮点数 S 依加减变化的移出尾数图 2 浮点数精确加减运算流程借助于存储器我们可以将移出的尾数保留起来,这样可以根据计算的需要,改变尾数的长度。当使用固定长度的浮点加减法运算器完成超长尾数的浮点数运算时,只要将超长的尾数进行分段加减运算处理,就可以确保得到精确的运算结果。3.2 可精确计算的浮点加减法器运算实例根据前面提到的设计思想,作者设计了浮点数加减运算器。下面给出这个浮点运算器三张仿真图,借此来展示浮点数精确计算设计的可行性。8 位阶码对阶时,尾码保值移动最大为 255 位。仿真 图 3 的 Name 栏下 sub=1 做减法,sub

11、=0 做加法;f_a 与 f_b 是参加运算的两个 32 位浮点数;remain 显示移位后得到的尾数;f_out 显示加减运算 24 位的结果;256 位的 space 显示被移出的尾码,mov_f 是移出不为 0 的标志;over 是尾数加减运算溢出标志;osign 显示 f_a 阶码与 f_b 阶码的差,为防止判定大小时溢出定为 9 位编码,最高位为 1 指示差为负。图 3 阶码最小最大的两数相加减图 3 中 f_a 阶码是最小数 8h80,f_b 阶码是最大数 8h7F,因而差是负数 9h101,距离为 9h0FF,说明 f_a 的尾数右移了 255 位。也即是 24h999999 右

12、移了 255 位,因为它是负数,故保值右移应该用“1”补位,于是 space 的前 231 位都是 1,而 space 的最低位保持初始值 0,故而我们见到 space 的低十六进制位是 24h333332,其余位全是 “F”。稳定的运算输出需要 3 个时钟周期,故图中由加变到减运算移动之后的尾码移出的尾码加法的结果减法的结果时,over 出现 3 个节拍的溢出显示,此时的判断和减法运算无关。如果我们要得到这两数加法运算的精确值,只要将 space 的有效数字添加在结果的后面即可。如果是做减法,并且 space 是 f_b 的移出,那么要“求反加一” ,并且这种 space“求反加一”没有向上

13、的进位时,还要将结果 f_out 的尾码减一之后与变化的 space 相连。图 4 中两浮点数的阶码都是负数,8hB0=-80,8hA3=-93 ,故 8hB0 8hA3,f_b 的尾码 24b001100100101010101110111 要右移 13 位,得剩余为 24b000000000000000110010010=24h000192,移出的部分是=16hABB8 。尾码加法的近似结果是 24h6545AA,尾码减法的近似结果是 24h654286。加法运算的精确结果是 40h6545AAABB8;而减法运算需要先求移出的 16b1010101110111000 对称码,即有16b0

14、101010001000111+1b1=16b0101010001001000 = 16h5448,再连接减法运算的“结果减一” ,得到减法运算精确结果 40h6542855448。由于精确计算只考虑移出的有效数字不是 0,而不是 0 的限位数对称码不会产生进位,因而当移动的是 f_b 的尾数时,减法运算的精确结果获得必须用尾数差的结果减一后去连接移出部分的对称码。图 5 验证的是阶码相同正数浮点数加减运算,由于移出到 space 中没有有效数字,故得到的加减运算结果都应该是精确的,但加法运算的结果溢出。要解决溢出,需要将公共阶码提高单位 1,也就是要将两数的尾码都右移一位,这用软件的方法就可

15、以完成。图 4 阶码都是负数的加减运算图 5 阶码相同的加减运算4 结论计算机运算器电路设计当中,一般用所谓的二进制的“补码制” ,会用很多种“碰值”的手段来完成运算器的设计,这样常会“漏掉”边界值。这里运用“限位数”进行能精确计算的浮点数电路设计,不仅简单易行,节省器件资源,而且在理论上能够透彻地解释机器数值运算问题,为软硬件结合浮点数运算的精确性提供了可行的方法。参考文献1 姜咏江计算机设计的基础理论限位数2009 中国计算机大会论文集 p3622 姜咏江补码制理论的理解北京,计算机工程与应用 2004.53姜咏江计算机原理综合课程设计北京,清华大学出版社 2009.6姜咏江CCF/CIE 高级会员。对外经济贸易大学副教授。主研计算机理论与设计方法,系统结构,操作系统等。E_mail:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报