减少处理器的非核心电路的功率消耗转让专利

申请号 : CN201180071297.5

文献号 : CN103562819B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·巴拉苏布拉马尼恩T·托马斯S·石栗玛丽B·加内桑

申请人 : 英特尔公司

摘要 :

在一种实施例中,多核心处理器包括多个核心和非核心,其中非核心包括含有高速缓存存储器、路由器和功率控制单元(PCU)的各种逻辑单元。在多核心处理器处于低功率状态时,PCU可以时钟门控逻辑单元和高速缓存存储器中的至少一个,以便由此减少动态功率消耗。

权利要求 :

1.一种计算装置,包括:

多核心处理器,所述多核心处理器包括:

多个核心;和

非核心,所述非核心包括:

至少一个高速缓存存储器;

多个逻辑单元,所述多个逻辑单元包括路由器、功率控制单元(PCU)和至少一个其他逻辑单元,其中所述PCU用于在所述多核心处理器处于低功率状态时,在所述多个逻辑单元持续没有事务且所述多个逻辑单元中不存在正在处理的事务的多个时间周期已经发生之后,时钟门控所述至少一个高速缓存存储器和所述多个逻辑单元中的至少一个逻辑单元,所述非核心用于判断所述多个逻辑单元是否持续为空了第一时间周期,且阻止了来自带外(OOB)信道的事务,并且判断所述多个逻辑单元是否持续为空了第二时间周期,并且所述PCU包括多个计时器,每个计时器用于跟踪不同的时间周期,如果所述非核心在不同的时间周期中的每一个内已经持续为空并阻止来自带外(OOB)信道的事务,则所述时钟门控发生。

2.如权利要求1所述的计算装置,其特征在于,所述PCU用于在包括所述多核心处理器的多处理器系统的另一多核心处理器处于所述低功率状态时执行所述时钟门控。

3.如权利要求1所述的计算装置,其特征在于,如果所述多个逻辑单元在所述多个时间周期内不是持续为空,则所述PCU判断在所述多个时间周期的第二迭代内所述多个逻辑单元是否持续为空,并且如果所述多个逻辑单元在所述第二迭代内持续为空则执行所述时钟门控。

4.如权利要求1所述的计算装置,其特征在于,在所述至少一个逻辑单元被时钟门控时,所述PCU和所述路由器保持计时。

5.如权利要求1所述的计算装置,其特征在于,所述PCU用于在所述非核心不为空时或在经由所述OOB信道接收到传入事务时终止所述时钟门控。

6.如权利要求1所述的计算装置,其特征在于,所述PCU用于执行到所述时钟门控的状态的进入流,所述进入流阻止在所述多核心处理器中接收到传入事务。

7.如权利要求6所述的计算装置,其特征在于,所述PCU用于在所述进入流之后和在所述时钟门控状态期间允许所述传入事务。

8.一种功率管理方法,包括:

判断多个处理器插槽是否已经协商进入插槽低功率状态并判断所述多个处理器插槽的第一处理器插槽的非核心为空;

如果是,则阻止来自被耦合到所述非核心的带外(OOB)信道的事务并判断在第一时间周期之后所述非核心是否仍然为空;

如果是,则阻止来自被耦合到所述非核心的一个或多个离槽信道的传入事务并判断在第二时间周期之后所述非核心是否仍然为空;以及响应于判断在所述第二时间周期之后所述非核心仍然为空,时钟门控所述非核心的多个单元。

9.如权利要求8所述的方法,进一步包括响应于所述时钟门控更新非核心时钟门控状态信号,以便指示所述非核心处于时钟门控状态,并且允许所述OOB信道上的事务,以使得响应于所述OOB信道上的传入事务可以禁用所述时钟门控。

10.如权利要求8所述的方法,进一步包括启动持续计时器以便计数所述第一时间周期,并且在所述第一时间周期之后判断所述非核心在所述第一时间周期内是否已经持续为空。

11.如权利要求10所述的方法,如果所述非核心在所述第一时间周期内已经不是持续为空,则允许所述OOB信道上的事务。

12.如权利要求10所述的方法,进一步包括启动清空计时器以便计数所述第二时间周期,并且在所述第二时间周期之后判断所述非核心在所述第二时间周期内是否已经持续为空。

13.如权利要求12所述的方法,如果所述非核心在所述第二时间周期内已经不是持续为空,则允许来自所述一个或多个离槽信道的所述传入事务且允许所述OOB信道上的事务。

14.如权利要求12所述的方法,进一步包括主张时钟门控启用信号并启动时钟门控计时器,并且响应于所述时钟门控计时器的过期设置状态指示符以便指示所述时钟门控。

15.如权利要求14所述的方法,进一步包括:

在所述非核心保持为空且经由所述OOB信道没有接收到请求信号的同时,继续所述时钟门控,且否则去断言所述状态指示符和所述时钟门控启用信号;以及响应于所述去断言,启动时钟解控计时器,且在所述时钟解控计时器过期时,去断言阻止来自所述一个或多个离槽信道的所述传入事务的流控制信号。

16.一种计算机系统,包括:

第一多核心处理器,其具有第一多个核心和第一非核心;

第二多核心处理器,其具有第二多个核心和第二非核心,其中,所述第二非核心用于在所述第一多核心处理器和所述第二多核心处理器已经协商进入封装低功率状态时时钟门控所述第二非核心的至少一部分,其中所述第二非核心包括功率控制单元(PCU),所述PCU用于在所述第二非核心持续没有事务的多个时间周期已经发生之后执行所述时钟门控,所述PCU包括多个计时器,每个计时器用于跟踪所述多个时间周期中的一个,并且,所述第二非核心用于阻止来自被耦合到所述第二多核心处理器的带外(OOB)信道的事务,且此后启动所述多个计时器中的第一个以便计数第一时间周期,且在所述第一时间周期之后阻止被耦合到所述第二多核心处理器的一个或多个离槽信道的传入事务,且此后启动所述多个计时器中的第二个以便计数第二时间周期,且在所述第二时间周期之后引起所述时钟门控发生;以及动态随机存取存储器(DRAM),其被耦合到所述第一多核心处理器和第二多核心处理器。

说明书 :

减少处理器的非核心电路的功率消耗

[0001] 背景
[0002] 许多现今的处理器被实现为包括多个独立核心和附加逻辑的多核心形式,附加逻辑常常被称为“非核心(uncore)”,其包含共享的高速缓存存储器、控制器、输入/输出(I/O)电路、功率控制电路等等。通常,在处理器进入给定水平的低功率模式时,在不需要一个或多个核心执行有用的工作时,可以禁用这些核心的电路以便减少功率消耗。尽管如此,在这些模式中,例如在高级配置和电源接口(ACPI)规范(例如,于2006年10月公布的Rev.3.0b)的所谓C状态中,非核心保持满载功率。
[0003] 作为非核心的这一上电特征的结果,在低功率模式中仍然发生整个处理器插槽的不期望的功率消耗量。这在多插槽平台中的诸如服务器处理器等的特定处理器中尤其如此,这是由于这些设备通常在诸如末级高速缓存存储体(last level cache bank)、高速缓存控制器、离片链路(off-chip link)、存储器控制器等等的多个非核心单元方面超出了极限。为了提供这一功能性,大量的逻辑可以出现在非核心中,即使是在插槽空闲时也是如此,这又引起了大量的动态功耗。这由于消费者和管理机构两者均要求显著减少服务器空闲功耗而引起的问题。
[0004] 附图简述
[0005] 图1是根据本发明的一种实施例的处理器的框图。
[0006] 图2是根据本发明的一种实施例的多处理器系统的框图。
[0007] 图3是根据本发明的一种实施例用于进入宏时钟门控状态(macro clock gating state)的方法的流程图。
[0008] 图4是根据本发明的一种实施例的宏时钟门控进入流(entry flow)的流程图。
[0009] 图5是根据本发明的一种实施例的宏时钟门控退出流(exit flow)的流程图。
[0010] 图6是根据本发明的一种实施例的处理器核心的框图。
[0011] 图7是根据本发明的一种实施例的系统的框图。
[0012] 详细描述
[0013] 各实施例可以在处理器插槽空闲时减少非核心动态功率,由此减少整体服务器空闲功率。尤其,各实施例可以允许“宏时钟门控”(MCG)以便允许插槽的非核心进入低功率状态,在低功率状态中,例如经由时钟门控,可以禁用非核心本身的大部分。在一些实施例中,在判断不仅包括非核心的插槽处于低功率状态而且多插槽系统的附加插槽也处于低功率状态时,可以进入这种MCG操作。
[0014] 在一种实施例中,MCG操作可以包括在确保不会丢失正在处理的事务的同时门控非核心中的大部分逻辑的时钟。在非核心中不存在剩余的正在处理的事务时,在MCG进入流的结束时,可以进入MCG状态。另外,MCG操作可以包括在外部请求或内部或外部事件发生时根据MCG退出流用最小等待时间来解控(ungate)非核心逻辑的时钟。
[0015] 现在参见图1,所示出的是根据本发明的一种实施例的处理器的框图。具体地,图1示出处理器100,该处理器100是多核心处理器且尤其适用于基于服务器的应用。如图可见,处理器100包括多个核心1100—11011。尽管在图1的实施例中被示出为带有特定数量的核心,但应理解,本发明的范围不限于此。每一核心可以与私有存储(例如一个或多个级别的高速缓存存储器)相关联。另外,每一核心被示出为经由相应的高速缓存存储体控制器1150—11511耦合到一片共享的高速缓存存储器,例如,由多片1200—12011形成的末级高速缓存(LLC)。
[0016] 如图可见,经由不同的核心和高速缓存的通信可以经由基于环的互连(ring-based interconnect)发生,基于环的互连可以是双向可缩放环互连1600、160。为了提供离片通信(off-chip communication),可以存在各种不同的端口和代理。具体地如图可见,除了存储器I/O端口175之外,可以存在多个点对点(PtP)输入/输出(I/O)端口170,该存储器I/O端口175把插槽耦合到系统存储器的本地部分,例如,动态随机存取存储器(DRAM)经由可缩放存储器互连(SMI)耦合到插槽。可以使用各种处理器代理实现高速缓存一致性协议。在一种实施例中,PtP链路可以根据 快速通道互联(QPI)协议提供通信,该协议是包括多个层的高速缓存一致性协议,这些层包括物理层、链路层和协议层。通过使用这一协议,可以在包括多个缓存代理的系统中进行一致性通信。根据本发明的一种实施例,“缓存代理”通常表示可以请求和缓存存储器数据的副本(并修改数据)的高速缓存逻辑。这样的缓存代理可以包含适合路由存储器请求的高速缓存控制器。该协议沿着低等待时间链路在经由PtP链路耦合在一起的设备之间提供通信的多个信道和虚拟网络上提供各种通信。当然,本发明的范围不限于此,且在其他实施例中,PtP链路可以是根据另一通信协议。
[0017] 如图1中进一步可见的,路由器130耦合到一对本地代理1400—1401,本地代理1400—1401又可以与相应的存储器控制器1450—1451通信。这些存储器控制器145可以依次例如经由SMI互连、经由存储器I/O端口175耦合到系统存储器的本地部分,例如,耦合到处理器的一个或多个双列直插式存储器模块(DIMM)。
[0018] 在图1的实施例中,非核心因而通常由路由器130、LLC 120、高速缓存存储体控制器115、本地代理140、系统环接口160、存储器控制器145和功率控制单元(PCU)150组成。这些单元中的每一个可以受到被称为非核心时钟的公共时钟信号时控。尽管为便于阐释未示出,但应理解,可以在非核心的时钟生成电路中生成非核心时钟。通过门控非核心的某些单元中的非核心时钟,MCG操作可以基本上实现低动态功率。在一种实施例中,在MCG模式期间,非核心的若干单元可以保持上电和活动(借助于活动时钟信号)。即,路由器130和PCU 150可以保持上电,尽管在其他实施例中可以时钟门控附加的或不同的单元。通常,路由器
130可以被配置为把传入的QPI链路分组路由到适当的片上目的地。另外,它也路由在片上单元之间发送的分组。因而,可以把从外部插槽以及I/O中枢到来的传入分组提供给路由器
130的输入端口。功率控制单元150可以包括微控制器或其他控制逻辑,以便定序和控制MCG进入进程和退出进程,并且应对诸如核心(和封装)C状态进入和退出等的其他功率管理任务。尽管借助于图1的实施例中的这种特定实现示出,但应理解,本发明的范围不限于此,且在其他实施例中多核心处理器可以具有不同的配置。
[0019] 注意,术语“设备”或“代理”是一般的,且可以被用来描述被耦合到链路的任何电组件。“链路”或“互连”通常被定义为建立用于消息(即置于预先确定的格式的信息)的通信通路的信息运载介质。链路或互连可以是有线的物理介质(例如,总线,一个或多个电线、迹线、电缆等等)或无线介质(例如,与无线信令技术组合的空气(air in combination with wireless signaling technology))。
[0020] 各实施例可以用于多种不同的系统类型。在某些实现中,系统可以是诸如具有非统一存储器体系结构(NUMA)的多处理器服务器等的多插槽系统。现在参见图2,所示出的是根据本发明的一种实施例的系统的框图。如图2中可见,系统200包括多个插槽2100—2103。每一插槽可以包括多核心处理器,例如以上参考图1所描述的,但其他实现当然是可能的。
每一插槽可以通过PtP链路耦合到其他插槽。
[0021] 如图2可见,每一处理器210通常可以称为中央处理单元(CPU)。还可见的是,对应于诸如图1的实施例等的多核心插槽或封装件的每一处理器210包括集成存储器控制器以便经由存储器互连与系统存储器230的本地部分连接。如图可见,每一处理器210x可以经由存储器互连与在各种实施例中可以被实现为DRAM的系统存储器的相应部分230x通信。为了给诸如各种外围设备等的系统的其他组件提供接口,处理器210中的每一个可以被耦合到至少一个I/O中枢。具体地,处理器2100和2102可以被耦合到I/O中枢2200,且类似地,处理器2101和2103可以被耦合到I/O中枢2201。尽管借助于在图2的实施例中的这一基础高级视图示出,但应理解,本发明的范围不限于此。
[0022] 通常,在判断多插槽系统中不仅非核心所处的插槽而且所有其他插槽都处于给定的低功率状态时,可以启动MCG进入进程。这样是因为如果仅在给定插槽处于低功率状态时允许进入MCG,则可能的情况是,事务将从其他插槽到来,使得要么不可能完成进入到MCG的进入流,要么进入MCG的耗费不值得其中非核心可以处于MCG状态的小的可能窗口。
[0023] 尤其,在一种实施例中,在经由MCG进入流准许开始进入到MCG状态之前,首先可以建立各种先决条件。首先,对于给定的插槽,所有核心都处于预先确定的低功率状态,例如,ACPI规范中的C3或C6睡眠状态。出于阐释而非限制的目的,在此相对于这些C3和C6睡眠状态描述各实施例,但也预期其他睡眠状态。一旦所有核心处于C6或C3状态,非核心中的功率控制单元将实质上试图进入被称为“封装C6”(在核心处于C6的情况中)或“封装C3”(在核心处于C3的情况中)的整个插槽的低功率空闲状态。
[0024] 作为对封装C3和封装C6进入进程的扩展,可以进入MCG状态。因而,在处于封装C6或封装C3状态的同时,MCG状态本质上是非核心空闲功率减少。然而,应注意,MCG状态可以独立于ACPI规范,这是由于当前的ACPI规范不提供这一状态。在供与不同的低功率状态一起使用的其他实施例中,应理解,MCG状态可以独立于任何操作系统(OS)功率控制进入/退出,且可以改为受诸如非核心PCU等的处理器的微控制器控制。
[0025] 作为进入到MCG状态中的另一先决条件,平台中的所有其他插槽处于(或进入到)封装C3或封装C6状态。为了允许公共低功率状态的这一状态存在,协商进程可以在各种插槽之间发生,以使得在所有插槽以及I/O中枢之间协调和商定封装C6和/或封装C3进入。
[0026] 这确保了所有插槽一起进入封装C6或封装C3,以使得MCG状态中耗费的时间最大化。作为对MCG状态的更进一步的先决条件,存储器子系统也可能已经进入在一种实施例中被称为“SMI kill”状态的低功率状态,以便指示SMI链路是不活动的。这种低功率状态确保存储器控制器和本地代理逻辑可以受到时钟门控。在已经满足这些先决条件时,在各种插槽的非核心中可以启动MCG进入流,以便尝试把每一非核心置于MCG状态。
[0027] 在一种实施例中,在MCG状态中,包括诸如高速缓存存储体控制器、本地代理、存储器控制器和系统环接口单元等的非核心单元在内的非核心的各种电路可以全都受到门控。可以在区域性时钟缓冲器级进行这种门控,由此避免了细粒度门控方案的复杂性。
[0028] 一旦满足了这些先决条件,MCG进入就可以进行。注意,由于非核心的纯粹物理尺寸,在不同的实施例中,时钟门控进程本身可以采取变化数量的非核心时钟周期(例如,在大约10-20个周期之间)。这是为了确保时钟门控信号可以到达要门控的所有单元。为了使得时钟门控进程安全地发生,可以提供各种机制。作为一个示例,非核心的每一单元可以生成空置指示符或“空”信号来指示其空置状态。这种状态因而指示相应的单元内部不具有任何正在处理的事务。可对所有非核心单元的空置一起进行逻辑与操作,以整体判断非核心的空置状态。在一种实施例中,可以在PCU中执行逻辑与,但本发明的范围不限于此。
[0029] 另外,MCG进入流可以使用一种机制来流量控制传入事务。即是说,一旦已经做出时钟门控的决定,就不应把任何新的事务发送给受到时钟门控的单元。可以通过确保阻止所有传入事务进入到受到时钟门控的单元来实现这种流控制。在一种实施例中,这种流控制机制可以位于在非核心的路由器内,以便确保阻止来自诸如各种PtP互连等的离片接口去往其他插槽(或I/O中枢)的所有事务,直到安全地完成时钟门控。作为示例,路由器可以经由离片互连把流控制信号发送给其他插槽/I/O中枢,以便限制把事务发送给插槽。
[0030] 在MCG进入流期间要使用的又一机制是确保不会因为时钟门控而失去来自带外(OOB)接口的事务。为了实现这种功能性,在一种实施例中,可以基本上不确认(NACK)寻求访问时钟门控逻辑的任何新的传入OOB事务,以使得在稍后时刻将再次尝试它们。注意,可以允许正常地进行和完成不需要访问时钟门控逻辑的OOB事务。这样的事务的一个示例是向PCU查询晶片温度。
[0031] 现在参见图3,所示出的是阐释根据本发明的一种实施例进入到MCG状态所执行的各种操作的流程图。如图3中所示出,例如在非核心的控制逻辑中,在一些实施例中该控制逻辑可以是非核心的PCU的部分,可以实现方法250。一般地,通过判断寻求进入到MCG状态是适当的,并在判断非核心已经持续多个确定量的时间为空(这可以对应于各种计时器超时)时采取动作来进入到该状态,可以进行方法250。如图3中可见,通过判断所有插槽处于或正在进入低功率插槽状态,例如诸如C3或C6封装状态等的给定的C状态,方法250可以开始(框255)。这种判断可以基于在平台的插槽之间的协商的结果。接下来,可以判断,非核心为空(框260)。即是说,这种判断意味着在非核心的各种单元内不存在待决事务,这可以通过对来自非核心的所有逻辑单元的空信号进行逻辑与来标识。接下来,可以阻止OOB信道上的事务(框265)。下面将进一步讨论阻止MCG事件期间接收这样的事务的各种机制。然后,控制转到框270,框270中可以判断非核心是否仍然为空。
[0032] 在这一判断有效时,控制转到框275,框275中可以阻止传入事务从诸如被连接到插槽的各种PtP互连等的离槽信道进来。再次在280框,可以判断非核心仍然为空。这因而是不存在待决事务的指示,且进入MCG状态是适当的。因此,控制转到框285,在框285中可以时钟门控各种非核心单元。下面将进一步讨论用于执行这种时钟门控的不同机制。最终,在框290,可以更新非核心时钟门控状态以便指示非核心处于MCG状态,且此外,此时可以允许OOB信道上的事务。即是说,因为非核心现在处于时钟门控状态,允许这样的事务,以使得在需要非核心逻辑来应对OOB事务时,可以退出MCG状态。尽管在图3的实现中借助于这一高的级别示出,但应理解本发明的范围不限于此。例如,尽管借助于线性流示出,但应理解,在流期间各点处非核心空置的判断可以引起重启MCG进入流,或引起重新尝试某些操作。
[0033] 现在参见图4,所示出的是依照根据本发明的一种实施例的MCG进入流的操作的流程图。如图4中所示出,方法300可以由例如在非核心的PCU内的MCG逻辑实现。注意,在作为MCG进入前的条件,在框310可以判断,封装中的所有核心都处于所选择低功率状态,且对所有处理器插槽也是如此(或处于进入到所选择的低功率状态的进程中)。另外,可以判断,被耦合到处理器的存储器也处于低功率状态,例如自刷新状态,如低功率存储器互连状态(例如,活动SMI kill信号)所指示的。
[0034] 在这种情况下,已经建立了进入到MCG状态的条件。因此,可以执行MCG进入的第一阶段。首先,在菱形315可以判断非核心是否为空。如果是,则控制转到框320,框320中可以清空OOB接口并设置各种控制信号,伴随着计时器初始化(框320)。尤其,在这种第一阶段中,设置被称为“NACK允许”的位以便强制OOB接口开始NACK寻求访问即将被时钟门控的逻辑的所有事务,且清空寻求这样的访问的所有正在处理的OOB事务(例如,通过根据期望应对事务)。在一种实施例中,OOB接口具有被称为“NACK请求”的信号,该信号在被断言时可以强制MCG退出。此时也禁用这种信号的断言。然后,在被称为空持续时间的特定可编程量的时间内连续地采样空非核心,以便确保非核心持续为空。可以由被称为持续计时器的计时器来跟踪这段时间,该计时器因而在这一框320处初始化。持续计时器的长度可以是可编程的,且在一种实施例中可以是在大约50至1000个周期之间。在一种实施例中,这种计时器和要讨论的其他计时器可以存在于PCU中。
[0035] 一旦这一时间周期结束且非核心空状态信号已经在整个空持久性时间内保持断言而没有任何去断言事件(甚至持续了单个非核心时钟周期),如在菱形325所判断的,触发MCG进入流的第二阶段。注意,如果在第一阶段期间的任何瞬时去断言采样这一非核心空信号,则放弃进入进程且复位OOB NACK启用(借助于在菱形330和框335指示的流)。
[0036] 在这一第二阶段,且假定,在菱形340处判断非核心仍然为空,则控制转到框350,框350中可以允许流控制机制。尤其,可对QPI链路进行流控制,并阻止其在超过路由器输入端口的任何新分组中发送。在这一阶段,也在被称为“清空时间”特定可编程量的时间中,连续地采样非核心空信号。这段时间可以由称为“清空计时器”的计时器来跟踪。清空计时器的长度可以是可编程的,且在一种实施例中可以是在大约50和1000个周期之间。该第二阶段本质上允许恰在流控制信号被断言之前到达的任何正在处理的事务安全地进行并最终去断言非核心空信号。注意,这种传入信号引起非核心空信号的去断言且因而引起整个MCG进入流重启。一旦这一时间周期结束且非核心空状态信号已经保持断言,持续了整个“清空时间”而即使持续单个非核心时钟周期也没有任何去断言事件(如棱形360和375中所判断为肯定的),那么,触发第三阶段。如果在第二阶段期间任何瞬间去断言地采样非核心空状态信号(如在菱形365或375所判断的),则放弃进入进程且复位NACK启用,且去断言QPI链路流控制(在框370和335)。
[0037] 在MCG进入流的这一第三和最终阶段中,在框380主张实际的时钟门控信号。另外,为了适应时钟门控信号到达相对远离时钟门控信号生成的单元的传播延时,开始“时钟门控”计时器,且在这一计时器过期时认为时钟门控已完成。时钟门控计时器的长度可以是可编程的,且在一种实施例中可以是在大约10和30个周期之间。一旦这一计时器过期(如在菱形385所判断的),MCG进入就被看作已经完成,且在框390设置被称为“非核心时钟门控”的状态信号。一旦设置了这一状态信号,则OOB接口可以通过断言“CLK Req”信号强制MCG退出(且因而把系统返回到时钟解控)。注意,仅在设置了“非核心时钟门控)状态信号的同时(即,仅在时钟被门控时),“CLK Req”信号具有相关性。也在框390,也去断言“NACK启用“信号。因而,此时,非核心可以处于MCG低功率状态,这种状态下除了路由器和PCU之外的所有非核心单元都被时钟门控,因而减少了动态功率消耗。非核心可以保持这种状态,直到给定事件或发生触发退出。
[0038] 一般地,可以因多个条件中的一个而发生从时钟门控或MCG状态退出。在一种实施例中,第一条件可以是在经由进入到路由器输入端口的QPI链路中的一个接收到新事务时(路由器输入端口又引起非核心空信号的去断言)。且第二条件可以是在接收到使用不具有非核心时钟的单元的新OOB事务且因而引起“OOB Clk Req”信号的断言时。
[0039] 现在参见图5,所示出的是根据本发明的一种实施例的MCG退出流的流程图。如图5中所示出,在一种实施例中,可以类似地经由PCU的MCG控制逻辑实现退出流400。如图5中可见,方法400可以在MCG状态为活动(换句话说,非核心时钟门控状态信号为活动)时发生(框410)。然后,在菱形420可以判断非核心是否为空,且还没有主张时钟请求。如果是,则非核心保持MCG状态。否则控制转到框430。在框430,可以去断言时钟门控启用信号,且可以启动时钟解控计时器可以被启动。另外,可以使得非核心时钟门控状态信号失效。注意,时钟解控进程可以占用要实现的特定量的时钟周期。这种解控时间可以被称为“时钟解控”时间。
在一种实施例中,可以使用“时钟解控”计时器跟踪这种时间间隔。时钟解控计时器的长度可以是可编程的,且在一种实施例中可以是在大约10至30个周期之间。尽管本发明的范围不限于此,但一旦这计时器过期(如在菱形440中所判断的),可以去断言链路流量控制信号,且复位“非核心时钟门控”信号(在框450)。这移除了对Clk Req信号的需求,这是由于OOB接口现在可以访问非核心的所有单元而不受任何限制。尽管在图5中的实施例借助于这种特定实现示出,但应理解,本发明的范围不限于此。
[0040] 各实施例可以用于带有变化的核心体系结构的多核心处理器。现在参见图6,所示出的是根据本发明的一种实施例的处理器核心的框图。如图6中所示出,处理器核心500可以是多级管线化乱序处理器,且可以是存在的多个核心中的一个,且在关联的非核心开始MCU进入流之前可以处于更低的功率状态(例如,C3或C6状态)。
[0041] 如图6中可见,核心500包括前端单元510,前端单元510可以被用来取出要执行的指令和准备它们以供稍后在处理器中使用。例如,前端单元510可以包括取出单元501、指令高速缓存503和指令解码器505。在一些实现中,前端单元510还可以包括追踪高速缓存以及微代码存储和微操作存储。取出单元501可以例如从存储器或指令高速缓存503取出宏指令,并把它们送入到指令解码器505以便把它们解码成原语,即,供处理器执行的微操作。
[0042] 被耦合在前端单元510和执行单元520之间的是乱序(OOO)引擎515,该乱序引擎515可以被用来接收微指令和准备它们以供执行。尤其,OOO引擎515可以包括各种缓冲器以便重新排序微指令流并分配执行所需要的各种资源,并且以把逻辑寄存器的重命名提供给在诸如寄存器文件530和扩展寄存器文件535等的各种寄存器文件内的存储位置。寄存器文件530可以包括用于整数和浮点数操作的单独的寄存器文件。扩展寄存器文件535可以提供用于矢量大小的单元的存储,例如,每寄存器256或512比特。
[0043] 各种资源可以存在于执行单元520中,包括例如各种整数、浮点数和单指令多数据(SIMD)逻辑单元,以及其他专用硬件。例如,这样的执行单元可以包括一个或多个算术逻辑单元(ALU)522,以及其他这样的执行单元。
[0044] 来自执行单元的结果可以被提供给退隐逻辑(retirement logic),即重新排序缓冲器(ROB)540。尤其,ROB 540可以包括各种阵列和逻辑以便接收与所执行的指令相关联的信息。然后,ROB 540检查这一信息以便判断指令是否被有效退隐并将所得数据提交给处理器的体系结构状态,或者是否发生了阻止指令的适当退隐的一个或多个异常。当然,ROB 540可以应对与退隐相关联的其他操作。
[0045] 如图6中所示出,ROB 540被耦合到高速缓存550,在一种实施例中,高速缓存550可以是低级高速缓存(例如,L1高速缓存),但本发明的范围不限于此。而且,执行单元520可以直接地耦合到高速缓存550。离开高速缓存550,可以与更高级的高速缓存、系统存储器等等发生数据通信。尽管图6的实施例中借助于这种高的级别示出,但应理解,本发明的范围不限于此。例如,尽管图6的实现是关于诸如所谓的x86指令集体系结构(ISA)的机器等的乱序机器,但本发明的范围不限于此。相反,各核心可以被实现为有序处理器、诸如基于ARM的处理器等的精简指令集计算(RISC)处理器或可以经由仿真引擎和关联的逻辑电路仿真不同ISA的指令和操作的另一类型的ISA的处理器。
[0046] 各实施例可以在多种不同的系统类型中实现。现在参见图7,所示出的是根据本发明的一种实施例的系统的框图。如图7中所示出,多处理器系统600是点对点互连系统,且包括经由点对点互连650耦合的第一处理器670和第二处理器680。如图7中所示出,处理器670和处理器680中的每一个都可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心674a和处理器核心674b以及处理器核心684a和处理器核心684b),但潜在地多得多的核心可以存在于处理器中。另外,每一处理器可以包括非核心675和非核心685,以执行根据本发明的一种实施例的MCG流。
[0047] 仍然参见图7,第一处理器670还包括存储器控制器中枢(MCH)672以及点对点(P-P)接口676和点对点(P-P)接口678。类似地,第二处理器680包括MCH 682以及P-P接口686和P-P接口688。如图7中所示出,MCH 672和682把处理器耦合到各自的存储器,即存储器632和存储器634,这些存储器可以是本地附加到各自的处理器的系统存储器(例如,DRAM)的部分。第一处理器670和第二处理器680可以分别经由P-P互连652和P-P互连654耦合到芯片组690。如图7中所示出,芯片组690包括P-P接口694和P-P接口698。
[0048] 此外,芯片组690包括接口692以便通过P-P互连639把芯片组690与高性能图形引擎638耦合。芯片组690又可以经由接口696耦合到第一总线616。如图7中所示出,各种输入/输出(I/O)设备614可以被耦合到第一总线616,把第一总线616耦合到第二总线620的总线桥618也是如此。在一种实施例中,各种设备可以耦合到第二总线620,这些设备包括例如键盘/鼠标622、通信设备626和诸如盘驱动器或其他大容量存储设备等的可以包括代码630的数据存储单元628。进一步,音频I/O 624可以耦合到第二总线620。各实施例可以被合并到包括诸如智能蜂窝式电话、平板计算机、上网本等等的移动设备的其他类型的系统。
[0049] 各实施例可以以代码实现且可以被存储在其上存储有可以被用来编程系统以执行指令的指令的存储介质上。存储介质可以包括但不限于任何类型的非瞬态存储介质,例如盘(包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁-光盘)、半导体设备(例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁或光卡)或适用于存储电子指令的任何其他类型介质。
[0050] 尽管已经相对于有限数量的实施例描述了本发明,但本领域中的技术人员明白源于其的众多修改和变更。预期所附权利要求覆盖落在本发明的真实精神和范围内的所有这样的修改和变更。