用于能效和节能的方法、装置和系统与流程

文档序号:12662946阅读:177来源:国知局
用于能效和节能的方法、装置和系统与流程

技术领域

本公开涉及集成电路中的能效和节能以及在集成电路上执行的代码,更具体地但不排他地涉及平衡处理元件之间的功率和性能。



背景技术:

半导体处理和逻辑设计的进步已允许在集成电路器件上可能存在的逻辑量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路进化至各个集成电路上的多个硬件线程、多个核、多个设备和/或完整的系统。此外,随着集成电路密度增长,计算系统(从嵌入式系统到服务器)的功率需求也逐步提高。此外,软件低效率及其对硬件的要求也已造成了计算设备能耗的提高。实际上,一些研究表明计算机消耗了美国全部电力供应的大部分。

因此,存在对与集成电路相关联的能效和节能的关键需求。而且,随着服务器、桌面计算机、笔记本、超极本、平板、移动电话、处理器、嵌入式系统等等变得更加流行(从包括在典型的计算机、汽车和电视中到生物技术),计算设备销售的影响已然超出能耗的范围而延伸至对经济系统存在显著、直接的影响。

此外,随着集成电路密度增加,在单个集成电路和/或封装中合并多个器件的能力已经类似地提高。作为说明性示例,芯片上系统(SOC)器件最近备受青睐。然而,通常SOC(以及类似组件)将多个器件集成到单个设备/电路中,不过它们也继承每个单独器件的功率、性能和热限制。因此,具有主控处理器和图形处理器的设备通常单独和分别地实现节能策略。即使针对整个封装定义了功率策略,它通常仅针对各个器件中的每一个构想假定的功率要求,而不会平衡不对称核之间的功率和性能以实现最大整体性能。

附图说明

本发明通过示例进行说明,而且不旨在受限于附图的各图。

图1示出包括具有多处理元件处理器和集成图形处理器的集成电路的系统的逻辑表示的实施例。

图2示出计算机系统配置的逻辑表示的实施例。

图3示出计算机系统配置的逻辑表示的另一实施例。

图4示出计算机系统配置的逻辑表示的另一实施例。

图5示出用于平衡处理元件之间的功率以实现最大整体性能的集成电路的逻辑表示的实施例。

图6示出用于平衡处理元件之间的功率以实现最大整体性能的集成电路的逻辑表示的另一实施例。

图7示出用于平衡处理器与图形处理器之间的功率以在功率限制之内实现最大性能的流程图的实施例。

图8示出用于平衡处理器与图形处理器之间的功率以在功率限制之内实现最大性能的流程图的另一实施例。

具体实施方式

在以下描述中,陈述了多个特定细节,诸如特定类型的特定处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、用于确定工作负荷的特定结构、用于确定和设置性能/功率限制的特定模块、特定类型的性能限制、特定类型的处理器件、特定类型的程序代码、特定性能瓶颈假定、包括不对称处理器的特定器件等等的示例,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定工作负荷确定、特定频率设置技术、特定功率限制确定以及实现算法以及处理器的其它特定操作细节,以免不必要地模糊本发明。

虽然参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但其它实施例可适用于其它类型的集成电路和逻辑器件。在此描述的实施例的相似的技术和教导可适用于也可受益于更好能效和节能的其它类型的电路或半导体器件。例如,所公开的实施例不限于桌面计算机系统。也可用于其它设备,诸如手持式设备、芯片上系统(SOC)以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其他系统。此外,本申请中描述的装置、方法和系统不限于物理计算设备,而是也涉及用于节能和能效的软件优化。如将在以下描述中容易变得明显地,本申请中描述的方法、装置和系统的实施例(不论是参考硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”未来是关键的。

本申请中描述的方法和装置用于平衡多个不对称器件之间的功率以实现最大整体性能。特定地,在下文中主要参考包括中央处理器/主控处理器(或其核)和图形处理器(或其核)的集成电路和/或封装来讨论功率平衡和分配。不过,本申请中描述的装置和方法不限于此,因为它们可结合包括任何类型的不对称或对称处理核的任何集成电路器件来实现。例如,可在两个主控处理核之间、处理核与存储器之间、和/或集成I/O器件之间利用如本申请中所描述的功率平衡和分配。如上所讨论,它可用于服务器、台式计算机、超极本、平板、小形状因数设备、手持式设备、SOC或嵌入式应用。

参考图1,示出了包括多个器件/核的集成电路(或封装)的实施例。集成电路(IC)100包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、或用于执行代码的其它器件。在一个实施例中,处理器100包括:至少两个中央的、主控或处理核——核101和102,这两个核可以是不对称核或对称核(所示实施例);以及输入/输出(I/O)设备180,诸如图形处理器(或它的核)。然而,IC 100可包括任何数量的处理元件,这些处理元件可以是对称的或不对称的。

在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。或在另一实施例中,处理元件指的是设备的核或处理逻辑,诸如图形处理器/核、网络控制器、嵌入式处理器、微控制器、等等。硬件中央处理元件的其它示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元件。

处理(或中央处理单元)核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。不过通常,核和硬件线程被操作系统视为各个逻辑处理器,其中操作系统能够分别在每个逻辑处理器上调度操作。

如图1中所示的物理封装100包括两个处理核,即核101和102。在此,核101和102被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核101包括无序处理器核,而核102包括有序处理器核。然而,可从任何类型的核中分别选择核101和102,诸如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换指令集架构(ISA)的核、共同设计的核或其它已知核。不过为了进一步讨论,在下文中更详细描述了核101中示出的功能单元,因为核102中的单元以相似的方式操作。

如所描绘,核101包括两个硬件线程101a和101b,它们可被称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统之类的软件实体可能将处理器100视为四个单独的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。此外,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可与架构状态寄存器102a相关联,以及第四线程可与架构状态寄存器102b相关联。在此,架构状态寄存器(101a、101b、102a和102b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如上所述,架构状态寄存器101a被复制在架构状态寄存器101b中,因此能够为逻辑处理器101a和逻辑处理器101b存储各个架构状态/上下文。在核101中,也为线程101a和101b复制其它较小的资源,诸如重命名分配器逻辑130中的指令指针和重命名逻辑。诸如重排序器/引退单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据高速缓存和数据TLB 115、执行单元140、以及无序单元135的多个部分之类的其它资源可能被完全共享。

处理器100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图1中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。如所示,核101包括简化的表示性的无序(OOO)处理器核。但是,在不同实施例中可利用有序处理器。OOO核包括用于预测要执行/采用的分支的分支目标缓冲器120和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)120。

核101进一步包括耦合至取出单元120的解码模块125,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽101a、101b相关联的各个序列发生器。通常,核101与第一指令集架构(ISA)相关联,第一指令集架构(ISA)定义/指定能在处理器100上执行的指令。通常,作为第一ISA的部分的机器代码指令包括该指令的部分(称为操作码),该部分引用/指定要执行的指令或操作。解码逻辑125包括电路,所述电路根据这些指令的操作码来识别这些指令并在流水线中传递经解码的指令,以供按照第一ISA定义地那样来处理。例如,如下文更详细讨论地,在一个实施例中,解码器125包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为解码器125识别的结果,架构或核101采取特定、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。

在一个示例中,分配器和重命名器块130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程101a和101b可能能够无序地执行,在此情况下,分配器和重命名器块130也预留其它资源,诸如用于跟踪指令结果的重排序缓冲器。单元130也可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序器/引退单元135包括诸如上述的重排序缓冲器、加载缓冲器以及存储缓冲器之类的组件,以支持无序执行和无序执行的指令的稍后有序引退。

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

较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合至执行单元140。数据高速缓存用于存储诸如数据操作数之类的最近使用/操作的元素,这些元素可能以存储器一致性状态被保持。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。

在此,核101和102共享对较高级或进一步远离的高速缓存110的访问,较高级或进一步远离的高速缓存用于高速缓存最近取出的元素。注意,较高级或进一步远离的高速缓存指的是从执行单元提高或进一步远离执行单元的高速缓存级。在一个实施例中,较高级的高速缓存110是末级数据高速缓存——处理器100上的存储器层次中的最后一级高速缓存,诸如二级或三级数据高速缓存。然而,较高级高速缓存110不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存——一种类型的指令高速缓存——可耦合在解码器125之后以存储最近解码的踪迹。

在所描绘的配置中,处理器100还包括总线接口模块105。在过去,下文更详细描述的控制器170已被包含在处理器100外部的计算系统中。在该情形下,总线接口105用于与处理器100外部的设备通信,这些设备诸如系统存储器175、芯片组(通常包括用于连接至存储器175的存储器控制器中枢和用于连接外围设备的I/O控制器中枢)、存储器控制器中枢、北桥或其它集成电路。并且,在此情形下,总线105可包括任何已知的互连,诸如多分支总线、点对点互连、串行互连、并行总线、一致(例如高速缓存一致)总线、分层协议架构、差分总线以及GTL总线。

存储器175可专用于处理器100,或与系统中的其它设备共享。存储器175的类型的常见示例包括动态随机存取存储器(DRAM)、静态RAM(SRAM)、非易失性存储器(NV存储器)以及其它已知的存储设备。与以上讨论类似,I/O设备180已经传统地被包括在中央处理单元外部的计算系统中。在此,设备180可包括耦合至存储器控制器中枢的图形加速器、处理器或卡、耦合至I/O控制器中枢的数据储存器、无线收发机、闪存设备、音频控制器、网络控制器或其它已知设备。

然而应注意,在所描绘的实施例中,控制器170和I/O设备180被示为处理器100的部分。最近,随着更多的逻辑和器件被集成在诸如芯片上系统(SOC)之类的单个管芯上,这些器件中的每一个器件可被包含在处理器100上,以形成具有多个器件的单个封装或单个集成电路。例如,在一个实施例中,存储器控制器中枢170和图形处理器/器件180被包括在与中央处理器单元相同的封装和/或管芯上以形成IC 100,该IC 100在此可被称为处理器100,该处理器100包括集成存储器控制器170和图形器件180。在此,核的部分(核上部分)包括一个或多个控制器170,用于与诸如存储器175和/或图形器件180之类的其它器件相连接。包括互连和用于与此类器件相连接的控制器的该配置通常被称为核上(或非核配置)。作为示例,总线接口105包括环形互连,该环形互连具有用于与存储器175相连接的存储器控制器,以及用于与图形处理器180相连接的图形控制器。图形处理器180甚至可直接访问高速缓存110。不过,在SOC环境下,可在单个管芯或集成电路上集成甚至更多的器件,诸如网络接口、协处理器、存储器175、图形处理器180以及任何其它已知的计算机器件/接口,以提供具有高功能性和低功耗的小形状因数。如在下文中更详细讨论,当开发用于整个IC 100的功率策略时,用于重要的集成电路(诸如核101-102和图形器件180)之间的功率平衡的技术变得更加重要。

在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编译、转换和/或优化应用代码176,以支持本申请中描述的装置和方法或与本申请中描述的装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码的编译是在多个阶段和多次运行中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。

更大的编译器通常包括多个阶段,但多数时候这些阶段被包括在两个一般阶段中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其示出了编译器的前端与后端之间的界定的模糊。因此,对插入、关联、生成或编译器的其它操作的引用可在编译器的上述阶段或运行中的任一个以及任何其它已知的阶段或运行中进行。作为说明性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等等,诸如在编译的前端阶段插入调用/操作,然后在转换阶段期间将这些调用/操作转换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入这样的操作/调用,并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代码或其组合。

与编译器类似,诸如二进制转换器之类的转换器将代码静态地或动态地转换以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可表示:(1)执行编译器程序、优化代码优化器或转换器,以动态地或静态地编译程序代码、维护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如库),以维护软件结构、执行其它软件相关操作、或用于优化代码;或(4)上述的组合。

在一个实施例中,可包括硬件、固件、软件或其组合的功率控制模块160能够平衡和分配IC 100的器件之间的功率/频率以实现最大性能;即使IC 100在功率限制之下。此外,在一种情形下,这样的分配基于器件的实际工作负荷,而不是基于工作负荷或功耗的假定。例如,对IC 100设置功率限制(最大功率限制或在节能模式期间的降低限制)。以前,降低IC 100的所有处理元件的最大电流(以及必然也降低频率)以满足该功率限制。替代地,在本情形下,对被确定为性能瓶颈(比如从应用的角度认为的吞吐量性能)的器件分配更多电流/频率,同时定限/限制其它胜任的器件以确保仍满足功率限制。换言之,动态平衡持续保持在器件之间,以确保将这样的额外资源分配给需要更多资源以实现更好整体性能的器件,同时使其它器件“平衡”(性能降低)与满足给定的功率限制。

作为特定说明性示例,假定I/O器件180是图形处理器。在此,处理核101、102和图形器件180形成生产者和消费者关系。核101、102接收并处理指令;指令的一些被卸载至图形处理器180以进行处理(例如,CPU核101、102将像素发送至GPU 180以进行纹理处理,GPU 180计算像素的纹理以获得纹素(texel))。因此,如果CPU核101、102过度工作(即产生过多工作,使得GPU 180在当前性能水平下不能处理),则来自最大潜能的整体性能降级(CPU核101-102用来过度生产的额外性能可能已经被分配给GPU 180)。注意,即使CPU核101、102在与GPU 180相同频率或比GPU 180低的频率下工作,该过度生产情形也可能出现。反之,如果CPU核101、102生产不足(即未产生足够工作以保持GPU 180繁忙),则不可能实现最大潜在性能。此外,还可从其它角度理解该生产者-消费者关系,其中在CPU核101、102能得到进一步向前进展之前,CPU核101、102消费来自生产者180的图形输出。

因此,在一个实施例中,确定核101-102的处理工作负荷和图形器件180的图形工作负荷。例如,确定两个核101-102以及图形核180在时间份额或时间段上的活动量(例如活动循环次数)。基于那些工作负荷,平衡核101-102和图形核180的性能以实现最大整体性能。作为说明性示例,如果器件(CPU核101-102或GPU核180)之一在最大处或接近最大处工作,同时其它器件未被完全占据,则该接近最大器件被分配更多性能(例如更高频率)。

注意,当功率限制存在并且IC 100不接近功率限制时,刚刚上述的性能提高可能不包括其它器件中的抵消的降低。例如,假定GPU核180被完全占据(在一时间段期间的所有循环都是活动的)并且CPU核101-102仅在该时间段期间的70%循环中活动。在该情形下,CPU核101-102并未满负荷工作,但对于GPU 180而言仍然过度生产。在一个实施例中,当IC 100未处于设置的功率限制,则将GPU 180频率提高以满足CPU 101-102的过度生产。然而,一旦GPU 180开始以更高速率消费,CPU核101-102能够以甚至更高的速率生产。如果达到IC 100的功率或热限制,则如果GPU 180提高频率(例如根据以上相同的假定),则在一个实施例中,CPU 101-102被限制/定限以确保不超过功率限制或热限制。然而,智能地分配该限制内的功率和性能,以确保最大“经平衡”的性能。

参考图2-4,示出了适于包括用于平衡集成电路上的处理元件/核之间的性能和功率的处理器的计算机系统配置的实施例。参考图2,示出双处理器系统200的说明性示例,该系统的每个处理器205、210中具有集成的存储器控制器和输入/输出(I/O)控制器。注意,如上所讨论,处理器205、210可各自包括集成图形处理器/核。尽管为了避免模糊本讨论而未进行详细讨论,但平台200示出用于在组件之间传输信息的多个互连。例如,在一个实施例中,点对点(P2P)互连215包括串行P2P、双向的、高速缓存一致性的总线,该总线具有能够实现高速数据传输的分层协议架构。此外,众所周知的接口(外围组件互连高速,PCIE)或其变型被用于I/O设备245、250之间的接口240。但是,任何已知的互连或接口可被用于与计算系统的域通信或在计算系统的域内通信。

转到图3,示出四处理器平台300。像图2一样,处理器301-304通过高速P2P互连305彼此耦合。并且处理器301-304包括集成控制器301c-304c。图4描绘具有不同配置的另一四核处理器平台400。在此,代替使用处理器上I/O控制器通过I/O接口(诸如PCI-E接口)与I/O器件通信,P2P互连被用于耦合处理器和I/O控制器中枢420。然后中枢420又通过类似PCIE的接口与I/O器件通信。

接下来参考图5,其示出用于平衡多个处理元件间的功率以实现最大性能的模块的逻辑表示的实施例。尽管在图5中仅示出两个核,但是可使用任意类型和任意数量的处理元件。例如,在本文最常讨论的情形下(CPU和GPU),CPU和GPU两者可能包括多个核。因此,工作负荷确定(以下将更详细地描述)可能参考单独的核或核的分组,诸如关于所有CPU核相对于关于所有GPU核的工作负荷。

然而,为了关于图5进一步讨论,以下将核505称为CPU核(或CPU核的集合),而将核510称为GPU核(或GPU核的集合)。还值得注意的是,尽管本文的讨论主要集中在非对称核之间的功率平衡上;但在一个实施例中,这种平衡也用于相同类型的核之间。例如,假设核505和510均为CPU核并且执行相关线程(例如,生产者和消费者相关线程,诸如在核505上执行的单个应用的主线程以及在核510上执行的单个应用的领先帮助线程,其中领先帮助线程产生要由主线程消费的信息)。因此,可执行功率/频率平衡以实现线程之间的最大性能(例如,如果执行帮助线程的核510领先太远,诸如获得太多未来的块(lock)或预取太多信息,那么核510的频率被降低,而核505的频率被提高以便以更高的速率进行消费并且跟上核510的预取)。

继续图5的讨论,工作负荷模块515确定核505、核510或两者的工作负荷。确定工作负荷包括用于确定硬件活动、软件工作负荷、已执行或要执行的指令数量、或者用于确定处理元件的使用的任何其它度量的任何已知方法。作为一个示例,核505的工作负荷包括在一段时间期间核505活动的时间量。当核505处于活动性能状态(相对于睡眠或低功率状态)中或者处于执行或进行操作的多个周期中时,可以确定活动。

作为大量潜在工作负荷测量的必然结果,测量这种工作负荷的组件也可变化。为了进一步讨论用于工作负荷测量的潜在组件,以下假设工作负荷被测量为一段时间上的活动周期数(即用于测量的周期总数)。作为第一示例,与核505、510中的每一个相关联的硬件寄存器、计数器和/或累加器跟踪活动周期。并且在测量时间段届满之后,确定该时间段的活动周期数。作为另一示例,微控制器执行代码,该代码导致硬件在一段时间上跟踪活动周期。此外,可执行微代码、特权级代码、应用代码或其它代码以类似地导致硬件在测量时间段上跟踪活动周期。

在一个实施例中,功率模块520基于来自工作负荷模块515的工作负荷确定来动态地平衡核505、510之间的性能。平衡核之间的“性能”包括修改影响核性能和/或功率的任何度量或因素。例如,如果从GPU核510向CPU核505提供单独功率传输,那么功率传输或其限制可被改变以平衡它们之间的性能。然而,通常当CPU核505和GPU核510被包括在同一个封装上时,功率传输并不是单独的。因此,作为另一示例,个体的核之间的频率被平衡。在该情形下,功率模块520基于包括核505、510的集成电路或封装的功率限制以及由工作负荷模块515所确定的一个或多个工作负荷来动态地调节核505和核510之间的功率分配。注意,在一些实施例中,频率可能不是被直接改变的,而是诸如电流之类的基础度量被改变以实现频率的改变。

作为一个示例,功率模块520响应于所动态确定的核505的工作负荷大于核510的工作负荷而提高核505的频率和/或降低核510的频率。在此,如果一个核展示了由于较高工作负荷而对性能有更大需求,那么就提高它的频率。而当包括核505和510的集成电路接近功率限制时,展示出对性能要求的需求较少的核的频率被降低以抵销/补偿另一核的频率提高。在另一示例中,功率模块520响应于确定核505是性能瓶颈而提高核505的频率和/或降低核510的频率。换言之,核505正在限制整体性能,因为核510依赖于来自核505的输出以继续进一步的执行。但是核505运行的太慢。随后,提高核505的频率以确保加速整体性能。再一次,如果遭遇功率限制,那么核510的频率可被类似地降低以确保功率限制被实施。注意,在一些实施例中,滞后现象可用于避免“摇摆(see-saw)”效应,在该效应中功率/性能平衡在诸个设置之间往复。例如,CPU频率快速升高(例如在首次检测到需要更多性能/频率之后),而在多个连续(或者非连续但是紧密相关的)的测量时间段上由于需求缺乏而确定减小频率。

在一个实施例中,对潜在瓶颈的基本假设允许简化过程。例如,假设核505是CPU核的集合并且核510是GPU核的集合。在此,作为示例性基本假设,假设当GPU核510以最大性能操作时(即被完全占用),那么GPU核510是性能瓶颈(即GPU在当前限制下尽可能快地工作,但是它完成工作并不是足够地快)。作为该假设的结果,如果GPU核510在工作负荷/活动阈值以上操作,那么它被认为是瓶颈。因此,提高GPU的频率。并且如果达到了功率限制,那么GPU频率被给定上限(或降低)以确保维持功率限制。然而,如果工作负荷模块520确定GPU 505的频率低于阈值(即,没有以最大负荷进行工作/消费),那么CPU 505的任意频率上限或限制被提高以导致更多生产,使得GPU核510工作负荷相应地增大。

任何硬件、固件、微代码、软件或其组合可执行上述的平衡、调节和/或分配。作为一个示例,平衡策略在功率控制单元(PCU)中实施,该功率控制单元通常包括微控制器,该微控制器被配置成执行并置的功率代码。在此,功率代码当由微控制器执行时,加载来自工作负荷模块515的工作负荷信息,确定适当的平衡动作(例如,提高核510的频率),以及开始平衡动作(例如,指示频率提高,从而使得硬件/逻辑能够实际上提高频率)。作为另一示例,可将代码和硬件均用于平衡。在一个情形下,GPU核510的图形驱动程序加载来自工作负荷模块520(例如,硬件活动跟踪逻辑)的图形工作负荷信息。并且器件驱动程序、特权级功率服务例程(例如OS服务例程)或其它代码/硬件至少基于图形工作负荷信息来确定是否要采取平衡动作。另外,也可考虑CPU核505工作负荷信息以确定适当的平衡动作。

在一个实施例中,平衡决策者也考虑软件提示以确定如何在处理元件之间平衡性能/功率。例如,如上所讨论的,确定GPU核510工作负荷信息。并且执行应用提供未来工作负荷(即,应用的一部分)是否包括与导致已测得的工作负荷的该应用的先前部分相比较而言更大或更小图形工作负荷的软件提示。在此,如果GPU接近阈值(或接近于完全占用)并且应用提示下一时间段与更大的图形工作负荷相关联,那么功率模块520可确定GPU要被提高且CPU频率要被给定上限;即使先前活动尚未达到活动阈值。结果,该提示帮助预测未来活动;代替纯粹依赖于先前的、已测得的工作负荷信息。注意,可通过定义这种提示的指令集架构、应用程序接口(API)或用于将信息从软件传达到硬件的其它已知结构/方法来提供提示。

转到图6,其示出用于平衡处理元件间的功率以实现最大整体性能的模块的逻辑表示的另一实施例。在一个实施例中,图形处理单元(GPU)核605和中央处理单元(CPU)核610位于可能经受整体功率或性能限制的同一管芯、集成电路、封装或其它分组上。例如,通常为集成电路或封装提供热设计功率(TDP)功率限制。换言之,为集成电路的最大热耗散能力提供功率限制。然而,在另一实施例中,GPU核605和CPU核610是要被插入到单个平台中的分离的诸个集成电路,该单个平台可类似地经受整体平台功率和/或热限制。

工作负荷监控器606被示为与GPU核605相关联,而工作负荷监控器611被示为与CPU核610相关联。如上所述,工作负荷监控器606和611可被实现在与GPU核605和CPU核610相关联的硬件、要由微控制器执行的工作负荷代码、和/或在GPU核605和/或CPU核610上执行的代码(例如,微代码、驱动程序代码、其它代码)中。

可在CPU核610上执行的器件驱动程序620读取/加载来自工作负荷监控器606的工作负荷信息。例如,将GPU核605活动的周期数保持在GPU 605中的寄存器、计数器和/或累加器中。器件驱动程序620加载每个时间段的计数并且确定GPU 605的活动。在此,在一个实施例中,器件驱动程序620基于来自工作负荷监控器606的图形活动做出平衡决策。在一个情形下,如果工作负荷活动大于阈值,那么驱动程序620指示GPU核605被占用(即,完全活动并且可能是瓶颈)。在该实施例中,功率管理/平衡模块630(硬件、固件、代码或其组合)接收占用指示并且执行适当的平衡动作(例如,给定CPU核610的频率上限和/或增大GPU核605的频率)。作为特定例示性示例,功率模块630包括PCU、功率代码、微代码、应用代码、特权级代码、操作系统(OS)功率管理服务,等等。

在另一实施例中,功率管理模块630(例如,诸如有特权的功率管理服务)加载来自监控器611的CPU活动信息。并且利用直接来自工作负荷监控器606或器件驱动程序620的GPU核605活动信息,功率管理模块630做出平衡决策。并且模块630还直接实施平衡决策或者指示平衡将由一些其它模块、单元或实体来执行。

作为一个示例,功率管理模块630(在一些实施例中包括器件驱动程序620)为CPU核610和/或GPU核605中的一个或多个设置性能限制。在此,假设已经达到GPU核605和CPU核610的整体功率或热限制。并且在工作负荷测量期间,确定了GPU核605活动超出占用阈值。作为阈值的例示性示例,用于考虑GPU占用的周期数可从一时间段中超过50%的周期为活动到一时间段中100%的周期为活动。例如,假设活动阈值是95%活动,则如果工作负荷监控器606检测到96%-100%的活动周期,那么确定超出了活动阈值。

因此,设置性能限制(例如,CPU核610的最大操作频率、CPU核610的最大超频频率(turbo frequency)、CPU核610的最大电流、CPU核610的最大能耗)。该动作独自可能足以平衡CPU核610的生产以匹配GPU605的消费速率。然而,在另一实施例中,提高GPU核605的性能度量,该性能度量可以是与为CPU核610设限的性能度量相同或不同的性能度量。在此,智能地选择针对GPU 605的提高以与CPU核610的提高平衡,使得不会超出已经遭遇到的功率或热限制。相反地,如果GPU工作负荷低于阈值并且从先前时间段已对CPU核610给定上限/限制,那么提高或者去除该上限。本质上,如果GPU核605未被充分利用,那么认为CPU 610没有以足够快的速率进行生产以完全利用GPU 605。因此,CPU 610被提高或允许运行到完成以便为GPU核605生成更多工作。同样非常类似于以上所讨论的,如果达到了功率限制,那么GPU 605的性能度量(诸如频率)可被降低,因为它不需要全部性能来完成其低于活动阈值的工作负荷。

从上述可见,已达到限制的功耗在处理元件之间被智能地重新分配,以实现提供最佳整体性能的最优平衡。相反,如果功率并没有如本文所讨论地这样被平衡,那么功率限制被实施,但是处理元件之一可能作为限制整体性能的性能瓶颈。相反,这种智能重新分配使得瓶颈能够被缓和,甚至在功率约束之下亦可如此,这实现了最高效能耗约束下的最大性能。

转到图7,其示出用于平衡处理器和图形处理器之间的功率以实现功率限制内的最大性能的流程图的模块和/或表示的实施例。注意,以基本上串行的方式示出了流程(或模块)。然而,这些流程的串行性质以及所描绘的顺序不是必须的。同样,以基本线性方式示出流程。然而,在相同时间段上可并行执行这些流程。此外,所示出的流程或逻辑块中的任一个可在硬件、软件、固件或其组合中执行。如上和如下所述,在一个实施例中,每个流程表示模块、模块的部分或多个模块的重叠。此外,一个或多个指令或操作形式的任何程序代码在被执行时可使机器执行以下所示出和描述的流程。例如,在一个实施例中,程序代码包括:器件驱动程序,诸如图形驱动程序;有特权的服务例程;功率控制单元的功率代码的一部分;处理器的微代码的一部分;或者以上的组合。

在流程705中,从一个或多个工作负荷监控器接收(或加载)在一时间段上的图形处理器和/或中央处理器工作负荷。作为一个示例,从这些器件中的硬件寄存器读取/加载活动计数。不过,可利用用于跟踪一时间段上的工作负荷或活动的任何已知方法。

然后在流程710中,确定是否达到诸如热设计功率(TDP)限制之类的限制。尽管可能遭遇任何功率或能量限制,但是通常使用基于对包括GPU和CPU的封装的电和热限制(即封装的TDP限制)的功率限制。如果尚未达到功率限制并且CPU或GPU工作负荷指示需要提高性能(流程715),那么在流程720中增大诸如频率之类的功率或性能度量使其达到可允许的容纳工作负荷的最大值。在此,如果无需担心命中功率限制,那么通过纯粹提供更多性能来消除潜在瓶颈。相反,如果不需要性能增大,如流程705的工作负荷所指示,那么流程重置以测量工作负荷并且在后续时间段中在流程705中再次读取。注意,在流程715中,可替代地确定诸如GPU之类的器件的性能可被降低并且GPU仍将能够容纳所测得的工作负荷。因此,GPU性能降低,这又降低了功耗,同时维持工作负荷性能。

然而,如果已经遭遇限制,那么平衡功率和/或性能以尽可能多地缓和瓶颈。因此,在流程725中,确定所加载的GPU工作负荷是否大于工作负荷/活动阈值。如果GPU工作负荷在阈值以上,那么在流程730中对CPU施加性能限制。换言之,GPU过度工作且CPU的生产被给定上限。可见,缓和GPU工作负荷的一个方法是给定CPU生产的上限。然而,为了进一步缓和瓶颈,提高诸如频率之类的GPU性能。由于GPU频率的提高,因此GPU功耗提高。并且在没有降低CPU频率或给定其上限的情况下(这导致更低的CPU功耗),将会超出所遭遇的TDP限制。然而,对给定CPU性能上限以及GPU频率的类似增大的平衡确保不会超出TDP限制。但是相反,基于实际的、所测得的GPU工作负荷在GPU和CPU之间智能地重新分配可用功率以获得最佳性能。

不过,如果GPU工作负荷不大于阈值,那么在流程735中确定先前的CPU限制是否已被施加。如果尚未施加限制,那么在流程745中CPU继续根据现有策略操作。然而,如果GPU低于活动阈值并且CPU具有当前性能限制,那么在流程740中增大和/或去除该限制。如上所讨论的,在该情形下,GPU没有努力工作,因此提高CPU的生产。因此,如果没有设置CPU上限,那么低图形活动可归因于非图形密集型的应用。相反,如果已经施加CPU性能限制,那么提高该限制以潜在地同样提高用于GPU的CPU的生产。

参考图8,其示出用于平衡处理器和图形处理器之间的功率以达到功率限制内的最大性能的流程图的模块和/或表示的另一实施例。类似于图7和流程705,确定中央处理器的处理工作负荷活动以及图形处理器的图形工作负荷活动。并且在流程810中,如在流程710中一样,确定保持中央处理器和图形处理器的平台、封装、集成电路或其它形态是否已经达到功率限制、热限制或者其组合(例如TDP限制)。

在流程825中,至少基于在流程805中确定的图形工作负荷活动来确定图形处理器是否是性能瓶颈。作为一个示例,这种确定是基于图形工作负荷活动是否大于图形活动阈值。在此,如果活动大于阈值,那么认为GPU是瓶颈。然而,如果活动小于阈值,那么对流程825则认为CPU是瓶颈。然而,此类活动与阈值的比较不是必需的。例如,可直接比较工作负荷。并且如果一个高于另一个,那么这一个就被确定为瓶颈。

因此,在流程830中,响应于在流程825中确定图形处理器是性能瓶颈,将中央处理器的处理器性能限制设为低于先前的处理器性能限制。或者,在流程840中,响应于在流程835中确定中央处理器是性能瓶颈,将图形处理器的图形性能限制设为低于先前的图形处理器性能限制。并且类似于以上的讨论,可增加竞争器件以进一步缓和任何瓶颈。

尽管讨论主要集中在作为中央处理器和图形处理器的竞争器件上,但是具有生产者-消费者关系的、为功率或性能资源而竞争的、或在整体功率或热限制下被调节的任何器件之间的功率/性能可被类似地平衡。因此,可用功率在器件之间被智能地分配以从全局视角提供最佳可能性能,代替了每个个体组件用其自己的功率和性能规则来处理而不考虑它们的应用级贡献或对资源的垄断。

在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。

如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。

而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。

上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备等等,这些信号与可从其接收信息的非瞬态介质相区别。

贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定指的是同一实施例。此外,在一个或多个实施例中,特定特征、结构或特性可以以任何合适的方式组合起来。

在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,说明书和附图应被视为说明性的,而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

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