CN103793203B - 响应于输入数据值降低fma单元中的功率消耗 - Google Patents
响应于输入数据值降低fma单元中的功率消耗 Download PDFInfo
- Publication number
- CN103793203B CN103793203B CN201310534213.8A CN201310534213A CN103793203B CN 103793203 B CN103793203 B CN 103793203B CN 201310534213 A CN201310534213 A CN 201310534213A CN 103793203 B CN103793203 B CN 103793203B
- Authority
- CN
- China
- Prior art keywords
- input data
- data values
- multiplier
- unit
- fma
- 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.)
- Active
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/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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
-
- 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
-
- 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
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
公开了响应于输入数据值降低FMA单元中的功率消耗的技术。在实施例中,融合乘加(FMA)电路被配置为接收多个输入数据值以执行所述输入数据值上的FMA指令。所述电路包括乘法器单元和耦合到所述乘法器单元的输出的加法器单元,和控制逻辑,其接收所述输入数据值并降低切换活动,并由此基于所述输入数据值中的一个或多个的值降低所述电路的一个或多个组件的功率消耗。对其他实施例也予以描述并要求保护。
Description
背景技术
处理器中一个常见的执行单元是融合乘加(FMA)单元。一般而言,FMA单元可以执行在三个传入操作数上首先将操作数中的两个相乘然后将乘积与第三个数累积的操作。更具体地,FMA算术逻辑单元(ALU)被设计为计算A*B+C,其中A、B和C是任意值。通常A称为乘数输入,B称为被乘数输入,且C称为加数输入。最新的FMA ALU将通电和操作设计在同一功率水平而不管呈交给FMA ALU的数据输入如何。这会导致过度的功率消耗,特别是因为FMA的乘法单元是高功率消耗件。
一些处理器使用这样的单元,通过对第三个操作数的适当选择或经由选择电路路由操作数和结果而执行更多的简单数学操作诸如加法、减法和乘法。因此,在许多处理器中FMA单元可以构成执行单元的骨干,并可以是用以确定处理器的频率、功率和面积的关键电路。
之前用来降低FMA单元平均功率的解决方案通常关注于降低覆盖于FMA ALU之上的较简单操作的功率,此举往往是通过将这些覆盖操作放置进独立于FMA ALU的单独的浮点ALU中。这允许FMA ALU对这些较简单操作断电,从而降低这些情况下的功率消耗。然而就面积和泄漏功率而言这很昂贵,因此不是理想的解决方案。而且,这个解决方案不能节省用于FMA指令执行的功率。
附图说明
图1是根据本发明实施例的一般融合乘加(FMA)单元的框图。
图2是根据本发明实施例的FMA电路的示意图。
图2A是根据本发明另一实施例的FMA电路的示意图。
图3是根据本发明另一实施例的FMA电路的示意图。
图4是根据本发明另一实施例的FMA电路的示意图。
图5是根据本发明实施例的又一FMA电路的示意图。
图6是根据本发明实施例的方法的流程图。
图7是根据本发明一实施例的处理器核的框图。
图8是根据本发明实施例的多域处理器的框图。
图9是根据本发明实施例的系统的框图。
具体实施方式
在各种实施例中,FMA电路的功率消耗可以基于对输入数据值的一个或多个和/或将在电路中执行的指令的分析来控制并降低。例如,对许多数据输入,答案或者是显而易见地已知或者可以用更功率有效的方式计算出。作为一个示例,如果乘数和被乘数输入中一个或两个都是零,那么FMA计算的结果就是显而易见地等于加数。因此为了节省功率,至少部分的FMA单元可以经由时钟门控断电且加数直接旁路到输出。
而且,更复杂的优化是可能的。以其中被乘数是2的直幂(例如,1.0×21=2)的情况来说。在这个情况下,计算乘积的乘法器单元可以使用时钟门控来门控关掉,且可以使用移位操作来计算乘积,从而节省在电路的乘法器单元中消耗的大量功率。这样,基于数据输入自身的优化可以用来控制时钟门控和旁路路径以实现有效的操作。
而且,许多操作覆盖在FMA ALU内的主FMA数据路径之上以便重用尽可能多的数据路径。这些操作可以包括简单算术操作(诸如乘法、加法和减法)、逻辑操作(诸如AND/OR/移位/旋转)、最小函数、最大函数、整数操作、比较操作和转换操作(诸如浮点到整数转换、整数到浮点转换、双精度到单精度和单精度到双精度转换)。各实施例可以对这些操作执行输入数据驱动的时钟门控以在FMA单元内节省额外的平均功率。
各实施例可以由此实现精细粒度的、经由相关联的控制和多路复用逻辑所控制的时钟门控,以在检测到这些特殊数据输入和/或指令类型时降低平均功率。以此方式,包括融合乘加操作即AB+C操作的各操作可以更有效地执行。一般而言,FMA单元包括乘法器和加法器,还包括单个舍入器。此FMA单元可以有相对宽的数据宽度以适应有较宽宽度的操作数,诸如向量大小的值。例如,在一实施例中,此FMA单元可以接收64-位操作数并在其上执行FMA操作。
尽管本发明的范围在此方面并不受限,在许多实现中FMA单元可以执行浮点乘法累加操作并与给定格式的操作数相容,该操作数例如为给定电气和电子工程师协会(IEEE)标准的,诸如关于浮点(FP)算术的IEEE标准754-2008(2008年公布)的操作数。此外,可以使用给定实现来处理各种类型的传入数据,包括可以是单和双精度浮点格式的操作数。
在一实施例中,FMA指令句法可以使用三个源操作数定义,其中第一源操作数基于数据元素的算术操作的结果而更新。这样,第一源操作数也可以是目的地操作数。例如,可以存在opcode、x1、x2、x3的指令格式,其中opcode相对应于执行给定算术操作的多个用户级FMA或其它指令中的一个,且x1-x3相对应于在将该操作中处理的操作数。
在FMA指令中执行的算术FMA操作可以采取几个形式中的一个,例如:
r=(x*y)+z;
r=(x*y)-z;
r=-(x*y)+z;或者
r=-(x*y)-z。
在实施例中,压缩FMA指令可以用256-位向量执行八个单精度FMA操作或四个双精度FMA操作。当用向量寄存器实现时,标量FMA指令可以仅执行低序数据元素上的一个算术操作。保留目的地操作数的较低128-位中的数据元素的剩余内容,而目的地操作数的较高128-位可以用零填充。
在实施例中,r=(x*y)+z形式的算术FMA操作取两个IEEE-754-2008单(双)精度值并将它们相乘以形成中间值。将此中间值相加到第三个单(双)精度值并进行舍入以生成单(双)精度结果。在不同的实施例中可以实现不同的舍入模式和精度。
在一实施例中,向量指令可以在各种压缩数据类型表示上执行。这些数据类型可以包括用于128位宽的操作数的压缩字节、压缩字、以及压缩双字(dword)和压缩四字(quadword)。作为示例,压缩字节格式可以是128位长并包含十六个压缩字节数据元素。这里字节定义为8位的数据。每个字节数据元素的信息存储是字节0在位7到位0中、字节1在位15到位8中、字节2在位23到位16中,最后字节15在位120到位127中。然而应理解各实施例同样应用于标量(个别的或非压缩的)表示。
通常,数据元素是与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的数据的单独部分。在一些压缩数据序列中,存储在寄存器中的数据元素的数目可以是128位除以个别数据元素以位计的长度。尽管数据类型可以是128位长,本发明的各实施例也可以用64位宽或其它大小的操作数来操作。
可以理解,压缩数据格式可进一步扩展到其它寄存器长度,例如到96-位、160-位、192-位、224-位、256-位或更多。而且,各种有符号和无符号压缩数据类型表示可以根据本发明的一个实施例在多媒体寄存器中处理。且各种类型的标量数据格式也可以根据本发明的一实施例在寄存器文件的寄存器中处理。
现在参考图1,示出的是根据本发明实施例的一般融合乘加单元的框图。如图1所示,FMA单元10包括乘法器单元15、加法器单元20和舍入器单元30。在图1所示的实施例中,FMA单元10可以配置为在乘法器单元15中接收多个源操作数。在所示的实施例中,可以接收两个源操作数(例如每个64位宽度),但本发明的范围在此方面并不受限。例如,在其它实施例中,源操作数可以是32位或128位的。
因此,假定源操作数的输入是双精度值的53位尾数,乘法器单元15可以生成有例如106位宽度的乘积。加法器单元20配置为有108位的宽度以适应此传入乘积。而且,加法器单元20还配置为接收附加源操作数,该操作数在一些实施例中也可以是64位的。由此加法器单元20生成可以是106字节的和,该和可以提供给舍入器单元30,该舍入器单元进而生成舍入的输出,例如53位的输出。当然应理解在其它实施例中数据路径可以是不同的大小。
为了在此硬件上执行融合乘加操作,可以将相对应于系数A和变量B的两个源操作数提供给乘法器单元15。进而,这些值的乘积可以在加法器单元20中与第三源操作数(C)相加以由此获得可以在舍入器单元30中舍入的和。由此结果相对应于AB+C的值。除了执行这样的融合乘加之外,此硬件还配置为执行乘法器单元15中的乘法并还执行加法器单元20中的其它操作。
不同类型的指令可以相应地在FMA单元10中执行。尽管本发明的范围在此方面并不受限,在一个实施例中这样的指令可以包括双精度FMA指令、单精度FMA指令和其它双精度和单精度指令。
现在参考图2,示出的是根据本发明实施例的FMA电路的示意图。如图2中所示,FMA电路100包括接收输入数据和执行操作以获得所需结果的各种组件。根据各种实施例,基于输入数据值的一个或多个和/或指令类型,对电路的控制可以通过在电路的一个或多个组件对特定操作不需要时时钟门控该一个或多个组件以减少功率消耗的方式发生。在使用本发明的实施例可得到的具体功率节省技术的讨论之前,提供关于FMA电路100的通用处理流水线的简要讨论。
如所见,三个传入输入数据值的每一个被提供给相对应存储元件组中的一个。更具体地,在图2的实施例中存在多个触发器1050-1052。尽管此处所描述的各实施例使用触发器诸如D-类型触发器作为存储元件,应理解本发明的范围在此方面并不受限且在其它实施例中可以使用不同类型的存储元件诸如插销。如所见,将加数输入数据值提供给触发器1052,将被乘数输入数据值提供给触发器1051,并将乘数输入数据值提供给触发器1050。
这些值的每一个进而耦合到FMA电路的附加电路。如所见,将加数提供给对齐电路115,也给异常逻辑119。将乘数和被乘数值通过给乘法器电路110,也给异常逻辑119。在实施例中,对齐电路115可以用于确定加数和被乘数与乘数的乘积之间的指数差异。乘法器电路110用于将乘数和被乘数值相乘以由此生成乘积。在实施例中,可以存在基数-8(radix-8)类型的乘数,但任何类型的乘数都可以使用(诸如其它基数或其它设计)。将来自乘法器电路110的乘积提供给触发器1201,同时将对齐的加数提供给触发器1202。进而可以将这些值在加法器电路125中相加。产生的和通过触发器1301传递给归一化电路135,电路135可以在所述和上执行归一化操作。此归一化的值可以通过触发器1401耦合到舍入器电路145,电路145可以执行舍入例如根据在控制寄存器中标识的给定舍入模式或响应于在被执行的指令中标识的舍入模式。这样,将舍入的值提供给选择器150,在选择器150处,假定没有异常经由进入选择器150的异常输入被指示出来,则所述值可以作为结果输出。
除了此主数据路径之外,存在异常数据路径。如上所述,异常逻辑119接收输入数据值。基于这些数据值和其它信息(诸如各种配置信息等),异常逻辑119可以生成异常,例如由于异常的输入或另一异常条件所致。然后这样的异常指示可以在被提供给选择器150之前通过一系列触发器1200、1300和1400传递。
由此如图2中所见,存在两个主数据路径:一个用于主FMA计算,一个用于异常情况,例如,如IEEE-754-2008浮点标准所定义的异常情况。在一些实施例中,此旁路路径可以用来降低实现基于数据的时钟门控方案的成本。由此以上讨论描述了从FMA电路的输入到它的输出的数据路径的基本操作。
除了两个路径之外,FMA电路100包括接收传入数据值的控制逻辑160。逻辑160还可以接收关于相应于给定指令将在FMA电路100中执行的操作的类型的指示。基于此信息,控制逻辑160可以确定,例如由于指令类型或数据的状态,给定指令的正确操作可以不需要主数据路径(和/或异常数据路径)的一个或多个组件。这样,控制逻辑160可以对一个或多个组件提供控制信号以将它们断电。尽管本发明的范围在此方面并不受限,在一实施例中控制逻辑160可以门控到贯穿数据路径的一个或多个触发器的时钟信号以便由此导致这些触发器不活动。以此方式,由于这些触发器不活动,降低了功率消耗。而且,没有了活动的触发器,不存在在其输出处的数据切换,并由此,来自此触发器的下游电路也不切换(且这样的电路的顺序时钟可以不切换),进一步降低功率消耗。尽管本发明在图2的实施例这样高层面地示出,应理解本发明的范围在此方面并不受限。例如,应理解附加结构可以存在于FMA电路中以处理交换、旁路、复用和为对路径的不同点的输入的适当的值的其它选择。关于FMA电路100也应注意电路的数据路径是多级或周期的数据路径从而对将贯穿数据路径处理以获得最终结果的输入有多个处理器时钟周期发生。在图2中示出的具体实施例中,示出了4-级或周期的电路,然而本发明的范围在此方面并不受限。
在其中乘数或被乘数的一个或两个等于零的情况下,乘数和被乘数的乘积会是零且最终结果可以通过门控整个FMA电路并将加数直接传递给输出而获得。在乘数和被乘数输入数据值的一个或两个等于零的示例中,事实上主数据路径全部可以门控关闭且加数可以直接传递给输出。在其中控制逻辑160检测到乘数和被乘数数据值的一个或多个是零(这可以在其中这些值也被提供给触发器1050-1052的第一周期中确定)的情况下,可发生以下时钟门控。特别是在指令的第二时钟周期期间,可以门控触发器1050和1051同时对触发器1052时钟控制以允许加数通过对齐电路115传递,115切换。注意,因为触发器1050和1051是时钟门控的,乘法器电路110不切换。在以下时钟周期中,可以时钟门控触发器1201和1202且在进一步的时钟周期中也可以时钟门控1301和1401,使得加法器125、归一化电路135和舍入器电路145不切换,进一步提供更多的功率节省。为了实施最终结果,可以将加数直接提供给选择器150。加法值的此供应可以经由从触发器1052的输出直接到选择器150的旁路路径(图2中未示出)。或者所述值可以通过异常数据路径传递,异常数据路径包括异常逻辑119和保持时钟控制的触发器1200、1300和1400。因此在一实施例中加数可以通过此异常数据路径传递到选择器150。
基于输入数据值的功率控制的另一示例是存在异常输入的情况。当这样的输入(例如信令非数(sNan)、静默非数(qNaN)、无穷和零)存在时,IEEE754标准异常处理规则规定将产生的输出。这些规则通常指定返回常数(例如,(+∞*+∞))或输入值之一的修改版本。例如,sNaN输入被轻微修改并作为最终乘积返回。在这些异常的情况中,最终结果可以通过对输入值的分析来确定。再次参考图2,可以在这些异常输入的情况中时钟门控触发器1201和1202和主数据路径的所有下游触发器以由此降低功率消耗。缘于对这些触发器的时钟门控,并且缘于包括加法器125、归一化电路135和舍入器电路145的主数据路径中缺乏输入切换,此功率消耗得以实现。结果可以经由保持时钟控制的异常数据路径获得。如果FMA输入不碰到异常情况,门控也可以在逆情况中完成,且可以门控关闭旁路路径以节省少量功率。
在其中加数等于零的情况下,可以禁用加数输入并绕过加法器,因为最终结果会只等于乘积。尽管诸如图2中的电路可以执行此控制,在一些实施例中可以存在不同的FMA布置。现在参考图2A,示出的是根据本发明又一实施例的FMA电路的示意图。如图2A中所示,可以将FMA电路100'配置为与FMA电路100的配置类似。然而,注意耦合于加法器125和触发器1201的下游的选择器128的存在。当加数是零时,可以时钟门控触发器1052,由此允许对齐电路115不切换。而且,可以类似地时钟门控触发器1202。相反,来自乘法器电路110的乘积可以直接从触发器1201耦合到选择器128以使得此乘积只能通过主数据路径的剩余部分传递而作为结果输出。在其它方面,FMA电路100'可以配置为与图2的电路100的配置类似。
又一情况是其中乘数或被乘数正好是2的幂(1.0*2N,其中N是指数,此处指二的幂)并因此计算乘积的乘法器可以门控关闭,且这些情况中可以用移位操作来计算乘积。
现在参考图3,示出的是根据本发明另一实施例的FMA电路的示意图。如图3中所见,FMA电路100”可以用如图2的FMA电路100基本相同的方式配置。然而在图3的实施例中,提供了附加逻辑电路、选择机制和移位机制以启用附加数据值情况的处理从而能够降低功率消耗。具体地使用图3的电路,其中乘数和被乘数的至少一个是二的幂的情况可以用功率降低的方式处理。
除了以上图1中所描述的电路之外,FMA电路100”还包括一对选择器1120和1121,各自配置为接收乘数和被乘数并响应于控制逻辑160的控制使得这些值中所选择的一个能被提供给移位器114。选择器1121用于选择对移位器的适当输入。因此,移位器114用于将乘数或被乘数中所选择的一个移位N位(向左或向右,取决于输入),其中N是乘数或被乘数中另一个的二的直幂。由此,该移位的值传递给选择器118,该选择器118还接收乘法器电路110的输出。因此,对于乘数/被乘数为二的直幂的情况,当钟门控乘法器电路110时,移位器114的输出由此通过选择器118传递给触发器1201。
仍参考图3,还应注意AND门1080和1081的存在。这些AND门可以接收乘数和被乘数输入值的相对应一个作为输入。而且,这些AND门还接收对触发器1050和1051的时钟信号。由此,当这些值不是特殊情况且由此将在乘法器电路110中被操作于其上时,AND门切换并由此将各值传递通过给乘法器电路110。相反在其中存在特殊情况的情景中,例如输入数据值的一个是二的直幂时,这些触发器被时钟门控且由此AND门不切换。在其它方面,发生FMA电路100”的常规操作。在其它方面,FMA电路100”可以配置为与图2的FMA电路100基本相似。
以上这些示例示出了数据输入驱动的精细粒度时钟门控如何用低的额外开销成本和复杂度来降低FMA ALU内的平均功率。各实施例也可以降低在FMA电路中执行非FMA操作诸如算术操作例如浮点加法和减法、逻辑操作诸如与/或/移位/旋转、整数操作、比较操作和转换操作的功率消耗。为此,FMA ALU可以通过基于指令类型时钟门控关闭ALU的部分而对FMA之外的操作以低功率操作。通常在指令在ALU中的实际执行之前已知指令的类型,且因此用指令类型控制时钟门控避免了到时钟门控控制的任何时序路径(timing path)。
在一实施例中,为了获得最大的功率降低,ALU内的触发器级可以区分成尽可能多的子群组。图4中示出了对示例4-周期FMA ALU的一个可能的区分。区分包括对三个源(乘数,被乘数,和加数)的每一个将输入触发器拆分成各群组。内部触发器级可以根据功能分割成各群组。例如,相关于浮点指数逻辑的触发器可以拆分成独立的群组,因为这些触发器只需要对浮点操作启用。群组越精细,对操作功率的控制就越大。
一旦触发器级被区分成各群组,每个群组然后如对每一指令类型所要求地启用或禁用。触发器分群组的精细粒度允许ALU的显著部分对覆盖于ALU之上的较简单操作停止切换。这样各实施例可以降低这些较简单操作的功率消耗,从而降低执行程序所花费的总体能量。
如图4中所示,FMA电路200一般包括与以上各FMA电路类似的结构。然而,存在附加组件以启用将在数据路径内执行的其它操作。在图4的电路中,输入数据值是通过一组触发器2050-2052提供的。如所见,将被乘数和乘数提供给乘法器电路210。还应注意将全部三个输入都提供给指数逻辑212和异常逻辑219。此外,可以将全部电路提供给控制逻辑295,该控制逻辑295基于输入数据值和/或在FMA电路内执行的指令的类型根据本发明的实施例执行功率控制。对比较指令,诸如浮点比较指令,可以时钟门控对触发器2050的被乘数输入以降低乘法器210内的切换率。此外,可以类似地时钟门控来自触发器2701和2702的输出,由此导致舍入器电路280中没有输入切换。这样,比较的最终结果可以经由选择器2650并通过触发器2700来获得。
对乘法指令,诸如整数乘法指令,可以发生甚至更大数量的时钟门控。在这一情况中,可以将经由触发器2052的加数输入连同触发器2200、2201和2204以及触发器2401-2403一起时钟门控,这进而使得加法器电路250、前导零预测器260、移位器268和指数逻辑266内无切换。除了时钟门控触发器2701和2702之外,也避免了舍入器电路280中的切换。注意,可以提供来自异常逻辑的路径以将结果传递给输出。
诸如浮点加法和减法的操作按照A*1.0+B或A*1.0–B地输入到FMA电路中。对比较和转换操作发生类似的输入。通常这些操作的大多数不需要执行乘法并通过在输入之一上发送常数(例如,加法的A*1.0+B)来实现。
如上所述,各实施例可以通过对诸如A*1.0的情况时钟门控关闭对乘法器单元的触发器输入及通过对乘法器单元时钟门控关闭任何内部的和输出触发器来降低这些情况中的功率,这可以降低由指令耗费的动态功率,因为乘法器阵列是大的需求功率的结构,取决于输入数据值通常在FMA ALU中占面积的至少50%和动态功率的大多数。
数据路径还包括接收来自前一级的值的一组触发器2200-2204。触发器2202和2203将输出提供给加法器225,而触发器2201提供对指数逻辑226的附加级的输入。进而,触发器2200的输出被提供给选择器2300,而触发器2204的输出被提供给选择器2301和2302。这些选择器二者还接收加法器225的和输出,该和输出也提供给选择器2300。选择器2301的输出被提供给移位器235,在该移位器235处,这一移位的输出被提供给一组触发器2400-2403中的触发器2402。触发器2402和2403的输出被提供给在归一化过程中使用的另一加法器250和前导零预测器260。进而触发器2400的输出被提供给选择器2650并且触发器2401的输出被提供给指数逻辑266的附加级。
加法器250的和输出被提供给另一移位器268和选择器2650,而前导零预测器260的输出被耦合到控制指数逻辑266和移位器268。移位器268的输出耦合通过触发器2702并耦合到舍入器单元280。指数逻辑266的输出耦合通过触发器2701,该触发器2701的输出用来控制舍入器电路280。耦合了最终选择器290以经由选择器2650和触发器2700接收舍入器电路280的输出和异常路径的输出。尽管在图4的实施例中以这样高层面进行描述,应理解在其它实施例中附加电路可以存在于FMA数据路径之内。
现在参考图5,示出的是根据本发明实施例的又一FMA电路的示意图。在此实施例中,输入数据值是通过一组触发器3050-3052提供的。而且,应注意还通过附加触发器3053耦合了乘数输入值。乘数和被乘数输入数据值耦合到乘法器电路310,乘法器电路310进而输出乘积,该乘积通过触发器335提供给选择器345。时钟门控和此FMA电路的其它控制可以经由控制逻辑375。
在其中被乘数是预定值例如1.0的情况中,触发器3050和3051以及乘法器单元310(和乘积触发器335)都不需要被时钟控制。相反,通过触发器3053和经由选择器325提供的乘数输入数据值可以相反地通过异常旁路触发器330传递进选择器345,选择器345可以被控制来将此直接乘数输入数据值传递给加法器350。加法器350用于将乘数和经由加数触发器340提供给加法器350的加数相加。尽管在图5的实施例中以这样高层面来示出,应理解本发明的范围在此方面并不受限。
现在参考图6,示出的是根据本发明实施例的方法的流程图。在一实施例中,方法400可以由诸如以上所描述的FMA ALU的控制逻辑来执行。一般而言,此控制逻辑被配置为接收对FMA电路的输入数据值,和对将执行的指令类型的指示。此指示可以是经由指令本身的输入或者可以是从例如指示指令类型的处理器的前端解码器单元接收的指示,指令类型例如FMA指令、诸如加法、乘法、比较等的更简单的操作。
如图6中所见,方法400在框410处通过接收控制逻辑和数据路径二者中的这些输入数据值开始。如上所述,在一些实施例中除了输入数据值之外,控制逻辑还可以接收指令类型指示。
下一步在菱形框420处可以确定是否输入数据值的至少一个被标识为特殊情况值。这些特殊情况值中的许多以上已经讨论过了,诸如乘数或被乘数有值为零、一、或二的幂,加数为零,或异常的输入。如果存在这样的输入数据值,控制传递到框430,在此可以时钟门控数据路径的一个或多个组件。此外,某些旁路、移位、选择操作也可以执行。这样的操作可以在其它数据输入值的一个或多个在数据路径中被操作之前或者在数据路径的周期中的执行的过程之中发生。如所见,控制传递到框440,在此指令可以被执行并完成以由此输出结果。如果相反地在菱形框420确定了不存在特殊情况,控制直接传递到框440。注意,类似的方法可以由控制逻辑执行以响应于特定指令类型执行时钟门控和其它操作,例如甚至在没有一个输入数据值是特殊情况时。尽管在图6的实施例中以这样高层面来示出,应理解本发明的范围在此方面并不受限。
各实施例可以在许多不同的系统中实现。例如,各实施例可以在诸如多核处理器的处理器中实施。现在参考图7,示出的是根据本发明一实施例的处理器核的框图。如图7中所示,处理器核500可以是多级流水线化的乱序处理器。图7中示出处理器核500的相对简化的视图以示出根据本发明的实施例在与FMA单元的连接中使用的各种特征。
如图7中所示,核500包括前端单元510,前端单元510可以用来获取将执行的指令并准备它们以供稍后在处理器中使用。例如,前端单元510可以包括取指单元501、指令高速缓存503和指令解码器505。在一些实施例中,前端单元510还可以包括跟踪高速缓存,以及微代码存储和微操作存储。取指单元501可以例如从存储器或指令高速缓存503获取微指令,并将它们馈送给指令解码器505以将它们解码成原语,诸如用于由处理器执行的微操作。
耦合于前端单元510和执行单元520之间的是乱序(out-of-order,OOO)引擎515,乱序引擎515可以用来接收微指令并准备它们用于执行。更具体地,OOO引擎515可以包括各种缓冲器以将微指令流重排序和分配用于执行所需要的各种资源,并对各种寄存器文件诸如寄存器文件530和扩展寄存器文件535内的存储位置提供逻辑寄存器的重命名。寄存器文件530可以包括用于整数和浮点操作的单独的寄存器文件。扩展寄存器文件535可以提供用于向量大小单元的存储,例如每寄存器256或512位。
各种资源可以存在于执行单元520中,除了其它专用硬件之外,包括例如各种整数、浮点和单指令多数据(SIMD)逻辑单元。例如,这样的执行单元可以包括一个或多个算术逻辑单元(ALU)522。而且,FMA单元524可以存在以生成FMA或调度到所述单元的其它指令的最终结果。在各种实施例中,所述单元可以包括控制逻辑以如上所述地时钟门控所述单元的各部分。
当操作在执行单元内执行于数据之上时,可以将结果提供给引退(retirement)逻辑,即重排序缓冲器(reorder buffer,ROB)540。更具体地,ROB 540可以包括各种阵列和逻辑以接收与执行的指令相关联的信息。然后此信息由ROB 540检查以确定指令是否能有效地引退及结果数据是否提交到处理器的结构状态,或阻止指令正确引退的一个或多个异常是否发生。当然,ROB540可以处理与引退相关联的其它操作。
如图7所示,ROB 540耦合到高速缓存550,高速缓存550在一实施例中可以是低级高速缓存(例如L1高速缓存)并还可以包括转换后备缓冲器(translationlookasidebuffer,TLB)555,但本发明的范围在此方面并不受限。而且,执行单元520可以直接地耦合到高速缓存550。自高速缓存550,可发生到较高级高速缓存、系统存储器等的数据通信。注意,尽管图7的处理器的实现是关于乱序机器(诸如所谓x86ISA架构)的,本发明的范围在此方面并不受限。即,其它实施例可以在依序处理器、精简指令集计算(RISC)处理器(诸如基于ARM的处理器)、或可以经由模拟引擎和相关联的逻辑电路模拟不同ISA指令和操作的另一类型的ISA处理器中实现。
现在参考图8,示出的是根据本发明实施例的多域处理器的框图。如图8的实施例中所示,处理器600包括多个域。具体地,核域610可以包括多个核6100-610n,图形域620可以包括一个或多个图形引擎,且还可以存在系统代理域650。在各种实施例中,系统代理域650可以以固定的频率执行,并可以一直保持通电以处理功率控制事件和功率管理,从而使得域610和620可以被控制为动态地进入和退出低功率状态。注意,尽管只示出了三个域,应理解本发明的范围在此方面并不受限且附加域可以存在于其它实施例中。例如,可以存在多个核域,每个核域包括至少一个核。
一般而言,除了各种执行单元(诸如根据本发明实施例的一个或多个FMA单元和附加处理元素)之外每个核610还可以包括低级高速缓存。进而,各种核可以互相耦合并耦合到由末级高速缓存(LLC)的多个单元6400-640n构成的共享高速缓存存储器。在各种实施例中,LLC 650可以在各核和图形引擎及各种媒体处理电路之间共享。如所见,环互连630由此将各核耦合到一起,并提供各核、图形域620和系统代理电路650之间的互连。
在图8的实施例中,系统代理域650可以包括显示器控制器652,显示器控制器652可以提供对相关联的显示器的控制和接口。如图中还可见,系统代理域650可以包括功率控制单元655,功率控制单元655可以执行所述处理器位于其中的系统的功率管理。
如图8中还可见,处理器600还可以包括集成存储器控制器(IMC)670,670可以提供到系统存储器诸如动态随机存取存储器(DRAM)的接口。可以存在多个接口6800-680n以启用处理器和其它电路之间的互连。例如,在一实施例中可以提供至少一个直接媒体接口(DMI)接口和一个或多个快速外围组件互连(PCI ExpressTM(PCIeTM))接口。此外,为了提供其它各代理(诸如附加处理器或其它电路)之间的通信,还可以提供根据快速通道互连(QPI)协议的一个或多个接口。尽管在图8的实施例中以这样高层面示出,应理解本发明的范围在此方面并不受限。
各实施例可以在许多不同的系统类型中实现。现在参考图9,示出的是根据本发明实施例的系统的框图。如图9中所示,多处理器系统700是点到点互连系统,并包括经由点到点互连750耦合的第一处理器770和第二处理器780。如图9中所示,处理器770和780的每一个都可以是多核处理器,包括第一和第二处理器核(例如,处理器核774a和774b及处理器核784a和784b),尽管处理器中潜在地可以存在多得多的核。所述核的每一个可以包括FMA单元,该FMA单元包括时钟门控逻辑以基于一个或多个输入数据值和/或指令类型来执行FMA的一个或多个数据路径的各部分的时钟门控,如此处所述。
仍参考图9,第一处理器770还包括处理器控制器中枢(MCH)772及点到点(P-P)接口776和778。类似地,第二处理器780包括MCH 782及P-P接口786和788。如图9中所示,MCH772和782将处理器耦合到相应的存储器,即存储器732和存储器734,其可以是本地附连到相应处理器的系统存储器(例如DRAM)的一部分。第一处理器770和第二处理器780可以分别经由P-P互连752和754耦合到芯片组790。如图9中所示,芯片组790包括P-P接口794和798。
而且,芯片组790包括接口792以通过P-P互连739将芯片组790耦合到高性能图形引擎738。进而芯片组790可以经由接口796耦合到第一总线716。如图9中所示,各种输入/输出(I/O)设备714可以和总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一实施例中,各种设备可以耦合到第二总线720,包括例如键盘/鼠标722、通信设备726和诸如盘驱动器或可以包括代码730的其它大容量存储设备的数据存储单元728。而且,音频I/O 724可以耦合到第二总线720。各实施例可以结合进其它类型的系统包括移动设备诸如智能蜂窝电话、平板计算机、上网本等。
各实施例可以用代码实现并可以存储在有存储与其上的指令的非瞬态存储介质上,所述指令可以用来对系统编程以执行所述指令。存储介质可以包括但不限于任何类型的盘包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘、半导体设备诸如只读存储器(ROM)、随机存取存储器(RAM)诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡,或适用于存储电子指令的任何其它类型的介质。
尽管参考有限数量的实施例描述了本发明,本领域的技术人员从中可以理解众多修改和变化。所附权利要求书旨在覆盖所有这样落入本发明的真正的精神和范围内的修改和变化。
Claims (18)
1.一种处理器,包括:
核,其包括执行指令的多个执行单元,所述多个执行单元包括:
融合乘加FMA电路,用于接收多个输入数据值以在所述输入数据值上执行FMA指令,所述融合乘加FMA电路包括:
乘法器单元;
加法器单元,耦合到所述乘法器单元的输出;
控制逻辑单元,用于接收所述多个输入数据值并基于所述多个输入数据值中的至少一个的值门控所述融合乘加FMA电路的一个或多个组件,还用于接收将在所述融合乘加FMA电路中执行的指令类型并基于所述指令类型门控所述融合乘加FMA电路的至少一个组件;以及
异常逻辑单元,所述异常逻辑单元用于接收所述多个输入数据值并确定是否要基于上述多个输入数据值中的至少一个发起异常,其中响应于所述多个输入数据值中的乘数和所述多个输入数据值中的被乘数中的一个是零,所述控制逻辑单元用于使得所述异常逻辑单元作为旁路路径以输出所述多个输入数据值中的加数,同时所述加法器单元和所述乘法器单元被阻止进行切换。
2.如权利要求1所述的处理器,其特征在于,所述异常逻辑单元用于输出相对应于异常值的所述多个输入数据值中所选择的一个,同时所述乘法器单元和所述加法器单元被阻止进行切换。
3.如权利要求1所述的处理器,其特征在于,所述控制逻辑单元用于:当所述多个输入数据值中的所述加数是零时,使得所述加法器单元被门控关闭。
4.如权利要求1所述的处理器,其特征在于,所述控制逻辑单元用于:当所述多个输入数据值中的所述乘数或所述多个输入数据值中的所述被乘数是2N,其中N是整数时,使得所述乘法器单元被门控关闭。
5.如权利要求4所述的处理器,其特征在于,所述融合乘加FMA电路还包括移位器,所述移位器用于选择所述乘数和所述被乘数中的一个作为输入并将所述一个移位N位以获得经移位值。
6.如权利要求5所述的处理器,其特征在于,所述加法器单元用于将所述多个输入数据值中的加数与所述经移位值相加以获得和。
7.如权利要求1所述的处理器,其特征在于,所述融合乘加FMA电路还包括:
多个第一选择器,其与所述乘法器单元耦合,并用于从所述乘法器单元接收乘积;
移位器,其耦合到所述多个第一选择器中的第一个的输出;
第一存储元件,其耦合到所述多个第一选择器中的第二个;
第二存储元件,其耦合到所述多个第一选择器中的第三个;
第三存储元件,其耦合到所述移位器的输出,其中所述乘积由所述多个第一选择器的所述第一个输出到所述第三存储元件,且所述第一和第二存储元件在乘法指令的执行过程中被时钟门控。
8.如权利要求1所述的处理器,其特征在于,所述融合乘加FMA电路还包括:
第一组存储元件,包括用于接收所述多个输入数据值中的所述乘数的第一存储元件和第四存储元件、用于接收所述多个输入数据值中的所述被乘数的第二存储元件和用于接收所述多个输入数据值中的所述加数的第三存储元件,其中当所述被乘数等于一时所述第一和第二存储元件被时钟门控。
9.如权利要求8所述的处理器,其特征在于,所述控制逻辑单元用于:当所述被乘数等于一时,阻止所述乘法器单元的顺序时钟进行切换,所述多个输入数据值中的所述乘数将从所述第四存储元件被路由到所述加法器单元用于与所述多个输入数据值中的所述加数相加。
10.一种降低处理器功耗的方法,包括:
接收与将在处理器的融合乘加FMA电路中执行的第一指令的操作相关联的多个输入数据值,所述融合乘加FMA电路包括乘法器电路和加法器电路;
在所述处理器的控制逻辑单元中确定是否所述第一指令是第一类型;以及
响应于确定所述第一指令是所述第一类型,禁用所述乘法器电路和所述加法器电路中的至少一个,并时钟门控耦合至所述乘法器电路和所述加法器电路中的所述至少一个的输入的存储元件,并在所述融合乘加FMA电路中执行操作以生成结果。
11.如权利要求10所述的方法,其特征在于,当被乘数输入数据值和乘数输入数据值中的至少一个等于第一值时,禁用所述乘法器电路和所述加法器电路,并将加数输入数据值提供给所述融合乘加FMA电路的输出以生成所述结果。
12.如权利要求10所述的方法,其特征在于,当被乘数输入数据值和乘数输入数据值中的一个等于第二值时,禁用所述乘法器电路并将所述被乘数输入值和所述乘数输入数据值中的另外一个的值移位所选择的位数,并将所述经移位值与加数输入数据值相加以生成所述结果,其中所选择的位数基于所述乘数输入数据值和所述被乘数输入数据值中的所述一个。
13.如权利要求10所述的方法,其特征在于,当被乘数输入数据值和乘数输入数据值中的一个等于第三值时,禁用所述乘法器电路并将所述被乘数输入数据值和所述乘数输入数据值中的另一个与加数输入数据值相加以生成所述结果。
14.如权利要求10所述的方法,其特征在于,当所述多个输入数据值中的至少一个是异常情况时,禁用所述乘法器电路和所述加法器电路,并在所述融合乘加FMA电路的异常数据路径中生成所述结果。
15.一种计算机系统,包括:
多核处理器,其包括多个核,所述核中的至少一个包括:
融合乘加FMA电路,具有主数据路径和异常数据路径;以及
控制逻辑单元,其耦合到所述融合乘加FMA电路,用于响应于接收到第一类型的指令而禁用所述主数据路径的至少一部分,所述控制逻辑单元进一步用于响应于第一类型的输入数据值的输入而禁用所述主数据路径的所述至少一部分,
其中所述融合乘加FMA电路用于生成与包括所述第一类型的输入数据值的多个输入数据值相关联的第二指令的结果,其中所述主数据路径包括:第一级存储元件,所述第一级存储元件中的每一个用于接收所述多个输入数据值中的一个;乘法器电路,用于被将第一输入数据值和第二输入数据值相乘;第二级存储元件,所述第二级存储元件中的至少一个耦合到所述乘法器电路的输出;以及加法器电路,用于将第三输入数据值与所选择的数据值相加;以及
动态随机存取存储器DRAM,耦合到所述多核处理器。
16.如权利要求15所述的计算机系统,其特征在于,所述控制逻辑单元用于:当所述第一和第二输入数据值中的至少一个等于零时,禁用所述第一级存储元件中的第一和第二个。
17.如权利要求15所述的计算机系统,其特征在于,所述控制逻辑单元用于:当所述第一和第二输入数据值中的至少一个等于零时,导致所述异常数据路径作为旁路路径以使所述第三输入数据值从所述异常数据路径输出。
18.如权利要求15所述的计算机系统,其特征在于,所述第一级存储元件包括:第一存储元件和第四存储元件,用于接收所述第一输入数据值;第二存储元件,用于接收所述第二输入数据值;以及第三存储元件,用于接收所述第三输入数据值;其中当所述第二输入数据值等于一时所述第一和第二存储元件将被时钟门控。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/664,689 US9152382B2 (en) | 2012-10-31 | 2012-10-31 | Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values |
US13/664,689 | 2012-10-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793203A CN103793203A (zh) | 2014-05-14 |
CN103793203B true CN103793203B (zh) | 2017-04-12 |
Family
ID=49680022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310534213.8A Active CN103793203B (zh) | 2012-10-31 | 2013-10-31 | 响应于输入数据值降低fma单元中的功率消耗 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9152382B2 (zh) |
JP (1) | JP5819380B2 (zh) |
KR (1) | KR101566257B1 (zh) |
CN (1) | CN103793203B (zh) |
BR (1) | BR102013027768A2 (zh) |
DE (1) | DE102013111605A1 (zh) |
GB (1) | GB2507656B (zh) |
TW (1) | TWI515649B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8892619B2 (en) * | 2012-07-24 | 2014-11-18 | The Board Of Trustees Of The Leland Stanford Junior University | Floating-point multiply-add unit using cascade design |
US9152382B2 (en) | 2012-10-31 | 2015-10-06 | Intel Corporation | Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values |
US9829956B2 (en) * | 2012-11-21 | 2017-11-28 | Nvidia Corporation | Approach to power reduction in floating-point operations |
US9383968B2 (en) * | 2013-09-27 | 2016-07-05 | Nvidia Corporation | Math processing by detection of elementary valued operands |
CN106339202B (zh) | 2014-07-02 | 2019-05-21 | 上海兆芯集成电路有限公司 | 微处理器及其方法 |
US10297001B2 (en) * | 2014-12-26 | 2019-05-21 | Intel Corporation | Reduced power implementation of computer instructions |
US10001995B2 (en) | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
US10108397B2 (en) | 2015-08-25 | 2018-10-23 | Samsung Electronics Co., Ltd. | Fast close path solution for a three-path fused multiply-add design |
US11061672B2 (en) * | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US20170177336A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Hardware cancellation monitor for floating point operations |
AU2017251002B2 (en) * | 2016-04-14 | 2021-04-22 | Nagaki Seiki Co., Ltd. | Wire gripper and live-wire distributing tool utilizing wire gripper |
US9977680B2 (en) * | 2016-09-30 | 2018-05-22 | International Business Machines Corporation | Clock-gating for multicycle instructions |
US10078512B2 (en) | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10372416B2 (en) | 2017-04-28 | 2019-08-06 | Intel Corporation | Multiply-accumulate “0” data gating |
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US10372417B2 (en) | 2017-07-13 | 2019-08-06 | International Business Machines Corporation | Multiply-add operations of binary numbers in an arithmetic unit |
GB2568085B (en) | 2017-11-03 | 2020-01-01 | Imagination Tech Ltd | Hardware unit for performing matrix multiplication with clock gating |
US10481869B1 (en) | 2017-11-10 | 2019-11-19 | Apple Inc. | Multi-path fused multiply-add with power control |
US10564931B1 (en) | 2018-04-05 | 2020-02-18 | Apple Inc. | Floating-point arithmetic operation range exception override circuit |
EP3804129A1 (en) | 2018-06-05 | 2021-04-14 | Telefonaktiebolaget LM Ericsson (publ) | Digital predistortion low power implementation |
EP3804130A1 (en) | 2018-06-05 | 2021-04-14 | Telefonaktiebolaget LM Ericsson (publ) | Low-power approximate dpd actuator for 5g-new radio |
WO2020053618A1 (en) * | 2018-09-10 | 2020-03-19 | Badenhorst Emile | A processor and a method of operating a processor |
US10713012B2 (en) | 2018-10-15 | 2020-07-14 | Intel Corporation | Method and apparatus for efficient binary and ternary support in fused multiply-add (FMA) circuits |
JP7115211B2 (ja) | 2018-10-18 | 2022-08-09 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US20200159495A1 (en) * | 2018-11-15 | 2020-05-21 | Samsung Electronics Co., Ltd. | Processing apparatus and method of processing add operation therein |
CN113396401A (zh) | 2019-03-15 | 2021-09-14 | 英特尔公司 | 多贴片存储器管理 |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
CN113383310A (zh) | 2019-03-15 | 2021-09-10 | 英特尔公司 | 矩阵加速器架构内的脉动分解 |
KR20200111939A (ko) | 2019-03-20 | 2020-10-05 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
CN110515656B (zh) * | 2019-08-28 | 2021-07-16 | 中国人民解放军国防科技大学 | 一种casp指令的执行方法、微处理器及计算机设备 |
US20210200539A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | Generic linear unit hardware accelerator |
US11269631B2 (en) * | 2020-07-29 | 2022-03-08 | Ghost Locomotion Inc. | Extending fused multiply-add instructions |
US20220188073A1 (en) * | 2020-12-11 | 2022-06-16 | Amazon Technologies, Inc. | Data-type-aware clock-gating |
US20220197595A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | Efficient multiply and accumulate instruction when an operand is equal to or near a power of two |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1327555A (zh) * | 1999-08-03 | 2001-12-19 | 皇家菲利浦电子有限公司 | 选择性延时乘法结果的运算器和方法 |
WO2007094047A2 (ja) * | 2006-02-14 | 2007-08-23 | Fujitsu Ltd | 演算装置および演算方法 |
CN101419585A (zh) * | 2007-10-23 | 2009-04-29 | 雅马哈株式会社 | 数字信号处理设备 |
CN101452571A (zh) * | 2007-12-07 | 2009-06-10 | 辉达公司 | 积和熔加功能单元 |
US7849295B2 (en) * | 2006-06-20 | 2010-12-07 | Nec Electronics Corporation | Data processing apparatus and data processing method including dividing data to be processed |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5128890A (en) * | 1991-05-06 | 1992-07-07 | Motorola, Inc. | Apparatus for performing multiplications with reduced power and a method therefor |
JP3229057B2 (ja) * | 1993-02-22 | 2001-11-12 | 株式会社東芝 | 例外処理装置 |
JP3222313B2 (ja) | 1993-04-27 | 2001-10-29 | 松下電器産業株式会社 | 演算装置及び演算方法 |
JP3561051B2 (ja) * | 1995-08-28 | 2004-09-02 | 株式会社東芝 | 演算同期回路 |
US7254698B2 (en) | 2003-05-12 | 2007-08-07 | International Business Machines Corporation | Multifunction hexadecimal instructions |
US8078660B2 (en) | 2007-04-10 | 2011-12-13 | The Board Of Regents, University Of Texas System | Bridge fused multiply-adder circuit |
US8255726B2 (en) | 2008-07-18 | 2012-08-28 | International Business Machines Corporation | Zero indication forwarding for floating point unit power reduction |
US9152382B2 (en) | 2012-10-31 | 2015-10-06 | Intel Corporation | Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values |
-
2012
- 2012-10-31 US US13/664,689 patent/US9152382B2/en active Active
-
2013
- 2013-03-05 US US13/785,528 patent/US9323500B2/en active Active
- 2013-10-14 GB GB1318169.8A patent/GB2507656B/en not_active Expired - Fee Related
- 2013-10-14 TW TW102136982A patent/TWI515649B/zh not_active IP Right Cessation
- 2013-10-21 JP JP2013218301A patent/JP5819380B2/ja not_active Expired - Fee Related
- 2013-10-22 DE DE102013111605.1A patent/DE102013111605A1/de active Pending
- 2013-10-29 BR BRBR102013027768-1A patent/BR102013027768A2/pt not_active Application Discontinuation
- 2013-10-30 KR KR1020130129989A patent/KR101566257B1/ko active IP Right Grant
- 2013-10-31 CN CN201310534213.8A patent/CN103793203B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1327555A (zh) * | 1999-08-03 | 2001-12-19 | 皇家菲利浦电子有限公司 | 选择性延时乘法结果的运算器和方法 |
WO2007094047A2 (ja) * | 2006-02-14 | 2007-08-23 | Fujitsu Ltd | 演算装置および演算方法 |
US7849295B2 (en) * | 2006-06-20 | 2010-12-07 | Nec Electronics Corporation | Data processing apparatus and data processing method including dividing data to be processed |
CN101419585A (zh) * | 2007-10-23 | 2009-04-29 | 雅马哈株式会社 | 数字信号处理设备 |
CN101452571A (zh) * | 2007-12-07 | 2009-06-10 | 辉达公司 | 积和熔加功能单元 |
Also Published As
Publication number | Publication date |
---|---|
US20140122554A1 (en) | 2014-05-01 |
TW201428611A (zh) | 2014-07-16 |
CN103793203A (zh) | 2014-05-14 |
GB201318169D0 (en) | 2013-11-27 |
JP5819380B2 (ja) | 2015-11-24 |
US9323500B2 (en) | 2016-04-26 |
GB2507656B (en) | 2016-10-12 |
GB2507656A (en) | 2014-05-07 |
US9152382B2 (en) | 2015-10-06 |
BR102013027768A2 (pt) | 2015-06-30 |
US20140122555A1 (en) | 2014-05-01 |
KR20140056080A (ko) | 2014-05-09 |
DE102013111605A1 (de) | 2014-04-30 |
JP2014093085A (ja) | 2014-05-19 |
TWI515649B (zh) | 2016-01-01 |
KR101566257B1 (ko) | 2015-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103793203B (zh) | 响应于输入数据值降低fma单元中的功率消耗 | |
US11307873B2 (en) | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging | |
US10469397B2 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
US10445098B2 (en) | Processors and methods for privileged configuration in a spatial array | |
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
CN111566623A (zh) | 用于可配置空间加速器中的集成性能监视的装置、方法和系统 | |
KR101020430B1 (ko) | 동적 범위 조정 부동 소수점 실행 유닛 | |
US20190101952A1 (en) | Processors and methods for configurable clock gating in a spatial array | |
CN106406810B (zh) | 微处理器及其方法 | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
US20190005161A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
US8930432B2 (en) | Floating point execution unit with fixed point functionality | |
US20200310797A1 (en) | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator | |
US10678724B1 (en) | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator | |
WO2006136764A1 (en) | A data processing apparatus and method for accelerating execution of subgraphs | |
CN112148664A (zh) | 用于可配置空间加速器中的时间复用的装置、方法和系统 | |
CN112148647A (zh) | 用于存储器接口电路仲裁的装置、方法和系统 | |
US11907713B2 (en) | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator | |
Islam et al. | Design of High-Speed-Pipelined Execution Unit of 32-bit RISC Processor | |
CN109977701B (zh) | 一种定浮点运算装置 | |
Louwers | Energy efficient multi-granular arithmetic in a coarse-grain reconfigurable architecture | |
Islam et al. | 32-bit RISC Processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |