CN114371827A - 一种高性能浮点加法器的设计方法 - Google Patents
一种高性能浮点加法器的设计方法 Download PDFInfo
- Publication number
- CN114371827A CN114371827A CN202011101095.8A CN202011101095A CN114371827A CN 114371827 A CN114371827 A CN 114371827A CN 202011101095 A CN202011101095 A CN 202011101095A CN 114371827 A CN114371827 A CN 114371827A
- Authority
- CN
- China
- Prior art keywords
- path
- mantissa
- floating
- leading zero
- far
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种高性能浮点加法器的设计方法,采用双路设计,根据输入的加数与被加数的特点,分为near path和far path两种情况进行计算,其中,near path适用于两个浮点数进行有效减,并且阶码之差小于2的情况;far path则适用于非near path的情况,即两个浮点数进行有效加,或者其阶码之差不小于2,对于本方法的near path部分,包含以下步骤:S1,首先通过尾数比较器对两个尾数的大小进行比较;S2,然后根据大小关系确定尾数加法器的输入,直接计算fsub=fmax‑fmin;S3,之后通过前导零计数器直接根据尾数差fsub计算准确的前导零个数LZC(fsub);S4,根据前导零计数器的结果进行规格化逻辑。
Description
技术领域
本发明涉及数字集成电路设计领域,特别涉及一种高性能浮点加法器的设计方法。
背景技术
浮点运算在音频处理和科学计算程序中经常使用。历史上,浮点数在计算机中采用过许多表示形式,目前行业标准是IEEE-754标准,图1给出了根据该标准定义的单精度浮点数的格式。其中S表示符号位,占用1-bit,e表示阶码,占用8-bit,f表示尾数,有时也称之为小数,占用23-bit。
一个浮点数由符号位、阶码以及尾数三个部分组成。通用的浮点标准,使得今天的各种计算机软件可以在不同的计算机上运行,并得到相同结果。
为了加快处理速度,CPU中通常会集成专用的浮点运算电路。浮点加法运算是浮点运算中使用频率较高的,由于其算法步骤多,规则复杂,因此高性能的浮点加法器设计复杂,是浮点运算电路中的核心运算单元之一,在整个CPU的面积中占比较大。
目前高性能浮点加法器主要采用双路设计,基本结构如图2所示,其中左侧为farpath路径,右侧为near path路径。双路设计根据输入的加数与被加数的特点,分为nearpath和far path两种情况同时进行计算,最后选择正确的路径作为最后的计算结果。其中,near path适用于两个浮点数进行有效减,并且阶码之差小于2的情况;far path则适用于非near path的情况,即两个浮点数进行有效加,或者其阶码之差不小于2。
符合near path情况的两个浮点数相加时,尾数最多需要一位右移就可以相加,但是可能需要多位左移,来规格化计算结果;反之,far path情况的两个浮点数相加时,需要先对尾数进行多位右移再进行相加,而结果则至多需要一位移位操作就可以规格化。通过增加法器、前导零预测器以及相关的修正逻辑,双路浮点加法器相当于将near path的情况提前处理,其尾数加法逻辑与far path情况下的尾数移位器并行计算,其规格化逻辑与farpath的尾数加法逻辑并行计算,压缩了浮点加法电路的关键路径,提高了运算速度。
相比于一般的单路浮点加法器,双路浮点加法器主要增加了的尾数加法器和前导零预测器,这些新增的逻辑电路的面积较大,也因此带来了更高的功耗开销。由于前导零预测器只是预测前导零个数,需要引入更复杂、面积更大且更难验证的修正逻辑。更进一步,单个浮点加法器的面积越大,反而制约了芯片中放置的浮点加法器数量,在提高串行运算能力的同时,却在一定程度上限制了并行计算能力。
此外,本领域常见的技术术语包括:
IEEE 754(IEEE二进制浮点数算术标准)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种异常状况(包括异常发生的时机与处理方式)。IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。只有32位模式有强制要求,其他都是选择性的。大部分编程语言都有提供IEEE浮点数格式与算术,但有些将其列为非必需的。例如,IEEE 754问世之前就有的C语言,有包括IEEE算术,但不算作强制要求(C语言的float通常是指IEEE单精确度,而double是指双精确度)。
阶码:在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置。
技术术语还包括:有效加、有效减、关键路径等常用术语,在此不再累述。
发明内容
为了解决现有高性能浮点加法器面积太大的问题,以及由此带来的功耗增长和验证复杂的问题。本发明针对高性能浮点加法器,提供了一种性能基本相同,但是面积更小的设计,从而可以在保持高性能浮点加法计算的同时,降低控制芯片面积和功耗。此外,得益于更合理的逻辑设计,也降低了验证的复杂度。
具体地,本发明提供一种高性能浮点加法器的设计方法,采用双路设计,根据输入的加数与被加数的特点,分为near path和far path两种情况进行计算,其中,near path适用于两个浮点数进行有效减,并且阶码之差小于2的情况;far path则适用于非near path的情况,即两个浮点数进行有效加,或者其阶码之差不小于2,所述near path部分省略现有技术原步骤中的尾数选择步骤;省略现有技术原步骤中前导零预测器步骤以及省略通过前导零预测器步骤后的结果选择步骤;省略现有技术原步骤中通过尾数加法器步骤后的结果修正逻辑步骤。
对于本方法的near path部分,具体包含以下步骤:
S1,首先通过尾数比较器对两个尾数的大小进行比较;
S2,然后根据大小关系确定尾数加法器的输入,直接计算fsub=fmax-fmin;
S3,之后通过前导零计数器直接根据尾数差fsub计算准确的前导零个数LZC(fsub);
S4,根据前导零计数器的结果进行规格化逻辑。
所述far path部分还可以省略现有技术原步骤中的尾数选择步骤。
其中,对于本方法所述的far path部分,也可以采用与现有技术中双路方案的farpath部分一致的方法。
所述far path部分包括:
通过阶码比较器进行的阶码比较步骤;通过尾数移位器进行的尾数移位步骤;通过尾数加法器进行的尾数加法步骤和舍入逻辑步骤。
所述方法在far path部分中最后的舍入逻辑步骤和在near path部分中最后的规格化逻辑步骤之后,还包括结果选择步骤,即最后选择正确的路径作为最后的计算结果。
所述结果选择步骤之后进一步包括结果打包步骤,所述打包步骤之后形成单精度浮点数格式数据。
所述方法的near path和far path的计算是同时进行的。
综上,本申请的方法能够实现的优势在于:
显著降低了实现面积。采用本专利提出的浮点加法器设计方案,不仅保持了基本相当的性能水平,还减少了两个前导零预测器,多个加法器、移位器的使用,大大减少了面积开销。在同样的工艺下,本专利的设计方案,对比双路浮点加法器设计,实际的前端综合面积减少了25%。
更小的面积带来了更低的功耗。本专利的设计方案减少的诸多运算逻辑,不仅减少了面积开销,也直接减少了芯片的静态功耗。此外,由于高性能浮点计算单元为了追求更快的计算速度,一般不引入低功耗方案,所以当进行浮点加法计算时,浮点加法器内部的所有逻辑电路都根据实际数据进行响应,带来大量的翻转功耗,也即动态功耗。本专利给出的设计,得益于更小的面积,更少的逻辑,也就意味着更低的动态功耗。
简洁的逻辑带来更高的实现效率。在包含浮点电路的芯片中,浮点运算的验证尤其是高性能浮点加法器的验证最为困难。相比于此前的方案,本专利的方案有效简化了计算结果的修正逻辑以及阶码计算等相关逻辑。这既可以使硬件实现编码更简单,又可以使得验证更简单,提高验证收敛速度。从成本角度来看,本专利的给出的设计,不仅减少了芯片面积,降低了生产成本,也在一定程度上降低了研发成本。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。
图1是IEEE-754标准定义的单精度浮点数格式的示意框图。
图2是现有技术中方法的双路浮点加法器结构示意图。
图3是本发明具体方法中给出的浮点加法器结构示意图。
图4是本发明具体方法的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
如图4所示,本申请提供一种高性能浮点加法器的设计方法,采用双路设计,根据输入的加数与被加数的特点,分为near path和far path两种情况进行计算,其中,nearpath适用于两个浮点数进行有效减,并且阶码之差小于2的情况;far path则适用于非nearpath的情况,即两个浮点数进行有效加,或者其阶码之差不小于2,对于本方法的near path部分,包含以下步骤:
S1,首先通过尾数比较器对两个尾数的大小进行比较;
S2,然后根据大小关系确定尾数加法器的输入,直接计算fsub=fmax-fmin;
S3,之后通过前导零计数器直接根据尾数差fsub计算准确的前导零个数LZC(fsub);
S4,根据前导零计数器的结果进行规格化逻辑。
本方法也是采用双路结构,其核心思路是优先进行准确的尾数大小比较,来避免引入两份面积较大的前导零预测器,简化了由于预测而带来的复杂的尾数修正逻辑,同时避免了在阶码相等时可能需要的尾数差取反操作。
如图3给出了本方法的浮点加法器设计的主要逻辑结构,其中采用双路结构,左侧为far path路径,右侧为near path路径。首先根据输入的两个浮点数,计算出far path和near path所需的必要信息,然后进行计算操作,最后修正结果,并选择正确的输出路径。
具体来看,本方法的面积优化主要在near path部分,也就是当两个浮点数阶码之差小于2,并且进行有效减计算时所选择的路径。从图2可见,传统的设计中,near path首先计算尾数差,并同时预测尾数差的前导零个数,以便在后续进行结果规格化时,尾数差和移位量同时就绪,缩短关键路径长度。然而,由于当两个浮点数阶码相等时,无法直接根据阶码判断两个浮点数的大小,就可能会出现较小尾数减较大尾数的情况,这时,不仅需要对尾数差进行处理,还不得不同时预测两种情况下的前导零个数。具体来说,当发生fsub=fmin-fmax时,需要计算这里的加一操作虽然可以通过计算技巧节省一部分面积,但是相比于单纯的加法器,还是增加了一定的面积开销。对于前导零的预测,由于不知道两个尾数的实际大小关系,需要同时进行LZA(fa,fb)和LZA(fb,fa)的计算,大大增加了面积开销。
对比来看,本方法给出的设计中,near path首先对两个尾数的大小进行比较,然后根据大小关系确定加法器输入,直接计算fsub=fmax-fmin,从而避免了对尾数差fsub的处理。之后,直接根据尾数差fsub计算准确的前导零个数LZC(fsub)。相比于前导零预测逻辑,前导零计算逻辑的面积更小,并且这里只需要一个前导零计数器,而不是两个前导零预测器,从而显著节省了面积。此外,准确的前导零个数,可以使得后续的移位和修正逻辑更加简单。虽然表面上看使用前导零计数器替换前导零预测器增加了关键路径长度,但是在实际上,前导零预测器得到的前导零个数可能比实际数量少1,使用准确的前导零个数,可以避免在规格化时,经过移位器移位之后,需要根据最高位判断是否还需要移位,减少了延迟。再加上前面节省的计算-fsub的逻辑,实际上的关键路径时序并没有增加。
更进一步,对于near path部分,浮点加法除了尾数部分的减法,还需要根据规格化时左移操作的移位量,计算最终结果的阶码。如果采用前导零预测器的移位量进行计算,那么要么同步计算两种可能的阶码情况,即(e-LZA)和(e-LZA-1),还需要考虑在出现denormal结果时,对规格化时的移位量反向约束。这些逻辑不仅会带来一定的面积开销,更会增加关键路径长度和验证的难度。根据本方法提出的设计方案,采用前导零计数器替代前导零预测器,可以避免这些代价。
对于far path部分,本方法中的方案基本可经典的双路方案一致。即先判断浮点数大小,将较小浮点数的尾数进行右移。然后进行尾数求和(差),最后对结果进行必要的修正。
本方法的关键点是浮点加法器的设计结构,重点是near path的运算逻辑。与传统的优先追求并行度的思路不同,本方法给出的设计,其出发点是在保持性能基本不变的前提下,尽可能利用最小的代价,获得浮点数加法计算所必须的信息。从这一角度出发,使用尾数比较器获取准确的尾数大小关系,避免了尾数差可能出现正负两种情况;使用前导零计数器获取准确的移位量数据,避免了复杂的结果修正、阶码运算、下溢出判断等逻辑。最终实现了逻辑面积和设计复杂度的双重优化。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种高性能浮点加法器的设计方法,采用双路设计,根据输入的加数与被加数的特点,分为near path和far path两种情况进行计算,其中,near path适用于两个浮点数进行有效减,并且阶码之差小于2的情况;far path则适用于非near path的情况,即两个浮点数进行有效加,或者其阶码之差不小于2,其特征在于,所述near path部分省略现有技术原步骤中的尾数选择步骤;省略现有技术原步骤中前导零预测器步骤以及省略通过前导零预测器步骤后的结果选择步骤;省略现有技术原步骤中通过尾数加法器步骤后的结果修正逻辑步骤。
2.根据权利要求1所述的一种高性能浮点加法器的设计方法,其特征在于,对于本方法的near path部分,具体包含以下步骤:
S1,首先通过尾数比较器对两个尾数的大小进行比较;
S2,然后根据大小关系确定尾数加法器的输入,直接计算fsub=fmax-fmin;
S3,之后通过前导零计数器直接根据尾数差fsub计算准确的前导零个数LZC(fsub);
S4,根据前导零计数器的结果进行规格化逻辑。
3.根据权利要求1所述的一种高性能浮点加法器的设计方法,其特征在于,所述farpath部分还可以省略现有技术原步骤中的尾数选择步骤。
4.根据权利要求1所述的一种高性能浮点加法器的设计方法,其特征在于,其中,对于本方法所述的far path部分,也可以采用与现有技术中双路方案的far path部分一致的方法。
5.根据权利要求1所述的一种高性能浮点加法器的设计方法,其特征在于,所述farpath部分包括:
通过阶码比较器进行的阶码比较步骤;通过尾数移位器进行的尾数移位步骤;通过尾数加法器进行的尾数加法步骤和舍入逻辑步骤。
6.根据权利要求2所述的一种高性能浮点加法器的设计方法,其特征在于,所述方法在far path部分中最后的舍入逻辑步骤和在near path部分中最后的规格化逻辑步骤之后,还包括结果选择步骤,即最后选择正确的路径作为最后的计算结果。
7.根据权利要求6所述的一种高性能浮点加法器的设计方法,其特征在于,所述结果选择步骤之后进一步包括结果打包步骤,所述打包步骤之后形成单精度浮点数格式数据。
8.根据权利要求1所述的一种高性能浮点加法器的设计方法,其特征在于,所述方法的near path和far path的计算是同时进行的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011101095.8A CN114371827A (zh) | 2020-10-15 | 2020-10-15 | 一种高性能浮点加法器的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011101095.8A CN114371827A (zh) | 2020-10-15 | 2020-10-15 | 一种高性能浮点加法器的设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114371827A true CN114371827A (zh) | 2022-04-19 |
Family
ID=81138220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011101095.8A Pending CN114371827A (zh) | 2020-10-15 | 2020-10-15 | 一种高性能浮点加法器的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114371827A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658004A (zh) * | 2022-12-09 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 用于执行浮点型数据运算的方法和装置 |
-
2020
- 2020-10-15 CN CN202011101095.8A patent/CN114371827A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658004A (zh) * | 2022-12-09 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 用于执行浮点型数据运算的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8447800B2 (en) | Mode-based multiply-add recoding for denormal operands | |
US5010508A (en) | Prenormalization for a floating-point adder | |
US9483232B2 (en) | Data processing apparatus and method for multiplying floating point operands | |
US20110040815A1 (en) | Apparatus and method for performing fused multiply add floating point operation | |
CN107608655B (zh) | 微处理器中执行fma指令的方法和微处理器 | |
US8239441B2 (en) | Leading zero estimation modification for unfused rounding catastrophic cancellation | |
KR102200913B1 (ko) | 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 | |
US10338889B2 (en) | Apparatus and method for controlling rounding when performing a floating point operation | |
US11294627B2 (en) | Floating point dot-product operator with correct rounding | |
WO2020191417A2 (en) | Techniques for fast dot-product computation | |
CN108694037B (zh) | 用于在执行浮点减法时估计移位量的装置和方法 | |
US20070050434A1 (en) | Data processing apparatus and method for normalizing a data value | |
US7437400B2 (en) | Data processing apparatus and method for performing floating point addition | |
CN114371827A (zh) | 一种高性能浮点加法器的设计方法 | |
US11550544B2 (en) | Fused Multiply-Add operator for mixed precision floating-point numbers with correct rounding | |
Tsen et al. | A combined decimal and binary floating-point multiplier | |
US11366638B1 (en) | Floating point multiply-add, accumulate unit with combined alignment circuits | |
CN113377334B (zh) | 一种浮点数据处理方法、装置及存储介质 | |
US20070027946A1 (en) | Method and system for high-speed floating-point operations and related computer program product | |
JP3257278B2 (ja) | 冗長なシフト数予測とシフト誤り補正を用いた正規化装置 | |
Li et al. | Design of a fully pipelined single-precision multiply-add-fused unit | |
He et al. | Multiply-add fused float point unit with on-fly denormalized number processing | |
Drusya et al. | Area efficient fused floating point three term adder | |
US11983509B2 (en) | Floating-point accumulator | |
US11429349B1 (en) | Floating point multiply-add, accumulate unit with carry-save accumulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |