CN104520807A - 用于具有指数按比例缩放的浮点融合乘法加法的微架构 - Google Patents
用于具有指数按比例缩放的浮点融合乘法加法的微架构 Download PDFInfo
- Publication number
- CN104520807A CN104520807A CN201280075155.0A CN201280075155A CN104520807A CN 104520807 A CN104520807 A CN 104520807A CN 201280075155 A CN201280075155 A CN 201280075155A CN 104520807 A CN104520807 A CN 104520807A
- Authority
- CN
- China
- Prior art keywords
- floating
- addend
- operand
- point
- multiplier
- 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/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/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供用于实施具有按比例缩放的浮点融合乘法及累加FMASc运算的系统及方法。一种浮点单元接收输入乘数、被乘数、加数及比例因子操作数。乘法器块经配置以将所述乘数及被乘数的尾数相乘以产生中间乘积。对准逻辑经配置以基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数与所述中间乘积预先对准,且累加逻辑经配置以将所述经预先对准的加数的尾数与所述中间乘积相加或相减以获得所述浮点单元的结果。基于所述结果执行归一化及舍入,从而避免了中间阶段期间的舍入。
Description
共同待决专利申请案的参考
本专利申请案涉及以下共同待决的美国专利申请案:与本专利申请案同时申请的埃里希普朗德科(Erich Plondke)的“用于高效浮点计算的运算(OPERATIONS FOREFFICIENT FLOATING POINT COMPUTATIONS)”(代理人案号111810),所述申请案已转让给本受让人,且以引用的方式明确地并入本文中。
技术领域
所揭示实施例涉及处置浮点算术中的拐点情况。更确切地说,示例性实施例涉及用于专用指令且经设计以用于处置例如除法及平方根计算等浮点运算中的有问题的拐点情况的硬件支持。
背景技术
浮点数能够表示比定点数大得多的动态范围的值。因此,浮点算术已用于现代处理器中。IEEE 754标准提供用于表示二进制浮点数的标准化格式。符合标准的浮点算术的实施方案涉及某些辨识的异常及有问题的拐点情况。常规地,实施软件陷阱以处置这些拐点情况。然而,用软件处置异常及实施陷阱对于处理器资源来说为耗时的及负担重的。
在使用牛顿拉普森方法(Newton-Raphson approach)进行的除法的情况下,此类有问题的情况包含:下溢,其中最终的商值太小而无法在IEEE 754标准中使用指配位数来表示;溢出,其中最终的商值太大而无法在IEEE 754标准中使用指配位数来表示;不充分的精度,这归因于与中间结果的下溢及溢出相似的情境;及有效数字值,其并不是非常适合于倒数细化。其它有问题的情况涉及除以零、为无穷大或非数字值(NaN)的操作数值(分子/分母)等的除法。类似性质的问题同样出现在平方根计算中。
上文所提及的共同待决的申请案描述用于有效地处置此类有问题的拐点情况的技术。如本文所描述,及早地辨识可产生异常状况及有问题的拐点情况的浮点数且定义专用指令以用于将对此类浮点数执行的计算定点化。通过以此方式将计算定点化,保证了浮点运算产生不存在问题的结果。举例来说,通过将这些定点化应用于使用经辨识为将存在于实数空间的将引起上述有问题的情况中的一或多者的区中的浮点数进行的计算,可保证所述计算不存在问题。牛顿拉普森浮点除法/平方根中的一个常见的计算为乘法累加(MAC)或融合乘法累加(FMA)计算,其中将加数操作数加到乘数及被乘数操作数的乘积/从乘数及被乘数操作数的乘积减去加数操作数。经定义为具有按比例缩放的融合乘法累加(或“FMASc”)的专用指令在共同待决的申请案中经定义用于将可导致溢出/下溢等的FMA计算定点化。基本上,可用数学方法将FMASc指令表示为[(Rs*Rt)±Rx]*2N,其中Rs、Rt及Rx为对其执行FMA的浮点数且N可为形成比例因子的正或负定点数。
用硬件使用常规浮点处理器实施FMASc指令将必须首先执行FMA计算且接着将比例因子应用到FMA计算。然而,如已经描述的,FMA自身可溢出/下溢或产生亚正常结果,且因此,分阶段进行FMA及按比例缩放运算因而可能无法实现处置有问题的拐点情况的目标。即使FMA自身并不溢出或下溢,分阶段实施方案中的后续按比例缩放也可能产生不当的结果。
在图1中说明与分阶段进行FMA及按比例缩放运算相关联的缺点中的一些缺点。如所展示,在框102处计算FMA运算。在框104中检查结果的溢出。如果发生溢出,且比例因子是用于按比例放大(例如,N为正),且最终结果仍溢出(在框132处),那么按比例缩放将不会引入溢出。然而,仍需要处置溢出。类似地,如果发生溢出,且如果比例因子是用于按比例缩小(例如,N为负)(在框124处),且最终结果仍溢出(在框130处),那么按比例缩放不会引入额外问题,如通过框134展示。然而,如果在按比例缩小之后的最终结果是正常的(框126),那么存在位损失,且最终结果不准确(框128)。
另一方面,如果在框104中不存在溢出,且在框106中FMA的结果为亚正常的(即,无法在标准IEEE 754记法中表示),那么框108中的按比例缩小可能不会为有问题的(框112),而框110中的按比例放大将造成位及准确度损失(框114)。如果在框106中FMA的结果并非亚正常的,且在框118中的按比例缩小后,在框120中最终结果为正常的或亚正常的或零,那么不存在于框122中引入的额外问题。类似地,如果在框106中FMA的结果并非亚正常的,且按比例放大造成最终结果溢出或为正常的框116,那么在框122中也不会引入额外问题。
总而言之,可见,在框114及128中存在至少两个状况,其中当按照惯例将FMASc指令执行为连续分阶段FMA运算后接续按比例缩放时,比例因子自身可能引入额外问题。
因此,所属领域中存在对经配置以避免与实施FMASc指令相关联的上述及额外缺点的硬件的需要。
发明内容
本发明的示例性实施例涉及用于实施具有按比例缩放的浮点融合乘法及加法(FMASc)运算的系统及方法。
因此,示例性实施例涉及一种实施浮点按比例缩放的融合乘法及累加(FMASc)运算的方法,所述方法包括:将浮点乘数操作数与浮点被乘数操作数的尾数相乘以获得乘积的尾数,确定浮点加数操作数的尾数的前导零数目计数(LZC)。所述方法进一步包括:基于所述LZC、比例因子操作数及所述浮点加数操作数、所述浮点乘数操作数及所述浮点被乘数操作数的指数确定所述浮点加数操作数的预先对准移位值。所述方法进一步包括:将所述浮点加数操作数的所述尾数移位所述预先对准移位值以获得经预先对准的加数,将所述乘积的所述尾数与所述经预先对准的加数累加以获得中间结果,确定所述中间结果的前导零数目,基于所述预先对准移位值及所述中间结果的所述前导零数目确定归一化移位值,及基于所述归一化移位值将所述中间结果归一化以获得所述FMASc运算的经归一化的输出。
另一示例性实施例涉及一种执行浮点运算的方法,其包括:接收乘数、被乘数、加数及比例因子操作数。所述方法进一步包括对所述乘数及被乘数操作数的尾数执行部分乘法运算以获得中间乘积,基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数的尾数与所述中间乘积预先对准,及将所述经预先对准的加数的所述尾数与所述中间乘积累加以获得所述浮点运算的结果。
另一示例性实施例涉及一种浮点单元,其包括输入乘数、被乘数、加数及比例因子操作数。所述浮点单元进一步包括:乘法器块,其经配置以将所述乘数及被乘数的尾数相乘以产生中间乘积;对准逻辑,其经配置以基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数与所述中间乘积预先对准;及累加逻辑,其经配置以将所述经预先对准的加数的尾数与所述中间乘积相加或相减以获得所述浮点单元的结果。
另一示例性实施例涉及一种处理系统,其包括:用于接收浮点乘数、被乘数、加数及比例因子操作数的装置。所述处理系统进一步包括:用于将所述乘数及被乘数的尾数相乘以产生中间乘积的乘数装置;用于基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数与所述中间乘积预先对准的对准装置;及用于将所述经预先对准的加数的尾数与所述中间乘积相加或相减以获得所述处理系统的浮点结果的累加装置。
又一示例性实施例涉及一种非暂时性计算机可读存储媒体,其包括在由处理器执行时致使所述处理器执行用于执行浮点运算的运算的代码,所述非暂时性计算机可读存储媒体包括:用于接收乘数、被乘数、加数及比例因子操作数的代码;用于对所述乘数及被乘数操作数的尾数执行部分乘法运算以获得中间乘积的代码;用于基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数的尾数与所述中间乘积预先对准的代码;及用于将所述经预先对准的加数的所述尾数与所述中间乘积相加或相减以获得所述浮点运算的结果的代码。
另一示例性实施例涉及一种执行具有按比例缩放的双重数据路径浮点融合乘法及累加运算(FMASc)运算的方法,所述方法包括接收乘数、被乘数、加数及比例因子操作数。所述方法进一步包括:对所述乘数及被乘数操作数的尾数执行部分乘法运算以获得中间乘积,将所述加数的尾数分成具有较高有效位的高加数部分及具有较低有效位的低加数部分,将所述高加数部分对准以形成增量部分,将所述低加数部分与所述中间乘积对准,将所述低加数部分与所述中间乘积累加以形成相加部分,基于分别来自所述相加部分的进位输出或借位值将所述增量部分递增或递减以形成最终的增量部分,及将所述最终增量部分与所述相加部分串接以形成所述浮点运算的结果。
附图说明
呈现附图以辅助描述本发明的实施例,且提供所述附图仅用于说明本发明的实施例而非限制本发明的实施例。
图1说明使用常规浮点硬件实施按比例缩放的FMA运算的缺点。
图2说明根据示例性实施例的经配置以实施FMASc指令的浮点单元200。
图3说明对应于示例性双重数据路径FMA运算的情况的表格。
图4说明对应于用于在示例性FMASc实施方案中确定操作数的对准及归一化的第一组条件的情况的表格。
图5说明对应于用于在示例性FMASc实施方案中确定操作数的对准及归一化的第二组条件的情况的表格。
图6说明对应于用于在示例性FMASc实施方案中确定操作数的对准及归一化的第三组条件的情况的表格。
图7说明用于在示例性FMASc实施方案中获得加数操作数的增量部分的逻辑的示例性实施方案。
图8说明用于在示例性FMASc实施方案中获得加数操作数的相加部分的逻辑的示例性实施方案。
图9说明用于实施FMASc运算的示例性操作流程的流程图描绘。
图10说明可有利地在其中使用本发明的实施例的示例性无线通信系统1000。
具体实施方式
在以下涉及本发明的特定实施例的描述及相关图式中揭示本发明的若干方面。可在不脱离本发明的范围的情况下设计出替代实施例。另外,将不详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。
词语“示例性”在本文中用于意味着“充当实例、例子或说明”。本文中被描述为“示例性”的任何实施例未必应解释为比其它实施例优选或有利。同样,术语“本发明的实施例”并非要求本发明的所有实施例包含所论述的特征、优点或操作模式。
本文中所使用的术语仅仅是为了描述特定实施例,且并不希望限制本发明的实施例。如本文所使用,除非上下文另外清楚地指示,否则单数形式“一”及“所述”希望还包括复数形式。将进一步理解,术语“包含”及/或“包括”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。
另外,依据待由(例如)计算装置的元件执行的动作序列来描述许多实施例。将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、正由一或多个处理器执行的程序指令或两者的组合来执行。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有一组对应的计算机指令,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的标的物的范围内。另外,对于本文中所描述的实施例中的每一者来说,任何此类实施例的对应形式可在本文中被描述为(例如)“经配置以(执行所描述动作)的逻辑”。
示例性实施例涉及用于例如具有按比例缩放的融合乘法及加法(在下文表示为“FMASc”)等专用浮点指令的硬件支持。浮点数可按IEEE 754格式表示。本文中的描述将集中在单精度或32位浮点运算上。所属领域的技术人员将能够在不脱离所揭示实施例的范围的情况下将所揭示技术扩展到双精度(64位)以及128位浮点运算。虽然在必要时提供了浮点算术的计算细节以描述示例性实施例,但应理解,出于简洁起见,此处将不进行浮点算术的深入解释。所属领域的技术人员将了解,所揭示实施例的各种方面涉及FMASc指令的高效实施方案。
因此,一些实施例涉及并行地执行FMASc指令的FMA及按比例缩放运算两者作为集成运算,与可限于按顺序阶段实施这些运算的常规实施方案形成对比。以此方式,实施例可经配置以基于位损失而避免错误结果,如图1的框114及128中所展示。实施例还可推迟舍入运算,直到计算出FMASc指令的最终结果为止,借此避免可能归因于舍入中间结果而造成的精度的任何损失。应了解,常规实施方案可能不能够类似地推迟舍入直到最终阶段为止,这是因为中间存储寄存器的有限大小可在包括FMA及按比例缩放运算的每一顺序阶段之后强加舍入。
作为背景,现在将简洁地解释根据IEEE 754标准的浮点数的常规表示。根据对标准的最新的修订,可用数学表达式来表示二进制浮点数:(-1)s*m*2e,其中s为正负号位,e为无偏差指数,且m为尾数或有效数字。在IEEE 754-2008中,单精度对应于在正负号位、指数及尾数之间除以32位。指数宽度为8位,其中偏差值为127,使得范围为-126到127。尾数为24位,其中仅明确地存储23位,而对于所有“正常”数字,假定最高有效位为“1”。
如上文简洁地提及,在以下情形下,浮点数被视为正常的:当浮点数降低到将允许此标准表示的值范围内时,即,尾数的最高有效位为“1”且浮点数可按以下格式表示:1.m1m2...m23*2e,其中m1、m2,...,m23为尾数的位。换句话说,如果单精度浮点数的二进制表示小于值1*2-126,那么最高有效位可能不再为单精度的“1”,且浮动数将必须呈现格式:0.m1m2...m23*2e。这些数字被称为亚正常数字。如可以看出,亚正常数字具有精度损失。
继续回到浮点操作数(乘数Rs及被乘数Rt)的常规浮点乘法,为了获得浮点乘积Rm,过程如下进行。Rs及Rt的尾数的定点乘法产生乘积Rm的尾数Mm。当考虑偏差(即,Es+Et-偏差)时,Rs及Rt的指数的定点加法产生乘积Rm的指数Em。乘积的正负号将由Rs及Rt的正负号来决定(如果Rs及Rt中的一者且仅一者为负的,那么乘积Rm为负的,否则,乘积Rm为正的)。另外,乘积Rm将必须经归一化,且此情形可能需要额外步骤以适当地将指数按比例缩放且相应地将尾数移位以使乘积为正常格式。当将加数操作数Rx与乘积Rm相加或相减时,可能需要首先将Rm及Rx的指数对准,之后将操作数Rx与乘积Rm相加/相减以完成FMA运算以获得结果Rd=[(Rs*Rt)±Rx]=Rm±Rx。按照惯例,可能需要在应用比例因子2N之后将结果Rd归一化及适当地舍入以完成FMASc运算。IEEE 754定义了各种舍入模式,本文将不会详细地描述所述舍入模式。然而,应认识到,在给定有限位数可用于存储浮点数的情况下,舍入可导致精度的损失。此精度损失可为累积的,这是因为在常规实施方案中中间结果可能经受一种以上舍入阶段。
现在参看图2,将描述示例性实施例以有效地处置与常规实施方案的归一化及舍入模式相关联的上述缺点。说明根据示例性实施例的用于执行FMASc指令的浮点单元200。在一些实施例中,用于进行按比例缩放运算的示例性硬件块230到234可有效地与用于FMA运算的硬件块202到228集成。将浮点单元200说明为使用管线式寄存器236及238跨越若干阶段分阶段。如所说明的管线式分阶段可用于减少时钟循环时间且因此增加浮点单元200的运算频率。然而,应理解,分阶段管线并非必要的且可在单个阶段中用组合逻辑实施示例性实施例。
可在不显著偏离用于FMA运算的常规技术的情况下实施逻辑块202到228。如块202中所展示,可从寄存器组(“RF”,未加以说明)接收浮点操作数乘数Rs及被乘数Rt。可按单精度IEEE 754格式表示乘数Rs及被乘数Rt。块204中的逻辑可经配置以分别提取这些操作数的组成部分,例如正负号、尾数及指数。
块206包括用于将Rs及Rt的尾数相乘的逻辑。乘法逻辑可并有布斯(Booth)乘法算法,在本文中将不会详细描述所述算法。因此,块206可涉及用于基于被乘数Rt执行乘数Rs的布斯编码的块,其可用以产生部分乘积,所述部分乘积经受一或多个压缩/缩减阶段以便产生呈冗余格式的中间结果,表示为总和及进位值(未明确说明)。将需要最终的加法器(包括例如进位传播加法器)来对中间结果求解(即,将总和与进位值相加)以获得乘积Rm。然而,为了节省用于此最终加法器的昂贵的硬件,将最终加法器进一步沿逻辑路径向下移动到加法器块220,使得可将单个加法器用于对中间结果求解,以及用于将加数Rx相加/相减(在由3∶2压缩块216压缩之后)以获得Rd=[(Rs*Rt)±Rx]。因此,来自块206的呈冗余格式的中间结果可进入块216中以用于进行3∶2压缩。用于3∶2压缩块216的另一输入可来自块214,将在以下章节中描述块214。应理解,虽然本文中的论述提及加法器,但所属领域的技术人员将认识到如何通过适当地配置用于加法器的硬件来执行加法或减法。因此,虽然论述可能提及用于将加数操作数相加的说明性实施例,但应理解,可容易地将示例性FMA/FMASc运算扩展到加数操作数Rx从乘积Rs*Rt的减法。因此,对加数Rx的累加的参考可涉及加数Rx的加法或减法。以下章节将包含特定情况,其中FMASc运算的实施方案在其行为上可为发散的,此情形基于累加是否涉及加数Rx的加法或减法。
返回到图2,与Rs及Rt的尾数的乘法并行地,块208可计算乘积Rm的指数。如先前所提到,可实际上通过Rs的指数Es及Rt的指数Et的相加来获得乘积Rm的指数。然而,将回想起,指数Es及Et可按偏差格式来表示。因此,为了保持用于乘积Rm的指数的相同格式(下文为“Em”),块208可将指数相加及从指数Es及Et的总和减去偏差(对于单精度,为十进制值127)以获得指数Em(即,Em=Es+Et-偏差)。Em的此值将用于将Rm与加数Rx对准以执行FMA计算。
在块209中,可从RF获得加数Rx。在所说明实施例中,将从RF获得Rx及从RF获得Rs及Rt展示为通过管线阶段236分离。通过以此方式跨越两个管线阶段将操作数的读取分阶段,可重新使用RF的读取端口。因此,RF可仅包括两个读取端口,使得在第一管线阶段中(先前管线寄存器236),可读出Rs及Rt,且在后续管线阶段中,可从用以读出Rs及Rt的两个端口中的一者读出Rx。在一些实施例中,不需要从RF获得操作数Rs、Rt及Rx,且还有可能从另一来源接收这些操作数中的一或多者,另一来源例如存储器或不同的功能单元。不管如何实施RF及管线分阶段且不管接收操作数Rs、Rt及Rx的方式,块210均可提取Rx的组成部分,例如,Rx的正负号、指数Ex及尾数Mx。
如先前所提及,在可将Rx与Rm相加以形成FMA的输出Rd之前,必须将Rx与Rm对准。因此,块212可接收在块208处计算的Em及在块210处获得的Ex作为输入。Ex与Em之间的差的绝对值(|Ex-Em|)将确定在块214中遵循的对准过程的细节。若干情况基于|Ex-Em|的值而产生,将在以下章节中详细地描述所述情况。在所有这些情况中,对于FMA运算,将遵循双重路径设计,其中将在两个部分(-具有较高有效位的高部分,及具有较低有效位的低部分)中并行地计算具有按比例缩放的FMA运算(或FMASc运算)的结果。以此方式,实施例可加快计算过程。
用于FMASc指令的示例性格式可具有以下形式:Rd=Round(Scale[Rx±Rs*Rt,N],rounding_mode)。因此,基于操作数N,可在上述双重路径FMA框架中并入比例值2N。在一个实施例中,N可为8位值,使得比例值在范围[-128,127]内。如先前所提到,负值N可被称作将FMA运算的结果Rd按比例缩小且正值N可被称作将结果Rd按比例放大。可如下文实施例中所论述来应用舍入模式。
如先前所论述,在其中结果Rd溢出或为亚正常的情况下,或如在例如巨大值消除、低于亚正常等极端情况下所描述,FMASc运算的常规实施方案可在指数按比例缩放之后导致精度损失。为了避免精度损失,实施例可提前认识到FMASc运算的可能造成问题的某些输入操作数。因此,实施例可在进入加法器块220之前,及在操纵加法器块220的输出的归一化块224及舍入块226之前,将中间结果与加数操作数预先对准。因此,实施例可确保在按比例缩放运算在逻辑上完成之前不会发生舍入。确保此情形的一种方式是将归一化块224及舍入块226加宽以在理论上保持FMA运算的结果在执行按比例缩放之前具有无限精度。然而,为了在逻辑上实现相同效果,可提供前导零计数器(LZC)块230。下文描述块230到236与上文所描述的双重路径FMA框架的合作。
首先将提供用于双重路径FMA的基本框架且接着将涉及按比例缩放运算的块230到234的功能性集成到所述描述中。这些块230到234可经配置以基于Ex及Em的相对值将比例因子作为用于Rx的预先对准移位量并入,如以下情况中将论述。以此方式,在示例性实施例中,可避免基于将FMA分阶段后接续按比例缩放的实施方案。
如先前所提到,在示例性实施例中,Ex与Em之间的差的绝对值(|Ex-Em|)将控制双重路径FMA的运算。在图3到6中说明基于(|Ex-Em|)的特定值的各种情况。一般来说,可将Rx的尾数(Mx)分裂成高部分(在下文中为“HMx”)及低部分(在下文中为“LMx”)。可在两个部分中计算FMA结果Rd的尾数(在下文中为“Md”),其中计算低部分(在下文中为“LMd”),且来自LMd的进位(如在进位传播加法中)可分别递增Rd的尾数的高部分(在下文中为“HMd”)。(应理解,具有Rx的减法的FMA(即,Rm-Rx)为类似的,且可在需要时按最少修改扩展关于其中将Rx与Rm相加(即,Rm+Rx)的FMA论述的一般原理。举例来说,在减法的情况下,代替进位,可使用借位来递减HMx而不是递增)。在示例性实施例中,双重路径FMA的“相加部分”可指LMd的计算,且“增量部分”可指HMd的计算。
现在参看图3,首先解释未集成按比例缩放组成部分的双重逻辑FMA。图3说明表格,表1对应于示例性双重路径FMA实施方案的第一种情况,其中Ex与Em之间的差在范围3内。应理解,在示例性实施例中使用常数“3”,但其不应被解释为限制。在一些实施例中,可使用大于2的任何合适值。将针对表1中的这些情况描述增量部分及相加部分的计算。
参看第一行302,说明其中Ex-Em>3且FMA涉及Rx的加法或减法的情况。在此情况下,计算相加部分(LMd)且可在必要时使用来自相加部分的进位来递增增量部分(HMx)。在一个实施方案中,计算HMx及HMx+1两者且使用进位来选择HMd的正确值。表格中还展示对于输出的对准/归一化来说可能为所需的移位量。在此情况下,将LMd右移位达在逻辑上被定义为Rx及Rm的位置之间的距离的量,即,Ex-Em。一旦经归一化,便可将经归一化的LMd(在下文中为“NLMd”)与HMd串接以便形成Md。可在将HMd及LMd串接以形成Md之后执行舍入。在行304中,说明其中Ex及Em满足条件Ex-Em=3且FMA涉及Rx的加法的情况。此情况类似于上文在行302中所描述的情况,且进位有可能来自LMd,所述情形可导致将增量应用到HMd。
参看306,说明其中Ex及Em满足条件Ex-Em<3且FMA涉及Rx的加法或减法的情形。在此情况下,增量部分HMx实际上具有值“0”且因此从相加部分LMx产生所有Md。存在(Mm±LMx)可能经历大值消除的可能性。因此,可将图2的块222中的前导零预测单元(LZA)与块220中的加法器(将Mm及LMx相加)并行地提供以便计算用于LMd的移位量。可接着使用从块222中的LZA导出的移位量将(Mm±LMx)的所得值归一化(即,左移位)。此后可对所得Md执行舍入。
在子情况306a中,说明需要特殊考虑的情形。在此情况下,满足条件Ex-Em<3,且另外,max(Ex,Em)≤47且FMA涉及Rx的减法。当满足这些条件时,很可能最终结果Md可能为亚正常的。如果最终结果Md为亚正常的,那么可标记此条件且可对用于LMd的左移位量设置上限,其中将上限值选择为max(Ex,Em)-1的值。
参看子情况306b,说明需要特殊考虑的又一种情形。在此情形中,Md为未对准的,其将指示Rs及Rt中的一者且仅一者为亚正常值。在此情境中,可能需要LMd的移位量的值大于尾数的位数(对于单精度为24)。因此,归一化过程可招致高达2*24-1或47位的左移位。大于尾数的位数的左移位量被称作巨大值消除,这是因为保持相关数据的所有位将被移出。当Ex-Em的值大于或等于-24时,可发生巨大值消除。如果Ex-Em=-24且将发生巨大值消除,那么可能需要额外的保护位以用于在归一化期间将LMx的位值存储在最低有效位(LSB)的右侧。另一方面,如果Ex-Em<-24,那么无法发生巨大值消除,这是因为对于未对准的结果,保证了Mm的第一非零位位于Mm的位23或更高位(即,较高有效)处。将认识到,此情形类似于涉及将移位量的上限设置为值max(Ex,Em)-1的情形,如关于行306a所描述。
在行308中,说明其中Ex及Em满足条件Ex-Em=3且FMA涉及Rx的减法的情况。此情形类似于行306,但将不会出现进位输出,且可从LMd获得结果。
现在转向图4,说明具有比例因子2N的双重路径FMA(FMASc)的示例性实施方案,其中满足条件Ex-Em>26。更确切地说,参看图4的表2,说明FMASc运算的三种情形。情况402涉及对应于N为正值(即,FMASc涉及按比例放大)且Rx为正常的情形。此情况实质上对应于无按比例缩放的FMA运算,如图3中所描述。
根据情况404,其中N为正的,但Rx为亚正常的,可能需要将增量部分左移位达等于Rx的前导零及N的值的最小值的量(即,左移位=min(LZC(Rx),N)),且可能需要将相加部分右移位达1-(Em+N)。返回参看图2,可通过块230来提供LZC(Rx)的值。对应地,可能需要将“相加部分”右移位达等于Ex-Em-min(LZC(Rx,N))的量。可在块214中执行用于相加部分的移位/对准且可在块234中执行用于增量部分的移位/对准。
在上述情况404中,可归因于在增量部分的左移位期间的Ex与Em之间的差而在Rx与Rm之间产生“间隙”。此间隙代表性地展示于针对此情况的表2的列“间隙”中。为了考虑此间隙,可将对应于相关FMA运算的值(对于Rx的加法为“0”,且对于Rx的减法为“1”)插入到增量部分的LSB中。相加部分可保持对最终舍入有贡献。可在合并/串接增量部分之前,将相加部分右移位达值Ex-Em-min(LZC(Rx,N))。
在情况406中,其中N为负的(即,按比例缩小),将Mx的增量部分右移位达等于(1-(Ex+N))的量。为了保留可能从增量部分损失的位,提供额外存储装置以用于保留例如保护位及舍入位等位。类似地,可提供用于相加部分的粘滞位。
现在转向图5,在表3中说明示例性FMASc实施方案的实施方案中的特定情况,其中满足条件Ex-Em=26~4或3。在情况502中,其中Rx为正常的且N为正的(即,按比例放大),运算实质上对应于FMA运算的运算,类似于图4的情况402。
另一方面,当Rx为亚正常的时,说明两种子情况504a及504b。关于子情况504a,当Ex-Em-min(LZC(Rx,N))>3时,或当Ex-Em-min(LZC(Rx,N))=3且FMASc运算涉及Rx的加法时,将增量左移位达min(LZC(Rx),N)的值。可将相加部分右移位达量1-Em-min(LZC(Rx),N)。然而,在子情况504b中,其中满足以下条件中的一者:Ex-Em-min(LZC(Rx),N)<3,或Ex-Em-min(LZC(Rx),N)=3且FMASc运算涉及Rx的减法,增量部分为零,且因此,所得Mx全部来自相加部分。Rm的十进制(或二进制)点变成参考点且因此将所得相加部分左移位达LZC(Rx)且通过值(Em+N)对左移位设置上限。应理解,在子情况504b中,Ex=1,这是因为Rx为亚正常的。因此,不需要依赖于用于计算LZC(Rx)的块230来计算前导零。可改为使用块222中的LZA。另外,N的值将小于LZC(Rx)。对应地,将满足条件Em+N>-2。Em+N可为负的,这是因为相加部分可处置较高有效位置中的三个额外位(与Rm的二进制点相比较)。
现在参看情况506,其中N为负的(即,按比例缩小)且FMA运算涉及从Rm进行的加数Rx的减法,可将增量部分右移位达量1-(Ex+N),且还可将相加部分右移位,但量为1-(Em+N)。将需要存储保护位及粘滞位以用于此右移位。此情形说明拐点情况,其中舍入之前的结果Mx为零,但保护位从“1”切换到“0”,这是因为来自相加部分的借位信号(对应于Rx的减法)及增量部分的所有经移出位为零。
现在参看图6,说明涉及数种情况的表4,其中满足条件Ex-Em<3(或Ex-Em=3且FMA定义待从Rm中减去的Rx)。在情况602中,其中N为正的(即,按比例放大),可见:运算实质上对应于关于图3描述的FMA运算的运算。另外,可如先前所描述重新使用块222的LZA,代替依赖于块230的LZC。参考点将位于Rm的二进制点处。
在涉及N为负(即,按比例缩小)的子情况604a中,当Em>Ex时或当满足条件Em≥Ex及Em+N<-1两者时,将相加部分右移位达等于1-(Em+N)的量。在也涉及N为负的子情况604b中,当满足条件Em≥Ex且Em+N=0/-1时,按等于(Em+N)的量将相加部分左移位及设置上限。
示例性实施例可经设计以保持所需的最少位数以便满足IEEE 754中针对单精度的用于舍入的要求。在上文所描述的满足以下条件的情形中:Em>Ex-3且FMA涉及从Rm进行的加数Rx的加法或减法;或Em=Ex-3且FMA涉及从Rm进行的加数Rx的减法,按比例缩放之前的最高有效位可保持在相加部分中,此情形允许在归一化及舍入运算期间用于进行按比例放大及按比例缩小两者的指数或在按比例缩小的情况下的尾数的容易操纵。因此,用于双重路径FMA的框架可足够用于在这些情况下实施FMASc。
现在将针对示例性实施例描述上述等式及条件以及相关移位及归一化硬件的详细实施方案。首先通过用于增量部分及相加部分的涵盖所有上述情况的以下简化等式来概述图3到6中所说明的上述情况的条件。
参看图7,说明用于增量或HMx部分的移位逻辑的示例性实施方案。对于增量/HMx部分,如果满足条件Ex-Em>3(或如果满足Ex-Em=3且FMA涉及加数Rx到Rm的加法),那么可通过min(LZC(Rx),N)的值确定用于增量的左移位量,且可通过1-(Ex+N)的值确定右移位量。如所展示,可实施块702(或图2的块230)以计算LZC(Rx)。块704可测试条件Ex+N>0,而块706可计算1-(Ex+N)的值。在块708中存储从FMASc指令导出的N的值。可使用min(LZC(Rx),N)及1-(Ex+N)的值来确定如上文所描述的对Mx的移位/遮蔽。为了加快计算,实施例可实施块716及718中所说明的两个移位器,而不是等待LZC(Rx)的结果变得可从块702获得。块716中的移位器可基于LZC(Rx)的值执行左移位,而块718中的移位器可实施为通过多路复用器块714的输出控制的双向移位器,其可将Mx左移位达量N或将Mx右移位达量1-(Ex+N)。在其中FMA涉及加数Rx的加法或减法中的一者的情况下,进行左移位还是进行右移位的决策可基于条件Ex-Em>3或Ex-Em=3。此决策可在多路复用器控制块712中实施且可通过多路复用器块720来选择经适当移位的值。并行地,块722中的多路复用器的输出可供亚正常标记块724使用以便确定最终结果是否将为亚正常的,且标记此情况,使得可对移位量设置上限。可接着在逻辑块726中合并亚正常标记块724及多路复用器块720的输出以获得HMx的最终值。
关于相加部分,将条件分解成三种主要情况。参看图8,说明用于相加部分或LMx的示例性实施方案。在其中满足条件Ex-Em>3且FMA涉及加数Rx到Rm的加法或减法(或如果满足Ex-Em=3且FMA涉及加数Rx到Rm的加法)的第一种情况下,可通过Ex-Em-min(LZC(Rx),N)的值确定用于相加部分的右移位量。此值等于1-Em-LZC(Rx),或等于1-(Em+N),其基于min(LZC(Rx),N)的值。块802到810、814及820可用以评估如所说明的上述条件。在此情况下,多路复用器块826结合块832及834中的限定及Rx遮蔽逻辑分别可接着计算用于LMx的最终值。
在第二种情况下,其中满足条件26≥Ex-Em>3,或如果满足Ex-Em=3且FMA涉及加数Rx到Rm的加法,那么可通过(Em+N)的值确定用于相加部分的左移位量,可如上文所描述基于亚正常旗标对所述左移位量设置上限。除用于第一种情况的逻辑块中的一些逻辑块之外,还可使用额外块812、818及816来实施第二种情况,所述额外块可确定Rx是否为亚正常的,且块822中的限定逻辑结合亚正常旗标产生块828可接着将结果标记为亚正常。
在最终情况下,其中满足条件Ex-Em<3且FMA涉及加数Rx到Rm的加法或减法(或如果满足Ex-Em=3且FMA涉及加数Rx到Rm的减法),可通过1-(Ex+N)的值来确定用于相加部分的右移位量且可通过(Em+N)的值来再次确定左移位量,可如上文所描述基于亚正常旗标对左移位量设置上限。块824中的移位器逻辑、块830中的限定逻辑及块836中的3∶2压缩器可用以确定块838中的LMx的最终结果。
作为前述章节的概述,示例性实施例可通过基于各种指数值Ex及Em确定其中对于FMA运算可出现溢出/下溢的情况及预先对准Rx来将按比例缩放运算集成在双重路径FMA管线内。可通过考虑Rx的前导零及考虑比例因子2N来确定LMx及HMx,使得在针对FMASc运算计算出最终值Rd之前,LMx及HMx已经包含应用于其的比例因子。通过使用3∶2压缩将低部分LMx连同乘积Rm(=Rs*Rt)一起相加,之后求解最终乘积Rm。使用来自加法的结果的进位/借位来递增/递减HMx。基于LMx及其中的前导零数目执行归一化。延迟符合IEEE的舍入,直到获得结果Rd之后的最后阶段为止,使得在中间阶段中不存在位/精度的损失。
应了解,实施例包含用于执行本文揭示的过程、功能及/或算法的各种方法。举例来说,如图9中所说明,实施例可包含一种实施浮点按比例缩放的融合乘法及加法(FMA)运算(参见例如图2)的方法,所述方法包括:将浮点乘数操作数(例如,Rs)与浮点被乘数操作数(例如,Rt)的尾数相乘以获得乘积的尾数-框902;确定浮点加数操作数(例如,Rx)的尾数的前导零数目计数(LZC)(例如,图2的块230)-框904;基于所述LZC、比例因子操作数(例如,N)及加数操作数的指数(例如,Ex)、乘数操作数的指数(例如,Et)及被乘数操作数的指数(例如,Es)确定加数操作数的预先对准移位值(例如,在图2的块234中)-框906;将加数操作数的尾数移位所述预先对准移位值以获得经预先对准的加数(例如,图2的用于LMx及HMx计算的块214及218)-框908,将乘积的尾数与所述经预先对准的加数累加(相加/相减)(例如,在图2的加法器220中)以获得中间结果-框910;确定中间结果的前导零数目(例如,在图2的块222中)-框912;基于预先对准移位值及中间结果的前导零数目确定归一化移位值-框914;及基于所述归一化移位值将中间结果归一化(例如,在图2的块224中)以获得按比例缩放的FMA指令的经归一化的输出-框916。
所属领域的技术人员将了解,可使用多种不同技术及技法中的任一者来表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示可能贯穿上述描述提及的数据、指令、命令、信息、信号、位、符号及码片。
另外,所属领域的技术人员将了解,结合本文所揭示的实施例而描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路及步骤。此类功能性是实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但此类实施方案决策不应被解释为会导致脱离本发明的范围。
结合本文所揭示的实施例而描述的方法、序列及/或算法可直接以硬件、以由处理器执行的软件模块或以两者的组合来体现。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可卸除式磁盘、CD-ROM,或所属领域中已知的任何其它形式的存储媒体中。示例性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息及将信息写入到存储媒体。在替代例中,储存媒体可与处理器成一体式。
参看图10,描绘包含根据示例性实施例配置的多核心处理器的无线装置的特定说明性实施例的框图且一般将其描绘为1000。装置1000包含数字信号处理器(DSP)1064,其可包含如上文关于示例性实施例所论述的浮点单元200。DSP 1064可耦合到存储器1032。图10还展示耦合到DSP 1064及显示器1028的显示器控制器1026。译码器/解码器(编码解码器)1034(例如,音频及/或话音编码解码器)可耦合到DSP 1064。还说明例如无线控制器1040(其可包含调制解调器)等其它组件。扬声器1036及麦克风1038可耦合到编码解码器1034。图10还指示无线控制器1040可耦合到无线天线1042。在特定实施例中,DSP 1064、显示器控制器1026、存储器1032、编码解码器1034及无线控制器1040包含在系统级封装或系统单芯片装置1022中。
在特定实施例中,输入装置1030及电力供应器1044耦合到系统单芯片装置1022。此外,在特定实施例中,如图10中所说明,显示器1028、输入装置1030、扬声器1036、麦克风1038、无线天线1042及电力供应器1044在系统单芯片装置1022外部。然而,显示器1028、输入装置1030、扬声器1036、麦克风1038、无线天线1042及电力供应器1044中的每一者可耦合到系统单芯片装置1022的组件,例如接口或控制器。
应注意,尽管图10描绘了无线通信装置,但DSP 1064及存储器1032也可以集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或者计算机中。处理器(例如,DSP 1064)还可集成到此类装置中。
因此,本发明的实施例可包含一种计算机可读媒体,其体现用于实施具有按比例缩放的浮点融合乘法及加法(FMASc)运算的方法。因此,本发明不限于所说明的实例,且用于执行本文中所描述的功能性的任何装置包含在本发明的实施例中。
虽然前述揭示内容展示本发明的说明性实施例,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可在其中做出各种改变及修改。无需以任何特定次序来执行根据本文中所描述的本发明的实施例的方法权利要求的功能、步骤及/或动作。此外,尽管可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也预期复数形式。
Claims (32)
1.一种实施浮点按比例缩放的融合乘法及累加FMASc运算的方法,所述方法包括:
将浮点乘数操作数与浮点被乘数操作数的尾数相乘以获得乘积的尾数;
确定浮点加数操作数的尾数的前导零数目计数LZC;
基于所述LZC、比例因子操作数及所述浮点加数操作数、所述浮点乘数操作数及所述浮点被乘数操作数的指数确定所述浮点加数操作数的预先对准移位值;
将所述浮点加数操作数的所述尾数移位所述预先对准移位值以获得经预先对准的加数;
将所述乘积的所述尾数与所述经预先对准的加数累加以获得中间结果;
确定所述中间结果的前导零数目;
基于所述预先对准移位值及所述中间结果的所述前导零数目确定归一化移位值;以及
基于所述归一化移位值将所述中间结果归一化以获得所述FMASc运算的经归一化的输出。
2.根据权利要求1所述的方法,其进一步包括基于所述归一化移位值用舍入值舍入所述经归一化的输出。
3.根据权利要求2所述的方法,其中所述归一化移位值为左移位或右移位中的一者。
4.根据权利要求3所述的方法,其中所述左移位是基于所述中间结果的所述前导零数目或所述浮点加数操作数、所述浮点乘数操作数及所述浮点被乘数操作数的指数的函数。
5.根据权利要求3所述的方法,其中所述右移位是基于所述比例因子操作数及所述浮点加数操作数、所述浮点乘数操作数及所述浮点被乘数操作数的指数的函数。
6.根据权利要求1所述的方法,其中所述累加为相加或相减中的一者,如通过所述FMASc运算指定。
7.一种执行浮点运算的方法,其包括:
接收乘数、被乘数、加数及比例因子操作数;
对所述乘数及被乘数操作数的尾数执行部分乘法运算以获得中间乘积;
基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数的尾数与所述中间乘积预先对准;以及
将所述经预先对准的加数的所述尾数与所述中间乘积累加以获得所述浮点运算的结果。
8.根据权利要求7所述的方法,其进一步包括将所述结果归一化。
9.根据权利要求8所述的方法,其进一步包括对所述经归一化的结果执行舍入运算,其中在所述方法中在获得所述经归一化的结果之前避免了舍入。
10.根据权利要求7所述的方法,其中所述累加为相加或相减中的一者,如通过所述浮点运算指定。
11.一种浮点单元,其包括:
输入乘数、被乘数、加数及比例因子操作数;
乘法器块,其经配置以将所述乘数及被乘数的尾数相乘以产生中间乘积;
对准逻辑,其经配置以基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数与所述中间乘积预先对准;以及
累加逻辑,其经配置以将所述经预先对准的加数的尾数与所述中间乘积相加或相减以获得所述浮点单元的结果。
12.根据权利要求11所述的浮点单元,其进一步包括经配置以将所述结果归一化的归一化块。
13.根据权利要求12所述的浮点单元,其进一步包括前导零预测器LZA块,所述前导零预测器LZA块经配置以基于来自所述累加逻辑的中间结果预测所述结果中的前导零数目,使得所述归一化是基于所述LZA块的输出。
14.根据权利要求12所述的浮点单元,其进一步包括舍入块,所述舍入块经配置以对所述经归一化的结果执行指定舍入。
15.根据权利要求11所述的浮点单元,其中所述加数的所述尾数划分成高部分及低部分,使得所述对准逻辑经配置以单独地预先对准所述低部分及所述高部分,其中所述经预先对准的低部分用于在所述加法逻辑中与所述中间乘积相加,且增量逻辑经配置以基于来自所述加法逻辑的输出的进位或借位值递增或递减所述高部分。
16.根据权利要求11所述的浮点单元,其中所述乘法器块经配置为布斯乘法器。
17.根据权利要求11所述的浮点单元,其中所述中间乘积是按包括总和部分及进位部分的冗余格式来表示。
18.根据权利要求11所述的浮点单元,其经配置以执行具有按比例缩放的浮点融合乘法及加法FMASc指令。
19.根据权利要求11所述的浮点单元,其集成在至少一个半导体裸片中。
20.根据权利要求11所述的浮点单元,其集成到选自由以下各者组成的群组的装置中:机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、个人数字助理PDA、固定位置数据单元及计算机。
21.一种处理系统,其包括:
用于接收浮点乘数、被乘数、加数及比例因子操作数的装置;
用于将所述乘数及被乘数的尾数相乘以产生中间乘积的乘数装置;
用于基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数与所述中间乘积预先对准的对准装置;以及
用于将所述经预先对准的加数的尾数与所述中间乘积相加或相减以获得所述处理系统的浮点结果的累加装置。
22.根据权利要求21所述的处理系统,其进一步包括用于将所述浮点结果归一化的归一化装置。
23.根据权利要求21所述的处理系统,其进一步包括用于基于指定舍入模式舍入所述经归一化的浮点结果的装置。
24.根据权利要求21所述的处理系统,其经配置以执行具有按比例缩放的浮点融合乘法及加法FMASc指令。
25.一种非暂时性计算机可读存储媒体,其包括在由处理器执行时致使所述处理器执行用于执行浮点运算的运算的代码,所述非暂时性计算机可读存储媒体包括:
用于接收乘数、被乘数、加数及比例因子操作数的代码;
用于对所述乘数及被乘数操作数的尾数执行部分乘法运算以获得中间乘积的代码;
用于基于所述比例因子及所述加数、乘数及被乘数的指数将所述加数的尾数与所述中间乘积预先对准的代码;以及
用于将所述经预先对准的加数的所述尾数与所述中间乘积相加或相减以获得所述浮点运算的结果的代码。
26.根据权利要求25所述的非暂时性计算机可读存储媒体,其进一步包括用于将所述结果归一化的代码。
27.根据权利要求25所述的非暂时性计算机可读存储媒体,其进一步包括用于对所述经归一化的结果执行舍入运算的代码,其中在方法中在获得所述经归一化的结果之前避免了舍入。
28.一种执行具有按比例缩放的双重数据路径浮点融合乘法及累加运算FMASc运算的方法,所述方法包括:
接收乘数、被乘数、加数及比例因子操作数;
对所述乘数及被乘数操作数的尾数执行部分乘法运算以获得中间乘积;
将所述加数的尾数分成具有较高有效位的高加数部分及具有较低有效位的低加数部分;
将所述高加数部分对准以形成增量部分;
将所述低加数部分与所述中间乘积对准;
将所述低加数部分与所述中间乘积累加以形成相加部分;
基于分别来自所述相加部分的进位输出或借位值将所述增量部分递增或递减以形成最终的增量部分;以及
将所述最终增量部分与所述相加部分串接以形成所述浮点运算的结果。
29.根据权利要求28所述的方法,其中将所述高加数部分与低加数部分对准是基于所述比例因子的值,及所述加数操作数的指数与所述乘数及被乘数操作数的指数的总和之间的差。
30.根据权利要求29所述的方法,其中如果所述比例因子为零,那么基于所述加数操作数的指数与所述乘数及被乘数操作数的所述指数的所述总和之间的所述差为大于、等于或小于第一常数中的一者,确定用于将所述高加数部分及低加数部分对准的左移位及右移位值。
31.根据权利要求29所述的方法,其中如果所述比例因子不等于零,那么基于所述加数操作数的指数与所述乘数及被乘数操作数的所述指数的所述总和之间的所述差为大于、等于或小于第二常数中的一者,确定用于将所述高加数部分及低加数部分对准的左移位及右移位值。
32.根据权利要求29所述的方法,其中用于在所述FMASc运算中所指定的所述累加涉及从所述乘数及被乘数操作数的乘积进行的所述加数的减法的情况下将所述高加数部分及低加数部分对准的移位值不同于用于在所述FMASc运算中所指定的所述累加涉及所述加数与所述乘数及被乘数操作数的所述乘积的加法的情况下将所述高加数部分及低加数部分对准的移位值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/598,760 US9110713B2 (en) | 2012-08-30 | 2012-08-30 | Microarchitecture for floating point fused multiply-add with exponent scaling |
US13/598,760 | 2012-08-30 | ||
PCT/US2012/062626 WO2014035449A1 (en) | 2012-08-30 | 2012-10-30 | Microarchitecture for floating point fused multiply-add with exponent scaling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104520807A true CN104520807A (zh) | 2015-04-15 |
CN104520807B CN104520807B (zh) | 2016-09-21 |
Family
ID=47192142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280075155.0A Active CN104520807B (zh) | 2012-08-30 | 2012-10-30 | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9110713B2 (zh) |
EP (1) | EP2891056A1 (zh) |
CN (1) | CN104520807B (zh) |
WO (1) | WO2014035449A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250098A (zh) * | 2015-06-12 | 2016-12-21 | Arm 有限公司 | 用于在执行浮点运算时控制舍入的装置及方法 |
CN107608655A (zh) * | 2016-10-03 | 2018-01-19 | 上海兆芯集成电路有限公司 | 微处理器中执行fma指令的方法和微处理器 |
CN112074806A (zh) * | 2018-05-04 | 2020-12-11 | 微软技术许可有限责任公司 | 使用减小的位宽向量的块浮点计算 |
CN112241291A (zh) * | 2019-07-18 | 2021-01-19 | 国际商业机器公司 | 用于指数函数实施的浮点单元 |
CN115328438A (zh) * | 2022-10-13 | 2022-11-11 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置及电子设备 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8996600B1 (en) * | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9110713B2 (en) * | 2012-08-30 | 2015-08-18 | Qualcomm Incorporated | Microarchitecture for floating point fused multiply-add with exponent scaling |
US9317251B2 (en) | 2012-12-31 | 2016-04-19 | Nvidia Corporation | Efficient correction of normalizer shift amount errors in fused multiply add operations |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US10489114B2 (en) * | 2014-06-27 | 2019-11-26 | International Business Machines Corporation | Shift amount correction for multiply-add |
US9563400B2 (en) | 2014-09-18 | 2017-02-07 | International Business Machines Corporation | Optimized structure for hexadecimal and binary multiplier array |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US20170177336A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Hardware cancellation monitor for floating point operations |
US9996320B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Fused multiply-add (FMA) low functional unit |
US9952829B2 (en) | 2016-02-01 | 2018-04-24 | International Business Machines Corporation | Binary fused multiply-add floating-point calculations |
US10073676B2 (en) | 2016-09-21 | 2018-09-11 | Altera Corporation | Reduced floating-point precision arithmetic circuitry |
US10146533B2 (en) * | 2016-09-29 | 2018-12-04 | Intel Corporation | Instruction and logic for detecting numeric accumulation error |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10372417B2 (en) | 2017-07-13 | 2019-08-06 | International Business Machines Corporation | Multiply-add operations of binary numbers in an arithmetic unit |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US11256509B2 (en) | 2017-12-07 | 2022-02-22 | International Business Machines Corporation | Instruction fusion after register rename |
US11157280B2 (en) | 2017-12-07 | 2021-10-26 | International Business Machines Corporation | Dynamic fusion based on operand size |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
GB201801639D0 (en) * | 2018-02-01 | 2018-03-21 | Ruff Brendan Patrick | Low precision efficient multiplication free convolutional filter bank device |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US11669747B2 (en) * | 2018-10-30 | 2023-06-06 | Qualcomm Incorporated | Constraining function approximation hardware integrated with fixed-point to floating-point conversion |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US11182127B2 (en) * | 2019-03-25 | 2021-11-23 | International Business Machines Corporation | Binary floating-point multiply and scale operation for compute-intensive numerical applications and apparatuses |
US11269630B2 (en) * | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US11455142B2 (en) * | 2019-06-05 | 2022-09-27 | International Business Machines Corporation | Ultra-low precision floating-point fused multiply-accumulate unit |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
WO2022271608A1 (en) * | 2021-06-21 | 2022-12-29 | Ceremorphic, Inc | Power saving floating point multiplier-accumulator with precision-aware accumulation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040122886A1 (en) * | 2002-12-20 | 2004-06-24 | International Business Machines Corporation | High-sticky calculation in pipelined fused multiply/add circuitry |
US20090292754A1 (en) * | 2002-12-23 | 2009-11-26 | Cornea-Hasegan Marius A | Method and system for avoiding underflow in a floating-point operation |
US20110231460A1 (en) * | 2010-03-17 | 2011-09-22 | Oracle International Corporation | Apparatus and method for floating-point fused multiply add |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757687A (en) | 1996-08-06 | 1998-05-26 | Hewlett-Packard Co. | Method and apparatus for bounding alignment shifts to enable at-speed denormalized result generation in an FMAC |
US5996066A (en) * | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
DE69942339D1 (de) | 1998-08-24 | 2010-06-17 | Microunity Systems Eng | System mit breiter operandenarchitektur und verfahren |
US7428566B2 (en) * | 2004-11-10 | 2008-09-23 | Nvidia Corporation | Multipurpose functional unit with multiply-add and format conversion pipeline |
US7451172B2 (en) | 2005-02-10 | 2008-11-11 | International Business Machines Corporation | Handling denormal floating point operands when result must be normalized |
US7698353B2 (en) | 2005-09-14 | 2010-04-13 | Freescale Semiconductor, Inc. | Floating point normalization and denormalization |
US7689642B1 (en) | 2005-11-03 | 2010-03-30 | Sun Microsystems, Inc. | Efficient accuracy check for Newton-Raphson divide and square-root operations |
US7899859B2 (en) | 2005-12-20 | 2011-03-01 | Oracle America, Inc. | Efficient error-check and exact-check for Newton-Raphson divide and square-root operations |
US7962543B2 (en) | 2007-06-01 | 2011-06-14 | Advanced Micro Devices, Inc. | Division with rectangular multiplier supporting multiple precisions and operand types |
US8106914B2 (en) | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US20120059866A1 (en) | 2010-09-03 | 2012-03-08 | Advanced Micro Devices, Inc. | Method and apparatus for performing floating-point division |
US20140067894A1 (en) * | 2012-08-30 | 2014-03-06 | Qualcomm Incorporated | Operations for efficient floating point computations |
US9110713B2 (en) * | 2012-08-30 | 2015-08-18 | Qualcomm Incorporated | Microarchitecture for floating point fused multiply-add with exponent scaling |
-
2012
- 2012-08-30 US US13/598,760 patent/US9110713B2/en active Active
- 2012-10-30 WO PCT/US2012/062626 patent/WO2014035449A1/en active Search and Examination
- 2012-10-30 CN CN201280075155.0A patent/CN104520807B/zh active Active
- 2012-10-30 EP EP12787997.1A patent/EP2891056A1/en not_active Withdrawn
-
2015
- 2015-08-12 US US14/824,547 patent/US9841948B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040122886A1 (en) * | 2002-12-20 | 2004-06-24 | International Business Machines Corporation | High-sticky calculation in pipelined fused multiply/add circuitry |
US20090292754A1 (en) * | 2002-12-23 | 2009-11-26 | Cornea-Hasegan Marius A | Method and system for avoiding underflow in a floating-point operation |
US20110231460A1 (en) * | 2010-03-17 | 2011-09-22 | Oracle International Corporation | Apparatus and method for floating-point fused multiply add |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250098A (zh) * | 2015-06-12 | 2016-12-21 | Arm 有限公司 | 用于在执行浮点运算时控制舍入的装置及方法 |
CN107608655A (zh) * | 2016-10-03 | 2018-01-19 | 上海兆芯集成电路有限公司 | 微处理器中执行fma指令的方法和微处理器 |
CN107608655B (zh) * | 2016-10-03 | 2020-05-05 | 上海兆芯集成电路有限公司 | 微处理器中执行fma指令的方法和微处理器 |
CN112074806A (zh) * | 2018-05-04 | 2020-12-11 | 微软技术许可有限责任公司 | 使用减小的位宽向量的块浮点计算 |
CN112241291A (zh) * | 2019-07-18 | 2021-01-19 | 国际商业机器公司 | 用于指数函数实施的浮点单元 |
CN115328438A (zh) * | 2022-10-13 | 2022-11-11 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20140067895A1 (en) | 2014-03-06 |
US9110713B2 (en) | 2015-08-18 |
US9841948B2 (en) | 2017-12-12 |
CN104520807B (zh) | 2016-09-21 |
WO2014035449A1 (en) | 2014-03-06 |
US20150347089A1 (en) | 2015-12-03 |
EP2891056A1 (en) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104520807A (zh) | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 | |
CN107168678B (zh) | 一种乘加计算装置及浮点乘加计算方法 | |
JP6410637B2 (ja) | 浮動小数点加算器、半導体装置及び浮動小数点加算器の制御方法 | |
EP1857925B1 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
US8694572B2 (en) | Decimal floating-point fused multiply-add unit | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
US8788561B2 (en) | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit | |
CN102855117A (zh) | 浮点加法器 | |
CN101174200A (zh) | 一种浮点乘加融合单元的五级流水线结构 | |
Brunie | Modified fused multiply and add for exact low precision product accumulation | |
US8903881B2 (en) | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit | |
CN104603744A (zh) | 用于高效浮点计算的运算 | |
WO2007096982A1 (ja) | 演算処理装置および演算処理方法 | |
CN116643718B (zh) | 一种流水线结构的浮点融合乘加装置、方法及处理器 | |
CN101937379A (zh) | 算术电路、算术处理设备和算术处理方法 | |
CN101650643B (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 | |
US10459689B2 (en) | Calculation of a number of iterations | |
US20120259903A1 (en) | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit | |
US20140059104A1 (en) | Arithmetic circuit for calculating correction value | |
Dhobale et al. | Implementation of 32 Bit Binary Floating Point Adder Using IEEE 754 Single Precision Format | |
US11327718B2 (en) | Arithmetic circuitry for power-efficient multiply-add operations | |
CN117787297A (zh) | 一种浮点乘加单元及其运算方法 | |
JP3100868B2 (ja) | 浮動小数点数のための算術演算装置 | |
JPS6280764A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |