CN111512267A - 基于性能监测信息进行数据驱动低功率状态控制的***、装置和方法 - Google Patents
基于性能监测信息进行数据驱动低功率状态控制的***、装置和方法 Download PDFInfo
- Publication number
- CN111512267A CN111512267A CN201980006858.XA CN201980006858A CN111512267A CN 111512267 A CN111512267 A CN 111512267A CN 201980006858 A CN201980006858 A CN 201980006858A CN 111512267 A CN111512267 A CN 111512267A
- Authority
- CN
- China
- Prior art keywords
- low power
- power state
- core
- processor
- metadata
- 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
- 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/3246—Power saving characterised by the action undertaken by software initiated power-off
-
- 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/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- 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
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Power Sources (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,一种处理器包括:一个或多个核心,一个或多个核心包括缓存存储器层级;性能检测器,该性能监测器耦合到一个或多个核心,该性能监测器用于监测一个或多个核心的性能,该性能监测器用于至少部分地基于与缓存存储器层级相关联的计数信息来计算流水线成本元数据;以及功率控制器,该功率控制器耦合到性能监测器,该功率控制器用于接收流水线成本元数据并且至少部分地基于该流水线成本元数据来确定一个或多个核心要进入的低功率状态。描述且要求保护其他实施例。
Description
技术领域
实施例涉及***的功率管理,并且更具体地涉及多核心处理器的功率管理。
背景技术
半导体处理和逻辑设计的进步已经允许增加可能存在于集成电路器件上的逻辑的数量。作为结果,计算机***配置已经从***中的单个或多个集成电路发展到单个集成电路上的多个硬件线程、多个核心、多个器件和/或完整***。此外,随着集成电路的密度的增长,计算***的功率需求(从嵌入式***到服务器)也在逐步上升。此外,软件低效及其对硬件的要求也已经引起计算设备能耗的增长。实际上,一些研究表明,计算设备消耗一个国家(例如,美国)整个电力供应的相当大的百分比。作为结果,对于与集成电路相关联的能效和节能存在着非常重要的需求。随着服务器、台式计算机、笔记本、超极本(UltrabookTM)、平板电脑、移动电话、处理器、嵌入式***等变得更加普遍(从包括在典型的计算机、汽车和电视中到生物技术),这些需求将增长。
一种降低处理器中的功耗的方式是允许一个或多个核心在它们不忙时进入低功率状态。然而,关于将核心适当地置于低功率状态的不正确决定(以及特定低功率状态本身)可能会导致性能、响应性、用户体验和/或服务质量问题。当软件请求特定低功率状态而不能看到实际的处理器操作以及低功率状态对操作的影响时,这种影响尤其明显。
附图说明
图1是根据本发明的实施例的***的一部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一实施例的多域处理器的框图。
图4是包括多个核心的处理器的实施例。
图5是根据本发明的一个实施例的处理器核心的微架构的框图。
图6是根据另一实施例的处理器核心的微架构的框图。
图7是根据又一实施例的处理器核心的微架构的框图。
图8是根据再一实施例的处理器核心的微架构的框图。
图9是根据本发明的另一实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一示例SoC的框图。
图12是其中可以使用实施例的示例***的框图。
图13是其中可以使用实施例的另一示例***的框图。
图14是代表性计算机***的框图。
图15是根据本发明的实施例的***的框图。
图16是示出根据实施例的用于制造集成电路以执行操作的IP核心开发***的框图。
图17是根据本发明的实施例的方法的流程图。
图18是根据本发明的实施例的另一方法的流程图。
图19是根据本发明的又一实施例的方法的流程图。
具体实施方式
在各种实施例中,处理器内可用的信息(例如,可以在处理器的性能监测单元中收集和分析的信息)可以用于做出与处理器的适当低功率状态相关的数据驱动决策。更具体地,如本文所述,可以将性能监测信息从性能监测器提供到处理器的功率控制器,以使功率控制器能够做出与处理器的一个或多个核心和/或其他处理引擎进入的适当低功率状态相关的更好的数据驱动决策。
在典型***中,软件和处理器硬件进行交互以确定何时进入低功率状态(例如,根据高级配置和电源接口(ACPI)标准的不活动状态,枚举为给定的非C0状态,也称为休眠或C状态),以及可以实现什么级别的核心/封装C状态而不会导致不期望的性能、响应性、用户体验或服务质量(QoS)问题。然而,在没有实施例的情况下,诸如操作***(OS)或驱动器之类的软件实体可能提供错误提示,当处理器硬件未检测到这些错误提示时,这些错误提示可能在使能休眠状态时导致性能降级。
在实施例中,处理器功率控制器可以考虑从性能监测器接收的特定性能监测信息,以确定核心/处理器的适当低功率状态,该适当低功率状态可以是与软件实体所请求的低功率状态不同的低功率状态。在没有实施例的情况下,性能降级可能是由于退出休眠状态的等待时间以及在最后休眠状态期间重新填充所刷新的架构状态(例如,数据转换后备缓冲器(DTLB)、指令TLB(ITLB)、1级(L1)指令缓存、L1数据缓存和2级(L2)缓存中的一个或多个)的成本而产生的。
除了与缓存存储器操作相关的性能监测信息之外,实施例还可以使用与处理器的中断活动相关的性能监测信息。这是因为如果实现了深度休眠状态,则可能存在可能导致QoS问题的某些情况。这些情况可以包括中断率较高的活动的情况(其中响应于中断的延迟可能引起QoS问题),或者当前执行的代码高度依赖于正在刷新的缓存之一的性能的情况。
使用如本文所述的性能监测信息,实施例可以确定何时进入较深度休眠状态可能损害性能(包括在一个或多个缓存存储器中未命中的成本增加)以及在高速率中断期间QoS可能何时被损害。更具体地,实施例利用指示性性能监测统计数据来确定例如各种缓存刷新的成本。以此方式,功率控制器可以做出与哪些架构组件可以安全地被刷新以用于执行有关的更智能决策。在本文的特定实施例中,功率控制器可以在之前达到(和退出)各种C状态时比较缓存刷新的成本。功率控制器还可以利用来自性能监测器的中断信息来识别不利于较深度休眠状态的附加情况,例如存在高中断率的情况。
请注意,由功率控制器做出的关于利用来自性能监测器的数据的适当低功率状态操作的最终决策对于软件而言可以是透明的。换句话说,功率控制器被配置为通过做出C状态降级和升级决策来覆盖(override)OS/驱动器请求(而不向软件报告)。降级操作发生在软件实体请求给定的低功率状态并且功率控制器使得进入较浅度的低功率状态时。并且升级操作发生在软件实体请求给定的低功率状态并且功率控制器使得进入较深度的低功率状态时。
通过利用来自如本文所述的性能监测器的信息,实施例可以围绕休眠状态做出更好的决策。因此,至少部分地基于该信息,功率控制器可以确定是否以及何时针对低功率状态操作更积极或更不积极(与软件请求相比)。实施例还提供动态框架,以使得能够基于运行时启发法(run-time heuristic)来关闭处理器的全部或部分,从而实现更加用户体验友好的决策。
在一些实施例中,性能监测信息可以是流水线成本元数据的形式。作为示例,性能监测器可以发送比率信息,该比率信息包括与在实现较深度和较浅度C状态时刷新各种架构状态的成本有关的动态估计。示例成本可以包括与在实现较浅度和较深度休眠状态时在包括ITLB/DTLB/L1I/L1D/L2的各种缓存存储器结构中的未命中成本有关的信息。利用该信息,功率控制器可以动态地做出与何时允许降级和升级有关的更好的数据驱动决策,以及选择用于最佳性能/功率效率的适当C状态。性能监测信息还可以包括中断率元数据,以使得功率控制器能够检测诸如任何核心上的高中断率之类的条件,如果尝试较深度休眠状态,则这些条件可能产生可能损害性能、响应性或QoS的条件。
现在参考表1,示出了用于多个低功率状态的各种缓存存储器的流水线成本元数据的示例。这种比率/值可以被发送到功率控制器以做出适当的低功率状态决策,从而实现适当的功率/响应性平衡。具体地,表1示出了在较浅度的低功率状态(例如,C1)(其中较深度的低功率状态被禁用)和较深度的低功率状态(例如,C6)之后的未命中率(就周期而言)的差异。这种信息可以表示大量的休眠/唤醒周期。更具体地,第二列提供了何时包括C1E-C10的各种休眠状态可用的信息,并且第三列提供了何时仅C1状态可用的信息。
如表所示,C6状态之后C0周期的大量(例如,大约50%)的增长是在较深度休眠状态之前对DTLB架构状态进行刷新的结果。这样,对当核心达到较深度休眠状态对比C1休眠状态时的DTLB未命中的成本的比较结果可以至少部分地用于控制低功率状态确定。利用例如表1中所示的信息,功率控制器可以将输入C6低功率状态请求降级为较低的C1低功率状态激活,从而避免性能下降。
表1
尽管下面的实施例是参考特定集成电路(例如在计算平台或处理器中)来描述的,但是其他实施例也适用于其他类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可以被应用于其他类型的电路或半导体器件(还可以受益于更好的能效和能量节约)。例如,所公开的实施例并不限于任何特定类型的计算机***。也就是说,所公开的实施例可以在许多不同的***类型中使用,这些***类型的范围为:服务器计算机(例如,塔式服务器、机架式服务器、刀片式服务器、微型服务器等)、通信***、存储***、任何配置的台式计算机、膝上型计算机、笔记本电脑和平板计算机(包括2:1平板电脑、平板手机等),并且也可以在其他设备(例如,手持式设备、片上***(SoC)和嵌入式应用)中使用。手持式设备的一些示例包括诸如智能手机之类的蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常可以包括微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络中枢(network hub)、广域网(WAN)交换机、可穿戴设备或任何其他可以执行下面教导的功能和操作的***。此外,实施例可以在具有标准语音功能的移动终端(例如,移动电话、智能手机和平板手机)中实现,和/或在没有标准无线语音功能通信能力的非移动终端(例如,许多可穿戴设备、平板电脑、笔记本电脑、台式机、微型服务器、服务器等)中实现。此外,本文描述的装置、方法和***不限于物理计算设备,而是还可以涉及软件优化。
现在参考图1,示出了根据本发明的实施例的***的一部分的框图。如图1所示,***100可以包括各种组件,包括处理器110(如图所示,其为多核心处理器)。处理器110可以经由外部电压调节器160耦合到电源150,该外部电压调节器160可以执行第一电压转换以向处理器110提供初级调节电压。
如图所示,处理器110可以是包括多个核心120a-120n的单个管芯处理器。此外,每个核心可以与集成电压调节器(IVR)125a-125n相关联,集成电压调节器(IVR)125a-125n接收初级调节电压并且生成工作电压,以提供给处理器中与IVR相关联的一个或多个代理。因此,可以提供IVR实现方式以允许对电压进行精细粒度控制并且从而对每个单独核心的功率和性能进行精细粒度控制。这样,每个核心均可以在单独的电压和频率下操作,从而实现了极大的灵活性,并且为平衡功耗与性能提供了广泛的机会。在一些实施例中,使用多个IVR实现了将组件分组到单独的电源层(power plane)中,以便功率由IVR调节并且由IVR仅提供给该组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,一个IVR的给定电源层可能会掉电或关闭,而另一IVR的另一电源层则保持活动或完全供电。
仍然参考图1,处理器内可以存在附加组件,包括输入/输出接口132、另一接口134和集成存储器控制器136。如图所示,这些组件中的每一个均可以由另一集成电压调节器125x供电。在一个实施例中,接口132可以使能用于快速路径互连(QPI)互连的操作,其在包括多个层的缓存一致协议中提供点对点(PtP)链路,所述多个层包括物理层、链路层和协议层。继而,接口134可以经由***组件快速互连(PCIeTM)协议进行通信。
还示出了功率控制单元(PCU)138,其可以包括用于执行与处理器110相关的功率管理操作的硬件、软件和/或固件。如图所示,PCU 138经由数字接口向外部电压调节器160提供控制信息,以使电压调节器生成适当的经调节的电压。PCU 138还经由另一数字接口向IVR 125提供控制信息,以控制所生成的工作电压(或使得对应的IVR在低功率模式下被禁用)。在各种实施例中,PCU 138可以包括各种功率管理逻辑单元以执行基于硬件的功率管理。这样的功率管理可以完全由处理器控制(例如,通过各种处理器硬件来控制,并且可以由工作负荷和/或功率、热或其他处理器约束来触发)和/或可以响应于外部源(例如,平台或功率管理源或***软件)来执行功率管理。
在本文的实施例中,PCU 138可以被配置为例如从处理器110的内部性能监测器接收性能监测信息。至少部分地基于该性能监测信息,可以考虑各种低功率状态的影响,并且将其用于确定处理器110的一个或多个部分的适当的低功率状态条目。在本文描述的特定实施例中,对低功率状态选择的这种数据驱动控制可以使得例如来自调度实体的输入低功率状态请求能够被覆盖。这样,当确定较深度的低功率状态的影响相对较高时,可以将针对这种较深度的低功率状态的输入请求降级以使处理器110(或其部分)进入较浅度的低功率状态。继而,当存在由于较深度的低功率状态而导致相对较低的影响时,可以将针对较浅度的低功率状态的输入请求升级为较深度的低功率状态,如本文进一步所述的。
尽管为了便于说明而未示出,但是要理解,处理器110内可以存在诸如非核心逻辑之类的附加组件、以及诸如内部存储器之类的其他组件,例如一个或多个级别的缓存存储器层级等。此外,尽管在图1的实现方式中示出了集成电压调节器,但是实施例不限于此。
本文所述的处理器可以利用一种功率管理技术,该功率管理技术可以独立于基于操作***(OS)的功率管理(OSPM)机制并与其互补。根据一个示例OSPM技术,处理器可以在各种性能状态或水平(所谓的P状态,即从P0到PN)下操作。通常,P1性能状态可以对应于OS可请求的最高保证性能状态。除了该P1状态之外,OS还可以请求更高性能状态,即P0状态。因此,该P0状态可以是投机或加强的模式状态,其中当电源和/或热预算可用时,处理器硬件可以将处理器或其至少一部分配置为在高于保证频率的频率下操作。在许多实现方式中,处理器可以包括多个所谓的分级频率(bin frequency),其高于P1保证最大频率,超过特定处理器的最大峰值频率,如在制造期间融合或以其他方式写入处理器中。此外,根据一种OSPM机制,处理器可以在各种功率状态或水平下操作。针对功率状态,OSPM机制可以指定不同的功耗状态,通常称为C状态,C0、C1至Cn状态。当核心活动时,其在C0状态下运行,而当核心空闲时,其可以被置于核心低功率状态,也称为核心非零C状态(例如,C1-C6状态),其中每个C状态均处于较低功耗水平(使得C6是比C1更深度的低功率状态,等等)。
应当理解,在不同的实施例中可以单独地或组合地使用许多不同类型的功率管理技术。作为代表性示例,功率控制器可以控制处理器通过某种形式的动态电压频率缩放(DVFS)来进行功率管理,在DVFS中,可以动态地控制一个或多个核心或其他处理器逻辑的工作电压和/或工作频率以在某些情况下降低功耗。在示例中,可以使用可从加利福尼亚州圣克拉拉的Intel公司获得的增强型Intel SpeedStepTM技术来执行DVFS,以在最低功耗水平下提供最佳性能。在另一示例中,可以使用Intel TurboBoostTM技术来执行DVFS,以使得一个或多个核心或其他计算引擎能够基于条件(例如,工作负荷和可用性)以高于保证工作频率的频率来操作。
可以在某些示例中使用的另一功率管理技术是不同计算引擎之间的工作负荷的动态交换。例如,处理器可以包括在不同功耗水平下操作的非对称核心或其他处理引擎,使得在功率受限的情况下,一个或多个工作负荷可以被动态地切换以在较低功率核心或其他计算引擎上执行。另一示例性功率管理技术是硬件工作周期(Hardware duty cycling;HDC),其可以使得核心和/或其他计算引擎根据工作周期而周期性地使能和禁用,从而使一个或多个核心可以在工作周期的不活动时段期间变得不活动,并且在工作周期的活动时段期间变得活动。
实施例可以在用于各种市场的处理器(包括服务器处理器、台式处理器、移动处理器等)中实现。现在参考图2,示出了根据本发明的实施例的处理器的框图。如图2所示,处理器200可以是包括多个核心210a-210n的多核心处理器。在一个实施例中,每个这样的核心均可以是独立的电源域并且可以被配置为基于工作负荷来进入和退出活动状态和/或最大性能状态。
各种核心可以经由互连215耦合到包括各种组件的***代理或非核心220。如图所示,非核心220可以包括共享缓存230,该共享缓存230可以是最后一级缓存。此外,非核心可以包括集成存储器控制器240,用于例如经由存储器总线与***存储器(图2中未示出)进行通信。非核心220还包括各种接口250、性能监测单元(PMU)260和功率控制单元255,该功率控制单元255可以包括用于执行如本文描述的功率管理技术的逻辑。此外,功率控制单元255可以包括低功率控制电路256,该低功率控制电路256被配置为从PMU 260接收性能监测信息,并且至少部分地基于该信息来确定适当的低功率状态以供处理器200进入(基于性能监测信息,该低功率状态可以是降级或升级状态)。
此外,通过接口250a-250n,可以连接到各种片外组件,例如***设备、大容量存储装置等。虽然在图2的实施例中以该特定实现方式示出,但是本发明的范围在此方面不受限制。
现在参考图3,示出了根据本发明的另一实施例的多域处理器的框图。如图3的实施例所示,处理器300包括多个域。具体地,核心域310可以包括多个核心3100-310n,图形域320可以包括一个或多个图形引擎,并且还可以存在***代理域350。在一些实施例中,***代理域350可以以与核心域独立的频率执行,并且可以始终保持上电以处理功率控制事件和功率管理,从而可以控制域310和320以动态地进入和退出高功率和低功率状态。域310和320中的每一个均可以在不同的电压和/或功率下操作。请注意,虽然仅示出了三个域,但是应当理解,本发明的范围在此方面不受限制并且在其他实施例中可以存在附加域。例如,可以存在多个核心域,每个核心域均包括至少一个核心。
通常,除了各种执行单元和附加处理元件之外,每个核心310还可以包括低级缓存。继而,各个核心可以彼此耦合并且被耦合到由最后一级缓存(LLC)3400-340n的多个单元形成的共享缓存存储器。在各种实施例中,LLC 340可以在核心和图形引擎以及各个媒体处理电路***之间共享。如所看到的,环形互连330因此将核心耦合在一起,并且提供核心、图形域320和***代理电路***350之间的互连。在一个实施例中,互连330可以为核心域的一部分。然而,在其他实施例中,环形互连可以属于其自身的域。
如进一步看到的,***代理域350可以包括显示控制器352,该显示控制器352可以提供对相关联的显示器的控制并且提供到相关联的显示器的接口。如进一步看到的,***代理域350可以包括PMU 360和功率控制单元355,该功率控制单元355可以包括低功率控制电路356,该低功率控制电路356至少部分地基于性能监测信息,来确定由于某些低功率状态(例如,C1和C6低功率状态)的先前迭代而导致的各种处理器资源的成本。至少部分地基于该信息,低功率控制电路356可以确定处理器300(或其至少一部分)要进入的适当的低功率状态,该低功率状态可以是相对于所请求的低功率状态的降级或升级状态(例如,通过从操作***或其他调度实体接收的提示信息),如本文所述。
还如在图3中看到的,处理器300还可以包括集成存储器控制器(IMC)370,该IMC370可以提供到***存储器(例如,动态随机存取存储器(DRAM))的接口。可以存在多个接口3800-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还可以称为硬件线程槽401a和401b。因此,在一个实施例中,诸如操作***之类的软件实体可能将处理器400看作四个单独的处理器,即,能够并发执行四个软件线程的四个逻辑处理器或处理元件。如上文所暗示的,第一线程与架构状态寄存器401a相关联,第二线程与架构状态寄存器401b相关联,第三线程可以与架构状态寄存器402a相关联,并且第四线程可以与架构状态寄存器402b相关联。本文中,架构状态寄存器(401a、401b、402a和402b)中的每一个可以称为如上文所描述的处理元件、线程槽或线程单元。如图所示,架构状态寄存器401a被复制到架构状态寄存器401b中,从而能够为逻辑处理器401a和逻辑处理器401b存储单独的架构状态/上下文。在核心401中,也可以为线程401a和401b复制诸如分配器和重命名器块430中的指令指针和重命名逻辑之类的其他更小资源。可以通过分区来共享一些资源,例如重排序/引退单元435中的重排序缓冲器、ILTB 420、加载/存储缓冲器和队列。诸如通用内部寄存器、(一个或多个)页表基址寄存器、低级数据缓存和数据TLB 450、(一个或多个)执行单元440以及无序单元435的部分之类的其他资源可能完全共享。
处理器400通常包括其他资源,这些资源可以完全共享、通过分区来共享或者由处理元件专用/专用于处理元件。在图4中,示出了具有处理器的说明性逻辑单元/资源的纯粹示例性处理器的实施例。请注意,处理器可以包括或者省略这些功能单元中的任何功能单元,以及可以包括未描绘的任何其他已知功能单元、逻辑或固件。如图所示,核心401包括简化的代表性无序(OOO)处理器核心。但是可以在不同实施例中利用有序处理器。OOO核心包括用于预测要执行/采用的分支的分支目标缓冲器420以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)420。
核心401还包括耦合到提取单元420的解码模块425,该解码模块425用于解码提取的元素。在一个实施例中,提取逻辑包括分别与线程槽401a、401b相关联的单独定序器(sequencer)。通常,核心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共享对用于缓存最近提取的元素的更高级或更外层(further-out)缓存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),即用于由处理器执行的微操作。
耦合在前端单元510与执行单元520之间的是无序(OOO)引擎515,OOO引擎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,可以发生与更高级缓存、***存储器等的数据通信。请注意,核心500的性能和能效能力可以基于工作负荷和/或处理器约束而变化。这样,功率控制器(图5中未示出)可以至少部分地基于包括本文所述的性能监测信息的这样的信息来动态地确定处理器500的全部或部分要进入的适当的低功率状态。虽然在图5的实施例中以这种高级别示出,但是应当理解,本发明的范围在此方面不受限制。例如,尽管图5的实现方式是关于诸如x86指令集架构(ISA)之类的无序机器,但是本发明的范围在此方面不受限制。即,其他实施例可以在以下各种处理器中实现:有序处理器、诸如基于ARM的处理器之类的精简指令集计算(RISC)处理器、或另一种类型的ISA的处理器,这种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。在所示实施例中,这样的执行单元包括ALU 635、置乱单元(shuffle unit)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中未示出)可以至少部分地基于包括性能监测信息的这种信息来动态地确定处理器500的全部或部分要进入的适当的低功率状态,如本文所述。尽管在图6的图示中以这种特定的流水线架构示出,但是应当理解,许多变化和替换是可能的。
请注意,在具有非对称核心的处理器中,例如根据图5和图6的微架构,出于功率管理的原因,可以在核心之间动态交换工作负荷,因为这些核心尽管具有不同的流水线设计和深度,但是它们可能具有相同或相关的ISA。这种动态核心交换可以以对用户应用(并且可能还有内核)透明的方式执行。
参考图7,示出了根据又一实施例的处理器核心的微架构的框图。如图7所示,核心700可以包括用于在非常低的功耗水平下执行的多级有序流水线。作为一个这样的示例,处理器700可以具有根据可从加利福尼亚州桑尼维尔的ARM股份有限公司购得的ARM CortexA53设计的微架构。在实现方式中,可以提供被配置为执行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可以具有根据ARM Cortex 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可以是基于Architecture CoreTM的处理器,例如可从英特尔公司购得的i3、i5、i7或其他此类处理器。然而,其他低功率处理器,例如可从加利福尼亚州桑尼维尔的先进微器件公司(AMD)购得的处理器,来自ARM股份有限公司或其许可证持有者的基于ARM的设计,或来自加利福尼亚州桑尼维尔的MIPS技术公司或其许可证持有者或采用者的基于MIPS的设计则可以存在于其他实施例中,例如苹果公司A7处理器、高通Snapdragon处理器或德州仪器OMAP处理器。这样的SoC可以用于低功率***,例如智能电话、平板计算机、平板手机计算机、UltrabookTM计算机或其他便携式计算设备或车辆计算***。
在图9所示的高级视图中,处理器900包括多个核心单元9100-910n。每个核心单元均可以包括一个或多个处理器核心、一个或多个缓存存储器和其他电路***。每个核心单元910均可以支持一种或多种指令集(例如,x86指令集(具有较新版本中已经添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEON之类的可选附加扩展)或其他指令集或它们的组合。请注意,核心单元中的一些可以是异构资源(例如,属于不同的设计)。此外,每个这样的核心均可以耦合到缓存存储器(未示出),在实施例中该缓存存储器可以是共享级别(L2)缓存存储器。非易失性存储装置930可以用于存储各种程序和其他数据。例如,该存储装置可以用于存储微代码的至少一些部分、诸如BIOS之类的启动信息、其他***软件或其他信息。
每个核心单元910还可以包括诸如总线接口单元之类的接口,以实现与处理器的附加电路***的互连。在实施例中,每个核心单元910均耦合到可以用作主缓存一致性管芯上互连的一致性结构,该一致性结构继而耦合到存储器控制器935。继而,存储器控制器935控制与诸如DRAM之类的存储器(为了简化说明而未在图9中示出)的通信。
除了核心单元之外,处理器内还存在附加的处理引擎,包括至少一个图形单元920,至少一个图形单元920可以包括一个或多个图形处理单元(GPU)以执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)。此外,可以存在至少一个图像信号处理器925。信号处理器925可以被配置为处理从SoC内部或片外的一个或多个捕捉设备接收的输入图像数据。
还可以存在其他加速器。在图9的图示中,视频编解码器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。在示例中,这些核心可以是诸如本文描述的有序核心之类的低功率核心。在一个实施例中,这些第一核心可以被实现为ARM Cortex A53核心。继而,这些核心耦合到核心域1010的缓存存储器1015。此外,SoC1000包括第二核心域1020。在图10的图示中,第二核心域1020具有多个第二核心10220-10223。在示例中,这些核心可以是比第一核心1012功耗更高的核心。在实施例中,第二核心可以是无序核心,该无序核心可以被实现为ARM Cortex A57核心。继而,这些核心耦合到核心域1020的缓存存储器1025。请注意,虽然图10所示的示例在每个域中包括4个核心,但是应当理解,在其他示例中,在给定域中可以存在更多或更少的核心。
进一步参考图10,还提供了图形域1030,该图形域1030可以包括一个或多个图形处理单元(GPU),该GPU被配置为独立地执行图形工作负荷,该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适合于并入诸如智能手机、平板计算机、智能TV、车辆计算***等之类的各种各样的便携式设备和其他设备中。在所示的示例中,SoC 1100包括中央处理器单元(CPU)域1110。在实施例中,在CPU域1110中可以存在多个单独的处理器核心。作为一个示例,CPU域1110可以是具有4个多线程核心的四核心处理器。这样的处理器可以是同构处理器或异构处理器,例如,低功率和高功率处理器核心的混合。
继而,提供GPU域1120以在一个或多个GPU中执行高级图形处理以处理图形和计算API。DSP单元1130可以提供一个或多个低功率DSP,这些低功率DSP除了处理在执行多媒体指令期间可发生的高级计算以外,还处理诸如音乐回放、音频/视频等之类的低功率多媒体应用。继而,通信单元1140可以包括各种组件,以用于经由诸如蜂窝通信(包括3G/4G LTE)、无线局域协议(诸如BluetoothTM、IEEE 802.11等)之类的各种无线协议来提供连接。
再进一步,多媒体处理器1150可以用于执行对高清晰度视频和音频内容的捕捉和回放,包括对用户姿势的处理。传感器单元1160可以包括多个传感器和/或传感器控制器以便与在给定平台中出现的各种片外传感器对接。图像信号处理器1170可以被提供有一个或多个单独的ISP以便针对从平台的一个或多个相机(包括静态相机和视频相机)捕捉的内容来执行图像处理。
显示处理器1180可以为连接到具有给定像素密度的高清晰度显示器提供支持,包括无线地传送用于在这种显示器上回放的内容的能力。再进一步,定位单元1190可以包括支持多个GPS星座的GPS接收器,以便为应用提供使用这种GPS接收器获得的高准确性定位信息。应当理解,尽管在图11的示例中利用该特定组件集合示出,但是许多变型和替代是可能的。
现在参考图12,示出了其中可以使用实施例的示例***的框图。如图所示,***1200可以是智能手机或其他无线通信器。基带处理器1205被配置为针对要从***发送或被***接收的通信信号来执行各种信号处理。继而,基带处理器1205耦合到应用处理器1210,该应用处理器1210可以是***中用于执行OS和(除了诸如许多已知社交媒体和多媒体app之类的用户应用之外)其他***软件的主CPU。应用处理器1210可以包括如本文描述的功率控制器,并且还可以被配置为执行设备的各种其他计算操作。
继而,应用处理器1210可以耦合到用户界面/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可以耦合到存储器***,该存储器***包括非易失性存储器(即,闪存1230)和***存储器(即,动态随机存取存储器(DRAM)1235)。进一步如图所示,应用处理器1210还耦合到捕捉设备1240,例如可以记录视频和/或静止图像的一个或多个图像捕捉设备。
仍然参考图12,包括订户身份模块和可能的安全存储装置和密码处理器的通用集成电路卡(UICC)1246也耦合到应用处理器1210。***1200还可以包括安全处理器1250,该安全处理器1250可以耦合到应用处理器1210。多个传感器1225可以耦合到应用处理器1210从而能够输入各种感测到的信息,例如加速度计和其他环境信息。音频输出设备1295可以提供接口以输出声音,例如以语音通信、播放或流式传输音频数据等形式。
进一步如图所示,提供了近场通信(NFC)非接触式接口1260以经由NFC天线1265在NFC近场中通信。尽管在图12中示出了单独的天线,但是应当理解,在一些实现方式中,可以提供一个天线或不同的天线集合以实现各种无线功能。
功率管理集成电路(PMIC)1215耦合到应用处理器1210以执行平台级功率管理。为此,PMIC 1215可以向应用处理器1210发布功率管理请求,以根据需要进入某种低功率状态。此外,基于平台约束条件,PMIC 1215还可以控制***1200的其他组件的功率水平。
为了使得通信能够被发送和接收,可以在基带处理器1205与天线1290之间耦合各种电路***。具体地,可以存在射频(RF)收发器1270和无线局域网(WLAN)收发器1275。通常,RF收发器1270可以用于根据给定的无线通信协议(例如,诸如根据码分多址(CDMA)、全球移动通信***(GSM)、长期演进(LTE)或其他协议之类的3G或4G无线通信协议)来接收和发送无线数据与通话。此外,可以存在GPS传感器1280。还可以提供诸如无线电信号(例如,AM/FM以及其他信号)的接收或发送之类的其他无线通信。此外,经由WLAN收发器1275,还可以实现本地无线通信。
现在参考图13,示出了其中可以使用实施例的另一示例***的框图。在图13的图示中,***1300可以是移动低功率***,例如平板计算机、2:1平板电脑、平板手机或其他可转换或独立平板***。如图所示,存在SoC 1310并且SoC 1310可以被配置为作为设备的应用处理器而操作,并且其可以包括如本文描述的功率控制器。
各种设备可以耦合到SoC 1310。在示出的图示中,存储器子***包括耦合到SoC1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合到SoC 1310,以便提供显示能力和经由触摸提供用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接,SoC 1310耦合到以太网接口1330。***中枢1325耦合到SoC 1310以实现与各种***设备的对接,例如可以通过各种端口或其他连接器中的任一种而耦合到***1300。
除了SoC 1310内的内部功率管理电路***和功能之外,PMIC 1380还耦合到SoC1310,以便提供基于平台的功率管理,例如基于***是由电池1390供电还是经由AC适配器1395由AC电源来供电。除了这种基于电源的功率管理,PMIC 1380还可以基于环境和使用条件来执行平台功率管理活动。再进一步,PMIC 1380可以向SoC 1310传送控制和状态信息,以便在SoC 1310内引起各种功率管理动作。
仍然参考图13,为了提供无线能力,WLAN单元1350耦合到SoC1310并且继而耦合到天线1355。在各种实现方式中,WLAN单元1350可以根据一个或多个无线协议来提供通信。
进一步如图所示,多个传感器1360可以耦合到SoC 1310。这些传感器可以包括各种加速度计、环境和其他传感器,包括用户手势传感器。最终,音频编解码器1365耦合到SoC1310以便提供到音频输出设备1370的接口。当然,应当理解,尽管在图13中以这种特定的实现方式示出,但是许多变化和替换是可能的。
现在参考图14,示出了诸如笔记本、UltrabookTM或其他小形状因子***之类的代表性计算机***的框图。在一个实施例中,处理器1410包括微处理器、多核心处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知的处理元件。在图示的实现方式中,处理器1410充当用于与***1400的各种组件中的许多组件进行通信的主处理单元和中央中枢。作为一个示例,处理器1400被实现为SoC,并且其可以包括如本文描述的功率控制器。
在一个实施例中,处理器1410与***存储器1415进行通信。作为说明性示例,***存储器1415经由多个存储器设备或模块来实现以便提供给定量的***存储器。
为了提供诸如数据、应用、一个或多个操作***等之类的信息的持久存储,大容量存储装置1420还可以耦合到处理器1410。在各种实施例中,为了实现更薄且更轻的***设计以及为了改善***响应,该大容量存储装置可以经由SSD来实现,或者该大容量存储装置可以主要使用硬盘驱动器(HDD)来实现,其中较小量的SSD存储装置充当SSD缓存,以便能够在掉电事件期间对上下文状态和其他此类信息进行非易失性存储,从而在***活动重新启动时可以产生快速加电。还如图14所示,闪存设备1422可以例如经由串行***接口(SPI)耦合到处理器1410。该闪存设备可以提供***软件的非易失性存储,包括基本输入/输出软件(BIOS)以及***的其他固件。
在***1400内可以存在各种输入/输出(I/O)设备。在图14的实施例中具体示出的是显示器1424,该显示器1424可以是高清晰度LCD或LED面板,该LCD或LED面板还提供触摸屏1425。在一个实施例中,显示器1424可以经由显示器互连耦合到处理器1410,该显示器互连可以被实现为高性能图形互连。触摸屏1425可以经由另一互连耦合到处理器1410,在实施例中,该互连可以是I2C互连。如图14中进一步示出的,除了触摸屏1425之外,通过触摸方式的用户输入也可以经由触摸板1430发生,该触摸板1430可以被配置在机箱内并且也可以耦合到与触摸屏1425相同的I2C互连。
为了感知计算和其他目的,各种传感器可以存在于***内并且可以以不同方式耦合到处理器1410。某些惯性和环境传感器可以通过传感器中枢1440(例如,经由I2C互连)耦合到处理器1410。在图14所示的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、指南针1443和陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,该热传感器1446在一些实施例中经由***管理总线(SMBus)总线耦合到处理器1410。
还如图14所示,各种***设备可以经由低引脚数(LPC)互连耦合到处理器1410。在所示的实施例中,各种组件可以通过嵌入式控制器1435耦合。这样的组件可以包括键盘1436(例如,经由PS2接口耦合)、风扇1437和热传感器1439。在一些实施例中,触摸板1430还可以经由PS2接口耦合到EC 1435。此外,诸如可信平台模块(TPM)1438之类的安全处理器也可以经由该LPC互连耦合到处理器1410。
***1400可以以各种方式(包括无线方式)与外部设备进行通信。在图14所示的实施例中,存在各种无线模块,无线模块中的每一个均可以对应于被配置用于特定无线通信协议的无线电设备。用于诸如近场的短距离中的无线通信的一种方式可以是通过NFC单元1445,该NFC单元1445在一个实施例中可以经由SMBus与处理器1410进行通信。请注意,通过该NFC单元1445,彼此接近的设备可以进行通信。
进一步如图14所示,附加的无线单元可以包括其他短距离无线引擎,包括WLAN单元1450和Bluetooth单元1452。使用WLAN单元1450,可以实现Wi-FiTM通信,而通过Bluetooth单元1452,可以发生短距离BluetoothTM通信。这些单元可以经由给定的链路与处理器1410进行通信。
此外,经由WWAN单元1456可以产生(例如,根据蜂窝或其他无线广域协议的)无线广域通信,该WWAN单元1456进而可以耦合至订户身份模块(SIM)1457。此外,为了使得能够接受和使用位置信息,还可以存在GPS模块1455。请注意,在图14所示的实施例中,WWAN单元1456和诸如相机模块1454之类的集成捕捉设备可以经由给定链路进行通信。
集成相机模块1454可以被包含在盖子中。为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,该DSP 1460可以经由高清晰度音频(HDA)链路耦合到处理器1410。类似地,DSP 1460可以与集成编码/解码器(CODEC)和放大器1462进行通信,该CODEC和放大器1462进而可以耦合到可以在机箱内实现的输出扬声器1463。类似地,放大器和CODEC 1462可以被耦合以从麦克风1465接收音频输入,该麦克风1465在实施例中可以经由双阵列麦克风(例如,数字麦克风阵列)来实现以提供高质音频输入从而使得能够对***内的各种操作进行语音激活控制。还请注意,可以将音频输出从放大器/CODEC1462提供至头戴式耳机插口1464。尽管在图14的实施例中利用这些特定组件示出,但是应当理解,本发明的范围在此方面不受限制。
实施例可以用许多不同的***类型来实现。现在参考图15,示出了根据本发明的实施例的***的框图。如图15所示,多处理器***1500是点对点互连***,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580中的每一个均可以是包括第一和第二处理器核心(即,处理器核心1574a和1574b以及处理器核心1584a和1584b)的多核心处理器,但是处理器中可能存在更多的核心。处理器中的每一个均可以包括PCU 1575、1585或其他功率管理逻辑以执行如本文描述的基于处理器的功率管理。为此,PCU 1575和1585可以包括低功率控制电路***,以用于至少部分地基于输入性能监测信息(通过此信息能够确定流水线成本元数据)来动态地确定处理器的全部或部分要进入的适当的低功率状态。这样,如本文所述,该低功率控制电路***可以导致进入与所请求的低功率状态不同的低功率状态,其可以是降级或升级的低功率状态。
仍然参考图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,诸如磁盘驱动器或可以包括代码1530的其他大容量存储设备。此外,音频I/O 1524可以耦合到第二总线1520。实施例可以被并入包括诸如智能蜂窝电话、平板计算机、上网本、UltrabookTM等之类的移动设备的其他类型的***中。
图16是示出根据实施例的可以用于制造集成电路以执行操作的IP核心开发***1600的框图。IP核心开发***1600可以用于生成可以被并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计工具1630可以用高级编程语言(例如,C/C++)来生成IP核心设计的软件仿真1610。软件仿真1610可以用于设计、测试和验证IP核心的表现。然后可以从仿真模型创建或合成寄存器传输级(RTL)设计。RTL设计1615是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用建模的数字信号执行的相关联逻辑)的表现的抽象概念。除了RTL设计1615之外,还可以创建、设计或合成逻辑水平或晶体管水平上的较低级别设计。因此,初始设计和仿真的具体细节可能有所不同。
可以由设计设施将RTL设计1615或等同物进一步合成为硬件模型1620,该硬件模型1620可以采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核心设计。可以使用非易失性存储器1640(例如,硬盘、闪存或任何非易失性存储介质)来存储IP核心设计以便递送给第三方制造设施1665。或者,IP核心设计可以通过有线连接1650或无线连接1660发送(例如,经由互联网)。制造设施1665然后可以制造至少部分地基于IP核心设计的集成电路。所制造的集成电路可以被配置为执行根据本文描述的至少一个实施例的操作。
现在参考图17,示出了根据本发明的实施例的方法的流程图。如图17所示,方法1700是用于通过处理器的性能监测单元来维护性能监测信息的方法。这样,方法1700可以由硬件电路***、固件、软件和/或它们的组合来执行。如图所示,方法1700开始于针对处理器的各个缓存存储器中的未命中维护计数器(框1710)。更具体地,性能监测器可以包括多个计数器。这些计数器中的一些可以与特定级别的缓存存储器(包括指令缓存、数据缓存、转换后备缓冲器等)相关联。在实施例中,性能监测器可以被配置为维护计数器以对处理器的缓存存储器层级的各级缓存存储器内的未命中进行计数。在处理器中的操作期间、在调试操作等期间,可以以各种方式来使用此类信息。并且更具体地,如本文所述,这种未命中信息可以与其他数据一起用于驱动功率控制器中的功率管理决策。
在一个实施例中,可以使用各种缓存存储器的加载和/或存储未命中来在性能监测器中生成与这种未命中的成本相关的比率信息(例如,每给定数量的未停止时钟周期的未命中数量)。尽管本发明的范围不限于此,但是可以维护统计数据并且将成本元数据报告给功率控制器的缓存存储器可以包括ITLB、DTLB、L1I、L1D、L2和L3。
仍然参考图17,控制接下来转到框1720,在框1720中可以维护与输入中断相关的一个或多个计数器。例如,可以提供性能监测器的一个或多个计数器以维护与不同类型的中断相关的计数信息。接下来,在菱形框1730处,确定第一评估间隔是否完成。该第一评估间隔可以对应于一段持续时间,在该持续时间中性能监测信息被分析以生成结果元数据并将该结果元数据提供给功率控制器以供如本文所述地使用。尽管本发明的范围在此方面不受限制,但是该第一评估间隔可以在约1毫秒与1秒之间的数量级上。如果在退出预期的C状态时这些比率中的任何比率超过了给定阈值(例如,超过活动周期(C0)时间的10%),则可以防止进入该低功率状态。如果该第一评估间隔尚未完成,则控制返回到框1710。否则,控制转到框1740。
在框1740处,可以计算流水线成本元数据。更具体地,出于本文使用的目的,可以对维护未命中信息的计数器中的至少一些进行分析,以确定由于特定低功率状态而导致的这种未命中的效果的流水线成本。作为示例,该流水线成本可以根据响应于缓存未命中而阻塞流水线的总的机器未停止C0活动周期的百分比来确定。接下来,控制转到框1750,在框1750中,可以基于所维护的中断计数器来计算中断率元数据。在实施例中,可以使用一个或多个计数器来计算该中断率元数据,所述一个或多个计数器维护输入中断的计数。作为示例,该中断率元数据可以按照每给定持续时间(例如,第一评估间隔、每秒等)的中断来表达。
最后,对于图17,控制接下来转到框1760,在框1760中,流水线成本元数据和中断率元数据可以被发送到功率控制器。在一个实施例中,可以提供专用互连,以将该元数据从性能监测器传送到功率控制器。在其他情况下,可以使用通用处理器互连架构来传送该信息。尽管在图17的实施例中以这种高级别示出,但是应当理解,许多变化和替换也是可能的。例如,应当理解,所描述的特定性能监测计数器、所维护的信息和所得的元数据可能仅仅是本文所述的在处理器内维护和分析的某些类型的性能监测信息。还可以将原始计数器数据发送到功率控制器,并使功率控制器基于所传送的信息来确定流水线成本。
现在参考图18,示出了根据本发明的实施例的另一种方法的流程图。更具体地,如图18所示,方法1800是一种用于在处理器的功率控制器中接收和使用性能监测信息的方法。这样,方法1800可以由硬件电路***、固件、软件和/或它们的组合来执行。如图所示,方法1800开始于从性能监测器接收流水线成本元数据和中断率元数据(框1810)。例如,如上所述,这样的信息可以在耦合在性能监测器和功率控制器之间的专用路径上传送。接下来,控制转到框1815,在框1815中,所接收的流水线成本元数据可以与最新低功率状态相关联。例如,假定处理器(或相关部分)中发生的先前(最新)低功率状态为C6状态。在这种情况下,该输入流水线成本元数据可以与C6或其他较深度的低功率状态相关联。例如,可以将输入流水线成本元数据与附加流水线成本元数据一起累积,该附加流水线成本元数据与C6或其他较深度的低功率状态相关联,以便更早地对接收这样的输入性能监测信息进行迭代。
接下来,确定第二评估间隔是否已经完成(菱形框1820)。更具体地,该第二评估间隔可以具有比第一评估间隔更长的持续时间,使得可以考虑来自多个第一评估间隔的性能监测信息。如果确定第二评估间隔尚未完成,则控制传递回框1810,以接收和处理附加性能监测信息。
否则,如果确定第二评估间隔已经完成,则控制转到框1830,在框1830中,可以针对至少一个缓存存储器来比较第一和第二低功率状态的流水线成本元数据信息。然而,尽管为了简化说明,示出了其中流水线成本元数据的这种比较仅针对一个缓存存储器的方法1800,但是有可能针对多个缓存级别来执行比较操作。在这种情况下,在图18中描述的进一步确定可以基于这些多个比较来执行。这样,可能存在用于加权多个缓存级别的流水线成本元数据信息的比较的不同技术,在这些技术中可以考虑多个比较结果。或者,可以仅将这些比较结果中的所选一个或子集用作本文确定的基础。
出于本文讨论的目的,假定在框1830处执行的比较是用于分析单个缓存存储器的流水线成本元数据。此外,假定所关注的该缓存存储器是第一级TLB。还假定第一和第二低功率状态分别是C1低功率状态和C6低功率状态。该比较可能需要基于针对第一级TLB的流水线成本元数据来分析相对流水线成本的差异。更具体地,关于第一级TLB的这两个不同的低功率状态的累积流水线成本元数据可以向处理器流水线提供以下指示:对由于在处理器流水线从第一低功率状态和第二低功率状态退出之后的时间在处理器流水线的操作期间在第一级TLB中发生的未命中而导致的成本的指示。与当没有驱动与是否在将来进入较深度休眠状态相关的决策时相比,当成功进入较深度休眠状态时,对TLB未命中对指令流水线的影响进行比较。换句话说,TLB在C6进入之前被刷新,但在C1进入之前不被刷新,结果C6退出之后发生的未命中率高于C1退出之后发生的未命中率。
接下来,控制转到菱形框1840,以确定比较结果是否超过第一降级阈值。该第一降级阈值可以对应于成本值之间的给定百分比差。在特定实施例中,该第一降级阈值可以被设置在大约10%的水平(当然,其他示例是可能的)。换句话说,该确定因此考虑了由于C6低功率状态进入(以及在C6状态退出之后产生的未命中)而导致的刷新的流水线成本是否比由于在C1低功率状态进入和退出之后的未命中而导致的成本高10%以上。由于TLB在进入C1状态之前没有被刷新,因此在C1状态之后的这些未命中将用作用于确定自然工作负荷未命中率的基准度量。
如果在菱形框1840处确定比较结果超过第一降级阈值(意味着由于较深度的低功率状态操作而导致处理器流水线有相对大的成本),则控制可以直接进行到框1850以使能低功率状态降级操作。也就是说,基于对流水线成本元数据的考虑,当处理器进入较深度的低功率状态时,可能会发生不期望的性能影响。这样,使能了低功率状态降级操作,其中功率控制器可以基于该数据来覆盖对较深度的低功率状态的基于软件的输入低功率状态请求,以使处理器进入较浅度的低功率状态。
仍然参考图18,如果替代地在菱形框1840处确定了比较结果未超过第一降级阈值,则控制转到菱形框1845。请注意,在一些实施例中,在菱形框1845处的关于中断率分析的这种确定可以是可选过程,该可选过程可能不会发生,这取决于处理器的配置、操作条件等。如果继续进行该可选确定,则可能会发生对中断率元数据的分析。更具体地,如图18所示,确定中断率元数据是否超过第二降级阈值。该第二降级阈值可以被设置在中断级别,如果处理器处于给定的低功率状态,则在该中断级别可能导致不期望的性能损失。作为一个示例,该第二降级阈值可以在大约每秒10至15k个中断之间的中断率的数量级上。请注意,该第二降级阈值可以至少部分地基于对进入和退出给定的低功率状态的等待时间的分析,该第二降级阈值可以用作基准,以识别在处理器(或相关核心)被置于特定低功率状态的情况下,是否由于输入中断而可能发生不期望的性能成本。
如果在菱形框1845处的确定是肯定的,则控制类似地转到框1850,在框1850中,使能低功率状态降级操作。因此,如图18所示,用于使能低功率状态降级操作的确定(在框1850处)可以基于多个考虑因素中的单个考虑因素(或潜在的双重考虑因素)来进行。即,有可能响应于两个确定都发现相关元数据超过了给定的降级阈值而进行降级操作。这样,在不同的实施例中,低功率状态降级操作的控制有可能基于中断率元数据和流水线成本元数据分析中的一者或两者。当然,在其他实施例中,与从性能监测器接收到的其他元数据相关的附加或不同的考虑因素可以用来执行数据驱动降级(或升级控制,下面进一步讨论)。
为了使得功率控制器能够在低功率状态降级模式下操作,功率控制器可以在配置寄存器或其他位置中设置指示符以提供如下指示:功率控制器现在被配置用于在该低功率状态降级模式下操作的指示。这样,当接收到输入低功率状态请求时,功率控制器可以访问该指示符以确定对该请求的适当处理,如下面进一步描述的。
仍然参考图18,如果在菱形框1840和1845处的确定是否定的(在其中执行两个操作的实施例中),则控制接下来转到菱形框1860,以确定流水线成本元数据信息的比较结果是否小于第一升级阈值(菱形框1860)。该第一升级阈值可以对应于成本值之间的给定百分比差。在特定实施例中,可以将该第一升级阈值设置为小于约2-3%的水平(当然,其他示例也是可能的)。换句话说,该确定因此考虑了由于C6或更高低功率状态进入(以及在C6状态退出之后产生的未命中)而导致的刷新的流水线成本是否比由于在C1低功率状态进入和退出之后的未命中而导致的成本高几个百分比。
如果在菱形框1860处确定由于较深度的低功率状态操作而存在有限的成本,则控制接下来转到菱形框1865,在菱形框1865中,确定中断率元数据是否小于第二升级阈值。该第二升级阈值可以被设置在相对较低的中断水平,如果处理器处于相对较深度的低功率状态,则在该水平之下不会有不期望的性能损失。
如果在菱形框1865处的确定是肯定的,则控制转到框1870,在框1870中,使能低功率状态升级操作。这样,功率控制器可以基于该数据来覆盖针对较浅度的低功率状态的基于软件的输入低功率状态请求,以使处理器进入较深度的低功率状态。请注意,在图18的实施例中,只有在菱形框1860和1865处的两个比较都是肯定的情况下,才可以使能升级模式,以确保不会由于进入较深度的低功率状态而对性能造成影响。当然,在其他不同的实施例中可以发生用于使能低功率状态升级操作的其他技术。
仍然参考图18,如果替代地在菱形框1860或菱形框1865处确定比较结果不小于第一或第二升级阈值,则控制转到框1880,在框1880中,功率控制器可以被使能以用于默认低功率状态操作。这样,当给定软件实体请求特定低功率状态时,不存在基于输入数据的所请求的状态的升级或降级,即流水线成本元数据或中断率元数据。无论如何,例如由于工作负荷要求、处理器约束等,功率控制器仍然有可能选择与所请求的状态不同的低功率状态。虽然在图18的实施例中以这种高级别示出,但是应当理解,许多变化和替换也是可能的。
例如,在一些实施例中,降级/升级操作可以不在选择不同的低功率状态(例如,不同的ACPI C状态)的上下文中。相反,在一些实施例中,当使能降级/升级控制时,可以发生精细粒度的功率控制修改。例如,当指示降级操作时,代替使得核心/处理器进入较浅度的低功率状态,可以发生所请求的低功率状态的功率管理活动的不同组合。例如,假设输入软件实体请求低功率状态,在该低功率状态下将刷新三个特定缓存存储器。在这种情况下,精细粒度控制可以至少部分地基于流水线成本元数据来确定少于三个(例如,0、1或2个)缓存存储器的内容可以被刷新,同时以其他方式进入所请求的低功率状态。并且更进一步地,其他功率管理控制的变化也是可能的。例如,如果DTLB未命中是影响在较深度C状态和较浅度C状态之间的C0周期的主要因素,则功率控制器可以确定不刷新DTLB,而是继续刷新L1I缓存和ITLB。附加示例可以包括确定在给定状态下是否应当选通某些时钟(例如,在C3状态下,某些时钟通常可以被选通为关闭,但PCU可以决定使得这些时钟中的一个或多个被使能);确定在给定的低功率状态下是否可能丢失核心或其他实体的某些投票权(对于频率状态或组装级C状态)。
现在参考图19,示出了根据本发明的又一实施例的方法的流程图。如图19所示,方法1900是一种用于响应于输入低功率状态请求而控制处理单元(例如,核心)进入特定的低功率状态的方法。这样,方法1900可以由处理器的功率控制器来执行,例如用硬件电路***、固件、软件和/或它们的组合来实现。如图所示,方法1900开始于接收针对低功率状态的软件请求(框1910)。作为示例,可以基于当前正在执行的工作负荷从OS接收该低功率状态请求。更具体地,在实施例中,OS或其他软件实体可以发送用于使一个或多个核心进入低功率状态的请求。在某些情况下,这种请求可以针对特定的低功率状态,例如,多个C状态中的给定C状态。为了本文讨论的目的,假设该输入软件请求是针对C6低功率状态的。接下来,确定功率控制器的降级/升级操作是否被使能(菱形框1920)。例如,功率控制器可以参考配置寄存器,该配置寄存器指示功率控制器是否在升级或降级模式之一中操作。
如果降级/升级操作被使能,则控制转到框1930,在框1930中,可以确定给定的降级/升级的低功率状态。在确定适当的低功率状态时,可能会考虑不同的考虑因素。例如,可以考虑流水线成本元数据和/或中断率元数据、以及所请求的低功率状态、等待时间信息、工作负荷信息、功耗信息等。在特定实施例中,功率控制器可以包括一个或多个查找表,该查找表将所请求的低功率状态与所确定的不同于所请求的低功率状态的低功率状态相关联。例如,可以提供两个这样的表,一个用于降级操作,一个用于升级操作。在这种情况下,给定表(即,降级表和升级表)的每个条目均可以提供所请求的低功率状态与所确定的低功率状态之间的关联,所确定的低功率状态是要实现的低功率状态。当然,在其他实施例中,可以发生在使能降级/升级操作时确定适当的低功率状态的其他方式。
仍然参考图19,控制转到框1940,在框1940中,可以使得核心进入特定降级/升级的低功率状态。假设功率控制器被使能以用于降级操作。在这种情况下,当输入请求是C6状态时,功率控制器可以使得核心进入较浅度的状态,例如C1状态或者比C6状态具有较浅度的持续时间和较小性能影响的另一低功率状态。相反,在功率控制器被使能以用于升级操作的情况下,当输入请求是针对相对浅度的低功率状态(例如,C6状态)时,功率控制器可以使得核心进入较深度的状态,例如,C6状态或者潜在地比所请求的状态具有更长持续时间和更大性能影响的另一低功率状态。在一些情况下,在该升级操作之前,可以比较例如C1对比C6休眠状态的成本。
最后,进一步如图19所示,如果在菱形框1920处确定未使能降级/升级操作,则控制替代地转到框1950。在框1950中,功率控制器可以使得核心进入所请求的低功率状态。这样,在这种情况下,当软件实体请求诸如C6状态时,功率控制器使得核心进入C6状态。虽然在图19的实施例中以这种高级别示出,但是应当理解,许多变化和替换也是可能的。
因此,实施例使得能够使用来自性能监测器的数据来做出更好的数据驱动低功率状态决策。以此方式,实施例使得处理器能够更好地执行并且浪费更少的功率。
以下示例涉及进一步的实施例。
在一个示例中,一种处理器包括:至少一个核心,用于执行指令,至少一个核心包括缓存存储器层级,缓存存储器层级包括至少一个TLB和至少一个包括于核心的缓存存储器;性能监测器,性能监测器耦合到至少一个核心,性能监测器用于监测至少一个核心的性能,性能监测器包括第一计数器和第二计数器,第一计数器用于对至少一个TLB中的未命中进行计数,第二计数器用于对至少一个包括于核心的缓存存储器中的未命中进行计数,性能监测器用于至少部分地基于第一计数器和第二计数器来计算流水线成本元数据;以及功率控制器,功率控制器耦合到性能监测器,功率控制器用于接收流水线成本元数据,并且至少部分地基于流水线成本元数据来确定至少一个核心要进入的低功率状态。
在示例中,功率控制器用于:接收针对至少一个核心要进入第二低功率状态的软件请求,并且在流水线成本元数据指示在至少一个核心处于第二低功率状态之后的第二流水线成本超过在至少一个核心处于第一低功率状态之后的第一流水线成本至少第一阈值时,使得至少一个核心进入不同的低功率状态。
在示例中,功率控制器用于:接收针对至少一个核心要进入第一低功率状态的第二软件请求,并且在流水线成本元数据指示第二流水线成本超过第一流水线成本小于第二阈值时,使得至少一个核心进入第二低功率状态,第二低功率状态是比第一低功率状态更深度的低功率状态。
在示例中,功率控制器用于:在流水线成本元数据指示在至少一个核心处于第二低功率状态之后的第二流水线成本超过在至少一个核心处于第一低功率状态之后的第一流水线成本至少第一阈值时,使能低功率状态降级操作。
在示例中,功率控制器用于:基于流水线成本元数据中与第一低功率状态相关联的第一子集和流水线成本元数据中与第二低功率状态相关联的第二子集来计算比较结果。
在示例中,功率控制器用于:响应于比较结果大于第一阈值而使能低功率状态降级操作,第一阈值包括降级阈值。
在示例中,性能监测器用于:计算与输入中断的速率相关的中断率元数据,并且将中断率元数据传送到功率控制器。
在示例中,功率控制器用于:接收针对至少一个核心进入第二低功率状态的软件请求,并且在中断率元数据超过第三阈值时,使得至少一个核心进入第一低功率状态,第一低功率状态是比第二低功率状态更浅度的低功率状态。
在示例中,功率控制器用于:接收针对至少一个核心的其中至少一个TLB被刷新的低功率状态的软件请求,并且至少部分地基于流水线成本元数据,至少一个核心进入其中至少一个TLB不被刷新的低功率状态。
在示例中,功率控制器用于:接收针对至少一个核心要进入第一低功率状态的软件请求,并且至少部分地基于流水线成本元数据,使得至少一个核心进入不同的低功率状态,该流水线成本元数据与缓存存储器层级的多个缓存存储器相关联。
在示例中,处理器还包括:专用互连,专用互连耦合性能监测器和功率控制器,性能监测器用于经由专用互连将流水线成本元数据传送到功率控制器。
在另一示例中,一种方法包括:在处理器的功率控制器中,从处理器的性能监测器接收流水线成本元数据;将流水线成本元数据中与处理器在第一低功率状态之后的操作相关联的第一值和流水线成本元数据中与处理器在第二低功率状态之后的操作相关联的第二值进行比较;确定比较的结果是否超过第一阈值;以及响应于确定比较结果超过第一阈值,使能功率控制器以用于降级操作,其中响应于针对第二低功率状态的软件请求,功率控制器使得处理器的至少一个核心进入第一低功率状态,第一低功率状态是比第二低功率状态更浅度的低功率状态。
在示例中,该方法还包括:在功率控制器中从性能监测器接收中断率元数据;确定中断率元数据是否超过第二阈值;以及响应于确定中断率元数据超过第二阈值,使能功率控制器以用于降级操作。
在示例中,该方法还包括:响应于确定比较结果未超过第一阈值,确定比较结果是否小于第三阈值;以及响应于确定比较结果小于第三阈值,使能功率控制器以用于升级操作,其中响应于针对第二低功率状态的软件请求,功率控制器使得处理器的至少一个核心进入第一低功率状态。
在示例中,该方法还包括:响应于确定比较结果未超过第一阈值并且超过第三阈值;以及使能功率控制器以用于默认操作,其中响应于针对第二低功率状态的软件请求,功率控制器使得至少一个核心进入第二低功率状态。
在示例中,该方法还包括:响应于确定比较结果小于第三阈值,确定中断率元数据是否小于第四阈值;以及响应于确定中断率元数据小于第四阈值,使能功率控制器以用于升级操作。
在另一示例中,一种计算机可读介质,包括:指令,用于执行上述示例中任一项所述的方法。
在另一示例中,一种计算机可读介质,包括:数据,该数据由至少一个机器用来制造至少一个集成电路以执行上述示例中任一项所述的方法。
在另一示例中,一种装置,包括:用于执行上述示例中任一项所述的方法的模块。
在另一示例中,一种***,包括:处理器,具有至少一个核心、性能监测器和功率控制器,该至少一个核心用于执行指令,该性能监测器耦合到至少一个核心,该性能监测器用于监测至少一个核心的性能,该性能监测器用于计算与第一低功率状态相关联的第一流水线成本元数据和与第二低功率状态相关联的第二流水线成本元数据,该功率控制器耦合到性能监测器,该功率控制器用于接收第一流水线成本元数据和第二流水线成本元数据并且至少部分地基于第一流水线成本元数据和第二流水线成本元数据来确定是否覆盖来自软件实体的低功率状态请求;以及动态随机存取存储器,该动态随机存取存储器耦合到处理器。
在示例中,该功率控制器用于:基于第一流水线成本元数据和第二流水线成本元数据之间的比较来覆盖低功率状态请求。
在示例中,该性能监测器还用于:计算与输入中断的速率相关的中断率元数据,并且将该中断率元数据传送到功率控制器。
在示例中,该功率控制器还用于:基于中断率元数据和阈值之间的比较来覆盖低功率状态请求。
应当理解,以上示例的各种组合是可能的。
请注意,术语“电路”和“电路***”在本文中可互换地使用。如本文所使用的,这些术语和术语“逻辑”用于单独或以任何组合指代模拟电路***、数字电路***、硬接线电路***、可编程电路***、处理器电路***、微控制器电路***、硬件逻辑电路***、状态机电路***和/或任何其他类型的物理硬件组件。实施例可以在许多不同类型的***中使用。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是相反,其他实施例可以针对用于处理指令的其他类型的装置,或者包括如下指令的一种或多种机器可读介质:响应于在计算设备上执行而使得设备执行本文描述的方法和技术中的一种或多种的指令。
实施例可以用代码实现,并且该代码可以被存储在其上存储有指令的非暂态存储介质上,该代码可以用于对***进行编程以执行指令。实施例还可以用数据实现,并且该数据可以被存储在非暂态存储介质上,该数据在由至少一个机器使用的情况下,使得至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在计算机可读存储介质中实现,该计算机可读存储介质包括如下信息:在被制造到SoC或其他处理器中时用于配置SoC或其他处理器以执行一个或多个操作的信息。该存储介质可以包括但不限于任何类型的磁盘,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)以及磁光盘、半导体器件(例如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或适于存储电子指令的任何其他类型的介质)。
尽管已经针对有限数量的实施例描述了本发明,但是本领域技术人员将从中意识到许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这些修改和变化。
Claims (25)
1.一种处理器,包括:
至少一个核心,所述至少一个核心用于执行指令,所述至少一个核心包括缓存存储器层级,所述缓存存储器层级包括至少一个转换后备缓冲器(TLB)和至少一个包括于核心的缓存存储器;
性能监测器,所述性能监测器耦合到所述至少一个核心,所述性能监测器用于监测所述至少一个核心的性能,所述性能监测器包括第一计数器和第二计数器,所述第一计数器用于对所述至少一个TLB中的未命中进行计数,所述第二计数器用于对所述至少一个包括于核心的缓存存储器中的未命中进行计数,所述性能监测器用于至少部分地基于所述第一计数器和所述第二计数器来计算流水线成本元数据;以及
功率控制器,所述功率控制器耦合到所述性能监测器,所述功率控制器用于接收所述流水线成本元数据,并且至少部分地基于所述流水线成本元数据来确定所述至少一个核心要进入的低功率状态。
2.根据权利要求1所述的处理器,其中,所述功率控制器用于:接收针对所述至少一个核心要进入第二低功率状态的软件请求,并且在所述流水线成本元数据指示在所述至少一个核心处于所述第二低功率状态之后的第二流水线成本超过在所述至少一个核心处于第一低功率状态之后的第一流水线成本至少第一阈值时,使得所述至少一个核心进入不同的低功率状态。
3.根据权利要求2所述的处理器,其中,所述功率控制器用于:接收针对所述至少一个核心要进入所述第一低功率状态的第二软件请求,并且在所述流水线成本元数据指示所述第二流水线成本超过所述第一流水线成本小于第二阈值时,使得所述至少一个核心进入所述第二低功率状态,所述第二低功率状态是比所述第一低功率状态更深度的低功率状态。
4.根据权利要求1所述的处理器,其中,所述功率控制器用于:在所述流水线成本元数据指示在所述至少一个核心处于第二低功率状态之后的第二流水线成本超过在所述至少一个核心处于第一低功率状态之后的第一流水线成本至少第一阈值时,使能低功率状态降级操作。
5.根据权利要求1所述的处理器,其中,所述功率控制器用于:基于所述流水线成本元数据中与第一低功率状态相关联的第一子集和所述流水线成本元数据中与第二低功率状态相关联的第二子集来计算比较结果。
6.根据权利要求5所述的处理器,其中,所述功率控制器用于:响应于所述比较结果大于第一阈值而使能低功率状态降级操作,所述第一阈值包括降级阈值。
7.根据权利要求1所述的处理器,其中,所述性能监测器用于:计算与输入中断的速率相关的中断率元数据,并且将所述中断率元数据传送到所述功率控制器。
8.根据权利要求7所述的处理器,其中,所述功率控制器用于:接收针对所述至少一个核心要进入第二低功率状态的软件请求,并且在所述中断率元数据超过第三阈值时,使得所述至少一个核心进入第一低功率状态,所述第一低功率状态是比所述第二低功率状态更浅度的低功率状态。
9.根据权利要求1至8中任一项所述的处理器,其中,所述功率控制器用于:接收针对所述至少一个核心的其中所述至少一个TLB被刷新的低功率状态的软件请求,并且,至少部分地基于所述流水线成本元数据,所述至少一个核心进入其中所述至少一个TLB不被刷新的低功率状态。
10.根据权利要求1至8中任一项所述的处理器,其中,所述功率控制器用于:接收针对所述至少一个核心要进入第一低功率状态的软件请求,并且,至少部分地基于所述流水线成本元数据,使得所述至少一个核心进入不同的低功率状态,所述流水线成本元数据与所述缓存存储器层级的多个缓存存储器相关联。
11.根据权利要求1至8中任一项所述的处理器,还包括:专用互连,所述专用互连用于将所述性能监测器与所述功率控制器耦合,所述性能监测器用于经由所述专用互连将所述流水线成本元数据传送到所述功率控制器。
12.一种方法,包括:
在处理器的功率控制器中,从所述处理器的性能监测器接收流水线成本元数据;
将所述流水线成本元数据中与所述处理器在第一低功率状态之后的操作相关联的第一值和所述流水线成本元数据中与所述处理器在第二低功率状态之后的操作相关联的第二值进行比较;
确定所述比较的结果是否超过第一阈值;以及
响应于确定所述比较结果超过所述第一阈值,使能所述功率控制器以用于降级操作,在所述降级操作中,响应于针对所述第二低功率状态的软件请求,所述功率控制器使得所述处理器的至少一个核心进入所述第一低功率状态,所述第一低功率状态是比所述第二低功率状态更浅度的低功率状态。
13.根据权利要求12所述的方法,还包括:
在所述功率控制器中从所述性能监测器接收中断率元数据;
确定所述中断率元数据是否超过第二阈值;以及
响应于确定所述中断率元数据超过所述第二阈值,使能所述功率控制器以用于所述降级操作。
14.根据权利要求12所述的方法,还包括:
响应于确定所述比较结果未超过所述第一阈值,确定所述比较结果是否小于第三阈值;以及
响应于确定所述比较结果小于所述第三阈值,使能所述功率控制器以用于升级操作,在所述升级操作中,响应于针对所述第二低功率状态的软件请求,所述功率控制器使得所述处理器的至少一个核心进入所述第一低功率状态。
15.根据权利要求14所述的方法,还包括:
响应于确定所述比较结果未超过所述第一阈值但超过所述第三阈值;以及
使能所述功率控制器以用于默认操作,在所述默认操作中,响应于针对所述第二低功率状态的软件请求,所述功率控制器使得所述至少一个核心进入所述第二低功率状态。
16.根据权利要求14所述的方法,还包括:
响应于确定所述比较结果小于所述第三阈值,确定中断率元数据是否小于第四阈值;以及
响应于确定所述中断率元数据小于所述第四阈值,使能所述功率控制器以用于所述升级操作。
17.至少一种计算机可读存储介质,包括代码,所述代码在被执行时使得机器执行根据权利要求12至16中任一项所述的方法。
18.一种***,包括:
处理器,包括:
至少一个核心,所述至少一个核心用于执行指令;
性能监测器,所述性能监测器耦合到所述至少一个核心,所述性能监测器用于监测所述至少一个核心的性能,所述性能监测器用于计算与第一低功率状态相关联的第一流水线成本元数据和与第二低功率状态相关联的第二流水线成本元数据;以及
功率控制器,所述功率控制器耦合到所述性能监测器,所述功率控制器用于接收所述第一流水线成本元数据和所述第二流水线成本元数据并且至少部分地基于所述第一流水线成本元数据和所述第二流水线成本元数据来确定是否覆盖来自软件实体的低功率状态请求;以及
动态随机存取存储器,所述动态随机存取存储器耦合到所述处理器。
19.根据权利要求18所述的***,其中,所述功率控制器用于:基于所述第一流水线成本元数据和所述第二流水线成本元数据之间的比较来覆盖所述低功率状态请求。
20.根据权利要求18所述的***,其中,所述性能监测器还用于:计算与输入中断的速率相关的中断率元数据,并且将所述中断率元数据传送到所述功率控制器。
21.根据权利要求20所述的***,其中,所述功率控制器用于:进一步基于所述中断率元数据和阈值之间的比较来覆盖所述低功率状态请求。
22.一种处理器,包括:
至少一个核心模块,所述至少一个核心模块用于执行指令,所述至少一个核心模块包括缓存存储器层级,所述缓存存储器层级包括至少一个转换后备缓冲器(TLB)和至少一个包括于核心的缓存存储器;
性能监测器模块,所述性能监测器模块耦合到所述至少一个核心模块,所述性能监测器模块用于监测所述至少一个核心模块的性能,所述性能监测器模块包括第一计数器和第二计数器,所述第一计数器用于对所述至少一个TLB中的未命中进行计数,所述第二计数器用于对所述至少一个包括于核心的缓存存储器中的未命中进行计数,所述性能监测器模块用于至少部分地基于所述第一计数器和所述第二计数器来计算流水线成本元数据;以及
功率控制模块,所述功率控制模块耦合到所述性能监测器模块,所述功率控制模块用于接收所述流水线成本元数据,并且至少部分地基于所述流水线成本元数据来确定所述至少一个核心模块要进入的低功率状态。
23.根据权利要求22所述的处理器,其中,所述功率控制模块用于:接收针对所述至少一个核心模块要进入所述第二低功率状态的软件请求,并且在所述流水线成本元数据指示在所述至少一个核心模块处于第二低功率状态之后的第二流水线成本超过在所述至少一个核心模块处于第一低功率状态之后的第一流水线成本至少第一阈值时,使得所述至少一个核心模块进入不同的低功率状态。
24.根据权利要求23所述的处理器,其中,所述功率控制模块用于:接收针对所述至少一个核心模块要进入所述第一低功率状态的第二软件请求,并且在所述流水线成本元数据指示所述第二流水线成本超过所述第一流水线成本小于第二阈值时,使得所述至少一个核心模块进入所述第二低功率状态,所述第二低功率状态是比所述第一低功率状态更深度的低功率状态。
25.根据权利要求22所述的处理器,其中,所述功率控制模块用于:在所述流水线成本元数据指示在所述至少一个核心模块处于第二低功率状态之后的第二流水线成本超过在所述至少一个核心模块处于第一低功率状态之后的第一流水线成本至少第一阈值时,使能低功率状态降级操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/938,268 | 2018-03-28 | ||
US15/938,268 US20190041950A1 (en) | 2018-03-28 | 2018-03-28 | System, Apparatus And Method For Data Driven Low Power State Control Based On Performance Monitoring Information |
PCT/US2019/019968 WO2019190688A1 (en) | 2018-03-28 | 2019-02-28 | System, apparatus and method for data driven low power state control based on performance monitoring information |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111512267A true CN111512267A (zh) | 2020-08-07 |
Family
ID=65229379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980006858.XA Pending CN111512267A (zh) | 2018-03-28 | 2019-02-28 | 基于性能监测信息进行数据驱动低功率状态控制的***、装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190041950A1 (zh) |
CN (1) | CN111512267A (zh) |
DE (1) | DE112019001001T5 (zh) |
WO (1) | WO2019190688A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111983997A (zh) * | 2020-08-31 | 2020-11-24 | 北京清大华亿科技有限公司 | 一种基于耦合性分析的控制回路性能监测方法及*** |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3646179B1 (en) * | 2017-06-30 | 2023-10-25 | Intel Corporation | Modifying processor frequency based on interrupt rate |
US11216276B2 (en) * | 2018-12-27 | 2022-01-04 | Intel Corporation | Controlling power state demotion in a processor |
US11340684B2 (en) * | 2020-06-05 | 2022-05-24 | Dell Products L.P. | System and method for predictive battery power management |
US12008383B2 (en) | 2020-09-01 | 2024-06-11 | Intel Corporation | Hardware directed core parking based on performance and energy efficiency capabilities of processing units and runtime system characteristics |
US20220100626A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Monitoring performance cost of events |
US11768531B2 (en) | 2021-12-30 | 2023-09-26 | Western Digital Technologies, Inc. | Power management for storage controllers |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117478B2 (en) * | 2006-12-29 | 2012-02-14 | Intel Corporation | Optimizing power usage by processor cores based on architectural events |
US9563431B2 (en) * | 2014-12-26 | 2017-02-07 | Intel Corporation | Techniques for cooperative execution between asymmetric processor cores |
US9910669B2 (en) * | 2015-06-26 | 2018-03-06 | Intel Corporation | Instruction and logic for characterization of data access |
US10255074B2 (en) * | 2015-09-11 | 2019-04-09 | Qualcomm Incorporated | Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt |
US10261916B2 (en) * | 2016-03-25 | 2019-04-16 | Advanced Micro Devices, Inc. | Adaptive extension of leases for entries in a translation lookaside buffer |
-
2018
- 2018-03-28 US US15/938,268 patent/US20190041950A1/en not_active Abandoned
-
2019
- 2019-02-28 DE DE112019001001.8T patent/DE112019001001T5/de active Pending
- 2019-02-28 WO PCT/US2019/019968 patent/WO2019190688A1/en active Application Filing
- 2019-02-28 CN CN201980006858.XA patent/CN111512267A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111983997A (zh) * | 2020-08-31 | 2020-11-24 | 北京清大华亿科技有限公司 | 一种基于耦合性分析的控制回路性能监测方法及*** |
CN111983997B (zh) * | 2020-08-31 | 2021-07-20 | 北京清大华亿科技有限公司 | 一种基于耦合性分析的控制回路性能监测方法及*** |
Also Published As
Publication number | Publication date |
---|---|
DE112019001001T5 (de) | 2020-12-10 |
WO2019190688A1 (en) | 2019-10-03 |
US20190041950A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11567896B2 (en) | Dynamically updating logical identifiers of cores of a processor | |
US11435816B2 (en) | Processor having accelerated user responsiveness in constrained environment | |
CN107077175B (zh) | 提供针对多芯片封装的热参数报告的装置和方法 | |
US9710043B2 (en) | Controlling a guaranteed frequency of a processor | |
CN107533354B (zh) | 控制处理器的处理引擎的性能状态 | |
CN111512267A (zh) | 基于性能监测信息进行数据驱动低功率状态控制的***、装置和方法 | |
US10324519B2 (en) | Controlling forced idle state operation in a processor | |
US11442529B2 (en) | System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor | |
US10620682B2 (en) | System, apparatus and method for processor-external override of hardware performance state control of a processor | |
US11669146B2 (en) | System, apparatus and method for responsive autonomous hardware performance state control of a processor | |
US10429918B2 (en) | Controlling turbo mode frequency operation in a processor | |
US20240028101A1 (en) | System, apparatus and method for globally aware reactive local power control in a processor | |
US20160224090A1 (en) | Performing context save and restore operations in a processor | |
US10379596B2 (en) | Providing an interface for demotion control information in a processor |
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 |