倒数估计计算方法和装置的制作方法

文档序号:6562934阅读:336来源:国知局
专利名称:倒数估计计算方法和装置的制作方法
技术领域
本发明一般涉及处理单元,并且特别涉及倒数估计计算方法和装置。
背景技术
对于大输入值的倒数估计计算可得到可能不能使用标准化浮点格式表示的非常小的数(例如非标准的数)。执行对于所述大输入值的倒数估计计算的传统系统将需要设计复杂度,所述设计复杂度导致了性能损失。另外或者可选地,执行对于所述大输入值的倒数估计计算的传统系统可能提供不精确的结果。于是,期望一种用于执行倒数估计计算的改进的方法和装置。

发明内容
在本发明的第一方面中,提供一种使用浮点流水线逻辑的倒数估计计算的第一方法。所述第一方法包括以下步骤(1)接收当被表示为浮点数时具有指数和尾数的、将对其执行倒数估计计算的输入值;(2)确定所述指数是否是多个预定的数中的一个;以及(3)如果所述指数是所述多个预定的数中的一个,则基于所述指数调整多个修正的尾数位中的至少一个(例如前导零预测器逻辑(LZA)内部的尾数位)以及结果指数,以便预防所述倒数估计计算的下溢结果。
在本发明的第二方面中,提供一种用于预防倒数估计计算的下溢结果的第一装置。所述第一装置包括(1)适于耦合到浮点流水线逻辑的指数检测逻辑;(2)适于耦合到所述浮点流水线逻辑的下溢预防逻辑;以及(3)适于耦合到所述浮点流水线逻辑的指数调整逻辑。所述装置适于响应于所述浮点流水线逻辑接收到当被表示为浮点数时具有指数和尾数的、将对其执行倒数估计计算的输入值,而(a)确定所述指数是否是多个预定的数中的一个;以及(b)如果所述指数是所述多个预定的数中的一个,则基于所述指数调整多个修正的尾数位中的至少一个(例如LZA逻辑内部的尾数位)以及结果指数,以便预防所述倒数估计计算的下溢结果。
在本发明的第三方面中,提供一种用于预防倒数估计计算的下溢结果的第一系统。所述第一系统包括(1)浮点流水线逻辑;以及(2)用于预防倒数估计计算的下溢结果的装置,该装置被耦合到所述浮点流水线逻辑,并且具有(a)指数检测逻辑;(b)下溢预防逻辑;以及(c)指数调整逻辑。所述装置适于响应于所述浮点流水线逻辑接收到当被表示为浮点数时具有指数和尾数的、将对其执行倒数估计计算的输入值,而(i)确定所述指数是否是多个预定的数中的一个;以及(ii)如果所述指数是所述多个预定的数中的一个,则基于所述指数调整多个修正的尾数位中的至少一个(例如LZA逻辑内部的尾数位)以及结果指数,以便预防所述倒数估计计算的下溢结果。根据本发明的这些和其它方面的许多其它方面被提供。
从下面的详细描述、权利要求和附图中,本发明的其它特征和方面将变得更加显而易见。


图1是根据本发明实施例的用于倒数估计计算的系统的框图。
图2示出了由根据本发明实施例的系统执行的倒数估计计算方法的流程图。
图3示出了由根据本发明实施例的系统执行的第一示例性倒数估计计算。
图4示出了由根据本发明实施例的系统执行的第二示例性倒数估计计算。
具体实施例方式
倒数估计指令是可以计算对于值1/x的估计的微处理器指令,其中x是输入值。由PowerPC使用的fres(文件检索和编辑系统)指令和由PowerPC VMX使用的vrefp指令是倒数估计指令的例子。Power PC是由本方法和装置的受让人NY Armonk的IBM公司制造的。所述示例性倒数估计指令典型地可以被Newton-Rhapson算法使用,并且作为对于浮点除指令的快速替换。所述Newton-Rhapson算法可被广泛使用,并且对于在其中性能被高度重视的计算密集型软件应用是重要的。根据IEEE754,浮点数可以被表示为2指数×尾数,其中,所述尾数可以被表示为“隐含位”.“分数位”。非标准的数可以是具有偏移指数域为0和非零的分数位域的数。通过使用传统系统,某些倒数估计计算可产生不可被表示为使用IEEE754单精度浮点表示法的标准浮点数的非常小的数(例如非标准的数)。例如,在标准化过程中,所述传统系统可对浮点数的分数位进行移位(例如向左),并且相应地将所述浮点数的指数减小到标准IEEE754表示法所允许的数字之下。
于是,本发明可提供改进的倒数估计计算方法和装置。更具体地,为计算对于预定的(例如预定为大的)输入值(其可被表示为2指数×尾数)的倒数估计,本发明可调整多个尾数位中的一个,其中,该尾数位可能已被浮点流水线的乘法器和/或对准器修改过,并且将被浮点流水线的前导零预测器逻辑所处理,以便所述尾数看来比其实际更大。通过该方式,当移位量被从所述前导零预测器(LZA)逻辑输出到标准化逻辑时,所述标准化逻辑不会试图将所述尾数的分数位移位太多,并且由此不会试图基于所述输入值将关联于输出值的结果指数减少到超过所述浮点表示法允许的下限。因此,本发明可以避免下溢结果(例如,乘积值太小而不能用得自大输入值的标准浮点数来表示)。相反,所述标准化逻辑可将所述已调整的尾数位转发到结果逻辑,而不会通过基于与所述输入值关联的指数而将结果指数减小到超过所述浮点标准的限制而将分数位移位到下溢之中。此外,本发明可利用逻辑来强制关联于所述大输入值的指数为零,以及将所述指数值输出到结果逻辑。基于通过结果逻辑被输入的所述值,结果逻辑可以计算并且输出对于大输入值的精确的倒数估计。
在某些实施例中,或逻辑可以被用于强制(例如LZA逻辑内部的)所述多个尾数位中的一个进行调整。进行调整的LZA尾数位的选择可以基于所述输入值的指数。
在至少一个实施例中,如果本发明的逻辑确定所述输入值并不是大到足以导致下溢,则所述逻辑可不调整(例如LZA逻辑内部的)尾数位,并且可不像上述那样强制所述输入值的指数为零。
通过该方式,本发明可以提供改进的倒数估计计算方法和装置。
图1是根据本发明实施例的用于倒数估计计算的系统的框图。参考图1,系统100可以包括或可以是例如微处理器的中央处理单元(CPU),该中央处理单元适于执行各种数据处理和数学任务。在某些实施例中,本发明可以被并入由本发明的受让人NY Armonk的IBM公司制造的单元(Cell)处理器中。CPU 100可包括适于执行对浮点数的计算的浮点数学单元(FPU)102。与传统FPU类似,FPU 102可包括浮点流水线逻辑104。所述浮点流水线逻辑104可适于对于可以被表示为浮点数的输入值计算倒数估计。所述浮点流水线逻辑104可包括适于对于所述输入值执行乘法运算的乘法器逻辑106。例如,所述乘法器逻辑106可适于用例如斜率值(在下面描述)的另一值乘以所述输入值的分数部分。对准器逻辑108可被耦合到所述乘法器逻辑106,并从所述乘法器逻辑106接收输入。所述对准器逻辑108可适于在需要时对由所述对准器108输入的值进行移位和对准。例如,所述对准器逻辑108(在下面描述)可以基于加法器逻辑109的输入的指数之间的差值,对于所述加法器逻辑109的一个输入的分数位进行移位。通过该方式,对准器逻辑108可以确保加法器逻辑109的所述输入的分数位被正确地对准以进行相加(例如,以便所述加数的位的位置分别具有相同的权重)。
通过该方式,乘法器逻辑106和对准器逻辑108可以修正所述输入值的多个尾数位中的一个或多个。加法器逻辑109可适于对由所述逻辑109输入的值(例如两个分数加数)进行相加。下溢预防逻辑(在下面描述)可被耦合到对准器逻辑108的输出。前导零预测器(LZA)逻辑110可被耦合到所述下溢预防逻辑的输出。所述LZA逻辑110可适于确定由所述逻辑110输入的数据为标准化所述结果而需要被移位的量。例如,所述LZA逻辑110可适于预测所述和的哪个位的位置将包括最高有效位。尽管所述加法器逻辑109和LZA逻辑110被示为可以并行地对数据进行运算的集成逻辑,然而应当理解,在某些实施例中,所述加法器逻辑可以与所述LZA逻辑分离,并且所述逻辑可顺序地进行运算。
所述浮点流水线逻辑104可包括被耦合到乘法器逻辑106和加法器逻辑109的倒数估计表查找逻辑112。所述倒数估计表查找逻辑112可适于接收所述输入值作为数据,从倒数估计表113访问数据,并且将所述数据的第一部分(例如斜率数据)输出到乘法器逻辑106,以及将所述数据的第二部分(例如偏移值)输出到加法器逻辑109。所述斜率和偏移值可结合所述输入值被用于允许所述乘-加逻辑执行线性插值,以产生所述倒数函数的相当精确的估计。
此外,标准化逻辑114可被耦合到加法器逻辑109和LZA逻辑110的输出。所述标准化逻辑114可适于对尾数的位进行移位(例如向左),并且相应地减小关联于所述输入值的指数。例如,标准化逻辑114可以对尾数分数位进行移位,以便标准浮点数中的最高有效位可以位于标准的隐含位的位置。结果逻辑116可被耦合到所述标准化逻辑114。所述结果逻辑116可适于强制某些特例情况的结果,例如无穷、零、非数字等。在某些实施例中,所述结果逻辑可以包括适于执行舍入运算的舍入逻辑。对于所述输入值的倒数估计计算的结果可从所述结果逻辑116被输出。
然而,与传统FPU不同,所述FPU 102可包括适于预防倒数估计计算的下溢结果的逻辑118。所述倒数估计下溢预防逻辑118可包括被耦合到浮点流水线逻辑104的指数检测逻辑120。所述指数检测逻辑120可适于确定所述输入值的指数是否是多个预定的(例如大的)数中的一个。例如,所述指数检测逻辑120可以确定关联于所述输入值的指数是否是126或127(尽管所述指数检测逻辑120可以确定所述指数是否是更大或更小量的数和/或不同数中的一个)。当所述输入值的指数是这些大数中的一个时,所述倒数估计计算的结果可能是非标准数,所述非标准数中的某些无法使用依据IEEE754的标准浮点数来表示。
此外,倒数估计下溢预防逻辑118可以包括被耦合到浮点流水线逻辑104的下溢预防逻辑122。所述下溢预防逻辑122可适于调整将要或者已经被所述LZA逻辑110处理的多个位中的一个。更具体地,所述下溢预防逻辑122可适于调整多个尾数分数位(例如之前被所述乘法器和/或对准器逻辑106、108修正过)中的最高有效位左边的第一或第二位中的一个,所述尾数分数位可位于所述LZA逻辑110的内部。另外,所述倒数估计下溢预防逻辑118可以包括指数强制逻辑124,所述指数强制逻辑124适于当输入值的指数是多个大数中的一个时,基于所述输入值调整输出值的指数。例如,当输入值的(例如无偏移的)指数是126或127时,所述指数强制逻辑122可把所述输出值指数域调整为零。通过该方式,所述倒数估计下溢预防逻辑118可适于预防浮点流水线逻辑104的标准化逻辑114将尾数分数位移位太多并相应地减小指数,以致导致所述倒数估计计算的下溢结果。通过该方式,FPU 102可以产生在特定精度范围内的对于函数1/输入值的估计。
所述倒数估计下溢预防逻辑118可以例如经由组合和/或时序逻辑或者作为专用集成电路(ASIC)被实现。下面参考图1并参考图2描述用于倒数估计计算的系统100的操作,其中,图2示出了由根据本发明实施例的系统100执行的倒数估计计算方法的流程图。参考图2,在步骤202,所述方法200开始。所述浮点流水线逻辑104可以接收将对其执行倒数估计计算的输入值。所述输入值可依据IEEE754被表示为包括指数和尾数的单精度浮点数。更具体地,所述输入值可被提供给乘法器逻辑106和倒数估计表查找逻辑112。作为响应,在步骤204,关联于所述输入值的斜率和偏移的值可通过执行表查找来确定。更具体地,所述倒数估计表查找逻辑112可基于所述输入值访问倒数估计表113,以确定所述斜率和偏移。
在步骤206,所述输入值的多个部分可与所述斜率相乘,并与所述偏移相加。更具体地,所述斜率可被提供给乘法器逻辑106,并且乘法器逻辑106可用所述斜率乘以所述输入值的多个部分,并把所述结果值输出到对准器逻辑108。对准器逻辑108可在必要时对所述结果值向左或右进行移位。通过该方式,浮点流水线逻辑104可以修正所述输入值的多个尾数分数位中的一个或多个,从而产生对准的值。所述对准的值可被输出到加法器逻辑109。加法器逻辑109可处理所述对准的值。更具体地,加法器逻辑109可把由倒数估计表查找逻辑112提供的所述偏移加到所述对准的值中。
在步骤208,倒数估计下溢预防逻辑118可确定关联于所述输入值的指数是否是第一值。更具体地,指数检测逻辑120可确定关联于所述输入值的指数是否是可以大到足以导致传统FPU输出下溢结果的第一值。例如,指数检测逻辑120可确定关联于所述输入值的指数是否是126(例如通过使用比较逻辑)。如果是,则步骤210可被执行。在步骤210,下溢预防逻辑122可调整将被发送到LZA逻辑110的所述对准的值中的至少一个位,以产生修正的对准值。更具体地,下溢预防逻辑122可调整包括在(或将被发送到)所述LZA逻辑110中的所述对准值的多个修正的尾数分数位中的一个,以使得所述倒数估计的下溢结果可以被避免。例如,如果所述指数是第一值,则所述的修正尾数位的最高有效分数位左边的第一位(例如位于左边第一位的位置)可被调整。通过该方式,基于所述修正的对准值被提供给LZA逻辑110进行处理,倒数估计下溢预防逻辑118可导致LZA逻辑110确定为计算所述输入值的倒数估计,所述修正的对准值几乎不需要或完全不需要移位。所述LZA逻辑110可以向标准化逻辑114提供关于所述修正的对准值是否需要移位的信息。下溢预防逻辑122可包括例如或逻辑的用于调整所述位(例如,从逻辑“0”到逻辑“1”,或反之亦然)的逻辑。
此后,步骤212可被执行。在步骤212,所述修正的对准值可被标准化,并且关联于输入值的指数可被调整。更具体地,标准化逻辑114可接收所述修正的对准值和所述移位信息,并且调整所述值,以便逻辑“1”可位于所述尾数的隐含位的位置中。所述标准化的值可从标准化逻辑114被输出,并被提供给所述结果逻辑以进行处理。结果逻辑116可强制某些特例结果,例如无穷、零、非数字等。此外,倒数估计下溢预防逻辑118可基于所述输入值调整关联于输出值的指数。更具体地,指数强制逻辑124可把关联于所述输出值的指数域调整为二进制的0(对于单精度浮点为0b00000000)。通过该方式,所述FPU 102可以对在使用传统FPU时可以大到足以导致倒数估计下溢结果的输入值执行倒数估计,并输出非标准数。从由本方法和装置执行的倒数估计计算得出的所述非标准数可非常接近所述输入值的实际倒数计算。由本方法和装置产生的倒数估计的精度的细节在下面描述。
此后,步骤214可被执行。在步骤214,方法200结束。
可选地,如果在步骤208,倒数估计下溢预防逻辑118确定关联于所述输入值的指数不是所述第一值,则步骤216可被执行。在步骤216,倒数估计下溢预防逻辑118可确定关联于所述输入值的指数是否是第二值。更具体地,指数检测逻辑120可确定关联于所述输入值的指数是否是可以大到足以导致传统FPU 102输出下溢结果的第二值。例如,指数检测单元120可确定关联于所述输入值的指数是否是127(例如通过使用比较逻辑)。如果是,则步骤218可被执行。在步骤218,下溢预防逻辑122可调整所述对准的值中的至少一位,以产生修正的对准值。更具体地,下溢预防逻辑122可调整包括在所述结果值中的(例如可以在LZA逻辑110内部的)多个修正尾数分数位中的一个,以致所述倒数估计的下溢结果可以被避免。例如,如果所述指数是所述第二值,则所述修正的尾数位的最高有效分数位左边的第二位(例如向左两个位的位置)可被调整。通过该方式,基于所述修正的对准值被提供给LZA逻辑110进行处理,倒数估计下溢预防逻辑118可使得LZA逻辑110确定为计算所述输入值的倒数估计,所述修正的对准值几乎不需要或完全不需要移位。所述LZA逻辑110可向标准化逻辑114提供关于所述修正的对准值是否需要移位的信息。下溢预防逻辑122可包括例如或逻辑的用于调整所述位(例如,从逻辑“0”到逻辑“1”,或反之亦然)的逻辑。
此后,步骤212和214(如上面所描述的)可被执行。如所指出的,在步骤214,方法200结束。
可选地,如果在步骤216,倒数估计下溢预防逻辑118确定关联于所述输入值的指数不是所述第二值,则步骤220可被执行。在步骤220,倒数估计下溢预防逻辑118在计算所述输入值的倒数估计时,可不调整所述对准值,并且可不调整关联于所述输入值的指数。更具体地,由于FPU 102确定关联于所述输入值的指数不是所述第一和/或第二值,所以所述输入值并不会大到足以导致倒数估计计算的下溢。因此,所述FPU 102的乘法器逻辑106、对准器逻辑108、加法器逻辑116、LZA逻辑110、标准化逻辑114和结果逻辑116可用与传统FPU类似的方式处理所述输入值并输出所述结果。
此后,步骤214可被执行。在步骤214,所述方法结束。
通过使用计算倒数估计的本方法,对输入值的倒数估计可产生相当精确的非标准结果。被加法器逻辑和/或LZA逻辑处理的多个位(例如尾数分数位)中的一个可被调整,以便所述多个位可以被移动到产生精确的非标准结果的各个位的位置,并且以便本装置的标准化逻辑114不会导致所述倒数估计计算的下溢结果。
图3示出了由根据本发明实施例的系统100执行的第一示例性倒数估计计算。参考图3,系统100可接收0x7E800000(例如8.5070591730234616e+37)作为输出。所述十六进制值可以被表示为具有指数和包括隐含位和分数位的尾数的单精度浮点数(例如,表示为2指数ד隐含位”.“分数位”)2126×1.0。所述十六进制值可以被表示为二进制的01111110100000000000000000000000,其中,11111101代表所述偏移指数,而00000000000000000000000代表所述尾数的分数位。所述分数位可通过倒数估计表查找逻辑112被输入,所述倒数估计表查找逻辑112可基于所述输入的分数位输出斜率和偏移值。更具体地,所述斜率可从倒数估计表查找逻辑112被输出,并且通过乘法器逻辑106被输入。此外,所述偏移可从倒数估计表查找逻辑112被输出,并且通过加法器逻辑109被输入。
所述单精度浮点数的指数部分(例如2指数)还可被提供给乘法器逻辑106作为输入。基于所述输入,乘法器逻辑106可用所述斜率乘以所述输入值的多个部分(例如所述分数位),以产生结果值。所述结果值可从乘法器106被输出,并且通过对准器逻辑108被输入。对准器逻辑108可在必要时对所述结果值向左或右进行移位,由此修正所述输入值的多个尾数分数位中的一个或更多,从而产生对准值。
所述对准值可从对准器逻辑108被输出,并且通过加法器逻辑109被输入。加法器逻辑109可用所述偏移值与所述对准值相加,以产生已加值。如所示出的,所述已加值的第一位到第三位(例如位0-2)可以是“001”,其中,位2可代表所述已加值的最高有效分数位。所述对准值可从对准器逻辑108被输出,并且通过LZA逻辑110(例如经由下溢预防逻辑)被输入以进行处理。
然而,尽管所述浮点流水线逻辑104的逻辑计算所述已加值,但所述指数可通过指数检测逻辑120被输入,所述指数检测逻辑120可以确定关联于所述输入值的指数是否高到足以可能导致传统FPU的倒数估计产生溢出值。更具体地,指数检测逻辑120可确定关联于所述输入值的指数是否是第一或第二值(例如126或127)。指数检测逻辑120可向指数强制逻辑124提供所述发现。
在所述第一示例性倒数估计计算中,指数检测逻辑120确定关联于所述输入值的指数是所述第一值(例如126)。因此,下溢预防逻辑122可把所述已加值的最高有效分数位左边的位(例如位1)从逻辑“0”调整为逻辑“1”,以产生修正的已加值。例如,所述修正的已加值的分数位可以是11111111111110000000000。所述修正的已加值可被输入到LZA逻辑110以进行处理。所述修正的已加值可向LZA逻辑110呈现为几乎不需要或完全不需要移位,并且相应地,几乎不需要或完全不需要减小所述指数值。LZA逻辑110可把所需要的移位量输出到标准化逻辑114。
基于所述移位量和所述已加值,标准化逻辑114可输出所述已加值的标准化版本,所述标准化版本可通过结果逻辑116被输入。此外,基于来自指数检测逻辑120的所述输出,指数强制逻辑124可调整关联于所述输入值的指数以产生调整的指数值,所述调整的指数值可从所述指数强制逻辑被输出并且通过结果逻辑116被输入。所述调整的指数值域可以是0,其代表指数-126。基于所述已加值的标准化版本和所述调整的指数值,如果必要,所述结果逻辑强制某些特例结果,例如无穷、零、非数字等,并且输出所述输入值的倒数估计。例如,对于例如2126×1.0的可导致传统FPU倒数估计计算产生下溢的足够大的输入值,系统100可计算1.1753508578595406e-38的倒数估计。所述倒数估计计算与2-126×1.0的实际或准确结果(例如1.1754943508222875e-38)相比的相对误差是-0.00012207031250003296,其绝对误差为-1.4349296274690001e-42。所述绝对误差是所述实际和估计值之间的差值。
图4示出了由根据本发明实施例的系统执行的第二示例性倒数估计计算。参考图4,系统100可接收0x7F000000作为输入。所述十六进制值可以被表示为单精度浮点数2127×1.0。所述十六进制值可以被表示为二进制的01111111000000000000000000000000,其中11111110代表所述偏移指数,而00000000000000000000000代表所述尾数的分数位。所述分数位可通过倒数估计表查找逻辑112被输入,所述倒数估计表查找逻辑112可基于所述输入的分数位输出斜率和偏移值。更具体地,所述斜率值可从倒数估计表查找逻辑112被输出,并且通过乘法器逻辑106被输入。此外,所述偏移可从倒数估计表查找逻辑112被输出,并且通过加法器逻辑109被输入。
如所指出的,所述单精度浮点数的指数部分(例如2指数)还可被提供给乘法器逻辑106作为输入。基于所述输入,乘法器逻辑106可用所述斜率乘以所述输入值的多个部分(例如所述分数位)以产生结果值。所述结果值可从乘法器106被输出,并通过对准器逻辑108被输入。对准器逻辑108可在必要时对所述结果值向左或右进行移位,由此修正所述输入值的多个尾数分数位中的一个或更多,从而产生对准值。所述对准值可从对准器逻辑108被输出,并通过加法器逻辑109被输入。加法器逻辑109可用所述偏移值与所述对准值相加,从而产生已加值。如所示出的,所述已加值的第一位到第三位(例如位0-2)可以是“001”,其中位2可代表所述已加值的最高有效位。所述对准值可从对准器逻辑108被输出,并且通过LZA逻辑110(例如经由下溢预防逻辑)被输入以进行处理。
此外,尽管浮点流水线逻辑104的逻辑计算所述已加值,但所述指数可通过指数检测逻辑120被输入,所述指数检测逻辑120可以确定关联于所述输入值的指数是否高到足以可能导致传统FPU的倒数估计产生下溢值。更具体地,指数检测逻辑120可以确定关联于所述输入值的指数是否是第一或第二值(例如126或127)。指数检测逻辑120可向指数强制逻辑124提供所述发现。
在所述第二示例性倒数估计计算中,指数检测逻辑120确定关联于所述输入值的指数是所述第二值(例如127),下溢预防逻辑122可把所述已加值的最高有效分数位左边的位(例如位0)从逻辑“0”调整为逻辑“1”,以产生修正的已加值。例如,所述修正的已加值的分数位可以是01111111111111000000000。所述修正的已加值可被输入到LZA逻辑110以进行处理。所述修正的已加值可向所述LZA逻辑110呈现为几乎不需要或完全不需要移位,并且相应地,几乎不需要或完全不需要减小所述指数值。所述LZA逻辑110可把所述需要的移位量输出到标准化逻辑114。
基于所述移位量和所述已加值,标准化逻辑114可以输出所述已加值的标准化版本,所述标准化版本可通过结果逻辑116被输入。此外,基于来自指数检测逻辑120的输出,指数强制逻辑124可调整关联于所述输入值的指数,以产生调整的指数值,所述调整的指数值可从指数强制逻辑124被输出并通过结果逻辑116被输入。所述调整的指数值可以是是偏移的0、无偏移的-126。基于所述已加值的标准化版本以及所述调整的指数值,结果逻辑116可计算所述输入值的倒数估计。例如,对于例如2127×1.0的可使得传统FPU倒数估计计算产生下溢的足够大的输入值,系统100可计算0x003FFE00的倒数估计。所述倒数估计计算与2127×1.0的准确结果相比的相对误差是0.000122070311865。
作为另一个例子,由本方法和装置得到的倒数估计仿真结果如下输入7E83FFFE=8.7729027439394844e+37结果007C1CF0=1.1397982342614628e-38实际007C1F0A=1.1398736241188435e-38相对误差-6.6138785726337532e-05绝对误差-7.5389857380699995e-43输入7E81FFFF=8.639980958481473e+37结果007E0D70=1.157609298262417e-38实际007E07E1=1.1564098934909436e-38相对误差0.00017228535248818512绝对误差1.9940477147339999e-42如由所述第一和第二示例性倒数估计计算所示出的,相对最小的控制逻辑(例如所述倒数估计下溢预防逻辑118)可被耦合到和/或包括在所述浮点流水线逻辑104中。所述控制逻辑可被用于基本上“欺骗”标准化逻辑114,使其认为关联于将对其执行倒数估计的输入值的尾数不需要被移位。逻辑(例如或逻辑)可被用来基于关联于所述输入值的指数值(例如126或127)调整被LZA逻辑110处理的多个(例如两个)位中的一个。由于标准化逻辑114以这种方式被“欺骗”,所以所述标准化逻辑114可以不标准化所述输入值,以致引起下溢结果。因此,尾数分数位可被恰当地定位,以产生所述倒数估计计算的精确的非标准数结果。由于所述倒数函数的性质以及所述单精度浮点表示法的限制,所述多个位中的仅一个位需要被调整(例如被强制)。通过该方式,前导零或(LZA或)逻辑可被用于帮助倒数估计指令产生非标准结果。
如参考图3所示出的,如果第一值的无偏移指数(例如126)关联于输入值,则被LZA逻辑110(例如LZA边缘检测逻辑)处理的多个位中的第一位(例如位1)可被调整,以便当标准化逻辑114标准化所述多个位(例如修正的尾数分数位)时,所述多个位中的位2将是所述标准化的多个位中的最高有效分数位。
此外,关联于所述输入值的指数域在通过结果逻辑116被输入之前可以被强制为零。另外,倒数估计表113可适于将被用于所述估计的具有分数位0b0.1111111111111的尾数偏移关联于所述输入值的偏移量(例如略小于0b1.0),所述输入值具有带零分数位域的尾数。通过该方式,估计精度可通过将估计向下偏移以便误差量可以在正值和负值之间进行平衡而被改进。
如上面所示出的,当指数126和尾数1.0关联于倒数估计计算输入值时,尾数位0b0.1111111111111的非标准化结果可在表查找、乘和加运算后被得到。左边的前导位在位的位置2(例如位2)中。因此,下溢预防逻辑122可在由LZA逻辑110处理之前(或期间)调整(例如强制)所述结果的位1。因此,标准化逻辑114可标准化所述结果,以便所述前导位(例如先前的位2)是所述标准化结果的最高有效分数位。此外,指数强制逻辑124可把所述指数调整为零。于是,所述倒数估计计算的结果是0x007FFC00(例如2-126×0b0.1111111111111)。如上面所描述的,所述结果可以非常接近2126×1.0的实际结果。
通过类似的方式,如参考图4所示出的,当指数127关联于输入值时,下溢预防逻辑122可调整未标准化结果的位0用于尾数位,并且把所述指数调整为零。
区分要调整哪个位的位置可允许相对精度被保持为非标准倒数估计计算结果的相对精度类似于标准范围内的倒数估计计算结果的计算精度。相反,如果不论关联于可对其执行倒数估计的输入值的指数(例如126或127)而都仅可调整一个位的位置,则对关联于指数127的输入值的倒数估计的相对精度可以比较低。
前述描述仅公开了本发明的示例性实施例。落在本发明范围内的对上面公开的装置和方法的修正将对于本领域的普通技术人员是显而易见的。例如,尽管上面已参考单精度浮点数(例如32位数)描述了本方法和装置,但本发明还包括用于对双精度浮点数(例如64位数)执行倒数估计的方法和装置。在一实施例中,本发明可以用CellTM微处理器体系结构上的PowerPCTMVMXTM指令“vrefp”来实现。倒数估计指令典型地可以被Newton-Rhapson算法使用,并且作为浮点除指令的快速替代。所述Newton-Rhapson算法可被广泛用在例如图形和科学应用的计算密集型软件应用中,在所述软件应用中性能被高度重视。
由此,尽管本发明已结合其示例性实施例被公开,但应当理解,其它实施例可以落在如权利要求所限定的本发明的精神和范围内。
权利要求
1.一种使用浮点流水线逻辑的倒数估计计算的方法,包括接收当被表示为浮点数时具有指数和尾数的、将对其执行倒数估计计算的输入值;确定所述指数是否是多个预定的数中的一个;以及如果所述指数是所述多个预定的数中的一个,则基于所述指数调整多个修正的尾数位中的至少一个以及结果指数,以便预防所述倒数估计计算的下溢结果。
2.根据权利要求1所述的倒数估计计算方法,还包括如果所述指数不是所述多个预定的数中的一个,则利用所述浮点流水线逻辑来计算所述输入值的倒数估计,而不用基于所述指数调整所述多个修正的尾数位中的至少一个以及所述结果指数以便预防所述倒数估计计算的下溢结果。
3.根据权利要求1所述的倒数估计计算方法,其中,调整所述多个修正的尾数位中的至少一个以便预防所述倒数估计计算的下溢结果包括减少由所述浮点流水线逻辑的标准化逻辑执行的对修正的尾数位进行移位的量。
4.根据权利要求3所述的倒数估计计算方法,其中,减少由所述浮点流水线逻辑的标准化逻辑执行的对修正的尾数位进行移位的量包括消除需要由所述浮点流水线逻辑的所述标准化逻辑执行的对修正的尾数位进行移位的量。
5.根据权利要求1所述的倒数估计计算方法,其中,基于所述指数调整所述结果指数以便预防所述倒数估计计算的下溢结果包括基于所述指数将所述结果指数调整为零。
6.根据权利要求1所述的倒数估计计算方法,其中,调整所述多个修正的尾数位中的至少一个包括如果所述指数属于第一值,则调整所述修正的尾数位的最高有效分数位左边的第一位。
7.根据权利要求1所述的倒数估计计算方法,其中,调整所述多个修正的尾数位中的至少一个包括如果所述指数属于第二值,则调整所述修正的尾数位的最高有效分数位左边的第二位。
8.一种用于预防倒数估计计算的下溢结果的装置,包括适于耦合到浮点流水线逻辑的指数检测逻辑;适于耦合到所述浮点流水线逻辑的下溢预防逻辑;以及适于耦合到所述浮点流水线逻辑的指数调整逻辑;其中所述装置适于响应于所述浮点流水线逻辑接收到当被表示为浮点数时具有指数和尾数的、将对其执行倒数估计计算的输入值,而确定所述指数是否是多个预定的数中的一个;以及如果所述指数是多个预定的数中的一个,则基于所述指数调整所述多个修正的尾数位中的至少一个以及结果指数,以便预防所述倒数估计计算的下溢结果。
9.根据权利要求8所述的装置,其中所述装置还适于如果所述指数不是所述多个预定的数中的一个,则利用所述浮点流水线逻辑来计算所述输入值的倒数估计,而不用基于所述指数调整所述多个修正的尾数位中的至少一个以及所述结果指数以便预防所述倒数估计计算的下溢结果。
10.根据权利要求8所述的装置,其中所述装置还适于减少由所述浮点流水线逻辑的标准化逻辑执行的对修正的尾数位进行移位的量。
11.根据权利要求10所述的装置,其中所述装置还适于消除需要由所述浮点流水线逻辑的所述标准化逻辑执行的对修正的尾数位进行移位的量。
12.根据权利要求8所述的装置,其中所述装置还适于基于所述指数将所述结果指数调整为零。
13.根据权利要求8所述的装置,其中所述装置还适于如果所述指数属于第一值,则调整所述修正的尾数位的最高有效分数位左边的第一位。
14.根据权利要求8所述的装置,其中所述装置还适于如果所述指数属于第二值,则调整所述修正的尾数位的最高有效分数位左边的第二位。
15.一种用于预防倒数估计计算的下溢结果的系统,包括浮点流水线逻辑;以及用于预防倒数估计计算的下溢结果的装置,其被耦合到所述浮点流水线逻辑,并且具有指数检测逻辑;下溢预防逻辑;以及指数调整逻辑;其中,所述装置适于响应于所述浮点流水线逻辑接收到当为表示为浮点数是具有指数和尾数的、将对其执行倒数估计计算的输入值,而确定所述指数是否是多个预定的数中的一个;以及如果所述指数是所述多个预定的数中的一个,则基于所述指数调整多个修正的尾数位中的至少一个以及结果指数,以便预防所述倒数估计计算的下溢结果。
16.根据权利要求15所述的系统,其中所述装置还适于如果所述指数不是所述多个预定的数中的一个,则利用所述浮点流水线逻辑来计算所述输入值的倒数估计,而不用基于所述指数调整所述多个修正的尾数位中的至少一个以及所述结果指数以便预防所述倒数估计计算的下溢结果。
17.根据权利要求15所述的系统,其中所述装置还适于减少由所述浮点流水线逻辑的标准化逻辑执行的对修正的尾数位进行移位的量。
18.根据权利要求17所述的系统,其中所述装置还适于消除需要由所述浮点流水线逻辑的所述标准化逻辑执行的对修正的尾数位进行移位的量。
19.根据权利要求15所述的系统,其中所述装置还适于基于所述指数将所述结果指数调整为零。
20.根据权利要求15所述的系统,其中所述装置还适于如果所述指数属于第一值,则调整所述修正的尾数位的最高有效分数位左边的第一位。
21.根据权利要求15所述的系统,其中所述装置还适于如果所述指数属于第二值,则调整所述修正的尾数位的最高有效分数位左边的第二位。
全文摘要
在第一方面中,提供一种使用浮点流水线逻辑的倒数估计计算的第一方法。所述第一方法包括以下步骤(1)接收当被表示为浮点数时具有指数和尾数的、将对其执行倒数估计计算的输入值;(2)确定所述指数是否是多个预定的数中的一个;以及(3)如果所述指数是所述多个预定的数中的一个,则调整多个修正的尾数位中的至少一个(例如,前导零预测器(LZA)逻辑内部的尾数位)以及所述指数,以便预防所述倒数估计计算的下溢结果。许多其它方面被提供。
文档编号G06F9/302GK1967468SQ20061014706
公开日2007年5月23日 申请日期2006年11月14日 优先权日2005年11月17日
发明者M·R·塔布斯, A·P·弗雷迈耶尔, S·M·当斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1