CN109643228A - 用于浮点乘加运算的低能耗尾数乘法 - Google Patents
用于浮点乘加运算的低能耗尾数乘法 Download PDFInfo
- Publication number
- CN109643228A CN109643228A CN201780053811.XA CN201780053811A CN109643228A CN 109643228 A CN109643228 A CN 109643228A CN 201780053811 A CN201780053811 A CN 201780053811A CN 109643228 A CN109643228 A CN 109643228A
- Authority
- CN
- China
- Prior art keywords
- mantissa
- floating
- significant bit
- 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/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
- 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/3237—Power saving characterised by the action undertaken by disabling clock generation or distribution
-
- 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
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种浮点乘加单元,具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入。乘加单元包含尾数乘法器以将乘数数据元素的尾数和被乘数数据元素的尾数相乘以计算尾数乘积。尾数乘法器包含计算尾数乘积的最高有效位的最高有效位部分和计算尾数乘积的最低有效位的最低有效位部分。尾数乘法器具有最低有效位部分的多个不同的可能大小。能耗降低逻辑选择性地降低最低有效位部分的能耗,但不降低最高有效位部分的能耗,以使最低有效位部分不计算尾数乘积的最低有效位。
Description
技术领域
本文描述的实施例一般涉及处理器。具体地说,本文描述的实施例一般涉及用于执行浮点乘加运算的处理器。
背景技术
浮点乘加运算被广泛用在计算和数据处理中。例如,浮点乘加运算通常被用在信号处理、科学计算、图形、大数据处理、机器学习等中。
许多处理器都有浮点乘加单元来执行浮点乘加运算。在一些情况下,处理器的指令集中的指令可用于控制这些单元以执行浮点乘加运算。
附图说明
本发明通过参考用于图示实施例的以下说明书和附图可以得到最好的理解。在附图中:
图1是具有尾数乘法器能耗降低逻辑的浮点乘加单元的实施例的框图。
图2A-2D是适合于实施例的浮点格式的框图。
图3是具有尾数乘法器能耗降低逻辑的适合的浮点乘加单元的详细示例实施例的框图。
图4是在不计算尾数乘积的最低有效部分的情况下执行浮点乘加运算并且确定未计算的部分是否可能影响了最终乘加结果的方法的实施例的方框流程图。
图5是包含能耗降低逻辑的尾数乘法器的示例实施例的框图。
图6是具有用于进位区域和门控区域之间的进位边界的至少两个不同的可能位置的尾数乘法器的示例实施例的框图。
图7是进位边界选择逻辑的示例实施例的框图。
图8A是图示有序流水线的实施例和寄存器重命名无序发布/执行流水线的实施例的框图。
图8B是处理器核的实施例的框图,其包含耦合到执行引擎单元的前端单元,并且二者都耦合到存储器单元。
图9A是单个处理器核连同其到管芯上互连网络的连接以及其2级(L2)高速缓存的本地子集的实施例的框图。
图9B是图9A的处理器核的一部分的扩展视图的实施例的框图。
图10是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形的处理器的实施例的框图。
图11是计算机架构的第一实施例的框图 。
图12是计算机架构的第二实施例的框图 。
图13是计算机架构的第三实施例的框图 。
图14是计算机架构的第四实施例的框图 。
图15是根据本发明的实施例使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文公开了用于浮点乘加单元的尾数乘法器的能耗降低逻辑的实施例。在以下描述中,阐述了众多特定细节(例如,特定浮点乘加单元、乘法器类型、乘法器大小、处理器配置、微架构细节和操作序列)。然而,实施例可以在没有这些特定细节的情况下实践。在其它实例中,众所周知的电路、结构和技术并未详细地被示出,以避免使对描述的理解模糊不清。
图1是具有尾数乘法器能耗降低逻辑110的浮点乘加单元100的实施例的框图。浮点乘加单元可操作以执行浮点乘加运算。在一些实施例中,浮点乘加单元可操作以响应于浮点乘加指令而执行浮点乘加运算,不过本发明的范围不限于此。在此类实施例中,浮点乘加单元可以表示执行指令的执行单元。
浮点乘加单元100可以包含在各种不同类型的集成电路产品中。在一些实施例中,浮点乘加单元可以包含在处理器中。在一些情况下,处理器可以是通用处理器(例如,在台式计算机、膝上型计算机、服务器或蜂窝电话中所使用的类型的通用微处理器或中央处理单元(CPU))。备选地,处理器可以是专用处理器。合适的专用处理器的示例包含但不限于数字信号处理器(DSP)、图形处理器、通信处理器、网络处理器、密码处理器、协处理器、嵌入式处理器和控制器(例如,微控制器)。处理器还可以包含其它处理器组件,诸如例如针对图8A、8B、9A、9B、10中的任何一个示出和描述的组件的各种不同组合和配置。在一些情况下,浮点乘加单元可以可选地包含在具有可配置架构(诸如例如现场可编程门阵列(FPGA)、粗粒度可重配置阵列(CGRA))等)的处理器或其它设备中。在一些实施例中,浮点乘加器单元可以被设置在至少一个集成电路或半导体管芯上。
在操作期间,可以提供浮点乘数数据元素(A)102、浮点被乘数数据元素(B)104和浮点加数数据元素(C)106作为浮点乘加单元100的输入。举例来说,这些可以表示浮点乘加指令的源操作数。
浮点乘加单元可以包含与浮点加法单元114耦合的浮点乘法单元108。浮点乘法单元108可耦合以接收浮点乘数数据元素(A)作为第一输入,并且浮点被乘数数据元素(B)作为第二输入。例如,乘法单元可以具有输入端口、输入接口或被耦合(例如,与存储位置)的其它输入,来用以接收这些输入。浮点乘法单元可操作以将浮点乘数数据元素(A)和浮点被乘数数据元素(B)相乘以生成并输出浮点乘积(A * B)112。浮点数的乘法一般涉及乘以浮点数的尾数,以及对浮点数的指数求和,其中将指数偏差考虑进去。浮点乘法单元可以包含尾数乘法器109以乘以尾数。
浮点加法单元114可以被耦合以接收浮点乘积(A * B)112和浮点加数数据元素(C)106。例如,浮点加法单元可具有输入端口、输入接口或其它输入,其与浮点乘法器单元108的输出端口、输出接口或其它输出耦合以接收浮点乘积(A* B)。在一些情况下,浮点加数数据元素可以可选地是浮点累加值120,其可以从可选的累加器存储装置118(例如,累加器寄存器)输出,不过这并不被要求。在这种情况下,浮点加法单元可具有输入端口、输入接口或其它输入,其与可选的累加器存储装置118的输出端口、输出接口或其它输出耦合,以接收累加值120作为浮点加数数据元素(C)。备选地,可以省略可选的累加器存储装置,并且浮点加法单元可以具有与源寄存器或其它存储位置耦合的输入,以接收输入浮点数据元素105(其并不表示累加值)作为浮点加数数据元素(C)。在一些情况下,可以使用可选的多路复用器或其它选择器113来选择输入数据元素105或累加值120作为加数数据元素(C)。
浮点加法单元114可操作以将浮点乘积(A * B)112和浮点加数数据元素(C)106相加以生成并输出浮点和(A * B + C)116。浮点和116也可以作为浮点乘加结果数据元素(A* B + C)122被输出。浮点乘加单元可以具有与目的地寄存器或用于存储浮点乘加结果数据元素(A * B + C)122的其它存储位置耦合的输出。在一些实施例中,当实现可选的累加器存储装置118时,浮点和116也可以可选地存储在累加器存储装置中。在后续乘加运算期间,浮点和116可以从累加器存储装置输出作为累加值120。举例来说,可以执行若干乘法累加运算以用对应数量的浮点乘积来顺序地更新累加值,使得累加值的大小可以随时间增加。
在一些实施例中,浮点乘加单元可以可选地执行两个单独的浮点舍入运算。可在浮点加法单元114中进行相加之前对浮点乘积112执行一个舍入运算,并且可以在浮点加法单元中进行相加之后执行另一个舍入运算以产生浮点和116。在其它实施例中,浮点乘加单元可以可选地仅执行一个浮点舍入运算。此单个浮点舍入运算可以在浮点加法单元中进行相加之后执行以产生浮点和116。这种仅有一个浮点舍入运算的浮点乘加运算有时被称为融合的浮点乘加运算。任一种方法都适合于本文公开的实施例。
如上面所提到的,浮点乘法单元108可以包含尾数乘法器109作为子单元。在一些实施例中,如下面将进一步说明的,尾数乘法器109和/或浮点乘加单元100可以包含尾数乘法器能耗降低逻辑110。在一些实施例中,尾数乘法器能耗降低逻辑可操作以在其中尾数乘积的最低有效位部分不影响最终浮点乘加结果数据元素122的情况下,通过门控(例如,时钟和/或数据门控)尾数乘法器的最低有效(例如,最低阶)位部分(其负责生成尾数乘积的最低有效(例如,最低阶)位部分)来降低尾数乘法器的能耗。在一些实施例中,尾数乘法器能耗降低逻辑可以将能耗降低至少部分基于浮点加数数据元素(C)106(例如,其指数)的量。例如,在一些实施例中,被门控的尾数乘法器的一部分可以至少部分基于浮点加数数据元素(C)106(例如,其指数)。
在图1中,已经示出并描述了单个“标量”浮点乘加单元。然而,其它实施例属于打包的、向量或单指令多数据(SIMD)浮点乘加单元,其包含以打包的、向量或SIMD方式耦合在一起的多个此类浮点乘加单元(例如,对应于不同道,并且在不同SIMD道之间的进位链中具有间断)。
多个不同的浮点格式适合于本文公开的浮点乘数、被乘数、加数和乘加结果数据元素。这种浮点格式通常将浮点数的位分摊到称为符号、尾数和指数的构成字段中。符号、尾数和指数是相关的,如等式1所示:
A=(-1)^符号 * 尾数 * 底数^指数 等式 1
表达式“(-1)^符号”表示-1的符号次幂。这个表达式估算浮点数是正(+)还是负( - )。例如,当符号为整数零时,浮点数为正,而当符号为整数1时,浮点数为负。
尾数可以包含具有基于浮点数的类型或精度的长度的数位串。尾数有时也称为有效数(significand)、系数或分数。通常隐含地假定基数点(例如,十进制格式的小数点或二进制格式的二进制点)位于固定位置。例如,可以隐含地假定基数点正好在尾数的最左侧数位或最高有效数位的右侧。举例来说,二进制中的一个可能的尾数可以是“1.10010010000111111011011”,不过这仅是一个说明性示例。此尾数中的最高有效(所看到的最左侧)位被称为J位。J位被隐含地假定为二进制1,并且一般不以浮点格式存储,而是提供额外精度的隐式或隐藏位(例如,对于单精度浮点数,存在24位尾数精度,其包括显式23位和隐式1位)。基数点被隐含地假定为跟随J位。这种格式有时被称为“正常”格式。
表达式“底数^指数”底数的指数次幂。底数有时被称为基数。指数也被称为特性或标度。底数通常是底数2(对于二进制)、底数10(对于十进制)或底数16(对于十六进制)。在处理器中的浮点数的大多数情况下,底数是隐式的或假定为底数2(即二进制),并且不以浮点格式单独存储。对底数求指数次幂有效地将基数点(例如,从上面提到的隐式的或假定的起始位置)移位了指数数量的数位。如果指数为正,则基数点向右移位,或者如果指数为负,则基数点向左移位。
图2A-2D是图示适合于实施例的浮点格式的示例的框图。电气和电子工程师协会(IEEE)已经在标准IEEE 754的各种版本中标准化了这些格式,以及其它几个不太常用的格式(它们也是适合的)。
图2A图示了16位半精度浮点格式224A。半精度浮点格式包含位[9:0]中的10位尾数230A、位[14:10]中的5位指数228A和位[15]中的1位符号226A。
图2B图示了32位单精度浮点格式223。单精度浮点格式包含位[22:0]中的23位尾数230B、位[30:23]中的8位指数228B和位[31]中的1位符号226B。
图2C图示了64位双精度浮点格式223。双精度浮点格式包含位[51:0]中的52位尾数230C、位[62:52]中的11位指数228C和位[63]中的1位符号226C。
图2D图示了80位扩展双精度浮点格式224。扩展双精度浮点格式包含位[63:0]中的64位尾数230D、位[78:64]中的15位指数228D和位[79]中的1位符号226D。
图3是具有尾数乘法器能耗降低逻辑310的适合的浮点乘加单元300的详细示例实施例的框图。将被领会的是,这只是适合的浮点乘加单元设计的一个说明性示例。其它适合的浮点乘加单元也是适合的。
浮点乘加单元包含指数比较器332,该指数比较器包含指数加法器333。乘数指数(EB)和被乘数指数(EC)可被提供给指数加法器,指数加法器可以将这些指数相加。加数指数(EA)也可以被提供给指数比较器。指数比较器可以将加数指数与乘数和被乘数指数之和相减或以别的方式进行比较,并选择最大值作为结果指数(ER)。乘数和被乘数的指数之和给出一个指数,该指数在实际指数之一内(例如,实际指数可以是指数之和,或者指数之和加一)。基于此比较,指数比较器还可以控制移位单元334以对输入加数尾数(MA)执行移位。
乘数尾数(MB)和被乘数尾数(MC)可以被输入到尾数乘法器358。尾数乘法器可以将这些尾数相乘以形成尾数乘积。移位单元和尾数乘法器的输出可以被输入到第一加法器(例如,进位保存加法器(CSA))335。第一加法器的输出与前导零预期器单元336、第二加法器(例如,进位传播加法器(CPA))337和粘着位单元338耦合以执行粘着位计算。可最初用第一加法器(例如,进位保存加法器)并且然后用第二加法器(例如,进位传播加法器)来执行经对齐的尾数乘积和加数尾数的相加。前导零预期器单元和第二加法器的输出与归一化器单元耦合。在归一化中可以使用对前导零的预期。归一化器单元的输出和粘着位单元的输出作为输入耦合到舍入单元340。可以基于计算的粘着位来执行舍入。舍入单元可以输出结果尾数(MR)。
如图所示,在一些实施例中,尾数乘法器可包含能耗降低逻辑310。本文在别处描述的任何能耗降低逻辑都是适合的。在一些实施例中,指数比较器332可以可选地与能耗降低逻辑耦合。在一些实施例中,指数比较器还可以向能耗降低逻辑310提供能耗降低信息399。作为一个示例,该信息可以包含加数指数与乘数和被乘数指数之和之间的差(例如,EA-(EB + EC))。作为另一示例,该信息可包含与对齐尾数乘积和加数的基数点关联的移位量。在一些实施例中,能耗降低逻辑310可操作以将能耗降低至少部分基于浮点加数数据元素(例如,其指数)的量。例如,在一些实施例中,被门控的尾数乘法器的一部分可以至少部分基于浮点加数数据元素(例如,其指数)。
非常常见的是,以在尾数中具有隐式前导1的通常形式对浮点数执行的浮点乘加运算的结果不受尾数乘积的最低有效(例如,最低阶)位部分的影响。考虑乘数的n位尾数(A)、被乘数的n位尾数(B)和加数的n位尾数(C):
A:1.a0a1 … an-1
B:1.b0b1 … bn-1
C:1.c0c1 … cn-1
由于通常格式:1 ≤ A <2;1 ≤ B <2; 1 ≤ C <2;并且1 ≤ A * B < 4。还有,最终的乘加结果将采用通常形式。乘数和被乘数的乘积的二进制点一般将在相加之前与加数的二进制点对齐。例如,乘积的2n个位可以基于加数的指数移位,以便实现这种对齐。乘加结果一般将仅包含乘积和加数之和的前导1位或J位之后的前n个位。部分地由于从2n个位到n个位的这种截断,尾数的乘积的最低有效位部分通常不影响最终的乘加结果(例如,存储在寄存器中的在架构上可见的值)。此外,基于加数的指数将乘积移位或以别的方式对齐可以进一步使尾数的乘积不影响或改变最终的乘加结果。当加数(例如,累加值)显著大于乘数和被乘数的乘积(例如,具有比其更大的指数)时,这可能尤其倾向于这种情况。在这种情况下,乘积可能被显著移位,以便使其基数点与加数的基数点对齐。而且,在许多情况下,累加值可能显著大于乘积,例如,当多个乘积顺序地累加到累加值中时。
图4是在不计算尾数乘积的最低有效位部分的情况下执行浮点乘加运算以及确定未计算的最低有效位部分是否可能有可能影响了最终乘加结果的方法452的实施例的方框流程图。在各种实施例中,该方法可以由浮点乘加单元、处理器、数字逻辑器件或集成电路来执行。在一些实施例中,该方法可以由和/或用图1和/或图3的浮点乘加单元执行。针对这些浮点乘加单元描述的组件、特征和特定可选细节也可以可选地应用于方法452。备选地,方法452可以由相似的或不同的浮点乘加单元、处理器或设备执行和/或在其内执行。而且,图1和/或图3的浮点乘加单元可以执行与方法452相同、相似或不同的方法。
在框453,可以对浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素启动浮点乘加运算。在一些实施例中,这可以响应于指示这些数据元素作为源操作数的乘加指令而执行,不过本发明的范围不限于此。
在框454,可以将浮点乘数和被乘数数据元素的尾数相乘,而不计算尾数乘积的最低有效位部分。在一些实施例中,这可以包含门控(例如,时钟和/或数据门控),或以别的方式降低到正被用于将尾数相乘的尾数乘法器的对应最低有效位部分的功率和/或其的能耗。
在框455,可以确定尾数乘积的未计算的最低有效位部分是否可能有可能影响了最终的乘加结果。这可以在不同实施例中以各种不同的方式来进行,如下面结合图5将进一步讨论的。如果确定尾数乘积的未计算的最低有效位部分可能有可能影响了最终乘加结果(即,在框455,确定是“是”),则该方法可前进到框456。
在框456,可以执行校正动作。在一些实施例中,该校正动作可以包含计算尾数乘积的先前未计算的最低有效位部分。这可以在不同的实施例中以不同的方式来进行。在一些实施例中,可以可选地完全计算整个尾数乘积,这包含其最低有效位部分(即,不对它进行门控和/或不将功耗降低到不执行计算的程度)。例如,可以从流水线中转储清除或丢弃现有的计算结果,并且可以从此时开始在流水线中重新开始整个计算,在计算中包括门控区域。对于不需要门控区域的情形,这种方法可倾向于具有相对低的时延,但是当需要门控区域时,可具有全流水线重放的相对高的时延或惩罚。在其它实施例中,可能不需要重放整个计算。而是,在适当时,可以可选地仅选择性地计算尾数乘积的最低有效位部分。例如,可以使用相对较长的流水线,其在流水线的后续部分中具有尾数乘积的最低有效位部分(其可以基于在流水线的较早部分中的计算结果被选择性地计算或不计算)。在这种实施例中,尾数乘积的所计算的最低有效位部分可以被加到在框454先前计算的先前尾数乘积,或者以别的方式与之组合,或者以别的方式用于对其进行校正或调整。
备选地,如果确定尾数乘积的未计算的最低有效位部分不可能可能已经影响最终乘加结果(即,在框455,确定为“否”),则该方法可前进到框457。在框457,浮点乘数和被乘数数据元素的乘积(例如,基于尾数乘积还有指数之和)可被加到浮点加数数据元素,并且最终的乘加结果可以被存储或以别的方式提供。
相信,在许多乃至大多数情况下,在框455的确定可用于验证、保证或确保未计算的最低有效位部分不可能可能影响最终的乘加结果。在这种情况下,由于不计算它而节省的能量是有益的。相反,在框455的确定可以用于检测那些(例如,通常更罕见的)实例,其中基于用于确定的具体方法或技术,未计算的最低有效位部分可以影响最终的乘加结果,或者它不能保证它不会影响最终的乘加结果。在这种情况下,可以执行校正动作以确保最终的乘加结果是正确的。
图5是包含能耗降低逻辑510的尾数乘法器558的示例实施例的框图。在一些实施例中,尾数乘法器可以可选地被包含在图1和/或图3的浮点乘加单元中。备选地,尾数乘法器可以可选地被包含在相似的或不同的浮点乘加单元或处理器中。还有,图1和/或图3的浮点乘加单元可以包含与尾数乘法器558相同的、相似的或不同的尾数乘法器。而且,在一些实施例中,尾数乘法器558可用于执行图4的方法452(例如,框454、455和456)。针对尾数乘法器558描述的组件、特征和特定可选细节还可以可选地应用于方法452。备选地,可以用相似的或不同的尾数乘法器来执行方法452。
图示的具体乘法器558是24位乘24位乘法器,其适合于将两个32位单精度浮点数的两个24位尾数相乘,但本发明的范围不限于此。乘法器被描绘为点组成的平行四边形,其中在平行四边形的每个维度或侧面上有二十四个点。类似的较大或较小的乘法器也适合于将对应于其它类型浮点数的其它大小的尾数(例如,针对图2A-2D示出和描述的那些)相乘。例如,设想类似的53位乘53位乘法器用于将两个64位双精度浮点数的两个53位尾数相乘。
平行四边形中的每个点可以表示加法器,其中进位从右向左推(如所看到的)。在一些实施例中,每个加法器可以表示具有三个输入的3-2全进位保存加法器(CSA):(1)一对输入位的逻辑“与”;(2)在其上方的3-2 CSA的保存(如所看到的);(3)在其上方及其右侧从3-2 CSA的进位(如所看到的)。相似地,每个3-2 CSA可具有两个输出:(1)提供给其下方的3-2 CSA的保存(如所看到的);(2)提供给其下方和其左侧的3-2 CSA的进位(如所看到的)。进位项可沿一行传下去,并且到下一列,并且与从该列传下来的总和项相遇。以这种方式,值的相加可以沿列向下传播。工作可向下传播,并且然后交叉。最后一行可以组合剩余的进位与总和项以产生尾数乘积。要被领会的是,这只是一个适合的乘法器的说明性实施例。其它乘法器类型和设计也是适合的,诸如例如Booth编码乘法器,并且对于用于计算尾数乘积的最低有效位的乘法器的一部分也可以利用本文描述的能耗降低逻辑和方法。
在一些实施例中,乘法器可以在逻辑上分区为三个不同的区域或其它部分,它们在图示中被标记为结果区域560、进位区域562和门控区域564。在图示中,这些不同的区域或部分由竖直线划分。这些区域或部分可以包含加法器的不同子集和/或其它电路和/或乘法器的其它逻辑。图示的竖直线的具***置不是必需的,并且可以变化,如下面将进一步说明的(例如,取决于与乘数和被乘数的指数的总和相比的加数的指数)。
在一些实施例中,结果区域560可对应于并且广义上表示乘数的最高有效位部分和/或尾数乘积572的最高有效位部分574。在一些实施例中,最高有效位部分574可以表示要被加到加数数据元素的尾数乘积的那部分(例如,在由于相对指数而引起的任何移位之后)。当加数指数相对大于乘数和尾数的指数之和时,最高有效位部分可相对较小,或者否则相对较大。换言之,结果区域最右边界可以根据由于浮点数的相对指数引起的相对移位而向右或向左移位。在一些实施例中,进位区域562可以对应于并且广义上表示乘数的中间位部分和/或尾数乘积572的中间有效位部分(其位于将不被加到加数数据元素的尾数乘积的部分576中)。在一些实施例中,门控区域564可对应于并且广义上表示乘数的最低有效位部分和/或尾数乘积572的最低有效位部分(其位于将不被加到加数数据元素的尾数乘积的部分576中)。
在一些实施例中,门控区域564可以表示在能确保或保证最终乘加结果不依赖于其值的情况下,可以被门控的逻辑的子集或乘法器的其它部分,和/或其功耗可以被降低。此外,在一些实施例中,当加数浮点数(例如,其指数)较大和/或较少位的尾数乘积影响最终的乘加结果时,可以实现的门控区域的大小和/或功耗量可以更大。如图所示,能耗降低逻辑510的门控逻辑566可以与门控区域耦合,并且可操作以门控(例如,时钟和/或数据门)或者不门控该门控区域。门控逻辑可以用硬件和/或固件实现。一般而言,门控区域越大,在被门控时能节省的能量越多。
在不同的实施例中可以使用对门控区域564的不同门控方式。在一些实施例中,对门控区域的门控可以包含对门控区域进行时钟门控。例如,时钟信号568在被应用于结果区域560和进位区域562时,可被选择性地或者可以不被选择性地应用于门控区域。在一些实施例中,门控区域的门控可以包含对门控区域进行数据门控或逻辑门控,其中来自前一周期的相同数据值或输入可以被锁存至到门控区域中的逻辑的所有输入,以便保持内部节点免于切换。通过不切换内部节点,可以不消耗有功功率,尽管仍可能引发一些泄漏电流或功率。在一些实施例中,门控区域中的所有进位(例如,如所看到的最右竖直线的右侧)可以可选地用硬连线的零替换。在一些实施例中,门控区域中的流水线阶段锁存器可以可选地是时钟门控的。还可以设想其它方式来选择性地降低到门控区域的功率和/或其的能耗和/或关闭门控区域中的计算。例如,如果能够足够快地应用和去除应用功率门控,则可以可选地使用功率门控。
能耗降低逻辑510的进位隔离验证逻辑570可以与进位区域562耦合。进位隔离验证逻辑可以用硬件和/或固件实现。进位隔离验证逻辑可以可操作以确定门控区域是否可能有可能影响最终的乘加结果(例如,其基于加数指数的值和/或相对的基数点移位量),或者通过介于中间的进位区域,门控区域的进位是否被保证与结果区域隔离。此确定可以在不同实施例中以不同的方式进行。为了进一步图示某些概念,下面将进一步讨论几个代表性方法,不过也可以设想其它方法,并且这对于受益于本公开的本领域技术人员而言将是显而易见的。
根据一种可能的方法,在一些实施例中,进位隔离验证逻辑570可以可操作以基于对于进位区域实际计算的值,来确定可能从门控区域564发出的最大可能进位是否可能有可能跨进位区域562一直波动或传播,并进入结果区域560。在一些实施例中,来自n位宽门控区域的最大可能进位被估计为(n-1)。例如,来自8位宽门控区域的最大可能进位可被估计为7,来自5位宽门控区域的最大可能进位可被估计为4,依此类推。因此,如果基于对来自n位宽门控区域的最大可能进位的这种(n-1)估计,以及对于进位区域的实际计算值,确定进位可能有可能跨进位区域波动或一直传播,并进入结果区域,则不能保证、验证或确保最终结果不可能可能已经受门控区域影响。在这种情况下,可以执行校正动作(例如,可以计算门控区域,或者再次执行整个计算,但不对门控区域进行门控)。
备选地,如果基于对来自n位宽门控区域的最大可能进位的这种(n-1)估计,以及对于进位区域的实际计算值,进位不可能可能跨进位区域波动或一直传播,并且进入结果区域,则能保证、验证或确保最终结果不可能可能已经受门控区域的影响(无论在那里可能发生了什么)。在这种情况下,不需要计算门控区域,并且通过不计算它已经明智地实现了功率和/或能量节省。
当n位宽门控区域小于尾数中的位数,并且n位宽门控区域完全或至少主要位于对应于平行四边形的向上倾斜的最右边缘(如图所示)的乘数的最低有效位部分中时,对来自n位宽门控区域的最大可能进位的(n-1)估计一般倾向于是相对好的估计。在其中门控区域扩展到此倾斜区域左侧的情况下,这种估计仍然保守地估计最大可能进位(甚至当门控区域的大小大于尾数中的比特数时),并且因此可以可选地被用作最大可能进位的限制。然而,在这种情况下,当证明不是真正必要时,此估计可能倾向于提供一定程度高于执行校正动作的最优假阳性率或似然。作为备选,如果期望的话,在这种情况下可以可选地使用其它方法来降低假阳率。在一些实施例中,进位隔离验证逻辑可以包含基于门控区域的已知宽度以及进位区域的计算值来实现这种判定的逻辑,以便确定是否应采取校正动作。举例来说,对于门控区域的一个或多个支持的位宽中的每一个,对于进位区域允许的最大值可以被存储在进位隔离验证逻辑的查找表中、被硬连线到进位隔离验证逻辑中,等等。
还有,最大可能进位的(n-1)估计一般过于保守地被计算。如果期望的话,通过细化估计能潜在地实现更多的功率节省。(n-1)估计假定对应于门控区域的乘数和被乘数尾数的部分中的所有1。通过将对应于门控区域的乘数和被乘数尾数的部分中的零的数量考虑进去,可以实现更准确的估计。例如,在一些实施例中,可以使用前导零的计数来减少最大可能进位。例如,如果zmc表示对应于门控区域的被乘数尾数部分中的零的计数,并且zmp表示对应于门控区域的乘数尾数部分中的零的计数,则门控区域的最大进位是(zmp和zmc)中的最大值减去1。因而,对来自门控区域的最大进位的更详细估计可以被估计为(n-1)-(max(zmp,zmc)-1)。
根据又一种可能方法,在一些实施例中,进位隔离验证逻辑570可以可操作以确定进位区域中的适当数量的最高有效位是否全部设置为二进制1。在一些实施例中,最高有效位的数量可以等于按照(k-m-log2(2n-k))计算的数量,或可选地可以是大于这个数量的一个或多个位。在此表达式中,变量k可以表示在进位区域与门控区域之间的边界的从最高有效位置所测量的乘法器的加法器的位置(例如,在图5中为28),变量m可以表示在结果区域与进位区域之间的边界的从最高有效位置所测量的乘法器的加法器的位置(例如,在图5中为18),并且变量n表示尾数的位的数量(例如,在此示例中为24)。如果至少这个数量的位全都被设置,则可能无法验证进位不传播,而如果其中一个或多个位未设置,则可以验证进位不会传播。这种方法可能具有一定程度略微高于最优的假阳率,但可能倾向于允许有效的逻辑实现(例如,可以使用相对较小和/或低功耗的电路或其它逻辑来检查这些位并且进行这种确定)。
对于处理其中需要计算门控区域的情形,不同的方式是可能的。如之前所提到的,在一些实施例中,逻辑可以被设计成使得可以可选地完全计算整个尾数乘积,其包含门控区域(即,不对其进行门控)。例如,可以从流水线中转储清除或丢弃之前的计算结果,并且可以从此时开始在流水线中重新开始整个计算,其在计算中包含门控区域。对于其中不需要门控区域的情形,这种方法可倾向于具有相对低的时延,但是当需要门控区域时,可具有全流水线重放的相对高的时延或惩罚。在其它实施例中,可以可选地采用更长的流水线。管线的初始部分可用于计算进位区域。基于用于进位区域的流水线的此初始部分中的计算结果,可以确定是否需要门控区域。流水线的后续部分可用于计算门控区域以及结果区域。流水线的后续部分的门控区域部分可以是门控的或不是门控的,这取决于计算在流水线的初始部分中的结果如何。当门控区域不被门控时,它可以与在流水线的初始部分中执行的计算组合。由于包含进位区域的初始流水线阶段检查,所以无论门控区域是否被门控,时延都可以基本相同。
图6是具有用于进位/门控区域边界680的至少两个不同的可能位置的尾数乘法器658的示例实施例的框图。在一些实施例中,尾数乘法器可以可选地被包含在图1和/或图3的浮点乘加单元中。备选地,尾数乘法器可以可选地被包含在相似的或不同的浮点乘加单元或处理器中。还有,图1和/或图3的浮点乘加单元可以包含与尾数乘法器558相同的、相似的或不同的尾数乘法器。而且,在一些实施例中,尾数乘法器558可用于执行图4的方法452(例如,框454、455和456)。针对尾数乘法器558描述的组件、特征和特定可选细节还可以可选地应用于方法452。备选地,可以用相似的或不同的尾数乘法器来执行方法452。还有,图6的乘法器658与图5的乘法器558具有某些相似性。为了避免使描述模糊不清,将主要描述对于乘法器658不同的和/或附加的特性,而不重复与乘法器558相关的所有可选的相似或共同特性和细节。然而,要领会到,之前描述的乘法器558的特性和细节也可以可选地应用于乘法器658,除非另有声明或否则是显而易见的。
在乘-累加和其它乘加运算中,加数数据元素的大小(例如,其指数的值)可以从一个乘加运算到另一个乘加运算而变化。加数数据元素的这些变化的指数可导致变化的相对移位量或被应用于尾数乘积的对齐。例如,如果乘数和被乘数数据元素的指数之和为4,并且加数数据元素的指数为6,则可以使用两个基数位置的移位来实现基数点对齐。然而,如果乘数和被乘数数据元素的指数之和为4,并且加数数据元素的指数为10,则可以使用6个基数位置的移位来实现基数点对齐。确切地说,将被乘数和乘数的指数相加给了你在实际值之一内的相乘的结果指数。它并不总是确切地是指数的总和,但在一些情况下可能是指数的总和加1。例如,值“111”乘以“111”是“110001”,其中最高有效位位置为5,而不是指数的确切和4(即2+2)。在任何事件中,这种变化的移位量可以使对于进位区域与门控区域之间的边界具有两个或多个不同的可能位置是有益的。例如,这可以允许基于能影响最终的乘加结果并且需要被计算的尾数乘积的不同的位数量的不同量的能量降低。例如,当需要较少的尾数乘积位时,可以使门控区域相对更大,使得能实现更多的功率节省,或者当需要更多的尾数乘积位时,可以使门控区域相对更小,其中能实现更少的功率节省。在一些实施例中,尾数乘法器能耗降低逻辑可以包含进位/门控区域边界选择逻辑688,用以选择用于进位/门控区域边界的两个或多个支持的不同可能位置中的一个。
在图示的示例实施例中,示出了第一可能进位/门控区域边界680-1、第二可能进位/门控区域边界680-2和第三可能进位/门控区域边界680-3。如图所示,在一些实施例中,不同的可能位置680可以跨乘法器的总跨度的显著比例,这可以有助于实现相对宽范围的不同量的可能的能耗降低,尽管这不是必需的。在其它实施例中,可转而可选地使用进位/门控区域边界的更少或更多的可能位置。在一些实施例中,可以可选地支持完全灵活的进位/门控区域边界,其能被放置在任何可能的位置(例如,基于具体的浮点数输入、假阳性的期望似然等)。然而,经常可能是有益的是,对于进位边界转而支持两个、三个或更多个(例如,但经常少于约八个)固定位置,以便获得能够具有不同节能水平而不需要可用于支持完全灵活的进位/门控区域边界的那么多逻辑的许多益处。然而,任何一种方法都是可能的。在图示的示例中,每一个进位区域的宽度都是相同的,尽管也有可能并且预期的是,随着进位/门控区域边界的位置的改变而改变进位区域的宽度(例如,以调整假阳性的似然)可能是有益的。
图7是可操作以至少部分基于加数数据元素(C)706的指数(EC)来选择多个可能的进位/门控区域边界中的一个的进位/门控边界选择逻辑788的示例实施例的框图。乘数数据元素(A)的指数(EA)702和被乘数数据元素(B)的指数(EB)704各自可被提供给指数加法器784。可以将这些指数(EA+EB)的总和提供给指数比较器786。加数数据元素(C)的指数(EC)也可以被提供给指数比较器。指数比较器可操作以将这些输入值相减或以别的方式将这些输入值进行比较,并将对应的输出(例如,这些值之间的差、用来对齐尾数乘积和加数数据元素的基数点的相对偏移等)提供给进位边界选择逻辑788。在一些实施例中,可以在浮点乘加单元处接收到操作数之后相对较快地(例如,在第一周期或两个周期中)完成。进位边界选择逻辑可操作以基于此输入和可选的其它输入790输出进位边界791的选择。其它输入的可能示例包含但不限于:配置的或规定的能耗降低水平或目标、当不真正需要假阳性校正调整时对于假阳性校正调整的配置的或规定的似然、来自功率管理***或软件的输入、热数据、处理器的turbo模式等等。在一些实施例中,进位/门控区域边界791的选择可以被输出到门控逻辑(例如,门控逻辑566),以允许门控逻辑对尾数乘法器的隐含的灵活部分进行门控。
示范性核架构、处理器和计算机架构
处理器核可以以不同的方式、出于不同目的并且在不同处理器中实现。比如,此类核的实现可包含:1)预计用于通用计算的通用有序核;2)预计用于通用计算的高性能通用无序核;3)预计主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包含:1)CPU,包含预计用于通用计算的一个或多个通用有序核和/或预计用于通用计算的一个或多个通用无序核;以及2)协处理器,包含预计主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机***架构,其可包含:1)在与CPU分开的芯片上的协处理器;2)与CPU相同的封装中的单独管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在此情况下,此类协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或者称为专用核);以及4)可在相同管芯上包含所描述的CPU(有时称为应用核或应用处理器)、上述协处理器和附加的功能性的片上***。接下来描述示范核架构,后面是对示范处理器和计算机架构的描述。
示范核架构
有序和无序核框图
图8A是图示根据本发明实施例的示范有序流水线和示范寄存器重命名、无序发布/执行流水线两者的框图。图8B是图示根据本发明实施例的要包含在处理器中的有序架构核的示范实施例和示范寄存器重命名、无序发布/执行架构核二者的框图。图8A-B中的实线框图示了有序流水线和有序核,而虚线框的可选添加图示了寄存器重命名、无序发布/执行流水线和核。鉴于有序方面是无序方面的子集,将描述无序方面。
在图8A中,处理器流水线800包含提取阶段802、长度解码阶段804、解码阶段806、分配阶段808、重命名阶段810、调度(也称为分派或发布)阶段812、寄存器读/存储器读阶段814、执行阶段816、写回/存储器写阶段818、异常处置阶段822和提交阶段824。
图8B示出了处理器核890,其包含耦合到执行引擎单元850的前端单元830,并且二者都耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选核类型。作为又一选项,核890可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元830包含耦合到指令高速缓存单元834的分支预测单元832,高速缓存单元834耦合到指令翻译后援缓冲器 (TLB) 836,TLB 836耦合到指令提取单元838,指令提取单元838耦合到解码单元840。解码单元840(或解码器)可以对指令进行解码,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们从原始指令中解码,或者以别的方式反映,或者从原始指令导出。解码单元840可以使用各种不同的机制实现。适合的机制的示例包含但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包含微代码ROM或存储用于某些宏指令(例如在解码单元840中或否则在前端单元830内)的微代码的其它介质。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包含耦合到引退单元854的重命名/分配器单元852和一组一个或多个调度器单元856。调度器单元856表示任何数量的不同调度器,包含预留站、中央指令窗口等。调度器单元856耦合到物理寄存器堆单元858。每一个物理寄存器堆单元858都表示一个或多个物理寄存器堆,其中的不同寄存器堆存储一个或多个不同数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状况(例如,是要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器堆单元858包括向量寄存器单元、写屏蔽寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量屏蔽寄存器和通用寄存器。物理寄存器堆单元858由引退单元854交叠,以图示在其中可实现寄存器重命名和无序执行的各种方式(例如,通过使用记录器缓冲器和引退寄存器堆;通过使用将来堆、历史缓冲器和引退寄存器堆;通过使用寄存器映射和寄存器池等)。引退单元854和物理寄存器堆单元858耦合到执行集群860。执行集群860包含一组一个或多个执行单元862和一组一个或多个存储器存取单元864。执行单元862可以对各种类型的数据(例如标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种运算(例如移位、加法、减法、乘法)。虽然一些实施例可以包含专用于特定功能或功能集合的多个执行单元,但其它实施例可以仅包含一个执行单元或全都执行所有功能的多个执行单元。调度器单元856、物理寄存器堆单元858和执行集群860被显示为可能是多个,因为某些实施例为某些类型的数据/运算创建了单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器存取流水线,其各自具有它们自己的调度器单元、物理寄存器堆单元和/或执行集群—并且在单独存储器存取流水线的情况下,实现了其中仅这个流水线的执行集群具有存储器存取单元864的某些实施例)。还应该理解,在使用单独流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余的是有序的。
存储器存取单元864的组耦合到存储器单元870,存储器单元870包含耦合到数据高速缓存单元874的数据TLB单元872,数据高速缓存单元874耦合到2级(L2)高速缓存单元876。在一个示范实施例中,存储器存取单元864可以包含加载单元、存储地址单元和存储数据单元,其中每个都耦合到存储器单元870中的数据TLB单元872。指令高速缓存单元834进一步耦合到存储器单元870中的2级(L2)高速缓存单元876。L2高速缓存单元876耦合到一个或多个其它级高速缓存,并且最终耦合到主存储器。
作为示例,示范寄存器重命名、无序发布/执行核架构可以按如下实现流水线800:1)指令提取838执行提取阶段802和长度解码阶段804;2)解码单元840执行解码阶段806;3)重命名/分配器单元852执行分配阶段808和重命名阶段810;4)调度器单元856执行调度阶段812;5)物理寄存器堆单元858和存储器单元870执行寄存器读/存储器读阶段814;执行集群860执行执行阶段816;6)存储器单元870和物理寄存器堆单元858执行写回/存储器写阶段818; 7)在异常处置阶段822中可以涉及各种单元;以及8)引退单元854和物理寄存器堆单元858执行提交阶段824。
核890可以支持一个或多个指令集(例如,x86指令集(具有已经添加有较新版本的一些扩展);加利福尼亚Sunnyvale的MIPS技术公司的MIPS指令集;加利福尼亚Sunnyvale的ARM控股公司的ARM指令集(具有可选的附加扩展,诸如NEON)),其包含本文描述的指令。在一个实施例中,核890包含支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行由许多多媒体应用所使用的操作。
应该理解,核可以支持多线程操作(执行运算或线程的两个或更多个并行集合),并且可用各种各样的方式这么做,这包含时间分片的多线程操作、同时多线程操作(其中单个物理核为物理核正在同时进行多线程操作的每一个线程提供逻辑核)或者它们的组合(例如,诸如在Intel®超线程操作技术中的时间分片的提取和解码以及此后的同时多线程操作)。
虽然寄存器重命名在无序执行的上下文中被描述,但应该理解,寄存器重命名可以被用在有序架构中。虽然图示的处理器实施例还包含单独的指令高速缓存单元834和数据高速缓存单元874以及共享L2高速缓存单元876,但备选实施例可具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,***可包含内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选地,所有高速缓存都可以在核和/或处理器的外部。
特定的示范有序核架构
图9A-B图示了更特定的示范有序核架构的框图,该核将是芯片中的若干逻辑块(包含相同类型和/或不同类型的其它核)之一。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口以及其它必要的I/O逻辑进行通信。
图9A是根据本发明实施例的单个处理器核连同其到管芯上互连网络902的连接以及其2级(L2)高速缓存904的本地子集的框图。在一个实施例中,指令解码器900支持具有打包数据指令集扩展的x86指令集。L1高速缓存906允许对标量和向量单元中的高速缓冲存储器进行低时延访问。虽然在一个实施例中(为了简化设计),标量单元908和向量单元910使用单独的寄存器集(分别是标量寄存器1912和向量寄存器914),并且在它们之间传输的数据被写入存储器,并且然后从1级(L1)高速缓存906中读回,但本发明的备选实施例可以使用不同的方法(例如,使用单个寄存器集或者包含允许数据在两个寄存器堆之间传输而不被写入和读回的通信路径)。
L2高速缓存904的本地子集是全局L2高速缓存的一部分,全局L2高速缓存被划分成单独的本地子集,每个处理器核一个。每个处理器核都具有到它自己的L2高速缓存904的本地子集的直接访问路径。由处理器核读的数据被存储在其L2高速缓存子集904中,并且能与访问它们自己的本地L2高速缓存子集的其它处理器核并行地快速被存取。由处理器核写入的数据被存储在它自己的L2高速缓存子集904中,并且从其它子集转储清除,如果必要的话。环形网络确保对于共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径每个方向都是1012位宽。
图9B是根据本发明实施例的图9A中的处理器核的一部分的展开视图。图9B包含L1高速缓存904的L1数据高速缓存906A部分,以及有关向量单元910和向量寄存器914的更多细节。具体地,向量单元910是16宽向量处理单元(VPU)(参见16宽ALU 928),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持用拌合单元920对寄存器输入进行拌合,用数字转换单元922A-B进行数字转换,以及用存储器输入端上的复制单元924进行复制。写屏蔽寄存器926允许预测引起的向量写入。
具有集成存储器控制器和图形的处理器
图10是根据本发明实施例的处理器1000的框图,处理器1000可具有多于一个的核,可具有集成存储器控制器,并且可具有集成图形。图10中的实线框图示了具有单核1002A、***代理1010、一组一个或多个总线控制器单元1016的处理器1000,而虚线框的可选添加图示了具有多个核1002A-N、***代理单元1010中的一组一个或多个集成存储器控制器单元1014以及专用逻辑1008的备选处理器1000。
从而,处理器1000的不同实现可以包含:1)具有专用逻辑1008和核1002A-N的CPU,专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包含一个或多个核),而核1002A-N是一个或多个通用核(例如,通用有序核、通用无序核、这二者的组合);2)具有是预计主要用于图形和/或科学(吞吐量)的大量专用核的核1002A-N的协处理器;以及3)具有是大量通用有序核的核1002A-N的协处理器。从而,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的许多集成核(MIC)协处理器(包含30个或更多个核)、嵌入式处理器等等。处理器可以实现在一个或多个芯片上。处理器1000可以是一个或多个衬底的一部分,和/或可使用若干工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任何技术实现在一个或多个衬底上。
存储器层级包含在核内的高速缓存的一级或更多级、一组或者一个或多个共享高速缓存单元1006以及耦合到集成存储器控制器单元1014的组的外部存储器(未示出)。共享高速缓存单元1006的组可包含一个或多个中间级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其它级高速缓存、末级高速缓存(LLC)和/或它们的组合。虽然在一个实施例中基于环形的互连单元1012互连集成图形逻辑1008、共享高速缓存单元1006的组和***代理单元1010/集成存储器控制器单元1014,但是备选实施例可以使用任何数量的用于互连此类单元的公知技术。在一个实施例中,在一个或多个高速缓存单元1006与核1002-A-N之间保持一致性。
在一些实施例中,核1002A-N中的一个或多个能够进行多线程操作。***代理1010包含协调和操作核1002A-N的那些组件。***代理单元1010例如可包含功率控制单元(PCU)和显示单元。PCU可以是或者可包含对于调节核1002A-N以及集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构指令集方面可以是同质的或异质的;也就是,核1002A-N中的两个或更多个可能能够执行相同的指令集,而其它核可能能够仅执行该指令集的子集或不同的指令集。
示范计算机架构
图11-21是示范计算机架构的框图。本领域已知的用于膝上型计算机、台式计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置的其它***设计和配置也是适合的。一般而言,能够合并本文所公开的处理器和/或其它执行逻辑的大量的***或电子装置一般是适合的。
现在参考图11,示出了按照本发明一个实施例的***1100的框图。***1100可以包含一个或多个处理器1110、1115,它们耦合到控制器集线器1120。在一个实施例中,控制器集线器1120包含图形存储器控制器集线器(GMCH)1190和输入/输出集线器(IOH)1150(它们可以在单独的芯片上);GMCH 1190包含耦合到存储器1140和协处理器1145的存储器和图形控制器;IOH 1150将输入/输出(I/O)装置1160耦合到GMCH 1190。备选地,存储器和图形控制器中的一个或二者被集成在处理器内(如本文所描述的),存储器1140和协处理器1145直接耦合到处理器1110,以及具有IOH 1150的单个芯片中的控制器集线器1120。
在图11中用虚线标示出附加处理器1115的可选性质。每个处理器1110、1115可以包含本文描述的其中一个或多个处理核,并且可以是处理器1000的某个版本。
存储器1140例如可以是动态随机存取存储器(DRAM)、相变存储器(PCM)或这二者的组合。对于至少一个实施例,控制器集线器1120经由多点总线(诸如前侧总线(FSB))、点对点接口(诸如快速路径互连(QPI))或类似连接1195与处理器1110、1115通信。
在一个实施例中,协处理器1145是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器集线器1120可以包含集成图形加速器。
在物理资源1110、1115之间在包含架构、微架构、热、功耗特性等一系列品质度量方面能存在各种差异。
在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1110将这些协处理器指令识别为应该由附连的协处理器1145执行的类型。因而,处理器1110在协处理器总线或其它互连上向协处理器1145发布这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1145接受并执行接收到的协处理器指令。
现在参考图12,示出了按照本发明实施例的第一更特定的示范***1200的框图。如图12中所示,多处理器***1200是点对点互连***,并且包含经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每个都可以是处理器1000的某一版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一个实施例中,处理器1270和1280分别是处理器1110、协处理器1145。
处理器1270和1280被示出分别包含集成存储器控制器(IMC)单元1272和1282。处理器1270还包含点对点(P-P)接口1276和1278作为其总线控制器单元的一部分;类似地,第二处理器1280包含P-P接口1286和1288。处理器1270、1280可以使用P-P接口电路1278、1288经由点对点(P-P)接口1250互换信息。如图12中所示,IMC 1272和1282将处理器耦合到相应存储器,即存储器1232和存储器1234,它们可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280各自可经由各个P-P接口1252、1254使用点对点接口电路1276、1294、1286、1298与芯片组1290互换信息。芯片组1290可选地可以经由高性能接口1239与协处理器1238互换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可以包含在任一处理器中,或两个处理器的外侧,仍经由P-P互连与处理器连接,使得任一处理器的或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中,如果处理器被置于低功率模式中的话。
芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是***组件互连(PCI)总线,或者诸如PCI高速总线或另一第三代I/O互连总线的总线,不过本发明的范围不限如此。
如图12中所示,各种I/O装置1214可以耦合到第一总线1216,连同将第一总线1216耦合到第二总线1220的总线桥1218。在一个实施例中,一个或多个附加处理器1215(诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其它处理器都耦合到第一总线1216。在一个实施例中,第二总线1020可以是低管脚计数(LPC)总线。在一个实施例中,各种装置可以耦合到第二总线1220,例如包含键盘和/或鼠标1222、通信装置1227和存储单元1228(诸如可包含指令/代码和数据1230的盘驱动器或者其它大容量存储装置)。另外,音频I/O 1224可以耦合到第二总线1220。注意,其它架构是可能的。例如,代替图12的点对点架构,***可以实现多点总线或其它此类架构。
现在参考图13,示出了按照本发明实施例的第二更特定的示范***1300的框图。图12和图13中的相似元件带有相似的参考数字,并且已经从图13中省略了图12的某些方面,以便避免使图13的其它方面模糊不清。
图13图示了处理器1270、1280分别可以包含集成存储器和I/O控制逻辑(“CL”)1272和1282。从而,CL 1272、1282包含集成存储器控制器单元,并且包含I/O控制逻辑。图13图示了不仅存储器1232、1234耦合到CL 1272、1282,而且I/O装置1314也耦合到控制逻辑1272、1282。遗留I/O装置1315耦合到芯片组1290。
现在参考图14,示出了按照本发明实施例的SoC 1400的框图。图10中的类似元件带有相似的参考数字。还有,虚线框是更高级SoC上的可选特征。在图14中,互连单元1402耦合到:应用处理器1410,其包含一组一个或多个核132A-N和共享高速缓存单元1006;***代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个协处理器1420,其可以包含集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及用于耦合到一个或多个外部显示器的显示单元1440。在一个实施例中,协处理器1420包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文公开的机制的实施例可以用硬件、软件、固件或此类实现方法的组合来实现。本发明的实施例可以被实现为在包括至少一个处理器、存储***(包含易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置的可编程***上执行的计算机程序或程序代码。
程序代码(诸如在图12中图示的代码1230)可以被应用于输入指令以执行本文描述的功能,并且生成输出信息。输出信息可以以已知的方式应用于一个或多个输出装置。为了此申请的目的,处理***包含具有处理器(诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何***。
程序代码可以用高级面向过程或面向对象的编程语言实现,以与处理***通信。程序代码也可以用汇编语言或机器语言实现,如果期望的话。实际上,本文描述的机制在范围上不限于任何具体的编程语言。在任何情况下,语言都可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在表示处理器内各种逻辑的机器可读介质上的代表性指令实现,这些指令当由机器读时使机器制作执行本文描述的技术的逻辑。称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并被提供给各种顾客或制造设施,以加载到实际上制造逻辑或处理器的制作机器中。
此类机器可读存储介质可包含但不限于由机器或装置制造或形成的非暂态有形制品布置,这包含存储介质,诸如硬盘、任何其它类型盘,包含软盘、光盘、紧凑盘只读存储器(CD-ROM)、紧凑盘可重写(CD-RW)以及磁光盘、半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡或者适合用于存储电子指令的任何其它类型介质。
因此,本发明的实施例还包含非暂态有形机器可读介质,其含有指令或含有设计数据,诸如硬件描述语言(HDL),其定义本文描述的结构、电路、设备、处理器和/或***特征。此类实施例也可以被称为程序产品。
仿真(包含二进制翻译、代码变形等)
在一些情况下,指令转换器可以用于将指令从源指令集转换到目标指令集。例如,指令转换器可以翻译(例如使用静态二进制翻译、动态二进制翻译,包含动态编译)、变形、仿真或以别的方式将指令转换成要由核处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件或它们的组合实现。指令转换器可以在处理器上、在处理器外或者部分在处理器上且部分在处理器外。
图15是根据本发明的实施例对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,不过备选地,指令转换器可以用软件、固件、硬件或它们的各种组合来实现。图15示出,可以使用x86编译器1504编译高级语言1502的程序以生成x86二进制代码1506,该代码可以由具有至少一个x86指令集核1516的处理器原生地执行。具有至少一个x86指令集核1516的处理器表示能通过兼容地执行或以别的方式处理(1)英特尔x86指令集核的指令集的实质部分或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的对象 代码版本,来与具有至少一个x86指令集核的英特尔处理器执行基本上相同的功能,以便与具有至少一个x86指令集核的英特尔处理器实现基本上相同结果的任何处理器。x86编译器1504表示可操作以生成x86二进制代码1506(例如对象代码)的编译器,该二进制代码1506能在具有或没有附加联动处理的情况下在具有至少一个x86指令集核1516的处理器上被执行。类似地,图15示出采用高级语言1502的程序可以使用备选指令集编译器1508进行编译以生成备选指令集二进制代码1510,该二进制代码可由没有至少一个x86指令集核1514的处理器(例如,具有执行加利福尼亚Sunnyvale的MIPS技术公司的MIPS指令集和/或执行加利福尼亚Sunnyvale的ARM控股公司的ARM指令集的核的处理器)原生地执行。指令转换器1512被用于将x86二进制代码1506转换成可由没有x86指令集核1514的处理器原生地执行的代码。这个转换的代码不太可能与备选指令集二进制代码1510相同,因为能够这样的指令转换器难以制造;然而,转换的代码将完成一般操作,并且由来自备选指令集的指令组成。从而,指令转换器1512表示通过仿真、模拟或任何其它过程允许没有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1506的软件、固件、硬件或它们的组合。
针对本文公开的任何浮点乘加器和/或乘法器描述的组件、特征和细节可以可选地应用于本文公开的任何方法,其在实施例中可以可选地由和/或用此类处理器执行。本文在实施例中描述的任何处理器都可以可选地包含在本文公开的任何***(例如,图11-14的任何***)中。
本文公开的处理器组件可以被说成是操作以、配置成、有能力或能够执行操作。为清晰起见,要理解到,这些表述并不暗示处理器组件处于操作中或处于使用中,而是指处理器组件当它们处于操作中时有能力做或者能够做什么,但是在设备权利要求中,这些处理器组件不处于操作中。
在说明书和权利要求书中,可能已经使用了术语“耦合”和/或“连接”连同它们的派生词。这些术语不意图作为彼此的同义词。而是,在实施例中,“连接”可用于指示两个或更多个元件彼此直接物理和/或电气接触。“耦合”可意味着,两个或更多个元件彼此直接物理和/或电气接触。然而,“耦合”还可意味着,两个或更多个元件彼此不直接接触,但彼此仍协同操作或交互。
可能已经使用了术语“和/或”。如本文所使用的,术语“和/或”意味着一个或另一个或二者(例如A和/或B意味着A或B或A和B二者)。
在以上描述中,已经阐述了特定细节以便提供对实施例的透彻理解。然而,其它实施例可以在没有这些特定细节中的一些细节的情况下实施。本发明的范围不由上面提供的特定示例确定,而仅由下面的权利要求书确定。在其它实例中,众所周知的电路、结构、装置和操作已经以框图形式和/或在没有细节的情况下被示出,以便避免使对描述的理解模糊不清。在被认为合适的情况下,参考数字或参考数字的末端部分已在附图中被重复,以指示对应的或类同的元件,它们可以可选地具有类似的或相同的特性,除非另有规定,或否则是显而易见的。
在此说明书通篇例如对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的参考指示,具体特征可以被包含在本发明的实践中,但不一定需要这样。类似地,在描述中,各种特征有时一起被分组在单个实施例、附图或其描述中,这为了使本公开流畅,并有助于理解各个发明方面。然而,公开的此方法不要被解释为反映本发明需要比在每个权利要求中明确阐述的特征更多的特征的意图。而是,如以下权利要求所反映的,发明的方面在于比单个公开的实施例的所有特征更少。从而,在具体实施方式后的权利要求由此被明确合并到此具体实施方式中,其中每个权利要求自身作为本发明的独立实施例。
示例实施例
以下示例属于另外的实施例。示例中的细节可在一个或多个实施例中的任何地方被使用。
示例1是一种处理器,包括浮点乘加单元,所述浮点乘加单元具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入。所述浮点乘加单元包含尾数乘法器,其用来将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积。所述尾数乘法器包含:最高有效位部分,用来计算所述尾数乘积的最高有效位;以及最低有效位部分,用来计算所述尾数乘积的最低有效位。所述尾数乘法器具有所述最低有效位部分的多个不同的可能大小。包含能耗降低逻辑以选择性地降低所述最低有效位部分的能耗,但不降低所述最高有效位部分的能耗,以使所述最低有效位部分不计算所述尾数乘积的所述最低有效位。
示例2包含示例1的所述处理器,进一步包括用来至少部分基于所述浮点加数数据元素来选择所述最低有效位部分的所述多个不同的可能大小中的一个的逻辑。
示例3包含示例2的所述处理器,其中所述逻辑用来至少部分基于所述浮点加数数据元素的指数来选择所述一个大小。
示例4包含示例3的所述处理器,其中所述逻辑用来至少部分基于所述浮点加数数据元素的所述指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述一个大小。
示例5包含示例1至4中任一示例的所述处理器,其中所述尾数乘法器进一步包括中间部分,所述中间部分耦合在所述最高有效位部分和所述最低有效位部分之间,用以计算将在所述最高有效位和所述最低有效位之间的所述尾数乘积的中间位。
示例6包含示例5的所述处理器,其中所述能耗降低逻辑包括用于基于所述中间位来确定所述最低有效位是否可能已经影响了所述尾数乘积的所述最高有效位的逻辑。
示例7包含示例5至6中任一示例的所述处理器,其中所述中间部分在流水线的初始部分中,并且所述最低有效位部分在所述流水线的后续部分中。
示例8包含示例5至6中任一示例的所述处理器,其中所述中间部分和所述最低有效位部分在所述流水线的相同部分中。
示例9包含示例1至8中任一示例的所述处理器,其中所述最高有效位部分用来计算要被加到所述浮点加数数据元素的尾数的所述尾数乘积的所有最高有效位。
示例10包含示例1至9中任一示例的所述处理器,其中所述能耗降低逻辑包括时钟门逻辑,所述时钟门逻辑耦合到所述最低有效位部分,用以选择性地对到所述最低有效位部分的时钟信号进行门控,但不对到所述最高有效位部分的时钟信号进行门控。
示例11包含示例1至10中任一示例的所述处理器,其中所述尾数乘法器具有所述最低有效位部分的至少三个不同的可能大小。
示例12包含示例1至11中任一示例的所述处理器,其中所述尾数乘法器包括53位乘53位乘法器。
示例13包含示例1至11中任一示例的所述处理器,其中所述尾数乘法器包括24位乘24位乘法器。
示例14包含示例1至11中任一示例的所述处理器,其中所述尾数乘法器包括11位乘11位乘法器。
示例15是一种在处理器中的方法,所述方法包括对浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素启动浮点乘加运算。所述方法还包括将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,而不计算所述尾数乘积的具有至少部分基于所述浮点加数数据元素的大小的最低有效位部分。
示例16包含示例15的所述方法,进一步包括:至少部分基于所述浮点加数数据元素的指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述大小。
示例17包含示例15至16中任一示例的所述方法,进一步包括:至少部分基于所述浮点加数数据元素从多个不同的可能大小中选择所述大小。
示例18包含示例15至17中任一示例的所述方法,进一步包括:计算所述尾数乘积的所述最低有效位部分与所述尾数乘积的最高有效位部分之间的所述尾数乘积的中间部分;以及基于所述中间部分确定所述尾数乘积的最低有效位部分是否可能已经影响了所述尾数乘积的所述最高有效位部分。
示例19包含示例15至18中任一示例的所述方法,进一步包括:选择性地降低与所述尾数乘积的所述最低有效部分对应的尾数乘法器的部分的能耗,而不降低与所述尾数乘积的最高有效部分对应的所述尾数乘法器的部分的能耗。
示例20包含示例19的所述方法,其中所述选择性地降低所述能耗包括对与所述尾数乘积的所述最低有效部分对应的所述尾数乘法器的所述部分进行时钟门控。
示例21是一种计算机***,其包含总线或其它互连、与互连耦合的存储器以及与互连耦合的处理器。所述处理器包含浮点乘加单元,所述乘法单元具有耦合以接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入。所述浮点乘加单元包含尾数乘法器以将浮点乘数数据元素的尾数和浮点被乘数数据元素的尾数相乘以计算尾数乘积。所述尾数乘法器包含计算尾数乘积的最高有效位的最高有效位部分、计算尾数乘积的最低有效位的最低有效位部分。所述尾数乘法器具有最低有效位部分的多个不同的可能大小。在所述处理器中还包含能耗降低逻辑以选择性地降低最低有效位部分的能耗,但不降低最高有效位部分的能耗,以使最低有效位部分不计算所述尾数乘积的最低有效位。
示例22包含示例21的所述计算机***,进一步包括:用来至少部分基于所述浮点加数数据元素来选择所述最低有效位部分的所述多个不同的可能大小中的一个的逻辑。
示例23包含示例21至22中任一示例的所述计算机***,其中所述尾数乘法器进一步包括中间部分,所述中间部分耦合在所述最高有效位部分和所述最低有效位部分之间,用以计算将在所述最高有效位和所述最低有效位之间的所述尾数乘积的中间位。并且其中所述能耗降低逻辑包括用于基于所述中间位来确定所述最低有效位是否可能已经影响了所述尾数乘积的所述最高有效位的逻辑。
示例24包含示例23的所述计算机***,其中所述中间部分在流水线的初始部分中,并且所述最低有效位部分在所述流水线的后续部分中。
示例25包含示例21至24中任一示例的所述计算机***,其中所述能耗降低逻辑包含时钟门逻辑,所述时钟门逻辑耦合到所述最低有效位部分,用以选择性地对到所述最低有效位部分的时钟信号进行门控,但不对到所述最高有效位部分的时钟信号进行门控。
示例26包含片上***,片上***包含至少一个互连、与所述至少一个互连耦合的示例1至15中任一示例的处理器、与所述至少一个互连耦合的可选图形处理单元(GPU)、与所述至少一个互连耦合的可选数字信号处理器(DSP)、与所述至少一个互连耦合的可选显示器控制器、与所述至少一个互连耦合的可选存储器控制器、与所述至少一个互连耦合的可选无线调制解调器、与所述至少一个互连耦合的可选图像信号处理器、与所述至少一个互连耦合的可选通用串行总线(USB)3.0兼容控制器、与所述至少一个互连耦合的可选蓝牙4.1兼容控制器以及与所述至少一个互连耦合的可选无线收发器控制器。
示例27是可操作以执行示例15至20中任一示例的所述方法的处理器或其它设备。
示例28是处理器或其它设备,其包含用于执行示例15至20中任一示例的方法的部件。
示例29是处理器或其它设备,其包含可操作以执行示例15至20中任一示例的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
示例30是基本上如本文所描述的处理器或其它设备。
示例31是可操作以执行基本上如本文所描述的任何方法的处理器或其它设备。
Claims (25)
1.一种处理器,包括:
浮点乘加单元,所述浮点乘加单元具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入,所述浮点乘加单元包含:
尾数乘法器,用来将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,所述尾数乘法器包含:
最高有效位部分,用来计算所述尾数乘积的最高有效位;
最低有效位部分,用来计算所述尾数乘积的最低有效位,其中所述尾数乘法器具有所述最低有效位部分的多个不同的可能大小;以及
第一逻辑,用来选择性地降低所述最低有效位部分的能耗,但不降低所述最高有效位部分的能耗,以使所述最低有效位部分不计算所述尾数乘积的所述最低有效位。
2.如权利要求1所述的处理器,进一步包括用来至少部分基于所述浮点加数数据元素来选择所述最低有效位部分的所述多个不同的可能大小中的一个的逻辑。
3.如权利要求2所述的处理器,其中所述逻辑用来至少部分基于所述浮点加数数据元素的指数来选择所述一个大小。
4.如权利要求3所述的处理器,其中所述逻辑用来至少部分基于所述浮点加数数据元素的所述指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述一个大小。
5.如权利要求1所述的处理器,其中所述尾数乘法器进一步包括中间部分,所述中间部分耦合在所述最高有效位部分和所述最低有效位部分之间,用以计算将在所述最高有效位和所述最低有效位之间的所述尾数乘积的中间位。
6.如权利要求5所述的处理器,其中所述第一逻辑包括用于基于所述中间位来确定所述最低有效位是否可能已经影响了所述尾数乘积的所述最高有效位的逻辑。
7.如权利要求5所述的处理器,其中所述中间部分在流水线的初始部分中,并且所述最低有效位部分在所述流水线的后续部分中。
8.如权利要求5所述的处理器,其中所述中间部分和所述最低有效位部分在所述流水线的相同部分中。
9.如权利要求1至8中任一项所述的处理器,其中所述最高有效位部分用来计算要被加到所述浮点加数数据元素的尾数的所述尾数乘积的所有最高有效位。
10.如权利要求1至8中任一项所述的处理器,其中所述第一逻辑包括时钟门逻辑,所述时钟门逻辑耦合到所述最低有效位部分,用以选择性地对到所述最低有效位部分的时钟信号进行门控,但不对到所述最高有效位部分的时钟信号进行门控。
11.如权利要求1至8中任一项所述的处理器,其中所述尾数乘法器具有所述最低有效位部分的至少三个不同的可能大小。
12.如权利要求1至8中任一项所述的处理器,其中所述尾数乘法器包括53位乘53位乘法器。
13.如权利要求1至8中任一项所述的处理器,其中所述尾数乘法器包括24位乘24位乘法器。
14.如权利要求1至8中任一项所述的处理器,其中所述尾数乘法器包括11位乘11位乘法器。
15. 一种在处理器中的方法,包括:
对浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素启动浮点乘加运算;以及
将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,而不计算所述尾数乘积的具有至少部分基于所述浮点加数数据元素的大小的最低有效位部分。
16.如权利要求15所述的方法,进一步包括:至少部分基于所述浮点加数数据元素的指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述大小。
17.如权利要求15所述的方法,进一步包括:至少部分基于所述浮点加数数据元素从多个不同的可能大小中选择所述大小。
18. 如权利要求15所述的方法,进一步包括:
计算所述尾数乘积的所述最低有效位部分与所述尾数乘积的最高有效位部分之间的所述尾数乘积的中间部分;以及
基于所述中间部分确定所述尾数乘积的最低有效位部分是否可能已经影响了所述尾数乘积的所述最高有效位部分。
19.如权利要求15所述的方法,进一步包括:选择性地降低与所述尾数乘积的所述最低有效部分对应的尾数乘法器的部分的能耗,而不降低与所述尾数乘积的最高有效部分对应的所述尾数乘法器的部分的能耗。
20.如权利要求19所述的方法,其中所述选择性地降低所述能耗包括对与所述尾数乘积的所述最低有效部分对应的所述尾数乘法器的所述部分进行时钟门控。
21.一种计算机***,包括:
互连;
与所述互连耦合的存储器;以及
与所述互连耦合的处理器,所述处理器包括:
浮点乘加单元,所述浮点乘加单元具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入,所述浮点乘加单元包含:
尾数乘法器,用来将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,所述尾数乘法器包含:
最高有效位部分,用来计算所述尾数乘积的最高有效位;
最低有效位部分,用来计算所述尾数乘积的最低有效位,其中所述尾数乘法器具有所述最低有效位部分的多个不同的可能大小;以及
第一逻辑,用来选择性地降低所述最低有效位部分的能耗,但不降低所述最高有效位部分的能耗,以使所述最低有效位部分不计算所述尾数乘积的所述最低有效位。
22.如权利要求21所述的计算机***,进一步包括:用来至少部分基于所述浮点加数数据元素来选择所述最低有效位部分的所述多个不同的可能大小中的一个的逻辑。
23.如权利要求21所述的计算机***,其中所述尾数乘法器进一步包括中间部分,所述中间部分耦合在所述最高有效位部分和所述最低有效位部分之间,用以计算将在所述最高有效位和所述最低有效位之间的所述尾数乘积的中间位,并且其中所述第一逻辑包括用于基于所述中间位来确定所述最低有效位是否可能已经影响了所述尾数乘积的所述最高有效位的逻辑。
24.一种设备,包括用于执行如权利要求15至20中任一项所述的方法的部件。
25.一种处理器,包括:
浮点乘加单元,所述浮点乘加单元具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入,所述浮点乘加单元包含:
尾数乘法器,用来将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,所述尾数乘法器包含:
用于计算所述尾数乘积的最高有效位的第一部件;
用于计算所述尾数乘积的最低有效位的第二部件,其中所述尾数乘法器具有所述最低有效位部分的多个不同的可能大小;以及
用于选择性地降低所述第二部件的能耗,而不降低所述第一部件的能耗,以使所述第二部件不计算所述尾数乘积的所述最低有效位的第三部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/283,295 US10402168B2 (en) | 2016-10-01 | 2016-10-01 | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US15/283295 | 2016-10-01 | ||
PCT/US2017/050663 WO2018063777A1 (en) | 2016-10-01 | 2017-09-08 | Low energy consumption mantissa multiplication for floating point multiply-add operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643228A true CN109643228A (zh) | 2019-04-16 |
CN109643228B CN109643228B (zh) | 2023-04-18 |
Family
ID=61758781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780053811.XA Active CN109643228B (zh) | 2016-10-01 | 2017-09-08 | 用于浮点乘加运算的低能耗尾数乘法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10402168B2 (zh) |
EP (1) | EP3519938A4 (zh) |
CN (1) | CN109643228B (zh) |
WO (1) | WO2018063777A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110265002A (zh) * | 2019-06-04 | 2019-09-20 | 北京清微智能科技有限公司 | 语音识别方法、装置、计算机设备及计算机可读存储介质 |
CN110442323A (zh) * | 2019-08-09 | 2019-11-12 | 复旦大学 | 进行浮点数或定点数乘加运算的架构和方法 |
CN112596697A (zh) * | 2019-10-02 | 2021-04-02 | 脸谱公司 | 使用分解的分量数字的浮点乘法硬件 |
CN114461176A (zh) * | 2022-04-12 | 2022-05-10 | 北京象帝先计算技术有限公司 | 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备 |
WO2023124561A1 (zh) * | 2021-12-31 | 2023-07-06 | 华为技术有限公司 | 电路、乘加器和电路优化方法 |
CN116700666A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 一种浮点数处理方法及装置 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
KR20180073118A (ko) * | 2016-12-22 | 2018-07-02 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
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 |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | 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 |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
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 |
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 |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | 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 |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
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 |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with 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 |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
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 |
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 |
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 |
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 |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations 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 |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation 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 |
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 |
US20210312012A1 (en) * | 2020-04-07 | 2021-10-07 | Samsung Electronics Co., Ltd. | Neural network device, method of operating the neural network device, and application processor including the neural network device |
CN111984224B (zh) * | 2020-08-24 | 2024-04-23 | 中国海洋大学 | 用于auv运动控制器的浮点数乘加ip核及控制方法 |
CN114816329B (zh) * | 2022-04-02 | 2024-04-30 | 杭州缘及科技有限公司 | 用于实现基4 Booth乘法器的32位加法器及其实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070203967A1 (en) * | 2006-02-27 | 2007-08-30 | Dockser Kenneth A | Floating-point processor with reduced power requirements for selectable subprecision |
CN101174200A (zh) * | 2007-05-18 | 2008-05-07 | 清华大学 | 一种浮点乘加融合单元的五级流水线结构 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
CN102349049A (zh) * | 2009-03-16 | 2012-02-08 | 超威半导体公司 | 快速检测浮点单元中的移位的机制 |
CN104778028A (zh) * | 2014-01-15 | 2015-07-15 | Arm有限公司 | 乘加器 |
Family Cites Families (158)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE291755T1 (de) | 1991-07-08 | 2005-04-15 | Seiko Epson Corp | Risc-prozessor mit erweiterbarer architektur |
US5574944A (en) | 1993-12-15 | 1996-11-12 | Convex Computer Corporation | System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context |
US5787029A (en) * | 1994-12-19 | 1998-07-28 | Crystal Semiconductor Corp. | Ultra low power multiplier |
US5734601A (en) * | 1995-01-30 | 1998-03-31 | Cirrus Logic, Inc. | Booth multiplier with low power, high performance input circuitry |
US5818743A (en) * | 1995-04-21 | 1998-10-06 | Texas Instruments Incorporated | Low power multiplier |
US6020139A (en) | 1995-04-25 | 2000-02-01 | Oridigm Corporation | S-adenosyl methionine regulation of metabolic pathways and its use in diagnosis and therapy |
US5805827A (en) | 1996-03-04 | 1998-09-08 | 3Com Corporation | Distributed signal processing for data channels maintaining channel bandwidth |
US6088780A (en) | 1997-03-31 | 2000-07-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address |
US5840598A (en) * | 1997-08-14 | 1998-11-24 | Micron Technology, Inc. | LOC semiconductor assembled with room temperature adhesive |
US6604120B1 (en) * | 1997-09-04 | 2003-08-05 | Cirrus Logic, Inc. | Multiplier power saving design |
US5930484A (en) | 1997-09-18 | 1999-07-27 | International Business Machines Corporation | Method and system for input/output control in a multiprocessor system utilizing simultaneous variable-width bus access |
US6141747A (en) | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6314503B1 (en) | 1998-12-30 | 2001-11-06 | Emc Corporation | Method and apparatus for managing the placement of data in a storage system to achieve increased system performance |
US6393536B1 (en) | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6205533B1 (en) | 1999-08-12 | 2001-03-20 | Norman H. Margolus | Mechanism for efficient data access and communication in parallel computations on an emulated spatial lattice |
JP2001109661A (ja) | 1999-10-14 | 2001-04-20 | Hitachi Ltd | キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム |
US6601126B1 (en) | 2000-01-20 | 2003-07-29 | Palmchip Corporation | Chip-core framework for systems-on-a-chip |
EP1342364A2 (en) | 2000-11-28 | 2003-09-10 | SeaChange International, Inc. | Content/service handling and delivery |
GB2370381B (en) | 2000-12-19 | 2003-12-24 | Picochip Designs Ltd | Processor architecture |
US7290162B2 (en) | 2001-02-14 | 2007-10-30 | Clearspeed Solutions Limited | Clock distribution system |
US6725364B1 (en) | 2001-03-08 | 2004-04-20 | Xilinx, Inc. | Configurable processor system |
GB2374242B (en) | 2001-04-07 | 2005-03-16 | Univ Dundee | Integrated circuit and related improvements |
AU2002344288A1 (en) | 2001-05-25 | 2002-12-09 | Annapolis Micro Systems, Inc. | Method and apparatus for modeling dataflow systems and realization to hardware |
US20020184291A1 (en) | 2001-05-31 | 2002-12-05 | Hogenauer Eugene B. | Method and system for scheduling in an adaptable computing engine |
US6874079B2 (en) | 2001-07-25 | 2005-03-29 | Quicksilver Technology | Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks |
US20030023830A1 (en) | 2001-07-25 | 2003-01-30 | Hogenauer Eugene B. | Method and system for encoding instructions for a VLIW that reduces instruction memory requirements |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US20030105799A1 (en) | 2001-12-03 | 2003-06-05 | Avaz Networks, Inc. | Distributed processing architecture with scalable processing layers |
US7047374B2 (en) | 2002-02-25 | 2006-05-16 | Intel Corporation | Memory read/write reordering |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US7987479B1 (en) | 2002-03-28 | 2011-07-26 | Cisco Technology, Inc. | System and method for distribution of content over a network |
US6922714B2 (en) | 2002-05-09 | 2005-07-26 | International Business Machines Corporation | Floating point unit power reduction scheme |
JP2004005249A (ja) | 2002-05-31 | 2004-01-08 | Fujitsu Ltd | 負荷分散型マルチプロセッサに対する信号振分装置 |
US6986131B2 (en) | 2002-06-18 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for efficient code generation for modulo scheduled uncounted loops |
US20040001458A1 (en) | 2002-06-27 | 2004-01-01 | Motorola, Inc. | Method and apparatus for facilitating a fair access to a channel by participating members of a group communication system |
US7486678B1 (en) | 2002-07-03 | 2009-02-03 | Greenfield Networks | Multi-slice network processor |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7181578B1 (en) | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
US6983456B2 (en) | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7137021B2 (en) * | 2003-05-15 | 2006-11-14 | International Business Machines Corporation | Power saving in FPU with gated power based on opcodes and data |
US20050025120A1 (en) | 2003-06-18 | 2005-02-03 | O'toole Anthony J.P. | Event scheduling for multi-port xDSL transceivers |
US7714870B2 (en) | 2003-06-23 | 2010-05-11 | Intel Corporation | Apparatus and method for selectable hardware accelerators in a data driven architecture |
US7088371B2 (en) | 2003-06-27 | 2006-08-08 | Intel Corporation | Memory command handler for use in an image signal processor having a data driven architecture |
US20130111188A9 (en) | 2003-07-24 | 2013-05-02 | Martin Vorbach | Low latency massive parallel data processing device |
EP1676208A2 (en) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
US7257665B2 (en) | 2003-09-29 | 2007-08-14 | Intel Corporation | Branch-aware FIFO for interprocessor data sharing |
US20050138323A1 (en) | 2003-12-18 | 2005-06-23 | Intel Corporation, A Delaware Corporation | Accumulator shadow register systems and methods |
JP4104538B2 (ja) | 2003-12-22 | 2008-06-18 | 三洋電機株式会社 | リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路 |
JP4502650B2 (ja) | 2004-02-03 | 2010-07-14 | 日本電気株式会社 | アレイ型プロセッサ |
JP4546775B2 (ja) | 2004-06-30 | 2010-09-15 | 富士通株式会社 | 時分割多重処理可能なリコンフィギュラブル回路 |
US7877748B2 (en) | 2004-11-19 | 2011-01-25 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for timing information flow in a distributed system |
US7613886B2 (en) | 2005-02-08 | 2009-11-03 | Sony Computer Entertainment Inc. | Methods and apparatus for synchronizing data access to a local memory in a multi-processor system |
US7546331B2 (en) * | 2005-03-17 | 2009-06-09 | Qualcomm Incorporated | Low power array multiplier |
US7793040B2 (en) | 2005-06-01 | 2010-09-07 | Microsoft Corporation | Content addressable memory architecture |
US8275976B2 (en) | 2005-08-29 | 2012-09-25 | The Invention Science Fund I, Llc | Hierarchical instruction scheduler facilitating instruction replay |
US8099556B2 (en) | 2005-09-13 | 2012-01-17 | Arm Limited | Cache miss detection in a data processing apparatus |
JP2007079958A (ja) | 2005-09-14 | 2007-03-29 | Hitachi Ltd | 記憶制御装置、データ処理方法、及びコンピュータプログラム |
US8620623B2 (en) | 2005-11-14 | 2013-12-31 | Globaltrak, Llc | Hierarchical and distributed information processing architecture for a container security system |
US20070143546A1 (en) | 2005-12-21 | 2007-06-21 | Intel Corporation | Partitioned shared cache |
EP1808774A1 (en) | 2005-12-22 | 2007-07-18 | St Microelectronics S.A. | A hierarchical reconfigurable computer architecture |
JP4795025B2 (ja) | 2006-01-13 | 2011-10-19 | キヤノン株式会社 | ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム |
DE112006003875T5 (de) | 2006-05-16 | 2009-06-18 | Intel Corporation, Santa Clara | Gleitkommaaddition für unterschiedliche Gleitkommaformate |
US7594055B2 (en) | 2006-05-24 | 2009-09-22 | International Business Machines Corporation | Systems and methods for providing distributed technology independent memory controllers |
US8456191B2 (en) | 2006-06-21 | 2013-06-04 | Element Cxi, Llc | Data-driven integrated circuit architecture |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US8010766B2 (en) | 2006-10-12 | 2011-08-30 | International Business Machines Corporation | Increasing buffer locality during multiple table access operations |
US7660911B2 (en) | 2006-12-20 | 2010-02-09 | Smart Modular Technologies, Inc. | Block-based data striping to flash memory |
US20090300324A1 (en) | 2007-01-19 | 2009-12-03 | Nec Corporation | Array type processor and data processing system |
JP4933284B2 (ja) | 2007-01-25 | 2012-05-16 | 株式会社日立製作所 | ストレージ装置及び負荷分散方法 |
US8321597B2 (en) | 2007-02-22 | 2012-11-27 | Super Talent Electronics, Inc. | Flash-memory device with RAID-type controller |
US8543742B2 (en) | 2007-02-22 | 2013-09-24 | Super Talent Electronics, Inc. | Flash-memory device with RAID-type controller |
US7843215B2 (en) | 2007-03-09 | 2010-11-30 | Quadric, Inc. | Reconfigurable array to compute digital algorithms |
US7613909B2 (en) | 2007-04-17 | 2009-11-03 | Xmos Limited | Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor |
US7779298B2 (en) | 2007-06-11 | 2010-08-17 | International Business Machines Corporation | Distributed job manager recovery |
US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
US8295306B2 (en) | 2007-08-28 | 2012-10-23 | Cisco Technologies, Inc. | Layer-4 transparent secure transport protocol for end-to-end application protection |
KR101312281B1 (ko) | 2007-11-06 | 2013-09-30 | 재단법인서울대학교산학협력재단 | 프로세서 및 메모리 제어 방법 |
US8160975B2 (en) | 2008-01-25 | 2012-04-17 | Mcafee, Inc. | Granular support vector machine with random granularity |
WO2009115581A2 (en) | 2008-03-19 | 2009-09-24 | Cryo-Save Ag | Improved cryopreservation of adipose tissue for the isolation of mesenchymal stem cells |
RU2374684C1 (ru) | 2008-05-04 | 2009-11-27 | Государственное образовательное учреждение высшего профессионального образования Курский государственный технический университет | Параллельно-конвейерное устройство для векторизации аэрокосмических изображений земной поверхности |
US8843691B2 (en) | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
JP5056644B2 (ja) | 2008-07-18 | 2012-10-24 | 富士通セミコンダクター株式会社 | データ変換装置、データ変換方法及びプログラム |
US8078848B2 (en) | 2009-01-09 | 2011-12-13 | Micron Technology, Inc. | Memory controller having front end and back end channels for modifying commands |
US8086783B2 (en) | 2009-02-23 | 2011-12-27 | International Business Machines Corporation | High availability memory system |
US8055816B2 (en) | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8576714B2 (en) | 2009-05-29 | 2013-11-05 | Futurewei Technologies, Inc. | System and method for relay node flow control in a wireless communications system |
US20110004742A1 (en) | 2009-07-06 | 2011-01-06 | Eonsil, Inc. | Variable-Cycle, Event-Driven Multi-Execution Flash Processor |
US8301803B2 (en) | 2009-10-23 | 2012-10-30 | Samplify Systems, Inc. | Block floating point compression of signal data |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US8495341B2 (en) | 2010-02-17 | 2013-07-23 | International Business Machines Corporation | Instruction length based cracking for instruction of variable length storage operands |
WO2011133030A1 (en) | 2010-04-23 | 2011-10-27 | Vector Fabrics B.V. | Improved embedded system performance |
US8438341B2 (en) | 2010-06-16 | 2013-05-07 | International Business Machines Corporation | Common memory programming |
US8719455B2 (en) | 2010-06-28 | 2014-05-06 | International Business Machines Corporation | DMA-based acceleration of command push buffer between host and target devices |
US9201801B2 (en) | 2010-09-15 | 2015-12-01 | International Business Machines Corporation | Computing device with asynchronous auxiliary execution unit |
TWI425357B (zh) | 2010-09-27 | 2014-02-01 | Silicon Motion Inc | 用來進行區塊管理之方法以及記憶裝置及控制器 |
KR101735677B1 (ko) | 2010-11-17 | 2017-05-16 | 삼성전자주식회사 | 부동 소수점의 복합 연산장치 및 그 연산방법 |
US9026769B1 (en) | 2011-01-31 | 2015-05-05 | Marvell International Ltd. | Detecting and reissuing of loop instructions in reorder structure |
US9170846B2 (en) | 2011-03-29 | 2015-10-27 | Daniel Delling | Distributed data-parallel execution engines for user-defined serial problems using branch-and-bound algorithm |
US8799880B2 (en) | 2011-04-08 | 2014-08-05 | Siemens Aktiengesellschaft | Parallelization of PLC programs for operation in multi-processor environments |
US9817700B2 (en) | 2011-04-26 | 2017-11-14 | International Business Machines Corporation | Dynamic data partitioning for optimal resource utilization in a parallel data processing system |
US10078620B2 (en) | 2011-05-27 | 2018-09-18 | New York University | Runtime reconfigurable dataflow processor with multi-port memory access module |
US9811783B2 (en) | 2011-06-24 | 2017-11-07 | Jobvite, Inc. | Method and system for channel optimization |
US9148495B2 (en) | 2011-07-26 | 2015-09-29 | International Business Machines Corporation | Dynamic runtime choosing of processing communication methods |
US8990452B2 (en) | 2011-07-26 | 2015-03-24 | International Business Machines Corporation | Dynamic reduction of stream backpressure |
US9201817B2 (en) | 2011-08-03 | 2015-12-01 | Montage Technology (Shanghai) Co., Ltd. | Method for allocating addresses to data buffers in distributed buffer chipset |
US8694754B2 (en) | 2011-09-09 | 2014-04-08 | Ocz Technology Group, Inc. | Non-volatile memory-based mass storage devices and methods for writing data thereto |
US8898505B2 (en) | 2011-12-01 | 2014-11-25 | International Business Machines Corporation | Dynamically configureable placement engine |
US8892914B2 (en) | 2011-12-08 | 2014-11-18 | Active-Semi, Inc. | Programmable fault protect for processor controlled high-side and low-side drivers |
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 |
US9146775B2 (en) | 2012-04-26 | 2015-09-29 | International Business Machines Corporation | Operator graph changes in response to dynamic connections in stream computing applications |
US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US8995410B2 (en) | 2012-05-25 | 2015-03-31 | University Of Southern California | Airsync: enabling distributed multiuser MIMO with full multiplexing gain |
US9213571B2 (en) | 2012-06-06 | 2015-12-15 | 2236008 Ontario Inc. | System and method for changing abilities of a process |
US9110713B2 (en) | 2012-08-30 | 2015-08-18 | Qualcomm Incorporated | Microarchitecture for floating point fused multiply-add with exponent scaling |
US9063974B2 (en) | 2012-10-02 | 2015-06-23 | Oracle International Corporation | Hardware for table scan acceleration |
US9829956B2 (en) * | 2012-11-21 | 2017-11-28 | Nvidia Corporation | Approach to power reduction in floating-point operations |
US9104474B2 (en) | 2012-12-28 | 2015-08-11 | Intel Corporation | Variable precision floating point multiply-add circuit |
US9268528B2 (en) * | 2013-05-23 | 2016-02-23 | Nvidia Corporation | System and method for dynamically reducing power consumption of floating-point logic |
US9715389B2 (en) | 2013-06-25 | 2017-07-25 | Advanced Micro Devices, Inc. | Dependent instruction suppression |
US9424079B2 (en) | 2013-06-27 | 2016-08-23 | Microsoft Technology Licensing, Llc | Iteration support in a heterogeneous dataflow engine |
US9292076B2 (en) | 2013-09-16 | 2016-03-22 | Intel Corporation | Fast recalibration circuitry for input/output (IO) compensation finite state machine power-down-exit |
US9244827B2 (en) | 2013-09-25 | 2016-01-26 | Intel Corporation | Store address prediction for memory disambiguation in a processing device |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US10591983B2 (en) | 2014-03-14 | 2020-03-17 | Wisconsin Alumni Research Foundation | Computer accelerator system using a trigger architecture memory access processor |
KR20150126484A (ko) | 2014-05-02 | 2015-11-12 | 삼성전자주식회사 | 소스 코드를 머신 코드로 변환하는 전자 장치 및 방법 |
US9836473B2 (en) | 2014-10-03 | 2017-12-05 | International Business Machines Corporation | Hardware acceleration for a compressed computation database |
US9473144B1 (en) | 2014-11-25 | 2016-10-18 | Cypress Semiconductor Corporation | Integrated circuit device with programmable analog subsystem |
US9851945B2 (en) | 2015-02-16 | 2017-12-26 | Advanced Micro Devices, Inc. | Bit remapping mechanism to enhance lossy compression in floating-point applications |
US9658676B1 (en) | 2015-02-19 | 2017-05-23 | Amazon Technologies, Inc. | Sending messages in a network-on-chip and providing a low power state for processing cores |
US10216693B2 (en) | 2015-07-30 | 2019-02-26 | Wisconsin Alumni Research Foundation | Computer with hybrid Von-Neumann/dataflow execution architecture |
US20170083313A1 (en) | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
US9847783B1 (en) | 2015-10-13 | 2017-12-19 | Altera Corporation | Scalable architecture for IP block integration |
CN105512060B (zh) | 2015-12-04 | 2018-09-14 | 上海兆芯集成电路有限公司 | 输入/输出电路以及数据传输控制方法 |
US9959068B2 (en) | 2016-03-04 | 2018-05-01 | Western Digital Technologies, Inc. | Intelligent wide port phy usage |
KR20170105353A (ko) | 2016-03-09 | 2017-09-19 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
US20170286169A1 (en) | 2016-03-31 | 2017-10-05 | National Instruments Corporation | Automatically Mapping Program Functions to Distributed Heterogeneous Platforms Based on Hardware Attributes and Specified Constraints |
US20170315812A1 (en) | 2016-04-28 | 2017-11-02 | Microsoft Technology Licensing, Llc | Parallel instruction scheduler for block isa processor |
US10110233B2 (en) | 2016-06-23 | 2018-10-23 | Altera Corporation | Methods for specifying processor architectures for programmable integrated circuits |
US20180081834A1 (en) | 2016-09-16 | 2018-03-22 | Futurewei Technologies, Inc. | Apparatus and method for configuring hardware to operate in multiple modes during runtime |
US10168758B2 (en) | 2016-09-29 | 2019-01-01 | Intel Corporation | Techniques to enable communication between a processor and voltage regulator |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
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 |
US10452452B2 (en) | 2017-04-17 | 2019-10-22 | Wave Computing, Inc. | Reconfigurable processor fabric implementation using satisfiability analysis |
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 |
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 |
US20190004878A1 (en) | 2017-07-01 | 2019-01-03 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US20190101952A1 (en) | 2017-09-30 | 2019-04-04 | Intel Corporation | Processors and methods for configurable clock gating 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 |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10402176B2 (en) | 2017-12-27 | 2019-09-03 | Intel Corporation | Methods and apparatus to compile code to generate data flow code |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
-
2016
- 2016-10-01 US US15/283,295 patent/US10402168B2/en active Active
-
2017
- 2017-09-08 CN CN201780053811.XA patent/CN109643228B/zh active Active
- 2017-09-08 EP EP17857177.4A patent/EP3519938A4/en not_active Withdrawn
- 2017-09-08 WO PCT/US2017/050663 patent/WO2018063777A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070203967A1 (en) * | 2006-02-27 | 2007-08-30 | Dockser Kenneth A | Floating-point processor with reduced power requirements for selectable subprecision |
CN101174200A (zh) * | 2007-05-18 | 2008-05-07 | 清华大学 | 一种浮点乘加融合单元的五级流水线结构 |
CN102349049A (zh) * | 2009-03-16 | 2012-02-08 | 超威半导体公司 | 快速检测浮点单元中的移位的机制 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
CN104778028A (zh) * | 2014-01-15 | 2015-07-15 | Arm有限公司 | 乘加器 |
Non-Patent Citations (2)
Title |
---|
T. LANG ET AL.: ""Floating-point multiply-add-fused with reduced latency"", 《IEEE TRANSACTIONS ON COMPUTERS》 * |
车文博 等: ""M-DSP中高性能浮点乘加器的设计与实现"", 《计算机应用》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110265002A (zh) * | 2019-06-04 | 2019-09-20 | 北京清微智能科技有限公司 | 语音识别方法、装置、计算机设备及计算机可读存储介质 |
CN110265002B (zh) * | 2019-06-04 | 2021-07-23 | 北京清微智能科技有限公司 | 语音识别方法、装置、计算机设备及计算机可读存储介质 |
CN110442323A (zh) * | 2019-08-09 | 2019-11-12 | 复旦大学 | 进行浮点数或定点数乘加运算的架构和方法 |
CN110442323B (zh) * | 2019-08-09 | 2023-06-23 | 复旦大学 | 进行浮点数或定点数乘加运算的装置和方法 |
CN112596697A (zh) * | 2019-10-02 | 2021-04-02 | 脸谱公司 | 使用分解的分量数字的浮点乘法硬件 |
WO2023124561A1 (zh) * | 2021-12-31 | 2023-07-06 | 华为技术有限公司 | 电路、乘加器和电路优化方法 |
CN116700666A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 一种浮点数处理方法及装置 |
CN114461176A (zh) * | 2022-04-12 | 2022-05-10 | 北京象帝先计算技术有限公司 | 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备 |
CN114461176B (zh) * | 2022-04-12 | 2022-07-19 | 北京象帝先计算技术有限公司 | 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2018063777A1 (en) | 2018-04-05 |
US20180095728A1 (en) | 2018-04-05 |
EP3519938A4 (en) | 2020-04-29 |
EP3519938A1 (en) | 2019-08-07 |
CN109643228B (zh) | 2023-04-18 |
US10402168B2 (en) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643228A (zh) | 用于浮点乘加运算的低能耗尾数乘法 | |
CN106339202B (zh) | 微处理器及其方法 | |
US10534613B2 (en) | Supporting learned branch predictors | |
US6487575B1 (en) | Early completion of iterative division | |
CN109313556A (zh) | 可中断和可重启矩阵乘法指令、处理器、方法和*** | |
TWI506539B (zh) | 十進位浮點資料邏輯提取的方法與設備 | |
CN109582355A (zh) | 定点到浮点转换 | |
CN108268283A (zh) | 用于利用约简操作来支持数据并行循环的计算引擎架构 | |
CN109791488A (zh) | 用于执行用于复数的融合乘-加指令的***和方法 | |
CN106293640A (zh) | 用于紧密耦合的异构计算的硬件处理器和方法 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
US20180232627A1 (en) | Variable word length neural network accelerator circuit | |
TWI737652B (zh) | 併合乘-加(fma)低功能性單元 | |
CN110474645A (zh) | 用于压缩浮点数据的*** | |
CN105740200B (zh) | 用于k最近邻搜索的***、装置和方法 | |
CN109791486A (zh) | 用于具有紧凑指令编码的指令的处理器、方法、***和指令转换模块 | |
CN107145335A (zh) | 用于大整数运算的向量指令的装置和方法 | |
CN108431770A (zh) | 用于加速集合运算的硬件内容关联数据结构 | |
CN100543670C (zh) | 产生扩展精度的整数除的商和余数的方法和装置 | |
CN110321165A (zh) | 复数向量融合乘加和复数向量乘法的高效实现 | |
TWI455019B (zh) | 執行倒數指令的設備、方法及系統 | |
KR20210028075A (ko) | 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템 | |
CN101907984B (zh) | 指令处理方法以及其所适用的超纯量管线微处理器 | |
CN107003847A (zh) | 用于将掩码扩展为掩码值向量的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |