掌桥专利:专业的专利平台
掌桥专利
首页

使用互连事件计数器和权重和累加器控制处理器中功耗的系统和方法

文献发布时间:2024-04-18 19:59:31


使用互连事件计数器和权重和累加器控制处理器中功耗的系统和方法

背景技术

在互补金属氧化物半导体(CMOS)集成电路中,为了调整功耗,现代微处理器已经采用了使用“P状态”的动态功率管理。P状态是电压和频率的组合。操作系统(OS)确定完成当前任务的频率,并使片上功率状态控制器相应地设置时钟频率和操作电压。例如,如果平均而言微处理器被大量利用,则OS可以确定应当增加频率。另一方面,如果平均而言微处理器被轻度利用,则OS可以确定应当降低频率。用于在这些频率下适当操作的可用频率和对应电压被存储在P状态表中。当操作频率增加时,对应的电源电压也增加,但保持低电压同时仍确保正常操作很重要。

处理器核心可以使用性能计数器来对与通过核心的指令执行和数据移动相关的特定事件进行处理能力测量。具体地,数字功率监视器(DPM)可以使用事件计数器来测量在对应的时间段内一个核心或一组核心中的特定事件,并使用该特定事件来计算在该时间段内核心所消耗的功率。然后,可以将计算的功率与核心或核心组的热设计电流(TDC)极限进行比较。另外,电设计电流(EDC)监视器可使用事件计数器来计算由一个核心或一组核心所汲取的电流,并将该电流与核心或一组核心的EDC极限进行比较。

集成电路需要完成关于TDC和EDC的性能监视的单独运行或迭代,因为它们是与不同时间帧相关联的两个单独机制。例如,TDC是在以毫秒测量的热显著时间帧上可持续的最大电流,而EDC是在以微秒测量的短得多的非热显著时间帧上可持续的最大电流。因为鉴于这些约束的时间帧的不同尺度,完成它们的单独运行需要时间和计算资源,所以需要将它们组合在一起,使得性能监视的单个运行将是足够的。

附图说明

当结合以下附图时,鉴于以下描述,将更容易理解具体实施,其中相同的附图标记表示相同的元件,并且附图中:

图1是根据本文公开的实施方案的多处理器核心系统的示例性功能框图;

图2是根据本文公开的实施方案在图1的系统中实现的事件计数逻辑部件的子部件的示例性功能框图;

图3是根据本文公开的实施方案在图1的系统中实现的核心和共享(L3)高速缓存的子部件的示例性功能框图;

图4是根据本文公开的实施方案在图1的系统中从核心到共享高速缓存的数据流的示例性功能框图;并且

图5是根据本文公开的实施方案来自图2的事件计数逻辑部件的子部件的示例性功能框图;

图6是在根据本文公开的实施方案的系统中实现的过程的示例性流程图;

图7是如在根据本文公开的实施方案的系统中实现的涉及对应于执行单元和处理器引擎的权重和累加的过程的示例性流程图;并且

图8是如在根据本文公开的实施方案的系统中实现的涉及对应于执行单元、处理器引擎和共享存储器的权重和累加的过程的示例性流程图。

具体实施方式

简言之,系统和方法通过调整具有超额功耗的相应处理核心的功耗来促进多个处理核心的改进的功耗控制。具体地,控制多个处理核心的功耗的方法包括以下步骤:使用至少一个事件计数部件监视多个分布式事件;从事件计数部件计算分布式事件的累加权重和;通过将累加权重和与阈值功率值进行比较来确定超额功耗;以及基于确定的超额功耗来调整相应处理核心的功耗。阈值功率值可选自短期功率使用阈值或长期功率使用阈值中的一者。

在一些示例中,该方法包括同时将累加权重和与短期功率使用阈值进行比较以及将累加权重和与长期功率使用阈值进行比较。在一些示例中,通过为具有超额功耗的相应处理核心生成功率节流控制信号来调整功耗。在一些示例中,在相应处理核心的执行单元上监视分布式事件,并且通过对相应处理核心的执行单元执行功率节流来调整功耗。在一些示例中,使用多个事件计数部件在相应处理核心的处理器引擎上进一步监视分布式事件,并且通过对处理器引擎执行功率节流来调整功耗。在此类示例中,该方法还包括以下步骤:通过聚合来自多个事件计数部件的累加权重和来确定执行单元和处理器引擎的聚合功耗,并且通过将聚合权重和与阈值功率值进行比较来确定超额功耗。

在一些示例中,执行单元和处理器引擎中的多个事件计数部件经由至少一个环形总线互连地耦合。在上述进一步的一些示例中,使用事件计数部件在由处理核心共享的高速缓存存储器上进一步监视分布式事件,并且通过对共享的高速缓存存储器执行功率节流来调整功耗。此类示例中的方法还包括以下步骤:通过聚合来自所有处理核心的聚合功耗来确定执行单元、处理器引擎和共享高速缓存存储器的第二聚合功耗,以及通过将第二聚合权重和与阈值功率值进行比较来确定超额功耗。

在一些示例中,执行单元、处理器引擎和共享高速缓存存储器中的多个事件计数部件经由多个环形总线互连地耦合。在一些示例中,该方法还包括基于确定的超额功耗向相应处理核心发送功率节流信号的步骤。在一些示例中,功率节流信号基于相应处理核心的超额功耗而引起相应处理核心的每周期指令(IPC)减少。在一些示例中,功率节流信号是基于相应处理核心的超额功耗而发送到相应处理核心的脉宽调制(PWM)节流信号。在一些示例中,执行单元是浮点单元。

根据某些实现,用于控制至少一个处理核心的功耗的处理系统包括至少一个执行单元。执行单元包括至少一个第一事件计数部件和与第一事件计数部件耦合的第一主累加部件。第一事件计数部件监视执行单元中的多个分布式事件,并计算分布式事件的累加权重和。第一主累加部件通过将累加权重和与阈值功率值进行比较来确定超额功耗,并基于确定的超额功耗来调整执行单元的功耗。阈值功率值可选自短期功率使用阈值或长期功率使用阈值中的一者。第一主累加部件包括第一逻辑部件和第二逻辑部件,第一逻辑部件用于将累加权重和与短期功率使用阈值进行比较,第二逻辑部件用于将累加权重和与长期功率使用阈值进行比较。

在一些示例中,第一逻辑部件在第二逻辑部件将累加权重和与长期功率使用阈值进行比较的同时,将累加权重和与短期功率使用阈值进行比较。在一些示例中,处理系统还包括执行单元中的多个第一事件计数部件,以及可操作地耦合到多个第一事件计数部件的至少一个环形总线,使得多个第一事件计数部件互连。

在一些实施方案中,处理系统还包括与至少一个执行单元耦合的至少一个处理器引擎。处理器引擎包括可操作地与第一主累加部件、至少一个第二事件计数部件和第二主累加部件耦合的第一从接口。第一从接口从第一主累加部件接收累加权重和。第二事件计数部件从该第一从接口接收累加权重和,监视处理器引擎中的多个分布式事件,并计算分布式事件的第二累加权重和,第二累加权重和包括来自第一主累加部件的累加权重和。第二主累加部件基于第二累加权重和确定执行单元和引擎的聚合功耗,通过将聚合功耗与阈值功率值进行比较来确定超额功耗,并且基于确定的超额功耗来调整执行单元或处理器引擎的功耗。第二主累加部件还包括第一逻辑部件和第二逻辑部件,第一逻辑部件用于将累加权重和与短期功率使用阈值进行比较,第二逻辑部件用于将累加权重和与长期功率使用阈值进行比较。

在一些示例中,处理系统还包括处理器引擎中的多个第二事件计数部件,以及可操作地耦合到多个第二事件计数部件的至少一个环形总线,使得多个第二事件计数部件互连。

在一些实施方案中,处理系统还包括多个处理器引擎和与多个处理器引擎耦合的高速缓存存储器。高速缓存存储器包括可操作地与第二主累加部件、至少一个第三事件计数部件和第三主累加部件耦合的第二从接口。第二从接口从第二主累加部件接收聚合功耗。第三事件计数部件从第二从接口接收聚合功耗,监视高速缓存存储器中的多个分布式事件,并且计算分布式事件的第三累加权重和,该第三累加权重和包括来自第一主累加部件的累加权重和与来自第二主累加部件的聚合功耗。第三主累加部件基于所第三累加权重和确定高速缓存存储器的第二聚合功耗,通过将第二聚合功耗与阈值功率值进行比较来确定超额功耗,并且基于确定的超额功耗来调整执行单元、处理器引擎或高速缓存存储器的功耗。第三主累加部件还包括第一逻辑部件和第二逻辑部件,第一逻辑部件用于将累加权重和与短期功率使用阈值进行比较,第二逻辑部件用于将累加权重和与长期功率使用阈值进行比较。

在一些示例中,处理系统还包括与第三主累加部件耦合的仲裁器。仲裁器经配置为基于所确定的超额功耗将功率节流信号发送到至少一个执行单元、至少一个处理器引擎或高速缓存存储器中的一者或多者。

在一些示例中,功率节流信号基于其中的超额功耗,引起至少一个执行单元、至少一个处理器引擎或高速缓存存储器中的一者或多者的每周期指令(IPC)减少。在一些示例中,功率节流信号是基于其中的超额功耗而发送到至少一个执行单元、至少一个处理器引擎或高速缓存存储器中的一者或多者的脉宽调制(PWM)节流信号。在一些示例中,执行单元是浮点单元。

根据某些实现,与高速缓存存储器操作耦合的存储器控制器,该高速缓存存储器被配置成由多个处理核心共享,该存储器控制器可被配置成执行本文所公开的过程,其中每个处理核心包括执行单元和处理器引擎。即,存储器控制器使每个处理核心:使用至少一个第一事件计数部件来监视执行单元中的多个分布式事件,并计算分布式事件的累加权重和,并且使用第一主累加部件,通过将累加权重和与阈值功率值进行比较来确定超额功耗,并基于确定的超额功耗来调整执行单元的功耗。阈值功率值可选自短期功率使用阈值或长期功率使用阈值中的一者。

在一些示例中,存储器控制器使相应处理核心同时将累加权重和与短期功率使用阈值进行比较,并将累加权重和与长期功率使用阈值进行比较。在一些示例中,存储器控制器进一步使处理核心中的每个处理核心:使用可操作地与第一主累加部件耦合的第一从接口从第一主累加部件接收累加权重和;使用至少一个第二事件计数部件从第一从接口接收累加权重和,监视处理器引擎中的多个分布式事件,并计算分布式事件的包括来自第一主累加部件的累加权重和的第二累加权重和;以及使用第二主累加部件基于第二累加权重和确定执行单元和引擎的聚合功耗,通过将聚合功耗与阈值功率值进行比较来确定超额功耗,并且基于确定的超额功耗来调整执行单元或处理器引擎的功耗。

在一些示例中,存储器控制器进一步使用与第二主累加部件可操作地耦合的第二从接口从第二主累加部件接收聚合功耗;使用至少一个第三事件计数部件,从第二从接口接收聚合功耗,监视高速缓存存储器中的多个分布式事件,以及计算分布式事件的第三累加权重和,第三累加权重和包括来自第一主累加部件的累加权重和与来自第二主累加部件的聚合功耗;以及使用第三主累加部件,基于第三累加权重和来确定高速缓存存储器的第二聚合功耗,通过将第二聚合功耗与阈值功率值进行比较来确定超额功耗,并且基于确定的超额功耗来调整执行单元、处理器引擎或高速缓存存储器的功耗。

在一些示例中,存储器控制器进一步致使与第三主累加部件耦合的仲裁器:接收确定的超额功耗,并且基于确定的超额功耗,将功率节流信号发送到至少一个执行单元、至少一个处理器引擎或高速缓存存储器中的一者或多者。在一些示例中,功率节流信号可以是基于其中的超额功耗的至少一个执行单元、至少一个处理器引擎或高速缓存存储器中的一者或多者的每周期指令(IPC)减少信号。在一些示例中,功率节流信号可以是基于其中的超额功耗而发送到至少一个执行单元、至少一个处理器引擎或高速缓存存储器中的一者或多者的脉宽调制(PWM)节流信号。

在以下描述中,阐述了许多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应当认识到,可以在没有这些具体细节的情况下实践各种实施方案。在一些情况下,未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免模糊本文描述的方法。应当了解,为了简单和清楚说明,附图中所示的元件不一定按比例绘制。例如,这些元件中的一些元件的尺寸可相对于其他元件被放大。

图1示出了根据本文公开的实施方案的示例性多处理器核心系统100的高层视图。系统100包括多个N+1核心(从核心0到核心N),每个核心经由诸如系统总线的数据通信总线103与诸如L3高速缓存的共享高速缓存存储器104耦合,以向核心102和共享高速缓存104发送信息以及从该核心和该共享高速缓存发送信息。核心102和共享高速缓存104被布置在具有时钟和用于连接到北桥(未示出)的接口的公共管芯上。北桥可以包括存储器控制器128,该存储器控制器可以以任何合适的方式实现,诸如一个或多个状态机、可编程处理器和/或执行软件指令的处理器和一个或多个状态机的组合。

每个核心102包括执行单元106,该执行单元可以是如图所示的浮点单元或任何其他合适类型的执行单元。核心102还包括引擎108、诸如L2高速缓存的高速缓存存储器110、事件计数逻辑部件112和主累加逻辑部件114。共享高速缓存104包括与核心102中的每个主累加逻辑部件114耦合的从接口116,以及其自己的事件计数逻辑部件118和主累加逻辑部件120。此外,每个执行单元106包括其自己的事件计数逻辑部件122和主累加逻辑部件124。引擎108还具有其自己的从接口126,该从接口耦合到执行单元106的主累加逻辑部件124。

上述逻辑部件(即,事件计数逻辑部件和主累加逻辑部件)中的每一者以及从接口都可以根据其功能性使用一个或多个数字电路部件来实现,该数字电路部件包括但不限于逻辑单元,诸如算术逻辑单元(ALU)、多路复用器(MUX)、寄存器、控制单元等。此类部件可以统称为数字功率监视器(DPM)。引擎108是具有部件的处理引擎,该部件包括但不限于解码器、分支预测器、指令单元、加载-存储单元、整数执行单元等,而不包括在示出的示例中为浮点单元的执行单元106。

图2示出了根据本文公开的实施方案的示例性事件计数逻辑部件(例如,用于核心102的事件计数逻辑部件112)的子部件的高层视图,以及事件计数逻辑部件如何操作。如图所示,事件计数逻辑部件112包括多个事件检测器200,其中每个事件检测器能够检测分布式事件的发生并在寄存器中保持其发生的计数。输入接收事件(在所示的示例中,有X+1个事件可以检测到,即事件0到事件X),并且事件检测器200内的计数器保持对事件的计数,直到事件计数被传送到事件计数逻辑部件112的下一个子部件,即缩放器204。

被监视的一些事件可以包括,例如:预测分支指令的结果;访问指令高速缓存中的指令数据;访问“op高速缓存”中的指令数据;将操作从指令解码单元分派到整数执行单元;选择要执行的就绪浮点运算;选择要执行的就绪整数ALU运算;选择要执行的就绪加载或存储操作;训练高速缓存预取机制;从L2高速缓存存储器读取或写入;从L3高速缓存存储器读取或写入;或者从外部存储器读取或写入。

缩放器204从由MUX 202选择的事件检测器200之一接收事件计数(EventCnt)。使用从对应于所选事件类型的扩展事件权重寄存器206中选择的扩展事件权重(EventWeight)对所选事件计数(EventCnt)进行缩放或相乘。缩放事件中的位(EventWord)被发送到加法器208,以被添加到临时聚合寄存器(AggTmp)210中的对应位并存储在其中。然后,将AggTmp寄存器210中存储的位发送到本地聚合寄存器(AggLocal)214以及共享聚合寄存器(AggShare)218。来自AggTmp寄存器210的位经由加法器212添加到AggLocal寄存器214中的对应位,并且还经由加法器216添加到AggShare寄存器218中的对应位。

在一些示例中,AggLocal寄存器214存储增长的本地事件的总和,使得当执行功耗分析时可以参考该总和,例如,以便确定每个事件如何影响核心的功耗,以及其他类型的适当分析。AggShare寄存器218存储所有事件的权重功耗(称为“Cac”或动态电容)的聚合值。聚合值也被称为所有事件的累加权重和。AggShare寄存器218能够与主累加逻辑部件114通信,使得可以发送来自事件计数逻辑部件112的累加权重和,以便与适当的阈值进行比较。

每个核心102具有其自己的一组事件计数逻辑部件112和主累加逻辑部件114,并且主累加逻辑部件114能够从每个事件计数逻辑部件112接收累加权重和,并将权重和聚合成单个值以与阈值进行比较,以便确定权重和的总值是否超过阈值,并且如果超过阈值,则确定超过多少。可以基于核心的热设计电流(TDC)和电设计电流(EDC)来确定阈值。权重和的总和指示事件的总Cac估计。在一些示例中,AggShare寄存器218的值被串行传送到主累加逻辑部件114,并且一旦传送了位,寄存器就一次一个地清除所传送的位以复位自身,使得下一组事件的累加权重和可以存储在其中。

图3示出了根据一些实施方案的示例性核心和共享高速缓存存储器(例如核心102和与其耦合的共享高速缓存存储器104)的子部件的高层视图。高速缓存存储器104包括经由主累加逻辑部件114与核心102耦合的从接口116,以及其自己的主累加逻辑部件120。在这些主累加逻辑部件114和120的每个主累加逻辑部件中,存在聚合器模块300和阈值比较器模块302,该聚合器模块聚合来自事件计数逻辑部件112(在核心102中)或118(在共享高速缓存104中)中的每个单独AggShare寄存器218的所有权重和,该阈值比较器模块将聚合的权重和与阈值进行比较以确定事件是否超过Cac估计阈值(即,处于过阈值状态),并且如果超过Cac估计阈值,则确定超出预算多少(即过预算的量)。

在一些示例中,主累加器逻辑部件120与具有仲裁器模块306的调度器308耦合,使得过阈值和过预算信号以由主累加逻辑部件120基于阈值比较器模块302的结果产生的节流信号304的形式被发送到仲裁器模块306。节流信号304是被发送到仲裁器模块306以便于功率节流(诸如PWM节流)或被确定为处于过阈值状态(即,其中的事件超过Cac估计阈值)的部件中的IPC降低的信号。在一些示例中,调整或修改相应处理器核心或共享存储器的功耗的替代方法可视情况涉及时钟延展或操作频率降低。同样地,功率节流促进Cac估计的调整或修改,以便通过任何合适的手段(包括但不限于PWM节流或IPC降低)使功耗低于阈值。

此外,主累加逻辑部件114和120中的每个主累加逻辑部件包括用于短期和长期功率使用决定的单独的累加器。单独的累加器中的每个单独的累加器可包含任何合适部件,诸如逻辑单元(包含但不限于ALU、MUX、寄存器、控制单元、计数器等),例如以促进将所收集的功率使用数据与适当功率使用阈值进行比较。例如,聚合器300和阈值比较器302可实现为第一逻辑部件或短期累加器310的部分,其促进以与基于EDC的阈值(下文中称为“EDC阈值”)相关联的极短时间间隔(例如,每一累加分组周期一次)进行功率节流。另外,第二逻辑部件或长期累加器312包括在主累加逻辑部件中,以促进以与基于TDC的阈值(下文中称为“TDC阈值”)相关联的较长时间间隔进行功率节流。

即,长期累加器312包括分别类似于聚合器300和阈值比较器302进行操作的聚合器301和阈值比较器303,但并没有收集短期功率使用数据并将其与EDC阈值进行比较,这些部件允许周期性地收集长期功率使用数据(持续多个累加分组周期),将收集的功率使用数据与TDC阈值进行比较,以及管理超过TDC阈值的核心102以及在某些情况下还有共享高速缓存存储器104的电压和频率水平,使得系统100保持在由TDC阈值提出的极限内。因此,每个主累加逻辑部件能够基于短期EDC阈值和长期TDC阈值两者来执行功率节流。

在一些示例中,单独的累加器310和312能够同时将所收集的短期或长期功率使用数据分别与EDC阈值或TDC阈值进行比较,从而可以执行适当的功率节流。在一些示例中,累加器310和312可彼此独立地操作,使得短期(或EDC)阈值比较或长期(或TDC)阈值比较可被选择以由适当的累加器执行。

如上所述,执行功率节流的方法之一包括例如降低IPC。例如,可以通过减少用于分支预测、指令提取、指令解码或指令执行的允许带宽来减少IPC。还可以通过各种手段降低处理器频率来执行功率节流,例如,包括降低锁相环(PLL)或延迟锁相环(DLL)频率或使用数字分频器。还可以通过降低共享电压调节器处或特定部件(诸如,处理器核心或高速缓存存储器)本地的电压调节器处的电源电压来执行功率节流。

主累加器逻辑部件114、120和124中的每个主累加器逻辑部件都是分层布置的,即,其中的阈值比较器302的结果有助于对相同或更低层级的部件进行PWM节流。例如,与共享高速缓存存储器104相关联的主累加逻辑部件120是最高层级的,因为节流信号304影响共享高速缓存存储器104和比共享高速缓存存储器104更低层级的核心102。类似地,与核心102相关联的主累加逻辑部件114中的阈值比较器302的结果影响引擎108和比引擎108更低层级的FPU 106的操作。最后,与FPU 106相关联的主累加逻辑部件124中的阈值比较器302的结果仅影响FPU 106的操作,在一些示例中,FPU 106可以处于这些部件中的最低层级。在一些示例中,可以存在由系统支持的任何任意数量的附加层次级别。

图4示出了根据本文公开的实施方案,如何在核心102内累加事件的权重和,以及如何将它们与共享高速缓存存储器104内累加的事件的权重和聚合在一起的高层视图。如图所示,核心102具有多个事件计数逻辑部件112和400,使得每个事件计数逻辑部件都能够对核心102内的不同类型的事件进行计数。核心102的主累加逻辑部件114通过向第一事件计数逻辑部件112发送初始聚合分组402来开始该过程,该初始聚合分组可以是要由核心102内的对应事件计数逻辑部件填充的空分组。在一些示例中,以相等的时间间隔(诸如大约50ns)发出初始聚合分组,并且直到前一聚合分组被完全发送但不必要被接收,才可以发出新的分组。

第一事件计数逻辑部件112将初始聚合分组402与来自其AggShare寄存器218的权重和的值进行累加,以生成聚合分组404。第一事件计数逻辑部件112将聚合分组404发送到第二事件计数逻辑部件400,使得第二事件计数逻辑部件400接着将接收的聚合分组404与来自其AggShare寄存器218的权重和(即,累加Cac)的值进行累加,以生成聚合分组406,该聚合分组被发送回到主累加逻辑部件114。尽管仅示出了两个事件计数逻辑部件,但是应当理解,可以采用任何适当数量的事件计数逻辑部件。

聚合分组406表示来自核心102中的所有事件计数逻辑部件的总累加Cac。在主累加逻辑部件114接收到包括来自与核心102相关联的所有事件计数逻辑部件的权重和的聚合分组406之后,聚合分组406然后可以被传送到从接口(如果存在)。在这种情况下,共享高速缓存存储器104的从接口116从核心102接收聚合分组406。在一些示例中,主累加逻辑部件114可以将聚合分组406与阈值进行比较,以确定核心102本地的事件是否引起核心102本地的过阈值状态。

在共享高速缓存存储器104中,主累加逻辑部件120发送类似于核心102中的初始聚合分组402的初始聚合分组408。从接口116将初始聚合分组408与从核心102的主累加逻辑部件114接收的聚合分组406进行聚合,以生成聚合分组410,如果初始聚合分组408为空,则该聚合分组实际上与聚合分组406相同。随后,与共享高速缓存存储器104相关联的一个或多个事件计数逻辑部件118将聚合分组412与来自其AggShare寄存器218的权重和的值进行累加,以生成总聚合分组412,该总聚合分组是聚合不仅来自与核心102相关联的事件计数逻辑部件而且来自与共享高速缓存存储器104相关联的事件计数逻辑部件的事件的权重和的最终聚合分组。主累加逻辑部件120接收总聚合分组412,并将结果与阈值进行比较,以确定事件是否引起部件中的过阈值状态,如所描述的。

如图4所示,如果适用,事件计数逻辑部件、主累加逻辑部件和从接口可以使用串行总线或环形总线互连,使得在聚合过程中将聚合分组从一个部件传送到下一个部件。以由从接口限定的分级方式执行数据传输;即,从接口确保在聚合过程期间从主累加逻辑部件到从接口的单向数据流。主累加逻辑部件的层级可以按以下顺序确定:(1)每个核心的执行单元中事件的Cac,(2)每个核心和其中所有执行单元中事件的Cac,(3)与核心相关联的共享高速缓存存储器的Cac,以及(4)所有核心和与核心相关联的共享高速缓存存储器的Cac。

图5示出了根据本文公开的实施方案的一个实现示例中的事件计数逻辑部件500。事件计数逻辑部件500可表示执行单元、核心或共享高速缓存存储器中的事件计数逻辑部件中的任一事件计数逻辑部件,且使用相关联的寄存器504的部分来执行计算并存储其结果,如图2中所示。

事件计数逻辑部件500包括多个事件检测器200,以检测相同数量的事件,或者更具体地检测八(8)个事件,即事件0至事件7。每个事件检测器200的输出是被发送到MUX 202以被选择的6位事件计数器串(Cnt0[5:0]至Cnt7[5:0]中的一者)。一旦被选择,缩放器204就将6位事件计数器与所选8位权重串相乘,其中,MUX 502根据所选事件计数器来选择权重串(Weight0[7:0]至Weight7[7:0]中的一个)。

一旦缩放,缩放器204输出26位缩放数据串,以被累加并存储在寄存器504中。具体地,寄存器504的子段EventWord0[15:0]到EventWord7[15:0]中的每个子段作为图2所示的寄存器210、214和218的一部分操作。即,在该示例中,EventWord0[15:0]到EventWord2[15:0]被共同用作48位AggShare寄存器218,EventWord3[15:0]和EventWord4[15:0]被共同用作32位AggTmp寄存器210,并且EventWord5[15:0]到EventWord7[15:0]被共同用作48位AggLocal寄存器214。加法器506共同作为加法器208、212和216操作,以便从多个事件计算权重和并将结果存储在寄存器504的对应子段中。

系统100可以是任何类型的处理器系统,诸如中央处理单元(CPU)或图形处理单元(GPU)。例如,系统100可以被实现为具有x86 64位指令集架构的x86处理器,并且用于台式机、膝上型计算机、服务器和超标量计算机;移动电话或数字媒体播放器中使用的高级精简指令集计算机(RISC)机器(ARM)处理器;或者用于处理和实现与数字信号(诸如语音数据和通信信号)相关的算法的数字信号处理器(DSP),以及用于消费应用(诸如打印机和复印机)的微控制器。

核心102形成系统100的计算中心,并且负责执行多个计算任务。例如,处理器核心102可以包括但不限于执行单元以及地址生成和加载及存储单元,该执行单元执行二进制数字的加法、减法、移位和旋转,该地址生成和加载及存储单元执行存储器地址的地址计算以及从存储器加载和存储数据。由处理器核心102执行的操作使得能够运行计算机应用。

处理器核心102根据特定的性能状态(P-状态)进行操作,例如由控制器128控制。P状态描述如下。高级配置和电源接口(ACPI)标准是基于操作系统的规范,用于管理计算机系统的电源管理。例如,ACPI标准可以控制和指导处理器核心以更好地管理电池寿命。在这样做时,ACPI分配处理器功率状态(称为C-状态),并强制处理器在这些状态的限制内操作。存在可能分配给处理器的不同级别的C状态(例如,C0表示完全工作状态,具有完全功耗和完全能量耗散;C1表示休眠状态,其中指令的执行被停止并且处理器可以立即返回以执行指令;或者C2表示另一休眠状态,其中处理器可能花费较长时间回到C0状态),以及对处理器性能的对应影响。

当处理器处于完全工作的C0状态时,它将与被称为性能状态或P状态的另一状态相关联。存在不同级别的P状态,每个P状态与操作电压和频率相关联。最高性能状态是P0,其可以对应于最大操作功率、电压和频率。然而,处理器可以被置于较低的性能状态,例如P1或P2,其对应于较低的操作功率、电压和/或频率。通常,当处理器移动到较低的P状态时,它将以比以前更低的容量操作。

图6是根据本文公开的实施方案的示例性过程600的流程图。该过程以及本文公开的任何其他过程可以由任何合适的装置来执行,诸如一个或多个状态机、可编程处理器和/或执行软件指令的处理器与一个或多个状态机的组合。在步骤602中,使用事件计数器在相应处理核心中监视多个分布式事件。在步骤604中,计算来自事件计数器的分布式事件的累加权重和。在步骤606中,通过将累加权重和与阈值功率值进行比较来确定超额功耗。在步骤608中,基于确定的超额功耗来调整或修改(例如,降低)相应处理核心的功耗。在一些示例中,经由功率节流来调整功耗。

在一些示例中,可以在相应处理核心的执行单元上监视分布式事件,并且调整功耗包括对相应处理核心的执行单元执行功率节流。方法600适用于在执行单元、核心的处理引擎或共享高速缓存存储器中的任何一者中监视的分布式事件。因此,一些示例中的分布式事件包括仅在执行单元中检测到的那些事件,在执行单元和核心的处理引擎中检测到的那些事件,或者在执行单元、处理引擎和共享高速缓存存储器中检测到的那些事件。

图7是根据本文公开的实施方案的示例性过程700的流程图。过程700便于聚合执行单元和处理器引擎中的多个分布式事件的功耗估计值,执行单元和处理器引擎都被实现为处理器核心的一部分。在步骤702中,使用事件计数器在每个执行单元和处理器引擎中监视多个分布式事件。分布式事件的监视可以在每个核心中单独地或同时地执行。在步骤704中,累加来自对应于执行单元的每个事件计数器的分布式事件的权重和,以计算对应于执行单元的事件的累加权重和。

在步骤706中,来自步骤704的对应于执行单元的累加权重和与来自对应于处理器引擎的事件计数器的分布式事件的权重和进行聚合。通过经由处理器引擎的从接口接收来自执行单元的主累加逻辑部件的累加权重和,并进一步将该累加权重和与来自对应于处理器引擎的事件计数器的分布式事件的权重和进行累加,可以执行该聚合。

在步骤708中,通过将聚合功耗与阈值功率值进行比较来确定执行单元和处理器引擎的超额功耗。在步骤710中,基于确定的超额功耗来调整相应处理核心的功耗。在一些示例中,经由功率节流来调整功耗。具体地,功率节流的量可以与执行单元和处理器引擎的超额功耗的量成比例。执行单元和处理器引擎中的多个事件计数部件可以经由至少一个环形总线互连地耦合。

图8是根据本文公开的实施方案的示例性过程800的流程图。过程800便于聚合执行单元、处理器引擎和共享高速缓存存储器中的多个分布式事件的功耗估计值,该共享高速缓存存储器可操作地与实现执行单元和处理器引擎的处理器核心耦合。

在步骤802中,使用与执行单元、处理器引擎和共享存储器相对应的事件计数器来监视这些部件中每个部件中的多个分布式事件。在步骤804中,累加来自对应于执行单元的每个事件计数器的分布式事件的权重和,以计算对应于执行单元的事件的累加权重和。

在步骤806中,来自步骤804的对应于执行单元的累加权重和与来自对应于处理器引擎的事件计数器的分布式事件的权重和进行聚合。通过经由处理器引擎的从接口接收来自执行单元的主累加逻辑部件的累加权重和,并进一步将该累加权重和与来自对应于处理器引擎的事件计数器的分布式事件的权重和进行累加,可以执行该聚合。

在步骤808中,来自步骤806的对应于执行单元和处理器引擎的累加权重和与来自对应于共享存储器的事件计数器的分布式事件的权重和进行聚合。通过经由共享存储器的从接口从处理器引擎的主累加逻辑部件接收聚合权重和,并进一步将该聚合权重和与来自对应于共享存储器的事件计数器的分布式事件的权重和进行累加,可以执行该聚合。

在步骤810中,通过将聚合功耗与阈值功率值进行比较来确定执行单元、处理器引擎和共享存储器的超额功耗。在步骤812中,基于确定的超额功耗来调整相应处理核心或共享存储器的功耗。在一些示例中,经由功率节流来调整功耗。可基于确定的超额功耗向具有超额功耗的相应处理核心或共享存储器发送功率节流信号。具体地,功率节流的量可以与执行单元、处理器引擎和共享存储器的超额功耗的量成比例。执行单元、处理器引擎和共享存储器中的多个事件计数部件可以经由至少一个环形总线互连地耦合。

实现本文公开的互连事件计数器和权重和累加器的优点包括更有效地使用事件来跟踪相对于核心的TDC和EDC的功率使用,尽管前者对应于热有效时间帧,而后者对应于短得多的非热有效时间帧。本文公开的方法和系统还通过仅使用单个校准来涵盖TDC和EDC两者的功率使用追踪(这可取决于处理器的类型和实现而变化)而促进处理器的更灵活且有效的校准。

此外,本文公开的方法和系统有助于更精确地测量功率使用,并跟踪相对于TDC和EDC限制的功率使用。因此,可以使用更多的EDC预算功率,从而引起更小的性能裕度。当确定功率使用超过基于TDC极限或EDC极限设置的阈值时,执行功率节流以调整此类功率使用。满足TDC和EDC功率使用限制有助于提高处理器的性能,以应对较重的工作负载。在一些示例中,对事件计数器使用组合的环形总线配置来监视相对于核心的TDC和EDC的功率使用,即,代替具有两组单独的事件计数器,还可以减小整个处理器系统的大小,并且由此还提高了处理器系统的制造效率。

尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程来制造此类处理器。这种处理的结果可以是掩膜,然后在半导体制造过程中使用这些掩膜来制造实现实施方案的方面的处理器。

本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。

在前面对各种实施方案的详细描述中,已参考构成其一部分的附图,并且在附图中以示例的方式示出了可在其中实践本发明的特定优选实施方案。足够详细地描述了这些实施方案以使本领域的技术人员能够实践本发明,并且应当理解,可利用其他实施方案,并且可在不脱离本发明的范围的情况下做出逻辑、机械和电气改变。为了避免使本领域技术人员能够实践本发明所不必要的细节,该描述可省略本领域技术人员已知的某些信息。此外,本领域的技术人员可很容易构造结合本公开的教导的许多其他变化的实施方案。因此,本发明并非旨在限于本文所阐述的具体形式,相反,本发明旨在涵盖可合理地包括在本发明的范围内的此类替代方案、修改方案和等效方案。因此,前面的详细描述不应被视为限制性的,并且本发明的范围仅由所附权利要求限定。以上对实施方案和其中描述的示例的详细描述仅出于说明和描述的目的而非限制的目的给出。例如,所描述的操作以任何合适的顺序或方式完成。因此,可以预期,本发明涵盖落入上文公开和本文要求保护的基本基础原理范围内的任何和所有修改、变化或等效物。

以上详细描述和其中描述的示例仅出于说明和描述的目的而非限制的目的给出。

技术分类

06120116521031