專利名稱:在查找高速緩存中保持對象的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng),并且尤其涉及用于在查找高速緩存中保持對象的系統(tǒng)和方法。
背景技術(shù):
集合關(guān)聯(lián)的高速緩存(set associative cache)允許將來自任何地址的數(shù)據(jù)存儲在高速緩存單元中。將高速緩存地址用作標(biāo)記。由高速緩存保持的全部標(biāo)記必須與所請求的地址進(jìn)行比較。如果標(biāo)記與所請求的地址相匹配,則存取匹配標(biāo)記的相關(guān)數(shù)據(jù)。集合關(guān)聯(lián)的高速緩存需要關(guān)聯(lián)存儲器來保持這些標(biāo)記。集合關(guān)聯(lián)的高速緩存基于唯一標(biāo)識符將要緩存的對象分離為集合,而且每個對象將僅僅屬于一個集合。由于將對象添加到高速緩存中,所以每個集合僅僅能夠增大到有限的大小。一旦該集合已經(jīng)達(dá)到它的滿容量,則每當(dāng)添加新對象時就必須丟棄現(xiàn)有的對象。通常,所丟棄的對象將會是該集合中最近最少使用(LRU)的對象。
名稱查找高速緩存源自于通常的集合關(guān)聯(lián)的高速緩存體系結(jié)構(gòu)。因?yàn)槊Q查找高速緩存通常僅僅包含系統(tǒng)中所有現(xiàn)有對象的子集,所以當(dāng)把對象添加到該高速緩存中時,每個集合僅僅可以增大到有限的大小。一旦該集合已經(jīng)達(dá)到它的滿容量,則每當(dāng)添加新的對象時,就必須丟棄現(xiàn)有的對象(其通常是最近最少使用的對象)。通常,該集合是從頭部開始以線性方式進(jìn)行搜索的鏈表。當(dāng)找到對象或者搜索到尾部對象時,搜索結(jié)束。如果找到了對象,則將它從它在列表中的當(dāng)前位置移動到該列表的頭部以實(shí)現(xiàn)LRU算法。以這種方式,最頻繁存取的對象將趨向于移向列表的頭部,而最近最少使用的對象將移向尾部,并且最終從該列表中被丟棄。
上述名稱查找高速緩存和LRU實(shí)現(xiàn)在現(xiàn)代大型對稱多處理器計(jì)算機(jī)中呈現(xiàn)出嚴(yán)重的性能問題。尤其是,LRU算法通過將對象移動到高速緩存列表的頭部來實(shí)現(xiàn),因此,對于新對象的每次高速緩存命中或者插入來說,都必須修改集合的列表錨(anchor)以指向新的列表頭對象。由于現(xiàn)代存儲器設(shè)計(jì)的各種特征,被頻繁修改的全局?jǐn)?shù)據(jù)在通過LRU算法組織起來的名稱查找高速緩存中呈現(xiàn)出了嚴(yán)重的性能抑制。
設(shè)計(jì)出一種解決現(xiàn)有技術(shù)中的一些缺點(diǎn)、用于在查找高速緩存中保持對象的方法和系統(tǒng)是所期望的。
發(fā)明內(nèi)容
因此,本發(fā)明提供了一種用于在查找高速緩存中保持對象的方法、計(jì)算機(jī)程序產(chǎn)品、和數(shù)據(jù)處理系統(tǒng)。主列表中包含有第一多個對象。主列表是第一多個對象的無序列表。次列表中包含有第二多個對象。次列表是第二多個對象的有序列表。定期地,將第一多個對象中的至少一個對象降級到次列表中,并且將第二多個對象中的至少一個對象升級到主列表中。
與傳統(tǒng)的查找高速緩存實(shí)現(xiàn)相比,所要求保護(hù)的、將查找高速緩存組織成主次列表的處理可能導(dǎo)致對被高速緩存的對象列表的較不頻繁的更新。
現(xiàn)在將參考附圖描述僅僅作為示例的、本發(fā)明的優(yōu)選實(shí)施例,在附圖中圖1是其中可以實(shí)現(xiàn)本發(fā)明的優(yōu)選實(shí)施例的數(shù)據(jù)處理系統(tǒng)的圖示;圖2是其中可以實(shí)現(xiàn)本發(fā)明的優(yōu)選實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖;
圖3A是諸如目錄名查找高速緩存或者文件高速緩存之類的、如傳統(tǒng)上那樣包含鏈表數(shù)據(jù)結(jié)構(gòu)的高速緩存的示意圖;圖3B是如傳統(tǒng)上那樣、在調(diào)用或者請求對象304之后由LRU算法組織起來的鏈表300的示意圖;圖4A是根據(jù)本發(fā)明的優(yōu)選實(shí)施例實(shí)現(xiàn)的、包含主列表和次列表的高速緩存系統(tǒng);圖4B是圖4A中的高速緩存系統(tǒng)的示意圖,其示出了在次列表的高速緩存命中之后該高速緩存系統(tǒng)的重新組織;圖4C是在所請求對象的全局檢索之后、圖4A和4B所示的高速緩存系統(tǒng)的示意圖;圖4D是根據(jù)本發(fā)明的優(yōu)選實(shí)施例實(shí)現(xiàn)的、在定期的高速緩存更新之后圖4A-4C中的高速緩存系統(tǒng)的示意圖;以及圖5是根據(jù)本發(fā)明的優(yōu)選實(shí)施例實(shí)現(xiàn)的、由高速緩存系統(tǒng)執(zhí)行的用于返回所請求對象的處理的流程圖。
具體實(shí)施例方式
現(xiàn)在參考附圖并且特別參考圖1,根據(jù)本發(fā)明的優(yōu)選實(shí)施例描述了其中可以實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的圖示。所描述的計(jì)算機(jī)100包括系統(tǒng)單元102、視頻顯示終端104、鍵盤106、可包括軟盤驅(qū)動器及其他類型的永久和可移動存儲介質(zhì)的存儲設(shè)備108、以及鼠標(biāo)110。個人計(jì)算機(jī)100可以包括另外的輸入設(shè)備,諸如例如操縱桿、觸墊、觸摸屏、跟蹤球、麥克風(fēng)等??梢允褂萌魏芜m當(dāng)?shù)挠?jì)算機(jī),諸如作為位于紐約阿芒克(Armonk)的國際商業(yè)機(jī)器公司的產(chǎn)品的IBMeServer計(jì)算機(jī)或者IntelliStation計(jì)算機(jī),來實(shí)現(xiàn)計(jì)算機(jī)100。雖然所描述的表示示出了計(jì)算機(jī),但是本發(fā)明的其它實(shí)施例可以用諸如網(wǎng)絡(luò)計(jì)算機(jī)之類的其它類型數(shù)據(jù)處理系統(tǒng)實(shí)現(xiàn)。計(jì)算機(jī)100優(yōu)選為還包括圖形用戶接口(GUI),其可以借助于在計(jì)算機(jī)100內(nèi)操作的、駐留在計(jì)算機(jī)可讀介質(zhì)中的系統(tǒng)軟件實(shí)現(xiàn)。
參見圖2,其中依據(jù)本發(fā)明的優(yōu)選實(shí)施例描述了諸如圖1中的數(shù)據(jù)處理系統(tǒng)100之類的數(shù)據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)200可以是包括多個連接到系統(tǒng)總線206的處理器202和204在內(nèi)的對稱多處理器(SMP)系統(tǒng)。做為選擇,也可以使用單處理器系統(tǒng)。存儲器控制器/高速緩存208也連接到系統(tǒng)總線206,并且提供了到本地存儲器209的接口。I/O總線橋接器210連接到系統(tǒng)總線206,并且提供了到I/O總線212的接口。如所描述的那樣,存儲器控制器/高速緩存208和I/O總線橋接器210可以集成在一起。
連接到I/O總線212的外圍部件互連(PCI)總線橋接器214提供了到PCI本地總線216的接口。多個調(diào)制解調(diào)器可以連接到PCI本地總線216。典型的PCI總線實(shí)現(xiàn)將支持四個PCI擴(kuò)展槽或者內(nèi)插(add-in)連接器。可以通過經(jīng)由內(nèi)插連接器連接到PCI本地總線216的調(diào)制解調(diào)器218和網(wǎng)絡(luò)適配器220提供到圖1中的客戶端108-112的通信鏈路。
附加的PCI總線橋接器222和224提供了用于附加PCI本地總線226和228的接口,通過它們可以支持附加的調(diào)制解調(diào)器或者網(wǎng)絡(luò)適配器。用這樣的方式,數(shù)據(jù)處理系統(tǒng)200允許連接到多個網(wǎng)絡(luò)計(jì)算機(jī)。如所描述的那樣,存儲映像的圖形適配器230和硬盤232也可以直接或者間接地連接到I/O總線212。
本領(lǐng)域的普通技術(shù)人員將會理解圖2所描述的硬件可以發(fā)生改變。例如,除描述的硬件之外,或者作為對它們的替代,還可以使用諸如光盤驅(qū)動器等之類的其他外圍設(shè)備。所描述的示例不意味著暗含對本發(fā)明的結(jié)構(gòu)限制。
圖2所述的數(shù)據(jù)處理系統(tǒng)可以是例如作為紐約Armonk的國際商業(yè)機(jī)器公司的產(chǎn)品的、運(yùn)行高級交互執(zhí)行體(AIX)操作系統(tǒng)或者LINUX操作系統(tǒng)的IBM eServer pSeries系統(tǒng)。
本發(fā)明提供了一種可以減少對高速緩存系統(tǒng)的更新頻率的高速緩存系統(tǒng)。此處被稱為主列表和次列表的兩個具有固定大小的不同的高速緩存列表最初是空的。當(dāng)將對象添加到高速緩存中時,將它們插入到次列表的頭部。按照預(yù)定的間隔,通過將一些對象從次列表移動到主列表來更新該高速緩存列表。因?yàn)楦咚倬彺媪斜砭哂泄潭ù笮?,所以在高速緩存更新期間,有相等數(shù)目的對象從主列表移動到次列表。除高速緩存更新之外,不改變主列表的錨,因此主列表包含無序?qū)ο?。由LRU算法將次列表保持為有序列表。
圖3A是諸如目錄名查找高速緩存或者文件高速緩存之類的、包含如傳統(tǒng)上那樣配置的鏈表數(shù)據(jù)結(jié)構(gòu)的查找高速緩存的示意圖。鏈表300包含多個由最近最少使用算法組織起來的對象302-305。對象302-305每個都具有相關(guān)聯(lián)的鏈接306-309。查找高速緩存包含引用鏈表300的錨310或者句柄(handle)。例如,錨310可以是包含鏈表300的頭部或者第一對象的地址的指針。鏈接306-308包含鏈表300中的下一對象的指針或者地址。尾部對象305包含鏈表300中的最后對象,而且相關(guān)聯(lián)的鏈接309包含空指針,以指定對象305作為鏈表300中的最后對象。因此,鏈表300包含邏輯上有序的列表,其具有在該列表頭部的對象302,并且對象303-305從鏈表300的第二到最后對象順序排列。
LRU算法按照某一組織結(jié)構(gòu)保持對象302-305,以便將最近請求的對象定位于鏈表300的頭部,而將最近最少請求的對象保持為鏈表300的尾部。根據(jù)相關(guān)聯(lián)對象的相應(yīng)請求次序,在鏈表300中定位在鏈表300的頭部和尾部之間的中間對象。因此,在圖3A的示例中,對象302是最近請求的對象,并且被定位為鏈表300的頭部。對象305是最近最少請求的對象,并且被定位為鏈表300的尾部。因此,從最近請求的對象到最近最少請求的對象在鏈表300中定位對象302-305。
圖3B是如傳統(tǒng)上那樣、在調(diào)用或者請求對象304之后由LRU算法組織起來的鏈表300的示意圖。LRU算法根據(jù)鏈表中的對象被請求的次序來修改鏈表300的組織結(jié)構(gòu)。在說明性示例中,請求了對象304,而且LRU修改該鏈表,以正確地指示對象304當(dāng)前是最近使用的對象。例如,LRU算法可以通過將對象304的地址寫入到錨中,并因此通過將對象304定位為頭部對象來配置該鏈表,從而把錨310修改為引用對象304。另外,修改與對象304相關(guān)聯(lián)的鏈接308,以正確地引用先前的頭部對象。在該說明性示例中,由LRU算法修改鏈接308,以指向?qū)ο?02,其中該對象302在請求或?qū)ο?04之前被定位為鏈表300的頭部。另外,修改與對象303相關(guān)聯(lián)的鏈接307,以指向尾部對象305。
當(dāng)請求的對象不位于查找高速緩存中時,可以例如通過文件管理系統(tǒng)執(zhí)行全局搜索。如果全局地定位了所請求的對象,則將該對象返回到提出請求的實(shí)體,并且將其插入為鏈表300的頭部對象。因此,如果在鏈表300內(nèi)沒有剩余額外的容量用于對象,則丟棄尾部對象305。如上面參考圖3B所述的那樣,要求類似的對鏈表300的更新。
在本發(fā)明的優(yōu)選實(shí)施例中,錨可以包含兩個指針,或者作為兩個錨的一種實(shí)現(xiàn)方式,其分別指向此處被稱為是主列表和次列表的兩個不同的高速緩存列表。每個列表具有固定的大小而且最初是空的。當(dāng)將對象添加到高速緩存中時,將這些對象插入到次列表的頭部。按照預(yù)定的間隔,通過將一些對象從次列表移動到主列表來更新這些高速緩存列表。因?yàn)楦咚倬彺媪斜砭哂泄潭ǖ拇笮。栽诟咚倬彺娓缕陂g,有相等數(shù)目的對象從主列表移動到次列表。除高速緩存更新之外,不改變主列表的錨,因此主列表包含無序?qū)ο?。次列表由LRU算法保持為有序列表。
優(yōu)選為,基于對象在次列表中的次序來選擇在高速緩存更新中從次列表移動到主列表的對象(一個或多個)。特別而言,從次列表的頭部或者包括次列表頭部的連續(xù)對象集合中選擇被選擇用于從次列表升級到主列表的一個或者多個最近使用的對象??梢允褂酶鞣N參數(shù)或者判定標(biāo)準(zhǔn)中的任何一個來選擇將要在高速緩存更新期間從主列表降級到次列表的對象或者對象集合。例如,命中計(jì)數(shù)器可以用來積累對在主列表和/或次列表內(nèi)的對象的請求計(jì)數(shù)。按照預(yù)定的高速緩存更新間隔,可以選擇具有低于閾值的命中計(jì)數(shù)的一個或者多個對象用于降級到次列表。
做為選擇,可以選擇預(yù)定數(shù)目的、具有最小命中計(jì)數(shù)的對象用于降級到次列表。在又一個實(shí)施例中,高速緩存系統(tǒng)可以估算主列表中的對象的全部命中計(jì)數(shù),并且將它們與次列表中的對象的命中計(jì)數(shù)進(jìn)行比較。可以選擇主列表中的、命中計(jì)數(shù)小于次列表中的對象的命中計(jì)數(shù)的任何對象用于降級到次列表,而將次列表中的、命中計(jì)數(shù)超過主列表對象的命中計(jì)數(shù)的對象升級到主列表??梢赃m當(dāng)?shù)靥鎿Q用于選擇主列表中的對象以便降級到次列表的其它實(shí)現(xiàn)方式。
圖4A是根據(jù)本發(fā)明優(yōu)選實(shí)施例實(shí)現(xiàn)的高速緩存系統(tǒng)。該高速緩存系統(tǒng)包含主列表400和次列表410。主列表400包含一個或多個對象402-405,每個對象具有相應(yīng)的鏈接406-409。錨401引用主列表400。例如,錨401可以被實(shí)現(xiàn)為包含到對象402-405之一的地址的指針。在該說明性示例中,錨401包含到對象402的指針。鏈接406-408引用列表400內(nèi)相應(yīng)的對象。與對象405相關(guān)聯(lián)的鏈接409包含空值,以指示相關(guān)聯(lián)的對象405是主列表400的尾部對象。主列表400中的對象不是按照邏輯次序保持的。也就是說,LRU算法或者其它排序算法不保持列表400內(nèi)的對象402-405的次序。
另外,高速緩存系統(tǒng)包含次列表410,其包含對象412-415和相關(guān)聯(lián)的鏈接416-419。次列表410是包含頭部對象412、尾部對象415、以及位于它們之間的中間對象413和414的有序?qū)ο罅斜怼e^411包含通過指向被定位為次列表410的頭部的對象而指向次列表410的指針。在圖4A的說明性示例中,將對象412定位為頭部對象,并且將對象415定位為尾部對象,由此來配置次列表410。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,LRU或者其它適當(dāng)?shù)乃惴ū3指鶕?jù)它們相關(guān)聯(lián)的使用率而順序排序的對象412-415,以便使對象412-415在次列表410內(nèi)的位置對應(yīng)于這些對象被請求或者被使用的次序。具體而言,將次列表410的頭部對象保持為最近使用的對象,而使每個剩余的對象按照它們相關(guān)聯(lián)的使用率以遞減次序排序。
如上所述,主列表400中的對象不是根據(jù)任何使用率次序而被保持在列表400內(nèi)的。例如,假定對對象403進(jìn)行了請求。本發(fā)明的高速緩存系統(tǒng)首先搜索主列表400,以確定所請求的對象是否被保持在主列表400中。如果所請求的對象存儲在主列表400中,則將該所請求的對象返回到提出請求的實(shí)體、例如應(yīng)用或者文件系統(tǒng)。由于從主列表400中檢索到所請求的對象,所以不執(zhí)行對主列表的更新。
為了說明的目的,假定發(fā)出了對對象414的請求。高速緩存系統(tǒng)首先搜索主列表400,并且確定所請求的對象沒有存儲在主列表400中。高速緩存系統(tǒng)然后繼續(xù)搜索次列表410。在該說明性示例中,將對象414返回到提出請求的實(shí)體。另外,對次列表進(jìn)行更新,以正確地包含對象的根據(jù)其使用率的遞減次序。因此,如圖4B中根據(jù)本發(fā)明的優(yōu)選實(shí)施例實(shí)現(xiàn)的高速緩存系統(tǒng)的示意圖所示,高速緩存系統(tǒng)將指向次列表410的頭部對象的錨411修改為指向最近請求的對象414。另外,將與對象414相關(guān)聯(lián)的鏈接418修改為指向先前的頭部對象412,該對象現(xiàn)在被降級為次列表410中的第二高的、或者次最近使用的對象。同樣地,將鏈接417修改為指向尾部對象415。因此,更新次列表410以按照對象相關(guān)聯(lián)的使用率的遞減次序來保持對象的順序排序。在圖4B的說明性示例中,對象414邏輯上被定位為頭部對象,這表明對象414是次列表410內(nèi)最近使用的對象。根據(jù)對象的使用率,以遞減次序配置對象412、413、和415。
現(xiàn)在假定請求了一個既不位于主列表400中又不位于次列表410中的對象。高速緩存系統(tǒng)在搜索了主列表和次列表之后可能試圖進(jìn)行所請求對象的全局定位。例如,該高速緩存系統(tǒng)可以與文件管理系統(tǒng)或者其它試圖檢索所請求對象的適當(dāng)應(yīng)用進(jìn)行接口。如果全局地獲得了所請求的對象,則將該所請求對象返回到提出請求的實(shí)體。另外,通過將該全局檢索的對象添加到次列表410中來更新該高速緩存系統(tǒng)。具體而言,將該全局檢索的對象作為頭部對象添加到次列表410中,并且從次列表410中丟棄該次列表410中先前的尾部對象。
圖4C是根據(jù)本發(fā)明的優(yōu)選實(shí)施例、在對所請求對象進(jìn)行全局檢索之后、如圖4A和4B所示的高速緩存系統(tǒng)的示意圖。在該說明性示例中,假定所請求的對象(其被說明性地指定為object_X)不位于主列表400和次列表410中,而且后續(xù)的全局搜索產(chǎn)生了該所請求對象的位置。將全局檢索的對象返回到提出請求的實(shí)體,并且將其作為頭部對象插入到次列表410中。在該說明性示例中,對象421是全局檢索的對象,而且其被插入到次列表410中。將錨411修改為指向全局檢索的對象421。另外,將與對象421相關(guān)聯(lián)的鏈接422配置為指向先前的頭部對象414,并且將鏈接417修改為空指針,以指示相關(guān)聯(lián)的對象413是尾部對象。丟棄先前的尾部對象(圖4B中的對象415),以在次列表410內(nèi)提供足夠的容量用于新插入的對象421。
圖4D是根據(jù)本發(fā)明的優(yōu)選實(shí)施例實(shí)現(xiàn)的、在定期的高速緩存更新之后圖4A-4C中的高速緩存系統(tǒng)的示意圖。優(yōu)選為,按照預(yù)定的間隔執(zhí)行對高速緩存系統(tǒng)的更新。該高速緩存更新被設(shè)計(jì)為在有序的次列表和無序的主列表之間交換對象。優(yōu)選為,與次列表中的對象進(jìn)行交換的主列表中的對象與從次列表升級的對象相比更不頻繁地被使用。因此,主列表和/或次列表內(nèi)的對象的命中計(jì)數(shù)或者其它適當(dāng)?shù)臋C(jī)制可以用來評估是否在主次列表之間交換對象。圖4D是對高速緩存更新評估的說明,其中該評估產(chǎn)生了用于降級到次列表410的對象403和404的標(biāo)識、以及用于從次列表410升級到主列表400的對象414和421的標(biāo)識。在該說明性示例中,從主列表400移動到次列表410的對象403和404被定位在次列表410的較低端。其它實(shí)現(xiàn)方式可以將從主列表400降級的對象定位在次列表410的較高端,或者相反,可以基于可與次列表410的對象進(jìn)行比較的使用率度量或者其它參數(shù),在次列表410內(nèi)定位從主列表400降級的對象。
圖5是根據(jù)本發(fā)明的優(yōu)選實(shí)施例實(shí)現(xiàn)的、由查找高速緩存執(zhí)行來用于定位所請求對象的處理的流程圖。優(yōu)選為,將查找高速緩存處理例程實(shí)現(xiàn)為計(jì)算機(jī)可讀指令集,該指令集例如從本地存儲器209中讀取,并且由諸如處理器202或者204之類的處理單元執(zhí)行。初始化該例程(步驟502),并且等待接收對對象的請求(步驟504)。響應(yīng)于對對象請求的接收,然后對主列表執(zhí)行對所請求對象的搜索(步驟506)。進(jìn)行評估,以確定所請求的對象是否位于主列表中(步驟508)。如果所請求的對象位于主列表中,則該例程將該對象返回到提出請求的實(shí)體(步驟510),并且隨后進(jìn)行評估以確定是否繼續(xù)該例程(步驟512)。如果例程要繼續(xù),則處理返回到步驟504以等待接收下一個對象請求。如果確定要退出該例程,則高速緩存查例程繼續(xù)以便退出(步驟530)。
再次返回到步驟508,如果所請求的對象不位于主列表中,則該例程繼續(xù)搜索次列表,并且評估所請求的對象是否位于次列表中(步驟514)。如果所請求的對象位于次列表中,則高速緩存查找例程返回所請求的對象(步驟516),并且將該對象移動到次列表的頭部(步驟518),然后例程繼續(xù)到步驟512,以評估該高速緩存查找例程是否要繼續(xù)。
如果在步驟514中確定對象不位于次列表中,則執(zhí)行全局搜索,并且進(jìn)行評估以確定所請求的對象是否被全局地定位(步驟520)。如果該對象被全局地定位,則將所請求的對象返回到提出請求的實(shí)體(步驟522)。然后丟棄該次列表的尾部對象(步驟524),并且將全局檢索的對象作為新的頭部對象添加到次列表中(步驟526)。高速緩存查找例程然后返回到步驟512,以評估是否要執(zhí)行附加的處理。如果在步驟520中未全局地定位該對象,則可以向提出請求的實(shí)體返回錯誤消息,并且該例程繼續(xù)到步驟512,以評估是否要執(zhí)行附加的處理。
因此,提供了一種優(yōu)化的查找高速緩存,其具有可以減少高速緩存更新頻率的優(yōu)化的LRU功能。具體而言,該查找高速緩存包括由無序?qū)ο髽?gòu)成的主列表和由有序?qū)ο髽?gòu)成的次列表。執(zhí)行定期的更新,以便將對象從次列表升級到主列表,以及將對象從主列表降級到次列表。通過定期地將次列表中最頻繁使用的對象移到主列表中,主列表將趨向于保持最頻繁使用的對象。從主列表中檢索對象不會導(dǎo)致修改或者改變,這是因?yàn)橹髁斜硎菬o序的。因此,與傳統(tǒng)的查找高速緩存系統(tǒng)相比,該查找高速緩存可以經(jīng)受較不頻繁的更新。
重要的是要注意到雖然已經(jīng)在完全發(fā)揮作用的數(shù)據(jù)處理系統(tǒng)的上下文環(huán)境中描述了本發(fā)明,但是本領(lǐng)域的普通技術(shù)人員將會理解,本發(fā)明的處理能夠以指令的計(jì)算機(jī)可讀介質(zhì)的形式以及以各種形式分發(fā),而且可以同樣地應(yīng)用本發(fā)明而與實(shí)際上用于執(zhí)行分發(fā)的信號承載介質(zhì)的具體類型無關(guān)。計(jì)算機(jī)可讀介質(zhì)的示例包括諸如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、DVD-ROM之類的可記錄型介質(zhì),以及諸如數(shù)字和模擬通信鏈路、使用諸如例如射頻和光波傳輸之類的傳輸形式的有線或無線通訊鏈路之類的傳輸型介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以采用編碼格式的形式,可以對該編碼格式進(jìn)行解碼以用于特定數(shù)據(jù)處理系統(tǒng)中的實(shí)際使用。
已經(jīng)為了說明和描述的目的給出了本發(fā)明的描述,并且其不是窮舉的,也不打算以所公開的形式限制本發(fā)明。對于本領(lǐng)域的普通技術(shù)人員來說,許多修改和變化將會是顯而易見的。選擇和描述這些實(shí)施例是為了最好地說明本發(fā)明的原理、實(shí)際應(yīng)用,并且允許本領(lǐng)域的其它普通技術(shù)人員理解本發(fā)明的具有各種修改以適合于所考慮的特定使用的各種實(shí)施例。
權(quán)利要求
1.一種在查找高速緩存中保持對象的方法,包含用第一多個對象填充主列表,其中主列表是第一多個對象的無序列表;用第二多個對象填充次列表,其中次列表是第二多個對象的有序列表;以及定期地將第一多個對象中的至少一個對象降級到次列表中;以及將第二多個對象中的至少一個對象升級到主列表中。
2.如權(quán)利要求1所述的方法,還包含響應(yīng)于接收到對第一對象的請求,在主列表中搜索第一對象。
3.如權(quán)利要求2所述的方法,還包含響應(yīng)于對第一對象沒有被包括在主列表中的確定,在次列表中搜索第一對象。
4.如權(quán)利要求3所述的方法,還包含響應(yīng)于對第一對象位于次列表中的確定,修改該次列表,以便將該第一對象定位為次列表的頭部對象。
5.如權(quán)利要求3所述的方法,還包含響應(yīng)于對第一對象不位于次列表中的確定,執(zhí)行對第一對象的全局搜索;以及響應(yīng)于通過全局搜索對第一對象的定位,修改該次列表,以便將該第一對象定位為次列表的頭部對象。
6.如權(quán)利要求1所述的方法,其中,所述第二多個對象中的至少一個對象包含次列表的頭部對象。
7.如權(quán)利要求1所述的方法,其中,第一多個對象中的至少一個對象被標(biāo)識為比第二多個對象中的至少一個對象更不經(jīng)常被使用。
8.一種計(jì)算機(jī)可讀介質(zhì)中的、用于管理查找高速緩存的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包含用于執(zhí)行權(quán)利要求1到7中任何一項(xiàng)中的步驟的程序代碼。
9.一種數(shù)據(jù)處理系統(tǒng),包括存儲器,包含指令集以及查找高速緩存,該查找高速緩存包含具有第一多個無序?qū)ο蟮牡谝粩?shù)據(jù)結(jié)構(gòu)以及具有第二多個有序?qū)ο蟮牡诙?shù)據(jù)結(jié)構(gòu);以及處理單元,響應(yīng)于對所述指令集的執(zhí)行,定期地將第一多個對象中的至少一個對象從主列表降級到次列表,以及將第二多個對象中的至少一個對象從次列表升級到主列表。
10.如權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu)每個都包含相應(yīng)的鏈表數(shù)據(jù)結(jié)構(gòu)。
11.如權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,處理單元是多個處理單元之一,其中所述多個處理單元中的每一個都能訪問該查找高速緩存。
12.如權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,所述指令集包括用于對第二多個對象進(jìn)行排序的最近最少使用算法。
13.如權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,所述處理單元響應(yīng)于接收到對第一對象的請求,在主列表中搜索第一對象,并且響應(yīng)于對第一對象不位于主列表中的確定,在次列表中搜索第一對象。
全文摘要
提供了一種用于在查找高速緩存中保持對象的方法、計(jì)算機(jī)程序產(chǎn)品、和數(shù)據(jù)處理系統(tǒng)。主列表中包含有第一多個對象。主列表是第一多個對象的無序列表。次列表中包含有第二多個對象。次列表是第二多個對象的有序列表。定期地,將第一多個對象中的至少一個對象降級到次列表,并且將第二多個對象中的至少一個對象升級到主列表。
文檔編號G06F12/12GK1934544SQ200580009604
公開日2007年3月21日 申請日期2005年5月18日 優(yōu)先權(quán)日2004年6月17日
發(fā)明者格雷格·米維尼, 米索爾·薩斯亞納拉亞納·斯里尼瓦斯 申請人:國際商業(yè)機(jī)器公司