CN101692202A - 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 - Google Patents
一种64比特浮点乘加器及其浮点运算流水节拍处理方法 Download PDFInfo
- Publication number
- CN101692202A CN101692202A CN200910093047A CN200910093047A CN101692202A CN 101692202 A CN101692202 A CN 101692202A CN 200910093047 A CN200910093047 A CN 200910093047A CN 200910093047 A CN200910093047 A CN 200910093047A CN 101692202 A CN101692202 A CN 101692202A
- Authority
- CN
- China
- Prior art keywords
- result
- index
- far
- bit
- floating
- 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
Links
Images
Abstract
本发明公开一种64比特浮点乘加器及其浮点运算流水节拍处理方法。该乘加器的第一指数处理单元用于计算浮点乘加和浮点乘法运算时的指数差;第一符号处理单元用于判断浮点乘加运算和浮点乘法运算结果的符号以及是否做有效减法;第二指数处理单元用于对只做加法操作时操作数的指数进行处理;第二符号处理单元用于对只作加法操作时操作数的符号进行处理;指数以及符号选择器用于选择第一指数处理单元和第一符号处理单元的结果,或者选择第二指数处理单元和第二符号处理单元的结果;并判断指数差d,当d=0、或d=1、或d=2、或d=-1,且做有效减法时,通过CLOSE路径进行运算,否则通过FAR路径进行运算,以此来降低乘加器时延。
Description
技术领域
本发明涉及微处理器技术领域,特别是涉及一种微处理器中的浮点乘加部件设计技术,尤其涉及到一种64比特浮点乘加器及其浮点运算流水节拍处理方法。
背景技术
为了达到浮点计算的高效率,在许多微处理器中使用一个浮点运算单元浮点乘加器来实现连续的浮点乘法和加法两个操作。浮点乘加器在一条指令中执行(A×B)+C的操作,并且只有一次舍入操作,从而提高了计算的精度。当把乘加指令中操作数C置为0时执行的是乘法指令,把操作数B置为1时,执行的是加法指令,所以浮点乘加器也可以用来做单独的乘法和单独的加法操作。
在微处理器中采用与浮点乘加运算相对应的浮点乘加部件,与单纯的浮点乘法器和浮点加法器相比,采用浮点乘加部件有以下两个好处:
①降低了用乘法器和全加器执行乘加指令的延迟。通常的微处理器中实现的浮点乘法是2~4拍,浮点加法2~3拍,而浮点乘加指令的延迟一般在3~5拍左右,可以看出一条浮点乘法指令接着一条浮点加法指令所需要的节拍数之和大于等于一条浮点乘加指令的执行节拍数,所以采用浮点乘加指令降低了先乘后加(乘加)的指令序列的延迟。
②比乘法器和全加器的硬件开销之和要小,而且提高了乘加指令结果的精度。浮点乘加器只在A×B+C结束后做一次舍入(rounding)和规格化(normalization),而用浮点乘法和浮点加法指令来实现浮点乘加指令时,需要先进行乘法的舍入和规格化,然后进行加法的舍入和规格化,要做两次舍入和规格化。只做一次舍入和规格化使得浮点乘加器硬件规模比浮点乘法器和浮点加法器之和的硬件规模要小一些。并且在浮点乘加器中,进行舍入的数据长度是161比特,提高了浮点运算的精度。
在已实现的多数处理器中,浮点乘加运算都是基于IBM RS/6000中的算法改进,一般通过以下步骤来实现(相关内容请见参考文献1:Designof the IBM RISC System/6000 floating-point execution unit,IBMjournal of Research & Development,Vol.34,pp.59-70,1990,参考文献2:Second-Generation RISC Floating Point with Multiply-Add Fused,IEEE Journal of Solid state circuits,Vol.25,pp.1207-1213,1990)
1、操作数A×B利用乘法压缩树进行压缩,得到carry(进位)和sum(和)两个部分积。在进行乘法树压缩的同时,操作数C进行取反和对齐移位操作。
2、把对齐移位后的Cinv和A×B压缩后的carry和sum用压缩比为3∶2的161bit CSA tree压缩,得到两个部分积。把3∶2CSA压缩后得到的两个部分积做161bit加法运算,同时利用这两个部分积进行161bitLZA(Leading Zero Anticipator,首位0的个数预测)得到加法结果的规格化左移的位数。
3、加法结果利用LZA预测的左移的位数进行规格化左移和舍入操作得到最终的计算结果。
为了降低浮点乘加器的时延,现有技术中提出了多种方案,例如规格化在最终的加法以及舍入之前的方法(参考文献3:Floating-PointMultiply-Add-Fused with Reduced Latency),对运算根据指数差d分为5个路径的方案(参考文献4:Multiple Path IEEE Floating-PointFused Multiply-add,proc.of the 46th IEEE International MidwestSymposium on Circuits and Systems,pp.1359-1362,2003)以及根据指数差分为3条路径的方法(参考文献5:Floating-Point FusedMultiply-Add Architectures,Proceeding of the Fortieth AsilomarConference on Signals,Systems,and Computers,2007),以及根据指数差分为2条路径FAR和CLOSE路径的方法(参考文献6:Floating-Point Fused Multiply-Add:Reduced latency forFloating-Point Addition,Proc.of 17th IEEE Symposium on ComputerArithmetic,pp.42-51,2005)。参考文献6中,根据指数差提出的2条路径的方法,虽然相对于传统乘加器能够在一定程度上降低时延,但由于大规模(106bit)移位器的存在和舍入位计算的复杂使得FAR路径的时延成为瓶颈。参考文献5的3路径方法相对于2路径的方法能大规模的降低乘加器的时延,但同时由于通路的划分的复杂性,相对于2通路的方法增加了大量的面积开销。
发明内容
本发明的目的在于克服现有技术中的缺陷,为了在尽量少增加面积的前提下降低现有技术中乘加器时延而提供一种64比特浮点乘加器及其浮点运算流水节拍处理方法。
为实现本发明目的而提供的一种64比特浮点乘加器,实现形式为(A×B)+C的浮点乘加运算,其中:
所述浮点乘加器,包括第一指数处理单元,用于计算浮点乘加和浮点乘法运算时的指数差;其根据操作数A的指数、操作数B的指数和操作数C的指数计算指数差d1=exp(A)-(exp(B)+exp(C)-1023)的值和符号;
所述浮点乘加器,还包括第一符号处理单元,用于判断浮点乘加运算和浮点乘法运算结果的符号以及是否做有效减法;如果操作数C的符号位和操作数A×B的符号位不同,那么尾数计算做有效减法,然后根据所述第一指数处理单元中所述指数差d1的符号来判断最后结果的符号;
所述浮点乘加器,还包括第二指数处理单元和第二符号处理单元,其中:
所述第二指数处理单元,用于对只做加法操作时操作数的指数进行处理;当只做加法操作时,第一个流水节拍中的第一指数处理单元被旁路,使用第二指数处理单元进行指数处理,其根据操作数A的指数和操作数C的指数计算指数差d2的值以及符号,由于操作数B为1,d2的计算简化为d2=exp(A)-exp(C);
所述第二符号处理单元,用于对只作加法操作时操作数的符号进行处理;如果操作数C的符号位和操作数A的符号位不同,那么尾数计算做有效减法,然后根据第二指数处理单元中的所述指数差d2的符号来判断最后结果的符号;
指数以及符号选择器,用于选择第一指数处理单元和第一符号处理单元的结果,或者选择第二指数处理单元和第二符号处理单元的结果;当浮点乘加器做浮点乘加和浮点乘法运算时,指数差d为d1的值,且符号为第一符号处理单元的结果;当只做浮点加法运算时,指数差d为d2的值,且符号为第二符号处理单元的结果;并判断指数差d,当d=0或者d=1或者d=2或者d=-1,而且做有效减法时,乘加运算通过CLOSE路径进行运算;否则乘加运算通过FAR路径进行运算。
为实现本发明目的还提供一种64比特双精度双通路浮点乘加器浮点运算流水节拍处理方法,其操作过程按照时序划分为四个流水节拍,包括下列步骤:
步骤S100,在第一拍中,利用27∶2的乘法压缩树计算操作数A×B的结果,并计算浮点乘加和浮点乘法运算的指数差d1和符号,同时进行浮点乘加和浮点乘法运算时的符号处理;
步骤S200,在第二拍中,计算单做浮点加法运算时的指数差d2和符号;当浮点乘加器做浮点乘加和浮点乘法运算时,指数差d为d1的值,;当只做浮点加法运算时,指数差d为d2的值;当d=0或者d=1或者d=2或者d=-1,而且做有效减法时,乘加运算通过CLOSE路径进行运算;否则乘加运算通过FAR路径进行运算;在CLOSE路径中,用一个57比特3∶2CSA压缩树进行运算,同时预测CLOSE路径首0位置以及计算CLOSE的加法的结果;在FAR路径中,对操作数C进行51比特的对齐移位或者不移位,并利用全加器得到乘法结果以及乘法结果低51位的补码;
步骤S300,在第三拍中,在CLOSE路径中,首先对首0检测的结果进行编码,得到规格化左移的位数,同时根据57比特符号判断得到结果是否需要取补,然后再进行规格化移位;在FAR路径中,首先对乘法结果或者在第二拍中操作数C的结果进行55比特的移位,然后取反,并进行半加运算(HA)以及1bit的规格化;
步骤S400,在第四拍中,对CLOSE路径和FAR路径分别进行舍入操作,然后通过选择得到最后的结果。
本发明的优点在于:
1、本发明的64比特双精度双通路浮点乘加器根据指数差d的范围划分为CLOSE路径和FAR路径,CLOSE路径处理d=0,d=1,d=2,d=-1且做有效减法时的数据,其他情况都是在FAR路径中完成的,通过CLOSE和FAR路径的划分使得大规模的规格化和大规模的对齐移位操作处在不同路径上,从而降低了时延。
2、为了降低64比特双精度双通路浮点乘加器的面积,CLOSE路径中直接用3个全加器:57bit双全加器、57bit取反全加器、106bit全加器和51bit补码器来代替传统浮点乘加部件中的半加器,使得只需要对一个操作数进行对齐移位或者规格化移位,从而达到减少所需的移位器的数目。由于移位器的面积比一个同比特的全加器的面积要大的多,所以这样会降低乘加器的面积。
3、在CLOSE路径和FAR路径中尽量复用移位器来降低面积开销。在CLOSE路径中,只需要一个58bit的移位器来进行规格化,比传统的161bit规格化的面积要小的多。在FAR路径中,根据指数差d的符号分为两类路径,一个是d≤0,一个是d>0。当d≤0时要对操作数C先经过一个51bit的移位器,然后在用一个55bit的移位器完成最多106比特的移位,而d>0这种情况只需要一个55bit的移位器。通过共用55bit的移位器使得对齐移位降低了面积,而对操作数C移位分为2个步骤并且划分到2个流水节拍中则降低了流水节拍的时延。
4、在浮点乘加器的第一节拍中只做了浮点乘法运算,所以在单纯浮点加法运算中可以把第一拍完全旁路,使得浮点加法运算减少了一个流水节拍,提高了浮点加法的性能,并且通过增加一份操作数A输入触发器来控制乘法树不翻转,使得浮点加法指令的功耗大大降低。
附图说明
图1是本发明的64比特双精度双通路浮点乘加器的流水结构框图;
图2是浮点乘加器旁路第一个流水节拍的控制图。
其中:
1-第一指数处理单元 2-第一符号处理单元 3-基4的波茨编码器
4-27∶2乘法压缩树 5-3bit对齐移位器
6-INV取反单元 7-57bit 3∶2CSA压缩树
8-57bit LZA 9-57bit双全加器
10-57bit取反双全加器 11-第一选择器
12-第二选择器 13-106bit全加器和51bit补码器
14-51比特对齐移位器 15-第三选择器
16-第二符号处理单元 17-第二指数处理单元
18-指数以及符号选择器
19-57bit符号检测器 20-57bitLOD编码器
21-109bit选择器 22-51bit LOD编码器
23-58bit移位器 24-55bit对齐移位器
25-舍入sticky计算单元
26-取反器 27-107bit HA
28-1bit规格化单元 29-d=0和d=1的符号处理单元
30-指数计算单元 31-CLOSE舍入和规格化单元
32-51bit双全加器 33-FAR舍入和进位单元
34-53bit选择器 35-64bit选择器
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的64比特浮点乘加器及其浮点运算流水节拍处理方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明而不是对本发明的限制。
本发明实施例的64比特浮点乘加器及其浮点运算流水节拍处理方法,实现形式为(A×B)+C的浮点乘加运算。
本发明实施例中的64比特浮点乘加器,是改进型的双精度双通路的64比特浮点乘加器,其根据乘法和加法的指数差分成2条通路,一路是CLOSE路径,一路是FAR路径。
下面详细说明本发明实施例的64比特浮点乘加器,作为一种可实施方式,其可以按照时序划分为4个流水节拍,根据顺序对4个流水节拍进行功能划分,如图1所示,其中:
在第一个流水节拍中,包括第一指数处理单元1、第一符号处理单元2、基4的波茨编码器3、27∶2的乘法压缩树4,其中:
第一指数处理单元1,用于计算浮点乘加和浮点乘法运算时的指数差d1;
其根据操作数A的指数、B的指数和C的指数计算指数差d1=exp(C)-(exp(A)+exp(B)-1023)的值以及符号;
第一符号处理单元2,用于判断浮点乘加运算和浮点乘法运算结果的符号以及是否做有效减法;
如果C的符号位和A×B的符号位不同,那么尾数计算做有效减法即sub_eff1为真,然后根据第一指数处理单元1中指数差d1的符号来判断最后结果的符号;
基4的波茨编码器3,用于对操作数B的尾数进行编码,然后将编码的结果与操作数A的尾数相乘得到27个部分积,这27个部分积送到27∶2的乘法压缩树4中;
27∶2的乘法压缩树4,用于对操作数A×B的27个部分积进行压缩得到两个“和”及“进位”,标记为carry,sum的106比特数据。
在第二个流水节拍中,包括3bit的对齐移位器5、INV取反单元6、57bit 3∶2CSA压缩树7、57bit LZA 8、57bit双全加器9、57bit取反全加器10、第一选择器11、第二选择器12、106比特全加器和51比特补码器13、51比特对齐移位器14、第三选择器15、第二符号处理单元16、第二指数处理单元17,指数以及符号选择器18其中:
第二指数处理单元17,用于对只做加法操作时操作数的指数进行处理;
当只做加法操作时,第一个流水节拍中的第一指数处理单元1被旁路,使用第二指数处理单元17进行指数处理,其根据操作数A的指数和操作数C的指数计算指数差d2的值及符号,由于操作数B为1,指数差d2的计算简化为为2=exp(A)-exp(C);
第二符号处理单元16,用于对只作加法操作时操作数的符号进行处理;
如果操作数C的符号位和操作数A的符号位不同,那么尾数计算做有效减法即sub_eff2为真,然后根据第二指数处理单元16中d2的符号来判断最后结果的符号。
指数以及符号选择器18,用于在第一个流水节拍的第一指数处理单元1和第一符号处理单元2的结果,以及第二个流水节拍的第二指数处理单元17和第二符号处理单元16的结果之间进行选择;当做浮点乘法和浮点乘加运算时,指数以及符号选择器18选择第一指数处理单元1和第一符号处理单元2的结果,即指数差d为d1的值,且符号为第一符号处理单元2的结果;当只作浮点加法运算时选择第二指数处理单元17和第二符号处理单元16的结果,即指数差为d2的值,且符号为第二符号处理单元的结果;并判断指数差d是否等于0,d是否等于1,d是否等于2和d是否等于-1;当指数差d=0、或者d=1、或者d=2、或者d=-1,且做有效减法时(sub_eff=1,即sub_eff为真),通过CLOSE路径进行运算,否则通过FAR路径进行运算;
其中,sub_eff的值为sub_eff1或sub_eff2,当指数以及符号选择器18,选择第一个流水节拍的指数处理单元和符号处理单元的结果时,sub_eff的值为sub_eff1;当指数以及符号选择器18,选择第二个流水节拍的指数处理单元和符号处理单元的结果时sub_eff2。
3bit的对齐移位器5,用于对操作数C的53比特尾数,根据指数差d的值进行移位;当d=0时没有移位,当d=1时向左移1位,当d=2时向左移2位,当d=-1时向右移1位,得到1个56比特的数据,这个移位数据用在CLOSE路径中;
INV取反单元6,用于对3bit的对齐移位器的56比特数据进行取反;由于CLOSE路径中都是做有效减法,所以在CLOSE路径中都对操作数C移位后的结果进行取反来完成减法运算,INV取反单元6位于CLOSE路径中;
INV取反单元6输出的结果为56bit,高位扩充1位符号位1得到57bit的数据,sum和carry的高56bit也高位扩充1位符号位0得到57bit的数据,这3组57bit的数据输入到57bit 3∶2CSA压缩树7中进行压缩得到2个57bit带符号的结果,由于对操作数C进行做减法,操作数C经过INV取反单元6后还需要再加1才得到操作数C的补码,这个1放在57bit3∶2CSA压缩数7结果的“进位”结果中;
57bit LZA 8(Leading Zero Anticipator),用于对57bit 3∶2CSA压缩树7输出的2个带符号的结果进行首0或者首1的预测,预测结果用一个序列表示,该序列标记为f,如果57bit LZA 8的2个输入数据相加为正数,那么f给出的是首0的位置,如果57bit LZA 8的2个输入数据相加为负数,那么f给出的是首1的位置,57bit LZA 8位于CLOSE路径中;
57bit双全加器9,用于对57bit 3∶2CSA压缩树7的2个57bit结果进行相加,输出这两个输入相加的结果,标记为sumpos,以及这两个输入相加再加1的结果,标记为sumpos1,57bit双全加器9位于CLOSE路径中;
57bit取补双全加器10,用于对57bit 3∶2CSA压缩树7的2个57bit结果先取反再相加,输出取反后相加的结果,标记为suminv,以及相加再加1的结果,标记为suminv1,57bit取反双全加器10位于CLOSE路径中;
第一选择器11,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出操作数A的尾数,否则输出乘法的结果的sum_se1;
第二选择器12,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出数据0值,否则则输出乘法结果的carry_se1;
106bit全加器和51bit补码器13,用于对第一选择器11和第二选择器12输出的2个106比特的结果sum_se1和carry_se1进行相加并对低51比特进行取补,输出一个106比特乘法结果,标记为MUL_res,低51比特取补的结果标记为MUL51C,1位低51比特的进位标记位carry51,1位51比特取补后的进位结果,标记为carry51C,其中MUL51C、carry51、carry51C和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于FAR路径中;
51比特对齐移位器14,用于对操作数C的尾数根据指数差-d的值进行最多51bit右移操作,得到104比特的结果,51比特对齐移位器14位于FAR路径中;
第三选择器15,用于对51比特对齐移位器14的输出以及操作数C进行选择;当d≤0时选择51比特对齐移位器14的输出,当d>0时直接输出操作数C,第三选择器15位于FAR路径中;
在第三个流水节拍中,包括57bit符号检测器19、57bitLOD编码器20、109bit选择器21、51bitLOD编码器22、58bit移位器23、55bit对齐移位器24、舍入sticky计算单元25、取反器26、107bitHA 27、1bit规格化单元28、d=0和d=1的符号处理单元29,其中:
57bit符号检测器19,用于根据57比特双全加器9输出结果sumpos和sumpos1第57位进行符号判断;如果106bit全加器和51bit补码器13的输出结果carry51=1而且sumpos1第57位为1,或者106bit全加器和51bit补码器13的输出结果carry51=0而且sumpos的第57比特为1,那么CLOSE路径的乘加结果为负数,否则为正数;
57bit LOD编码器20,用于对57bit LZA 8输出的f进行编码,编码后得到一个6比特结果S1[5:0],并输出到58bit移位器23中用来控制移位的位数;
109bit选择器21,用于根据57bit符号检测器19输出的符号以及carry51和carry51C进行选择,输出109bit的结果数据;如果为正数且carry51=0,那么选择输出结果为sumpos和MUL_res的低51比特,如果为正数且carry51=1,那么选择输出结果为sumpos1和MUL_res的低51比特,如果为负数且carry51C=0,那么选择输出结果为suminv和MUL51C的结果,如果为负数且carry51C=1,那么选择输出结果为suminv1和MUL51C的结果;
51bitLOD编码器22,用于对109bit选择器21输出的109bit结果数据的低51bit进行编码,得到首1的位置的一个5bit数据S2[5:0];
58bit移位器23,用于进行最多58bit的移位;当109bit选择器21输出的109bit结果数据的高58bit存在1个‘1’时,根据57bit LOD编码器20的编码结果S1[5:0]进行移位,如果109bit结果数据的高58bit全部为0,则根据51bitLOD编码器22的编码结果S2[5:0]进行移位,得到1个58bit的移位结果sumnorm,以及低位的舍入位sticky_close;
55bit对齐移位器24,用于选择106bit全加器和51bit补码器13输出的乘法结果MUL_res或者第三选择器15输出的结果,根据指数差d或-d的值进行向右最多55bit的对齐移位;当d≤0时,对第三选择器15输出的结果,根据-d的值进行最多55bit右移位,直接输出MUL_res;当d>0时,对MUL_res根据d的值进行最多55bit对齐移位,并直接输出第三选择器15的结果,55bit对齐移位器24输出2组106bit的数据,其中一组对应着操作数A×B对齐后的结果,一组对应着操作数C对齐后的结果;
舍入sticky计算单元25,用于在55bit对齐移位器24进行右对齐移位的同时,对移位后移出106bit位置的数据进行sticky运算,当移出的数据不全为0时,FAR_sticky=1,否则FAR_sticky=0;
取反器26,用于对55bit对齐移位器24输出的2个106比特的数据进行取反,当d≤0且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当d>0时且做有效减法时对A×B对齐后的结果进行取反;其他情况不取反;
107bitHA单元27,用于对取反器26输出的2个106比特数据进行半加运算,为后续的舍入操作做准备;
1bit规格化单元28,用于对107bitHA单元27的输出2个106bit结果进行1bit的左移,只当107bitHA单元27输出的2个结果的最高2位都为0时,向左移位1位,否则不移位;
d=0和d=1的符号处理单元29,用于对CLOSE通路中d=0和d=1时的符号根据57bit符号检测器19的结果做进一步的判断处理;当57bit符号检测器19输出结果是负数时,CLOSE路径输出的符号是操作数C的符号,当57bit符号检测器19输出结果位正数时,CLOSE路径输出的符号时操作数A×B的符号。
在第四个流水节拍中,包括指数计算单元30、CLOSE舍入和规格化单元31、51bit双全加器32、FAR舍入和进位单元33、53bit选择器34、64bit选择器35,其中:
指数计算单元30,用于根据CLOSE路径中规格化移位的位数以及FAR路径中规格化移位的位数进行指数的运算;CLOSE路径的指数结果为A×B的指数减去CLOSE规格化移位的位数(为58bit移位器19移位的位数加上舍入后移位的位数);FAR路径中,当d≤0时为A×B的指数减去FAR路径舍入移位的位数再减去1bit规格化单元24移位的位数,当d>0时为操作数C的指数减去FAR路径输入移位的位数再减去1bit规格化单元24移位的位数。
CLOSE舍入和规格化单元31,用于对CLOSE的路径的58bit结果进行舍入和规格化;由于57bitLZA 8有1bit的误差,会使的规格化少移1位,而且由于57bitLZA 8没有计算carry51和carry51C的值,所以也有可能多移1位,所以CLOSE舍入和规格化单元31根据舍入的结果进行左移1位或者右移1位;
51bit双全加器32,用于根据1bit规格化单元28输出的FAR_norm1和FAR_norm2计算FAR_norm1+FAR_norm2和FAR_norm1+FAR_norm2+1的值,所得到的FAR_norm1+FAR_norm2记为res 0,FAR_norm1+FAR_norm2+1记为res1,并将得到的res0和res1输出到53比特选择器34中;
FAR舍入和进位单元33,用于根据处理器的舍入模式对FAR_norm1和FAR_norm2的低55比特的数据做舍入操作,如果有舍入进位,则cin=1,否则没有舍入进位,则cin=0,并且给出高4bit的结果L4[3:0];
53bit选择器34,用于根据FAR舍入和进位单元33输出的cin和res0和res1的最高2bit进行选择处理;如果cin=1,有进位选择,那么选择res1,再根据res1的最高两bit进行选择,如果res1最高位为1那么res1和L4[3:2]组成53比特数据,如果最高两bit为01,那么res1舍掉最高的0和L4[3:1]组成53比特数据,而如果最高两bit为00,那么res1舍掉最高两位00和L4[3:0]组成53bit的数据,当cin=0时,没有进位选择,那么选择res0,再根据res0的最高两bit进行选择,选择的过程和选res1的情况是相同的;
64比特选择器35,用于根据FAR和CLOSE的判断来选择FAR路径的数据还是CLOSE路径的数据;当d=0或者d=1或者d=2或者d=-1,而且做有效减法时,选择CLOSE路径的结果,否则选择FAR通路的结果。
本发明实施例中的64比特双精度双通路浮点乘加器,其根据乘法和加法的指数差分成2条通路,一路是CLOSE路径,一路是FAR路径。FAR路径又根据指数差的符号分为两类,一类是操作数C的指数大于操作数A×B的指数,另一种是操作数C的指数小于等于操作数A×B的指数,CLOSE通路只包含58bit的规格化移位器,而FAR通路只包含一个51bit对齐移位器和1个55bit对齐移位器,利用规格化和对齐移位不会同时存在FAR和CLOSE运算路径中的特点,来降低浮点乘加器的延迟等。
与本发明的64比特双精度双通路浮点乘加器相应,本发明还提供一种64比特双精度双通路浮点乘加器浮点运算流水节拍处理方法,其操作过程按照时序划分为四个流水节拍,包括下列步骤:
步骤S100,在第一拍中,利用27∶2的乘法压缩树计算操作数A×B的结果,并计算浮点乘加和浮点乘法运算的指数差d1和符号,同时进行浮点乘加和浮点乘法运算时的符号处理;
第一指数处理单元1根据操作数A的指数,B的指数和C的指数计算d1=exp(C)-(exp(A)+exp(B)-1023)的值以及符号;
利用第一符号处理单元2判断,如果操作数C的符号位和A×B的符号位不同,那么尾数计算做有效减法即sub_eff1为真,然后根据第一指数处理单元1中d1的符号来判断最后结果的符号;
基4的波茨编码器3对操作数B的尾数进行编码,然后将编码的结果与操作数A的尾数相乘得到27个部分积,这27个部分积送到27∶2的乘法压缩树4中;
27∶2的乘法压缩树4对A×B的27个部分积进行压缩得到两个“和”及“进位”,标记为carry,sum的106比特数据。
步骤S200,在第二拍中,计算单做浮点加法运算时的指数差d2和符号;当浮点乘加器做浮点乘加和浮点乘法运算时,指数差d为d1的值,;当只做浮点加法运算时,指数差d为d2的值;当d=0或者d=1或者d=2或者d=-1,而且做有效减法时,乘加运算通过CLOSE路径进行运算;否则乘加运算通过FAR路径进行运算;在CLOSE路径中,用一个57比特3∶2CSA压缩树进行运算,同时预测CLOSE路径首0位置以及计算CLOSE的加法的结果;在FAR路径中,对操作数C进行51比特的对齐移位或者不移位,并利用全加器得到乘法结果以及乘法结果低51位的补码;
3bit的对齐移位器5对操作数C的53比特尾数,根据指数差d的值进行移位;当d=0时没有移位,当d=1时向左移1位,当d=2时向左移2位,当d=-1时向右移1位,得到1个56比特的数据,这个移位数据用在CLOSE路径中;
INV取反单元6对3bit的对齐移位器的56比特数据进行取反;由于CLOSE路径中都是做有效减法,所以在CLOSE路径中都对操作数C移位后的结果进行取反来完成减法运算;
INV取反单元6输出的结果为56bit,高位扩充1位符号位1得到57bit的数据,sum和carry的高56bit也高位扩充1位符号位0得到57bit的数据,这3组57bit的数据输入到57bit 3∶2CSA压缩树7中进行压缩得到2个57bit带符号的结果;
57bit LZA 8对57bit 3∶2CSA压缩树7输出的2个带符号的结果进行首0或者首1的预测,预测结果用一个序列表示,该序列标记为f,如果57bit LZA 8的2个输入数据相加为正数,那么f给出的是首0的位置,如果57bit LZA 8的2个输入数据相加为负数,那么f给出的是首1的位置;
57bit双全加器9对57bit 3∶2CSA压缩树7的2个57bit结果进行相加,给出这两个输入相加的结果,标记为sumpos,以及这两个输入相加再加1的结果,标记为sumpos1;
57bit取补双全加器10对57bit 3∶2CSA压缩树7的2个57bit结果先取反再相加,给出取反后相加的结果,标记为suminv,以及相加再加1的结果,标记为suminv1;
第一选择器11在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出操作数A的尾数,否则则输出乘法的结果的sum_se1;
第二选择器12在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出数据0值,否则则输出乘法结果的carry_se1;
106bit全加器和51bit补码器13对第一选择器11和第二选择器12输出的2个106比特的结果sum_se1和carry_se1进行相加并对低51比特进行取补,输出出一个106比特乘法结果,标记为MUL_res,低51比特取补的结果标记为MUL51C,1位低51比特的进位标记位carry51,1位51比特取补后的进位结果,标记为carry51C,其中MUL51C、carry51、carry51C和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于FAR路径中;
51比特对齐移位器14对操作数C的尾数,根据指数差-d的值进行最多51bit右移操作,得到104比特的结果,51比特对齐移位器位于FAR路径中;
第三选择器15对51比特对齐移位器14的输出以及操作数C进行选择,当d≤0时选择51比特对齐移位器14的输出,当d>0时直接输出操作数C;
第二指数处理单元17对只做加法操作时操作数的指数进行处理;当只做加法操作时,第一个流水节拍中的第一指数处理单元1被旁路,使用第二指数处理单元17进行指数处理,其根据操作数A的指数和操作数C的指数计算指数差d2的值及符号,由于操作数B为1,指数差d2的计算简化为d2=exp(A)-exp(C);
第二符号处理单元16对只作加法操作时操作数的符号进行处理;如果操作数C的符号位和操作数A的符号位不同,那么尾数计算做有效减法即sub_eff2为真,然后根据第二指数处理单元16中d2的符号来判断最后结果的符号。
指数以及符号选择器18,用于在第一个流水节拍的第一指数处理单元1和第一符号处理单元2的结果以及第二个流水节拍的第二指数处理单元17和第二符号处理单元16的结果之间进行选择;当做浮点乘法和浮点乘加运算时,指数以及符号选择器18选择第一指数处理单元1和第一符号处理单元2的结果,即指数差d为d1的值,且符号为第一符号处理单元2的结果;当只作浮点加法运算时选择第二指数处理单元17和第二符号处理单元16的结果,即指数差为d2的值,且符号为第二符号处理单元的结果;并判断指数差d是否等于0,d是否等于1,d是否等于2和d是否等于-1;当指数差d=0、或者d=1、或者d=2、或者d=-1,且做有效减法时(即sub_eff=1,即sub_eff为真),通过CLOSE路径进行运算,否则通过FAR路径进行运算;
其中,sub_eff的值为sub_eff1或sub_eff2,当指数以及符号选择器18,选择第一个流水节拍的指数处理单元和符号处理单元的结果时,sub_eff的值为sub_eff1;当指数以及符号选择器18,选择第二个流水节拍的指数处理单元和符号处理单元的结果时sub_eff2。
步骤S300,在第三拍中,在CLOSE路径中,首先对首0检测的结果进行编码,得到规格化左移的位数,同时根据57比特符号判断得到结果是否需要取补,然后再进行规格化移位首先对乘法结果或者在第二拍中操作数C的结果进行55比特的移位,然后取反,并进行半加运算(HA)以及1bit的规格化;
57bit符号检测器19根据57比特双全加器9输出结果sumpos和sumpos1第57位进行符号判断;如果106bit和51bit补码器13的输出结果Carry51=1而且sumpos1第57位为1,或者106bit和51bit补码器13的输出结果carry51=0而且sumpos的第57比特为1,那么CLOSE路径的乘加结果为负数,否则为正数;
57bit LOD编码器20对57bit LZA 8输出的f进行编码,编码后得到一个6比特结果S1[5:0],并输出到58bit移位器23中用来控制移位的位数;
109bit选择器21根据57bit符号检测器19输出的符号以及carry51和carry51C进行选择,输出109bit的结果数据;如果为正数且carry51=0,那么选择输出结果为sumpos和MUL_res的低51比特,如果为正数且carry51=1,那么选择输出结果为sumpos1和MUL_res的低51比特,如果为负数且carry51C=0,那么选择输出结果为suminv和MUL51C的结果,如果为负数且carry51C=1,那么选择输出结果为suminv1和MUL51C的结果;
51bitLOD编码器22对109bit选择器21输出的109bit结果数据的低51bit进行编码,得到首1的位置的一个5bit数据S2[5:0];
58bit移位器23进行最多58bit的移位;当109bit选择器21输出的109bit结果数据的高58bit存在1个‘1’时,根据57bit LOD编码器20的编码结果S1[5:0]进行移位,如果109bit结果数据的高58bit全部为0,则根据51bitLOD编码器22的编码结果S2[5:0]进行移位,得到1个58bit的移位结果sumnorm,以及低位的舍入位sticky_close;
55bit对齐移位器24选择106bit全加器和51bit补码器13输出的乘法结果MUL_res或者第三选择器15输出的结果,根据d或-d的值进行向右最多55bit的对齐移位;当d≤0时,对第三选择器15输出的结果,根据-d的值进行最多55bit右移位,直接输出MUL_res,当d>0时,对MUL_res根据d的值进行最多55bit对齐移位,并直接输出第三选择器15的结果;55bit对齐移位器24输出2组106bit的数据,其中一组对应着操作数A×B对齐后的结果,一组对应着操作数C对齐后的结果;
在55bit对齐移位器24进行右对齐移位的同时,舍入sticky计算单元25对移位后移出106bit位置的数据进行sticky运算,当移出的数据不全为0时,FAR_sticky=1,否则FAR_sticky=0;
取反器26,对55bit对齐移位器24输出的2个106比特的数据进行取反,当d≤0且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当d>0时且做有效减法时对A×B对齐后的结果进行取反;其他情况不取反;
107bitHA单元27对取反器26输出的2个106比特数据进行半加运算,为后续的舍入操作做准备;
1bit规格化单元28对107bitHA单元27的输出2个106bit结果进行1bit的左移,只当107bitHA单元27输出的2个结果的最高2位都为0时,向左移位1位,否则不移位;
d=0和d=1的符号处理单元29对CLOSE路径中d=0和d=1时的符号根据57bit的符号检测器19的结果做进一步的判断处理;当57bi t符号检测器19输出结果是负数时,CLOSE路径输出的符号是操作数C的符号,当57bit符号检测器19输出结果位正数时,CLOSE路径输出的符号时操作数A×B的符号。
步骤S400,在第四拍中,对CLOSE和FAR通路分别进行舍入操作,然后通过选择得到最后的结果。
指数计算单元30根据CLOSE路径中规格化移位的位数以及FAR路径中规格化移位的位数进行指数的运算;CLOSE路径的指数结果为A×B的指数减去CLOSE规格化移位的位数(为58bit移位器19移位的位数加上舍入后移位的位数),FAR路径中,当d≤0时为A×B的指数减去FAR路径舍入移位的位数再减去1bit规格化单元24移位的位数,当d>0时为C的指数减去FAR路径输入移位的位数再减去1bit规格化单元24移位的位数。
CLOSE舍入和规格化单元31对CLOSE的路径的58bit结果进行舍入和规格化,由于57bitLZA 8有1bit的误差,会使的规格化少移1位,而且由于57bitLZA 8没有计算carry51和carry51C的值,所以也有可能多移1位,所以CLOSE舍入和规格化单元31根据舍入的结果进行左移1位或者右移1位;
51bit双全加器32根据1bit规格化单元28输出的FAR_norm1和FAR_norm2计算FAR_norm1+FAR_norm2和FAR_norm1+FAR_norm2+1的值,所得到的FAR_norm1+FAR_norm2记为res0,FAR_norm1+FAR_norm2+1记为res1,并将得到的res0和res1输出到53比特选择器34中;
FAR舍入和进位单元33根据处理器的舍入模式对FAR_norm1和FAR_norm2的低55比特的数据做舍入操作,如果有舍入进位,则cin=1,否则没有舍入进位,则cin=0,并且给出高4bit的结果L4[3:0];
53bit选择器34根据FAR舍入和进位单元33输出的c in和res 0和res1的最高2bit进行选择处理;如果cin=1,有进位选择,那么选择res1,再根据res1的最高两bit进行选择,如果res1最高位为1那么res1和L4[3:2]组成53比特数据,如果最高两bit为01,那么res1舍掉最高的0和L4[3:1]组成53比特数据,而如果最高两bit为00,那么res1舍掉最高两位00和L4[3:0]组成53bit的数据,当cin=0时,没有进位选择,那么选择res0,再根据res0的最高两bit进行选择,选择的过程和选res1的情况是相同的;
64比特选择器35根据FAR和CLOSE的判断,选择FAR路径的数据还是CLOSE路径的数据;当d=0或者d=1或者d=2或者d=-1,且做有效减法时,选择CLOSE路径的结果,反之选择FAR路径的结果。
本发明实施例的优点在于:利用双通路中CLOSE和FAR通路的互斥性使得大规模的对齐移位和大规模的规格化不会共存在同一个运算通路中,并且对FAR路径进行进一步分为2种情况,并利用了1个51比特和55比特的对齐移位器对两种情况进行移位,从而缩短了浮点乘加器的时延;
本发明实施的64比特双精度双通路浮点乘加器浮点运算流水节拍处理方法,在第一拍只对乘法进行操作,所以在加法运算是可以把第一拍旁路,从而使得单独的浮点加法指令的运算减少了一个流水节拍,而且在运行加法指令时可以使得第一拍中的27∶2的乘法压缩树不翻转,从而降低浮点加法指令运算的功耗;
本发明实施例的64比特双精度双通路浮点乘加器及其浮点运算流水节拍处理方法,利用2个通路进行浮点乘加运算,在每次操作中两个通路不同时进行计算,所以对每次操作可以只使能一个通路从而达到降低功耗的目的。
作为一种可实现方式,在本实施例中,以(A×B)+C表示一个乘加操作进一步详细说明本发明实施例的64比特双精度双通路浮点乘加器及其浮点运算流水节拍处理方法的过程。
在第一个流水节拍中,利用基四的波茨编码器3和27∶2的乘法压缩树4来计算A×B的结果,将B的尾数经过基4的波茨编码,得到27个编码结果,编码结果与A相乘,得到27个部分积,最后采用1个压缩比为27∶2的乘法压缩树4,同时压缩27个部分积和操作数C取反移位后的结果,得1个“和”及1个“进位”,标记为sum,carry。
在本实施例中,如图1所示,当只有乘法和乘加指令执行时,操作数A和操作数B的才输入到存储器A和B中,否则当只做加法指令时存储器A和B保持不变,操作数A存储到存储器A1中。通过增加一个存储操作数A的存储器A1,能够在做单纯的浮点加法对使得波茨编码和27∶2的乘法树不翻转,从而降低了浮点加法指令执行的功耗。
在执行浮点加法指令时第一个流水节拍是被旁路的,如图1所示,操作数C旁路第一个流水节拍的存储器直接输入到第二个流水节拍中,操作数A也是由存储器A1直接旁路到第二个流水节拍的。
在第二个流水节拍中,用2个选择器来选择是否对第一个流水节拍的乘法结果sum和carry或者对直接从第一个流水节拍旁路的A1的值的尾数部分进行操作。由于浮点加法直接从第二个流水节拍开始计算,完全不经过第一个流水节拍,所以第二拍也需要一个第二符号处理单元和第二指数处理单元。在第二个流水节拍进行了流水控制的操作,浮点加法指令相对于浮点乘法和浮点乘加指令来说优先使用第二拍的硬件资源。
本实施例的实现方式,根据浮点乘加器中CLOSE和FAR路径的互斥性,对每个操作利用时钟门控单元只使能一个通路的时钟,达到另一个通路不翻转的目的,从而能够降低浮点乘加器运算的功耗。
如图2所示,当一个浮点乘加指令后紧跟着一个浮点加法指令时,当浮点乘加指令完成第一个流水节拍并存储到P1级的触发器后,浮点加法指令也由旁路通路进入浮点乘加器的第二个流水节拍。这时浮点乘加指令和浮点加法指令出现了硬件竞争,由于浮点加法指令优先使用第二个流水节拍的硬件,所以这时要保留浮点乘加指令的第一个流水节拍P1级的触发器的值,以免丢失所运行的浮点乘加指令。在本发明中利用浮点加法指令的指示信号来控制第一个流水节拍P1级触发器的值。当第二个流水节拍正在执行浮点加法指令时,第一个流水节拍P1级触发器的使能为0,使得P1级触发器保存原来的结果。通过这样的流水节拍的控制使得浮点乘加器每拍能够执行1条指令,而不会发生流水节拍的停滞。
从第二个流水节拍开始,浮点乘加的通路开始分为CLOSE和FAR路径。当d=0,或d=1,或d=2,或d=-1,且做有限减法时,乘加运算通过CLOSE路径进行计算,否则乘加运算通过FAR路径进行计算。
在CLOSE路径中只对操作数C进行移位,根据d的值进行左移或者右移,然后取反,利用3∶2CSA压缩再相加。也就是说在CLOSE通路中只计算A×B-C的值,当C>A×B时这个计算结果有可能是负数,所以在CLOSE通路中要利用取反全加器来计算A×B-C的补码。由于CLOSE路径中,A×B和C的值比较接近,所以做减法后可能会出现结果高位出现多位0(正数)或者多位1(负数)的情况。在这种情况下,为了降低时延采用LZA来预测减法结果首位0或者1的个数,然后再利用首尾0或者1的个数来指导规格化移位。由于准确的LZA需要校正并且增加很大的延迟,所以本发明实施例采用非精确的LZA来预测首尾0或者1的个数,LZA的预测结果比准确结果小1或等于准确结果,这就使得移位后可能比准确结果少移1位的情况出现。在本发明实施例中的浮点乘加器中由于只对高57bit进行预测,少加了一个carry51或者carry51C位,可能会出现多预测1位的情况。
在CLOSE路径中为了降低延迟做减法时,只对操作数C进行了取反。为了得到操作数C的补码,操作数C的取反需要在尾数加1。这个1利用57bit 3∶2CSA压缩树结果中‘进位’的空槽来加入。
对于FAR路径中,只对操作数C在d≤0时进行51比特移位,并利用106bit全加器得到乘法的结果。这样,对操作数C在d≤0时就分为两个步骤进行移位,降低了第二拍的延迟。而且单个乘法结果移位只需要1个移位器,移位器的个数的减少降低了面积开销。
在第二个流水节拍计算完成后进入的第二拍P2的存储器,对于CLOSE和FAR路径是完全分开的,所以利用了CLOSE和FAR的指示信号对流水节拍的存储器的时钟进行控制。当d=0,或d=1,或d=2,或d=-1,且做有效减法时,CLOSE的指示信号为1,FAR的指示信号为0,其他情况下CLOSE的指示信号为0,FAR的指示信号为1。CLOSE的指示信号用来对ClOSE路径的存储器单元进行控制,当CLOSE的指示信号为1时开启CLOSE路径的存储器单元的时钟,否则关闭CLOSE路径的存储器单元的时钟。FAR的指示信号用来对FAR通路的存储器单元进行控制,当FAR的指示信号为1时开启FAR通路的存储器单元的时钟,否则则关闭FAR通路的存储器单元的时钟。利用这些时钟门控单元使得只有1条路径的存储器和组合逻辑翻转,从而降低了浮点乘加器的功耗。
在第三个流水节拍中,CLOSE和FAR路径时完全分开的2条通路。
在CLOSE通路中把第二流水节拍得到的首0个数预测得到的序列f进行编码,得到一个5比特数据S1。同时利用57bit双全加器的最高位进行符号判断,当A×B-C的值为正数时,选择57bit双全加器的结果和乘法结果的低51bit,当A×B-C的值为负时,选择51bit取补双全加器的结果和乘法结果低51bit的补码。然后对这个109bit的结果进行移位,如果高位存在1个‘1’那么利用S1[5:0]进行移位,否则则利用低51bit的编码结果S2[5:0]进行移位,得到1个58bit的结果。由LZA预测不准确性,可能出现多移1位或者少移1位的情况,为了避免把首位1移出,采用把57bit扩充一位的方法,采用58bit移位器来进行移位。在多移1位时,首位1不会移出而是移到58bit的最高位中。
FAR路径中,当d≤0时操作数C小于等于A×B的值,根据-d的值对C的尾数进行最多55bit的右移操作,如果做有效减法需要对移位后数据取反,所以d≤0时计算的是A×B±C的值而且结果一定为正。当d>0是对乘法结果根据d做最多55bit的右移操作,计算的结果是C±A×B而且结果一定为正。进行移位后得到2个106bit的数据,这两个106bit的数据进行最高位扩充1bit进入107bitHA(半加运算)。107bitHA使得低55bit在各种舍入模式时只有1bit的向高51bit的进位。由于A×B的尾数有可能首位为0,如果减去某个数可能得到高2位都为0的情况,这种情况需要对指数减2。为了在FAR通路中统一指数为或者加1或者减1或者不变,在106bit HA之后如果2个106bit的数的高2位都为0,需要向左移1位,使得相加结果的最高位或者次高位为1。
和第二个流水节拍相同,也利用CLOSE和FAR的指示信号对P3级存储器进行时钟门控,以达到降低浮点乘加器的功耗的目的。
在第四个流水节拍中,利用第三流水节拍得到CLOSE的高58bit数据进行舍入和舍入后规格化,由于LZA的不准确性,规格化最多向左或者向右移1位。对于FAR通路的107bit的数据,对高51bit做加法,得到2个结果res0和res1,同时对FAR_norm1和FAR_norm2的低56比特进行舍入并得到一个进位符号cin和低4bit数据,然后用cin来选择res0和res1,并相应的选择低4bit的值,从而得到最后乘加的尾数结果res。对FAR通路来说结果也只需最多向左1或者向右移1位,所以CLOSE和FAR路径中共用了一个指数计算单元。
本发明实施中的浮点乘加器是符合IEEE754标准的双精度浮点乘加器,是采用不同方法的改进型双精度双通路的浮点乘加器,一方面利用双通路的规格化和对齐移位不会同时存在于CLOSE和FAR路径的特点和利用小规模的对齐移位器,降低了乘加器的时延,另一方面采用共用移位器的方法,来减少移位器的数目,从而降低乘加器的面积开销。相应地,本发明实施还提供一种64比特双精度双通路浮点乘加器浮点运算流水节拍处理方法,其按照时序划分为四个流水节拍,利用这种流水节拍处理方法可以把第一拍的乘法操作旁路使得浮点加法指令降低了一个流水节拍,并给出了旁路第一拍操作的流水控制方法,使得整个浮点乘加器的每个节拍仍然可以运行一条指令,而不会导致流水节拍的停滞,并且在运行浮点加法指令的过程中使得第一拍中的乘法树不翻转,从而降低了浮点加法指令的功耗。
最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
Claims (10)
1.一种64比特双精度双通路浮点乘加器,实现形式为(A×B)+C的浮点乘加运算,其特征在于,包括第一指数处理单元和第一符号处理单元和第二指数处理单元、第二符号处理单元、指数以及符号选择器;
所述第一指数处理单元,用于计算浮点乘加和浮点乘法运算时的指数差;
所述第一符号处理单元,用于判断浮点乘加运算和浮点乘法运算结果的符号以及是否做有效减法;
所述第二指数处理单元,用于对只做加法操作时操作数的指数进行处理;
所述第二符号处理单元,用于对只作加法操作时操作数的符号进行处理;
所述指数以及符号选择器,用于选择第一指数处理单元和第一符号处理单元的结果,或者选择第二指数处理单元和第二符号处理单元的结果;并判断指数差,当指数差等于0、或者等于1、或者等于2、或者等于-1,且做有效减法时,通过CLOSE路径进行运算,否则通过FAR路径进行运算。
2.根据权利要求1所述的浮点乘加器,其特征在于,其按照时序划分为4个流水节拍,根据顺序对4个流水节拍进行功能划分,在第一流水节拍中,除包括所述第一指数处理单元、所述第一符号处理单元外,还包括基4的波茨编码器、27:2的乘法压缩树,其中:
所述基4的波茨编码器,用于对操作数B的尾数进行编码,然后将编码的结果与操作数A的尾数相乘得到27个部分积,所述27个部分积送到所述27:2的乘法压缩树中;
所述27:2的乘法压缩树,用于对操作数A×B的所述27个部分积进行压缩得到两个标记为carry,sum的106比特数据。
3.根据权利要求2所述的浮点乘加器,其特征在于,在第二个流水节拍中,除包括所述第二符号处理单元、所述第二指数处理单元、所述指数以及符号选择器外,还包括3bit的对齐移位器、INV取反单元、57bit3:2CSA压缩树、57bit LZA、57bit双全加器、57bit取反全加器、第一选择器、第二选择器、106比特全加器和51比特补码器、51比特对齐移位器、第三选择器,其中:
所述3bit的对齐移位器,用于对操作数C的53比特尾数,根据指数差d的值进行移位;
所述INV取反单元,用于对所述3bit的对齐移位器的56比特数据进行取反并将其扩充1位符号位得到57bit的数据;所述数据sum和carry的高56bit也高位扩充1位符号位0得到57bit的数据,将这3组57bit的数据输入到所述57bit3:2CSA压缩树;
所述57bit 3:2 CSA压缩树,用于对所述INV取反单元输出的3组57bit的数据进行压缩,得到2个57bit带符号的结果;
所述57bit LZA,用于对所述57 bit 3:2 CSA压缩树输出的2个带符号的结果进行首0或者首1的预测,预测结果用一个序列表示,该序列标记为f;如果所述57bit的LZA的2个输入数据相加为正数,那么f输出的是首0的位置,如果所述57bit的LZA的2个输入数据相加为负数,那么f输出的是首1的位置;
所述57bit双全加器,用于对所述57bit 3:2 CSA压缩树的2个57bit结果进行相加,输出这两个输入相加的结果,标记为sumpos,以及这两个输入相加再加1的结果,标记为sumpos1;
所述57bit取反双全加器,用于对所述57bit 3:2 CSA压缩树的2个57bit结果先取反再相加,输出取反后相加的结果,标记为suminv,以及相加再加1的结果,标记为suminv1;
所述第一选择器,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出操作数A的尾数,否则输出所述乘法的结果的sum_sel;
所述第二选择器,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出数据0值,否则输出所述乘法结果的carry_sel;
所述106bit全加器和51bit补码器,用于对所述第一选择器和所述第二选择器输出的2个106比特的结果sum_sel和carry_sel进行相加并对低51比特进行取补,输出一个106比特乘法结果,标记为MUL_res,低51比特取补的结果标记为MUL51C,1位低51比特的进位,标记位carry51,1位51比特取补后的进位结果,标记为carry51C,其中MUL51C、carry51、carry51C和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于FAR路径中;
所述51比特对齐移位器,用于对操作数C的尾数根据所述指数差-d的值进行最多51bit右移操作,得到104比特的结果;
所述第三选择器,用于对所述51比特对齐移位器的输出以及操作数C进行选择,当指数差d≤0时选择所述51比特对齐移位器的输出;当指数差d>0时直接输出操作数C。
4.根据权利要求3所述的浮点乘加器,其特征在于,在第三个流水节拍中,包括57bit符号检测器、57bitLOD编码器、109bit选择器、51bitLOD编码器、58bit移位器、55bit对齐移位器、舍入sticky计算单元、取反器、107bitHA、1bit规格化单元、d=0和d=1的符号处理单元,其中:
所述57bit符号检测器,用于根据所述57比特双全加器输出结果sumpos和sumpos1第57位进行符号判断;
所述57bit LOD编码器,用于对所述57bit LZA输出的所述序列f进行编码,编码后得到一个6比特结果S1[5:0],并输出到所述58bit移位器中用来控制移位的位数;
所述109bit选择器,用于根据所述57bit符号检测器输出的符号以carry51和carry51C进行选择,输出109bit的结果数据;
所述51bitLOD编码器,用于对所述109bit选择器输出的109bit结果数据的低51bit进行编码,得到首1的位置的一个5bit数据S2[5:0];
所述58bit移位器,用于进行最多58bit的移位;
所述55bit对齐移位器,用于选择所述106bit全加器和51bit补码器输出的乘法结果MUL_res或者所述第三选择器输出的结果,根据所述指数差d或-d的值,进行向右最多55bit的对齐移位,当指数差d≤0时,对所述第三选择器输出的结果,根据指数差-d的值进行最多55bit右移位,直接输出MUL_res;当所述指数差d>0时,对MUL_res根据所述指数差d的值进行最多55bit对齐移位,并直接输出所述第三选择器的结果,所述55bit对齐移位器输出2组106bit的数据,其中一组对应着操作数A×B对齐后的结果,一组对应着操作数C对齐后的结果;
所述舍入sticky计算单元,用于对移位后移出106bit位置的数据进行sticky运算,当移出的数据不全为0时,FAR_sticky=1,否则FAR_sticky=0;
所述取反器,用于对所述55bit对齐移位器输出的2个106比特的数据进行取反,当指数差d≤0且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当指数差d>0时且做有效减法时对操作数A×B对齐后的结果进行取反;否则不取反;
所述107bitHA单元,用于对所述取反器输出的2个106比特数据进行半加运算;
所述1bit规格化单元27,用于对所述107bitHA单元的输出2个106bit结果进行1bit的左移,只当所述107bitHA单元输出的2个结果的最高2位都为0时,向左移位1位,否则不移位;
所述d=0和d=1的符号处理单元,用于对CLOSE路径中指数差d=0和d=1时的符号,根据所述57bit的符号检测器的结果做进一步的判断处理。
5.根据权利要求4所述的浮点乘加器,其特征在于,在第四个流水节拍中,包括指数计算单元、CLOSE舍入和规格化单元、51bit双全加器、FAR舍入和进位单元、53bit选择器、64bit选择器,其中:
所述指数计算单元,用于根据CLOSE路径中规格化移位的位数以及FAR路径中规格化移位的位数进行指数的运算;
所述CLOSE舍入和规格化单元,用于对CLOSE的路径的58bit结果进行舍入和规格化;
所述51bit双全加器,用于根据所述1bit规格化单元输出的FAR_norm1和FAR_norm2计算FAR_norm1+FAR_norm2和FAR_norm1+FAR_norm2+1的值,所得到的FAR_norm1+FAR_norm2记为res0,FAR_norm1+FAR_norm2+1记为res1,并将得到的res0和res1输出到所述53比特选择器中;
所述FAR舍入和进位单元,用于根据处理器的舍入模式对FAR_norm1和FAR_norm2的低55比特的数据做舍入操作;如果有舍入进位,则cin=1;否则没有舍入进位,则cin=0,并且给出高4bit的结果L4[3:0];
所述53bit选择器,用于根据所述FAR舍入和进位单元输出的cin和res0和res1的最高2bit进行选择处理;
所述64比特选择器,用于根据FAR和CLOSE的判断,选择FAR路径的数据还是CLOSE路径的数据;当所述指数差d=0或者指数差d=1或者指数差d=2或者指数差d=-1,且做有效减法时,选择CLOSE路径的结果,否则选择FAR路径的结果。
6.一种64比特双精度双通路浮点乘加器浮点运算流水节拍处理方法,其特征在于,其操作过程按照时序划分为四个流水节拍,包括下列步骤:
步骤S100,在第一拍中,利用27:2的乘法压缩树计算操作数A×B的结果,并计算浮点乘加和浮点乘法运算的指数差d1和符号,同时进行浮点乘加和浮点乘法运算时的符号处理;
步骤S200,在第二拍中,计算单做浮点加法运算时的指数差d2和符号;当浮点乘加器做浮点乘加和浮点乘法运算时,指数差d为d1的值,;当只做浮点加法运算时,指数差d为d2的值;当d=0或者d=1或者d=2或者d=-1,而且做有效减法时,乘加运算通过CLOSE路径进行运算;否则乘加运算通过FAR路径进行运算;在CLOSE路径中,用一个57比特3:2CSA压缩树进行运算,同时预测CLOSE路径首0位置以及计算CLOSE的加法的结果;在FAR路径中,对操作数C进行51比特的对齐移位或者不移位,并利用全加器得到乘法结果以及乘法结果低51位的补码;
步骤S300,在第三拍中,在CLOSE路径中,首先对首0检测的结果进行编码,得到规格化左移的位数,同时根据57比特符号判断得到结果是否需要取补,然后再进行规格化移位;在FAR路径中,首先对乘法结果或者在第二拍中操作数C的结果进行55比特的移位,然后取反,并进行半加运算以及1bit的规格化;
步骤S400,在第四拍中,对CLOSE路径和FAR路径分别进行舍入操作,然后通过选择得到最后的结果。
7.根据权利要求6所述的浮点运算流水节拍处理方法,其特征在于,所述步骤S100包括下列步骤:
第一指数处理单元根据操作数A的指数,B的指数和C的指数计算指数差d=exp(C)-(exp(A)+exp(B)-1023)的值以及符号;
利用第一符号处理单元判断,如果操作数C的符号位和操作数A×B的符号位不同,那么尾数计算做有效减法即sub_eff为真,然后根据所述第一指数处理单元中指数差d1的符号来判断最后结果的符号;
基4的波茨编码器对操作数B的尾数进行编码,然后将编码的结果与操作数A的尾数相乘得到27个部分积,这27个部分积送到27:2的乘法压缩树中;
所述27:2的乘法压缩树对操作数A×B的27个部分积进行压缩得到两个标记为carry,sum的106比特数据。
8.根据权利要求6所述的浮点运算流水节拍处理方法,其特征在于,所述步骤S200包括下列步骤:
3bit的对齐移位器对操作数C的53比特尾数根据指数差d的值进行移位;当d=0时没有移位,当d=1时向左移1位,当d=2时向左移2位,当d=-1时向右移1位,得到1个56比特的数据;
INV取反单元对3bit的对齐移位器的56比特数据进行取反;
INV取反单元输出的结果为56bit,高位扩充1位符号位1得到57bit的数据,sum和carry的高56bit也高位扩充1位符号位0得到57bit的数据,这3组57bit的数据输入到57bit 3:2 CSA压缩树中进行压缩得到2个57bit带符号的结果;
57bitLZA对所述57bit 3:2 CSA压缩数输出的2个带符号的结果进行首0或者首1的预测,预测结果用一个序列表示,该序列标记为f,如果所述57bit LZA的2个输入数据相加为正数,那么f给出的是首0的位置,如果所述57bit LZA的2个输入数据相加为负数,那么f给出的是首1的位置;
57bit双全加器对所述57bit 3:2 CSA压缩树的2个57bit结果进行相加,给出这两个输入相加的结果,标记为sumpos,以及这两个输入相加再加1的结果,标记为sumpos1;
57bit取补双全加器对所述57bit 3:2 CSA压缩树的2个57bit结果先取反再相加,给出取反后相加的结果,标记为suminv,以及相加再加1的结果,标记为suminv1;
第一选择器在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出操作数A的位数,否则输出乘法的结果的sum_sel;
第二选择器在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出数据0值,否则输出乘法结果的carry_sel;
106bit全加器和51bit补码器对第一选择器和第二选择器输出的2个106比特的结果sum_sel和carry_sel进行相加并对低51比特进行取补,输出一个比特乘法结果,标记106为MUL_res,低51比特取补的结果标记为MUL51C,1位低51比特的进位标记位carry51,1位51比特取补后的进位结果,标记为carry51C,其中MUL51C、carry51、carry51C和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于FAR路径中;
51比特对齐移位器对操作数C的尾数,根据指数差-d的值进行最多51bit右移操作,得到104比特的结果;
第三选择器对所述51比特对齐移位器的输出以及操作数C进行选择,当指数差d≤0时选择所述51比特对齐移位器的输出,当指数差d>0时直接输出操作数C;
第二指数处理单元对只做加法操作时指数进行处理;
第二符号处理单元对只作加法操作时的符号进行处理;
指数以及符号选择器在当做浮点乘法和浮点乘加运算时,选择第一指数处理单元和第一符号处理单元的结果;当只作浮点加法运算时选择第二指数处理单元和第二符号处理单元的结果;并判断指数差d,当指数差d=0、或者d=1、或者d=2、或者d=-1,且做有效减法时,通过CLOSE路径进行运算,否则通过FAR路径进行运算。
9.根据权利要求6所述的浮点运算流水节拍处理方法,其特征在于,所述步骤S300包括下列步骤:
57bit符号检测器根据所述57比特双全加器输出结果sumpos和sumpos1第57位进行符号判断;如果所述106bit全加器和51bit补码器的输出结果carry51=1而且sumpos1第57位为1,或者所述106bit全加器和51bit补码器的输出结果carry51=0而且sumpos的第57比特为1,那么CLOSE路径的乘加结果为负数,否则为正数;
57bit LOD编码器对所述57bit LZA输出的序列f进行编码,编码后得到一个6比特结果S1[5:0],并输出到58bit移位器中用来控制移位的位数;
109bit选择器根据所述57bit符号检测器输出的符号以及carryC1和carryC进行选择,输出109bit的结果数据;如果为正数且carry51=0,那么选择输出结果为sumpos和MUL_res的低51比特,如果为正数且carry51=1,那么选择输出结果为sumposl和MUL_res的低51比特,如果为负数且carry51C=0,那么选择输出结果为suminv和MUL51C的结果,如果为负数且carry51C=1,那么选择输出结果为suminv1和MUL51C的结果;
51bitLOD编码器对所述109bit选择器输出的109bit结果数据的低51bit进行编码,得到首1的位置的一个5bit数据S2[5:0];
58bit移位器进行最多58bit的移位;当109bit选择器输出的109bit结果数据的高58bit存在1个‘1’时,根据所述57bit LOD编码器的编码结果S1[5:0]进行移位,如果109bit结果数据的高58bit全部为0,则根据所述51bitLOD编码器的编码结果S2[5:0]进行移位,得到1个58bit的移位结果sumnorm,以及低位的舍入位sticky_close;
55bit对齐移位器选择所述106bit全加器和51bit补码器输出的乘法结果MUL_res或者所述第三选择器输出的结果,根据指数差d或-d的值进行向右最多55bit的对齐移位,当指数差d≤0时,对所述第三选择器输出的结果根据指数差-d的值进行最多55bit右移位,直接输出MUL_res,当指数差d>0时,对MUL_res根据指数差d的值进行最多55bit对齐移位,并直接输出所述第三选择器的结果,所述55bit对齐移位器输出2组106bit的数据,其中一组对应着操作数A×B对齐后的结果,一组对应着操作数C对齐后的结果;
在所述55bit对齐移位器进行右对齐移位的同时,舍入sticky计算单元对移位后移出106bit位置的数据进行sticky运算,当移出的数据不全为0时,FAR_sticky=1,否则FAR_sticky=0;
取反器对所述55bit对齐移位器输出的2个106比特的数据进行取反,当指数差d≤0且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当指数差d>0时且做有效减法时对操作数A×B对齐后的结果进行取反;否则不取反;
107bitHA单元对所述取反器输出的2个106比特数据进行半加运算;
1bit规格化单元对所述107bitHA单元的输出2个106bit结果进行1bit的左移,只当所述107bitHA单元输出的2个结果的最高2位都为0时,向左移位1位,否则不移位;
d=0和d=1的符号处理单元对CLOSE路径中指数差d=0和d=1时的符号根据所述57bit的符号检测器的结果做进一步的判断处理;当所述57bit符号检测器输出结果是负数时,CLOSE路径输出的符号是操作数C的符号,当所述57bit符号检测器输出结果位正数时,CLOSE路径输出的符号时操作数A×B的符号。
10.根据权利要求6至9任一项所述的浮点运算流水节拍处理方法,其特征在于,所述步骤S400包括下列步骤:
指数计算单元根据CLOSE路径中规格化移位的位数以及FAR路径中规格化移位的位数进行指数的运算;CLOSE路径的指数结果为A×B的指数减去CLOSE规格化移位的位数;FAR路径中,当指数差d≤0时为A×B的指数减去FAR路径舍入移位的位数再减去所述1bit规格化单元移位的位数,当d>0时为操作数C的指数减去FAR路径输入移位的位数再减去所述1bit规格化单元移位的位数;
CLOSE舍入和规格化单元对CLOSE的路径的58bit结果进行舍入和规格化,根据舍入的结果进行左移1位或者右移1位;
51bit双全加器根据所述1bit规格化单元输出的FAR_norm1和FAR_norm2计算FAR_norm1+FAR_norm2和FAR_norm1+FAR_norm2+1的值,所得到的FAR_norm1+FAR_norm2记为res0,FAR_norm1+FAR_norm2+1记为res1,并将得到的res0和res1输出到所述53比特选择器中;
FAR舍入和进位单元根据处理器的舍入模式对FAR_norm1和FAR_norm2的低55比特的数据做舍入操作,如果有舍入进位,则cin=1,否则没有舍入进位,则cin=0,并且给出高4bit的结果L4[3:0];
53bit选择器根据所述FAR舍入和进位单元输出的cin和res0和res1的最高2bit进行选择处理;如果cin=1,有进位选择,那么选择res1,再根据res1的最高两bit进行选择,如果res1最高位为1那么res1和L4[3:2]组成53比特数据,如果最高两bit为01,那么res1舍掉最高的0和L4[3:1]组成53比特数据,而如果最高两bit为00,那么res1舍掉最高两位00和L4[3:0]组成53bit的数据,当cin=0时,没有进位选择,那么选择res0,再根据res0的最高两bit进行选择;
64比特选择器根据FAR路径和CLOSE路径的判断,选择FAR路径的数据还是CLOSE路径的数据;当d=0或者d=1或者d=2或者d=-1,且做有效减法时,选择CLOSE路径的结果,否则选择FAR路径的结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100930476A CN101692202B (zh) | 2009-09-27 | 2009-09-27 | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100930476A CN101692202B (zh) | 2009-09-27 | 2009-09-27 | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101692202A true CN101692202A (zh) | 2010-04-07 |
CN101692202B CN101692202B (zh) | 2011-12-28 |
Family
ID=42080893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100930476A Active CN101692202B (zh) | 2009-09-27 | 2009-09-27 | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101692202B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102566967A (zh) * | 2011-12-15 | 2012-07-11 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
CN103645881A (zh) * | 2013-12-13 | 2014-03-19 | 广西科技大学 | 浮点数加/减运算执行控制器 |
CN105607889A (zh) * | 2015-10-29 | 2016-05-25 | 中国人民解放军国防科学技术大学 | Gpdsp共享乘法器结构的定点浮点运算部件 |
CN106528044A (zh) * | 2010-09-24 | 2017-03-22 | 英特尔公司 | 处理器、指令执行方法和计算系统 |
CN106970776A (zh) * | 2015-09-25 | 2017-07-21 | Arm 有限公司 | 用于浮点乘法运算的装置和方法 |
CN107340993A (zh) * | 2016-04-28 | 2017-11-10 | 北京中科寒武纪科技有限公司 | 一种支持较少位数浮点数的神经网络运算的装置和方法 |
CN108287681A (zh) * | 2018-02-14 | 2018-07-17 | 中国科学院电子学研究所 | 一种单精度浮点融合点乘运算单元 |
CN109032563A (zh) * | 2018-07-03 | 2018-12-18 | 中国人民解放军国防科技大学 | 一种加速桥接融合乘加的方法及装置 |
CN110140109A (zh) * | 2016-12-15 | 2019-08-16 | 优创半导体科技有限公司 | 具有嵌入式取整规则的浮点指令格式 |
CN110389746A (zh) * | 2019-07-29 | 2019-10-29 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及系统 |
CN111078292A (zh) * | 2018-10-18 | 2020-04-28 | 富士通株式会社 | 算术处理设备和控制算术处理设备的方法 |
CN111124361A (zh) * | 2018-10-31 | 2020-05-08 | 富士通株式会社 | 算术处理装置及其控制方法 |
CN112463113A (zh) * | 2020-12-02 | 2021-03-09 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
CN112988112A (zh) * | 2021-04-27 | 2021-06-18 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN113591031A (zh) * | 2021-09-30 | 2021-11-02 | 沐曦科技(北京)有限公司 | 低功耗矩阵运算方法及装置 |
-
2009
- 2009-09-27 CN CN2009100930476A patent/CN101692202B/zh active Active
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528044A (zh) * | 2010-09-24 | 2017-03-22 | 英特尔公司 | 处理器、指令执行方法和计算系统 |
CN102566967A (zh) * | 2011-12-15 | 2012-07-11 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
CN102566967B (zh) * | 2011-12-15 | 2015-08-19 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
CN103645881A (zh) * | 2013-12-13 | 2014-03-19 | 广西科技大学 | 浮点数加/减运算执行控制器 |
CN103645881B (zh) * | 2013-12-13 | 2016-08-24 | 广西科技大学 | 浮点数加/减运算执行控制器 |
CN106970776A (zh) * | 2015-09-25 | 2017-07-21 | Arm 有限公司 | 用于浮点乘法运算的装置和方法 |
CN106970776B (zh) * | 2015-09-25 | 2021-12-14 | Arm 有限公司 | 用于浮点乘法运算的装置和方法 |
CN105607889A (zh) * | 2015-10-29 | 2016-05-25 | 中国人民解放军国防科学技术大学 | Gpdsp共享乘法器结构的定点浮点运算部件 |
CN107340993A (zh) * | 2016-04-28 | 2017-11-10 | 北京中科寒武纪科技有限公司 | 一种支持较少位数浮点数的神经网络运算的装置和方法 |
CN107340993B (zh) * | 2016-04-28 | 2021-07-16 | 中科寒武纪科技股份有限公司 | 运算装置和方法 |
CN110140109A (zh) * | 2016-12-15 | 2019-08-16 | 优创半导体科技有限公司 | 具有嵌入式取整规则的浮点指令格式 |
CN108287681B (zh) * | 2018-02-14 | 2020-12-18 | 中国科学院电子学研究所 | 一种单精度浮点融合点乘运算装置 |
CN108287681A (zh) * | 2018-02-14 | 2018-07-17 | 中国科学院电子学研究所 | 一种单精度浮点融合点乘运算单元 |
CN109032563A (zh) * | 2018-07-03 | 2018-12-18 | 中国人民解放军国防科技大学 | 一种加速桥接融合乘加的方法及装置 |
CN109032563B (zh) * | 2018-07-03 | 2021-08-06 | 中国人民解放军国防科技大学 | 一种加速桥接融合乘加的方法及装置 |
CN111078292A (zh) * | 2018-10-18 | 2020-04-28 | 富士通株式会社 | 算术处理设备和控制算术处理设备的方法 |
CN111124361A (zh) * | 2018-10-31 | 2020-05-08 | 富士通株式会社 | 算术处理装置及其控制方法 |
CN110389746A (zh) * | 2019-07-29 | 2019-10-29 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及系统 |
CN110389746B (zh) * | 2019-07-29 | 2021-04-23 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及系统 |
CN112463113A (zh) * | 2020-12-02 | 2021-03-09 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
CN112988112A (zh) * | 2021-04-27 | 2021-06-18 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN112988112B (zh) * | 2021-04-27 | 2021-08-10 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN113591031A (zh) * | 2021-09-30 | 2021-11-02 | 沐曦科技(北京)有限公司 | 低功耗矩阵运算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101692202B (zh) | 2011-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101692202B (zh) | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 | |
CN106406810B (zh) | 微处理器及其方法 | |
KR101735677B1 (ko) | 부동 소수점의 복합 연산장치 및 그 연산방법 | |
US5631859A (en) | Floating point arithmetic unit having logic for quad precision arithmetic | |
CN101847087B (zh) | 一种支持定浮点可重构的横向求和网络结构 | |
Bruguera et al. | Floating-point fused multiply-add: reduced latency for floating-point addition | |
CN108287681A (zh) | 一种单精度浮点融合点乘运算单元 | |
CN100578443C (zh) | 一种x86体系结构的微处理器 | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
JPH11511579A (ja) | 浮動小数点処理装置のためのリザベーションステーション | |
CN105389157A (zh) | 基于Goldschmidt算法的浮点除法器 | |
CN102576302B (zh) | 微处理器及用于微处理器上增强精确度乘积和计算的方法 | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
CN104991757A (zh) | 一种浮点处理方法及浮点处理器 | |
CN101770355B (zh) | 兼容双精度和双单精度的浮点乘加器及其兼容处理方法 | |
Quinnell et al. | Bridge floating-point fused multiply-add design | |
CN100367191C (zh) | 一种快速流水线型除法器 | |
GB2423386A (en) | Performing a reciprocal operation on an input value to produce a result value | |
JP2000293494A (ja) | 並列計算装置および並列計算方法 | |
US20060031272A1 (en) | Alignment shifter supporting multiple precisions | |
EP0780759A1 (en) | Elimination of math overflow flag generation delay in an alu | |
Lahari et al. | BCD Approach Based High Performance Floating Point Multiplier for DSP Applications | |
CN116627379A (zh) | 可重构的支持多精度浮点或定点运算的方法及系统 | |
CN117724677A (zh) | 一种基于位融合方法的多精度浮点计算单元 | |
CN112243504A (zh) | 低功率加法器电路 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100012 No.10, south academy of Sciences Road, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |