响应于输入数据值降低fma单元中的功率消耗的制作方法

文档序号:6517564阅读:193来源:国知局
响应于输入数据值降低fma单元中的功率消耗的制作方法
【专利摘要】公开了响应于输入数据值降低FMA单元中的功率消耗的技术。在实施例中,融合乘加(FMA)电路被配置为接收多个输入数据值以执行所述输入数据值上的FMA指令。所述电路包括乘法器单元和耦合到所述乘法器单元的输出的加法器单元,和控制逻辑,其接收所述输入数据值并降低切换活动,并由此基于所述输入数据值中的一个或多个的值降低所述电路的一个或多个组件的功率消耗。对其他实施例也予以描述并要求保护。
【专利说明】响应于输入数据值降低FMA单元中的功率消耗
【背景技术】
[0001]处理器中一个常见的执行单元是融合乘加(FMA)单元。一般而言,FMA单元可以执行在三个传入操作数上首先将操作数中的两个相乘然后将乘积与第三个数累积的操作。更具体地,FMA算术逻辑单元(ALU)被设计为计算A*B+C,其中A、B和C是任意值。通常A称为乘数输入,B称为被乘数输入,且C称为加数输入。最新的FMA ALU将通电和操作设计在同一功率水平而不管呈交给FMA ALU的数据输入如何。这会导致过度的功率消耗,特别是因为FM的乘法单元是高功率消耗件。
[0002]一些处理器使用这样的单元,通过对第三个操作数的适当选择或经由选择电路路由操作数和结果而执行更多的简单数学操作诸如加法、减法和乘法。因此,在许多处理器中FMA单元可以构成执行单元的骨干,并可以是用以确定处理器的频率、功率和面积的关键电路。
[0003]之前用来降低FMA单元平均功率的解决方案通常关注于降低覆盖于FMAALU之上的较简单操作的功率,此举往往是通过将这些覆盖操作放置进独立于FMA ALU的单独的浮点ALU中。这允许FMA ALU对这些较简单操作断电,从而降低这些情况下的功率消耗。然而就面积和泄漏功率而言这很昂贵,因此不是理想的解决方案。而且,这个解决方案不能节省用于FM指令执行的功率。
【专利附图】

【附图说明】
[0004]图1是根据本发明实施例的一般融合乘加(FM)单元的框图。
[0005]图2是根据本发明实施例的FMA电路的示意图。
`[0006]图2A是根据本发明另一实施例的FMA电路的示意图。
[0007]图3是根据本发明另一实施例的FM电路的示意图。
[0008]图4是根据本发明另一实施例的FM电路的示意图。
[0009]图5是根据本发明实施例的又一 FMA电路的示意图。
[0010]图6是根据本发明实施例的方法的流程图。
[0011]图7是根据本发明一实施例的处理器内核的框图。
[0012]图8是根据本发明实施例的多域处理器的框图。
[0013]图9是根据本发明实施例的系统的框图。
【具体实施方式】
[0014]在各种实施例中,FMA电路的功率消耗可以基于对输入数据值的一个或多个和/或将在电路中执行的指令的分析来控制并降低。例如,对许多数据输入,答案或者是显而易见地已知或者可以用更功率有效的方式计算出。作为一个示例,如果乘数和被乘数输入中一个或两个都是零,那么FMA计算的结果就是显而易见地等于加数。因此为了节省功率,至少部分的FM单元可以经由时钟门控断电且加数直接旁路到输出。
[0015]而且,更复杂的优化是可能的。以其中被乘数是2的直幂(例如,1.0X2^2)的情况来说。在这个情况下,计算乘积的乘法器单元可以使用时钟门控来门控关掉,且可以使用移位操作来计算乘积,从而节省在电路的乘法器单元中消耗的大量功率。这样,基于数据输入自身的优化可以用来控制时钟门控和旁路路径以实现有效的操作。
[0016]而且,许多操作覆盖在FMA ALU内的主FMA数据路径之上以便重用尽可能多的数据路径。这些操作可以包括简单算术操作(诸如乘法、加法和减法)、逻辑操作(诸如AND/OR/移位/旋转)、最小函数、最大函数、整数操作、比较操作和转换操作(诸如浮点到整数转换、整数到浮点转换、双精度到单精度和单精度到双精度转换)。各实施例可以对这些操作执行输入数据驱动的时钟门控以在FMA单元内节省额外的平均功率。
[0017]各实施例可以由此实现精细粒度的、经由相关联的控制和多路复用逻辑所控制的时钟门控,以在检测到这些特殊数据输入和/或指令类型时降低平均功率。以此方式,包括融合乘加操作即AB+C操作的各操作可以更有效地执行。一般而言,FMA单元包括乘法器和加法器,还包括单个舍入器。此FMA单元可以有相对宽的数据宽度以适应有较宽宽度的操作数,诸如向量大小的值。例如,在一实施例中,此FMA单元可以接收64-位操作数并在其上执行FM操作。
[0018]尽管本发明的范围在此方面并不受限,在许多实现中FMA单元可以执行浮点乘法累加操作并与给定格式的操作数相容,该操作数例如为给定电气和电子工程师协会(IEEE)标准的,诸如关于浮点(FP)算术的IEEE标准754-2008 (2008年公布)的操作数。此外,可以使用给定实现来处理各种类型的传入数据,包括可以是单和双精度浮点格式的操作数。
[0019]在一实施例中,FMA指令句法可以使用三个源操作数定义,其中第一源操作数基于数据元素的算术操作的结果而更新。这样,第一源操作数也可以是目的地操作数。例如,可以存在opcode、xl、x2、x3的指令格式,其中opcode相对应于执行给定算术操作的多个用户级FMA或其它指令中的一个,且xl_x3相对应于在将该操作中处理的操作数。
[0020]在FMA指令中执行的算术FMA操作可以采取几个形式中的一个,例如:
[0021]r= (x*y) +z ;
[0022]r= (x*y) _z ;
[0023]r=- (x*y)+z;或者
[0024]r=- (x*y)_z。
[0025]在实施例中,压缩FMA指令可以用256-位向量执行八个单精度FMA操作或四个双精度FM操作。当用向量寄存器实现时,标量FM指令可以仅执行低序数据元素上的一个算术操作。保留目的地操作数的较低128-位中的数据元素的剩余内容,而目的地操作数的较高128-位可以用零填充。
[0026]在实施例中,r= (x*y) +z形式的算术FMA操作取两个IEEE-754-2008单(双)精度值并将它们相乘以形成中间值。将此中间值相加到第三个单(双)精度值并进行舍入以生成单(双)精度结果。在不同的实施例中可以实现不同的舍入模式和精度。
[0027]在一实施例中,向量指令可以在各种压缩数据类型表示上执行。这些数据类型可以包括用于128位宽的操作数的压缩字节、压缩字、以及压缩双字(dword)和压缩四字(quadword)。作为示例,压缩字节格式可以是128位长并包含十六个压缩字节数据元素。这里字节定义为8位的数据。每个字节数据元素的信息存储是字节0在位7到位0中、字节I在位15到位8中、字节2在位23到位16中,最后字节15在位120到位127中。然而应理解各实施例同样应用于标量(个别的或非压缩的)表示。
[0028]通常,数据元素是与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的数据的单独部分。在一些压缩数据序列中,存储在寄存器中的数据元素的数目可以是128位除以个别数据元素以位计的长度。尽管数据类型可以是128位长,本发明的各实施例也可以用64位宽或其它大小的操作数来操作。
[0029]可以理解,压缩数据格式可进一步扩展到其它寄存器长度,例如到96-位、160-位、192-位、224-位、256-位或更多。而且,各种有符号和无符号压缩数据类型表示可以根据本发明的一个实施例在多媒体寄存器中处理。且各种类型的标量数据格式也可以根据本发明的一实施例在寄存器文件的寄存器中处理。
[0030]现在参考图1,示出的是根据本发明实施例的一般融合乘加单元的框图。如图1所示,FMA单元10包括乘法器单元15、加法器单元20和舍入器单元30。在图1所示的实施例中,FMA单元10可以配置为在乘法器单元15中接收多个源操作数。在所示的实施例中,可以接收两个源操作数(例如每个64位宽度),但本发明的范围在此方面并不受限。例如,在其它实施例中,源操作数可以是32位或128位的。
[0031]因此,假定源操作数的输入是双精度值的53位尾数,乘法器单元15可以生成有例如106位宽度的乘积。加法器单元20配置为有108位的宽度以适应此传入乘积。而且,加法器单元20还配置为接收附加源操作数,该操作数在一些实施例中也可以是64位的。由此加法器单元20生成可以是106字节的和,该和可以提供给舍入器单元30,该舍入器单元进而生成舍入的输出,例如53位的输出。当然应理解在其它实施例中数据路径可以是不同的大小。
[0032]为了在此硬件上执行融合乘加操作,可以将相对应于系数A和变量B的两个源操作数提供给乘法器单元15。进而,这些值的乘积可以在加法器单元20中与第三源操作数(C)相加以由此获得可以在舍入器单元30中舍入的和。由此结果相对应于AB+C的值。除了执行这样的融合乘加之外, 此硬件还配置为执行乘法器单元15中的乘法并还执行加法器单元20中的其它操作。
[0033]不同类型的指令可以相应地在FM单元10中执行。尽管本发明的范围在此方面并不受限,在一个实施例中这样的指令可以包括双精度FM指令、单精度FM指令和其它双精度和单精度指令。
[0034]现在参考图2,示出的是根据本发明实施例的FMA电路的示意图。如图2中所示,FM电路100包括接收输入数据和执行操作以获得所需结果的各种组件。根据各种实施例,基于输入数据值的一个或多个和/或指令类型,对电路的控制可以通过在电路的一个或多个组件对特定操作不需要时时钟门控该一个或多个组件以减少功率消耗的方式发生。在使用本发明的实施例可得到的具体功率节省技术的讨论之前,提供关于FMA电路100的通用处理流水线的简要讨论。
[0035]如所见,三个传入输入数据值的每一个被提供给相对应存储元素组中的一个。更具体地,在图2的实施例中存在多个触发器105^105”尽管此处所描述的各实施例使用触发器诸如D-类型触发器作为存储元素,应理解本发明的范围在此方面并不受限且在其它实施例中可以使用不同类型的存储元素诸如插销。如所见,将加数输入数据值提供给触发器1052,将被乘数输入数据值提供给触发器105:,并将乘数输入数据值提供给触发器105。。[0036]这些值的每一个进而耦合到FMA电路的附加电路。如所见,将加数提供给对齐电路115,也给异常逻辑119。将乘数和被乘数值通过给乘法器电路110,也给异常逻辑119。在实施例中,对齐电路115可以用于确定加数和被乘数与乘数的乘积之间的指数差异。乘法器电路110用于将乘数和被乘数值相乘以由此生成乘积。在实施例中,可以存在基数-8(radix-8)类型的乘数,但任何类型的乘数都可以使用(诸如其它基数或其它设计)。将来自乘法器电路110的乘积提供给触发器120:,同时将对齐的加数提供给触发器1202。进而可以将这些值在加法器电路125中相加。产生的和通过触发器UO1传递给归一化电路135,电路135可以在所述和上执行归一化操作。此归一化的值可以通过触发器MO1耦合到舍入器电路145,电路145可以执行舍入例如根据在控制寄存器中标识的给定舍入模式或响应于在被执行的指令中标识的舍入模式。这样,将舍入的值提供给选择器150,在选择器150处,假定没有异常经由进入选择器150的异常输入被指示出来,则所述值可以作为结果输出。
[0037]除了此主数据路径之外,存在异常数据路径。如上所述,异常逻辑119接收输入数据值。基于这些数据值和其它信息(诸如各种配置信息等),异常逻辑119可以生成异常,例如由于异常的输入或另一异常条件所致。然后这样的异常指示可以在被提供给选择器150之前通过一系列触发器12(^13(^和MOtl传递。
[0038]由此如图2中所见,存在两个主数据路径:一个用于主FMA计算,一个用于异常情况,例如,如IEEE-754-2008浮点标准所定义的异常情况。在一些实施例中,此旁路路径可以用来降低实现基于数据的时钟门控方案的成本。由此以上讨论描述了从FMA电路的输入到它的输出的数据路径的基本操作。
[0039]除了两个路径之外,FMA电路100包括接收 入数据值的控制逻辑160。逻辑160还可以接收关于相应于给定指令将在FMA电路100中执行的操作的类型的指示。基于此信息,控制逻辑160可以确定,例如由于指令类型或数据的状态,给定指令的正确操作可以不需要主数据路径(和/或异常数据路径)的一个或多个组件。这样,控制逻辑160可以对一个或多个组件提供控制信号以将它们断电。尽管本发明的范围在此方面并不受限,在一实施例中控制逻辑160可以门控到贯穿数据路径的一个或多个触发器的时钟信号以便由此导致这些触发器不活动。以此方式,由于这些触发器不活动,降低了功率消耗。而且,没有了活动的触发器,不存在在其输出处的数据切换,并由此,来自此触发器的下游电路也不切换(且这样的电路的顺序时钟可以不切换),进一步降低功率消耗。尽管本发明在图2的实施例这样高层面地示出,应理解本发明的范围在此方面并不受限。例如,应理解附加结构可以存在于FMA电路中以处理交换、旁路、复用和为对路径的不同点的输入的适当的值的其它选择。关于FMA电路100也应注意电路的数据路径是多级或周期的数据路径从而对将贯穿数据路径处理以获得最终结果的输入有多个处理器时钟周期发生。在图2中示出的具体实施例中,示出了 4-级或周期的电路,然而本发明的范围在此方面并不受限。
[0040]在其中乘数或被乘数的一个或两个等于零的情况下,乘数和被乘数的乘积会是零且最终结果可以通过门控整个FMA电路并将加数直接传递给输出而获得。在乘数和被乘数输入数据值的一个或两个等于零的示例中,事实上主数据路径全部可以门控关闭且加数可以直接传递 给输出。在其中控制逻辑160检测到乘数和被乘数数据值的一个或多个是零(这可以在其中这些值也被提供给触发器105^10?的第一周期中确定)的情况下,可发生以下时钟门控。特别是在指令的第二时钟周期期间,可以门控触发器105。和IOS1同时对触发器1052时钟控制以允许加数通过对齐电路115传递,115切换。注意,因为触发器105。和IOS1是时钟门控的,乘法器电路110不切换。在以下时钟周期中,可以时钟门控触发器UO1和1202且在进一步的时钟周期中也可以时钟门控UO1和MO1,使得加法器125、归一化电路135和舍入器电路145不切换,进一步提供更多的功率节省。为了实施最终结果,可以将加数直接提供给选择器150。加法值的此供应可以经由从触发器1052的输出直接到选择器150的旁路路径(图2中未示出)。或者所述值可以通过异常数据路径传递,异常数据路径包括异常逻辑119和保持时钟控制的触发器UOciUSOc^P 14(V因此在一实施例中加数可以通过此异常数据路径传递到选择器150。
[0041]基于输入数据值的功率控制的另一示例是存在异常输入的情况。当这样的输入(例如信令非数(sNan)、静默非数(qNaN)、无穷和零)存在时,IEEE754标准异常处理规则规定将产生的输出。这些规则通常指定返回常数(例如,(+ - *+⑴))或输入值之一的修改版本。例如,SNaN输入被轻微修改并作为最终乘积返回。在这些异常的情况中,最终结果可以通过对输入值的分析来确定。再次参考图2,可以在这些异常输入的情况中时钟门控触发器120dP 1202和主数据路径的所有下游触发器以由此降低功率消耗。缘于对这些触发器的时钟门控,并且缘于包括加法器125、归一化电路135和舍入器电路145的主数据路径中缺乏输入切换,此功率消耗得以实现。结果可以经由保持时钟控制的异常数据路径获得。如果FMA输入不碰到异常情况,门控也可以在逆情况中完成,且可以门控关闭旁路路径以节省少量功率。
[0042]在其中加数等于零的情况下,可以禁用加数输入并绕过加法器,因为最终结果会只等于乘积。尽管诸如图2中的电路可以执行此控制,在一些实施例中可以存在不同的FMA布置。现在参考图2A,示出的是根据本发明又一实施例的FMA电路的示意图。如图2A中所示,可以将FMA电路100’配置为与FMA电路100的配置类似。然而,注意耦合于加法器125和触发器UO1的下游的选择器128的存在。当加数是零时,可以时钟门控触发器1052,由此允许对齐电路115不切换。而且,可以类似地时钟门控触发器1202。相反,来自乘法器电路110的乘积可以直接从触发器UO1耦合到选择器128以使得此乘积只能通过主数据路径的剩余部分传递而作为结果输出。在其它方面,FMA电路100’可以配置为与图2的电路100的配置类似。`
[0043]又一情况是其中乘数或被乘数正好是2的幂(1.0*2N,其中N是指数,此处指二的幂)并因此计算乘积的乘法器可以门控关闭,且这些情况中可以用移位操作来计算乘积。
[0044]现在参考图3,示出的是根据本发明另一实施例的FMA电路的示意图。如图3中所见,FMA电路100’ ’可以用如图2的FMA电路100基本相同的方式配置。然而在图3的实施例中,提供了附加逻辑电路、选择机制和移位机制以启用附加数据值情况的处理从而能够降低功率消耗。具体地使用图3的电路,其中乘数和被乘数的至少一个是二的幂的情况可以用功率降低的方式处理。
[0045]除了以上图1中所描述的电路之外,FMA电路100’’还包括一对选择器112。和I^1,各自配置为接收乘数和被乘数并响应于控制逻辑160的控制使得这些值中所选择的一个能被提供给移位器114。选择器112:用于选择对移位器的适当输入。因此,移位器114用于将乘数或被乘数中所选择的一个移位N位(向左或向右,取决于输入),其中N是乘数或被乘数中另一个的二的直幂。由此,该移位的值传递给选择器118,该选择器118还接收乘法器电路110的输出。因此,对于乘数/被乘数为二的直幂的情况,当钟门控乘法器电路110时,移位器114的输出由此通过选择器118传递给触发器120i。
[0046]仍参考图3,还应注意AND门108。和IOS1的存在。这些AND门可以接收乘数和被乘数输入值的相对应一个作为输入。而且,这些AND门还接收对触发器IOSc^P IOS1的时钟信号。由此,当这些值不是特殊情况且由此将在乘法器电路110中被操作于其上时,AND门切换并由此将各值传递通过给乘法器电路110。相反在其中存在特殊情况的情景中,例如输入数据值的一个是二的直幂时,这些触发器被时钟门控且由此AND门不切换。在其它方面,发生FMA电路100’ ’的常规操作。在其它方面,FMA电路100’ ’可以配置为与图2的FMA电路100基本相似。
[0047]以上这些示例示出了数据输入驱动的精细粒度时钟门控如何用低的额外开销成本和复杂度来降低FMA ALU内的平均功率。各实施例也可以降低在FMA电路中执行非FMA操作诸如算术操作例如浮点加法和减法、逻辑操作诸如与/或/移位/旋转、整数操作、比较操作和转换操作的功率消耗。为此,FMAALU可以通过基于指令类型时钟门控关闭ALU的部分而对FMA之外的操作以低功率操作。通常在指令在ALU中的实际执行之前已知指令的类型,且因此用指令类型控制时钟门控避免了到时钟门控控制的任何时序路径(timingpath)。
[0048]在一实施例中,为了获得最大的功率降低,ALU内的触发器级可以区分成尽可能多的子群组。图4中示出了对示例4-周期FMA ALU的一个可能的区分。区分包括对三个源(乘数,被乘数,和加数)的每一个将输入触发器拆分成各群组。内部触发器级可以根据功能分割成各群组。例如,相关于浮点指数逻辑的触发器可以拆分成独立的群组,因为这些触发器只需要对浮点操作启用。群组越精细,对操作功率的控制就越大。
[0049]一旦触发器级被区分成各群组,每个群组然后如对每一指令类型所要求地启用或禁用。触发器分群组的精细 粒度允许ALU的显著部分对覆盖于ALU之上的较简单操作停止切换。这样各实施例可以降低这些较简单操作的功率消耗,从而降低执行程序所花费的总体能量。
[0050]如图4中所示,FMA电路200 —般包括与以上各FMA电路类似的结构。然而,存在附加组件以启用将在数据路径内执行的其它操作。在图4的电路中,输入数据值是通过一组触发器205^20?提供的。如所见,将被乘数和乘数提供给乘法器电路210。还应注意将全部三个输入都提供给指数逻辑212和异常逻辑219。此外,可以将全部电路提供给控制逻辑295,该控制逻辑295基于输入数据值和/或在FM电路内执行的指令的类型根据本发明的实施例执行功率控制。对比较指令,诸如浮点比较指令,可以时钟门控对触发器20?的被乘数输入以降低乘法器210内的切换率。此外,可以类似地时钟门控来自触发器270i和2702的输出,由此导致舍入器电路280中没有输入切换。这样,比较的最终结果可以经由选择器26?并通过触发器27(^来获得。
[0051]对乘法指令,诸如整数乘法指令,可以发生甚至更大数量的时钟门控。在这一情况中,可以将经由触发器2052的加数输入连同触发器220^22(^和2204以及触发器24(^-24(^一起时钟门控,这进而使得加法器电路250、前导零预测器260、移位器268和指数逻辑266内无切换。除了时钟门控触发器2701和2702之外,也避免了舍入器电路280中的切换。注意,可以提供来自异常逻辑的路径以将结果传递给输出。[0052]诸如浮点加法和减法的操作按照A*l.0+B或A*l.0-B地输入到FMA电路中。对比较和转换操作发生类似的输入。通常这些操作的大多数不需要执行乘法并通过在输入之一上发送常数(例如,加法的A*l.0+B)来实现。
[0053]如上所述,各实施例可以通过对诸如A*l.0的情况时钟门控关闭对乘法器单元的触发器输入及通过对乘法器单元时钟门控关闭任何内部的和输出触发器来降低这些情况中的功率,这可以降低由指令耗费的动态功率,因为乘法器阵列是大的需求功率的结构,取决于输入数据值通常在FMA ALU中占面积的至少50%和动态功率的大多数。
[0054]数据路径还包括接收来自前一级的值的一组触发器22(^-22(^。触发器2202和2203将输出提供给加法器225,而触发器。。(^提供对指数逻辑226的附加级的输入。进而,触发器220。的输出被提供给选择器230。,而触发器2204的输出被提供给选择器23(^和2302。这些选择器二者还接收加法器225的和输出,该和输出也提供给选择器230。。选择器230i的输出被提供给移位器235,在该移位器235处,这一移位的输出被提供给一组触发器240。-2403中的触发器2402。触发器2402和2403的输出被提供给在归一化过程中使用的另一加法器250和前导零预测器260。进而触发器24(^的输出被提供给选择器265。并且触发器24(^的输出被提供给指数逻辑266的附加级。
[0055]加法器250的和输出被提供给另一移位器268和选择器26?,而前导零预测器260的输出被耦合到控制指数逻辑266和移位器268。移位器268的输出耦合通过触发器2702并耦合到舍入器单元280。指数逻辑266的输出耦合通过触发器270:,该触发器270:的输出用来控制舍入器电路280。耦合了最终选择器290以经由选择器265。和触发器270。接收舍入器电路280的输出和异常路径的输出。尽管在图4的实施例中以这样高层面进行描述,应理解在其它实施例中附加电路可以存在于FM数据路径之内。
[0056]现在参考图5,示出的是根据本发明实施例的又一 FMA电路的示意图。在此实施例中,输入数据值是通过一组触发器305^30?提供的。而且,应注意还通过附加触发器3503耦合了乘数输入值。乘数和被乘数输入数据值耦合到乘法器电路310,乘法器电路310进而输出乘积,该乘积通过触发器335提供`给选择器345。时钟门控和此FMA电路的其它控制可以经由控制逻辑375。
[0057]在其中被乘数是预定值例如1.0的情况中,触发器30?和305i以及乘法器单元310 (和乘积触发器335)都不需要被时钟控制。相反,通过触发器3053和经由选择器325提供的乘数输入数据值可以相反地通过异常旁路触发器330传递进选择器345,选择器345可以被控制来将此直接乘数输入数据值传递给加法器350。加法器350用于将乘数和经由加数触发器340提供给加法器350的加数相加。尽管在图5的实施例中以这样高层面来示出,应理解本发明的范围在此方面并不受限。
[0058]现在参考图6,示出的是根据本发明实施例的方法的流程图。在一实施例中,方法400可以由诸如以上所描述的FMA ALU的控制逻辑来执行。一般而言,此控制逻辑被配置为接收对FMA电路的输入数据值,和对将执行的指令类型的指示。此指示可以是经由指令本身的输入或者可以是从例如指示指令类型的处理器的前端解码器单元接收的指示,指令类型例如FM指令、诸如加法、乘法、比较等的更简单的操作。
[0059]如图6中所见,方法400在框410处通过接收控制逻辑和数据路径二者中的这些输入数据值开始。如上所述,在一些实施例中除了输入数据值之外,控制逻辑还可以接收指令类型指示。
[0060]下一步在菱形框420处可以确定是否输入数据值的至少一个被标识为特殊情况值。这些特殊情况值中的许多以上已经讨论过了,诸如乘数或被乘数有值为零、一、或二的幂,加数为零,或异常的输入。如果存在这样的输入数据值,控制传递到框430,在此可以时钟门控数据路径的一个或多个组件。此外,某些旁路、移位、选择操作也可以执行。这样的操作可以在其它数据输入值的一个或多个在数据路径中被操作之前或者在数据路径的周期中的执行的过程之中发生。如所见,控制传递到框440,在此指令可以被执行并完成以由此输出结果。如果相反地在菱形框420确定了不存在特殊情况,控制直接传递到框440。注意,类似的方法可以由控制逻辑执行以响应于特定指令类型执行时钟门控和其它操作,例如甚至在没有一个输入数据值是特殊情况时。尽管在图6的实施例中以这样高层面来示出,应理解本发明的范围在此方面并不受限。
[0061]各实施例可以在许多不同的系统中实现。例如,各实施例可以在诸如多核处理器的处理器中实施。现在参考图7,示出的是根据本发明一实施例的处理器内核的框图。如图7中所示,处理器内核500可以是多级流水线化的乱序处理器。图7中示出处理器内核500的相对简化的视图以示出根据本发明的实施例在与FM单元的连接中使用的各种特征。
[0062]如图7中所示,内核500包括前端单元510,前端单元510可以用来获取将执行的指令并准备它们以供稍后在处理器中使用。例如,前端单元510可以包括取指单元501、指令高速缓存503和指令解码器505。在一些实施例中,前端单元510还可以包括跟踪高速缓存,以及微代码存储和微操作存储。取指单元501可以例如从存储器或指令高速缓存503获取微指令,并将它们馈送给指令解码器505以将它们解码成原语,诸如用于由处理器执行的微操作。
[0063]耦合于前端单元510和执行单元520之间的是乱序(out-of-order,000)引擎515,乱序引擎515可以用来接收微指令并准备它们用于执行。更具体地,000引擎515可以包括各种缓冲器以将微指令流重排序和分配用于执行所需要的各种资源,并对各种寄存器文件诸如寄存器文件530和扩展寄存器文件535内的存储位置提供逻辑寄存器的重命名。寄存器文件530可以包括用于整数和浮点操作的单独的寄存器文件。扩展寄存器文件535可以提供用于向量大小单元的存储,例如每寄存器256或512位。
[0064]各种资源可以存在于执行单元520中,除了其它专用硬件之外,包括例如各种整数、浮点和单指令多数据(SIMD)逻辑单元。例如,这样的执行单元可以包括一个或多个算术逻辑单元(ALU) 522。而且,FMA单元524可以存在以生成FMA或调度到所述单元的其它指令的最终结果。在各种实施例中,所述单元可以包括控制逻辑以如上所述地时钟门控所述单元的各部分。
[0065]当操作在执行单元内执行于数据之上时,可以将结果提供给引退(retirement)逻辑,即重排序缓冲器(reorder buffer, ROB) 540。更具体地,R0B540可以包括各种阵列和逻辑以接收与执行的指令相关联的信息。然后此信息由R0B540检查以确定指令是否能有效地引退及结果数据是否提交到处理器的结构状态,或阻止指令正确引退的一个或多个异常是否发生。当然,R0B540可以处理与引退相关联的其它操作。
[0066]如图7所示,R0B540耦合到高速缓存550,高速缓存550在一实施例中可以是低级高速缓存(例如LI高速缓存)并还可以包括转换后备缓冲器(translation10kasidebuffer,TLB) 555,但本发明的范围在此方面并不受限。而且,执行单元520可以直接地耦合到高速缓存550。自高速缓存550,可发生到较高级高速缓存、系统存储器等的数据通信。注意,尽管图7的处理器的实现是关于乱序机器(诸如所谓X86ISA架构)的,本发明的范围在此方面并不受限。即,其它实施例可以在依序处理器、精简指令集计算(RISC)处理器(诸如基于ARM的处理器)、或可以经由模拟引擎和相关联的逻辑电路模拟不同ISA指令和操作的另一类型的ISA处理器中实现。
[0067]现在参考图8,示出的是根据本发明实施例的多域处理器的框图。如图8的实施例中所示,处理器600包括多个域。具体地,内核域610可以包括多个内核610Q-610n,图形域620可以包括一个或多个图形引擎,且还可以存在系统代理域650。在各种实施例中,系统代理域650可以以固定的频率执行,并可以一直保持通电以处理功率控制事件和功率管理,从而使得域610和620可以被控制为动态地进入和退出低功率状态。注意,尽管只示出了三个域,应理解本发明的范围在此方面并不受限且附加域可以存在于其它实施例中。例如,可以存在多个内核域,每个内核域包括至少一个内核。
[0068]一般而言,除了各种执行单元(诸如根据本发明实施例的一个或多个FM单元和附加处理元素)之外每个内核610还可以包括低级高速缓存。进而,各种内核可以互相耦合并耦合到由末级高速缓存(LLC)的多个单元成的共享高速缓存存储器。在各种实施例中,LLC650可以在各内核和图形引擎及各种媒体处理电路之间共享。如所见,环互连630由此将各内核耦合到一起,并提供各内核、图形域620和系统代理电路650之间的互连。
[0069]在图8的实施例中,系统代理域650可以包括显示器控制器652,显示器控制器652可以提供对相关联的显示器的控制和接口。如图中还可见,系统代理域650可以包括功率控制单元655,功率控制单元655可以执行所述处理器位于其中的系统的功率管理。
[0070]如图8中还可见,处理器600还可以包括集成存储器控制器GMC)670,670可以提供到系统存储器诸如动态随机存取存储器(DRAM)的接口。可以存在多个接口 GSOtTeSOnW启用处理器和其它电路之间的互连。例如,在一实施例中可以提供至少一个直接媒体接口(DMI)接口和一个或多个快速外围组件互连(PCI Express? (PCIe?))接口。此外,为了提供其它各代理(诸如附加处理器或其它电路)之间的通信,还可以提供根据Intel?快速通道互连(QPI)协议的一个或多个接口。尽管在图8的实施例中以这样高层面示出,应理解本发明的范围在此方面并不受限。
[0071]各实施例可以在许多不同的系统类型中实现。现在参考图9,示出的是根据本发明实施例的系统的框图。如图9中所示,多处理器系统700是点到点互连系统,并包括经由点到点互连750耦合的第一处理器770和第二处理器780。如图9中所示,处理器770和780的每一个都可以是多核处理器,包括第一和第二处理器内核(例如,处理器内核774a和774b及处理器内核784a和784b),尽管处理器中潜在地可以存在多得多的内核。所述内核的每一个可以包括FMA单元,该FMA单元包括时钟门控逻辑以基于一个或多个输入数据值和/或指令类型来执行FM的一个或多个数据路径的各部分的时钟门控,如此处所述。
[0072]仍参考图9,第一处理器770还包括处理器控制器中枢(MCH) 772及点到点(P_P)接口 776和778。类似地,第二处理器780包括MCH782及P-P接口 786和788。如图9中所示,MCH772和782将处理器耦合到相应的存储器,即存储器732和存储器734,其可以是本地附连到相应处理器的系统存储器(例如DRAM)的一部分。第一处理器770和第二处理器780可以分别经由P-P互连752和754耦合到芯片组790。如图9中所示,芯片组790包括 P-P 接口 794 和 798。
[0073]而且,芯片组790包括接口 792以通过P-P互连739将芯片组790耦合到高性能图形引擎738。进而芯片组790可以经由接口 796耦合到第一总线716。如图9中所示,各种输入/输出(I/O)设备714可以和总线桥718 —起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一实施例中,各种设备可以耦合到第二总线720,包括例如键盘/鼠标722、通信设备726和诸如盘驱动器或可以包括代码730的其它大容量存储设备的数据存储单元728。而且,音频1/0724可以耦合到第二总线720。各实施例可以结合进其它类型的系统包括移动设备诸如智能蜂窝电话、平板计算机、上网本等。
[0074]各实施例可以用代码实现并可以存储在有存储与其上的指令的非瞬态存储介质上,所述指令可以用来对系统编程以执行所述指令。存储介质可以包括但不限于任何类型的盘包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(⑶-ROM)、可重写紧致盘(CD-RW)和磁光盘、半导体设备诸如只读存储器(ROM)、随机存取存储器(RAM)诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPR0M)、闪存、电可擦除可编程只读存储器(EEPR0M)、磁卡或光卡,或适用于存储电子指令的任何其它类型的介质。
[0075]尽管参考有限数量的实施例描述了本发明,本领域的技术人员从中可以理解众多修改和变化。所附权利要求书旨在覆盖所有这样落入本发明的真正的精神和范围内的修改和变化。
【权利要求】
1.一种处理器,包括: 内核,其包括执行指令的多个执行单元,所述多个执行单元包括接收多个输入数据值以在所述输入数据值上执行FMA指令的融合乘加(FMA)电路,所述FMA电路包括乘法器单元和耦合到所述乘法器单元的输出的加法器单元,以及控制逻辑,其接收所述多个输入数据值并基于所述多个输入数据值中的至少一个的值门控所述FMA电路的一个或多个组件。
2.如权利要求1所述的处理器,其特征在于,所述FMA电路还包括异常逻辑,所述异常逻辑接收所述多个输入数据值并确定是否要基于上述多个输入数据值中的至少一个发起异常。
3.如权利要求2所述的处理器,其特征在于,响应于所述多个输入数据值中的乘数和所述多个输入数据值中的被乘数中的一个是零,所述控制逻辑将导致所述异常逻辑输出所述多个输入数据值中的加数,同时所述加法器单元和所述乘法器单元被阻止进行切换。
4.如权利要求2所述的处理器,其特征在于,所述异常逻辑将输出相对应于异常值的所述多个输入数据值中所选择的一个,同时所述乘法器单元和所述加法器单元被阻止进行切换。
5.如权利要求1所述的处理器,其特征在于,当所述多个输入数据值中的加数是零时所述控制逻辑将导致所述加法器单元被门控关闭。
6.如权利要求1所述的处理器,其特征在于,当所述多个输入数据值中的乘数或所述多个输入数据值中的被乘数是2N,其中N是整数时,所述控制逻辑将导致所述乘法器单元被门控关闭。
7.如权利要求6所述的处理器,其特征在于,所述FMA电路还包括移位器,所述移位器选择所述乘数和所述被乘数中的一个作为输入并将所述一个移位N位以获得经移位值。`
8.如权利要求7所述的处理器,其特征在于,所述加法器单元将所述多个输入数据值中的加数与所述经移位值相加以获得和。
9.如权利要求1所述的处理器,其特征在于,所述控制逻辑将接收将在所述FMA电路中执行的指令类型并基于所述指令类型门控所述FM电路的至少一个组件。
10.如权利要求1所述的处理器,其特征在于,所述FMA电路还包括: 多个第一选择器,其耦合为从所述乘法器单元接收乘积; 移位器,其耦合到所述多个第一选择器的第一个的输出; 第一存储元素,其耦合到所述多个第一选择器的第二个; 第二存储元素,其耦合到所述多个第一选择器的第三个; 耦合到所述移位器的输出的第三存储元素,其中所述乘积由所述多个第一选择器的所述第一个输出到所述第一存储元素,且所述第二和第三存储元素在乘法指令的执行过程中被时钟门控。
11.如权利要求1所述的方法,其特征在于,所述FMA电路还包括: 第一组存储元素,包括用以接收所述多个输入数据值中的乘数的第一存储元素和第四存储元素、用以接收所述多个输入数据值中的被乘数的第二存储元素和用以接收所述多个输入数据值中的加数的第三存储元素,其中当所述被乘数等于一时所述第一和第二存储元素被时钟门控。
12.如权利要求11所述的处理器,其特征在于,当所述被乘数等于一时所述控制逻辑将阻止所述乘法器单元的顺序时钟进行切换,所述多个输入数据值中的所述乘数将从所述第四存储元素路由到所述加法器单元用于与所述多个输入数据值中的所述加数相加。
13.—种方法,包括: 接收与将在处理器的算术逻辑单元(ALU)中执行的操作相关联的多个输入数据值,所述ALU包括乘法器电路和加法器电路; 在所述处理器的控制逻辑中确定是否所述多个输入数据值中的至少一个是第一类型;以及 响应于确定所述多个输入数据值中的至少一个是所述第一类型,禁用所述乘法器电路和所述加法器电路中的至少一个,并在所述ALU中执行操作以生成结果。
14.如权利要求13所述的方法,其特征在于,禁用所述乘法器电路和所述加法器电路中的所述至少一个包括时钟门控耦合到所述乘法器电路和所述加法器电路中的所述至少一个的输入的存储兀素。
15.如权利要求13所述的方法,其特征在于,当被乘数输入数据值和乘数输入数据值中的至少一个等于第一值时,禁用所述乘法器电路和所述加法器电路,并将加数输入数据值提供给所述ALU的输出以生成所述结果。
16.如权利要求13所述的方法,其特征在于,当被乘数输入数据值和乘数输入数据值中的一个等于第二值时,禁用所述乘法器电路并将所述被乘数输入值和所述乘数输入数据值中的另外一个的值移位所选择的位数,并将所述经移位值与加数输入数据值相加以生成所述结果,其中所选择的位数基于所述乘数输入数据值和所述被乘数输入数据值中的所述一个。
17.如权利要求13所述的方法,其特征在于,当被乘数输入数据值和乘数输入数据值中的一个等于第三值时,禁用所述乘法器电路并将所述被乘数输入数据值和所述乘数输入数据值中的另一个与加数输入数据值相加以生成所述结果。
18.如权利要求13所述的方法,其特征在于,当所述多个输入数据值中的至少一个是异常情况时,禁用所述乘法器电路和所述加法器电路,并在所述ALU的异常数据路径中生成所述结果。
19.一种系统,包括: 多核处理器,其包括多个内核,所述内核中的至少一个包括有主数据路径和异常数据路径的融合乘加(FMA)电路,以及控制逻辑,其耦合到所述FMA电路以响应于第一类型的输入数据值的输入禁用所述主数据路径的至少一部分,所述FM电路生成与包括所述第一类型的输入数据值的多个输入数据值相关联的指令的结果,其中所述主数据路径包括第一级存储元素,该存储元素各自接收所述多个输入数据值中的一个、将第一输入数据值和第二输入数据值相乘的乘法器电路、第二级存储元素,其中的至少一个耦合到所述乘法器电路的输出、和将第三输入数据值与所选择的数据值相加的加法器电路;以及 耦合到所述多核处理器的动态随机存取存储器(DRAM)。
20.如权利要求19所述的系统,其特征在于,所述控制逻辑还将响应于所述指令的类型禁用至少所述主数据路径。
21.如权利要求19所述的系统,其特征在于,当所述第一和第二输入数据值中的至少一个等于零时,所述控制逻辑将禁用所述第一级存储元素中的第一和第二个。
22.如权利要求19所述的系统,其特征在于,当所述第一和第二输入数据值中的至少一个等于零时,所述控制逻辑将导致所述第三输入数据值从所述异常数据路径输出。
23.如权利要求19所述的系统,其特征在于,所述第一级存储元素包括接收所述第一输入数据值的第一存储元素和第四存储元素、接收所述第二输入数据值的第二存储元素和接收所述第三输入数据值的第三存储元素,其中当所述第二输入数据值等于一时所述第一和第二存储元素将被时钟门控。`
【文档编号】G06F15/163GK103793203SQ201310534213
【公开日】2014年5月14日 申请日期:2013年10月31日 优先权日:2012年10月31日
【发明者】B·J·希克曼, D·R·布拉德福德, T·D·弗莱切 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1