微處理器及在微處理器的處理核間同步的方法
【專利摘要】本發(fā)明提供一種微處理器及在微處理器的處理核間同步的方法。上述一微處理器包括多個處理核,其每一處理核包括一各自中斷請求輸入以及一控制單元,其被配置為由上述多個處理核的每一處理核接收一各自同步請求。上述控制單元被配置為在上述各自中斷請求輸入中產(chǎn)生一中斷請求至所有上述多個處理核,以作為偵測到上述控制單元已接收到由所有上述多個處理核所傳送的上述各自同步請求的響應。本發(fā)明具有更少的功率消耗。
【專利說明】微處理器及在微處理器的處理核間同步的方法
【技術領域】
[0001] 本發(fā)明有關于一微處理器,且特別有關于單一核喚醒多核同步機制。
【背景技術】
[0002] 多核微處理器的增加,主要是因為其提供了在性能上的優(yōu)勢??赡苤饕怯捎诎?導體裝置幾何維度大小迅速的減少,從而增加了晶體管密度。在一微處理器中多核的存在 已產(chǎn)生與一核與其它核通信的需求,W完成各種功能,例如電源管理、高速緩沖存儲器管 理、除錯及與更多核相關的配置。
[0003] 傳統(tǒng)上,運行在多核處理器上架構的程序(例如,操作系統(tǒng)或應用程序)已使用位 于由所有核架構上可尋址的一系統(tǒng)存儲器中的信號量進行通信。該可能足夠用于許多目 的,但可能無法提供其它所需的速度、準確度及/或系統(tǒng)層級透明度。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種微處理器。上述一微處理器包括多個處理核,其每一處理核包括 一各自中斷請求輸入W及一控制單元,其被配置為由上述多個處理核的每一處理核接收一 各自同步請求。上述控制單元被配置為在上述各自中斷請求輸入中產(chǎn)生一中斷請求至所有 上述多個處理核,W作為偵測到上述控制單元已接收到由所有上述多個處理核所傳送的上 述各自同步請求的響應。
[0005] 本發(fā)明提供一種在核間同步操作的方法,用于一微處理器中,其中上述微處理器 具有一控制單元及多個處理核,其每一處理核包括一各自同步請求。上述方法包括;由上述 控制單元偵測上述控制單元已接收到由所有上述多個處理核所傳送的上述各自同步請求; W及由上述控制單元產(chǎn)生一中斷請求至所有上述多個處理核,W作為偵測到上述控制單元 已接收到由所有上述多個處理核所傳送的上述各自同步請求的響應。
[0006] 本發(fā)明提供一種在用于一計算機裝置中至少一非暫態(tài)計算機可用介質所編碼的 計算機程序產(chǎn)品,上述計算機程序產(chǎn)品包括指示一微處理器的計算機可用程序碼。上述計 算機可用程序碼包括指示多個處理核的第一程序碼,其每一處理核包括一各自中斷請求輸 入。上述計算機可用程序碼也包括指示一控制單元的第二程序碼,被配置為由上述多個處 理核的每一處理核接收一各自同步請求。上述控制單元被配置為在上述各自中斷請求輸入 中產(chǎn)生一中斷請求至所有上述多個處理核,W作為偵測到上述控制單元已接收到由所有上 述多個處理核所傳送的上述各自同步請求的響應。
[0007] 本發(fā)明具有更少的功率消耗。
【專利附圖】
【附圖說明】
[0008] 圖1是顯示一多核微處理器的方塊圖。
[0009] 圖2是顯示一控制字、一狀態(tài)字及一配置字的方塊圖。
[0010] 圖3是顯示一控制單元操作的流程圖。
[0011] 圖4是顯示另一實施例的微處理器的一方塊圖。
[0012] 圖5是顯示一微處理器操作W轉儲調試信息的流程圖。
[0013] 圖6是顯示一根據(jù)圖5流程圖中微處理器的操作示例時序圖。
[0014] 圖7A?7B是顯示一微處理器執(zhí)行跨核高速緩沖控制操作的流程圖。
[0015] 圖8是顯示根據(jù)圖7A?7B流程圖的微處理器操作例子的時序圖。
[0016] 圖9是顯示微處理器進入一低功率封裝C-狀態(tài)的操作流程圖。
[0017] 圖10是顯示根據(jù)圖9流程圖一微處理器操作例子的時序圖。
[0018] 圖11是根據(jù)本發(fā)明另一實施例的微處理器進入一低功率封裝C-狀態(tài)的操作流程 圖。
[0019] 圖12是顯示根據(jù)圖11流程圖的微處理器操作一例子的時序圖。
[0020] 圖13是顯示根據(jù)圖11流程圖的微處理器操作另一例子的時序圖。
[0021] 圖14是顯示微處理器的動態(tài)重新配置的流程圖。
[0022] 圖15是顯示根據(jù)另一實施例中微處理器動態(tài)重新配置的流程圖。
[0023] 圖16是顯示根據(jù)圖15流程圖的微處理器操作一例子的時序圖。
[0024] 圖17是顯示在圖1中硬件信號量118的一方塊圖。
[00巧]圖18是顯示當一核102讀取硬件信號量118的操作流程圖。
[0026] 圖19是顯示當一核寫入硬件信號量的操作流程圖。
[0027] 圖20是顯示當微處理器使用硬件信號量W執(zhí)行需一資源獨占所有權的操作流程 圖。
[0028] 圖21是顯示根據(jù)圖3流程圖的核發(fā)出非睡眠同步請求操作一例子的時序圖。
[0029] 圖22是顯示配置微處理器的一程序流程圖。
[0030] 圖23是顯示根據(jù)另一實施例中配置微處理器的一程序流程圖。
[0031] 圖24是顯示根據(jù)另一實施例的一多核微處理器的方塊圖。
[0032] 圖25是顯示一微碼修補架構的方塊圖。
[0033] 圖26A?2她是顯示圖24中該微處理器W傳播圖25的一微碼修補至該微處理器 的多核的一操作流程圖。
[0034] 圖27是顯不根據(jù)圖26A?2她流程圖的一微處理器操作的一例子的時序圖。 [00巧]圖28是顯示根據(jù)另一實施例的一多核微處理器的方塊圖。
[0036] 圖29A?29B是顯示根據(jù)另一實施例的圖28中該微處理器用W傳播一微碼修補 至該微處理器的多個核的一操作流程圖。
[0037] 圖30是顯示圖24的微處理器用W修補一服務處理器程序碼的流程圖。
[0038] 圖31是顯示根據(jù)另一實施例的一多核微處理器的方塊圖。
[0039] 圖32是顯示圖31中該微處理器用W傳播一 MTRR更新至該微處理器的多個核的 一操作流程圖。
[0040] 其中,附圖中符號的簡單說明如下:
[00川 100 ;多核微處理器;102A、102B、102N;核A、核B、核N;103 ;非核;104 ;控制單元; 106 ;狀態(tài)暫存器;108A、108B、108C、108D、108N;同步暫存器;108E、108F、108G、10細;影子 同步暫存器;114 ;烙斷器;116 ;專用隨機存取存儲器;118 ;硬件信號量;119 ;共享高速緩 沖存儲器;122A、122B、122N;時脈信號;124A、124B、124N;中斷信號;126A、12她、126N;數(shù) 據(jù)信號;128A、128B、128N ;電能控制信號;202 ;控制字;204 ;喚醒事件;206 :同步控制; 208 ;電源間;212 ;睡眠;214 ;選擇性喚醒;222 ;S ;224 ;C ;226 ;同步狀態(tài)或C-狀態(tài);228 : 核集合;232 ;強迫同步;234 ;選擇性同步中止;236 ;停用核;242 ;狀態(tài)字;244 ;喚醒事件; 246 ;最低常用C-狀態(tài);248 ;錯誤碼;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、40她;晶體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、 11:34、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)機 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 ;修補可定址內(nèi)容存儲器;2497 ;服務處理單元 起始地址暫存器2499 ;核隨機存取存儲器;2500 ;微碼修補;2502 ;標頭;2504 ;即時修補; 2506 ;校對和;2508 ;CAM 數(shù)據(jù);2512 ;核 PRAM 修補;2514 ;校對和;2516 ;RAM 修補;2518 ; 非核 PRAM 修補;2522 ;校對和;2602、2604、2606、2608、2611、2612、2614、2616、2618、2621、 2622、2624、2626、2628、2631、2632、26:34、2652 ;步驟;2808 ;核修補 RAM ;2912、2916、2922、 2932 ;步驟;3002、3004、3006 ;步驟;3102 ;存儲器類型范圍暫存器;3202、3204、3206、 3208、3211、3212、3214、3216、3218、3252 ;步驟。
【具體實施方式】
[0042] 下文為介紹本發(fā)明的最佳實施例。各實施例用W說明本發(fā)明的原理,但非用W限 制本發(fā)明。本發(fā)明的范圍當W權利要求書為準。
[0043] 請參照圖1,其是顯示一多核微處理器100的方塊圖。微處理器100包括多個處 理核,標示為102A、102B至102N,其統(tǒng)稱為多個處理核102,或簡稱多個核102,且被單獨稱 為處理核102或簡稱核102。更佳地說,每一核102包括一或多個功能單元的管線(圖未 示出),其包括一指令高速緩沖存儲器(instruction cache)、一指令轉換單元或指令解碼 器,更佳地包括一微碼(microcode)單元、暫存換名單元、保留站化eservation station)、 高速緩沖存儲器、執(zhí)行單元、存儲器子系統(tǒng)及包括一排序緩沖器的引退單元(retire unit)。更佳地說,多個核102包括一超純量(Superscalar)、非順序執(zhí)行(OUt-Of-〇rder execution)微體架構。在一實施例中,微處理器100是一 x86架構微處理器,但在其它實施 例中,微處理器100符合其它指令集的架構。
[0044] 微處理器100也包括一禪接至上述多個核102的不同于上述多個核102的非 核103。非核103包括一控制單元104、烙斷器114、一專用隨機存取存儲器116 (Private Random Access Memoir, PRAM) W及一共享高速緩沖存儲器 119 (化ared Cache Memoir),例 女口,由多個核102所共享的一第二級(level-2, L2)和/或第H級(level-3, L3)高速緩沖 存儲器。每一核102配置用W通過一各自的地址/數(shù)據(jù)總線126從非核103讀取數(shù)據(jù)/寫 入數(shù)據(jù)至非核103,核102提供一非架構地址空間(也視為專用或微架構地址空間)至非核 103的共享資源。專用隨機存取存儲器116為專用或非架構的,也就是說其未在微處理器 100的架構使用者程序地址空間中。在一實施例中,非核103包括仲裁邏輯(Arbitration Logic),其通過多個核102仲裁請求存取非核103的資源。
[0045] 每一烙斷器114是一電子裝置,其可被燒斷或不被燒斷;當烙斷器114不被燒斷 時,烙斷器114具有低阻抗且易傳導電流;當烙斷器114被燒斷時,烙斷器114具有高阻抗 且不容易傳導電流。一檢測電路與每一烙斷器114相關聯(lián),W評估該烙斷器114,例如,檢測 該烙斷器114是否傳導一高電流或低電壓(不燒斷,例如,邏輯為零、或清除(clear))或一 低電流或高電壓(燒斷,例如,邏輯為一、或設置(set))。該烙斷器114可在微處理器100 的制造期間內(nèi)被燒斷,且在一些實施例中,一未燒斷的烙斷器114可在微處理器100制造后 被燒斷。更佳地說,一燒斷的烙斷器114是不可逆的。一烙斷器114的例子為一多晶娃烙 絲,其可在裝置間施加一足夠高的電壓而燒斷。一烙斷器114的另一例子為媒-鉛烙絲, 其可使用一激光而燒斷。更佳地說,感測電路電力開啟感測烙斷器114,并提供其評估至微 處理器100的保存暫存器Ololding Register)中的一相應位。當微處理器100被重置解 除時,多個核102 (例如,微碼)讀取保存暫存器W決定所感測的烙斷器114的值。在一實 施例中,在微處理器100被重置解除前,已更新的值可經(jīng)由一邊界掃描輸入掃描至保存暫 存器,舉例來說,像是一聯(lián)合測試行為組織(Joint Test Action Group, JTAG)輸入,W實質 更新烙斷器114的值。此用于測試和/或偵錯目的,如在下方描述與圖22和圖23相關的 實施例中特別有用。
[0046] 另外,在一實施例中,微處理器100包括與每一核102相關不同的本地高級可編程 中斷控制器(Advanced Programm油Ie Interrupt Controller,APIC)(圖未示出)。在一實 施例中,本地高級可編程中斷控制器架構地遵守加利福尼亞州(California)圣培克拉拉 (Santa Clara)的Intel公司在2012年5月Intel 64及IA-32架構軟件開發(fā)人員手冊3A 中一本地高級可編程中斷控制器的說明,特別是在第10. 4節(jié)中。尤其是本地高級可編程中 斷控制器包括一高級可編程中斷控制器ID及一包括導引處理器炬OOtstrap Processor, BS巧旗標的高級可編程中斷控制器基址暫存器,其產(chǎn)生及用途將更詳細地描述的如下,尤 其是與圖14至圖16有關的實施例。
[0047] 控制單元104包括硬件、軟件、或硬件和軟件的組合??刂茊卧?04包括一硬件信 號量(Hardware Semaphore) 118 (詳細地描述如下圖17至圖20)、一狀態(tài)暫存器106、一配 置暫存器112、和與每一核102各自對應的一同步暫存器108。更佳地說,每一非核103的 實體在非架構地址空間內(nèi)不同地址中可由每一核102所尋址,其該非架構地址空間能使微 碼讀取及寫入核102。
[004引每一同步暫存器108可由各自對應的核102寫入。狀態(tài)暫存器106由每一核102 讀取。配置暫存器112可(經(jīng)由如下所述的圖2的停用核位236)由每一核102讀取及間 接寫入。控制單元104還可包括中斷邏輯(圖未示出),該中斷邏輯生成至每一核102的對 應的中斷信號(interrupt signal, INTR) 124,該中斷信號由控制單元104產(chǎn)生W中斷對應 的核102。中斷源響應該控制單元104產(chǎn)生至一核102的一中斷信號124,且中斷源可包括 外部中斷源(例如x86架構INTR、SMI、醒I中斷來源)或總線事件(例如,x86架構式的總 線信號STPCLK確立(assertion)或解除確立(de-asse;rtion))。此外,每一核102可通過 寫入控制單元104傳送一核間中斷信號124至其它每一核102。更佳地說,除非另有說明, 否則本文中所描述的核間中斷信號為一核102的微碼經(jīng)由一微指令(microinrs化Ction) 請求非架構核間中斷信號,其不同于由系統(tǒng)軟件經(jīng)由一架構指令所請求的傳統(tǒng)架構核間中 斷信號。最后,當一同步情況(Sync虹onization Condition)已經(jīng)發(fā)生時,如下文所述(例 女口,請參閱圖21及圖3中的方塊334),控制單元104可產(chǎn)生一中斷信號124至核102 ( - 同步中斷信號)??刂茊卧?04也產(chǎn)生一對應的時脈信號(CLOCK) 122至每一核102,其中 控制單元104可W選擇性地關閉,且有效地使對應的核102進入睡眠并開啟W喚醒核102 來備份??刂茊卧?04還產(chǎn)生一對應核的電能控制信號(PWR) 128至每一核102,其選擇性 地控制對應的核102接收或不接收電能。因此,控制單元104可經(jīng)由對應的電能控制信號 128選擇性地使一核102進入一更深的睡眠狀態(tài)W關閉該核的電能,并重新開啟電能至該 核102 W喚醒該核102。
[0049] 一核102可寫入與其相應的、具有同步位集合(請參閱圖2的S位222)的同步暫 存器108中,上述操作被視為一同步請求(Sync虹onization Request)。更詳細的說明描 述如下,在一實施例中,該同步請求請求控制單元104使核102進入睡眠狀態(tài),并當一同步 情況發(fā)生時和/或當一特定的喚醒事件發(fā)生時喚醒該核102。一同步情況發(fā)生在微處理器 100中所有可啟用(請參閱圖2中的致能位254)的核102或可啟用核102的一特定子集合 (請參閱圖2中的核集合欄位228)已寫入相同的同步情況(詳細說明于圖2中C位224、 同步情況或C-狀態(tài)欄位226的一組合及核集合欄位228, S位222更詳細地描述如下)至 其對應的同步暫存器108時。為了響應一同步情況的發(fā)生,控制單元104同時喚醒正等待 該同步情況的所有核102,即,已請求同步情況。在另一描述如下的實施例中,核102可W請 求僅最后寫入該同步請求的一核102被喚醒(請參閱圖2的選擇性喚醒位214)。在另一實 施例中,同步請求不請求核102進入睡眠狀態(tài),相反地,同步請求請求控制單元104當同步 情況發(fā)生時中斷核102,更詳細地描述如下,特別是圖3和圖21。
[0050] 更佳地說,當控制單元104偵測一同步情況已發(fā)生時(由于最后寫入同步請求至 同步暫存器108中的最后核102),控制單元104使最后核102進入睡眠狀態(tài),例如,關閉傳 送至最后寫入核102的時脈信號122,接著同時喚醒所有核102,例如,開啟傳送至所有核 102的時脈信號122。在此方法中,所有核102皆精確地在相同的時鐘周期(clock cycles) 中被喚醒,例如,使其時脈信號122被開啟。對于某些操作,例如除錯(debugging),是特別 有益的(請參閱圖5中的實施例),其對于精確地在同一時鐘周期喚醒核102是有益的。在 一實施例中,非核103包括一單一鎖相回路(Phase-locked Loop, P化),其產(chǎn)生提供給核 102的時脈信號122。在其它實施例中,微處理器100包括多個鎖相回路,其產(chǎn)生提供至核 102的時脈信號122。
[00引]巧制、狀杰巧配晉字
[0052] 請參照圖2,其顯示一控制字202、狀態(tài)字242及一配置字252的一方塊圖。一核 102寫入控制字202的一值至圖1的控制單元104的同步暫存器108, W產(chǎn)生一原子請求 (atomic request),W請求進入睡眠狀態(tài)和/或與微處理器100中所有其它核102或一特 定子集合同步化(同步)。一核102讀取該控制單元104中狀態(tài)暫存器106所傳送的該狀 態(tài)字242的一值,W決定本文所描述的狀態(tài)信息。一核102讀取該控制單元104中配置暫 存器112所傳送的該配置字252的一值,并使用該值,描述如下。
[0053] 控制字202包括一喚醒事件欄位204、一同步控制欄位206 W及一電源間(Power Gate, PG)位208。該同步控制欄位206包括各種位或子欄位,其控制核102的睡眠和/或核 102與其它核102的同步。同步控制欄位206包括一睡眠位212、一選擇性喚醒(S化WAKE) 位214、一 S位222、一 C位224、一同步狀態(tài)或C-狀態(tài)欄位226、一核集合欄位228、一強迫 同步位232、一選擇性同步中止化ill)位234, W及核停用核位236。狀態(tài)字242包括一喚 醒事件欄位244、一最低常用C-狀態(tài)欄位246及一錯誤碼欄位248。該配置字252包括微 處理器100的每一核102的一致能位254、一本地核數(shù)量欄位256及一晶體數(shù)量欄位258。
[0054] 該控制字202的喚醒事件欄位204包括多個對應于不同事件的位。如果核102設 置一位在喚醒事件欄位204中,當事件發(fā)生對應該位時,控制單元104將喚醒該核102 (例 女口,開啟時脈信號122至該核102)。當該核102已與在核集合欄位228中所指定的所有其 它核同步時,則發(fā)生一喚醒事件。在一實施例中,核集合欄位228可指定微處理器100中 所有核102;所有核102與即時(instant)核102共享一高速緩沖存儲器(例如,一第二 級(L2)高速緩沖及/或第H級(L3)高速緩沖);在相同半導體晶體中,所有核102為即時 核102(參閱圖4中描述一多晶體、多核微處理器100的實施例的一例子);或在其它半導 體晶體中的所有核102為即時核102。一共享高速緩沖存儲器的核集合102可視為一晶片 (Slice)。其它喚醒事件的其它例子包括,但不局限于,一 x86 INTR、SMI、醒I、STP化K的確 立(assertion)或角軍除確立(de-assertion)及一核間中斷(inter-core interrupt)。當 一核102被喚醒時,其可讀取在狀態(tài)字242中的喚醒事件欄位244 W決定該正活動喚醒事 件。
[00巧]如果核102設置該PG位208時,該控制單元104使核102進入睡眠狀態(tài)后關閉至 核102的電能(例如,經(jīng)由該電能控制信號128)。當控制單元104隨后恢復供電至核102 時,控制單元104清除PG位208。PG位208的使用在如下圖11至圖13將有更詳細地描述。
[0056] 如果該核102設定睡眠位212或選擇性喚醒位214時,控制單元104在核102寫入 使用指定在喚醒事件欄位204喚醒事件的同步暫存器108后,使核102進入睡眠狀態(tài)。該 睡眠位212和選擇性喚醒位214互斥。當一同步情況發(fā)生時,它們之間的差別與控制單元 104所采取的行動有關。若核102設置睡眠位212,當一同步情況發(fā)生時,則控制單元104 將喚醒所有核102。反之,若一核102設置選擇性喚醒位214,當一同步情況發(fā)生時,控制單 元104將僅喚醒最后寫入同步情況至其同步暫存器的核102。
[0057] 如果核102并未置睡眠位212,也未設置選擇性喚醒位214時,雖然控制單元104 不會使核102進入睡眠狀態(tài),但當一同步情況發(fā)生時,控制單元104將不會喚醒核102???制單元104仍將設置在指示一同步情況為正活動的喚醒事件欄位204的位,因此核102可 W偵測該同步情況已經(jīng)發(fā)生。許多可指定于該喚醒事件欄位204中的喚醒事件也可中斷由 該控制單元104所產(chǎn)生一中斷信號至核102的來源。然而,若有要求,則核102的微碼可遮 蔽中斷來源。如此,當核102被喚醒時,該微碼可讀取狀態(tài)暫存器106決定一同步情況或一 喚醒事件或兩者是否發(fā)生。
[0058] 如果核102設置S位222,其請求控制單元104在一同步情況中同步。該同步情況 在C位224、同步情況或C-狀態(tài)欄位226的一些組合中及核集合欄位228中被指定。若C 位224被設置時,C-狀態(tài)欄位226指定一 C-狀態(tài)值;若C位224是清除的,同步情況欄位 226指定一非C-狀態(tài)同步情況。更佳地說,同步狀態(tài)或C-狀態(tài)欄位226的值包括一非負 整數(shù)的有界集合。在一實施例中,該同步情況或C-狀態(tài)欄位226為4位。當C位224為清 除(clear)時,一同步情況發(fā)生在;一特定的核集合欄位228中的所有核102已經(jīng)寫入S位 222集合和同步情況欄位226的相同值至同步暫存器108中。在一實施例中,同步情況欄 位226的值對應一唯一的同步情況,例如,在下方所描述示范的實施例中各種的同步情況。 當C位224被設置時,同步情況發(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所讀取。在一實 施例中,若核102在同步情況欄位226中指定一預設值(例如,所有位集合),此指示控制單 元104 W匹配即時核102與其它核102所指定的任一同步情況欄位226值。
[0059] 若核102設定強迫同步位232時,控制單元104將強迫所有正進行的同步請求被 立即匹配。
[0060] 一般來說,若任一核102因在喚醒事件欄位204中所指定的一喚醒事件所喚醒時, 控制單元104通過清除在同步暫存器108中S位222來中止化ill)所有正進行的同步請 求。然而,若核102設定該選擇性同步中止位234時,控制單元104將中止只有因(非同步 情況發(fā)生)喚醒事件所喚醒的核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則認為此為一停頓情況。此 夕F,若一核102將一值為清除的C位224寫入至其同步暫存器108中、而另一核102將一值 為設置(set)的C位224寫入至其同步暫存器108中,則控制單元104認為此為一停頓情 況。為了響應一停頓情況,控制單元104中止所有正進行的同步請求,并喚醒所有在睡眠狀 態(tài)中的核102??刂茊卧?04也分發(fā)(post)在狀態(tài)暫存器106的錯誤碼欄位248中的值, 其狀態(tài)暫存器106為可由核102讀取W決定該停頓原因并采取適當行動的狀態(tài)暫存器。在 一實施例中,錯誤碼248表示每一核102所寫入的同步情況,該同步情況使每一核決定是否 繼續(xù)執(zhí)行其動作的預定路線或延遲至另一核102。舉例來說,若一核102寫入一同步情況W 執(zhí)行一電源管理操作(例如,執(zhí)行一 X86 MWAIT指令)W及另一核102寫入一同步情況W 執(zhí)行一高速緩沖管理操作(例如,x86 WBINVD指令),則計劃執(zhí)行該MWAIT指令的核102因 MWAIT是一可選擇的操作,而WBINVD是一強制性的操作而取消MWAIT指令,W延遲至另一 正執(zhí)行WBINVD指令的核102。在舉另一例子,若一核102寫入一同步情況W執(zhí)行一除錯操 作(例如,轉儲除錯狀態(tài)值ump debug state)) W及另一核102寫入一同步情況W執(zhí)行一 高速緩沖管理操作(例如,WBINVD指令)時,則計劃進行WBINVD的核102通過儲存WBINVD 狀態(tài),等待轉儲除錯發(fā)生及恢復WBINVD狀態(tài)并執(zhí)行WBINVD指令,W延遲至執(zhí)行轉儲除錯的 核 102。
[0062] 在一單一晶體的實施例中晶體數(shù)量欄位258為零。在一多個晶體的實施例(例如, 圖4中),晶體數(shù)量欄位258指示哪一晶體由讀取配置暫存器112的該核102所駐留。舉例 來說,在一二晶體的實施例中,該晶體被指定為0和1 W及該晶體數(shù)量欄位258具有0或1 的值。在一實施例中,舉例來說,烙斷器114選擇性地被燒斷W指定一晶體為0或1。
[0063] 本地核數(shù)量欄位256指示本地到正讀取配置暫存器112的核102的晶體中核的數(shù) 量。更佳地說,雖然具有一由所有核102所共享的單一配置暫存器112,然而控制單元104 知道哪個核102正讀取配置暫存器112,并根據(jù)一讀取器在本地核數(shù)量欄位256中提供正 確的值。該使得核102的微碼知道位于同一晶體中其它核102間的本地核數(shù)量。在一實施 例中,在微處理器100的非核103部分的一多路復用器選擇適當?shù)闹?,該適當?shù)闹悼苫诤?102讀取配置暫存器112而在配置字252的本地核數(shù)量欄位256中恢復。在一實施例中,選 擇性地燒斷烙斷器114操作與多路復用器一起恢復本地核數(shù)量欄位256的值。更佳地說, 本地核數(shù)量欄位256的值是固定獨立的,其在晶體中的核102為可使用的,如W下所描述的 致能位254所指示。也就是說,即使在該晶體的一或多個核102被停用時,本地核數(shù)量欄位 256的值維持固定。另外,核102的微碼計算核102的整體核數(shù)量,該核102的整體核數(shù)量 為一與配置相關的值,其用途詳細描述如下。整體核數(shù)量指示微處理器100整體核102的 核數(shù)量。核102通過使用晶體數(shù)量欄位258的值計算其整體核數(shù)量。例如,在一實施例中, 微處理器100包括8個核102,平均分至兩個具有晶體值0及1的晶體中,在每一晶體中,本 地核數(shù)量欄位256恢復一 0、1、2或3的值;在晶體值為1的核加上4即恢復本地核數(shù)量欄 位256的值W計算其整體核數(shù)量。
[0064] 微處理器100的每一核102具有一配置字252對應致能位254,配置字252指示該 核102是否被啟用或停用。在圖2中,致能位254分別用致能位254-X表示,其中X是該對 應核102的整體核數(shù)量。圖2中的例子假設微處理器100中具有八個核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被停用W及哪一核102被啟用。 更佳地說,若該核102被啟用時,則一致能位254被設定,若核102被停用時,則致能位254 被清除。當該微處理器100被重新設定時,硬件自動地填入(populate)該致能位254。更 佳地說,當微處理器100被制造指示一已給定的核102是否為啟用,若是停用時,該硬件基 于烙斷器114選擇性地被燒斷而填入致能位254。舉例來說,如果一已給定的核102被測 試并發(fā)現(xiàn)其為故障時,一烙斷器114可被燒斷W清除該核102的致能位254。在一實施例 中,一被燒斷的烙斷器114指示一核102為停用,并防止來自被提供至停用的核102的時脈 信號。每一核102可將該停用核位236寫入至其同步暫存器108中,W清除其致能位254, 更多與圖14至圖16相關的細節(jié)將詳細描述如下。更佳地說,清除致能位254不會阻止該 核102執(zhí)行指令,但會更新該配置暫存器112,并且,該核102必須設定一不同的位(圖未示 出),W防止該核本身執(zhí)行指令,例如,使其電源被移除和/或關閉其時脈信號。對于一多晶 體配置微處理器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根據(jù)圖3有效地操作,例如,當該控制單元104從其本地核 102其中之一接收一同步請求(方塊302),除了該控制單元104使核102進入睡眠(例如, 方塊314)、或喚醒(在方塊306、328或336)、或中斷(在方塊334)、或阻止核102在其本地 晶體406的喚醒事件(方塊326),還填入其本地狀態(tài)暫存器106 (方塊318)。流程進行到 方塊304。
[0068] 在方塊304中,該控制單元104檢查在方塊302中的該同步情況,W決定一停頓 (deadlock)情況是否已發(fā)生,如上圖2所描述。若是,則流程行進至方塊306 ;否則,流程進 行到判斷方塊312。
[0069] 在方塊305中,該控制單元104偵測在同步暫存器108其中之一的喚醒事件欄位 204的一喚醒事件的發(fā)生(除了在方塊316中被偵測的一同步情況的發(fā)生之外)。如下方 方塊326中所描述,控制單元104可自動地阻止喚醒事件??刂茊卧?04可W偵測該喚醒 事件發(fā)生為一事件不同步巧vent Async虹onous)時在方塊302中寫入一同步請求。流程 也由方塊305進行至方塊306。
[0070] 在方塊306中,該控制單元104填入狀態(tài)暫存器106,中止正進行的同步請求,并且 喚醒任一睡眠的核102。如上所述,喚醒睡眠核102可包括恢復其功率。該核102接著可讀 取該狀態(tài)暫存器106,特別是錯誤碼248, W決定停頓的原因,并根據(jù)該沖突同步請求對應 的優(yōu)先順序處理它,如上所描述。此外,該控制單元104中止所有正進行的同步請求(例如, 清除在每一核102的同步暫存器105中的S位222),除非方塊306是由方塊305后達成且 該選擇性同步中止位234被設定時,在此種情況下,該控制單元104會中止僅由該喚醒事件 所喚醒的核102正進行的同步請求。若方塊306是由方塊305后達成,則該核102可讀取 喚醒事件244欄位W決定所發(fā)生的喚醒事件。此外,若該喚醒事件是一未遮蔽(unmasked) 的中斷來源,則控制單元104將通過該中斷信號124產(chǎn)生一中斷請求至該核102。流程在方 塊306中結束。
[0071] 在判斷方塊312中,該控制單元104決定睡眠位212或選擇性喚醒位214是否被 設定。若有,則流程進行至方塊314 ;否則,流程進行至判斷方塊316。
[0072] 在方塊314中,控制單元104使該核102進入睡眠狀態(tài)。如上所述,使一核102進 入睡眠狀態(tài)可包括移除其電源。在一實施例中,作為一最佳化的例子,即使該PG位208被 設定,若此為最后寫入的核102 (例如,將造成同步情況的發(fā)生),在方塊314中,該控制單元 104不移除該核102的電源,并且因該控制單元104將在方塊328中即時喚醒最后寫入的核 102備份,因此該選擇性喚醒位214被設定。在一實施例中,該控制單元104包括同步邏輯 及睡眠邏輯,兩者互相分開,但互相通信;此外,該每一同步邏輯和睡眠邏輯包括該同步暫 存器108的一部分。有利的是,寫入至該同步暫存器108的同步邏輯部分和寫入到該同步 暫存器108的睡眠邏輯部分是原子的(atomic),即不可分割的。也就是說,如果一部分寫入 發(fā)生時,其同步邏輯部分及睡眠邏輯部分皆保證會發(fā)生。更佳地說,該核102的管線阻塞, 不允許任何更多的寫入發(fā)生,直到其被保證寫入至該同步暫存器108中的兩個部分皆已發(fā) 生為止。寫入一同步請求并立即進入睡眠狀態(tài)的優(yōu)點是其不需要該核1〇2(例如,微碼)連 續(xù)地運轉W決定該同步情況是否已經(jīng)發(fā)生。由于可W節(jié)省電力且不消耗其它資源,例如總 線及/或存儲器頻寬,因此非常有益。值得注意的是,為了進入睡眠狀態(tài)但無需請求與其它 核102同步(例如,方塊924和方塊1124),該核102可W寫入S位222為清除(Clear)及 睡眠位212為設定(Set),在本文中稱為一睡眠請求,至該同步暫存器108中;若在喚醒事 件欄位204中所指定一未遮蔽的喚醒事件發(fā)生時(例如,方塊305),但未尋找此核102-同 步情況的發(fā)生(例如,方塊316)時,在此種情況下,該控制單元104喚醒該核102 (例如,方 塊306)。流程進行到判斷方塊316。
[0073] 在判斷方塊316中,該控制單元104決定一同步情況是否發(fā)生。若是,流程進行 至方塊318。如上所述,一同步情況可僅在S位222被設定時發(fā)生。在一實施例中,該控制 單元104使用圖2中該致能位254,其指示該微處理器100中哪些核102被啟用,W及哪些 核102被停用。該控制單元104僅尋找被啟用的核102, W決定一同步情況是否發(fā)生。一 核102可因其被測試且發(fā)現(xiàn)在生產(chǎn)時間中有缺陷而被停用。因此,一烙斷器被燒斷W使該 核102無法操作并指示該核102被停用。一核102可因該核102所請求的軟件而被停用 (例如,請參閱圖15)。舉例來說,在一使用者請求時,BIOS寫入一特殊模組暫存器(Model Specific Register,MSR) W請求該核102被停用,W響應該核102停止使用其本身(例如, 通過該停用核位236),并通知其它核102讀取其它核102決定停用該核102的配置暫存器 112。一核102還可經(jīng)由一微碼來修補(patch)(例如,請參閱圖14),該微碼可通過燒斷烙 斷器114產(chǎn)生和/或從系統(tǒng)存儲器(例如一 FLASH存儲器)載入。除了決定一同步情況是 否發(fā)生之外,該控制單元104檢查該強迫同步位232。若為設置(set),流程則進行至方塊 318。若該強迫同步位232為清除(clear)且一同步情況尚未發(fā)生,則流程結束于方塊316 中。
[0074] 在方塊318中,該控制單元104填入該狀態(tài)暫存器106。明確的說,如果發(fā)生同步 情況為所有核102請求一 C-狀態(tài)的同步時,如上所述,該控制單元104填入最低常用C-狀 態(tài)欄位246。流程進行至判斷方塊322。
[00巧]在判斷方塊322中,該控制單元104檢查選擇性喚醒(S化WAK巧位214。如果該 位為設置(set)時,流程進行至方塊326;否則,流程進行至判斷方塊322。
[0076] 在方塊326中,該控制單元104阻止除了即時核(instant core)外所有其它核 102的所有喚醒事件,其中該即時核為在方塊302中最后寫入同步請求至其同步暫存器108 的核102,因此使該同步情況發(fā)生。在一實施例中,如果欲阻止喚醒事件及其它方面為真 (True)時,該控制單元104的邏輯簡單地布爾炬oolean) AND運算具有一為假(False)信 號的喚醒情況。阻止所有核的所有喚醒事件的用途被更詳細地描述如下,特別是圖11至圖 13。流程進行至方塊328。
[0077] 在方塊328中,該控制單元104僅喚醒該即時核102,但不喚醒請求該同步的其它 核。此外,該控制單元104通過清除該S位222中止該即時核102正進行的同步請求,但不 中止其它核102正進行的同步請求,例如,離開其它核102的S位222設置。因此有利的 是,如果當即時核102在其被喚醒后寫入另一同步請求時,其將會再次造成同步情況的發(fā) 生(假設其它核102的同步請求尚未被中止),一例子將在下方圖12及圖13中描述。流程 結束于方塊328。
[0078] 在判斷方塊332中,該控制單元104檢查該睡眠位212。如果該位為設置(set) 時,則流程前進到方塊336 ;否則,流程前進到方塊334。
[0079] 在方塊334中,該控制單元104傳送一中斷信號(同步中斷)至所有核102。圖 21的時序圖是說明一非睡眠同步請求的例子。每一核102可讀取該喚醒事件欄位244并 偵測一同步情況的發(fā)生是中斷的原因。流程已進行到方塊334,在此情況下,當核102寫入 其同步請求時,核102選擇不進入睡眠狀態(tài)。雖然此種情況并未使核102獲得與進入睡眠 狀態(tài)時同樣的益處(例如,同時喚醒),但其具有使核102在等待最后寫入其同步要求的核 102在無需同時喚醒的情況下,繼續(xù)處理指令的潛在優(yōu)勢。流程結束于方塊334。
[0080] 在方塊336中,該控制單元104同時被所有核102喚醒。在一實施例中,該控制單 元104在同一時鐘周期準確地開啟至所有核102的該時脈信號122。在另一實施例中,該控 制單元104 W-交錯方式開啟該時脈信號122至所有核102。也就是說,該控制單元104在 開啟時脈信號122至每一核間引入一時鐘周期的預定數(shù)量(例如,時鐘順序為十或一百)。 然而,時脈信號122交錯(staggering)開啟被同時考慮于本發(fā)明中。為降低所有核102被 喚醒時的一電力耗損尖峰的可能性,時脈信號122交錯開啟是有益的。在又另一實施例中, 為了降低電力耗損尖峰的可能性時,該控制單元104在同一時鐘周期開啟至所有核102的 時脈信號122,但通過初始在一已減少的頻率中提供時脈信號122并提高頻率至目標頻率 下,在一斷斷續(xù)續(xù)(S化ttering)、或壓制(t虹Ottled)方式中執(zhí)行。在一實施例中,該同步 請求作為該核102的微碼指令的執(zhí)行結果被發(fā)出,并且該微碼被設計用于至少一些同步情 況值,且指定該同步情況值的該微碼位置為唯一的。舉例來說,在微碼中僅一地方包括一同 步X請求,在微碼中僅一地方包括一同步y(tǒng)請求,依此類推。在該些情況下,因所有核102 在完全相同的地方被喚醒,其可使得微碼設計人員設計出更有效率且無缺陷的程序碼,因 此同時喚醒是有益的。此外,當嘗試重新建立和修復因多核相互作用而出現(xiàn)錯誤,但當單一 核運行時則不出現(xiàn)錯誤時,W除錯為目的同時喚醒可能是特別有益的。圖5及圖6是顯示 此一例子。此外,該控制單元104中止所有正進行的同步請求(例如,清除在每一核102的 同步暫存器108中的S位222)。流程結束于方塊336。
[0081] 本文所描述實施例的一優(yōu)點為其可顯著減少在一微處理器中微碼的數(shù)量,因比起 循環(huán)(looping)或執(zhí)行其它檢查W同步多核間的操作,在每一核中的微碼可簡單地寫入同 步請求,進入睡眠狀態(tài),并且知道何時在微碼中同一地方喚醒所有核。該同步請求機制的微 碼用途將描述于下方。
[0082] 《晶體微化巧器
[0083] 請參照圖4,是顯示另一實施例微處理器100的一方塊圖。圖4中的微處理器100 在許多方面類似于圖I的微處理器100,其中一多核處理器及核102均相似。然而,圖4 的實施例是一多晶體配置。也就是說,該微處理器100包括安裝在一共同封裝體(common package)內(nèi)并經(jīng)由一晶體內(nèi)總線404與另一晶體通信的多半導體晶體406。圖4的實施例 包括兩個晶體406,標記為晶體A406A和通過晶體間總線404所禪接的晶體B 406B。此外, 每一晶體406包括一晶體間總線單元402,晶體間總線單元402聯(lián)系各自的晶體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 40她包括四個核102-核E 102E、核F 102F、 核G102G和核化02H,其中上述四個核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和10細為影子暫存器,而在 控制單元B104B中,同步暫存器108A、108B、108C、108D為影子暫存器。
[0084] 當一核102將一值寫入到其同步暫存器108時,在核102的晶體406中的控制單 元104,經(jīng)由晶體間總線單元402及晶體間總線404,寫入該值至另一晶體406中對應的影 子暫存器108。此外,如果停用核位236被設定于傳播至影子同步暫存器108的該值中時, 該控制單元104還更新在配置暫存器112中對應的致能位254。在此種方式下,即使是在微 處理器100核配置是動態(tài)變化的情形下(例如,圖14至圖16),一同步情況的發(fā)生(包括一 跨晶體(trans-die)同步情況的發(fā)生)可W被偵測。在一實施例中,晶體間總線404是一相 對低速的總線,且該傳播可采用為一預定數(shù)量100核的時鐘周期順序,并且每一控制單元 104包括一狀態(tài)機制,其取用一預定數(shù)量的時間W偵測該同步情況的發(fā)生,并開啟該時脈信 號至各自晶體406中的所有核102。更佳地說,在控制單元104開始寫入值至另一晶體406 后(例如,被授予的晶體間總線404),在本地晶體406中的控制單元104 (例如,包括寫入 核102的晶體406)被配置為延遲更新該本地同步暫存器直到一預定數(shù)量的時間為止(例 女口,傳播時間數(shù)量與狀態(tài)機制同步情況發(fā)生偵測時間數(shù)量的總和)。在此種方式中,在兩個 晶體中的控制單元104同時偵測一同步情況的發(fā)生,并且同時在兩個晶體406中開啟至所 有核102的時脈信號。當嘗試重新建立及修復僅因多核相互作用而出現(xiàn),但不在一單一核 正運行時出現(xiàn)的錯誤時,W除錯為目的而言可能特別地有益。圖5和圖6描述了可能利用 此功能優(yōu)勢的實施例。
[00巧]調試操作
[0086] 微處理器100的核102被配置用W執(zhí)行單獨的調整操作,例如指令執(zhí)行及數(shù)據(jù)存 取的斷點炬reakpoint)。此外,微處理器100被配置用W執(zhí)行為跨核(trans-core)的調試 操作,例如,該調試操作與該微處理器100 -個W上的核102相關。
[0087] 請參閱圖5,其是顯示微處理器100操作W轉儲(dump)調試(debug)信息的流程 圖。該操作是從一單一核的角度所描述,但微處理器100中每一核102根據(jù)其描述操作共 同轉儲微處理器100的狀態(tài)。更具體地說,圖5描述了一核接收請求W轉儲調試信息的操 作,其流程開始于方塊502,且其它核102的操作流程開始于方塊532。
[0088] 在方塊502中,核102其中之一接收一請求W轉儲調試信息。更佳地說,上述調整 信息包括該核102或其一子集的狀態(tài)。更佳地說,調整信息被轉儲至系統(tǒng)存儲器或一可通 過調整設備監(jiān)控的外部總線,像是一邏輯分析器。響應該請求,核102傳送一調試轉儲信息 至其它核102并傳送其它核102 -核間中斷信號。更佳地說,在此時間中斷被停用的期間 內(nèi)(例如,該微碼不允許本身被中斷),核102阻止微碼W響應該請求W轉儲調試信息(在 方塊502中),或響應上述中斷信號(在方塊532),并保持在微碼中,直到方塊528為止。在 一實施例中,核102只需當其處于睡眠狀態(tài)且位于架構指令邊界時中斷。在一實施例中,本 文所描述的各種核間信息(像是在方塊502及其它像是在方塊702、1502、2606和3206中 的信息)經(jīng)由同步暫存器108控制字的該同步情況或C-狀態(tài)欄位226被傳送及接收。在 其它實施例中,核間信息經(jīng)由非核專用隨機存取存儲器116被傳送及接收。流程從方塊502 前進到方塊504。
[0089] 在方塊532中,其它核102的其中之一(例如,在方塊502中接收該調試轉儲請求 核102之外的一核102)由于在方塊502中傳送的核間中斷信號及信息被中斷并接收該調 試轉儲信息。如上所述,雖然在方塊532中的流程由單一核102的角度所描述,但每一其它 核102 (例如,不在方塊502中的核102)在方塊532被中斷并接收該信息,且執(zhí)行方塊504 至528的步驟。流程由方塊532前進到方塊504。
[0090] 在方塊504中,核102寫入一同步情況1(在圖5中標示為SYNC 1)的同步請求 至其同步暫存器108中。因此,該控制單元104使核102進入睡眠狀態(tài)。流程進行到方塊 506。
[0091] 在方塊506中,當所有核已寫入SYNC 1時,核102由控制單元104所喚醒。流程 進行到方塊508。
[0092] 在方塊508中,核102轉儲其狀態(tài)至存儲器中。流程進行到方塊514。
[0093] 在方塊514中,核102寫入一 SYNC 2,其造成控制單元104使核102進入睡眠狀 態(tài)。流程進行到方塊516。
[0094] 在方塊516中,當所有核已寫入SYNC 2時,核102由控制單元104所喚醒。流程 進行到方塊518。
[0095] 在方塊518中,核102轉儲在方塊508中調試信息的該存儲器地址設定一旗標 (flag),通過一重置(Reset)信號維持,接著重置其本身。核102重置微碼,該微碼偵測該 旗標并由所儲存的存儲器地址重新載入其狀態(tài)。流程進行到方塊524。
[0096] 在方塊524中,核102寫入一 SYNC 3,其造成控制單元104使核102進入睡眠狀 態(tài)。流程進行到方塊526。
[0097] 在方塊526中,當所有核已寫入SYNC 3時,核102由控制單元104所喚醒。流程 進行到方塊528。
[0098] 在方塊528中,該核102基于該在方塊518中被重新載入的狀態(tài)移除重置,并開始 提取架構(例如,x86)指令。流程結束于方塊528。
[0099] 請參照圖6,其是顯示一根據(jù)圖5流程圖中微處理器100的操作示例時序圖。在此 例子中,微處理器100配置具有H個核102,標示為核0、核1及核2,如圖所示。然而,應可 理解的是,在其它實施例中,微處理器100可包括不同數(shù)量的核102。在此時序圖中,事件時 序的過程如下所述。
[0100] 核0接收一調試轉儲請求,并傳送一調試轉儲信息和中斷信息至核1及核2 (每一 方塊502) W作為響應。該核0接著寫入一 SYNC 1,并進入睡眠狀態(tài)(每一方塊504)。
[0101] 每一核1和核2最后由其目前任務中被中斷并讀取其信息(每一方塊532)。作為 響應,每一核1和核2寫入一 SYNC 1并進入睡眠狀態(tài)(每一方塊504)。如圖所不,每一核 寫入SYNC 1的時間可能不同,例如,由于該指令當該中斷被確立時正在執(zhí)行。
[0102] 當所有核已寫入SYNC 1時,控制單元104同時喚醒所有核(每一方塊506)。每一 核接著轉儲其狀態(tài)至存儲器(每一方塊508),寫入一 SYNC 2并進入睡眠狀態(tài)(每一方塊 514)。需轉儲該狀態(tài)的時間量可能不同;因此,在每一核寫入SYNC 2的時間可能不同,如圖 所示。
[0103] 當所有核已寫入SYNC 2時,控制單元104同時喚醒所有核(每一方塊516)。每一 核接著重置其本身并由存儲器中重新載入其狀態(tài)(每一方塊518),寫入SYNC 3并進入睡眠 狀態(tài)(每一方塊524)。如圖所示,需重置并重新載入狀態(tài)的時間量可能會有所不同;因此, 在每一核寫入SYNC 3的時間可能不同。
[0104] 當所有核已寫入SYNC 3時,控制單元104同時喚醒所有核(每一方塊526)。每一 核接著開始在被中斷的時間點提取架構指令(每一方塊528)。
[0105] 傳統(tǒng)在多處理器之間同步操作的解決方法是使用軟件信號量(semaphore)。然而, 傳統(tǒng)的解決方法缺點是其無法提供時間等級同步(Clock-level Sync虹onization)。本文 所描述實施例的優(yōu)點是控制單元104可同時開啟時脈信號122至所有的核102。
[0106] 在如上所述的方法中,一調整微處理器100的工程師可配置核102其中之一W周 期性地產(chǎn)生檢查時間點,其用W產(chǎn)生調試轉儲請求,舉例來說,在一預定數(shù)量的指令已經(jīng)執(zhí) 行后。當微處理器100在運行時,工程師取得在一記錄檔中微處理器100外部總線上的所有 活動。接近總線被察覺已發(fā)生時間的記錄檔部分可提供至一軟件模擬器,其模擬該微處理 器100 W幫助工程師調試。該模擬器模擬執(zhí)行由每一核102所指示的指令,并模擬外部微 處理器100總線使用紀錄信息的執(zhí)行。在一實施例中,所有核102的模擬器從同時由一重 置點啟動。因此,該微處理器100的所有核102實際上在同一時間停止重置(例如,在SYNC 2之后)是具有較高的效果。此外,通過在所有其它核102已經(jīng)停止其當前的任務(例如, 在SYNC 1之后)之前,等待轉儲其狀態(tài)時,由一核102轉儲其狀態(tài)不會與其它核執(zhí)行調試 (例如,共享存儲器總線或高速緩沖相互影響)的程序碼及/或硬件互相干擾,其可增加重 新產(chǎn)生錯誤并判斷其原因的可能性。同樣地,直到所有核102已經(jīng)完成重新載入其狀態(tài)之 前(例如,在SYNC 3之后),等待W開始提取架構指令,通過一核102重新載入狀態(tài)不會與 其它核執(zhí)行調試的程序碼及/或硬件互相干擾,其可增加重新產(chǎn)生錯誤并判斷其原因的可 能性。
[0107] 該些好處提供比現(xiàn)有方法更多的優(yōu)點,其現(xiàn)有方法如美國專利US8, 370, 684,其從 所有目的整體上作為參考被引用于此,其無法享有能夠取得該同步請求核的好處。 。…引 高諫緩沖巧制操作
[0109] 微處理器100的核102被配置用W執(zhí)行獨立的高速緩沖控制操作,像是在本地高 速緩沖存儲器,例如,不由兩個或更多核102所共享的高速緩沖器。此外,微處理器100被 配置用W執(zhí)行為跨核(Trans-core)的高速緩沖控制操作,例如,與微處理器100-個W上 的核102相關,W及例如,因其與一共享高速緩沖存儲器119相關。
[0110] 請參閱圖7A?7B,其是顯示微處理器100用W執(zhí)行跨核高速緩沖控制操作的流 程圖。圖7A?7B的實施例描述微處理器100如何執(zhí)行一 x86架構寫回無效緩沖(Write Back and Invalidate Cache, WBINVD)指令。一 WBINVD指令指示執(zhí)行指令的核102寫回 在微處理器100高速緩存存儲器中所有的修改行至系統(tǒng)存儲器并使高速緩存存儲器失效, 或清空(Flush)。該WBINVD指令還指示該核102發(fā)布特別的總線周期W將任意高速緩存存 儲器外部直接指入微處理器100中,W寫回其已修改的數(shù)據(jù),并使上述數(shù)據(jù)失效。上述操作 是W-單一核的角度所描述,但微處理器100的每一核102根據(jù)本說明書操作共同寫回已 修改高速緩沖線(Modified cache line)并使微處理器100的高速緩沖存儲器無效。更具 體地說明,圖7A?7B描述一核遇到WBINVD指令的操作,其流程開始于方塊702,并且其它 核102的流程開始于方塊752。
[0111] 在方塊702中,核102其中之一遇到一 WBINVD指令。作為響應,核102傳送一 WBINVD指令信息至其它核102并且傳送一核間中斷信號至上述其它核102。更佳地說,直 到流程進行至方塊748/749之前,核102在時間中斷信號被停用的期間內(nèi)(例如,該微碼不 允許其本身被中斷),阻止微碼W作為WBINVD指令的響應(在方塊702中),或W作為該中 斷信號(在方塊752中)的響應,并維持在微碼中。流程從方塊702進行到方塊704。
[0112] 在方塊752中,其它核102其中之一(例如,除了在方塊702中所遇到該WBINVD 指令核102之外的一核)由于在方塊702中被傳送的該核間中斷信號而被中斷并接收該 WBINVD指令信息。如上所述,雖然流程在方塊752是由單一核102的角度所描述,但每一其 它核102 (例如,不為在方塊702中的核102)在方塊752中被中斷并接收該信息,且執(zhí)行方 塊704至方塊749的步驟。流程由方塊752進行到方塊704。
[0113] 在方塊704中,該核102寫入一同步情況4的同步請求(在圖7A?7B中標示為 SYNC 4)至其同步暫存器108中。因此,控制單元104使核102進入睡眠狀態(tài)。流程進行到 方塊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進入睡眠狀 態(tài)。流程進行到方塊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中的中間操作(圖未示出) 被執(zhí)行,其為由在晶片中核102其中之一執(zhí)行寫回及使共享緩沖存儲器失效,而該晶片的 其它(多個)核回到類似于方塊724中的睡眠狀態(tài)W等待直到該高速緩沖存儲器失效為 止。流程進行到方塊724。
[0120] 在方塊724中,核102寫入一 SYNC 6,其造成控制單元104使核102進入睡眠狀 態(tài)。流程進行到方塊726。
[0121] 在方塊726中,當所有核102已寫入SYNC 6時,核102由控制單元104所喚醒。流 程進行到判斷方塊727。
[0122] 在判斷方塊727中,核102判斷其是否為在方塊702中遇到WBINVD指令的核 102 (與在方塊752中所接收該WBINVD指令信息的核102相對照)。若是,則流程進行到方 塊728 ;否則,流程前進到方塊744。
[0123] 在方塊728中,核102發(fā)布特定的總線周期W造成外部高速緩沖器被寫回并使外 部高速緩沖器失效。流程進行到方塊744。
[0124] 在方塊744中,寫入一 SYNC 13,其造成控制單元104使核102進入睡眠狀態(tài)。流 程進行到方塊746。
[01巧]在方塊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。
[012引在方塊749,在核102在方塊752中被中斷之前,核102在方塊749恢復繼續(xù)其正 執(zhí)行的任務102。流程結束于方塊749。
[0129] 參閱圖8,其是顯示根據(jù)圖7A?7B流程圖的微處理器100的操作時序圖。在此例 子中,微處理器100配置具有H個核102,標示為核0、核1及核2,如圖所示。然而,應可理 解的是,在其它實施例中,微處理器100可包括不同數(shù)量的核102。
[0130] 核0遇到一 WBINVD指令并響應傳送一 WBINVD指令信息,且中斷核1及核2 (每一 方塊702)。核0接著寫一 SYNC 4并進入睡眠狀態(tài)(每一方塊704)。
[0131] 每一核1及核2最后從其當前任務中被中斷并讀取該信息(每一方塊752)。作為 響應,每一核1及核2寫入一 SYNC 4并進入睡眠狀態(tài)(每一方塊704)。如圖所示,每一核 寫入SYNC 4的時間可能不同。
[0132] 當所有核已經(jīng)寫入SYNC 4時,控制單元104同時喚醒所有核(每一方塊706)。每 一核接著寫回并使其特定的高速緩沖存儲器失效(每一方塊708),寫入SYNC 5并進入睡眠 狀態(tài)(每一方塊714)。需寫回及使高速緩沖存儲器失效的時間量可能不同,因此,在每一核 寫入SYNC 5的時間可能不同,如圖所不。
[0133] 當所有核已寫入SYNC 5時,控制單元104同時喚醒所有核(每一方塊716)。僅遇 到WBINVD指令的核寫回并使共享高速緩沖存儲器119失效(每一方塊718),W及所有核 寫入SYNC 6并進入睡眠狀態(tài)(每一方塊724)。由于僅一核寫回并使共享高速緩沖存儲器 119失效,因此每一核寫入SYNC 6的時間可能不同。
[0134] 當所有核已寫入SYNC 6時,控制單元104同時喚醒所有核(每一方塊726)。僅 遇到WBINVD指令的核完成WBINVD指令(每一方塊748),W及所有其它核恢復中斷前的處 理。
[01巧]應可理解的是,雖然高速緩沖控制指令為一 x86 WBINVD指令的實施例已被描述, 但其它實施例可W假設同步請求被用W執(zhí)行其它高速緩沖指令。例如,微處理器100可執(zhí) 行類似的動作,W使無需寫回高速緩沖數(shù)據(jù)(在方塊708和718)而執(zhí)行一 X86 INVD指令 并簡單地使高速緩沖器失效。再舉另一例子來說,高速緩沖控制指令可由比X86架構更不 相同的指令集架構得到。 陽13引 由源管巧操作
[0137] 在微處理器100的核102被配置用W執(zhí)行各個功率減少的操作,例如,但不局限 于,停止執(zhí)行指令、請求控制單元104停止傳送時脈信號至核102、請求控制單元104由移除 核102的電源,寫回并使核102的本地(例如,非共享)高速緩沖存儲器失效及儲存核102 的狀態(tài)至一外部存儲器,如專用隨機存取存儲器116。當一核102已執(zhí)行一或多個核指定的 功率減少操作時,其已進入一"核"C-狀態(tài)(也被稱為一核閑置狀態(tài)或核睡眠狀態(tài))。在一 實施例中,C-狀態(tài)值可大致對應到已知高級配置和電源接口(Advanced Configuration and Power Interface,ACPI)規(guī)格處理器狀態(tài),但也可包括更精細的粒度(Granularity)。一般 而言,一核102將進入一核C-狀態(tài)W響應來自上述操作系統(tǒng)的請求。舉例來說,x86架構 監(jiān)視等待(MWAIT)指令是一電源管理指令,其提供一提示,即一目標C-狀態(tài),至執(zhí)行指令的 核102 W允許微處理器100進入一最佳化狀態(tài),像是一較低功率耗損狀態(tài)。在一 MWAIT指 令的情況下,目標C-狀態(tài)是專屬的(proprietary)而非ACPI C-狀態(tài)。核C-狀態(tài)O(CO) 對應于核102的運行狀態(tài)并且C-狀態(tài)逐漸增加的值對應逐漸減少的活動或響應狀態(tài)(如 C1、C2、C3等狀態(tài))。一逐漸減少的響應或活動狀態(tài)是指相對于一更多活動或響應狀態(tài)節(jié)省 更多功率的配置或操作狀態(tài),或由于某種原因而相對減少響應的配置或操作狀態(tài)(例如, 具有一較長的喚醒延遲、較少完全啟用)。一核102可能節(jié)省功率操作的例子為停止指令的 執(zhí)行、停止傳送時脈信號、降低電壓、和/或移除核的部分(例如,功能單元和/或本地高速 緩沖器)或整個核的電源。
[0138] 此外,微處理器100被配置用W執(zhí)行跨核的功率減少操作??绾斯β蕼p少操作牽 連或影響微處理器100的多個核102。舉例來說,共享高速緩沖存儲器119可W是大的且相 對消耗大量的功率。因此,顯著的功率節(jié)省可通過移除傳送至共享高速緩沖存儲器119的 時脈信號和/或電源來達成。然而,為了移除至共享高速緩沖存儲器119的時脈信號和/ 或電源,所有共享高速緩沖存儲器的核102必須同意W使數(shù)據(jù)的一致性得到維持。實施例 考慮該微處理器100包括其它共享電源相關的資源,像是共享時脈和電源。在一實施例中, 微處理器100被禪接至包括一存儲器控制器、外圍控制器和/或電源管理控制器的系統(tǒng)晶 片組。在其它實施例中,一或多個控制器被整合至微處理器100中。系統(tǒng)省電可由微處理 器100通知控制器使控制器采取省電的動作來達成。舉例來說,微處理器100可W通知控 制器使微處理器的高速緩沖存儲器失效并關閉,W使其無須被偵查。
[0139] 除了一核C-狀態(tài)的概念外,微處理器100 -般來說具有一"封裝"的C-狀態(tài)(也 被稱為一封裝閑置狀態(tài)或封裝睡眠狀態(tài))。封裝C-狀態(tài)對應核102的最低(例如,最高功 率消耗)共同核C-狀態(tài)(例如,請參閱圖2中的欄位246及圖3的方塊318)。然而,除 了核特定的功率減少操作外,封裝C-狀態(tài)涉及到執(zhí)行一或多個跨核功率減少操作的微處 理器100。與封裝C-狀態(tài)相關的跨核省電操作例子包括關閉一產(chǎn)生時脈信號的鎖相回路 (Phase-locked-loop,P化),并清空該共享高速緩沖存儲器119,且停止其時脈和/或電源, 其使存儲器/外部控制器避免偵查微處理器100的本地共享高速緩沖存儲器。其它例子 為改變電壓、頻率和/或總線時脈比、減少高速緩沖存儲器的大小,如共享高速緩沖存儲器 119,并W-半的速度運行共享高速緩沖存儲器119。
[0140] 在許多情況下,操作系統(tǒng)被有效地用W執(zhí)行在單獨核102中的指令,因此可令單 獨核進入睡眠狀態(tài)(例如,至一核C-狀態(tài)),但不具有直接令微處理器100進入睡眠狀態(tài) (例如,至封裝C-狀態(tài))的方式。有益地,在實施例中描述微處理器100的核102在控制單 元104的幫助下互相合作地工作,W偵測當所有核102已進入核C-狀態(tài)并準備使跨核的省 電操作發(fā)生。
[0141] 請參閱圖9,其是顯示微處理器100進入一低功率封裝C-狀態(tài)的操作流程圖。圖 9的實施例描述微處理器100禪接至一晶片組并使用MWAIT指令執(zhí)行的例子。然而,應可理 解的是,在其它實施例中,操作系統(tǒng)采用其它電源管理指令W及主要核102與整合至微處 理器100內(nèi)的控制器互相通信,并使用一不同的握手(Handshake)協(xié)議來描述。
[0142] 此操作是W-單一核的角度來描述,但該微處理器100的每一核102可能會遇到 MWAIT指令并根據(jù)本說明書操作共同使微處理器100進入最佳狀態(tài)。流程開始于方塊902。
[0143] 在方塊902中,一核102遇到一用于指定目標C-狀態(tài)的MWMT指令,在圖9中標 示為Cx,其中X是一非負整數(shù)值。流程進行到方塊904。
[0144] 在方塊904中,核102寫入一 C位224集合及一 C-狀態(tài)欄位226值為X (在圖9中 標示為SYNC Cx)的同步請求至其同步暫存器108。此外,同步請求在其喚醒事件欄位204 中指定核102在所有喚醒事件中被喚醒。因此,控制單元104令核102進入睡眠狀態(tài)。更佳 地說,核102在寫入SYNC Cx之前,核102先寫回并使其寫入的本地高速緩沖存儲器失效。 流程進行到方塊906。
[0145] 在方塊906中,當所有核102已寫入一 SYNC Cx信號時,核102被控制單元104喚 醒。如上所述,由其它核102寫入的X值可能不同,并且控制單元104發(fā)出最低常用C-狀態(tài) 值至狀態(tài)暫存器106狀態(tài)字242的最低常用C-狀態(tài)欄位246中(每一方塊318)。在方塊 906之前,而核102處于睡眠狀態(tài)時,其可由一喚醒事件所喚醒,像是一中斷信號(例如,方 塊305和306)。更具體地說,但不保證該操作系統(tǒng)將執(zhí)行所有核102的MWAIT指令,其可允 許在一喚醒事件發(fā)生(例如,中斷)指示核102其中之一有效地取消MWAIT指令之前,微處 理器100執(zhí)行與封裝C-狀態(tài)相關的省電操作。然而,在方塊906中,一旦核102被喚醒,在 時脈中斷停用的期間內(nèi)(例如,微碼不允許其本身被中斷),核102 (事實上,所有的核102) 由于(在方塊902中)的MWAIT指令仍執(zhí)行微碼,并維持在微碼中,直到方塊924為止。換 句話說,雖然所有核102中少部分已接收MWAIT指令W進入睡眠狀態(tài),單獨的核102可處于 睡眠狀態(tài)中,但作為一封裝的微處理器100不會指示該晶片集其已準備進入一封裝睡眠狀 態(tài)。然而,一旦所有核102已同意進入一封裝睡眠狀態(tài),其由在方塊906中同步情況的發(fā)生 有效地指示,主要核102被允許與晶片組完成一封裝睡眠狀態(tài)握手協(xié)議(例如,方塊908、 909和W下921),且未被中斷及未有任何其它核102被中斷。流程進行到判斷方塊907。
[0146] 在判斷方塊907中,核102判斷其是否為微處理器100的主要核102。更佳地說, 若判斷在重設時間其為BSP時,一核102為主要核102。若該核為主要核時,流程前進到方 塊908 ;否則,流程前進到方塊914。
[0147] 在方塊908中,主要核102寫回并使共享高速緩沖存儲器119失效,接著與可W 采取適當行動W減少功率消耗的該晶片集通信。舉例來說,由于當微處理器100處于封裝 C-狀態(tài)時,存儲器控制器和/或外部控制器皆維持失效,因此存儲器控制器和/或外部控制 器可避免偵測微處理器100的本地和共享高速緩沖存儲器。舉另一例子說明,該晶片組可 傳輸信號至微處理器100使微處理器100采取省電操作(例如,如下所述的確立X86-Style STPCLK、SLP、DPSLP、NAP、V畑SLP信號)。更佳地說,核102基于最低常用的C-狀態(tài)欄位 246值進行功率管理信息的通信。在一實施例中,核102發(fā)布一 I/O讀取總線周期至一提供 晶片組相關的電源管理信息,例如,封裝C-狀態(tài)值的I/O地址。流程進行到方塊909。
[0148] 在方塊909中,主要核102等待晶片組確立(assert)STPCLK信號。更佳地說,若 STPCLK信號在一預定數(shù)亮的時脈周期后未被確立時,控制單元104在中止其正進行的同步 請求后,偵測此情況,喚醒所有核102并在錯誤碼欄位248中指示該錯誤。流程前進到方塊 914。
[0149] 在方塊914中,該核102寫入一 SYNC 14。在一實施例中,該同步請求在其喚醒事 件欄位204中指定該核102未在任何喚醒事件中被喚醒。因此,控制單元104令核102進 入睡眠狀態(tài)。流程進行到方塊916。
[0150] 在方塊916中,當所有核102已寫了一 SYNC 14時,核102由控制單元104所喚醒。 流程進行到判斷方塊919。
[015。 在判斷方塊919中,核102判斷其是否為微處理器100的主要核102。若是,則流 程前進到方塊921 ;否則,流程前進到方塊924。
[0152] 在方塊921中,主要核102在微處理器100總線中發(fā)出一停止允許(grant)周期 W通知該晶片組其可能采取跨核(例如,封裝周邊)與微處理器100整體相關的省電操作, 像是避免微處理器100高速緩沖存儲器的偵查、移除總線時脈(例如,x86-型BCLK)至微處 理器100,并確立其它在總線中的信號(例如,x86-型SLP、DPSLP、NAP、V畑SLP),W使微處 理器100移除時脈和/或電源至微處理器100的各個部分。雖然描述于本文中的實施例涉 及到微處理器100及一與I/O讀取相關的晶片集間的一握手協(xié)議(在方塊908中),STPCLK 的確立(在方塊909中),并停止允許周期的發(fā)布(在方塊921中),其與x86基礎架構系 統(tǒng)有歷史相關,應可理解的是,其它實施例假設與其它具有不同協(xié)議指令集基礎架構系統(tǒng) 相關,但也可節(jié)省電能、提高性能和/或降低復雜度。流程進行到方塊924。
[0153] 在方塊924中,核102寫入一睡眠請求(例如,睡眠位212為設置(set)及S位222 為清除(clear)的睡眠請求)至同步暫存器108。此外,同步請求在其喚醒事件欄位204指 示核 102 僅在 STP化K 非確立喚醒事件(wakeup event of the de-assertion of STP化K, 目P,解除確立的STPCLK的喚醒事件)中被喚醒。因此,控制單元104令核102進入睡眠狀 態(tài)。流程結束于方塊924。
[0154] 請參閱圖10,其是顯示根據(jù)圖9流程圖微處理器100操作實施例的時序圖。在此 例子中,微處理器100配置具有H個核102,標示為核0、核1及核2,如圖所示。然而,應可 理解的是,在其它實施例中,微處理器100可包括不同數(shù)量的核102。
[0155] 核0遇到一指定C-狀態(tài)4的MWAIT指令(MWAIT C4)(每一方塊902)。核0接著 寫一 SYNC C4并進入睡眠狀態(tài)(每一方塊904)。核1遇到一指定C-狀態(tài)3的MWMT指令 (MWAIT C3)(每一方塊902)。核I接著寫一 SYNC C3并進入睡眠狀態(tài)(每一方塊904)。核 2遇到一指定C-狀態(tài)2的MWMT指令(MWMT C2)(每一方塊902)。核2接著寫一 SYNC C2 并進入睡眠狀態(tài)(每一方塊904)。如圖所示,在每一核寫入SYNC Cx的時間可能不同。事 實上,在一些其它事件發(fā)生之前,例如一中斷,一或多個核可能不會遇到一 MWAIT指令。
[0156] 當所有核已經(jīng)寫入SYNC Cx時,控制單元104同時喚醒所有核(每一方塊906)。主 要核接著發(fā)出I/O讀取總線周期(每一方塊908),并等待STPCLK的確立(每方塊909)。所 有的核寫入一 SYNC 14,并進入睡眠狀態(tài)(每一方塊914)。由于只有主要核清空(Flush)共 享高速緩沖存儲器119,發(fā)出I/O讀取總線周期并等待STPCLK確立,因此每一核寫入SYNC 14的時間可能不同,如圖所示。事實上,主要核在其它核后可W幾百微砂的順序寫入SYNC 14。
[0157] 當所有核寫入SYNC 14時,控制單元104同時喚醒所有核(每一方塊916)。僅一 主要核發(fā)出停止允許周期(Stop grant cycle)(每一方塊921)。所有核寫入在STPCLK非 確立信號(?STPCLK)中等待的一睡眠請求并進入睡眠狀態(tài)(每一方塊924)。由于僅主要 核發(fā)出停止允許周期,因此每一核寫入睡眠請求的時間可能不同,如圖所示。
[0158] 當STPCLK信號被解除確立(de-asseded)時,控制單元104喚醒所有核。
[0159] 由圖10可觀察到,當核0執(zhí)行握手協(xié)議時,核1和核2有益地可休眠一段有效的 時間。然而,應當注意的是,需將微處理器100從封裝睡眠狀態(tài)中喚醒所需的時間通常與休 眠時間長度成正比(例如,在睡眠狀態(tài)時節(jié)省多大的功率)。因此,在封裝睡眠狀態(tài)相對較 久的情況下(或者甚至其中一單獨的核102睡眠狀態(tài)時間是較長的),希望能進一步減少喚 醒的發(fā)生及/或與握手協(xié)議相關所需喚醒的時間。圖11描述單一核102處理的握手協(xié)議, 而另一核102繼續(xù)處于睡眠狀態(tài)的一實施例。此外,根據(jù)圖11的實施例中,節(jié)省功率進一 步可通過降低響應一喚醒事件而被喚醒的核102數(shù)量而取得。
[0160] 請參閱圖11,其是根據(jù)本發(fā)明另一實施例的微處理器100進入一低功率封裝C-狀 態(tài)的操作流程圖。圖11的實施例使用微處理器100禪接至晶片組中MWAIT指令執(zhí)行的例 子進行說明。然而,應可理解的是,在其它實施例中,操作系統(tǒng)采用其它電源管理指令,并且 最后同步的核102與整合至微處理器100中,且采用與描述不同握手協(xié)議的控制器通信。
[0161] 圖11的實施例在一些方面與圖9的實施例相似。然而,在現(xiàn)存操作系統(tǒng)請求微處 理器100進入非常低的功率狀態(tài)并容忍與其相關延遲的環(huán)境中,圖11的實施例被設計W便 于節(jié)省潛在更大的功率。更具體地,圖11的實施例有利于控制至核的功率并在必要時,女口 處理中斷時,喚醒核中僅一核。實施例考慮在該微處理器100支持在圖9及圖11中兩個模 式的操作。此外,模式是可配置的,無論是在制造(例如,通過烙斷器114)和/或經(jīng)由軟件 控制或由微處理器100依據(jù)由MWMT指令所指定的特定C-狀態(tài)而自動決定。流程開始于 方塊1102。
[016引在方塊1102中,核102遇到用于指定目標C-狀態(tài)的MWAIT指令(MWAIT Cx),其在 圖11中表示為Cx,流程進行到方塊1104。
[0163] 在方塊1104中,核102寫入一 C位224為set及一 C-狀態(tài)欄位226值為X (其在 圖11中標示為SYNC Cx)的同步請求至其同步暫存器108中。同步請求也設置了選擇性喚 醒(S化WAK巧位214及PG位208。此外,同步請求在其喚醒事件欄位204中指示核102在 所有喚醒事件中被喚醒,除了 STPCLK的確立和STPCLK的非確立(?STPCLK,即,STPCLK的 解除確立)之外。(更佳地說,有其它喚醒事件,如AP啟動時,該同步請求指定核102不被 喚醒)。因此,控制單元104令核102進入睡眠狀態(tài),其包括因PG位208被設置而阻止提供 功率至核102。此外,核102寫回及使本地高速緩沖存儲器無效,并在寫入同步請求之前儲 存(最好為專用隨機存取存儲器116)其核102的狀態(tài)。當隨后核102被喚醒時(例如,在 方塊1137,1132或1106),核102將(例如,從PRAM 116)恢復其狀態(tài)。如上所述,特別是相 對于圖3,當最后核102寫入一具有選擇性喚醒位214設置的同步請求時,除了最后寫入核 102夕b該控制單元104會自動阻止所有核102的所有喚醒事件(每一方塊326)。流程進 行到方塊1106。
[0164] 在方塊1106中,當所有核102已經(jīng)寫入一 SYNC Cx時,控制單元104喚醒最后寫 入的核102。如上所述,控制單元104維持其它核102的S位222設置,即使控制單元104 喚醒最后寫入的核102并清除S位。在方塊1106之前,當核102處于睡眠狀態(tài)時,其可由 一喚醒事件被喚醒,如一中斷。然而,一旦核102在方塊1106中被喚醒時,核102因MWAIT 指令(方塊1102)仍執(zhí)行微碼,并在中斷被停用的期間內(nèi)(例如,該微碼不允許其本身被中 斷)保持在微碼中,直到方塊1124為止。換句話說,雖然不超過所有核102已收到一 MWAIT 指令W進入睡眠狀態(tài),僅單獨的核102會休眠,但作為封裝的微處理器100不指示該晶片組 其已準備好進入一封裝睡眠狀態(tài)。然而,一旦所有核102已同意進入一封裝睡眠狀態(tài)時, 其通過在方塊1106的同步狀態(tài)發(fā)生所指示,在方塊906中被喚醒的核102(最后寫入的核 102,其造成同步情況發(fā)生)被允許與晶片組完成封裝睡眠狀態(tài)握手協(xié)議(例如,如下所示 的方塊1108U109和1121)而不會被中斷,且沒有任何其它的核102被中斷。流程進行到 方塊1108。
[0165] 在方塊1108中,核102寫回并使共享高速緩沖存儲器119失效,接著與晶片組通 信,其可能會采取適當?shù)男袆樱琖減少功率消耗。流程進行到方塊1109。
[0166] 在方塊1109中,核102等待晶片組W確立STPCLK信號。更佳地說,如果STPCLK 信號在一時脈周期預定數(shù)量后未確立時,控制單元104偵測此情況,并在終止其正進行的 同步請求后喚醒所有核102,且在錯誤碼欄位248中指示該錯誤。流程進行到方塊1121。
[0167] 在方塊1121中,核102發(fā)出一停止允許周期至總線上的晶片組。流程進行到方塊 1124。
[016引在方塊1124中,核102寫入一睡眠請求,例如,具有睡眠位212為設置(set)及S 位222為清除(clear)及PG位208為設置(set),至同步暫存器108中。此外,同步請求在 其喚醒事件欄位204中指定該核102僅在解除確立STPCLK的喚醒事件中被喚醒。因此,控 制單元104令核102進入睡眠狀態(tài)。流程進行到方塊1132。
[0169] 在方塊1132中,控制單元104偵測STPCLK非確立并喚醒核102。應注意的是,先 前控制單元104喚醒核102,控制單元104也未限制電源至核102。有益的是,此時核102 是唯一正在運作的核,該提供核102機會W使其執(zhí)行任何必須被執(zhí)行的動作,而沒有其它 核102正在運作。流程進行到方塊1134。
[0170] 在方塊1134中,核102寫入至控制單元104的一暫存器(圖未示出)中W解開在 其對應同步暫存器108的喚醒事件欄位204中所指定每一其它核102的喚醒事件。流程進 行到方塊1136。
[0171] 在方塊1136中,核102處理任何正進行指定該核102的喚醒事件。舉例來說,在 一實施例中,包括微處理器100的系統(tǒng)允許有向化Oth directed)的中斷(例如,指向微處 理器100 -特定核的中斷)和非向(non-directed)的中斷(例如,當微處理器100選擇 時,可由微處理器100的任一核102所處理的中斷)。一非向中斷的例子通常被稱為一"低 優(yōu)先級中斷"。在一實施例中,微處理器100最好指向非向中斷至在方塊1132的解除確立 STPCLK中被喚醒的單一核102,由于它已被喚醒,并能處理該中斷W期望其它核102不具有 任何正進行的喚醒事件,因此可W繼續(xù)睡眠并限制電源。流程返回到方塊1104。
[0172] 當喚醒事件在方塊1134中被解除(unblcked)時,除了在方塊1132中已被喚醒的 核102之外,如果核102沒有指定的喚醒事件正在進行,則有利于核102繼續(xù)處于睡眠狀 態(tài),并在每一方塊1104中限制電源。然而,當喚醒事件在方塊1134中被解除時,如果一指 定的喚醒事件正由核102處理,則核將不限制電源(un-power-gated),并由控制單元104喚 醒。在此情況下,不同的流程開始于圖11中的方塊1137。
[0173] 在方塊1137中,在喚醒事件在方塊1134中被解除后,另一核102 (例如,除了在方 塊1134中解除喚醒事件核102之外的核102)被喚醒。其它核102處理任何正進行并指向 其它核102的喚醒事件,例如,處理一中斷。流程從方塊1137進行到方塊1104。
[0174] 請參閱圖12,其是顯示根據(jù)圖11流程圖的微處理器100操作一例子的時序圖。在 此例子中,微處理器100配置具有H個核102,標示為核0、核1和核2,如圖所示。然而,應 可理解的是,在其它實施例中,微處理器100可包括不同數(shù)量的核102。
[01巧]核0遇到一指定C-狀態(tài)7的MWMT指令(MWMT C7)(每一方塊1102)。在此例子 中,C-狀態(tài)7允許限制電源。核0接著寫入一選擇性喚醒位214為設置(set)(如圖12中 所示的"選擇性喚醒")及PG位208為設置(set)的SYNC C7,并進入睡眠狀態(tài)及限制電源 (每一方塊1104)。核1遇到一指定C-狀態(tài)為7的MWMT指令(每一方塊1102)。核1接 著寫入選擇性喚醒位214為設置(set)及PG位208為設置(set)的SYNC C7,并進入睡眠 狀態(tài)及限制電源(每一方塊1104)。核2遇到一指定C-狀態(tài)為7的MWMT指令(每一方 塊1102)。核2接著寫入具有選擇性喚醒位214為設置(set)及PG位208為設置(set)的 SYNC C7,并進入睡眠狀態(tài)及限制電源(每一方塊1104)。(然而,在描述于方塊314-最佳 的實施例中,最后寫入的核無法限制電源)。如圖所示,每一核的寫入同SYNC C7的時間可 能不同。
[0176] 當最后寫入的核寫入具有選擇性喚醒位214為設置(set)的SYNC C7時,該控制 單元104阻擋化lock off)所有最后寫入核的喚醒事件(每一方塊326),在圖12的例子為 核2。此外,控制單元104僅喚醒最后寫入的核(每一方塊1106),因其它核持續(xù)睡眠且限 制電源,而核2與晶片組執(zhí)行握手協(xié)議,因此可節(jié)省功率。核2接著發(fā)出I/O讀取總線周期 (每一方塊1108),并等待STPCLK的確立(每一方塊1109)。為了響應STPCLK,核2發(fā)出停 止允許周期(每一方塊1121),并寫入一具有在STPCLK解除中等待PG位208為設置(set) 的睡眠請求并進入睡眠狀態(tài)及限制功率(每一方塊1124)。上述核可W休眠并限制功率一 段相對長的時間。
[0177] 當STPCLK無法確立時,控制單元104僅喚醒核2 (每一方塊1132)。在圖12的例 子中,該晶片組無法確立STPCLK W響應一非向中斷的接收,其轉發(fā)至微處理器100。微處理 器100指示非向中斷至核2,其因其它核繼續(xù)處于睡眠狀態(tài)及限制電源而節(jié)省功率。核解除 其它核(每一方塊1134)的喚醒事件并服務非向中斷(每一方塊1136)。核2接著重新寫 入一具有選擇性喚醒位214為設置(set)及PG位208為設置(set)的SYNC C7,并進入睡 眠狀態(tài)且限制電源(每一方塊1104)。
[0178] 當核2寫入具有選擇性喚醒位214為設置(set)及PG位208為設置(set)的SYNC C7時,由于其它核的同步請求仍正在進行,例如,其它核的S位222并非由核2喚醒所清除, 因此該控制單元104阻擋化lock off)除了核2之外所有核的喚醒事件,例如,最后寫入核 (每一方塊326)。此外,控制單元104僅喚醒核102(每一方塊1106)。核2接著發(fā)出I/O讀 取總線周期(每一方塊1108),并等待STPCLK的確立(每一方塊1109)。為了響應STPCLK, 核2發(fā)出停止允許周期(每一方塊1121),并寫入一具有在STPCLK無法確立中等候的PG位 208為設置(set)的睡眠請求,并進入睡眠狀態(tài)且限制功率(每一方塊1124)。
[0179] 當STPCLK無法確立時,控制單元104僅喚醒核2 (每一方塊1132)。在圖12的例 子中,STPCLK因其它非向中斷而被解除確立。因此,微處理器100指示該中斷至核2,該可 節(jié)省功率。核2再解除其它核的喚醒事件(每一方塊1134)并服務該非向中斷(每一方塊 1136)。核2接著再寫入一具有選擇性喚醒位214為設置(set)及PG位208為設置(set) 的SYNC C7,并進入睡眠狀態(tài)且限制功率(每一方塊1104)。
[0180] 此周期可持續(xù)相當長的時間,即僅非向中斷被產(chǎn)生。圖13是顯示一指示一除了最 后寫入核之外不同核中斷處理的例子。
[0181] 可通過比較圖10和圖12知道,在圖12中的實施例較為有利,一旦核102開始進 入睡眠狀態(tài)(在圖12的例子中寫入SYNC C7之后),僅一核102被再次喚醒W與晶片組執(zhí) 行握手協(xié)議,且其它核102保持睡眠,若核102處在一相當長的睡眠狀態(tài)下,則可為一顯著 的優(yōu)點。功率節(jié)省可能非常顯著,特別是在操作系統(tǒng)識別在系統(tǒng)中對于單一核102處理工 作負載非常小的情況下。
[0182] 此外,有利的是,只要沒有喚醒事件被指示到其它核102,則僅一核102被喚醒(W 提供服務非向事件,像是一低優(yōu)先級中斷)。再來,若核102處于一相當長的睡眠狀態(tài),則可 能具有顯著的優(yōu)勢。除了相對不頻繁的非向中斷,如USB中斷,尤其是在系統(tǒng)中不具有有效 負載的情況下,功率節(jié)省可W是顯著的。更進一步地,即使一喚醒事件發(fā)生被指示到另一核 102時(例如,中斷操作系統(tǒng)指示至一單一核102,像是操作系統(tǒng)定時器中斷),實施例可有 利地動態(tài)切換單一核102,其執(zhí)行封裝睡眠狀態(tài)協(xié)議及服務非向喚醒事件,如圖13所示,W 便享有喚醒僅一單一核102的好處。
[0183] 請參閱圖13,其是顯示根據(jù)圖11流程圖的微處理器100操作一例子的時序圖。圖 13的例子在許多方面與圖12的例子相似。然而,在STPCLK被解除確立的第一實例中,該中 斷是一指向核1的中斷(而不是圖12例子中的一非向中斷)。因此,控制單元104喚醒核 2(每一方塊1132),并接著在喚醒事件由核2解除(每一方塊1134)后喚醒核1。核2接著 再寫入一具有選擇性喚醒位214為設置(set)及PG位208為設置(set)的SYNC C7,并進 入睡眠狀態(tài)且限制功率(每一方塊1104)。
[0184] 核1服務定向中斷(每一區(qū)塊1137)。核1接著再次寫入具有選擇性喚醒位214 為設置(set)及PG位208為設置(set)的SYNC C7,并進入睡眠狀態(tài)且限制功率(每一方 塊1104)在此例子中,核2在核1寫入SYNC C7前寫入其SYNC C7。因此,雖然核0在其寫 入初始SYNC C7時仍具有其S位222set,但核1當其被喚醒時S位222仍被清除。因此,當 核2在解除喚醒事件后寫入SYNC C7時,并非最后核寫入同步C7請求,相反地,核1成為最 后的核寫同步C7請求。
[018引當核1寫入一具有選擇性喚醒位214為設置(set)及PG位208為設置(set)的 SYNC C7時,因核0的同步請求仍正在進行(例如,其沒有被核1及核2的喚醒所清除), 而核2(在此例中)已寫入SYNC 14請求,所W該控制單元104阻擋除了核1之外所有核 的喚醒事件,例如,最后寫入核(每一方塊326)。此外,控制單元104僅喚醒核1 (每一方 塊1106)。核1接著發(fā)出I/O讀取總線周期(每一方塊1108),并等待STPCLK確立(每一 方塊1109)。為了響應STPCLK,核1發(fā)出停止允許周期(每一方塊1121),并寫入具有等待 STPCLK解除確立的PG位208為設置(set)的睡眠請求,并進入睡眠狀態(tài)且限制功率(每一 方塊1124)。
[0186] 當STPCLK被解除確立時,控制單元104僅喚醒核1 (每一方塊1132)。在圖12的 例子中,STPCLK由于一非向中斷而解除確立;因此,微處理器100指示非向中斷至核1,其可 節(jié)省功率。由核1處理非向中斷的周期可持續(xù)相當長的時間,即,僅非向中斷被產(chǎn)生。在此 種方式中,微處理器100可有利地通過指示非向中斷至核102使最近的中斷被指示W(wǎng)節(jié)省 功率,其示于與切換至一不同核相關圖13的例子中。核1再次解除其它核的喚醒事件(每 一方塊1134)并服務非向中斷(每一方塊1136)。核1接著再次寫入一具有選擇性喚醒位 214為設置(set)及PG位208為設置(set)的SYNC C7,并進入睡眠狀態(tài)且限制功率(每 一方塊 1104)。
[0187] 應可理解的是,雖然電源管理指令為一x86 MWAIT指令的實施例已被描述,但其它 同步請求被使用W執(zhí)行電源管理指令的實施例可W被考慮。舉例來說,微處理器100可執(zhí) 行類似操作W響應由一組具有不同C-狀態(tài)相關的預設I/O端口地址的讀取。在舉另一例 子,功率管理指令可由與X86架構不同的指令集架構得到。 陽18引 《核化巧器的動杰軍新配晉
[0189] 微處理器100的每一核102基于微處理器100每一核102的配置產(chǎn)生配置相關的 值。更佳地說,每一核102的微碼產(chǎn)生、儲存并使用配置相關的值。實施例描述配置相關值 的產(chǎn)生可W是動態(tài)且有益的,其描述如下。配置相關值的例子包括,但不局限于W下內(nèi)容。
[0190] 每一核102產(chǎn)生一與上述圖2相關的整體核數(shù)量。與僅在核102中駐留晶體406 的核102相關的核102的本地核數(shù)量256相比,整體核數(shù)量是指與微處理器100所有核102 相關的整體核102的核數(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ù)量減去具有一低于即 時核102的整體核數(shù)量的整體核數(shù)量的停用核102數(shù)量。因此,在該微處理器100的所有 核102可用的情況下,整體核數(shù)量與虛擬核數(shù)量是相同的。然而,若一或多個核102停用、 有缺陷時,一核102的虛擬核數(shù)量可能不同于其整體核數(shù)量。在一實施例中,每一核102填 入其虛擬核數(shù)量至其對應的APIC ID暫存器的APIC ID欄位。然而,根據(jù)另一實施例(例 女口,圖22和圖23),則不屬于此種情況。此外,在一實施例中,操作系統(tǒng)可更新在APIC ID暫 存器中的APIC ID。
[019引每個核102還產(chǎn)生一 BSP旗標,其指示該核102是否為BSP。在一實施例中,一般來 說(例如,當在圖23中"所有核BSP"的功能停用時)一核102指定本身為引導序列處理器 炬ootstrap Processor, BSF0且每一其它核102指定其本身為一應用處理器(Application Processor, AP)。在重設之后,AP核102進行初始化,接著進入睡眠狀態(tài)等待BSP通知開始 讀取并執(zhí)行指令。相反地,在AP核102初始化之后,BSP核102立即開始讀取并執(zhí)行系統(tǒng) 固件的指令,例如,BIOS啟動碼,其用W初始化系統(tǒng)(例如,驗證系統(tǒng)存儲器及周邊設備是 否正常工作并初始化和/或配置它們)并引導操作系統(tǒng),例如,載入操作系統(tǒng)(例如,從磁 盤中載入),并將控制轉移至操作系統(tǒng)。在引導操作系統(tǒng)之前,BSP決定系統(tǒng)配置(例如,核 102或邏輯處理器在系統(tǒng)中的數(shù)量),并將其儲存在存儲器中,W使操作系統(tǒng)可在系統(tǒng)配置 啟動后讀取。在操作系統(tǒng)在被引導后,指示AP核102開始讀取并執(zhí)行操作系統(tǒng)指令。在一 實施例中,一般來說(例如,當圖22和圖23中"修改BSP"和"所有核的BSP"的功能,分別 停用時),一核102若其虛擬核數(shù)量為0時,則指定本身為BSP,而所有其它核102指定本身 為一 AP核102。最佳地,一核102填入其BSP旗標相關配置值至對應其APIC的APIC基底 地址暫存器中的BSP旗標位。根據(jù)一實施例中,如上所述,BSP為方塊907及919中的主要 核102,其執(zhí)行圖9的封裝睡眠狀態(tài)握手協(xié)議。
[0194] 每一核102還產(chǎn)生用于填入APIC基底暫存器的一 APIC基值。APIC基底地址基 于核102的APIC ID而產(chǎn)生。在一實施例中,操作系統(tǒng)可更新在APIC基底地址暫存器中的 APIC基底地址。
[0195] 每一核102還產(chǎn)生一晶體主要指示,其指示該核102是否為包括該核102的晶體 406的主要核102。
[0196] 每一核102還產(chǎn)生一晶片主要指示,其指示該核102是否為包括即時核102晶片 的主要核,其中假設該微處理器100被配置有晶片,其詳細描述如上。
[0197] 每一核102計算配置相關值并操作使用該配置相關值,使得包括微處理器100的 系統(tǒng)正常運作。舉例來說,系統(tǒng)基于其相關的APIC ID指示中斷請求至核102。APIC ID決 定核102應響應哪個中斷請求。更具體地說明,每一中斷請求包括一目地識別符,并且一核 102僅當目地識別符與核102的APIC ID匹配時響應一中斷請求(或若該中斷請求識別符 為一用W指示其為一請求所有核102的特殊值)。在舉另一例子,每一核102必須知道其是 否為BSP,W使其執(zhí)行初始BIOS碼并引導操作系統(tǒng),且在一實施例中執(zhí)行如圖9所描述的封 裝睡眠狀態(tài)握手協(xié)議。實施例描述如下(參閱圖22和23),其中BSP旗標和APIC ID可因 特定目的而由其正常的值中作修改,像是用于測試和/或調試。
[019引請參閱圖14,其是顯示微處理器100動態(tài)重新配置的流程圖。在圖14的說明中,W 圖4的多晶體微處理器100作為參考,其包括兩個晶體406和八個核102。然而,應可理解 的是,所描述的動態(tài)重新配置可使用具有不同配置的微處理器100,即具有多于兩個晶體或 單個晶體,且多或少于八個核102但至少兩個核102。此操作是從一單一核的角度所描述, 但微處理器100的每一核102根據(jù)該描述W整體動態(tài)地操作并重新配置該微處理器100。 流程開始于方塊1402。
[0199] 在方塊1402中,微處理器100被重置,且微處理器100的硬件基于可用核102的 數(shù)量及駐留于核104的晶體數(shù)量填入合適的值至每一核102的配置暫存器112中。在一實 施例中,本地核數(shù)量256及晶體數(shù)量258被硬連線化ardwired)。如上所述,硬件可決定是 否由烙斷器114燒斷或未燒斷的狀態(tài)啟用或停用一核102。流程進行到方塊1404。
[0200] 在方塊1404中,核102由配置暫存器112中讀取配置字252。核102接著基于在 方塊1402中所讀取的配置字252值產(chǎn)生其相關值。在多晶體微處理器100配置的情況下, 在方塊1404中所產(chǎn)生的配置相關值將不考慮其它晶體406的核102。然而,在方塊1414及 1424中(W及圖15中方塊1524)所產(chǎn)生的配置相關值將考慮其它晶體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 40她中的核102使與在晶體 B 406B (本地晶體)的配置暫存器112中核E、F、G及H(本地核)相關的致能位254被傳 播至與在晶體A 406A (遠端晶體)的配置暫存器112中核E、F、G及H相關的致能位254。 在一實施例中,核102通過寫入本地配置暫存器112傳播至其它晶體406。更佳地說,通過 核102寫入至本地配置暫存器112使本地配置暫存器沒有發(fā)生改變,但會造成本地控制單 元104傳播本地致能位254值至遠端晶體406中。流程進行至方塊1408。
[0202] 在方塊1408中,核102寫入一同步情況8(在圖8中標示為SYNC 8)的同步請求至 其同步暫存器108中。因此,控制單元104令核102進入睡眠狀態(tài)。流程進行到方塊1412。
[0203] 在方塊1412中,當在由核集合欄位228指定的核集合中所有可用核102已寫入一 SYNC 8時,控制單元104喚醒核102。值得注意的是,在一多晶體406微處理器100配置的 情況下,同步情況發(fā)生可為一多晶體同步情況發(fā)生。也就是說,控制單元104將等待W喚醒 (或在核102未設置睡眠位212從而決定不睡眠的情況下中斷)核102,直到在核集合欄位 228(其可W包括在晶體406中的核102)寫入其同步請求為止。流程進行到方塊1414。
[0204] 在方塊1414中,核102再次讀取配置暫存器112并基于包括由遠端晶體所傳送致 能位254的正確值的配置字252新值產(chǎn)生其配置相關值,流程前進到判斷方塊1416。
[0205] 在判斷方塊1416中,核102決定其是否應停用其本身。在一實施例中,烙斷器114 因該微碼在其重置處理中讀?。ㄅ袛喾綁K1416之前),W指示核102應停用其本身而被燒 斷,故核102決定其需停用其本身。烙斷器114可在微處理器100的制造期間或之后被燒 斷。在另一實施例中,更新的烙斷器114值可被掃描至保持暫存器中,如上所述,并且被掃 描的值指示該核102應被停用。圖15是描述核102由不同的方式判斷其應被停止使用的 另一實施例。若核102決定其應被停用時,流程進行到方塊1417 ;否則,流程進行到方塊 1418。
[0206] 在方塊1417中,核102寫入停用核位236 W使其本身由可用核102的列表中移除, 例如,清除在配置暫存器112的配置字252中其對應的致能位254。此后,核102可防止其 本身執(zhí)行任何更多的指令,更佳地通過設置一或多個位來W關閉其時脈信號,并移除其電 源。流程在方塊1417中結束。
[0207] 在方塊1418中,核102寫入一同步情況9 (在圖14中標示為SYNC 9)的同步請求 至同步暫存器108中。因此,控制單元104令核102進入睡眠狀態(tài)。流程進行到方塊1422。 [020引在方塊1422中,當所有啟用的核102已寫入一 SYNC 9時,核102由控制單元104 所喚醒。此外,在一多晶體406微處理器100配置的情況下,同步情況發(fā)生基于在配置暫存 器112中的已更新值可能為一晶體同步情況發(fā)生。再者,當控制單元104決定一同步情況 是否發(fā)生時,控制單元104將排除考慮在方塊1417中停用其本身的核102。更詳細地說明, 在一情況中,在未停用其本身的核102在方塊1417中寫入同步暫存器108之前,所有其它 核102 (除了停用其本身的核102之外)寫入一 SYNC 9,接著當未停用其本身的核102在 方塊1417中的停用核位設置寫入同步暫存器108時,控制單元104將偵測同步情況的發(fā)生 (在方塊316中)。當控制單元104因停用核102的致能位254為清除的(clear)而決定 同步情況已經(jīng)發(fā)生時,控制單元104不再考慮停用核102。也就是說,由于所有啟用核102, 但不包括停用核102,已經(jīng)寫入SYNC 9,無論停用核102是否已經(jīng)寫入SYNC 9,因此控制單 元104判斷同步情況已經(jīng)發(fā)生。流程進行到方塊1424。
[0209] 在方塊1424中,如果一核102由另一核102在方塊1417中的操作而被停用時,核 102再次讀取配置暫存器112,并且配置字252的新值反映了一停用核102。核102則根據(jù) 配置字252的新值再次產(chǎn)生其配置相關值,其類似于在方塊1414中的方式。一停用核的存 在102可能會造成一些配置相關值不同于在方塊1414中所產(chǎn)生的新值。例如,如上所述,虛 擬核數(shù)量、APIC ID、BSP旗標、BSP基址、主要晶體主要晶片可因停用核102的存在而改變。 下一實施例中,在產(chǎn)生配置相關值后,核102其中之一(例如,BS巧將微處理器100所有核 102整體的一些配置相關值寫入非核專用隨機存取存儲器116,使其可隨后被所有核102讀 取。舉例來說,在一實施例中,整體的配置相關值由核102讀取W執(zhí)行一架構指令(例如, x86 CPUID指令),其指令請求微處理器100有關的整體信息,像是微處理器100的核102 數(shù)量。流程進行到判斷方塊1426。
[0210] 在方塊1426中,核102移除重置并開始提取架構指令。流程結束于方塊1426。
[0211] 請參閱圖15,其是顯示根據(jù)另一實施例中微處理器100動態(tài)重新配置的流程圖。 在圖15的說明中,W圖4的多晶體微處理器100作為參考,其包括兩個晶體406和八個核 102。然而,應可理解的是,所描述的動態(tài)重新配置可使用具有不同配置的微處理器100,即 具有多于兩個晶體或單個晶體,且多或少于八個核102但至少兩個核102。此操作是從一單 一核的角度所描述,但微處理器100的每一核102根據(jù)該描述W整體動態(tài)地操作并重新配 置該微處理器100。更具體地說明,圖15描述了一核102遇到核停用指令的操作,其流程開 始于方塊1502,而另一核102操作,其操作流程開始于方塊1532。
[0212] 在方塊1502中,核102其中之一遇到一用W指示核102停用其本身的指令。在一 實施例中,該指令為一 x86 WRMSR指令。作為響應,核102傳送一重新配置信息至其它核 102并傳送其一核間中斷信號。更佳地說,在時間中斷被停用的期間內(nèi)(例如,該微碼不允 許其自身被中斷),核102阻止微碼W響應該指令,W停用其本身(在方塊1502中),或響 應該中斷(在方塊1532中),并維持在微碼中,直到方塊1526為止。流程由方塊1502進行 到方塊1504。
[0213] 在方塊1532中,其它核102其中之一(例如,除了在方塊1502中遇到停用指令的 核102之外的核)由于在方塊1502中所傳送的核間中斷而被中斷并接收重新配置信息。 如上所述,雖然在方塊1532中的流程由一單一核102的角度所描述,但每一其它核102 (例 女口,并非在方塊1502中的核102)在方塊1532中被中斷并接收該信息且執(zhí)行方塊1504至 1526中的步驟。流程由方塊1532進行到方塊1504。
[0214] 在方塊1504中,核102寫入一同步請況10 (在圖15中標示為SYNC 10)的同步請 求至其同步暫存器108中。因此,控制單元104令核102進入睡眠狀態(tài)。流程進行到方塊 1506。
[0215] 在方塊1506中,當所有可用核102已寫入一 SYNC 10時,核102由控制單元102所 喚醒。值得注意的是,在一多晶體406微處理器100配置的情況下,同步情況發(fā)生可為一多 晶體同步情況發(fā)生。也就是說,控制單元104將等待W喚醒(或在核102尚未決定進入睡 眠狀態(tài)的情況下中斷)核102,直到在核集合欄位228 (其可W包括在晶體406中的核102) 所指定且可啟用(其由致能位所指示)的核102寫入其同步請求為止。流程進行到判斷方 塊 1508。
[0216] 在判斷方塊1508中,核102判斷其是否為一在方塊1502中被指示W(wǎng)停用其本身 的核102。若是,流程進行到方塊1517 ;否則,流程進行到方塊1518。
[0217] 在方塊1517中,核102寫入停用核位236 W使其本身由可用核102的列表中移除, 例如,清除在配置暫存器112的配置字252中其對應的致能位254。此后,核102可防止其 本身執(zhí)行任何更多的指令,更佳地通過設置一或多個位來W關閉其時脈信號,并移除其電 源。流程在方塊1517中結束。
[021引在方塊1518中,核102寫入一同步情況11(在圖15中標示為SYNC 11)的同步 請求至同步暫存器108中。因此,控制單元104令核102進入睡眠狀態(tài)。流程進行到方塊 1522。
[0219] 在方塊1522中,當所有啟用的核102已寫入一 SYNC 11時,核102由控制單元104 所喚醒。此外,在一多晶體406微處理器100配置的情況下,同步情況發(fā)生基于在配置暫存 器112中的已更新值可能為一多晶體同步情況發(fā)生。再者,當控制單元104決定一同步情 況是否發(fā)生時,控制單元104將排除考慮在方塊1517中停用其本身的核102。更詳細地說 明,在一情況中,在未停用其本身的核102在方塊1517中寫入同步暫存器108之前,所有其 它核1〇2(除了停用其本身的核102之外)寫入一 SYNC 11,接著當因停用核102的致能位 254為清除的(clear)而決定同步情況是否已經(jīng)發(fā)生時,因控制單元104不再考慮停用核 102,因此當未停用其本身的核102在方塊1517中寫入同步暫存器108時,控制單元104將 偵測同步情況的發(fā)生(在方塊316中)(請參閱圖16)。也就是說,由于所有啟用核102已 寫入一 SYNC 11,無論停用核102是否已寫入SYNC 11,控制單元104則判斷同步情況已經(jīng) 發(fā)生。流程進行到方塊1524。
[0220] 在方塊1524中,核102讀取配置暫存器112,其配置字252將反映在方塊1517中 被停用的停用核102。該核102根據(jù)配置字252的新值接著產(chǎn)生其配置相關的值。更佳地 說,在方塊1502中停用指令由系統(tǒng)固件(例如,BIOS設置)所執(zhí)行,W及在核102停用后, 系統(tǒng)固件執(zhí)行系統(tǒng)的重新啟動,例如,在方塊1526中之后。在重新啟動期間內(nèi),微處理器 100可W進行不同于在方塊1524中先前配置相關值產(chǎn)生的操作。舉例來說,在重新啟動期 間內(nèi)BSP可為一不同于產(chǎn)生配置相關值前的核102。再舉另一例子說明,在引導操作系統(tǒng)之 前由BSP所決定與儲存至存儲器W使操作系統(tǒng)能讀取的該系統(tǒng)配置信息(例如,在系統(tǒng)中 核102及邏輯處理器的數(shù)量)可不相同。舉另一例子說明,仍使用的核102的APIC ID不 同于產(chǎn)生配置相關值前的APIC ID,在此情況下,操作系統(tǒng)將指示中斷請求且核102將響應 不同于先前配置相關值產(chǎn)生的中斷請求。再舉另一例子說明,在方塊907及919中執(zhí)行圖 9封裝睡眠狀態(tài)握手協(xié)議的主要核102可為一不同于先前配置相關值產(chǎn)生的核102。流程 進行到判斷方塊1526。
[0221] 在方塊1526中,核102在方塊1526中被中斷之前恢復其執(zhí)行的任務。流程結束 于方塊1526。
[0222] 在本文中所描述動態(tài)地重新配置微處理器100可用于在各種應用中。舉例來說, 動態(tài)重新配置可在微處理器100的開發(fā)過程用于測試和/或模擬,和/或用于現(xiàn)場測試中。 另外,一使用者可能想知道僅使用一核102子集運行一特定的應用程序時系統(tǒng)的性能和/ 或功率消耗的總量。在一實施例中,在一核102被停用時,其可使其時脈停止及/或移除電 源,W使其基本上沒有消耗電源。此外,在高可靠性的系統(tǒng)中,每一核102可周期性地檢查 其它核102及核102所選擇的特定核102是否發(fā)生故障,未故障的核可停用故障的核102 并使剩余的核102執(zhí)行如上描述的動態(tài)重新配置。在此一實施例中,控制字202可包括一 附加欄位,其使寫入核102指定該核102被停用并且修改在圖15中所描述的操作使得一核 在方塊1517中可停用一不同于核102本身的核102。
[0223] 請參閱圖16,其是顯示根據(jù)圖15流程圖的微處理器100操作一例子的時序圖。在 此例子中,微處理器100配置具有H個核102,標示為核0、核1和核2,如圖所示。然而,應 可理解的是,在其它實施例中,微處理器100可包括不同數(shù)量的核102且可為單一晶體或多 晶體微處理器100。在此時序圖中,事件的時序向下前進。
[0224] 核1遇到一停用其本身的指令并作為響應傳送一重新配置信息且中斷核0和核 2 (每一方塊1502)。核1接著寫入SYNC 10并進入睡眠狀態(tài)(每一方塊1504)。
[0225] 每一核0和核2最終從其目前的任務中被中斷并閱讀該信息(每一方塊1532)。 作為響應,每一核0和核2的寫入SYNC 10并進入睡眠狀態(tài)(每一方塊1504)。如圖所示, 每一核的寫入同SYNC 10的時間可能不同。舉例來說,由于該指令的延遲,因此該指令當中 斷被確立時而執(zhí)行。
[022引 當所有核102寫入SYNC 10時,控制單元104同時喚醒所有核(每一方塊1506)。 核0及核2接著決定其不會停用其本身(每一判斷方塊1508),并寫入一 SYNC 11并進入睡 眠狀態(tài)(每一方塊1518)。然而,因核1決定其停用其本身,所W其寫入其停用核位236 (每 一方塊1517)。在此例子中,核1在核0及核2寫入各自的SYNC 11后寫入其停用核位236, 如圖所示。然而,由于控制單元104決定S位222對于每一致能位254被設置的核102而 設置,因此控制單元104偵測該同步情況發(fā)生。也就是說,即使核1的S位222未設置,其 致能位254在方塊1517核1的同步暫存器108寫入時被清除。
[0227]當所有可用核已寫入SYNC 11時,控制單元104同時喚醒所有核(每一方塊 1522)。如上所述,在一個多晶體微處理器100的情況下,當核1寫入其停用核位236,并且本 地控制單元104分別清除核1的本地致能位254,本地控制單元104也傳播本地致能位254 至遠端晶體406。因此,遠端控制單元104也偵測同步狀態(tài)的發(fā)生且同時喚醒其晶體406所 有可用的核。核0和核2基于已更新配置暫存器112的值接著產(chǎn)生其配置相關值(每一方 塊1524),并恢復其中斷前的活動(每一方塊1526)。 陽22引 硬件信號量(HA畑WARE SEMAP冊RE)
[0229] 請參考圖17,其是顯示在圖1中硬件信號量118的一方塊圖。硬件信號量118包 括一擁有位(owned bit) 1702、所有者位(owner bit) 1704及一狀態(tài)機1706,其狀態(tài)機1706 用W更新?lián)碛形?702及所有者位1704 W響應由核102讀取及寫入的硬件信號量118。更 佳地說,為了辨識核目前擁有的硬件信號量118,所有者位1704的數(shù)量為log W 2為底的微 處理器100配置的核102數(shù)量。在另一實施例中,所有者位1704包括微處理器100每一核 102 -對應的位。值得注意的是,盡管一組擁有位1702、所有者位1704及狀態(tài)機1706被描 述W-硬件信號量118實現(xiàn),但微處理器100可包括多個硬件信號量118,其中每一硬件信 號量118都包括上述的一套硬件。更佳地說,為了執(zhí)行需要獨占讀取共享資源的操作,在每 一核102中運行的微碼讀取并寫入該硬件信號量118 W取得一由核102所共享資源的所有 權,其詳細描述于下方的例子中。該微碼可將每一多個硬件信號量118與微處理器100不 同的共享資源所有權聯(lián)系在一起。更佳地說,硬件信號量118通過核102在核102的一非 架構地址空間內(nèi)一預設地址中所讀取及寫入。該非架構地址空間僅可由一核102的微碼所 讀取,但無法直接由使用者程序碼讀?。ɡ纾琗86架構的程序指令)。用W更新硬件信號 量118的擁有位1702及所有者位1704的狀態(tài)機1706操作被描述如圖18及19中,并且硬 件信號量118的使用也在之后描述。
[0230] 請參閱圖18,其是顯示當一核102讀取硬件信號量118的操作流程圖。流程開始 于方塊1802。
[0231] 在方塊1802中,一核102,標示為核X,讀取硬件信號量118。如上所述,更佳地說, 核102的微碼讀取該硬件信號量118所駐留在非架構地址空間內(nèi)的預定地址。流程進行到 判斷方塊1804。
[0232] 在判斷方塊1804中,狀態(tài)機1706檢查該所有者位1704, W決定核102是否為硬件 信號量118的所有者。若是,則流程進行到方塊1808 ;否則,流程進行到方塊1806。
[0233] 在方塊1806中,該硬件信號量118返回并讀取核102中的一零值W指示該核102 不擁有硬件信號量118,流程在方塊1806中結束。
[0234] 在方塊1808,該硬件信號量118返回并讀取核102中的一值,W指示該核102擁有 硬件信號量118,流程在方塊1808中結束。
[0235] 如上所述,微處理器100可包括多個硬件信號量118。在一實施例中,微處理器100 包括16個硬件信號量118,并且當一核102讀取預定地址時,其接收一 16位數(shù)據(jù)值,其每一 位對應16個硬件信號量118其中之一不同的硬件信號量118,并指示該讀取預定地址的核 102是否擁有對應的硬件信號量118。
[0236] 請參閱圖19,其是顯示當一核102寫入硬件信號量118的操作流程圖。流程開始 于方塊1902。
[0237] 在方塊1902中,一核102,標示為核X,寫入硬件信號量118,例如,如上所述的在非 架構的預設地址。流程進行到判斷方塊1804。
[023引在判斷方塊1904中,狀態(tài)機1706檢查該擁有位1702, W決定硬件信號量118是 否為任一核102所擁有或未被占有(化ee)。若已被擁有,則流程進行到判斷方塊1914 ;否 貝1J,流程進行到判斷方塊1906。
[0239] 在判斷方塊1906中,狀態(tài)機1706檢查寫入的值。若該值為1,其表示核102欲獲 取硬件信號量118的所有權,則流程前進到方塊1908。然而,若該值為0,其表示核102欲 放棄硬件信號量118的所有權,則流程進行到方塊1912。
[0240] 在方塊1908中,狀態(tài)機1706更新?lián)碛形?702至1,并設置所有者位1704指示核 X現(xiàn)在擁有的硬件信號量118。流程在方塊1908中結束。
[0241] 在方塊1912中,該狀態(tài)機1706未執(zhí)行擁有位1702的更新,也未執(zhí)行所有者位 1704的更新,流程結束于方塊1912中。
[0242] 在判斷方塊1914中,狀態(tài)機1706檢查該所有者位1704, W決定核X是否為硬件信 號量118的所有者。若是,則流程進行到判斷方塊1916 ;否則,流程進行到方塊1912。
[0243] 在判斷方塊1916中,狀態(tài)機1706檢查所寫入的值。如果該值為1,其表示該核102 欲獲取硬件信號量118的所有權,則流程前進到方塊1912(其中因此核102已擁有硬件信 號量118,所W未有更新發(fā)生,如判斷方塊1914中所判斷)。然而,若該值為0,其表示該核 102欲放棄硬件信號量118的所有權,則流程進行到方塊1918。
[0244] 在方塊1918中,該狀態(tài)機1706更新?lián)碛形?702為零,W表示現(xiàn)在未有核102擁 有硬件信號量118,流程結束于方塊1918。
[0245] 如上所述,在一實施例中,微處理器100包括16個硬件信號量118。當一核102寫 入該預定地址時,其寫入一 16位數(shù)據(jù)值,其每一位對應16個硬件信號量118其中之一不同 的硬件信號量118,并指示該寫入預定地址的核102是否請求擁有(值為1)或放棄對應硬 件信號量118的所有權(值為零)。
[0246] 在一實施例中,仲裁邏輯仲裁由核102所請求存取該硬件信號量118, W使核102 由硬件信號量118序列化(Serialize)讀取/寫入硬件信號量118。在一實施例中,仲裁邏 輯在核102間使用一循環(huán)控制公平演算法(Round-Robin化irness Algorithm) W存取硬 件信號量118。
[0247] 請參閱圖20,其是顯示當微處理器100使用硬件信號量118 W執(zhí)行需一資源獨占 所有權的操作流程圖。更具體地說明,硬件信號量118用W在兩或多個核102已分別遇到 一寫回且使共享高速緩沖存儲器119失效指令的情況下確保在某一時間僅一核102執(zhí)行一 寫回,并使共享高速緩沖存儲器119失效。該操作是W-單一核的角度所描述,但微處理器 100的每一核102根據(jù)本發(fā)明W整體確保一核102執(zhí)行寫回且使其它核102的操作無效。 也就是說,圖20的操作確保WBINVD指令過程被序列化(Serialize)。在一實施例中,圖20 的操作可在一微處理器100中執(zhí)行,其根據(jù)圖7A?7B中的實施例執(zhí)行一 WBINVD指令。流 程開始于方塊2002。
[024引在方塊2002中,一核102遇到一高速緩沖控制指令,像是一 WBINVD指令。流程進 行到方塊2004。
[0249] 在方塊2004中,核102寫入1至WBINVD硬件信號量118中。在一實施例中,該微 碼已分配硬件信號量118其中之一至WBINVD操作中。該核102接著讀取WBINVD硬件信號 量118 W決定其是否獲得所有權。流程進行到判斷方塊2006。
[0250] 在判斷方塊2006中,若核102決定其取得WBINVD硬件信號量118的所有權時,貝U 流程進行到方塊2008 ;否則,流程返回至方塊2004 W再次嘗試獲取所有權。應注意的是當 即時核102的微碼經(jīng)由方塊2004至2006間循環(huán),其最終會由擁有WBINVD硬件信號量118 的核102所中斷,因為該核102正于圖7A?7B中方塊702中執(zhí)行WBINVD指令并且傳送一 中斷至即時核102。更佳地說,經(jīng)由每次循環(huán),即時核102的微碼檢查中斷狀態(tài)暫存器,W觀 察其它核102其中之一(例如,擁有該WBINVD硬件信號量118的核102)是否發(fā)送一中斷 至即時核102。該即時核102接著將執(zhí)行圖7A?7B的操作,并在方塊749中根據(jù)圖20恢 復操作W試圖獲得硬件信號量118的所有權,W執(zhí)行其WBINVD指令。
[0巧1 ] 在方塊2008中,核102已獲得所有權且流程進行到圖7A?7B中的方塊702 W執(zhí) 行WBINVD指令。由于部分的WBINVD指令操作,在圖7A?7B方塊748中,該核102寫入零 至WBINVD硬件信號量118中W放棄其所有權。流程結束于方塊2008。
[0252] -類似于圖20所描述的操作可由該微碼執(zhí)行,W獲得的其它共享資源獨占的所 有權。一核102可獲得通過使用一硬件信號量118所使用的獨占所有權的其它資源為非核 103的暫存器,其由核102所共享。在一實施例中,非核103暫存器包括一控制暫存器,其包 括每一核102各自的欄位。該欄位控制各個核102的操作方面。由于欄位位于相同的暫存 器中,當一核102欲更新其各自的欄位但無法更新其它核102的欄位時,該核102必須讀取 該控制暫存器、修改所讀取的值,接著寫回已修改的值至控制暫存器。舉例來說,微處理器 100可W包括一非核103性能控制暫存器(Performance Control Register, PCR),其用于 控制核102的總線時脈比。為了更新其總線時脈比,一特定的核102必須讀取、修改并寫回 PCR。因此,在一實施例中,微碼被配置為當核102擁有與PCR相關的硬件信號量118時,執(zhí) 行一 PCR的有效原子讀取/修改/寫回??偩€時脈比經(jīng)由一外部總線決定單一核102時脈 頻率為該支持微處理器100的時脈頻率的倍數(shù)。
[0巧;3] 另一資源是一可信賴平臺模組(Trusted Platform Module,TPM)。在一實施例中, 微處理器100執(zhí)行運作在核102中微碼的一可信賴平臺模組。在一給定的即時時間中,運 行在一核102及核102其中之一的微碼實施TPM。然而,實施TPM的核102可能隨時間而改 變。通過使用與TPM相關聯(lián)的硬件信號量118,核102的微碼可確保僅一核102在一時間實 施TPM。更具體地說明,目前正執(zhí)行TPM的核102在放棄實施該TPM之前寫入TPM狀態(tài)至專 用隨機存取存儲器116,并且該接管實施TPM的核102從專用隨機存取存儲器116中讀取 TPM的狀態(tài)。在每一核102的微碼被配置為使當核102欲成為執(zhí)行TPM的核102時,核102 在由專用隨機存取存儲器116中讀取TPM狀態(tài)之前首先取得TPM硬件信號量118的所有 權,并開始執(zhí)行TPM。在一實施例中,TPM大致符合由可信賴運算組織(Trusted Computing Group)所發(fā)布的TPM規(guī)范,像是IS0/IEC11889規(guī)范。
[0254] 如上所述,傳統(tǒng)對多個處理器之間資源競爭的解決方法是采用在系統(tǒng)存儲器中的 軟件信號量(software semaphore)。本文所描述的硬件信號量118的潛在優(yōu)點是其可避免 在額外存儲器總線上額外傳輸量的產(chǎn)生,并且其存取速度快于存取系統(tǒng)的存儲器。 。巧引 中斷、非睡眠同巧請求
[0256] 請參閱圖21,其是顯示根據(jù)圖3流程圖的核102發(fā)出非睡眠同步請求操作一例子 的時序圖。在此例子中,微處理器100配置具有H個核102,標示為核0、核1和核2,如圖所 示。然而,應可理解的是,在其它實施例中,該微處理器100可包括不同數(shù)量的核102。
[0巧7] 核0寫入一 SYNC 14,其不被設置于睡眠位212中,也非設置于選擇性喚醒位 214(例如,一非睡眠同步請求)中。因此,控制單元104允許核0保持運行(每一判斷方塊 312的分支"否")。
[0巧引核1最終也寫入一非睡眠SYNC 14且控制單元104允許核1保持運行。最后,核 2寫入一非睡眠SYNC 14。如圖所示,每一核寫入SYNC 14的時間可能不同。
[0259] 當所有核已寫入非睡眠同步14時,控制單元104同時發(fā)送一同步中斷至每一核0、 核1及核2。每一核接著接收同步中斷并服務同步中斷(除非該同步中斷被遮蔽,在該種情 況下,該微碼一般會輪詢(poll)該同步中斷)。 陽260] 導引化巧器的指定
[0261] 在一實施例中,如上所述,通常(例如,當圖23"所有核BSP"的功能被停用時)一 核102指定本身為引導處理器炬S巧并執(zhí)行指定的任務,像是引導工作系統(tǒng)。在一實施例 中,通常(例如,當圖22及23 "修改BSP"及"所有核BSP"的功能分別被停用時)虛擬核 的數(shù)量由核102BSP預設為0。
[0262] 然而,本發(fā)明人已經(jīng)觀察到BSP W-不同的方式被指定有可能是有利的,實施例 將在下面進行描述。例如,部分微處理器100的許多測試,特別是在制造測試中,是由引導 操作系統(tǒng)和運行程序碼來執(zhí)行,W確保該部分微處理器100正常進行工作。因BSP核102執(zhí) 行系統(tǒng)初始化并啟動該操作系統(tǒng),因此BSP核102可W AP核無法運行的方式運行。此外, 由觀察可知,即使是在多執(zhí)行緒(Multit虹eaded)的操作環(huán)境中,BSP通常較AP負擔該處 理負荷較大的部分,因此,AP核102無法與BSP核102 -樣作全面的測試。最后,可能有某 些動作其僅需由該BSP核102代表微處理器100作為一整體來執(zhí)行,像是如圖9描述的封 裝睡眠狀態(tài)握手協(xié)議。
[0263] 因此,實施例描述任一核102可被指定為BSP。在一實施例中,在微處理器100的 測試期間內(nèi),運行測試N次,其中N為微處理器100核102的數(shù)量,并在測試的每一個運行 中微處理器100被重新配置W使BSP為不同的核102。該在制造過程中可W有利地提供更 好的測試覆蓋率,并且也有利地在微處理器100的設計過程中掲露在微處理器100中的錯 誤。另一優(yōu)點是在不同的運行中每一核102可具有一不同的APIC ID,從而響應不同的中斷 請求,其可提供更廣泛的測試覆蓋率。
[0264] 請參閱圖22,其是顯示配置微處理器100的一程序流程圖。在圖22的描述參考圖 4中的多晶體微處理器100,其包括兩個晶體406和八個核102。然而,應可理解的是,描述 于此的動態(tài)重新配置可使用具有不同配置的一微處理器100,即具有多于兩個晶體或單個 晶體,且多或少于八個核102但至少兩個核102。此操作是從一單一核的角度所描述,但微 處理器100的每一核102根據(jù)該描述W整體動態(tài)地操作并重新配置該微處理器100。流程 開始于方塊2202。
[0265] 在方塊2202中,微處理器100被重置,并執(zhí)行其初始化的初始部分,更佳地一方式 其類似于上面圖14所描述的方式。然而,配置相關值的產(chǎn)生,像是圖14中的方塊1424,尤 其是該APIC ID和BSP旗標,W方塊2203至2204中所描述的方式執(zhí)行。流程進行到方塊 2203。
[0266] 在方塊2203中,核102產(chǎn)生其虛擬核數(shù)量,更佳地描述于圖14中。流程進行到判 斷方塊2204。
[0267] 在判斷方塊2204中,核102取樣一指示W(wǎng)決定一功能是否可啟用。該功能在本 文中稱為"修改BSP"功能。在一實施例中,燒斷一烙斷器114可修改BSP的功能。更佳地 說,在測試過程中,并非燒斷修改BSP功能的烙斷器114,而是一真值(True)被掃描至與修 改BSP功能烙斷器114相關的保存暫存器位中,如上述圖1中所示,W使該修改BSP功能可 啟用。在此方式中,該修改BSP功能在部分微處理器100中并非永久可啟用,但卻在供電 (power-up)后停用。更佳地說,在方塊2203至2214中的操作由核102的微碼所執(zhí)行。若 該修改BSP功能被啟用時,流程進行到方塊2205。否則,流程進行到方塊2206。
[026引在方塊2205中,核102修改在方塊2203中所產(chǎn)生的虛擬核數(shù)量。在一實施例 中,核102修改虛擬核數(shù)量W產(chǎn)生在方塊2203中所產(chǎn)生虛擬核數(shù)量的一循環(huán)函數(shù)(Rotate 化nction)的結果及一循環(huán)量,如下所示:
[0269] 虛擬核數(shù)量=循環(huán)(循環(huán)量,虛擬核數(shù)量)。
[0270] 循環(huán)函數(shù),在一個實施例中,通過循環(huán)數(shù)在核102之間循環(huán)虛擬核數(shù)。循環(huán)量為燒 斷烙斷器114的一值,或更佳地說,其在測試過程中被掃描至保持暫存器中。表1顯示每一 核102的虛擬核數(shù),其序對(晶體數(shù)量258、本地核數(shù)量256)是顯示在一示范配置的左側 行中,而每一循環(huán)量是顯示在頂行中,其晶體數(shù)量406為二且每一晶體406的核102數(shù)量為 4, W及所有核102可被啟用。在此種方式中,測試器被授權使核102產(chǎn)生其虛擬核數(shù)、及例 如任何有效值的APIC ID。雖然用于修改虛擬核數(shù)描述于的一實施例中,但其它實施例也可 被預期。例如,循環(huán)方向可W相反表示于表格1中。流程進行到方塊2206。
[0271] 表 1
[0272]
[5 [I [2 [3 Ii [5 [6 [7 (0,0) 0 7 6 5 4~3 2 1 (0, 1) 1 0 7 6 5~4 3 2 (0,2) 2 1 0 7 6 5 4 3 (0,3) 3 2 1 0 7~6 5 4
[0273] (1,0) |4 [3 [2 [I [0 [7 [6 [5 (1,1) 5 4 3 2 1 0 7 6 (1.2) 6 5 4 3 2 1 0 7 (1.3) 7 6 5 4 3~2 1 0
[0274] 在方塊2206中,核102將在方塊2203中產(chǎn)生的預設虛擬核數(shù)量或在方塊2203中 產(chǎn)生的已修改的值填入本地APIC ID暫存器中。在一實施例中,APIC ID暫存器可由該核 102在存儲器地址OxO陽E00020中從其本身中讀取(例如,通過通過BIOS和/或操作系 統(tǒng))。然而,在另一實施例中,APIC ID暫存器可通過核102在MSR地址0x802讀取。流程 進行到判斷方塊2208。
[0275] 在判斷方塊2208中,核102決定其在方塊2208所填入的APIC ID是否為零。若 是,則流程進行到方塊2212 ;否則,流程進行到方塊2214。
[0276] 在方塊2212中,核102將其BSP旗標設置為真(true),W表示核102為BSP。在 一實施例中,BSP旗標為該核102的x86 APIC基址暫存器(IA32_APIC_BASE MSR)的一位。 流程進行到判斷方塊2216。
[0277] 在方塊2214中,核102將BSP旗標設置為假(false),W表示核102不為BSP,例 女口,在一 AP中。流程進行到判斷方塊2216。
[027引在判斷方塊2216中,核102判斷其是否為BSP,例如,是否指定本身為在方塊2212 中的BSP核102,而非指定本身為在方塊2214中的AP核102。若是,則流程進行到方塊 2218 ;否則,流程進行到方塊2222。
[0279] 在方塊2218中,核102開始提取并執(zhí)行系統(tǒng)初始化固件(例如,BSP BIOS引導程 序碼)。該可包括與BSP旗標和APIC ID相關的指令,例如,讀取APIC ID暫存器或APIC基 址暫存器的指令,在此情況下,核102恢復在方塊2206及2212/2214寫入的值。其還可包 括作為微處理器100唯一核102代表微處理器100作為一整體W執(zhí)行操作,像是圖9描述 的封裝睡眠狀態(tài)握手協(xié)議。更佳地說,BSP核102在一已定義架構重置向量中開始獲取并 執(zhí)行系統(tǒng)初始化固件。例如,在x86架構中,重置向量指向OxFFFFFFFO。更佳地說,執(zhí)行系 統(tǒng)初始化固件包括引導該操作系統(tǒng),例如,載入該操作系統(tǒng)并轉變?yōu)榭刂撇僮飨到y(tǒng)。流程進 行到方塊2224。
[0280] 在方塊2222中,核102中止其本身并等待來自BSP的啟動序列W開始提取并執(zhí)行 指令。在一實施例中,從BSP所接收的啟動序列包括到AP系統(tǒng)初始化固件的一中斷向量 (例如,AP S…S程序碼)。該可包括與SSP旗標及APIC。相關的指令,在此種情況下,核 102恢復在方塊2206及2212/2214中所寫入的值。流程進行到方塊2224。
[0281] 在方塊2224中,當核102執(zhí)行指令時,該核102基于在方塊2206中寫在其APIC ID暫存器的APIC ID接收中斷請求并響應所述中斷請求。流程結束于方塊2224。
[0282] 如上所述,根據(jù)一實施例中,虛擬核數(shù)為零的核102預設為BSP。然而,發(fā)明人已 經(jīng)觀察到,可能具有對所有核102被指定為BSP有利的情況,實施例將描述于下方。舉例來 說,微處理器100開發(fā)人員已投入顯著大量的時間和成本來研發(fā)一設計用W在單一執(zhí)行緒 (single-t虹eaded)的一單核中運行的鹿大測試主體,并且開發(fā)人員想使用單核測試W測 試多核微處理器100。例如,該測試可能在x86實際模式老舊且知名的DOS操作系統(tǒng)中運 行。
[0283] 在每一核102運行該些測試可W在一使用圖22中所描述的該修改BSP功能W連 續(xù)的方式中完成及/或通過燒斷烙斷器或掃描至保持暫存器修改烙斷器值W停用所有核 102,但一核102用來進行測試。然而,發(fā)明人已經(jīng)理解該將比在所有核102中同時運行測 試需要更多的時間(例如,在一 4核微處理器100的情況下大約為4倍),此外,所需測試每 一單獨微處理器100部分的時間是寶貴的,尤其是當制造數(shù)十萬或更多的微處理器100部 分,特別是當許多測試在非常昂貴的測試設備中被測試。
[0284] 此外,其它可能為當在同一時間運行一個W上的核102 (或所有核102)時,由于其 會產(chǎn)生更多的熱能及/或吸引更多的能量,在微處理器100邏輯中的一速度路徑將被施加 更多壓力的情況。在此連續(xù)的方式中運行的測試可能不會產(chǎn)生額外的壓力并掲露該速度路 徑。
[0285] 因此,實施例描述所有核102可被動態(tài)指定該BSP核102 W使所有核102可同時 執(zhí)行一測試。
[0286] 請參閱圖23,其是顯示根據(jù)另一實施例中配置微處理器100的一程序流程圖。在 圖23的描述參考圖4中的多晶體微處理器100,其包括兩個晶體406和八個核102。然而, 應可理解的是,描述于此的動態(tài)重新配置可使用具有不同配置的一微處理器100,即具有多 于兩個晶體或單個晶體,且多或少于八個核102但至少兩個核102。此操作是從一單一核的 角度所描述,但微處理器100的每一核102根據(jù)該描述W整體動態(tài)地操作并重新配置該微 處理器100。流程開始于方塊2302。
[0287] 在方塊2302中,微處理器100被重置,并執(zhí)行其初始化的初始部分,更佳地一方式 其類似于上面圖14所描述的方式。然而,配置相關值的產(chǎn)生,像是圖14中的方塊1424,尤 其是該APIC ID和BSP旗標,W方塊2304至2312中所描述的方式執(zhí)行。流程進行到判斷 方塊2304。
[028引在判斷方塊2304中,核102偵測一功能可被啟用。該功能在本文中稱為"所有核 BSP"功能。更佳地說,燒斷烙斷器114能使所有核BSP功能被啟用。更佳地說,在測試過 程中,并非燒斷所有核BSP功能的烙斷器114,而是一真值(True)被掃描至與所有核BSP 功能烙斷器114相關的保存暫存器位中,如上述圖1中所示,W使該所有核BSP功能可啟 用。在此方式中,該所有核BSP功能在部分微處理器100中并非永久可啟用,但卻在供電 (power-up)后停用。更佳地說,在方塊2304至2312中的操作由核102的微碼所執(zhí)行。若 該所有核BSP功能被啟用時,流程進行到方塊2305。否則,流程進行到圖22中方塊2203。
[0289] 在方塊2305中,無論本地核數(shù)量256及核102的晶體258數(shù)量為何,核102設定 其虛擬核數(shù)量為零。流程進行到方塊2306。
[0290] 在方塊2306中,核102將在方塊2305中所設置值為零的虛擬核數(shù)量填入本地 APIC ID暫存器。流程進行到方塊2312。
[0291] 在方塊2312中,無論本地核數(shù)量256及核102的晶體258數(shù)量為何,核102設置 其BSP旗標為真(True) W表示該核102為BSP。流程進行至方塊2315。
[0292] 在方塊2315中,每當一核102執(zhí)行一存儲器存取請求時,微處理器100分別修改 每一核102存儲器存取請求地址的較高地址位,使得每一核102存取其單獨的存儲器空間。 也就是說,根據(jù)產(chǎn)生存儲器存取請求的核102,微處理器100修改較高地址位,W使較高地 址位具有每一核102 -獨特的值。在一實施例中,微處理器100修改由燒斷烙斷器114的 值所指示的較高地址位。在另一實施例中,微處理器100基于本地核數(shù)量256及核102的 晶體數(shù)量258修改較高地址位。舉例來說,在一微處理器100中核數(shù)量為4的實施例中,微 處理器100修改該存儲器地址較高的兩個位,并在每一核102較高的兩個位中產(chǎn)生一獨特 的值。實際上,可由微處理器100尋址的存儲器空間被分成N個子空間,其中N是核102的 數(shù)量。測試程序的開發(fā)使得其限制自己本身W指定在N個子空間中最低子空間的地址。例 女口,假設微處理器100能找尋存儲器64GB的地址W及微處理器100包括四個核102。該測 試被研發(fā)僅存取存儲器最低的8GB。當核0執(zhí)行存取存儲器地址A (在存儲器中較低的8GB) 的指令時,微處理器100在存儲器總線A(未修改)中產(chǎn)生一地址;當核1執(zhí)行存取相同存 儲器地址A的指令時,該微處理器100在存儲器總線A+8GB中產(chǎn)生一地址;當核2執(zhí)行存取 相同存儲器地址A的指令時,該微處理器100在存儲器總線A+16GB中產(chǎn)生一地址;W及當 核3執(zhí)行存取相同存儲器地址A的指令時,該微處理器100在存儲器總線A+32GB中產(chǎn)生一 地址。在此種方式中,有利地,核102將不會在其存取存儲器中相沖突,其可使測試正確地 執(zhí)行。更佳地說,單一執(zhí)行緒測試被執(zhí)行于一獨立測試機器中,其能夠單獨測試該微處理器 100。該微處理器100開發(fā)人員開發(fā)測試數(shù)據(jù)并由測試機器提供給該微處理器100,相反地, 該微處理器100開發(fā)人員研發(fā)結果數(shù)據(jù),其為由測試機器在一存儲器寫入存取期間內(nèi)比較 該微處理器100所寫入的數(shù)據(jù)結果,W確保該微處理器100寫入正確的數(shù)據(jù)。在一實施例 中,共享高速緩沖存儲器119(例如,最高級高速緩沖存儲器,其產(chǎn)生用于外部總線處理中 的地址)為微處理器100的一部分,其配置用W當所有核BSP功能啟用時修改較高地址位。 流程進行到方塊2318。
[0293] 在方塊2318中,核102開始提取并執(zhí)行系統(tǒng)初始化固件(例如,BSP BIOS引導 程序碼)。該可包括與該BSP旗標和APIC ID相關的指令,例如,讀取該APIC ID暫存器或 APIC基址暫存器的指令,在此情況下,該核102恢復在方塊2306中所寫入的零值。更佳地 說,該BSP核 102在一架構定義的重置向量(Architec1:urall5f-defined reset vector)中開 始讀取并執(zhí)行系統(tǒng)初始化固件。例如,在x86架構中,重置向量指向OxFFFFFFR)地址。更 佳地說,執(zhí)行該系統(tǒng)初始化固件包括引導操作系統(tǒng),例如,載入該操作系統(tǒng)并且變更為控制 該操作系統(tǒng)。流程進行到方塊2324。
[0294] 在方塊2324中,當核102執(zhí)行指令時,該核102基于在方塊2306中寫在其APIC ID暫存器值為零的APIC ID值接收中斷請求并響應所述中斷請求。流程結束于方塊2324。
[0295] 雖然一所有核102被指定為該BSP的實施例中已被描述于圖23中,但其它實施例 可W考慮多個但少于所有核102被指定為該BSP。
[0296] 雖然實施例W - x86型系統(tǒng)內(nèi)容被描述,其系統(tǒng)中每一核102使用一本地APIC且 具有在本地APIC ID及BSP指定之間的一關聯(lián)性,應可理解的是,該引導處理器的指定并不 局限于X86的實施例,但可在具有不同系統(tǒng)架構的系統(tǒng)中使用。 陽297] 巧于《核的微碼修補(PATCH)的傳擺
[029引如先前所觀察,有可能主要由微處理器的微碼執(zhí)行的許多重要的功能,且特別地, 其需在執(zhí)行于該微處理器多核中的該微碼實例間正確的通信及協(xié)調。由于微碼的復雜性, 因此一顯著的機率顯示錯誤將存在于需修正的微碼中。該可經(jīng)由使用新微碼指令取代造成 該錯誤的舊微碼指令的微碼修補來完成。也就是說,該微處理器包括益于微碼修補的特定 硬件。在一般情況下,理想是將該微修改應用到該微處理器的所有核。傳統(tǒng)上,其已通過在 每一核中單獨執(zhí)行一架構指令W執(zhí)行修補。然而,傳統(tǒng)的方法可能會有問題。
[0299] 首先,該修補與使用微碼例子(例如,核同步、硬件信號量使用)的核間通信相關 或與需微碼核間通信的功能(例如,跨核調整請求、高速緩沖控制操作或電源管理,或動態(tài) 多核微處理器配置)相關。分別在每一核上架構修補應用程序的執(zhí)行可能會產(chǎn)生一時間視 窗,其微碼修補應用到一些核中但并非用應用到其它核中(或一先前修補應用在一些核W 及新的修補應用到其它核)。該可能會造成核間一通信失敗及該微處理器不正確的操作。女口 果該微處理器的所有核使用相同的微碼修補,其它可預期及不可預期的問題也可能產(chǎn)生。
[0300] 其次,該微處理器的架構指定許多功能,其在某些實例(instance)中可由該微處 理器所支持,且不被其它微處理器支持。在操作期間中,微處理器能夠與支持該特定功能的 系統(tǒng)軟件進行通信。例如,在一 x86體系架構微處理器的情況下,x86 CPUID指令可由系統(tǒng) 軟件執(zhí)行W決定所支持的功能設置。然而,決定功能設置的指令(例如,CPUID)分別在該 微處理器的每一核中執(zhí)行。在一些情況下,一功能可因一存在于該時間中的錯誤而被停用, 并解除該微處理器。然而,隨后一修復此錯誤的微碼修補可被開發(fā)出,W使此功能可在修補 應用后被啟用。然而,如果修補是W傳統(tǒng)的常規(guī)實施(例如,通過在每一核中應用修補指令 的個別指令,分別實施于每一核),不同的核可取決于該修補是否已經(jīng)應用在核中,在一給 定的時間點指示不同的功能配置。該可能是有問題的,尤其是當該系統(tǒng)軟件(如操作系統(tǒng), 例如,幫助核間執(zhí)行緒遷移),期望該微處理器的所有核具有相同的功能設置。尤其是,已觀 察到一些系統(tǒng)軟件僅獲得一核的功能配置,并假設其它核芯具有相同的功能配置。
[0301] 再者,每一核控制和/或與核所共享的非核資源(例如,同步相關的硬件、硬件信 號量、共享PRAM、共享高速緩沖器或服務處理單元)通信的微碼實例。因此,由于在核中其 中之一具有使用微碼修補而其它核并無使用(或兩個核具有不同的微碼修補),一般來說, 兩種不同核的微碼同時W兩種不同的方式進行控制或與非核資源進行通信可能是有問題 的。
[0302] 最后,在該微處理器的該微碼修補硬件也可W使用傳統(tǒng)方式的修補,但其可能造 成其它核修補應用及由一核修補操作的干擾,例如,若修補硬件的部分在核間共享。
[0303] 更佳地說,在架構指令級W-原子(atomic)方式應用微碼修補至一多核微處理 器的實施例W解決描述于本文中的問題。首先,將修補應用在整體微處理器100中W響應 在單一核102中一架構指令的執(zhí)行。目P,實施例無須要求系統(tǒng)軟件在每一核102中執(zhí)行一 應用微碼修補指令(如下所描述)。更具體地說,遇到該應用微碼修補指令的單一核102將 傳送信息并中斷其它核102 W引起其微碼用于修補部分的實例,及所有微碼實例與另一微 碼合作使得該微碼修補應用至每一核102的微碼修補軟件中,并當在所有核102中停用中 斷時,共享該微處理器100的修補硬件。其次,在所有核102中運行并實現(xiàn)該原子修補應用 機制的微碼實例與另一微碼相合作,W使其避免執(zhí)行任一的架構指令(除了一應用微碼修 補指令外)在該微處理器100的所有核102已同意應用此修補后,直到所有核102完成為 止。也就是說,當任一核102使用該微碼修補時,沒有核102執(zhí)行一架構指令。此外,在一 更佳的實施例中,所有核102到達該微碼相同的地方W執(zhí)行具有停用中斷的修補應用,并 在之后核102僅執(zhí)行用于修補的該微碼指令直到該微處理器100的所有核確認該修補已被 使用為止。也就是說,當該微處理器100的任一核102正使用該修補時,核102除了使用微 碼修補的微碼指令外,沒有核102執(zhí)行微碼指令。
[0304] 請參照圖24,其是顯示根據(jù)另一實施例的一多核微處理器100的方塊圖。該微處 理器100在許多方面相似于圖1的微處理器100。然而,圖24的微處理器100還包括在其 非核103中的服務處理單元(Service Processing Unit, SPU) 2423、服務處理單元(SPU) 起始地址暫存器2497、一非核微碼只讀存儲器巧ead化Iy Memo巧,ROM) 2425及一非核微 碼修補隨機存取存儲器(Random Access Memo巧,RAM) 2408。此外,每一核102包括一核 PRAM2499、一修補可定址內(nèi)容存儲器(Content AcMress油Ie Memoiy, CAM) 2439及一核微碼 R0M2404。
[0305] 微碼包括微碼指令。該微碼指令為儲存在該微處理器100 -或多個存儲器(例 女口,非核微碼ROM 2425、非核微碼修補RAM2408及/或核微碼R0M2404)中的非架構指令, 其中該微碼指令由一核102基于儲存在該非架構微程序計數(shù)器(Micro-program Counter, Micro-PC)中一提取(fetch)地址所提取,并且由該核102使用W實現(xiàn)該微處理器100指 令集結構的指令。更佳地說,該微碼指令由一微轉譯器(Micro化anslator)轉譯成微指令, 其微指令由該核102的執(zhí)行單元所執(zhí)行,或在另一實施例中,該微碼指令直接由執(zhí)行單元 所執(zhí)行,在此情況下,微碼指令為微指令。該微碼指令為非架構指令意指其并非該微處理器 100的指令集架構(Instruction Set ArchitecUireJSA)的指示,但其根據(jù)一不同于該架 構指令集的指令集而被編碼。該非架構微程序計數(shù)器不由該微處理器100的指令集架構所 定義,并且不同于該核102的架構定義(Architecturally-defined)程序計數(shù)器。該微碼用 W實現(xiàn)如下該微處理器的ISA指令集的一些或所有指令。為了響應解碼一微碼執(zhí)行ISA指 令,該核102轉變?yōu)榭刂埔慌c該ISA相關的一微碼例行程序(Routine)。該微碼例行程序 包括微碼指令。該執(zhí)行單元執(zhí)行該微碼指令,或根據(jù)較佳的實施例,該微碼指令進一步被轉 譯為由該執(zhí)行單元所執(zhí)行的微指令。該微碼指令(或由該微碼指令所轉譯的微指令)由該 執(zhí)行單元所執(zhí)行的執(zhí)行結果為由該ISA指令所定義的結果。因此,與該ISA指令相關的微 碼(或從該微碼例行程序指令轉譯的微指令)例行程序的共同執(zhí)行是由該執(zhí)行單元"實施 (Implement)"該ISA指令。也就是說,通過執(zhí)行微碼指令(或從該微碼指令轉譯的微指令) 的執(zhí)行單元所執(zhí)行的共同執(zhí)行完成由在該ISA指令所指定的輸入中的該ISA指令所指定的 操作,W產(chǎn)生一由該ISA指令所定義的結果。此外,當該微處理器為了配置該微處理器而重 置時,該微碼指令可W被執(zhí)行(或轉譯為被執(zhí)行的微指令)。
[0306] 該核微碼R0M2404擁有由包括該核微碼ROM 2404的特定核102所執(zhí)行的微碼。該 非核微碼ROM 2425也擁有由該核102所執(zhí)行的微碼。然而,與核微碼ROM 2404相比,該非 核ROM 2425由核102所共享。更佳地說,由于該非核ROM 2425的存取時間大于該核ROM 2404,因此該非核ROM 2425擁有需較少性能及/或較不頻繁地執(zhí)行的微碼例行程序。此外, 該非核ROM 2425擁有由該SPU 2423所提取并執(zhí)行的程序碼。
[0307] 該非核微碼修補RAM2408也由核102所共享。該非核微碼修補RAM2408擁有由核 102所執(zhí)行的微碼指令。當該提取地址與該修補CAM 2439中項目(entry)其中之一的內(nèi)容 相匹配時,則該修補CAM2439擁有為響應一微碼提取地址而由該修補CAM 2439所輸出至一 微序列器(Microsequencer)的修補地址。在此情況下,該微序列器輸出的該修補地址為該 微碼提取地址,而非下一順序的提取指地址(或在分支型指令情況下的目標地址),W作為 該非核修補RAM 2408輸出一修補微碼指令的回復。例如,因為修補微碼指令和/或在其之 后的微碼指令為一錯誤來源,因此一修補微碼指令由在非核修補RAM2408中提取實行,而 非從該非核ROM 2425或該核ROM 2404中提取的一微碼指令。因此,該修補微碼指令有效 地替換、或修補在該原始微碼提取地址中駐留在該核ROM 2404或該非核微碼ROM 2425非 預期的微碼指令。更佳地說,該修補CAM 2439及修補RAM 2408被載入W響應包含在系統(tǒng) 軟件中的架構指令,像是BIOS或在該微處理器100中運行的操作系統(tǒng)。
[030引在其它事件中,該非核PRAM 116被該微碼用W儲存該微碼所使用的值。該些值的 一部分有效函數(shù)為常數(shù)
[0309] 除可能經(jīng)由一修補或為響應一明確修改該值的指令(例如,一 WRMSR指令)的執(zhí) 行之外,當該微處理器100被重置且在該微處理器100的操作期間內(nèi)不被修改時,由于其為 儲存于該核微碼ROM 2404或該非核微碼ROM 2425的立即值(immediate value)或在該微 處理器100被制造或由該微碼寫入至該非核PRAM 116的時間點燒斷該烙斷器114。有利的 是,該些值可經(jīng)由本文中所描述的修補機制而修改,無需改變成本可能非常昂貴的該核微 碼R0M2404或該非核微碼ROM 2425,且也無需一或多個未燒斷的烙斷器114。
[0310] 此外,該非核PRAM 116用W保存由該SPU 2423所提取并執(zhí)行的修補碼,如本文所 述。
[0311] 該核PRAM 2499,其類似于該非核PRAM 116,為專用(private)的,或非架構的,其 意指該核PRAM 2499并不位于該微處理器100架構使用者程序地址空間中。然而,不像該 非核PRAM 116,每一 PRAM 2499僅由其各自的核102所讀取且不由其它核102所共享。像 該非核PRAM 116 -樣,該核PRAM2499也由該微碼使用W儲存由該微碼所使用的值。有利 的是,該些值可經(jīng)由本文中所描述的修補機制而修改,并無需改變該核微碼ROM 2404或非 核微碼ROM 2425。
[0312] 該SPU 2423包括一已儲存程序處理器,其為一附屬且不同于每一核102的附屬物 (adjunct)。雖然所述核102結構上可執(zhí)行所述核102的該ISA的指令(例如,x86的ISA指 令),但該SPU 2423在結構上無法該樣做。因此,舉例來說,該操作系統(tǒng)無法在該SPU 2423 中運行,也無法使所述核102的ISA操作系統(tǒng)調度程序(例如,x86的ISA指令)在該SPU 2423中運行。換言之,該SPU2423不為由該操作系統(tǒng)所管理的一系統(tǒng)資源。更確切地說,該 SPU 2423執(zhí)行用于調整該微處理器100的操作。此外,該SPU 2423可幫助測量所述核102 的性能及其它功能。更佳地說,該SPU 2423比所述核102較小、較不復雜并且具有更少的 功率消耗(例如,在一實施例中,該SPU 2423包括內(nèi)建的時脈口控(Clock Gating))。在一 實施例中,SPU 2423包括一 FORTH CPU核。
[0313] 可與由所述核102所執(zhí)行的除錯指令一起發(fā)生的非同步事件可能無法處理得很 好。然而,有利的是,該SPU 2423可W由一核102命令W偵測該事件,并執(zhí)行操作,像是建立 一紀錄檔(log)或修改該核102各方面的行為和/或該微處理器100外部總線接口,W作 為偵測此事件的響應。該SPU 2423可提供該紀錄檔信息到該使用者,并且其也可W與追蹤 器互動W請求該追蹤器提供該紀錄檔信息或請求胎追蹤器執(zhí)行其它動作。在一實施例中, 該SPU 2423能夠訪問控制該存儲器子系統(tǒng)的暫存器及每一核102的可編程中斷控制器,W 及該共享高速緩沖暫存器119的控制暫存器。
[0314] 該SPU 2423可偵測事件的例子包括如下;(1) 一核102正運作,例如,該核102在 一數(shù)量的時鐘周期中尚未引退(retire)可編程的任何指令;(2) -核102載入由存儲器中 一非高速緩沖區(qū)域內(nèi)的數(shù)據(jù);(3)在該微處理器100中溫度發(fā)生改變;(4)該操作系統(tǒng)請求 在該微處理器100總線時脈比的一變化及/或請求在該微處理器100電壓水平的一變化; (5)符合本身的該微處理器100改變電壓水平和/或總線時脈比,例如,W達成省電及改善 性能;(6) -核102的一內(nèi)部計時器逾時;(7) -高速緩沖窺探(snoop),其碰撞到一修改后 的高速暫存行(Cache line),而導致該高速暫存行被寫回至存儲器中;(8)該微處理器100 的溫度、電壓、總線時脈比超出一各自的范圍;(9) 一外部觸發(fā)信號在該微處理器100的一 外部管腳(pin)中由一使用者所確立。
[0315] 有利的是,因該SPU 2423獨立運行所述核102的程序碼132,其不具有像是在該核 102中執(zhí)行追蹤器微碼(tracer code)相同的限制。因此,該SPU 2423可偵測或被通知獨 立于該核102指令執(zhí)行邊界的事件并且不中斷該核102的狀態(tài)。
[0316] 該SPU 2423具有其執(zhí)行本身的程序碼。該SPU 2423可W從非核微碼ROM 2425 或從非該核PRAM 116中提取其程序碼。目P,更佳地說,該SPU 2423與該非核ROM 2425和 該非核PRAM 116共享運行于該核102中的微碼。該SPU 2423使用該非核PRAM 116 W儲 存其數(shù)據(jù),包括該紀錄檔。在一實施例中,該SPU 2423還包括其本身的序列端口接口,其可 傳送該紀錄檔至一外部裝置。有利的是,該SPU 2423也可指示在一核102中運行的追蹤器 W將該紀錄檔信息由非核PRAM 116儲存至系統(tǒng)存儲器中。
[0317] 該SPU 2423通過狀態(tài)暫存器及控制暫存器與所述核102通信。該SPU狀態(tài)暫存 器包括對應描述于上方且該SPU 2423可偵測每一事件的一位。為了通知該SPU 2423 -事 件,該核102在對應該事件的SPU狀態(tài)暫存器中設置一位。一些事件位由該微處理器100 的硬件所設置W及一些由所述核102的微碼所設置。該SPU 2423讀取該狀態(tài)暫存器W決 定已發(fā)生的事件的列表。一控制暫存器包括對應每一操作的位,其每一操作為該SPU 2423 響應偵測在狀態(tài)暫存器中指定事件其中之一的一操作。也就是說,對于在該狀態(tài)暫存器每 個可能的事件,一組操作位存在于該控制暫存器中。在一實施例中,每一事件有16個動作 位。在一實施例中,當該狀態(tài)暫存器被寫入W指示一事件時,其會造成該SPU 2423中斷,W 作為該SPU 2423讀取該狀態(tài)暫存器的響應,W決定哪些事件已經(jīng)發(fā)生。有利的是,如此可 通過減少該SPU 2423輪詢該狀態(tài)暫存器的需求W節(jié)省電源。該狀態(tài)暫存器及控制暫存器 也可由執(zhí)行指令(例如,RDMSR和WRMSR指令)的使用者程序讀取和寫入。
[031引該SPU 2423可執(zhí)行作為偵測一事件響應的該組操作包括W下各項。(1)將該紀錄 檔信息寫入該非核PRAM 116。對于每一寫入紀錄檔的操作,多個的操作位存在W使程序設 計人員指定該僅特定紀錄檔信息的子集應被寫入。(2)由該非核PRAM 116中寫入該紀錄 檔信息至該序列端口接口。(3)寫入控制暫存器其中之一W設定追蹤器的一事件。也就是 說,該SPU 2423可中斷一核102并導致該追蹤器微碼需執(zhí)行一組與該事件相關的操作。該 操作可通過先前的使用者所指定。在一實施例中,當該SPU 2423寫入該控制暫存器W設置 該事件時,該會造成該核102 -機器檢查異常,并且該機器檢查異常處理機檢查W查看追 蹤器是否被啟動。若是,則機器檢查異常處理機轉換控制至該追蹤器。該追蹤器讀取該控 制暫存器并且若設置在該控制暫存器中的事件為使用者已啟用該追蹤器的事件時,該追蹤 器通過與事件相關的使用者執(zhí)行先前所描述的操作。例如,該SPU 2423可設置一事件W造 成該追蹤器將儲存在非核PRAM 116中的紀錄檔信息寫入系統(tǒng)存儲器中。(4)寫入一控制暫 存器,W造成該微碼分支到由該SPU 2423所指定的一微碼地址。該是特別有助于如果該微 碼在一無限循環(huán)中,使得該追蹤器不能執(zhí)行任何有意義的操作,但該核102仍執(zhí)行并退回 (retire)該指令,其意指該處理器正執(zhí)行的事件將不會發(fā)生。(5)寫入一控制暫存器W使 一核102重置。如上面所提到,該SPU 2423可偵測一正進行的核102 (例如,對一些時間可 編程量而言,尚未退回(retire)任何指令)并重置該核。該重置微碼會檢查W查看該重置 是否由該SPU 2423所發(fā)起,若是,在初始化該核102的過程中,有助于在清除該紀錄檔信息 前寫出該紀錄檔信息至系統(tǒng)存儲器中。(6)連續(xù)記錄檔事件。在此種模式下,并非等待一事 件被中斷,而是該SPU 2423在一檢查該狀態(tài)暫存器的循環(huán)(loop)中旋轉(spin),并連續(xù)地 記錄信息至表示于此與事件相關的該非核PRAM116,且可選擇額外將該紀錄檔信息寫入該 序列端口接口。(7)寫入一控制暫存器,W停止一核102發(fā)出請求到該共享高速緩沖存儲器 119,及/或停止該共享高速緩沖存儲器119確認請求至核102。該在移除存儲器子系統(tǒng)相 關的設計錯誤特別有用,像是頁面轉換表(t油Iewalk)硬件錯誤,甚至可在該微處理器100 操作期間內(nèi)修改該錯誤,像是通過一修補修改該SPU 2423程序碼,如下所述。(8)寫入到該 微處理器100 -外部總線接口控制器的控制暫存器,W執(zhí)行在外部系統(tǒng)總線中的處理,像 是特定的周期或存儲器讀取/寫入周期。(9)寫入至一核102可編程中斷控制器的一控制 暫存器,例如,產(chǎn)生一中斷到另一核102或模擬一 I/O裝置到核102或固定修復在該中斷控 制器中的一錯誤。(10)寫入一該共享高速緩沖存儲器119的一控制暫存器W控制其大小, 例如,W不同方式停用或啟用相關的共享高速緩沖存儲器119。(11)寫入核102各種功能 單元的控制暫存器W配置不同的性能特征,像是分支預測化ranch prediction)和數(shù)據(jù)預 提?。╬refetch)演算法。如下所述,該SPU 2423程序碼可有助于被修補,即使在完成該微 處理器100的設計且已制造出該微處理器100之后,使該SPU 2423執(zhí)行如本文所述的動作 修補設計的缺陷或執(zhí)行其它功能。
[0319] 該SPU起始地址暫存器2497保持當該SPU 2423移除重置時,開始提取指令的該 地址。該SPU起始地址暫存器由核102寫入。該地址可位于非核PRAM116或非核微碼ROM 2425 中。
[0320] 請參閱圖25,其是顯示根據(jù)本發(fā)明一實施例一微碼修補2500的架構方塊圖。在 圖25的實施例中,該微碼修補2500包括下列部分;一標頭2502 ;-即時修補2504 ;該即時 修補2504的校對和(Checksum) 2506 ; - CAM數(shù)據(jù)2508 ;-核PRAM修補2512 ;該CAM數(shù)據(jù) 2508及核PRAM修補2512的一校對和2514 ; - RAM修補2516 ;-非核PRAM修補2518 ;該核 PRAM修補2512及RAM修補2516的一校對和2522。校對和2506/2514/2522在被載入至該 微處理器100之后,使該微處理器100核對修補各個部分的完整性。更佳地說,該微碼修補 2500由系統(tǒng)存儲器和/或一非揮發(fā)性(Non-volatile)系統(tǒng)所讀取,舉例來說,像是從具有 一系統(tǒng)BIOS或可擴展固件的ROM或FLA甜存儲器中。標頭2502描述該修補2500的各部 分,像是其大小、在其載入修補部分各自修補相關存儲器中的位置、及一指示該部分是否包 含一應用于該微處理器100有效修補的一有效旗標。
[0321] 該即時修補2504包括程序碼(例如,指令、較佳的微碼指令)W被載入至圖24 的非核微碼修補RAM 2408(例如,在圖26A?26B的方塊2612),接著由每一核102所執(zhí)行 (例如,在圖26A?26B的方塊2616)。該修補2500還指定該即時修補2504被載入至該 修補RAM2408中的地址。更佳地說,該即時修補2504碼修改由該重置微碼所寫入的預設 值,像是被寫入影響該微處理器100配置的配置暫存器的值。在即時修補2504由在該修補 RAM2408外的每一核所執(zhí)行后,并不會再次被執(zhí)行。此外,后續(xù)該RAM修補2516載入至該修 補RAM2408的過程(例如,在圖26A?26B中的方塊2632)可能會覆蓋在該修補RAM2408 的即時修補2504。
[0322] 該RAM修補2516包括用W取代在核R0M2404或需修補的非核R0M2425中的修補 微碼指令。該RAM修補2516還包括在當該修補2500被使用時,該修補微碼指令被寫入至 該修補RAM 2408中該位置的地址(例如,在圖26A?26B的方塊2632)。該CAM數(shù)據(jù)2508 被載入至每一核102的該修補CAM2439(例如,在圖26A?26B的方塊2626)。W上是W該 修補CAM 2439的操作角度所描述,該CAM數(shù)據(jù)2508包括一或多個項目,每一項目包括一對 微碼提取地址。該第一地址是被提取的微碼指令W及由該提取地址匹配的內(nèi)容。該第二地 址是指向在該修補RAM 2408中的地址,其該修補RAM 2408具有取代被修補微碼指令而被 執(zhí)行的該修補微碼指令。
[0323] 不同于該即時修補2504,該RAM修補2516維持在該修補RAM2408中,并(與根據(jù) 修補CAM數(shù)據(jù)2508的該修補CAM2439操作一起)繼續(xù)運作W修補該核微碼ROM 2404和/ 或該非核微碼ROM 2425,直到由另一修補2500或該微處理器100重置為止。
[0324] 該核PRAM修補2512包括被寫入至每一核102的該核PRAM2499的數(shù)據(jù)及在該數(shù) 據(jù)每一項目被寫入該核PRAM2499內(nèi)的地址(例如,在圖26A?26B的方塊2626)。該非核 PRAM修補2518包括被寫入至該非核PRAM 116的數(shù)據(jù)及在該數(shù)據(jù)每一項目被寫入該非核 PRAM 116內(nèi)的地址(例如,在圖26A?2她的方塊2632)。
[032引請參閱圖26A?26B,其是顯示圖24中該微處理器100的一操作W傳播圖25的一 微碼修補2500至該微處理器100的多個核102的一流程圖。該操作是W-單一和新的角度 所描述,但該微處理器100每一核102根據(jù)本發(fā)明操作W共同傳播該微碼修補至該微處理 器100的所有核102。圖26A?2她描述一遇到該指令的核使用一修改至該微碼的操作,其 流程開始于方塊2602,而其它核102的操作,其流程開始于方塊2652。應可理解的是,多個 修補2500可在該微處理器100操作期間內(nèi)的不同時間中應用至該微處理器100。例如一第 一修補2500當包括該微處理器100的該系統(tǒng)被引導時,像是在BIOS初始化期間內(nèi),根據(jù)描 述于本文中原子的實施例而被使用,W及一第二修補2500在該操作系統(tǒng)運行后而被使用, 其對W清除該處理器100錯誤的目的而言特別有用。
[0326] 在方塊2602中,核102其中之一遇到一指示其應用該微碼修補在該微處理器100 中的指令。更佳地說,該微碼修補類似于上面所述的微碼修補。在一實施例中,該應用微碼 修補指令是一 x86 WRMSR指令。為響應該應用微碼修補指令,該核102停用中斷并阻止執(zhí) 行該應用微碼修補指令的微碼。應可理解的是,包括該應用微碼修補指令的該系統(tǒng)軟件可 包括一多指令序列,W作為該微碼修補應用的準備。然而,更佳地說,其作為該序列單一架 構指令的響應,而該微碼修補在該架構指令級中W-原子方式被傳播至所有核。也就是說, 一旦中斷在該第一核102中被停用(例如,在方塊2602中,該核102遇到該應用微碼修補 指令),當執(zhí)行的微碼傳播該微碼修補且應用至該微處理器100所有核102時(例如,直到 在方塊2652后為止),中斷仍維持停用;再者,一旦在其它核102中被停用(例如,在方塊 2652),其仍被停用直到該微碼修補已被應用到該微處理器100所有核102中為止(例如, 直到方塊2634后為止)。因此,有利的是,該微碼修補在該架構指令級W-原子方式被傳播 并應用于該微處理器100的所有核102中。流程進行到方塊2604。
[0327] 在方塊2604中,該核102獲得圖1中該硬件信號量118的所有權。更佳地說,該 微處理器100包括一與修補微碼相關的硬件信號量118。更佳地說,該核102 W-方式獲得 硬件信號量118的所有權,其方式類似上方圖20所描述,更具體地說為方塊2004和2006。 該硬件信號量118被使用由于有可能核102其中之一使用一修補2500 W作為遇到一應用 微碼修補指令的響應,而一第二核102遇到一應用微碼修補指令,W作為該第二核將開始 使用該第二修補2500,其可能會造成不正確的執(zhí)行,舉例來說,由于該第一修補2500的誤 用。流程進行到方塊2606。
[032引在方塊2606中,該核102傳送一修補信息至其它核102并且傳送一核間中斷至其 它核102。更佳地說,該核102在時間中斷被停用的期間內(nèi)(例如,該微碼不允許其本身被 中斷)阻止該微碼W響應該應用微碼修補指令(方塊2602),或響應該中斷(方塊2652), 并保持該微碼中,直到方塊2634為止。流程由方塊2606進行到方塊2608。
[0329] 在方塊2652中,其它核102之一(例如,在方塊2602中除了遇到該應用微碼修補 指令的該核102之外的一核)被中斷并且因在方塊2606中所傳送的該核間中斷而接收該 修補信息。在一實施例中,該核102在下一架構指令邊界中(例如,在下一 x86指令邊界 中)取得該中斷。為了響應該中斷,該核102停用中斷且阻止處理該修補信息的微碼。如 上所述,雖然在方塊2652中的流程是W-單一核102的角度所描述,但每一其它核102 (例 女口,沒在方塊2602中的核102)在方塊2652中被中斷并接收該信息,且執(zhí)行在方塊2608至 方塊2634的步驟。流程由方塊2652進行到方塊2608。
[0330] 在方塊2608中,該核102寫入一同步情況21的同步請求(在圖26A?26B中標 示為SYNC 21)至其同步暫存器108中,并由該控制單元104令該核102進入睡眠狀態(tài),并 隨后當所有核102已寫入SYNC 21時,由該控制單元104喚醒。流程進行到判斷方塊2611。
[0331] 在判斷方塊2611中,該核102判斷其是否為遇見方塊2602中的該微碼修補的核 102 (與在方塊2652中接收該修補信息的一核102相比較)。若是,則流程進行到方塊2612 ; 否則,流程進行到方塊2614。
[0332] 在方塊2612中,該核102將該微碼修補2500的即時修補2504的一部分載入至該 非核修補RAM 2408。此外,該核102產(chǎn)生該載入即時修補2504的一檢查和并驗證其與該校 對和2506相匹配。更佳地說,該核102也傳送信息至其它核102,其指示該即時修補2504 的長度及該即時修補2504被載入在非核修補RAM2408內(nèi)的位置。有利的是,因所有核102 已知執(zhí)行實行該微碼修補應用的相同微碼,因此當一先前RAM修補2516存在于該非核修 補RAM2408時,則由于在該段期間內(nèi)(假設實行于該微碼修補應用的微碼并不被修補)在 該修補CAM 2439中將不具有碰撞化it),故使用該新修補覆蓋該非核修補RAM2408是安全 的。在另一實施例中,該核102將該即時修補2504載入到該非核PRAM 116,并在方塊2616 中的該即時修補2504執(zhí)行之前,核102將該立即修補2504從該非核PRAM 116復制到該 非核修補RAM 2408。更佳地說,該核102將該立即修補載入至被保留用于此目的的該非核 PRAM 116的一部分,例如,不被用于其它目的的該非核PRAM 116的一部分,像是持有由該 微碼所使用的值(例如,如上所述的核102狀態(tài)、TPM狀態(tài)、或有效微碼常數(shù)),并且該非核 PRAM 116的一部分可W被修補(例如,在方塊2632),W使任一先前非核PRAM修補2518不 被破壞(clo化er)。在一實施例中,載入該非核PRAM 116或由該非核PRAM 116所復制的動 作在多個階段中執(zhí)行,W減少該已保留部分所需的大小。流程進行到方塊2614。
[0333] 在方塊2614中,該核102寫入一同步情況22 (在圖26A?2她中標示為SYNC 22) 的同步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所 有核102寫入一 SYNC 22時,由控制單元104所喚醒。流程進行到方塊2616。
[0334] 在方塊2616中,該核102執(zhí)行該非核修補RAM2408中的該即時修補2504。如上所 述,在一實施例中,在該核102執(zhí)行該即時修補2504之前,該核102將該即時修補2504由 該非核修補RAM 116復制至該非核修補RAM 2408。流程進行至方塊2618。
[0335] 在方塊2618中,該核102寫入一同步情況23 (在圖26A?2她中標示為SYNC 23) 的同步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所 有核102寫入一 SYNC 23時,由控制單元104所喚醒。流程進行到判斷方塊2621。
[0336] 在判斷方塊2621中,該核102決定該核102是否為遇到在方塊2602中的該應用 微碼修補指令的核102 (與在方塊2652中接收該修補信息的一核102相比較)。若是,則流 程進行到方塊2622 ;否則,流程進行到方塊2624。
[0337] 在方塊2622中,該核102將該CAM數(shù)據(jù)2508及核PRAM修補2512載入至該非核 PRAM 116。此外,該核102產(chǎn)生該載入CAM數(shù)據(jù)2508及核PRAM修補2512的一檢查和并 驗證其與該校對和2514相匹配。更佳地說,該核102也傳送信息至其它核102,其指示該 CAM數(shù)據(jù)2508及核PRAM修補2512的長度,W及該CAM數(shù)據(jù)2508及核PRAM修補2512被 載入在非核PRAM 116內(nèi)的位置。更佳地說,該核102將該CAM數(shù)據(jù)2508及核PRAM修補 2512載入至該非核PRAM 116的一已保留部分,W使任一先前非核PRAM修補2518不被破壞 (closer),其類似于方塊2612中所描述的方式。流程前進至方塊2624。
[033引 在方塊2624中,該核102寫入一同步情況24 (在圖26A?2她中標示為SYNC 24) 的同步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所 有核102寫入一 SYNC 24時,由控制單元104所喚醒。流程進行到方塊2626。
[0339] 在方塊2626中,該核102將該CAM數(shù)據(jù)2508由該非核PRAM 116載入至其修補CAM 2439。此外,該核102將該核PRAM修補2512由該非核PRAM 116載入至其核PRAM 2499。 有利的是,由于所有核已知正執(zhí)行實行于該微碼修補應用中相同的微碼,即使該對應RAM 修補2516尚未被寫入該非核修補RAM 2408 (其將在方塊2632中發(fā)生),由于在該段期間 內(nèi)(假設實行于該微碼修補應用的微碼并不被修補)在該修補CAM 2439中將不具有碰撞 化it),故使用該CAM數(shù)據(jù)2508載入該修補CAM 2439是安全的。此外,由于所有核102已 知正執(zhí)行實行于該微碼修補應用中相同的微碼,并且中斷將不在任一核102中使用直到該 修補2500被傳播至所有核102為止,因此由該核PRAM修補2512所執(zhí)行至該核PRAM 2499 的任一更新,其包括用W改變可能影響該核102操作的值的更新(例如,功能設置),保證不 會在架構中看見,直到該修補2500已被傳播到所有核102為止。流程進行到方塊2628。
[0340] 在方塊2628中,該核102寫入一同步情況25 (在圖26A?2她中標示為SYNC 25) 的同步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所 有核102寫入一 SYNC 25時,由控制單元104所喚醒。流程進行到判斷方塊2631。
[0341] 在判斷方塊2631中,該核102決定該核102是否為遇到在方塊2602中的該應用 微碼修補指令的核102 (與在方塊2652中接收該修補信息的一核102相比較)。若是,則流 程進行到方塊2632 ;否則,流程進行到方塊2634。
[0342] 在方塊2632中,該核102載入該RAM修補2516至該非核修補RAM 2408。此外,該 核102載入該非核PRAM修補2518至該非核PRAM 116。在一實施例中,該非核PRAM修補 2518包括由該SPU 2423所執(zhí)行的程序碼。在一實施例中,該非核PRAM修補2518包括該微 碼所使用值的更新,如上所述。在一實施例中,該非核PRAM修補2518包括該SPU 2423程 序碼W及該微碼所使用值的更新。有利的是,由于所有核102已知正執(zhí)行實行于該微碼修 補應用中相同的微碼,更具體地說,所有核102的該修補CAM 2439已被載入該新CAM數(shù)據(jù) 2508 (例如,在方塊2626中),W及在該段期間內(nèi)(假設實行于該微碼修補應用的微碼并不 被修補)在該修補CAM 2439中將不具有碰撞化it)。此外,由于所有核102已知正執(zhí)行實 行于該微碼修補應用中相同的微碼,并且中斷將不在任一核102中使用直到該修補2500被 傳播至所有核102為止,由該非核PRAM修補2518所執(zhí)行至該非核PRAM 116的任一更新, 包括用W改變可能影響該核102操作的值的更新(例如,功能設置),保證不會在架構中看 見,直到該修補2500已被傳播到所有核102為止。流程進行到方塊2634。
[0343] 在方塊2634中,該核102寫入一同步情況26 (在圖26A?2她中標示為SYNC 26) 的同步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所 有核102寫入一 SYNC 26時,由控制單元104所喚醒。流程結束于方塊2634。
[0344] 在方塊2634之后,如果程序碼被載入至用于該SPU 2423的該非核PRAMl 16時,該 修補核102也接著開始執(zhí)行該程序碼,如圖30所述。此外,在方塊2634后,該修補核102 釋放在方塊2634中所取得的硬件信號量118。更進一步地說,在方塊2634之后,該核102 重新啟動上述中斷。
[0345] 請參閱圖27,其是顯示根據(jù)圖26A?26B流程圖的一微處理器操作的一例子的時 序圖。在此例子中,一微處理器100配置具有H個核102,標示為核0、核1和核2,如圖所 示。然而,應可理解的是,在其它實施例中,該微處理器100可包括不同數(shù)量的核102。在此 時序圖中,事件進行的時序如下方所述。
[0346] 核0接收到一請求修補微碼的請求(每一方塊2602)并W響應取得該硬件信號量 118 (每一方塊2604)。核0接著傳送一微碼修補信息及中斷至核1及核2 (每一方塊2606)。 核0接著寫入一 SYNC 21并進入睡眠狀態(tài)(每一方塊2608)。
[0347] 每一核1及核2最終由其目前的任務中被中斷并讀取該信息(每一方塊2652)。 對此,每一核1及核2寫入一 SYNC 21并并進入睡眠狀態(tài)(每一方塊2608)。如圖所示,例 女口,由于當該中斷被確立時,正執(zhí)行該指令延遲的因素,每一核寫入SYNC 21的時間可能不 同。
[034引當所有核已寫入SYNC 21時,該控制單元104同時將所有核喚醒(每一方塊 2608)。核0接著將該即時修補2504載入至該非核PRAM 116 (每一方塊2612),并寫入一 SYNC 22,并進入睡眠狀態(tài)(每一方塊2614)。每一核1及核2寫入一 SYNC 22,并進入睡眠 狀態(tài)(每一方塊2614)。
[0349] 當所有核已寫入該SYNC 22時,該控制單元104同時將所有核喚醒(每一方塊 2614)。每一核執(zhí)行該即時修補2504(每一方塊2616)并寫入一 SYNC23,且進入睡眠狀態(tài) (每一方塊2618)。
[0巧0] 當所有核已寫入該SYNC 23時,該控制單元104同時將所有核喚醒(每一方塊 2618)。核0接著將該CAM數(shù)據(jù)2508及核PRAM修補2512載入至非核PRAM 116 (每一方塊 2622),并寫入一 SYNC 24,且進入睡眠狀態(tài)(每一方塊2624)。
[0巧1] 當所有核已寫入該SYNC 24時,該控制單元104同時將所有核喚醒(每一方塊 2624)。每一核接著使用該CAM數(shù)據(jù)2508載入其修補CAM 2439,并使用該核PRAM修補 2512(每一方塊2626)載入其核PRAM 2499,且寫入一 SYNC 25,并進入睡眠狀態(tài)(每一方塊 2628)。
[0巧2] 當所有核已寫入該SYNC 25時,該控制單元104同時將所有核喚醒(每一方塊 2628)。核0接著將該RAM修補2516載入至該非核修補RAM 2408,并將該非核PRAM修補 2518載入至該非核PRAM 116, W及寫入一 SYNC 26,并進入睡眠狀態(tài)(每一方塊2634)。 [0巧3] 當所有核已寫入該SYNC 26時,該控制單元104同時將所有核喚醒(每一方塊 2634)。如上所述,若程序碼已被載入至用于該SPU 2423中的該非核PRAM 116 W方塊2632 的步驟時,該核102也接著開始執(zhí)行該程序碼,如W下圖30所描述。
[0巧4] 請參照圖28,其是顯示根據(jù)另一實施例的一多核微處理器100的方塊圖。該微處 理器100在許多方面相似于圖24的微處理器100。然而,圖28的微處理器100未包括一 非核修補RAM,但包括一核修補RAM 2808在每一核102中,其提供與圖24該非核修補RAM 2408類似的功能。然而,在每一核102中的核修補RAM 2808由其各自核102所專用并且不 與其它核102所共享。
[0355] 請參閱圖29A?29B,其是顯示根據(jù)另一實施例的圖28中該微處理器100用W傳 播一微碼修補至該微處理器100的多個核102的一操作流程圖。在圖28及圖29A?29B的 另一實施例中,圖25的修補2500可W被修改,使得該校對和2514采用該RAM修補2516,而 非采用該核PRAM修補2512,并在該CAM數(shù)據(jù)2508的完整性、該核PRAM修補2512及該RAM 修補2516載入該微處理器100(例如,在圖29A?29B中的方塊2922)后,啟用該微處理器 100來驗證該CAM數(shù)據(jù)2508的完整性、該核PRAM修補2512及該RAM修補2516。圖29A? 29B的流程圖在許多方面類似于圖26A?26B的流程圖,且同樣編號的方塊也相似。然而, 方塊2912替換方塊2612、方塊2916替換方塊2616、方塊2922替換方塊2622、方塊2926替 換方塊2626 W及方塊2932替換方塊2632。在方塊2912中,該核102將該即時修補2504 載入至該非核PRAM 116 (而非載入至一非核修補RAM)。在方塊2916中,該核102在執(zhí)行該 即時修補2504之前,將該即時修補2504從非核PRAM 116復制到該核修補RAM 2808。在 方塊2922中,除了該CAM數(shù)據(jù)2508及該核PRAM修補2512之外,該核102將該RAM修補 2516載入至該非核PRAM 116。在方塊2926中,該核102除了將該CAM數(shù)據(jù)2508由該非 核PRAM 116載入至其修補CAM 2439及將該核PRAM修補2512由該非核PRAM 116載入至 其核PRAM2499之外,該核102還將該RAM修補2516從該非核PRAM 116載入至其修補RAM 2808。在方塊2932中,不同于圖26A?26B的方塊2632,該核102不將該RAM修補2516載 入至一非核修補RAM。
[0巧6] 可由上述實施例中觀察,益于傳播至該微處理器100核102每一相關存儲器 2439/2499/2808及至相關非核存儲器2408/116的該微碼修補2500的原子傳播W-方式進 行W確保該修補2500的完整性及有效性,即使存在多個同時執(zhí)行的核102,其核102能共享 資源,否則當應用于傳統(tǒng)方式時,核102可能會破壞(Clo化er)另一核修補的各部分。 防357] 修補服備化巧器巧序碼
[0巧引請參閱圖30,其是顯示圖24的微處理器100用W修補一服務處理器程序碼的流程 圖。流程開始于方塊3002。
[0359] 在方塊3002中,該核102將由該SPU 2423執(zhí)行的程序碼載入至在一修補所指定 一修補地址中的該非核PRAM 116,如上面圖26A?2她方塊2632中所述。流程進入該方塊 3004。
[0360] 在方塊3004中,該核102控制該SPU 2423 W執(zhí)行在修補地址的程序碼,例如,該 SPU 2423的程序碼在方塊3002中被寫入于非核PRAM 116中的地址。在一實施例中,該SPU 2423配置用W從起始地址暫存器2497提取其重置向量(例如,該SPU 2423移除重置后開 始提取指令的地址),W及該核102將該修補地址寫入該起始地址暫存器2497,接著寫入至 一使該SPU 2423被重置的控制暫存器中。流程進行到方塊3006。
[0361] 在方塊3006中,該SPU 2423開始在該修補地址提取程序碼(例如,提取其第一指 令),例如,在方塊3002中寫入該SPU 2423程序碼至非核PRAM 116中的地址。一般來說, 駐留在該非核PRAM 116中的SPU 2423修補程序碼將執(zhí)行一跳轉(jump)至駐留在該非核 ROM 2425中的SPU 2423程序碼。流程結束于方塊3006。
[0362] 修補該SPU 2423程序碼的功能可能特別有用。例如,該SPU 2423可被用于本質 上短暫的性能測試,舉例來說,其可能不欲使該性能測試SPU 2423程序碼成為該微處理器 100永久的一部分,而僅成為發(fā)展部分的一部分,例如,對于制造部分而言,僅成為發(fā)展部分 的一部分。在另一例子中,該SPU2423可用W找尋和/或修復錯誤。在另一例子中,該SPU 2423可用W配置該微處理器100。 陽36引 審新為毎一核郎時架構巧視儲存溶源的原子傳擺
[0364] 請參照圖31,其是顯示根據(jù)另一實施例的一多核微處理器100的方塊圖。該微處 理器100在許多方面相似于圖24的微處理器100。然而,圖31的微處理器100每一核102還 包括架構上可見的存儲器類型范圍暫存器(Memoir Type Range Registers, MTRRs) 3102。 也就是說,每一核102實例化架構上可見的MTRR 3102,即使系統(tǒng)軟件要求MTRR 3102在所 有核102中是一致的(更詳細的描述如下)。MTRR 3102為每一核實例化架構上可見的儲 存資源的例子,W及其它每一核實例化架構上可見的儲存資源實施例描述如下。(雖然圖并 未示出,但每一核102還包括圖24中的該核PRAM 2499、核微碼ROM 2404、修補CAM 2439, W及在一實施例中,圖28的核微碼修補RAM 2808)。
[0365] MTRR 3102提供一種系統(tǒng)軟件,W使一存儲器類型與在該微處理器100系統(tǒng)存 儲器地址空間中多個不同的實體地址范圍相關。不同存儲器類型的例子包括強不可緩沖 的(strong uncache 油 Ie)、不可緩沖的(uncache 油 Ie)、寫入結合(write-combining)、 寫入通過(write t虹OU曲)、寫回(write back)及寫入保護(write protected)。每一 MTRR3102(明確地或隱含地)指定一存儲器范圍及其存儲器類型。各MTRR3102的共同值定 義一存儲器映射,其指定不同的存儲器范圍的存儲器類型。在一實施例中,MTRR3102類似 于在Intel 64 W及IA-32架構軟件開發(fā)人員手冊,第3冊:系統(tǒng)編程指南,2013年9月,特 別是在第11. 11節(jié)的描述,其在本文中被引用并構成本說明書的一部分。
[0366] 希望由MTRR 3102所定義的存儲器映射在用于該微處理器100所有核中為相同 的,W使在該微處理器100中運作的該軟件具有一存儲器一致性。然而,在傳統(tǒng)的處理器 中,并無硬件支持W維持在一多核處理器核間MTRRs的一致性。如先前提到Intel手冊第3 冊第11-20頁底部注解描述,"P6及更多最近的處理器家族提供并無提供用W維持[MTRRs 值的一致性]的硬件支持"。因此,系統(tǒng)軟件則負責維持跨核MTRR的一致性。上方引用Intel 手冊第11. 11. 8節(jié)描述系統(tǒng)軟件的一演算法,其用W維持與更新與其MTRRs多核處理器每 一核相關的一致性,例如,所有核執(zhí)行更新其各自MT服S的指令。
[0367] 相反地,該系統(tǒng)軟件可在該核102其中之一中更新該MTRR 3102各自請求 (instance),W及在一原子方式中利于該核102傳播該更新至該微處理器100所有核102 中MTRR 3102的各自請求的實施例描述于本文中(類似于描述在上方圖24至圖30中實施 例所執(zhí)行的一微碼修補的方式)。其提供一種用W維持在不同核102的MTRR 3102間架構 指令級一致性的方法。
[036引請參閱圖32,其是顯示圖31中該微處理器100用W傳播一MTRR 3102更新至該微 處理器100的多個核102之一的操作流程圖。該操作從一單一核的角度所描述,但該微處 理器100的每一核102根據(jù)共同傳播該MTRR3102更新至該微處理器100所有核102的描 述來進行操作。更具體的說,圖32描述遇到更新該MTRR 3102指令的核的操作,其流程開 始于方塊3202,而其它核102的操作,其流程開始于方塊3252。
[0369] 在方塊3202中,核102其中之一遇到一指示該核更新其MTRR 3102的指令。也就 是說,該MTRR更新指令包括一 MTRR3102識別符及一被寫入至該MTRR 3102的更新值。在 一實施例中,該MTRR更新指令是一 x86 WRMSR指令,其用W指定在EAX: EDX暫存器中的該 更新值及在該ECX暫存器的該MTRR3102識別符,其為在該核102的MSR地址空間內(nèi)的一 MSR地址。為了響應該MTRR更新指令,該核102停用中斷并阻止執(zhí)行該MTRR更新指令的 微碼。應可理解的是,包括該MTRR更新指令的該系統(tǒng)軟件可包括一多指令序列,W作為該 MTRR 3102更新的準備。然而,更佳地說,其作為該序列單一架構指令的響應,所有核102的 MTRR 3102在該架構指令級中W-原子方式被更新。也就是說,一旦中斷在該第一核102中 被停用(例如,在方塊3202中,該核102遇到該MTRR更新指令),當執(zhí)行的微碼傳播新MTRR 3102值至該微處理器100所有核102時(例如,直到在方塊3218后為止),中斷仍維持停 用。再者,一旦在其它核102中被停用(例如,在方塊3252),其仍被停用直到該微處理器 100所有核102的該MTRR 3102已更新為止(例如,直到方塊2634后為止)。因此,有利的 是,該新MTRR 3102值在該架構指令級中W-原子方式被傳播至該微處理器100的所有核 102中。流程進行到方塊3204。
[0370] 在方塊3204中,該核102獲得圖1中該硬件信號量118的所有權。更佳地說,該 微處理器100包括與一 MTRR 3102相關的一硬件信號量118。更佳地說,該核102 W-方 式獲得硬件信號量118的所有權,其方式類似上方圖20所描述,更具體地說為方塊2004和 2006。該硬件信號量118被使用由于有可能核102其中之一執(zhí)行一 MTRR 3102更新,W作 為遇到一 MTRR更新指令的響應,而一第二核102遇到一 MTRR更新指令,W作為該第二核將 開始更新該MTRR3102的響應,該可能會造成不正確的執(zhí)行。流程進行到方塊3206。
[0371] 在方塊3206中,一核102傳送一 MTRR更新信息至其它核102并傳送其它核102 一核間中斷。更佳地說,在時間中斷被停用的期間內(nèi)(例如,該微碼不允許其本身被中斷), 該核102阻止該微碼W響應該MTRR更新指令(在方塊3202中)或響應該中斷(在該方塊 3252中),并維持于該微碼中,直到方塊3218為止。流程進行到方塊3208。
[0372] 在方塊3252中,其它核102之一(例如,在方塊3202中除了遇到該MTRR更新指令 的該核102之外的一核)被中斷并且因在方塊3206中所傳送的該核間中斷而接收該MTRR 更新信息。在一實施例中,該核102在下一架構指令邊界中(例如,在下一 x86指令邊界中) 取得該中斷。為了響應該中斷,該核102停用中斷且阻止處理該MTRR更新信息的微碼。如 上所述,雖然在方塊3252中的流程是W-單一核102的角度所描述,但每一其它核102 (例 女口,沒在方塊3202中的核102)在方塊3252中被中斷并接收該信息,且執(zhí)行在方塊3208至 方塊3234的步驟。流程由方塊3252進行到方塊3208。
[0373] 在方塊3208中,該核102寫入一同步情況31的同步請求(在圖32中標示為SYNC 31)至其同步暫存器108中,并由該控制單元104令該核102進入睡眠狀態(tài),并隨后當所有 核102已寫入SYNC 31時,由該控制單元104喚醒。流程進行到判斷方塊3211。
[0374] 在判斷方塊3211中,該核102判斷其是否為遇見在方塊3202中該MTRR更新指令 的核102 (與在方塊3252中接收該MTRR更新信息的一核102相比較)。若是,則流程進行 到方塊3212 ;否則,流程進行到方塊3214。
[OW引在方塊3212中,該核102將由該MTRR更新指令所指定的該MTRR識別符及該MTRR 被更新使得所有其它核102可看見的一 MTRR更新值載入至該非核PRAM 116。在一 x86實施 例的情況下,MTRR 3102包括;(1)已修復范圍MTRR,其包括一經(jīng)由單一 WRMSR指令更新的 單一 64位MSR W及(2)不同范圍MTRR,其包括兩個64位MSR,每一MSR通過一不同WRMSR指 令被寫入,例如,該兩個WRMSR指令指定不同MSR地址。對于不同范圍MTRRs,該MSR其中之 一(該PHYSBASE暫存器)包括該存儲器范圍的一基址及一用W指定該存儲器類型的一類 型欄位,W及其它的MSR(該PHYSMASK暫存器)包括一有效位及一設置該范圍遮蔽(mask) 的遮蔽欄位。更佳地說,該核102載入至該非核PRAM 116的該MTRR更新值如下。
[0376] 1、若該MSR確定為該PHYSMASK暫存器時,則該核102載入該非核PRAM 116 - 128 位更新值,該更新值包括由該WRMSR指令所指定的新64位值(其包括該有效位及遮蔽值) W及該PHYSBASE暫存器的當前值(其包括基值及類型值)。
[0377] 2、若該MSR確定為該PHYSBASE暫存器時:
[037引 a、若在該PHYSMASK暫存器中有效位正被設置,則該核102載入至該非核PRAM 116 一 128位的更新值,該更新值包括由該WRMSR指令所指定該新的64位值(該64位值包括 該基值及類型值)W及該PHYSMASK暫存器的當前值(該當前值包括該有效位及遮蔽值)。
[0379] b、若在該PHYSMASK暫存器中有效位正被設置,則該核102載入至該非核PRAM 116 一 64位的更新值,該更新值僅包括由該WRMSR指令所指定該新的64位值(該64位值包括 該基值及類型值)。
[0380] 此外,若該寫入的更新值是一 128位的值,該核102在該非核PRAM 116中設置一 旗標,并且,若該更新值是一 64位的值時,則該核102清除該旗標。流程由方塊3212進行 到方塊3214。
[0381] 在方塊3214中,該核102寫入一同步情況32(在圖32中標示為SYNC 32)的同 步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所有核 102寫入一 SYNC 32時,由控制單元104所喚醒。流程進行到方塊3216。
[038引在方塊3216中,該核102從該非核PRAM 116讀取在方塊3212中寫入的該MTRR 3102識別符及該MTRR更新值。有利的是,該MTRR更新值傳播W-原子方式執(zhí)行,使得任 何可能會影響各自核102操作的MTRR 3102的更新保證在架構上不可見,直到該更新值已 被傳播至所有核102的MTRR 3102為止,由于所有核已知正執(zhí)行實行于該MTRR更新指令中 相同的微碼,并且中斷將不在任一核102中使用,直到該更新值被傳播至所有核102各自的 MTRR 3102為止。如W上本實施例中方塊3212所述,若該旗標在方塊3212中被設置時,貝U 該核102也更新(除了已確定的MSR之外)該PHYSMASK或PHYSBASE暫存器;否則,若該旗 標為清除(clear)時,則該核102僅更新已確定的MSR。流程進行到方塊3218。
[0383] 在方塊3218中,該核102寫入一同步情況33(在圖32中標示為SYNC 33)的同 步請求到其同步暫存器108,并由該控制單元104使該核102進入睡眠狀態(tài),隨后當所有核 102寫入一 SYNC 33時,由控制單元104所喚醒。流程結束于方塊3218。
[0384] 在方塊3218之后,該MTRR核102釋放在方塊3204中所獲得的該硬件信號量118。 更進一步地,在方塊3218之后,該核102重新啟動中斷。
[0385] 從圖31和圖32觀察可知,運行在圖31微處理器100中的系統(tǒng)軟件可利于執(zhí)行在 該微處理器100單一核102中執(zhí)行一 MTRR更新指令W完成更新該微處理器100所有核102 的指定MTRR 3102,而非單獨在每一核102中執(zhí)行一MTRR更新指令,其可W提供系統(tǒng)的完整 性。
[0386] 一實例化在每一核102中特定MTRR3102是一系統(tǒng)管理范圍暫存器(System Management Range Register, SMRR)3102。由于該SMRR 3102擁有程序碼及與系統(tǒng)管理 模式(System Management Mode, SMM)相關的數(shù)據(jù)的操作,如一系統(tǒng)管理中斷(System Management Interrupt, SMI)處理器,因此由該SMRR 3102所指定的該存儲器范圍被稱為 SMRAM區(qū)域。當在一核102中運行的程序碼嘗試存取該SMRAM區(qū)域時,若該核102運行于 SMM中,則該核102僅允許此存取;否則,該核102忽略寫入該SMRAM區(qū)域的一寫入,并恢復 由該SMRAM區(qū)域中所讀取每一位的一固定值。此外,如果一運行在該SMM中的一核102嘗試 在該SMRAM區(qū)域外執(zhí)行程序碼,則該核102將確立一機器檢查異常。此外,當該核102運行 在SMM中時,該核102僅允許程序碼寫入該SMRR3102中。該有利于在該SMRAM區(qū)域中SMM 程序碼和數(shù)據(jù)的保護。在一實施例中,該SMRR3102類似于在Intel64和IA-32架構軟件開 發(fā)人員手冊第3冊:系統(tǒng)編程指南,2013年9月,特別是在第11. 11. 2. 4和34. 4.2. 1節(jié)描 述,其在本文中被引用并構成本說明書的一部分。
[0387] -般來說,每一核102具有其自身在存儲器中SMM程序碼和數(shù)據(jù)的例子。期望的 是每一核102的SMM程序碼和數(shù)據(jù)受到保護W避免不僅來自于在本身中運行的程序碼,而 且還來自另一核102中運行的程序碼。為了使用SMRRS3102來完成,系統(tǒng)軟件通常將多個 SMM程序碼和數(shù)據(jù)實例放置于存儲器中相鄰的區(qū)塊。目P,該SMRAM區(qū)域是一單一包括所有 SMM程序碼和數(shù)據(jù)實例的鄰近存儲器區(qū)域。如果該微處理器100所有核102的該SMRR 3102 具有指定包括所有SMM代程序碼和數(shù)據(jù)實例的該單一鄰近存儲器區(qū)域全體的值時,該可W 阻止在非SMM中一核運行的程序碼更新另一核102的SMM程序碼及數(shù)據(jù)實例。當一時間窗 口存在于核102中SMRR 3102值不相同時,例如,該微處理器100不同核102中SMRRs 3102 具有不同的值,其任一值明確小于包括所有SMM程序碼和數(shù)據(jù)實例的單一鄰近存儲器區(qū)域 的整體,則系統(tǒng)可能易受到一安全攻擊,對于給定SMM的性質而言,其可能是嚴重的。因此, 描述原子傳播更新至SMRRs 3102的實施例可W是特別有利的。
[038引此外,其它實施例可預期該微處理器100其它每一核實例化架構上可見儲存資源 的更新W類似上述方法的一原子方式被傳播。例如,在一實施例中,每一核102實例化該 x86 IA32_MISC_ENABLE MSR的某些位欄位,并且在一核102中所執(zhí)行的一 WRMSR W類似 如上所述的一方式被傳播至該微處理器100中的所有核102。此外,實施例也可預期在一 WRMSR的一核102中的執(zhí)行至在該微處理器100所有核102中被實例化的其它MSR,其皆為 架構上及專用的及/或當前和未來的,W類似如上所述的一方式被傳播至該微處理器100 中的所有核102。
[0389] 此外,盡管實施例描述該每一核實例化架構上可見的儲存資源為MTRRs,其它實施 例預期為該每一核實例化資源為不同于X86 ISA指令集架構的資源、及其它除了 MT服S之 外的資源。舉例來說,其它除了 MT服S之外的資源包括CPUID值及回報功能的MSR,像是向 量多媒體擴展(Vectored Multimedia extensions, VMX)功能。
[0390] 雖然本發(fā)明已W較佳實施例掲露如上,然其并非用W限定本發(fā)明,本領域技術人 員在不脫離本發(fā)明的精神和范疇內(nèi),當可做些許更動與潤飾,因此本發(fā)明的保護范圍當W 本申請權利要求所界定的為準。例如,軟件可致能,例如,功能、制造、模型化、模擬、描述及 /或測試本發(fā)明所述的裝置W及方法。上述可通過使用一般程序語言(例如;c、c++)、硬件 描述語言(化rdware Description Languages,皿L)包括 Verilog 皿L、VHDL 等等來實現(xiàn)。 此類軟件可WW程序碼的型態(tài)包含于實體介質中,例如任何其它機器可讀取(如計算機可 讀?。﹥Υ娼橘|如半導體、磁盤、硬盤或光盤(例如;CD-ROM、DVD-ROM等等),其中,當程序 碼被機器,如計算機載入且執(zhí)行時,此機器變成用W實施本發(fā)明的裝置。本發(fā)明的方法與裝 置也可W W程序碼型態(tài)通過一些傳送介質,如電線或電纜、光纖、或是任何傳輸型態(tài)進行傳 送,其中,當程序碼被機器,如計算機接收、載入且執(zhí)行時,此機器變成用W實施本發(fā)明的裝 置。當在一般用途處理器實作時,程序碼結合處理器提供一操作類似于應用特定邏輯電路 的獨特裝置。本發(fā)明所述的裝置W及方法可包含于一半導體智能產(chǎn)權核例如一微處理器核 (嵌入于皿L),并轉換成集成電路的硬件產(chǎn)品。此外,本發(fā)明所述的裝置W及方法可包含具 有硬件W及軟件的組合實體實施例。因此本發(fā)明的保護范圍當視本申請權利要求所界定的 為準。最后,本領域技術人員可基于本發(fā)明所掲露的概念W及特定實施例,在不脫離本發(fā)明 的精神和范圍內(nèi)可做些許更動與潤飾W達到本發(fā)明的相同目的。
【權利要求】
1. 一微處理器,其特征在于,包括: 多個處理核,每一處理核包括一各自中斷請求輸入;以及 一控制單元,被配置為由上述多個處理核的每一處理核接收一各自同步請求, 其中,上述控制單元被配置為在上述各自中斷請求輸入中產(chǎn)生一中斷請求至所有上述 多個處理核,以作為偵測到上述控制單元已接收到由所有上述多個處理核所傳送的上述各 自同步請求的響應。
2. 根據(jù)權利要求1所述的微處理器,其特征在于,上述各自同步請求的每一同步請求 包括一由上述處理核所寫入的一值,其中當上述控制單元偵測上述多個處理核其中之一寫 入一不同于先前由上述多個處理核中其它處理核所寫入的上述值的值時,上述控制單元被 配置為指示一停頓情況。
3. 根據(jù)權利要求1所述的微處理器,其特征在于,上述各自同步請求的每一同步請求 包括一由上述處理核所寫入的一值,其中由上述處理核所寫入的上述值包括一指示上述值 是否包括一睡眠狀態(tài)的指示,其中上述控制單元被配置為在上述各自中斷請求輸入中產(chǎn)生 一中斷請求至所有上述多個處理核,以作為偵測到上述控制單元已接收到由所有上述多個 處理核所傳送的上述各自同步請求以及所有上述指示包括一包括睡眠狀態(tài)的上述值的響 應。
4. 根據(jù)權利要求3所述的微處理器,其特征在于,運行在上述處理核中的一操作系統(tǒng) 執(zhí)行一睡眠指令以指示上述睡眠指令至上述處理核。
5. 根據(jù)權利要求3所述的微處理器,其特征在于,還包括: 一狀態(tài)暫存器,由上述多個處理核的每一處理核所讀?。? 其中上述控制單元被配置為將由上述處理核所寫入的上述睡眠狀態(tài)的一最低常用值 填入上述狀態(tài)暫存器,以作為上述控制單元已接收到由所有上述多個處理核所傳送的上述 各自同步請求的響應。
6. 根據(jù)權利要求3所述的微處理器,其特征在于,還包括: 一指示,對上述多個處理核的每一處理核而言,其指示上述處理核是否可啟用或停用, 其中,上述控制單元被配置為在上述各自中斷請求輸入中產(chǎn)生一中斷請求至所有上述 多個處理核,以作為偵測到上述控制單元已接收到由上述多個處理核所有可啟用的核所傳 送的上述各自同步請求的響應。
7. 根據(jù)權利要求3所述的微處理器,其特征在于,還包括: 上述控制單元被配置為決定由上述多個處理核的每一處理核所寫入的上述值指定為 小于上述多個處理核的一子集合;以及 上述控制單元被配置為在上述各自中斷請求輸入中產(chǎn)生一中斷請求至所有上述多個 處理核,以作為偵測到上述控制單元已接收到由所有上述多個處理核的上述子集合所傳送 的上述各自同步請求的響應。
8. -種在核間同步操作的方法,其特征在于,用于一微處理器中,上述微處理器具有一 控制單元及多個處理核,每一處理核包括一各自同步請求,上述方法包括: 由上述控制單元偵測上述控制單元已接收到由所有上述多個處理核所傳送的上述各 自同步請求;以及 由上述控制單元產(chǎn)生一中斷請求至所有上述多個處理核,以作為偵測到上述控制單元 已接收到由所有上述多個處理核所傳送的上述各自同步請求的響應。
9. 根據(jù)權利要求8所述的方法,其特征在于,上述各自同步請求的每一同步請求包括 一由上述處理核所寫入的一值,上述方法還包括: 由上述控制單元偵測上述多個處理核其中之一寫入一不同于先前由上述多個處理核 中其它處理核所寫入的上述值的值;以及 由上述控制單元指示一停頓情況,以作為偵測上述多個處理核其中之一寫入一不同于 先前由上述多個處理核中其它處理核所寫入的上述值的值的響應。
10. 根據(jù)權利要求8所述的方法,其特征在于,上述各自同步請求的每一同步請求包括 一由上述處理核所寫入的一值,其中由上述處理核所寫入的上述值包括一指示上述值是否 包括一睡眠狀態(tài)的指示,上述方法還包括: 由上述控制單元偵測到上述控制單元已接收到由所有上述多個處理核所傳送的上述 各自同步請求以及所有上述指示包括一包括睡眠狀態(tài)的上述值; 由上述控制單元在上述各自中斷請求輸入中產(chǎn)生一中斷請求至所有上述多個處理核, 以作為偵測到上述控制單元已接收到由所有上述多個處理核所傳送的上述各自同步請求 以及所有上述指示包括一包括睡眠狀態(tài)的上述值的響應。
11. 根據(jù)權利要求10所述的方法,其特征在于,還包括 由運行在上述處理核中的一操作系統(tǒng)執(zhí)行一睡眠指令以指示上述睡眠指令至上述處 理核。
12. 根據(jù)權利要求10所述的方法,其特征在于,上述控制單元包括一狀態(tài)暫存器,該狀 態(tài)暫存器由上述多個處理核的每一處理核所讀取,上述方法還包括: 由上述控制單元將由上述處理核所寫入的上述睡眠狀態(tài)的一最低常用值填入上述狀 態(tài)暫存器,以作為上述控制單元已接收到由所有上述多個處理核所傳送的上述各自同步請 求的響應。
13. 根據(jù)權利要求8所述的方法,其特征在于,上述微處理器還包括一指示,對上述多 個處理核的每一處理核而言,其指示上述處理核是否可啟用或停用,其中上述偵測的步驟 包括偵測上述控制單元已接收到由上述多個處理核所有可啟用的核所傳送的上述各自同 步請求。
14. 根據(jù)權利要求8所述的方法,其特征在于,還包括: 由上述控制單元決定由上述多個處理核的每一處理核所寫入的上述值指定為小于上 述多個處理核的一子集合;以及 其中上述偵測的步驟偵測上述控制單元已接收到由所有上述多個處理核的上述子集 合所傳送的上述各自同步請求。
【文檔編號】G06F9/52GK104331388SQ201410431456
【公開日】2015年2月4日 申請日期:2014年8月28日 優(yōu)先權日:2013年8月28日
【發(fā)明者】G·葛蘭·亨利, 泰瑞·派克斯 申請人:威盛電子股份有限公司