專利名稱:用于管理數據處理系統中的緩存的處理器和方法
技術領域:
本發明一般地涉及計算機網絡和并行處理領域,更具體地講,涉及用于 改進多處理器環境中的緩存行替換選擇的系統和方法。
背景技術:
現代電子設備通常包括多個處理器,有時將每個均稱作處理單元(PU), 該每個單元包括核邏輯(core logic )("核,,)、 一級(Ll )緩存,以及二級(L2 ) 緩存。典型地,每個核僅可訪問其自身專用的L2緩存,而通常不能訪問鄰近 PU的L2緩存。
本領域的技術人員應該理解,在許多情形中,核沒有最大可能程度地使 用其專用L2緩存。例如,當核執行僅略微地使用L2緩存的代碼或者執行來 自鎖定緩存方式的代碼時、當核掉電或者處于休眠模式時,或者例如當響應 于檢測到的制造缺陷而已將核禁止(disable)時,都可能發生這種情形。這 些例子只是核未充分利用其專用L2緩存中的許多普通情形中的 一個實例。;—1
依據該未充分的利用,已經有多種嘗試來改進緩存性能,包括一個或多 個PU相互間共享其緩存的某些級的一些系統。每種當前方法忍受一個或多 個缺點。通常, 一組解決方案聚焦于擲出(castout)處理(handling),在該 擲出處理中, 一般為了給進入的緩存塊騰出空間,把進入的緩存塊存儲在所 選擇逐出的緩存行當前占用的緩存位置中,PU選擇該緩存行以將其"擲出,,
其緩存。 j 例如, 一個簡單的解決方案是將所有的緩存行逐出(evict)或者"擲出" 至存儲器。即,最簡單的解決方案是當逐出這些緩存行時,將擲出的緩存行 回寫(writeback)到存儲器。隨后通過一致性總線(coherent bus)將這些逐出 的行取回(retrieve)至所有L2緩存(以及其相關的PU)所附連處。然而, 這種方法忍受明顯的缺點,即總是將所有的行擲出至存儲器是低效率的且瞎 礙了性能。而且,當另一個緩存未充分利用時,該方法不能夠^使一個核共享 該另一個核的緩存。另外,當緩存的核在休眠模式中掉電或由于核制造缺陷而凈皮無步文時(deactivate)時,該方法不允"i午^使用該纟爰存。
另一傳統的方法提供了用于每個L2緩存的專用的全相聯緩存(victim cache)。在此方法中,將逐出的行擲出至全相聯的緩存,并且將該全相聯的 緩存典型地配置為在緩存缺失時僅僅容納從L2緩存逐出的緩存行。然而該方 法增加了額外的緩存和支持的硬件,這比L2緩存本身耗費了更大的面積和功 率。另外,典型的全相聯緩存一般地為每個同余類(congruence class)分配 僅僅一個或兩個行空間。與標準的緩存中六到八個行相比較,其因此僅僅提 供了有限的解決方案。
在另一方法中,下文中稱作在先方法,PU耦合到公共L3緩存,并且L3 緩存預選擇三個相鄰的L2緩存中的一個用作臨時代用(makeshift)全相聯緩 存。 一旦L3緩存選擇該全相聯緩存,則L3緩存與該全相聯緩存經由專用通 信來執行請求/準許同步交換(request/grant handshake ),隨后在耦合L3和L2 緩存的數據總線上僅僅傳輸數據。
在先方法忍受這樣的缺點,即它缺乏用于跟蹤緩存行是否先前已^C衫動 的機制。同樣,在先系統中被逐出的行可以從緩存到緩存無限地循環,其可 導致不必要的帶寬成本和妨礙系統性能。此外,在先全相聯緩存、逐出的目 標緩存必須接受進入的緩存行,這可能需要該全相聯緩存逐出否則原來保存 在該緩存中的緩存行。同樣,在先方法可以犧牲另一個緩存為代價來增強一 個緩存的性能。
在另一方法中,下文中稱為Garg方法,其由美國專利號7076609所圖 解,核共享兩個L2緩存,跨越L2緩存均等地劃分結合性(associativity)。 例如,該PU共享諸如用于L2缺失檢測和處理之類的組合替換控制。具體地 講,取決于當時的替換策略,響應于L2緩存缺失,Garg方法將從存儲器中 取回的新的行分配到L2的任何一個。而且,響應于L1缺失,Garg方法同時 檢索兩個L2緩存。
同樣,Garg方法提供了具有廣泛結合性的共享的、多組(muM-bank): 二級緩存。因此,Garg方法也忍受單一共享緩存的缺陷。具體地講,Garg行 替換方法必須檢索多個L2緩存,這增加了檢索時間。而且,因為Garg在L2 緩存上擴展的結合性,不僅在本地L2緩存缺失的情況下,只要必須檢索任何 一個L2緩存時,就必須檢索每個GargL2緩存。另外,因為沒有Garg緩奇 包含所有的用于特定同余類的結合性,因此放置在一個L2緩存中的緩存替換將仍然在未包含該緩存行的本地L2中缺失,這通常出現在傳統的系統中。
因此,存在用于多處理器環境中的緩存行替換選擇的系統和/或方法的需 要,其至少解決一些與傳統系統和方法相關的問題和缺點。
發明內容
提供以下概述以便于理解公開實施例特有的一些創新特征,其不旨在完 全的描述。通過總體地考慮整個說明書、權利要求書、附圖和摘要可獲得對 實施例的各個方面的完全理解。
因此,本發明的 一 個方面是提供改進的緩存行替換方法。
本發明的另 一 方面是提供改進的緩存行替換系統。
本發明的另 一方面是提供用于在多處理器環境中的緩存行替換的改進系統。
本發明的另 一方面是提供用于在多處理器環境中的緩存行替換的改進方法。
本發明的另 一方面是提供用于在多處理器環境中的緩存行替換選擇的改
進方法和系統。
本發明的另 一 方面是提供用于管理緩存的改進方法和系統。 本發明的另 一方面是提供用于在多處理器環境中管理緩存的改進方法和 系統。
如在此所描述,現在可以實現上述方面和其^f也目標和^t點。 一種用于管 理數據處理系統中的緩存操作的方法,該系統具有系統存儲器和多個處理單
元(PU),每個PU具有包括多個緩存行的緩存,每個緩存行具有多種一致性 狀態(coherency state)之一,并且每個PU耦合到該多個PU中的至少另 一個。 該方法包括由第一 PU確定必須用第 一數據塊替換該第一 PU的第 一緩存中 的多個緩存行之一。該第一PU確定該第一數據塊是否是來自該多個PU中的 另一個的全相聯緩存行。如果該第一數據塊不是來自該多個PU中的另一個 的全相聯緩存行,該第一 PU確定該第一緩存是否包含處于無效的一致'^威 態下的緩存行。如果該第一緩存包含處于無效的一致性狀態下的緩存行,則 第一 PU將該第一數據塊存儲在處于無效的一致性狀態下的緩存行中,并且 更新該第一數據塊的一致性狀態。如果該第一緩存不包含處于無效的一致性 狀態下的緩存行,則該第一 PU確定該第一緩存是否包含處于已移動的一致性狀態下的緩存行。如果該第一緩存包含處于已移動的一致性狀態下的緩存 行,則該第一 pu選擇處于已移動的一致性狀態下的緩存行,并且在所選擇 的處于已移動的 一致性狀態下的緩存行中存儲該第 一數據塊,并且更新該第 一數據塊的一致性狀態。
在一個可替換的實施例中, 一種用于管理數據處理系統中的緩存操作的
方法,該系統具有系統存儲器和多個處理單元(pu),每個pu具有包括多個 緩存行的緩存,每個緩存行具有多種一致性狀態下的一個,并且每個pu耦 合到該多個pu中的至少另一個。該方法包括由第二pu從第一pu接收請 求,用于在第二 pu的第二緩存中存儲來自第一 pu的第 一緩存的第 一數據塊。 第二 pu確定該第一數據塊是否與第二緩存中處于共享的一致性狀態的緩存 行匹配。如果第一數據塊與第二緩存中處于共享的一致性狀態的緩存行匹配, 則第二pu接受該請求,而沒有數據傳輸。如果第一數據塊與第二緩存中處 于共享的一致性狀態的緩存行不匹配,則第二 pu確定第二緩存是否包含處
于無效的一致性狀態下的緩存行。如果該第二緩存包含處于無效的一致性狀 態下的緩存行,則該第二 pu接受該請求,在與處于無效的一致性狀態下的 緩存行同樣的位置建立(install)第一數據塊,并且更新該第一數據塊的一致 性狀態。如果該第二緩存不包含處于無效的一致性狀態下的緩存行,則該# 二 pu確定第二緩存是否包含處于共享的一致性狀態下的緩存行。如果該索 二緩存包含處于共享的一致性狀態下的緩存行,則該第二 pu接受該請求, 在處于共享的一致性狀態下的緩存行中存儲第一數據塊,并且更新該第一數 據塊的 一致性狀態。如果該第二緩存不包含處于共享的 一致性狀態下的緩存 行,則第二 pu確定該第二緩存是否包含處于已移動的一致性狀態下的緩# 行。如果該第二緩存不包含處于已移動的一致性狀態下的緩存行,則第二pu 拒絕該請求。
附圖進一步圖解了實施例并且與詳細的描述一起用作解釋在此公開的實 施例,其中,貫穿分開的各視圖,同樣的參考標記指代相同或功能類似的要 素,并且附圖被并入并形成本說明書的一部分。
圖1圖解了示出根據優選實施例的計算機系統的框圖2圖解了描述改進的緩存一致性協議的邏輯狀態的高級狀態圖,其可以^4居優選實施例實現;
圖3圖解了描述改進的緩存行替換方法的邏輯操作步驟的高級流程圖, 其可以根據優選實施例實現;
圖4圖解了描述改進的緩存行替換方法的邏輯操作步驟的高級流程圖, 其可以才艮據優選實施例實現;
圖5圖解了描述改進的緩存行替換方法的邏輯操作步驟的高級流程圖, 其可以根據優選實施例實現;以及
圖6圖解了描述改進的緩存行替換方法的邏輯操作步驟的高級流程圖, 其可以才艮據優選實施例實現。
具體實施例方式
可以改變在這些非限制性的例子中討論的具體值和配置,并且其引用僅 是為了圖解至少 一個實施例,而不是旨在限制本發明的范圍。
在下面的討論中,闡述了許多特定的細節以提供對本發明的徹底理解。 本領域的技術人員應該理解,可以在沒有這些特定細節的情況下實踐本發明。 在另一些實例中,為了不在不必要的細節上對本發明造成模糊而以示意性或 框圖的形式圖解公知的要素。另外, 一般已經省略了關于網絡通信、電磁信 號技術、用戶接口或輸入/輸出技術等的細節,這是由于這些細節被認為對獲 得本發明的完全理解是不必要的,并且認為其是相關領域的普通技術人員所 能理解的。
還要注意到,除非另有指出,否則在此描述的所有功能都可以以硬件或 者軟件,或者其一些組合來實現。然而,在優選實施例中,除非另有指出, 否則由諸如計算機或者電子數據處理器之類的處理器根據編碼為執行這些功 能的諸如計算機程序代碼之類的代碼、軟件和/或集成電路來執行功能。
本發明可以采取完全硬件實施例、完全軟件實施例,或包含硬件和軟件 要素的實施例的形式。在一個實施例中,以軟件來實施本發明,其包括但不 限于固件、駐留軟件、微代碼等等。
此外,本發明可采取可根據計算機可用或計算機可讀介質來訪問的計算 機程序產品的形式,該介質提供計算機使用的程序代碼,或是與指令執行系 統有關的程序代碼。為了本描述的目的,計算機可用或者計算機可讀介質可 以是任何裝置或有形的介質,其可以包含、存儲、通信、傳播或傳送指令執行系統、裝置或設備所使用的程序,或是與指令執行系統、裝置或設備有關 的程序。
該介質可以是電子的、磁的、光學的、電磁的、紅外的,或者半導體系 統(或裝置或設備)。計算機可讀介質的例子包括半導體或固態存儲器、磁帶、
可移動計算機盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、硬磁盤和 光盤。光盤的當前的例子包括致密盤-只讀存儲器(CD-ROM)、致密盤-讀/ 寫(CD-R/W)以及DVD。
適合于存儲和/或執行程序代碼的數據處理系統包括通過系統總線直鋒 或者間接耦合到存儲器元件的至少一個處理器。該存儲器元件可以包括在程 序代碼的實際執行期間使用的本地存儲器、大容量存儲器、以及緩存存儲器, 該緩存存儲器為了減少在執行期間必須從大容量存儲器取回代碼的時間量、 提供至少 一 些程序代碼的暫時存儲。
輸入/輸出或I/0設備(包括但不限于鍵盤、顯示器、定點設備等等)寸 以通過插入I/O控制器直接或間接耦合于系統。也可以將網絡適配器耦合到
系統以使該數據處理系統能夠通過插入的專用或公共網絡而變為耦合到其他
數據處理系統或遠程打印^L或存儲設備。調制解調器、電纜調制解調器和以
太網卡僅僅是網絡適配器的幾個當前可用的類型。
現在參照附圖,圖1是圖解了根據本發明的優選實施例的、用于改進的
緩存一致性的系統100的某些組件的高級框圖。系統100包括系統總線102。 通常,系統總線102不同于傳統計算機系統總線,其如下面描述所修改、 耦合了系統100的各種組件。更具體地講,計算機系統100包括輸入/輸出(I/O) 系統104。 I/O系統104耦合到系統總線102并且不同于傳統I/O系統,其包 括用于提供系統100和例如用戶、另一計算機系統、因特網、或其他適合的 外部實體之間的接口的軟件和硬件。如本領域的技術人員應該理解的那樣, 除非在此另有描述,否則I/O系統104通常是公共組件和軟件的集合,其組 成現代計算機系統的輸入/輸出系統。
系統IOO還包括存儲器100。存儲器IOO耦合到系統總線102,并且不同 于傳統的計算機系統存儲器。系統IOO還包括一個或多個多核系統(MCS) 120。通常,如下面更詳細描述的那樣,每個MCS120是包括緩存和其他支持 硬件的、配置為執行典型的計算機任務的、根據在此描述的一個或多個優選 實施例的處理器或者多個處理器。在圖解實施例中,系統100包括兩個MCS':MCS 120和MCS 120a。在替代實施例中,可以用傳統處理單元(PU)替換 一個MCS 120。本領域的技術人員應該理解,也可以將系統100配置為具有 多于兩個MCS 120,它們中的一個或多個可以用傳統PU替換。在圖解實施 例中,MCS120a集合地表示這些各種選項。通常,MCS 120和MCS 120a為 系統IOO接收和處理數據。
通常,在圖解實施例中,MCS120通過耦合到系統總線102的三級(L3) 緩存130來耦合到系統100的其他組件。L3緩存130不同于傳統的L3緩存, 其如在此描述所修改,并且包含用于MCS 120的處理單元(PU)的指令和/或數 據。L3緩存130還耦合到輔助總線(secondary bus) 132。輔助總線132完全 包含在MCS120中的,并且其不同于傳統的計算機系統總線。
MCS120包括多個處理單元(PU) 140,其耦合到一個或多個其他PU并 且耦合到輔助總線132。在圖解實施例中,MCS 120包括三個示例性PU 140: PU 140a、 PU 140b以及PU 140c,其每一個均耦合到輔助總線132。通常, 將每個PU 140配置為通過輔助總線132來與L3緩存130通信。此外,通常 每個PU140接收用于處理的數據和指令,處理所接收的數據和指令,并且將 結果返回給系統100的一個或多個其他組件。
每個PU 140通過多個通信信道耦合到一個或多個其他PU。圖1圖解了 示例性實施例中的三個這種通信信道。具體地講,系統100中的每個PU140 通過互聯鏈路142和鏈路144耦合到下游(downstream)的PU。類似地,系統 100中的每個PU 140通過互聯鏈路146耦合到上游(upstream)的PU。如在此 所使用,"每個"是指所有的具體子集(subset)。鏈路142、 144和146不同 于傳統的通信信道、互聯或適合于PU相互耦合以用于數據/指令傳送、控制 通信或其他合適操作的其他連接。
如在此所使用,術語"上游,,和"下游,,指的是PU相互間的關系,或 者組織成環型、星型,或其他拓樸。即,目標PU從"上游,,的鄰近PU接收 擲入(castin)的緩存行,下面將更詳細地描述。類似地,PU將緩存行"擲 出"給鄰近的"下游"PU。如在此所描述,"鄰近PU"是為了與其他PU交 換控制信息、數據和指令而耦合到另一 PU的PU。
每個PU 140包括核150,如150a、 150b和150c所示。每個核150包括 核邏輯152,如152a、 152b和152c所示。核邏輯152不同于傳統的核邏輯, 其如此處描述所修改。每個核邏輯152耦合到專用的一級(Ll )緩存154,如154a、 154b和154c所示。LI緩存154不同于傳統的LI緩存,其如此處 描述所修改。
每個核150耦合到專用的二級(L2)緩存160,如160a、 160b和160c 所示。L2緩存160不同于傳統的L2緩存,其如此處描述所修改。如下面更 詳細的描述,每個PU 140配置為在特定的情況下開始將特定緩存行從其自身 的L2緩存160擲出至鄰近PU的L2緩存160。
例如,在一個實施例中,PU 140a將緩存行從其L2緩存160a擲出至下 游PU 140b的L2緩存160b。 L2緩存160b接收將該緩存行作為"擲入"的 緩存行。類似地,在一個實施例中,PU 140c將緩存行從其L2緩存160c擲 出至下游PU 140a的L2緩存160a。 L2緩存160a接收該緩存行作為"擲入" 的緩存行。從而,在以下更詳細描述的特定情況下,通常將MCS 120的PU 140 配置將緩存行擲出至鄰近PU的L2緩存。
另外,示例性系統100圖解了在此描述的關于L2到L2處理(transaction ) 的擲出/擲入操作的特征。本領域的技術人員應該理解,在此公開的實施例的 原理還可以應用于具有在此教導的好處的L3到L3的處理、L1到LI的處理, 以及其他的合適的配置的操作。本領域的技術人員還應該理解用于在緩存層 次(hierarchy)的各個級(level)之間保持一致性的一些機制的需要。
雖然存在許多現代協議和技術用來實現緩存一致性,但大多數典型的協 議僅允許一個處理器許可(permission)以在任何特定的時間點向作為緩存塊 的給定的存儲器位置寫。如這樣,只要PU想向存儲器位置寫,必須存在一 些機制使用所有其他的PU來檢驗在一致性協議下掛起(pending)寫操作是 可接受的。在一個實施例中,PU通過"監聽,,("snoop")協議來嘗試這種 檢驗。
如上所述,在一個實施例中,多核系統中的PU經過輔助總線(例如, 圖1的輔助總線132)耦合在一起。PU通過該輔助總線通信以用于一致性和 其他目的,例如包括指示從存儲器位置讀或向存儲器位置寫的期望。當PU 在輔助總線上指示掛起操作時,所有的其它PU監視(或"監聽")該掛起操 作。監聽的PU將該掛起操作中的目標存儲器位置與它們各自緩存中的所存 儲的存儲器位置進行比較,確定緩存的狀態是否可以允許該掛起操作,如果 可以,是在什么條件下。
在典型的現代協議中,以及在此的本發明的實施例中,如本領域的4支術人員所理解,存在需要監聽和跟蹤行為的幾個總線存儲器處理。例如"有寫 意圓的讀"需要監聽和跟蹤行為。另外,在一些實施例中,需要另外的硬件
和信令(signaling)行用于支持該監聽操作,其為了清楚在此省略。
因此,通常為了保持緩存的一致性,只要PU想要讀或寫存儲器塊,其 必須向系統中的其他PU指示該期望。因此緩存一致性協議包括狀態指殺器 (indictor),用于指示塊的當前一致性"狀態",而每個級中的每個緩存塊真 有其自身的狀態。例如,如果只有一個PU具有緩存塊的有效(active)復制, 則該PU將該塊標記為處于"排他的,,("exclusive") —致性狀態,其遵照以 下更詳細描述的另外的協議條件。通常,因為其他的處理單元沒有該緩存塊 的復制,因此PU可以寫排他的緩存塊,而不用首先與系統中的其他PU通信。
另外,在一些實例中,在"插入,,("intervention")操作中,PU可以直 接從鄰近PU(而不是從主存儲器中)取回請求的緩存塊。同樣,源PU可以將 所請求的緩存塊傳送到請求的PU,而不會導致一致性問題,并且不會首先將 該緩存塊寫至存儲器。
通常,如在此所使用,"一致性狀態"是指表示在緩存中存儲的數據與在 存儲器和其他緩存中存儲的數據之間的關系的多個狀態下的 一個。為減少混 淆,此處討論是指作為"處于X的一致性狀態"或者"處于一致性狀態X" 的緩存行或緩存塊,其中X指示與緩存行/塊相關的一致性狀態。這用于從無 效緩存行(具有無效數據的緩存行)中區分無效的(invalid)—致性狀態(沒有 由一致性協議定義的一致性狀態)。例如,"共享(已移動的)的一致性狀態" 是在此描述的一致性協議中的無效的一致性狀態,然而"無效的一致性狀態" 是有效的一致性狀態。
圖2圖解了改進的緩存一致性協議中的多個有效一致性狀態的一個實施 例。具體地講,圖2圖解了可根據優選實施例來實現的、描述改進的緩存一 致性協議的邏輯狀態的高級狀態圖200。
圖表200圖解了八種有效的一致性狀態已修改的(已移動的)("Mm")、 已修改的(自身的)("Mo")、無效的('T,)、共享的("S,,)、排他的(已 移動)("Em")、排他的(自身的)("Eo")、已標記的(Tagged)(已移動) ("Tm,,)以及已標記的(自身的)("To,,)。通常,除了如在此修改,狀態 Mm、 Mo、 I、 S、 Em以及Eo配置為公知的MESI協議狀態"已移動"、"排 他的"、"共享的"和"無效的"。通常,狀態Mo指示緩存行是有效的并且包含已修改的數據。該行的復 制沒有并且不可以存在于任何其他的緩存中。本地的PU已訪問過該緩存行。 本地的PU是包含存儲該緩存行的緩存的PU。
通常,狀態Mm指示緩存行是有效的并且包含已修改的數據。該行的復 制沒有并且不可以存在于任何其他的緩存中。本地的PU還沒有訪問過該緩 存行。而且,該緩存行是通過本地PU從擲出該緩存行的鄰近PU作為擲入的 緩存行接收的。
通常,狀態Eo指示緩存行是有效的并且包含未被修改的數據,即,該 數據與存儲器中存儲的數據匹配。該行的復制沒有并且不可以存在于任何其 他的緩存中。本地的PU已訪問過該緩存行。
通常,狀態Em指示緩存行是有效的并且包含未修改的數據。該行的復 制沒有并且不可以存在于任何其他的緩存中。本地的PU還沒有訪問過該緩 存行。而且,該緩存行是通過本地PU從擲出該緩存行的鄰近PU作為擲入的 緩存行接收的。
通常,狀態S指示緩存行是有效的并且該行的復制可存在于其他的緩存 中。在圖解的實施例中,狀態S僅僅指示該緩存行是有效的并且可以存在其 他的復制。在一個可替換的實施例中,狀態S包括子狀態(sub-state),共享 的(最后的)("S (I)"),其指示該緩存行是該緩存行的最近訪問的復制。S(I) 狀態便利于處于"共享的"狀態下的行的數據插入。
通常,狀態I指示緩存行在當前緩存中不是有效的。該緩存行的復制可 以各種狀態存在于其他的緩存中。
通常,狀態To指示緩存行是有效的并且包含已修改的數據。PU已經通 過插入操作將該緩存行的至少一個復制發送給另一PU的緩存。本地的PU已 經訪問過該緩存行。本領域的技術人員應該明白,狀態To是公知的MESI緩 存一致性協議的擴展。通常,"已標記"的狀態指示容納已標記的緩存行的 PU負責在未來的某個時間將已修改的緩存行回寫(write back)到存儲器層次 (heimrchy )。容納該已標記的緩存行的PU可以通過回寫到系統存^i者器或通 過將該標記(tag)傳遞給另一PU來履行(satisfy)其責任。
通常,狀態Tm指示緩存行是有效的并且包含已修改的數據。PU已經通 過插入操作將該緩存行的至少一個復制發送給另一 PU的緩存。而且,該緩 存行是通過本地PU從擲出該緩存行的鄰近PU作為擲入的緩存行而接收的。本地的PU還沒有訪問過該緩存行。
同時與jtb^交的案巻號AUS92G070828US4的同族申請(cGKipank)n application)描述了特有的一致性協議另外的細節,其可以配置為連同在此 公開的實施例而操作。
圖3圖解了緩存行替換和緩存行替換選擇的方法的一個實施例。具體地 講,圖3圖解了描述邏輯操作步驟的高級流程圖300,該步驟由例如實現圖2 的一致性協議200的圖1的系統100執行,其可以根據優選實施例實現。通 常,除非另有指示,否則圖1的MCS 120執行該方法的步驟。
例如,在一個實施例中,每個PU 140可以執行該方法的步驟。具體地講, 只要PU 140確定必須選擇要替換的緩存行以便為進入的緩存行騰出空間時, 每個PU 140 4丸行該方法的步驟。在一個實施例中,響應于該確定,即必須選 擇用于替換的L2緩存160的一個現有的緩存行以便為進入的緩存行騰出空 間, 一個或多個PU 140執行該方法的步驟。在一個實施例中,核模塊150執 行該方法的步驟。然而,為了圖解方便,除非另有指示,否則下面的討論々1 定MCS 120的PU 140執行該方法的步驟。
如在塊305所圖解,開始該處理,其中PU 140確定該進入的緩存行是 否是來自鄰近PU的進入的擲入緩存行,該進入的緩存行將替代(replace )所 選擇的用于替換的緩存行。如果在塊305,該進入的緩存行是擲入的緩存行, 則該處理繼續沿著YES分支到標記"A",以下結合圖5做更詳細的描述。如 果在塊305,該進入的緩存行不是擲入的緩存行,則該處理繼續沿著NO分支 到塊310。
如在塊310所圖解,PU 140確定PU 140的L2緩存160中是否存在處 于無效的一致性狀態的任何緩存行。如果在塊310, L2緩存160中存在處于 無效的一致性狀態的緩存行,則PU 140選擇一個這樣的緩存行并且該處理繼 續沿著YES分支到塊315。
接著,如在塊315所圖解,PU 140將該進入的緩存行數據塊寫入L2緩 存160的所選擇的緩存行的緩存的位置。接著,如在塊320所圖解,PU 140 更新與所選擇的緩存行相關的緩存一致性狀態信息以指示具有新接收的數據 塊的緩存行的狀態。接著,如在塊325所圖解,如果有的話,PU140將擲出 由所擲入的緩存行當前占據的緩存行中先前存儲的緩存行,并且該處理結束。 本領域的技術人員應理解,無需將處于無效的 一致性狀態的緩存行擲出到存儲器。同樣,在空出的緩存行無需擲出到存儲器的情況下,PU140跳過這一
^i^—緊r^^且該處理結fc如在此降使用,"更悉tC存一^J^犬態信息"等同于 "更新緩存一致性狀況"和"更新緩存一致性狀態"。
如果在確定塊310,L2緩存160中沒有處于無效的一致性狀態的緩存行, 則該處理繼續沿著NO分支到塊確定330。如在確定塊330所圖解,PU 140確 定PU 140的L2緩存160中是否存在處于已移動的一致性狀態的任何緩存行。 如果在確定塊330, L2緩存160中存在處于已移動的一致性狀態的緩存行, 則該處理繼續沿著YES分支到塊335。
如在塊335所圖解,PU 140在PU的L2緩存160中選擇用于替換處于 已移動的一致性狀態的緩存行。在一個實施例中,PU 140選擇處于已移動的 一致性狀態的任何一個緩存行。在一個可替換的實施例中,根據預定的優選, PU 140從處于已移動的一致性狀態的幾個緩存行之間選擇。在一個實施例中, 該預定的優選是對于PU 140在處于Em的一致性狀態的緩存行之前選擇處于 Tm的一致性狀態的緩存行,并且在處于Mm的一致性狀態的緩存行之前選 擇處于Em的一致性狀態的緩存行。
接著,如在塊315所圖解,PU 140將該進入的緩存行數據塊寫入L2緩 存160的所選擇的緩存行的緩存的位置。接著,如在塊320所圖解,PU 140 更新與所選擇的緩存行相關的緩存一致性狀態信息以指示具有新接收的數據 塊的緩存行的狀態。接著,如在塊325所圖解,如果需要的話,PU140將擲 出由所擲入的緩存行當前占據的緩存行中先前存儲的緩存行,并且該處理結 束。在一個實施例中,PU 140從空出的緩存行回寫數據。在一個實施例中, PU140將該空出的緩存行寫入到回寫緩沖區。或者,當不需要將該空出的緩 存行擲出到存儲器,則PU 140跳過這一步驟。通常,在一個實施例中,PU 140 將處于Tm和Mm的一致性狀態已替換的緩存行擲出,并且PU 140丟棄處 于Em的一致性狀態的已替換的緩存行。
此外,在一些實施例中,PU在其他已移動緩存行之前選擇用于替換來自 上游鄰近PU的已移動的緩存行。在已移動的緩存行之間,PU首先選擇Tm 緩存行用于替換,因為這樣的行可以存在于其他緩存中,萬一 PU再次需要 該緩存行,其比從存儲器中的取回要快。接著,PU選擇Em緩存行,因為這 樣的緩存行沒有被修改并且因此不需要將其擲出到存儲器,這還可以減少不 必要的總線處理。接著,PU選擇Mm緩存行,因為這樣的緩存行不存在于其他的緩存中,并且需要隨后的擲出或回寫操作。
-卞^^t^t,不存在處于已移動的 一致性狀態的L2緩存160中的 緩存行,則該處理繼續沿著NO分支到塊340。如在塊340所圖解,PU 140識 別或否則確定L2緩存160的哪一個緩存行是最近最少使用過(LRU)的緩存 行。本領域的技術人員應該理解,存在各種公知的方法來確定LRU緩存行。 該處理繼續到圖4的標記"B"。
圖4圖解了用于緩存行替換和緩存行替換選擇的方法的一個實施例。具 體地講,圖4圖解了描述邏輯操作步驟的高級流程圖400,該步驟由例如實 現圖2的一致性協議200的圖1的系統100執行,其可以根據優選實施例實 現。
該處理從標記"B,,繼續到確定塊405。如在塊405所圖解,PU 140確 定LRU緩存行是否處于共享的一致性狀態。如果在塊405, LRU緩存行處于 共享的一致性狀態,該處理繼續沿著YES分支到塊410。如在塊410所圖解, PU 140將該進入的緩存行數據塊寫入LRU緩存行的緩存的位置。
接著,如在塊415所圖解,PU140丟棄被替換以便為進入的緩存行騰出 空間的LRU緩存行。本領域的技術人員應該理解,在一個可替換的實施例中, PU 140在將該進入的緩存行寫入由被丟棄的LRU緩存行所空出的緩存位置 之前丟棄該LRU緩存行。接著,如在塊420所圖解,PU 140響應于寫該進 入的緩存行而更新該緩存行的一致性狀態,并且該處理結束。
如果在確定塊405,該LRU緩存行不是處于共享的一致性狀態,該處理 繼續沿著NO分支到塊425。如在塊425所圖解,PU 請求鄰近PU接受 作為進入的擲入的該LRU緩存行。如上所述,PU140可以請求上游和/或下 游的鄰近PU來接受該LRU緩存行作為進入的擲入緩存行。在優選實施例中, 每個PU 140僅僅請求下游的PU來接受被逐出的緩存行作為進入的擲入緩存 行。
接著,如在確定塊430所圖解,PU140確定被請求的鄰近PU是否接受 作為進入的擲入的該LRU緩存行。如果在確定塊430,鄰近的PU^妄受了該 LRU緩存行作為進入的擲入,該處理繼續沿著YES分支到塊435。
如在塊435所圖解,PU 140將該LRU緩存行發送給接受的鄰近PU。在 一個實施例中,PU 140通過從其L2緩存160傳送數據到鄰近PU的L2緩存 160而將該LRU緩存行數據發送給接受的鄰近PU。在一個可替換的實施例中,在鄰近PU已經有了該LRU緩存行的復制(下面將更詳細的描述)的情況 下,PU i40不向該鄰近的PU傳送任何數據。
接著,如在塊440所圖解,PU 140將該進入的緩存行數據塊寫入由該 LRU緩存塊空出的緩存的位置。接著,如在塊420所圖解,PU140更新緩存 行一致性狀態,并且該處理結束。
如果在塊430所圖解,鄰近PU沒有接受該LRU緩存行作為進入的擲入, 該過程繼續沿著NO分支到確定塊445。如在確定塊445所圖解,PU 140確 定該LRU緩存行是否處于一致性狀態Eo。
如果在確定塊445中,該LRU緩存行處于一致性狀態Eo,則該處理繼 續沿著YES分支到塊450。如在塊450所圖解,PU 140丟棄該當前的LRU 緩存行入口 (entry )。在一個實施例中,PU 140清除當前的LRU緩存行的緩 存位置。在一個可替換的實施例中,PU 140用該進入的IC存^亍^t蓋 (overwrite)當前的LRU緩存行,而不將該當前的LRU緩存行寫入到例如 回寫緩沖區。
接著,如在塊455所圖解,PU 140將該進入的緩存行數據塊寫入由該 LRU緩存行空出的緩存的位置。接著,如在塊420所圖解,PU140更新該緩 存行一致性狀態,并且該處理結束。
如果在確定塊445中,該LRU緩存行不是處于一致性狀態Eo,則該處 理繼續沿著NO分支到塊460。如在塊460所圖解,PU140將該當前的LRU 緩存行入口擲出到存儲器。在一個實施例中,PU 140將該當前LRU緩存行 擲出到L3緩存130。在一個可替換的實施例中,PU 140通過將該當前緩存行 寫入到例如回寫緩沖區而擲出該當前的LRU緩存行。在一個可替換的實施例 中,PU 140通過將該緩存行寫入到主存儲器110而擲出該當前的LRU緩存 行。
接著,如在塊455所圖解,PU 140將該進入的緩存行凄t據塊寫入由LRU 緩存行空出的緩存的位置。接著,如在塊420所圖解,PU140更新該緩存行 一致性狀態,并且該處理結束。
相應的,圖3和圖4中所圖解方法提供了一改進的機制,用于從多個緩 存行中選擇用于替換的緩存行以便為進入的緩存行騰出空間。圖5和圖6圖 解了一種改進的機制,PU可以使用其確定是否接受進入的擲入行。本領域的 技術人員應該理解,PU可以同時和/或以交替的順序l丸行該方法的一個或多個所圖解的實施例的步驟。
圖5圖解了用于確定是否接受進入的擲入緩存行和用于緩存行替換的方
法的一個實施例。具體地講,圖5圖解了描述邏輯操作步驟的高級流程圖500, 該步驟由例如實現圖2的一致性協議200的圖1的系統100執行,其可以根 據優選實施例實現。
該處理開始于確定塊505。如在確定塊505所圖解,PU140確定是否有 進入的擲入緩存行。如果在塊505,對于PU沒有進入的擲入緩存行,則該處 理繼續沿著NO分支到塊510。如在塊510所圖解,PU等待并且該處理返回 確定塊505。本領域的技術人員應該理解,PU 140可以在如塊510所指示的 等待的同時執行其他的任務。在一個實施例中,塊505并入塊510,并且'PU 140檢測每個進入的緩存行以確定該進入的緩存行是否是擲入的緩存行。
如果在塊505,對于PU存在進入的擲入緩存行,或者該進入的緩存行是 擲入的緩存行,則該處理繼續沿著YES分支到塊515。該處理還從標記"A" 繼續到確定塊515。如上所述,標記"A"表示PU確定進入的緩存行是來自 鄰近PU的進入的擲入行。如確定塊515所圖解,PU140確定該進入的擲入 行是否處于To的一致性狀態。
如果在確定塊515,該進入的緩存行處于To的一致性狀態,則該處理繼 續沿著YES分支到確定塊520。如在確定塊520所圖解,PU 140確定該擲入 緩存行是否與PU的L2緩存160中已有的緩存行匹配,如果是這樣,則確定 該緩存行是否處于共享的 一致性狀態。
如果在確定塊520中,該擲入緩存行與PU的L2緩存160中的緩存行匹 配并且該緩存行處于共享的一致性狀態,則該處理繼續沿著YES分支到塊 525。如在塊525所圖解,PU 140接受該進入的擲入IC存行。通常,PU MO 通過將該進入的擲入緩存行數據塊寫入PU的L2緩存160的緩存位置處的緩 存行來接受該進入的擲入緩存行。在一個實施例中,PU 140通過向請求的PU 指示PU 140在其緩存中已經有了該數據的復制并且不需要數據傳送來接菱 該進入的擲入緩存行。在一個實施例中,PU140通過產生或生成接受信號來 接受該擲入的緩存行,然后將數據傳送到PU的L2緩存160。
與此同時提交的同時待審的(co-pending)律師巻號AUS920070126US1 , 除了其他新穎特征外,還提供了關于鄰近PU之間的接口和通信的方法的另 夕卜的細節。接著,在塊530中所示的,PU140更新緩存行一致性狀態,而該緩存行 是PU140所寫入的擲入緩存行。接著,如在塊535所圖解,如果有的話,PU 140將在由所擲入的緩存行當前占據的緩存行中先前存儲的緩存行擲出,并 且該處理結束。即,在一個實施例中,PU 140從空出的H存行回寫凌丈據。在 一個實施例中,PU140將該空出的緩存行寫入到回寫緩沖區。或者,當處于 一致性狀態To的該擲入的緩存行與PU的L2緩存160中的處于一致性狀態S 中的緩存行匹配時,則PU 140跳過這一步驟。或者,當不需要將該空出的緩 存行擲出到存儲器,則PU 140跳過這一步驟。
如果在確定塊520,該擲入的緩存行與PU的L2緩存160中的緩存行不 匹配或者該匹配的緩存行不是處于共享的一致性狀態,則該處理繼續沿著NO 分支到確定塊540。類似地,如果在確定塊515,該擲入緩存行不是處于To 的一致性狀態,則該處理繼續沿著NO分支到確定塊540。
如在確定塊540所圖解,PU 140確定在PU的L2緩存160中是否存在 處于無效的一致性狀態的任何緩存行。如果在確定塊540中,在PU的L2緩 存160中可得到處于無效的一致性狀態的緩存行,則PU 140選擇用于替換 處于無效的一致性狀態的緩存行并且該處理繼續沿著YES分支到塊525。如 上述的,PU 140接受該進入的擲入緩存行并且將該緩存行數據寫入所選擇 的緩存行(塊525 ),更新該緩存行的一致性狀態(塊530),如果必要的話將 空出的緩存行擲出到存儲器(塊535 )并且該處理結束。
如果在確定塊540,在PU的L2緩存160中不可得到處于無效的一致性 狀態的緩存行,則該處理繼續沿著NO分支到圖6的標記"C"。
圖6圖解了一種用于確定是否接受進入的擲入緩存行和用于緩存行替換 的方法的一個實施例。具體地講,圖6圖解了描迷邏輯操作步驟的高級流程 圖500,該步驟由例如實現圖2的一致性協議200的圖1的系統100執行, 其可以根據優選實施例實現。
該處理從標記"C"繼續到確定塊605。如在確定塊605所圖解,PU140 確定在PU的L2緩存160中是否存在處于共享的一致性狀態的任何緩存行。 如果在確定塊605,在PU的L2緩存160中存在處于共享的一致性狀態的緩 存行,則PU 140選擇用于替換處于共享的一致性狀態的緩存行并且該處理 繼續沿著YES分支到塊610。
如在塊610所圖解,如以上關于圖5的塊525所描述,PU140接受該進入的擲入緩存行。接著,如在塊615所圖解,如以上關于圖5的塊530所描述,PU140更新該緩存行的一致性狀態。接著,如在塊620所圖解,如以上關于圖5的塊535所描述,如果需要的話,PU140將空出的緩存行擲出到存儲器,并且該處理結束。
如在確定塊605,在PU的L2緩存160中沒有處于共享的一致性狀態的緩存行,則該處理繼續沿著NO分支到塊625。如在確定塊625所圖解的,PU 140確定在PU的L2緩存160中是否存在處于已移動的一致性狀態的任何緩存行。如果在確定塊625,在PU的L2緩存160中存在處于已移動的一致性狀態的任何緩存行,則該處理繼續沿著YES分支到塊630。
如在塊630所圖解,PU 140選擇用于替換在PU的L2緩存160中處于已移動的一致性狀態的緩存行。在一個實施例中,PU140選擇處于已移動一致性狀態的任何一個。在一個可替換的實施例中,根據預定的優選,PU從處于已移動的一致性狀態的幾個緩存行之間選擇。在一個實施例中,該預定的優選是用于PU 140來在處于Em的一致性狀態的緩存行之前選擇處于Tm的一致性狀態的緩存行,并且在處于Mm的一致性狀態的緩存行之前選擇處于Em的一致性狀態的緩存行。
接著,如上所述,PU 140接受該進入的擲入緩存行并且將該緩存行數據寫入所選擇的緩存行(塊610),更新該緩存行的一致性狀態(塊615),如果必要的話將空出的緩存行擲出到存儲器(塊620)并且該處理結束。通常,在一個實施例中,PU 140擲出處于Tm和Mm的一致性狀態的4皮替換的緩存行,并且PU 140丟棄處于Em的一致性狀態的被替換的緩存行。
如果在確定塊625中,在PU的L2緩存160中沒有處于已移動的一致性狀態的任何緩存行,則該處理繼續沿著NO分支到塊635。如在塊635所圖解,PU 140拒絕該進入的擲入緩存行并且該處理結束。在一個實施例中,PU140通過聲明拒絕信號而拒絕該進入的緩存行。在一個替換實施例中,PU140通過不聲明(de-assert)接受信號而拒絕該進入的緩存行。在一個替換實施例中,PU 140拒絕該進入的緩存行并且指令請求的PU稍后再試。
從而,通常, 一個實施例中的實現圖2的狀態圖200的圖1的系統100提供了用于多處理器環境中的緩存行的替換選擇的新穎的系統和方法。即,在此公開的實施例連同新穎的一致性協議和接口一起擴展了公知的LRU替換算法。更具體地講,在此^^開的實施例允許PU在PU自身緩存行之前丟棄先前"已移動"的緩存行。另外,如果PU沒有任何"已移動,,的行,則在此公開的特定實施例允許PU將該PU "自身的"行擲出到下游的鄰近PU, PU可以接收該擲出的緩存行作為進入的"擲入,,緩存行。
廣泛地講,在一些實施例中,由于無效緩存行是空的并且不需要擲出或
者行丟棄,因此PU可以首先通過選擇無效的緩存行用于替換為裝載或存儲指令而優先考慮援存行替換。第二, PU選擇已移動的緩存行,因為這些行還沒有被本地pu使用并且只是被典型地容納以改進PU的上游的鄰近PU的緩存的性能。第三,該PU選擇通過如上所述的修改的、不同于傳統的LRU算法所確定的行。本領域的技術人員應該理解,通常該PU不考慮鎖定的緩存行用于替換。
此外,在一些實施例中,PU在其他已移動的緩存行之前選擇來自上游的鄰近PU的已移動的緩存行用于替換。在已移動的緩存行之間,PU首先選擇Tm緩存行用于替換,因為這樣的行可以存在于其他的緩存,萬一PU再次需要該緩存行,這比從存儲器取回要快。接著,PU選擇Em緩存行,因為這樣的緩存行沒有被修改并且因此不需要擲出到存儲器,這也消除了不必要的總線處理。接著,該PU選擇Mm緩存行,因為這樣的緩存行不存在于其他緩存中,并且需要隨后擲出或回寫操作。
在PU的L2緩存沒有包含已移動的緩存行的情況下,該PU使用LRU算法來選擇緩存行。如果PU選擇自身的緩存行,該PU嘗試擲出被逐出的緩存行到下游鄰近的PU而不是到存儲器。從而,在一個實施例中,通常,對于擲出緩存行,PU在處于除了無效之外的任何其他一致性狀態的行之前丟棄已移動的緩存行,這給了 PU自身的緩存行的優先(preference )。對于擲入的緩存行,PU在共享的緩存行和無效的緩存行之后替換已移動的緩存行。在一個實施例中,PU在已移動的行之前選擇共享的行以被替換,因為該行的復制很可能存在于另一 L2緩存中并且因為不需要擲出。
而且,本領域的技術人員應該明白,在此公開的實施例支持各種修改。例如,在一個實施例中,當從上游的鄰近PU接受擲入的緩存行時,PU在Em緩存行之前替換Tm緩存行,因為Tm行(其可以駐留在其他PU的緩存中)的潛在的更快的重用通常比由于PU可以丟棄沒有總線處理的Em緩存行、通過選擇Em緩存行所提供的精簡的總線通信量(traffic)更重要。在可替換的一個實施例中,尤其在所減少的總線通信量比更快的緩存行重用優先級高的
情況下,PU可以在Tm緩存行之前丟棄Em緩存行。
在一些所圖解的實施例中,如果PU僅僅具有Mm已移動的緩存行可用于替換,那么PU可以接受作為擲入的Mo緩存行來替換Mm緩存行。在一個可替換的實施例中,當PU的緩存中僅僅包含Mm已移動的緩存行可用于替換時,PU可以拒絕作為擲入的Mo緩存行。該實施例用所減少的總線處理的優點來交換將更近使用(more recently used)的緩存行擲出到存儲器的小缺點。即,該實施例僅僅需要一個總線處理(上游的PU將被拒絕的Mo緩存行擲出到存儲器),而所圖解的實施例發生(incur)兩個總線處理(上游的;PU將該緩存行擲出到下游的PU,并且下游的PU將被替換的Mm緩存行擲出到存儲器)。
因此,所公開的實施例提供了超過現有技術的方法和系統的許多優點。例如,所公開的緩存行替換選擇方法改進了超過標準的LRU替換算法的性能。另外,實現所公開的方法的多核系統可以擴展單一PU的L2(或其他的)緩存可用的資源。因此,通過這種系統中改進緩存行替換選擇,所公開的一致性協議支持將行從一個PU緩存擲出到另一 PU緩存。
在另 一技術優點中,在新穎的一致性協議中可得到的另外的狀態有助于PU優化其替換算法和接受所擲入的緩存行的機制這兩者。通過區分"自身"的緩存行和僅僅是"被移動"到本地PU緩存中的緩存行,本地PU可以提供輔助的緩存空間給鄰近PU,而且不用犧牲本地PU的性能。
在另一技術優點中,區分"已移動的"和"自身的"緩存行有助于防正緩存行從鄰近PU傳遞到鄰近PU再到鄰近PU等等。即,在一個實施例中,不允許將"已移動"的緩存行擲出到鄰近PU的緩存。該PU而是在自身的緩存行之前替換或者無效已移動的緩存行,由此防止不需要的緩存行無限循環。這種機制使系統的緩存從填滿(fill up)不需要的緩存行中解脫出來,并且有助于防止系統性能的惡化。
在另一技術優點中,在此所公開的新穎的實施例有助于擴展被降級的多核系統的性能。例如,在一個實施例中,在制造測試發現某種類型的部分合格的芯片的情況下,所公開的實施例可以支持改進的鄰近緩存的使用,其可以充分滿足用于救助不合適的芯片的性能需求。另外,在此所公開的新穎的實施例可以幫助部分降級的芯片在對于現有技術的系統可能是災難的情況下
27保持可用。例如,在一個PU或核服務一段時間后出現故障的情況下,剩余的核可以繼續使用故障核的緩存。在一些情況下,被繼續使用的鄰近緩存可
以彌補(offset)失去核的大部分的性能影響,這可以充分地擴展芯片的服務壽命。
在又一技術優點中,當選擇要丟棄沐卩出哪一個緩存行時,所公開的實施
例越過(over)自身的行優先考慮已移動的行,這允許每個PU保持完全利用其自身緩存,這改進了性能、靈活性和可靠性。此外,尤其當下游的鄰近PU的核掉電或被禁止(disabe)時,將自身的行擲出到下游的鄰近PU的緩存(而不是到存儲器)改進了總的吞吐量(throughput)。而且,通常PU可以乂人鄰近PU的L2緩存中取回緩存行,這比從主存儲器中取回要更快,這也改進了性能。
所公開的緩存行替換選擇方法和系統也提供了超過特定的現有技術的系統和方法的具體的優點。例如,與在先方法相反,在此所公開的一致性協議可以將已標記的行移動到處于共享狀態的鄰近PU的緩存,而不需要數據傳輸。另外,由于在先方法缺乏此處所描述的新穎的"已移動,,和"自身的"狀態,因此在先方法不能采用這種狀態來防止舊的緩存行的無限循環。
另外,在先PU不能拒絕接受擲出的緩存行作為擲入的緩存行。在所公開的緩存行替換選擇協議中,在該本地的PU具有足夠的空間之前,本地的PU可以拒絕接受擲出的緩存行,該空間是以無效、共享、或已移動狀態之一
的一致性狀態下的緩存行的形式。從而,不同于在先方法,本發明未以降低
另一 PU的緩存的性能為代價來改進一個PU的緩存的性能。
類似地,本發明提供了超過Garg方法的許多優點。因為本發明支持改進的緩存行擲出和取回協議,這種系統是超過Garg方法的改進,并且Garg方法忍受包括低可擴展性(scalability)的單一共享緩存的缺點。此外,由于釆用本發明的系統中的行替換協議可以將緩存^r測限制到本地L2(而不是到多個L2緩存),因此所公開的緩存行替換選擇協議支持精簡的緩存缺失沖僉索。同樣,本發明改進了緩存性能,其通常超過Garg方法和其它現有技術的系統和方法。
本領域的技術人員應該理解,上面公開的變型、其他特征、功能或其替代物都可以值得組合到許多其他的不同系統或應用中。另外,本領域的技術人員可以隨后做出各種現在無法預料或者不曾預料到的其替代物、修改、變型或者改進,其也旨在由下面的權利要求書所包括。
權利要求
1. 一種用于管理數據處理系統中的緩存的方法,該系統具有系統存儲器和多個處理單元(PU),每個PU具有包括多個緩存行的緩存,每個緩存行具有多種一致性狀態之一,并且每個PU耦合到該多個PU中的至少另一個,該方法包括通過第一PU確定必須用第一數據塊替換該第一PU的第一緩存中的多個緩存行之一;通過第一PU確定該第一數據塊是否是來自該多個PU中的另一個的全相聯緩存行;如果該第一數據塊不是來自該多個PU中的另一個的全相聯緩存行,則通過該第一PU確定該第一緩存是否包含處于無效的一致性狀態下的緩存行;如果該第一緩存包含處于無效的一致性狀態下的緩存行,則將該第一數據塊存儲在處于無效的一致性狀態下的緩存行中,并且更新該第一數據塊的一致性狀態;如果該第一緩存不包含處于無效的一致性狀態下的緩存行,則通過該第一PU確定該第一緩存是否包含處于已移動的一致性狀態下的緩存行;以及如果該第一緩存包含處于已移動的一致性狀態下的緩存行,選擇處于已移動的一致性狀態下的緩存行,并且將該第一數據塊存儲在處于已移動的一致性狀態下的所選擇的緩存行中,并且更新該第一數據塊的一致性狀態。
2. 如權利要求l所述的方法,還包括如果該第 一緩存包含處于已移動的 一致性狀態下的緩存行,則通過該第一 PU確定該第一緩存是否包含處于已移動的一致性狀態下的一個以上的緩存行5如果該第 一緩存包含處于已移動的 一致性狀態下的 一個以上的緩存行,:則在任何其他一致性狀態前選擇處于已移動的和已標記的一致性狀態下的緩存行作為全相聯緩存行,以及在處于已移動的和已修改的 一致性狀態下的緩存行之前選擇處于已移動的和排他的 一致性狀態下的緩存行作為全相聯緩存行;以及將該第一數據塊存儲在該全相聯緩存行中,并且更新該第一數據塊的一致性狀態。
3. 如權利要求1所述的方法,還包括將處于已移動的一致性狀態下的所選擇的緩存行擲出到存儲器。
4. 如權利要求1所述的方法,還包括如果該第 一緩存不包含處于已移動的 一致性狀態下的緩存行,則通過該第一PU確定在該第一緩存中的最近最少^使用過的(LRU)緩存行;通過第一 PU確定該LRU緩存行是否處于共享的一致性狀態;以及如果該LRU緩存行處于共享的一致性狀態,則將該第一數據塊存儲在碌LRU緩存行中,并且更新該第一數據塊的一致性狀態。
5. 如權利要求4所述的方法,還包括如果該LRU緩存行不處于共享的一致性狀態,則確定該LRU緩存行是否處于自身的一致性狀態;以及如果該LRU緩存行處于自身的一致性狀態,則請求該多個PU中的另一個接受該LRU緩存行。
6. 如權利要求5所述的方法,還包括如果該多個PU中的另 一個接受該LRU緩存行,則將該LRU緩存行發送到該接受的PU;以及將該第 一數據塊存儲在由該LRU緩存行空出的第 一緩存位置中,并且更新該第 一數據塊的 一致性狀態。
7. 如權利要求5所述的方法,還包括如果該多個PU中的另一個拒絕該LRU緩存行,則通過第一PU確定該LRU緩存行是否處于排他的一致性狀態;如杲該LRU緩存行不是處于排他的一致性狀態,則將該LRU緩存行擲出到存儲器;以及將該第一數據塊存儲在由該LRU緩存行空出的第一緩存位置中,并且更新該第 一數據塊的 一致性狀態。
8. —種用于管理數據處理系統中的緩存的方法,該系統具有系統存儲器和多個處理單元(PU),每個PU具有包括多個緩存行的緩存,每個緩存行具有多種 一致性狀態下的 一種狀態,并且每個PU耦合到該多個PU中的至少另一個,該方法包4舌通過第二 PU從第一 PU接收用于將來自第一 PU的第 一緩存的第 一數據塊存儲在第二PU的第二緩存中的請求;確定該第 一數據塊是否與在第二緩存中處于共享的 一致性狀態下的緩存行匹配;如果該第 一數據塊與在第二緩存中處于共享的 一致性狀態下的緩存行匹配,則通過第二PU接受該請求,而不傳送tt據;如果該第 一數據塊與在第二緩存中處于共享的 一致性狀態下的緩存行不匹配,則通過第二 PU確定該第二緩存是否包含處于無效的一致性狀態的緩存行;如果該第二緩存包含處于無效的 一致性狀態的緩存行,則接受該請求,將該第一數據塊存儲在處于無效的一致性狀態下的緩存行中,并且更新第一數據塊的一致性狀態;如果該第二緩存不包含處于無效的一致性狀態的緩存行,則通過第二 PU確定該第二緩存是否包含處于共享的一致性狀態的緩存行;如果該第二緩存包含處于共享的 一致性狀態的緩存行,則接受該請求,將該第一數據塊存儲在處于共享的一致性狀態下的緩存行中,并且更新第一數據塊的一致性狀態;如果該第二緩存不包含處于共享的一致性狀態的緩存行,則通過第二PU確定該第二緩存是否包含處于已移動的 一致性狀態的緩存行;以及如果該第二緩存不包含處于已移動的 一致性狀態的緩存行,則拒絕該請求。
9. 如權利要求8所述的方法,還包括如果該第二緩存包含處于已移動的一致性狀態的緩存行,則接受該請求,將該第一數據塊存儲在處于已移動的一致性狀態下的緩存行中,并且更新第一數據塊的一致性狀態。
10. 如權利要求8所述的方法,還包括如果該第二緩存包含處于已移動的 一致性狀態的緩存行,則通過第二 PU確定處于已移動的一致性狀態的緩存行是否也處于已標記的一致性狀態;以及如果處于已移動的一致性狀態的緩存行也處于已標記的 一致性狀態,則將處于已移動的 一致性狀態的緩存行中的數據擲出到存儲器;以及接受該請求,將該第一數據塊存儲到由處于已移動的一致性狀態的緩存行空出的緩存位置中,并且更新該第 一數據塊的一致性狀態。
11. 一種用于管理數據處理系統中的緩存的處理器,該系統具有系統存儲器和多個處理單元(PU),每個PU具有包括多個緩存行的緩存,每個緩存行具有多種一致性狀態下的一種狀態,并且每個PU耦合到該多個PU中的至少另一個,該處理器包括用于通過第一PU確定必須用第一數據塊替換該第一PU的第一緩存中的多個緩存行之一的部件;用于通過第一PU確定該第 一數據塊是否是來自該多個PU中的另 一個的全相聯緩存行的部件;用于如果該第一數據塊不是來自多個PU中的另 一個的全相聯緩存行,則通過該第一 PU確定該第一緩存是否包含處于無效的一致性狀態下的緩存4亍的部件;用于如果該第 一緩存包含處于無效的 一致性狀態下的緩存行,則將該第一數據塊存儲在處于無效的一致性狀態下的緩存行中并且更新該第一數據塊的一致性狀態的部件;用于如果該第一緩存不包含處于無效的一致性狀態下的緩存行,則通過該第一 PU確定該第一緩存是否包含處于已移動的一致性狀態下的緩存行的部件;以及用于如果該第 一緩存包含處于已移動的 一致性狀態下的緩存行,則選擇處于已移動的 一致性狀態下的緩存行,將該第 一數據塊存儲在處于已移動的一致性狀態下的所選擇的緩存行中并且更新該第 一數據塊的 一致性狀態的部件。
12. 如權利要求11所述的處理器,還包括用于如果該第一緩存包含處于已移動的一致性狀態下的緩存行,則通過該第一 PU確定該第一緩存是否包含處于已移動的一致性狀態下的一個以上的緩存行的部件;用于如果該第 一緩存包含處于已移動的 一致性狀態下的 一個以上的緩存行,則在任何其他一致性狀態之前選擇處于已移動的和已標記的一致性狀態下的緩存行作為全相聯緩存行,以及在處于已移動的和已修改的一致性狀態下的緩存行之前選擇處于已移動的和排他的 一致性狀態下的緩存行作為全相聯緩存行的部件;以及用于將該第一數據塊存儲在該全相聯緩存行中并且更新該第一數據塊的一致性狀態的部件。
13. 如權利要求11所述的處理器,還包括用于將處于已移動的一致性狀態下的所選擇的緩存行擲出到存儲器的部件。
14. 如權利要求11所述的處理器,還包括用于如果該第 一緩存不包含處于已移動的 一致性狀態下的緩存行,則通過該第一 PU確定在該第一緩存中的最近最少使用過的(LRU)緩存行的部件; …,用于通過第一 PU確定該LRU緩存行是否處于共享的一致性狀態^1^件;以及用于如果該LRU緩存行處于共享的一致性狀態,則將該第一數據塊存儲在該LRU緩存行中并且更新該第 一數據塊的 一致性狀態的部件。
15. 如權利要求14所述的處理器,還包括用于如果該LRU緩存行不是處于共享的一致性狀態,則確定該LRU緩存行是否處于自身的一致性狀態的部件;以及用于如果該LRU緩存行處于自身的一致性狀態,則請求該多個PU中的另 一個接受該LRU緩存行的部件。
16. 如權利要求15所述的處理器,還包括用于如果該多個PU中的另 一個接受該LRU緩存行,則將該LRU緩存行發送到該接受的PU的部件;以及用于將該第一數據塊存儲在由該LRU緩存行空出的第一緩存位置中:#且更新該第 一數據塊的 一致性狀態的部件。
17. 如權利要求15所述的方法,還包括用于如果該多個PU中的另 一個拒絕該LRU緩存行,則通過第一 PU確定該LRU緩存行是否處于排他的一致性狀態的部件;用于如果該LRU緩存行不是處于排他的一致性狀態,則將該LRU緩存行擲出到存儲器的部件;以及 」用于將該第一數據塊存儲在由該LRU緩存行空出的第一緩存位置中并且更新該第 一數據塊的 一致性狀態的部件。
18. —種用于管理數據處理系統中的緩存的處理器,該系統具有系統存儲器和多個處理單元(PU),每個PU具有包括多個緩存行的緩存,每個緩存行具有多種一致性狀態下的 一種狀態,并且每個PU耦合到該多個PU中的專少另一個,該處理器包括用于通過第二 PU來從第一 PU接收用于將來自第一 PU的第 一緩存的第一數據塊存儲在第二 PU的第二緩存中的請求的部件;用于確定該第 一數據塊是否與在第二緩存中處于共享的一致性狀態下的緩存行匹配部件;用于如果該第一數據塊與在第二緩存中處于共享的一致性狀態下的緩存行匹配,則通過第二 PU接受該請求而不傳送數據的部件。用于如果該第 一數據塊與在第二緩存中處于共享的 一致性狀態下的緩存行不匹配,則通過第二 PU確定該第二緩存是否包含處于無效的一致性狀態的緩存行的部件;用于如果該第二緩存包含處于無效的一致性狀態的緩存行,則接受該請求,將該第一數據塊存儲在處于無效的一致性狀態下的緩存行中,并且更新第 一數據塊的一致性狀態的部件;用于如果該第二緩存不包含處于無效的 一致性狀態的緩存行,則通過第二PU確定該第二緩存是否包含處于共享的一致性狀態的緩存行的部件;用于如果該第二緩存包含處于共享的一致性狀態的緩存行,則接受該著求,將該第一數據塊存儲在處于共享的一致性狀態下的緩存行中,并且更新第 一數據塊的 一致性狀態的部件;用于如果該第二緩存不包含處于共享的一致性狀態的緩存行,則通過第二 PU確定該第二緩存是否包含處于已移動的一致性狀態的緩存行的部件;以及用于如果該第二緩存不包含處于已移動的 一致性狀態的緩存行,則拒絕該請求的部件。
19. 如權利要求18所述的處理器,還包括用于如果該第二緩存包含處于已移動的 一致性狀態的緩存行,則接受該請求,將該第一數據塊存儲在處于已移動的一致性狀態下的緩存行中,并且更新第一數據塊的一致性狀態的部件。
20. 如權利要求18所述的處理器,還包括用于如果該第二緩存包含處于已移動的 一致性狀態的纟爰存行,則通過第二 PU確定處于已移動的一致性狀態的緩存行是否也處于已標記的一致性狀態的部件;用于如果處于已移動的一致性狀態的緩存行也處于已標記的一致性狀態,則將處于已移動的一致性狀態的緩存行中的數據擲出到存儲器的部件; 以及用于接受該請求,將該第 一數據塊存儲由處于已移動的 一致性狀態的緩 存行空出的緩存位置中,并且更新第一數據塊的一致性狀態的部件。
全文摘要
公開了用于管理數據處理系統中的緩存操作的處理器和方法,該系統具有系統存儲器和多個處理單元(PU)。第一PU確定必須用第一數據塊替換的該第一PU的第一緩存中的多個緩存行中的一個緩存行,并且確定該第一數據塊是否是來自該多個PU中的另一個的全相聯緩存行。如果該第一數據塊不是來自該多個PU中的另一個的全相聯緩存行,該第一緩存不包含處于一致性狀態無效中的緩存行,并且該第一緩存包含處于一致性狀態已移動中的緩存行,則該第一PU選擇處于一致性狀態已移動中的緩存行,在所選擇的緩存行中存儲該第一數據塊,并且更新該第一數據塊的一致性狀態。
文檔編號G06F12/12GK101464840SQ200810176829
公開日2009年6月24日 申請日期2008年11月25日 優先權日2007年12月19日
發明者埃里克·F·羅賓遜, 張光賞, 海恩·M·勒, 理查德·尼古拉斯, 羅伯特·J·多爾西, 賈森·A·考克斯 申請人:國際商業機器公司