[发明专利]具有浮点精度保持功能的浮点累加/累减运算方法有效
申请号: | 201210494197.X | 申请日: | 2012-11-28 |
公开(公告)号: | CN103019647A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 倪晓强;邰强强;窦强;王永文;张承义;高军;孙彩霞;隋兵才;陈微;赵天磊;黄立波;王蕾 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F7/485 | 分类号: | G06F7/485 |
代理公司: | 湖南兆弘专利事务所 43008 | 代理人: | 赵洪;谭武艺 |
地址: | 410073 湖南省长沙市砚瓦池正*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 具有 浮点 精度 保持 功能 累加 运算 方法 | ||
技术领域
本发明涉及微处理器体系结构中支持浮点加/减法运算的功能部件,具体涉及一种具有浮点精度保持功能的浮点累加/累减运算方法。
背景技术
浮点数是一种采用固定格式表示数据的方法。浮点数的表示如图1所示,具体包括符号位、浮点数指数字段以及浮点数尾数字段。符号位用于表示数据大于零或者小于零;浮点数指数字段用于确定数据小数点的位置;浮点数尾数字段用于表示数据的有效数字。但是,由于受到计算机字长等条件的约束,浮点数通常无法精确表示数字,随着浮点数运算过程,会逐渐损失数据的精度,降低数据的有效位数。当采用二进制表示时,设符号位为s,浮点指数字段E,宽度为m,尾数字段W,宽度为n,则浮点数能够表示的最大数据为-2^m * W至 +2^m * W,其中对阶操作过程中,需要的最大宽度为 2^m位宽的寄存器。在运算过程中需要 2^m+1位宽的运算器。扩展结果寄存器宽度为2^m+2位宽。
浮点加减法是当代计算机信息处理领域中必须具备的一种运算方法。根据浮点数据表示的特点,在进行浮点加/减运算前,需要首先将浮点数按照指数进行对齐(也称为对阶),对齐后的数据再进行加/减运算并将得到的尾数按照标准进行规格化处理。如图2所示,浮点数据的加/减法运算通常分为求阶差、对阶、尾数相加、规格化与舍入共四个步骤,其中rs1表示输入的第一个操作数、rs2表示输入的第二个操作数,res表示输出的计算结果。
浮点在进行数据对齐过程中将按照两个操作数的指数进行对阶,一般对阶方式按照较大指数向较小指数对齐或者反之。但是,现有技术的浮点加减法在对阶过程中超过浮点数表示位宽的数据将被截断,在此过程中将产生截断误差。运算结束后的规格化和舍入处理将按照最终结果位宽进行截断,按照舍入方式对尾数进行处理,由此截断或者进位将进一步产生截断和舍入误差。在连续多次浮点数据累加/累减运算过程中,由于每次浮点加减法都将产生截断和舍入误差,因此多次运算过程后,浮点数据的有效位数将进一步减少。
发明内容
本发明要解决的技术问题是提供一种浮点运算精度高、硬件逻辑实现简单、应用范围广、使用灵活方便的具有浮点精度保持功能的浮点累加/累减运算方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种具有浮点精度保持功能的浮点累加/累减运算方法,其实施步骤如下:
1)预先扩充对阶寄存器的宽度使得浮点运算前的浮点数对阶操作不进行数据截断、扩展结果寄存器的宽度用于存储临时运算结果,同时扩充二进制加法器的宽度使其满足扩充宽度后的对阶寄存器和扩展结果寄存器;在进行运算时将浮点累加/累减运算分解为第一次浮点加/减法运算指令以及后续的浮点累加/累减指令,获取第一次浮点加/减法运算指令作为当前运算指令,获取当前运算指令的两个操作数并执行下一步;
2)将当前运算指令的两个操作数执行浮点加/减法运算,将运算结果存储在扩展结果寄存器中,同时将运算结果进行规格化与舍入操作后写入目的浮点寄存器;
3)依次执行后续的浮点累加/累减指令,将后续的浮点累加/累减指令作为当前运算指令,从浮点寄存器文件中读出当前运算指令的第一个操作数、从扩展结果寄存器中读取上一次的计算结果作为当前运算指令的第二个操作数,然后返回执行步骤2);在执行最后一个浮点累加/累减指令后,将目的浮点寄存器中的数据作为最终运算结果输出。
作为本发明上述技术方案的进一步改进,所述步骤2)的详细步骤如下:
2.1)求取当前运算指令两个操作数之间的阶差;
2.2)根据所述阶差将两个操作数进行对阶操作,将对阶操作后的数据存储在所述扩充宽度后的对阶寄存器中;
2.3)将两个操作数的浮点数尾数字段通过扩充位宽后的二进制加法器完成加法或者减法计算,将计算结果存储在扩充宽度后的扩展结果寄存器中,同时将运算结果进行规格化与舍入操作后写入目的浮点寄存器。
本发明具有下述优点:
1、本发明通过扩展浮点运算部件和增加累加/累减指令,增加的浮点累加/累减指令仅从浮点寄存器文件中读取一个操作数,另外一个操作数使用浮点运算部件中的扩展结果寄存器的内容作为运算的源寄存器,并将运算结果写入这个扩展结果寄存器中,中间运算结果的位宽能够不进行数据的截断和舍入处理,一方面能够在浮点运算过程中保持浮点精度,在多次迭代的浮点运算过程中,能够提高浮点数据的有效位数,另一方面省去了每一次规格化与舍入操作的步骤,还能够减少对寄存器的读取,提高浮点累加/累减运算的性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210494197.X/2.html,转载请声明来源钻瓜专利网。