亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

具有保護(hù)的最近最少使用置換方法

文檔序號:6516073閱讀:203來源:國知局
專利名稱:具有保護(hù)的最近最少使用置換方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及一種電子計(jì)算機(jī)系統(tǒng)中的高速緩存的數(shù)據(jù)的置換方法,尤其涉及一種能防止不需要的置換的最近最少使用置換方法。
背景技術(shù)
高速緩沖存儲器經(jīng)常用于高性能的計(jì)算系統(tǒng)中,其中快的系統(tǒng)速度要求用快的、昂貴的存儲器來快速訪問數(shù)據(jù)。處理器工作速度越快,它從存儲器檢索數(shù)據(jù)和指令的速度就必須越快。這就要求存儲器可以被快速訪問,并且涉及到由于很高的時(shí)鐘速度,存儲器一般位于處理器附近。但是,能作為高速緩存操作的快速存儲器比較貴,而且靠近處理器設(shè)置大量的或定制數(shù)量的存儲器往往不可行。因此,常常將數(shù)量有限的高速緩沖存儲器存儲體與較大的主系統(tǒng)存儲器相隔離,置于處理器核心的附近。
這種高速緩沖存儲器一般包括如靜態(tài)隨機(jī)訪問存儲器(SRAM)的高速存儲器和一個(gè)高速緩存控制器。該控制器管理那些根據(jù)處理器可能很快要用到哪些數(shù)據(jù)的預(yù)測,從相對較慢的主存儲器復(fù)制到高速緩沖存儲器中的數(shù)據(jù)。該高速緩沖存儲器一般占整個(gè)系統(tǒng)存儲器的1%到10%,但可能部分隨著計(jì)算系統(tǒng)的存儲器訪問特性的可預(yù)測性的不同,在較大的范圍內(nèi)變化。
因?yàn)檫B續(xù)存儲器訪問一般發(fā)生在相對較小的存儲地址區(qū)域內(nèi),所以將最經(jīng)常頻繁訪問的數(shù)據(jù)存儲在高速緩存中可以明顯地提高系統(tǒng)的性能。從相對較快的緩沖存儲器訪問這些最經(jīng)常使用的數(shù)據(jù)使處理器不必去等待從較慢的主存儲器訪問數(shù)據(jù),這種情況被稱為高速緩存命中。如果處理器需要的數(shù)據(jù)不在高速緩存中,而必須從主存儲器中取出,該要求類似地被稱為高速緩存失中。
高速緩存有效地提高存儲器訪問速度的程度可以通過高速緩存命中和高速緩存失中的存儲器要求的個(gè)數(shù)來測量。高速緩存控制器設(shè)計(jì)者的目的是將處理器最可能用到的數(shù)據(jù)放入高速緩存中,使高速緩存命中對高速緩存失中的比率最大。通過采用此方案,系統(tǒng)可以得到很多具有高速存儲器的優(yōu)點(diǎn),同時(shí)通過將大部分?jǐn)?shù)據(jù)存儲在相對便宜的較低速的存儲器中來降低整個(gè)系統(tǒng)的成本。
一種用經(jīng)常使用數(shù)據(jù)置換不經(jīng)常使用數(shù)據(jù)的方案是簡單地記錄存儲在高速緩存的哪個(gè)數(shù)據(jù)是最近最少使用(LRU)的,并用剛載入到高速緩存的新數(shù)據(jù)置換該數(shù)據(jù)。這種方法一般采用與每個(gè)存儲在高速緩存中的數(shù)據(jù)塊相對應(yīng)的多個(gè)LRU位,它包含表明該數(shù)據(jù)上次被訪問之后經(jīng)過了多長時(shí)間的數(shù)據(jù)。由于高速緩存的容量有限,這種方法可以在數(shù)據(jù)被再次使用之前從大的數(shù)據(jù)集中移入數(shù)據(jù)。而且,該LRU算法可能用最近使用的數(shù)據(jù)置換經(jīng)常使用的數(shù)據(jù),即使最近使用的數(shù)據(jù)更不經(jīng)常使用或者僅使用一次。因此需要一種能保證更可能再次被要求的數(shù)據(jù)不被最近使用過但不是經(jīng)常使用的數(shù)據(jù)置換的方法。
發(fā)明概述提供一種在高速緩沖存儲系統(tǒng)中存儲數(shù)據(jù)的方法。高速緩存數(shù)據(jù)項(xiàng)列表記錄存儲在高速緩存中的高速緩存數(shù)據(jù)項(xiàng),并被劃分為一個(gè)過濾列表和一個(gè)再使用列表。通過將所有新緩沖數(shù)據(jù)項(xiàng)放入過濾列表來填充過濾列表,而再使用列表則由有選擇地從過濾列表中提出的高速緩存數(shù)據(jù)項(xiàng)填充。從過濾列表和再使用列表中清除數(shù)據(jù)是由一個(gè)保護(hù)過程來操作的。


圖1示出一個(gè)表,該表表示根據(jù)本發(fā)明的一個(gè)實(shí)施方式的最近最少使用(LRU)順序矩陣。
圖2示出一個(gè)表,該表表示根據(jù)本發(fā)明的一個(gè)實(shí)施方式的多路LRU置換高速緩存字,該字隨著訪問具體路中的數(shù)據(jù)而變化。
圖3示出一個(gè)表,該表表示根據(jù)本發(fā)明的一個(gè)實(shí)施方式的一個(gè)多路LRU高速緩存置換中用于犧牲者選擇的解碼掩碼。
圖4示出表示根據(jù)本發(fā)明的一個(gè)實(shí)施方式的子列表排序掩碼的一個(gè)表和一個(gè)將該掩碼應(yīng)用到具有相應(yīng)的LRU路保護(hù)位的LRU字中的應(yīng)用例子。
圖5示出一個(gè)表示根據(jù)本發(fā)明的一個(gè)實(shí)施方式的具有處理器,存儲器以及LRUP高速緩存的通用計(jì)算機(jī)。
圖6示出一個(gè)根據(jù)本發(fā)明的一個(gè)實(shí)施方式的包括一個(gè)LRUP高速緩存的數(shù)據(jù)存儲系統(tǒng)。
具體實(shí)施例方式
在下面對本發(fā)明的實(shí)施例的具體描述中,參照構(gòu)成該實(shí)施例一部分的附圖,其中通過圖解說明具體的可實(shí)施本發(fā)明的實(shí)施例。這些實(shí)施例的描述足夠詳細(xì)使本技術(shù)領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)本發(fā)明,應(yīng)該理解的是也可以利用其他的實(shí)施例,可以在不偏離本發(fā)明的精神或范圍進(jìn)行邏輯的,物理的,電氣的,以及其他的改變。因此,下面的詳細(xì)的描述不用于限制范圍,發(fā)明的范圍只在所附的權(quán)利要求書中定義。
需要一種方法來改善LRU高速緩沖存儲器系統(tǒng)以減小當(dāng)需要更多的高速緩存空間時(shí)清除最近最少使用的高速緩存數(shù)據(jù)項(xiàng)所帶來的問題的影響。本發(fā)明改進(jìn)一個(gè)簡單的LRU置換策略,解決由于高速緩沖容量有限在再次使用數(shù)據(jù)前從大數(shù)據(jù)集中清除該數(shù)據(jù)的問題。它還解決用最近使用過的不經(jīng)常使用的數(shù)據(jù)置換經(jīng)常使用的數(shù)據(jù)的問題。本發(fā)明對這些LRU高速緩存共有的問題提供了解決方案,并詳細(xì)說明如下。
一個(gè)典型的高速緩沖存儲器有多個(gè)在不同的存儲體中具有相同縮短了的地址的存儲單元,其中存儲體被稱為”路”(way),例如,一個(gè)用于有16位地址長度的系統(tǒng)的存儲器可能有一個(gè)4路高速緩存,由4個(gè)各有8位地址的存儲體組成。當(dāng)在高速緩存中存儲來自主存儲器的數(shù)據(jù)時(shí),數(shù)據(jù)主存儲器地址中的最高8位被丟棄,其余的8位是數(shù)據(jù)將被存入其中的高速緩存地址。因?yàn)橛?路,或4個(gè)存儲器的存儲體,以所需的地址,最近最少使用的數(shù)據(jù)所在的路一般被選為向其存儲數(shù)據(jù)的路。這是因?yàn)樵谑褂么鎯υ谄渌反鎯ζ髦械淖罱^多使用的數(shù)據(jù)之前需要最近最少使用的數(shù)據(jù)的可能性較小。這個(gè)假設(shè)不是一直正確的,事實(shí)上可能LRU數(shù)據(jù)使用更頻繁。有很多不同的高速緩存結(jié)構(gòu)和高速緩存填充、置換算法存在,上面所述的只是其中一個(gè)采用最近最少使用(LRU)置換算法的多路高速緩存的例子。
本發(fā)明包括一個(gè)LRU算法,用于克服容量移位和關(guān)聯(lián)移位的問題。它們都是普通的方式,其中從高速緩沖存儲器清除的數(shù)據(jù)是從包含不是最不可能馬上用到的數(shù)據(jù)的路中選出的。
容量移位發(fā)生在當(dāng)數(shù)據(jù)不經(jīng)常被使用,致使最近最少使用的數(shù)據(jù)確實(shí)比最近較多使用的路中的數(shù)據(jù)馬上被訪問的可能性更大時(shí)。例如,當(dāng)圖象必須被重復(fù)存取時(shí),容量移位影響操作部分存儲在16kB高速緩存的總量為32kB數(shù)據(jù)構(gòu)成的圖象的圖象編輯處理。如果組成圖象的數(shù)據(jù)字節(jié)被順序訪問并被存儲在高速緩存中時(shí),高速緩存中總是有16kB的圖象信息,但是,處理在再次需要存儲在高速緩存中的信息之前需要訪問另外16kB的圖象信息。當(dāng)圖象文件的第一部分被再次訪問時(shí),高速緩存中僅包含圖象的第二部分的最近最多使用的數(shù)據(jù)。同樣地,當(dāng)處理要求圖象第二部分的數(shù)據(jù)時(shí),該數(shù)據(jù)已經(jīng)被圖象的第一部分的最近較多使用的數(shù)據(jù)置換。這樣的處理保證較高的高速緩存失中,因?yàn)楦咚倬彺娲_實(shí)沒有足夠的容量來存儲所有重復(fù)使用的數(shù)據(jù)。
另外一種常見的方式通過關(guān)聯(lián)移位從高速緩存中清除數(shù)據(jù)。這發(fā)生在某些數(shù)據(jù)需要被重復(fù)使用,但是在大量的不經(jīng)常使用的數(shù)據(jù)被訪問時(shí)被丟棄的情況下。例如,考慮一個(gè)只有4個(gè)處理數(shù)據(jù)結(jié)構(gòu)A和數(shù)據(jù)單元B的項(xiàng)的高速緩存。如果數(shù)據(jù)的訪問順序?yàn)锳1,A2,A3,A4,A5,B,A6,A7,A8,A9,B,A10,A11,A12,A13,A14,B等,高速緩存將永遠(yuǎn)不包含B但將包含最近較多使用的數(shù)據(jù)結(jié)構(gòu)A的單元。盡管B比數(shù)據(jù)結(jié)構(gòu)A的任何一個(gè)單元都使用得頻繁,但是傳統(tǒng)的LRU算法不為象B這樣頻繁使用的數(shù)據(jù)提供優(yōu)先。
為了實(shí)現(xiàn)LRU算法,高速緩存控制器必須處理表明各路中對于指定的地址哪些路最近最多的數(shù)據(jù)。高速緩存控制器負(fù)責(zé)存儲關(guān)于哪些路最近最多使用的數(shù)據(jù),解碼該數(shù)據(jù)并決定哪路最近最少使用而應(yīng)由新使用的數(shù)據(jù)置換。圖1表示一個(gè)表,部分地圖解一個(gè)追蹤4路高速緩存中對于特定的地址哪路最近最少的方法。
圖1表示一個(gè)包含單元(i,j)的二維矩陣的表,該矩陣用于記錄每路中特定地址的使用順序,其中,如果路(I)中的數(shù)據(jù)比路(J)中的數(shù)據(jù)使用頻繁,則單元(i,j)為1;如果路(I)中的數(shù)據(jù)比路(J)中的數(shù)據(jù)使用得少,則單元(i,j)為0。需要注意的是,地址(0,0)到(3,3)的矩陣對角線上的單元由于(I)和(J)指同一路所以其中不包含有意義的信息,可以忽略。而且,該對角線一邊的單元與另一邊單元相反,這樣如果(3,2)是1,意味著最近使用路3比路2多,則(2,3)邏輯上必須為0因?yàn)槁?最近沒有比路3使用得多。因此,對角線一邊的單元和對角線上的單元可以丟棄不用,而只留下用矩陣中的數(shù)字表示的單元作為記錄使用順序的關(guān)鍵數(shù)據(jù)。這5個(gè)編號的矩陣單元可以用一個(gè)5位的字符串來表示,用5個(gè)矩陣單元(i,j)的數(shù)組L來表示,其中,L={(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中,如果單元(I)最近比單元(j)使用得多,每個(gè)位包含一個(gè)1。數(shù)組L的這5位可以更簡單地用單個(gè)數(shù)字來引用,這樣L=(0,1,2,3,4,5)并且每一位按上述數(shù)組L的矩陣表示中給定的順序?qū)?yīng)一個(gè)矩陣單元。
圖2表示一個(gè)更新表,用于在本高速緩存例的操作中,在訪問新數(shù)據(jù)時(shí)更新數(shù)組L的5位并將新訪問的數(shù)據(jù)寫入高速緩存中。更新矩陣根據(jù)哪路用于存儲新訪問的數(shù)據(jù),表明對指定的地址要變L的哪一位。因?yàn)楦咚倬彺媸?路高速緩存,所以4路中任何一路都可能被選擇用于存儲數(shù)據(jù),矩陣的一個(gè)軸表示高速緩存系統(tǒng)的4個(gè)路。矩陣的另一個(gè)軸表示數(shù)組L的5位,用于存儲關(guān)于4路中哪一路最近最多使用的數(shù)據(jù),并與由另一個(gè)軸表示的被訪問的路相對應(yīng)。例如,在通過檢查字L確定路2中對指定地址有最近最少使用的數(shù)據(jù)的操作中,路2將被新來的數(shù)據(jù)置換。在路軸上找到路2,矩陣表明位0,3和4未發(fā)生變化,而位1和2被重置為0,位5變?yōu)?。重審數(shù)組L的矩陣單元表示法,等式表明將位1和2設(shè)為0表明路0比路2最近較少使用,路1比路2最近較少使用。類似地,將位5設(shè)為1表明路2比路3最近較多使用。進(jìn)一步檢查數(shù)組L的矩陣表示方法表明位0,3和4不包含關(guān)于路2的信息,因而保持不變。在每次寫高速緩存之后,通過這種方法更新這些位,數(shù)組L總包含關(guān)于使用高速緩存各路的順序的精確信息,并由高速緩存控制器用來將新的數(shù)據(jù)分配到高速緩存中最近最少使用的路中。
高速緩存控制器通過使用犧牲者選擇表來進(jìn)行該動作,該表是圖2中的更新表的互補(bǔ)。圖3表示例子高速緩存的犧牲者選擇表,使矩陣中所有的1被0置換,所有的0被1置換,所有未變化位保持不變。從矩陣中找出單元的補(bǔ)的操作可以簡單地通過電子的或者其他方法來實(shí)現(xiàn),因此不必要求維護(hù)犧牲者選擇表,但可以通過即時(shí)(on-the-fly)轉(zhuǎn)換圖2中的更新表的數(shù)據(jù)來實(shí)現(xiàn)。圖3中的每個(gè)單元在操作中作為掩碼使用,以使掩碼的內(nèi)容與存貯在數(shù)組L中的數(shù)據(jù)進(jìn)行比較。如果4個(gè)掩碼中任何一個(gè)的數(shù)據(jù)與數(shù)組L中的數(shù)據(jù)相匹配,與該掩碼相關(guān)的路被選擇作為最近最少使用的路,而作為新數(shù)據(jù)的目標(biāo)。注意圖3中的掩碼包含各路間相互排斥的位數(shù)據(jù),這樣只有4個(gè)掩碼中的一個(gè)會匹配數(shù)組L中的任何可能的位組合,并指明一個(gè)特定的掩碼作為最近最少使用。這意味著這些掩碼可以與數(shù)組L同時(shí)比較,并且只有一路將被選擇作為高速緩存寫操作的目標(biāo)。
例如,考慮對于特定的地址的路已按照順序2,3,0,1使用,其中,路1最近最多使用,路2為最近最少使用。使用圖2中的更新表,在所有更新之后,數(shù)組L將包含數(shù)據(jù)L=(0,1,1,1,1,0)。比較這個(gè)字和圖3中掩碼,我們發(fā)現(xiàn)對于路0,位0,1,和3不正確;對于路1,位1和3不正確;對于路2,位1,2和5不正確。對于路2,犧牲者選擇矩陣中的掩碼的位1,2和5與數(shù)組L中的數(shù)據(jù)相匹配,所以路2被正確地選出作為最近最少使用的路。
上段中所述的例子是高速緩存系統(tǒng)中的LRU置換的一個(gè)例子,如上所述存在簡單的LRU置換方法的缺點(diǎn)。本發(fā)明在上述方法的基礎(chǔ)上加以改善,解決關(guān)聯(lián)和容量移位的問題。
具有保護(hù)的LRU,或LRUP,包括將傳統(tǒng)的LRU路列表分成至少兩個(gè)子列表。改善一個(gè)實(shí)施例的傳統(tǒng)的LRU路列表使其對每路包含一個(gè)再使用/過濾位,該位表明存儲在該路中的數(shù)據(jù)是否是再使用或過濾子列表的一部分。LRU排序被全局維護(hù),所以從LRU路到最近最多使用路的任意路除了是全局列表的一部分之外,還可以是再使用或過濾列表的一部分。設(shè)計(jì)各種互相獨(dú)立地管理再使用和過濾列表中的數(shù)據(jù)的處理以解決位移的問題,并優(yōu)化LRUP高速緩存的性能。
在本發(fā)明的一個(gè)實(shí)施例中,高速緩存單元被初始分配為過濾列表的一部分。提名處理將過濾列表中選出的單元提升再使用列表以填充再使用列表。因?yàn)樘崦麜鹨粋€(gè)高速緩存線從過濾列表移到再使用列表,后續(xù)的提名將使再使用列表不確定地增長,并最終將過濾列表擠出高速緩存。因此,保護(hù)處理根據(jù)新高速緩存線的分配,選擇清除再使用列表或過濾列表的成員,以存儲新來的數(shù)據(jù),保證單元在過濾和再使用列表間正確地分布。
從過濾列表提名一個(gè)單元到再使用列表可以由許多處理來完成,這些處理被修改以減少不必要的移位。所觸發(fā)的提名,其減少關(guān)聯(lián)移位,包括如果存儲在那里的數(shù)據(jù)要被再使用而該數(shù)據(jù)卻在過濾列表中時(shí),將一個(gè)高速緩存線從過濾列表移到再使用列表中。隨機(jī)提名,其減少容量移位,隨機(jī)地分配新分配的高速緩存線或從過濾列表中選擇高速緩存線以放入再使用列表。在本發(fā)明的范圍之內(nèi)可以考慮對所觸發(fā)的提名和隨機(jī)提名進(jìn)行組合和改變,下面討論幾個(gè)示范性的這種實(shí)施例。
觸發(fā)提名可以通過估計(jì)將某些單元提到再使用列表的要求較少的特定的環(huán)境,修改將過濾列表中被使用的高速緩存線提到再使用列表的簡單規(guī)則。例如,在全局列表的最近最多使用位置的被引用單元可能被作為單操作或運(yùn)算的一部分被再次訪問,所以將比兩次不同地被訪問的單元的再次訪問可能性要小。這些單元被排除在提名外,但仍被保持為過濾列表的一部分直到以后的再次使用或清除。類似地,在觸發(fā)提名中,在過濾列表的最近最多使用位置的被引用單元被排除在提出到再使用列表的提名之外,或在全局或過濾列表的多個(gè)最近最多使用位置的單元可被排除在提名之外。
隨機(jī)提名,包括隨機(jī)地選擇高速緩存線提到再使用列表中的提名。對簡單隨機(jī)提名的變更包括采用隨機(jī)選擇算法,該算法監(jiān)視再使用列表相對于全局列表的大小并使隨機(jī)提名不可能隨著再使用列表的增大而增加。除了在此討論的例子,還有很多其他的隨機(jī)選擇數(shù)據(jù)的方法也屬于本發(fā)明的范圍之內(nèi)。
可以將觸發(fā)提名和隨機(jī)提名組合起來用于解決關(guān)聯(lián)和容量移位,可以選擇這兩種算法及其變化以優(yōu)化對特定的高速緩存結(jié)構(gòu)的高速緩存命中/高速緩存失中的比率。例如,根據(jù)本發(fā)明的一個(gè)提名處理實(shí)施例,除了隨機(jī)提名算法外,包括采用排除過濾列表中最近最多使用的單元的觸發(fā)提名方案,在該隨機(jī)提名算法中,隨機(jī)提名不可能隨著再使用列表的增大而增加。這種組合方式具有觸發(fā)提名算法和隨機(jī)提名算法的自平衡提名的優(yōu)點(diǎn),因?yàn)殡S機(jī)提名算法依賴于再使用列表的大小。這將有助于穩(wěn)定再使用列表的大小,同時(shí)仍然有效地解決關(guān)聯(lián)和容量移位的問題。
再使用列表也可以由其他的提名處理來填充,例如可以采用根據(jù)數(shù)據(jù)的特有的特性將高速緩存數(shù)據(jù)項(xiàng)提到再使用列表的分類方案。由不同的提名處理提出的高速緩存線可以從再使用列表提升數(shù)據(jù),可以提升新分配的高速緩存數(shù)據(jù)項(xiàng),或提升其他方法選擇的高速緩存數(shù)據(jù)項(xiàng)。提名處理的組合可用于解決容量和關(guān)聯(lián)移位,或解決其他的高速緩存的無效率問題??梢灶A(yù)見,其他的用于選擇提升到再使用列表中的高速緩存線的提名處理存在并可能被開發(fā),這些方法被認(rèn)為屬于本發(fā)明的范圍之內(nèi)。
保護(hù)算法通過從全局或過濾列表中選擇清除單元,對再使用列表的大小提供額外的控制。注意因?yàn)槿至斜碛蛇^濾列表和再使用列表組成,所以從全局列表清除可以從再使用列表或過濾列表清除。這里討論兩種保護(hù)算法-打擊(strike)算法和LRU計(jì)數(shù)器算法。
打擊算法采用一個(gè)打擊計(jì)數(shù)器來記錄當(dāng)再使用列表的最近最少使用單元保持不變時(shí)訪問存儲器的結(jié)果為高速緩存失中的次數(shù)。最大允許打擊閾值是預(yù)設(shè)定的并與打擊計(jì)數(shù)器相比較,這樣當(dāng)打擊計(jì)數(shù)器的值大于最大允許打擊閾值時(shí),全局列表中的LRU單元被清除??梢酝ㄟ^增大再使用列表或提高最大允許打擊閾值來提高再使用列表中的單元的壽命,但是提高最大允許打擊閾值會導(dǎo)致全局列表中的單元的壽命變長。因此,對于相對較大的再使用列表,較小的最大允許打擊閾值比較合適,對于相對較小的再使用列表,較大的最大允許打擊閾值比較合適。所以本打擊算法的一個(gè)實(shí)施例采用一種根據(jù)再使用列表的大小改變打擊閾值的方法。
LRU計(jì)數(shù)器保護(hù)算法試圖推測從再使用列表中清除一個(gè)高速緩存線與從過濾列表中清除一個(gè)高速緩存線的成本。計(jì)數(shù)器記錄對過濾列表和再使用列表中的LRU單元的引用,從而可以比較訪問每個(gè)列表中的LRU單元的估計(jì)的可能性。這種方案的一個(gè)實(shí)施例采用的計(jì)數(shù)器初始為0,每引用一次再使用列表中的LRU單元就遞增,每引用一次過濾列表中的LRU單元就遞減。也可以選擇在計(jì)數(shù)器上加一個(gè)滯后位,這樣只有在第二次引用過濾列表或再使用列表的LRU位并且中間沒有引用過其他列表的LRU位時(shí)才遞增或遞減計(jì)數(shù)器。
當(dāng)需要清除時(shí),用LRU計(jì)數(shù)器的值確定再使用列表最大允許的容量并決定是從再使用列表還是從過濾列表清除高速緩存線。作為一個(gè)例子,考慮下面的情況在實(shí)施例中需要進(jìn)行清除時(shí),計(jì)數(shù)器保持一個(gè)表示訪問再使用列表的頻率的正數(shù)。然后LRU計(jì)數(shù)器的值與再使用列表的閾值比較。如果計(jì)數(shù)器的值大于閾值,推薦使用一個(gè)預(yù)先確定的大的列表容量。如果計(jì)數(shù)器的值小于閾值,需要使用一個(gè)預(yù)先確定的小的列表容量。然后被選中的預(yù)先確定的列表的容量與再使用列表的實(shí)際容量相比較,僅當(dāng)該預(yù)先確定的容量小于再使用列表的實(shí)際容量時(shí),從再使用列表中清除一條線。否則,從過濾列表中清除一條線。需要注意的是一個(gè)表可以包含許多預(yù)先確定的閾值和對應(yīng)的再使用列表的容量,以達(dá)到進(jìn)一步優(yōu)化再使用列表的容量和清除的目的。這種方案不僅用于控制再使用列表的容量,而且從過濾列表或者再使用列表中清除那些最不可能被使用的數(shù)據(jù)。
在操作中管理再使用列表和過濾列表要求使用數(shù)據(jù)位,該數(shù)據(jù)位用于指明每個(gè)高速緩存單元屬于哪一個(gè)列表。為了實(shí)現(xiàn)較高的高速緩存命中對失中的比率,必須快速高效地對每個(gè)列表進(jìn)行獨(dú)立地或者作為組合的全局列表進(jìn)行排序以最優(yōu)化高速度的高速緩存的操作。
作為在這種高速緩存中管理再使用和過濾列表的方法一個(gè)例子,這里討論一個(gè)采用再使用列表指示位的LRUP高速緩存的實(shí)施例。
在這種高速緩存中,通過檢查與各高速緩存單元對應(yīng)的再使用位,很容易區(qū)分高速緩存單元是再使用列表還是過濾列表的成員。例如,圖4中,對于路1和路2,如果高速緩存單元是再使用列表的成員,則將再使用位設(shè)為1。對于路0和路3,如果高速緩存單元是在過濾列表的成員,則將再使用位設(shè)為0。當(dāng)高速緩存控制器必須判斷過濾列表或再使用列表的LRU路以執(zhí)行作為LRUP高速緩存的一部分說明的處理之一時(shí),全局列表必須按照至少為高速緩存控制器尋找其順序的列表保存的使用順序被劃分為兩個(gè)列表。該處理被稱為子列表排序抽出,這里說明該處理的一個(gè)例子。
在我們的例子方法中,子列表排序抽出的目標(biāo)是要產(chǎn)生一個(gè)再排序的全局列表,以使全局列表的LRU單元也是正在抽出的子列表的LRU單元。這里公開一種將子列表中未進(jìn)行抽出的單元重新插入全局列表的MRU位置的方案,保持抽出的列表的順序以保證正確地辨認(rèn)列表LRU位,但丟失未抽出的列表的單元順序信息。
參看圖4,說明抽出再使用列表的LRU單元。被抽出的子列表(再使用列表)由對應(yīng)的再使用位表示的單元1和單元2組成,再使用位還表明單元0和3是未進(jìn)行抽出的子列表的成員。圖4中被編號表示單元0~4的每行表示一個(gè)掩碼,當(dāng)該列表的成員不進(jìn)行抽出時(shí),該掩碼應(yīng)用于數(shù)組L以導(dǎo)出一個(gè)新的數(shù)組。該新數(shù)組表示重新排序后的全局列表,其中LRU是進(jìn)行抽出的子列表的LRU。
例如,標(biāo)志為“老”的行表示原始的LRU列表,表明順序3,2,1,0,其中3是最近最少使用,0是最近最多使用的高速緩存單元。因?yàn)槲覀冊诔槌鲈偈褂昧斜?,不是再使用列表的一部分的單?和3的掩碼被應(yīng)用在數(shù)組L上。這樣形成一個(gè)在標(biāo)志為“新”的行上示出的新數(shù)組,它精確地反映被抽出的列表中的單元的順序,同時(shí)保證該數(shù)組表明未進(jìn)行抽出的列表的單元在MRU位置上。但是,因?yàn)楦鲉卧难诖a不是進(jìn)行抽出的列表的一部分,以不表示其在數(shù)組L中的老的位置的順序?qū)⑵鋺?yīng)用到老數(shù)組L,所以未進(jìn)行抽出的列表的順序信息被丟失。
在本具體例子中,新數(shù)組(0,0,0,0,1,1)表示順序2,1,0,3,其中2是LRU單元,3是MRU單元。因?yàn)槁?和路3的掩碼以隨機(jī)順序被應(yīng)用,當(dāng)事實(shí)上0比3最近用得多時(shí),該新數(shù)組表明3最近用得比0多。但是,因?yàn)樵撔畔⑽幢槐4婊財(cái)?shù)組L并且因?yàn)槲覀冎魂P(guān)心保存進(jìn)行抽出的列表的順序,所以在本應(yīng)用中這種類型的錯(cuò)誤沒有關(guān)系。
通過創(chuàng)建新數(shù)組來抽出子列表的功能可以在實(shí)現(xiàn)中使用組合邏輯來完成,因此能很快地完成。還存在其他的實(shí)施例,其導(dǎo)出不同的子列表順序,因而可以包括保持不進(jìn)行抽出的列表的順序。在子列表抽出中創(chuàng)建和使用新數(shù)組后,該新數(shù)組不再寫回到舊的數(shù)組L。因而數(shù)組L原封不動保持實(shí)際的單元順序,需要時(shí)可采用諸如組合邏輯等方法進(jìn)行重復(fù)的非破壞性的子列表抽出。
這里討論的高速緩存系統(tǒng)可作為計(jì)算機(jī)中使用的處理器的一部分,例如如圖5所示的系統(tǒng)。高速緩存系統(tǒng)不必作為處理器核心的一部分,但可以作為獨(dú)立的設(shè)備或與處理器相連來作為一個(gè)較大的處理器模塊的一部分來實(shí)現(xiàn)。該系統(tǒng)有連接到系統(tǒng)總線502的處理器核心501。該系統(tǒng)總線和處理器通過也與高速緩存504連接的高速緩存控制器503鏈接。該總線連接諸如硬盤驅(qū)動器505等的數(shù)據(jù)存儲器,并連接一個(gè)或多個(gè)輸入/輸出端口如端口506。高速緩存控制器從處理器接收存儲器取要求,如果被要求的數(shù)據(jù)存儲在高速緩存中,則從高速緩存滿足該要求,否則從主存貯器滿足該要求。高速緩存控制器根據(jù)上述本發(fā)明,采用LRUP高速緩存單元置換方法維護(hù)高速緩存504中的數(shù)據(jù)。
諸如高速緩存控制器503的高速緩存控制器可以在集成電路作為邏輯被物理地實(shí)現(xiàn),使該集成電路的至少一部分可以采用上述LRUP方法維護(hù)高速緩存中的數(shù)據(jù)。例如,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,集成電路具有能完成上述的將高速緩存劃分為再使用列表和過濾列表、填充再使用列表和過濾列表、從再使用列表和過濾列表清除數(shù)據(jù)項(xiàng)的功能的模塊。尤其希望通過至少包含處理器或處理器模塊的一部分、一個(gè)主板芯片集、一個(gè)高速緩存控制器芯片、或其他的集成電路的電路來實(shí)施,所有這些都在本發(fā)明的范圍之內(nèi)。
圖6表示一個(gè)數(shù)據(jù)存儲子系統(tǒng)。該系統(tǒng)包括連接到計(jì)算機(jī)系統(tǒng)的系統(tǒng)總線602的存儲控制器601。該存儲控制器也連接到一個(gè)或多個(gè)一般用于非易失性地存儲大量數(shù)據(jù)的硬盤驅(qū)動器603。該存儲控制器還連接到高速緩存604,它存儲和檢索數(shù)據(jù)的速度比硬盤驅(qū)動器603快,但是通常比較昂貴所以容量較小。存儲控制器601用于服務(wù)從硬盤驅(qū)動器存儲和檢索數(shù)據(jù)的請求,并維護(hù)高速緩存604中頻繁使用的數(shù)據(jù)。高速緩存控制器根據(jù)上述對LRUP高速緩存的描述,管理高速緩存中的數(shù)據(jù)。
上述具有保護(hù)的LRU通過對傳統(tǒng)LRU置換方法存在的共同問題提出解決方案,明顯地改善了傳統(tǒng)的LRU置換方法。通過將高速緩存項(xiàng)列表劃分為一個(gè)過濾子列表和一個(gè)再使用列表,可以實(shí)現(xiàn)填充和保護(hù)處理以減少關(guān)聯(lián)和容量移位。新高速緩存項(xiàng)被初始地存儲在過濾列表中,而再使用列表則由從高速緩存列表中提出的項(xiàng)來填充。保護(hù)處理從過濾列表和再使用列表清除數(shù)據(jù),它從過濾列表、再使用列表、或全局高速緩存列表中清除數(shù)據(jù)。前面討論了很多保護(hù)和清除處理的變體,及其在減少傳統(tǒng)的LRU置換中出現(xiàn)的不必要的位移帶來的影響方面的優(yōu)點(diǎn)。
雖然這里舉例說明了具體的實(shí)施方式,但是本領(lǐng)域的普通技術(shù)人員都能理解被設(shè)計(jì)用來達(dá)到相同目的任何裝置都可用來替代所示的具體實(shí)施方式
。本申請意圖覆蓋對本發(fā)明的任何修改或變形。本發(fā)明的范圍將僅由權(quán)利要求書及其等價(jià)形式的全部范圍來限定。
權(quán)利要求
1.一種在高速緩沖存儲器系統(tǒng)中存儲數(shù)據(jù)的方法,包括創(chuàng)建一個(gè)高速緩存數(shù)據(jù)項(xiàng)列表,該列表包含一個(gè)存儲在高速緩沖存儲器中的數(shù)據(jù)的列表;將該高速緩存數(shù)據(jù)項(xiàng)列表劃分為一個(gè)再使用列表和一個(gè)過濾列表;通過將新高速緩存數(shù)據(jù)項(xiàng)分配到過濾列表來填充過濾列表;通過一個(gè)提升處理來填充再使用列表;通過執(zhí)行保護(hù)處理從再使用列表和過濾列表中清除高速緩存數(shù)據(jù)項(xiàng)。
2.權(quán)利要求1的方法,其特征在于,通過將與各高速緩存數(shù)據(jù)項(xiàng)相對應(yīng)的再使用位設(shè)置為預(yù)定的值,來將高速緩存數(shù)據(jù)項(xiàng)劃分為再使用列表和過濾列表。
3.權(quán)利要求1的方法,其特征在于,填充再使用列表包括將那些是過濾列表的一部分而被訪問的高速緩存數(shù)據(jù)項(xiàng)提升到再使用列表。
4.權(quán)利要求1的方法,其特征在于,填充再使用列表包括將由提名處理選擇的那些高速緩存數(shù)據(jù)項(xiàng)提升到再使用列表。
5.權(quán)利要求1的方法,其特征在于,填充再使用列表包括隨機(jī)地將高速緩存數(shù)據(jù)項(xiàng)從過濾列表提升到再使用列表。
6.權(quán)利要求5的方法,其特征在于,在出現(xiàn)高速緩存失中時(shí)隨機(jī)地將高速緩存數(shù)據(jù)項(xiàng)從過濾列表提升到再使用列表,其中高速緩存失中是指被要求的數(shù)據(jù)當(dāng)前未存儲在高速緩存中。
7.權(quán)利要求1的方法,其特征在于,填充再使用列表還包括隨機(jī)地將新高速緩存數(shù)據(jù)項(xiàng)分配到再使用列表中。
8.權(quán)利要求1的方法,其特征在于,從再使用列表或過濾列表中清除高速緩存數(shù)據(jù)項(xiàng)包括計(jì)算再使用列表和過濾列表各自的長度;比較各子列表的長度與所希望的長度;接收將被存儲到高速緩沖存儲器中的新高速緩存數(shù)據(jù)項(xiàng);從兩個(gè)列表中的一個(gè)列表清除高速緩存數(shù)據(jù)項(xiàng)以便為該新高速緩存數(shù)據(jù)項(xiàng)提供一個(gè)存儲位置,其中,被清除的高速緩存數(shù)據(jù)項(xiàng)來自根據(jù)算出的長度與所希望的長度的比較結(jié)果選擇的列表。
9.一種計(jì)算機(jī)處理系統(tǒng),可電子地存儲和檢索數(shù)據(jù)并實(shí)現(xiàn)高速緩存,其中將數(shù)據(jù)存儲在高速緩存包括創(chuàng)建一個(gè)高速緩存數(shù)據(jù)項(xiàng)列表,該列表包含一個(gè)存儲在高速緩沖存儲器中的數(shù)據(jù)的列表;將高速緩存數(shù)據(jù)項(xiàng)列表劃分為一個(gè)再使用列表和一個(gè)過濾列表;通過將所有新高速緩存數(shù)據(jù)項(xiàng)分配到過濾列表來填充過濾列表;通過從過濾列表中提升高速緩存數(shù)據(jù)項(xiàng)來填充再使用列表;通過執(zhí)行保護(hù)處理從過濾列表和再使用列表中清除高速緩存數(shù)據(jù)項(xiàng)。
10.一種在高速緩存存儲系統(tǒng)中存儲數(shù)據(jù)的方法,包括創(chuàng)建一個(gè)高速緩存數(shù)據(jù)項(xiàng)列表,該列表包含一個(gè)存儲在高速緩沖存儲器中的數(shù)據(jù)的列表;將該高速緩存數(shù)據(jù)項(xiàng)列表劃分為一個(gè)再使用列表和一個(gè)過濾列表;跟蹤高速緩存數(shù)據(jù)項(xiàng)列表中的各高速緩存數(shù)據(jù)項(xiàng)的使用順序;通過將新高速緩存數(shù)據(jù)項(xiàng)分配到過濾列表來填充過濾列表;通過從過濾列表中提升高速緩存數(shù)據(jù)項(xiàng)來填充再使用列表;通過執(zhí)行保護(hù)處理從過濾列表和再使用列表中清除高速緩存數(shù)據(jù)項(xiàng)。
11.權(quán)利要求10的方法,其特征在于,填充再使用列表還包括將那些是過濾列表的一部分而被訪問的高速緩存數(shù)據(jù)項(xiàng)提升到再使用列表。
12.權(quán)利要求10的方法,其特征在于,填充再使用列表還包括如果被使用的高速緩存數(shù)據(jù)項(xiàng)在過濾列表中但不是過濾列表中的最近最多使用的高速緩存數(shù)據(jù)項(xiàng),則將該高速緩存數(shù)據(jù)項(xiàng)從過濾列表提升到再使用列表。
13.權(quán)利要求10的方法,其特征在于,填充再使用列表還包括如果被使用的高速緩存數(shù)據(jù)項(xiàng)在過濾列表中但不是高速緩存數(shù)據(jù)項(xiàng)列表中的最近最多使用的高速緩存數(shù)據(jù)項(xiàng),則將該高速緩存數(shù)據(jù)項(xiàng)從過濾列表提升到再使用列表。
14.權(quán)利要求10的方法,其特征在于,填充再使用列表還包括隨機(jī)地選擇新存儲的高速緩存數(shù)據(jù)項(xiàng)放入再使用列表中。
15.權(quán)利要求14的方法,其特征在于,隨機(jī)地選擇提升到再使用列表的新存儲的高速緩存數(shù)據(jù)項(xiàng)不可能隨著再使用列表的增大而增加。
16.權(quán)利要求10的方法,其特征在于,保護(hù)過程還包括當(dāng)再使用列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)在打擊計(jì)數(shù)器中保持不變時(shí),計(jì)數(shù)高速緩存失中,其中高速緩存失中是指被要求的數(shù)據(jù)當(dāng)前未存儲在高速緩存中;比較該打擊計(jì)數(shù)器和最大允許的打擊閾值;如果打擊計(jì)數(shù)器的值大于該最大允許的打擊閾值時(shí),清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)。
17.權(quán)利要求10的方法,其特征在于,保護(hù)處理還包括在每次引用再使用列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)時(shí)遞增計(jì)數(shù)器;在每次引用過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)時(shí)遞減計(jì)數(shù)器;根據(jù)計(jì)數(shù)器的值計(jì)算最大的再使用列表的容量;計(jì)算再使用列表的實(shí)際容量;如果該再使用列表的實(shí)際容量大于該再使用列表的最大允許容量,則清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng);如果過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)存在并且該再使用列表的實(shí)際容量不大于該再使用列表的最大允許容量,則清除過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng);如果過濾列表為空并且該再使用列表的實(shí)際容量不大于該再使用列表的最大允許容量,則清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)。
18.權(quán)利要求17的方法,其特征在于,還包括比較該計(jì)數(shù)器和一個(gè)閾值;根據(jù)相對于該閾值的該計(jì)數(shù)器的值生成再使用列表的最大容量。
19.權(quán)利要求10的方法,其特征在于,保護(hù)處理還包括在每次第2次連續(xù)引用再使用列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)時(shí)遞增一個(gè)計(jì)數(shù)器;在每次引用過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)時(shí)遞減該計(jì)數(shù)器;根據(jù)計(jì)數(shù)器的值計(jì)算再使用列表的最大容量;計(jì)算再使用列表的實(shí)際容量;如果該再使用列表的實(shí)際容量大于該再使用列表的最大允許容量,則清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng);如果過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)存在并且該再使用列表的實(shí)際容量不大于該再使用列表的最大允許容量,則清除過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng);如果過濾列表為空并且該再使用列表的實(shí)際容量不大于該再使用列表的最大允許容量,則清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)。
20.權(quán)利要求10的方法,其特征在于,保護(hù)處理還包括在每次連續(xù)引用高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)時(shí),遞增一個(gè)計(jì)數(shù)器;在每次引用過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)時(shí),遞減該計(jì)數(shù)器;根據(jù)計(jì)數(shù)器的值計(jì)算再使用列表的最大容量;計(jì)算再使用列表的實(shí)際容量;如果該再使用列表的實(shí)際容量大于該再使用列表的最大允許容量,則清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng);如果過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)存在并且該再使用列表的實(shí)際容量不大于該再使用列表的最大允許容量,則清除過濾列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng);如果過濾列表為空并且該再使用列表的實(shí)際容量不大于該再使用列表的最大允許容量,則清除高速緩存數(shù)據(jù)項(xiàng)列表中的最近最少使用的高速緩存數(shù)據(jù)項(xiàng)。
21.一種集成電路,具有能將數(shù)據(jù)存儲在高速緩存中的電路,其操作如下將一個(gè)高速緩存數(shù)據(jù)項(xiàng)列表劃分為一個(gè)再使用列表和一個(gè)過濾列表;跟蹤該高速緩存數(shù)據(jù)項(xiàng)列表中的各高速緩存數(shù)據(jù)項(xiàng)的使用順序;通過將新高速緩存數(shù)據(jù)項(xiàng)分配到過濾列表來填充過濾列表;通過從過濾列表中提升高速緩存數(shù)據(jù)項(xiàng)來填充再使用列表;以及通過執(zhí)行保護(hù)處理從過濾列表和再使用列表中清除高速緩存數(shù)據(jù)項(xiàng)。
22.一種計(jì)算機(jī)信息處理系統(tǒng),該系統(tǒng)能電子地存儲和檢索數(shù)據(jù)并包括一個(gè)高速緩存,其中,將數(shù)據(jù)存儲在高速緩存中包括將一個(gè)高速緩存數(shù)據(jù)項(xiàng)列表劃分為一個(gè)再使用列表和一個(gè)過濾列表;跟蹤該高速緩存數(shù)據(jù)項(xiàng)列表中的各高速緩存數(shù)據(jù)項(xiàng)的使用順序;通過將新高速緩存數(shù)據(jù)項(xiàng)分配到過濾列表來填充過濾列表;通過從過濾列表中提升高速緩存數(shù)據(jù)項(xiàng)來填充再使用列表;通過執(zhí)行保護(hù)處理從過濾列表和再使用列表中清除高速緩存數(shù)據(jù)項(xiàng)。
全文摘要
提供一種具有保護(hù)方法的LRU方法,該方法通過對現(xiàn)有的LRU置換方法中存在的共同問題提供解決方法,明顯地改善現(xiàn)有的LRU置換方法的性能。通過將一個(gè)高速緩存項(xiàng)列表劃分為一個(gè)過濾子列表和一個(gè)再使用列表,實(shí)現(xiàn)填充和保護(hù)處理以減少關(guān)聯(lián)移位和容量移位。新的高速緩存項(xiàng)被初始地存儲在過濾列表中,再使用列表由從高速緩存列表中提出的項(xiàng)填充。從過濾列表和再使用列表中清除數(shù)據(jù)的操作由保護(hù)處理來完成,它從過濾列表、再使用列表、或全局高速緩存列表中清除數(shù)據(jù)項(xiàng)。其中討論了很多保護(hù)和清除處理的變體,及其在減少傳統(tǒng)的LRU置換中出現(xiàn)的不必要的位移帶來的影響方面的優(yōu)點(diǎn)。
文檔編號G06F12/12GK1361887SQ00810595
公開日2002年7月31日 申請日期2000年5月17日 優(yōu)先權(quán)日1999年5月18日
發(fā)明者C·B·維爾克森, N·D·瓦德 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1