CN104636114A - 一种浮点数乘法的舍入方法及装置 - Google Patents

一种浮点数乘法的舍入方法及装置 Download PDF

Info

Publication number
CN104636114A
CN104636114A CN201510075611.7A CN201510075611A CN104636114A CN 104636114 A CN104636114 A CN 104636114A CN 201510075611 A CN201510075611 A CN 201510075611A CN 104636114 A CN104636114 A CN 104636114A
Authority
CN
China
Prior art keywords
rounding
sum0
result
carry
sum1
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
CN201510075611.7A
Other languages
English (en)
Other versions
CN104636114B (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.)
Shanghai Silang Technology Co ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
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 Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201510075611.7A priority Critical patent/CN104636114B/zh
Publication of CN104636114A publication Critical patent/CN104636114A/zh
Application granted granted Critical
Publication of CN104636114B publication Critical patent/CN104636114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种浮点数乘法的舍入方法及装置,所述方法在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:舍入是向零舍入时,特殊数为0;舍入是就近取偶舍入时,特殊数为2N-2;舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;其中,N表示浮点数尾数的长度。本发明在部分积压缩阶段提前引入一个特殊数据,达到简化后续尾数舍入所需工作的效果,提高浮点乘法处理性能。

Description

一种浮点数乘法的舍入方法及装置
技术领域
本发明属于集成电路设计中的浮点乘法运算技术领域,确切地说,属于IEEE 754标准的浮点乘法的尾数舍入技术领域。
背景技术
随着数字信号处理技术的不断发展,人们对数据的精确性和处理实时性要求日益提高。浮点数据运算已经被数字信号处理(DSP)领域广泛采用。
浮点乘法器是DSP处理器和高性能计算系统的重要组成部分,有研究表明,在涉及浮点的操作中,有31%左右是乘法操作。在以往的设计中,浮点乘法是整个系统的关键路径所在,主要原因为浮点乘法器进行尾数处理时间较长。
IEEE 754定义的浮点表示由符号位,带偏移指数部分和尾数部分组成。浮点乘法可以分为三部分:符号位异或,指数相加与尾数相乘。这三部分运算可以并行计算,并在相应阶段做出调整。因为在浮点表示中,尾数位宽固定,尾数相乘后的结果须舍弃一部分,对此,IEEE 754标准定义了四种舍入模式:就近舍入,向零舍入,向正无穷舍入和向负无穷舍入。在尾数的处理中,何处是临界的舍入点与尾数相乘的结果有关,这也是浮点乘法中最易出错和最耗时的部分。
所以,本发明提出一种适用于IEEE 754标准的单双精度各种舍入模式的快速浮点乘法舍入装置,以提高浮点乘法器的性能。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种快速浮点乘法舍入装置,通过归纳IEEE 754的舍入模式和在尾数处理中部分积压缩时提前引入一个与舍入相关的特殊值,简化后续尾数舍入。
(二)技术方案
本发明提出了一种浮点数乘法的舍入方法,其特征在于,在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
本发明还提出了一种浮点数乘法的舍入装置,其特征在于,包括:
部分积压缩模块,其在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
本发明完全适用于IEEE 754单、双精度及扩展精度四种舍入模式的乘法舍入,由于在部分积压缩阶段提前引入一个与舍入相关的特殊值,简化了后续尾数计算阶段的逻辑。该特殊值产生的负面影响,如面积、延迟等相比于其带来的性能提高可以忽略不计。实践证明,采用该装置的浮点乘法器能显著提高性能。
附图说明
图1是现有技术中12×5行列乘法计算过程示意图;;
图2是现有技术中16行部分积利用华莱士树结构压缩为2个部分积过程的示意图;
图3是现有技术中全加器的结构示意图;
图4是现有技术中半加器结构示意图;
图5是本发明中引入特殊数据后17行部分积利用华莱士树结构压缩为2个部分积过程的示意图;
图6是本发明中浮点数乘法的舍入装置结构示意图;
图7是本发明具体实施例中浮点数乘法的舍入装置结构示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下以IEEE 754单精度浮点乘法器舍入作为具体实施案例,对本发明进一步详细说明。
本发明提出了一种针对浮点乘法有效的舍入方法,其包括:
在进行部分积压缩时,引入特殊数据作为部分积参与部分积压缩;所述特殊数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
本发明提出的上述方法能够实现IEEE 754标准定义的四种舍入:就近舍入,向零舍入,向正无穷舍入和向负无穷舍入,其中的向正无穷舍入和向负无穷舍入在舍入时与结果的正负有关,可以转换为向零舍入和向无穷舍入进行处理。
输入数据可以是规格化数也可以是非规格化数,当输入数据是非规格化数时,可以通过扩展指数表示范围,转换成规格化数处理。
用N表示浮点数尾数总长度,本发明在传统的部分积压缩基础上,引入一个特殊数据同时参与压缩,获取两个部分积Sum和Carry,这个特殊数的产生、压缩引起的面积、延迟等代价非常小,与其带来的性能提高相比可以忽略。
两个N位的尾数相乘,其中N为自然数,结果至多是2N位,所以中间结果只保留所需的2N位,超出范围的直接舍去,对最终结果没有影响。并且由于处理的是规格化数,结果位数从0开始编号,结果的第2N-1位和第2N-2位至少有一位是1。
下面就现有技术中的浮点数乘法运算与本发明的浮点数乘法运算进行比较说明。
现有技术中,如图1所示,以简单乘法12×5为例,介绍部分积及部分积压缩的过程,其进行行列乘法的过程中,先生成4项每项4位的部分积,然后对这些部分积适当移位对齐后求和,可并行进行压缩得到两个结果Sum和Carry,然后对Sum和Carry进行求和,得到最终结果。数据压缩过程为:第一行部分积1100、第二行部分积0000、第三行部分积1100对齐后进行3∶2压缩,得到部分积000100和11100,与第四行部分积进行对齐后压缩,得到Sum和Carry:0000100和011100,将此两个数进行对齐后相加,得到最终的计算结果00111100,以上部分积压缩过程中所述位宽不等长,在实际运算中会根据具体算法对位宽进行处理,比如补0操作。
以上所述部分积压缩过程可以通过多种形式完成,比如华莱士树压缩,以16行部分积压缩为2个部分积为例,示意如图2所示。
华莱士树压缩,其并行地对部分积求和而非顺序地求和,为了将16个部分积输入减少到2个部分积输出,华莱士树需要即6级3∶2压缩结构。
其中,对于三输入两输出的数据采用3∶2压缩器实现,其结构和功能如图3和表1所示,功能就是一个全加器。
表1
a b c 进位
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
其中,对于两输入两输出的数据采用2∶2压缩器实现,其结构和功能如图4和表2所示,功能就是一个半加器。
表2
a b 进位
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
本发明引入特殊数据参与压缩,假设之前的部分积行为m行,引入该特殊数据后,被压缩的部分积行为m+1行,即第m+1行为所引入的特殊数据;举例说明,如之前部分积行为16行,则引入特殊数据后,部分积行为17行,部分积压缩过程可采用华莱士树进行,压缩过程如图5所示。引入特殊数据后部分积压缩过程,除第二级压缩树由3行变为4行同时并行进行压缩外,其余没有变化,总压缩级数还为6级,压缩时间没有增加。
下面,就本发明提出的上述方法,在引入特殊数据作为部分积参与部分积压缩的整个浮点数乘法过程进行说明。如图6所示,部分积压缩后,得到两个2N位的数Sum和Carry,即图6中的601和602。601是这两个数的高部分,从第2N-1位到第N-1位共N+1位,602是这两个数低部分,从第N-2位到第0位,共N-1位。在部分积压缩中,特殊数据已经包含,部分积压缩结果601和602是已经引入特殊数据后的压缩结果。
601进入一个N+1位宽的半加器行603,603半加器行对601提供的数据,采用N+1个如图4所示的半加器进行运算,得到两个N位宽的结果和一个1位宽的结果,这两个N位宽的结果位于第2N-1位到第N位,这个1位宽的结果位于第N-1位,这个位于第N-1位的一位宽的数据进入606,两个N位宽的数进入N位复合加法器605。
604进行602提供的两个N-1位数进行加法运算,得到第N-1位的进位,第N-2位的和,以及加法结果第N-3位至第0位,并将第N-3位至第0位进行或操作。将第N-1位的进位信号表示为Carry[N-1],第N-2位的和表示为Sum[N-2]即为Round位,加法结果第N-3位至第0位的或的结果即为Sticky。
Sticky的计算也可用简化的方式,以降低延迟和面积,定义604输入的两个数为Sum,Carry,位宽为N-1位,Sumi和Carryi为Sum和Carry各位上的数值,设变量pi,hi,zi,i为0到N-3的正整数:
p i = Sum i ⊕ Carry i (异或)
hi=Sumi|Carryi(或)
z i = p i ⊕ h i - 1
Sticky=z0|z1|...|zN-3
为了加快运算速度,进位Carry[N-1]和Round位Sum[N-2]可采用超前进位加法器或者其他快速加法器获得。
超前进位加法器利用两个输入操作数和最低有效位的进位输入,并行产生其它各位的进位输入,基本思想如下:
一位全加器的逻辑表达式为ci+1=xi·yi+(xi+yi)ci公式(1)定义进位产生因子gi=xiyi,进位传播因子pi=xi+yi,则ci=gi-1+pi-1ci-1,迭代可得:
ci=gi-1+pi-1gi-2+pi-1pi-2gi-3+…+pi-1pi-2…p1g0+pi-1pi-2…p1p0c0  公式(2)
利用公式(2)计算进位的加法器就是超前进位加法器。
605复合加法器对输入的两个N位宽操作数进行求和。得到结果Sum0[2N-1:N]和Sum1[2N-1:N],Sum0是两个输入数据之和,Sum1=Sum0+1。
606对尾数的结果进行最后的选择和调整,并产生指数是否增加1的调整信号,如果尾数运算结果超出其能表示的最大范围,则除了对尾数输出进行调整,并且指数增加1信号有效,指数在被乘数和乘数指数相加的基础上再进行加1运算,606具体实现如下所示。
定义Res0[N-1:1]和Res1[N-1:1],其逻辑如下:
如果Sum0[2N-1]=1,则Res0[N-1:1]=Sum0[2N-1:N+1];
如果Sum0[2N-1]=0,则Res0[N-1:1]=Sum0[2N-2:N]。
如果Sum1[2N-1]=1,则Res1[N-1:1]=Sum1[2N-1:N+1];
如果Sum1[2N-1]=0,则Res1[N-1:1]=Sum1[2N-2:N]。
现假定最后的尾数结果为M[N-1:0],该位宽包含一位隐含位。
定义指数增加1信号overflow,overflow=1,则指数需要调整加1。
它们的逻辑如下:
当且仅当以下四个条件满足其一时:M[N-1:1]选择Res1,overflow=Sum1[2N-1];否则M[N-1:1]选择Res0,overflow=Sum0[2N-1]。
(1)如果向零舍入或者Sum0[2N-1]=0时:Sum[N-1]&Carry[N-1]为真
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与(1)一致
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且Sum0[2N-1]=1时:Sum[N-1]|Carry[N-1]为真
(4)如果就近取偶舍入且Sum0[2N-1]=1时:Sum[N-2]+Sum[N-1]+Carry[N-1]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑~|(~Sum[N-2])|Sticky|~(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[N];
在逻辑~|(~Sum[N-2])|Sticky|~(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[N];
在逻辑~|(~Sum[N-2])|Sticky|~(就近取偶舍入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[N-1];
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[N-1];
在逻辑Sum[N-2]|Sticky+~(就近取偶舍入)为假时,M[0]=0;
至此,浮点乘法尾数计算部分完成。
下面就以两个24位的数相乘为例说明。
IEEE 754单精度的表示方法如下:设A[31:0]为单精度浮点数,A[31]为符号位,A[30:23]为指数位,A[22:0]为不含隐含位的尾数位。在IEEE 754标准中,权重从左至右依次递减,最高位隐含位的权重是0,这里为了讨论的方便,将权重看成从右至左依次递增,最低位的权重是0。
为了使描述方便,现假定输入的操作数是规格化数,输入是非规格化数时,可以通过扩展指数表示范围,转换成类似规格化数。
尾数乘法采用部分积压缩再求和的方法,方式是基四Booth编码和Wallace树压缩,基四Booth编码可以将部分积数目减少一半左右,Wallace树可以并行的压缩这些部分积,同时将特殊值与部分积一起进行压缩。
这个特殊数的取值方式如下:
舍入是向零舍入时,特殊数为0;
舍入是就近取偶舍入时,特殊数为222
舍入是向正无穷舍入时,如果结果的符号位是正,取值为223-1,否则是0;
舍入是向正无穷舍入时,如果结果的符号位是正,取值为223-1,否则是0。
两个24位的数相乘,结果至多是48位,所以中间结果只需要保存48位即可。并且由于处理的是规格化数,结果的第47位和第46位至少有一位是1。
如图7所示,部分积压缩后,得到两个48位的数Sum和Carry,即图7中的701和702。701是这两个数的高部分,从第47位到第23位共25位,702是这两个数低部分,从第22位到第0位,共23位。在部分积压缩中,特殊数据已经包含,部分积压缩结果701和702是已经引入特殊数据后的压缩结果。
701进入一个25位宽的半加器行703,703半加器行对701提供的数据,采用25个如图4所示的半加器进行运算,得到两个24位宽的结果和一个1位宽的结果,这两个24位宽的结果位于第47位到第24位,这个1位宽的结果位于第23位,这个位于第23位的一位宽的数据进入706,两个24位宽的数进入复合加法器705。
704进行702提供的两个23位数进行加法运算,得到第23位的进位,第22位的和,以及加法结果第21位至第0位,并将第21位至第0位进行或操作。将第23位的进位信号表示为C[23],第22位的和表示为S[22]即为Round位,加法结果第21位至第0位的或的结果即为Sticky。
Sticky的计算也可用简化的方式,以降低延迟和面积,定义704输入的两个数为Sum,Carry,位宽为23位,Sumi和Carryi为Sum和Carry各位上的数值,设变量pi,hi,zi,i为0到21的正整数:
p i = Sum i ⊕ Carry i (异或)
hi=Sumi|Carryi(或)
z i = p i ⊕ h i - 1
Sticky=z0|z1|...|z21
进位Carry[23]和Round位Sum[22]也可采用超前进位加法器的方式获得。
705复合加法器对输入的两个24位宽操作数进行求和。得到结果Sum0[47:24]和Sum1[47:24],Sum0是两个输入之和,Sum1=Sum0+1。
706对尾数的结果进行最后的选择和调整,并产生指数增加1的调整信号,如果尾数运算结果超出其能表示的最大范围,则除了对尾数输出进行调整,并且指数增加1信号有效,指数在被乘数和乘数指数相加的基础上再进行加1运算,706具体实现如下所示。
定义Res0[23:1]和Res1[23:1],其逻辑如下:
如果Sum0[47]=1,则Res0[23:1]=Sum0[47:25];
如果Sum0[47]=0,则Res0[23:1]=Sum0[46:24]。
如果Sum1[47]=1,则Res1[23:1]=Sum1[47:25];
如果Sum1[47]=0,则Res1[23:1]=Sum1[46:24]。
现假定最后的尾数结果为M[23:0],该位宽包含隐含位。
定义指数增加1信号overflow,overflow=1,则指数需要调整加1。
它们的逻辑如下:
当且仅当以下四个条件满足其一时:M[23:1]选择Res1,overflow=Sum1[47];否则M[23:1]选择Res0,overflow=Sum0[47]。
(1)如果向零舍入或者Sum0[47]=0时:S[23]&C[23]为真
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与第一条一致
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且Sum0[47]=1时:S[23]|C[23]为真
(4)如果就近取偶舍入且Sum0[47]=1时:S[22]+S[23]+C[23]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑~|(~Sum[22])|Sticky|~(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[24];
在逻辑~|(~Sum[22])|Sticky|~(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[24];
在逻辑~|(~Sum[22])|Sticky|~(就近取偶舍入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[22]|Sticky|~(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[23];
在逻辑Sum[22]|Sticky|~(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[23];
在逻辑Sum[22]|Sticky|~(就近取偶舍入)为假时,M[0]=0;
至此,尾数部分计算完成。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种浮点数乘法的舍入方法,其特征在于,在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
2.如权利要求1所述的方法,其特征在于:所述预定数据作为部分积的一行与其他部分积同时进行压缩。
3.如权利要求1或2所述的方法,其特征在于:在引入预定数据参与部分积压缩得到的部分积压缩结果为两个2N位的和与进位,该方法还包括:
将所述两个2N位的和与进位的高N+1位输入至半加器进行运算,得到两个N位宽的第一结果和一个1位宽的第二结果;
将所述两个2N位的和与进位的低N-1位输入至加法器进行运算,得到第N-1位的进位Carry[N-1]、第N-2位的和Round以及第N-3位至第0位的加法结果,并将所述加法结果进行或操作得到或结果Sticky;
将所述两个N位宽的第一结果输入至复合加法器进行求和,得到两个N位宽的第一结果之和Sum0以及Sum1,其中Sum1=Sum0+1;
根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round以及Sticky对乘法结果的尾数进行选择和调整,并产生指数是否增加1的信号。
4.如权利要求3所述的方法,其特征在于:根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round以及Sticky对乘法结果的尾数进行选择和调整,并产生指数是否增加1的信号具体如下:
定义Res0[N-1:1]和Res1[N-1:1],其逻辑如下:
如果Sum0[2N-1]=1,则Res0[N-1:1]=Sum0[2N-1:N+1];
如果Sum0[2N-1]=0,则Res0[N-1:1]=Sum0[2N-2:N]。
如果Sum1[2N-1]=1,则Res1[N-1:1]=Sum1[2N-1:N+1];
如果Sum1[2N-1]=0,则Res1[N-1:1]=Sum1[2N-2:N]。
假设乘法结果的尾数为M[N-1:0],overflow为指数是否增加1的信号,如果overflow=1,则表示指数需要调整加1;
当且仅当以下四个条件满足其一时:M[N-1:1]选择Res1,overflow=Sum1[2N-1];否则M[N-1:1]选择Res0,overflow=Sum0[2N-1]。
(1)如果向零舍入或者Sum0[2N-1]=0时:Sum[N-1]&Carry[N-1]为真;
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与(1)一致;
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且Sum0[2N-1]=1时:Sum[N-1]|Carry[N-1]为真;
(4)如果就近取偶舍入且Sum0[2N-1]=1时:Sum[N-2]+Sum[N-1]+Carry[N-1]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[N];
在逻辑(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[N];
在逻辑(就近取偶舍入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[N-1];
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[N-1];
在逻辑Sum[N-2]|Sticky+~(就近取偶舍入)为假时,M[0]=0。
5.如权利要求1或2所述的方法,其特征在于:进行乘法运算的两个浮点数为非规格化数,则通过扩展指数表示范围,将其转换成规格化数。
6.一种浮点数乘法的舍入装置,其特征在于,包括:
部分积压缩模块,其在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
7.如权利要求6所述的方法,其特征在于:所述预定数据作为部分积的一行与其他部分积同时进行压缩。
8.如权利要求6或7所述的方法,其特征在于,在引入预定数据参与部分积压缩得到的部分积压缩结果为两个2N位的和与进位,该装置还包括:
半加器模块,用于将所述两个2N位的和与进位的高N+1位进行半加运算,得到两个N位宽的第一结果和一个1位宽的第二结果;
加法器模块,用于将所述两个2N位的和与进位的低N-1位进行加法运算,得到第N-1位的进位Carry[N-1]、第N-2位的和Round以及第N-3位至第0位的加法结果,并将所述加法结果进行或操作得到或结果Sticky;
复合加法器模块,用于将所述两个N位宽的第一结果进行求和,得到两个N位宽的第一结果之和Sum0以及Sum1,其中Sum1=Sum0+1;
调整模块,用于根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round以及Sticky对乘法结果的尾数进行选择和调整,并产生指数是否增加1的信号。
9.如权利要求8所述的方法,其特征在于:所述调整模块具体如下根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round以及Sticky对乘法结果的尾数进行选择和调整,并产生指数是否增加1的信号:
定义Res0[N-1:1]和Res1[N-1:1],其逻辑如下:
如果Sum0[2N-1]=1,则Res0[N-1:1]=Sum0[2N-1:N+1];
如果Sum0[2N-1]=0,则Res0[N-1:1]=Sum0[2N-2:N]。
如果Sum1[2N-1]=1,则Res1[N-1:1]=Sum1[2N-1:N+1];
如果Sum1[2N-1]=0,则Res1[N-1:1]=Sum1[2N-2:N]。
假设乘法结果的尾数为M[N-1:0],overflow为指数是否增加1的信号,如果overflow=1,则表示指数需要调整加1;
当且仅当以下四个条件满足其一时:M[N-1:1]选择Res1,overflow=Sum1[2N-1];否则M[N-1:1]选择Res0,overflow=Sum0[2N-1]。
(1)如果向零舍入或者Sum0[2N-1]=0时:Sum[N-1]&Carry[N-1]为真;
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与(1)一致;
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且Sum0[2N-1]=1时:Sum[N-1]|Carry[N-1]为真;
(4)如果就近取偶舍入且Sum0[2N-1]=1时:Sum[N-2]+Sum[N-1]+Carry[N-1]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[N];
在逻辑(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[N];
在逻辑(就近取偶舍入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件满足其一时,M[0]=Sum1[N-1];
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件都不满足时,M[0]=Sum0[N-1];
在逻辑Sum[N-2]|Sticky+~(就近取偶舍入)为假时,M[0]=0。
CN201510075611.7A 2015-02-12 2015-02-12 一种浮点数乘法的舍入方法及装置 Active CN104636114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510075611.7A CN104636114B (zh) 2015-02-12 2015-02-12 一种浮点数乘法的舍入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510075611.7A CN104636114B (zh) 2015-02-12 2015-02-12 一种浮点数乘法的舍入方法及装置

Publications (2)

Publication Number Publication Date
CN104636114A true CN104636114A (zh) 2015-05-20
CN104636114B CN104636114B (zh) 2018-05-15

Family

ID=53214921

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510075611.7A Active CN104636114B (zh) 2015-02-12 2015-02-12 一种浮点数乘法的舍入方法及装置

Country Status (1)

Country Link
CN (1) CN104636114B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183425A (zh) * 2015-08-21 2015-12-23 电子科技大学 一种具有高精度低复杂度特性的固定位宽乘法器
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN111310909A (zh) * 2020-02-24 2020-06-19 南京大学 一种浮点数转换电路

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102566967A (zh) * 2011-12-15 2012-07-11 中国科学院自动化研究所 一种采用多级流水线结构的高速浮点运算器
CN103294446A (zh) * 2013-05-14 2013-09-11 中国科学院自动化研究所 一种定点乘累加器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102566967A (zh) * 2011-12-15 2012-07-11 中国科学院自动化研究所 一种采用多级流水线结构的高速浮点运算器
CN103294446A (zh) * 2013-05-14 2013-09-11 中国科学院自动化研究所 一种定点乘累加器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
G EVEN ET AL.: "A Comparision of Three Rounding Algorithmsfor IEEE Floating-Point Multiplication", 《IEEE TRANS COMPUTERS》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183425A (zh) * 2015-08-21 2015-12-23 电子科技大学 一种具有高精度低复杂度特性的固定位宽乘法器
CN105183425B (zh) * 2015-08-21 2017-09-01 电子科技大学 一种具有高精度低复杂度特性的固定位宽乘法器
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN111310909A (zh) * 2020-02-24 2020-06-19 南京大学 一种浮点数转换电路
CN111310909B (zh) * 2020-02-24 2024-02-13 南京大学 一种浮点数转换电路

Also Published As

Publication number Publication date
CN104636114B (zh) 2018-05-15

Similar Documents

Publication Publication Date Title
CN103176767B (zh) 一种低功耗高吞吐的浮点数乘累加单元的实现方法
CN103809930B (zh) 一种双精度浮点数除法器的设计方法及除法器
CN102629189A (zh) 基于fpga的流水浮点乘累加方法
CN104636114A (zh) 一种浮点数乘法的舍入方法及装置
CN108196822A (zh) 一种双精度浮点开方运算的方法及系统
Mehta et al. Implementation of single precision floating point multiplier using karatsuba algorithm
CN112540743A (zh) 面向可重构处理器的有无符号乘累加器及方法
CN116661733A (zh) 一种支持多种精度的乘法器及微处理器
CN110187866B (zh) 一种基于双曲cordic的对数乘法计算系统及方法
CN103809931A (zh) 一种专用高速浮点指数运算器的设计
CN110825346B (zh) 一种低逻辑复杂度的无符号近似乘法器
CN110837624B (zh) 一种针对sigmoid函数的近似计算装置
Ahish et al. Design of high performance Multiply-Accumulate Computation unit
Daud et al. Hybrid modified booth encoded algorithm-carry save adder fast multiplier
Ping-hua et al. High-speed parallel 32× 32-b multiplier using a radix-16 Booth encoder
CN104615404A (zh) 一种基于查表操作的高速浮点除法部件装置
Kumar et al. Complex multiplier: implementation using efficient algorithms for signal processing application
Bansal et al. High performance pipelined signed 64x64-bit multiplier using radix-32 modified Booth algorithm and Wallace structure
da Costa et al. An efficient exponential unit designed in vlsi cmos with custom operators
Anuhya et al. ASIC implementation of efficient floating point multiplier
Sano et al. Design of a 32-bit accuracy-controllable approximate multiplier for FPGAs
Ravi et al. Analysis and study of different multipliers to design floating point MAC units for digital signal processing applications
CN116126283B (zh) 一种fpga卷积加速器的资源占用率优化方法
Kuo et al. Configurable Multi-Precision Floating-Point Multiplier Architecture Design for Computation in Deep Learning
Nagalexmi et al. Design and implementation floating point multiplier design using combined booth and dadda algorithms

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20171206

Address after: 102412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Applicant after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Applicant before: Institute of Automation, Chinese Academy of Sciences

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Silang Technology Co.,Ltd.

Address before: 102412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.