CN1220935C - 提高半规模双精度浮点乘法流水线效率的部件 - Google Patents
提高半规模双精度浮点乘法流水线效率的部件 Download PDFInfo
- Publication number
- CN1220935C CN1220935C CN 01141498 CN01141498A CN1220935C CN 1220935 C CN1220935 C CN 1220935C CN 01141498 CN01141498 CN 01141498 CN 01141498 A CN01141498 A CN 01141498A CN 1220935 C CN1220935 C CN 1220935C
- Authority
- CN
- China
- Prior art keywords
- multiplication
- floating point
- floating
- precision
- adder
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
一种提高半规模双精度浮点乘法流水线效率的部件,其特征在于包括:两个53位×27位的乘法树电路,高位乘法树用于实现浮点乘法高27位的运算,低位乘法树用于实现低26位运算;上述高位乘法树的结果输入到第一加法器中;低位乘法树的结果输入到第二加法器中;单、双精度复用的舍入和规格化电路,用于处理第一和第二加法器的输出累加后的结果。本发明改进了浮点乘法流水线,在这样的浮点乘法流水线中采用双路浮点乘法流水线机构,使得浮点乘法部件每拍都能够输入一对双精度数,而且单、双精度可以共用一套电路来舍入和规格化,节省了面积,降低了延迟。
Description
技术领域
本发明涉及微处理器体系结构,特别涉及一种微处理器内浮点乘法运算部件的流水线结构。
背景技术
计算机技术的发展增加了计算的复杂度。一方面是由于科学计算的运算精度要求越来越高(如卫星检测天气预报技术,虚拟核反应试验技术,人工智能技术等);另一方面则是由于多媒体技术的广泛运用,实时3D图像技术以及工业级别的性能评测如SPECmarks等,都使用到大量的高精度计算。
提高计算精度的一个有效方法是采用浮点运算部件(Floating-PointUnit)。现代大多数处理器都包括执行IEEE754标准的浮点运算部件。由于浮点乘法指令在浮点指令中占比较大的比重(在绝大多数Benchmark应用中,浮点乘法占浮点指令的37%以上),浮点乘法器的延迟成了浮点性能的关键。当然面积也是必不可少的考虑因素,它直接关系到芯片的成本。
浮点乘法流水线技术是现代处理器的重要技术。在浮点乘法流水线中,每一条浮点乘法指令的执行过程都被分解为若干个子过程,每个子过程和其它子过程同时进行。
IEEE754标准对浮点数的格式做了如下规定:
扩展模式是IEEE754标准的可选模式,大多数处理器都支持单、双精度数而不支持扩展模式。只有Intel的x86/x87,Pentium,P6以及AMD和Cyrix,Motorola的68040/60或更早的680x0和68881/2协处理器支持扩展模式,还有Motorola的88110,这些处理器支持64位尾数,15位阶码的扩展模式。对单、双精度数的处理有许多种方式,考虑到面积和延迟的影响,主要可以分为两类。一类主要考虑双精度的处理方法,使用53位×53位全规模(full-sized)的乘法。对单精度的处理比较麻烦,需要先将其转化成双精度计算,然后将双精度结果转换回单精度。例如在x86体系结构(Pentium)和Motorola68000系列执行的是双精度扩展格式,转换到低的精度时需要将结果保存到存储器。除此之外,对53位×53位的乘法树进行处理时,需要很大规模的加法器,对于节省芯片面积不利,见IEEE Standard 754 for Binary Floating-Point Arithmetic,Prof.W.Kahan,Elect.Eng.&Computer Science,University of California,Berkeley CA94720-1776。
参数 | 格式 | |||
Single | SingleExtended | Double | DoubleExtended | |
P | 24 | ≥32 | 53 | ≥64 |
Emax | +127 | ≥+1023 | +1023 | ≥+16383 |
Emin | -126 | ≤-1022 | -1022 | ≤-16382 |
Exponentbias | +127 | Unspecified | +1023 | Unspecified |
Exponentwidthinbits | 8 | ≥11 | 11 | ≥15 |
Formatwidthin bits | 32 | ≥43 | 64 | ≥79 |
另外一类主要针对单精度的处理方法,使用53位×27位半规模(half-sized)的乘法。利用同一套电路对单精度和双精度进行舍入和规格化。它节省了面积,使电路变得简化,但是出现的问题是降低了流水线的效率。虽然单精度两拍出结果,双精度三拍出结果,但是双精度需要在第一拍和第二拍都使用53位×27位规模的乘法树,所以双精度指令只能够两个周期发出一条。这样对于大量双精度乘法的应用会降低处理的速度,见A dual precision IEEE floating-point multiplier,Guy Even,Silvia M.Mueller,Peter-Michael Seidel,INTRGRATION,the VLSI journal 29(2000)167-180。
发明内容
本发明的目的是提供一种提高浮点乘法流水线效率的结构,在减小面积的同时,提高浮点乘法流水线的效率,从而提高了整个浮点部件的运算效率。
为实现上述目的,一种提高半规模双精度浮点乘法流水线效率的部件,其特征在于包括:
两个53位×27位的乘法树电路,第一乘法树电路用于实现浮点乘法高27位的运算,第二乘法树电路用于实现低26位运算;
上述第一和第二乘法树电路的第一输出和第二输出分别输入到第一加法器和第二加法器中,第一加法器处理上述第一和第二乘法树电路的第一输出,第二加法器处理上述第一和第二乘法树电路的第二输出;
单、双精度复用的舍入和规格化电路,用于处理第一和第二加法器的输出累加后的结果。
本发明改进了浮点乘法流水线,在这样的浮点乘法流水线中采用双路浮点乘法流水线机构,使得浮点乘法部件每拍都能够输入一对双精度数,而且单、双精度可以共用一套电路来舍入和规格化,并且节省面积,降低延迟。
附图说明
为便于进一步了解本发明的特征、功效和实现方式,以下结合附图对本发明作进一步的说明。
图1为双路浮点乘法流水线机构;
图2为用15-2CSA(Carry Save Adder进位保留加法器,以下同)搭建起来的53位×27位乘法树;
图3为用3-2Counter(计数器,以下同)构成4-2Counter;
图4为用3-2Counter和4-2Counter搭建起来的15-2CSA。
具体实施方式
在图1所示的浮点乘法流水线中,使用修改的Booth算法(Booth2算法)和华莱士4-2计数器乘法树来完成乘法。而舍入采用一种简化的舍入方法,基于插入值的舍入方法。
浮点乘法运算逻辑可以分成三级。
第一级对操作数进行判断,包括是否是0,±∞,非规格化数等等。利用11位加法器计算阶码,并产生各种例外。并且对尾数计算乘法的第一级。假如A和B都是已规格化的尾数存放在寄存器中,第一级,两个53×27乘法树分别实现A与B的低26位B[-27:-52]相乘和A与B的高27位B[0:-26]相乘,分别得到SUMl(和1,以下同)、CARRY 1(进位1,以下同)和SUM2(和2,以下同)、CARRY 2(进位2,以下同)。用于舍入的injection(插入值,以下同)也在这一周期加到SUMl中。
在单精度方式下,A和B都有规格化的24位尾数。将A右移29位,这样就会使单精度的最小位[-23]位和双精度的最小位[-52]位对齐。B采取左对齐,在最低3位补0,使其有27位这样就能和双精度计算保持一致。这样的好处在于两种精度舍入的位置相同,可以使用同一套电路来实现。
第二级对SUM1,SUM2,CARRY1,CARRY2进行处理,首先在一个80位加法器中实现SUM1的高53位(带进位)[-26:-78]和SUM2错位相加,得到SUM(和,以下同)。在另一个80位加法器中实现CARRY1的高53位(带进位)[-26:-78]和CARRY2错位相加,得到CARRY(进位,以下同)。并根据SUM1和CARRY1之和的进位对SUM进行调整。其次第一周期计算出来的SUM1和CARRY1最小的26位[-79:-104]反馈到计算低位进位和低位粘着位的模块中计算,得到carry_low(低位进位,以下同)和sticky_low(低位粘着位,以下同)。还要将阶码加1,为第三周期的右规作准备。
第三级SUM和CARRY寄存器的低26位[-53:-78]输入到进位计算模块中。而粘着位计算模块则输入[-54:-78]。进位和粘着位计算模块还输入了低位来的进位位C[-78]和sticky_low位(根据积的[-79:-104])。计算的结果是进位位C[-52]和舍入位R,对应位置[-53],以及sticky-bit(粘着位,以下同),对应位置[-54:-104]。
在这个周期里,SUM和CARRY寄存器的高54位[1:-52]在图1中54位加法器中相加,该加法器不仅计算两数之和Sum,而且计算Sum+1和Sum+2。或者说是:Sum,Sum+2-52,Sum+2-51。
经过54位加法器之后,进行舍入和规格化以下三种选择来得到舍入后的积:
1、进位位C[-52]来选择Sum,Sum+1这一对,还是Sum+1,Sum+2这一对。
2、和的最高位MSB(对应位置[1])以及舍入模式和舍入位R一起输入到修正injection模块中来决定到底是采用选中的这一对的前者还是后者,如Sum或Sum+1。如果积在[2,4]这个范围中,则还会对injection进行修正。
3、最高位MSB决定积到底是在(1,2)还是(2,4)的范围内。如果MSB=1,则积会被右移,以便得到在(1,2)范围内的积。注意:这三步的排放顺序是考虑了延时和成本的,比如也可以将右移放在修正injection的前面,不过这样就需要两次右移。
最后,还要进行两个处理。1)舍入后的积的最低位LSB(也就是RNE(向最近偶数舍入)和RNU(向上舍入)的区别);2)舍入后的积的最高位MSB(因为有可能发生尾数溢出)。这可以通过对积的最高两位(小数点的左边两位)进行求或来产生输出积的最高位。
单精度与双精度舍入的唯一不同之处是最高位的位置,单精度的最高位MSB在[-28]。
图2为图1中第一级用到的53位×27位乘法树的结构图,该53位×27位乘法树是由图4所示的15-2CSA搭建的。
图3为用3-2Counter构成的4-2Counter,以实现从四数相加转化为两数相加。
图4为用3-2Counter和图3所示的4-2Counter搭建起来的15-2CSA,实现从15个操作数相加转化为两数相加。
本发明具有如下优点:
1.实现简单。由于第二类半规模浮点乘法流水线已经采用了53位×27位规模的乘法树,所以双路浮点乘法流水线机构只需要将这个乘法树复制一遍,再增加少量的控制逻辑和中规模的加法电路。
2.功能强。其硬件复杂度,或面积要小于第一类全规模浮点乘法流水线。而其时间延迟和第二类相同,但是双精度处理的效率高于第二类半规模浮点乘法部件。
Claims (2)
1.一种提高半规模双精度浮点乘法流水线效率的部件,其特征在于包括:
两个53位×27位的乘法树电路,第一乘法树电路用于实现浮点乘法高27位的运算,第二乘法树电路用于实现低26位运算;
上述第一和第二乘法树电路的第一输出和第二输出分别输入到第一加法器和第二加法器中,第一加法器处理上述第一和第二乘法树电路的第一输出,第二加法器处理上述第一和第二乘法树电路的第二输出;
单、双精度复用的舍入和规格化电路,用于处理第一和第二加法器的输出累加后的结果。
2.按权利要求1所述的部件,其特征在于所述的第一加法器和第二加法器均为80位加法器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01141498 CN1220935C (zh) | 2001-09-27 | 2001-09-27 | 提高半规模双精度浮点乘法流水线效率的部件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01141498 CN1220935C (zh) | 2001-09-27 | 2001-09-27 | 提高半规模双精度浮点乘法流水线效率的部件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1410880A CN1410880A (zh) | 2003-04-16 |
CN1220935C true CN1220935C (zh) | 2005-09-28 |
Family
ID=4676221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 01141498 Expired - Lifetime CN1220935C (zh) | 2001-09-27 | 2001-09-27 | 提高半规模双精度浮点乘法流水线效率的部件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1220935C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
US7730117B2 (en) * | 2005-02-09 | 2010-06-01 | International Business Machines Corporation | System and method for a floating point unit with feedback prior to normalization and rounding |
US8073892B2 (en) | 2005-12-30 | 2011-12-06 | Intel Corporation | Cryptographic system, method and multiplier |
CN101174200B (zh) * | 2007-05-18 | 2010-09-08 | 清华大学 | 一种具有五级流水线结构的浮点乘加融合单元 |
CN101770355B (zh) * | 2009-12-30 | 2011-11-16 | 龙芯中科技术有限公司 | 兼容双精度和双单精度的浮点乘加器及其兼容处理方法 |
-
2001
- 2001-09-27 CN CN 01141498 patent/CN1220935C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1410880A (zh) | 2003-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107168678B (zh) | 一种乘加计算装置及浮点乘加计算方法 | |
CN112860220B (zh) | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 | |
US20140067889A1 (en) | Datapath circuit for digital signal processors | |
CN1439126A (zh) | 带有耦合的乘法一累加单元的数字信号处理器 | |
US20020107900A1 (en) | Processor design for extended-precision arithmetic | |
CN101630243B (zh) | 超越函数装置以及用该装置实现超越函数的方法 | |
CN116400883A (zh) | 一种可切换精度的浮点乘加器 | |
CN1220935C (zh) | 提高半规模双精度浮点乘法流水线效率的部件 | |
CN116594590A (zh) | 一种浮点数据的多功能运算装置及方法 | |
CN101840324B (zh) | 支持复数运算和子字并行的64位定浮点乘法器 | |
US5623435A (en) | Arithmetic unit capable of performing concurrent operations for high speed operation | |
Lee et al. | Design of floating-point MAC unit for computing DNN applications in PIM | |
CN116627379A (zh) | 可重构的支持多精度浮点或定点运算的方法及系统 | |
US11550544B2 (en) | Fused Multiply-Add operator for mixed precision floating-point numbers with correct rounding | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN104636114A (zh) | 一种浮点数乘法的舍入方法及装置 | |
Boldo et al. | Some functions computable with a fused-mac | |
CN116450085A (zh) | 一种可扩展的BFloat16点乘运算器及微处理器 | |
CN116933840A (zh) | 支持可变指数位宽的多精度Posit编解码运算装置及方法 | |
Forget et al. | Hardware cost evaluation of the posit number system | |
CN109298848A (zh) | 双模式浮点除法平方根的电路 | |
Ze et al. | High-Speed Transcendental Function Operation Unit Design | |
CN114418057A (zh) | 卷积神经网络的运算方法及相关设备 | |
US10223071B2 (en) | Energy-efficient variable power adder and methods of use thereof | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20050928 |
|
CX01 | Expiry of patent term |