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