CN103809930A - 一种双精度浮点数除法器的设计方法及除法器 - Google Patents

一种双精度浮点数除法器的设计方法及除法器 Download PDF

Info

Publication number
CN103809930A
CN103809930A CN201410036165.4A CN201410036165A CN103809930A CN 103809930 A CN103809930 A CN 103809930A CN 201410036165 A CN201410036165 A CN 201410036165A CN 103809930 A CN103809930 A CN 103809930A
Authority
CN
China
Prior art keywords
carry
output terminal
output
save adder
look
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.)
Granted
Application number
CN201410036165.4A
Other languages
English (en)
Other versions
CN103809930B (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.)
Phytium Technology Co Ltd
Original Assignee
Tianjin University
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 Tianjin University filed Critical Tianjin University
Priority to CN201410036165.4A priority Critical patent/CN103809930B/zh
Publication of CN103809930A publication Critical patent/CN103809930A/zh
Application granted granted Critical
Publication of CN103809930B publication Critical patent/CN103809930B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

一种双精度浮点数除法器的设计方法及除法器。方法有:第一阶段,采用最小最大二次多项式逼近算法计算倒数函数1/X的种子值Rf,基中,X为除数的53位尾数部分;第二阶段,基于硬件复用方法的两次Goldschmidt迭代,得到最终精确的结果。除法器,包括有用于计算倒数函数1/X的种子值Rf的第一部分和与所述的第一部分的输出相连的用于计算最终精确结果的第二部分。本发明是一种高性能、地面积开销的除法器,通过硬件复用方法,在性能减低很小的情况下可或者很大的面积优势,尤其适用于对面积要求严格的嵌入式微处理器领域。

Description

一种双精度浮点数除法器的设计方法及除法器
技术领域
本发明涉及一种除法器。特别是涉及一种高性能、低面积开销的双精度浮点数除法器的设计方法及除法器。
背景技术
除法算法主要分为两种:一种是慢速算法,一种是快速算法。慢速算法是一种基于数位迭代的方法,每次迭代产生一位商位,收敛速度为线性收敛。恢复余数法、不恢复余数法及SRT法都属于慢速算法。快速算法通常使用查表法得到一个接近商值的种子值,以乘法作为基本的迭代步骤,每次迭代产生多个商位,收敛速度为对数收敛。Newton-Raphson和Goldschmidt都属于快速算法。
由IEEE-754标准对双精度浮点数的定义得知,一个双精度浮点数占64bit,其中1位符号位,11位指数位,52位尾数位(加上隐含的前导1则为53位)。两双精度浮点数相除得到的结果,尾数部分的取值范围为(0.5,2),因此要确保尾数部分的最终误差ε<2-54,这样才能保证最终的尾数是精确的结果。
高性能双精度浮点除法器的一种广泛被认可的设计方法是先通过二次逼近查表法得到被除数X(以Y/X为例)倒数的种子值Rf,该种子值是1/X的近似值,精度为30bit。得到种子值之后再通过一次Goldschmidt的方法,具体来讲是一次乘法运算和两次乘加运算,得到最终的结果。
在实际的应用中,相比较于乘法和加法来讲除法并不是一种常见的操作,如果用上述方法设计双精度浮点除法器,其面积开销会远大于设计乘法器和加法器所带来的面积开销,分析得知,主要的面积开销在于通过二次逼近法得到的查找表的面积(31Kb),一个53x30乘法器面积,一个53x30的乘加单元面积和56x28的乘加单元的面积。虽然该方法可以实现完全流水,但是由于除法操作的较少使用,使得在实际应用中不能发挥该双精度浮点除法器的性能优势。
发明内容
本发明所要解决的技术问题是,提供一种能够减少双精度浮点除法器的面积开销又满足应用需求的双精度浮点数除法器的设计方法及除法器。
本发明所采用的技术方案是:一种双精度浮点数除法器的设计方法,包括:
第一阶段,采用最小最大二次多项式逼近算法计算倒数函数1/X的种子值Rf,基中,X为除数的53位尾数部分;
第二阶段,基于硬件复用方法的两次Goldschmidt迭代,得到最终精确的结果。
第一阶段包括如下步骤:
1)将53位尾数X被分成三个部分:高位部分X1,中间部分X2和低位部分X3,得到,
X1=[1.x1x2x3...xm1]
X2=[xm1+1........xm2]×2-m1
X3=[xm2+1.........xn]×2-m2
对于倒数函数1/X通过如下公式进行计算,
X-1≈C0+C1X2+C2X2 2      (1)
其中,系数C0,C1,C2通过软件Maple获得,在Maple中通过调用Remez算法来实现最小最大算法,从而得到三个系数C0、C1和C2,并将三个系数C0,C1,C2存入系数查找表;
2)采用高位部分X1进行查表,得到C0、C1和C2的位宽,同时对中间部分X2进行基数为4的Booth编码,以及求中间部分X2的平方值和对所述该平方值进行Booth编码;
3)将用两个部分积产生模块分别产生C1X2和C2X2 2的部分积与查表得到的C0,采用三级4:2CSA树得到最终种子值的CARRY和SUM项;
4)采用一个超前进位加法器CLA对最终种子值的CARRY和SUM项进行相加,得到输出结果倒数函数1/X的种子值Rf。
第二阶段包括两次Goldschmidt迭代共涉及5次乘法和2次求补运算,如下步骤:
1)将第一阶段得到的种子值Rf分别与53位尾数X和被除数的尾数部分Y相乘得到d0和z0,对d0求补后得到x0,然后将z0与x0相乘得到z1;
2)在第二次Goldschmidt迭代中,将d0与x0相乘得到d1,d1求补后得到x1,将得到的x1与z1相乘得到最终的结果z。
本发明的采用双精度浮点数除法器的设计方法得到的除法器,包括有用于计算倒数函数1/X的种子值Rf的第一部分和与所述的第一部分的输出相连的用于计算最终精确结果的第二部分,其中,
第一部分包括:
寄存器,分别存放53位尾数X的高位部分X1、中间部分X2和低位部分X3
第一查找表、第二查找表和第三查找表,分别连接所述寄存器的高位部分X1的输出端;
第一Booth编码器,输入端连接所述寄存器的中间部分X2,用于对中间部分X2进行重新编码;
专用平方单元,输入端连接所述寄存器的中间部分X2,用于求取中间部分X2的平方值;
第二Booth编码器,输入端连接所述专用平方单元输出端,用于对求出的平方值进行重新编码;
第一部分积产行单元,分别连接第二查找表和第一Booth编码器的输出端,用于产生C1X2的9个部分积;
第二部分积产生单元,分别连接第三查找表和第二Booth编码器的输出端,用于产生C2X2 2的6个部分积;
第一级进位保存加法器单元,分别连接第一查找表、第一部分积产行单元和第二部分积产生单元,用于产生第一级的CARRY和SUM项;
第二级进位保存加法器单元,连接第一级进位保存加法器单元的输出端,用于产生第二级的CARRY和SUM项;
第三级进位保存加法器,连接第二级进位保存加法器单元用于产生第三级的CARRY和SUM项;
超前进位加法器,连接第三级进位保存加法器单元的输出端,用于计算得到最终的种子值Rf;
第二部分包括:
第一多路选择器,分别连接外部控制信号sel、补码器的输出和第二部分输出的最终的种子值Rf,用于根据外部控制信号sel,选择补码器的输出信号和第二部分输出的最终的种子值Rf两个信号中的一个;
第二多路选择器,分别连接外部控制信号sel、补码器的输出和第二部分输出的最终的种子值Rf,用于根据外部控制信号sel,选择补码器的输出信号和第二部分输出的最终的种子值Rf两个信号中的一个;
第三多路选择器,分别连接外部控制信号sel、53位尾数X的输出信号以及第一乘法器的输出端,用于根据外部控制信号sel,选择53位尾数X的输出信号和第一乘法器的输出信号中的一个;
第四多路选择器,分别连接外部控制信号sel、被除数的尾数部分Y的输出信号以及第二乘法器的输出端,用于根据外部控制信号sel,选择被除数的尾数部分Y的输出信号和第二乘法器的输出信号中的一个;
第一乘法器,分别连接第一多路选择器和第三多路选择器的输出端,用于对该两路输出进行相乘;
第二乘法器,分别连接第二多路选择器和第四多路选择器的输出端,用于对该两路输出进行相乘,同时输出最终结果;
补码器,连接第一乘法器的输出端,用于对第一乘法器的输出结果求补。
对应计算倒数函数1/X的公式X-1≈C0+C1X2+C2X2 2,所述的第一查找表内存储系数C0,第二查找表内存储系数C1,第三查找表内存储系数C2
所述的第一级进位保存加法器单元包括有:
第一进位保存加法器,分别连接第一查找表的输出端和第一部分积产行单元的9个部分积中的3个部分积的输出端,用于产生第一级的第一个CARRY和SUM项;
第二进位保存加法器,连接第一部分积产行单元的9个部分积中的另4个部分积的输出端,用于产生第一级的第二个CARRY和SUM项;
第三进位保存加法器,分别连接第一部分积产行单元的9个部分积中的最后2个部分积的输出端和第二部分积产生单元的6个部分积中的2个部分积的输出端,用于产生第一级的第三个CARRY和SUM项;
第四进位保存加法器,连接第二部分积产生单元的6个部分积中的其余4个部分积的输出端,用于产生第一级的第三个CARRY和SUM项。
所述的第二级进位保存加法器单元包括有:
第六进位保存加法器,分别连接第一级进位保存加法器单元中的第一进位保存加法器和第二进位保存加法器的输出端,用于产生第二级的第一个CARRY和SUM项;
第七进位保存加法器,分别连接第一级进位保存加法器单元中的第三进位保存加法器和第四进位保存加法器的输出端,用于产生第二级的第二个CARRY和SUM项。
本发明的一种双精度浮点数除法器的设计方法及除法器,是一种高性能、地面积开销的除法器,通过硬件复用方法,在性能减低很小的情况下可或者很大的面积优势,尤其适用于对面积要求严格的嵌入式微处理器领域。
附图说明
图1是本发明基于查找表法计算1/X的种子值Rf的结构框图;
图2是本发明两次Goldschmidt迭代的结构框图;
图3是本发明两次Goldschmidt迭代的计算流程图。
图中
1:寄存器                         2:第一查找表
3:第二查找表                     4:第三查找表
5:第一Booth编码器                6:专用平方单元
7:第二Booth编码器                8:第一部分积产行单元
9:第二部分积产生单元             10:第一进位保存加法器
11:第二进位保存加法器            12:第三进位保存加法器
13:第四进位保存加法器            14:第六进位保存加法器
15:第七进位保存加法器            16:第三级进位保存加法器
17:超前进位加法器                18:第一多路选择器
19:第二多路选择器                20:第三多路选择器
21:第四多路选择器                22:第一乘法器
23:第二乘法器                    24:补码器
具体实施方式
下面结合实施例和附图对本发明的一种双精度浮点数除法器的设计方法及除法器做出详细说明。
发明的一种双精度浮点数除法器的设计方法及除法器,采用一次查表法+两次Goldschmidt迭代的方法来设计双精度浮点除法器,其中查找表也是采用二次多项式逼近算法得到,但是其面积要远小于原方法所使用的查找表的面积,经查找表之后会得到一个比原先方法更小精度的种子值Rf,在后续的Goldschmidt中,采用两次迭代的方法来获得与原方法相同的精度,但是两次迭代使用相同的硬件单元(2个60x60的乘法器)。总的来看,我们采用的方法在查找表的面积上有很大的减少,但是由于采用了硬件复用技术,因此后续两次Goldschmidt的面积开销并没有增加太多,总面积开销要小于原方法的面积开销。从性能上来看,采用我们的方法设计出的双精度浮点除法器虽然不能完全可流水,但是由于实际应用中除法操作并不常见,因此采用该方法设计的除法器并不会带来整体性能上的损失。
本发明的一种双精度浮点数除法器的设计方法,包括:
第一阶段,采用最小最大二次多项式逼近算法计算倒数函数1/X的种子值Rf,基中,X为除数的53位尾数部分;第二阶段,基于硬件复用方法的两次Goldschmidt迭代,得到最终精确的结果。
其中,第一阶段包括如下步骤:
1)将53位尾数X被分成三个部分:高位部分X1,可为5位,中间部分X2,可为17位和低位部分X3,可为31位,得到,
X1=[1.x1x2x3...xm1]
X2=[xm1+1........xm2]×2-m1
X3=[xm2+1.........xn]×2-m2
对于倒数函数1/X通过如下公式进行计算,
X-1≈C0+C1X2+C2X2 2      (1)
其中,系数C0,C1,C2通过软件Maple获得,在Maple中通过调用Remez算法来实现最小最大算法,从而得到三个系数C0,C1,C2,并将三个系数C0,C1,C2存入系数查找表;
在实际的计算中,通过53位尾数X的m1bit高位部分X1进行查表得到系数C0、C1和C2,然后用得到的三个系数与53位尾数X的中位部分X2按照公式(1)进行二次多项式的计算,从而得到的近似值Rf。用于查表的X1的位宽,用于计算的X2的位宽及C0、C1和C2的位宽会直接影响得到的种子值的精度,其中X1的位宽和三个系数的位宽又会直接影响系数查找表的大小,前者决定了查找表的深度而后者决定了查找表的宽度。查找表的面积会极大影响整个双精度浮点除法器的面积,而得到的种子值的精度又会对后续Goldschmidt迭代的次数有着直接的影响,因此如何折中查找表的面积与得到的种子值的精度则需要设计者进行仔细权衡。
2)采用高位部分X1进行查表,得到C0、C1和C2的位宽,同时对中间部分X2进行基数为4的Booth编码,以及求中间部分X2的平方值和对所述该平方值进行Booth编码;
在本方法的实施例中选用位宽较小的X1进行查表,具体来讲是采用5位X1进行查表,得到C0、C1和C2的位宽分别为30、20和12进行多项式的计算,X2的一次项采用17bit,二次项用12bit,最终经过多项式的计算得到一个精度为19bit的种子值Rf,由于得到的种子值精度较低,因此在第二阶段采用两次Goldschmidt迭代来获得满足需要的精度。
在进行二次多项式的计算过程中,本发明使用了一种优化算法来计算X2的平方项,在性能不降低的情况之下面积开销减小了一半。在得到了X2的平方项之后整个多项式的计算就剩下了两次乘法和两次加法,在我们的设计中采用了一种融合累加树的方法进行后续多项式的计算。
3)将用两个部分积产生模块分别产生C1X2和C2X2 2的部分积与查表得到的C0,采用三级4:2CSA树得到最终种子值的CARRY和SUM项;
4)采用一个超前进位加法器CLA对最终种子值的CARRY和SUM项进行相加,得到输出结果倒数函数1/X的种子值Rf。
其中,第二阶段包括两次Goldschmidt迭代共涉及5次乘法和2次求补运算,第一阶段的结果产生之后就开始进行第二阶段的计算,第二阶段计算的流程如图3所示,具体采用如下步骤:
1)将第一阶段得到的种子值Rf分别与53位尾数X和被除数的尾数部分Y相乘得到d0和z0,对d0求补后得到x0,然后将z0与x0相乘得到z1;
2)在第二次Goldschmidt迭代中,将d0与x0相乘得到d1,d1求补后得到x1,将得到的x1与z1相乘得到最终的结果z。
下面对本发明方法的计算过程进行误差分析:
整个双精度浮点除法器的计算过程分为两个阶段,误差分析也主要根据计算的两个阶段进行分析。
1、Rf的误差分析
第一阶段的结果会产生一个种子值Rf,该种子值的误差来源主要有:1)二次多项式逼近算法本身的误差(εapprox),2)在多项式计算过程中因有限位宽而引入的算术误差。
总误差 &epsiv; Rf &le; &epsiv; approx + &epsiv; C 0 X 2 + &epsiv; C 1 X 2 2 + | C 1 | max &epsiv; X 2 + | C 2 | &epsiv; X 2 2
由于有限位宽的系数是通过Maple程序获得的,因此实际的多项式逼近误差应为:
&epsiv; &prime; approx = &epsiv; approx + &epsiv; C 0 X 2 + &epsiv; C 1 X 2 2
因此:
&epsiv; Rf &le; &epsiv; &prime; approx + | C 1 | max &epsiv; X 2 + | C 2 | &epsiv; X 2 2
分析得知,当m1=5时,Rf的误差(εRf<2-19)满足本发明所设的误差精度。
2、Z的误差分析
在第二阶段计算过程中,以第一阶段的结果Rf作为输入进行两次Goldschmidt迭代,得到最终结果z,z的误差也主要来自两方面:1)Goldschmidt迭代算法本身的误差(εitera),2)在计算过程中因有限位宽表示而带来的算术误差(εarith)。
第二阶段总误差εziteraarith
最终的误差要满足εz<2-54,这样最终的结果才是精确的,我们不妨记在迭代的过程中要保留的小数部分的位宽为t位(输入操作数X,Y的取值范围都为[1:2),最终结果Z的取值范围为(0.5,2))。
迭代误差:
εitera=(εRf)4·X3·Y
因此εitera<2-72
计算误差:
&epsiv; arith = &epsiv; z &prime; + &epsiv; z 1 &CenterDot; x 1 + &epsiv; x 1 &CenterDot; z 1 + &epsiv; z 1 &CenterDot; &epsiv; x 1
其中εz'是因乘法器输出的有限位宽而引入的误差,其值为2-t
Figure BDA0000461861460000072
是计算z1的过程中所产生的总的误差,包括传递误差和累积误差。同理,是在计算x1的过程所产生的总的误差,包括传递误差和累积误差,x1,z1的最大值均不超过2,因此
计算误差 &epsiv; arith < 2 - t + 2 &CenterDot; &epsiv; z 1 + 2 &CenterDot; &epsiv; x 1 + &epsiv; z 1 &CenterDot; &epsiv; x 1
Figure BDA0000461861460000075
Figure BDA0000461861460000076
的计算过程跟εarith类似
&epsiv; z 1 = &epsiv; z &prime; 1 + &epsiv; z 0 &CenterDot; x 0 + &epsiv; x 0 &CenterDot; z 0
&epsiv; x 1 = &epsiv; d 1 = &epsiv; d &prime; 1 + &epsiv; d 0 &CenterDot; x 0 + &epsiv; x 0 &CenterDot; d 0
其中,
&epsiv; z 0 = 2 - t , &epsiv; x 0 = &epsiv; d 0 = 2 - t
x0,z0,d0,最大值均不超过2,因此,计算误差
&epsiv; arith < 2 - t + 2 &CenterDot; ( &epsiv; z &prime; 1 + &epsiv; z 0 &CenterDot; x 0 + &epsiv; x 0 &CenterDot; z 0 ) + 2 &CenterDot; ( &epsiv; d &prime; 1 + &epsiv; d 0 &CenterDot; x 0 + &epsiv; x 0 &CenterDot; d 0 ) + ( &epsiv; z &prime; 1 + &epsiv; z 0 &CenterDot; x 0 + &epsiv; x 0 &CenterDot; z 0 ) &CenterDot; ( &epsiv; d &prime; 1 + &epsiv; d 0 &CenterDot; x 0 + &epsiv; x 0 &CenterDot; d 0 ) &epsiv; arith < 2 - t + 2 &CenterDot; ( &epsiv; z &prime; 1 + 2 &CenterDot; &epsiv; z 0 + &epsiv; x 0 &CenterDot; z 0 ) + 2 &CenterDot; ( &epsiv; d &prime; 1 + 2 &CenterDot; &epsiv; d 0 + 2 &CenterDot; &epsiv; x 0 ) + ( &epsiv; z &prime; 1 + 2 &CenterDot; &epsiv; z 0 + 2 &CenterDot; &epsiv; x 0 ) &CenterDot; ( &epsiv; d &prime; 1 + 2 &CenterDot; &epsiv; d 0 + 2 &CenterDot; &epsiv; x 0 )
因此总的误差
&epsiv; z < 2 - 72 + 2 - t + 2 &CenterDot; ( &epsiv; z &prime; 1 + 2 &CenterDot; &epsiv; z 0 + &epsiv; x 0 &CenterDot; z 0 ) + 2 &CenterDot; ( &epsiv; d &prime; 1 + 2 &CenterDot; &epsiv; d 0 + 2 &CenterDot; &epsiv; x 0 ) + ( &epsiv; z &prime; 1 + 2 &CenterDot; &epsiv; z 0 + 2 &CenterDot; &epsiv; x 0 ) &CenterDot; ( &epsiv; d &prime; 1 + 2 &CenterDot; &epsiv; d 0 + 2 &CenterDot; &epsiv; x 0 )
即,
εz<2-72+2-t+2·(2-t+2·2-t+2·2-t)+2·(2-t+2·2-t+2·2-t)+(2-t+2·2-t+2·2-t)·(2-t+2·2-t+2·2-t)
即,
εz<2-72+2-t+4+2-t+2+2-t+2-2t+4+2-2t+3+2-2t+2-3t+3+2-3t+1+2-4t<2-t+5
由此可知,t最小为59时,可满足εz<2-54,因此选取t=59,再加上1位整数位,因此乘法器的位宽最小为60位时可满足精度要求。
本发明的采用双精度浮点数除法器的设计方法得到的除法器,包括有用于计算倒数函数1/X的种子值Rf的第一部分和与所述的第一部分的输出相连的用于计算最终精确结果的第二部分,其中,
如图1所示,第一部分包括:
寄存器1,分别存放53位尾数X的高位部分X1、中间部分X2和低位部分X3
第一查找表2、第二查找表3和第三查找表4,分别连接所述寄存器1的高位部分X1的输出端;对应计算倒数函数1/X的公式X-1≈C0+C1X2+C2X2 2,所述的第一查找表2内存储系数C0,第二查找表3内存储系数C1,第三查找表4内存储系数C2
第一Booth编码器5,输入端连接所述寄存器1的中间部分X2,用于对中间部分X2进行重新编码;
专用平方单元6,输入端连接所述寄存器1的中间部分X2,用于求取中间部分X2的平方值;
第二Booth编码器7,输入端连接所述专用平方单元6输出端,用于对求出的平方值进行重新编码;
第一部分积产行单元8,分别连接第二查找表3和第一Booth编码器5的输出端,用于产生C1X2的9个部分积;
第二部分积产生单元9,分别连接第三查找表4和第二Booth编码器7的输出端,用于产生C2X2 2的6个部分积;如图1所示,两个乘数项C1X2和C2X2 2,分别对乘数项中的X2和X2的平方项进行基数为4的Booth编码,从而两个部分积产生模块中分别得到9个部分积和6个部分积,连同C0,共计16个部分积,之后对这16个部分积进行累加。由图可知,我们采用3级4:2CSA累加树得到最终的CARRY和SUM项。最后通过一个超前进位加法器CLA对这两项进行相加就得到了第一阶段的输出结果Rf,得到的种子值的精度为19bit。
第一级进位保存加法器单元,分别连接第一查找表2、第一部分积产行单元8和第二部分积产生单元9,用于产生第一级的CARRY和SUM项;所述的第一级进位保存加法器单元包括有:
第一进位保存加法器10,分别连接第一查找表2的输出端和第一部分积产行单元8的9个部分积中的3个部分积的输出端,用于产生第一级的第一个CARRY和SUM项;
第二进位保存加法器11,连接第一部分积产行单元8的9个部分积中的另4个部分积的输出端,用于产生第一级的第二个CARRY和SUM项;
第三进位保存加法器12,分别连接第一部分积产行单元8的9个部分积中的最后2个部分积的输出端和第二部分积产生单元9的6个部分积中的2个部分积的输出端,用于产生第一级的第三个CARRY和SUM项;
第四进位保存加法器13,连接第二部分积产生单元9的6个部分积中的其余4个部分积的输出端,用于产生第一级的第三个CARRY和SUM项。
第二级进位保存加法器单元,连接第一级进位保存加法器单元的输出端,用于产生第二级的CARRY和SUM项;所述的第二级进位保存加法器单元包括有:
第六进位保存加法器14,分别连接第一级进位保存加法器单元中的第一进位保存加法器10和第二进位保存加法器11的输出端,用于产生第二级的第一个CARRY和SUM项;
第七进位保存加法器15,分别连接第一级进位保存加法器单元中的第三进位保存加法器12和第四进位保存加法器13的输出端,用于产生第二级的第二个CARRY和SUM项。
第三级进位保存加法器16,连接第二级进位保存加法器单元用于产生第三级的CARRY和SUM项;
超前进位加法器17,连接第三级进位保存加法器单元的输出端,用于计算得到最终的种子值Rf;
如图2所示第二部分包括:
第一多路选择器18,分别连接外部控制信号sel、补码器24的输出和第二部分输出的最终的种子值Rf,用于根据外部控制信号sel,选择补码器24的输出信号和第二部分输出的最终的种子值Rf两个信号中的一个;
第二多路选择器19,分别连接外部控制信号sel、补码器24的输出和第二部分输出的最终的种子值Rf,用于根据外部控制信号sel,选择补码器24的输出信号和第二部分输出的最终的种子值Rf两个信号中的一个;
第三多路选择器20,分别连接外部控制信号sel、53位尾数X的输出信号以及第一乘法器22的输出端,用于根据外部控制信号sel,选择53位尾数X的输出信号和第一乘法器22的输出信号中的一个;
第四多路选择器21,分别连接外部控制信号sel、被除数的尾数部分Y的输出信号以及第二乘法器23的输出端,用于根据外部控制信号sel,选择被除数的尾数部分Y的输出信号和第二乘法器23的输出信号中的一个;
第一乘法器22,分别连接第一多路选择器18和第三多路选择器20的输出端,用于对该两路输出进行相乘;
第二乘法器23,分别连接第二多路选择器19和第四多路选择器21的输出端,用于对该两路输出进行相乘,同时输出最终结果;
补码器24,连接第一乘法器22的输出端,用于对第一乘法器22的输出结果求补。
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种双精度浮点数除法器的设计方法,其特征在于,包括:
第一阶段,采用最小最大二次多项式逼近算法计算倒数函数1/X的种子值Rf,基中,X为除数的53位尾数部分;
第二阶段,基于硬件复用方法的两次Goldschmidt迭代,得到最终精确的结果。
2.根据权利要求1所述的一种双精度浮点数除法器的设计方法,其特征在于,第一阶段包括如下步骤:
1)将53位尾数X被分成三个部分:高位部分X1,中间部分X2和低位部分X3,得到,
X1=[1.x1x2x3...xm1]
X2=[xm1+1........xm2]×2-m1
X3=[xm2+1.........xn]×2-m2
对于倒数函数1/X通过如下公式进行计算,
X-1≈C0+C1X2+C2X2 2      (1)
其中,系数C0,C1,C2通过软件Maple获得,在Maple中通过调用Remez算法来实现最小最大算法,从而得到三个系数C0、C1和C2,并将三个系数C0,C1,C2存入系数查找表;
2)采用高位部分X1进行查表,得到C0、C1和C2的位宽,同时对中间部分X2进行基数为4的Booth编码,以及求中间部分X2的平方值和对所述该平方值进行Booth编码;
3)将用两个部分积产生模块分别产生C1X2和C2X2 2的部分积与查表得到的C0,采用三级4:2CSA树得到最终种子值的CARRY和SUM项;
4)采用一个超前进位加法器CLA对最终种子值的CARRY和SUM项进行相加,得到输出结果倒数函数1/X的种子值Rf。
3.根据权利要求1所述的一种双精度浮点数除法器的设计方法,其特征在于,第二阶段包括两次Goldschmidt迭代共涉及5次乘法和2次求补运算,如下步骤:
1)将第一阶段得到的种子值Rf分别与53位尾数X和被除数的尾数部分Y相乘得到d0和z0,对d0求补后得到x0,然后将z0与x0相乘得到z1;
2)在第二次Goldschmidt迭代中,将d0与x0相乘得到d1,d1求补后得到x1,将得到的x1与z1相乘得到最终的结果z。
4.一种采用权利要求1或2或3所述的双精度浮点数除法器的设计方法得到的除法器,其特征在于,包括有用于计算倒数函数1/X的种子值Rf的第一部分和与所述的第一部分的输出相连的用于计算最终精确结果的第二部分,其中,
第一部分包括:
寄存器(1),分别存放53位尾数X的高位部分X1、中间部分X2和低位部分X3
第一查找表(2)、第二查找表(3)和第三查找表(4),分别连接所述寄存器(1)的高位部分X1的输出端;
第一Booth编码器(5),输入端连接所述寄存器(1)的中间部分X2,用于对中间部分X2进行重新编码;
专用平方单元(6),输入端连接所述寄存器(1)的中间部分X2,用于求取中间部分X2的平方值;
第二Booth编码器(7),输入端连接所述专用平方单元(6)输出端,用于对求出的平方值进行重新编码;
第一部分积产行单元(8),分别连接第二查找表(3)和第一Booth编码器(5)的输出端,用于产生C1X2的9个部分积;
第二部分积产生单元(9),分别连接第三查找表(4)和第二Booth编码器(7)的输出端,用于产生C2X2 2的6个部分积;
第一级进位保存加法器单元,分别连接第一查找表(2)、第一部分积产行单元(8)和第二部分积产生单元(9),用于产生第一级的CARRY和SUM项;
第二级进位保存加法器单元,连接第一级进位保存加法器单元的输出端,用于产生第二级的CARRY和SUM项;
第三级进位保存加法器(16),连接第二级进位保存加法器单元用于产生第三级的CARRY和SUM项;
超前进位加法器(17),连接第三级进位保存加法器单元的输出端,用于计算得到最终的种子值Rf;
第二部分包括:
第一多路选择器(18),分别连接外部控制信号sel、补码器(24)的输出和第二部分输出的最终的种子值Rf,用于根据外部控制信号sel,选择补码器(24)的输出信号和第二部分输出的最终的种子值Rf两个信号中的一个;
第二多路选择器(19),分别连接外部控制信号sel、补码器(24)的输出和第二部分输出的最终的种子值Rf,用于根据外部控制信号sel,选择补码器(24)的输出信号和第二部分输出的最终的种子值Rf两个信号中的一个;
第三多路选择器(20),分别连接外部控制信号sel、53位尾数X的输出信号以及第一乘法器(22)的输出端,用于根据外部控制信号sel,选择53位尾数X的输出信号和第一乘法器(22)的输出信号中的一个;
第四多路选择器(21),分别连接外部控制信号sel、被除数的尾数部分Y的输出信号以及第二乘法器(23)的输出端,用于根据外部控制信号sel,选择被除数的尾数部分Y的输出信号和第二乘法器(23)的输出信号中的一个;
第一乘法器(22),分别连接第一多路选择器(18)和第三多路选择器(20)的输出端,用于对该两路输出进行相乘;
第二乘法器(23),分别连接第二多路选择器(19)和第四多路选择器(21)的输出端,用于对该两路输出进行相乘,同时输出最终结果;
补码器(24),连接第一乘法器(22)的输出端,用于对第一乘法器(22)的输出结果求补。
5.根据权利要求4所述的除法器,其特征在于,对应计算倒数函数1/X的公式X-1≈C0+C1X2+C2X2 2,所述的第一查找表(2)内存储系数C0,第二查找表(3)内存储系数C1,第三查找表(4)内存储系数C2
6.根据权利要求4所述的除法器,其特征在于,所述的第一级进位保存加法器单元包括有:
第一进位保存加法器(10),分别连接第一查找表(2)的输出端和第一部分积产行单元(8)的9个部分积中的3个部分积的输出端,用于产生第一级的第一个CARRY和SUM项;
第二进位保存加法器(11),连接第一部分积产行单元(8)的9个部分积中的另4个部分积的输出端,用于产生第一级的第二个CARRY和SUM项;
第三进位保存加法器(12),分别连接第一部分积产行单元(8)的9个部分积中的最后2个部分积的输出端和第二部分积产生单元(9)的6个部分积中的2个部分积的输出端,用于产生第一级的第三个CARRY和SUM项;
第四进位保存加法器(13),连接第二部分积产生单元(9)的6个部分积中的其余4个部分积的输出端,用于产生第一级的第三个CARRY和SUM项。
7.根据权利要求4所述的除法器,其特征在于,所述的第二级进位保存加法器单元包括有:
第六进位保存加法器(14),分别连接第一级进位保存加法器单元中的第一进位保存加法器(10)和第二进位保存加法器(11)的输出端,用于产生第二级的第一个CARRY和SUM项;
第七进位保存加法器(15),分别连接第一级进位保存加法器单元中的第三进位保存加法器(12)和第四进位保存加法器(13)的输出端,用于产生第二级的第二个CARRY和SUM项。
CN201410036165.4A 2014-01-24 2014-01-24 一种双精度浮点数除法器的设计方法及除法器 Active CN103809930B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410036165.4A CN103809930B (zh) 2014-01-24 2014-01-24 一种双精度浮点数除法器的设计方法及除法器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410036165.4A CN103809930B (zh) 2014-01-24 2014-01-24 一种双精度浮点数除法器的设计方法及除法器

Publications (2)

Publication Number Publication Date
CN103809930A true CN103809930A (zh) 2014-05-21
CN103809930B CN103809930B (zh) 2017-05-03

Family

ID=50706771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410036165.4A Active CN103809930B (zh) 2014-01-24 2014-01-24 一种双精度浮点数除法器的设计方法及除法器

Country Status (1)

Country Link
CN (1) CN103809930B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375800A (zh) * 2014-12-09 2015-02-25 国网重庆市电力公司电力科学研究院 一种嵌入式系统的浮点除法运算方法、系统和嵌入式系统
CN104598197A (zh) * 2015-01-26 2015-05-06 中国科学院自动化研究所 一种浮点倒数和/或平方根倒数运算方法及其装置
CN104615404A (zh) * 2015-02-15 2015-05-13 浪潮电子信息产业股份有限公司 一种基于查表操作的高速浮点除法部件装置
CN105389157A (zh) * 2015-10-29 2016-03-09 中国人民解放军国防科学技术大学 基于Goldschmidt算法的浮点除法器
CN106020769A (zh) * 2016-06-22 2016-10-12 上海兆芯集成电路有限公司 浮点除法器以及浮点除法器操作方法
CN106354473A (zh) * 2015-07-16 2017-01-25 浙江大华技术股份有限公司 一种除法器和求商和余数的方法
CN107247992A (zh) * 2014-12-30 2017-10-13 合肥工业大学 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN107562408A (zh) * 2016-06-30 2018-01-09 德州仪器公司 支持可中断浮点除法的架构及指令集
CN107885485A (zh) * 2017-11-08 2018-04-06 无锡中微亿芯有限公司 一种基于超前进位实现快速加法的可编程逻辑单元结构
CN108595148A (zh) * 2018-04-09 2018-09-28 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 除法函数实现方法、电路、芯片以及系统
CN108897524A (zh) * 2018-05-31 2018-11-27 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 除法函数处理电路、方法、芯片以及系统
TWI743237B (zh) * 2016-11-03 2021-10-21 南韓商三星電子股份有限公司 用查找表執行遞歸運算的方法、設備及其測試方法
TWI763079B (zh) * 2019-10-14 2022-05-01 大陸商安徽寒武紀信息科技有限公司 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040128338A1 (en) * 2002-10-29 2004-07-01 Guy Even Pipelined multiplicative division with IEEE rounding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040128338A1 (en) * 2002-10-29 2004-07-01 Guy Even Pipelined multiplicative division with IEEE rounding

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
C.N. LYU ET AL.: "Redundant Binary Booth Recoding", 《PROC. 12TH SYMP. COMPUTER ARITHMETIC》, 31 December 1995 (1995-12-31), pages 50 - 57 *
INWOOK KONG ET AL.: "A Goldschmidt Division Method With Faster Than Quadratic Convergence", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS》, vol. 19, no. 4, 30 April 2011 (2011-04-30), pages 696 - 700, XP011364028, DOI: doi:10.1109/TVLSI.2009.2036926 *
JOSE´ -ALEJANDRO PIN˜ EIRO: "High-Speed Double-Precision Computation of Reciprocal, Division, Square Root, and Inverse Square Root", 《IEEE TRANSACTIONS ON COMPUTERS》, vol. 51, no. 12, 31 December 2002 (2002-12-31), pages 1377 - 1388, XP011095227, DOI: doi:10.1109/TC.2002.1146704 *
SCHULTE ET AL.: "Floating-point division algorithms for an x86 microprocessor with a rectangular multiplier", 《IEEE INTERNATIONAL CONFERENCE ON COMPUTER DESIGN. PORTUGAL: [S. N.]》, 31 December 2007 (2007-12-31), pages 304 - 310 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375800A (zh) * 2014-12-09 2015-02-25 国网重庆市电力公司电力科学研究院 一种嵌入式系统的浮点除法运算方法、系统和嵌入式系统
CN107247992B (zh) * 2014-12-30 2019-08-30 合肥工业大学 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN107247992A (zh) * 2014-12-30 2017-10-13 合肥工业大学 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN104598197A (zh) * 2015-01-26 2015-05-06 中国科学院自动化研究所 一种浮点倒数和/或平方根倒数运算方法及其装置
CN104598197B (zh) * 2015-01-26 2017-05-31 中国科学院自动化研究所 一种浮点倒数和/或平方根倒数运算方法及其装置
CN104615404A (zh) * 2015-02-15 2015-05-13 浪潮电子信息产业股份有限公司 一种基于查表操作的高速浮点除法部件装置
CN106354473A (zh) * 2015-07-16 2017-01-25 浙江大华技术股份有限公司 一种除法器和求商和余数的方法
CN106354473B (zh) * 2015-07-16 2019-02-12 浙江大华技术股份有限公司 一种除法器和求商和余数的方法
CN105389157A (zh) * 2015-10-29 2016-03-09 中国人民解放军国防科学技术大学 基于Goldschmidt算法的浮点除法器
CN106020769B (zh) * 2016-06-22 2018-09-14 上海兆芯集成电路有限公司 浮点除法器以及浮点除法器操作方法
CN106020769A (zh) * 2016-06-22 2016-10-12 上海兆芯集成电路有限公司 浮点除法器以及浮点除法器操作方法
CN107562408A (zh) * 2016-06-30 2018-01-09 德州仪器公司 支持可中断浮点除法的架构及指令集
CN107562408B (zh) * 2016-06-30 2023-09-12 德州仪器公司 支持可中断浮点除法的实现方法及系统
TWI743237B (zh) * 2016-11-03 2021-10-21 南韓商三星電子股份有限公司 用查找表執行遞歸運算的方法、設備及其測試方法
CN107885485A (zh) * 2017-11-08 2018-04-06 无锡中微亿芯有限公司 一种基于超前进位实现快速加法的可编程逻辑单元结构
CN107885485B (zh) * 2017-11-08 2021-07-06 无锡中微亿芯有限公司 一种基于超前进位实现快速加法的可编程逻辑单元结构
CN108595148A (zh) * 2018-04-09 2018-09-28 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 除法函数实现方法、电路、芯片以及系统
CN108595148B (zh) * 2018-04-09 2021-06-29 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 除法函数实现方法、电路、芯片以及系统
CN108897524A (zh) * 2018-05-31 2018-11-27 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 除法函数处理电路、方法、芯片以及系统
CN108897524B (zh) * 2018-05-31 2021-01-22 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 除法函数处理电路、方法、芯片以及系统
TWI763079B (zh) * 2019-10-14 2022-05-01 大陸商安徽寒武紀信息科技有限公司 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置

Also Published As

Publication number Publication date
CN103809930B (zh) 2017-05-03

Similar Documents

Publication Publication Date Title
CN103809930B (zh) 一种双精度浮点数除法器的设计方法及除法器
Murillo et al. PLAM: A posit logarithm-approximate multiplier
Kanhe et al. Design and implementation of floating point multiplier based on vedic multiplication technique
CN108196822A (zh) 一种双精度浮点开方运算的方法及系统
Mehta et al. Implementation of single precision floating point multiplier using karatsuba algorithm
Sunesh et al. Design and implementation of fast floating point multiplier unit
CN107133012B (zh) 一种高速自定义浮点复数除法器
Havaldar et al. Design of Vedic IEEE 754 floating point multiplier
Malík High throughput floating point exponential function implemented in FPGA
Ramesh et al. An FPGA based high speed IEEE-754 double precision floating point multiplier using Verilog
Mahakalkar et al. Design of High Performance IEEE754 Floating point multiplier using Vedic mathematics
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
Ushasree et al. VLSI implementation of a high speed single precision floating point unit using verilog
Buddhe et al. Design and verification of dadda algorithm based binary floating point multiplier
CN104615404A (zh) 一种基于查表操作的高速浮点除法部件装置
Panda et al. A novel vedic divider architecture with reduced delay for VLSI applications
Pande et al. Design and implementation of floating point divide-add fused architecture
Shuang-yan et al. Design and implementation of a 64/32-bit floating-point division, reciprocal, square root, and inverse square root unit
Banerjee et al. High performance novel square root architecture using ancient Indian mathematics for high speed signal processing
Prasanna et al. An Efficient Fused Floating-Point Dot Product Unit Using Vedic Mathematics
Fahmy et al. Energy and delay improvement via decimal floating point units
Anuhya et al. ASIC implementation of efficient floating point multiplier
Liu et al. An efficient floating-point multiplier for digital signal processors
Kumar et al. Simulation And Synthesis Of 32-Bit Multiplier Using Configurable Devices
Vincent et al. Decimal floating point format based on commonly used precision for embedded system applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200923

Address after: No.5 building, Xin'an venture Plaza, marine high tech Development Zone, Binhai New Area, Tianjin

Patentee after: TIANJIN FEITENG INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 300072 Tianjin City, Nankai District Wei Jin Road No. 92

Patentee before: Tianjin University

TR01 Transfer of patent right
CP01 Change in the name or title of a patent holder

Address after: 300000 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Patentee after: Feiteng Information Technology Co.,Ltd.

Address before: 300000 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Patentee before: TIANJIN FEITENG INFORMATION TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder