CN101174200A - 一种浮点乘加融合单元的五级流水线结构 - Google Patents

一种浮点乘加融合单元的五级流水线结构 Download PDF

Info

Publication number
CN101174200A
CN101174200A CNA2007100994089A CN200710099408A CN101174200A CN 101174200 A CN101174200 A CN 101174200A CN A2007100994089 A CNA2007100994089 A CN A2007100994089A CN 200710099408 A CN200710099408 A CN 200710099408A CN 101174200 A CN101174200 A CN 101174200A
Authority
CN
China
Prior art keywords
carry
result
output
sum
sub
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
CNA2007100994089A
Other languages
English (en)
Other versions
CN101174200B (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.)
Tsinghua University
Original Assignee
Tsinghua 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 Tsinghua University filed Critical Tsinghua University
Priority to CN2007100994089A priority Critical patent/CN101174200B/zh
Publication of CN101174200A publication Critical patent/CN101174200A/zh
Application granted granted Critical
Publication of CN101174200B publication Critical patent/CN101174200B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种单精度浮点乘加单元的全流水线设计,实现了形式为A+B×C的乘加运算,分五级流水线实现:在第一级流水线中,计算指数差,并完成乘法的一部分;在第二级流水线中,根据指数差将A与B×C对齐,有效减时取反,完成剩下的乘法,同时将指数划分成六种状态,不同状态下规格化移位量的计算方法将不同;在第三级流水线中,预测前导零数目,同时同步预测最终结果的符号,最后进行第一步规格化移位;在第四级流水线中,首先完成第二步规格化移位,然后进行加法和舍入的一部分;最后一级流水线中,完成加法和舍入,修正指数项,第三步规格化移位在舍入的间隔里完成。本发明的优点在于:在硬件开销较小的情况下实现了高性能、高精度。

Description

一种浮点乘加融合单元的五级流水线结构
技术领域
本发明涉及浮点运算单元设计,是一种用于实现高性能浮点运算的高速浮点乘加融合单元。
背景技术
文献数据表明,几乎50%的浮点乘法指令后面紧跟的指令为浮点加法或减法。因此,浮点乘加融合操作A+B×C已经成为科学运算和多媒体应用中的一种基本操作。由于浮点乘加融合操作在应用程序中如此频繁地出现,用浮点乘加融合单元(简化为MAF单元)来实现该操作已经成为现代高性能商业处理器的一个很好的选择。这种实现方式主要有以下两个优点:(1)仅需要一次舍入,不是两次;(2)通过共享一些组成模块,可降低电路延迟和硬件开销。
乘加(MAF)指令需要3个操作数。例如,执行A+(B×C)操作,当把乘加指令中操作数A置为0时执行的是乘法指令,把操作数B或C置为1时,执行的是加法指令。在已实现的多数处理器中,浮点乘加运算一般通过以下步骤来实现(相关内容请见参考文献1:Floating-Point Multiply-Add-Fused with Reduced Latency,实现过程的框图见图1):
1.首先对被乘数C做波茨编码,然后用进位保存压缩加法器(CSA)组成的压缩树实现B×C,得到两个部分积。在进行乘法的同时,操作数A进行取反和对齐移位操作。操作数A和B×C的符号可能相同,也可能相反。如果A和B×C的符号相反,将A和B×C做有效减法,需要得到A的补码进行相加,A需要取反。否则如果A和B×C的符号相同做有效加法,A不需要取反。下面不管是否需要进行取反操作,将通过取反器之后的A记为Ainv
在IEEE-754标准中,单精度操作数的尾数是24比特,再加上2个额外的舍入位,Ainv比B×C的结果的最高位最多左移26位,或者比B×C结果的最高位最多右移48比特,即移位范围在[-26,48]之间。在浮点乘加的设计中为了使移位简单化,规一化A的移位方向为向右移位。所以Ainv初始是在B×C左移26比特的初始位置,Ainv在对齐中右移位的位数是27-(exp(A)-(exp(B)+exp(C)-127),其中,exp(A),exp(B)和exp(C)分别是操作数A,B和C的指数。
2.把对齐移位后的Ainv、和B×C压缩后的部分积用压缩比为3∶2的进位保存加法器(CSA)压缩,得到两个部分积,同时处理A求补时所需要的加1。
3.利用2中压缩后得到的部分积进行前导零预测(LZA,leading zero anticipator)得到加法结果的规格化左移的位数。同时判断最终结果的正负。
4.在前导零预测和符合预测的同时做半加操作,并完成部分的加法运算。进行半加操作是为了保证后面能正确进行舍入。由于符号预测所需要的时间比半加操作多,可在此时间空隙里完成最终加法的一部分。
5.加法结果利用LZA预测的左移的位数进行规格化左移。若3符号预测部件判断最终结果为负,则选择2中压缩后得到的部分积的补数形式经4处理后的结果进行规格化移位。
6.最终加法和舍入操作。
图1所示的现有技术的不足如下:
(1)未处理对前导零预测逻辑可能引入的一位左移进行处理
(2)乘法结果采用两个48位部分积表示,会引起一位溢出错误,
(3)加数移位对齐和规格化移位时需要移入‘0…0’或‘1…1’。加数为负或者最终结果的符号被检测到为负时需要移入‘1…1’,用来在最低位加一求补时传播进位。其选择逻辑在关键路径上,增加了延时。
发明内容
本发明的目的在于设计一种高性能的全流水线的单精度高速浮点乘加融合单元,同时保证较少的硬件开销。
本发明的另一个目的是纠正已有运算单元细节处不完善而造成精度损失之处,提供一个高精度的浮点乘加单元。
为实现上述目的,本发明提供了一种五级流水实现的单精度浮点乘加运算单元,实现形式为A+(B×C)的乘加操作,其吞吐量为每周期一条指令,如图2所示,具体结构如下:
第一级流水线:由指数处理单元1、以4为基的波茨编码器3、3∶2的进位保存加法器(CSA)组成的部分积压缩树4的一部分和符号处理单元2组成;其中,
指数处理单元1根据操作数A的指数,B的指数和C的指数计算其指数差d
d=exp(A)-(exp(B)+exp(C)-127),
其中,exp(A),exp(B)和exp(C)分别是操作数A,B和C的指数,根据IEEE 754标准,单精度浮点数的指数为其第2位到第8位,并计算A与B×C对齐时所需的移位量mv,
mv=74-d,
确定数据通路的临时指数Exp_temp,其计算方法为:
若mv<0,则Exp_temp=exp(A);否则Exp_temp=exp(B)+exp(C)-127+27;这里加27是因为B×C的结果在数据通道中靠右侧摆放,如图3(a)所示;
符号处理单元2根据操作数A的符号,B的符号和C的符号计算临时符号、是否为有效减(sub),根据IEEE 754标准,单精度浮点数的符号位为其最高位,临时符号由B×C的符号位表示。A的符号位与B×C的符号位不同时,sub=1,否则sub=0;
基4的波茨编码器3对C的尾数进行编码,然后将编码的结果与B的尾数相乘得到13个部分积,根据IEEE 754标准,单精度浮点数的尾数为其第9位到第32位,编码后的13个部分积的被送入3∶2的进位保存(CSA)压缩树4中,单个单字节CSA单元和CSA压缩树的构造分别在图4和图5中做了详细的介绍,其中图5的输入x、y、z为3个要被压缩的字节,输出S、C分别为压缩后的和字节和进位字节,图6的输入in1~in13为波茨编码后得到的13个部分积,输出为压缩后得到的和、进位,整个压缩树由11个49比特的CSA构成,其中每个CSA由49个图5中的单元结构构成,将13个部分积压缩为两个,需要5级的CSA树,为平衡各级流水线的延时,这里将前两级CSA树放在第一级流水线中,而后面的三级CSA树留到第二级流水线中执行,最终压缩的结果需要被处理后才能做为乘法结果,具体处理方法为:部分积压缩树每一压缩的结果都保留49位,最后一级压缩后的两个输出的最高位都为1时,将这两个1改为0,否则若两个最高位1个是1,另一个是0,而两个次高位均为1时,将这最高位的1个1和次高位的2个1都改为0,其与情况不需做修改;
第二级流水线:由指数状态划分器5、74比特移位对齐器6、按位取反器7、粘滞位计算器8、3∶2的进位保存加法器(CSA)组成的部分积压缩树4的一部分和一个3∶2 CSA组成;其中,
指数状态划分器5根据1中计算出的d和从2中得到的sub,将指数的状态划分为以下6种情况:
1)d≥27
2)27>d≥3或d=2,sub=0
3)2≥d-48且sub=1
4)d=1或d=0,sub=0
5)-1≥d≥48且sub=0
6)d<-48
前导零预测模块10将根据这里划分的状态进行特殊的操作,介绍10时将会具体的介绍;
74比特的移位对齐器6根据指数处理单元1得到的mv值,对A的尾数进行移,A最初被放置在B×C最高位的左边,如图3(a)所示,为保证d>27时能准确地进行舍入,将两个额外位放在A和B×C最高位之间,d>27时,A不移位,通过置入两个额外位,舍入逻辑不再需要考虑B×C的结果,A右移的位数由d决定,有三种情况:
1.mv≤0,B×C在A最低位的右边。这种情况下,B×C仅影响粘滞位的计算,不需要移动A;2.0<mv<74,A右移mv位。mv>50时,A的一部分将被移到B×C最低位的右边,这些移出位将被收集用来计算粘滞位st1;
3.mv≥74,A将被全部移到B×C最低位的右边,仅影响粘滞位st1的计算;
计算粘滞位的部件8收集A向右移位对齐时移出数据通道的位,用以计算粘滞位,这里产生的粘滞位仅仅是整个乘加单元实现过程中产生的粘滞位的一部分,记为st1,在第四级流水线中还会产生粘滞位,后面介绍第四级流水线的时候将会详细介绍;若sub=0,A被移出数据通道的位全为0时,st1=0,否则st1=1;若sub=1,A被移出数据通道的位全为1时,st1=0,否则st1=1;
按位取反器7,如果A的符号位和B×C的符号位不同,对A的尾数的每比特都做取反操作(也就是按位取反),如果A的符号位和B×C的符号位相同,则不作取反操作,并将操作结果和4的输出结果一起送入3∶2CSA 9中作一次压缩,其输出结果记为sum、carry,它们在数据通道中的存在形式如图3(c)所示;A的符号位和B×C的符号位不同时,还要在A的最低位加1以完成对A的求补,但是移位后,A的最低位可能在24位到74位之间的任一位置,我们希望将1加到一个固定的位置,检查A的最低位在161位左边和右边两种情况,可发现sub=1且st1=0时要在进位字节的最低位加1,如图3(c)所示,这一加1能正确的传递到A的最低位,3∶2CSA压缩后进位字节(carry)的最低位(74位)为空,1可加在这一位上;
第三级流水线:由前导零检测模块10、74比特的半加器11、12和13、符号预测逻辑14、25比特的一次性移位器15和选择器16组成;其中,
前导零检测模块10,根据5和9的输出,以及d和sub的值确定后两次规格化移位(分别由17、25完成)的移位量,下面阐述根据d和sub划分的六种情况,详细讨论各种情况下如何确定前导零个数(结果为负时为前导一):
情况1:d≥27
前导零个数(LZN)可能为0或1,不需要进行移位,1位的左移不确定留到加法和舍入部分处理,17和25的移位量均为0;
情况2:27>d≥3或d=2,且sub=0
25的移位量为0,sub=1时,17中的移位量为mv,其中mv为1中计算出的A相对B×C移位对齐时的移位量;sub=1时,17中的移位量为mv-1,因为此时为有效加法,加法器20中最高位可能产生进位(Cout=1,Cout表示加法器20中最高位的进位),17中的移位量最少为0,最多为25;
情况3:2≥d≥-48且sub=1
此时A和B×C非常接近,减法运算可能损失很多有效位,这种情况下需要特殊的前导零预测逻辑,我们的实现方法如下:
通过检查某一位及其左右相邻的位确定哪一位可能是最高位,设一预测位fi
Figure A20071009940800121
f 0 = T 0 ‾ T 1
f i = T i - 1 ( G i Z ‾ i + 1 + Z i G ‾ i + 1 ) + T ‾ i - 1 ( Z i Z ‾ i + 1 + G i G ‾ i + 1 ) , i > 0
其中sum、carry为9的两个输出,若fi=1,而fj=0(j=0,1…i-1),则最高位为i或i+1,
i≤26时,17中的移位量为i,25中的移位量为0;否则17中的移位量为26,25中的移位量为i-26;
情况4:sub=0,且d=1或0
17和25中的移位量均为0;
情况5:-1≥d≥-48且sub=0
25中的移位量为0;
17中的移位量由BC_sum[0],BC_sum[1],BC_carry[0],BC_carry[1]确定,它们分别是4的两个输出的最高两位,若
BC_sum[0]|BC_carry[0]|(BC_sum[1]&BC_carry[1])=1
则A与B×C相加,Cout=1,Cout为前面提到过的加法器20中最高位的进位,这种情况下17中的移位量为0,否则Cout=0,17中的移位量为1;
情况6:d<-48
B×C远大于A,A仅影响舍入逻辑,在17中只需左移一位,25中的移位量为0;
总结几上各种情况可发现17、25中的最大的移位量仅为26位;
74比特的半加器11、12和13的引入是为了保证在第五级流水线中部件27、28仅产生一位进位,为减少电路的延时,这里同时对9输出结果及其补数表示进行处理,待部件14判断出结果的正负后再用选择器16选择需要的结果,11的输入为sum、carry,输出结果为sum&carry,即对sum和carry作按位与操作,12的输入为sum、carry,输出结果为sum^carry,即对sum和carry作按位或操作,13的输入为sum、carry按位取反,输出结果为sum和carry分别按位取反后作按位与操作;
25比特的一次性移位器15,根据1的输出d和2的输出sub判断是否对11、12、13的输出进行一次25比特的移位:d>2,或者d=2且sub=0时进行移位,否则不进行移位,为得到sum、carry的补数表示,除了按位取反,还需要分别在最低位加1,这里的两个加1采用的技巧为:1个加在13的输出的最低位,同时将数据通道向右拓展一位,然后在12和13的输出的最低位分别置1,这样就完成了另一个加1;
结果可能为负时将需要非常复杂的选择,注意这里提到的负指的是A+B×C的符号与B×C的符号不同,避免这一麻烦同时减小电路时延的方法是提前判断结果的正负,结果为负时选择9输出的补数表示,这一判断由符号预测模块14完成,它在进行前导零预测(10)、半加(11、12、13)以及一次性移位(15)的同时进行,符号预测模块14根据9的输出结果sum和carry预测最终结果的正负,结果仅在有效减(sub=1)时可能为负。有效减时,A的补数始终被使用,因此结果仅在d>0时可能为负,可能有两种情况:
1.d≥2时结果始终为负;
2.d=0或d=1时,要对A和B×C进行全面的比较,具体方法是检测sum加carry时,最高位是否有进位产生,若有,则符号判断的结果为正;
选择器16根据14判断的结果从15的结果中选择,若14判断出结果为正,则选择sum和carry一次性移位后的输出,否则选择sum和carry取补再移位后的输出;
第四级流水线:由26比特的规格化移位器17、最终结果的符号计算部件18、指数计算部件19、22位条件加法器20、进位和粘滞位计算部件21和两个与门22、23组成,其中,
26比特的规格化移位器17根据10中得到的移位量对16的输出结果进行移位,最大移位量为26;
最终结果的符号计算部件18将2中得到的B*C的符号和14得到的符号预测结果进行异或操作,得到A+B*C的符号;
指数计算部件19计算A+B*C的指数,计算方法为1中得到的Exp_temp与三次规格化移位(由15、17、25完成)的移位量之和相加;
22位条件加法器20,将17输出结果的高22比特相加得到sum0,sum0+1得到sum1;
部件21~23是完成舍入的部件的一部分;
IEEE 754标准中规定了4种舍入模式:就近舍入(RN),向正无穷舍入(RP),向负无穷舍入(RM),向零舍入(RZ),从应用的角度来看,这四种舍入模式能减少到三个:RN、RI、RZ,如表1所示;
表1
Figure A20071009940800141
从数学意义上讲,
Figure A20071009940800142
Figure A20071009940800143
Figure A20071009940800144
这里
Figure A20071009940800145
Figure A20071009940800146
分别表示向上取整和向下取整;
21中利用17输出的低49位计算其最高位进位,利用17输出结果的低50位和st1计算粘滞位;有左移的粘滞位的计算方法为:17输出的两个数的低49位相加的结果为零,且st1=0时,粘滞位的计算结果为0;无左移的粘滞位的计算方法为:17输出的两个数的低50位相加的结果为零,且st1=0时,粘滞位的计算结果为0;采用下面的方法可快速确定两个数是否为0:设两个操作数为A=a0...an-1,B=b0...bn-1,记矢量E=e0...en-1,其中 e i = k i + 1 ⊕ p i , pi=ai&bi,ki=ai+bi,那么
A + B = 0 if Z = Π i = 0 n - 1 e i = 1
22和23为两个与门,22的输入为RI和21中得到的无左移时的粘滞位,输出进入加法器28,23的输入为RI和21中得到的有左移时的粘滞位,输出进入加法器27;
第五级流水线:由指数修正部件24、24比特的规格化移位器25、两个4位的加法器27和28、选择器29和最低位修正部件30;其中,
尽管前面已进行规格化移位,但由于10中采用的前导零逻辑有一位的不确定性,以及两个数相加是否有进位的不确定性,将17的输出结果相加最高位可能为0,也就是说还可能需要一位左移;是否需要左移由sum0的最高位,sum1的最高位,以及21中得到的低49位向高位段的进位决定,
其中c_no_left_shift为假设不需左移时4位全加结果(在28中得到)的最高位进位;
若Left_shift=1,则指数修正部件24将19中得到的结果减1得到最终结果的指数,否则不需减1;
第三步规格化移位在25中完成,其移位量在10中已计算出了;
22和23为两个4位的加法器,它们有三个共同的输入:17中两个输出结果的23~26比特,以及RN+RI,一个不同的输入:分别为22和23的输出;
选择器29根据Left_shift的值从27和28的输出中作选择,若Left_shift=1,则选择28的输出作为输出,否则选择27的输出;
29输出结果的最高位为1时,选择器26选择sum1经部件25处理后的输出作为输出,否则选择sum0经25处理后的输出;
最后,RN模式时最低位需要被修正,这由舍入位和粘滞位确定:
LSBcorrected=0 if(~R)&sticky&RN=1
其中R为舍入位,本设计中为29的输出的第3位,sticky为粘滞位,Left_shift=1,其值等于21中计算得的有左移时的粘滞位的值,否则为无左移时的粘滞位的值;
最终,对26和30的输出结果进行拼接——26的输出,联合30输出的最高两比特,就得到了A+B*C的尾数;
本发明在实现细节上做了周密的考虑,保证了浮点乘加单元的高精度,具体表现在两个方面:
1.考虑了规格化移位所不能正确覆盖的一位左移。
2.乘法结果采用两个48位部分积表示,会引起一位溢出错误,本发明中提出了一种消除该错误的方法。
本发明的创新点总结如下:
●乘法结果采用两个48位部分积表示,会引起一位溢出错误,本发明中提出了一种消除该错误的方法。
●采用最终加和舍入同时进行的方法,减小了冗余,仅需要22位的加法器,同时能够处理前导零预测(leading zero anticipate-LZA)可能引入的一位左移,远小于其他的MAF单元中加法器的宽度。
●由于规格化移位需要在加法之前完成,所以LZA不可能与加法并行完成。为减少延时,我们根据A的移位对齐情况和指数差将规格化移位仔细的划分成了六种情况,分别采用不同方法进行LZA,同时分三步完成移位,最大移位量被减小到仅26位。而且仅一步规格化移位在关键路径上,另外两步在其它模块中完成。由于移位器的延时主要产生于连线延时,大幅度减少移位量能大大缩短连线长度,从而显著地减小了电路延时。
●为得到一个操作数的补数表示,该操作数被按位取反后还需要在其最低位加1。虽然这个加1操作可以留到最终加和舍入部分,但是会增加逻辑复杂度和延时,需要尽量避免,而3:2进位保存加法器(carry save adder-CSA)中进位字节的最低位是一个空位(因为这一位上不会有来自更低一位的进位),可以被用来存放求补所需加的1。另一个办法是将数据通路向右宽展一位,并在新的最低位上增加两个1,相当于在原来的最低位上加1。
本发明采用五级流水线实现,用VerilogHDL实现,通过验证后用0.18微米标准单元库进行电路综合。对综合结果进行时序分析,结果显示最大延时为1.82纳秒。
附图说明
图1是参考文献1:Floating-Point Multiply-Add-Fused with Reduced Latency中介绍的一种已有的乘加单元的结构框图;
图2是本发明的五级流水线实现的单精度浮点乘加单元的结构框图;
图3a是A相对B×C移位对齐前在数据通道中摆放的示意图;
图3b是A相对B×C移位对齐后在数据通道中摆放的示意图;
图3c是A相对B×C移位对齐,并进行3∶2进位保存压缩后数据通道中数据摆放的示意图;
图4是单字节3∶2进位压缩加法器(CSA)的具体实现图;
图5是乘法压缩树具体实现的框图,这一压缩树由11个49字节的CSA组成;
图6是乘法压缩结果在数据通道中摆放的示意图;
具体实施方式
本发明的具体功能实现过程如下:
A的移位对齐、取反与B×C的波斯编码、部分积压缩并行执行。求补所需的加1利用3∶2 CSA进位字节最低位上的空位实现。然后将Ainv与B×C压缩后的部分积输入到3∶2CSA中。Ainv表示将A的尾数按位对齐并取反(如果A的符号位与B×C的符号位相同则不需取反)的输出。由于B×C的部分积只有48位,只需将Ainv的低48位输入3∶2 CSA中,高55位与CSA输出的和字节相连得到74位的和字节。在进行乘法和对齐的同时,判断A的符号与B×C的符号是否相同,并计算指数差d。
下一步要确定规格化移位的移位量,也就是前导零的个数。由于前导零预测的延时大于第一步规格化移位和符号判断,可在前导零预测的同时完成加法的一部分以缩短关键路径。同时为确保最终加输出的结果为正,需要进行符号预测,结果为负时选取进位保存加法器输出结果的补数表示。
最后进行最终加和舍入。由于前导零预测结果有1位的不确定性,最终结果有可能需要左移一位,因此舍入位置也有1位的不确定性。本发明采用条件加法器和精心设计的舍入逻辑解决了这一问题。
乘法结果采用两个48位部分积表示,会引起一位溢出错误,本发明中提出了一种消除该错误的方法。
乘法模块的实现过程如下:
乘法采用以4为基的波斯编码,仅无符号的B、C尾数部分被输入到乘法电路中。部分积压缩过程采用多级3∶2进位保存加法器,将13个部分积压缩为2个。
由于B和C的尾数均为24位,B×C的结果应为48位,但是部分积表示时应保留49位,最高位为符号位。由于仅无符号的B、C尾数部分被输入到乘法电路中,如果将2个49位的压缩后的部分积相加,符号位永远为0,因此可尝试仅保留低48位。但是将2个48位的部分积相加时可能产生进位溢出,这一错误暗示两个处于区间[1,2)的数相乘结果大于4,该进位应被抛弃。由于两个部分积是与Ainv相加,而不是单独相加,我们首先需要预测是否会出现进位,然后进行处理。一共有三种情况,具体如下:
情况1.BC_49BitsCarry,BC_49BitsSum的最高位均为0。BC_49BitsCarry,BC_49BitsSum为49位的压缩后的部分积,如图6所示。这种情况下仅需要保留低48位。
情况2.BC_49BitsCarry,BC_49BitsSum的最高位均为1。假设BC_49BitsCarry与BC_49BitsSum的低48位相加有进位,则该进位与最高位上的两个1相加,最终的符号位将为1,表明结果为负。这是不可能出现的,因此不可能产生进位。
情况3.BC_49BitsCarry和BC_49BitsSum的最高位一个为0,另一个为1。这种情况下BC_49BitsCarry和BC_49BitsSum的低48位相加必有进位溢出。如果想仅保留低48位,必须消去该进位的影响。低48位只可能有两种形式:11.*+01.*或1*.*+1*.*,*表示剩下的位,可为0也可为1。11.*+00.*不可能出现,因为这种情况下BC_49BitsCarry+BC_49BitsSum结果将为00.*,小于1,而B×C≥1。
BC_49BitsCarry+BC_49BitsSum为11.*+01.*时,将这三个1改为0就可避免溢出,而为1*.*+1*.*时,将两个1改为0即可。
最终加法和舍入的实现过程如下:
IEEE 754标准中规定了4种舍入模式:就近舍入(RN),向正无穷舍入(RP),向负无穷舍入(RM),向零舍入(RZ)。从应用的角度来看,这四种舍入模式能减少到三个:RN、RI、RZ,如表1所示。
从数学意义上讲,
Figure A20071009940800181
Figure A20071009940800182
Figure A20071009940800183
这里
Figure A20071009940800184
Figure A20071009940800185
分别表示向上取整和向下取整。
最终加和舍入模块非常类似于浮点乘法单元中相应的模块——尽管已进行规格化移位,还可能需要一位左移。舍入完成后,根据最高位的值决定0-23位还是1-24位被用来作为最终结果。最高位为1时,采用0-23位,否则采用1-24位。注意舍入本身可能导致最高位被置位,这就是舍入后溢出的情况。
如图2所示,输入被分为三部分:高位段(第0-21位),中间段(第22-25位)和低位段(第26-74位)。下面详细介绍每一部分的设计。
高位段。这部分被输入到条件加法器中计算sum(sum0)和sum+1(sum1)。中位段的最高位进位决定选择sum0还是sum1。
中位段。这4位与低位段的最高位进位相加,  RN和RI模式时需在舍入位加1,RI模式时还需加粘滞位。注意不需进行一位左移时舍入位为第24位,否则为第25位。
考虑到计算低位段进位的延时较大,计算是否需要左移一位的信号的延时大于粘滞位的计算和4-bit全加,所以采用条件加法器,同时计算左移和不需左移,低位段有进位和无进位时的全加结果,然后根据左移信号和进位选择所需的结果。
是否需要左移由sum0的最高位,sum1的最高位,以及向高位段的进位决定,
其中c_no_left_shift为假设不需左移时4位全加结果的最高位进位。
一排半加器被用来确保舍入和低位处理时最多仅有一个向第21位的进位,这一半加在3∶2CSA之后就已完成。
低位段被输入到计算最高位的进位以及粘滞位st2的电路中。
注意还要考虑A对齐时收集移出位得到的粘滞位st1,最终的粘滞位sticky=st1+st2。

Claims (1)

1.一种浮点乘加融合单元的五级流水线结构,其特征在于,含有一种五级流水实现的单精度浮点乘加运算单元,实现了形式为A+(B×C)的乘加操作,其吞吐量为每周期一条指令,如图2所示,具体结构如下:
第一级流水线:由指数处理单元1、以4为基的波茨编码器3、3∶2的进位保存加法器(CSA)组成的部分积压缩树4的一部分和符号处理单元2组成;其中,
指数处理单元1根据操作数A的指数,B的指数和C的指数计算其指数差d
d=exp(A)-(exp(B)+exp(C)-127),
其中,exp(A),exp(B)和exp(C)分别是操作数A,B和C的指数,根据IEEE 754标准,单精度浮点数的指数为其第2位到第8位,并计算A与B×C对齐时所需的移位量mv,
mv=74-d,
确定数据通路的临时指数Exp_temp,其计算方法为:
若mv<0,则Exp_temp=exp(A);否则Exp_temp=exp(B)+exp(C)-127+27;这里加27是因为B×C的结果在数据通道中靠右侧摆放,如图3(a)所示;
符号处理单元2根据操作数A的符号,B的符号和C的符号计算临时符号、是否为有效减(sub),根据IEEE 754标准,单精度浮点数的符号位为其最高位,临时符号由B×C的符号位表示,A的符号位与B×C的符号位不同时,sub=1,否则sub=0;
基4的波茨编码器3对C的尾数进行编码,然后将编码的结果与B的尾数相乘得到13个部分积,根据IEEE 754标准,单精度浮点数的尾数为其第9位到第32位,编码后的13个部分积的被送入3∶2的进位保存(CSA)压缩树4中,单个单字节CSA单元和CSA压缩树的构造分别在图4和图5中做了详细的介绍,其中图5的输入x、y、z为3个要被压缩的字节,输出S、C分别为压缩后的和字节和进位字节,图6的输入in1~in13为波茨编码后得到的13个部分积,输出为压缩后得到的和、进位,整个压缩树由11个49比特的CSA构成,其中每个CSA由49个图5中的单元结构构成,将13个部分积压缩为两个,需要5级的CSA树,为平衡各级流水线的延时,这里将前两级CSA树放在第一级流水线中,而后面的三级CSA树留到第二级流水线中执行,最终压缩的结果需要被处理后才能做为乘法结果,具体处理方法为:部分积压缩树每一压缩的结果都保留49位,最后一级压缩后的两个输出的最高位都为1时,将这两个1改为0,否则若两个最高位1个是1,另一个是0,而两个次高位均为1时,将这最高位的1个1和次高位的2个1都改为0,其与情况不需做修改;
第二级流水线:由指数状态划分器5、74比特移位对齐器6、按位取反器7、粘滞位计算器8、3∶2的进位保存加法器(CSA)组成的部分积压缩树4的一部分和一个3∶2 CSA组成;其中,
指数状态划分器5根据1中计算出的d和从2中得到的sub,将指数的状态划分为以下6种情况:
1)d≥27
2)27>d≥3或d=2,sub=0
3)2≥d≥-48且sub=1
4)d=1或d=0,sub=0
5)-1≥d≥-48且sub=0
6)d<-48
前导零预测模块10将根据这里划分的状态进行特殊的操作,介绍10时将会具体的介绍;
74比特的移位对齐器6根据指数处理单元1得到的mv值,对A的尾数进行移,A最初被放置在B×C最高位的左边,如图3(a)所示,为保证d>27时能准确地进行舍入,将两个额外位放在A和B×C最高位之间,d>27时,A不移位,通过置入两个额外位,舍入逻辑不再需要考虑B×C的结果,A右移的位数由d决定,有三种情况:
1.mv≤0,B×C在A最低位的右边,这种情况下,B×C仅影响粘滞位的计算,不需要移动A;
2.0<mv<74,A右移mv位,mv>50时,A的一部分将被移到B×C最低位的右边,这些移出位将被收集用来计算粘滞位st1;
3.mv≥74,A将被全部移到B×C最低位的右边,仅影响粘滞位st1的计算;
计算粘滞位的部件8收集A向右移位对齐时移出数据通道的位,用以计算粘滞位,这里产生的粘滞位仅仅是整个乘加单元实现过程中产生的粘滞位的一部分,记为st1,在第四级流水线中还会产生粘滞位,后面介绍第四级流水线的时候将会详细介绍;若sub=0,A被移出数据通道的位全为0时,st1=0,否则st1=1;若sub=1,A被移出数据通道的位全为1时,st1=0,否则st1=1;
按位取反器7,如果A的符号位和B×C的符号位不同,对A的尾数的每比特都做取反操作(也就是按位取反),如果A的符号位和B×C的符号位相同,则不作取反操作,并将操作结果和4的输出结果一起送入3:2CSA 9中作一次压缩,其输出结果记为sum、carry,它们在数据通道中的存在形式如图3(c)所示;A的符号位和B×C的符号位不同时,还要在A的最低位加1以完成对A的求补,但是移位后,A的最低位可能在24位到74位之间的任一位置,我们希望将1加到一个固定的位置,检查A的最低位在161位左边和右边两种情况,可发现sub=1且st1=0时要在进位字节的最低位加1,如图3(c)所示,这一加1能正确的传递到A的最低位,3:2CSA压缩后进位字节(carry)的最低位(74位)为空,1可加在这位上;
第三级流水线:由前导零检测模块10、74比特的半加器11、12和13、符号预测逻辑14、25比特的一次性移位器15和选择器16组成;其中,
前导零检测模块10,根据5和9的输出,以及d和sub的值确定后两次规格化移位(分别由17、25完成)的移位量,下面阐述根据d和sub划分的六种情况,详细讨论各种情况下如何确定前导零个数(结果为负时为前导一):
情况1:d≥27
前导零个数(LZN)可能为0或1,不需要进行移位,1位的左移不确定留到加法和舍入部分处理,17和25的移位量均为0;
情况2:27>d≥3或d=2,且sub=0
25的移位量为0,sub=1时,17中的移位量为mv,其中mv为1中计算出的A相对B×C移位对齐时的移位量;sub=1时,17中的移位量为mv-1,因为此时为有效加法,加法器20中最高位可能产生进位(Cout=1,Cout表示加法器20中最高位的进位),17中的移位量最少为0,最多为25;
情况3:2≥d≥-48且sub=1
此时A和B×C非常接近,减法运算可能损失很多有效位,这种情况下需要特殊的前导零预测逻辑,我们的实现方法如下:
通过检查某一位及其左右相邻的位确定哪一位可能是最高位,设一预测位fi T = sum ⊕ carry , G=sum&carry,
Figure A2007100994080004C2
f 0 = T 0 ‾ T 1
f i = T i - 1 ( G i Z ‾ i + 1 + Z i G ‾ i + 1 ) + T ‾ i - 1 ( Z i Z ‾ i + 1 + G i G ‾ i + 1 ) , i > 0
其中sum、carry为9的两个输出,若fi=1,而fj=0(j=0,1…i-1),则最高位为i或i+1,
i≤26时,17中的移位量为i,25中的移位量为0;否则17中的移位量为26,25中的移位量为i-26;
情况4:sub=0,且d=1或0
17和25中的移位量均为0;
情况5:-1≥d≥-48且sub=0
25中的移位量为0;
17中的移位量由BC_sum[0],BC_sum[1],BC_carry[0],BC_carry[1]确定,它们分别是4的两个输出的最高两位,若
BC_sum[0]|BC_carry[0]|(BC_sum[1]& BC_carry[1])=1
则A与B×C相加,Cout=1,Cout为前面提到过的加法器20中最高位的进位,这种情况下17中的移位量为0,否则Cout=0,17中的移位量为1;
情况6:d<-48
B×C远大于A,A仅影响舍入逻辑,在17中只需左移一位,25中的移位量为0;
总结几上各种情况可发现17、25中的最大的移位量仅为26位;
74比特的半加器11、12和13的引入是为了保证在第五级流水线中部件27、28仅产生一位进位,为减少电路的延时,这里同时对9输出结果及其补数表示进行处理,待部件14判断出结果的正负后再用选择器16选择需要的结果,11的输入为sum、carry,输出结果为sum&carry,即对sum和carry作按位与操作,12的输入为sum、carry,输出结果为sum^carry,即对sum和carry作按位或操作,13的输入为sum、carry按位取反,输出结果为sum和carry分别按位取反后作按位与操作;
25比特的一次性移位器15,根据1的输出d和2的输出sub判断是否对11、12、13的输出进行一次25比特的移位:d>2,或者d=2且sub=0时进行移位,否则不进行移位,为得到sum、carry的补数表示,除了按位取反,还需要分别在最低位加1,这里的两个加1采用的技巧为:1个加在13的输出的最低位,同时将数据通道向右拓展一位,然后在12和13的输出的最低位分别置1,这样就完成了另一个加1;
结果可能为负时将需要非常复杂的选择,注意这里提到的负指的是A+B×C的符号与B×C的符号不同,避免这一麻烦同时减小电路时延的方法是提前判断结果的正负,结果为负时选择9输出的补数表示,这一判断由符号预测模块14完成,它在进行前导零预测(10)、半加(11、12、13)以及一次性移位(15)的同时进行,符号预测模块14根据9的输出结果sum和carry预测最终结果的正负,结果仅在有效减(sub=1)时可能为负,有效减时,A的补数始终被使用,因此结果仅在d>0时可能为负,可能有两种情况:
1.d≥2时结果始终为负;
2.d=0或d=1时,要对A和B×C进行全面的比较,具体方法是检测sum加carry时,
最高位是否有进位产生,若有,则符号判断的结果为正;
选择器16根据14判断的结果从15的结果中选择,若14判断出结果为正,则选择sum和carry一次性移位后的输出,否则选择sum和carry取补再移位后的输出;
第四级流水线:由26比特的规格化移位器17、最终结果的符号计算部件18、指数计算部件19、22位条件加法器20、进位和粘滞位计算部件21和两个与门22、23组成,其中,
26比特的规格化移位器17根据10中得到的移位量对16的输出结果进行移位,最大移位量为26;
最终结果的符号计算部件18将2中得到的B*C的符号和14得到的符号预测结果进行异或操作,得到A+B*C的符号;
指数计算部件19计算A+B*C的指数,计算方法为1中得到的Exp_temp与三次规格化移位(由15、17、25完成)的移位量之和相加;
22位条件加法器20,将17输出结果的高22比特相加得到sum0,sum0+1得到sum1;
部件21~23是完成舍入的部件的一部分;
IEEE 754标准中规定了4种舍入模式:就近舍入(RN),向正无穷舍入(RP),向负无穷舍入(RM),向零舍入(RZ),从应用的角度来看,这四种舍入模式能减少到三个:RN、RI、RZ,如表1所示;
从数学意义上讲,
Figure A2007100994080006C2
Figure A2007100994080006C3
这里
Figure A2007100994080006C4
Figure A2007100994080006C5
分别表示向上取整和向下取整;
21中利用17输出的低49位计算其最高位进位,利用17输出结果的低50位和st1计算粘滞位;有左移的粘滞位的计算方法为:17输出的两个数的低49位相加的结果为零,且st1=0时,粘滞位的计算结果为0;无左移的粘滞位的计算方法为:17输出的两个数的低50位相加的结果为零,且st1=0时,粘滞位的计算结果为0;采用下面的方法可快速确定两个数是否为0:设两个操作数为A=a0...an-1,B=b0...bn-1,记矢量E=e0...en-1,其中 e i = k i + 1 ⊕ p i , pi=ai&bi,ki=ai+bi,那么A+B=0 if Z = Π i = 0 n - 1 e i = 1
22和23为两个与门,22的输入为RI和21中得到的无左移时的粘滞位,输出进入加法器28,23的输入为RI和21中得到的有左移时的粘滞位,输出进入加法器27;
第五级流水线:由指数修正部件24、24比特的规格化移位器25、两个4位的加法器27和28、选择器29和最低位修正部件30;其中,
尽管前面已进行规格化移位,但由于10中采用的前导零逻辑有一位的不确定性,以及两个数相加是否有进位的不确定性,将17的输出结果相加最高位可能为0,也就是说还可能需要一位左移;是否需要左移由sum0的最高位,sum1的最高位,以及21中得到的低49位向高位段的进位决定,
Figure A2007100994080007C1
其中c_no_left_shift为假设不需左移时4位全加结果(在28中得到)的最高位进位;
若Left_shift=1,则指数修正部件24将19中得到的结果减1得到最终结果的指数,否则不需减1;
第三步规格化移位在25中完成,其移位量在10中已计算出了;
22和23为两个4位的加法器,它们有三个共同的输入:17中两个输出结果的23~26比特,以及RN+RI,一个不同的输入:分别为22和23的输出;
选择器29根据Left_shift的值从27和28的输出中作选择,若Left_shift=1,则选择28的输出作为输出,否则选择27的输出;
29输出结果的最高位为1时,选择器26选择sum1经部件25处理后的输出作为输出,否则选择sum0经25处理后的输出;
最后,RN模式时最低位需要被修正,这由舍入位和粘滞位确定:
LSBcorrected=0 if(~R)&sticky&RN=1
其中R为舍入位,本设计中为29的输出的第3位,sticky为粘滞位,Left_shift=1,其值等于21中计算得的有左移时的粘滞位的值,否则为无左移时的粘滞位的值;
最终,对26和30的输出结果进行拼接——26的输出,联合30输出的最高两比特,就得到了A+B*C的尾数。
CN2007100994089A 2007-05-18 2007-05-18 一种具有五级流水线结构的浮点乘加融合单元 Expired - Fee Related CN101174200B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100994089A CN101174200B (zh) 2007-05-18 2007-05-18 一种具有五级流水线结构的浮点乘加融合单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100994089A CN101174200B (zh) 2007-05-18 2007-05-18 一种具有五级流水线结构的浮点乘加融合单元

Publications (2)

Publication Number Publication Date
CN101174200A true CN101174200A (zh) 2008-05-07
CN101174200B CN101174200B (zh) 2010-09-08

Family

ID=39422734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100994089A Expired - Fee Related CN101174200B (zh) 2007-05-18 2007-05-18 一种具有五级流水线结构的浮点乘加融合单元

Country Status (1)

Country Link
CN (1) CN101174200B (zh)

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937333A (zh) * 2009-10-26 2011-01-05 威盛电子股份有限公司 判断系统及方法
CN101986264A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置
CN101706712B (zh) * 2009-11-27 2011-08-31 北京龙芯中科技术服务中心有限公司 浮点向量乘加运算装置和方法
CN102566967A (zh) * 2011-12-15 2012-07-11 中国科学院自动化研究所 一种采用多级流水线结构的高速浮点运算器
CN102707921A (zh) * 2011-02-17 2012-10-03 Arm有限公司 用于执行浮点加法的装置和方法
CN102799411A (zh) * 2012-06-29 2012-11-28 华为技术有限公司 浮点数累加电路及其实现方法
WO2013155744A1 (en) * 2012-04-20 2013-10-24 Huawei Technologies Co., Ltd. System and method for signal processing in digital signal processors
CN104156195A (zh) * 2014-08-19 2014-11-19 中国航天科技集团公司第九研究院第七七一研究所 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
CN105335127A (zh) * 2015-10-29 2016-02-17 中国人民解放军国防科学技术大学 Gpdsp中支持浮点除法的标量运算单元结构
CN105607889A (zh) * 2015-10-29 2016-05-25 中国人民解放军国防科学技术大学 Gpdsp共享乘法器结构的定点浮点运算部件
CN106528044A (zh) * 2010-09-24 2017-03-22 英特尔公司 处理器、指令执行方法和计算系统
CN106575214A (zh) * 2014-08-18 2017-04-19 高通股份有限公司 融合乘加运算的模拟
CN106970776A (zh) * 2015-09-25 2017-07-21 Arm 有限公司 用于浮点乘法运算的装置和方法
CN107743613A (zh) * 2015-06-24 2018-02-27 Arm 有限公司 用于处理浮点值的装置和方法
CN107769791A (zh) * 2016-08-22 2018-03-06 Arm 有限公司 用于定点到浮点的转换的装置和方法及2的负幂检测器
CN108139885A (zh) * 2015-10-07 2018-06-08 Arm有限公司 浮点数舍入
CN108958704A (zh) * 2017-05-18 2018-12-07 华为技术有限公司 一种数据处理装置及方法
CN109426738A (zh) * 2017-08-23 2019-03-05 中芯国际集成电路制造(上海)有限公司 一种硬件加密器及加密方法、电子装置
CN109643228A (zh) * 2016-10-01 2019-04-16 英特尔公司 用于浮点乘加运算的低能耗尾数乘法
CN109960486A (zh) * 2019-02-14 2019-07-02 安谋科技(中国)有限公司 二进制数据处理方法及其装置、介质和系统
CN110168493A (zh) * 2017-01-16 2019-08-23 国际商业机器公司 在128位宽的操作数上的融合乘加浮点运算
CN110399117A (zh) * 2019-07-31 2019-11-01 上海燧原智能科技有限公司 一种混合乘法加法处理方法及装置
CN110489077A (zh) * 2019-07-23 2019-11-22 福州瑞芯微电子股份有限公司 一种神经网络加速器的浮点乘法运算电路和方法
CN110597484A (zh) * 2019-08-02 2019-12-20 北京航空航天大学 基于存内计算的多比特全加器、多比特全加运算控制方法
US11593295B2 (en) 2018-06-30 2023-02-28 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN116643718A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN117785108A (zh) * 2024-02-27 2024-03-29 芯来智融半导体科技(上海)有限公司 一种前导数处理方法、系统、设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558170B (zh) * 2018-11-06 2021-05-04 极芯通讯技术(南京)有限公司 一种支持数据级并行和多指令融合的二维数据通路架构

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537538A (en) * 1993-12-15 1996-07-16 Silicon Graphics, Inc. Debug mode for a superscalar RISC processor
CN1220935C (zh) * 2001-09-27 2005-09-28 中国科学院计算技术研究所 提高半规模双精度浮点乘法流水线效率的部件

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937333B (zh) * 2009-10-26 2014-12-10 威盛电子股份有限公司 判断系统及方法
CN101937333A (zh) * 2009-10-26 2011-01-05 威盛电子股份有限公司 判断系统及方法
CN101706712B (zh) * 2009-11-27 2011-08-31 北京龙芯中科技术服务中心有限公司 浮点向量乘加运算装置和方法
CN106528044A (zh) * 2010-09-24 2017-03-22 英特尔公司 处理器、指令执行方法和计算系统
CN101986264B (zh) * 2010-11-25 2013-07-31 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置
CN101986264A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置
CN102707921B (zh) * 2011-02-17 2017-06-30 Arm有限公司 用于执行浮点加法的装置和方法
CN102707921A (zh) * 2011-02-17 2012-10-03 Arm有限公司 用于执行浮点加法的装置和方法
CN102566967B (zh) * 2011-12-15 2015-08-19 中国科学院自动化研究所 一种采用多级流水线结构的高速浮点运算器
CN102566967A (zh) * 2011-12-15 2012-07-11 中国科学院自动化研究所 一种采用多级流水线结构的高速浮点运算器
CN104246690B (zh) * 2012-04-20 2017-10-24 华为技术有限公司 数字信号处理器中用于信号处理的系统和方法
US9274750B2 (en) 2012-04-20 2016-03-01 Futurewei Technologies, Inc. System and method for signal processing in digital signal processors
WO2013155744A1 (en) * 2012-04-20 2013-10-24 Huawei Technologies Co., Ltd. System and method for signal processing in digital signal processors
CN104246690A (zh) * 2012-04-20 2014-12-24 华为技术有限公司 数字信号处理器中用于信号处理的系统和方法
CN102799411B (zh) * 2012-06-29 2015-09-09 华为技术有限公司 浮点数累加电路及其实现方法
CN102799411A (zh) * 2012-06-29 2012-11-28 华为技术有限公司 浮点数累加电路及其实现方法
CN106575214A (zh) * 2014-08-18 2017-04-19 高通股份有限公司 融合乘加运算的模拟
CN106575214B (zh) * 2014-08-18 2018-09-07 高通股份有限公司 融合乘加运算的模拟
CN104156195B (zh) * 2014-08-19 2016-08-24 中国航天科技集团公司第九研究院第七七一研究所 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
CN104156195A (zh) * 2014-08-19 2014-11-19 中国航天科技集团公司第九研究院第七七一研究所 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
CN107743613B (zh) * 2015-06-24 2022-04-26 Arm 有限公司 用于处理浮点值的装置和方法
CN107743613A (zh) * 2015-06-24 2018-02-27 Arm 有限公司 用于处理浮点值的装置和方法
CN106970776B (zh) * 2015-09-25 2021-12-14 Arm 有限公司 用于浮点乘法运算的装置和方法
CN106970776A (zh) * 2015-09-25 2017-07-21 Arm 有限公司 用于浮点乘法运算的装置和方法
CN108139885A (zh) * 2015-10-07 2018-06-08 Arm有限公司 浮点数舍入
CN105335127A (zh) * 2015-10-29 2016-02-17 中国人民解放军国防科学技术大学 Gpdsp中支持浮点除法的标量运算单元结构
CN105607889A (zh) * 2015-10-29 2016-05-25 中国人民解放军国防科学技术大学 Gpdsp共享乘法器结构的定点浮点运算部件
CN107769791A (zh) * 2016-08-22 2018-03-06 Arm 有限公司 用于定点到浮点的转换的装置和方法及2的负幂检测器
CN107769791B (zh) * 2016-08-22 2023-06-23 Arm 有限公司 用于定点到浮点的转换的装置和方法及2的负幂检测器
CN109643228A (zh) * 2016-10-01 2019-04-16 英特尔公司 用于浮点乘加运算的低能耗尾数乘法
CN110168493A (zh) * 2017-01-16 2019-08-23 国际商业机器公司 在128位宽的操作数上的融合乘加浮点运算
CN110168493B (zh) * 2017-01-16 2023-03-28 国际商业机器公司 在128位宽的操作数上的融合乘加浮点运算
CN108958704A (zh) * 2017-05-18 2018-12-07 华为技术有限公司 一种数据处理装置及方法
CN108958704B (zh) * 2017-05-18 2020-12-15 华为技术有限公司 一种数据处理装置及方法
CN109426738B (zh) * 2017-08-23 2021-11-12 中芯国际集成电路制造(上海)有限公司 一种硬件加密器及加密方法、电子装置
CN109426738A (zh) * 2017-08-23 2019-03-05 中芯国际集成电路制造(上海)有限公司 一种硬件加密器及加密方法、电子装置
US11593295B2 (en) 2018-06-30 2023-02-28 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN109960486A (zh) * 2019-02-14 2019-07-02 安谋科技(中国)有限公司 二进制数据处理方法及其装置、介质和系统
CN109960486B (zh) * 2019-02-14 2021-06-25 安谋科技(中国)有限公司 二进制数据处理方法及其装置、介质和系统
CN110489077A (zh) * 2019-07-23 2019-11-22 福州瑞芯微电子股份有限公司 一种神经网络加速器的浮点乘法运算电路和方法
CN110399117A (zh) * 2019-07-31 2019-11-01 上海燧原智能科技有限公司 一种混合乘法加法处理方法及装置
CN110399117B (zh) * 2019-07-31 2021-05-28 上海燧原智能科技有限公司 一种混合乘法加法处理方法及装置
CN110597484B (zh) * 2019-08-02 2021-08-13 北京航空航天大学 基于存内计算的多比特全加器、多比特全加运算控制方法
CN110597484A (zh) * 2019-08-02 2019-12-20 北京航空航天大学 基于存内计算的多比特全加器、多比特全加运算控制方法
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN116643718A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
CN116643718B (zh) * 2023-06-16 2024-02-23 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
CN117785108A (zh) * 2024-02-27 2024-03-29 芯来智融半导体科技(上海)有限公司 一种前导数处理方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN101174200B (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
CN101174200B (zh) 一种具有五级流水线结构的浮点乘加融合单元
CN100570552C (zh) 一种并行浮点乘加单元
CN107168678B (zh) 一种乘加计算装置及浮点乘加计算方法
CN101221490B (zh) 一种具有数据前送结构的浮点乘加单元
US7395304B2 (en) Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic
CN107273090A (zh) 面向神经网络处理器的近似浮点乘法器及浮点数乘法
EP1857925B1 (en) Method and apparatus for decimal number multiplication using hardware for binary number operations
EP1806652B1 (en) Normalization and rounding of an arithmetic operation result
CN104520807A (zh) 用于具有指数按比例缩放的浮点融合乘法加法的微架构
US5111421A (en) System for performing addition and subtraction of signed magnitude floating point binary numbers
US6988119B2 (en) Fast single precision floating point accumulator using base 32 system
CN106970775A (zh) 一种可重构定浮点通用加法器
Manolopoulos et al. An efficient multiple precision floating-point multiply-add fused unit
CN104246690A (zh) 数字信号处理器中用于信号处理的系统和方法
JP2008152360A (ja) 3項入力の浮動小数点加減算器
CN104991757A (zh) 一种浮点处理方法及浮点处理器
CN116643718B (zh) 一种流水线结构的浮点融合乘加装置、方法及处理器
CN112860220A (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
CN116594590A (zh) 一种浮点数据的多功能运算装置及方法
US5408426A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
CN116450085A (zh) 一种可扩展的BFloat16点乘运算器及微处理器
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
CN116627379A (zh) 可重构的支持多精度浮点或定点运算的方法及系统
US9575725B1 (en) Specialized processing block with embedded pipelined accumulator circuitry
Li et al. Design of a fully pipelined single-precision multiply-add-fused unit

Legal Events

Date Code Title Description
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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100908