国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      配置在多重處理器核心之間的分散式電源管理的制作方法

      文檔序號:6547038閱讀:204來源:國知局
      配置在多重處理器核心之間的分散式電源管理的制作方法
      【專利摘要】一種多核心處理器提供由兩個以上的核心所共用的可配置的資源,其中資源的組態(tài)影響共享資源的核心利用其能夠運作的電源、速度或效率。內部核心電源狀態(tài)管理邏輯設定每個核心的組態(tài)以參與一分散式核心間電源狀態(tài)發(fā)現(xiàn)過程,用以發(fā)現(xiàn)對于共用資源而言是一種最受限制的或最節(jié)能型的狀態(tài)的復合目標電源狀態(tài),其將不會干涉共享資源的每個核心的任何一個相對應的目標電源狀態(tài)。內部核心電源狀態(tài)管理邏輯決定核心是否為被授權以設定資源的組態(tài)的一管理者核心,且若有,設定在發(fā)現(xiàn)的復合電源狀態(tài)中的該資源的組態(tài)。分散式電源狀態(tài)發(fā)現(xiàn)過程是在旁路的非系統(tǒng)總線線上的核心之間被實現(xiàn),而無須集中式非核心邏輯的協(xié)助。
      【專利說明】配置在多重處理器核心之間的分散式電源管理
      [0001]本申請為申請日為2011年12月22日、申請?zhí)枮?01110436098.1的發(fā)明名稱為
      “配置在多重處理器核心之間的分散式電源管理”的申請案的分案申請。
      【技術領域】
      [0002]本發(fā)明涉及多核心微處理器設計的領域,特別是涉及多核心的特定操作及多核心處理器的多核心域(domain)的管理與實現(xiàn)。
      【背景技術】
      [0003]現(xiàn)代微處理器減少它們的電源消耗的主要方式,是減少微處理器操作時的頻率和/或電壓。此外,在某些實例中,微處理器可能允許時鐘信號對于其電路的多個部分禁能。最后,在某些實例中,微處理器可能對于其電路的多個部分一起移除電源。再者,有時候微處理器需要尖峰性能,使其需要于其最高電壓及頻率下操作。微處理器采取電源管理動作以控制微處理器的電壓與頻率電平以及時鐘與電源禁能?;旧?,微處理器因應來自操作系統(tǒng)的指導(direction)而采取電源管理的動作。熟知的x86MWAIT指令為一種讓操作系統(tǒng)執(zhí)行以要求進入至一個與實際狀況相關的最佳化狀態(tài)的實例,操作系統(tǒng)可使用此狀態(tài)以執(zhí)行進階的電源管理。最佳化狀態(tài)可能是休眠(slewing)或閑置(idle)狀態(tài)。熟知的進階配置電源接口(ACPI)規(guī)格,是藉由界定操作或電源管理相關的狀態(tài)(例如"C-狀態(tài)"及〃P_狀態(tài)〃)以方便操作系統(tǒng)導向(operating system-directed)的電源管理。
      [0004]因為多數的現(xiàn)代化微處理器為多核心處理器,其中許多處理核心共用一個或多個電源管理相關的資源,所以執(zhí)行電源管理動作是復雜的。舉例而言,多個核心可能共用電壓源和/或時鐘源。再者,包含一多核心處理器的計算系統(tǒng)亦基本上包含一晶片組,其包含多個用以橋接處理器總線至系統(tǒng)的其他總線(例如,至周邊I/o總線)的總線橋,并包含一個做為多核心處理器與系統(tǒng)存儲器的接口的存儲器控制器。晶片組可密切地參與各種電源管理動作,且在本身與多核心處理器間可能需要協(xié)調機制。
      [0005]更明確而言,于某些系統(tǒng)中,在多核心處理器的允許下,晶片組可能禁能一個處理器總線上的時鐘信號,處理器接收并使用此時鐘信號以產生其本身的內部時鐘信號的大部分。在多核心處理器的情況下,所有使用總線時鐘的核心必須準備讓晶片組禁能其總線時鐘。亦即,直到所有核心準備好之后,晶片組才被允許禁能總線時鐘。
      [0006]再者,在正常情形下,晶片組會窺探(snoop)處理器總線上的快取存儲器。舉例而言,當一周邊裝置于一周邊總線上產生一存儲器存取時,晶片組會將此存儲器存取傳送至處理器總線上,俾能使處理器可窺探其快取存儲器以判定其是否持有(hold)所窺探地址的數據。舉例而言,眾人皆知USB裝置會定期輪詢存儲器位置,這會于處理器總線上產生周期性的窺探循環(huán)(snoop cycle).在某些系統(tǒng)中,多核心處理器可能進入一深休眠狀態(tài),此時將清除其快取存儲器的內容且禁能快取的時鐘信號以便節(jié)省電源。于此情況下,對多核心處理器而言,為了因應處理器總線上的窺探循環(huán)以窺探其快取(因為它們是空的,所以永遠不會傳回擊中(hit)訊息)而被喚醒,然后再回到休眠狀態(tài)無疑是種浪費。因此,在多核心處理器的允許下,晶片組可被授權不要產生處理器總線上的窺探循環(huán)以達成額外的電源節(jié)約。然而,必須再次提醒的是,所有的核心必須準備好之后晶片組才能關閉窺探功能,亦即晶片組不能關閉窺探功能,除非所有核心皆準備好才行。
      [0007]發(fā)證給Naveh等人(以下以Naveh代表)的美國專利第7,451,333號揭示一種包含多重處理核心的多核心微處理器,每一個核心能檢測一個要求核心轉變成一閑置狀態(tài)的命令。多核心處理器亦包含硬件協(xié)調邏輯(Hardware Coordination Logic, HCL), HCL接收來自核心的閑置狀態(tài)狀況,并基于命令與核心的閑置狀態(tài)狀況來管理核心的電源消耗。更明確而言,HCL決定是否所有核心已檢測一項要求轉換至一共通狀態(tài)的命令。如果不是的話,則HCL選擇在命令的閑置狀態(tài)間的一最淺狀態(tài)(shallowest state)以作為每個核心的閑置狀態(tài)。然而,如果HCL檢測一項要求轉換成一共通狀態(tài)的命令,則HCL可以啟動共用的電源節(jié)約特征,例如性能狀態(tài)減少(performance state reduction)、一共用的鎖相回路(PLL)的關閉、或處理器的執(zhí)行情況的節(jié)省。HCL亦可防止外部中斷(break)事件傳送到達核心,以將所有核心轉變成共通狀態(tài)。此外,HCL可與晶片組實施一交握順序(handshakesequence)以將核心轉變成共通狀態(tài)。
      [0008]在由Alon Naveh等人所寫的論文中,名稱為〃英特爾酷睿核心處理器中的電源及熱管理(Power and Thermal Managment in the Intel Core Duo Processor) 〃,其出版于2006年5月15日發(fā)行的英特爾科技期刊中,Naveh等人說明一種使用設置于晶片或平臺的共用區(qū)域中的非核心硬件協(xié)調邏輯(HCL)的相容C-狀態(tài)控制結構,作為在個別核心與晶片及平臺上的共用資源間的一層。HCL基于核心的個別需求決定所需要的CPU的C-狀態(tài)、控制共用資源的狀態(tài)、并模仿一傳統(tǒng)的(legacy)單核心處理器利用晶片組實現(xiàn)C-狀態(tài)的進入協(xié)定。
      [0009]在由Naveh參考文獻兩者所揭示的機制中,HCL是集中在核心外部的非核心邏輯,并代表所有核心執(zhí)行電源管理的操作。然而這種集中化非核心邏輯解決方法有其弊病,特別是在HCL被要求包含在與核心相同的晶片時,過大的晶片尺寸將是難以令人接受的,尤其對希望在晶片上包含更多核心的架構下,這個弊病將更加明顯。

      【發(fā)明內容】

      [0010]在本發(fā)明的一個實施樣態(tài)中,提供一種多核心處理器,其包含多個實體處理核心以及在每個核心中的核心間狀態(tài)發(fā)現(xiàn)微碼單元,核心間狀態(tài)發(fā)現(xiàn)微碼單元可使核心參與一分散式核心間電源狀態(tài)發(fā)現(xiàn)過程。與此相關的,是一提供發(fā)現(xiàn)一多核心處理器的電源狀態(tài)的分散式電源管理實現(xiàn)方法,此多核心處理器包含參與一分散式核心間狀態(tài)發(fā)現(xiàn)過程的至少兩個核心。核心間狀態(tài)發(fā)現(xiàn)過程是經由在每個參與核心上執(zhí)行的微碼、以及通過旁路非系統(tǒng)總線通訊配線在核心之間交換的信號的組合而被實現(xiàn)。發(fā)現(xiàn)過程是不通過任何集中式非核心邏輯。此外,在多數實施例中,核心間狀態(tài)發(fā)現(xiàn)過程是依據一種使用鏈鎖式核心間通訊的適當的或選擇的階層式協(xié)調系統(tǒng)而被實現(xiàn)。
      [0011]在其他實施樣態(tài)中,提供核心間狀態(tài)發(fā)現(xiàn)過程是提供微處理器組態(tài),包含促使核心啟動及多少核心被啟動的資源的利用率與分布、以及微處理器的階層式協(xié)調構造與系統(tǒng),包含域與域主識別的確認。
      [0012]在本發(fā)明的另一實施樣態(tài)中,提供一種多核心處理器,其包含多個已啟動的實體處理核心以及一由兩個以上的核心共用的可配置的資源,其中資源的組態(tài)影響共享資源的核心利用其能夠操作的電源、速度或效率。對每個核心而言,處理器還包含設定每個核心的組態(tài)的內部核心電源狀態(tài)管理邏輯,用以參與在核心之間被實現(xiàn)的一種分散式核心間電源狀態(tài)發(fā)現(xiàn)過程,而無須集中式非核心邏輯的協(xié)助。如果核心為了設定共用資源的組態(tài)與復合目標電源狀態(tài)是經由分散式核心間電源狀態(tài)發(fā)現(xiàn)過程被發(fā)現(xiàn)的目的而被指定為一管理者核心,則內部核心電源管理邏輯設定核心的組態(tài)以驅使設定共用資源的組態(tài)的一復合目標電源狀態(tài)的實現(xiàn)。對共用資源而言,復合目標電源狀態(tài)為一種最節(jié)能型的電源狀態(tài),其將不會干涉共享資源的每個核心的任何對應的目標電源狀態(tài)。
      [0013]在一個相關的實施樣態(tài)中,提供一種供一多核心處理器用的管理電源狀態(tài)的分散方法。一核心接收影響其本身及至少一其他核心之間所共用的一可配置的資源的一目標電源狀態(tài),其中目標電源狀態(tài)定義將影響共享資源的核心利用其能夠運作的電源、速度或效率的資源的組態(tài)。核心參與一核心間電源狀態(tài)發(fā)現(xiàn)過程,其包含不通過任何集中式非核心邏輯而與共享該資源的至少一其他核心的電源狀態(tài)的交換。如果核心為了設定共用資源的組態(tài)與復合目標電源狀態(tài)是經由分散式核心間電源狀態(tài)發(fā)現(xiàn)過程而被發(fā)現(xiàn)的目的而被指定為一管理者核心,則核心驅使用以設定共用資源的組態(tài)的復合目標電源狀態(tài)的實現(xiàn)。
      [0014]在又另一實施樣態(tài)中,本發(fā)明提供一多核心處理器。多核心處理器的每個核心包含電源狀態(tài)管理微碼,用以設定該核心的組態(tài)以參與一分散式核心間復合電源狀態(tài)發(fā)現(xiàn)過程。電源狀態(tài)管理微碼可使每個核心接收一狀態(tài)轉變要求,用以依據多個預定電源狀態(tài)(包含一主動操作狀態(tài)及一個或多個漸進地較不敏感的狀態(tài))的任何要求的目標的其中一個設定其成為本身的組態(tài)。當一核心接收一要求以轉變成為一受限制的電源狀態(tài)(例如會干涉由其他核心所共用資源的一電源狀態(tài))時,則其電源狀態(tài)管理微碼啟動一分散式核心間復合電源狀態(tài)發(fā)現(xiàn)過程,用以決定是否所有其他受影響的核心已做好該受限制的電源狀態(tài)的準備。
      [0015]如果參與發(fā)現(xiàn)過程的核心確認受限制的電源狀態(tài)為復合電源狀態(tài),則核心中的被授權者經由其電源狀態(tài)管理微碼實現(xiàn)或啟動受限制的電源狀態(tài)的植入。具體言之,授權核心將實現(xiàn)最限制的或節(jié)能型的操作狀態(tài),其可藉由核心而被實現(xiàn),而不會干涉其他核心的對應的目標操作狀態(tài)。
      [0016]在另一實施樣態(tài)中,每個核心的電源管理微碼的一部分或常式為同步邏輯,其被組態(tài)而被設計成用以與其他以節(jié)點地連接(nodally connected)的核心交換電源狀態(tài)信息來決定混合電源狀態(tài)。同步邏輯的每個被喚起的實例(invoked instance)是被設計成至少有條件地在尚未同步節(jié)點地連接的核心(其為節(jié)點地連接至本身的核心,且同步邏輯的一同步化實例尚未被喚起)中產生同步邏輯的從屬實例,以作為一復合電源狀態(tài)發(fā)現(xiàn)過程的一部分。
      [0017]于一實施例中,核心的電源管理微碼是被設計成無須啟用其同步邏輯的一本地實例即可實現(xiàn)一目標電源狀態(tài),如果核心的目標電源狀態(tài)并非一種需要與其他核心協(xié)調的受限制的電源狀態(tài)核心。否則,電源管理邏輯設定核心的組態(tài)以實現(xiàn)目標電源狀態(tài)的非限制實施樣態(tài)或一附屬電源狀態(tài)的非限制實施樣態(tài)(例如在核心上的局部電源節(jié)約動作),且喚起其同步邏輯的一本地實例,做為受限制的電源狀態(tài)所應用到的核心的最大域開始復合電源狀態(tài)發(fā)現(xiàn)過程。在發(fā)現(xiàn)對應到目標受限制的電源狀態(tài)的一復合電源狀態(tài)中,被授權以實現(xiàn)復合電源狀態(tài)的一核心電源管理微碼啟動(典型上是具最大影響范圍的管理者核心)和/或進行復合電源狀態(tài)的實現(xiàn)。
      [0018]在另一實施樣態(tài)中,本發(fā)明提供一種供一多核心處理器(例如上述的處理器)使用的管理電源的分散方法。此方法包含接收針對任一核心的一狀態(tài)轉變要求,以依據一目標電源狀態(tài)設定該核心("本地核心")的組態(tài)。如果目標電源狀態(tài)為一受限制的電源狀態(tài),則執(zhí)行于本地核心上的電源管理邏輯實施同步邏輯的一本地實例以啟動一分散式核心間復合電源狀態(tài)發(fā)現(xiàn)過程,以使此核心與其他核心交換電源狀態(tài)。此方法還包含評估發(fā)現(xiàn)的電源狀態(tài),以及有條件地回應受限制的電源狀態(tài)的實現(xiàn)或啟動。
      [0019]同步邏輯的每個本地實例產生在一個或多個節(jié)點地連接核心上的同步邏輯的一個或多個從屬實例,這些從屬實例是依序操作,以產生它們的同步邏輯的額外從屬實例。同步邏輯的每個實例決定至少一混合電源狀態(tài),及遞歸地(除非由一終止條件所終止,如果有的話)在同步邏輯的尚未同步的節(jié)點地遠端核心上更進一步的喚起從屬實例邏輯,直到可能被影響的域中的每一個核心都有同步邏輯的同步實例為止。在發(fā)現(xiàn)復合電源狀態(tài)等于受限制的電源狀態(tài)時,于一授權核心上執(zhí)行電源管理邏輯以啟動和/或加以實現(xiàn)。
      [0020]在又另一實施樣態(tài)中,本發(fā)明提供微碼,其被編碼在包含分散式核心間狀態(tài)發(fā)現(xiàn)與上述電源管理邏輯的多核心處理器的實體核心的計算機可讀取的儲存媒體中。
      【專利附圖】

      【附圖說明】
      [0021]圖1為顯示一計算機系統(tǒng)的一個實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一雙晶片四核心微處理器的多重處理核心之間的分散式電源管理。
      [0022]圖2為詳細顯示圖1的代表的其中一個核心的方塊圖。
      [0023]圖3為顯示執(zhí)行分配在多核心微處理器的多重處理核心之間的分散式電源管理的一系統(tǒng)的一電源狀態(tài)管理常式的一個實施例的藉由一核心的操作的流程圖。
      [0024]圖4A-圖4C為顯示整合至圖3的系統(tǒng)的復合電源狀態(tài)發(fā)現(xiàn)過程的一電源狀態(tài)同步常式的一個實施例的藉由一核心的操作的流程圖。
      [0025]圖5為顯示一喚起與重新開始常式以因應從一休眠狀態(tài)將其喚醒的一事件的一個實施例的藉由一核心的操作的流程圖。
      [0026]圖6為顯示一核心間中斷處理常式以因應接收一核心間中斷的藉由一核心的操作的流程圖。
      [0027]圖7為顯示依據圖3至6的說明的一復合電源狀態(tài)發(fā)現(xiàn)過程的操作的一例子的流程圖。
      [0028]圖8為顯示依據圖3至6的說明的一復合電源狀態(tài)發(fā)現(xiàn)過程的操作的另一個例子的流程圖。
      [0029]圖9為顯示一計算機系統(tǒng)的另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器(其在單一封裝體上具有四個雙核心晶片)的多重處理核心之間的分散式電
      源管理。
      [0030]圖1OA-圖1OC為顯示整合至圖9的系統(tǒng)的一復合電源狀態(tài)發(fā)現(xiàn)過程的一電源狀態(tài)同步常式的一個實施例的藉由一核心的操作的流程圖。
      [0031]圖11為顯示一計算機系統(tǒng)的另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器的多重處理核心之間的分散式電源管理,八核心微處理器具有四個雙核心晶片,其使用圖10的電源狀態(tài)同步常式而分配在兩個封裝體上。
      [0032]圖12為顯示一計算機系統(tǒng)的另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器的多重處理核心之間的分散式電源管理,依據一較深的階層式協(xié)調系統(tǒng),八核心微處理器像圖11具有四個雙核心晶片,但其核心不像圖11而是彼此相互關連的。
      [0033]圖13A-圖13D為顯示整合至圖12的系統(tǒng)的一復合電源狀態(tài)發(fā)現(xiàn)過程的一電源狀態(tài)同步常式的一個實施例的藉由一核心的操作的流程圖。
      [0034]圖14為顯示一計算機系統(tǒng)的另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器的多重處理核心之間的分散式電源管理,依據一較深的階層式協(xié)調系統(tǒng),八核心微處理器像圖9在單一封裝體上具有四個雙核心晶片,但其核心不像圖9而是彼此相互關連的。
      [0035]圖15為顯示一計算機系統(tǒng)的另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器(其在單一封裝體上具有兩個四核心晶片)的多重處理核心之間的分散式
      電源管理。
      [0036]圖16為顯示一計算機系統(tǒng)的又另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器的多重處理核心之間的分散式電源管理。
      [0037]圖17A-圖17C為顯示整合至圖16的系統(tǒng)的一復合電源狀態(tài)發(fā)現(xiàn)過程的一電源狀態(tài)同步常式的一個實施例的藉由一核心的操作的流程圖。
      [0038]圖18為顯示一計算機系統(tǒng)的又另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種雙核心、單一晶片微處理器的核心之間的分散式電源管理。
      [0039]圖19為顯示一計算機系統(tǒng)的又另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在具有兩個單核心晶片的一種雙核心微處理器的核心之間的分散式電源管理。
      [0040]圖20為顯示一計算機系統(tǒng)的又另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在具有兩個單核心、單一晶片封裝體的一雙核心微處理器的核心之間的分散式電源管理。
      [0041]圖21為顯示一計算機系統(tǒng)的又另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器的核心之間的分散式電源管理,八核心微處理器具有兩個封裝體,其中一個具有三個雙核心晶片,而其另一個具有單一雙核心晶片。
      [0042]圖22為顯示一計算機系統(tǒng)的又另一實施例的方塊圖,計算機系統(tǒng)執(zhí)行分配在一種八核心微處理器的核心之間的分散式電源管理,八核心微處理器類似于圖21,但具有一較深的階層式協(xié)調系統(tǒng)。
      [0043]圖23為顯示在一核心上實現(xiàn)的操作狀態(tài)同步邏輯的另一實施例的流程圖,其支持一種域區(qū)別的(domain-differentiated)操作狀態(tài)層次協(xié)調系統(tǒng)且對于不同的域深度是可計量的。
      [0044]附圖符號說明
      [0045]P、P1-P8:接腳
      [0046]100、900、1100、1200、1400、1500、1600:計算機系統(tǒng)
      [0047]102、902、1202、1402、1502:多核心微處理器/封裝體
      [0048]104:單核心晶片/封裝體
      [0049]106:核心[0050]108:接觸墊
      [0051]112:核心間通訊配線
      [0052]114:晶片組
      [0053]116:總線
      [0054]118:通訊配線
      [0055]202:指令快取
      [0056]204:指令譯碼器
      [0057]206:微序列器
      [0058]207:微碼存儲器
      [0059]208:微碼
      [0060]212:注冊別名表(RAT)
      [0061]214:保留站
      [0062]216:執(zhí)行單元
      [0063]218:撤退單元
      [0064]222:數據快取
      [0065]224:總線接口單元(BIU)
      [0066]226:鎖相回路(PLL)
      [0067]228:BSP 指示器
      [0068]232:管理者指示器
      [0069]234、236:CSR
      [0070]238:特別模塊寄存器(MSR)
      [0071]242:核心時鐘信號
      [0072]1102:四核心微處理器
      [0073]1133:封裝體間通訊配線
      [0074]1201:第二封裝體
      [0075]1504:晶片
      [0076]1602:多核心微處理器
      [0077]1802,1902,2002:雙核心微處理器
      [0078]2202:八核心處理器
      [0079]2300:邏輯
      [0080]2302:sync_state
      【具體實施方式】
      [0081]于此所說明的為藉由使用固有的且被復制在每個核心上的分散式分配邏輯,用以協(xié)調、同步、管理以及實現(xiàn)一多核心處理器上的電源、休眠或操作狀態(tài)的系統(tǒng)與方法的實施例。在說明表示詳細的實施例的每一張圖之前,先將本發(fā)明的更一般的適用概念介紹于下。
      [0082]1.多層多核心處理器概念
      [0083]如于此所使用的,一種多核心處理器通常表示一個包含多個啟動的實體核心的處理器,每個啟動的實體核心被設計成用以提取、解碼并執(zhí)行遵循一指令集架構的指令。一般而言,多核心處理器是藉由一系統(tǒng)總線(最后由所有核心所共用)而耦接至一晶片組,藉以提供至周邊總線到達各種裝置的存取操作。在某些實施例中,系統(tǒng)總線為一前端總線,其為從處理器至其余計算機系統(tǒng)的一外部接口。在某些實施例中,晶片組亦對一共用的主存儲器以及一共用的圖形控制器進行集中存取。
      [0084]多核心處理器的核心可能被封裝在包含多重核心的一個或多個晶片中,如說明于申請案序號61/426,470的段落中,其申請日為2010年12月22日,名稱為〃多核心處理器內部旁路總線(Mult1-Core Processor Internal Bypass Bus) 〃,以及其同時申請的正式(nonprovisional)申請案(CNTR.2503),其是于此并入作參考。如于其中所提出的,一種典型的晶片為已被切成或切割為單一物理實體的一片半導體晶圓,且一般具有至少一組的實體1/0接觸墊。例如,某些雙核心晶片具有兩組1/0接觸墊,每一組供其核心的每一個使用。其他雙核心晶片具有單一組的1/0接觸墊,其是在其雙核心之間被共用。某些四核心晶片具有兩組1/0接觸墊,一組供兩組雙核心的每一個用。多重組態(tài)是可能的。
      [0085]再者,一種多核心處理器亦可能提供一種承載多重晶片的一封裝體。一種〃封裝體〃為上面置放或安裝有晶片的一基板,此〃封裝體〃可能提供單一組的接腳,以供連接至一主機板以及相關的處理器總線。封裝體的基板包含將晶片的接觸墊連接至封裝體的共用接腳的連線網或布線(wire nets or traces)。
      [0086]更進一步的分層的層次是可能的。舉例而言,在封裝體與位于下方的主機板之間可提供一個額外的層板(以下稱為平臺(platform)),而多個封裝體設置于此平臺上。平臺可能像上述的封裝體,其包含一個基板,此基板具有連接每個封裝體的接腳與平臺的共用接腳的連線網或布線。
      [0087]應用上述概念,在一實施例中,一種多封體裝處理器可視為將N2個封裝體設置在一平臺上,每個封裝體具有NI個晶片,且每個晶片具有NO個核心。于此數字N2、N1以及NO每個大于或等于1,且N2、N1以及NO的至少一者大于或等于2。
      [0088]I1.核心間傳輸結構
      [0089]如上所述,非核心但晶片上的硬件協(xié)調邏輯(HCL)的使用以實現(xiàn)要求核心間協(xié)調的限制活動的一些缺點,包含更復雜的、較不對稱的且較低良率的晶片設計以及縮放挑戰(zhàn)(scalling chanlIenge)。一替代方式是藉由使用晶片組本身來執(zhí)行所有這種協(xié)調,但這種方式極可能需要在每個核心與系統(tǒng)總線上的晶片組間進行傳輸,以便傳遞適合數值給晶片組。這種協(xié)調基本上亦需要經由例如BIOS的系統(tǒng)軟件來實現(xiàn),但這種做法對制造商而言是有所限制或根本無法控制的。為了克服兩種習知方法的缺點,本發(fā)明的某些實施例利用在多核心處理器的核心間的旁路連接。這些旁路連接并未連接至封裝體的實體接腳;因此,它們不會傳送信號至封裝體外部;經由它們交換的通訊也不會要求系統(tǒng)總線上的對應的傳輸。
      [0090]舉例而言,如說明于CNTR.2503,每個晶片可能提供一條在晶片核心間的旁路總線,旁路總線并未連接至晶片的實體接觸墊;因此其并未傳送信號離開雙核心晶片。旁路總線亦提供核心間的信號的品質改善,并可使核心彼此的傳遞或協(xié)調無須使用系統(tǒng)總線。多重變化亦在考量之內。舉例而言,如說明于CNTR.2503 一案中,一種四核心晶片可能提供一條在兩組雙核心間的旁路總線?;蛘?,如說明于以下的一個實施例,一種四核心晶片可能在一晶片的兩組核心的每一個之間提供旁路總線,以及在從兩組所選擇的核心間提供另一條旁路總線。在另一實施例中,一種四核心晶片可能提供在每一個核心間的核心間旁路總線,如下圖16所述。又,在另一實施例中,一種四核心晶片可能在第一與第二核心、第二核心與第三核心、第三與第四核心以及第一與第四核心之間的核心間提供旁路總線,而無須提供在第一與第三核心之間或在第二與第四核心之間的核心間旁路總線。一種類似的旁路組態(tài)(即使所述者是分配在兩個雙核心晶片上的核心間)揭示于申請案序號61/426,470的段落中,申請日為2010年12月22日,名稱為〃共用電源對多核心微處理器的分配式管理(Distributed Management of a Shared Power Source to a Mult1-CoreMicroprocessor) 〃,以及其同時申請的非臨時(nonprovisional)申請案(CNTR.2534),亦于此并入作參考。
      [0091]又,本發(fā)明考慮到比CNTR.2503的旁路總線較不廣泛的核心間通訊配線組,例如說明于申請案序號61/426,470的段落中的替代實施例,申請日為2010年12月22日,名稱為〃光罩設置修改以產生多核心晶片(Reticle Set Modification to ProduceMult1-Core Dies) 〃,以及其同時申請的非臨時(nonprovisional)申請案(CNTR.2528),亦于此并入作參考。核心間通訊配線的一種較不龐大的例子是顯示于CNTR.2534,亦于此并入作參考。核心間通訊配線組在包含配線的數目上要盡可能小,只要能用以啟動如于此所說明的協(xié)調活動即可。構筑在核心之間的核心間通訊配線,亦可能依一種類似于以下更進一步說明的晶片間通訊線的方式被設計或配置在核心之間。
      [0092]再者,一封裝體可能提供在一封裝體晶片片間的晶片間通訊線,而一平臺可能提供在平臺的封裝體間的封裝體間通訊線。如以下將更完全說明的,晶片間通訊線的實施可能需要每個晶片上的至少一額外實體輸出接觸墊。同樣地,封裝體間通訊線的實施可能需要每個封裝體上的至少一額外實體輸出接觸墊。又,如以下更進一步說明的,某些實施例提供超過一最低限度足夠數目的輸出接觸墊的額外輸出接觸墊,用以在協(xié)調核心中提供更大的彈性。為了讓各種可能的核心間通訊得以實施,較好的方式是他們都不需要任何一個核心外部的主動邏輯(active logic)。如此,本發(fā)明各種實施例可通過使用一種非核心HCL或其他主動非核心邏輯以協(xié)調核心的實施方式,來提供本發(fā)明于此所述的優(yōu)點。
      [0093]II1.階層式概念
      [0094]再次重申,本發(fā)明的說明除非另有規(guī)定,否則并未受限于多核心多處理器的數個實施例,其提供旁路通訊配線且通過系統(tǒng)總線優(yōu)先使用這種配線以協(xié)調核心,以便實施或允許某些構造或限制活動的實施。在許多實施例中,這些實體實施方式是與階層式協(xié)調系統(tǒng)相互搭配,以執(zhí)行所需的硬件協(xié)調。于此所說明的某些階層式協(xié)調系統(tǒng)是非常復雜的。舉例而言,圖1、9、11、12、14、15、16、18、19、20、21以及22描述各種階層式協(xié)調系統(tǒng)的多核心處理器實施例,其是架構并用來促進例如電源狀態(tài)管理的核心間協(xié)調活動。此說明書亦提供數個對階層式協(xié)調系統(tǒng)的更深入且抽象的特性記述,以及甚至更詳盡且復雜的階層式協(xié)調系統(tǒng)的例子。因此,在進入用以啟動一構造或限制活動的實施的核心間協(xié)調過程的特定實例的說明前,先說明于此考慮到的各種階層式協(xié)調系統(tǒng)的各種實施樣態(tài)是有益的。
      [0095]如于此所使用的,一種階層式協(xié)調系統(tǒng)表示一種為了某些恰當或預定活動或目的,將核心設計成以一種至少局部受限或組織的階層式方式而彼此協(xié)調的系統(tǒng)。這種架構即與一相等的點對點(peer-to-peer)協(xié)調系統(tǒng)有所區(qū)別,因為其中的每個核心皆享有同等特權,并可直接與任何其他核心(以及與晶片組)協(xié)調以執(zhí)行一恰當活動。舉例而言,節(jié)點樹架構下的核心是在某些具限制的活動下,僅與上層或下層的節(jié)點連接核心進行協(xié)調,其中的任兩個節(jié)點間只存在有一條單一路徑,于是這種節(jié)點樹架構可構成一嚴密的階層式協(xié)調系統(tǒng)。如于此所使用的,除非更嚴格地定義,否則一階層式協(xié)調系統(tǒng)亦包含較為松散的階層式的協(xié)調系統(tǒng),例如一種允許在至少一群組的核心內的點對點協(xié)調的系統(tǒng),其是在至少兩個核心群組間進行階層式協(xié)調。于此呈現(xiàn)嚴密及松散的階層式協(xié)調系統(tǒng)兩者的例子。
      [0096]于一實施例中,一種階層式協(xié)調系統(tǒng)對應至一微處理器中的核心的一配置,微處理器具有多個封裝體,每個封裝體具有多個晶片,且每個晶片具有多個核心。將每層視為一〃域(domain)"時是有用的。舉例而言,一種雙核心晶片可被視為由其核心所組成的域,一種雙晶片封裝體可被視為由其晶片所組成的一域,以及一雙封裝體平臺或微處理器可被視為由其封裝體所組成的一域。將核心本身說明為一域亦是有用的。這種〃域〃的概念化在表示例如一快取、一電壓源或一時鐘源的一資源上亦是有用的,此資源是由一域的核心所共用,但此資源以別的方法位于該域的近端(亦即,并未由該域的外部核心所共用)。當然,適合于任何既定的多核心處理器的域深度以及每個域的組成者的數目(例如,以一晶片為一域,以封裝體為一域,等等)可依據核心的數目、它們的分層以及各種資源由核心所共用的方式改變并放大或縮小。
      [0097]為不同型式的域之間的關是命名亦是有用的。如于此所使用的,在一種多核心晶片上的所有啟動的實體核心是被視為該晶片的〃組成者(constituents) 〃以及彼此的〃共同組成者(co-constituents)"。同樣地,在一多晶片封裝體上的所有啟動的實體晶片被視為該封裝體的組成者以及彼此的共同組成者。又同樣地,在一種多封裝體處理器上的所有啟動的實體封裝體將被視為該處理器的組成者以及彼此的共同組成者。再者,這種表示方式可能延伸至像設有多核心處理器一樣的域深度的多數層次。一般而言,每個非終端域層次是由一個或多個組成者所定義,每一個組成者包含階層式構造的下一個較低的域層次。
      [0098]在某些多核心處理器實施例中,對每個多核心域(例如,對每個晶片,對每個封裝體,對每個平臺等等)而言,其唯一一個核心被指定為并設有供該域使用的一"管理者(master)"的一對應的功能把關或協(xié)調角色。舉例而言,每個多核心晶片的單一核心(如果有的話)被指定為該晶片的一"晶片管理者",每個封裝體的單一核心被指定為該封裝體的一 〃封裝體管理者〃 (PM),以及(對如此成層的一處理器而言)每個平臺的單一核心是被指定為供該平臺用的〃平臺管理者〃等等。一般而言,此階層的最高域的管理者核心作為多核心處理器的唯一的〃總線服務處理器〃 (BSP)核心,其中只有BSP被授權以使某些型式的活動與晶片組協(xié)調??勺⒁獾?,為了便利性,于此采用例如"管理者"的專門用語,且除〃管理者〃之外的標簽(例如〃委派(delegate) 〃)可被應用以說明這種功能角色。
      [0099]更進一步的關是是定義在每個域管理者核心與核心之間,為預定目的或活動(為其所標示的),利用核心允許其直接協(xié)調。于最低域層次(例如,一晶片),對于該晶片的啟動的非管理者核心的每一個,一種多核心晶片的晶片管理者核心可能被視為一 〃伙伴(pal)"。一般而言,對于相同晶片的其他核心的任何一個,一晶片的每一個核心被視為一伙伴。但在一替代特性記述中,伙伴指定是被限定為在晶片管理者核心與一種多核心晶片的其他核心之間的附屬關是。將這種替代特性記述應用至一種四核心晶片,晶片管理者核心將具有三個伙伴,但其他核心的每一個將被視為只具有單一伙伴(晶片管理者核心)。
      [0100]于下一個域層次(例如封裝體),對于相同封裝體上的其他管理者核心的每一個,一封裝體的PM核心可能被視為一〃同伴(buddy)"。一般而言,對于相同封裝體的彼此晶片管理者核心,一封裝體的每一個晶片管理者核心是被視為一同伴。但在一替代特性記述中,同伴指定是限定于一封裝體管理者核心與該封裝體的其他管理者核心之間的附屬關是。將這種替代特性記述應用至一種四晶片封裝體,PM核心將具有三個伙伴,但其他晶片管理者核心的每一個將被視為只具有單一伙伴(PM核心)。在又另一種替代特性記述(例如在圖11中所提出的)中,對于處理器中的其他管理者核心的每一個(包含在處理器的一不同封裝體上的管理者核心),一管理者核心是被視為一 〃同伴〃。
      [0101]于下一個域層次(例如,具有這種深度的一種多核心處理器的平臺),對于平臺的其他PM核心的每一個,BSP (或平臺管理者(master))核心被視為一 〃好友(chum)"。一般而言,對于相同平臺的彼此PM核心,每一個PM核心是關于一好友。但在一替代特性記述中,好友指定是限定于在一 BSP封裝體管理者核心與一平臺的其他PM核心之間的附屬關是。將這種替代特性記述應用至一種四封裝體平臺,BSP核心將具有三個伙伴,但其他PM核心的每一個將被視為只具有單一伙伴(BSP)。
      [0102]上述的伙伴/同伴/好友關是于此一般更被視為〃同屬性(kinship)"關是。每個〃伙伴〃核心屬于一個同屬性群組,每個〃同伴〃核心屬于一較高層級的同屬性群組,以及每個"好友"核心屬于又更高層級的同屬性群組。換言之,上述階層式協(xié)調系統(tǒng)的各種域定義對應的"同屬性"群組(例如,伙伴的一個或多個群組、同伴的群組以及好友的群組)。此外,一特定核心的每個〃伙伴〃、〃同伴〃以及〃好友〃核心(如果有的話)一般可更被視為一 〃家族(kin) 〃核心。
      [0103]如于此所使用的,一同屬性群組的概念是略不同于一域的概念。如上所述,一域是由在其域中的所有核心所組成,舉例而言,一封裝體域一般是由封裝體上的所有核心所組成。相較之下,一同屬性群組一般是由相對應的域所選擇核心組成,例如,一封裝體域的對應的同屬性群組僅由封裝體上的管理者核心(其中一個亦為封裝體管理者核心)所構成,而非封裝體上任何一個伙伴核心所構成。一般而言,只有終端多核心域(亦即,不具有組成域的域)將定義一個包含所有核心的對應同屬性群組。舉例而言,一雙核心晶片一般將定義一終端多核心域,其具有包含晶片的兩核心的對應同屬性群組。注意到把每個核心看成界定其自己的域亦是適當的,因為每個核心一般包含位于在本身的近端且未被其他核心所共用的資源,其可藉由各種操作狀態(tài)而被設置。
      [0104]將明白在上述的伙伴/同伴/好友階層,任一非管理者核心的每個核心只是一伙伴,并屬于只由相同晶片上的核心所構成的單一同屬性群組。每個晶片管理者核心,第一,屬于由相同晶片上的伙伴核心所組成的最低層次同屬性群組;第二,屬于由相同封裝體上的同伴核心所組成的一同屬性群組。每個封裝體管理者核心,第一,屬于由相同晶片上的伙伴核心所組成的一最低層次同屬性群組;第二,屬于由相同封裝體上的同伴核心所組成的一同屬性群組;而第三,屬于由相同平臺上的好友核心所組成的一同屬性群組。簡言之,每個核心屬于W同屬性群組,于此W等于同屬性群組(該核心是一管理者核心)的數目加上
      1
      [0105]為了更進一步敘述同屬性群組的階層式本質的特征,任何既定核心的"最接近的〃或〃最直接的〃同屬性群組是對應至該核心為其的一部分的最低層次多核心域。在一個例子中,無論一特定核心具有多少管理者指定核心,其最直接的同屬性群組包含其在相同晶片上的伙伴。一管理者核心亦將具有一第二接近的同屬性群組,其包含在相同封裝體上的核心的同伴或同伴們。一封裝體管理者核心亦將具有包含核心的好友的一第三接近的同屬性群組。
      [0106]值得注意的是,上述的同屬性群組對于一多層次多核心處理器(其中至少兩個層次Nx具有多重組成者)將是半獨占的。亦即,對這種處理器而言,沒有既定的同屬性群組將包含該處理器的所有核心。
      [0107]上述的同屬性群組概念甚至可更進一步藉由不同的協(xié)調模型而被特征化,一同屬性群組可能采用在其組成核心之間。如于此所使用的,在一 〃管理者仲裁的〃同屬性群組中,在核心之間的直接協(xié)調是被限定為在管理者核心及其非管理者核心之間的協(xié)調。在同屬性群組之內的非管理者核心無法彼此直接協(xié)調,只能間接地經由管理者核心為的。在一〃同彳齊合作(Peer-collaborative)"同屬性群組中,相較之下,同屬性群組的任何兩個核心可能彼此直接協(xié)調,而無須管理者核心的仲裁。在一同儕合作同屬性群組中,對于管理者的一種更功能性地相容專門用語將是"委派",因為其作為一協(xié)調看守者,只為了與較高層級域協(xié)調,而不為了與在同屬性群組織同儕之間協(xié)調。應注意到,于此定義在一 〃管理者仲裁〃及〃同儕合作〃同屬性群組之間的區(qū)別,只有對于具有三個或三個以上的核心的同屬性群組是有意義的。一般而言,對某些預定活動而言,任何既定核心只可與其同屬性群組的組成者或共同組成者進行協(xié)調,而且對于任何管理者仲裁的同屬性群組而言,僅有一部分,例如較優(yōu)的"共同組成者"或較差組成者,得以適用。
      [0108]從一節(jié)點階層的節(jié)點與節(jié)點連接的角度說明上面的階層式協(xié)調系統(tǒng)亦是適當的。如于此所使用的,一節(jié)點階層為每個節(jié)點是多核心處理器的核心的唯一的一個,其中一個核心(例如,BSP核心)為根節(jié)點,且在任兩個節(jié)點之間存在有一連續(xù)不斷的協(xié)調〃路徑〃(包含中間節(jié)點,如果適合的話)。每個節(jié)點是〃節(jié)點連接〃至至少一另一個節(jié)點而非所有其他節(jié)點,且為了為協(xié)調系統(tǒng)所應用到的活動的目的,只可與"節(jié)點連接的"核心協(xié)調。為了更進一步區(qū)別這些節(jié)點連接,于此將把一管理者核心的附屬節(jié)點地連接核心看成〃組成者〃核心、或者看成〃附屬家族〃核心,〃附屬家族〃核心是與一核心的節(jié)點地連接的〃共同成組成者核心〃有所區(qū)別,而〃共同組成者核心〃為并非附屬于本身的節(jié)點地連接核心。更進一步的說,一核心的節(jié)點地連接的〃共同組成者〃核心包含其管理者核心(如果有的話)、以及其是節(jié)點地連接的任何同等階級的核心(例如,在其的一同儕協(xié)調同屬性群組,核心為一部分)。又,不具有附屬家族核心的任何核心于此亦被稱為〃終端〃節(jié)點或〃終端〃核心。
      [0109]到目前為止,階層式協(xié)調系統(tǒng)于這些域對應至核心的一實體不同的巢狀配置已清楚地說明(例如,不同的域對應至每個適合的核心、晶片、封裝體以及平臺)。舉例而言,圖1、9、12、16以及22所顯示的階層式協(xié)調系統(tǒng)皆與處理器所顯示的核心的實體上不同的巢狀封裝體一致。圖22為一有趣的一致性實例,其顯示具有多個不對稱封裝體的八核心處理器2202,其中一個具有三個雙核心晶片而其余具有單核心晶片。然而,與封裝體核心的實體上不同的巢狀方式相符,旁路配線定義一對應的三個層次階層式協(xié)調系統(tǒng),其具有相關作為好友的封裝體管理者,相關作為同伴的晶片管理者,以及相關作為伙伴的晶片核心。
      [0110]但是,依據一處理器的核心間、晶片間以及封裝體間旁路配線(如果有的話)的組態(tài),在核心之間的階層式協(xié)調系統(tǒng)可能被建立,且相較在處理器被封裝的核心的巢狀實體配置而言,其具有不同深度及分層,數個這種例子是設置于圖11、14、15以及21中。圖11顯示具有兩個封裝體的八核心處理器,其中每個封裝體具有兩個晶片,而每個晶片具有兩個核心。在圖11中,設置促進二階階層式協(xié)調系統(tǒng)的多條旁路配線,以使所有的管理者核心可以是最高層級同屬性群組的一部分,且每個管理者核心亦屬于包含本身及其伙伴的一不同的最低層次同屬性群組。圖14顯示在單一封裝體上的具有四個雙核心晶片的八核心處理器。在圖14中,將設置所需的伙伴、同伴以及好友的三層次階層式協(xié)調系統(tǒng)的多條旁路配線。圖15顯示具有兩個四核心晶片的處理器,于此在每個晶片內的核心間配線需要一二階階層式協(xié)調系統(tǒng),以及在每個晶片的管理者(亦即,好友)之間提供多條晶片間配線來作為第三階層式層次的協(xié)調。圖21顯示類似圖22具有兩個不對稱封裝體的另一種八核心處理器,其中一個不對稱封裝體具有三個雙核心晶片而另一個具有單一雙核心晶片。但是,如同圖11,晶片間及封裝體間旁路配線是提供以協(xié)助核心間的二階階層式協(xié)調系統(tǒng),其中兩個封裝體上的所有的管理者核心為相同的同屬性群組的一部分。
      [0111]如上所述,不同深度與協(xié)調模型的階層式協(xié)調系統(tǒng),可依期望被應用或適用于提供作為一多核心處理器的共用資源的分布,假若其與多核心處理器的構造能力與限制相符的話。為了更進一步說明,圖16顯示一種設置足夠的旁路通訊配線以協(xié)助每個四核心晶片的所有核心間的同儕合作協(xié)調模型的處理器。然而,在圖17中,更多限制的管理者仲裁協(xié)調模型為每個四核心晶片的核心而建立。此外,如圖15所顯示的,具有兩個伙伴同屬性群組以及一個管理者同屬性群組的一多層次協(xié)調階層,如果需要的話,亦可只藉由使用(為了為協(xié)調系統(tǒng)所應用的活動的目的)少于所有可得到的核心間配線而為圖16的四核心微處理器的核心而建立的。因為圖16中的每個四核心晶片提供在每一個其核心之間的旁路配線,所以晶片是能夠協(xié)助階層式協(xié)調系統(tǒng)的所有三種型式。
      [0112]一般而言,不管域、同屬性群組以及多核心處理器節(jié)點的本質與數目為何,每個域中只有唯一一個核心可被指定為該域以及對應的同屬性群組的管理者。域可具有組成域(constituent domain),再者,每個域以及對應的同屬性群組中只有一個核心將被指定為該域的管理者。協(xié)調系統(tǒng)的最高級核心亦被稱為一"根節(jié)點〃。
      [0113]IV.電源狀態(tài)管理
      [0114]在介紹關于多核心組態(tài)、旁路通訊能力以及階層式關是的各種概念以后,現(xiàn)在此說明書介紹關于電源狀態(tài)管理系統(tǒng)的特定考慮的實施例的某些概念。然而,應該明白到,本發(fā)明適用于除了電源狀態(tài)管理以外的多樣化活動的協(xié)調。
      [0115]在此所說明的分配式多核心電源管理實施例中,多核心處理器的每個核心包含分散式與分配式可計量電源管理邏輯,其復制于每個核心上的一個或多個微碼常駐常式中。電源管理邏輯是可操作以接收一目標電源狀態(tài),確定其是否為一受限制的電源狀態(tài),啟動包含核心間協(xié)調的一復合電源狀態(tài)發(fā)現(xiàn)過程,并適當地反應。
      [0116]一般而言,一目標狀態(tài)為任何需求或期望的預定操作狀態(tài)(例如C-狀態(tài)、P-狀態(tài)、電壓ID(VID)值或時鐘比率值)的其中一個等級。一般而言,一預定群組的操作狀態(tài)界定包含多個處理器操作狀態(tài),其基于一個或多個電源、電壓、頻率、性能、操作、響應性、共用資源或限制實現(xiàn)特征而訂定。相對于一處理器的其他期望的操作特征,操作狀態(tài)可能被提供以最佳地管理電源。
      [0117]于一實施例中,預定操作狀態(tài)包含一有效操作狀態(tài)(例如CO狀態(tài))及多個漸進地較不有效或敏感的狀態(tài)(例如C1,C2,C3等狀態(tài))。如于此使用的,一漸進地較不敏感的或有效狀態(tài)表示一種相對于更有效或敏感的狀態(tài)的節(jié)省電源的配置或操作狀態(tài),或相對不太敏感的(例如,較慢、較不完全啟動、無法執(zhí)行例如存取例如快取存儲器資源、或較易休眠及較難喚醒)。于某些實施例中,基于衍生自或兼容于ACPI規(guī)格,預定操作狀態(tài)構成但并非需要受限于C-狀態(tài)或休眠狀態(tài)。于其他實施例中,預定操作狀態(tài)構成或包含各種電壓及頻率狀態(tài)(例如,漸進地較低電壓和/或較低頻率狀態(tài)),或兩者。又,一組預定操作狀態(tài)可能包含各種可程式化操作配置(或由其組成),例如強迫指令依據執(zhí)程式順序來執(zhí)行、強制每時鐘周期只能發(fā)出一個指令、每時鐘周期中只格式化單一指令、每時鐘周期只轉換單一微指令、每時鐘周期只引退單一指令、和/或以串列形式存取各種快取存儲器,使用的技術例如說明于美國申請案序號61/469,515者,申請日為2011年3月30日,名稱為〃經由每時鐘操作的減少的指令執(zhí)行狀態(tài)電源節(jié)約(Running State Power Saving Via ReducedInstructions Per Clock Operation) 〃(CNTR.2550),其于此并入作參考。
      [0118]可理解,微處理器可能依據不同的、及獨立組或部分獨立的操作狀態(tài)集合而配置。影響電源消耗、性能和/或響應性的各種操作配置可被分配到不同等級的電源狀態(tài),每個等級可依據一對應的階層式協(xié)調系統(tǒng)而獨立實施,而每個系統(tǒng)具有其本身的獨立界定的域、域管理者及同屬性群組協(xié)調模型。
      [0119]—般而言,一個預定操作狀態(tài)的等級可被分成至少兩個類別:(I)主要的本地操作狀態(tài)(predominantly local operating states),其只影響到位于核心本地的資源,或在一般的實際 應用下,主要只影響到特定核心的性能;及(2)受限制的操作狀態(tài)(restricted operating states),其將沖擊一個或多個由其他核心共用的資源,或在一般的實際應用下,其相對地更有可能干擾其他核心的性能。沖擊共用資源的操作狀態(tài)是相關于干擾共享該資源的其他核心的電源、性能,效率或響應性的相對較大的可能性。近端操作狀態(tài)的實現(xiàn)一般而言并不需要與其他核心協(xié)調,或獲得來自其他核心協(xié)調的允許才進行。相較之下,限制操作狀態(tài)的實現(xiàn)便需要與其他核心進行協(xié)調及許可。
      [0120]在更進階的實施例中,預定操作狀態(tài)可被分成更多階層式類別,取決于各種資源是如何共用及共用的程度。例如,一第一組操作狀態(tài)可能定義位于一核心的本地資源的配置、一第二組操作狀態(tài)可能定義由一晶片的核心共用但不位于該晶片本地資源配置、一第三組操作狀態(tài)可能定義由一封裝體的核心共用的資源的配置…等。一操作狀態(tài)的實現(xiàn)需要與在應用的操作狀態(tài)組態(tài)下共享資源的核心進行協(xié)調并取得其許可。
      [0121]一般而言,一種關于任何既定域的復合操作狀態(tài)為一個屬于該域的每個啟動實體核心的應用操作狀態(tài)的極值(亦即最大或最小值)。于一實施例中,一實體核心的應用操作狀態(tài)為核心的最近且仍然正確的目標或需求的操作狀態(tài)(如果有的話),或者,如果核心并不具有一最近的正確的目標或需求的操作狀態(tài)的話,實體核心的應用操作狀態(tài)為某些預設值。預設值可能是零(例如復合操作狀態(tài)被計算為最小值的狀況)、預定操作狀態(tài)的最大值(例如復合操作狀態(tài)被計算為最大值的狀況)、或者核心的目前實施的操作狀態(tài)。于一實施例中,一核心的應用操作狀態(tài)為一電源或操作狀態(tài),例如核心所期望的或需求的電壓ID(VID)或時鐘比率值。于另一實施例中,一核心的應用操作狀態(tài)為核心已經從所應用的系統(tǒng)軟件接收的最近的有效C-狀態(tài)。
      [0122]在另一實施例中,一實體核心的應用操作狀態(tài)為核心的最近的仍然正確的目標或需求的操作狀態(tài)的極值(如果有的話),以及將影響位于最高域(如果有的話,核心為此最高域具有管理者憑證)的本地資源的最極端操作狀態(tài)。
      [0123]因此,關于處理器的復合操作狀態(tài)整體看來將是該處理器的所有的啟動實體核心的應用電源狀態(tài)的最大值或最小值。一種封裝體的復合電源狀態(tài)將是該封裝體的所有啟動實體核心所應用的電源狀態(tài)的最大值或最小值。一種晶片的復合電源狀態(tài)將是該晶片的所有啟動實體核心的應用電源狀態(tài)的最大值或最小值。
      [0124]說明于此的分散式電源狀態(tài)管理實施例中,每個核心的電源管理邏輯的一部分或常式為同步邏輯,其被設計成至少有條件地與其他節(jié)點地連接核心(亦即,同一同屬性群組的其他核心)交換電源狀態(tài)信息,以決定一混合電源狀態(tài)。一種混合電源狀態(tài)為對應于本地(native)及同步邏輯的至少一節(jié)點地連結實例的核心的應用電源狀態(tài)的一極值。在某些非必要的情況下,由一同步常式計算及傳回的一混合電源狀態(tài)將準確地對應至關于一應用域的復合電源狀態(tài)。
      [0125]每個同步邏輯的被喚醒實例(invoked instance)是被設計成在尚未同步的節(jié)點地連接的核心中至少有條件地產生同步邏輯的從屬實例,此是開始于最立即同屬性群組的節(jié)點地連接核心,并繼續(xù)漸進地較高層級同屬性群組的節(jié)點地連接核心(如果有的話,將進行至同步邏輯實例所屬的核心)。尚未同步的節(jié)點地連接核心為節(jié)點地連接至本身的核心,其同步邏輯同步化實例尚未被實施為一復合電源狀態(tài)發(fā)現(xiàn)過程的一部分。
      [0126]此種在同步邏輯的每個實例所進行的發(fā)現(xiàn)過程,將遞歸地于尚未同步的節(jié)點地遠端核心,更進一步地產生(至少有條件地)同步邏輯的從屬實例,直到所應用的潛在被沖擊域(applicable potentially impact domain)的每一個核心上,皆有同步邏輯的同步化的實例在執(zhí)行為止。在關于所應用域的復合電源狀態(tài)的發(fā)現(xiàn)程序中,執(zhí)行于一核心上的電源管理邏輯的實例,被指定為授權予啟動或執(zhí)行關于該域的復合電源狀態(tài)的實現(xiàn)、且可啟動/或進行實現(xiàn)的能力。
      [0127]V.特定說明的實施例
      [0128]現(xiàn)在將注意力轉至附圖所顯示的特定實施例。
      [0129]于一實施例中,同步邏輯的每個實例經由與系統(tǒng)總線不同的旁路通訊或旁通總線線(核心間通訊配線112、晶片間通訊配線118以及封裝體間通訊配線1133)與其他核心上的邏輯的同步化實例進行通訊,用以利用一種分散式的分配方式執(zhí)行電源管理。這允許核心可實體地設置在多重晶片上或在多重封裝體上,藉以可能地降低晶片尺寸并改善良率,且提供系統(tǒng)中的核心數的高度擴充性(scalability),而不會對現(xiàn)代的微處理器的晶片與封裝體的接觸墊與接腳限制造成影響。
      [0130]現(xiàn)在參考圖1所顯示的方塊圖,其顯示依據本發(fā)明執(zhí)行分配在一多核心微處理器102的多重處理核心106之間的分散式電源管理的計算機系統(tǒng)100的實施例。系統(tǒng)100包含藉由一系統(tǒng)總線116耦接至多核心微處理器102的單一晶片組114。多核心微處理器102封裝體包含兩個以晶片O及晶片I表不的雙核心晶片104。晶片104安裝于封裝體的一基板上?;灏渚€網(或只簡單稱為〃配線〃)或者線路,其將晶片104的接觸墊連接至封裝體102的接腳。接腳可能因其他原因而連接至總線116。基板配線亦包含連接在晶片104間的晶片間通訊配線118(以下討論更多的)以促進它們之間的通訊,用以執(zhí)行分配在多核心微處理器102的核心106間的分散式電源管理。[0131]每一個雙核心晶片104包含兩個處理核心106,晶片O包含核心O及核心1,而晶片I包含核心2及核心3。每個晶片104具有一被指定的管理者核心106。于圖1的本實施例中,核心O為晶片O的管理者核心106,而核心2為晶片I的管理者核心106。于一實施例中,每個核心106包含配置熔絲(configuration fuses),晶片104的制造商可能燒斷配置熔絲以標示核心106何者為晶片104的管理者核心。此外,晶片104的制造商可能燒斷配置熔絲以對每個核心106指定其實例,亦即,核心106中哪一個為核心O、核心1、核心2或核心3。如上所述,專門用語〃伙伴〃是表示在相同晶片104上且彼此溝通的的核心106 ;因此,于圖1的本實施例中,核心O及核心I為伙伴,而核心2及核心3為伙伴。專門用語〃同伴〃于此是表示在不同晶片104上且彼此溝通的管理者核心106 ;因此,于圖1的本實施例中,核心O及核心2為同伴。在一實施例中,偶數核心106為每個晶片104的管理者核心。在一實施例中,核心O是標不為多核心微處理器102的啟動服務處理器(boot serviceprocessoHBSP)),其單獨被授權以與晶片組114協(xié)調某些限制活動,包含允許某些復合電源狀態(tài)的實現(xiàn)。在一實施例中,BSP核心106通知晶片組114并要求其允許總線116時鐘的移除以減少電源消耗、和/或避免在總線116上產生窺探周期,一如后續(xù)于圖3的方塊322所討論的。于一實施例中,BSP為核心106,其總線要求輸出是耦接至總線116上的BREQO信號。
      [0132]在每個晶片104之內的兩個核心106經由位于晶片104內部的核心間通訊配線112進行通訊。更明確而言,核心間通訊配線112允許在一晶片104之內的核心106彼此中斷,并彼此傳遞訊息用以執(zhí)行分配在多核心微處理器102的核心106間的分散式電源管理。于一實施例中,核心間通訊配線112包含平行總線。于一實施例中,核心間通訊配線112是類似于說明于CNTR.2528者。
      [0133]此外,核心106經由晶片間通訊配線118進行通訊。更明確而言,晶片間通訊配線118允許個別的晶片104上的管理者核心106彼此中斷,并彼此傳遞訊息以執(zhí)行分配在多核心微處理器102的核心10 6間的分散式電源管理。于一實施例中,晶片間通訊配線118以總線116時鐘頻率執(zhí)行。于一實施例中,核心106傳輸32位訊息至彼此。在傳送或廣播時,核心106在一總線116周期中于晶片間通訊配線118的單一配線上進行設置,用以表示其即將傳輸一訊息,然后在接下來的31個總線116周期上傳送31位的序列。于每個晶片間通訊配線118的末端為一 32位移位寄存器,其累積所接收的單一位而成32位的訊息。于一實施例中,32位訊息包含多個信息欄(field)。一個信息欄載明依據說明于CNTR.2534中的所共用的VRM分配式管理機制而使用的一 7位需求的VID值。其他信息欄包含關于電源狀態(tài)(例如C-狀態(tài))同步的訊息,例如C-狀態(tài)要求值與確認,其是在核心106之間交換,如于此所討論的。此外,一特殊訊息值可使一傳送其值的核心106中斷一接收其值的核心106。
      [0134]于圖1的實施例中,每個晶片104包含分別耦接至四個接腳(以〃Ρ1'、〃Ρ2〃、〃Ρ3〃以及〃Ρ4〃表示)的四個接觸墊108。關于四個接觸墊108,其中一個為輸出接觸墊(以"OUT"表示),而另外三個為輸入接觸墊(以IN1、IN2以及IN3表示)。晶片間通訊配線118是被設計如下。晶片O的OUT接觸墊與晶片I的INl接觸墊經由單一配線網耦接至接腳Pl ;晶片I的OUT接觸墊與晶片O的IN3接觸墊經由單一配線網耦接至接腳P2 ;晶片O的IN2接觸墊與晶片I的IN3接觸墊經由單一配線網耦接至接腳P3 ;而晶片O的INl接觸墊與晶片I的IN2接觸墊經由單一配線網耦接至接腳P4。于一實施例中,核心106在其所傳輸的離開OUT接觸墊108至晶片間通訊配線118 (或如以下于圖11所說明的封裝體間通訊配線1133)的每個訊息里包含一識別碼。此識別碼獨特地確認此訊息預定到達的目標核心106,在此所說明的實施例(其中此訊息被廣播至多重接受者核心106)中是有用的。于一實施例中,每個晶片104是依據在多核心微處理器102制造期間所燒斷的配置熔絲,而將四個接觸墊108的其中一個指定為輸出接觸墊(OUT)。
      [0135]當晶片O的管理者核心O想要與晶片I的管理者核心2進行通訊時,將在其OUT接觸墊上的信息傳輸至晶片I的INl接觸墊;同樣地,當晶片I的管理者核心2想要與晶片O的管理者核心O進行通訊時,將在其OUT接觸墊上的信息傳輸至晶片O的IN3接觸墊。因此,于圖1的實施例中,每個晶片104只需要一個輸入接觸墊108而非三個。然而,制造具有三個輸入接觸墊108的晶片104的一項優(yōu)點為其允許在圖1的四核心多核心微處理器102以及例如圖9所示的八核心多核心微處理器902中的相同晶片104得以被設計。此外,于圖1的本實施例中,兩個接腳P是不需要的。然而,制造具有四個接腳P的晶片104的一項優(yōu)點為其允許在圖一的相同四核心微處理器102被設計成單一四核心微處理器102、而例如圖11所示的具有兩個四核心微處理器1102可被設計為的八核心系統(tǒng)1100。然而,如顯示于圖12與14至16的四核心實施例中,可考慮移除未使用的接腳P與接觸墊108,以在需要時減少接觸墊以及接腳數。此外,例如顯示于圖19與20的本實施例中的雙核心實施例,亦可依據需要而考慮移除未使用的接腳P與接觸墊108以減少接觸墊以及接腳數、或為其他目的而被部署。
      [0136]在一實施例中,總線116包含允許晶片組114與多核心微處理器102經由類似于熟知的Pentium4總線協(xié)定的總線協(xié)定傳遞的數個信號??偩€116包含由晶片組114提供給多核心微處理器102的一總線時鐘信號,核心106使用其以產生內部核心時鐘信號,其頻率一般為總線區(qū)塊頻率的比率??偩€116亦包含一 STPCLK信號(被晶片組114設置),以要求核心106允許以移除總線時鐘信號,亦即允許以停止提供總線時鐘信號。多核心微處理器102從一預先決定的I/O連接端口地址執(zhí)行在總線116上的一 I/O讀取傳輸(只有其中一個核心106執(zhí)行它),以指示晶片組114可設置STPCLK。如以下所討論的,多重核心106經由核心間通訊配線112與晶片間通訊配線118而彼此溝通,用以決定單一核心106何時可執(zhí)行I/O讀取傳輸是有好處的。在一實施例中,在晶片組114設置STPCLK后,每一個核心106發(fā)布一 STOP GRANT訊息給晶片組114 ;一旦每個核心106已發(fā)布一 STOP GRANT訊息后,晶片組114就可移除總線時鐘。在另一實施例中,晶片組114具有一配置選擇,以使其在其移除總線時鐘之前只期望來自多核心微處理器102的單一的STOP GRANT訊息。
      [0137]現(xiàn)在參考圖2所顯示的方塊圖,其詳細顯示依據本發(fā)明圖1的核心106的其中一個典型實例。依據一個實施例,核心106微結構包含功能單元的一超純量(superscalar)、非循序執(zhí)行管線。一指令快取202快取從一系統(tǒng)存儲器提取的指令(未顯示)。一指令譯碼器204是耦接以接收來自指令快取202的指令(例如x86指令集架構指令)。一注冊別名表(RAT) 212是耦接以接收來自指令譯碼器204及來自一微序列器206的譯碼微指令,并產生譯碼微指令的依存信息。保留站214是耦接以接收來自RAT212的譯碼微指令以及依存信息。執(zhí)行單元216是耦接以接收來自保留站214的譯碼微指令并接收供譯碼微指令所使用的指令運算元。運算元可能來自核心106的寄存器(例如通用寄存器及可讀取且可寫入的特別模塊寄存器(MSR) 238,以及來自耦接至執(zhí)行單元216的一數據快取222。一引退單元218是耦接以接收由執(zhí)行單元216傳來的指令執(zhí)行結果,并將該執(zhí)行結果引退至核心106的架構狀態(tài)。數據快取222是耦接至一總線接口單元(BIU) 224,作為核心106連接至圖1總線116的接口。一鎖相回路(PLL) 226接收來自總線116的總線時鐘信號,并據以產生一核心時鐘信號242予核心106的各種功能單元。PLL226可經由執(zhí)行單元216而受控制,例如被禁能。
      [0138]執(zhí)行單元216接收一 BSP指示碼228以及一管理者指示碼232,其分別表示核心106是否為晶片104的管理者核心與多核心微處理器102的BSP核心。如上所述,BSP指示碼228與管理者指示碼232可能包含可程式化熔絲。于一實施例中,BSP指示碼228與管理者指示碼232是儲存于一特別模塊寄存器(MSR) 238中,其首先由可程式化熔絲值取出,但其可能藉由軟件寫入至MSR238而被更新。執(zhí)行單元216亦讀取并寫入控制與狀態(tài)寄存器(CSR) 234與236,用以與其他核心106溝通。尤其,核心106使用CSR236,用以經由核心間通訊配線112而與相同晶片104上的核心106溝通,且核心106使用CSR234,用以通過接觸墊108經由晶片間通訊配線118而與其他晶片104上的核心106溝通,如以下詳細說明的。
      [0139]微序列器206包含一微碼存儲器207,其被設計以儲存包含電源管理邏輯微碼208的微碼。為本揭示的目的,于此所使用的專門用語〃微碼〃表示由相同的核心106所執(zhí)行的指令,其執(zhí)行通知核心106轉變成一電源管理相關的狀態(tài)(于此稱為一休眠狀態(tài)、閑置狀態(tài)、C-狀態(tài)或電源狀態(tài))的架構指令(例如MWAIT指令)。亦即,一狀態(tài)轉變指令的實例是核心106特有的,且為因應狀態(tài)轉變指令實例所執(zhí)行的微碼208是在該核心106上執(zhí)行。處理核心106是對稱的,因為它們每個具有相同的指令集架構并被設計以執(zhí)行包含來自指令集架構指令的使用者程式。除了核心106以外,多核心微處理器102可能包含一附屬或服務處理器(未顯示),其并不具有與核心106相同的指令集架構。然而,在本發(fā)明中,核心106本身(并非附屬或服務處理器且非任何其他非核心邏輯元件)執(zhí)行分配在多核心微處理器102的多重處理核心106間的分散式電源管理,以因應狀態(tài)轉變指令,其較一種代表核心執(zhí)行電源管理的專用硬件設計更有利地提供更強的可調(尺寸的)能力、可重組性、良率特性、電源減少和/或晶片實際面積的減少等優(yōu)點。
      [0140]電源管理邏輯微碼208指令是因應至少兩個條件而被實施。首先,電源管理邏輯微碼208可被喚起以實行核心106的指令集架構的一指令。于一實施例中,X86MWAIT與IN指令等可實行在微碼208中。亦即,當指令譯碼器204遇到一 X86MWAIT或IN指令時,指令譯碼器204停止提取目前執(zhí)行的使用者程式指令,并將控制權傳送至微序列器206以開始提取實行X86MWAIT或IN指令的電源管理邏輯微碼208中的一常式。其次,電源管理邏輯微碼208可能因應一中斷事件而被喚起。亦即,當一中斷事件產生時,核心106停止提取目前的使用者程式指令,并將控制權傳送至微序列器206以開始提取掌控中斷事件的電源管理邏輯微碼208中的一常式。中斷事件包含架構中斷、例外、錯誤或陷阱(traps),例如由x86指令集架構所界定者。一中斷事件的例子為總線116上的一個對于與電源管理相關的一些預設I/O地址其中一者的I/O讀取傳輸檢測。中斷事件亦包含非架構界定的事件。于一實施例中,非架構界定的中斷事件包含:經由圖1的核心間通訊配線118(例如圖5、6所描述的連結)發(fā)送信號或經由圖1的晶片間通訊配線118發(fā)送信號(或經由圖11的封裝體間通訊配線1133發(fā)送信號,以下所討論的)的一核心間中斷需求(例如與圖5與6相關所說明的);以及藉由晶片組的一 STPCLK設置或解除設置的檢測。于一實施例中,電源管理邏輯微碼208指令為核心106微架構指令組的指令。在另一實施例中,微碼208指令為不同的指令組的指令,其將轉變成核心106的微架構指令組的指令。
      [0141]圖1的系統(tǒng)100執(zhí)行分配在多重處理核心106之間的分散式電源管理。更明確而言,每個核心實施其本地電源管理邏輯微碼208以響應一狀態(tài)轉變需求,并轉變成目標電源狀態(tài)。目標電源狀態(tài)為多個預定電源狀態(tài)(例如C-狀態(tài))的任何一個所需求者。預定電源狀態(tài)包含一參考或主動操作狀態(tài)(例如ACPI的CO狀態(tài))以及多個漸進地且相對不太敏感的狀態(tài)(例如ACPI的Cl、C2、C3等狀態(tài))。
      [0142]現(xiàn)在參考圖3所顯示的流程圖,其依據本發(fā)明顯示圖1的系統(tǒng)100的操作,用以執(zhí)行分配在多核心微處理器102的多重處理核心106間的分散式電源管理。具體言之,流程圖顯示電源管理邏輯微碼208的一部分操作,是因應于遭遇一MWAIT指令或類似的命令,以轉變成一新電源狀態(tài)。更明確而言,圖3所顯示的電源管理邏輯微碼208的部分為電源管理邏輯的一狀態(tài)轉變需求處理邏輯(STRHL)常式。
      [0143]為了促進對圖3的更佳理解,MWAIT指令與C-狀態(tài)架構的實施樣態(tài)是在說明每一個圖3的個別方塊前被說明。MWAIT指令可包含在操作系統(tǒng)(例如,Windows?、LimixR MacOS? )或其他系統(tǒng)軟件中。舉例而言,如果系統(tǒng)軟件知道系統(tǒng)上的工作量目前是低或不存在的,則系統(tǒng)軟件可能執(zhí)行一 MWAIT指令以允許核心106進入一低電源狀態(tài),直到一事件(例如從一周邊裝置的中斷)要求由核心106服務為止。另一例子為,在核心106上執(zhí)行的軟件可能與在另一核心106上執(zhí)行的軟件的共享數據,是以在存取由兩個核心106所共用數據時便需要經由例如一信號(semaphore)的同步;如果在另一核心106所執(zhí)行的儲存至信號(store to semaphore)前已經過一段顯著的時間量時,則在目前核心106上執(zhí)行的軟件將致使目前核心106經由MWAIT指令進入低電源狀態(tài),直到儲存至信號發(fā)生為止。
      [0144]MWAIT指令詳細說明于2009年3月的IntelR64與IA-32架構軟件開發(fā)人員手冊(Architectures Software Developer’s Manual),卷 2k:指令集參考(A-M)的第 3-761 至3-764頁,而監(jiān)視(MONITOR)指令是詳細說明于相同文件的第3-637經由3-639頁,其全部在此皆并入作參考。
      [0145]MWAIT指令可能指定一目標C-狀態(tài)。依據一個實施例,C-狀態(tài)O為一執(zhí)行狀態(tài),而大于O的C-狀態(tài)為休眠狀態(tài);1及較高的C-狀態(tài)為停止狀態(tài),于其中核心106不提取與執(zhí)行指令;而2及較高的C-狀態(tài)是核心106可能執(zhí)行額外動作以減少其電源消耗,例如禁能其快取存儲器并降低其電壓和/或頻率的狀態(tài)。
      [0146]依據一個實施例,2或較高的C-狀態(tài)是被視為并預先決定成為一受限制的電源狀態(tài)。在2或較高的C-狀態(tài)中,晶片組114可能移除總線116時鐘,藉以有效地禁能核心106時鐘,以便大幅地減少由核心106的電源消耗。關于每個后段較高的C-狀態(tài),將允許核心106執(zhí)行更積極的電源節(jié)約動作,雖然個別皆需要較長的時間恢復至執(zhí)行狀態(tài)??赡苁购诵?06退出低電源狀態(tài)的事件的實例為一中斷以及藉由另一處理器的儲存至一特別指定的地址范圍(由先前所執(zhí)行的監(jiān)視(MONITOR)指令所指定)。
      [0147]明顯地,對C-狀態(tài)的ACPI編號機制使用較高的C號碼以表示漸進地較不敏感、較深的休眠狀態(tài)。藉由使用這種編號機制,任何既定的主顧群組(亦即:晶片、封裝體、平臺)的復合電源狀態(tài)將是該組成群組的所有啟動核心的應用C-狀態(tài)最小值,每個核心的應用C-狀態(tài)最小值是最近的有效要求C-狀態(tài)(如果有的話)、或是零(如果核心不具備有效的最近要求應用C-狀態(tài)的話。
      [0148]然而,其他等級的電源狀態(tài)使用漸進較高的號碼以表示漸進更敏感的狀態(tài)。舉例而言,CNTR.2534說明一種指示一期望的電壓識別碼(VID)至一電壓調節(jié)器模塊(VRM)的協(xié)調系統(tǒng)。較高的VID對應至較高電壓電平,因而對應至較快的(所以是更敏感的)性能狀態(tài)。但協(xié)調一復合VID涉及決定核心所請求VID值的最大值。因為一電源狀態(tài)編號機制可依上升或下降次序被指定,所以此說明書的部分將復合電源狀態(tài)界定為一"極值",其是相關核心的應用電源狀態(tài)的最小值或最大值。然而,應明白即使所請求的VID及時鐘比率值是朝與習知順序相反的方向"予以訂定(orderable)"(譬如使用從原始值開始的負計數);因此不管傳統(tǒng)上界定的方向為何,描述于此的更特殊界定的階層式協(xié)調系統(tǒng)通常亦適用這些電源狀態(tài)。
      [0149]雖然圖3說明一實施例,于其中核心106響應一 MWAIT指令以執(zhí)行分散式電源管理,但是核心106亦可能響應其他形式的輸入而通知核心106其可能進入一低電源狀態(tài)。舉例而言,總線接口單元224可能產生一信號,以因應檢測到總線116上的一 I/O讀取傳輸至一預先決定的I/O端口范圍時,用以使核心106進入陷阱而執(zhí)行微碼208。再者,核心106因應所接收的其他外部信號而進入陷阱執(zhí)行微碼208的實施例亦被本發(fā)明所考量,且實施例并未受限于x86指令集架構實施例或受限于包含一 Pentium4型式處理器總線的系統(tǒng)實施例。再者,一核心106的既定目標狀態(tài)可能內部地被產生,如經常出現(xiàn)具有期望的電壓與時鐘數值的情況。
      [0150]現(xiàn)在把焦點放在圖3的個別功能方塊上,流程于方塊302開始。于方塊302,圖2的指令譯碼器204遇到一MWAIT指令并進入陷阱而執(zhí)行電源管理邏輯微碼208,且特別是實現(xiàn)MWAIT指令的STRHL常式。MWAIT指令載明以"X"表示的一目標C-狀態(tài),并在核心106等待一事件發(fā)生的同時通知其可能進入一最佳化狀態(tài)。具體言之,最佳化狀態(tài)可能是一低電源狀態(tài),于其中核心106將消耗比核心106遇到MWAIT指令的執(zhí)行狀態(tài)下更少的電源。
      [0151]流程繼續(xù)至方塊303。微碼將"X"儲存成為核心的應用或最近的有效要求的電源狀態(tài),以"Y"表示??勺⒁獾剑绻诵?06尚未遇到一 MWAIT指令、或如果因為從那時起該指令已被取代或變成陳舊的(譬如藉由一后來的STPCLK解除設置)且核心是處于一正常執(zhí)行狀態(tài),則儲存為核心的應用或最近的有效要求電源狀態(tài)的數值"Y"為O。
      [0152]流程繼續(xù)至方塊304。于方塊304,微碼208 (更詳細而言是STRHL常式)檢驗〃X〃,其為對應于目標C-狀態(tài)的一數值。如果"X"小于2(亦即,目標C-狀態(tài)為1),則流程繼續(xù)至方塊306 ;而,如果目標C-狀態(tài)大于或等于2 (亦即,"X"對應至一受限制的電源狀態(tài)),則流程繼續(xù)至方塊308。于方塊306,微碼208將核心106置于休眠。亦即,微碼208的STRHL常式將控制寄存器寫入在核心106之內,用以使其停止提取并執(zhí)行指令。因此,核心106消耗比其處于執(zhí)行狀態(tài)時更少的電源。最好的狀況是,當核心106正休眠時,微序列器206亦沒有提取并執(zhí)行微碼208指令。流程于方塊306結束。圖5說明為因應從休眠被喚醒的核心106的操作。
      [0153]方塊308表示一條路徑,其是"X"為2或更多的對應于一受限制的電源狀態(tài)時,微碼208的STRHL常式所執(zhí)行的操作。如上所述,于一實施例中,2或更多的一種C-狀態(tài)涉及移除總線116時鐘??偩€116時鐘是由核心106所共用的一資源,因此當一核心設有2或較高的一目標C-狀態(tài)時,較佳的方式是核心106通過于此所說明的以一種分配式與協(xié)調方式進行通訊,用以確認每個核心106已被通知其可以在通知晶片組114(其可能移除總線116時鐘)之前轉變成2或更大的C-狀態(tài)。
      [0154]在方塊308中,微碼208的STRHL常式基于由于方塊302所遇到的MWAIT指令特別指定的目標C-狀態(tài),執(zhí)行相關的電源節(jié)約動作(PSA)。一般而言,由核心106所采取的PSA包含獨立于其他核心106的動作。舉例而言,每個核心106包含其自己的快取存儲器,其位于核心106本身(例如,指令快取202與數據快取222)的近端,而PSA包含刷新局部快取、移除它們的時鐘以及使它們斷電。在另一實施例中,多核心微處理器102可能包含由多重核心106所共用的快取。于本實施例中,共用的快取無法被刷新、使它們的時鐘被移除、或被斷電,直到核心106彼此溝通以決定所有核心106已接收指定一適當的目標C-狀態(tài)的一MWAIT為止,在這種情況下,它們可能在通知晶片組114其可能需求移除總線116時鐘和/或抑制在總線116上產生窺探循環(huán)的允許之前,刷新共用的快取、移除它們的時鐘并使它們斷電(參見方塊322)。于一實施例中,核心106共用一電壓調節(jié)器模塊(VRM)。CNTR.2534說明一種利用一種分配式的分散方式以管理由多重核心所共用的一 VRM的設備及方法。于一實施例中,每個核心106具有其本身的PLL226,如于圖2的本實施例中,以使核心106可減少其頻率或禁能PLL226以節(jié)省電源而不會影響其他核心106。然而,在其他實施例中,一晶片104上的核心106可能共用一 PLL。CNTR.2534說明一種利用一種分配式的分散方式以管理由多重核心所共用的PLL的裝置及方法。于此所說明的電源狀態(tài)管理與相關的同步邏輯的實施例,亦可能(或選擇地)被應用以利用一種分配式的分散方式來管理由多重核心所共用的一 PLL。
      [0155]流程繼續(xù)至方塊312。于方塊312,電源狀態(tài)管理微碼208的STRHL常式呼叫以sync_C-狀態(tài)表示的另一電源狀態(tài)管理微碼208常式(其是相關于圖4而詳細說明的),用以與其他節(jié)點地連接核心106溝通并為多核心微處理器102獲得一合成C-狀態(tài),在圖3中以Z表示。相對于正在核心上執(zhí)行的實例,sync_C-狀態(tài)常式的每個被喚醒實例于此稱為sync_C-狀態(tài)常式的一 〃本地〃實例。
      [0156]微碼208的STRHL常式喚起具有一輸入參數或探測(probe)電源狀態(tài)數值的sync_C-狀態(tài)常式,探測電源狀態(tài)數值等于核心的應用電源狀態(tài)(亦即,其最近的有效要求的目標電源狀態(tài)),其是由MWAIT指令所特別指定的在方塊302中所接收的"X"的數值。喚起sync_C-狀態(tài)常式開始一復合電源狀態(tài)發(fā)現(xiàn)過程,如與圖4相關而做更進一步說明者。
      [0157]每個被喚醒sync_C-狀態(tài)常式計算一 〃混合〃C_狀態(tài)并使〃混合〃C_狀態(tài)回復至呼叫或實施它(于此是STRHL常式)的任何程序?!ɑ旌?C-狀態(tài)為所探測C-狀態(tài)數值中的最小值,而所探測C-狀態(tài)數值是由被喚醒程序所接收、在核心上執(zhí)行sync_C-狀態(tài)常式的應用C-狀態(tài)、以及由與sync_C-狀態(tài)常式的相關被引發(fā)實例所接收的C-狀態(tài)數值。以下將說明在某些情況之下,混合C-狀態(tài)為共通于本地sync_C-狀態(tài)常式與同步化sync_C-狀態(tài)常式兩者的域的復合電源狀態(tài)相關。以下亦說明在其他情況中,混合C-狀態(tài)可能只是域的一局部合成C-狀態(tài)。
      [0158]一般而言,一域的復合電源狀態(tài)為該域的所有核心的應用電源狀態(tài)的極值(在ACPI電源狀態(tài)機制中是最小值)。舉例而言,一晶片104的合成C-狀態(tài)為晶片的所有核心106的應用C-狀態(tài)(例如,最近的有效要求的C-狀態(tài),如果所有核心皆具有這樣的數值的話)的最小值。整體看來,多核心微處理器102的合成C-狀態(tài)為多核心微處理器102的所有核心106的應用C-狀態(tài)的最小值。
      [0159]然而,一種混合電源狀態(tài)可能是一應用域的復合電源狀態(tài),或只是局部的復合電源狀態(tài)。一局部的復合電源狀態(tài)將是兩個以上但小于全部的一應用域的核心應用電源狀態(tài)的極值。在一些部分中,此說明書表示一種〃至少局部合成電源狀態(tài)〃以包含任何變化的計算而得的混合電源狀態(tài)。在一混合電源狀態(tài)與一復合電源狀態(tài)之間的電位(即使是細微的)區(qū)別將通過圖4C、10及17的說明而變得更顯清楚。
      [0160]預先注意到,多核心微處理器102的一非零的合成C-狀態(tài)表示每個核心106已看見載明一非執(zhí)行C-狀態(tài)(亦即,具有I或更大的數值的C-狀態(tài))的MWAIT ;而一零值的合成C-狀態(tài)表示并非每個核心106已看到MWAIT。再者,大于或等于2的數值表示多核心微處理器102的所有核心106已接收載明2或更大的C-狀態(tài)MWAIT指令。
      [0161]流程繼續(xù)至決定方塊314。于決定方塊314中,微碼208的STRHL常式檢查于方塊312所決定的混合C-狀態(tài)〃Z"。如果"Z〃大于或等于2,則流程繼續(xù)至決定方塊318。否貝U,流程繼續(xù)至方塊316。
      [0162]于方塊316,微碼208的STRHL常式將核心106置于休眠。流程于方塊316結束。
      [0163]于決定方塊318,微碼208的STRHL常式判斷核心106是否為BSP。如果是,則流程繼續(xù)至方塊322 ;否則,流程繼續(xù)至方塊324。
      [0164]于方塊322,BSP106通知晶片組114其可能要求移除總線116時鐘和/或抑制在總線116上產生窺探循環(huán)的允許。
      [0165]于一實施例中,依據熟知的Pentium4總線協(xié)定,唯一被授權以允許較高的電源管理狀態(tài)的BSP106,將通知晶片組114其可能藉由初始化總線116上的一 I/O讀取傳輸至一預先決定的I/O端口,來要求移除總線116時鐘和/或抑制在總線116上產生窺探循環(huán)的允許。然后,晶片組114設置在總線116上的STPCLK信號以要求移除總線116時鐘的允許。于一實施例中,在通知晶片組114其可于方塊322(或方塊608)設置STPCLK之后,執(zhí)行于BSP核心106上的微碼208的STRHL常式將等待晶片組114設置STPCLK,而非前進至休眠狀態(tài)(于方塊324或方塊614),然后通知其他核心106有關此STPCLK的設置、發(fā)布其STOP GRANT訊息,然后進行到休眠狀態(tài)。依據由I/O讀取傳輸而特別指定的預先決定的I/O連接端口地址,晶片組114可隨后抑制在總線116上廣生窺探循環(huán)。
      [0166]流程繼續(xù)至方塊324。于方塊324,微碼208將核心106置于休眠狀態(tài)。流程于方塊324結束。
      [0167]現(xiàn)在參考圖4,一流程圖顯示圖1的系統(tǒng)100的另一元件的操作,其執(zhí)行分配在多核心微處理器102的多重處理核心106之間的分散式電源管理。更明確而言,流程圖顯示圖3(與圖6)的電源狀態(tài)管理微碼208的sync_C-狀態(tài)常式的一實例的操作。雖然圖4為顯示微碼208的sync_C-狀態(tài)常式的單一實例的功能性流程圖,但將從下面理解到其經由該常式的多重同步實例實現(xiàn)一合成C-狀態(tài)發(fā)現(xiàn)過程。流程于方塊402開始。
      [0168]于方塊402,一核心106上的微碼208 (〃sync_C_狀態(tài)微碼208〃)的sync_C_狀態(tài)常式的一實例被喚醒并接收一輸入探測C-狀態(tài),在圖4中以"A"表示。sync_C-狀態(tài)常式的一實例可能從MWAIT指令微碼208所執(zhí)行處被喚醒,如相關于圖3所說明,在這種情況下,sync_C-狀態(tài)常式構成sync_C-狀態(tài)常式的一初始實例。此外,sync_C_狀態(tài)常式的一實例可能藉由源自另一核心的一同步需求(于此稱為一外部地產生的同步需求)而產生,在這種情況下,sync_C_狀態(tài)常式構成sync_C_狀態(tài)常式的一從屬實例(dependent instance)。尤其當執(zhí)行于另一個節(jié)點地連接核心上的sync_C_狀態(tài)常式的一本地實例,可能藉由將一適當的核心間中斷傳送至本地核心來產生sync_C-狀態(tài)常式的本地實例。如相關于圖6更詳細說明的,電源狀態(tài)管理微碼208的一核心間中斷處理常式(ICIH)將處理由節(jié)點地連接核心106所接收的核心間中斷。
      [0169]流程繼續(xù)至決定方塊404。于決定方塊404,如果sync_C_狀態(tài)常式的這個實例(亦即,"本地實例")是一初始實例,亦即,如果其是從圖3的MWAIT指令微碼208被喚醒,則流程繼續(xù)至方塊406。否則,本地實例是藉由執(zhí)行于一節(jié)點地連接核心上的sync_C-狀態(tài)常式的外部或本地實例所產生的一從屬實例,而流程繼續(xù)至決定方塊432。
      [0170]于方塊406,sync_C-狀態(tài)微碼208藉由程式化圖2的CSR236來產生在其伙伴核心上的一從屬Sync_C-狀態(tài)常式,用以將于方塊402所接收的〃A〃值傳送至其伙伴并用以中斷伙伴。這將要求伙伴計算一混合C-狀態(tài)并將其傳回至本地核心106,以下將對此做更詳細的說明。
      [0171 ] 流程繼續(xù)至方塊408。于方塊408,sync_C-狀態(tài)微碼208程式化CSR236,用以檢測伙伴已傳回一混合C-狀態(tài)至核心106,如果是,則獲得伙伴的混合C-狀態(tài),在圖4中以〃B〃表示。應注意的是,如果伙伴位于其最活躍的執(zhí)行狀態(tài)(most active running state),則〃B"的數值將是零。于一實施例中,微碼208等待伙伴以響應在一回圈中于方塊406做出的請求,此回圈為一預先決定的數值來輪詢CSR236,用以檢測伙伴是否已傳回一混合C-狀態(tài)。于一實施例中,此回圈包含一逾時計數器;如果逾時計數器到期,則微碼208假設伙伴核心106不再被啟動且可被使用、在任何后續(xù)的sync_C-狀態(tài)計算中并不包含供該伙伴用的應用或假設C-狀態(tài)、以及隨后也未試圖與伙伴核心106進行通訊。再者,在與其他核心106(亦即,同伴核心與好友核心)的通訊方面,微碼208皆以類似方式操作,不管其是否經由核心間通訊配線112或晶片間通訊配線118(或于下所說明的封裝體間通訊配線1133)與另一個核心106相通。
      [0172]流程繼續(xù)至方塊412。于方塊412,sync_C_狀態(tài)微碼208為核心106屬于其的一部分的晶片104,通過計算"A"與"B"值的最小值來算出一混合C-狀態(tài),并以〃C"做表示。在一雙核心晶片中,〃C〃將必定是合成C-狀態(tài),因為〃A〃及〃B〃值表示晶片上的所有(兩個)核心的應用C-狀態(tài)。
      [0173]流程繼續(xù)至決定方塊414。于決定方塊414,如果于方塊412所計算的〃C〃值小于2,或本地核心106并非是管理者核心106,則流程繼續(xù)至方塊416。否則,〃C〃值至少是2且本地核心106為管理者核心,而流程繼續(xù)至方塊422。
      [0174]于方塊416,常式對于在方塊412喚起其(于此是STRHL常式)以計算〃C〃值的呼叫程序進行回復。流程于方塊416結束。
      [0175]于方塊422,sync_C-狀態(tài)微碼208藉由程式化圖2的CSR234產生在其同伴核心上的sync_C-狀態(tài)常式的一從屬實例,用以將于方塊412所計算的〃C〃值傳送至其同伴并用以中斷同伴。這將要求同伴計算并傳回一混合C-狀態(tài),并提供其回到這個核心106,如以下更對此做更詳細的說明。
      [0176]在這一點上,應注意sync_C_狀態(tài)微碼208并未在同伴核心中產生sync_C_狀態(tài)常式的從屬實例,直到其已經決定其自己的晶片本身的合成C-狀態(tài)為止。事實上,于本說明書中所說明的所有的sync_C_狀態(tài)常式皆依據一相容巢狀域走訪順序進行操作。亦即,每個sync_C-狀態(tài)常式漸進地且有條件地發(fā)現(xiàn)合成C-狀態(tài),首先是在其為一部分(例如,晶片)的最低域開始,然后,若它是該域的管理者,則以巢狀方式往下一個較高層級域進行(例如,在圖1的情況下是處理器本身)的,等等。隨后討論的圖13,將更進一步顯示這種尋訪順序,其中sync_C-狀態(tài)常式有條件地且漸進地首先發(fā)現(xiàn)核心為晶片一部分的合成C-狀態(tài),接著尋訪它為封裝體的一部分(若核心亦為該晶片的管理者),最后尋訪整個處理器或系統(tǒng)的(若核心亦為處理器的BSP)。
      [0177]流程繼續(xù)至方塊424。于方塊424,sync_C-狀態(tài)微碼208程式化CSR234以檢測同伴已傳回一混合C-狀態(tài),并獲得混合C-狀態(tài),在圖4中以〃D〃表示。在某些情況之下,"D",在某些情形將會,但并不需要全部(如以下與圖C中的對應的數值"L"相關的說明)構成同伴的晶片合成C-狀態(tài)。
      [0178]流程繼續(xù)至方塊426。于方塊426,sync_C-狀態(tài)微碼208藉由計算〃C〃及〃D〃值的最小值為多核心微處理器102計算一混合C-狀態(tài),其以〃E〃表示。假設"D〃為同伴的晶片合成C-狀態(tài),則〃E〃將構成處理器的合成C-狀態(tài),因為〃E〃將是〃C〃 (如上所述,我們知道的這種晶片的合成C-狀態(tài))及"D〃(同伴的晶片合成C-狀態(tài))的最小值,且在處理器上沒有核心被從計算中所省略。如果不是的話,則"E"可能構成處理器的只有一部分的合成C-狀態(tài)(亦即,這個晶片上的核心與同伴核心的應用C-狀態(tài)的最小值,而非亦屬于同伴的伙伴的應用C-狀態(tài)的最小值)。流程繼續(xù)至決定方塊428。
      [0179]于方塊428,常式將于方塊426所計算的〃E〃值傳回至其呼叫者。流程于方塊428結束。
      [0180]于決定方塊432,如果圖6的核心間中斷處理常式喚醒sync_C-狀態(tài)常式以因應從核心的伙伴的一中斷(亦即,一伙伴喚醒此常式),則流程繼續(xù)至方塊434。否則,核心間中斷處理常式喚醒sync_C-狀態(tài)常式以因應從核心的同伴的一中斷(亦即,同伴產生此常式),而流程繼續(xù)至方塊466。
      [0181 ] 于方塊434,核心106被其伙伴所中斷,所以sync_C_狀態(tài)微碼208程式化CSR236,用以獲得由伙伴及其所產生常式所遞送的探測C-狀態(tài),在圖4中以"F"表示。流程繼續(xù)至方塊436。
      [0182]于方塊436,sync_C-狀態(tài)微碼208藉由計算其本身的應用C-狀態(tài)〃Y〃與探測C-狀態(tài)"F"(由其伙伴所接收)的最小值來為其晶片104本身計算一混合C-狀態(tài),其結果是以〃G〃表示。在一雙核心晶片中,〃G〃將會是包含核心106的晶片104的合成C-狀態(tài),因為在那種情況下,"Y"及"F"將分別表示該晶片的所有(兩個)核心的應用C-狀態(tài)。
      [0183]流程繼續(xù)至決定方塊438。于決定方塊438,如果于方塊436所計算的〃G〃值小于2或核心106并非是管理者核心106,則流程繼續(xù)至方塊442。否則,如果〃G〃為至少2且核心為管理者核心,則流程繼續(xù)至方塊446。
      [0184]于方塊442,為因應從其伙伴核心間而來的中斷請求,sync_C-狀態(tài)微碼208程式化CSR236,用以將于方塊436所計算的"G〃值傳送至其伙伴。流程繼續(xù)至方塊444。于方塊444,sync_C-狀態(tài)微碼208將于方塊436所計算的〃G〃值傳回至喚醒它的程序。流程于方塊444結束。
      [0185]于方塊446,sync_C-狀態(tài)微碼208藉由程式化圖2的CSR234而在其同伴核心上產生sync_C-狀態(tài)常式的一從屬實例,用以將于方塊436所計算的〃G〃值傳送至其同伴,并用以中斷同伴。這將要求同伴計算一混合C-狀態(tài)并將其傳回至這個核心106,以下將對此做更詳細說明。流程繼續(xù)至方塊448。
      [0186]于方塊448,sync_C-狀態(tài)微碼208程式化CSR234以檢測同伴已傳回混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),在圖4中以"H"表示。在至少某些而不需要全部的情況中(如與圖4C中的對應的數值"L"相關的說明),"H"將構成同伴的晶片的合成C-狀態(tài)。流程繼續(xù)至方塊452。
      [0187]于方塊452,sync_C-狀態(tài)微碼208藉由計算〃G〃及〃H〃值的最小值為多核心微處理器102計算一混合C-狀態(tài),并以〃J〃來表示。假設"H"為同伴的晶片合成C-狀態(tài),則"J"將構成處理器的合成C-狀態(tài),因為〃J〃將是〃G〃 (如上所述,我們知道這是該晶片的合成C-狀態(tài))及"H"(同伴的晶片合成C-狀態(tài))的最小值,且在處理器上沒有核心被從計算所省略的話。如果不是的話,則"J 〃可能構成處理器的只有一部分的合成C-狀態(tài)(亦即,這個晶片上的核心與同伴核心的應用C-狀態(tài)的最小值,而非亦屬于同伴的伙伴的應用C-狀態(tài)的最小值)。因此,"H"構成處理器的〃至少局部的合成"C-狀態(tài)。
      [0188]流程繼續(xù)至方塊454。于方塊454,為因應經由從其伙伴的核心間中斷請求,sync_C-狀態(tài)微碼208程式化CSR236,用以將于方塊452所計算的〃J〃值傳送至其伙伴。流程繼續(xù)至方塊456。于方塊456,常式將于方塊452所計算的"J〃值傳回至喚醒它的程序。流程于方塊456結束。
      [0189]于方塊466,核心106被其同伴所中斷,所以sync_C_狀態(tài)微碼208程式化CSR234,用以獲得由同伴所產生常式遞送的輸入探測C-狀態(tài)于,在圖4中以"K"表示。
      [0190]由于sync_C-狀態(tài)常式的階層式尋訪順序,同伴將不會中斷此種核心,除非其已經發(fā)現(xiàn)其晶片的合成C-狀態(tài),所以"K〃會是所產生同伴的合成C-狀態(tài)。又,應注意到因為其被一同伴所中斷,這就表示核心106為晶片104的管理者核心106。
      [0191]流程繼續(xù)至方塊468。于方塊468,sync_C_狀態(tài)微碼208藉由計算其本身的應用C-狀態(tài)"Y"與所接收的同伴合成C-狀態(tài)"K"值的最小值,來計算處理器的至少局部的合成C-狀態(tài),其結果是以"L"表示。
      [0192]如果〃L〃為1,則〃L〃無法是處理器的合成C-狀態(tài),因為其并未合并其伙伴的應用C-狀態(tài)。如果其伙伴的應用C-狀態(tài)為0,則(未被精確發(fā)現(xiàn)下)供處理器用的合成C-狀態(tài)將是O。然而,縱使不需要被精確發(fā)現(xiàn),處理器的合成C-狀態(tài)也不大于〃L〃。在揭示于這個特定臨界值觸發(fā)實施例的電源管理邏輯中,一旦發(fā)現(xiàn)一混合C-狀態(tài)小于2,就知道處理器的合成C-狀態(tài)亦小于2。小于2的C-狀態(tài)的實現(xiàn)只具有局部效果,所以更精確的判定合成C-狀態(tài)并非必要。因此合成C-狀態(tài)發(fā)現(xiàn)過程可能逐漸放松并終止,如于此所顯示的。
      [0193]然而,如果"L〃為0,則其必然是處理器的合成C-狀態(tài),因為(如上所述)處理器的合成C-狀態(tài)無法超過處理器的任何一個混合C-狀態(tài)。于部分說明書提到Sync_C-狀態(tài)常式為計算一 〃至少局部的合成數值〃的微妙處是有好處的。流程繼續(xù)至決定方塊472。
      [0194]于決定方塊472,如果于方塊468所計算的〃L〃值小于2,則流程繼續(xù)至方塊474。否則,流程繼續(xù)至方塊478。應注意的是本發(fā)明的其他實施例可省略這種臨界值條件(例如,L〈2?)以繼續(xù)一合成C-狀態(tài)發(fā)現(xiàn)過程。在這樣的實施例中,處理器的每個啟動核心將無條件地決定處理器的合成C-狀態(tài)。
      [0195]于方塊474,為因應由其同伴而來的核心間中斷請求,sync_C-狀態(tài)微碼208程式化CSR234,用以將于方塊468所計算的〃L〃值傳送至其同伴。再者,應注意當同伴接收〃L〃時,其正接收可能構成處理器的局部合成數值。然而,因為〃L〃小于2,所以處理器的合成數值亦必定小于2,將排除任何更進一步判斷處理器的合成數值的行動(如果〃L〃為I)。流程繼續(xù)至方塊476。于方塊476,常式將于方塊468所計算的〃L"值傳回至其呼叫者。流程于方塊476結束。
      [0196]于方塊478,sync_C-狀態(tài)微碼208藉由程式化CSR236在其伙伴核心上喚醒一從屬Sync_C-狀態(tài)常式,用以將于方塊468所計算的"L"值傳送至其伙伴并用以中斷伙伴。這將要求伙伴計算一混合C-狀態(tài)并將其提供給核心106??勺⒁獾皆趫D1的四核心實施例并以圖4的sync_C-狀態(tài)微碼208作說明的架構中,這將相當于請求伙伴提供其最近的請求C-狀態(tài)(如果有的話)。[0197]流程繼續(xù)至方塊482。于方塊482,sync_C-狀態(tài)微碼208程式化CSR236以檢測伙伴已傳回一混合C-狀態(tài)至核心106,并獲得伙伴的混合C-狀態(tài),在圖4中以〃M〃表示??勺⒁獾饺绻锇樘幱谄渥罨钴S的執(zhí)行狀態(tài)時,則"M"的數值將是零。流程繼續(xù)至方塊484。
      [0198]于方塊484,sync_C-狀態(tài)微碼208藉由計算"L"及"M"值的最小值而為多核心微處理器102計算一混合C-狀態(tài),以"N"表示??勺⒁獾?,在圖1的四核心實施例并以圖4的sync_C-狀態(tài)微碼208作說明的架構中,〃N"必定是處理器的合成C-狀態(tài),因為其包含同伴的晶片合成C-狀態(tài)K、核心自己的應用C-狀態(tài)A、以及伙伴的應用C-狀態(tài)(后者是并入由伙伴所傳回的混合電源狀態(tài)M)的最小值,這三個狀態(tài)一起包含所有四個核心的應用C-狀態(tài)。
      [0199]流程繼續(xù)至方塊486。于方塊486,為因應經由其同伴而來的核心間中斷請求,sync_C-狀態(tài)微碼208程式化CSR234,用以將于方塊484所計算的〃N〃值傳送至其同伴。流程繼續(xù)至方塊488。于方塊488,常式將于方塊484所計算的〃N"值傳回至其呼叫者。流程于方塊488結束。
      [0200]現(xiàn)在參考圖5所顯示的流程圖,其顯示依據本發(fā)明圖1的系統(tǒng)100,用以執(zhí)行分配在多核心微處理器102的多重處理核心106間的分散式電源管理的操作。更明確而言,此流程圖顯示藉由電源狀態(tài)管理微碼208的喚起與重新開始(wake-and-resume)常式的核心,以因應核心106被一事件從一休眠狀態(tài)(例如從圖3的方塊306、316或324,或從圖6的方塊614進入)喚醒后的操作。流程于方塊502開始。
      [0201]于方塊502,核心106因應一事件而從其休眠狀態(tài)醒來,并藉由提取及執(zhí)行微碼208的一指令處理程序而重新開始。事件可能包含但并未受限于:一核心間中斷,亦即經由核心間通訊配線112或晶片間通訊配線118 (或圖11實施例的封裝體間通訊配線1133)從另一核心106而來的中斷;藉由晶片組114的總線116上的STPCLK信號的設置;藉由晶片組114在總線116上對STPCLK信號解除設置(deassertion);以及另一型式的中斷,例如一外部中斷要求信號的設置,例如可能藉由一周邊裝置(例如USB裝置)而產生。流程繼續(xù)至決定方塊504。[0202]于決定方塊504,喚起與重新開始常式判斷核心106是否被另一核心106的中斷所喚起。如果是,則流程繼續(xù)至方塊506 ;否則,流程繼續(xù)至決定方塊508。
      [0203]于方塊506,一核心間中斷常式掌控核心間中斷,如相關于圖6所詳細說明的。流程于方塊506結束。
      [0204]于決定方塊508,喚起與重新開始常式判斷核心106是否被藉由晶片組114在總線116上設置STPCLK信號置所喚起。如果是,則流程繼續(xù)至方塊512 ;否則,流程繼續(xù)至決定方塊516。
      [0205]于方塊512,為因應于圖3的方塊322或于圖6的方塊608所執(zhí)行的I/O讀取傳輸,晶片組114已設置STPCLK請求移除總線116時鐘的允許?;貞诖耍诵?06微碼208在總線116上發(fā)布一 STOP GRANT訊息,以通知晶片組114其可能移除總線116時鐘。如上所述,于一實施例中,晶片組114將持續(xù)等待,直到所有核心106已發(fā)布STOP GRANT訊息后再移除總線116時鐘。而在另一實施例中,可在單一核心106已發(fā)布STOP GRANT訊息之后,由晶片組114移除總線116時鐘。流程繼續(xù)至方塊514。
      [0206]于方塊514,核心106返回至休眠。而晶片組114將移除總線116時鐘,以便減少因多核心微處理器102的電源消耗,如上所述。最后,晶片組114將恢復總線116時鐘,然后解除設置STPCLK,以便使核心106回復至它們的執(zhí)行狀態(tài),俾能使它們可以執(zhí)行使用者指令。流程于方塊514結束。
      [0207]于決定方塊516,喚起與重新開始常式判斷核心106是否藉由晶片組114于總線116上的STPCLK信號的解除設置所喚起。如果是,則流程繼續(xù)至方塊518 ;否則,流程繼續(xù)至方塊526。
      [0208]于方塊518,為因應一事件(例如系統(tǒng)計時器中斷或周邊中斷),晶片組114已恢復總線116時鐘并解除設置STPCLK以使核心106再開始執(zhí)行?;貞诖?,喚起與重新開始常式解除于方塊308所執(zhí)行的電源節(jié)約動作。舉例而言,微碼208可能使電源恢復予核心106局部快取、增加核心106時鐘頻率、或增加核心106操作電壓。此外,核心106可能使電源恢復予共用快取,舉例而言,如果核心106為BSP。流程繼續(xù)至方塊522。
      [0209]于方塊522,喚起與重新開始常式讀取并寫入CSR234與236,用以通知所有其他核心106這個核心106已醒來且再度執(zhí)行。喚起與重新開始常式可儲存"0〃以作為核心的應用或者最新的有效要求C-狀態(tài)。流程繼續(xù)至方塊524。
      [0210]于方塊524,喚起與重新開始常式終止并將控制返回至指令譯碼器204,以重新開始譯碼提取的使用者程式指令(例如,x86指令)。具體言之,典型的使用者指令提取與執(zhí)行將在MWAIT指令之后的指令重新開始。流程于方塊524結束。
      [0211]于方塊526,喚起與重新開始常式處理其他中斷事件,例如上述相關于方塊502者。流程于方塊526結束。
      [0212]現(xiàn)在參考圖6所顯示的流程圖,其顯示本發(fā)明圖1的系統(tǒng)100用以執(zhí)行分配在多核心微處理器102的多重處理核心106之間的分散式電源管理操作。更明確而言,此流程圖顯示微碼208的核心間中斷處理常式(ICIHR)的操作,其是因應接收一核心間中斷,亦即經由核心間通訊配線112或晶片間通訊配線118 (例如可能于圖4的方塊406、422、446或478所產生的)從另一核心106的中斷所執(zhí)行的操作。微碼208可能藉由輪詢(如果微碼208已經執(zhí)行)采取一核心間中斷、或者微碼208可能采取一核心間中斷以作為在使用者程式指令之間的一真正的中斷、或者中斷可能使微碼208從核心106正休眠的狀態(tài)喚醒。
      [0213]流程于方塊604開始。于方塊604,中斷核心106的ICIHR依據圖4呼叫一本地sync_C-狀態(tài)常式,以繼續(xù)由另一核心所開始的同步化電源狀態(tài)發(fā)現(xiàn)過程?;貞诖耍浍@得供多核心微處理器102的至少一局部合成C-狀態(tài),圖6中以"PC"表示。ICIHR呼叫具有一輸入值"Y"的sync_C-狀態(tài)微碼208,其是由外部sync_C-狀態(tài)常式所遞送的探測C-狀態(tài),而本地sync_C_狀態(tài)常式將依附(will depend)于外部sync_C_狀態(tài)常式。又,大于或等于2的數值表示"PC"為一種多核心微處理器102的所有核心106的完全且非僅是局部的合成C-狀態(tài),并表示處理器的所有核心106已接收指定"PC"或更大的C-狀態(tài)數值的一MWAIT指令。
      [0214]流程繼續(xù)至方塊606。于方塊606,微碼208決定于方塊604所獲得的"PC"的數值是否大于或等于2,以及核心106是否被授權以執(zhí)行或允許"PC"C-狀態(tài)的執(zhí)行(例如,核心106為BSP)。如果是,則流程繼續(xù)至方塊608 ;否則,流程繼續(xù)至決定方塊612。
      [0215]于方塊608,核心106 (例如,當BSP核心106被授權如此做時)通知晶片組114其可能要求移除總線116時鐘的許可,如于上述的方塊322。流程繼續(xù)至決定方塊612。
      [0216]于決定方塊612,微碼208決定其是否從休眠被喚起。如果是,則流程繼續(xù)至方塊614 ;否則,流程繼續(xù)至方塊616。
      [0217]于方塊614,微碼208返回至休眠。流程于方塊614結束。
      [0218]于方塊616,微碼208離開并歸還控制權返回至指令譯碼器204,并重新開始對所提取的使用者程式指令進行解譯。流程于方塊616結束。
      [0219]現(xiàn)在參考圖7所顯示的流程圖,其顯示本發(fā)明圖1的系統(tǒng)100依據圖3至6所說明流程的操作實例。在圖7的例子中,使用者程式同時有效地在核心106上執(zhí)行,每個執(zhí)行一 MWAIT指令。相較之下,在圖8的例子中,使用者程式有效地在核心106上執(zhí)行,每個于不同的時間執(zhí)行一 MWAIT指令,亦即在另一核心已執(zhí)行一 MWAIT指令而進入休眠之后才執(zhí)行。這些例子一起顯示核心106的微碼208的特征,以及它們在各種核心106上處理不同順序MWAIT指令的能力。圖7包含四行,每行對應于圖1的四個核心106的每一個。如以上相關于圖1所顯示與所述者,核心O與核心2為它們的晶片104的管理者核心,而核心O為多核心微處理器102的BSP。圖7的每行表示由各個核心106所采取的動作。圖7每列的動作向下流程則表示時間的經過。
      [0220]首先,每個核心106遇到一個由各種C-狀態(tài)所指定的MWAIT指令(于方塊302)。在圖7的例子中,送至核心O與核心3的MWAIT指令指定4的C-狀態(tài),而送至核心I與核心2的MWAIT指令指定5的C-狀態(tài)。每一個核心106回應地執(zhí)行其相關的電源節(jié)約動作(于方塊308),并將所接收的目標C-狀態(tài)("X")儲存為其所應用的以及最近的有效要求C-狀態(tài)"Y"。
      [0221]其次,每個核心106將其應用C-狀態(tài)"Y"作為一探測C-狀態(tài)傳送至其伙伴(于方塊406),如以具有"A"標記值的箭號所表示。每個核心106接著接收其伙伴的探測C-狀態(tài)(于方塊408),并計算其晶片104合成C-狀態(tài)"C〃(于方塊412)。在此例子中,由每個核心106所計算的〃C〃值為4。因為核心I及核心3并非是管理者核心,所以它們兩者前進至休眠(于方塊324)。
      [0222]因為核心O與核心2是管理者核心,所以它們彼此(亦即,它們的同伴)傳送各自的"C"值給對方(于方塊422),如以具有"C"標記值的箭號所表示。它們每個接收其同伴的晶片合成C-狀態(tài)(于方塊424),并計算多核心微處理器102合成C-狀態(tài)〃E〃 (于方塊426)。在此例子中,由每一個核心O與核心2所計算的〃E〃值為4。因為核心2并非是BSP核心106,所以其進行到休眠(于方塊324)。
      [0223]因為核心O為BSP,所以其通知晶片組114可能要求移除總線116時鐘的許可(于方塊322),例如,設置STPCLK。更明確而言,核心O通知晶片組114有關多核心微處理器102合成C-狀態(tài)為4,然后核心O進行到休眠(于方塊324)。依據由于方塊322所初始化的I/o讀取傳輸而特別指定的預定I/O連接端口地址,晶片組114可隨后抑制在總線116上產生窺探循環(huán)。
      [0224]當所有的核心106休眠時,晶片組114設置STPCLK將喚醒每個核心106 (于方塊502)。每一個核心106回應地發(fā)布一 STOP GRANT訊息給晶片組114 (于方塊512),然后返回至休眠(于方塊514)。核心106可能休眠持續(xù)一段不明確的時間量,在沒有電源節(jié)約動作與休眠的益處下,仍可比它們正常操作時消耗更少的電源。
      [0225]最后,發(fā)生一喚醒事件。在此例子中,晶片組114解除設置STPCLK,其喚醒每一個核心106 (于方塊502)。每一個核心106回應地解除其先前的電源節(jié)約動作(于方塊518),并離開其微碼208且恢復至提取并執(zhí)行使用者碼(于方塊524)。
      [0226]現(xiàn)在參考圖8所顯示的流程圖,其顯示依據本發(fā)明圖1的系統(tǒng)100依據圖3至6所說明操作流程的第二實例。圖8的流程圖類似于圖7 ;然而,在圖8的例子中,每個有效地在核心106上執(zhí)行的使用者程式于不同的時間執(zhí)行一 MWAIT指令,亦即在另一個核心在執(zhí)行一 MWAIT指令且已前進至休眠之后才執(zhí)行。
      [0227]核心3首先遇到一個具有特定目標C-狀態(tài)"X"為4的MWAIT指令(于方塊302)。核心3回應地執(zhí)行其相關的電源節(jié)約動作(于方塊308),并將"X"儲存為其應用C-狀態(tài),以下更進一步以"Y"表示。核心3接著將其應用C-狀態(tài)作為一探測C-狀態(tài)傳送至其伙伴,核心2,(于方塊406),如以具有"A"標記值的箭號所表示,其將中斷核心2。
      [0228]核心2被其伙伴核心3所中斷(于方塊604)。因為核心2仍然處于一執(zhí)行狀態(tài),所以其自己的應用C-狀態(tài)為0,以"Y"表示(在方塊604中)。核心2接收核心3的探測C-狀態(tài)(于方塊434),以"F"表示并具有4的數值。核心2接著計算其晶片104合成C-狀態(tài)〃G〃 (于方塊436),并將O的〃G〃值傳回至其伙伴核心3 (于方塊442)。然后,核心2離開其微碼208并回復至使用者碼(于方塊616)。
      [0229]核心3接收其伙伴核心2的O的同步C-狀態(tài)"B"(于方塊408)。核心3接著又計算其晶片104合成C-狀態(tài)"C"(于方塊412)。因為"C〃的數值為0,所以核心3進行到休眠(于方塊316) ο
      [0230]核心2隨后遇到一個具有特定目標C-狀態(tài)"X"為5的MWAIT指令(于方塊302)。核心2回應地執(zhí)行相關的電源節(jié)約動作(于方塊308),并將"X"儲存為其應用C-狀態(tài),隨后對核心2以"Y"表示。核心2接著將"Y"(其為5)作為一探測C-狀態(tài)傳送至其伙伴,核心3,(于方塊406),如以具有"A"標記值的箭號所表示,其將中斷核心3。
      [0231]核心3是被喚醒核心3的其伙伴核心2所中斷(于方塊502)。因為核心3之前遇到C-狀態(tài)為4的MWAIT指令,且該數值仍然是正確的,其應用C-狀態(tài)為4,以"Y"表示(在方塊604中)。核心3接收核心2的探測C-狀態(tài)(于方塊434),以"F"表示并具有5的數值。核心3接著計算其晶片104合成C-狀態(tài)"G"(于方塊436)以作為探測C-狀態(tài)的最小值(亦即,5)、以及自己的應用C-狀態(tài)(亦即,5),并將4的〃G〃值作為一混合C-狀態(tài)傳回至其伙伴核心2 (于方塊442)。核心3接著返回至休眠(于方塊444)。
      [0232]核心2接收其伙伴核心3的混合C-狀態(tài)(于方塊408),以"B"表示并具有4的數值,然后計算其晶片104合成C-狀態(tài)"C〃值(于方塊412)作為混合C-狀態(tài)的一最小值(亦即,4)、以及自己的應用C-狀態(tài)(亦即,4)。因為核心2已發(fā)現(xiàn)其最低層次域的合成C-狀態(tài)是至少為2的數值,但作為該域的管理者的核心2則屬于一較高層級的同屬性群組,所以其(核心2)接著將自己的"C〃值(為4)傳送至其同伴核心O (于方塊422),其將中斷核心O。
      [0233]核心O是被其同伴核心2所中斷(于方塊604)。因為核心O處于一執(zhí)行狀態(tài),所以其應用C-狀態(tài)為0,以"Y"表示(在方塊604中)。核心O接收核心2的探測C-狀態(tài)(于方塊466),以"K"表示并具有4的數值。然后,核心O計算其混合C-狀態(tài)"L"(于方塊468),并將O的〃L〃值傳送至其同伴核心2 (于方塊474)。接著,核心O離開其微碼208并回復至使用者碼(于方塊616)。
      [0234]核心2接收其同伴核心O的混合C-狀態(tài)(于方塊424),以〃D〃表示并具有O的數值,然后計算其自己混合C-狀態(tài)(于方塊426),其是以〃E〃表示。因為〃E〃值為0,所以核心2進行到休眠(于方塊316)。
      [0235]核心O接著遇到一個特定目標C-狀態(tài)〃X〃為4的MWAIT指令(于方塊302)。核心O回應地執(zhí)行相關的電源節(jié)約動作(于方塊308),并將"X"儲存為其應用C-狀態(tài),以〃Y〃表示。然后,核心O將〃Y"(其為4)作為一探測C-狀態(tài)傳送至其伙伴,核心1,(于方塊406),以具有"Α"標記值的箭號表示,其將中斷核心I。
      [0236]核心I是被其伙伴核心O所中斷(于方塊604)。因為核心I仍然處于一執(zhí)行狀態(tài),所以其應用C-狀態(tài)為0,以"Y"表示(在方塊604中)。核心I接收核心O的探測C-狀態(tài)(于方塊434),以"F"表示并具有4的數值。核心I接著計算其晶片104合成C-狀態(tài)〃G〃 (于方塊436),并將O的〃G〃值傳回至其伙伴核心O (于方塊442)。然后,核心I離開其微碼208并回復至使用者碼(于方塊616)。
      [0237]核心O接收其伙伴核心I的數值為O的混合C-狀態(tài)"B"(于方塊408)。核心O接著計算其晶片104合成C-狀態(tài)"C"(于方塊412)。因為"C〃的數值為0,所以核心O進行到休眠(于方塊316)。
      [0238]核心I隨后遇到一個具有特定目標C-狀態(tài)"X"為3的MWAIT指令(于方塊302)。核心I回應地將"X"儲存為其應用電源狀態(tài)"Y",并執(zhí)行相關的電源節(jié)約動作(于方塊308)。然后,核心I將其應用C-狀態(tài)"Y"(為3)傳送至其伙伴,核心0,(于方塊406),如以具有"A"標記值的箭號表示,其將中斷核心O。
      [0239]核心O是被喚醒核心O的伙伴核心I所中斷(于方塊502)。因為核心O以前遇到目標C-狀態(tài)為4的MWAIT指令,所以其應用C-狀態(tài)為4,以"Y"表示(在方塊604中)。核心O接收核心I的探測C-狀態(tài)(于方塊434),以"F"表示并具有3的數值。核心O接著計算其晶片104合成C-狀態(tài)〃G〃 (于方塊436),并將3的〃G〃值傳送至其同伴核心2 (于方塊446),其將中斷核心2。
      [0240]核心2是被其同伴核心O所中斷(于方塊604),同伴核心O喚醒核心2 (于方塊502)。因為核心2之前遇到C-狀態(tài)為5的MWAIT指令,所以其應用C-狀態(tài)為5,以"Y"表示(在方塊604中)。核心2接收核心O的探測C-狀態(tài)(于方塊466),以"K"表示并具有3的數值。核心2接著計算一 〃混合"C-狀態(tài)〃L〃 (于方塊468),并將3的〃L〃值傳送至其伙伴核心3 (于方塊474),其將中斷核心3。
      [0241]核心3是被喚醒核心3的伙伴核心2所中斷(于方塊502)。因為核心3之前遇到C-狀態(tài)為4的MWAIT指令,所以其應用C-狀態(tài)為4,以"Y"表示(在方塊604中)。核心3接收核心2的C-狀態(tài)(于方塊434),以〃F〃表示并具有3的數值。核心3接著計算一混合C-狀態(tài)〃G〃 (于方塊436),并將3的〃G〃值傳送至其伙伴核心2 (于方塊442)。因為〃G〃現(xiàn)在負責每一個核心的應用C-狀態(tài),所以〃G〃構成多核心處理器102合成C-狀態(tài)。然而,因為核心3并非是BSP且從休眠被喚起,所以核心3返回至休眠(于方塊614)。
      [0242]核心2接收其伙伴核心3的數值為3的混合C-狀態(tài)〃M〃 (于方塊482)。核心2接著計算一混合C-狀態(tài)"N"(于方塊484)。然后,核心2將3的"N"值傳送至其同伴核心O (于方塊486)。再者,因為"N"負責每一個核心的應用C-狀態(tài),所以"N"亦需要構成多核心處理器102合成C-狀態(tài)。然而,因為核心2并非是BSP且從休眠被喚起,所以核心2返回至休眠(于方塊614)。
      [0243]核心O接收其同伴核心2的數值為3的C-狀態(tài)"H"(于方塊448)。核心O接著又計算混合C-狀態(tài)〃J"(數值為3)(于方塊452),并將其傳送至伙伴核心I (于方塊454)。再者,因為〃J〃負責每一個核心的應用C-狀態(tài),所以〃J〃亦需要構成多核心處理器102合成C-狀態(tài)。又因為核心O為BSP,所以其通知晶片組114要求移除總線116時鐘的許可(于方塊608)。更明確而言,核心O通知晶片組114多核心微處理器102合成C-狀態(tài)為3。然后,核心O進行到休眠(于方塊614)。
      [0244]核心I接收其伙伴核心O的數值為3的C-狀態(tài)"B"(于方塊408)。核心I亦計算一混合C-狀態(tài)〃C〃 (于方塊412),其為3且其亦構成多核心處理器102合成的C-狀態(tài)。因為核心I并非是BSP,所以核心I進行到休眠(于方塊316)。
      [0245]現(xiàn)在所有核心106就像它們在圖7的例子般是處于休眠狀態(tài),且事件的進行方式亦類似于圖7所說明的方式,亦即,晶片組114設置STPCLK并喚醒核心106,等等。
      [0246]明顯地,藉由這個最終同步化電源狀態(tài)發(fā)現(xiàn)過程完成的期間,所有的核心已各別計算多核心處理器102合成C-狀態(tài)。
      [0247]于一實施例中,微碼208被設計成無法被中斷。因此,在圖7的例子中,當每個核心106的微碼208被喚醒以處理其各個MWAIT指令時,當另一個核心106試圖中斷微碼208時它并未被中斷。取而代的的是,舉例而言,核心O看到核心I已送出其C-狀態(tài),并于方塊408獲得來自核心I的C-狀態(tài),認為核心I于方塊406送出其C-狀態(tài)以因應核心O中斷核心I。同樣地,核心I看到核心O已送出其C-狀態(tài),并于方塊408獲得來自核心I的C-狀態(tài),認為核心O于方塊406送出其C-狀態(tài)以因應核心I的中斷核心O。因為核心O與核心I的每個在計算至少局部合成的C-狀態(tài)時將其他核心106的C-狀態(tài)納入考量,所以每個核心106將計算至少局部合成的C-狀態(tài)。因此,舉例而言,核心I將計算至少局部合成的C-狀態(tài),無論核心O是否將其C-狀態(tài)送出至核心I以因應接收來自核心I的一中斷或者因應遇到一 MWAIT指令,在這種情況下,兩個C-狀態(tài)可同時跨越核心間通訊配線112 (或跨越晶片間通訊配線118,或跨越封裝體間通訊配線1133,于圖11的本實施例中)而傳送。因此,有利的是,微碼208可適當地操作以執(zhí)行多核心微處理器102的核心106間的分散式電源管理,而不管由各種核心106所接收MWAIT指令的事件的順序為何。
      [0248]如可從前文觀察到的,廣義來說,當一核心106遇到一 MWAIT指令時,其首先與其伙伴交換C-狀態(tài)信息,且兩個核心106基于兩個核心106的C-狀態(tài)而為晶片104計算一至少局部合成的C-狀態(tài),但是例如在雙核心晶片的情況下,其將是相同的數值。管理者核心106只在計算晶片104合成C-狀態(tài)之后,接著與它們的同伴交換C-狀態(tài)信息,且兩者基于兩個晶片104的合成C-狀態(tài)為多核心微處理器102所計算的合成C-狀態(tài)將是相同的數值。依據此種方法,可得到的好處是,不管核心106接收它們的MWAIT指令的順序為何,所有核心106計算相同的合成C-狀態(tài)。再者,較佳是,不管核心106接收它們的MWAIT指令的順序為何,它們以一種分配式方式彼此協(xié)調,以使多核心微處理器102可作為單一實體與晶片組114溝通有關要求參與相對于多核心微處理器102是全域性的電源節(jié)約動作的許可,例如移除總線116時鐘。有利的是,這種分配式C-狀態(tài)同步以達成電源管理的實施樣態(tài),是在不需要使用位于的晶片104上但位于核心106外部的執(zhí)行電源管理的專用硬件的情形下被執(zhí)行,其可能提供下述優(yōu)點:可調(尺寸的)能力、可重組性、良率特性、電源減少以和/或晶片實際尺寸減少。
      [0249]可注意到,具有不同數目及配置的核心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所說明的。
      [0250]再者,其他具有核心106的不對稱配置(例如圖21及22所顯示者)的多核心微處理器實施例的每個核心106,可能采用相對于圖3至6而改變的類似微碼208,例如以下相關于圖10、13以及17所述。再者,除于此所說明的具有不同數目及配置的核心106和/或封裝體(其采用以下相關于圖3至6以及10、13與17所說明的核心106的微碼208的操作組合)之外的系統(tǒng)實施例等,亦被本發(fā)明所考慮在內并得以依實際應用做等效修飾。
      [0251]現(xiàn)在參考圖9所顯示的方塊圖,其顯示本發(fā)明的計算機系統(tǒng)900執(zhí)行分配在一多核心微處理器902的多重處理核心106間的分散式電源管理的一替代實施例。系統(tǒng)900類似于圖1的系統(tǒng),而多核心微處理器902是類似于圖1的多核心微處理器102 ;然而,多核心微處理器902為一種八核心微處理器902,其包含組織在單一微處理器封裝體上的四個雙核心晶片104,以晶片O、晶片1、晶片2以及晶片3表不。晶片O包含核心O與核心1,而晶片I包含核心2與核心3,類似于圖1 ;此外,晶片2包含核心4與核心5,而晶片3包含核心6與核心7。在每個晶片之內,核心為彼此的伙伴,但每個晶片選擇一核心被標示為該晶片的管理者。
      [0252]封裝體上的晶片管理者具有多條將每個晶片連接至每隔一個晶片的晶片間通訊配線。這允許一協(xié)調系統(tǒng)的實現(xiàn),于其中晶片管理者包含一同儕合作(peer-collaborative)同屬性群組的成員;亦即,每個晶片管理者是能夠與封裝體上的任何其他晶片管理者協(xié)調。晶片間通訊配線118是被設計如下。晶片O的OUT接觸墊、晶片I的INl接觸墊、晶片2的IN2接腳以及晶片3的IN3接腳是經由單一配線網耦接至接腳Pl ;晶片I的OUT接觸墊、晶片2的INl接觸墊、晶片3的IN2接觸墊以及晶片O的IN3接觸墊是經由單一配線網耦接至接腳P2 ;晶片2的OUT接觸墊、晶片3的INl接觸墊、晶片O的IN2接觸墊以及晶片I的IN3接觸墊是經由單一配線網耦接至接腳P3 ;晶片3的OUT接觸墊、晶片O的INl接觸墊、晶片I的IN2接觸墊以及晶片2的IN3接觸墊是經由單一配線網耦接至接腳P4。
      [0253]當每一個管理者核心106想要與其他晶片104溝通時,將傳輸其OUT接觸墊108上的信息,且此信息廣播至其他晶片104,并經由適當的IN接觸墊108被各自的管理者核心106所接收。如可從圖9觀察到的,有利的是每個晶片104上的接觸墊108的數目與封裝體902上接腳P的數目(亦即,關于分配在于此所說明的多重核心之間的分散式電源管理的接觸墊與接腳;而,多核心微處理器102當然可包含用于其他目的的其他接觸墊與接腳,例如數據、地址以及控制總線)是不大于晶片104的數目,其為一相當小的數目。這在一接觸墊有限的和/或接腳有限的設計上特別有利,而這可能是共通的,因為標準晶片/封裝體上的接觸墊/接腳數目是有規(guī)范的,對于微處理器制造商而言嘗試去遵循這些標準數值有其經濟效益,而在這種情形下可能已使用大部分的接觸墊/接腳。再者,說明于下的替代實施例,其每個晶片104上的接觸墊108的數目為或可能為小于晶片104的數目。
      [0254]現(xiàn)在參考圖10所顯示的流程圖,其顯示依據本發(fā)明圖9的系統(tǒng)900執(zhí)行分配在八核心微處理器902的多重處理核心106間的分散式電源管理的操作流程。更明確而言,圖10的流程圖顯示圖3(與圖6)sync_C-狀態(tài)微碼208的操作,類似于圖4的流程圖,其在許多方面是相似的,且相同號碼的方塊是類似的。然而,在圖10的流程圖中所說明的核心106的sync_C-狀態(tài)微碼208負責八個核心106存在的情形而非于圖1的本實施例中的四個核心106,而現(xiàn)在說明差異。尤其,晶片104的每個管理者核心106具有三個同伴核心106而非一個同伴核心106。此外,管理者核心106 —起界定一同儕合作同屬性群組,于其中任何同伴可以直接任何其他同伴協(xié)調,無須藉由封裝體管理者或BSP來仲裁。
      [0255]流程開始于圖10中的方塊402,并繼續(xù)經由方塊416,如相關于圖4所說明者。然而,圖10并不包含方塊422、424、426或428。反之,流程繼續(xù)從決定方塊414離開〃N0〃分支至決定方塊1018。
      [0256]于決定方塊1018, sync_C_狀態(tài)微碼208決定所有其同伴是否已被造訪,亦即,核心106是否已經由方塊1022與1024與每一個同伴交換C-狀態(tài)。如果是,則流程繼續(xù)至方塊416 ;否則,流程繼續(xù)至方塊1022。
      [0257]于方塊1022,sync_C-狀態(tài)微碼208藉由程式化圖2的CSR234在其下一個同伴上產生sync_C-狀態(tài)的新實例,用以將"C〃值傳送至其下一個同伴,并用以中斷同伴。在第一同伴的情況中,所送出的"C"值是于方塊412被計算出;在剩下的同伴的情況中,〃C"值是于方塊1026被計算出。在包含方塊414、1018、1022、1024以及1026的回圈中,微碼208追蹤已造訪的同伴,以確保其已造訪它們每一個(除非于決定方塊414被發(fā)現(xiàn)是真實的狀況)。[0258]流程繼續(xù)至方塊1024。于方塊1024,sync_C_狀態(tài)微碼208程式化CSR234以檢測下一個同伴已傳回一混合C-狀態(tài),并獲得混合C-狀態(tài),以〃D〃表示。
      [0259]流程繼續(xù)至方塊1026。于方塊1026,sync_C_狀態(tài)微碼208藉由計算〃C〃與〃D〃值的最小值,來計算一最近計算的本地混合C-狀態(tài),以〃C〃表示。流程回復至決定方塊414。
      [0260]流程繼續(xù)從圖10中的方塊434,并繼續(xù)經由方塊444,如相關于圖4所說明的。然而,圖10并不包含方塊446、448、452、454或456。反之,流程繼續(xù)從決定方塊438離開〃N0〃分支至決定方塊1045。
      [0261]于決定方塊1045, sync_C_狀態(tài)微碼208決定所有其同伴是否已被造訪,亦即,核心106是否已經由方塊1046與1048與每一個同伴交換C-狀態(tài)。如果是,則流程繼續(xù)至方塊442 ;否則,流程繼續(xù)至方塊1046。
      [0262]于方塊1046,sync_C-狀態(tài)微碼208藉由程式化CSR234在其下一個同伴上產生sync_C-狀態(tài)常式的新實例,用以將"G"值傳送至其下一個同伴,并用以中斷同伴。在第一同伴的情況中,所送出的"G"值是于方塊436所計算;在剩下的同伴的情況中,"G"值是于方塊1052被計算出。
      [0263]流程繼續(xù)至方塊1048。于方塊1048,微碼208程式化CSR234以檢測下一個同伴已傳回一混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),以〃H〃表示。
      [0264]流程繼續(xù)至方塊1052。于方塊1052,sync_C-狀態(tài)微碼208藉由計算〃G〃與〃H〃值的最小值來計算一最近計算的本地混合C-狀態(tài),以"G"表示。流程回復至決定方塊438。
      [0265]流程繼續(xù)從圖10中的方塊466,并繼續(xù)經由方塊476,如相關于圖4所說明者。可注意到于方塊474中,同伴(核心106傳送〃L"值給它)是中斷核心106的同伴。此外,流程繼續(xù)從圖10中的決定方塊472離開"NO"分支,并繼續(xù)經由方塊484,如相關于圖4所說明者。然而,圖10并不包含方塊486或488。反之,流程繼續(xù)從方塊484至決定方塊1085。
      [0266]于決定方塊1085,如果〃L〃值小于2,則流程繼續(xù)至方塊474 ;否則,流程繼續(xù)至決定方塊1087。在流程從方塊484繼續(xù)至決定方塊1085的情況中,〃L〃值是于方塊484被計算出;在流程從方塊1093繼續(xù)至決定方塊1085的情況中,〃L"值是于方塊1093被計算出。流程繼續(xù)至決定方塊1087。
      [0267]于決定方塊1087, synch_C_狀態(tài)微碼208判斷所有同伴是否已被造訪,亦即,核心106是否已經與每一個同伴交換C-狀態(tài)或從每一個同伴接收C-狀態(tài)。在中斷同伴的情況下,C-狀態(tài)是經由方塊466被接收(且將經由方塊474被送出);因此,中斷的同伴是被視為已經被造訪;剩下的同伴中,C-狀態(tài)是經由方塊1089與1091被交換。如果所有同伴已被造訪,則流程繼續(xù)至方塊474 ;否則,流程繼續(xù)至方塊1089。
      [0268]于方塊1089,微碼208藉由程式化CSR234在其下一個同伴上產生sync_C_狀態(tài)常式的一新實例,用以將"L"值傳送至其下一個同伴,并用以中斷同伴。在第一同伴的情況中,所送出的〃L〃值是于方塊484被計算出;在剩下的同伴的情況中,〃L〃值是于方塊1093被計算出。
      [0269]流程繼續(xù)至方塊1091。于方塊1091,微碼208程式化CSR234以檢測下一個同伴已傳回一混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),以〃M〃表不。
      [0270]流程繼續(xù)至方塊1093。于方塊1093,sync_C-狀態(tài)微碼208藉由計算〃L〃與〃M〃值的最小值來計算本地混合C-狀態(tài)的最近計算的數值,以"L"表示。流程回復至決定方塊1085。
      [0271]現(xiàn)在參考圖11所顯示的方塊圖,其顯示本發(fā)明的計算機系統(tǒng)1100執(zhí)行分配在兩個多核心微處理器102的多重處理核心106間的分散式電源管理的一種替代實施例。系統(tǒng)1100是類似于圖1的系統(tǒng)100,且兩個多核心微處理器102每個是類似于圖1的多核心微處理器102 ;然而,此系統(tǒng)包含耦接在一起的兩個多核心微處理器102,用以提供一種八核心系統(tǒng)1100。因此,圖11的系統(tǒng)1100亦類似于圖9的系統(tǒng)900,其包含四個雙核心晶片104,以晶片O、晶片1、晶片2以及晶片3表不。晶片O包含核心O與核心I,晶片I包含核心2與核心3,晶片2包含核心4與核心5,而晶片3包含核心6與核心7。然而,晶片O與晶片I是包含在第一多核心微處理器封裝體102中,而晶片2與晶片3是包含在第二多核心微處理器封裝體102中。因此,雖然核心106是被分配在圖11的本實施例中的多重多核心微處理器封裝體102之間,然而核 心106共用某些電源管理相關的資源,亦即由晶片組114與晶片組114所提供的用以窺探或不窺探總線116時鐘在處理器總線上快取的策略,因此晶片組114可由預先決定的I/O連接端口地址,而期望總線116上的單一 I/O讀取傳輸。此外,兩個封裝體102的核心106潛在地共用一 VRM,而晶片104的核心106可能共用一 PLL,如上所述。有利的是,圖11的系統(tǒng)1100的核心106 (尤其核心106的微碼208)是被設計成與彼此溝通,用以如于此以及CNTR.2534中所說明的,藉由使用核心間通訊配線112、晶片間通訊配線118以及封裝體間通訊配線1133(說明于下),以分散方式在協(xié)調共用電源管理相關的資源的控制。
      [0272]第一多核心微處理器102的晶片間通訊配線118是如圖1中的設計。然而,第二多核心微處理器102的接腳是以〃P5〃、〃P6〃、〃P7〃以及〃P8〃表示,且第二多核心微處理器102的晶片間通訊配線118是被設計如下。晶片2的IN2接觸墊與晶片3的IN3接觸墊經由單一配線網耦接至接腳P5 ;晶片2的INl接觸墊與晶片3的IN2接觸墊是經由單一配線網耦接至接腳P6 ;晶片2的OUT接觸墊與晶片3的INl接觸墊經由單一配線網耦接至接腳P7 ;晶片3的OUT接觸墊與晶片2的IN3接觸墊經由單一配線網耦接至接腳P8。再者,經由系統(tǒng)1100的主機板的封裝體間通訊配線1133,第一多核心微處理器102的接腳Pl耦接至第二多核心微處理器102的接腳P7,以使晶片O的OUT接觸墊、晶片I的INl接觸墊、晶片的IN2接觸墊,以及晶片3的IN3接觸墊是經由單一配線網而全部耦接在一起;第一多核心微處理器102的接腳P2耦接至第二多核心微處理器102的接腳P8,以使晶片I的OUT接觸墊、晶片2的INl接觸墊、晶片3的IN2接觸墊,以及晶片O的IN3接觸墊是經由單一配線網而全部耦接在一起;第一多核心微處理器102的接腳P3是耦接至第二多核心微處理器102的接腳P5,以使晶片O的OUT接觸墊、晶片I的皿接觸墊、晶片2的IN2接觸墊,以及晶片3的IN3接觸墊是經由單一配線網而全部耦接在一起;第一多核心微處理器102的接腳P4耦接至第二多核心微處理器102的接腳P6,以使晶片O的OUT接觸墊、晶片I的INl接觸墊、晶片2的IN2接觸墊,以及晶片3的IN3接觸墊是經由單一配線網而全部耦接在一起。圖2的CSR234亦耦接至封裝體間通訊配線1133,用以啟動微碼208以程式化CSR234而經由封裝體間通訊配線1133與其他核心106溝通。因此,每個晶片104的管理者核心106是被啟動以經由封裝體間通訊配線1133與晶片間通訊配線118而與其他晶片104的管理者核心106(亦即,其同伴)溝通。當每一個管理者核心106想要與其他晶片104溝通時,其傳輸在其OUT接觸墊108上的信息,且此信息是廣播至其他晶片104并藉由經由適當的IN接觸墊108被各自管理者核心106所接收。如可能從圖11觀察到的,有利的是,相對于每個多核心微處理器102,每個晶片104上的接觸墊108的數目與封裝體102上的接腳P的數目不大于晶片104的數目,其為相當小的數目。
      [0273]再者,請注意對于晶片104的一既定管理者核心106而言,每隔一個晶片104的管理者核心106為既定管理者核心106的〃同伴〃核心106,可從圖11觀察到核心O、核心2、核心4以及核心6為類似于圖9中配置的同伴,即使在圖9中,所有的四個晶片104是包含于單一個八核心微處理器封裝體902中,而在圖11中,四個晶片104是包含于兩個分離的四核心微處理器封裝體102中。因此,相關于圖10所說明的微碼208是被設計成如在圖11的系統(tǒng)1100中操作。此外,所有四個同伴核心106 —起形成一同儕合作同屬性群組,其中每個同伴核心106是在沒有仲裁的情況下被啟動,以在無論哪一個同伴核心106被指定為BSP核心都可直接與任何其他的同伴核心106進行協(xié)調。
      [0274]更進一步注意到,雖然接腳P在多處理器實施例(例如圖11與圖12的所示者)中是需要的,但如果必要的話,接腳可能在單一多核心微處理器102實施例中被省略,雖然它們對于除錯目的是有益的。
      [0275]現(xiàn)在參考圖12所顯示的方塊圖,其顯示依據本發(fā)明計算機系統(tǒng)1200執(zhí)行分配在兩個多核心微處理器1202的多重處理核心106間的分散式電源管理的一替代實施例。系統(tǒng)1200是類似于圖11的系統(tǒng)1100,而多核心微處理器1202是類似于圖11的多核心微處理器102。然而,系統(tǒng)1200的八個核心是依據一較深的階層式協(xié)調系統(tǒng)并藉由旁路配線被組織且以實體連接。
      [0276]每個晶片104只具有三個接觸墊108 (OUT、INl以及IN2),用以耦合至晶片間通訊配線118 ;每個封裝體1202只具有兩個接腳,在第一多核心微處理器1202上以Pl與P2表示,以及在第二多核心微處理器1202上以P3與P4表示;而連接圖12的兩個多核心微處理器1202的晶片間通訊配線118與封裝體間通訊配線1133具有不同于圖11中對應元件的配置。
      [0277]在圖12的系統(tǒng)1200中,核心O與核心4被指定為它們各自的多核心微處理器1202的〃封裝體管理者〃或〃p管理者〃。再者,除非另有說明,否則專門用語〃好友〃于此是用以表示彼此通訊的不同封裝體1202上的管理者核心106 ;因此,于圖12的本實施例中,核心O與核心4為好友。第一多核心微處理器1202的晶片間通訊配線118是被設計如下。在第一封裝體1202之內,晶片O的OUT接觸墊與晶片I的INl接觸墊經由單一配線網耦接至接腳Pl ;晶片I的OUT接觸墊與晶片O的INl接觸墊經由單一配線網耦接;而晶片O的IN2接觸墊是耦接至接腳P2。在第二封裝體1201之內,晶片2的OUT接觸墊與晶片3的INl接觸墊經由單一配線網耦接至接腳P3 ;晶片3的OUT接觸墊與晶片2的INl接觸墊經由單一配線網耦接;而晶片2的IN2接觸墊是耦接至接腳P4。再者,經由系統(tǒng)1200的主機板的封裝體間通訊配線1133,接腳Pl是耦接至接腳P4,以使晶片O的OUT接觸墊、晶片I的INl接觸墊,而晶片2的IN2接觸墊經由單一配線網而全部耦接在一起;以及接腳P2是耦接至接腳P3,以使晶片2的OUT接觸墊、晶片3的皿接觸墊,以及晶片O的IN2接觸墊經由單一配線網而全部耦接在一起。
      [0278]因此,不像在圖9的系統(tǒng)900中以及在圖11的系統(tǒng)1100中,于其中每個管理者核心106可與其他管理者核心106通訊,在圖12的系統(tǒng)1200中,只有管理者核心O與管理者核心4可彼此溝通(亦即,經由于此所說明的旁路配線)。圖12的實施例勝過圖11的一項優(yōu)點為相關于每個多核心微處理器1202,每個晶片104上的接觸墊108數目(I)比晶片104的數目小,以及每個封裝體1202上的接腳P數目⑵比晶片104的數目小,其為一相當小的數目。此外,在核心106之間的C-狀態(tài)交換的數目可能更少。于一實施例中,為了除錯的目的,第一多核心微處理器1202亦包含耦接至晶片I的OUT接觸墊108的一第三接腳,而第二多核心微處理器1202亦包含耦接至晶片3的OUT接觸墊108的一第三接腳。
      [0279]現(xiàn)在參考圖13所顯示的流程圖,其顯示依據本發(fā)明圖12的系統(tǒng)1200用以執(zhí)行分配在雙四核心微處理器1202(八個核心)系統(tǒng)1200的多重處理核心106間的分散式電源管理操作。更明確而言,圖13的流程圖顯示圖3 (與圖6)sync_C-狀態(tài)微碼208的操作,類似于圖4與10的流程圖,其在許多方面是相似的,且相同號碼的方塊是類似的。然而,在圖13的流程圖中所說明的核心106的sync_C-狀態(tài)微碼208所負責的晶片間通訊配線118及封裝體間通訊配線1133的配置在圖12的系統(tǒng)1200與圖11的系統(tǒng)1100兩者之間是不同的,特別是某些管理者核心106 (亦即核心2及核心4)并未被設計成與系統(tǒng)1200的所有其他管理者核心106直接溝通,但取而代的的是好友(核心O及核心4)以一種階層式方式向下傳遞至它們的同伴(分別為核心2與核心6),其再依序向下傳遞至它們的伙伴核心106?,F(xiàn)在說明這些差異。
      [0280]流程開始于圖13中的方塊402,并繼續(xù)前進至方塊424,如相關于圖4所說明者。然而,圖10并未包含方塊426或428。反之,流程繼續(xù)從方塊424前進至方塊1326。此外,于決定方塊432,如果被中斷的核心106為一好友而非一伙伴或同伴,則流程繼續(xù)至方塊1301。
      [0281]于方塊1326,sync_C-狀態(tài)微碼208藉由計算〃C"與〃D"值的最小值來計算(本地)混合C-狀態(tài)的一最近計算的數值,以〃c〃表示。
      [0282]流程繼續(xù)至決定方塊1327。于決定方塊1327,如果于方塊1326所計算的〃C〃值小于2或核心106并非是封裝體管理者核心106,則流程繼續(xù)至方塊416 ;否則,流程繼續(xù)至方塊1329。
      [0283]于方塊1329,sync_C_狀態(tài)微碼208藉由程式化CSR234在其好友上產生sync_C-狀態(tài)的新實例,用以將于方塊1326所計算的"C"值傳送至其好友并用以中斷好友。這要求好友計算并傳回一混合C-狀態(tài)(這種情形類似上述與圖4相關的說明,可能構成整個處理器的合成C-狀態(tài)),并要求好友將其提供回到這個核心106。
      [0284]流程繼續(xù)至方塊1331。于方塊1331,sync_C_狀態(tài)微碼208程式化CSR234以檢測好友已傳回一混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),以〃D〃表示。
      [0285]流程繼續(xù)至方塊1333。于方塊1333,sync_C-狀態(tài)微碼208藉由計算〃C〃與〃D〃值的最小值來計算一最近計算的混合C-狀態(tài),以"C"表示??勺⒁獾剑僭OD至少為2,于是一旦流程繼續(xù)至方塊1333,就會于方塊1333中,在〃C〃值的合成的C-狀態(tài)計算時,考量系統(tǒng)1200中的每個核心106的C-狀態(tài);因此,合成的C-狀態(tài)于此被稱為系統(tǒng)1200合成的C-狀態(tài)。流程繼續(xù)至方塊416。
      [0286]流程繼續(xù)從圖13中的方塊434,并繼續(xù)前進至方塊444與448,如相關于圖4所說明的。然而,圖13并不包含方塊452、454或456。反之,流程繼續(xù)從方塊448至方塊1352。
      [0287]于方塊1352,sync_C-狀態(tài)微碼208藉由計算〃G〃與〃H〃值的最小值來計算一最近計算的本地混合C-狀態(tài),以〃G〃表示。
      [0288]流程繼續(xù)至決定方塊1353。于決定方塊1353,如果于方塊1352所計算的〃G〃值小于2或核心106并非是封裝體管理者核心106,則流程繼續(xù)至方塊442 ;否則,流程繼續(xù)至方塊1355。
      [0289]于方塊1355,sync_C_狀態(tài)微碼208藉由程式化CSR234在其好友上產生sync_C-狀態(tài)的新實例,用以將于方塊1352所計算的"G"值傳送至其好友,并用以中斷好友。這要求好友計算并傳回一混合C-狀態(tài)到這個核心106。
      [0290]流程繼續(xù)至方塊1357。于方塊1357,sync_C_狀態(tài)微碼208程式化CSR234以檢測好友已傳回一混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),以"H"表示。流程繼續(xù)至方塊 1359。
      [0291]于方塊1359,sync_C-狀態(tài)微碼208藉由計算〃G〃與〃H〃值的最小值來計算一最近計算的本地混合C-狀態(tài),以〃G〃表示??勺⒁獾?,假設H至少為2,則一旦流程繼續(xù)至方塊1359,就會于方塊1359中,在"G"值的合成C-狀態(tài)計算時考量系統(tǒng)1200中的每個核心106的C-狀態(tài);因此,合成的C-狀態(tài)于此被稱為系統(tǒng)1200合成C-狀態(tài)。流程繼續(xù)至方塊442。
      [0292]流程繼續(xù)從圖13中的方塊466,并繼續(xù)經由方塊476與482,如相關于圖4所說明的。然而,圖13并不包含方塊484、486或488。反之,流程繼續(xù)從方塊482至方塊1381。
      [0293]于方塊1381,sync_C-狀態(tài)微碼208藉由計算"L"與"M"值的最小值來計算一最近計算的本地混合C-狀態(tài),以〃L〃表示。
      [0294]流程繼續(xù)至決定方塊1383。于決定方塊1383,如果于方塊1381所計算的〃L〃值小于2或核心106并非是封裝體管理者核心106,則流程繼續(xù)至方塊474 ;否則,流程繼續(xù)至方塊1385。
      [0295]于方塊1385,sync_C_狀態(tài)微碼208藉由程式化CSR234在其好友上產生sync_C-狀態(tài)的新實例,用以將于方塊1381所計算的"L"值傳送至其好友,并用以中斷好友。這要求好友計算并傳回一混合C-狀態(tài)到這個核心106。
      [0296]流程繼續(xù)至方塊1387。于方塊1387中,sync_C_狀態(tài)微碼208程式化CSR234以檢測好友已傳回一混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),以〃M〃表示。流程繼續(xù)至方塊1389。
      [0297]于方塊1389,sync_C-狀態(tài)微碼208藉由計算"L"與"M"值的最小值來計算一最近計算的本地synced C-狀態(tài),以〃 L〃表示??勺⒁獾?,假設M是至少2,則一旦流程繼續(xù)至方塊1389,就會于方塊1389中,在"L"值的合成C-狀態(tài)計算時考量系統(tǒng)1200中的每個核心106的C-狀態(tài);因此,合成C-狀態(tài)于此被稱為系統(tǒng)1200合成C-狀態(tài)。流程繼續(xù)至方塊474。如上所述,于決定方塊432中,如果中斷的核心106為一好友而非一伙伴或同伴,則流程繼續(xù)至方塊1301。
      [0298]于方塊1301,核心106被其好友所中斷,所以微碼208程式化CSR234,用以從其好友獲得好友的合成C-狀態(tài),在圖13中以"Q"表示。應注意的是,好友不會喚醒synch_C-狀態(tài)的實例,如果其尚未為其封裝體確認合成C-狀態(tài)至少為2的話。
      [0299]流程繼續(xù)至方塊1303。于方塊1303,sync_C-狀態(tài)微碼208計算一本地混合C-狀態(tài)(以"R"表示)作為其應用于方塊1301所接收的C-狀態(tài)"Y"值與"Q"值的最小值。[0300]流程繼續(xù)至決定方塊1305。于決定方塊1305,如果于方塊1303所計算的〃R〃值小于2,則流程繼續(xù)至方塊1307 ;否則,流程繼續(xù)至方塊1311。
      [0301]于方塊1307,為因應來自其好友請求的核心間中斷,微碼208程式化CSR234以將于方塊1303所計算的〃R〃值傳送至其好友。流程繼續(xù)至方塊1309。于方塊1309中,常式將于方塊1303所計算的〃R〃值傳回至其呼叫者。流程于方塊1309結束。
      [0302]于方塊1311,sync_C-狀態(tài)微碼208藉由程式化CSR236在其伙伴上產生sync_C-狀態(tài)的新實例,用以將于方塊1303所計算的"R"值傳送至其伙伴,并用以中斷伙伴。這要求伙伴計算并傳回一混合C-狀態(tài)至核心106。
      [0303]流程繼續(xù)至方塊1313。于方塊1313中,sync_C_狀態(tài)微碼208程式化CSR236以檢測伙伴已傳回一混合C-狀態(tài)至核心106,并獲得伙伴混合C-狀態(tài),在圖13中以〃 S 〃表
      /Jn ο
      [0304]流程繼續(xù)至方塊1315。于方塊1315,sync_C-狀態(tài)微碼208藉由計算〃R〃與〃S〃值的最小值來計算一最近計算的本地混合C-狀態(tài),以"R"表示。
      [0305]流程繼續(xù)至決定方塊1317。于決定方塊1317中,如果于方塊1315所計算的〃R〃值小于2,則流程繼續(xù)至方塊1307 ;否則,流程繼續(xù)至方塊1319。
      [0306]于方塊1319,sync_C-狀態(tài)微碼208藉由程式化CSR234在其同伴上產生sync_C-狀態(tài)的新實例,用以將于方塊1315所計算的〃 R"值傳送至其同伴,并用以中斷同伴。這要求同伴計算并傳回一混合C-狀態(tài)至這個核心106。
      [0307]流程繼續(xù)至方塊1321。于方塊1321,sync_C_狀態(tài)微碼208程式化CSR234以檢測同伴已傳回一混合C-狀態(tài)至核心106,并獲得混合C-狀態(tài),以〃S〃表示。
      [0308]流程繼續(xù)至方塊1323。于方塊1323,sync_C-狀態(tài)微碼208藉由計算〃R〃與〃S〃值的最小值來計算一最近計算的本地混合C-狀態(tài),以"R"表示??勺⒁獾剑僭OS是至少2,于是一旦流程前進至方塊1323,就會于方塊1323中,在〃R〃值的計算時考量系統(tǒng)1200中的每個核心106的C-狀態(tài);因此,〃R〃將構成系統(tǒng)1200的合成C-狀態(tài)。流程繼續(xù)至方塊1307。
      [0309]現(xiàn)在參考圖14所顯示的方塊圖,其顯示依據本發(fā)明計算機系統(tǒng)1400執(zhí)行分配在一多核心微處理器1402的多重處理核心106間的分散式電源管理的一替代實施例。系統(tǒng)1400在某些方面類似于圖9的系統(tǒng)900,因為其包含在單一封裝體上具有經由晶片間通訊配線118耦接在一起的四個雙核心晶片104的單一八核心微處理器1402。然而,系統(tǒng)1400的八個核心是依據一較深的三層的階層式協(xié)調系統(tǒng)而藉由旁路配線被組織且實體連接。
      [0310]首先,晶片間通訊配線118的配置是與圖9不同,如下所述。值得注意的,系統(tǒng)1400在某些方面類似于圖12的系統(tǒng)1200,于其中核心依據一種三層的階層式協(xié)調系統(tǒng)被組織在一起且實體連接。四個晶片104的每一者包含用以耦接至晶片間通訊配線118的三個接觸墊108,亦即OUT接觸墊、INl接觸墊以及IN2接觸墊。圖14的多核心微處理器1402包含以〃P1〃、〃P2〃、〃P3〃以及〃Ρ4〃表示的四個接腳。圖14的多核心微處理器1402的晶片間通訊配線118的配置如下。晶片O的OUT接觸墊、晶片I的INl接觸墊,以及晶片2的ΙΝ2接觸墊經由耦接至接腳Pl的單一配線網而全部耦接在一起;晶片I的OUT接觸墊與晶片O的INl接觸墊經由耦接至接腳Ρ2的單一配線網而耦接在一起;晶片2的OUT接觸墊、晶片3的INl接觸墊以及晶片O的ΙΝ2接觸墊是經由耦接至接腳Ρ3的單一配線網而全部耦接在一起;晶片3的OUT接觸墊與晶片2的INl接觸墊經由耦接至接腳P4的單一配線網而耦接
      在一起。
      [0311]圖14的核心106是被設計成用以依據圖13的說明操作,對核心O與核心4而言,即使它們位于相同的封裝體1402(與上述相關于圖12所規(guī)定的專門用語〃好友〃的意思相反)仍被視為好友,而這兩個好友于圖14的實施例中經由晶片間通訊配線118而非經由圖12的封裝體間通訊配線1133做彼此溝通,。于此應注意的是,除了處理器的實體模型以夕卜,核心是依據一種較深的且具有三個層次的域的階層式協(xié)調系統(tǒng)而設計。
      [0312]現(xiàn)在參考圖15所顯示的方塊圖,其顯示依據本發(fā)明計算機系統(tǒng)1500執(zhí)行分配在一種多核心微處理器1502的多重處理核心106間的分散式電源管理的一替代實施例。系統(tǒng)1500在某些方面類似于圖14的系統(tǒng)1400,因為其包含單一個八核心微處理器1502,其具有以核心O至核心7表示的八個核心106。然而,多核心微處理器1502包含經由晶片間通訊配線118耦接在一起的兩個四核心晶片1504。兩個晶片1504的每一者包含用以耦接至晶片間通訊配線118的兩個接觸墊108,亦即一 OUT接觸墊以及IN1、IN2和IN3接觸墊。多核心微處理器1502包含以〃P1〃與〃P2〃表示的兩個接腳。多核心微處理器1502的晶片間通訊配線118的配置如下。晶片O的OUT接觸墊與晶片I的INl接觸墊經由耦接至接腳P2的單一配線網而耦接在一起,而晶片I的OUT接觸墊與晶片O的INl接觸墊經由耦接至接腳Pl的單一配線網而耦接在一起。此外,四核心晶片1504的核心間通訊配線112將每個核心106耦接至晶片1504的其他核心106,用以促進分配在一種多核心微處理器1502的多重處理核心106間的分散式電源管理。
      [0313]圖15的核心106被設計成用以依據圖13的說明操作,并通過以下敘述獲得理解。首先,每個晶片本身所具有的核心是依據一雙層的階層式協(xié)調系統(tǒng),并藉由旁路配線而被組織且實體連接。晶片O具有兩個伙伴同屬性群組(核心O與核心I ;核心2與核心3)以及一個同伴同屬性群組(核心O與核心2)。同樣地,晶片I具有兩個伙伴同屬性群組(核心4與核心5 ;核心6與核心7)以及一個同伴同屬性群組(核心4與核心6)。于此可注意到同伴核心縱使它們位于相同的晶片上(與上述相關于圖1所規(guī)定的的"同伴"的特性記述相反)仍被視為同伴。此外,同伴于圖15的實施例中經由核心間通訊配線112而非經由圖12的晶片間通訊配線118進行彼此的通訊。
      [0314]其次,封裝體本身界定一第三階層式范圍及對應的好友同屬性群組。換言之,核心O及核心4縱使它們位于相同的封裝體1502上(與上述相關于圖12所規(guī)定的專門用語〃好友〃的意思相反)仍被視為好友。又,好友于圖15的實施例中經由晶片間通訊配線118而非經由圖12的封裝體間通訊配線1133進行彼此的通訊。
      [0315]現(xiàn)在參考圖16所顯示的方塊圖,其顯示依據本發(fā)明的計算機系統(tǒng)1600執(zhí)行分配在一種多核心微處理器1602的多重處理核心106間的分散式電源管理的一替代實施例。系統(tǒng)1600在某些方面類似于圖15的系統(tǒng)1500,因為其包含單一個八核心微處理器1602,其具有以核心O至核心7所表不的八個核心106。然而,每個晶片104包含多條在每一個核心106之間的核心間通訊配線112,用以允許每個核心106與晶片104中的其他核心106進行通訊。因此,為說明圖16每個核心106的微碼208的操作:(1)核心O、核心1、核心2以及核心3被視為伙伴,而核心4、核心5、核心6以及核心7被視為伙伴;(2)核心O及核心4被視為同伴。因此,系統(tǒng)1600是依據由伙伴與同伴同屬性群組所組成的一雙層階層式協(xié)調系統(tǒng)并藉由旁路配線被組織且實體連接。此外,存在于晶片的每一個核心之間的核心間通訊配線112,可促進供晶片所界定的伙伴同屬性群組用的一同儕合作協(xié)調模型。雖然能夠依據一同儕合作協(xié)調模型操作,但圖17說明一種供核心之間的分散式電源管理使用的管理者合作協(xié)調模型。
      [0316]現(xiàn)在參考圖17所顯示的流程圖,其顯示依據本發(fā)明圖16的系統(tǒng)1600用以執(zhí)行分配在多核心微處理器102的多重處理核心106間的分散式電源管理的操作。更明確而言,圖17的流程圖顯示圖3(與圖6)的sync_C-狀態(tài)微碼208的操作,類似于圖4的流程圖,其在許多方面是相似的,且相同號碼的方塊是類似的。然而,在圖17的流程圖中所說明的核心106的微碼208負責存在八個核心106的情形而非于圖1的實施例中的四個核心106,具體地說四個核心106是兩個雙晶片104的方式而存在,而現(xiàn)在說明其差異。尤其,一晶片104的每個管理者核心106具有三個伙伴核心106而非一個伙伴核心106。
      [0317]流程開始于圖17中的方塊402,并繼續(xù)經由決定方塊404且離開決定方塊404的〃N0〃分支至決定方塊432,如相關于圖4所說明者。然而,圖17并不包含方塊406至418。反之,流程繼續(xù)從決定方塊404離開"YES"分支至方塊1706。
      [0318]于方塊1706,sync_C-狀態(tài)微碼208藉由程式化圖2的CSR236以在一伙伴上產生sync_C-狀態(tài)常式的新實例,用以將于方塊402所接收或于方塊1712所產生(討論于下)的"A"值傳送至其下一個伙伴,并用以中斷伙伴。這要求伙伴計算并傳回一混合C-狀態(tài)至核心106。在包含方塊1706、1708、1712、414以及1717的回圈中,微碼208掌握其已造訪的伙伴的記錄,用以確保其造訪它們每一個(除非于決定方塊414被發(fā)現(xiàn)是真實的狀況)。流程繼續(xù)至方塊1708。
      [0319]于方塊1708,sync_C-狀態(tài)微碼208程式化CSR236以檢測下一個伙伴已傳回一混合C-狀態(tài)至核心106,并獲得伙伴的混合C-狀態(tài),在圖17以"B"表示。流程繼續(xù)至方塊1712。
      [0320]于方塊1712,sync_C-狀態(tài)微碼208藉由計算"A"及"B"值的最小值來計算一最近計算的本地混合C-狀態(tài),其是以"A"表示。流程繼續(xù)至決定方塊1714。
      [0321]于決定方塊1714,如果于方塊1712所計算的〃A〃值小于2或核心106并非是管理者核心106,則流程繼續(xù)至方塊1716 ;否則,流程繼續(xù)至決定方塊1717。
      [0322]于方塊1716,sync_C-狀態(tài)微碼208將于方塊1712所計算的〃A〃值傳回至其呼叫者。流程于方塊1716結束。
      [0323]于決定方塊1717,sync_C_狀態(tài)微碼208決定所有其伙伴是否已被造訪,亦即核心106是否已經由方塊1706與1708而與每一個其伙伴交換混合C-狀態(tài)。如果是,則流程繼續(xù)至方塊1719 ;否則,流程回復至方塊1706。
      [0324]于方塊1719,sync_C-狀態(tài)微碼208決定于方塊1712所計算的"A"值成為其晶片合成C-狀態(tài),其是以〃C〃表示,且流程繼續(xù)至方塊422并繼續(xù)進行至方塊428,如上相關于圖4所述。
      [0325]流程繼續(xù)從決定方塊438的〃N0〃分支至決定方塊1739。
      [0326]于決定方塊1739, sync_C_狀態(tài)微碼208決定所有其伙伴是否已被造訪,亦即,核心106是否已經經由方塊1741及1743 (討論于下)而與每一個其伙伴交換一混合C-狀態(tài)。如果是,流程繼續(xù)至方塊446,并繼續(xù)進行經由至方塊456,如上相關于圖4所述;否則,流程繼續(xù)至方塊1741。
      [0327]于方塊1741,sync_C_狀態(tài)微碼208藉由程式化圖2的CSR236在其下一個伙伴上產生sync_C-狀態(tài)常式的新實例,用以將于方塊436或于方塊1745(討論于下)所計算的"G"值傳送至其下一個伙伴,并用以中斷伙伴。這要求伙伴計算并傳回一混合C-狀態(tài)至核心106。在包含方塊438、1739、1741、1743以及1745的回圈中,微碼208掌握其已造訪的伙伴的記錄,用以確保其造訪它們每一個(除非于決定方塊438被發(fā)現(xiàn)是真實的狀況)。流程繼續(xù)至方塊1743。
      [0328]于方塊1743,sync_C_狀態(tài)微碼208程式化CSR236以檢測下一個伙伴已傳回一混合C-狀態(tài)至核心106,并獲得伙伴的混合C-狀態(tài),在圖17中以"F"表示。流程繼續(xù)至方塊1745。
      [0329]于方塊1745,sync_C-狀態(tài)微碼208藉由計算"F"及"G"值的最小值來計算一最近計算的本地混合C-狀態(tài),其是以〃G〃表示。流程回復至決定方塊438。
      [0330]圖17并不包含方塊478至方塊488。取而代的的是,流程繼續(xù)離開決定方塊472的〃N0〃分支至決定方塊1777。
      [0331]于決定方塊1777, sync_C_狀態(tài)微碼208決定所有其伙伴是否已被造訪,亦即,核心106是否已經經由方塊1778及1782(討論于下)而與每一個伙伴交換一混合C-狀態(tài)。如果是,流程繼續(xù)至方塊474并繼續(xù)進行經由至方塊476,如上相關于圖4所述;否則,流程繼續(xù)至方塊1778。
      [0332]于方塊1778,sync_C_狀態(tài)微碼208藉由程式化圖2的CSR236在下一個伙伴上產生sync_C-狀態(tài)常式的新實例,用以將于方塊468或于方塊1784 (討論于下)所計算的"L"值傳送至其下一個伙伴,并用以中斷伙伴。這要求伙伴計算并傳回一混合C-狀態(tài)至核心106。在包含方塊472、1777、1778、1782以及1784的回圈中,微碼208掌握其已造訪的伙伴的記錄,用以確保其造訪它們每一個(除非于決定方塊472被發(fā)現(xiàn)是真實的狀況)。流程繼續(xù)至方塊1782。
      [0333]于方塊1782,sync_C_狀態(tài)微碼208程式化CSR236以檢測下一個伙伴已傳回一混合C-狀態(tài)至核心106,并獲得伙伴的混合C-狀態(tài),在圖17以"M"表示。流程繼續(xù)至方塊1784。
      [0334]于方塊1784,sync_C-狀態(tài)微碼208藉由計算"L"及"M"值的最小值來計算一最近計算的本地混合C-狀態(tài),其是以〃L〃表示。流程回復至決定方塊472。
      [0335]如較早所陳述的,如應用至圖16的圖17顯示一管理者仲裁的階層式協(xié)調模型至一微處理器1602的應用,其旁路配線促進對于至少某些的核心同屬性群組的一同儕合作協(xié)調模型。這種組合提供各種優(yōu)點。就另一方面而言,微處理器1602的實體架構提供在界定與再界定(defining and redefining)階層式域以及指定與再指定(designating andredesignating)域管理者上的彈性,如與申請案序號61/426,470的段落相關所說明的,前述申請案的申請日為2010年12月22日,名稱為〃在一多核心處理器中的動態(tài)及選擇性核心禁能(Dynamic and Selective Core Disablement) 〃,及其同時申請的非臨時申請案(CNTR.2536),其是于此并入作參考。此外,在提供這種核心間協(xié)調彈性的微處理器上,可依據預定情況或配置設定而在一個以上的協(xié)調模式中提供可以行動的一階層式協(xié)調系統(tǒng)。舉例而言,一階層式協(xié)調系統(tǒng)可使用所指定的管理者核心而優(yōu)先地采用協(xié)調的管理者仲裁模型,但是在某些預定或檢測條件之下,可將一不同的核心標示為供該同屬性群組用的一暫時管理者、或者切換成供一既定同屬性群組使用的一同儕合作協(xié)調模型??赡艿哪P颓袚Q條件的例子包含所指定的管理者核心無反應或禁能、所指定管理者核心基于它們的狀態(tài)或緊急性而處于一限制中斷模式中、或所指定的管理者核心處于將某些把關或協(xié)調角色委派授權給一個或多個其成員。
      [0336]在上述圖中,已顯示受限制的電源狀態(tài)(例如C-狀態(tài)〉=2),只有在等于處理器的復合電源狀態(tài)時是可實施的。在諸如此情況下,已說明的電源狀態(tài)復合電源狀態(tài)發(fā)現(xiàn)過程可在實施受限制的電源狀態(tài)之前進行操作,以負責處理器中每個核心的應用電源狀態(tài)。
      [0337]然而如較早在說明書中所敘述者,有順序的電源狀態(tài)的不同配置與等級亦屬本發(fā)明所考量的。此外,本發(fā)明亦考慮包含多重特定域層次的受限制電源狀態(tài)的電源狀態(tài)的非常進階的設定,于此漸進較高層級的受限制電源狀態(tài)將應用于處理器的漸進較高的域中。
      [0338]舉例而目,在具有多重多核心晶片的一多核心多處理器中,每個晶片提供在晶片的核心間被共用的一 PLL,但由微處理器的所有核心所共用的單一 VRM,譬如在CNTR.2534中所說明的,一受限制域的電源狀態(tài)階層可被定義而包含尤其適合于一核心內部(且非外部被共用)資源的第一組電源狀態(tài)、尤其適合于由晶片上的核心所共用,而不能被晶片外部所共用的資源(例如PLL與快取)的下一組電源狀態(tài)、且特別適合于整個微處理器的又另一組電源狀態(tài)(例如電壓值與總線時鐘)。
      [0339]因此,于一實施例中,每個域具有其本身的復合電源狀態(tài)。又,對每個域而言,存在有單一適當的受認證核心(例如該域的管理者),其具有實施或啟動一受限制電源狀態(tài)的實施的授權,如由一對應的區(qū)別域的電源狀態(tài)階層協(xié)調系統(tǒng)所界定者,是受限在受沖擊的域上。這種進階配置尤其適合包含譬如CNTR.2534所顯示的實施例,于其中子群組的處理器核心共用快取、PLL等等。
      [0340]本發(fā)明亦考慮數個實施例,于其中一分散式同步過程是利用一種不需要喚醒所有核心的方式來不僅管理一受限制電源狀態(tài)的實現(xiàn),而且選擇性地實施一受限制電源狀態(tài)的一喚起狀態(tài)或撤銷。這種進階實施例與類似圖5的系統(tǒng)形成對比,于其中一晶片組STPCLK的解除設置可完全喚醒所有核心。
      [0341]現(xiàn)在參考圖23,其描繪sync_state邏輯2300的一個實施例,以顯示譬如在微碼中進行有條件地實施與選擇性地撤銷一限制操作狀態(tài)兩者的情形。如下所述,sync_state邏輯2300支持一種域-區(qū)別(domain-differentiated)的電源狀態(tài)階層協(xié)調系統(tǒng)的實現(xiàn)。有利的是,sync_state邏輯2300的可計量性相當好,因為其可被延伸至實際上是任何想要的域-層次深度(domain-level depth)的階層式協(xié)調系統(tǒng)。又,邏輯2300不僅可用對微處理器整體看來是全域的方式、而且對在微處理器之內的特定群組核心(例如,只對一晶片的核心,如以下關于方塊2342所說明的)以更多限制的方式被實施。此外,synC_state邏輯2300可利用不同且具相關定義的階層式協(xié)調系統(tǒng)、應用的操作狀態(tài)以及域層次臨界值,而獨立應用至不同操作狀態(tài)的群組中。
      [0342]在類似于sync_C_狀態(tài)微碼208的較早顯示的實施例的實施樣態(tài)中,sync_state邏輯2300可能在本地或外部地被產生,并在傳送一探測狀態(tài)值"P〃的一常式中執(zhí)行。例如,一電源狀態(tài)管理微碼常式可接收由一 MWAIT指令所傳送、或如與CNTR.2534相關所討論的一目標操作狀態(tài),利用供核心的本地核心邏輯產生一目標操作狀態(tài)(例如一要求的VID或頻率比率值)。接著,電源狀態(tài)管理微碼常式可將目標值儲存為核心的目標操作狀態(tài)Otamet,然后藉由將Otamet傳送成為探測狀態(tài)值"P"來喚醒synC_state邏輯2300。或者,在類似于先前實施例所討論的實施樣態(tài),sync_state邏輯2300可能藉由一中斷常式響應一外部產生的同步需求被喚醒。為簡化之便,這種實例被稱為sync_state邏輯2300的外部喚醒實例。
      [0343]在更進一步繼續(xù)前進以前,應注意到,再為簡化之便,圖23顯示以一種適合管理操作狀態(tài)的形式的sync_state邏輯2300,操作狀態(tài)是在要求漸進地更大程度的核心間協(xié)調予漸進地較高需求的狀態(tài)(舉例而言,如應用于C-狀態(tài))的方式被界定或被安排。將理解具有通常知識者可利用謹慎地應用邏輯來修改synC_state邏輯2300以支援一操作狀態(tài)階層(例如VID或頻率比率狀態(tài)),于其中操作狀態(tài)是朝相反方向被界定?;蛘撸騻鹘y(tǒng)或選擇而朝一個方向被界定的操作狀態(tài),可根據定義而一般的"安排"在相反方向中。因此,sync_state邏輯2300可只藉由重新安排它們,并施加相反指示的基準值(例如負的原始值)而被應用至操作狀態(tài)(例如需求的VID與頻率比率狀態(tài))。
      [0344]亦注意到圖23顯示sync_state邏輯2300是特別為一嚴格地階層式協(xié)調系統(tǒng)而設計,于其中所有包含的同屬性群組依據一管理者仲裁協(xié)調模型操作。如關于先前所顯示的可某些程度協(xié)調對等合作的同步邏輯實施例所證明的,本發(fā)明不應被理解成受限于嚴格地階層式協(xié)調系統(tǒng)(除非到達明確指出的程度)。
      [0345]流程于方塊2302開始,于此SynC_State邏輯2300接收探測狀態(tài)值〃P〃。流程繼續(xù)至方塊2304,于此synC_state邏輯2300亦獲得本地核心的目標操作狀態(tài)Otaket、可由本地核心實行的最大的操作狀態(tài)0MX、由本地核心所控制的最大的域層次Dmax,以及并未涉及或干涉一特定域D的外部資源的最大可利用的域-特定狀態(tài)Md。應注意到,synC_state邏輯2300獲得或計算方塊2304的值的方式或年表(chronology)并不重要。在流程圖中的方塊2304僅用來介紹適用于sync_state邏輯2300的重要變數。
      [0346]在一個例示的但非限制的實施例中,域層次D是被界定如下:單一核心為O ;多核心晶片為I ;多晶片封裝體為2,等等。O與I的操作狀態(tài)是不受限制的(意指一核心可實施它們而無須與其他核心協(xié)調),2與3的操作狀態(tài)是相關于相同晶片的核心而受限(意指它們可能在一晶片的核心上被實施以與其他晶片上的核心協(xié)調,但不需要與在其他晶片上的其他核心協(xié)調),而4與5的操作狀態(tài)是相關于相同封裝體的核心而受限(意指它們可能在與該封裝體的核心協(xié)調之后而在該封裝體上被實施,但不需要與其他封裝體上的其他核心協(xié)調,如果有的話),等等。因此,相對應的最大可應用的域-特定狀態(tài)Md為:Mtl= I5M1 =3 ;以及M2 = 5。再者,由一核心所控制的最大域層次Dmax與可由核心實行的最大操作狀態(tài)Omax,兩者為該核心的管理者憑證(如果有的話)的函數。因此,于此例子中,一非管理者核心將具有O的Dmax以及I的對應的最大可自我實行的操作狀態(tài)Omax ;晶片管理者核心將具有I的Dmax以及3的對應的最大可自我實行的操作狀態(tài)Omax ;以及封裝體管理者或BSP核心將具有2的Dmax以及5的對應的最大可自我實行的操作狀態(tài)0祖。
      [0347]流程繼續(xù)至方塊2306,于此sync_state邏輯2300計算一初始混合值"B",其等于探測值"P"與本地核心的目標操作狀態(tài)Otamet的最小值。又,如果P是由一附屬家族核心所接收,且其值小于或等于最大可應用的域-特定操作狀態(tài)Md (家族核心據此為憑證來實施),則基于這里所說明的邏輯,這一般表示一附屬家族核心請求撤銷由本地或一較高階級的核心所實行的任何潛在的干涉較易休眠狀態(tài)(interfering sleepier state)。此乃因為在一般配置中,附屬家族核心已經實行相對于其所能夠的程度下為更清醒的P狀態(tài),而其無法在沒有較高層級協(xié)調的情況下,單方面地撤銷經由一個其不能控制的域所實行的干涉較易休眠狀態(tài)。
      [0348]流程繼續(xù)至方塊2308,于此一域層次變數D被初始化為零。在上述所顯示的例子中,一個為O的D表示一個核心。
      [0349]流程繼續(xù)至決定方塊2310。如果D等于Dmax,則流程繼續(xù)至方塊2340。否則,流程繼續(xù)至決定方塊2312。舉例而言,在一非管理者核心上被喚醒的一 synC_state常式將總是繼續(xù)至方塊2340,而不需執(zhí)行顯示在方塊2312-2320之間的任何一邏輯。此乃因為顯示在方塊2312-2320之間的邏輯是被提供給一管理者核心的有條件地同步化附屬家族核心。關于另一例子,如果一晶片管理者核心不具有其他管理者憑證,則其Dmax等于I。初始時D為0,所以一條件同步過程可能依據方塊2312-2320而在晶片的其他核心上被實施。但在完成任何這種同步(假設依據決定方塊2312所述,其并非有條件地過早被終止)且已將D增加I (方塊2316)之后,流程將繼續(xù)(經由決定方塊2310)至方塊2340。
      [0350]現(xiàn)在移到決定方塊2312,如果B>Md,則流程繼續(xù)至決定方塊2314。否則,流程繼續(xù)至方塊2340。以另一種方式陳述,如果本地核心目前所計算的混合值B不會涉及或干涉由變數D所界定域的外部資源,則不需要與任何更多的附屬家族核心同步。舉例而言,如果目前計算的混合值B為1,這樣的數值表示只沖擊到位于一既定核心的本地資源,因此不需要與更多的附屬家族核心做同步。在另一例子中,假設本地核心為一好友核心,其具有足夠憑證以關閉或沖擊共通于多重晶片的資源。但亦假設好友的目前計算的混合值B為3,其為一個將只沖擊位于好友的晶片而非好友所管理的其他晶片的本地資源的數值。又假設好友已依據方塊2314、2318以及2320而完成與其本身晶片上的每一個核心的同步,藉以使變數D增加至I (方塊2316),并使新的Md = M1 = 3納入考量(方塊2312)。在這些情況之下,好友并不需要更進一步與其他晶片上的附屬家族核心(例如同伴)同步,因為3或更少的數值的好友的實現(xiàn)無論如何都不會影響其他晶片。
      [0351]現(xiàn)在移到決定方塊2314,sync_state邏輯2300評估在由D+1所界定的域中是否有任何(更多)尚未同步的附屬家族核心。如果有任何這種核心,則流程繼續(xù)至方塊2318。如果不是的話,則流程首先繼續(xù)至方塊2316 (于此D被增加),然后至決定方塊2310,于此再次評估目前增加的D的值,如上所述。
      [0352]現(xiàn)在移到方塊2318,因為一未同步的附屬家族核心已被檢測(方塊2318),所以其可能受目前計算的混合值"B"的實現(xiàn)(方塊2312)所影響,因為其將影響由附屬家族核心所共用的資源,所以synC_state邏輯2300的本地實例在未同步的附屬家族核心上喚醒一sync_state邏輯2300的新的從屬實例。本地實例傳送其目前計算的混合值〃B〃以作為對于sync_state邏輯2300的從屬實例的一探測值。如由sync_state邏輯2300的邏輯所見的,從屬實例最后將傳回一個不大于原有的"B"(方塊2306)、且不小于附屬家族核心的最大可應用的域-特定狀態(tài)Md (方塊2346)的數值,其為不會干涉在本地與附屬家族核心之間所共用任何資源的最大值。因此,當流程繼續(xù)至方塊2320時,sync_state邏輯2300的本地實例采用由從屬實例所傳回的數值作為其本身的"B"值。
      [0353]到現(xiàn)在為止,已將焦點指向用以有條件地同步化附屬家族核心的sync_state邏輯2300的一部分?,F(xiàn)在,將聚焦于方塊2340-2348,其說明用以執(zhí)行一目標和/或同步化狀態(tài)的邏輯,包含與較高級的家族核心(亦即,較高層級管理者)進行有條件地協(xié)調。
      [0354]現(xiàn)在移到方塊2340,本地核心執(zhí)行其目前混合值"B"至其可接受的程度。尤其,其執(zhí)行B及Omax的最小值,而由本地核心執(zhí)行最大狀態(tài)??勺⒁獾剑嚓P于屬于域管理者的核心,方塊2340設計這種核心以執(zhí)行或啟動供其域使用的一復合電源狀態(tài)的最小值(方塊2306或2320的"B")與應用于其域的最大受限制電源狀態(tài)(亦即Omax)的實現(xiàn)。
      [0355]流程繼續(xù)至決定方塊2342,于此sync_state邏輯2300評估本地核心是否為微處理器的BSP。如果是,則沒有更高級的核心需要協(xié)調,且流程繼續(xù)至方塊2348。如果否,則流程繼續(xù)至決定方塊2344。應注意到,在實施例中的sync_state邏輯2300是以對微處理器較不全域(less than a global way)的方式地被應用以控制操作狀態(tài),方塊2342是以預定組的操作狀態(tài)相關的〃最高應用域管理者〃置換"BSP"而改變。舉例而言,如果sync_state邏輯2300僅應用至由CNTR.2534中所說明的由晶片所共用PLL的期望頻率時鐘比率的中,則將以〃晶片管理者〃置換"BSP"。
      [0356]在決定方塊2344中,sync_state邏輯2300評估sync_state的本地實例是否被一管理者核心所喚醒。如果是,則本地核心根據定義與其管理者同步,所以流程繼續(xù)至方塊2348。如果否,則流程繼續(xù)至方塊2346。
      [0357]現(xiàn)在移到方塊2346,sync_state邏輯2300在其管理者核心上喚醒一個sync_state的從屬實例。其將核心的最終混合值B與核心的最大可應用的域-特定狀態(tài)Md的最大值作為最后探測值P而傳送的。在此提供兩個例子以說明探測值P的選擇。
      [0358]在第一例子中,假設B高于本地核心的最大可自我實行的操作狀態(tài)Omax(方塊2340)。換言之,在沒有較高層級協(xié)調的情況下,本地核心無法單方面導致B的完全實施。在這樣的情況下,方塊2346表示本地核心對其管理者核心的一請求,要求其可更完全實施B,如果可能的話。將明白依據圖23所提出的邏輯集合,如果該項請求并非與管理者核心本身的目標狀態(tài)以及與其他潛在影響的核心的應用狀態(tài)相符的話,管理者核心將婉拒此請求。否則,管理者核心將實施此請求并到達其與那些狀態(tài)相符的程度,直到其本身的最大可自我實行的狀態(tài)Omax的最大值(方塊2340)為止。依據方塊2346的敘述,管理者核心亦將以原始核心的B值混合(可能等于原始核心的B值)的數值來請求其本身的更高級核心(如果有的話),這種請求方式將向上且通過階層而進行。依此方式,如果應用條件滿足的話,則sync_state邏輯2300將完全實施本地核心的最終混合值B。
      [0359]在第二例子中,假設B小于本地核心的最大可自我實行操作狀態(tài)Omax (方塊2340)。假設沒有影響本地核心所控制資源之外的較高的干涉操作狀態(tài)存在,而后在方塊2340中,本地核心可完全實行B。但是如果較高的干涉的操作狀態(tài)生效,而本地核心將無法單方面地撤銷干涉操作狀態(tài)。在這種情況下,方塊2346表示本地核心對其管理者核心的一請求,要求其撤銷一既存的干涉操作狀態(tài)至不再干涉B的完整實現(xiàn)的層級(亦即,本地核心最大可應用的域-特定狀態(tài)MD)。將明白到,依據圖23所提出的邏輯集合,管理者核心將遵從該項請求,藉以實行不大于且可能小于本地核心的Md的狀態(tài)。應注意到,方塊2346可能或者請求管理者只實行B。但如果B〈Md,則這可能使管理者核心執(zhí)行一種較本地核心完全實行B所需要的更清醒的狀態(tài)。因此,使用等于本地核心的最終混合值B與本地核心的最大可應用的域-特定狀態(tài)Md的最大值的探測值是較佳的選擇。因此,將明白SynC_State2302支持一種對于實現(xiàn)休眠狀態(tài)及喚起狀態(tài)兩者的極簡方法。
      [0360]現(xiàn)在移到方塊2348,sync_state邏輯2300將一數值傳回至呼叫或執(zhí)行等于核心的最終混合值B與核心的最大可應用域-特定狀態(tài)Md的最大值的程序。如以方塊2346作說明,注意到方塊2348可能或者剛好傳回B的數值。但如果B〈MD,則這可能使一被喚醒的管理者核心(方塊2318)執(zhí)行一種比本身所需要更清醒的狀態(tài)。因此,傳回核心的最終混合值B與核心的最大可應用的域-特定狀態(tài)Md的最大值是較佳的選擇。再者,將明白依此方式,sync_state2302支持一種對于實現(xiàn)休眠狀態(tài)與喚起狀態(tài)兩者的極簡方法。
      [0361]在另一實施例中,一個或多個額外決定方塊是介設于方塊2344與2346之間,以更進一步設定方塊2346對從屬sync_state常式實施的條件。舉例而言,在一個適合條件下,如果B>0mx,則流程將繼續(xù)至方塊2346。在另一個適合條件之下,如果只有于一較高域層次可撤銷的一干涉操作狀態(tài)目前正被應用至本地核心,則流程將繼續(xù)至方塊2346。如果所應用的這兩個替代條件都不是,則流程將繼續(xù)至方塊2346。依此方式,sync_state2302將支持一種對于實現(xiàn)喚醒狀態(tài)更簡捷的方法。然而,應該觀察到這個替代實施例假設本地核心可檢測一干涉操作狀態(tài)是否正被應用。在本地核心不一定能檢測一干涉操作狀態(tài)的存在的一實施例中,則圖23所描繪出的較少條件的實施方法是較佳的。
      [0362]亦將明白在圖23中,當需要實行一目標較深的操作狀態(tài)(或其的較淺型式)時,復合操作狀態(tài)發(fā)現(xiàn)過程藉由使用一種依最低至最高(或最靠近至最遠離的同屬性群組)的順序以漸進地橫越核心的尋訪順序,來尋訪最高層級域(其包含其巢狀域)的核心(也不需要所有的核心),而這些核心的共用資源是受目標操作狀態(tài)所影響。又,當需要執(zhí)行一較淺的操作狀態(tài)時,復合操作狀態(tài)發(fā)現(xiàn)過程只需接續(xù)的尋訪較高的管理者即可。此外,在上述說明的替代實施例中,這種尋訪的延伸是要撤銷目前實施的干涉操作狀態(tài)(如果所需要的話)。
      [0363]因此,在將一較早的示范實例應用至圖23中,2或3的目標受限制電源狀態(tài)將只觸發(fā)應用晶片中的核心的復合電源狀態(tài)發(fā)現(xiàn)過程。4或5的目標受限制電源狀態(tài)將只觸發(fā)應用封裝體中的核心的復合電源狀態(tài)發(fā)現(xiàn)過程。
      [0364]圖23可更進一步以一種域-特定(除了核心-特定以外)的方式敘述其特征。繼續(xù)上述的例示圖例,一晶片可具有2與3的應用域-特定電源狀態(tài)。舉例而言,如果晶片管理者核心經由一本地或外部啟始的復合電源狀態(tài)發(fā)現(xiàn)過程的一部分而發(fā)現(xiàn)其晶片本身的復合電源狀態(tài)只有I時,因為I并非是可應用域-特定電源狀態(tài),所以晶片管理者核心將不會實施它。如果晶片管理者核心發(fā)現(xiàn)其晶片本身的復合電源狀態(tài)為5(或晶片的復合電源狀態(tài)與一節(jié)點地連接核心的探測電源狀態(tài)數值的混合狀態(tài)等于5)作為一替代例子,以及如果晶片管理者核心并不具有任何較高的管理者憑證,則(假設其沒有這樣做)晶片管理者核心將實施或啟動3的電源狀態(tài)的實施,其為3(晶片的最大應用域-特定電源狀態(tài))與5(晶片的復合電源狀態(tài)或其的混合狀態(tài))的最小值。再者,可注意到于此例子中,晶片管理者核心將繼續(xù)為其晶片實施或啟動3的電源狀態(tài)的實施,而不管任何應用于一較高域(該核心為較高域的一部分)的實際或局部的復合電源狀態(tài)(例如,2或4或5)為何。
      [0365]繼續(xù)上述的圖例,于此晶片管理者發(fā)現(xiàn)晶片復合電源狀態(tài)或其的混合狀態(tài)為5,晶片管理者將與其同伴著手一復合電源狀態(tài)發(fā)現(xiàn)過程,其將需要包含下一個較高層級域(例如,封裝體或整個處理器)的尋訪,此復合電源狀態(tài)發(fā)現(xiàn)過程是獨立于晶片管理者的中間實現(xiàn)(如果有的話)與晶片的為3的電源狀態(tài)之外。這是因為5大于3(晶片的最大應用域-特定電源狀態(tài)),所以一較高受限制電源狀態(tài)的實施需要取決于應用于一個或多個較高級域的電源狀態(tài)。此外,下一個較高層級域特有的一較高受限制電源狀態(tài)的實施可能只藉由該域的管理者而被啟動和/或被實現(xiàn)(例如,多封裝體處理器的封裝體管理者或單一封裝體處理器的BSP)。值得提醒的是,晶片管理者可能亦同時保持相關的封裝體管理者或BSP憑證。
      [0366]因此,在上述例子中,在發(fā)現(xiàn)過程中的某些點,晶片管理者核心將與一同伴交換其晶片復合電源狀態(tài)(或其的混合)。在某些條件之下,這個發(fā)現(xiàn)過程將較高域(例如封裝體)的一至少局部的復合電源狀態(tài)(其小于2)傳回至晶片管理者核心。又,這將不會導致3的電源狀態(tài)的撤銷,其為晶片管理者核心已為晶片而實施者。在其他條件之下,此種發(fā)現(xiàn)過程將對封裝體或微處理器產生一復合電源狀態(tài)(例如4或更多),其對應至4或更多的受限制電源狀態(tài)。如果是,則該域的管理者(例如封裝體管理者)將實施一較高受限制的電源狀態(tài),其為較高層級域的復合電源狀態(tài)(例如4或5)與應用于較高層級域的最大受限制的電源狀態(tài)(于此是5)的最小值。如果所應用的發(fā)現(xiàn)過程正測試一更高級的受限制電源狀態(tài),則此種附有條件的域-特定電源-狀態(tài)實現(xiàn)過程將延伸至更高級的域層次(如果有的話)。
      [0367]如上述所述,圖23顯示一種可操作以合并域-相關(domain-dependent)受限制電源狀態(tài)及相關臨界值的階層式域-特定受限制的電源狀態(tài)管理協(xié)調系統(tǒng)。據此,其適用于對于個別核心及群組核心的電源狀態(tài)管理的微調式域-特定分散方法(fine-tuneddomain-specific decentralized approach)。
      [0368]注意到圖23顯示以一種分散式分配方式提供轉變成更清醒的狀態(tài)的電源狀態(tài)協(xié)調邏輯。然而,將明白某些電源狀態(tài)實施例包含數個電源狀態(tài),在缺乏藉由晶片組或其他核心的先前電源-狀態(tài)-撤銷動作之下,一特定核心可能無法從此等電源狀態(tài)被喚起。舉例而言,在上述C-狀態(tài)結構中,2或更高的C-狀態(tài)可能與移除總線時鐘相關,其可能使一既定核心不能響應通過系統(tǒng)總線所傳送的一指令,以轉變成為一更清醒的狀態(tài)。電源或時鐘源可選擇性地從一核心或一晶片被移除的其他微處理器配置亦被考慮。圖5說明覺醒邏輯的一實施例來適應這些情況,其藉由喚醒所有核心以因應STPCLK的解除設置。然而,覺醒邏輯的更多選擇性實施例可被考慮。在一個例子中,考慮由系統(tǒng)軟件(例如操作系統(tǒng)或BIOS)所實施的覺醒邏輯,其中系統(tǒng)軟件將首先發(fā)布一喚起或覺醒請求給一特定核心,且如果在一段期望時間間隔之內并未接收一響應或核心并不遵從的話,則邏輯將視需要遞回地發(fā)布喚起或覺醒請求給后續(xù)較高的管理者及晶片組(可能是),直到接收到一期望的響應或檢測到適當的遵從為止。這種由軟件系統(tǒng)所執(zhí)行的覺醒邏輯將與圖23的電源狀態(tài)協(xié)調邏輯進行協(xié)調,并以一種優(yōu)先分散方式(于此每個目標的核心藉由使用其本身的微碼開始轉變)以轉變成更清醒的狀態(tài),以到達核心可操作以這樣做的程度,以及當禁止核心這樣做時,以一種中心協(xié)調的方式完成。覺醒邏輯的實施例僅是用以選擇性地喚起無法喚起它們自己核心的數個可能的實施例的說明與例示。
      [0369]V1.延伸實施例及應用
      [0370]雖然已說明具有一特定數目核心106的實施例,但可考慮具有其他數目核心106的其他實施例。舉例而言,雖然圖10、13以及17所說明的微碼208被設計用以執(zhí)行在八個核心之間的分配式電源管理,但微碼208藉由包含檢查核心106的存在或缺席(presenceor absence),而在一具有更少核心106的系統(tǒng)中適當地發(fā)生效用,例如相關于申請案序號61/426,470的段落所說明的,前述申請案的申請日為2010年12月22日,名稱為〃動態(tài)多核心微處理器配置(Dynamic Mult1-Core Microprocessor Configuration) 〃,及其同時申請的非臨時申請案(CNTR.2533),其揭示書是附屬于此。亦即,如果一核心106是缺席的,則微碼208不會與缺席核心106交換C-狀態(tài)信息,并有效地假設缺席核心的C-狀態(tài)是最高的可能C-狀態(tài)(例如5的C-狀態(tài))。因此,為了達到使制造能力有效率的目的,核心106可能被制造成具有微碼208,其被設計可執(zhí)行在八個核心間的分配式電源管理,縱使核心106可能包含在具有更少核心106的系統(tǒng)中。再者,考慮到此系統(tǒng)包含八個以上核心的實施例,且于此所說明的微碼是被延伸以利用一種類似于已經說明的那些方式與附加核心106進行通訊。經由前述的描述,圖9及11的系統(tǒng)可被擴增以包含具有八個同伴的16個核心106 ;而圖12、14及15的系統(tǒng)可被擴增以包含具有四個好友的16個核心106,類似于圖9及11的系統(tǒng)在四個同伴之間同步化C-狀態(tài)的方法,且圖16的系統(tǒng)可藉由具有16個伙伴(兩個晶片且每個晶片具有八個核心、或四個晶片且每個晶片具有四個核心)而被擴增以包含16個核心106,而圖4、10、13以及17的方法的相關特征亦可獲得整合。
      [0371]獨立實現(xiàn)不同等級的電源狀態(tài)(例如,C-狀態(tài)、P-狀態(tài)、需求的VID、需求的頻率比率,等)的協(xié)調的實施例亦被考量在內。舉例而言,每個核心可為每個等級的電源狀態(tài)(例如,各別的應用VID、頻率比率、C-狀態(tài)以及P-狀態(tài))而具有不同的應用電源狀態(tài),具有應用至不同特定域的限制,以及具有用以計算混合狀態(tài)并發(fā)現(xiàn)復合狀態(tài)(例如,C-狀態(tài)對所請求VID最大值的的最小值)的不同極值。不同的階層式協(xié)調系統(tǒng)(例如,不同的域深度、不同的域成員(domain constituencies)、不同的指定域管理者和/或不同的同屬性群組協(xié)調模型)可能為不同等級的電源狀態(tài)而建立。此外,某些電源狀態(tài)可能只需要頂多與一域(例如晶片)上的其他核心協(xié)調,此域只包含微處理器上的所有核心的子集。對于這種電源狀態(tài),所考慮的階層式協(xié)調系統(tǒng)可以是只有節(jié)點地連結該域、與在該域之內的核心進行協(xié)調、以及發(fā)現(xiàn)應用于該域或在該域之內的復合電源狀態(tài)。
      [0372]—般而言,實施利中顯示的所有操作狀態(tài)是依一種漸進地上升或下降,而且是依據嚴格且線性順序的基礎。但是,操作狀態(tài)是排成層列(tiered)且依順序沿著每個層(tier)以上升或下降方式可訂定的其他實施例(數層的順序獨立于其他層的實施例亦包含在內)亦被本發(fā)明所考量。舉例而言,一預定組的電源狀態(tài)可不同的層級A.B,A.B.C,等的復合形式敘述其特征,于此每一層A、B、C是關于一不同的特征或特征的等級。舉例而言,一電源狀態(tài)可能以C.P或P.C的復合形式敘述其特征,于此P表示一種ACPI P-狀態(tài),而C表示一種ACPI C-狀態(tài)。再者,受限制電源狀態(tài)的等級可能由混合定義電源狀態(tài)的特定組成(例如A或B或C)的數值所定義,而受限制電源狀態(tài)的另一等級可由混合定義電源狀態(tài)的另一組成的數值所定義。此外,在任何給定的受限制電源狀態(tài)的層級內,每一層對應于混合定義電源狀態(tài)的其中一個組成的數值(例如C.P),除施加至此層的限制以外,對一既定核心而言,另一種組成的數值(例如C.P中的P)可能不受限制、或受到不同等級的限制。舉例而言,一個具有C.P的目標電源狀態(tài)的核心可能受到關于其目標電源狀態(tài)的C及P部分的實施時各自的限制及協(xié)調需求,于此P表示其P-狀態(tài),而C表示其需求的C-狀態(tài)。在復合電源狀態(tài)實施例中,對計算極值的一既定核心而言,任何兩個電源狀態(tài)的一"極值"可能表示復合電源狀態(tài)的組成部分的極值的一復合狀態(tài)、或復合電源狀態(tài)的少于所有組成部分的極值的一復合狀態(tài),與以別的方法選擇的或確定的數值(而對其他組成部分而言)。
      [0373]又,在一系統(tǒng)中的多重核心106執(zhí)行分配式分散式電源管理以明確地執(zhí)行功率評價(power credit)功能性的實施例亦被考量在內,如說明于美國申請案13/157, 436 (CNTR.2517)中,申請日為2011年6月10日,其全部于此并入作參考,但是此實施例使用核心間通訊配線112、晶片間通訊配線118以及封裝體間通訊配線1133,而非使用如CNTR.2517所說明的一共用的存儲器區(qū)域。這種實施例的優(yōu)點為其對于系統(tǒng)韌體(例如BIOS)及系統(tǒng)軟件是透明的,且并不需要依賴系統(tǒng)韌體或軟件以提供一共用的存儲器區(qū)域,因為微處理器制造商可能未必具有控制系統(tǒng)韌體或軟件的發(fā)布能力,所以其是受歡迎的。
      [0374]又,除了 一探測值以外亦傳送其他值的同步邏輯實施例亦考量在內。于一實施例中,相關于任何其他同時操作發(fā)現(xiàn)過程,一同步常式傳送可區(qū)別地確認發(fā)現(xiàn)過程的一數值(其為發(fā)現(xiàn)過程的一部分)。在另一實施例中,同步常式傳送一數值,藉由此數值可識別同步或尚未同步的核心。舉例而言,一種八核心實施例可能遞送一 8位值,于此每個位代表八核心處理器的一特定核心,且每個位表示核心是否已被同步或是仍為該瞬間發(fā)現(xiàn)過程的一部分。同步常式亦可能傳送確認開始瞬間發(fā)現(xiàn)過程的核心的一數值。
      [0375]促進執(zhí)行核心的依序尋訪同步化發(fā)現(xiàn)過程的額外實施例亦被考量。在一個例子中,每個核心儲存確認成員的位遮蔽的同屬性群組(它為其的一部分)。舉例而言,在一種利用三個層級深的階層式協(xié)調構造的八核心實施例中,每個核心儲存三個8位〃同屬性〃遮蔽、一 〃最接近〃同屬性遮蔽、一第二層同屬性遮蔽以及一頂端層同屬性遮蔽,于此每個遮蔽的位值確認屬于以遮蔽表示的同屬性群組中的核心家族(如果有的話)。在另一例子
      中,每個核心儲存一地圖、一Gddel號碼或其的組合,由其可正確地及唯一地決定核心的
      節(jié)點階層,包含確認每個域管理者。在又另一種例子中,此核心儲存確認共用資源(例如,電壓源、時鐘源以及快取),以及它們所屬且共用的特定核心或對應域的信息。
      [0376]又,雖然此說明書的焦點主要放在電源狀態(tài)管理,但將明白上述階層式協(xié)調系統(tǒng)的各種實施例可能被應用以協(xié)調其他型式的操作與限制活動,而非只是電源狀態(tài)或電源相關的狀態(tài)信息。舉例而言,在某些實施例中,上述各種階層式協(xié)調系統(tǒng)是利用與復制在每個核心上的分散邏輯協(xié)調以用于動態(tài)發(fā)現(xiàn),譬如在CNTR.2533中的一多核心微處理器配置,例如如上所述。
      [0377]此外,應注意到除非有特別聲明,否則本發(fā)明并不需要使用上述任何一個階層式協(xié)調系統(tǒng)以執(zhí)行預定的限制活動。事實上,除非另有某種程度的特別規(guī)定,否則本發(fā)明適合于在核心間的純粹對等協(xié)調系統(tǒng)。然而,如本說明書可明顯看出,一種階層式協(xié)調系統(tǒng)的使用可提供數個優(yōu)點,尤其是在依賴旁路通訊時,因為于此架構下,微處理器的旁路通訊線的構造并不允許一完全相等的對等協(xié)調系統(tǒng)。
      [0378]如可能從上文觀察到,相較于例如上述包含集中化非核心硬件協(xié)調邏輯(HCL)的Naveh的解決方法,將電源管理功能同等分配在于此所說明的核心106間的分散實施例,好處是不需要額外非核心邏輯。雖然非核心邏輯可被包含在一晶片104里,但于所說明的實施例中,所需要的為實施分散分配式電源管理機制是:硬件及微碼是與多核心-每晶片(mult1-core-per-die)實施例中的核心間通訊配線112、多晶片實施例中的晶片間通訊配線118以及多封裝體實施例中的封裝體間通訊配線1133在一起地、完全地實體上及邏輯地在它們本身的核心106之內。因為于此所說明的執(zhí)行分配在多重處理核心106間的電源管理的分散實施例的結果,核心106可能位于各別晶片或各別封裝體上。這潛在地降低晶片尺寸并改善良率,提供更多配置彈性,以及提供一高層級的系統(tǒng)中核心數的可調(尺寸的)能力。
      [0379]在又其他實施例中,核心106在各種實施樣態(tài)方面與圖2的代表實施例不同,并提供一種取代或附加的高度平行的構造,例如應用于一圖形處理單元(GPU)的構造,而于此所說明的為各種操作(例如電源狀態(tài)管理、核心配置發(fā)現(xiàn)、以及核心重新規(guī)劃)所使用的協(xié)調系統(tǒng)亦可被應用。
      [0380]雖然于此已說明本發(fā)明的各種實施例,但應理解到已經由舉例而非限制地提出它們。本領域的技術人員將明白在不背離本發(fā)明的范疇之下,可作出各種在形式及細節(jié)方面的改變。舉例而言,軟件可允許于此所說明的設備及方法的譬如功能、制造、模擬試驗、模擬、說明和/或測試。這可經由使用一般程序設計語言(例如C、C++),包含Verilog HDL、VHDL等等的硬件記述語言(HDL),或其他可利用的程序來達成。這種軟件可被配置在任何已知的計算機可用媒體中,例如半導體、磁盤或光盤(例如,⑶-ROM、DVD-ROM等)。于此所說明的設備及方法的實施例可能包含在例如一微處理器核心的半導體知識產權核心(例如,具體化在HDL中),并改變成在集成電路的產品中的硬件。此外,于此所說明的設備及方法可能具體化為硬件及軟件的組合。因此,本發(fā)明不應被任何一個于此所說明的例示實施例所限制,但應該只依據本發(fā)明的權利要求及它們的等效設計而被界定。具體言之,本發(fā)明可能在可能使用于通用計算機的微處理器裝置之內被實現(xiàn)。最后,本領域的技術人員應明白他們可輕易地使用所揭示的概念及具體的實施例作為用以設計或修改其他構造的基礎,用以在不背離如由本發(fā)明權利要求所界定的本發(fā)明的范疇之下完成本發(fā)明的相同目的。
      [0381]相關申請案的參考文獻
      [0382]本申請案優(yōu)先權的申請是根據該美國專利臨時申請案,案號:61/426,470,申請日:12/22/2010,名稱為多核心內的旁路總線(MULT1-CORE INTERNAL BYPASS BUS),該案整體皆納入本案參考。
      [0383]本申請案與下列同在申請中的美國專利申請案有關,都具有相同的申請日,每一申請案整體皆納入本案參考。
      [0384]
      【權利要求】
      1.一種多核心處理器,包含: 多個實體處理核心;以及 核心間狀態(tài)發(fā)現(xiàn)微碼單元,在各所述核心中啟動該核心,用以經由不通過任何集中式非核心邏輯、而從其他核心接收或傳送至其他核心的信號來參與分散式核心間狀態(tài)發(fā)現(xiàn)過程。
      2.如權利要求1所述的多核心處理器,其中: 該核心間狀態(tài)發(fā)現(xiàn)微碼單元,經由獨立于將該多核心處理器連接至一晶片組的一系統(tǒng)總線的多條旁路通訊配線來與其他核心交換信號;以及 該核心間狀態(tài)發(fā)現(xiàn)微碼單元,無任何集中式非核心邏輯的協(xié)助下判斷一可用的狀態(tài)值,其是一功能,至少是另一核心的一狀態(tài)。
      3.如權利要求1所述的多核心處理器,其中: 該核心間狀態(tài)發(fā)現(xiàn)微碼單元包括同步邏輯,提供至每個核心,其具有的同步實例為了一核心間狀態(tài)發(fā)現(xiàn)過程的多個目的是可操作的以在多核心上實施;以及 其中每個本地實例是可操作的以在其他核心上實施該同步邏輯的多個新實例,及響應實施于該本地實例的另一核心上該同步邏輯的任何先前實例。
      4.如權利要求3所述的多核心處理器,其中: 每個核心具有一目標操作狀態(tài); 該處理器包含一領域,其包括該微處理器的核心的至少其中之二; 該處理器提供一資源至該領域,其資源是由該領域的所述核心所共用; 該同步邏輯是組態(tài)成用以發(fā)現(xiàn)是否該領域是準備于實現(xiàn)一受限電源節(jié)能操作狀態(tài)供該資源將限制共享該資源的這些核心利用其能夠運作的電源、速度或效率;以及 其中該領域是準備于實現(xiàn)該受限電源節(jié)能操作狀態(tài)若且為若在該領域共享該資源的每個啟動核心具有至少限制性的作為該受限操作狀態(tài)的一目標操作狀態(tài)。
      5.如權利要求4所述的多核心處理器,其中: 該共享資源是連接至一晶片組的一系統(tǒng)總線; 該領域包含該多核心處理器的全部的啟動核心;以及 該受限操作狀態(tài)是一 C-狀態(tài),其是禁能該系統(tǒng)總線的一總線時鐘。
      6.如權利要求4所述的多核心處理器,其中: 該共享資源是在該微處理器的一多核心晶片上的一鎖相回路; 該領域包含全部的啟動核心,其時鐘信號由該鎖相回路供應;以及 該受限操作狀態(tài)是可共享該鎖相回路的所述核心所使用的一低于最大效能頻率比。
      7.如權利要求4所述的多核心處理器,其中: 該共享資源是一電壓資源; 該領域包含全部并限于共享該電壓資源的該微處理器的啟動核心;以及 該受限操作狀態(tài)是可共享該電壓資源的所述核心所使用的一低于最大效能電壓電平。
      8.如權利要求4所述的多核心處理器,其中: 同步邏輯的每個實例組態(tài)為,除非由一終止條件早先地終止,用以遞歸地在其他核心上實施該同步邏輯的多個實例,直到該同步邏輯的同步實例已經實施在該處理器的一可用的領域的全部核心;以及其中該同步邏輯組態(tài)為隨一終止條件用以停止在其他尚未同步核心上同步邏輯的實例的實施,如果其發(fā)現(xiàn)一核心具有的一目標操作狀態(tài)是較低限制性于該受限電源節(jié)能操作狀態(tài); 其中該同步邏輯組態(tài)為協(xié)調一最低限度足夠數目的其他核心用以發(fā)現(xiàn)是否該可用的領域是準備于實現(xiàn)一受限電源節(jié)能操作狀態(tài)。
      9.如權利要求3所述的多核心處理器,其中: 每個核心具有一目標操作狀態(tài); 該處理器包含一領域,其包括該微處理器的核心的至少其中之二; 該處理器提供一資源至該領域,其資源是由該領域的所述核心所共用; 該同步邏輯是組態(tài)成用以: 發(fā)現(xiàn)是否該領域共享該資源的其中一個該啟動核心具有一目標操作狀態(tài)較低限制性于一目前實現(xiàn)電源節(jié)能操作狀態(tài); 啟動該核心,如果其是授權以協(xié)調其資源,以撤銷對該資源的一電源節(jié)能操作狀態(tài),若該同步邏輯已經發(fā)現(xiàn)該領域的一啟動核心具有一目標操作狀態(tài)較低限制性于一目前實現(xiàn)電源節(jié)能操作狀態(tài)。
      10.如權利要求3所述的多核心處理器,其中該同步邏輯的每個實例是組態(tài)成根據在一階層式方式組織核心間協(xié)調的一階層式協(xié)調系統(tǒng)用以在該多核心處理器的其他核心上實施該同步邏輯的從屬實例。
      11.如權利要求3所述的多核心處理器,其中該階層式協(xié)調系統(tǒng)是根據在所述領域內所述核心所共享的資源將所述核心聚集至所述領域,其中對每個領域而言,為了所述資源的一協(xié)調組態(tài)的目的,一個單一核心被指定為該域的管理者。
      12.如權利要求3所述的多核心處理器,其中: 該階層式協(xié)調系統(tǒng)是將所述核心聚集至多個領域層級,至少包含: 一最高地位的首要層級領域,具有全部的所述核心;以及 二個或二個以上對等次一地位的第二層級領域,最緊接于該最高地位,其是該首要層級領域的組成者并成巢于內,每個第二層級領域群組分別包括所述核心的獨占副群組;對每個多核心領域層級,一個單一核心是被指定為該領域的一管理者; 該最低層級多核心領域以外的每個多核心領域是定義一同屬性群組,其是由最緊隨以下地位的組成者領域的管理者核心所組成; 每個最低層級多核心領域定義一同屬性群組,其是由其全部的核心所組成; 每個核心屬于至少一同屬性群組;以及 該同步邏輯的每個本地實例受限于將該同步邏輯的新實例實施至非屬于一本地核心同屬性群組的多個核心。
      13.如權利要求3所述的多核心處理器,其中該多核心處理器的多個核心的其中一個指定為對該階層式協(xié)調系統(tǒng)的每個多核心領域的一管理者。
      14.如權利要求3所述的多核心處理器,其中每個核心是組態(tài)為用以采用其分散式核心間狀態(tài)發(fā)現(xiàn)微碼單元來發(fā)現(xiàn)是否該多核心處理器的其他核心為禁能。
      15.如權利要求3所述的多核心處理器,其中每個核心組態(tài)為用以采用其分散式核心間狀態(tài)發(fā)現(xiàn)微碼單元來發(fā)現(xiàn)該多核心處理器具有多少個啟動核心。
      16.如權利要求3所述的多核心處理器,其中每個核心組態(tài)為用以采用其分散式核心間狀態(tài)發(fā)現(xiàn)微碼單元來發(fā)現(xiàn)該多核心處理器的一階層式協(xié)調系統(tǒng)。
      17.一種多核心處理器的發(fā)現(xiàn)狀態(tài)的分散式電源管理實現(xiàn)方法,該多核心處理器包括多個實體處理核心,該方法包括: 至少二核心經由不通過任何集中式非核心邏輯、而由核心交換的信號來參與一分散式核心間狀態(tài)發(fā)現(xiàn)過程。
      18.如權利要求17所述的方法,其中該方法施行于發(fā)現(xiàn)下述狀態(tài)的至少其中之一: 對該處理器的一復合電源狀態(tài); 對該處理器的一領域的一復合電源狀態(tài),該領域包括多個核心的一群組,其根據多個組態(tài)的其中之一為了電源節(jié)能的目的而共享可操作地被組態(tài)的一可組態(tài)資源; 另一核心的一目標電源狀態(tài); 共享一可組態(tài)資源的多個核心的一群組任一者的一最低限制性目標電源狀態(tài); 一最高限制性目標電源狀態(tài),其是由不妨礙其他核心的對應目標操作狀態(tài)的一核心所實現(xiàn); 一核心是否啟動或禁能; 該多核心處理器具有 多少個核心為啟動; 共享資源及多個核心的領域的一識別,在其中各樣的可組態(tài)資源是被共享; 所述核心的一階層式協(xié)調系統(tǒng),用于經營共享資源; 在多核心處理器內多條旁路通訊配線以協(xié)調核心的一利用率,其旁路通訊配線獨立于將該多核心處理器連接至一晶片組的一系統(tǒng)總線;以及 所述核心的一階層式協(xié)調系統(tǒng),施行于旁路通訊配線上的核心間通訊,旁路通訊配線獨立于將該多核心處理器連接至一晶片組的一系統(tǒng)總線。
      19.如權利要求18所述的方法,其中每個參與的核心使用旁路通訊配線與另一參與的核心交換狀態(tài)相關信號,旁路通訊配線獨立于將該多核心處理器連接至一晶片組的一系統(tǒng)總線。
      20.如權利要求18所述的方法,還包括參與該分散式核心間狀態(tài)發(fā)現(xiàn)過程來發(fā)現(xiàn)另一核心的一目標電源狀態(tài)。
      21.如權利要求18所述的方法,還包括參與該分散式核心間狀態(tài)發(fā)現(xiàn)過程來發(fā)現(xiàn)核心的群組的一復合電源狀態(tài)。
      22.如權利要求18所述的方法,還包括有關一限制其是該資源的組態(tài)將影響該電源、速度、或效率隨共享資源能夠操作的一核心,參與該分散式核心間狀態(tài)發(fā)現(xiàn)過程來限制操作狀態(tài)的實現(xiàn)供組態(tài)一共享資源至一操作狀態(tài),其不再限制于共享該資源的任何核心的該最低限制目標操作狀態(tài)。
      23.如權利要求18所述的方法,還包括: 每個核心接收一目標操作狀態(tài); 每個核心,回應于接收該目標操作狀態(tài),實施同步邏輯的一本地實例,具體化于該核心的微碼,用以發(fā)現(xiàn)一可用的狀態(tài); 其中該可用的狀態(tài)是不大于該核心所擁有的目標操作狀態(tài)的一最高限制性操作狀態(tài),其是由不妨礙其他核心的對應目標操作狀態(tài)的該核心所實現(xiàn);同步邏輯的該本地實例在另一核心實施該同步邏輯讀至少一新的從屬實例,及遞送該本地核心的目標操作狀態(tài)至該其他核心;以及 該從屬實例計算一混合操作狀態(tài)為至少是目標操作狀態(tài)可用于自身及從其他本地核心接收的該目標操作狀態(tài)的一功能,及傳回該混合操作狀態(tài)至該本地核心。
      24.如權利要求23所述的方法,還包括: 同步邏輯的每個實例,除非由一終止條件早先地終止,遞歸地在其他仍未同步的核心上實施該同步邏輯的多個實例,直到該同步邏輯的同步實例已經實施在該處理器的一可用的領域的全部核心。
      25.如權利要求24所述的方法,還包括: 同步邏輯的每個實例條件性地防止同步邏輯的從屬實例更在其他尚未同步的核心上實施,如果其實例發(fā)現(xiàn)一核心具有的一目標操作狀態(tài)是非較多限制性于該資源的最低受限操作狀態(tài); 其中該同步邏輯是組態(tài)為協(xié)調一最低限度足夠數目的其他核心用以發(fā)現(xiàn)是否一受限操作狀態(tài)能施行于該共享資源。
      26.—種微碼常式被編碼在一多核心處理器的一實體處理核心的一計算機可讀取的儲存媒體中,該微碼常式包括碼供經由不通過任何集中式非核心邏輯、而由核心交換的信號來使用一分散式核心間狀態(tài)發(fā)現(xiàn)過程,用以發(fā)現(xiàn)該多核心處理器的一可用的狀態(tài); 其中該可用的狀態(tài)為下述狀態(tài)的其中之一: 對該處理器的一復合電源狀態(tài); 對該處理器的一領域的一復合電源狀態(tài),該領域包括多個核心的一群組,其是根據多個組態(tài)的其中之一為了電源節(jié)能的目的而共享可操作地被組態(tài)的一可組態(tài)資源; 另一核心的一目標電源狀態(tài); 共享一可組態(tài)資源的多個核心的一群組任一者的一最低限制性目標電源狀態(tài); 一最高限制性目標電源狀態(tài),其是由不妨礙其他核心的對應目標操作狀態(tài)的一核心所實現(xiàn); 一核心是否啟動或禁能; 該多核心處理器具有多少個核心為啟動; 共享資源及多個核心的領域的一識別,在其中各樣的可組態(tài)資源是被共享; 所述核心的一階層式協(xié)調系統(tǒng),用于經營共享資源; 在多核心處理器內多條旁路通訊配線以協(xié)調核心的一利用率,其旁路通訊配線是獨立于將該多核心處理器連接至一晶片組的一系統(tǒng)總線;以及 所述核心的一階層式協(xié)調系統(tǒng),施行于旁路通訊配線上的核心間通訊,旁路通訊配線是獨立于將該多核心處理器連接至一晶片組的一系統(tǒng)總線。
      【文檔編號】G06F1/32GK103955265SQ201410214249
      【公開日】2014年7月30日 申請日期:2011年12月22日 優(yōu)先權日:2010年12月22日
      【發(fā)明者】G.葛蘭.亨利, 達魯斯.D.嘉斯金斯 申請人:威盛電子股份有限公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1