CN107038014B - 舍入反平方根结果 - Google Patents
舍入反平方根结果 Download PDFInfo
- Publication number
- CN107038014B CN107038014B CN201610911752.2A CN201610911752A CN107038014B CN 107038014 B CN107038014 B CN 107038014B CN 201610911752 A CN201610911752 A CN 201610911752A CN 107038014 B CN107038014 B CN 107038014B
- Authority
- CN
- China
- Prior art keywords
- result
- precision
- rounding
- floating point
- square root
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 101
- 238000007667 floating Methods 0.000 claims abstract description 90
- 238000004364 calculation method Methods 0.000 claims description 73
- 230000006870 function Effects 0.000 description 14
- 239000002609 medium Substances 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000005552 B01AC04 - Clopidogrel Substances 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- GKTWGGQPFAXNFI-HNNXBMFYSA-N clopidogrel Chemical compound C1([C@H](N2CC=3C=CSC=3CC2)C(=O)OC)=CC=CC=C1Cl GKTWGGQPFAXNFI-HNNXBMFYSA-N 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49963—Rounding to nearest
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
- G06F7/5525—Roots or inverse roots of single operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/552—Indexing scheme relating to groups G06F7/552 - G06F7/5525
- G06F2207/5521—Inverse root of a number or a function, e.g. the reciprocal of a Pythagorean sum
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了舍入反平方根结果。用于确定在输入浮点数上执行的反平方根运算的无限精度结果是否大于在第一浮点精度中的特定数的方法和系统。该方法包括:计算在第二较低的浮点精度中的特定数的平方;计算由于第二浮点精度而引起的在所计算的平方中的误差;通过计算该平方乘以输入浮点数减去一来计算在第一浮点精度中的第一增量值;通过计算误差乘以输入浮点数加上第一增量值来计算第二增量值;以及基于第二增量项来输出反平方根运算的无限精度结果是否大于特定数的指示。
Description
背景
当在硬件中执行算术运算时,其使用特定的数字表示法来执行,诸如但不限于定点数表示法或浮点数表示法。如本领域中的技术人员已知的,定点数表示法具有在小数点(例如,十进制小数点或二进制小数点)之后的固定数的数字。相反,浮点数表示法不具有固定小数点(即,它可以“浮动”)。换句话说,小数点可放置在该表示内的任何地方。
最常见的浮点标准是电气与电子工程师协会(IEEE)的用于浮点算数的标准(IEEE-754)。IEEE-754规定浮点数由三个数表示:符号、指数和尾数(s,exp,mant)。通常,对于固定整数bias这三个数(s,exp,mant)被解释为在方程式(1)中所示:
(-1)s2exp-bias1.mant (1)
对于具有不同程度的精度的浮点数,IEEE-754定义在表1中所示的四个基本格式。特别地,它们分别使用16、32、64和128位来编码。
表1
浮点表示法(与定点数相比)对于相同数量的位允许较大范围的数。相应地,可使用相同的浮点表示法来表示非常大的整数和小的分数。然而,由于浮点数只具有有限数量的位,因此它们有舍入误差的倾向。特别地,如果指数和尾数的二进制宽度分别是ew和mw,则精度的位或有效位的数量是mw+1(浮点格式具有精度的隐含位)。舍入误差u是在1和下一个可表示的浮点值之间的距离的一半。
当使用“就近舍入”舍入模式时,浮点算术运算的输出理想地是对无限精度结果y的在输出格式(即,输出精度)中的最接近的可表示值。换句话说,理想地,输出已被正确地舍入(向上或向下)到最接近的可表示值。为了在依次执行多个运算时减小舍入误差的复合效应,并允许对最终舍入步骤做出的准确决策,一些浮点算术运算硬件实现被配置成计算在比最终输出精度高的精度中计算中间结果,并接着将结果舍入到在输出精度中的最接近的可表示数字。在中间精度中的附加位可被称为保护位。例如,输出值可以是具有67位浮点中间值(即,具有三个保护位)的双精度64位。
这样的硬件可产生在中间精度中的计算结果yc,其相当接近无限精度结果y。特别地,通过适当地选择保护位的数量,可能得到在中间精度中的计算结果yc,其具有足够的准确度以确保无限精度结果y可准确地被舍入到高于和低于计算结果yc的较低输出精度的两个连续可表示数中一个。
例如,图1示出在较低输出精度中的四个连续可表示数i、j、k和l。如果在中间精度中的计算结果yc位于j和k之间,通过适当地选择保护位的数量,能够确保无限精度结果y一定落在由在k和l之间的一半数yh-kl以及在i和j之间的一半数yh-ij界定的区域102中。如果无限精度结果y位于这个区域102中,则无限精度结果y可被正确地舍入到j和k中的一个。
这意味着在很多情况下,将计算结果yc舍入到输出精度将产生与将无限精度结果y舍入到输出精度相同的结果。然而,在计算结果yc和无限精度结果y之间仍然存在误差,其在y接近一半数yh时可使yc和y在一半数yh(在yc的两侧上在输出精度中的两个连续可表示数之间的一半数)的不同侧上,导致yc和y被不同地舍入。特别地,在一些情况下,y可以向上舍入,而yc可以向下舍入,反之亦然。
例如,图2示出在输出精度中的两个连续可表示数j和k,其中j小于k。在j和k之间的一半数yh被显示为点线。在如图2所示的在中间精度中的计算结果yc大于一半数yh且无限精度结果y小于一半数yh的情况下,输出应被向下舍入到在输出精度中的j,但是由于yc在一半数之上,因此yc将被不正确地向上舍入到k。这样的舍入误差在一些应用中可能是成问题的。
下面所述的实施方式仅作为例子被提供,且不限制解决用于准确地舍入浮点算术操作的输出的已知方法和系统的任何或所有缺点的实现。
概述
这个概述被提供来以简化的形式引入一系列概念,其在下面在详细描述中被进一步描述。这个概述并不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在用作帮助确定所要求保护的主题的范围。
在本文描述的是用于确定在输入浮点数上执行的反平方根运算的无限精度结果是否大于在第一浮点精度中的特定数字的方法和系统。该方法包括:计算在第二较低浮点精度中的特定数的平方;计算由于第二浮点精度而引起的在所计算的平方中的误差;通过计算该平方乘以输入浮点数减去一来计算在第一浮点精度中的第一增量值;通过计算误差乘以输入浮点数加上第一增量值来计算第二增量值;以及基于第二增量项来输出反平方根运算的无限精度结果是否大于特定数的指示。
第一方面提供被配置成确定在输入浮点数上执行的反平方根运算的无限精度结果是大于、小于还是等于在第一浮点精度中的特定数的系统,计算机系统包括:一个或多个乘加逻辑单元,其被配置成:计算在小于第一浮点精度的第二浮点精度中的特定数的平方;计算在所计算的平方中的舍入误差;通过计算该平方乘以输入浮点数减去一来计算在第一浮点精度中的第一增量值;以及通过计算舍入误差乘以输入浮点数加上第一增量值来计算第二增量值;以及输出模块,其被配置成基于第二增量值来输出反平方根运算的无限精度结果是大于、小于还是等于特定数的指示。
第二方面提供确定在输入浮点数上执行的反平方根运算的无限精度结果是大于、小于还是等于在第一浮点精度中的特定数的计算机实现的方法,该方法包括:计算在小于第一浮点精度的第二浮点精度中的特定数的平方;计算在所计算的平方中的舍入误差;通过计算该平方乘以输入浮点数字减去一来计算在第一浮点精度中的第一增量值;以及通过计算舍入误差乘以输入浮点数加上第一增量值来计算第二增量值;以及基于第二增量值来输出反平方根运算的无限精度结果是大于、小于还是等于特定数的指示。
第三方面提供计算机可读存储介质,其具有存储在其上的计算机可读指令,计算机可读指令当在计算机系统处被处理用于生成集成电路的表现形式时使计算机系统根据第一方面生成系统的表现形式。
第四方面提供计算机可读代码,当代码在计算机上运行时其适合于执行第二方面的方法的步骤。
第五方面提供计算机可读存储介质,其具有在其上编码的第四方面的计算机可读代码。
优选特征可在适当时被组合,如对技术人员明显的,并可与本发明的任何方面组合。
附图的简要说明
本发明的实施方式将参考以下附图通过例子来描述,其中:
图1是示出在中间精度中的计算结果的准确度的示意图,该中间精度可通过适当地选择保护位的数量来实现;
图2是示出舍入误差的示意图,其当在中间精度中的计算结果接近在较低输出精度中的两个可表示数字之间的一半数时出现;
图3是用于确定反平方根运算的无限精度结果是大于还是小于一半数的示例方法的流程图;
图4是示出用于确定计算结果是否在一半数的预定范围内的示例方法的示意图;
图5是示出两个浮点数的相乘的示意图;
图6是示出乘-加运算的表示的示意图;
图7是用于使用图3的方法来确定反平方根运算的无限精度结果是大于还是小于一半数的第一示例系统的方框图;
图8是用于使用图3的方法来确定反平方根运算的无限精度结果是大于还是小于一半数的第二示例系统的方框图;
图9是用于生成反平方根运算的准确地舍入的结果的示例系统的方框图;以及
图10是示例基于计算的设备。
共同的参考数字在全部附图中用于指示类似的特征。
详细描述
下面仅通过例子来描述本发明的实施方式。这些例子代表申请人当前已知的实施本发明的最佳方式,但是它们不是这可被实现的唯一方式。该描述阐述了例子的功能和用于构造并操作例子的步骤的顺序。然而,相同或等效的功能和顺序可由不同的例子实现。
如上所述,一些浮点算术运算硬件实现被配置成计算在高于输出精度的中间精度中的浮点算术运算的结果。如本领域中的技术人员已知的,浮点数的精度基于用于尾数的位的数量。在输出具有mw的尾数宽度的情况下,输出精度(或有效位数)是mw+1位(如上所述,浮点格式具有精度的隐含位)。中间精度具有xm个附加尾数位(也被称为保护位),使得中间精度是mw+1+xm位。例如,在输出是IEEE双精度的情况下,尾数宽度mw是52,其提供53位精度。在附加位xm的数量为三的情况下,中间精度是56位。
如上所述,通过适当地选择保护位或附加位的数量,可能能够得到在中间精度中的计算结果yc,其具有足够的准确度以确保如果计算结果yc不等于在较低输出精度中的可表示数字,则无限精度结果y可被正确地舍入到高于和低于计算结果yc的较低输出精度的两个连续可表示数字中的一个。
位于在较低输出精度中的那两个连续可表示数字之间的一半的数将在本文被称为一半数yh。相应地,一半数yh由在中间精度中的计算结果yc规定或确定。
在使用“就近舍入”舍入技术的情况下,当在中间精度中的计算结果yc大于一半数yh时,则结果将被向上舍入到在较低输出精度中的两个连续可表示数中的较高者;以及相反当在中间精度中的计算结果yc小于一半数yh时,则结果将被向下舍入到在较低输出精度中的两个连续可表示数中的较低者。如果计算结果等于一半数,则认为有“平局”并且平局决胜制被使用。不同的舍入技术或方法使用不同的平局决胜制。例如,当在RTE(就近舍入,打成平局)舍入方法中有平局时,如果舍入将产生相等结果(即,结果的最后一位为零)则结果被向上舍入,否则平局被向下舍入。然而,其它舍入方法可使用其它平局决胜制。
当在中间精度中的计算结果yc接近一半数yh时,在中间精度中的结果yc可落在一半数yh的错误侧上。换句话说,无限精度结果y可落在一半数yh的一侧上,而在中间精度中的计算结果yc可落在一半数yh的另一侧上。如上所述,这意味着在这些情况下,结果将被不正确地舍入。相应地,为了能够使用“就近舍入”舍入将在中间精度中的浮点算术运算yc的结果正确地舍入到较低输出精度,期望的是知道无限精度结果y是大于还是小于一半数yh。
对于很多浮点算术运算,可通过在单个不舍入步骤中反转算术运算并将这个与输入进行比较来准确地确定无限精度结果y是高于还是低于一半数yh。例如,如果浮点算术运算是在两个浮点数a和b之间的除法,则期望的是知道除数是否大于一半数yh,如在不等式(2)中所示:
不等式(2)可被重写为一半数yh和输入浮点数b的乘法减去输入浮点数a,如在不等式(3)中所示的。不等式(2)的这个重新布置基于输入a和b是正的假设。这个假设可被做出是因为绝对值可用于除法且符号可在计算结束时被校正。
yh×b-a<0 (3)
由于不等式(3)包括跟随有单个减法的单个乘法,因此不等式(3)可在一个步骤中使用单个融合乘加(FMA)部件来被准确地求值(即,无误差)。特别地,FMA可准确地确定不等式(3)的左手侧(即,yh×b-a)是大于还是小于零。在一些情况下,FMA也可被配置成特别识别并指示不等式(3)的左手侧何时恰好等于零。
如本领域中的技术人员已知的,FMA在一个步骤中利用单次舍入执行跟随有加法运算的乘法运算。特别地,非融合乘加(即,单独的乘法和加法部件)将计算两个浮点数a和b的乘积,将它舍入到N个有效位,然后将舍入的结果加到c,并舍入回到N个有效位。相反,FMA在将结果舍入到N个有效位之前将完全整个a×b+c到它的全精度。
类似地,如果浮点算术运算是浮点数a的平方根,则为了能够正确地舍入结果,期望的是知道a的平方根是否大于一半数yh,如在不等式(4)中所示:
如果假设一半数是正的,不等式(4)可被重写为一半数yh的平方减去输入a,如在不等式(5)中所示的:
yh 2-a<0 (5)
类似于不等式(3),由于不等式(5)包括跟随有单个减法的单个乘法,因此不等式(5)可使用单个FMA在一个步骤中被准确地求值(即,无误差)。具体地,FMA可准确地确定不等式(5)的左手侧(即,yh 2-a)是高于还是低于零。在一些情况下,FMA也可被配置成特别识别并指示不等式(5)的左手侧何时恰好等于零。
然而,对于一些浮点算术运算(例如,反平方根),不可能在单个不舍入步骤中计算算术运算的反转。例如,如果浮点算术运算是浮点数a的反平方根,则为了能够正确地舍入在中间精度中的计算结果yc,期望的是知道a的反平方根是否大于一半数yh c,如在不等式(6)中所示:
不等式(6)可被重写为不等式(7)、(8)和(9)中的任一个。然而,由于这些不等式中没有一个包括与单个加法/减法组合的单个乘法,因此它们不能使用FMA在单个步骤中被准确地计算。
(yh×a)2-a<0 (8)
yh 2×a-1<0 (9)
相应地,在本文中描述的是用于有效且准确地确定浮点数的反平方根的无限精度输出y是否大于由在中间精度中的计算结果yc指示的一半数yh的方法和硬件实现。如上所述,这允许在中间精度中的反平方根的计算结果yc被准确地舍入到较低输出精度。
在浮点数a上执行的反平方根运算的无限精度结果y是否大于一半数yh的确定可由上面所示的不等式(9)表示。确定(或准确)答案由于舍入误差不能通过简单地对在可得到的精度中的不等式求值来实现。然而,发明人已识别出,可在某些情况下通过将计算分解成一系列较小的计算使用现有的硬件来准确地求值不等式(9)。
现在参考图3,其示出用于通过经由一系列的方程式准确地对不等式(9)求值来确定在浮点数a上执行的反平方根运算的无限精度输出y是否大于一半数yh的方法300。方法300在块302处开始,其中输入浮点数a和在中间精度中的反平方根运算的计算结果yc从反平方根逻辑(未示出)中被接收到。一旦输入a和在中间精度中的结果yc被接收到,方法300就继续进行到块304。
在块304处,从在中间精度中的结果yc中确定一半数yh。如上所述,如果计算结果yc不等于在输出精度中的可表示数(即,保护位为零),则在中间精度中的计算结果yc将位于在较低输出精度中的两个连续可表示数之间。一半数yh是位于这两个连续可表示数之间的一半的在中间精度中的数字。
可通过将中间数yh设置为计算结果yc并接着将第一保护位设置为一并将保护位的其余部分设置为零来生成一半数yh。如上所述,与输出精度相比,中间精度具有xw个附加位或保护位。例如,如图4所示,如果xw等于3且计算结果yc是“10110111111”。通过将一半数yh设置为计算结果yc(“10110111111”)并接着将第一保护位设置为“1”并将保护位的其余部分设置为“0”来生成一半数,使得最终的一半数yh是“10110111100”。换句话说,一半数的前mw+1位被设置为计算结果yc的前mw+1位,保护位被设置为“1”,且其余保护位被设置为“0”。一旦一半数yh已被确定,方法300就继续进行到块306。
在块306处,被称为r的一半数yh的平方在较低输出精度中被计算。这由方程式(10)表示:
r=yh 2 (10)
一旦一半数yh的平方被计算出,方法300就继续进行到块308。
在块308处,由于在块306中的一半数yh的平方的计算受制于舍入误差,因此使用方程式(11)来确定与无限精度yh 2相比的所计算的r的误差e(在输出精度中):
e=yh 2-r (11)
由于方程式(11)包括单个乘法和单个加法/减法,因此它可使用FMA被准确地求值。具体地,由于一半数yh是在输出精度中(mw+1位的精度)的两个可表示数之间的一半,因此一半数yh需要的mw+2位的精度以被准确地表示。中间数的平方因此将需要2*(mw+2)位以基于乘法的规则被准确地表示。如果r在输出精度(mw+1)中被计算,则舍入误差在mw+1位之后出现,因此存在至多mw+3位的误差e。相应地,如果对于中间精度存在至少两个附加位或保护位(即,xm≥2),则误差e可以在中间精度中被准确地表示。
一旦平方中的误差已被确定,方法300就继续进行到块310。
在块310处,计算被称为dh或第一增量值的r×a-1。这在方程式(12)中示出:
dh=r×a-1 (12)
当重新布置方程式(9)时,这个项的关联变得明显。特别地,可按照一半数yh的平方来重新布置方程式(11),如在方程式(13)中所示:
yh 2=r+e (13)
使用方程式(13)代替在不等式(9)中的一半数yh的平方(例如,用r+e代替yh 2)产生不等式(14),其可被重新布置为不等式(15),这是由于(r+e)×a-1=(r×a-1)+e×a:
(r+e)×a-1<0 (14)
(r×a-1)+e×a<0 (15)
从不等式(15)中可看到,(r×a-1)是在识别无限精度结果y是大于还是小于一半数yh时的有效项。本发明人已识别出,当r×a足够接近于1时,可在使用FMA可得到的精度内准确地计算dh(即,没有舍入误差或无损)。这将在下面被更详细地描述。
一旦根据方程式(12)计算出dh,方法300就继续进行到块312。
在块312处,被称为d或第二增量值的dh+e×a在中间精度中被求值以确定无限精度结果y是大于还是小于一半数yh。这在方程式(16)中被示出:
d=dh+e×a (16)
可看到,方程式(16)可通过用dh代替(r×a-1)来从不等式(15)的左手侧生成。
由于FMA的单步骤舍入,d的符号对于任何输入a将是准确的。特别地,FMA可准确地确定d是小于(负)还是大于(正)零。这个确定可接着用于决定是向上还是向下舍入计算结果。在一些情况下,FMA可被配置为特别识别并指示d何时恰好等于零。
例如,若使用“就近舍入”舍入模式或技术,那么如果d是负的,则一半数yh小于无限精度结果y,因此在中间精度中的结果yh应被向上舍入;以及如果d是正的,yh大于无限精度结果y,且因此在中间精度中的结果yh应被向下舍入。如果d等于零,则它可根据平局决胜规则来被向上或向下舍入。例如,如上所述,当使用RTE舍入时,如果那将产生相等结果(即,结果的最后一位是零)则平局被向上舍入,否则平局被向下舍入。
一旦dh被计算出,方法300就继续进行到块314,其中基于d的值输出无限精度结果是大于、小于还是等于一半数的指示。在一些情况下,知道输出是否等于一半数可能不是相关的。例如,无限精度结果等于一半数也许是不可能的。在这些情况下,d的符号可被输出以指示无限精度结果y是大于还是小于一半数yh。
参考图3所述的方法300允许反平方根结果以使用最小和现有硬件(即,可能已经形成反平方根电路或逻辑单元例如FMA的部分的硬件)的方式被准确地舍入。方法300还可产生比假设第一增量dh具有需要被考虑的误差分量的其它方法更快的结果。例如,这样的方法可能需要通过FMA的额外(可能数百个)运行以正确地确定是向上舍入还是向下舍入。方法300还允许反平方根结果以非常少的附加或保护位被准确地舍入。
在一些例子中,在块304到314被执行之前,可做出关于在中间精度中的计算结果yc是否在一半数yh的预定范围内(即,它“接近”一半数)的确定。如果确定在中间精度中的计算结果yc在一半数yh的预定范围内,则方法300可继续进行到块304到314以确定无限精度结果y是大于、小于还是等于一半数yh。然后在中间精度中的计算结果yc可基于无限精度结果y是大于、小于还是等于中间数yh的确定而在输出精度中被向上或向下舍入。然而,如果确定在中间精度中的计算结果yc不在中间数yh的预定范围内(即,它“远”离中间数yh),则方法300可结束且计算结果yc可直接被舍入到在输出精度中的最接近的可表示数。
在一些情况下,在中间精度中的计算结果yc是否在中间数yh的预定范围内的确定可基于计算结果yc的附加或保护位。如上所述,输出结果具有mw+1位的精度,且计算结果yc具有带有可被称为保护位的xm个附加位的更高精度。例如,如图4所示,如果mw等于七且xm等于三,则可表示输出数(例如,j和k)将具有八位的精度,且计算结果yc将具有十一位的精度。
对于在输出精度(例如,mw+1位的精度)中的每对连续可表示数,将有位于它们之间的在中间精度中的2xm-1个可能的数字。例如,在图4中,xm=3,因此有位于两个连续可表示数j和k之间的在中间精度中的23-1=7个数字。位于在较低输出精度中的两个可表示数之间的在中间精度中的每个数具有相同的前mw+1位(其等于在较低输出精度中的两个可表示数中的较低者);然而,附加/保护位不同。例如,在j=10110111和k=10111000之间的可能的中间值中的每个包括跟随有附加三个位的序列“10110111”。
在一些情况下,其中xm等于三,如果附加位/保护位如图4所示包括包含端点的模式010到110,则计算结果将被确定为在中间数yh的预定范围内。
对本领域中的技术人员将明显的是,这仅仅是例子,以及其它方法和技术可用于确定在中间精度中的计算结果是否在中间数yh的预定范围内。例如,不同范围的保护位模式可用于确定计算结果yc是否在中间数yh的预定范围内。通常,预定范围(例如,中间值的范围)基于在中间精度中的计算结果yc的准确度。
r×a-1的准确求值
如上所述,本发明人已识别出,当r×a接近于一时,r×a-1可在中间精度中被准确地表示。这允许方程式(12)从不等式(15)中被挑出并被单独地被求值而不产生由于舍入误差而引起不准确结果。对本领域中的技术人员这种情况将不是显而易见的。
特别地,中间数yh大致等于输入浮点数a的反平方根,如在方程式(17)中所示:
方程式(17)可被重写为等式(18)以反映与反平方根的无限精度结果y相比的在yh中的精确相对误差ε:
类似地,r大致等于yh 2,如在方程式(19)中所示:
方程式(19)可被重写为方程式(20)以反映与无限精度结果yh 2相比的舍入误差κ:
r=yh 2(1+κ) (20)
方程式(12)然后可按照方程式(20)被写出(即,用yh 2(1+κ)代替r)以产生方程式(21):
dh=yh 2(1+κ)×a-1 (21)
dh=(1+ε)2(1+κ)-1 (23)
dh=(1+2ε+ε2)(1+κ)-1 (24)
dh=1+2ε+ε2+κ+2κε+κε2-1 (25)
dh=2ε+ε2+κ+2κε+κε2 (26)
从方程式(26)中,明显的是,如果2ε+ε2+κ+2κε+κε2可在可得到的精度中被准确地表示(即,无舍入),则dh可被准确地计算。
如图5所示,分别具有X位和Z位的精度的两个浮点数r和a的相乘将需要X+Z位的精度以准确地表示结果。例如,如果r和a都使用IEEE双精度(其提供53位的精度)被表示(因此,X=Z=mw+1=53),则r和a的相乘结果将需要106位的精度以被准确地表示。
然而,如果乘法r×a的结果接近于一,则从乘法r×a中减去一(其可在一个步骤中使用FMA来完成)将产生X+Z位数字,但具有多个前导零。如果F是对FMA的结果可得到的精度的位的数量,则结果可在可得到的精度中被准确地表示,如果前X+Z-F位是零的话,如图6所示。这意味着r×a-1可被准确地表示,如果它小于2-(X+Z-F)的话。
在r和a在输出精度中被表示的情况下,则对于a和r的精度的位是mw+1(X=Z=mw+1),且F是具有mw+xw+1位的精度的中间精度(F=mw+1+xw)。在这种情况下,如果其绝对值(即,|a|)小于2-(mw+1+mw+1-(mw+1+xw))=2-(mw+1-xw),则r×a-1可被准确地表示(即,没有舍入误差)。例如,如果r和a都使用IEEE双精度来表示,其根据表1提供53位的精度(即,mw+1=53)且中间精度提供对于尾数的3个附加位(即,xw=3),则r×a-1的结果可被准确地表示,如果它的绝对值小于2-(53-3)=2-50的话。
相应地,从方程式(26)中明显的是,当r和a的每个具有mw+1位的精度且r×a-1可利用mw+1+xm位的精度被准确地表示时,如果|2ε+ε2+κ+2κε+κε2|小于2-(mw-xw),如在不等式(27)中所示:
|2ε+ε2+κ+2κε+κε2|<2-(mw+1-xw) (27)
不等式(27)将总是为真,如果不等式(28)为真:
2|ε|+|ε|2+|κ|+2|κ||ε|+|κ||ε|2<2-(mw+1-xw) (28)
由于r在输出精度中被表示(即,存在mw+1位的精度)且κ是在计算r中的舍入误差,因此κ的绝对值将小于或等于2-(mw+1),如在不等式(29)中所示:
|κ|≤2-(mw+1) (29)
如果不等式(28)按照不等式(29)被重写(即,|κ|用2-(mw+1)来代替),则结果是不等式(30):
2|ε|+|ε|2+2-(mw+1)+2-mw|ε|+2-(mw+1)|ε|2<2-(mw+1-xw) (30)
从不等式(30)中明显的是,如果在一半数yh和无限精度结果y之间的误差ε满足不等式(30),则r×a-1可在中间精度(具有mw+1+xm位的精度)中被准确地表示(即,没有舍入误差)。这将出现在例如ε<2-mw和xw至少是二时。有可能的是,使用诸如Newton Raphson的方法来生成具有2-(mw+1)的准确度的yc。在情况就是这样的场合,yh将具有在2-mw内的最大误差。
用于实现图3的方法的第一示例系统
现在参考图7,其示出用于根据图3的方法300来确定在浮点数a上执行的反平方根计算的无限精度结果y是大于还是小于由在中间精度中的计算结果yc指示的中间数yh的第一示例系统700。计算机系统700接收在输出精度中的输入浮点数a和在中间精度中的计算结果yc作为输入,并输出反平方根计算的无限精度结果y是大于、小于还是等于一半数yh的指示。如参考图9所述的,输出指示可然后被用于确定在中间精度中的计算结果yc应在较低输出精度中被向上舍入还是向下舍入。
系统700包括一半数生成逻辑702、平方逻辑704、三个乘加逻辑706、708和710以及输出逻辑712。
一半数生成逻辑702接收在中间精度中的计算结果yc(即,它具有mw+1+xm位的精度),并基于计算结果生成且输出一半数yh。如上所述,一半数yh是在中间精度中的数字(即,具有mw+1+xm位的精度),其位于在计算结果之下的在输出精度中的最接近的可表示数和在计算结果之上的在输出精度中的最接近的可表示数之间的一半。
一半数yh可通过将yh的附加位或保护位设置为“100....”来从计算结果yc中生成。例如,如果计算结果yc等于“10110111111”并具有三个保护位(即,最后三位是附加位),则一半数yh等于“10110111100”。
在一些情况下,系统700还可包括逻辑单元(未示出),其确定计算结果是否在较低输出精度中是可表示的(指示它是正确地舍入的输出结果),且如果确定计算结果在较低输出精度中不是可表示的则只将计算结果转发到平方逻辑702。例如,逻辑单元可被配置成如果附加或保护位为零则确定计算结果在较低输出精度中是可表示的。
平方逻辑704被耦合到一半数生成逻辑702的输出端以接收一半数yh。平方逻辑704被配置成计算并输出被称为r的一半数yh的平方。例如,平方逻辑704可被配置成求值上面所述的方程式(10)。在一些情况下,一半数的所计算的平方r被表示在输出精度(即,具有mw+1位或精度)中。在一些情况下,平方逻辑704可使用被配置成计算例如yh*yh+0或yh*yh-0的融合乘加部件来实现。
第一乘加逻辑706被耦合到一半数生成逻辑702的输出端和平方逻辑704的输出端以接收一半数yh和一半数的所计算的平方r。第一乘加逻辑706被配置成计算并输出被称为e的在所计算的平方r中的误差。在一些情况下,第一乘加逻辑706可被配置成通过在一个步骤中计算一半数yh的平方减去一半数的所计算的平方r来计算在所计算的平方r中的误差。例如,第一乘加逻辑706可被配置成对上面所述的方程式(11)求值。在一些情况下,第一乘加逻辑706可被配置成在执行计算之前使平方逻辑的输出反转(即,使r反转)。在其它情况下,可以有在平方逻辑704的输出端和第一乘加逻辑706的输入端之间的反转器或求反逻辑。如图7所示,第一乘加逻辑706可被实现为融合乘加部件。
第二乘加逻辑708被耦合到浮点输入a和平方逻辑704的输出端以接收浮点输入a和一半数的所计算的平方r。第二乘加逻辑708被配置成计算并输出被称为dh或第一增量值的r×a-1。例如,第二乘加逻辑708可被配置成对上面所述的方程式(12)求值。在一些情况下,dh或第一增量值在中间精度中被表示(即,使用mw+1+xm个尾数位)。如图7所示,第二乘加逻辑708可被实现为融合乘加部件。
第三乘加逻辑710被耦合到浮点输入a、第一乘加逻辑706的输出端和第二乘加逻辑708的输出端以接收浮点输入a、在一半数的所计算的平方中的所计算的误差e和所计算的dh或第一增量值。第三乘加逻辑710被配置成在单个舍入步骤中计算并输出被称为d或第二增量值的dh+e×a。例如,第三乘加逻辑710可被配置成对上面所述的方程式(16)求值。如图7所示,第三乘加逻辑710可被实现为融合乘加部件。
如上所述,d的符号正确地或准确地指示反平方根运算的无限精度结果y是大于还是小于一半数yh。在使用“舍入到最接近的舍入”的情况下,如果d是负的,则一半数yh小于无限精度结果y,且在中间精度中的结果yc应被向上舍入;以及如果d是正的,则一半数yh大于无限精度结果y,且在中间精度中的结果yc应被向下舍入。
输出逻辑712被耦合到第三乘加逻辑710的输出端以接收d。输出逻辑712被配置成基于所接收的d来输出无限精度结果是高于、低于还是等于一半数的指示。例如,输出逻辑712可被配置成当d或第二增量值是正的时输出“1”而当d或第二增量值是负的时输出“0”。在一些情况下,输出逻辑712可仅输出输入d的符号位s。
系统700可被实现在硬件(例如,作为在计算机处理器中的固定功能电路)、软件(例如,在处理器上将执行的软件)或硬件和软件的组合中。完全在硬件中实现系统700可允许更快的计算。
用于实现图3的方法的第二示例系统
参考图8,其示出用于根据图3的方法300来确定在浮点数a上执行的反平方根计算的无限精度结果y是大于、小于还是等于由在中间精度中的计算结果yc指示的一半数yh的第二示例系统800。像图7的计算机系统700一样,计算机系统800接收在输出精度中的输入浮点数a和在中间精度中的计算结果yc作为输入,并输出反平方根计算的无限精度结果y是大于、小于还是等于一半数yh的指示。如参考图9所述的,输出指示可然后被用于确定在中间精度中的计算结果yc是应在较低输出精度中被向上舍入还是向下舍入。
像图7的系统700一样,系统800包括一半数生成逻辑802和输出逻辑812,其以与图7的一半数生成逻辑702和输出逻辑712相同的方式操作以生成一半数并输出无限精度结果是否分别高于、低于或等于一半数的指示。然而,不是具有专用于计算特定方程式的多个部件,图8的系统800包括被配置成在多个系统周期(例如,时钟周期)上执行图7的乘加逻辑706、708、710和平方逻辑704的功能的单个乘加逻辑820。
例如,在第一时钟周期中,乘加逻辑820可计算并输出被称为r的一半数yh的平方。例如,乘加逻辑820可被配置成在第一时钟周期中对上面所述的方程式(10)求值。
在第二时钟周期中,乘加逻辑820可计算并输出被称为e的在所计算的平方r中的误差。在一些情况下,乘加逻辑820可被配置成通过在一个步骤中计算一半数yh的平方减去一半数的所计算的平方r来计算在所计算的平方r中的误差。例如,乘加逻辑820可被配置成在第二时钟周期中对上面所述的方程式(11)求值。
在第三时钟周期中,乘加逻辑820可计算并输出被称为dh或第一增量值的r×a-1。例如,乘加逻辑820可被配置成在第三时钟周期中对上面所述的方程式(12)求值。
在第四时钟周期中,乘加逻辑820可在单个舍入步骤中计算并输出被称为d或第二增量值的dh+e x a。例如,乘加逻辑810可被配置成在第四时钟周期中对上面所述的方程式(16)求值。
对本领域中的计算人员将明显的是,这是计算的排序的例子,且在其它例子中可以用另一顺序执行计算。例如,在一些情况下,可在第二时钟周期中计算dh并在第三时钟周期中计算e。
系统800还可包括被配置成在每个周期(例如,时钟周期)中向FMA提供适当的输入的控制逻辑822。例如,控制逻辑822可被配置成接收输入浮点数a、一半数yh和FMA 820的输出作为输入,并对于每个周期(例如,时钟周期)从这些输入中选择对FMA 820的适当输入。
例如,在FMA 820在第一时钟周期中接收三个输入的情况下,其中前两个输入表示将会相乘的两个数,而第三输入表示被加到乘法的结果的数,控制逻辑822可被配置成提供一半数yh作为对FMA 820的前两个输入并提供零作为对FMA 820的第三输入。在第二时钟周期中,控制逻辑822可被配置成提供一半数yh作为FMA 820的前两个输入并提供一半数的负平方r作为FMA 820的第三输入。在第三时钟周期中,控制逻辑822可被配置成提供一半数的平方r和输入浮点数a作为FMA 820的前两个输入并提供-1作为FMA 820的第三输入。在第四时钟周期中,控制逻辑822可被配置成提供平方中的误差e和输入浮点数a作为FMA 820的前两个输入并提供第一增量值dh作为FMA 820的第三输入。
控制逻辑822可在硬件或软件中被实现。例如,在一些情况下,控制逻辑822可被实现为一个或多个复用器。
系统800还可包括用于在特定周期(例如,时钟周期)中存储FMA 820的输出的一个或多个存储单元824用于在以后的周期(例如,时钟周期)中使用。例如,一个或多个存储单元824可被配置成存储输出r和e用于在以后的计算(例如,之后的周期中)中使用。
一个或多个存储单元824可被连接或以其他方式耦合到FMA 820的输出端以接收输出;并被连接或以其他方式耦合到控制逻辑822的输入端以提供所存储的输出作为对控制逻辑822的输入。一个或多个存储单元824可使用适合于存储二进制数的任何存储机构(诸如但不限于一个或多个寄存器或一个或多个存储器单元)来实现。
系统800可在硬件(例如,作为在计算机处理器中的固定功能电路)、软件(例如,在处理器上将被执行的软件)或硬件和软件的组合中实现。完全在硬件中实现系统800可允许更快的计算。
系统800可依据实现系统所需的硬件和空间提供优于系统700的显著提高,这是由于只有单个乘加部件(例如,FMA)用于执行所有计算。
对本领域中的技术人员将明显的是,系统700和800仅仅是例子,以及可以用另一方式实现用于确定浮点反平方根运算的无限精度结果y是高于还是低于一半数的上面参考图3所述的方法300。例如,在其它例子中,系统可以不包括输出逻辑712或812,并可以可选地被配置成直接输出由第三乘加逻辑710或单个乘加部件820生成的d。
用于生成准确地舍入的反平方根结果的示例系统
现在参考示例系统900,其用于生成在正确或准确地被舍入到输出精度(例如,mw+1位的精度)的浮点输入数a上执行的反平方根运算的结果yr。系统900包括反平方根逻辑902、实现图3的方法300的高于或低于一半数系统904(例如,系统700或800)以及舍入逻辑906。
反平方根逻辑902被配置成接收在输出精度中的浮点数a。反平方根逻辑902被配置成计算并输出在高于输出精度(例如,mw+1位的精度)的中间精度(例如,mw+1+xm位的精度)中的输入浮点数a的反平方根。与无限精度结果y相比,在中间精度中的计算结果yc具有严格地小于2-(mw+1)的相对误差。反平方根逻辑902可被配置成使用适当的方法用于以所需准确度计算a的反平方根。例如,反平方根逻辑902可被配置成使用收敛近似技术(诸如但不限于Newton-Raphson技术或Goldschmidt技术)来计算a的反平方根。
高于或低于一半数系统904(例如,系统700或800)被耦合到输入浮点数a和反平方根逻辑902的输出端以接收在输出精度中的输入浮点数a和在中间精度中的计算结果yc。如上面关于图7和图8所述的,高于或低于一半数系统904被配置成从输入浮点数a和在中间精度中的计算结果yc中生成反平方根的无限精度结果y是大于、小于还是等于由在中间精度中的计算结果yc指示的一半数yh的准确指示(例如,sign(d))。
舍入逻辑906被耦合到反平方根逻辑902的输出端以及高于或低于一半数系统904的输出端以接收在中间精度中的计算结果yc和指示无限精度结果是大于、小于还是等于一半数yh的指示(例如,sign(d))。舍入逻辑906被配置成基于指示(例如,sign(d))和所使用的特定舍入技术来将在中间精度中的计算结果yc正确地舍入到输出精度。
例如,如果“就近舍入”舍入技术或方法被使用且高于或低于一半数系统904的输出(例如,sign(d))指示无限精度结果y大于一半数yh,则舍入逻辑906可被配置成将计算结果向上舍入到大于计算结果yc的在输出精度中的第一可表示数;以及如果高于或低于一半数系统904的输出(例如,sign(d))指示无限精度结果小于一半数yh,则舍入逻辑906可被配置成将计算结果yc向下舍入到小于计算结果yc的在输出精度中的第一可表示数。
如果无限精度结果等于一半数,则平局决胜技术被使用。例如,如上所述,如果使用RTE(就近舍入,打成平局)舍入方法或技术,那么如果其将产生相等结果(即,结果的最后位是0)则计算结果被向上舍入,否则计算结果被向下舍入。
在输出精度具有mw+1位的精度的情况下,则向下舍入计算结果yc可包括将输出结果yr设置为计算结果yc的前mw位,以及向上舍入计算结果yc可包括将输出结果设置为计算结果yc的前mw位并加1。例如,如图4所示,如果在中间精度中的计算结果yc具有3个保护位的11位长并等于“10110111111”,则将计算结果yc向上舍入到k包括选择前8位(“10110111”)并加1,这产生“10111000”;以及将计算结果yc向下舍入到j包括选择前8位(“10110111”)。
系统900可在硬件(例如,作为在计算机处理器中的固定功能电路)、软件(例如,在处理器上将被执行的软件)或硬件和软件的组合中实现。完全在硬件中实现系统900可允许更快的计算。
对本领域中的技术人员将明显的是,计算机系统900是用于使用上面参考图3所述的方法300来确定反平方根运算的准确舍入的结果以确定浮点反平方根运算的无限精度结果y是高于还是低于一半数的系统的例子,且使用本文所述的原理和技术的其它系统可以用不同的方式来实现。
例如,在其它例子中,系统还可包括决策逻辑(未示出),其被配置成接收计算结果yc并确定在中间精度中的计算结果yc是否足够远离一半数yh,使得它可直接被舍入,而不首先确定无限精度结果是高于还是低于一半数yh。在一些情况下,如上所述,决策逻辑可被配置成确定当计算结果yc的保护位具有特定的模式(例如,“010…”到“010…”,包括端点)时计算结果yc“接近”于一半数yh)。决策逻辑的输出可然后被提供到舍入逻辑906以确定计算结果是否可被直接舍入而没有来自高于或低于一半数系统904的输出。
虽然参考使用“就近舍入”舍入技术或模式将在中间精度中的所计算的输出舍入到较低输出精度而描述了上面所述的方法和系统,但是上面所述的方法和原理可类似地应用于在某些情况下使用其它舍入技术将在中间精度中的所计算的输出舍入到较低输出精度。
例如,如果使用“定向舍入”技术或模式,其在特定方向(例如,朝着零、远离零、朝着负无限、朝着正无限)上舍入而不是如在“就近舍入”舍入技术或模式中的仅到最接近的可表示值,则取代确定无限精度结果是高于还是低于一半数,期望的是知道无限精度结果是高于、低于还是等于对计算结果的在较低输出精度中的最接近的可表示数。相应地,在这些情况下,不是从计算结果yc中识别一半数yh,而是在较低输出精度中的最接近的可表示数ya,从计算结果yc中被识别。
特别地,计算结果yc将位于两个一半数之间。如上所述,一半数是在位于在较低输出精度中的两个连续可表示数之间一半的中间精度中的数。最接近的可表示数将是在位于计算结果yc的两侧上的两个一半数之间的在较低精度中的可表示数。
如果计算结果足够准确以保证无限精度结果y将准确或正确地被舍入到在较低输出精度中的最接近的可表示数ya或在较低输出精度中的下一最接近的可表示数yb,其中下一最接近的可表示数yb是基于舍入方向的高于或低于最接近的可表示数ya的可表示数;则图3的方法300可用于确定无限精度结果y是高于、低于还是等于最接近的可表示数ya。通常,当计算结果yc被保证在无限精度结果y的2mw+1内时,计算结果yc被考虑为足够准确。
对于朝着零的舍入,下一最接近的可表示数yb是在零的方向上从最接近的可表示数ya起的下一可表示数;以及对于朝着正无限的舍入,下一最接近的可表示数yb是在正无限的方向上从最接近的可表示数ya起的下一可表示数。
如果计算结果yc足够准确,则一旦从计算结果yc识别出最接近的可表示数ya,则图3的方法300就可用于通过用最接近的可表示数ya代替一半数yh来确定无限精度结果是高于、低于还是等于最接近的可表示数ya。基于这个确定,在中间精度中的计算结果yc可根据特定的舍入技术或模式被正确地舍入。
例如,如果确定无限精度结果y在最接近的可表示数ya的与下一最接近的可表示数yb相同的侧上,则计算结果可被舍入到下一最接近的可表示数yb。否则,如果确定无限精度结果y与下一最接近的可表示数yb相比在最接近的可表示数ya的相对的侧上或等于最接近的可表示数ya,则无限精度结果y可被舍入到最接近的可表示数ya。
通常,在本文所述的方法(例如,方法300)和系统(例如,系统700和800)可用于识别反平方根计算的无限精度结果y是高于、低于还是等于特定数t,只要该特定数t足够接近反平方根计算的无限精度结果y。通常地,如果不等式(30)被满足,则特定数t被考虑为足够接近,其中ε是在特定数t和无限精度结果y之间的误差。
在所述确定的目的是使用“就近舍入”舍入技术或模式将在中间精度中的计算结果yc准确地舍入到较低输出精度的情况下,则特定数t是由计算结果yc指示的一半数yh。在所述确定的目的是使用“定向舍入”技术或模式将在中间精度中的计算结果yc准确地舍入到较低输出精度的情况下,则特定数t是由计算结果yc指示的最接近的可表示数ya。在确定是用于另一目的情况下,特定数t可以是另一个数。
图10示出示例性基于计算的设备1000的各种部件,其可被实现为计算和/或电子设备的任何形式,以及其中上面所述的方法和系统的实施方式可被实现。
基于计算的设备1000包括一个或多个处理器1002,其可以是微处理器、控制器或用于处理计算机可执行指令以控制设备的操作以便确定反平方根运算的无限精度结果是低于还是高于一半数的任何其它适当类型的处理器。在一些例子中,例如其中片上系统架构被使用的例子,处理器1002可包括在硬件(而不是软件或固件)中实现图3的方法的一部分的一个或多个固定功能块(也被称为加速器)。可在基于计算的设备处提供包括操作系统1004的平台软件或任何其它适当的平台软件以使应用软件1006能够在设备上被执行。
计算机可执行指令可使用由基于计算的设备1000可访问的任何计算机可读介质来提供。计算机可读介质可包括例如计算机存储介质(诸如存储器1008)和通信介质。计算机存储介质(即,非临时机器可读介质)(诸如存储器1008)包括在任何方法或技术中实现的易失性和非易失性、可移动和不可移动的介质,用于存储信息,诸如计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁性存储设备或可用于存储信息用于由计算设备访问的任何其它非传输介质。相反,通信介质可体现计算机可读指令、数据结构、程序模块或在诸如载波的调制数据信号中的其他数据或其它传输介质。如在本文定义的,计算机存储介质不包括通信介质。虽然计算机存储介质(即,非临时机器可读介质,例如存储器1008)被显示在基于计算的设备1000内,但是将认识到,存储器可远程地分布或定位并经由网络或其它通信链路(例如,使用通信接口1010)被访问。
基于计算的设备1000还包括被布置成向可与基于计算的设备1000分离或成一整体的显示设备1014输出显示信息的输入/输出控制器1012。显示信息可提供图形用户界面。输入/输出控制器1012也被布置成接收并处理来自一个或多个设备的输入,该设备诸如用户输入设备1016(例如,鼠标或键盘)。在实施方式中,显示设备1014也可充当用户输入设备1016,如果它是触敏显示设备。输入/输出控制器1012也可向不同于显示设备的设备(例如,本地连接的打印设备(未在图10中示出))输出数据。
术语“处理器”和“计算机”在本文指的是具有处理能力使得它可执行指令的任何设备或其部分。术语“处理器”可例如包括中央处理单元(CPU)、图形处理单元(GPU或VPU)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如,通用GPU)、微处理器、被设计成加速CPU外部的任务的任何处理单元等。本领域中的技术人员将认识到,这样的处理能力被合并到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字收音机、PC、服务器、移动电话、个人数字助理和很多其它设备。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可被分布在网络当中。例如,远程计算机可存储被描述为软件的过程的例子。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段,或在本地终端处执行一些软件指令并在远程计算机(或计算机网络)处执行一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路(诸如DSP、可编程逻辑阵列等)执行。
本文所述的方法可由配置有软件的计算机执行,软件是以机器可读形式存储在有形存储介质上,例如,以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码模块的计算机程序的形式,且其中计算机程序可体现在计算机可读存储介质上。有形(或非临时)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
本文描述的硬件部件可由非临时计算机可读存储介质生成,非临时计算机可读存储介质具有在其上编码的计算机可读程序代码。
其还旨在包括“描述”或定义实现上面所述的模块、功能、部件或逻辑的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如对设计集成电路或对配置可编程芯片所使用的,以实现期望功能。也就是说,可提供在其上编码计算机可读程序代码的计算机可读存储介质,用于生成被配置成执行本文所述的任何方法的处理单元或用于生成包括本文所述的任何装置的处理单元。也就是说,计算机系统可被配置成从电路元件的定义和用于定义用于组合那些电路元件的规则的数据生成数字电路的表示,其中非临时计算机可读存储介质可在其上存储处理器可执行指令,其当在这样的计算机系统处被执行时使计算机系统生成如本文所述的处理单元。例如,非临时计算机可读存储介质可在其上存储计算机可读指令,其当在计算机系统处被处理用于生成集成电路的表现形式时使计算机系统生成如在本文的例子中所述的处理器的表现形式或生成被配置成执行如在本文的例子中所述的方法的处理器的表现形式。处理器的表现形式可以是处理器本身或处理器(例如,掩码)的表示,其可用于生成处理器。
存储机器可执行数据用于在实现所公开的方面时使用的存储器可以是非临时介质。非临时介质可以是易失性的或非易失性的。易失性非临时介质的例子包括基于半导体的存储器,诸如SRAM或DRAM。可用于实现非易失性存储器的技术的例子包括光学和磁性存储器技术、闪存、相变存储器、电阻式RAM。
对“逻辑”的特定引用指的是执行一种或多种功能的结构。逻辑的例子包括被布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为例子,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(诸如寄存器、触发器或锁存器)、逻辑运算符(诸如布尔运算)、数学运算符(诸如加法器、乘法器或移位器)以及互连的电路或结构。这样的元件可被提供作为定制电路或标准单元库、宏或在其它抽象级处。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制中被提供。被识别为执行一种功能的逻辑也可包括实现子组成功能或子过程的逻辑。在例子中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。
本文给出的任何范围或设备值可被扩展或改变而不失去所寻求的效应,如对技术人员将明显的。
将理解,上面所述的益处和优点可与一个实施方式有关或可与几个实施方式有关。实施方式不限于解决任何或全部所陈述的问题的实施方式或具有任何或所有所陈述的益处和优点的实施方式。
对“一个”项目的任何引用指的是那些项目中的一个或多个。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身不是隐含地封闭的。
本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不旨在排除其它顺序或并行执行多个步骤。此外,单独的块可从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的任何例子的方面可与所描述的其它例子中的任一个的方面组合以形成另外的例子,而不失去所寻求的效果。在附图的元件被示为由箭头连接的情况下,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。
将理解,优选实施方式的上述描述仅作为例子被给出,以及各种修改可由本领域中的技术人员做出。虽然上面以某个详细程度或参考一个或多个单独的实施方式描述了多个实施方式,但本领域中的技术人员可对所公开的实施方式进行很多变更而不偏离本发明的精神或范围。
Claims (18)
1.一种被配置成确定在输入浮点数上执行的反平方根运算的无限精度结果是大于、小于还是等于在第一浮点精度中的特定数的系统,所述系统包括:
一个或多个融合乘加部件,其被配置成:
(a)计算在小于所述第一浮点精度的第二浮点精度中的所述特定数的平方;
(b)计算在所计算的平方中的舍入误差;
(c)通过计算所述平方乘以所述输入浮点数减去一来计算在所述第一浮点精度中的第一增量值;以及
(d)通过计算所述舍入误差乘以所述输入浮点数加上所述第一增量值来计算在所述第一浮点精度中的第二增量值;以及
输出模块,其被配置成基于所述第二增量值的符号来输出所述反平方根运算的所述无限精度结果是大于、小于还是等于所述特定数的指示。
2.如权利要求1所述的系统,其中,所述系统包括被配置成在不同周期中执行(a)、(b)、(c)和(d)中的每个的仅一个融合乘加部件。
3.如权利要求1所述的系统,还包括决策逻辑,其被配置成通过确定所述反平方根运算的计算结果是否包括一个或多个预定位模式中的一个来确定在所述第一浮点精度中的所述计算结果是否在所述特定数的预定范围内,并仅响应于确定所述计算结果在所述预定范围内而调用所述一个或多个融合乘加部件。
4.如权利要求3所述的系统,其中,所述第一浮点精度包括至少两个保护位,以及所述决策逻辑被配置成通过确定所述计算结果的所述至少两个保护位是否包括一个或多个预定位模式中的一个来确定所述计算结果是否在所述特定数的所述预定范围内。
5.如权利要求1所述的系统,还包括特定数生成逻辑单元,其被配置成基于所接收的在所述第一浮点精度中的所述反平方根运算的计算结果来生成在所述第一浮点精度中的所述特定数。
6.如权利要求5所述的系统,其中,所述特定数是位于在所述计算结果的两侧上的所述第二浮点精度中的两个连续可表示数之间一半的、在所述第一浮点精度中的数。
7.如权利要求6所述的系统,其中,所述第一浮点精度包括至少两个保护位,以及所述特定数生成逻辑单元被配置成通过将所述特定数设置为所述计算结果并然后将所述至少两个保护位的最高有效位设置为一并将所述至少两个保护位的其余部分设置为零来生成所述特定数。
8.如权利要求1所述的系统,其中,所述系统被体现在集成电路上的硬件中。
9.一种生成在输入浮点数上执行的反平方根计算的准确地舍入的结果的系统,包括:
反平方根计算模块,其被配置成生成在第一浮点精度中的所述反平方根计算的计算结果;
如权利要求1所述的系统;以及
舍入逻辑,其被配置成根据特定舍入方法基于所输出的指示来将所述计算结果舍入到所述第二浮点精度。
10.如权利要求9所述的生成在输入浮点数上执行的反平方根计算的准确地舍入的结果的系统,其中,所述舍入逻辑被配置成:响应于所述输出的指示指示所述无限精度结果大于所述特定数而在一个方向上舍入所述计算结果,并响应于所述输出的指示指示所述无限精度结果小于所述特定数而在另一方向上舍入所述计算结果。
11.如权利要求9所述的生成在输入浮点数上执行的反平方根计算的准确地舍入的结果的系统,其中,所述特定舍入方法是舍入到最接近的舍入方法,使得所述舍入逻辑被配置成响应于所述输出的指示指示所述无限精度结果大于所述特定数而向上舍入所述计算结果,并响应于所述输出的指示指示所述无限精度结果小于所述特定数而向下舍入所述计算结果。
12.一种确定在输入浮点数上执行的反平方根运算的无限精度结果是大于、小于还是等于在第一浮点精度中的特定数的方法,所述方法包括:
(a)在融合乘加部件处计算在小于所述第一浮点精度的第二浮点精度中的所述特定数的平方;
(b)在融合乘加部件处计算在所计算的平方中的舍入误差;
(c)在融合乘加部件处通过计算所述平方乘以所述输入浮点数减去一来计算在所述第一浮点精度中的第一增量值;以及
(d)在融合乘加部件处通过计算所述舍入误差乘以所述输入浮点数加上所述第一增量值来计算在所述第一浮点精度中的第二增量值;以及
(e)基于所述第二增量值的符号来输出所述反平方根运算的所述无限精度结果是大于、小于还是等于所述特定数的指示。
13.如权利要求12所述的方法,其中,(a)、(b)、(c)和(d)中的每个由同一融合乘加部件在不同的周期中执行。
14.如权利要求12所述的方法,还包括通过确定所述反平方根运算的计算结果是否包括一个或多个预定位模式中的一个来确定在所述第一浮点精度中的所述计算结果是否在所述特定数的预定范围内;以及仅响应于确定所述计算结果在所述预定范围内而执行(a)到(e)。
15.如权利要求12所述的方法,还包括通过选择位于在所述反平方根运算的所接收的计算结果的两侧上的所述第二浮点精度中的两个连续可表示数之间一半的在所述第一浮点精度中的数基于在所述第一浮点精度中的所述计算结果来生成在所述第一浮点精度中的所述特定数。
16.一种生成在输入浮点数上执行的反平方根计算的准确地舍入的结果的方法,包括:
生成在第一浮点精度中的所述反平方根计算的计算结果;
执行如权利要求12所述的方法;以及
根据特定舍入方法基于所输出的指示来将所述计算结果舍入到所述第二浮点精度。
17.如权利要求16所述的生成在输入浮点数上执行的反平方根计算的准确地舍入的结果的方法,其中,舍入所述计算结果包括:响应于所述输出的指示指示所述无限精度结果大于所述特定数而在一个方向上舍入所述计算结果,并响应于所述输出的指示指示所述无限精度结果小于所述特定数而在另一方向上舍入所述计算结果。
18.如权利要求16所述的生成在输入浮点数上执行的反平方根计算的准确地舍入的结果的方法,其中,所述特定舍入方法是舍入到最接近的舍入方法,使得舍入所述计算结果包括:响应于所述输出的指示指示所述无限精度结果大于所述特定数而向上舍入所述计算结果,并响应于所述输出的指示指示所述无限精度结果小于所述特定数而向下舍入所述计算结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1518478.1A GB2543511B (en) | 2015-10-19 | 2015-10-19 | Rounding reciprocal square root results |
GB1518478.1 | 2015-10-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107038014A CN107038014A (zh) | 2017-08-11 |
CN107038014B true CN107038014B (zh) | 2022-07-01 |
Family
ID=55131257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610911752.2A Active CN107038014B (zh) | 2015-10-19 | 2016-10-19 | 舍入反平方根结果 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11294625B2 (zh) |
EP (1) | EP3159788B1 (zh) |
CN (1) | CN107038014B (zh) |
GB (1) | GB2543511B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592208B2 (en) * | 2018-05-07 | 2020-03-17 | International Business Machines Corporation | Very low precision floating point representation for deep learning acceleration |
US10963219B2 (en) | 2019-02-06 | 2021-03-30 | International Business Machines Corporation | Hybrid floating point representation for deep learning acceleration |
GB2582146B (en) * | 2019-03-11 | 2021-08-18 | Graphcore Ltd | Execution Unit for Evaluating Functions Using Newton Raphson Iterations |
GB2581542A (en) | 2019-07-19 | 2020-08-26 | Imagination Tech Ltd | Apparatus and method for processing floating-point numbers |
GB2581543B (en) | 2019-07-19 | 2021-03-03 | Imagination Tech Ltd | Apparatus and method for processing floating-point numbers |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1225468A (zh) * | 1998-02-02 | 1999-08-11 | 国际商业机器公司 | 基本函数的高精度估算 |
CN104598197A (zh) * | 2015-01-26 | 2015-05-06 | 中国科学院自动化研究所 | 一种浮点倒数和/或平方根倒数运算方法及其装置 |
CN104603744A (zh) * | 2012-08-30 | 2015-05-06 | 高通股份有限公司 | 用于高效浮点计算的运算 |
CN104899004A (zh) * | 2014-03-07 | 2015-09-09 | Arm有限公司 | 一种用于将浮点操作数相乘的数据处理装置和方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US27772A (en) * | 1860-04-10 | Btjrglak-alabm | ||
US5671170A (en) * | 1993-05-05 | 1997-09-23 | Hewlett-Packard Company | Method and apparatus for correctly rounding results of division and square root computations |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6625632B1 (en) * | 2000-03-24 | 2003-09-23 | Mercury Computer Systems, Inc. | Method and apparatus for square root generation using bit manipulation and instruction interleaving |
US6996596B1 (en) * | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
US7313584B2 (en) * | 2003-07-31 | 2007-12-25 | International Business Machines Corporation | Increased precision in the computation of a reciprocal square root |
US7730117B2 (en) * | 2005-02-09 | 2010-06-01 | International Business Machines Corporation | System and method for a floating point unit with feedback prior to normalization and rounding |
US20060271615A1 (en) * | 2005-05-27 | 2006-11-30 | Shearer James B | Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format |
US8745118B2 (en) * | 2008-02-25 | 2014-06-03 | International Business Machines Corporation | Verifying floating point square root operation results |
CN104133656A (zh) * | 2014-07-25 | 2014-11-05 | 国家电网公司 | 一种尾码采用移位和减法运算的浮点数除法器及运算方法 |
US9612800B2 (en) * | 2014-08-05 | 2017-04-04 | Imagination Technologies Limited | Implementing a square root operation in a computer system |
CN104636114B (zh) * | 2015-02-12 | 2018-05-15 | 北京思朗科技有限责任公司 | 一种浮点数乘法的舍入方法及装置 |
-
2015
- 2015-10-19 GB GB1518478.1A patent/GB2543511B/en active Active
-
2016
- 2016-10-14 US US15/293,541 patent/US11294625B2/en active Active
- 2016-10-19 CN CN201610911752.2A patent/CN107038014B/zh active Active
- 2016-10-19 EP EP16194577.9A patent/EP3159788B1/en active Active
-
2021
- 2021-11-30 US US17/538,676 patent/US11853716B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1225468A (zh) * | 1998-02-02 | 1999-08-11 | 国际商业机器公司 | 基本函数的高精度估算 |
CN104603744A (zh) * | 2012-08-30 | 2015-05-06 | 高通股份有限公司 | 用于高效浮点计算的运算 |
CN104899004A (zh) * | 2014-03-07 | 2015-09-09 | Arm有限公司 | 一种用于将浮点操作数相乘的数据处理装置和方法 |
CN104598197A (zh) * | 2015-01-26 | 2015-05-06 | 中国科学院自动化研究所 | 一种浮点倒数和/或平方根倒数运算方法及其装置 |
Non-Patent Citations (2)
Title |
---|
Design and Implementation of a 64/32-bit Floating-point Division, Reciprocal, Square root, and Inverse Square root Unit;Chen Shuang-yan .etc;《2006 8th International Conference on Solid-State and Integrated Circuit Technology Proceedings》;20070402;第1-4页 * |
巨型机中软硬结合的函数计算方案;张民选;《国防科技大学学报》;19960831;第18卷(第3期);第1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
GB201518478D0 (en) | 2015-12-02 |
US20220091819A1 (en) | 2022-03-24 |
US11853716B2 (en) | 2023-12-26 |
GB2543511A (en) | 2017-04-26 |
US20170109134A1 (en) | 2017-04-20 |
CN107038014A (zh) | 2017-08-11 |
GB2543511B (en) | 2018-07-25 |
US11294625B2 (en) | 2022-04-05 |
EP3159788A1 (en) | 2017-04-26 |
EP3159788B1 (en) | 2018-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038014B (zh) | 舍入反平方根结果 | |
JP3541066B2 (ja) | コンピュータにおいて除算および平方根計算を実施するための方法および装置 | |
CN106250098B (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
KR102358013B1 (ko) | 3-경로 단일 곱셈-누산기 설계에서 고속 근경로 증분합 | |
US8751555B2 (en) | Rounding unit for decimal floating-point division | |
US11809795B2 (en) | Implementing fixed-point polynomials in hardware logic | |
US20230305812A1 (en) | Trailing or Leading Digit Anticipator | |
EP3236348B1 (en) | Evaluating polynomials in hardware logic | |
US20230334117A1 (en) | Method and system for calculating dot products | |
US9612800B2 (en) | Implementing a square root operation in a computer system | |
US20130117341A1 (en) | Decimal elementary functions computation | |
US10416960B2 (en) | Check procedure for floating point operations | |
US9959091B2 (en) | Evaluation of polynomials with floating-point components | |
US20240134602A1 (en) | Efficient floating point squarer | |
US10037191B2 (en) | Performing a comparison computation in a computer system | |
US20240134607A1 (en) | Hardware to perform squaring | |
CN116610284A (zh) | 用于计算点积的方法和系统 | |
Rahman et al. | Design of High Performance Floating Point SRT Divider Using Divisor and Partial Remainders Estimates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |