CN104603744A - 用于高效浮点计算的运算 - Google Patents

用于高效浮点计算的运算 Download PDF

Info

Publication number
CN104603744A
CN104603744A CN201280075418.8A CN201280075418A CN104603744A CN 104603744 A CN104603744 A CN 104603744A CN 201280075418 A CN201280075418 A CN 201280075418A CN 104603744 A CN104603744 A CN 104603744A
Authority
CN
China
Prior art keywords
newton
pusen
division
denominator
computing
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
Application number
CN201280075418.8A
Other languages
English (en)
Other versions
CN104603744B (zh
Inventor
埃里克·詹姆斯·普隆迪克
戴维·J·霍伊尔
斯瓦米纳坦·巴拉苏布拉马尼安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN104603744A publication Critical patent/CN104603744A/zh
Application granted granted Critical
Publication of CN104603744B publication Critical patent/CN104603744B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5355Using iterative approximation not using digit recurrence, e.g. Newton Raphson or Goldschmidt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing

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)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供用于有效地处置浮点运算中的有问题的拐点情况而不引发旗标或异常的系统及方法。检测将在例如除法或平方根计算等浮点计算中产生有问题的拐点情况的一或多个浮点数。应用定点化运算以修改所述计算以便避免所述有问题的拐点情况。接着执行所述经修改的计算,同时在中间阶段期间抑制错误旗标。

Description

用于高效浮点计算的运算
共同待决专利申请案的参考
本专利申请案涉及以下共同待决的美国专利申请案:与本专利申请案同时申请的王亮凯(Liang-Kai Wang)的“用于具有指数按比例缩放的浮点融合乘法加法的微架构(MICROARCHITECTURE FOR FLOATING POINT FUSED MULTIPLY-ADD WITHEXPONENT SCALING)”(代理人案号121186),所述申请案已转让给本受让人,且以引用的方式明确地并入本文中。
技术领域
所揭示实施例涉及用于浮点运算的专用指令及技术。更确切地说,示例性实施例涉及用于检测及有效地处置例如除法及平方根计算等浮点运算中的有问题的拐点情况的指令及技术。
背景技术
若干现代处理器支持浮点运算且包含用于浮点算术的专用硬件及/或软件。缺乏此类支持可能需要软件模拟浮点运算,此情形可能为效率低下的及缓慢的。用于二进制浮点算术的IEEE标准IEEE 754跨越处理器架构为便携式的,且通常用于实施浮点运算的处理器中。所述标准用正负号、指数及小数部分(还被称为“尾数”或“有效数字”)定义有限数的进制。例如加法、减法、乘法、除法及平方根计算等浮点算术运算的实施方案可基于标准定义。所述标准还可定义可产生异常且造成引发某些旗标的情境、精度要求、舍入模式等。
特别关于除法及平方根计算,所属领域的技术人员将认识到与其相关联的所需精度、舍入模式及异常。一种用于除法的已知技术包含迭代除法,其中每一迭代计算最终商的一个数字,此情形可为效率非常低下的,且在不对现有处理器架构进行显著更改的情况下难以实施。除法的另一种更高效方法(所谓的牛顿拉普森方法(Newton-Raphsonmethod))利用收敛到预期的最终商值的算法。牛顿拉普森方法在浮点除法计算中使用分母的倒数的初始近似,且所述算法逐渐将倒数收敛到1除以分母。在其中分母的倒数达到足够的准确度的点,将其乘以分子将提供除法的商。
虽然牛顿拉普森收敛除法方法一般较快且更高效,但某些浮点数造成需要特别注意的有问题的拐点情况。此类有问题的情况包含下溢,其中最终的商值太小而无法在IEEE754标准中使用指配位数来表示;溢出,其中最终的商值太大而无法在IEEE 754标准中使用指配位数来表示;不充分的精度,这归因于与中间结果的下溢及溢出相似的情境;及有效数字值,其并不是非常适合于倒数细化。其它有问题的情况涉及除以零、为无穷大或非数字值(NaN)的操作数值(分子/分母)等的除法。类似性质的问题同样出现在平方根计算中。
用于处置此类有问题的拐点情况的已知技术包含检测拐点情况及实施陷阱。然而,陷阱的实施方案可涉及不希望的复杂性。举例来说,陷阱的实施方案类似于软件浮点模拟,其为效率低下的及缓慢的。此外,实施陷阱还招致与保存上下文及在处置拐点情况之后恢复程序执行相关联的开销。陷阱处理程序还难以在不影响相关联的处理器的程序流程的其余部分的性能的情况下集成在处理器的管线中。
另外,常规实施方案还可在每个计算阶段期间设置某些旗标,此可导致低效率。举例来说,牛顿拉普森除法的常规实施方案可针对涉及用于存储中间计算阶段中的值的中间寄存器的精度的缺乏的状况设置错误旗标或浮点旗标,即使计算的理论上预期的最终结果可能并未引发任何此类旗标也如此。因此,在中间阶段中设置此类旗标可产生错误,这是因为旗标可能已被不正确地设置。
因此,所属领域中存在对克服与浮点运算的常规实施方案相关联的上述缺点的对应需要。
发明内容
本发明的示例性实施例涉及关于用于检测及有效地处置例如除法及平方根计算等浮点运算中的有问题的拐点情况的专用指令及技术的系统及方法。
举例来说,示例性实施例涉及一种操作浮点单元的方法,所述方法包括:从存储器接收一或多个浮点数;接收对应于计算的浮点指令;检测将在所述计算中产生有问题的拐点情况的一或多个浮点数;用定点化运算修改所述计算以便避免所述有问题的拐点情况;在所述计算的中间阶段期间抑制错误旗标;及执行所述经修改的计算。
另一示例性实施例涉及一种执行浮点乘法累加(FMA)运算的方法,所述方法包括:在浮点单元中接收乘数、被乘数及加数操作数;检测关于所述操作数的FMA运算将产生异常;定义针对所述FMA运算的特殊状况;在所述FMA运算期间抑制错误旗标;及在所述浮点单元中根据所述特殊状况执行所述FMA运算。
另一示例性实施例涉及一种执行具有按比例缩放的浮点乘法累加运算(FMASc)的方法,所述方法包括:在浮点单元中接收乘数、被乘数、加数及比例因子操作数;检测关于所述操作数的FMASc运算将产生异常;针对所述FMASc运算定义特殊状况;在所述FMASc运算期间抑制错误旗标;及在所述浮点单元中根据所述特殊状况执行所述FMASc运算。
另一示例性实施例涉及一种浮点单元,其包括:用以接收一或多个浮点数及对应于计算的浮点指令的逻辑;经配置以检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的检测逻辑;用以在所述计算的中间阶段期间抑制错误旗标的逻辑;经配置以修改所述计算以便避免所述有问题的拐点情况的修改逻辑;及用以执行所述经修改的计算的逻辑。
另一示例性实施例涉及一种系统,其包括:用于接收一或多个浮点数及对应于计算的浮点指令的装置;用于检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的装置;用于在所述计算的中间阶段期间抑制错误旗标的装置;用于修改所述计算以便避免所述有问题的拐点情况的装置;及用于执行所述经修改的计算的装置。
又一示例性实施例涉及一种非暂时性计算机可读存储媒体,其包括在由处理器执行时致使所述处理器执行用于执行浮点计算的运算的代码,所述非暂时性计算机可读存储媒体包括:用于检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的代码;用于在所述计算的中间阶段期间抑制错误旗标的代码;用于用定点化运算修改所述计算以便避免所述有问题的拐点情况的代码;及用于执行所述经修改的计算的代码。
附图说明
呈现附图以辅助描述本发明的实施例,且提供所述附图仅用于说明本发明的实施例而非限制本发明的实施例。
图1A到1B说明用于使用牛顿拉普森方法执行浮点除法运算的数学等式。
图2说明用于浮点除法的坐标输入的曲线图。
图3A到3B说明根据示例性实施例的用于使用牛顿拉普森方法实施浮点除法的汇编及高级代码序列。
图4说明用于执行浮点平方根计算的数学等式。
图5A到5C说明根据示例性实施例的用于实施浮点平方根计算的汇编及高级代码序列。
图6A说明根据示例性实施例的经配置以执行浮点计算的示例性系统600。
图6B说明根据示例性实施例的用于对浮点数执行计算的方法的流程图表示。
图7说明可有利地在其中使用本发明的实施例的示范性无线通信系统700。
具体实施方式
在以下针对本发明的特定实施例的描述及相关图式中揭示本发明的若干方面。可在不脱离本发明的范围的情况下设计出替代实施例。另外,将不会详细描述或将省略本发明的众所熟知的元件以免混淆本发明的相关细节。
词语“示例性”在本文中用于意味着“充当实例、例子或说明”。本文中被描述为“示例性”的任何实施例未必应解释为比其它实施例优选或有利。同样,术语“本发明的实施例”并非要求本发明的所有实施例包含所论述的特征、优点或操作模式。
本文中所使用的术语仅仅是为了描述特定实施例,且并不希望限制本发明的实施例。如本文所使用,除非上下文另外清楚地指示,否则单数形式“一”及“所述”希望还包含复数形式。将进一步理解,术语“包括”及/或“包含”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。
另外,依据待由(例如)计算装置的元件执行的动作序列来描述许多实施例。将认识到,可由特定电路(例如,专用集成电路(ASIC))、由正由一或多个处理器执行的程序指令或由两者的组合来执行本文中所描述的各种动作。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有一组对应的计算机指令,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的标的物的范围内。另外,对于本文中所描述的实施例中的每一者来说,任何此类实施例的对应形式可在本文中被描述为(例如)“经配置以(执行所描述动作)的逻辑”。
示例性实施例包含用于克服常规浮点实施方案的缺点的各种技术、特殊指令及相关联硬件/软件支持。一些实施例可包含示例性格式的指令,例如具有特殊舍入模式及旗标处置以便实施例如除法及平方根计算等浮点运算的融合乘法加法(FMA)。因此,在一些实施例中,可在中间计算阶段中抑制错误旗标或其它浮点(FP)旗标。另外,一些实施例还可及早检测有问题的拐点情况且使用比例因子来将相关联的操作数值定点化或移动到可容易管理的实数空间中,从而避免对陷阱及异常的需要。一些实施例可包含示例性舍入格式以便保留中间结果的精度及使计算中的误差最小化。一些实施例还可包含对例如无穷大及NaN等特殊值的示例性处置以便确保浮点运算产生这些值的预期结果。又其它实施例可涉及辨识可为除法/平方根实施方案的部分的指令序列及对这些序列执行定点化运算。现将进一步详细描述这些实施例。
第一实施例
现将描述涉及浮点除法的第一实施例。此第一实施例可经配置以包含特殊舍入模式及旗标处置以便避免牛顿拉普森除法中的错误及有问题的拐点情况。如先前所提及,除法的熟知的牛顿拉普森方法使用分母的倒数的初始近似。通过一序列迭代,使倒数收敛到1除以分母的所得值。一旦确定已按所定义的或所要的准确度计算出倒数,便将分子乘以分母的倒数以便产生对除法的结果(或商)的估计。可在后续迭代中进一步细化此估计,直到获得指定精度的商为止。
现在参看图1A,展示用于使用牛顿拉普森方法进行除法的数学等式。在框102中,展示细化倒数估计的基本步骤,其中获得初始倒数估计ri。接着将此初始倒数估计乘以分母d且从1减去乘积以产生初始误差项∈i。在下一迭代中,通过将初始倒数估计ri乘以∈i且将此乘积与ri相加获得更准确的下一个倒数估计ri+1
进行到框104,说明对下一个误差项计算的改进。在一些情况下,可通过对倒数估计∈i求平方值来产生对误差项的下一个估计∈i+1。因为以此方式计算的下一个误差项∈i+1并不取决于倒数估计,所以与在框102中计算误差项的情况中相似,可与计算倒数估计并行地执行估计∈i+1的此方法,且因此可改进性能。
然而,浮点数的有限精度可在使用根据框104进行的下一个误差项∈i+1的等效计算中产生误差,且所计算的∈i+1可从框102中的原始计算发散。将认识到,倒数估计到所定义或所要的准确度的收敛为二次的,这是因为当误差项成平方时,在每一后续迭代中,倒数估计的准确度的数目或位数加倍。如先前所提到,可通过将最终收敛的倒数r乘以分子n来计算商估计q。由于浮点数的有限精度,造成此商估计q可能并非准确的。
在第一实施例中,可通过如框106中所展示定义额外误差项δ来处置归因于浮点数的有限精度产生的商的准确度的可能的损失。可通过从分子减去分母与商估计的乘积来计算误差项δi的初始值。此后,可通过将最初获得的商qi与δi及r的乘积相加来获得商的后续迭代qi+1。将认识到,用舍入到最近值的舍入模式执行框102到106中所定义的运算可产生最终的商值,所述最终的商值经校正为在最后的位置(ulp)中的单元的二分之一内。然而,如果使用用户定义的舍入模式来执行浮点除法,那么存在以下风险:归因于上文所描述的导致精度损失的状况而造成误差,且相关旗标可能未被正确地设置。因此,在第一实施例中,可根据框106执行细化商值的额外迭代,其中按在用户定义的舍入模式中进行舍入来执行δi及r的最终乘法,而使用舍入到最近值的舍入模式执行所有其它运算。另外,可在中间阶段期间抑制旗标,且可仅允许最终阶段设置旗标。以此方式,第一实施例可克服与浮点数的有限精度相关联的缺点及牛顿拉普森浮点除法中的准确度的损失的相关可能。
现将参看图1B描述对应于分母d的特定值D及其倒数估计的相关实施例。为了使此实施例的说明简单起见,考虑仅具有四位有效数字的浮点表示。对于特定值D,所有四位有效数字为“1”,且其中浮点记法为1.1111×20。此分母值的正确倒数为16/31或1.000010000100001...×2-1。将此倒数估计正确地舍入到1.0001。然而,如图1B的框108中所展示,选择初始倒数估计r0为1.0000×2-1。将初始倒数估计的此值用于框110中计算倒数估计的后续迭代。然而,归因于有限位数,将后续倒数估计r1的中间值1.000010000×2-1向下舍入到最终值1.0000×2-1。因此,后续倒数估计r1以与初始倒数估计r0相同结束。如果将计算的中间值向下舍入以适应可用于有效数字的有限的四位,那么在后续迭代中将保持此特性。因此,倒数估计将不会收敛,且因此,出现有问题的拐点情况。
为了处置此拐点情况,实施例可在ulp中引入执行初始倒数估计r0与值“1”的逻辑或(logical OR)的步骤。归因于此情形而引入的误差太小而无法在误差项∈0中产生有效偏差。另一方面,此执行或(OR)的步骤将允许适当地将初始倒数估计舍入以使得后续倒数估计将收敛。因此,在此实施例中,可通过以下步骤来有效地处置其中分母d具有全部为1的有效数字或尾数的特定有问题的拐点情况:执行初始倒数估计与值1的逻辑或,以便在不借助于陷阱或其它异常处置例程的情况下产生收敛结果。
第二实施例
第二实施例与以下步骤相关联:检测有问题的操作数,例如牛顿拉普森除法中的分子及分母值,及执行定点化运算以便在不借助于常规陷阱来处置此类情况的情况下执行除法。
现在将参看图2,图2说明对应于可在第二实施例中处置的用于浮点除法的操作数值的组合的情形(a)到(e)。如所说明,在X轴上说明用于分子n的操作数值的范围,而在Y轴上说明用于分母d的操作数值的范围。现将描述情形(a)到(e)以及根据第二实施例的对应的定点化运算。
从情形(a)开始,此情形涉及除法运算中的状况,其中分母d的值较大且分子n的值较小,因此商q可能太小而无法按给定精度或位数准确地表示,例如,在迭代牛顿拉普森除法的上文所描述的计算阶段期间。如先前所提及,此状况可被称作下溢。如所说明,对角线201表示将产生无下溢情形的商的区(大体指明为201b)与将造成下溢的区(大体指明为201a)之间的划分线。为了克服下溢问题,将需要将位于区201a中的分子及分母值的任何组合迁移到区201b。在第二实施例中,可通过以下步骤来实现此迁移:辨识可产生下溢(即,属于区201a中)的分子及分母组合,及将比例因子2k应用于分子n,其中k为正数。另外,将比例因子2-k应用于分母。可基于将分子n按比例缩放到足够大以避免下溢的经按比例缩放值借此将(n,d)坐标迁移到区201b所需的值确定k的近似值。在完成除法运算后,可将比例因子的倒数(即,1/(22k)或2-2k)应用于商q以确保正确的商值。此情形将使得牛顿拉普森除法的中间阶段能够(例如)无下溢关注问题。因此,实施例可在牛顿拉普森除法的中间阶段期间抑制相关旗标,同时确保最终结果无误差。
现在进行到情形(b),此情形涉及溢出,其中分子n的值较大且分母d的值较小,因此商q可能太大而无法按有限精度准确地表示,例如,在迭代牛顿拉普森除法的上文所描述的计算阶段期间。参看图2,对角线202可表示可造成溢出的区202a与可为安全的从而免于溢出状况的区202b之间的划分线。因此,在此情况下,第二实施例可检测特定(n,d)坐标位于区202a中,且将比例因子2k应用于分母d,且将比例因子2-k应用于分子n,以便将(n,d)坐标迁移到区202b。可将倒数比例因子22k应用于最终商q以确保正确的商值。此情形将使得牛顿拉普森除法的中间阶段能够(例如)无溢出关注问题。因此,实施例可在牛顿拉普森除法的中间阶段期间抑制相关旗标,同时确保最终结果无误差。
继续进行情形(c),此情形涉及类似于情形(a)的情境,其中差别在于:情形(c)一般可能适用于非常大的分母d值,而不管分子n的大小。因此,可通过针对大于特定大值的分母值使分子值变化来表示情形(c)。在图3中,水平线203形成指明将导致商缺乏精度的大分母值的区203a与指明可能不会造成精度损失的分母值的区203b之间的划分线。为了将(n,d)坐标从区203a迁移到区203b,第二实施例可检测属于区203a内的分母d的值且将分子n及分母d两者乘以同一个量(例如,比例因子2k,其中k为负数),其中辨识2k/2k=1,且因此最终商的值将保持不变。因此,实施例可在牛顿拉普森除法的中间阶段期间抑制相关旗标,同时确保最终结果无误差。
情形(d)类似于情形(c),其中差别在于:直线204表示可归因于溢出型结果(由于非常小的分母值)而造成不充分精度的区204a与将具有足够精度的区204b之间的划分线。类似于情形(d),第二实施例可将同一比例因子2k(其中k为正数)应用于分子n及分母d两者,以将坐标(n,d)从区204a迁移到区204b。因此,实施例可在牛顿拉普森除法的中间阶段期间抑制相关旗标,同时确保最终结果无误差。
情形(d)的反转为情形(e),其中分子n太小,但结果相同:商太小而无法按足够精度按给定的位数来表示。直线205表示可造成精度损失的区205a与表示足够精度的区205b之间的划分线。因此,第二实施例可通过将同一比例因子2k应用于分子n及分母d而将(n,d)坐标从有问题的区205a迁移到区205b。因此,实施例可在牛顿拉普森除法的中间阶段期间抑制相关旗标,同时确保最终结果无误差。
上文所描述的情形(a)到(e)可涉及将比例因子应用于浮点除法运算的操作数。如先前(例如)关于第一实施例所描述,在实施牛顿拉普森除法中的所要精度的商值的迭代计算期间,执行若干个乘法及加法(或减法)运算。为了有效地实施各种按比例缩放及乘法及加法运算,一些实施例可涉及具有按比例缩放的融合乘法加法(还被称为FMASc)的形式的特殊指令。FMASc指令可表示为[(A*B)+C]*2k,且定义关于被乘数A、乘数B及加数C的融合乘法加法运算,其中将比例因子2k应用于结果。FMASc指令的定制的硬件实施方案描述于上文引用的共同待决的申请案中。在以下实施例中还描述FMA指令的特殊处置。
第三实施例
第三实施例涉及例如除法及平方根计算等浮点运算中的旗标及舍入模式的特殊处置。为了介绍此实施例,将考虑单个数值实例。在使用牛顿拉普森方法执行的值“3”除以“3”的浮点除法的情况下,倒数估计可遇到精度损失,这是因为1/3的确切值无法按有限位数表示。然而,最终的商q必须仍为值“1.0”且除法3/3不应引发任何旗标(例如,IEEE 754标准中定义的“不确切”旗标)。因此,实施例可在中间计算阶段期间抑制此类旗标以便避免与设置错误旗标相关联的上述问题。另外,为了有效地处置若干其它有问题的拐点情况,第三实施例还可包含以下特殊特性。
关于浮点除法,定义以下特殊处置。第一,定义(例如)用于分母的非数字值(“NaN”,如IEEE 754标准中所定义)操作数值以产生NaN倒数估计。此情形造成将最终商正确地计算为NaN结果。将类似定义扩展到用于除法的操作数值(0/0及∞/∞)以产生NaN倒数估计且随后产生NaN结果。
第二,对除以零的有限除法以及无穷大(分子为∞)除以非零有限值的除法执行特殊定点化运算。在这些情况下,将分子定点化为∞且将分母定点化为1。还将分母的倒数估计定点化为1,因此最终结果为∞。
第三,零除以非零值以及有限值除以无穷大的除法也涉及特殊处置。IEEE 754格式指定:在这些情况下,除法的商必须为零,且另外,零必须具有正确的正负号。更具体来说,其中n为正值,将除法+n/∞定义为产生+0,而将除法-n/∞定义为产生-0。然而,IEEE标准还指定+0与-0的加法应产生+0。对于具有所得值0的许多常规FMA运算来说,此要求可能为有问题的,这是因为其均将被迫使具有正负号+0。因此,与常规FMA实施方案形成对比,此实施例定义用于计算[(A*B)+C]的FMA运算的特殊特性,其中在被乘数A或乘数B为零的情况下,加数C的正负号保持。在此实施例中,通过此特殊特性,当用具正确正负号的零初始化牛顿拉普森除法中的商值时(例如,在图1的框106中),保证了结果产生具正确正负号的零。还可在示例性实施例中将具有此特殊特性的FMA运算扩展到平方根计算。
第四实施例
第四实施例涉及用于浮点牛顿拉普森除法的指令序列的组织及相关定点化运算。参看图3A,说明用于根据牛顿拉普森方法实施浮点除法的示例性汇编代码序列300。在框302中,认识到,分子n及分母d需要类似于在先前实施例中所描述的定点化运算的定点化运算。在一个实例中,定点化运算可涉及n及d的特定值,其可能需要通过根据在第二实施例中描述的情形(a)到(e)中的一者的适当的按比例缩放进行(n,d)坐标的迁移。因此,获得经定点化的分子n′及分母d′,且初始倒数估计r0是基于d′。在框304中,计算计算后续倒数估计r1及r2的两个迭代及对应的误差项∈0及∈1。如第一实施例中所描述,执行使用误差项δ0及δ1进行的用于商q0、q1及q2的额外迭代以便适应用户定义的舍入模式且避免归因于精度损失/缺乏收敛产生的误差。因此,可使用舍入到最近值的舍入模式执行框304,而不设置任何旗标(例如,先前所论述的不确切旗标)。在最终步骤框306中,可适应用户定义的舍入模式且可设置旗标。以此方式,中间计算阶段可通过抑制旗标而不间断地继续,但最终步骤仍可在需要时实现所要的舍入及设置任何旗标。
应注意,代码序列300中的所有运算可通过对零的正负号的正确处置来执行。确切地说,在突出的代码行305中,说明根据第三实施例的定点化。其中,需要0.0×n′的计算具有具正确正负号的零结果且因此,可使用与(AND)函数来实施以清除除了大部分有效(正负号)位以外的n′的所有位。应了解,此定点化可重新使用相同的寄存器及格式化要求,这是因为不需要整数寄存器及额外硬件支持。
现参看图3B,说明针对等效的单精度浮点除法的示例性高级代码序列350,如图3A的代码序列300。在高级代码序列350中,在框352中展示定点化运算。突出的代码行354及356说明涉及具正确正负号的零的定点化运算,且更确切地说,当分子为负的时,使用整数与(AND)函数初始化具有负零(-0)的值。突出的代码行358说明基于(例如)第二实施例的情形(a)到(e)中的一者中的特定定点化的用于适应比例因子22k或2-2k的上文所描述的具有按比例缩放的浮点FMA运算(FMASc)。
所揭示实施例可有效地在多线程处理器架构中实施。在具有多个执行线程的情况下,可并行地执行两个或两个以上除法运算。通过在中间阶段中抑制旗标及特殊处置舍入模式,可加快执行。虽然描述集中在IEEE 754单精度浮点数上,但同样可容易地将所揭示技术扩展到计算更密集型双精度浮点数。
第五实施例
现在进行到第五实施例,可按如上文针对除法论述的类似方式将所揭示技术应用于浮点平方根计算。平方根计算也可遵循牛顿拉普森方法,下文参看图4论述其相关方面。最初,递归地计算输入操作数被开方数r(即,根号下的值,对所述值执行平方根计算)的平方根倒数x。在框402中,根据公式(1-rxi 2)的误差项∈i的计算无法在单个FMA指令中执行。然而,为了实现较高性能,需要能够在单个FMA指令中执行误差项∈i的此计算。为了实现此计算,第五实施例可在框404中包含项di、si及hi的定义。使用框404的这些定义,在框406中使用单个FMA指令迭代地计算这些项的后续值。在框406的足够数目次此类迭代之后,hi项收敛到等于被开方数r的平方根倒数的二分之一的值,且项si收敛到被开方数r的平方根。在此实施例中,可通过使用来自框402的误差项∈i获得用于所有舍入模式的正确结果来使用定点化运算。另外,在此实施例中,还可在中间计算阶段期间抑制旗标。
第六实施例
类似于在针对除法的第二实施例中所描述的(n,d)坐标的迁移,第六实施例可涉及用于平方根计算的被开方数值的迁移。因为仅存在用于平方根计算的一个输入操作数,所以将仅论述涉及需要迁移的有问题的情况的一种情形。此情形涉及被开方数r太小,其可在中间计算阶段期间产生不确切中间值,例如,在框406中。为了有效地处置此情境,第六实施例可通过将比例因子2k应用于被开方数来将此类有问题的被开方数值定点化,其中k为正数,且对其中应用比例因子的经定点化的被开方数执行平方根计算(即,对r2k)。一旦获得最终结果,便可将其按比例缩放2k/2以便抵消比例因子的效果。因此,可在中间计算阶段期间抑制相关旗标。
第七实施例
类似于关于除法的第三实施例,第七实施例涉及关于平方根计算的有问题的特殊值,及在中间阶段期间的相关的特殊处置及旗标抑制。第一,可定义NaN被开方数以产生NaN结果,且第二,可定义负的非零被开方数以产生NaN结果。第三,可定义零被开方数以产生具与被开方数相同的正负号的零结果。第四,可定义正的无穷大的被开方数以产生正的无穷大结果。
现在参看示例性代码序列500,说明用于执行平方根计算的汇编代码。类似于除法的情况,与用于除法的零分子的情形相似地来处置零被开方数。在计算期间,被开方数在零值下保持不变,但被开方数的倒数估计为1.0。参考框502,在被开方数为正的无穷大的情况下,将倒数估计以及被开方数定点化到负的无穷大。以此方式,被开方数的值可通过计算达到倒数估计,而不会产生NaN,且因此产生正的无穷大的正确结果。因此,此实施例中的平方根计算可以初始倒数平方根估计x0及经对应地定点化的被开方数r′开始。在其中被开方数为正的无穷大的情况下,可将x0及r′两者定点化到负的无穷大。
进行到代码行504,s0将为正的无穷大,这是因为其为两个负的无穷大x0及r′的乘积。在代码行506中,h0将呈现负的无穷大的值。一般来说,代码行506中与1/2的乘法可通过使用(例如)标量相加指令将x0的指数栏递减来执行。在此代码序列中还已知:x0将显著地远离非正常表示的边界,且因此将不会出现相关异常。进行到代码行508,d0变成正的无穷大,这是因为其是从具有与有限值相反的正负号的两个无穷大的减法获得。当代码序列500(例如)在框510中针对si的后续迭代遍历后续迭代时,si的值继续保持正的无穷大,且消除了对于将具有将产生NaN的相反的正负号的无穷大相加的需要。因此,当代码序列500进行迭代时,可在中间计算阶段期间抑制旗标。
现参看图5B,说明用于执行根据示例性实施例的单精度平方根计算的高级代码序列550。如框552中所展示,说明如上文在代码序列500中所描述的定点化运算。突出的代码行554及556说明有条件的或(OR)运算以便校正-0情况。突出的代码行558说明基于(例如)如在第六实施例中所描述的特定定点化进行的用于适应比例因子2k/2或2-k/2的上文所描述的具有按比例缩放的浮点FMA运算(FMASc)。
参看图5C,说明用于执行双精度平方根计算(即,被开方数为双精度数字,如在IEEE754标准中所定义)的示例性代码序列580。如突出的代码行582中所展示,通过使用整数加法运算实施1/2的乘法,如上文在代码序列500的代码行506中所论述。
在上文所描述的用于除法及平方根计算的实施例中,可通过简单的加法(在平方根的情况下,后接续除以2的除法)获得倒数及倒数平方根估计。为了得到用于这些估计的准确的有效数字,可使用小查找表,其中查找表可通过估计所要的数字(例如,分母或被开方数)的有效数字来编索引,且可传回估计的有效数字。在一个实施例中,可使用位于1与2之间的N个均匀隔开的值来产生用于倒数估计的查找表,而类似地,可使用在1与4之间的均匀隔开的值来用于倒数平方根估计。如果将表格调整到大于索引的二分之一位的近似值(分母或被开方数的有效数字),那么可增加这些表格的准确度。在一些实施例中,对于平方根的情况,可使用指数的最低有效位连同有效数字的几个位来对表格编索引。
示例性实施例可在查找之前实施舍入,从而实现对有问题的值的增加的控制,例如,在第一实施例中论述的用于除法的全部1有效数字。因此,倒数估计可为经正确地舍入的值,其可表示为2n+1ulp。在一些实施例中,可包含特殊指令以指定准确度或近似容限,使得可按指定准确度获得倒数估计。
现在参看图6A,应了解,上文所描述的各种实施例可在所说明的系统600中实施。系统600包含经设计以执行例如上文所描述的定点化运算等各种浮点运算的示例性硬件块。举例来说,系统600可包含经配置以存储指令及数据的存储器612。耦合到存储器612的数据高速缓冲存储器(D$)614可存储待用于示例性浮点运算中的浮点数,而指令高速缓冲存储器(I$)616可包含对应于示例性浮点计算的指令。浮点单元(FPU)604可实施为处理器602内的专用硬件块(在不损失一般性的情况下)。现将关于示例性浮点计算进一步解释系统600。
考虑(例如)根据第一及第二实施例的牛顿拉普森除法,I$616可经配置以存储相关指令,例如,用于浮点除法的一序列指令。D$614可经配置以存储对应于浮点除法指令的浮点分子n及分母d值。寄存器组(未图示)中的一或多个寄存器还可经配置以存储分子n及分母d值。处理器602中的执行管线可经配置以读取浮点除法指令及对应的分子n及分母d,且在执行管线的执行阶段中通过调用FPU 604起始所述计算。检测逻辑606可经配置以首先检测分子n及分母d是否可引起有问题的拐点情况(例如,根据如图2中所说明的情形(a)到(e))。如果检测逻辑606发现可出现有问题的拐点情况,那么定点化/修改逻辑608可经配置以进行上文所描述的定点化/修改运算中一者(例如,应用比例因子以迁移(n,d)坐标,如关于图2所论述)。
可(例如)根据上文所描述的示例性技术接着对浮点单元供应经定点化/经修改的分子n及分母d以继续进行除法运算。在一些实施例中,可基于可(例如)从I$616接收的额外指令或指令序列执行使用经定点化/经修改的分子n及分母d进行的此修改的除法运算。另外,还可调用旗标抑制逻辑610以在中间计算阶段期间抑制任何旗标,同时允许仅在其中牛顿拉普森除法的最终结果/商变得可用的最终阶段中设置旗标。所属领域的技术人员将认识到用以实施上文所描述的各种示例性实施例的系统600的合适的变化。
还应了解,实施例包含用于执行本文揭示的过程、函数及/或算法的各种方法。举例来说,如图6B中所说明,实施例可包含一种操作浮点单元(例如,FPU 604)的方法,所述方法包括:从存储器(例如,D$614/存储器612)接收一或多个浮点数(例如,分子n及分母d)-框652;接收对应于计算(例如,牛顿拉普森除法)的浮点指令(例如,从I$616/存储器612)-框654;检测将在所述计算中产生有问题的拐点情况(例如,在检测逻辑606中)的一或多个浮点数-框656;用定点化运算修改(例如,在定点化/修改块608中)所述计算以便避免所述有问题的拐点情况-框658;在所述计算的中间阶段期间抑制旗标(例如,通过使用旗标抑制逻辑610)-框660;及执行所述经修改的计算(例如,在FPU 604中)-框662。
所属领域的技术人员将了解,可使用多种不同技术及技艺中的任一者来表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示可能贯穿上述描述提及的数据、指令、命令、信息、信号、位、符号及码片。
另外,所属领域的技术人员将了解,结合本文所揭示的实施例而描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路及步骤。此类功能性是实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为造成偏离本发明的范围。
结合本文所揭示的实施例而描述的方法、序列及/或算法可直接以硬件、以由处理器执行的软件模块或以两者的组合来体现。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可卸除式磁盘、CD-ROM,或所属领域中已知的任何其它形式的存储媒体中。示例性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息及将信息写入到存储媒体。在替代例中,储存媒体可与处理器成一体式。
参看图7,描绘包含根据示例性实施例配置的多核心处理器的无线装置的特定说明性实施例的框图且一般将其指明为700。装置700包含可包含上文所描述的浮点单元604的数字信号处理器(DSP)764,其中浮点单元604可进一步包含检测逻辑606、定点化/修改逻辑608及旗标抑制逻辑610。DSP 764可耦合到存储器732,其中类似于存储器612,存储器732可经配置以存储用于由浮点单元604进行的运算的浮点数及/或指令。图7还展示耦合到DSP 764及显示器728的显示器控制器726。译码器/解码器(编码解码器)734(例如,音频及/或话音编码解码器)可耦合到DSP 764。还说明例如无线控制器740(其可包含调制解调器)等其它组件。扬声器736及麦克风738可耦合到编码解码器734。图7还指示无线控制器740可耦合到无线天线742。在特定实施例中,DSP 764、显示器控制器726、存储器732、编码解码器734及无线控制器740包含在系统级封装或系统单芯片装置722中。
在特定实施例中,输入装置730及电力供应器744耦合到系统单芯片装置722。此外,在特定实施例中,如图7中所说明,显示器728、输入装置730、扬声器736、麦克风738、无线天线742及电力供应器744在系统单芯片装置722外部。然而,显示器728、输入装置730、扬声器736、麦克风738、无线天线742及电力供应器744中的每一者可耦合到系统单芯片装置722的组件,例如接口或控制器。
应注意,尽管图7描绘了无线通信装置,但DSP 764及存储器732也可以集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或者计算机中。处理器(例如,DSP 764)还可集成到此类装置中。
因此,本发明的实施例可包含一种计算机可读媒体,其体现对浮点数执行除法/平方根计算的方法。因此,本发明不限于所说明的实例,且用于执行本文中所描述的功能性的任何装置包含在本发明的实施例中。
虽然前述揭示内容展示本发明的说明性实施例,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可在其中做出各种改变及修改。无需以任何特定次序来执行根据本文中所描述的本发明的实施例的方法权利要求的功能、步骤及/或动作。此外,尽管可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也预期复数形式。

Claims (33)

1.一种操作浮点单元的方法,所述方法包括:
从存储器接收一或多个浮点数;
接收对应于计算的一或多个浮点指令;
检测将在所述计算中产生有问题的拐点情况的一或多个浮点数;
用定点化运算修改所述计算以便避免所述有问题的拐点情况;
在所述计算的中间阶段期间抑制错误旗标;以及
执行所述经修改的计算。
2.根据权利要求1所述的方法,其中所述计算为包括两个或两个以上迭代阶段的牛顿拉普森除法,且所述有问题的拐点情况对应于在中间阶段期间的舍入的精度损失,且其中所述定点化运算包括对除了最终阶段以外的所述迭代阶段中的每一者应用舍入到最近值舍入及在所述最终阶段中应用用户定义的舍入。
3.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,其中所述分母的尾数的二进制表示由全部1构成,其中所述有问题的拐点情况对应于所述牛顿拉普森除法不能收敛到正确商,且其中所述定点化运算包括执行用于在所述牛顿拉普森除法中使用的所述分母的初始倒数估计的逻辑或。
4.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,其中所述有问题的拐点情况对应于所述牛顿拉普森除法的商中的预期的下溢,且其中所述定点化运算包括将比例因子2k应用于所述分子且将2-k应用于所述分母,其中k为正数。
5.根据权利要求4所述的方法,其进一步包括将比例因子2-2k应用于所述牛顿拉普森除法的所述商。
6.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,其中所述有问题的拐点情况对应于所述牛顿拉普森除法的商中的预期的溢出,且其中所述定点化运算包括将比例因子2-k应用于所述分子且将2k应用于所述分母,其中k为正数。
7.根据权利要求6所述的方法,其进一步包括将比例因子22k应用于所述牛顿拉普森除法的所述商。
8.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,其中所述有问题的拐点情况对应于造成所述牛顿拉普森除法的商中的预期的精度损失的大分母值,且其中所述定点化运算包括将比例因子2k应用于所述分子与所述分母两者,其中k为负数。
9.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,其中所述有问题的拐点情况对应于造成所述牛顿拉普森除法的商中的预期的精度损失的小分母值,且其中所述定点化运算包括将比例因子2k应用于所述分子与所述分母两者,其中k为正数。
10.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,其中所述有问题的拐点情况对应于造成所述牛顿拉普森除法的商中的预期的精度损失的小分子值,且其中所述定点化运算包括将比例因子2k应用于所述分子与所述分母两者,其中k为正数。
11.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,所述牛顿拉普森除法包括两个或两个以上迭代阶段,其中所述有问题的拐点情况对应于所述牛顿拉普森除法的商中的溢出、下溢或预期的精度损失中的一者,且其中所述定点化运算包括通过在所述迭代阶段中的至少一者中实施具有按比例缩放的融合乘法及加法FMASc指令来将比例因子应用于所述分子或所述分母中的至少一者。
12.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,所述牛顿拉普森除法包括两个或两个以上迭代阶段,其中所述有问题的拐点情况对应于所述分母为非数字值NaN,且所述定点化运算包括在第一迭代阶段中将所述分母的倒数估计设置为NaN,以便将所述牛顿拉普森除法的商计算为NaN。
13.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,所述牛顿拉普森除法包括两个或两个以上迭代阶段,其中所述有问题的拐点情况对应于以下情形中的一者:所述分子及分母两者为0,或所述分子及分母两者为无穷大,且所述定点化运算包括在第一迭代阶段中将所述分母的倒数估计设置为NaN,以便将所述牛顿拉普森除法的商计算为NaN。
14.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,所述牛顿拉普森除法包括两个或两个以上迭代阶段,其中所述有问题的拐点情况对应于以下情形中的一者:所述分母为0,或所述分子为无穷大且所述分母为非零有限值,且所述定点化运算包括在第一迭代阶段中将所述分子设置为无穷大,将所述分母设置为1,且将所述分母的倒数估计设置为1,以便将所述牛顿拉普森除法的商计算为无穷大。
15.根据权利要求1所述的方法,其中所述计算为分子除以分母的牛顿拉普森除法,所述牛顿拉普森除法包括两个或两个以上迭代阶段,其中所述迭代阶段中的至少一者包括对乘数、被乘数及加数操作数进行的融合乘法及加法FMA运算,其中所述有问题的拐点情况对应于值0的商的正负号中的预期的错误,且其中所述定点化运算包括在所述乘数或所述被乘数具有值0的情况下,将所述FMA运算的结果的正负号设置为所述加数的正负号。
16.根据权利要求1所述的方法,其中所述计算为对被开方数的牛顿拉普森平方根计算,所述牛顿拉普森平方根计算包括两个或两个以上迭代阶段,其中所述定点化运算包括修改迭代平方根倒数计算中的误差项的计算以在每一迭代阶段中实施单个融合乘法及加法FMA运算。
17.根据权利要求1所述的方法,其中所述计算为对被开方数的牛顿拉普森平方根计算,所述牛顿拉普森平方根计算包括两个或两个以上迭代阶段,其中所述有问题的拐点情况对应于预期造成精度损失及不确切结果的小被开方数值,其中所述定点化运算包括将比例因子2k应用于所述被开方数,其中k为正数。
18.根据权利要求17所述的方法,其进一步包括将比例因子2k/2应用于所述牛顿拉普森平方根计算的结果。
19.根据权利要求1所述的方法,其中所述计算为对被开方数的牛顿拉普森平方根计算,其中所述有问题的拐点情况对应于所述被开方数为NaN,且所述定点化运算包括将所述牛顿拉普森平方根计算的结果设置为NaN。
20.根据权利要求1所述的方法,其中所述计算为对被开方数的牛顿拉普森平方根计算,其中所述有问题的拐点情况对应于所述被开方数为负的非零值,且所述定点化运算包括将所述牛顿拉普森平方根计算的结果设置为NaN。
21.根据权利要求1所述的方法,其中所述计算为对被开方数的牛顿拉普森平方根计算,其中所述有问题的拐点情况对应于所述被开方数为值0,且所述定点化运算包括将所述牛顿拉普森平方根计算的结果设置为值0且具有与所述被开方数的正负号相同的正负号。
22.根据权利要求1所述的方法,其中所述计算为对被开方数的牛顿拉普森平方根计算,其中所述有问题的拐点情况对应于所述被开方数为正的无穷大,且所述定点化运算包括将所述牛顿拉普森平方根计算的结果设置为正的无穷大。
23.一种执行浮点乘法累加FMA运算的方法,所述方法包括:
在浮点单元中接收乘数、被乘数及加数操作数;
检测关于所述操作数的FMA运算将产生异常;
针对所述FMA运算定义特殊状况;
在所述FMA运算期间抑制错误旗标;以及
在所述浮点单元中根据所述特殊状况执行所述FMA运算。
24.根据权利要求23所述的方法,其中所述特殊状况包括定义无穷大减去无穷大的计算以产生零值。
25.根据权利要求23所述的方法,其中所述特殊状况包括迫使所述FMA运算的舍入模式为舍入到最近值的舍入模式。
26.根据权利要求23所述的方法,其中所述特殊状况包括在所述被乘数操作数为零时,迫使FMA运算的结果等于所述加数操作数的值。
27.一种执行具有按比例缩放的浮点乘法累加运算FMASc的方法,所述方法包括:
在浮点单元中接收乘数、被乘数、加数及比例因子操作数;
检测关于所述操作数的FMASc运算将产生异常;
针对所述FMASc运算定义特殊状况;
在所述FMASc运算期间抑制错误旗标;以及
在所述浮点单元中根据所述特殊状况执行所述FMASc运算。
28.根据权利要求27所述的方法,其中所述特殊状况包括在所述被乘数操作数为零时,迫使FMA运算的结果等于所述加数操作数的值。
29.一种浮点单元,其包括:
用以接收一或多个浮点数及对应于计算的浮点指令的逻辑;
经配置以检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的检测逻辑;
用以在所述计算的中间阶段期间抑制错误旗标的逻辑;
经配置以修改所述计算以便避免所述有问题的拐点情况的修改逻辑;以及
用以执行所述经修改的计算的逻辑。
30.根据权利要求29所述的浮点单元,其集成在至少一个半导体裸片中。
31.根据权利要求29所述的浮点单元,其集成到选自由以下各者组成的群组的装置中:机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、个人数字助理PDA、固定位置数据单元及计算机。
32.一种系统,其包括:
用于接收一或多个浮点数及对应于计算的浮点指令的装置;
用于检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的装置;
用于在所述计算的中间阶段期间抑制错误旗标的装置;
用于修改所述计算以便避免所述有问题的拐点情况的装置;以及
用于执行所述经修改的计算的装置。
33.一种非暂时性计算机可读存储媒体,其包括在由处理器执行时致使所述处理器执行用于执行浮点计算的运算的代码,所述非暂时性计算机可读存储媒体包括:
用于检测将在所述计算中产生有问题的拐点情况的一或多个浮点数的代码;
用于在所述计算的中间阶段期间抑制错误旗标的代码;
用于用定点化运算修改所述计算以便避免所述有问题的拐点情况的代码;以及
用于执行所述经修改的计算的代码。
CN201280075418.8A 2012-08-30 2012-10-30 用于高效浮点运算的方法和设备 Active CN104603744B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/598,718 2012-08-30
US13/598,718 US20140067894A1 (en) 2012-08-30 2012-08-30 Operations for efficient floating point computations
PCT/US2012/062625 WO2014035448A1 (en) 2012-08-30 2012-10-30 Operations for efficient floating point computations

Publications (2)

Publication Number Publication Date
CN104603744A true CN104603744A (zh) 2015-05-06
CN104603744B CN104603744B (zh) 2018-03-13

Family

ID=47278989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280075418.8A Active CN104603744B (zh) 2012-08-30 2012-10-30 用于高效浮点运算的方法和设备

Country Status (4)

Country Link
US (1) US20140067894A1 (zh)
EP (1) EP2891058A1 (zh)
CN (1) CN104603744B (zh)
WO (1) WO2014035448A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN107179894A (zh) * 2016-03-09 2017-09-19 瑞昱半导体股份有限公司 快速除法器及快速除法运算方法
CN107533455A (zh) * 2015-05-29 2018-01-02 华为技术有限公司 增量/减量装置和方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US9110713B2 (en) * 2012-08-30 2015-08-18 Qualcomm Incorporated Microarchitecture for floating point fused multiply-add with exponent scaling
US9389871B2 (en) * 2013-03-15 2016-07-12 Intel Corporation Combined floating point multiplier adder with intermediate rounding logic
US10846053B2 (en) 2014-06-27 2020-11-24 International Business Machines Corporation Underflow/overflow detection prior to normalization
US11372621B2 (en) 2020-06-04 2022-06-28 Apple Inc. Circuitry for floating-point power function
CN114327360B (zh) * 2020-09-29 2023-07-18 华为技术有限公司 运算装置、浮点数计算的方法、装置、芯片和计算设备
US20230061618A1 (en) * 2021-08-31 2023-03-02 Intel Corporation Bfloat16 square root and/or reciprocal square root instructions
EP4318227A1 (en) * 2022-08-03 2024-02-07 Intel Corporation 8-bit floating point square root and/or reciprocal square root instructions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120059866A1 (en) * 2010-09-03 2012-03-08 Advanced Micro Devices, Inc. Method and apparatus for performing floating-point division

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341320A (en) * 1993-03-01 1994-08-23 Motorola, Inc. Method for rapidly processing floating-point operations which involve exceptions
US5341321A (en) * 1993-05-05 1994-08-23 Hewlett-Packard Company Floating point arithmetic unit using modified Newton-Raphson technique for division and square root
US5671170A (en) * 1993-05-05 1997-09-23 Hewlett-Packard Company Method and apparatus for correctly rounding results of division and square root computations
US5339266A (en) * 1993-11-29 1994-08-16 Motorola, Inc. Parallel method and apparatus for detecting and completing floating point operations involving special operands
US5862066A (en) * 1997-05-01 1999-01-19 Hewlett-Packard Company Methods and apparatus for fast check of floating point zero or negative zero
US6578059B1 (en) * 1998-10-10 2003-06-10 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for controlling exponent range in floating-point calculations
US6247117B1 (en) * 1999-03-08 2001-06-12 Advanced Micro Devices, Inc. Apparatus and method for using checking instructions in a floating-point execution unit
US6631392B1 (en) * 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US7058830B2 (en) * 2003-03-19 2006-06-06 International Business Machines Corporation Power saving in a floating point unit using a multiplier and aligner bypass
US7499962B2 (en) * 2004-12-21 2009-03-03 Intel Corporation Enhanced fused multiply-add operation
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US7921278B2 (en) * 2008-03-10 2011-04-05 International Business Machines Corporation Early exit processing of iterative refinement algorithm using register dependency disable

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120059866A1 (en) * 2010-09-03 2012-03-08 Advanced Micro Devices, Inc. Method and apparatus for performing floating-point division

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DAVID GOLDBERG: "What Every Computer Scientist Should Know About Floating-Point Arithmetic", 《ACM COMPUTING SURVEYS》 *
夏宏等: "浮点开方运算单元的电路设计", 《计算机工程与应用》 *
黎铁军等: "一种128位高性能全流水浮点乘加部件", 《国防科技大学学报》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107533455A (zh) * 2015-05-29 2018-01-02 华为技术有限公司 增量/减量装置和方法
CN107533455B (zh) * 2015-05-29 2020-10-09 华为技术有限公司 增量/减量装置和方法
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN107038014B (zh) * 2015-10-19 2022-07-01 想象技术有限公司 舍入反平方根结果
CN107179894A (zh) * 2016-03-09 2017-09-19 瑞昱半导体股份有限公司 快速除法器及快速除法运算方法
CN107179894B (zh) * 2016-03-09 2021-08-27 瑞昱半导体股份有限公司 快速除法器及快速除法运算方法

Also Published As

Publication number Publication date
US20140067894A1 (en) 2014-03-06
WO2014035448A1 (en) 2014-03-06
EP2891058A1 (en) 2015-07-08
CN104603744B (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
CN104603744A (zh) 用于高效浮点计算的运算
CN104520807B (zh) 用于具有指数按比例缩放的浮点融合乘法加法的微架构
CN103019647B (zh) 具有浮点精度保持功能的浮点累加/累减运算方法
JP5731937B2 (ja) ベクトル浮動小数点引数削減
US11853718B2 (en) Small multiplier after initial approximation for operations with increasing precision
CN106951211B (zh) 一种可重构定浮点通用乘法器
CN110235099B (zh) 用于处理输入操作数值的装置和方法
CN106250098B (zh) 用于在执行浮点运算时控制舍入的装置及方法
CN105930128B (zh) 一种利用浮点数计算指令实现大整数乘法计算加速方法
CN103814372A (zh) 快速最小值和最大值搜索指令
JP2006154979A (ja) 浮動小数点数演算回路
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
CN104106045A (zh) 浮点常数产生指令
CN112148249B (zh) 点积运算实现方法、装置、电子设备及存储介质
US6598065B1 (en) Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal
US9286031B2 (en) Fast normalization in a mixed precision floating-point unit
CN116661735A (zh) 数据处理装置、方法、电子设备和存储介质
TWI812524B (zh) 藉由算數及/或逐位元單元執行條件敘述的方法及系統
WO2022174542A1 (zh) 一种数据处理的方法、装置、处理器和计算设备
JPWO2002029546A1 (ja) 演算器及びそれを用いた電子回路装置
CN114895867A (zh) 一种关于“以7为除数的运算”的计算机快捷程序
Kim et al. A hybrid decimal division algorithm reducing computational iterations
JP2005031848A (ja) 浮動小数点演算の方法および浮動小数点演算プログラム、ならびに浮動小数点演算装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant