用于高效浮点计算的运算的制作方法
【专利说明】用于高效浮点计算的运算
[0001]共同待决专利申请案的参考
[0002]本专利申请案涉及以下共同待决的美国专利申请案:与本专利申请案同时申请的王亮凯(Liang-Kai Wang)的“用于具有指数按比例缩放的浮点融合乘法加法的微架构(MICROARCHITECTURE FOR FLOATING POINT FUSED MULTIPLY-ADD WITH EXPONENTSCALING) ”(代理人案号121186),所述申请案已转让给本受让人,且以引用的方式明确地并入本文中。
技术领域
[0003]所揭示实施例涉及用于浮点运算的专用指令及技术。更确切地说,示例性实施例涉及用于检测及有效地处置例如除法及平方根计算等浮点运算中的有问题的拐点情况的指令及技术。
【背景技术】
[0004]若干现代处理器支持浮点运算且包含用于浮点算术的专用硬件及/或软件。缺乏此类支持可能需要软件模拟浮点运算,此情形可能为效率低下的及缓慢的。用于二进制浮点算术的IEEE标准IEEE 754跨越处理器架构为便携式的,且通常用于实施浮点运算的处理器中。所述标准用正负号、指数及小数部分(还被称为“尾数”或“有效数字”)定义有限数的进制。例如加法、减法、乘法、除法及平方根计算等浮点算术运算的实施方案可基于标准定义。所述标准还可定义可产生异常且造成引发某些旗标的情境、精度要求、舍入模式等。
[0005]特别关于除法及平方根计算,所属领域的技术人员将认识到与其相关联的所需精度、舍入模式及异常。一种用于除法的已知技术包含迭代除法,其中每一迭代计算最终商的一个数字,此情形可为效率非常低下的,且在不对现有处理器架构进行显著更改的情况下难以实施。除法的另一种更高效方法(所谓的牛顿拉普森方法(Newton-Raphson method))利用收敛到预期的最终商值的算法。牛顿拉普森方法在浮点除法计算中使用分母的倒数的初始近似,且所述算法逐渐将倒数收敛到I除以分母。在其中分母的倒数达到足够的准确度的点,将其乘以分子将提供除法的商。
[0006]虽然牛顿拉普森收敛除法方法一般较快且更高效,但某些浮点数造成需要特别注意的有问题的拐点情况。此类有问题的情况包含下溢,其中最终的商值太小而无法在IEEE754标准中使用指配位数来表示;溢出,其中最终的商值太大而无法在IEEE 754标准中使用指配位数来表示;不充分的精度,这归因于与中间结果的下溢及溢出相似的情境;及有效数字值,其并不是非常适合于倒数细化。其它有问题的情况涉及除以零、为无穷大或非数字值(NaN)的操作数值(分子/分母)等的除法。类似性质的问题同样出现在平方根计算中。
[0007]用于处置此类有问题的拐点情况的已知技术包含检测拐点情况及实施陷阱。然而,陷阱的实施方案可涉及不希望的复杂性。举例来说,陷阱的实施方案类似于软件浮点模拟,其为效率低下的及缓慢的。此外,实施陷阱还招致与保存上下文及在处置拐点情况之后恢复程序执行相关联的开销。陷阱处理程序还难以在不影响相关联的处理器的程序流程的其余部分的性能的情况下集成在处理器的管线中。
[0008]另外,常规实施方案还可在每个计算阶段期间设置某些旗标,此可导致低效率。举例来说,牛顿拉普森除法的常规实施方案可针对涉及用于存储中间计算阶段中的值的中间寄存器的精度的缺乏的状况设置错误旗标或浮点旗标,即使计算的理论上预期的最终结果可能并未引发任何此类旗标也如此。因此,在中间阶段中设置此类旗标可产生错误,这是因为旗标可能已被不正确地设置。
[0009]因此,所属领域中存在对克服与浮点运算的常规实施方案相关联的上述缺点的对应需要。
【发明内容】
[0010]本发明的示例性实施例涉及关于用于检测及有效地处置例如除法及平方根计算等浮点运算中的有问题的拐点情况的专用指令及技术的系统及方法。
[0011]举例来说,示例性实施例涉及一种操作浮点单元的方法,所述方法包括:从存储器接收一或多个浮点数;接收对应于计算的浮点指令;检测将在所述计算中产生有问题的拐点情况的一或多个浮点数;用定点化运算修改所述计算以便避免所述有问题的拐点情况;在所述计算的中间阶段期间抑制错误旗标;及执行所述经修改的计算。
[0012]另一示例性实施例涉及一种执行浮点乘法累加(FMA)运算的方法,所述方法包括:在浮点单元中接收乘数、被乘数及加数操作数;检测关于所述操作数的FMA运算将产生异常;定义针对所述FMA运算的特殊状况;在所述FMA运算期间抑制错误旗标;及在所述浮点单元中根据所述特殊状况执行所述FM运算。
[0013]另一示例性实施例涉及一种执行具有按比例缩放的浮点乘法累加运算(FMASc)的方法,所述方法包括:在浮点单元中接收乘数、被乘数、加数及比例因子操作数;检测关于所述操作数的FMASc运算将产生异常;针对所述FMASc运算定义特殊状况;在所述FMASc运算期间抑制错误旗标;及在所述浮点单元中根据所述特殊状况执行所述FMASc运算。
[0014]另一示例性实施例涉及一种浮点单元,其包括:用以接收一或多个浮点数及对应于计算的浮点指令的逻辑;经配置以检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的检测逻辑;用以在所述计算的中间阶段期间抑制错误旗标的逻辑;经配置以修改所述计算以便避免所述有问题的拐点情况的修改逻辑;及用以执行所述经修改的计算的逻辑。
[0015]另一示例性实施例涉及一种系统,其包括:用于接收一或多个浮点数及对应于计算的浮点指令的装置;用于检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的装置;用于在所述计算的中间阶段期间抑制错误旗标的装置;用于修改所述计算以便避免所述有问题的拐点情况的装置;及用于执行所述经修改的计算的装置。
[0016]又一示例性实施例涉及一种非暂时性计算机可读存储媒体,其包括在由处理器执行时致使所述处理器执行用于执行浮点计算的运算的代码,所述非暂时性计算机可读存储媒体包括:用于检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的代码;用于在所述计算的中间阶段期间抑制错误旗标的代码;用于用定点化运算修改所述计算以便避免所述有问题的拐点情况的代码;及用于执行所述经修改的计算的代码。
【附图说明】
[0017]呈现附图以辅助描述本发明的实施例,且提供所述附图仅用于说明本发明的实施例而非限制本发明的实施例。
[0018]图1A到IB说明用于使用牛顿拉普森方法执行浮点除法运算的数学等式。
[0019]图2说明用于浮点除法的坐标输入的曲线图。
[0020]图3A到3B说明根据示例性实施例的用于使用牛顿拉普森方法实施浮点除法的汇编及高级代码序列。
[0021]图4说明用于执行浮点平方根计算的数学等式。
[0022]图5A到5C说明根据示例性实施例的用于实施浮点平方根计算的汇编及高级代码序列。
[0023]图6A说明根据示例性实施例的经配置以执行浮点计算的示例性系统600。
[0024]图6B说明根据示例性实施例的用于对浮点数执行计算的方法的流程图表示。
[0025]图7说明可有利地在其中使用本发明的实施例的示范性无线通信系统700。
【具体实施方式】
[0026]在以下针对本发明的特定实施例的描述及相关图式中揭示本发明的若干方面。可在不脱离本发明的范围的情况下设计出替代实施例。另外,将不会详细描述或将省略本发明的众所熟知的元件以免混淆本发明的相关细节。
[0027]词语“示例性”在本文中用于意味着“充当实例、例子或说明”。本文中被描述为“示例性”的任何实施例未必应解释为比其它实施例优选或有利。同样,术语“本发明的实施例”并非要求本发明的所有实施例包含所论述的特征、优点或操作模式。
[0028]本文中所使用的术语仅仅是为了描述特定实施例,且并不希望限制本发明的实施例。如本文所使用,除非上下文另外清楚地指示,否则单数形式“一”及“所述”希望还包含复数形式。将进一步理解,术语“包括”及/或“包含”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。
[0029]另外,依据待由(例如)计算装置的元件执行的动作序列来描述许多实施例。将认识到,可由特定电路(例如,专用集成电路(ASIC))、由正由一或多个处理器执行的程序指令或由两者的组合来执行本文中所描述的各种动作。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有一组对应的计算机指令,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的标的物的范围内。另外,对于本文中所描述的实施例中的每一者来说,任何此类实施例的对应形式可在本文中被描述为(例如)“经配置以(执行所描述动作)的逻辑”。
[0030]示例性实施例包含用于克服常规浮点实施方案的缺点的各种技术、特殊指令及相关联硬件/软件支持。一些实施例可包含示例性格式的指令,例如具有特殊舍入模式及旗标处置以便实施例如除法及平方根计算等浮点运算的融合乘法加法(FMA)。因此,在