CN103019647B - 具有浮点精度保持功能的浮点累加/累减运算方法 - Google Patents

具有浮点精度保持功能的浮点累加/累减运算方法 Download PDF

Info

Publication number
CN103019647B
CN103019647B CN201210494197.XA CN201210494197A CN103019647B CN 103019647 B CN103019647 B CN 103019647B CN 201210494197 A CN201210494197 A CN 201210494197A CN 103019647 B CN103019647 B CN 103019647B
Authority
CN
China
Prior art keywords
floating
register
point
result
accumulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210494197.XA
Other languages
English (en)
Other versions
CN103019647A (zh
Inventor
倪晓强
邰强强
窦强
王永文
张承义
高军
孙彩霞
隋兵才
陈微
赵天磊
黄立波
王蕾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201210494197.XA priority Critical patent/CN103019647B/zh
Publication of CN103019647A publication Critical patent/CN103019647A/zh
Application granted granted Critical
Publication of CN103019647B publication Critical patent/CN103019647B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种具有浮点精度保持功能的浮点累加/累减运算方法,实施步骤如下:1)扩充对阶寄存器、扩展结果寄存器、二进制加法器的宽度;将运算分解为浮点加/减法运算以及浮点累加/累减指令;2)执行浮点加/减法运算,将运算结果存储在扩展结果寄存器中,将运算结果进行规格化与舍入操作后写入目的浮点寄存器;3)执行浮点累加/累减指令,每一次执行浮点累加/累减指令时,从浮点寄存器文件中读出第一个操作数、从扩展结果寄存器中读取第二个操作数,然后返回执行步骤2);在执行最后一个浮点累加/累减指令后,将目的浮点寄存器中的数据输出。本发明具有浮点运算精度高、硬件逻辑实现简单、应用范围广、使用灵活方便的优点。

Description

具有浮点精度保持功能的浮点累加/累减运算方法
技术领域
本发明涉及微处理器体系结构中支持浮点加/减法运算的功能部件,具体涉及一种具有浮点精度保持功能的浮点累加/累减运算方法。
背景技术
浮点数是一种采用固定格式表示数据的方法。浮点数的表示如图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、本发明通过扩展浮点运算部件和增加累加/累减指令,增加的浮点累加/累减指令仅从浮点寄存器文件中读取一个操作数,另外一个操作数使用浮点运算部件中的扩展结果寄存器的内容作为运算的源寄存器,并将运算结果写入这个扩展结果寄存器中,中间运算结果的位宽能够不进行数据的截断和舍入处理,一方面能够在浮点运算过程中保持浮点精度,在多次迭代的浮点运算过程中,能够提高浮点数据的有效位数,另一方面省去了每一次规格化与舍入操作的步骤,还能够减少对寄存器的读取,提高浮点累加/累减运算的性能。
2、本发明浮点处理部件对比常用浮点运算部件增加的复杂度有限,适合硬件实现,具有硬件逻辑实现简单的优点。
3、本发明能够适用于主流科学计算类处理器浮点运算部件的设计,具有应用范围广、使用灵活方便的优点。
附图说明
图1为现有技术浮点数数据格式示意图。
图2为现有技术浮点运算的一般流程示意图。
图3为本发明实施例的实施流程示意图。
图4为本发明实施例中应用的单精度浮点数据格式示意图。
具体实施方式
如图3所示,本实施例具有浮点精度保持功能的浮点累加/累减运算方法的实施步骤如下:
1)预先扩充对阶寄存器的宽度使得浮点运算前的浮点数对阶操作不进行数据截断、扩展结果寄存器的宽度用于存储临时运算结果,同时扩充二进制加法器的宽度使其满足扩充宽度后的对阶寄存器和扩展结果寄存器;在进行运算时将浮点累加/累减运算分解为第一次浮点加/减法运算指令以及后续的浮点累加/累减指令,获取第一次浮点加/减法运算指令作为当前运算指令,获取当前运算指令的两个操作数并执行下一步;
2)将当前运算指令的两个操作数执行浮点加/减法运算,将运算结果存储在扩展结果寄存器中,同时将运算结果进行规格化与舍入操作后写入目的浮点寄存器;
3)依次执行后续的浮点累加/累减指令,将后续的浮点累加/累减指令作为当前运算指令,从浮点寄存器文件中读出当前运算指令的第一个操作数、从扩展结果寄存器中读取上一次的计算结果作为当前运算指令的第二个操作数,然后调用执行步骤2);在执行最后一个浮点累加/累减指令后,将目的浮点寄存器中的数据作为最终运算结果输出。
累加/累减运算公式为:
Sum = Sum +/- A                                                                                      (1)
公式(1)中,sum为求和或差的结果,A为运算数据矩阵,包含A0,A1,…An个元素。本实施例在运算过程中,每次完成一个求和或差的运算,公式(1)右侧的操作数Sum从扩展结果寄存器中读取,公式(1)右侧的操作数A从浮点寄存器文件中读取,公式(1)左侧的运算结果Sum则写入扩展结果寄存器中。本实施例增加的浮点累加/累减指令仅从浮点寄存器文件中读取一个操作数(rs1),另外一个操作数(rs2)使用浮点运算部件中的扩展结果寄存器的内容作为运算的源寄存器,并将运算后的结果写入这个扩展结果寄存器中,步骤2)的位宽能够实现不进行数据的截断和舍入处理,一方面能够在浮点运算过程中保持浮点精度,在多次迭代的浮点运算过程中,能够提高浮点数据的有效位数,另一方面省去了每一次规格化与舍入操作的步骤,还能够减少对寄存器的读写,提高浮点累加/累减运算的性能。
本实施例中对浮点运算部件涉及如下改进:
A1)扩充对阶寄存器的宽度,使得运算之前的浮点数对齐操作中数据不进行截断处理,不会产生浮点数尾数的截断误差。
A2)扩充扩展结果寄存器的宽度,将运算的结果临时保存在扩展结果寄存器中,同时将最终的运算结果通过截断和舍入处理的结果写入目标浮点寄存器中。扩充扩展结果寄存器的宽度时,按照可能的最大精度要求设计该寄存器的宽度,使其能够保持运算过程的数据而不产生舍入误差。
A3)扩充浮点运算器(二进制加法器)的宽度,使其计算位宽能够满足A1)和A2)中扩充位宽的需求。
A4)扩展浮点累加/累减指令,一个操作数使用A2)中给出扩充宽度的扩展结果寄存器的内容作为运算的源寄存器来获取一个操作数,并且在运算后将运算结果写入这个扩充宽度的扩展结果寄存器中,同时将运算结果数据写入对应的目标浮点寄存器中。
本实施例中,步骤2)的详细步骤如下:
2.1)求取当前运算指令两个操作数之间的阶差;
2.2)根据阶差将两个操作数进行对阶操作,将对阶操作后的数据存储在扩充宽度后的对阶寄存器中;
2.3)将两个操作数的浮点数尾数字段通过扩充位宽后的二进制加法器完成加法或者减法计算,将计算结果存储在扩充宽度后的扩展结果寄存器中,同时将运算结果进行规格化(截断)与舍入操作后写入目的浮点寄存器。
2.1)~2.3)能够有效保持扩展结果寄存器中未进行规格化与舍入操作浮点数据的浮点精度,能够在浮点运算过程中保持浮点精度,在多次迭代的浮点运算过程中,能够提高浮点数据的有效位数,另一方面还能够减少对寄存器的读写,提高浮点累加/累减运算的性能。
步骤3)执行完毕以后,则其后的指令为普通的浮点运算指令,则暂存在扩展结果寄存器中的数据随着其他浮点运算结果的产生而被新的结果覆盖。
如图4所示,本实施例中应用的浮点数为32位IEEE单精度浮点数据,该单精度浮点数据共32位,其中符号位1位,指数字段8位(采用移码表示),尾数字段23位(采用补码表示)。针对32位IEEE单精度浮点数据进行浮点累加/累减运算方法的具体步骤如下:
B1)预先扩充对阶寄存器的宽度使得浮点运算前的浮点数对阶操作不进行数据阶段、扩充扩展结果寄存器的宽度用于存储临时运算结果,同时扩充二进制加法器的宽度使其满足扩充宽度后的对阶寄存器和扩展结果寄存器;在进行运算时将浮点累加/累减运算分解为浮点加/减法运算指令以及后续的浮点累加/累减指令,获取浮点加/减法运算指令的两个操作数并执行下一步;
B2)求取当前运算指令两个操作数之间的阶差;
B3)根据阶差将两个操作数进行对阶操作,将对阶操作后的数据存储在扩充宽度后的对阶寄存器中;
B4)将两个操作数的浮点数尾数字段通过扩充位宽后的二进制加法器完成加法或者减法计算,将计算结果存储在扩充宽度后的扩展结果寄存器中,同时将运算结果进行规格化与舍入操作后写入目的浮点寄存器;
B5)依次执行后续的浮点累加/累减指令,每一次执行浮点累加/累减指令时,从浮点寄存器文件中读出第一个操作数、从扩展结果寄存器中读取上一次的计算结果作为第二个操作数,然后调用执行步骤2);在执行最后一个浮点累加/累减指令后,将目的浮点寄存器中的数据作为最终运算结果输出。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (1)

1.一种具有浮点精度保持功能的浮点累加/累减运算方法,其特征在于其实施步骤如下:
1)预先扩充对阶寄存器的宽度使得浮点运算前的浮点数对阶操作不进行数据截断、扩展结果寄存器的宽度用于存储临时运算结果,同时扩充二进制加法器的宽度使其满足扩充宽度后的对阶寄存器和扩展结果寄存器;在进行运算时将浮点累加/累减运算分解为第一次浮点加/减法运算指令以及后续的浮点累加/累减指令,获取第一次浮点加/减法运算指令作为当前运算指令,获取当前运算指令的两个操作数并执行下一步;
2)将当前运算指令的两个操作数执行浮点加/减法运算,将运算结果存储在扩展结果寄存器中,同时将运算结果进行规格化与舍入操作后写入目的浮点寄存器;
3)依次执行后续的浮点累加/累减指令,将后续的浮点累加/累减指令作为当前运算指令,从浮点寄存器文件中读出当前运算指令的第一个操作数、从扩展结果寄存器中读取上一次的计算结果作为当前运算指令的第二个操作数,然后调用执行步骤2);在执行最后一个浮点累加/累减指令后,将目的浮点寄存器中的数据作为最终运算结果输出;
所述步骤2)的详细步骤如下:
2.1)求取当前运算指令两个操作数之间的阶差;
2.2)根据所述阶差将两个操作数进行对阶操作,将对阶操作后的数据存储在所述扩充宽度后的对阶寄存器中;
2.3)将两个操作数的浮点数尾数字段通过扩充位宽后的二进制加法器完成加法或者减法计算,将计算结果存储在扩充宽度后的扩展结果寄存器中,同时将运算结果进行规格化与舍入操作后写入目的浮点寄存器。
CN201210494197.XA 2012-11-28 2012-11-28 具有浮点精度保持功能的浮点累加/累减运算方法 Active CN103019647B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210494197.XA CN103019647B (zh) 2012-11-28 2012-11-28 具有浮点精度保持功能的浮点累加/累减运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210494197.XA CN103019647B (zh) 2012-11-28 2012-11-28 具有浮点精度保持功能的浮点累加/累减运算方法

Publications (2)

Publication Number Publication Date
CN103019647A CN103019647A (zh) 2013-04-03
CN103019647B true CN103019647B (zh) 2015-06-24

Family

ID=47968290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210494197.XA Active CN103019647B (zh) 2012-11-28 2012-11-28 具有浮点精度保持功能的浮点累加/累减运算方法

Country Status (1)

Country Link
CN (1) CN103019647B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645881B (zh) * 2013-12-13 2016-08-24 广西科技大学 浮点数加/减运算执行控制器
US9785405B2 (en) * 2015-05-29 2017-10-10 Huawei Technologies Co., Ltd. Increment/decrement apparatus and method
CN114004349A (zh) * 2016-08-05 2022-02-01 中科寒武纪科技股份有限公司 一种能支持不同位宽运算数据的运算单元、方法及装置
CN109426738B (zh) * 2017-08-23 2021-11-12 中芯国际集成电路制造(上海)有限公司 一种硬件加密器及加密方法、电子装置
CN108268349B (zh) * 2018-01-08 2021-05-18 青岛雷神科技股份有限公司 一种基于intel avx指令集的浮点峰值计算吞吐测试方法
CN110163355B (zh) * 2018-02-13 2020-10-09 上海寒武纪信息科技有限公司 一种计算装置及方法
CN109885279B (zh) * 2019-03-01 2021-05-04 山东大学 一种水下传感器及定位系统
CN111078190B (zh) * 2019-11-13 2021-06-18 珠海格力电器股份有限公司 一种小型plc的单精度浮点数算术运算控制系统及方法
CN112182478A (zh) * 2020-09-09 2021-01-05 北京国电智深控制技术有限公司 一种过程累计量的dcs高精度自补偿计算方法
CN112527240B (zh) * 2020-12-22 2023-11-14 中国电子科技集团公司第四十七研究所 一种配合80c186cpu进行的浮点运算装置
CN112817735A (zh) * 2021-03-08 2021-05-18 上海壁仞智能科技有限公司 计算装置、计算设备以及用于线程组累加的方法
CN113590195B (zh) * 2021-07-22 2023-11-07 中国人民解放军国防科技大学 支持浮点格式乘加的存算一体化dram计算部件
CN115291834B (zh) * 2022-07-07 2023-08-22 华东师范大学 N进制浮点加法运算系统与方法
CN117170622B (zh) * 2023-11-03 2024-03-01 深圳鲲云信息科技有限公司 累加器及用于累加器的方法和芯片电路及计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100449476C (zh) * 2005-02-09 2009-01-07 国际商业机器公司 用于执行浮点算术运算的系统和方法
CN101859241A (zh) * 2010-05-22 2010-10-13 中国人民解放军国防科学技术大学 基于全展开的全流水128位精度浮点累加器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8015228B2 (en) * 2005-02-16 2011-09-06 Arm Limited Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100449476C (zh) * 2005-02-09 2009-01-07 国际商业机器公司 用于执行浮点算术运算的系统和方法
CN101859241A (zh) * 2010-05-22 2010-10-13 中国人民解放军国防科学技术大学 基于全展开的全流水128位精度浮点累加器

Also Published As

Publication number Publication date
CN103019647A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN103019647B (zh) 具有浮点精度保持功能的浮点累加/累减运算方法
JP6495220B2 (ja) 選択可能な副精度に対して、低減された電力要求を有する浮動小数点プロセッサ
US11853718B2 (en) Small multiplier after initial approximation for operations with increasing precision
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US9690579B2 (en) Merged floating point operation using a modebit
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
KR20130079511A (ko) Scale, round, getexp, round, getmant, reduce, range 및 class 명령어들을 실행할 수 있는 곱셈 덧셈 기능 유닛
KR20130062352A (ko) 벡터 리딩 0, 벡터 트레일링 0, 벡터 오퍼랜드 1 카운트 및 벡터 패리티 계산을 위한 기능 유닛
CN103914276A (zh) 利用浮点架构的定点除法电路
CN105045560A (zh) 一种定点乘加运算方法和装置
US6598065B1 (en) Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal
JP2022519258A (ja) アンカーデータ要素における特殊値の符号化
CN111433741A (zh) 向量带进位加法指令
JP2022519259A (ja) アンカーデータ要素の変換
Salkuyeh et al. Numerical accuracy of a certain class of iterative methods for solving linear system
JP3793505B2 (ja) 演算器及びそれを用いた電子回路装置
US20240241695A1 (en) Small multiplier after initial approximation for operations with increasing precision
US11704092B2 (en) High-precision anchored-implicit processing
Lee AIR: Adaptive dynamic precision iterative refinement
Underwood Ieee Floating-Point Extension for Managing Error Using Residual Registers
RU2531862C2 (ru) Быстрое векторное вычисление деления без ветвления
JP2005128907A (ja) 演算装置の制御方法、演算装置、並びに、そのプログラムおよび記録媒体
Vlăduţiu et al. Functional Analysis and Synthesis of Binary Division Devices
JPH08115206A (ja) 浮動小数点演算装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant