在多核处理器中执行功率管理的制作方法

文档序号:11288184阅读:218来源:国知局
在多核处理器中执行功率管理的制造方法与工艺

实施例涉及系统的功率管理,并且更特定地涉及多核处理器的功率管理。



背景技术:

半导体处理和逻辑设计的发展准许集成电路设备上可能存在的逻辑的数量增加。因此,计算机系统配置已从系统中的单个或多个集成电路演变成个体集成电路上的多个硬件线程、多个核、多个设备和/或完整系统。另外,随着集成电路的密度增长,计算系统(从嵌入式系统到服务器)的功率要求也逐步上升。此外,软件低效以及它的硬件要求也导致计算设备能耗增加。实际上,一些研究指示计算系统消耗整个国家(例如美国)电力供应的相当大百分比。因此,迫切需要有与集成电路关联的能量效率和节约。这些需要将随着服务器、台式计算机、笔记本、ultrabooks™、平板、移动电话、处理器、嵌入式系统等变得更为普遍(从包含在典型的计算机、汽车和电视中到生物技术)而增加。

附图说明

图1是根据本发明的实施例的系统的一部分的框图。

图2是根据本发明的实施例的处理器的框图。

图3是根据本发明的另一个实施例的多域处理器的框图。

图4是包括多个核的处理器的实施例。

图5是根据本发明的一个实施例的处理器核的微架构的框图。

图6是根据另一个实施例的处理器核的微架构的框图。

图7是根据再另一个实施例的处理器核的微架构的框图。

图8是根据再另外的实施例的处理器核的微架构的框图。

图9是根据本发明的另一个实施例的处理器的框图。

图10是根据本发明的实施例的代表性soc的框图。

图11是根据本发明的实施例的另一个示例soc的框图。

图12是实施例可以与之一起使用的示例系统的框图。

图13是实施例可以与之一起使用的另一个示例系统的框图。

图14是代表性计算机系统的框图。

图15是根据本发明的实施例的系统的框图。

图16是根据本发明的实施例的功率控制逻辑的框图。

图17是根据本发明的另一个实施例包括硬件功率控制逻辑的处理器的框图。

图18是根据本发明的实施例用于控制处理器的功耗的方法的流程图。

图19是根据本发明的另一个实施例用于控制处理器的功耗的方法的流程图。

图20是根据本发明的实施例用于更新受训模型参数的方法的流程图。

图21是根据本发明的实施例的迁移逻辑的状态图。

图22是根据本发明的实施例的存储器偏向核(memorybiasedcore)的框图。

具体实施方式

在各种实施例中,对处理器提供提供智能多核功率管理控制器,其在运行中获悉工作负载特性并且动态调整功率配置以根据能量提供最佳性能。在一个实施例中,这样的功率配置包括活跃核和线程的数量,以及对于每个活跃核的最佳电压和频率。在各种实施例中,基于机器学习的性能和能量模型识别特定工作负载行为(例如密集型存储器访问)并且预测最佳功率控制,其包括将一个或多个核置入闲置或低功率状态同时使存储器资源饱和。

在实施例中,用确定最佳功率配置的策略和将决定的配置应用于底层系统的机制来配置功率管理控制器。这样的策略可以包括专家开发的启发法和/或离线/在线机器学习方案,并且可以进一步包括许多用户级和操作系统(os)级核到线程管理机制。

如本文描述的功率管理控制器可以配置成仅对工作负载分配需要的资源,使得性能和能量效率可以最大化。作为示例,存储器限制的工作负载在充分利用所有计算资源之前使存储器资源(例如带宽或队列)饱和。如果这样的工作负载用所有活跃线程和核来执行,将导致低效率。一些计算限制的工作负载还经受由于例如同步开销增加等各种原因引起的折中的可扩展性。实施例同样适用于在核中造成松弛使得该核变得没有被充分利用的其他工作负载。其他示例负载包括i/o或网络限制的工作负载。实施例从而可以对于不同工作负载识别最佳功率配置。例如,可以识别特定工作负载并且对于这些工作负载的未被充分使用的资源可以断电或以减少的消耗水平操作来实现明显的能量节省而并未不利影响性能。

在实施例中,对于工作负载的最佳功率配置限定最佳数量的线程和核、执行单元、电压和频率等等。该功率配置取决于许多参数,其包括运行时工作负载行为和系统功率状态两者。另外,在考虑功率状态之间的转变期间引发的开销时,选择过程变得甚至更复杂。单个固定控制策略难以适应于各种工作负载和不同系统。实施例从而提供不同模型的集合来评估,并且智能选择器从识别的模型选择。这在运行时实现多个控制策略和灵活选择。从而实施例可以用于对每个工作负载并发确定最佳功率配置(例如,核/线程的数量,和电压/频率),而不是基于单个性能/能量预测模型的预定义控制策略。

实施例操作来节省能量而并未不利影响存储器密集型工作负载的性能,这些存储器密集型工作负载在充分利用计算资源之前使存储器资源饱和,这在多核处理器中可能浪费能量。实施例可以识别这样的行为并且关断未被充分利用的核(underutilizedcore)来提供能量节省而不牺牲性能。

在一些实施例中,异构多处理器可以包括两个不同类型的核:为计算所优化的一个核类型以及为存储器访问所优化的另一个核类型。在一个示例中,两个类型的核实现相同指令集架构(isa)但具有不同的微架构,其可以促进核类型之间的线程迁移。

程序的计算和存储器限制的阶段可以具有大不相同的处理器要求,其无法被单个核类型所优化。例如,为计算工作负载所优化的同构多处理器可以以每核每周期可以维持一个融合乘加(fma)这一频率运行的最高核计数为目标。然而,该多处理器在主要等待存储器返回的程序阶段期间可不是非常能量高效的。如在存储器限制的阶段期间正是如此,核多半闲置、等待存储器访问,但闲置时间可并未长到足以保证将核置入低功率状态。因此,处于高频的闲置核可消耗不必要的功率。

如此,实施例提供异构多处理器,其包括为不同操作点优化的两个或以上专门核类型。在本文描述的示例中,提供两个核类型:计算优化核(也称为计算偏向核)和存储器优化核(也称为存储器偏向核)。然而理解本发明的范围不限于2个核类型,并且在其他情况下可以存在为其他工作负载类型优化的额外核类型。

尽管参考专用集成电路中(例如在计算平台或处理器中)的能量节约和能量效率描述下列实施例,其他实施例能适用于其他类型的集成电路和逻辑设备。本文描述的实施例的相似技术和教导可以应用于其他类型的电路或半导体设备,其也可以从较好能量效率和能量节约方面获益。例如,公开的实施例不限于任何特定类型的计算机系统。即,公开的实施例可以在许多不同的系统类型中使用:范围为服务器计算机(例如,塔式、机架式、刀片式、微服务器等等)、通信系统、存储系统、具有任何配置的台式计算机、便携式电脑、笔记本和平板计算机(其包括2:1平板、平板手机等等),并且也可以在例如手持设备、芯片上系统(soc)和嵌入式应用等其他设备中使用。手持设备的一些示例包括蜂窝电话(例如智能电话)、互联网协议设备、数字拍摄装置、个人数字助理(pda)和手持pc。嵌入式应用典型地可以包括微控制器、数字信号处理器(dsp)、网络计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机、可穿戴设备或可以执行下文教导的功能和操作的任何其他系统。更为如此,实施例可以在具有例如移动电话、智能电话和平板手机等标准语音功能性的移动终端中和/或在没有标准无线语音功能通信能力的非移动终端(例如许多可穿戴装置、平板、笔记本、台式机、微型服务器、服务器等等)中实现。此外,本文描述的装置、方法和系统不限于物理计算设备,而还可以涉及针对能量节约和效率的软件优化。如将在下文的描述中变得很明显的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是其组合)对于例如涵盖美国经济的很大一部分的产品中的功率节约和能量效率的‘绿色技术’未来是必不可少的。

现在参考图1,示出根据本发明的实施例的系统的一部分的框图。如在图1中示出的,系统100可以包括各种部件,其包括如示出为多核处理器的处理器110。处理器110可以经由外部电压调节器160耦合于电源150,该外部电压调节器160可以执行第一电压转换来向处理器110提供一次调节电压。

如看到的,处理器110可以是单晶片(singedie)处理器,其包括多个核120a-120n。另外,每个核可以与集成电压调节器(ivr)125a-125n关联,该集成电压调节器接收一次调节电压并且生成待提供给与ivr关联的处理器的一个或多个代理的操作电压。因此,可以提供ivr实现以对电压以及从而每个个体核的功率和性能允许有细粒度控制。如此,每个核可以以独立电压和频率操作,从而实现很大的灵活性并且给予广泛的机会来平衡功耗与性能。在一些实施例中,多个ivr的使用使部件能够分组为单独功率平面,使得由ivr调节功率并且仅向组中的那些部件供应该功率。在功率管理期间,一个ivr的指定功率平面在将处理器置入某一低功率状态时掉电或断电,而另一个ivr的另一个功率平面保持活跃,或全供电。

仍参考图1,在处理器内可以存在额外部件,其包括输入/输出接口132、另一个接口134和集成存储器控制器136。如看到的,这些部件中的每个可以由另一个集成电压调节器125x供电。在一个实施例中,接口132可以实现对于在高速缓存一致性协议中提供点到点(ptp)链路的intel®快速路径互连(qpi)互连的操作,其中包括多个层,其包括物理层、链路层和协议层。进而,接口134可以经由外围组件互连高速(pcie™)协议通信。

还示出功率控制单元(pcu)138,其可以包括硬件、软件和/或固件来关于处理器110执行功率管理操作。如看到的,pcu138经由数字接口向外部电压调节器160提供控制信息以促使电压调节器产生合适的调节电压。pcu138还经由另一个数字接口向ivr125提供控制信息来控制产生的操作电压(或促使对应的ivr在低功率模式被停用)。在各种实施例中,pcu138可以包括多种功率管理逻辑单元,用于执行基于硬件的功率管理。这样的功率管理可以是完全处理器控制的(例如,通过各种处理器硬件,并且其可以由工作负载和/或功率、热或其他处理器约束触发)和/或功率管理可以响应于外部源(例如平台或管理功率管理源或系统软件)来执行。如本文进一步描述的,pcu138可以包括控制逻辑,用于基于执行的工作负载类型执行工作负载分类,并且至少部分基于工作负载类型促使工作负载在潜在不同数量的核(以及在潜在不同的性能状态)上执行。

尽管为了易于说明而未示出,理解在处理器110内可以存在额外部件(例如非核逻辑)以及其他部件,例如内部存储器(例如高速缓存存储器层级的一级或多级等等)。此外,尽管在图1的实现中示出有集成电压调节器,实施例不这样受限制。

注意本文描述的功率管理技术可以独立于基于操作系统(os)的功率管理(ospm)机制并且与之互补。根据一个示例ospm技术,处理器可以在各种性能状态或级(所谓的p状态,即从p0到pn)操作。一般,p1性能状态可以对应于os可以请求的最高保证性能状态。除该p1状态外,os可以进一步请求较高性能状态,即p0状态。该p0状态从而可以是机会性或涡轮(turbo)模式状态,其中在功率和/或热预算可用时处理器硬件可以配置处理器或其至少部分来以高于保证频率操作。在许多实现中,处理器可以包括多个在p1保证最大频率之上的所谓的分块频率(binfrequency),其超过如在制造期间融合或另外写入处理器的特定处理器的最大峰值频率。另外,根据一个ospm机制,处理器可以在各种功能状态或级操作。关于功率状态,ospm机制可以规定不同功耗状态,一般称为c状态:c0、c1至cn状态。当核活跃时,它在c0状态运行,并且当核闲置时可以将它放置在核低功率状态,也叫作核非零c状态(例如,c1-c6状态),其中每个c状态处于低功耗级(使得c6是比c1更深的低功率状态,等等)。

理解许多不同类型的功率管理技术在不同实施例中可以单独或组合使用。作为代表性示例,功率控制器可以控制处理器到由某一形式的动态电压频率定标(dvfs)(其中可以动态控制一个或多个核或其他处理器逻辑的操作电压和/或操作频率来减少在某些情形中的功耗)所管理的功率。在示例中,dvfs可以使用从加利福尼亚州santaclara市的intelcorporation可获得的enhancedintelspeedstep™技术来执行,以在最低功耗级提供最佳性能。在另一个示例中,dvfs可以使用intelturboboost™技术来执行以使一个或多个核或其他计算引擎能够基于条件(例如,工作负载和可用性)以高于保证操作频率操作。

在某些示例中可以使用的另一个功率管理技术是不同计算引擎之间工作负载的动态交换。例如,处理器可以包括不对称核或其他处理引擎,其在不同功耗级操作,使得在功率受限情形中一个或多个工作负载可以动态切换以在较低功率核或其他计算引擎上执行。另一个示范性功率管理技术是硬件工作循环(hdc),其可以促使核和/或其他计算引擎根据占空比而被周期性启用和停用,使得一个或多个核可以在占空比的不活跃期期间变成不活跃并且在占空比的活跃期期间变成活跃。尽管用这些特定示例描述,理解在特定实施例中可以使用许多其他功率管理技术。

实施例可以在针对各种市场的处理器中实现,例如服务器处理器、台式机处理器、移动处理器等等。现在参考图2,示出根据本发明的实施例的处理器的框图。如在图2中示出的,处理器200可以是多核处理器,其包括多个核210a-210n。在一个实施例中,每个这样的核可以具有独立功率域并且可以配置成基于工作负载进入和退出活跃状态和/或最大性能状态。各种核可以经由互连215耦合于系统代理或非核220,其包括各种部件。如看到的,非核220可以包括共享高速缓存230,其可以是最后级别的高速缓存。另外,非核可以包括集成存储器控制器240,用于与系统存储器(未在图2中示出)通信,例如经由存储器总线。非核220还包括各种接口250和功率控制单元255,其可以包括工作负载分类逻辑256(其可以包括机器学习逻辑或与之关联)来对执行的工作负载分类并且至少部分基于该工作负载分类来执行对许多核和/或性能状态的动态控制,如本文描述的。

另外,通过接口250a-250n可以连接到各种芯片外部件,例如外围设备、大容量存储等等。尽管在图2的实施例中示出有该特定实现,本发明的范围在该方面不受限制。

现在参考图3,示出根据本发明的另一个实施例的多域处理器的框图。如在图3的实施例中示出的,处理器300包括多个域。具体地,核域310可以包括多个核3100-310n,图形域320可以包括一个或多个图形引擎,并且可以进一步存在系统代理域350。在一些实施例中,系统代理域350可以以除核域以外的独立频率执行并且可以可以一直保持被供电来处理功率控制事件和功率管理使得可以控制域310和320以动态进入和退出高功率和低功率状态。域310和320中的每个可以以不同的电压和/或功率操作。注意尽管仅示出有三个域,理解本发明的范围在该方面不受限制并且在其他实施例中可以存在额外域。例如,可以存在多个核域,每个包括至少一个核。

一般,每个核310除各种执行单元和额外处理元件外还可以进一步包括低级高速缓存。进而,各种核可以彼此耦合并且耦合于由具有最后级别的高速缓存(llc)3400-340n的多个单元形成的共享高速缓存存储器。在各种实施例中,llc340可以在核和图形引擎以及各种媒体处理电路之中共享。如看到的,环式互连330从而使核耦合在一起,并且在核、图形域320与系统代理电路350之间提供互连。在一个实施例中,互连330可以是核域的部分。然而在其他实施例中,环式互连可以具有它自己的域。

如进一步看到的,系统代理域350可以包括显示控制器352,其可以提供对关联显示器的控制以及到关联显示器的接口。如进一步看到的,系统代理域350可以包括功率控制单元355,其可以包括工作负载分类逻辑356(其自身包括机器学习逻辑)来执行如本文描述的基于工作负载分类的线程迁移和功率控制技术。

如在图3中进一步看到的,处理器300可以进一步包括集成存储器控制器(imc)370,其可以提供到系统存储器(例如动态随机存取存储器(dram))的接口。可以存在多个接口3800-380n以在处理器与其他电路之间实现互连。例如,在一个实施例中,可以提供至少一个直接媒体接口(dmi)接口以及一个或多个pcie™接口。再进一步,为了在其他代理(例如额外处理器)或其他电路之间提供通信,还可以提供一个或多个qpi接口。尽管在图3的实施例中以该高级别示出,理解本发明的范围在该方面不受限制。

参考图4,图示处理器的实施例,该处理器包括多个核。处理器400包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、手持处理器、应用处理器、协处理器、芯片上系统(soc)或执行代码的其他设备。在一个实施例中,处理器400包括至少两个核-核401和402,其可以包括不对称核或对称核(图示的实施例)。然而,处理器400可以包括任意数量的处理元件,其可以是对称或不对称的。

在一个实施例中,处理元件指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽位(threadslot)、线程、过程单元、上下文(context)、上下文单元(contextunit)、逻辑处理器、硬件线程、核和/或任何其他元件,其能够保持处理器的状态,例如执行状态或架构状态。也就是说,在一个实施例中,处理元件指能够独立与代码(例如软件线程、操作系统、应用或其他代码)关联的任何硬件。物理处理器典型地指集成电路,其潜在地包括任意数量的其他处理元件,例如核或硬件线程。

核通常指位于集成电路上、能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源关联。与核相比之下,硬件线程典型地指位于集成电路上、能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,在共享某些资源并且其他专用于架构状态,硬件线程和核的命名之间的线路重叠。但是,核和硬件线程通常被操作系统视为个体逻辑处理器,其中操作系统能够个体地调度每个逻辑处理器上的操作。

如在图4中图示的,物理处理器400包括两个核-核401和402。在这里,核401和402被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核401包括乱序处理器核,而核402包括有序处理器核。然而,核401和402可以从任何类型的核个体地选择,例如原生核、软件管理的核、适于执行原生指令集架构(isa)的核、适于执行转换isa的核、协同设计的核或其他已知核。有待进一步论述,核401中图示的功能单元在下文进一步详细描述,同样地,核402中的单元在描绘的实施例中采用相似方式操作。

如描绘的,核401包括两个硬件线程401a和401b,其也可以称为硬件线程插槽401a和401b。因此,软件实体(例如操作系统)在一个实施例中潜在地将处理器400视为四个单独处理器,即能够并发执行四个软件线程的四个逻辑处理器或处理元件。如上文所述的,第一线程与架构状态寄存器401a关联,第二线程与架构状态寄存器401b关联,第三线程可以与架构状态寄存器402a关联,并且第四线程可以与架构状态寄存器402b关联。在这里,架构状态寄存器(401a、401b、402a和402b)中的每个可以称为处理元件、线程槽位或线程单元,如上文描述的。如图示的,架构状态寄存器401a在架构状态寄存器401b中复制,因此能够对逻辑处理器401a和逻辑处理器401b存储个体架构状态/上下文。在核401中,其他较小资源(例如指令指针以及分配器和重命名块430中的重命名逻辑)也可以对线程401a和401b复制。一些资源(例如重排序/引退单元435中的重排序缓冲器、iltb420、加载/存储缓冲器和队列)可以通过分区而共享。其他资源(例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据tlb415、执行单元440和乱序单元435的部分)潜在地被充分共享。

处理器400通常包括其他资源,其可以被充分共享、通过分区而共享或被处理器元件专用/专用于处理元件。在图4中,图示具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意处理器可以包括或省略这些功能单元中的任一个,以及包括未描绘的任何其他已知功能单元、逻辑或固件。如图示的,核401包括简化的代表性乱序(ooo)处理器核。但在不同实施例中可以使用有序处理器。ooo核包括用于预测要执行/采取的分支的分支目标缓冲器420,和用于对指令存储地址转换条目的指令转换缓冲器(i-tlb)420。

核401进一步包括解码模块425,其耦合于提取单元420来对提取的要素解码。在一个实施例中,提取逻辑包括分别与线程槽位401a、401b关联的个体定序器。通常核401与第一isa关联,其定义/规定在处理器400上可执行的指令。通常是第一isa的部分的机器代码指令包括指令的一部分(称为操作码),其引用/规定要执行的指令或操作。解码逻辑425包括从这些指令的操作码识别这些指令并且在流水线上传递解码指令用于如由第一isa定义的处理的电路。例如,在一个实施例中,解码器425包括设计成或适于识别特定指令(例如事务指令)的逻辑。由于被解码器425识别,架构或401采取特定、预定义动作来执行与合适指令关联的任务。重要的是注意,本文描述的任务、块、操作和方法中的任一个可以响应于单个或多个指令执行;其中的一些可以是新的或旧的指令。

在一个示例中,分配器和重命名块430包括分配器,用于预留资源,例如存储指令处理结果的寄存器堆。然而,线程401a和401b潜在地能够乱序执行,其中分配器和重命名块430还预留其他资源,例如追踪指令结果的重排序缓冲器。单元430还可以包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器400内部的其他寄存器。重排序/引退单元435包括例如上文提到的重排序缓冲器、加载缓冲器和存储缓冲器等部件,用于支持乱序执行和乱序执行的指令的随后有序引退。

在一个实施例中,调度器和执行单元块440包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器堆来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知执行单元。

较低级数据高速缓存和数据转换缓冲器(d-tlb)450耦合于执行单元440。数据高速缓存存储近期使用/操作的要素,例如数据操作数,其潜在地保持为存储器一致性状态。d-tlb存储近期虚拟/线性的到物理地址的转换(virtual/lineartophysicaladdresstranslation)。作为特定示例,处理器可以包括页表结构,用于将物理存储器分解成多个虚拟页面。

在这里,核401和402共享对较高级或更进一步的高速缓存410,其高速缓存近期提取的要素。注意较高级或更进一步是指从执行单元进一步远离或者增加的高速缓存级别。在一个实施例中,较高级高速缓存410是最后级别的数据高速缓存-处理器400上的存储器层级中最后的高速缓存-例如第二或第三级数据高速缓存。然而,较高级高速缓存410因为它可以与指令高速缓存关联或包括指令高速缓存而不这样受限。追踪高速缓存-一类指令高速缓存-相反可以在解码器425后耦合来存储近期解码的痕迹。

在描绘的配置中,处理器400还包括总线接口模块405和功率控制器460,该功率控制器460可以根据本发明的实施例执行功率管理。在该情景中,总线接口405与处理器400外部的设备(例如系统存储器和其他部件)通信。

存储器控制器470可以与其他设备(例如一个或多个存储器)接口。在示例中,总线接口405包括具有用于与存储器接口的存储器控制器和用于与图形处理器接口的图形控制器的环式互连。在soc环境中,甚至更多的设备(例如网络接口、协处理器、存储器、图形处理器和任何其他已知计算机设备/接口)可以在单个晶片或集成电路上集成来提供具有高功能性和低功耗的小形状因子。

现在参考图5,示出根据本发明的一个实施例的处理器核的微架构的框图。如在图5中示出的,处理器核500可以是多级流水线化乱序处理器。核500可以基于接收的操作电压以各种电压操作,该接收的操作电压可以从集成电压调节器或外部电压调节器接收。

如在图5中看到的,核500包括前端单元510,其可以用于提取待执行的指令并且使它们准备后来在处理器流水线中使用。例如,前端单元510可以包括提取单元501、指令高速缓存503和指令解码器505。在一些实现中,前端单元510可以进一步包括追踪高速缓存,连同微代码存储以及微操作存储。提取单元501可以例如从存储器或指令高速缓存503提取宏指令,并且将它们馈送给指令解码器505来将它们解码为基元,即微操作以供处理器执行。

乱序(ooo)引擎515在前端单元510与执行单元520之间耦合,该乱序引擎515可以用于接收微指令并且使它们准备用于执行。更具体地,ooo引擎515可以包括各种缓冲器,用于对微指令流重排序并且分配执行所需要的各种资源,以及提供逻辑寄存器到各种寄存器堆(例如寄存器堆530和扩展寄存器堆535)上的重命名。寄存器堆530可以包括针对整数和浮点运算的单独寄存器堆。为了配置、控制和额外操作,也可以存在机器特定寄存器(msr)538的集并且其对核500内(以及核外部)的各种逻辑可访问。例如,功率极限信息可以存储在一个或多个msr中并且如本文描述的那样动态更新。

在执行单元520中可以存在各种资源,其包括例如各种整数、浮点和单指令多数据(simd)逻辑单元及其他专门硬件。例如,这样的执行单元可以包括一个或多个算术逻辑单元(alu)522和一个或多个矢量执行单元524,及其他这样的执行单元。

来自执行单元的结果可以提供给引退逻辑,即重排序缓冲器(rob)540。更具体地,rob540可以包括各种阵列和逻辑,用于接收与执行的指令关联的信息。该信息然后由rob540检查来确定指令是否被有效引退并且产生交付于处理器的架构状态的数据,或是否出现阻止指令正确引退的一个或多个异常。当然,rob504可以处理与引退关联的其他操作。

如在图5中示出的,rob540耦合于高速缓存550,其在一个实施例中可以是低级高速缓存(例如,l1高速缓存),但本发明的范围在该方面不受限制。执行单元520也可以直接耦合于高速缓存550。从高速缓存550可以出现与较高级高速缓存、系统存储器等等的数据通信。尽管在图5的实施例中示出有该高级别,理解本发明的范围在该方面不受限制。例如,尽管图5的实现是关于例如intel®x86指令集架构(isa)的乱序机,本发明的范围在该方面不受限制。即,其他实施例可以在有序处理器、精简指令集计算(risc)处理器(例如基于arm的处理器)或具有可以经由仿真引擎和关联逻辑电路来仿真不同isa的指令和操作的另一个类型的isa的处理器。

现在参考图6,示出根据另一个实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同微架构的低功率核,例如具有设计成减少功耗的相对有限流水线深度的基于intel®atom™的处理器。如看到的,核600包括指令高速缓存610,其耦合来向指令解码器615提供指令。分支预测器605可以耦合于指令高速缓存610。注意指令高速缓存610可以进一步耦合于另一个级别的高速缓存存储器,例如l2高速缓存(在图6中为了易于说明而未示出)。进而,指令解码器615向发出队列620提供解码指令以用于存储并且交付给指定执行流水线。微代码rom618耦合于指令解码器615。

浮点流水线630包括浮点寄存器堆632,其可以包括具有例如、128、256或512个位的指定位的多个架构寄存器。流水线630包括浮点调度器634,用于调度指令以供在流水线的多个执行单元中的一个上执行。在示出的实施例中,这样的执行单元包括alu635、混洗单元(shuffleunit)636和浮点加法器638。进而,在这些执行单元中生成的结果可以返回提供给缓冲器和/或寄存器堆632的寄存器。当然理解尽管示出有这几个示例执行单元,在另一个实施例中可以存在额外或不同浮点执行单元。

还可以提供整数流水线640。在示出的实施例中,流水线640包括整数寄存器堆642,其可以包括具有例如128或256个位的指定位的多个架构寄存器。流水线640包括整数调度器644,用于调度指令以供在流水线的多个执行单元中的一个上执行。在示出的实施例中,这样的执行单元包括alu645、移位单元646,和跳转执行单元648。进而,在这些执行单元中生成的结果可以返回提供给缓冲器和/或寄存器堆642的寄存器。当然理解尽管示出有这几个示例执行单元,在另一个实施例中可以存在额外或不同整数执行单元。

存储器执行调度器650可以调度存储器操作以供在地址生成单元652中执行,该地址生成单元也耦合于tlb654。如看到的,这些结构可以耦合于数据高速缓存660,该数据高速缓存660可以是l0和/或l1数据高速缓存,其进而耦合于高速缓存存储器层级的另外的级别,包括l2高速缓存存储器。

为了提供对乱序执行的支持,除配置成对乱序执行的指令重排序来有序引退的重排序缓冲器680外,还可以提供分配器/重命名器670。尽管在图6的图示中示出有该特定流水线架构,理解许多改动和备选是可能的。

注意在具有不对称核的处理器(例如根据图5和6的微架构的)中,工作负载由于功率管理原因而可以在核之间动态交换,这是因为这些核尽管具有不同流水线设计和深度但可以具有相同或相关isa。这样的动态核交换可以采用对用户应用(并且可能也对于内核)透明的方式执行。

参考图7,示出根据再另一个实施例的处理器核的微架构的框图。如在图7中图示的,核700可以包括多级有序流水线,用于在非常低功耗级执行。作为一个这样的示例,处理器700可以具有根据从加利福尼亚州sunnyvale市的armholdings,ltd.可获得的armcortexa53设计的微架构。在实现中,可以提供8级流水线,其配置成执行32位和64位代码。核700包括提取单元710,其配置成提取指令并且将它们提供给解码单元715,该解码单元可以对指令(例如,指定isa(例如armv8isa)的宏指令)解码。进一步注意队列730可以耦合于解码单元715来存储解码指令。解码指令提供给发出逻辑725,其中解码指令可以发给多个执行单元中的指定一个。

进一步参考图7,发出逻辑725可以向多个执行单元中的一个发出指令。在示出的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/矢量单元750、双发出单元760和加载/存储单元770。这些不同执行单元的结果可以提供给回写单元780。理解尽管为了易于说明而示出单个回写单元,在一些实现中,单独的回写单元可以与执行单元中的每个关联。此外,理解尽管图7中示出的单元和逻辑中的每个以高级别表示,特定实现可以包括更多或不同结构。使用具有如图7中的流水线的一个或多个核设计的处理器可以在从移动设备扩展到服务器系统的许多不同终端产品中实现。

参考图8,示出根据再另外的实施例的处理器核的微架构的框图。如在图8中图示的,核800可以包括多级多发出乱序流水线,用于在非常高的性能级(其可以在图7的核700还高的功耗级出现)执行。作为一个这样的示例,处理器800可以具有根据armcortexa57设计的微架构。在实现中,可以提供15(或更大)级流水线,其配置成执行32位和64位代码。另外,流水线可以提供3(或更大)宽和3(或更大)发出操作。核800包括提取单元810,该提取单元810配置成提取指令并且将它们提供给解码器/重命名器/调派器815,其可以对指令(例如,armv8指令集架构的宏指令)解码、对指令内的寄存器引用重命名以及向所选的执行单元调派指令(最终)。解码指令可以存储在队列825中。注意尽管在图8中为了易于说明示出单个队列结构,理解可以对多个不同类型的执行单元中的每个提供单独队列。

在图8中还示出发出逻辑830,存储在队列825中的解码指令可以从该发出逻辑发给所选的执行单元。发出逻辑830还可以在对于发出逻辑830所耦合的多个不同类型的执行单元中的每个具有单独发出逻辑的特定实施例中实现。

解码指令可以发给多个执行单元中的指定一个。在示出的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/矢量单元850、分支单元860和加载/存储单元870。在实施例中,浮点/矢量单元850可以配置成处理128位256位的simd或矢量数据。再进一步,浮点/矢量执行单元850可以执行ieee-754双精度浮点运算。这些不同执行单元的结果可以提供给回写单元880。注意在一些实现中,单独的回写单元可以与执行单元中的每个关联。此外,理解尽管在图8中示出的单元和逻辑中的每个以高级别表示,特定实现可以包括更多或不同结构。

注意在具有不对称核(例如根据图7和8的微架构)的处理器中,工作负载可以由于功率管理原因而动态交换,这是因为这些核尽管具有不同流水线设计和深度但可以具有相同或相关isa。这样的动态核交换可以采用对于用户应用(以及可能也对于内核)透明的方式执行。

使用具有如图5-8中的任一个或多个中的流水线的一个或多个核设计的处理器可以在从移动设备扩展到服务器系统的许多不同终端产品中实现。现在参考图9,示出根据本发明的另一个实施例的处理器的框图。在图9的实施例中,处理器900可以是soc,其包括多个域,可以控制这些域中的每个来以独立操作电压和操作频率操作。作为特定说明性示例,处理器900可以是基于intel®architecturecore™的处理器,例如i3、i5、i7或从intelcorporation可获得的另一个这样的处理器。然而,例如从加利福尼亚州sunnyvale市的advancedmicrodevices,inc.(amd)可获得的其他低功率处理器、来自armholdings的基于arm的设计或其被许可方或来自加利福尼亚州sunnyvale市的mipstechnologies,inc.的基于mips的设计或它们的被许可方或采用方相反可以在其他实施例例如applea7处理器、qualcommsnapdragon处理器或texasinstrumentsomap处理器中存在。这样的soc可以在例如智能电话、平板计算机、平板手机式计算机、ultrabook™计算机或其他便携式计算设备等低功率系统中使用。

在图9中示出的高级视图中,处理器900包括多个核单元9100-910n。每个核单元可以包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路。每个核单元910可以支持一个或多个指令集(例如,x86指令集(具有添加有较新版本的一些扩展));mips指令集;arm指令集(具有可选的额外扩展,例如neon)或其他指令集或其组合。注意核单元中的一些可以是异构资源(例如,具有不同设计)。另外,每个这样的核可以耦合于高速缓存存储器(未示出),其在实施例中可以是共享级(l2)高速缓存存储器。非易失性存储930可以用于存储各种程序和其他数据。例如,该存储可以用于存储微代码的至少部分、启动信息(例如bios)、其他系统软件或等等。

每个核单元910还可以包括接口,例如总线接口单元,用于实现到处理器的额外电路的互连。在实施例中,每个核单元910耦合于一致性构造,该一致性构造可以充当主高速缓存一致性晶片上互连,其进而耦合于存储器控制器935。进而,存储器控制器935控制与例如dram等存储器(在图9中为了易于说明而未示出)的通信。

除核单元外,在处理器内存在额外处理引擎,其包括至少一个图形单元920,该至少一个图形单元920可以包括一个或多个图形单元(gpu),用于执行图形处理以及可能在图形处理器上执行通用操作(所谓的gpgpu操作)。另外,可以存在至少一个图像信号处理器925。信号处理器925可以配置成处理从一个或多个捕捉设备(在soc内部或在芯片外)接收的传入图像数据。

还可以存在其他加速器。在图9中的图示中,视频代码化器(vediocoder)950可以执行编码(coding)操作,其包括对视频信息的编码和解码,例如对高清晰度视频内容提供硬件加速支持。可以进一步提供显示控制器955来加速显示操作,其包括对系统的内部和外部显示器提供支持。另外,可以存在安全处理器945来执行安全操作,例如安全启动操作、各种加密操作等等。

单元中的每个可以经由功率管理器940来控制它的功耗,该功率管理器940可以包括控制逻辑,用于执行本文描述的各种功率管理技术。例如,功率管理器940可以包括用于对执行的工作负载分类的机器学习/工作负载分类逻辑和迁移逻辑,该迁移逻辑可以促使工作负载的至少一些线程动态迁移到不同核(和/或核类型),使得在下一个操作间隔不同数量的核可以是活跃的。

在一些实施例中,soc900可以进一步包括非一致性构造,其耦合于各种外围设备可以耦合的一致性构造。一个或多个接口960a-960d实现与一个或多个芯片外设备通信。这样的通信可以经由多种通信协议,例如pcie™、gpio、usb、i2c、uart、mipi、sdio、ddr、spi、hdmi及其他类型的通信协议。尽管在图9的实施例中以该高级别示出,理解本发明的范围在该方面不受限制。

现在参考图10示出代表性soc的框图。在示出的实施例中,soc1000可以是多核soc,其配置成用于为了并入智能电话或其他低功率设备(例如平板计算机或其他便携式计算设备)而优化的低功率操作。作为示例,soc1000可以使用不对称或不同类型的核实现,例如较高功率和/或低功率核(例如乱序核和有序核)的组合。在不同实施例中,这些核可以基于intel®architecture™核设计或arm架构设计。在再其他实施例中,intel和arm核的混合可以在指定soc中实现。

如在图10中看到的,soc1000包括第一核域1010,其具有多个第一核10120-10123。在示例中,这些核可以是低功率核,例如有序核。在一个实施例中,这些第一核可以实现为armcortexa53核。进而,这些核耦合于核域1010的高速缓存存储器1015。另外,soc1000包括第二核域1020。在图10的图示中,第二核域1020具有多个第二核10220-10223。在示例中,这些核可以是比第一核1012更高功耗的核。在实施例中,第二核可以是乱序核,其可以实现为armcortexa57核。进而,这些核耦合于核域1020的高速缓存存储器1025。注意尽管图10中示出的示例在每个域中包括4个核,理解在其他示例中在指定域中可以存在更多或更少的核。

进一步参考图10,还提供图形域1030,其可以包括配置成独立执行图形工作负载(例如,由核域1010和1020的一个或多个核提供)的一个或多个图形处理单元(gpu)。作为示例,gpu域1030除提供图形和显示渲染操作外还可以用于提供对多种平面尺寸的显示支持。

如看到的,各种域耦合于一致性互连1040,其在实施例中可以是高速缓存一致性互连构造,该高速缓存一致性互连构造进而耦合于集成存储器控制器1050。在一些示例中,一致性互连1040可以包括共享高速缓存存储器,例如l3高速缓存。在实施例中,存储器控制器1050可以是直接存储器控制器,用于提供与芯片外存储器的通信的多个通道,例如dram(在图10中为了易于说明而未示出)的多个通道。

在不同示例中,核域的数量可以变化。例如,对于适合于并入移动计算设备的低功率soc,可以存在有限数量的核域,例如在图10中示出。再进一步,在这样的低功率soc中,包括较高功率核的核域1020可以具有较少数量的这样的核。例如,在一个实现中,可以提供两个核1022来实现在减少的功耗级的操作。另外,不同的核域也可以耦合于中断控制器来实现不同域中工作负载的动态交换。

在再其他实施例中,可以存在较大数量的核域,以及额外可选的ip逻辑,这是因为soc可以定标到较高性能(和功率)级以并入其他计算设备,例如台式机、服务器、高性能计算系统、基站等。作为一个这样的示例,可以提供4个核域,每个具有指定数量的乱序核。再进一步,除可选的gpu支持(其作为示例可以采取gpgpu的形式)外,还可以提供一个或多个加速器来提供对特定功能(例如,web服务、网络处理、交换或等等)的优化硬件支持。另外,可以存在输入/输出接口以使这样的加速器耦合于芯片外部件。

现在参考图11,示出另一个示例soc的框图。在图11的实施例中,soc1100可以包括各种电路,用于实现多媒体应用、通信和其他功能的高性能。如此,soc1100适合于并入很多种便携式和其他设备,例如智能电话、平板计算机、智能tv等等。在示出的示例中,soc1100包括中央处理单元(cpu)域1110。在实施例中,在cpu域1110中可以存在多个个体处理器核。作为一个示例,cpu域1110可以是四核处理器,其具有4个多线程核。这样的处理器可以是同构或异构处理器,例如低功率和高功率处理器核的混合。

进而,提供gpu域1120以在一个或多个gpu中执行高级图形处理来处理图形并且计算api。除可以在执行多媒体指令期间出现的高级计算外,dsp单元1130还可以提供一个或多个低功率dsp用于处理低功率多媒体应用,例如音乐重放、音频/视频等等。进而,通信单元1140可以包括各种部件,用于经由各种无线协议提供连接性,例如蜂窝通信(其包括3g/4glte)、无线局域协议(例如bluetooth™、ieee802.11)等等。

再进一步,多媒体处理器1150可以用于执行高清晰度视频和内容的捕捉和重放,其包括用户手势的处理。传感器单元1160可以包括多个传感器和/或传感器控制器,用于接口到指定平台中存在的各种芯片外传感器。图像信号处理器1170可以提供有一个或多个单独的isp以关于来自平台的一个或多个拍摄装置(其包括静止和视频拍摄装置)的捕捉内容执行图像处理。

显示处理器1180可以对到具有指定像素密度的高清晰度显示器的连接提供支持,其包括无线传达内容用于在这样的显示器上重放的能力。再进一步,定位单元1190可以包括支持多个gps星座(constellation)的gps接收器,用于提供使用如这样的gps接收器获得的高度准确的定位信息的应用。理解尽管在图11的示例中示出有该特定部件集,许多改动和备选是可能的。

现在参考图12,示出实施例可以与之一起使用的示例系统的框图。如看到的,系统1200可以是智能电话或其他无线通信器。基带处理器1205配置成关于要从系统传送或被系统接收的通信信号执行各种信号处理。进而,基带处理器1205耦合于应用处理器1210,其除例如许多众所周知的社交媒体和多媒体app等用户应用外还可以是系统的主cpu来执行os和其他系统软件。应用处理器1210可以进一步配置成对设备执行多种其他计算操作。

进而,应用处理器1210可以耦合于用户界面/显示器1220,例如触屏显示器。另外,应用处理器1210可以耦合于存储器系统,其包括非易失性存储器(即闪速存储器1230)和系统存储器(即动态随机存取存储器(dram)1235)。如进一步看到的,应用处理器1210进一步耦合于捕捉设备1240,例如可以记录视频和/或静止图像的一个或多个图像捕捉设备。

再参考图12,包括订户身份模块以及可能安全存储和加密处理器的通用集成电路卡(uicc)1240也耦合于应用处理器1210。系统1200可以进一步包括安全处理器1250,其可以耦合于应用处理器1210。多个传感器1225可以耦合于应用处理器1210以能够输入多种感测信息,例如加速计和其他环境信息。音频输出设备1295可以提供接口来输出声音,例如采用语音通信、播放或流播音频数据等等的形式。

如进一步图示的,提供近场通信(nfc)非接触式接口1260,其经由nfc天线1265而在nfc近场中通信。尽管在图12中示出单独的天线,理解在一些实现中可以提供一个天线或者不同的天线集来实现各种无线功能性。

功率管理集成电路(pmic)1215耦合于应用处理器1210来执行平台级功率管理。为此,pmic1215可以向应用处理器1210发出功率管理请求以根据期望进入某些低功率状态。此外,基于平台约束,pmic1215还可以控制系统1200的其他部件的功率级。

为了能够传送和接收通信,各种电路可以在基带处理器1205与天线1290之间耦合。具体地,可以存在射频(rf)收发器1270和无线局域网(wlan)收发器1275。一般,rf收发器1270可以用于根据例如3g或4g无线通信协议等指定无线通信协议(例如根据码分多址(cdma)、全球移动通信系统(gsm)、长期演进(lte)或其他协议)来接收和传送无线数据和呼叫(call)。另外可以存在gps传感器1280。还可以提供其他无线通信,例如无线电信号(例如,am/fm和其他信号)的接收或传送。另外,经由wlan收发器1275,还可以实现局部无线通信。

现在参考图13,示出实施例可以与之一起使用的另一个示例系统的框图。在图13的图示中,系统1300可以是移动低功率系统,例如平板计算机、2:1平板、平板手机或其他可折叠(convertible)或独立平板系统。如图示的,存在soc1310并且其可以配置成作为设备的应用处理器而操作。

多种设备可以耦合于soc1310。在示出的图示中,存储器子系统包括耦合于soc1310的闪速存储器1340和dram1345。另外,触摸板1320耦合于soc1310以来提供显示能力和经由触摸的用户输入,其包括在触摸板1320的显示器上预备虚拟键盘。为了提供有线网络连接性,soc1310耦合于以太网接口1330。外围集线器1325耦合于soc1310以能够与各种外围设备接口,例如可以通过各种端口或其他连接器中的任一个耦合于系统1300。

除soc1310内的内部功率管理电路和功能性外,pmic1380耦合于soc1310来提供基于平台的功率管理,例如基于系统是由电池1390还是经由ac适配器1395的ac电力供电。除该基于功率源的功率管理外,pmic1380可以进一步基于环境和使用条件来执行平台功率管理活动。再进一步,pmic1380可以将控制和状态信息传达到soc1310以在soc1310内促成各种功率管理动作。

再参考图13,为了提供无线能力,wlan单元1350耦合于soc1310并且进而耦合于天线1355。在各种实现中,wlan单元1350可以根据一个或多个无线协议提供通信。

如进一步图示的,多个传感器1360可以耦合于soc1310。这些传感器可以包括各种加速计、环境和其他传感器,其包括用户手势传感器。最后,音频编解码器1365耦合于soc1310来提供到音频输出设备1370的接口。当然理解尽管在图13中示出有该特定实现,许多改动和备选是可能的。

现在参考图14,示出代表性计算机系统(例如笔记本、ultrabook™或其他小形状因子系统)的框图。处理器1410在一个实施例中包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知处理元件。在图示的实现中,处理器1410充当主处理单元和中央集线器用于与系统1400的各种部件中的许多通信。作为一个示例,处理器1400实现为soc。

处理器1410在一个实施例中与系统存储器1415通信。作为说明性示例,系统存储器1415经由多个存储器设备或模块实现来提供指定数量的系统存储器。

为了提供例如数据、应用、一个或多个操作系统等信息的持久存储,大容量存储1420也可以耦合于处理器1410。在各种实施例中,为了实现更薄且更轻系统设计以及为了提高系统响应性,该大容量存储可以经由ssd实现或大容量存储可以主要使用具有较少量ssd存储来充当ssd高速缓存的硬盘驱动器(hdd)实现以实现在掉电事件期间上下文状态和其他这样的信息的非易失性存储使得在重新发起系统活动时可以出现快速上电。在图14中还示出,闪存设备1422可以耦合于处理器1410,例如经由串行外围接口(spi)。该闪存设备可以提供系统软件的非易失性存储,其包括基本输入/输出软件(bios)以及系统的其他固件。

在系统1400内可以存在各种输入/输出(i/o)设备。具体在图14的实施例中示出显示器1424,其可以是进一步提供触屏1425的高清晰度lcd或led面板。在一个实施例中,显示器1424可以经由显示互连而耦合于处理器1410,该显示互连可以实现为高清晰度图形互连。触屏1425可以经由另一个互连耦合于处理器1410,该另一个互连在实施例中可以是i2c互连。如在图14中进一步示出的,除触屏1425外,经由触摸板1430还可以出现通过触摸方式的用户输入,该触摸板1430可以在机箱内配置并且还可以耦合于与触屏1425相同的i2c互连。

为了感知计算和其他目的,在系统可以存在各种传感器并且它们可以采用不同方式耦合于处理器1410。某些惯性和环境传感器可以通过传感器集线器1440耦合于处理器1410,例如经由i2c互连。在图14中示出的实施例中,这些传感器可以包括加速计1441、环境光传感器(als)1442、罗盘1443和陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,其在一些实施例中经由系统管理总线(smbus)总线耦合于处理器1410。

同样在图14中看到的,各种外围设备可以经由低引脚计数(lpc)互连而耦合于处理器1410。在示出的实施例中,各种部件可以通过嵌入式控制器1435耦合。这样的部件可以包括键盘1436(例如,经由ps2接口耦合)、风扇1437和热传感器1439。在一些实施例中,触摸板1430还可以经由ps2接口耦合于ec1435。另外,安全处理器(例如可信平台模块(tpm)1438)也可以经由该lcp互连耦合于处理器1410。

系统1400可以采用多种方式(其包括无线)与外部设备通信。在图14中示出的实施例中,存在各种无线模块,其中的每个可以对应于为特定无线通信协议所配置的无线电设备。短程(例如近场)无线通信的一个方式可以经由nfc单元1445,其在一个实施例中可以经由smbus与处理器1410通信。注意经由该nfc单元1445,彼此很靠近的设备可以通信。

如在图14中进一步看到的,额外无线单元可以包括其他短程无线引擎,其包括wlan单元1450和bluetooth单元1452。使用wlan单元1450,可以实现wi-fi™通信,而经由bluetooth单元1452,可以出现短程bluetooth™通信。这些单元可以经由指定链路来与处理器1410通信。

另外,无线广域通信(例如根据蜂窝或其他无线广域协议)可以经由wwan单元1456出现,该wwan单元1456进而可以耦合于订户身份模块(sim)1457。另外,为了能够接收和使用位点信息,还可以存在gps模块1455。注意在图14中示出的实施例中,wwan单元1456和集成捕捉设备(例如拍摄装置模块1454)可以经由指定链路通信。

集成拍摄装置模块1454可以包含在盖中。为了提供音频输入和输出,音频处理器可以经由数字信号处理器(dsp)1460实现,该数字信号处理器1460可以经由高清晰度音频(hda)链路耦合于处理器1410。相似地,dsp1460可以与集成编码器/解码器(codec)和放大器1462通信,该集成编码器/解码器(codec)和放大器1462进而可以耦合于输出扬声器1463,其可以在机箱内实现。相似地,放大器和codec1462可以耦合以从麦克风1465接收音频输入,该麦克风1465在实施例中可以经由双阵列麦克风(例如数字麦克风阵列)实现来提供高质量音频输入以在系统内实现各种操作的语音激活控制。还注意可以从放大器/codec1462向耳机插孔1464提供音频输出。尽管在图14的实施例中示出有这些特定部件,理解本发明的方法在该方面不受限制。

实施例可以采用许多不同的系统类型实现。现在参考图15,示出根据本发明的实施例的系统的框图。如在图15中示出的,多处理器系统1500是点到点互连系统,并且包括经由点到点互连1550而耦合的第一处理器1570和第二处理器1580。如在图15中示出的,处理器1570和1580中的每个可以是多核处理器,其包括第一和第二处理器核(即,处理器核1574a和1574b以及处理器核1584a和1584b),但潜在地在处理器可以存在多得多的核。处理器中的每个可以包括pcu或其他功率管理逻辑,用于执行如本文描述的基于处理器的功率管理,其包括工作负载分类和至少部分基于该工作负载分类的动态线程迁移和核性能控制。

再参考图15,第一处理器1570进一步包括存储器控制器集线器(mch)1572以及点到点(p-p)接口1576和1578。相似地,第二处理器1580包括mch1582以及p-p接口1586和1588。如在图15中示出的,mch1572和1582使处理器耦合于相应存储器,即存储器1532和存储器1534,其可以是本地附连到相应处理器的主存储器(例如,dram)的部分。第一处理器1570和第二处理器1580可以分别经由p-p互连1562和1564耦合于芯片集1590。如在图15中示出的,芯片集1590包括p-p接口1594和1598。

此外,芯片集1590包括接口1592,用于使芯片集1590通过p-p互连1539与高性能图形引擎1538耦合。进而,芯片集1590可以经由接口1596耦合于第一总线1516。如在图15中示出的,各种输入/输出(i/o)设备1514可以连同总线桥1518耦合于第一总线1516,该总线桥1518使第一总线1516耦合于第二总线1520。各种设备可以耦合于第二总线1520,其包括例如键盘和/或鼠标1522、通信设备1526和数据存储单元1528,例如盘驱动器或其他大容量存储设备,其在一个实施例中可以包括代码1530。此外,音频i/o1524可以耦合于第二总线1520。实施例可以并入其他类型的系统,其包括例如智能蜂窝电话、平板计算机、上网本、ultrabook™或等等的移动设备。

在实施例中,预测逻辑适于确定最佳功率配置,并且控制逻辑适于应用所确定的功率配置。预测逻辑通过读取性能/能量计数器并且然后使用智能模型来评估当前状态而定期收集输入统计信息,并且预测下一个最佳功率配置。在实施例中,控制逻辑经由线程迁移以及动态电压和频率定标向底层系统应用该功率控制决策。在一些实施例中,可以存在一个或多个异构核,其专门用于存储器密集型工作负载。线程可以迁移到这样的核以在存储器限制的阶段期间节省更多能量。硬件线程迁移技术可以用于使线程在计算偏向核与存储器偏向核之间迁移,这从用户应用以及操作系统的角度来看不牵涉任何软件干预。

因为计算限制和存储器限制的工作负载可以具有大不相同的系统要求,模型解决分类问题。给出在当前时间样本的功率配置参数(例如,核数量、线程数量、时钟频率和电压)集和运行时统计信息(例如,各种性能/能量计数器),目标是找到最佳功率配置来使对于下一个时间间隔的性能和能量效率最大化。在不同实施例中,可以使用两个类型的预测模型、专家启发和机器学习。

现在参考图16,示出根据本发明的实施例的功率控制逻辑的框图。如在图16中示出的,可以由硬件、软件和/或固件的组合形成的功率控制逻辑1600可以实现为处理器的较大功率控制单元(例如pcu)的部分。这样的pcu进而自身可以实现为一个或多个微控制器或其他控制逻辑。在示出的实施例中,功率控制逻辑1600包括性能特性缓冲器1610。如本文描述的,缓冲器1610可以配置成存储传入的性能特性,例如从处理器和/或具有这样的处理器的系统的各种核和其他逻辑的性能/能量计数器获得。

进而,向预测逻辑1620提供特性信息。在不同实现中,可以存在不同类型的预测逻辑。如本文描述的,这样的逻辑可以包括基于专家启发和/或机器学习的一个或多个模型。预测逻辑1620从传入的关于当前处理器操作的特性信息可以生成功率配置条件。这样的定义可以用于对下一个操作间隔限定合适的处理器操作控制。在实施例中,这样的功率配置定义信息可以包括在下一个操作间隔活跃的核的数量、要对这样的核调度的对应线程以及所选的核操作的电压/频率。

如看到的,该功率配置定义信息提供给控制逻辑1630,其可以配置成在下一个操作间隔实施定义。如此,控制逻辑1630可以配置成向各种处理器实体提供控制信息,这些处理器实体包括时钟发生器(例如一个或多个锁相环)、一个或多个电压调节器(例如集成电压调节器)或等等。再进一步,控制信息可以提供给个体核来指示在下一个操作间隔要使指定核通电还是断电。如果要使核断电,核可以采取各种动作,其包括将它的状态保存到合适的存储以使核能够进入所请求的低功率状态、对一个或多个时钟信号选通以及对一个或多个功率门选通。对于在下一个操作间隔要变成通电的核,这样的控制可以包括对一个或多个时钟信号未选通、对一个或多个功率门未选通以及从指定存储恢复核的状态。当然理解在各种实施例中,可以出现对于这样的核低功率状态进入和退出的额外操作。再进一步理解在不同实现中,可以存在功率控制逻辑的多种不同配置。

对于专家启发模型,专家识别工作负载和系统的最相关参数、创建预测模型来对计算或存储器限制的工作负载分类并且导向所识别的工作负载的最能量高效配置。例如,可以使用两个直观启发式模型。由于设计复杂性,启发法可以仅选择在设计空间探索中从最受欢迎配置精选的许多可能参数的子集,叫作热状态。

对于简单的分类启发模型(h1),两个参数可以用于做出决策,例如每秒指令(ips)和存储器带宽(membw)。ips是核利用的指标而membw直接示出存储器占用。具有低ips和高membw的工作负载分类为存储器限制的,而高ips和低membw工作负载分类为计算限制的。高和低阈值是可调整的,例如在一些实施例中由用户调整。决策策略可以如下:对于存储器限制的工作负载实现弱功率配置(较少核/线程和较低电压/频率)并且对于计算限制的工作负载实现强功率配置(其可以是基线配置)。

与h1相似,反馈分类启发模型(h2)首先对工作负载分类。并且,每个分类具有优选动作;例如,存储器限制的工作负载将促使启用较弱配置(首先是较少核/线程,然后是较低电压/频率),并且计算限制的应用将促使启用较强配置。混合工作负载具有变弱或变强的某些概率。然后,能量效率度量(ee)计算为ips*ips/pcl来估计当前能量效率,其中pcl是从主导功率分量(例如泄漏)得到的估计功耗水平。在实施例中,度量可以通过使常数(基于工作负载中指令的数量)乘以能量-延迟积的倒数来确定。基于来自最后的动作的正或负ee反馈,做出新的决策来采取优选动作、采取与最后的动作相同的动作或什么也不做。

全面的运行时工作负载和系统统计信息的集可以大至成百上千个特征,例如许多队列结构的占用、每个功能单元的利用等等。为了考虑所有这些组合,设计空间爆发式增长。因此,实施例可以对于数据处理和决策制定使用机器学习技术。

在机器学习模型中,运行时统计信息可以作为属性而被包括。多维记录是对于在采样时期期间的所有属性的平均统计值的集合。对每个时间间隔的最能量高效配置指派有具有核、线程、电压和频率的信息的标签。模型预测下一个最佳功率配置。

在机器学习训练过程期间,某些性能/能量特性可以从大量数据识别并且用于做出智能自动决策。离线训练过程采取在指定时间的大规格工作负载/系统统计信息作为输入来预测最佳功率配置。离线训练过程可以生成系数(或权重)集,其可以编程到功率控制器内(例如,通过存储在非易失性存储器中)以供实时使用。

从而在设计或配置过程期间,出现离线数据收集。该离线数据收集过程可以例如由处理器设计者在设计阶段期间和/或制造后执行。在过程中,可以执行(和/或模拟)多种不同工作负载(例如代表性基准工作负载)以实现处理器上工作负载的表征(如由性能和能量参数信息确定的)。在一些情况下,大量基准工作负载可以用于适当训练机器学习分类器。

在示例中,在代表性工作负载的离线数据收集期间识别多个工作负载阶段,并且在每个工作负载阶段期间,可以对特定功率配置生成数据点。然后执行对所有可能配置的穷举搜索来收集代表性工作负载数据集。所计算的性能和能量用于对最佳能量高效配置预处理,而可以实施性能下降约束来滤除太多的性能牺牲。然后,每个数据点用它的最佳配置名称来标记以用于后来监管学习过程。

在不同实施例中,可以考虑相关属性的指定集。在一个实施例中,这些属性包括ips、membw、平均往返存储器延迟(memlat)、存储器指令百分比(meminst)、浮点指令百分比(fpinst)、alu指令百分比(aluinst)、搁置传出存储器请求队列占用(memq)以及最后级别的高速缓存未命中率(llcmiss)。这样的属性可以最佳代表工作负载行为并且有效地帮助减少性能/能量计数器的数量。

在不同实施例中,可以使用各种离线监管的模型。在一个示例中,具有岭估计器的多类逻辑回归(logisticregression)模型可以用于测量超过两个类别因变量或自变量之间的关系,其展现良好的准确性和简单的实现。在另一个示例中,可以使用多层感知器。该模型是使用反向传播的人工神经网络分类器,其可以适合于具有非线性行为的大量数据。节点全部是s形的(logistic函数)并且可以具有至少三个层。输入层采取所有所选属性,并且输出层产生最佳功率配置。作为另一个示例,可以使用决策树模型,其维持类似流程的树结构,其中叶片代表标记(所有可能最佳配置)并且分支是属性的连结。在树的每个节点,属性被选为用于有效地将数据点分成一个类别及其他类别中的子集。

一旦模型受训,它们实现为功率控制器以用于在线预测。在运行时,收集对应于所选属性的性能/能量计数器并且受训机器学习模型预测下一个最佳功率配置。为了提高准确性,可以使用运行时反馈机制并且可以覆盖用于更新功率配置的机器学习决策而未采取动作。这是这样的,因为机器学习模型可能非常频繁地在若干功率配置之间来回切换从而导致高切换开销。用于历史跟踪的饱和计数器可以用于避免这样的过于敏感反应。机器学习模型还可以趋于选择高能量节省而使性能牺牲太多,尤其对于计算限制的工作负载更为如此,其中较弱系统资源直接与性能相关。每核的ips历史寄存器可以用于检测由于功率配置改变引起的急剧性能下降。

控制逻辑负责对底层系统应用最佳功率控制决策,其牵涉硬件控制(例如,电压和频率定标)和软件控制(例如,核和线程映射)。在不同实施例中,可以使用各种线程映射机制。

在一个实施例中,可以修改软件层(用户应用、运行时库和/或操作系统)。预测逻辑提供接口来传达最佳功率控制决策,然后软件经由用户级线程化(分叉/汇合(fork/join))、动态运行时库(例如openmp、posix线程等)、任务队列调度器或操作系统线程迁移来调整线程到核映射。

可以提供应用编程接口(api)使得用户应用或运行时库可以直接访问功率控制器来检索最佳功率配置决策。如果最好改变功率配置,应用或运行时间调整线程到核映射。

例如,如果应用具有大的并行循环,程序员或编译器可以将循环分成段并且插入功率询问和线程管理api调用来获得对每个段的最佳配置并且相应地使下一个段并行化。运行时框架(例如openmp)和任务队列将使用户应用不带有编程开销。例如,在用户应用使具有openmp的循环并行化时,运行时间可以调用功率询问api来获得对于循环的最佳配置并且经由线程固定api适当管理线程和核。任务队列库也可以应用相似方法。任务队列调度器可以用于基于最佳功率决策使任务自动迁移。

另一个机制使操作系统增广以对所有用户应用提供线程管理。操作系统定期与功率控制器交互并且获得最佳配置。它然后将软件线程调度到合适的硬件上下文。例如,假设用户应用在四个核上运行8个线程;每核两个线程,但告知操作系统单个核是最佳配置。然后,操作系统仅在一个核上指派全部八个线程,即使总共四个核可用也如此。它使六个线程从另外三个核迁移到所选的一个核并且关断未占用的三个核来节省能量。

实施例还可以使用透明线程迁移。在一些情况下,处理器可以包括异构核,其包括计算偏向核和存储器优化核。这样的设计基于单个核架构无法同时对计算限制和存储器限制的工作负载优化这一观察。例如,常规多处理器通常对以高频运行的许多核计数为目标的计算工作负载所优化。然而,这样的多处理器在多半等待存储器访问的阶段期间不是能量高效的。因此,可以提供专门用于存储器密集型阶段的一个或多个核(存储器偏向或存储器优化核),其以低频运行来使存储器资源饱和,从而提供与许多计算核相同的存储器性能。注意这样的存储器偏向核对于系统软件(其包括os)和对于处理器的消费者或购买者都可以是完全透明的。例如,指定处理器可以包括4个计算偏向核和单个存储器偏向核。在该示例中,处理器产品可以作为具有4个核(在促销或市场信息中没有提及由存储器偏向核组成,使得消费者甚至不知道额外核)的多核处理器而推向市场。如此,存储器偏向核因为是透明的(并且仅对于工作负载执行的特定阶段活跃)而可以称为隐蔽(shadow)或辅助核。

线程迁移机制可以用于在对软件(既是用户应用也是操作系统)透明的两个类型的核之间切换执行。例如,假设系统具有一个存储器优化核和四个计算优化核。如果每个计算核能够双向smt,则存储器优化核配备有总共八个硬件上下文。存储器优化核上下文仅对于硬件可见并且完全对软件隐藏。并且,到存储器优化核上下文上的线程迁移仅仅由硬件处理。硬件控制器在计算核与存储器优化核之间复制确切相同的线程上下文并且然后静默恢复在新核上的执行。甚至操作系统无法检测底层线程迁移。另外,因为存储器优化核只是相同高速缓存一致性域上的另一个核,它根本没有引发任何存储器一致性问题,但它可能经受来自上下文迁移的数据迁移开销。注意存储器优化核架构提供新的机会来优化能量效率。因为在它上仅执行存储器密集型工作负载,它的架构可以最大限度地被专门化来实现比通用核数量级更高的效率。在一些情况下,存储器优化核实现与计算核相同的isa。

现在参考图17,示出根据本发明的另一个实施例的处理器(其包括硬件功率控制逻辑)的框图。如在图17中图示的,处理器1700是多核处理器,其在特定实现中可以是具有多种核的soc,这些核包括具有不同计算和存储器能力的至少一些异构核。这样,通过适当控制活跃核,工作负载可以在核之中分配来提供功率和性能的高效混合。如看到的,处理器1700包括多个核17100-1710n。在不同实施例中,这些核可以是有序和乱序核以及计算偏向核和一个或多个存储器偏向核的混合来提供在高效且低核功率的存储器限制的操作。

如在图17中进一步图示的,核1710耦合于高速缓存存储器1720,其在实施例中可以实现为共享高速缓存存储器,例如最后级别的高速缓存。再进一步,处理器1700可以包括内部存储器1730,例如可以位于多晶片处理器封装的单独晶片上。

在操作期间,各种核内包括的性能/能量计数器可以配置成向功率控制器1750提供特性信息。在各种实施例中,功率控制器1750可以实现为pcu,其包括用于执行如本文描述的基于模型的功率控制的专门硬件逻辑。

在图17的图示中,功率控制器1750包括特性缓冲器1760,其可以存储从各种核传入的信息。尽管本发明的范围在该方面不受限制,这样的性能/能量特性可以包括每周期信息的指令、指令混合信息、加载/存储队列信息、高速缓存命中/未命中信息、存储器延迟信息和存储器带宽信息及其他这样的信息。

如看到的,缓冲器1760耦合于性能/能量模型逻辑1770,其可以基于传入的特性信息确定性能和能量预测。在不同实施例中,性能/能量模型逻辑1770可以包括硬件用于实现指定模型,例如基于专家启发的模型、基于机器学习的模型和/或其组合。仍参考图17,注意性能/能量逻辑1770进一步从配置存储1780接收输入。一般,配置存储1780包括关于可能操作特性的信息,其包括活跃核的数量(例如,从0到n)以及对于指定数量的活跃核的电压/频率对。在其中性能/能量逻辑1770是基于启发的逻辑的实施例中,配置存储1780可以进一步提供启发存储来存储一个或多个查找表,其具有多个条目,这些条目中的每个可以用于存储与特定工作负载分类和对应功率配置关联的工作负载特性信息。在其中性能/能量逻辑1770是基于机器学习的逻辑的实施例中,配置存储1780可以进一步提供受训模型参数存储(例如,经由非易失性存储)来存储一个或多个表,其具有多个条目,这些条目中的每个可以用于存储在离线训练过程期间获得的受训模型参数。

在一些实施例中,对于机器学习和启发法两者的模型可以实现为包括输入参数(工作负载特性,例如ips,等)和系数集的方程来对每个参数提供权重。该方程可以用于计算代表下一个操作间隔处理器的最佳配置状态的数值。该值可以用作到具有不同配置参数的表的索引。在这些情况下,配置存储1780对每个参数提供系数表。一般,方程(或方程的格式)是固定的。因此,仅系数可以改变。在启发法中,在制造期间系数被固定一次。在机器学习法中,系数在离线训练期间被获得并且编程到存储内。在操作时,系数可以基于机器学习而在线更新。

仍参考图17,功率控制器1750进一步包括功率配置选择器1790,其可以接收对于下一个操作间隔的指定性能能量预测并且确定合适的下一个功率配置以对于该下一个操作间隔向核1710提供操作控制。在图17中示出的实施例中,功率配置选择器1790包括历史逻辑1792、影响逻辑1794和更新逻辑1795。

一般,历史逻辑1792可以配置成分析传入预测并且基于短期和/或长期历史确定预测是否合适以及是否应提供预测以对于下一个操作间隔控制核。例如,对特定配置的许多预测(例如,对于数量减少的核)可以在出现影响数量减少的核的配置改变之前连续进行(例如,3个或以上)。还可以使用历史逻辑1792以通过参考历史状态来避免过于敏感控制,这是必要的。在一个实施例中,历史逻辑1792可以经由计数器(例如,2位饱和计数器)对每个可能决策实现懒惰切换(lazyswitch)方案。该计数器在例如做出功率选通决策时递增。仅当在预定数量的连续时间间隔(例如,3个)期间做出相同决策时,通过参考计数器,执行功率配置更新。在其他情况下,历史逻辑1792可以实现历史表来记录之前的功率配置决策和系统状态。

影响逻辑1794可以配置成确定预测和配置更新对处理器的功率和/或性能所具有的影响并且约束或防止预测作为控制提供给核。

如在图17中进一步示出的,功率配置选择器1790进一步包括更新逻辑1795。更新逻辑1795可以基于临近的过去决策(例如,参考历史表中的条目)和久远的过去决策(经由长期累积函数)来确定是否实现功率配置更新。从而更新逻辑1795可以配置成通过基于处理器在现场的实际使用来更新受训模型参数而在处理器操作的寿命时间(从处理器的初始启动通过多个启动周期(以及可能多年操作))期间执行自我学习。理解尽管在图17的图示中以该高级别示出,许多改动和备选是可能的。

现在参考图18,示出根据本发明的实施例用于控制处理器的功耗的方法的流程图。在图18中示出的实施例中,方法1800可以通过硬件、软件和/或固件的合适组合来执行,例如如本文描述的硬件功率控制逻辑,其可以实现为功率控制器的部分,该功率控制器自身实现为一个或多个微控制器。在一个实施例中,方法1800可以由实现基于启发的模型的模型逻辑执行。如看到的,方法1800通过接收工作负载特性信息而开始(框1810)。如描述的,这样的信息可以从处理器的各种核和其他逻辑的性能/能量计数器接收。另外,还接收配置和功率状态信息(框1820)。该配置信息可以对应于当前操作间隔中被主动供电的核的数量及其功率状态(例如,核操作所处的指定功率水平)。在一些实施例中,功率状态信息可以进一步包括性能状态信息,其可以对应于核操作的特定电压/频率水平。在一些情况下,核的性能状态可以处于保证操作频率(其是保证处理器操作的最大操作频率)、涡轮模式频率(其是高于该保证频率的机会性操作频率)或高效频率水平,其是低于保证频率的操作频率。

仍参考图18,接着控制传到框1830,其中可以对工作负载分类。更具体地,工作负载可以基于接收的工作负载特性信息和功率状态信息中的一些或全部来分类。在高级别,该工作负载分类可以确定为有限数量的可能水平中的一个,该可能水平包括存储器限制的水平、计算限制的水平或典型操作水平,其一般可以对应于在存储器限制的水平与计算限制的水平之间操作的工作负载。控制接着传到菱形1835来确定工作负载是否是存储器限制的。尽管本发明的范围在该方面不受限制,在实施例中,工作负载存储器限制性(boundedness)的确定可以基于从操作中的各种核获得的延迟信息、与存储器带宽关联的带宽信息或等等的聚合。

如果确定工作负载不是存储器限制的,控制直接传到框1850,其中可以维持当前设定值。如此,在下一个操作间隔中,可以使相同数量的核通电并且这些核可以继续在当前频率和电压水平执行当前线程。

相反如果确定工作负载是存储器限制的,控制从菱形1835传到框1840,其中可以生成配置预测。更具体地,该配置预测可以针对其中核活跃性减少的场景,这是因为一个或多个当前活跃核可以掉电和/或计算密集型核可以掉电以利于一个或多个存储器密集型核,以能够改进对存储器限制的条件的处理。控制接着传到菱形1845来确定配置预测是否与历史信息一致。这样的确定可以基于指示之前的预测的适当性的历史信息。如果预测不一致,控制传到框1850,其中可以维持当前设定值。注意在一些情况下,除该历史分析外,还可以关于所预测的配置是否将不利影响性能做出确定。例如,如果它所实行的配置预测将使性能惩罚增加到大于阈值水平(例如,5%),则可以不实行新的配置并且控制从而传到框1850。

相反如果确定配置预测与历史信息一致(和/或未被预测成不利地影响性能超出阈值水平),则控制传到框1860,其中在下一个操作间隔待执行的线程可以调度/重新调度给数量减少的核。例如,当前在待掉电的核上执行的线程可以重新调度给保持通电的核。在各种实施例中情况就是这样,核可以多线程化使得多个线程可以并发在单个核上执行,例如经由逻辑处理器,其提供合适的硬件线程资源以能够并发执行。在其他情况下,线程可以从某些活跃核重新调度到其他活跃核以更好适应并且提供高效操作(例如从计算核移到存储器偏向核)。接着控制传到框1870,其中可以更新核的功率状态。即,各种控制信号发送给核、时钟发生器、电压调节器等等来实现指定核的适当启用/停用。之后,在下一个间隔操作间隔出现操作,其中线程在活跃核上执行(框1880)。理解尽管在图18的示例中以该高级别示出,许多改动和备选是可能的。

现在参考图19,示出根据本发明的另一个实施例用于控制处理器的功耗的方法的流程图。如在图19中看到的,方法1900可以由硬件、软件和/或固件(例如如本文描述的硬件功率控制逻辑)的合适组合执行。在一个实施例中,方法1900可以由实现基于机器学习的模型的模型逻辑执行。方法1900通过例如从处理器内的性能/能量计数器接收工作负载特性信息而开始(框1910)。另外,还接收配置和功率状态信息(框1920)。该配置信息可以对应于当前操作间隔中被主动供电的核的数量及其功率状态。

接着,控制传到框1930,其中可以基于工作负载特性和功率状态信息从配置存储获得受训模型参数。更具体地,机器学习控制逻辑可以基于工作负载特性信息和功率状态信息执行工作负载的分类来获得受训模型参数。这些参数可以对应于指定类型的分类的工作负载,例如计算限制、存储器限制、典型工作负载等等。此外,给出较高计算能力的基于机器学习分类器的逻辑(如与基于启发的逻辑相比),可以出现对工作负载水平的更细粒度分析和分类。如此,除计算限制、存储器限制和典型分类、多个水平的计算限制的分类、多个水平的存储器限制的分类,除此之外,还可以识别多个水平的正常操作分类并且对其分类。

仍参考图19,控制传到框1940,其中可以从受训模型参数生成配置预测。注意在一些情况下,在更新功率配置之前,机器学习逻辑可以估计由于采取的之前的动作所引起的长期和短期性能/能量影响。在实施例中,为了短期和长期影响评估,在功率控制器中实现两个回报函数。例如,如果总回报值(短期和长期回报的加权组合)指示模型做出过于激进的预测(并且不利影响性能),则未出现该功率配置更新。此外,如描述的,关于图20,可以出现自我学习,其中可以通过对受训模型参数更新来调整受训模型参数(例如,关于性能影响变得更加保守)。之后,控制传到框1950,其中线程可以调度给(并且如需要的话重新调度给)确定数量的核。在一些实施例中,这样的线程调度可以采用对os或其他软件透明的硬件方式执行。在其他情况下,os自身可以在所指示数量的核上执行线程调度。

控制接着传到框1960,其中可以更新核的功率状态。例如,各种控制信号发送到核、时钟发生器、电压调节器等等来实现指定核的适当启用/停用。之后,在下一个间隔操作间隔出现操作,其中线程在活跃核上执行(框1970)。理解尽管在图19的实施例中以该高级别示出,许多改动和备选是可能的。

理解根据本发明的实施例的机器学习逻辑提供基于机器的自我学习的能力,使得受训模型参数的基线(例如,在制造处理器时提供)可以基于处理器在现场的实际使用例如由操作系统(其包括在处理器的寿命时间期间具有大体相似工作负载的处理器)的特定最终用户更新。此外,因为处理器的工作负载和使用随着它的寿命时间变化,这些受训模型参数可以基于这样的自我学习来更新,以在处理器寿命时间期间实现优化性能和功率管理。

现在参考图20,示出根据本发明的实施例用于更新受训模型参数的流程图。如在图20中示出的,方法2000可以由硬件、软件和/或固件(例如如本文描述的实现基于机器学习的模型的硬件功率控制逻辑)的合适组合执行。

如看到的,方法2000通过估计对分析中的工作负载的之前的配置预测的性能/能量影响而开始(框2010)。作为示例,该影响可以关于由于数量减少的活跃核(和/或减少频率的核操作)引起的性能损失。接着,控制传到菱形2020来确定该影响是否大于第一影响阈值。例如,在一些实施例中,该影响阈值可以是高影响阈值并且可以设置在预定水平,例如从性能损失百分比方面测量的性能影响。作为示例,该阈值水平可以小于近似10%的性能损失。如果确定影响大于第一影响阈值,则控制传到框2030,其中可以更新一个或多个受训模型参数。更具体地,对于在分析中的特定工作负载类型,可以更新一个或多个受训模型参数来限制在受训模型参数中识别的功率管理配置的性能影响。如此,在处理器寿命时间内出现动态机器或自我学习,使得可以实现性能和功率管理的适当平衡。注意在其他情况下,该性能/能量影响可以参考能量-延迟积确定,使得如果降低能耗促使性能减小(通过使延迟增加),例如减小了超出阈值量,则性能可以提高(其进而减少功率节约量)。

仍参考图20,相反如果在框2020处确定该影响不大于该第一影响阈值,则控制接着传到菱形2040来确定影响是否小于第二影响阈值。作为示例,在实施例中,该第二影响阈值可以是低影响阈值并且可以设置在不同的预定水平,例如小于近似2-3%的性能损失。如果确定影响在该阈值之上,因为对于当前执行存在合适的受训模型参数,未出现更新或自我学习。否则,如果确定影响小于第二影响阈值,则控制传到框2050,其中可以更新一个或多个受训模型参数。更具体地,对于在分析中的特定类型的工作负载类型,可以更新一个或多个受训模型参数以通过在受训模型参数中识别的功率管理配置来提供进一步的功率节省控制。如此,在处理器寿命时间内出现动态机器或自我学习,使得可以实现性能和功率管理的适当平衡。理解尽管在图20的实施例中以该高级别示出,许多改动和备选是可能的。

基于实现的特定模型逻辑(以及处理器寿命时间期间执行的自我学习),许多存储器限制和计算限制的工作负载可以以较少的活跃计算资源和/或较低频率实现最佳性能和能量效率。通过对每个特定负载识别和选择最佳配置,实施例可以提供近似4x的能量节省,同时使性能损失维持在小于近似5%内。

在一个实施例中,异构处理器可以包括优化成有效执行存储器操作的多个计算优化核和一个或多个隐蔽或辅助核。在实施例中,该辅助核可以实现与其他核相同的isa但具有带较浅流水线的更简单微架构。即,通过提供具有相同isa的异构核,可以在两个核上无缝执行二进制。如与主核中的较大(例如,20级)流水线相对,辅助核可以具有较短流水线(例如,5级)。在一些实例中,该异构核类型可以解释复杂指令(或使用微代码来执行这样的指令),因为这样的指令的执行在程序的存储器阶段期间不是关键的。在许多实施例中,辅助核可以以相对低的频率(如与主要核相比)操作来生成足够存储器业务以使存储器子系统保持繁忙。在一些实施例中,该频率可以与存储器系统操作的频率(例如,在耦合的dram操作的相同或大致相同频率)匹配。另外,辅助核可以以比计算偏向核更低的电压操作,使得它可以在较低功耗水平且更高效操作。在实施例中,辅助核可以包括较少计算资源。例如,辅助核可以仅包括单个算术逻辑单元(alu),而计算偏向核可以包括多个alu(例如,6个或以上)。

在实施例中,处理器可以配置成在一个或多个计算偏向核上开始执行应用。进而,线程迁移机制可以检测程序特性并且使应用线程迁移到辅助核并且回到计算偏向核而没有软件干预。在一些情况下,当在核类型之间执行线程切换时,总线程计数保持恒定,使得硬件可以使应用线程从一个核类型动态切换到另一个而没有软件干预。在实施例中,为了对于线程迁移简化软件模型,辅助核可以具有与总体所有计算偏向核相同数量的硬件线程上下文。然而,这些辅助核线程仅仅是硬件可见的并且对软件(其包括操作系统和用户应用)不可见。例如,对于在每个核中具有两个硬件线程的四个计算核处理器,辅助核可以具有总共八个硬件线程。应用线程到和从辅助核的迁移可以由硬件管理并且对于运行应用和操作系统是完全透明的。

确定程序阶段受计算限制的模型的一个示例是高的每周期指令(pci)值连同低存储器队列占用。确定程序阶段受存储器限制的模型的示例是低ipc值连同高存储器队列占用以及长平均存储器延迟。为此,在实施例中,计算/存储器限制度量可以包括关于指令执行速率(例如,ipc)是否超出第一阈值以及存储器队列占用水平是否超出第二阈值的确定(除例如平均存储器延迟等其他可能确定以外)。在这样的实施例中,作为示例,如果程序阶段的ipc超出第一阈值并且它的存储器队列占用水平小于第二阈值则程序阶段可以确定为计算限制的。相似地,如果程序阶段的ipc小于第一阈值并且它的存储器队列占用水平超出第二阈值则程序阶段可以确定为存储器限制的。

线程迁移策略可以确定线程应何时迁移到辅助核和从辅助核迁移。因为每个迁移牵涉节省和重新加载线程上下文,引发延迟开销。此外,因为对于特定执行特性来优化核,在非优化核类型中执行程序阶段可以引发性能惩罚。

为了使迁移策略能够具有高准确性,实施例可以使用基于计数器的方案以增加的确定性使应用从计算限制的工作负载区移到存储器限制的工作负载区(并且反之亦然)。在一个实施例中,仅当对于指定数量的连续时期线程确定为在特定区域时,迁移硬件将促成迁移出现。例如,在一个实施例中,迁移硬件可以包括2位计数器,其在每个分析间隔更新,并且仅当计数器被置入饱和状态(例如,最大或最小)时将允许迁移出现。

现在参考图21,示出根据本发明的实施例的迁移逻辑的状态图。如在图21中示出的,状态图2100可以对应于配置成确定在计算偏向核与存储器偏向核之间是否以及何时迁移线程执行的逻辑、有限状态机或等等。在图21中示出的实施例中,使用基于多位计数器(例如,两位计数器)的方法。在每个分析间隔期间,可以关于执行的工作负载是存储器限制的工作负载还是计算限制的工作负载做出工作负载确定。

在操作中,该计数器法可以以工作负载受计算限制并且因此工作负载的线程初始被调度成在计算偏向核上执行这一假设而开始。如此,计数器初始可以设置成最大值(在图21的实施例中是三)。在示出的实施例中,利用饱和型计数器,因为分析指示工作负载类型是计算限制的类型,执行在计算核上继续。这样的计数器可以对于其中确定存储器限制的工作负载的每个确定递减。在图21中图示的情况下,做出三个连续存储器限制的工作负载确定来使计数器迭代递减直到它达到零值并且促使线程迁移到存储器偏向核。一旦在该执行状态,工作负载继续在存储器偏向核上执行直到出现计算限制的工作负载的三个连续确定使得计数器值再次递增到它的最大值三使得出现线程迁移来使线程迁移回到计算偏向核。

从而如在图21中图示的,当计数器值处于它的最大值(三)时,可以确保计算限制的工作负载在执行并且执行相应地在计算偏向核上。相似地,当计数器值处于它的最小值(零)时,可以确保存储器限制的工作负载在执行并且执行相应地在一个或多个存储器偏向核上。相反当计数器的值从最大值递减一(到值二)时,可能计算限制的工作负载在执行并且从而执行保持在计算偏向核上(假设通过从最大值递减而达到该计数器值)。相似地,当计数器的值从最小值递增一(到值一)时,可能存储器限制的工作负载在执行并且从而执行保持在存储器偏向核上(假设通过从最小值递增而达到该计数器值)。理解尽管在图21示出有该特定实现,本发明的范围在该方面和其他实施例中不受限制,可以存在额外工作负载分类并且迁移逻辑可以基于其他方案。

现在参考图22,示出根据本发明的实施例的存储器偏向核的框图。在图22中示出的实施例中,核2200可以配置成偏向存储器操作,使得它具有相对较少计算资源和较大存储器访问资源。在实施例中,尽管核2200可以具有与计算偏向核相同的isa,为了至少某些计算密集型操作的执行,微代码可以用于仿真这样的操作。

在图22的实施例中,核2200包括多个逻辑、功能单元、存储等等。然而理解图22中的设置是用于根据一个实施例的代表性存储器偏向核。当然在其他实施例中可以存在许多其他改动和备选存储器偏向核。此外,理解计算偏向核一般可以包括相同类型的单元和逻辑,例如图22中示出的。然而,对于计算偏向核,可以存在不同数量的某些单元,并且相反可以存在能够对计算偏向核提高计算容量的优化。

如示出的,核2200包括各种单元,其具有多个线程资源的能力使得在处理器的所有计算偏向核内存在的硬件线程的总数量在存储器偏向核中可以具有独立支持。如此,在计算偏向核的所有硬件线程上运行的所有活跃线程相反可以并发在存储器偏向核上执行。在其他实施例中,可以提供多个存储器偏向核并且在这样的情况下,对于硬件线程的仅仅一部分可以存在专用单元。如示出的,程序计数器单元22080-2208n是具有多个硬件线程(n个硬件线程)(其中n是处理器的计算偏向核中的全部中可用的硬件线程的总数量)的单元的一个示例。

进而,程序计数器单元2208耦合于提取单元2210,其包括策略逻辑2212。一般,策略逻辑2212可以配置成基于从程序计数器单元2208的接收程序计数器值以及从分支单元2205(其中可以执行各种分支预测)接收的分支信息而最佳地处理提取操作。

仍参考图22,提取单元2210耦合于高速缓存存储器2220,该高速缓存存储器2220可以是私有一级指令高速缓存,其包括指令转换后备缓冲器(tlb)2222。如此,近期访问和/或频繁访问的指令可以存储在高速缓存存储器2220中用于更高效访问。提取单元2210提取的这些指令可以提供给多个发出队列22250-2225n,使得每个硬件线程可以具有对应的发出队列来向解码器单元2230提供指令,在该解码器单元2230中这样的传入指令(其在实施例中可以采用宏指令的形式)可以被解码并且提供给重命名器/调派器单元2235。

如在图22中进一步示出的,单元2235进而可以耦合于物理寄存器池2240。寄存器池2240包括大量寄存器,并且可以具有足够存储容量以能够存储对于所有硬件线程的活跃寄存器上下文。进而,可以提供多个寄存器集22500-2250n。在实施例中,每个寄存器集2250是对于n个硬件线程中的一个的架构寄存器集。在这样的指令的执行中待用的指令和数据可以从重命名器/调派器单元2235提供给对应的重排序缓冲器(rob)22500-2250n,其中对于n个硬件线程中的每个具有对应的重排序缓冲器。

加载操作可以提供给加载队列22500-2255n的集,n个硬件线程中的每个有一个加载队列。存储操作可以提供给存储队列22650-2265n的集,n个硬件线程中的每个有一个存储队列。注意存储队列2265可以耦合于另一个高速缓存存储器2290,其在实施例中可以是进一步包括数据tlb2292的私有一级数据高速缓存存储器。

仍参考图22,指令可以经由统一调度器2260调度给多种不同执行单元。如看到的,调度器2260可以调度传入指令以供在单指令多数据(simd)单元2270、算术逻辑单元(alu)2272和浮点单元(fpu)2275中执行。注意在示出的实施例中仅提供单个simd单元、alu和fpu,而不是提供多个这样的执行资源来实现高效计算操作。例如simd单元等某些高功耗执行单元不存在,并且相反在其他可用单元可以仿真对于这样的单元的指令,这也是可能的。如进一步示出的,队列22950-2295n的集(每个用于指定硬件线程)提供到加载存储单元(lsu)22800-2280n的集(每个用于指定硬件线程)的接口(其可以用于与存储器层级的较高部分的接口)并且提供在操作执行中待用的传入信息以供存储在高速缓存存储器2290中。

除存储器偏向核与计算偏向核之间的这些物理差异外,可以存在形成存储器偏向核以及计算偏向核的晶体管类型中的结构差异等等。例如,存储器偏向核可以用一个或多个类型的晶体管形成,而计算偏向核可以由不同类型的晶体管形成。在这些或其他情况下,具有不同类型的核的晶体管在不同电压偏置,这也是可能的。例如,计算偏向核可以在第一偏置电压(例如,一伏)偏置而存储器偏向核的晶体管进而可以在不同的较低电压(例如,0.6v)偏置。这样,对于不同类型核可以存在不同能量耗散特性。再进一步,存储器偏向核可以具有在较低频率操作的更简单(以及潜在地更少的)流水线级,从而进一步简化对于这样的核类型的设计。理解尽管在图22的实施例中以该高级别示出,许多改动和备选是可能的。

下列示例关于另外的实施例。

在一个示例中,处理器包括:多个第一核,用于独立执行指令,该多个第一核中的每个包括多个计数器,用于存储性能信息;至少一个第二核,用于执行存储器操作;以及功率控制器,用于从多个计数器中的至少一些接收性能信息、至少部分基于该性能信息确定在处理器上执行的工作负载类型以及基于工作负载类型使一个或多个线程从多个第一核中的一个或多个动态迁移到至少一个第二核以供在下一个操作间隔期间执行。

在示例中,功率控制器促使在下一个操作间隔期间将多个第一核中的一个或多个置入低功率模式。

在示例中,功率控制器在工作负载类型确定为存储器限制的工作负载时使一个或多个线程动态迁移。

在示例中,功率控制器包括计数器,并且功率控制器在工作负载类型确定为第一工作负载类型时在第一方向上更新计数器并且在工作负载类型确定为第二工作负载类型时在第二方向上更新计数器。

在示例中,功率控制器在计数器的值至少满足第一阈值时使一个或多个线程动态迁移。

在示例中,功率控制器在计数器值小于或等于第二阈值时使一个或多个线程从至少一个第二核动态迁移到多个核中的一个或多个。

在示例中,至少一个第二核对于多个第一核是异构的。

在示例中,至少一个第二核包括第一多个硬件线程资源,第一多个硬件线程资源的数量总体等于多个第一核的硬件线程资源的数量。

在示例中,至少一个第二核包括单个alu并且多个第一核每个包括多个alu。

在示例中,功率控制器促使至少一个第二核以耦合于处理器的存储器的第一频率操作并且促使多个第一核以高于该第一频率的第二频率操作。

注意上文的处理器可以使用各种部件实现。

在示例中,处理器包括soc,其并入启用用户设备触摸的设备中。

在另一个示例中,系统包括显示器和存储器,并且包括上文的示例中的一个或多个的处理器。

在另一个示例中,方法包括:经由处理器的迁移逻辑基于从处理器的多个第一核接收的性能度量信息确定在处理器上执行的工作负载的类型;如果工作负载类型确定为第一负载类型则经由迁移逻辑在第一方向上更新计数值,并且如果工作负载类型确定为第二工作负载类型则在第二方向上更新计数值;以及如果计数值满足第一阈值水平则经由迁移逻辑使一个或多个线程从多个第一核迁移到处理器的至少一个第二核,否则使一个或多个线程维持在多个第一核上。

在示例中,方法进一步包括如果计数值满足第二阈值水平则使一个或多个线程从至少一个第二核迁移到多个第一核中的一个或多个。

在示例中,多个核包括计算偏向核并且至少一个第二核包括存储器偏向核,第一工作负载类型包括存储器限制的工作负载并且第二工作负载类型包括计算限制的工作负载。

在示例中,方法进一步包括控制至少一个第二核来以存储器匹配频率操作。

在示例中,方法进一步包括使工作负载的第一多个线程从多个第一核迁移到至少一个第二核,其中至少一个第二核是单个核,其具有第一多个线程资源来处理第一多个线程。

在示例中,方法进一步包括使一个或多个线程对处理器上执行的操作系统透明地迁移。

在示例中,迁移逻辑包括启发逻辑,用于进一步基于从处理器的启发存储获得的模型信息确定工作负载类型。

在示例中,迁移逻辑包括机器学习逻辑,用于进一步基于在处理器制造期间存储在处理器的存储中的训练信息来确定工作负载类型。

在另一个示例中,包括指令的计算机可读介质执行上文的示例中的任一个的方法。

在另一个示例中,包括数据的计算机可读介质待由至少一个机器使用以用于制造至少一个集成电路来执行上文的示例中的任一个的方法。

在另一个示例中,装置包括用于执行上文的示例中的任一个的方法的部件。

在再另外的示例中,系统包括:处理器,其包括:多个第一核,用于独立执行指令;第二核,用于执行存储器操作;以及功率控制器,其耦合于多个第一核和第二核以便:接收在第一操作间隔在第一数量的活跃第一核上执行的工作负载的工作负载特性信息;至少部分基于该工作负载特性信息对工作负载分类;以及至少部分基于存储器限制的工作负载的工作负载分类对于下一个操作间隔使工作负载的一个或多个线程从第一数量的活跃第一核迁移到第二核,并且对于该下一个操作间隔促使多个第一核中的一个或多个处于低功率状态;以及dram,其耦合于处理器。

在示例中,功率控制器使一个或多个线程对操作系统透明地迁移。

在示例中,功率控制器促使第二核以存储器匹配频率操作。

在示例中,功率控制器使用工作负载特性信息和从配置存储获得的多个系数生成工作负载值并且基于该工作负载值对工作负载分类。

在示例中,多个第一核执行计算操作并且第二核执行存储器操作,多个第一核共同具有第一数量的硬件线程,并且第二核具有第一数量的硬件线程,第二核包括:多个程序计数器单元,每个用于第一核中的一个的硬件线程中的一个;多个重排序缓冲器,每个用于第一核中的一个的硬件线程中的一个;多个加载队列,每个用于第一核中的一个的硬件线程中的一个;以及多个存储队列,每个用于第一核中的一个的硬件线程中的一个。

理解上文的示例的各种组合是可能的。

实施例可以在许多不同类型的系统中使用。例如,在一个实施例中,通信设备可以设置成执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反其他实施例可以针对用于处理指令的其他类型的装置,或一个或多个机器可读介质,其包括指令,这些指令响应于在计算设备上执行而促使该设备实施本文描述的方法和技术中的一个或多个。

实施例可以在代码中实现并且可以存储在非暂时性存储介质上,该非暂时性存储介质具有存储在其上的指令,其可以用于对系统编程来执行指令。实施例还可以在数据中实现并且可以存储在非暂时性存储介质上,该非暂时性存储介质如果被至少一个机器使用则促使该至少一个机器制造至少一个集成电路来执行一个或多个操作。存储介质可以包括但不限于:任何类型的盘,这些盘包括软盘、光盘、固态驱动器(ssd)、压缩盘只读存储器(cd-rom)、压缩盘可重写(cd-rw)和磁光盘,半导体器件,例如只读存储器(rom)、随机存取存储器(ram)(例如动态随机存取存储器(dram)、静态随机存取存储器(sram))、可擦除可编程只读存储器(eprom)、闪速存储器、电可擦除可编程只读存储器(eeprom);磁或光卡或适合于存储电子指令的任何其他类型的介质。

尽管已经关于有限数量的实施例描述本发明,本领域内技术人员将意识到从其中的许多修改和改动。规定附上的权利要求涵盖所有这样的修改和改动,它们落入本发明的真正精神和范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1