专利摘要:
提供用於記憶體共用裝置12A與12B之間的有效快取連貫性之系統、方法及裝置。詳言之,可至少部分基於區塊追蹤項(BTE)之一表抑制窺探訊務。每一BTE可指示一記憶體區塊之一或多個快取線之群組是否可潛在地被另一記憶體共用裝置12A及12B使用。藉由實例,一記憶體共用裝置12可使用一BTE表56,每一BTE表56具有若干快取狀態項。在一快取狀態項指示一或多個快取線之一群組皆不可能被另一記憶體共用裝置12使用時,可抑制針對彼群組之任何快取線之窺探請求而不危害快取連貫性。
公开号:TW201303602A
申请号:TW101120931
申请日:2012-06-11
公开日:2013-01-16
发明作者:Ian C Hendry;Jeffry Gonion
申请人:Apple Inc;
IPC主号:G06F12-00
专利说明:
用於快取區塊連貫性之系統、方法及裝置
本發明大體上係關於快取連貫性,且更特定言之,係關於用於藉由追蹤一或多個快取線之群組是否可能在使用中來有效地維持裝置之間的快取連貫性之技術。
本部分意欲向讀者介紹此項技術之各種態樣,該等態樣可係關於本技術之在下文描述及/或主張之各種態樣。咸信此論述有助於向讀者提供背景資訊來促進較好地理解本發明之各種態樣。因此,應理解應依據此閱讀此等陳述,且不作為先前技術之承認而閱讀。
具有多個處理器或其他記憶體共用裝置之電子裝置頻繁地使用快取連貫性技術來維持共用記憶體之完整性。常見快取連貫性技術可涉及匯流排窺探,其中一處理器可在存取所要記憶體之前將窺探請求傳達至另一處理器。此等快取連貫性技術可在處理器在相對中等記憶體頻寬上操作時產生可接受的結果。然而,在處理器中之一或多者為使用尤其高的記憶體頻寬之記憶體共用裝置(例如,圖形處理單元或GPU)時,可產生過量窺探訊務。出於此原因,通常使諸如GPU之高頻寬裝置與電子裝置中之其他記憶體共用裝置非連貫。不幸地是,非連貫裝置可要求特別撰寫之軟體來管理非連貫裝置的非連貫記憶體。因此,可限制針對一般計算任務使用高效能、高頻寬處理器。舉例而言,GPU上之一般處理可要求經撰寫而具有顯式記憶體緩衝器管理之特殊化程式,此對於軟體開發者而言可為令人望而卻步地繁重。
下文中闡述本文中所揭示之特定實施例之綜述。應理解,僅為了向讀者提供此等特定實施例之簡要綜述而呈現此等態樣,且此等態樣並不意欲限制本發明之範疇。實際上,本發明可包含下文中可能未闡述之多種態樣。
本發明之實施例係關於用於有效地維持諸如中央處理單元(CPU)及圖形處理單元(GPU)之記憶體共用裝置之間的快取連貫性之技術。舉例而言,本實施例可不僅涉及簡單地根據一習知快取連貫性協定(例如,MESI、MOSI、MOESI等等)發出快取線窺探請求(此可產生巨量窺探訊務)。替代地,可在一所要快取線不可能被另一記憶體共用裝置使用時藉由抑制窺探訊務來更有效地維持快取連貫性。為了判定抑制哪一窺探訊務,本實施例可追蹤記憶體區塊中之一或多個快取線之群組是否可能被其他處理器使用。詳言之,一記憶體共用裝置可使用「區塊追蹤項(BTE)」之一表,每一BTE指示一記憶體區塊之一或多個快取線之群組是否可潛在地被另一記憶體共用裝置使用。具體言之,每一BTE可包括數個「快取狀態項」,「快取狀態項」分別註明一或多個快取線是否可潛在地被一或多個其他記憶體共用裝置使用(例如,「要求線窺探」或「不要求線窺探」)。
該區塊追蹤項(BTE)表可阻止相當大部分的不必要窺探訊務,從而允許有效得多之快取連貫性。舉例而言,若一有效BTE指示一快取線為不要求線窺探的,則該記憶體共用裝置可自共用記憶體存取該快取線而不廣播任何窺探請求。否則,該記憶體共用裝置可廣播一快取線窺探請求以確保快取連貫性。藉由實例,一記憶體共用裝置可使用一BTE表,每一BTE表具有若干快取狀態項。在一快取狀態項指示一或多個快取線之一群組皆不可能被另一記憶體共用裝置使用時,可抑制針對彼群組之任何快取線之一窺探請求而不危害快取連貫性。
可關於本發明之各種態樣存在上文所提及之特徵之各種改進。其他特徵亦可併入於此等各種態樣中。此等改進及額外特徵可個別地或以任一組合之形式而存在。舉例而言,下文關於所說明實施例中之一或多者而論述的各種特徵可單獨地或以任一組合之形式併入至本發明之上述態樣中的任何者中。再一次,上文所呈現之該簡要綜述僅意欲使讀者熟悉本發明之實施例之特定態樣及內容脈絡,而非限制所主張標的物。
在研讀以下詳細描述之後且在參看圖式之後可更佳地理解本發明之各種態樣。
下文將描述本發明之一或多個特定實施例。此等所描述實施例僅為當前揭示之技術的實例。另外,在提供此等實施例之簡明描述之努力中,在說明書中可能並未描述實際實施之所有特徵。應瞭解,在任一此實際實施之開發中(如在任一工程或設計專案中),必須作出許多實施特定決策來達成開發者之特定目標,諸如遵守系統相關及商務相關約束,該等目標可隨實施之變化而變化。此外,應瞭解,此開發努力可為複雜且耗時的,但對於具有本發明之益處的一般技術者而言可為設計、生產及製造中之一常規任務。
在介紹本發明之各種實施例之元件時,冠詞「一」及「該」意欲意謂存在一或多個元件。術語「包含」、「包括」及「具有」意欲為包括性的且意謂除所列要素外還可存在額外要素。另外,應理解,對本發明之「一實施例」之提及並不意欲解釋為排除亦併有所敍述特徵之額外實施例的存在。
如上文所提及,本發明之實施例係關於技術,該等技術用於藉由諸如中央處理單元(CPU)及圖形處理單元(GPU)之記憶體共用裝置來有效地維持快取連貫性,甚至在記憶體共用裝置中之一或多者消耗記憶體之相對高頻寬(例如,100 GB/s或100 GB/s以上,尤其是跨越PCIe)時亦如此。舉例而言,本實施例可不僅涉及根據習知快取連貫性協定(例如,MESI、MOSI、MOESI等等)發出快取線窺探請求(此可在記憶體之大片區域正被不斷地周轉時產生巨量窺探訊務)。記憶體之大片區域之此快速周轉可在諸如GPU之高頻寬記憶體共用裝置之快取記憶體中頻繁地發生。替代地,可在可判定所要快取線不可能被另一記憶體共用裝置使用時藉由抑制某一窺探訊務來更有效地維持快取連貫性。為了判定抑制哪一窺探訊務,本實施例可追蹤記憶體區塊中之一或多個快取線之群組是否可能被其他處理器使用。此記憶體區塊可或可不為相鄰記憶體區塊。
詳言之,每一記憶體共用裝置可使用維持「區塊追蹤項(BTE)」之表的「窺探抑制區塊」。BTE之此表可被稱作「BTE表」。如本文中所使用,應瞭解,此窺探抑制區塊可經實施為記憶體共用裝置之硬體組件或某一形式之機器可讀指令,諸如韌體或軟體。然而成信,在以硬體實施時,窺探抑制區塊將有效得多。BTE表可表示BTE之集合,BTE中之每一者指示記憶體區塊之一或多個快取線之群組是否可潛在地被另一記憶體共用裝置使用。亦即,每一BTE可包括數個「快取狀態項」,每一快取狀態項指示一或多個快取線是否可潛在地被一或多個其他記憶體共用裝置使用。具體言之,每一快取狀態項可指示一群組之一或多個快取線是「要求線窺探」抑或是「不要求線窺探」。
快取狀態項指示一或多個快取線之群組應被指示為要求線窺探抑或是不要求線窺探可取決於使用中之底層快取連貫性協定。舉例而言,預期針對提供修改、獨佔(exclusive)、共用及無效之快取連貫性狀態的MESI協定,快取狀態項可在一或多個快取線之群組之一或多個快取線中的至少一者由另一記憶體共用裝置保持於或可由另一記憶體共用裝置保持於修改、共用或獨佔狀態時指示該群組為要求線窺探的。同樣,在一或多個快取線之群組之所有快取線處於在未使記憶體共用裝置知曉的情況下該等快取線無法被存取或修改之狀態下時,快取狀態項可指示該群組為不要求線窺探的。因此,若第二記憶體共用裝置有可能存取給定快取線而不首先通知第一記憶體共用裝置(例如,經由快取線窺探請求),則與第一記憶體共用裝置相關聯之BTE的快取狀態項將不會將包括彼快取線之群組列出為不要求線窺探的。
記憶體共用裝置之窺探抑制區塊中的區塊追蹤項(BTE)表可阻止相當大部分之不必要窺探訊務,從而允許有效得多之快取連貫性。舉例而言,在記憶體共用裝置企圖存取未直接存在於其本端快取記憶體中的記憶體之快取線時(在被稱為「快取未命中」之情況下),記憶體共用裝置可不必廣播針對所要快取線之快取線窺探請求。替代地,若窺探抑制區塊判定其BTE表之區塊追蹤項(BTE)指示快取線為不要求線窺探的,則記憶體共用裝置可自共用記憶體存取該快取線而不廣播任何窺探請求。若窺探抑制區塊之BTE表沒有具有指示所要快取線之狀態的快取狀態項之BTE,或若BTE表含有具有指示所要快取線為要求線窺探之快取狀態項的BTE,則記憶體共用裝置可廣播快取線窺探請求以確保快取連貫性。
發送出快取線窺探請求可用以有效地填入記憶體共用裝置之窺探抑制區塊的區塊追蹤項(BTE)表。詳言之,因為存取所要快取線通常可在存取共用記憶體中在所要快取線附近的其他快取線之前,所以替代或除了習知快取線窺探回應以外,接收快取線窺探請求之其他記憶體共用裝置可藉由提供保守地列出包括所要快取線之快取線區塊的狀態之BTE而回應於此快取線窺探請求。以此方式,若其他記憶體共用裝置不正在使用特定快取線或含有該快取線之記憶體區塊中的彼等快取線,則發出快取線窺探請求之記憶體共用裝置可接收指示同樣情況之BTE。因此,因為記憶體共用裝置之窺探抑制區塊之BTE表可將此等其他快取線列出為不要求線窺探的,所以在此等其他快取線之快取未命中時,記憶體共用裝置可直接在共用記憶體中存取此等其他快取線而不廣播任何額外快取線窺探請求。
如下文中將更詳細描述,本發明提供用於在記憶體共用裝置之此窺探抑制區塊中使用及填入區塊追蹤項(BTE)表之多種實施例。如上文所提及,根據本發明,使用至少一高頻寬記憶體共用裝置(諸如,圖形處理單元(GPU))之電子裝置可藉由更有效地維持快取連貫性而特別地獲益。然而,應理解,甚至咸信僅具有相對低頻寬之記憶體共用裝置的電子裝置亦可自本技術獲益。
藉由記住前文,下文提供能夠使用所揭示之記憶體連貫性技術之合適電子裝置的一般描述。在圖1中,提供一方塊圖,其描繪可存在於適合與本技術一起使用之電子器件中的各種組件。在圖2中,描繪此處經提供為筆記型電腦系統之合適電子裝置之一實例。可結合本技術使用此等類型之電子裝置及具有相當記憶體管理能力之其他電子裝置。
圖1為說明能夠執行本文中所揭示之技術的電子裝置10之各種組件及特徵之方塊圖。在當前所說明實施例中,此等組件可包括兩個或兩個以上處理器12、記憶體14、非揮發性儲存器16、顯示器18、輸入結構20、輸入/輸出(I/O)埠22、網路連接裝置24及電源26。
處理器12可包括至少兩個處理器,該等處理器可或可不具有異質能力。藉由實例,處理器12中之一者可為具有相對低特性記憶體使用率及/或頻寬之中央處理單元(CPU),且處理器12中之另一者可為具有相對較高特性記憶體使用率及/或頻寬之圖形處理單元(GPU)。儘管本發明使用CPU及GPU表示異質處理器來提供本技術的各種實例,但應理解,可使用任何其他合適的記憶體共用裝置(例如,串流傳輸處理器、網路控制器等等)。在圖1之實例中,處理器12中之至少一者可允許實現作業系統(OS)之操作,該作業系統可將虛擬記憶體資源分配給在OS上執行之軟體。虛擬記憶體可對應於記憶體14及/或非揮發性儲存器16中之實際硬體位置。在處理器12上執行之OS亦可執行某些技術以用於為在處理器12之間共用的記憶體資源維持記憶體連貫性,如下文參看圖14所描述。額外或替代性地,處理器12之一或多個記憶體管理單元(MMU)可協調處理器間之通信以有效地維持異質處理器之間的快取連貫性。處理器12中之至少一者可包括區塊追蹤項(BTE)表,BTE可追蹤記憶體區塊中之一或多個快取線之群組是否可能被處理器12中之另一者使用。
記憶體14可儲存用於進行本文中所描述之本技術的特定態樣之指令。此等指令可至少暫時地儲存於記憶體14中且可由處理器12中之一或多者執行。亦可將此等指令儲存於可包括(例如)硬碟機或快閃記憶體之非揮發性儲存器16中。顯示器18可顯示OS或軟體之元件,諸如電子裝置10之使用者介面(UI)。使用者可經由可包括鍵盤及/或滑鼠或觸控板之輸入結構20與電子裝置10互動。在特定實施例中,顯示器18可為充當輸入結構20中之一者的觸控式螢幕顯示器。
電子裝置10之I/O埠22可使得電子裝置10能夠將資料傳輸至其他電子裝置10及/或諸如外部鍵盤或滑鼠之各種周邊裝置且自該等裝置接收資料。網路連接裝置24可允許實現個人區域網路(PAN)整合(例如,藍芽)、區域網路(LAN)整合(例如,Wi-Fi)及/或廣域網路(WAN)整合(例如,3G)。電子裝置10之電源26可為任何合適的電源,諸如可再充電鋰聚合物(Li聚)電池及/或交流(AC)電力轉換器。
電子裝置10可採取電腦或其他類型之電子裝置之形式。此等電腦可包括通常為攜帶型之電腦(諸如膝上型電腦、筆記型電腦及平板電腦)以及通常在一個位置使用之電腦(諸如習知的桌上型電腦、工作站及/或伺服器)。在特定實施例中,呈電腦形式之電子裝置10可為可購自Apple Inc.之MacBook®、MacBook® Pro、MacBook Air®、iMac®、Mac® mini或Mac Pro®之型號。藉由實例,根據本發明之一實施例,在圖2中說明採取筆記型電腦28之形式的電子裝置10。所描繪之電腦28可包括外殼30、顯示器18、輸入結構20及I/O埠22。在一實施例中,輸入結構20(諸如,鍵盤及/或觸控板)可用以與電腦28互動,諸如開始、控制或操作GUI或在電腦28上執行之應用程式。舉例而言,鍵盤及/或觸控板可允許使用者導覽在顯示器10上顯示之使用者介面或應用程式介面。
在上文參看圖1及圖2描述之系統中,處理器12可藉由追蹤記憶體區塊中之一或多個快取線之群組是否可能被處理器12中之另一者使用來有效地維持快取連貫性。如藉由圖3之雙處理器組態40所展示,兩個處理器12A及12B可分別經由一或多個記憶體匯流排42共用共用記憶體14之快取線。處理器12A及12B可經由記憶體匯流排42或經由通信匯流排44彼此通信。在圖3之雙處理器組態40中,處理器12A可為同質的或異質的。亦即,處理器12A及12B中之一者或兩者可為相對低頻寬之記憶體共用裝置(諸如,中央處理單元(CPU)),或處理器12A或12B中之一者或兩者可為相對高頻寬之記憶體共用裝置(諸如,圖形處理單元(GPU))。針對以下論述,第一處理器12A可為中央處理單元(CPU)且第二處理器12B可為圖形處理單元(GPU)。因此,在任一給定時間,第一處理器12A與第二處理器12B相比通常可對顯著較小之記憶體卡盤(chuck)進行操作。
如上文所提及,第一處理器12A及第二處理器12B兩者可經由一或多個記憶體匯流排42共用對共用記憶體14之存取。如下文將論述,處理器12A及12B可藉由一或多個記憶體匯流排42及/或通信匯流排44向彼此發出各種通信。此等通信可包括快取線窺探請求、快取線窺探回應、區塊追蹤項(BTE)請求及/或BTE回應。下文將更詳細論述此等通信之操作。
可為中央處理單元(CPU)之第一處理器12A可包括經說明為0至N個之任何合適數目個處理器核心46A,該等處理器核心46A中之每一者可對低層級快取記憶體48A中儲存之快取線進行操作。處理器核心46A亦可包括記憶體管理單元及/或轉譯對應緩衝器(TLB)組件50A。處理器層級快取記憶體52A可儲存可供所有處理器核心46A共用之快取線。在一些實施例中,第一處理器12A可包括僅低層級快取記憶體48A或僅處理器層級快取記憶體52A。TLB組件50A可將由在第一處理器12A上執行之作業系統(OS)之虛擬記憶體管理組件分配的虛擬記憶體之虛擬記憶體位址轉譯成由快取記憶體48A及52A以及共用記憶體14使用之實體位址。在處理器核心46A企圖存取不存在於其低層級快取記憶體48A或處理器層級快取記憶體52A中之記憶體的快取線時,第一處理器12A可試圖自別處(亦即,自共用記憶體14或自來自另一處理器12B之另一快取記憶體52A)載入快取線。如圖3中所看出,第二處理器12B亦可包括具有各別低層級快取記憶體48B、記憶體管理單元及/或轉譯對應緩衝器(TLB)組件50B之處理器核心46B及處理器層級快取記憶體52B。第二處理器12B之此等元件可以類似於第一處理器12A之彼等元件的方式操作,惟第二處理器12B之該等元件可經設計以在任一給定時間在記憶體之較高頻寬上操作。
為了有效地維持處理器12A與處理器12B之間的快取連貫性,第一處理器12A可包括含有區塊追蹤項(BTE)表56A之窺探抑制區塊54A,且第二處理器12B可包括具有BTE表56B之窺探抑制區塊54B。如下文將更詳細描述,窺探抑制區塊54A及/或54B可藉由阻止廣播某些快取線窺探請求而減少第一處理器12A與第二處理器12B之間的窺探訊務,從而釋放處理器循環及記憶體匯流排42或通信匯流排44上的通信頻寬。圖3之雙處理器組態40通常可使用任何合適的快取連貫性協定,諸如MESI、MOSI、MOESI等等。可結合窺探抑制區塊54A及54B使用此快取連貫性協定以有效地維持處理器12A與處理器12B之間的快取連貫性。
以下論述可闡明可如何使用區塊追蹤項(BTE)來維持兩個記憶體共用裝置(例如,第一處理器12A及第二處理器12B)之間的快取連貫性同時減少維持快取連貫性所需要之窺探訊務的量。為了易於解釋,在以下實例中,第一處理器12A經描述為發送窺探請求之記憶體共用裝置,且第二處理器12B經描述為以窺探回應回覆之記憶體共用裝置。然而應清楚,額外或替代性地,第二處理器12B可為發送窺探請求之記憶體共用裝置,且第一處理器12A可為以窺探回應回覆之記憶體共用裝置。
圖4之流程圖70表示一方式,其中第一處理器12A之窺探抑制區塊54A可有效地阻止自第一處理器12A至第二處理器12B之不必要窺探訊務。如圖4之流程圖60中所展示,在處理器核心46A請求存取記憶體中含有之資料元件時,處理器核心46A可以如由在處理器12A上執行之作業系統(OS)之虛擬記憶體管理組件所指派的邏輯記憶體位址發出記憶體請求。轉譯對應緩衝器(TLB)組件50A及/或與TLB組件50A相關聯之頁表可將邏輯位址轉譯成實體位址,從而將實體記憶體請求64發出至與處理器核心46A相關聯之快取記憶體48A或至快取處理器層級快取記憶體52A。若由實體記憶體請求64指示之快取線的有效複本存在於快取記憶體48A或52A中(在被稱為「快取命中」之情況下),則可傳回含有所請求之快取線資料的實體記憶體回應66,且將其作為邏輯記憶體回應68提供至處理器核心46A。
若實體記憶體請求64請求快取記憶體48A及/或52A中不存在有效複本之快取線(在被稱為「快取未命中」之情況下),則處理器12A可試圖自共用記憶體14或自另一處理器12(例如,第二處理器12B)獲得所要快取線。為了實現此情形,可藉由可為快取記憶體52A及一些實施例之處理器12A之任何合適組件提供記憶體及/或快取線窺探請求70。窺探抑制區塊54A可排除某些不必要窺探訊務,其原本可能壓倒第二處理器12B處置窺探訊務之能力。詳言之,窺探抑制區塊54A可判定區塊追蹤項(BTE)表56A是否指示快取線狀態為不要求線窺探,不要求線窺探意謂在未首先將某一種類之指示發出至第一處理器12A的情況下快取線將不會由第二處理器12B存取或使用。若窺探抑制區塊54A之BTE表56A指示所請求之快取線為不要求線窺探之快取線,則窺探抑制區塊54A可發出記憶體請求72以自共用記憶體14獲得所請求之快取線而不將窺探請求發出至任何其他記憶體共用裝置。共用記憶體14可以含有快取線資料之記憶體回應74回覆。窺探抑制區塊54A可在記憶體回應76中傳遞來自記憶體回應74之快取線資料,該快取線資料最終可作為邏輯記憶體回應68被傳回至處理器核心46A及/或儲存於快取記憶體48A及/或52A中。
在所請求之快取線在BTE表56A中被列出為要求線窺探時,或在BTE表56A沒有對應於所請求之快取線的有效BTE時,窺探抑制區塊54A可不抑制針對所要快取線之任何窺探請求。實際上,窺探抑制區塊54A可將窺探請求發出至其他記憶體共用裝置(例如,至第二處理器12B之窺探抑制區塊54B)。舉例而言,窺探抑制區塊54A可發出快取線窺探請求80,接收傳回的快取線窺探回應82。額外或替代性地,窺探抑制區塊54A亦可發出區塊追蹤項(BTE)窺探請求84,接收作為回報BTE窺探回應86。快取線窺探回應82及/或BTE窺探回應86可由窺探抑制區塊54A使用以填入BTE表56A,從而允許窺探抑制區塊54A有效地消除自處理器12A至處理器12B之某些不必要窺探訊務。舉例而言,如下文參看圖8至圖21將更詳細論述,可發出此等通信之各種組合且對其進行回覆。
應理解,BTE表56A及/或56B不需要實體地位於其各別處理器12A或12B內。替代地,BTE表56A及/或56B僅需要與其各別處理器12A或12B相關聯,使得處理器12A或12B可判定何時可抑制窺探請求而不危害快取連貫性。在一些實施例中,BTE表56A及/或56B以硬體實施於如所說明之各別窺探抑制區塊54A及54B內。在其他實施例中,可使用在處理器12中之一或多者上執行之某一形式的處理器可執行指令來實施BTE表56A及/或56B。
為了在進一步繼續之前提供幾項實例,在窺探抑制區塊54A針對快取記憶體48B及/或52B中不存在的所請求之快取線發出快取線窺探請求80時,另一窺探抑制區塊54B可以BTE窺探回應86進行回覆或可根本不回覆。在另一窺探抑制區塊54B僅以BTE窺探回應86回覆快取線窺探請求80時,該回應可向窺探抑制區塊54A表示所請求之快取線未被第二處理器12B使用。在另一窺探抑制區塊54B未提供對快取線窺探請求80或BTE請求84之任何回覆時,該情況可向窺探抑制區塊54A表示包括所請求之快取線的記憶體區塊中之所有快取線應在BTE表54A中被標記為要求線窺探的。
如上文所指示,窺探抑制區塊54中之區塊追蹤項(BTE)表56可不僅追蹤最近窺探之快取線,而且可追蹤快取線區塊以判定何時可抑制快取線窺探請求。此BTE表56之一實例在圖5中出現。圖5之BTE表56包括數個區塊追蹤項(BTE)90。每一BTE 90可追蹤快取線區塊。因此,區塊標籤92可表示通常(如下文將進一步論述)對應於由快取線使用之實體記憶體位址之部分(例如,快取標籤之某一數目個最高有效位元(MSB))的BTE 90之一組件。有效性旗標94可指示BTE 90整體上為有效抑或是無效。可根據包括本文中所揭示之彼等技術之任何合適的技術來定義有效性旗標94經設定以指示BTE 90為有效抑或是無效。每一BTE 90可包括數個快取狀態項96,每一項對應於一或多個快取線之群組的狀態。BTE表56之BTE 90可根據任何合適技術予以添加及移除或隨時間推移而老化。
圖6中說明BTE 90之此等各種組件。快取狀態項96可包括任何合適數目個槽98,槽98中之每一者可表示BTE 90之單一快取狀態項96。快取狀態項96中之每一者可對應於在圖6中經說明為包括快取線位址102及快取線資料104之一或多個快取線100。可在快取線位址102處存取快取線資料104。BTE 90之區塊標籤92可對應於快取線位址102之某些位元(例如,某一數目個最高有效位元(MSB)),藉此識別BTE 90可對應於之快取線區塊。
在圖6之實例中,每一快取狀態項96對應於由BTE 90追蹤且由區塊標籤92識別之快取線區塊中的兩個快取線100。舉例而言,具有為零之邏輯值的快取狀態項96可指示對應於彼快取狀態項96之所有快取線100為不要求線窺探的(且因此,可抑制針對此等快取線之快取線窺探請求)。另一方面,具有相反邏輯值之快取狀態項96(諸如,儲存為一之邏輯值的快取狀態項96)可指示該快取狀態項96所對應於之快取線100中的至少一者可潛在地被另一記憶體共用裝置使用或由該另一記憶體共用裝置以其他方式存取或修改(因而在存取此等快取線100之前要求某一形式之窺探通信)。
如圖6之實例中所展示,快取狀態項96中之每一者對應於兩個快取線100。應瞭解,在替代實施例中,每一快取狀態項96可追蹤任何合適數目個快取線100(例如,一個、兩個、三個、四個、五個、六個或六個以上快取線100)。在每一快取狀態項96對應於兩個快取線100且每一BTE 90包括(例如)128條快取狀態項96時,每一BTE 90將追蹤256個快取線100(亦即,每一BTE 90追蹤4 KB記憶體)。如下文參看圖24至圖29將進一步論述,在一些實施例中,快取狀態項96之粒度可在BTE 90之間變化。舉例而言,在此等快取線100處於處理器12之間的相對較高之競爭量下時,BTE 90之快取狀態項96可為相對較細粒度的,每一快取狀態項96追蹤相對較少之快取線100。同樣,在此等快取線100處於處理器12之間的相對較低之競爭量下時,BTE 90之快取狀態項96可為相對較粗粒度的,每一快取狀態項96追蹤相對較多之快取線100。儘管以下實例論述基於競爭使BTE 90之粒度變化,但競爭僅代表為了實現此情形的一項實例基準。用於使BTE 90之粒度變化之許多其他基準為可能的。舉例而言,在由BTE 90追蹤之記憶體區塊不太可能由不同處理器12存取(例如,記憶體區塊處於在各種處理器12之間劃分的暫存器集中)時,BTE 90可比原本相對更粗粒度。
可選擇BTE 90之區塊標籤92、有效性旗標94及快取狀態項96的位元之數目以利用電子裝置10之可用硬體資源。舉例而言,如圖7中所展示,可跨越記憶體匯流排42及/或通信匯流排44之同一資料路徑110傳輸區塊追蹤項(BTE)90及快取線100兩者。以此方式,為了有效地利用資料路徑100,每一BTE 90之大小可對應於快取線100之大小。舉例而言,在快取線100包括128個資料位元時,BTE 90可包括128個快取狀態項96。另外,在跨越記憶體匯流排42及/或通信匯流排44傳輸快取線100或BTE 90時,指示符112可提供對通信目的之指示(例如,通信的是BTE 90而非快取線100)。在一些實施例中,快取線100之快取標籤102的大小可類似於BTE 90之區塊92的大小。同樣,在一些實施例中,快取線100之快取線資料104的大小可與BTE 90之BTE項96的總和相同。
取決於特定實施,窺探抑制區塊54可在所要快取線100之快取未命中時發出快取線窺探請求80或BTE請求84,或快取線窺探請求80及BTE請求84兩者。舉例而言,如圖8中所展示,第一窺探抑制區塊54A可跨越記憶體匯流排42及/或通信匯流排44發出BTE請求84,請求另一窺探抑制區塊54B提供與特定記憶體區塊相關聯之BTE 90。藉由實例,此BTE請求84可提供區塊標籤92及對所請求之BTE 90之快取狀態項96的所請求粒度之指示。如下文將論述,窺探抑制區塊54B可以包括BTE 90之BTE回應86回覆,BTE 90基於快取記憶體48B及/或50B保守地提供所請求之記憶體區塊內之快取線100的群組的快取線狀態(例如,要求線窺探或不要求線窺探)。如下文亦將進一步論述,窺探抑制區塊54B可使用其BTE表56B或藉由執行對與第二處理器12B相關聯之快取記憶體48B及/或52B的某種調查來判定BTE回應86。窺探抑制區塊54A接著可使用在BTE回應86中接收到之BTE 90填入窺探抑制區塊54A的BTE表56A。
在其他實施中或在其他環境下,與第一處理器12A相關聯之第一窺探抑制區塊54A可經由記憶體匯流排42及/或通信匯流排44將快取線窺探請求加上指示符120傳達至與第二處理器12B相關聯之第二窺探抑制區塊54B,如圖9中所展示。快取線窺探請求加上指示符120之此指示符112組件可指示第二窺探抑制區塊54B傳回正常快取線窺探回應(例如,快取線100)或BTE回應86(例如,BTE回應86可包括BTE 90)。因此,窺探抑制區塊54B可接收快取線窺探請求加上指示符120且預備適當回應。在圖9之實例中,窺探抑制區塊54B可以快取線及/或BTE回應加上指示符122回應於快取線窺探請求加上指示符120。快取線及/或BTE回應加上指示符122之此指示符112組件可允許第一窺探抑制區塊54A區分窺探抑制區塊54B已傳回快取線100抑或是BTE 90。
額外或替代性地,第一窺探抑制區塊54A可傳輸快取線窺探請求80以代替快取線窺探請求加上指示符120。藉由實例,在處理器12B之快取記憶體48A及/或52A中存在快取線100時,或在處理器12B具有對快取線100之獨佔使用權(sole use)時,窺探抑制區塊54B可以快取線100進行回應。在快取線100未被處理器12B使用時,窺探抑制區塊54B替代地可傳回包括BTE 90之BTE回應86。此BTE 90可提供快取線窺探請求80所關於之某一記憶體區塊中之快取線100的狀態。
在處理器12(例如,12A)中之一者企圖對快取線100進行操作時,彼處理器12(例如,12A)取決於區塊追蹤項(BTE)表56(例如,56A)可或可不發出任何窺探請求。圖10至圖13通常提供用於以阻止跨越記憶體匯流排42及/或通信匯流排44之某些不必要窺探訊務的方式操作處理器12之方法之實例。儘管以下論述將第一處理器12A指代為起始與第二處理器12B之通信,但應瞭解,任何具有與之相關聯之BTE表56之記憶體共用裝置皆可使用下文所描述之技術。
轉而參看圖10,流程圖130描述一處理器12(例如,12A)可如何試圖經由使用區塊追蹤項(BTE)表56(例如,56A)有效地維持與另一處理器(例如,12B)之快取連貫性。圖10之流程圖130可在處理器核心46A企圖存取所要快取線100(區塊132)時開始。若在快取記憶體48A及/或52A中存在所要快取線100(在被稱為「快取命中」之情況下),則可根據任何合適快取連貫性協定(例如,MESI、MOSI、MOESI等等)存取快取線100(區塊136)。若在快取記憶體48A及/或52A中不存在所要快取線100(在被稱為「快取未命中」之情況下)(決策區塊134),則可需要自共用記憶體14或自另一處理器12(例如,12B)獲得所要快取線100。
處理器12A繼續進行以獲得所要快取線100之方式可取決於如BTE表56A中所指示之所要快取線100的狀態。具體言之,處理器12A之窺探抑制區塊54A可確定在有效BTE 90的快取狀態項96中是否列出所要快取線100(或包括所要快取線100之快取線100的群組)之狀態(決策區塊138)。若快取狀態項96指示所要快取線100(或包括所要快取線100之快取線100的群組)被列出為不要求線窺探的(決策區塊140),則處理器12A可自共用記憶體114存取所要快取線而不發出任何窺探請求異動(區塊142)。以此方式,窺探抑制區塊54A可有效地抑制原本在習知快取連貫性協定(例如,MESI、MOSI、MOESI等等)下將被廣播至其他處理器12(例如,第二處理器12B)之快取線窺探請求80。
另一方面,若有效BTE 90之快取狀態項96指示所要快取線100(或包括所要快取線100之快取線100的群組)之狀態為要求線窺探的,或額外或替代性地,若無有效BTE 90包括指示所要快取線100(或包括所要快取線100之快取線100的群組)為不要求線窺探的(決策區塊140)的快取狀態項96,則窺探抑制區塊54A可不抑制窺探異動之發出。替代地,在此等條件下,窺探抑制區塊54A或處理器12A之其他窺探電路可發出BTE窺探請求84及/或快取線窺探請求80(區塊144)。處理器12A發出BTE窺探請求84抑或是快取線窺探請求80抑或是BTE窺探請求84及快取線窺探請求80兩者可取決於特定實施或環境。參看圖11至圖13更詳細描述用於進行如區塊144處所指示之此等窺探異動之各種方法。
在一些實施例中,在所要快取線100之快取未命中時,當BTE表56A中之有效BTE 90中的快取狀態項96中未將所要快取線100列出為不要求線窺探時,窺探抑制區塊54A可發出追蹤包括所要快取線100之記憶體區塊的BTE請求84(區塊152)。如上文所提及,窺探抑制區塊54A可發出BTE請求84以確定對含有所要快取線100之記憶體區塊(例如,記憶體區)之快取線100的要求線窺探或不要求線窺探之狀態之保守指示。接收到此BTE請求84時,諸如窺探抑制區塊54B之其他窺探抑制區塊54可預備此BTE 90以傳回至窺探抑制區塊54A。應瞭解,由屬於其他處理器12之其他窺探抑制區塊54(諸如,另一處理器12B之窺探抑制區塊54B)傳回之BTE回應86可保守地指示由BTE 90追蹤的記憶體區塊之快取線100是否可能被彼處理器12使用。換言之,由第一窺探抑制區塊54A接收之BTE回應86中含有的BTE 90可總是準確地指示快取線100何時為要求線窺探的,但可能不一定總是準確地指示快取線100何時為不要求線窺探的。以此方式,BTE回應86中接收之BTE 90可僅在抑制窺探請求將不會擾亂快取同調連貫性時導致受抑制之窺探請求,儘管可產生一些額外不必要的窺探請求亦如此。下文更詳細描述第二窺探抑制區塊54B可藉以預備BTE 90且以BTE回應86回覆之各種方式。
在一或多個BTE回應86中已接收到一或多個BTE 90時,窺探抑制區塊54A可使用此等BTE 90填入窺探抑制區塊54A之相關聯的BTE表56A(區塊156)。其後,第一處理器12A可繼續進行至基於新填入之BTE表56A以上文參看圖11描述之方式存取所要快取線100(區塊158)。亦即,若新接收之BTE 90指示所要快取線為不要求線窺探的,則窺探抑制區塊54A可存取共用記憶體14中之所要快取線而不發出窺探請求。若所要快取線在新接收之BTE 90中被指示為要求線窺探的,則窺探抑制區塊54A可發出快取線窺探請求80以確保維持快取連貫性。
在一些實施例中,如藉由圖12之流程圖170所表示,第一處理器12A可在發生快取未命中(其中有效BTE 90未指示所要快取線為不要求線窺探的)之後發出快取線窺探請求80(區塊172)。若快取線窺探請求80導致「窺探命中」(決策區塊174),意謂所要快取線被另一處理器12使用或在另一處理器12之另一快取記憶體48或50(例如,處理器12B之快取記憶體48B及/或52B)中被找到,則第一處理器12A可自第二處理器12B接收至少快取線資料104(區塊176)。
此外,若根據電子裝置10中使用之快取連貫性協定(例如,MESI、MOSI、MOESI等等)發出快取線窺探請求80導致第一處理器12A對所要快取線100(及/或由包括所要快取線100之快取狀態項96追蹤的快取線100之群組)之獨佔使用權(例如,擁有權及/或獨佔權),則第一處理器12A可將包括所要快取線之快取狀態項96標記為不要求線窺探的(區塊178)。額外或替代性地,若發出快取線窺探請求80導致所要快取線100(及/或由包括所要快取線100之快取狀態項96追蹤的快取線100之群組)實現將使所要快取線100(及/或由包括所要快取線100之快取狀態項96追蹤的快取線100之群組之快取線)在第二處理器12B未發出某一種類之窺探回應的情況下不可由第二處理器12B存取的任何其他狀態,則第一處理器12A可將快取狀態項96標記為不要求線窺探的。若在窺探抑制區塊54A之BTE表56A中不存在此BTE 90,則可產生此BTE 90且將其添加至BTE表56A,在BTE表56A中可將彼BTE 90之所有快取狀態項96標記為要求線窺探的,可能的唯一例外是對應於第一處理器12A現具有獨佔使用權之所要快取線100的快取狀態項96。若發出快取線窺探請求80導致對所要快取線100所屬於之特定記憶體區塊的獨佔使用權,則可將BTE 90之所有快取狀態項96標記為不要求線窺探的。不管第一處理器12A是否收到對所要快取線100之獨佔使用權,在接收到所要快取線100之快取線資料104(區塊176)之後,第一處理器12A接著可存取快取線100(區塊180)。
在由第一處理器12A在區塊172中發出快取線窺探請求80不會在其他處理器12(例如,第二處理器12B)處導致窺探命中(決策區塊174)時,其他處理器12可判定且傳回可由處理器12A接收(區塊182)之包括BTE 90之BTE回應86。第一處理器12A可使用BTE回應86中含有的BTE 90來填入第一處理器12A之BTE表56A(區塊184)。舉例而言,若第一處理器12A接收含有兩個BTE 90之兩個BTE回應86,則第一處理器12A可使用兩個BTE回應86填入第一處理器12A之BTE表56A,使得在BTE表56A中包括指示快取線100為要求線窺探之所有快取狀態項96。因為在區塊172處發出快取線窺探請求80不會在任何其他處理器12處導致窺探命中(決策區塊174),所以第一處理器12A接下來可將快取線100自共用記憶體14複製至第一處理器12A之快取記憶體48A及/或52A中(區塊186)。接著可自快取記憶體48A及/或52A存取所要快取線100(區塊180)。
額外或替代性地,如藉由圖13之流程圖200所展示,在第一處理器12A發出快取線窺探請求80(區塊202)時,第一處理器12A可接收快取線窺探回應82及BTE回應86兩者作為回覆(區塊204)。在一些實施例中,不管是否在另一處理器12(例如,第二處理器12B)處導致窺探命中,第一處理器12A可接收快取線窺探回應82及BTE回應86兩者。如在上文流程圖12中,第一處理器12A接著可使用快取線回應82及/或BTE回應86來填入第一處理器12A之BTE表56A且存取所要快取線100。
在圖14至圖16中描述根據各種實施例之用於維持快取連貫性之某些雜項規則。舉例而言,圖14之流程圖230描述第一窺探抑制區塊54A可藉以處理另一處理器12(例如,第二處理器12B)未能回應於由第一處理器12A發出之與所要快取線100相關聯的窺探請求的情況之方式。流程圖230可在第一處理器12A發出與所要快取線100相關聯之某一形式的快取請求(例如,快取線窺探請求80及/或BTE請求84)(區塊232)時開始。若在某一臨限時間量內未傳回作為回應的BTE回應86(區塊234),則可假定第二處理器12B可正使用所要快取線100可能屬於之記憶體區塊中含有的快取線100中之任一者。因此,第一處理器12A可在對應BTE 90中將彼記憶體區塊中之所有快取線100處理為要求線窺探的(區塊236)。
藉由實例,在第一處理器12A發出快取線窺探請求80從而在第二處理器12B處導致窺探命中之情況下,第二處理器12B可僅傳回所要快取線100(且根據任何合適快取連貫性協定(例如,MESI、MOSI、MOESI等等)自第二處理器12B自身之快取記憶體48B及/或52B撤銷彼快取線100或使彼快取線100失效)。儘管第二處理器12B可能尚未傳回BTE回應86,但第一處理器12A可產生及/或更新相關聯之BTE 90。可將BTE 90之所有快取狀態項96設定為要求線窺探的,從而確保窺探抑制區塊54A不會無意地抑制針對可能被第二處理器12B使用之快取線100的窺探請求。
根據某些快取連貫性協定,可由第一處理器12A發出之某些窺探異動可導致對所要快取線100之獨佔使用權(例如,獨佔權及/或擁有權)。舉例而言,如圖15中所展示,在發生此窺探異動(區塊252)時,第一處理器12A可將現被第一處理器12A獨佔使用之任何快取狀態項96標記為不要求線窺探的(區塊254)。舉例而言,若區塊252之窺探異動導致對所要快取線100之獨佔使用權,則可將對應於所要快取線之快取狀態項96標記為不要求線窺探的。若區塊252之窺探異動導致對記憶體區塊之獨佔使用權,則可將對應於該記憶體區塊之BTE 90之所有快取狀態項96標記為不要求線窺探的。此外,如圖16之流程圖270所展示,第一處理器12A有時可經受窺探異動,該窺探異動導致另一記憶體共用裝置(例如,第二處理器12B)可能快取一或多個快取線100(區塊272)。在發生此窺探異動時,第一處理器12A可將BTE 90之對應快取狀態項96標記為要求線窺探的(區塊274)。
如上文所提及,處理器12A可基於在快取未命中之後發生之窺探請求填入處理器12A的相關聯之BTE表56A。在一些實施例中,額外或替代性地,第一處理器12A可藉由前瞻地發出BTE請求84來填入第一處理器12A之BTE表56A。舉例而言,如圖17之流程圖280所展示,處理器12A可預期在未來存取BTE表56A可能不具有相關的有效BTE 90(或BTE表56A可具有在某一時段內未被更新之有效BTE 90)之某些快取線100(區塊282)。藉由實例,第一處理器12A可預期在處理器12A上執行的任務指示該處理器12A預期在未來對此等快取線100進行操作時存取此等快取線100。在方便的時間(例如,在備用循環期間),第一處理器12A可發出針對含有預期被存取之快取線100的記憶體區之BTE窺探請求84(區塊284)。第一處理器12A可接收回應於區塊284之BTE請求84的一或多個BTE回應86(區塊286),BTE回應86可用以填入該處理器12A之BTE表56A(區塊288)。其後,在最後存取快取線100時,窺探抑制區塊54A可使用被新填入之BTE表56A按上文所論述之方式避免不必要的窺探請求。
與圖10至圖17相關聯之上文論述通常係關於發出處理器(例如,第一處理器12A)可使用該處理器的BTE表56A來有效地維持快取連貫性之方式。下文中,接著是關於接收記憶體共用裝置(例如,第二處理器12B)可進行回應之方式之論述。詳言之,圖18至圖21通常係關於記憶體共用裝置可回應於快取線窺探請求80及/或BTE請求84之不同方式。儘管在圖18至圖21之論述中,接收記憶體共用裝置由第二處理器12B表示以與上文實例一致,但應瞭解,實務上,第一處理器12A或第二處理器12B(或根據本實施例之任何其他記憶體共用裝置)可擔任此角色。在進一步繼續之前,亦應注意,圖18至圖21之實例不一定彼此互斥。
記住前文,圖18說明提供回應於快取線窺探請求80及/或BTE請求84之第一方法的流程圖290。流程圖290可在第二處理器12B接收來自第一處理器12A之快取線窺探請求80及/或BTE請求84(如通常可由於上文參看圖10至圖17描述之方法之實施例而發生)時開始(區塊292)。若區塊292之窺探請求中所請求的快取線100位於第二處理器12B之快取記憶體48B及/或52B中(決策區塊294),意謂已發生「窺探命中」,則第二處理器12B可藉由在快取線窺探回應82中提供快取線100之快取線資料104來回覆區塊292之窺探請求(區塊296)。額外或替代性地,第二處理器12B可傳回含有與快取線100關於之記憶體區塊相關聯的BTE 90之BTE回應86,如上文參看上文圖13之流程圖200所論述。
在區塊296之後,或若區塊292之窺探請求不會導致窺探命中(決策區塊294),則第二處理器12B可比較區塊292之窺探請求與該處理器12B之BTE表56B中的有效BTE 90(區塊298)。在有效BTE 90與區塊292處接收之快取線窺探請求80及/或BTE請求84之間存在重疊(決策區塊300)且當前未快取重疊快取狀態項90的任何部分(決策區塊302)之情況下,可將此等快取狀態項96標記為要求線窺探的(區塊304)。亦即,可將與區塊292處接收之窺探請求重疊的未經快取之快取線理解為現潛在地被第一處理器12A使用(或即將使用)。因此,將此等快取狀態項96標記為要求線窺探的(如藉由區塊304所指示)可確保第二處理器12B在存取此記憶體之前將某一種類之窺探請求傳達至第一處理器12A。
在一些實施例中,第二處理器12B可在區塊304之後發出快取線窺探回應82及/或BTE回應86。舉例而言,在圖21之實施例中,在區塊304之後,或若快取記憶體48B及/或52B之快取線100不與區塊292之窺探請求重疊(決策區塊300)及/或若此等重疊快取線100之部分當前未被快取(決策區塊302),則第二處理器12B可預備且發出包括BTE 90之BTE回應86(區塊306)。此BTE回應86可包括BTE 90,BTE 90包括快取狀態項96,快取狀態項96至少在快取線100儲存於該處理器12B之快取記憶體48B及/或52B中時指示此等快取線100為要求線窺探的。
亦即,第二處理器12B可發出包括BTE 90之BTE回應86,BTE回應86保守地傳回比第二處理器12B之快取記憶體48B及/或52B中可實際快取之快取狀態項96多的用旗標標記為要求線窺探之快取狀態項96。實現此情形將不違反當前描述之快取區塊連貫性協定之基本性質。藉由實例,若處理器12B包括具有4 MB的64位元組快取線集合的快取記憶體48B及/或52B,則此等快取記憶體48B及/或52B可包括總計65,536個快取線100。可能難以詳盡地搜尋快取記憶體48B及/或52B以判定是否快取了為BTE 90之主題的快取線100。替代地,處理器12B可使用快取線狀態之某一保守較低粒度指示或保守機率資料來預備BTE回應86。舉例而言,處理器12B可維持包括第二處理器12B之快取記憶體48B及/或52B中的快取線之類似性質之計數式布隆篩選器(counted Bloom filter)或任何其他合適的篩選器或篩選器階層。儘管此實施可能傳回誤判為肯定(false positive)(亦即,在快取記憶體48B及/或52B中可能實際不存在快取線100時,快取狀態項96指示此等快取線100為要求線窺探的),但不得傳回任何誤判為否定(false negative)(亦即,快取狀態項96將快取記憶體48B及/或52B中實際存在的快取線100指示為不要求線窺探的)。
圖19之流程圖320表示回應於自第一處理器12A接收到窺探請求(例如,快取線窺探請求80及/或BTE請求84)而更新BTE表56B之另一方式。圖19之流程圖320可在第二處理器12B自第一處理器12A接收到快取線窺探請求80及/或BTE請求84(區塊322)時開始。第二處理器12B可比較區塊322之窺探請求與第二處理器12B之BTE表56B中含有的有效BTE 90(區塊324)。在任何有效BTE 90追蹤重疊之快取線100(決策區塊326)之情況下,第二處理器12B可將此等快取狀態項90標記為無效(區塊328)(例如,藉由切換有效性旗標94來指示BTE 90為無效的)。在區塊328之動作之後,或若在有效BTE表56B與區塊322之窺探請求之間不存在重疊(決策區塊326),則第二處理器12B可預備且發出可包括快取線窺探回應82及/或BTE回應86之窺探回應(區塊330)。第二處理器12B可使用任何合適的技術預備且發出BTE回應86以包括BTE 90,該BTE 90至少在快取記憶體48B及/或52B中快取了快取線100的情況下保守地指示此等快取線100為要求線窺探的。舉例而言,第二處理器12B可根據上文參看圖18之區塊306所描述之技術預備且發出BTE回應86。
在一些實施例中,如圖20之流程圖340所展示,第二處理器12B可不簡單地將與所接收之窺探請求重疊的整個BTE 90標記為無效(如上文參看圖19大體上描述)。替代地,處理器12B可預備BTE回應86以在某些個別快取狀態項96對應於與窺探請求重疊之未經快取的快取線時指示此等快取狀態項96為要求線窺探的。詳言之,流程圖340可在第二處理器12B自另一記憶體共用裝置(例如,第一處理器12A)接收到快取線窺探請求80及/或BTE請求84(區塊342)時開始。
第二處理器12B可比較該處理器12B之BTE表56B的有效BTE 90與區塊342之窺探請求(區塊344)。接下來,第二處理器12B可判定在區塊342之窺探請求與BTE表56B的有效BTE 90之間是否存在重疊(決策區塊346)。若此等重疊的有效BTE 90之任何部分包括追蹤未由第二處理器12B快取的快取線100(例如,在快取記憶體48B及/或52B中不存在此等快取線100)之快取狀態項96(決策區塊348),則第二處理器12B可在BTE回應86中指示此等快取狀態項96為要求線窺探的。如可以圖18之區塊306之方式判定,此BTE回應86亦可將追蹤由處理器12B在快取記憶體48B及/或52B中快取的快取線100之任何快取狀態項96指示為要求線窺探的(區塊352)。應注意,藉由在BTE回應86中將由BTE表56B追蹤之彼等未經快取的快取線100指示為要求線窺探的,處理器12B可有效地要求第一處理器12A在存取此等快取線100中之任一者之前進行某一形式的窺探請求。
亦應注意,在區塊352處預備且發出BTE回應86不排除發出快取線窺探回應82。此外,在一些實施例中,第二處理器12B可在窺探命中的情況下發出快取線窺探回應82,傳回所要快取線100。在此等條件下,第二處理器12B可或可不預備且發出BTE回應86,如圖20中所展示。
在一些實施例中,第二處理器12B可藉由使與來自第一處理器12A之窺探請求重疊之該處理器12B的快取記憶體48B及/或52B中儲存之未經修改的快取線失效而對來自第一處理器12A之窺探回應作出反應。圖21之流程圖360表示此方法之實施例。流程圖360可在第二處理器12B接收到窺探請求(例如,快取線窺探請求80及/或BTE請求84)(區塊362)時開始。第二處理器12B之窺探抑制區塊54B可比較窺探抑制區塊54B之BTE表56B中含有的有效BTE 90與區塊362中接收之窺探請求。
在此等有效BTE 90包括追蹤與為區塊362之窺探請求之主題的記憶體重疊之記憶體之快取狀態項96(決策區塊366)且在第二處理器12B之快取記憶體48B及/或52B中的未經修改的快取線100中包括此記憶體(決策區塊368)之情況下,處理器12B可根據在使用中的快取連貫性協定(例如,MESI、MOSI、MOESI等等)使此等未經修改之重疊快取線100失效(區塊370)。否則,或在區塊370之動作之後,處理器12B可發出窺探回應(例如,快取線窺探回應82及/或BTE回應86)。舉例而言,如圖21中之區塊372處所展示,第二處理器12B可預備且發出BTE回應86,BTE回應86至少在快取記憶體48B及52B中快取了快取線100之情況下保守地指示此等快取線100為要求線窺探的,惟在區塊370處失效的彼等快取線100除外。因此,可以與圖18之區塊306中之方式實質上相同的方式預備且發出在區塊372處預備且發出之BTE回應,其中可能有少數幾個例外。舉例而言,在某些時間,對應於在區塊370處失效的快取線100之快取狀態項96可不一定被指示為要求線窺探的。
在某些實施例中,電子裝置10之諸如相對低頻寬之處理器12(例如,第一處理器12A)的一或多個記憶體共用裝置可藉由提供BTE回應86來支援回應於BTE窺探請求84或快取線窺探請求80而不發出BTE請求84及/或填入BTE表56(例如,BTE表56A)。亦即,因為低頻寬之記憶體共用裝置可能不需要經常自共用記憶體14存取快取線,所以在一些實施例中此等低頻寬之裝置可總是在快取未命中時簡單地發出快取線窺探請求80。亦即,在此等特定實施例中,低頻寬之記憶體共用裝置可甚至不包括窺探抑制區塊54或BTE表56。然而,此等低頻寬之記憶體共用裝置仍可藉由發出BTE回應86來回應於窺探請求以使其他記憶體共用裝置(例如,諸如第二處理器12B之高頻寬之記憶體共用裝置)能夠填入BTE表56且維持窺探抑制區塊54(例如,第二處理器12B之窺探抑制區塊54B之BTE表56B)。
在一些其他實施例(諸如,圖22之舊式裝置整合組態378之實施例)中,具有BTE表56之記憶體共用裝置(例如,處理器12)可維持與舊式記憶體共用裝置380之快取連貫性。儘管舊式記憶體共用裝置380可沒有BTE表56及/或可理解地回應於BTE請求84之能力,但仍可維持有效的快取連貫性。具體言之,在舊式裝置整合組態378中,快取區塊連貫性介面382(圖22中經說明為北橋)可能夠回應於來自第一處理器12A之BTE請求84。儘管此快取區塊連貫性介面382經展示為系統板之北橋,但快取區塊連貫性介面382可在任何合適的位置中出現,只要快取區塊連貫性介面382出於快取連貫性目的而保持可通信地插入於處理器12A與舊式記憶體共用裝置380之間即可。
藉由實例,第一處理器12A可經由記憶體匯流排42及/或通信匯流排44將快取線窺探請求80及/或BTE請求84發出至快取區塊連貫性介面382。快取區塊連貫性介面382接著可解譯此等窺探請求,且至少部分基於使用包括BTE表56C之窺探抑制區塊54C適當地回應。快取區塊連貫性介面382可經由可為(例如)PCIe通信匯流排之通信匯流排384與舊式記憶體共用裝置380通信。舊式記憶體共用裝置380可包括其自身的快取記憶體386,該快取記憶體386可儲存來自共用記憶體14及/或來自其他記憶體388之快取線100。舊式記憶體共用裝置380可經由記憶體匯流排390存取此其他記憶體388。
快取區塊連貫性介面382可接收且回應於來自第一處理器12A之快取線窺探請求80及/或BTE請求84,及/或可抑制來自舊式記憶體共用裝置380之某些不必要窺探請求。舉例而言,在第一處理器12A將BTE請求84發出至快取區塊連貫性介面382時,快取區塊連貫性介面382可藉由預備且發出BTE回應86而回應。BTE回應86可包括BTE 90,BTE 90在快取記憶體386中存在快取線100及/或舊式記憶體共用裝置具有對此等快取線100之獨佔權及/或擁有權時將此等快取線100之狀態保守地列出為要求線窺探的。同樣,在舊式記憶體共用裝置380請求在BTE表56C之有效BTE 90中被列出為不要求線窺探的所要快取線100時,快取區塊連貫性介面382可抑制此窺探請求。替代地,快取區塊連貫性介面382可存取共用記憶體14中之所要快取線100而不轉遞或發出窺探請求。類似地,快取區塊連貫性介面382可以上文論述之方式發出BTE請求84且填入該快取區塊連貫性介面382之BTE表56C。
為了對自處理器12A至舊式記憶體共用裝置380之BTE請求84及/或快取線窺探請求80進行回覆,快取區塊連貫性介面382可使用任何合適的技術產生BTE回應86。在圖23中出現一個此實施例。在圖23中所展示之實例中,處理器12A之窺探抑制區塊54A發出BTE請求84至快取區塊連貫性介面382之窺探抑制區塊54C。窺探抑制區塊54C可以對舊式記憶體共用裝置380而言可理解之方式與舊式記憶體共用裝置380通信。舉例而言,快取區塊連貫性介面382可將某一數目個快取線窺探請求80發送至舊式記憶體共用裝置380之快取記憶體386。快取線窺探請求80之數目可取決於用於回應於BTE請求84之當前時間約束及/或BTE請求86將快取線指示為不要求線窺探的何種保守程度將為合適的。舉例而言,窺探抑制區塊54C可在時間緊迫及/或大多數快取狀態項96可在BTE回應86中傳回的BTE 90中被可接受地列出為不要求線窺探時發出一個或僅幾個快取線窺探請求80。同樣,窺探抑制區塊54C可在時間緊迫及/或大多數快取狀態項96可在BTE回應86中傳回的BTE 90中被可接受地列出為不要求線窺探時發出一個或僅幾個快取線窺探請求80。
舊式記憶體共用裝置380可接收快取線窺探請求80且回應以快取線窺探回應82。由快取記憶體386傳回至快取區塊連貫性介面382之窺探抑制區塊54C之窺探回應82可用以製備BTE回應86。具體言之,取決於自快取記憶體386至窺探抑制區塊54C之窺探回應82之結果,BTE回應86可在BTE請求84中請求的所請求之記憶體區塊中指示已知未儲存於快取記憶體386中之快取線100為不要求線窺探的。
不管組態,電子裝置10可使用追蹤記憶體之靜態或動態大小(例如,快取線100之數目)的BTE 90。亦即,在一些實施例中,BTE 90可總是追蹤單一大小之記憶體區塊。額外或替代性地,BTE 90可追蹤記憶體區塊之非同質大小,或可追蹤記憶體區塊之可隨電子裝置10中的條件改變而調整之動態大小。
舉例而言,BTE 90可使用快取狀態項96追蹤特定記憶體區塊,快取狀態項96取決於記憶體共用裝置而分別追蹤快取線100之較粗粒度或較細粒度的群組。藉由實例,處理器12A可使用具有快取狀態項96之BTE 90,該等快取狀態項96追蹤快取線100之相對較細粒度的群組(例如,每一快取狀態項96可對應於一快取線)。同時,因為第二處理器12B可為較高頻寬之記憶體共用裝置(諸如,圖形處理單元(GPU)),所以第二處理器12B可使用具有快取狀態項96之BTE 90,該等快取狀態項96追蹤快取線之相對較粗粒度的群組(例如,每一快取狀態項96可對應於4個或4個以上快取線100)。在一些實施例中,同一記憶體共用裝置(例如,處理器12A)可使用具有相對較細粒度的快取狀態項96之一些BTE 90及具有相對較粗粒度的快取狀態項96之一些BTE 90。
額外或替代性地,在一些實施例中,記憶體共用裝置(例如,第一處理器12A)中之一或多者可使用取決於改變之條件而動態地追蹤不同大小的記憶體區塊之BTE 90。舉例而言,如藉由圖24之競爭圖400所展示,在分別與處理器12A及12B相關聯之BTE表56A及56B中含有的BTE 90可追蹤快取線100之相對精細或粗略之區塊401。追蹤較細粒度抑或較粗粒度的快取線100之區塊可取決於第一處理器12A與第二處理器12B之間的針對彼區塊401之快取線100之競爭程度。
在一些實施例中,競爭計數器值402可與BTE表56A及56B中含有的每一BTE 90相關聯。在第一處理器12A正自區塊401頻繁地存取亦正由另一處理器12B存取之快取線100時,可增加競爭計數器值402。在競爭計數器值402超過某一臨限值時,該競爭計數器值402所關聯之BTE 90可追蹤快取線100之相對較細粒度的區塊401,否則BTE 90可追蹤快取線100之相對較粗粒度的區塊401。因此,如圖24中所示意性地指示,通常可藉由較細粒度的BTE 404來追蹤處理器12A與處理器12B之間的高競爭之區域。此等較細粒度的BTE 404可使用追蹤快取線100之相對較小群組的快取狀態項96。同樣,在共用記憶體14之在處理器12A與處理器12B之間存在較少競爭之區域中,較粗粒度的BTE 406可用以追蹤此記憶體之狀態。如應瞭解,較粗粒度的BTE 406可使用追蹤快取線100之相對較大群組的快取狀態項96。舉例而言,若較細粒度的BTE 404包括每一快取狀態項96僅追蹤一個快取線100之快取狀態項96,則較粗粒度的BTE 406可包括每一快取狀態項96追蹤兩個或兩個以上快取線100之快取狀態項96。儘管圖24僅說明分別追蹤分別在較低及較高粒度下之快取線100的狀態之兩個類型之BTE 90,但可藉由其他BTE 90追蹤任何合適數目個粒度。亦即,在一些實施例中,可使用追蹤快取線100之區塊401的中間粒度之其他BTE 90。
諸如第一處理器12A之記憶體共用裝置可隨競爭改變而使BTE 90之粒度變化。如上文參看圖24所提及,競爭計數器402可在BTE表56A中儲存於BTE 90旁邊。如藉由圖25之流程圖430所展示,由BTE 90追蹤之粒度可取決於由BTE 90追蹤之記憶體區塊受到與另一記憶體共用裝置之競爭的程度而變化。
使用第一處理器12A作為實例,流程圖430可在第一處理器12A監視由BTE表56A中之BTE 90追蹤之記憶體區塊401的競爭時開始(區塊432)。藉由實例,競爭計數器402可儲存與關於由BTE 90追蹤之快取區塊401之記憶體的競爭量相關聯之某一值。在與BTE 90相關聯之競爭計數器402高於第一臨限值(決策區塊434)時,可使BTE 90分解成多個較細粒度的BTE 90(區塊436)。舉例而言,可在適當時使競爭計數器402超過第一臨限值之較粗粒度的BTE 406分解成兩個或兩個以上較細粒度的BTE 404。在另一實例中,可使具有每一快取狀態項96追蹤兩個快取線100之快取狀態項96的BTE 90分解成具有每一快取狀態項96追蹤一個快取線100之快取狀態項96的兩個BTE 90。在某些實施例中,在使BTE 90分解成多個較細粒度的BTE 90(如在區塊436中所指示)時,可將與每一新形成之BTE 90相關聯的競爭計數器402重設至某一開始值,可基於BTE 90隨後追蹤之記憶體區塊401的競爭遞增或遞減該開始值。
若與BTE 90相關聯之競爭計數器402不高於第一臨限值(區塊434),但低於某一第二臨限值(決策區塊438),則可將BTE 90轉換成較粗粒度的BTE 90(區塊440)。在一些實施例中,進行區塊440之轉換可涉及組合追蹤鄰近記憶體區塊401之兩個BTE 90,其中BTE 90中之一者或兩者具有低於第二臨限值之競爭計數器402。為了提供幾項實例,可在競爭計數器402指示正由該(等)BTE 90追蹤之記憶體區塊未受到臨限水準之競爭時將一或多個較細粒度的BTE 404轉換成較粗粒度的BTE 406。舉例而言,可將具有每一快取狀態項96追蹤一個快取線100之快取狀態項96的BTE 90轉換成具有每一快取狀態項96追蹤兩個或兩個以上快取線100之快取狀態項96的BTE 90。
雖然與BTE 90相關聯之競爭計數器402保持低於第一臨限值(決策區塊434)且高於第二臨限值(決策區塊438),但與由BTE 90追蹤之記憶體區塊401相關聯的競爭水準可保持相同且繼續被監視(區塊432)。換言之,與BTE 90相關聯之競爭計數器402可偶爾基於記憶體區塊受到第一處理器12A與第二處理器12B之間的競爭之程度而遞增或遞減。
競爭計數器402及/或其他窺探訊務統計資料可用以使用窺探抑制區塊54使電子裝置10之操作變化以更有效地維持快取連貫性。圖26中所說明之窺探訊務統計圖406表示可用以以此方式使電子裝置10之操作變化的某一窺探訊務統計資料462。舉例而言,窺探訊務統計資料462可包括:系統效能計數器464,其可與電子裝置10之總的系統效能有關;記憶體共用裝置效能計數器466,其可特定針對電子裝置10之記憶體共用裝置(諸如,第一處理器12A或第二處理器12B)中之某一者;記憶體共用裝置競爭計數器468,其可與可在競爭下之電子裝置10之記憶體共用裝置(例如,第一處理器12A)可與電子裝置10之某一其他記憶體共用裝置(例如,第二處理器12B)競爭的總程度有關;BTE競爭計數器402,如上文所論述;某些基於時間的計數器472;其他使用計數器474,其可以其他方式指示電子裝置10之某一組件正使用電子裝置10之資源的程度;及/或其他系統提示476,其可為(例如)頁表旗標、全域暫存器等等中之策略提示或控制項。
一般而言,可由記憶體共用裝置之窺探抑制區塊54使用窺探訊務統計資料462中之一或多者來控制何時(例如)使用BTE窺探請求84而不是快取線窺探請求80。額外或替代性地,窺探訊務統計資料462可用以判定BTE回應86中預備的BTE 90應將快取線100列出為不要求線窺探之保守程度。在一些實施例中,窺探訊務統計資料462可用以識別何時使用在處理器12中之一或多者上執行的處理器可執行指令(例如,軟體或韌體)將記憶體自一個處理器12(例如,第一處理器12A)交遞至另一處理器12(例如,第二處理器12B)。記憶體之此交遞亦可反映於處理器12之BTE 90中(例如,可更新第二處理器12B之BTE 90,此係因為可先驗地已知不需要進行窺探以存取新近在第二處理器12B之控制下記憶體)。
電子裝置10亦可使用窺探訊務統計資料462來減少電子裝置10之記憶體共用裝置(例如,第一處理器12A與第二處理器12B)之間的競爭。舉例而言,如圖27之流程圖490所示,電子裝置10之資料處理電路可週期性地考慮可與第一任務相關聯之記憶體的競爭計數器402及/或其他窺探訊務統計資料462(區塊492)。若競爭計數器402及/或窺探訊務統計資料462中之一或多者超過某一臨限值(區塊494),則處理器12可切換至第二任務,即較低競爭之任務(區塊496),以便減少當前競爭水準。
電子裝置之兩個或兩個以上記憶體共用裝置(例如,第一處理器12A及第二處理器12B)之間的針對記憶體之競爭亦可用以判定哪一記憶體共用裝置應被授予使用彼記憶體之權利。舉例而言,在由圖28及圖29表示之實施例中,具有對快取線100之特定區塊401的更大需求之處理器12可在某一時段內被給予對彼區塊401之獨佔使用權。如圖28中所說明,分別與處理器12A及12B相關聯之窺探抑制區塊54A及54B可偶爾共用窺探訊務統計資料462,諸如與該等窺探抑制區塊之各別BTE表56A中的BTE 90相關聯的競爭計數器402之一或多個集合。此資訊在圖28中被稱作BTE競爭指示符510,可在窺探抑制區塊54A與窺探抑制區塊54B之間交換BTE競爭指示符510。應理解,自窺探抑制區塊54A發送至窺探抑制區塊54B之BTE競爭指示符510可尤其與處理器12A有關,且自窺探抑制區塊54B發送至窺探抑制區塊54A之BTE競爭指示符510可尤其與第二處理器12B有關。
在圖29之流程圖520中,可週期性地或在某一事件(例如,進入特定操作模式)發生時交換此等BTE競爭指示符510(區塊522)。其後,在窺探抑制區塊54A與窺探抑制區塊54B之間發生窺探異動(區塊524)時,處理器12A及12B進行快取連貫性之方式可至少部分基於此等BTE競爭指示符510而變化。舉例而言,處理器12A是否可以快取線窺探回應82、BTE回應86抑或以快取線窺探回應82及BTE回應86兩者回應於快取線窺探請求80可取決於BTE競爭指示符510而變化。在另一實例中,是處理器12A抑或處理器12B將被授予對特定快取線100之存取權可取決於與彼記憶體相關聯之競爭指示符510。實際上,在一些實施例中,在發生窺探抑制區塊54A與窺探抑制區塊54B之間的窺探異動(區塊524)之後,第一處理器12A可被授予對窺探請求中所請求之快取線100的存取權及/或獨佔使用權。
本發明之技術效應包括維持兩個記憶體共用裝置之間的快取連貫性之電子裝置之增加的效率。在至少一個此記憶體共用裝置對相對高的記憶體頻寬進行操作(諸如,圖形處理單元(GPU))時可尤其放大此效率。藉由減少兩個記憶體共用裝置之間的某些不必要窺探異動,電子裝置可較快速地及/或以較少電力操作,從而允許改良電池壽命及/或產生較少電力以便使電子裝置充電,以及允許電子裝置可察覺地較快操作。
已藉由實例展示上文中所描述之特定實施例,且應理解此等實施例可以有各種修改及替代形式。應進一步理解,申請專利範圍並不意欲限於所揭示之特定形式,而是涵蓋落入本發明之精神及範疇內的所有修改、等效物及替代物。
10‧‧‧電子裝置
12‧‧‧處理器
12A‧‧‧第一處理器
12B‧‧‧第二處理器
14‧‧‧共用記憶體
16‧‧‧非揮發性儲存器
18‧‧‧顯示器
20‧‧‧輸入結構
22‧‧‧輸入/輸出(I/O)埠
24‧‧‧網路連接裝置
26‧‧‧電源
28‧‧‧筆記型電腦
30‧‧‧外殼
40‧‧‧雙處理器組態
42‧‧‧記憶體匯流排
44‧‧‧通信匯流排
46A‧‧‧處理器核心
46B‧‧‧處理器核心
48A‧‧‧快取記憶體
48B‧‧‧快取記憶體
50A‧‧‧轉譯對應緩衝器(TLB)組件
50B‧‧‧轉譯對應緩衝器(TLB)組件
52A‧‧‧快取記憶體
52B‧‧‧快取記憶體
54A‧‧‧窺探抑制區塊
54B‧‧‧窺探抑制區塊
54C‧‧‧窺探抑制區塊
56‧‧‧區塊追蹤項(BTE)表
56A‧‧‧區塊追蹤項(BTE)表
56B‧‧‧區塊追蹤項(BTE)表
56C‧‧‧區塊追蹤項(BTE)表
64‧‧‧實體記憶體請求
66‧‧‧實體記憶體回應
68‧‧‧邏輯記憶體回應
70‧‧‧記憶體及/或快取線窺探請求
72‧‧‧記憶體請求
74‧‧‧記憶體回應
76‧‧‧記憶體回應
80‧‧‧快取線窺探請求
82‧‧‧快取線窺探回應
84‧‧‧區塊追蹤項(BTE)窺探請求
86‧‧‧區塊追蹤項(BTE)窺探回應
90‧‧‧區塊追蹤項(BTE)
92‧‧‧區塊標籤
94‧‧‧有效性旗標
96‧‧‧快取狀態項/BTE項
98‧‧‧槽
100‧‧‧快取線
102‧‧‧快取標籤
104‧‧‧快取線資料
110‧‧‧資料路徑
112‧‧‧指示符
120‧‧‧快取線窺探請求加上指示符
122‧‧‧快取線及/或BTE回應加上指示符
130‧‧‧一處理器12(例如,12A)可如何試圖經由使用區塊追蹤項(BTE)表56(例如,56A)有效地維持與另一處理器(例如,12B)之快取連貫性的流程圖
170‧‧‧流程圖
200‧‧‧流程圖
230‧‧‧流程圖
270‧‧‧流程圖
280‧‧‧流程圖
290‧‧‧提供回應於快取線窺探請求80及/或BTE請求84之第一方法的流程圖
320‧‧‧表示回應於自第一處理器12A接收到窺探請求(例如,快取線窺探請求80及/或BTE請求84)而更新BTE表56B之另一方式的流程圖
340‧‧‧流程圖
360‧‧‧表示方法之實施例的流程圖
378‧‧‧舊式裝置整合組態
380‧‧‧舊式記憶體共用裝置
382‧‧‧快取區塊連貫性介面
384‧‧‧通信匯流排
386‧‧‧快取記憶體
388‧‧‧其他記憶體
390‧‧‧記憶體匯流排
400‧‧‧競爭圖
401‧‧‧相對較細粒度的區塊/相對較粗粒度的區塊
402‧‧‧BTE競爭計數器/競爭計數器值
404‧‧‧精巧細微的BTE
406‧‧‧較粗粒度的BTE
430‧‧‧流程圖
462‧‧‧窺探訊務統計資料
464‧‧‧系統效能計數器
466‧‧‧記憶體共用裝置效能計數器
468‧‧‧記憶體共用裝置競爭計數器
472‧‧‧基於時間的計數器
474‧‧‧使用計數器
476‧‧‧系統提示
490‧‧‧流程圖
510‧‧‧BTE競爭指示符
520‧‧‧流程圖
圖1為根據實施例之維持兩個記憶體共用裝置之間的快取連貫性之電子裝置之方塊圖,該等記憶體共用裝置中之至少一者可為相對高頻寬之記憶體共用裝置,諸如GPU;圖2為根據實施例之呈筆記型電腦形式之圖1的電子裝置之透視圖;圖3為根據實施例之兩個處理器之示意性方塊圖,該等處理器能夠使用追蹤記憶體區塊中之一或多個快取線之群組是否可能被其他處理器使用的區塊追蹤項之表來有效地維持快取連貫性;圖4為表示根據實施例之可在圖3中所說明的處理器中之一者請求記憶體時發生之通信的示意性流程圖;圖5為根據實施例之區塊追蹤項(BTE)之表的示意性方塊圖,區塊追蹤項(BTE)追蹤記憶體區塊中之一或多個快取線之群組是否可能被另一記憶體共用裝置使用;圖6為表示根據實施例之一方式之示意性方塊圖,區塊追蹤項(BTE)可藉由該方式追蹤記憶體區塊中之一或多個快取線之群組是否可能被另一記憶體共用裝置使用;圖7為根據實施例之用於傳達窺探請求及區塊追蹤項(BTE)請求的匯流排之示意圖;圖8及圖9為表示根據實施例之可在圖7之記憶體匯流排上發生的通信之示意性方塊圖;圖10為描述方法之實施例之流程圖,該方法用於使用追蹤記憶體區塊中之一或多個快取線之群組是否可能被另一記憶體共用裝置使用的區塊追蹤項(BTE)表之表來有效地維持快取連貫性;圖11至圖13為描述方法之實施例之流程圖,該等方法用於以圖10之流程圖的方式來有效地維持兩個或兩個以上記憶體共用裝置之間的快取連貫性;圖14為描述用於預占地填入區塊追蹤項(BTE)以有效地維持快取連貫性之方法的實施例之流程圖;圖15至圖17為描述用於更新區塊追蹤項(BTE)表中之項之方法的實施例之流程圖;圖18至圖21為描述用於回應於快取線或區塊追蹤項(BTE)窺探請求之方法的實施例之流程圖;圖22為根據實施例之能夠有效地維持快取連貫性的兩個記憶體共用裝置之示意性方塊圖,該等記憶體共用裝置中之一者可為不具有區塊追蹤項(BTE)之表的舊式記憶體共用裝置;圖23為表示根據實施例之通信之流程圖,可發生該通信以在圖22之系統中維持快取連貫性;圖24為表示根據實施例之競爭計數器之使用的示意性方塊圖,競爭計數器用以取決於競爭追蹤一或多個快取線之較粗粒度或較細粒度的群組;圖25為描述用於判定是否追蹤一或多個快取線之較細粒度或較粗粒度的群組之方法之實施例的流程圖;圖26為說明根據實施例之各種因子之窺探訊務統計圖,可使用該等因子使電子裝置之快取連貫性之行為變化;圖27為描述可用以減少記憶體共用裝置之間的競爭之方法之實施例的流程圖;圖28為表示根據實施例之窺探不同記憶體共用裝置之間的競爭指示符之通信之示意性方塊圖;及圖29為描述用於取決於競爭將對記憶體之獨佔使用權授予特定裝置之方法的實施例之流程圖。
12A‧‧‧第一處理器
12B‧‧‧第二處理器
14‧‧‧共用記憶體
40‧‧‧雙處理器組態
42‧‧‧記憶體匯流排
44‧‧‧通信匯流排
46A‧‧‧處理器核心
46B‧‧‧處理器核心
48A‧‧‧快取記憶體
48B‧‧‧快取記憶體
50A‧‧‧轉譯對應緩衝器(TLB)組件
50B‧‧‧轉譯對應緩衝器(TLB)組件
52A‧‧‧快取記憶體
52B‧‧‧快取記憶體
54A‧‧‧窺探抑制區塊
54B‧‧‧窺探抑制區塊
56A‧‧‧區塊追蹤項(BTE)表
56B‧‧‧區塊追蹤項(BTE)表
权利要求:
Claims (20)
[1] 一種處理器,其包含:一或多個處理器核心,其經組態以對來自由另一記憶體共用裝置共用之記憶體的快取線進行操作;一或多個快取記憶體,其經組態以儲存複數個該等快取線;及快取窺探電路,其包含快取區塊追蹤項之一表,其中該等快取區塊追蹤項中之每一者包含各別複數個快取狀態項,其中每一快取狀態項分別追蹤該等快取線中之一或多者的一狀態,且其中該快取窺探電路經組態以在該一或多個處理器核心中之一者請求該等快取線中之一者時至少部分基於快取區塊追蹤項之該表判定是否將一窺探請求發出至該另一記憶體共用裝置。
[2] 如請求項1之處理器,其中該快取窺探電路經組態以判定在以下兩種情況時將該窺探請求發出至該另一記憶體共用裝置:該等快取區塊追蹤項中之一者之該複數個快取狀態項中的一有效快取狀態項對應於該所請求之快取線且指示該所請求之快取線的該狀態為可能被該另一記憶體共用裝置使用;或該等快取區塊追蹤項中之任一者之該複數個快取狀態項中沒有有效快取狀態項對應於該所請求之快取線。
[3] 如請求項1之處理器,其中該快取窺探電路經組態以:在該等快取區塊追蹤項中之一者之該複數個快取狀態項中的一者對應於該所請求之快取線且指示該所請求之快取線的該狀態為不可能被該另一記憶體共用裝置使用時,判定不將該窺探請求發出至該另一記憶體共用裝置。
[4] 一種系統,其包含:兩個或兩個以上記憶體共用裝置,該兩個或兩個以上記憶體共用裝置中之每一者分別包含一快取記憶體及區塊追蹤項之一表,區塊追蹤項之該表之該等區塊追蹤項中的每一者經組態以追蹤一記憶體區塊之快取線之群組的各別狀態;一記憶體裝置,其經組態以由該兩個或兩個以上記憶體共用裝置共用;及一通信匯流排,其經組態以使該兩個或兩個以上記憶體共用裝置能夠向彼此發出窺探請求;其中該兩個或兩個以上記憶體共用裝置中之每一者經組態以:在接收到針對該記憶體共用裝置之快取記憶體中不存在的一快取線之一窺探請求時發出包含一區塊追蹤項之一回應,該區塊追蹤項指示該所請求之快取線所屬於之一記憶體區塊的快取線之群組之各別狀態,其中至少部分基於在該記憶體共用裝置之快取記憶體中是否存在該所請求的快取線所屬於之該記憶體區塊的該等快取線而判定該所請求之快取線所屬於之該記憶體區塊的快取線之該等群組之該等各別狀態。
[5] 如請求項4之系統,其中該兩個或兩個以上記憶體共用裝置中之每一者經組態以:在接收到針對該記憶體共用裝置之快取記憶體中不存在的該快取線之該窺探請求時發出該回應,其中該回應由指示該所請求之快取線所屬於之該記憶體區塊的快取線之群組之各別狀態的該區塊追蹤項組成,且其中該回應之大小與該通信匯流排相同。
[6] 如請求項5之系統,其中該兩個或兩個以上記憶體共用裝置中之每一者經組態以:在接收到針對該記憶體共用裝置之快取記憶體中存在的一快取線之一窺探請求時發出包含該所請求之快取線的一回應,其中該回應之大小與該通信匯流排相同。
[7] 如請求項4之系統,其中該兩個或兩個以上記憶體共用裝置中之每一者經組態以:在接收到針對該記憶體共用裝置之快取記憶體中存在的一快取線之一窺探請求時發出包含該所請求的快取線之一第一回應及包含一區塊追蹤項之一第二回應,該區塊追蹤項指示該所請求之快取線所屬於之一記憶體區塊的快取線之群組之各別狀態,其中至少部分基於在該記憶體共用裝置之快取記憶體中是否存在該所請求的快取線所屬於之該記憶體區塊的該等快取線而判定該所請求之快取線所屬於之該記憶體區塊的快取線之該等群組之該等各別狀態。
[8] 如請求項4之系統,其中該兩個或兩個以上記憶體共用裝置中之每一者經組態以在接收到針對該記憶體共用裝置之快取記憶體中存在的一快取線之一窺探請求時發出包含該所請求的快取線之一第一回應及包含一區塊追蹤項之一第二回應,該區塊追蹤項指示該所請求之快取線所屬於之一記憶體區塊的快取線之群組之各別狀態,其中至少部分基於包括與在該記憶體共用裝置之快取記憶體中存在的該等快取線類似之性質之一計數式布隆篩選器、另一篩選器或一篩選器階層而判定該所請求之快取線所屬於之該記憶體區塊的快取線之該等群組之該等各別狀態。
[9] 一種方法,其包含:在一電子裝置之一第一處理器中的一所要快取線之一快取未命中時,除非區塊追蹤項之一第一表的一有效區塊追蹤項與該第一處理器相關聯,否則將一窺探請求自該第一處理器發出至該電子裝置之一第二處理器,藉由各自分別與一記憶體區塊之一或多個快取線相關聯的複數個快取狀態項追蹤包括該所要快取線之該記憶體區塊之該有效區塊追蹤項包括與該所要快取線相關聯之一快取狀態項,該快取狀態項指示不需要窺探請求來維持與該第二處理器之快取連貫性。
[10] 如請求項9之方法,其中發出該窺探請求包含:發出與該所要快取線相關聯之一快取線窺探請求或針對與該所要快取線相關聯之一區塊追蹤項的一請求,或該快取線窺探請求與針對該區塊追蹤項之該請求兩者。
[11] 如請求項9之方法,其包含在發出該窺探請求時,在該第二處理器中接收該窺探請求且以具有快取狀態項之一區塊追蹤項回應於該窺探請求,該等快取狀態項指示應針對對應於與該窺探請求重疊之一記憶體區塊中之被該第二處理器使用的未經快取之快取線之任何快取線發出一窺探請求。
[12] 如請求項9之方法,其包含在該第一處理器中判定該第二處理器是否在一臨限時間量內尚未傳回對該窺探請求之一回應,且在該第二處理器在該臨限時間量內尚未傳回對該窺探請求之該回應時,更新區塊追蹤項之該第一表以指示包括該所要快取線之一記憶體區塊中的所有快取線應在被存取之前要求一窺探請求。
[13] 如請求項9之方法,其中該窺探請求經組態以將該所要快取線之獨佔使用權授予給該第一處理器,且包含更新區塊追蹤項之該第一表以指示不需要針對該所要快取線之窺探請求來維持與該第二處理器的快取連貫性。
[14] 如請求項9之方法,其中該窺探請求經組態以將該所要快取線所屬於之一記憶體區塊之獨佔使用權授予給該第一處理器,且包含更新區塊追蹤項之該第一表以指示不需要針對該所要快取線所屬於之該記憶體區塊中的任何快取線之窺探請求來維持與該第二處理器的快取連貫性。
[15] 如請求項9之方法,其包含在該第一處理器預期試圖在未來且在該所要快取線之該快取未命中之前存取該所要快取線時將針對與該所要快取線相關聯的一區塊追蹤項之一請求自該第一處理器發出至該第二處理器。
[16] 如請求項9之方法,其包含在針對該所要快取線發出該窺探請求時,在該第二處理器中接收該窺探請求且更新與該第二處理器相關聯之區塊追蹤項的一第二表。
[17] 如請求項16之方法,其中藉由標記與區塊追蹤項之該第二表之該等區塊追蹤項中的一者之該所要快取線相關聯之一快取狀態項來更新區塊追蹤項之該第二表,以指示可能需要針對該所要快取線的彼另一窺探請求來維持與該第一處理器之快取連貫性。
[18] 如請求項16之方法,其中藉由標記對應於與該窺探請求重疊之未經快取之快取線的區塊追蹤項之該第二表之區塊追蹤項的所有快取狀態項來更新區塊追蹤項之該第二表,以指示可能需要針對與該窺探請求重疊之該等未經快取的快取線中之任一者之彼另一窺探請求來維持與該第一處理器之快取連貫性。
[19] 如請求項9之方法,其包含在發出該窺探請求時,在該第二處理器中接收該窺探請求且至少部分基於該窺探請求來更新與該第二處理器相關聯之一快取記憶體。
[20] 如請求項19之方法,其中更新與該第二處理器相關聯之該快取記憶體包含:使與該窺探請求重疊之任何未經修改的快取線失效。
类似技术:
公开号 | 公开日 | 专利标题
TWI467384B|2015-01-01|用於快取區塊連貫性之系統、方法及裝置
US9128849B2|2015-09-08|Coherent memory scheme for heterogeneous processors
US10331603B2|2019-06-25|PCIe traffic tracking hardware in a unified virtual memory system
US9864681B2|2018-01-09|Dynamic multithreaded cache allocation
US8868847B2|2014-10-21|Multi-core processor snoop filtering
US20140089602A1|2014-03-27|System cache with partial write valid states
US7571285B2|2009-08-04|Data classification in shared cache of multiple-core processor
US7975107B2|2011-07-05|Processor cache management with software input via an intermediary
US9218040B2|2015-12-22|System cache with coarse grain power management
US20170177488A1|2017-06-22|Dynamic victim cache policy
WO2014052383A1|2014-04-03|System cache with data pending state
US9830265B2|2017-11-28|Reuse of directory entries for holding state information through use of multiple formats
CN112513825A|2021-03-16|混合精确和不精确的缓存侦听过滤
Li et al.2013|PS-TLB: Leveraging page classification information for fast, scalable and efficient translation for future CMPs
US20140059297A1|2014-02-27|System cache with sticky allocation
US8886886B2|2014-11-11|System cache with sticky removal engine
US20190087344A1|2019-03-21|Reducing Clean Evictions In An Exclusive Cache Memory Hierarchy
US9058270B2|2015-06-16|False sharing detection logic for performance monitoring
JP6249120B1|2017-12-20|プロセッサ
US20200257631A1|2020-08-13|Caching streams of memory requests
Wu et al.2021|NVSwap: Latency-Aware Paging using Non-Volatile Main Memory
Bae et al.2019|Dynamic directory table with victim cache: on-demand allocation of directory entries for active shared cache blocks
WO2015073009A1|2015-05-21|Mark cache entry
同族专利:
公开号 | 公开日
KR101393933B1|2014-05-12|
EP2533158A2|2012-12-12|
US20120317362A1|2012-12-13|
JP2013016160A|2013-01-24|
KR20130000326A|2013-01-02|
WO2012170719A1|2012-12-13|
JP5674714B2|2015-02-25|
US8856456B2|2014-10-07|
CN102880558A|2013-01-16|
EP2533158A3|2013-02-27|
CN102880558B|2016-04-13|
TWI467384B|2015-01-01|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US9436972B2|2014-03-27|2016-09-06|Intel Corporation|System coherency in a distributed graphics processor hierarchy|
TWI560545B|2014-10-20|2016-12-01|Via Tech Inc|Dynamically updating hardware prefetch trait to exclusive or shared at program detection|
TWI643125B|2016-04-18|2018-12-01|聯發科技股份有限公司|多處理器系統及快取共用方法|US6810467B1|2000-08-21|2004-10-26|Intel Corporation|Method and apparatus for centralized snoop filtering|
US6959364B2|2002-06-28|2005-10-25|Intel Corporation|Partially inclusive snoop filter|
KR200325296Y1|2003-04-28|2003-09-02|이성선|급수밸브조립체|
US20050027946A1|2003-07-30|2005-02-03|Desai Kiran R.|Methods and apparatus for filtering a cache snoop|
US20060053258A1|2004-09-08|2006-03-09|Yen-Cheng Liu|Cache filtering using core indicators|
US7305524B2|2004-10-08|2007-12-04|International Business Machines Corporation|Snoop filter directory mechanism in coherency shared memory system|
US7373462B2|2005-03-29|2008-05-13|International Business Machines Corporation|Snoop filter for filtering snoop requests|
WO2007041392A2|2005-09-30|2007-04-12|Unisys Corporation|Cache coherency in an extended multiple processor environment|
US7434002B1|2006-04-24|2008-10-07|Vmware, Inc.|Utilizing cache information to manage memory access and cache utilization|
US20080183972A1|2007-01-26|2008-07-31|James Norris Dieffenderfer|Snoop Filtering Using a Snoop Request Cache|
US20090032761A1|2007-07-30|2009-02-05|Chi-Lung Tsai|Spherical valve|
US7996626B2|2007-12-13|2011-08-09|Dell Products L.P.|Snoop filter optimization|
JP2009169877A|2008-01-21|2009-07-30|Hitachi Ltd|スヌープフィルタ内蔵アドレスデコーダ|
US9035959B2|2008-03-28|2015-05-19|Intel Corporation|Technique to share information among different cache coherency domains|
US8185695B2|2008-06-30|2012-05-22|Advanced Micro Devices, Inc.|Snoop filtering mechanism|
US8868847B2|2009-03-11|2014-10-21|Apple Inc.|Multi-core processor snoop filtering|US20140114928A1|2012-10-22|2014-04-24|Robert Beers|Coherence protocol tables|
WO2014158173A1|2013-03-28|2014-10-02|Hewlett-Packard Development Company, L.P.|Implementing coherency with reflective memory|
WO2014204495A1|2013-06-19|2014-12-24|Empire Technology Development, Llc|Locating cached data in a multi-core processor|
US9292444B2|2013-09-26|2016-03-22|International Business Machines Corporation|Multi-granular cache management in multi-processor computing environments|
US9329890B2|2013-09-26|2016-05-03|Globalfoundries Inc.|Managing high-coherence-miss cache lines in multi-processor computing environments|
US9298626B2|2013-09-26|2016-03-29|Globalfoundries Inc.|Managing high-conflict cache lines in transactional memory computing environments|
US9298623B2|2013-09-26|2016-03-29|Globalfoundries Inc.|Identifying high-conflict cache lines in transactional memory computing environments|
US9086974B2|2013-09-26|2015-07-21|International Business Machines Corporation|Centralized management of high-contention cache lines in multi-processor computing environments|
US9298620B2|2013-11-25|2016-03-29|Apple Inc.|Selective victimization in a multi-level cache hierarchy|
US9582204B2|2014-01-07|2017-02-28|Apple Inc.|Speculative prefetching of data stored in flash memory|
US9372797B2|2014-02-10|2016-06-21|International Business Machines Corporation|Adaptively enabling and disabling snooping fastpath commands|
CN103870395B|2014-03-04|2017-08-04|华为技术有限公司|一种目录维护方法及装置|
US9454313B2|2014-06-10|2016-09-27|Arm Limited|Dynamic selection of memory management algorithm|
US9785556B2|2014-12-23|2017-10-10|Intel Corporation|Cross-die interface snoop or global observation message ordering|
US10133670B2|2014-12-27|2018-11-20|Intel Corporation|Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric|
US9632933B2|2015-02-03|2017-04-25|Nxp Usa, Inc.|Efficient coherency response mechanism|
CN105938447B|2015-03-06|2018-12-14|华为技术有限公司|数据备份装置及方法|
US10262721B2|2016-03-10|2019-04-16|Micron Technology, Inc.|Apparatuses and methods for cache invalidate|
US20170286301A1|2016-04-01|2017-10-05|Intel Corporation|Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga|
US9798672B1|2016-04-14|2017-10-24|Macom Connectivity Solutions, Llc|Data managment for cache memory|
US10255181B2|2016-09-19|2019-04-09|Qualcomm Incorporated|Dynamic input/output coherency|
US10373285B2|2017-04-09|2019-08-06|Intel Corporation|Coarse grain coherency|
US10325341B2|2017-04-21|2019-06-18|Intel Corporation|Handling pipeline submissions across many compute units|
US10585800B2|2017-06-16|2020-03-10|International Business Machines Corporation|Reducing cache transfer overhead in a system|
CN107368437B|2017-07-24|2021-06-29|郑州云海信息技术有限公司|一种末级缓存管理方法及系统|
US10761985B2|2018-08-02|2020-09-01|Xilinx, Inc.|Hybrid precise and imprecise cache snoop filtering|
US11030102B2|2018-09-07|2021-06-08|Apple Inc.|Reducing memory cache control command hops on a fabric|
US10922237B2|2018-09-12|2021-02-16|Advanced Micro Devices, Inc.|Accelerating accesses to private regions in a region-based cache directory scheme|
法律状态:
优先权:
申请号 | 申请日 | 专利标题
US13/157,104|US8856456B2|2011-06-09|2011-06-09|Systems, methods, and devices for cache block coherence|
[返回顶部]