專利名稱:垂直高速緩沖的偽精確i-高速緩存的包括性的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的關(guān)于垂直高速緩存(cache)體系中的包括性,具體地,有關(guān)就被高速緩存的指令而論的選擇包括性。更具體地,本發(fā)明有關(guān)選擇包括性,以防止由于在較低高速緩存級上的重新分配,而使被高速緩存的指令丟掉。
典型的超標(biāo)量精減指令集(RISC)處理器至少在其存儲體系的一級(L1)層中包含有分開的數(shù)據(jù)和指令高速緩存。由于當(dāng)代超標(biāo)量處理器中所要求的帶寬,必須有分離的數(shù)據(jù)和指令高速緩存,在這些處理器中,每個處理器周期內(nèi),取指令和引用數(shù)據(jù)可能很容易達(dá)到多于一次高速緩存存取。于是,L1高速緩存(它一般被嵌入在處理器硬件中并被設(shè)計為響應(yīng)時間等于或少于一個處理器周期)通常被分開,以便指令和數(shù)據(jù)引用可以在同一處理器周期中被發(fā)往各單獨的高速緩存。
許多數(shù)據(jù)處理系統(tǒng)都可能包含多級高速緩存體系,它們是邏輯上有秩序的,即,首先檢查較高級的高速緩存,若在一個較高級失中,則立即訪問較低級上的高速緩存。一般,多級高速緩存被用于以遞減的存取等待時間將向處理器的數(shù)據(jù)分成多個階段。在高速緩存體系的較高層,使用較小,較快的高速緩存,而在較低層使用較大的,較慢的高速緩存。通常,這類垂直高速緩存結(jié)構(gòu)被認(rèn)為是包括的,即,每個高速緩存的內(nèi)容都包含高速緩存體系中緊接其上的高速緩存中的內(nèi)容。
當(dāng)從系統(tǒng)內(nèi)存中讀出新的數(shù)據(jù)或指令而需要高速緩存中的空間時,高速緩存按在該高速緩存中實施的特定置換規(guī)則選擇一個犧牲品并將所選高速緩存存儲單元重新分配。在包含在多個高速緩存中的一個高速緩存存儲單元被在一個高速緩存中重新分配的情況下,通過在其它高速緩存中重新分配同一存儲單元,保持了邏輯上有序的高速緩存的包括性,不過,在有些情況下,這將產(chǎn)生不期望的結(jié)果。例如,若一個包含指令的高速緩存存儲單元在三級(L3)高速緩存中被重新分配,則同一空間通常在二級(L2)高速緩存中被重新分配。若隨后處理器/L1高速緩存試圖從L2高速緩存中再裝入指令,則它將在L2和L3高速緩存中落空,并(假設(shè)在高速緩存體系中沒有更多的級)被要求從系統(tǒng)內(nèi)存中存取所希望的指令。指令的再裝入有時是必須的,例如,在執(zhí)行了一個誤預(yù)測分支時。因為從系統(tǒng)內(nèi)存讀取的等待時間往往遠(yuǎn)大于從L2,L3高速緩存讀取的等待時間,所以可能出現(xiàn)明顯的性能延遲。
在高速緩存存儲單元被重新分配時,防止指令被丟棄的一個問題是,沒有將高速緩存中的指令和數(shù)據(jù)區(qū)分出來的明顯機制。系統(tǒng)內(nèi)存中的程序源代碼可能包含無法分辨的指令和數(shù)據(jù)的混合。這可能出現(xiàn)在,例如,在一個裝載程序在將代碼裝入系統(tǒng)內(nèi)存之后,解除代碼連接的情況下。這樣,當(dāng)選中一個犧牲品時,就沒有用來客觀標(biāo)識指令的方法,從而設(shè)計一個置換規(guī)則來選擇一個替代犧牲品。進一步,不必所有高速緩存級都包含L1指令高速緩存。僅需要L2高速緩存包括L1指令高速緩存的當(dāng)前和最近內(nèi)容,以便使指令再裝入的延遲時間最少。在高速緩存體系的所有級中都要求同樣的包括性有損于整個高速緩存的效率。
于是,希望提供一個機制,以保持高速緩存體系的較高級中的指令的有選擇的包括性。若較低高速緩存級的重新配置不影響該機制,則更加有利,這樣,就不要求在所有高速緩存級上都保持指令高速緩存的包括性。
本發(fā)明的一個目的是提供垂直高速緩存體系中的包括性的一個改進系統(tǒng)。
本發(fā)明的另一個目的是提供一個方法和裝置,提供關(guān)于垂直高速緩存體系中高速緩存的指令的有選擇的包括性。
本發(fā)明的另一個目的是提供有選擇的包括,以防止由于在較低高速緩存級上的重新配置,使得被高速緩存的指令被丟棄掉。
上述目的可通過以下描述的方法達(dá)到。在可被處理器(該處理器有一個分開的一級(L1)數(shù)據(jù)和指令高速緩存)訪問的二級(L2)高速緩存中實現(xiàn)改進的MESI高速緩存一致性協(xié)議。該改進MESI協(xié)議包括共享狀態(tài)的兩個子狀態(tài),它代表與共享狀態(tài)同樣的一致性信息,外加關(guān)于主題高速緩存登記項(subject cache entry)的內(nèi)容/一致性的附加信息。一個子狀態(tài),SIC0’指示高速緩存登記項被認(rèn)為包含的是指令,因為其內(nèi)容是作為一條取指令操作的結(jié)果從系統(tǒng)內(nèi)存中取出的。第二個子狀態(tài),SIC1’表明同樣的信息,并表明在該主題高速緩存登記項的包括性處于第一共享子狀態(tài)時,一個被監(jiān)聽的清空操作命中該主題高速緩存登記項。將處于共享一致性狀態(tài)的第一子狀態(tài)中的一個高速緩存登記項在較低級(例如L3)高速緩存中進行重新分配,不會導(dǎo)致一個L2高速緩存中的同一高速緩存登記項的內(nèi)容無效。一旦進入了第一子狀態(tài),一致性狀態(tài)就不會轉(zhuǎn)變?yōu)闊o效狀態(tài),除非收到一個設(shè)計為使指令無效的操作。來自本地處理器的,違反其內(nèi)容中包含指令這一假設(shè)的操作,會使一致性狀態(tài)轉(zhuǎn)變?yōu)橐粋€普通的共享狀態(tài)。因為處于兩個一致性子狀態(tài)的高速緩存登記項的內(nèi)容被認(rèn)為是指令,而非數(shù)據(jù),所以,L2高速緩存的指令不會作為被監(jiān)聽的清空的結(jié)果而被丟棄,而是被保留下來,以供本地處理器可能的再裝入使用。
通過下面的詳細(xì)介紹,可以清楚以上內(nèi)容以及本發(fā)明的其它目的、特征和優(yōu)點。
被認(rèn)為是本發(fā)明特征的新穎的特性在所述權(quán)利要求中提出。不過,本發(fā)明本身,以及一個優(yōu)選的使用模式,更多的目的及優(yōu)點,借助于下面對一個示例實施例的具體描述及附圖,可以得到更好的理解,附圖中
圖1描述了按本發(fā)明的一個優(yōu)選實施方案給出的一個多處理器數(shù)據(jù)處理系統(tǒng);圖2是按本發(fā)明的一個優(yōu)選實施方案給出的L2高速緩存的方框圖;以及圖3描述按本發(fā)明的一個優(yōu)選實施方案給出的改進的MESI高速緩存一致性協(xié)議的狀態(tài)圖。
現(xiàn)參照附圖,特別是圖1,描述按本發(fā)明的一個優(yōu)選實施方案給出的一個多處理器數(shù)據(jù)處理系統(tǒng)。數(shù)據(jù)處理系統(tǒng)100是一個包含多個處理器102和104的對稱多處理器(SMP)系統(tǒng),它最好包含可從紐約Armonk的國際商用計算機公司中獲得的PowerPCTM處理器家族中的一個。盡管在示例實施方案中僅描述了兩個處理器,但本領(lǐng)域?qū)I(yè)人士可以認(rèn)識到,按本發(fā)明,可以在多處理器數(shù)據(jù)處理系統(tǒng)中使用更多的處理器。
處理器102和104分別包含一個一級(L1)數(shù)據(jù)高速緩存106和108及一個L1指令高速緩存110和112。盡管在示例實施方案中舉例說明為分開的指令和數(shù)據(jù)高速緩存,但本領(lǐng)域?qū)I(yè)人士可以認(rèn)識到,可以實現(xiàn)一個單個的,統(tǒng)一的L1高速緩存。為了使數(shù)據(jù)存取等待時間最小化,在數(shù)據(jù)處理系統(tǒng)100中可以實現(xiàn)一個或多個更多的高速緩存存儲器級。例如二級(L2)高速緩存114和116,三級(L3)高速緩存118和119。較低高速緩存級-L2和L3-被用于將向L1高速緩存的數(shù)據(jù)分階段,且一般有逐級增大的存儲容量,但存取等待時間逐級加長。例如,數(shù)據(jù)高速緩存106和108及指令高速緩存110和112每個可能有32KB的存儲容量及大約1-2個處理器周期的存取等待時間。L2高速緩存114和116可能有512KB的存儲容量,但存取等待時間為5個處理器周期,而L3高速緩存118和119可能有4MB的存儲容量和大于15個處理器周期的存取等待時間。于是,L2高速緩存114和116及L3高速緩存118和119作為處理器102和104及系統(tǒng)內(nèi)存120間的中間存儲器。系統(tǒng)存儲器120一般有大得多的存儲容量,但其存取等待時間可能大于50個處理器周期。
數(shù)據(jù)處理系統(tǒng)100中所采用的高速緩存體系的級數(shù)和高速緩存體系的配置都可以不同。圖示例子中的L2高速緩存114和116是連接在它們各自的處理器102和104及系統(tǒng)內(nèi)存120(通過系統(tǒng)總線122)間的專用高速緩存。L3高速緩存118和119被描述為邏輯上與L2高速緩存114和116垂直的后備高速緩存。這就使得可以同時在L2高速緩存114或116之一中及在L3高速緩存118和119之一中查尋數(shù)據(jù)或指令,盡管只在L3高速緩存118或119命中而其相應(yīng)的L2高速緩存114或116落空的時候,才從L3高速緩存118或119中檢索數(shù)據(jù)或指令。本領(lǐng)域?qū)I(yè)人士可以認(rèn)識到,可以實現(xiàn)所描述的級數(shù)和配置的不同置換。
L2高速緩存114和116及L3高速緩存118和119是通過系統(tǒng)總線122被連接到系統(tǒng)內(nèi)存120上的。連接到系統(tǒng)總線122上的還可能有一個內(nèi)存映像設(shè)備124,例如為顯示器提供連接的圖形適配器(未示出),和輸入/輸出(I/O)總線橋126。I/O總線橋126將系統(tǒng)總線122連接到I/O總線128上,I/O總線128可以為I/O設(shè)備130和非易失性存儲器132提供連接。于是,系統(tǒng)總線122,I/O總線橋126和I/O總線128形成了聯(lián)接附屬設(shè)備的互連結(jié)構(gòu),在本領(lǐng)域中有對它的公知替換實現(xiàn)。I/O設(shè)備130包括常規(guī)外圍設(shè)備,這些外圍設(shè)備包括鍵盤,諸如鼠標(biāo)或軌跡球的圖形指示設(shè)備,顯示器,和打印機,它們通過常規(guī)適配器與I/O總線128連接。非易失性存儲器132可以包含一個硬盤驅(qū)動設(shè)備并存儲控制系統(tǒng)100操作的操作系統(tǒng)和其它軟件,它們隨系統(tǒng)100的加電而被加載到易失性的系統(tǒng)存儲器120中。本領(lǐng)域的專業(yè)人士可以認(rèn)識到,數(shù)據(jù)處理系統(tǒng)100可以包括許多在圖1中未示出的附加部件,例如串行和并行端口,到網(wǎng)絡(luò)或附屬設(shè)備的連接,調(diào)節(jié)對系統(tǒng)存儲器120的存取的存儲控制器等。這類修改和變動是在本發(fā)明精神和范圍內(nèi)的。
系統(tǒng)總線122上的一個典型通信事務(wù)包括一個表明事務(wù)來源的源標(biāo)記,一個指明事務(wù)的預(yù)定接收者的目標(biāo)標(biāo)記,一個地址和/或數(shù)據(jù)。每個連接到系統(tǒng)總線122上的設(shè)備最好監(jiān)聽系統(tǒng)總線122上的所有通信事務(wù),在需要時干涉到其它接收者的通信事務(wù),并且在可能并合適時,重現(xiàn)對在設(shè)備中復(fù)制的系統(tǒng)內(nèi)存數(shù)據(jù)的改變。
參照圖2,該圖說明了按本發(fā)明的一個優(yōu)選實施方案給出的L2高速緩存的方框圖。如圖3結(jié)合狀態(tài)圖所描述的那樣,通過實施MESI高速緩存一致性協(xié)議的一個改進方案,本發(fā)明支持L2高速緩存中的偽精確指令高速緩存包括性,例如圖1中所述的L2高速緩存114和116。L2高速緩存200可能是一個使用32位地址的n路組相關(guān)高速緩存。相應(yīng)地,L2高速緩存200中的高速緩存存儲器或數(shù)據(jù)數(shù)組202包含一些同余類或行,每個都包含足夠的存儲空間以存儲n個高速緩存行。一個高速緩存行,也稱為一個高速緩存塊,是一致性狀態(tài)所描述的高速緩存存儲器的單位。通常,在現(xiàn)代數(shù)據(jù)處理系統(tǒng)中,一個高速緩存行是32,64或128B長。
高速緩存目錄204也包含一些行,每行包括n個目錄登記項,每個目錄登記項與高速緩存存儲器202的等效行中的一個相應(yīng)高速緩存行相關(guān)聯(lián)。每個目錄登記項包括一個標(biāo)志域206,一個一致性狀態(tài)域208,一個最近最少使用(LRU)域210,和一個包含域(I)212。標(biāo)志域206被用于存儲相關(guān)高速緩存行中所存數(shù)據(jù)的系統(tǒng)內(nèi)存地址的標(biāo)志域(例如,〔0-19〕位)。一致性狀態(tài)域208通過預(yù)定義的比特組合定義相關(guān)的高速緩存行中所存數(shù)據(jù)的一致性狀態(tài)。LRU域210表明,與同余類中其它高速緩存行相比,相關(guān)高速緩存行最近被訪問的情況,以此指出如果要求替換一個高速緩存行,哪個高速緩存行應(yīng)被從同余類中舍去。最后,包含域212表明,相關(guān)聯(lián)的高速緩存行是否也被存儲在邏輯上有序的L1高速緩存中,例如圖1中所述的L1數(shù)據(jù)高速緩存106和108及L1指令高速緩存110和112。
仍參照圖2,L2高速緩存200還包括一個高速緩存控制器24,它管理對高速緩存存儲器202存儲和取出高速緩存行,并更新高速緩存目錄204。高速緩存控制器214根據(jù)從相關(guān)處理器,例如圖1所述處理器102和104,中所接收的信號而操作,或根據(jù)從系統(tǒng)總線監(jiān)聽的事務(wù)操作。這樣,高速緩存控制器212包括一些隊列,包括讀隊列216和寫隊列218,在其中放置要被執(zhí)行的操作,直到資源可用。例如,作為執(zhí)行一條裝載指令的結(jié)果,一個本地處理器可以向L2高速緩存發(fā)布一個讀請求。高速緩存控制器214將該讀請求放入讀隊列216中的一個登記項中,并通過將所請求數(shù)據(jù)提供給本地處理器來為請求服務(wù),并隨后從讀隊列216中消去該讀請求。高速緩存控制器214還可以將一個寫請求放入寫隊列218以分別更新與包含被請求數(shù)據(jù)的高速緩存行相關(guān)的LRU和包括域210和212。另一個例子,一個遠(yuǎn)程處理器可以啟動一個表明要修改其本地高速緩存中某一指定高速緩存行的系統(tǒng)總線事務(wù)。高速緩存控制器214,響應(yīng)從系統(tǒng)總線上監(jiān)聽到該業(yè)務(wù),而將一個讀高速緩存目錄204的請求放入讀隊列216中,以確定指定高速緩存行是否在高速緩存存儲器204中。若是,則高速緩存控制器214在系統(tǒng)總線上啟動一個合適的響應(yīng),并且,如果需要,則在寫隊列218中放入一個寫請求,當(dāng)對它服務(wù)時,更新與指定高速緩存行相關(guān)聯(lián)的高速緩存目錄204中的一致性域208。盡管在圖2所示實施方案中僅描述了一個讀隊列216和一個寫隊列218,不過,本領(lǐng)域?qū)I(yè)人士可以意識到,高速緩存控制器214所用的隊列的數(shù)量只是設(shè)計選擇的問題,并且可以實施單獨的隊列,用于高速緩存目錄訪問而不是高速緩存存儲器訪問,或者用于從本地處理器接收的信號(而不是從系統(tǒng)總線監(jiān)聽的事務(wù)),或者用于兩者。
在一個優(yōu)選實施方案中,在系統(tǒng)加電時,高速緩存目錄204中的每個登記項的一致性狀態(tài)域208被初始化為無效(I)狀態(tài),以表明標(biāo)志域206和高速緩存存儲器202內(nèi)相關(guān)高速緩存行中存儲的數(shù)據(jù)都是無效的。此后,一致性狀態(tài)域208可被修改為以下將詳細(xì)描述的改進MESI一致性協(xié)議中的一個一致性狀態(tài)。一致性狀態(tài)域208要轉(zhuǎn)變的狀態(tài)依賴于系統(tǒng)處理器所做的存儲器存取的類型和存儲體系對那些存取所做的響應(yīng),這些也將在以下做更詳細(xì)的介紹。根據(jù)被請求高速緩存行的一致性狀態(tài)域208中所顯示的一致性狀態(tài),高速緩存控制器214對被監(jiān)聽的系統(tǒng)總線操作作不同的響應(yīng),該總線操作表明,一個L3高速緩存,例如圖1中所描述的L3高速緩存118,正重新分配其高速緩存存儲器中指定的高速緩存行。
現(xiàn)參照圖3,該圖描述了按本發(fā)明優(yōu)選實施方案給出的改進MESI高速緩存一致性協(xié)議的狀態(tài)圖。僅在L2高速緩存中實施改進的MESI協(xié)議,在較低高速緩存級中實施常規(guī)MESI協(xié)議。改進的MESI協(xié)議包含常規(guī)MESI協(xié)議使用的四個同樣的基本狀態(tài)修改(M)的狀態(tài)302,它表示,已經(jīng)根據(jù)系統(tǒng)內(nèi)存中的相應(yīng)數(shù)據(jù)修改了高速緩存行,而沒有修改系統(tǒng)內(nèi)存數(shù)據(jù),這樣,數(shù)據(jù)的唯一有效拷貝位于存儲已修改高速緩存行或區(qū)段的高速緩存登記項中;專用(E)狀態(tài)304,它表明該高速緩存登記項與系統(tǒng)內(nèi)存相一致,但只能在存儲體系的那一級的所有高速緩存中,在主題高速緩存中找到該高速緩存登記項;共享(S)狀態(tài)306,表明可以在主題高速緩存和存儲體系中同一級上的至少一個其它高速緩存中找到該高速緩存登記項,且數(shù)據(jù)的所有拷貝與系統(tǒng)內(nèi)存中的相應(yīng)數(shù)據(jù)相一致;和無效(I)狀態(tài)308,它表明給定高速緩存中的一個高速緩存登記項-數(shù)據(jù)和地址標(biāo)記-不再與系統(tǒng)內(nèi)存或內(nèi)存體系中的其它高速緩存相一致。盡管支持修改狀態(tài)302和專用狀態(tài)304,但本發(fā)明是關(guān)于被認(rèn)為含有指令而非數(shù)據(jù)的高速緩存存儲單元。所以,這些狀態(tài)不適用于感興趣的高速緩存存儲單元,這里就不詳細(xì)介紹。
改進的MESI協(xié)議還包括兩個附加狀態(tài),它們是共享狀態(tài)306的變形或子狀態(tài)。SIC0狀態(tài)310表明,可以在主題高速緩存和存儲體系中同一級上的至少一個其它高速緩存中找到該高速緩存登記項,該高速緩存登記項的所有拷貝與系統(tǒng)內(nèi)存相一致,并表明主題高速緩存登記項是作為一個取指令的結(jié)果被裝載的。SIC1狀態(tài)312表明,可以在主題高速緩存和存儲體系中同一級上的至少一個其它高速緩存中找到該高速緩存登記項,且該高速緩存登記項的所有拷貝與系統(tǒng)內(nèi)存相一致,并且還表明主題高速緩存登記項是作為一個取指令的結(jié)果被裝載的,以及該高速緩存登記項已被在存儲體系的較低級重新分配。盡管被對較低高速緩存進行重新分配,但L2高速緩存登記項中的指令被保持以供可能的L1高速緩存訪問使用。
改進MESI協(xié)議中的協(xié)議轉(zhuǎn)移依賴于促使該高速緩存登記項被裝載的存儲器存取的特性和當(dāng)前存儲器存取的特性。如果是作為一個本地處理器讀數(shù)據(jù)的結(jié)果,數(shù)據(jù)被存儲在一個高速緩存存儲單元中(即,由裝載指令激發(fā)的一個讀數(shù)操作),則該高速緩存行的內(nèi)容被假定包含數(shù)據(jù),且一致性狀態(tài)從無效308轉(zhuǎn)換到共享306。另一方面,如果高速緩存塊的內(nèi)容是作為取指令的結(jié)果取出的,則認(rèn)為該高速緩存存儲單元的內(nèi)容包含指令,且一致性狀態(tài)從無效308轉(zhuǎn)換到SIC0310。如果處于SIC0狀態(tài)310的一個高速緩存存儲單元是隨后由本地處理器激發(fā)的讀數(shù)操作的對象,則關(guān)于高速緩存內(nèi)容包含指令的原始假設(shè)無效且一致性狀態(tài)從SIC0310轉(zhuǎn)換到共享306。否則,若處于SIC0狀態(tài)310的一個高速緩存登記項被一個被監(jiān)聽的清空操作命中,例如,這可能是由較低級高速緩存的重新分配引起的,則一致性狀態(tài)從SIC0310轉(zhuǎn)換為SIC1312。一旦一致性狀態(tài)轉(zhuǎn)換到SIC1312,則忽略隨后對同一存儲單元的被監(jiān)聽的清空命中,且來自本地處理器的的讀數(shù)操作或讀出以便修改(rwitm)操作被認(rèn)為落空。只有作為指令高速緩存塊失效(icbi)或等效操作的結(jié)果,一致性狀態(tài)才會從SIC0狀態(tài)30或SIC1狀態(tài)312轉(zhuǎn)變?yōu)闊o效狀態(tài)308。在表1中總結(jié)了圖3所描述的改進MESI協(xié)議中所做的狀態(tài)轉(zhuǎn)換。
表1
一致性狀態(tài)轉(zhuǎn)換僅出現(xiàn)在數(shù)據(jù)處理系統(tǒng)的L2高速緩存中,且該系統(tǒng)在存儲體系中有其他較低的高速緩存級。同一操作使得遵守常規(guī)MESI協(xié)議的較低級高速緩存進行不同的一致性狀態(tài)轉(zhuǎn)換。在表II中比較了某一特定高速緩存登記項的各種常見操作所引起的L2和L3高速緩存中不同的一致性狀態(tài)轉(zhuǎn)換。
表II<
表II中可見的一個顯著的區(qū)別是被監(jiān)聽的清空導(dǎo)致的L2和L3高速緩存中一致性狀態(tài)轉(zhuǎn)換間的不同。L3高速緩存如以前的技術(shù)那樣對高速緩存登記項重新分配。而L2高速緩存保留高速緩存登記項并轉(zhuǎn)換到一個一致性狀態(tài),該狀態(tài)表明假定高速緩存登記項包含指令且較低級高速緩存中的同一高速緩存登記項已被重新分配。這樣,L2高速緩存保留假定的指令,以供本地處理器可能的隨后再裝入使用。L2高速緩存將本地處理器的L1指令高速緩存的當(dāng)前和最近的內(nèi)容包括在內(nèi),但L3高速緩存不必也包括同樣的內(nèi)容。于是,在高速緩存體系的較高級中保持了指令的選擇包括性,而總高速緩存效率沒有因為要求完全垂直包括性而降低。于是,本發(fā)明可以防止由于在較低高速緩存級中重新分配而導(dǎo)致的反向清空,使得L2高速緩存中的指令被丟棄。附加的一致性狀態(tài)并不要求大幅度地增加開銷,且該改進只需在多級高速緩存體系的L2高速緩存中實施。
盡管以上描述的僅是對常規(guī)MESI協(xié)議所做的改進,不過,本發(fā)明也可連同對MESI協(xié)議的其它改進一起實現(xiàn),這里包括R-MESI協(xié)議,其中最近(R)狀態(tài),實質(zhì)上是共享狀態(tài)的另一種變形,表明(1)可以在主題高速緩存和存儲體系中同一級的至少一個其它高速緩存中找到高速緩存登記項,且主題高速緩存和其它高速緩存中的數(shù)據(jù)的所有拷貝都與系統(tǒng)內(nèi)存中相應(yīng)的數(shù)據(jù)相一致。(2)在包含共享數(shù)據(jù)的所有高速緩存中,主題高速緩存最近接收到系統(tǒng)總線事務(wù)中的數(shù)據(jù),例如從系統(tǒng)內(nèi)存中讀數(shù)。在U.S專利申請系列NO.08/839,557中更全面地描述了R狀態(tài),在此將其整體引入以供參考。最近狀態(tài)的子狀態(tài)表明,假定高速緩存登記項包含指令,而不是數(shù)據(jù),并且/或者表明同一高速緩存登記項已被在較低級高速緩存中重新分配,可以用與SIC0與SIC1狀態(tài)等效的方式實現(xiàn)該子狀態(tài)。
盡管只是參照一個優(yōu)選實施方案描述本發(fā)明,但本領(lǐng)域?qū)I(yè)人士可以認(rèn)識到,在不脫離本發(fā)明精神和范圍的情況下,可以做不同的形式和細(xì)節(jié)上的改變。
權(quán)利要求
1.在包括系統(tǒng)內(nèi)存和多個高速緩存的數(shù)據(jù)處理系統(tǒng)中,保持高速緩存一致性的方法,包括執(zhí)行一條取指令操作,把一個數(shù)據(jù)項讀取到第一高速緩存中;并且將該數(shù)據(jù)項的一致性指示器設(shè)置為第一狀態(tài),以表明可以在第一高速緩存和至少一個其它高速緩存中找到該數(shù)據(jù)項,且包含該數(shù)據(jù)項的所有高速緩存都與系統(tǒng)內(nèi)存一致,并表明,該數(shù)據(jù)項是由一個取指令操作讀取的。
2.如權(quán)利要求1的方法,其特征在于第一狀態(tài)表明假設(shè)該數(shù)據(jù)項包含指令。
3.如權(quán)利要求1的方法,其特征在于第一狀態(tài)是由一個取指令操作導(dǎo)致的共享狀態(tài)。
4.如權(quán)利要求1的方法,其特征在于,它還包括若檢測到使一個指令高速緩存存儲單元無效的操作并包含與該數(shù)據(jù)項相關(guān)的地址標(biāo)記,同時一致性指示器處于第一狀態(tài),則將一致性指示器更新為第三狀態(tài),以表明數(shù)據(jù)項是無效的。
5.如權(quán)利要求1的方法,其特征在于,它還包括若檢測到包含與該數(shù)據(jù)項相關(guān)的地址標(biāo)記的讀數(shù)據(jù)操作,同時一致性指示器處于第一狀態(tài),則將一致性指示器更新為一個第二狀態(tài),該狀態(tài)表明可以在第一高速緩存和至少一個其它高速緩存中找到該數(shù)據(jù)項,并且包含該數(shù)據(jù)項的所有高速緩存與系統(tǒng)內(nèi)存一致,并表明假定該數(shù)據(jù)項不包含指令。
6.如權(quán)利要求5的方法,其特征在于第二狀態(tài)是一個共享狀態(tài)。
7.如權(quán)利要求1的方法,其特征在于,它還包括若檢測到一個包含與該數(shù)據(jù)項相關(guān)的地址標(biāo)記的被監(jiān)聽的清空操作,同時一致性指示器是第一狀態(tài),則將一致性指示器更新為第二狀態(tài),表明可在第一高速緩存中找到該數(shù)據(jù)項,并且第一高速緩存與系統(tǒng)內(nèi)存相一致,并表明邏輯上按序并在第一高速緩存之后的其它高速緩存不包含該數(shù)據(jù)項。
8.如權(quán)利要求7的方法,其特征在于,在邏輯上按序并在第一高速緩存以下的第二高速緩存中,對包含有該數(shù)據(jù)項的一個高速緩存存儲單元進行重新分配,將引起轉(zhuǎn)換到第二狀態(tài)。
9.如權(quán)利要求7的方法,其特征在于,它還包括若檢測到使一個指令高速緩存存儲單元失效的操作,并包含與該數(shù)據(jù)項相關(guān)的地址標(biāo)記,同時一致性指示器處于第二狀態(tài),則將一致性指示器更新為第三狀態(tài),表明該數(shù)據(jù)項無效。
10.一個數(shù)據(jù)處理系統(tǒng),包括有第一高速緩存的處理器;連接到處理器上的第二高速緩存;連接到第二高速緩存上的第三高速緩存,第三高速緩存邏輯上位于第二高速緩存之下;和與第二高速緩存中的一個數(shù)據(jù)項相關(guān)的一致性指示器,該一致性指示器有一個第一狀態(tài),表明可在第二高速緩存和至少一個其它高速緩存中找到該數(shù)據(jù)項,并且包含該數(shù)據(jù)項的所有高速緩存都與系統(tǒng)內(nèi)存相一致,并表明該數(shù)據(jù)項是由一條取指令操作讀取的。
11.如權(quán)利要求10的數(shù)據(jù)處理系統(tǒng),其特征在于,一致性指示器有一個第二狀態(tài),表明可在第二高速緩存中找到該數(shù)據(jù)項,但不能在第三高速緩存中找到該數(shù)據(jù)項。
12.如權(quán)利要求11的數(shù)據(jù)處理系統(tǒng),其特征在于第一高速緩存包含與處理器中的數(shù)據(jù)高速緩存分開的指令高速緩存,并且一致性指示器有一個表明該數(shù)據(jù)項無效的第三狀態(tài),一致性指示器根據(jù)使第一高速緩存中的一個高速緩存存儲單元無效的操作,從第二狀態(tài)轉(zhuǎn)變?yōu)榈谌隣顟B(tài)。
13.如權(quán)利要求10的數(shù)據(jù)處理系統(tǒng),其特征在于第一高速緩存包含與處理器中的數(shù)據(jù)高速緩存分開的指令高速緩存,且一致性指示器有一個表明該數(shù)據(jù)項無效的第二狀態(tài),一致性指示器根據(jù)使第一高速緩存中的一個高速緩存存儲單元失效的操作,從第一狀態(tài)轉(zhuǎn)變?yōu)榈诙顟B(tài)。
14.如權(quán)利要求10的數(shù)據(jù)處理系統(tǒng),其特征在于第一狀態(tài)表明假定該數(shù)據(jù)項包含指令。
15.如權(quán)利要求10的數(shù)據(jù)處理系統(tǒng),其特征在于一致性指示器有一個第二狀態(tài),表明可能在第二高速緩存和至少一個其它高速緩存中找到該數(shù)據(jù)項,表明包含該數(shù)據(jù)項的所有高速緩存與系統(tǒng)內(nèi)存相一致,并表明假定該數(shù)據(jù)項不包含指令。
16.如權(quán)利要求10的數(shù)據(jù)處理系統(tǒng),其特征在于,響應(yīng)于把數(shù)據(jù)項讀取到處理器中單獨的數(shù)據(jù)高速緩存中的操作,一致性指示器從第一狀態(tài)轉(zhuǎn)變?yōu)榈诙顟B(tài)。
17.支持?jǐn)?shù)據(jù)處理系統(tǒng)中的一個高速緩存一致性協(xié)議的高速緩存,包括包含多個高速緩存存儲單元的數(shù)據(jù)存儲器;包含多個登記項的高速緩存目錄,每個目錄登記項都與多個高速緩存存儲單元中的一個高速緩存存儲單元唯一地相關(guān);并且在至少一個目錄登記項中的一致性指示器,該一致性指示器有一個第一狀態(tài),表明相關(guān)高速緩存存儲單元中的數(shù)據(jù)項與系統(tǒng)內(nèi)存相一致,并且是由一個取指令操作恢復(fù)的。
18.如權(quán)利要求17的裝置,其特征在于第一狀態(tài)表明,假設(shè)該高速緩存存儲單元包含指令。
19.如權(quán)利要求17的裝置,其特征在于,一致性指示器有一個第二狀態(tài),表明在與該高速緩存邏輯上按序并在該高速緩存之下的其它高速緩存中,不能找到相關(guān)高速緩存存儲單元中的數(shù)據(jù)項。
20.如權(quán)利要求17的裝置,其特征在于一致性指示器有一個第二狀態(tài),表明假設(shè)該數(shù)據(jù)項不包含指令。
全文摘要
在處理器可訪問的二級(L2)高速緩存中,實現(xiàn)一個改進的MESI高速緩存一致性協(xié)議,該處理器有分開的一級(L1)數(shù)據(jù)和指令高速緩存。改進MESI協(xié)議包含共享狀態(tài)的兩個子狀態(tài),它代表與共享狀態(tài)相同的一致性信息以及關(guān)于主題高速緩存登記項的內(nèi)容/一致性的附加信息。在較低級高速緩存(例如L3)中,對處于共享一致性狀態(tài)的第一子狀態(tài)的一個高速緩存登記項進行重新配置,不會使L2高速緩存中的同一高速緩存登記項的內(nèi)容無效。
文檔編號G06F12/08GK1231443SQ99101098
公開日1999年10月13日 申請日期1999年1月15日 優(yōu)先權(quán)日1998年2月17日
發(fā)明者R·K·阿里米里, J·S·多德森 申請人:國際商業(yè)機器公司