CN104156055A - 配置在多重处理器核心之间的分散式电源管理 - Google Patents
配置在多重处理器核心之间的分散式电源管理 Download PDFInfo
- Publication number
- CN104156055A CN104156055A CN201410408615.8A CN201410408615A CN104156055A CN 104156055 A CN104156055 A CN 104156055A CN 201410408615 A CN201410408615 A CN 201410408615A CN 104156055 A CN104156055 A CN 104156055A
- Authority
- CN
- China
- Prior art keywords
- core
- state
- square
- cores
- wafer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Microcomputers (AREA)
- Power Sources (AREA)
Abstract
一种多核心处理器提供由两个以上的核心所共用的可配置的资源,其中资源的组态影响共享资源的核心利用其能够运作的电源、速度或效率。内部核心电源状态管理逻辑设定每个核心的组态以参与一分散式核心间电源状态发现过程,用以发现对于共用资源而言是一种最受限制的或最节能型的状态的复合目标电源状态,其将不会干涉共享资源的每个核心的任何一个相对应的目标电源状态。内部核心电源状态管理逻辑决定核心是否为被授权以设定资源的组态的一管理者核心,且若有,设定在发现的复合电源状态中的该资源的组态。分散式电源状态发现过程是在旁路的非系统总线线上的核心之间被实现,而无须集中式非核心逻辑的协助。
Description
本申请为申请日为2011年12月22日、申请号为201110436098.1的发明名称为“配置在多重处理器核心之间的分散式电源管理”的申请案的分案申请。
技术领域
本发明涉及多核心微处理器设计的领域,特别是涉及多核心的特定操作及多核心处理器的多核心域(domain)的管理与实现。
背景技术
现代微处理器减少它们的电源消耗的主要方式,是减少微处理器操作时的频率和/或电压。此外,在某些实例中,微处理器可能允许时钟信号对于其电路的多个部分禁能。最后,在某些实例中,微处理器可能对于其电路的多个部分一起移除电源。再者,有时候微处理器需要尖峰性能,使其需要于其最高电压及频率下操作。微处理器采取电源管理动作以控制微处理器的电压与频率电平以及时钟与电源禁能。基本上,微处理器因应来自操作系统的指导(direction)而采取电源管理的动作。熟知的x86 MWAIT指令为一种让操作系统执行以要求进入至一个与实际状况相关的最佳化状态的实例,操作系统可使用此状态以执行进阶的电源管理。最佳化状态可能是休眠(sleeping)或闲置(idle)状态。熟知的进阶配置电源接口(ACPI)规格,是藉由界定操作或电源管理相关的状态(例如"C-状态"及"P-状态")以方便操作系统导向(operating system-directed)的电源管理。
因为多数的现代化微处理器为多核心处理器,其中许多处理核心共用一个或多个电源管理相关的资源,所以执行电源管理动作是复杂的。举例而言,多个核心可能共用电压源和/或时钟源。再者,包含一多核心处理器的计算系统亦基本上包含一晶片组,其包含多个用以桥接处理器总线至系统的其他总线(例如,至周边I/O总线)的总线桥,并包含一个做为多核心处理器与系统存储器的接口的存储器控制器。晶片组可密切地参与各种电源管理动作,且在本身与多核心处理器间可能需要协调机制。
更明确而言,于某些系统中,在多核心处理器的允许下,晶片组可能禁能一个处理器总线上的时钟信号,处理器接收并使用此时钟信号以产生其本身的内部时钟信号的大部分。在多核心处理器的情况下,所有使用总线时钟的核心必须准备让晶片组禁能其总线时钟。亦即,直到所有核心准备好之后,晶片组才被允许禁能总线时钟。
再者,在正常情形下,晶片组会窥探(snoop)处理器总线上的快取存储器。举例而言,当一周边装置于一周边总线上产生一存储器存取时,晶片组会将此存储器存取传送至处理器总线上,俾能使处理器可窥探其快取存储器以判定其是否持有(hold)所窥探地址的数据。举例而言,众人皆知USB装置会定期轮询存储器位置,这会于处理器总线上产生周期性的窥探循环(snoop cycle)。在某些系统中,多核心处理器可能进入一深休眠状态,此时将清除其快取存储器的内容且禁能快取的时钟信号以便节省电源。于此情况下,对多核心处理器而言,为了因应处理器总线上的窥探循环以窥探其快取(因为它们是空的,所以永远不会传回击中(hit)讯息)而被唤醒,然后再回到休眠状态无疑是种浪费。因此,在多核心处理器的允许下,晶片组可被授权不要产生处理器总线上的窥探循环以达成额外的电源节约。然而,必须再次提醒的是,所有的核心必须准备好之后晶片组才能关闭窥探功能,亦即晶片组不能关闭窥探功能,除非所有核心皆准备好才行。
发证给Naveh等人(以下以Naveh代表)的美国专利第7,451,333号揭示一种包含多重处理核心的多核心微处理器,每一个核心能检测一个要求核心转变成一闲置状态的命令。多核心处理器亦包含硬件协调逻辑(HardwareCoordination Logic,HCL),HCL接收来自核心的闲置状态状况,并基于命令与核心的闲置状态状况来管理核心的电源消耗。更明确而言,HCL决定是否所有核心已检测一项要求转换至一共通状态的命令。如果不是的话,则HCL选择在命令的闲置状态间的一最浅状态(shallowest state)以作为每个核心的闲置状态。然而,如果HCL检测一项要求转换成一共通状态的命令,则HCL可以启动共用的电源节约特征,例如性能状态减少(performancestate reduction)、一共用的锁相回路(PLL)的关闭、或处理器的执行情况的节省。HCL亦可防止外部中断(break)事件传送到达核心,以将所有核心转变成共通状态。此外,HCL可与晶片组实施一交握顺序(handshakesequence)以将核心转变成共通状态。
在由Alon Naveh等人所写的论文中,名称为"英特尔酷睿核心处理器中的电源及热管理(Power and Thermal Managment in the Intel Core DuoProcessor)",其出版于2006年5月15日发行的英特尔科技期刊中,Naveh等人说明一种使用设置于晶片或平台的共用区域中的非核心硬件协调逻辑(HCL)的相容C-状态控制结构,作为在个别核心与晶片及平台上的共用资源间的一层。HCL基于核心的个别需求决定所需要的CPU的C-状态、控制共用资源的状态、并模仿一传统的(legacy)单核心处理器利用晶片组实现C-状态的进入协定。
在由Naveh参考文献两者所揭示的机制中,HCL是集中在核心外部的非核心逻辑,并代表所有核心执行电源管理的操作。然而这种集中化非核心逻辑解决方法有其弊病,特别是在HCL被要求包含在与核心相同的晶片时,过大的晶片尺寸将是难以令人接受的,尤其对希望在晶片上包含更多核心的架构下,这个弊病将更加明显。
发明内容
在本发明的一个实施样态中,提供一种多核心处理器,其包含多个实体处理核心以及在每个核心中的核心间状态发现微码单元,核心间状态发现微码单元可使核心参与一分散式核心间电源状态发现过程。与此相关的,是一提供发现一多核心处理器的电源状态的分散式电源管理实现方法,此多核心处理器包含参与一分散式核心间状态发现过程的至少两个核心。核心间状态发现过程是经由在每个参与核心上执行的微码、以及通过旁路非系统总线通讯配线在核心之间交换的信号的组合而被实现。发现过程是不通过任何集中式非核心逻辑。此外,在多数实施例中,核心间状态发现过程是依据一种使用链锁式核心间通讯的适当的或选择的阶层式协调系统而被实现。
在其他实施样态中,提供核心间状态发现过程是提供微处理器组态,包含促使核心启动及多少核心被启动的资源的利用率与分布、以及微处理器的阶层式协调构造与系统,包含域与域主识别的确认。
在本发明的另一实施样态中,提供一种多核心处理器,其包含多个已启动的实体处理核心以及一由两个以上的核心共用的可配置的资源,其中资源的组态影响共享资源的核心利用其能够操作的电源、速度或效率。对每个核心而言,处理器还包含设定每个核心的组态的内部核心电源状态管理逻辑,用以参与在核心之间被实现的一种分散式核心间电源状态发现过程,而无须集中式非核心逻辑的协助。如果核心为了设定共用资源的组态与复合目标电源状态是经由分散式核心间电源状态发现过程被发现的目的而被指定为一管理者核心,则内部核心电源管理逻辑设定核心的组态以驱使设定共用资源的组态的一复合目标电源状态的实现。对共用资源而言,复合目标电源状态为一种最节能型的电源状态,其将不会干涉共享资源的每个核心的任何对应的目标电源状态。
在一个相关的实施样态中,提供一种供一多核心处理器用的管理电源状态的分散方法。一核心接收影响其本身及至少一其他核心之间所共用的一可配置的资源的一目标电源状态,其中目标电源状态定义将影响共享资源的核心利用其能够运作的电源、速度或效率的资源的组态。核心参与一核心间电源状态发现过程,其包含不通过任何集中式非核心逻辑而与共享该资源的至少一其他核心的电源状态的交换。如果核心为了设定共用资源的组态与复合目标电源状态是经由分散式核心间电源状态发现过程而被发现的目的而被指定为一管理者核心,则核心驱使用以设定共用资源的组态的复合目标电源状态的实现。
在又另一实施样态中,本发明提供一多核心处理器。多核心处理器的每个核心包含电源状态管理微码,用以设定该核心的组态以参与一分散式核心间复合电源状态发现过程。电源状态管理微码可使每个核心接收一状态转变要求,用以依据多个预定电源状态(包含一主动操作状态及一个或多个渐进地较不敏感的状态)的任何要求的目标的其中一个设定其成为本身的组态。当一核心接收一要求以转变成为一受限制的电源状态(例如会干涉由其他核心所共用资源的一电源状态)时,则其电源状态管理微码启动一分散式核心间复合电源状态发现过程,用以决定是否所有其他受影响的核心已做好该受限制的电源状态的准备。
如果参与发现过程的核心确认受限制的电源状态为复合电源状态,则核心中的被授权者经由其电源状态管理微码实现或启动受限制的电源状态的植入。具体言之,授权核心将实现最限制的或节能型的操作状态,其可藉由核心而被实现,而不会干涉其他核心的对应的目标操作状态。
在另一实施样态中,每个核心的电源管理微码的一部分或常式为同步逻辑,其被组态而被设计成用以与其他以节点地连接(nodally connected)的核心交换电源状态信息来决定混合电源状态。同步逻辑的每个被唤起的实例(invoked instance)是被设计成至少有条件地在尚未同步节点地连接的核心(其为节点地连接至本身的核心,且同步逻辑的一同步化实例尚未被唤起)中产生同步逻辑的从属实例,以作为一复合电源状态发现过程的一部分。
于一实施例中,核心的电源管理微码是被设计成无须启用其同步逻辑的一本地实例即可实现一目标电源状态,如果核心的目标电源状态并非一种需要与其他核心协调的受限制的电源状态核心。否则,电源管理逻辑设定核心的组态以实现目标电源状态的非限制实施样态或一附属电源状态的非限制实施样态(例如在核心上的局部电源节约动作),且唤起其同步逻辑的一本地实例,做为受限制的电源状态所应用到的核心的最大域开始复合电源状态发现过程。在发现对应到目标受限制的电源状态的一复合电源状态中,被授权以实现复合电源状态的一核心电源管理微码启动(典型上是具最大影响范围的管理者核心)和/或进行复合电源状态的实现。
在另一实施样态中,本发明提供一种供一多核心处理器(例如上述的处理器)使用的管理电源的分散方法。此方法包含接收针对任一核心的一状态转变要求,以依据一目标电源状态设定该核心("本地核心")的组态。如果目标电源状态为一受限制的电源状态,则执行于本地核心上的电源管理逻辑实施同步逻辑的一本地实例以启动一分散式核心间复合电源状态发现过程,以使此核心与其他核心交换电源状态。此方法还包含评估发现的电源状态,以及有条件地回应受限制的电源状态的实现或启动。
同步逻辑的每个本地实例产生在一个或多个节点地连接核心上的同步逻辑的一个或多个从属实例,这些从属实例是依序操作,以产生它们的同步逻辑的额外从属实例。同步逻辑的每个实例决定至少一混合电源状态,及递归地(除非由一终止条件所终止,如果有的话)在同步逻辑的尚未同步的节点地远端核心上更进一步的唤起从属实例逻辑,直到可能被影响的域中的每一个核心都有同步逻辑的同步实例为止。在发现复合电源状态等于受限制的电源状态时,于一授权核心上执行电源管理逻辑以启动和/或加以实现。
在又另一实施样态中,本发明提供微码,其被编码在包含分散式核心间状态发现与上述电源管理逻辑的多核心处理器的实体核心的计算机可读取的储存媒体中。
附图说明
图1为显示一计算机系统的一个实施例的方块图,计算机系统执行分配在一双晶片四核心微处理器的多重处理核心之间的分散式电源管理。
图2为详细显示图1的代表的其中一个核心的方块图。
图3为显示执行分配在多核心微处理器的多重处理核心之间的分散式电源管理的一系统的一电源状态管理常式的一个实施例的藉由一核心的操作的流程图。
图4A-图4C为显示整合至图3的系统的复合电源状态发现过程的一电源状态同步常式的一个实施例的藉由一核心的操作的流程图。
图5为显示一唤起与重新开始常式以因应从一休眠状态将其唤醒的一事件的一个实施例的藉由一核心的操作的流程图。
图6为显示一核心间中断处理常式以因应接收一核心间中断的藉由一核心的操作的流程图。
图7为显示依据图3至6的说明的一复合电源状态发现过程的操作的一例子的流程图。
图8为显示依据图3至6的说明的一复合电源状态发现过程的操作的另一个例子的流程图。
图9为显示一计算机系统的另一实施例的方块图,计算机系统执行分配在一种八核心微处理器(其在单一封装体上具有四个双核心晶片)的多重处理核心之间的分散式电源管理。
图10A-图10C为显示整合至图9的系统的一复合电源状态发现过程的一电源状态同步常式的一个实施例的藉由一核心的操作的流程图。
图11为显示一计算机系统的另一实施例的方块图,计算机系统执行分配在一种八核心微处理器的多重处理核心之间的分散式电源管理,八核心微处理器具有四个双核心晶片,其使用图10的电源状态同步常式而分配在两个封装体上。
图12为显示一计算机系统的另一实施例的方块图,计算机系统执行分配在一种八核心微处理器的多重处理核心之间的分散式电源管理,依据一较深的阶层式协调系统,八核心微处理器像图11具有四个双核心晶片,但其核心不像图11而是彼此相互关连的。
图13A-图13D为显示整合至图12的系统的一复合电源状态发现过程的一电源状态同步常式的一个实施例的藉由一核心的操作的流程图。
图14为显示一计算机系统的另一实施例的方块图,计算机系统执行分配在一种八核心微处理器的多重处理核心之间的分散式电源管理,依据一较深的阶层式协调系统,八核心微处理器像图9在单一封装体上具有四个双核心晶片,但其核心不像图9而是彼此相互关连的。
图15为显示一计算机系统的另一实施例的方块图,计算机系统执行分配在一种八核心微处理器(其在单一封装体上具有两个四核心晶片)的多重处理核心之间的分散式电源管理。
图16为显示一计算机系统的又另一实施例的方块图,计算机系统执行分配在一种八核心微处理器的多重处理核心之间的分散式电源管理。
图17A-图17C为显示整合至图16的系统的一复合电源状态发现过程的一电源状态同步常式的一个实施例的藉由一核心的操作的流程图。
图18为显示一计算机系统的又另一实施例的方块图,计算机系统执行分配在一种双核心、单一晶片微处理器的核心之间的分散式电源管理。
图19为显示一计算机系统的又另一实施例的方块图,计算机系统执行分配在具有两个单核心晶片的一种双核心微处理器的核心之间的分散式电源管理。
图20为显示一计算机系统的又另一实施例的方块图,计算机系统执行分配在具有两个单核心、单一晶片封装体的一双核心微处理器的核心之间的分散式电源管理。
图21为显示一计算机系统的又另一实施例的方块图,计算机系统执行分配在一种八核心微处理器的核心之间的分散式电源管理,八核心微处理器具有两个封装体,其中一个具有三个双核心晶片,而其另一个具有单一双核心晶片。
图22为显示一计算机系统的又另一实施例的方块图,计算机系统执行分配在一种八核心微处理器的核心之间的分散式电源管理,八核心微处理器类似于图21,但具有一较深的阶层式协调系统。
图23为显示在一核心上实现的操作状态同步逻辑的另一实施例的流程图,其支持一种域区别的(domain-differentiated)操作状态层次协调系统且对于不同的域深度是可计量的。
附图符号说明
P、P1-P8:接脚
100、900、1100、1200、1400、1500、1600:计算机系统
102、902、1202、1402、1502:多核心微处理器/封装体
104:单核心晶片/封装体
106:核心
108:接触垫
112:核心间通讯配线
114:晶片组
116:总线
118:通讯配线
202:指令快取
204:指令译码器
206:微序列器
207:微码存储器
208:微码
212:注册别名表(RAT)
214:保留站
216:执行单元
218:撤退单元
222:数据快取
224:总线接口单元(BIU)
226:锁相回路(PLL)
228:BSP指示器
232:管理者指示器
234、236:CSR
238:特别模块寄存器(MSR)
242:核心时钟信号
1102:四核心微处理器
1133:封装体间通讯配线
1201:第二封装体
1504:晶片
1602:多核心微处理器
1802、1902、2002:双核心微处理器
2202:八核心处理器
2300:逻辑
2302:sync_state
具体实施方式
于此所说明的为藉由使用固有的且被复制在每个核心上的分散式分配逻辑,用以协调、同步、管理以及实现一多核心处理器上的电源、休眠或操作状态的系统与方法的实施例。在说明表示详细的实施例的每一张图之前,先将本发明的更一般的适用概念介绍于下。
I.多层多核心处理器概念
如于此所使用的,一种多核心处理器通常表示一个包含多个启动的实体核心的处理器,每个启动的实体核心被设计成用以提取、解码并执行遵循一指令集架构的指令。一般而言,多核心处理器是藉由一系统总线(最后由所有核心所共用)而耦接至一晶片组,藉以提供至周边总线到达各种装置的存取操作。在某些实施例中,系统总线为一前端总线,其为从处理器至其余计算机系统的一外部接口。在某些实施例中,晶片组亦对一共用的主存储器以及一共用的图形控制器进行集中存取。
多核心处理器的核心可能被封装在包含多重核心的一个或多个晶片中,如说明于申请案序号61/426,470的段落中,其申请日为2010年12月22日,名称为"多核心处理器内部旁路总线(Multi-Core Processor InternalBypass Bus)",以及其同时申请的正式(nonprovisional)申请案(CNTR.2503),其是于此并入作参考。如于其中所提出的,一种典型的晶片为已被切成或切割为单一物理实体的一片半导体晶圆,且一般具有至少一组的实体I/O接触垫。例如,某些双核心晶片具有两组I/O接触垫,每一组供其核心的每一个使用。其他双核心晶片具有单一组的I/O接触垫,其是在其双核心之间被共用。某些四核心晶片具有两组I/O接触垫,一组供两组双核心的每一个用。多重组态是可能的。
再者,一种多核心处理器亦可能提供一种承载多重晶片的一封装体。一种"封装体"为上面置放或安装有晶片的一基板,此"封装体"可能提供单一组的接脚,以供连接至一主机板以及相关的处理器总线。封装体的基板包含将晶片的接触垫连接至封装体的共用接脚的连线网或布线(wire nets ortraces)。
更进一步的分层的层次是可能的。举例而言,在封装体与位于下方的主机板之间可提供一个额外的层板(以下称为平台(platform)),而多个封装体设置于此平台上。平台可能像上述的封装体,其包含一个基板,此基板具有连接每个封装体的接脚与平台的共用接脚的连线网或布线。
应用上述概念,在一实施例中,一种多封体装处理器可视为将N2个封装体设置在一平台上,每个封装体具有N1个晶片,且每个晶片具有N0个核心。于此数字N2、N1以及N0每个大于或等于1,且N2、N1以及N0的至少一者大于或等于2。
II.核心间传输结构
如上所述,非核心但晶片上的硬件协调逻辑(HCL)的使用以实现要求核心间协调的限制活动的一些缺点,包含更复杂的、较不对称的且较低良率的晶片设计以及缩放挑战(scalling chanllenge)。一替代方式是藉由使用晶片组本身来执行所有这种协调,但这种方式极可能需要在每个核心与系统总线上的晶片组间进行传输,以便传递适合数值给晶片组。这种协调基本上亦需要经由例如BIOS的系统软件来实现,但这种做法对制造商而言是有所限制或根本无法控制的。为了克服两种习知方法的缺点,本发明的某些实施例利用在多核心处理器的核心间的旁路连接。这些旁路连接并未连接至封装体的实体接脚;因此,它们不会传送信号至封装体外部;经由它们交换的通讯也不会要求系统总线上的对应的传输。
举例而言,如说明于CNTR.2503,每个晶片可能提供一条在晶片核心间的旁路总线,旁路总线并未连接至晶片的实体接触垫;因此其并未传送信号离开双核心晶片。旁路总线亦提供核心间的信号的品质改善,并可使核心彼此的传递或协调无须使用系统总线。多重变化亦在考量之内。举例而言,如说明于CNTR.2503一案中,一种四核心晶片可能提供一条在两组双核心间的旁路总线。或者,如说明于以下的一个实施例,一种四核心晶片可能在一晶片的两组核心的每一个之间提供旁路总线,以及在从两组所选择的核心间提供另一条旁路总线。在另一实施例中,一种四核心晶片可能提供在每一个核心间的核心间旁路总线,如下图16所述。又,在另一实施例中,一种四核心晶片可能在第一与第二核心、第二核心与第三核心、第三与第四核心以及第一与第四核心之间的核心间提供旁路总线,而无须提供在第一与第三核心之间或在第二与第四核心之间的核心间旁路总线。一种类似的旁路组态(即使所述者是分配在两个双核心晶片上的核心间)揭示于申请案序号61/426,470的段落中,申请日为2010年12月22日,名称为"共用电源对多核心微处理器的分配式管理(Distributed Management of a Shared PowerSource to a Multi-Core Microprocessor)",以及其同时申请的非临时(nonprovisional)申请案(CNTR.2534),亦于此并入作参考。
又,本发明考虑到比CNTR.2503的旁路总线较不广泛的核心间通讯配线组,例如说明于申请案序号61/426,470的段落中的替代实施例,申请日为2010年12月22日,名称为"光罩设置修改以产生多核心晶片(Reticle SetModification to Produce Multi-Core Dies)",以及其同时申请的非临时(nonprovisional)申请案(CNTR.2528),亦于此并入作参考。核心间通讯配线的一种较不庞大的例子是显示于CNTR.2534,亦于此并入作参考。核心间通讯配线组在包含配线的数目上要尽可能小,只要能用以启动如于此所说明的协调活动即可。构筑在核心之间的核心间通讯配线,亦可能依一种类似于以下更进一步说明的晶片间通讯线的方式被设计或配置在核心之间。
再者,一封装体可能提供在一封装体晶片片间的晶片间通讯线,而一平台可能提供在平台的封装体间的封装体间通讯线。如以下将更完全说明的,晶片间通讯线的实施可能需要每个晶片上的至少一额外实体输出接触垫。同样地,封装体间通讯线的实施可能需要每个封装体上的至少一额外实体输出接触垫。又,如以下更进一步说明的,某些实施例提供超过一最低限度足够数目的输出接触垫的额外输出接触垫,用以在协调核心中提供更大的弹性。为了让各种可能的核心间通讯得以实施,较好的方式是他们都不需要任何一个核心外部的主动逻辑(active logic)。如此,本发明各种实施例可通过使用一种非核心HCL或其他主动非核心逻辑以协调核心的实施方式,来提供本发明于此所述的优点。
III.阶层式概念
再次重申,本发明的说明除非另有规定,否则并未受限于多核心多处理器的数个实施例,其提供旁路通讯配线且通过系统总线优先使用这种配线以协调核心,以便实施或允许某些构造或限制活动的实施。在许多实施例中,这些实体实施方式是与阶层式协调系统相互搭配,以执行所需的硬件协调。于此所说明的某些阶层式协调系统是非常复杂的。举例而言,图1、9、11、12、14、15、16、18、19、20、21以及22描述各种阶层式协调系统的多核心处理器实施例,其是架构并用来促进例如电源状态管理的核心间协调活动。此说明书亦提供数个对阶层式协调系统的更深入且抽象的特性记述,以及甚至更详尽且复杂的阶层式协调系统的例子。因此,在进入用以启动一构造或限制活动的实施的核心间协调过程的特定实例的说明前,先说明于此考虑到的各种阶层式协调系统的各种实施样态是有益的。
如于此所使用的,一种阶层式协调系统表示一种为了某些恰当或预定活动或目的,将核心设计成以一种至少局部受限或组织的阶层式方式而彼此协调的系统。这种架构即与一相等的点对点(peer-to-peer)协调系统有所区别,因为其中的每个核心皆享有同等特权,并可直接与任何其他核心(以及与晶片组)协调以执行一恰当活动。举例而言,节点树架构下的核心是在某些具限制的活动下,仅与上层或下层的节点连接核心进行协调,其中的任两个节点间只存在有一条单一路径,于是这种节点树架构可构成一严密的阶层式协调系统。如于此所使用的,除非更严格地定义,否则一阶层式协调系统亦包含较为松散的阶层式的协调系统,例如一种允许在至少一群组的核心内的点对点协调的系统,其是在至少两个核心群组间进行阶层式协调。于此呈现严密及松散的阶层式协调系统两者的例子。
于一实施例中,一种阶层式协调系统对应至一微处理器中的核心的一配置,微处理器具有多个封装体,每个封装体具有多个晶片,且每个晶片具有多个核心。将每层视为一"域(domain)"时是有用的。举例而言,一种双核心晶片可被视为由其核心所组成的域,一种双晶片封装体可被视为由其晶片所组成的一域,以及一双封装体平台或微处理器可被视为由其封装体所组成的一域。将核心本身说明为一域亦是有用的。这种"域"的概念化在表示例如一快取、一电压源或一时钟源的一资源上亦是有用的,此资源是由一域的核心所共用,但此资源以别的方法位于该域的近端(亦即,并未由该域的外部核心所共用)。当然,适合于任何既定的多核心处理器的域深度以及每个域的组成者的数目(例如,以一晶片为一域,以封装体为一域,等等)可依据核心的数目、它们的分层以及各种资源由核心所共用的方式改变并放大或缩小。
为不同型式的域之间的关是命名亦是有用的。如于此所使用的,在一种多核心晶片上的所有启动的实体核心是被视为该晶片的"组成者(constituents)"以及彼此的"共同组成者(co-constituents)"。同样地,在一多晶片封装体上的所有启动的实体晶片被视为该封装体的组成者以及彼此的共同组成者。又同样地,在一种多封装体处理器上的所有启动的实体封装体将被视为该处理器的组成者以及彼此的共同组成者。再者,这种表示方式可能延伸至像设有多核心处理器一样的域深度的多数层次。一般而言,每个非终端域层次是由一个或多个组成者所定义,每一个组成者包含阶层式构造的下一个较低的域层次。
在某些多核心处理器实施例中,对每个多核心域(例如,对每个晶片,对每个封装体,对每个平台等等)而言,其唯一一个核心被指定为并设有供该域使用的一"管理者(master)"的一对应的功能把关或协调角色。举例而言,每个多核心晶片的单一核心(如果有的话)被指定为该晶片的一"晶片管理者",每个封装体的单一核心被指定为该封装体的一"封装体管理者"(PM),以及(对如此成层的一处理器而言)每个平台的单一核心是被指定为供该平台用的"平台管理者"等等。一般而言,此阶层的最高域的管理者核心作为多核心处理器的唯一的"总线服务处理器"(BSP)核心,其中只有BSP被授权以使某些型式的活动与晶片组协调。可注意到,为了便利性,于此采用例如"管理者"的专门用语,且除"管理者"之外的标签(例如"委派(delegate)")可被应用以说明这种功能角色。
更进一步的关是是定义在每个域管理者核心与核心之间,为预定目的或活动(为其所标示的),利用核心允许其直接协调。于最低域层次(例如,一晶片),对于该晶片的启动的非管理者核心的每一个,一种多核心晶片的晶片管理者核心可能被视为一"伙伴(pal)"。一般而言,对于相同晶片的其他核心的任何一个,一晶片的每一个核心被视为一伙伴。但在一替代特性记述中,伙伴指定是被限定为在晶片管理者核心与一种多核心晶片的其他核心之间的附属关是。将这种替代特性记述应用至一种四核心晶片,晶片管理者核心将具有三个伙伴,但其他核心的每一个将被视为只具有单一伙伴(晶片管理者核心)。
于下一个域层次(例如封装体),对于相同封装体上的其他管理者核心的每一个,一封装体的PM核心可能被视为一"同伴(buddy)"。一般而言,对于相同封装体的彼此晶片管理者核心,一封装体的每一个晶片管理者核心是被视为一同伴。但在一替代特性记述中,同伴指定是限定于一封装体管理者核心与该封装体的其他管理者核心之间的附属关是。将这种替代特性记述应用至一种四晶片封装体,PM核心将具有三个伙伴,但其他晶片管理者核心的每一个将被视为只具有单一伙伴(PM核心)。在又另一种替代特性记述(例如在图11中所提出的)中,对于处理器中的其他管理者核心的每一个(包含在处理器的一不同封装体上的管理者核心),一管理者核心是被视为一"同伴"。
于下一个域层次(例如,具有这种深度的一种多核心处理器的平台),对于平台的其他PM核心的每一个,BSP(或平台管理者(master))核心被视为一"好友(chum)"。一般而言,对于相同平台的彼此PM核心,每一个PM核心是关于一好友。但在一替代特性记述中,好友指定是限定于在一BSP封装体管理者核心与一平台的其他PM核心之间的附属关是。将这种替代特性记述应用至一种四封装体平台,BSP核心将具有三个伙伴,但其他PM核心的每一个将被视为只具有单一伙伴(BSP)。
上述的伙伴/同伴/好友关是于此一般更被视为"同属性(kinship)"关是。每个"伙伴"核心属于一个同属性群组,每个"同伴"核心属于一较高层级的同属性群组,以及每个"好友"核心属于又更高层级的同属性群组。换言之,上述阶层式协调系统的各种域定义对应的"同属性"群组(例如,伙伴的一个或多个群组、同伴的群组以及好友的群组)。此外,一特定核心的每个"伙伴"、"同伴"以及"好友"核心(如果有的话)一般可更被视为一"家族(kin)"核心。
如于此所使用的,一同属性群组的概念是略不同于一域的概念。如上所述,一域是由在其域中的所有核心所组成,举例而言,一封装体域一般是由封装体上的所有核心所组成。相较之下,一同属性群组一般是由相对应的域所选择核心组成,例如,一封装体域的对应的同属性群组仅由封装体上的管理者核心(其中一个亦为封装体管理者核心)所构成,而非封装体上任何一个伙伴核心所构成。一般而言,只有终端多核心域(亦即,不具有组成域的域)将定义一个包含所有核心的对应同属性群组。举例而言,一双核心晶片一般将定义一终端多核心域,其具有包含晶片的两核心的对应同属性群组。注意到把每个核心看成界定其自己的域亦是适当的,因为每个核心一般包含位于在本身的近端且未被其他核心所共用的资源,其可藉由各种操作状态而被设置。
将明白在上述的伙伴/同伴/好友阶层,任一非管理者核心的每个核心只是一伙伴,并属于只由相同晶片上的核心所构成的单一同属性群组。每个晶片管理者核心,第一,属于由相同晶片上的伙伴核心所组成的最低层次同属性群组;第二,属于由相同封装体上的同伴核心所组成的一同属性群组。每个封装体管理者核心,第一,属于由相同晶片上的伙伴核心所组成的一最低层次同属性群组;第二,属于由相同封装体上的同伴核心所组成的一同属性群组;而第三,属于由相同平台上的好友核心所组成的一同属性群组。简言之,每个核心属于W同属性群组,于此W等于同属性群组(该核心是一管理者核心)的数目加上1。
为了更进一步叙述同属性群组的阶层式本质的特征,任何既定核心的"最接近的"或"最直接的"同属性群组是对应至该核心为其的一部分的最低层次多核心域。在一个例子中,无论一特定核心具有多少管理者指定核心,其最直接的同属性群组包含其在相同晶片上的伙伴。一管理者核心亦将具有一第二接近的同属性群组,其包含在相同封装体上的核心的同伴或同伴们。一封装体管理者核心亦将具有包含核心的好友的一第三接近的同属性群组。
值得注意的是,上述的同属性群组对于一多层次多核心处理器(其中至少两个层次Nx具有多重组成者)将是半独占的。亦即,对这种处理器而言,没有既定的同属性群组将包含该处理器的所有核心。
上述的同属性群组概念甚至可更进一步藉由不同的协调模型而被特征化,一同属性群组可能采用在其组成核心之间。如于此所使用的,在一"管理者仲裁的"同属性群组中,在核心之间的直接协调是被限定为在管理者核心及其非管理者核心之间的协调。在同属性群组之内的非管理者核心无法彼此直接协调,只能间接地经由管理者核心为的。在一"同侪合作(Peer-collaborative)"同属性群组中,相较之下,同属性群组的任何两个核心可能彼此直接协调,而无须管理者核心的仲裁。在一同侪合作同属性群组中,对于管理者的一种更功能性地相容专门用语将是"委派",因为其作为一协调看守者,只为了与较高层级域协调,而不为了与在同属性群组织同侪之间协调。应注意到,于此定义在一"管理者仲裁"及"同侪合作"同属性群组之间的区别,只有对于具有三个或三个以上的核心的同属性群组是有意义的。一般而言,对某些预定活动而言,任何既定核心只可与其同属性群组的组成者或共同组成者进行协调,而且对于任何管理者仲裁的同属性群组而言,仅有一部分,例如较优的"共同组成者"或较差组成者,得以适用。
从一节点阶层的节点与节点连接的角度说明上面的阶层式协调系统亦是适当的。如于此所使用的,一节点阶层为每个节点是多核心处理器的核心的唯一的一个,其中一个核心(例如,BSP核心)为根节点,且在任两个节点之间存在有一连续不断的协调"路径"(包含中间节点,如果适合的话)。每个节点是"节点连接"至至少一另一个节点而非所有其他节点,且为了为协调系统所应用到的活动的目的,只可与"节点连接的"核心协调。为了更进一步区别这些节点连接,于此将把一管理者核心的附属节点地连接核心看成"组成者"核心、或者看成"附属家族"核心,"附属家族"核心是与一核心的节点地连接的"共同成组成者核心"有所区别,而"共同组成者核心"为并非附属于本身的节点地连接核心。更进一步的说,一核心的节点地连接的"共同组成者"核心包含其管理者核心(如果有的话)、以及其是节点地连接的任何同等阶级的核心(例如,在其的一同侪协调同属性群组,核心为一部分)。又,不具有附属家族核心的任何核心于此亦被称为"终端"节点或"终端"核心。
到目前为止,阶层式协调系统于这些域对应至核心的一实体不同的巢状配置已清楚地说明(例如,不同的域对应至每个适合的核心、晶片、封装体以及平台)。举例而言,图1、9、12、16以及22所显示的阶层式协调系统皆与处理器所显示的核心的实体上不同的巢状封装体一致。图22为一有趣的一致性实例,其显示具有多个不对称封装体的八核心处理器2202,其中一个具有三个双核心晶片而其余具有单核心晶片。然而,与封装体核心的实体上不同的巢状方式相符,旁路配线定义一对应的三个层次阶层式协调系统,其具有相关作为好友的封装体管理者,相关作为同伴的晶片管理者,以及相关作为伙伴的晶片核心。
但是,依据一处理器的核心间、晶片间以及封装体间旁路配线(如果有的话)的组态,在核心之间的阶层式协调系统可能被建立,且相较在处理器被封装的核心的巢状实体配置而言,其具有不同深度及分层,数个这种例子是设置于图11、14、15以及21中。图11显示具有两个封装体的八核心处理器,其中每个封装体具有两个晶片,而每个晶片具有两个核心。在图11中,设置促进二阶阶层式协调系统的多条旁路配线,以使所有的管理者核心可以是最高层级同属性群组的一部分,且每个管理者核心亦属于包含本身及其伙伴的一不同的最低层次同属性群组。图14显示在单一封装体上的具有四个双核心晶片的八核心处理器。在图14中,将设置所需的伙伴、同伴以及好友的三层次阶层式协调系统的多条旁路配线。图15显示具有两个四核心晶片的处理器,于此在每个晶片内的核心间配线需要一二阶阶层式协调系统,以及在每个晶片的管理者(亦即,好友)之间提供多条晶片间配线来作为第三阶层式层次的协调。图21显示类似图22具有两个不对称封装体的另一种八核心处理器,其中一个不对称封装体具有三个双核心晶片而另一个具有单一双核心晶片。但是,如同图11,晶片间及封装体间旁路配线是提供以协助核心间的二阶阶层式协调系统,其中两个封装体上的所有的管理者核心为相同的同属性群组的一部分。
如上所述,不同深度与协调模型的阶层式协调系统,可依期望被应用或适用于提供作为一多核心处理器的共用资源的分布,假若其与多核心处理器的构造能力与限制相符的话。为了更进一步说明,图16显示一种设置足够的旁路通讯配线以协助每个四核心晶片的所有核心间的同侪合作协调模型的处理器。然而,在图17中,更多限制的管理者仲裁协调模型为每个四核心晶片的核心而建立。此外,如图15所显示的,具有两个伙伴同属性群组以及一个管理者同属性群组的一多层次协调阶层,如果需要的话,亦可只藉由使用(为了为协调系统所应用的活动的目的)少于所有可得到的核心间配线而为图16的四核心微处理器的核心而建立的。因为图16中的每个四核心晶片提供在每一个其核心之间的旁路配线,所以晶片是能够协助阶层式协调系统的所有三种型式。
一般而言,不管域、同属性群组以及多核心处理器节点的本质与数目为何,每个域中只有唯一一个核心可被指定为该域以及对应的同属性群组的管理者。域可具有组成域(constituent domain),再者,每个域以及对应的同属性群组中只有一个核心将被指定为该域的管理者。协调系统的最高级核心亦被称为一"根节点"。
IV.电源状态管理
在介绍关于多核心组态、旁路通讯能力以及阶层式关是的各种概念以后,现在此说明书介绍关于电源状态管理系统的特定考虑的实施例的某些概念。然而,应该明白到,本发明适用于除了电源状态管理以外的多样化活动的协调。
在此所说明的分配式多核心电源管理实施例中,多核心处理器的每个核心包含分散式与分配式可计量电源管理逻辑,其复制于每个核心上的一个或多个微码常驻常式中。电源管理逻辑是可操作以接收一目标电源状态,确定其是否为一受限制的电源状态,启动包含核心间协调的一复合电源状态发现过程,并适当地反应。
一般而言,一目标状态为任何需求或期望的预定操作状态(例如C-状态、P-状态、电压ID(VID)值或时钟比率值)的其中一个等级。一般而言,一预定群组的操作状态界定包含多个处理器操作状态,其基于一个或多个电源、电压、频率、性能、操作、响应性、共用资源或限制实现特征而订定。相对于一处理器的其他期望的操作特征,操作状态可能被提供以最佳地管理电源。
于一实施例中,预定操作状态包含一有效操作状态(例如C0状态)及多个渐进地较不有效或敏感的状态(例如C1,C2,C3等状态)。如于此使用的,一渐进地较不敏感的或有效状态表示一种相对于更有效或敏感的状态的节省电源的配置或操作状态,或相对不太敏感的(例如,较慢、较不完全启动、无法执行例如存取例如快取存储器资源、或较易休眠及较难唤醒)。于某些实施例中,基于衍生自或兼容于ACPI规格,预定操作状态构成但并非需要受限于C-状态或休眠状态。于其他实施例中,预定操作状态构成或包含各种电压及频率状态(例如,渐进地较低电压和/或较低频率状态),或两者。又,一组预定操作状态可能包含各种可程式化操作配置(或由其组成),例如强迫指令依据执程式顺序来执行、强制每时钟周期只能发出一个指令、每时钟周期中只格式化单一指令、每时钟周期只转换单一微指令、每时钟周期只引退单一指令、和/或以串列形式存取各种快取存储器,使用的技术例如说明于美国申请案序号61/469,515者,申请日为2011年3月30日,名称为"经由每时钟操作的减少的指令执行状态电源节约(Running StatePower Saving Via Reduced Instructions Per Clock Operation)"(CNTR.2550),其于此并入作参考。
可理解,微处理器可能依据不同的、及独立组或部分独立的操作状态集合而配置。影响电源消耗、性能和/或响应性的各种操作配置可被分配到不同等级的电源状态,每个等级可依据一对应的阶层式协调系统而独立实施,而每个系统具有其本身的独立界定的域、域管理者及同属性群组协调模型。
一般而言,一个预定操作状态的等级可被分成至少两个类别:(1)主要的本地操作状态(predominantly local operating states),其只影响到位于核心本地的资源,或在一般的实际应用下,主要只影响到特定核心的性能;及(2)受限制的操作状态(restricted operating states),其将冲击一个或多个由其他核心共用的资源,或在一般的实际应用下,其相对地更有可能干扰其他核心的性能。冲击共用资源的操作状态是相关于干扰共享该资源的其他核心的电源、性能,效率或响应性的相对较大的可能性。近端操作状态的实现一般而言并不需要与其他核心协调,或获得来自其他核心协调的允许才进行。相较之下,限制操作状态的实现便需要与其他核心进行协调及许可。
在更进阶的实施例中,预定操作状态可被分成更多阶层式类别,取决于各种资源是如何共用及共用的程度。例如,一第一组操作状态可能定义位于一核心的本地资源的配置、一第二组操作状态可能定义由一晶片的核心共用但不位于该晶片本地资源配置、一第三组操作状态可能定义由一封装体的核心共用的资源的配置…等。一操作状态的实现需要与在应用的操作状态组态下共享资源的核心进行协调并取得其许可。
一般而言,一种关于任何既定域的复合操作状态为一个属于该域的每个启动实体核心的应用操作状态的极值(亦即最大或最小值)。于一实施例中,一实体核心的应用操作状态为核心的最近且仍然正确的目标或需求的操作状态(如果有的话),或者,如果核心并不具有一最近的正确的目标或需求的操作状态的话,实体核心的应用操作状态为某些预设值。预设值可能是零(例如复合操作状态被计算为最小值的状况)、预定操作状态的最大值(例如复合操作状态被计算为最大值的状况)、或者核心的目前实施的操作状态。于一实施例中,一核心的应用操作状态为一电源或操作状态,例如核心所期望的或需求的电压ID(VID)或时钟比率值。于另一实施例中,一核心的应用操作状态为核心已经从所应用的系统软件接收的最近的有效C-状态。
在另一实施例中,一实体核心的应用操作状态为核心的最近的仍然正确的目标或需求的操作状态的极值(如果有的话),以及将影响位于最高域(如果有的话,核心为此最高域具有管理者凭证)的本地资源的最极端操作状态。
因此,关于处理器的复合操作状态整体看来将是该处理器的所有的启动实体核心的应用电源状态的最大值或最小值。一种封装体的复合电源状态将是该封装体的所有启动实体核心所应用的电源状态的最大值或最小值。一种晶片的复合电源状态将是该晶片的所有启动实体核心的应用电源状态的最大值或最小值。
说明于此的分散式电源状态管理实施例中,每个核心的电源管理逻辑的一部分或常式为同步逻辑,其被设计成至少有条件地与其他节点地连接核心(亦即,同一同属性群组的其他核心)交换电源状态信息,以决定一混合电源状态。一种混合电源状态为对应于本地(native)及同步逻辑的至少一节点地连结实例的核心的应用电源状态的一极值。在某些非必要的情况下,由一同步常式计算及传回的一混合电源状态将准确地对应至关于一应用域的复合电源状态。
每个同步逻辑的被唤醒实例(invoked instance)是被设计成在尚未同步的节点地连接的核心中至少有条件地产生同步逻辑的从属实例,此是开始于最立即同属性群组的节点地连接核心,并继续渐进地较高层级同属性群组的节点地连接核心(如果有的话,将进行至同步逻辑实例所属的核心)。尚未同步的节点地连接核心为节点地连接至本身的核心,其同步逻辑同步化实例尚未被实施为一复合电源状态发现过程的一部分。
此种在同步逻辑的每个实例所进行的发现过程,将递归地于尚未同步的节点地远端核心,更进一步地产生(至少有条件地)同步逻辑的从属实例,直到所应用的潜在被冲击域(applicable potentially impact domain)的每一个核心上,皆有同步逻辑的同步化的实例在执行为止。在关于所应用域的复合电源状态的发现程序中,执行于一核心上的电源管理逻辑的实例,被指定为授权予启动或执行关于该域的复合电源状态的实现、且可启动/或进行实现的能力。
V.特定说明的实施例
现在将注意力转至附图所显示的特定实施例。
于一实施例中,同步逻辑的每个实例经由与系统总线不同的旁路通讯或旁通总线线(核心间通讯配线112、晶片间通讯配线118以及封装体间通讯配线1133)与其他核心上的逻辑的同步化实例进行通讯,用以利用一种分散式的分配方式执行电源管理。这允许核心可实体地设置在多重晶片上或在多重封装体上,藉以可能地降低晶片尺寸并改善良率,且提供系统中的核心数的高度扩充性(scalability),而不会对现代的微处理器的晶片与封装体的接触垫与接脚限制造成影响。
现在参考图1所显示的方块图,其显示依据本发明执行分配在一多核心微处理器102的多重处理核心106之间的分散式电源管理的计算机系统100的实施例。系统100包含藉由一系统总线116耦接至多核心微处理器102的单一晶片组114。多核心微处理器102封装体包含两个以晶片0及晶片1表示的双核心晶片104。晶片104安装于封装体的一基板上。基板包含配线网(或只简单称为"配线")或者线路,其将晶片104的接触垫连接至封装体102的接脚。接脚可能因其他原因而连接至总线116。基板配线亦包含连接在晶片104间的晶片间通讯配线118(以下讨论更多的)以促进它们之间的通讯,用以执行分配在多核心微处理器102的核心106间的分散式电源管理。
每一个双核心晶片104包含两个处理核心106,晶片0包含核心0及核心1,而晶片1包含核心2及核心3。每个晶片104具有一被指定的管理者核心106。于图1的本实施例中,核心0为晶片0的管理者核心106,而核心2为晶片1的管理者核心106。于一实施例中,每个核心106包含配置熔丝(configuration fuses),晶片104的制造商可能烧断配置熔丝以标示核心106何者为晶片104的管理者核心。此外,晶片104的制造商可能烧断配置熔丝以对每个核心106指定其实例,亦即,核心106中哪一个为核心0、核心1、核心2或核心3。如上所述,专门用语"伙伴"是表示在相同晶片104上且彼此沟通的的核心106;因此,于图1的本实施例中,核心0及核心1为伙伴,而核心2及核心3为伙伴。专门用语"同伴"于此是表示在不同晶片104上且彼此沟通的管理者核心106;因此,于图1的本实施例中,核心0及核心2为同伴。在一实施例中,偶数核心106为每个晶片104的管理者核心。在一实施例中,核心0是标示为多核心微处理器102的启动服务处理器(boot service processor(BSP)),其单独被授权以与晶片组114协调某些限制活动,包含允许某些复合电源状态的实现。在一实施例中,BSP核心106通知晶片组114并要求其允许总线116时钟的移除以减少电源消耗、和/或避免在总线116上产生窥探周期,一如后续于图3的方块322所讨论的。于一实施例中,BSP为核心106,其总线要求输出是耦接至总线116上的BREQ0信号。
在每个晶片104之内的两个核心106经由位于晶片104内部的核心间通讯配线112进行通讯。更明确而言,核心间通讯配线112允许在一晶片104之内的核心106彼此中断,并彼此传递讯息用以执行分配在多核心微处理器102的核心106间的分散式电源管理。于一实施例中,核心间通讯配线112包含平行总线。于一实施例中,核心间通讯配线112是类似于说明于CNTR.2528者。
此外,核心106经由晶片间通讯配线118进行通讯。更明确而言,晶片间通讯配线118允许个别的晶片104上的管理者核心106彼此中断,并彼此传递讯息以执行分配在多核心微处理器102的核心106间的分散式电源管理。于一实施例中,晶片间通讯配线118以总线116时钟频率执行。于一实施例中,核心106传输32位讯息至彼此。在传送或广播时,核心106在一总线116周期中于晶片间通讯配线118的单一配线上进行设置,用以表示其即将传输一讯息,然后在接下来的31个总线116周期上传送31位的序列。于每个晶片间通讯配线118的末端为一32位移位寄存器,其累积所接收的单一位而成32位的讯息。于一实施例中,32位讯息包含多个信息栏(field)。一个信息栏载明依据说明于CNTR.2534中的所共用的VRM分配式管理机制而使用的一7位需求的VID值。其他信息栏包含关于电源状态(例如C-状态)同步的讯息,例如C-状态要求值与确认,其是在核心106之间交换,如于此所讨论的。此外,一特殊讯息值可使一传送其值的核心106中断一接收其值的核心106。
于图1的实施例中,每个晶片104包含分别耦接至四个接脚(以"P1"、"P2"、"P3"以及"P4"表示)的四个接触垫108。关于四个接触垫108,其中一个为输出接触垫(以"OUT"表示),而另外三个为输入接触垫(以IN 1、IN 2以及IN 3表示)。晶片间通讯配线118是被设计如下。晶片0的OUT接触垫与晶片1的IN 1接触垫经由单一配线网耦接至接脚P1;晶片1的OUT接触垫与晶片0的IN 3接触垫经由单一配线网耦接至接脚P2;晶片0的IN2接触垫与晶片1的IN 3接触垫经由单一配线网耦接至接脚P3;而晶片0的IN 1接触垫与晶片1的IN 2接触垫经由单一配线网耦接至接脚P4。于一实施例中,核心106在其所传输的离开OUT接触垫108至晶片间通讯配线118(或如以下于图11所说明的封装体间通讯配线1133)的每个讯息里包含一识别码。此识别码独特地确认此讯息预定到达的目标核心106,在此所说明的实施例(其中此讯息被广播至多重接受者核心106)中是有用的。于一实施例中,每个晶片104是依据在多核心微处理器102制造期间所烧断的配置熔丝,而将四个接触垫108的其中一个指定为输出接触垫(OUT)。
当晶片0的管理者核心0想要与晶片1的管理者核心2进行通讯时,将在其OUT接触垫上的信息传输至晶片1的IN 1接触垫;同样地,当晶片1的管理者核心2想要与晶片0的管理者核心0进行通讯时,将在其OUT接触垫上的信息传输至晶片0的IN 3接触垫。因此,于图1的实施例中,每个晶片104只需要一个输入接触垫108而非三个。然而,制造具有三个输入接触垫108的晶片104的一项优点为其允许在图1的四核心多核心微处理器102以及例如图9所示的八核心多核心微处理器902中的相同晶片104得以被设计。此外,于图1的本实施例中,两个接脚P是不需要的。然而,制造具有四个接脚P的晶片104的一项优点为其允许在图一的相同四核心微处理器102被设计成单一四核心微处理器102、而例如图11所示的具有两个四核心微处理器1102可被设计为的八核心系统1100。然而,如显示于图12与14至16的四核心实施例中,可考虑移除未使用的接脚P与接触垫108,以在需要时减少接触垫以及接脚数。此外,例如显示于图19与20的本实施例中的双核心实施例,亦可依据需要而考虑移除未使用的接脚P与接触垫108以减少接触垫以及接脚数、或为其他目的而被部署。
在一实施例中,总线116包含允许晶片组114与多核心微处理器102经由类似于熟知的Pentium 4总线协定的总线协定传递的数个信号。总线116包含由晶片组114提供给多核心微处理器102的一总线时钟信号,核心106使用其以产生内部核心时钟信号,其频率一般为总线区块频率的比率。总线116亦包含一STPCLK信号(被晶片组114设置),以要求核心106允许以移除总线时钟信号,亦即允许以停止提供总线时钟信号。多核心微处理器102从一预先决定的I/O连接端口地址执行在总线116上的一I/O读取传输(只有其中一个核心106执行它),以指示晶片组114可设置STPCLK。如以下所讨论的,多重核心106经由核心间通讯配线112与晶片间通讯配线118而彼此沟通,用以决定单一核心106何时可执行I/O读取传输是有好处的。在一实施例中,在晶片组114设置STPCLK后,每一个核心106发布一STOP GRANT讯息给晶片组114;一旦每个核心106已发布一STOP GRANT讯息后,晶片组114就可移除总线时钟。在另一实施例中,晶片组114具有一配置选择,以使其在其移除总线时钟之前只期望来自多核心微处理器102的单一的STOP GRANT讯息。
现在参考图2所显示的方块图,其详细显示依据本发明图1的核心106的其中一个典型实例。依据一个实施例,核心106微结构包含功能单元的一超纯量(superscalar)、非循序执行管线。一指令快取202快取从一系统存储器提取的指令(未显示)。一指令译码器204是耦接以接收来自指令快取202的指令(例如x86指令集架构指令)。一注册别名表(RAT)212是耦接以接收来自指令译码器204及来自一微序列器206的译码微指令,并产生译码微指令的依存信息。保留站214是耦接以接收来自RAT 212的译码微指令以及依存信息。执行单元216是耦接以接收来自保留站214的译码微指令并接收供译码微指令所使用的指令运算元。运算元可能来自核心106的寄存器(例如通用寄存器及可读取且可写入的特别模块寄存器(MSR)238,以及来自耦接至执行单元216的一数据快取222。一引退单元218是耦接以接收由执行单元216传来的指令执行结果,并将该执行结果引退至核心106的架构状态。数据快取222是耦接至一总线接口单元(BIU)224,作为核心106连接至图1总线116的接口。一锁相回路(PLL)226接收来自总线116的总线时钟信号,并据以产生一核心时钟信号242予核心106的各种功能单元。PLL 226可经由执行单元216而受控制,例如被禁能。
执行单元216接收一BSP指示码228以及一管理者指示码232,其分别表示核心106是否为晶片104的管理者核心与多核心微处理器102的BSP核心。如上所述,BSP指示码228与管理者指示码232可能包含可程式化熔丝。于一实施例中,BSP指示码228与管理者指示码232是储存于一特别模块寄存器(MSR)238中,其首先由可程式化熔丝值取出,但其可能藉由软件写入至MSR 238而被更新。执行单元216亦读取并写入控制与状态寄存器(CSR)234与236,用以与其他核心106沟通。尤其,核心106使用CSR 236,用以经由核心间通讯配线112而与相同晶片104上的核心106沟通,且核心106使用CSR 234,用以通过接触垫108经由晶片间通讯配线118而与其他晶片104上的核心106沟通,如以下详细说明的。
微序列器206包含一微码存储器207,其被设计以储存包含电源管理逻辑微码208的微码。为本揭示的目的,于此所使用的专门用语"微码"表示由相同的核心106所执行的指令,其执行通知核心106转变成一电源管理相关的状态(于此称为一休眠状态、闲置状态、C-状态或电源状态)的架构指令(例如MWAIT指令)。亦即,一状态转变指令的实例是核心106特有的,且为因应状态转变指令实例所执行的微码208是在该核心106上执行。处理核心106是对称的,因为它们每个具有相同的指令集架构并被设计以执行包含来自指令集架构指令的使用者程式。除了核心106以外,多核心微处理器102可能包含一附属或服务处理器(未显示),其并不具有与核心106相同的指令集架构。然而,在本发明中,核心106本身(并非附属或服务处理器且非任何其他非核心逻辑元件)执行分配在多核心微处理器102的多重处理核心106间的分散式电源管理,以因应状态转变指令,其较一种代表核心执行电源管理的专用硬件设计更有利地提供更强的可调(尺寸的)能力、可重组性、良率特性、电源减少和/或晶片实际面积的减少等优点。
电源管理逻辑微码208指令是因应至少两个条件而被实施。首先,电源管理逻辑微码208可被唤起以实行核心106的指令集架构的一指令。于一实施例中,x86 MWAIT与IN指令等可实行在微码208中。亦即,当指令译码器204遇到一x86 MWAIT或IN指令时,指令译码器204停止提取目前执行的使用者程式指令,并将控制权传送至微序列器206以开始提取实行x86MWAIT或IN指令的电源管理逻辑微码208中的一常式。其次,电源管理逻辑微码208可能因应一中断事件而被唤起。亦即,当一中断事件产生时,核心106停止提取目前的使用者程式指令,并将控制权传送至微序列器206以开始提取掌控中断事件的电源管理逻辑微码208中的一常式。中断事件包含架构中断、例外、错误或陷阱(traps),例如由x86指令集架构所界定者。一中断事件的例子为总线116上的一个对于与电源管理相关的一些预设I/O地址其中一者的I/O读取传输检测。中断事件亦包含非架构界定的事件。于一实施例中,非架构界定的中断事件包含:经由图1的核心间通讯配线118(例如图5、6所描述的连结)发送信号或经由图1的晶片间通讯配线118发送信号(或经由图11的封装体间通讯配线1133发送信号,以下所讨论的)的一核心间中断需求(例如与图5与6相关所说明的);以及藉由晶片组的一STPCLK设置或解除设置的检测。于一实施例中,电源管理逻辑微码208指令为核心106微架构指令组的指令。在另一实施例中,微码208指令为不同的指令组的指令,其将转变成核心106的微架构指令组的指令。
图1的系统100执行分配在多重处理核心106之间的分散式电源管理。更明确而言,每个核心实施其本地电源管理逻辑微码208以响应一状态转变需求,并转变成目标电源状态。目标电源状态为多个预定电源状态(例如C-状态)的任何一个所需求者。预定电源状态包含一参考或主动操作状态(例如ACPI的C0状态)以及多个渐进地且相对不太敏感的状态(例如ACPI的C1、C2、C3等状态)。
现在参考图3所显示的流程图,其依据本发明显示图1的系统100的操作,用以执行分配在多核心微处理器102的多重处理核心106间的分散式电源管理。具体言之,流程图显示电源管理逻辑微码208的一部分操作,是因应于遭遇一MWAIT指令或类似的命令,以转变成一新电源状态。更明确而言,图3所显示的电源管理逻辑微码208的部分为电源管理逻辑的一状态转变需求处理逻辑(STRHL)常式。
为了促进对图3的更佳理解,MWAIT指令与C-状态架构的实施样态是在说明每一个图3的个别方块前被说明。MWAIT指令可包含在操作系统(例如,)或其他系统软件中。举例而言,如果系统软件知道系统上的工作量目前是低或不存在的,则系统软件可能执行一MWAIT指令以允许核心106进入一低电源状态,直到一事件(例如从一周边装置的中断)要求由核心106服务为止。另一例子为,在核心106上执行的软件可能与在另一核心106上执行的软件的共享数据,是以在存取由两个核心106所共用数据时便需要经由例如一信号(semaphore)的同步;如果在另一核心106所执行的储存至信号(store to semaphore)前已经过一段显著的时间量时,则在目前核心106上执行的软件将致使目前核心106经由MWAIT指令进入低电源状态,直到储存至信号发生为止。
MWAIT指令详细说明于2009年3月的IntelR 64与IA-32架构软件开发人员手册(Architectures Software Developer's Manual),卷2A:指令集参考(A-M)的第3-761至3-764页,而监视(MONITOR)指令是详细说明于相同文件的第3-637经由3-639页,其全部在此皆并入作参考。
MWAIT指令可能指定一目标C-状态。依据一个实施例,C-状态0为一执行状态,而大于0的C-状态为休眠状态;1及较高的C-状态为停止状态,于其中核心106不提取与执行指令;而2及较高的C-状态是核心106可能执行额外动作以减少其电源消耗,例如禁能其快取存储器并降低其电压和/或频率的状态。
依据一个实施例,2或较高的C-状态是被视为并预先决定成为一受限制的电源状态。在2或较高的C-状态中,晶片组114可能移除总线116时钟,藉以有效地禁能核心106时钟,以便大幅地减少由核心106的电源消耗。关于每个后段较高的C-状态,将允许核心106执行更积极的电源节约动作,虽然个别皆需要较长的时间恢复至执行状态。可能使核心106退出低电源状态的事件的实例为一中断以及藉由另一处理器的储存至一特别指定的地址范围(由先前所执行的监视(MONITOR)指令所指定)。
明显地,对C-状态的ACPI编号机制使用较高的C号码以表示渐进地较不敏感、较深的休眠状态。藉由使用这种编号机制,任何既定的主顾群组(亦即:晶片、封装体、平台)的复合电源状态将是该组成群组的所有启动核心的应用C-状态最小值,每个核心的应用C-状态最小值是最近的有效要求C-状态(如果有的话)、或是零(如果核心不具备有效的最近要求应用C-状态的话。
然而,其他等级的电源状态使用渐进较高的号码以表示渐进更敏感的状态。举例而言,CNTR.2534说明一种指示一期望的电压识别码(VID)至一电压调节器模块(VRM)的协调系统。较高的VID对应至较高电压电平,因而对应至较快的(所以是更敏感的)性能状态。但协调一复合VID涉及决定核心所请求VID值的最大值。因为一电源状态编号机制可依上升或下降次序被指定,所以此说明书的部分将复合电源状态界定为一"极值",其是相关核心的应用电源状态的最小值或最大值。然而,应明白即使所请求的VID及时钟比率值是朝与习知顺序相反的方向"予以订定(orderable)"(譬如使用从原始值开始的负计数);因此不管传统上界定的方向为何,描述于此的更特殊界定的阶层式协调系统通常亦适用这些电源状态。
虽然图3说明一实施例,于其中核心106响应一MWAIT指令以执行分散式电源管理,但是核心106亦可能响应其他形式的输入而通知核心106其可能进入一低电源状态。举例而言,总线接口单元224可能产生一信号,以因应检测到总线116上的一I/O读取传输至一预先决定的I/O端口范围时,用以使核心106进入陷阱而执行微码208。再者,核心106因应所接收的其他外部信号而进入陷阱执行微码208的实施例亦被本发明所考量,且实施例并未受限于x86指令集架构实施例或受限于包含一Pentium 4型式处理器总线的系统实施例。再者,一核心106的既定目标状态可能内部地被产生,如经常出现具有期望的电压与时钟数值的情况。
现在把焦点放在图3的个别功能方块上,流程于方块302开始。于方块302,图2的指令译码器204遇到一MWAIT指令并进入陷阱而执行电源管理逻辑微码208,且特别是实现MWAIT指令的STRHL常式。MWAIT指令载明以"X"表示的一目标C-状态,并在核心106等待一事件发生的同时通知其可能进入一最佳化状态。具体言之,最佳化状态可能是一低电源状态,于其中核心106将消耗比核心106遇到MWAIT指令的执行状态下更少的电源。
流程继续至方块303。微码将"X"储存成为核心的应用或最近的有效要求的电源状态,以"Y"表示。可注意到,如果核心106尚未遇到一MWAIT指令、或如果因为从那时起该指令已被取代或变成陈旧的(譬如藉由一后来的STPCLK解除设置)且核心是处于一正常执行状态,则储存为核心的应用或最近的有效要求电源状态的数值"Y"为0。
流程继续至方块304。于方块304,微码208(更详细而言是STRHL常式)检验"X",其为对应于目标C-状态的一数值。如果"X"小于2(亦即,目标C-状态为1),则流程继续至方块306;而,如果目标C-状态大于或等于2(亦即,"X"对应至一受限制的电源状态),则流程继续至方块308。于方块306,微码208将核心106置于休眠。亦即,微码208的STRHL常式将控制寄存器写入在核心106之内,用以使其停止提取并执行指令。因此,核心106消耗比其处于执行状态时更少的电源。最好的状况是,当核心106正休眠时,微序列器206亦没有提取并执行微码208指令。流程于方块306结束。图5说明为因应从休眠被唤醒的核心106的操作。
方块308表示一条路径,其是"X"为2或更多的对应于一受限制的电源状态时,微码208的STRHL常式所执行的操作。如上所述,于一实施例中,2或更多的一种C-状态涉及移除总线116时钟。总线116时钟是由核心106所共用的一资源,因此当一核心设有2或较高的一目标C-状态时,较佳的方式是核心106通过于此所说明的以一种分配式与协调方式进行通讯,用以确认每个核心106已被通知其可以在通知晶片组114(其可能移除总线116时钟)之前转变成2或更大的C-状态。
在方块308中,微码208的STRHL常式基于由于方块302所遇到的MWAIT指令特别指定的目标C-状态,执行相关的电源节约动作(PSA)。一般而言,由核心106所采取的PSA包含独立于其他核心106的动作。举例而言,每个核心106包含其自己的快取存储器,其位于核心106本身(例如,指令快取202与数据快取222)的近端,而PSA包含刷新局部快取、移除它们的时钟以及使它们断电。在另一实施例中,多核心微处理器102可能包含由多重核心106所共用的快取。于本实施例中,共用的快取无法被刷新、使它们的时钟被移除、或被断电,直到核心106彼此沟通以决定所有核心106已接收指定一适当的目标C-状态的一MWAIT为止,在这种情况下,它们可能在通知晶片组114其可能需求移除总线116时钟和/或抑制在总线116上产生窥探循环的允许之前,刷新共用的快取、移除它们的时钟并使它们断电(参见方块322)。于一实施例中,核心106共用一电压调节器模块(VRM)。CNTR.2534说明一种利用一种分配式的分散方式以管理由多重核心所共用的一VRM的设备及方法。于一实施例中,每个核心106具有其本身的PLL 226,如于图2的本实施例中,以使核心106可减少其频率或禁能PLL 226以节省电源而不会影响其他核心106。然而,在其他实施例中,一晶片104上的核心106可能共用一PLL。CNTR.2534说明一种利用一种分配式的分散方式以管理由多重核心所共用的PLL的装置及方法。于此所说明的电源状态管理与相关的同步逻辑的实施例,亦可能(或选择地)被应用以利用一种分配式的分散方式来管理由多重核心所共用的一PLL。
流程继续至方块312。于方块312,电源状态管理微码208的STRHL常式呼叫以sync_C-状态表示的另一电源状态管理微码208常式(其是相关于图4而详细说明的),用以与其他节点地连接核心106沟通并为多核心微处理器102获得一合成C-状态,在图3中以Z表示。相对于正在核心上执行的实例,sync_C-状态常式的每个被唤醒实例于此称为sync_C-状态常式的一"本地"实例。
微码208的STRHL常式唤起具有一输入参数或探测(probe)电源状态数值的sync_C-状态常式,探测电源状态数值等于核心的应用电源状态(亦即,其最近的有效要求的目标电源状态),其是由MWAIT指令所特别指定的在方块302中所接收的"X"的数值。唤起sync_C-状态常式开始一复合电源状态发现过程,如与图4相关而做更进一步说明者。
每个被唤醒sync_C-状态常式计算一"混合"C-状态并使"混合"C-状态回复至呼叫或实施它(于此是STRHL常式)的任何程序。"混合"C-状态为所探测C-状态数值中的最小值,而所探测C-状态数值是由被唤醒程序所接收、在核心上执行sync_C-状态常式的应用C-状态、以及由与sync_C-状态常式的相关被引发实例所接收的C-状态数值。以下将说明在某些情况之下,混合C-状态为共通于本地sync_C-状态常式与同步化sync_C-状态常式两者的域的复合电源状态相关。以下亦说明在其他情况中,混合C-状态可能只是域的一局部合成C-状态。
一般而言,一域的复合电源状态为该域的所有核心的应用电源状态的极值(在ACPI电源状态机制中是最小值)。举例而言,一晶片104的合成C-状态为晶片的所有核心106的应用C-状态(例如,最近的有效要求的C-状态,如果所有核心皆具有这样的数值的话)的最小值。整体看来,多核心微处理器102的合成C-状态为多核心微处理器102的所有核心106的应用C-状态的最小值。
然而,一种混合电源状态可能是一应用域的复合电源状态,或只是局部的复合电源状态。一局部的复合电源状态将是两个以上但小于全部的一应用域的核心应用电源状态的极值。在一些部分中,此说明书表示一种"至少局部合成电源状态"以包含任何变化的计算而得的混合电源状态。在一混合电源状态与一复合电源状态之间的电位(即使是细微的)区别将通过图4C、10及17的说明而变得更显清楚。
预先注意到,多核心微处理器102的一非零的合成C-状态表示每个核心106已看见载明一非执行C-状态(亦即,具有1或更大的数值的C-状态)的MWAIT;而一零值的合成C-状态表示并非每个核心106已看到MWAIT。再者,大于或等于2的数值表示多核心微处理器102的所有核心106已接收载明2或更大的C-状态MWAIT指令。
流程继续至决定方块314。于决定方块314中,微码208的STRHL常式检查于方块312所决定的混合C-状态"Z"。如果"Z"大于或等于2,则流程继续至决定方块318。否则,流程继续至方块316。
于方块316,微码208的STRHL常式将核心106置于休眠。流程于方块316结束。
于决定方块318,微码208的STRHL常式判断核心106是否为BSP。如果是,则流程继续至方块322;否则,流程继续至方块324。
于方块322,BSP 106通知晶片组114其可能要求移除总线116时钟和/或抑制在总线116上产生窥探循环的允许。
于一实施例中,依据熟知的Pentium 4总线协定,唯一被授权以允许较高的电源管理状态的BSP 106,将通知晶片组114其可能藉由初始化总线116上的一I/O读取传输至一预先决定的I/O端口,来要求移除总线116时钟和/或抑制在总线116上产生窥探循环的允许。然后,晶片组114设置在总线116上的STPCLK信号以要求移除总线116时钟的允许。于一实施例中,在通知晶片组114其可于方块322(或方块608)设置STPCLK之后,执行于BSP核心106上的微码208的STRHL常式将等待晶片组114设置STPCLK,而非前进至休眠状态(于方块324或方块614),然后通知其他核心106有关此STPCLK的设置、发布其STOP GRANT讯息,然后进行到休眠状态。依据由I/O读取传输而特别指定的预先决定的I/O连接端口地址,晶片组114可随后抑制在总线116上产生窥探循环。
流程继续至方块324。于方块324,微码208将核心106置于休眠状态。流程于方块324结束。
现在参考图4,一流程图显示图1的系统100的另一元件的操作,其执行分配在多核心微处理器102的多重处理核心106之间的分散式电源管理。更明确而言,流程图显示图3(与图6)的电源状态管理微码208的sync_C-状态常式的一实例的操作。虽然图4为显示微码208的sync_C-状态常式的单一实例的功能性流程图,但将从下面理解到其经由该常式的多重同步实例实现一合成C-状态发现过程。流程于方块402开始。
于方块402,一核心106上的微码208("sync_C-状态微码208")的sync_C-状态常式的一实例被唤醒并接收一输入探测C-状态,在图4中以"A"表示。sync_C-状态常式的一实例可能从MWAIT指令微码208所执行处被唤醒,如相关于图3所说明,在这种情况下,sync_C-状态常式构成sync_C-状态常式的一初始实例。此外,sync_C-状态常式的一实例可能藉由源自另一核心的一同步需求(于此称为一外部地产生的同步需求)而产生,在这种情况下,sync_C-状态常式构成sync_C-状态常式的一从属实例(dependentinstance)。尤其当执行于另一个节点地连接核心上的sync_C-状态常式的一本地实例,可能藉由将一适当的核心间中断传送至本地核心来产生sync_C-状态常式的本地实例。如相关于图6更详细说明的,电源状态管理微码208的一核心间中断处理常式(ICIH)将处理由节点地连接核心106所接收的核心间中断。
流程继续至决定方块404。于决定方块404,如果sync_C-状态常式的这个实例(亦即,"本地实例")是一初始实例,亦即,如果其是从图3的MWAIT指令微码208被唤醒,则流程继续至方块406。否则,本地实例是藉由执行于一节点地连接核心上的sync_C-状态常式的外部或本地实例所产生的一从属实例,而流程继续至决定方块432。
于方块406,sync_C-状态微码208藉由程式化图2的CSR 236来产生在其伙伴核心上的一从属sync_C-状态常式,用以将于方块402所接收的"A"值传送至其伙伴并用以中断伙伴。这将要求伙伴计算一混合C-状态并将其传回至本地核心106,以下将对此做更详细的说明。
流程继续至方块408。于方块408,sync_C-状态微码208程式化CSR 236,用以检测伙伴已传回一混合C-状态至核心106,如果是,则获得伙伴的混合C-状态,在图4中以"B"表示。应注意的是,如果伙伴位于其最活跃的执行状态(most active running state),则"B"的数值将是零。于一实施例中,微码208等待伙伴以响应在一回圈中于方块406做出的请求,此回圈为一预先决定的数值来轮询CSR 236,用以检测伙伴是否已传回一混合C-状态。于一实施例中,此回圈包含一逾时计数器;如果逾时计数器到期,则微码208假设伙伴核心106不再被启动且可被使用、在任何后续的sync_C-状态计算中并不包含供该伙伴用的应用或假设C-状态、以及随后也未试图与伙伴核心106进行通讯。再者,在与其他核心106(亦即,同伴核心与好友核心)的通讯方面,微码208皆以类似方式操作,不管其是否经由核心间通讯配线112或晶片间通讯配线118(或于下所说明的封装体间通讯配线1133)与另一个核心106相通。
流程继续至方块412。于方块412,sync_C-状态微码208为核心106属于其的一部分的晶片104,通过计算"A"与"B"值的最小值来算出一混合C-状态,并以"C"做表示。在一双核心晶片中,"C"将必定是合成C-状态,因为"A"及"B"值表示晶片上的所有(两个)核心的应用C-状态。
流程继续至决定方块414。于决定方块414,如果于方块412所计算的"C"值小于2,或本地核心106并非是管理者核心106,则流程继续至方块416。否则,"C"值至少是2且本地核心106为管理者核心,而流程继续至方块422。
于方块416,常式对于在方块412唤起其(于此是STRHL常式)以计算"C"值的呼叫程序进行回复。流程于方块416结束。
于方块422,sync_C-状态微码208藉由程式化图2的CSR 234产生在其同伴核心上的sync_C-状态常式的一从属实例,用以将于方块412所计算的"C"值传送至其同伴并用以中断同伴。这将要求同伴计算并传回一混合C-状态,并提供其回到这个核心106,如以下更对此做更详细的说明。
在这一点上,应注意sync_C-状态微码208并未在同伴核心中产生sync_C-状态常式的从属实例,直到其已经决定其自己的晶片本身的合成C-状态为止。事实上,于本说明书中所说明的所有的sync_C-状态常式皆依据一相容巢状域走访顺序进行操作。亦即,每个sync_C-状态常式渐进地且有条件地发现合成C-状态,首先是在其为一部分(例如,晶片)的最低域开始,然后,若它是该域的管理者,则以巢状方式往下一个较高层级域进行(例如,在图1的情况下是处理器本身)的,等等。随后讨论的图13,将更进一步显示这种寻访顺序,其中sync_C-状态常式有条件地且渐进地首先发现核心为晶片一部分的合成C-状态,接着寻访它为封装体的一部分(若核心亦为该晶片的管理者),最后寻访整个处理器或系统的(若核心亦为处理器的BSP)。
流程继续至方块424。于方块424,sync_C-状态微码208程式化CSR 234以检测同伴已传回一混合C-状态,并获得混合C-状态,在图4中以"D"表示。在某些情况之下,"D",在某些情形将会,但并不需要全部(如以下与图C中的对应的数值"L"相关的说明)构成同伴的晶片合成C-状态。
流程继续至方块426。于方块426,sync_C-状态微码208藉由计算"C"及"D"值的最小值为多核心微处理器102计算一混合C-状态,其以"E"表示。假设"D"为同伴的晶片合成C-状态,则"E"将构成处理器的合成C-状态,因为"E"将是"C"(如上所述,我们知道的这种晶片的合成C-状态)及"D"(同伴的晶片合成C-状态)的最小值,且在处理器上没有核心被从计算中所省略。如果不是的话,则"E"可能构成处理器的只有一部分的合成C-状态(亦即,这个晶片上的核心与同伴核心的应用C-状态的最小值,而非亦属于同伴的伙伴的应用C-状态的最小值)。流程继续至决定方块428。
于方块428,常式将于方块426所计算的"E"值传回至其呼叫者。流程于方块428结束。
于决定方块432,如果图6的核心间中断处理常式唤醒sync_C-状态常式以因应从核心的伙伴的一中断(亦即,一伙伴唤醒此常式),则流程继续至方块434。否则,核心间中断处理常式唤醒sync_C-状态常式以因应从核心的同伴的一中断(亦即,同伴产生此常式),而流程继续至方块466。
于方块434,核心106被其伙伴所中断,所以sync_C-状态微码208程式化CSR 236,用以获得由伙伴及其所产生常式所递送的探测C-状态,在图4中以"F"表示。流程继续至方块436。
于方块436,sync_C-状态微码208藉由计算其本身的应用C-状态"Y"与探测C-状态"F"(由其伙伴所接收)的最小值来为其晶片104本身计算一混合C-状态,其结果是以"G"表示。在一双核心晶片中,"G"将会是包含核心106的晶片104的合成C-状态,因为在那种情况下,"Y"及"F"将分别表示该晶片的所有(两个)核心的应用C-状态。
流程继续至决定方块438。于决定方块438,如果于方块436所计算的"G"值小于2或核心106并非是管理者核心106,则流程继续至方块442。否则,如果"G"为至少2且核心为管理者核心,则流程继续至方块446。
于方块442,为因应从其伙伴核心间而来的中断请求,sync_C-状态微码208程式化CSR 236,用以将于方块436所计算的"G"值传送至其伙伴。流程继续至方块444。于方块444,sync_C-状态微码208将于方块436所计算的"G"值传回至唤醒它的程序。流程于方块444结束。
于方块446,sync_C-状态微码208藉由程式化图2的CSR 234而在其同伴核心上产生sync_C-状态常式的一从属实例,用以将于方块436所计算的"G"值传送至其同伴,并用以中断同伴。这将要求同伴计算一混合C-状态并将其传回至这个核心106,以下将对此做更详细说明。流程继续至方块448。
于方块448,sync_C-状态微码208程式化CSR 234以检测同伴已传回混合C-状态至核心106,并获得混合C-状态,在图4中以"H"表示。在至少某些而不需要全部的情况中(如与图4C中的对应的数值"L"相关的说明),"H"将构成同伴的晶片的合成C-状态。流程继续至方块452。
于方块452,sync_C-状态微码208藉由计算"G"及"H"值的最小值为多核心微处理器102计算一混合C-状态,并以"J"来表示。假设"H"为同伴的晶片合成C-状态,则"J"将构成处理器的合成C-状态,因为"J"将是"G"(如上所述,我们知道这是该晶片的合成C-状态)及"H"(同伴的晶片合成C-状态)的最小值,且在处理器上没有核心被从计算所省略的话。如果不是的话,则"J"可能构成处理器的只有一部分的合成C-状态(亦即,这个晶片上的核心与同伴核心的应用C-状态的最小值,而非亦属于同伴的伙伴的应用C-状态的最小值)。因此,"H"构成处理器的"至少局部的合成"C-状态。
流程继续至方块454。于方块454,为因应经由从其伙伴的核心间中断请求,sync_C-状态微码208程式化CSR 236,用以将于方块452所计算的"J"值传送至其伙伴。流程继续至方块456。于方块456,常式将于方块452所计算的"J"值传回至唤醒它的程序。流程于方块456结束。
于方块466,核心106被其同伴所中断,所以sync_C-状态微码208程式化CSR 234,用以获得由同伴所产生常式递送的输入探测C-状态于,在图4中以"K"表示。
由于sync_C-状态常式的阶层式寻访顺序,同伴将不会中断此种核心,除非其已经发现其晶片的合成C-状态,所以"K"会是所产生同伴的合成C-状态。又,应注意到因为其被一同伴所中断,这就表示核心106为晶片104的管理者核心106。
流程继续至方块468。于方块468,sync_C-状态微码208藉由计算其本身的应用C-状态"Y"与所接收的同伴合成C-状态"K"值的最小值,来计算处理器的至少局部的合成C-状态,其结果是以"L"表示。
如果"L"为1,则"L"无法是处理器的合成C-状态,因为其并未合并其伙伴的应用C-状态。如果其伙伴的应用C-状态为0,则(未被精确发现下)供处理器用的合成C-状态将是0。然而,纵使不需要被精确发现,处理器的合成C-状态也不大于"L"。在揭示于这个特定临界值触发实施例的电源管理逻辑中,一旦发现一混合C-状态小于2,就知道处理器的合成C-状态亦小于2。小于2的C-状态的实现只具有局部效果,所以更精确的判定合成C-状态并非必要。因此合成C-状态发现过程可能逐渐放松并终止,如于此所显示的。
然而,如果"L"为0,则其必然是处理器的合成C-状态,因为(如上所述)处理器的合成C-状态无法超过处理器的任何一个混合C-状态。于部分说明书提到sync_C-状态常式为计算一"至少局部的合成数值"的微妙处是有好处的。流程继续至决定方块472。
于决定方块472,如果于方块468所计算的"L"值小于2,则流程继续至方块474。否则,流程继续至方块478。应注意的是本发明的其他实施例可省略这种临界值条件(例如,L<2?)以继续一合成C-状态发现过程。在这样的实施例中,处理器的每个启动核心将无条件地决定处理器的合成C-状态。
于方块474,为因应由其同伴而来的核心间中断请求,sync_C-状态微码208程式化CSR 234,用以将于方块468所计算的"L"值传送至其同伴。再者,应注意当同伴接收"L"时,其正接收可能构成处理器的局部合成数值。然而,因为"L"小于2,所以处理器的合成数值亦必定小于2,将排除任何更进一步判断处理器的合成数值的行动(如果"L"为1)。流程继续至方块476。于方块476,常式将于方块468所计算的"L"值传回至其呼叫者。流程于方块476结束。
于方块478,sync_C-状态微码208藉由程式化CSR 236在其伙伴核心上唤醒一从属sync_C-状态常式,用以将于方块468所计算的"L"值传送至其伙伴并用以中断伙伴。这将要求伙伴计算一混合C-状态并将其提供给核心106。可注意到在图1的四核心实施例并以图4的sync_C-状态微码208作说明的架构中,这将相当于请求伙伴提供其最近的请求C-状态(如果有的话)。
流程继续至方块482。于方块482,sync_C-状态微码208程式化CSR 236以检测伙伴已传回一混合C-状态至核心106,并获得伙伴的混合C-状态,在图4中以"M"表示。可注意到如果伙伴处于其最活跃的执行状态时,则"M"的数值将是零。流程继续至方块484。
于方块484,sync_C-状态微码208藉由计算"L"及"M"值的最小值而为多核心微处理器102计算一混合C-状态,以"N"表示。可注意到,在图1的四核心实施例并以图4的sync_C-状态微码208作说明的架构中,"N"必定是处理器的合成C-状态,因为其包含同伴的晶片合成C-状态K、核心自己的应用C-状态A、以及伙伴的应用C-状态(后者是并入由伙伴所传回的混合电源状态M)的最小值,这三个状态一起包含所有四个核心的应用C-状态。
流程继续至方块486。于方块486,为因应经由其同伴而来的核心间中断请求,sync_C-状态微码208程式化CSR 234,用以将于方块484所计算的"N"值传送至其同伴。流程继续至方块488。于方块488,常式将于方块484所计算的"N"值传回至其呼叫者。流程于方块488结束。
现在参考图5所显示的流程图,其显示依据本发明图1的系统100,用以执行分配在多核心微处理器102的多重处理核心106间的分散式电源管理的操作。更明确而言,此流程图显示藉由电源状态管理微码208的唤起与重新开始(wake-and-resume)常式的核心,以因应核心106被一事件从一休眠状态(例如从图3的方块306、316或324,或从图6的方块614进入)唤醒后的操作。流程于方块502开始。
于方块502,核心106因应一事件而从其休眠状态醒来,并藉由提取及执行微码208的一指令处理程序而重新开始。事件可能包含但并未受限于:一核心间中断,亦即经由核心间通讯配线112或晶片间通讯配线118(或图11实施例的封装体间通讯配线1133)从另一核心106而来的中断;藉由晶片组114的总线116上的STPCLK信号的设置;藉由晶片组114在总线116上对STPCLK信号解除设置(deassertion);以及另一型式的中断,例如一外部中断要求信号的设置,例如可能藉由一周边装置(例如USB装置)而产生。流程继续至决定方块504。
于决定方块504,唤起与重新开始常式判断核心106是否被另一核心106的中断所唤起。如果是,则流程继续至方块506;否则,流程继续至决定方块508。
于方块506,一核心间中断常式掌控核心间中断,如相关于图6所详细说明的。流程于方块506结束。
于决定方块508,唤起与重新开始常式判断核心106是否被藉由晶片组114在总线116上设置STPCLK信号置所唤起。如果是,则流程继续至方块512;否则,流程继续至决定方块516。
于方块512,为因应于图3的方块322或于图6的方块608所执行的I/O读取传输,晶片组114已设置STPCLK请求移除总线116时钟的允许。回应于此,核心106微码208在总线116上发布一STOP GRANT讯息,以通知晶片组114其可能移除总线116时钟。如上所述,于一实施例中,晶片组114将持续等待,直到所有核心106已发布STOP GRANT讯息后再移除总线116时钟。而在另一实施例中,可在单一核心106已发布STOP GRANT讯息之后,由晶片组114移除总线116时钟。流程继续至方块514。
于方块514,核心106返回至休眠。而晶片组114将移除总线116时钟,以便减少因多核心微处理器102的电源消耗,如上所述。最后,晶片组114将恢复总线116时钟,然后解除设置STPCLK,以便使核心106回复至它们的执行状态,俾能使它们可以执行使用者指令。流程于方块514结束。
于决定方块516,唤起与重新开始常式判断核心106是否藉由晶片组114于总线116上的STPCLK信号的解除设置所唤起。如果是,则流程继续至方块518;否则,流程继续至方块526。
于方块518,为因应一事件(例如系统计时器中断或周边中断),晶片组114已恢复总线116时钟并解除设置STPCLK以使核心106再开始执行。回应于此,唤起与重新开始常式解除于方块308所执行的电源节约动作。举例而言,微码208可能使电源恢复予核心106局部快取、增加核心106时钟频率、或增加核心106操作电压。此外,核心106可能使电源恢复予共用快取,举例而言,如果核心106为BSP。流程继续至方块522。
于方块522,唤起与重新开始常式读取并写入CSR 234与236,用以通知所有其他核心106这个核心106已醒来且再度执行。唤起与重新开始常式可储存"0"以作为核心的应用或者最新的有效要求C-状态。流程继续至方块524。
于方块524,唤起与重新开始常式终止并将控制返回至指令译码器204,以重新开始译码提取的使用者程式指令(例如,x86指令)。具体言之,典型的使用者指令提取与执行将在MWAIT指令之后的指令重新开始。流程于方块524结束。
于方块526,唤起与重新开始常式处理其他中断事件,例如上述相关于方块502者。流程于方块526结束。
现在参考图6所显示的流程图,其显示本发明图1的系统100用以执行分配在多核心微处理器102的多重处理核心106之间的分散式电源管理操作。更明确而言,此流程图显示微码208的核心间中断处理常式(ICIHR)的操作,其是因应接收一核心间中断,亦即经由核心间通讯配线112或晶片间通讯配线118(例如可能于图4的方块406、422、446或478所产生的)从另一核心106的中断所执行的操作。微码208可能藉由轮询(如果微码208已经执行)采取一核心间中断、或者微码208可能采取一核心间中断以作为在使用者程式指令之间的一真正的中断、或者中断可能使微码208从核心106正休眠的状态唤醒。
流程于方块604开始。于方块604,中断核心106的ICIHR依据图4呼叫一本地sync_C-状态常式,以继续由另一核心所开始的同步化电源状态发现过程。回应于此,其获得供多核心微处理器102的至少一局部合成C-状态,图6中以"PC"表示。ICIHR呼叫具有一输入值"Y"的sync_C-状态微码208,其是由外部sync_C-状态常式所递送的探测C-状态,而本地sync_C-状态常式将依附(will depend)于外部sync_C-状态常式。又,大于或等于2的数值表示"PC"为一种多核心微处理器102的所有核心106的完全且非仅是局部的合成C-状态,并表示处理器的所有核心106已接收指定"PC"或更大的C-状态数值的一MWAIT指令。
流程继续至方块606。于方块606,微码208决定于方块604所获得的"PC"的数值是否大于或等于2,以及核心106是否被授权以执行或允许"PC"C-状态的执行(例如,核心106为BSP)。如果是,则流程继续至方块608;否则,流程继续至决定方块612。
于方块608,核心106(例如,当BSP核心106被授权如此做时)通知晶片组114其可能要求移除总线116时钟的许可,如于上述的方块322。流程继续至决定方块612。
于决定方块612,微码208决定其是否从休眠被唤起。如果是,则流程继续至方块614;否则,流程继续至方块616。
于方块614,微码208返回至休眠。流程于方块614结束。
于方块616,微码208离开并归还控制权返回至指令译码器204,并重新开始对所提取的使用者程式指令进行解译。流程于方块616结束。
现在参考图7所显示的流程图,其显示本发明图1的系统100依据图3至6所说明流程的操作实例。在图7的例子中,使用者程式同时有效地在核心106上执行,每个执行一MWAIT指令。相较之下,在图8的例子中,使用者程式有效地在核心106上执行,每个于不同的时间执行一MWAIT指令,亦即在另一核心已执行一MWAIT指令而进入休眠之后才执行。这些例子一起显示核心106的微码208的特征,以及它们在各种核心106上处理不同顺序MWAIT指令的能力。图7包含四行,每行对应于图1的四个核心106的每一个。如以上相关于图1所显示与所述者,核心0与核心2为它们的晶片104的管理者核心,而核心0为多核心微处理器102的BSP。图7的每行表示由各个核心106所采取的动作。图7每列的动作向下流程则表示时间的经过。
首先,每个核心106遇到一个由各种C-状态所指定的MWAIT指令(于方块302)。在图7的例子中,送至核心0与核心3的MWAIT指令指定4的C-状态,而送至核心1与核心2的MWAIT指令指定5的C-状态。每一个核心106回应地执行其相关的电源节约动作(于方块308),并将所接收的目标C-状态("X")储存为其所应用的以及最近的有效要求C-状态"Y"。
其次,每个核心106将其应用C-状态"Y"作为一探测C-状态传送至其伙伴(于方块406),如以具有"A"标记值的箭号所表示。每个核心106接着接收其伙伴的探测C-状态(于方块408),并计算其晶片104合成C-状态"C"(于方块412)。在此例子中,由每个核心106所计算的"C"值为4。因为核心1及核心3并非是管理者核心,所以它们两者前进至休眠(于方块324)。
因为核心0与核心2是管理者核心,所以它们彼此(亦即,它们的同伴)传送各自的"C"值给对方(于方块422),如以具有"C"标记值的箭号所表示。它们每个接收其同伴的晶片合成C-状态(于方块424),并计算多核心微处理器102合成C-状态"E"(于方块426)。在此例子中,由每一个核心0与核心2所计算的"E"值为4。因为核心2并非是BSP核心106,所以其进行到休眠(于方块324)。
因为核心0为BSP,所以其通知晶片组114可能要求移除总线116时钟的许可(于方块322),例如,设置STPCLK。更明确而言,核心0通知晶片组114有关多核心微处理器102合成C-状态为4,然后核心0进行到休眠(于方块324)。依据由于方块322所初始化的I/O读取传输而特别指定的预定I/O连接端口地址,晶片组114可随后抑制在总线116上产生窥探循环。
当所有的核心106休眠时,晶片组114设置STPCLK将唤醒每个核心106(于方块502)。每一个核心106回应地发布一STOP GRANT讯息给晶片组114(于方块512),然后返回至休眠(于方块514)。核心106可能休眠持续一段不明确的时间量,在没有电源节约动作与休眠的益处下,仍可比它们正常操作时消耗更少的电源。
最后,发生一唤醒事件。在此例子中,晶片组114解除设置STPCLK,其唤醒每一个核心106(于方块502)。每一个核心106回应地解除其先前的电源节约动作(于方块518),并离开其微码208且恢复至提取并执行使用者码(于方块524)。
现在参考图8所显示的流程图,其显示依据本发明图1的系统100依据图3至6所说明操作流程的第二实例。图8的流程图类似于图7;然而,在图8的例子中,每个有效地在核心106上执行的使用者程式于不同的时间执行一MWAIT指令,亦即在另一个核心在执行一MWAIT指令且已前进至休眠之后才执行。
核心3首先遇到一个具有特定目标C-状态"X"为4的MWAIT指令(于方块302)。核心3回应地执行其相关的电源节约动作(于方块308),并将"X"储存为其应用C-状态,以下更进一步以"Y"表示。核心3接着将其应用C-状态作为一探测C-状态传送至其伙伴,核心2,(于方块406),如以具有"A"标记值的箭号所表示,其将中断核心2。
核心2被其伙伴核心3所中断(于方块604)。因为核心2仍然处于一执行状态,所以其自己的应用C-状态为0,以"Y"表示(在方块604中)。核心2接收核心3的探测C-状态(于方块434),以"F"表示并具有4的数值。核心2接着计算其晶片104合成C-状态"G"(于方块436),并将0的"G"值传回至其伙伴核心3(于方块442)。然后,核心2离开其微码208并回复至使用者码(于方块616)。
核心3接收其伙伴核心2的0的同步C-状态"B"(于方块408)。核心3接着又计算其晶片104合成C-状态"C"(于方块412)。因为"C"的数值为0,所以核心3进行到休眠(于方块316)。
核心2随后遇到一个具有特定目标C-状态"X"为5的MWAIT指令(于方块302)。核心2回应地执行相关的电源节约动作(于方块308),并将"X"储存为其应用C-状态,随后对核心2以"Y"表示。核心2接着将"Y"(其为5)作为一探测C-状态传送至其伙伴,核心3,(于方块406),如以具有"A"标记值的箭号所表示,其将中断核心3。
核心3是被唤醒核心3的其伙伴核心2所中断(于方块502)。因为核心3之前遇到C-状态为4的MWAIT指令,且该数值仍然是正确的,其应用C-状态为4,以"Y"表示(在方块604中)。核心3接收核心2的探测C-状态(于方块434),以"F"表示并具有5的数值。核心3接着计算其晶片104合成C-状态"G"(于方块436)以作为探测C-状态的最小值(亦即,5)、以及自己的应用C-状态(亦即,5),并将4的"G"值作为一混合C-状态传回至其伙伴核心2(于方块442)。核心3接着返回至休眠(于方块444)。
核心2接收其伙伴核心3的混合C-状态(于方块408),以"B"表示并具有4的数值,然后计算其晶片104合成C-状态"C"值(于方块412)作为混合C-状态的一最小值(亦即,4)、以及自己的应用C-状态(亦即,4)。因为核心2已发现其最低层次域的合成C-状态是至少为2的数值,但作为该域的管理者的核心2则属于一较高层级的同属性群组,所以其(核心2)接着将自己的"C"值(为4)传送至其同伴核心0(于方块422),其将中断核心0。
核心0是被其同伴核心2所中断(于方块604)。因为核心0处于一执行状态,所以其应用C-状态为0,以"Y"表示(在方块604中)。核心0接收核心2的探测C-状态(于方块466),以"K"表示并具有4的数值。然后,核心0计算其混合C-状态"L"(于方块468),并将0的"L"值传送至其同伴核心2(于方块474)。接着,核心0离开其微码208并回复至使用者码(于方块616)。
核心2接收其同伴核心0的混合C-状态(于方块424),以"D"表示并具有0的数值,然后计算其自己混合C-状态(于方块426),其是以"E"表示。因为"E"值为0,所以核心2进行到休眠(于方块316)。
核心0接着遇到一个特定目标C-状态"X"为4的MWAIT指令(于方块302)。核心0回应地执行相关的电源节约动作(于方块308),并将"X"储存为其应用C-状态,以"Y"表示。然后,核心0将"Y"(其为4)作为一探测C-状态传送至其伙伴,核心1,(于方块406),以具有"A"标记值的箭号表示,其将中断核心1。
核心1是被其伙伴核心0所中断(于方块604)。因为核心1仍然处于一执行状态,所以其应用C-状态为0,以"Y"表示(在方块604中)。核心1接收核心0的探测C-状态(于方块434),以"F"表示并具有4的数值。核心1接着计算其晶片104合成C-状态"G"(于方块436),并将0的"G"值传回至其伙伴核心0(于方块442)。然后,核心1离开其微码208并回复至使用者码(于方块616)。
核心0接收其伙伴核心1的数值为0的混合C-状态"B"(于方块408)。核心0接着计算其晶片104合成C-状态"C"(于方块412)。因为"C"的数值为0,所以核心0进行到休眠(于方块316)。
核心1随后遇到一个具有特定目标C-状态"X"为3的MWAIT指令(于方块302)。核心1回应地将"X"储存为其应用电源状态"Y",并执行相关的电源节约动作(于方块308)。然后,核心1将其应用C-状态"Y"(为3)传送至其伙伴,核心0,(于方块406),如以具有"A"标记值的箭号表示,其将中断核心0。
核心0是被唤醒核心0的伙伴核心1所中断(于方块502)。因为核心0以前遇到目标C-状态为4的MWAIT指令,所以其应用C-状态为4,以"Y"表示(在方块604中)。核心0接收核心1的探测C-状态(于方块434),以"F"表示并具有3的数值。核心0接着计算其晶片104合成C-状态"G"(于方块436),并将3的"G"值传送至其同伴核心2(于方块446),其将中断核心2。
核心2是被其同伴核心0所中断(于方块604),同伴核心0唤醒核心2(于方块502)。因为核心2之前遇到C-状态为5的MWAIT指令,所以其应用C-状态为5,以"Y"表示(在方块604中)。核心2接收核心0的探测C-状态(于方块466),以"K"表示并具有3的数值。核心2接着计算一"混合"C-状态"L"(于方块468),并将3的"L"值传送至其伙伴核心3(于方块474),其将中断核心3。
核心3是被唤醒核心3的伙伴核心2所中断(于方块502)。因为核心3之前遇到C-状态为4的MWAIT指令,所以其应用C-状态为4,以"Y"表示(在方块604中)。核心3接收核心2的C-状态(于方块434),以"F"表示并具有3的数值。核心3接着计算一混合C-状态"G"(于方块436),并将3的"G"值传送至其伙伴核心2(于方块442)。因为"G"现在负责每一个核心的应用C-状态,所以"G"构成多核心处理器102合成C-状态。然而,因为核心3并非是BSP且从休眠被唤起,所以核心3返回至休眠(于方块614)。
核心2接收其伙伴核心3的数值为3的混合C-状态"M"(于方块482)。核心2接着计算一混合C-状态"N"(于方块484)。然后,核心2将3的"N"值传送至其同伴核心0(于方块486)。再者,因为"N"负责每一个核心的应用C-状态,所以"N"亦需要构成多核心处理器102合成C-状态。然而,因为核心2并非是BSP且从休眠被唤起,所以核心2返回至休眠(于方块614)。
核心0接收其同伴核心2的数值为3的C-状态"H"(于方块448)。核心0接着又计算混合C-状态"J"(数值为3)(于方块452),并将其传送至伙伴核心1(于方块454)。再者,因为"J"负责每一个核心的应用C-状态,所以"J"亦需要构成多核心处理器102合成C-状态。又因为核心0为BSP,所以其通知晶片组114要求移除总线116时钟的许可(于方块608)。更明确而言,核心0通知晶片组114多核心微处理器102合成C-状态为3。然后,核心0进行到休眠(于方块614)。
核心1接收其伙伴核心0的数值为3的C-状态"B"(于方块408)。核心1亦计算一混合C-状态"C"(于方块412),其为3且其亦构成多核心处理器102合成的C-状态。因为核心1并非是BSP,所以核心1进行到休眠(于方块316)。
现在所有核心106就像它们在图7的例子般是处于休眠状态,且事件的进行方式亦类似于图7所说明的方式,亦即,晶片组114设置STPCLK并唤醒核心106,等等。
明显地,藉由这个最终同步化电源状态发现过程完成的期间,所有的核心已各别计算多核心处理器102合成C-状态。
于一实施例中,微码208被设计成无法被中断。因此,在图7的例子中,当每个核心106的微码208被唤醒以处理其各个MWAIT指令时,当另一个核心106试图中断微码208时它并未被中断。取而代的的是,举例而言,核心0看到核心1已送出其C-状态,并于方块408获得来自核心1的C-状态,认为核心1于方块406送出其C-状态以因应核心0中断核心1。同样地,核心1看到核心0已送出其C-状态,并于方块408获得来自核心1的C-状态,认为核心0于方块406送出其C-状态以因应核心1的中断核心0。因为核心0与核心1的每个在计算至少局部合成的C-状态时将其他核心106的C-状态纳入考量,所以每个核心106将计算至少局部合成的C-状态。因此,举例而言,核心1将计算至少局部合成的C-状态,无论核心0是否将其C-状态送出至核心1以因应接收来自核心1的一中断或者因应遇到一MWAIT指令,在这种情况下,两个C-状态可同时跨越核心间通讯配线112(或跨越晶片间通讯配线118,或跨越封装体间通讯配线1133,于图11的本实施例中)而传送。因此,有利的是,微码208可适当地操作以执行多核心微处理器102的核心106间的分散式电源管理,而不管由各种核心106所接收MWAIT指令的事件的顺序为何。
如可从前文观察到的,广义来说,当一核心106遇到一MWAIT指令时,其首先与其伙伴交换C-状态信息,且两个核心106基于两个核心106的C-状态而为晶片104计算一至少局部合成的C-状态,但是例如在双核心晶片的情况下,其将是相同的数值。管理者核心106只在计算晶片104合成C-状态之后,接着与它们的同伴交换C-状态信息,且两者基于两个晶片104的合成C-状态为多核心微处理器102所计算的合成C-状态将是相同的数值。依据此种方法,可得到的好处是,不管核心106接收它们的MWAIT指令的顺序为何,所有核心106计算相同的合成C-状态。再者,较佳是,不管核心106接收它们的MWAIT指令的顺序为何,它们以一种分配式方式彼此协调,以使多核心微处理器102可作为单一实体与晶片组114沟通有关要求参与相对于多核心微处理器102是全域性的电源节约动作的许可,例如移除总线116时钟。有利的是,这种分配式C-状态同步以达成电源管理的实施样态,是在不需要使用位于的晶片104上但位于核心106外部的执行电源管理的专用硬件的情形下被执行,其可能提供下述优点:可调(尺寸的)能力、可重组性、良率特性、电源减少以和/或晶片实际尺寸减少。
可注意到,具有不同数目及配置的核心106的其他多核心微处理器实施例的每个核心106可能采用类似的微码208,如相关于图3至6所说明的。举例而言,一种在单一晶片104(例如图18所示)中具有两个核心106的双核心微处理器1802实施例的每个核心106可能采用类似的微码208,如相关于认定每个核心106只具有一伙伴且没有同伴的图3至6所说明的。同样地,一种具有两个单核心晶片104(例如图19所示)的双核心微处理器1902实施例的每个核心106可能采用类似的微码208,如相关于认定每个核心106只具有一同伴且没有伙伴(或者重新指派核心106为同伴)的图3至6所说明的。同样地,一种具有单核心单一晶片封装体104(例如图20所示)的双核心微处理器2002实施例的每个核心106可能采用类似的微码208,如相关于认定每个核心106只具有一好友且没有同伴或伙伴(或者重新指派核心106为同伴)的图3至6所说明的。
再者,其他具有核心106的不对称配置(例如图21及22所显示者)的多核心微处理器实施例的每个核心106,可能采用相对于图3至6而改变的类似微码208,例如以下相关于图10、13以及17所述。再者,除于此所说明的具有不同数目及配置的核心106和/或封装体(其采用以下相关于图3至6以及10、13与17所说明的核心106的微码208的操作组合)之外的系统实施例等,亦被本发明所考虑在内并得以依实际应用做等效修饰。
现在参考图9所显示的方块图,其显示本发明的计算机系统900执行分配在一多核心微处理器902的多重处理核心106间的分散式电源管理的一替代实施例。系统900类似于图1的系统,而多核心微处理器902是类似于图1的多核心微处理器102;然而,多核心微处理器902为一种八核心微处理器902,其包含组织在单一微处理器封装体上的四个双核心晶片104,以晶片0、晶片1、晶片2以及晶片3表示。晶片0包含核心0与核心1,而晶片1包含核心2与核心3,类似于图1;此外,晶片2包含核心4与核心5,而晶片3包含核心6与核心7。在每个晶片之内,核心为彼此的伙伴,但每个晶片选择一核心被标示为该晶片的管理者。
封装体上的晶片管理者具有多条将每个晶片连接至每隔一个晶片的晶片间通讯配线。这允许一协调系统的实现,于其中晶片管理者包含一同侪合作(peer-collaborative)同属性群组的成员;亦即,每个晶片管理者是能够与封装体上的任何其他晶片管理者协调。晶片间通讯配线118是被设计如下。晶片0的OUT接触垫、晶片1的IN 1接触垫、晶片2的IN 2接脚以及晶片3的IN 3接脚是经由单一配线网耦接至接脚P1;晶片1的OUT接触垫、晶片2的IN 1接触垫、晶片3的IN 2接触垫以及晶片0的IN 3接触垫是经由单一配线网耦接至接脚P2;晶片2的OUT接触垫、晶片3的IN 1接触垫、晶片0的IN 2接触垫以及晶片1的IN 3接触垫是经由单一配线网耦接至接脚P3;晶片3的OUT接触垫、晶片0的IN 1接触垫、晶片1的IN 2接触垫以及晶片2的IN 3接触垫是经由单一配线网耦接至接脚P4。
当每一个管理者核心106想要与其他晶片104沟通时,将传输其OUT接触垫108上的信息,且此信息广播至其他晶片104,并经由适当的IN接触垫108被各自的管理者核心106所接收。如可从图9观察到的,有利的是每个晶片104上的接触垫108的数目与封装体902上接脚P的数目(亦即,关于分配在于此所说明的多重核心之间的分散式电源管理的接触垫与接脚;而,多核心微处理器102当然可包含用于其他目的的其他接触垫与接脚,例如数据、地址以及控制总线)是不大于晶片104的数目,其为一相当小的数目。这在一接触垫有限的和/或接脚有限的设计上特别有利,而这可能是共通的,因为标准晶片/封装体上的接触垫/接脚数目是有规范的,对于微处理器制造商而言尝试去遵循这些标准数值有其经济效益,而在这种情形下可能已使用大部分的接触垫/接脚。再者,说明于下的替代实施例,其每个晶片104上的接触垫108的数目为或可能为小于晶片104的数目。
现在参考图10所显示的流程图,其显示依据本发明图9的系统900执行分配在八核心微处理器902的多重处理核心106间的分散式电源管理的操作流程。更明确而言,图10的流程图显示图3(与图6)sync_C-状态微码208的操作,类似于图4的流程图,其在许多方面是相似的,且相同号码的方块是类似的。然而,在图10的流程图中所说明的核心106的sync_C-状态微码208负责八个核心106存在的情形而非于图1的本实施例中的四个核心106,而现在说明差异。尤其,晶片104的每个管理者核心106具有三个同伴核心106而非一个同伴核心106。此外,管理者核心106一起界定一同侪合作同属性群组,于其中任何同伴可以直接任何其他同伴协调,无须藉由封装体管理者或BSP来仲裁。
流程开始于图10中的方块402,并继续经由方块416,如相关于图4所说明者。然而,图10并不包含方块422、424、426或428。反之,流程继续从决定方块414离开"NO"分支至决定方块1018。
于决定方块1018,sync_C-状态微码208决定所有其同伴是否已被造访,亦即,核心106是否已经由方块1022与1024与每一个同伴交换C-状态。如果是,则流程继续至方块416;否则,流程继续至方块1022。
于方块1022,sync_C-状态微码208藉由程式化图2的CSR 234在其下一个同伴上产生sync_C-状态的新实例,用以将"C"值传送至其下一个同伴,并用以中断同伴。在第一同伴的情况中,所送出的"C"值是于方块412被计算出;在剩下的同伴的情况中,"C"值是于方块1026被计算出。在包含方块414、1018、1022、1024以及1026的回圈中,微码208追踪已造访的同伴,以确保其已造访它们每一个(除非于决定方块414被发现是真实的状况)。
流程继续至方块1024。于方块1024,sync_C-状态微码208程式化CSR234以检测下一个同伴已传回一混合C-状态,并获得混合C-状态,以"D"表示。
流程继续至方块1026。于方块1026,sync_C-状态微码208藉由计算"C"与"D"值的最小值,来计算一最近计算的本地混合C-状态,以"C"表示。流程回复至决定方块414。
流程继续从图10中的方块434,并继续经由方块444,如相关于图4所说明的。然而,图10并不包含方块446、448、452、454或456。反之,流程继续从决定方块438离开"NO"分支至决定方块1045。
于决定方块1045,sync_C-状态微码208决定所有其同伴是否已被造访,亦即,核心106是否已经由方块1046与1048与每一个同伴交换C-状态。如果是,则流程继续至方块442;否则,流程继续至方块1046。
于方块1046,sync_C-状态微码208藉由程式化CSR 234在其下一个同伴上产生sync_C-状态常式的新实例,用以将"G"值传送至其下一个同伴,并用以中断同伴。在第一同伴的情况中,所送出的"G"值是于方块436所计算;在剩下的同伴的情况中,"G"值是于方块1052被计算出。
流程继续至方块1048。于方块1048,微码208程式化CSR 234以检测下一个同伴已传回一混合C-状态至核心106,并获得混合C-状态,以"H"表示。
流程继续至方块1052。于方块1052,sync_C-状态微码208藉由计算"G"与"H"值的最小值来计算一最近计算的本地混合C-状态,以"G"表示。流程回复至决定方块438。
流程继续从图10中的方块466,并继续经由方块476,如相关于图4所说明者。可注意到于方块474中,同伴(核心106传送"L"值给它)是中断核心106的同伴。此外,流程继续从图10中的决定方块472离开"NO"分支,并继续经由方块484,如相关于图4所说明者。然而,图10并不包含方块486或488。反之,流程继续从方块484至决定方块1085。
于决定方块1085,如果"L"值小于2,则流程继续至方块474;否则,流程继续至决定方块1087。在流程从方块484继续至决定方块1085的情况中,"L"值是于方块484被计算出;在流程从方块1093继续至决定方块1085的情况中,"L"值是于方块1093被计算出。流程继续至决定方块1087。
于决定方块1087,synch_C-状态微码208判断所有同伴是否已被造访,亦即,核心106是否已经与每一个同伴交换C-状态或从每一个同伴接收C-状态。在中断同伴的情况下,C-状态是经由方块466被接收(且将经由方块474被送出);因此,中断的同伴是被视为已经被造访;剩下的同伴中,C-状态是经由方块1089与1091被交换。如果所有同伴已被造访,则流程继续至方块474;否则,流程继续至方块1089。
于方块1089,微码208藉由程式化CSR 234在其下一个同伴上产生sync_C-状态常式的一新实例,用以将"L"值传送至其下一个同伴,并用以中断同伴。在第一同伴的情况中,所送出的"L"值是于方块484被计算出;在剩下的同伴的情况中,"L"值是于方块1093被计算出。
流程继续至方块1091。于方块1091,微码208程式化CSR 234以检测下一个同伴已传回一混合C-状态至核心106,并获得混合C-状态,以"M"表示。
流程继续至方块1093。于方块1093,sync_C-状态微码208藉由计算"L"与"M"值的最小值来计算本地混合C-状态的最近计算的数值,以"L"表示。流程回复至决定方块1085。
现在参考图11所显示的方块图,其显示本发明的计算机系统1100执行分配在两个多核心微处理器102的多重处理核心106间的分散式电源管理的一种替代实施例。系统1100是类似于图1的系统100,且两个多核心微处理器102每个是类似于图1的多核心微处理器102;然而,此系统包含耦接在一起的两个多核心微处理器102,用以提供一种八核心系统1100。因此,图11的系统1100亦类似于图9的系统900,其包含四个双核心晶片104,以晶片0、晶片1、晶片2以及晶片3表示。晶片0包含核心0与核心1,晶片1包含核心2与核心3,晶片2包含核心4与核心5,而晶片3包含核心6与核心7。然而,晶片0与晶片1是包含在第一多核心微处理器封装体102中,而晶片2与晶片3是包含在第二多核心微处理器封装体102中。因此,虽然核心106是被分配在图11的本实施例中的多重多核心微处理器封装体102之间,然而核心106共用某些电源管理相关的资源,亦即由晶片组114与晶片组114所提供的用以窥探或不窥探总线116时钟在处理器总线上快取的策略,因此晶片组114可由预先决定的I/O连接端口地址,而期望总线116上的单一I/O读取传输。此外,两个封装体102的核心106潜在地共用一VRM,而晶片104的核心106可能共用一PLL,如上所述。有利的是,图11的系统1100的核心106(尤其核心106的微码208)是被设计成与彼此沟通,用以如于此以及CNTR.2534中所说明的,藉由使用核心间通讯配线112、晶片间通讯配线118以及封装体间通讯配线1133(说明于下),以分散方式在协调共用电源管理相关的资源的控制。
第一多核心微处理器102的晶片间通讯配线118是如图1中的设计。然而,第二多核心微处理器102的接脚是以"P5"、"P6"、"P7"以及"P8"表示,且第二多核心微处理器102的晶片间通讯配线118是被设计如下。晶片2的IN 2接触垫与晶片3的IN 3接触垫经由单一配线网耦接至接脚P5;晶片2的IN 1接触垫与晶片3的IN 2接触垫是经由单一配线网耦接至接脚P6;晶片2的OUT接触垫与晶片3的IN 1接触垫经由单一配线网耦接至接脚P7;晶片3的OUT接触垫与晶片2的IN 3接触垫经由单一配线网耦接至接脚P8。再者,经由系统1100的主机板的封装体间通讯配线1133,第一多核心微处理器102的接脚P1耦接至第二多核心微处理器102的接脚P7,以使晶片0的OUT接触垫、晶片1的IN 1接触垫、晶片的IN 2接触垫,以及晶片3的IN 3接触垫是经由单一配线网而全部耦接在一起;第一多核心微处理器102的接脚P2耦接至第二多核心微处理器102的接脚P8,以使晶片1的OUT接触垫、晶片2的IN 1接触垫、晶片3的IN 2接触垫,以及晶片0的IN 3接触垫是经由单一配线网而全部耦接在一起;第一多核心微处理器102的接脚P3是耦接至第二多核心微处理器102的接脚P5,以使晶片0的OUT接触垫、晶片1的IN 1接触垫、晶片2的IN 2接触垫,以及晶片3的IN 3接触垫是经由单一配线网而全部耦接在一起;第一多核心微处理器102的接脚P4耦接至第二多核心微处理器102的接脚P6,以使晶片0的OUT接触垫、晶片1的IN 1接触垫、晶片2的IN 2接触垫,以及晶片3的IN 3接触垫是经由单一配线网而全部耦接在一起。图2的CSR 234亦耦接至封装体间通讯配线1133,用以启动微码208以程式化CSR 234而经由封装体间通讯配线1133与其他核心106沟通。因此,每个晶片104的管理者核心106是被启动以经由封装体间通讯配线1133与晶片间通讯配线118而与其他晶片104的管理者核心106(亦即,其同伴)沟通。当每一个管理者核心106想要与其他晶片104沟通时,其传输在其OUT接触垫108上的信息,且此信息是广播至其他晶片104并藉由经由适当的IN接触垫108被各自管理者核心106所接收。如可能从图11观察到的,有利的是,相对于每个多核心微处理器102,每个晶片104上的接触垫108的数目与封装体102上的接脚P的数目不大于晶片104的数目,其为相当小的数目。
再者,请注意对于晶片104的一既定管理者核心106而言,每隔一个晶片104的管理者核心106为既定管理者核心106的"同伴"核心106,可从图11观察到核心0、核心2、核心4以及核心6为类似于图9中配置的同伴,即使在图9中,所有的四个晶片104是包含于单一个八核心微处理器封装体902中,而在图11中,四个晶片104是包含于两个分离的四核心微处理器封装体102中。因此,相关于图10所说明的微码208是被设计成如在图11的系统1100中操作。此外,所有四个同伴核心106一起形成一同侪合作同属性群组,其中每个同伴核心106是在没有仲裁的情况下被启动,以在无论哪一个同伴核心106被指定为BSP核心都可直接与任何其他的同伴核心106进行协调。
更进一步注意到,虽然接脚P在多处理器实施例(例如图11与图12的所示者)中是需要的,但如果必要的话,接脚可能在单一多核心微处理器102实施例中被省略,虽然它们对于除错目的是有益的。
现在参考图12所显示的方块图,其显示依据本发明计算机系统1200执行分配在两个多核心微处理器1202的多重处理核心106间的分散式电源管理的一替代实施例。系统1200是类似于图11的系统1100,而多核心微处理器1202是类似于图11的多核心微处理器102。然而,系统1200的八个核心是依据一较深的阶层式协调系统并藉由旁路配线被组织且以实体连接。
每个晶片104只具有三个接触垫108(OUT、IN 1以及IN 2),用以耦合至晶片间通讯配线118;每个封装体1202只具有两个接脚,在第一多核心微处理器1202上以P1与P2表示,以及在第二多核心微处理器1202上以P3与P4表示;而连接图12的两个多核心微处理器1202的晶片间通讯配线118与封装体间通讯配线1133具有不同于图11中对应元件的配置。
在图12的系统1200中,核心0与核心4被指定为它们各自的多核心微处理器1202的"封装体管理者"或"p管理者"。再者,除非另有说明,否则专门用语"好友"于此是用以表示彼此通讯的不同封装体1202上的管理者核心106;因此,于图12的本实施例中,核心0与核心4为好友。第一多核心微处理器1202的晶片间通讯配线118是被设计如下。在第一封装体1202之内,晶片0的OUT接触垫与晶片1的IN 1接触垫经由单一配线网耦接至接脚P1;晶片1的OUT接触垫与晶片0的IN 1接触垫经由单一配线网耦接;而晶片0的IN 2接触垫是耦接至接脚P2。在第二封装体1201之内,晶片2的OUT接触垫与晶片3的IN 1接触垫经由单一配线网耦接至接脚P3;晶片3的OUT接触垫与晶片2的IN 1接触垫经由单一配线网耦接;而晶片2的IN 2接触垫是耦接至接脚P4。再者,经由系统1200的主机板的封装体间通讯配线1133,接脚P1是耦接至接脚P4,以使晶片0的OUT接触垫、晶片1的IN 1接触垫,而晶片2的IN 2接触垫经由单一配线网而全部耦接在一起;以及接脚P2是耦接至接脚P3,以使晶片2的OUT接触垫、晶片3的IN 1接触垫,以及晶片0的IN 2接触垫经由单一配线网而全部耦接在一起。
因此,不像在图9的系统900中以及在图11的系统1100中,于其中每个管理者核心106可与其他管理者核心106通讯,在图12的系统1200中,只有管理者核心0与管理者核心4可彼此沟通(亦即,经由于此所说明的旁路配线)。图12的实施例胜过图11的一项优点为相关于每个多核心微处理器1202,每个晶片104上的接触垫108数目(1)比晶片104的数目小,以及每个封装体1202上的接脚P数目(2)比晶片104的数目小,其为一相当小的数目。此外,在核心106之间的C-状态交换的数目可能更少。于一实施例中,为了除错的目的,第一多核心微处理器1202亦包含耦接至晶片1的OUT接触垫108的一第三接脚,而第二多核心微处理器1202亦包含耦接至晶片3的OUT接触垫108的一第三接脚。
现在参考图13所显示的流程图,其显示依据本发明图12的系统1200用以执行分配在双四核心微处理器1202(八个核心)系统1200的多重处理核心106间的分散式电源管理操作。更明确而言,图13的流程图显示图3(与图6)sync_C-状态微码208的操作,类似于图4与10的流程图,其在许多方面是相似的,且相同号码的方块是类似的。然而,在图13的流程图中所说明的核心106的sync_C-状态微码208所负责的晶片间通讯配线118及封装体间通讯配线1133的配置在图12的系统1200与图11的系统1100两者之间是不同的,特别是某些管理者核心106(亦即核心2及核心4)并未被设计成与系统1200的所有其他管理者核心106直接沟通,但取而代的的是好友(核心0及核心4)以一种阶层式方式向下传递至它们的同伴(分别为核心2与核心6),其再依序向下传递至它们的伙伴核心106。现在说明这些差异。
流程开始于图13中的方块402,并继续前进至方块424,如相关于图4所说明者。然而,图10并未包含方块426或428。反之,流程继续从方块424前进至方块1326。此外,于决定方块432,如果被中断的核心106为一好友而非一伙伴或同伴,则流程继续至方块1301。
于方块1326,sync_C-状态微码208藉由计算"C"与"D"值的最小值来计算(本地)混合C-状态的一最近计算的数值,以"C"表示。
流程继续至决定方块1327。于决定方块1327,如果于方块1326所计算的"C"值小于2或核心106并非是封装体管理者核心106,则流程继续至方块416;否则,流程继续至方块1329。
于方块1329,sync_C-状态微码208藉由程式化CSR 234在其好友上产生sync_C-状态的新实例,用以将于方块1326所计算的"C"值传送至其好友并用以中断好友。这要求好友计算并传回一混合C-状态(这种情形类似上述与图4相关的说明,可能构成整个处理器的合成C-状态),并要求好友将其提供回到这个核心106。
流程继续至方块1331。于方块1331,sync_C-状态微码208程式化CSR234以检测好友已传回一混合C-状态至核心106,并获得混合C-状态,以"D"表示。
流程继续至方块1333。于方块1333,sync_C-状态微码208藉由计算"C"与"D"值的最小值来计算一最近计算的混合C-状态,以"C"表示。可注意到,假设D至少为2,于是一旦流程继续至方块1333,就会于方块1333中,在"C"值的合成的C-状态计算时,考量系统1200中的每个核心106的C-状态;因此,合成的C-状态于此被称为系统1200合成的C-状态。流程继续至方块416。
流程继续从图13中的方块434,并继续前进至方块444与448,如相关于图4所说明的。然而,图13并不包含方块452、454或456。反之,流程继续从方块448至方块1352。
于方块1352,sync_C-状态微码208藉由计算"G"与"H"值的最小值来计算一最近计算的本地混合C-状态,以"G"表示。
流程继续至决定方块1353。于决定方块1353,如果于方块1352所计算的"G"值小于2或核心106并非是封装体管理者核心106,则流程继续至方块442;否则,流程继续至方块1355。
于方块1355,sync_C-状态微码208藉由程式化CSR 234在其好友上产生sync_C-状态的新实例,用以将于方块1352所计算的"G"值传送至其好友,并用以中断好友。这要求好友计算并传回一混合C-状态到这个核心106。
流程继续至方块1357。于方块1357,sync_C-状态微码208程式化CSR234以检测好友已传回一混合C-状态至核心106,并获得混合C-状态,以"H"表示。流程继续至方块1359。
于方块1359,sync_C-状态微码208藉由计算"G"与"H"值的最小值来计算一最近计算的本地混合C-状态,以"G"表示。可注意到,假设H至少为2,则一旦流程继续至方块1359,就会于方块1359中,在"G"值的合成C-状态计算时考量系统1200中的每个核心106的C-状态;因此,合成的C-状态于此被称为系统1200合成C-状态。流程继续至方块442。
流程继续从图13中的方块466,并继续经由方块476与482,如相关于图4所说明的。然而,图13并不包含方块484、486或488。反之,流程继续从方块482至方块1381。
于方块1381,sync_C-状态微码208藉由计算"L"与"M"值的最小值来计算一最近计算的本地混合C-状态,以"L"表示。
流程继续至决定方块1383。于决定方块1383,如果于方块1381所计算的"L"值小于2或核心106并非是封装体管理者核心106,则流程继续至方块474;否则,流程继续至方块1385。
于方块1385,sync_C-状态微码208藉由程式化CSR 234在其好友上产生sync_C-状态的新实例,用以将于方块1381所计算的"L"值传送至其好友,并用以中断好友。这要求好友计算并传回一混合C-状态到这个核心106。
流程继续至方块1387。于方块1387中,sync_C-状态微码208程式化CSR 234以检测好友已传回一混合C-状态至核心106,并获得混合C-状态,以"M"表示。流程继续至方块1389。
于方块1389,sync_C-状态微码208藉由计算"L"与"M"值的最小值来计算一最近计算的本地synced C-状态,以"L"表示。可注意到,假设M是至少2,则一旦流程继续至方块1389,就会于方块1389中,在"L"值的合成C-状态计算时考量系统1200中的每个核心106的C-状态;因此,合成C-状态于此被称为系统1200合成C-状态。流程继续至方块474。如上所述,于决定方块432中,如果中断的核心106为一好友而非一伙伴或同伴,则流程继续至方块1301。
于方块1301,核心106被其好友所中断,所以微码208程式化CSR 234,用以从其好友获得好友的合成C-状态,在图13中以"Q"表示。应注意的是,好友不会唤醒synch_C-状态的实例,如果其尚未为其封装体确认合成C-状态至少为2的话。
流程继续至方块1303。于方块1303,sync_C-状态微码208计算一本地混合C-状态(以"R"表示)作为其应用于方块1301所接收的C-状态"Y"值与"Q"值的最小值。
流程继续至决定方块1305。于决定方块1305,如果于方块1303所计算的"R"值小于2,则流程继续至方块1307;否则,流程继续至方块1311。
于方块1307,为因应来自其好友请求的核心间中断,微码208程式化CSR 234以将于方块1303所计算的"R"值传送至其好友。流程继续至方块1309。于方块1309中,常式将于方块1303所计算的"R"值传回至其呼叫者。流程于方块1309结束。
于方块1311,sync_C-状态微码208藉由程式化CSR 236在其伙伴上产生sync_C-状态的新实例,用以将于方块1303所计算的"R"值传送至其伙伴,并用以中断伙伴。这要求伙伴计算并传回一混合C-状态至核心106。
流程继续至方块1313。于方块1313中,sync_C-状态微码208程式化CSR 236以检测伙伴已传回一混合C-状态至核心106,并获得伙伴混合C-状态,在图13中以"S"表示。
流程继续至方块1315。于方块1315,sync_C-状态微码208藉由计算"R"与"S"值的最小值来计算一最近计算的本地混合C-状态,以"R"表示。
流程继续至决定方块1317。于决定方块1317中,如果于方块1315所计算的"R"值小于2,则流程继续至方块1307;否则,流程继续至方块1319。
于方块1319,sync_C-状态微码208藉由程式化CSR 234在其同伴上产生sync_C-状态的新实例,用以将于方块1315所计算的"R"值传送至其同伴,并用以中断同伴。这要求同伴计算并传回一混合C-状态至这个核心106。
流程继续至方块1321。于方块1321,sync_C-状态微码208程式化CSR234以检测同伴已传回一混合C-状态至核心106,并获得混合C-状态,以"S"表示。
流程继续至方块1323。于方块1323,sync_C-状态微码208藉由计算"R"与"S"值的最小值来计算一最近计算的本地混合C-状态,以"R"表示。可注意到,假设S是至少2,于是一旦流程前进至方块1323,就会于方块1323中,在"R"值的计算时考量系统1200中的每个核心106的C-状态;因此,"R"将构成系统1200的合成C-状态。流程继续至方块1307。
现在参考图14所显示的方块图,其显示依据本发明计算机系统1400执行分配在一多核心微处理器1402的多重处理核心106间的分散式电源管理的一替代实施例。系统1400在某些方面类似于图9的系统900,因为其包含在单一封装体上具有经由晶片间通讯配线118耦接在一起的四个双核心晶片104的单一八核心微处理器1402。然而,系统1400的八个核心是依据一较深的三层的阶层式协调系统而藉由旁路配线被组织且实体连接。
首先,晶片间通讯配线118的配置是与图9不同,如下所述。值得注意的,系统1400在某些方面类似于图12的系统1200,于其中核心依据一种三层的阶层式协调系统被组织在一起且实体连接。四个晶片104的每一者包含用以耦接至晶片间通讯配线118的三个接触垫108,亦即OUT接触垫、IN1接触垫以及IN 2接触垫。图14的多核心微处理器1402包含以"P1"、"P2"、"P3"以及"P4"表示的四个接脚。图14的多核心微处理器1402的晶片间通讯配线118的配置如下。晶片0的OUT接触垫、晶片1的IN 1接触垫,以及晶片2的IN 2接触垫经由耦接至接脚P1的单一配线网而全部耦接在一起;晶片1的OUT接触垫与晶片0的IN 1接触垫经由耦接至接脚P2的单一配线网而耦接在一起;晶片2的OUT接触垫、晶片3的IN 1接触垫以及晶片0的IN 2接触垫是经由耦接至接脚P3的单一配线网而全部耦接在一起;晶片3的OUT接触垫与晶片2的IN 1接触垫经由耦接至接脚P4的单一配线网而耦接在一起。
图14的核心106是被设计成用以依据图13的说明操作,对核心0与核心4而言,即使它们位于相同的封装体1402(与上述相关于图12所规定的专门用语"好友"的意思相反)仍被视为好友,而这两个好友于图14的实施例中经由晶片间通讯配线118而非经由图12的封装体间通讯配线1133做彼此沟通,。于此应注意的是,除了处理器的实体模型以外,核心是依据一种较深的且具有三个层次的域的阶层式协调系统而设计。
现在参考图15所显示的方块图,其显示依据本发明计算机系统1500执行分配在一种多核心微处理器1502的多重处理核心106间的分散式电源管理的一替代实施例。系统1500在某些方面类似于图14的系统1400,因为其包含单一个八核心微处理器1502,其具有以核心0至核心7表示的八个核心106。然而,多核心微处理器1502包含经由晶片间通讯配线118耦接在一起的两个四核心晶片1504。两个晶片1504的每一者包含用以耦接至晶片间通讯配线118的两个接触垫108,亦即一OUT接触垫以及IN 1、IN 2和IN 3接触垫。多核心微处理器1502包含以"P1"与"P2"表示的两个接脚。多核心微处理器1502的晶片间通讯配线118的配置如下。晶片0的OUT接触垫与晶片1的IN 1接触垫经由耦接至接脚P2的单一配线网而耦接在一起,而晶片1的OUT接触垫与晶片0的IN 1接触垫经由耦接至接脚P1的单一配线网而耦接在一起。此外,四核心晶片1504的核心间通讯配线112将每个核心106耦接至晶片1504的其他核心106,用以促进分配在一种多核心微处理器1502的多重处理核心106间的分散式电源管理。
图15的核心106被设计成用以依据图13的说明操作,并通过以下叙述获得理解。首先,每个晶片本身所具有的核心是依据一双层的阶层式协调系统,并藉由旁路配线而被组织且实体连接。晶片0具有两个伙伴同属性群组(核心0与核心1;核心2与核心3)以及一个同伴同属性群组(核心0与核心2)。同样地,晶片1具有两个伙伴同属性群组(核心4与核心5;核心6与核心7)以及一个同伴同属性群组(核心4与核心6)。于此可注意到同伴核心纵使它们位于相同的晶片上(与上述相关于图1所规定的的"同伴"的特性记述相反)仍被视为同伴。此外,同伴于图15的实施例中经由核心间通讯配线112而非经由图12的晶片间通讯配线118进行彼此的通讯。
其次,封装体本身界定一第三阶层式范围及对应的好友同属性群组。换言之,核心0及核心4纵使它们位于相同的封装体1502上(与上述相关于图12所规定的专门用语"好友"的意思相反)仍被视为好友。又,好友于图15的实施例中经由晶片间通讯配线118而非经由图12的封装体间通讯配线1133进行彼此的通讯。
现在参考图16所显示的方块图,其显示依据本发明的计算机系统1600执行分配在一种多核心微处理器1602的多重处理核心106间的分散式电源管理的一替代实施例。系统1600在某些方面类似于图15的系统1500,因为其包含单一个八核心微处理器1602,其具有以核心0至核心7所表示的八个核心106。然而,每个晶片104包含多条在每一个核心106之间的核心间通讯配线112,用以允许每个核心106与晶片104中的其他核心106进行通讯。因此,为说明图16每个核心106的微码208的操作:(1)核心0、核心1、核心2以及核心3被视为伙伴,而核心4、核心5、核心6以及核心7被视为伙伴;(2)核心0及核心4被视为同伴。因此,系统1600是依据由伙伴与同伴同属性群组所组成的一双层阶层式协调系统并藉由旁路配线被组织且实体连接。此外,存在于晶片的每一个核心之间的核心间通讯配线112,可促进供晶片所界定的伙伴同属性群组用的一同侪合作协调模型。虽然能够依据一同侪合作协调模型操作,但图17说明一种供核心之间的分散式电源管理使用的管理者合作协调模型。
现在参考图17所显示的流程图,其显示依据本发明图16的系统1600用以执行分配在多核心微处理器102的多重处理核心106间的分散式电源管理的操作。更明确而言,图17的流程图显示图3(与图6)的sync_C-状态微码208的操作,类似于图4的流程图,其在许多方面是相似的,且相同号码的方块是类似的。然而,在图17的流程图中所说明的核心106的微码208负责存在八个核心106的情形而非于图1的实施例中的四个核心106,具体地说四个核心106是两个双晶片104的方式而存在,而现在说明其差异。尤其,一晶片104的每个管理者核心106具有三个伙伴核心106而非一个伙伴核心106。
流程开始于图17中的方块402,并继续经由决定方块404且离开决定方块404的"NO"分支至决定方块432,如相关于图4所说明者。然而,图17并不包含方块406至418。反之,流程继续从决定方块404离开"YES"分支至方块1706。
于方块1706,sync_C-状态微码208藉由程式化图2的CSR 236以在一伙伴上产生sync_C-状态常式的新实例,用以将于方块402所接收或于方块1712所产生(讨论于下)的"A"值传送至其下一个伙伴,并用以中断伙伴。这要求伙伴计算并传回一混合C-状态至核心106。在包含方块1706、1708、1712、414以及1717的回圈中,微码208掌握其已造访的伙伴的记录,用以确保其造访它们每一个(除非于决定方块414被发现是真实的状况)。流程继续至方块1708。
于方块1708,sync_C-状态微码208程式化CSR 236以检测下一个伙伴已传回一混合C-状态至核心106,并获得伙伴的混合C-状态,在图17以"B"表示。流程继续至方块1712。
于方块1712,sync_C-状态微码208藉由计算"A"及"B"值的最小值来计算一最近计算的本地混合C-状态,其是以"A"表示。流程继续至决定方块1714。
于决定方块1714,如果于方块1712所计算的"A"值小于2或核心106并非是管理者核心106,则流程继续至方块1716;否则,流程继续至决定方块1717。
于方块1716,sync_C-状态微码208将于方块1712所计算的"A"值传回至其呼叫者。流程于方块1716结束。
于决定方块1717,sync_C-状态微码208决定所有其伙伴是否已被造访,亦即核心106是否已经由方块1706与1708而与每一个其伙伴交换混合C-状态。如果是,则流程继续至方块1719;否则,流程回复至方块1706。
于方块1719,sync_C-状态微码208决定于方块1712所计算的"A"值成为其晶片合成C-状态,其是以"C"表示,且流程继续至方块422并继续进行至方块428,如上相关于图4所述。
流程继续从决定方块438的"NO"分支至决定方块1739。
于决定方块1739,sync_C-状态微码208决定所有其伙伴是否已被造访,亦即,核心106是否已经经由方块1741及1743(讨论于下)而与每一个其伙伴交换一混合C-状态。如果是,流程继续至方块446,并继续进行经由至方块456,如上相关于图4所述;否则,流程继续至方块1741。
于方块1741,sync_C-状态微码208藉由程式化图2的CSR 236在其下一个伙伴上产生sync_C-状态常式的新实例,用以将于方块436或于方块1745(讨论于下)所计算的"G"值传送至其下一个伙伴,并用以中断伙伴。这要求伙伴计算并传回一混合C-状态至核心106。在包含方块438、1739、1741、1743以及1745的回圈中,微码208掌握其已造访的伙伴的记录,用以确保其造访它们每一个(除非于决定方块438被发现是真实的状况)。流程继续至方块1743。
于方块1743,sync_C-状态微码208程式化CSR 236以检测下一个伙伴已传回一混合C-状态至核心106,并获得伙伴的混合C-状态,在图17中以"F"表示。流程继续至方块1745。
于方块1745,sync_C-状态微码208藉由计算"F"及"G"值的最小值来计算一最近计算的本地混合C-状态,其是以"G"表示。流程回复至决定方块438。
图17并不包含方块478至方块488。取而代的的是,流程继续离开决定方块472的"NO"分支至决定方块1777。
于决定方块1777,sync_C-状态微码208决定所有其伙伴是否已被造访,亦即,核心106是否已经经由方块1778及1782(讨论于下)而与每一个伙伴交换一混合C-状态。如果是,流程继续至方块474并继续进行经由至方块476,如上相关于图4所述;否则,流程继续至方块1778。
于方块1778,sync_C-状态微码208藉由程式化图2的CSR 236在下一个伙伴上产生sync_C-状态常式的新实例,用以将于方块468或于方块1784(讨论于下)所计算的"L"值传送至其下一个伙伴,并用以中断伙伴。这要求伙伴计算并传回一混合C-状态至核心106。在包含方块472、1777、1778、1782以及1784的回圈中,微码208掌握其已造访的伙伴的记录,用以确保其造访它们每一个(除非于决定方块472被发现是真实的状况)。流程继续至方块1782。
于方块1782,sync_C-状态微码208程式化CSR 236以检测下一个伙伴已传回一混合C-状态至核心106,并获得伙伴的混合C-状态,在图17以"M"表示。流程继续至方块1784。
于方块1784,sync_C-状态微码208藉由计算"L"及"M"值的最小值来计算一最近计算的本地混合C-状态,其是以"L"表示。流程回复至决定方块472。
如较早所陈述的,如应用至图16的图17显示一管理者仲裁的阶层式协调模型至一微处理器1602的应用,其旁路配线促进对于至少某些的核心同属性群组的一同侪合作协调模型。这种组合提供各种优点。就另一方面而言,微处理器1602的实体架构提供在界定与再界定(defining and redefining)阶层式域以及指定与再指定(designating and redesignating)域管理者上的弹性,如与申请案序号61/426,470的段落相关所说明的,前述申请案的申请日为2010年12月22日,名称为"在一多核心处理器中的动态及选择性核心禁能(Dynamic and Selective Core Disablement)",及其同时申请的非临时申请案(CNTR.2536),其是于此并入作参考。此外,在提供这种核心间协调弹性的微处理器上,可依据预定情况或配置设定而在一个以上的协调模式中提供可以行动的一阶层式协调系统。举例而言,一阶层式协调系统可使用所指定的管理者核心而优先地采用协调的管理者仲裁模型,但是在某些预定或检测条件之下,可将一不同的核心标示为供该同属性群组用的一暂时管理者、或者切换成供一既定同属性群组使用的一同侪合作协调模型。可能的模型切换条件的例子包含所指定的管理者核心无反应或禁能、所指定管理者核心基于它们的状态或紧急性而处于一限制中断模式中、或所指定的管理者核心处于将某些把关或协调角色委派授权给一个或多个其成员。
在上述图中,已显示受限制的电源状态(例如C-状态>=2),只有在等于处理器的复合电源状态时是可实施的。在诸如此情况下,已说明的电源状态复合电源状态发现过程可在实施受限制的电源状态之前进行操作,以负责处理器中每个核心的应用电源状态。
然而如较早在说明书中所叙述者,有顺序的电源状态的不同配置与等级亦属本发明所考量的。此外,本发明亦考虑包含多重特定域层次的受限制电源状态的电源状态的非常进阶的设定,于此渐进较高层级的受限制电源状态将应用于处理器的渐进较高的域中。
举例而言,在具有多重多核心晶片的一多核心多处理器中,每个晶片提供在晶片的核心间被共用的一PLL,但由微处理器的所有核心所共用的单一VRM,譬如在CNTR.2534中所说明的,一受限制域的电源状态阶层可被定义而包含尤其适合于一核心内部(且非外部被共用)资源的第一组电源状态、尤其适合于由晶片上的核心所共用,而不能被晶片外部所共用的资源(例如PLL与快取)的下一组电源状态、且特别适合于整个微处理器的又另一组电源状态(例如电压值与总线时钟)。
因此,于一实施例中,每个域具有其本身的复合电源状态。又,对每个域而言,存在有单一适当的受认证核心(例如该域的管理者),其具有实施或启动一受限制电源状态的实施的授权,如由一对应的区别域的电源状态阶层协调系统所界定者,是受限在受冲击的域上。这种进阶配置尤其适合包含譬如CNTR.2534所显示的实施例,于其中子群组的处理器核心共用快取、PLL等等。
本发明亦考虑数个实施例,于其中一分散式同步过程是利用一种不需要唤醒所有核心的方式来不仅管理一受限制电源状态的实现,而且选择性地实施一受限制电源状态的一唤起状态或撤销。这种进阶实施例与类似图5的系统形成对比,于其中一晶片组STPCLK的解除设置可完全唤醒所有核心。
现在参考图23,其描绘sync_state逻辑2300的一个实施例,以显示譬如在微码中进行有条件地实施与选择性地撤销一限制操作状态两者的情形。如下所述,sync_state逻辑2300支持一种域-区别(domain-differentiated)的电源状态阶层协调系统的实现。有利的是,sync_state逻辑2300的可计量性相当好,因为其可被延伸至实际上是任何想要的域-层次深度(domain-level depth)的阶层式协调系统。又,逻辑2300不仅可用对微处理器整体看来是全域的方式、而且对在微处理器之内的特定群组核心(例如,只对一晶片的核心,如以下关于方块2342所说明的)以更多限制的方式被实施。此外,sync_state逻辑2300可利用不同且具相关定义的阶层式协调系统、应用的操作状态以及域层次临界值,而独立应用至不同操作状态的群组中。
在类似于sync_C-状态微码208的较早显示的实施例的实施样态中,sync_state逻辑2300可能在本地或外部地被产生,并在传送一探测状态值"P"的一常式中执行。例如,一电源状态管理微码常式可接收由一MWAIT指令所传送、或如与CNTR.2534相关所讨论的一目标操作状态,利用供核心的本地核心逻辑产生一目标操作状态(例如一要求的VID或频率比率值)。接着,电源状态管理微码常式可将目标值储存为核心的目标操作状态OTARGET,然后藉由将OTARGET传送成为探测状态值"P"来唤醒sync_state逻辑2300。或者,在类似于先前实施例所讨论的实施样态,sync_state逻辑2300可能藉由一中断常式响应一外部产生的同步需求被唤醒。为简化之便,这种实例被称为sync_state逻辑2300的外部唤醒实例。
在更进一步继续前进以前,应注意到,再为简化之便,图23显示以一种适合管理操作状态的形式的sync_state逻辑2300,操作状态是在要求渐进地更大程度的核心间协调予渐进地较高需求的状态(举例而言,如应用于C-状态)的方式被界定或被安排。将理解具有通常知识者可利用谨慎地应用逻辑来修改sync_state逻辑2300以支援一操作状态阶层(例如VID或频率比率状态),于其中操作状态是朝相反方向被界定。或者,因传统或选择而朝一个方向被界定的操作状态,可根据定义而一般的"安排"在相反方向中。因此,sync_state逻辑2300可只藉由重新安排它们,并施加相反指示的基准值(例如负的原始值)而被应用至操作状态(例如需求的VID与频率比率状态)。
亦注意到图23显示sync_state逻辑2300是特别为一严格地阶层式协调系统而设计,于其中所有包含的同属性群组依据一管理者仲裁协调模型操作。如关于先前所显示的可某些程度协调对等合作的同步逻辑实施例所证明的,本发明不应被理解成受限于严格地阶层式协调系统(除非到达明确指出的程度)。
流程于方块2302开始,于此sync_state逻辑2300接收探测状态值"P"。流程继续至方块2304,于此sync_state逻辑2300亦获得本地核心的目标操作状态OTARGET、可由本地核心实行的最大的操作状态OMAX、由本地核心所控制的最大的域层次DMAX,以及并未涉及或干涉一特定域D的外部资源的最大可利用的域-特定状态MD。应注意到,sync_state逻辑2300获得或计算方块2304的值的方式或年表(chronology)并不重要。在流程图中的方块2304仅用来介绍适用于sync_state逻辑2300的重要变数。
在一个例示的但非限制的实施例中,域层次D是被界定如下:单一核心为0;多核心晶片为1;多晶片封装体为2,等等。0与1的操作状态是不受限制的(意指一核心可实施它们而无须与其他核心协调),2与3的操作状态是相关于相同晶片的核心而受限(意指它们可能在一晶片的核心上被实施以与其他晶片上的核心协调,但不需要与在其他晶片上的其他核心协调),而4与5的操作状态是相关于相同封装体的核心而受限(意指它们可能在与该封装体的核心协调之后而在该封装体上被实施,但不需要与其他封装体上的其他核心协调,如果有的话),等等。因此,相对应的最大可应用的域-特定状态MD为:M0=1;M1=3;以及M2=5。再者,由一核心所控制的最大域层次DMAX与可由核心实行的最大操作状态OMAX,两者为该核心的管理者凭证(如果有的话)的函数。因此,于此例子中,一非管理者核心将具有0的DMAX以及1的对应的最大可自我实行的操作状态OMAX;晶片管理者核心将具有1的DMAX以及3的对应的最大可自我实行的操作状态OMAX;以及封装体管理者或BSP核心将具有2的DMAX以及5的对应的最大可自我实行的操作状态OMAX。
流程继续至方块2306,于此sync_state逻辑2300计算一初始混合值"B",其等于探测值"P"与本地核心的目标操作状态OTARGET的最小值。又,如果P是由一附属家族核心所接收,且其值小于或等于最大可应用的域-特定操作状态MD(家族核心据此为凭证来实施),则基于这里所说明的逻辑,这一般表示一附属家族核心请求撤销由本地或一较高阶级的核心所实行的任何潜在的干涉较易休眠状态(interfering sleepier state)。此乃因为在一般配置中,附属家族核心已经实行相对于其所能够的程度下为更清醒的P状态,而其无法在没有较高层级协调的情况下,单方面地撤销经由一个其不能控制的域所实行的干涉较易休眠状态。
流程继续至方块2308,于此一域层次变数D被初始化为零。在上述所显示的例子中,一个为0的D表示一个核心。
流程继续至决定方块2310。如果D等于DMAX,则流程继续至方块2340。否则,流程继续至决定方块2312。举例而言,在一非管理者核心上被唤醒的一sync_state常式将总是继续至方块2340,而不需执行显示在方块2312-2320之间的任何一逻辑。此乃因为显示在方块2312-2320之间的逻辑是被提供给一管理者核心的有条件地同步化附属家族核心。关于另一例子,如果一晶片管理者核心不具有其他管理者凭证,则其DMAX等于1。初始时D为0,所以一条件同步过程可能依据方块2312-2320而在晶片的其他核心上被实施。但在完成任何这种同步(假设依据决定方块2312所述,其并非有条件地过早被终止)且已将D增加1(方块2316)之后,流程将继续(经由决定方块2310)至方块2340。
现在移到决定方块2312,如果B>MD,则流程继续至决定方块2314。否则,流程继续至方块2340。以另一种方式陈述,如果本地核心目前所计算的混合值B不会涉及或干涉由变数D所界定域的外部资源,则不需要与任何更多的附属家族核心同步。举例而言,如果目前计算的混合值B为1,这样的数值表示只冲击到位于一既定核心的本地资源,因此不需要与更多的附属家族核心做同步。在另一例子中,假设本地核心为一好友核心,其具有足够凭证以关闭或冲击共通于多重晶片的资源。但亦假设好友的目前计算的混合值B为3,其为一个将只冲击位于好友的晶片而非好友所管理的其他晶片的本地资源的数值。又假设好友已依据方块2314、2318以及2320而完成与其本身晶片上的每一个核心的同步,藉以使变数D增加至1(方块2316),并使新的MD=M1=3纳入考量(方块2312)。在这些情况之下,好友并不需要更进一步与其他晶片上的附属家族核心(例如同伴)同步,因为3或更少的数值的好友的实现无论如何都不会影响其他晶片。
现在移到决定方块2314,sync_state逻辑2300评估在由D+1所界定的域中是否有任何(更多)尚未同步的附属家族核心。如果有任何这种核心,则流程继续至方块2318。如果不是的话,则流程首先继续至方块2316(于此D被增加),然后至决定方块2310,于此再次评估目前增加的D的值,如上所述。
现在移到方块2318,因为一未同步的附属家族核心已被检测(方块2318),所以其可能受目前计算的混合值"B"的实现(方块2312)所影响,因为其将影响由附属家族核心所共用的资源,所以sync_state逻辑2300的本地实例在未同步的附属家族核心上唤醒一sync_state逻辑2300的新的从属实例。本地实例传送其目前计算的混合值"B"以作为对于sync_state逻辑2300的从属实例的一探测值。如由sync_state逻辑2300的逻辑所见的,从属实例最后将传回一个不大于原有的"B"(方块2306)、且不小于附属家族核心的最大可应用的域-特定状态MD(方块2346)的数值,其为不会干涉在本地与附属家族核心之间所共用任何资源的最大值。因此,当流程继续至方块2320时,sync_state逻辑2300的本地实例采用由从属实例所传回的数值作为其本身的"B"值。
到现在为止,已将焦点指向用以有条件地同步化附属家族核心的sync_state逻辑2300的一部分。现在,将聚焦于方块2340-2348,其说明用以执行一目标和/或同步化状态的逻辑,包含与较高级的家族核心(亦即,较高层级管理者)进行有条件地协调。
现在移到方块2340,本地核心执行其目前混合值"B"至其可接受的程度。尤其,其执行B及OMAX的最小值,而由本地核心执行最大状态。可注意到,相关于属于域管理者的核心,方块2340设计这种核心以执行或启动供其域使用的一复合电源状态的最小值(方块2306或2320的"B")与应用于其域的最大受限制电源状态(亦即OMAX)的实现。
流程继续至决定方块2342,于此sync_state逻辑2300评估本地核心是否为微处理器的BSP。如果是,则没有更高级的核心需要协调,且流程继续至方块2348。如果否,则流程继续至决定方块2344。应注意到,在实施例中的sync_state逻辑2300是以对微处理器较不全域(less than a globalway)的方式地被应用以控制操作状态,方块2342是以预定组的操作状态相关的"最高应用域管理者"置换"BSP"而改变。举例而言,如果sync_state逻辑2300仅应用至由CNTR.2534中所说明的由晶片所共用PLL的期望频率时钟比率的中,则将以"晶片管理者"置换"BSP"。
在决定方块2344中,sync_state逻辑2300评估sync_state的本地实例是否被一管理者核心所唤醒。如果是,则本地核心根据定义与其管理者同步,所以流程继续至方块2348。如果否,则流程继续至方块2346。
现在移到方块2346,sync_state逻辑2300在其管理者核心上唤醒一个sync_state的从属实例。其将核心的最终混合值B与核心的最大可应用的域-特定状态MD的最大值作为最后探测值P而传送的。在此提供两个例子以说明探测值P的选择。
在第一例子中,假设B高于本地核心的最大可自我实行的操作状态OMAX(方块2340)。换言之,在没有较高层级协调的情况下,本地核心无法单方面导致B的完全实施。在这样的情况下,方块2346表示本地核心对其管理者核心的一请求,要求其可更完全实施B,如果可能的话。将明白依据图23所提出的逻辑集合,如果该项请求并非与管理者核心本身的目标状态以及与其他潜在影响的核心的应用状态相符的话,管理者核心将婉拒此请求。否则,管理者核心将实施此请求并到达其与那些状态相符的程度,直到其本身的最大可自我实行的状态OMAX的最大值(方块2340)为止。依据方块2346的叙述,管理者核心亦将以原始核心的B值混合(可能等于原始核心的B值)的数值来请求其本身的更高级核心(如果有的话),这种请求方式将向上且通过阶层而进行。依此方式,如果应用条件满足的话,则sync_state逻辑2300将完全实施本地核心的最终混合值B。
在第二例子中,假设B小于本地核心的最大可自我实行操作状态OMAX(方块2340)。假设没有影响本地核心所控制资源之外的较高的干涉操作状态存在,而后在方块2340中,本地核心可完全实行B。但是如果较高的干涉的操作状态生效,而本地核心将无法单方面地撤销干涉操作状态。在这种情况下,方块2346表示本地核心对其管理者核心的一请求,要求其撤销一既存的干涉操作状态至不再干涉B的完整实现的层级(亦即,本地核心最大可应用的域-特定状态MD)。将明白到,依据图23所提出的逻辑集合,管理者核心将遵从该项请求,藉以实行不大于且可能小于本地核心的MD的状态。应注意到,方块2346可能或者请求管理者只实行B。但如果B<MD,则这可能使管理者核心执行一种较本地核心完全实行B所需要的更清醒的状态。因此,使用等于本地核心的最终混合值B与本地核心的最大可应用的域-特定状态MD的最大值的探测值是较佳的选择。因此,将明白sync_state 2302支持一种对于实现休眠状态及唤起状态两者的极简方法。
现在移到方块2348,sync_state逻辑2300将一数值传回至呼叫或执行等于核心的最终混合值B与核心的最大可应用域-特定状态MD的最大值的程序。如以方块2346作说明,注意到方块2348可能或者刚好传回B的数值。但如果B<MD,则这可能使一被唤醒的管理者核心(方块2318)执行一种比本身所需要更清醒的状态。因此,传回核心的最终混合值B与核心的最大可应用的域-特定状态MD的最大值是较佳的选择。再者,将明白依此方式,sync_state 2302支持一种对于实现休眠状态与唤起状态两者的极简方法。
在另一实施例中,一个或多个额外决定方块是介设于方块2344与2346之间,以更进一步设定方块2346对从属sync_state常式实施的条件。举例而言,在一个适合条件下,如果B>OMAX,则流程将继续至方块2346。在另一个适合条件之下,如果只有于一较高域层次可撤销的一干涉操作状态目前正被应用至本地核心,则流程将继续至方块2346。如果所应用的这两个替代条件都不是,则流程将继续至方块2346。依此方式,sync_state 2302将支持一种对于实现唤醒状态更简捷的方法。然而,应该观察到这个替代实施例假设本地核心可检测一干涉操作状态是否正被应用。在本地核心不一定能检测一干涉操作状态的存在的一实施例中,则图23所描绘出的较少条件的实施方法是较佳的。
亦将明白在图23中,当需要实行一目标较深的操作状态(或其的较浅型式)时,复合操作状态发现过程藉由使用一种依最低至最高(或最靠近至最远离的同属性群组)的顺序以渐进地横越核心的寻访顺序,来寻访最高层级域(其包含其巢状域)的核心(也不需要所有的核心),而这些核心的共用资源是受目标操作状态所影响。又,当需要执行一较浅的操作状态时,复合操作状态发现过程只需接续的寻访较高的管理者即可。此外,在上述说明的替代实施例中,这种寻访的延伸是要撤销目前实施的干涉操作状态(如果所需要的话)。
因此,在将一较早的示范实例应用至图23中,2或3的目标受限制电源状态将只触发应用晶片中的核心的复合电源状态发现过程。4或5的目标受限制电源状态将只触发应用封装体中的核心的复合电源状态发现过程。
图23可更进一步以一种域-特定(除了核心-特定以外)的方式叙述其特征。继续上述的例示图例,一晶片可具有2与3的应用域-特定电源状态。举例而言,如果晶片管理者核心经由一本地或外部启始的复合电源状态发现过程的一部分而发现其晶片本身的复合电源状态只有1时,因为1并非是可应用域-特定电源状态,所以晶片管理者核心将不会实施它。如果晶片管理者核心发现其晶片本身的复合电源状态为5(或晶片的复合电源状态与一节点地连接核心的探测电源状态数值的混合状态等于5)作为一替代例子,以及如果晶片管理者核心并不具有任何较高的管理者凭证,则(假设其没有这样做)晶片管理者核心将实施或启动3的电源状态的实施,其为3(晶片的最大应用域-特定电源状态)与5(晶片的复合电源状态或其的混合状态)的最小值。再者,可注意到于此例子中,晶片管理者核心将继续为其晶片实施或启动3的电源状态的实施,而不管任何应用于一较高域(该核心为较高域的一部分)的实际或局部的复合电源状态(例如,2或4或5)为何。
继续上述的图例,于此晶片管理者发现晶片复合电源状态或其的混合状态为5,晶片管理者将与其同伴着手一复合电源状态发现过程,其将需要包含下一个较高层级域(例如,封装体或整个处理器)的寻访,此复合电源状态发现过程是独立于晶片管理者的中间实现(如果有的话)与晶片的为3的电源状态之外。这是因为5大于3(晶片的最大应用域-特定电源状态),所以一较高受限制电源状态的实施需要取决于应用于一个或多个较高级域的电源状态。此外,下一个较高层级域特有的一较高受限制电源状态的实施可能只藉由该域的管理者而被启动和/或被实现(例如,多封装体处理器的封装体管理者或单一封装体处理器的BSP)。值得提醒的是,晶片管理者可能亦同时保持相关的封装体管理者或BSP凭证。
因此,在上述例子中,在发现过程中的某些点,晶片管理者核心将与一同伴交换其晶片复合电源状态(或其的混合)。在某些条件之下,这个发现过程将较高域(例如封装体)的一至少局部的复合电源状态(其小于2)传回至晶片管理者核心。又,这将不会导致3的电源状态的撤销,其为晶片管理者核心已为晶片而实施者。在其他条件之下,此种发现过程将对封装体或微处理器产生一复合电源状态(例如4或更多),其对应至4或更多的受限制电源状态。如果是,则该域的管理者(例如封装体管理者)将实施一较高受限制的电源状态,其为较高层级域的复合电源状态(例如4或5)与应用于较高层级域的最大受限制的电源状态(于此是5)的最小值。如果所应用的发现过程正测试一更高级的受限制电源状态,则此种附有条件的域-特定电源-状态实现过程将延伸至更高级的域层次(如果有的话)。
如上述所述,图23显示一种可操作以合并域-相关(domain-dependent)受限制电源状态及相关临界值的阶层式域-特定受限制的电源状态管理协调系统。据此,其适用于对于个别核心及群组核心的电源状态管理的微调式域-特定分散方法(fine-tuned domain-specific decentralized approach)。
注意到图23显示以一种分散式分配方式提供转变成更清醒的状态的电源状态协调逻辑。然而,将明白某些电源状态实施例包含数个电源状态,在缺乏藉由晶片组或其他核心的先前电源-状态-撤销动作之下,一特定核心可能无法从此等电源状态被唤起。举例而言,在上述C-状态结构中,2或更高的C-状态可能与移除总线时钟相关,其可能使一既定核心不能响应通过系统总线所传送的一指令,以转变成为一更清醒的状态。电源或时钟源可选择性地从一核心或一晶片被移除的其他微处理器配置亦被考虑。图5说明觉醒逻辑的一实施例来适应这些情况,其藉由唤醒所有核心以因应STPCLK的解除设置。然而,觉醒逻辑的更多选择性实施例可被考虑。在一个例子中,考虑由系统软件(例如操作系统或BIOS)所实施的觉醒逻辑,其中系统软件将首先发布一唤起或觉醒请求给一特定核心,且如果在一段期望时间间隔之内并未接收一响应或核心并不遵从的话,则逻辑将视需要递回地发布唤起或觉醒请求给后续较高的管理者及晶片组(可能是),直到接收到一期望的响应或检测到适当的遵从为止。这种由软件系统所执行的觉醒逻辑将与图23的电源状态协调逻辑进行协调,并以一种优先分散方式(于此每个目标的核心藉由使用其本身的微码开始转变)以转变成更清醒的状态,以到达核心可操作以这样做的程度,以及当禁止核心这样做时,以一种中心协调的方式完成。觉醒逻辑的实施例仅是用以选择性地唤起无法唤起它们自己核心的数个可能的实施例的说明与例示。
VI.延伸实施例及应用
虽然已说明具有一特定数目核心106的实施例,但可考虑具有其他数目核心106的其他实施例。举例而言,虽然图10、13以及17所说明的微码208被设计用以执行在八个核心之间的分配式电源管理,但微码208藉由包含检查核心106的存在或缺席(presence or absence),而在一具有更少核心106的系统中适当地发生效用,例如相关于申请案序号61/426,470的段落所说明的,前述申请案的申请日为2010年12月22日,名称为"动态多核心微处理器配置(Dynamic Multi-Core Microprocessor Configuration)",及其同时申请的非临时申请案(CNTR.2533),其揭示书是附属于此。亦即,如果一核心106是缺席的,则微码208不会与缺席核心106交换C-状态信息,并有效地假设缺席核心的C-状态是最高的可能C-状态(例如5的C-状态)。因此,为了达到使制造能力有效率的目的,核心106可能被制造成具有微码208,其被设计可执行在八个核心间的分配式电源管理,纵使核心106可能包含在具有更少核心106的系统中。再者,考虑到此系统包含八个以上核心的实施例,且于此所说明的微码是被延伸以利用一种类似于已经说明的那些方式与附加核心106进行通讯。经由前述的描述,图9及11的系统可被扩增以包含具有八个同伴的16个核心106;而图12、14及15的系统可被扩增以包含具有四个好友的16个核心106,类似于图9及11的系统在四个同伴之间同步化C-状态的方法,且图16的系统可藉由具有16个伙伴(两个晶片且每个晶片具有八个核心、或四个晶片且每个晶片具有四个核心)而被扩增以包含16个核心106,而图4、10、13以及17的方法的相关特征亦可获得整合。
独立实现不同等级的电源状态(例如,C-状态、P-状态、需求的VID、需求的频率比率,等)的协调的实施例亦被考量在内。举例而言,每个核心可为每个等级的电源状态(例如,各别的应用VID、频率比率、C-状态以及P-状态)而具有不同的应用电源状态,具有应用至不同特定域的限制,以及具有用以计算混合状态并发现复合状态(例如,C-状态对所请求VID最大值的的最小值)的不同极值。不同的阶层式协调系统(例如,不同的域深度、不同的域成员(domain constituencies)、不同的指定域管理者和/或不同的同属性群组协调模型)可能为不同等级的电源状态而建立。此外,某些电源状态可能只需要顶多与一域(例如晶片)上的其他核心协调,此域只包含微处理器上的所有核心的子集。对于这种电源状态,所考虑的阶层式协调系统可以是只有节点地连结该域、与在该域之内的核心进行协调、以及发现应用于该域或在该域之内的复合电源状态。
一般而言,实施利中显示的所有操作状态是依一种渐进地上升或下降,而且是依据严格且线性顺序的基础。但是,操作状态是排成层列(tiered)且依顺序沿着每个层(tier)以上升或下降方式可订定的其他实施例(数层的顺序独立于其他层的实施例亦包含在内)亦被本发明所考量。举例而言,一预定组的电源状态可不同的层级A.B,A.B.C,等的复合形式叙述其特征,于此每一层A、B、C是关于一不同的特征或特征的等级。举例而言,一电源状态可能以C.P或P.C的复合形式叙述其特征,于此P表示一种ACPI P-状态,而C表示一种ACPI C-状态。再者,受限制电源状态的等级可能由混合定义电源状态的特定组成(例如A或B或C)的数值所定义,而受限制电源状态的另一等级可由混合定义电源状态的另一组成的数值所定义。此外,在任何给定的受限制电源状态的层级内,每一层对应于混合定义电源状态的其中一个组成的数值(例如C.P),除施加至此层的限制以外,对一既定核心而言,另一种组成的数值(例如C.P中的P)可能不受限制、或受到不同等级的限制。举例而言,一个具有C.P的目标电源状态的核心可能受到关于其目标电源状态的C及P部分的实施时各自的限制及协调需求,于此P表示其P-状态,而C表示其需求的C-状态。在复合电源状态实施例中,对计算极值的一既定核心而言,任何两个电源状态的一"极值"可能表示复合电源状态的组成部分的极值的一复合状态、或复合电源状态的少于所有组成部分的极值的一复合状态,与以别的方法选择的或确定的数值(而对其他组成部分而言)。
又,在一系统中的多重核心106执行分配式分散式电源管理以明确地执行功率评价(power credit)功能性的实施例亦被考量在内,如说明于美国申请案13/157,436(CNTR.2517)中,申请日为2011年6月10日,其全部于此并入作参考,但是此实施例使用核心间通讯配线112、晶片间通讯配线118以及封装体间通讯配线1133,而非使用如CNTR.2517所说明的一共用的存储器区域。这种实施例的优点为其对于系统韧体(例如BIOS)及系统软件是透明的,且并不需要依赖系统韧体或软件以提供一共用的存储器区域,因为微处理器制造商可能未必具有控制系统韧体或软件的发布能力,所以其是受欢迎的。
又,除了一探测值以外亦传送其他值的同步逻辑实施例亦考量在内。于一实施例中,相关于任何其他同时操作发现过程,一同步常式传送可区别地确认发现过程的一数值(其为发现过程的一部分)。在另一实施例中,同步常式传送一数值,藉由此数值可识别同步或尚未同步的核心。举例而言,一种八核心实施例可能递送一8位值,于此每个位代表八核心处理器的一特定核心,且每个位表示核心是否已被同步或是仍为该瞬间发现过程的一部分。同步常式亦可能传送确认开始瞬间发现过程的核心的一数值。
促进执行核心的依序寻访同步化发现过程的额外实施例亦被考量。在一个例子中,每个核心储存确认成员的位遮蔽的同属性群组(它为其的一部分)。举例而言,在一种利用三个层级深的阶层式协调构造的八核心实施例中,每个核心储存三个8位"同属性"遮蔽、一"最接近"同属性遮蔽、一第二层同属性遮蔽以及一顶端层同属性遮蔽,于此每个遮蔽的位值确认属于以遮蔽表示的同属性群组中的核心家族(如果有的话)。在另一例子中,每个核心储存一地图、一号码或其的组合,由其可正确地及唯一地决定核心的节点阶层,包含确认每个域管理者。在又另一种例子中,此核心储存确认共用资源(例如,电压源、时钟源以及快取),以及它们所属且共用的特定核心或对应域的信息。
又,虽然此说明书的焦点主要放在电源状态管理,但将明白上述阶层式协调系统的各种实施例可能被应用以协调其他型式的操作与限制活动,而非只是电源状态或电源相关的状态信息。举例而言,在某些实施例中,上述各种阶层式协调系统是利用与复制在每个核心上的分散逻辑协调以用于动态发现,譬如在CNTR.2533中的一多核心微处理器配置,例如如上所述。
此外,应注意到除非有特别声明,否则本发明并不需要使用上述任何一个阶层式协调系统以执行预定的限制活动。事实上,除非另有某种程度的特别规定,否则本发明适合于在核心间的纯粹对等协调系统。然而,如本说明书可明显看出,一种阶层式协调系统的使用可提供数个优点,尤其是在依赖旁路通讯时,因为于此架构下,微处理器的旁路通讯线的构造并不允许一完全相等的对等协调系统。
如可能从上文观察到,相较于例如上述包含集中化非核心硬件协调逻辑(HCL)的Naveh的解决方法,将电源管理功能同等分配在于此所说明的核心106间的分散实施例,好处是不需要额外非核心逻辑。虽然非核心逻辑可被包含在一晶片104里,但于所说明的实施例中,所需要的为实施分散分配式电源管理机制是:硬件及微码是与多核心-每晶片(multi-core-per-die)实施例中的核心间通讯配线112、多晶片实施例中的晶片间通讯配线118以及多封装体实施例中的封装体间通讯配线1133在一起地、完全地实体上及逻辑地在它们本身的核心106之内。因为于此所说明的执行分配在多重处理核心106间的电源管理的分散实施例的结果,核心106可能位于各别晶片或各别封装体上。这潜在地降低晶片尺寸并改善良率,提供更多配置弹性,以及提供一高层级的系统中核心数的可调(尺寸的)能力。
在又其他实施例中,核心106在各种实施样态方面与图2的代表实施例不同,并提供一种取代或附加的高度平行的构造,例如应用于一图形处理单元(GPU)的构造,而于此所说明的为各种操作(例如电源状态管理、核心配置发现、以及核心重新规划)所使用的协调系统亦可被应用。
虽然于此已说明本发明的各种实施例,但应理解到已经由举例而非限制地提出它们。本领域的技术人员将明白在不背离本发明的范畴之下,可作出各种在形式及细节方面的改变。举例而言,软件可允许于此所说明的设备及方法的譬如功能、制造、模拟试验、模拟、说明和/或测试。这可经由使用一般程序设计语言(例如C、C++),包含Verilog HDL、VHDL等等的硬件记述语言(HDL),或其他可利用的程序来达成。这种软件可被配置在任何已知的计算机可用媒体中,例如半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等)。于此所说明的设备及方法的实施例可能包含在例如一微处理器核心的半导体知识产权核心(例如,具体化在HDL中),并改变成在集成电路的产品中的硬件。此外,于此所说明的设备及方法可能具体化为硬件及软件的组合。因此,本发明不应被任何一个于此所说明的例示实施例所限制,但应该只依据本发明的权利要求及它们的等效设计而被界定。具体言之,本发明可能在可能使用于通用计算机的微处理器装置之内被实现。最后,本领域的技术人员应明白他们可轻易地使用所揭示的概念及具体的实施例作为用以设计或修改其他构造的基础,用以在不背离如由本发明权利要求所界定的本发明的范畴之下完成本发明的相同目的。
相关申请案的参考文献
本申请案优先权的申请是根据该美国专利临时申请案,案号:61/426,470,申请日:12/22/2010,名称为多核心内的旁路总线(MULTI-COREINTERNAL BYPASS BUS),该案整体皆纳入本案参考。
本申请案与下列同在申请中的美国专利申请案有关,都具有相同的申请日,每一申请案整体皆纳入本案参考。
Claims (22)
1.一种多核心处理器,包含:
多个实体处理核心;以及
核心间状态发现微码单元,在各所述核心中启动该核心,用以经由不通过任何集中式非核心逻辑、而从其他核心接收或传送至其他核心的信号来参与分散式核心间状态发现过程,该核心间状态发现微码单元包括同步逻辑,提供至每个核心,其具有的同步实例为了一核心间状态发现过程的多个目的是可操作的以在多核心上实施;其中每个本地实例是可操作的以在其他核心上实施该同步逻辑的多个新实例,及响应实施于该本地实例的另一核心上该同步逻辑的任何先前实例,
其中每个核心具有一目标操作状态;
该处理器包含一领域,其包括该微处理器的核心的至少其中之二;
该处理器提供一资源至该领域,其资源是由该领域的所述核心所共用;
该同步逻辑是组态成用以发现是否该领域是准备于实现一受限电源节能操作状态供该资源将限制共享该资源的这些核心利用其能够运作的电源、速度或效率;以及
其中该领域是准备于实现该受限电源节能操作状态若且为若在该领域共享该资源的每个启动核心具有至少限制性的作为该受限操作状态的一目标操作状态。
2.如权利要求1所述的多核心处理器,其中:
该核心间状态发现微码单元,经由独立于将该多核心处理器连接至一晶片组的一系统总线的多条旁路通讯配线来与其他核心交换信号;以及
该核心间状态发现微码单元,无任何集中式非核心逻辑的协助下判断一可用的状态值,其是一功能,至少是另一核心的一状态。
3.如权利要求1所述的多核心处理器,其中:
该共享资源是连接至一晶片组的一系统总线;
该领域包含该多核心处理器的全部的启动核心;以及
该受限操作状态是一C-状态,其是禁能该系统总线的一总线时钟。
4.如权利要求1所述的多核心处理器,其中:
该共享资源是在该微处理器的一多核心晶片上的一锁相回路;
该领域包含全部的启动核心,其时钟信号由该锁相回路供应;以及
该受限操作状态是可共享该锁相回路的所述核心所使用的一低于最大效能频率比。
5.如权利要求1所述的多核心处理器,其中:
该共享资源是一电压资源;
该领域包含全部并限于共享该电压资源的该微处理器的启动核心;以及
该受限操作状态是可共享该电压资源的所述核心所使用的一低于最大效能电压电平。
6.如权利要求1所述的多核心处理器,其中:
同步逻辑的每个实例组态为,除非由一终止条件早先地终止,用以递归地在其他核心上实施该同步逻辑的多个实例,直到该同步逻辑的同步实例已经实施在该处理器的一可用的领域的全部核心;以及
其中该同步逻辑组态为随一终止条件用以停止在其他尚未同步核心上同步逻辑的实例的实施,如果其发现一核心具有的一目标操作状态是较低限制性于该受限电源节能操作状态;
其中该同步逻辑组态为协调一最低限度足够数目的其他核心用以发现是否该可用的领域是准备于实现一受限电源节能操作状态。
7.一种多核心处理器,包含:
多个实体处理核心;以及
核心间状态发现微码单元,在各所述核心中启动该核心,用以经由不通过任何集中式非核心逻辑、而从其他核心接收或传送至其他核心的信号来参与分散式核心间状态发现过程,该核心间状态发现微码单元包括同步逻辑,提供至每个核心,其具有的同步实例为了一核心间状态发现过程的多个目的是可操作的以在多核心上实施;其中每个本地实例是可操作的以在其他核心上实施该同步逻辑的多个新实例,及响应实施于该本地实例的另一核心上该同步逻辑的任何先前实例,
其中每个核心具有一目标操作状态;
该处理器包含一领域,其包括该微处理器的核心的至少其中之二;
该处理器提供一资源至该领域,其资源是由该领域的所述核心所共用;
该同步逻辑是组态成用以:
发现是否该领域共享该资源的其中一个该启动核心具有一目标操作状态较低限制性于一目前实现电源节能操作状态;
启动该核心,如果其是授权以协调其资源,以撤销对该资源的一电源节能操作状态,若该同步逻辑已经发现该领域的一启动核心具有一目标操作状态较低限制性于一目前实现电源节能操作状态。
8.如权利要求7所述的多核心处理器,其中该同步逻辑的每个实例是组态成根据在一阶层式方式组织核心间协调的一阶层式协调系统用以在该多核心处理器的其他核心上实施该同步逻辑的从属实例。
9.如权利要求7所述的多核心处理器,其中该阶层式协调系统是根据在所述领域内所述核心所共享的资源将所述核心聚集至所述领域,其中对每个领域而言,为了所述资源的一协调组态的目的,一个单一核心被指定为该域的管理者。
10.如权利要求7所述的多核心处理器,其中:
该阶层式协调系统是将所述核心聚集至多个领域层级,至少包含:
一最高地位的首要层级领域,具有全部的所述核心;以及
二个或二个以上对等次一地位的第二层级领域,最紧接于该最高地位,其是该首要层级领域的组成者并成巢于内,每个第二层级领域群组分别包括所述核心的独占副群组;
对每个多核心领域层级,一个单一核心是被指定为该领域的一管理者;
该最低层级多核心领域以外的每个多核心领域是定义一同属性群组,其是由最紧随以下地位的组成者领域的管理者核心所组成;
每个最低层级多核心领域定义一同属性群组,其是由其全部的核心所组成;
每个核心属于至少一同属性群组;以及
该同步逻辑的每个本地实例受限于将该同步逻辑的新实例实施至非属于一本地核心同属性群组的多个核心。
11.如权利要求7所述的多核心处理器,其中该多核心处理器的多个核心的其中一个指定为对该阶层式协调系统的每个多核心领域的一管理者。
12.如权利要求7所述的多核心处理器,其中每个核心是组态为用以采用其分散式核心间状态发现微码单元来发现是否该多核心处理器的其他核心为禁能。
13.如权利要求7所述的多核心处理器,其中每个核心组态为用以采用其分散式核心间状态发现微码单元来发现该多核心处理器具有多少个启动核心。
14.如权利要求7所述的多核心处理器,其中每个核心组态为用以采用其分散式核心间状态发现微码单元来发现该多核心处理器的一阶层式协调系统。
15.一种多核心处理器的发现状态的分散式电源管理实现方法,该多核心处理器包括多个实体处理核心,该方法包括:
至少二核心经由不通过任何集中式非核心逻辑、而由核心交换的信号来参与一分散式核心间状态发现过程,
其中该方法施行于发现下述状态的至少其中之一:
对该处理器的一复合电源状态;
对该处理器的一领域的一复合电源状态,该领域包括多个核心的一群组,其根据多个组态的其中之一为了电源节能的目的而共享可操作地被组态的一可组态资源;
另一核心的一目标电源状态;
共享一可组态资源的多个核心的一群组任一者的一最低限制性目标电源状态;
一最高限制性目标电源状态,其是由不妨碍其他核心的对应目标操作状态的一核心所实现;
一核心是否启动或禁能;
该多核心处理器具有多少个核心为启动;
共享资源及多个核心的领域的一识别,在其中各样的可组态资源是被共享;
所述核心的一阶层式协调系统,用于经营共享资源;
在多核心处理器内多条旁路通讯配线以协调核心的一利用率,其旁路通讯配线独立于将该多核心处理器连接至一晶片组的一系统总线;以及
所述核心的一阶层式协调系统,施行于旁路通讯配线上的核心间通讯,旁路通讯配线独立于将该多核心处理器连接至一晶片组的一系统总线。
16.如权利要求15所述的方法,其中每个参与的核心使用旁路通讯配线与另一参与的核心交换状态相关信号,旁路通讯配线独立于将该多核心处理器连接至一晶片组的一系统总线。
17.如权利要求15所述的方法,还包括参与该分散式核心间状态发现过程来发现另一核心的一目标电源状态。
18.如权利要求15所述的方法,还包括参与该分散式核心间状态发现过程来发现核心的群组的一复合电源状态。
19.如权利要求15所述的方法,还包括有关一限制其是该资源的组态将影响该电源、速度、或效率随共享资源能够操作的一核心,参与该分散式核心间状态发现过程来限制操作状态的实现供组态一共享资源至一操作状态,其不再限制于共享该资源的任何核心的该最低限制目标操作状态。
20.如权利要求15所述的方法,还包括:
每个核心接收一目标操作状态;
每个核心,回应于接收该目标操作状态,实施同步逻辑的一本地实例,具体化于该核心的微码,用以发现一可用的状态;
其中该可用的状态是不大于该核心所拥有的目标操作状态的一最高限制性操作状态,其是由不妨碍其他核心的对应目标操作状态的该核心所实现;
同步逻辑的该本地实例在另一核心实施该同步逻辑读至少一新的从属实例,及递送该本地核心的目标操作状态至该其他核心;以及
该从属实例计算一混合操作状态为至少是目标操作状态可用于自身及从其他本地核心接收的该目标操作状态的一功能,及传回该混合操作状态至该本地核心。
21.如权利要求20所述的方法,还包括:
同步逻辑的每个实例,除非由一终止条件早先地终止,递归地在其他仍未同步的核心上实施该同步逻辑的多个实例,直到该同步逻辑的同步实例已经实施在该处理器的一可用的领域的全部核心。
22.如权利要求21所述的方法,还包括:
同步逻辑的每个实例条件性地防止同步逻辑的从属实例更在其他尚未同步的核心上实施,如果其实例发现一核心具有的一目标操作状态是非较多限制性于该资源的最低受限操作状态;
其中该同步逻辑是组态为协调一最低限度足够数目的其他核心用以发现是否一受限操作状态能施行于该共享资源。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201061426470P | 2010-12-22 | 2010-12-22 | |
US61/426,470 | 2010-12-22 | ||
US13/299,059 US8782451B2 (en) | 2010-12-22 | 2011-11-17 | Power state synchronization in a multi-core processor |
US13/299,059 | 2011-11-17 | ||
US13/299,122 US8635476B2 (en) | 2010-12-22 | 2011-11-17 | Decentralized power management distributed among multiple processor cores |
US13/299,122 | 2011-11-17 | ||
CN201110436098.1A CN102541237B (zh) | 2010-12-22 | 2011-12-22 | 多核心处理器及其分散式电源管理方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110436098.1A Division CN102541237B (zh) | 2010-12-22 | 2011-12-22 | 多核心处理器及其分散式电源管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104156055A true CN104156055A (zh) | 2014-11-19 |
CN104156055B CN104156055B (zh) | 2017-10-13 |
Family
ID=51332550
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410408615.8A Active CN104156055B (zh) | 2010-12-22 | 2011-12-22 | 配置在多重处理器核心之间的分散式电源管理 |
CN201410214249.2A Active CN103955265B (zh) | 2010-12-22 | 2011-12-22 | 配置在多重处理器核心之间的分散式电源管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410214249.2A Active CN103955265B (zh) | 2010-12-22 | 2011-12-22 | 配置在多重处理器核心之间的分散式电源管理 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN104156055B (zh) |
TW (2) | TWI531896B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156055B (zh) * | 2010-12-22 | 2017-10-13 | 威盛电子股份有限公司 | 配置在多重处理器核心之间的分散式电源管理 |
US10234932B2 (en) * | 2015-07-22 | 2019-03-19 | Futurewei Technologies, Inc. | Method and apparatus for a multiple-processor system |
CN106844258B (zh) * | 2015-12-03 | 2019-09-20 | 华为技术有限公司 | 热添加CPU使能x2APIC的方法和服务器系统 |
US20170308153A1 (en) * | 2016-04-25 | 2017-10-26 | Mediatek Inc. | Power delivery system for multicore processor chip |
TWI767304B (zh) * | 2019-08-22 | 2022-06-11 | 美商谷歌有限責任公司 | 用於編譯針對同步處理器之程式之方法及系統 |
CN110716756B (zh) * | 2019-10-15 | 2023-03-14 | 上海兆芯集成电路有限公司 | 多晶粒的多核计算机平台及其开机方法 |
CN111506154B (zh) * | 2020-04-14 | 2021-05-25 | 深圳比特微电子科技有限公司 | 计算机提高算力和降低功耗算力比的方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020053039A1 (en) * | 2000-10-26 | 2002-05-02 | Matsushita Electric Industrial Co., Ltd | Power management system for integrated circuit |
TW487846B (en) * | 2000-02-29 | 2002-05-21 | Infineon Technologies Corp | Power management and control |
CN1752893A (zh) * | 2004-09-24 | 2006-03-29 | 乐金电子(惠州)有限公司 | 移动通信终端机的电源管理方法 |
CN1812584A (zh) * | 2005-01-19 | 2006-08-02 | 威盛电子股份有限公司 | 具有快取的阶层式搜寻方法与系统 |
US7337334B2 (en) * | 2003-02-14 | 2008-02-26 | International Business Machines Corporation | Network processor power management |
US20100138683A1 (en) * | 2006-05-12 | 2010-06-03 | Burton Edward A | Power control unit with digitally supplied system parameters |
CN101036116B (zh) * | 2004-10-01 | 2010-08-11 | 先进微装置公司 | 跨多内核的分享监控快取列 |
CN103955265A (zh) * | 2010-12-22 | 2014-07-30 | 威盛电子股份有限公司 | 配置在多重处理器核心之间的分散式电源管理 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7966511B2 (en) * | 2004-07-27 | 2011-06-21 | Intel Corporation | Power management coordination in multi-core processors |
KR100663864B1 (ko) * | 2005-06-16 | 2007-01-03 | 엘지전자 주식회사 | 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법 |
US7506184B2 (en) * | 2006-05-09 | 2009-03-17 | Intel Corporation | Current detection for microelectronic devices using source-switched sensors |
US8458498B2 (en) * | 2008-12-23 | 2013-06-04 | Intel Corporation | Method and apparatus of power management of processor |
-
2011
- 2011-12-22 CN CN201410408615.8A patent/CN104156055B/zh active Active
- 2011-12-22 TW TW103115432A patent/TWI531896B/zh active
- 2011-12-22 CN CN201410214249.2A patent/CN103955265B/zh active Active
- 2011-12-22 TW TW100148084A patent/TWI450084B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW487846B (en) * | 2000-02-29 | 2002-05-21 | Infineon Technologies Corp | Power management and control |
US20020053039A1 (en) * | 2000-10-26 | 2002-05-02 | Matsushita Electric Industrial Co., Ltd | Power management system for integrated circuit |
US7337334B2 (en) * | 2003-02-14 | 2008-02-26 | International Business Machines Corporation | Network processor power management |
CN1752893A (zh) * | 2004-09-24 | 2006-03-29 | 乐金电子(惠州)有限公司 | 移动通信终端机的电源管理方法 |
CN101036116B (zh) * | 2004-10-01 | 2010-08-11 | 先进微装置公司 | 跨多内核的分享监控快取列 |
CN1812584A (zh) * | 2005-01-19 | 2006-08-02 | 威盛电子股份有限公司 | 具有快取的阶层式搜寻方法与系统 |
US20100138683A1 (en) * | 2006-05-12 | 2010-06-03 | Burton Edward A | Power control unit with digitally supplied system parameters |
CN103955265A (zh) * | 2010-12-22 | 2014-07-30 | 威盛电子股份有限公司 | 配置在多重处理器核心之间的分散式电源管理 |
Also Published As
Publication number | Publication date |
---|---|
TW201430553A (zh) | 2014-08-01 |
TWI450084B (zh) | 2014-08-21 |
CN104156055B (zh) | 2017-10-13 |
TW201245948A (en) | 2012-11-16 |
CN103955265A (zh) | 2014-07-30 |
TWI531896B (zh) | 2016-05-01 |
CN103955265B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541237B (zh) | 多核心处理器及其分散式电源管理方法 | |
CN104156055A (zh) | 配置在多重处理器核心之间的分散式电源管理 | |
US9009512B2 (en) | Power state synchronization in a multi-core processor | |
CN102521002B (zh) | 可动态和选择性停用内核以及重新设定多内核微处理器 | |
CN102521207B (zh) | 多内核微处理器的共享电源的分布式管理 | |
US8930676B2 (en) | Master core discovering enabled cores in microprocessor comprising plural multi-core dies | |
CN100517219C (zh) | 多芯架构中的资源管理装置和方法以及多芯处理器 | |
CN103814342B (zh) | 多核心计算装置的动态睡眠 | |
TWI582564B (zh) | 動態地調整非核心處理器電路之功率的技術 | |
DE112017004110T5 (de) | Verfahren, vorrichtung und system für eine rollenübertragungsfunktion für einen bus-master | |
TW201030671A (en) | Graphics processing units, metacommand processing systems and metacommand executing methods | |
KR20140079417A (ko) | 상호연결 전력 관리기를 위한 장치 및 방법들 | |
US9632557B2 (en) | Active state power management (ASPM) to reduce power consumption by PCI express components | |
CN107250946A (zh) | 执行对平台装置的动态功率控制 | |
DE10393969T5 (de) | Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands | |
CN101132336A (zh) | 异构多核处理器高速异步互连通信网络 | |
TW200415884A (en) | Media access controller with power-save mode | |
CN107533354A (zh) | 控制处理器的处理引擎的性能状态 | |
CN104050118B (zh) | 提供对设备功能的访问的装置、系统和方法 | |
US12026112B2 (en) | Seamlessly integrated microcontroller chip | |
TWI255405B (en) | Bus controller and controlling method for use in computer system | |
CN109240481A (zh) | 多核微处理器及使用其省电的方法 | |
CN107729055A (zh) | 微处理器及其执行方法 | |
CN118210634B (zh) | 服务器系统、服务器系统的资源调度方法、芯片及芯粒 | |
CN101419567A (zh) | 一种输出数据卡调试信息的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |