CN106250098A - 用于在执行浮点运算时控制舍入的装置及方法 - Google Patents
用于在执行浮点运算时控制舍入的装置及方法 Download PDFInfo
- Publication number
- CN106250098A CN106250098A CN201610391198.XA CN201610391198A CN106250098A CN 106250098 A CN106250098 A CN 106250098A CN 201610391198 A CN201610391198 A CN 201610391198A CN 106250098 A CN106250098 A CN 106250098A
- Authority
- CN
- China
- Prior art keywords
- floating
- point values
- value
- floating point
- circuits system
- 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.)
- Granted
Links
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
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4873—Dividing
-
- 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
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/49957—Implementation of IEEE-754 Standard
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
提供用于在执行浮点运算时控制舍入的装置及方法。装置具有自变量归约电路系统以执行自变量归约运算,并且另外提供归约与舍入电路系统,此归约与舍入电路系统自所提供浮点值产生经修改浮点值以输入到自变量归约电路系统。归约与舍入电路系统被布置为基于指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生截断有效数,此截断有效数比所提供浮点值的有效数短N个位,且随后用作经修改浮点值的有效数。指定值N被选定以使得使用经修改浮点值执行的自变量归约运算将抑制自变量归约运算的结果中的舍入误差。藉由使得舍入误差能够以此方式加以抑制,可能在众多浮点运算的计算中使用此自变量归约电路系统,同时使得能够获得准确舍入结果。
Description
技术领域
本公开技术涉及一种用于在执行浮点运算时控制舍入的装置及方法。
背景技术
就产生结果所需的电路系统的复杂性及/或所需的计算时间而言,存在精确执行时通常代价高昂的各种浮点运算。一种此类浮点运算是浮点除法运算,其中第一浮点数被除以第二浮点数。为执行精确浮点除法运算,通常采取众多时钟周期以用于执行,这可显著影响实施除法运算的处理电路系统的效能。尽管技术人员可设法建构专用逻辑电路系统来增加此除法运算的效能,但此举将明显增加所得处理电路系统(例如就硅面积成本与高验证工作量而言)的成本及复杂性。
通常,设法执行浮点除法且对效能具有较少影响的技术对于浮点除法运算无法保证产生完全精确的结果。
将需要提供一种机制,使得诸如上文所论及的浮点除法运算的某些浮点运算能够由数据处理电路系统更有效率地加以执行,同时仍确保获得精确结果。
发明内容
根据一个示例性配置,提供一种装置,此装置包含:自变量归约(argument reduction)电路系统,以执行自变量归约运算;及归约与舍入(round)电路系统,以自所提供浮点值产生经修改浮点值以输入到自变量归约电路系统;归约与舍入电路系统被布置为基于一指定值N修改所提供浮点值的有效数(significand),以便利用所应用的指定舍入产生一截断有效数,此截断有效数比所提供浮点值的有效数短N个位,并且用作经修改浮点值的有效数;指定值N使得使用经修改浮点值执行的自变量归约运算抑制自变量归约运算的结果中的舍入误差。
根据另一示例性配置,提供一种在数据处理装置内执行浮点运算时控制舍入的方法,此方法包含:采用自变量归约电路系统,以执行自变量归约运算;及执行归约与舍入运算,以自所提供浮点值产生经修改浮点值以输入到自变量归约电路系统;归约与舍入运算基于一指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生一截断有效数,此截断有效数比所提供浮点值的有效数短N个位,并且用作经修改浮点值的有效数;指定值N使得使用经修改浮点值执行的自变量归约运算抑制自变量归约运算的结果中的舍入误差。
根据又一示例性配置,提供一种装置,此装置包含:自变量归约装置,用于执行自变量归约运算;及归约与舍入装置,用于自所提供浮点值产生经修改浮点值以输入到自变量归约装置;归约与舍入装置用于基于一指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生一截断有效数,此截断有效数比所提供浮点值的有效数短N个位,并且用作经修改浮点值的有效数;指定值N使得使用经修改浮点值执行的自变量归约运算抑制自变量归约运算的结果中的舍入误差。
附图说明
将仅藉由举例的方式并参看随附图式中所示的实施例进一步描述本公开技术,在图式中:
图1是图示根据一个实施例的装置的方块图;
图2A与图2B图示根据一个实施例的可在图1的浮点运算电路系统内提供的电路组件,以便使得图1的装置能够执行浮点除法运算;
图3是图示根据一个实施例的可如何扩增融合乘法累加电路以便使得电路能够执行图2A与图2B的功能的方块图;
图4图示根据一个实施例的归约与舍入运算;
图5是图示根据一个实施例的可如何实施选择性舍入至奇数运算以便使得能够获得对于浮点除法运算的准确舍入结果的流程图;
图6A至图6C、图7A及图7B图示根据一个实施例的舍入至奇数处理步骤;
图8示意性图示根据一个实施例的实施一个实施例的舍入至奇数处理步骤如何确保在产生浮点除法运算结果时执行准确舍入总和;
图9图示根据一个实施例的可经实施以选择性移除图2A的计算步骤中的一者的可选步骤;
图10是图示根据一个实施例的可如何修改图1的电路系统以执行浮点取模取模运算的流程图;以及
图11图示可在所描述实施例的装置内使用的单精度及双精度浮点格式。
具体实施方式
在参看随附图式论述实施例之前,提供实施例的以下描述。
根据一个实施例,提供一种装置,此装置包含用于执行自变量归约运算的自变量归约电路系统。另外,提供归约与舍入电路系统,以自所提供浮点值产生经修改浮点值以输入到自变量归约电路系统。此归约与舍入电路系统基于一指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生一截断有效数。所述截断有效数比所提供浮点值的有效数短N个位,并且用作经修改浮点值的有效数。指定值N被选定以使得使用经修改浮点值执行的自变量归约运算抑制自变量归约运算的结果中的舍入误差。
此方式使得此类自变量归约运算能够执行为执行指定浮点运算(诸如前文论及的浮点除法运算)所需处理的一部分。可例如使用装置内已存在的出于其他目的的电路系统(诸如乘法累加电路)在装置内轻易实施此类自变量归约运算。然而,一般预计在执行此自变量归约运算时将引入舍入误差,从而在使用自变量归约电路系统实施浮点运算(诸如前文论及的浮点除法运算)的一部分时可能阻碍精确结果的产生。
然而,藉由使用上文所述的归约与舍入电路系统,且具体而言产生具有截断有效数的修改浮点值以便用作对自变量归约电路系统的输入,此防止舍入误差被引入到自变量归约运算的结果中,并促进用于计算浮点运算(诸如浮点除法运算)的电路系统内的自变量归约电路的使用,同时仍使得能够获得精确结果。
存在众多可决定指定值N的方式。然而,在一个实施例中,指定值N使得经修改浮点值具有小于短N个位截断有效数的1个最小精度单位(unit of least precision;ulp)的误差界限。鉴于具有此误差界限的经修改浮点值,此举则确保可在不引入舍入误差的情况下执行自变量归约运算。
存在众多可选择指定值N以便实现此误差界限的方式。然而,在一个实施例中,指定值N为最小整数值,从而确保经修改浮点值具有小于1ulp的误差界限。
可以各种方式执行归约与舍入运算。然而,在一个实施例中,所提供浮点值的有效数包含M个位,且归约与舍入电路系统被布置为在所提供浮点值的有效数的第N个位位置处注入舍入值以产生经舍入的值,及随后形成经舍入的值的最高有效M-N个位作为截断有效数。与第N个位位置关联的位标签将取决于实施方式。举例而言,若所提供浮点值的M位有效数视为由位1至M组成,则将在位N处注入舍入值。然而,在一个实施例中,将有效数的M个位标记为位0至M-1,且在此实施例中,藉由在位N-1处注入舍入值来在第N个位位置处注入舍入值。
归约与舍入电路系统应用的指定舍入可采取各种形式,且在一个实施例中,该指定舍入为最接近舍去舍入。然而,在替代实施例中,指定舍入可为舍入至最接近偶数舍入。
尽管截断有效数将包含M-N个位,但在一个实施例中便于仍表示M位值内的截断有效数,且在一个实施例中藉由将截断有效数表示为M位值来实现此举,其中M位值的最低有效N个位被设置成逻辑0值。
在一个实施例中,指定值N取决于所提供浮点值的浮点格式。举例而言,在一个特定实施例中,已发现,当浮点格式为单精度格式(亦即,FP32格式)时,则可将N设置等于3;而当浮点格式为双精度格式(亦即,FP64格式)时,则可将N设置等于10。
自变量归约运算可采取各种形式,但在一个实施例中,自变量归约运算为乘法累加运算。由于上文所描述的归约与舍入函数的运算,在一个实施例中,自变量归约电路系统可包含融合乘法累加电路系统,其中由融合乘法累加电路系统产生的结果不具有舍入误差,原因是将经修改浮点值用作对融合乘法累加电路的输入。
在一个实施例中,自变量归约电路系统及归约与舍入电路系统被采用在多个迭代中,在除了第一迭代以外的每一迭代中,由归约与舍入电路系统接收的所提供浮点值来源于前一迭代中由自变量归约电路系统产生的结果值。
已发现,此类迭代在正规化浮点数情况下准确起作用,但若将非正规浮点数输入到迭代中,则如此可引发迭代不再准确作用。
根据一个实施例,提供额外电路系统以使得能够在不遭遇非正规数的情况下执行足够迭代。具体而言,在一个实施例中,装置还包含重调标度电路系统,以接收至少一个浮点操作数值,且对于每一浮点操作数值,执行重调标度运算来产生对应重调标度浮点值,以使得重调标度浮点值与浮点操作数值相差定标因子。自变量归约电路系统被布置为接收除经修改浮点值之外的根据该至少一个重调标度浮点值决定的至少一个额外浮点值,且定标因子被选择为使得每一重调标度浮点值的指数将确保在执行自变量归约运算的多个迭代时将不遭遇非正规值。因此,此方式确保可在不引入舍入误差的情况下准确执行每一迭代。
在一个实施例中,重调标度电路系统被布置为产生第一重调标度浮点值及第二重调标度浮点值,且此装置被布置为产生一结果,相当于对第一浮点操作数值及第二浮点操作数值执行指定浮点运算,第一重调标度浮点值及第二重调标度浮点值由重调标度电路系统从第一浮点操作数值和第二浮点操作数值产生。
在一个实施例中,在除了第一迭代以外的每一迭代中,由归约与舍入电路系统接收的所提供浮点值是将前一迭代中藉由自变量归约电路系统产生的结果值用作输入而执行的乘法运算的输出。
尽管在一个实施例中可能将归约与舍入函数实施为与乘法运算相独立的运算,但在一个实施例中可能将乘法运算继之以归约与舍入运算实施为单个融合运算。
指定浮点运算可采取各种形式,但在一个实施例中为浮点除法运算以使第一浮点操作数值除以第二浮点操作数值。
在此实施例中,可藉由将多个迭代期间由归约与舍入电路系统产生的多个修改浮点值加在一起来决定浮点除法运算的结果。
在一个实施例中,已发现可在执行此浮点除法运算时预先确定多个迭代的迭代次数。具体而言,在一个实施例中,选择次数以便确保浮点除法运算的结果将与第一浮点操作数值除以第二浮点操作数值并根据浮点除法运算的指定舍入模式舍入的值相等。具体而言,已发现,仅使用相对较小迭代次数可获得结果,此结果直接对应于第一浮点操作数除以第二浮点操作数(亦即,准确结果),并亦可根据指定舍入模式准确舍入。在一个实施例中,已发现此为真实情况,与所指定舍入模式无关。
在一个实施例中,藉由执行一系列加法运算将多个经修改浮点值加在一起。对于除了最终加法运算以外的每一加法运算,在一个实施例中,若加法的结果不能以指定浮点格式精确表示,则将舍入至奇数舍入函数应用于该加法的结果。指定浮点格式可例如为前文所论及的单精度格式或者双精度格式。
在一个实施例中,当与第一重调标度浮点值关联的定标因子不同于与第二重调标度浮点值关联的定标因子时,扩增最终加法运算以在执行最终加法时考虑到定标因子之间的差异。已发现,可轻易修改最终加法运算以考虑到定标因子差异。举例而言,在一个实施例中,扩增最终加法运算以便将加法结果的指数调整由定标因子之间差异所决定的量,之后执行加法结果的最终舍入。通常,将已经计算预正规化结果指数,随后可视需要在最终舍入运算期间选择性调整此预正规化结果指数。藉由在加法步骤期间调整此预正规化指数以考虑到定标因子之间的差异,此举防止在产生最终结果时执行双舍入的可能性,且因此确保总是获得准确舍入结果,甚至当定标因子不同时亦如此。
如前文所论及,当执行浮点除法运算时,已发现可预先确定迭代次数,在迭代期间采用自变量归约电路系统及归约与舍入电路系统。在一个特定实施例中,亦可能在某些条件下选择性排除最终迭代。具体而言,在一个实施例中,装置还包含分析电路系统,以分析倒数第二次迭代中所产生的经修改浮点值的指定位,并在此分析指示所述指定位为不同于至少一个预定位型样时引发忽略最终迭代。
预定位型样可采取各种形式,但在一个实施例中包含全1的型样或全0的位型样,其出现在倒数第二次迭代中所产生的经修改浮点值内的预定位序列中。
尽管在一个实施例中指定浮点运算为浮点除法运算,但在一个实施例中装置可实际上用于执行其他浮点运算。举例而言,在一个实施例中,指定浮点运算为浮点取模取模运算以评估由第一浮点操作数值除以第二浮点操作数值产生的余数。当执行此浮点取模取模运算时,浮点取模取模运算的结果值可根据一迭代中由自变量归约电路系统产生的结果值决定,在该迭代中结果值小于第二重调标度浮点值。因此,迭代可终止于当前迭代产生的结果值小于第二重调标度浮点值的点处。
在一个实施例中,当执行浮点取取模运算时,相同定标因子与第一重调标度浮点值及第二重调标度浮点值关联。因此,无需提供任何电路系统来抵偿定标因子的任何差异。
在一个实施例中,装置还包含倒数估计电路,以产生第二重调标度浮点值的估计倒数,其中相对误差具有误差界限Y(例如,以ulp量测),且指定值N取决于值Y。通常情况为,装置可能已经提供有适宜的倒数估计电路。倒数估计电路系统可以众多不同方式估计倒数,但一个范例涉及决定某一类的初始估计,继之以一或更多个牛顿迭代。出于本公开技术的目的,如何产生估计倒数并非关键,只要已知计算误差的上限即可。一旦已知误差界限Y,可能轻易计算适当的指定值N,从而将确保可形成自变量归约运算而在结果中不产生任何舍入误差。
现将参看图式描述特定实施例。
在详细论述实施例之前,以下提供浮点数格式的概要。已知对浮点数执行算术运算的处理器。在浮点表示法中,使用有效数1.F、指数E及符号位S表示数字。符号位S表示浮点数是正数还是负数,有效数1.F表示浮点数的有效数字,而指数E表示数基点(亦称为二进制小数点)相对于有效数的位置。藉由改变指数值,数基点可在有效数内左右“浮动”。此意谓对于预定位数,浮点表示法可比定点表示法(其中数基点在有效数内具有固定位置)表示更宽范围的数。然而,由于一些位用于储存指数,因此以归约精度为代价实现额外范围。有时,浮点算术运算产生具有比用于有效数的位计数更多有效位的结果。若此发生,则将此结果舍入至可使用可用数目的有效位表示的值。
图11图示浮点数可如何储存于寄存器或内存内。在单精度(singleprecision;SP)表示法(本文亦称为FP32)中,使用32个位储存浮点数。一个位用作符号位S,八个位用于储存指数E,而23个位用于储存有效数1.F的分数部分F。分数部分F的23个位以及具有值1的隐含字节成24位有效数1.F。最初假定将数基点放置在有效数的隐含位与23个储存位之间。储存的指数E偏移固定值127,以使得在所表示浮点数中,若E-127为负数,则数基点自初始位置左移E-127个位置(例如,若E-127=-2,则1.01的有效数表示0.0101);或若E-127为正数,则数基点自初始位置右移E-127个位置(例如,若E-127=2,则1.01的有效数表示101)。偏移用于使得更容易比较两个浮点值的指数,因为数基点的负移位与正移位两者皆可由储存的指数E的正值表示。如图11所示,储存的表示法S[31]、E[30:23]、F[22:0]表示具有值(-1)S*1.F[22:0]*2(E-127)的数。以此形式的单精度浮点数被视为“正规的”。若所计算浮点值并不正规(例如,浮点值被产生为在有效数的最左两个位之间以外的位置具有数基点),则藉由向左或向右移位有效数及由此调整指数直至此数具有(-1)S*1.F[22:0]*2E-127形式来正规化所计算浮点值。提供特殊情况处置(例如,异常处置器或专用硬件)以处置无法表示为正规浮点值的数。
亦可提供双精度(double precision;DP)格式(本文亦称为FP64),其中使用64个储存位表示有效数及指数。64个储存位包括一个符号位、11位指数及53位有效数1.F的52位分数部分F。在双精度格式中,指数E被偏移值1023。因此,在双精度格式中,储存表示法S[63]、E[62:52]、F[51:0]表示浮点值(-1)S*1.F[51:0]*2E-1023。
下文所描述的实施例通常适用于SP或DP数。
图1是示意性图示根据一个实施例的装置的方块图,以便就两个输入浮点数Ao与Bo执行浮点运算。对于待执行的指定浮点运算,浮点运算电路系统30执行所需运算中的大部分。如稍后将更详细地论述,浮点运算电路系统30执行自变量归约运算的很多次迭代,在一个实施例中,自变量归约运算为浮点运算电路系统30内所含的融合乘法累加电路内执行的乘法累加运算。由归约与舍入电路的输出提供每一迭代中对于自变量归约运算的输入之一者。如下文将更详细地解释,归约与舍入电路系统的目的在于操纵自变量归约电路系统所需输入操作数之一者,之后将所操纵版本提供为对自变量归约电路系统的输入。具体而言,归约与舍入电路系统利用所应用的预定舍入来产生截断有效数(truncated significand),其中所执行截断的量确保在自变量归约运算中随后使用截断版本时,在自变量归约运算的结果中无舍入误差发生。此举使得能够在多个迭代期间藉由自变量归约电路系统产生多个值(这些值没有任何与迭代关联的舍入误差),且此举进而使得能够藉由浮点运算电路系统30执行的运算产生一结果,此结果精确地等于使真浮点运算直接应用于输入操作数Ao与Bo本将实现的结果。
如图1所示,提供众多额外电路用于执行输入浮点操作数值的一些初始操纵,以便产生浮点运算电路系统30所需的输入。具体而言,重调标度电路10被用于对输入操作数值的各者执行重调标度运算。如图1所示,重调标度电路系统产生一些重调标度浮点操作数值AS与BS,AS与BS相对于二者的对应原始操作数Ao与Bo藉由关联定标因子A_scale与B_scale而被定标。
取决于图1的电路系统所执行的浮点运算,定标因子A_scale与B_scale可能不同。举例而言,当使用图1的电路系统执行浮点除法运算时,可能选择彼此不同的A_scale与B_scale的值,在此情况下,重调标度电路系统10还产生值C_scale,C_scale识别两个定标因子A_scale与B_scale之间的差异。
如何选择定标因子A_scale与B_scale将取决于图1的电路系统所执行的浮点运算。举例而言,当执行浮点除法运算时,定标因子A_scale与B_scale被选择为使得AS与BS的指数为至少4×(M-1),其中M-1为电路系统正在运算的浮点格式的分数位计数。因此,将单精度浮点数目视为范例,M-1将为23个位,因为单精度浮点格式具有表示24位有效数的23位分数。因此,在该特定范例中,定标因子被选择为使得重调标度浮点操作数AS与BS的指数域将具有至少92的值,此值对应于至少2-35的量值(由于前文参看图11所论述的127的偏移)。
已发现,藉由将此约束施加于重调标度值的指数的尺寸,可确保无非正规浮点数进入浮点运算电路系统30内稍后执行的自变量归约运算的乘法迭代中。此使得自变量归约运算的乘法迭代能够产生准确值以使得能够产生最终结果,此最终结果准确表示对原始指定操作数Ao与Bo执行浮点运算,而若任何非正规数进入那些迭代之一者或更多者中,则运算不能准确地运算。
考虑可藉由图1中的装置执行的浮点运算的另一范例,亦可使用输入操作数Ao与Bo执行浮点取取模运算。在该情况中,当在电路系统10内执行重调标度时,重调标度被约束以使得定标因子A_scale与B_scale相同。进一步地,值C_scale被设置为等于-A_scale。所执行定标的量被选定以使得以与前文论及的浮点除法运算相同的方式定标输入操作数Bo,且因此使用前文特定范例,将导致重调标度浮点操作数BS的指数域具有至少92的值。相同定标因子应用于另一输入操作数Ao可导致AS溢位(overflow)或欠位(underflow),但此可藉由本文稍后参看图10所论述的修改加以调整。
如图1所示,将来自重调标度电路系统10的各种输出被提供至浮点运算电路系统30。另外,近似倒数电路20用于产生值R,R表示重调标度操作数BS的近似倒数。在许多应用中,将存在以下情况:已存在执行近似倒数的适宜电路。举例而言,可能已在图形处理单元(graphicsprocessing unit;GPU)内提供此电路,且图1中所图示的装置可用于GPU内以提供某些浮点运算(诸如前文所论及的浮点除法运算)的高效实施,允许在相对较低硬件成本及可接受吞吐量下实现准确舍入的精确结果,从而提供具有可接受效能的低成本解决方案。
存在可执行近似倒数函数的数种方式,在一个范例中,此涉及某种类的初始近似,继之以一个或更多个牛顿迭代。出于本发明所描述技术的目的,如何执行此计算并非关键,前提是知道关于计算误差的上限,在一个实施例中以最小精度单位(units of least precision;ulp)量测此上限。
在一个特定示例性实施例中,使用现有倒数近似单元,此单元可计算倒数以在FP32格式中达到1ulp的误差及在FP64格式中达到128ulp的误差。
浮点运算电路系统30随后使用其多种输入执行所需运算以便产生准确舍入的精确结果C,相当于对输入操作数Ao与Bo执行指定运算。
输出值C可随后被转发以便在储存组件35中储存,自储存组件可访问输出值以供后续计算。或者,在一些实施方式中,可能经由转发路径直接将结果C作为输入提供给额外电路系统,此额外电路系统被布置为使用值C作为输入。
现将参看图2A与图2B针对范例更详细地论述浮点运算电路系统30的运算,其中正执行的浮点运算为浮点除法运算,且因此由电路系统30输出的最终结果C表示对于除法Ao÷Bo的准确舍入的精确结果。如前文所论及,在替代实施例中,可执行不同浮点运算(诸如浮点取取模运算),其中最终结果C表示对于计算AomodBo(mod为求余运算)的准确舍入的精确结果。
如图2A所示,乘法电路50执行输入R与AS的乘法,其中乘法结果随后经历归约与舍入电路系统55的归约与舍入运算。此意谓不是将乘法结果直接提供至融合乘法加法电路系统60,而是产生经修改浮点值C1,此浮点值C1被表示为有效“新”浮点格式,具有截断有效数。如后文将参看图4所论述的,基于预定值N执行截断,可对于特定浮点格式预先确定该预定值N。归约与舍入函数的效应在于经修改浮点值C1表示AS除以BS的精确结果,其中相对于截断有效数具有小于1ulp的误差界限。经修改浮点值C1被储存在储存组件57中供稍后计算中使用,且亦作为输入被提供给融合乘法累加电路系统60(本文亦称为融合乘法加法(fusedmultiply add;FMA)电路),该电路系统使用经修改浮点操作数C1及两个重调标度操作数值AS与BS执行图2A中所示的乘法累加运算。此导致输出浮点值A1的产生。鉴于C1具有小于1ulp的误差值的事实,此确保了输出值A1不包括舍入误差。如此最终允许稍后计算除法运算的精确结果。
使用归约与舍入功能产生经修改浮点操作数的原因可解释如下。
对近似除法结果使用归约与舍入函数。考虑到计算C=A/B及C′=A*R,归约与舍入函数被用于有效建构新的浮点格式,其中C′表示精确除法结果C,具有严格小于1ulp的误差。
若可在X ulp的误差下计算倒数且未使用归约与舍入函数,则近似除法结果C′=A*R将具有至多Y=2X+0.5ulp的误差。
若在全精度格式中存在具有Y ulp的误差的结果,而随后在N个位的截断下实施归约与舍入函数,则“新”格式中的误差将至多为Y′=0.5+Y/2N ulp。自此,若对倒数近似值的误差界限已知,此可用于决定将导致小于1ulp的误差界限的N的最小值:
·对于FP32,前文所论及的近似倒数电路20的示例性实施方式具有X=1。此导致N=3。(N=2导致1.125ulp的误差界限,而N=3导致0.8125ulp的误差界限)
·对于FP64,前文所论及的近似倒数电路系统20的示例性实施方式具有X=128。此导致N=10(N=9导致1.0009ulp的误差界限,而N=10导致0.7505ulp的误差界限)
应注意,对于N的这些数值特定于上文示例性实施方式;具有其他误差界限的倒数近似的其他实施方式可产生更小或更大的N值。
返回图2A,可看出,可在众多进一步迭代中重复以上乘法、归约与舍入及融合乘法加法运算的序列。举例而言,如图所示,在第二迭代中,乘法电路系统65使R与A1相乘,其中归约与舍入电路系统70随后对乘法结果运算以产生经修改浮点值C2,C2被保存在储存组件72中供稍后使用且亦被输入至融合乘法加法电路系统75,此融合乘法加法电路系统执行所示乘法累加运算。再次,由于C2具有小于1ulp的误差界限的事实,此确保了结果A2无舍入误差。
在下一迭代中,乘法电路80使值R与A2相乘,其中归约与舍入电路系统85对乘法结果运算以产生经修改浮点值C3,C3被储存在储存组件87中。可视需要继续此过程以产生经修改浮点值C1、C2、C3的所需数,此需要考虑除法运算的所欲精度。融合乘法累加阶段中不存在舍入误差确保了无穷和C1+C2+C3+…精确地等于Ao÷Bo。如前文所论及,此迭代实际上仅对于正规化浮点数起作用,但重调标度电路系统10的运算确保无非正规数进入迭代的所需数中。
不存在舍入误差确保可建构一对数A’与C’,使得以下恒等式成立:
C=A÷B=C’+(A’÷B)。因此,此意谓当将此系列经修改浮点值C1、C2、C3加在一起时,结果精确地等于A÷B。
可能将归约与舍入功能实施为独立功能。然而,在一个实施例中,乘法及关联归约与舍入功能被实施在单个融合运算中,从而改良效率。
发明人已认识到,实际上无穷级数C1+C2+C3+…可被截断,同时在浮点格式的可用有效数空间内仍产生精确结果,理由在下文中解释。
考虑到具有M个有效数位元及N个位的截断的浮点格式,第一X项之和将产生具有至少X*(M-N)个有效位的除法结果,使得除法结果具有小于1ulp的误差。
在诸如图2A所示的一个示例性实施例中,前三项(C1、C2、C3)被使用。对于FP32,此提供具有3*(24-3)=63有效位的除法结果;对于FP64,此提供具有3*(53-10)=129有效位的除法结果。
若在目标浮点格式中的有效数中存在M个位,则可展示出除法结果为以下之一者:
·可表示为M位格式中的精确值的值。
·可表示为M位格式中的中点值的值。
·自最接近可表示精确值或中点值移除的至少2(-M-1)ulp的值。
因此,若用P位表示除法结果,其中P>2M+2,且对于P位表示存在严格而言小于1ulp的保证误差界限,则以下特性可经证明对于P位表示成立:
·若将除法结果可表示为M位格式的精确值或中点值,则将以P位格式提供精确表示。
·若将除法结果不可表示为M位格式的精确值或中点值,则将舍入至P位格式的值,使得经舍入的P位值本身不符合M位精确值或中点值。
·在后一情况中,除法结果将严格位于V1与V2之间,其中V1为M位表示的精确值,而V2为M位表示的中点值。在此情况中,P位除法结果亦将严格位于V1与V2之间。
自此,遵循若舍入被执行为从P位表示至M位表示,则M位表示为除法结果的准确舍入的M位表示,此为最终目标。此应用于全部舍入模式。
因此,如图2A所示,一旦已产生第三经修改浮点值C3,不再需要迭代,且过程可进行至图2B。如图2B所示,值C2与C3被输入至加法电路系统90,其中这些值被加在一起以产生值Cx。应注意,鉴于图2A中所执行的运算,C1具有比C2及C3大得多的量值,且因此第一加法将最小量值的两个数加在一起。中间值Cx随后经历电路系统95内的选择性舍入至奇数函数,产生对最终加法阶段100的输出Cx(经调整)。稍后将参看图5论述舍入至奇数函数的运算,但基本上确保了在将三个数加在一起时避免双舍入。因此,当藉由加法电路系统100使用C1与Cx执行最终加法时,最终加法可随后仅经历舍入电路110内由除法运算的舍入模式指定的所需舍入,导致最终结果C为除法Ao÷Bo的精确结果,且考虑到由浮点除法运算指定的舍入模式而得以准确舍入。
亦如图2B所示,可在最终加法电路系统100内提供指数调整组件105以考虑到值C_scale,如前文所论及的,C_scale表示应用于原始输入操作数Ao与Bo的定标因子之间的差异。具体而言,应注意,加法C1+C2+C3仅事实上在C_scale等于0的情况下为准确结果。若C_scale不为0,则实际上由(C1+C2+C3)×2C_scale提供准确结果。可在加法步骤之后执行乘以2C_scale。然而,如此并不理想,因为若准确舍入结果为非正规,则加法与乘法各自引入一个舍入,引发结果被双舍入。然而,藉由在加法内合并调整,此将避免双舍入发生的可能性,并将允许在最终步骤110中的舍入以产生准确舍入的除法结果。
存在众多可实施指数调整电路系统的方式,但在一个实施例中,此可简单地藉由调整已由现有电路系统计算的临时结果指数加以合并,此计算值表示预正规化指数,此指数可潜在地经历最终舍入阶段110内的最终调整。藉由基于值C_scale调整此预正规化指数,此确保了舍入电路110随后产生准确舍入的结果。
在一个实施例中,专用电路系统可被建构以合并图2A与图2B所示的全部电路组件。然而,在一个实施例中,已发现可在融合乘法累加电路内合并全部所需功能,其中对特定电路组件实行两个扩增。图3图示此实施例。如图3所示,融合乘法累加电路可使乘法电路系统200内的两个输入相乘,并提供全精度乘法结果至加法器电路系统205以便加到另一输入。如将理解的,加法器电路系统205亦可被布置为根据需要执行减法。最终乘法累加结果可随后自加法器电路系统205被输出至舍入电路系统215,在舍入电路系统中可执行适宜舍入运算。存在各种通常将藉由舍入电路系统215支持的熟知舍入模式,范例为舍入至最接近偶数(round to nearesteven;RNE)、最接近舍去(round to nearest away;RNA)、舍入至零(round to zero;RZ)等。藉由使用融合乘法累加电路,可能执行乘法累加运算,而对中间乘法结果不执行任何舍入,之后在加法器中使用该乘法结果。这使得能够符合IEEE-754标准,此标准要求如同在无界限范围及精度下实行运算一样计算大多数浮点运算,且随后经舍入以拟合浮点数。若计算恰好匹配浮点数,则总是返回此值,但更通常地,计算产生介于两个连续浮点数之间的值。舍入为拾取两个连续数中应返回者的过程。
亦如图3所示,融合乘法累加电路亦可执行乘法运算,其中乘法结果直接从电路系统200被提供至舍入电路系统215,且亦可执行加法运算,其中加法器电路系统205的两个输入被直接提供,而不是输入之一者为自乘法电路系统200的输出。再次,加法器的输出可被提供至舍入电路系统215以允许加法结果根据选定舍入模式加以舍入。
如下文将更详细地论述,前文所描述的归约与舍入功能可被合并在舍入电路系统215内,如图3所示的虚线框220所指示。在此,参看图2B的组件95描述的舍入至奇数电路系统可被结合在舍入电路系统215内,如虚线框225所示。适宜的舍入模式控制信号可经由路径230被传递至舍入电路系统215以在各舍入模式中选择,舍入模式包括归约与舍入模式及舍入至奇数模式。
进一步地,图2B所示的指数调整电路系统105可被结合在加法器电路系统205内,如虚线框210所示,其中所需C_scale在需要时经由路径212输入。
图4是示意性图示藉由图3的方块220执行的归约与舍入功能的图解。在此阶段处对舍入电路系统215的输入包含来自乘法电路系统200的输出,乘法电路系统已执行图2A的方块50、65、80所示的乘法之一者。假定原始输入浮点操作数具有M位有效数,则未舍入的乘法结果可被视为具有2M位有效数。然而,根据归约与舍入功能,可在此点处废弃最低有效M位,且因此归约与舍入电路系统220评估的输入乘法结果可被视为包含图4所示的M位有效数250。
如自前文论述将回想到的,归约与舍入功能利用所应用的预定舍入有效地产生截断有效数。在一个实施例中,预定舍入可以是最接近舍去舍入,而在替代实施例中,可以是舍入至最接近偶数舍入。截断的位计数由预定值N指定,且如图4所示,藉由在第N个位位置处注入逻辑1值来执行舍入。假定将M位有效数中的位表示为位0至M-1,此产生在位位置N-1处注入的逻辑1值,如图4中箭头255所示,此产生舍入的值260。
一旦已执行舍入,随后可有效废弃较低N个位,在一个实施例中此藉由将那些最低有效N个位设置成全0来实现,如虚线框270所示。此产生截断有效数265,从而形成具有M-N个位的有效数。
通常,在此过程期间使指数保持不变。然而,若在舍入结果260中发生溢位,则根据在舍入运算期间处理溢位有效数时的标准实践,将指数调整1个位。
图4图示“最接近舍去”舍入模式。若实际上使用“舍入至最接近偶数”舍入模式,此将需要额外步骤,其中若位N-1至0为全零,使位N归零。
在图5的流程图中示意性图示舍入至奇数电路225的运算,图5更详细地图示前文参看图2B所论述的功能,其中三个经修改浮点值C1、C2及C3被加在一起。在步骤300处,最小两个值C2与C3被加在一起,产生中间结果Cx。在步骤305处,随后判断值Cx是否可以标准浮点格式精确表示,标准浮点格式可例如为单精度格式或双精度格式。在一个实施例中,可藉由查看所有余下位及黏着位(亦即,标准浮点格式中的最低有效位位置右边的位)以检查这些位是否为全0来实施此检查。若是,则值Cx可以标准浮点格式精确表示,且因此过程进行至步骤310,在此步骤中不需要舍入。然而,若判定值Cx不可以以标准浮点格式精确表示,则过程进行至步骤315,在此步骤中在M位有效数的最低有效位位置处与值1进行逻辑或(OR)。此确保在已执行步骤315之后,M位内表示的有效数将为奇数,因为最低有效位被设置成逻辑1值。此与逻辑OR运算执行之前此数是奇数还是偶数无关。
此在图7A与图7B中示意性图示,其中“x”表示位值不关心状态。如图7A所示,若值Cx采取形式360,且因此在仅考虑最高有效M位时为偶数,则逻辑OR运算将产生数365,此数在M位格式中考虑时为奇数。如图7B所示,若实际上加法结果Cx采取形式370,且在最高有效M位的M位格式中考虑时为奇数,则逻辑OR运算将不导致调整,且结果值375亦将为奇数。
在步骤310或315之后,随后将调整的值Cx以及另一经修改浮点值C1输出至最终加法阶段320。在此点处,在Cx内,可废弃除了所调整的值Cx的最高有效M位以外的全部有效数位元。最终加法步骤320随后使C1与Cx相加并输出结果至舍入阶段325,随后舍入阶段325使用采用图3的实施例时的FMA电路系统的标准舍入电路系统215根据为该运算指定的舍入模式进行舍入。
若待加在一起的C值数目增加,则将在除最终步骤的每一加法步骤中执行步骤305至315的选择性舍入至奇数功能。
图6A至图6C图示步骤305、310及315的效果。若标准浮点格式中的两个最接近可表示值为如图6A中所示的P1及P2,则若值Cx 330处于P1与P2之间的任何位置处,而不是实际等于P1或者P2任一者,则箭头335所示的值Cx(经调整)将被设置为等于P1,在此范例中,假定P1为奇数值且P2为偶数值。若实际上P2为奇数值,则图6A所示的Cx值中的任一者将被调整至P2。图6A所示的功能为执行图5的步骤315的结果。
如图6B所示,若Cx值340由于匹配P1而可以以标准浮点格式精确表示,则不实行任何调整,如箭头345所示。类似地,若值Cx 350匹配P2,则不实行任何调整,如图6C中的箭头355所示。
藉由执行参看图5至图7B所描述的选择性舍入至奇数功能,此避免了在三个数C1、C2及C3被加在一起时双舍入运算被执行的预期。下文描述此情况的原因。
如从前文对截断自变量归约运算的无穷级数的论述中将回想到的,若舍入被执行以从P位表示舍入至M位表示,则M位表示为除法结果的准确舍入的M位表示。然而,应了解,在上文描述的过程中,实际上不存在P的直接表示,而是将P表示为C1、C2及C3,使得P=C1+C2+C3。
另外,已知C1具有比C2+C3大得多的量值。
此位置为舍入至奇数模式进入图片的位置。舍入至奇数模式如下运作:首先藉由朝向零舍入来执行加法,随后若加法结果不精确,则将1逻辑OR至最低有效位。
藉由利用舍入至奇数模式执行加法Cx=C2+C3,随后可藉由利用所需舍入模式执行加法C=C1+Cx来获得准确舍入的最终除法结果。
此举起作用的原因如下。存在要考虑的两种情况:
·中间加法结果Cx=C2+C3计算精确结果而无舍入的情况。在此情况中,舍入误差的唯一来源为最终加法C=C1+Cx,且立即遵循准确舍入最终结果。
·中间加法结果Cx=C2+C3引入舍入误差的情况。
后一情况为问题情况。现应注意,由于C1具有比Cx大得多的量值,遵循和C1+C2+C3符合精确或中点情况的所有可能情况为Cx经计算无舍入误差且具有0的底部位的情况。
现在,舍入至奇数舍入如下运作:
·若C2+C3结果不可精确表示,则将最低位设置成1。
·因此,若C2+C3加法结果比0处于最低位时可精确表示的值略微大一点,则向上舍入。
·或者,若C2+C3加法结果比0处于最低位时可精确表示的值略微小一点,则向下舍入。
自此,遵循:
·若C1+C2+C3的精确结果为M位格式中的精确或中点值,则加法C1+Cx将符合相同的精确或中点情况。
·若C1+C2+C3的精确结果并非M位格式中的精确或中点值,则对于Cx=C2+C3使用舍入至奇数模式将远离本可潜在地引发加法C1+Cx符合精确或中点值的值而安全舍入Cx。因此,在此情况中,C1+Cx将准确避免所有精确或中点情况。
此举帮助确保准确舍入。
这在图8中被示意性地图示。C1 400的M位有效数被加到Cx 405的M位有效数,由于不同指数值,两者通常将如图8所示重迭。考虑到有效数405的最低有效数位元已被设置成逻辑1值,应了解,如此确保了C1+Cx的结果在最终结果的M位空间中被检视时,其永不被认为是精确的,或者不可表示中点值。因此,根据运算的指定舍入模式,此确保了图5图的最终阶段325中的准确舍入。
如前文参看图3所论及的,藉由路径230上合并额外舍入模式的适宜控制信号,归约与舍入功能220与舍入至奇数功能225两者皆可被轻易合并在现有FMA单元的舍入电路系统215内。可轻易合并这两个额外舍入模式的一种方式如下。
在FMA单元中,舍入至最接近偶数舍入模式通常实施如下:
·利用数个余下位计算有效数,且藉由将废弃的低阶位OR在一起来收集黏着位。
·将常数加到此数。此常数在最低有效位下方的位位置中含有‘1’;因此,常数实际上为0.5ulp。
·若加法结果导致最低有效位中的‘1’,而在加法后所有余下位及黏着位为0,则使最低有效位归零。
上文方式为标准方式。在所描述实施例中,舍入电路系统扩增如下:
·对于利用N个位截断的(归约和舍入reduce_and_round())模式,再次加上常数;然而,尽管对于舍入至最接近偶数的常数为0.5ulp,但将对于reduce_and_round()的常数设置成2N-1ulp,以便将“1”加到图4所示的位位置。
·对于reduce_and_round()模式,使已执行舍入加法后的N个最低位归零,如图4所示。
·对于舍入至奇数模式,检查全部余下位及黏着位,如同对于舍入至最接近偶数;然而,若全部为0,则无需进一步实行,否则发生向舍入结果逻辑OR“1”。
如前文所解释,在值C_scale为非零的情形中,C1、C2及C3相加的结果随后需要被调整。在一个实施例中,提供以下形式的融合加法标度运算:
fas(C1,Cx,C_scale)
=>(C1+Cx)*2C_scale
此运算将上文计算执行为利用可配置舍入模式的单融合运算,随后使得能够获得准确舍入除法结果。在真除法结果并非为非正规的情况下,随后运算fas()最简单地进行准确地舍入。然而,在真除法结果为非正规的情况下,精确及中点情况为C1+Cx中的精确及中点情况之适当子集而无添加情况,且因此使用fas()运算覆盖了所有子情况。
作为标准FMA单元的一部分,预正规化指数通常基于输入自变量被计算,且随后此指数在最终舍入阶段中执行结果正规化时被修改。如前文所论述,当执行上文融合加法标度运算时,藉由将C_scale加到加法电路系统205内的预正规化指数来扩增FMA单元,如图3中的方块210所示。
自上文描述可看出,所需功能可被合并在现有FMA单元内,这具有极少成本及复杂性。另外所需要的是对输入操作数进行重调标度的电路系统10及在许多示例性实施方式中已经存在的近似倒数电路20。举例而言,当在图形处理单元内采用上文所描述的技术时,通常为以下情况:此近似倒数电路系统20将出于其他目的已经存在,且因此可简单重复使用以便产生上文描述的计算所使用的值R。
作为可用于一些实施例中的另一可能的优化,可能在大多数但非全部情况中忽略C3的计算,且仅计算上文的除法,其中Cx=C2。此将在大多数时候但非总是提供准确结果,如下文所解释。
现在,若存在M个有效数位元,其中reduce_and_round()函数截断其中的N个,C2的顶部N个位应与C1的底部N个位具有相同量值,且C3的顶部N个位应与C2的底部N个位具有相同量值。因此,为了C3影响最终结果,进位或借位必须传播通过C2中部的长位序列。此传播可仅在C2中部的位为全1(若C2与C3具有相同符号)或全0(若C2与C3具有不同符号)的长条纹情况下发生。
因此,如图9所示,在一个实施例中,可测试C2的有效数中自位N+2向上至位M-N-3的位(参看步骤470)。若这些位为全0序列或全1序列,则需要在步骤480处计算C3,因为C3可影响最终结果。随后可在步骤485处执行加法C2+C3。然而,若这些位并非全0或全1,则可安全地避免计算C3。
对于上文示例性实施方式,此提供13个位以在FP32情况中检查及27个位以在FP64情况中检查。若这些位被检查,已发现可因此避免对于FP32为约99.97%的时间及对于FP64为99.9999985%的时间计算C3。
在一个实施例中,上文所描述的对FMA单元的扩增亦可使得FMA单元能够用于除了上文所描述的准确舍入除法运算以外的其他运算。如前文所论述,自变量归约运算的迭代产生连续值A1、A2、A3等等。此等迭代(结合前文所描述的归约与舍入功能)可在一些修改情况下用于有效率地实施例如浮点取模运算。参看图10的流程图示意性描述此过程。具体而言,在步骤500处,重调标度电路系统10被运行以对输入操作数Ao与Bo进行重调标度。然而,当执行浮点取模运算时,将A_scale与B_scale约束为相同。另外,值C_scale被设置为等于-A_scale(如后文所论述,A_scale可用于处置AS中的溢位状况)。如前文所描述的,当执行定标运算时,定标因子B_scale被选择为使得BS的指数为至少4×(M-1),其中M-1为电路系统正在运算的浮点格式的分数位计数。
在步骤505处,利用电路系统20计算近似倒数R。此后,在步骤510处,将归约与舍入自变量归约步骤迭代,直至获得归约A值,A值小于操作数BS。在每一迭代中,在计算相应A值之前,所产生的经修改浮点值C被舍入至最接近整数。此将总是引发从A值中减去BS的整数倍而不引入舍入误差。
在步骤510之后,随后在步骤515处,判断归约的A值是否具有与B值不同的符号。若否,则取模运算的结果为步骤510处所执行的最终迭代中决定的归约的A值,如步骤520所示。然而,若符号为不同,则结果如步骤525所示,其中归约的A值被加到值BS。
上文过程假定将定标因子A_scale(与B_scale相同)应用于另一输入操作数Ao将不产生具有溢位或欠位的重调标度操作数AS。然而,这样的欠位及溢位状况可被检测,且因此例如藉由使用以下过程运算被修改。
若Ao比Bo小得多,则欠位状况可能出现在向下定标情况中。在此情况中,一个适宜动作过程为在步骤510处实行全取模计算之前测试|A|是否小于|B/2|。若|A|小于|B/2|,则Ao可刚好被直接作为结果C返回,不必任何进一步计算。
若Ao比Bo大得多,则可能在增量情况下出现溢位状况。在此情况中,一个适宜动作过程为测试此状况,且在存在此状况的情况下随后如下修改步骤510处执行的取模计算:
1)首先,将Bo而非Ao向上定标,以便产生BS;
2)执行取模计算,使用上文所描述的自变量归约法产生中间结果:A′=Aomod BS;
3)接着,以与用于Bo相同的定标因子将A′向上定标,以便产生AS;
4)再次执行取模计算,使用上文所描述的自变量归约法产生第二中间结果:Cs=AS mod BS;以及
5)最终,使用C_scale因子(为-A_scale)向下定标第二中间结果,以使得最终结果C=Cs*2C_scale。
过程可随后视需要继续步骤515、520及525。
在一个实施例中,图3所示的FMA电路内提供的额外组件中的一些可另外用于其他目的。举例而言,融合加法标度电路系统可用于引入自由乘以2的次方,此可例如常见于通常在GPU中执行的着色程序中。如所描述,将此函数实施为对FMA单元的扩增亦使得在无额外成本下实施ldexp()函数成为可能,并亦构建了融合乘法与标度基元。
舍入至奇数模式亦可用于多阶段变窄数据转换,诸如FP64至FP32至FP16及INT64至FP64至FP32。对于此类转换,若舍入至最接近舍入模式将用于两个阶段,此引发双舍入及最终导致不准确舍入结果。然而,藉由对于除了最终阶段以外的全部阶段使用舍入至奇数模式,此引发序列作为整体实施准确舍入。
从上文描述的实施例将看到,此类实施例提供非常有效率的机制以便利用所应用的准确舍入以确保获得准确结果的方式执行某些浮点运算。因此,此举提供非常有效率的机制以便合并那些浮点运算,浮点运算的范例为浮点除法运算及浮点取模运算。
存在许多此方式将非常有用的情境。举例而言,浮点除法运算或浮点取模运算可用于藉由CPU、GPU、DSP等执行的许多计算中,且上文所描述的技术将赋能在支持此类浮点运算的执行时对那些装置中所需电路系统的有效简化。经由特定范例,考虑到已经以FMA单元及近似倒数单元为特征的吞吐量取向型架构(诸如GPU架构),此架构使得运算(诸如浮点除法运算及浮点取模运算)能够在合理吞吐量及非常低的硬件成本下利用准确舍入加以执行。
在本申请案中,字词“被配置为……”用于意谓装置的组件具有能够实施所定义运算的配置。在此上下文中,“配置”意谓硬件或软件的排列或互连方式。举例而言,装置可具有提供所定义运算的专用硬件,或可程序化处理器或其他处理设备以执行功能。“被配置为”并不暗示需要以任何方式改变装置组件以便提供所定义运算。
尽管本文已参看随附图式详细描述本发明的说明性实施例,但应理解,本发明并不受限于那些精确实施例,且本领域技术人员可在不脱离随附申请专利范围所定义的本发明的范畴及精神的情况下实施各种变化、添加及修改。举例而言,可在不脱离本发明的范畴的情况下利用独立权利要求的特征产生从属权利要求的特征的各种组合。
Claims (27)
1.一种装置,包含:
自变量归约电路系统,以执行自变量归约运算;以及
归约与舍入电路系统,以自所提供浮点值产生经修改浮点值以输入到所述自变量归约电路系统;
归约与舍入电路系统被布置为基于一指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生一截断有效数,该截断有效数比所提供浮点值的有效数短N个位,并且用作所述经修改浮点值的有效数;
所述指定值N使得使用所述经修改浮点值执行的自变量归约运算抑制该自变量归约运算的结果中的舍入误差。
2.如权利要求1所述的装置,其中所述指定值N使得所述经修改浮点值具有小于短N个位的截断有效数的1个最小精度单位(ulp)的误差界限。
3.如权利要求2所述的装置,其中所述指定值N是最小整数值,从而确保所述经修改浮点值具有小于1ulp的所述误差界限。
4.如权利要求1所述的装置,其中:
所提供浮点值的有效数包含M个位;以及
所述归约与舍入电路系统被布置为在所提供浮点值的有效数的第N个位位置处注入舍入值以产生经舍入的值,且随后形成所述经舍入的值的最高有效M-N个位作为所述截断有效数。
5.如权利要求4所述的装置,其中藉由将M位值的最低有效N个位设置成逻辑0值,所述截断有效数被表示为M位值。
6.如权利要求1所述的装置,其中所述指定值N取决于所提供浮点值的浮点格式。
7.如权利要求1所述的装置,其中所述自变量归约运算为乘法累加运算。
8.如权利要求7所述的装置,其中所述自变量归约电路系统包含融合乘法累加电路系统。
9.如权利要求1所述的装置,其中:
所述自变量归约电路系统及所述归约与舍入电路系统被采用在多个迭代中,在除了第一迭代以外的每一迭代中,由所述归约与舍入电路系统接收的所提供浮点值来源于前一迭代中由所述自变量归约电路系统产生的结果值。
10.如权利要求9所述的装置,还包含:
重调标度电路系统,以接收至少一个浮点操作数值,且对于每一浮点操作数值,执行重调标度运算来产生对应重调标度浮点值,以使得该重调标度浮点值与该浮点操作数值相差一定标因子;
所述自变量归约电路系统被布置为在接收所述经修改浮点值之外还接收从所述至少一个重调标度浮点值确定的至少一个额外浮点值;以及
所述定标因子被选择为使得每一重调标度浮点值的指数将确保在执行所述自变量归约运算的所述多个迭代时将不会遭遇非正规值。
11.如权利要求10所述的装置,其中所述重调标度电路系统被布置为产生第一重调标度浮点值及第二重调标度浮点值,且所述装置被布置为产生相当于对第一浮点操作数值及第二浮点操作数值执行指定浮点运算的结果,所述第一重调标度浮点值及第二重调标度浮点值是由所述重调标度电路系统从所述第一浮点操作数和所述第二浮点操作数值生成的。
12.如权利要求9所述的装置,其中在除了所述第一迭代以外的每一迭代中,由所述归约与舍入电路系统接收的所提供浮点值是将前一迭代中由所述自变量归约电路系统产生的结果值用作输入执行的乘法运算的输出。
13.如权利要求11所述的装置,其中所述指定浮点运算为使所述第一浮点操作数值除以所述第二浮点操作数值的浮点除法运算。
14.如权利要求13所述的装置,其中藉由将该多个迭代期间由该归约与舍入电路系统产生之该多个经修改浮点值加在一起来决定该浮点除法运算的该结果。
15.如权利要求14所述的装置,其中所述多个迭代的迭代次数被选择为确保所述浮点除法运算的结果将与根据所述浮点除法运算的指定舍入模式舍入的所述第一浮点操作数值除以所述第二浮点操作数值并经根据所述浮点除法运算的指定舍入模式而舍入的值相等。
16.如权利要求14所述的装置,其中所述加法被执行为一系列加法运算,且对于除了最终加法运算以外的每一加法运算,若该加法的结果不能以指定浮点格式精确表示,则该加法的结果被应用一舍入至奇数的舍入函数。
17.如权利要求14所述的装置,其中所述加法被执行为一系列加法运算,且当与所述第一重调标度浮点值关联的定标因子和与所述第二重调标度浮点值关联的定标因子不同时,最终加法运算被扩增以在该最终加法执行时考虑到这些定标因子之间的差异。
18.如权利要求17所述的装置,其中所述最终加法运算被扩增以便将加法结果的指数调整从由所述定标因子之间的差异确定出的量,之后所述加法结果的最终舍入被执行。
19.如权利要求15所述的装置,还包含分析电路系统,以分析倒数第二迭代中所产生的经修改浮点值的指定位,并在该分析指示所述指定位不同于至少一个预定位型样时使得最终迭代被忽略。
20.如权利要求19所述的装置,其中所述至少一个预定位型样包含全1的位型样或全0的位型样。
21.如权利要求11所述的装置,其中所述指定浮点运算为一浮点取模取模运算,以评估由所述第一浮点操作数值除以所述第二浮点操作数值产生的余数。
22.如权利要求21所述的装置,其中所述浮点取模取模运算的结果值是从所述自变量归约电路系统在一迭代中产生的结果值确定的,在该迭代中结果值小于所述第二重调标度浮点值。
23.如权利要求22所述的装置,其中相同定标因子与所述第一重调标度浮点值及所述第二重调标度浮点值相关联。
24.如权利要求11所述的装置,还包含倒数估计电路系统,以产生所述第二重调标度浮点值的估计倒数,其中相对误差具有误差界限Y,且所述指定值N取决于该值Y。
25.如权利要求1所述的装置,其中在所述截断有效数产生时由所述归约与舍入电路系统应用的指定舍入是最接近舍去舍入及舍入至最接近偶数之一者。
26.一种在数据处理装置内执行浮点运算时控制舍入的方法,该方法包含以下步骤:
采用自变量归约电路系统执行自变量归约运算;以及
执行归约与舍入运算自所提供浮点值产生经修改浮点值以输入到所述自变量归约电路系统;
所述归约与舍入运算基于一指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生一截断有效数,该截断有效数比所提供浮点值的有效数短N个位,并且用作所述经修改浮点值的有效数;
所述指定值N使得使用所述经修改浮点值执行的自变量归约运算抑制该自变量归约运算的结果中的舍入误差。
27.一种装置,包含:
自变量归约装置,用于执行自变量归约运算;以及
归约与舍入装置,用于自所提供浮点值产生经修改浮点值以输入到所述自变量归约装置;
所述归约与舍入装置用于基于一指定值N修改所提供浮点值的有效数,以便利用所应用的指定舍入产生一截断有效数,该截断有效数比所提供浮点值的有效数短N个位,并且用作所述经修改浮点值的有效数;
所述指定值N使得使用所述经修改浮点值执行的自变量归约运算抑制该自变量归约运算的结果中的舍入误差。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1510310.4A GB2539265B (en) | 2015-06-12 | 2015-06-12 | Apparatus and method for controlling rounding when performing a floating point operation |
GB1510310.4 | 2015-06-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250098A true CN106250098A (zh) | 2016-12-21 |
CN106250098B CN106250098B (zh) | 2021-12-28 |
Family
ID=53784606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610391198.XA Active CN106250098B (zh) | 2015-06-12 | 2016-06-03 | 用于在执行浮点运算时控制舍入的装置及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10338889B2 (zh) |
KR (1) | KR102570304B1 (zh) |
CN (1) | CN106250098B (zh) |
GB (1) | GB2539265B (zh) |
TW (1) | TWI715589B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569019A (zh) * | 2018-06-06 | 2019-12-13 | 辉达公司 | 数值的随机修约 |
CN112181357A (zh) * | 2020-09-02 | 2021-01-05 | 大连理工大学 | 除法运算方法、装置、电子设备和介质 |
CN113031910A (zh) * | 2019-12-09 | 2021-06-25 | Sap欧洲公司 | 误差界限浮点数据压缩系统 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579338B2 (en) * | 2017-01-30 | 2020-03-03 | Arm Limited | Apparatus and method for processing input operand values |
US10970045B2 (en) * | 2018-12-17 | 2021-04-06 | Samsung Electronics Co., Ltd. | Apparatus and method for high-precision compute of log1p( ) |
US11314482B2 (en) | 2019-11-14 | 2022-04-26 | International Business Machines Corporation | Low latency floating-point division operations |
US11467806B2 (en) | 2019-11-27 | 2022-10-11 | Amazon Technologies, Inc. | Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range |
US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
WO2023278475A1 (en) * | 2021-06-30 | 2023-01-05 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
CN118092852B (zh) * | 2024-04-26 | 2024-07-19 | 中科亿海微电子科技(苏州)有限公司 | 应用于浮点处理器的cordic装置及浮点处理器 |
CN118092854B (zh) * | 2024-04-26 | 2024-07-19 | 中科亿海微电子科技(苏州)有限公司 | 一种面积优化的串行浮点超越函数计算装置及处理器 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818851A (zh) * | 2005-02-09 | 2006-08-16 | 国际商业机器公司 | 用于执行浮点算术运算的系统和方法 |
US20080069337A1 (en) * | 2006-08-31 | 2008-03-20 | Intel Corporation | System and method for multi-precision division |
CN101221490A (zh) * | 2007-12-20 | 2008-07-16 | 清华大学 | 一种具有数据前送结构的浮点乘加单元 |
CN102004627A (zh) * | 2010-11-01 | 2011-04-06 | 深圳市海思半导体有限公司 | 乘法舍入实现方法和装置 |
CN102495715A (zh) * | 2011-11-28 | 2012-06-13 | 北京航天飞行控制中心 | 双精度浮点定义下的深空Doppler测速计算方法 |
US20130212139A1 (en) * | 2012-02-09 | 2013-08-15 | International Business Machines Corporation | Mixed precision estimate instruction computing narrow precision result for wide precision inputs |
US20140195580A1 (en) * | 2011-12-30 | 2014-07-10 | Cristina S. Anderson | Floating point round-off amount determination processors, methods, systems, and instructions |
CN104111816A (zh) * | 2014-06-25 | 2014-10-22 | 中国人民解放军国防科学技术大学 | Gpdsp中多功能simd结构浮点融合乘加运算装置 |
CN104520807A (zh) * | 2012-08-30 | 2015-04-15 | 高通股份有限公司 | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725519B2 (en) * | 2005-10-05 | 2010-05-25 | Qualcom Incorporated | Floating-point processor with selectable subprecision |
JP4629750B2 (ja) * | 2008-03-31 | 2011-02-09 | 日立オートモティブシステムズ株式会社 | 組み込み制御装置 |
US8990278B1 (en) * | 2011-10-17 | 2015-03-24 | Xilinx, Inc. | Circuitry for computing mathematical functions |
-
2015
- 2015-06-12 GB GB1510310.4A patent/GB2539265B/en active Active
-
2016
- 2016-05-17 US US15/156,379 patent/US10338889B2/en active Active
- 2016-06-03 TW TW105117595A patent/TWI715589B/zh active
- 2016-06-03 KR KR1020160069263A patent/KR102570304B1/ko active IP Right Grant
- 2016-06-03 CN CN201610391198.XA patent/CN106250098B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818851A (zh) * | 2005-02-09 | 2006-08-16 | 国际商业机器公司 | 用于执行浮点算术运算的系统和方法 |
US20080069337A1 (en) * | 2006-08-31 | 2008-03-20 | Intel Corporation | System and method for multi-precision division |
CN101221490A (zh) * | 2007-12-20 | 2008-07-16 | 清华大学 | 一种具有数据前送结构的浮点乘加单元 |
CN102004627A (zh) * | 2010-11-01 | 2011-04-06 | 深圳市海思半导体有限公司 | 乘法舍入实现方法和装置 |
CN102495715A (zh) * | 2011-11-28 | 2012-06-13 | 北京航天飞行控制中心 | 双精度浮点定义下的深空Doppler测速计算方法 |
US20140195580A1 (en) * | 2011-12-30 | 2014-07-10 | Cristina S. Anderson | Floating point round-off amount determination processors, methods, systems, and instructions |
US20130212139A1 (en) * | 2012-02-09 | 2013-08-15 | International Business Machines Corporation | Mixed precision estimate instruction computing narrow precision result for wide precision inputs |
CN104520807A (zh) * | 2012-08-30 | 2015-04-15 | 高通股份有限公司 | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 |
CN104111816A (zh) * | 2014-06-25 | 2014-10-22 | 中国人民解放军国防科学技术大学 | Gpdsp中多功能simd结构浮点融合乘加运算装置 |
Non-Patent Citations (2)
Title |
---|
HOU-JEN KO,ET AL.: ""Design and Application of Faithfully Rounded and Truncated Multipliers with Combined Deletion,Reduction,Truncation,and Rounding"", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS II: EXPRESS BRIEFS》 * |
江翠: ""数值计算中舍入误差对算法稳定性的影响"", 《高等函授学报(自然科学版)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569019A (zh) * | 2018-06-06 | 2019-12-13 | 辉达公司 | 数值的随机修约 |
CN113031910A (zh) * | 2019-12-09 | 2021-06-25 | Sap欧洲公司 | 误差界限浮点数据压缩系统 |
CN112181357A (zh) * | 2020-09-02 | 2021-01-05 | 大连理工大学 | 除法运算方法、装置、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106250098B (zh) | 2021-12-28 |
GB2539265B (en) | 2020-07-29 |
US20170010863A1 (en) | 2017-01-12 |
KR102570304B1 (ko) | 2023-08-24 |
TWI715589B (zh) | 2021-01-11 |
KR20160146535A (ko) | 2016-12-21 |
TW201702863A (zh) | 2017-01-16 |
US10338889B2 (en) | 2019-07-02 |
GB201510310D0 (en) | 2015-07-29 |
GB2539265A (en) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106250098A (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
CN110168493B (zh) | 在128位宽的操作数上的融合乘加浮点运算 | |
US8812575B2 (en) | Decimal floating-point square-root unit using Newton-Raphson iterations | |
KR102358013B1 (ko) | 3-경로 단일 곱셈-누산기 설계에서 고속 근경로 증분합 | |
US9483232B2 (en) | Data processing apparatus and method for multiplying floating point operands | |
US8751555B2 (en) | Rounding unit for decimal floating-point division | |
JPH04227535A (ja) | 除算を行なう装置 | |
US11853716B2 (en) | System and method for rounding reciprocal square root results of input floating point numbers | |
US10489115B2 (en) | Shift amount correction for multiply-add | |
Gonzalez-Navarro et al. | Binary integer decimal-based floating-point multiplication | |
US20230333812A1 (en) | Method and system for processing floating point numbers | |
US8713084B2 (en) | Method, system and computer program product for verifying floating point divide operation results | |
Zadiraka et al. | Calculating the Sum of Multidigit Values in a Parallel Computational Model | |
US10416960B2 (en) | Check procedure for floating point operations | |
US20230147929A1 (en) | Exact versus inexact decimal floating-point numbers and computation system | |
Zadiraka et al. | Parallel Methods of Representing Multidigit Numbers in Numeral Systems for Testing Multidigit Arithmetic Operations | |
JP4109181B2 (ja) | 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ | |
US10037191B2 (en) | Performing a comparison computation in a computer system | |
JP3659408B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
CN116610284A (zh) | 用于计算点积的方法和系统 | |
CN116610285A (zh) | 用于计算点积的方法和系统 | |
JPWO2020084692A1 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
SWETHA et al. | VLSI Implementation of a High Speed Single Precision Floating Point Multiplier using Verilog |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |