用于具有指数按比例缩放的浮点融合乘法加法的微架构的制作方法_2

文档序号:8207696阅读:来源:国知局

[0029]图10说明可有利地在其中使用本发明的实施例的示例性无线通信系统1000。
【具体实施方式】
[0030]在以下涉及本发明的特定实施例的描述及相关图式中揭示本发明的若干方面。可在不脱离本发明的范围的情况下设计出替代实施例。另外,将不详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。
[0031]词语“示例性”在本文中用于意味着“充当实例、例子或说明”。本文中被描述为“示例性”的任何实施例未必应解释为比其它实施例优选或有利。同样,术语“本发明的实施例”并非要求本发明的所有实施例包含所论述的特征、优点或操作模式。
[0032]本文中所使用的术语仅仅是为了描述特定实施例,且并不希望限制本发明的实施例。如本文所使用,除非上下文另外清楚地指示,否则单数形式“一”及“所述”希望还包括复数形式。将进一步理解,术语“包含”及/或“包括”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。
[0033]另外,依据待由(例如)计算装置的元件执行的动作序列来描述许多实施例。将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、正由一或多个处理器执行的程序指令或两者的组合来执行。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有一组对应的计算机指令,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的标的物的范围内。另外,对于本文中所描述的实施例中的每一者来说,任何此类实施例的对应形式可在本文中被描述为(例如)“经配置以(执行所描述动作)的逻辑”。
[0034]示例性实施例涉及用于例如具有按比例缩放的融合乘法及加法(在下文表示为“FMASc”)等专用浮点指令的硬件支持。浮点数可按IEEE 754格式表示。本文中的描述将集中在单精度或32位浮点运算上。所属领域的技术人员将能够在不脱离所揭示实施例的范围的情况下将所揭示技术扩展到双精度(64位)以及128位浮点运算。虽然在必要时提供了浮点算术的计算细节以描述示例性实施例,但应理解,出于简洁起见,此处将不进行浮点算术的深入解释。所属领域的技术人员将了解,所揭示实施例的各种方面涉及FMASc指令的高效实施方案。
[0035]因此,一些实施例涉及并行地执行FMASc指令的FMA及按比例缩放运算两者作为集成运算,与可限于按顺序阶段实施这些运算的常规实施方案形成对比。以此方式,实施例可经配置以基于位损失而避免错误结果,如图1的框114及128中所展示。实施例还可推迟舍入运算,直到计算出FMASc指令的最终结果为止,借此避免可能归因于舍入中间结果而造成的精度的任何损失。应了解,常规实施方案可能不能够类似地推迟舍入直到最终阶段为止,这是因为中间存储寄存器的有限大小可在包括FMA及按比例缩放运算的每一顺序阶段之后强加舍入。
[0036]作为背景,现在将简洁地解释根据IEEE 754标准的浮点数的常规表示。根据对标准的最新的修订,可用数学表达式来表示二进制浮点数:(-1) s*m*2%其中s为正负号位,e为无偏差指数,且m为尾数或有效数字。在IEEE 754-2008中,单精度对应于在正负号位、指数及尾数之间除以32位。指数宽度为8位,其中偏差值为127,使得范围为-126到127。尾数为24位,其中仅明确地存储23位,而对于所有“正常”数字,假定最高有效位为“I”。
[0037]如上文简洁地提及,在以下情形下,浮点数被视为正常的:当浮点数降低到将允许此标准表示的值范围内时,即,尾数的最高有效位为“I”且浮点数可按以下格式表示:1.1H1HI2...m23*2e,其中Iii1、m2,...,m23为尾数的位。换句话说,如果单精度浮点数的二进制表示小于值1*2_126,那么最高有效位可能不再为单精度的“1”,且浮动数将必须呈现格式:0.Hi1Hi2...m23*2e。这些数字被称为亚正常数字。如可以看出,亚正常数字具有精度损失。
[0038]继续回到浮点操作数(乘数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定义了各种舍入模式,本文将不会详细地描述所述舍入模式。然而,应认识到,在给定有限位数可用于存储浮点数的情况下,舍入可导致精度的损失。此精度损失可为累积的,这是因为在常规实施方案中中间结果可能经受一种以上舍入阶段。
[0039]现在参看图2,将描述示例性实施例以有效地处置与常规实施方案的归一化及舍入模式相关联的上述缺点。说明根据示例性实施例的用于执行FMASc指令的浮点单元200。在一些实施例中,用于进行按比例缩放运算的示例性硬件块230到234可有效地与用于FMA运算的硬件块202到228集成。将浮点单元200说明为使用管线式寄存器236及238跨越若干阶段分阶段。如所说明的管线式分阶段可用于减少时钟循环时间且因此增加浮点单元200的运算频率。然而,应理解,分阶段管线并非必要的且可在单个阶段中用组合逻辑实施示例性实施例。
[0040]可在不显著偏离用于FMA运算的常规技术的情况下实施逻辑块202到228。如块202中所展示,可从寄存器组(“RF”,未加以说明)接收浮点操作数乘数Rs及被乘数Rt。可按单精度IEEE 754格式表示乘数Rs及被乘数Rt。块204中的逻辑可经配置以分别提取这些操作数的组成部分,例如正负号、尾数及指数。
[0041]块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的加法或减法。
[0042]返回到图2,与Rs及Rt的尾数的乘法并行地,块208可计算乘积Rm的指数。如先前所提到,可实际上通过Rs的指数Es及Rt的指数Et的相加来获得乘积Rm的指数。然而,将回想起,指数Es及Et可按偏差格式来表示。因此,为了保持用于乘积Rm的指数的相同格式(下文为“Em”),块208可将指数相加及从指数Es及Et的总和减去偏差(对于单精度,为十进制值127)以获得指数Em( S卩,Em = Es+Et-偏差)。Em的此值将用于将Rm与加数Rx对准以执行FM计算。
[0043]在块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。
[0044]如先前所提及,在可将Rx与Rm相加以形成FMA的输出Rd之前,必须将Rx与Rm对准。因此,块212可接收在块208处计算的Em及在块210处获得的Ex作为输入。Ex与Em之间的差的绝对值(IEx-EmI)将确定在块214中遵循的对准过程的细节。若干情况基于
Ex-Eml的值而产生,将在以下章节中详细地描述所述情况。在所有这些情况中,对于FMA运算,将遵循双重路径设计,其中将在两个部分(_具有较高有效位的高部分,及具有较低有效位的低部分)中并行地计算具有按比例缩放的FMA运算(或FMASc运算)的结果。以此方式,实施例可加快计算过程。
[00
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1