微處理器及其執行方法
【專利摘要】本發明提供一種微處理器及其執行方法。上述微處理器包括多個處理核、一服務處理單元及一存儲器,其由上述服務處理單元及上述多個處理核所存取。上述多個處理核的至少一處理核被配置為將一修補寫入上述存儲器,其中上述修補包括一或多個指令,以在上述存儲器從上述至少一處理核寫入后,從上述存儲器中提取并由上述服務處理單元執行。本發明具有更少的功率消耗。
【專利說明】微處理器及其執行方法
【技術領域】
[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·葛蘭·亨利, 史蒂芬·嘉斯金斯 申請人:威盛電子股份有限公司