TWI450084B - 配置在多重處理器核心之間之分散式電源管理 - Google Patents
配置在多重處理器核心之間之分散式電源管理 Download PDFInfo
- Publication number
- TWI450084B TWI450084B TW100148084A TW100148084A TWI450084B TW I450084 B TWI450084 B TW I450084B TW 100148084 A TW100148084 A TW 100148084A TW 100148084 A TW100148084 A TW 100148084A TW I450084 B TWI450084 B TW I450084B
- Authority
- TW
- Taiwan
- Prior art keywords
- core
- state
- cores
- block
- power state
- Prior art date
Links
Landscapes
- Microcomputers (AREA)
- Power Sources (AREA)
Description
本申請案優先權之申請係根據該美國專利臨時申請案,案號:61/426,470,申請日:12/22/2010,名稱為多核心內之旁路匯流排(MULTI-CORE INTERNAL BYPASS BUS),該案整體皆納入本案參考。
本申請案與下列同在申請中之美國專利申請案有關,都具有相同的申請日,每一申請案整體皆納入本案參考。
本發明是有關於多核心微處理器設計之領域,且特別是有關於多核心之特定操作及多核心處理器之多核心域(domain)之管理與實現。
現代微處理器減少它們的電源消耗之主要方式,係減少微處理器操作時之頻率及/或電壓。此外,在某些實例中,微處理器可能允許時脈信號對於其電路之多個部分禁能。最後,在某些實例
中,微處理器可能對於其電路之多個部分一起移除電源。再者,有時候微處理器需要尖峰性能,使其需要於其最高電壓及頻率下操作。微處理器採取電源管理動作以控制微處理器之電壓與頻率位準以及時脈與電源禁能。基本上,微處理器係因應來自作業系統之指導(direction)而採取電源管理之動作。熟知之x86 MWAIT指令係為一種讓作業系統執行以要求進入至一個與實際狀況相關的最佳化狀態之實例,作業系統可使用此狀態以執行進階的電源管理。最佳化狀態可能是休眠(sleeping)或閒置(idle)狀態。熟知之進階配置電源介面(ACPI)規格,係藉由界定操作或電源管理相關的狀態(例如"C-狀態"及"P-狀態")以方便作業系統導向(operating system-directed)之電源管理。
因為多數的現代化微處理器係為多核心處理器,其中許多處理核心共用一個或多個電源管理相關的資源,所以執行電源管理動作是複雜的。舉例而言,多個核心可能共用電壓源及/或時脈源。再者,包含一多核心處理器之計算系統亦基本上包含一晶片組,其包含多個用以橋接處理器匯流排至系統之其他匯流排(例如,至周邊I/O匯流排)之匯流排橋,並包含一個做為多核心處理器與系統記憶體的介面之記憶體控制器。晶片組可密切地參與各種電源管理動作,且在本身與多核心處理器間可能需要協調機制。
更明確而言,於某些系統中,在多核心處理器之允許下,晶片組可能禁能一個處理器匯流排上之時脈信號,處理器接收並使用此時脈信號以產生其本身的內部時脈信號之大部分。在多核心
處理器的情況下,所有使用匯流排時脈之核心必須準備讓晶片組禁能其匯流排時脈。亦即,直到所有核心準備好之後,晶片組才被允許禁能匯流排時脈。
再者,在正常情形下,晶片組會窺探(snoop)處理器匯流排上之快取記憶體。舉例而言,當一周邊裝置於一周邊匯流排上產生一記憶體存取時,晶片組會將此記憶體存取傳送至處理器匯流排上,俾能使處理器可窺探其快取記憶體以判定其是否持有(hold)所窺探位址之資料。舉例而言,眾人皆知USB裝置會定期輪詢記憶體位置,這會於處理器匯流排上產生周期性的窺探循環(snoop cycle)。在某些系統中,多核心處理器可能進入一深休眠狀態,此時將清除其快取記憶體的內容且禁能快取的時脈信號以便節省電源。於此情況下,對多核心處理器而言,為了因應處理器匯流排上之窺探循環以窺探其快取(因為它們是空的,所以永遠不會傳回擊中(hit)訊息)而被喚醒,然後再回到休眠狀態無疑是種浪費。因此,在多核心處理器之允許下,晶片組可被授權不要產生處理器匯流排上之窺探循環以達成額外的電源節約。然而,必須再次提醒的是,所有的核心必須準備好之後晶片組才能關閉窺探功能,亦即晶片組不能關閉窺探功能,除非所有核心皆準備好才行。
發證給Naveh等人(以下以Naveh代表)之美國專利第7,451,333號揭露一種包含多重處理核心之多核心微處理器,每一個核心能偵測一個要求核心轉變成一閒置狀態之命令。多核心處
理器亦包含硬體協調邏輯(Hardware Coordination Logic,HCL),HCL接收來自核心之閒置狀態狀況,並基於命令與核心之閒置狀態狀況來管理核心之電源消耗。更明確而言,HCL決定是否所有核心已偵測一項要求轉換至一共通狀態之命令。如果不是的話,則HCL選擇在命令的閒置狀態間的一最淺狀態(shallowest state)以作為每個核心之閒置狀態。然而,如果HCL偵測一項要求轉換成一共通狀態之命令,則HCL可以啟動共用的電源節約特徵,例如性能狀態減少(performance state reduction)、一共用的鎖相迴路(PLL)之關閉、或處理器之執行情況之節省。HCL亦可防止外部中斷(break)事件傳送到達核心,以將所有核心轉變成共通狀態。此外,HCL可與晶片組實施一交握順序(handshake sequence)以將核心轉變成共通狀態。
在由Alon Naveh等人所寫之論文中,名稱為"英特爾酷睿核心處理器中之電源及熱管理(Power and Thermal Managment in the Intel Core Duo Processor)",其出版於2006年5月15日發行之英特爾科技期刊中,Naveh等人說明一種使用設置於晶片或平台之共用區域中之非核心硬體協調邏輯(HCL)之相容C-狀態控制結構,作為在個別核心與晶片及平台上之共用資源間的一層。HCL基於核心之個別需求決定所需要的CPU之C-狀態、控制共用資源之狀態、並模倣一傳統的(legacy)單核心處理器利用晶片組實現C-狀態之進入協定。
在由Naveh參考文獻兩者所揭露的機制中,HCL係集中在核
心外部之非核心邏輯,並代表所有核心執行電源管理之操作。然而這種集中化非核心邏輯解決方法有其弊病,特別是在HCL被要求包含在與核心相同的晶片時,過大的晶片尺寸將是難以令人接受的,尤其對希望在晶片上包含更多核心之架構下,這個弊病將更加明顯。
在本發明之一個實施樣態中,係提供一種多核心處理器,其包含多個實體處理核心以及在每個核心中之核心間狀態發現微碼,核心間狀態發現微碼可使核心參與一分散式核心間電源狀態發現過程。與此相關的,係一提供發現一多核心處理器之電源狀態之分散式微碼實現方法,此多核心處理器包含參與一分散式核心間狀態發現過程之至少兩個核心。核心間狀態發現過程係經由在每個參與核心上執行之微碼、以及透過旁路非系統匯流排通訊配線在核心之間交換之信號之組合而被實現。發現過程是不透過任何集中式非核心邏輯。此外,在多數實施例中,核心間狀態發現過程係依據一種使用鏈鎖式核心間通訊之適當的或選擇的階層式協調系統而被實現。
在其他實施樣態中,提供核心間狀態發現過程係提供微處理器組態,包含促使核心啟動及多少核心被啟動之資源之利用率與分佈、以及微處理器之階層式協調構造與系統,包含域與域主識別之確認。
在本發明之另一實施樣態中,提供一種多核心處理器,其包含多個已啟動的實體處理核心以及一由兩個以上的核心共用之可配置的資源,其中資源之組態影響共享資源之核心利用其能夠操作之電源、速度或效率。對每個核心而言,處理器更包含設定每個核心的組態之內部核心電源狀態管理邏輯,用以參與在核心之間被實現之一種分散式核心間電源狀態發現過程,而無須集中式非核心邏輯之協助。如果核心係為了設定共用資源的組態與複合目標電源狀態係經由分散式核心間電源狀態發現過程被發現之目的而被指定為一管理者核心,則內部核心電源管理邏輯設定核心的組態以驅使設定共用資源的組態之一複合目標電源狀態之實現。對共用資源而言,複合目標電源狀態係為一種最節能型的電源狀態,其將不會干涉共享資源之每個核心之任何對應的目標電源狀態。
在一個相關的實施樣態中,提供一種供一多核心處理器用之管理電源狀態之分散方法。一核心接收影響其本身及至少一其他核心之間所共用的一可配置的資源之一目標電源狀態,其中目標電源狀態定義將影響共享資源之核心利用其能夠運作之電源、速度或效率之資源之組態。核心參與一核心間電源狀態發現過程,其包含不透過任何集中式非核心邏輯而與共享該資源之至少一其他核心之電源狀態之交換。如果核心係為了設定共用資源的組態與複合目標電源狀態係經由分散式核心間電源狀態發現過程而被發現之目的而被指定為一管理者核心,則核心驅使用以設定共用
資源的組態之複合目標電源狀態之實現。
在又另一實施樣態中,本發明提供一多核心處理器。多核心處理器之每個核心包含電源狀態管理微碼,用以設定該核心的組態以參與一分散式核心間複合電源狀態發現過程。電源狀態管理微碼可使每個核心接收一狀態轉變要求,用以依據多個預定電源狀態(包含一主動操作狀態及一個或多個漸進地較不敏感的狀態)之任何要求的目標之其中一個設定其成為本身的組態。當一核心接收一要求以轉變成為一受限制的電源狀態(例如會干涉由其他核心所共用資源之一電源狀態)時,則其電源狀態管理微碼啟動一分散式核心間複合電源狀態發現過程,用以決定是否所有其他受影響的核心已做好該受限制的電源狀態的準備。
如果參與發現過程之核心確認受限制的電源狀態係為複合電源狀態,則核心中的被授權者經由其電源狀態管理微碼實現或啟動受限制的電源狀態之植入。具體言之,授權核心將實現最限制的或節能型的操作狀態,其可藉由核心而被實現,而不會干涉其他核心之對應的目標操作狀態。
在另一實施樣態中,每個核心之電源管理微碼之一部分或常式係為同步邏輯,其被組態而被設計成用以與其他以節點地連接(nodally connected)之核心交換電源狀態資訊來決定混合電源狀態。同步邏輯之每個被喚起的實例(invoked instance)係被設計成至少有條件地在尚未同步節點地連接的核心(其係為節點地連接至本身之核心,且同步邏輯之一同步化實例尚未被喚起)中產生
同步邏輯之從屬實例,以作為一複合電源狀態發現過程之一部分。
於一實施例中,核心之電源管理微碼係被設計成無須啟用其同步邏輯之一本地實例即可實現一目標電源狀態,如果核心之目標電源狀態並非一種需要與其他核心協調的受限制的電源狀態核心。否則,電源管理邏輯設定核心的組態以實現目標電源狀態之非限制實施樣態或一附屬電源狀態之非限制實施樣態(例如在核心上的局部電源節約動作),且喚起其同步邏輯之一本地實例,做為受限制的電源狀態所應用到的核心之最大域開始複合電源狀態發現過程。在發現對應到目標受限制的電源狀態之一複合電源狀態中,被授權以實現複合電源狀態之一核心電源管理微碼啟動(典型上是具最大影響範圍之管理者核心)及/或進行複合電源狀態之實現。
在另一實施樣態中,本發明提供一種供一多核心處理器(例如上述之處理器)使用之管理電源之分散方法。此方法包含接收針對任一核心之一狀態轉變要求,以依據一目標電源狀態設定該核心("本地核心")的組態。如果目標電源狀態係為一受限制的電源狀態,則執行於本地核心上之電源管理邏輯實施同步邏輯之一本地實例以啟動一分散式核心間複合電源狀態發現過程,以使此核心與其他核心交換電源狀態。此方法更包含評估發現的電源狀態,以及有條件地回應受限制的電源狀態之實現或啟動。
同步邏輯之每個本地實例產生在一個或多個節點地連接核心上之同步邏輯之一個或多個從屬實例,這些從屬實例係依序操
作,以產生它們的同步邏輯之額外從屬實例。同步邏輯之每個實例決定至少一混合電源狀態,及遞歸地(除非由一終止條件所終止,如果有的話)在同步邏輯之尚未同步的節點地遠端核心上更進一步的喚起從屬實例邏輯,直到可能被影響之域中之每一個核心都有同步邏輯之同步實例為止。在發現複合電源狀態等於受限制的電源狀態時,於一授權核心上執行電源管理邏輯以啟動及/或加以實現。
在又另一實施樣態中,本發明提供微碼,其被編碼在包含分散式核心間狀態發現與上述電源管理邏輯之多核心處理器之實體核心之電腦可讀取的儲存媒體中。
於此所說明的係為藉由使用固有的且被複製在每個核心上之分散式分配邏輯,用以協調、同步、管理以及實現一多核心處理器上之電源、休眠或操作狀態之系統與方法之實施例。在說明表示詳細的實施例之每一張圖之前,先將本發明之更一般的適用概念介紹於下。
I.多層多核心處理器概念
如於此所使用的,一種多核心處理器通常表示一個包含多個啟動的實體核心之處理器,每個啟動的實體核心被設計成用以提取、解碼並執行遵循一指令集架構之指令。一般而言,多核心處理器係藉由一系統匯流排(最後由所有核心所共用)而耦接至一
晶片組,藉以提供至周邊匯流排到達各種裝置之存取操作。在某些實施例中,系統匯流排係為一前端匯流排,其係為從處理器至其餘電腦系統之一外部介面。在某些實施例中,晶片組亦對一共用的主記憶體以及一共用的圖形控制器進行集中存取。
多核心處理器之核心可能被封裝在包含多重核心之一個或多個晶片中,如說明於申請案序號61/426,470之段落中,其申請日為2010年12月22日,名稱為"多核心處理器內部旁路匯流排(Multi-Core Processor Internal Bypass Bus)",以及其同時申請的正式(nonprovisional)申請案(CNTR.2503),其係於此併入作參考。如於其中所提出的,一種典型的晶片係為已被切成或切割為單一物理實體之一片半導體晶圓,且一般具有至少一組之實體I/O接觸墊。例如,某些雙核心晶片具有兩組I/O接觸墊,每一組供其核心之每一個使用。其他雙核心晶片具有單一組之I/O接觸墊,其係在其雙核心之間被共用。某些四核心晶片具有兩組I/O接觸墊,一組供兩組雙核心之每一個用。多重組態是可能的。
再者,一種多核心處理器亦可能提供一種承載多重晶片之一封裝體。一種"封裝體"係為上面置放或安裝有晶片之一基板,此"封裝體"可能提供單一組之接腳,以供連接至一主機板以及相關的處理器匯流排。封裝體之基板包含將晶片之接觸墊連接至封裝體之共用接腳之連線網或佈線(wire nets or traces)。
更進一步的分層之層次是可能的。舉例而言,在封裝體與位於下方之主機板之間可提供一個額外的層板(以下稱為平
台(platform)),而多個封裝體係設置於此平台上。平台可能像上述之封裝體,其包含一個基板,此基板具有連接每個封裝體之接腳與平台之共用接腳之連線網或佈線。
應用上述概念,在一實施例中,一種多封體裝處理器可視為將N2個封裝體設置在一平台上,每個封裝體具有N1個晶片,且每個晶片具有N0個核心。於此數字N2、N1以及N0每個大於或等於1,且N2、N1以及N0之至少一者大於或等於2。
II.核心間傳輸結構
如上所述,非核心但晶片上的硬體協調邏輯(HCL)之使用以實現要求核心間協調之限制活動之一些缺點,包含更複雜的、較不對稱的且較低良率的晶片設計以及縮放挑戰(scalling chanllenge)。一替代方式係藉由使用晶片組本身來執行所有這種協調,但這種方式極可能需要在每個核心與系統匯流排上之晶片組間進行傳輸,以便傳遞適合數值給晶片組。這種協調基本上亦需要經由例如BIOS之系統軟體來實現,但這種做法對製造商而言是有所限制或根本無法控制的。為了克服兩種習知方法之缺點,本發明之某些實施例利用在多核心處理器之核心間的旁路連接。這些旁路連接並未連接至封裝體之實體接腳;因此,它們不會傳送信號至封裝體外部;經由它們交換之通訊也不會要求系統匯流排上之對應的傳輸。
舉例而言,如說明於CNTR.2503,每個晶片可能提供一條在晶片核心間的旁路匯流排,旁路匯流排並未連接至晶片之實體接
觸墊;因此其並未傳送信號離開雙核心晶片。旁路匯流排亦提供核心間之信號的品質改善,並可使核心彼此之傳遞或協調無須使用系統匯流排。多重變化亦在考量之內。舉例而言,如說明於CNTR.2503一案中,一種四核心晶片可能提供一條在兩組雙核心間之旁路匯流排。或者,如說明於以下之一個實施例,一種四核心晶片可能在一晶片之兩組核心之每一個之間提供旁路匯流排,以及在從兩組所選擇的核心間提供另一條旁路匯流排。在另一實施例中,一種四核心晶片可能提供在每一個核心間之核心間旁路匯流排,如下圖16所述。又,在另一實施例中,一種四核心晶片可能在第一與第二核心、第二核心與第三核心、第三與第四核心以及第一與第四核心之間的核心間提供旁路匯流排,而無須提供在第一與第三核心之間或在第二與第四核心之間的核心間旁路匯流排。一種類似的旁路組態(即使所述者係分配在兩個雙核心晶片上之核心間)揭露於申請案序號61/426,470之段落中,申請日為2010年12月22日,名稱為"共用電源對多核心微處理器之分配式管理(Distributed Management of a Shared Power Source to a Multi-Core Microprocessor)",以及其同時申請的非臨時(nonprovisional)申請案(CNTR.2534),亦於此併入作參考。
又,本發明考慮到比CNTR.2503之旁路匯流排較不廣泛的核心間通訊配線組,例如說明於申請案序號61/426,470之段落中之替代實施例,申請日為2010年12月22日,名稱為"光罩設置修改以產生多核心晶片(Reticle Set Modification to Produce
Multi-Core Dies)",以及其同時申請的非臨時(nonprovisional)申請案(CNTR.2528),亦於此併入作參考。核心間通訊配線之一種較不龐大之例子係顯示於CNTR.2534,亦於此併入作參考。核心間通訊配線組在包含配線之數目上要儘可能小,只要能用以啟動如於此所說明的協調活動即可。構築在核心之間的核心間通訊配線,亦可能依一種類似於以下更進一步說明的晶片間通訊線之方式被設計或配置在核心之間。
再者,一封裝體可能提供在一封裝體晶片片間之晶片間通訊線,而一平台可能提供在平台之封裝體間之封裝體間通訊線。如以下將更完全說明的,晶片間通訊線之實施可能需要每個晶片上之至少一額外實體輸出接觸墊。同樣地,封裝體間通訊線之實施可能需要每個封裝體上之至少一額外實體輸出接觸墊。又,如以下更進一步說明的,某些實施例提供超過一最低限度足夠數目之輸出接觸墊之額外輸出接觸墊,用以在協調核心中提供更大的彈性。為了讓各種可能的核心間通訊得以實施,較好的方式是他們都不需要任何一個核心外部之主動邏輯(active logic)。如此,本發明各種實施例可透過使用一種非核心HCL或其他主動非核心邏輯以協調核心之實施方式,來提供本發明於此所述的優點。
III.階層式概念
再次重申,本發明之說明除非另有規定,否則並未受限於多核心多處理器之數個實施例,其提供旁路通訊配線且透過系統匯流排優先使用這種配線以協調核心,以便實施或允許某些構造或
限制活動之實施。在許多實施例中,這些實體實施方式係與階層式協調系統相互搭配,以執行所需的硬體協調。於此所說明之某些階層式協調系統是非常複雜的。舉例而言,圖1、9、11、12、14、15、16、18、19、20、21以及22描述各種階層式協調系統之多核心處理器實施例,其係架構並用來促進例如電源狀態管理之核心間協調活動。此說明書亦提供數個對階層式協調系統之更深入且抽象的特性記述,以及甚至更詳盡且複雜的階層式協調系統之例子。因此,在進入用以啟動一構造或限制活動之實施的核心間協調過程之特定實例之說明前,先說明於此考慮到的各種階層式協調系統之各種實施樣態是有益的。
如於此所使用的,一種階層式協調系統表示一種為了某些恰當或預定活動或目的,將核心設計成以一種至少局部受限或組織的階層式方式而彼此協調之系統。這種架構即與一相等的點對點(peer-to-peer)協調系統有所區別,因為其中的每個核心皆享有同等特權,並可直接與任何其他核心(以及與晶片組)協調以執行一恰當活動。舉例而言,節點樹架構下的核心係在某些具限制之活動下,僅與上層或下層的節點連接核心進行協調,其中的任兩個節點間只存在有一條單一路徑,於是這種節點樹架構可構成一嚴密的階層式協調系統。如於此所使用的,除非更嚴格地定義,否則一階層式協調系統亦包含較為鬆散的階層式之協調系統,例如一種允許在至少一群組之核心內的點對點協調之系統,其係在至少兩個核心群組間進行階層式協調。於此呈現嚴密及鬆散的階
層式協調系統兩者之例子。
於一實施例中,一種階層式協調系統對應至一微處理器中之核心之一配置,微處理器具有多個封裝體,每個封裝體具有多個晶片,且每個晶片具有多個核心。將每層視為一"域(domain)"時是有用的。舉例而言,一種雙核心晶片可被視為由其核心所組成之域,一種雙晶片封裝體可被視為由其晶片所組成之一域,以及一雙封裝體平台或微處理器可被視為由其封裝體所組成之一域。將核心本身說明為一域亦是有用的。這種"域"之概念化在表示例如一快取、一電壓源或一時脈源之一資源上亦是有用的,此資源係由一域之核心所共用,但此資源以別的方法位於該域之近端(亦即,並未由該域之外部核心所共用)。當然,適合於任何既定的多核心處理器之域深度以及每個域之組成者之數目(例如,以一晶片係為一域,以封裝體係為一域,等等)可依據核心之數目、它們的分層以及各種資源由核心所共用之方式改變並放大或縮小。
為不同型式之域之間的關係命名亦是有用的。如於此所使用的,在一種多核心晶片上之所有啟動的實體核心係被視為該晶片之"組成者(constituents)"以及彼此之"共同組成者(co-constituents)"。同樣地,在一多晶片封裝體上之所有啟動的實體晶片係被視為該封裝體之組成者以及彼此之共同組成者。又同樣地,在一種多封裝體處理器上之所有啟動的實體封裝體將被視為該處理器之組成者以及彼此之共同組成者。再者,這種表示方式可能延伸至像
設有多核心處理器一樣的域深度之多數層次。一般而言,每個非終端域層次係由一個或多個組成者所定義,每一個組成者包含階層式構造之下一個較低的域層次。
在某些多核心處理器實施例中,對每個多核心域(例如,對每個晶片,對每個封裝體,對每個平台等等)而言,其唯一一個核心係被指定為並設有供該域使用之一"管理者(master)"之一對應的功能把關或協調角色。舉例而言,每個多核心晶片之單一核心(如果有的話)被指定為該晶片之一"晶片管理者",每個封裝體之單一核心被指定為該封裝體之一"封裝體管理者"(PM),以及(對如此成層之一處理器而言)每個平台之單一核心係被指定為供該平台用之"平台管理者"等等。一般而言,此階層之最高域之管理者核心作為多核心處理器之唯一的"匯流排服務處理器"(BSP)核心,其中只有BSP被授權以使某些型式之活動與晶片組協調。吾人可注意到,為了便利性,於此採用例如"管理者"之專門用語,且除"管理者"之外之標籤(例如"委派(delegate)")可被應用以說明這種功能角色。
更進一步的關係係定義在每個域管理者核心與核心之間,為預定目的或活動(為其所標示的),利用核心允許其直接協調。於最低域層次(例如,一晶片),對於該晶片之啟動的非管理者核心之每一個,一種多核心晶片之晶片管理者核心可能被視為一"夥伴(pal)"。一般而言,對於相同晶片之其他核心之任何一個,一晶片之每一個核心係被視為一夥伴。但在一替代特性記述中,夥伴
指定係被限定為在晶片管理者核心與一種多核心晶片之其他核心之間的附屬關係。將這種替代特性記述應用至一種四核心晶片,晶片管理者核心將具有三個夥伴,但其他核心之每一個將被視為只具有單一夥伴(晶片管理者核心)。
於下一個域層次(例如封裝體),對於相同封裝體上之其他管理者核心之每一個,一封裝體之PM核心可能被視為一"同伴(buddy)"。一般而言,對於相同封裝體之彼此晶片管理者核心,一封裝體之每一個晶片管理者核心係被視為一同伴。但在一替代特性記述中,同伴指定係限定於一封裝體管理者核心與該封裝體之其他管理者核心之間的附屬關係。將這種替代特性記述應用至一種四晶片封裝體,PM核心將具有三個夥伴,但其他晶片管理者核心之每一個將被視為只具有單一夥伴(PM核心)。在又另一種替代特性記述(例如在圖11中所提出的)中,對於處理器中之其他管理者核心之每一個(包含在處理器之一不同封裝體上之管理者核心),一管理者核心係被視為一"同伴"。
於下一個域層次(例如,具有這種深度之一種多核心處理器之平台),對於平台之其他PM核心之每一個,BSP(或平台管理者(master))核心係被視為一"好友(chum)"。一般而言,對於相同平台之彼此PM核心,每一個PM核心係關於一好友。但在一替代特性記述中,好友指定係限定於在一BSP封裝體管理者核心與一平台之其他PM核心之間的附屬關係。將這種替代特性記述應用至一種四封裝體平台,BSP核心將具有三個夥伴,但其他
PM核心之每一個將被視為只具有單一夥伴(BSP)。
上述之夥伴/同伴/好友關係於此一般更被視為"同屬性(kinship)"關係。每個"夥伴"核心屬於一個同屬性群組,每個"同伴"核心屬於一較高層級之同屬性群組,以及每個"好友"核心屬於又更高層級之同屬性群組。換言之,上述階層式協調系統之各種域定義對應的"同屬性"群組(例如,夥伴之一個或多個群組、同伴之群組以及好友之群組)。此外,一特定核心之每個"夥伴"、"同伴"以及"好友"核心(如果有的話)一般可更被視為一"家族(kin)"核心。
如於此所使用的,一同屬性群組之概念係略不同於一域之概念。如上所述,一域係由在其域中之所有核心所組成,舉例而言,一封裝體域一般係由封裝體上之所有核心所組成。相較之下,一同屬性群組一般係由相對應的域所選擇核心組成,例如,一封裝體域之對應的同屬性群組僅由封裝體上之管理者核心(其中一個亦為封裝體管理者核心)所構成,而非封裝體上任何一個夥伴核心所構成。一般而言,只有終端多核心域(亦即,不具有組成域之域)將定義一個包含所有核心之對應同屬性群組。舉例而言,一雙核心晶片一般將定義一終端多核心域,其具有包含晶片之兩核心之對應同屬性群組。吾人注意到把每個核心看成界定其自己的域亦是適當的,因為每個核心一般包含位於在本身之近端且未被其他核心所共用之資源,其可藉由各種操作狀態而被設置。
吾人將明白在上述之夥伴/同伴/好友階層,任一非管理者核心
之每個核心只是一夥伴,並屬於只由相同晶片上之核心所構成之單一同屬性群組。每個晶片管理者核心,第一,屬於由相同晶片上之夥伴核心所組成之最低層次同屬性群組;第二,屬於由相同封裝體上之同伴核心所組成之一同屬性群組。每個封裝體管理者核心,第一,屬於由相同晶片上之夥伴核心所組成之一最低層次同屬性群組;第二,屬於由相同封裝體上之同伴核心所組成之一同屬性群組;而第三,屬於由相同平台上之好友核心所組成之一同屬性群組。簡言之,每個核心屬於W同屬性群組,於此W等於同屬性群組(該核心是一管理者核心)之數目加上1。
為了更進一步敘述同屬性群組之階層式本質的特徵,任何既定核心之"最接近的"或"最直接的"同屬性群組係對應至該核心係為其之一部分之最低層次多核心域。在一個例子中,無論一特定核心具有多少管理者指定核心,其最直接的同屬性群組包含其在相同晶片上之夥伴。一管理者核心亦將具有一第二接近的同屬性群組,其包含在相同封裝體上之核心之同伴或同伴們。一封裝體管理者核心亦將具有包含核心之好友之一第三接近的同屬性群組。
值得注意的是,上述之同屬性群組對於一多層次多核心處理器(其中至少兩個層次Nx具有多重組成者)將是半獨佔的。亦即,對這種處理器而言,沒有既定的同屬性群組將包含該處理器之所有核心。
上述之同屬性群組概念甚至可更進一步藉由不同的協調模型
而被特徵化,一同屬性群組可能採用在其組成核心之間。如於此所使用的,在一"管理者仲裁的"同屬性群組中,在核心之間的直接協調係被限定為在管理者核心及其非管理者核心之間的協調。在同屬性群組之內的非管理者核心無法彼此直接協調,只能間接地經由管理者核心為之。在一"同儕合作(Peer-collaborative)"同屬性群組中,相較之下,同屬性群組之任何兩個核心可能彼此直接協調,而無須管理者核心之仲裁。在一同儕合作同屬性群組中,對於管理者之一種更功能性地相容專門用語將是"委派",因為其作為一協調看守者,只為了與較高層級域協調,而不為了與在同屬性群組織同儕之間協調。吾人應注意到,於此定義在一"管理者仲裁"及"同儕合作"同屬性群組之間的區別,只有對於具有三個或三個以上的核心之同屬性群組是有意義的。一般而言,對某些預定活動而言,任何既定核心只可與其同屬性群組之組成者或共同組成者進行協調,而且對於任何管理者仲裁的同屬性群組而言,僅有一部分,例如較優的"共同組成者"或較差組成者,得以適用。
從一節點階層之節點與節點連接的角度說明上面之階層式協調系統亦是適當的。如於此所使用的,一節點階層係為每個節點是多核心處理器之核心之唯一的一個,其中一個核心(例如,BSP核心)係為根節點,且在任兩個節點之間存在有一連續不斷的協調"路徑"(包含中間節點,如果適合的話)。每個節點係"節點連接"至至少一另一個節點而非所有其他節點,且為了為協調系統所應用到的活動之目的,只可與"節點連接的"核心協調。為了更進一步
區別這些節點連接,於此將把一管理者核心之附屬節點地連接核心看成"組成者"核心、或者看成"附屬家族"核心,"附屬家族"核心係與一核心之節點地連接的"共同成組成者核心"有所區別,而"共同組成者核心"係為並非附屬於本身之節點地連接核心。更進一步的說,一核心之節點地連接的"共同組成者"核心包含其管理者核心(如果有的話)、以及其係節點地連接之任何同等階級的核心(例如,在其之一同儕協調同屬性群組,核心係為一部分)。又,不具有附屬家族核心之任何核心於此亦被稱為"終端"節點或"終端"核心。
到目前為止,階層式協調系統於這些域對應至核心之一實體不同的巢狀配置已清楚地說明(例如,不同的域對應至每個適合的核心、晶片、封裝體以及平台)。舉例而言,圖1、9、12、16以及22所顯示的階層式協調系統皆與處理器所顯示之核心之實體上不同的巢狀封裝體一致。圖22係為一有趣的一致性實例,其顯示具有多個不對稱封裝體之八核心處理器2202,其中一個具有三個雙核心晶片而其餘具有單核心晶片。然而,與封裝體核心之實體上不同的巢狀方式相符,旁路配線定義一對應的三個層次階層式協調系統,其具有相關作為好友之封裝體管理者,相關作為同伴之晶片管理者,以及相關作為夥伴之晶片核心。
但是,依據一處理器之核心間、晶片間以及封裝體間旁路配線(如果有的話)之組態,在核心之間的階層式協調系統可能被建立,且相較在處理器被封裝之核心之巢狀實體配置而言,其具
有不同深度及分層,數個這種例子係設置於圖11、14、15以及21中。圖11顯示具有兩個封裝體之八核心處理器,其中每個封裝體具有兩個晶片,而每個晶片具有兩個核心。在圖11中,設置促進二階階層式協調系統之多條旁路配線,俾使所有的管理者核心可以是最高層級同屬性群組之一部分,且每個管理者核心亦屬於包含本身及其夥伴之一不同的最低層次同屬性群組。圖14顯示在單一封裝體上之具有四個雙核心晶片之八核心處理器。在圖14中,將設置所需的夥伴、同伴以及好友之三層次階層式協調系統之多條旁路配線。圖15顯示具有兩個四核心晶片之處理器,於此在每個晶片內之核心間配線需要一二階階層式協調系統,以及在每個晶片之管理者(亦即,好友)之間提供多條晶片間配線來作為第三階層式層次之協調。圖21顯示類似圖22具有兩個不對稱封裝體之另一種八核心處理器,其中一個不對稱封裝體具有三個雙核心晶片而另一個具有單一雙核心晶片。但是,如同圖11,晶片間及封裝體間旁路配線係提供以協助核心間之二階階層式協調系統,其中兩個封裝體上之所有的管理者核心係為相同的同屬性群組之一部分。
如上所述,不同深度與協調模型之階層式協調系統,可依期望被應用或適用於提供作為一多核心處理器之共用資源之分佈,假若其與多核心處理器之構造能力與限制相符的話。為了更進一步說明,圖16顯示一種設置足夠的旁路通訊配線以協助每個四核心晶片之所有核心間的同儕合作協調模型之處理器。然而,在圖
17中,更多限制的管理者仲裁協調模型係為每個四核心晶片之核心而建立。此外,如圖15所顯示的,具有兩個夥伴同屬性群組以及一個管理者同屬性群組之一多層次協調階層,如果需要的話,亦可只藉由使用(為了為協調系統所應用之活動之目的)少於所有可得到的核心間配線而為圖16之四核心微處理器之核心而建立之。因為圖16中之每個四核心晶片提供在每一個其核心之間的旁路配線,所以晶片係能夠協助階層式協調系統之所有三種型式。
一般而言,不管域、同屬性群組以及多核心處理器節點之本質與數目為何,每個域中只有唯一一個核心可被指定為該域以及對應的同屬性群組之管理者。域可具有組成域(constituent domain),再者,每個域以及對應的同屬性群組中只有一個核心將被指定為該域之管理者。協調系統之最高級核心亦被稱為一"根節點"。
IV.電源狀態管理
在介紹關於多核心組態、旁路通訊能力以及階層式關係之各種概念以後,現在此說明書介紹關於電源狀態管理系統之特定考慮的實施例之某些概念。然而,吾人應該明白到,本發明係適用於除了電源狀態管理以外之多樣化活動之協調。
在此所說明之分配式多核心電源管理實施例中,多核心處理器之每個核心包含分散式與分配式可計量電源管理邏輯,其複製於每個核心上之一個或多個微碼常駐常式中。電源管理邏輯係可操作以接收一目標電源狀態,確定其是否為一受限制的電源狀
態,啟動包含核心間協調之一複合電源狀態發現過程,並適當地反應。
一般而言,一目標狀態係為任何需求或期望的預定操作狀態(例如C-狀態、P-狀態、電壓ID(VID)值或時脈比率值)之其中一個等級。一般而言,一預定群組之操作狀態界定包含多個處理器操作狀態,其基於一個或多個電源、電壓、頻率、性能、操作、響應性、共用資源或限制實現特徵而訂定。相對於一處理器之其他期望的操作特徵,操作狀態可能被提供以最佳地管理電源。
於一實施例中,預定操作狀態包含一有效操作狀態(例如C0狀態)及多個漸進地較不有效或敏感的狀態(例如C1,C2,C3等狀態)。如於此使用的,一漸進地較不敏感的或有效狀態表示一種相對於更有效或敏感的狀態之節省電源之配置或操作狀態,或相對不太敏感的(例如,較慢、較不完全啟動、無法執行例如存取例如快取記憶體資源、或較易休眠及較難喚醒)。於某些實施例中,基於衍生自或兼容於ACPI規格,預定操作狀態構成但並非需要受限於C-狀態或休眠狀態。於其他實施例中,預定操作狀態構成或包含各種電壓及頻率狀態(例如,漸進地較低電壓及/或較低頻率狀態),或兩者。又,一組預定操作狀態可能包含各種可程式化操作配置(或由其組成),例如強迫指令依據執程式順序來執行、強制每時脈周期只能發出一個指令、每時脈周期中只格式化單一指令、每時脈周期只轉換單一微指令、每時脈周期只引退單一指令、及/或以串列形式存取各種快取記憶體,使用的技術例如
說明於美國申請案序號61/469,515者,申請日為2011年3月30日,名稱為"經由每時脈操作之減少之指令執行狀態電源節約(Running State Power Saving Via Reduced Instructions Per Clock Operation)"(CNTR.2550),其於此併入作參考。
吾人可理解,微處理器可能依據不同的、及獨立組或部分獨立之操作狀態集合而配置。影響電源消耗、性能及/或響應性之各種操作配置可被分配到不同等級之電源狀態,每個等級可依據一對應的階層式協調系統而獨立實施,而每個系統具有其本身的獨立界定之域、域管理者及同屬性群組協調模型。
一般而言,一個預定操作狀態之等級可被分成至少兩個類別:(1)主要之本地操作狀態(predominantly local operating states),其只影響到位於核心本地之資源,或在一般的實際應用下,主要只影響到特定核心之性能;及(2)受限制之操作狀態(restricted operating states),其將衝擊一個或多個由其他核心共用之資源,或在一般的實際應用下,其相對地更有可能干擾其他核心之性能。衝擊共用資源之操作狀態係相關於干擾共享該資源之其他核心的電源、性能,效率或響應性的相對較大的可能性。近端操作狀態之實現一般而言並不需要與其他核心協調,或獲得來自其他核心協調之允許才進行。相較之下,限制操作狀態之實現便需要與其他核心進行協調及許可。
在更進階的實施例中,預定操作狀態可被分成更多階層式類別,取決於各種資源是如何共用及共用之程度。例如,一第一組
操作狀態可能定義位於一核心之本地資源之配置、一第二組操作狀態可能定義由一晶片之核心共用但不位於該晶片本地資源配置、一第三組操作狀態可能定義由一封裝體之核心共用之資源之配置...等。一操作狀態之實現需要與在應用之操作狀態組態下共享資源之核心進行協調並取得其許可。
一般而言,一種關於任何既定域之複合操作狀態係為一個屬於該域之每個啟動實體核心之應用操作狀態的極值(亦即最大或最小值)。於一實施例中,一實體核心之應用操作狀態係為核心之最近且仍然正確的目標或需求之操作狀態(如果有的話),或者,如果核心並不具有一最近的正確的目標或需求之操作狀態的話,實體核心之應用操作狀態為某些預設值。預設值可能是零(例如複合操作狀態被計算為最小值的狀況)、預定操作狀態之最大值(例如複合操作狀態被計算為最大值的狀況)、或者核心之目前實施之操作狀態。於一實施例中,一核心之應用操作狀態係為一電源或操作狀態,例如核心所期望的或需求之電壓ID(VID)或時脈比率值。於另一實施例中,一核心之應用操作狀態為核心已經從所應用的系統軟體接收的最近的有效C-狀態。
在另一實施例中,一實體核心之應用操作狀態係為核心的最近的仍然正確的目標或需求之操作狀態之極值(如果有的話),以及將影響位於最高域(如果有的話,核心為此最高域具有管理者憑證)之本地資源之最極端操作狀態。
因此,關於處理器之複合操作狀態整體看來將是該處理器之
所有的啟動實體核心之應用電源狀態之最大值或最小值。一種封裝體之複合電源狀態將是該封裝體之所有啟動實體核心所應用之電源狀態之最大值或最小值。一種晶片之複合電源狀態將是該晶片之所有啟動實體核心之應用電源狀態之最大值或最小值。
說明於此之分散式電源狀態管理實施例中,每個核心的電源管理邏輯之一部分或常式係為同步邏輯,其被設計成至少有條件地與其他節點地連接核心(亦即,同一同屬性群組之其他核心)交換電源狀態資訊,以決定一混合電源狀態。一種混合電源狀態係為對應於本地(native)及同步邏輯之至少一節點地連結實例之核心的應用電源狀態之一極值。在某些非必要的情況下,由一同步常式計算及傳回之一混合電源狀態將準確地對應至關於一應用域之複合電源狀態。
每個同步邏輯之被喚醒實例(invoked instance)係被設計成在尚未同步之節點地連接的核心中至少有條件地產生同步邏輯之從屬實例,此係開始於最立即同屬性群組之節點地連接核心,並繼續漸進地較高層級同屬性群組之節點地連接核心(如果有的話,將進行至同步邏輯實例所屬之核心)。尚未同步的節點地連接核心係為節點地連接至本身之核心,其同步邏輯同步化實例尚未被實施為一複合電源狀態發現過程之一部分。
此種在同步邏輯之每個實例所進行之發現過程,將遞歸地於尚未同步的節點地遠端核心,更進一步地產生(至少有條件地)同步邏輯之從屬實例,直到所應用之潛在被衝擊域(applicable
potentially impact domain)之每一個核心上,皆有同步邏輯之同步化之實例在執行為止。在關於所應用域之複合電源狀態之發現程序中,執行於一核心上之電源管理邏輯之實例,被指定為授權予啟動或執行關於該域之複合電源狀態之實現、且可啟動/或進行實現之能力。
V.特定說明的實施例
現在將注意力轉至圖所顯示之特定實施例。
於一實施例中,同步邏輯之每個實例經由與系統匯流排不同之旁路通訊或旁通匯流排線(核心間通訊配線112、晶片間通訊配線118以及封裝體間通訊配線1133)與其他核心上之邏輯之同步化實例進行通訊,用以利用一種分散式之分配方式執行電源管理。這允許核心可實體地設置在多重晶片上或在多重封裝體上,藉以可能地降低晶片尺寸並改善良率,且提供系統中之核心數之高度擴充性(scalability),而不會對現代的微處理器之晶片與封裝體之接觸墊與接腳限制造成影響。
現在參考圖1所顯示之方塊圖,其顯示依據本發明執行分配在一多核心微處理器102之多重處理核心106之間的分散式電源管理之電腦系統100之實施例。系統100包含藉由一系統匯流排116耦接至多核心微處理器102之單一晶片組114。多核心微處理器102封裝體包含兩個以晶片0及晶片1表示之雙核心晶片104。晶片104係安裝於封裝體之一基板上。基板包含配線網(或只簡單稱為"配線")或者線路,其將晶片104之接觸墊連接至封裝體
102之接腳。接腳可能因其他原因而連接至匯流排116。基板配線亦包含連接在晶片104間之晶片間通訊配線118(以下討論更多的)以促進它們之間的通訊,用以執行分配在多核心微處理器102之核心106間的分散式電源管理。
每一個雙核心晶片104包含兩個處理核心106,晶片0包含核心0及核心1,而晶片1包含核心2及核心3。每個晶片104具有一被指定的管理者核心106。於圖1之本實施例中,核心0係為晶片0之管理者核心106,而核心2係為晶片1之管理者核心106。於一實施例中,每個核心106包含配置熔絲(configuration fuses),晶片104之製造商可能燒斷配置熔絲以標示核心106何者係為晶片104之管理者核心。此外,晶片104之製造商可能燒斷配置熔絲以對每個核心106指定其實例,亦即,核心106中哪一個為核心0、核心1、核心2或核心3。如上所述,專門用語"夥伴"係表示在相同晶片104上且彼此溝通之的核心106;因此,於圖1之本實施例中,核心0及核心1係為夥伴,而核心2及核心3係為夥伴。專門用語"同伴"於此係表示在不同晶片104上且彼此溝通的管理者核心106;因此,於圖1之本實施例中,核心0及核心2係為同伴。在一實施例中,偶數核心106係為每個晶片104之管理者核心。在一實施例中,核心0係標示為多核心微處理器102之啟動服務處理器(boot service processor(BSP)),其單獨被授權以與晶片組114協調某些限制活動,包含允許某些複合電源狀態之實現。在一實施例中,BSP核心106通知晶片組114並要求其允
許匯流排116時脈之移除以減少電源消耗、及/或避免在匯流排116上產生窺探周期,一如後續於圖3之方塊322所討論的。於一實施例中,BSP係為核心106,其匯流排要求輸出係耦接至匯流排116上之BREQ0信號。
在每個晶片104之內的兩個核心106經由位於晶片104內部之核心間通訊配線112進行通訊。更明確而言,核心間通訊配線112允許在一晶片104之內的核心106彼此中斷,並彼此傳遞訊息用以執行分配在多核心微處理器102之核心106間的分散式電源管理。於一實施例中,核心間通訊配線112包含平行匯流排。於一實施例中,核心間通訊配線112係類似於說明於CNTR.2528者。
此外,核心106經由晶片間通訊配線118進行通訊。更明確而言,晶片間通訊配線118允許個別的晶片104上之管理者核心106彼此中斷,並彼此傳遞訊息以執行分配在多核心微處理器102之核心106間的分散式電源管理。於一實施例中,晶片間通訊配線118以匯流排116時脈頻率執行。於一實施例中,核心106傳輸32位元訊息至彼此。在傳送或廣播時,核心106在一匯流排116週期中於晶片間通訊配線118之單一配線上進行設置,用以表示其即將傳輸一訊息,然後在接下來的31個匯流排116週期上傳送31位元之序列。於每個晶片間通訊配線118之末端為一32位元移位暫存器,其累積所接收的單一位元而成32位元之訊息。於一實施例中,32位元訊息包含多個資訊欄(field)。一個資訊欄載明依據說明於CNTR.2534中之所共用的VRM分配式管理機制而使用
之一7位元需求的VID值。其他資訊欄包含關於電源狀態(例如C-狀態)同步之訊息,例如C-狀態要求值與確認,其係在核心106之間交換,如於此所討論的。此外,一特殊訊息值可使一傳送其值的核心106中斷一接收其值的核心106。
於圖1之實施例中,每個晶片104包含分別耦接至四個接腳(以"P1"、"P2"、"P3"以及"P4"表示)之四個接觸墊108。關於四個接觸墊108,其中一個為輸出接觸墊(以"OUT"表示),而另外三個為輸入接觸墊(以IN 1、IN 2以及IN 3表示)。晶片間通訊配線118係被設計如下。晶片0之OUT接觸墊與晶片1之IN 1接觸墊經由單一配線網耦接至接腳P1;晶片1之OUT接觸墊與晶片0之IN 3接觸墊係經由單一配線網耦接至接腳P2;晶片0之IN 2接觸墊與晶片1之IN 3接觸墊經由單一配線網耦接至接腳P3;而晶片0之IN 1接觸墊與晶片1之IN 2接觸墊經由單一配線網耦接至接腳P4。於一實施例中,核心106在其所傳輸之離開OUT接觸墊108至晶片間通訊配線118(或如以下於圖11所說明之封裝體間通訊配線1133)的每個訊息裡包含一識別碼。此識別碼獨特地確認此訊息預定到達的目標核心106,在此所說明之實施例(其中此訊息被廣播至多重接受者核心106)中是有用的。於一實施例中,每個晶片104係依據在多核心微處理器102製造期間所燒斷之配置熔絲,而將四個接觸墊108之其中一個指定為輸出接觸墊(OUT)。
當晶片0之管理者核心0想要與晶片1之管理者核心2進行
通訊時,將在其OUT接觸墊上之資訊傳輸至晶片1之IN 1接觸墊;同樣地,當晶片1之管理者核心2想要與晶片0之管理者核心0進行通訊時,將在其CUT接觸墊上之資訊傳輸至晶片0之IN 3接觸墊。因此,於圖1之實施例中,每個晶片104只需要一個輸入接觸墊108而非三個。然而,製造具有三個輸入接觸墊108之晶片104之一項優點為其允許在圖1之四核心多核心微處理器102以及例如圖9所示之八核心多核心微處理器902中的相同晶片104得以被設計。此外,於圖1之本實施例中,兩個接腳P是不需要的。然而,製造具有四個接腳P之晶片104之一項優點為其允許在圖一的相同四核心微處理器102被設計成單一四核心微處理器102、而例如圖11所示之具有兩個四核心微處理器1102可被設計為之八核心系統1100。然而,如顯示於圖12與14至16之四核心實施例中,可考慮移除未使用的接腳P與接觸墊108,以在需要時減少接觸墊以及接腳數。此外,例如顯示於圖19與20之本實施例中之雙核心實施例,亦可依據需要而考慮移除未使用的接腳P與接觸墊108以減少接觸墊以及接腳數、或為其他目的而被部署。
在一實施例中,匯流排116包含允許晶片組114與多核心微處理器102經由類似於熟知之Pentium 4匯流排協定之匯流排協定傳遞之數個信號。匯流排116包含由晶片組114提供給多核心微處理器102之一匯流排時脈信號,核心106使用其以產生內部核心時脈信號,其頻率一般為匯流排區塊頻率之比率。匯流排116亦包含一STPCLK信號(被晶片組114設置),以要求核心106允
許以移除匯流排時脈信號,亦即允許以停止提供匯流排時脈信號。多核心微處理器102從一預先決定的I/O連接埠位址執行在匯流排116上之一I/O讀取傳輸(只有其中一個核心106執行它),以指示晶片組114可設置STPCLK。如以下所討論的,多重核心106經由核心間通訊配線112與晶片間通訊配線118而彼此溝通,用以決定單一核心106何時可執行I/O讀取傳輸是有好處的。在一實施例中,在晶片組114設置STPCLK後,每一個核心106發佈一STOP GRANT訊息給晶片組114;一旦每個核心106已發佈一STOP GRANT訊息後,晶片組114就可移除匯流排時脈。在另一實施例中,晶片組114具有一配置選擇,以使其在其移除匯流排時脈之前只期望來自多核心微處理器102之單一的STOP GRANT訊息。
現在參考圖2所顯示之方塊圖,其詳細顯示依據本發明圖1之核心106之其中一個典型實例。依據一個實施例,核心106微結構包含功能單元之一超純量(superscalar)、非循序執行管線。一指令快取202快取從一系統記憶體提取之指令(未顯示)。一指令譯碼器204係耦接以接收來自指令快取202之指令(例如x86指令集架構指令)。一註冊別名表(RAT)212係耦接以接收來自指令譯碼器204及來自一微序列器206之譯碼微指令,並產生譯碼微指令之依存資訊。保留站214係耦接以接收來自RAT 212之譯碼微指令以及依存資訊。執行單元216係耦接以接收來自保留站214之譯碼微指令並接收供譯碼微指令所使用之指令運算元。
運算元可能來自核心106之暫存器(例如通用暫存器及可讀取且可寫入的特別模組暫存器(MSR)238,以及來自耦接至執行單元216之一資料快取222。一引退單元218係耦接以接收由執行單元216傳來之指令執行結果,並將該執行結果引退至核心106之架構狀態。資料快取222係耦接至一匯流排介面單元(BIU)224,作為核心106連接至圖1匯流排116之介面。一鎖相迴路(PLL)226接收來自匯流排116之匯流排時脈信號,並據以產生一核心時脈信號242予核心106之各種功能單元。PLL 226可經由執行單元216而受控制,例如被禁能。
執行單元216接收一BSP指示碼228以及一管理者指示碼232,其分別表示核心106是否為晶片104之管理者核心與多核心微處理器102之BSP核心。如上所述,BSP指示碼228與管理者指示碼232可能包含可程式化熔絲。於一實施例中,BSP指示碼228與管理者指示碼232係儲存於一特別模組暫存器(MSR)238中,其首先由可程式化熔絲值取出,但其可能藉由軟體寫入至MSR 238而被更新。執行單元216亦讀取並寫入控制與狀態暫存器(CSR)234與236,用以與其他核心106溝通。尤其,核心106使用CSR 236,用以經由核心間通訊配線112而與相同晶片104上之核心106溝通,且核心106使用CSR 234,用以透過接觸墊108經由晶片間通訊配線118而與其他晶片104上之核心106溝通,如以下詳細說明的。
微序列器206包含一微碼記憶體207,其被設計以儲存包含電
源管理邏輯微碼208之微碼。為本揭露書的目的,於此所使用之專門用語"微碼"表示由相同的核心106所執行之指令,其執行通知核心106轉變成一電源管理相關的狀態(於此稱為一休眠狀態、閒置狀態、C-狀態或電源狀態)之架構指令(例如MWAIT指令)。亦即,一狀態轉變指令之實例是核心106特有的,且為因應狀態轉變指令實例所執行之微碼208係在該核心106上執行。處理核心106是對稱的,因為它們每個具有相同的指令集架構並被設計以執行包含來自指令集架構指令之使用者程式。除了核心106以外,多核心微處理器102可能包含一附屬或服務處理器(未顯示),其並不具有與核心106相同的指令集架構。然而,在本發明中,核心106本身(並非附屬或服務處理器且非任何其他非核心邏輯元件)執行分配在多核心微處理器102之多重處理核心106間的分散式電源管理,以因應狀態轉變指令,其較一種代表核心執行電源管理之專用硬體設計更有利地提供更強的可調(尺寸之)能力、可重組性、良率特性、電源減少及/或晶片實際面積之減少等優點。
電源管理邏輯微碼208指令係因應至少兩個條件而被實施。首先,電源管理邏輯微碼208可被喚起以實行核心106之指令集架構之一指令。於一實施例中,x86 MWAIT與IN指令等可實行在微碼208中。亦即,當指令譯碼器204遇到一x86 MWAIT或IN指令時,指令譯碼器204停止提取目前執行的使用者程式指令,並將控制權傳送至微序列器206以開始提取實行x86 MWAIT或IN
指令之電源管理邏輯微碼208中的一常式。其次,電源管理邏輯微碼208可能因應一中斷事件而被喚起。亦即,當一中斷事件產生時,核心106停止提取目前的使用者程式指令,並將控制權傳送至微序列器206以開始提取掌控中斷事件之電源管理邏輯微碼208中的一常式。中斷事件包含架構中斷、例外、錯誤或陷阱(traps),例如由x86指令集架構所界定者。一中斷事件之例子為匯流排116上之一個對於與電源管理相關的一些預設I/O位址其中一者之I/O讀取傳輸偵測。中斷事件亦包含非架構界定的事件。於一實施例中,非架構界定的中斷事件包含:經由圖1之核心間通訊配線118(例如圖5、6所描述之連結)發送信號或經由圖1之晶片間通訊配線118發送信號(或經由圖11之封裝體間通訊配線1133發送信號,以下所討論的)之一核心間中斷需求(例如與圖5與6相關所說明的);以及藉由晶片組之一STPCLK設置或解除設置之偵測。於一實施例中,電源管理邏輯微碼208指令為核心106微架構指令組之指令。在另一實施例中,微碼208指令為不同的指令組之指令,其將轉變成核心106之微架構指令組之指令。
圖1之系統100執行分配在多重處理核心106之間的分散式電源管理。更明確而言,每個核心實施其本地電源管理邏輯微碼208以響應一狀態轉變需求,並轉變成目標電源狀態。目標電源狀態為多個預定電源狀態(例如C-狀態)之任何一個所需求者。預定電源狀態包含一參考或主動操作狀態(例如ACPI之C0狀態)以及多個漸進地且相對不太敏感的狀態(例如ACPI之C1、C2、
C3等狀態)。
現在參考圖3所顯示之流程圖,其依據本發明顯示圖1之系統100之操作,用以執行分配在多核心微處理器102之多重處理核心106間的分散式電源管理。具體言之,流程圖顯示電源管理邏輯微碼208之一部分操作,係因應於遭遇一MWAIT指令或類似的命令,以轉變成一新電源狀態。更明確而言,圖3所顯示之電源管理邏輯微碼208之部分係為電源管理邏輯之一狀態轉變需求處理邏輯(STRHL)常式。
為了促進對圖3之更佳理解,MWAIT指令與C-狀態架構之實施樣態係在說明每一個圖3之個別方塊前被說明。MWAIT指令可包含在作業系統(例如,Windows®、Linux®、MacOS®)或其他系統軟體中。舉例而言,如果系統軟體知道系統上之工作量目前是低或不存在的,則系統軟體可能執行一MWAIT指令以允許核心106進入一低電源狀態,直到一事件(例如從一周邊裝置之中斷)要求由核心106服務為止。另一例子為,在核心106上執行的軟體可能與在另一核心106上執行的軟體之共享資料,是以在存取由兩個核心106所共用資料時便需要經由例如一信號(semaphore)之同步;如果在另一核心106所執行之儲存至信號(store to semaphore)前已經過一段顯著的時間量時,則在目前核心106上執行之軟體將致使目前核心106經由MWAIT指令進入低電源狀態,直到儲存至信號發生為止。
MWAIT指令係詳細說明於2009年3月之IntelR 64與IA-32
架構軟件開發人員手冊(Architectures Software Developer's Manual),卷2A:指令集參考(A-M)之第3-761至3-764頁,而監視(MONITOR)指令係詳細說明於相同文件之第3-637經由3-639頁,其全部在此皆併入作參考。
MWAIT指令可能指定一目標C-狀態。依據一個實施例,C-狀態0係為一執行狀態,而大於0之C-狀態係為休眠狀態;1及較高之C-狀態係為停止狀態,於其中核心106不提取與執行指令;而2及較高之C-狀態係核心106可能執行額外動作以減少其電源消耗,例如禁能其快取記憶體並降低其電壓及/或頻率之狀態。
依據一個實施例,2或較高之C-狀態係被視為並預先決定成為一受限制的電源狀態。在2或較高之C-狀態中,晶片組114可能移除匯流排116時脈,藉以有效地禁能核心106時脈,以便大幅地減少由核心106之電源消耗。關於每個後段較高的C-狀態,將允許核心106執行更積極的電源節約動作,雖然個別皆需要較長的時間恢復至執行狀態。可能使核心106退出低電源狀態之事件之實例為一中斷以及藉由另一處理器之儲存至一特別指定的位址範圍(由先前所執行的監視(MONITOR)指令所指定)。
明顯地,對C-狀態之ACPI編號機制使用較高的C號碼以表示漸進地較不敏感、較深的休眠狀態。藉由使用這種編號機制,任何既定的主顧群組(亦即:晶片、封裝體、平台)之複合電源狀態將是該組成群組之所有啟動核心之應用C-狀態最小值,每個核心的應用C-狀態最小值係最近的有效要求C-狀態(如果有的
話)、或是零(如果核心不具備有效的最近要求應用C-狀態的話。
然而,其他等級之電源狀態使用漸進較高的號碼以表示漸進更敏感的狀態。舉例而言,CNTR.2534說明一種指示一期望的電壓識別碼(VID)至一電壓調節器模組(VRM)之協調系統。較高的VID對應至較高電壓位準,因而對應至較快的(所以是更敏感的)性能狀態。但協調一複合VID涉及決定核心所請求VID值之最大值。因為一電源狀態編號機制可依上升或下降次序被指定,所以此說明書之部分將複合電源狀態界定為一"極值",其係相關核心之應用電源狀態之最小值或最大值。然而,吾人明白即使所請求的VID及時脈比率值係朝與習知順序相反的方向"予以訂定(orderable)"(譬如使用從原始值開始之負計數);因此不管傳統上界定的方向為何,描述於此之更特殊界定的階層式協調系統通常亦適用這些電源狀態。
雖然圖3說明一實施例,於其中核心106響應一MWAIT指令以執行分散式電源管理,但是核心106亦可能響應其他形式之輸入而通知核心106其可能進入一低電源狀態。舉例而言,匯流排介面單元224可能產生一信號,以因應偵測到匯流排116上之一I/O讀取傳輸至一預先決定的I/O埠範圍時,用以使核心106進入陷阱而執行微碼208。再者,核心106因應所接收之其他外部信號而進入陷阱執行微碼208之實施例亦被本發明所考量,且實施例並未受限於x86指令集架構實施例或受限於包含一Pentium 4型式處理器匯流排之系統實施例。再者,一核心106之既定目標狀
態可能內部地被產生,如經常出現具有期望的電壓與時脈數值之情況。
現在把焦點放在圖3之個別功能方塊上,流程於方塊302開始。於方塊302,圖2之指令譯碼器204遇到一MWAIT指令並進入陷阱而執行電源管理邏輯微碼208,且特別是實現MWAIT指令之STRHL常式。MWAIT指令載明以"X"表示之一目標C-狀態,並在核心106等待一事件發生之同時通知其可能進入一最佳化狀態。具體言之,最佳化狀態可能是一低電源狀態,於其中核心106將消耗比核心106遇到MWAIT指令之執行狀態下更少的電源。
流程繼續至方塊303。微碼將"X"儲存成為核心之應用或最近的有效要求的電源狀態,以"Y"表示。吾人可注意到,如果核心106尚未遇到一MWAIT指令、或如果因為從那時起該指令已被取代或變成陳舊的(譬如藉由一後來的STPCLK解除設置)且核心係處於一正常執行狀態,則儲存為核心之應用或最近的有效要求電源狀態之數值"Y"係為0。
流程繼續至方塊304。於方塊304,微碼208(更詳細而言是STRHL常式)檢驗"X",其為對應於目標C-狀態之一數值。如果"X"小於2(亦即,目標C-狀態為1),則流程繼續至方塊306;而,如果目標C-狀態大於或等於2(亦即,"X"對應至一受限制的電源狀態),則流程繼續至方塊308。於方塊306,微碼208將核心106置於休眠。亦即,微碼208之STRHL常式將控制暫存器寫入在核心106之內,用以使其停止提取並執行指令。因此,核心106
消耗比其處於執行狀態時更少的電源。最好的狀況是,當核心106正休眠時,微序列器206亦沒有提取並執行微碼208指令。流程於方塊306結束。圖5說明為因應從休眠被喚醒之核心106之操作。
方塊308表示一條路徑,其係"X"為2或更多之對應於一受限制的電源狀態時,微碼208之STRHL常式所執行的操作。如上所述,於一實施例中,2或更多之一種C-狀態涉及移除匯流排116時脈。匯流排116時脈係由核心106所共用之一資源,因此當一核心設有2或較高的一目標C-狀態時,較佳的方式是核心106透過於此所說明的以一種分配式與協調方式進行通訊,用以確認每個核心106已被通知其可以在通知晶片組114(其可能移除匯流排116時脈)之前轉變成2或更大之C-狀態。
在方塊308中,微碼208之STRHL常式基於由於方塊302所遇到的MWAIT指令特別指定之目標C-狀態,執行相關的電源節約動作(PSA)。一般而言,由核心106所採取之PSA包含獨立於其他核心106之動作。舉例而言,每個核心106包含其自己的快取記憶體,其係位於核心106本身(例如,指令快取202與資料快取222)之近端,而PSA包含刷新局部快取、移除它們的時脈以及使它們斷電。在另一實施例中,多核心微處理器102可能包含由多重核心106所共用之快取。於本實施例中,共用的快取無法被刷新、使它們的時脈被移除、或被斷電,直到核心106彼此溝通以決定所有核心106已接收指定一適當的目標C-狀態之一
MWAIT為止,在這種情況下,它們可能在通知晶片組114其可能需求移除匯流排116時脈及/或抑制在匯流排116上產生窺探循環之允許之前,刷新共用的快取、移除它們的時脈並使它們斷電(參見方塊322)。於一實施例中,核心106共用一電壓調節器模組(VRM)。CNTR.2534說明一種利用一種分配式之分散方式以管理由多重核心所共用之一VRM之設備及方法。於一實施例中,每個核心106具有其本身的PLL 226,如於圖2之本實施例中,以使核心106可減少其頻率或禁能PLL 226以節省電源而不會影響其他核心106。然而,在其他實施例中,一晶片104上之核心106可能共用一PLL。CNTR.2534說明一種利用一種分配式之分散方式以管理由多重核心所共用之PLL之裝置及方法。於此所說明之電源狀態管理與相關的同步邏輯之實施例,亦可能(或選擇地)被應用以利用一種分配式之分散方式來管理由多重核心所共用之一PLL。
流程繼續至方塊312。於方塊312,電源狀態管理微碼208之STRHL常式呼叫以sync_C-狀態表示之另一電源狀態管理微碼208常式(其係相關於圖4而詳細說明的),用以與其他節點地連接核心106溝通並為多核心微處理器102獲得一合成C-狀態,在圖3中以Z表示。相對於正在核心上執行的實例,sync_C-狀態常式之每個被喚醒實例於此稱為sync_C-狀態常式之一"本地"實例。
微碼208之STRHL常式喚起具有一輸入參數或探測(probe)電源狀態數值之sync_C-狀態常式,探測電源狀態數值等於核心之
應用電源狀態(亦即,其最近的有效要求的目標電源狀態),其係由MWAIT指令所特別指定之在方塊302中所接收之"X"之數值。喚起sync_C-狀態常式開始一複合電源狀態發現過程,如與圖4相關而做更進一步說明者。
每個被喚醒sync_C-狀態常式計算一"混合"C-狀態並使"混合"C-狀態回復至呼叫或實施它(於此是STRHL常式)之任何程序。"混合"C-狀態為所探測C-狀態數值中的最小值,而所探測C-狀態數值係由被喚醒程序所接收、在核心上執行sync_C-狀態常式之應用C-狀態、以及由與sync_C-狀態常式的相關被引發實例所接收之C-狀態數值。以下將說明在某些情況之下,混合C-狀態為共通於本地sync_C-狀態常式與同步化sync_C-狀態常式兩者之域之複合電源狀態相關。以下亦說明在其他情況中,混合C-狀態可能只是域之一局部合成C-狀態。
一般而言,一域之複合電源狀態為該域之所有核心之應用電源狀態之極值(在ACPI電源狀態機制中是最小值)。舉例而言,一晶片104之合成C-狀態係為晶片之所有核心106之應用C-狀態(例如,最近的有效要求的C-狀態,如果所有核心皆具有這樣的數值的話)之最小值。整體看來,多核心微處理器102之合成C-狀態為多核心微處理器102之所有核心106之應用C-狀態之最小值。
然而,一種混合電源狀態可能是一應用域之複合電源狀態,或只是局部的複合電源狀態。一局部的複合電源狀態將是兩個以
上但小於全部之一應用域之核心應用電源狀態之極值。在一些部分中,此說明書表示一種"至少局部合成電源狀態"以包含任何變化之計算而得的混合電源狀態。在一混合電源狀態與一複合電源狀態之間的電位(即使是細微的)區別將透過圖4C、10及17之說明而變得更顯清楚。
吾人預先注意到,多核心微處理器102之一非零的合成C-狀態表示每個核心106已看見載明一非執行C-狀態(亦即,具有1或更大之數值之C-狀態)之MWAIT;而一零值的合成C-狀態表示並非每個核心106已看到MWAIT。再者,大於或等於2之數值表示多核心微處理器102之所有核心106已接收載明2或更大之C-狀態MWAIT指令。
流程繼續至決定方塊314。於決定方塊314中,微碼208之STRHL常式檢查於方塊312所決定之混合C-狀態"Z"。如果"Z"大於或等於2,則流程繼續至決定方塊318。否則,流程繼續至方塊316。
於方塊316,微碼208之STRHL常式將核心106置於休眠。流程於方塊316結束。
於決定方塊318,微碼208之STRHL常式判斷核心106是否為BSP。如果是,則流程繼續至方塊322;否則,流程繼續至方塊324。
於方塊322,BSP 106通知晶片組114其可能要求移除匯流排116時脈及/或抑制在匯流排116上產生窺探循環之允許。
於一實施例中,依據熟知之Pentium 4匯流排協定,唯一被授權以允許較高的電源管理狀態之BSP 106,將通知晶片組114其可能藉由初始化匯流排116上之一I/O讀取傳輸至一預先決定的I/O埠,來要求移除匯流排116時脈及/或抑制在匯流排116上產生窺探循環之允許。然後,晶片組114設置在匯流排116上之STPCLK信號以要求移除匯流排116時脈之允許。於一實施例中,在通知晶片組114其可於方塊322(或方塊608)設置STPCLK之後,執行於BSP核心106上之微碼208之STRHL常式將等待晶片組114設置STPCLK,而非前進至休眠狀態(於方塊324或方塊614),然後通知其他核心106有關此STPCLK之設置、發佈其STOP GRANT訊息,然後進行到休眠狀態。依據由I/O讀取傳輸而特別指定之預先決定的I/O連接埠位址,晶片組114可隨後抑制在匯流排116上產生窺探循環。
流程繼續至方塊324。於方塊324,微碼208將核心106置於休眠狀態。流程於方塊324結束。
現在參考圖4,一流程圖顯示圖1之系統100之另一元件之操作,其執行分配在多核心微處理器102之多重處理核心106之間的分散式電源管理。更明確而言,流程圖顯示圖3(與圖6)之電源狀態管理微碼208之sync_C-狀態常式之一實例之操作。雖然圖4係為顯示微碼208之sync_C-狀態常式之單一實例之功能性流程圖,但吾人將從下面理解到其經由該常式之多重同步實例實現一合成C-狀態發現過程。流程於方塊402開始。
於方塊402,一核心106上之微碼208("sync_C-狀態微碼208")之sync_C-狀態常式之一實例被喚醒並接收一輸入探測C-狀態,在圖4中以"A"表示。sync_C-狀態常式之一實例可能從MWAIT指令微碼208所執行處被喚醒,如相關於圖3所說明,在這種情況下,sync_C-狀態常式構成sync_C-狀態常式之一初始實例。此外,sync_C-狀態常式之一實例可能藉由源自另一核心之一同步需求(於此稱為一外部地產生的同步需求)而產生,在這種情況下,sync_C-狀態常式構成sync_C-狀態常式之一從屬實例(dependent instance)。尤其當執行於另一個節點地連接核心上之sync_C-狀態常式之一本地實例,可能藉由將一適當的核心間中斷傳送至本地核心來產生sync_C-狀態常式之本地實例。如相關於圖6更詳細說明的,電源狀態管理微碼208之一核心間中斷處理常式(ICIH)將處理由節點地連接核心106所接收之核心間中斷。
流程繼續至決定方塊404。於決定方塊404,如果sync_C-狀態常式之這個實例(亦即,"本地實例")係一初始實例,亦即,如果其係從圖3之MWAIT指令微碼208被喚醒,則流程繼續至方塊406。否則,本地實例係藉由執行於一節點地連接核心上之sync_C-狀態常式之外部或本地實例所產生之一從屬實例,而流程繼續至決定方塊432。
於方塊406,sync_C-狀態微碼208藉由程式化圖2之CSR 236來產生在其夥伴核心上之一從屬sync_C-狀態常式,用以將於方塊402所接收之"A"值傳送至其夥伴並用以中斷夥伴。這將要求夥伴
計算一混合C-狀態並將其傳回至本地核心106,以下將對此做更詳細之說明。
流程繼續至方塊408。於方塊408,sync_C-狀態微碼208程式化CSR 236,用以偵測夥伴已傳回一混合C-狀態至核心106,如果是,則獲得夥伴之混合C-狀態,在圖4中以"B"表示。應注意的是,如果夥伴位於其最活躍的執行狀態(most active running state),則"B"之數值將是零。於一實施例中,微碼208等待夥伴以響應在一迴圈中於方塊406做出的請求,此迴圈為一預先決定的數值來輪詢CSR 236,用以偵測夥伴是否已傳回一混合C-狀態。於一實施例中,此迴圈包含一逾時計數器;如果逾時計數器到期,則微碼208假設夥伴核心106不再被啟動且可被使用、在任何後續的sync_C-狀態計算中並不包含供該夥伴用之應用或假設C-狀態、以及隨後也未試圖與夥伴核心106進行通訊。再者,在與其他核心106(亦即,同伴核心與好友核心)的通訊方面,微碼208皆以類似方式操作,不管其是否經由核心間通訊配線112或晶片間通訊配線118(或於下所說明之封裝體間通訊配線1133)與另一個核心106相通。
流程繼續至方塊412。於方塊412,sync_C-狀態微碼208為核心106屬於其之一部分之晶片104,透過計算"A"與"B"值之最小值來算出一混合C-狀態,並以"C"做表示。在一雙核心晶片中,"C"將必定是合成C-狀態,因為"A"及"B"值表示晶片上之所有(兩個)核心之應用C-狀態。
流程繼續至決定方塊414。於決定方塊414,如果於方塊412所計算之"C"值小於2,或本地核心106並非是管理者核心106,則流程繼續至方塊416。否則,"C"值至少是2且本地核心106係為管理者核心,而流程繼續至方塊422。
於方塊416,常式對於在方塊412喚起其(於此是STRHL常式)以計算"C"值的呼叫程序進行回復。流程於方塊416結束。
於方塊422,sync_C-狀態微碼208藉由程式化圖2之CSR 234產生在其同伴核心上之sync_C-狀態常式之一從屬實例,用以將於方塊412所計算之"C"值傳送至其同伴並用以中斷同伴。這將要求同伴計算並傳回一混合C-狀態,並提供其回到這個核心106,如以下更對此做更詳細之說明。
在這一點上,應注意sync_C-狀態微碼208並未在同伴核心中產生sync_C-狀態常式之從屬實例,直到其已經決定其自己的晶片本身的合成C-狀態為止。事實上,於本說明書中所說明之所有的sync_C-狀態常式皆依據一相容巢狀域走訪順序進行操作。亦即,每個sync_C-狀態常式漸進地且有條件地發現合成C-狀態,首先係在其為一部分(例如,晶片)的最低域開始,然後,若它是該域之管理者,則以巢狀方式往下一個較高層級域進行(例如,在圖1的情況下是處理器本身)之,等等。隨後討論的圖13,將更進一步顯示這種尋訪順序,其中sync_C-狀態常式有條件地且漸進地首先發現核心為晶片一部分之合成C-狀態,接著尋訪它為封裝體之一部分(若核心亦為該晶片之管理者),最後尋訪整個處理器或系
統之(若核心亦為處理器之BSP)。
流程繼續至方塊424。於方塊424,sync_C-狀態微碼208程式化CSR 234以偵測同伴已傳回一混合C-狀態,並獲得混合C-狀態,在圖4中以"D"表示。在某些情況之下,"D",在某些情形將會,但並不需要全部(如以下與圖C中之對應的數值"L"相關的說明)構成同伴之晶片合成C-狀態。
流程繼續至方塊426。於方塊426,sync_C-狀態微碼208藉由計算"C"及"D"值之最小值為多核心微處理器102計算一混合C-狀態,其以"E"表示。假設"D"係為同伴之晶片合成C-狀態,則"E"將構成處理器之合成C-狀態,因為"E"將是"C"(如上所述,我們知道的這種晶片之合成C-狀態)及"D"(同伴之晶片合成C-狀態)之最小值,且在處理器上沒有核心被從計算中所省略。如果不是的話,則"E"可能構成處理器之只有一部分的合成C-狀態(亦即,這個晶片上之核心與同伴核心之應用C-狀態之最小值,而非亦屬於同伴之夥伴的應用C-狀態之最小值)。流程繼續至決定方塊428。
於方塊428,常式將於方塊426所計算之"E"值傳回至其呼叫者。流程於方塊428結束。
於決定方塊432,如果圖6之核心間中斷處理常式喚醒sync_C-狀態常式以因應從核心之夥伴的一中斷(亦即,一夥伴喚醒此常式),則流程繼續至方塊434。否則,核心間中斷處理常式喚醒sync_C-狀態常式以因應從核心之同伴的一中斷(亦即,同伴產生此常式),而流程繼續至方塊466。
於方塊434,核心106被其夥伴所中斷,所以sync_C-狀態微碼208程式化CSR 236,用以獲得由夥伴及其所產生常式所遞送之探測C-狀態,在圖4中以"F"表示。流程繼續至方塊436。
於方塊436,sync_C-狀態微碼208藉由計算其本身的應用C-狀態"Y"與探測C-狀態"F"(由其夥伴所接收)之最小值來為其晶片104本身計算一混合C-狀態,其結果係以"G"表示。在一雙核心晶片中,"G"將會是包含核心106之晶片104之合成C-狀態,因為在那種情況下,"Y"及"F"將分別表示該晶片之所有(兩個)核心之應用C-狀態。
流程繼續至決定方塊438。於決定方塊438,如果於方塊436所計算之"G"值小於2或核心106並非是管理者核心106,則流程繼續至方塊442。否則,如果"G"為至少2且核心為管理者核心,則流程繼續至方塊446。
於方塊442,為因應從其夥伴核心間而來之中斷請求,sync_C-狀態微碼208程式化CSR 236,用以將於方塊436所計算之"G"值傳送至其夥伴。流程繼續至方塊444。於方塊444,sync_C-狀態微碼208將於方塊436所計算之"G"值傳回至喚醒它之程序。流程於方塊444結束。
於方塊446,sync_C-狀態微碼208藉由程式化圖2之CSR 234而在其同伴核心上產生sync_C-狀態常式之一從屬實例,用以將於方塊436所計算之"G"值傳送至其同伴,並用以中斷同伴。這將要求同伴計算一混合C-狀態並將其傳回至這個核心106,以下將對
此做更詳細說明。流程繼續至方塊448。
於方塊448,sync_C-狀態微碼208程式化CSR 234以偵測同伴已傳回混合C-狀態至核心106,並獲得混合C-狀態,在圖4中以"H"表示。在至少某些而不需要全部的情況中(如與圖4C中之對應的數值"L"相關的說明),"H"將構成同伴之晶片之合成C-狀態。流程繼續至方塊452。
於方塊452,sync_C-狀態微碼208藉由計算"G"及"H"值之最小值為多核心微處理器102計算一混合C-狀態,並以"J"來表示。假設"H"為同伴之晶片合成C-狀態,則"J"將構成處理器之合成C-狀態,因為"J"將是"G"(如上所述,我們知道這是該晶片之合成C-狀態)及"H"(同伴之晶片合成C-狀態)之最小值,且在處理器上沒有核心被從計算所省略的話。如果不是的話,則"J"可能構成處理器之只有一部分的合成C-狀態(亦即,這個晶片上之核心與同伴核心之應用C-狀態之最小值,而非亦屬於同伴之夥伴的應用C-狀態之最小值)。因此,"H"構成處理器之"至少局部的合成"C-狀態。
流程繼續至方塊454。於方塊454,為因應經由從其夥伴之核心間中斷請求,sync_C-狀態微碼208程式化CSR 236,用以將於方塊452所計算之"J"值傳送至其夥伴。流程繼續至方塊456。於方塊456,常式將於方塊452所計算之"J"值傳回至喚醒它之程序。流程於方塊456結束。
於方塊466,核心106被其同伴所中斷,所以sync_C-狀態微
碼208程式化CSR 234,用以獲得由同伴所產生常式遞送之輸入探測C-狀態於,在圖4中以"K"表示。
由於sync_C-狀態常式之階層式尋訪順序,同伴將不會中斷此種核心,除非其已經發現其晶片之合成C-狀態,所以"K"會是所產生同伴之合成C-狀態。又,應注意到因為其被一同伴所中斷,這就表示核心106係為晶片104之管理者核心106。
流程繼續至方塊468。於方塊468,sync_C-狀態微碼208藉由計算其本身的應用C-狀態"Y"與所接收的同伴合成C-狀態"K"值之最小值,來計算處理器之至少局部的合成C-狀態,其結果係以"L"表示。
如果"L"為1,則"L"無法是處理器之合成C-狀態,因為其並未合併其夥伴之應用C-狀態。如果其夥伴之應用C-狀態為0,則(未被精確發現下)供處理器用之合成C-狀態將是0。然而,縱使不需要被精確發現,處理器之合成C-狀態也不大於"L"。在揭露於這個特定臨界值觸發實施例之電源管理邏輯中,一旦發現一混合C-狀態小於2,吾人就知道處理器之合成C-狀態亦小於2。小於2之C-狀態之實現只具有局部效果,所以更精確的判定合成C-狀態並非必要。因此合成C-狀態發現過程可能逐漸放鬆並終止,如於此所顯示的。
然而,如果"L"為0,則其必然是處理器之合成C-狀態,因為(如上所述)處理器之合成C-狀態無法超過處理器之任何一個混合C-狀態。於部分說明書提到sync_C-狀態常式為計算一"至少局
部的合成數值"之微妙處是有好處的。流程繼續至決定方塊472。
於決定方塊472,如果於方塊468所計算之"L"值小於2,則流程繼續至方塊474。否則,流程繼續至方塊478。應注意的是本發明之其他實施例可省略這種臨界值條件(例如,L<2?)以繼續一合成C-狀態發現過程。在這樣的實施例中,處理器之每個啟動核心將無條件地決定處理器之合成C-狀態。
於方塊474,為因應由其同伴而來之核心間中斷請求,sync_C-狀態微碼208程式化CSR 234,用以將於方塊468所計算之"L"值傳送至其同伴。再者,吾人應注意當同伴接收"L"時,其正接收可能構成處理器之局部合成數值。然而,因為"L"小於2,所以處理器之合成數值亦必定小於2,將排除任何更進一步判斷處理器之合成數值之行動(如果"L"為1)。流程繼續至方塊476。於方塊476,常式將於方塊468所計算之"L"值傳回至其呼叫者。流程於方塊476結束。
於方塊478,sync_C-狀態微碼208藉由程式化CSR 236在其夥伴核心上喚醒一從屬sync_C-狀態常式,用以將於方塊468所計算之"L"值傳送至其夥伴並用以中斷夥伴。這將要求夥伴計算一混合C-狀態並將其提供給核心106。吾人可注意到在圖1之四核心實施例並以圖4之sync_C-狀態微碼208作說明之架構中,這將相當於請求夥伴提供其最近的請求C-狀態(如果有的話)。
流程繼續至方塊482。於方塊482,sync_C-狀態微碼208程式化CSR 236以偵測夥伴已傳回一混合C-狀態至核心106,並獲得
夥伴之混合C-狀態,在圖4中以"M"表示。吾人可注意到如果夥伴處於其最活躍的執行狀態時,則"M"之數值將是零。流程繼續至方塊484。
於方塊484,sync_C-狀態微碼208藉由計算"L"及"M"值之最小值而為多核心微處理器102計算一混合C-狀態,以"N"表示。吾人可注意到,在圖1之四核心實施例並以圖4之sync_C-狀態微碼208作說明之架構中,"N"必定是處理器之合成C-狀態,因為其包含同伴之晶片合成C-狀態K、核心自己的應用C-狀態A、以及夥伴之應用C-狀態(後者係併入由夥伴所傳回之混合電源狀態M)之最小值,這三個狀態一起包含所有四個核心之應用C-狀態。
流程繼續至方塊486。於方塊486,為因應經由其同伴而來之核心間中斷請求,sync_C-狀態微碼208程式化CSR 234,用以將於方塊484所計算之"N"值傳送至其同伴。流程繼續至方塊488。於方塊488,常式將於方塊484所計算之"N"值傳回至其呼叫者。流程於方塊488結束。
現在參考圖5所顯示之流程圖,其顯示依據本發明圖1之系統100,用以執行分配在多核心微處理器102之多重處理核心106間的分散式電源管理之操作。更明確而言,此流程圖顯示藉由電源狀態管理微碼208之喚起與重新開始(wake-and-resume)常式之核心,以因應核心106被一事件從一休眠狀態(例如從圖3之方塊306、316或324,或從圖6之方塊614進入)喚醒後之操作。流程於方塊502開始。
於方塊502,核心106因應一事件而從其休眠狀態醒來,並藉由提取及執行微碼208之一指令處理程序而重新開始。事件可能包含但並未受限於:一核心間中斷,亦即經由核心間通訊配線112或晶片間通訊配線118(或圖11實施例之封裝體間通訊配線1133)從另一核心106而來之中斷;藉由晶片組114之匯流排116上之STPCLK信號言之設置;藉由晶片組114在匯流排116上對STPCLK信號解除設置(deassertion);以及另一型式之中斷,例如一外部中斷要求信號之設置,例如可能藉由一周邊裝置(例如USB裝置)而產生。流程繼續至決定方塊504。
於決定方塊504,喚起與重新開始常式判斷核心106是否被另一核心106之中斷所喚起。如果是,則流程繼續至方塊506;否則,流程繼續至決定方塊508。
於方塊506,一核心間中斷常式掌控核心間中斷,如相關於圖6所詳細說明的。流程於方塊506結束。
於決定方塊508,喚起與重新開始常式判斷核心106是否被藉由晶片組114在匯流排116上設置STPCLK信號置所喚起。如果是,則流程繼續至方塊512;否則,流程繼續至決定方塊516。
於方塊512,為因應於圖3之方塊322或於圖6之方塊608所執行之I/O讀取傳輸,晶片組114已設置STPCLK請求移除匯流排116時脈之允許。回應於此,核心106微碼208在匯流排116上發佈一STOP GRANT訊息,以通知晶片組114其可能移除匯流排116時脈。如上所述,於一實施例中,晶片組114將持續等待,
直到所有核心106已發佈STOP GRANT訊息後再移除匯流排116時脈。而在另一實施例中,可在單一核心106已發佈STOP GRANT訊息之後,由晶片組114移除匯流排116時脈。流程繼續至方塊514。
於方塊514,核心106返回至休眠。而晶片組114將移除匯流排116時脈,以便減少因多核心微處理器102之電源消耗,如上所述。最後,晶片組114將恢復匯流排116時脈,然後解除設置STPCLK,以便使核心106回復至它們的執行狀態,俾能使它們可以執行使用者指令。流程於方塊514結束。
於決定方塊516,喚起與重新開始常式判斷核心106是否藉由晶片組114於匯流排116上的STPCLK信號之解除設置所喚起。如果是,則流程繼續至方塊518;否則,流程繼續至方塊526。
於方塊518,為因應一事件(例如系統計時器中斷或周邊中斷),晶片組114已恢復匯流排116時脈並解除設置STPCLK以使核心106再開始執行。回應於此,喚起與重新開始常式解除於方塊308所執行之電源節約動作。舉例而言,微碼208可能使電源恢復予核心106局部快取、增加核心106時脈頻率、或增加核心106操作電壓。此外,核心106可能使電源恢復予共用快取,舉例而言,如果核心106係為BSP。流程繼續至方塊522。
於方塊522,喚起與重新開始常式讀取並寫入CSR 234與236,用以通知所有其他核心106這個核心106已醒來且再度執行。喚起與重新開始常式可儲存"0"以作為核心之應用或者最新的
有效要求C-狀態。流程繼續至方塊524。
於方塊524,喚起與重新開始常式終止並將控制返回至指令譯碼器204,以重新開始譯碼提取的使用者程式指令(例如,x86指令)。具體言之,典型的使用者指令提取與執行將在MWAIT指令之後的指令重新開始。流程於方塊524結束。
於方塊526,喚起與重新開始常式處理其他中斷事件,例如上述相關於方塊502者。流程於方塊526結束。
現在參考圖6所顯示之流程圖,其顯示本發明圖1之系統100用以執行分配在多核心微處理器102之多重處理核心106之間的分散式電源管理操作。更明確而言,此流程圖顯示微碼208之核心間中斷處理常式(ICIHR)之操作,其係因應接收一核心間中斷,亦即經由核心間通訊配線112或晶片間通訊配線118(例如可能於圖4之方塊406、422、446或478所產生的)從另一核心106之中斷所執行之操作。微碼208可能藉由輪詢(如果微碼208已經執行)採取一核心間中斷、或者微碼208可能採取一核心間中斷以作為在使用者程式指令之間的一真正的中斷、或者中斷可能使微碼208從核心106正休眠之狀態喚醒。
流程於方塊604開始。於方塊604,中斷核心106之ICIHR依據圖4呼叫一本地sync_C-狀態常式,以繼續由另一核心所開始之同步化電源狀態發現過程。回應於此,其獲得供多核心微處理器102之至少一局部合成C-狀態,圖6中以"PC"表示。ICIHR呼叫具有一輸入值"Y"之sync_C-狀態微碼208,其係由外部sync_C-
狀態常式所遞送之探測C-狀態,而本地sync_C-狀態常式將依附(will depend)於外部sync_C-狀態常式。又,大於或等於2之數值表示"PC"係為一種多核心微處理器102之所有核心106的完全且非僅是局部的合成C-狀態,並表示處理器之所有核心106已接收指定"PC"或更大之C-狀態數值之一MWAIT指令。
流程繼續至方塊606。於方塊606,微碼208決定於方塊604所獲得之"PC"之數值是否大於或等於2,以及核心106是否被授權以執行或允許"PC"C-狀態之執行(例如,核心106係為BSP)。如果是,則流程繼續至方塊608;否則,流程繼續至決定方塊612。
於方塊608,核心106(例如,當BSP核心106被授權如此做時)通知晶片組114其可能要求移除匯流排116時脈之許可,如於上述之方塊322。流程繼續至決定方塊612。
於決定方塊612,微碼208決定其是否從休眠被喚起。如果是,則流程繼續至方塊614;否則,流程繼續至方塊616。
於方塊614,微碼208返回至休眠。流程於方塊614結束。
於方塊616,微碼208離開並歸還控制權返回至指令譯碼器204,並重新開始對所提取的使用者程式指令進行解譯。流程於方塊616結束。
現在參考圖7所顯示之流程圖,其顯示本發明圖1之系統100依據圖3至6所說明流程之操作實例。在圖7之例子中,使用者程式同時有效地在核心106上執行,每個執行一MWAIT指令。相較之下,在圖8之例子中,使用者程式有效地在核心106上執
行,每個於不同的時間執行一MWAIT指令,亦即在另一核心已執行一MWAIT指令而進入休眠之後才執行。這些例子一起顯示核心106之微碼208之特徵,以及它們在各種核心106上處理不同順序MWAIT指令的能力。圖7包含四行,每行對應於圖1之四個核心106之每一個。如以上相關於圖1所顯示與所述者,核心0與核心2為它們的晶片104之管理者核心,而核心0為多核心微處理器102之BSP。圖7之每行表示由各個核心106所採取之動作。圖7每列的動作向下流程則表示時間之經過。
首先,每個核心106遇到一個由各種C-狀態所指定之MWAIT指令(於方塊302)。在圖7之例子中,送至核心0與核心3之MWAIT指令指定4之C-狀態,而送至核心1與核心2之MWAIT指令指定5之C-狀態。每一個核心106回應地執行其相關的電源節約動作(於方塊308),並將所接收的目標C-狀態("X")儲存為其所應用的以及最近的有效要求C-狀態"Y"。
其次,每個核心106將其應用C-狀態"Y"作為一探測C-狀態傳送至其夥伴(於方塊406),如以具有"A"標記值之箭號所表示。每個核心106接著接收其夥伴之探測C-狀態(於方塊408),並計算其晶片104合成C-狀態"C"(於方塊412)。在此例子中,由每個核心106所計算之"C"值為4。因為核心1及核心3並非是管理者核心,所以它們兩者前進至休眠(於方塊324)。
因為核心0與核心2係管理者核心,所以它們彼此(亦即,它們的同伴)傳送各自的"C"值給對方(於方塊422),如以具有"C"
標記值之箭號所表示。它們每個接收其同伴之晶片合成C-狀態(於方塊424),並計算多核心微處理器102合成C-狀態"E"(於方塊426)。在此例子中,由每一個核心0與核心2所計算之"E"值為4。因為核心2並非是BSP核心106,所以其進行到休眠(於方塊324)。
因為核心0係為BSP,所以其通知晶片組114可能要求移除匯流排116時脈之許可(於方塊322),例如,設置STPCLK。更明確而言,核心0通知晶片組114有關多核心微處理器102合成C-狀態為4,然後核心0進行到休眠(於方塊324)。依據由於方塊322所初始化之I/O讀取傳輸而特別指定之預定I/O連接埠位址,晶片組114可隨後抑制在匯流排116上產生窺探循環。
當所有的核心106休眠時,晶片組114設置STPCLK將喚醒每個核心106(於方塊502)。每一個核心106回應地發佈一STOP GRANT訊息給晶片組114(於方塊512),然後返回至休眠(於方塊514)。核心106可能休眠持續一段不明確的時間量,在沒有電源節約動作與休眠之益處下,仍可比它們正常操作時消耗更少的電源。
最後,發生一喚醒事件。在此例子中,晶片組114解除設置STPCLK,其喚醒每一個核心106(於方塊502)。每一個核心106回應地解除其先前的電源節約動作(於方塊518),並離開其微碼208且恢復至提取並執行使用者碼(於方塊524)。
現在參考圖8所顯示之流程圖,其顯示依據本發明圖1之系統100依據圖3至6所說明操作流程之第二實例。圖8之流程圖
類似於圖7;然而,在圖8之例子中,每個有效地在核心106上執行之使用者程式於不同的時間執行一MWAIT指令,亦即在另一個核心在執行一MWAIT指令且已前進至休眠之後才執行。
核心3首先遇到一個具有特定目標C-狀態"X"為4之MWAIT指令(於方塊302)。核心3回應地執行其相關的電源節約動作(於方塊308),並將"X"儲存為其應用C-狀態,以下更進一步以"Y"表示。核心3接著將其應用C-狀態作為一探測C-狀態傳送至其夥伴,核心2,(於方塊406),如以具有"A"標記值之箭號所表示,其將中斷核心2。
核心2係被其夥伴核心3所中斷(於方塊604)。因為核心2仍然處於一執行狀態,所以其自己的應用C-狀態為0,以"Y"表示(在方塊604中)。核心2接收核心3之探測C-狀態(於方塊434),以"F"表示並具有4之數值。核心2接著計算其晶片104合成C-狀態"G"(於方塊436),並將0之"G"值傳回至其夥伴核心3(於方塊442)。然後,核心2離開其微碼208並回復至使用者碼(於方塊616)。
核心3接收其夥伴核心2之0之同步C-狀態"B"(於方塊408)。核心3接著又計算其晶片104合成C-狀態"C"(於方塊412)。因為"C"之數值係為0,所以核心3進行到休眠(於方塊316)。
核心2隨後遇到一個具有特定目標C-狀態"X"為5之MWAIT指令(於方塊302)。核心2回應地執行相關的電源節約動作(於方塊308),並將"X"儲存為其應用C-狀態,隨後對核心2以"Y"
表示。核心2接著將"Y"(其係為5)作為一探測C-狀態傳送至其夥伴,核心3,(於方塊406),如以具有"A"標記值之箭號所表示,其將中斷核心3。
核心3係被喚醒核心3之其夥伴核心2所中斷(於方塊502)。因為核心3之前遇到C-狀態為4之MWAIT指令,且該數值仍然是正確的,其應用C-狀態係為4,以"Y"表示(在方塊604中)。核心3接收核心2之探測C-狀態(於方塊434),以"F"表示並具有5之數值。核心3接著計算其晶片104合成C-狀態"G"(於方塊436)以作為探測C-狀態之最小值(亦即,5)、以及自己的應用C-狀態(亦即,5),並將4之"G"值作為一混合C-狀態傳回至其夥伴核心2(於方塊442)。核心3接著返回至休眠(於方塊444)。
核心2接收其夥伴核心3之混合C-狀態(於方塊408),以"B"表示並具有4之數值,然後計算其晶片104合成C-狀態"C"值(於方塊412)作為混合C-狀態之一最小值(亦即,4)、以及自己的應用C-狀態(亦即,4)。因為核心2已發現其最低層次域之合成C-狀態係至少為2之數值,但作為該域之管理者之核心2則屬於一較高層級的同屬性群組,所以其(核心2)接著將自己之"C"值(為4)傳送至其同伴核心0(於方塊422),其將中斷核心0。
核心0係被其同伴核心2所中斷(於方塊604)。因為核心0處於一執行狀態,所以其應用C-狀態為0,以"Y"表示(在方塊604中)。核心0接收核心2之探測C-狀態(於方塊466),以"K"表示並具有4之數值。然後,核心0計算其混合C-狀態"L"(於方塊
468),並將0之"L"值傳送至其同伴核心2(於方塊474)。接著,核心0離開其微碼208並回復至使用者碼(於方塊616)。
核心2接收其同伴核心0之混合C-狀態(於方塊424),以"D"表示並具有0之數值,然後計算其自己混合C-狀態(於方塊426),其係以"E"表示。因為"E"值係為0,所以核心2進行到休眠(於方塊316)。
核心0接著遇到一個特定目標C-狀態"X"為4之MWAIT指令(於方塊302)。核心0回應地執行相關的電源節約動作(於方塊308),並將"X"儲存為其應用C-狀態,以"Y"表示。然後,核心0將"Y"(其係為4)作為一探測C-狀態傳送至其夥伴,核心1,(於方塊406),以具有"A"標記值之箭號表示,其將中斷核心1。
核心1係被其夥伴核心0所中斷(於方塊604)。因為核心1仍然處於一執行狀態,所以其應用C-狀態為0,以"Y"表示(在方塊604中)。核心1接收核心0之探測C-狀態(於方塊434),以"F"表示並具有4之數值。核心1接著計算其晶片104合成C-狀態"G"(於方塊436),並將0之"G"值傳回至其夥伴核心0(於方塊442)。然後,核心1離開其微碼208並回復至使用者碼(於方塊616)。
核心0接收其夥伴核心1之數值為0之混合C-狀態"B"(於方塊408)。核心0接著計算其晶片104合成C-狀態"C"(於方塊412)。因為"C"之數值為0,所以核心0進行到休眠(於方塊316)。
核心1隨後遇到一個具有特定目標C-狀態"X"為3之MWAIT
指令(於方塊302)。核心1回應地將"X"儲存為其應用電源狀態"Y",並執行相關的電源節約動作(於方塊308)。然後,核心1將其應用C-狀態"Y"(為3)傳送至其夥伴,核心0,(於方塊406),如以具有"A"標記值之箭號表示,其將中斷核心0。
核心0係被喚醒核心0之夥伴核心1所中斷(於方塊502)。因為核心0以前遇到目標C-狀態為4之MWAIT指令,所以其應用C-狀態係為4,以"Y"表示(在方塊604中)。核心0接收核心1之探測C-狀態(於方塊434),以"F"表示並具有3之數值。核心0接著計算其晶片104合成C-狀態"G"(於方塊436),並將3之"G"值傳送至其同伴核心2(於方塊446),其將中斷核心2。
核心2係被其同伴核心0所中斷(於方塊604),同伴核心0喚醒核心2(於方塊502)。因為核心2之前遇到C-狀態為5之MWAIT指令,所以其應用C-狀態係為5,以"Y"表示(在方塊604中)。核心2接收核心0之探測C-狀態(於方塊466),以"K"表示並具有3之數值。核心2接著計算一"混合"C-狀態"L"(於方塊468),並將3之"L"值傳送至其夥伴核心3(於方塊474),其將中斷核心3。
核心3係被喚醒核心3之夥伴核心2所中斷(於方塊502)。因為核心3之前遇到C-狀態為4之MWAIT指令,所以其應用C-狀態係為4,以"Y"表示(在方塊604中)。核心3接收核心2之C-狀態(於方塊434),以"F"表示並具有3之數值。核心3接著計算一混合C-狀態"G"(於方塊436),並將3之"G"值傳送至其夥伴
核心2(於方塊442)。因為"G"現在負責每一個核心之應用C-狀態,所以"G"構成多核心處理器102合成C-狀態。然而,因為核心3並非是BSP且從休眠被喚起,所以核心3返回至休眠(於方塊614)。
核心2接收其夥伴核心3之數值為3之混合C-狀態"M"(於方塊482)。核心2接著計算一混合C-狀態"N"(於方塊484)。然後,核心2將3之"N"值傳送至其同伴核心0(於方塊486)。再者,因為"N"負責每一個核心之應用C-狀態,所以"N"亦需要構成多核心處理器102合成C-狀態。然而,因為核心2並非是BSP且從休眠被喚起,所以核心2返回至休眠(於方塊614)。
核心0接收其同伴核心2之數值為3之C-狀態"H"(於方塊448)。核心0接著又計算混合C-狀態"J"(數值為3)(於方塊452),並將其傳送至夥伴核心1(於方塊454)。再者,因為"J"負責每一個核心之應用C-狀態,所以"J"亦需要構成多核心處理器102合成C-狀態。又因為核心0為BSP,所以其通知晶片組114要求移除匯流排116時脈之許可(於方塊608)。更明確而言,核心0通知晶片組114多核心微處理器102合成C-狀態係為3。然後,核心0進行到休眠(於方塊614)。
核心1接收其夥伴核心0之數值為3之C-狀態"B"(於方塊408)。核心1亦計算一混合C-狀態"C"(於方塊412),其係為3且其亦構成多核心處理器102合成的C-狀態。因為核心1並非是BSP,所以核心1進行到休眠(於方塊316)。
現在所有核心106就像它們在圖7之例子般係處於休眠狀態,且事件的進行方式亦類似於圖7所說明之方式,亦即,晶片組114設置STPCLK並喚醒核心106,等等。
明顯地,藉由這個最終同步化電源狀態發現過程完成的期間,所有的核心已各別計算多核心處理器102合成C-狀態。
於一實施例中,微碼208被設計成無法被中斷。因此,在圖7之例子中,當每個核心106之微碼208被喚醒以處理其各個MWAIT指令時,當另一個核心106試圖中斷微碼208時它並未被中斷。取而代之的是,舉例而言,核心0看到核心1已送出其C-狀態,並於方塊408獲得來自核心1之C-狀態,認為核心1於方塊406送出其C-狀態以因應核心0中斷核心1。同樣地,核心1看到核心0已送出其C-狀態,並於方塊408獲得來自核心1之C-狀態,認為核心0於方塊406送出其C-狀態以因應核心1之中斷核心0。因為核心0與核心1之每個在計算至少局部合成的C-狀態時將其他核心106之C-狀態納入考量,所以每個核心106將計算至少局部合成的C-狀態。因此,舉例而言,核心1將計算至少局部合成的C-狀態,無論核心0是否將其C-狀態送出至核心1以因應接收來自核心1之一中斷或者因應遇到一MWAIT指令,在這種情況下,兩個C-狀態可同時跨越核心間通訊配線112(或跨越晶片間通訊配線118,或跨越封裝體間通訊配線1133,於圖11之本實施例中)而傳送。因此,有利的是,微碼208可適當地操作以執行多核心微處理器102之核心106間的分散式電源管理,
而不管由各種核心106所接收MWAIT指令之事件之順序為何。
如可從前文觀察到的,廣義來說,當一核心106遇到一MWAIT指令時,其首先與其夥伴交換C-狀態資訊,且兩個核心106基於兩個核心106之C-狀態而為晶片104計算一至少局部合成的C-狀態,但是例如在雙核心晶片的情況下,其將是相同的數值。管理者核心106只在計算晶片104合成C-狀態之後,接著與它們的同伴交換C-狀態資訊,且兩者基於兩個晶片104之合成C-狀態為多核心微處理器102所計算之合成C-狀態將是相同的數值。依據此種方法,可得到的好處是,不管核心106接收它們的MWAIT指令之順序為何,所有核心106計算相同的合成C-狀態。再者,較佳是,不管核心106接收它們的MWAIT指令之順序為何,它們以一種分配式方式彼此協調,以使多核心微處理器102可作為單一實體與晶片組114溝通有關要求參與相對於多核心微處理器102是全域性之電源節約動作之許可,例如移除匯流排116時脈。有利的是,這種分配式C-狀態同步以達成電源管理之實施樣態,係在不需要使用位於之晶片104上但位於核心106外部之執行電源管理的專用硬體之情形下被執行,其可能提供下述優點:可調(尺寸之)能力、可重組性、良率特性、電源減少以及/或晶片實際尺寸減少。
吾人可注意到,具有不同數目及配置之核心106之其他多核心微處理器實施例之每個核心106可能採用類似的微碼208,如相關於圖3至6所說明的。舉例而言,一種在單一晶片104(例如圖
18所示)中具有兩個核心106之雙核心微處理器1802實施例之每個核心106可能採用類似的微碼208,如相關於認定每個核心106只具有一夥伴且沒有同伴之圖3至6所說明的。同樣地,一種具有兩個單核心晶片104(例如圖19所示)之雙核心微處理器1902實施例之每個核心106可能採用類似的微碼208,如相關於認定每個核心106只具有一同伴且沒有夥伴(或者重新指派核心106為同伴)之圖3至6所說明的。同樣地,一種具有單核心單一晶片封裝體104(例如圖20所示)之雙核心微處理器2002實施例之每個核心106可能採用類似的微碼208,如相關於認定每個核心106只具有一好友且沒有同伴或夥伴(或者重新指派核心106為同伴)之圖3至6所說明的。
再者,其他具有核心106之不對稱配置(例如圖21及22所顯示者)之多核心微處理器實施例之每個核心106,可能採用相對於圖3至6而改變之類似微碼208,例如以下相關於圖10、13以及17所述。再者,除於此所說明之具有不同數目及配置之核心106及/或封裝體(其採用以下相關於圖3至6以及10、13與17所說明的核心106之微碼208之操作組合)之外的系統實施例等,亦被本發明所考慮在內並得以依實際應用做等效修飾。
現在參考圖9所顯示之方塊圖,其顯示本發明之電腦系統900執行分配在一多核心微處理器902之多重處理核心106間的分散式電源管理之一替代實施例。系統900類似於圖1之系統,而多核心微處理器902係類似於圖1之多核心微處理器102;然而,多
核心微處理器902為一種八核心微處理器902,其包含組織在單一微處理器封裝體上之四個雙核心晶片104,以晶片0、晶片1、晶片2以及晶片3表示。晶片0包含核心0與核心1,而晶片1包含核心2與核心3,類似於圖1;此外,晶片2包含核心4與核心5,而晶片3包含核心6與核心7。在每個晶片之內,核心為彼此之夥伴,但每個晶片選擇一核心被標示為該晶片之管理者。
封裝體上之晶片管理者具有多條將每個晶片連接至每隔一個晶片之晶片間通訊配線。這允許一協調系統之實現,於其中晶片管理者包含一同儕合作(peer-collaborative)同屬性群組之成員;亦即,每個晶片管理者係能夠與封裝體上之任何其他晶片管理者協調。晶片間通訊配線118係被設計如下。晶片0之OUT接觸墊、晶片1之IN 1接觸墊、晶片2之IN 2接腳以及晶片3之IN 3接腳係經由單一配線網耦接至接腳P1;晶片1之OUT接觸墊、晶片2之IN 1接觸墊、晶片3之IN 2接觸墊以及晶片0之IN 3接觸墊係經由單一配線網耦接至接腳P2;晶片2之OUT接觸墊、晶片3之IN 1接觸墊、晶片0之IN 2接觸墊以及晶片1之IN 3接觸墊係經由單一配線網耦接至接腳P3;晶片3之OUT接觸墊、晶片0之IN 1接觸墊、晶片1之IN 2接觸墊以及晶片2之IN 3接觸墊係經由單一配線網耦接至接腳P4。
當每一個管理者核心106想要與其他晶片104溝通時,將傳輸其OUT接觸墊108上之資訊,且此資訊係廣播至其他晶片104,並經由適當的IN接觸墊108被各自的管理者核心106所接收。如
可從圖9觀察到的,有利的是每個晶片104上之接觸墊108之數目與封裝體902上接腳P之數目(亦即,關於分配在於此所說明之多重核心之間的分散式電源管理之接觸墊與接腳;而,多核心微處理器102當然可包含用於其他目的之其他接觸墊與接腳,例如資料、位址以及控制匯流排)係不大於晶片104之數目,其為一相當小的數目。這在一接觸墊有限的及/或接腳有限的設計上特別有利,而這可能是共通的,因為標準晶片/封裝體上的接觸墊/接腳數目是有規範的,對於微處理器製造商而言嘗試去遵循這些標準數值有其經濟效益,而在這種情形下可能已使用大部分的接觸墊/接腳。再者,說明於下之替代實施例,其每個晶片104上之接觸墊108之數目係為或可能為小於晶片104之數目。
現在參考圖10所顯示之流程圖,其顯示依據本發明圖9之系統900執行分配在八核心微處理器902之多重處理核心106間的分散式電源管理之操作流程。更明確而言,圖10之流程圖顯示圖3(與圖6)sync_C-狀態微碼208之操作,類似於圖4之流程圖,其在許多方面是相似的,且相同號碼的方塊是類似的。然而,在圖10之流程圖中所說明之核心106之sync_C-狀態微碼208負責八個核心106存在之情形而非於圖1之本實施例中之四個核心106,而現在說明差異。尤其,晶片104之每個管理者核心106具有三個同伴核心106而非一個同伴核心106。此外,管理者核心106一起界定一同儕合作同屬性群組,於其中任何同伴可以直接任何其他同伴協調,無須藉由封裝體管理者或BSP來仲裁。
流程開始於圖10中之方塊402,並繼續經由方塊416,如相關於圖4所說明者。然而,圖10並不包含方塊422、424、426或428。反之,流程繼續從決定方塊414離開"NO"分支至決定方塊1018。
於決定方塊1018,sync_C-狀態微碼208決定所有其同伴是否已被造訪,亦即,核心106是否已經由方塊1022與1024與每一個同伴交換C-狀態。如果是,則流程繼續至方塊416;否則,流程繼續至方塊1022。
於方塊1022,sync_C-狀態微碼208藉由程式化圖2之CSR 234在其下一個同伴上產生sync_C-狀態之新實例,用以將"C"值傳送至其下一個同伴,並用以中斷同伴。在第一同伴的情況中,所送出之"C"值係於方塊412被計算出;在剩下的同伴的情況中,"C"值係於方塊1026被計算出。在包含方塊414、1018、1022、1024以及1026之迴圈中,微碼208追蹤已造訪之同伴,以確保其已造訪它們每一個(除非於決定方塊414被發現是真實的狀況)。
流程繼續至方塊1024。於方塊1024,sync_C-狀態微碼208程式化CSR 234以偵測下一個同伴已傳回一混合C-狀態,並獲得混合C-狀態,以"D"表示。
流程繼續至方塊1026。於方塊1026,sync_C-狀態微碼208藉由計算"C"與"D"值之最小值,來計算一最近計算的本地混合C-狀態,以"C"表示。流程回復至決定方塊414。
流程繼續從圖10中之方塊434,並繼續經由方塊444,如相
關於圖4所說明的。然而,圖10並不包含方塊446、448、452、454或456。反之,流程繼續從決定方塊438離開"NO"分支至決定方塊1045。
於決定方塊1045,sync_C-狀態微碼208決定所有其同伴是否已被造訪,亦即,核心106是否已經由方塊1046與1048與每一個同伴交換C-狀態。如果是,則流程繼續至方塊442;否則,流程繼續至方塊1046。
於方塊1046,sync_C-狀態微碼208藉由程式化CSR 234在其下一個同伴上產生sync_C-狀態常式之新實例,用以將"G"值傳送至其下一個同伴,並用以中斷同伴。在第一同伴的情況中,所送出之"G"值係於方塊436所計算;在剩下的同伴的情況中,"G"值係於方塊1052被計算出。
流程繼續至方塊1048。於方塊1048,微碼208程式化CSR 234以偵測下一個同伴已傳回一混合C-狀態至核心106,並獲得混合C-狀態,以"H"表示。
流程繼續至方塊1052。於方塊1052,sync_C-狀態微碼208藉由計算"G"與"H"值之最小值來計算一最近計算的本地混合C-狀態,以"G"表示。流程回復至決定方塊438。
流程繼續從圖10中之方塊466,並繼續經由方塊476,如相關於圖4所說明者。吾人可注意到於方塊474中,同伴(核心106傳送"L"值給它)係中斷核心106之同伴。此外,流程繼續從圖10中之決定方塊472離開"NO"分支,並繼續經由方塊484,如相關
於圖4所說明者。然而,圖10並不包含方塊486或488。反之,流程繼續從方塊484至決定方塊1085。
於決定方塊1085,如果"L"值小於2,則流程繼續至方塊474;否則,流程繼續至決定方塊1087。在流程從方塊484繼續至決定方塊1085之情況中,"L"值係於方塊484被計算出;在流程從方塊1093繼續至決定方塊1085之情況中,"L"值係於方塊1093被計算出。流程繼續至決定方塊1087。
於決定方塊1087,synch_C-狀態微碼208判斷所有同伴是否已被造訪,亦即,核心106是否已經與每一個同伴交換C-狀態或從每一個同伴接收C-狀態。在中斷同伴的情況下,C-狀態係經由方塊466被接收(且將經由方塊474被送出);因此,中斷的同伴係被視為已經被造訪;剩下的同伴中,C-狀態係經由方塊1089與1091被交換。如果所有同伴已被造訪,則流程繼續至方塊474;否則,流程繼續至方塊1089。
於方塊1089,微碼208藉由程式化CSR 234在其下一個同伴上產生sync_C-狀態常式之一新實例,用以將"L"值傳送至其下一個同伴,並用以中斷同伴。在第一同伴的情況中,所送出之"L"值係於方塊484被計算出;在剩下的同伴的情況中,"L"值係於方塊1093被計算出。
流程繼續至方塊1091。於方塊1091,微碼208程式化CSR 234以偵測下一個同伴已傳回一混合C-狀態至核心106,並獲得混合C-狀態,以"M"表示。
流程繼續至方塊1093。於方塊1093,sync_C-狀態微碼208藉由計算"L"與"M"值之最小值來計算本地混合C-狀態之最近計算的數值,以"L"表示。流程回復至決定方塊1085。
現在參考圖11所顯示之方塊圖,其顯示本發明之電腦系統1100執行分配在兩個多核心微處理器102之多重處理核心106間的分散式電源管理之一種替代實施例。系統1100係類似於圖1之系統100,且兩個多核心微處理器102每個係類似於圖1之多核心微處理器102;然而,此系統包含耦接在一起之兩個多核心微處理器102,用以提供一種八核心系統1100。因此,圖11之系統1100亦類似於圖9之系統900,其包含四個雙核心晶片104,以晶片0、晶片1、晶片2以及晶片3表示。晶片0包含核心0與核心1,晶片1包含核心2與核心3,晶片2包含核心4與核心5,而晶片3包含核心6與核心7。然而,晶片0與晶片1係包含在第一多核心微處理器封裝體102中,而晶片2與晶片3係包含在第二多核心微處理器封裝體102中。因此,雖然核心106係被分配在圖11之本實施例中之多重多核心微處理器封裝體102之間,然而核心106共用某些電源管理相關的資源,亦即由晶片組114與晶片組114所提供之用以窺探或不窺探匯流排116時脈在處理器匯流排上快取之策略,因此晶片組114可由預先決定的I/O連接埠位址,而期望匯流排116上之單一I/O讀取傳輸。此外,兩個封裝體102之核心106潛在地共用一VRM,而晶片104之核心106可能共用一PLL,如上所述。有利的是,圖11之系統1100之核心106(尤其
核心106之微碼208)係被設計成與彼此溝通,用以如於此以及CNTR.2534中所說明的,藉由使用核心間通訊配線112、晶片間通訊配線118以及封裝體間通訊配線1133(說明於下),以分散方式在協調共用電源管理相關的資源之控制。
第一多核心微處理器102之晶片間通訊配線118係如圖1中之設計。然而,第二多核心微處理器102之接腳係以"P5"、"P6"、"P7"以及"P8"表示,且第二多核心微處理器102之晶片間通訊配線118係被設計如下。晶片2之IN 2接觸墊與晶片3之IN 3接觸墊經由單一配線網耦接至接腳P5;晶片2之IN 1接觸墊與晶片3之IN 2接觸墊係經由單一配線網耦接至接腳P6;晶片2之OUT接觸墊與晶片3之IN 1接觸墊經由單一配線網耦接至接腳P7;晶片3之OUT接觸墊與晶片2之IN 3接觸墊經由單一配線網耦接至接腳P8。再者,經由系統1100之主機板之封裝體間通訊配線1133,第一多核心微處理器102之接腳P1耦接至第二多核心微處理器102之接腳P7,以使晶片0之OUT接觸墊、晶片1之IN 1接觸墊、晶片之IN 2接觸墊,以及晶片3之IN 3接觸墊係經由單一配線網而全部耦接在一起;第一多核心微處理器102之接腳P2耦接至第二多核心微處理器102之接腳P8,以使晶片1之OUT接觸墊、晶片2之IN 1接觸墊、晶片3之IN 2接觸墊,以及晶片0之IN 3接觸墊係經由單一配線網而全部耦接在一起;第一多核心微處理器102之接腳P3係耦接至第二多核心微處理器102之接腳P5,以使晶片0之OUT接觸墊、晶片1之IN 1接觸墊、晶片2
之IN 2接觸墊,以及晶片3之IN 3接觸墊係經由單一配線網而全部耦接在一起;第一多核心微處理器102之接腳P4耦接至第二多核心微處理器102之接腳P6,以使晶片0之OUT接觸墊、晶片1之IN 1接觸墊、晶片2之IN 2接觸墊,以及晶片3之IN 3接觸墊係經由單一配線網而全部耦接在一起。圖2之CSR 234亦耦接至封裝體間通訊配線1133,用以啟動微碼208以程式化CSR 234而經由封裝體間通訊配線1133與其他核心106溝通。因此,每個晶片104之管理者核心106係被啟動以經由封裝體間通訊配線1133與晶片間通訊配線118而與其他晶片104之管理者核心106(亦即,其同伴)溝通。當每一個管理者核心106想要與其他晶片104溝通時,其傳輸在其OUT接觸墊108上之資訊,且此資訊係廣播至其他晶片104並藉由經由適當的IN接觸墊108被各自管理者核心106所接收。如可能從圖11觀察到的,有利的是,相對於每個多核心微處理器102,每個晶片104上之接觸墊108之數目與封裝體102上之接腳P之數目不大於晶片104之數目,其為相當小的數目。
再者,請注意對於晶片104之一既定管理者核心106而言,每隔一個晶片104之管理者核心106係為既定管理者核心106之"同伴"核心106,吾人可從圖11觀察到核心0、核心2、核心4以及核心6為類似於圖9中配置的同伴,即使在圖9中,所有的四個晶片104係包含於單一個八核心微處理器封裝體902中,而在圖11中,四個晶片104係包含於兩個分離的四核心微處理器封裝
體102中。因此,相關於圖10所說明之微碼208係被設計成如在圖11之系統1100中操作。此外,所有四個同伴核心106一起形成一同儕合作同屬性群組,其中每個同伴核心106係在沒有仲裁的情況下被啟動,以在無論哪一個同伴核心106被指定為BSP核心都可直接與任何其他之同伴核心106進行協調。
吾人更進一步注意到,雖然接腳P在多處理器實施例(例如圖11與圖12之所示者)中是需要的,但如果必要的話,接腳可能在單一多核心微處理器102實施例中被省略,雖然它們對於除錯目的是有益的。
現在參考圖12所顯示之方塊圖,其顯示依據本發明電腦系統1200執行分配在兩個多核心微處理器1202之多重處理核心106間的分散式電源管理之一替代實施例。系統1200係類似於圖11之系統1100,而多核心微處理器1202係類似於圖11之多核心微處理器102。然而,系統1200之八個核心係依據一較深的階層式協調系統並藉由旁路配線被組織且以實體連接。
每個晶片104只具有三個接觸墊108(CUT、IN 1以及IN 2),用以耦合至晶片間通訊配線118;每個封裝體1202只具有兩個接腳,在第一多核心微處理器1202上以P1與P2表示,以及在第二多核心微處理器1202上以P3與P4表示;而連接圖12之兩個多核心微處理器1202之晶片間通訊配線118與封裝體間通訊配線1133具有不同於圖11中對應元件的配置。
在圖12之系統1200中,核心0與核心4被指定為它們各自
的多核心微處理器1202之"封裝體管理者"或"p管理者"。再者,除非另有說明,否則專門用語"好友"於此係用以表示彼此通訊之不同封裝體1202上之管理者核心106;因此,於圖12之本實施例中,核心0與核心4係為好友。第一多核心微處理器1202之晶片間通訊配線118係被設計如下。在第一封裝體1202之內,晶片0之OUT接觸墊與晶片1之IN 1接觸墊經由單一配線網耦接至接腳P1;晶片1之OUT接觸墊與晶片0之IN 1接觸墊經由單一配線網耦接;而晶片0之IN 2接觸墊係耦接至接腳P2。在第二封裝體1201之內,晶片2之OUT接觸墊與晶片3之IN 1接觸墊經由單一配線網耦接至接腳P3;晶片3之OUT接觸墊與晶片2之IN 1接觸墊經由單一配線網耦接;而晶片2之IN 2接觸墊係耦接至接腳P4。再者,經由系統1200之主機板之封裝體間通訊配線1133,接腳P1係耦接至接腳P4,以使晶片0之OUT接觸墊、晶片1之IN 1接觸墊,而晶片2之IN 2接觸墊經由單一配線網而全部耦接在一起;以及接腳P2係耦接至接腳P3,以使晶片2之OUT接觸墊、晶片3之IN 1接觸墊,以及晶片0之IN 2接觸墊經由單一配線網而全部耦接在一起。
因此,不像在圖9之系統900中以及在圖11之系統1100中,於其中每個管理者核心106可與其他管理者核心106通訊,在圖12之系統1200中,只有管理者核心0與管理者核心4可彼此溝通(亦即,經由於此所說明之旁路配線)。圖12之實施例勝過圖11之一項優點為相關於每個多核心微處理器1202,每個晶片104上
之接觸墊108數目(1)比晶片104之數目小,以及每個封裝體1202上之接腳P數目(2)比晶片104之數目小,其係為一相當小的數目。此外,在核心106之間的C-狀態交換之數目可能更少。於一實施例中,為了除錯的目的,第一多核心微處理器1202亦包含耦接至晶片1之OUT接觸墊108之一第三接腳,而第二多核心微處理器1202亦包含耦接至晶片3之OUT接觸墊108之一第三接腳。
現在參考圖13所顯示之流程圖,其顯示依據本發明圖12之系統1200用以執行分配在雙四核心微處理器1202(八個核心)系統1200之多重處理核心106間的分散式電源管理操作。更明確而言,圖13之流程圖顯示圖3(與圖6)sync_C-狀態微碼208之操作,類似於圖4與10之流程圖,其在許多方面是相似的,且相同號碼的方塊是類似的。然而,在圖13之流程圖中所說明之核心106之sync_C-狀態微碼208所負責之晶片間通訊配線118及封裝體間通訊配線1133之配置在圖12之系統1200與圖11之系統1100兩者之間是不同的,特別是某些管理者核心106(亦即核心2及核心4)並未被設計成與系統1200之所有其他管理者核心106直接溝通,但取而代之的是好友(核心0及核心4)以一種階層式方式向下傳遞至它們的同伴(分別為核心2與核心6),其再依序向下傳遞至它們的夥伴核心106。現在說明這些差異。
流程開始於圖13中之方塊402,並繼續前進至方塊424,如相關於圖4所說明者。然而,圖10並未包含方塊426或428。反之,流程繼續從方塊424前進至方塊1326。此外,於決定方塊432,
如果被中斷的核心106係為一好友而非一夥伴或同伴,則流程繼續至方塊1301。
於方塊1326,sync_C-狀態微碼208藉由計算"C"與"D"值之最小值來計算(本地)混合C-狀態之一最近計算的數值,以"C"表示。
流程繼續至決定方塊1327。於決定方塊1327,如果於方塊1326所計算之"C"值小於2或核心106並非是封裝體管理者核心106,則流程繼續至方塊416;否則,流程繼續至方塊1329。
於方塊1329,sync_C-狀態微碼208藉由程式化CSR 234在其好友上產生sync_C-狀態之新實例,用以將於方塊1326所計算之"C"值傳送至其好友並用以中斷好友。這要求好友計算並傳回一混合C-狀態(這種情形類似上述與圖4相關之說明,可能構成整個處理器之合成C-狀態),並要求好友將其提供回到這個核心106。
流程繼續至方塊1331。於方塊1331,sync_C-狀態微碼208程式化CSR 234以偵測好友已傳回一混合C-狀態至核心106,並獲得混合C-狀態,以"D"表示。
流程繼續至方塊1333。於方塊1333,sync_C-狀態微碼208藉由計算"C"與"D"值之最小值來計算一最近計算的混合C-狀態,以"C"表示。吾人可注意到,假設D至少為2,於是一旦流程繼續至方塊1333,就會於方塊1333中,在"C"值之合成的C-狀態計算時,考量系統1200中之每個核心106之C-狀態;因此,合成的C-狀態於此被稱為系統1200合成的C-狀態。流程繼續至方塊416。
流程繼續從圖13中之方塊434,並繼續前進至方塊444與
448,如相關於圖4所說明的。然而,圖13並不包含方塊452、454或456。反之,流程繼續從方塊448至方塊1352。
於方塊1352,sync_C-狀態微碼208藉由計算"G"與"H"值之最小值來計算一最近計算的本地混合C-狀態,以"G"表示。
流程繼續至決定方塊1353。於決定方塊1353,如果於方塊1352所計算之"G"值小於2或核心106並非是封裝體管理者核心106,則流程繼續至方塊442;否則,流程繼續至方塊1355。
於方塊1355,sync_C-狀態微碼208藉由程式化CSR 234在其好友上產生sync_C-狀態之新實例,用以將於方塊1352所計算之"G"值傳送至其好友,並用以中斷好友。這要求好友計算並傳回一混合C-狀態到這個核心106。
流程繼續至方塊1357。於方塊1357,sync_C-狀態微碼208程式化CSR 234以偵測好友已傳回一混合C-狀態至核心106,並獲得混合C-狀態,以"H"表示。流程繼續至方塊1359。
於方塊1359,sync_C-狀態微碼208藉由計算"G"與"H"值之最小值來計算一最近計算的本地混合C-狀態,以"G"表示。吾人可注意到,假設H至少為2,則一旦流程繼續至方塊1359,就會於方塊1359中,在"G"值之合成C-狀態計算時考量系統1200中之每個核心106之C-狀態;因此,合成的C-狀態於此被稱為系統1200合成C-狀態。流程繼續至方塊442。
流程繼續從圖13中之方塊466,並繼續經由方塊476與482,如相關於圖4所說明的。然而,圖13並不包含方塊484、486或
488。反之,流程繼續從方塊482至方塊1381。
於方塊1381,sync_C-狀態微碼208藉由計算"L"與"M"值之最小值來計算一最近計算的本地混合C-狀態,以"L"表示。
流程繼續至決定方塊1383。於決定方塊1383,如果於方塊1381所計算的"L"值小於2或核心106並非是封裝體管理者核心106,則流程繼續至方塊474;否則,流程繼續至方塊1385。
於方塊1385,sync_C-狀態微碼208藉由程式化CSR 234在其好友上產生sync_C-狀態之新實例,用以將於方塊1381所計算之"L"值傳送至其好友,並用以中斷好友。這要求好友計算並傳回一混合C-狀態到這個核心106。
流程繼續至方塊1387。於方塊1387中,sync_C-狀態微碼208程式化CSR 234以偵測好友已傳回一混合C-狀態至核心106,並獲得混合C-狀態,以"M"表示。流程繼續至方塊1389。
於方塊1389,sync_C-狀態微碼208藉由計算"L"與"M"值之最小值來計算一最近計算的本地synced C-狀態,以"L"表示。吾人可注意到,假設M係至少2,則一旦流程繼續至方塊1389,就會於方塊1389中,在"L"值之合成C-狀態計算時考量系統1200中之每個核心106之C-狀態;因此,合成C-狀態於此被稱為系統1200合成C-狀態。流程繼續至方塊474。如上所述,於決定方塊432中,如果中斷的核心106為一好友而非一夥伴或同伴,則流程繼續至方塊1301。
於方塊1301,核心106被其好友所中斷,所以微碼208程式
化CSR 234,用以從其好友獲得好友之合成C-狀態,在圖13中以"Q"表示。應注意的是,好友不會喚醒synch_C-狀態之實例,如果其尚未為其封裝體確認合成C-狀態至少為2的話。
流程繼續至方塊1303。於方塊1303,sync_C-狀態微碼208計算一本地混合C-狀態(以"R"表示)作為其應用於方塊1301所接收之C-狀態"Y"值與"Q"值之最小值。
流程繼續至決定方塊1305。於決定方塊1305,如果於方塊1303所計算之"R"值小於2,則流程繼續至方塊1307;否則,流程繼續至方塊1311。
於方塊1307,為因應來自其好友請求之核心間中斷,微碼208程式化CSR 234以將於方塊1303所計算之"R"值傳送至其好友。流程繼續至方塊1309。於方塊1309中,常式將於方塊1303所計算之"R"值傳回至其呼叫者。流程於方塊1309結束。
於方塊1311,sync_C-狀態微碼208藉由程式化CSR 236在其夥伴上產生sync_C-狀態之新實例,用以將於方塊1303所計算之"R"值傳送至其夥伴,並用以中斷夥伴。這要求夥伴計算並傳回一混合C-狀態至核心106。
流程繼續至方塊1313。於方塊1313中,sync_C-狀態微碼208程式化CSR 236以偵測夥伴已傳回一混合C-狀態至核心106,並獲得夥伴混合C-狀態,在圖13中以"S"表示。
流程繼續至方塊1315。於方塊1315,sync_C-狀態微碼208藉由計算"R"與"S"值之最小值來計算一最近計算的本地混合C-狀
態,以"R"表示。
流程繼續至決定方塊1317。於決定方塊1317中,如果於方塊1315所計算之"R"值小於2,則流程繼續至方塊1307;否則,流程繼續至方塊1319。
於方塊1319,sync_C-狀態微碼208藉由程式化CSR 234在其同伴上產生sync_C-狀態之新實例,用以將於方塊1315所計算之"R"值傳送至其同伴,並用以中斷同伴。這要求同伴計算並傳回一混合C-狀態至這個核心106。
流程繼續至方塊1321。於方塊1321,sync_C-狀態微碼208程式化CSR 234以偵測同伴已傳回一混合C-狀態至核心106,並獲得混合C-狀態,以"S"表示。
流程繼續至方塊1323。於方塊1323,sync_C-狀態微碼208藉由計算"R"與"S"值之最小值來計算一最近計算的本地混合C-狀態,以"R"表示。吾人可注意到,假設S係至少2,於是一旦流程前進至方塊1323,就會於方塊1323中,在"R"值之計算時考量系統1200中之每個核心106之C-狀態;因此,"R"將構成系統1200之合成C-狀態。流程繼續至方塊1307。
現在參考圖14所顯示之方塊圖,其顯示依據本發明電腦系統1400執行分配在一多核心微處理器1402之多重處理核心106間的分散式電源管理之一替代實施例。系統1400在某些方面類似於圖9之系統900,因為其包含在單一封裝體上具有經由晶片間通訊配線118耦接在一起之四個雙核心晶片104之單一八核心微處理器
1402。然而,系統1400之八個核心係依據一較深的三層之階層式協調系統而藉由旁路配線被組織且實體連接。
首先,晶片間通訊配線118之配置係與圖9不同,如下所述。值得注意的,系統1400在某些方面類似於圖12之系統1200,於其中核心依據一種三層之階層式協調系統被組織在一起且實體連接。四個晶片104之每一者包含用以耦接至晶片間通訊配線118之三個接觸墊108,亦即OUT接觸墊、IN 1接觸墊以及IN 2接觸墊。圖14之多核心微處理器1402包含以"P1"、"P2"、"P3"以及"P4"表示之四個接腳。圖14之多核心微處理器1402之晶片間通訊配線118之配置如下。晶片0之OUT接觸墊、晶片1之IN 1接觸墊,以及晶片2之IN 2接觸墊經由耦接至接腳P1之單一配線網而全部耦接在一起;晶片1之OUT接觸墊與晶片0之IN 1接觸墊經由耦接至接腳P2之單一配線網而耦接在一起;晶片2之OUT接觸墊、晶片3之IN 1接觸墊以及晶片0之IN 2接觸墊係經由耦接至接腳P3之單一配線網而全部耦接在一起;晶片3之OUT接觸墊與晶片2之IN 1接觸墊經由耦接至接腳P4之單一配線網而耦接在一起。
圖14之核心106係被設計成用以依據圖13之說明操作,對核心0與核心4而言,即使它們位於相同的封裝體1402(與上述相關於圖12所規定的專門用語"好友"之意思相反)仍被視為好友,而這兩個好友於圖14之實施例中經由晶片間通訊配線118而非經由圖12之封裝體間通訊配線1133做彼此溝通,。於此應注
意的是,除了處理器之實體模型以外,核心係依據一種較深的且具有三個層次之域的階層式協調系統而設計。
現在參考圖15所顯示之方塊圖,其顯示依據本發明電腦系統1500執行分配在一種多核心微處理器1502之多重處理核心106間的分散式電源管理之一替代實施例。系統1500在某些方面類似於圖14之系統1400,因為其包含單一個八核心微處理器1502,其具有以核心0至核心7表示之八個核心106。然而,多核心微處理器1502包含經由晶片間通訊配線118耦接在一起之兩個四核心晶片1504。兩個晶片1504之每一者包含用以耦接至晶片間通訊配線118之兩個接觸墊108,亦即一OUT接觸墊以及IN 1、IN 2和IN 3接觸墊。多核心微處理器1502包含以"P1"與"P2"表示之兩個接腳。多核心微處理器1502之晶片間通訊配線118之配置如下。晶片0之OUT接觸墊與晶片1之IN 1接觸墊經由耦接至接腳P2之單一配線網而耦接在一起,而晶片1之OUT接觸墊與晶片0之IN 1接觸墊經由耦接至接腳P1之單一配線網而耦接在一起。此外,四核心晶片1504之核心間通訊配線112將每個核心106耦接至晶片1504之其他核心106,用以促進分配在一種多核心微處理器1502之多重處理核心106間的分散式電源管理。
圖15之核心106被設計成用以依據圖13之說明操作,並透過以下敘述獲得理解。首先,每個晶片本身所具有之核心係依據一雙層之階層式協調系統,並藉由旁路配線而被組織且實體連接。晶片0具有兩個夥伴同屬性群組(核心0與核心1;核心2
與核心3)以及一個同伴同屬性群組(核心0與核心2)。同樣地,晶片1具有兩個夥伴同屬性群組(核心4與核心5;核心6與核心7)以及一個同伴同屬性群組(核心4與核心6)。於此可注意到同伴核心縱使它們位於相同的晶片上(與上述相關於圖1所規定的之"同伴"之特性記述相反)仍被視為同伴。此外,同伴於圖15之實施例中經由核心間通訊配線112而非經由圖12之晶片間通訊配線118進行彼此之通訊。
其次,封裝體本身界定一第三階層式範圍及對應的好友同屬性群組。換言之,核心0及核心4縱使它們位於相同的封裝體1502上(與上述相關於圖12所規定的專門用語"好友"之意思相反)仍被視為好友。又,好友於圖15之實施例中經由晶片間通訊配線118而非經由圖12之封裝體間通訊配線1133進行彼此之通訊。
現在參考圖16所顯示之方塊圖,其顯示依據本發明之電腦系統1600執行分配在一種多核心微處理器1602之多重處理核心106間的分散式電源管理之一替代實施例。系統1600在某些方面類似於圖15之系統1500,因為其包含單一個八核心微處理器1602,其具有以核心0至核心7所表示之八個核心106。然而,每個晶片104包含多條在每一個核心106之間的核心間通訊配線112,用以允許每個核心106與晶片104中之其他核心106進行通訊。因此,為說明圖16每個核心106之微碼208之操作:(1)核心0、核心1、核心2以及核心3被視為夥伴,而核心4、核心5、核心6以及核心7被視為夥伴;(2)核心0及核心4被視為同伴。因此,
系統1600係依據由夥伴與同伴同屬性群組所組成之一雙層階層式協調系統並藉由旁路配線被組織且實體連接。此外,存在於晶片之每一個核心之間的核心間通訊配線112,可促進供晶片所界定之夥伴同屬性群組用之一同儕合作協調模型。雖然能夠依據一同儕合作協調模型操作,但圖17說明一種供核心之間的分散式電源管理使用之管理者合作協調模型。
現在參考圖17所顯示之流程圖,其顯示依據本發明圖16之系統1600用以執行分配在多核心微處理器102之多重處理核心106間的分散式電源管理之操作。更明確而言,圖17之流程圖顯示圖3(與圖6)之sync_C-狀態微碼208之操作,類似於圖4之流程圖,其在許多方面是相似的,且相同號碼的方塊是類似的。然而,在圖17之流程圖中所說明之核心106之微碼208負責存在八個核心106之情形而非於圖1之實施例中之四個核心106,具體地說四個核心106係兩個雙晶片104之方式而存在,而現在說明其差異。尤其,一晶片104之每個管理者核心106具有三個夥伴核心106而非一個夥伴核心106。
流程開始於圖17中之方塊402,並繼續經由決定方塊404且離開決定方塊404之"NO"分支至決定方塊432,如相關於圖4所說明者。然而,圖17並不包含方塊406至418。反之,流程繼續從決定方塊404離開"YES"分支至方塊1706。
於方塊1706,sync_C-狀態微碼208藉由程式化圖2之CSR 236以在一夥伴上產生sync_C-狀態常式之新實例,用以將於方塊402
所接收或於方塊1712所產生(討論於下)之"A"值傳送至其下一個夥伴,並用以中斷夥伴。這要求夥伴計算並傳回一混合C-狀態至核心106。在包含方塊1706、1708、1712、414以及1717之迴圈中,微碼208掌握其已造訪之夥伴的記錄,用以確保其造訪它們每一個(除非於決定方塊414被發現是真實的狀況)。流程繼續至方塊1708。
於方塊1708,sync_C-狀態微碼208程式化CSR 236以偵測下一個夥伴已傳回一混合C-狀態至核心106,並獲得夥伴之混合C-狀態,在圖17以"B"表示。流程繼續至方塊1712。
於方塊1712,sync_C-狀態微碼208藉由計算"A"及"B"值之最小值來計算一最近計算的本地混合C-狀態,其係以"A"表示。流程繼續至決定方塊1714。
於決定方塊1714,如果於方塊1712所計算之"A"值小於2或核心106並非是管理者核心106,則流程繼續至方塊1716;否則,流程繼續至決定方塊1717。
於方塊1716,sync_C-狀態微碼208將於方塊1712所計算之"A"值傳回至其呼叫者。流程於方塊1716結束。
於決定方塊1717,sync_C-狀態微碼208決定所有其夥伴是否已被造訪,亦即核心106是否已經由方塊1706與1708而與每一個其夥伴交換混合C-狀態。如果是,則流程繼續至方塊1719;否則,流程回復至方塊1706。
於方塊1719,sync_C-狀態微碼208決定於方塊1712所計算
之"A"值成為其晶片合成C-狀態,其係以"C"表示,且流程繼續至方塊422並繼續進行至方塊428,如上相關於圖4所述。
流程繼續從決定方塊438之"NO"分支至決定方塊1739。
於決定方塊1739,sync_C-狀態微碼208決定所有其夥伴是否已被造訪,亦即,核心106是否已經經由方塊1741及1743(討論於下)而與每一個其夥伴交換一混合C-狀態。如果是,流程繼續至方塊446,並繼續進行經由至方塊456,如上相關於圖4所述;否則,流程繼續至方塊1741。
於方塊1741,sync_C-狀態微碼208藉由程式化圖2之CSR 236在其下一個夥伴上產生sync_C-狀態常式之新實例,用以將於方塊436或於方塊1745(討論於下)所計算之"G"值傳送至其下一個夥伴,並用以中斷夥伴。這要求夥伴計算並傳回一混合C-狀態至核心106。在包含方塊438、1739、1741、1743以及1745之迴圈中,微碼208掌握其已造訪之夥伴的記錄,用以確保其造訪它們每一個(除非於決定方塊438被發現是真實的狀況)。流程繼續至方塊1743。
於方塊1743,sync_C-狀態微碼208程式化CSR 236以偵測下一個夥伴已傳回一混合C-狀態至核心106,並獲得夥伴之混合C-狀態,在圖17中以"F"表示。流程繼續至方塊1745。
於方塊1745,sync_C-狀態微碼208藉由計算"F"及"G"值之最小值來計算一最近計算的本地混合C-狀態,其係以"G"表示。流程回復至決定方塊438。
圖17並不包含方塊478至方塊488。取而代之的是,流程繼續離開決定方塊472之"NO"分支至決定方塊1777。
於決定方塊1777,sync_C-狀態微碼208決定所有其夥伴是否已被造訪,亦即,核心106是否已經經由方塊1778及1782(討論於下)而與每一個夥伴交換一混合C-狀態。如果是,流程繼續至方塊474並繼續進行經由至方塊476,如上相關於圖4所述;否則,流程繼續至方塊1778。
於方塊1778,sync_C-狀態微碼208藉由程式化圖2之CSR 236在下一個夥伴上產生sync_C-狀態常式之新實例,用以將於方塊468或於方塊1784(討論於下)所計算之"L"值傳送至其下一個夥伴,並用以中斷夥伴。這要求夥伴計算並傳回一混合C-狀態至核心106。在包含方塊472、1777、1778、1782以及1784之迴圈中,微碼208掌握其已造訪之夥伴的記錄,用以確保其造訪它們每一個(除非於決定方塊472被發現是真實的狀況)。流程繼續至方塊1782。
於方塊1782,sync_C-狀態微碼208程式化CSR 236以偵測下一個夥伴已傳回一混合C-狀態至核心106,並獲得夥伴之混合C-狀態,在圖17以"M"表示。流程繼續至方塊1784。
於方塊1784,sync_C-狀態微碼208藉由計算"L"及"M"值之最小值來計算一最近計算的本地混合C-狀態,其係以"L"表示。流程回復至決定方塊472。
如較早所陳述的,如應用至圖16之圖17顯示一管理者仲裁
的階層式協調模型至一微處理器1602之應用,其旁路配線促進對於至少某些之核心同屬性群組之一同儕合作協調模型。這種組合提供各種優點。就另一方面而言,微處理器1602之實體架構提供在界定與再界定(defining and redefining)階層式域以及指定與再指定(designating and redesignating)域管理者上的彈性,如與申請案序號61/426,470之段落相關所說明的,前述申請案之申請日為2010年12月22日,名稱為"在一多核心處理器中之動態及選擇性核心禁能(Dynamic and Selective Core Disablement)",及其同時申請的非臨時申請案(CNTR.2536),其係於此併入作參考。此外,在提供這種核心間協調彈性之微處理器上,可依據預定情況或配置設定而在一個以上的協調模式中提供可以行動之一階層式協調系統。舉例而言,一階層式協調系統可使用所指定的管理者核心而優先地採用協調之管理者仲裁模型,但是在某些預定或偵測條件之下,可將一不同的核心標示為供該同屬性群組用之一暫時管理者、或者切換成供一既定同屬性群組使用之一同儕合作協調模型。可能的模型切換條件之例子包含所指定的管理者核心無反應或禁能、所指定管理者核心基於它們的狀態或緊急性而處於一限制中斷模式中、或所指定之管理者核心處於將某些把關或協調角色委派授權給一個或多個其成員。
在上述圖中,已顯示受限制的電源狀態(例如C-狀態>=2),只有在等於處理器之複合電源狀態時係可實施的。在諸如此情況下,已說明之電源狀態複合電源狀態發現過程可在實施受限制的
電源狀態之前進行操作,以負責處理器中每個核心之應用電源狀態。
然而如較早在說明書中所敘述者,有順序的電源狀態之不同配置與等級亦屬本發明所考量的。此外,本發明亦考慮包含多重特定域層次之受限制電源狀態之電源狀態之非常進階的設定,於此漸進較高層級之受限制電源狀態將應用於處理器之漸進較高的域中。
舉例而言,在具有多重多核心晶片之一多核心多處理器中,每個晶片提供在晶片之核心間被共用之一PLL,但由微處理器之所有核心所共用之單一VRM,譬如在CNTR.2534中所說明的,一受限制域的電源狀態階層可被定義而包含尤其適合於一核心內部(且非外部被共用)資源之第一組電源狀態、尤其適合於由晶片上之核心所共用,而不能被晶片外部所共用之資源(例如PLL與快取)之下一組電源狀態、且特別適合於整個微處理器之又另一組電源狀態(例如電壓值與匯流排時脈)。
因此,於一實施例中,每個域具有其本身的複合電源狀態。又,對每個域而言,存在有單一適當的受認證核心(例如該域之管理者),其具有實施或啟動一受限制電源狀態之實施的授權,如由一對應的區別域的電源狀態階層協調系統所界定者,係受限在受衝擊之域上。這種進階配置尤其適合包含譬如CNTR.2534所顯示之實施例,於其中子群組之處理器核心共用快取、PLL等等。
本發明亦考慮數個實施例,於其中一分散式同步過程係利用
一種不需要喚醒所有核心的方式來不僅管理一受限制電源狀態之實現,而且選擇性地實施一受限制電源狀態之一喚起狀態或撤銷。這種進階實施例與類似圖5之系統形成對比,於其中一晶片組STPCLK之解除設置可完全喚醒所有核心。
現在參考圖23,其描繪sync_state邏輯2300之一個實施例,以顯示譬如在微碼中進行有條件地實施與選擇性地撤銷一限制操作狀態兩者之情形。如下所述,sync_state邏輯2300支持一種域-區別(domain-differentiated)的電源狀態階層協調系統之實現。有利的是,sync_state邏輯2300的可計量性相當好,因為其可被延伸至實際上是任何想要的域-層次深度(domain-level depth)之階層式協調系統。又,邏輯2300不僅可用對微處理器整體看來是全域的方式、而且對在微處理器之內的特定群組核心(例如,只對一晶片之核心,如以下關於方塊2342所說明的)以更多限制的方式被實施。此外,sync_state邏輯2300可利用不同且具相關定義的階層式協調系統、應用的操作狀態以及域層次臨界值,而獨立應用至不同操作狀態之群組中。
在類似於sync_C-狀態微碼208之較早顯示的實施例之實施樣態中,sync_state邏輯2300可能在本地或外部地被產生,並在傳送一探測狀態值"P"之一常式中執行。例如,一電源狀態管理微碼常式可接收由一MWAIT指令所傳送、或如與CNTR.2534相關所討論的一目標操作狀態,利用供核心之本地核心邏輯產生一目標操作狀態(例如一要求的VID或頻率比率值)。接著,電源狀態管
理微碼常式可將目標值儲存為核心的目標操作狀態OTARGET
,然後藉由將OTARGET
傳送成為探測狀態值"P"來喚醒sync_state邏輯2300。或者,在類似於先前實施例所討論的實施樣態,sync_state邏輯2300可能藉由一中斷常式響應一外部產生的同步需求被喚醒。為簡化之便,這種實例被稱為sync_state邏輯2300之外部喚醒實例。
在更進一步繼續前進以前,吾人應注意到,再為簡化之便,圖23顯示以一種適合管理操作狀態之形式的sync_state邏輯2300,操作狀態係在要求漸進地更大程度之核心間協調予漸進地較高需求的狀態(舉例而言,如應用於C-狀態)的方式被界定或被安排。吾人將理解具有通常知識者可利用謹慎地應用邏輯來修改sync_state邏輯2300以支援一操作狀態階層(例如VID或頻率比率狀態),於其中操作狀態係朝相反方向被界定。或者,因傳統或選擇而朝一個方向被界定之操作狀態,可根據定義而一般的"安排"在相反方向中。因此,sync_state邏輯2300可只藉由重新安排它們,並施加相反指示的基準值(例如負的原始值)而被應用至操作狀態(例如需求的VID與頻率比率狀態)。
吾人亦注意到圖23顯示sync_state邏輯2300是特別為一嚴格地階層式協調系統而設計,於其中所有包含的同屬性群組依據一管理者仲裁協調模型操作。如關於先前所顯示的可某些程度協調對等合作之同步邏輯實施例所證明的,本發明不應被理解成受限於嚴格地階層式協調系統(除非到達明確指出的程度)。
流程於方塊2302開始,於此sync_state邏輯2300接收探測狀態值"P"。流程繼續至方塊2304,於此sync_state邏輯2300亦獲得本地核心的目標操作狀態OTARGET
、可由本地核心實行之最大的操作狀態OMAX
、由本地核心所控制之最大的域層次DMAX
,以及並未涉及或干涉一特定域D之外部資源之最大可利用的域-特定狀態MD
。吾人應注意到,sync_state邏輯2300獲得或計算方塊2304之值的方式或年表(chronology)並不重要。在流程圖中之方塊2304僅用來介紹適用於sync_state邏輯2300之重要變數。
在一個例示的但非限制的實施例中,域層次D係被界定如下:單一核心為0;多核心晶片為1;多晶片封裝體為2,等等。0與1之操作狀態係不受限制的(意指一核心可實施它們而無須與其他核心協調),2與3之操作狀態係相關於相同晶片之核心而受限(意指它們可能在一晶片之核心上被實施以與其他晶片上之核心協調,但不需要與在其他晶片上之其他核心協調),而4與5之操作狀態係相關於相同封裝體之核心而受限(意指它們可能在與該封裝體之核心協調之後而在該封裝體上被實施,但不需要與其他封裝體上之其他核心協調,如果有的話),等等。因此,相對應的最大可應用的域-特定狀態MD
係為:M0
=1;M1
=3;以及M2
=5。再者,由一核心所控制之最大域層次DMAX
與可由核心實行之最大操作狀態OMAX
,兩者為該核心的管理者憑證(如果有的話)之函數。因此,於此例子中,一非管理者核心將具有0之DMAX
以及1之對應的最大可自我實行的操作狀態OMAX
;晶片管理者核
心將具有1之DMAX
以及3之對應的最大可自我實行的操作狀態OMAX
;以及封裝體管理者或BSP核心將具有2之DMAX
以及5之對應的最大可自我實行的操作狀態OMAX
。
流程繼續至方塊2306,於此sync_state邏輯2300計算一初始混合值"B",其等於探測值"P"與本地核心的目標操作狀態OTARGET
之最小值。又,如果P是由一附屬家族核心所接收,且其值小於或等於最大可應用的域-特定操作狀態MD
(家族核心據此為憑證來實施),則基於這裡所說明的邏輯,這一般表示一附屬家族核心請求撤銷由本地或一較高階級的核心所實行之任何潛在的干涉較易休眠狀態(interfering sleepier state)。此乃因為在一般配置中,附屬家族核心已經實行相對於其所能夠的程度下為更清醒的P狀態,而其無法在沒有較高層級協調的情況下,單方面地撤銷經由一個其不能控制的域所實行之干涉較易休眠狀態。
流程繼續至方塊2308,於此一域層次變數D被初始化為零。在上述所顯示之例子中,一個為0之D表示一個核心。
流程繼續至決定方塊2310。如果D等於DMAX
,則流程繼續至方塊2340。否則,流程繼續至決定方塊2312。舉例而言,在一非管理者核心上被喚醒的一sync_state常式將總是繼續至方塊2340,而不需執行顯示在方塊2312-2320之間的任何一邏輯。此乃因為顯示在方塊2312-2320之間的邏輯係被提供給一管理者核心之有條件地同步化附屬家族核心。關於另一例子,如果一晶片管理者核心不具有其他管理者憑證,則其DMAX
等於1。初始時D係
為0,所以一條件同步過程可能依據方塊2312-2320而在晶片之其他核心上被實施。但在完成任何這種同步(假設依據決定方塊2312所述,其並非有條件地過早被終止)且已將D增加1(方塊2316)之後,流程將繼續(經由決定方塊2310)至方塊2340。
現在移到決定方塊2312,如果B>MD
,則流程繼續至決定方塊2314。否則,流程繼續至方塊2340。以另一種方式陳述,如果本地核心目前所計算的混合值B不會涉及或干涉由變數D所界定域之外部資源,則不需要與任何更多的附屬家族核心同步。舉例而言,如果目前計算的混合值B為1,這樣的數值表示只衝擊到位於一既定核心之本地資源,因此不需要與更多的附屬家族核心做同步。在另一例子中,假設本地核心為一好友核心,其具有足夠憑證以關閉或衝擊共通於多重晶片之資源。但亦假設好友之目前計算的混合值B為3,其為一個將只衝擊位於好友之晶片而非好友所管理之其他晶片之本地資源之數值。又假設好友已依據方塊2314、2318以及2320而完成與其本身晶片上之每一個核心之同步,藉以使變數D增加至1(方塊2316),並使新的MD
=M1
=3納入考量(方塊2312)。在這些情況之下,好友並不需要更進一步與其他晶片上之附屬家族核心(例如同伴)同步,因為3或更少之數值之好友之實現無論如何都不會影響其他晶片。
現在移到決定方塊2314,sync_state邏輯2300評估在由D+1所界定之域中是否有任何(更多)尚未同步的附屬家族核心。如果有任何這種核心,則流程繼續至方塊2318。如果不是的話,則
流程首先繼續至方塊2316(於此D被增加),然後至決定方塊2310,於此再次評估目前增加的D之值,如上所述。
現在移到方塊2318,因為一未同步的附屬家族核心已被偵測(方塊2318),所以其可能受目前計算的混合值"B"之實現(方塊2312)所影響,因為其將影響由附屬家族核心所共用之資源,所以sync_state邏輯2300之本地實例在未同步的附屬家族核心上喚醒一sync_state邏輯2300之新的從屬實例。本地實例傳送其目前計算的混合值"B"以作為對於sync_state邏輯2300之從屬實例之一探測值。如由sync_state邏輯2300之邏輯所見的,從屬實例最後將傳回一個不大於原有的"B"(方塊2306)、且不小於附屬家族核心的最大可應用的域-特定狀態MD
(方塊2346)之數值,其為不會干涉在本地與附屬家族核心之間所共用任何資源之最大值。因此,當流程繼續至方塊2320時,sync_state邏輯2300之本地實例採用由從屬實例所傳回之數值作為其本身的"B"值。
到現在為止,已將焦點指向用以有條件地同步化附屬家族核心之sync_state邏輯2300之一部分。現在,將聚焦於方塊2340-2348,其說明用以執行一目標及/或同步化狀態之邏輯,包含與較高級的家族核心(亦即,較高層級管理者)進行有條件地協調。
現在移到方塊2340,本地核心執行其目前混合值"B"至其可接受的程度。尤其,其執行B及OMAX
之最小值,而由本地核心執行最大狀態。吾人可注意到,相關於屬於域管理者之核心,方塊2340
設計這種核心以執行或啟動供其域使用之一複合電源狀態之最小值(方塊2306或2320之"B")與應用於其域之最大受限制電源狀態(亦即OMAX
)之實現。
流程繼續至決定方塊2342,於此sync_state邏輯2300評估本地核心是否為微處理器之BSP。如果是,則沒有更高級的核心需要協調,且流程繼續至方塊2348。如果否,則流程繼續至決定方塊2344。吾人應注意到,在實施例中的sync_state邏輯2300係以對微處理器較不全域(less than a global way)的方式地被應用以控制操作狀態,方塊2342係以預定組之操作狀態相關之"最高應用域管理者"置換"BSP"而改變。舉例而言,如果sync_state邏輯2300僅應用至由CNTR.2534中所說明之由晶片所共用PLL之期望頻率時脈比率之中,則將以"晶片管理者"置換"BSP"。
在決定方塊2344中,sync_state邏輯2300評估sync_state之本地實例是否被一管理者核心所喚醒。如果是,則本地核心根據定義與其管理者同步,所以流程繼續至方塊2348。如果否,則流程繼續至方塊2346。
現在移到方塊2346,sync_state邏輯2300在其管理者核心上喚醒一個sync_state之從屬實例。其將核心的最終混合值B與核心的最大可應用的域-特定狀態MD
之最大值作為最後探測值P而傳送之。在此提供兩個例子以說明探測值P之選擇。
在第一例子中,假設B高於本地核心的最大可自我實行的操作狀態OMAX
(方塊2340)。換言之,在沒有較高層級協調的情況
下,本地核心無法單方面導致B之完全實施。在這樣的情況下,方塊2346表示本地核心對其管理者核心之一請求,要求其可更完全實施B,如果可能的話。吾人將明白依據圖23所提出之邏輯集合,如果該項請求並非與管理者核心本身的目標狀態以及與其他潛在影響的核心之應用狀態相符的話,管理者核心將婉拒此請求。否則,管理者核心將實施此請求並到達其與那些狀態相符的程度,直到其本身的最大可自我實行的狀態OMAX
之最大值(方塊2340)為止。依據方塊2346的敘述,管理者核心亦將以原始核心的B值混合(可能等於原始核心的B值)之數值來請求其本身的更高級核心(如果有的話),這種請求方式將向上且透過階層而進行。依此方式,如果應用條件滿足的話,則sync_state邏輯2300將完全實施本地核心的最終混合值B。
在第二例子中,假設B小於本地核心的最大可自我實行操作狀態OMAX(
方塊2340)。假設沒有影響本地核心所控制資源之外之較高的干涉操作狀態存在,而後在方塊2340中,本地核心可完全實行B。但是如果較高之干涉的操作狀態生效,而本地核心將無法單方面地撤銷干涉操作狀態。在這種情況下,方塊2346表示本地核心對其管理者核心之一請求,要求其撤銷一既存的干涉操作狀態至不再干涉B之完整實現之層級(亦即,本地核心最大可應用的域-特定狀態MD)。吾人將明白到,依據圖23所提出之邏輯集合,管理者核心將遵從該項請求,藉以實行不大於且可能小於本地核心的MD
之狀態。吾人應注意到,方塊2346可能或者請求
管理者只實行B。但如果B<MD
,則這可能使管理者核心執行一種較本地核心完全實行B所需要之更清醒的狀態。因此,使用等於本地核心的最終混合值B與本地核心的最大可應用的域-特定狀態MD
之最大值之探測值是較佳的選擇。因此,吾人將明白sync_state 2302支持一種對於實現休眠狀態及喚起狀態兩者之極簡方法。
現在移到方塊2348,sync_state邏輯2300將一數值傳回至呼叫或執行等於核心的最終混合值B與核心的最大可應用域-特定狀態MD
之最大值之程序。如以方塊2346作說明,吾人注意到方塊2348可能或者剛好傳回B之數值。但如果B<MD
,則這可能使一被喚醒的管理者核心(方塊2318)執行一種比本身所需要更清醒的狀態。因此,傳回核心的最終混合值B與核心的最大可應用的域-特定狀態MD
之最大值是較佳的選擇。再者,吾人將明白依此方式,sync_state 2302支持一種對於實現休眠狀態與喚起狀態兩者之極簡方法。
在另一實施例中,一個或多個額外決定方塊係介設於方塊2344與2346之間,以更進一步設定方塊2346對從屬sync_state常式實施之條件。舉例而言,在一個適合條件下,如果B>OMAX
,則流程將繼續至方塊2346。在另一個適合條件之下,如果只有於一較高域層次可撤銷之一干涉操作狀態目前正被應用至本地核心,則流程將繼續至方塊2346。如果所應用之這兩個替代條件都不是,則流程將繼續至方塊2346。依此方式,sync_state 2302將
支持一種對於實現喚醒狀態更簡捷的方法。然而,吾人應該觀察到這個替代實施例假設本地核心可偵測一干涉操作狀態是否正被應用。在本地核心不一定能偵測一干涉操作狀態之存在的一實施例中,則圖23所描繪出之較少條件的實施方法是較佳的。
吾人亦將明白在圖23中,當需要實行一目標較深的操作狀態(或其之較淺型式)時,複合操作狀態發現過程藉由使用一種依最低至最高(或最靠近至最遠離的同屬性群組)的順序以漸進地橫越核心之尋訪順序,來尋訪最高層級域(其包含其巢狀域)之核心(也不需要所有的核心),而這些核心的共用資源係受目標操作狀態所影響。又,當需要執行一較淺的操作狀態時,複合操作狀態發現過程只需接續的尋訪較高的管理者即可。此外,在上述說明的替代實施例中,這種尋訪的延伸是要撤銷目前實施的干涉操作狀態(如果所需要的話)。
因此,在將一較早的示範實例應用至圖23中,2或3之目標受限制電源狀態將只觸發應用晶片中之核心之複合電源狀態發現過程。4或5之目標受限制電源狀態將只觸發應用封裝體中之核心之複合電源狀態發現過程。
圖23可更進一步以一種域-特定(除了核心-特定以外)之方式敘述其特徵。繼續上述之例示圖例,一晶片可具有2與3之應用域-特定電源狀態。舉例而言,如果晶片管理者核心經由一本地或外部啟始的複合電源狀態發現過程之一部分而發現其晶片本身之複合電源狀態只有1時,因為1並非是可應用域-特定電源狀態,
所以晶片管理者核心將不會實施它。如果晶片管理者核心發現其晶片本身之複合電源狀態為5(或晶片之複合電源狀態與一節點地連接核心的探測電源狀態數值之混合狀態等於5)作為一替代例子,以及如果晶片管理者核心並不具有任何較高的管理者憑證,則(假設其沒有這樣做)晶片管理者核心將實施或啟動3之電源狀態之實施,其係為3(晶片之最大應用域-特定電源狀態)與5(晶片之複合電源狀態或其之混合狀態)之最小值。再者,吾人可注意到於此例子中,晶片管理者核心將繼續為其晶片實施或啟動3之電源狀態之實施,而不管任何應用於一較高域(該核心為較高域之一部分)之實際或局部的複合電源狀態(例如,2或4或5)為何。
繼續上述之圖例,於此晶片管理者發現晶片複合電源狀態或其之混合狀態為5,晶片管理者將與其同伴著手一複合電源狀態發現過程,其將需要包含下一個較高層級域(例如,封裝體或整個處理器)之尋訪,此複合電源狀態發現過程係獨立於晶片管理者的中間實現(如果有的話)與晶片之為3的電源狀態之外。這是因為5大於3(晶片之最大應用域-特定電源狀態),所以一較高受限制電源狀態之實施需要取決於應用於一個或多個較高級域之電源狀態。此外,下一個較高層級域特有的一較高受限制電源狀態之實施可能只藉由該域之管理者而被啟動及/或被實現(例如,多封裝體處理器之封裝體管理者或單一封裝體處理器之BSP)。值得提醒的是,晶片管理者可能亦同時保持相關的封裝體管理者或
BSP憑證。
因此,在上述例子中,在發現過程中之某些點,晶片管理者核心將與一同伴交換其晶片複合電源狀態(或其之混合)。在某些條件之下,這個發現過程將較高域(例如封裝體)之一至少局部的複合電源狀態(其小於2)傳回至晶片管理者核心。又,這將不會導致3之電源狀態之撤銷,其為晶片管理者核心已為晶片而實施者。在其他條件之下,此種發現過程將對封裝體或微處理器產生一複合電源狀態(例如4或更多),其對應至4或更多之受限制電源狀態。如果是,則該域之管理者(例如封裝體管理者)將實施一較高受限制的電源狀態,其係為較高層級域之複合電源狀態(例如4或5)與應用於較高層級域之最大受限制的電源狀態(於此是5)之最小值。如果所應用的發現過程正測試一更高級的受限制電源狀態,則此種附有條件的域-特定電源-狀態實現過程將延伸至更高級的域層次(如果有的話)。
如上述所述,圖23顯示一種可操作以合併域-相關(domain-dependent)受限制電源狀態及相關臨界值之階層式域-特定受限制的電源狀態管理協調系統。據此,其適用於對於個別核心及群組核心之電源狀態管理之微調式域-特定分散方法(fine-tuned domain-specific decentralized approach)。
吾人注意到圖23顯示以一種分散式分配方式提供轉變成更清醒的狀態之電源狀態協調邏輯。然而,吾人將明白某些電源狀態實施例包含數個電源狀態,在缺乏藉由晶片組或其他核心之先前
電源-狀態-撤銷動作之下,一特定核心可能無法從此等電源狀態被喚起。舉例而言,在上述C-狀態結構中,2或更高之C-狀態可能與移除匯流排時脈相關,其可能使一既定核心不能響應透過系統匯流排所傳送之一指令,以轉變成為一更清醒的狀態。電源或時脈源可選擇性地從一核心或一晶片被移除之其他微處理器配置亦被考慮。圖5說明覺醒邏輯之一實施例來適應這些情況,其藉由喚醒所有核心以因應STPCLK之解除設置。然而,覺醒邏輯之更多選擇性實施例可被考慮。在一個例子中,考慮由系統軟體(例如作業系統或BIOS)所實施之覺醒邏輯,其中系統軟體將首先發佈一喚起或覺醒請求給一特定核心,且如果在一段期望時間間隔之內並未接收一響應或核心並不遵從的話,則邏輯將視需要遞迴地發佈喚起或覺醒請求給後續較高的管理者及晶片組(可能是),直到接收到一期望的響應或偵測到適當的遵從為止。這種由軟體系統所執行的覺醒邏輯將與圖23之電源狀態協調邏輯進行協調,並以一種優先分散方式(於此每個目標的核心藉由使用其本身的微碼開始轉變)以轉變成更清醒的狀態,以到達核心可操作以這樣做的程度,以及當禁止核心這樣做時,以一種中心協調的方式完成。覺醒邏輯之實施例僅是用以選擇性地喚起無法喚起它們自己核心之數個可能的實施例之說明與例示。
VI.延伸實施例及應用
雖然已說明具有一特定數目核心106之實施例,但可考慮具有其他數目核心106之其他實施例。舉例而言,雖然圖10、13以
及17所說明之微碼208被設計用以執行在八個核心之間的分配式電源管理,但微碼208藉由包含檢查核心106之存在或缺席(presence or absence),而在一具有更少核心106之系統中適當地發生效用,例如相關於申請案序號61/426,470之段落所說明的,前述申請案之申請日為2010年12月22日,名稱為"動態多核心微處理器配置(Dynamic Multi-Core Microprocessor Configuration)",及其同時申請的非臨時申請案(CNTR.2533),其揭露書係附屬於此。亦即,如果一核心106是缺席的,則微碼208不會與缺席核心106交換C-狀態資訊,並有效地假設缺席核心之C-狀態是最高的可能C-狀態(例如5之C-狀態)。因此,為了達到使製造能力有效率的目的,核心106可能被製造成具有微碼208,其被設計可執行在八個核心間的分配式電源管理,縱使核心106可能包含在具有更少核心106之系統中。再者,考慮到此系統包含八個以上核心之實施例,且於此所說明的微碼係被延伸以利用一種類似於已經說明的那些方式與附加核心106進行通訊。經由前述的描述,圖9及11之系統可被擴增以包含具有八個同伴之16個核心106;而圖12、14及15之系統可被擴增以包含具有四個好友之16個核心106,類似於圖9及11之系統在四個同伴之間同步化C-狀態的方法,且圖16之系統可藉由具有16個夥伴(兩個晶片且每個晶片具有八個核心、或四個晶片且每個晶片具有四個核心)而被擴增以包含16個核心106,而圖4、10、13以及17之方法之相關特徵亦可獲得整合。
獨立實現不同等級之電源狀態(例如,C-狀態、P-狀態、需求的VID、需求的頻率比率,等)之協調之實施例亦被考量在內。舉例而言,每個核心可為每個等級之電源狀態(例如,各別的應用VID、頻率比率、C-狀態以及P-狀態)而具有不同的應用電源狀態,具有應用至不同特定域之限制,以及具有用以計算混合狀態並發現複合狀態(例如,C-狀態對所請求VID最大值的之最小值)之不同極值。不同的階層式協調系統(例如,不同的域深度、不同的域成員(domain constituencies)、不同的指定域管理者及/或不同的同屬性群組協調模型)可能為不同等級之電源狀態而建立。此外,某些電源狀態可能只需要頂多與一域(例如晶片)上之其他核心協調,此域只包含微處理器上之所有核心之子集。對於這種電源狀態,所考慮的階層式協調系統可以是只有節點地連結該域、與在該域之內的核心進行協調、以及發現應用於該域或在該域之內的複合電源狀態。
一般而言,實施利中顯示的所有操作狀態係依一種漸進地上升或下降,而且是依據嚴格且線性順序之基礎。但是,操作狀態係排成層列(tiered)且依順序沿著每個層(tier)以上升或下降方式可訂定之其他實施例(數層的順序獨立於其他層之實施例亦包含在內)亦被本發明所考量。舉例而言,一預定組之電源狀態可不同的層級A.B,A.B.C,等之複合形式敘述其特徵,於此每一層A、B、C係關於一不同的特徵或特徵之等級。舉例而言,一電源狀態可能以C.P或P.C之複合形式敘述其特徵,於此P表示一種
ACPI P-狀態,而C表示一種ACPI C-狀態。再者,受限制電源狀態之等級可能由混合定義電源狀態之特定組成(例如A或B或C)之數值所定義,而受限制電源狀態之另一等級可由混合定義電源狀態之另一組成之數值所定義。此外,在任何給定的受限制電源狀態之層級內,每一層對應於混合定義電源狀態之其中一個組成之數值(例如C.P),除施加至此層之限制以外,對一既定核心而言,另一種組成之數值(例如C.P中之P)可能不受限制、或受到不同等級之限制。舉例而言,一個具有C.P之目標電源狀態之核心可能受到關於其目標電源狀態之C及P部分之實施時各自的限制及協調需求,於此P表示其P-狀態,而C表示其需求的C-狀態。在複合電源狀態實施例中,對計算極值之一既定核心而言,任何兩個電源狀態之一"極值"可能表示複合電源狀態之組成部分之極值之一複合狀態、或複合電源狀態之少於所有組成部分之極值之一複合狀態,與以別的方法選擇的或確定的數值(而對其他組成部分而言)。
又,在一系統中之多重核心106執行分配式分散式電源管理以明確地執行功率評價(power credit)功能性之實施例亦被考量在內,如說明於美國申請案13/157,436(CNTR.2517)中,申請日為2011年6月10日,其全部於此併入作參考,但是此實施例使用核心間通訊配線112、晶片間通訊配線118以及封裝體間通訊配線1133,而非使用如CNTR.2517所說明的一共用的記憶體區域。這種實施例之優點為其對於系統韌體(例如BIOS)及系統軟體是
透明的,且並不需要依賴系統韌體或軟體以提供一共用的記憶體區域,因為微處理器製造商可能未必具有控制系統韌體或軟體之發佈能力,所以其是受歡迎的。
又,除了一探測值以外亦傳送其他值之同步邏輯實施例亦考量在內。於一實施例中,相關於任何其他同時操作發現過程,一同步常式傳送可區別地確認發現過程之一數值(其為發現過程之一部分)。在另一實施例中,同步常式傳送一數值,藉由此數值可識別同步或尚未同步的核心。舉例而言,一種八核心實施例可能遞送一8位元值,於此每個位元代表八核心處理器之一特定核心,且每個位元表示核心是否已被同步或是仍為該瞬間發現過程之一部分。同步常式亦可能傳送確認開始瞬間發現過程之核心之一數值。
促進執行核心之依序尋訪同步化發現過程的額外實施例亦被考量。在一個例子中,每個核心儲存確認成員之位元遮蔽之同屬性群組(它係為其之一部分)。舉例而言,在一種利用三個層級深的階層式協調構造之八核心實施例中,每個核心儲存三個8位元"同屬性"遮蔽、一"最接近"同屬性遮蔽、一第二層同屬性遮蔽以及一頂端層同屬性遮蔽,於此每個遮蔽之位元值確認屬於以遮蔽表示之同屬性群組中的核心家族(如果有的話)。在另一例子中,每個核心儲存一地圖、一Gödel號碼或其之組合,由其可正確地及唯一地決定核心之節點階層,包含確認每個域管理者。在又另一種例子中,此核心儲存確認共用資源(例如,電壓源、時脈源以
及快取),以及它們所屬且共用之特定核心或對應域之資訊。
又,雖然此說明書之焦點主要放在電源狀態管理,但吾人將明白上述階層式協調系統之各種實施例可能被應用以協調其他型式之操作與限制活動,而非只是電源狀態或電源相關的狀態資訊。舉例而言,在某些實施例中,上述各種階層式協調系統係利用與複製在每個核心上之分散邏輯協調以用於動態發現,譬如在CNTR.2533中之一多核心微處理器配置,例如如上所述。
此外,吾人應注意到除非有特別聲明,否則本發明並不需要使用上述任何一個階層式協調系統以執行預定的限制活動。事實上,除非另有某種程度之特別規定,否則本發明適合於在核心間的純粹對等協調系統。然而,如本說明書可明顯看出,一種階層式協調系統之使用可提供數個優點,尤其是在依賴旁路通訊時,因為於此架構下,微處理器之旁路通訊線之構造並不允許一完全相等的對等協調系統。
如可能從上文觀察到,相較於例如上述包含集中化非核心硬體協調邏輯(HCL)之Naveh之解決方法,將電源管理功能同等分配在於此所說明的核心106間的分散實施例,好處是不需要額外非核心邏輯。雖然非核心邏輯可被包含在一晶片104裡,但於所說明的實施例中,所需要的為實施分散分配式電源管理機制是:硬體及微碼係與多核心-每晶片(multi-core-per-die)實施例中之核心間通訊配線112、多晶片實施例中之晶片間通訊配線118以及多封裝體實施例中之封裝體間通訊配線1133在一起地、完全地
實體上及邏輯地在它們本身之核心106之內。因為於此所說明之執行分配在多重處理核心106間的電源管理之分散實施例之結果,核心106可能位於各別晶片或各別封裝體上。這潛在地降低晶片尺寸並改善良率,提供更多配置彈性,以及提供一高層級之系統中核心數之可調(尺寸之)能力。
在又其他實施例中,核心106在各種實施樣態方面與圖2之代表實施例不同,並提供一種取代或附加之高度平行的構造,例如應用於一圖形處理單元(GPU)之構造,而於此所說明的為各種操作(例如電源狀態管理、核心配置發現、以及核心重新規劃)所使用之協調系統亦可被應用。
雖然於此已說明本發明之各種實施例,但吾人應理解到已經由舉例而非限制地提出它們。熟習相關電腦技藝者將明白在不背離本發明之範疇之下,可作出各種在形式及細節方面的改變。舉例而言,軟體可允許於此所說明之設備及方法之譬如功能、製造、模擬試驗、模擬、說明及/或測試。這可經由使用一般程式設計語言(例如C、C++),包含Verilog HDL、VHDL等等之硬體記述語言(HDL),或其他可利用的程式來達成。這種軟體可被配置在任何已知的電腦可用媒體中,例如半導體、磁碟或光碟(例如,CD-ROM、DVD-ROM等)。於此所說明之設備及方法之實施例可能包含在例如一微處理器核心之半導體智慧財產權核心(例如,具體化在HDL中),並改變成在積體電路之產品中的硬體。此外,於此所說明的設備及方法可能具體化為硬體及軟體之組合。因
此,本發明不應被任何一個於此所說明的例示實施例所限制,但應該只依據以下申請專利範圍及它們的等效設計而被界定。具體言之,本發明可能在可能使用於通用電腦之微處理器裝置之內被實現。最後,熟習本項技藝者應明白他們可輕易地使用所揭露的概念及具體的實施例作為用以設計或修改其他構造之基礎,用以在不背離如由以下申請專利範圍所界定之本發明之範疇之下完成本發明之相同目的。
P、P1-P8‧‧‧接腳
100、900、1100、1200、1400、1500、1600‧‧‧電腦系統
102、902、1202、1402、1502‧‧‧多核心微處理器/封裝體
104‧‧‧晶片
106‧‧‧核心
108‧‧‧接觸墊
112‧‧‧核心間通訊配線
114‧‧‧晶片組
116‧‧‧匯流排
118‧‧‧通訊配線
202‧‧‧指令快取
204‧‧‧指令譯碼器
206‧‧‧微序列器
207‧‧‧微碼記憶體
208‧‧‧微碼
212‧‧‧註冊別名表(RAT)
214‧‧‧保留站
216‧‧‧執行單元
218‧‧‧引退單元
222‧‧‧資料快取
224‧‧‧匯流排介面單元(BIU)
226‧‧‧鎖相迴路(PLL)
228‧‧‧BSP指示器
232‧‧‧管理者指示器
234、236‧‧‧CSR
238‧‧‧特別模組暫存器(MSR)
242‧‧‧核心時脈信號
1102‧‧‧四核心微處理器
1133‧‧‧封裝體間通訊配線
1201‧‧‧第二封裝體
1504‧‧‧晶片
1602‧‧‧多核心微處理器
1802、1902、2002‧‧‧雙核心微處理器
2202‧‧‧八核心處理器
2300‧‧‧邏輯
2302‧‧‧sync_state
圖1係為顯示一電腦系統之一個實施例之方塊圖,電腦系統執行分配在一雙晶片四核心微處理器之多重處理核心之間之分散式電源管理。
圖2係為詳細顯示圖1之代表的其中一個核心之方塊圖。
圖3係為顯示執行分配在多核心微處理器之多重處理核心之間的分散式電源管理之一系統之一電源狀態管理常式之一個實施例之藉由一核心之操作之流程圖。
圖4係為顯示整合至圖3之系統之複合電源狀態發現過程之一電源狀態同步常式之一個實施例之藉由一核心之操作之流程圖。
圖5係為顯示一喚起與重新開始常式以因應從一休眠狀態將其喚醒之一事件之一個實施例之藉由一核心之操作之流程圖。
圖6係為顯示一核心間中斷處理常式以因應接收一核心間中
斷之藉由一核心之操作之流程圖。
圖7係為顯示依據圖3至6之說明之一複合電源狀態發現過程之操作之一例子之流程圖。
圖8係為顯示依據圖3至6之說明之一複合電源狀態發現過程之操作之另一個例子之流程圖。
圖9係為顯示一電腦系統之另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器(其在單一封裝體上具有四個雙核心晶片)之多重處理核心之間之分散式電源管理。
圖10係為顯示整合至圖9之系統之一複合電源狀態發現過程之一電源狀態同步常式之一個實施例之藉由一核心之操作之流程圖。
圖11係為顯示一電腦系統之另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器之多重處理核心之間之分散式電源管理,八核心微處理器具有四個雙核心晶片,其使用圖10之電源狀態同步常式而分配在兩個封裝體上。
圖12係為顯示一電腦系統之另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器之多重處理核心之間的分散式電源管理,依據一較深的階層式協調系統,八核心微處理器像圖11具有四個雙核心晶片,但其核心不像圖11而是彼此相互關連的。
圖13係為顯示整合至圖12之系統之一複合電源狀態發現過程之一電源狀態同步常式之一個實施例之藉由一核心之操作之流程圖。
圖14係為顯示一電腦系統之另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器之多重處理核心之間的分散式電源管理,依據一較深的階層式協調系統,八核心微處理器像圖9在單一封裝體上具有四個雙核心晶片,但其核心不像圖9而是彼此相互關連的。
圖15係為顯示一電腦系統之另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器(其在單一封裝體上具有兩個四核心晶片)之多重處理核心之間的分散式電源管理。
圖16係為顯示一電腦系統之又另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器之多重處理核心之間的分散式電源管理。
圖17係為顯示整合至圖16之系統之一複合電源狀態發現過程之一電源狀態同步常式之一個實施例之藉由一核心之操作之流程圖。
圖18係為顯示一電腦系統之又另一實施例之方塊圖,電腦系統執行分配在一種雙核心、單一晶片微處理器之核心之間的分散式電源管理。
圖19係為顯示一電腦系統之又另一實施例之方塊圖,電腦系統執行分配在具有兩個單核心晶片之一種雙核心微處理器之核心之間的分散式電源管理。
圖20係為顯示一電腦系統之又另一實施例之方塊圖,電腦系統執行分配在具有兩個單核心、單一晶片封裝體之一雙核心微處
理器之核心之間的分散式電源管理。
圖21係為顯示一電腦系統之又另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器之核心之間的分散式電源管理,八核心微處理器具有兩個封裝體,其中一個具有三個雙核心晶片,而其另一個具有單一雙核心晶片。
圖22係為顯示一電腦系統之又另一實施例之方塊圖,電腦系統執行分配在一種八核心微處理器之核心之間的分散式電源管理,八核心微處理器類似於圖21,但具有一較深的階層式協調系統。
圖23係為顯示在一核心上實現之操作狀態同步邏輯之另一實施例之流程圖,其支持一種域區別的(domain-differentiated)操作狀態層次協調系統且對於不同的域深度是可計量的。
P1-P4‧‧‧接腳
100‧‧‧電腦系統
102‧‧‧多核心微處理器
104‧‧‧晶片
106‧‧‧核心
108‧‧‧接觸墊
112‧‧‧核心間通訊配線
114‧‧‧晶片組
116‧‧‧匯流排
Claims (20)
- 一種多核心處理器,包含:多個啟動的實體處理核心;一可配置的資源,由兩個以上的該等核心共用,其中該共用資源之組態影響共享該資源之該核心利用其能夠運作之電源、速度或效率;對每個核心而言,內部核心電源狀態管理邏輯設定該核心的組態,用以參與在該核心之間被實現之一種分散式核心間電源狀態發現過程,而無須集中式非核心邏輯之協助;其中,該內部核心電源管理邏輯係被複製於每個核心中;其中,如果該核心為了設定該共用資源的組態之目的而被指定為一管理者核心,且該複合目標電源狀態經由該分散式核心間電源狀態發現過程而被發現,則該內部核心電源管理邏輯設定該核心的組態以驅使設定該共用資源的組態之一複合目標電源狀態之實現;其中,對該共用資源而言,該複合目標電源狀態係為一種最節能型的電源狀態,其將不會干涉共享該資源之每個核心之任何對應的目標電源狀態。
- 如申請專利範圍第1項所述之多核心處理器,更包含多條旁路通訊配線,其不同於連接該些核心至一晶片組之一系統匯流排,並在該些核心之間,且其中多個分散式核心間電源狀態發現過程係透過該些旁路通訊配線,而攜帶有在該些核心間被交 換之多個電源狀態值。
- 如申請專利範圍第1項所述之多核心處理器,其中:該些目標電源狀態係為C-狀態;該共用資源係由所有核心所共用並連接至一晶片組之一系統匯流排;以及該管理者核心獲得與該晶片組協調之獨占權,以實行影響該匯流排操作之一C-狀態。
- 如申請專利範圍第1項所述之多核心處理器,其中:該共用資源係由該些核心之至少某些所共用之一電壓源;一目標電源狀態係以一需求的電壓改變需求信號表示;以及該管理者核心獨占多個電壓改變需求信號,其被送至該電壓源以要求被提供至共享該電壓源之該些核心之一電壓位準的一改變。
- 如申請專利範圍第1項所述之多核心處理器,其中:該共用資源係由該些核心之至少某些所共用之一時脈源;一目標電源狀態係以一需求的時脈比率信號表示;以及該管理者核心獨占多個時脈比率需求信號,其被送至該時脈源以導致藉由該時脈源提供給共享該時脈源之該些核心之時脈頻率的一改變。
- 如申請專利範圍第1項所述之多核心處理器,其中:共享該資源之該些核心之只有單一一個係為了驅使該複合目標電源狀態之實現的目的而被指定為該管理者核心;以及 該些核心包含可程式化邏輯,其經由系統軟體允許其被設定組態,用以為了設定該共用資源組態之目的增加或移除一管理者指定。
- 如申請專利範圍第6項所述之多核心處理器,其中該內部核心電源管理邏輯係被設計成用以評估該可程式化邏輯,用以決定其核心是否為了驅該複合目標電源狀態之實現的目的而被標示為管理者。
- 如申請專利範圍第1項所述之多核心處理器,其中一目標電源狀態係多個預定電源狀態之其中一個,該電源狀態管理邏輯為其被設計成用以驅使一實現,其中該多個預定電源狀態包含於該核心之內部影響一未共用資源之至少一不受限制的電源狀態,且每個核心之該內部核心電源管理邏輯係被設計成用以在沒有核心間協調的情況下實施一本地核心目標電源狀態,如果其係為一不受限制的電源狀態的話。
- 如申請專利範圍第1項所述之多核心處理器,其中該電源狀態管理邏輯設定每個核心的組態以實施該分散式核心間電源狀態發現過程,以因應接收轉變成為將設定該共用資源的組態之一目標電源狀態之一需求。
- 如申請專利範圍第1項所述之多核心處理器,其中該電源狀態管理進輯設定每個核心的組態以參與一種外部實施的分散式核心間電源狀態發現過程。
- 如申請專利範圍第1項所述之多核心處理器,其中一分散式 核心間電源狀態發現過程包含相同的核心間電源狀態發現微碼之多個同步化實例,其參與交換多個電源狀態之過程而在各該核心被執行。
- 如申請專利範圍第11項所述之多核心處理器,其中一既定核心與生俱來的核心間電源狀態發現微碼之每個實例與另一個核心交換一電源狀態;且其中該本地實例按照下述值之至少兩個計算一混合電源狀態:該本地核心目標電源狀態,如果有的話;由一實施過程所接收之一探測電源狀態數值;以及由該核心間電源狀態發現微碼之一從屬實施的實例傳回之一電源狀態值。
- 如申請專利範圍第11項所述之多核心處理器,其中該分散式核心間電源狀態發現過程包含該核心間電源狀態發現微碼之多個實例,其在經由一條互相連接核心之階層式路徑共享該共用資源之其他核心上,遞歸地實施該核心間電源狀態發現微碼之從屬實例且與其同步。
- 一種供一多核心處理器用之管理電源狀態之分散方法,該多核心處理器具有多個啟動之實體核心以及由該些核心之至少某些所共用之一資源,該方法包含:一核心接收影響在本身及至少一其他核心之間所共用的一可配置的資源之一本地核心目標電源狀態,其中該本地核心目標電源狀態定義將影響共享該資源之該些核心利用其能夠運作之電源、速度或效率之該資源之一組態; 該核心參與一核心間電源狀態發現過程,其包含不透過任何集中式非核心邏輯而與共享該資源之至少一其他核心之電源狀態之一交換;以及如果該核心係為了設定該共用資源的組態之目的而被指定為一管理者核心,且該複合目標電源狀態係經由該分散式核心間電源狀態發現過程而被發現,則該核心為了設定該共用資源的組態的目的驅使一複合目標電源狀態之實現;其中,對該共用資源而言,該複合目標電源狀態係為一種最節能型的電源狀態,其將不會干涉共享該資源之每個核心之任何對應的目標電源狀態。
- 如申請專利範圍第14項所述之方法,更包含經由在該些核心之間的多條旁路通訊配線參與該核心間電源狀態發現過程,其中該些旁路通訊配線係與將該些核心連接至一晶片組之一系統匯流排不同,且其中,在該些核心之間交換之多個電源狀態係透過該些旁路通訊配線而交換。
- 如申請專利範圍第14項所述之方法,其中:該些目標電源狀態係為C-狀態;該共用資源係由所有核心所共用並連接至一晶片組之一系統匯流排;以及該管理者核心獲得與該晶片組協調之獨占權以實行影響該匯流排之操作之一C-狀態。
- 如申請專利範圍第14項所述之方法,其中: 該共用資源係由該些核心之至少某些所共用之一電壓源;一目標電源狀態係以一需求的電壓改變需求信號表示;以及該管理者核心獨占多個電壓改變需求信號,其被送至該電壓源,其要求被提供至共享該電壓源之該些核心之一電壓位準的一改變。
- 如申請專利範圍第14項所述之方法,其中:該共用資源係為由該些核心之至少某些所共用之一時脈源;一目標電源狀態係以一需求的時脈比率信號表示;以及該管理者核心獨占多個時脈比率需求信號,其被送至該時脈源,其將導致藉由該時脈源提供給共享該時脈源之該些核心之時脈頻率的一改變。
- 如申請專利範圍第14項所述之方法,更包含:經由參與由另一個核心所實施的一核心間電源狀態發現過程,該管理者核心發現並驅使用以設定該共用資源的組態之一複合目標電源狀態之實現。
- 在一多核心處理器之一實體核心之一電腦可讀取的儲存媒體中存有供一多核心處理器用之管理電源狀態之程序,該程序包含:接收設定由兩個以上的該些核心所共用的一可配置資源的組態之一需求,其中該共用資源之多個組態影響共享該資源之該些核心利用其能夠運作之該電源、速度或效率;參與在該些核心之間被實現之一種分散式核心間電源狀態發 現過程,而無須集中式非核心邏輯之協助;以及如果該核心係為了設定該共用資源的組態之目的而被指定為一管理者核心,且該複合目標電源狀態係經由該分散式核心間電源狀態發現過程而被發現,則設定該核心的組態以為了設定該共用資源的組態驅使一複合目標電源狀態之實現;其中,對於該共用資源而言,該複合目標電源狀態係為一種最節能型的電源狀態,其將不會干涉共享該資源之每個核心之任何對應的目標電源狀態。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201061426470P | 2010-12-22 | 2010-12-22 | |
US13/299,122 US8635476B2 (en) | 2010-12-22 | 2011-11-17 | Decentralized power management distributed among multiple processor cores |
US13/299,059 US8782451B2 (en) | 2010-12-22 | 2011-11-17 | Power state synchronization in a multi-core processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201245948A TW201245948A (en) | 2012-11-16 |
TWI450084B true TWI450084B (zh) | 2014-08-21 |
Family
ID=51332550
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100148084A TWI450084B (zh) | 2010-12-22 | 2011-12-22 | 配置在多重處理器核心之間之分散式電源管理 |
TW103115432A TWI531896B (zh) | 2010-12-22 | 2011-12-22 | 多核心處理器的電源狀態同步化 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103115432A TWI531896B (zh) | 2010-12-22 | 2011-12-22 | 多核心處理器的電源狀態同步化 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN104156055B (zh) |
TW (2) | TWI450084B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI450084B (zh) * | 2010-12-22 | 2014-08-21 | Via Tech Inc | 配置在多重處理器核心之間之分散式電源管理 |
US10234932B2 (en) * | 2015-07-22 | 2019-03-19 | Futurewei Technologies, Inc. | Method and apparatus for a multiple-processor system |
CN106844258B (zh) * | 2015-12-03 | 2019-09-20 | 华为技术有限公司 | 热添加CPU使能x2APIC的方法和服务器*** |
US20170308153A1 (en) * | 2016-04-25 | 2017-10-26 | Mediatek Inc. | Power delivery system for multicore processor chip |
US20220276847A1 (en) * | 2019-08-22 | 2022-09-01 | Google Llc | Compilation for synchronous processor |
CN110716756B (zh) * | 2019-10-15 | 2023-03-14 | 上海兆芯集成电路有限公司 | 多晶粒的多核计算机平台及其开机方法 |
CN111506154B (zh) * | 2020-04-14 | 2021-05-25 | 深圳比特微电子科技有限公司 | 计算机提高算力和降低功耗算力比的方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257679B2 (en) * | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Sharing monitored cache lines across multiple cores |
US20070266262A1 (en) * | 2006-05-09 | 2007-11-15 | Edward Burton | Current detection for microelectronic devices using source-switched sensors |
TW201030506A (en) * | 2008-12-23 | 2010-08-16 | Intel Corp | Method and apparatus of power management of processor |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665802B1 (en) * | 2000-02-29 | 2003-12-16 | Infineon Technologies North America Corp. | Power management and control for a microcontroller |
US6968467B2 (en) * | 2000-10-26 | 2005-11-22 | Matsushita Electric Industrial Co., Ltd. | Decentralized power management system for integrated circuit using local power management units that generate control signals based on common data |
US7337334B2 (en) * | 2003-02-14 | 2008-02-26 | International Business Machines Corporation | Network processor power management |
US7966511B2 (en) * | 2004-07-27 | 2011-06-21 | Intel Corporation | Power management coordination in multi-core processors |
CN1752893A (zh) * | 2004-09-24 | 2006-03-29 | 乐金电子(惠州)有限公司 | 移动通信终端机的电源管理方法 |
TWI370691B (en) * | 2005-01-19 | 2012-08-11 | Via Tech Inc | A method and system for hierarchical search with cache |
KR100663864B1 (ko) * | 2005-06-16 | 2007-01-03 | 엘지전자 주식회사 | 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법 |
US7685441B2 (en) * | 2006-05-12 | 2010-03-23 | Intel Corporation | Power control unit with digitally supplied system parameters |
TWI450084B (zh) * | 2010-12-22 | 2014-08-21 | Via Tech Inc | 配置在多重處理器核心之間之分散式電源管理 |
-
2011
- 2011-12-22 TW TW100148084A patent/TWI450084B/zh active
- 2011-12-22 CN CN201410408615.8A patent/CN104156055B/zh active Active
- 2011-12-22 TW TW103115432A patent/TWI531896B/zh active
- 2011-12-22 CN CN201410214249.2A patent/CN103955265B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257679B2 (en) * | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Sharing monitored cache lines across multiple cores |
US20070266262A1 (en) * | 2006-05-09 | 2007-11-15 | Edward Burton | Current detection for microelectronic devices using source-switched sensors |
TW201030506A (en) * | 2008-12-23 | 2010-08-16 | Intel Corp | Method and apparatus of power management of processor |
Also Published As
Publication number | Publication date |
---|---|
CN103955265B (zh) | 2017-04-12 |
CN104156055A (zh) | 2014-11-19 |
CN103955265A (zh) | 2014-07-30 |
TWI531896B (zh) | 2016-05-01 |
CN104156055B (zh) | 2017-10-13 |
TW201430553A (zh) | 2014-08-01 |
TW201245948A (en) | 2012-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10409347B2 (en) | Domain-differentiated power state coordination system | |
US9009512B2 (en) | Power state synchronization in a multi-core processor | |
US8635476B2 (en) | Decentralized power management distributed among multiple processor cores | |
TWI450084B (zh) | 配置在多重處理器核心之間之分散式電源管理 | |
TWI439853B (zh) | 多核心微處理器之共享電源的分散式管理 | |
US20110296222A1 (en) | Dynamic and idle power reduction sequence using recombinant clock and power gating | |
US11782858B2 (en) | Seamlessly integrated microcontroller chip | |
TW201250595A (en) | Super operating system for a heterogeneous computer system | |
US20220091657A1 (en) | Mechanism for performing distributed power management of a multi-gpu system | |
WO2015135468A1 (en) | Systems and methods for messaging-based fine granularity system-on-a-chip power gating | |
TWI328159B (en) | Computer system and power saving method thereof | |
CN112771470A (zh) | 用于对多个知识产权主体和共享电源轨进行共同功率控制的***、装置及方法 | |
Raab et al. | Low power design of the X-GOLD® SDR 20 baseband processor | |
Arakawa | Multicore SoC for embedded systems | |
CN116070571A (zh) | 一种soc芯片和电子产品 |