发明名称 用于浮点加法器的自纠错前导0/1预测单元
摘要 用于浮点加法器的自纠错前导0/1预测方法,采用多输入逻辑门以及并行计算相结合的方法实现了输出结果为最终正确结果,不必依赖加法器结果来进行修正;采用了并行计算,如操作数位宽增加,不会影响关键路径长度。能够在计算浮点加法的同时,对计算结果进行规格化处理所需要进行的移位次数以及指数调整信息作出同步的预测,且预测结果不依赖加法器输出而只由预测单元产生,预测结果为无需进一步修正的正确值,预测单元的关键路径不会因为操作数的位宽的加长而变长。
申请公布号 CN101699390B 申请公布日期 2012.01.04
申请号 CN200910218505.4 申请日期 2009.10.23
申请人 西安交通大学 发明人 邵志标;李凌浩;王丽
分类号 G06F7/575(2006.01)I 主分类号 G06F7/575(2006.01)I
代理机构 西安通大专利代理有限责任公司 61200 代理人 徐文权
主权项 1.用于浮点加法器的自纠错前导0/1预测方法,其特征在于:1)采用将前导0预测单元和前导1预测单元分立的办法,则分别有下列两式来计算数据指示位标记f<sub>i</sub>:<img file="FSB00000527004300011.GIF" wi="1639" he="68" /><img file="FSB00000527004300012.GIF" wi="1637" he="68" />其中,式(15)为LZA(Leading Zero Anticipation的缩写,表示前导0预测)中预测字段求取式,式(16)为LOA(Leading One Anticipation的缩写,表示前导1预测)中预测字段求取式,其中若T<sub>i</sub>=1,表示在不考虑低位进位的情况下,两个二进制操作数i位上的两个二进制数的和为1,且不产生向高位的进位,即i位上两个二进制操作数的值为1、0或者0、1;若Z<sub>i</sub>=1,表示在不考虑低位进位的情况下,两个二进制操作数i位上的两个数的和为0,且不产生向高位的进位,即i位上两个二进制操作数的值均为0;若G<sub>i</sub>=1,表示在不考虑低位进位的情况下,两个二进制操作数i位上的两个数的和为0,且产生向高位的进位,即i位上两个二进制操作数的值均为1,因此在i位上,两个二进制操作数值的情况只能使T<sub>i</sub>、Z<sub>i</sub>、G<sub>i</sub>三个参数中的1个参数的值为1,且至少使一个参数的值为1,两个分立的LZA和LOA得到的预测结果,利用来自加法器的和的最高位进位来进行选择:如果最高位产生进位,说明和为正,则需对前导0进行预测,选择LZA的预测结果;如果最高位不产生进位,说明和为负,则需对前导1进行预测,选择LOA的预测结果;2)高速前导0、1预测纠错单元由于在i位上,两个二进制操作数值的情况只能让T<sub>i</sub>、Z<sub>i</sub>、G<sub>i</sub>三个参 数中的1个参数的值为1,且至少使一个参数的值为1,因此对于该位置用值为1的参数标记该位特征——即若i位上T<sub>i</sub>的值为1,则此时Z<sub>i</sub>、G<sub>i</sub>的值均为0,因此在预测字段的i位上写T,所有值为1的参数在其相应的位置上构成预测字段,无论对于LZA还是LOA,只有当预测字段中,T*GZ*或T*ZG*段后面紧随着T,才需要对输出的n-1进行修正,这里T*表示T后面有m个T,其中m≥0;Z*表示Z后面有m个Z,其中m≥0;G*表示G后面有m个G,其中m≥0,为了判断是否需要对输出进行修正,需要对预测字段中的第n位作出判断,利用LZC(Leading Zero Count的缩写,表示前导0计数)和LOC(Leading One Count的缩写,表示前导1计数)的输出L<sub>i</sub>对T信号进行处理,并通过处理结果进行判断,有:<img file="FSB00000527004300021.GIF" wi="1656" he="119" /><img file="FSB00000527004300022.GIF" wi="1668" he="68" />其中,对于前导0预测,有:<img file="FSB00000527004300023.GIF" wi="489" he="74" />对于前导1预测有:<img file="FSB00000527004300024.GIF" wi="498" he="73" />F<sub>i</sub>为f<sub>j</sub>从第0位到第i位的按位或操作;F<sub>i</sub>具有以下特点:存在一个确定的n,使对于任意的i<n的F<sub>i</sub>为0,其余F<sub>i</sub>为1,即有对于j<n的任意f<sub>j</sub>=0,这里采用“大端顺序”,F<sub>i</sub>为LZA/LOA输出的结果字串;L<sub>i</sub>具有以下特点:对于确定的n,有L<sub>n</sub>=1,其余L<sub>i</sub>=0,为LZC/LOC的未被纠错的输出; 求判断使能信号EN的方法;en<sub>i</sub>=L<sub>i</sub>·T<sub>i+1</sub>                    (23)EN=∑en<sub>i</sub>                        (24)<img file="FSB00000527004300031.GIF" wi="334" he="50" />A和B为两个加数,EN为en<sub>i</sub>的按位或结果,EN作为是否需要对预测结果进行修正判断的使能信号;对于确定的n,有L<sub>n</sub>=1,这时只有T<sub>n+1</sub>=1时,才需要对结果是否需要修正进行判断,即en<sub>n</sub>=1时才可能需要修正,EN为en压缩成的单一使能信号;若EN=0无需修正输出结果,也就无需判断是否修正;若EN=1时,需要对结果是否修正进行判断,判断是否需要对输出n-1做修正,即已知预测字段的第n+1位为T,那么预测字段的第n+1位是否存在进位信号C<sub>n</sub>,若T<sub>n</sub>=1,则只需判断进位信号C<sub>n</sub>的取值,为此,引入一个新的内部信号K,将之定义为:K<sub>0</sub>=0                          (25)K<sub>i</sub>=T<sub>i-1</sub>G<sub>i</sub>,i≥1               (26)若K<sub>m</sub>=1,m>n,且K<sub>i</sub>≠1(n<i<m),则只要存在T<sub>i</sub>≠1(n<i<m)便可判断C<sub>n</sub>的取值必为0,对字段K进行如下处理:对于前导0预测部分,利用LZC产生信号F对字段K进行处理:<img file="FSB00000527004300032.GIF" wi="1641" he="125" />K′<sub>i</sub>=K<sub>i</sub>·F<sub>i</sub>,i≥0                 (28)同法对T信号进行处理:<img file="FSB00000527004300033.GIF" wi="1631" he="66" />以上两式是用来对K和<img file="FSB00000527004300034.GIF" wi="54" he="56" />信号的第1位到第n位进行清零处理,则K’ 即为对K字段的0到n位清零后的字段,对K’进行处理,将K’从第m位以后全部清零,0至第m-1位全部置1:<img file="FSB00000527004300041.GIF" wi="1583" he="127" />对T’、Q信号进行按位与操作,即获得含有目标字段,且其余部分全置0的字段:d<sub>i</sub>=T′<sub>i</sub>·Q<sub>i</sub>,i≥0                 (31)D=EN·∑d<sub>i</sub>                        (32)若D=1,则不会产生进位信号C<sub>n</sub>,对于前导0预测需要进行修正,即将n取代n-1作为预测输出结果;相应的对于前导1预测,无需进行修正。 
地址 710049 陕西省西安市咸宁西路28号