CN114207597A - 用于向异构处理器中的操作系统提供硬件状态反馈的系统、装置和方法 - Google Patents
用于向异构处理器中的操作系统提供硬件状态反馈的系统、装置和方法 Download PDFInfo
- Publication number
- CN114207597A CN114207597A CN202080055301.8A CN202080055301A CN114207597A CN 114207597 A CN114207597 A CN 114207597A CN 202080055301 A CN202080055301 A CN 202080055301A CN 114207597 A CN114207597 A CN 114207597A
- Authority
- CN
- China
- Prior art keywords
- core
- operating
- power
- processor
- performance
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Sources (AREA)
Abstract
在一个实施例中,一种处理器包括具有资源分配电路的功率控制器。该资源分配电路可以:为第一核心和至少一个第二核心接收功率预算,并且至少部分基于至少一个能量性能偏好值来缩放功率预算以确定经缩放的功率预算;至少部分基于经缩放的功率预算来为核心确定最大操作点;至少部分基于最大操作点来为核心确定效率值;并且基于效率值向操作系统调度器报告硬件状态变化。描述和要求保护了其他实施例。
Description
技术领域
实施例涉及具有用于提供调度信息的接口的处理器。
背景技术
半导体处理和逻辑设计中的进步已允许了可存在于集成电路器件上的逻辑的数量的增大。结果,计算机系统配置已从系统中的单个或多个集成电路演进到了个体集成电路上的多个硬件线程、多个核心、多个器件和/或完整的系统。此外,随着集成电路的密度增长,对于计算系统(从嵌入式系统到服务器)的功率要求也已升级了。此外,软件效率低下及其对硬件的要求也引起了计算设备能量消耗的增大。实际上,一些研究指出,计算设备消耗了对于一个国家(例如美国)的整个电力供应的相当大的百分比。结果,对于与集成电路相关联的能量效率和节约,存在至关重要的需求。这些需求将随着服务器、桌面型计算机、笔记本、UltrabookTM、平板设备、移动电话、处理器、嵌入式系统等等变得更加普遍(从包括在典型的计算机、汽车和电视中到生物技术)而增大。
附图说明
图1是根据本发明的实施例的系统的一部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一实施例的多域处理器的框图。
图4是包括多个核心的处理器的实施例。
图5是根据本发明的一个实施例的处理器核心的微体系结构的框图。
图6是根据另一实施例的处理器核心的微体系结构的框图。
图7是根据又一实施例的处理器核心的微体系结构的框图。
图8是根据另外一个实施例的处理器核心的微体系结构的框图。
图9是根据本发明的另一实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一示例SoC的框图。
图12是可与实施例一起使用的示例系统的框图。
图13是可与实施例一起使用的另一示例系统的框图。
图14是代表性计算机系统的框图。
图15是根据本发明的实施例的系统的框图。
图16是根据一实施例的调度方法的流程图。
图17是根据一实施例的分别关于小核心和大核心的各种工作负载的核心功率的图示。
图18是根据一实施例示出不同核心类型之间的比较的S曲线的图示。
图19是根据一实施例的硬件反馈接口结构的框图。
图20是根据一实施例的系统布置的框图。
图21是根据本发明的实施例的方法的流程图。
图22是根据一实施例图示出处理器的功率与性能的关系的框图。
图23是根据本发明的实施例的多个处理器操作区域和阈值的图。
图24是根据本发明的实施例的功率对性能表的框图。
图25是根据本发明的实施例的利用率查找表的框图。
图26是根据本发明的实施例的效率和性能查找表的框图。
图27是根据本发明的实施例的电压-频率查找表的框图。
图28是根据本发明的另一实施例的方法的流程图。
具体实施方式
在各种实施例中,提供了用于管理异构(hetero)处理器中的功率和热消耗的技术。就本文使用的而言,术语“异构处理器”是指包括多个不同类型的处理引擎的处理器。例如,异构处理器可包括两种或更多种类型的核心,这些核心具有不同的微体系结构、指令集体系结构(instruction set architecture,ISA)、电压/频率(voltage/frequency,VF)曲线、和/或更广泛而言具有不同的功率/性能特征。
异构处理器的最优设计/操作点(就VF特性、每周期指令(instructions percycle,IPC)、功能/ISA等等而言)既取决于固有的/静态的系统约束(例如,公共电压轨)也取决于动态的执行状态(例如,工作负载需求的类型、功率/热状态,等等)。为了从这种体系结构中提取功率效率和性能,实施例提供了确定/估计当前硬件状态/能力的技术,并且将应用软件要求映射到硬件块。随着系统的功率/热状态的变化,不同核心的相对功率/性能特性发生变化。实施例将这些差异考虑在内,以做出局部和全局的最优决策。因此,实施例提供了每个核心功率/性能特性的动态反馈。
更具体而言,实施例提供了基于异构硬件块的当前状态的资源分配(例如,功率预算)和操作点选择的闭环控制。在实施例中,提供了一种硬件引导调度(hardware guidedscheduling,HGS)接口,以基于功率/热约束来向操作系统(operating system,OS)传达动态处理器能力。实施例可以动态地计算硬件(HW)反馈信息,包括动态地估计处理器性能和能量效率能力。作为一个特定的示例,可以基于不同核心类型的底层功率和性能(PnP)特性和/或基于功率/性能偏向的流片后调谐来访问查找表(lookup table,LUT)。
此外,实施例可以为异构处理器确定最优操作点。可以至少部分基于当前执行场景,包括不同应用的不同工作负载需求(性能、效率、响应性、吞吐量、IO响应),以及异构核心的性能和能量效率能力的转变,来确定这种最优操作点。
在实施例中,动态计算的处理器性能和能量效率能力可被提供给OS调度器。反馈信息考虑到了功率和热约束,以确保提供当前的硬件状态。通过这种方式,OS调度器可以做出改善整体系统性能和效率的调度决策。注意,这种反馈不取决于工作负载能量性能偏好(energy performance preference,EPP)或其他软件输入。更确切地说,它是基于反映当前硬件状态的物理约束的。
相比之下,传统的功率管理机制假设所有的核心都是相同的类型,从而,对于给定的功率预算,将每个核心上的最大可实现频率估计为相同的。这是不准确的,因为不同的核心可分别具有不同的功率/性能能力,并且它们可基于其他平台约束而具有不同的最大频率。而且,传统的功率管理算法在计算性能状态(P状态)时为所有核心假设相同的利用率目标,因此没有考虑到底层体系结构的异构性。现有的技术也没有以基于优化功率或性能将特定类型的线程映射到某一核心类型为目标来优化操作点。
一般而言,HGS接口基于功率/热约束来向OS提供动态处理器能力。OS将这种反馈作为调度算法的输入,并且将工作负载需求映射到异构计算单元。调度器的映射决策可能由不同的度量来指导,例如性能、效率或响应性等等。调度决策进而影响处理器状态,因此形成一种闭环的依赖性。由于就功率/性能要求而言的工作负载的需求可具有很大的边际,所以调度决策的任何变化都会引起HGS反馈的巨大转变,导致不可接受的稳定性问题。实施例提供了独立于/弹性于调度决策或来自操作系统的其他软件输入的技术,从而避免了这些稳定性问题。
虽然接下来的实施例是参考特定集成电路(例如计算平台或处理器中的)描述的,但其他实施例适用于其他类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可被应用到也可受益于更好的能量效率和能量节约的其他类型的电路或半导体器件。例如,公开的实施例不限于任何特定类型的计算机系统。也就是说,公开的实施例可被用于许多不同的系统类型中,范围从服务器计算机(例如,塔式服务器、机架式服务器、刀片式服务器、微服务器等等)、通信系统、存储系统、任何配置的桌面计算机、膝上型电脑、笔记本电脑、到平板计算机(包括2:1平板设备、平板手机等等)不等,并且也可被用于其他设备中,例如手持设备、片上系统(systems on chip,SoC)、以及嵌入式应用。手持设备的一些示例包括诸如智能电话之类的蜂窝电话、互联网协议设备、数字相机、个人数字助理(personaldigital assistant,PDA)、以及手持PC。嵌入式应用通常可包括微控制器、数字信号处理器(digital signal processor,DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(wide area network,WAN)交换机、可穿戴设备、或者能够执行下面教导的功能和操作的任何其他系统。另外,实施例可被实现在具有标准语音功能的移动终端中,例如移动电话、智能电话和平板手机,和/或被实现在没有标准无线语音功能通信能力的非移动终端中,例如许多可穿戴设备、平板设备、笔记本电脑、桌面电脑、微服务器、服务器,等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是也可涉及软件优化。
现在参考图1,示出了根据本发明的实施例的系统的一部分的框图。如图1所示,系统100可包括各种组件,其中包括处理器110,该处理器110如图所示是多核心处理器。处理器110可经由外部电压调节器160耦合到电力供应150,该电压调节器160可执行第一电压转换以向处理器110提供主调节电压。
可以看出,处理器110可以是包括多个核心120a–120n的单管芯处理器。此外,每个核心可与集成电压调节器(integrated voltage regulator,IVR)125a–125n相关联,该集成电压调节器接收主调节电压并且生成要被提供给与该IVR相关联的处理器的一个或多个代理的操作电压。因此,可以提供IVR实现方式来允许对电压进行细粒度控制并从而允许对每个个体核心的功率和性能进行细粒度控制。这样,每个核心可按独立的电压和频率进行操作,这使能了很大的灵活性并且提供了很宽的机会来平衡功率消耗与性能。在一些实施例中,对多个IVR的使用使得能够将组件分组到分开的电力平面中,使得电力被IVR调节并且只供应给群组中的那些组件。在功率管理期间,一个IVR的给定电力平面在处理器被置于某个低功率状态中时可被掉电或断电,而另一IVR的另一电力平面保持活跃或者被完全供电。
仍然参考图1,额外的组件可存在于处理器内,包括输入/输出接口132、另一接口134、以及集成存储器控制器136。可以看出,这些组件中的每一者可由另一集成电压调节器125x来供电。在一个实施例中,接口132可为快速路径互连(Quick PathInterconnect,QPI)互连使能操作,该互连提供包括多个层的缓存一致性协议中的点到点(point-to-point,PtP)链路,所述多个层包括物理层、链路层和协议层。进而,接口134可经由快速外围组件互连(Peripheral Component Interconnect Express,PCIeTM)协议来通信。
还示出了功率控制单元(power control unit,PCU)138,该PCU 138可包括硬件、软件和/或固件来执行关于处理器110的功率管理操作。可以看出,PCU 138经由数字接口向外部电压调节器160提供控制信息以使得电压调节器生成适当的经调节的电压。PCU 138还经由另一数字接口向IVR 125提供控制信息以控制生成的操作电压(或者使得相应的IVR在低功率模式中被禁用)。在各种实施例中,PCU 138可包括多种功率管理逻辑单元来执行基于硬件的功率管理。这种功率管理可以是完全处理器控制的(例如,由各种处理器硬件控制,并且可由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功率管理可响应于外部源(例如,平台或管理功率管理源或系统软件)而被执行。
在这里的实施例中,PCU 138可被配置为动态地确定关于诸如核心120之类的硬件电路的性能和能量效率能力的硬件反馈信息,并且提供一种接口来使得能够将此信息传达给OS调度器,以用于做出更好的调度决策。为此,PCU 138可被配置为确定并且存储这种信息,或者存储在PCU 138内部,或者存储在系统100的另一存储装置中。
此外,虽然图1示出了其中PCU 138是单独的处理引擎(其可被实现为微控制器)的实现方式,但要理解在一些情况下,除了专用功率控制器以外或者取代专用功率控制器,每个核心可包括功率控制代理或者与功率控制代理相关联来更自主地独立控制功率消耗。在一些情况下,可提供层次化功率管理体系结构,其中PCU 138和与每个核心120相关联的相应功率管理代理进行通信。
虽然为了图示的容易而没有示出,但要理解,在处理器110内可存在额外的组件,例如非核心逻辑,以及诸如内部存储器之类的其他组件,例如,缓存存储器层次体系的一个或多个级别,等等。此外,虽然在图1的实现方式中是用集成电压调节器来示出的,但实施例不限于此。
本文描述的处理器可利用可独立于基于操作系统(operating system,OS)的功率管理(operating system-based power management,OSPM)机制并且与其互补的功率管理技术。根据一个示例OSPM技术,处理器可按各种性能状态或水平——所谓的P状态——进行操作,即从P0至PN。一般而言,P1性能状态可对应于OS可以请求的最高保证性能状态。除了这个P1状态以外,OS还可请求更高的性能状态,即P0状态。这个P0状态从而可以是机会模式或加强模式状态,其中当功率和/或热预算可用时,处理器硬件可将处理器或者其至少一些部分配置为按高于保证频率来进行操作。在许多实现方式中,处理器可包括高于P1保证最大频率的、超出到特定处理器的最大峰值频率的多个所谓的分段频率(bin frequency),这些分段频率在制造期间被烧熔或以其他方式写入到处理器中。此外,根据一个OSPM机制,处理器可按各种功率状态或水平来进行操作。关于功率状态,OSPM机制可以指定不同的功率消耗状态,一般称为C状态,C0、C1至Cn状态。当核心活跃时,该核心按C0状态来运行,并且当核心空闲时,其可被置于核心低功率状态中,也被称为核心非零C状态(例如,C1-C6状态),其中每个C状态处于更低的功率消耗水平(从而C6是比C1更深的低功率状态,等等依此类推)。
要理解,许多不同类型的功率管理技术在不同的实施例中可被单独或组合使用。作为代表性示例,功率控制器可控制处理器按某种形式的动态电压频率缩放(dynamicvoltage frequency scaling,DVFS)来被功率管理,在该动态电压频率缩放中,一个或多个核心或其他处理器逻辑的操作电压和/或操作频率可被动态地控制以在某些情形中降低功率消耗。在一示例中,可利用可从加州圣克拉拉的英特尔公司获得的增强型英特尔SpeedStepTM技术来执行DVFS,来以最低的功率消耗水平提供最优的性能。在另一示例中,可利用英特尔TurboBoostTM技术来执行DVFS,以使得一个或多个核心或其他计算引擎能够基于状况(例如,工作负载和可用性)来以高于保证操作频率的频率进行操作。
在某些示例中可使用的另一种功率管理技术是工作负载在不同计算引擎之间的动态调换。例如,处理器可包括以不同的功率消耗水平操作的非对称核心或其他处理引擎,使得在功率受约束的情形中,一个或多个工作负载可被动态切换来在更低功率的核心或其他计算引擎上执行。另一种示范性功率管理技术是硬件工作周期循环(hardware dutycycling,HDC),其可使得核心和/或其他计算引擎根据工作周期被周期性地启用和禁用,从而使得一个或多个核心可在工作周期的非活跃时段期间被设为不活跃并且在工作周期的活跃时段期间被设为活跃。
实施例可被实现在针对各种市场的处理器中,包括服务器处理器、桌面处理器、移动处理器等等。现在参考图2,示出了根据本发明的实施例的处理器的框图。如图2中所示,处理器200可以是包括多个核心210a–210n的多核心处理器。在一个实施例中,每个这种核心可以是独立的电力域的并且可被配置为基于工作负载而进入和退出活跃状态和/或最大性能状态。
各种核心可经由互连215耦合到包括各种组件的系统代理或非核心220。可以看出,非核心220可包括共享缓存230,该共享缓存230可以是最后一级缓存。此外,非核心可包括集成存储器控制器240来例如经由存储器总线与系统存储器(图2中未示出)进行通信。非核心220还包括各种接口250和功率控制单元255,功率控制单元255可包括逻辑来执行如本文所述的功率管理技术。此外,功率控制单元255可包括反馈控制电路256,该反馈控制电路256被配置为动态地确定硬件反馈信息并且使得能够将这种信息传达给调度器,如本文所述。
此外,通过接口250a-250n,可进行到各种芯片外组件(例如外围设备、大容量存储装置等等)的连接。虽然在图2的实施例中是利用这个特定实现方式示出的,但本发明的范围在这个方面不受限制。
现在参考图3,示出了根据本发明的另一实施例的多域处理器的框图。如图3的实施例中所示,处理器300包括多个域。具体而言,核心域310可包括多个核心3100-310n,图形域320可包括一个或多个图形引擎,并且系统代理域350可进一步存在。在一些实施例中,系统代理域350可按独立于核心域的频率来执行并且可在所有时间保持通电以应对功率控制事件和功率管理,使得域310和320可被控制来动态地进入和退出高功率和低功率状态。域310和320中的每一者可按不同的电压和/或功率来进行操作。注意,虽然只示出了三个域,但要理解本发明的范围在这个方面不受限制,并且在其他实施例中可存在额外的域。例如,多个核心域可存在,每个核心域包括至少一个核心。
一般而言,每个核心310除了各种执行单元和额外的处理元件以外,还可包括低级别缓存。进而,各种核心可耦合到彼此并且耦合到由最后一级缓存(last level cache,LLC)3400–340n的多个单元形成的共享缓存存储器。在各种实施例中,LLC 340可被共享于核心和图形引擎,以及各种媒体处理电路之间。可以看出,环状互连330从而将核心耦合在一起,并且在核心、图形域320和系统代理电路350之间提供互连。在一个实施例中,互连330可以是核心域的一部分。然而,在其他实施例中,环状互连可以是其自己的域的。
还可以看出,系统代理域350可包括显示控制器352,该显示控制器352可提供对关联的显示器的控制和到关联的显示器的接口。还可以看出,系统代理域350可包括功率控制单元355,该功率控制单元355可包括反馈控制电路356,以动态地确定关于核心310和其他执行引擎的硬件反馈信息,并且将这种信息提供给调度器,如本文所述。
从图3中还可看出,处理器300还可包括集成存储器控制器(integrated memorycontroller,IMC)370,该IMC 370可提供到诸如动态随机访问存储器(dynamic randomaccess memory,DRAM)之类的系统存储器的接口。多个接口3800–380n可存在来使能处理器和其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(directmedia interface,DMI)接口,以及一个或多个PCIeTM接口。此外,为了提供诸如额外的处理器或者其他电路之类的其他代理之间的通信,也可提供一个或多个QPI接口。虽然在图3的实施例中是在这个高级别示出的,但要理解本发明的范围在这个方面不受限制。
参考图4,图示了包括多个核心的处理器的实施例。处理器400包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(system on a chip,SoC)、或者用于执行代码的其他设备。处理器400在一个实施例中包括至少两个核心——核心401和402,它们可包括非对称核心或者对称核心(图示的实施例)。然而,处理器400可包括任何数目的可以是对称或非对称的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够为处理器保持状态(例如执行状态或体系结构状态)的任何其他元件。换言之,处理元件在一个实施例中指的是能够独立地与诸如软件线程、操作系统、应用或其他代码之类的代码相关联的任何硬件。物理处理器通常指的是一种集成电路,该集成电路可包括任何数目的其他处理元件,例如核心或硬件线程。
核心经常指能够维持独立体系结构状态的、位于集成电路上的逻辑,其中每个被独立维持的体系结构状态与至少一些专用执行资源相关联。与核心形成对比,硬件线程通常指能够维持独立体系结构状态的、位于集成电路上的任何逻辑,其中被独立维持的体系结构状态共享对执行资源的访问。可以看出,当某些资源被共享并且其他资源被专用于体系结构状态时,硬件线程和核心的命名法之间的界线会重叠。然而经常,核心和硬件线程被操作系统看作单独的逻辑处理器,其中操作系统能够单独调度每个逻辑处理器上的操作。
如图4所示,物理处理器400包括两个核心,即核心401和402。这里,核心401和402被认为是对称核心,即,具有相同的配置、功能单元和/或逻辑的核心。在另一实施例中,核心401包括无序处理器核心,而核心402包括有序处理器核心。然而,核心401和402可以是单独从任何类型的核心中选择的,例如,原生核心、受软件管理的核心、被适配为执行原生指令集体系结构(instruction set architecture,ISA)的核心、被适配为执行经转化的ISA的核心、共同设计的核心、或者其他已知的核心。再进一步讨论,下文更详细描述在核心401中图示的功能单元,因为核心402中的单元以类似的方式进行操作。
如图所示,核心401包括两个硬件线程401a和401b,它们也可被称为硬件线程槽401a和401b。因此,软件实体(例如操作系统)在一个实施例中可能将处理器400视为四个分开的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上文提到的,第一线程与体系结构状态寄存器401a相关联,第二线程与体系结构状态寄存器401b相关联,第三线程可以与体系结构状态寄存器402a相关联,并且第四线程可以与体系结构状态寄存器402b相关联。这里,体系结构状态寄存器(401a、401b、402a和402b)的每一者可被称为处理元件、线程槽或者线程单元,如上所述。如图所示,体系结构状态寄存器401a被复制在体系结构状态寄存器401b中,因此能够为逻辑处理器401a和逻辑处理器401b存储个体的体系结构状态/情境。在核心401中,也可针对线程401a和401b复制其他更小的资源,例如分配器和重命名器块430中的指令指针和重命名逻辑。通过分区可共享一些资源,例如重排序/引退单元435中的重排序缓冲器、ILTB 420、加载/存储缓冲器、以及队列。其他资源,例如通用内部寄存器、(一个或多个)页表基址寄存器、低级别数据缓存和数据TLB 415、(一个或多个)执行单元440、以及无序单元435的一些部分,可能被完全共享。
处理器400经常包括其他资源,这些资源可被完全共享、通过分区被共享、或者被处理元件专用或者专用于处理元件。在图4中,图示了具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意,处理器可包括或者省略这些功能单元中的任何一者,以及包括没有描绘的任何其他已知的功能单元、逻辑或者固件。如图所示,核心401包括简化的、代表性无序(out-of-order,OOO)处理器核心。但在不同的实施例中可利用有序处理器。OOO核心包括分支目标缓冲器420来预测要执行/采取的分支,以及指令转化缓冲器(instruction-translation buffer,I-TLB)420来为指令存储地址转化条目。
核心401还包括与取得单元420耦合的解码模块425以对取得的元素进行解码。取得逻辑在一个实施例中包括分别与线程槽401a、401b相关联的个体定序器。通常核心401与第一ISA相关联,该第一ISA定义/指定在处理器400上可执行的指令。经常,作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),该部分引用/指定要执行的指令或者操作。解码模块425包括电路,该电路从其操作码识别这些指令并且在管线中传递解码的指令来按第一ISA定义的那样处理。例如,解码器425在一个实施例中包括被设计或适配为识别诸如事务性指令之类的特定指令的逻辑。作为解码器425进行的识别的结果,体系结构或核心401采取特定的预定动作来执行与适当指令相关联的任务。注意以下这点是重要的:本文描述的任何任务、块、操作和方法可响应于单个或多个指令而被执行;这些指令中的一些可以是新的或者旧的指令。
在一个示例中,分配器和重命名器块430包括分配器来预留资源,例如预留寄存器堆来存储指令处理结果。然而,线程401a和401b可能能够进行无序执行,其中分配器和重命名器块430也预留其他资源,例如预留重排序缓冲器来跟踪指令结果。单元430还可包括寄存器重命名器来将程序/指令参考寄存器重命名到处理器400内部的其他寄存器。重排序/引退单元435包括组件(例如,上文提及的重排序缓冲器、加载缓冲器和存储缓冲器),来支持对被无序执行的指令进行的无序执行和之后的有序引退。
调度器和(一个或多个)执行单元块440在一个实施例中包括调度器单元来调度执行单元上的指令/操作。例如,在执行单元的端口上调度浮点指令,其中该执行单元具有可用的浮点执行单元。还包括与执行单元相关联的寄存器堆来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元、和其他已知的执行单元。
更低级别数据缓存和数据转化缓冲器(data translation buffer,D-TLB)450耦合到(一个或多个)执行单元440。数据缓存还用于存储最近使用/操作的元素(例如数据操作对象),这些元素可能被保持在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转化。作为一个具体示例,处理器可包括页表结构来将物理存储器分解成多个虚拟页。
这里,核心401和402共享对更高级别或更远缓存410的访问,该缓存用于缓存最近取得的元素。注意,更高级别或者更远指的是缓存级别增大或者变得更远离(一个或多个)执行单元。在一个实施例中,更高级别缓存410是最后一级数据缓存——处理器400上的存储器层次体系中的最后缓存——例如第二级或第三级数据缓存。然而,更高级别缓存410不限于此,因为其可以与指令缓存相关联或者包括指令缓存。取而代之,踪迹缓存——一类指令缓存——可被耦合在解码器425之后,来存储最近解码的踪迹。
在描绘的配置中,处理器400还包括总线接口模块405和功率控制器460,其可根据本发明的实施例执行功率管理。在此场景中,总线接口405用于与在处理器400外部的设备(例如,系统存储器和其他组件)进行通信。
存储器控制器470可与诸如一个或许多存储器之类的其他设备相接口。在一示例中,总线接口405包括环状互连,该环状互连具有用于与存储器相接口的存储器控制器和用于与图形处理器相接口的图形控制器。在SoC环境中,甚至更多的设备(例如,网络接口、协处理器、存储器、图形处理器、和任何其他已知的计算机设备/接口)可被集成在单个管芯或集成电路上,以提供具有高功能和低功率消耗的小外形参数。
现在参考图5,示出了根据本发明的一个实施例的处理器核心的微体系结构的框图。如图5所示,处理器核心500可以是多阶段管线式无序处理器。核心500可基于接收到的操作电压来按各种电压进行操作,其中接收到的操作电压可以是从集成电压调节器或者外部电压调节器接收的。
从图5中可见,核心500包括前端单元510,前端单元510可用于取得要执行的指令并且使它们为以后在处理器管线中使用做好准备。例如,前端单元510可包括取得单元501、指令缓存503、和指令解码器505。在一些实现方式中,前端单元510还可包括踪迹缓存,连同微代码存储装置以及微操作存储装置。取得单元501可取得宏指令(例如从存储器或指令缓存503取得)并且将它们馈送到指令解码器505来将其解码成基元(即,供处理器执行的微操作)。
耦合在前端单元510和执行单元520之间的是无序(OOO)引擎515,该OOO引擎515可用于接收微指令并且使它们为执行做好准备。更具体而言,OOO引擎515可包括各种缓冲器,用于重排序微指令流并且分配执行所需要的各种资源,并且用于提供逻辑寄存器到(诸如寄存器堆530和扩展寄存器堆535之类的)各种寄存器堆内的存储位置上的重命名。寄存器堆530可包括用于整数操作和浮点操作的分开的寄存器堆。为了配置、控制和额外的操作,一组特定于机器的寄存器(machine specific register,MSR)538也可存在并且是核心500内(以及核心外部)的各种逻辑可访问的。
各种资源可存在于执行单元520中,包括例如各种整数、浮点、和单指令多数据(single instruction multiple data,SIMD)逻辑单元,以及其他专门的硬件。例如,这种执行单元可包括一个或多个算术逻辑单元(arithmetic logic unit,ALU)522以及一个或多个向量执行单元524,以及其他这种执行单元。
来自执行单元的结果可被提供到引退逻辑,即,重排序缓冲器(reorder buffer,ROB)540。更具体而言,ROB 540可包括各种阵列和逻辑以接收与被执行的指令相关联的信息。此信息随后被ROB 540考查来确定指令是否可被有效地引退以及结果数据是否可被提交给处理器的体系结构状态,或者确定是否发生了阻止指令的适当引退的一个或多个异常。当然,ROB 540可应对与引退相关联的其他操作。
如图5所示,ROB 540耦合到缓存550,缓存550在一个实施例中可以是低级别缓存(例如,L1缓存),不过本发明的范围在这个方面不受限制。另外,执行单元520可直接耦合到缓存550。从缓存550,数据通信可与更高级别缓存、系统存储器等等发生。注意,核心500的性能和能量效率能力可基于工作负载和/或处理器约束而变化。这样,功率控制器(图5中未示出)可动态地确定包括性能和能量效率能力的反馈信息,来用于如本文所述的调度决策。虽然在图5的实施例中是以这个高级别来示出的,但要理解本发明的范围在这个方面不受限制。例如,虽然图5的实现方式是关于诸如x86指令集体系结构(ISA)之类的无序机器的,但本发明的范围在这个方面不受限制。也就是说,其他实施例可被实现在有序处理器、诸如基于ARM的处理器之类的精简指令集计算(reduced instruction set computing,RISC)处理器、或者可经由仿真引擎和关联的逻辑电路来对不同ISA的指令和操作进行仿真的另一类型的ISA的处理器中。
现在参考图6,示出了根据另一实施例的处理器核心的微体系结构的框图。在图6的实施例中,核心600可以是不同微体系结构的低功率核心,例如,基于AtomTM的处理器,其具有被设计为降低功率消耗的、相对有限的管线深度。可以看出,核心600包括被耦合来向指令解码器615提供指令的指令缓存610。分支预测器605可耦合到指令缓存610。注意,指令缓存610还可耦合到另一级别的缓存存储器,例如L2缓存(在图6中为了图示的容易而没有示出)。进而,指令解码器615将解码的指令提供给发出队列620以便存储和输送到给定的执行管线。微代码ROM 618耦合到指令解码器615。
浮点管线630包括浮点寄存器堆632,该浮点寄存器堆632可包括诸如128、256或512比特之类的给定比特宽度的多个体系结构寄存器。管线630包括浮点调度器634来调度指令以供在管线的多个执行单元之一上执行。在示出的实施例中,这种执行单元包括ALU635、置乱单元636、以及浮点加法器638。进而,在这些执行单元中生成的结果可被提供回到寄存器堆632的缓冲器和/或寄存器。当然,要理解,虽然是以这几个示例执行单元来示出的,但在另一实施例中可存在额外的或者不同的浮点执行单元。
也可提供整数管线640。在示出的实施例中,管线640包括整数寄存器堆642,该整数寄存器堆642可包括诸如128或256比特之类的给定比特宽度的多个体系结构寄存器。管线640包括整数调度器644来调度指令来在管线的多个执行单元之一上执行。在示出的实施例中,这种执行单元包括ALU 645、移位器单元646、以及跳转执行单元648。进而,在这些执行单元中生成的结果可被提供回到寄存器堆642的缓冲器和/或寄存器。当然,要理解,虽然是以这几个示例执行单元示出的,但在另一实施例中可存在额外的或者不同的整数执行单元。
存储器执行调度器650可调度存储器操作来在地址生成单元652中执行,该地址生成单元652也耦合到TLB 654。可以看出,这些结构可耦合到数据缓存660,数据缓存660可以是L0和/或L1数据缓存,该L0和/或L1数据缓存进而耦合到缓存存储器层次体系的额外级别,包括L2缓存存储器。
为了提供对无序执行的支持,除了重排序缓冲器680以外,还可提供分配器/重命名器670,该重排序缓冲器680被配置为对被无序执行的指令进行重排序以便有序引退。注意,核心600的性能和能量效率能力可基于工作负载和/或处理器约束而变化。这样,功率控制器(图6中未示出)可动态地确定包括性能和能量效率能力的反馈信息,来用于如本文所述的调度决策。虽然在图6的图示中是以这个特定的管线体系结构来示出的,但要理解许多变化和替换是可能的。
注意,在(例如根据图5和图6的微体系结构)具有非对称核心的处理器中,可出于功率管理原因在核心之间动态地调换工作负载,因为这些核心虽然具有不同的管线设计和深度,但可具有相同或相关的ISA。可以按对于用户应用而言透明(并且可能对于内核也透明)的方式来执行这种动态的核心调换。
参考图7,示出了根据又一实施例的处理器核心的微体系结构的框图。如图7所示,核心700可包括多阶段有序管线来以非常低的功率消耗水平执行。作为一个这种示例,处理器700可具有根据可从加州森尼维尔市的ARM控股有限公司获得的ARM Cortex A53设计的微体系结构。在一种实现方式中,可提供被配置为既执行32比特代码也执行64比特代码的8阶段管线。核心700包括取得单元710,该取得单元710被配置为取得指令,包括如本文所述的现场自测试指令,并且将它们提供给解码单元715,解码单元715可对指令解码,例如诸如ARMv8 ISA之类的给定ISA的宏指令。还要注意,队列730可耦合到解码单元715以存储经解码的指令。经解码的指令被提供到发出逻辑725,其中在发出逻辑725处,经解码的指令可被发出到多个执行单元中的给定一个。
进一步参考图7,发出逻辑725可将指令发出到多个执行单元之一。在示出的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双重发出单元760、以及加载/存储单元770。这些不同执行单元的结果可被提供到写回单元780。要理解,虽然为了图示的容易而示出了单个写回单元,但在一些实现方式中,分开的写回单元可与每个执行单元相关联。此外,要理解,虽然图7所示的每个单元和逻辑是以高级别来表示的,但特定的实现方式可包括更多的或不同的结构。利用一个或多个(如图7所示的)具有管线的核心来设计的处理器可被实现在许多不同的最终产品中,从移动设备延伸到服务器系统。
参考图8,示出了根据另外一个实施例的处理器核心的微体系结构的框图。如图8所示,核心800可包括多阶段多发出无序管线以按非常高的性能水平执行(这可以按比图7的核心700更高的功率消耗水平发生)。作为一个这种示例,处理器800可具有根据ARMCortex A57设计的微体系结构。在一种实现方式中,可提供被配置为既执行32比特代码也执行64比特代码的15(或更多)阶段管线。此外,管线可提供3宽(或更宽)和3发出(或更多发出)操作。核心800包括取得单元810,该取得单元810被配置为取得指令,包括如本文所述的现场自测试指令,并且将它们提供到解码器/重命名器/调谴器815,解码器/重命名器/调谴器815可对指令解码,例如ARMv8指令集体系结构的宏指令,重命名指令内的寄存器引用,并且将指令(最终)调谴到所选择的执行单元。经解码的指令可被存储在队列825中。注意,虽然在图8中为了图示的容易而示出了单个队列结构,但要理解可针对多个不同类型的执行单元中的每一者提供分开的队列。
图8中还示出了发出逻辑830,其中,存储在队列825中的经解码指令可从该发出逻辑830被发出到所选择的执行单元。发出逻辑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可以是可从英特尔公司获得的基于ArchitectureCoreTM的处理器(例如,i3、i5、i7或另外的这种处理器)。然而,其他低功率处理器(例如,可从加州森尼维尔市的超微半导体公司(AMD)获得的低功率处理器,来自ARM控股有限公司或其被许可方的基于ARM的设计,或者来自加州森尼维尔市的MIPS技术公司或者其被许可方或采用者的基于MIPS的设计)可取而代之存在于其他实施例中,例如苹果A7处理器、高通骁龙处理器或者德州仪器OMAP处理器。这种SoC可被用于低功率系统中,例如智能电话、平板计算机、平板手机计算机、UltrabookTM计算机或者其他便携式计算设备或者载具计算系统。
在图9所示的高级别视图中,处理器900包括多个核心单元9100-910n。每个核心单元可包括一个或多个处理器核心、一个或多个缓存存储器以及其他电路。每个核心单元910可支持一个或多个指令集(例如,x86指令集(带有已随着更新的版本添加的一些扩展);MIPS指令集;ARM指令集(带有诸如NEON之类的可选附加扩展))或者其他指令集或者其组合。注意,核心单元中的一些可以是异构资源(例如,具有不同的设计)。此外,每个这种核心可耦合到缓存存储器(未示出),该缓存存储器在一实施例中可以是共享级别(L2)缓存存储器。非易失性存储装置930可被用于存储各种程序和其他数据。例如,此存储装置可被用于存储微代码的至少一些部分、诸如BIOS之类的引导信息、其他系统软件,用于本文描述的诊断自测试的测试模式,等等。
每个核心单元910还可包括接口(例如,总线接口单元),来使得能够互连到处理器的额外电路。在一实施例中,每个核心单元910耦合到可充当主缓存一致片上互连的一致架构,该互连进而耦合到存储器控制器935。进而,存储器控制器935控制与诸如DRAM之类的存储器(在图9中为了图示的容易而没有示出)的通信。
除了核心单元以外,还有额外的处理引擎存在于处理器内,包括至少一个图形单元920,该图形单元920可包括一个或多个图形处理单元(graphics processing unit,GPU)来执行图形处理以及可能执行图形处理器上的通用操作(所谓的GPGPU操作)。此外,至少一个图像信号处理器925可存在。信号处理器925可被配置为处理从在SoC内部或者在片外的一个或多个捕捉设备接收的传入图像数据。
其他加速器也可存在。在图9的图示中,视频编码器950可执行编码操作,这些操作包括对视频信息的编码和解码,例如为高清晰度视频内容提供硬件加速支持。还可提供显示控制器955来加速显示操作,包括为系统的内部和外部显示器提供支持。此外,安全性处理器945可存在来执行诸如安全引导操作、各种密码操作等等之类的安全性操作。
每个单元可让其功率消耗被经由功率管理器940来控制,该功率管理器940可包括控制逻辑来执行本文描述的各种功率管理技术,包括对硬件反馈信息的动态确定,来传达给调度器。
在一些实施例中,SoC 900还可包括耦合到一致架构的非一致架构,各种外围设备可耦合到该一致架构。一个或多个接口960a-960d使能与一个或多个片外设备的通信。这种通信可经由各种通信协议,例如PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI,以及其他类型的通信协议。虽然在图9的实施例中是在这个高级别示出的,但要理解本发明的范围在这个方面不受限制。
现在参考图10,示出了代表性SoC的框图。在示出的实施例中,SoC1000可以是多核心SoC,该多核心SoC被配置用于低功率操作,以针对包含到智能电话或诸如平板计算机或其他便携式计算设备或载具计算系统之类的其他低功率设备中而加以优化。作为示例,可利用非对称的或不同类型的核心来实现SoC 1000,例如更高功率和/或低功率核心的组合,例如无序核心和有序核心。在不同的实施例中,这些核心可基于ArchitectureTM核心设计或者ARM体系结构设计。在另外的其他实施例中,在给定的SoC中可实现Intel和ARM核心的混合。
从图10中可看出,SoC 1000包括具有多个第一核心10120–10123的第一核心域1010。在一示例中,这些核心可以是低功率核心,例如可经由如本文所述的邮箱接口与相应的核心外围逻辑相接口的有序核心。在一个实施例中,这些第一核心可被实现为ARMCortex A53核心。进而,这些核心耦合到核心域1010的缓存存储器1015。此外,SoC 1000包括第二核心域1020。在图10的图示中,第二核心域1020具有多个第二核心10220–10223。在一示例中,这些核心可以是比第一核心1012的功率消耗更高的核心。在一实施例中,第二核心可以是无序核心,这些无序核心可被实现为ARM Cortex A57核心。进而,这些核心耦合到核心域1020的缓存存储器1025。注意,虽然图10所示的示例在每个域中包括4个核心,但要理解在其他示例中在给定的域中可存在更多或更少核心。
进一步参考图10,还提供了图形域1030,该图形域1030可包括被配置为独立地执行(例如,由核心域1010和1020的一个或多个核心提供的)图形工作负载的一个或多个图形处理单元(GPU)。作为示例,除了提供图形和显示渲染操作以外,GPU域1030还可被用于为各种屏幕大小提供显示支持。
可以看出,各种域耦合到一致互连1040,该一致互连1040在一实施例中可以是缓存一致互连架构,该架构进而耦合到集成存储器控制器1050。在一些示例中,一致互连1040可包括共享的缓存存储器,例如L3缓存。在一实施例中,存储器控制器1050可以是直接存储器控制器以提供与片外存储器的通信的多个通道,例如DRAM的多个通道(在图10中为了图示的容易没有示出)。
在不同的示例中,核心域的数目可变化。例如,对于适合于包含到移动计算设备中的低功率SoC,例如图10中所示的有限数目的核心域可存在。此外,在这种低功率SoC中,包括更高功率核心的核心域1020可具有更少数目的这种核心。例如,在一个实现方式中,可提供两个核心1022来使得能够以降低的功率消耗水平进行操作。此外,不同的核心域也可耦合到中断控制器,以使得能够在不同的域之间进行对工作负载的动态调换。
在另外的其他实施例中,更大数目的核心域以及额外的可选IP逻辑可存在,因为SoC可被缩放到更高性能(以及功率)水平,以便包含到其他计算设备中(例如,桌面型电脑、服务器、高性能计算系统、基站等等)。作为一个这种示例,可提供4个核心域,每个具有给定数目的无序核心。此外,除了可选的GPU支持以外(其作为示例可采取GPGPU的形式),也可提供一个或多个加速器来提供对特定功能(例如,web服务、网络处理、交换等等)的优化硬件支持。此外,输入/输出接口也可存在来将这种加速器耦合到片外组件。
现在参考图11,示出了另一示例SoC的框图。在图11的实施例中,SoC 1100可包括各种电路来针对多媒体应用、通信和其他功能实现高性能。这样,SoC 1100适合于包含到许多种便携设备和其他设备中,例如智能电话、平板计算机、智能TV、载具计算系统,等等。在示出的示例中,SoC 1100包括中央处理器单元(central processor unit,CPU)域1110。在一实施例中,多个个体处理器核心可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核心的四核心处理器。这种处理器可以是同构或异构处理器,例如,低功率和高功率处理器核心的混合。
进而,提供GPU域1120来在一个或多个GPU中执行高级图形处理以应对图形和计算API。除了可发生在多媒体指令的执行期间的高级计算以外,DSP单元1130还可提供一个或多个低功率DSP来应对低功率多媒体应用,例如音乐重放、音频/视频等等。进而,通信单元1140可包括各种组件来经由各种无线协议提供连通性,例如,蜂窝通信(包括3G/4G LTE)、诸如BluetoothTM之类的无线局域协议、IEEE 802.11,等等。
此外,多媒体处理器1150可用于执行对高清晰度视频和音频内容的捕捉和重放,包括对用户姿态的处理。传感器单元1160可包括多个传感器和/或传感器控制器来接口到存在于给定平台中的各种片外传感器。图像信号处理器1170可设有一个或多个分开的ISP来对于来自平台的一个或多个相机的捕捉内容执行图像处理,这些相机包括静态相机和视频相机。
显示处理器1180可提供对与给定像素密度的高清晰度显示器的连接的支持,包括无线地传输内容以便在这种显示器上重放的能力。此外,位置单元1190可包括GPS接收器,该GPS接收器带有对多个GPS星座的支持,以向应用提供利用这种GPS接收器获得的高度准确的定位信息。要理解,虽然在图11的示例中是以这组特定的组件来示出的,但许多变化和替换是可能的。
现在参考图12,示出了可与实施例一起使用的示例系统的框图。可以看出,系统1200可以是智能电话或者其他无线通信器。基带处理器1205被配置为关于要从系统发送或者被系统接收的通信信号执行各种信号处理。进而,基带处理器1205耦合到应用处理器1210,应用处理器1210可以是系统的主CPU,以执行OS和其他系统软件,以及诸如许多公知的社交媒体和多媒体app之类的用户应用。应用处理器1210可包括如本文所述的功率控制器,并且还可被配置为为设备执行多种其他的计算操作。
进而,应用处理器1210可耦合到用户界面/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可耦合到存储器系统,该存储器系统包括非易失性存储器(即,闪速存储器1230)以及系统存储器(即,动态随机访问存储器(dynamic random access memory,DRAM)1235)。还可看出,应用处理器1210还耦合到捕捉设备1240,例如可记录视频和/或静态图像的一个或多个图像捕捉设备。
仍然参考图12,通用集成电路卡(universal integrated circuit card,UICC)1240也耦合到应用处理器1210,该通用集成电路卡1240包括订户身份模块并且可能包括安全存储装置及密码处理器。系统1200还可包括安全性处理器1250,该安全性处理器1250可耦合到应用处理器1210。多个传感器1225可耦合到应用处理器1210以使得能够输入各种感测到的信息,例如加速度计和其他环境信息。音频输出设备1295可提供接口来输出声音,例如以语音通信、播放的或流媒体音频数据等等的形式。
如还图示的,提供了近场通信(near field communication,NFC)无接触接口1260,其经由NFC天线1265在NFC近场中通信。虽然在图12中示出了分开的天线,但要理解,在一些实现方式中,可提供一个天线或者不同组天线来使能各种无线功能。
功率管理集成电路(power management integrated circuit,PMIC)1215耦合到应用处理器1210以执行平台级功率管理。为此,PMIC 1215可向应用处理器1210发出功率管理请求以根据需要进入某些低功率状态。此外,基于平台约束,PMIC 1215也可控制系统1200的其他组件的功率水平。
为了使得通信能够被发送和接收,各种电路可被耦合在基带处理器1205和天线1290之间。具体而言,射频(radio frequency,RF)收发器1270和无线局域网(wirelesslocal area network,WLAN)收发器1275可存在。一般而言,RF收发器1270可用于根据给定的无线通信协议(例如3G或4G无线通信协议)接收和发送无线数据和呼叫,例如根据码分多路接入(code division multiple access,CDMA)、全球移动通信系统(global system formobile communication,GSM)、长期演进(long term evolution,LTE)或其他协议。此外,GPS传感器1280可存在。也可提供其他无线通信,例如对无线电信号(例如AM/FM)和其他信号的接收或发送。此外,经由WLAN收发器1275,也可实现本地无线通信。
现在参考图13,示出了可与实施例一起使用的另一示例系统的框图。在图13的图示中,系统1300可以是移动低功率系统,例如,平板计算机、2:1平板设备、平板手机、或者其他可转换的或独立的平板系统。如图所示,SoC 1310存在并且可被配置为对于该设备作为应用处理器进行操作并且可包括如本文所述的功率控制器。
各种设备可耦合到SoC 1310。在示出的图示中,存储器子系统包括耦合到SoC1310的闪速存储器1340和DRAM 1345。此外,触摸面板1320耦合到SoC 1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连通性,SoC 1310耦合到以太网接口1330。外设中枢(peripheral hub)1325耦合到SoC1310以使能与各种外围设备相接口,例如可通过各种端口或其他连接器中的任何一者耦合到系统1300。
除了SoC 1310内的内部功率管理电路和功能以外,PMIC 1380也耦合到SoC 1310以提供基于平台的功率管理,例如基于系统是被电池1390供电,还是经由AC适配器1395被AC电力供电。除了这个基于电源的功率管理以外,PMIC 1380还可基于环境和使用状况来执行平台功率管理活动。此外,PMIC 1380可以向SoC 1310传达控制和状态信息以引起SoC1310内的各种功率管理动作。
仍然参考图13,为了提供无线能力,WLAN单元1350耦合到SoC 1310并且进而耦合到天线1355。在各种实现方式中,WLAN单元1350可根据一个或多个无线协议来提供通信。
如还图示的,多个传感器1360可耦合到SoC 1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿态传感器。最后,音频编解码器1365耦合到SoC 1310以提供到音频输出设备1370的接口。当然,要理解,虽然在图13中是以这个特定实现方式示出的,但许多变化和替换是可能的。
现在参考图14,示出了诸如笔记本、UltrabookTM或其他小外形参数系统之类的代表性计算机系统的框图。处理器1410在一个实施例中包括微处理器、多核心处理器、多线程处理器、超低电压处理器、嵌入式处理器、或者其他已知的处理元件。在图示的实现方式中,处理器1410充当主处理单元和中央中枢来与系统1400的各种组件中的许多进行通信。作为一个示例,处理器1400被实现为SoC并且可包括如本文所述的功率控制器。
处理器1410在一个实施例中与系统存储器1415通信。作为说明性示例,系统存储器1415是经由多个存储器设备或模块来实现的,以提供给定量的系统存储器。
为了提供对诸如数据、应用、一个或多个操作系统等等之类的信息的持续性存储,大容量存储装置1420也可耦合到处理器1410。在各种实施例中,为了使能更薄和更轻的系统设计以及为了改善系统响应能力,可经由SSD来实现这个大容量存储装置或者可主要利用硬盘驱动器(hard disk drive,HDD)来实现该大容量存储装置,其中较小量的SSD存储充当SSD缓存来使得能够在掉电事件期间对情境状态和其他这种信息进行非易失性存储,从而使得在系统活动重发起时可发生快速加电。图14中还示出的是,闪速设备1422可耦合到处理器1410,例如经由串行外围接口(serial peripheral interface,SPI)。这个闪速设备可提供对系统软件的非易失性存储,包括基本输入/输出软件(basic input/outputsoftware,BIOS)以及系统的其他固件。
各种输入/输出(I/O)设备可存在于系统1400内。具体而言,在图14的实施例中示出的是显示器1424,其可以是还提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可经由显示互连耦合到处理器1410,该显示互连可被实现为高性能图形互连。触摸屏1425可经由另一互连耦合到处理器1410,该另一互连在一实施例中可以是I2C互连。如图14中还示出的,除了触摸屏1425以外,借由触摸的用户输入也可经由触摸板1430发生,该触摸板1430可被配置在机壳内并且也可耦合到与触摸屏1425相同的I2C互连。
为了感知计算和其他的目的,各种传感器可存在于系统内并且可按不同的方式耦合到处理器1410。某些惯性和环境传感器可通过传感器中枢1440(例如,经由I2C互连)耦合到处理器1410。在图14所示的实施例中,这些传感器可包括加速度计1441、环境光传感器(ambient light sensor,ALS)1442、罗盘1443、以及陀螺仪1444。其他环境传感器可包括一个或多个热传感器1446,这些热传感器1446在一些实施例中经由系统管理总线(SMBus)总线耦合到处理器1410。
在图14中还可看出,各种外围设备可经由低引脚数(low pin count,LPC)互连来耦合到处理器1410。在示出的实施例中,各种组件可通过嵌入式控制器1435被耦合。这种组件可包括键盘1436(例如,经由PS2接口耦合)、风扇1437、以及热传感器1439。在一些实施例中,触摸板1430也可经由PS2接口耦合到EC 1435。此外,诸如可信平台模块(trustedplatform module,TPM)1438之类的安全性处理器也可经由这个LPC互连来耦合到处理器1410。
系统1400可通过各种方式与外部设备进行通信,包括无线地进行通信。在图14所示的实施例中,存在各种无线模块,其中每一者可对应于被配置用于特定的无线通信协议的无线电装置。用于诸如近场之类的短距离中的无线通信的一种方式可经由NFC单元1445,该NFC单元1445在一个实施例中可经由SMBus与处理器1410进行通信。注意,经由这个NFC单元1445,彼此近邻的设备可通信。
从图14中还可看出,额外的无线单元可包括其他短距离无线引擎,包括WLAN单元1450和蓝牙单元1452。利用WLAN单元1450,可实现Wi-FiTM通信,而经由蓝牙单元1452,可发生短距离BluetoothTM通信。这些单元可经由给定的链路与处理器1410进行通信。
此外,无线广域通信,例如根据蜂窝或其他无线广域协议的无线广域通信,可经由WWAN单元1456发生,该WWAN单元1456进而可耦合到订户身份模块(subscriber identitymodule,SIM)1457。此外,为了使能对位置信息的接收和使用,GPS模块1455也可存在。注意,在图14所示的实施例中,WWAN单元1456和诸如相机模块1454之类的集成捕捉设备可经由给定的链路通信。
集成相机模块1454可被包含在盖子中。为了提供音频输入和输出,可经由数字信号处理器(digital signal processor,DSP)1460来实现音频处理器,该DSP 1460可经由高清晰度音频(high definition audio,HDA)链路耦合到处理器1410。类似地,DSP 1460可与集成编码器/解码器(CODEC)及放大器1462进行通信,该集成CODEC及放大器1462进而可耦合到输出扬声器1463,该输出扬声器1463可被实现在机壳内。类似地,放大器及CODEC 1462可被耦合以从麦克风1465接收音频输入,该麦克风1465在一实施例中可经由双阵列麦克风(例如,数字麦克风阵列)来实现,以提供高质量音频输入,从而使能对系统内的各种操作的由语音激活的控制。还要注意,音频输出可从放大器/CODEC 1462被提供到耳机插孔1464。虽然在图14的实施例中是以这些特定组件来示出的,但要理解本发明的范围在这个方面不受限制。
实施例可被实现在许多不同的系统类型中。现在参考图15,示出了根据本发明的实施例的系统的框图。如图15所示,多处理器系统1500是点到点互连系统,并且包括经由点到点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580的每一者可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心1574a和1574b和处理器核心1584a和1584b),虽然可能在处理器中可存在多得多的核心。每个处理器可包括PCU 1575、1585或者其他功率管理逻辑来执行如本文所述的基于处理器的功率管理。为此,PCU 1575和1585包括反馈控制电路,以动态地确定相应核心的能力,并且使得这种信息能够被存储并提供给调度器,例如OS调度器,以用于为异构处理器做出更好的调度决策。
仍然参考图15,第一处理器1570还包括存储器控制器中枢(memory controllerhub,MCH)1572和点到点(point-to-point,P-P)接口1576和1578。类似地,第二处理器1580包括MCH 1582和P-P接口1586和1588。如图15所示,MCH 1572和1582将处理器耦合到各自的存储器,即存储器1532和存储器1534,存储器1532和存储器1534可以是在本地附接到各个处理器的系统存储器(例如,DRAM)的一些部分。第一处理器1570和第二处理器1580可分别经由P-P互连1562和1564耦合到芯片组1590。如图15所示,芯片组1590包括P-P接口1594和1598。
此外,芯片组1590包括接口1592来通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合。进而,芯片组1590可经由接口1596耦合到第一总线1516。如图15所示,各种输入/输出(I/O)设备1514可以与总线桥1518一起耦合到第一总线1516,其中总线桥1518将第一总线1516耦合到第二总线1520。各种设备可耦合到第二总线1520,例如包括键盘/鼠标1522、通信设备1526和数据存储单元1528(例如,盘驱动器或者其他大容量存储设备),其中该数据存储单元1528在一个实施例中可包括代码1530。另外,音频I/O 1524可耦合到第二总线1520。实施例可被包含到其他类型的包括移动设备的系统中,该移动设备比如是智能蜂窝电话、平板计算机、上网本、UltrabookTM,等等。
现在参考图16,示出了根据一实施例的调度方法的流程图。更具体而言,调度方法1600可由OS执行,以在包括具有不同能力的核心的异构SoC上调度工作负载。在这里的实施例中,假设SoC包括不同功率消耗水平的核心,例如至少一个大核心,该大核心以比一个或多个低功率核心更高的功率消耗水平进行操作,这些低功率核心以较低的功率消耗水平进行操作。在各种实施例中,这些不同的核心可以是异构设计的。例如,一个或多个大核心可被实现为无序核心,而低功率核心可被实现为有序核心。当然,在其他实施例中,所有的核心可以都是有序或无序核心。在其他情况下,异构性可能是由于在形成SoC的管芯上的工艺变化造成的。作为另一个示例,SoC可能具有所有同构的核心,但由于功率和热约束,硬件可将核心的某个子集与其他相比更多地扼制,从而在这些其他方面相同的核心之间产生性能异构性。在方法1600中,所有的核心都被暴露给OS调度器,该调度器负责确定在哪个核心类型上将调度哪些线程。
在存在有限数量的大核心(例如,1个)的实施例中,异构调度的主要目标是提升具有主导线程的响应性工作负载的性能。通常,这些工作负载具有多个活跃的线程在运行,包括执行后台或系统管理任务的那些线程。调度器的目标是识别对性能最敏感的线程,并且将其调度在大核心上。
异构性能和大核心的使用可能高度取决于可用的功率和热预算。考虑到封装和系统约束,在许多使用条件下,SoC可能会受到功率和热限制。因此,不同核心类型的属性可能是动态的。换句话说,当大核心不受功率或热约束时,它可能具有比小核心更高的性能。然而,当核心受到热限制或者SoC受到功率约束时,大核心性能可能比小核心低。根据一实施例的异构调度使得能够理解这些不同的功率和热约束,以使得调度器能够动态地确定在执行中的任何给定时点,哪个核心类型具有更高的效率和性能。
可以执行方法1600以将线程调度到所选择的核心类型。如图所示,方法1600开始于实现性能需求确定(块1610)。这个性能需求确定可以基于关于线程的各种信息,例如利用率信息、线程的类型(例如,前台与后台)、时延、优先级,等等。更具体而言,在块1610处使用的度量可包括预期的线程运行时间、前台与后台活动、线程优先级和其他特殊情况,例如与已知需要来自系统的响应性的线程相关联的低时延概况(例如,应用启动)。如果基于该信息,确定给定的线程不需要高性能,则控制传递到块1620,在这里线程可以被调度到较小的(例如,当前较低功率的)核心,如硬件反馈所示。
否则,控制传递到块1630,以做出关于线程主导的确定。例如,这种确定可以是该线程是否是要执行的单个线程或者是整个工作负载的单个主导线程。如果不是,则控制传递到块1620,以便在小核心上进行调度。相反,如果确定存在单个线程或者正在经历调度的线程是主导线程,则控制传递到块1640以确定处理器上是否有功率和/或热约束。如果是,则该线程被调度到低功率核心(块1620)。
最后,如果确定没有约束,则控制传递到块1650,在这里可以做出性能可缩放性确定。如本文所述,这个性能可缩放性确定可以至少部分基于从硬件反馈电路1660接收到的硬件反馈信息。在这里的实施例中,硬件反馈电路1660可被实现在诸如PCU之类的功率控制器内。当然,在不同的实施例中,可以在其他位置执行硬件反馈信息的计算。在任何情况下,在块1650处,可以至少部分基于这个硬件反馈信息来做出关于性能可缩放性的确定。如果确定线程是可缩放的,则控制传递到块1670,在这里它被调度到大的(例如,较高功率消耗的)核心。否则,该线程被调度到(例如,当前由硬件反馈确定的)较低功率的核心(块1620)。要理解,虽然在图16的实施例中在这个高级别示出了,但调度方法的许多变化和替换是可能的。
在这里的实施例中,基于硬件反馈信息,可以发生更好的调度决策,以适当地调度线程,以实现更高的性能和/或改善的功率消耗。因此,在一些情形中,基于这个硬件反馈信息,有可能将线程调度到较小的核心,在这里它可能比被调度在较大核心上实现更高的性能。类似地,在一些情形中,有可能将线程调度到大核心,并且提高能量效率,而不是将线程调度在较小的核心上。注意,虽然为了便于论述,只描述了两种不同的核心类型,但在实施例中,给定的处理器或其他SoC可包括多于两种不同类型的核心,这些核心可以提供一系列的功率消耗水平、计算能力等等。
现在参考图17,示出了分别关于小核心和大核心的各种工作负载的核心功率的图示。如图所示,曲线1710与较小的核心相关联,并且曲线1720与较大的核心相关联。直到断点1740为止,低功率核心可以按比大核心更低的功率水平执行给定的工作负载。然而,在断点1740之后,较小的核心对于较少的工作负载输出引发较大的功率消耗。
更具体而言,如图17所示,在第一区域1750中,低功率核心可能比较高功率核心具有更高的效率和性能。换句话说,在第一区域1750中,较小的核心既具有更高的性能,又具有更高的效率。具有落入此区域中的较低性能要求的软件线程从而可被调度在较小的核心上。此外,当SoC受到功率或热限制时,较小的核心比较大的核心具有更高的性能。高性能需求软件线程可以被调度在这个区域中的较小核心之一上。当在此区域中操作时,OS可以只在没有其他核心可用时才在较大的核心上调度工作。在第二区域1760中,较大的核心可具有更高的效率和性能。在第二区域1760中,较大的核心比较小的核心具有更高的性能和更高的效率,因此在这个区域中,高性能需求线程可被调度在较大的核心上。然而,除了在较大的核心上调度性能需求线程以外,在此区域中操作的其他线程也可被调度在较大的核心上,以提高系统效率。一个示例是具有落在此区域中的性能要求的图形工作负载。在第三区域1770中,较大的核心可具有更高的性能(注意,较小的核心不能以这个第三区域的高功率水平进行操作)。在第三区域1770中,较大的核心比较小的核心具有更高的性能,但效率更低。当功率/热预算可用时,具有高性能需求线程的单线程(single-threaded,ST)主导工作负载可被调度在较大的核心上。
现在参考图18,示出了示出不同核心类型之间的比较的S曲线的图示。更具体而言,如图18所示,曲线1800图示了大核心和小核心之间的性能可缩放性比率之间的关系(例如,就每周期的指令而言)。如图所示,在较高的工作负载水平上,存在较高的比率值。较大和较小核心的相对性能和效率也取决于工作负载。它是较大和较小核心之间的工作负载功率/性能可缩放性、系统中的活跃线程的数目以及它们的相对能量性能优先级的函数。工作负载可缩放性进而定义了工作负载功率和性能(例如,就IPC而言)在两种不同的核心类型之间如何缩放。在图示1800中,较大和较小核心之间的平均性能或IPC缩放是2.0倍。在较大和较小核心之间具有更高的性能可缩放性的工作负载一般会将交叉点1810移动到更低的功率包络,而具有更低可缩放性的工作负载将看到较大和较小核心之间的交叉点移动到更高的功率水平。活跃线程的数目和它们的相对能量性能优先级可决定如何在不同的核心之间分配可用功率预算,因此可影响核心类型的选择。例如,对于具有三个活跃线程的工作负载,其中两个是后台活动,一个是性能敏感的前台活动,更多的预算可被分配给单个更高性能的核心,前台线程将被调度到这个核心。如果所有三个线程都具有相等的性能需求,则核心之间的功率预算分配可能导致在三个小核心上调度。
现在参考图19,示出了根据一实施例的硬件反馈接口结构的框图。更具体而言,如图19所示,结构1900是存储如本文所述的硬件反馈信息的表格或其他结构。在实施例中,结构1900可以是基于存储器的结构,例如,存储在诸如DRAM之类的系统存储器内的专用位置。在一个实施例中,HFI存储器区域的大小可以是单个4K存储器页,并且OS可以分配一个4KB页并且将其映射到不可分页的写回(WB)存储器中。如图所示,结构1900包括全局部分1910,该部分可存储包括时间戳计数器1912和变化指示符的信息。在一实施例中,时间戳计数器1912可被实现为8字节(8B)单调递增计数器,该计数器可被OS用来跟踪硬件调度更新或者用于调试目的。在一实施例中,当HFI被更新时,此计数器可被填充以晶体时钟值。OS可以使用给定的TSC/晶体时钟比率将这个计数器转换为时间戳计数器值(TSC)。还示出了,在全局部分1910内可包括性能能力已变化指示符1914和能量效率能力变化指示符1916。在一实施例中,性能能力已变化(performance capability changed,PCH)指示符1914是1比特值,当被设置为1时,该值表明一些核心的性能能力已变化了。在一实施例中,能量效率能力已变化(energy efficiency capability changed,ECH)指示符1916是1比特值,当被设置为1时,该值表明一些核心的能量效率能力已变化了。全局区域的其余部分可被保留用于未来的能力。
如图19中进一步图示的,结构1900还包括多个基于核心的部分19200-1920n。在一实施例中,每个核心存储条目1920可以与给定的逻辑处理器相关联,并且可以为相应的核心存储包括相应的性能能力1924和相应的能量效率能力1926的信息。在一实施例中,每个核心存储条目1920可以是8字节条目,包括关于每个物理核心的以下字段:性能(Perf)(1B),即逻辑处理器的当前性能能力;能量效率(energy efficiency,EE)(1B),即逻辑处理器的当前能量效率能力;以及保留部分。
在一实施例中,硬件反馈接口是基于存储器的。在初始化期间,OS可以枚举硬件反馈支持。如果支持硬件反馈,则OS分配硬件反馈接口(hardware feedback interface,HFI)存储器区域作为非分页连续存储器。一旦此存储器区域被分配,OS就在指针寄存器中写入其物理地址(physical address,PA),并且更新各种寄存器(例如一个或多个特定型号寄存器(model specific register,MSR))中的指示符,以使得硬件开始如本文所述的硬件反馈操作。
一旦硬件反馈被使能,功率控制器就会基于系统工作负载以及功率和热约束来生成硬件反馈信息更新。在一个实施例中,可以使用微代码技术将更新写入到存储器,其可以采取如本文所述的压缩形式。当新的硬件反馈信息可用时,功率控制器可以使用邮箱接口来请求微代码用最新的硬件调度信息来更新HFI存储器区域。微代码读取新信息并且使用HFI区域的布局将其写入到存储器。在另一个实施例中,功率控制器可以直接写入存储器。还有一个实施例可以是,HFI表位于一组存储器映射的控制寄存器中(例如,在功率控制器内)。
各种封装级状态/中断MSR可被用于控制对HFI存储器区域和OS通知的访问。在一实施例中,封装热状态MSR的硬件反馈通知日志指示符可被用于控制对HFI存储器的访问,并且向OS提供硬件反馈更新的状态。当对硬件反馈信息的改变已发生并且被写入到存储器时,这个指示符可被硬件设置。这个设置的指示符是为了通知OS对HFI存储器区域的原子更新,并且在OS清除该指示符之前,它不会再被写入。
当硬件反馈通知日志指示符被设置时,OS可以访问该存储器区域以获得新的硬件反馈信息。OS随后在读取HFI存储器之后清除这个指示符,这样,新的功率或能量效率命令变化会使得功率控制器更新HFI存储器并且再次设置这个指示符。当这个指示符被清除时,硬件拥有该硬件反馈存储器区域,并且存储在那里的信息不能被保证是原子的或一致的。因此,当硬件反馈通知日志指示符被清除时,OS可能不会读取或访问HFI存储器。在一些实施例中,硬件反馈更新可被控制为在每个给定区间(例如,10ms)不发生超过一次,并且仅在硬件反馈发生有意义的变化时发生。
在实施例中,可以提供通知事件,以通知OS,对于硬件反馈处理器能力有变化,并且对HFI存储器区域的新更新是可用的。作为一个示例机制,硬件反馈通知使能指示符可被包括在封装热中断MSR中,以使能硬件反馈通知。当这个指示符被设置时,当封装热状态MSR中的硬件反馈通知日志指示符改变极性时,会生成硬件反馈通知。注意,OS可以使用硬件反馈通知日志指示符来进行流程控制。如果硬件反馈更新和通知过于频繁,以至于OS无法处理并且用于调度,则OS可以延迟清除硬件反馈通知日志指示符,从而防止进一步的硬件反馈更新和通知。
可以通过像CPUID寄存器之类的机制基于枚举来访问每个逻辑处理器的能力信息,以识别逻辑处理器在HFI存储器中的包含处理器能力信息的条目或行的索引。OS使用这个索引来创建逻辑处理器ID和硬件反馈能力信息的索引之间的映射。
在操作中,OS可以清除封装热状态MSR中的硬件反馈通知日志指示符,以请求硬件反馈更新,并且在封装热中断MSR中设置硬件反馈通知使能指示符,如果它想要接收硬件反馈通知的话。一旦状态和通知指示符被设置,OS就在硬件反馈配置MSR中设置使能指示符。这个设置的指示符是一个触发,以使得硬件开始计算如本文所述的硬件反馈。当处理器能力之一发生变化时,功率控制器更新硬件反馈指针MSR所指向的HFI存储器区域,并且生成通知给OS。
现在参考图20,示出了根据一实施例的系统布置的框图。如图20中所示,系统2000包括处理器2010,该处理器2010在一实施例中可以是异构多核处理器,该异构多核处理器在一个实施例中耦合到被实现为DRAM的系统存储器2060。如还图示的,OS 2070在处理器2010上执行。处理器2010至少包括出于代表性目的示出的单个核心2020。核心2020经由邮箱接口2050耦合到PCU 2030,该邮箱接口2050在一实施例中可被实现为微代码邮箱接口。当然,其他接口来使能核心2020和PCU 2030之间的通信是可能的。
如还图示的,处理器2010还包括一组寄存器2040。寄存器2040可包括多种MSR、状态寄存器、配置寄存器,等等。在图20所示的特定实施例中,这种寄存器包括CPUID寄存器2042。有趣的是,CPUID寄存器2042可包括硬件反馈字段,该字段当被设置时指示出处理器能够向OS提供动态硬件反馈信息。硬件反馈指针MSR 2044可包括硬件反馈指针字段来存储由OS写入的指针,以指向存储器中的要存储硬件反馈信息结构的位置。硬件反馈配置MSR2046可存储硬件反馈配置使能字段,该字段在被设置时指示出处理器要执行如本文所述的硬件反馈处理。封装热中断寄存器2048可包括硬件反馈通知使能指示符,以使得能够响应于对硬件反馈信息的更新而触发中断。最后,封装热状态寄存器2049可包括硬件反馈通知日志指示符,当更新的硬件反馈信息被PCU 2030写入时,该指示符可被设置,并且当OS读取更新的信息时该指示符可以被OS重置。
仍然参考图20,PCU 2030包括硬件反馈控制电路2035,该电路可计算硬件反馈信息并且触发将此信息写入到存储器2060。更具体而言,此信息可经由邮箱接口2050被传达到核心2020。进而,核心2020的微代码可接收此硬件反馈信息并且将其写入到系统存储器2060,然后向PCU 2030发送对此信息的写入的确认。
注意,在其他实施例中,可提供直接接口来使得PCU 2030能够将此硬件反馈信息直接写入到系统存储器2060。在实施例中,在被实际写入到存储器之前,硬件反馈信息可被临时缓存为写回信息,例如缓存在处理器的最后一级缓存中。这样,OS 2070或者可从LLC访问硬件反馈信息,如果存在于其中的话,或者可从存储器2060访问硬件反馈信息。要理解,虽然在图20的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图21,示出了根据本发明的实施例的方法的流程图。如图21所示,方法2100是根据一实施例用于在多核心处理器的异构核心之间执行资源分配并且向操作系统提供硬件反馈信息的方法。这样,方法2100可由硬件电路、固件、软件和/或其组合来执行。在特定实施例中,可以至少部分使用处理器的功率控制器中存在的电路来执行方法2100。
如图所示,方法2100开始于从多个电流传感器接收电流传感器信息(块2110)。作为示例,多个核心中的每一个可包括一组电流传感器,以感测核心的给定部分的电流消耗。进而,这些个体的电流传感器可经由专用总线(例如推送总线)耦合在一起。这样的电流传感器可以与每个核心中的一个或多个计数器相关联,从而可以维持电流消耗信息。进而,这个电流消耗信息——例如,采取在给定的评估区间期间处理的来自一个或多个核心的计数值的形式——可以作为电流传感器信息被提供给功率控制器。这个电流传感器信息从而为功率控制器提供了关于每个核心或其他处理电路内的电流消耗水平的准确信息。
仍然参考图21,接下来在块2120处,可以至少部分基于这个电流传感器信息来计算处理器的功率预算。例如,基于所确定的电流消耗水平和处理器的不同核心和其他电路的操作点,可以确定实际的功率消耗水平。进而,这个功率消耗水平可被与配置的功率水平进行比较,例如热设计功率(thermal design power,TDP)水平。从这样的信息,可以确定功率余量。更具体而言,在块2120,功率控制器可以为多核心处理器确定总功率预算。在示例实施例中,注意,这个总功率预算可能不是按实际功率水平(例如,瓦特)的。相反,这个值有可能是一个无单位的值。
接下来,控制传递到块2130,在这里,在多个处理器域间平衡这个功率预算。注意,处理器域可以在相对较高的水平上被隔离,并且在一个实施例中,可包括四个不同的处理器域,即核心域、图形域、互连域和非核心域,其中每一者可以被分配以整体功率预算的一部分。作为一个这样的示例,基于配置信息——无论是静态提供的还是由用户、操作系统或其他调度实体动态提供的,这些处理器域中的每一者可被分配到整体功率预算的给定部分。要理解,基于这些分配的功率预算,功率控制器或其他控制电路可以控制个体处理器域的操作点。
功率控制器可将适当的独立预算分配给处理器的异构核心。对于本文中的异构核心设计,简单地将这个核心功率预算平均分配给不同的核心可能会导致效率低下以及更低的性能和/或更高的功率消耗。相反,利用这里的实施例,当在不同核心类型和/或核心之间分配功率时,可以考虑关于这些异构核心的动态能力的知识。这样,在块2140,功率控制器可以基于一个或多个能量性能偏好值为不同的核心/核心类型缩放核心域功率预算。在一实施例中,这些能量性能偏好(EPP)值可以是通过一个或多个配置寄存器的方式接收的所谓EPP提示。在各种实施例中,可以在封装、核心或线程级别的基础上提供这种EPP信息,以表明用户对最高性能水平或最高能量节约之间的值范围中的给定值的偏好。注意,可能有不同的EPP值与不同的核心/核心类型相关联。
仍然参考图21,控制传递到块2150,在这里,可以基于不同的核心/核心类型中的每一个的经缩放的核心域功率预算来访问功率对性能表,以确定不同核心/核心类型中的每一个的操作点。注意,这个操作点可包括频率和电压中的至少一个。还要理解,在功率管理过程中的这一点,这个操作点是每个核心或核心类型在下一个执行区间(在此也被称为下一个执行周期)期间能够支持的最大性能点。然而,基于如本文所述的进一步处理,此操作点有可能根据例如物理或环境约束而被优化或降低到较低水平。
在一实施例中,这个功率对性能表可包括多个条目,可以使用EPP值作为到表格中的索引来访问其中每个条目。每个这样的条目可包括不同核心类型中的每一者的操作点(例如,频率)的至少一部分。这样,此表格提供了对核心的异构性的指示,从而,该表格表达了核心之间在例如电压/频率特性、电力输送约束、核心的静态功率/性能能力等等方面的体系结构差异。从而,即使不同的核心与共同的EPP值相关联,也可以基于这个功率对性能表中的信息来为不同的核心/核心类型确定不同的操作点。
如下所述,这些操作点可被用于为不同的核心/核心类型设置下一个执行周期的适当电压和频率。此外,如本文所述,此信息可被进一步处理并且被考虑用于将更新的硬件反馈信息传达给OS调度器。
进一步参考图21,控制接下来传递到块2160,在这里这些操作点可以被处理成每核心性能值和/或每核心效率值。这样,在块2160,原始的每核心性能点被作为输入接收,并且被解释为性能/效率措施。在一实施例中,硬件状态反馈信息可被实现为具有两个向量的数据结构:性能和效率,其中每个向量表示针对相对性能和效率的枚举核心的有序列表。
接下来控制传递到菱形2170,在这里,可以确定对于一个或多个核心或核心类型是否发生了超过阈值的硬件状态变化。在一实施例中,这个确定可以基于所确定的每核心性能值和/或效率值以及一个或多个阈值。这样,在菱形2170处,可以确定对功率/热能力的变化的连续跟踪,以使得能够为OS生成有意义的反馈。虽然本发明的范围在这方面不受限制,但有意义的状态变化更新可以由基于当前功率/热预算的核心的性能能力的任何变化来驱动。
在一个实施例中,不同核心类型的相对性能和效率能力可以被分解成三个区域,如图22中的功率与性能关系的曲线图2200所示。可以看出,第一区域2210是性能区域,其中操作可能在具有最高性能的一个或多个高功率消耗核心上。第二区域2220是重排序区域,其中执行可能在具有更高的效率和性能的一个或多个较小核心上。最后,第三区域2230是空闲区域,其中操作可能是在小核心上,可能处于其最低性能状态。此外,图22图示了分别关于第一异构核心(例如,低性能低功率核心)和第二高性能高功率核心的曲线2240和2250。
不同区域之间的转变点可由效率和空闲阈值来标记,这导致了区域2310、2320和2330之间的转移,如图23所示,图23是根据一实施例的多个区域和阈值的图。如图23所示,在性能区域2310中,对于给定的工作负载,大核心具有高性能并且功率效率比小核心更高。在重排序区域2320中,小核心变得最高效,而大核心不那么高效。而在空闲区域2330中,小核心是高效的,而大核心是空闲的。从而,在一实施例中,菱形2170处的确定可以跟踪核心的性能点从曲线图2200中的一个区域到另一个区域的转变,并且在这些情况下更新HGS反馈的状态。
注意,在不同的实施例中,对于反馈更新可以使用中断和基于轮询的机制。在不同情况下,可以使用各种技术来避免频繁的OS更新。例如,可以使用基于定时器的技术,从而每次更新被推送到OS时,就会启动定时器,并且在该定时器到期之后,下一个更新被发送到OS。定时器持续时间可以由软件基于更新的频率、平台功率/性能状态变化率、OS中断处理开销等等来设置。作为另一个示例,可以使用基于取平均的技术,其中基于对计算出的性能/效率估计的取平均来提供反馈。在另外的情况下,可以使用基于滞后的技术,其中,双向阈值用作低通滤波器,对于两个区域之间的转变有不同的阈值,以去除频繁的瞬态。
返回参考图21,如果识别出超过阈值的硬件状态变化,则控制传递到块2180,在这里可以将这个硬件反馈信息报告给OS。有了这个信息,OS调度器可以做出更好的调度决策,例如,关于对用于处理某些任务的适当核心类型的选择的决策。相反,如果没有指示出向OS的报告(如在菱形2170处确定的那样),则方法2100可以对当前的评估区间结束,并且控制传递回到块2110以开始下一个评估区间。要理解,虽然在图21的实施例中在这个高级别示出了,但许多变化和替换是可能的。
通过这里的实施例,消除了EPP/软件依赖性,因为在执行基于EPP的功率预算之前计算了HGS反馈。这确保了即使线程被OS调度进/出,反馈也不会变化。从而,HGS反馈提供了系统的当前功率/热状态,而不考虑调度的线程。在实施例中,这个反馈包括每核心类型功率/性能度量。并且随着对每个核心类型执行的资源分配确定,HGS反馈涵盖了由于体系结构的异构性而产生的所有变化。
在一实施例中,可以使用基于查找表的技术来执行异构核心之间的资源分配。在这个安排中,总核心功率预算可以基于不同核心类型之间的功率/性能差异而被转化为个体核心预算。不同核心类型的差异可被涵盖在查找表中,该查找表反映了基于给定功率预算的操作频率的变化。更具体而言,可以提供功率对性能表。现在参考图24,示出了根据一实施例的功率对性能表2400的框图。如图24中所见,表格2400包括多个条目24100–2410N。可以看出,每个条目2410包括多个字段2412、2414,每个字段用于存储特定核心类型的操作频率。当然,要理解,还可存在额外的字段来提供其他异构核心类型的频率信息。在一实施例中,可以使用经缩放的核心域功率预算来对表格2400进行索引。这样,通过访问功率对性能表2400的给定条目2410,可以为每个核心类型识别给定的操作频率。
在一实施例中,可以基于优化目标(例如,等功率、等性能、信号线程/多线程(ST/MT)性能优先级)在流片前填充表格2400。表格的数值涵盖了核心之间在VF特性、电力输送约束、核心的静态功率/性能能力等等方面的体系结构差异。例如,功率对性能表中的不同数值可以反映出个体核心在给定功率预算下的计算能力,假设执行中的核心类型是同构的。也可以针对等功率来填充这个表格,从而对于给定的功率预算,该表格输出不同核心类型的频率点,以保持个体功率消耗相同。该计算可以对不同核心类型的动态电容(Cdyn)的差异做出静态假设,或者基于工作负载执行来动态预测Cdyn。也可针对等性能来配置该表格,从而对于给定的功率预算,该表格输出不同核心类型的频率点,以保持不同核心所提取的性能相同。这个计算要么对核心之间的IPC差异做出静态假设,要么将动态IPC预测作为计算的输入。还可以针对效率来配置该表格,从而基于系统的VF和热特性,对于给定的功率预算,每个核心类型的高效操作点是不同的。LUT条目可以被填充,以为异构计算场景确保高效的频率点选择。
在一些实施例中,还可以针对处理器的预期功率-性能期望,例如ST/MT性能、吞吐量与响应性目标、效率与突发性能,来优化该表格。而在另外的情况中,可以针对平台依赖性来配置该表格,从而硬件平台约束限制了不同核心类型可以运行的操作点。在这些场景下最高效或性能最高的操作点可以被计算/调谐并且被填充在LUT中。
注意,在其他实施例中,不是进行基于查找表的资源分配,而是可以在运行时动态地确定不同核心类型之间的资源的分配。这个计算可以由软件控制,使用旋钮来控制不同核心类型的相对功率-性能偏向。
在一些实施例中,处理器可包括——例如在功率控制器内——硬件自主功率管理机制。更具体而言,一些处理器提供具有硬件性能状态(P状态)控制器的功率控制器,在一实施例中,该硬件性能状态控制器可以在固件中实现以确定最优的操作频率。通过这里的实施例,不是为所有核心提供单个操作频率,而是可以使用一种技术来为每个不同的核心或核心类型确定独立的最优操作频率,例如,至少部分基于每个核心类型特定的利用率目标。
在实施例中,硬件自主性能状态确定可被用于收敛在基于EPP的目标利用率点上,其中,对于每个不同的核心类型,可能有不同的目标利用率点。为此,实施例可包括利用率查找表,以为不同的核心类型提供不同的目标利用率值。
现在参考图25,示出了根据本发明的实施例的利用率查找表2500的框图。从图25中可见,表格2500包括多个条目25100-2510n。可以看出,每个条目2510包括多个字段2512、2514,每个字段用于存储特定核心类型的目标利用率值。当然,要理解,还可存在额外的字段来提供其他异构核心类型的这种信息。在一实施例中,可以使用当前执行线程的EPP来对表格2500进行索引。这样,通过访问利用率表2500的给定条目2510,可以为每个核心类型识别给定的目标利用率值,这可被硬件自主控制逻辑用于确定操作点。
在一实施例中,这个表格可基于流片前/流片后调谐由每核心类型的目标利用率来填充,并且在一实施例中,可被存储在固件存储器中。通过提供用于确定基于硬件的性能状态确定的利用率表,可以确定最优操作频率点,即使不同的核心在例如每周期指令方面具有不同的性能能力。注意,在其他实施例中,可以基于功率性能偏向或者工作负载类型来动态地计算不同核心类型的目标利用率值。在这种情况下,每核心利用率目标可以是当前运行的任务和核心IPC的函数。
如本文所述,可以按不同方式确定性能和效率值。在一些情况下,可以基于本文描述的不同参数来执行对这些值的动态计算。在其他情况下,可以执行基于查找表的技术,其中,至少部分基于性能(例如,频率*IPC)和能量效率(例如,每指令能量(energy perinstruction,EPI)),可以获得性能和效率值。现在参考图26,示出了根据一实施例的查找表的框图。第一查找表2600可被用于确定效率值。查找表2600包括多个条目26100–2610N。可以看出,每个条目2610包括第一字段2612,用于存储操作频率,它可被用作进入该表格的索引,以及第二字段2614,用于存储相应操作频率的效率值。在一实施例中,可以对每个核心类型实现表格2600。并且如图所示,在更高频率下的操作会导致更高的效率值,意味着更高效的操作。第二查找表2650可被用于确定性能值。查找表2650包括多个条目26600–2660N。可以看出,每个条目2660包括第一字段2662,用于存储操作频率,它可被用作进入该表格的索引,以及第二字段2664,用于存储相应操作频率的性能值。在一实施例中,可以对每个核心类型实现表格2650。并且如图所示,在更高频率下的操作会导致更高的性能值,意味着更高性能的操作。
现在参考图27,示出了根据本发明的实施例的电压-频率查找表的框图。如图27所示,表格2700包括多个条目27100-2710N,每个条目包括一个频率点和不同核心类型的相应电压。从而,在不同的核心类型被不同地配置为对于共同的频率点在不同的电压下操作的情况下,可以在给定条目的字段2714和2716中提供这些不同的电压。注意,可以使用如字段2712中所示的为每个核心类型确定的操作频率来访问表格2700,从而为每个核心类型获得最优电压。在一实施例中,由硬件自主机制为不同核心类型选择的频率可被用作进入这个电压-频率表的索引。注意,在某些实施例中,如图27中所示的LUT只提供给定频率的近似电压水平,因为最终操作点取决于若干个其他因素,例如温度、电流极限,等等。在其他情况下,也可以通过也将这些因素考虑在内来填充该表格。
在这些不同的核心类型耦合到共享电压轨的实施例中,可以选择最大操作电压来用于控制一个或多个电压调节器,以向共享电力轨提供这个最大操作电压。并且,如下文关于图28所描述的,与所确定的较低操作电压相关联的核心类型有可能以较高的机会频率(即包括该核心类型的这个电压的条目的电压-频率表的频率)进行操作。为此,除了处理核心的异构性以外,所选频率点的最优性还可取决于平台约束,例如不同的核心类型共享共同的电压轨的情况。在选择最终操作点时,可以考虑到这种约束。
现在参考图28,示出了根据本发明的另一实施例的方法的流程图。更具体而言,方法2800是根据一实施例用于控制耦合到共同电力轨的多个核心的操作电压/操作频率的方法。这样,可以至少部分使用处理器的功率控制器中存在的电路来执行方法2800。
如图所示,方法2800开始于接收不同核心和/或核心类型的操作点(块2810)。例如,这些操作点(例如,如在图21的块2150处确定的)可被提供给功率控制器的性能控制电路,该电路可使用此信息来为下一个执行周期确定异构核心的适当操作点。控制接下来传递到块2820,在这里,可以基于每个不同核心类型的操作点来访问电压-频率表。也就是说,不是为所有核心执行对这个电压-频率表的单个访问,而是每个不同的核心/核心类型可以基于其相应的操作点触发对这个表格的不同访问。以这种方式,可以访问特定于每个核心类型的多个操作电压。
仍然参考图28,控制接下来传递到块2830,在这里,基于所访问的电压-频率表的条目,可以为每个不同的核心或核心类型获得电压。更具体而言,这个表格可包括多个条目,每个条目包括不同核心类型在相应操作点(例如,频率)的电压。这样,操作点的频率可被用于在表格中进行索引,以获得每个不同核心类型的电压。
由于是用不同核心或核心类型的多个不同操作点来访问这个表格的,因此可以获得多个电压。这样,在块2840,可以识别所获得的电压中的最大电压。注意,这个最大电压是所获得的电压中的最高电压,并且是要被用于控制一个或多个电压调节器的电压,以将这个最大电压作为操作电压提供给公共电压轨,该电压轨可能为多个核心(包括一个或多个异构核心)供电。
由于可能有至少一个核心将在比为该核心获得的更高的操作电压下工作,在菱形2850处,可以确定是否可以修改此核心——即与所获得的较低电压相关联的核心——的频率。在一实施例中,在确定是否允许修改与所获得的较低电压相关联的这个核心或核心类型的频率时,可以考虑策略信息。作为示例,这些策略可包括管理性能需求策略、效率策略和/或基于工作负载需求的策略。利用最大性能需求策略,所有核心的操作点被设置为等于最大性能需求的核心类型。这个策略假设性能为驱动度量。利用效率策略,在给定最大电压的情况下,操作点被设置为每个核心的最大可行频率。这个策略为核心设置了最高效的操作点,并且假设所有的任务都会迅速地竞相停止。利用工作负载需求策略,基于每个核心类型上的工作负载的能量效率和/或性能需求来选择操作点。例如,在所有核心共享同一电压轨的场景中,以最高可行频率运行空闲循环只会浪费功率预算。因此,这个核心可能以最低可能频率点运行。相反,计算任务可以通过在最高可行频率点上运行而更快地竞相停止,因此通过进入休眠状态来节省功率。每个核心上的工作负载需求之间的这种区别可以通过硬件算法来得出,或者可以作为来自OS的输入。
如果确定要修改频率,则控制传递到块2860,在这里可以基于最大电压再次访问电压-频率表。更具体而言,最大电压可被用于访问电压-频率表的与这个最大电压相关联的条目,以使得核心具有改变后的频率。然后从这个条目中,可以获得这个核心类型的更新后频率,即更高的操作频率。
在任何情况下,从菱形2850(如果没有基于策略信息指示出修改)或者块2860,控制传递到块2870。在块2870,每个核心或核心类型被控制为使用所确定的电压和频率输入在最终的操作点上操作。这样,功率控制器可以发送适当的控制信号,以使得时钟生成电路以最终确定的操作频率水平向每个核心或核心类型提供时钟信号,并且使得电压生成电路(包括一个或多个电压调节器)以最终确定的操作电压水平向核心或核心类型提供操作电压。要理解,虽然在图28的实施例中在这个高级别示出了,但许多变化和替换是可能的。
以下示例涉及进一步实施例。
在一个示例中,一种处理器包括:第一核心,具有第一大小并且以第一功率消耗水平进行操作;至少一个第二核心,具有第二大小并且以第二功率消耗水平进行操作,所述第一大小大于所述第二大小并且所述第一功率消耗水平大于所述第二功率消耗水平;以及功率控制器,包括资源分配电路。所述资源分配电路用于:为所述第一核心和所述至少一个第二核心接收功率预算,并且至少部分基于至少一个能量性能偏好值来缩放所述功率预算以确定经缩放的功率预算;至少部分基于所述经缩放的功率预算来为所述第一核心确定第一最大操作点并且为所述至少一个第二核心确定第二最大操作点;至少部分基于所述第一核心的第一最大操作点为所述第一核心确定第一效率值并且至少部分基于所述至少一个第二核心的第二最大操作点为所述至少一个第二核心确定第二效率值;并且基于所述第一效率值和所述第二效率值向操作系统调度器报告硬件状态变化。
在一示例中,所述功率控制器用于在所述硬件状态变化超过阈值时报告所述硬件状态变化,否则不报告所述硬件状态变化。
在一示例中,所述阈值包括所述处理器的操作区域在第一性能/效率区域和第二性能/效率区域之间的变化。
在一示例中,所述操作系统调度器用于:当所述硬件状态变化指示出所述第一性能/效率区域包括性能区域时将第一工作负载调度到所述第一核心;并且当所述硬件状态变化指示出所述第二性能/效率区域包括重排序区域时将所述第一工作负载调度到所述至少一个第二核心。
在一示例中,所述功率控制器用于在从上次向所述操作系统调度器报告所述硬件状态变化起的预定时间之后报告所述硬件状态变化。
在一示例中,所述功率控制器还包括电压控制电路,来为所述第一核心确定第一操作电压并且为所述至少一个第二核心确定第二操作电压,并且控制与所述第一核心和所述至少一个第二核心相耦合的共同电压调节器以所述第一操作电压和所述第二操作电压中的最大操作电压进行操作。
在一示例中,所述功率控制器还包括频率控制电路来接收策略信息,并且至少部分基于所述策略信息,增大所述第一核心和所述至少一个第二核心中与所述第一操作电压和所述第二操作电压中的最小一个相关联的核心的操作频率。
在一示例中,所述功率控制器还包括多个表格,所述多个表格包括:第一表格,包括多个第一条目,每个第一条目包括所述第一核心的操作点的至少一部分和所述至少一个第二核心的操作点的至少一部分,所述第一表格是利用所述经缩放的功率预算来索引的;第二表格,包括多个第二条目,每个第二条目包括所述第一核心的目标利用率和所述至少一个第二核心的目标利用率,所述第二表格是利用与至少一个线程相关联的能量性能偏好值来索引的;以及第三表格,包括多个第三条目,每个第三条目包括所述第一核心的操作电压和所述至少一个第二核心的操作电压,所述第三表格是利用为所述第一核心和所述至少一个第二核心中的至少一者确定的操作频率来索引的。
在一示例中,所述功率控制器用于:至少部分基于电流传感器信息来计算处理器功率预算;并且将所述处理器功率预算平衡到包括所述第一核心和所述至少一个第二核心的功率预算在内的多个处理器域功率预算中。
在另一示例中,一种方法包括:基于为处理器的第一核心确定的第一操作点,从电压-频率表获得所述第一核心的第一操作电压的值,所述处理器包括所述第一核心和至少一个第二核心;基于为所述至少一个第二核心确定的第二操作点,从所述电压-频率表获得所述至少一个第二核心的第二操作电压的值,所述第二操作电压小于所述第一操作电压;使得与共同电力轨相耦合的电压调节器向与所述第一核心和所述至少一个第二核心相耦合的所述共同电力轨提供所述第一操作电压;并且使得与所述至少一个第二核心相耦合的时钟生成电路以第二操作频率向所述至少一个第二核心提供时钟信号,所述第二操作频率不同于所述第二操作点的操作频率。
在一示例中,所述方法还包括:基于表明所述至少一个第二核心能够以机会性操作频率进行操作的策略信息,来确定使得所述时钟生成电路以所述第二操作频率提供所述时钟信号。
在一示例中,所述方法还包括:基于阻止所述至少一个第二核心以机会性操作频率进行操作的策略信息,来阻止所述时钟生成电路以所述第二操作频率提供所述时钟信号;并且使得所述时钟生成电路以所述第二操作点的操作频率向所述至少一个第二核心提供所述时钟信号。
在一示例中,所述方法还包括:基于所述第一操作点访问所述电压-频率表的第一条目以获得所述第一核心的第一操作电压的值;并且基于所述第一操作电压的值访问所述电压-频率表的另一条目以获得所述第二操作频率。
在一示例中,所述方法还包括向操作系统调度器报告硬件状态变化信息,所述硬件状态变化信息包括所述第一核心和所述至少一个第二核心的效率值和性能值中的至少一者。
在一示例中,所述方法还包括:至少部分基于为所述第一核心确定的所述第一操作点来为所述第一核心确定所述效率值;并且至少部分基于为所述第二核心确定的所述第二操作点来为所述第二核心确定所述效率值。
在一示例中,所述方法还包括:至少部分基于为所述第一核心确定的所述第一操作点来为所述第一核心确定所述性能值;并且至少部分基于为所述第二核心确定的所述第二操作点来为所述第二核心确定所述性能值。
在一示例中,所述方法还包括:利用为所述第一核心确定的所述第一操作点和为所述第二核心确定的所述第二操作点的至少一部分来访问查找表,以为所述第一核心确定所述效率值并且为所述第二核心确定所述效率值。
在另一示例中,一种包括指令的计算机可读介质用于执行如上述示例中的任何一者所述的方法。
在另外一个示例中,一种包括数据的计算机可读介质被至少一个机器用来制作至少一个集成电路以执行如上述示例中的任何一者所述的方法。
在另外一个示例中,一种装置,包括用于执行如上述示例中的任何一者所述的方法的装置。
在另一示例中,一种系统,包括处理器,该处理器具有:第一核心,具有第一大小并且以第一功率消耗水平进行操作;至少一个第二核心,具有第二大小并且以第二功率消耗水平进行操作,所述第一大小大于所述第二大小并且所述第一功率消耗水平大于所述第二功率消耗水平;以及功率控制器,包括资源分配电路。所述资源分配电路用于:为所述第一核心和所述至少一个第二核心接收功率预算,并且至少部分基于至少一个能量性能偏好值来缩放所述功率预算以确定经缩放的功率预算;至少部分基于所述经缩放的功率预算为所述第一核心确定包括第一操作频率和第一操作电压的第一操作点并且为所述至少一个第二核心确定包括第二操作频率和第二操作电压的第二操作点,所述第一操作电压大于所述第二操作电压;使得与共同电力轨相耦合的电压调节器向所述共同电力轨提供所述第一操作电压,所述共同电力轨与所述第一核心和所述至少一个第二核心相耦合;并且使得与所述至少一个第二核心相耦合的时钟生成电路以第三操作频率向所述至少一个第二核心提供时钟信号,所述第三操作频率不同于所述第二操作频率。所述系统还可包括与所述处理器相耦合的动态随机访问存储器。
在一示例中,所述功率控制器用于:至少部分基于所述第一核心的第一操作点为所述第一核心确定第一效率值并且至少部分基于所述至少一个第二核心的第二操作点为所述至少一个第二核心确定第二效率值;并且当硬件状态变化超过阈值时基于所述第一效率值和所述第二效率值向操作系统调度器报告所述硬件状态变化,否则不报告所述硬件状态变化。
在一示例中,所述功率控制器用于接收策略信息,并且至少部分基于所述策略信息,使得所述时钟生成电路向所述至少一个第二核心提供所述第三操作频率。
在一示例中,所述功率控制器用于接收第二策略信息,并且至少部分基于所述第二策略信息,使得所述时钟生成电路向所述至少一个第二核心提供所述第二操作频率,所述第三操作频率包括机会性操作频率,所述第二策略信息阻止所述至少一个第二核心以所述机会性操作频率进行操作。
要理解,上述示例的各种组合是可能的。
注意,在本文中可互换使用术语“电路”和“电子线路”。如本文所使用的,这些术语和术语“逻辑”用于单独地或者按任何组合提及模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路、和/或任何其他类型的物理硬件组件。实施例可被用于许多不同类型的系统中。例如,在一个实施例中,通信设备可被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可指向其他类型的用于处理指令的装置,或者包括指令的一个或多个机器可读介质,这些指令响应于在计算设备上被执行而使得该设备实现本文描述的一个或多个方法和技术。
实施例可被实现在代码中并且可被存储在其上存储有指令的非暂态存储介质上,所述指令可用于将系统编程为执行这些指令。实施例还可被实现在数据中并且可被存储在非暂态存储介质上,该存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路来执行一个或多个操作。还有另外的实施例可被实现在包括信息的计算机可读存储介质中,所述信息当被制造到SoC或其他处理器中时将配置该SoC或其他处理器来执行一个或多个操作。存储介质可以包括但不限于:任何类型的盘,包括软盘,光盘,固态驱动器(solid state drive,SSD),致密盘只读存储器(compact disk read-only memory,CD-ROM),可改写致密盘(compact disk rewritable,CD-RW),以及磁光盘;半导体设备,比如只读存储器(read-only memory,ROM),随机访问存储器(random access memory,RAM),比如动态随机访问存储器(dynamic random access memory,DRAM),静态随机访问存储器(static random access memory,SRAM),可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);磁卡或光卡;或者任何其他类型的适用于存储电子指令的介质。
虽然已关于有限数目的实施例描述了本发明,但本领域技术人员将会明白从这些实施例进行的许多修改和变化。希望所附权利要求覆盖落在本发明的真实精神和范围内的所有这种修改和变化。
Claims (25)
1.一种处理器,包括:
第一核心,具有第一大小并且以第一功率消耗水平进行操作;
至少一个第二核心,具有第二大小并且以第二功率消耗水平进行操作,所述第一大小大于所述第二大小并且所述第一功率消耗水平大于所述第二功率消耗水平;以及
功率控制器,包括资源分配电路,用于:
为所述第一核心和所述至少一个第二核心接收功率预算,并且至少部分基于至少一个能量性能偏好值来缩放所述功率预算以确定经缩放的功率预算;
至少部分基于所述经缩放的功率预算来为所述第一核心确定第一最大操作点并且为所述至少一个第二核心确定第二最大操作点;
至少部分基于所述第一核心的第一最大操作点为所述第一核心确定第一效率值并且至少部分基于所述至少一个第二核心的第二最大操作点为所述至少一个第二核心确定第二效率值;并且
基于所述第一效率值和所述第二效率值向操作系统调度器报告硬件状态变化。
2.如权利要求1所述的处理器,其中,所述功率控制器用于在所述硬件状态变化超过阈值时报告所述硬件状态变化,否则不报告所述硬件状态变化。
3.如权利要求2所述的处理器,其中,所述阈值包括所述处理器的操作区域在第一性能/效率区域和第二性能/效率区域之间的变化。
4.如权利要求3所述的处理器,其中,所述操作系统调度器用于:
当所述硬件状态变化指示出所述第一性能/效率区域包括性能区域时将第一工作负载调度到所述第一核心;并且
当所述硬件状态变化指示出所述第二性能/效率区域包括重排序区域时将所述第一工作负载调度到所述至少一个第二核心。
5.如权利要求1所述的处理器,其中,所述功率控制器用于在从上次向所述操作系统调度器报告所述硬件状态变化起的预定时间之后报告所述硬件状态变化。
6.如权利要求1所述的处理器,其中,所述功率控制器还包括电压控制电路,来为所述第一核心确定第一操作电压并且为所述至少一个第二核心确定第二操作电压,并且控制与所述第一核心和所述至少一个第二核心相耦合的共同电压调节器以所述第一操作电压和所述第二操作电压中的最大操作电压进行操作。
7.如权利要求6所述的处理器,其中,所述功率控制器还包括频率控制电路来接收策略信息,并且至少部分基于所述策略信息,增大所述第一核心和所述至少一个第二核心中与所述第一操作电压和所述第二操作电压中的最小一个相关联的核心的操作频率。
8.如权利要求1至7中的任何一项所述的处理器,其中,所述功率控制器还包括多个表格,所述多个表格包括:
第一表格,包括多个第一条目,每个第一条目包括所述第一核心的操作点的至少一部分和所述至少一个第二核心的操作点的至少一部分,所述第一表格是利用所述经缩放的功率预算来索引的;
第二表格,包括多个第二条目,每个第二条目包括所述第一核心的目标利用率和所述至少一个第二核心的目标利用率,所述第二表格是利用与至少一个线程相关联的能量性能偏好值来索引的;以及
第三表格,包括多个第三条目,每个第三条目包括所述第一核心的操作电压和所述至少一个第二核心的操作电压,所述第三表格是利用为所述第一核心和所述至少一个第二核心中的至少一者确定的操作频率来索引的。
9.如权利要求1至7中的任何一项所述的处理器,其中,所述功率控制器用于:
至少部分基于电流传感器信息来计算处理器功率预算;并且
将所述处理器功率预算平衡到包括所述第一核心和所述至少一个第二核心的功率预算在内的多个处理器域功率预算中。
10.一种方法,包括:
基于为处理器的第一核心确定的第一操作点,从电压-频率表获得所述第一核心的第一操作电压的值,所述处理器包括所述第一核心和至少一个第二核心;
基于为所述至少一个第二核心确定的第二操作点,从所述电压-频率表获得所述至少一个第二核心的第二操作电压的值,所述第二操作电压小于所述第一操作电压;
使得与共同电力轨相耦合的电压调节器向所述共同电力轨提供所述第一操作电压,所述共同电力轨与所述第一核心和所述至少一个第二核心相耦合;并且
使得与所述至少一个第二核心相耦合的时钟生成电路以第二操作频率向所述至少一个第二核心提供时钟信号,所述第二操作频率不同于所述第二操作点的操作频率。
11.如权利要求10所述的方法,还包括:基于表明所述至少一个第二核心能够以机会性操作频率进行操作的策略信息,来确定使得所述时钟生成电路以所述第二操作频率提供所述时钟信号。
12.如权利要求10所述的方法,还包括:
基于阻止所述至少一个第二核心以机会性操作频率进行操作的策略信息,来阻止所述时钟生成电路以所述第二操作频率提供所述时钟信号;并且
使得所述时钟生成电路以所述第二操作点的操作频率向所述至少一个第二核心提供所述时钟信号。
13.如权利要求10所述的方法,还包括:
基于所述第一操作点访问所述电压-频率表的第一条目以获得所述第一核心的第一操作电压的值;并且
基于所述第一操作电压的值访问所述电压-频率表的另一条目以获得所述第二操作频率。
14.如权利要求10所述的方法,还包括向操作系统调度器报告硬件状态变化信息,所述硬件状态变化信息包括所述第一核心和所述至少一个第二核心的效率值和性能值中的至少一者。
15.如权利要求14所述的方法,还包括:
至少部分基于为所述第一核心确定的所述第一操作点来为所述第一核心确定所述效率值;并且
至少部分基于为所述第二核心确定的所述第二操作点来为所述第二核心确定所述效率值。
16.如权利要求14所述的方法,还包括:
至少部分基于为所述第一核心确定的所述第一操作点来为所述第一核心确定所述性能值;并且
至少部分基于为所述第二核心确定的所述第二操作点来为所述第二核心确定所述性能值。
17.如权利要求15所述的方法,还包括:利用为所述第一核心的至少一者确定的所述第一操作点和为所述第二核心确定的所述第二操作点的至少一部分来访问查找表,以为所述第一核心确定所述效率值并且为所述第二核心确定所述效率值。
18.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令当被执行时,实现如权利要求10至17中的任何一项中要求保护的方法。
19.一种装置,包括用于执行如权利要求10至17中的任何一项中要求保护的方法的装置。
20.一种系统,包括:
处理器,包括:
第一核心,具有第一大小并且以第一功率消耗水平进行操作;
至少一个第二核心,具有第二大小并且以第二功率消耗水平进行操作,所述第一大小大于所述第二大小并且所述第一功率消耗水平大于所述第二功率消耗水平;以及
功率控制器,包括资源分配电路,用于:
为所述第一核心和所述至少一个第二核心接收功率预算,并且至少部分基于至少一个能量性能偏好值来缩放所述功率预算以确定经缩放的功率预算;
至少部分基于所述经缩放的功率预算,为所述第一核心确定包括第一操作频率和第一操作电压的第一操作点并且为所述至少一个第二核心确定包括第二操作频率和第二操作电压的第二操作点,所述第一操作电压大于所述第二操作电压;
使得与共同电力轨相耦合的电压调节器向所述共同电力轨提供所述第一操作电压,所述共同电力轨与所述第一核心和所述至少一个第二核心相耦合;并且
使得与所述至少一个第二核心相耦合的时钟生成电路以第三操作频率向所述至少一个第二核心提供时钟信号,所述第三操作频率不同于所述第二操作频率;以及
与所述处理器相耦合的动态随机访问存储器。
21.如权利要求20所述的系统,其中,所述功率控制器用于:
至少部分基于所述第一核心的第一操作点为所述第一核心确定第一效率值,并且至少部分基于所述至少一个第二核心的第二操作点为所述至少一个第二核心确定第二效率值;并且
当硬件状态变化超过阈值时基于所述第一效率值和所述第二效率值向操作系统调度器报告所述硬件状态变化,否则不报告所述硬件状态变化。
22.如权利要求20所述的系统,其中,所述功率控制器用于接收策略信息,并且至少部分基于所述策略信息,使得所述时钟生成电路向所述至少一个第二核心提供所述第三操作频率。
23.一种处理器,包括:
第一核心装置,具有第一大小并且用于以第一功率消耗水平进行操作;
至少一个第二核心装置,具有第二大小并且用于以第二功率消耗水平进行操作,所述第一大小大于所述第二大小并且所述第一功率消耗水平大于所述第二功率消耗水平;以及
功率控制装置,包括资源分配装置,用于:
为所述第一核心装置和所述至少一个第二核心装置接收功率预算,并且至少部分基于至少一个能量性能偏好值来缩放所述功率预算以确定经缩放的功率预算;
至少部分基于所述经缩放的功率预算来为所述第一核心装置确定第一最大操作点并且为所述至少一个第二核心装置确定第二最大操作点;
至少部分基于所述第一核心装置的第一最大操作点为所述第一核心装置确定第一效率值,并且至少部分基于所述至少一个第二核心装置的第二最大操作点为所述至少一个第二核心装置确定第二效率值;并且
基于所述第一效率值和所述第二效率值向操作系统调度器报告硬件状态变化。
24.如权利要求23所述的处理器,其中,所述功率控制装置用于在所述硬件状态变化超过阈值时报告所述硬件状态变化,否则不报告所述硬件状态变化。
25.如权利要求24所述的处理器,其中,所述阈值包括所述处理器的操作区域在第一性能/效率区域和第二性能/效率区域之间的变化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/554,940 US11698812B2 (en) | 2019-08-29 | 2019-08-29 | System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor |
US16/554,940 | 2019-08-29 | ||
PCT/US2020/043978 WO2021040951A1 (en) | 2019-08-29 | 2020-07-29 | System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114207597A true CN114207597A (zh) | 2022-03-18 |
Family
ID=74679630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080055301.8A Pending CN114207597A (zh) | 2019-08-29 | 2020-07-29 | 用于向异构处理器中的操作系统提供硬件状态反馈的系统、装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11698812B2 (zh) |
EP (1) | EP4022419A4 (zh) |
CN (1) | CN114207597A (zh) |
WO (1) | WO2021040951A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102020134681A1 (de) | 2020-01-31 | 2021-08-05 | Intel Corporation | Vorrichtungen, verfahren und systeme für anweisungen zum anfordern eines verlaufs-resets eines prozessorkerns |
US11436018B2 (en) * | 2020-01-31 | 2022-09-06 | Intel Corporation | Apparatuses, methods, and systems for instructions to request a history reset of a processor core |
US11709536B2 (en) * | 2020-06-26 | 2023-07-25 | Advanced Micro Devices, Inc. | Multi-die system performance optimization |
US20210216377A1 (en) * | 2021-03-26 | 2021-07-15 | Intel Corporation | Methods and apparatus for power sharing between discrete processors |
TW202318151A (zh) * | 2021-09-22 | 2023-05-01 | 美商高通公司 | 處理器集群內的動態電壓和頻率縮放(dvfs) |
US11797045B2 (en) | 2021-09-22 | 2023-10-24 | Qualcomm Incorporated | Dynamic voltage and frequency scaling (DVFS) within processor clusters |
CN115016885B (zh) * | 2021-11-19 | 2023-11-24 | 荣耀终端有限公司 | 虚拟机垃圾回收运行方法及电子设备 |
US20230418350A1 (en) * | 2022-06-27 | 2023-12-28 | Dell Products L.P. | Programmable biasing of operating frequencies for optimal power scaling |
US20240193062A1 (en) * | 2022-12-07 | 2024-06-13 | Dell Products, L.P. | Burst power limit control in heterogeneous computing platforms |
US12093096B2 (en) * | 2022-12-15 | 2024-09-17 | Qualcomm Incorporated | Ruler-follower dynamic voltage and frequency scaling schemes for integrated circuit components |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163153A (en) | 1989-06-12 | 1992-11-10 | Grid Systems Corporation | Low-power, standby mode computer |
US5522087A (en) | 1994-03-22 | 1996-05-28 | Verifone Inc. | System for selectively operating in different modes depending upon receiving signal from a host computer within a time window upon power up |
US5590341A (en) | 1994-09-30 | 1996-12-31 | Intel Corporation | Method and apparatus for reducing power consumption in a computer system using ready delay |
US5621250A (en) | 1995-07-31 | 1997-04-15 | Ford Motor Company | Wake-up interface and method for awakening an automotive electronics module |
US5931950A (en) | 1997-06-17 | 1999-08-03 | Pc-Tel, Inc. | Wake-up-on-ring power conservation for host signal processing communication system |
US6823516B1 (en) | 1999-08-10 | 2004-11-23 | Intel Corporation | System and method for dynamically adjusting to CPU performance changes |
US7539885B2 (en) | 2000-01-13 | 2009-05-26 | Broadcom Corporation | Method and apparatus for adaptive CPU power management |
US7010708B2 (en) | 2002-05-15 | 2006-03-07 | Broadcom Corporation | Method and apparatus for adaptive CPU power management |
JP2001318742A (ja) | 2000-05-08 | 2001-11-16 | Mitsubishi Electric Corp | コンピュータシステムおよびコンピュータ読み取り可能な記録媒体 |
KR100361340B1 (ko) | 2000-05-15 | 2002-12-05 | 엘지전자 주식회사 | 씨피유 클럭 제어 방법 |
US6792392B1 (en) | 2000-06-30 | 2004-09-14 | Intel Corporation | Method and apparatus for configuring and collecting performance counter data |
US6748546B1 (en) | 2000-09-26 | 2004-06-08 | Sun Microsystems, Inc. | Method and apparatus for reducing power consumption |
US6829713B2 (en) | 2000-12-30 | 2004-12-07 | Intel Corporation | CPU power management based on utilization with lowest performance mode at the mid-utilization range |
US7058824B2 (en) | 2001-06-15 | 2006-06-06 | Microsoft Corporation | Method and system for using idle threads to adaptively throttle a computer |
US20030061383A1 (en) | 2001-09-25 | 2003-03-27 | Zilka Anthony M. | Predicting processor inactivity for a controlled transition of power states |
US7111179B1 (en) | 2001-10-11 | 2006-09-19 | In-Hand Electronics, Inc. | Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters |
US6996728B2 (en) | 2002-04-26 | 2006-02-07 | Hewlett-Packard Development Company, L.P. | Managing power consumption based on utilization statistics |
US7051227B2 (en) | 2002-09-30 | 2006-05-23 | Intel Corporation | Method and apparatus for reducing clock frequency during low workload periods |
US6898689B2 (en) | 2002-11-15 | 2005-05-24 | Silicon Labs Cp, Inc. | Paging scheme for a microcontroller for extending available register space |
US7043649B2 (en) | 2002-11-20 | 2006-05-09 | Portalplayer, Inc. | System clock power management for chips with multiple processing modules |
US6971033B2 (en) | 2003-01-10 | 2005-11-29 | Broadcom Corporation | Method and apparatus for improving bus master performance |
US7089443B2 (en) | 2003-01-23 | 2006-08-08 | University Of Rochester | Multiple clock domain microprocessor |
JP4061492B2 (ja) | 2003-02-10 | 2008-03-19 | ソニー株式会社 | 情報処理装置および消費電力制御方法 |
US7093147B2 (en) | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7272732B2 (en) | 2003-06-30 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Controlling power consumption of at least one computer system |
TW200502847A (en) | 2003-07-08 | 2005-01-16 | Benq Corp | Control device and method for reducing number of interrupts in a processor |
US7146514B2 (en) | 2003-07-23 | 2006-12-05 | Intel Corporation | Determining target operating frequencies for a multiprocessor system |
US7272730B1 (en) | 2003-07-31 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform |
US7194643B2 (en) | 2003-09-29 | 2007-03-20 | Intel Corporation | Apparatus and method for an energy efficient clustered micro-architecture |
US7770034B2 (en) | 2003-12-16 | 2010-08-03 | Intel Corporation | Performance monitoring based dynamic voltage and frequency scaling |
US20070156992A1 (en) | 2005-12-30 | 2007-07-05 | Intel Corporation | Method and system for optimizing latency of dynamic memory sizing |
US7451333B2 (en) | 2004-09-03 | 2008-11-11 | Intel Corporation | Coordinating idle state transitions in multi-core processors |
US9001801B2 (en) | 2004-09-07 | 2015-04-07 | Broadcom Corporation | Method and system for low power mode management for complex Bluetooth devices |
US7941585B2 (en) | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US7426648B2 (en) | 2004-09-30 | 2008-09-16 | Intel Corporation | Global and pseudo power state management for multiple processing elements |
US7434073B2 (en) | 2004-11-29 | 2008-10-07 | Intel Corporation | Frequency and voltage scaling architecture |
US7502948B2 (en) | 2004-12-30 | 2009-03-10 | Intel Corporation | Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores |
US8041967B2 (en) | 2005-02-15 | 2011-10-18 | Hewlett-Packard Development Company, L.P. | System and method for controlling power to resources based on historical utilization data |
US7454632B2 (en) | 2005-06-16 | 2008-11-18 | Intel Corporation | Reducing computing system power through idle synchronization |
US7430673B2 (en) | 2005-06-30 | 2008-09-30 | Intel Corporation | Power management system for computing platform |
US8301868B2 (en) | 2005-09-23 | 2012-10-30 | Intel Corporation | System to profile and optimize user software in a managed run-time environment |
US20070079294A1 (en) | 2005-09-30 | 2007-04-05 | Robert Knight | Profiling using a user-level control mechanism |
US20070106827A1 (en) | 2005-11-08 | 2007-05-10 | Boatright Bryan D | Centralized interrupt controller |
US20070245163A1 (en) | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
US7437270B2 (en) | 2006-03-30 | 2008-10-14 | Intel Corporation | Performance state management |
US7752468B2 (en) | 2006-06-06 | 2010-07-06 | Intel Corporation | Predict computing platform memory power utilization |
US7529956B2 (en) | 2006-07-17 | 2009-05-05 | Microsoft Corporation | Granular reduction in power consumption |
US7930564B2 (en) | 2006-07-31 | 2011-04-19 | Intel Corporation | System and method for controlling processor low power states |
US7730340B2 (en) | 2007-02-16 | 2010-06-01 | Intel Corporation | Method and apparatus for dynamic voltage and frequency scaling |
WO2008117133A1 (en) | 2007-03-26 | 2008-10-02 | Freescale Semiconductor, Inc. | Anticipation of power on of a mobile device |
JP2008257578A (ja) | 2007-04-06 | 2008-10-23 | Toshiba Corp | 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法 |
US7971074B2 (en) | 2007-06-28 | 2011-06-28 | Intel Corporation | Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system |
US20090150696A1 (en) | 2007-12-10 | 2009-06-11 | Justin Song | Transitioning a processor package to a low power state |
US8024590B2 (en) | 2007-12-10 | 2011-09-20 | Intel Corporation | Predicting future power level states for processor cores |
US7966506B2 (en) | 2007-12-12 | 2011-06-21 | Intel Corporation | Saving power in a computer system |
US8442697B2 (en) | 2007-12-18 | 2013-05-14 | Packet Digital | Method and apparatus for on-demand power management |
KR101459140B1 (ko) | 2007-12-26 | 2014-11-07 | 엘지전자 주식회사 | 전원관리 제어 장치 및 방법 |
US8156362B2 (en) | 2008-03-11 | 2012-04-10 | Globalfoundries Inc. | Hardware monitoring and decision making for transitioning in and out of low-power state |
US8296773B2 (en) * | 2008-06-30 | 2012-10-23 | International Business Machines Corporation | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance |
US8954977B2 (en) | 2008-12-09 | 2015-02-10 | Intel Corporation | Software-based thread remapping for power savings |
US8700943B2 (en) | 2009-12-22 | 2014-04-15 | Intel Corporation | Controlling time stamp counter (TSC) offsets for mulitple cores and threads |
US8943334B2 (en) | 2010-09-23 | 2015-01-27 | Intel Corporation | Providing per core voltage and frequency control |
US8949637B2 (en) | 2011-03-24 | 2015-02-03 | Intel Corporation | Obtaining power profile information with low overhead |
US8769316B2 (en) | 2011-09-06 | 2014-07-01 | Intel Corporation | Dynamically allocating a power budget over multiple domains of a processor |
US8954770B2 (en) | 2011-09-28 | 2015-02-10 | Intel Corporation | Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin |
US9074947B2 (en) | 2011-09-28 | 2015-07-07 | Intel Corporation | Estimating temperature of a processor core in a low power state without thermal sensor information |
US9026815B2 (en) | 2011-10-27 | 2015-05-05 | Intel Corporation | Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor |
US8832478B2 (en) | 2011-10-27 | 2014-09-09 | Intel Corporation | Enabling a non-core domain to control memory bandwidth in a processor |
US9158693B2 (en) | 2011-10-31 | 2015-10-13 | Intel Corporation | Dynamically controlling cache size to maximize energy efficiency |
US8943340B2 (en) | 2011-10-31 | 2015-01-27 | Intel Corporation | Controlling a turbo mode frequency of a processor |
US9323316B2 (en) | 2012-03-13 | 2016-04-26 | Intel Corporation | Dynamically controlling interconnect frequency in a processor |
US9354689B2 (en) | 2012-03-13 | 2016-05-31 | Intel Corporation | Providing energy efficient turbo operation of a processor |
WO2013137860A1 (en) | 2012-03-13 | 2013-09-19 | Intel Corporation | Dynamically computing an electrical design point (edp) for a multicore processor |
US8984313B2 (en) | 2012-08-31 | 2015-03-17 | Intel Corporation | Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator |
US9672046B2 (en) * | 2012-12-28 | 2017-06-06 | Intel Corporation | Apparatus and method for intelligently powering heterogeneous processor components |
US9378536B2 (en) * | 2014-04-30 | 2016-06-28 | Qualcomm Incorporated | CPU/GPU DCVS co-optimization for reducing power consumption in graphics frame processing |
US9665161B2 (en) | 2014-08-27 | 2017-05-30 | Mediatek Inc. | Method and computer-readable medium for dynamically managing power of multi-core processor |
US9424092B2 (en) * | 2014-09-26 | 2016-08-23 | Microsoft Technology Licensing, Llc | Heterogeneous thread scheduling |
US10031574B2 (en) | 2015-05-20 | 2018-07-24 | Mediatek Inc. | Apparatus and method for controlling multi-core processor of computing system |
US20170212575A1 (en) * | 2016-01-21 | 2017-07-27 | Mediatek Inc. | Power budget allocation method and apparatus for generating power management output according to system setting of multi-core processor system and target power budget |
KR20180098904A (ko) | 2017-02-27 | 2018-09-05 | 삼성전자주식회사 | 컴퓨팅 장치 및 컴퓨팅 장치에 포함된 복수의 코어들에 전력을 할당하는 방법 |
US10983581B2 (en) * | 2017-12-31 | 2021-04-20 | Intel Corporation | Resource load balancing based on usage and power limits |
US10620969B2 (en) | 2018-03-27 | 2020-04-14 | Intel Corporation | System, apparatus and method for providing hardware feedback information in a processor |
-
2019
- 2019-08-29 US US16/554,940 patent/US11698812B2/en active Active
-
2020
- 2020-07-29 WO PCT/US2020/043978 patent/WO2021040951A1/en unknown
- 2020-07-29 CN CN202080055301.8A patent/CN114207597A/zh active Pending
- 2020-07-29 EP EP20858219.7A patent/EP4022419A4/en active Pending
-
2023
- 2023-05-24 US US18/322,636 patent/US20230297424A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11698812B2 (en) | 2023-07-11 |
US20230297424A1 (en) | 2023-09-21 |
US20210064426A1 (en) | 2021-03-04 |
WO2021040951A1 (en) | 2021-03-04 |
EP4022419A4 (en) | 2023-10-04 |
EP4022419A1 (en) | 2022-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11567896B2 (en) | Dynamically updating logical identifiers of cores of a processor | |
US11698812B2 (en) | System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor | |
US10620969B2 (en) | System, apparatus and method for providing hardware feedback information in a processor | |
CN117873302A (zh) | 用于处理器的优化节流的系统、装置和方法 | |
US11435816B2 (en) | Processor having accelerated user responsiveness in constrained environment | |
CN107077175B (zh) | 提供针对多芯片封装的热参数报告的装置和方法 | |
US10379904B2 (en) | Controlling a performance state of a processor using a combination of package and thread hint information | |
US20160349828A1 (en) | Controlling performance states of processing engines of a processor | |
US20200310872A1 (en) | System, Apparatus And Method For Power License Control Of A Processor | |
CN113748397A (zh) | 用于动态控制处理器的处理电路的电流消耗的系统、装置和方法 | |
WO2017222690A1 (en) | Controlling forced idle state operation in a processor | |
US11669146B2 (en) | System, apparatus and method for responsive autonomous hardware performance state control of a processor | |
US11853144B2 (en) | System, apparatus and method for globally aware reactive local power control in a processor | |
WO2018026527A1 (en) | Providing an interface for demotion control information in a processor | |
CN113448373A (zh) | 用于处理器的电压调节器的功率状态缩放的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |