CN113748397A - 用于动态控制处理器的处理电路的电流消耗的***、装置和方法 - Google Patents

用于动态控制处理器的处理电路的电流消耗的***、装置和方法 Download PDF

Info

Publication number
CN113748397A
CN113748397A CN202080028948.1A CN202080028948A CN113748397A CN 113748397 A CN113748397 A CN 113748397A CN 202080028948 A CN202080028948 A CN 202080028948A CN 113748397 A CN113748397 A CN 113748397A
Authority
CN
China
Prior art keywords
current
processor
throttling
circuit
dynamic
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
Application number
CN202080028948.1A
Other languages
English (en)
Inventor
阿维纳什·N·阿南塔克里希南
阿美亚·安巴德卡
安库什·瓦尔玛
宁录·安琪儿
尼尔·罗森茨威格
阿里克·基训
亚历山大·亨德勒
拉希德·E·瑞丝
塔米尔·萨鲁斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN113748397A publication Critical patent/CN113748397A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

在一个实施例中,一种装置包括:多个知识产权(IP)电路,该多个IP电路中的每一者包括配置寄存器,来存储动态电流预算;以及与多个IP电路耦合的功率控制器,该功率控制器包括动态电流共享控制电路,来接收关于要在多个IP电路中的至少一些上执行的工作负载的电流扼制提示信息并且至少部分基于此来为多个IP电路中的每一者生成动态电流预算。描述和要求保护了其他实施例。

Description

用于动态控制处理器的处理电路的电流消耗的***、装置和 方法
技术领域
实施例涉及处理器的功率管理。
背景技术
半导体处理和逻辑设计中的进步已允许了可存在于集成电路器件上的逻辑的数量的增大。结果,计算机***配置已从***中的单个或多个集成电路演进到个体集成电路上的多个硬件线程、多个核心、多个器件和/或完整***。此外,随着集成电路的密度增长,对于计算***(从嵌入式***到服务器)的功率要求也已升级了。此外,软件效率低下及其对硬件的要求也引起了计算设备能量消耗的增大。实际上,一些研究指出,计算设备消耗了对于一个国家(例如美国)的整个电力供应的相当大的百分比。结果,对于与集成电路相关联的能量效率和节约,存在至关重要的需求。这些需求将随着服务器、桌面型计算机、笔记本、UltrabooksTM、平板设备、移动电话、处理器、嵌入式***等等变得更加普遍(从包括在典型的计算机、汽车和电视中到生物技术)而增大。
附图说明
图1是根据本发明的实施例的***的一部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一实施例的多域处理器的框图。
图4是包括多个核心的处理器的实施例。
图5是根据本发明的一个实施例的处理器核心的微体系结构的框图。
图6是根据另一实施例的处理器核心的微体系结构的框图。
图7是根据又一实施例的处理器核心的微体系结构的框图。
图8是根据另外一个实施例的处理器核心的微体系结构的框图。
图9是根据本发明的另一实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一示例SoC的框图。
图12是可与实施例一起使用的示例***的框图。
图13是可与实施例一起使用的另一示例***的框图。
图14是代表性计算机***的框图。
图15是根据本发明的实施例的***的框图。
图16是根据实施例图示出IP核心开发***的框图,该IP核心开发***被用于制造集成电路以执行操作。
图17是根据本发明的实施例的计算***的框图。
图18是根据本发明的实施例的方法的流程图。
图19是根据本发明的一个实施例的方法的流程图。
图20是根据本发明的另一实施例的方法的流程图。
图21是根据本发明的实施例的处理器的框图。
图22是根据本发明的另一实施例的控制布置的框图。
图23是根据本发明的实施例的方法的流程图。
图24是根据本发明的另一实施例的方法的流程图。
具体实施方式
在各种实施例中,处理器被配置为动态地为该处理器的多个处理电路中的每一个确定独立可控的最大电流消耗能力。例如,处理器可以是多核心处理器或者其他片上***(system on chip,SoC),其中包括各种不同的处理电路,包括通用处理核心、图形处理器,等等。通过本文的实施例,功率控制器可以至少部分基于从软件实体(例如操作***或其他调度器)或者应用本身接收到的信息,来动态地为每个处理电路确定独立电流消耗限制。这种信息可识别出不同的处理电路对于给定工作负载的相对优先级或重要性,这样就可在每个核心(或其他处理电路)的基础上提供动态的、独立的并且可控的电流消耗值。
这样,当在操作期间遇到功率激增时,可以独立地执行个体处理电路的扼制,以便对执行中的工作负载产生尽可能有限的影响。与之不同,传统的处理电路扼制是在发生功率激增时以预定义的静态扼制量发生的。这样的静态安排是为了满足工作负载行为的整个谱系而设置的,而并非对于任何给定情况都是最优的。相反,利用实施例,通过动态地配置个体处理电路的允许电流消耗,对于执行中的任何给定工作负载,可以实现最优的扼制行为。
作为高级别示例,考虑第一种工作负载情况,它是以核心为中心的并且有较少量的图形处理。考虑第二种工作负载情况,其中核心没有被大量使用,而图形处理器被高度使用。通过由软件实体提供的适当提示信息,可以提供并且实施对这些不同处理电路的最大电流消耗水平的动态且可控的确定。这样,对于其中核心可能正在执行影响工作负载响应性的工作的第一工作负载,这种核心可能不会被扼制到图形处理器被扼制的程度。相反,对于其中图形处理器可能正在执行用户可见的工作的第二种工作负载情况,对核心的扼制水平可能比对图形处理器的更高。这样,不同的处理电路可基于可能正在执行的不同工作负载以不同方式被扼制。
通过实施例,软件接口使得软件实体,例如运行时软件、驱动器、固件或其他软件实体,能够提供扼制信息的动态编程,以优化处理器的不同处理电路之间的电流共享。以这种方式,在电流受约束的场景中,可以改善性能。
虽然以下实施例是参考特定集成电路中(例如计算平台或处理器中)的能量节约和能量效率来描述的,但其他实施例适用于其他类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可被应用到也可受益于更好的能量效率和能量节约的其他类型的电路或半导体器件。例如,公开的实施例不限于任何特定类型的计算机***。也就是说,公开的实施例可被用于许多不同的***类型中,范围从服务器计算机(例如,塔式服务器、机架式服务器、刀片式服务器、微服务器等等)、通信***、存储***、任何配置的桌面计算机、膝上型电脑、笔记本电脑、到平板计算机(包括2:1平板设备、平板手机等等)不等,并且也可被用于其他设备中,例如手持设备、片上***(systems on chip,SoC)、以及嵌入式应用。手持设备的一些示例包括诸如智能电话之类的蜂窝电话、互联网协议设备、数字相机、个人数字助理(personal digital assistant,PDA)、以及手持PC。嵌入式应用通常可包括微控制器、数字信号处理器(digital signal processor,DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(wide area network,WAN)交换机、可穿戴设备、或者能够执行下面教导的功能和操作的任何其他***。另外,实施例可被实现在具有标准语音功能的移动终端中,例如移动电话、智能电话和平板手机,和/或被实现在没有标准无线语音功能通信能力的非移动终端中,例如许多可穿戴设备、平板设备、笔记本电脑、桌面电脑、微服务器、服务器,等等。另外,本文描述的装置、方法和***不限于物理计算设备,而是也可涉及针对能量节约和效率的软件优化。正如在以下描述中将变得容易清楚的,本文描述的方法、装置和***的实施例(无论是就硬件、固件、软件或者其组合而言)对于“绿色技术”未来,例如对于涵盖美国经济的一大部分的产品中的功率节约和能量效率,是至关重要的。
现在参考图1,示出了根据本发明的实施例的***的一部分的框图。如图1所示,***100可包括各种组件,其中包括处理器110,该处理器110如图所示是多核心处理器。处理器110可经由外部电压调节器160耦合到电力供应源150,该电压调节器160可执行第一电压转换以向处理器110提供主调节电压。
可以看出,处理器110可以是包括多个核心120a-120n的单管芯处理器。此外,每个核心可与集成电压调节器(integrated voltage regulator,IVR)125a-125n相关联,该集成电压调节器接收主调节电压并且生成要被提供给与该IVR相关联的处理器的一个或多个代理的操作电压。因此,可以提供IVR实现方式来允许对电压进行细粒度控制并从而允许对每个个体核心的功率和性能进行细粒度控制。这样,每个核心可按独立的电压和频率进行操作,这使能了很大的灵活性并且提供了很宽的机会来平衡功率消耗与性能。在一些实施例中,对多个IVR的使用使得能够将组件分组到分开的电力平面中,使得电力被IVR调节并且只供应给群组中的那些组件。在功率管理期间,一个IVR的给定电力平面在处理器被置于某个低功率状态中时可被掉电或断电,而另一IVR的另一电力平面保持活跃或者被完全供电。
仍然参考图1,额外的组件可存在于处理器内,包括输入/输出接口132、另一接口134、以及集成存储器控制器136。可以看出,这些组件中的每一者可由另一集成电压调节器125x来供电。在一个实施例中,接口132可为
Figure BDA0003304583110000051
快速路径互连(Quick PathInterconnect,QPI)互连使能操作,该互连以包括多个层的缓存一致性协议提供点到点(point-to-point,PtP)链路,所述多个层包括物理层、链路层和协议层。进而,接口134可经由快速***组件互连(Peripheral Component Interconnect Express,PCIeTM)协议来进行通信。
还示出了功率控制单元(power control unit,PCU)138,该PCU 138可包括硬件、软件和/或固件来执行关于处理器110的功率管理操作。可以看出,PCU 138经由数字接口向外部电压调节器160提供控制信息以使得电压调节器生成适当的调节电压。PCU 138还经由另一数字接口向IVR 125提供控制信息以控制生成的操作电压(或者使得相应的IVR在低功率模式中被禁用)。在各种实施例中,PCU 138可包括多种功率管理逻辑单元来执行基于硬件的功率管理。这种功率管理可以是完全处理器控制的(例如,由各种处理器硬件控制,并且可由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功率管理可响应于外部源而被执行(例如,平台或管理功率管理源或***软件)。
此外,虽然图1示出了其中PCU 138是单独的处理引擎(其可被实现为微控制器)的实现方式,但要理解在一些情况下,除了专用功率控制器以外或者取代专用功率控制器,每个核心可包括功率控制代理或者与功率控制代理相关联来更自主地独立控制功率消耗。在一些情况下,可提供层次化功率管理体系结构,其中PCU 138和与每个核心120相关联的相应功率管理代理通信。
PCU 138中包括的一个功率管理逻辑可以是动态电流共享控制电路,该电路被配置为对于每个核心120和/或额外的处理电路动态地确定独立最大电流消耗值。如本文将进一步描述的,这个控制电路可向每个核心120提供动态可配置的最大电流消耗值来使得每个核心120根据此约束来操作。这样,当PCU 138识别出触发扼制事件的状况时,扼制信号可被发送到核心120。进而,每个核心120可将其操作限制到其动态识别的最大电流消耗值。这样,不同的核心可在非对称性能状态下操作,尤其是当识别出扼制事件时,使得发生对于面向用户的工作负载的最低限度影响。
虽然为了图示的容易而没有示出,但要理解在处理器110内可存在额外的组件,例如额外的控制电路,以及诸如内部存储器之类的其他组件,例如缓存存储器层次体系的一个或多个级别,等等。此外,虽然在图1的实现方式中是用集成电压调节器来示出的,但实施例不限于此。
注意,本文描述的功率管理技术可独立于基于操作***(operating system,OS)的功率管理(operating system-based power management,OSPM)机制并且与其互补。根据一个示例OSPM技术,处理器可按各种性能状态或水平——所谓的P状态(即从P0至PN)——进行操作。一般而言,P1性能状态可对应于OS可请求的最高保证性能状态。本文描述的实施例可使得能够基于多种输入和处理器操作参数来对P1性能状态的保证频率进行动态改变。除了这个P1状态以外,OS还可请求更高的性能状态,即P0状态。这个P0状态从而可以是机会模式或加强模式状态,其中当功率和/或热预算可用时,处理器硬件可将处理器或者其至少一些部分配置为按高于保证频率来操作。在许多实现方式中,处理器可包括高于P1保证最大频率的、超出到特定处理器的最大峰值频率的多个所谓的分段频率(bin frequency),这些分段频率在制造期间被烧熔或以其他方式写入到处理器中。此外,根据一个OSPM机制,处理器可按各种功率状态或水平来进行操作。关于功率状态,OSPM机制可指定不同的功率消耗状态,一般称为C状态,C0、C1至Cn状态。当核心活跃时,该核心按C0状态来运行,并且当核心空闲时,其可被置于核心低功率状态中,也被称为核心非零C状态(例如,C1-C6状态),其中每个C状态处于更低的功率消耗水平(从而C6是比C1更深的低功率状态,等等依此类推)。
要理解,许多不同类型的功率管理技术在不同的实施例中可被单独或组合使用。作为代表性示例,功率控制器可控制处理器按某种形式的动态电压频率缩放(dynamicvoltage frequency scaling,DVFS)来被功率管理,在该动态电压频率缩放中,一个或多个核心或其他处理器逻辑的操作电压和/或操作频率可被动态地控制以在某些情形中降低功率消耗。在一示例中,可利用可从加州圣克拉拉的英特尔公司获得的增强型英特尔SpeedStepTM技术来执行DVFS,以在最低的功率消耗水平下提供最优的性能。在另一示例中,可利用英特尔TurboBoostTM技术来执行DVFS,以使得一个或多个核心或其他计算引擎能够基于状况(例如,工作负载和可用性)以高于保证操作频率来进行操作。
在某些示例中可使用的另一种功率管理技术是工作负载在不同计算引擎之间的动态调换。例如,处理器可包括以不同的功率消耗水平操作的非对称核心或其他处理引擎,使得在功率受约束的情形中,一个或多个工作负载可被动态切换来在更低功率的核心或其他计算引擎上执行。另一种示范性功率管理技术是硬件工作周期循环(hardware dutycycling,HDC),其可使得核心和/或其他计算引擎根据工作周期被周期性地启用和禁用,从而使得一个或多个核心可在工作周期的非活跃时段期间被设为不活跃并且在工作周期的活跃时段期间被设为活跃。虽然是利用这些特定示例来描述的,但要理解在特定实施例中可使用许多其他功率管理技术。
实施例可被实现在针对各种市场的处理器中,包括服务器处理器、桌面处理器、移动处理器等等。现在参考图2,示出了根据本发明的实施例的处理器的框图。如图2所示,处理器200可以是包括多个核心210a-210n的多核心处理器。在一个实施例中,每个这种核心可以是独立的电力域的并且可被配置为基于工作负载而进入和退出活跃状态和/或最大性能状态。各种核心可经由互连215来耦合到包括各种组件的***代理220。可以看出,***代理220可包括共享缓存230,该共享缓存230可以是最后一级缓存。此外,***代理可包括集成存储器控制器240来例如经由存储器总线与***存储器(图2中未示出)通信。***代理220还包括各种接口250和功率控制单元255,功率控制单元255可包括逻辑来执行本文描述的功率管理技术。在示出的实施例中,功率控制单元255包括动态电流共享控制电路258,该动态电流共享控制电路258可以至少部分基于由软件提供的提示信息,来为每个核心210动态地确定动态电流消耗值。动态电流共享控制电路258可以将这种动态电流消耗值传达给核心210以便其存储和内部使用,来独立地控制其电流消耗,尤其是当识别出扼制事件时。
此外,通过接口250a-250n,可进行到各种芯片外组件的连接,例如***设备、大容量存储装置等等。虽然在图2的实施例中是利用这个特定实现方式示出的,但本发明的范围在这个方面不受限制。
现在参考图3,示出了根据本发明的另一实施例的多域处理器的框图。如图3的实施例中所示,处理器300包括多个域。具体而言,核心域310可包括多个核心3100-310n,图形域320可包括一个或多个图形引擎,并且***代理域350可进一步存在。在一些实施例中,***代理域350可按独立于核心域的频率来执行并且可在所有时间保持通电以应对功率控制事件和功率管理,使得域310和320可被控制来动态地进入和退出高功率和低功率状态。域310和320中的每一者可按不同的电压和/或功率来进行操作。注意,虽然只示出了三个域,但要理解本发明的范围在这个方面不受限制,并且在其他实施例中可存在额外的域。例如,多个核心域可存在,每个核心域包括至少一个核心。
一般而言,每个核心310除了各种执行单元和额外的处理元件以外还可包括低级别缓存。进而,各种核心可耦合到彼此并且耦合到由最后一级缓存(last level cache,LLC)3400-340n的多个单元形成的共享缓存存储器。在各种实施例中,LLC 340可被共享于核心和图形引擎,以及各种媒体处理电路之间。可以看出,环状互连330从而将核心耦合在一起,并且在核心、图形域320和***代理电路350之间提供互连。在一个实施例中,互连330可以是核心域的一部分。然而,在其他实施例中,环状互连可以是其自己的域的。
还可以看出,***代理域350可包括显示控制器352,该显示控制器352可提供对关联的显示器的控制和到关联的显示器的接口。还可以看出,***代理域350可包括功率控制单元355,该功率控制单元355可包括逻辑来执行本文描述的功率管理技术。在示出的实施例中,功率控制单元355包括动态电流共享控制电路359,该动态电流共享控制电路359至少部分基于由软件提供的提示信息来为每个核心310和图形引擎320独立地确定最大电流消耗水平,如本文所述。
从图3中还可看出,处理器300还可包括集成存储器控制器(integrated memorycontroller,IMC)370,该IMC 370可提供到诸如动态随机访问存储器(dynamic randomaccess memory,DRAM)之类的***存储器的接口。多个接口3800-380n可存在来使能处理器和其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(directmedia interface,DMI)接口,以及一个或多个PCIeTM接口。此外,为了提供诸如额外的处理器或其他电路之类的其他代理之间的通信,也可提供一个或多个QPI接口。虽然在图3的实施例中是在这个高级别示出的,但要理解本发明的范围在这个方面不受限制。
参考图4,图示了包括多个核心的处理器的实施例。处理器400包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上***(system on a chip,SoC)、或者用于执行代码的其他设备。处理器400在一个实施例中包括至少两个核心——核心401和402,它们可包括非对称核心或对称核心(图示的实施例)。然而,处理器400可包括可以是对称或非对称的任何数目的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够为处理器保持状态(例如执行状态或体系结构状态)的任何其他元件。换言之,处理元件在一个实施例中指的是能够独立地与诸如软件线程、操作***、应用或其他代码之类的代码相关联的任何硬件。物理处理器通常指的是一种集成电路,该集成电路可包括任何数目的其他处理元件,例如核心或硬件线程。
核心经常指能够维持独立体系结构状态的、位于集成电路上的逻辑,其中每个被独立维持的体系结构状态与至少一些专用执行资源相关联。与核心形成对比,硬件线程通常指能够维持独立体系结构状态的、位于集成电路上的任何逻辑,其中被独立维持的体系结构状态共享对执行资源的访问。可以看出,当某些资源被共享并且其他资源被专用于体系结构状态时,硬件线程和核心的命名法之间的界线会重叠。然而经常,核心和硬件线程***作***看作单独的逻辑处理器,其中操作***能够单独调度每个逻辑处理器上的操作。
如图4所示,物理处理器400包括两个核心,即核心401和402。这里,核心401和402被认为是对称核心,即具有相同的配置、功能单元和/或逻辑的核心。在另一实施例中,核心401包括无序处理器核心,而核心402包括有序处理器核心。然而,核心401和402可以是单独从任何类型的核心中选择的,例如,原生核心、受软件管理的核心、被适配为执行原生指令集体系结构(instruction set architecture,ISA)的核心、被适配为执行经转化的ISA的核心、共同设计的核心,或者其他已知的核心。再进一步讨论,下文更详细描述在核心401中图示的功能单元,因为核心402中的单元以类似的方式进行操作。
如图所示,核心401包括两个硬件线程401a和401b,它们也可被称为硬件线程槽401a和401b。因此,软件实体(例如操作***)在一个实施例中可能将处理器400视为四个分开的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上文提到的,第一线程与体系结构状态寄存器401a相关联,第二线程与体系结构状态寄存器401b相关联,第三线程可与体系结构状态寄存器402a相关联,并且第四线程可与体系结构状态寄存器402b相关联。这里,体系结构状态寄存器(401a、401b、402a和402b)的每一者可被称为处理元件、线程槽或者线程单元,如上所述。如图所示,体系结构状态寄存器401a被复制在体系结构状态寄存器401b中,因此能够为逻辑处理器401a和逻辑处理器401b存储个体的体系结构状态/情境。在核心401中,也可针对线程401a和401b复制其他更小的资源,例如分配器和重命名器块430中的指令指针和重命名逻辑。通过分区可共享一些资源,例如重排序/引退单元435中的重排序缓冲器、ILTB 420、加载/存储缓冲器、以及队列。其他资源,例如通用内部寄存器、(一个或多个)页表基址寄存器、低级别数据缓存和数据TLB 415、(一个或多个)执行单元440、以及无序单元435的一些部分,可能被完全共享。
处理器400经常包括其他资源,这些资源可被完全共享、通过分区被共享、或者被处理元件专用或者专用于处理元件。在图4中,图示了具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意,处理器可包括或者省略这些功能单元中的任何一者,以及包括没有描绘的任何其他已知的功能单元、逻辑或者固件。如图所示,核心401包括简化的、代表性无序(out-of-order,OOO)处理器核心。但在不同的实施例中可利用有序处理器。OOO核心包括分支目标缓冲器420来预测要执行/采取的分支,以及指令转化缓冲器(instruction-translation buffer,I-TLB)420来为指令存储地址转化条目。
核心401还包括耦合到取得单元420的解码模块425以对取得的元素解码。取得逻辑在一个实施例中包括分别与线程槽401a、401b相关联的个体定序器。通常核心401与第一ISA相关联,该第一ISA定义/指定在处理器400上可执行的指令。经常,作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),该部分引用/指定要执行的指令或操作。解码模块425包括从其操作码识别这些指令并且在管线中传递解码的指令来按第一ISA定义的那样处理的电路。例如,解码器425在一个实施例中包括被设计或适配为识别诸如事务性指令之类的特定指令的逻辑。作为解码器425进行的识别的结果,体系结构或核心401采取特定的预定义动作来执行与适当的指令相关联的任务。注意以下这点是重要的:本文描述的任何任务、块、操作和方法可响应于单个或多个指令而被执行;这些指令中的一些可以是新的或者旧的指令。
在一个示例中,分配器和重命名器块430包括分配器来预留资源,例如预留寄存器文件来存储指令处理结果。然而,线程401a和401b可能能够进行无序执行,其中分配器和重命名器块430也预留其他资源,例如预留重排序缓冲器来跟踪指令结果。单元430还可包括寄存器重命名器来将程序/指令参考寄存器重命名到处理器400内部的其他寄存器。重排序/引退单元435包括组件(例如,上文提及的重排序缓冲器、加载缓冲器和存储缓冲器),来支持对被无序执行的指令进行的无序执行和之后的有序引退。
调度器和(一个或多个)执行单元块440在一个实施例中包括调度器单元来调度执行单元上的指令/操作。例如,在执行单元的端口上调度浮点指令,其中该执行单元具有可用的浮点执行单元。也包括与执行单元相关联的寄存器文件来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元、和其他已知的执行单元。
更低级别数据缓存和数据转化缓冲器(data translation buffer,D-TLB)450耦合到(一个或多个)执行单元440。数据缓存还用于存储最近使用/操作的元素(例如数据操作对象),这些元素可能被保持在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转化。作为具体示例,处理器可包括页表结构来将物理存储器分解成多个虚拟页。
这里,核心401和402共享对更高级别或更远缓存410的访问,该缓存用于缓存最近取得的元素。注意,更高级别或者更远指的是缓存级别增大或者变得更远离(一个或多个)执行单元。在一个实施例中,更高级别缓存410是最后一级数据缓存——处理器400上的存储器层次体系中的最后缓存——例如第二或第三级别数据缓存。然而,更高级别缓存410不限于此,因为其可与指令缓存相关联或者包括指令缓存。取而代之,踪迹缓存——一类指令缓存——可被耦合在解码器425之后来存储最近解码的踪迹。
在描绘的配置中,处理器400还包括总线接口模块405和功率控制器460,其可根据本发明的实施例执行功率管理。在此场景中,总线接口405用于与在处理器400外部的设备(例如,***存储器和其他组件)通信。
存储器控制器470可与诸如一个或许多存储器之类的其他设备相接口。在一示例中,总线接口405包括环状互连,该环状互连具有用于与存储器相接口的存储器控制器和用于与图形处理器相接口的图形控制器。在SoC环境中,甚至更多的设备(例如,网络接口、协处理器、存储器、图形处理器、和任何其他已知的计算机设备/接口)可被集成在单个管芯或集成电路上,以提供具有高功能和低功率消耗的小形状因数。
现在参考图5,示出了根据本发明的一个实施例的处理器核心的微体系结构的框图。如图5所示,处理器核心500可以是多阶段管线式无序处理器。核心500可基于接收到的操作电压来按各种电压进行操作,其中接收到的操作电压可以是从集成电压调节器或者外部电压调节器接收的。
从图5中可见,核心500包括前端单元510,前端单元510可用于取得要执行的指令并且使它们为以后在处理器管线中使用做好准备。例如,前端单元510可包括取得单元501、指令缓存503、和指令解码器505。在一些实现方式中,前端单元510还可包括踪迹缓存,连同微代码存储装置以及微操作存储装置。取得单元501可取得宏指令(例如从存储器或指令缓存503取得)并且将它们馈送到指令解码器505来将其解码成基元(即,供处理器执行的微操作)。
耦合在前端单元510和执行单元520之间的是无序(OOO)引擎515,该OOO引擎515可用于接收微指令并且使它们为执行做好准备。更具体而言,OOO引擎515可包括各种缓冲器,用于重排序微指令流并且分配执行所需要的各种资源,并且用于提供逻辑寄存器到(诸如寄存器文件530和扩展寄存器文件535之类的)各种寄存器文件内的存储位置上的重命名。寄存器文件530可包括用于整数操作和浮点操作的分开的寄存器文件。扩展寄存器文件535可提供用于向量大小单元的存储,例如256或512比特每寄存器。为了配置、控制和额外的操作,一组特定于机器的寄存器(machine specific register,MSR)538也可存在并且是核心500内(以及核心外部)的各种逻辑可访问的。
各种资源可存在于执行单元520中,包括例如各种整数、浮点、和单指令多数据(single instruction multiple data,SIMD)逻辑单元,以及其他专门的硬件。例如,这种执行单元可包括一个或多个算术逻辑单元(arithmetic logic unit,ALU)522以及一个或多个向量执行单元524,以及其他这种执行单元。
来自执行单元的结果可被提供到引退逻辑,即,重排序缓冲器(reorder buffer,ROB)540。更具体而言,ROB 540可包括各种阵列和逻辑以接收与被执行的指令相关联的信息。此信息随后被ROB 540考查来确定是否指令可被有效地引退并且结果数据可被提交给处理器的体系结构状态,或者确定是否发生了阻止指令的适当引退的一个或多个异常。当然,ROB 540可应对与引退相关联的其他操作。
如图5所示,ROB 540耦合到缓存550,缓存550在一个实施例中可以是低级别缓存(例如,L1缓存),不过本发明的范围在这个方面不受限制。另外,执行单元520可直接耦合到缓存550。从缓存550,数据通信可与更高级别缓存、***存储器等等发生。虽然在图5的实施例中是以这个高级别来示出的,但要理解本发明的范围在这个方面不受限制。例如,虽然图5的实现方式是关于诸如
Figure BDA0003304583110000141
x86指令集体系结构(ISA)之类的无序机器的,但本发明的范围在这个方面不受限制。也就是说,其他实施例可被实现在有序处理器、诸如基于ARM的处理器之类的精简指令集计算(reduced instruction set computing,RISC)处理器、或者可经由仿真引擎和关联的逻辑电路来对不同ISA的指令和操作进行仿真的另一类型的ISA的处理器中。
现在参考图6,示出了根据另一实施例的处理器核心的微体系结构的框图。在图6的实施例中,核心600可以是不同微体系结构的低功率核心,例如基于
Figure BDA0003304583110000142
AtomTM的处理器,其具有被设计为降低功率消耗的相对有限的管线深度。可以看出,核心600包括被耦合来向指令解码器615提供指令的指令缓存610。分支预测器605可耦合到指令缓存610。注意,指令缓存610还可耦合到另一级别的缓存存储器,例如L2缓存(在图6中为了图示的容易而没有示出)。进而,指令解码器615将解码的指令提供到发出队列620以便存储和输送到给定的执行管线。微代码ROM 618耦合到指令解码器615。
浮点管线630包括浮点寄存器文件632,该浮点寄存器文件632可包括诸如128、256或512比特之类的给定比特宽度的多个体系结构寄存器。管线630包括浮点调度器634来调度指令以供在管线的多个执行单元之一上执行。在示出的实施例中,这种执行单元包括ALU635、置乱单元636、以及浮点加法器638。进而,在这些执行单元中生成的结果可被提供回到寄存器文件632的缓冲器和/或寄存器。当然要理解,虽然是以这几个示例执行单元来示出的,但在另一实施例中可存在额外的或者不同的浮点执行单元。
也可提供整数管线640。在示出的实施例中,管线640包括整数寄存器文件642,该整数寄存器文件642可包括诸如128或256比特之类的给定比特宽度的多个体系结构寄存器。管线640包括整数调度器644来调度指令以供在管线的多个执行单元之一上执行。在示出的实施例中,这种执行单元包括ALU 645、移位器单元646、以及跳转执行单元648。进而,在这些执行单元中生成的结果可被提供回到寄存器文件642的缓冲器和/或寄存器。当然要理解,虽然是以这几个示例执行单元示出的,但在另一实施例中可存在额外的或者不同的整数执行单元。
存储器执行调度器650可调度存储器操作来在地址生成单元652中执行,该地址生成单元652也耦合到TLB 654。可以看出,这些结构可耦合到数据缓存660,数据缓存660可以是L0和/或L1数据缓存,该L0和/或L1数据缓存进而耦合到缓存存储器层次体系的额外级别,包括L2缓存存储器。
为了提供对无序执行的支持,除了重排序缓冲器680以外,还可提供分配器/重命名器670,该重排序缓冲器680被配置为对被无序执行的指令进行重排序以便有序引退。虽然在图6的图示中是以这个特定的管线体系结构来示出的,但要理解许多变化和替换是可能的。
注意,在(例如根据图5和图6的微体系结构)具有非对称核心的处理器中,可出于功率管理原因在核心之间动态地调换工作负载,因为这些核心虽然具有不同的管线设计和深度,但可具有相同或相关的ISA。可以按对于用户应用而言透明(并且可能对于内核也透明)的方式来执行这种动态的核心调换。
参考图7,示出了根据又一实施例的处理器核心的微体系结构的框图。如图7所示,核心700可包括多阶段有序管线来以非常低的功率消耗水平执行。作为一个这种示例,处理器700可具有根据可从加州森尼维尔市的ARM控股有限公司获得的ARM Cortex A53设计的微体系结构。在一种实现方式中,可提供被配置为既执行32比特代码也执行64比特代码的8阶段管线。核心700包括取得单元710,该取得单元710被配置为取得指令并将它们提供给解码单元715,其中解码单元715可对指令(例如,诸如ARMv8 ISA之类的给定ISA的宏指令)进行解码。还要注意,队列730可耦合到解码单元715以存储经解码的指令。经解码的指令被提供到发出逻辑725,其中在发出逻辑725处,经解码的指令可被发出到多个执行单元中的给定一个。
进一步参考图7,发出逻辑725可将指令发出到多个执行单元之一。在示出的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双重发出单元760、以及加载/存储单元770。这些不同执行单元的结果可被提供到写回单元780。要理解,虽然为了图示的容易而示出了单个写回单元,但在一些实现方式中,分开的写回单元可与每个执行单元相关联。此外,要理解,虽然图7所示的每个单元和逻辑是以高级别来表示的,但特定的实现方式可包括更多的或不同的结构。利用一个或多个(如图7所示的)具有管线的核心来设计的处理器可被实现在许多不同的最终产品中,从移动设备延伸到服务器***。
参考图8,示出了根据另外一个实施例的处理器核心的微体系结构的框图。如图8所示,核心800可包括多阶段多发出无序管线以按非常高的性能水平执行(这可以按比图7的核心700更高的功率消耗水平发生)。作为一个这种示例,处理器800可具有根据ARMCortex A57设计的微体系结构。在一种实现方式中,可提供被配置为既执行32比特代码也执行64比特代码的15(或更多)阶段管线。此外,管线可提供3宽(或更宽)和3发出(或更多发出)操作。核心800包括取得单元810,取得单元810被配置为取得指令并且将它们提供到解码器/重命名器/调谴器815,解码器/重命名器/调谴器815可对指令(例如ARMv8指令集体系结构的宏指令)解码,重命名指令内的寄存器引用,并且将指令(最终)调谴到所选择的执行单元。经解码的指令可被存储在队列825中。注意,虽然在图8中为了图示的容易而示出了单个队列结构,但要理解可针对多个不同类型的执行单元中的每一者提供分开的队列。
图8中还示出了发出逻辑830,其中,被存储在队列825中的经解码指令可从该发出逻辑830被发出到所选择的执行单元。发出逻辑830也可被实现在特定实施例中,其中,针对发出逻辑830所耦合到的多种不同类型的执行单元中的每一者有单独的发出逻辑。
经解码的指令可被发出到多个执行单元中的给定一个。在示出的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/向量单元850、分支单元860、以及加载/存储单元870。在一实施例中,浮点/向量单元850可被配置为应对128或256比特的SIMD或向量数据。此外,浮点/向量执行单元850可执行IEEE-754双精度浮点操作。这些不同执行单元的结果可被提供到写回单元880。注意,在一些实现方式中,分开的写回单元可与执行单元中的每一者相关联。此外,要理解,虽然图8所示的每个单元和逻辑是以高级别来表示的,但特定的实现方式可包括更多的或不同的结构。
注意在(例如根据图7和图8的微体系结构)具有非对称核心的处理器中,可出于功率管理原因而动态地调换工作负载,因为这些核心虽然具有不同的管线设计和深度,但可具有相同或相关的ISA。可以按对于用户应用而言透明(并且可能对于内核也透明)的方式来执行这种动态的核心调换。
利用一个或多个(如图5-图8中的任何一个或多个图中所示的)具有管线的核心来设计的处理器可被实现在许多不同的最终产品中,从移动设备延伸到服务器***。现在参考图9,示出了根据本发明的另一实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的SoC,每个域可被控制来按独立的操作电压和操作频率进行操作。作为具体的说明性示例,处理器900可以是可从英特尔公司获得的基于
Figure BDA0003304583110000171
ArchitectureCoreTM的处理器,例如i3、i5、i7或另外的这种处理器。然而,其他低功率处理器,例如可从加州森尼维尔市的超微半导体公司(AMD)获得的,来自ARM控股有限公司或者其被许可方的基于ARM的设计,或者来自加州森尼维尔市的MIPS技术公司或者其被许可方或者采用者的基于MIPS的设计,可取而代之存在于其他实施例中,例如苹果A7处理器、高通骁龙处理器、或者德州仪器OMAP处理器。这种SoC可被用于低功率***中,例如智能电话、平板计算机、平板手机计算机、UltrabookTM计算机、或者其他便携式计算设备或连接的设备。
在图9所示的高级别视图中,处理器900包括多个核心单元9100-910n。每个核心单元可包括一个或多个处理器核心、一个或多个缓存存储器以及其他电路。每个核心单元910可支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);MIPS指令集;ARM指令集(带有诸如NEON之类的可选附加扩展))或者其他指令集或者其组合。注意,核心单元中的一些可以是异构资源(例如,具有不同的设计)。此外,每个这种核心可耦合到缓存存储器(未示出),该缓存存储器在一实施例中可以是共享级别(L2)缓存存储器。非易失性存储装置930可用于存储各种程序和其他数据。例如,此存储装置可用于存储微代码的至少一些部分、诸如BIOS之类的引导信息、其他***软件,等等。
每个核心单元910还可包括接口(例如,总线接口单元),来使得能够互连到处理器的额外电路。在一实施例中,每个核心单元910耦合到可充当主缓存一致片上互连的一致架构,该互连进而耦合到存储器控制器935。进而,存储器控制器935控制与诸如DRAM之类的存储器(在图9中为了图示的容易而没有示出)的通信。
除了核心单元以外,还有额外的处理引擎存在于处理器内,包括至少一个图形单元920,该图形单元920可包括一个或多个图形处理单元(graphics processing unit,GPU)来执行图形处理以及可能执行图形处理器上的通用操作(所谓的GPGPU操作)。此外,至少一个图像信号处理器925可存在。信号处理器925可被配置为处理从在SoC内部或者在片外的一个或多个捕捉设备接收的传入图像数据。
其他加速器也可存在。在图9的图示中,视频编码器950可执行编码操作,这些操作包括对视频信息的编码和解码,例如为高清晰度视频内容提供硬件加速支持。还可提供显示控制器955来加速显示操作,包括为***的内部和外部显示器提供支持。此外,安全性处理器945可存在来执行诸如安全引导操作、各种密码操作等等之类的安全性操作。
每个单元可让其功率消耗被经由功率管理器940来控制,该功率管理器940可包括控制逻辑来执行本文描述的各种功率管理技术。
在一些实施例中,SoC 900还可包括耦合到一致架构的非一致架构,各种***设备可耦合到该一致架构。一个或多个接口960a-960d使能与一个或多个片外设备的通信。这种通信可经由各种通信协议,例如PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI,以及其他类型的通信协议。虽然在图9的实施例中是在这个高级别示出的,但要理解本发明的范围在这个方面不受限制。
现在参考图10,示出了代表性SoC的框图。在示出的实施例中,SoC1000可以是多核心SoC,该多核心SoC被配置用于低功率操作以针对包含到智能电话或(诸如平板计算机或其他便携式计算设备之类的)其他低功率设备中而被优化。作为示例,可利用非对称的或不同类型的核心来实现SoC 1000,例如更高功率和/或低功率核心的组合,例如无序核心和有序核心。在不同的实施例中,这些核心可基于
Figure BDA0003304583110000191
ArchitectureTM核心设计或者ARM体系结构设计。在另外的其他实施例中,在给定的SoC中可实现
Figure BDA0003304583110000192
和ARM核心的混合。
从图10中可看出,SoC 1000包括具有多个第一核心10120-10123的第一核心域1010。在一示例中,这些核心可以是诸如有序核心之类的低功率核心。在一个实施例中,这些第一核心可被实现为ARM Cortex A53核心。进而,这些核心耦合到核心域1010的缓存存储器1015。此外,SoC 1000包括第二核心域1020。在图10的图示中,第二核心域1020具有多个第二核心10220-10223。在一示例中,这些核心可以是功率消耗比第一核心1012更高的核心。在一实施例中,第二核心可以是无序核心,这些无序核心可被实现为ARM Cortex A57核心。进而,这些核心耦合到核心域1020的缓存存储器1025。注意,虽然图10所示的示例在每个域中包括4个核心,但要理解在其他示例中在给定的域中可存在更多或更少核心。
进一步参考图10,还提供了图形域1030,该图形域1030可包括被配置为独立地执行(例如,由核心域1010和1020的一个或多个核心提供的)图形工作负载的一个或多个图形处理单元(GPU)。作为示例,除了提供图形和显示渲染操作以外,GPU域1030还可用于为各种屏幕大小提供显示支持。
可以看出,各种域耦合到一致互连1040,该一致互连1040在一实施例中可以是缓存一致互连架构,该缓存一致互连架构进而耦合到集成存储器控制器1050。在一些示例中,一致互连1040可包括共享缓存存储器,例如L3缓存。在一实施例中,存储器控制器1050可以是直接存储器控制器以提供与片外存储器的通信的多个通道,例如DRAM的多个通道(在图10中为了图示的容易没有示出)。
在不同的示例中,核心域的数目可变化。例如,对于适合于包含到移动计算设备中的低功率SoC,例如图10中所示的有限数目的核心域可存在。此外,在这种低功率SoC中,包括更高功率核心的核心域1020可具有更少数目的这种核心。例如,在一个实现方式中,可提供两个核心1022来使得能够以降低的功率消耗水平进行操作。此外,不同的核心域也可耦合到中断控制器,以使得能够在不同的域之间进行对工作负载的动态调换。
在另外的其他实施例中,更大数目的核心域以及额外的可选IP逻辑可存在,因为SoC可被缩放到更高性能(以及功率)水平,以便包含到其他计算设备中(例如,桌面型电脑、服务器、高性能计算***、基站等等)。作为一个这种示例,可提供4个核心域,每个具有给定数目的无序核心。此外,除了可选的GPU支持以外(其作为示例可采取GPGPU的形式),也可提供一个或多个加速器来提供对特定功能(例如,web服务、网络处理、交换等等)的优化硬件支持。此外,输入/输出接口也可存在来将这种加速器耦合到片外组件。
现在参考图11,示出了另一示例SoC的框图。在图11的实施例中,SoC 1100可包括各种电路来针对多媒体应用、通信和其他功能使能高性能。这样,SoC 1100适合于包含到各种各样的便携设备和其他设备中,例如智能电话、平板计算机、智能TV等等。在示出的示例中,SoC 1100包括中央处理器单元(central processor unit,CPU)域1110。在一实施例中,多个个体处理器核心可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核心的四核心处理器。这种处理器可以是同构或异构处理器,例如低功率和高功率处理器核心的混合。
进而,提供GPU域1120来在一个或多个GPU中执行高级图形处理以应对图形并计算API。除了可发生在多媒体指令的执行期间的高级计算以外,DSP单元1130还可提供一个或多个低功率DSP来应对低功率多媒体应用,例如音乐重放、音频/视频等等。进而,通信单元1140可包括各种组件来经由各种无线协议提供连通性,例如蜂窝通信(包括3G/4G LTE)、诸如BluetoothTM之类的无线局域协议、IEEE 802.11,等等。
此外,多媒体处理器1150可用于执行对高清晰度视频和音频内容的捕捉和重放,包括对用户姿态的处理。传感器单元1160可包括多个传感器和/或传感器控制器来接口到存在于给定平台中的各种片外传感器。图像信号处理器1170可具有一个或多个分开的ISP来对于来自平台的一个或多个相机的捕捉内容执行图像处理,这些相机包括静态相机和视频相机。
显示处理器1180可提供对到给定像素密度的高清晰度显示器的连接的支持,包括无线地传输内容以便在这种显示器上重放的能力。此外,位置单元1190可包括GPS接收器,该GPS接收器带有对多个GPS星座的支持以向应用提供利用这种GPS接收器获得的高度准确的定位信息。要理解,虽然在图11的示例中是以这组特定的组件来示出的,但许多变化和替换是可能的。
现在参考图12,示出了可与实施例一起使用的示例***的框图。可以看出,***1200可以是智能电话或者其他无线通信器。基带处理器1205被配置为关于要从***发送或者被***接收的通信信号执行各种信号处理。进而,基带处理器1205耦合到应用处理器1210,应用处理器1210可以是***的主CPU,以执行OS和其他***软件,以及诸如许多公知的社交媒体和多媒体app之类的用户应用。应用处理器1210还可被配置为为设备执行多种其他计算操作并且执行本文描述的功率管理技术。
进而,应用处理器1210可耦合到用户界面/显示器1220,例如触摸屏显示器。此外,应用处理器1210可耦合到存储器***,该存储器***包括非易失性存储器(即,闪速存储器1230)以及***存储器(即,动态随机访问存储器(DRAM)1235)。还可看出,应用处理器1210还耦合到捕捉设备1240,例如可记录视频和/或静态图像的一个或多个图像捕捉设备。
仍然参考图12,通用集成电路卡(universal integrated circuit card,UICC)1240也耦合到应用处理器1210,该通用集成电路卡1240包括订户身份模块并且可能包括安全存储装置及密码处理器。***1200还可包括安全性处理器1250,该安全性处理器1250可耦合到应用处理器1210。多个传感器1225可耦合到应用处理器1210以使得能够输入各种感测到的信息,例如加速度计和其他环境信息。音频输出设备1295可提供接口来输出声音,例如以语音通信、播放的或流媒体音频数据等等的形式。
如还图示的,提供了近场通信(near field communication,NFC)无接触接口1260,其经由NFC天线1265在NFC近场中通信。虽然在图12中示出了分开的天线,但要理解在一些实现方式中,可提供一个天线或者不同组天线来使能各种无线功能。
PMIC 1215耦合到应用处理器1210以执行平台级功率管理。为此,PMIC 1215可向应用处理器1210发出功率管理请求以根据需要进入某些低功率状态。此外,基于平台约束,PMIC 1215也可控制***1200的其他组件的功率水平。
为了使得通信能够被发送和接收,各种电路可被耦合在基带处理器1205和天线1290之间。具体而言,射频(radio frequency,RF)收发器1270和无线局域网(wirelesslocal area network,WLAN)收发器1275可存在。一般而言,RF收发器1270可用于根据给定的无线通信协议(例如3G或4G无线通信协议)接收和发送无线数据和呼叫,例如根据码分多路接入(code division multiple access,CDMA)、全球移动通信***(global system formobile communication,GSM)、长期演进(long term evolution,LTE)或其他协议。此外,GPS传感器1280可存在。也可提供其他无线通信,例如对无线电信号(例如AM/FM)和其他信号的接收或发送。此外,经由WLAN收发器1275,也可实现本地无线通信。
现在参考图13,示出了可与实施例一起使用的另一示例***的框图。在图13的图示中,***1300可以是移动低功率***,例如,平板计算机、2:1平板设备、平板手机、或者其他可转换的或独立的平板***。如图所示,SoC 1310存在并且可被配置为对于该设备作为应用处理器来操作并且执行本文描述的功率管理技术。
各种设备可耦合到SoC 1310。在示出的图示中,存储器子***包括耦合到SoC1310的闪速存储器1340和DRAM 1345。此外,触摸面板1320耦合到SoC 1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连通性,SoC 1310耦合到以太网接口1330。外设中枢(peripheral hub)1325耦合到SoC1310以使能与各种***设备相接口,例如可通过各种端口或其他连接器中的任何一者耦合到***1300。
除了SoC 1310内的内部功率管理电路和功能以外,PMIC 1380也耦合到SoC 1310以提供基于平台的功率管理,例如基于***是被电池1390供电还是经由AC适配器1395被AC电力供电。除了这个基于电源的功率管理以外,PMIC 1380还可基于环境和使用状况来执行平台功率管理活动。此外,PMIC 1380可向SoC 1310传达控制和状态信息以引起SoC 1310内的各种功率管理动作。
仍然参考图13,为了提供无线能力,WLAN单元1350耦合到SoC 1310并且进而耦合到天线1355。在各种实现方式中,WLAN单元1350可根据一个或多个无线协议来提供通信。
如还图示的,多个传感器1360可耦合到SoC 1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿态传感器。最后,音频编解码器1365耦合到SoC 1310以提供到音频输出设备1370的接口。当然要理解,虽然在图13中是以这个特定实现方式示出的,但许多变化和替换是可能的。
现在参考图14,示出了诸如笔记本、UltrabookTM或其他小形状因数***之类的代表性计算机***的框图。处理器1410在一个实施例中包括微处理器、多核心处理器、多线程处理器、超低电压处理器、嵌入式处理器、或者其他已知的处理元件。在图示的实现方式中,处理器1410充当主处理单元和中央中枢来与***1400的各种组件中的许多进行通信。作为一个示例,处理器1400被实现为SoC。
处理器1410在一个实施例中与***存储器1415通信。作为说明性示例,***存储器1415是经由多个存储器设备或模块来实现的,以提供给定量的***存储器。
为了提供对诸如数据、应用、一个或多个操作***等等之类的信息的持续性存储,大容量存储装置1420也可耦合到处理器1410。在各种实施例中,为了使能更薄和更轻的***设计以及为了改善***响应能力,可经由SSD来实现这个大容量存储装置或者可主要利用硬盘驱动器(hard disk drive,HDD)来实现该大容量存储装置,其中较小量的SSD存储装置充当SSD缓存来使得能够在掉电事件期间对情境状态和其他这种信息进行非易失性存储,从而使得在***活动重发起时可发生快速加电。图14中还示出的是,闪速设备1422可耦合到处理器1410,例如经由串行***接口(serial peripheral interface,SPI)。这个闪速设备可提供对***软件(包括基本输入/输出软件(basic input/output software,BIOS))以及***的其他固件的非易失性存储。
各种输入/输出(I/O)设备可存在于***1400内。具体而言,在图14的实施例中示出的是显示器1424,其可以是还提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可经由显示互连耦合到处理器1410,该显示互连可被实现为高性能图形互连。触摸屏1425可经由另一互连耦合到处理器1410,该另一互连在一实施例中可以是I2C互连。如图14中还示出的,除了触摸屏1425以外,借由触摸的用户输入也可经由触摸板1430发生,该触摸板1430可被配置在机壳内并且也可耦合到与触摸屏1425相同的I2C互连。
为了感知计算和其他的目的,各种传感器可存在于***内并且可按不同的方式耦合到处理器1410。某些惯性和环境传感器可通过传感器中枢1440(例如,经由I2C互连)耦合到处理器1410。在图14所示的实施例中,这些传感器可包括加速度计1441、环境光传感器(ambient light sensor,ALS)1442、罗盘1443、以及陀螺仪1444。其他环境传感器可包括一个或多个热传感器1446,这些热传感器1446在一些实施例中经由***管理总线(SMBus)总线耦合到处理器1410。
在图14中还可看出,各种***设备可经由低引脚数(low pin count,LPC)互连来耦合到处理器1410。在示出的实施例中,各种组件可通过嵌入式控制器1435被耦合。这种组件可包括键盘1436(例如,经由PS2接口耦合)、风扇1437、以及热传感器1439。在一些实施例中,触摸板1430也可经由PS2接口耦合到EC 1435。此外,诸如可信平台模块(trustedplatform module,TPM)1438之类的安全性处理器也可经由这个LPC互连来耦合到处理器1410。
***1400可通过各种方式与外部设备进行通信,包括无线地进行通信。在图14所示的实施例中,存在各种无线模块,其中每一者可对应于被配置用于特定的无线通信协议的无线电装置。用于诸如近场之类的短距离中的无线通信的一种方式可经由NFC单元1445,该NFC单元1445在一个实施例中可经由SMBus与处理器1410进行通信。注意,经由这个NFC单元1445,彼此近邻的设备可通信。
从图14中还可看出,额外的无线单元可包括其他短距离无线引擎,包括WLAN单元1450和蓝牙单元1452。利用WLAN单元1450,可实现Wi-FiTM通信,而经由蓝牙单元1452,可发生短距离BluetoothTM通信。这些单元可经由给定的链路与处理器1410进行通信。
此外,(例如,根据蜂窝或其他无线广域协议的)无线广域通信可经由WWAN单元1456发生,该WWAN单元1456进而可耦合到订户身份模块(subscriber identity module,SIM)1457。此外,为了使能对位置信息的接收和使用,GPS模块1455也可存在。注意,在图14所示的实施例中,WWAN单元1456和诸如相机模块1454之类的集成捕捉设备可经由给定的链路通信。
集成相机模块1454可被包含在盖子中。为了提供音频输入和输出,可经由数字信号处理器(digital signal processor,DSP)1460来实现音频处理器,该DSP 1460可经由高清晰度音频(high definition audio,HDA)链路耦合到处理器1410。类似地,DSP 1460可与集成编码器/解码器(CODEC)及放大器1462进行通信,该集成CODEC及放大器1462进而可耦合到输出扬声器1463,该输出扬声器1463可被实现在机壳内。类似地,放大器及CODEC 1462可被耦合以从麦克风1465接收音频输入,该麦克风1465在一实施例中可经由双阵列麦克风(例如,数字麦克风阵列)来实现,以提供高质量音频输入,从而使能对***内的各种操作的由语音激活的控制。还要注意,音频输出可从放大器/CODEC 1462被提供到耳机插孔1464。虽然在图14的实施例中是以这些特定组件来示出的,但要理解本发明的范围在这个方面不受限制。
实施例可被实现在许多不同的***类型中。现在参考图15,示出了根据本发明的实施例的***的框图。如图15所示,多处理器***1500是点到点互连***,并且包括经由点到点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580的每一者可以是多核心处理器,包括第一和第二处理器核心(即,处理器1574a和1574b和处理器核心1584a和1584b),虽然可能在处理器中可存在多得多的核心。此外,处理器1570和1580的每一者也可包括图形处理器单元(GPU)1573、1583来执行图形操作。并且,利用软件提供的提示信息,例如,关于核心和GPU之间的给定工作负载的处理水平的优先级的提示信息,可以执行如本文所述的动态最大电流确定和控制。为此,每个处理器可包括PCU 1575、1585,来执行基于处理器的功率管理,包括动态电流,以至少部分基于由软件提供的提示信息来为每个核心和GPU个体地动态确定最大电流消耗水平,如本文所述。
仍然参考图15,第一处理器1570还包括存储器控制器中枢(memory controllerhub,MCH)1572和点到点(point-to-point,P-P)接口1576和1578。类似地,第二处理器1580包括MCH 1582和P-P接口1586和1588。如图15所示,MCH 1572和1582将处理器耦合到各自的存储器,即存储器1532和存储器1534,存储器1532和存储器1534可以是在本地附接到各个处理器的***存储器(例如,DRAM)的一部分。第一处理器1570和第二处理器1580可分别经由P-P互连1562和1564耦合到芯片组1590。如图15A所示,芯片组1590包括P-P接口1594和1598。
此外,芯片组1590包括接口1592来通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合。进而,芯片组1590可经由接口1596耦合到第一总线1516。如图15A所示,各种输入/输出(I/O)设备1514可以与总线桥1518一起耦合到第一总线1516,其中总线桥1518将第一总线1516耦合到第二总线1520。各种设备可耦合到第二总线1520,例如包括键盘/鼠标1522、通信设备1526和数据存储单元1528(例如,盘驱动器或者其他大容量存储设备),其中该数据存储单元1528在一个实施例中可包括代码1530。另外,音频I/O 1524可耦合到第二总线1520。实施例可被包含到其他类型的包括移动设备的***中,该移动设备比如是智能蜂窝电话、平板计算机、上网本、UltrabookTM,等等。
图16是图示出IP核心开发***1600的框图,该IP核心开发***1600可用于制造集成电路来执行根据实施例的操作。IP核心开发***1600可用于生成模块化的、可重复使用的设计,这些设计可被包含到更大的设计中或者被用于构造整个集成电路(例如,SoC集成电路)。设计设施1630可以用高级别编程语言(例如,C/C++)生成IP核心设计的软件仿真1610。软件仿真1610可用于设计、测试和验证IP核心的行为。然后可从仿真模型创建或合成寄存器传送级(register transfer level,RTL)设计。RTL设计1615是对硬件寄存器之间的数字信号的流动进行建模的集成电路的行为的抽象,其包括利用经建模的数字信号执行的关联逻辑。除了RTL设计1615以外,也可创建、设计或者合成在逻辑级或晶体管级的更低级别设计。从而,初始设计和仿真的具体细节可变化。
RTL设计1615或等同物还可被设计设施合成为硬件模型1620,该硬件模型1620可采取硬件描述语言(hardware description language,HDL)或者物理设计数据的某种其他表现形式。HDL可被进一步模拟或测试来验证IP核心设计。IP核心设计可被存储来利用非易失性存储器1640(例如,硬盘、闪速存储器或者任何其他非易失性存储介质)输送到第三方制造设施1665。或者,IP核心设计可通过有线连接1650或无线连接1660(例如,经由互联网)被传输。制作设施1665随后可制作至少部分基于该IP核心设计的集成电路。制作的集成电路可被配置为根据本文描述的至少一个实施例来执行操作。
现在参考图17,示出了根据本发明的实施例的计算***的框图。如图17所示,***1700可以是任何类型的计算***,范围从诸如智能电话、平板计算机等等之类的小型便携设备,到包括膝上型计算机、桌面型计算机、服务器计算机等等之类的更大设备不等。
在任何情况下,在图17所示的高级别上,***1700包括片上***(SoC)1710,该片上***1710可被实现为多核心处理器或者任何其他类型的SoC。包括在SoC 1710内的是多个知识产权(intellectual property,IP)电路17200-17202。在实施例中,每个IP电路1720可以是处理核心、图形处理器或者任何其他类型的同构或异构处理电路,例如专门的处理单元,固定功能单元,等等。在一个特定的实施例中,假设IP电路17200,1是通用处理核心,并且IP电路17202是图形处理器,该图形处理器在一些情况下可由多个个体图形处理单元形成。
取决于在SoC 1710内执行的特定工作负载,某些处理电路对于工作负载来说可能比其他处理电路更重要。这样,通过本文的实施例,不同的IP电路可至少部分基于从软件1740接收到的提示信息而被允许可控量的电流消耗,该软件1740可提供工作负载来执行。通过提供这个工作负载,软件1740对于工作负载的性质以及不同IP电路的重要性和可能的相对电流消耗具有先验且更多的了解。这样,实施例包括接口1745,以从软件1740向功率控制单元(PCU)1730提供基于运行时试探的电流消耗信息。
在各种实施例中,PCU 1730可被实现为专用硬件电路、多个核心之一、微控制器、或者任何其他硬件电路。在示出的实施例中,PCU 1730包括多个配置寄存器17360-17362。在实施例中,给定的配置寄存器1736可与相应的IP电路1720相关联,以存储从软件1740接收到的用于相应IP电路的电流扼制信息。注意,这种信息在不同实施例中可采取不同的形式。在一些情况下,这种信息可基于优先级信息,并且可包括每个IP电路的相对优先级水平,例如,以百分比为单位。在其他情况下,软件1740可提供在扼制情形中将为IP电路实施的实际最大电流值。在其他实施例中,此信息可采取其他形式。
仍然参考图17,PCU 1730还包括动态电流共享控制电路1735。在本文的实施例中,动态电流共享控制电路1735可至少部分基于存储在配置寄存器1736中的信息,为每个个体IP电路确定求解出的最大电流值。此外,控制电路1735可进一步基于管芯特定信息来确定这些求解出的最大电流值,所述信息包括例如泄漏信息、工艺变化信息、电压/频率曲线,等等。这样,动态电流共享控制电路1735可基于这种信息来更新由软件1740写入的值以生成求解出的值,从这些值可确定扼制控制值。这些扼制控制值可被发送到相应的IP电路1720。如图17所示,处理电路1720中的每一者包括配置存储装置1712来存储相应的扼制控制值。注意,扼制控制值本身在不同实施例中可采取不同的形式。在一些情况下,这个扼制控制值可被实现为占空比值。在其他情况下,扼制控制值可以是IP电路的允许最大电流消耗或允许最大操作频率,等等。如本文所述,IP电路1720可至少部分基于存储在配置存储装置1712中的这个扼制控制值来动态地控制其自己在扼制情形中的操作。
注意,另外,在图17的图示中,存在电压调节器1750,它在SoC1720的外部。电压调节器(VR)1750可向图17所示的所有IP电路17120-2以及SoC 1710的其他电路提供电力。然而,要理解,在其他情况下,可在每个电压轨的基础上执行实施例中实现的控制和电流共享。也就是说,电压调节器1750或额外的电压调节器可能存在,它们通过多个独立的电压轨来提供电力,每个电压轨耦合到一个或多个IP电路和处理器的其他逻辑。在这种情况下,动态电流共享控制电路1735可以为与给定电压轨相关联的每个IP电路集合动态地确定电流共享扼制控制值。
仍然参考图17,假设一种实现方式,其中IP电路1720(在此也称为IP1-IP3)分别汲取的最大电流为:最大IP1.iccmax;Ip2.iccmax;以及IP3.iccmax。另外,假设VR 1750可提供的总最大电流为:VR1.iccmax。在诸如VR 1750之类的高电流VR中,VR1.iccmax<IP1.iccmax+IP2.iccmax+IP3.iccmax。这种尺寸不足的做法是为了限制VR的成本。为了确保正确性,PCU 1730可在其检测到电压调节器1750的最大电流容量即将被超过时触发扼制。可基于比实际配置的最大电流能力略低的阈值来主动地执行这种扼制。要理解,虽然不同的实现方式是可能的,但在一实施例中,可通过以某个占空比对IP时钟进行门控来实现扼制。这种方案的占空比可由PCU 1730来配置。
在一个实施例中,PCU 1730通过接口1745可接收具体的iccmax值,当检测到iccmax违反时,IP电路应当被扼制到这些值,即:IP0_ICCMAX_WHEN_THROTTLED;IP1_ICCMAX_WHEN_THROTTLED;IP2_ICCMAX_WHEN_THROTTLED;要被存储在配置寄存器1736中的值。软件可基于运行时试探来填充这些值,并且可确保这里写入的电流不大于VR1.iccmax值。
进而,PCU 1730,更具体地说是动态电流共享控制电路1735,可使用管芯特定信息(例如,泄漏,工艺变化,V/F曲线)来更新由软件写入的值。对于这个示例,假设PCU 1730考虑了软件输入和管芯特定信息,以确定求解出的值:RESOLVED_IP0_ICCMAX_WHEN_THROTTLED,RESOLVED_IP1_ICCMAX_WHEN_THROTTLED;以及RESOLVED_IP2_ICCMAX_WHEN_THROTTLED。然后,动态电流共享控制电路1735可基于这些最终求解出的值和配置的最大电流值(iccmax)来计算出用于扼制IP电路的占空比值。这种情况下的占空比可被计算为:duty_cycle_ip_n=RESOLVED_IPn_ICCMAX_WHEN_THROTTLED/IPN.iccmax。对于IP0,这导致duty_cycle_ip_0=RESOLVED_IP0_ICCMAX_WHEN_THROTTLED/IP0.iccmax。
然后PCU 1730可在配置寄存器1712内对用于扼制的占空比进行编程。取决于平台/SoC级试探,IP_N_ICCMAX_WHEN_THROTTLED值可被改变以获得最优的运行时行为。
作为一个特定的示例,假设一个图形密集型工作负载,其中IP电路17202是图形处理器,并且IP电路17200,1是通用处理器。在这种布置中,图形驱动器可经由接口1745提供提示信息,以表明图形处理器(和互连电路)应当被提供其最大配置电流消耗,而核心可被扼制。为此,图形驱动器可为图形处理器和互连提供配置的最大电流消耗值,而剩余的电流预算可被分配给核心。这样,当达到最大电流消耗限制时,核心可被扼制,但图形处理器和互连可继续不受约束地运行,从而改善了图形工作负载。
在具有核心计算密集型工作负载的另一种情况下,通过为核心和互连分配最大电流消耗值以及向图形处理器分配剩余的电流消耗预算,可发生相反的行为。通过这种方式,当识别出功率尖峰时,可对图形处理器进行扼制,但核心和互连仍然可不受约束地操作,从而改善了基于核心的工作负载。在一个实施例中,软件可利用利用率信息来识别核心或图形绑定的工作负载。要理解,虽然在图17的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图18,示出了根据本发明的实施例的方法的流程图。如图18所示,方法1800是一种用于至少部分基于关于正在执行的工作负载的基于软件的信息来在多个IP电路之间执行动态电流共享的方法。更具体而言,方法1800可在各种代理之间被协同执行,这些代理包括有工作负载要执行的软件和相应的硬件,包括基于硬件的功率控制器和工作负载的至少一些部分可在其上执行的一个或多个IP电路。这样,方法1800可由硬件电路、固件、软件和/或其组合来执行。
如图所示,在方法1800中,软件代理1810可具有要执行的工作负载,并且可基于试探来为每个这样的IP电路确定(块1815)每个IP电路的最大电流预算(和/或最大电流优先级)。如图所示,软件1810可经由接口向功率控制器1820提供此信息,该功率控制器1820可将此信息存储在相应的配置寄存器中,即电流扼制配置寄存器。进而,PCU 1820,更具体而言是动态电流共享控制电路1830,可读取此信息,并且基于此信息和管芯参数和特性,来确定每个IP电路的最大电流预算。然后,功率控制器1820可发送此信息,用于对IP电路1840的相应配置寄存器进行编程。然后,在工作负载的操作期间,当功率控制器1820主动识别最大电流情形时,它向IP电路1840发送扼制信号。进而,IP电路1840可扼制操作,以保持在其配置寄存器中识别的最大电流预算内。要理解,虽然在图18的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图19,示出了根据本发明的一个实施例的方法的流程图。如图19所示,方法1900是一种用于在功率控制器和具有关于要执行的工作负载的先验知识的软件实体之间进行接口的方法。图19中的方法1900是从功率控制器的角度来看的,这样,方法1900可由硬件电路、固件、软件和/或其组合来执行。
如图19所示,方法1900开始于接收关于工作负载的电流扼制提示信息(块1910)。更具体而言,功率控制器可经由接口从软件实体接收此提示信息。虽然不同的实施例是可能的,但在一个实施例中,该接口可以是软件实体可向其写入的功率控制器的邮箱接口。在另一实施例中,软件实体可执行配置寄存器写入,例如写入到机器特定寄存器(machinespecific register,MSR)操作,以提供此电流扼制提示信息。注意,电流扼制提示信息可采取各种形式,包括不同处理电路的优先级信息,例如采取百分比之类的形式。
在块1920,功率控制器将此电流扼制提示信息存储到功率控制器的一组配置寄存器中。接下来在块1930,功率控制器可为处理电路确定求解出的扼制值。更具体而言,这些求解出的扼制值可基于电流扼制提示信息和处理器的各种参数,包括基于管芯的参数和操作的特性,例如电压/频率曲线等等。在一些情况下,功率控制器可以用这些求解出的扼制值来覆盖配置寄存器中存在的电流扼制提示信息。在其他情况下,求解出的扼制值可被存储在另一位置。
在任何情况下,控制接下来传递到块1940,在这里可为每个处理电路计算动态最大电流预算。这种计算出的电流预算可基于给定处理电路的求解出的扼制值和为处理器配置的最大电流预算。为此,功率控制器可包括或者可与另一组配置寄存器相关联,该另一组配置寄存器存储每个处理电路的最大电流预算。注意,这个配置的最大电流信息可在预启动环境期间被存储,例如由给定的固件存储。
仍然参考图19,在块1950,动态最大电流预算可被发送到处理电路。要理解,响应于接收到给定的最大动态最大电流预算,处理电路可将这种值存储在配置寄存器中,并且可在识别出扼制状况时控制操作以维持在等于或低于这个动态最大电流预算。注意,这些动态最大电流预算仅在扼制事件期间是相关的。也就是说,给定的处理电路可被允许在正常操作期间超过其编程的最大电流预算,但在扼制状况期间遵守该限制。
仍然参考图19,在处理器的正常操作期间,功率控制器可接收各种遥测或传感器信息。具体而言,如块1960中所示,这种信息可以是关于处理器的电压、电流、功率和热状况的。作为其功率控制操作的一部分,功率控制器可在菱形1970处确定处理器的总电流消耗是否超过给定的阈值。注意,这个阈值可被设置为低于处理器的配置最大电流消耗的值,这样就可发生对电流消耗的主动控制。
如果确定总电流超过这个阈值,则控制传递到块1980,在这里可以向处理电路发送扼制信号。响应于接收到这个扼制信号,处理电路可控制其操作,以确保其电流消耗不超过动态最大电流预算。这样,每个处理电路可以用独立且动态可控的电流消耗水平来进行操作,以改善工作负载执行,即使当识别了扼制状况时也是如此。这是因为,通过基于给定处理电路的相对优先级来独立地动态控制电流消耗水平,在这种工作负载执行期间,对特定工作负载不可或缺的处理电路可能根本不会被扼制,或者至少与其他(不那么不可或缺的)处理电路相比被扼制得更少。要理解,虽然在图19的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图20,示出了根据本发明的另一实施例的方法的流程图。如图20所示,方法2000是一种用于基于动态电流预算来动态地控制处理电路内的电流消耗的方法。这样,方法2000可由硬件电路来执行,例如处理核心、图形处理器或其他处理电路,或者由在这种电路上执行的固件、软件和/或其组合来执行。
方法2000开始于从功率控制器接收动态电流预算(块2010)。注意,这个动态电流预算在各种实现方式中可采取不同的形式,包括占空比信息的形式,如本文所述。不管是哪种形式,在块2020,处理电路将这个动态电流预算存储在最大电流配置寄存器中。此后,处理电路可在配置的性能状态下开始(或继续)操作(块2030)。例如,处理电路可在功率控制器或其他控制电路的控制下被配置为在具有给定操作频率和操作电压的性能状态下操作。在这个配置的性能状态下的操作期间,可在菱形2040处确定是否从功率控制器接收到扼制信号。
在这种状况下,控制传递到块2050,在这里处理电路可扼制其操作。更具体而言,处理电路可控制其操作以维持其电流消耗不大于动态电流预算。在一些情况下,处理电路可包括内部功率控制逻辑,该逻辑可确定操作参数变化以实现这个电流消耗维持。作为一个示例,处理电路可通过压制一些时钟信号来扼制操作,使得操作被放慢,从而通过在压制的时钟而不是配置的操作频率下操作来减小电流消耗。例如,每隔一个时钟周期可被压制,或者可发生其他占空比控制或时钟周期的缩减。
注意,在其他处理电路不消耗其完全电流消耗水平的某些情况下,有可能该处理电路可从功率控制器接收机会性电流预算。从而,在菱形2060处,确定是否已接收到机会性电流预算。如果没有,则处理电路可继续在扼制状况中操作,直到它接收到扼制信号的释放为止(如在菱形2080处确定的)。
相反,如果接收到了机会性电流预算,则控制传递到块2070,在这里处理电路可增大其操作。例如,处理电路可终止时钟压制以消耗机会性电流预算。要理解,虽然在图20的实施例中在这个高级别示出了,但许多变化和替换是可能的。
在一些情形下,一些核心或其他处理电路可能以高电流消耗进行操作。在所有核心或其他处理电路都被分配了相等量的整体封装电流预算的一种布置中,性能损失可能存在,因为超过分配的电流限制进行操作的任何核心都将经由内部或本地控制操作被扼制。然而,在同一时间,在一个或多个其他核心或处理电路以低于其分配的电流限制的水平进行操作的情况下,有电流余量被留下未被使用。
为了避免这种担忧,实施例可在具有受约束的电力输送解决方案的平台内提供性能优化。为此,实施例可实现具有全局电流控制的控制技术,从而允许一个或多个核心或其他处理电路超过其个体阈值水平,只要不超过封装的整体电流限制。通过这种方式,实施例可增强性能,因为一些核心或其他处理电路可在(比配置)更高的电流消耗水平下进行操作,而整个处理器维持在限制内操作。
为此,实施例可在负载侧执行快速电流感测(例如,如集成电压调节器内所实现的),以提供对实际电流消耗的高速测量。对电流消耗的这个测量可作为数字输出被从集成电压调节器输出。进而,来自多个电压调节器的个体电流值随后可被求和。这个求和的值接下来可经历数字滤波。进而,所得到的滤波值被与阈值进行比较。假设这个滤波值所代表的整体电流消耗小于此阈值,则可能不会发生扼制。如果滤波值所代表的整体电流消耗超过阈值,则一个或多个域可被扼制以保持在限制内。注意,这个扼制可基于每个域的实际电流消耗及其个体配置限制在每个域中被独立执行(或不执行),如本文所述。并且,如上文进一步论述的,每个域可执行不同的扼制操作,例如时钟压制或以其他方式控制操作频率、操作电压等等。
通过实施例,可以检测到实际的电流消耗,而无需维持详细的模型。因此,多个域可被缩放,并且时间常数可被调整以尽量减少不必要的扼制。此外,实施例可在不对***进行任何运行时调整的情况下实现这种性能优化。另外,如本文所述,可通过将电流转换为功率并且对这样的多个电压调节器的贡献的结果进行求和来将实施例扩展到多个外部电压调节器。实施例也可被用于更复杂的电力输送限制,例如谐振频率中的能量的抑制,以改善最低限度操作电压性能。
现在参考图21,示出了根据本发明的实施例的处理器的框图。如图21所示,处理器2100是包括多个核心21100-2110n的多核心处理器。可存在额外的处理引擎,包括图形引擎2115。诸如环状互连之类的互连2120可存在,并且被用于将核心2110和其他组件耦合在一起。如图21的实施例中所示,这些域中的每一者都可从给定的集成电压调节器21300-2130x接收电力。基于这些域所呈现的负载,电压调节器2130可测量实时数字电流(使用以高速(例如400MHz)操作的电路)。进而,每个集成电压调节器2130将数字电流值提供给求和电路2140,该求和电路2140将这些值求和成总电流值。注意,在一些实施例中,可以按分布式方式实现求和电路2140。
仍然参考图21,这个总电流值被提供给电流控制器2150。在不同的实施例中,控制器2150可被实现为专用电路,与核心2110和处理器的功率控制器(在图21中为了便于图示而没有示出)都是分开的。在其他情况下,控制器2150可被实现在功率控制器内。在任何情况下,如图所示,控制器2150将接收到的总电流值提供给滤波器2155,该滤波器2155在一实施例中可被实现为低通滤波器,以对这个总电流值执行数字滤波。可根据存储在窗口存储装置2158中的平均时间窗口来执行这个滤波操作。在一个实施例中,这个时间值使得低通滤波器2155作为20纳秒低通滤波器来进行操作。滤波后的电流值被提供给数字比较器2160,该数字比较器2160执行与存储在阈值存储装置2162中的阈值电流值的比较。如果确定滤波后的测量电流值超过阈值,则从而识别了扼制情形,并且将其传达给脉冲延长电路2170,该脉冲延长电路2170可根据扼制窗口存储装置2180所提供的扼制窗口持续时间来向各种域发出扼制信号。在其他情况下,可以用带通滤波器来代替低通滤波器,以减小谐振频段中的能量。
在实施例中,脉冲延长电路2170可被配置为减小控制机制的振铃或滞后。也就是说,脉冲延长电路2170可以使得扼制信号在检测到扼制事件(在滤波后的测量电流值超过阈值时识别)后在给定的扼制窗口持续时间中是活跃的。即使根据此事件开始扼制,然后测量的电流下降到阈值以下(由于在一个或多个核心或其他处理电路中发生的扼制操作),脉冲延长电路2170也至少在扼制窗口持续时间的长度中维持活跃的扼制信号,以避免滞后或振铃。在不同的实施例中,这个扼制窗口持续时间的长度可以是可编程的,并且在一些实施例中,脉冲延长电路2170可以是可选的组件。也就是说,在其他情况下,滞后或其他控制方案可被应用于扼制信号。要理解,虽然在图21的实施例中在这个高级别示出了,但许多变化和替换是可能的。
如上所述,可以为多个电压调节器中的每一者提供如图21中的电流控制器的多个实例,并且进而,多个实例可耦合到功率控制器。这种功率控制器可以为向多个电压调节器提供电力的电力供应源执行功率控制。也就是说,在给定的计算平台中,单个电力供应源可以存在来为多个外部电压调节器供电,例如存在于主板上的多个电压调节器,其中每个电压调节器提供给定的调节电压,供片上和片外组件使用。与上述论述一样,当这些电压调节器中的一个或多个其他电压调节器以较低水平运行时,这些个体电压调节器有可能以较高水平进行操作。这是由于,向这些个体电压调节器提供电力的单个电力供应源有充分的能力这样做,假设不是所有的电压调节器都超过它们的个体阈值水平的话。
现在参考图22,示出了根据本发明的另一实施例的控制布置的框图。如图22所示,提供了多个电流控制器2250,每一者与给定的电压调节器相关联。更具体而言,如图所示,第一电流控制器22501与提供第一电压水平(例如,VCC)的第一电压调节器(未示出)相关联,并且第二电流控制器22502与提供第二(例如,辅助)电压水平(例如,VAux)的第二电压调节器(未示出)相关联。注意,控制器2250在高级别被示为包括相应的低通滤波器2252、数字比较器2254和下采样器2256,但要理解这些控制器可如图21所示来配置。注意,下采样器2256在一些实施例中可能是可选的。在高级别,当接收到的测量电流超过阈值水平时,相应的扼制信号被提供给由这个电压调节器供电的个体域,如上所述。
此外,电流控制器2250经由下采样器2256对测量的电流消耗执行下采样,这进而被提供给功率控制器2260。功率控制器2260可被实现为专用电路或者实现在处理器的功率控制器内。在任何情况下,功率控制器2260经由转换器22651-2将多个传入的数字电流值转换为功率值,这些转换器22651-2根据由给定的电压调节器输送的电压(即调节电压减去任何输送损失(例如I1R1))经由乘法运算执行电流到功率转换,以向求和器2270提供数字功率值,该求和器2270对数字功率值进行求和。注意,在其他实施例中,功率控制器2260可直接接收电流值,而不包括电流控制器2250。
进而,这个求和的功率值被提供给低通滤波器2275,该低通滤波器2275可根据存储在窗口存储装置2276中的平均时间窗口来以更长的时间窗口持续时间进行操作。进而,这个滤波后的功率值被提供给数字比较器2280,该数字比较器2280将其与从阈值存储装置2282接收的阈值进行比较。当在数字比较器2280中确定滤波后的测量功率值超过阈值时,则指示出扼制事件,并且其被传达给脉冲延长电路2290。一般而言,脉冲延长电路2290的操作方式可与上文论述的脉冲延长电路2170相同,尽管是根据存储在扼制窗口存储装置2295中的值以不同的扼制窗口持续时间来进行的。这样,脉冲延长电路2290至少部分基于数字比较器2280的比较输出,向被供电的域发送扼制信号,以使得它们采取适当的扼制活动。要理解,虽然在图22的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图23,示出了根据本发明的实施例的方法的流程图。更具体而言,如图23所示,方法2300是一种用于执行如本文所述的动态电流消耗控制的方法。这样,方法2300可由硬件电路、固件、软件和/或其组合来执行,例如可使用处理器的专用硬件电路和/或与功率控制电路相联系来实现。
如图所示,方法2300开始于接收多个处理电路的多个数字电流值(块2310)。更具体而言,求和电路可从相应的集成电压调节器接收这些数字电流值,其中每个电压调节器与处理电路相关联,例如核心、图形单元、互连电路等等。要理解,在其他情况下,集成电压调节器的数目可能少于处理电路,这样,集成电压调节器中的一个或多个可为多个电路提供数字电流值。
在任何情况下,在块2320,求和电路对这多个数字电流值进行求和以获得总电流值。接下来,控制传递到块2330,在这里这个总电流值可被滤波。作为一个示例,低通滤波器,例如在如本文所述的功率控制器中实现的,可根据可编程的时间常数来执行这个总电流值的滤波。接下来,在菱形2340处确定这个滤波后的总电流值是否超过阈值。如果不是,则在控制循环的这个迭代中不发生进一步的操作,并且方法2300可继续操作以确保处理器的电流消耗被维持在适当的水平内。
仍然参考图23,相反,如果确定滤波后的总电流值超过阈值,则控制传递到块2350,在这里,扼制信号被发送到处理电路。要理解,响应于这个扼制信号,处理电路中的至少一个并且可能是多个处理电路可相应地扼制其操作。例如,每个处理电路可被配置有配置的最大电流消耗值。响应于扼制信号,处理电路可扼制其操作,以确保其电流消耗下降到低于这个配置的最大电流消耗值。通过如本文所述的布置,只要滤波后的总电流值小于阈值,处理器操作就可继续进行而不被扼制。在这种情形中,一个或多个处理电路可在超过其配置的最大电流消耗值的电流消耗水平下进行操作,而一个或多个其他处理电路则在低于其配置的最大电流消耗值下操作。虽然在图23的实施例中在这个高级别示出了,但许多变化和替换是可能的。
要理解,这里获得的快速电流信息进一步可被用于执行额外的功率控制技术,例如控制为平台的多个电压调节器供电的电力供应源的水平。现在参考图24,示出了根据本发明的另一实施例的方法的流程图。更具体而言,如图24所示,方法2400是用于执行如本文所述的动态电流消耗控制的另一方法。这样,方法2400可由硬件电路、固件、软件和/或其组合来执行,例如可使用处理器的专用硬件电路和/或与功率控制电路相联系来实现。
如图所示,方法2400开始于从与多个电压调节器相关联的电流控制器接收滤波后的总电流值(块2410)。接下来,控制传递到块2420,在这里这些滤波后的总电流值可被转换成功率值。然后,功率值可被求和(块2430)。在将功率值求和为总计功率值之后,控制传递到块2440,在这里这个总计功率值被滤波,例如,根据与上述电流值的滤波不同的时间常数。
仍然参考图24,接下来在菱形2450处确定这个滤波后的功率值是否超过阈值。如果不是,则在控制循环的这个迭代中不发生进一步的操作,并且方法2400可继续操作以确保处理器的电流消耗被维持在适当的水平内。相反,如果确定滤波后的功率值超过阈值,则控制传递到2460,在这里扼制信号被发送到被供电的域,例如处理电路本身(或者至少是与电压调节器中的给定一个相关联的这种电路的子集)。要理解,响应于这个扼制信号,被供电域可相应地扼制操作,例如通过减小其操作参数,以使得电流需求减小。
以下示例涉及进一步实施例。
在一个示例中,一种装置包括:多个IP电路,所述多个IP电路中的每一者包括配置寄存器,来存储动态电流预算;以及与所述多个IP电路相耦合的功率控制器,所述功率控制器包括动态电流共享控制电路,来接收关于要在所述多个IP电路中的至少一些上执行的工作负载的电流扼制提示信息并且至少部分基于此来为所述多个IP电路中的每一者生成所述动态电流预算。
在一示例中,所述功率控制器包括多个第二配置寄存器来存储所述电流扼制提示信息,其中所述动态电流共享控制电路用于基于所述电流扼制提示信息和所述装置的一个或多个参数来为所述多个IP电路确定所述动态电流预算。
在一示例中,所述功率控制器包括接口,来使得软件能够将所述电流扼制提示信息写入到所述多个第二配置寄存器。
在一示例中,所述功率控制器用于基于关于所述多个IP电路在所述工作负载的执行期间的使用情况的试探信息来从所述软件接收所述电流扼制提示信息。
在一示例中,所述动态电流共享控制电路用于进一步基于所述多个IP电路中的每一者的配置最大电流预算来为所述多个IP电路确定所述动态电流预算。
在一示例中,对于第一工作负载,所述动态电流共享控制电路用于:将第一IP电路的动态电流预算设置到所述第一IP电路的配置最大电流预算;并且将第二IP电路的动态电流预算设置为小于所述第二IP电路的配置最大电流预算。
在一示例中,对于第二工作负载,所述动态电流共享控制电路用于:将所述第一IP电路的动态电流预算设置为小于所述第一IP电路的配置最大电流预算;并且将所述第二IP电路的动态电流预算设置到所述第二IP电路的配置最大电流预算。
在一示例中,所述第一IP电路包括核心,并且所述第二IP电路包括图形处理器。
在一示例中,响应于来自所述功率控制器的扼制信号,所述第一IP电路用于将操作限制到所述第一IP电路的配置最大电流预算,并且所述第二IP电路用于将操作限制到所述第二IP电路的动态电流预算。
在一示例中,所述第二IP电路用于基于所述动态电流预算,响应于所述扼制信号而压制时钟信号的一个或多个时钟周期。
在一示例中,所述动态电流共享电路用于在扼制事件期间向所述多个IP电路中的至少一者提供机会性电流预算,所述机会性电流预算使得所述至少一个IP电路能够超过所述至少一个IP电路的动态电流预算。
在另一示例中,一种方法包括:在处理器的功率控制器中,从软件实体接收关于工作负载的电流扼制提示信息;基于所述电流扼制提示信息和所述处理器的多个处理电路的配置最大电流预算值,为所述多个处理电路中的每一者计算动态最大电流预算;将所述动态最大电流预算发送到所述多个处理电路中的每一者;并且响应于确定所述处理器的电流消耗水平超过阈值,向所述多个处理电路发送扼制信号,以使得所述多个处理电路基于所述动态最大电流预算来扼制活动。
在一示例中,所述方法还包括:经由接口在所述功率控制器中接收所述电流扼制提示信息;并且将所述电流扼制提示信息存储在所述功率控制器的一组配置寄存器中。
在一示例中,所述方法还包括基于所述电流扼制提示信息和管芯特定信息来为所述多个处理电路确定求解出的扼制值。
在一示例中,为所述多个处理电路中的每一者计算所述动态最大电流预算是进一步基于所述多个处理电路的求解出的扼制值的。
在一示例中,所述方法还包括:响应于所述扼制信号,扼制所述多个处理电路中的第一处理电路;并且响应于所述扼制信号,使得所述多个处理电路中的第二处理电路能够不受约束地执行。
在另一示例中,一种包括指令的计算机可读介质用于执行如上述示例中的任何一者所述的方法。
在另外一个示例中,一种包括数据的计算机可读介质被至少一个机器用来制作至少一个集成电路以执行如上述示例中的任何一者所述的方法。
在另外一个示例中,一种装置,包括用于执行如上述示例中的任何一者所述的方法的装置。
在另一示例中,一种***包括SoC和与所述SoC相耦合的动态随机访问存储器。所述SoC可包括:多个核心和至少一个图形处理器,所述多个核心和所述至少一个图形处理器中的每一者包括配置寄存器,来存储动态电流预算;以及与所述多个核心和所述至少一个图形处理器相耦合的功率控制器,所述功率控制器包括接口,来从软件实体接收关于要在所述SoC上执行的工作负载的电流扼制提示信息,所述功率控制器还包括动态电流共享控制电路,来至少部分基于所述电流扼制提示信息来为所述多个核心和所述至少一个图形处理器生成所述动态电流预算。
在一示例中,所述功率控制器包括多个第二配置寄存器来存储所述电流扼制提示信息,并且所述动态电流共享控制电路用于基于所述电流扼制提示信息和所述SoC的一个或多个参数来为所述多个核心和所述至少一个图形处理器确定求解出的电流预算。
在一示例中,所述动态电流共享控制电路用于基于所述多个核心和所述至少一个图形处理器的求解出的电流预算和所述多个核心和所述至少一个图形处理器中的每一者的配置最大电流预算来确定所述动态电流预算。
在一示例中,对于第一工作负载,所述动态电流共享控制电路用于:将所述多个核心中的至少一者的动态电流预算设置到所述至少一个核心的配置最大电流预算;并且将所述至少一个图形处理器的动态电流预算设置为小于所述至少一个图形处理器的配置最大电流预算。
在另一示例中,一种装置包括:多个处理电路,来执行指令;与所述多个处理电路相耦合的求和电路,所述求和电路接收多个数字电流值,每个数字电流值对应于来自所述多个处理电路之一的测量电流,并且从所述多个数字电流值生成总电流值;以及与所述求和电路相耦合的电流控制器,来对所述总电流值进行滤波并且将滤波后的总电流值与阈值相比较,并且当所述滤波后的总电流值超过所述阈值时,向所述多个处理电路发送扼制信号。
在一示例中,所述多个处理电路中的每一者用于响应于所述扼制信号而独立地扼制操作。
在一示例中,所述多个处理电路中的每一者用于根据存储在相应处理电路的配置存储装置中的配置值,响应于所述扼制信号而独立地扼制操作。
在一示例中,所述装置还包括与所述多个处理电路相耦合的多个集成电压调节器,来向所述求和电路提供所述多个数字电流值。
在一示例中,所述电流控制器包括:低通滤波器,来对所述总电流值进行滤波;数字比较器,来将所述滤波后的总电流值与所述阈值相比较;以及脉冲延长电路,其被耦合来从所述数字比较器接收比较信号并且至少部分基于所述比较信号来输出所述扼制信号。
在一示例中,所述脉冲延长电路用于在所述滤波后的电流值下降到所述阈值以下之后,在扼制窗口的剩余持续时间中维持所述扼制信号。
在一示例中,所述装置还包括:多个电流控制器,每个电流控制器与多个电压调节器之一相关联;以及与所述多个电压调节器相耦合的功率控制器。所述功率控制器用于将来自所述多个电流控制器中的每一者的滤波后电流值转换成功率值,将所述功率值组合成总计功率值,对所述总计功率值进行滤波,并且当滤波后的总计功率值超过阈值功率值时,向所述多个处理电路中的至少一些发送第二扼制信号。
要理解,上述示例的各种组合是可能的。
注意,在本文中可互换使用术语“电路”和“电子线路”。如本文所使用的,这些术语和术语“逻辑”用于单独地或者按任何组合提及模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路、和/或任何其他类型的物理硬件组件。实施例可被用于许多不同类型的***中。例如,在一个实施例中,通信设备可被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可指向其他类型的用于处理指令的装置,或者包括指令的一个或多个机器可读介质,这些指令响应于在计算设备上被执行而使得该设备实现本文描述的一个或多个方法和技术。
实施例可被实现在代码中并且可被存储在其上存储有指令的非暂态存储介质上,所述指令可用于将***编程为执行这些指令。实施例还可被实现在数据中并且可被存储在非暂态存储介质上,该存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路来执行一个或多个操作。还有另外的实施例可被实现在包括信息的计算机可读存储介质中,所述信息当被制造到SoC或其他处理器中时将配置该SoC或其他处理器来执行一个或多个操作。存储介质可以包括但不限于任何类型的盘,包括软盘,光盘,固态驱动器(solid state drive,SSD),致密盘只读存储器(compact disk read-only memory,CD-ROM),可改写致密盘(compact disk rewritable,CD-RW),以及磁光盘,半导体设备,比如只读存储器(read-only memory,ROM),随机访问存储器(random access memory,RAM),比如动态随机访问存储器(dynamic random access memory,DRAM),静态随机访问存储器(static random access memory,SRAM),可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM),闪速存储器、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM),磁卡或光卡,或者任何其他类型的适用于存储电子指令的介质。
虽然已关于有限数目的实施例描述了本发明,但本领域技术人员将会明白从这些实施例进行的许多修改和变化。希望所附权利要求覆盖落在本发明的真实精神和范围内的所有这种修改和变化。

Claims (27)

1.一种装置,包括:
多个知识产权(IP)电路,所述多个IP电路中的每一者包括配置寄存器,来存储动态电流预算;以及
与所述多个IP电路相耦合的功率控制器,所述功率控制器包括动态电流共享控制电路,来接收关于要在所述多个IP电路中的至少一些上执行的工作负载的电流扼制提示信息并且至少部分基于此来为所述多个IP电路中的每一者生成所述动态电流预算。
2.如权利要求1所述的装置,其中所述功率控制器包括多个第二配置寄存器来存储所述电流扼制提示信息,其中所述动态电流共享控制电路用于基于所述电流扼制提示信息和所述装置的一个或多个参数来为所述多个IP电路确定所述动态电流预算。
3.如权利要求2所述的装置,其中所述功率控制器包括接口,来使得软件能够将所述电流扼制提示信息写入到所述多个第二配置寄存器。
4.如权利要求3所述的装置,其中所述功率控制器用于基于关于所述多个IP电路在所述工作负载的执行期间的使用情况的试探信息来从所述软件接收所述电流扼制提示信息。
5.如权利要求2所述的装置,其中所述动态电流共享控制电路用于进一步基于所述多个IP电路中的每一者的配置最大电流预算来为所述多个IP电路确定所述动态电流预算。
6.如权利要求5所述的装置,其中,对于第一工作负载,所述动态电流共享控制电路用于:
将第一IP电路的动态电流预算设置到所述第一IP电路的配置最大电流预算;并且
将第二IP电路的动态电流预算设置为小于所述第二IP电路的配置最大电流预算。
7.如权利要求6所述的装置,其中,对于第二工作负载,所述动态电流共享控制电路用于:
将所述第一IP电路的动态电流预算设置为小于所述第一IP电路的配置最大电流预算;并且
将所述第二IP电路的动态电流预算设置到所述第二IP电路的配置最大电流预算。
8.如权利要求6所述的装置,其中所述第一IP电路包括核心,并且所述第二IP电路包括图形处理器。
9.如权利要求6所述的装置,其中,响应于来自所述功率控制器的扼制信号,所述第一IP电路用于将操作限制到所述第一IP电路的配置最大电流预算,并且所述第二IP电路用于将操作限制到所述第二IP电路的动态电流预算。
10.如权利要求9所述的装置,其中所述第二IP电路用于基于所述动态电流预算,响应于所述扼制信号而压制时钟信号的一个或多个时钟周期。
11.如权利要求1所述的装置,其中所述动态电流共享电路用于在扼制事件期间向所述多个IP电路中的至少一者提供机会性电流预算,所述机会性电流预算使得所述至少一个IP电路能够超过所述至少一个IP电路的动态电流预算。
12.一种装置,包括:
多个处理电路,来执行指令;
与所述多个处理电路相耦合的求和电路,所述求和电路接收多个数字电流值,每个数字电流值对应于来自所述多个处理电路之一的测量电流,所述求和电路从所述多个数字电流值生成总电流值;以及
与所述求和电路相耦合的电流控制器,所述电流控制器对所述总电流值进行滤波并且将滤波后的总电流值与阈值相比较,其中当所述滤波后的总电流值超过所述阈值时,所述电流控制器用于向所述多个处理电路发送扼制信号。
13.如权利要求12所述的装置,其中所述多个处理电路中的每一者用于响应于所述扼制信号而独立地扼制操作。
14.如权利要求13所述的装置,其中所述多个处理电路中的每一者用于根据存储在相应处理电路的配置存储装置中的配置值,响应于所述扼制信号而独立地扼制操作。
15.如权利要求12所述的装置,还包括与所述多个处理电路相耦合的多个集成电压调节器,其中所述多个集成电压调节器用于向所述求和电路提供所述多个数字电流值。
16.如权利要求12所述的装置,其中所述电流控制器包括:
低通滤波器,来对所述总电流值进行滤波;
数字比较器,来将所述滤波后的总电流值与所述阈值相比较;以及
脉冲延长电路,其被耦合来从所述数字比较器接收比较信号并且至少部分基于所述比较信号来输出所述扼制信号。
17.如权利要求16所述的装置,其中所述脉冲延长电路用于在所述滤波后的电流值下降到所述阈值以下之后,在扼制窗口的剩余持续时间中维持所述扼制信号。
18.如权利要求12所述的装置,还包括:
多个电流控制器,每个电流控制器与多个电压调节器之一相关联;以及
与所述多个电压调节器相耦合的功率控制器,其中所述功率控制器用于将来自所述多个电流控制器中的每一者的滤波后电流值转换成功率值,将所述功率值组合成总计功率值,对所述总计功率值进行滤波,并且当滤波后的总计功率值超过阈值功率值时,向所述多个处理电路中的至少一些发送第二扼制信号。
19.一种***,包括:
片上***(SoC),包括:
多个核心装置和至少一个图形处理装置,所述多个核心装置和所述至少一个图形处理装置中的每一者包括配置寄存器装置,用于存储动态电流预算;以及
与所述多个核心装置和所述至少一个图形处理装置相耦合的功率控制装置,所述功率控制装置包括接口装置,用于从软件实体接收关于要在所述SoC上执行的工作负载的电流扼制提示信息,所述功率控制装置还包括动态电流共享控制装置,用于至少部分基于所述电流扼制提示信息来为所述多个核心装置和所述至少一个图形处理装置生成所述动态电流预算;以及
与所述SoC相耦合的存储器装置。
20.如权利要求19所述的***,其中所述功率控制装置包括多个第二配置寄存器装置,用于存储所述电流扼制提示信息,并且所述动态电流共享控制装置用于基于所述电流扼制提示信息和所述SoC的一个或多个参数来为所述多个核心装置和所述至少一个图形处理装置确定求解出的电流预算。
21.如权利要求20所述的***,其中所述动态电流共享控制装置用于基于所述多个核心装置和所述至少一个图形处理装置的求解出的电流预算和所述多个核心装置和所述至少一个图形处理装置中的每一者的配置最大电流预算来确定所述动态电流预算。
22.一种方法,包括:
在处理器的功率控制器中,从软件实体接收关于工作负载的电流扼制提示信息;
基于所述电流扼制提示信息和所述处理器的多个处理电路的配置最大电流预算值,为所述多个处理电路中的每一者计算动态最大电流预算;
将所述动态最大电流预算发送到所述多个处理电路中的每一者;并且
响应于确定所述处理器的电流消耗水平超过阈值,向所述多个处理电路发送扼制信号,以使得所述多个处理电路基于所述动态最大电流预算来扼制活动。
23.如权利要求22所述的方法,还包括:
经由接口在所述功率控制器中接收所述电流扼制提示信息;并且
将所述电流扼制提示信息存储在所述功率控制器的一组配置寄存器中。
24.如权利要求22所述的方法,还包括基于所述电流扼制提示信息和管芯特定信息来为所述多个处理电路确定求解出的扼制值。
25.如权利要求24所述的方法,还包括进一步基于所述多个处理电路的求解出的扼制值来为述多个处理电路中的每一者计算所述动态最大电流预算。
26.如权利要求22所述的方法,还包括:
响应于所述扼制信号,扼制所述多个处理电路中的第一处理电路;并且
响应于所述扼制信号,使得所述多个处理电路中的第二处理电路能够不受约束地执行。
27.一种计算机可读存储介质,包括计算机可读指令,所述计算机可读指令当被执行时,实现如权利要求22至26中的任何一项中要求保护的方法。
CN202080028948.1A 2019-05-15 2020-03-19 用于动态控制处理器的处理电路的电流消耗的***、装置和方法 Pending CN113748397A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/412,606 US11442529B2 (en) 2019-05-15 2019-05-15 System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
US16/412,606 2019-05-15
PCT/US2020/023580 WO2020231514A1 (en) 2019-05-15 2020-03-19 System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor

Publications (1)

Publication Number Publication Date
CN113748397A true CN113748397A (zh) 2021-12-03

Family

ID=73228114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080028948.1A Pending CN113748397A (zh) 2019-05-15 2020-03-19 用于动态控制处理器的处理电路的电流消耗的***、装置和方法

Country Status (5)

Country Link
US (1) US11442529B2 (zh)
EP (1) EP3969984A4 (zh)
JP (1) JP2022532838A (zh)
CN (1) CN113748397A (zh)
WO (1) WO2020231514A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507170B1 (en) * 2020-01-28 2022-11-22 Marvell Asia Pte Ltd Power management and current/ramp detection mechanism
US11860702B2 (en) * 2020-12-15 2024-01-02 International Business Machines Corporation Current consumption controller
US11431163B2 (en) * 2020-12-23 2022-08-30 Motorola Solutions, Inc. Device, system and method for throttling current to peripherals
WO2023287533A1 (en) * 2021-07-13 2023-01-19 SiFive, Inc. Processor power management using instruction throttling
US20230236729A1 (en) * 2022-01-27 2023-07-27 Micron Technology, Inc. Performance throttling module
US11921564B2 (en) 2022-02-28 2024-03-05 Intel Corporation Saving and restoring configuration and status information with reduced latency
US20240201762A1 (en) * 2022-12-15 2024-06-20 Qualcomm Incorporated Ruler-follower dynamic voltage and frequency scaling schemes for integrated circuit components

Family Cites Families (87)

* Cited by examiner, † Cited by third party
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
KR20050115227A (ko) 2003-01-23 2005-12-07 유니버시티 오브 로체스터 다중 클록 도메인 마이크로프로세서
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
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US20070156992A1 (en) 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US9001801B2 (en) 2004-09-07 2015-04-07 Broadcom Corporation Method and system for low power mode management for complex Bluetooth devices
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7426648B2 (en) 2004-09-30 2008-09-16 Intel Corporation Global and pseudo power state management for multiple processing elements
US7434073B2 (en) 2004-11-29 2008-10-07 Intel Corporation Frequency and voltage scaling architecture
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US7454632B2 (en) 2005-06-16 2008-11-18 Intel Corporation Reducing computing system power through idle synchronization
US7444526B2 (en) * 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
US7430673B2 (en) 2005-06-30 2008-09-30 Intel Corporation Power management system for computing platform
US7562234B2 (en) 2005-08-25 2009-07-14 Apple Inc. Methods and apparatuses for dynamic power control
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070106827A1 (en) 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
US20070245163A1 (en) 2006-03-03 2007-10-18 Yung-Hsiang Lu Power management in computer operating systems
US7437270B2 (en) 2006-03-30 2008-10-14 Intel Corporation Performance state management
US7752468B2 (en) 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US7529956B2 (en) 2006-07-17 2009-05-05 Microsoft Corporation Granular reduction in power consumption
US7930564B2 (en) 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
US7730340B2 (en) 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
US8510581B2 (en) 2007-03-26 2013-08-13 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
US8024590B2 (en) 2007-12-10 2011-09-20 Intel Corporation Predicting future power level states for processor cores
US20090150696A1 (en) 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
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
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
US8356194B2 (en) * 2010-01-28 2013-01-15 Cavium, Inc. Method and apparatus for estimating overshoot power after estimating power of executing events
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8949637B2 (en) 2011-03-24 2015-02-03 Intel Corporation Obtaining power profile information with low overhead
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
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
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
WO2013137859A1 (en) 2012-03-13 2013-09-19 Intel Corporation Providing energy efficient turbo operation of a processor
WO2013137862A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically controlling interconnect frequency in a processor
US9436245B2 (en) 2012-03-13 2016-09-06 Intel Corporation Dynamically computing an electrical design point (EDP) for a multicore processor
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9348380B2 (en) 2013-12-28 2016-05-24 Samsung Electronics Co., Ltd. Dynamic thermal budget allocation for memory array
US9552034B2 (en) * 2014-04-29 2017-01-24 Qualcomm Incorporated Systems and methods for providing local hardware limit management and enforcement
US20160070327A1 (en) 2014-09-08 2016-03-10 Qualcomm Incorporated System and method for peak current management to a system on a chip
US10234930B2 (en) * 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US10613611B2 (en) 2016-06-15 2020-04-07 Intel Corporation Current control for a multicore processor
US11372464B2 (en) * 2017-06-12 2022-06-28 Intel Corporation Adaptive parameterization for maximum current protection
US10554039B2 (en) * 2017-08-11 2020-02-04 Infineon Technologies Ag Digital line protection with supply voltage drop safety
US10620969B2 (en) 2018-03-27 2020-04-14 Intel Corporation System, apparatus and method for providing hardware feedback information in a processor
US10739844B2 (en) 2018-05-02 2020-08-11 Intel Corporation System, apparatus and method for optimized throttling of a processor
US10747286B2 (en) * 2018-06-11 2020-08-18 Intel Corporation Dynamic power budget allocation in multi-processor system
US11099628B2 (en) * 2018-09-27 2021-08-24 Intel Corporation Throttling of components using priority ordering

Also Published As

Publication number Publication date
WO2020231514A1 (en) 2020-11-19
EP3969984A4 (en) 2023-05-10
JP2022532838A (ja) 2022-07-20
EP3969984A1 (en) 2022-03-23
US11442529B2 (en) 2022-09-13
US20200363860A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
US11435816B2 (en) Processor having accelerated user responsiveness in constrained environment
US11409560B2 (en) System, apparatus and method for power license control of a processor
US11442529B2 (en) System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
US11481013B2 (en) Multi-level loops for computer processor control
CN109564526B (zh) 使用封装和线程提示信息的组合来控制处理器的性能状态
US20190041950A1 (en) System, Apparatus And Method For Data Driven Low Power State Control Based On Performance Monitoring Information
US11669146B2 (en) System, apparatus and method for responsive autonomous hardware performance state control of a processor
US20240028101A1 (en) System, apparatus and method for globally aware reactive local power control in a processor
CN113448373A (zh) 用于处理器的电压调节器的功率状态缩放的装置和方法
US10379596B2 (en) Providing an interface for demotion control information in a processor
CN110998487A (zh) 现场可编程门阵列(fpga)中的自适应操作电压的***、装置和方法

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