CN109643228B - 用于浮点乘加运算的低能耗尾数乘法 - Google Patents

用于浮点乘加运算的低能耗尾数乘法 Download PDF

Info

Publication number
CN109643228B
CN109643228B CN201780053811.XA CN201780053811A CN109643228B CN 109643228 B CN109643228 B CN 109643228B CN 201780053811 A CN201780053811 A CN 201780053811A CN 109643228 B CN109643228 B CN 109643228B
Authority
CN
China
Prior art keywords
mantissa
floating
point
multiplier
significant bit
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
Application number
CN201780053811.XA
Other languages
English (en)
Other versions
CN109643228A (zh
Inventor
W.C.哈森普劳格
K.E.弗莱明
T.福森
S.C.斯蒂利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109643228A publication Critical patent/CN109643228A/zh
Application granted granted Critical
Publication of CN109643228B publication Critical patent/CN109643228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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-15是示范计算机架构的框图。本领域已知的用于膝上型计算机、台式计算机、手持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 (30)

1.一种处理器,包括:
浮点乘加单元,所述浮点乘加单元具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入,所述浮点乘加单元包含:
尾数乘法器,用来将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,所述尾数乘法器包含:
最高有效位部分,用来计算所述尾数乘积的最高有效位;
最低有效位部分,用来计算所述尾数乘积的最低有效位,其中所述尾数乘法器具有所述最低有效位部分的多个不同的可能大小,以及
所述尾数乘法器用来选择性地降低所述最低有效位部分的能耗,但不降低所述最高有效位部分的能耗,以使所述最低有效位部分不计算所述尾数乘积的所述最低有效位,
其中所述尾数乘法器进一步包括中间部分,所述中间部分耦合在所述最高有效位部分和所述最低有效位部分之间,用以计算所述尾数乘积的将在所述最高有效位和所述最低有效位之间的中间位。
2.如权利要求1所述的处理器,进一步包括用来至少部分基于所述浮点加数数据元素来选择所述最低有效位部分的所述多个不同的可能大小中的一个大小的逻辑。
3.如权利要求2所述的处理器,其中所述逻辑用来至少部分基于所述浮点加数数据元素的指数来选择所述一个大小。
4.如权利要求3所述的处理器,其中所述逻辑用来至少部分基于所述浮点加数数据元素的所述指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述一个大小。
5.如权利要求1所述的处理器,其中所述尾数乘法器包括用于基于所述中间位来确定所述最低有效位是否可能已经影响了所述尾数乘积的所述最高有效位的逻辑。
6.如权利要求1所述的处理器,其中所述中间部分在流水线的初始部分中,并且所述最低有效位部分在所述流水线的后续部分中。
7.如权利要求1所述的处理器,其中所述中间部分和所述最低有效位部分在流水线的相同部分中。
8.如权利要求1至7中任一项所述的处理器,其中所述最高有效位部分用来计算所述尾数乘积的要被加到所述浮点加数数据元素的尾数的所有最高有效位。
9.如权利要求1至7中任一项所述的处理器,其中所述尾数乘法器包括时钟门逻辑,所述时钟门逻辑耦合到所述最低有效位部分,用以选择性地对到所述最低有效位部分的时钟信号进行门控,但不对到所述最高有效位部分的时钟信号进行门控。
10.如权利要求1至7中任一项所述的处理器,其中所述尾数乘法器具有所述最低有效位部分的至少三个不同的可能大小。
11.如权利要求1至7中任一项所述的处理器,其中所述尾数乘法器包括53位乘53位乘法器。
12.如权利要求1至7中任一项所述的处理器,其中所述尾数乘法器包括24位乘24位乘法器。
13.如权利要求1至7中任一项所述的处理器,其中所述尾数乘法器包括11位乘11位乘法器。
14.一种在处理器中的方法,包括:
对浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素启动浮点乘加运算;以及
将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,而不计算所述尾数乘积的具有至少部分基于所述浮点加数数据元素的大小的最低有效位部分,
其中所述方法进一步包括:
计算所述尾数乘积的在所述尾数乘积的所述最低有效位部分与所述尾数乘积的最高有效位部分之间的中间部分。
15.如权利要求14所述的方法,进一步包括:至少部分基于所述浮点加数数据元素的指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述大小。
16.如权利要求14所述的方法,进一步包括:至少部分基于所述浮点加数数据元素从多个不同的可能大小中选择所述大小。
17.如权利要求14所述的方法,进一步包括:
基于所述中间部分确定所述尾数乘积的最低有效位部分是否可能已经影响了所述尾数乘积的所述最高有效位部分。
18.如权利要求14所述的方法,进一步包括:选择性地降低尾数乘法器的与所述尾数乘积的所述最低有效位部分对应的部分的能耗,而不降低所述尾数乘法器的与所述尾数乘积的最高有效位部分对应的部分的能耗。
19.如权利要求18所述的方法,其中所述选择性地降低所述能耗包括对所述尾数乘法器的与所述尾数乘积的所述最低有效位部分对应的所述部分进行时钟门控。
20.一种计算机系统,包括:
互连;
与所述互连耦合的存储器;以及
与所述互连耦合的处理器,所述处理器包括:
浮点乘加单元,所述浮点乘加单元具有耦合的用来接收浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素的输入,所述浮点乘加单元包含:
尾数乘法器,用来将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,所述尾数乘法器包含:
最高有效位部分,用来计算所述尾数乘积的最高有效位;
最低有效位部分,用来计算所述尾数乘积的最低有效位,其中所述尾数乘法器具有所述最低有效位部分的多个不同的可能大小,以及
所述尾数乘法器用来选择性地降低所述最低有效位部分的能耗,但不降低所述最高有效位部分的能耗,以使所述最低有效位部分不计算所述尾数乘积的所述最低有效位,
其中所述尾数乘法器进一步包括中间部分,所述中间部分耦合在所述最高有效位部分和所述最低有效位部分之间,用以计算所述尾数乘积的将在所述最高有效位和所述最低有效位之间的中间位。
21.如权利要求20所述的计算机系统,进一步包括:用来至少部分基于所述浮点加数数据元素来选择所述最低有效位部分的所述多个不同的可能大小中的一个的逻辑。
22.如权利要求20所述的计算机系统,其中所述尾数乘法器包括用于基于所述中间位来确定所述最低有效位是否可能已经影响了所述尾数乘积的所述最高有效位的逻辑。
23.一种处理设备,包括用于执行如权利要求14至19中任一项所述的方法的部件。
24.一种在处理器中的处理设备,包括:
用于对浮点乘数数据元素、浮点被乘数数据元素和浮点加数数据元素启动浮点乘加运算的部件;以及
用于将所述浮点乘数数据元素的尾数和所述浮点被乘数数据元素的尾数相乘以计算尾数乘积,而不计算所述尾数乘积的具有至少部分基于所述浮点加数数据元素的大小的最低有效位部分的部件,
其中所述处理设备进一步包括:
用于计算所述尾数乘积的在所述尾数乘积的所述最低有效位部分与所述尾数乘积的最高有效位部分之间的中间部分的部件。
25.如权利要求24所述的处理设备,进一步包括:用于至少部分基于所述浮点加数数据元素的指数以及所述浮点乘数数据元素的指数和所述浮点被乘数数据元素的指数之和来选择所述大小的部件。
26.如权利要求24所述的处理设备,进一步包括:用于至少部分基于所述浮点加数数据元素从多个不同的可能大小中选择所述大小的部件。
27.如权利要求24所述的处理设备,进一步包括:
用于基于所述中间部分确定所述尾数乘积的最低有效位部分是否可能已经影响了所述尾数乘积的所述最高有效位部分的部件。
28.如权利要求24所述的处理设备,进一步包括:用于选择性地降低尾数乘法器的与所述尾数乘积的所述最低有效位部分对应的部分的能耗,而不降低所述尾数乘法器的与所述尾数乘积的最高有效位部分对应的部分的能耗的部件。
29.如权利要求28所述的处理设备,其中所述选择性地降低所述能耗包括对所述尾数乘法器的与所述尾数乘积的所述最低有效位部分对应的所述部分进行时钟门控。
30.一种计算机可读介质,其上存储有指令,所述指令在由计算设备执行时促使所述计算设备执行如权利要求14至19中任一项所述的方法。
CN201780053811.XA 2016-10-01 2017-09-08 用于浮点乘加运算的低能耗尾数乘法 Active CN109643228B (zh)

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 CN109643228A (zh) 2019-04-16
CN109643228B true 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)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
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 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
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
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
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging 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
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication 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
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations 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
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
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
CN110265002B (zh) * 2019-06-04 2021-07-23 北京清微智能科技有限公司 语音识别方法、装置、计算机设备及计算机可读存储介质
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN110442323B (zh) * 2019-08-09 2023-06-23 复旦大学 进行浮点数或定点数乘加运算的装置和方法
US11188303B2 (en) * 2019-10-02 2021-11-30 Facebook, Inc. Floating point multiply hardware using decomposed component numbers
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核及控制方法
CN116414352A (zh) * 2021-12-31 2023-07-11 华为技术有限公司 电路、乘加器和电路优化方法
CN114816329B (zh) * 2022-04-02 2024-04-30 杭州缘及科技有限公司 用于实现基4 Booth乘法器的32位加法器及其实现方法
CN114461176B (zh) * 2022-04-12 2022-07-19 北京象帝先计算技术有限公司 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备

Family Cites Families (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526446A3 (en) 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
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
CN1486568A (zh) 2000-11-28 2004-03-31 ϣ�����ʹ�˾ 内容/服务处理及输送
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
GB2377519B (en) 2001-02-14 2005-06-15 Clearspeed Technology Ltd Lookup engine
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
WO2002097565A2 (en) 2001-05-25 2002-12-05 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
US20040022094A1 (en) 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
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
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
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
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
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 キヤノン株式会社 ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム
US8595279B2 (en) 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
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 株式会社日立製作所 ストレージ装置及び負荷分散方法
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US8321597B2 (en) 2007-02-22 2012-11-27 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US7479802B2 (en) 2007-03-09 2009-01-20 Quadric, Inc Programmable logic integrated circuit for digital algorithmic functions
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
CN101174200B (zh) * 2007-05-18 2010-09-08 清华大学 一种具有五级流水线结构的浮点乘加融合单元
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
US8161167B2 (en) 2007-08-28 2012-04-17 Cisco Technology, Inc. Highly scalable application layer service appliances
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
US8402075B2 (en) * 2009-03-16 2013-03-19 Advanced Micro Devices, Inc. Mechanism for fast detection of overshift in a floating point unit of a processing device
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
US9141350B2 (en) 2010-04-23 2015-09-22 Vector Fabrics B.V. 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
CN102103479B (zh) * 2011-03-02 2015-06-10 中兴通讯股份有限公司 浮点运算器及浮点运算的处理方法
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
US9727827B2 (en) 2011-06-24 2017-08-08 Jobvite, Inc. Method and system for referral tracking
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
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
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
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join 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
GB2522194B (en) * 2014-01-15 2021-04-28 Advanced Risc Mach Ltd Multiply adder
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
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
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
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
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
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
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
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
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
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
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
US20190101952A1 (en) 2017-09-30 2019-04-04 Intel Corporation Processors and methods for configurable clock gating in a spatial array
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
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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Floating-point multiply-add-fused with reduced latency";T. Lang et al.;《IEEE Transactions on Computers》;第988-1003页 *
"M-DSP中高性能浮点乘加器的设计与实现";车文博 等;《计算机应用》;第2213-2218页 *

Also Published As

Publication number Publication date
US20180095728A1 (en) 2018-04-05
EP3519938A4 (en) 2020-04-29
WO2018063777A1 (en) 2018-04-05
US10402168B2 (en) 2019-09-03
EP3519938A1 (en) 2019-08-07
CN109643228A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
CN109643228B (zh) 用于浮点乘加运算的低能耗尾数乘法
US9104474B2 (en) Variable precision floating point multiply-add circuit
JP5819380B2 (ja) 入力データ値に応じたfmaユニットにおける電力消費の低減
US6269384B1 (en) Method and apparatus for rounding and normalizing results within a multiplier
US6487575B1 (en) Early completion of iterative division
US8577948B2 (en) Split path multiply accumulate unit
EP3719639B1 (en) Systems and methods to perform floating-point addition with selected rounding
WO2007133101A1 (en) Floating point addition for different floating point formats
TWI737652B (zh) 併合乘-加(fma)低功能性單元
US10642614B2 (en) Reconfigurable multi-precision integer dot-product hardware accelerator for machine-learning applications
KR20190129702A (ko) 부동 소수점 데이터를 압축하기 위한 시스템
US7523152B2 (en) Methods for supporting extended precision integer divide macroinstructions in a processor
US9703626B2 (en) Recycling error bits in floating point units
US9274752B2 (en) Leading change anticipator logic
EP0840207A1 (en) A microprocessor and method of operation thereof
US20190163476A1 (en) Systems, methods, and apparatuses handling half-precision operands
US10289386B2 (en) Iterative division with reduced latency
US6393554B1 (en) Method and apparatus for performing vector and scalar multiplication and calculating rounded products
EP3394730B1 (en) Floating point (fp) add low instructions functional unit
US20230195417A1 (en) Parallel computation of a logic operation, increment, and decrement of any portion of a sum

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