微處理器及其執(zhí)行方法
【專利摘要】本發(fā)明提供一種微處理器及其執(zhí)行方法。上述微處理器包括多個(gè)處理核、一服務(wù)處理單元及一存儲器,其由上述服務(wù)處理單元及上述多個(gè)處理核所存取。上述多個(gè)處理核的至少一處理核被配置為將一修補(bǔ)寫入上述存儲器,其中上述修補(bǔ)包括一或多個(gè)指令,以在上述存儲器從上述至少一處理核寫入后,從上述存儲器中提取并由上述服務(wù)處理單元執(zhí)行。本發(fā)明具有更少的功率消耗。
【專利說明】微處理器及其執(zhí)行方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明有關(guān)于一微處理器,且特別有關(guān)于服務(wù)處理器修補(bǔ)機(jī)制。
【背景技術(shù)】
[0002] 多核微處理器的增加,主要是因?yàn)槠涮峁┝嗽谛阅苌系膬?yōu)勢。可能主要是由于半 導(dǎo)體裝置幾何維度大小迅速的減少,從而增加了晶體管密度。在一微處理器中多核的存在 已產(chǎn)生與一核與其它核通信的需求,以完成各種功能,例如電源管理、高速緩沖存儲器管 理、除錯(cuò)及與更多核相關(guān)的配置。
[0003] 傳統(tǒng)上,運(yùn)行在多核處理器上架構(gòu)的程序(例如,操作系統(tǒng)或應(yīng)用程序)已使用位 于由所有核架構(gòu)上可尋址的一系統(tǒng)存儲器中的信號量進(jìn)行通信。這可能足夠用于許多目 的,但可能無法提供其它所需的速度、準(zhǔn)確度及/或系統(tǒng)層級透明度。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種微處理器。上述微處理器包括多個(gè)處理核、一服務(wù)處理單元及一 存儲器,其由上述服務(wù)處理單元及上述多個(gè)處理核所存取。上述多個(gè)處理核的至少一處理 核被配置為將一修補(bǔ)寫入上述存儲器,其中上述修補(bǔ)包括一或多個(gè)指令以在上述存儲器由 上述至少一處理核寫入后,從上述存儲器中提取并由上述服務(wù)處理單元執(zhí)行。
[0005] 本發(fā)明由微處理器所執(zhí)行的方法,其中上述微處理器具有多個(gè)處理核、一服務(wù)處 理單元及由上述服務(wù)處理單元及上述多個(gè)處理核所存取的一存儲器。上述方法包括:由上 述多個(gè)處理核至少一處理核將一修補(bǔ)寫入上述存儲器。上述修補(bǔ)包括一或多個(gè)指令;在由 上述至少一處理核將上述修補(bǔ)寫入上述存儲器后,由上述服務(wù)處理單元從上述存儲器中提 取上述修補(bǔ)的一或多個(gè)指令;以及由上述服務(wù)處理單元執(zhí)行上述修補(bǔ)的上述提取指令。
[0006] 本發(fā)明提供一種在用于一計(jì)算機(jī)裝置中至少一非暫態(tài)計(jì)算機(jī)可用介質(zhì)所編碼的 計(jì)算機(jī)程序產(chǎn)品,上述計(jì)算機(jī)程序產(chǎn)品包括指示一微處理器的計(jì)算機(jī)可用程序碼。上述 計(jì)算機(jī)可用程序碼包括:指示一指示的第一程序碼;指示指示一服務(wù)處理單元的第二程序 碼;以及指示一存儲器的第三程序碼,其由上述服務(wù)處理單元及上述多個(gè)處理核所存取。上 述多個(gè)處理核至少一處理核被配置為將一修補(bǔ)寫入上述存儲器。上述修補(bǔ)包括一或多個(gè)指 令以在上述存儲器由上述至少一處理核寫入后,由上述存儲器中提取并由上述服務(wù)處理單 元執(zhí)行。
[0007] 本發(fā)明具有更少的功率消耗。
【專利附圖】
【附圖說明】
[0008] 圖1是顯示一多核微處理器的方塊圖。
[0009] 圖2是顯示一控制字、一狀態(tài)字及一配置字的方塊圖。
[0010] 圖3是顯示一控制單元操作的流程圖。
[0011] 圖4是顯不另一實(shí)施例的微處理器的一方塊圖。
[0012] 圖5是顯示一微處理器操作以轉(zhuǎn)儲調(diào)試信息的流程圖。
[0013] 圖6是顯示一根據(jù)圖5流程圖中微處理器的操作示例時(shí)序圖。
[0014] 圖7A?7B是顯示一微處理器執(zhí)行跨核高速緩沖控制操作的流程圖。
[0015] 圖8是顯示根據(jù)圖7A?7B流程圖的微處理器操作例子的時(shí)序圖。
[0016] 圖9是顯示微處理器進(jìn)入一低功率封裝C-狀態(tài)的操作流程圖。
[0017] 圖10是顯示根據(jù)圖9流程圖一微處理器操作例子的時(shí)序圖。
[0018] 圖11是根據(jù)本發(fā)明另一實(shí)施例的微處理器進(jìn)入一低功率封裝C-狀態(tài)的操作流程 圖。
[0019] 圖12是顯示根據(jù)圖11流程圖的微處理器操作一例子的時(shí)序圖。
[0020] 圖13是顯示根據(jù)圖11流程圖的微處理器操作另一例子的時(shí)序圖。
[0021] 圖14是顯示微處理器的動(dòng)態(tài)重新配置的流程圖。
[0022] 圖15是顯示根據(jù)另一實(shí)施例中微處理器動(dòng)態(tài)重新配置的流程圖。
[0023] 圖16是顯示根據(jù)圖15流程圖的微處理器操作一例子的時(shí)序圖。
[0024] 圖17是顯示在圖1中硬件信號量118的一方塊圖。
[0025] 圖18是顯示當(dāng)一核102讀取硬件信號量118的操作流程圖。
[0026] 圖19是顯示當(dāng)一核寫入硬件信號量的操作流程圖。
[0027] 圖20是顯示當(dāng)微處理器使用硬件信號量以執(zhí)行需一資源獨(dú)占所有權(quán)的操作流程 圖。
[0028] 圖21是顯示根據(jù)圖3流程圖的核發(fā)出非睡眠同步請求操作一例子的時(shí)序圖。
[0029] 圖22是顯示配置微處理器的一程序流程圖。
[0030] 圖23是顯示根據(jù)另一實(shí)施例中配置微處理器的一程序流程圖。
[0031] 圖24是顯示根據(jù)另一實(shí)施例的一多核微處理器的方塊圖。
[0032] 圖25是顯示一微碼修補(bǔ)架構(gòu)的方塊圖。
[0033] 圖26A?26B是顯示圖24中該微處理器以傳播圖25的一微碼修補(bǔ)至該微處理器 的多核的一操作流程圖。
[0034] 圖27是顯不根據(jù)圖26A?26B流程圖的一微處理器操作的一例子的時(shí)序圖。
[0035] 圖28是顯示根據(jù)另一實(shí)施例的一多核微處理器的方塊圖。
[0036] 圖29A?29B是顯不根據(jù)另一實(shí)施例的圖28中該微處理器用以傳播一微碼修補(bǔ) 至該微處理器的多個(gè)核的一操作流程圖。
[0037] 圖30是顯示圖24的微處理器用以修補(bǔ)一服務(wù)處理器程序碼的流程圖。
[0038] 圖31是顯示根據(jù)另一實(shí)施例的一多核微處理器的方塊圖。
[0039] 圖32是顯示圖31中該微處理器用以傳播一 MTRR更新至該微處理器的多個(gè)核的 一操作流程圖。
[0040] 其中,附圖中符號的簡單說明如下:
[0041] 100 :多核微處理器;102A、102B、102N:核A、核B、核N;103 :非核;104 :控制單元; 106 :狀態(tài)暫存器;108A、108B、108C、108D、108N:同步暫存器;108E、108F、108G、108H :影子 同步暫存器;114 :熔斷器;116 :專用隨機(jī)存取存儲器;118 :硬件信號量;119 :共享高速緩 沖存儲器;122A、122B、122N :時(shí)脈信號;124A、124B、124N :中斷信號;126A、126B、126N :數(shù) 據(jù)信號;128A、128B、128N :電能控制信號;202 :控制字;204 :喚醒事件;206 :同步控制; 208 :電源閘;212 :睡眠;214 :選擇性喚醒;222 :S ;224 :C ;226 :同步狀態(tài)或C-狀態(tài);228 : 核集合;232 :強(qiáng)迫同步;234 :選擇性同步中止;236 :停用核;242 :狀態(tài)字;244 :喚醒事件; 246 :最低常用C-狀態(tài);248 :錯(cuò)誤碼;252 :配置字;254-0?254-7 :致能;256 :本地核數(shù)量; 258 :晶體數(shù)量;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 :狀態(tài)機(jī) 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 :非核微碼修補(bǔ)隨機(jī)存取存儲器;2423 :服務(wù)處 理單元;2425 :非核微碼只讀存儲器;2439 :修補(bǔ)可定址內(nèi)容存儲器;2497 :服務(wù)處理單元 起始地址暫存器2499 :核隨機(jī)存取存儲器;2500 :微碼修補(bǔ);2502 :標(biāo)頭;2504 :即時(shí)修補(bǔ); 2506 :校對和;2508 :CAM 數(shù)據(jù);2512 :核 PRAM 修補(bǔ);2514 :校對和;2516 :RAM 修補(bǔ);2518 : 非核 PRAM 修補(bǔ);2522 :校對和;2602、2604、2606、2608、2611、2612、2614、2616、2618、2621、 2622、2624、2626、2628、2631、2632、2634、2652 :步驟;2808 :核修補(bǔ) RAM ;2912、2916、2922、 2932 :步驟;3002、3004、3006 :步驟;3102 :存儲器類型范圍暫存器;3202、3204、3206、 3208、3211、3212、3214、3216、3218、3252 :步驟。
【具體實(shí)施方式】
[0042] 下文為介紹本發(fā)明的最佳實(shí)施例。各實(shí)施例用以說明本發(fā)明的原理,但非用以限 制本發(fā)明。本發(fā)明的范圍當(dāng)以權(quán)利要求書為準(zhǔn)。
[0043] 請參照圖1,其是顯示一多核微處理器100的方塊圖。微處理器100包括多個(gè)處 理核,標(biāo)示為102A、102B至102N,其統(tǒng)稱為多個(gè)處理核102,或簡稱多個(gè)核102,且被單獨(dú)稱 為處理核102或簡稱核102。更佳地說,每一核102包括一或多個(gè)功能單元的管線(圖未 示出),其包括一指令高速緩沖存儲器(instruction cache)、一指令轉(zhuǎn)換單元或指令解碼 器,更佳地包括一微碼(microcode)單元、暫存換名單元、保留站(Reservation station)、 高速緩沖存儲器、執(zhí)行單元、存儲器子系統(tǒng)及包括一排序緩沖器的引退單元(retire unit)。更佳地說,多個(gè)核102包括一超純量(Superscalar)、非順序執(zhí)行(out-of-〇rder execution)微體架構(gòu)。在一實(shí)施例中,微處理器100是一 x86架構(gòu)微處理器,但在其它實(shí)施 例中,微處理器100符合其它指令集的架構(gòu)。
[0044] 微處理器100也包括一耦接至上述多個(gè)核102的不同于上述多個(gè)核102的非 核103。非核103包括一控制單元104、熔斷器114、一專用隨機(jī)存取存儲器116 (Private Random Access Memory,PRAM)以及一共享高速緩沖存儲器 119 (Shared Cache Memory),例 如,由多個(gè)核102所共享的一第二級(level-2, L2)和/或第三級(level-3, L3)高速緩沖 存儲器。每一核102配置用以通過一各自的地址/數(shù)據(jù)總線126從非核103讀取數(shù)據(jù)/寫 入數(shù)據(jù)至非核103,核102提供一非架構(gòu)地址空間(也視為專用或微架構(gòu)地址空間)至非核 103的共享資源。專用隨機(jī)存取存儲器116為專用或非架構(gòu)的,也就是說其未在微處理器 100的架構(gòu)使用者程序地址空間中。在一實(shí)施例中,非核103包括仲裁邏輯(Arbitration Logic),其通過多個(gè)核102仲裁請求存取非核103的資源。
[0045] 每一熔斷器114是一電子裝置,其可被燒斷或不被燒斷;當(dāng)熔斷器114不被燒斷 時(shí),熔斷器114具有低阻抗且易傳導(dǎo)電流;當(dāng)熔斷器114被燒斷時(shí),熔斷器114具有高阻抗 且不容易傳導(dǎo)電流。一檢測電路與每一熔斷器114相關(guān)聯(lián),以評估該熔斷器114,例如,檢測 該熔斷器114是否傳導(dǎo)一高電流或低電壓(不燒斷,例如,邏輯為零、或清除(clear))或一 低電流或高電壓(燒斷,例如,邏輯為一、或設(shè)置(set))。該熔斷器114可在微處理器100 的制造期間內(nèi)被燒斷,且在一些實(shí)施例中,一未燒斷的熔斷器114可在微處理器100制造后 被燒斷。更佳地說,一燒斷的熔斷器114是不可逆的。一熔斷器114的例子為一多晶硅熔 絲,其可在裝置間施加一足夠高的電壓而燒斷。一熔斷器114的另一例子為鎳-鉻熔絲, 其可使用一激光而燒斷。更佳地說,感測電路電力開啟感測熔斷器114,并提供其評估至微 處理器100的保存暫存器(Holding Register)中的一相應(yīng)位。當(dāng)微處理器100被重置解 除時(shí),多個(gè)核102 (例如,微碼)讀取保存暫存器以決定所感測的熔斷器114的值。在一實(shí) 施例中,在微處理器100被重置解除前,已更新的值可經(jīng)由一邊界掃描輸入掃描至保存暫 存器,舉例來說,像是一聯(lián)合測試行為組織(Joint Test Action Group, JTAG)輸入,以實(shí)質(zhì) 更新熔斷器114的值。此用于測試和/或偵錯(cuò)目的,如在下方描述與圖22和圖23相關(guān)的 實(shí)施例中特別有用。
[0046] 另外,在一實(shí)施例中,微處理器100包括與每一核102相關(guān)不同的本地高級可編程 中斷控制器(Advanced Programmable Interrupt Controller,APIC)(圖未不出)。在一實(shí) 施例中,本地高級可編程中斷控制器架構(gòu)地遵守加利福尼亞州(California)圣塔克拉拉 (Santa Clara)的Intel公司在2012年5月Intel 64及IA-32架構(gòu)軟件開發(fā)人員手冊3A 中一本地高級可編程中斷控制器的說明,特別是在第10. 4節(jié)中。尤其是本地高級可編程中 斷控制器包括一高級可編程中斷控制器ID及一包括導(dǎo)引處理器(Bootstrap Processor, BSP)旗標(biāo)的高級可編程中斷控制器基址暫存器,其產(chǎn)生及用途將更詳細(xì)地描述的如下,尤 其是與圖14至圖16有關(guān)的實(shí)施例。
[0047] 控制單元104包括硬件、軟件、或硬件和軟件的組合??刂茊卧?04包括一硬件信 號量(Hardware Semaphore) 118 (詳細(xì)地描述如下圖17至圖20)、一狀態(tài)暫存器106、一配 置暫存器112、和與每一核102各自對應(yīng)的一同步暫存器108。更佳地說,每一非核103的 實(shí)體在非架構(gòu)地址空間內(nèi)不同地址中可由每一核102所尋址,其該非架構(gòu)地址空間能使微 碼讀取及寫入核102。
[0048] 每一同步暫存器108可由各自對應(yīng)的核102寫入。狀態(tài)暫存器106由每一核102 讀取。配置暫存器112可(經(jīng)由如下所述的圖2的停用核位236)由每一核102讀取及間 接寫入??刂茊卧?04還可包括中斷邏輯(圖未示出),該中斷邏輯生成至每一核102的對 應(yīng)的中斷信號(interrupt signal,INTR) 124,該中斷信號由控制單元104產(chǎn)生以中斷對應(yīng) 的核102。中斷源響應(yīng)該控制單元104產(chǎn)生至一核102的一中斷信號124,且中斷源可包括 外部中斷源(例如x86架構(gòu)INTR、SMI、匪I中斷來源)或總線事件(例如,x86架構(gòu)式的總 線信號STPCLK確立(assertion)或解除確立(de-assertion))。此外,每一核102可通過 寫入控制單元104傳送一核間中斷信號124至其它每一核102。更佳地說,除非另有說明, 否則本文中所描述的核間中斷信號為一核102的微碼經(jīng)由一微指令(microinrstuction) 請求非架構(gòu)核間中斷信號,其不同于由系統(tǒng)軟件經(jīng)由一架構(gòu)指令所請求的傳統(tǒng)架構(gòu)核間中 斷信號。最后,當(dāng)一同步情況(Synchronization Condition)已經(jīng)發(fā)生時(shí),如下文所述(例 如,請參閱圖21及圖3中的方塊334),控制單元104可產(chǎn)生一中斷信號124至核102 ( - 同步中斷信號)??刂茊卧?04也產(chǎn)生一對應(yīng)的時(shí)脈信號(CLOCK) 122至每一核102,其中 控制單元104可以選擇性地關(guān)閉,且有效地使對應(yīng)的核102進(jìn)入睡眠并開啟以喚醒核102 來備份。控制單元104還產(chǎn)生一對應(yīng)核的電能控制信號(PWR) 128至每一核102,其選擇性 地控制對應(yīng)的核102接收或不接收電能。因此,控制單元104可經(jīng)由對應(yīng)的電能控制信號 128選擇性地使一核102進(jìn)入一更深的睡眠狀態(tài)以關(guān)閉該核的電能,并重新開啟電能至該 核102以喚醒該核102。
[0049] 一核102可寫入與其相應(yīng)的、具有同步位集合(請參閱圖2的S位222)的同步暫 存器108中,上述操作被視為一同步請求(Synchronization Request)。更詳細(xì)的說明描 述如下,在一實(shí)施例中,該同步請求請求控制單元104使核102進(jìn)入睡眠狀態(tài),并當(dāng)一同步 情況發(fā)生時(shí)和/或當(dāng)一特定的喚醒事件發(fā)生時(shí)喚醒該核102。一同步情況發(fā)生在微處理器 100中所有可啟用(請參閱圖2中的致能位254)的核102或可啟用核102的一特定子集合 (請參閱圖2中的核集合欄位228)已寫入相同的同步情況(詳細(xì)說明于圖2中C位224、 同步情況或C-狀態(tài)欄位226的一組合及核集合欄位228, S位222更詳細(xì)地描述如下)至 其對應(yīng)的同步暫存器108時(shí)。為了響應(yīng)一同步情況的發(fā)生,控制單元104同時(shí)喚醒正等待 該同步情況的所有核102,即,已請求同步情況。在另一描述如下的實(shí)施例中,核102可以請 求僅最后寫入該同步請求的一核102被喚醒(請參閱圖2的選擇性喚醒位214)。在另一實(shí) 施例中,同步請求不請求核102進(jìn)入睡眠狀態(tài),相反地,同步請求請求控制單元104當(dāng)同步 情況發(fā)生時(shí)中斷核102,更詳細(xì)地描述如下,特別是圖3和圖21。
[0050] 更佳地說,當(dāng)控制單元104偵測一同步情況已發(fā)生時(shí)(由于最后寫入同步請求至 同步暫存器108中的最后核102),控制單元104使最后核102進(jìn)入睡眠狀態(tài),例如,關(guān)閉傳 送至最后寫入核102的時(shí)脈信號122,接著同時(shí)喚醒所有核102,例如,開啟傳送至所有核 102的時(shí)脈信號122。在此方法中,所有核102皆精確地在相同的時(shí)鐘周期(clock cycles) 中被喚醒,例如,使其時(shí)脈信號122被開啟。對于某些操作,例如除錯(cuò)(debugging),是特別 有益的(請參閱圖5中的實(shí)施例),其對于精確地在同一時(shí)鐘周期喚醒核102是有益的。在 一實(shí)施例中,非核103包括一單一鎖相回路(Phase-locked Loop, PLL),其產(chǎn)生提供給核 102的時(shí)脈信號122。在其它實(shí)施例中,微處理器100包括多個(gè)鎖相回路,其產(chǎn)生提供至核 102的時(shí)脈信號122。
[0051] 控制、狀杰及配置字
[0052] 請參照圖2,其顯示一控制字202、狀態(tài)字242及一配置字252的一方塊圖。一核 102寫入控制字202的一值至圖1的控制單元104的同步暫存器108,以產(chǎn)生一原子請求 (atomic request),以請求進(jìn)入睡眠狀態(tài)和/或與微處理器100中所有其它核102或一特 定子集合同步化(同步)。一核102讀取該控制單元104中狀態(tài)暫存器106所傳送的該狀 態(tài)字242的一值,以決定本文所描述的狀態(tài)信息。一核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、一同步狀態(tài)或C-狀態(tài)欄位226、一核集合欄位228、一強(qiáng)迫 同步位232、一選擇性同步中止(kill)位234,以及核停用核位236。狀態(tài)字242包括一喚 醒事件欄位244、一最低常用C-狀態(tài)欄位246及一錯(cuò)誤碼欄位248。該配置字252包括微 處理器100的每一核102的一致能位254、一本地核數(shù)量欄位256及一晶體數(shù)量欄位258。
[0054] 該控制字202的喚醒事件欄位204包括多個(gè)對應(yīng)于不同事件的位。如果核102設(shè) 置一位在喚醒事件欄位204中,當(dāng)事件發(fā)生對應(yīng)該位時(shí),控制單元104將喚醒該核102 (例 如,開啟時(shí)脈信號122至該核102)。當(dāng)該核102已與在核集合欄位228中所指定的所有其 它核同步時(shí),則發(fā)生一喚醒事件。在一實(shí)施例中,核集合欄位228可指定微處理器100中 所有核102 ;所有核102與即時(shí)(instant)核102共享一高速緩沖存儲器(例如,一第二 級(L2)高速緩沖及/或第三級(L3)高速緩沖);在相同半導(dǎo)體晶體中,所有核102為即時(shí) 核102 (參閱圖4中描述一多晶體、多核微處理器100的實(shí)施例的一例子);或在其它半導(dǎo) 體晶體中的所有核102為即時(shí)核102。一共孚1?速緩沖存儲器的核集合102可視為一晶片 (Slice)。其它喚醒事件的其它例子包括,但不局限于,一 X86INTR、SMI、NMI、STPCLK的確 立(assertion)或角軍除石角立(de-assertion)及一核間中斷(inter-core interrupt)。當(dāng) 一核102被喚醒時(shí),其可讀取在狀態(tài)字242中的喚醒事件欄位244以決定該正活動(dòng)喚醒事 件。
[0055] 如果核102設(shè)置該P(yáng)G位208時(shí),該控制單元104使核102進(jìn)入睡眠狀態(tài)后關(guān)閉至 核102的電能(例如,經(jīng)由該電能控制信號128)。當(dāng)控制單元104隨后恢復(fù)供電至核102 時(shí),控制單元104清除PG位208。PG位208的使用在如下圖11至圖13將有更詳細(xì)地描述。
[0056] 如果該核102設(shè)定睡眠位212或選擇性喚醒位214時(shí),控制單元104在核102寫入 使用指定在喚醒事件欄位204喚醒事件的同步暫存器108后,使核102進(jìn)入睡眠狀態(tài)。該 睡眠位212和選擇性喚醒位214互斥。當(dāng)一同步情況發(fā)生時(shí),它們之間的差別與控制單元 104所采取的行動(dòng)有關(guān)。若核102設(shè)置睡眠位212,當(dāng)一同步情況發(fā)生時(shí),則控制單元104 將喚醒所有核102。反之,若一核102設(shè)置選擇性喚醒位214,當(dāng)一同步情況發(fā)生時(shí),控制單 元104將僅喚醒最后寫入同步情況至其同步暫存器的核102。
[0057] 如果核102并未置睡眠位212,也未設(shè)置選擇性喚醒位214時(shí),雖然控制單元104 不會使核102進(jìn)入睡眠狀態(tài),但當(dāng)一同步情況發(fā)生時(shí),控制單元104將不會喚醒核102。控 制單元104仍將設(shè)置在指示一同步情況為正活動(dòng)的喚醒事件欄位204的位,因此核102可 以偵測該同步情況已經(jīng)發(fā)生。許多可指定于該喚醒事件欄位204中的喚醒事件也可中斷由 該控制單元104所產(chǎn)生一中斷信號至核102的來源。然而,若有要求,則核102的微碼可遮 蔽中斷來源。如此,當(dāng)核102被喚醒時(shí),該微碼可讀取狀態(tài)暫存器106決定一同步情況或一 喚醒事件或兩者是否發(fā)生。
[0058] 如果核102設(shè)置S位222,其請求控制單元104在一同步情況中同步。該同步情況 在C位224、同步情況或C-狀態(tài)欄位226的一些組合中及核集合欄位228中被指定。若C 位224被設(shè)置時(shí),C-狀態(tài)欄位226指定一 C-狀態(tài)值;若C位224是清除的,同步情況欄位 226指定一非C-狀態(tài)同步情況。更佳地說,同步狀態(tài)或C-狀態(tài)欄位226的值包括一非負(fù) 整數(shù)的有界集合。在一實(shí)施例中,該同步情況或C-狀態(tài)欄位226為4位。當(dāng)C位224為清 除(clear)時(shí),一同步情況發(fā)生在:一特定的核集合欄位228中的所有核102已經(jīng)寫入S位 222集合和同步情況欄位226的相同值至同步暫存器108中。在一實(shí)施例中,同步情況欄 位226的值對應(yīng)一唯一的同步情況,例如,在下方所描述示范的實(shí)施例中各種的同步情況。 當(dāng)C位224被設(shè)置時(shí),同步情況發(fā)生在在一特定的核集合欄位228中所有核102不論是否 已寫入該C-狀態(tài)欄位226中相同的值、皆寫入各自S位222集合至同步暫存器108中。在 此情況下,控制單元104分發(fā)(post)該C-狀態(tài)欄位226中的最低寫入值至該狀態(tài)暫存器 106中的最低常用C-狀態(tài)欄位246,該最低寫入值可由一核102所讀取,例如,通過在方塊 908中的主要核102或通過方塊1108中最后寫入/選擇性地被喚醒核102所讀取。在一實(shí) 施例中,若核102在同步情況欄位226中指定一預(yù)設(shè)值(例如,所有位集合),此指示控制單 元104以匹配即時(shí)核102與其它核102所指定的任一同步情況欄位226值。
[0059] 若核102設(shè)定強(qiáng)迫同步位232時(shí),控制單元104將強(qiáng)迫所有正進(jìn)行的同步請求被 立即匹配。
[0060] 一般來說,若任一核102因在喚醒事件欄位204中所指定的一喚醒事件所喚醒時(shí), 控制單元104通過清除在同步暫存器108中S位222來中止(kill)所有正進(jìn)行的同步請 求。然而,若核102設(shè)定該選擇性同步中止位234時(shí),控制單元104將中止只有因(非同步 情況發(fā)生)喚醒事件所喚醒的核102所正進(jìn)行的同步請求。
[0061] 若兩或多個(gè)核102在不同的同步情況下請求同步時(shí),控制單元104認(rèn)為這為一 停頓(deadlock)情況。若兩或多個(gè)核102將一值為設(shè)置(set)的S位222、一值為清除 (clear)的C位224及同步情況欄位226中的不同值寫入各自的同步暫存器108中時(shí),兩或 多個(gè)核102則在不同的同步情況下請求同步。舉例來說,若一核102將一值為設(shè)置(set) 的S位222、一值為清除(clear)的C位224及一同步情況226的值7寫入至同步暫存器 108中,且另一核102將一值為設(shè)置(set)的S位222、一值為清除(clear)的C位224及一 同步情況226值9寫入至同步暫存器108中時(shí),控制單元104則認(rèn)為此為一停頓情況。此 夕卜,若一核102將一值為清除的C位224寫入至其同步暫存器108中、而另一核102將一值 為設(shè)置(set)的C位224寫入至其同步暫存器108中,則控制單元104認(rèn)為此為一停頓情 況。為了響應(yīng)一停頓情況,控制單元104中止所有正進(jìn)行的同步請求,并喚醒所有在睡眠狀 態(tài)中的核102??刂茊卧?04也分發(fā)(post)在狀態(tài)暫存器106的錯(cuò)誤碼欄位248中的值, 其狀態(tài)暫存器106為可由核102讀取以決定該停頓原因并采取適當(dāng)行動(dòng)的狀態(tài)暫存器。在 一實(shí)施例中,錯(cuò)誤碼248表示每一核102所寫入的同步情況,該同步情況使每一核決定是否 繼續(xù)執(zhí)行其動(dòng)作的預(yù)定路線或延遲至另一核102。舉例來說,若一核102寫入一同步情況 以執(zhí)行一電源管理操作(例如,執(zhí)行一 X86MWAIT指令)以及另一核102寫入一同步情況以 執(zhí)行一高速緩沖管理操作(例如,X86WBINVD指令),則計(jì)劃執(zhí)行該MWAIT指令的核102因 MWAIT是一可選擇的操作,而WBINVD是一強(qiáng)制性的操作而取消MWAIT指令,以延遲至另一 正執(zhí)行WBINVD指令的核102。在舉另一例子,若一核102寫入一同步情況以執(zhí)行一除錯(cuò)操 作(例如,轉(zhuǎn)儲除錯(cuò)狀態(tài)(Dump debug state))以及另一核102寫入一同步情況以執(zhí)行一 高速緩沖管理操作(例如,WBINVD指令)時(shí),則計(jì)劃進(jìn)行WBINVD的核102通過儲存WBINVD 狀態(tài),等待轉(zhuǎn)儲除錯(cuò)發(fā)生及恢復(fù)WBINVD狀態(tài)并執(zhí)行WBINVD指令,以延遲至執(zhí)行轉(zhuǎn)儲除錯(cuò)的 核 102。
[0062] 在一單一晶體的實(shí)施例中晶體數(shù)量欄位258為零。在一多個(gè)晶體的實(shí)施例(例如, 圖4中),晶體數(shù)量欄位258指示哪一晶體由讀取配置暫存器112的該核102所駐留。舉例 來說,在一二晶體的實(shí)施例中,該晶體被指定為0和1以及該晶體數(shù)量欄位258具有0或1 的值。在一實(shí)施例中,舉例來說,熔斷器114選擇性地被燒斷以指定一晶體為0或1。
[0063] 本地核數(shù)量欄位256指示本地到正讀取配置暫存器112的核102的晶體中核的數(shù) 量。更佳地說,雖然具有一由所有核102所共享的單一配置暫存器112,然而控制單元104 知道哪個(gè)核102正讀取配置暫存器112,并根據(jù)一讀取器在本地核數(shù)量欄位256中提供正 確的值。這使得核102的微碼知道位于同一晶體中其它核102間的本地核數(shù)量。在一實(shí)施 例中,在微處理器100的非核103部分的一多路復(fù)用器選擇適當(dāng)?shù)闹?,該適當(dāng)?shù)闹悼苫诤?102讀取配置暫存器112而在配置字252的本地核數(shù)量欄位256中恢復(fù)。在一實(shí)施例中,選 擇性地?zé)龜嗳蹟嗥?14操作與多路復(fù)用器一起恢復(fù)本地核數(shù)量欄位256的值。更佳地說, 本地核數(shù)量欄位256的值是固定獨(dú)立的,其在晶體中的核102為可使用的,如以下所描述的 致能位254所指示。也就是說,即使在該晶體的一或多個(gè)核102被停用時(shí),本地核數(shù)量欄位 256的值維持固定。另外,核102的微碼計(jì)算核102的整體核數(shù)量,該核102的整體核數(shù)量 為一與配置相關(guān)的值,其用途詳細(xì)描述如下。整體核數(shù)量指示微處理器100整體核102的 核數(shù)量。核102通過使用晶體數(shù)量欄位258的值計(jì)算其整體核數(shù)量。例如,在一實(shí)施例中, 微處理器100包括8個(gè)核102,平均分至兩個(gè)具有晶體值0及1的晶體中,在每一晶體中,本 地核數(shù)量欄位256恢復(fù)一 0、1、2或3的值;在晶體值為1的核加上4即恢復(fù)本地核數(shù)量欄 位256的值以計(jì)算其整體核數(shù)量。
[0064] 微處理器100的每一核102具有一配置字252對應(yīng)致能位254,配置字252指示該 核102是否被啟用或停用。在圖2中,致能位254分別用致能位254-x表示,其中X是該對 應(yīng)核102的整體核數(shù)量。圖2中的例子假設(shè)微處理器100中具有八個(gè)核102,在圖2及圖4 的例子中,致能位254-0指示具有整體核數(shù)量0的核102(例如,核A)是否被啟用,致能位 254-1指示具有整體核數(shù)量1的核102 (例如,核B)是否被啟用,致能位254-2指示具有整 體核數(shù)量2的核102 (例如,核C)是否被啟用等等。因此,通過了解整體核數(shù)量,一核102 的微碼可由配置字252中決定微處理器100的哪一核102被停用以及哪一核102被啟用。 更佳地說,若該核102被啟用時(shí),則一致能位254被設(shè)定,若核102被停用時(shí),則致能位254 被清除。當(dāng)該微處理器100被重新設(shè)定時(shí),硬件自動(dòng)地填入(populate)該致能位254。更 佳地說,當(dāng)微處理器100被制造指示一已給定的核102是否為啟用,若是停用時(shí),該硬件基 于熔斷器114選擇性地被燒斷而填入致能位254。舉例來說,如果一已給定的核102被測 試并發(fā)現(xiàn)其為故障時(shí),一熔斷器114可被燒斷以清除該核102的致能位254。在一實(shí)施例 中,一被燒斷的熔斷器114指示一核102為停用,并防止來自被提供至停用的核102的時(shí)脈 信號。每一核102可將該停用核位236寫入至其同步暫存器108中,以清除其致能位254, 更多與圖14至圖16相關(guān)的細(xì)節(jié)將詳細(xì)描述如下。更佳地說,清除致能位254不會阻止該 核102執(zhí)行指令,但會更新該配置暫存器112,并且,該核102必須設(shè)定一不同的位(圖未示 出),以防止該核本身執(zhí)行指令,例如,使其電源被移除和/或關(guān)閉其時(shí)脈信號。對于一多晶 體配置微處理器100 (例如,圖4),該配置暫存器112包括該微處理器100中所有核102的 一致能位254,例如,所有核102不僅可是該本地晶體的核102,而且也可為該遠(yuǎn)端晶體的核 102。更佳地說,在一多晶體配置的微處理器100中,當(dāng)一核102寫入至其同步暫存器108 時(shí),同步暫存器108的值被傳遞至對應(yīng)另一晶體中的影子同步暫存器108的核102(請參閱 圖4),其中,若該停用核位236被設(shè)置,將造成一更新被傳送至遠(yuǎn)端晶體配置暫存器112,使 得本地和遠(yuǎn)端晶體配置暫存器112皆具有相同的值。
[0065] 在一實(shí)施例中,配置暫存器112無法直接由一核102寫入。然而,由一核102寫入 至該配置暫存器112將造成本地致能位254的值被傳播到在一多晶體微處理器100中其它 晶體的配置暫存器112中,例如,如圖14中方塊1406中的描述。
[0066] 控制單元
[0067] 請參考圖3,是顯示一描述該控制單元104的流程圖。流程開始于方塊302。在方 塊302中,一核102寫入一同步請求,例如,寫入一控制字202至其同步暫存器108,其中該 同步請求由控制單元104接收。在一多晶體配置微處理器100的情況下(例如,請參見圖 4),當(dāng)一控制單元104的影子同步暫存器108接收由其它晶體406所傳送的已傳播同步暫 存器108的值,該控制單元104根據(jù)圖3有效地操作,例如,當(dāng)該控制單元104從其本地核 102其中之一接收一同步請求(方塊302),除了該控制單元104使核102進(jìn)入睡眠(例如, 方塊314)、或喚醒(在方塊306、328或336)、或中斷(在方塊334)、或阻止核102在其本地 晶體406的喚醒事件(方塊326),還填入其本地狀態(tài)暫存器106 (方塊318)。流程進(jìn)行到 方塊304。
[0068] 在方塊304中,該控制單元104檢查在方塊302中的該同步情況,以決定一停頓 (deadlock)情況是否已發(fā)生,如上圖2所描述。若是,則流程行進(jìn)至方塊306 ;否則,流程進(jìn) 行到判斷方塊312。
[0069] 在方塊305中,該控制單元104偵測在同步暫存器108其中之一的喚醒事件欄位 204的一喚醒事件的發(fā)生(除了在方塊316中被偵測的一同步情況的發(fā)生之外)。如下方 方塊326中所描述,控制單元104可自動(dòng)地阻止喚醒事件。控制單元104可以偵測該喚醒 事件發(fā)生為一事件不同步(Event Asynchronous)時(shí)在方塊302中寫入一同步請求。流程 也由方塊305進(jìn)行至方塊306。
[0070] 在方塊306中,該控制單元104填入狀態(tài)暫存器106,中止正進(jìn)行的同步請求,并且 喚醒任一睡眠的核102。如上所述,喚醒睡眠核102可包括恢復(fù)其功率。該核102接著可讀 取該狀態(tài)暫存器106,特別是錯(cuò)誤碼248,以決定停頓的原因,并根據(jù)該沖突同步請求對應(yīng) 的優(yōu)先順序處理它,如上所描述。此外,該控制單元104中止所有正進(jìn)行的同步請求(例如, 清除在每一核102的同步暫存器105中的S位222),除非方塊306是由方塊305后達(dá)成且 該選擇性同步中止位234被設(shè)定時(shí),在此種情況下,該控制單元104會中止僅由該喚醒事件 所喚醒的核102正進(jìn)行的同步請求。若方塊306是由方塊305后達(dá)成,則該核102可讀取 喚醒事件244欄位以決定所發(fā)生的喚醒事件。此外,若該喚醒事件是一未遮蔽(unmasked) 的中斷來源,則控制單元104將通過該中斷信號124產(chǎn)生一中斷請求至該核102。流程在方 塊306中結(jié)束。
[0071] 在判斷方塊312中,該控制單元104決定睡眠位212或選擇性喚醒位214是否被 設(shè)定。若有,則流程進(jìn)行至方塊314 ;否則,流程進(jìn)行至判斷方塊316。
[0072] 在方塊314中,控制單元104使該核102進(jìn)入睡眠狀態(tài)。如上所述,使一核102進(jìn) 入睡眠狀態(tài)可包括移除其電源。在一實(shí)施例中,作為一最佳化的例子,即使該P(yáng)G位208被 設(shè)定,若此為最后寫入的核102 (例如,將造成同步情況的發(fā)生),在方塊314中,該控制單元 104不移除該核102的電源,并且因該控制單元104將在方塊328中即時(shí)喚醒最后寫入的核 102備份,因此該選擇性喚醒位214被設(shè)定。在一實(shí)施例中,該控制單元104包括同步邏輯 及睡眠邏輯,兩者互相分開,但互相通信;此外,該每一同步邏輯和睡眠邏輯包括該同步暫 存器108的一部分。有利的是,寫入至該同步暫存器108的同步邏輯部分和寫入到該同步 暫存器108的睡眠邏輯部分是原子的(atomic),即不可分割的。也就是說,如果一部分寫入 發(fā)生時(shí),其同步邏輯部分及睡眠邏輯部分皆保證會發(fā)生。更佳地說,該核102的管線阻塞, 不允許任何更多的寫入發(fā)生,直到其被保證寫入至該同步暫存器108中的兩個(gè)部分皆已發(fā) 生為止。寫入一同步請求并立即進(jìn)入睡眠狀態(tài)的優(yōu)點(diǎn)是其不需要該核1〇2(例如,微碼)連 續(xù)地運(yùn)轉(zhuǎn)以決定該同步情況是否已經(jīng)發(fā)生。由于可以節(jié)省電力且不消耗其它資源,例如總 線及/或存儲器頻寬,因此非常有益。值得注意的是,為了進(jìn)入睡眠狀態(tài)但無需請求與其它 核102同步(例如,方塊924和方塊1124),該核102可以寫入S位222為清除(Clear)及 睡眠位212為設(shè)定(Set),在本文中稱為一睡眠請求,至該同步暫存器108中;若在喚醒事 件欄位204中所指定一未遮蔽的喚醒事件發(fā)生時(shí)(例如,方塊305),但未尋找此核102 -同 步情況的發(fā)生(例如,方塊316)時(shí),在此種情況下,該控制單元104喚醒該核102 (例如,方 塊306)。流程進(jìn)行到判斷方塊316。
[0073] 在判斷方塊316中,該控制單元104決定一同步情況是否發(fā)生。若是,流程進(jìn)行 至方塊318。如上所述,一同步情況可僅在S位222被設(shè)定時(shí)發(fā)生。在一實(shí)施例中,該控制 單元104使用圖2中該致能位254,其指示該微處理器100中哪些核102被啟用,以及哪些 核102被停用。該控制單元104僅尋找被啟用的核102,以決定一同步情況是否發(fā)生。一 核102可因其被測試且發(fā)現(xiàn)在生產(chǎn)時(shí)間中有缺陷而被停用。因此,一熔斷器被燒斷以使該 核102無法操作并指示該核102被停用。一核102可因該核102所請求的軟件而被停用 (例如,請參閱圖15)。舉例來說,在一使用者請求時(shí),BIOS寫入一特殊模組暫存器(Model Specific Register,MSR)以請求該核102被停用,以響應(yīng)該核102停止使用其本身(例如, 通過該停用核位236),并通知其它核102讀取其它核102決定停用該核102的配置暫存器 112。一核102還可經(jīng)由一微碼來修補(bǔ)(patch)(例如,請參閱圖14),該微碼可通過燒斷熔 斷器114產(chǎn)生和/或從系統(tǒng)存儲器(例如一 FLASH存儲器)載入。除了決定一同步情況是 否發(fā)生之外,該控制單元104檢查該強(qiáng)迫同步位232。若為設(shè)置(set),流程則進(jìn)行至方塊 318。若該強(qiáng)迫同步位232為清除(clear)且一同步情況尚未發(fā)生,則流程結(jié)束于方塊316 中。
[0074] 在方塊318中,該控制單元104填入該狀態(tài)暫存器106。明確的說,如果發(fā)生同步 情況為所有核102請求一 C-狀態(tài)的同步時(shí),如上所述,該控制單元104填入最低常用C-狀 態(tài)欄位246。流程進(jìn)行至判斷方塊322。
[0075] 在判斷方塊322中,該控制單元104檢查選擇性喚醒(SEL WAKE)位214。如果該 位為設(shè)置(set)時(shí),流程進(jìn)行至方塊326;否則,流程進(jìn)行至判斷方塊322。
[0076] 在方塊326中,該控制單元104阻止除了即時(shí)核(instant core)外所有其它核 102的所有喚醒事件,其中該即時(shí)核為在方塊302中最后寫入同步請求至其同步暫存器108 的核102,因此使該同步情況發(fā)生。在一實(shí)施例中,如果欲阻止喚醒事件及其它方面為真 (True)時(shí),該控制單元104的邏輯簡單地布爾(Boolean) AND運(yùn)算具有一為假(False)信 號的喚醒情況。阻止所有核的所有喚醒事件的用途被更詳細(xì)地描述如下,特別是圖11至圖 13。流程進(jìn)行至方塊328。
[0077] 在方塊328中,該控制單元104僅喚醒該即時(shí)核102,但不喚醒請求該同步的其它 核。此外,該控制單元104通過清除該S位222中止該即時(shí)核102正進(jìn)行的同步請求,但不 中止其它核102正進(jìn)行的同步請求,例如,離開其它核102的S位222設(shè)置。因此有利的 是,如果當(dāng)即時(shí)核102在其被喚醒后寫入另一同步請求時(shí),其將會再次造成同步情況的發(fā) 生(假設(shè)其它核102的同步請求尚未被中止),一例子將在下方圖12及圖13中描述。流程 結(jié)束于方塊328。
[0078] 在判斷方塊332中,該控制單元104檢查該睡眠位212。如果該位為設(shè)置(set) 時(shí),則流程前進(jìn)到方塊336 ;否則,流程前進(jìn)到方塊334。
[0079] 在方塊334中,該控制單元104傳送一中斷信號(同步中斷)至所有核102。圖 21的時(shí)序圖是說明一非睡眠同步請求的例子。每一核102可讀取該喚醒事件欄位244并 偵測一同步情況的發(fā)生是中斷的原因。流程已進(jìn)行到方塊334,在此情況下,當(dāng)核102寫入 其同步請求時(shí),核102選擇不進(jìn)入睡眠狀態(tài)。雖然此種情況并未使核102獲得與進(jìn)入睡眠 狀態(tài)時(shí)同樣的益處(例如,同時(shí)喚醒),但其具有使核102在等待最后寫入其同步要求的核 102在無需同時(shí)喚醒的情況下,繼續(xù)處理指令的潛在優(yōu)勢。流程結(jié)束于方塊334。
[0080] 在方塊336中,該控制單元104同時(shí)被所有核102喚醒。在一實(shí)施例中,該控制單 元104在同一時(shí)鐘周期準(zhǔn)確地開啟至所有核102的該時(shí)脈信號122。在另一實(shí)施例中,該控 制單元104以一交錯(cuò)方式開啟該時(shí)脈信號122至所有核102。也就是說,該控制單元104在 開啟時(shí)脈信號122至每一核間引入一時(shí)鐘周期的預(yù)定數(shù)量(例如,時(shí)鐘順序?yàn)槭蛞话伲?然而,時(shí)脈信號122交錯(cuò)(staggering)開啟被同時(shí)考慮于本發(fā)明中。為降低所有核102被 喚醒時(shí)的一電力耗損尖峰的可能性,時(shí)脈信號122交錯(cuò)開啟是有益的。在又另一實(shí)施例中, 為了降低電力耗損尖峰的可能性時(shí),該控制單元104在同一時(shí)鐘周期開啟至所有核102的 時(shí)脈信號122,但通過初始在一已減少的頻率中提供時(shí)脈信號122并提高頻率至目標(biāo)頻率 下,在一斷斷續(xù)續(xù)(stuttering)、或壓制(throttled)方式中執(zhí)行。在一實(shí)施例中,該同步 請求作為該核102的微碼指令的執(zhí)行結(jié)果被發(fā)出,并且該微碼被設(shè)計(jì)用于至少一些同步情 況值,且指定該同步情況值的該微碼位置為唯一的。舉例來說,在微碼中僅一地方包括一同 步X請求,在微碼中僅一地方包括一同步y(tǒng)請求,依此類推。在這些情況下,因所有核102 在完全相同的地方被喚醒,其可使得微碼設(shè)計(jì)人員設(shè)計(jì)出更有效率且無缺陷的程序碼,因 此同時(shí)喚醒是有益的。此外,當(dāng)嘗試重新建立和修復(fù)因多核相互作用而出現(xiàn)錯(cuò)誤,但當(dāng)單一 核運(yùn)行時(shí)則不出現(xiàn)錯(cuò)誤時(shí),以除錯(cuò)為目的同時(shí)喚醒可能是特別有益的。圖5及圖6是顯示 此一例子。此外,該控制單元104中止所有正進(jìn)行的同步請求(例如,清除在每一核102的 同步暫存器108中的S位222)。流程結(jié)束于方塊336。
[0081] 本文所描述實(shí)施例的一優(yōu)點(diǎn)為其可顯著減少在一微處理器中微碼的數(shù)量,因比起 循環(huán)(looping)或執(zhí)行其它檢查以同步多核間的操作,在每一核中的微碼可簡單地寫入同 步請求,進(jìn)入睡眠狀態(tài),并且知道何時(shí)在微碼中同一地方喚醒所有核。該同步請求機(jī)制的微 碼用途將描述于下方。
[0082] 多晶體微處理器
[0083] 請參照圖4,是顯示另一實(shí)施例微處理器100的一方塊圖。圖4中的微處理器100 在許多方面類似于圖1的微處理器1〇〇,其中一多核處理器及核102均相似。然而,圖4 的實(shí)施例是一多晶體配置。也就是說,該微處理器100包括安裝在一共同封裝體(common package)內(nèi)并經(jīng)由一晶體內(nèi)總線404與另一晶體通信的多半導(dǎo)體晶體406。圖4的實(shí)施例 包括兩個(gè)晶體406,標(biāo)記為晶體A406A和通過晶體間總線404所耦接的晶體B406B。此外, 每一晶體406包括一晶體間總線單元402,晶體間總線單元402聯(lián)系各自的晶體406至該晶 體間總線404。更進(jìn)一步地,每一晶體406包括耦接至各自核102及晶體間總線單元402的 非核103中的控制單元104。在圖4的實(shí)施例中,晶體A 406A包括四個(gè)核102-核A 102A、 核B 102B、核C 102C和核D 102D,其中上述四個(gè)核102耦接至一耦接于一晶體間總線單元 A 402A的控制單元A 104A;同樣地,晶體B 406B包括四個(gè)核102-核E 102E、核F 102F、 核G102G和核H102H,其中上述四個(gè)核102耦接至一耦接于一晶體間總線單元B 402B的控 制單元B104B。最后,每一控制單元104不僅包括在包括本身的該晶體406中每一核的一同 步暫存器108,也包括另一晶體406中每一核的一同步暫存器108,其中,上述另一晶體406 中的同步暫存器108為圖4中所示的影子暫存器(Shadow register)。因此,圖4所示實(shí)施 例中的每一控制單元包括八個(gè)同步暫存器108,表示為108A、108B、108C、108D、108E、108F、 108G和108H。在控制單元A104A,同步暫存器108E、108F、108G和108H為影子暫存器,而在 控制單元B104B中,同步暫存器108A、108B、108C、108D為影子暫存器。
[0084] 當(dāng)一核102將一值寫入到其同步暫存器108時(shí),在核102的晶體406中的控制單 元104,經(jīng)由晶體間總線單元402及晶體間總線404,寫入該值至另一晶體406中對應(yīng)的影 子暫存器108。此外,如果停用核位236被設(shè)定于傳播至影子同步暫存器108的該值中時(shí), 該控制單元104還更新在配置暫存器112中對應(yīng)的致能位254。在此種方式下,即使是在微 處理器100核配置是動(dòng)態(tài)變化的情形下(例如,圖14至圖16),一同步情況的發(fā)生(包括一 跨晶體(trans-die)同步情況的發(fā)生)可以被偵測。在一實(shí)施例中,晶體間總線404是一相 對低速的總線,且該傳播可采用為一預(yù)定數(shù)量100核的時(shí)鐘周期順序,并且每一控制單元 104包括一狀態(tài)機(jī)制,其取用一預(yù)定數(shù)量的時(shí)間以偵測該同步情況的發(fā)生,并開啟該時(shí)脈信 號至各自晶體406中的所有核102。更佳地說,在控制單元104開始寫入值至另一晶體406 后(例如,被授予的晶體間總線404),在本地晶體406中的控制單元104 (例如,包括寫入 核102的晶體406)被配置為延遲更新該本地同步暫存器直到一預(yù)定數(shù)量的時(shí)間為止(例 如,傳播時(shí)間數(shù)量與狀態(tài)機(jī)制同步情況發(fā)生偵測時(shí)間數(shù)量的總和)。在此種方式中,在兩個(gè) 晶體中的控制單元104同時(shí)偵測一同步情況的發(fā)生,并且同時(shí)在兩個(gè)晶體406中開啟至所 有核102的時(shí)脈信號。當(dāng)嘗試重新建立及修復(fù)僅因多核相互作用而出現(xiàn),但不在一單一核 正運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤時(shí),以除錯(cuò)為目的而言可能特別地有益。圖5和圖6描述了可能利用 此功能優(yōu)勢的實(shí)施例。
[0085] 調(diào)試橾作
[0086] 微處理器100的核102被配置用以執(zhí)行單獨(dú)的調(diào)整操作,例如指令執(zhí)行及數(shù)據(jù)存 取的斷點(diǎn)(Breakpoint)。此外,微處理器100被配置用以執(zhí)行為跨核(trans-core)的調(diào)試 操作,例如,該調(diào)試操作與該微處理器100 -個(gè)以上的核102相關(guān)。
[0087] 請參閱圖5,其是顯示微處理器100操作以轉(zhuǎn)儲(dump)調(diào)試(debug)信息的流程 圖。該操作是從一單一核的角度所描述,但微處理器100中每一核102根據(jù)其描述操作共 同轉(zhuǎn)儲微處理器100的狀態(tài)。更具體地說,圖5描述了一核接收請求以轉(zhuǎn)儲調(diào)試信息的操 作,其流程開始于方塊502,且其它核102的操作流程開始于方塊532。
[0088] 在方塊502中,核102其中之一接收一請求以轉(zhuǎn)儲調(diào)試信息。更佳地說,上述調(diào)整 信息包括該核102或其一子集的狀態(tài)。更佳地說,調(diào)整信息被轉(zhuǎn)儲至系統(tǒng)存儲器或一可通 過調(diào)整設(shè)備監(jiān)控的外部總線,像是一邏輯分析器。響應(yīng)該請求,核102傳送一調(diào)試轉(zhuǎn)儲信息 至其它核102并傳送其它核102 -核間中斷信號。更佳地說,在此時(shí)間中斷被停用的期間 內(nèi)(例如,該微碼不允許本身被中斷),核102阻止微碼以響應(yīng)該請求以轉(zhuǎn)儲調(diào)試信息(在 方塊502中),或響應(yīng)上述中斷信號(在方塊532),并保持在微碼中,直到方塊528為止。在 一實(shí)施例中,核102只需當(dāng)其處于睡眠狀態(tài)且位于架構(gòu)指令邊界時(shí)中斷。在一實(shí)施例中,本 文所描述的各種核間信息(像是在方塊502及其它像是在方塊702、1502、2606和3206中 的信息)經(jīng)由同步暫存器108控制字的該同步情況或C-狀態(tài)欄位226被傳送及接收。在 其它實(shí)施例中,核間信息經(jīng)由非核專用隨機(jī)存取存儲器116被傳送及接收。流程從方塊502 前進(jìn)到方塊504。
[0089] 在方塊532中,其它核102的其中之一(例如,在方塊502中接收該調(diào)試轉(zhuǎn)儲請求 核102之外的一核102)由于在方塊502中傳送的核間中斷信號及信息被中斷并接收該調(diào) 試轉(zhuǎn)儲信息。如上所述,雖然在方塊532中的流程由單一核102的角度所描述,但每一其它 核102 (例如,不在方塊502中的核102)在方塊532被中斷并接收該信息,且執(zhí)行方塊504 至528的步驟。流程由方塊532前進(jìn)到方塊504。
[0090] 在方塊504中,核102寫入一同步情況1(在圖5中標(biāo)示為SYNC 1)的同步請求 至其同步暫存器108中。因此,該控制單元104使核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到方塊 506。
[0091] 在方塊506中,當(dāng)所有核已寫入SYNC 1時(shí),核102由控制單元104所喚醒。流程 進(jìn)行到方塊508。
[0092] 在方塊508中,核102轉(zhuǎn)儲其狀態(tài)至存儲器中。流程進(jìn)行到方塊514。
[0093] 在方塊514中,核102寫入一 SYNC 2,其造成控制單元104使核102進(jìn)入睡眠狀 態(tài)。流程進(jìn)行到方塊516。
[0094] 在方塊516中,當(dāng)所有核已寫入SYNC 2時(shí),核102由控制單元104所喚醒。流程 進(jìn)行到方塊518。
[0095] 在方塊518中,核102轉(zhuǎn)儲在方塊508中調(diào)試信息的該存儲器地址設(shè)定一旗標(biāo) (flag),通過一重置(Reset)信號維持,接著重置其本身。核102重置微碼,該微碼偵測該 旗標(biāo)并由所儲存的存儲器地址重新載入其狀態(tài)。流程進(jìn)行到方塊524。
[0096] 在方塊524中,核102寫入一 SYNC 3,其造成控制單元104使核102進(jìn)入睡眠狀 態(tài)。流程進(jìn)行到方塊526。
[0097] 在方塊526中,當(dāng)所有核已寫入SYNC 3時(shí),核102由控制單元104所喚醒。流程 進(jìn)行到方塊528。
[0098] 在方塊528中,該核102基于該在方塊518中被重新載入的狀態(tài)移除重置,并開始 提取架構(gòu)(例如,x86)指令。流程結(jié)束于方塊528。
[0099] 請參照圖6,其是顯示一根據(jù)圖5流程圖中微處理器100的操作示例時(shí)序圖。在此 例子中,微處理器100配置具有三個(gè)核102,標(biāo)示為核0、核1及核2,如圖所示。然而,應(yīng)可 理解的是,在其它實(shí)施例中,微處理器100可包括不同數(shù)量的核102。在此時(shí)序圖中,事件時(shí) 序的過程如下所述。
[0100] 核〇接收一調(diào)試轉(zhuǎn)儲請求,并傳送一調(diào)試轉(zhuǎn)儲信息和中斷信息至核1及核2 (每一 方塊502)以作為響應(yīng)。該核0接著寫入一 SYNC 1,并進(jìn)入睡眠狀態(tài)(每一方塊504)。 [0101] 每一核1和核2最后由其目前任務(wù)中被中斷并讀取其信息(每一方塊532)。作為 響應(yīng),每一核1和核2寫入一 SYNC 1并進(jìn)入睡眠狀態(tài)(每一方塊504)。如圖所不,每一核 寫入SYNC 1的時(shí)間可能不同,例如,由于該指令當(dāng)該中斷被確立時(shí)正在執(zhí)行。
[0102] 當(dāng)所有核已寫入SYNC 1時(shí),控制單元104同時(shí)喚醒所有核(每一方塊506)。每一 核接著轉(zhuǎn)儲其狀態(tài)至存儲器(每一方塊508),寫入一 SYNC 2并進(jìn)入睡眠狀態(tài)(每一方塊 514)。需轉(zhuǎn)儲該狀態(tài)的時(shí)間量可能不同;因此,在每一核寫入SYNC 2的時(shí)間可能不同,如圖 所示。
[0103] 當(dāng)所有核已寫入SYNC 2時(shí),控制單元104同時(shí)喚醒所有核(每一方塊516)。每一 核接著重置其本身并由存儲器中重新載入其狀態(tài)(每一方塊518),寫入SYNC 3并進(jìn)入睡眠 狀態(tài)(每一方塊524)。如圖所示,需重置并重新載入狀態(tài)的時(shí)間量可能會有所不同;因此, 在每一核寫入SYNC 3的時(shí)間可能不同。
[0104] 當(dāng)所有核已寫入SYNC 3時(shí),控制單元104同時(shí)喚醒所有核(每一方塊526)。每一 核接著開始在被中斷的時(shí)間點(diǎn)提取架構(gòu)指令(每一方塊528)。
[0105] 傳統(tǒng)在多處理器之間同步操作的解決方法是使用軟件信號量(semaphore)。然而, 傳統(tǒng)的解決方法缺點(diǎn)是其無法提供時(shí)間等級同步(Clock-level Synchronization)。本文 所描述實(shí)施例的優(yōu)點(diǎn)是控制單元104可同時(shí)開啟時(shí)脈信號122至所有的核102。
[0106] 在如上所述的方法中,一調(diào)整微處理器100的工程師可配置核102其中之一以周 期性地產(chǎn)生檢查時(shí)間點(diǎn),其用以產(chǎn)生調(diào)試轉(zhuǎn)儲請求,舉例來說,在一預(yù)定數(shù)量的指令已經(jīng)執(zhí) 行后。當(dāng)微處理器100在運(yùn)行時(shí),工程師取得在一記錄檔中微處理器100外部總線上的所有 活動(dòng)。接近總線被察覺已發(fā)生時(shí)間的記錄檔部分可提供至一軟件模擬器,其模擬該微處理 器100以幫助工程師調(diào)試。該模擬器模擬執(zhí)行由每一核102所指示的指令,并模擬外部微 處理器100總線使用紀(jì)錄信息的執(zhí)行。在一實(shí)施例中,所有核102的模擬器從同時(shí)由一重 置點(diǎn)啟動(dòng)。因此,該微處理器100的所有核102實(shí)際上在同一時(shí)間停止重置(例如,在SYNC 2之后)是具有較高的效果。此外,通過在所有其它核102已經(jīng)停止其當(dāng)前的任務(wù)(例如, 在SYNC 1之后)之前,等待轉(zhuǎn)儲其狀態(tài)時(shí),由一核102轉(zhuǎn)儲其狀態(tài)不會與其它核執(zhí)行調(diào)試 (例如,共享存儲器總線或高速緩沖相互影響)的程序碼及/或硬件互相干擾,其可增加重 新產(chǎn)生錯(cuò)誤并判斷其原因的可能性。同樣地,直到所有核102已經(jīng)完成重新載入其狀態(tài)之 前(例如,在SYNC 3之后),等待以開始提取架構(gòu)指令,通過一核102重新載入狀態(tài)不會與 其它核執(zhí)行調(diào)試的程序碼及/或硬件互相干擾,其可增加重新產(chǎn)生錯(cuò)誤并判斷其原因的可 能性。
[0107] 這些好處提供比現(xiàn)有方法更多的優(yōu)點(diǎn),其現(xiàn)有方法如美國專利US8, 370, 684,其從 所有目的整體上作為參考被引用于此,其無法享有能夠取得該同步請求核的好處。
[0108] 高諫緩沖控制橾作
[0109] 微處理器100的核102被配置用以執(zhí)行獨(dú)立的高速緩沖控制操作,像是在本地高 速緩沖存儲器,例如,不由兩個(gè)或更多核102所共享的高速緩沖器。此外,微處理器100被 配置用以執(zhí)行為跨核(Trans-core)的高速緩沖控制操作,例如,與微處理器100 -個(gè)以上 的核102相關(guān),以及例如,因其與一共享高速緩沖存儲器119相關(guān)。
[0110] 請參閱圖7A?7B,其是顯示微處理器100用以執(zhí)行跨核高速緩沖控制操作的流 程圖。圖7A?7B的實(shí)施例描述微處理器100如何執(zhí)行一 x86架構(gòu)寫回?zé)o效緩沖(Write Back and Invalidate Cache,WBINVD)指令。一 WBINVD指令指不執(zhí)行指令的核102寫回 在微處理器100高速緩存存儲器中所有的修改行至系統(tǒng)存儲器并使高速緩存存儲器失效, 或清空(Flush)。該WBINVD指令還指示該核102發(fā)布特別的總線周期以將任意高速緩存存 儲器外部直接指入微處理器100中,以寫回其已修改的數(shù)據(jù),并使上述數(shù)據(jù)失效。上述操作 是以一單一核的角度所描述,但微處理器100的每一核102根據(jù)本說明書操作共同寫回已 修改高速緩沖線(Modified cache line)并使微處理器100的高速緩沖存儲器無效。更具 體地說明,圖7A?7B描述一核遇到WBINVD指令的操作,其流程開始于方塊702,并且其它 核102的流程開始于方塊752。
[0111] 在方塊702中,核102其中之一遇到一 WBINVD指令。作為響應(yīng),核102傳送一 WBINVD指令信息至其它核102并且傳送一核間中斷信號至上述其它核102。更佳地說,直 到流程進(jìn)行至方塊748/749之前,核102在時(shí)間中斷信號被停用的期間內(nèi)(例如,該微碼不 允許其本身被中斷),阻止微碼以作為WBINVD指令的響應(yīng)(在方塊702中),或以作為該中 斷信號(在方塊752中)的響應(yīng),并維持在微碼中。流程從方塊702進(jìn)行到方塊704。
[0112] 在方塊752中,其它核102其中之一(例如,除了在方塊702中所遇到該WBINVD 指令核102之外的一核)由于在方塊702中被傳送的該核間中斷信號而被中斷并接收該 WBINVD指令信息。如上所述,雖然流程在方塊752是由單一核102的角度所描述,但每一其 它核102 (例如,不為在方塊702中的核102)在方塊752中被中斷并接收該信息,且執(zhí)行方 塊704至方塊749的步驟。流程由方塊752進(jìn)行到方塊704。
[0113] 在方塊704中,該核102寫入一同步情況4的同步請求(在圖7A?7B中標(biāo)示為 SYNC 4)至其同步暫存器108中。因此,控制單元104使核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到 方塊706。
[0114] 在方塊706中,當(dāng)所有核102已寫入SYNC 4時(shí),該核102由控制單元104所喚醒。 流程進(jìn)行到方塊708。
[0115] 在方塊708中,核102寫回并使得本地高速緩沖存儲器失效,例如,不由核102與 其它核102共享的第1級(Level-1,LI)高速緩沖存儲器。流程進(jìn)行到框714。
[0116] 在方塊714中,核102寫入一 SYNC 5,其造成控制單元104使核102進(jìn)入睡眠狀 態(tài)。流程進(jìn)行到方塊716。
[0117] 在方塊716中,當(dāng)所有核102已寫入SYNC 5時(shí),核102由控制單元104所喚醒。流 程進(jìn)行到判斷方塊717。
[0118] 在判斷方塊717中,核102判斷其是否為在方塊702中所遇到該WBINVD指令的核 102 (與在方塊752中所接收該WBINVD指令信息的核102相對照)。若是,則流程進(jìn)行到方 塊718 ;否則,流程前進(jìn)到方塊724。
[0119] 在方塊718中,核102寫回并使共享高速暫存器119失效。在一實(shí)施例中,微處理 器100包括多個(gè)晶片在多個(gè)核但并非全部核中,微處理器100的核102共享一高速緩沖存 儲器,如上所述。在此一實(shí)施例中,類似于方塊717至方塊726中的中間操作(圖未示出) 被執(zhí)行,其為由在晶片中核102其中之一執(zhí)行寫回及使共享緩沖存儲器失效,而該晶片的 其它(多個(gè))核回到類似于方塊724中的睡眠狀態(tài)以等待直到該高速緩沖存儲器失效為 止。流程進(jìn)行到方塊724。
[0120] 在方塊724中,核102寫入一 SYNC 6,其造成控制單元104使核102進(jìn)入睡眠狀 態(tài)。流程進(jìn)行到方塊726。
[0121] 在方塊726中,當(dāng)所有核102已寫入SYNC 6時(shí),核102由控制單元104所喚醒。流 程進(jìn)行到判斷方塊727。
[0122] 在判斷方塊727中,核102判斷其是否為在方塊702中遇到WBINVD指令的核 102 (與在方塊752中所接收該WBINVD指令信息的核102相對照)。若是,則流程進(jìn)行到方 塊728 ;否則,流程前進(jìn)到方塊744。
[0123] 在方塊728中,核102發(fā)布特定的總線周期以造成外部高速緩沖器被寫回并使外 部高速緩沖器失效。流程進(jìn)行到方塊744。
[0124] 在方塊744中,寫入一 SYNC 13,其造成控制單元104使核102進(jìn)入睡眠狀態(tài)。流 程進(jìn)行到方塊746。
[0125] 在方塊746中,當(dāng)所有核102已寫入SYNC 13時(shí),核102由控制單元104所喚醒。 流程進(jìn)行到判斷方塊747。
[0126] 在判斷方塊747中,核102判斷其是否為在方塊702中遇到WBINVD指令的核 102 (與在方塊752中所接收該WBINVD指令信息的核102相對照)。若是,則流程進(jìn)行到方 塊748 ;否則,流程前進(jìn)到方塊749。
[0127] 在方塊748中,核102完成WBINVD指令,其包括引退(retire)的WBINVD指令,且 可包括放棄一硬件信號量的所有權(quán)(見圖20)。流程結(jié)束于方塊748。
[0128] 在方塊749,在核102在方塊752中被中斷之前,核102在方塊749恢復(fù)繼續(xù)其正 執(zhí)行的任務(wù)102。流程結(jié)束于方塊749。
[0129] 參閱圖8,其是顯示根據(jù)圖7A?7B流程圖的微處理器100的操作時(shí)序圖。在此例 子中,微處理器100配置具有三個(gè)核102,標(biāo)示為核0、核1及核2,如圖所示。然而,應(yīng)可理 解的是,在其它實(shí)施例中,微處理器100可包括不同數(shù)量的核102。
[0130] 核0遇到一 WBINVD指令并響應(yīng)傳送一 WBINVD指令信息,且中斷核1及核2 (每一 方塊702)。核0接著寫一 SYNC 4并進(jìn)入睡眠狀態(tài)(每一方塊704)。
[0131] 每一核1及核2最后從其當(dāng)前任務(wù)中被中斷并讀取該信息(每一方塊752)。作為 響應(yīng),每一核1及核2寫入一 SYNC 4并進(jìn)入睡眠狀態(tài)(每一方塊704)。如圖所不,每一核 寫入SYNC 4的時(shí)間可能不同。
[0132] 當(dāng)所有核已經(jīng)寫入SYNC 4時(shí),控制單元104同時(shí)喚醒所有核(每一方塊706)。每 一核接著寫回并使其特定的高速緩沖存儲器失效(每一方塊708),寫入SYNC 5并進(jìn)入睡眠 狀態(tài)(每一方塊714)。需寫回及使高速緩沖存儲器失效的時(shí)間量可能不同,因此,在每一核 寫入SYNC 5的時(shí)間可能不同,如圖所示。
[0133] 當(dāng)所有核已寫入SYNC 5時(shí),控制單元104同時(shí)喚醒所有核(每一方塊716)。僅遇 到WBINVD指令的核寫回并使共享高速緩沖存儲器119失效(每一方塊718),以及所有核 寫入SYNC 6并進(jìn)入睡眠狀態(tài)(每一方塊724)。由于僅一核寫回并使共享高速緩沖存儲器 119失效,因此每一核寫入SYNC 6的時(shí)間可能不同。
[0134] 當(dāng)所有核已寫入SYNC 6時(shí),控制單元104同時(shí)喚醒所有核(每一方塊726)。僅 遇到WBINVD指令的核完成WBINVD指令(每一方塊748),以及所有其它核恢復(fù)中斷前的處 理。
[0135] 應(yīng)可理解的是,雖然高速緩沖控制指令為一 X86WBINVD指令的實(shí)施例已被描述, 但其它實(shí)施例可以假設(shè)同步請求被用以執(zhí)行其它高速緩沖指令。例如,微處理器100可執(zhí) 行類似的動(dòng)作,以使無需寫回高速緩沖數(shù)據(jù)(在方塊708和718)而執(zhí)行一 X86INVD指令并 簡單地使高速緩沖器失效。再舉另一例子來說,高速緩沖控制指令可由比x86架構(gòu)更不相 同的指令集架構(gòu)得到。
[0136] 電源管理橾作
[0137] 在微處理器100的核102被配置用以執(zhí)行各個(gè)功率減少的操作,例如,但不局限 于,停止執(zhí)行指令、請求控制單元104停止傳送時(shí)脈信號至核102、請求控制單元104由移除 核102的電源,寫回并使核102的本地(例如,非共享)高速緩沖存儲器失效及儲存核102 的狀態(tài)至一外部存儲器,如專用隨機(jī)存取存儲器116。當(dāng)一核102已執(zhí)行一或多個(gè)核指定的 功率減少操作時(shí),其已進(jìn)入一"核"C-狀態(tài)(也被稱為一核閑置狀態(tài)或核睡眠狀態(tài))。在一 實(shí)施例中,C-狀態(tài)值可大致對應(yīng)到已知高級配置和電源接口(Advanced Configuration and Power Interface,ACPI)規(guī)格處理器狀態(tài),但也可包括更精細(xì)的粒度(Granularity)。一般 而言,一核102將進(jìn)入一核C-狀態(tài)以響應(yīng)來自上述操作系統(tǒng)的請求。舉例來說,x86架構(gòu) 監(jiān)視等待(MWAIT)指令是一電源管理指令,其提供一提示,即一目標(biāo)C-狀態(tài),至執(zhí)行指令的 核102以允許微處理器100進(jìn)入一最佳化狀態(tài),像是一較低功率耗損狀態(tài)。在一 MWAIT指 令的情況下,目標(biāo)C-狀態(tài)是專屬的(proprietary)而非ACPI C-狀態(tài)。核C-狀態(tài)O(CO) 對應(yīng)于核102的運(yùn)行狀態(tài)并且C-狀態(tài)逐漸增加的值對應(yīng)逐漸減少的活動(dòng)或響應(yīng)狀態(tài)(如 C1、C2、C3等狀態(tài))。一逐漸減少的響應(yīng)或活動(dòng)狀態(tài)是指相對于一更多活動(dòng)或響應(yīng)狀態(tài)節(jié)省 更多功率的配置或操作狀態(tài),或由于某種原因而相對減少響應(yīng)的配置或操作狀態(tài)(例如, 具有一較長的喚醒延遲、較少完全啟用)。一核102可能節(jié)省功率操作的例子為停止指令的 執(zhí)行、停止傳送時(shí)脈信號、降低電壓、和/或移除核的部分(例如,功能單元和/或本地高速 緩沖器)或整個(gè)核的電源。
[0138] 此外,微處理器100被配置用以執(zhí)行跨核的功率減少操作??绾斯β蕼p少操作牽 連或影響微處理器100的多個(gè)核102。舉例來說,共享高速緩沖存儲器119可以是大的且相 對消耗大量的功率。因此,顯著的功率節(jié)省可通過移除傳送至共享高速緩沖存儲器119的 時(shí)脈信號和/或電源來達(dá)成。然而,為了移除至共享高速緩沖存儲器119的時(shí)脈信號和/ 或電源,所有共享高速緩沖存儲器的核102必須同意以使數(shù)據(jù)的一致性得到維持。實(shí)施例 考慮該微處理器100包括其它共享電源相關(guān)的資源,像是共享時(shí)脈和電源。在一實(shí)施例中, 微處理器100被耦接至包括一存儲器控制器、外圍控制器和/或電源管理控制器的系統(tǒng)晶 片組。在其它實(shí)施例中,一或多個(gè)控制器被整合至微處理器100中。系統(tǒng)省電可由微處理 器100通知控制器使控制器采取省電的動(dòng)作來達(dá)成。舉例來說,微處理器100可以通知控 制器使微處理器的高速緩沖存儲器失效并關(guān)閉,以使其無須被偵查。
[0139] 除了一核C-狀態(tài)的概念外,微處理器100 -般來說具有一"封裝"的C-狀態(tài)(也 被稱為一封裝閑置狀態(tài)或封裝睡眠狀態(tài))。封裝C-狀態(tài)對應(yīng)核102的最低(例如,最高功 率消耗)共同核C-狀態(tài)(例如,請參閱圖2中的欄位246及圖3的方塊318)。然而,除 了核特定的功率減少操作外,封裝C-狀態(tài)涉及到執(zhí)行一或多個(gè)跨核功率減少操作的微處 理器100。與封裝C-狀態(tài)相關(guān)的跨核省電操作例子包括關(guān)閉一產(chǎn)生時(shí)脈信號的鎖相回路 (PhaSe-l〇Cked-l〇〇p,PLL),并清空該共享高速緩沖存儲器119,且停止其時(shí)脈和/或電源, 其使存儲器/外部控制器避免偵查微處理器100的本地共享高速緩沖存儲器。其它例子 為改變電壓、頻率和/或總線時(shí)脈比、減少高速緩沖存儲器的大小,如共享高速緩沖存儲器 119,并以一半的速度運(yùn)行共享高速緩沖存儲器119。
[0140] 在許多情況下,操作系統(tǒng)被有效地用以執(zhí)行在單獨(dú)核102中的指令,因此可令單 獨(dú)核進(jìn)入睡眠狀態(tài)(例如,至一核C-狀態(tài)),但不具有直接令微處理器100進(jìn)入睡眠狀態(tài) (例如,至封裝C-狀態(tài))的方式。有益地,在實(shí)施例中描述微處理器100的核102在控制單 元104的幫助下互相合作地工作,以偵測當(dāng)所有核102已進(jìn)入核C-狀態(tài)并準(zhǔn)備使跨核的省 電操作發(fā)生。
[0141] 請參閱圖9,其是顯示微處理器100進(jìn)入一低功率封裝C-狀態(tài)的操作流程圖。圖 9的實(shí)施例描述微處理器100耦接至一晶片組并使用MWAIT指令執(zhí)行的例子。然而,應(yīng)可理 解的是,在其它實(shí)施例中,操作系統(tǒng)采用其它電源管理指令以及主要核102與整合至微處 理器100內(nèi)的控制器互相通信,并使用一不同的握手(Handshake)協(xié)議來描述。
[0142] 此操作是以一單一核的角度來描述,但該微處理器100的每一核102可能會遇到 MWAIT指令并根據(jù)本說明書操作共同使微處理器100進(jìn)入最佳狀態(tài)。流程開始于方塊902。
[0143] 在方塊902中,一核102遇到一用于指定目標(biāo)C-狀態(tài)的MWAIT指令,在圖9中標(biāo) 示為Cx,其中X是一非負(fù)整數(shù)值。流程進(jìn)行到方塊904。
[0144] 在方塊904中,核102寫入一 C位224集合及一 C-狀態(tài)欄位226值為X (在圖9中 標(biāo)示為SYNC Cx)的同步請求至其同步暫存器108。此外,同步請求在其喚醒事件欄位204 中指定核102在所有喚醒事件中被喚醒。因此,控制單元104令核102進(jìn)入睡眠狀態(tài)。更佳 地說,核102在寫入SYNC Cx之前,核102先寫回并使其寫入的本地高速緩沖存儲器失效。 流程進(jìn)行到方塊906。
[0145] 在方塊906中,當(dāng)所有核102已寫入一 SYNC Cx信號時(shí),核102被控制單元104喚 醒。如上所述,由其它核102寫入的X值可能不同,并且控制單元104發(fā)出最低常用C-狀態(tài) 值至狀態(tài)暫存器106狀態(tài)字242的最低常用C-狀態(tài)欄位246中(每一方塊318)。在方塊 906之前,而核102處于睡眠狀態(tài)時(shí),其可由一喚醒事件所喚醒,像是一中斷信號(例如,方 塊305和306)。更具體地說,但不保證該操作系統(tǒng)將執(zhí)行所有核102的MWAIT指令,其可允 許在一喚醒事件發(fā)生(例如,中斷)指示核102其中之一有效地取消MWAIT指令之前,微處 理器100執(zhí)行與封裝C-狀態(tài)相關(guān)的省電操作。然而,在方塊906中,一旦核102被喚醒,在 時(shí)脈中斷停用的期間內(nèi)(例如,微碼不允許其本身被中斷),核102 (事實(shí)上,所有的核102) 由于(在方塊902中)的MWAIT指令仍執(zhí)行微碼,并維持在微碼中,直到方塊924為止。換 句話說,雖然所有核102中少部分已接收MWAIT指令以進(jìn)入睡眠狀態(tài),單獨(dú)的核102可處于 睡眠狀態(tài)中,但作為一封裝的微處理器100不會指示該晶片集其已準(zhǔn)備進(jìn)入一封裝睡眠狀 態(tài)。然而,一旦所有核102已同意進(jìn)入一封裝睡眠狀態(tài),其由在方塊906中同步情況的發(fā)生 有效地指示,主要核102被允許與晶片組完成一封裝睡眠狀態(tài)握手協(xié)議(例如,方塊908、 909和以下921),且未被中斷及未有任何其它核102被中斷。流程進(jìn)行到判斷方塊907。
[0146] 在判斷方塊907中,核102判斷其是否為微處理器100的主要核102。更佳地說, 若判斷在重設(shè)時(shí)間其為BSP時(shí),一核102為主要核102。若該核為主要核時(shí),流程前進(jìn)到方 塊908 ;否則,流程前進(jìn)到方塊914。
[0147] 在方塊908中,主要核102寫回并使共享高速緩沖存儲器119失效,接著與可以 采取適當(dāng)行動(dòng)以減少功率消耗的該晶片集通信。舉例來說,由于當(dāng)微處理器100處于封裝 C-狀態(tài)時(shí),存儲器控制器和/或外部控制器皆維持失效,因此存儲器控制器和/或外部控制 器可避免偵測微處理器100的本地和共享高速緩沖存儲器。舉另一例子說明,該晶片組可 傳輸信號至微處理器100使微處理器100米取省電操作(例如,如下所述的確立x86-style STPCLK、SLP、DPSLP、NAP、VRDSLP信號)。更佳地說,核102基于最低常用的C-狀態(tài)欄位 246值進(jìn)行功率管理信息的通信。在一實(shí)施例中,核102發(fā)布一 I/O讀取總線周期至一提供 晶片組相關(guān)的電源管理信息,例如,封裝C-狀態(tài)值的I/O地址。流程進(jìn)行到方塊909。
[0148] 在方塊909中,主要核102等待晶片組確立(assert)STPCLK信號。更佳地說,若 STPCLK信號在一預(yù)定數(shù)亮的時(shí)脈周期后未被確立時(shí),控制單元104在中止其正進(jìn)行的同步 請求后,偵測此情況,喚醒所有核102并在錯(cuò)誤碼欄位248中指示該錯(cuò)誤。流程前進(jìn)到方塊 914。
[0149] 在方塊914中,該核102寫入一 SYNC 14。在一實(shí)施例中,該同步請求在其喚醒事 件欄位204中指定該核102未在任何喚醒事件中被喚醒。因此,控制單元104令核102進(jìn) 入睡眠狀態(tài)。流程進(jìn)行到方塊916。
[0150] 在方塊916中,當(dāng)所有核102已寫了一 SYNC 14時(shí),核102由控制單元104所喚醒。 流程進(jìn)行到判斷方塊919。
[0151] 在判斷方塊919中,核102判斷其是否為微處理器100的主要核102。若是,則流 程前進(jìn)到方塊921 ;否則,流程前進(jìn)到方塊924。
[0152] 在方塊921中,主要核102在微處理器100總線中發(fā)出一停止允許(grant)周期 以通知該晶片組其可能采取跨核(例如,封裝周邊)與微處理器100整體相關(guān)的省電操作, 像是避免微處理器100高速緩沖存儲器的偵查、移除總線時(shí)脈(例如,x86-型BCLK)至微處 理器100,并確立其它在總線中的信號(例如,x86-型SLP、DPSLP、NAP、VRDSLP),以使微處 理器100移除時(shí)脈和/或電源至微處理器100的各個(gè)部分。雖然描述于本文中的實(shí)施例涉 及到微處理器100及一與I/O讀取相關(guān)的晶片集間的一握手協(xié)議(在方塊908中),STPCLK 的確立(在方塊909中),并停止允許周期的發(fā)布(在方塊921中),其與x86基礎(chǔ)架構(gòu)系 統(tǒng)有歷史相關(guān),應(yīng)可理解的是,其它實(shí)施例假設(shè)與其它具有不同協(xié)議指令集基礎(chǔ)架構(gòu)系統(tǒng) 相關(guān),但也可節(jié)省電能、提高性能和/或降低復(fù)雜度。流程進(jìn)行到方塊924。
[0153] 在方塊924中,核102寫入一睡眠請求(例如,睡眠位212為設(shè)置(set)及S位222 為清除(clear)的睡眠請求)至同步暫存器108。此外,同步請求在其喚醒事件欄位204指 不核 102 僅在 STPCLK 非確立喚醒事件(wakeup event of the de-assertion of STPCLK, 艮P,解除確立的STPCLK的喚醒事件)中被喚醒。因此,控制單元104令核102進(jìn)入睡眠狀 態(tài)。流程結(jié)束于方塊924。
[0154] 請參閱圖10,其是顯示根據(jù)圖9流程圖微處理器100操作實(shí)施例的時(shí)序圖。在此 例子中,微處理器100配置具有三個(gè)核102,標(biāo)示為核0、核1及核2,如圖所示。然而,應(yīng)可 理解的是,在其它實(shí)施例中,微處理器100可包括不同數(shù)量的核102。
[0155] 核0遇到一指定C-狀態(tài)4的MWAIT指令(MWAIT C4)(每一方塊902)。核0接著 寫一 SYNC C4并進(jìn)入睡眠狀態(tài)(每一方塊904)。核1遇到一指定C-狀態(tài)3的MWAIT指令 (MWAIT C3)(每一方塊902)。核1接著寫一 SYNC C3并進(jìn)入睡眠狀態(tài)(每一方塊904)。核 2遇到一指定C-狀態(tài)2的MWAIT指令(MWAIT C2)(每一方塊902)。核2接著寫一 SYNC C2 并進(jìn)入睡眠狀態(tài)(每一方塊904)。如圖所示,在每一核寫入SYNC Cx的時(shí)間可能不同。事 實(shí)上,在一些其它事件發(fā)生之前,例如一中斷,一或多個(gè)核可能不會遇到一 MWAIT指令。
[0156] 當(dāng)所有核已經(jīng)寫入SYNC Cx時(shí),控制單元104同時(shí)喚醒所有核(每一方塊906)。主 要核接著發(fā)出I/O讀取總線周期(每一方塊908),并等待STPCLK的確立(每方塊909)。所 有的核寫入一 SYNC 14,并進(jìn)入睡眠狀態(tài)(每一方塊914)。由于只有主要核清空(Flush)共 享高速緩沖存儲器119,發(fā)出I/O讀取總線周期并等待STPCLK確立,因此每一核寫入SYNC 14的時(shí)間可能不同,如圖所示。事實(shí)上,主要核在其它核后可以幾百微秒的順序?qū)懭隨YNC 14。
[0157] 當(dāng)所有核寫入SYNC 14時(shí),控制單元104同時(shí)喚醒所有核(每一方塊916)。僅一 主要核發(fā)出停止允許周期(Stop grant cycle)(每一方塊921)。所有核寫入在STPCLK非 確立信號(?STPCLK)中等待的一睡眠請求并進(jìn)入睡眠狀態(tài)(每一方塊924)。由于僅主要 核發(fā)出停止允許周期,因此每一核寫入睡眠請求的時(shí)間可能不同,如圖所示。
[0158] 當(dāng)STPCLK信號被解除確立(de-asserted)時(shí),控制單元104喚醒所有核。
[0159] 由圖10可觀察到,當(dāng)核0執(zhí)行握手協(xié)議時(shí),核1和核2有益地可休眠一段有效的 時(shí)間。然而,應(yīng)當(dāng)注意的是,需將微處理器100從封裝睡眠狀態(tài)中喚醒所需的時(shí)間通常與休 眠時(shí)間長度成正比(例如,在睡眠狀態(tài)時(shí)節(jié)省多大的功率)。因此,在封裝睡眠狀態(tài)相對較 久的情況下(或者甚至其中一單獨(dú)的核102睡眠狀態(tài)時(shí)間是較長的),希望能進(jìn)一步減少喚 醒的發(fā)生及/或與握手協(xié)議相關(guān)所需喚醒的時(shí)間。圖11描述單一核102處理的握手協(xié)議, 而另一核102繼續(xù)處于睡眠狀態(tài)的一實(shí)施例。此外,根據(jù)圖11的實(shí)施例中,節(jié)省功率進(jìn)一 步可通過降低響應(yīng)一喚醒事件而被喚醒的核102數(shù)量而取得。
[0160] 請參閱圖11,其是根據(jù)本發(fā)明另一實(shí)施例的微處理器100進(jìn)入一低功率封裝C-狀 態(tài)的操作流程圖。圖11的實(shí)施例使用微處理器100耦接至晶片組中MWAIT指令執(zhí)行的例 子進(jìn)行說明。然而,應(yīng)可理解的是,在其它實(shí)施例中,操作系統(tǒng)采用其它電源管理指令,并且 最后同步的核102與整合至微處理器100中,且采用與描述不同握手協(xié)議的控制器通信。
[0161] 圖11的實(shí)施例在一些方面與圖9的實(shí)施例相似。然而,在現(xiàn)存操作系統(tǒng)請求微處 理器100進(jìn)入非常低的功率狀態(tài)并容忍與其相關(guān)延遲的環(huán)境中,圖11的實(shí)施例被設(shè)計(jì)以便 于節(jié)省潛在更大的功率。更具體地,圖11的實(shí)施例有利于控制至核的功率并在必要時(shí),如 處理中斷時(shí),喚醒核中僅一核。實(shí)施例考慮在該微處理器100支持在圖9及圖11中兩個(gè)模 式的操作。此外,模式是可配置的,無論是在制造(例如,通過熔斷器114)和/或經(jīng)由軟件 控制或由微處理器100依據(jù)由MWAIT指令所指定的特定C-狀態(tài)而自動(dòng)決定。流程開始于 方塊1102。
[0162] 在方塊1102中,核102遇到用于指定目標(biāo)C-狀態(tài)的MWAIT指令(MWAIT Cx),其在 圖11中表示為Cx,流程進(jìn)行到方塊1104。
[0163] 在方塊1104中,核102寫入一 C位224為set及一 C-狀態(tài)欄位226值為X (其在 圖11中標(biāo)示為SYNC Cx)的同步請求至其同步暫存器108中。同步請求也設(shè)置了選擇性喚 醒(SEL WAKE)位214及PG位208。此外,同步請求在其喚醒事件欄位204中指示核102在 所有喚醒事件中被喚醒,除了 STPCLK的確立和STPCLK的非確立(?STPCLK,S卩,STPCLK的 解除確立)之外。(更佳地說,有其它喚醒事件,如AP啟動(dòng)時(shí),該同步請求指定核102不被 喚醒)。因此,控制單元104令核102進(jìn)入睡眠狀態(tài),其包括因 PG位208被設(shè)置而阻止提供 功率至核102。此外,核102寫回及使本地高速緩沖存儲器無效,并在寫入同步請求之前儲 存(最好為專用隨機(jī)存取存儲器116)其核102的狀態(tài)。當(dāng)隨后核102被喚醒時(shí)(例如,在 方塊1137,1132或1106),核102將(例如,從PRAM 116)恢復(fù)其狀態(tài)。如上所述,特別是相 對于圖3,當(dāng)最后核102寫入一具有選擇性喚醒位214設(shè)置的同步請求時(shí),除了最后寫入核 102外,該控制單元104會自動(dòng)阻止所有核102的所有喚醒事件(每一方塊326)。流程進(jìn) 行到方塊1106。
[0164] 在方塊1106中,當(dāng)所有核102已經(jīng)寫入一 SYNC Cx時(shí),控制單元104喚醒最后寫 入的核102。如上所述,控制單元104維持其它核102的S位222設(shè)置,即使控制單元104 喚醒最后寫入的核102并清除S位。在方塊1106之前,當(dāng)核102處于睡眠狀態(tài)時(shí),其可由 一喚醒事件被喚醒,如一中斷。然而,一旦核102在方塊1106中被喚醒時(shí),核102因 MWAIT 指令(方塊1102)仍執(zhí)行微碼,并在中斷被停用的期間內(nèi)(例如,該微碼不允許其本身被中 斷)保持在微碼中,直到方塊1124為止。換句話說,雖然不超過所有核102已收到一MWAIT 指令以進(jìn)入睡眠狀態(tài),僅單獨(dú)的核102會休眠,但作為封裝的微處理器100不指示該晶片組 其已準(zhǔn)備好進(jìn)入一封裝睡眠狀態(tài)。然而,一旦所有核102已同意進(jìn)入一封裝睡眠狀態(tài)時(shí), 其通過在方塊1106的同步狀態(tài)發(fā)生所指示,在方塊906中被喚醒的核102 (最后寫入的核 102,其造成同步情況發(fā)生)被允許與晶片組完成封裝睡眠狀態(tài)握手協(xié)議(例如,如下所示 的方塊1108U109和1121)而不會被中斷,且沒有任何其它的核102被中斷。流程進(jìn)行到 方塊1108。
[0165] 在方塊1108中,核102寫回并使共享高速緩沖存儲器119失效,接著與晶片組通 信,其可能會采取適當(dāng)?shù)男袆?dòng),以減少功率消耗。流程進(jìn)行到方塊1109。
[0166] 在方塊1109中,核102等待晶片組以確立STPCLK信號。更佳地說,如果STPCLK 信號在一時(shí)脈周期預(yù)定數(shù)量后未確立時(shí),控制單元104偵測此情況,并在終止其正進(jìn)行的 同步請求后喚醒所有核102,且在錯(cuò)誤碼欄位248中指示該錯(cuò)誤。流程進(jìn)行到方塊1121。
[0167] 在方塊1121中,核102發(fā)出一停止允許周期至總線上的晶片組。流程進(jìn)行到方塊 1124。
[0168] 在方塊1124中,核102寫入一睡眠請求,例如,具有睡眠位212為設(shè)置(set)及S 位222為清除(clear)及PG位208為設(shè)置(set),至同步暫存器108中。此外,同步請求在 其喚醒事件欄位204中指定該核102僅在解除確立STPCLK的喚醒事件中被喚醒。因此,控 制單元104令核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到方塊1132。
[0169] 在方塊1132中,控制單元104偵測STPCLK非確立并喚醒核102。應(yīng)注意的是,先 前控制單元104喚醒核102,控制單元104也未限制電源至核102。有益的是,此時(shí)核102 是唯一正在運(yùn)作的核,這提供核102機(jī)會以使其執(zhí)行任何必須被執(zhí)行的動(dòng)作,而沒有其它 核102正在運(yùn)作。流程進(jìn)行到方塊1134。
[0170] 在方塊1134中,核102寫入至控制單元104的一暫存器(圖未示出)中以解開在 其對應(yīng)同步暫存器108的喚醒事件欄位204中所指定每一其它核102的喚醒事件。流程進(jìn) 行到方塊1136。
[0171] 在方塊1136中,核102處理任何正進(jìn)行指定該核102的喚醒事件。舉例來說,在 一實(shí)施例中,包括微處理器100的系統(tǒng)允許有向(both directed)的中斷(例如,指向微處 理器100 -特定核的中斷)和非向(non-directed)的中斷(例如,當(dāng)微處理器100選擇 時(shí),可由微處理器100的任一核102所處理的中斷)。一非向中斷的例子通常被稱為一"低 優(yōu)先級中斷"。在一實(shí)施例中,微處理器100最好指向非向中斷至在方塊1132的解除確立 STPCLK中被喚醒的單一核102,由于它已被喚醒,并能處理該中斷以期望其它核102不具有 任何正進(jìn)行的喚醒事件,因此可以繼續(xù)睡眠并限制電源。流程返回到方塊1104。
[0172] 當(dāng)喚醒事件在方塊1134中被解除(unblcked)時(shí),除了在方塊1132中已被喚醒的 核102之外,如果核102沒有指定的喚醒事件正在進(jìn)行,則有利于核102繼續(xù)處于睡眠狀 態(tài),并在每一方塊1104中限制電源。然而,當(dāng)喚醒事件在方塊1134中被解除時(shí),如果一指 定的喚醒事件正由核102處理,則核將不限制電源(un-power-gated),并由控制單元104喚 醒。在此情況下,不同的流程開始于圖11中的方塊1137。
[0173] 在方塊1137中,在喚醒事件在方塊1134中被解除后,另一核102 (例如,除了在方 塊1134中解除喚醒事件核102之外的核102)被喚醒。其它核102處理任何正進(jìn)行并指向 其它核102的喚醒事件,例如,處理一中斷。流程從方塊1137進(jìn)行到方塊1104。
[0174] 請參閱圖12,其是顯示根據(jù)圖11流程圖的微處理器100操作一例子的時(shí)序圖。在 此例子中,微處理器100配置具有三個(gè)核102,標(biāo)示為核0、核1和核2,如圖所示。然而,應(yīng) 可理解的是,在其它實(shí)施例中,微處理器100可包括不同數(shù)量的核102。
[0175] 核0遇到一指定C-狀態(tài)7的MWAIT指令(MWAIT C7)(每一方塊1102)。在此例子 中,C-狀態(tài)7允許限制電源。核0接著寫入一選擇性喚醒位214為設(shè)置(set)(如圖12中 所示的"選擇性喚醒")及PG位208為設(shè)置(set)的SYNC C7,并進(jìn)入睡眠狀態(tài)及限制電源 (每一方塊1104)。核1遇到一指定C-狀態(tài)為7的MWAIT指令(每一方塊1102)。核1接 著寫入選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set)的SYNC C7,并進(jìn)入睡眠 狀態(tài)及限制電源(每一方塊1104)。核2遇到一指定C-狀態(tài)為7的MWAIT指令(每一方 塊1102)。核2接著寫入具有選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set)的 SYNC C7,并進(jìn)入睡眠狀態(tài)及限制電源(每一方塊1104)。(然而,在描述于方塊314-最佳 的實(shí)施例中,最后寫入的核無法限制電源)。如圖所示,每一核的寫入同SYNC C7的時(shí)間可 能不同。
[0176] 當(dāng)最后寫入的核寫入具有選擇性喚醒位214為設(shè)置(set)的SYNC C7時(shí),該控制 單元104阻擋(block off)所有最后寫入核的喚醒事件(每一方塊326),在圖12的例子為 核2。此外,控制單元104僅喚醒最后寫入的核(每一方塊1106),因其它核持續(xù)睡眠且限 制電源,而核2與晶片組執(zhí)行握手協(xié)議,因此可節(jié)省功率。核2接著發(fā)出I/O讀取總線周期 (每一方塊1108),并等待STPCLK的確立(每一方塊1109)。為了響應(yīng)STPCLK,核2發(fā)出停 止允許周期(每一方塊1121),并寫入一具有在STPCLK解除中等待PG位208為設(shè)置(set) 的睡眠請求并進(jìn)入睡眠狀態(tài)及限制功率(每一方塊1124)。上述核可以休眠并限制功率一 段相對長的時(shí)間。
[0177] 當(dāng)STPCLK無法確立時(shí),控制單元104僅喚醒核2 (每一方塊1132)。在圖12的例 子中,該晶片組無法確立STPCLK以響應(yīng)一非向中斷的接收,其轉(zhuǎn)發(fā)至微處理器100。微處理 器100指示非向中斷至核2,其因其它核繼續(xù)處于睡眠狀態(tài)及限制電源而節(jié)省功率。核解除 其它核(每一方塊1134)的喚醒事件并服務(wù)非向中斷(每一方塊1136)。核2接著重新寫 入一具有選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set)的SYNC C7,并進(jìn)入睡 眠狀態(tài)且限制電源(每一方塊1104)。
[0178] 當(dāng)核2寫入具有選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set)的SYNC C7時(shí),由于其它核的同步請求仍正在進(jìn)行,例如,其它核的S位222并非由核2喚醒所清除, 因此該控制單元104阻擋(block off)除了核2之外所有核的喚醒事件,例如,最后寫入核 (每一方塊326)。此外,控制單元104僅喚醒核102(每一方塊1106)。核2接著發(fā)出I/O讀 取總線周期(每一方塊1108),并等待STPCLK的確立(每一方塊1109)。為了響應(yīng)STPCLK, 核2發(fā)出停止允許周期(每一方塊1121),并寫入一具有在STPCLK無法確立中等候的PG位 208為設(shè)置(set)的睡眠請求,并進(jìn)入睡眠狀態(tài)且限制功率(每一方塊1124)。
[0179] 當(dāng)STPCLK無法確立時(shí),控制單元104僅喚醒核2 (每一方塊1132)。在圖12的例 子中,STPCLK因其它非向中斷而被解除確立。因此,微處理器100指示該中斷至核2,這可 節(jié)省功率。核2再解除其它核的喚醒事件(每一方塊1134)并服務(wù)該非向中斷(每一方塊 1136)。核2接著再寫入一具有選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set) 的SYNC C7,并進(jìn)入睡眠狀態(tài)且限制功率(每一方塊1104)。
[0180] 此周期可持續(xù)相當(dāng)長的時(shí)間,即僅非向中斷被產(chǎn)生。圖13是顯示一指示一除了最 后寫入核之外不同核中斷處理的例子。
[0181] 可通過比較圖10和圖12知道,在圖12中的實(shí)施例較為有利,一旦核102開始進(jìn) 入睡眠狀態(tài)(在圖12的例子中寫入SYNC C7之后),僅一核102被再次喚醒以與晶片組執(zhí) 行握手協(xié)議,且其它核102保持睡眠,若核102處在一相當(dāng)長的睡眠狀態(tài)下,則可為一顯著 的優(yōu)點(diǎn)。功率節(jié)省可能非常顯著,特別是在操作系統(tǒng)識別在系統(tǒng)中對于單一核102處理工 作負(fù)載非常小的情況下。
[0182] 此外,有利的是,只要沒有喚醒事件被指示到其它核102,則僅一核102被喚醒(以 提供服務(wù)非向事件,像是一低優(yōu)先級中斷)。再來,若核102處于一相當(dāng)長的睡眠狀態(tài),則可 能具有顯著的優(yōu)勢。除了相對不頻繁的非向中斷,如USB中斷,尤其是在系統(tǒng)中不具有有效 負(fù)載的情況下,功率節(jié)省可以是顯著的。更進(jìn)一步地,即使一喚醒事件發(fā)生被指示到另一核 102時(shí)(例如,中斷操作系統(tǒng)指示至一單一核102,像是操作系統(tǒng)定時(shí)器中斷),實(shí)施例可有 利地動(dòng)態(tài)切換單一核102,其執(zhí)行封裝睡眠狀態(tài)協(xié)議及服務(wù)非向喚醒事件,如圖13所示,以 便享有喚醒僅一單一核102的好處。
[0183] 請參閱圖13,其是顯示根據(jù)圖11流程圖的微處理器100操作一例子的時(shí)序圖。圖 13的例子在許多方面與圖12的例子相似。然而,在STPCLK被解除確立的第一實(shí)例中,該中 斷是一指向核1的中斷(而不是圖12例子中的一非向中斷)。因此,控制單元104喚醒核 2 (每一方塊1132),并接著在喚醒事件由核2解除(每一方塊1134)后喚醒核1。核2接著 再寫入一具有選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set)的SYNC C7,并進(jìn) 入睡眠狀態(tài)且限制功率(每一方塊1104)。
[0184] 核1服務(wù)定向中斷(每一區(qū)塊1137)。核1接著再次寫入具有選擇性喚醒位214 為設(shè)置(set)及PG位208為設(shè)置(set)的SYNC C7,并進(jìn)入睡眠狀態(tài)且限制功率(每一方 塊1104)在此例子中,核2在核1寫入SYNC C7前寫入其SYNCC7。因此,雖然核0在其寫入 初始SYNC C7時(shí)仍具有其S位222set,但核1當(dāng)其被喚醒時(shí)S位222仍被清除。因此,當(dāng)核 2在解除喚醒事件后寫入SYNC C7時(shí),并非最后核寫入同步C7請求,相反地,核1成為最后 的核寫同步C7請求。
[0185] 當(dāng)核1寫入一具有選擇性喚醒位214為設(shè)置(set)及PG位208為設(shè)置(set)的 SYNC C7時(shí),因核0的同步請求仍正在進(jìn)行(例如,其沒有被核1及核2的喚醒所清除), 而核2(在此例中)已寫入SYNC 14請求,所以該控制單元104阻擋除了核1之外所有核 的喚醒事件,例如,最后寫入核(每一方塊326)。此外,控制單元104僅喚醒核1 (每一方 塊1106)。核1接著發(fā)出I/O讀取總線周期(每一方塊1108),并等待STPCLK確立(每一 方塊1109)。為了響應(yīng)STPCLK,核1發(fā)出停止允許周期(每一方塊1121),并寫入具有等待 STPCLK解除確立的PG位208為設(shè)置(set)的睡眠請求,并進(jìn)入睡眠狀態(tài)且限制功率(每一 方塊1124)。
[0186] 當(dāng)STPCLK被解除確立時(shí),控制單元104僅喚醒核1 (每一方塊1132)。在圖12的 例子中,STPCLK由于一非向中斷而解除確立;因此,微處理器100指示非向中斷至核1,其可 節(jié)省功率。由核1處理非向中斷的周期可持續(xù)相當(dāng)長的時(shí)間,即,僅非向中斷被產(chǎn)生。在此 種方式中,微處理器100可有利地通過指示非向中斷至核102使最近的中斷被指示以節(jié)省 功率,其示于與切換至一不同核相關(guān)圖13的例子中。核1再次解除其它核的喚醒事件(每 一方塊1134)并服務(wù)非向中斷(每一方塊1136)。核1接著再次寫入一具有選擇性喚醒位 214為設(shè)置(set)及PG位208為設(shè)置(set)的SYNC C7,并進(jìn)入睡眠狀態(tài)且限制功率(每 一方塊 1104)。
[0187] 應(yīng)可理解的是,雖然電源管理指令為一 X86MWAIT指令的實(shí)施例已被描述,但其它 同步請求被使用以執(zhí)行電源管理指令的實(shí)施例可以被考慮。舉例來說,微處理器100可執(zhí) 行類似操作以響應(yīng)由一組具有不同C-狀態(tài)相關(guān)的預(yù)設(shè)I/O端口地址的讀取。在舉另一例 子,功率管理指令可由與X86架構(gòu)不同的指令集架構(gòu)得到。
[0188] 多核處理器的動(dòng)杰重新配置
[0189] 微處理器100的每一核102基于微處理器100每一核102的配置產(chǎn)生配置相關(guān)的 值。更佳地說,每一核102的微碼產(chǎn)生、儲存并使用配置相關(guān)的值。實(shí)施例描述配置相關(guān)值 的產(chǎn)生可以是動(dòng)態(tài)且有益的,其描述如下。配置相關(guān)值的例子包括,但不局限于以下內(nèi)容。
[0190] 每一核102產(chǎn)生一與上述圖2相關(guān)的整體核數(shù)量。與僅在核102中駐留晶體406 的核102相關(guān)的核102的本地核數(shù)量256相比,整體核數(shù)量是指與微處理器100所有核102 相關(guān)的整體核102的核數(shù)量。在一實(shí)施例中,核102產(chǎn)生整體核數(shù)量,其整體核數(shù)量為核 102晶體數(shù)量258與每一晶體的核102數(shù)量的乘積及其本地核數(shù)量256的總和,如下所示:
[0191] 整體核數(shù)量=(晶體數(shù)X每一晶體的核數(shù)量)+本地核數(shù)量。
[0192] 每一核102還產(chǎn)生一虛擬核數(shù)量。該虛擬核數(shù)量為整體核數(shù)量減去具有一低于即 時(shí)核102的整體核數(shù)量的整體核數(shù)量的停用核102數(shù)量。因此,在該微處理器100的所有 核102可用的情況下,整體核數(shù)量與虛擬核數(shù)量是相同的。然而,若一或多個(gè)核102停用、 有缺陷時(shí),一核102的虛擬核數(shù)量可能不同于其整體核數(shù)量。在一實(shí)施例中,每一核102填 入其虛擬核數(shù)量至其對應(yīng)的APIC ID暫存器的APIC ID欄位。然而,根據(jù)另一實(shí)施例(例 如,圖22和圖23),則不屬于此種情況。此外,在一實(shí)施例中,操作系統(tǒng)可更新在APIC ID暫 存器中的APIC ID。
[0193] 每個(gè)核102還產(chǎn)生一 BSP旗標(biāo),其指示該核102是否為BSP。在一實(shí)施例中,一般來 說(例如,當(dāng)在圖23中"所有核BSP"的功能停用時(shí))一核102指定本身為引導(dǎo)序列處理器 (Bootstrap Processor, BSP)且每一其它核102指定其本身為一應(yīng)用處理器(Application Processor,AP)。在重設(shè)之后,AP核102進(jìn)行初始化,接著進(jìn)入睡眠狀態(tài)等待BSP通知開始 讀取并執(zhí)行指令。相反地,在AP核102初始化之后,BSP核102立即開始讀取并執(zhí)行系統(tǒng) 固件的指令,例如,BIOS啟動(dòng)碼,其用以初始化系統(tǒng)(例如,驗(yàn)證系統(tǒng)存儲器及周邊設(shè)備是 否正常工作并初始化和/或配置它們)并引導(dǎo)操作系統(tǒng),例如,載入操作系統(tǒng)(例如,從磁 盤中載入),并將控制轉(zhuǎn)移至操作系統(tǒng)。在引導(dǎo)操作系統(tǒng)之前,BSP決定系統(tǒng)配置(例如,核 102或邏輯處理器在系統(tǒng)中的數(shù)量),并將其儲存在存儲器中,以使操作系統(tǒng)可在系統(tǒng)配置 啟動(dòng)后讀取。在操作系統(tǒng)在被引導(dǎo)后,指不AP核102開始讀取并執(zhí)行操作系統(tǒng)指令。在一 實(shí)施例中,一般來說(例如,當(dāng)圖22和圖23中"修改BSP"和"所有核的BSP"的功能,分別 停用時(shí)),一核102若其虛擬核數(shù)量為0時(shí),則指定本身為BSP,而所有其它核102指定本身 為一 AP核102。最佳地,一核102填入其BSP旗標(biāo)相關(guān)配置值至對應(yīng)其APIC的APIC基底 地址暫存器中的BSP旗標(biāo)位。根據(jù)一實(shí)施例中,如上所述,BSP為方塊907及919中的主要 核102,其執(zhí)行圖9的封裝睡眠狀態(tài)握手協(xié)議。
[0194] 每一核102還產(chǎn)生用于填入APIC基底暫存器的一 APIC基值。APIC基底地址基 于核102的APIC ID而產(chǎn)生。在一實(shí)施例中,操作系統(tǒng)可更新在APIC基底地址暫存器中的 APIC基底地址。
[0195] 每一核102還產(chǎn)生一晶體主要指示,其指示該核102是否為包括該核102的晶體 406的主要核102。
[0196] 每一核102還產(chǎn)生一晶片主要指示,其指示該核102是否為包括即時(shí)核102晶片 的主要核,其中假設(shè)該微處理器100被配置有晶片,其詳細(xì)描述如上。
[0197] 每一核102計(jì)算配置相關(guān)值并操作使用該配置相關(guān)值,使得包括微處理器100的 系統(tǒng)正常運(yùn)作。舉例來說,系統(tǒng)基于其相關(guān)的APIC ID指示中斷請求至核102。APIC ID決 定核102應(yīng)響應(yīng)哪個(gè)中斷請求。更具體地說明,每一中斷請求包括一目地識別符,并且一核 102僅當(dāng)目地識別符與核102的APIC ID匹配時(shí)響應(yīng)一中斷請求(或若該中斷請求識別符 為一用以指示其為一請求所有核102的特殊值)。在舉另一例子,每一核102必須知道其是 否為BSP,以使其執(zhí)行初始BIOS碼并引導(dǎo)操作系統(tǒng),且在一實(shí)施例中執(zhí)行如圖9所描述的封 裝睡眠狀態(tài)握手協(xié)議。實(shí)施例描述如下(參閱圖22和23),其中BSP旗標(biāo)和APIC ID可因 特定目的而由其正常的值中作修改,像是用于測試和/或調(diào)試。
[0198] 請參閱圖14,其是顯示微處理器100動(dòng)態(tài)重新配置的流程圖。在圖14的說明中,以 圖4的多晶體微處理器100作為參考,其包括兩個(gè)晶體406和八個(gè)核102。然而,應(yīng)可理解 的是,所描述的動(dòng)態(tài)重新配置可使用具有不同配置的微處理器100,即具有多于兩個(gè)晶體或 單個(gè)晶體,且多或少于八個(gè)核102但至少兩個(gè)核102。此操作是從一單一核的角度所描述, 但微處理器100的每一核102根據(jù)該描述以整體動(dòng)態(tài)地操作并重新配置該微處理器100。 流程開始于方塊1402。
[0199] 在方塊1402中,微處理器100被重置,且微處理器100的硬件基于可用核102的 數(shù)量及駐留于核104的晶體數(shù)量填入合適的值至每一核102的配置暫存器112中。在一實(shí) 施例中,本地核數(shù)量256及晶體數(shù)量258被硬連線(hardwired)。如上所述,硬件可決定是 否由熔斷器114燒斷或未燒斷的狀態(tài)啟用或停用一核102。流程進(jìn)行到方塊1404。
[0200] 在方塊1404中,核102由配置暫存器112中讀取配置字252。核102接著基于在 方塊1402中所讀取的配置字252值產(chǎn)生其相關(guān)值。在多晶體微處理器100配置的情況下, 在方塊1404中所產(chǎn)生的配置相關(guān)值將不考慮其它晶體406的核102。然而,在方塊1414及 1424中(以及圖15中方塊1524)所產(chǎn)生的配置相關(guān)值將考慮其它晶體406的核102,如下 所述。流程進(jìn)行到方塊1406。
[0201] 在方塊1406中,核102使在本地配置暫存器112中的本地核102的致能位254值 被傳播至遠(yuǎn)端晶體406配置暫存器112對應(yīng)的致能位254。舉例來說,請參考圖4的配置, 一在晶體A 406A中的核102使與在晶體A 406A(本地晶體)的配置暫存器112中核A、B、 C及D (本地核)相關(guān)的致能位254被傳播至與在晶體B 406B (遠(yuǎn)端晶體)的配置暫存器 112中核A、B、C及D相關(guān)的致能位254。相反地,一在晶體B 406B中的核102使與在晶體 B 406B (本地晶體)的配置暫存器112中核E、F、G及H(本地核)相關(guān)的致能位254被傳 播至與在晶體A 406A (遠(yuǎn)端晶體)的配置暫存器112中核E、F、G及H相關(guān)的致能位254。 在一實(shí)施例中,核102通過寫入本地配置暫存器112傳播至其它晶體406。更佳地說,通過 核102寫入至本地配置暫存器112使本地配置暫存器沒有發(fā)生改變,但會造成本地控制單 元104傳播本地致能位254值至遠(yuǎn)端晶體406中。流程進(jìn)行至方塊1408。
[0202] 在方塊1408中,核102寫入一同步情況8(在圖8中標(biāo)示為SYNC 8)的同步請求至 其同步暫存器108中。因此,控制單元104令核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到方塊1412。
[0203] 在方塊1412中,當(dāng)在由核集合欄位228指定的核集合中所有可用核102已寫入一 SYNC 8時(shí),控制單元104喚醒核102。值得注意的是,在一多晶體406微處理器100配置的 情況下,同步情況發(fā)生可為一多晶體同步情況發(fā)生。也就是說,控制單元104將等待以喚醒 (或在核102未設(shè)置睡眠位212從而決定不睡眠的情況下中斷)核102,直到在核集合欄位 228(其可以包括在晶體406中的核102)寫入其同步請求為止。流程進(jìn)行到方塊1414。
[0204] 在方塊1414中,核102再次讀取配置暫存器112并基于包括由遠(yuǎn)端晶體所傳送致 能位254的正確值的配置字252新值產(chǎn)生其配置相關(guān)值,流程前進(jìn)到判斷方塊1416。
[0205] 在判斷方塊1416中,核102決定其是否應(yīng)停用其本身。在一實(shí)施例中,熔斷器114 因該微碼在其重置處理中讀?。ㄅ袛喾綁K1416之前),以指示核102應(yīng)停用其本身而被燒 斷,故核102決定其需停用其本身。熔斷器114可在微處理器100的制造期間或之后被燒 斷。在另一實(shí)施例中,更新的熔斷器114值可被掃描至保持暫存器中,如上所述,并且被掃 描的值指示該核102應(yīng)被停用。圖15是描述核102由不同的方式判斷其應(yīng)被停止使用的 另一實(shí)施例。若核102決定其應(yīng)被停用時(shí),流程進(jìn)行到方塊1417 ;否則,流程進(jìn)行到方塊 1418。
[0206] 在方塊1417中,核102寫入停用核位236以使其本身由可用核102的列表中移除, 例如,清除在配置暫存器112的配置字252中其對應(yīng)的致能位254。此后,核102可防止其 本身執(zhí)行任何更多的指令,更佳地通過設(shè)置一或多個(gè)位來以關(guān)閉其時(shí)脈信號,并移除其電 源。流程在方塊1417中結(jié)束。
[0207] 在方塊1418中,核102寫入一同步情況9 (在圖14中標(biāo)示為SYNC 9)的同步請求 至同步暫存器108中。因此,控制單元104令核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到方塊1422。
[0208] 在方塊1422中,當(dāng)所有啟用的核102已寫入一 SYNC 9時(shí),核102由控制單元104 所喚醒。此外,在一多晶體406微處理器100配置的情況下,同步情況發(fā)生基于在配置暫存 器112中的已更新值可能為一晶體同步情況發(fā)生。再者,當(dāng)控制單元104決定一同步情況 是否發(fā)生時(shí),控制單元104將排除考慮在方塊1417中停用其本身的核102。更詳細(xì)地說明, 在一情況中,在未停用其本身的核102在方塊1417中寫入同步暫存器108之前,所有其它 核102 (除了停用其本身的核102之外)寫入一 SYNC 9,接著當(dāng)未停用其本身的核102在 方塊1417中的停用核位設(shè)置寫入同步暫存器108時(shí),控制單元104將偵測同步情況的發(fā)生 (在方塊316中)。當(dāng)控制單元104因停用核102的致能位254為清除的(clear)而決定 同步情況已經(jīng)發(fā)生時(shí),控制單元104不再考慮停用核102。也就是說,由于所有啟用核102, 但不包括停用核102,已經(jīng)寫入SYNC 9,無論停用核102是否已經(jīng)寫入SYNC 9,因此控制單 元104判斷同步情況已經(jīng)發(fā)生。流程進(jìn)行到方塊1424。
[0209] 在方塊1424中,如果一核102由另一核102在方塊1417中的操作而被停用時(shí),核 102再次讀取配置暫存器112,并且配置字252的新值反映了一停用核102。核102則根據(jù) 配置字252的新值再次產(chǎn)生其配置相關(guān)值,其類似于在方塊1414中的方式。一停用核的存 在102可能會造成一些配置相關(guān)值不同于在方塊1414中所產(chǎn)生的新值。例如,如上所述,虛 擬核數(shù)量、APIC ID、BSP旗標(biāo)、BSP基址、主要晶體主要晶片可因停用核102的存在而改變。 下一實(shí)施例中,在產(chǎn)生配置相關(guān)值后,核102其中之一(例如,BSP)將微處理器100所有核 102整體的一些配置相關(guān)值寫入非核專用隨機(jī)存取存儲器116,使其可隨后被所有核102讀 取。舉例來說,在一實(shí)施例中,整體的配置相關(guān)值由核102讀取以執(zhí)行一架構(gòu)指令(例如, X86CPWD指令),其指令請求微處理器100有關(guān)的整體信息,像是微處理器100的核102數(shù) 量。流程進(jìn)行到判斷方塊1426。
[0210] 在方塊1426中,核102移除重置并開始提取架構(gòu)指令。流程結(jié)束于方塊1426。
[0211] 請參閱圖15,其是顯示根據(jù)另一實(shí)施例中微處理器100動(dòng)態(tài)重新配置的流程圖。 在圖15的說明中,以圖4的多晶體微處理器100作為參考,其包括兩個(gè)晶體406和八個(gè)核 102。然而,應(yīng)可理解的是,所描述的動(dòng)態(tài)重新配置可使用具有不同配置的微處理器100,即 具有多于兩個(gè)晶體或單個(gè)晶體,且多或少于八個(gè)核102但至少兩個(gè)核102。此操作是從一單 一核的角度所描述,但微處理器100的每一核102根據(jù)該描述以整體動(dòng)態(tài)地操作并重新配 置該微處理器100。更具體地說明,圖15描述了一核102遇到核停用指令的操作,其流程開 始于方塊1502,而另一核102操作,其操作流程開始于方塊1532。
[0212] 在方塊1502中,核102其中之一遇到一用以指示核102停用其本身的指令。在一 實(shí)施例中,該指令為一 X86WRMSR指令。作為響應(yīng),核102傳送一重新配置信息至其它核102 并傳送其一核間中斷信號。更佳地說,在時(shí)間中斷被停用的期間內(nèi)(例如,該微碼不允許其 自身被中斷),核102阻止微碼以響應(yīng)該指令,以停用其本身(在方塊1502中),或響應(yīng)該 中斷(在方塊1532中),并維持在微碼中,直到方塊1526為止。流程由方塊1502進(jìn)行到方 塊 1504。
[0213] 在方塊1532中,其它核102其中之一(例如,除了在方塊1502中遇到停用指令的 核102之外的核)由于在方塊1502中所傳送的核間中斷而被中斷并接收重新配置信息。 如上所述,雖然在方塊1532中的流程由一單一核102的角度所描述,但每一其它核102 (例 如,并非在方塊1502中的核102)在方塊1532中被中斷并接收該信息且執(zhí)行方塊1504至 1526中的步驟。流程由方塊1532進(jìn)行到方塊1504。
[0214] 在方塊1504中,核102寫入一同步請況10 (在圖15中標(biāo)示為SYNC 10)的同步請 求至其同步暫存器108中。因此,控制單元104令核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到方塊 1506。
[0215] 在方塊1506中,當(dāng)所有可用核102已寫入一 SYNC 10時(shí),核102由控制單元102所 喚醒。值得注意的是,在一多晶體406微處理器100配置的情況下,同步情況發(fā)生可為一多 晶體同步情況發(fā)生。也就是說,控制單元104將等待以喚醒(或在核102尚未決定進(jìn)入睡 眠狀態(tài)的情況下中斷)核102,直到在核集合欄位228 (其可以包括在晶體406中的核102) 所指定且可啟用(其由致能位所指示)的核102寫入其同步請求為止。流程進(jìn)行到判斷方 塊 1508。
[0216] 在判斷方塊1508中,核102判斷其是否為一在方塊1502中被指示以停用其本身 的核102。若是,流程進(jìn)行到方塊1517 ;否則,流程進(jìn)行到方塊1518。
[0217] 在方塊1517中,核102寫入停用核位236以使其本身由可用核102的列表中移除, 例如,清除在配置暫存器112的配置字252中其對應(yīng)的致能位254。此后,核102可防止其 本身執(zhí)行任何更多的指令,更佳地通過設(shè)置一或多個(gè)位來以關(guān)閉其時(shí)脈信號,并移除其電 源。流程在方塊1517中結(jié)束。
[0218] 在方塊1518中,核102寫入一同步情況11(在圖15中標(biāo)示為SYNC 11)的同步 請求至同步暫存器108中。因此,控制單元104令核102進(jìn)入睡眠狀態(tài)。流程進(jìn)行到方塊 1522。
[0219] 在方塊1522中,當(dāng)所有啟用的核102已寫入一 SYNC 11時(shí),核102由控制單元104 所喚醒。此外,在一多晶體406微處理器100配置的情況下,同步情況發(fā)生基于在配置暫存 器112中的已更新值可能為一多晶體同步情況發(fā)生。再者,當(dāng)控制單元104決定一同步情 況是否發(fā)生時(shí),控制單元104將排除考慮在方塊1517中停用其本身的核102。更詳細(xì)地說 明,在一情況中,在未停用其本身的核102在方塊1517中寫入同步暫存器108之前,所有其 它核1〇2(除了停用其本身的核102之外)寫入一 SYNC 11,接著當(dāng)因停用核102的致能位 254為清除的(clear)而決定同步情況是否已經(jīng)發(fā)生時(shí),因控制單元104不再考慮停用核 102,因此當(dāng)未停用其本身的核102在方塊1517中寫入同步暫存器108時(shí),控制單元104將 偵測同步情況的發(fā)生(在方塊316中)(請參閱圖16)。也就是說,由于所有啟用核102已 寫入一 SYNC 11,無論停用核102是否已寫入SYNC 11,控制單元104則判斷同步情況已經(jīng) 發(fā)生。流程進(jìn)行到方塊1524。
[0220] 在方塊1524中,核102讀取配置暫存器112,其配置字252將反映在方塊1517中 被停用的停用核102。該核102根據(jù)配置字252的新值接著產(chǎn)生其配置相關(guān)的值。更佳地 說,在方塊1502中停用指令由系統(tǒng)固件(例如,BIOS設(shè)置)所執(zhí)行,以及在核102停用后, 系統(tǒng)固件執(zhí)行系統(tǒng)的重新啟動(dòng),例如,在方塊1526中之后。在重新啟動(dòng)期間內(nèi),微處理器 100可以進(jìn)行不同于在方塊1524中先前配置相關(guān)值產(chǎn)生的操作。舉例來說,在重新啟動(dòng)期 間內(nèi)BSP可為一不同于產(chǎn)生配置相關(guān)值前的核102。再舉另一例子說明,在引導(dǎo)操作系統(tǒng)之 前由BSP所決定與儲存至存儲器以使操作系統(tǒng)能讀取的該系統(tǒng)配置信息(例如,在系統(tǒng)中 核102及邏輯處理器的數(shù)量)可不相同。舉另一例子說明,仍使用的核102的APIC ID不 同于產(chǎn)生配置相關(guān)值前的APIC ID,在此情況下,操作系統(tǒng)將指示中斷請求且核102將響應(yīng) 不同于先前配置相關(guān)值產(chǎn)生的中斷請求。再舉另一例子說明,在方塊907及919中執(zhí)行圖 9封裝睡眠狀態(tài)握手協(xié)議的主要核102可為一不同于先前配置相關(guān)值產(chǎn)生的核102。流程 進(jìn)行到判斷方塊1526。
[0221] 在方塊1526中,核102在方塊1526中被中斷之前恢復(fù)其執(zhí)行的任務(wù)。流程結(jié)束 于方塊1526。
[0222] 在本文中所描述動(dòng)態(tài)地重新配置微處理器100可用于在各種應(yīng)用中。舉例來說, 動(dòng)態(tài)重新配置可在微處理器100的開發(fā)過程用于測試和/或模擬,和/或用于現(xiàn)場測試中。 另外,一使用者可能想知道僅使用一核102子集運(yùn)行一特定的應(yīng)用程序時(shí)系統(tǒng)的性能和/ 或功率消耗的總量。在一實(shí)施例中,在一核102被停用時(shí),其可使其時(shí)脈停止及/或移除電 源,以使其基本上沒有消耗電源。此外,在高可靠性的系統(tǒng)中,每一核102可周期性地檢查 其它核102及核102所選擇的特定核102是否發(fā)生故障,未故障的核可停用故障的核102 并使剩余的核102執(zhí)行如上描述的動(dòng)態(tài)重新配置。在此一實(shí)施例中,控制字202可包括一 附加欄位,其使寫入核102指定該核102被停用并且修改在圖15中所描述的操作使得一核 在方塊1517中可停用一不同于核102本身的核102。
[0223] 請參閱圖16,其是顯示根據(jù)圖15流程圖的微處理器100操作一例子的時(shí)序圖。在 此例子中,微處理器100配置具有三個(gè)核102,標(biāo)示為核0、核1和核2,如圖所示。然而,應(yīng) 可理解的是,在其它實(shí)施例中,微處理器100可包括不同數(shù)量的核102且可為單一晶體或多 晶體微處理器100。在此時(shí)序圖中,事件的時(shí)序向下前進(jìn)。
[0224] 核1遇到一停用其本身的指令并作為響應(yīng)傳送一重新配置信息且中斷核0和核 2 (每一方塊1502)。核1接著寫入SYNC 10并進(jìn)入睡眠狀態(tài)(每一方塊1504)。
[0225] 每一核0和核2最終從其目前的任務(wù)中被中斷并閱讀該信息(每一方塊1532)。 作為響應(yīng),每一核〇和核2的寫入SYNC 10并進(jìn)入睡眠狀態(tài)(每一方塊1504)。如圖所示, 每一核的寫入同SYNC 10的時(shí)間可能不同。舉例來說,由于該指令的延遲,因此該指令當(dāng)中 斷被確立時(shí)而執(zhí)行。
[0226] 當(dāng)所有核102寫入SYNC 10時(shí),控制單元104同時(shí)喚醒所有核(每一方塊1506)。 核〇及核2接著決定其不會停用其本身(每一判斷方塊1508),并寫入一 SYNC 11并進(jìn)入睡 眠狀態(tài)(每一方塊1518)。然而,因核1決定其停用其本身,所以其寫入其停用核位236 (每 一方塊1517)。在此例子中,核1在核0及核2寫入各自的SYNC 11后寫入其停用核位236, 如圖所示。然而,由于控制單元104決定S位222對于每一致能位254被設(shè)置的核102而 設(shè)置,因此控制單元104偵測該同步情況發(fā)生。也就是說,即使核1的S位222未設(shè)置,其 致能位254在方塊1517核1的同步暫存器108寫入時(shí)被清除。
[0227] 當(dāng)所有可用核已寫入SYNC 11時(shí),控制單元104同時(shí)喚醒所有核(每一方塊 1522)。如上所述,在一個(gè)多晶體微處理器100的情況下,當(dāng)核1寫入其停用核位236,并且本 地控制單元104分別清除核1的本地致能位254,本地控制單元104也傳播本地致能位254 至遠(yuǎn)端晶體406。因此,遠(yuǎn)端控制單元104也偵測同步狀態(tài)的發(fā)生且同時(shí)喚醒其晶體406所 有可用的核。核〇和核2基于已更新配置暫存器112的值接著產(chǎn)生其配置相關(guān)值(每一方 塊1524),并恢復(fù)其中斷前的活動(dòng)(每一方塊1526)。
[0228] 硬件信號量(HARDWARE SEMAPHORE)
[0229] 請參考圖17,其是顯示在圖1中硬件信號量118的一方塊圖。硬件信號量118包 括一擁有位(owned bit) 1702、所有者位(owner bit) 1704及一狀態(tài)機(jī)1706,其狀態(tài)機(jī)1706 用以更新?lián)碛形?702及所有者位1704以響應(yīng)由核102讀取及寫入的硬件信號量118。更 佳地說,為了辨識核目前擁有的硬件信號量118,所有者位1704的數(shù)量為log以2為底的微 處理器100配置的核102數(shù)量。在另一實(shí)施例中,所有者位1704包括微處理器100每一核 102 -對應(yīng)的位。值得注意的是,盡管一組擁有位1702、所有者位1704及狀態(tài)機(jī)1706被描 述以一硬件信號量118實(shí)現(xiàn),但微處理器100可包括多個(gè)硬件信號量118,其中每一硬件信 號量118都包括上述的一套硬件。更佳地說,為了執(zhí)行需要獨(dú)占讀取共享資源的操作,在每 一核102中運(yùn)行的微碼讀取并寫入該硬件信號量118以取得一由核102所共享資源的所有 權(quán),其詳細(xì)描述于下方的例子中。該微碼可將每一多個(gè)硬件信號量118與微處理器100不 同的共享資源所有權(quán)聯(lián)系在一起。更佳地說,硬件信號量118通過核102在核102的一非 架構(gòu)地址空間內(nèi)一預(yù)設(shè)地址中所讀取及寫入。該非架構(gòu)地址空間僅可由一核102的微碼所 讀取,但無法直接由使用者程序碼讀?。ɡ纾瑇86架構(gòu)的程序指令)。用以更新硬件信號 量118的擁有位1702及所有者位1704的狀態(tài)機(jī)1706操作被描述如圖18及19中,并且硬 件信號量118的使用也在之后描述。
[0230] 請參閱圖18,其是顯示當(dāng)一核102讀取硬件信號量118的操作流程圖。流程開始 于方塊1802。
[0231] 在方塊1802中,一核102,標(biāo)示為核X,讀取硬件信號量118。如上所述,更佳地說, 核102的微碼讀取該硬件信號量118所駐留在非架構(gòu)地址空間內(nèi)的預(yù)定地址。流程進(jìn)行到 判斷方塊1804。
[0232] 在判斷方塊1804中,狀態(tài)機(jī)1706檢查該所有者位1704,以決定核102是否為硬件 信號量118的所有者。若是,則流程進(jìn)行到方塊1808 ;否則,流程進(jìn)行到方塊1806。
[0233] 在方塊1806中,該硬件信號量118返回并讀取核102中的一零值以指示該核102 不擁有硬件信號量118,流程在方塊1806中結(jié)束。
[0234] 在方塊1808,該硬件信號量118返回并讀取核102中的一值,以指示該核102擁有 硬件信號量118,流程在方塊1808中結(jié)束。
[0235] 如上所述,微處理器100可包括多個(gè)硬件信號量118。在一實(shí)施例中,微處理器100 包括16個(gè)硬件信號量118,并且當(dāng)一核102讀取預(yù)定地址時(shí),其接收一 16位數(shù)據(jù)值,其每一 位對應(yīng)16個(gè)硬件信號量118其中之一不同的硬件信號量118,并指示該讀取預(yù)定地址的核 102是否擁有對應(yīng)的硬件信號量118。
[0236] 請參閱圖19,其是顯示當(dāng)一核102寫入硬件信號量118的操作流程圖。流程開始 于方塊1902。
[0237] 在方塊1902中,一核102,標(biāo)示為核X,寫入硬件信號量118,例如,如上所述的在非 架構(gòu)的預(yù)設(shè)地址。流程進(jìn)行到判斷方塊1804。
[0238] 在判斷方塊1904中,狀態(tài)機(jī)1706檢查該擁有位1702,以決定硬件信號量118是 否為任一核102所擁有或未被占有(free)。若已被擁有,則流程進(jìn)行到判斷方塊1914 ;否 貝1J,流程進(jìn)行到判斷方塊1906。
[0239] 在判斷方塊1906中,狀態(tài)機(jī)1706檢查寫入的值。若該值為1,其表示核102欲獲 取硬件信號量118的所有權(quán),則流程前進(jìn)到方塊1908。然而,若該值為0,其表示核102欲 放棄硬件信號量118的所有權(quán),則流程進(jìn)行到方塊1912。
[0240] 在方塊1908中,狀態(tài)機(jī)1706更新?lián)碛形?702至1,并設(shè)置所有者位1704指示核 X現(xiàn)在擁有的硬件信號量118。流程在方塊1908中結(jié)束。
[0241] 在方塊1912中,該狀態(tài)機(jī)1706未執(zhí)行擁有位1702的更新,也未執(zhí)行所有者位 1704的更新,流程結(jié)束于方塊1912中。
[0242] 在判斷方塊1914中,狀態(tài)機(jī)1706檢查該所有者位1704,以決定核x是否為硬件信 號量118的所有者。若是,則流程進(jìn)行到判斷方塊1916 ;否則,流程進(jìn)行到方塊1912。
[0243] 在判斷方塊1916中,狀態(tài)機(jī)1706檢查所寫入的值。如果該值為1,其表示該核102 欲獲取硬件信號量118的所有權(quán),則流程前進(jìn)到方塊1912(其中因此核102已擁有硬件信 號量118,所以未有更新發(fā)生,如判斷方塊1914中所判斷)。然而,若該值為0,其表示該核 102欲放棄硬件信號量118的所有權(quán),則流程進(jìn)行到方塊1918。
[0244] 在方塊1918中,該狀態(tài)機(jī)1706更新?lián)碛形?702為零,以表示現(xiàn)在未有核102擁 有硬件信號量118,流程結(jié)束于方塊1918。
[0245] 如上所述,在一實(shí)施例中,微處理器100包括16個(gè)硬件信號量118。當(dāng)一核102寫 入該預(yù)定地址時(shí),其寫入一 16位數(shù)據(jù)值,其每一位對應(yīng)16個(gè)硬件信號量118其中之一不同 的硬件信號量118,并指示該寫入預(yù)定地址的核102是否請求擁有(值為1)或放棄對應(yīng)硬 件信號量118的所有權(quán)(值為零)。
[0246] 在一實(shí)施例中,仲裁邏輯仲裁由核102所請求存取該硬件信號量118,以使核102 由硬件信號量118序列化(Serialize)讀取/寫入硬件信號量118。在一實(shí)施例中,仲裁邏 輯在核102間使用一循環(huán)控制公平演算法(Round-Robin Fairness Algorithm)以存取硬 件信號量118。
[0247] 請參閱圖20,其是顯示當(dāng)微處理器100使用硬件信號量118以執(zhí)行需一資源獨(dú)占 所有權(quán)的操作流程圖。更具體地說明,硬件信號量118用以在兩或多個(gè)核102已分別遇到 一寫回且使共享高速緩沖存儲器119失效指令的情況下確保在某一時(shí)間僅一核102執(zhí)行一 寫回,并使共享高速緩沖存儲器119失效。該操作是以一單一核的角度所描述,但微處理器 100的每一核102根據(jù)本發(fā)明以整體確保一核102執(zhí)行寫回且使其它核102的操作無效。 也就是說,圖20的操作確保WBINVD指令過程被序列化(Serialize)。在一實(shí)施例中,圖20 的操作可在一微處理器100中執(zhí)行,其根據(jù)圖7A?7B中的實(shí)施例執(zhí)行一 WBINVD指令。流 程開始于方塊2002。
[0248] 在方塊2002中,一核102遇到一高速緩沖控制指令,像是一 WBINVD指令。流程進(jìn) 行到方塊2004。
[0249] 在方塊2004中,核102寫入1至WBINVD硬件信號量118中。在一實(shí)施例中,該微 碼已分配硬件信號量118其中之一至WBINVD操作中。該核102接著讀取WBINVD硬件信號 量118以決定其是否獲得所有權(quán)。流程進(jìn)行到判斷方塊2006。
[0250] 在判斷方塊2006中,若核102決定其取得WBINVD硬件信號量118的所有權(quán)時(shí),則 流程進(jìn)行到方塊2008 ;否則,流程返回至方塊2004以再次嘗試獲取所有權(quán)。應(yīng)注意的是當(dāng) 即時(shí)核102的微碼經(jīng)由方塊2004至2006間循環(huán),其最終會由擁有WBINVD硬件信號量118 的核102所中斷,因?yàn)樵摵?02正于圖7A?7B中方塊702中執(zhí)行WBINVD指令并且傳送一 中斷至即時(shí)核102。更佳地說,經(jīng)由每次循環(huán),即時(shí)核102的微碼檢查中斷狀態(tài)暫存器,以觀 察其它核102其中之一(例如,擁有該WBINVD硬件信號量118的核102)是否發(fā)送一中斷 至即時(shí)核102。該即時(shí)核102接著將執(zhí)行圖7A?7B的操作,并在方塊749中根據(jù)圖20恢 復(fù)操作以試圖獲得硬件信號量118的所有權(quán),以執(zhí)行其WBINVD指令。
[0251] 在方塊2008中,核102已獲得所有權(quán)且流程進(jìn)行到圖7A?7B中的方塊702以執(zhí) 行WBINVD指令。由于部分的WBINVD指令操作,在圖7A?7B方塊748中,該核102寫入零 至WBINVD硬件信號量118中以放棄其所有權(quán)。流程結(jié)束于方塊2008。
[0252] -類似于圖20所描述的操作可由該微碼執(zhí)行,以獲得的其它共享資源獨(dú)占的所 有權(quán)。一核102可獲得通過使用一硬件信號量118所使用的獨(dú)占所有權(quán)的其它資源為非核 103的暫存器,其由核102所共享。在一實(shí)施例中,非核103暫存器包括一控制暫存器,其包 括每一核102各自的欄位。該欄位控制各個(gè)核102的操作方面。由于欄位位于相同的暫存 器中,當(dāng)一核102欲更新其各自的欄位但無法更新其它核102的欄位時(shí),該核102必須讀取 該控制暫存器、修改所讀取的值,接著寫回已修改的值至控制暫存器。舉例來說,微處理器 100可以包括一非核103性能控制暫存器(Performance Control Register, PCR),其用于 控制核102的總線時(shí)脈比。為了更新其總線時(shí)脈比,一特定的核102必須讀取、修改并寫回 PCR。因此,在一實(shí)施例中,微碼被配置為當(dāng)核102擁有與PCR相關(guān)的硬件信號量118時(shí),執(zhí) 行一 PCR的有效原子讀取/修改/寫回??偩€時(shí)脈比經(jīng)由一外部總線決定單一核102時(shí)脈 頻率為該支持微處理器100的時(shí)脈頻率的倍數(shù)。
[0253] 另一資源是一可信賴平臺模組(Trusted Platform Module,TPM)。在一實(shí)施例中, 微處理器100執(zhí)行運(yùn)作在核102中微碼的一可信賴平臺模組。在一給定的即時(shí)時(shí)間中,運(yùn) 行在一核102及核102其中之一的微碼實(shí)施TPM。然而,實(shí)施TPM的核102可能隨時(shí)間而改 變。通過使用與TPM相關(guān)聯(lián)的硬件信號量118,核102的微碼可確保僅一核102在一時(shí)間實(shí) 施TPM。更具體地說明,目前正執(zhí)行TPM的核102在放棄實(shí)施該TPM之前寫入TPM狀態(tài)至專 用隨機(jī)存取存儲器116,并且該接管實(shí)施TPM的核102從專用隨機(jī)存取存儲器116中讀取 TPM的狀態(tài)。在每一核102的微碼被配置為使當(dāng)核102欲成為執(zhí)行TPM的核102時(shí),核102 在由專用隨機(jī)存取存儲器116中讀取TPM狀態(tài)之前首先取得TPM硬件信號量118的所有 權(quán),并開始執(zhí)行TPM。在一實(shí)施例中,TPM大致符合由可信賴運(yùn)算組織(Trusted Computing Group)所發(fā)布的TPM規(guī)范,像是IS0/IEC11889規(guī)范。
[0254] 如上所述,傳統(tǒng)對多個(gè)處理器之間資源競爭的解決方法是采用在系統(tǒng)存儲器中的 軟件信號量(software semaphore)。本文所描述的硬件信號量118的潛在優(yōu)點(diǎn)是其可避免 在額外存儲器總線上額外傳輸量的產(chǎn)生,并且其存取速度快于存取系統(tǒng)的存儲器。
[0255] 中斷、與t睡目民同步請求
[0256] 請參閱圖21,其是顯示根據(jù)圖3流程圖的核102發(fā)出非睡眠同步請求操作一例子 的時(shí)序圖。在此例子中,微處理器100配置具有三個(gè)核102,標(biāo)示為核0、核1和核2,如圖所 示。然而,應(yīng)可理解的是,在其它實(shí)施例中,該微處理器100可包括不同數(shù)量的核102。
[0257] 核0寫入一 SYNC 14,其不被設(shè)置于睡眠位212中,也非設(shè)置于選擇性喚醒位 214(例如,一非睡眠同步請求)中。因此,控制單元104允許核0保持運(yùn)行(每一判斷方塊 312的分支"否")。
[0258] 核1最終也寫入一非睡眠 SYNC 14且控制單元104允許核1保持運(yùn)行。最后,核 2寫入一非睡眠 SYNC 14。如圖所不,每一核寫入SYNC 14的時(shí)間可能不同。
[0259] 當(dāng)所有核已寫入非睡眠同步14時(shí),控制單元104同時(shí)發(fā)送一同步中斷至每一核0、 核1及核2。每一核接著接收同步中斷并服務(wù)同步中斷(除非該同步中斷被遮蔽,在這種情 況下,該微碼一般會輪詢(poll)該同步中斷)。
[0260] 導(dǎo)引處理器的指定
[0261] 在一實(shí)施例中,如上所述,通常(例如,當(dāng)圖23"所有核BSP"的功能被停用時(shí))一 核102指定本身為引導(dǎo)處理器(BSP)并執(zhí)行指定的任務(wù),像是引導(dǎo)工作系統(tǒng)。在一實(shí)施例 中,通常(例如,當(dāng)圖22及23 "修改BSP"及"所有核BSP"的功能分別被停用時(shí))虛擬核 的數(shù)量由核102BSP預(yù)設(shè)為0。
[0262] 然而,本發(fā)明人已經(jīng)觀察到BSP以一不同的方式被指定有可能是有利的,實(shí)施例 將在下面進(jìn)行描述。例如,部分微處理器100的許多測試,特別是在制造測試中,是由引導(dǎo) 操作系統(tǒng)和運(yùn)行程序碼來執(zhí)行,以確保該部分微處理器100正常進(jìn)行工作。因 BSP核102執(zhí) 行系統(tǒng)初始化并啟動(dòng)該操作系統(tǒng),因此BSP核102可以AP核無法運(yùn)行的方式運(yùn)行。此外, 由觀察可知,即使是在多執(zhí)行緒(Multithreaded)的操作環(huán)境中,BSP通常較AP負(fù)擔(dān)該處 理負(fù)荷較大的部分,因此,AP核102無法與BSP核102 -樣作全面的測試。最后,可能有某 些動(dòng)作其僅需由該BSP核102代表微處理器100作為一整體來執(zhí)行,像是如圖9描述的封 裝睡眠狀態(tài)握手協(xié)議。
[0263] 因此,實(shí)施例描述任一核102可被指定為BSP。在一實(shí)施例中,在微處理器100的 測試期間內(nèi),運(yùn)行測試N次,其中N為微處理器100核102的數(shù)量,并在測試的每一個(gè)運(yùn)行 中微處理器100被重新配置以使BSP為不同的核102。這在制造過程中可以有利地提供更 好的測試覆蓋率,并且也有利地在微處理器100的設(shè)計(jì)過程中揭露在微處理器100中的錯(cuò) 誤。另一優(yōu)點(diǎn)是在不同的運(yùn)行中每一核102可具有一不同的APIC ID,從而響應(yīng)不同的中斷 請求,其可提供更廣泛的測試覆蓋率。
[0264] 請參閱圖22,其是顯示配置微處理器100的一程序流程圖。在圖22的描述參考圖 4中的多晶體微處理器100,其包括兩個(gè)晶體406和八個(gè)核102。然而,應(yīng)可理解的是,描述 于此的動(dòng)態(tài)重新配置可使用具有不同配置的一微處理器100,即具有多于兩個(gè)晶體或單個(gè) 晶體,且多或少于八個(gè)核102但至少兩個(gè)核102。此操作是從一單一核的角度所描述,但微 處理器100的每一核102根據(jù)該描述以整體動(dòng)態(tài)地操作并重新配置該微處理器100。流程 開始于方塊2202。
[0265] 在方塊2202中,微處理器100被重置,并執(zhí)行其初始化的初始部分,更佳地一方式 其類似于上面圖14所描述的方式。然而,配置相關(guān)值的產(chǎn)生,像是圖14中的方塊1424,尤 其是該APIC ID和BSP旗標(biāo),以方塊2203至2204中所描述的方式執(zhí)行。流程進(jìn)行到方塊 2203。
[0266] 在方塊2203中,核102產(chǎn)生其虛擬核數(shù)量,更佳地描述于圖14中。流程進(jìn)行到判 斷方塊2204。
[0267] 在判斷方塊2204中,核102取樣一指示以決定一功能是否可啟用。該功能在本 文中稱為"修改BSP"功能。在一實(shí)施例中,燒斷一熔斷器114可修改BSP的功能。更佳地 說,在測試過程中,并非燒斷修改BSP功能的熔斷器114,而是一真值(True)被掃描至與修 改BSP功能熔斷器114相關(guān)的保存暫存器位中,如上述圖1中所示,以使該修改BSP功能可 啟用。在此方式中,該修改BSP功能在部分微處理器100中并非永久可啟用,但卻在供電 (power-up)后停用。更佳地說,在方塊2203至2214中的操作由核102的微碼所執(zhí)行。若 該修改BSP功能被啟用時(shí),流程進(jìn)行到方塊2205。否則,流程進(jìn)行到方塊2206。
[0268] 在方塊2205中,核102修改在方塊2203中所產(chǎn)生的虛擬核數(shù)量。在一實(shí)施例 中,核102修改虛擬核數(shù)量以產(chǎn)生在方塊2203中所產(chǎn)生虛擬核數(shù)量的一循環(huán)函數(shù)(Rotate function)的結(jié)果及一循環(huán)量,如下所示:
[0269] 虛擬核數(shù)量=循環(huán)(循環(huán)量,虛擬核數(shù)量)。
[0270] 循環(huán)函數(shù),在一個(gè)實(shí)施例中,通過循環(huán)數(shù)在核102之間循環(huán)虛擬核數(shù)。循環(huán)量為燒 斷熔斷器114的一值,或更佳地說,其在測試過程中被掃描至保持暫存器中。表1顯示每一 核102的虛擬核數(shù),其序?qū)Γňw數(shù)量258、本地核數(shù)量256)是顯示在一示范配置的左側(cè) 行中,而每一循環(huán)量是顯示在頂行中,其晶體數(shù)量406為二且每一晶體406的核102數(shù)量為 4,以及所有核102可被啟用。在此種方式中,測試器被授權(quán)使核102產(chǎn)生其虛擬核數(shù)、及例 如任何有效值的APIC ID。雖然用于修改虛擬核數(shù)描述于的一實(shí)施例中,但其它實(shí)施例也可 被預(yù)期。例如,循環(huán)方向可以相反表示于表格1中。流程進(jìn)行到方塊2206。
[0271] 表 1
【權(quán)利要求】
1. 一微處理器,其特征在于,包括: 多個(gè)處理核; 一服務(wù)處理單元;以及 一存儲器,其由上述服務(wù)處理單元及上述多個(gè)處理核所存取, 其中上述多個(gè)處理核的至少一處理核被配置為將一修補(bǔ)寫入上述存儲器,其中上述修 補(bǔ)包括一或多個(gè)指令,以在上述存儲器從上述至少一處理核寫入后,從上述存儲器中提取 并由上述服務(wù)處理單元執(zhí)行。
2. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,上述多個(gè)處理核具有一指令級架構(gòu), 其中上述服務(wù)處理單元不為架構(gòu)上可見以執(zhí)行上述多個(gè)處理核的上述指令級架構(gòu)的指令, 其中上述服務(wù)處理單元執(zhí)行用以調(diào)試上述微處理器的操作。
3. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括: 一第二存儲器,被配置為保存指令以使上述服務(wù)處理單元從上述第二存儲器中提取并 執(zhí)行,其中上述第二存儲器是一只讀存儲器。
4. 根據(jù)權(quán)利要求3所述的微處理器,其特征在于,還包括 一暫存器,被配置為儲存一地址,其中上述暫存器由上述多個(gè)處理核的上述至少一處 理核所寫入, 其中在上述服務(wù)處理核重置之后,從在上述暫存器的上述地址中的上述第一存儲器或 上述第二存儲器提取并執(zhí)行其第一指令。
5. 根據(jù)權(quán)利要求3所述的微處理器,其特征在于,上述存儲器還被配置為保存所有多 個(gè)處理核所執(zhí)行微碼讀取及寫入的數(shù)據(jù)。
6. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括: 一高速緩沖存儲器,由上述多個(gè)處理核共享, 其中上述服務(wù)處理單元被配置為寫入一控制暫存器以停止上述多個(gè)處理核的一或多 個(gè)處理核發(fā)出請求到上述高速緩沖存儲器。
7. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括: 一高速緩沖存儲器,由上述多個(gè)處理核共享, 其中上述服務(wù)處理單元被配置為寫入一控制暫存器,以停止上述高速緩沖存儲器確認(rèn) 從上述多個(gè)處理核產(chǎn)生至上述高速緩沖存儲器的請求。
8. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括: 一高速緩沖存儲器,由上述多個(gè)處理核共享, 其中上述服務(wù)處理單元被配置為寫入一控制暫存器以重新估算上述高速緩沖存儲器。
9. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括: 一總線接口,被配置為作為上述微處理器與上述微處理器外部的一系統(tǒng)總線的接口, 其中上述服務(wù)處理單元被配置為寫入一控制暫存器以控制上述總線接口在上述系統(tǒng) 總線中執(zhí)行處理。
10. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于,還包括: 一可編程中斷控制器,用以控制中斷請求至上述微處理器, 其中上述服務(wù)處理單元被配置為寫入一控制暫存器以控制上述可編程中斷控制器評 估一輸入/輸出裝置至上述多個(gè)處理核。
11. 根據(jù)權(quán)利要求1所述的微處理器,其特征在于, 上述多個(gè)處理核的每一處理核包括多個(gè)函數(shù)單元;以及 上述服務(wù)處理單元被配置為寫入一控制暫存器以配置上述多個(gè)處理核中一或多個(gè)上 述多個(gè)函數(shù)單元的一性能特征,其中上述性能特征為如下一或多個(gè)性能特征:一分支預(yù)測 演算法及一數(shù)據(jù)預(yù)提取演算法。
12. -種由微處理器所執(zhí)行的方法,其特征在于,上述微處理器具有多個(gè)處理核、一服 務(wù)處理單元及由上述服務(wù)處理單元及上述多個(gè)處理核所存取的一存儲器,上述方法包括: 由上述多個(gè)處理核的至少一處理核將一修補(bǔ)寫入上述存儲器,其中上述修補(bǔ)包括一或 多個(gè)指令; 在由上述至少一處理核將上述修補(bǔ)寫入上述存儲器后,由上述服務(wù)處理單元從上述存 儲器中提取上述修補(bǔ)的一或多個(gè)指令;以及 由上述服務(wù)處理單元執(zhí)行上述修補(bǔ)的上述提取指令。
13. 根據(jù)權(quán)利要求12所述的方法,其特征在于,上述多個(gè)處理核具有一指令級架構(gòu),其 中上述服務(wù)處理單元不為架構(gòu)上可見以執(zhí)行上述多個(gè)處理核的上述指令級架構(gòu)的指令,上 述服務(wù)處理單元執(zhí)行用以調(diào)試上述微處理器的操作。
14. 根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括: 由上述多個(gè)處理核的每一處理核執(zhí)行微碼讀取或?qū)懭霐?shù)據(jù)至上述存儲器。
15. 根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括: 由上述服務(wù)處理單元寫入一控制暫存器以停止上述多個(gè)處理核的一或多個(gè)處理核發(fā) 出請求到上述微處理器的一高速緩沖存儲器,其中上述高速緩沖存儲器由上述多個(gè)處理核 共享。
16. 根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括: 由上述服務(wù)處理單元寫入一控制暫存器以停止上述微處理器的一高速緩沖存儲器確 認(rèn)由上述多個(gè)處理核產(chǎn)生至上述高速緩沖存儲器的請求,其中上述高速緩沖存儲器由上述 多個(gè)處理核共享。
17. 根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括: 由上述服務(wù)處理單元寫入一控制暫存器以重新估算上述微處理器的一高速緩沖存儲 器,其中上述高速緩沖存儲器由上述多個(gè)處理核共享。
18. 根據(jù)權(quán)利要求12所述的方法,其特征在于,上述微處理器還包括一總線接口,該總 線接口作為上述微處理器與上述微處理器外部的一系統(tǒng)總線的接口,上述方法還包括: 由上述服務(wù)處理單元寫入一控制暫存器以控制上述總線接口在上述系統(tǒng)總線中執(zhí)行 處理。
19. 根據(jù)權(quán)利要求12所述的方法,其特征在于,上述微處理器還包括一可編程中斷控 制器,用以控制中斷請求至上述微處理器,上述方法還包括: 由上述服務(wù)處理單元寫入一控制暫存器以控制上述可編程中斷控制器評估一輸入/ 輸出裝置至上述多個(gè)處理核。
20. 根據(jù)權(quán)利要求12所述的方法,其特征在于,上述多個(gè)處理核的每一處理核包括多 個(gè)函數(shù)單元,上述方法還包括: 由上述服務(wù)處理單元寫入一控制暫存器以配置上述多個(gè)處理核中一或多個(gè)上述多個(gè) 函數(shù)單元的一性能特征,其中上述性能特征為如下一或多個(gè)性能特征:一分支預(yù)測演算法 及一數(shù)據(jù)預(yù)提取演算法。
【文檔編號】G06F15/163GK104239273SQ201410431656
【公開日】2014年12月24日 申請日期:2014年8月28日 優(yōu)先權(quán)日:2013年8月28日
【發(fā)明者】G·葛蘭·亨利, 史蒂芬·嘉斯金斯 申請人:威盛電子股份有限公司