一种64比特浮点乘加器及其浮点运算流水节拍处理方法

文档序号:6575587阅读:313来源:国知局
专利名称:一种64比特浮点乘加器及其浮点运算流水节拍处理方法
技术领域
本发明涉及微处理器技术领域,特别是涉及一种微处理器中的浮点乘加部件设计技术,尤其涉及到一种64比特浮点乘加器及其浮点运算流水节拍处理方法。
背景技术
为了达到浮点计算的高效率,在许多微处理器中使用一个浮点运算单元浮点乘加器来实现连续的浮点乘法和加法两个操作。浮点乘加器在一条指令中执行(AXB)+C的操作,并且只有一次舍入操作,从而提高了计算的精度。当把乘加指令中操作数C置为0时执行的是乘法指令,把操作数B置为1时,执行的是加法指令,所以浮点乘加器也可以用来做单独的乘法和单独的加法操作。 在微处理器中采用与浮点乘加运算相对应的浮点乘加部件,与单纯的浮点乘法器和浮点加法器相比,采用浮点乘加部件有以下两个好处 ①降低了用乘法器和全加器执行乘加指令的延迟。通常的微处理器中实现的浮点乘法是2 4拍,浮点加法2 3拍,而浮点乘加指令的延迟一般在3 5拍左右,可以看出一条浮点乘法指令接着一条浮点加法指令所需要的节拍数之和大于等于一条浮点乘加指令的执行节拍数,所以采用浮点乘加指令降低了先乘后加(乘加)的指令序列的延迟。 ②比乘法器和全加器的硬件开销之和要小,而且提高了乘加指令结果的精度。浮点乘加器只在AXB+C结束后做一次舍入(rounding)和规格化(normalization),而用浮
点乘法和浮点加法指令来实现浮点乘加指令时,需要先进行乘法的舍入和规格化,然后进行加法的舍入和规格化,要做两次舍入和规格化。只做一次舍入和规格化使得浮点乘加器硬件规模比浮点乘法器和浮点加法器之和的硬件规模要小一些。并且在浮点乘加器中,进行舍入的数据长度是161比特,提高了浮点运算的精度。 在已实现的多数处理器中,浮点乘加运算都是基于IBMRS/6000中的算法
改进, 一般通过以下步骤来实现(相关内容请见参考文献1 : Design of the IBM RISC
System/6000 floating-point execution unit, IBM journal of Research & Development, Vol.34,
pp.59-70, 1990,参考文献2 : Second-Generation RISC Floating Point w池Multiply-Add
Fused,正EE Journal of Solid state circuits, Vol.25, pp.l207-1213, 1990) 1、操作数AXB利用乘法压縮树进行压縮,得到carry(进位)和sum(和)两个
部分积。在进行乘法树压縮的同时,操作数C进行取反和对齐移位操作。 2、把对齐移位后的Cinv和AXB压縮后的carry和sum用压縮比为3 : 2的
161bitCSAtree压縮,得到两个部分积。把3 : 2CSA压縮后得到的两个部分积做161bit
加法运算,同时利用这两个部分积进行161bitLZA(Leading Zero Anticipator,首位0的个
数预测)得到加法结果的规格化左移的位数。 3、加法结果利用LZA预测的左移的位数进行规格化左移和舍入操作得到最终的计算结果。
为了降低浮点乘加器的时延,现有技术中提出了多种方案,例如规格化在最终的加法以及舍入之前的方法(参考文献3 : Floating-Point Multiply-Add-Fused with ReducedLatency),对运算根据指数差d分为5个路径的方案(参考文献4 : Multiple Path IEEEFloating-Point Fused Multiply-add, proc.of the 46th IEEE International Midwest Symposium onCircuits and Systems, pp.l359-1362, 2003)以及根据指数差分为3条路径的方法(参考文献5 : Floating-Point Fused Multiply-Add Architectures, Proceeding of the Fortieth AsilomarConference on Signals, Systems, and Computers, 2007),以及根据指数差分为2条路径FAR和CLOSE路径的方法C参考文献6 : Floating-Point Fused Multiply-Add : Reducedlatency for Floating-Point Addition, Proc.of 17th IEEE Symposium on Computer Arithmetic,pp.42-51, 2005)。参考文献6中,根据指数差提出的2条路径的方法,虽然相对于传统乘加器能够在一定程度上降低时延,但由于大规模(106bit)移位器的存在和舍入位计算的复杂使得FAR路径的时延成为瓶颈。参考文献5的3路径方法相对于2路径的方法能大规模的降低乘加器的时延,但同时由于通路的划分的复杂性,相对于2通路的方法增加了大量的面积开销。

发明内容
本发明的目的在于克服现有技术中的缺陷,为了在尽量少增加面积的前提下降低现有技术中乘加器时延而提供一种64比特浮点乘加器及其浮点运算流水节拍处理方法。 为实现本发明目的而提供的一种64比特浮点乘加器,实现形式为(AXB)+C的浮点乘加运算,其中 所述浮点乘加器,包括第一指数处理单元,用于计算浮点乘加和浮点乘法运算时的指数差;其根据操作数A的指数、操作数B的指数和操作数C的指数计算指数差dl=exp(A)-(exp(B)+exp(C)-1023)的值和符号; 所述浮点乘加器,还包括第一符号处理单元,用于判断浮点乘加运算和浮点乘法运算结果的符号以及是否做有效减法;如果操作数C的符号位和操作数AXB的符号位不同,那么尾数计算做有效减法,然后根据所述第一指数处理单元中所述指数差dl的符号来判断最后结果的符号; 所述浮点乘加器,还包括第二指数处理单元和第二符号处理单元,其中
所述第二指数处理单元,用于对只做加法操作时操作数的指数进行处理;当只做加法操作时,第一个流水节拍中的第一指数处理单元被旁路,使用第二指数处理单元进行指数处理,其根据操作数A的指数和操作数C的指数计算指数差d2的值以及符号,由于操作数B为1, d2的计算简化为d2 = exp(A)-exp(C); 所述第二符号处理单元,用于对只作加法操作时操作数的符号进行处理;如果操作数C的符号位和操作数A的符号位不同,那么尾数计算做有效减法,然后根据第二
指数处理单元中的所述指数差d2的符号来判断最后结果的符号; 指数以及符号选择器,用于选择第一指数处理单元和第一符号处理单元的结果,或者选择第二指数处理单元和第二符号处理单元的结果;当浮点乘加器做浮点乘加和浮点乘法运算时,指数差d为dl的值,且符号为第一符号处理单元的结果;当只做浮点加法运算时,指数差d为d2的值,且符号为第二符号处理单元的结果;并判断指数差
d,当(1 = 0或者(1= 1或者(1 = 2或者(1 = -1,而且做有效减法时,乘加运算通过CLOSE 路径进行运算;否则乘加运算通过FAR路径进行运算。 为实现本发明目的还提供一种64比特双精度双通路浮点乘加器浮点运算流水节 拍处理方法,其操作过程按照时序划分为四个流水节拍,包括下列步骤
步骤S100,在第一拍中,利用27 : 2的乘法压縮树计算操作数AXB的结果, 并计算浮点乘加和浮点乘法运算的指数差dl和符号,同时进行浮点乘加和浮点乘法运算 时的符号处理; 步骤S200,在第二拍中,计算单做浮点加法运算时的指数差d2和符号;当浮点 乘加器做浮点乘加和浮点乘法运算时,指数差d为dl的值,;当只做浮点加法运算时, 指数差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)以及lbit的规格化; 步骤S400,在第四拍中,对CLOSE路径和FAR路径分别进行舍入操作,然后
通过选择得到最后的结果。 本发明的优点在于 1、本发明的64比特双精度双通路浮点乘加器根据指数差d的范围划分为 CLOSE路径和FAR路径,CLOSE路径处理d = 0, d=l, d=2, d = -l且做有效减 法时的数据,其他情况都是在FAR路径中完成的,通过CLOSE和FAR路径的划分使得 大规模的规格化和大规模的对齐移位操作处在不同路径上,从而降低了时延。
2、为了降低64比特双精度双通路浮点乘加器的面积,CLOSE路径中直接用3 个全加器57bit双全加器、57bit取反全加器、106bit全加器和51bit补码器来代替传统浮 点乘加部件中的半加器,使得只需要对一个操作数进行对齐移位或者规格化移位,从而 达到减少所需的移位器的数目。由于移位器的面积比一个同比特的全加器的面积要大的 多,所以这样会降低乘加器的面积。 3、在CLOSE路径和FAR路径中尽量复用移位器来降低面积开销。在CLOSE 路径中,只需要一个58bit的移位器来进行规格化,比传统的161bit规格化的面积要小的 多。在FAR路径中,根据指数差d的符号分为两类路径, 一个是d幼, 一个是dX)。 当d幼时要对操作数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-57bit3 : 2CSA压縮树8-57bit LZA9-57bit双全加器10-57bit取反双全加器11-第一选择器12-第二选择器13-106bit全加器和51bit补码器14-51比特对齐移位器15-第三选择器16-第二符号处理单元17-第二指数处理单元18-指数以及符号选择器19-57bit符号检测器20-57bitLOD编码器21-109bit选择器22-5 lbit LOD编码器23-58bit移位器24-55bit对齐移位器25-舍入sticky计算单元26-取反器27-107bitHA28-lbit规格化单元29-d = 0和d = 1的符号处理单元30-指数计算单元31-CLOSE舍入和规格化单元32-5 lbit双全加器33-FAR舍入和进位单元34-53bit选择器35-64bit选择器
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施 例,对本发明的64比特浮点乘加器及其浮点运算流水节拍处理方法进行进一步详细说 明。应当理解,此处所描述的具体实施例仅仅用以解释本发明而不是对本发明的限制。
本发明实施例的64比特浮点乘加器及其浮点运算流水节拍处理方法,实现形式 为(AXB)+C的浮点乘加运算。 本发明实施例中的64比特浮点乘加器,是改进型的双精度双通路的64比特浮点 乘加器,其根据乘法和加法的指数差分成2条通路, 一路是CLOSE路径, 一路是FAR路径。 下面详细说明本发明实施例的64比特浮点乘加器,作为一种可实施方式,其可 以按照时序划分为4个流水节拍,根据顺序对4个流水节拍进行功能划分,如图1所示, 其中
在第一个流水节拍中,包括第一指数处理单元l、第一符号处理单元2、基4的 波茨编码器3、 27 : 2的乘法压縮树4,其中 第一指数处理单元l,用于计算浮点乘加和浮点乘法运算时的指数差dl ;
其根据操作数A的指数、B的指数和C的指数计算指数差dl = exp(C)-(exp(A)+exp(B)-1023)的值以及符号; 第一符号处理单元2,用于判断浮点乘加运算和浮点乘法运算结果的符号以及是 否做有效减法; 如果C的符号位和AXB的符号位不同,那么尾数计算做有效减法即sub_effl为 真,然后根据第一指数处理单元1中指数差dl的符号来判断最后结果的符号;
基4的波茨编码器3,用于对操作数B的尾数进行编码,然后将编码的结果与操 作数A的尾数相乘得到27个部分积,这27个部分积送到27 : 2的乘法压縮树4中;
27 : 2的乘法压縮树4,用于对操作数AXB的27个部分积进行压縮得到两个 "和"及"进位",标记为carry, sum的106比特数据。 在第二个流水节拍中,包括3bit的对齐移位器5、 INV取反单元6、 57bit 3 : 2CSA压縮树7、 57bitLZA8、 57bit双全加器9、 57bit取反全加器10、第一选择器 11、第二选择器12、 106比特全加器和51比特补码器13、 51比特对齐移位器14、第三选 择器15、第二符号处理单元16、第二指数处理单元17,指数以及符号选择器18其中
第二指数处理单元17,用于对只做加法操作时操作数的指数进行处理;
当只做加法操作时,第一个流水节拍中的第一指数处理单元l被旁路,使用第 二指数处理单元17进行指数处理,其根据操作数A的指数和操作数C的指数计算指数差 d2的值及符号,由于操作数B为1,指数差d2的计算简化为为2二exp(A)-exp(C);
第二符号处理单元16,用于对只作加法操作时操作数的符号进行处理;
如果操作数C的符号位和操作数A的符号位不同,那么尾数计算做有效减法即 sub_efG为真,然后根据第二指数处理单元16中d2的符号来判断最后结果的符号。
指数以及符号选择器18,用于在第一个流水节拍的第一指数处理单元1和第一 符号处理单元2的结果,以及第二个流水节拍的第二指数处理单元17和第二符号处理单 元16的结果之间进行选择;当做浮点乘法和浮点乘加运算时,指数以及符号选择器18选 择第一指数处理单元1和第一符号处理单元2的结果,即指数差d为dl的值,且符号为 第一符号处理单元2的结果;当只作浮点加法运算时选择第二指数处理单元17和第二符 号处理单元16的结果,即指数差为d2的值,且符号为第二符号处理单元的结果;并判断 指数差d是否等于O, d是否等于l, d是否等于2和d是否等于-l ;当指数差(1 = 0、或 者d = 1、或者d = 2、或者d = -1,且做有效减法时(sub_eff = 1,即sub_eff为真),通 过CLOSE路径进行运算,否则通过FAR路径进行运算; 其中,sub—eff的值为sub—effl或sub—eff2,当指数以及符号选择器18,选择第一 个流水节拍的指数处理单元和符号处理单元的结果时,sub_eff的值为sub_effl ;当指数 以及符号选择器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的数据输 入到57bit3 : 2CSA压縮树7中进行压縮得到2个57bit带符号的结果,由于对操作数C 进行做减法,操作数C经过INV取反单元6后还需要再加1才得到操作数C的补码,这 个1放在57bit3 : 2CSA压縮数7结果的"进位"结果中; 57bitLZA8(Leading Zero Anticipator),用于对57bit3 : 2CSA压縮树7输出的2 个带符号的结果进行首0或者首1的预测,预测结果用一个序列表示,该序列标记为f, 如果57bitLZA8的2个输入数据相加为正数,那么f给出的是首0的位置,如果57bitLZA 8的2个输入数据相加为负数,那么f给出的是首1的位置,57bit LZA 8位于CLOSE路 径中; 57bit双全加器9,用于对57bit3 : 2CSA压縮树7的2个57bit结果进行相加, 输出这两个输入相加的结果,标记为sum,,以及这两个输入相加再加1的结果,标记为 sump。sl, 57bit双全加器9位于CLOSE路径中; 57bit取补双全加器10,用于对57bit3 : 2CSA压縮树7的2个57bit结果先 取反再相加,输出取反后相加的结果,标记为sum^,以及相加再加l的结果,标记为 summvl, 57bit取反双全加器10位于CLOSE路径中; 第一选择器ll,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加 法时直接输出操作数A的尾数,否则输出乘法的结果的sum」el ; 第二选择器12,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加 法时直接输出数据0值,否则则输出乘法结果的carry」el ; 106bit全加器和51bit补码器13,用于对第一选择器11和第二选择器12输出的2 个106比特的结果sum_sel和carry_sel进行相加并对低51比特进行取补,输出一个106 比特乘法结果,标记为MUL—res,低51比特取补的结果标记为MUL51C, 1位低51比特 的进位标记位carry51, 1位51比特取补后的进位结果,标记为carry5ic,其中MUL51C、 carry51、 carry5ic和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于 FAR路径中; 51比特对齐移位器14,用于对操作数C的尾数根据指数差-d的值进行最多51bit 右移操作,得到104比特的结果,51比特对齐移位器14位于FAR路径中;
第三选择器15,用于对51比特对齐移位器14的输出以及操作数C进行选择; 当ck0时选择51比特对齐移位器14的输出,当dX)时直接输出操作数C,第三选择器 15位于 路径中; 在第三个流水节拍中,包括57bit符号检测器19、 57bitLOD编码器20、 109bit 选择器21、 51bitLOD编码器22、 58bit移位器23、 55bit对齐移位器24、舍入sticky计算 单元25、取反器26、 107bitHA 27、 lbit规格化单元28、 d = 0和d = 1的符号处理单元 29,其中
57bit符号检测器19,用于根据57比特双全加器9输出结果sum,禾Psump。d第57 位进行符号判断;如果106bit全加器和51bit补码器13的输出结果Carry51 = 1而且sump。sl 第57位为1,或者106bit全加器和51bit补码器13的输出结果carry51 = 0而且sump。s的 第57比特为1,那么CLOSE路径的乘加结果为负数,否则为正数;
57bitLOD编码器20,用于对57bit LZA 8输出的f进行编码,编码后得到一个6 比特结果Sl[5:0],并输出到58bit移位器23中用来控制移位的位数;
109bit选择器21,用于根据57bit符号检测器19输出的符号以及Carry51和Carry5ic 进行选择,输出109bit的结果数据;如果为正数且carry^ = 0,那么选择输出结果为 sump。s和MUL_res的低51比特,如果为正数且carry51 = 1 ,那么选择输出结果为sump。sl和 MUL—res的低51比特,如果为负数且carry5ic = 0,那么选择输出结果为sum,和MUL51C 的结果,如果为负数且carry^二 1,那么选择输出结果为summvl和MUL51C的结果;
51bitLOD编码器22,用于对109bit选择器21输出的109bit结果数据的低51bit 进行编码,得到首1的位置的一个5bit数据S2[5:0]; 58bit移位器23,用于进行最多58bit的移位;当109bit选择器21输出的109bit 结果数据的高58bit存在l个'l'时,根据57bitLOD编码器20的编码结果Sl[5:0]进行 移位,如果109bit结果数据的高58bit全部为0,则根据51bitLOD编码器22的编码结果 S2[5:0]进行移位,得到1个58bit的移位结果sumnOTm,以及低位的舍入位sticky_close ;
55bit对齐移位器24,用于选择106bit全加器和51bit补码器13输出的乘法结果 MUL_res或者第三选择器15输出的结果,根据指数差d或-d的值进行向右最多55bit的对 齐移位;当d幼时,对第三选择器15输出的结果,根据-d的值进行最多55bit右移位, 直接输出MUL—res;当dX)时,对MUL_res根据d的值进行最多55bit对齐移位,并直 接输出第三选择器15的结果,55bit对齐移位器24输出2组106bit的数据,其中一组对 应着操作数AXB对齐后的结果, 一组对应着操作数C对齐后的结果;
舍入sticky计算单元25,用于在55bit对齐移位器24进行右对齐移位的同时,对 移位后移出106bit位置的数据进行sticky运算,当移出的数据不全为0时,FAR_sticky = 1,否则FAR_sticky = 0 ; 取反器26,用于对55bit对齐移位器24输出的2个106比特的数据进行取反,当 d幼且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当d > 0时且做有效 减法时对AXB对齐后的结果进行取反;其他情况不取反; 107bitHA单元27,用于对取反器26输出的2个106比特数据进行半加运算,为 后续的舍入操作做准备; lbit规格化单元28,用于对107bitHA单元27的输出2个106bit结果进行lbit的 左移,只当107bitHA单元27输出的2个结果的最高2位都为0时,向左移位1位,否则 不移位; d = 0禾P d = 1的符号处理单元29,用于对CLOSE通路中d = 0禾P d = 1时的 符号根据57bit符号检测器19的结果做进一步的判断处理;当57bit符号检测器19输出结 果是负数时,CLOSE路径输出的符号是操作数C的符号,当57bit符号检测器19输出结 果位正数时,CLOSE路径输出的符号时操作数AXB的符号。在第四个流水节拍中,包括指数计算单元30、 CLOSE舍入和规格化单元31、51bit双全加器32、 FAR舍入和进位单元33、 53bit选择器34、 64bit选择器35,其中
指数计算单元30 ,用于根据CLOSE路径中规格化移位的位数以及FAR路径中规 格化移位的位数进行指数的运算;CLOSE路径的指数结果为AXB的指数减去CLOSE规 格化移位的位数(为58bit移位器19移位的位数加上舍入后移位的位数);FAR路径中, 当d幼时为AXB的指数减去FAR路径舍入移位的位数再减去lbit规格化单元24移位的 位数,当d > 0时为操作数C的指数减去FAR路径输入移位的位数再减去lbit规格化单 元24移位的位数。 CLOSE舍入和规格化单元31,用于对CLOSE的路径的58bit结果进行舍入和规 格化;由于57bitLZA 8有lbit的误差,会使的规格化少移1位,而且由于57bitLZA 8没 有计算Carry51和Carry51c;的值,所以也有可能多移1位,所以CLOSE舍入和规格化单元 31根据舍入的结果进行左移1位或者右移1位; 5 lbit双全加器32,用于根据lbit规格化单元28输出的FAR_norml和FAR_ norm2计算FAR_norml+FAR_norm2和FAR_norml+FAR_norm2+l的值,所得到的FAR_ norml+FAR_norm2记为res 0, FAR_norml+FAR_norm2+l记为resl,并将得到的res0和 resl输出到53比特选择器34中; FAR舍入和进位单元33,用于根据处理器的舍入模式对FAR_norml和FAR_ norm2的低55比特的数据做舍入操作,如果有舍入进位,则cin = 1,否则没有舍入进 位,则cin = 0,并且给出高4bit的结果L4[3:0]; 53bit选择器34,用于根据FAR舍入和进位单元33输出的cin和res0和resl的 最高2bit进行选择处理;如果cin二l,有进位选择,那么选择resl,再根据resl的最高 两bit进行选择,如果resl最高位为1那么resl和L4[3:2]组成53比特数据,如果最高两 bit为01,那么resl舍掉最高的0和L4[3:l]组成53比特数据,而如果最高两bit为00, 那么resl舍掉最高两位00和L4[3:0]组成53bit的数据,当cin二0时,没有进位选择,那 么选择resO,再根据resO的最高两bit进行选择,选择的过程和选resl的情况是相同的;
64比特选择器35,用于根据FAR和CLOSE的判断来选择FAR路径的数据还是 CLOSE路径的数据;当d = 0或者d = 1或者d = 2或者d = -1,而且做有效减法时, 选择CLOSE路径的结果,否则选择FAR通路的结果。 本发明实施例中的64比特双精度双通路浮点乘加器,其根据乘法和加法的指数 差分成2条通路, 一路是CLOSE路径, 一路是FAR路径。FAR路径又根据指数差的符 号分为两类, 一类是操作数C的指数大于操作数AXB的指数,另一种是操作数C的指数 小于等于操作数AXB的指数,CLOSE通路只包含58bit的规格化移位器,而FAR通路 只包含一个51bit对齐移位器和1个55bit对齐移位器,利用规格化和对齐移位不会同时存 在FAR和CLOSE运算路径中的特点,来降低浮点乘加器的延迟等。 与本发明的64比特双精度双通路浮点乘加器相应,本发明还提供一种64比特双 精度双通路浮点乘加器浮点运算流水节拍处理方法,其操作过程按照时序划分为四个流 水节拍,包括下列步骤 步骤SIOO,在第一拍中,利用27 : 2的乘法压縮树计算操作数AXB的结果, 并计算浮点乘加和浮点乘法运算的指数差dl和符号,同时进行浮点乘加和浮点乘法运算 时的符号处理;
第一指数处理单元1根据操作数A的指数,B的指数和C的指数计算dl = exp(C)-(exp(A)+exp(B)-1023)的值以及符号;利用第一符号处理单元2判断,如果操作数C的符号位和AXB的符号位不同, 那么尾数计算做有效减法即sub_effl为真,然后根据第一指数处理单元1中dl的符号来 判断最后结果的符号; 基4的波茨编码器3对操作数B的尾数进行编码,然后将编码的结果与操作数A 的尾数相乘得到27个部分积,这27个部分积送到27 : 2的乘法压縮树4中;
27 : 2的乘法压縮树4对AXB的27个部分积进行压縮得到两个"和"及"进 位",标记为carry, sum的106比特数据。 步骤S200,在第二拍中,计算单做浮点加法运算时的指数差d2和符号;当浮点 乘加器做浮点乘加和浮点乘法运算时,指数差d为dl的值,;当只做浮点加法运算时, 指数差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二l时向左移l位,当d二2时向左移2位,当d二-l时向 右移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,如果57bitLZA8的2个输入数 据相加为正数,那么f给出的是首0的位置,如果57bitLZA8的2个输入数据相加为负 数,那么f给出的是首l的位置; 57bit双全加器9对57bit3 : 2CSA压縮树7的2个57bit结果进行相加,给出这两 个输入相加的结果,标记为sum,,以及这两个输入相加再加1的结果,标记为sum,。
57bit取补双全加器10对57bit 3 : 2CSA压縮树7的2个57bit结果先取反再相 加,给出取反后相加的结果,标记为sum,,以及相加再加l的结果,标记为sum,。
第一选择器11在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直 接输出操作数A的尾数,否则则输出乘法的结果的sum」el ; 第二选择器12在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直 接输出数据0值,否则则输出乘法结果的carry」el ; 106bit全加器和51bit补码器13对第一选择器11和第二选择器12输出的2个 106比特的结果sum_sel和carry_sel进行相加并对低51比特进行取补,输出出一个106比特乘法结果,标记为MUL—res,低51比特取补的结果标记为MUL51C, 1位低51比特 的进位标记位carry51, 1位51比特取补后的进位结果,标记为carry5ic,其中MUL51C、 carry51、 carry5ic和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于 FAR路径中; 51比特对齐移位器14对操作数C的尾数,根据指数差-d的值进行最多51bit右
移操作,得到104比特的结果,51比特对齐移位器位于FAR路径中;第三选择器15对51比特对齐移位器14的输出以及操作数C进行选择,当ckO
时选择51比特对齐移位器14的输出,当d > 0时直接输出操作数C ; 第二指数处理单元17对只做加法操作时操作数的指数进行处理;当只做加法操
作时,第一个流水节拍中的第一指数处理单元l被旁路,使用第二指数处理单元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为dl的值,且符号为第 一符号处理单元2的结果;当只作浮点加法运算时选择第二指数处理单元17和第二符号 处理单元16的结果,即指数差为d2的值,且符号为第二符号处理单元的结果;并判断指 数差d是否等于0, d是否等于l, d是否等于2和d是否等于-l ;当指数差(1 = 0、或者 d = 1、或者d = 2、或者d = -1,且做有效减法时(即sub_eff = 1,即sub_eff为真), 通过CLOSE路径进行运算,否则通过FAR路径进行运算; 其中,sub—eff的值为sub—effl或sub—eff2,当指数以及符号选择器18,选择第一 个流水节拍的指数处理单元和符号处理单元的结果时,sub_eff的值为sub_effl ;当指数 以及符号选择器18,选择第二个流水节拍的指数处理单元和符号处理单元的结果时sub_ eff2。 步骤S300,在第三拍中,在CLOSE路径中,首先对首0检测的结果进行编码, 得到规格化左移的位数,同时根据57比特符号判断得到结果是否需要取补,然后再进行 规格化移位首先对乘法结果或者在第二拍中操作数C的结果进行55比特的移位,然后取 反,并进行半加运算(HA)以及lbit的规格化; 57bit符号检测器19根据57比特双全加器9输出结果SUmp。s和sump。sl第57位进 行符号判断;如果106bit和51bit补码器13的输出结果Carry51 = 1而且sump。sl第57位 为1,或者106bit和51bit补码器13的输出结果carry51 = 0而且sump。s的第57比特为1, 那么CLOSE路径的乘加结果为负数,否则为正数; 57bit LOD编码器20对57bit LZA 8输出的f进行编码,编码后得到一个6比特 结果Sl[5:0],并输出到58bit移位器23中用来控制移位的位数; 109bit选择器21根据57bit符号检测器19输出的符号以及carry51和carry5ic进行选择,输出109bit的结果数据;如果为正数且carry^二0,那么选择输出结果为sump。s和MUL_res的低51比特,如果为正数且carry51 = 1,那么选择输出结果为sump。sl和MUL_res的低51比特,如果为负数且Carry51c = 0,那么选择输出结果为summv和MUL51C的结果,如果为负数且carry^二 1,那么选择输出结果为summvl和MUL51C的结果;
51bitLOD编码器22对109bit选择器21输出的109bit结果数据的低51bit进行编码,得到首1的位置的一个5bit数据S2[5:0]; 58bit移位器23进行最多58bit的移位;当109bit选择器21输出的109bit结果数据的高58bit存在l个'l'时,根据57bitLOD编码器20的编码结果Sl[5:0]进行移位,如果109bit结果数据的高58bit全部为0,则根据51bitL0D编码器22的编码结果S2[5:0]进行移位,得到1个58bit的移位结果sumnOTm,以及低位的舍入位sticky—close ;
55bit对齐移位器24选择106bit全加器和51bit补码器13输出的乘法结果MUL_res或者第三选择器15输出的结果,根据d或-d的值进行向右最多55bit的对齐移位;当ckO时,对第三选择器15输出的结果,根据-d的值进行最多55bit右移位,直接输出MUL_res,当d > 0时,对MUL_res根据d的值进行最多55bit对齐移位,并直接输出第三选择器15的结果;55bit对齐移位器24输出2组106bit的数据,其中一组对应着操作数AXB对齐后的结果, 一组对应着操作数C对齐后的结果; 在55bit对齐移位器24进行右对齐移位的同时,舍入sticky计算单元25对移位后移出106bit位置的数据进行sticky运算,当移出的数据不全为0时,FAR_sticky = 1,否则FAR_sticky = 0 ; 取反器26,对55bit对齐移位器24输出的2个106比特的数据进行取反,当ckO且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当d > 0时且做有效减法时对AXB对齐后的结果进行取反;其他情况不取反; 107bitHA单元27对取反器26输出的2个106比特数据进行半加运算,为后续的舍入操作做准备; lbit规格化单元28对107bitHA单元27的输出2个106bit结果进行lbit的左移,只当107bitHA单元27输出的2个结果的最高2位都为0时,向左移位1位,否则不移位; d = 0禾P d = 1的符号处理单元29对CLOSE路径中d = 0禾P d = 1时的符号根据57bit的符号检测器19的结果做进一步的判断处理;当57bi t符号检测器19输出结果是负数时,CLOSE路径输出的符号是操作数C的符号,当57bit符号检测器19输出结果位正数时,CLOSE路径输出的符号时操作数AXB的符号。 步骤S400,在第四拍中,对CLOSE和FAR通路分别进行舍入操作,然后通过选择得到最后的结果。 指数计算单元30根据CLOSE路径中规格化移位的位数以及FAR路径中规格化移位的位数进行指数的运算;CLOSE路径的指数结果为AXB的指数减去CLOSE规格化移位的位数(为58bit移位器19移位的位数加上舍入后移位的位数),FAR路径中,当d幼时为AXB的指数减去FAR路径舍入移位的位数再减去lbit规格化单元24移位的位数,当d > 0时为C的指数减去FAR路径输入移位的位数再减去lbit规格化单元24移位的位数。
CLOSE舍入和规格化单元31对CLOSE的路径的58bit结果进行舍入和规格化,由于57bitLZA 8有lbit的误差,会使的规格化少移1位,而且由于57bitLZA 8没有计算carry51和Carry5ic的值,所以也有可能多移1位,所以CLOSE舍入和规格化单元31根据舍入的结果进行左移1位或者右移1位; 51bit双全加器32根据lbit规格化单元28输出的FAR_norml和FAR_norm2计算FAR_norml+FAR_norm2和FAR_norml+FAR_norm2+l的值,所得到的FAR_norml+FAR_norm2记为resO, FAR_norml+FAR_norm2+l记为resl,并将得到的res0和resl输出到53
比特选择器34中; FAR舍入和进位单元33根据处理器的舍入模式对FAR_norml和FAR_norm2的低55比特的数据做舍入操作,如果有舍入进位,则cin二l,否则没有舍入进位,则cin=0,并且给出高4bit的结果L4[3:0]; 53bit选择器34根据FAR舍入和进位单元33输出的c in和res 0和resl的最高2bit进行选择处理;如果cin二l,有进位选择,那么选择resl,再根据resl的最高两bit进行选择,如果resl最高位为1那么resl和L4[3:2]组成53比特数据,如果最高两bit为01,那么resl舍掉最高的0和L4[3:l]组成53比特数据,而如果最高两bit为00,那么resl舍掉最高两位00和L4[3:0]组成53bit的数据,当cin = 0时,没有进位选择,那么选择resO,再根据resO的最高两bit进行选择,选择的过程和选resl的情况是相同的;
64比特选择器35根据FAR和CLOSE的判断,选择FAR路径的数据还是CLOSE路径的数据;当(1 = 0或者(1=1或者(1 = 2或者(1 = -1,且做有效减法时,选择CLOSE路径的结果,反之选择FAR路径的结果。 本发明实施例的优点在于利用双通路中CLOSE和FAR通路的互斥性使得大规模的对齐移位和大规模的规格化不会共存在同一个运算通路中,并且对FAR路径进行进一步分为2种情况,并利用了 1个51比特和55比特的对齐移位器对两种情况进行移位,从而縮短了浮点乘加器的时延; 本发明实施的64比特双精度双通路浮点乘加器浮点运算流水节拍处理方法,在第一拍只对乘法进行操作,所以在加法运算是可以把第一拍旁路,从而使得单独的浮点加法指令的运算减少了一个流水节拍,而且在运行加法指令时可以使得第一拍中的27 : 2的乘法压縮树不翻转,从而降低浮点加法指令运算的功耗; 本发明实施例的64比特双精度双通路浮点乘加器及其浮点运算流水节拍处理方法,利用2个通路进行浮点乘加运算,在每次操作中两个通路不同时进行计算,所以对每次操作可以只使能一个通路从而达到降低功耗的目的。 作为一种可实现方式,在本实施例中,以(AXB)+C表示一个乘加操作进一步详细说明本发明实施例的64比特双精度双通路浮点乘加器及其浮点运算流水节拍处理方法的过程。 在第一个流水节拍中,利用基四的波茨编码器3和27 : 2的乘法压縮树4来计算AXB的结果,将B的尾数经过基4的波茨编码,得到27个编码结果,编码结果与A相乘,得到27个部分积,最后采用1个压縮比为27 : 2的乘法压縮树4,同时压縮27个部分积和操作数C取反移位后的结果,得l个"和"及l个"进位",标记为sum,carry o
在本实施例中,如图1所示,当只有乘法和乘加指令执行时,操作数A和操作数B的才输入到存储器A和B中,否则当只做加法指令时存储器A和B保持不变,操作数A存储到存储器Al中。通过增加一个存储操作数A的存储器Al,能够在做单纯的浮点加法对使得波茨编码和27 : 2的乘法树不翻转,从而降低了浮点加法指令执行的功耗。
在执行浮点加法指令时第一个流水节拍是被旁路的,如图1所示,操作数C旁路第一个流水节拍的存储器直接输入到第二个流水节拍中,操作数A也是由存储器Al直接旁路到第二个流水节拍的。 在第二个流水节拍中,用2个选择器来选择是否对第一个流水节拍的乘法结果sum和carry或者对直接从第一个流水节拍旁路的Al的值的尾数部分进行操作。由于浮点加法直接从第二个流水节拍开始计算,完全不经过第一个流水节拍,所以第二拍也需要一个第二符号处理单元和第二指数处理单元。在第二个流水节拍进行了流水控制的操作,浮点加法指令相对于浮点乘法和浮点乘加指令来说优先使用第二拍的硬件资源。
本实施例的实现方式,根据浮点乘加器中CLOSE和FAR路径的互斥性,对每个操作利用时钟门控单元只使能一个通路的时钟,达到另一个通路不翻转的目的,从而能够降低浮点乘加器运算的功耗。 如图2所示,当一个浮点乘加指令后紧跟着一个浮点加法指令时,当浮点乘加指令完成第一个流水节拍并存储到PI级的触发器后,浮点加法指令也由旁路通路进入浮点乘加器的第二个流水节拍。这时浮点乘加指令和浮点加法指令出现了硬件竞争,由于浮点加法指令优先使用第二个流水节拍的硬件,所以这时要保留浮点乘加指令的第一个流水节拍P1级的触发器的值,以免丢失所运行的浮点乘加指令。在本发明中利用浮点加法指令的指示信号来控制第一个流水节拍PI级触发器的值。当第二个流水节拍正在执行浮点加法指令时,第一个流水节拍P1级触发器的使能为0,使得Pl级触发器保存原来的结果。通过这样的流水节拍的控制使得浮点乘加器每拍能够执行l条指令,而不会发生流水节拍的停滞。 从第二个流水节拍开始,浮点乘加的通路开始分为CLOSE和FAR路径。当d=0,或(1=1,或(1 = 2,或(1 = -1,且做有限减法时,乘加运算通过CLOSE路径进行计算,否则乘加运算通过FAR路径进行计算。 在CLOSE路径中只对操作数C进行移位,根据d的值进行左移或者右移,然后取反,利用3 : 2CSA压縮再相加。也就是说在CLOSE通路中只计算AXB-C的值,当C > AXB时这个计算结果有可能是负数,所以在CLOSE通路中要利用取反全加器来计算AXB-C的补码。由于CLOSE路径中,AXB和C的值比较接近,所以做减法后可能会出现结果高位出现多位0(正数)或者多位1(负数)的情况。在这种情况下,为了降低时延采用LZA来预测减法结果首位0或者1的个数,然后再利用首尾0或者1的个数来指导规格化移位。由于准确的LZA需要校正并且增加很大的延迟,所以本发明实施例采用非精确的LZA来预测首尾0或者1的个数,LZA的预测结果比准确结果小1或等于准确结果,这就使得移位后可能比准确结果少移l位的情况出现。在本发明实施例中的浮点乘加器中由于只对高57bit进行预测,少加了一个carry51或者carry^位,可能会出现多预测1位的情况。在CLOSE路径中为了降低延迟做减法时,只对操作数C进行了取反。为了得到操作数C的补码,操作数C的取反需要在尾数加1。这个l利用57bit3 : 2CSA压縮树结果中'进位'的空槽来加入。 对于FAR路径中,只对操作数C在ck0时进行51比特移位,并利用106bit全加
器得到乘法的结果。这样,对操作数C在d幼时就分为两个步骤进行移位,降低了第二拍的延迟。而且单个乘法结果移位只需要l个移位器,移位器的个数的减少降低了面积开销。 在第二个流水节拍计算完成后进入的第二拍P2的存储器,对于CLOSE和FAR路径是完全分开的,所以利用了 CLOSE和FAR的指示信号对流水节拍的存储器的时钟进行控制。当(1 = 0,或(1=1,或(1 = 2,或(1 = -1,且做有效减法时,CLOSE的指示信号为l, FAR的指示信号为O,其他情况下CLOSE的指示信号为0, FAR的指示信号为1 。 CLOSE的指示信号用来对C10SE路径的存储器单元进行控制,当CLOSE的指示信号为1时开启CLOSE路径的存储器单元的时钟,否则关闭CLOSE路径的存储器单元的时钟。FAR的指示信号用来对FAR通路的存储器单元进行控制,当FAR的指示信号为1时开启FAR通路的存储器单元的时钟,否则则关闭FAR通路的存储器单元的时钟。利用这些时钟门控单元使得只有1条路径的存储器和组合逻辑翻转,从而降低了浮点乘加器的功耗。在第三个流水节拍中,CLOSE和FAR路径时完全分开的2条通路。
在CLOSE通路中把第二流水节拍得到的首0个数预测得到的序列f进行编码,得到一个5比特数据S1。同时利用57bit双全加器的最高位进行符号判断,当AXB-C的值为正数时,选择57bit双全加器的结果和乘法结果的低51bit,当AXB-C的值为负时,选择51bit取补双全加器的结果和乘法结果低51bit的补码。然后对这个109bit的结果进行移位,如果高位存在l个'l'那么利用Sl[5:0]进行移位,否则则利用低51bit的编码结果S2[5:0]进行移位,得到1个58bit的结果。由LZA预测不准确性,可能出现多移l位或者少移l位的情况,为了避免把首位l移出,采用把57bit扩充一位的方法,采用58bit移位器来进行移位。在多移1位时,首位1不会移出而是移到58bit的最高位中。
FAR路径中,当d幼时操作数C小于等于AXB的值,根据-d的值对C的尾数进行最多55bit的右移操作,如果做有效减法需要对移位后数据取反,所以d《0时计算的是AXB士C的值而且结果一定为正。当d > 0是对乘法结果根据d做最多55bit的右移操作,计算的结果是C士AXB而且结果一定为正。进行移位后得到2个106bit的数据,这两个106bit的数据进行最高位扩充lbit进入107bitHA(半加运算)。107bitHA使得低55bit在各种舍入模式时只有lbit的向高51bit的进位。由于AXB的尾数有可能首位为0,如果减去某个数可能得到高2位都为0的情况,这种情况需要对指数减2。为了在FAR通路中统一指数为或者加1或者减1或者不变,在106bitHA之后如果2个106bit的数的高2位都为0,需要向左移l位,使得相加结果的最高位或者次高位为1。
和第二个流水节拍相同,也利用CLOSE和FAR的指示信号对P3级存储器进行时钟门控,以达到降低浮点乘加器的功耗的目的。 在第四个流水节拍中,利用第三流水节拍得到CLOSE的高58bit数据进行舍入和舍入后规格化,由于LZA的不准确性,规格化最多向左或者向右移l位。对于FAR通路的107bit的数据,对高51bit做加法,得到2个结果res0和resl,同时对FAR_norml和15/15页
FAR_norm2的低56比特进行舍入并得到一个进位符号cin和低4bit数据,然后用cin来 选择resO和resl,并相应的选择低4bit的值,从而得到最后乘加的尾数结果res。对FAR 通路来说结果也只需最多向左1或者向右移1位,所以CLOSE和FAR路径中共用了一个 指数计算单元。 本发明实施中的浮点乘加器是符合IEEE754标准的双精度浮点乘加器,是采用 不同方法的改进型双精度双通路的浮点乘加器, 一方面利用双通路的规格化和对齐移位 不会同时存在于CLOSE和FAR路径的特点和利用小规模的对齐移位器,降低了乘加器的 时延,另一方面采用共用移位器的方法,来减少移位器的数目,从而降低乘加器的面积 开销。相应地,本发明实施还提供一种64比特双精度双通路浮点乘加器浮点运算流水节 拍处理方法,其按照时序划分为四个流水节拍,利用这种流水节拍处理方法可以把第一 拍的乘法操作旁路使得浮点加法指令降低了一个流水节拍,并给出了旁路第一拍操作的 流水控制方法,使得整个浮点乘加器的每个节拍仍然可以运行一条指令,而不会导致流 水节拍的停滞,并且在运行浮点加法指令的过程中使得第一拍中的乘法树不翻转,从而 降低了浮点加法指令的功耗。 最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和 变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权 利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
权利要求
一种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的乘法压縮树,用于对操作数AXB的所述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 或者首l的预测,预测结果用一个序列表示,该序列标记为f;如果所述57bit的LZA的 2个输入数据相加为正数,那么f输出的是首0的位置,如果所述57bit的LZA的2个输 入数据相加为负数,那么f输出的是首1的位置;所述57bit双全加器,用于对所述57bit 3:2 CSA压縮树的2个57bit结果进行相加, 输出这两个输入相加的结果,标记为sum,,以及这两个输入相加再加1的结果,标记为 sumposl ;所述57bit取反双全加器,用于对所述57bit 3:2 CSA压縮树的2个57bit结果先取反再 相加,输出取反后相加的结果,标记为sum,,以及相加再加l的结果,标记为sum,。所述第一选择器,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法 时直接输出操作数A的尾数,否则输出所述乘法的结果的sum」el ;所述第二选择器,用于在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法 时直接输出数据0值,否则输出所述乘法结果的carry_Sel ;所述106bit全加器和51bit补码器,用于对所述第一选择器和所述第二选择器输出的 2个106比特的结果sum_sel和carry_sel进行相加并对低51比特进行取补,输出一个106 比特乘法结果,标记为MUL—res,低51比特取补的结果标记为MUL51C, 1位低51比特 的进位,标记位carry^, 1位51比特取补后的进位结果,标记为carry5ic,其中MUL51c、 carry51、 carry5ic和MUL_res的低51比特用于CLOSE路径中,而106比特乘法结果用于 FAR路径中;所述51比特对齐移位器,用于对操作数C的尾数根据所述指数差-d的值进行最多 51bit右移操作,得到104比特的结果;所述第三选择器,用于对所述51比特对齐移位器的输出以及操作数C进行选择,当 指数差ck0时选择所述51比特对齐移位器的输出;当指数差dX)时直接输出操作数C。
4.根据权利要求3所述的浮点乘加器,其特征在于,在第三个流水节拍中,包括 57bit符号检测器、57bitLOD编码器、109bit选择器、51bitLOD编码器、58bit移位器、 55bit对齐移位器、舍入sticky计算单元、取反器、107bitHA、 lbit规格化单元、d = 0禾口 d = 1的符号处理单元,其中所述57bit符号检测器,用于根据所述57比特双全加器输出结果sum,禾Psump。d第 57位进行符号判断;所述57bitLOD编码器,用于对所述57bitLZA输出的所述序列f进行编码,编码后 得到一个6比特结果S1[5:0],并输出到所述58bit移位器中用来控制移位的位数;所述109bit选择器,用于根据所述57bit符号检测器输出的符号以carry51和Carry5ic进 行选择,输出109bit的结果数据;所述51bitLOD编码器,用于对所述109bit选择器输出的109bit结果数据的低51bit进 行编码,得到首1的位置的一个5bit数据S2[5:0];所述58bit移位器,用于进行最多58bit的移位;所述55bit对齐移位器,用于选择所述106bit全加器和51bit补码器输出的乘法结果 MULjes或者所述第三选择器输出的结果,根据所述指数差d或-d的值,进行向右最多 55bit的对齐移位,当指数差d幼时,对所述第三选择器输出的结果,根据指数差-d的值 进行最多55bit右移位,直接输出MUL—res;当所述指数差dX)时,对MUL—res根据所 述指数差d的值进行最多55bit对齐移位,并直接输出所述第三选择器的结果,所述55bit 对齐移位器输出2组106bit的数据,其中一组对应着操作数AXB对齐后的结果, 一组对 应着操作数C对齐后的结果;所述舍入sticky计算单元,用于对移位后移出106bit位置的数据进行sticky运算,当 移出的数据不全为0时,FAR_sticky =1,否则FAR_sticky = 0 ;所述取反器,用于对所述55bit对齐移位器输出的2个106比特的数据进行取反,当指数差(kO且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当指数差(1>0时且做有效减法时对操作数AXB对齐后的结果进行取反;否则不取反;所述107bitHA单元,用于对所述取反器输出的2个106比特数据进行半加运算; 所述lbit规格化单元27,用于对所述107bitHA单元的输出2个106bit结果进行lbit的左移,只当所述107bitHA单元输出的2个结果的最高2位都为0时,向左移位1位,否则不移位;所述d = 0禾P d = 1的符号处理单元,用于对CLOSE路径中指数差d = 0禾P d = 1 时的符号,根据所述57bit的符号检测器的结果做进一步的判断处理。
5. 根据权利要求4所述的浮点乘加器,其特征在于,在第四个流水节拍中,包括指数 计算单元、CLOSE舍入和规格化单元、51bit双全加器、FAR舍入和进位单元、53bit选 择器、64bit选择器,其中所述指数计算单元,用于根据CLOSE路径中规格化移位的位数以及FAR路径中规格 化移位的位数进行指数的运算;所述CLOSE舍入和规格化单元,用于对CLOSE的路径的58bit结果进行舍入和规格化;所述51bit双全加器,用于根据所述lbit规格化单元输出的FAR_norml和FAR_ norm2计算FAR_norml+FAR_norm2和FAR_norml+FAR_norm2+l的值,所得到的FAR_ norml+FAR_norm2记为resO, FAR_norml+FAR_norm2+l记为resl,并将得到的res0和 resl输出到所述53比特选择器中;所述FAR舍入和进位单元,用于根据处理器的舍入模式对FAR_norml和FAR_norm2 的低55比特的数据做舍入操作;如果有舍入进位,则cin二l;否则没有舍入进位,则 cin = 0,并且给出高4bit的结果L4[3:0];所述53bit选择器,用于根据所述FAR舍入和进位单元输出的cin和resO和resl的最 高2bit进行选择处理;所述64比特选择器,用于根据FAR和CLOSE的判断,选择FAR路径的数据还是 CLOSE路径的数据;当所述指数差d = 0或者指数差d = 1或者指数差d = 2或者指数 差(1 = -1,且做有效减法时,选择CLOSE路径的结果,否则选择FAR路径的结果。
6. —种64比特双精度双 路浮点乘加器浮点运算流水节拍处理方法,其特征在于, 其操作过程按照时序划分为四个流水节拍,包括下列步骤步骤S100,在第一拍中,利用27:2的乘法压縮树计算操作数AXB的结果,并计算 浮点乘加和浮点乘法运算的指数差dl和符号,同时进行浮点乘加和浮点乘法运算时的符 号处理;步骤S200,在第二拍中,计算单做浮点加法运算时的指数差d2和符号;当浮点乘加 器做浮点乘加和浮点乘法运算时,指数差d为dl的值,;当只做浮点加法运算时,指数 差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路径中,首先对首O检测的结果进行编码,得到 规格化左移的位数,同时根据57比特符号判断得到结果是否需要取补,然后再进行规格 化移位;在FAR路径中,首先对乘法结果或者在第二拍中操作数C的结果进行55比特的 移位,然后取反,并进行半加运算以及lbit的规格化;步骤S400,在第四拍中,对CLOSE路径和FAR路径分别进行舍入操作,然后通过 选择得到最后的结果。
7. 根据权利要求6所述的浮点运算流水节拍处理方法,其特征在于,所述步骤SIOO 包括下列步骤第一指数处理单元根据操作数A的指数,B的指数和C的指数计算指数差d = exp(C)-(exp(A)+exp(B)-1023)的值以及符号;利用第一符号处理单元判断,如果操作数C的符号位和操作数AXB的符号位不同, 那么尾数计算做有效减法即sub—eff为真,然后根据所述第一指数处理单元中指数差dl的 符号来判断最后结果的符号;基4的波茨编码器对操作数B的尾数进行编码,然后将编码的结果与操作数A的尾 数相乘得到27个部分积,这27个部分积送到27:2的乘法压縮树中;所述27:2的乘法压縮树对操作数AXB的27个部分积进行压縮得到两个标记为 carry, sum的106比特数据。
8. 根据权利要求6所述的浮点运算流水节拍处理方法,其特征在于,所述步骤S200 包括下列步骤3bit的对齐移位器对操作数C的53比特尾数根据指数差d的值进行移位;当d = 0 时没有移位,当(1=1时向左移1位,当(1 = 2时向左移2位,当(1 = -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给出的是首O的位置,如果所述57bitLZA的2个输入数据相加为负 数,那么f给出的是首l的位置;57bit双全加器对所述57bit 3:2 CSA压縮树的2个57bit结果进行相加,给出这两个输 入相加的结果,标记为sum,,以及这两个输入相加再加1的结果,标记为sum,。57bit取补双全加器对所述57bit 3:2 CSA压縮树的2个57bit结果先取反再相加,给出 取反后相加的结果,标记为summv,以及相加再加1的结果,标记为summvl ;第一选择器在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出 操作数A的位数,否则输出乘法的结果的sum_sel ;第二选择器在只做浮点加法时对乘法的结果进行旁路,当只做浮点加法时直接输出 数据0值,否则输出乘法结果的carry_Sel ;106bit全加器和51bit补码器对第一选择器和第二选择器输出的2个106比特的结果sum—sel和carry—sel进行相加并对低51比特进行取补,输出一个比特乘法结果,标记106 为MUL—res,低51比特取补的结果标记为MUL51c, l位低51比特的进位标记位carry51, 1位51比特取补后的进位结果,标记为carry^,其中MUL51c、 carry51、 carry5ic和MUL_ res的低51比特用于CLOSE路径中,而106比特乘法结果用于FAR路径中;51比特对齐移位器对操作数C的尾数,根据指数差-d的值进行最多51bit右移操作, 得到104比特的结果;第三选择器对所述51比特对齐移位器的输出以及操作数C进行选择,当指数差d幼 时选择所述51比特对齐移位器的输出,当指数差d > 0时直接输出操作数C ;第二指数处理单元对只做加法操作时指数进行处理;第二符号处理单元对只作加法操作时的符号进行处理;指数以及符号选择器在当做浮点乘法和浮点乘加运算时,选择第一指数处理单元和 第一符号处理单元的结果;当只作浮点加法运算时选择第二指数处理单元和第二符号处 理单元的结果;并判断指数差d,当指数差(1 = 0、或者(1=1、或者(1=2、或者d二-l, 且做有效减法时,通过CLOSE路径进行运算,否则通过FAR路径进行运算。
9.根据权利要求6所述的浮点运算流水节拍处理方法,其特征在于,所述步骤S300 包括下列步骤57bit符号检测器根据所述57比特双全加器输出结果sump。s和sump。sl第57位进行符 号判断;如果所述106bit全加器和51bit补码器的输出结果carry51 = 1而且sump。sl第57 位为1,或者所述106bit全加器和51bit补码器的输出结果carry51 = 0而且sump。s的第57 比特为l,那么CLOSE路径的乘加结果为负数,否则为正数;57bit LOD编码器对所述57bit LZA输出的序列f进行编码,编码后得到一个6比特结 果Sl[5:0],并输出到58bit移位器中用来控制移位的位数;109bit选择器根据所述57bit符号检测器输出的符号以及carrycl和Carryc进行选择, 输出109bit的结果数据;如果为正数且carry^ = 0,那么选择输出结果为sump。s和MUL_ res的低51比特,如果为正数且carry51 = 1,那么选择输出结果为sump。sl和MUL_res的 低51比特,如果为负数且Carry51c = 0,那么选择输出结果为summv和MUL51C的结果, 如果为负数且carry51c = 1,那么选择输出结果为summvl和MUL51C的结果;51bitLOD编码器对所述109bit选择器输出的109bit结果数据的低51bit进行编码,得 到首1的位置的一个5bit数据S2[5:0];58bit移位器进行最多58bit的移位;当109bit选择器输出的109bit结果数据的高58bit 存在l个'l'时,根据所述57bitLOD编码器的编码结果Sl[5:0]进行移位,如果109bit 结果数据的高58bit全部为0,则根据所述51bitLOD编码器的编码结果S2[5:0]进行移位, 得到1个58bit的移位结果sumn。m,以及低位的舍入位sticky_close ;55bit对齐移位器选择所述106bit全加器和51bit补码器输出的乘法结果MUL—res或者 所述第三选择器输出的结果,根据指数差d或-d的值进行向右最多55bit的对齐移位,当 指数差d幼时,对所述第三选择器输出的结果根据指数差-d的值进行最多55bit右移位, 直接输出MUL_res,当指数差d > 0时,对MUL_res根据指数差d的值进行最多55bit对 齐移位,并直接输出所述第三选择器的结果,所述55bit对齐移位器输出2组106bit的数 据,其中一组对应着操作数AXB对齐后的结果, 一组对应着操作数C对齐后的结果;在所述55bit对齐移位器进行右对齐移位的同时,舍入sticky计算单元对移位后移出 106bit位置的数据进行sticky运算,当移出的数据不全为O时,FAR_sticky = 1,否则 FAR_sticky = 0 ;取反器对所述55bit对齐移位器输出的2个106比特的数据进行取反,当指数差d幼 且做有效减法时只对操作数C尾数对齐移位后的结果进行取反;当指数差d > 0时且做 有效减法时对操作数AXB对齐后的结果进行取反;否则不取反;107bitHA单元对所述取反器输出的2个106比特数据进行半加运算;lbit规格化单元对所述107bitHA单元的输出2个106bit结果进行lbit的左移,只当 所述107bitHA单元输出的2个结果的最高2位都为0时,向左移位1位,否则不移位;d = 0禾P d = 1的符号处理单元对CLOSE路径中指数差d = 0禾P d = 1时的符号根 据所述57bit的符号检测器的结果做进一步的判断处理;当所述57bit符号检测器输出结果 是负数时,CLOSE路径输出的符号是操作数C的符号,当所述57bit符号检测器输出结果 位正数时,CLOSE路径输出的符号时操作数AXB的符号。
10.根据权利要求6至9任一项所述的浮点运算流水节拍处理方法,其特征在于,所 述步骤S400包括下列步骤指数计算单元根据CLOSE路径中规格化移位的位数以及FAR路径中规格化移位的位 数进行指数的运算;CLOSE路径的指数结果为AXB的指数减去CLOSE规格化移位的位 数;FAR路径中,当指数差ckO时为AXB的指数减去FAR路径舍入移位的位数再减去 所述lbit规格化单元移位的位数,当d > 0时为操作数C的指数减去FAR路径输入移位 的位数再减去所述lbit规格化单元移位的位数;CLOSE舍入和规格化单元对CLOSE的路径的58bit结果进行舍入和规格化,根据舍 入的结果进行左移1位或者右移1位;51bit双全加器根据所述lbit规格化单元输出的FAR_norml和FAR_norm2计算FAR_ norml+FAR_norm2禾P FAR_norml+FAR_norm2+l的值,所得至lj的FAR_norml+FAR_ norm2记为resO, FAR_norml+FAR_norm2+l记为resl,并将得到的resO和resl输出到所 述53比特选择器中;FAR舍入和进位单元根据处理器的舍入模式对FAR_norml和FAR_norm2的低55比 特的数据做舍入操作,如果有舍入进位,WUcin=l,否则没有舍入进位,则cin二0,并 且给出高4bit的结果L4[3:0];53bit选择器根据所述FAR舍入和进位单元输出的cin和resO和resl的最高2bit进行 选择处理;如果cin二l,有进位选择,那么选择resl,再根据resl的最高两bit进行选 择,如果resl最高位为l那么resl和L4[3:2]组成53比特数据,如果最高两bit为Ol,那 么resl舍掉最高的0和L4[3:l]组成53比特数据,而如果最高两bit为00,那么resl舍掉 最高两位00和L4[3:0]组成53bit的数据,当cin = 0时,没有进位选择,那么选择resO, 再根据resO的最高两bit进行选择;64比特选择器根据FAR路径和CLOSE路径的判断,选择FAR路径的数据还是 CLOSE路径的数据;当d = 0或者d = 1或者d = 2或者d = -1,且做有效减法时,选 择CLOSE路径的结果,否则选择FAR路径的结果。
全文摘要
本发明公开一种64比特浮点乘加器及其浮点运算流水节拍处理方法。该乘加器的第一指数处理单元用于计算浮点乘加和浮点乘法运算时的指数差;第一符号处理单元用于判断浮点乘加运算和浮点乘法运算结果的符号以及是否做有效减法;第二指数处理单元用于对只做加法操作时操作数的指数进行处理;第二符号处理单元用于对只作加法操作时操作数的符号进行处理;指数以及符号选择器用于选择第一指数处理单元和第一符号处理单元的结果,或者选择第二指数处理单元和第二符号处理单元的结果;并判断指数差d,当d=0、或d=1、或d=2、或d=-1,且做有效减法时,通过CLOSE路径进行运算,否则通过FAR路径进行运算,以此来降低乘加器时延。
文档编号G06F7/57GK101692202SQ20091009304
公开日2010年4月7日 申请日期2009年9月27日 优先权日2009年9月27日
发明者胡伟武, 郭崎, 齐子初 申请人:北京龙芯中科技术服务中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1