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

上传人:奻奴 文档编号:6134837 上传时间:2019-04-17 格式:PDF 页数:15 大小:1.54MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410036165.4

申请日:

2014.01.24

公开号:

CN103809930A

公开日:

2014.05.21

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 7/535申请日:20140124|||公开

IPC分类号:

G06F7/535; G06F17/50

主分类号:

G06F7/535

申请人:

天津大学

发明人:

郭炜; 崔鲁平; 李光赫; 魏继增

地址:

300072 天津市南开区卫津路92号

优先权:

专利代理机构:

天津市北洋有限责任专利代理事务所 12201

代理人:

杜文茹

PDF下载: PDF下载
内容摘要

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

权利要求书

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+C2X22      (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和C2X22的部分积与查表得到的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)的输出
端,用于产生C2X22的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+C2X22,所述的第一查找表(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
项。

说明书

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

技术领域

本发明涉及一种除法器。特别是涉及一种高性能、低面积开销的双精度浮点数除法器的
设计方法及除法器。

背景技术

除法算法主要分为两种:一种是慢速算法,一种是快速算法。慢速算法是一种基于数位
迭代的方法,每次迭代产生一位商位,收敛速度为线性收敛。恢复余数法、不恢复余数法及
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+C2X22      (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和C2X22的部分积与查表得到的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编码器的输出端,用于产生
C2X22的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+C2X22,所述的第一查找表内存储系
数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+C2X22      (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和C2X22的部分积与查表得到的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)在多项式计算过程中因有限位宽而引入的算术误差。

总误差 ϵ Rf ϵ approx + ϵ C 0 X 2 + ϵ C 1 X 2 2 + | C 1 | max ϵ X 2 + | C 2 | ϵ X 2 2 ]]>

由于有限位宽的系数是通过Maple程序获得的,因此实际的多项式逼近误差应为:

ϵ approx = ϵ approx + ϵ C 0 X 2 + ϵ C 1 X 2 2 ]]>

因此:

ϵ Rf ϵ approx + | C 1 | max ϵ X 2 + | C 2 | ϵ X 2 2 ]]>

分析得知,当m1=5时,Rf的误差(εRf<2-19)满足本发明所设的误差精度。

2、Z的误差分析

在第二阶段计算过程中,以第一阶段的结果Rf作为输入进行两次Goldschmidt迭代,得
到最终结果z,z的误差也主要来自两方面:1)Goldschmidt迭代算法本身的误差(εitera),
2)在计算过程中因有限位宽表示而带来的算术误差(εarith)。

第二阶段总误差εz=εitera+εarith

最终的误差要满足εz<2-54,这样最终的结果才是精确的,我们不妨记在迭代的过程
中要保留的小数部分的位宽为t位(输入操作数X,Y的取值范围都为[1:2),最终结果Z的取值
范围为(0.5,2))。

迭代误差:

εitera=(εRf)4·X3·Y

因此εitera<2-72。

计算误差:

ϵ arith = ϵ z + ϵ z 1 · x 1 + ϵ x 1 · z 1 + ϵ z 1 · ϵ x 1 ]]>

其中εz'是因乘法器输出的有限位宽而引入的误差,其值为2-t,是计算z1的过程
中所产生的总的误差,包括传递误差和累积误差。同理,是在计算x1的过程所产生的总
的误差,包括传递误差和累积误差,x1,z1的最大值均不超过2,因此

计算误差 ϵ arith < 2 - t + 2 · ϵ z 1 + 2 · ϵ x 1 + ϵ z 1 · ϵ x 1 ]]>

与的计算过程跟εarith类似

ϵ z 1 = ϵ z 1 + ϵ z 0 · x 0 + ϵ x 0 · z 0 ]]>


ϵ x 1 = ϵ d 1 = ϵ d 1 + ϵ d 0 · x 0 + ϵ x 0 · d 0 ]]>

其中,

ϵ z 0 = 2 - t , ϵ x 0 = ϵ d 0 = 2 - t ]]>

x0,z0,d0,最大值均不超过2,因此,计算误差

ϵ arith < 2 - t + 2 · ( ϵ z 1 + ϵ z 0 · x 0 + ϵ x 0 · z 0 ) + 2 · ( ϵ d 1 + ϵ d 0 · x 0 + ϵ x 0 · d 0 ) + ( ϵ z 1 + ϵ z 0 · x 0 + ϵ x 0 · z 0 ) · ( ϵ d 1 + ϵ d 0 · x 0 + ϵ x 0 · d 0 ) ϵ arith < 2 - t + 2 · ( ϵ z 1 + 2 · ϵ z 0 + ϵ x 0 · z 0 ) + 2 · ( ϵ d 1 + 2 · ϵ d 0 + 2 · ϵ x 0 ) + ( ϵ z 1 + 2 · ϵ z 0 + 2 · ϵ x 0 ) · ( ϵ d 1 + 2 · ϵ d 0 + 2 · ϵ x 0 ) ]]>

因此总的误差

ϵ z < 2 - 72 + 2 - t + 2 · ( ϵ z 1 + 2 · ϵ z 0 + ϵ x 0 · z 0 ) + 2 · ( ϵ d 1 + 2 · ϵ d 0 + 2 · ϵ x 0 ) + ( ϵ z 1 + 2 · ϵ z 0 + 2 · ϵ x 0 ) · ( ϵ d 1 + 2 · ϵ d 0 + 2 · ϵ 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+C2X22,所述的第一查找表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的输出端,用于产
生C2X22的6个部分积;如图1所示,两个乘数项C1X2和C2X22,分别对乘数项中的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的输出结果求补。

本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅
仅为了描述,不代表实施例的优劣。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之
内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

一种双精度浮点数除法器的设计方法及除法器.pdf_第1页
第1页 / 共15页
一种双精度浮点数除法器的设计方法及除法器.pdf_第2页
第2页 / 共15页
一种双精度浮点数除法器的设计方法及除法器.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种双精度浮点数除法器的设计方法及除法器.pdf》由会员分享,可在线阅读,更多相关《一种双精度浮点数除法器的设计方法及除法器.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103809930 A (43)申请公布日 2014.05.21 CN 103809930 A (21)申请号 201410036165.4 (22)申请日 2014.01.24 G06F 7/535(2006.01) G06F 17/50(2006.01) (71)申请人 天津大学 地址 300072 天津市南开区卫津路 92 号 (72)发明人 郭炜 崔鲁平 李光赫 魏继增 (74)专利代理机构 天津市北洋有限责任专利代 理事务所 12201 代理人 杜文茹 (54) 发明名称 一种双精度浮点数除法器的设计方法及除法 器 (57) 摘要 一种双精度浮点数除法器的设。

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

3、9 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书9页 附图2页 (10)申请公布号 CN 103809930 A CN 103809930 A 1/3 页 2 1. 一种双精度浮点数除法器的设计方法, 其特征在于, 包括 : 第一阶段, 采用最小最大二次多项式逼近算法计算倒数函数 1/X 的种子值 Rf, 基中, X 为除数的 53 位尾数部分 ; 第二阶段, 基于硬件复用方法的两次 Goldschmidt 迭代, 得到最终精确的结果。 2. 根据权利要求 1 所述的一种双精度浮点数除法器的设计方法, 其特征在于, 第一阶 段包括如下步骤。

4、 : 1) 将 53 位尾数 X 被分成三个部分 : 高位部分 X1, 中间部分 X2和低位部分 X3, 得到, X1=1.x1x2x3.xm1 X2=xm1+1xm22-m1 X3=xm2+1.xn2-m2 对于倒数函数 1/X 通过如下公式进行计算, X-1 C0+C1X2+C2X22 (1) 其中, 系数 C0, C1, C2通过软件 Maple 获得, 在 Maple 中通过调用 Remez 算法来实现最小 最大算法, 从而得到三个系数 C0、 C1 和 C2, 并将三个系数 C0, C1, C2存入系数查找表 ; 2) 采用高位部分 X1 进行查表, 得到 C0、 C1 和 C2 的。

5、位宽, 同时对中间部分 X2进行基数 为 4 的 Booth 编码, 以及求中间部分 X2的平方值和对所述该平方值进行 Booth 编码 ; 3) 将用两个部分积产生模块分别产生C1X2和C2X22的部分积与查表得到的C0, 采用三级 4 : 2CSA 树得到最终种子值的 CARRY 和 SUM 项 ; 4) 采用一个超前进位加法器 CLA 对最终种子值的 CARRY 和 SUM 项进行相加, 得到输出 结果倒数函数 1/X 的种子值 Rf。 3. 根据权利要求 1 所述的一种双精度浮点数除法器的设计方法, 其特征在于, 第二阶 段包括两次 Goldschmidt 迭代共涉及 5 次乘法和 2。

6、 次求补运算, 如下步骤 : 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 的第一部分和与所述的第一部 分的输出相连的用于计算最终精。

7、确结果的第二部分, 其中, 第一部分包括 : 寄存器 (1) , 分别存放 53 位尾数 X 的高位部分 X1、 中间部分 X2和低位部分 X3; 第一查找表 (2) 、 第二查找表 (3) 和第三查找表 (4) , 分别连接所述寄存器 (1) 的高位部 分 X1的输出端 ; 第一 Booth 编码器 (5) , 输入端连接所述寄存器 (1) 的中间部分 X2, 用于对中间部分 X2 进行重新编码 ; 专用平方单元 (6) , 输入端连接所述寄存器 (1) 的中间部分 X2, 用于求取中间部分 X2的 平方值 ; 第二 Booth 编码器 (7) , 输入端连接所述专用平方单元 (6) 输出端。

8、, 用于对求出的平方 值进行重新编码 ; 权 利 要 求 书 CN 103809930 A 2 2/3 页 3 第一部分积产行单元 (8) , 分别连接第二查找表 (3) 和第一Booth编码器 (5) 的输出端, 用于产生 C1X2的 9 个部分积 ; 第二部分积产生单元 (9) , 分别连接第三查找表 (4) 和第二Booth编码器 (7) 的输出端, 用于产生 C2X22的 6 个部分积 ; 第一级进位保存加法器单元, 分别连接第一查找表 (2) 、 第一部分积产行单元 (8) 和第 二部分积产生单元 (9) , 用于产生第一级的 CARRY 和 SUM 项 ; 第二级进位保存加法器单元。

9、, 连接第一级进位保存加法器单元的输出端, 用于产生第 二级的 CARRY 和 SUM 项 ; 第三级进位保存加法器 (16) , 连接第二级进位保存加法器单元用于产生第三级的 CARRY 和 SUM 项 ; 超前进位加法器 (17) , 连接第三级进位保存加法器单元的输出端, 用于计算得到最终 的种子值 Rf ; 第二部分包括 : 第一多路选择器 (18) , 分别连接外部控制信号 sel、 补码器 (24) 的输出和第二部分输 出的最终的种子值 Rf, 用于根据外部控制信号 sel, 选择补码器 (24) 的输出信号和第二部 分输出的最终的种子值 Rf 两个信号中的一个 ; 第二多路选择器。

10、 (19) , 分别连接外部控制信号 sel、 补码器 (24) 的输出和第二部分输 出的最终的种子值 Rf, 用于根据外部控制信号 sel, 选择补码器 (24) 的输出信号和第二部 分输出的最终的种子值 Rf 两个信号中的一个 ; 第三多路选择器 (20) , 分别连接外部控制信号sel、 53位尾数X的输出信号以及第一乘 法器 (22) 的输出端, 用于根据外部控制信号 sel, 选择 53 位尾数 X 的输出信号和第一乘法 器 (22) 的输出信号中的一个 ; 第四多路选择器 (21) , 分别连接外部控制信号 sel、 被除数的尾数部分 Y 的输出信号以 及第二乘法器 (23) 的输。

11、出端, 用于根据外部控制信号 sel, 选择被除数的尾数部分 Y 的输出 信号和第二乘法器 (23) 的输出信号中的一个 ; 第一乘法器 (22) , 分别连接第一多路选择器 (18) 和第三多路选择器 (20) 的输出端, 用 于对该两路输出进行相乘 ; 第二乘法器 (23) , 分别连接第二多路选择器 (19) 和第四多路选择器 (21) 的输出端, 用 于对该两路输出进行相乘, 同时输出最终结果 ; 补码器 (24) , 连接第一乘法器 (22) 的输出端, 用于对第一乘法器 (22) 的输出结果求 补。 5. 根据权利要求 4 所述的除法器, 其特征在于, 对应计算倒数函数 1/X 的。

12、公式 X-1 C0+C1X2+C2X22, 所述的第一查找表 (2) 内存储系数 C0, 第二查找表 (3) 内存储系数 C1, 第 三查找表 (4) 内存储系数 C2。 6. 根据权利要求 4 所述的除法器, 其特征在于, 所述的第一级进位保存加法器单元包 括有 : 第一进位保存加法器 (10) , 分别连接第一查找表 (2) 的输出端和第一部分积产行单元 (8) 的 9 个部分积中的 3 个部分积的输出端, 用于产生第一级的第一个 CARRY 和 SUM 项 ; 第二进位保存加法器 (11) , 连接第一部分积产行单元 (8) 的 9 个部分积中的另 4 个部 权 利 要 求 书 CN 1。

13、03809930 A 3 3/3 页 4 分积的输出端, 用于产生第一级的第二个 CARRY 和 SUM 项 ; 第三进位保存加法器 (12) , 分别连接第一部分积产行单元 (8) 的 9 个部分积中的最后 2 个部分积的输出端和第二部分积产生单元 (9) 的 6 个部分积中的 2 个部分积的输出端, 用 于产生第一级的第三个 CARRY 和 SUM 项 ; 第四进位保存加法器 (13) , 连接第二部分积产生单元 (9) 的 6 个部分积中的其余 4 个 部分积的输出端, 用于产生第一级的第三个 CARRY 和 SUM 项。 7. 根据权利要求 4 所述的除法器, 其特征在于, 所述的第二。

14、级进位保存加法器单元包 括有 : 第六进位保存加法器 (14) , 分别连接第一级进位保存加法器单元中的第一进位保存加 法器 (10) 和第二进位保存加法器 (11) 的输出端, 用于产生第二级的第一个 CARRY 和 SUM 项 ; 第七进位保存加法器 (15) , 分别连接第一级进位保存加法器单元中的第三进位保存加 法器 (12) 和第四进位保存加法器 (13) 的输出端, 用于产生第二级的第二个 CARRY 和 SUM 项。 权 利 要 求 书 CN 103809930 A 4 1/9 页 5 一种双精度浮点数除法器的设计方法及除法器 技术领域 0001 本发明涉及一种除法器。特别是涉及。

15、一种高性能、 低面积开销的双精度浮点数除 法器的设计方法及除法器。 背景技术 0002 除法算法主要分为两种 : 一种是慢速算法, 一种是快速算法。 慢速算法是一种基于 数位迭代的方法, 每次迭代产生一位商位, 收敛速度为线性收敛。恢复余数法、 不恢复余数 法及 SRT 法都属于慢速算法。快速算法通常使用查表法得到一个接近商值的种子值, 以乘 法作为基本的迭代步骤, 每次迭代产生多个商位, 收敛速度为对数收敛。 Newton-Raphson和 Goldschmidt 都属于快速算法。 0003 由IEEE-754标准对双精度浮点数的定义得知, 一个双精度浮点数占64bit, 其中1 位符号位,。

16、 11 位指数位, 52 位尾数位 (加上隐含的前导 1 则为 53 位) 。两双精度浮点数相除 得到的结果, 尾数部分的取值范围为 (0.5,2), 因此要确保尾数部分的最终误差 2-54, 这 样才能保证最终的尾数是精确的结果。 0004 高性能双精度浮点除法器的一种广泛被认可的设计方法是先通过二次逼近查表 法得到被除数 X(以 Y/X 为例) 倒数的种子值 Rf, 该种子值是 1/X 的近似值, 精度为 30bit。 得到种子值之后再通过一次 Goldschmidt 的方法, 具体来讲是一次乘法运算和两次乘加运 算, 得到最终的结果。 0005 在实际的应用中, 相比较于乘法和加法来讲除。

17、法并不是一种常见的操作, 如果用 上述方法设计双精度浮点除法器, 其面积开销会远大于设计乘法器和加法器所带来的面积 开销, 分析得知, 主要的面积开销在于通过二次逼近法得到的查找表的面积 (31Kb) , 一个 53x30乘法器面积, 一个53x30的乘加单元面积和56x28的乘加单元的面积。 虽然该方法可 以实现完全流水, 但是由于除法操作的较少使用, 使得在实际应用中不能发挥该双精度浮 点除法器的性能优势。 发明内容 0006 本发明所要解决的技术问题是, 提供一种能够减少双精度浮点除法器的面积开销 又满足应用需求的双精度浮点数除法器的设计方法及除法器。 0007 本发明所采用的技术方案是。

18、 : 一种双精度浮点数除法器的设计方法, 包括 : 0008 第一阶段, 采用最小最大二次多项式逼近算法计算倒数函数 1/X 的种子值 Rf, 基 中, X 为除数的 53 位尾数部分 ; 0009 第二阶段, 基于硬件复用方法的两次 Goldschmidt 迭代, 得到最终精确的结果。 0010 第一阶段包括如下步骤 : 0011 1) 将 53 位尾数 X 被分成三个部分 : 高位部分 X1, 中间部分 X2和低位部分 X3, 得到, 0012 X1=1.x1x2x3.xm1 0013 X2=xm1+1xm22-m1 说 明 书 CN 103809930 A 5 2/9 页 6 0014 。

19、X3=xm2+1.xn2-m2 0015 对于倒数函数 1/X 通过如下公式进行计算, 0016 X-1 C0+C1X2+C2X22 (1) 0017 其中, 系数 C0, C1, C2通过软件 Maple 获得, 在 Maple 中通过调用 Remez 算法来实现 最小最大算法, 从而得到三个系数 C0、 C1 和 C2, 并将三个系数 C0, C1, C2存入系数查找表 ; 0018 2) 采用高位部分 X1 进行查表, 得到 C0、 C1 和 C2 的位宽, 同时对中间部分 X2进行 基数为 4 的 Booth 编码, 以及求中间部分 X2的平方值和对所述该平方值进行 Booth 编码 。

20、; 0019 3) 将用两个部分积产生模块分别产生C1X2和C2X22的部分积与查表得到的C0, 采用 三级 4 : 2CSA 树得到最终种子值的 CARRY 和 SUM 项 ; 0020 4) 采用一个超前进位加法器 CLA 对最终种子值的 CARRY 和 SUM 项进行相加, 得到 输出结果倒数函数 1/X 的种子值 Rf。 0021 第二阶段包括两次 Goldschmidt 迭代共涉及 5 次乘法和 2 次求补运算, 如下步骤 : 0022 1) 将第一阶段得到的种子值 Rf 分别与 53 位尾数 X 和被除数的尾数部分 Y 相乘得 到 d0 和 z0, 对 d0 求补后得到 x0, 然。

21、后将 z0 与 x0 相乘得到 z1 ; 0023 2) 在第二次 Goldschmidt 迭代中, 将 d0 与 x0 相乘得到 d1, d1 求补后得到 x1, 将 得到的 x1 与 z1 相乘得到最终的结果 z。 0024 本发明的采用双精度浮点数除法器的设计方法得到的除法器, 包括有用于计算倒 数函数 1/X 的种子值 Rf 的第一部分和与所述的第一部分的输出相连的用于计算最终精确 结果的第二部分, 其中, 0025 第一部分包括 : 0026 寄存器, 分别存放 53 位尾数 X 的高位部分 X1、 中间部分 X2和低位部分 X3; 0027 第一查找表、 第二查找表和第三查找表, 。

22、分别连接所述寄存器的高位部分 X1的输 出端 ; 0028 第一 Booth 编码器, 输入端连接所述寄存器的中间部分 X2, 用于对中间部分 X2进 行重新编码 ; 0029 专用平方单元, 输入端连接所述寄存器的中间部分 X2, 用于求取中间部分 X2的平 方值 ; 0030 第二 Booth 编码器, 输入端连接所述专用平方单元输出端, 用于对求出的平方值 进行重新编码 ; 0031 第一部分积产行单元, 分别连接第二查找表和第一 Booth 编码器的输出端, 用于 产生 C1X2的 9 个部分积 ; 0032 第二部分积产生单元, 分别连接第三查找表和第二 Booth 编码器的输出端,。

23、 用于 产生 C2X22的 6 个部分积 ; 0033 第一级进位保存加法器单元, 分别连接第一查找表、 第一部分积产行单元和第二 部分积产生单元, 用于产生第一级的 CARRY 和 SUM 项 ; 0034 第二级进位保存加法器单元, 连接第一级进位保存加法器单元的输出端, 用于产 生第二级的 CARRY 和 SUM 项 ; 0035 第三级进位保存加法器, 连接第二级进位保存加法器单元用于产生第三级的 CARRY 和 SUM 项 ; 说 明 书 CN 103809930 A 6 3/9 页 7 0036 超前进位加法器, 连接第三级进位保存加法器单元的输出端, 用于计算得到最终 的种子值 。

24、Rf ; 0037 第二部分包括 : 0038 第一多路选择器, 分别连接外部控制信号 sel、 补码器的输出和第二部分输出的最 终的种子值 Rf, 用于根据外部控制信号 sel, 选择补码器的输出信号和第二部分输出的最 终的种子值 Rf 两个信号中的一个 ; 0039 第二多路选择器, 分别连接外部控制信号 sel、 补码器的输出和第二部分输出的最 终的种子值 Rf, 用于根据外部控制信号 sel, 选择补码器的输出信号和第二部分输出的最 终的种子值 Rf 两个信号中的一个 ; 0040 第三多路选择器, 分别连接外部控制信号sel、 53位尾数X的输出信号以及第一乘 法器的输出端, 用于根。

25、据外部控制信号sel, 选择53位尾数X的输出信号和第一乘法器的输 出信号中的一个 ; 0041 第四多路选择器, 分别连接外部控制信号 sel、 被除数的尾数部分 Y 的输出信号以 及第二乘法器的输出端, 用于根据外部控制信号 sel, 选择被除数的尾数部分 Y 的输出信号 和第二乘法器的输出信号中的一个 ; 0042 第一乘法器, 分别连接第一多路选择器和第三多路选择器的输出端, 用于对该两 路输出进行相乘 ; 0043 第二乘法器, 分别连接第二多路选择器和第四多路选择器的输出端, 用于对该两 路输出进行相乘, 同时输出最终结果 ; 0044 补码器, 连接第一乘法器的输出端, 用于对第。

26、一乘法器的输出结果求补。 0045 对应计算倒数函数 1/X 的公式 X-1 C0+C1X2+C2X22, 所述的第一查找表内存储系数 C0, 第二查找表内存储系数 C1, 第三查找表内存储系数 C2。 0046 所述的第一级进位保存加法器单元包括有 : 0047 第一进位保存加法器, 分别连接第一查找表的输出端和第一部分积产行单元的 9 个部分积中的 3 个部分积的输出端, 用于产生第一级的第一个 CARRY 和 SUM 项 ; 0048 第二进位保存加法器, 连接第一部分积产行单元的 9 个部分积中的另 4 个部分积 的输出端, 用于产生第一级的第二个 CARRY 和 SUM 项 ; 00。

27、49 第三进位保存加法器, 分别连接第一部分积产行单元的 9 个部分积中的最后 2 个 部分积的输出端和第二部分积产生单元的 6 个部分积中的 2 个部分积的输出端, 用于产生 第一级的第三个 CARRY 和 SUM 项 ; 0050 第四进位保存加法器, 连接第二部分积产生单元的 6 个部分积中的其余 4 个部分 积的输出端, 用于产生第一级的第三个 CARRY 和 SUM 项。 0051 所述的第二级进位保存加法器单元包括有 : 0052 第六进位保存加法器, 分别连接第一级进位保存加法器单元中的第一进位保存加 法器和第二进位保存加法器的输出端, 用于产生第二级的第一个 CARRY 和 S。

28、UM 项 ; 0053 第七进位保存加法器, 分别连接第一级进位保存加法器单元中的第三进位保存加 法器和第四进位保存加法器的输出端, 用于产生第二级的第二个 CARRY 和 SUM 项。 0054 本发明的一种双精度浮点数除法器的设计方法及除法器, 是一种高性能、 地面积 开销的除法器, 通过硬件复用方法, 在性能减低很小的情况下可或者很大的面积优势, 尤其 说 明 书 CN 103809930 A 7 4/9 页 8 适用于对面积要求严格的嵌入式微处理器领域。 附图说明 0055 图 1 是本发明基于查找表法计算 1/X 的种子值 Rf 的结构框图 ; 0056 图 2 是本发明两次 Gol。

29、dschmidt 迭代的结构框图 ; 0057 图 3 是本发明两次 Goldschmidt 迭代的计算流程图。 0058 图中 0059 1 : 寄存器 2 : 第一查找表 0060 3 : 第二查找表 4 : 第三查找表 0061 5 : 第一 Booth 编码器 6 : 专用平方单元 0062 7 : 第二 Booth 编码器 8 : 第一部分积产行单元 0063 9 : 第二部分积产生单元 10 : 第一进位保存加法器 0064 11 : 第二进位保存加法器 12 : 第三进位保存加法器 0065 13 : 第四进位保存加法器 14 : 第六进位保存加法器 0066 15 : 第七进位。

30、保存加法器 16 : 第三级进位保存加法器 0067 17 : 超前进位加法器 18 : 第一多路选择器 0068 19 : 第二多路选择器 20 : 第三多路选择器 0069 21 : 第四多路选择器 22 : 第一乘法器 0070 23 : 第二乘法器 24 : 补码器 具体实施方式 0071 下面结合实施例和附图对本发明的一种双精度浮点数除法器的设计方法及除法 器做出详细说明。 0072 发明的一种双精度浮点数除法器的设计方法及除法器, 采用一次查表法 + 两次 Goldschmidt 迭代的方法来设计双精度浮点除法器, 其中查找表也是采用二次多项式逼近 算法得到, 但是其面积要远小于原。

31、方法所使用的查找表的面积, 经查找表之后会得到一个 比原先方法更小精度的种子值 Rf, 在后续的 Goldschmidt 中, 采用两次迭代的方法来获得 与原方法相同的精度, 但是两次迭代使用相同的硬件单元 (2 个 60x60 的乘法器) 。总的来 看, 我们采用的方法在查找表的面积上有很大的减少, 但是由于采用了硬件复用技术, 因此 后续两次 Goldschmidt 的面积开销并没有增加太多, 总面积开销要小于原方法的面积开 销。 从性能上来看, 采用我们的方法设计出的双精度浮点除法器虽然不能完全可流水, 但是 由于实际应用中除法操作并不常见, 因此采用该方法设计的除法器并不会带来整体性能。

32、上 的损失。 0073 本发明的一种双精度浮点数除法器的设计方法, 包括 : 0074 第一阶段, 采用最小最大二次多项式逼近算法计算倒数函数 1/X 的种子值 Rf, 基 中, X 为除数的 53 位尾数部分 ; 第二阶段, 基于硬件复用方法的两次 Goldschmidt 迭代, 得 到最终精确的结果。 0075 其中, 第一阶段包括如下步骤 : 0076 1) 将 53 位尾数 X 被分成三个部分 : 高位部分 X1, 可为 5 位, 中间部分 X2, 可为 17 说 明 书 CN 103809930 A 8 5/9 页 9 位和低位部分 X3, 可为 31 位, 得到, 0077 X1=。

33、1.x1x2x3.xm1 0078 X2=xm1+1xm22-m1 0079 X3=xm2+1.xn2-m2 0080 对于倒数函数 1/X 通过如下公式进行计算, 0081 X-1 C0+C1X2+C2X22 (1) 0082 其中, 系数 C0, C1, C2通过软件 Maple 获得, 在 Maple 中通过调用 Remez 算法来实现 最小最大算法, 从而得到三个系数 C0, C1, C2, 并将三个系数 C0, C1, C2存入系数查找表 ; 0083 在实际的计算中, 通过 53 位尾数 X 的 m1bit 高位部分 X1进行查表得到系数 C0、 C1 和 C2, 然后用得到的三个。

34、系数与 53 位尾数 X 的中位部分 X2 按照公式 (1) 进行二次多 项式的计算, 从而得到的近似值 Rf。用于查表的 X1 的位宽, 用于计算的 X2 的位宽及 C0、 C1 和 C2 的位宽会直接影响得到的种子值的精度, 其中 X1 的位宽和三个系数的位宽又 会直接影响系数查找表的大小, 前者决定了查找表的深度而后者决定了查找表的宽度。查 找表的面积会极大影响整个双精度浮点除法器的面积, 而得到的种子值的精度又会对后续 Goldschmidt 迭代的次数有着直接的影响, 因此如何折中查找表的面积与得到的种子值的 精度则需要设计者进行仔细权衡。 0084 2) 采用高位部分 X1 进行查。

35、表, 得到 C0、 C1 和 C2 的位宽, 同时对中间部分 X2进行 基数为 4 的 Booth 编码, 以及求中间部分 X2的平方值和对所述该平方值进行 Booth 编码 ; 0085 在本方法的实施例中选用位宽较小的 X1 进行查表, 具体来讲是采用 5 位 X1 进行 查表, 得到 C0、 C1 和 C2 的位宽分别为 30、 20 和 12 进行多项式的计算, X2 的一次项采用 17bit, 二次项用 12bit, 最终经过多项式的计算得到一个精度为 19bit 的种子值 Rf, 由于 得到的种子值精度较低, 因此在第二阶段采用两次 Goldschmidt 迭代来获得满足需要的精 。

36、度。 0086 在进行二次多项式的计算过程中, 本发明使用了一种优化算法来计算 X2 的平方 项, 在性能不降低的情况之下面积开销减小了一半。在得到了 X2 的平方项之后整个多项式 的计算就剩下了两次乘法和两次加法, 在我们的设计中采用了一种融合累加树的方法进行 后续多项式的计算。 0087 3) 将用两个部分积产生模块分别产生C1X2和C2X22的部分积与查表得到的C0, 采用 三级 4 : 2CSA 树得到最终种子值的 CARRY 和 SUM 项 ; 0088 4) 采用一个超前进位加法器 CLA 对最终种子值的 CARRY 和 SUM 项进行相加, 得到 输出结果倒数函数 1/X 的种子。

37、值 Rf。 0089 其中, 第二阶段包括两次 Goldschmidt 迭代共涉及 5 次乘法和 2 次求补运算, 第一 阶段的结果产生之后就开始进行第二阶段的计算, 第二阶段计算的流程如图 3 所示, 具体 采用如下步骤 : 0090 1) 将第一阶段得到的种子值 Rf 分别与 53 位尾数 X 和被除数的尾数部分 Y 相乘得 到 d0 和 z0, 对 d0 求补后得到 x0, 然后将 z0 与 x0 相乘得到 z1 ; 0091 2) 在第二次 Goldschmidt 迭代中, 将 d0 与 x0 相乘得到 d1, d1 求补后得到 x1, 将 得到的 x1 与 z1 相乘得到最终的结果 。

38、z。 说 明 书 CN 103809930 A 9 6/9 页 10 0092 下面对本发明方法的计算过程进行误差分析 : 0093 整个双精度浮点除法器的计算过程分为两个阶段, 误差分析也主要根据计算的两 个阶段进行分析。 0094 1、 Rf 的误差分析 0095 第一阶段的结果会产生一个种子值 Rf, 该种子值的误差来源主要有 : 1) 二次多项 式逼近算法本身的误差 (approx) , 2) 在多项式计算过程中因有限位宽而引入的算术误差。 0096 总误差 0097 由于有限位宽的系数是通过 Maple 程序获得的, 因此实际的多项式逼近误差应 为 : 0098 0099 因此 : 。

39、0100 0101 分析得知, 当 m1=5 时, Rf 的误差 (Rf2-19) 满足本发明所设的误差精度。 0102 2、 Z 的误差分析 0103 在第二阶段计算过程中, 以第一阶段的结果 Rf 作为输入进行两次 Goldschmidt 迭代, 得到最终结果 z, z 的误差也主要来自两方面 : 1) Goldschmidt 迭代算法本身的误差 (itera) , 2) 在计算过程中因有限位宽表示而带来的算术误差 (arith) 。 0104 第二阶段总误差 z=itera+arith 0105 最终的误差要满足 z2-54, 这样最终的结果才是精确的, 我们不妨记在迭代的过 程中要保留。

40、的小数部分的位宽为 t 位 (输入操作数 X,Y 的取值范围都为 1:2), 最终结果 Z 的取值范围为 (0.5,2)。 0106 迭代误差 : 0107 itera=(Rf)4X3Y 0108 因此 itera2-72。 0109 计算误差 : 0110 0111 其中z是因乘法器输出的有限位宽而引入的误差, 其值为2-t,是计算z1的过 程中所产生的总的误差, 包括传递误差和累积误差。同理,是在计算 x1 的过程所产生的 总的误差, 包括传递误差和累积误差, x1, z1 的最大值均不超过 2, 因此 0112 计算误差 0113 与的计算过程跟 arith类似 0114 0115 而 。

41、0116 说 明 书 CN 103809930 A 10 7/9 页 11 0117 其中, 0118 0119 x0,z0,d0, 最大值均不超过 2, 因此, 计算误差 0120 0121 因此总的误差 0122 0123 即, 0124 z2-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+22-t) 0125 即, 0126 z2-72+2-t+4+2-t+2+2-t+2-2t+4+2-2t+3+2-2t+2-3t+3+2-3t+1+2-4t2-t+5 0127 由此可知, t 最。

42、小为 59 时, 可满足 z2-54, 因此选取 t=59, 再加上 1 位整数位, 因 此乘法器的位宽最小为 60 位时可满足精度要求。 0128 本发明的采用双精度浮点数除法器的设计方法得到的除法器, 包括有用于计算倒 数函数 1/X 的种子值 Rf 的第一部分和与所述的第一部分的输出相连的用于计算最终精确 结果的第二部分, 其中, 0129 如图 1 所示, 第一部分包括 : 0130 寄存器 1, 分别存放 53 位尾数 X 的高位部分 X1、 中间部分 X2和低位部分 X3; 0131 第一查找表 2、 第二查找表 3 和第三查找表 4, 分别连接所述寄存器 1 的高位部分 X1的输。

43、出端 ; 对应计算倒数函数1/X的公式X-1C0+C1X2+C2X22, 所述的第一查找表2内存储 系数 C0, 第二查找表 3 内存储系数 C1, 第三查找表 4 内存储系数 C2。 0132 第一 Booth 编码器 5, 输入端连接所述寄存器 1 的中间部分 X2, 用于对中间部分 X2 进行重新编码 ; 0133 专用平方单元6, 输入端连接所述寄存器1的中间部分X2, 用于求取中间部分X2的 平方值 ; 0134 第二 Booth 编码器 7, 输入端连接所述专用平方单元 6 输出端, 用于对求出的平方 值进行重新编码 ; 0135 第一部分积产行单元 8, 分别连接第二查找表 3 。

44、和第一 Booth 编码器 5 的输出端, 用于产生 C1X2的 9 个部分积 ; 0136 第二部分积产生单元 9, 分别连接第三查找表 4 和第二 Booth 编码器 7 的输出端, 说 明 书 CN 103809930 A 11 8/9 页 12 用于产生 C2X22的 6 个部分积 ; 如图 1 所示, 两个乘数项 C1X2和 C2X22, 分别对乘数项中的 X2 和 X2 的平方项进行基数为 4 的 Booth 编码, 从而两个部分积产生模块中分别得到 9 个部分 积和 6 个部分积, 连同 C0, 共计 16 个部分积, 之后对这 16 个部分积进行累加。由图可知, 我们采用 3 。

45、级 4:2CSA 累加树得到最终的 CARRY 和 SUM 项。最后通过一个超前进位加法器 CLA 对这两项进行相加就得到了第一阶段的输出结果 Rf, 得到的种子值的精度为 19bit。 0137 第一级进位保存加法器单元, 分别连接第一查找表 2、 第一部分积产行单元 8 和第 二部分积产生单元 9, 用于产生第一级的 CARRY 和 SUM 项 ; 所述的第一级进位保存加法器单 元包括有 : 0138 第一进位保存加法器 10, 分别连接第一查找表 2 的输出端和第一部分积产行单元 8 的 9 个部分积中的 3 个部分积的输出端, 用于产生第一级的第一个 CARRY 和 SUM 项 ; 0。

46、139 第二进位保存加法器 11, 连接第一部分积产行单元 8 的 9 个部分积中的另 4 个部 分积的输出端, 用于产生第一级的第二个 CARRY 和 SUM 项 ; 0140 第三进位保存加法器 12, 分别连接第一部分积产行单元 8 的 9 个部分积中的最后 2个部分积的输出端和第二部分积产生单元9的6个部分积中的2个部分积的输出端, 用于 产生第一级的第三个 CARRY 和 SUM 项 ; 0141 第四进位保存加法器 13, 连接第二部分积产生单元 9 的 6 个部分积中的其余 4 个 部分积的输出端, 用于产生第一级的第三个 CARRY 和 SUM 项。 0142 第二级进位保存加。

47、法器单元, 连接第一级进位保存加法器单元的输出端, 用于产 生第二级的 CARRY 和 SUM 项 ; 所述的第二级进位保存加法器单元包括有 : 0143 第六进位保存加法器 14, 分别连接第一级进位保存加法器单元中的第一进位保存 加法器 10 和第二进位保存加法器 11 的输出端, 用于产生第二级的第一个 CARRY 和 SUM 项 ; 0144 第七进位保存加法器 15, 分别连接第一级进位保存加法器单元中的第三进位保存 加法器 12 和第四进位保存加法器 13 的输出端, 用于产生第二级的第二个 CARRY 和 SUM 项。 0145 第三级进位保存加法器 16, 连接第二级进位保存加。

48、法器单元用于产生第三级的 CARRY 和 SUM 项 ; 0146 超前进位加法器 17, 连接第三级进位保存加法器单元的输出端, 用于计算得到最 终的种子值 Rf ; 0147 如图 2 所示第二部分包括 : 0148 第一多路选择器 18, 分别连接外部控制信号 sel、 补码器 24 的输出和第二部分输 出的最终的种子值 Rf, 用于根据外部控制信号 sel, 选择补码器 24 的输出信号和第二部分 输出的最终的种子值 Rf 两个信号中的一个 ; 0149 第二多路选择器 19, 分别连接外部控制信号 sel、 补码器 24 的输出和第二部分输 出的最终的种子值 Rf, 用于根据外部控制信号 sel, 选择补码器 24 的输出信号和第二部分 输出的最终的种子值 Rf 两个信号中的一个 ; 0150 第三多路选择器20, 分别连接外部控制信号sel、 53位尾数X的输出信号以及第一 乘法器 22 的输出端, 用于根据外部控制信号 sel, 选择 53 位尾数 X 的输出。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1