微处理器及其执行方法

文档序号:6625199阅读:216来源:国知局
微处理器及其执行方法
【专利摘要】本发明提供一种微处理器及其执行方法。上述微处理器包括多个处理核、一服务处理单元及一存储器,其由上述服务处理单元及上述多个处理核所存取。上述多个处理核的至少一处理核被配置为将一修补写入上述存储器,其中上述修补包括一或多个指令,以在上述存储器从上述至少一处理核写入后,从上述存储器中提取并由上述服务处理单元执行。本发明具有更少的功率消耗。
【专利说明】微处理器及其执行方法

【技术领域】
[0001] 本发明有关于一微处理器,且特别有关于服务处理器修补机制。

【背景技术】
[0002] 多核微处理器的增加,主要是因为其提供了在性能上的优势。可能主要是由于半 导体装置几何维度大小迅速的减少,从而增加了晶体管密度。在一微处理器中多核的存在 已产生与一核与其它核通信的需求,以完成各种功能,例如电源管理、高速缓冲存储器管 理、除错及与更多核相关的配置。
[0003] 传统上,运行在多核处理器上架构的程序(例如,操作系统或应用程序)已使用位 于由所有核架构上可寻址的一系统存储器中的信号量进行通信。这可能足够用于许多目 的,但可能无法提供其它所需的速度、准确度及/或系统层级透明度。


【发明内容】

[0004] 本发明提供一种微处理器。上述微处理器包括多个处理核、一服务处理单元及一 存储器,其由上述服务处理单元及上述多个处理核所存取。上述多个处理核的至少一处理 核被配置为将一修补写入上述存储器,其中上述修补包括一或多个指令以在上述存储器由 上述至少一处理核写入后,从上述存储器中提取并由上述服务处理单元执行。
[0005] 本发明由微处理器所执行的方法,其中上述微处理器具有多个处理核、一服务处 理单元及由上述服务处理单元及上述多个处理核所存取的一存储器。上述方法包括:由上 述多个处理核至少一处理核将一修补写入上述存储器。上述修补包括一或多个指令;在由 上述至少一处理核将上述修补写入上述存储器后,由上述服务处理单元从上述存储器中提 取上述修补的一或多个指令;以及由上述服务处理单元执行上述修补的上述提取指令。
[0006] 本发明提供一种在用于一计算机装置中至少一非暂态计算机可用介质所编码的 计算机程序产品,上述计算机程序产品包括指示一微处理器的计算机可用程序码。上述 计算机可用程序码包括:指示一指示的第一程序码;指示指示一服务处理单元的第二程序 码;以及指示一存储器的第三程序码,其由上述服务处理单元及上述多个处理核所存取。上 述多个处理核至少一处理核被配置为将一修补写入上述存储器。上述修补包括一或多个指 令以在上述存储器由上述至少一处理核写入后,由上述存储器中提取并由上述服务处理单 元执行。
[0007] 本发明具有更少的功率消耗。

【专利附图】

【附图说明】
[0008] 图1是显示一多核微处理器的方块图。
[0009] 图2是显示一控制字、一状态字及一配置字的方块图。
[0010] 图3是显示一控制单元操作的流程图。
[0011] 图4是显不另一实施例的微处理器的一方块图。
[0012] 图5是显示一微处理器操作以转储调试信息的流程图。
[0013] 图6是显示一根据图5流程图中微处理器的操作示例时序图。
[0014] 图7A?7B是显示一微处理器执行跨核高速缓冲控制操作的流程图。
[0015] 图8是显示根据图7A?7B流程图的微处理器操作例子的时序图。
[0016] 图9是显示微处理器进入一低功率封装C-状态的操作流程图。
[0017] 图10是显示根据图9流程图一微处理器操作例子的时序图。
[0018] 图11是根据本发明另一实施例的微处理器进入一低功率封装C-状态的操作流程 图。
[0019] 图12是显示根据图11流程图的微处理器操作一例子的时序图。
[0020] 图13是显示根据图11流程图的微处理器操作另一例子的时序图。
[0021] 图14是显示微处理器的动态重新配置的流程图。
[0022] 图15是显示根据另一实施例中微处理器动态重新配置的流程图。
[0023] 图16是显示根据图15流程图的微处理器操作一例子的时序图。
[0024] 图17是显示在图1中硬件信号量118的一方块图。
[0025] 图18是显示当一核102读取硬件信号量118的操作流程图。
[0026] 图19是显示当一核写入硬件信号量的操作流程图。
[0027] 图20是显示当微处理器使用硬件信号量以执行需一资源独占所有权的操作流程 图。
[0028] 图21是显示根据图3流程图的核发出非睡眠同步请求操作一例子的时序图。
[0029] 图22是显示配置微处理器的一程序流程图。
[0030] 图23是显示根据另一实施例中配置微处理器的一程序流程图。
[0031] 图24是显示根据另一实施例的一多核微处理器的方块图。
[0032] 图25是显示一微码修补架构的方块图。
[0033] 图26A?26B是显示图24中该微处理器以传播图25的一微码修补至该微处理器 的多核的一操作流程图。
[0034] 图27是显不根据图26A?26B流程图的一微处理器操作的一例子的时序图。
[0035] 图28是显示根据另一实施例的一多核微处理器的方块图。
[0036] 图29A?29B是显不根据另一实施例的图28中该微处理器用以传播一微码修补 至该微处理器的多个核的一操作流程图。
[0037] 图30是显示图24的微处理器用以修补一服务处理器程序码的流程图。
[0038] 图31是显示根据另一实施例的一多核微处理器的方块图。
[0039] 图32是显示图31中该微处理器用以传播一 MTRR更新至该微处理器的多个核的 一操作流程图。
[0040] 其中,附图中符号的简单说明如下:
[0041] 100 :多核微处理器;102A、102B、102N:核A、核B、核N;103 :非核;104 :控制单元; 106 :状态暂存器;108A、108B、108C、108D、108N:同步暂存器;108E、108F、108G、108H :影子 同步暂存器;114 :熔断器;116 :专用随机存取存储器;118 :硬件信号量;119 :共享高速缓 冲存储器;122A、122B、122N :时脉信号;124A、124B、124N :中断信号;126A、126B、126N :数 据信号;128A、128B、128N :电能控制信号;202 :控制字;204 :唤醒事件;206 :同步控制; 208 :电源闸;212 :睡眠;214 :选择性唤醒;222 :S ;224 :C ;226 :同步状态或C-状态;228 : 核集合;232 :强迫同步;234 :选择性同步中止;236 :停用核;242 :状态字;244 :唤醒事件; 246 :最低常用C-状态;248 :错误码;252 :配置字;254-0?254-7 :致能;256 :本地核数量; 258 :晶体数量;302、304、305、306、312、314、316、318、322、326、328、332、334、336:步骤; 402A、402B :晶体间总线单元A、晶体间总线单元B ;404 :晶体间总线;406A、406B :晶体A、 晶体 B ;502、504、505、508、514、516、518、524、526、528、532 :步骤;702、704、706、708、714、 716、717、718、724、726、727、728、744、746、747、748、749、752 :步骤;902、904、906、907、 908、909、914、916、919、921、924 :步骤;1102、1104、1106、1108、1109、1121、1124、1132、 1134、1136、1137 :步骤;1402、1404、1406、1408、1412、1414、1416、1417、1418、1422、1424、 1426 :步骤;1502、1504、1506、1508、1517、1518、1522、1524、1526、1532:步骤;1702:拥有 位;1704 :所有者位;1706 :状态机 1802、1804、1806、1808 :步骤;1902、1904、1906、1908、 1912、1914、1916、1918 :步骤;2002、2004、2006、2008:步骤;2202、2203、2204、2205、2206、 2208、2212、2214、2216、2218、2222、2224 :步骤;2302、2304、2305、2306、2312、2315、2318、 2324 :步骤;2404 :核微码只读存储器;2408 :非核微码修补随机存取存储器;2423 :服务处 理单元;2425 :非核微码只读存储器;2439 :修补可定址内容存储器;2497 :服务处理单元 起始地址暂存器2499 :核随机存取存储器;2500 :微码修补;2502 :标头;2504 :即时修补; 2506 :校对和;2508 :CAM 数据;2512 :核 PRAM 修补;2514 :校对和;2516 :RAM 修补;2518 : 非核 PRAM 修补;2522 :校对和;2602、2604、2606、2608、2611、2612、2614、2616、2618、2621、 2622、2624、2626、2628、2631、2632、2634、2652 :步骤;2808 :核修补 RAM ;2912、2916、2922、 2932 :步骤;3002、3004、3006 :步骤;3102 :存储器类型范围暂存器;3202、3204、3206、 3208、3211、3212、3214、3216、3218、3252 :步骤。

【具体实施方式】
[0042] 下文为介绍本发明的最佳实施例。各实施例用以说明本发明的原理,但非用以限 制本发明。本发明的范围当以权利要求书为准。
[0043] 请参照图1,其是显示一多核微处理器100的方块图。微处理器100包括多个处 理核,标示为102A、102B至102N,其统称为多个处理核102,或简称多个核102,且被单独称 为处理核102或简称核102。更佳地说,每一核102包括一或多个功能单元的管线(图未 示出),其包括一指令高速缓冲存储器(instruction cache)、一指令转换单元或指令解码 器,更佳地包括一微码(microcode)单元、暂存换名单元、保留站(Reservation station)、 高速缓冲存储器、执行单元、存储器子系统及包括一排序缓冲器的引退单元(retire unit)。更佳地说,多个核102包括一超纯量(Superscalar)、非顺序执行(out-of-〇rder execution)微体架构。在一实施例中,微处理器100是一 x86架构微处理器,但在其它实施 例中,微处理器100符合其它指令集的架构。
[0044] 微处理器100也包括一耦接至上述多个核102的不同于上述多个核102的非 核103。非核103包括一控制单元104、熔断器114、一专用随机存取存储器116 (Private Random Access Memory,PRAM)以及一共享高速缓冲存储器 119 (Shared Cache Memory),例 如,由多个核102所共享的一第二级(level-2, L2)和/或第三级(level-3, L3)高速缓冲 存储器。每一核102配置用以通过一各自的地址/数据总线126从非核103读取数据/写 入数据至非核103,核102提供一非架构地址空间(也视为专用或微架构地址空间)至非核 103的共享资源。专用随机存取存储器116为专用或非架构的,也就是说其未在微处理器 100的架构使用者程序地址空间中。在一实施例中,非核103包括仲裁逻辑(Arbitration Logic),其通过多个核102仲裁请求存取非核103的资源。
[0045] 每一熔断器114是一电子装置,其可被烧断或不被烧断;当熔断器114不被烧断 时,熔断器114具有低阻抗且易传导电流;当熔断器114被烧断时,熔断器114具有高阻抗 且不容易传导电流。一检测电路与每一熔断器114相关联,以评估该熔断器114,例如,检测 该熔断器114是否传导一高电流或低电压(不烧断,例如,逻辑为零、或清除(clear))或一 低电流或高电压(烧断,例如,逻辑为一、或设置(set))。该熔断器114可在微处理器100 的制造期间内被烧断,且在一些实施例中,一未烧断的熔断器114可在微处理器100制造后 被烧断。更佳地说,一烧断的熔断器114是不可逆的。一熔断器114的例子为一多晶硅熔 丝,其可在装置间施加一足够高的电压而烧断。一熔断器114的另一例子为镍-铬熔丝, 其可使用一激光而烧断。更佳地说,感测电路电力开启感测熔断器114,并提供其评估至微 处理器100的保存暂存器(Holding Register)中的一相应位。当微处理器100被重置解 除时,多个核102 (例如,微码)读取保存暂存器以决定所感测的熔断器114的值。在一实 施例中,在微处理器100被重置解除前,已更新的值可经由一边界扫描输入扫描至保存暂 存器,举例来说,像是一联合测试行为组织(Joint Test Action Group, JTAG)输入,以实质 更新熔断器114的值。此用于测试和/或侦错目的,如在下方描述与图22和图23相关的 实施例中特别有用。
[0046] 另外,在一实施例中,微处理器100包括与每一核102相关不同的本地高级可编程 中断控制器(Advanced Programmable Interrupt Controller,APIC)(图未不出)。在一实 施例中,本地高级可编程中断控制器架构地遵守加利福尼亚州(California)圣塔克拉拉 (Santa Clara)的Intel公司在2012年5月Intel 64及IA-32架构软件开发人员手册3A 中一本地高级可编程中断控制器的说明,特别是在第10. 4节中。尤其是本地高级可编程中 断控制器包括一高级可编程中断控制器ID及一包括导引处理器(Bootstrap Processor, BSP)旗标的高级可编程中断控制器基址暂存器,其产生及用途将更详细地描述的如下,尤 其是与图14至图16有关的实施例。
[0047] 控制单元104包括硬件、软件、或硬件和软件的组合。控制单元104包括一硬件信 号量(Hardware Semaphore) 118 (详细地描述如下图17至图20)、一状态暂存器106、一配 置暂存器112、和与每一核102各自对应的一同步暂存器108。更佳地说,每一非核103的 实体在非架构地址空间内不同地址中可由每一核102所寻址,其该非架构地址空间能使微 码读取及写入核102。
[0048] 每一同步暂存器108可由各自对应的核102写入。状态暂存器106由每一核102 读取。配置暂存器112可(经由如下所述的图2的停用核位236)由每一核102读取及间 接写入。控制单元104还可包括中断逻辑(图未示出),该中断逻辑生成至每一核102的对 应的中断信号(interrupt signal,INTR) 124,该中断信号由控制单元104产生以中断对应 的核102。中断源响应该控制单元104产生至一核102的一中断信号124,且中断源可包括 外部中断源(例如x86架构INTR、SMI、匪I中断来源)或总线事件(例如,x86架构式的总 线信号STPCLK确立(assertion)或解除确立(de-assertion))。此外,每一核102可通过 写入控制单元104传送一核间中断信号124至其它每一核102。更佳地说,除非另有说明, 否则本文中所描述的核间中断信号为一核102的微码经由一微指令(microinrstuction) 请求非架构核间中断信号,其不同于由系统软件经由一架构指令所请求的传统架构核间中 断信号。最后,当一同步情况(Synchronization Condition)已经发生时,如下文所述(例 如,请参阅图21及图3中的方块334),控制单元104可产生一中断信号124至核102 ( - 同步中断信号)。控制单元104也产生一对应的时脉信号(CLOCK) 122至每一核102,其中 控制单元104可以选择性地关闭,且有效地使对应的核102进入睡眠并开启以唤醒核102 来备份。控制单元104还产生一对应核的电能控制信号(PWR) 128至每一核102,其选择性 地控制对应的核102接收或不接收电能。因此,控制单元104可经由对应的电能控制信号 128选择性地使一核102进入一更深的睡眠状态以关闭该核的电能,并重新开启电能至该 核102以唤醒该核102。
[0049] 一核102可写入与其相应的、具有同步位集合(请参阅图2的S位222)的同步暂 存器108中,上述操作被视为一同步请求(Synchronization Request)。更详细的说明描 述如下,在一实施例中,该同步请求请求控制单元104使核102进入睡眠状态,并当一同步 情况发生时和/或当一特定的唤醒事件发生时唤醒该核102。一同步情况发生在微处理器 100中所有可启用(请参阅图2中的致能位254)的核102或可启用核102的一特定子集合 (请参阅图2中的核集合栏位228)已写入相同的同步情况(详细说明于图2中C位224、 同步情况或C-状态栏位226的一组合及核集合栏位228, S位222更详细地描述如下)至 其对应的同步暂存器108时。为了响应一同步情况的发生,控制单元104同时唤醒正等待 该同步情况的所有核102,即,已请求同步情况。在另一描述如下的实施例中,核102可以请 求仅最后写入该同步请求的一核102被唤醒(请参阅图2的选择性唤醒位214)。在另一实 施例中,同步请求不请求核102进入睡眠状态,相反地,同步请求请求控制单元104当同步 情况发生时中断核102,更详细地描述如下,特别是图3和图21。
[0050] 更佳地说,当控制单元104侦测一同步情况已发生时(由于最后写入同步请求至 同步暂存器108中的最后核102),控制单元104使最后核102进入睡眠状态,例如,关闭传 送至最后写入核102的时脉信号122,接着同时唤醒所有核102,例如,开启传送至所有核 102的时脉信号122。在此方法中,所有核102皆精确地在相同的时钟周期(clock cycles) 中被唤醒,例如,使其时脉信号122被开启。对于某些操作,例如除错(debugging),是特别 有益的(请参阅图5中的实施例),其对于精确地在同一时钟周期唤醒核102是有益的。在 一实施例中,非核103包括一单一锁相回路(Phase-locked Loop, PLL),其产生提供给核 102的时脉信号122。在其它实施例中,微处理器100包括多个锁相回路,其产生提供至核 102的时脉信号122。
[0051] 控制、状杰及配置字
[0052] 请参照图2,其显示一控制字202、状态字242及一配置字252的一方块图。一核 102写入控制字202的一值至图1的控制单元104的同步暂存器108,以产生一原子请求 (atomic request),以请求进入睡眠状态和/或与微处理器100中所有其它核102或一特 定子集合同步化(同步)。一核102读取该控制单元104中状态暂存器106所传送的该状 态字242的一值,以决定本文所描述的状态信息。一核102读取该控制单元104中配置暂 存器112所传送的该配置字252的一值,并使用该值,描述如下。
[0053] 控制字202包括一唤醒事件栏位204、一同步控制栏位206以及一电源闸(Power Gate,PG)位208。该同步控制栏位206包括各种位或子栏位,其控制核102的睡眠和/或核 102与其它核102的同步。同步控制栏位206包括一睡眠位212、一选择性唤醒(SEL WAKE) 位214、一 S位222、一 C位224、一同步状态或C-状态栏位226、一核集合栏位228、一强迫 同步位232、一选择性同步中止(kill)位234,以及核停用核位236。状态字242包括一唤 醒事件栏位244、一最低常用C-状态栏位246及一错误码栏位248。该配置字252包括微 处理器100的每一核102的一致能位254、一本地核数量栏位256及一晶体数量栏位258。
[0054] 该控制字202的唤醒事件栏位204包括多个对应于不同事件的位。如果核102设 置一位在唤醒事件栏位204中,当事件发生对应该位时,控制单元104将唤醒该核102 (例 如,开启时脉信号122至该核102)。当该核102已与在核集合栏位228中所指定的所有其 它核同步时,则发生一唤醒事件。在一实施例中,核集合栏位228可指定微处理器100中 所有核102 ;所有核102与即时(instant)核102共享一高速缓冲存储器(例如,一第二 级(L2)高速缓冲及/或第三级(L3)高速缓冲);在相同半导体晶体中,所有核102为即时 核102 (参阅图4中描述一多晶体、多核微处理器100的实施例的一例子);或在其它半导 体晶体中的所有核102为即时核102。一共孚1?速缓冲存储器的核集合102可视为一晶片 (Slice)。其它唤醒事件的其它例子包括,但不局限于,一 X86INTR、SMI、NMI、STPCLK的确 立(assertion)或角军除石角立(de-assertion)及一核间中断(inter-core interrupt)。当 一核102被唤醒时,其可读取在状态字242中的唤醒事件栏位244以决定该正活动唤醒事 件。
[0055] 如果核102设置该PG位208时,该控制单元104使核102进入睡眠状态后关闭至 核102的电能(例如,经由该电能控制信号128)。当控制单元104随后恢复供电至核102 时,控制单元104清除PG位208。PG位208的使用在如下图11至图13将有更详细地描述。
[0056] 如果该核102设定睡眠位212或选择性唤醒位214时,控制单元104在核102写入 使用指定在唤醒事件栏位204唤醒事件的同步暂存器108后,使核102进入睡眠状态。该 睡眠位212和选择性唤醒位214互斥。当一同步情况发生时,它们之间的差别与控制单元 104所采取的行动有关。若核102设置睡眠位212,当一同步情况发生时,则控制单元104 将唤醒所有核102。反之,若一核102设置选择性唤醒位214,当一同步情况发生时,控制单 元104将仅唤醒最后写入同步情况至其同步暂存器的核102。
[0057] 如果核102并未置睡眠位212,也未设置选择性唤醒位214时,虽然控制单元104 不会使核102进入睡眠状态,但当一同步情况发生时,控制单元104将不会唤醒核102。控 制单元104仍将设置在指示一同步情况为正活动的唤醒事件栏位204的位,因此核102可 以侦测该同步情况已经发生。许多可指定于该唤醒事件栏位204中的唤醒事件也可中断由 该控制单元104所产生一中断信号至核102的来源。然而,若有要求,则核102的微码可遮 蔽中断来源。如此,当核102被唤醒时,该微码可读取状态暂存器106决定一同步情况或一 唤醒事件或两者是否发生。
[0058] 如果核102设置S位222,其请求控制单元104在一同步情况中同步。该同步情况 在C位224、同步情况或C-状态栏位226的一些组合中及核集合栏位228中被指定。若C 位224被设置时,C-状态栏位226指定一 C-状态值;若C位224是清除的,同步情况栏位 226指定一非C-状态同步情况。更佳地说,同步状态或C-状态栏位226的值包括一非负 整数的有界集合。在一实施例中,该同步情况或C-状态栏位226为4位。当C位224为清 除(clear)时,一同步情况发生在:一特定的核集合栏位228中的所有核102已经写入S位 222集合和同步情况栏位226的相同值至同步暂存器108中。在一实施例中,同步情况栏 位226的值对应一唯一的同步情况,例如,在下方所描述示范的实施例中各种的同步情况。 当C位224被设置时,同步情况发生在在一特定的核集合栏位228中所有核102不论是否 已写入该C-状态栏位226中相同的值、皆写入各自S位222集合至同步暂存器108中。在 此情况下,控制单元104分发(post)该C-状态栏位226中的最低写入值至该状态暂存器 106中的最低常用C-状态栏位246,该最低写入值可由一核102所读取,例如,通过在方块 908中的主要核102或通过方块1108中最后写入/选择性地被唤醒核102所读取。在一实 施例中,若核102在同步情况栏位226中指定一预设值(例如,所有位集合),此指示控制单 元104以匹配即时核102与其它核102所指定的任一同步情况栏位226值。
[0059] 若核102设定强迫同步位232时,控制单元104将强迫所有正进行的同步请求被 立即匹配。
[0060] 一般来说,若任一核102因在唤醒事件栏位204中所指定的一唤醒事件所唤醒时, 控制单元104通过清除在同步暂存器108中S位222来中止(kill)所有正进行的同步请 求。然而,若核102设定该选择性同步中止位234时,控制单元104将中止只有因(非同步 情况发生)唤醒事件所唤醒的核102所正进行的同步请求。
[0061] 若两或多个核102在不同的同步情况下请求同步时,控制单元104认为这为一 停顿(deadlock)情况。若两或多个核102将一值为设置(set)的S位222、一值为清除 (clear)的C位224及同步情况栏位226中的不同值写入各自的同步暂存器108中时,两或 多个核102则在不同的同步情况下请求同步。举例来说,若一核102将一值为设置(set) 的S位222、一值为清除(clear)的C位224及一同步情况226的值7写入至同步暂存器 108中,且另一核102将一值为设置(set)的S位222、一值为清除(clear)的C位224及一 同步情况226值9写入至同步暂存器108中时,控制单元104则认为此为一停顿情况。此 夕卜,若一核102将一值为清除的C位224写入至其同步暂存器108中、而另一核102将一值 为设置(set)的C位224写入至其同步暂存器108中,则控制单元104认为此为一停顿情 况。为了响应一停顿情况,控制单元104中止所有正进行的同步请求,并唤醒所有在睡眠状 态中的核102。控制单元104也分发(post)在状态暂存器106的错误码栏位248中的值, 其状态暂存器106为可由核102读取以决定该停顿原因并采取适当行动的状态暂存器。在 一实施例中,错误码248表示每一核102所写入的同步情况,该同步情况使每一核决定是否 继续执行其动作的预定路线或延迟至另一核102。举例来说,若一核102写入一同步情况 以执行一电源管理操作(例如,执行一 X86MWAIT指令)以及另一核102写入一同步情况以 执行一高速缓冲管理操作(例如,X86WBINVD指令),则计划执行该MWAIT指令的核102因 MWAIT是一可选择的操作,而WBINVD是一强制性的操作而取消MWAIT指令,以延迟至另一 正执行WBINVD指令的核102。在举另一例子,若一核102写入一同步情况以执行一除错操 作(例如,转储除错状态(Dump debug state))以及另一核102写入一同步情况以执行一 高速缓冲管理操作(例如,WBINVD指令)时,则计划进行WBINVD的核102通过储存WBINVD 状态,等待转储除错发生及恢复WBINVD状态并执行WBINVD指令,以延迟至执行转储除错的 核 102。
[0062] 在一单一晶体的实施例中晶体数量栏位258为零。在一多个晶体的实施例(例如, 图4中),晶体数量栏位258指示哪一晶体由读取配置暂存器112的该核102所驻留。举例 来说,在一二晶体的实施例中,该晶体被指定为0和1以及该晶体数量栏位258具有0或1 的值。在一实施例中,举例来说,熔断器114选择性地被烧断以指定一晶体为0或1。
[0063] 本地核数量栏位256指示本地到正读取配置暂存器112的核102的晶体中核的数 量。更佳地说,虽然具有一由所有核102所共享的单一配置暂存器112,然而控制单元104 知道哪个核102正读取配置暂存器112,并根据一读取器在本地核数量栏位256中提供正 确的值。这使得核102的微码知道位于同一晶体中其它核102间的本地核数量。在一实施 例中,在微处理器100的非核103部分的一多路复用器选择适当的值,该适当的值可基于核 102读取配置暂存器112而在配置字252的本地核数量栏位256中恢复。在一实施例中,选 择性地烧断熔断器114操作与多路复用器一起恢复本地核数量栏位256的值。更佳地说, 本地核数量栏位256的值是固定独立的,其在晶体中的核102为可使用的,如以下所描述的 致能位254所指示。也就是说,即使在该晶体的一或多个核102被停用时,本地核数量栏位 256的值维持固定。另外,核102的微码计算核102的整体核数量,该核102的整体核数量 为一与配置相关的值,其用途详细描述如下。整体核数量指示微处理器100整体核102的 核数量。核102通过使用晶体数量栏位258的值计算其整体核数量。例如,在一实施例中, 微处理器100包括8个核102,平均分至两个具有晶体值0及1的晶体中,在每一晶体中,本 地核数量栏位256恢复一 0、1、2或3的值;在晶体值为1的核加上4即恢复本地核数量栏 位256的值以计算其整体核数量。
[0064] 微处理器100的每一核102具有一配置字252对应致能位254,配置字252指示该 核102是否被启用或停用。在图2中,致能位254分别用致能位254-x表示,其中X是该对 应核102的整体核数量。图2中的例子假设微处理器100中具有八个核102,在图2及图4 的例子中,致能位254-0指示具有整体核数量0的核102(例如,核A)是否被启用,致能位 254-1指示具有整体核数量1的核102 (例如,核B)是否被启用,致能位254-2指示具有整 体核数量2的核102 (例如,核C)是否被启用等等。因此,通过了解整体核数量,一核102 的微码可由配置字252中决定微处理器100的哪一核102被停用以及哪一核102被启用。 更佳地说,若该核102被启用时,则一致能位254被设定,若核102被停用时,则致能位254 被清除。当该微处理器100被重新设定时,硬件自动地填入(populate)该致能位254。更 佳地说,当微处理器100被制造指示一已给定的核102是否为启用,若是停用时,该硬件基 于熔断器114选择性地被烧断而填入致能位254。举例来说,如果一已给定的核102被测 试并发现其为故障时,一熔断器114可被烧断以清除该核102的致能位254。在一实施例 中,一被烧断的熔断器114指示一核102为停用,并防止来自被提供至停用的核102的时脉 信号。每一核102可将该停用核位236写入至其同步暂存器108中,以清除其致能位254, 更多与图14至图16相关的细节将详细描述如下。更佳地说,清除致能位254不会阻止该 核102执行指令,但会更新该配置暂存器112,并且,该核102必须设定一不同的位(图未示 出),以防止该核本身执行指令,例如,使其电源被移除和/或关闭其时脉信号。对于一多晶 体配置微处理器100 (例如,图4),该配置暂存器112包括该微处理器100中所有核102的 一致能位254,例如,所有核102不仅可是该本地晶体的核102,而且也可为该远端晶体的核 102。更佳地说,在一多晶体配置的微处理器100中,当一核102写入至其同步暂存器108 时,同步暂存器108的值被传递至对应另一晶体中的影子同步暂存器108的核102(请参阅 图4),其中,若该停用核位236被设置,将造成一更新被传送至远端晶体配置暂存器112,使 得本地和远端晶体配置暂存器112皆具有相同的值。
[0065] 在一实施例中,配置暂存器112无法直接由一核102写入。然而,由一核102写入 至该配置暂存器112将造成本地致能位254的值被传播到在一多晶体微处理器100中其它 晶体的配置暂存器112中,例如,如图14中方块1406中的描述。
[0066] 控制单元
[0067] 请参考图3,是显示一描述该控制单元104的流程图。流程开始于方块302。在方 块302中,一核102写入一同步请求,例如,写入一控制字202至其同步暂存器108,其中该 同步请求由控制单元104接收。在一多晶体配置微处理器100的情况下(例如,请参见图 4),当一控制单元104的影子同步暂存器108接收由其它晶体406所传送的已传播同步暂 存器108的值,该控制单元104根据图3有效地操作,例如,当该控制单元104从其本地核 102其中之一接收一同步请求(方块302),除了该控制单元104使核102进入睡眠(例如, 方块314)、或唤醒(在方块306、328或336)、或中断(在方块334)、或阻止核102在其本地 晶体406的唤醒事件(方块326),还填入其本地状态暂存器106 (方块318)。流程进行到 方块304。
[0068] 在方块304中,该控制单元104检查在方块302中的该同步情况,以决定一停顿 (deadlock)情况是否已发生,如上图2所描述。若是,则流程行进至方块306 ;否则,流程进 行到判断方块312。
[0069] 在方块305中,该控制单元104侦测在同步暂存器108其中之一的唤醒事件栏位 204的一唤醒事件的发生(除了在方块316中被侦测的一同步情况的发生之外)。如下方 方块326中所描述,控制单元104可自动地阻止唤醒事件。控制单元104可以侦测该唤醒 事件发生为一事件不同步(Event Asynchronous)时在方块302中写入一同步请求。流程 也由方块305进行至方块306。
[0070] 在方块306中,该控制单元104填入状态暂存器106,中止正进行的同步请求,并且 唤醒任一睡眠的核102。如上所述,唤醒睡眠核102可包括恢复其功率。该核102接着可读 取该状态暂存器106,特别是错误码248,以决定停顿的原因,并根据该冲突同步请求对应 的优先顺序处理它,如上所描述。此外,该控制单元104中止所有正进行的同步请求(例如, 清除在每一核102的同步暂存器105中的S位222),除非方块306是由方块305后达成且 该选择性同步中止位234被设定时,在此种情况下,该控制单元104会中止仅由该唤醒事件 所唤醒的核102正进行的同步请求。若方块306是由方块305后达成,则该核102可读取 唤醒事件244栏位以决定所发生的唤醒事件。此外,若该唤醒事件是一未遮蔽(unmasked) 的中断来源,则控制单元104将通过该中断信号124产生一中断请求至该核102。流程在方 块306中结束。
[0071] 在判断方块312中,该控制单元104决定睡眠位212或选择性唤醒位214是否被 设定。若有,则流程进行至方块314 ;否则,流程进行至判断方块316。
[0072] 在方块314中,控制单元104使该核102进入睡眠状态。如上所述,使一核102进 入睡眠状态可包括移除其电源。在一实施例中,作为一最佳化的例子,即使该PG位208被 设定,若此为最后写入的核102 (例如,将造成同步情况的发生),在方块314中,该控制单元 104不移除该核102的电源,并且因该控制单元104将在方块328中即时唤醒最后写入的核 102备份,因此该选择性唤醒位214被设定。在一实施例中,该控制单元104包括同步逻辑 及睡眠逻辑,两者互相分开,但互相通信;此外,该每一同步逻辑和睡眠逻辑包括该同步暂 存器108的一部分。有利的是,写入至该同步暂存器108的同步逻辑部分和写入到该同步 暂存器108的睡眠逻辑部分是原子的(atomic),即不可分割的。也就是说,如果一部分写入 发生时,其同步逻辑部分及睡眠逻辑部分皆保证会发生。更佳地说,该核102的管线阻塞, 不允许任何更多的写入发生,直到其被保证写入至该同步暂存器108中的两个部分皆已发 生为止。写入一同步请求并立即进入睡眠状态的优点是其不需要该核1〇2(例如,微码)连 续地运转以决定该同步情况是否已经发生。由于可以节省电力且不消耗其它资源,例如总 线及/或存储器频宽,因此非常有益。值得注意的是,为了进入睡眠状态但无需请求与其它 核102同步(例如,方块924和方块1124),该核102可以写入S位222为清除(Clear)及 睡眠位212为设定(Set),在本文中称为一睡眠请求,至该同步暂存器108中;若在唤醒事 件栏位204中所指定一未遮蔽的唤醒事件发生时(例如,方块305),但未寻找此核102 -同 步情况的发生(例如,方块316)时,在此种情况下,该控制单元104唤醒该核102 (例如,方 块306)。流程进行到判断方块316。
[0073] 在判断方块316中,该控制单元104决定一同步情况是否发生。若是,流程进行 至方块318。如上所述,一同步情况可仅在S位222被设定时发生。在一实施例中,该控制 单元104使用图2中该致能位254,其指示该微处理器100中哪些核102被启用,以及哪些 核102被停用。该控制单元104仅寻找被启用的核102,以决定一同步情况是否发生。一 核102可因其被测试且发现在生产时间中有缺陷而被停用。因此,一熔断器被烧断以使该 核102无法操作并指示该核102被停用。一核102可因该核102所请求的软件而被停用 (例如,请参阅图15)。举例来说,在一使用者请求时,BIOS写入一特殊模组暂存器(Model Specific Register,MSR)以请求该核102被停用,以响应该核102停止使用其本身(例如, 通过该停用核位236),并通知其它核102读取其它核102决定停用该核102的配置暂存器 112。一核102还可经由一微码来修补(patch)(例如,请参阅图14),该微码可通过烧断熔 断器114产生和/或从系统存储器(例如一 FLASH存储器)载入。除了决定一同步情况是 否发生之外,该控制单元104检查该强迫同步位232。若为设置(set),流程则进行至方块 318。若该强迫同步位232为清除(clear)且一同步情况尚未发生,则流程结束于方块316 中。
[0074] 在方块318中,该控制单元104填入该状态暂存器106。明确的说,如果发生同步 情况为所有核102请求一 C-状态的同步时,如上所述,该控制单元104填入最低常用C-状 态栏位246。流程进行至判断方块322。
[0075] 在判断方块322中,该控制单元104检查选择性唤醒(SEL WAKE)位214。如果该 位为设置(set)时,流程进行至方块326;否则,流程进行至判断方块322。
[0076] 在方块326中,该控制单元104阻止除了即时核(instant core)外所有其它核 102的所有唤醒事件,其中该即时核为在方块302中最后写入同步请求至其同步暂存器108 的核102,因此使该同步情况发生。在一实施例中,如果欲阻止唤醒事件及其它方面为真 (True)时,该控制单元104的逻辑简单地布尔(Boolean) AND运算具有一为假(False)信 号的唤醒情况。阻止所有核的所有唤醒事件的用途被更详细地描述如下,特别是图11至图 13。流程进行至方块328。
[0077] 在方块328中,该控制单元104仅唤醒该即时核102,但不唤醒请求该同步的其它 核。此外,该控制单元104通过清除该S位222中止该即时核102正进行的同步请求,但不 中止其它核102正进行的同步请求,例如,离开其它核102的S位222设置。因此有利的 是,如果当即时核102在其被唤醒后写入另一同步请求时,其将会再次造成同步情况的发 生(假设其它核102的同步请求尚未被中止),一例子将在下方图12及图13中描述。流程 结束于方块328。
[0078] 在判断方块332中,该控制单元104检查该睡眠位212。如果该位为设置(set) 时,则流程前进到方块336 ;否则,流程前进到方块334。
[0079] 在方块334中,该控制单元104传送一中断信号(同步中断)至所有核102。图 21的时序图是说明一非睡眠同步请求的例子。每一核102可读取该唤醒事件栏位244并 侦测一同步情况的发生是中断的原因。流程已进行到方块334,在此情况下,当核102写入 其同步请求时,核102选择不进入睡眠状态。虽然此种情况并未使核102获得与进入睡眠 状态时同样的益处(例如,同时唤醒),但其具有使核102在等待最后写入其同步要求的核 102在无需同时唤醒的情况下,继续处理指令的潜在优势。流程结束于方块334。
[0080] 在方块336中,该控制单元104同时被所有核102唤醒。在一实施例中,该控制单 元104在同一时钟周期准确地开启至所有核102的该时脉信号122。在另一实施例中,该控 制单元104以一交错方式开启该时脉信号122至所有核102。也就是说,该控制单元104在 开启时脉信号122至每一核间引入一时钟周期的预定数量(例如,时钟顺序为十或一百)。 然而,时脉信号122交错(staggering)开启被同时考虑于本发明中。为降低所有核102被 唤醒时的一电力耗损尖峰的可能性,时脉信号122交错开启是有益的。在又另一实施例中, 为了降低电力耗损尖峰的可能性时,该控制单元104在同一时钟周期开启至所有核102的 时脉信号122,但通过初始在一已减少的频率中提供时脉信号122并提高频率至目标频率 下,在一断断续续(stuttering)、或压制(throttled)方式中执行。在一实施例中,该同步 请求作为该核102的微码指令的执行结果被发出,并且该微码被设计用于至少一些同步情 况值,且指定该同步情况值的该微码位置为唯一的。举例来说,在微码中仅一地方包括一同 步X请求,在微码中仅一地方包括一同步y请求,依此类推。在这些情况下,因所有核102 在完全相同的地方被唤醒,其可使得微码设计人员设计出更有效率且无缺陷的程序码,因 此同时唤醒是有益的。此外,当尝试重新建立和修复因多核相互作用而出现错误,但当单一 核运行时则不出现错误时,以除错为目的同时唤醒可能是特别有益的。图5及图6是显示 此一例子。此外,该控制单元104中止所有正进行的同步请求(例如,清除在每一核102的 同步暂存器108中的S位222)。流程结束于方块336。
[0081] 本文所描述实施例的一优点为其可显著减少在一微处理器中微码的数量,因比起 循环(looping)或执行其它检查以同步多核间的操作,在每一核中的微码可简单地写入同 步请求,进入睡眠状态,并且知道何时在微码中同一地方唤醒所有核。该同步请求机制的微 码用途将描述于下方。
[0082] 多晶体微处理器
[0083] 请参照图4,是显示另一实施例微处理器100的一方块图。图4中的微处理器100 在许多方面类似于图1的微处理器1〇〇,其中一多核处理器及核102均相似。然而,图4 的实施例是一多晶体配置。也就是说,该微处理器100包括安装在一共同封装体(common package)内并经由一晶体内总线404与另一晶体通信的多半导体晶体406。图4的实施例 包括两个晶体406,标记为晶体A406A和通过晶体间总线404所耦接的晶体B406B。此外, 每一晶体406包括一晶体间总线单元402,晶体间总线单元402联系各自的晶体406至该晶 体间总线404。更进一步地,每一晶体406包括耦接至各自核102及晶体间总线单元402的 非核103中的控制单元104。在图4的实施例中,晶体A 406A包括四个核102-核A 102A、 核B 102B、核C 102C和核D 102D,其中上述四个核102耦接至一耦接于一晶体间总线单元 A 402A的控制单元A 104A;同样地,晶体B 406B包括四个核102-核E 102E、核F 102F、 核G102G和核H102H,其中上述四个核102耦接至一耦接于一晶体间总线单元B 402B的控 制单元B104B。最后,每一控制单元104不仅包括在包括本身的该晶体406中每一核的一同 步暂存器108,也包括另一晶体406中每一核的一同步暂存器108,其中,上述另一晶体406 中的同步暂存器108为图4中所示的影子暂存器(Shadow register)。因此,图4所示实施 例中的每一控制单元包括八个同步暂存器108,表示为108A、108B、108C、108D、108E、108F、 108G和108H。在控制单元A104A,同步暂存器108E、108F、108G和108H为影子暂存器,而在 控制单元B104B中,同步暂存器108A、108B、108C、108D为影子暂存器。
[0084] 当一核102将一值写入到其同步暂存器108时,在核102的晶体406中的控制单 元104,经由晶体间总线单元402及晶体间总线404,写入该值至另一晶体406中对应的影 子暂存器108。此外,如果停用核位236被设定于传播至影子同步暂存器108的该值中时, 该控制单元104还更新在配置暂存器112中对应的致能位254。在此种方式下,即使是在微 处理器100核配置是动态变化的情形下(例如,图14至图16),一同步情况的发生(包括一 跨晶体(trans-die)同步情况的发生)可以被侦测。在一实施例中,晶体间总线404是一相 对低速的总线,且该传播可采用为一预定数量100核的时钟周期顺序,并且每一控制单元 104包括一状态机制,其取用一预定数量的时间以侦测该同步情况的发生,并开启该时脉信 号至各自晶体406中的所有核102。更佳地说,在控制单元104开始写入值至另一晶体406 后(例如,被授予的晶体间总线404),在本地晶体406中的控制单元104 (例如,包括写入 核102的晶体406)被配置为延迟更新该本地同步暂存器直到一预定数量的时间为止(例 如,传播时间数量与状态机制同步情况发生侦测时间数量的总和)。在此种方式中,在两个 晶体中的控制单元104同时侦测一同步情况的发生,并且同时在两个晶体406中开启至所 有核102的时脉信号。当尝试重新建立及修复仅因多核相互作用而出现,但不在一单一核 正运行时出现的错误时,以除错为目的而言可能特别地有益。图5和图6描述了可能利用 此功能优势的实施例。
[0085] 调试橾作
[0086] 微处理器100的核102被配置用以执行单独的调整操作,例如指令执行及数据存 取的断点(Breakpoint)。此外,微处理器100被配置用以执行为跨核(trans-core)的调试 操作,例如,该调试操作与该微处理器100 -个以上的核102相关。
[0087] 请参阅图5,其是显示微处理器100操作以转储(dump)调试(debug)信息的流程 图。该操作是从一单一核的角度所描述,但微处理器100中每一核102根据其描述操作共 同转储微处理器100的状态。更具体地说,图5描述了一核接收请求以转储调试信息的操 作,其流程开始于方块502,且其它核102的操作流程开始于方块532。
[0088] 在方块502中,核102其中之一接收一请求以转储调试信息。更佳地说,上述调整 信息包括该核102或其一子集的状态。更佳地说,调整信息被转储至系统存储器或一可通 过调整设备监控的外部总线,像是一逻辑分析器。响应该请求,核102传送一调试转储信息 至其它核102并传送其它核102 -核间中断信号。更佳地说,在此时间中断被停用的期间 内(例如,该微码不允许本身被中断),核102阻止微码以响应该请求以转储调试信息(在 方块502中),或响应上述中断信号(在方块532),并保持在微码中,直到方块528为止。在 一实施例中,核102只需当其处于睡眠状态且位于架构指令边界时中断。在一实施例中,本 文所描述的各种核间信息(像是在方块502及其它像是在方块702、1502、2606和3206中 的信息)经由同步暂存器108控制字的该同步情况或C-状态栏位226被传送及接收。在 其它实施例中,核间信息经由非核专用随机存取存储器116被传送及接收。流程从方块502 前进到方块504。
[0089] 在方块532中,其它核102的其中之一(例如,在方块502中接收该调试转储请求 核102之外的一核102)由于在方块502中传送的核间中断信号及信息被中断并接收该调 试转储信息。如上所述,虽然在方块532中的流程由单一核102的角度所描述,但每一其它 核102 (例如,不在方块502中的核102)在方块532被中断并接收该信息,且执行方块504 至528的步骤。流程由方块532前进到方块504。
[0090] 在方块504中,核102写入一同步情况1(在图5中标示为SYNC 1)的同步请求 至其同步暂存器108中。因此,该控制单元104使核102进入睡眠状态。流程进行到方块 506。
[0091] 在方块506中,当所有核已写入SYNC 1时,核102由控制单元104所唤醒。流程 进行到方块508。
[0092] 在方块508中,核102转储其状态至存储器中。流程进行到方块514。
[0093] 在方块514中,核102写入一 SYNC 2,其造成控制单元104使核102进入睡眠状 态。流程进行到方块516。
[0094] 在方块516中,当所有核已写入SYNC 2时,核102由控制单元104所唤醒。流程 进行到方块518。
[0095] 在方块518中,核102转储在方块508中调试信息的该存储器地址设定一旗标 (flag),通过一重置(Reset)信号维持,接着重置其本身。核102重置微码,该微码侦测该 旗标并由所储存的存储器地址重新载入其状态。流程进行到方块524。
[0096] 在方块524中,核102写入一 SYNC 3,其造成控制单元104使核102进入睡眠状 态。流程进行到方块526。
[0097] 在方块526中,当所有核已写入SYNC 3时,核102由控制单元104所唤醒。流程 进行到方块528。
[0098] 在方块528中,该核102基于该在方块518中被重新载入的状态移除重置,并开始 提取架构(例如,x86)指令。流程结束于方块528。
[0099] 请参照图6,其是显示一根据图5流程图中微处理器100的操作示例时序图。在此 例子中,微处理器100配置具有三个核102,标示为核0、核1及核2,如图所示。然而,应可 理解的是,在其它实施例中,微处理器100可包括不同数量的核102。在此时序图中,事件时 序的过程如下所述。
[0100] 核〇接收一调试转储请求,并传送一调试转储信息和中断信息至核1及核2 (每一 方块502)以作为响应。该核0接着写入一 SYNC 1,并进入睡眠状态(每一方块504)。 [0101] 每一核1和核2最后由其目前任务中被中断并读取其信息(每一方块532)。作为 响应,每一核1和核2写入一 SYNC 1并进入睡眠状态(每一方块504)。如图所不,每一核 写入SYNC 1的时间可能不同,例如,由于该指令当该中断被确立时正在执行。
[0102] 当所有核已写入SYNC 1时,控制单元104同时唤醒所有核(每一方块506)。每一 核接着转储其状态至存储器(每一方块508),写入一 SYNC 2并进入睡眠状态(每一方块 514)。需转储该状态的时间量可能不同;因此,在每一核写入SYNC 2的时间可能不同,如图 所示。
[0103] 当所有核已写入SYNC 2时,控制单元104同时唤醒所有核(每一方块516)。每一 核接着重置其本身并由存储器中重新载入其状态(每一方块518),写入SYNC 3并进入睡眠 状态(每一方块524)。如图所示,需重置并重新载入状态的时间量可能会有所不同;因此, 在每一核写入SYNC 3的时间可能不同。
[0104] 当所有核已写入SYNC 3时,控制单元104同时唤醒所有核(每一方块526)。每一 核接着开始在被中断的时间点提取架构指令(每一方块528)。
[0105] 传统在多处理器之间同步操作的解决方法是使用软件信号量(semaphore)。然而, 传统的解决方法缺点是其无法提供时间等级同步(Clock-level Synchronization)。本文 所描述实施例的优点是控制单元104可同时开启时脉信号122至所有的核102。
[0106] 在如上所述的方法中,一调整微处理器100的工程师可配置核102其中之一以周 期性地产生检查时间点,其用以产生调试转储请求,举例来说,在一预定数量的指令已经执 行后。当微处理器100在运行时,工程师取得在一记录档中微处理器100外部总线上的所有 活动。接近总线被察觉已发生时间的记录档部分可提供至一软件模拟器,其模拟该微处理 器100以帮助工程师调试。该模拟器模拟执行由每一核102所指示的指令,并模拟外部微 处理器100总线使用纪录信息的执行。在一实施例中,所有核102的模拟器从同时由一重 置点启动。因此,该微处理器100的所有核102实际上在同一时间停止重置(例如,在SYNC 2之后)是具有较高的效果。此外,通过在所有其它核102已经停止其当前的任务(例如, 在SYNC 1之后)之前,等待转储其状态时,由一核102转储其状态不会与其它核执行调试 (例如,共享存储器总线或高速缓冲相互影响)的程序码及/或硬件互相干扰,其可增加重 新产生错误并判断其原因的可能性。同样地,直到所有核102已经完成重新载入其状态之 前(例如,在SYNC 3之后),等待以开始提取架构指令,通过一核102重新载入状态不会与 其它核执行调试的程序码及/或硬件互相干扰,其可增加重新产生错误并判断其原因的可 能性。
[0107] 这些好处提供比现有方法更多的优点,其现有方法如美国专利US8, 370, 684,其从 所有目的整体上作为参考被引用于此,其无法享有能够取得该同步请求核的好处。
[0108] 高谏缓冲控制橾作
[0109] 微处理器100的核102被配置用以执行独立的高速缓冲控制操作,像是在本地高 速缓冲存储器,例如,不由两个或更多核102所共享的高速缓冲器。此外,微处理器100被 配置用以执行为跨核(Trans-core)的高速缓冲控制操作,例如,与微处理器100 -个以上 的核102相关,以及例如,因其与一共享高速缓冲存储器119相关。
[0110] 请参阅图7A?7B,其是显示微处理器100用以执行跨核高速缓冲控制操作的流 程图。图7A?7B的实施例描述微处理器100如何执行一 x86架构写回无效缓冲(Write Back and Invalidate Cache,WBINVD)指令。一 WBINVD指令指不执行指令的核102写回 在微处理器100高速缓存存储器中所有的修改行至系统存储器并使高速缓存存储器失效, 或清空(Flush)。该WBINVD指令还指示该核102发布特别的总线周期以将任意高速缓存存 储器外部直接指入微处理器100中,以写回其已修改的数据,并使上述数据失效。上述操作 是以一单一核的角度所描述,但微处理器100的每一核102根据本说明书操作共同写回已 修改高速缓冲线(Modified cache line)并使微处理器100的高速缓冲存储器无效。更具 体地说明,图7A?7B描述一核遇到WBINVD指令的操作,其流程开始于方块702,并且其它 核102的流程开始于方块752。
[0111] 在方块702中,核102其中之一遇到一 WBINVD指令。作为响应,核102传送一 WBINVD指令信息至其它核102并且传送一核间中断信号至上述其它核102。更佳地说,直 到流程进行至方块748/749之前,核102在时间中断信号被停用的期间内(例如,该微码不 允许其本身被中断),阻止微码以作为WBINVD指令的响应(在方块702中),或以作为该中 断信号(在方块752中)的响应,并维持在微码中。流程从方块702进行到方块704。
[0112] 在方块752中,其它核102其中之一(例如,除了在方块702中所遇到该WBINVD 指令核102之外的一核)由于在方块702中被传送的该核间中断信号而被中断并接收该 WBINVD指令信息。如上所述,虽然流程在方块752是由单一核102的角度所描述,但每一其 它核102 (例如,不为在方块702中的核102)在方块752中被中断并接收该信息,且执行方 块704至方块749的步骤。流程由方块752进行到方块704。
[0113] 在方块704中,该核102写入一同步情况4的同步请求(在图7A?7B中标示为 SYNC 4)至其同步暂存器108中。因此,控制单元104使核102进入睡眠状态。流程进行到 方块706。
[0114] 在方块706中,当所有核102已写入SYNC 4时,该核102由控制单元104所唤醒。 流程进行到方块708。
[0115] 在方块708中,核102写回并使得本地高速缓冲存储器失效,例如,不由核102与 其它核102共享的第1级(Level-1,LI)高速缓冲存储器。流程进行到框714。
[0116] 在方块714中,核102写入一 SYNC 5,其造成控制单元104使核102进入睡眠状 态。流程进行到方块716。
[0117] 在方块716中,当所有核102已写入SYNC 5时,核102由控制单元104所唤醒。流 程进行到判断方块717。
[0118] 在判断方块717中,核102判断其是否为在方块702中所遇到该WBINVD指令的核 102 (与在方块752中所接收该WBINVD指令信息的核102相对照)。若是,则流程进行到方 块718 ;否则,流程前进到方块724。
[0119] 在方块718中,核102写回并使共享高速暂存器119失效。在一实施例中,微处理 器100包括多个晶片在多个核但并非全部核中,微处理器100的核102共享一高速缓冲存 储器,如上所述。在此一实施例中,类似于方块717至方块726中的中间操作(图未示出) 被执行,其为由在晶片中核102其中之一执行写回及使共享缓冲存储器失效,而该晶片的 其它(多个)核回到类似于方块724中的睡眠状态以等待直到该高速缓冲存储器失效为 止。流程进行到方块724。
[0120] 在方块724中,核102写入一 SYNC 6,其造成控制单元104使核102进入睡眠状 态。流程进行到方块726。
[0121] 在方块726中,当所有核102已写入SYNC 6时,核102由控制单元104所唤醒。流 程进行到判断方块727。
[0122] 在判断方块727中,核102判断其是否为在方块702中遇到WBINVD指令的核 102 (与在方块752中所接收该WBINVD指令信息的核102相对照)。若是,则流程进行到方 块728 ;否则,流程前进到方块744。
[0123] 在方块728中,核102发布特定的总线周期以造成外部高速缓冲器被写回并使外 部高速缓冲器失效。流程进行到方块744。
[0124] 在方块744中,写入一 SYNC 13,其造成控制单元104使核102进入睡眠状态。流 程进行到方块746。
[0125] 在方块746中,当所有核102已写入SYNC 13时,核102由控制单元104所唤醒。 流程进行到判断方块747。
[0126] 在判断方块747中,核102判断其是否为在方块702中遇到WBINVD指令的核 102 (与在方块752中所接收该WBINVD指令信息的核102相对照)。若是,则流程进行到方 块748 ;否则,流程前进到方块749。
[0127] 在方块748中,核102完成WBINVD指令,其包括引退(retire)的WBINVD指令,且 可包括放弃一硬件信号量的所有权(见图20)。流程结束于方块748。
[0128] 在方块749,在核102在方块752中被中断之前,核102在方块749恢复继续其正 执行的任务102。流程结束于方块749。
[0129] 参阅图8,其是显示根据图7A?7B流程图的微处理器100的操作时序图。在此例 子中,微处理器100配置具有三个核102,标示为核0、核1及核2,如图所示。然而,应可理 解的是,在其它实施例中,微处理器100可包括不同数量的核102。
[0130] 核0遇到一 WBINVD指令并响应传送一 WBINVD指令信息,且中断核1及核2 (每一 方块702)。核0接着写一 SYNC 4并进入睡眠状态(每一方块704)。
[0131] 每一核1及核2最后从其当前任务中被中断并读取该信息(每一方块752)。作为 响应,每一核1及核2写入一 SYNC 4并进入睡眠状态(每一方块704)。如图所不,每一核 写入SYNC 4的时间可能不同。
[0132] 当所有核已经写入SYNC 4时,控制单元104同时唤醒所有核(每一方块706)。每 一核接着写回并使其特定的高速缓冲存储器失效(每一方块708),写入SYNC 5并进入睡眠 状态(每一方块714)。需写回及使高速缓冲存储器失效的时间量可能不同,因此,在每一核 写入SYNC 5的时间可能不同,如图所示。
[0133] 当所有核已写入SYNC 5时,控制单元104同时唤醒所有核(每一方块716)。仅遇 到WBINVD指令的核写回并使共享高速缓冲存储器119失效(每一方块718),以及所有核 写入SYNC 6并进入睡眠状态(每一方块724)。由于仅一核写回并使共享高速缓冲存储器 119失效,因此每一核写入SYNC 6的时间可能不同。
[0134] 当所有核已写入SYNC 6时,控制单元104同时唤醒所有核(每一方块726)。仅 遇到WBINVD指令的核完成WBINVD指令(每一方块748),以及所有其它核恢复中断前的处 理。
[0135] 应可理解的是,虽然高速缓冲控制指令为一 X86WBINVD指令的实施例已被描述, 但其它实施例可以假设同步请求被用以执行其它高速缓冲指令。例如,微处理器100可执 行类似的动作,以使无需写回高速缓冲数据(在方块708和718)而执行一 X86INVD指令并 简单地使高速缓冲器失效。再举另一例子来说,高速缓冲控制指令可由比x86架构更不相 同的指令集架构得到。
[0136] 电源管理橾作
[0137] 在微处理器100的核102被配置用以执行各个功率减少的操作,例如,但不局限 于,停止执行指令、请求控制单元104停止传送时脉信号至核102、请求控制单元104由移除 核102的电源,写回并使核102的本地(例如,非共享)高速缓冲存储器失效及储存核102 的状态至一外部存储器,如专用随机存取存储器116。当一核102已执行一或多个核指定的 功率减少操作时,其已进入一"核"C-状态(也被称为一核闲置状态或核睡眠状态)。在一 实施例中,C-状态值可大致对应到已知高级配置和电源接口(Advanced Configuration and Power Interface,ACPI)规格处理器状态,但也可包括更精细的粒度(Granularity)。一般 而言,一核102将进入一核C-状态以响应来自上述操作系统的请求。举例来说,x86架构 监视等待(MWAIT)指令是一电源管理指令,其提供一提示,即一目标C-状态,至执行指令的 核102以允许微处理器100进入一最佳化状态,像是一较低功率耗损状态。在一 MWAIT指 令的情况下,目标C-状态是专属的(proprietary)而非ACPI C-状态。核C-状态O(CO) 对应于核102的运行状态并且C-状态逐渐增加的值对应逐渐减少的活动或响应状态(如 C1、C2、C3等状态)。一逐渐减少的响应或活动状态是指相对于一更多活动或响应状态节省 更多功率的配置或操作状态,或由于某种原因而相对减少响应的配置或操作状态(例如, 具有一较长的唤醒延迟、较少完全启用)。一核102可能节省功率操作的例子为停止指令的 执行、停止传送时脉信号、降低电压、和/或移除核的部分(例如,功能单元和/或本地高速 缓冲器)或整个核的电源。
[0138] 此外,微处理器100被配置用以执行跨核的功率减少操作。跨核功率减少操作牵 连或影响微处理器100的多个核102。举例来说,共享高速缓冲存储器119可以是大的且相 对消耗大量的功率。因此,显著的功率节省可通过移除传送至共享高速缓冲存储器119的 时脉信号和/或电源来达成。然而,为了移除至共享高速缓冲存储器119的时脉信号和/ 或电源,所有共享高速缓冲存储器的核102必须同意以使数据的一致性得到维持。实施例 考虑该微处理器100包括其它共享电源相关的资源,像是共享时脉和电源。在一实施例中, 微处理器100被耦接至包括一存储器控制器、外围控制器和/或电源管理控制器的系统晶 片组。在其它实施例中,一或多个控制器被整合至微处理器100中。系统省电可由微处理 器100通知控制器使控制器采取省电的动作来达成。举例来说,微处理器100可以通知控 制器使微处理器的高速缓冲存储器失效并关闭,以使其无须被侦查。
[0139] 除了一核C-状态的概念外,微处理器100 -般来说具有一"封装"的C-状态(也 被称为一封装闲置状态或封装睡眠状态)。封装C-状态对应核102的最低(例如,最高功 率消耗)共同核C-状态(例如,请参阅图2中的栏位246及图3的方块318)。然而,除 了核特定的功率减少操作外,封装C-状态涉及到执行一或多个跨核功率减少操作的微处 理器100。与封装C-状态相关的跨核省电操作例子包括关闭一产生时脉信号的锁相回路 (PhaSe-l〇Cked-l〇〇p,PLL),并清空该共享高速缓冲存储器119,且停止其时脉和/或电源, 其使存储器/外部控制器避免侦查微处理器100的本地共享高速缓冲存储器。其它例子 为改变电压、频率和/或总线时脉比、减少高速缓冲存储器的大小,如共享高速缓冲存储器 119,并以一半的速度运行共享高速缓冲存储器119。
[0140] 在许多情况下,操作系统被有效地用以执行在单独核102中的指令,因此可令单 独核进入睡眠状态(例如,至一核C-状态),但不具有直接令微处理器100进入睡眠状态 (例如,至封装C-状态)的方式。有益地,在实施例中描述微处理器100的核102在控制单 元104的帮助下互相合作地工作,以侦测当所有核102已进入核C-状态并准备使跨核的省 电操作发生。
[0141] 请参阅图9,其是显示微处理器100进入一低功率封装C-状态的操作流程图。图 9的实施例描述微处理器100耦接至一晶片组并使用MWAIT指令执行的例子。然而,应可理 解的是,在其它实施例中,操作系统采用其它电源管理指令以及主要核102与整合至微处 理器100内的控制器互相通信,并使用一不同的握手(Handshake)协议来描述。
[0142] 此操作是以一单一核的角度来描述,但该微处理器100的每一核102可能会遇到 MWAIT指令并根据本说明书操作共同使微处理器100进入最佳状态。流程开始于方块902。
[0143] 在方块902中,一核102遇到一用于指定目标C-状态的MWAIT指令,在图9中标 示为Cx,其中X是一非负整数值。流程进行到方块904。
[0144] 在方块904中,核102写入一 C位224集合及一 C-状态栏位226值为X (在图9中 标示为SYNC Cx)的同步请求至其同步暂存器108。此外,同步请求在其唤醒事件栏位204 中指定核102在所有唤醒事件中被唤醒。因此,控制单元104令核102进入睡眠状态。更佳 地说,核102在写入SYNC Cx之前,核102先写回并使其写入的本地高速缓冲存储器失效。 流程进行到方块906。
[0145] 在方块906中,当所有核102已写入一 SYNC Cx信号时,核102被控制单元104唤 醒。如上所述,由其它核102写入的X值可能不同,并且控制单元104发出最低常用C-状态 值至状态暂存器106状态字242的最低常用C-状态栏位246中(每一方块318)。在方块 906之前,而核102处于睡眠状态时,其可由一唤醒事件所唤醒,像是一中断信号(例如,方 块305和306)。更具体地说,但不保证该操作系统将执行所有核102的MWAIT指令,其可允 许在一唤醒事件发生(例如,中断)指示核102其中之一有效地取消MWAIT指令之前,微处 理器100执行与封装C-状态相关的省电操作。然而,在方块906中,一旦核102被唤醒,在 时脉中断停用的期间内(例如,微码不允许其本身被中断),核102 (事实上,所有的核102) 由于(在方块902中)的MWAIT指令仍执行微码,并维持在微码中,直到方块924为止。换 句话说,虽然所有核102中少部分已接收MWAIT指令以进入睡眠状态,单独的核102可处于 睡眠状态中,但作为一封装的微处理器100不会指示该晶片集其已准备进入一封装睡眠状 态。然而,一旦所有核102已同意进入一封装睡眠状态,其由在方块906中同步情况的发生 有效地指示,主要核102被允许与晶片组完成一封装睡眠状态握手协议(例如,方块908、 909和以下921),且未被中断及未有任何其它核102被中断。流程进行到判断方块907。
[0146] 在判断方块907中,核102判断其是否为微处理器100的主要核102。更佳地说, 若判断在重设时间其为BSP时,一核102为主要核102。若该核为主要核时,流程前进到方 块908 ;否则,流程前进到方块914。
[0147] 在方块908中,主要核102写回并使共享高速缓冲存储器119失效,接着与可以 采取适当行动以减少功率消耗的该晶片集通信。举例来说,由于当微处理器100处于封装 C-状态时,存储器控制器和/或外部控制器皆维持失效,因此存储器控制器和/或外部控制 器可避免侦测微处理器100的本地和共享高速缓冲存储器。举另一例子说明,该晶片组可 传输信号至微处理器100使微处理器100米取省电操作(例如,如下所述的确立x86-style STPCLK、SLP、DPSLP、NAP、VRDSLP信号)。更佳地说,核102基于最低常用的C-状态栏位 246值进行功率管理信息的通信。在一实施例中,核102发布一 I/O读取总线周期至一提供 晶片组相关的电源管理信息,例如,封装C-状态值的I/O地址。流程进行到方块909。
[0148] 在方块909中,主要核102等待晶片组确立(assert)STPCLK信号。更佳地说,若 STPCLK信号在一预定数亮的时脉周期后未被确立时,控制单元104在中止其正进行的同步 请求后,侦测此情况,唤醒所有核102并在错误码栏位248中指示该错误。流程前进到方块 914。
[0149] 在方块914中,该核102写入一 SYNC 14。在一实施例中,该同步请求在其唤醒事 件栏位204中指定该核102未在任何唤醒事件中被唤醒。因此,控制单元104令核102进 入睡眠状态。流程进行到方块916。
[0150] 在方块916中,当所有核102已写了一 SYNC 14时,核102由控制单元104所唤醒。 流程进行到判断方块919。
[0151] 在判断方块919中,核102判断其是否为微处理器100的主要核102。若是,则流 程前进到方块921 ;否则,流程前进到方块924。
[0152] 在方块921中,主要核102在微处理器100总线中发出一停止允许(grant)周期 以通知该晶片组其可能采取跨核(例如,封装周边)与微处理器100整体相关的省电操作, 像是避免微处理器100高速缓冲存储器的侦查、移除总线时脉(例如,x86-型BCLK)至微处 理器100,并确立其它在总线中的信号(例如,x86-型SLP、DPSLP、NAP、VRDSLP),以使微处 理器100移除时脉和/或电源至微处理器100的各个部分。虽然描述于本文中的实施例涉 及到微处理器100及一与I/O读取相关的晶片集间的一握手协议(在方块908中),STPCLK 的确立(在方块909中),并停止允许周期的发布(在方块921中),其与x86基础架构系 统有历史相关,应可理解的是,其它实施例假设与其它具有不同协议指令集基础架构系统 相关,但也可节省电能、提高性能和/或降低复杂度。流程进行到方块924。
[0153] 在方块924中,核102写入一睡眠请求(例如,睡眠位212为设置(set)及S位222 为清除(clear)的睡眠请求)至同步暂存器108。此外,同步请求在其唤醒事件栏位204指 不核 102 仅在 STPCLK 非确立唤醒事件(wakeup event of the de-assertion of STPCLK, 艮P,解除确立的STPCLK的唤醒事件)中被唤醒。因此,控制单元104令核102进入睡眠状 态。流程结束于方块924。
[0154] 请参阅图10,其是显示根据图9流程图微处理器100操作实施例的时序图。在此 例子中,微处理器100配置具有三个核102,标示为核0、核1及核2,如图所示。然而,应可 理解的是,在其它实施例中,微处理器100可包括不同数量的核102。
[0155] 核0遇到一指定C-状态4的MWAIT指令(MWAIT C4)(每一方块902)。核0接着 写一 SYNC C4并进入睡眠状态(每一方块904)。核1遇到一指定C-状态3的MWAIT指令 (MWAIT C3)(每一方块902)。核1接着写一 SYNC C3并进入睡眠状态(每一方块904)。核 2遇到一指定C-状态2的MWAIT指令(MWAIT C2)(每一方块902)。核2接着写一 SYNC C2 并进入睡眠状态(每一方块904)。如图所示,在每一核写入SYNC Cx的时间可能不同。事 实上,在一些其它事件发生之前,例如一中断,一或多个核可能不会遇到一 MWAIT指令。
[0156] 当所有核已经写入SYNC Cx时,控制单元104同时唤醒所有核(每一方块906)。主 要核接着发出I/O读取总线周期(每一方块908),并等待STPCLK的确立(每方块909)。所 有的核写入一 SYNC 14,并进入睡眠状态(每一方块914)。由于只有主要核清空(Flush)共 享高速缓冲存储器119,发出I/O读取总线周期并等待STPCLK确立,因此每一核写入SYNC 14的时间可能不同,如图所示。事实上,主要核在其它核后可以几百微秒的顺序写入SYNC 14。
[0157] 当所有核写入SYNC 14时,控制单元104同时唤醒所有核(每一方块916)。仅一 主要核发出停止允许周期(Stop grant cycle)(每一方块921)。所有核写入在STPCLK非 确立信号(?STPCLK)中等待的一睡眠请求并进入睡眠状态(每一方块924)。由于仅主要 核发出停止允许周期,因此每一核写入睡眠请求的时间可能不同,如图所示。
[0158] 当STPCLK信号被解除确立(de-asserted)时,控制单元104唤醒所有核。
[0159] 由图10可观察到,当核0执行握手协议时,核1和核2有益地可休眠一段有效的 时间。然而,应当注意的是,需将微处理器100从封装睡眠状态中唤醒所需的时间通常与休 眠时间长度成正比(例如,在睡眠状态时节省多大的功率)。因此,在封装睡眠状态相对较 久的情况下(或者甚至其中一单独的核102睡眠状态时间是较长的),希望能进一步减少唤 醒的发生及/或与握手协议相关所需唤醒的时间。图11描述单一核102处理的握手协议, 而另一核102继续处于睡眠状态的一实施例。此外,根据图11的实施例中,节省功率进一 步可通过降低响应一唤醒事件而被唤醒的核102数量而取得。
[0160] 请参阅图11,其是根据本发明另一实施例的微处理器100进入一低功率封装C-状 态的操作流程图。图11的实施例使用微处理器100耦接至晶片组中MWAIT指令执行的例 子进行说明。然而,应可理解的是,在其它实施例中,操作系统采用其它电源管理指令,并且 最后同步的核102与整合至微处理器100中,且采用与描述不同握手协议的控制器通信。
[0161] 图11的实施例在一些方面与图9的实施例相似。然而,在现存操作系统请求微处 理器100进入非常低的功率状态并容忍与其相关延迟的环境中,图11的实施例被设计以便 于节省潜在更大的功率。更具体地,图11的实施例有利于控制至核的功率并在必要时,如 处理中断时,唤醒核中仅一核。实施例考虑在该微处理器100支持在图9及图11中两个模 式的操作。此外,模式是可配置的,无论是在制造(例如,通过熔断器114)和/或经由软件 控制或由微处理器100依据由MWAIT指令所指定的特定C-状态而自动决定。流程开始于 方块1102。
[0162] 在方块1102中,核102遇到用于指定目标C-状态的MWAIT指令(MWAIT Cx),其在 图11中表示为Cx,流程进行到方块1104。
[0163] 在方块1104中,核102写入一 C位224为set及一 C-状态栏位226值为X (其在 图11中标示为SYNC Cx)的同步请求至其同步暂存器108中。同步请求也设置了选择性唤 醒(SEL WAKE)位214及PG位208。此外,同步请求在其唤醒事件栏位204中指示核102在 所有唤醒事件中被唤醒,除了 STPCLK的确立和STPCLK的非确立(?STPCLK,S卩,STPCLK的 解除确立)之外。(更佳地说,有其它唤醒事件,如AP启动时,该同步请求指定核102不被 唤醒)。因此,控制单元104令核102进入睡眠状态,其包括因 PG位208被设置而阻止提供 功率至核102。此外,核102写回及使本地高速缓冲存储器无效,并在写入同步请求之前储 存(最好为专用随机存取存储器116)其核102的状态。当随后核102被唤醒时(例如,在 方块1137,1132或1106),核102将(例如,从PRAM 116)恢复其状态。如上所述,特别是相 对于图3,当最后核102写入一具有选择性唤醒位214设置的同步请求时,除了最后写入核 102外,该控制单元104会自动阻止所有核102的所有唤醒事件(每一方块326)。流程进 行到方块1106。
[0164] 在方块1106中,当所有核102已经写入一 SYNC Cx时,控制单元104唤醒最后写 入的核102。如上所述,控制单元104维持其它核102的S位222设置,即使控制单元104 唤醒最后写入的核102并清除S位。在方块1106之前,当核102处于睡眠状态时,其可由 一唤醒事件被唤醒,如一中断。然而,一旦核102在方块1106中被唤醒时,核102因 MWAIT 指令(方块1102)仍执行微码,并在中断被停用的期间内(例如,该微码不允许其本身被中 断)保持在微码中,直到方块1124为止。换句话说,虽然不超过所有核102已收到一MWAIT 指令以进入睡眠状态,仅单独的核102会休眠,但作为封装的微处理器100不指示该晶片组 其已准备好进入一封装睡眠状态。然而,一旦所有核102已同意进入一封装睡眠状态时, 其通过在方块1106的同步状态发生所指示,在方块906中被唤醒的核102 (最后写入的核 102,其造成同步情况发生)被允许与晶片组完成封装睡眠状态握手协议(例如,如下所示 的方块1108U109和1121)而不会被中断,且没有任何其它的核102被中断。流程进行到 方块1108。
[0165] 在方块1108中,核102写回并使共享高速缓冲存储器119失效,接着与晶片组通 信,其可能会采取适当的行动,以减少功率消耗。流程进行到方块1109。
[0166] 在方块1109中,核102等待晶片组以确立STPCLK信号。更佳地说,如果STPCLK 信号在一时脉周期预定数量后未确立时,控制单元104侦测此情况,并在终止其正进行的 同步请求后唤醒所有核102,且在错误码栏位248中指示该错误。流程进行到方块1121。
[0167] 在方块1121中,核102发出一停止允许周期至总线上的晶片组。流程进行到方块 1124。
[0168] 在方块1124中,核102写入一睡眠请求,例如,具有睡眠位212为设置(set)及S 位222为清除(clear)及PG位208为设置(set),至同步暂存器108中。此外,同步请求在 其唤醒事件栏位204中指定该核102仅在解除确立STPCLK的唤醒事件中被唤醒。因此,控 制单元104令核102进入睡眠状态。流程进行到方块1132。
[0169] 在方块1132中,控制单元104侦测STPCLK非确立并唤醒核102。应注意的是,先 前控制单元104唤醒核102,控制单元104也未限制电源至核102。有益的是,此时核102 是唯一正在运作的核,这提供核102机会以使其执行任何必须被执行的动作,而没有其它 核102正在运作。流程进行到方块1134。
[0170] 在方块1134中,核102写入至控制单元104的一暂存器(图未示出)中以解开在 其对应同步暂存器108的唤醒事件栏位204中所指定每一其它核102的唤醒事件。流程进 行到方块1136。
[0171] 在方块1136中,核102处理任何正进行指定该核102的唤醒事件。举例来说,在 一实施例中,包括微处理器100的系统允许有向(both directed)的中断(例如,指向微处 理器100 -特定核的中断)和非向(non-directed)的中断(例如,当微处理器100选择 时,可由微处理器100的任一核102所处理的中断)。一非向中断的例子通常被称为一"低 优先级中断"。在一实施例中,微处理器100最好指向非向中断至在方块1132的解除确立 STPCLK中被唤醒的单一核102,由于它已被唤醒,并能处理该中断以期望其它核102不具有 任何正进行的唤醒事件,因此可以继续睡眠并限制电源。流程返回到方块1104。
[0172] 当唤醒事件在方块1134中被解除(unblcked)时,除了在方块1132中已被唤醒的 核102之外,如果核102没有指定的唤醒事件正在进行,则有利于核102继续处于睡眠状 态,并在每一方块1104中限制电源。然而,当唤醒事件在方块1134中被解除时,如果一指 定的唤醒事件正由核102处理,则核将不限制电源(un-power-gated),并由控制单元104唤 醒。在此情况下,不同的流程开始于图11中的方块1137。
[0173] 在方块1137中,在唤醒事件在方块1134中被解除后,另一核102 (例如,除了在方 块1134中解除唤醒事件核102之外的核102)被唤醒。其它核102处理任何正进行并指向 其它核102的唤醒事件,例如,处理一中断。流程从方块1137进行到方块1104。
[0174] 请参阅图12,其是显示根据图11流程图的微处理器100操作一例子的时序图。在 此例子中,微处理器100配置具有三个核102,标示为核0、核1和核2,如图所示。然而,应 可理解的是,在其它实施例中,微处理器100可包括不同数量的核102。
[0175] 核0遇到一指定C-状态7的MWAIT指令(MWAIT C7)(每一方块1102)。在此例子 中,C-状态7允许限制电源。核0接着写入一选择性唤醒位214为设置(set)(如图12中 所示的"选择性唤醒")及PG位208为设置(set)的SYNC C7,并进入睡眠状态及限制电源 (每一方块1104)。核1遇到一指定C-状态为7的MWAIT指令(每一方块1102)。核1接 着写入选择性唤醒位214为设置(set)及PG位208为设置(set)的SYNC C7,并进入睡眠 状态及限制电源(每一方块1104)。核2遇到一指定C-状态为7的MWAIT指令(每一方 块1102)。核2接着写入具有选择性唤醒位214为设置(set)及PG位208为设置(set)的 SYNC C7,并进入睡眠状态及限制电源(每一方块1104)。(然而,在描述于方块314-最佳 的实施例中,最后写入的核无法限制电源)。如图所示,每一核的写入同SYNC C7的时间可 能不同。
[0176] 当最后写入的核写入具有选择性唤醒位214为设置(set)的SYNC C7时,该控制 单元104阻挡(block off)所有最后写入核的唤醒事件(每一方块326),在图12的例子为 核2。此外,控制单元104仅唤醒最后写入的核(每一方块1106),因其它核持续睡眠且限 制电源,而核2与晶片组执行握手协议,因此可节省功率。核2接着发出I/O读取总线周期 (每一方块1108),并等待STPCLK的确立(每一方块1109)。为了响应STPCLK,核2发出停 止允许周期(每一方块1121),并写入一具有在STPCLK解除中等待PG位208为设置(set) 的睡眠请求并进入睡眠状态及限制功率(每一方块1124)。上述核可以休眠并限制功率一 段相对长的时间。
[0177] 当STPCLK无法确立时,控制单元104仅唤醒核2 (每一方块1132)。在图12的例 子中,该晶片组无法确立STPCLK以响应一非向中断的接收,其转发至微处理器100。微处理 器100指示非向中断至核2,其因其它核继续处于睡眠状态及限制电源而节省功率。核解除 其它核(每一方块1134)的唤醒事件并服务非向中断(每一方块1136)。核2接着重新写 入一具有选择性唤醒位214为设置(set)及PG位208为设置(set)的SYNC C7,并进入睡 眠状态且限制电源(每一方块1104)。
[0178] 当核2写入具有选择性唤醒位214为设置(set)及PG位208为设置(set)的SYNC C7时,由于其它核的同步请求仍正在进行,例如,其它核的S位222并非由核2唤醒所清除, 因此该控制单元104阻挡(block off)除了核2之外所有核的唤醒事件,例如,最后写入核 (每一方块326)。此外,控制单元104仅唤醒核102(每一方块1106)。核2接着发出I/O读 取总线周期(每一方块1108),并等待STPCLK的确立(每一方块1109)。为了响应STPCLK, 核2发出停止允许周期(每一方块1121),并写入一具有在STPCLK无法确立中等候的PG位 208为设置(set)的睡眠请求,并进入睡眠状态且限制功率(每一方块1124)。
[0179] 当STPCLK无法确立时,控制单元104仅唤醒核2 (每一方块1132)。在图12的例 子中,STPCLK因其它非向中断而被解除确立。因此,微处理器100指示该中断至核2,这可 节省功率。核2再解除其它核的唤醒事件(每一方块1134)并服务该非向中断(每一方块 1136)。核2接着再写入一具有选择性唤醒位214为设置(set)及PG位208为设置(set) 的SYNC C7,并进入睡眠状态且限制功率(每一方块1104)。
[0180] 此周期可持续相当长的时间,即仅非向中断被产生。图13是显示一指示一除了最 后写入核之外不同核中断处理的例子。
[0181] 可通过比较图10和图12知道,在图12中的实施例较为有利,一旦核102开始进 入睡眠状态(在图12的例子中写入SYNC C7之后),仅一核102被再次唤醒以与晶片组执 行握手协议,且其它核102保持睡眠,若核102处在一相当长的睡眠状态下,则可为一显著 的优点。功率节省可能非常显著,特别是在操作系统识别在系统中对于单一核102处理工 作负载非常小的情况下。
[0182] 此外,有利的是,只要没有唤醒事件被指示到其它核102,则仅一核102被唤醒(以 提供服务非向事件,像是一低优先级中断)。再来,若核102处于一相当长的睡眠状态,则可 能具有显著的优势。除了相对不频繁的非向中断,如USB中断,尤其是在系统中不具有有效 负载的情况下,功率节省可以是显著的。更进一步地,即使一唤醒事件发生被指示到另一核 102时(例如,中断操作系统指示至一单一核102,像是操作系统定时器中断),实施例可有 利地动态切换单一核102,其执行封装睡眠状态协议及服务非向唤醒事件,如图13所示,以 便享有唤醒仅一单一核102的好处。
[0183] 请参阅图13,其是显示根据图11流程图的微处理器100操作一例子的时序图。图 13的例子在许多方面与图12的例子相似。然而,在STPCLK被解除确立的第一实例中,该中 断是一指向核1的中断(而不是图12例子中的一非向中断)。因此,控制单元104唤醒核 2 (每一方块1132),并接着在唤醒事件由核2解除(每一方块1134)后唤醒核1。核2接着 再写入一具有选择性唤醒位214为设置(set)及PG位208为设置(set)的SYNC C7,并进 入睡眠状态且限制功率(每一方块1104)。
[0184] 核1服务定向中断(每一区块1137)。核1接着再次写入具有选择性唤醒位214 为设置(set)及PG位208为设置(set)的SYNC C7,并进入睡眠状态且限制功率(每一方 块1104)在此例子中,核2在核1写入SYNC C7前写入其SYNCC7。因此,虽然核0在其写入 初始SYNC C7时仍具有其S位222set,但核1当其被唤醒时S位222仍被清除。因此,当核 2在解除唤醒事件后写入SYNC C7时,并非最后核写入同步C7请求,相反地,核1成为最后 的核写同步C7请求。
[0185] 当核1写入一具有选择性唤醒位214为设置(set)及PG位208为设置(set)的 SYNC C7时,因核0的同步请求仍正在进行(例如,其没有被核1及核2的唤醒所清除), 而核2(在此例中)已写入SYNC 14请求,所以该控制单元104阻挡除了核1之外所有核 的唤醒事件,例如,最后写入核(每一方块326)。此外,控制单元104仅唤醒核1 (每一方 块1106)。核1接着发出I/O读取总线周期(每一方块1108),并等待STPCLK确立(每一 方块1109)。为了响应STPCLK,核1发出停止允许周期(每一方块1121),并写入具有等待 STPCLK解除确立的PG位208为设置(set)的睡眠请求,并进入睡眠状态且限制功率(每一 方块1124)。
[0186] 当STPCLK被解除确立时,控制单元104仅唤醒核1 (每一方块1132)。在图12的 例子中,STPCLK由于一非向中断而解除确立;因此,微处理器100指示非向中断至核1,其可 节省功率。由核1处理非向中断的周期可持续相当长的时间,即,仅非向中断被产生。在此 种方式中,微处理器100可有利地通过指示非向中断至核102使最近的中断被指示以节省 功率,其示于与切换至一不同核相关图13的例子中。核1再次解除其它核的唤醒事件(每 一方块1134)并服务非向中断(每一方块1136)。核1接着再次写入一具有选择性唤醒位 214为设置(set)及PG位208为设置(set)的SYNC C7,并进入睡眠状态且限制功率(每 一方块 1104)。
[0187] 应可理解的是,虽然电源管理指令为一 X86MWAIT指令的实施例已被描述,但其它 同步请求被使用以执行电源管理指令的实施例可以被考虑。举例来说,微处理器100可执 行类似操作以响应由一组具有不同C-状态相关的预设I/O端口地址的读取。在举另一例 子,功率管理指令可由与X86架构不同的指令集架构得到。
[0188] 多核处理器的动杰重新配置
[0189] 微处理器100的每一核102基于微处理器100每一核102的配置产生配置相关的 值。更佳地说,每一核102的微码产生、储存并使用配置相关的值。实施例描述配置相关值 的产生可以是动态且有益的,其描述如下。配置相关值的例子包括,但不局限于以下内容。
[0190] 每一核102产生一与上述图2相关的整体核数量。与仅在核102中驻留晶体406 的核102相关的核102的本地核数量256相比,整体核数量是指与微处理器100所有核102 相关的整体核102的核数量。在一实施例中,核102产生整体核数量,其整体核数量为核 102晶体数量258与每一晶体的核102数量的乘积及其本地核数量256的总和,如下所示:
[0191] 整体核数量=(晶体数X每一晶体的核数量)+本地核数量。
[0192] 每一核102还产生一虚拟核数量。该虚拟核数量为整体核数量减去具有一低于即 时核102的整体核数量的整体核数量的停用核102数量。因此,在该微处理器100的所有 核102可用的情况下,整体核数量与虚拟核数量是相同的。然而,若一或多个核102停用、 有缺陷时,一核102的虚拟核数量可能不同于其整体核数量。在一实施例中,每一核102填 入其虚拟核数量至其对应的APIC ID暂存器的APIC ID栏位。然而,根据另一实施例(例 如,图22和图23),则不属于此种情况。此外,在一实施例中,操作系统可更新在APIC ID暂 存器中的APIC ID。
[0193] 每个核102还产生一 BSP旗标,其指示该核102是否为BSP。在一实施例中,一般来 说(例如,当在图23中"所有核BSP"的功能停用时)一核102指定本身为引导序列处理器 (Bootstrap Processor, BSP)且每一其它核102指定其本身为一应用处理器(Application Processor,AP)。在重设之后,AP核102进行初始化,接着进入睡眠状态等待BSP通知开始 读取并执行指令。相反地,在AP核102初始化之后,BSP核102立即开始读取并执行系统 固件的指令,例如,BIOS启动码,其用以初始化系统(例如,验证系统存储器及周边设备是 否正常工作并初始化和/或配置它们)并引导操作系统,例如,载入操作系统(例如,从磁 盘中载入),并将控制转移至操作系统。在引导操作系统之前,BSP决定系统配置(例如,核 102或逻辑处理器在系统中的数量),并将其储存在存储器中,以使操作系统可在系统配置 启动后读取。在操作系统在被引导后,指不AP核102开始读取并执行操作系统指令。在一 实施例中,一般来说(例如,当图22和图23中"修改BSP"和"所有核的BSP"的功能,分别 停用时),一核102若其虚拟核数量为0时,则指定本身为BSP,而所有其它核102指定本身 为一 AP核102。最佳地,一核102填入其BSP旗标相关配置值至对应其APIC的APIC基底 地址暂存器中的BSP旗标位。根据一实施例中,如上所述,BSP为方块907及919中的主要 核102,其执行图9的封装睡眠状态握手协议。
[0194] 每一核102还产生用于填入APIC基底暂存器的一 APIC基值。APIC基底地址基 于核102的APIC ID而产生。在一实施例中,操作系统可更新在APIC基底地址暂存器中的 APIC基底地址。
[0195] 每一核102还产生一晶体主要指示,其指示该核102是否为包括该核102的晶体 406的主要核102。
[0196] 每一核102还产生一晶片主要指示,其指示该核102是否为包括即时核102晶片 的主要核,其中假设该微处理器100被配置有晶片,其详细描述如上。
[0197] 每一核102计算配置相关值并操作使用该配置相关值,使得包括微处理器100的 系统正常运作。举例来说,系统基于其相关的APIC ID指示中断请求至核102。APIC ID决 定核102应响应哪个中断请求。更具体地说明,每一中断请求包括一目地识别符,并且一核 102仅当目地识别符与核102的APIC ID匹配时响应一中断请求(或若该中断请求识别符 为一用以指示其为一请求所有核102的特殊值)。在举另一例子,每一核102必须知道其是 否为BSP,以使其执行初始BIOS码并引导操作系统,且在一实施例中执行如图9所描述的封 装睡眠状态握手协议。实施例描述如下(参阅图22和23),其中BSP旗标和APIC ID可因 特定目的而由其正常的值中作修改,像是用于测试和/或调试。
[0198] 请参阅图14,其是显示微处理器100动态重新配置的流程图。在图14的说明中,以 图4的多晶体微处理器100作为参考,其包括两个晶体406和八个核102。然而,应可理解 的是,所描述的动态重新配置可使用具有不同配置的微处理器100,即具有多于两个晶体或 单个晶体,且多或少于八个核102但至少两个核102。此操作是从一单一核的角度所描述, 但微处理器100的每一核102根据该描述以整体动态地操作并重新配置该微处理器100。 流程开始于方块1402。
[0199] 在方块1402中,微处理器100被重置,且微处理器100的硬件基于可用核102的 数量及驻留于核104的晶体数量填入合适的值至每一核102的配置暂存器112中。在一实 施例中,本地核数量256及晶体数量258被硬连线(hardwired)。如上所述,硬件可决定是 否由熔断器114烧断或未烧断的状态启用或停用一核102。流程进行到方块1404。
[0200] 在方块1404中,核102由配置暂存器112中读取配置字252。核102接着基于在 方块1402中所读取的配置字252值产生其相关值。在多晶体微处理器100配置的情况下, 在方块1404中所产生的配置相关值将不考虑其它晶体406的核102。然而,在方块1414及 1424中(以及图15中方块1524)所产生的配置相关值将考虑其它晶体406的核102,如下 所述。流程进行到方块1406。
[0201] 在方块1406中,核102使在本地配置暂存器112中的本地核102的致能位254值 被传播至远端晶体406配置暂存器112对应的致能位254。举例来说,请参考图4的配置, 一在晶体A 406A中的核102使与在晶体A 406A(本地晶体)的配置暂存器112中核A、B、 C及D (本地核)相关的致能位254被传播至与在晶体B 406B (远端晶体)的配置暂存器 112中核A、B、C及D相关的致能位254。相反地,一在晶体B 406B中的核102使与在晶体 B 406B (本地晶体)的配置暂存器112中核E、F、G及H(本地核)相关的致能位254被传 播至与在晶体A 406A (远端晶体)的配置暂存器112中核E、F、G及H相关的致能位254。 在一实施例中,核102通过写入本地配置暂存器112传播至其它晶体406。更佳地说,通过 核102写入至本地配置暂存器112使本地配置暂存器没有发生改变,但会造成本地控制单 元104传播本地致能位254值至远端晶体406中。流程进行至方块1408。
[0202] 在方块1408中,核102写入一同步情况8(在图8中标示为SYNC 8)的同步请求至 其同步暂存器108中。因此,控制单元104令核102进入睡眠状态。流程进行到方块1412。
[0203] 在方块1412中,当在由核集合栏位228指定的核集合中所有可用核102已写入一 SYNC 8时,控制单元104唤醒核102。值得注意的是,在一多晶体406微处理器100配置的 情况下,同步情况发生可为一多晶体同步情况发生。也就是说,控制单元104将等待以唤醒 (或在核102未设置睡眠位212从而决定不睡眠的情况下中断)核102,直到在核集合栏位 228(其可以包括在晶体406中的核102)写入其同步请求为止。流程进行到方块1414。
[0204] 在方块1414中,核102再次读取配置暂存器112并基于包括由远端晶体所传送致 能位254的正确值的配置字252新值产生其配置相关值,流程前进到判断方块1416。
[0205] 在判断方块1416中,核102决定其是否应停用其本身。在一实施例中,熔断器114 因该微码在其重置处理中读取(判断方块1416之前),以指示核102应停用其本身而被烧 断,故核102决定其需停用其本身。熔断器114可在微处理器100的制造期间或之后被烧 断。在另一实施例中,更新的熔断器114值可被扫描至保持暂存器中,如上所述,并且被扫 描的值指示该核102应被停用。图15是描述核102由不同的方式判断其应被停止使用的 另一实施例。若核102决定其应被停用时,流程进行到方块1417 ;否则,流程进行到方块 1418。
[0206] 在方块1417中,核102写入停用核位236以使其本身由可用核102的列表中移除, 例如,清除在配置暂存器112的配置字252中其对应的致能位254。此后,核102可防止其 本身执行任何更多的指令,更佳地通过设置一或多个位来以关闭其时脉信号,并移除其电 源。流程在方块1417中结束。
[0207] 在方块1418中,核102写入一同步情况9 (在图14中标示为SYNC 9)的同步请求 至同步暂存器108中。因此,控制单元104令核102进入睡眠状态。流程进行到方块1422。
[0208] 在方块1422中,当所有启用的核102已写入一 SYNC 9时,核102由控制单元104 所唤醒。此外,在一多晶体406微处理器100配置的情况下,同步情况发生基于在配置暂存 器112中的已更新值可能为一晶体同步情况发生。再者,当控制单元104决定一同步情况 是否发生时,控制单元104将排除考虑在方块1417中停用其本身的核102。更详细地说明, 在一情况中,在未停用其本身的核102在方块1417中写入同步暂存器108之前,所有其它 核102 (除了停用其本身的核102之外)写入一 SYNC 9,接着当未停用其本身的核102在 方块1417中的停用核位设置写入同步暂存器108时,控制单元104将侦测同步情况的发生 (在方块316中)。当控制单元104因停用核102的致能位254为清除的(clear)而决定 同步情况已经发生时,控制单元104不再考虑停用核102。也就是说,由于所有启用核102, 但不包括停用核102,已经写入SYNC 9,无论停用核102是否已经写入SYNC 9,因此控制单 元104判断同步情况已经发生。流程进行到方块1424。
[0209] 在方块1424中,如果一核102由另一核102在方块1417中的操作而被停用时,核 102再次读取配置暂存器112,并且配置字252的新值反映了一停用核102。核102则根据 配置字252的新值再次产生其配置相关值,其类似于在方块1414中的方式。一停用核的存 在102可能会造成一些配置相关值不同于在方块1414中所产生的新值。例如,如上所述,虚 拟核数量、APIC ID、BSP旗标、BSP基址、主要晶体主要晶片可因停用核102的存在而改变。 下一实施例中,在产生配置相关值后,核102其中之一(例如,BSP)将微处理器100所有核 102整体的一些配置相关值写入非核专用随机存取存储器116,使其可随后被所有核102读 取。举例来说,在一实施例中,整体的配置相关值由核102读取以执行一架构指令(例如, X86CPWD指令),其指令请求微处理器100有关的整体信息,像是微处理器100的核102数 量。流程进行到判断方块1426。
[0210] 在方块1426中,核102移除重置并开始提取架构指令。流程结束于方块1426。
[0211] 请参阅图15,其是显示根据另一实施例中微处理器100动态重新配置的流程图。 在图15的说明中,以图4的多晶体微处理器100作为参考,其包括两个晶体406和八个核 102。然而,应可理解的是,所描述的动态重新配置可使用具有不同配置的微处理器100,即 具有多于两个晶体或单个晶体,且多或少于八个核102但至少两个核102。此操作是从一单 一核的角度所描述,但微处理器100的每一核102根据该描述以整体动态地操作并重新配 置该微处理器100。更具体地说明,图15描述了一核102遇到核停用指令的操作,其流程开 始于方块1502,而另一核102操作,其操作流程开始于方块1532。
[0212] 在方块1502中,核102其中之一遇到一用以指示核102停用其本身的指令。在一 实施例中,该指令为一 X86WRMSR指令。作为响应,核102传送一重新配置信息至其它核102 并传送其一核间中断信号。更佳地说,在时间中断被停用的期间内(例如,该微码不允许其 自身被中断),核102阻止微码以响应该指令,以停用其本身(在方块1502中),或响应该 中断(在方块1532中),并维持在微码中,直到方块1526为止。流程由方块1502进行到方 块 1504。
[0213] 在方块1532中,其它核102其中之一(例如,除了在方块1502中遇到停用指令的 核102之外的核)由于在方块1502中所传送的核间中断而被中断并接收重新配置信息。 如上所述,虽然在方块1532中的流程由一单一核102的角度所描述,但每一其它核102 (例 如,并非在方块1502中的核102)在方块1532中被中断并接收该信息且执行方块1504至 1526中的步骤。流程由方块1532进行到方块1504。
[0214] 在方块1504中,核102写入一同步请况10 (在图15中标示为SYNC 10)的同步请 求至其同步暂存器108中。因此,控制单元104令核102进入睡眠状态。流程进行到方块 1506。
[0215] 在方块1506中,当所有可用核102已写入一 SYNC 10时,核102由控制单元102所 唤醒。值得注意的是,在一多晶体406微处理器100配置的情况下,同步情况发生可为一多 晶体同步情况发生。也就是说,控制单元104将等待以唤醒(或在核102尚未决定进入睡 眠状态的情况下中断)核102,直到在核集合栏位228 (其可以包括在晶体406中的核102) 所指定且可启用(其由致能位所指示)的核102写入其同步请求为止。流程进行到判断方 块 1508。
[0216] 在判断方块1508中,核102判断其是否为一在方块1502中被指示以停用其本身 的核102。若是,流程进行到方块1517 ;否则,流程进行到方块1518。
[0217] 在方块1517中,核102写入停用核位236以使其本身由可用核102的列表中移除, 例如,清除在配置暂存器112的配置字252中其对应的致能位254。此后,核102可防止其 本身执行任何更多的指令,更佳地通过设置一或多个位来以关闭其时脉信号,并移除其电 源。流程在方块1517中结束。
[0218] 在方块1518中,核102写入一同步情况11(在图15中标示为SYNC 11)的同步 请求至同步暂存器108中。因此,控制单元104令核102进入睡眠状态。流程进行到方块 1522。
[0219] 在方块1522中,当所有启用的核102已写入一 SYNC 11时,核102由控制单元104 所唤醒。此外,在一多晶体406微处理器100配置的情况下,同步情况发生基于在配置暂存 器112中的已更新值可能为一多晶体同步情况发生。再者,当控制单元104决定一同步情 况是否发生时,控制单元104将排除考虑在方块1517中停用其本身的核102。更详细地说 明,在一情况中,在未停用其本身的核102在方块1517中写入同步暂存器108之前,所有其 它核1〇2(除了停用其本身的核102之外)写入一 SYNC 11,接着当因停用核102的致能位 254为清除的(clear)而决定同步情况是否已经发生时,因控制单元104不再考虑停用核 102,因此当未停用其本身的核102在方块1517中写入同步暂存器108时,控制单元104将 侦测同步情况的发生(在方块316中)(请参阅图16)。也就是说,由于所有启用核102已 写入一 SYNC 11,无论停用核102是否已写入SYNC 11,控制单元104则判断同步情况已经 发生。流程进行到方块1524。
[0220] 在方块1524中,核102读取配置暂存器112,其配置字252将反映在方块1517中 被停用的停用核102。该核102根据配置字252的新值接着产生其配置相关的值。更佳地 说,在方块1502中停用指令由系统固件(例如,BIOS设置)所执行,以及在核102停用后, 系统固件执行系统的重新启动,例如,在方块1526中之后。在重新启动期间内,微处理器 100可以进行不同于在方块1524中先前配置相关值产生的操作。举例来说,在重新启动期 间内BSP可为一不同于产生配置相关值前的核102。再举另一例子说明,在引导操作系统之 前由BSP所决定与储存至存储器以使操作系统能读取的该系统配置信息(例如,在系统中 核102及逻辑处理器的数量)可不相同。举另一例子说明,仍使用的核102的APIC ID不 同于产生配置相关值前的APIC ID,在此情况下,操作系统将指示中断请求且核102将响应 不同于先前配置相关值产生的中断请求。再举另一例子说明,在方块907及919中执行图 9封装睡眠状态握手协议的主要核102可为一不同于先前配置相关值产生的核102。流程 进行到判断方块1526。
[0221] 在方块1526中,核102在方块1526中被中断之前恢复其执行的任务。流程结束 于方块1526。
[0222] 在本文中所描述动态地重新配置微处理器100可用于在各种应用中。举例来说, 动态重新配置可在微处理器100的开发过程用于测试和/或模拟,和/或用于现场测试中。 另外,一使用者可能想知道仅使用一核102子集运行一特定的应用程序时系统的性能和/ 或功率消耗的总量。在一实施例中,在一核102被停用时,其可使其时脉停止及/或移除电 源,以使其基本上没有消耗电源。此外,在高可靠性的系统中,每一核102可周期性地检查 其它核102及核102所选择的特定核102是否发生故障,未故障的核可停用故障的核102 并使剩余的核102执行如上描述的动态重新配置。在此一实施例中,控制字202可包括一 附加栏位,其使写入核102指定该核102被停用并且修改在图15中所描述的操作使得一核 在方块1517中可停用一不同于核102本身的核102。
[0223] 请参阅图16,其是显示根据图15流程图的微处理器100操作一例子的时序图。在 此例子中,微处理器100配置具有三个核102,标示为核0、核1和核2,如图所示。然而,应 可理解的是,在其它实施例中,微处理器100可包括不同数量的核102且可为单一晶体或多 晶体微处理器100。在此时序图中,事件的时序向下前进。
[0224] 核1遇到一停用其本身的指令并作为响应传送一重新配置信息且中断核0和核 2 (每一方块1502)。核1接着写入SYNC 10并进入睡眠状态(每一方块1504)。
[0225] 每一核0和核2最终从其目前的任务中被中断并阅读该信息(每一方块1532)。 作为响应,每一核〇和核2的写入SYNC 10并进入睡眠状态(每一方块1504)。如图所示, 每一核的写入同SYNC 10的时间可能不同。举例来说,由于该指令的延迟,因此该指令当中 断被确立时而执行。
[0226] 当所有核102写入SYNC 10时,控制单元104同时唤醒所有核(每一方块1506)。 核〇及核2接着决定其不会停用其本身(每一判断方块1508),并写入一 SYNC 11并进入睡 眠状态(每一方块1518)。然而,因核1决定其停用其本身,所以其写入其停用核位236 (每 一方块1517)。在此例子中,核1在核0及核2写入各自的SYNC 11后写入其停用核位236, 如图所示。然而,由于控制单元104决定S位222对于每一致能位254被设置的核102而 设置,因此控制单元104侦测该同步情况发生。也就是说,即使核1的S位222未设置,其 致能位254在方块1517核1的同步暂存器108写入时被清除。
[0227] 当所有可用核已写入SYNC 11时,控制单元104同时唤醒所有核(每一方块 1522)。如上所述,在一个多晶体微处理器100的情况下,当核1写入其停用核位236,并且本 地控制单元104分别清除核1的本地致能位254,本地控制单元104也传播本地致能位254 至远端晶体406。因此,远端控制单元104也侦测同步状态的发生且同时唤醒其晶体406所 有可用的核。核〇和核2基于已更新配置暂存器112的值接着产生其配置相关值(每一方 块1524),并恢复其中断前的活动(每一方块1526)。
[0228] 硬件信号量(HARDWARE SEMAPHORE)
[0229] 请参考图17,其是显示在图1中硬件信号量118的一方块图。硬件信号量118包 括一拥有位(owned bit) 1702、所有者位(owner bit) 1704及一状态机1706,其状态机1706 用以更新拥有位1702及所有者位1704以响应由核102读取及写入的硬件信号量118。更 佳地说,为了辨识核目前拥有的硬件信号量118,所有者位1704的数量为log以2为底的微 处理器100配置的核102数量。在另一实施例中,所有者位1704包括微处理器100每一核 102 -对应的位。值得注意的是,尽管一组拥有位1702、所有者位1704及状态机1706被描 述以一硬件信号量118实现,但微处理器100可包括多个硬件信号量118,其中每一硬件信 号量118都包括上述的一套硬件。更佳地说,为了执行需要独占读取共享资源的操作,在每 一核102中运行的微码读取并写入该硬件信号量118以取得一由核102所共享资源的所有 权,其详细描述于下方的例子中。该微码可将每一多个硬件信号量118与微处理器100不 同的共享资源所有权联系在一起。更佳地说,硬件信号量118通过核102在核102的一非 架构地址空间内一预设地址中所读取及写入。该非架构地址空间仅可由一核102的微码所 读取,但无法直接由使用者程序码读取(例如,x86架构的程序指令)。用以更新硬件信号 量118的拥有位1702及所有者位1704的状态机1706操作被描述如图18及19中,并且硬 件信号量118的使用也在之后描述。
[0230] 请参阅图18,其是显示当一核102读取硬件信号量118的操作流程图。流程开始 于方块1802。
[0231] 在方块1802中,一核102,标示为核X,读取硬件信号量118。如上所述,更佳地说, 核102的微码读取该硬件信号量118所驻留在非架构地址空间内的预定地址。流程进行到 判断方块1804。
[0232] 在判断方块1804中,状态机1706检查该所有者位1704,以决定核102是否为硬件 信号量118的所有者。若是,则流程进行到方块1808 ;否则,流程进行到方块1806。
[0233] 在方块1806中,该硬件信号量118返回并读取核102中的一零值以指示该核102 不拥有硬件信号量118,流程在方块1806中结束。
[0234] 在方块1808,该硬件信号量118返回并读取核102中的一值,以指示该核102拥有 硬件信号量118,流程在方块1808中结束。
[0235] 如上所述,微处理器100可包括多个硬件信号量118。在一实施例中,微处理器100 包括16个硬件信号量118,并且当一核102读取预定地址时,其接收一 16位数据值,其每一 位对应16个硬件信号量118其中之一不同的硬件信号量118,并指示该读取预定地址的核 102是否拥有对应的硬件信号量118。
[0236] 请参阅图19,其是显示当一核102写入硬件信号量118的操作流程图。流程开始 于方块1902。
[0237] 在方块1902中,一核102,标示为核X,写入硬件信号量118,例如,如上所述的在非 架构的预设地址。流程进行到判断方块1804。
[0238] 在判断方块1904中,状态机1706检查该拥有位1702,以决定硬件信号量118是 否为任一核102所拥有或未被占有(free)。若已被拥有,则流程进行到判断方块1914 ;否 贝1J,流程进行到判断方块1906。
[0239] 在判断方块1906中,状态机1706检查写入的值。若该值为1,其表示核102欲获 取硬件信号量118的所有权,则流程前进到方块1908。然而,若该值为0,其表示核102欲 放弃硬件信号量118的所有权,则流程进行到方块1912。
[0240] 在方块1908中,状态机1706更新拥有位1702至1,并设置所有者位1704指示核 X现在拥有的硬件信号量118。流程在方块1908中结束。
[0241] 在方块1912中,该状态机1706未执行拥有位1702的更新,也未执行所有者位 1704的更新,流程结束于方块1912中。
[0242] 在判断方块1914中,状态机1706检查该所有者位1704,以决定核x是否为硬件信 号量118的所有者。若是,则流程进行到判断方块1916 ;否则,流程进行到方块1912。
[0243] 在判断方块1916中,状态机1706检查所写入的值。如果该值为1,其表示该核102 欲获取硬件信号量118的所有权,则流程前进到方块1912(其中因此核102已拥有硬件信 号量118,所以未有更新发生,如判断方块1914中所判断)。然而,若该值为0,其表示该核 102欲放弃硬件信号量118的所有权,则流程进行到方块1918。
[0244] 在方块1918中,该状态机1706更新拥有位1702为零,以表示现在未有核102拥 有硬件信号量118,流程结束于方块1918。
[0245] 如上所述,在一实施例中,微处理器100包括16个硬件信号量118。当一核102写 入该预定地址时,其写入一 16位数据值,其每一位对应16个硬件信号量118其中之一不同 的硬件信号量118,并指示该写入预定地址的核102是否请求拥有(值为1)或放弃对应硬 件信号量118的所有权(值为零)。
[0246] 在一实施例中,仲裁逻辑仲裁由核102所请求存取该硬件信号量118,以使核102 由硬件信号量118序列化(Serialize)读取/写入硬件信号量118。在一实施例中,仲裁逻 辑在核102间使用一循环控制公平演算法(Round-Robin Fairness Algorithm)以存取硬 件信号量118。
[0247] 请参阅图20,其是显示当微处理器100使用硬件信号量118以执行需一资源独占 所有权的操作流程图。更具体地说明,硬件信号量118用以在两或多个核102已分别遇到 一写回且使共享高速缓冲存储器119失效指令的情况下确保在某一时间仅一核102执行一 写回,并使共享高速缓冲存储器119失效。该操作是以一单一核的角度所描述,但微处理器 100的每一核102根据本发明以整体确保一核102执行写回且使其它核102的操作无效。 也就是说,图20的操作确保WBINVD指令过程被序列化(Serialize)。在一实施例中,图20 的操作可在一微处理器100中执行,其根据图7A?7B中的实施例执行一 WBINVD指令。流 程开始于方块2002。
[0248] 在方块2002中,一核102遇到一高速缓冲控制指令,像是一 WBINVD指令。流程进 行到方块2004。
[0249] 在方块2004中,核102写入1至WBINVD硬件信号量118中。在一实施例中,该微 码已分配硬件信号量118其中之一至WBINVD操作中。该核102接着读取WBINVD硬件信号 量118以决定其是否获得所有权。流程进行到判断方块2006。
[0250] 在判断方块2006中,若核102决定其取得WBINVD硬件信号量118的所有权时,则 流程进行到方块2008 ;否则,流程返回至方块2004以再次尝试获取所有权。应注意的是当 即时核102的微码经由方块2004至2006间循环,其最终会由拥有WBINVD硬件信号量118 的核102所中断,因为该核102正于图7A?7B中方块702中执行WBINVD指令并且传送一 中断至即时核102。更佳地说,经由每次循环,即时核102的微码检查中断状态暂存器,以观 察其它核102其中之一(例如,拥有该WBINVD硬件信号量118的核102)是否发送一中断 至即时核102。该即时核102接着将执行图7A?7B的操作,并在方块749中根据图20恢 复操作以试图获得硬件信号量118的所有权,以执行其WBINVD指令。
[0251] 在方块2008中,核102已获得所有权且流程进行到图7A?7B中的方块702以执 行WBINVD指令。由于部分的WBINVD指令操作,在图7A?7B方块748中,该核102写入零 至WBINVD硬件信号量118中以放弃其所有权。流程结束于方块2008。
[0252] -类似于图20所描述的操作可由该微码执行,以获得的其它共享资源独占的所 有权。一核102可获得通过使用一硬件信号量118所使用的独占所有权的其它资源为非核 103的暂存器,其由核102所共享。在一实施例中,非核103暂存器包括一控制暂存器,其包 括每一核102各自的栏位。该栏位控制各个核102的操作方面。由于栏位位于相同的暂存 器中,当一核102欲更新其各自的栏位但无法更新其它核102的栏位时,该核102必须读取 该控制暂存器、修改所读取的值,接着写回已修改的值至控制暂存器。举例来说,微处理器 100可以包括一非核103性能控制暂存器(Performance Control Register, PCR),其用于 控制核102的总线时脉比。为了更新其总线时脉比,一特定的核102必须读取、修改并写回 PCR。因此,在一实施例中,微码被配置为当核102拥有与PCR相关的硬件信号量118时,执 行一 PCR的有效原子读取/修改/写回。总线时脉比经由一外部总线决定单一核102时脉 频率为该支持微处理器100的时脉频率的倍数。
[0253] 另一资源是一可信赖平台模组(Trusted Platform Module,TPM)。在一实施例中, 微处理器100执行运作在核102中微码的一可信赖平台模组。在一给定的即时时间中,运 行在一核102及核102其中之一的微码实施TPM。然而,实施TPM的核102可能随时间而改 变。通过使用与TPM相关联的硬件信号量118,核102的微码可确保仅一核102在一时间实 施TPM。更具体地说明,目前正执行TPM的核102在放弃实施该TPM之前写入TPM状态至专 用随机存取存储器116,并且该接管实施TPM的核102从专用随机存取存储器116中读取 TPM的状态。在每一核102的微码被配置为使当核102欲成为执行TPM的核102时,核102 在由专用随机存取存储器116中读取TPM状态之前首先取得TPM硬件信号量118的所有 权,并开始执行TPM。在一实施例中,TPM大致符合由可信赖运算组织(Trusted Computing Group)所发布的TPM规范,像是IS0/IEC11889规范。
[0254] 如上所述,传统对多个处理器之间资源竞争的解决方法是采用在系统存储器中的 软件信号量(software semaphore)。本文所描述的硬件信号量118的潜在优点是其可避免 在额外存储器总线上额外传输量的产生,并且其存取速度快于存取系统的存储器。
[0255] 中断、与t睡目民同步请求
[0256] 请参阅图21,其是显示根据图3流程图的核102发出非睡眠同步请求操作一例子 的时序图。在此例子中,微处理器100配置具有三个核102,标示为核0、核1和核2,如图所 示。然而,应可理解的是,在其它实施例中,该微处理器100可包括不同数量的核102。
[0257] 核0写入一 SYNC 14,其不被设置于睡眠位212中,也非设置于选择性唤醒位 214(例如,一非睡眠同步请求)中。因此,控制单元104允许核0保持运行(每一判断方块 312的分支"否")。
[0258] 核1最终也写入一非睡眠 SYNC 14且控制单元104允许核1保持运行。最后,核 2写入一非睡眠 SYNC 14。如图所不,每一核写入SYNC 14的时间可能不同。
[0259] 当所有核已写入非睡眠同步14时,控制单元104同时发送一同步中断至每一核0、 核1及核2。每一核接着接收同步中断并服务同步中断(除非该同步中断被遮蔽,在这种情 况下,该微码一般会轮询(poll)该同步中断)。
[0260] 导引处理器的指定
[0261] 在一实施例中,如上所述,通常(例如,当图23"所有核BSP"的功能被停用时)一 核102指定本身为引导处理器(BSP)并执行指定的任务,像是引导工作系统。在一实施例 中,通常(例如,当图22及23 "修改BSP"及"所有核BSP"的功能分别被停用时)虚拟核 的数量由核102BSP预设为0。
[0262] 然而,本发明人已经观察到BSP以一不同的方式被指定有可能是有利的,实施例 将在下面进行描述。例如,部分微处理器100的许多测试,特别是在制造测试中,是由引导 操作系统和运行程序码来执行,以确保该部分微处理器100正常进行工作。因 BSP核102执 行系统初始化并启动该操作系统,因此BSP核102可以AP核无法运行的方式运行。此外, 由观察可知,即使是在多执行绪(Multithreaded)的操作环境中,BSP通常较AP负担该处 理负荷较大的部分,因此,AP核102无法与BSP核102 -样作全面的测试。最后,可能有某 些动作其仅需由该BSP核102代表微处理器100作为一整体来执行,像是如图9描述的封 装睡眠状态握手协议。
[0263] 因此,实施例描述任一核102可被指定为BSP。在一实施例中,在微处理器100的 测试期间内,运行测试N次,其中N为微处理器100核102的数量,并在测试的每一个运行 中微处理器100被重新配置以使BSP为不同的核102。这在制造过程中可以有利地提供更 好的测试覆盖率,并且也有利地在微处理器100的设计过程中揭露在微处理器100中的错 误。另一优点是在不同的运行中每一核102可具有一不同的APIC ID,从而响应不同的中断 请求,其可提供更广泛的测试覆盖率。
[0264] 请参阅图22,其是显示配置微处理器100的一程序流程图。在图22的描述参考图 4中的多晶体微处理器100,其包括两个晶体406和八个核102。然而,应可理解的是,描述 于此的动态重新配置可使用具有不同配置的一微处理器100,即具有多于两个晶体或单个 晶体,且多或少于八个核102但至少两个核102。此操作是从一单一核的角度所描述,但微 处理器100的每一核102根据该描述以整体动态地操作并重新配置该微处理器100。流程 开始于方块2202。
[0265] 在方块2202中,微处理器100被重置,并执行其初始化的初始部分,更佳地一方式 其类似于上面图14所描述的方式。然而,配置相关值的产生,像是图14中的方块1424,尤 其是该APIC ID和BSP旗标,以方块2203至2204中所描述的方式执行。流程进行到方块 2203。
[0266] 在方块2203中,核102产生其虚拟核数量,更佳地描述于图14中。流程进行到判 断方块2204。
[0267] 在判断方块2204中,核102取样一指示以决定一功能是否可启用。该功能在本 文中称为"修改BSP"功能。在一实施例中,烧断一熔断器114可修改BSP的功能。更佳地 说,在测试过程中,并非烧断修改BSP功能的熔断器114,而是一真值(True)被扫描至与修 改BSP功能熔断器114相关的保存暂存器位中,如上述图1中所示,以使该修改BSP功能可 启用。在此方式中,该修改BSP功能在部分微处理器100中并非永久可启用,但却在供电 (power-up)后停用。更佳地说,在方块2203至2214中的操作由核102的微码所执行。若 该修改BSP功能被启用时,流程进行到方块2205。否则,流程进行到方块2206。
[0268] 在方块2205中,核102修改在方块2203中所产生的虚拟核数量。在一实施例 中,核102修改虚拟核数量以产生在方块2203中所产生虚拟核数量的一循环函数(Rotate function)的结果及一循环量,如下所示:
[0269] 虚拟核数量=循环(循环量,虚拟核数量)。
[0270] 循环函数,在一个实施例中,通过循环数在核102之间循环虚拟核数。循环量为烧 断熔断器114的一值,或更佳地说,其在测试过程中被扫描至保持暂存器中。表1显示每一 核102的虚拟核数,其序对(晶体数量258、本地核数量256)是显示在一示范配置的左侧 行中,而每一循环量是显示在顶行中,其晶体数量406为二且每一晶体406的核102数量为 4,以及所有核102可被启用。在此种方式中,测试器被授权使核102产生其虚拟核数、及例 如任何有效值的APIC ID。虽然用于修改虚拟核数描述于的一实施例中,但其它实施例也可 被预期。例如,循环方向可以相反表示于表格1中。流程进行到方块2206。
[0271] 表 1

【权利要求】
1. 一微处理器,其特征在于,包括: 多个处理核; 一服务处理单元;以及 一存储器,其由上述服务处理单元及上述多个处理核所存取, 其中上述多个处理核的至少一处理核被配置为将一修补写入上述存储器,其中上述修 补包括一或多个指令,以在上述存储器从上述至少一处理核写入后,从上述存储器中提取 并由上述服务处理单元执行。
2. 根据权利要求1所述的微处理器,其特征在于,上述多个处理核具有一指令级架构, 其中上述服务处理单元不为架构上可见以执行上述多个处理核的上述指令级架构的指令, 其中上述服务处理单元执行用以调试上述微处理器的操作。
3. 根据权利要求1所述的微处理器,其特征在于,还包括: 一第二存储器,被配置为保存指令以使上述服务处理单元从上述第二存储器中提取并 执行,其中上述第二存储器是一只读存储器。
4. 根据权利要求3所述的微处理器,其特征在于,还包括 一暂存器,被配置为储存一地址,其中上述暂存器由上述多个处理核的上述至少一处 理核所写入, 其中在上述服务处理核重置之后,从在上述暂存器的上述地址中的上述第一存储器或 上述第二存储器提取并执行其第一指令。
5. 根据权利要求3所述的微处理器,其特征在于,上述存储器还被配置为保存所有多 个处理核所执行微码读取及写入的数据。
6. 根据权利要求1所述的微处理器,其特征在于,还包括: 一高速缓冲存储器,由上述多个处理核共享, 其中上述服务处理单元被配置为写入一控制暂存器以停止上述多个处理核的一或多 个处理核发出请求到上述高速缓冲存储器。
7. 根据权利要求1所述的微处理器,其特征在于,还包括: 一高速缓冲存储器,由上述多个处理核共享, 其中上述服务处理单元被配置为写入一控制暂存器,以停止上述高速缓冲存储器确认 从上述多个处理核产生至上述高速缓冲存储器的请求。
8. 根据权利要求1所述的微处理器,其特征在于,还包括: 一高速缓冲存储器,由上述多个处理核共享, 其中上述服务处理单元被配置为写入一控制暂存器以重新估算上述高速缓冲存储器。
9. 根据权利要求1所述的微处理器,其特征在于,还包括: 一总线接口,被配置为作为上述微处理器与上述微处理器外部的一系统总线的接口, 其中上述服务处理单元被配置为写入一控制暂存器以控制上述总线接口在上述系统 总线中执行处理。
10. 根据权利要求1所述的微处理器,其特征在于,还包括: 一可编程中断控制器,用以控制中断请求至上述微处理器, 其中上述服务处理单元被配置为写入一控制暂存器以控制上述可编程中断控制器评 估一输入/输出装置至上述多个处理核。
11. 根据权利要求1所述的微处理器,其特征在于, 上述多个处理核的每一处理核包括多个函数单元;以及 上述服务处理单元被配置为写入一控制暂存器以配置上述多个处理核中一或多个上 述多个函数单元的一性能特征,其中上述性能特征为如下一或多个性能特征:一分支预测 演算法及一数据预提取演算法。
12. -种由微处理器所执行的方法,其特征在于,上述微处理器具有多个处理核、一服 务处理单元及由上述服务处理单元及上述多个处理核所存取的一存储器,上述方法包括: 由上述多个处理核的至少一处理核将一修补写入上述存储器,其中上述修补包括一或 多个指令; 在由上述至少一处理核将上述修补写入上述存储器后,由上述服务处理单元从上述存 储器中提取上述修补的一或多个指令;以及 由上述服务处理单元执行上述修补的上述提取指令。
13. 根据权利要求12所述的方法,其特征在于,上述多个处理核具有一指令级架构,其 中上述服务处理单元不为架构上可见以执行上述多个处理核的上述指令级架构的指令,上 述服务处理单元执行用以调试上述微处理器的操作。
14. 根据权利要求12所述的方法,其特征在于,还包括: 由上述多个处理核的每一处理核执行微码读取或写入数据至上述存储器。
15. 根据权利要求12所述的方法,其特征在于,还包括: 由上述服务处理单元写入一控制暂存器以停止上述多个处理核的一或多个处理核发 出请求到上述微处理器的一高速缓冲存储器,其中上述高速缓冲存储器由上述多个处理核 共享。
16. 根据权利要求12所述的方法,其特征在于,还包括: 由上述服务处理单元写入一控制暂存器以停止上述微处理器的一高速缓冲存储器确 认由上述多个处理核产生至上述高速缓冲存储器的请求,其中上述高速缓冲存储器由上述 多个处理核共享。
17. 根据权利要求12所述的方法,其特征在于,还包括: 由上述服务处理单元写入一控制暂存器以重新估算上述微处理器的一高速缓冲存储 器,其中上述高速缓冲存储器由上述多个处理核共享。
18. 根据权利要求12所述的方法,其特征在于,上述微处理器还包括一总线接口,该总 线接口作为上述微处理器与上述微处理器外部的一系统总线的接口,上述方法还包括: 由上述服务处理单元写入一控制暂存器以控制上述总线接口在上述系统总线中执行 处理。
19. 根据权利要求12所述的方法,其特征在于,上述微处理器还包括一可编程中断控 制器,用以控制中断请求至上述微处理器,上述方法还包括: 由上述服务处理单元写入一控制暂存器以控制上述可编程中断控制器评估一输入/ 输出装置至上述多个处理核。
20. 根据权利要求12所述的方法,其特征在于,上述多个处理核的每一处理核包括多 个函数单元,上述方法还包括: 由上述服务处理单元写入一控制暂存器以配置上述多个处理核中一或多个上述多个 函数单元的一性能特征,其中上述性能特征为如下一或多个性能特征:一分支预测演算法 及一数据预提取演算法。
【文档编号】G06F15/163GK104239273SQ201410431656
【公开日】2014年12月24日 申请日期:2014年8月28日 优先权日:2013年8月28日
【发明者】G·葛兰·亨利, 史蒂芬·嘉斯金斯 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1