CN109564526A - 使用封装和线程提示信息的组合来控制处理器的性能状态 - Google Patents
使用封装和线程提示信息的组合来控制处理器的性能状态 Download PDFInfo
- Publication number
- CN109564526A CN109564526A CN201780046763.1A CN201780046763A CN109564526A CN 109564526 A CN109564526 A CN 109564526A CN 201780046763 A CN201780046763 A CN 201780046763A CN 109564526 A CN109564526 A CN 109564526A
- Authority
- CN
- China
- Prior art keywords
- thread
- performance state
- processor
- performance
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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
-
- 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
-
- 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
-
- 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
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
-
- 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]
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
在一个实施例中,处理器包括:第一存储,用于存储公共性能状态请求设置的集合;第二存储,用于存储线程性能状态请求设置的集合;以及控制器,用于基于公共性能状态请求设置的集合中的至少一个公共性能状态请求设置和线程性能状态请求设置的集合中的至少一个线程性能状态请求设置的组合来控制第一核的性能状态。描述并要求保护其他实施例。
Description
技术领域
实施例涉及对系统的功率管理,并且更具体地涉及对多核处理器的功率管理。
背景技术
半导体处理和逻辑设计的进步已允许可存在于集成电路器件上的逻辑的数量的增长。作为结果,计算机系统配置已从系统中的单个或多个集成电路演进到各个单独的集成电路上的多个硬件线程、多个核、多个器件和/或完整系统。另外,随着集成电路的密度增长,对计算系统(从嵌入式系统到服务器)的功率要求也逐步升高。此外,软件的低效率以及其对硬件的要求也已导致计算设备能耗的增加。事实上,一些研究指出,计算设备消耗了诸如美国之类的国家的全部电力供应中相当大的百分比。作为结果,存在对与集成电路相关联的能效和节能的迫切需求。随着服务器、台式计算机、笔记本、超级本TM、平板、移动电话、处理器、嵌入式系统等变得越来越流行(从被包括在典型的计算机、汽车和电视机中到包括在生物技术中),这些需求将增长。
附图说明
图1是根据本发明的实施例的系统的部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一实施例的多域处理器的框图。
图4是包括多个核的处理器的实施例。
图5是根据本发明的一个实施例的处理器核的微架构的框图。
图6是根据另一实施例的处理器核的微架构的框图。
图7是根据又一实施例的处理器核的微架构的框图。
图8是根据更进一步的实施例的处理器核的微架构的框图。
图9是根据本发明的另一实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一示例SoC的框图。
图12是可以与实施例一起使用的示例系统的框图。
图13是可与实施例一起使用的另一示例系统的框图。
图14是代表性计算机系统的框图。
图15是根据本发明的实施例的系统的框图。
图16是图示出根据实施例的用于制造集成电路以执行操作的IP核开发系统的框图。
图17是根据本发明的实施例的方法的流程图。
图18是根据本发明的实施例的配置寄存器的框图。
图19是根据本发明的实施例的另一配置寄存器的框图。
图20是根据实施例的处理器的部分的框图。
具体实施方式
在各实施例中,处理器配置成用于使该处理器的功率控制器能够接收来自一个或多个线程的性能状态提示信息并接收封装级性能状态提示信息,并且能够在确定用于该处理器的合适的性能状态时使用该性能状态提示信息和该封装级性能状态提示信息。更具体地,实施例为功率控制器提供了至少部分地基于线程级性能状态提示信息和封装级性能状态提示信息的可控组合来确定性能状态的能力。为此目的,功率控制器配置成用于至少部分地基于该信息的组合来控制处理器的一个或多个物理核(和/或其他硬件逻辑)的性能状态。
在实施例中,线程特定的性能状态提示可用于覆盖(override)对应的封装性能状态提示。此类线程信息可与线程的其他上下文一起保存并恢复。为了实现如本文中所述的组合使用模型,线程有效性信息可与线程性能状态提示信息相关联以指示是否将使用线程级提示信息,并且如果是,则指示将使用该信息的哪些特定参数。虽然本发明的范围不限于此方面,但是在一个实施例中,可使用诸如一个或多个机器特定寄存器(MSR)或其他存储之类的处理器的配置存储的集合来存储封装级性能状态提示信息和线程级性能状态提示信息以及对应的覆盖/有效性控制信息。作为另一示例,可使用诸如XSAVE和XRSTOR指令之类的指令将软件线程性能提示设置并恢复到用户级线程中,使得这些指令提供支持这种类型的上下文的能力。在实施例中,OS的调度该用户级线程的调度器可执行此类指令以保存/恢复该信息。
相比之下,在不利用实施例的情况下,功率控制器仅可使用来自一个源的性能状态提示信息,这一个源是操作系(OS)封装设置或线程。该情形会导致如下复杂性:其中,诸如当使用复杂的信号量来交换或终止线程以便对不同线程的设置进行同步时,给定线程寻求覆盖OS封装控制。
在一个示例使用模型中,OS可配置成用于限制线程或逻辑处理器(注意,在本文中可互换地使用术语“线程”和“逻辑处理器”)的能力以免它们控制提示信息的特定字段。注意,除了传统的基于核的线程之外,实施例同等地适用于其他计算任务,诸如,图形处理、成像、媒体处理,等等。更进一步而言,MSR和基于线程的性能状态提示信息可以用于核、图形处理器、相机以及处理器的其他知识产权(IP)逻辑块。在实施例中,OS可控制线程有效性指示符,以标识线程性能状态提示信息可用于(或可不用于)哪些字段。因此,使用实施例,可实现灵活地组合逻辑处理器的信息和公共封装请求的真实组合使用模型。由此,当公共封装请求被重置以更新共享请求字段时,没有触发任何逻辑处理器的需求。当OS具有在线程级设置性能状态提示的部分的能力并且性能状态提示的其余部分是公共的且可在所有线程/封装层级上设置时,实施例可以是尤其适用的。
在实施例中,OS可使用第一配置寄存器来设置可由平台的当前状态影响的一个或多个公共性能状态控制变量,该平台的当前状态例如,系统是电池供电还是交流电供电的、系统热限制、最低期望服务质量(QoS),等等。除了这些公共的设置,每个线程还可例如通过使用第二配置寄存器以设置一个或多个线程级性能状态控制变量来定义该线程的使用参数。此外,可提供封装控制和有效性指示符以使封装级性能状态提示信息和线程级性能状态提示信息的合适组合能够在作出性能状态决策时被使用。
例如,背景线程可启用比公共设置更低的QoS值以及更好的功率节省。作为示例,此类背景线程可包括不牵涉用户交互的任务。反过来,涉及诸如屏幕触摸等的用户交互的实时线程可请求较高的性能设置。所有这些请求可以通过逐逻辑处理器地设置性能状态提示信息来得到支持。
在实施例中,OS可将线程特定的设置设置为线程上下文切换的部分。OS还可仅设置线程性能状态提示信息参数的子集,而其他参数被全局地控制,从而避免同步开销。作为示例,公共设置可用于不具有(针对给定参数的)特定要求的线程。对于其他参数,使用线程定义的设置是可能的。使用实施例,处理器可使每个逻辑处理器能够以满足当前执行线程需求的合适的性能状态来操作。因此,使用实施例,可实现更好的基于线程的功率/性能调整,以实现更好的功率性能结果。
注意,软件(例如,OS或驱动器)可将这些提示提供给处理器,以便例如确定线程QoS要求并根据该要求来设置MSR。在实施例中,软件应用可执行功率控制单元任务以确定合适的性能状态。此类操作对于诸如图形处理器之类的非核计算引擎尤其可能发生。在一些情况下,分布式方案可在如下情况下发生:其中,诸如OS或BIOS之类的一个软件设置处理器封装配置寄存器中的提示,而用户应用设置线程配置寄存器中的提示。
实施例可适用于同时多线程(SMT)处理器。在使用同一物理核的两个或更多个线程的情况下,附加层级的协调可应用。例如,单个核上的所有线程可通过某项规则被联合,以便被视为单个线程。在一个实施例中,可执行逻辑“或”操作来联合使用同一物理核的所有线程有效位。或者,可使用最大QoS规则来选择合适线程的值供使用。因此,在一些实施例中,可应用另一层级的联合/同步(诸如,在与基于封装的信息组合之前,组合多个线程的信息)。在多个物理核束缚于集群以共享例如相同的电压和频率的情况下,可执行此类联合。
虽然参考在诸如计算平台或处理器之类的特定集成电路中的节能和能效描述了以下多个实施例,但是其他实施例也适用于其他类型的集成电路和逻辑器件。可将本文中所描述的实施例的类似技术和教导应用于也可受益于更佳的能效和节能的其他类型的电路或半导体器件。例如,所公开的实施例不限于任何特定类型的计算机系统。也就是说,所公开的实施例可以在许多不同的系统类型中使用,这些系统类型范围包括服务器计算机(例如,塔式、机架式、刀片式、微服务器等等)、通信系统、存储系统、任何配置的台式计算机、膝上型计算机、笔记本和平板计算机(包括2:1平板、平板电话等等),并且所公开的实施例还可以在其他设备中使用,这些设备诸如手持式设备、芯片上系统(SoC)和嵌入式应用。手持式设备的一些示例包括:诸如智能电话之类的蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用典型地可包括:微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、可穿戴设备、或能够执行下文所教导的功能和操作的任何其他系统。此外,实施例可以在具有标准语音功能的移动终端中实现,诸如移动电话、智能电话和平板电话,和/或在不具有标准无线语音功能通信能力的非移动终端中实现,诸如许多可穿戴设备、平板、笔记本、台式机、微服务器、服务器等等。此外,本文中描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将下文描述中显而易见地看出,本文中所描述的方法、装置和系统的实施例(无论引用硬件、固件、软件或其组合)对于未来的“绿色技术”是不可缺少的,诸如,用于涵盖美国经济的大部分的产品中的功率节省和能效。
现在参考图1,所示的是根据本发明的实施例的系统的部分的框图。如图1中所示,系统100可以包括各种组件,这些组件包括所示为多核处理器的处理器110。处理器110可经由外部电压调节器160耦合至电源150,该外部电压调节器160可执行第一电压转换以将经调节的主电压Vreg提供给处理器110。
正如所见,处理器110可以是包括多个核120a-120n的单管芯处理器。另外,每个核可与集成的电压调节器(IVR)125a-125n相关联,这些集成的电压调节器125a-125n接收经调节的主电压并生成操作电压,以提供给与该IVR相关联的处理器的一个或多个代理。相应地,可提供IVR实现方式以允许对每个单独核的电压进而对其功率和性能进行细粒度的控制。由此,每个核都能以独立的电压和频率操作,从而实现极大的灵活性,并提供平衡功耗与性能的广泛机会。在一些实施例中,对多个IVR的使用实现将组件分组到分开的功率层中,使得功率由IVR调节并且由IVR将功率仅提供给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,可使一个IVR的给定的功率层掉电或断电,而另一IVR的另一功率层保持为活动的或完全供电的。类似地,核120可包括诸如一个或多个锁相环(PLL)的独立的时钟发生电路或与其相关联以独立地控制每个核120的操作频率。
仍参考图1,附加的组件可存在于处理器内,包括输入/输出接口(IF)132、另一接口134以及集成存储器控制器(IMC)136。正如所见,这些组件中的每一个都可由另一集成的电压调节器125X来供电。在一个实施例中,接口132可启用用于快速路径互连(QPI)互连的操作,该互连在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,所述多个层包括物理层、链路层和协议层。接口134可进而经由外围组件互连快速(PCIeTM)协议来通信。
还示出了功率控制单元(PCU)138,该PCU 138可包括用于针对处理器110执行功率管理操作的电路,该电路包括硬件、软件和/或固件。正如所见,PCU 138经由数字接口162将控制信息提供给外部电压调节器160以使该电压调节器生成合适的经调节的电压。PCU 138也经由另一数字接口163将控制信息提供给多个IVR 125以控制所生成的操作电压(或使对应的IVR在低功率模式下被禁用)。在各实施例中,PCU 138可包括用于执行基于硬件的功率管理的各种功率管理逻辑单元,包括使用来自封装性能状态管理提示和线程性能状态管理提示的组合的信息对性能状态进行的控制。如将描述的那样,取决于所提供的控制,PCU138可基于来自这两个源的提示的组合来确定用于一个或多个核的性能状态。在其他操作模式下,PCU 138可至少部分地基于来自仅一个此类源的提示来确定性能状态。此类功率管理可以完全由处理器控制(例如,由各种处理器硬件控制,并且其可以由工作负荷和/或功率、热约束或其他处理器约束触发),并且/或者功率管理可以响应于外部源(诸如,平台或管理功率源或系统软件)而被执行。
在图1中,PCU 138被图示为作为处理器的分开的逻辑而存在。在其他情况下,PCU逻辑138可在核120中给定的一个或多个核上执行。在一些情况下,可将PCU 138实现为被配置成用于执行其自身的专用功率管理代码(有时被称为P代码)的(专用的或通用的)微控制器或其他控制逻辑。在另外的其他实施例中,将由PCU 138执行的功率管理操作可在处理器外部实现,诸如,通过分开的功率管理集成电路(PMIC)或处理器外部的其他组件的方式。在另外的其他实施例中,将由PCU 138执行的功率管理操作可在BIOS或其他系统软件内实现。
实施例尤其可适合于多核处理器,在多核处理器中,多个核中的每一个能以独立的电压和频率点进行操作。如本文中所使用的术语“域”用于意指以同一电压和频率点进行操作的硬件和/或逻辑的集合。另外,多核处理器可以进一步包括其他非核处理引擎,诸如,固定功能单元、图形引擎等等。此类处理器可包括除核以外的独立的域,诸如,与图形引擎相关联的一个或多个域(本文中被称为图形域)以及与非核电路相关联的一个或多个域(本文中被称为非核(uncore)或系统代理)。虽然多域处理器的许多实现方式可以在单个半导体管芯上形成,但其他实现方式可以由多芯片封装来实现,在多芯片封装中,不同的域可以存在于单个封装的不同半导体管芯上。
尽管为了易于说明没有示出,但应理解,附加的组件可存在于处理器110内,这些附加的组件诸如非核逻辑和其他组件,其他组件诸如内部存储器,例如,一个或多个层级的高速缓存存储器层级结构等。此外,尽管在图1的实现方式中示出为具有集成的电压调节器,但是,实施例不限于此。例如,可以将其他经调节的电压从外部电压调节器160或经调节的电压的一个或多个附加的外部源提供给芯片上资源。
注意,本文中所描述的功率管理技术可以独立于基于操作系统(OS)的功率管理(OSPM)机制,并与其互补。根据一种示例OSPM技术,处理器能以各种性能状态或水平(所谓的P状态,即从P0到PN)来操作。一般而言,P1性能状态可对应于可由OS请求的最高保证的性能状态。除此P1状态之外,OS可进一步请求更高的性能状态,即,P0状态。该P0状态因此可以是伺机的时钟超频(overclocking)或超频(turbo)模式状态,在该状态下,当功率和/或热预算可用时,处理器硬件可将处理器或该处理器的至少多个部分配置成以高于保证频率的频率进行操作。在许多实现方式中,处理器可包括如在制造期间被融合或以其他方式写入到处理器中的、高于P1保证的最大频率的、超出特定处理器的最大峰值频率的多个所谓的元(bin)频率。此外,根据一种OSPM机制,处理器能以各种功率状态或水平进行操作。对于功率状态,OSPM机制可以指定不同的功耗状态,一般将其称为C状态(C0、C1到Cn状态)。当核是活动的时,它以C0状态运行,而当该核是空闲的时,它可被置于核低功率状态,该核低功率状态也被称为核非零C状态(例如,C1-C6状态),每一个C状态都处于更低的功耗水平(使得C6是比C1更深的低功率状态,等等)。
应理解,在不同实施例中,可单独地或组合地使用许多不同类型的功率管理技术。作为代表性示例,功率控制器可以控制处理器以由某种形式的动态电压频率缩放(DVFS)来对该处理器进行功率管理,在DVFS中,一个或多个核或其他处理器逻辑的操作电压和/或操作频率可被动态地控制以在某些情形下减少功耗。在示例中,可以使用可从加利福尼亚州圣克拉拉市的英特尔公司得到的增强型Intel SpeedStepTM技术来执行DVFS,以在最低功耗水平提供最优性能。在另一示例中,可以使用Intel TurboBoostTM技术来执行DVFS以使得一个或多个核或其他计算引擎能基于条件(例如,工作负荷和可用性)以高于保证操作频率的频率进行操作。
可以在某些示例中使用的另一功率管理技术是在不同计算引擎之间动态地交换工作负荷。例如,处理器可以包括以不同功耗水平操作的非对称核或其他处理引擎,使得在功率受约束的情形下,一个或多个工作负荷可以被动态地切换以在较低功率的核或其他计算引擎上执行。另一示例性功率管理技术是硬件轮停(HDC),该HDC可以使核和/或其他计算引擎根据工作周期被周期性地启用和禁用,使得一个或多个核在工作周期的不活动时段变为不活动的,而在工作周期的活动时段变为活动的。
当操作环境中存在约束时,也可以使用功率管理技术。例如,当遭遇功率和/或热约束时,可以通过降低操作频率和/或电压来减小功率。其他功率管理技术包括扼制指令执行速率或限制对指令的调度。更进一步地,使给定指令集架构的指令包括关于功率管理操作的显式的或隐式的指示是可能的。虽然以这些特定示例描述,但应理解,许多其他功率管理技术可以在特定实施例中使用。
可在用于各种市场的处理器(包括服务器处理器、台式机处理器、移动处理器等)中实现多个实施例。现在参考图2,所示出的是根据本发明的实施例的处理器的框图。如图2中所示,处理器200可以是包括多个核210a–210n的多核处理器。在一个实施例中,每一个此类核可以具有独立的功率域,并且可被配置成基于工作负荷进入和退出活动状态和/或最大性能状态。一个或多个核210相对于其他核可以是异构的,例如,具有不同的微架构、指令集架构、流水线深度、功率和性能能力。可经由互连215将各个核耦合到包括各种组件的系统代理或非核220。正如所见,非核220可包括共享高速缓存230,该共享高速缓存230可以是末级高速缓存。此外,非核可以包括集成存储器控制器240,用于例如经由存储器总线与系统存储器(图2中未示出)通信。非核220还包括各种接口250和功率控制单元255,该功率控制单元255可包括用于执行本文中所述的功率管理技术的逻辑。为此目的,功率控制单元255可接收来自封装源和线程源的传入提示信息,并且取决于所指示的控制、基于来自仅一个源或来自这些源的组合的提示来确定用于处理器的一个或多个核210或其他逻辑的合适的性能状态。
此外,通过接口250a-250n,可完成到诸如外围设备、大容量存储等之类的各种芯片外组件的连接。尽管在图2的实施例中以此特定实现方式示出,但是本发明的范围不限于此方面。
现在参考图3,所示出的是根据本发明的另一实施例的多域处理器的框图。如图3的实施例中所示,处理器300包括多个域。具体而言,核域310可包括多个核310a–310n,图形域320可包括一个或多个图形引擎,并且还可以存在系统代理域350。在一些实施例中,系统代理域350能以独立于核域的独立频率执行,并且可在所有时刻保持被供电以处置功率控制事件和功率管理,使得可以控制域310和320动态地进入和退出高功率状态和低功率状态。域310和320中的每一个能以不同的电压和/或功率操作。注意,虽然仅以三个域示出,但是应理解,本发明的范围不限于此方面,并且附加的域可存在于其他实施例中。例如,多个核域可存在,每一个核域包括至少一个核。
一般而言,除各种执行单元和附加的处理元件之外,每个核310还可包括多个低层级高速缓存。各种核进而可彼此耦合,并且耦合到共享高速缓存存储器,该共享高速缓存存储器由末级高速缓存(LLC)340a–340n的多个单元形成。在各实施例中,可在多个核与图形引擎以及各种媒体处理电路之间共享LLC 340。正如所见,环形互连330由此将多个核耦合到一起,并且在多个核、图形域320和系统代理电路350之间提供互连。在一个实施例中,互连330可以是核域的部分。然而,在其他实施例中,该环形互连可以是其自身域中的。
如进一步所见,系统代理域350可包括显示控制器352,该显示控制器352可提供对相关联的显示器的控制以及至该相关联的显示器的接口。如进一步所见,系统代理域350可包括功率控制单元355,该功率控制单元355可包括用于执行本文中所述的功率管理技术的逻辑。
如在图3中进一步所见,处理器300可进一步包括集成存储器控制器(IMC)370,该IMC 370可提供至诸如动态随机存取存储器(DRAM)之类的系统存储器的接口。可以存在多个接口380a–380n以实现处理器与其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。更进一步地,为了提供诸如附加的处理器或其他电路之类的其他代理之间的通信,还可以提供一个或多个QPI接口。尽管在图3的实施例中以该高层级示出,但是会理解,本发明的范围不限于此方面。
参考图4,图示出包括多个核的处理器的实施例。处理器400包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、芯片上系统(SoC)、或用于执行代码的其他设备。在一个实施例中,处理器400包括至少两个核——核401和402,它们可包括非对称核或对称核(所图示的实施例)。然而,处理器400可包括可以是对称的或非对称的任何数量的处理元件。
在一个实施例中,处理元件是指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件是指能够独立地与诸如软件线程、操作系统、应用、或其他代码之类的代码相关联的任何硬件。物理处理器通常是指集成电路,其潜在地包括诸如核或硬件线程之类的任何数量的其他处理元件。
核通常是指位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程通常是指位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。正如所见,当某些资源是共享的而其他资源专用于架构状态时,硬件线程与核的术语之间的界线重叠。但核和硬件线程常常被操作系统视为多个单独的逻辑处理器,其中,操作系统能够分别在每一个逻辑处理器上调度操作。
如在图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中,也可复制用于线程401a和401b的其他较小资源,诸如,指令指针以及分配器和重命名器块430中的重命名逻辑。可通过分区操作来共享诸如重排序/引退单元435中的重排序缓冲器、分支目标缓冲器和指令转换后备缓冲器(BTB和I-TLB)420、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、(多个)页表基寄存器、低层级数据高速缓存和数据TLB 450、(多个)执行单元440和乱序单元435的多个部分之类的其他资源。
处理器400通常包括其他资源,它们可被完全共享,可通过分区操作被共享,或可由处理元件专用/专用于处理元件。在图4中,图示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所图示,核401包括简化的、代表性的乱序(OOO)处理器核。但是,在不同实施例中,可利用有序处理器。OOO核包括用于预测将被执行/进行的分支的分支目标缓冲器420以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)420。
核401进一步包括耦合至取出单元以用于解码所取出的元素的解码模块425。在一个实施例中,取出逻辑包括分别与线程槽401a、401b相关联的各个序列发生器。通常,核401与第一ISA相关联,该第一ISA定义/指定在处理器400上可执行的指令。通常,作为第一ISA的部分的机器代码指令包括指令的引用/指定将被执行的指令或操作的部分(被称为操作码)。解码逻辑425包括从这些指令的操作码识别出这些指令并继续在流水线上传递经解码的指令以用于如第一ISA所定义地进行处理的电路。例如,在一个实施例中,解码器425包括被设计成用于或适于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器425识别的结果,架构或核401采取特定的、预定义的动作来执行与适当指令相关联的任务。重要的是应注意,可响应于单条或多条指令来执行本文中所描述的任务、块、操作和方法中的任何一个;所述单条或多条指令中的一些可以是新指令或旧指令。
在一个示例中,分配器和重命名器块430包括用于预留资源的分配器,诸如,用于存储指令处理结果的寄存器堆。然而,线程401a和401b潜在地能够进行乱序执行,其中,分配器和重命名器块430还预留其他资源,诸如,用于追踪指令结果的重排序缓冲器。单元430还可包括寄存器重命名器,该寄存器重命名器用于将程序/指令引用寄存器重命名为处理器400内部的其他寄存器。重排序/引退单元435包括用于支持被乱序执行的指令的乱序执行和稍后的有序引退的组件,诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器。
在一个实施例中,调度器和(多)执行单元块440包括用于在执行单元上调度指令/操作的调度器单元。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器堆,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其他已知的执行单元。
较低层级的数据高速缓存和数据转换后备缓冲器(D-TLB)450耦合至(多个)执行单元440。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,该页表结构用于将物理存储器分解成多个虚拟页。
在此,核401和402共享对较高层级或进一步远离的高速缓存410的访问,该高速缓存410用于对最近取出的元素进行高速缓存。注意,较高层级或进一步远离是指高速缓存层级增加或进一步远离(多个)执行单元。在一个实施例中,较高层级的高速缓存410是末级数据高速缓存——处理器400上的存储器层级结构中的末级高速缓存——诸如,第二级或第三级数据高速缓存。然而,较高层级的高速缓存410不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,追踪高速缓存(一类指令高速缓存)可耦合在解码器425之后,用于存储最近被解码的追踪。
在所描绘的配置中,处理器400还包括总线接口模块405和功率控制单元460,该功率控制单元460可执行根据本发明的实施例的功率管理。在该场景中,总线接口405用于与在处理器400外部的设备(诸如,系统存储器和其他组件)通信。
存储器控制器470可以与诸如一个或多个存储器之类的其他设备对接。在示例中,总线接口405包括环形互连,该环形互连具有用于与存储器对接的存储器控制器和用于与图形处理器对接的图形控制器。在SoC环境中,诸如网络接口、协处理器、存储器、图形处理器以及任何其他已知的计算机设备/接口之类的甚至更多的设备可被集成在单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因子。
现在参考图5,所示出的是根据本发明的一个实施例的处理器核的微架构的框图。如图5中所示,处理器核500可以是多级流水线化的乱序处理器。核500可以基于所接收的操作电压以各种电压进行操作,所接收的操作电压可以从集成电压调节器或外部电压调节器接收。
如图5中所见,核500包括前端单元510,前端单元510可用于取出将被执行的指令,并将这些指令准备好以供稍后在处理器流水线中使用。例如,前端单元510可包括取出单元501、指令高速缓存503以及指令解码器505。在一些实现中,前端单元510可进一步包括追踪高速缓存、微代码存储以及微操作存储。取出单元501可(例如,从存储器或指令高速缓存503)取出宏指令,并将它们馈送至指令解码器505,以将它们解码为基元(primitive),即,供处理器执行的微操作。
乱序(OOO)引擎515耦合在前端单元510与执行单元520之间,该乱序引擎515可用于接收微指令,并将它们准备好以供执行。更具体地,OOO引擎515可包括各种缓冲器,这些缓冲器用于对微指令流重排序并分配执行所需的各种资源,并且提供将逻辑寄存器重命名到各种寄存器堆(例如,寄存器堆530和扩展寄存器堆535)内的存储位置上。寄存器堆530可包括用于整数操作和浮点操作的单独的寄存器堆。出于配置、控制和附加操作的目的,机器专用寄存器(MSR)的集合538也可存在,并且可由核500内(以及核外部)的各种逻辑来访问。
在执行单元520中可存在各种资源,包括例如,各种整数、浮点和单指令多数据(SIMD)逻辑单元以及其他专业化硬件。例如,此类执行单元可包括一个或多个算术逻辑单元(ALU)522和一个或多个向量执行单元524,等等此类执行单元。
来自执行单元的结果可被提供至引退逻辑,即重排序缓冲器(ROB)540。更具体地,ROB 540可包括用于接收与被执行的指令相关联的信息的各种阵列和逻辑。随后,该信息被ROB 540检查以判定指令是否可以有效地引退并且结果数据是否被提交至处理器的架构状态,或判定阻止指令的适当引退的一个或多个异常是否发生。当然,ROB 540可处置与引退相关联的其他操作。
如图5中所示,ROB 540耦合至高速缓存550,在一个实施例中,该高速缓存550可以是低层级高速缓存(例如,L1高速缓存),但是本发明的范围不限于此。而且,执行单元520可直接耦合至高速缓存550。从高速缓存550,可发生与更高层级的高速缓存、系统存储器等等的数据通信。虽然在图5的实施例中以此高层级示出,但应理解,本发明的范围不限于此方面。例如,虽然图5的实现方式涉及诸如具有x86指令集架构(ISA)的乱序机器,但本发明的范围不限于此方面。也就是说,其他实施例可在以下处理器中实现:有序处理器;诸如基于ARM的处理器的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
现在参考图6,所示出的是根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同的微架构的低功率核,诸如,具有为降低功耗而设计的相对受限制的流水线深度的基于凌动TM(AtomTM)的处理器。正如所见,核600包括经耦合以将指令提供给指令解码器615的指令高速缓存610。分支预测器605可以耦合到指令高速缓存610。注意,指令高速缓存610可以进一步被耦合到另一层级的高速缓存存储器,诸如,L2高速缓存(为了易于说明,图6中未示出)。指令解码器615进而将经解码的指令提供给发布队列(IQ)620以供存储和递送到给定的执行流水线。微代码ROM 618被耦合到指令解码器615。
浮点流水线630包括浮点(FP)寄存器堆632,其可包括具有给定的位宽度(诸如,128位、256位或512位)的多个架构寄存器。流水线630包括用于调度指令供在流水线的多个执行单元之一上执行的浮点调度器634。在所示的实施例中,此类执行单元包括ALU 635、混洗单元636和浮点加法器638。在这些执行单元中生成的结果进而可被往回提供给缓冲器和/或寄存器堆632的寄存器。当然,应理解,虽然以这几个示例执行单元示出,但是在另一实施例中,可以存在附加的或不同的浮点执行单元。
还可以提供整数流水线640。在所示的实施例中,流水线640包括整数(INT)寄存器堆642,其可包括具有给定的位宽度(诸如,128位或256位)的多个架构寄存器。流水线640包括整数执行(IE)调度器644,该IE调度器644用于调度指令供在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 645、移位器单元646和跳转执行单元(JEU)648。在这些执行单元中生成的结果进而可被往回提供给缓冲器和/或寄存器堆642的寄存器。当然,应理解,虽然以这几个示例执行单元示出,但是在另一实施例中,可以存在附加的或不同的整数执行单元。
存储器执行(ME)调度器650可以调度存储器操作供在地址生成单元(AGU)652中执行,该AGU 652还耦合至TLB 654。正如所见,这些结构可以耦合到数据高速缓存660,该数据高速缓存660可以是L0和/或L1数据高速缓存,其进而耦合到附加层级的高速缓存存储器层级结构,包括L2高速缓存存储器。
为了提供对乱序执行的支持,除重排序缓冲器680之外还可以提供分配器/重命名器670,该重排序缓冲器680被配置为对被乱序地执行的指令进行重排序以供有序引退。虽然以图6的图示中的该特定流水线架构示出,但是应理解,许多变型和替代是可能的。
注意,在具有非对称核的处理器中,诸如,根据图5和图6的微架构,出于功率管理的原因,可以在核之间动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。能以对用户应用(并且也可能对内核)透明的方式来执行此类动态的核交换。
参考图7,所示为根据又一实施例的处理器核的微架构的框图。如图7中所图示,核700可包括多级有序流水线以便以非常低的功耗水平执行。作为一个此类示例,处理器700可以具有根据可从加利福尼亚州桑尼威尔市的ARM控股有限公司得到的ARM Cortex A53设计的微架构。在实现方式中,可以提供被配置为执行32位和64位两种代码的8级流水线。核700包括取出单元710,该取出单元710被配置为取出指令,并将这些指令提供给解码单元715,该解码单元715可以对指令解码,该指令例如是具有给定ISA(诸如,ARMv8ISA)的宏指令。进一步注意,队列730可以耦合至解码单元715以存储经解码的指令。经解码的指令被提供给发布逻辑725,其中可以将经解码的指令发布到多个执行单元中的给定的一个。
进一步参考图7,发布逻辑725可以将指令发布到多个执行单元中的一个。在所示的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双发布单元760以及加载/存储单元770。可以将这些不同的执行单元的结果提供给写回(WB)单元780。应理解,虽然为了易于说明示出单个写回单元,但是在一些实现方式中,多个分开的写回单元可以与执行单元中的每一个相关联。此外,应理解,虽然图7中示出的单元中的每一个和逻辑以高层级表示,但是特定实现可以包括更多结构或不同结构。可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现使用一个或多个具有如图7中的流水线的核来设计的处理器。
参考图8,所示出的是根据又一实施例的处理器核的微架构的框图。如图8中所图示,核800可以包括多级多发布乱序流水线以便以非常高的性能水平执行(其能以高于图7的核700的功耗水平发生)。作为一个此类示例,处理器800可以具有根据ARM Cortex A57设计的微架构。在实现方式中,可以提供被配置为执行32位和64位两者的15(或更大)级流水线。此外,流水线可以提供3路(或更大)宽度和3路(或更大)发布操作。核800包括取出单元810,该取出单元810配置为取出指令,并将指令提供给耦合到高速缓存820的解码器/重命名器/分派器单元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可以是基于架构酷睿TM(CoreTM)的处理器(诸如,i3、i5、i7)或可从英特尔公司得到的另一个此类处理器。然而,诸如可从加利福尼亚州桑尼威尔的超微半导体有限公司(AMD)得到的、来自ARM控股有限公司或其被许可方的基于ARM的设计的、或来自加利福尼亚州桑尼威尔的MIPS技术公司或其被许可方或采用者的基于MIPS的设计之类的其他低功率处理器可替代地存在于其他实施例中,诸如苹果A7处理器、高通骁龙处理器或德州仪器OMAP处理器。此类SoC可用于诸如智能电话、平板计算机、平板手机计算机、超级本TM计算机或其他便携式计算设备之类的低功率系统中,其可包含具有基于异构系统架构的处理器设计的异构系统架构。
在图9中示出的高层级视图中,处理器900包括多个核单元910a-910n。每一个核单元都可包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路。每一个核单元910都可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEON的任选的附加扩展))或其他指令集或其组合。注意,核单元中的一些可以是(例如,具有不同设计的)异构资源。此外,每一个此类核可耦合至高速缓存存储器(未示出),在实施例中,该高速缓存存储器可以是共享的第二级(L2)高速缓存存储器。可使用非易失性存储930来存储各种程序和其他数据。例如,可以使用该存储来存储微代码的至少多个部分、诸如BIOS之类的引导信息、其他系统软件等。
每一个核单元910还可包括诸如总线接口单元之类的接口,该总线接口单元用于实现向处理器的附加电路的互连。在实施例中,每一个核单元910都耦合至一致性结构,该一致性结构可充当进而耦合到存储器控制器935的主高速缓存一致性管芯上互连。存储器控制器935转而控制与诸如DRAM之类的存储器(为了易于说明,在图9中未示出)的通信。
除这些核单元之外,附加的处理引擎也存在于该处理器内,包括至少一个图形单元920,该至少一个图形单元920可包括用于执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)的一个或多个图形处理单元(GPU)。此外,可以存在至少一个图像信号处理器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的框图。在所示实施例中,SoC 1000可以是针对低功率操作配置的多核SoC,该多核SoC待优化以便并入智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。作为示例,可使用诸如较高功率核和/或低功率核(例如,乱序核和有序核)的组合之类的非对称核或不同类型核来实现SoC 1000。在不同的实施例中,这些核可以基于架构TM核设计或ARM架构设计。在另一些实施例中,可在给定的SoC中实现英特尔核和ARM核的混合。
如图10中所见,SoC 1000包括具有多个第一核1012a–1012d的第一核域1010。在示例中,这些核可以是诸如有序核之类的低功率核。在一个实施例中,可将这些第一核实现为ARM Cortex A53核。这些核进而耦合到核域1010的高速缓存存储器1015。此外,SoC 1000包括第二核域1020。在图10的示图中,第二核域1020具有多个第二核1022a–1022d。在示例中,这些核可以是比第一核1012消耗更高功耗的核。在实施例中,这些第二核可以是可实现为ARM Cortex A57核的乱序核。这些核进而耦合到核域1020的高速缓存存储器1025。注意,虽然图10中所示的示例在每个域中包括4个核,但是会理解,在其他示例中,更多或更少的核可存在于给定的域中。
进一步参考图10,也提供图形域1030,该图形域1030可包括一个或多个图形处理单元(GPU),这些图形处理单元配置成用于独立地执行例如由核域1010和1020的一个或多个核提供的图形工作负荷。作为示例,除了提供图形和显示渲染操作之外,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适于并入各种各样的便携式和其他设备,诸如,智能电话、平板计算机、智能电视等。在所示示例中,SoC 1100包括中央处理器单元(CPU)域1110。在实施例中,多个单独的处理器核可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。此类处理器可以是同构或异构处理器,例如,低功率处理器核和高功率处理器核的混合。
进而提供GPU域1120以在一个或多个GPU中执行高级图形处理,从而处置图形并计算API。DSP单元1130可提供一个或多个低功率DSP,这些低功率DSP除了处置可在多媒体指令的执行期间发生的高级计算之外,还处置诸如音乐回放、音频/视频等的低功率多媒体应用。通信单元1140进而可包括用于经由各种无线协议来提供连接性的各种组件,各种无线协议诸如蜂窝通信(包括3G/4G LTE)、诸如蓝牙TM和IEEE 802.11之类的无线局域协议等。
更进一步地,可使用多媒体处理器1150来执行对高清晰度视频和音频内容的捕捉和回放,包括对用户姿势的处理。传感器单元1160可包括多个传感器和/或用于对接到存在于给定平台中的各种芯片外传感器的传感器控制器。可向图像信号处理器1170提供一个或多个分开的ISP,这一个或多个分开的ISP用于参照从平台的一个或多个相机(包括静止相机和视频相机)捕捉到的内容来执行图像处理。
显示处理器1180可为到给定像素密度的高清晰度显示器的连接提供支持,包括无线地传递内容以在此类显示器上回放的能力。更进一步地,定位单元1190可包括具有对多个GPS星座图的支持的GPS接收机,以便向应用提供使用此类GPS接收机所获取的高精度定位信息。会理解,虽然在图11的示例中以该特定的组件集合示出,但是许多变型和替代是可能的。
现在参考图12,所示出的是可与多个实施例一起使用的示例系统的框图。正如所见,系统1200可以是智能电话或其他无线通信器。基带处理器1205配置成执行关于将从该系统发送或由该系统接收的通信信号的各种信号处理。基带处理器1205进而被耦合至应用处理器1210,该应用处理器1210可以是系统的主CPU,用于除了执行诸如许多公知的社交媒体与多媒体应用的用户应用之外还执行OS以及其他系统软件。应用处理器1210可以进一步被配置成为该设备执行各种其他计算操作。
应用处理器1210进而可耦合至用户接口/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可耦合至存储器系统,该存储器系统包括非易失性存储器(即,闪存1230)和系统存储器(即,动态随机存取存储器(DRAM)1235)。如进一步所见,应用处理器1210进一步耦合至捕捉设备1240,该捕捉设备1240诸如可记录视频和/或静止图像的一个或多个图像捕捉设备。
仍然参考图12,包括订户身份模块并且可能包括安全存储和加密处理器的通用集成电路卡(UICC)1240也被耦合至应用处理器1210。系统1200可进一步包括可以耦合至应用处理器1210的安全处理器1250。多个传感器1225可以耦合至应用处理器1210以实现诸如加速度计与其他环境信息之类的各种感测到的信息的输入。音频输出设备1295可提供接口,以便例如以语音通信、播放的或流式音频数据等的形式输出声音。
如进一步所图示,提供近场通信(NFC)非接触式接口1260,其经由NFC天线1265在NFC近场中通信。尽管在图12中示出分开的天线,但是应理解,在一些实现方式中,可以提供一根天线或不同组的天线以实现各种无线功能。
功率管理集成电路(PMIC)1215耦合至应用处理器1210以执行平台级功率管理。为此,PMIC 1215可以根据需要将进入某些低功率状态的功率管理请求发布到应用处理器1210。此外,基于平台约束,PMIC 1215还可控制系统1200的其他组件的功率水平。
为了使通信能够被传送和接收,可以在基带处理器1205与天线1290之间耦合各种电路。具体而言,可以存在射频(RF)收发机1270与无线局域网(WLAN)收发机1275。一般而言,可以根据诸如3G或4G无线通信协议(诸如,根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议)的给定的无线通信协议,使用RF收发机1270来接收并传送无线数据和呼叫。此外,可以存在GPS传感器1280。也可以提供其他无线通信,诸如,无线电信号(例如,AM/FM和其他信号)的接收或传送。此外,也可以经由WLAN收发机1275实现本地无线通信。
现在参考图13,所示出的是可与多个实施例一起使用的另一示例系统的框图。在图13的示图中,系统1300可以是诸如平板计算机、2:1平板、平板手机或其他可转换或独立式平板系统之类的移动低功率系统。如所图示,SoC 1310存在,并且可配置成作为设备的应用处理器进行操作。
各种设备可耦合至SoC 1310。在所示示图中,存储器子系统包括耦合至SoC 1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合至SoC 1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接性,SoC 1310耦合至以太网接口1330。外围中枢1325耦合至SoC 1310以启用与各种外围设备的对接,诸如,可通过各种端口或其他连接器中的任何一个而被耦合至系统1300。
除了SoC 1310内的内部功率管理电路和功能之外,PMIC 1380还耦合至SoC 1310以提供基于平台的功率管理,例如,基于该系统是由电池1390供电还是经由交流适配器1395由交流电供电。除了该基于功率源的功率管理之外,PMIC 1380可进一步基于环境和使用条件执行平台功率管理活动。更进一步地,PMIC 1380可将控制和状态信息传递给SoC1310,以引起SoC 1310内的各种功率管理动作。
仍然参考图13,为了提供无线能力,WLAN单元1350被耦合至SoC 1310,并进而耦合至天线1355。在各种实现方式中,WLAN单元1350可以根据一种或多种无线协议提供通信。
如进一步所图示,多个传感器1360可耦合至SoC 1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿势传感器。最后,音频编解码器1365被耦合至SoC1310以向音频输出设备1370提供接口。当然会理解的是,虽然以图13中的该特定实现方式示出,但是许多变型和替代是可能的。
现在参考图14,所示为诸如笔记本、超级本TM或其他小形状因子系统的代表性计算机系统的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知的处理元件。在所图示的实现中,处理器1410充当主处理单元以及用于与系统1400的各种组件中的许多组件进行通信的中央枢纽,并且处理器1410可包括如本文中所述的功率管理电路。作为一个示例,处理器1410被实现为SoC。在实施例中,处理器1410可包括如本文中所述的功率控制单元以及用于存储从封装级源和线程级源接收的性能状态提示设置的配置寄存器或其他MSR。取决于所指示的控制,功率控制单元可基于这些设置的组合或基于仅来自单个源的设置来确定用于一个或多个核的性能状态。
在一个实施例中,处理器1410与系统存储器1415通信。作为说明性示例,系统存储器1415经由多个存储器设备或模块来实现以提供给定量的系统存储器。
为提供对诸如数据、应用、一个或多个操作系统等之类的信息的持续性存储,大容量存储1420还可耦合到处理器1410。在各种实施例中,为了实现更薄且更轻的系统设计并且为了改善系统响应性,该大容量存储可以经由SSD来实现,或者该大容量存储可以主要使用具有较小量的SSD存储的硬盘驱动器(HDD)来实现,该较小量的SSD存储充当SSD高速缓存,以在掉电事件期间实现对上下文状态和其他此类信息的非易失性存储,从而在重新启动系统活动时,快速上电可以发生。图14中还示出闪存设备1422可以例如经由串行外围接口(SPI)被耦合至处理器1410。该闪存设备可以提供对系统软件的非易失性存储,该系统软件包括基本输入/输出软件(BIOS)以及系统的其他固件。
系统1400内可以存在各种输入/输出(I/O)设备。图14的实施例中具体示出显示器1424,该显示器1424可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由显示互连被耦合至处理器1410,该显示互连可被实现为高性能图形互连。触摸屏1425可以经由另一互连被耦合至处理器1410,在实施例中,该另一互连可以是I2C互连。如图14中进一步所示,除触摸屏1425之外,通过触摸进行的用户输入也可以经由触板1430发生,触板1430可以配置在机架内,并且还可以耦合到与触摸屏1425相同的I2C互连。
出于感知性计算和其他目的,各种传感器可以存在于系统内,并且能以不同的方式被耦合到处理器1410。某些惯性传感器和环境传感器可通过传感器中枢1440(例如经由I2C互连)耦合到处理器1410。在图14中示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443以及陀螺仪1444。其他环境传感器可包括一个或多个热传感器1446,在一些实施例中,这些热传感器1446经由系统管理总线(SM总线)总线耦合至处理器1410。
图14中还可见,各种外围设备可以经由低引脚计数(LPC)互连耦合至处理器1410。在所示的实施例中,可以通过嵌入式控制器1435来耦合各个组件。此类组件可包括(例如,经由PS2接口耦合的)键盘1436、风扇1437以及热传感器1439。在一些实施例中,触板1430还可以经由PS2接口耦合至EC 1435。此外,诸如可信平台模块(TPM)1438之类的安全处理器也可经由该LPC互连耦合至处理器1410。
系统1400能以各种方式(包括以无线方式)与外部设备通信。在图14中示出的实施例中,存在各种无线模块,其中的每一个无线模块都可以对应于针对特定的无线通信协议而配置的无线电装置。用于在短距离(诸如,近场)内进行无线通信的一种方式可以经由NFC单元1445,在一个实施例中,该NFC单元1445可以经由SM总线与处理器1410进行通信。注意,经由该NFC单元1445,彼此紧邻的设备可以进行通信。
如图14中进一步所见,附加的无线单元可包括其他短距离无线引擎,包括WLAN单元1450和蓝牙TM单元1452。通过使用WLAN单元1450,可以实现Wi-FiTM通信,而通过蓝牙TM单元1452,可以发生短距离蓝牙TM通信。这些单元可以经由给定的链路与处理器1410通信。
另外,(例如,根据蜂窝式或其他无线广域协议的)无线广域通信可以经由WWAN单元1456进行,该WWAN单元1456进而可以耦合至订户身份模块(SIM)1457。另外,为了允许接收并使用位置信息,还可以存在GPS模块1455。注意,在图14中示出的实施例中,WWAN单元1456和诸如相机模块1454之类的集成捕捉设备可以经由给定的链路进行通信。
为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,该DSP 1460可以经由高清晰度音频(I)链路来耦合至处理器1410。类似地,DSP 1460可以与集成的编码器/解码器(CODEC)和放大器1462进行通信,该集成的编解码器和放大器1462进而可以耦合至可以在机架内实现的输出扬声器1463。类似地,放大器和CODEC 1462可被耦合以从话筒1465接收音频输入,在实施例中,该话筒1465可以经由双阵列话筒(诸如,数字话筒阵列)来实现,以提供高质量音频输入从而实现对系统内的各种操作的语音激活的控制。另外注意,可以将音频输出从放大器/CODEC 1462提供到头戴式耳机插孔1464。虽然在图14的实施例中利用这些特定组件示出,但应理解本发明的范围不限于此方面。
能以许多不同的系统类型来实现多个实施例。现在参考图15,所示出的是根据本发明实施例的系统的框图。如图15中所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15中所示,处理器1570和1580中的每一个可以是包括第一处理器核和第二处理器核(即,处理器核1574a和1574b以及处理器核1584a和1584b)的多核处理器,但是这些处理器中可能存在多得多的核。处理器中的每一个可以包括PCU或其他功率管理逻辑以执行本文中所述的基于处理器的功率管理,包括使用例如作为OS和线程状态的部分而被获取的或通过配置寄存器提供的封装级性能状态提示设置和线程级性能状态提示设置的组合而作出的性能状态确定。
仍然参考图15,第一处理器1570进一步包括存储器控制器中枢(MCH)1572和点对点(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包括用于通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合的接口1592。芯片组1590进而可以经由接口1596被耦合至第一总线1516。如图15中所示,各种输入/输出(I/O)设备1514和总线桥接器1518可被耦合至第一总线1516,该总线桥接器1518将第一总线1516耦合至第二总线1520。在一个实施例中,各种设备可被耦合至第二总线1520,这些设备包括例如,键盘/鼠标1522、通信设备1526以及数据存储单元1528,该数据存储单元1528诸如可包括代码1530的盘驱动器或者他大容量存储设备。此外,音频I/O 1524可被耦合至第二总线1520。可将多个实施例并入其他类型的系统中,其他类型的系统包括诸如智能蜂窝电话、平板计算机、上网本、超级本TM等之类的移动设备。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性代码实现,该代表性代码表示和/或定义诸如处理器的集成电路内的逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可使机器制造逻辑以执行本文中所述的技术。被称为“IP核”的此类表示是集成电路的逻辑的可重用单元,这些可重用单元可被存储在有形的机器可读介质上作为描述集成电路的结构的硬件模型。可将硬件模型提供给各个客户或生产设施,这些客户或生产设施将硬件模型加载在制造集成电路的制造机器上。集成电路可以被制造使得该电路执行与本文中所述的实施例中的任一个相关联地描述的操作。
图16是图示出根据实施例的可用于制造集成电路以执行操作的IP核开发系统1600的框图。IP核开发系统1600可用于生成可并入较大的设计中或用于构建整个集成电路(例如,SoC集成电路)的模块化的、可重复使用的设计。设计设施1630可以用高级编程语言(例如,C/C++)生成IP核设计的软件仿真1610。软件仿真1610可用于设计、测试或验证IP核的行为。随后可以从仿真模型1600创建或合成寄存器传送级(RTL)设计。RTL设计1615是对硬件寄存器之间的数字信号的流建模的集成电路的行为的抽象,包括使用建模的数字信号来执行的相关联的逻辑。除了RTL设计1615之外,还可创建、设计或合成在逻辑级或晶体管级的较低层级的设计。因此,初始设计和仿真的特定细节可以有所不同。
可通过设计设施进一步将RTL设计1615或等价物合成到硬件模型1620中,该硬件模型1620可以按照硬件描述语言(HDL)或物理设计数据的某种其他表示。可进一步仿真或测试HDL以验证IP核设计。可使用非易失性存储器1640(例如,硬盘、闪存、或任何非易失性存储介质)存储IP核设计以递送到第三方制造设施1665。替代地,可以通过有线连接1650或无线连接1660(例如,经由因特网)传送IP核设计。制造设施1665随后可以制造至少部分地基于该IP核设计的集成电路。所制造的集成电路可配置为执行根据本文中所述的至少一个实施例的操作。
如文本中所述的功率控制器可自主地选择性能状态,同时利用被称为硬件控制的性能状态(HWP)的OS和/或线程提供的性能引导提示。当HWP活跃时,诸如功率控制器之类的处理器硬件可自主地将性能状态选择为对于所应用的工作负荷被认为是合适的,并且考虑如本文中所述的由OS和/或执行线程编程的约束提示。这些提示包括作为实施例中的示例的最低和最高性能限值、对能效或性能的偏好以及相关工作负荷历史观察时间窗口的指定。
现在参考图17,所示为根据本发明的实施例的方法的流程图。如图17中所示,方法1700可由硬件、软件和/或固件的组合来执行,该组合包括功率控制器和相关的功率控制软件的至少多个部分,诸如,硬件功率控制电路,该硬件功率控制电路自身可被实现为一个或多个微控制器或其他硬件控制逻辑。如图所示,方法1700开始于:接收处理器性能状态控制参数并将其存储在第一配置存储中(框1710)。在一个实施例中,该第一配置存储可以是MSR,诸如,硬件P状态请求封装寄存器。这些处理器性能状态控制参数可与所谓的公共控制参数或封装控制参数对应,这些公共控制参数或封装控制参数可用于由OS向功率控制器提供请求或提示,以供在进行性能状态控制决策时使用。在实施例中,这些公共处理器性能状态控制参数可例如由OS在引导操作期间提供。应理解,在一些情况下,可在平台的给定的引导期间静态地提供并存储这些处理器性能状态控制参数。在其他情况下,例如,由于工作负荷改变,可在操作期间动态地更新这些参数中的一个或多个。对于这种类型的使用模型,静态设置可经由封装MSR来实现,而动态改变可经由线程级MSR来实现。
仍然参考图17,接下来可接收线程性能状态控制参数并将其存储在第二配置存储中(框1720)。在一个实施例中,该第二配置存储可以是另一MSR,诸如,硬件P状态请求寄存器。在实施例中,OS可例如在向新线程的上下文切换时将线程特定的性能状态控制参数写入到这个存储中(并且可类似地连同在另一线程切换事件时的线程的其他上下文一起保存这些值)。除了这些值(这些值中的每个值可与在第一配置寄存器中的相同参数对应)之外,还可存储封装控制指示符以指示将使用这些线程特定的值还是上述封装值。
接下来,在框1730处,可接收并存储多个线程有效性指示符。在实施例中,可将这些线程有效性指示符存储在第二配置存储的有效字段中,这些线程有效性指示符中的每一个可以是单个位。在一个实施例中,这些指示符可被设置为逻辑一或经设置状态,以指示存储在该配置存储的对应字段中的线程性能状态控制参数是有效的,从而将由功率控制器在确定性能状态时使用。当然,在其他实施例中,可在另一处理器位置中暗示或存储这些线程特定的指示符。
仍然参考图17,接下来,可判定是否所有这些线程有效指示符都被设置(菱形框1740)。如果是(并且如下文所述,假定线程控制被设置),则控制传递至框1750,在框1750处,可基于第二配置寄存器中的提示来确定用于处理器的、线程正在其上执行的核或其他部分的性能状态。注意,功率控制器可根据各种各样的技术来确定合适的功率状态。在一些情况下,可使用基于表的查找技术来应用(来自线程和OS中的一者或这两者的)合适的性能状态提示,以便基于这些提示来标识对应的性能状态。注意,该性能状态可与针对特定性能状态的给定的操作频率和操作电压对应,在一些情况下,该特定性能状态可与OSPM的给定的P状态对应。在其他情况下,至少部分地基于所指示的提示信息,功率控制器可例如通过执行一个或多个计算来动态地确定合适的性能状态。应理解,在任何情况下,功率控制器可进一步将约束考虑在内,约束包括电气约束、热约束和功率约束,等等。
相反,如果判定不是所有这些线程有效指示符都被设置,则控制传递至菱形框1760,在该菱形框1760处,可判定是否所有这些线程有效指示符都处于重置状态。替代地,该判定可采取如下形式:判定第二配置寄存器的封装控制指示符是活跃的,这意味着将基于第一配置寄存器中的提示(并且排除第二配置寄存器中的提示信息)来设置性能状态。
如果(如菱形框1760处所判定)指示了封装控制,则控制传递至框1770,在框1770处,可基于第一配置寄存器中的提示来设置用于处理器的核或其他部分的性能状态。否则,控制传递至框1780,在框1780处,可基于存储在这两个配置寄存器中的提示的组合来设置核或其他处理器部分的性能状态。也就是说,功率控制器可使用存储在第二配置寄存器的、对其存在经设置的线程有效指示符的字段中的性能状态控制参数。相反,对于线程有效指示符对其具有重置状态的任何字段,可使用来自第一配置寄存器的性能状态控制参数。以此类方式,性能状态判定是基于来自这两个配置寄存器的配置参数的组合。应理解,虽然在图17的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
现在参考图18,所示出的是根据本发明的实施例的配置寄存器的框图。如图18中所示,配置寄存器1800可以是提供线程级性能状态信息的MSR。更具体地,如图18中所图示,配置寄存器1800包括适于存储线程级性能状态控制参数的多个字段1810-1850。此外,配置寄存器1800进一步包括用于封装控制指示符的字段1860,该字段1860可用于指示是否将使用字段1810-1850中的值(或者替代地,是否将使用处理器范围的性能状态控制参数集)。如进一步所图示,配置寄存器1800还包括有效字段1870,该有效字段1870存储多个单独的线程有效性指示符,这些线程有效性指示符用于指示当在确定用于处理器的合适的性能状态时将使用该线程级存储的性能状态控制参数和处理器范围的值的集合的组合时,是否将使用存储在字段1810-1850中的一个字段中的对应值。虽然配置寄存器1800示出为包括特定字段,但是应理解,在其他实施例中,附加的或不同的字段是可能的。此外,字段在该配置存储中的布置能以其他方式来实现。
如图所示,字段1810可存储最低性能值,该最低性能值传达根据需要实现所需的QoS或满足服务水平协议(SLA)的最低性能提示。注意,由于硬件约束,偏离到低于所指定水平是可能的。
字段1820可传达最高性能值,该最高性能值传达限制期望提供的最高性能的提示。由于处理器核与处理器中的其他组件之间的硬件协调,偏离到高于OS所请求的限值是可能的。
字段1830可存储期望性能值以传达提示,该提示当被设置为零时使硬件自主地确定性能目标。当被设置为(例如,最低性能与最高性能的范围之间的)非零值时,该字段将显式的性能请求提示传达给硬件,从而有效地禁用硬件自主选择。在一个实施例中,期望性能输入在独立地受控的性能和能效优化方面可以是非约束性的。在实施例中,该字段的默认值为零。
字段1840可存储能量性能偏好值,该能量性能偏好值用于传达(从性能偏好到能效偏好的)值范围内的、用于影响性能增加/减少的速率以及硬件的能效和性能优化的结果的提示。
字段1850可存储活动窗口值,该活动窗口值用于传达用于为性能/频率优化指定移动的工作负荷历史观察窗口的提示。与能量性能偏好输入相结合,该活动窗口值影响性能增加/减少的速率。
最终,封装控制指示符可存储在字段1860中,该封装控制指示符也称为处理器控制指示符,该封装控制指示符当被设置时,使得对相关联的线程的性能状态确定基于封装性能状态配置参数(而不是配置寄存器1800中的任何提示信息)。
如图18中进一步所图示,有效字段1870包括各自都与字段1810-1850中的一个字段相关联的多个有效指示符。在实施例中,当对应的提示信息被写入到配置寄存器1800中时,可由OS设置这些线程有效性指示符。并且在该实施例中,给定的线程有效性指示符的经设置的状态指示:功率控制器在确定合适的功率状态时将使用给定字段中的对应提示(假定存储在字段1860中的封装控制指示符被重置)。然而,应理解,这些有效指示符或位也可以是隐式的,使得特殊值(例如,零)而不是实际的位可充当有效位。
现在参考图19,所示出的是根据本发明的实施例的另一配置寄存器的框图。如图19中所示,配置寄存器1900可以是提供处理器级性能状态信息的MSR。如图19中所示,用于提供用于自主性能状态操作的封装范围级提示/约束的公共控制可由OS提供,并且可被存储在配置寄存器1900中。应注意,配置寄存器1900可具有与具有字段1910-1950的配置寄存器1800相同的结构,例外在于封装控制字段(和有效字段),其不存在于配置寄存器1900中。如本文中所述,被写入该MSR的字段值应用于该物理封装内的所有逻辑处理器,例外是具有经重置的(例如,逻辑零)封装控制指示符的逻辑处理器。在实施例中,配置寄存器1900的高阶位可以是预留的。注意,功率控制器可酌情将字段值修剪并解析到有效范围。
OS可通过将期望性能字段设置为非零值来用特定的性能目标覆盖PCU对性能状态的自主选择。然而,所递送的有效频率可受制于能效和性能优化的结果,该能效和性能优化的结果受能量性能偏好字段影响。在实施例中,软件可通过将最低性能值设置为等于最高性能值(受制于封装协调)来禁用所有硬件优化。注意,由于包括功率、热和封装协调约束的硬件约束,处理器可在低于最低性能水平下运行。
现在参考图20,所示的是根据实施例的处理器的部分的框图。正如所见,处理器2000包括如上文所述的配置寄存器。更具体地,往回参见图18和图19,处理器2000包括第一配置寄存器1800和第二配置寄存器1900,该第一配置寄存器1800可存储线程特定的性能状态控制参数和对应的有效指示符,该第二配置寄存器1900可存储例如由OS提供的封装性能状态控制参数。
如在图20中进一步所图示,提供功率控制单元2020。PCU 2020接收来自这些配置寄存器的传入信息。更具体地,OS经由OS通信机制2010提供来自第二配置寄存器1900的OS策略设置。进而,经由另一OS机制2005,在上下文切换时,提供来自第一配置寄存器1800的线程特定的值。
通过第一配置寄存器1800中标识的各种性能状态配置参数和控制(即,封装控制指示符,并且如果适用的话,还有各个单独的线程有效指示符),可由PCU 2020接收并使用线程级提示和OS级提示的组合以确定供应用于一个或多个核的合适的性能状态。因此,正如所见,PCU 2020提供核电压/频率设置2025以及其他类型的SoC和平台功率控制(像核工作周期)。更具体地,设置2025可包括将发送至电压调节器以使该电压调节器输出所请求的操作电压的电压标识符(VID)。设置2025的频率设置转而可被提供给一个或多个时钟发生电路以允许生成一个或多个时钟信号,用于供应至一个或多个核或者一个或多个核的多个部分。例如,其他使用模型和线程/封装组合是可能的,诸如,在引导时提供封装级控制(包括静态的值和重置的值),随后由线程完成对请求字段的给定子集的动态改变。
应理解,虽然在图20的实施例中以该高层级示出,但是许多变型和替换方案是可能的。
以下示例关于进一步的实施例。
在示例中,一种处理器包括:多个核,用于执行多个线程;第一存储,用于存储与处理器相关联的第一组处理器性能状态控制参数,该第一组处理器性能状态控制参数用于在确定用于处理器的至少部分的性能状态时使用;第二存储,用于存储与第一线程相关联的第二组性能状态控制参数,该第二组性能状态控制参数用于在确定用于处理器的、第一线程用于在其上执行的第一部分的性能状态时使用;以及功率控制器,用于基于线程选择指示符、根据第一组处理器性能状态控制参数中的一个或多个处理器性能状态控制参数以及第二组性能状态控制参数中的一个或多个性能状态控制参数的组合来控制处理器的第一部分的性能状态。
在示例中,线程选择指示符包括第二存储的有效字段。
在示例中,有效字段包括各自都与第二组性能状态控制参数中的性能状态控制参数相关联的多个有效指示符。
在示例中,第二存储进一步包括处理器控制指示符,并且功率控制器用于:当处理器控制指示符具有第一状态时,根据第一组处理器性能状态参数来控制处理器的性能状态。
在示例中,至少部分地基于多个有效指示符中的至少一个有效指示符,功率控制器用于根据第二组性能状态控制参数中的至少一个性能状态控制参数来控制处理器的第一部分的性能状态。
在示例中,功率控制器用于:当多个有效指示符具有第一状态时,根据第二组性能状态控制参数来控制处理器的第一部分的性能状态;以及当多个有效指示符具有第二状态时,根据第一组处理器性能状态控制参数来控制处理器的第一部分的性能状态。
注意,可以使用各种手段来实现以上处理器。
在示例中,处理器包括被并入启用用户装备触摸的设备中的SoC。
在另一示例中,一种系统包括显示器和存储器,并且包括如以上示例中的一个或多个示例所述的处理器。
在另一示例中,一种方法包括:将处理器性能状态提示存储在处理器的第一配置存储中,该处理器性能状态提示与操作系统相关联;将线程性能状态提示存储在处理器的第二配置存储中,该线程性能状态提示与第一线程相关联;以及将与线程性能状态提示相关联的多个有效指示符存储在处理器中。
在示例中,该方法进一步包括:基于处理器性能状态提示和线程性能状态提示的组合来确定用于第一线程在其上执行的第一处理引擎的性能状态。
在示例中,该方法进一步包括:当多个有效指示符具有第一状态时,基于线程性能状态提示确定用于第一处理引擎的性能状态;以及当多个有效指示符具有第二状态时,基于处理器性能状态提示确定用于第一处理引擎的性能状态。
在示例中,该方法进一步包括:当第二配置存储的封装控制指示符具有第一状态时,基于处理器性能状态提示确定用于第一处理引擎的性能状态。
在示例中,该方法进一步包括:经由操作系统和基本输入/输出系统中的至少一个来设置处理器性能状态提示;以及经由用户应用来设置线程性能状态提示。
在示例中,该方法进一步包括:在向第一线程的上下文切换时,将线程性能状态提示存储在第二配置存储中;以及连同在从第一线程的上下文切换时的第一线程的上下文一起存储线程性能状态提示。
在示例中,该方法进一步包括:基于线程性能状态提示中的至少一个线程性能状态提示,控制第一处理引擎以在第一线程的执行期间具有第一性能状态;以及基于与第二线程相关联的一个或多个线程性能状态提示,控制第一处理引擎以在第二线程的执行期间具有第二性能状态,第二性能状态是比第一性能状态更低的性能状态,第一线程包括实时线程,并且第二线程包括背景线程。
在另一示例中,计算机可读介质包括指令,该指令用于执行如以上示例中的任一项所述的方法。
在另一示例中,计算机可读介质包括数据,该数据用于由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项所述的方法。
在另一示例中,一种设备包括用于执行如以上示例中的任一项所述的方法的装置。
在另一示例中,一种系统包括:处理器,该处理器具有多个核,多个核中的至少一个核用于以多线程模式执行。该处理器进一步包括:第一存储,用于存储公共性能状态请求设置的集合;第二存储,用于存储线程性能状态请求设置的集合;以及控制器,用于基于公共性能状态请求设置中的至少一个和线程性能状态请求设置中的至少一个的组合来控制第一核的性能状态。该系统可进一步包括至少一个电压调节器,该至少一个电压调节器耦合至处理器。
在示例中,控制器用于:当第二存储的封装控制指示符具有第二状态时,基于组合来控制第一核的性能状态。
在示例中,控制器用于:进一步当与线程性能状态请求设置的集合相关联的多个有效指示符中的一个或多个有效指示符具有第一状态时,基于组合来控制第一核的性能状态。
在示例中,控制器用于:当第二存储的封装控制指示符具有第一状态时,基于公共性能状态请求设置的集合来控制第一核的性能状态。
在示例中,线程性能状态设置的集合中的所述至少一个线程性能状态设置包括线程的最低性能请求和该线程的能量性能偏好中的至少一项,该线程用于在第一核上执行。
在示例中,处理器用于响应于恢复指令而将线程性能状态请求设置的集合存储在第二存储中,并用于响应于保存指令而将线程性能状态请求设置的集合保存到存储器。
在另一示例中,一种设备包括:第一装置,用于存储处理器性能状态提示,该处理器性能状态提示与操作系统相关联;第二装置,用于存储线程性能状态提示,该线程性能状态提示与第一线程相关联;以及用于基于处理器性能状态提示和线程性能状态提示的组合来确定用于第一线程在其上执行的第一处理装置的性能状态的装置。
在示例中,该设备进一步包括:第三装置,用于存储与线程性能状态提示相关联的多个有效指示符。用于确定的装置可以:当多个有效指示符具有第一状态时,基于线程性能状态提示确定用于第一处理引擎的性能状态;以及当多个有效指示符具有第二状态时,基于处理器性能状态提示确定用于第一处理引擎的性能状态。
在示例中,该设备进一步包括:第一设置装置,用于设置处理器性能状态提示;以及第二设置装置,用于设置线程性能状态提示。
在示例中,该设备进一步包括:用于基于线程性能状态提示中的至少一个线程性能状态提示来控制第一处理引擎以在第一线程的执行期间具有第一性能状态的装置;以及用于基于与第二线程相关联的一个或多个线程性能状态提示来控制第一处理引擎以在第二线程的执行期间具有第二性能状态的装置,第二性能状态是比第一性能状态更低的性能状态,第一线程包括实时线程,并且第二线程包括背景线程。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所示用,这些术语以及术语“逻辑”用于单独地或以任何组合指模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备实行本文中所描述的方法与技术中的一者或多者。
实施例可实现在代码中,并且可存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,该指令可以用于将系统编程为用于执行指令。实施例还可实现在数据中,并且可存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用,则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可实现在计算机可读存储介质中,该计算机可读存储介质包括信息,该信息当被制造到SoC或其他处理器中时,用于配置该SoC或其他处理器以执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
Claims (25)
1.一种处理器,包括:
多个核,用于执行多个线程;
第一存储,用于存储与所述处理器相关联的第一组处理器性能状态控制参数,所述第一组处理器性能状态控制参数用于在确定用于所述处理器的至少部分的性能状态时使用;
第二存储,用于存储与第一线程相关联的第二组性能状态控制参数,所述第二组性能状态控制参数用于在确定用于所述处理器的、所述第一线程用于在其上执行的第一部分的性能状态时使用;以及
功率控制器,用于基于线程选择指示符、根据所述第一组处理器性能状态控制参数中的一个或多个处理器性能状态控制参数以及所述第二组性能状态控制参数中的一个或多个性能状态控制参数的组合来控制所述处理器的所述第一部分的性能状态。
2.如权利要求1所述的处理器,其中,所述线程选择指示符包括所述第二存储的有效字段。
3.如权利要求2所述的处理器,其中,所述有效字段包括各自都与所述第二组性能状态控制参数中的性能状态控制参数相关联的多个有效指示符。
4.如权利要求3所述的处理器,其中,所述第二存储进一步包括处理器控制指示符,并且其中,所述功率控制器用于:当所述处理器控制指示符具有第一状态时,根据所述第一组处理器性能状态控制参数来控制所述处理器的性能状态。
5.如权利要求3所述的处理器,其中,至少部分地基于所述多个有效指示符中的至少一个有效指示符,所述功率控制器用于根据所述第二组性能状态控制参数中的至少一个性能状态控制参数来控制所述处理器的所述第一部分的性能状态。
6.如权利要求5所述的处理器,其中,所述功率控制器用于:
当所述多个有效指示符具有第一状态时,根据所述第二组性能状态控制参数来控制所述处理器的所述第一部分的性能状态;以及
当所述多个有效指示符具有第二状态时,根据所述第一组处理器性能状态控制参数来控制所述处理器的所述第一部分的性能状态。
7.一种方法,包括:
将处理器性能状态提示存储在处理器的第一配置存储中,所述处理器性能状态提示与操作系统相关联;
将线程性能状态提示存储在所述处理器的第二配置存储中,所述线程性能状态提示与第一线程相关联;以及
将与所述线程性能状态提示相关联的多个有效指示符存储在所述处理器中。
8.如权利要求7所述的方法,进一步包括:基于所述处理器性能状态提示和所述线程性能状态提示的组合来确定用于所述第一线程在其上执行的第一处理引擎的性能状态。
9.如权利要求8所述的方法,进一步包括:
当所述多个有效指示符具有第一状态时,基于所述线程性能状态提示确定用于所述第一处理引擎的性能状态;以及
当所述多个有效指示符具有第二状态时,基于所述处理器性能状态提示确定用于所述第一处理引擎的性能状态。
10.如权利要求8所述的方法,进一步包括:当所述第二配置存储的封装控制指示符具有第一状态时,基于所述处理器性能状态提示确定用于所述第一处理引擎的性能状态。
11.如权利要求7所述的方法,进一步包括:
经由所述操作系统和基本输入/输出系统中的至少一个来设置所述处理器性能状态提示;以及
经由用户应用来设置所述线程性能状态提示。
12.如权利要求7所述的方法,进一步包括:在向所述第一线程的上下文切换时,将所述线程性能状态提示存储在所述第二配置存储中;以及连同在从所述第一线程的上下文切换时的所述第一线程的上下文一起存储线程性能状态提示。
13.如权利要求7所述的方法,进一步包括:
基于所述线程性能状态提示中的至少一个线程性能状态提示,控制第一处理引擎以在所述第一线程的执行期间具有第一性能状态;以及
基于与第二线程相关联的一个或多个线程性能状态提示,控制所述第一处理引擎以在所述第二线程的执行期间具有第二性能状态,所述第二性能状态是比所述第一性能状态更低的性能状态,所述第一线程包括实时线程,并且所述第二线程包括背景线程。
14.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令在被执行时用于实现如权利要求7至13中任一项所述的方法。
15.一种设备,包括用于执行如权利要求7至13中任一项所述的方法的装置。
16.一种系统,包括:
处理器,所述处理器具有多个核,所述多个核中的至少一个核用于以多线程模式执行,所述处理器进一步包括:
第一存储,用于存储公共性能状态请求设置的集合;
第二存储,用于存储线程性能状态请求设置的集合;以及
控制器,用于基于所述公共性能状态请求设置的集合中的至少一个公共性能状态请求设置以及所述线程性能状态请求设置的集合中的至少一个线程性能状态请求设置的组合来控制第一核的性能状态;以及
至少一个电压调节器,耦合至所述处理器。
17.如权利要求16所述的系统,其中,所述控制器用于:当所述第二存储的封装控制指示符具有第二状态时,基于所述组合来控制所述第一核的性能状态。
18.如权利要求17所述的系统,其中,所述控制器用于:进一步当与所述线程性能状态请求设置的集合相关联的多个有效指示符中的一个或多个有效指示符具有第一状态时,基于所述组合来控制所述第一核的性能状态。
19.如权利要求17所述的系统,其中,所述控制器用于:当所述第二存储的所述封装控制指示符具有第一状态时,基于所述公共性能状态请求设置的集合来控制所述第一核的性能状态。
20.如权利要求16所述的系统,其中,所述线程性能状态设置的集合中的所述至少一个线程性能状态设置包括线程的最低性能请求和所述线程的能量性能偏好中的至少一项,所述线程用于在所述第一核上执行。
21.如权利要求16所述的系统,其中,所述处理器用于响应于恢复指令而将所述线程性能状态请求设置的集合存储在所述第二存储中,并用于响应于保存指令而将所述线程性能状态请求设置的集合保存到存储器。
22.一种设备,包括:
第一装置,用于存储处理器性能状态提示,所述处理器性能状态提示与操作系统相关联;
第二装置,用于存储线程性能状态提示,所述线程性能状态提示与第一线程相关联;以及
用于基于所述处理器性能状态提示和所述线程性能状态提示的组合来确定用于所述第一线程在其上执行的第一处理装置的性能状态的装置。
23.如权利要求22所述的设备,进一步包括:
第三装置,用于存储与所述线程性能状态提示相关联的多个有效指示符,并且其中,用于确定的装置用于:当所述多个有效指示符具有第一状态时,基于所述线程性能状态提示来确定用于所述第一处理引擎的性能状态;以及当所述多个有效指示符具有第二状态时,基于所述处理器性能状态提示来确定用于所述第一处理引擎的性能状态。
24.如权利要求22所述的设备,进一步包括:
第一设置装置,用于设置所述处理器性能状态提示;以及
第二设置装置,用于设置所述线程性能状态提示。
25.如权利要求22所述的设备,进一步包括:
用于基于所述线程性能状态提示中的至少一个线程性能状态提示来控制所述第一处理引擎以在所述第一线程的执行期间具有第一性能状态的装置;以及
用于基于与第二线程相关联的一个或多个线程性能状态提示来控制所述第一处理引擎以在所述第二线程的执行期间具有第二性能状态的装置,所述第二性能状态是比所述第一性能状态更低的性能状态,所述第一线程包括实时线程,并且所述第二线程包括背景线程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/252,511 US10379904B2 (en) | 2016-08-31 | 2016-08-31 | Controlling a performance state of a processor using a combination of package and thread hint information |
US15/252,511 | 2016-08-31 | ||
PCT/US2017/045257 WO2018044492A1 (en) | 2016-08-31 | 2017-08-03 | Controlling a performance state of a processor using a combination of package and thread hint information |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109564526A true CN109564526A (zh) | 2019-04-02 |
CN109564526B CN109564526B (zh) | 2023-05-23 |
Family
ID=61242545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780046763.1A Active CN109564526B (zh) | 2016-08-31 | 2017-08-03 | 使用封装和线程提示信息的组合来控制处理器的性能状态 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10379904B2 (zh) |
CN (1) | CN109564526B (zh) |
DE (1) | DE112017004361T5 (zh) |
WO (1) | WO2018044492A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176408A (zh) * | 2019-12-06 | 2020-05-19 | 福州瑞芯微电子股份有限公司 | 一种SoC的低功耗处理方法和装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11297138B2 (en) * | 2016-08-31 | 2022-04-05 | Netflix, Inc. | Techniques for dynamically benchmarking cloud data store systems |
US11182315B2 (en) * | 2017-02-10 | 2021-11-23 | Intel Corporation | Apparatuses, methods, and systems for hardware control of processor performance levels |
US10877548B2 (en) * | 2018-03-09 | 2020-12-29 | Hewlett Packard Enterprise Development Lp | Context switches with processor performance states |
US10955899B2 (en) | 2018-06-20 | 2021-03-23 | Intel Corporation | System, apparatus and method for responsive autonomous hardware performance state control of a processor |
US10976801B2 (en) | 2018-09-20 | 2021-04-13 | Intel Corporation | System, apparatus and method for power budget distribution for a plurality of virtual machines to execute on a processor |
US11269396B2 (en) * | 2018-09-28 | 2022-03-08 | Intel Corporation | Per-core operating voltage and/or operating frequency determination based on effective core utilization |
US11567555B2 (en) * | 2019-08-30 | 2023-01-31 | Intel Corporation | Software assisted power management |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101405706A (zh) * | 2006-03-23 | 2009-04-08 | 英特尔公司 | 弹性地保持多核处理器的状态信息 |
US20090313623A1 (en) * | 2008-06-12 | 2009-12-17 | Sun Microsystems, Inc. | Managing the performance of a computer system |
US20090328058A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Protected mode scheduling of operations |
CN104380269A (zh) * | 2012-10-22 | 2015-02-25 | 英特尔公司 | 高性能互连相干协议 |
CN104508594A (zh) * | 2012-08-31 | 2015-04-08 | 英特尔公司 | 在处理器中配置功率管理功能 |
CN104781803A (zh) * | 2012-12-26 | 2015-07-15 | 英特尔公司 | 用于架构不同核的线程迁移支持 |
US20160092274A1 (en) * | 2014-09-26 | 2016-03-31 | Microsoft Corporation | Heterogeneous Thread Scheduling |
Family Cites Families (89)
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 |
US7010708B2 (en) | 2002-05-15 | 2006-03-07 | Broadcom Corporation | Method and apparatus for adaptive CPU power management |
US7539885B2 (en) | 2000-01-13 | 2009-05-26 | 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 |
JP2006518064A (ja) | 2003-01-23 | 2006-08-03 | ユニバーシティー オブ ロチェスター | マルチクロックドメインを有するマイクロプロセッサ |
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 |
US8190863B2 (en) * | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
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 |
US7600135B2 (en) * | 2005-04-14 | 2009-10-06 | Mips Technologies, Inc. | Apparatus and method for software specified power management performance using low power virtual threads |
US7627770B2 (en) | 2005-04-14 | 2009-12-01 | Mips Technologies, Inc. | Apparatus and method for automatic low power mode invocation in a multi-threaded processor |
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 |
US8028286B2 (en) * | 2006-11-30 | 2011-09-27 | Oracle America, Inc. | Methods and apparatus for scheduling threads on multicore processors under fair distribution of cache and other shared resources of the processors |
US7730340B2 (en) | 2007-02-16 | 2010-06-01 | Intel Corporation | Method and apparatus for dynamic voltage and frequency scaling |
US7647483B2 (en) * | 2007-02-20 | 2010-01-12 | Sony Computer Entertainment Inc. | Multi-threaded parallel processor methods and apparatus |
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 |
US8813080B2 (en) * | 2007-06-28 | 2014-08-19 | Intel Corporation | System and method to optimize OS scheduling decisions for power savings based on temporal characteristics of the scheduled entity and system workload |
US8762692B2 (en) * | 2007-09-27 | 2014-06-24 | Intel Corporation | Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode |
US8381215B2 (en) * | 2007-09-27 | 2013-02-19 | Oracle America, Inc. | Method and system for power-management aware dispatcher |
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 |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
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 |
US20120284729A1 (en) * | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
US8775837B2 (en) | 2011-08-19 | 2014-07-08 | Oracle International Corporation | System and method for enabling turbo mode in a processor |
US8769316B2 (en) | 2011-09-06 | 2014-07-01 | Intel Corporation | Dynamically allocating a power budget over multiple domains of a processor |
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 |
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 |
US8832478B2 (en) | 2011-10-27 | 2014-09-09 | Intel Corporation | Enabling a non-core domain to control memory bandwidth in a processor |
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 |
US8943340B2 (en) | 2011-10-31 | 2015-01-27 | Intel Corporation | Controlling a turbo mode frequency of a processor |
US9158693B2 (en) | 2011-10-31 | 2015-10-13 | Intel Corporation | Dynamically controlling cache size to maximize energy efficiency |
CN104169832B (zh) | 2012-03-13 | 2017-04-19 | 英特尔公司 | 提供处理器的能源高效的超频操作 |
US9436245B2 (en) | 2012-03-13 | 2016-09-06 | Intel Corporation | Dynamically computing an electrical design point (EDP) for a multicore processor |
CN104204999B (zh) | 2012-03-13 | 2017-09-26 | 英特尔公司 | 用于个体核性能状态的方法和装置 |
US9323316B2 (en) | 2012-03-13 | 2016-04-26 | Intel Corporation | Dynamically controlling interconnect frequency in a processor |
US9632822B2 (en) * | 2012-09-21 | 2017-04-25 | Htc Corporation | Multi-core device and multi-thread scheduling method thereof |
US9619284B2 (en) * | 2012-10-04 | 2017-04-11 | Intel Corporation | Dynamically switching a workload between heterogeneous cores of a processor |
US9268609B2 (en) * | 2013-04-30 | 2016-02-23 | Hewlett Packard Enterprise Development Lp | Application thread to cache assignment |
US20150355700A1 (en) | 2014-06-10 | 2015-12-10 | Qualcomm Incorporated | Systems and methods of managing processor device power consumption |
US9870275B2 (en) * | 2015-05-12 | 2018-01-16 | International Business Machines Corporation | Processor thread management |
-
2016
- 2016-08-31 US US15/252,511 patent/US10379904B2/en active Active
-
2017
- 2017-08-03 DE DE112017004361.1T patent/DE112017004361T5/de not_active Withdrawn
- 2017-08-03 CN CN201780046763.1A patent/CN109564526B/zh active Active
- 2017-08-03 WO PCT/US2017/045257 patent/WO2018044492A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101405706A (zh) * | 2006-03-23 | 2009-04-08 | 英特尔公司 | 弹性地保持多核处理器的状态信息 |
US20090313623A1 (en) * | 2008-06-12 | 2009-12-17 | Sun Microsystems, Inc. | Managing the performance of a computer system |
US20090328058A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Protected mode scheduling of operations |
CN104508594A (zh) * | 2012-08-31 | 2015-04-08 | 英特尔公司 | 在处理器中配置功率管理功能 |
CN104380269A (zh) * | 2012-10-22 | 2015-02-25 | 英特尔公司 | 高性能互连相干协议 |
CN104781803A (zh) * | 2012-12-26 | 2015-07-15 | 英特尔公司 | 用于架构不同核的线程迁移支持 |
US20160092274A1 (en) * | 2014-09-26 | 2016-03-31 | Microsoft Corporation | Heterogeneous Thread Scheduling |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176408A (zh) * | 2019-12-06 | 2020-05-19 | 福州瑞芯微电子股份有限公司 | 一种SoC的低功耗处理方法和装置 |
CN111176408B (zh) * | 2019-12-06 | 2021-07-16 | 瑞芯微电子股份有限公司 | 一种SoC的低功耗处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109564526B (zh) | 2023-05-23 |
DE112017004361T5 (de) | 2019-05-16 |
US20180060123A1 (en) | 2018-03-01 |
US10379904B2 (en) | 2019-08-13 |
WO2018044492A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11782492B2 (en) | Techniques to enable communication between a processor and voltage regulator | |
CN107250946B (zh) | 执行对平台装置的动态功率控制 | |
CN109564526A (zh) | 使用封装和线程提示信息的组合来控制处理器的性能状态 | |
US11402891B2 (en) | System, apparatus and method for loose lock-step redundancy power management | |
US11481013B2 (en) | Multi-level loops for computer processor control | |
CN108885483A (zh) | 确定多管芯处理器中的热余量 | |
CN107924219A (zh) | 遮蔽处理器的核的功率状态 | |
CN107533354A (zh) | 控制处理器的处理引擎的性能状态 | |
US10719326B2 (en) | Communicating via a mailbox interface of a processor | |
CN113748397A (zh) | 用于动态控制处理器的处理电路的电流消耗的系统、装置和方法 | |
CN109564460A (zh) | 在处理器中提供用于降级控制信息的接口 | |
CN109661637A (zh) | 用于可变功率轨的补偿控制 | |
CN107077180A (zh) | 基于功率状态而调整电压调节器 | |
CN109791427A (zh) | 使用滑动平均值的处理器电压控制 | |
US10860083B2 (en) | System, apparatus and method for collective power control of multiple intellectual property agents and a shared power rail | |
US11921564B2 (en) | Saving and restoring configuration and status information with reduced latency | |
CN109478086A (zh) | 至少部分地基于平台电容来控制处理器的电流消耗 | |
CN108228484B (zh) | 针对处理器中的高速缓存利用的无效读取 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |