当前位置: 首页 > 专利查询>清华大学专利>正文

一种具有五级流水线结构的浮点乘加融合单元制造技术

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

【技术实现步骤摘要】

本专利技术涉及浮点运算单元设计,是一种用于实现高性能浮点运算的高速浮点乘加融合单元。
技术介绍
文献数据表明,几乎50%的浮点乘法指令后面紧跟的指令为浮点加法或减法。因此,浮点乘加融合操作A+B×C已经成为科学运算和多媒体应用中的一种基本操作。由于浮点乘加融合操作在应用程序中如此频繁地出现,用浮点乘加融合单元(简化为MAF单元)来实现该操作已经成为现代高性能商业处理器的一个很好的选择。这种实现方式主要有以下两个优点(1)仅需要一次舍入,不是两次;(2)通过共享一些组成模块,可降低电路延迟和硬件开销。 乘加(MAF)指令需要3个操作数。例如,执行A+(B×C)操作,当把乘加指令中操作数A置为0时执行的是乘法指令,把操作数B或C置为1时,执行的是加法指令。在已实现的多数处理器中,浮点乘加运算一般通过以下步骤来实现(相关内容请见参考文献1Floating-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本文档来自技高网
...

【技术保护点】
一种浮点乘加融合单元的五级流水线结构,其特征在于,含有一种五级流水实现的单精度浮点乘加运算单元,实现了形式为A+(B×C)的乘加操作,其吞吐量为每周期一条指令,如图2所示,具体结构如下:第一级流水线:由指数处理单元1、以4为基的波茨编码器3、3∶2的进位保存加法器(CSA)组成的部分积压缩树4的一部分和符号处理单元2组成;其中,指数处理单元1根据操作数A的指数,B的指数和C的指数计算其指数差dd=exp(A)-(exp(B)+exp(C)-127),其中,exp(A),exp(B)和exp(C)分别是操作数A,B和C的指数,根据IEEE754标准,单精度浮点数的指数为其第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),根据IEEE754标准,单精度浮点数的符号位为其最高位,临时符号由B×C的符号位表示,A的符号位与B×C的符号位不同时,sub=1,否则sub=0;基4的波茨编码器3对C的尾数进行编码,然后将编码的结果与B的尾数相乘得到13个部分积,根据IEEE754标准,单精度浮点数的尾数为其第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.一种浮点乘加融合单元的五级流水线结构,其特征在于,含有一种五级流水实现的单精度浮点乘加运算单元,实现了形式为A+(B×C)的乘加操作,其吞吐量为每周期一条指令,如图2所示,具体结构如下第一级流水线由指数处理单元1、以4为基的波茨编码器3、3∶2的进位保存加法器(CSA)组成的部分积压缩树4的一部分和符号处理单元2组成;其中,指数处理单元1根据操作数A的指数,B的指数和C的指数计算其指数差dd=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≥272)27>d≥3或d=2,sub=03)2≥d≥-48且sub=14)d=1或d=0,sub=05)-1≥d≥-48且sub=06)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的输出结果一起送入32CSA 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的最低位,32CSA压缩后进位字节(carry)的最低位(74位)为空,1可加在这位上;第三级流水线由前导零检测模块10、74比特的半加器11、12和13、符号预测逻辑14、25比特的一次性移位器15和选择器16组成;其中,前导零检测模块10,根据5和9的输出,以及d和sub的值确定后两次规格化移位(分别由17、25完成)的移位量,下面阐述根据d和sub划分的六种情况,详细讨论各种情况下如何确定前导零个数(结果为负时为前导一)情况1d≥27前导零个数(LZN)可能为0或1,不需要进行移位,1位的左移不确定留到加法和舍入部分处理,17和25的移位量均为0;情况227>d≥3或d=2,且sub=025的移位量为0,sub=1时,17中的移位量为mv,其中mv为1中计算出的A相对B×C移位对齐时的移位量;sub=1时,17中的移位量为mv-1,因为此时为有效加法,加法器20中最高位可能产生进位(Cout=1,Cout表示加法器20中最高位的进位),17中的移位量最少为0,最多为25;情况32≥d≥-48且sub=1此时A和B×C非常接近,减法运算可能损失很多有效位,这种情况下需要特殊的前导零预测逻辑,我们的实现方法如下通过检查某一位及其左右相邻的位确定哪一位可能是最高位,设一预测位fi,G=sum&carry,其中sum、carry为9的两个输出,若fi=1,而fj=0(j=0,1…i-1),则最高位为i或i+1,i≤26时,17中的...

【专利技术属性】
技术研发人员:李兆麟李恭琼张轩
申请(专利权)人:清华大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1