專利名稱:用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)及其方法
技術(shù)領(lǐng)域:
一般來說,本發(fā)明涉及計(jì)算機(jī)系統(tǒng)存儲(chǔ)器管理系統(tǒng)的領(lǐng)域,具體來說,涉及可變大小存儲(chǔ)器分區(qū)和分配。
背景技術(shù):
在過去的幾十年中,計(jì)算機(jī)越來越普及,并顯著地滲透到生活的主流中。隨著消費(fèi)者越來越多地使用,消費(fèi)者的信賴程度越來越強(qiáng),從而加強(qiáng)了對此信息門戶提供多樣化的功能的需求。隨著消費(fèi)者尋求更快的信息訪問,對信息的滿意度的周期時(shí)間不斷地縮短。當(dāng)今,在典型的實(shí)現(xiàn)方式中,信息以位和字節(jié)的形式存儲(chǔ)在設(shè)備的存儲(chǔ)器中,并用存儲(chǔ)器管理技術(shù)進(jìn)行檢索。隨著對信息的需求在較短的時(shí)間持續(xù)擴(kuò)大,對存儲(chǔ)器管理的需求在重要性方面越來越強(qiáng)。
在典型的現(xiàn)有存儲(chǔ)器管理方案中,存儲(chǔ)器被分區(qū)為叫做“緩沖區(qū)”的離散的區(qū)域,以供使用。所要求的信息從諸如硬盤、軟盤、磁帶及其他非易失性存儲(chǔ)器之類的輔助存儲(chǔ)器中檢索。在檢索數(shù)據(jù)之后,由于性能原因,在被覆蓋之前的一段時(shí)間內(nèi),它存儲(chǔ)或“緩存”在存儲(chǔ)器緩沖區(qū)中。讓最流行的數(shù)據(jù)緩存在常駐存儲(chǔ)器中或存儲(chǔ)器緩沖區(qū)中,可以使發(fā)出請求的應(yīng)用程序持續(xù)地使用數(shù)據(jù)。此外,與更快的但是比較昂貴的高速緩存或常駐存儲(chǔ)器相比,將數(shù)據(jù)保留在存儲(chǔ)器緩沖區(qū)或常駐存儲(chǔ)器中減少甚至消除了輔助存儲(chǔ)器輸入/輸出(I/O)操作和涉及輔助存儲(chǔ)器I/O的時(shí)間損失。存儲(chǔ)器分區(qū)的一種方法是使用虛擬存儲(chǔ)器管理器(VMM),它們將存儲(chǔ)器分為叫做“頁面”的基本塊。在典型的VMM中,這些頁面大小相同,單個(gè)的頁面用緩沖區(qū)進(jìn)行緩存。VMM選擇了靜態(tài)頁面大小,以便于管理,這就導(dǎo)致大小對于文件系統(tǒng)或磁盤設(shè)備要求不一定是最佳。在典型的VMM實(shí)現(xiàn)方式中,多個(gè)頁面可以存儲(chǔ)在單一的緩沖區(qū)內(nèi)。當(dāng)被檢索的數(shù)據(jù)的大小不能均勻地在一個(gè)或許多VMM頁面之中分開和存儲(chǔ)時(shí),就會(huì)產(chǎn)生問題。這種情況可能導(dǎo)致奇數(shù)的只是部分地填充的利用整個(gè)靜態(tài)頁面存儲(chǔ)器分配的頁面。當(dāng)奇數(shù)頁要求使用更多的緩沖區(qū)時(shí),或者如果頁面的數(shù)量不能均勻地在緩沖區(qū)大小之中分開和存儲(chǔ),從而使存儲(chǔ)器分配效率更加低時(shí),問題變得更加嚴(yán)重。
緩沖區(qū)可以以各種大小進(jìn)行管理,相似大小的緩沖區(qū)可以分到組和子組中。對特定大小的緩沖區(qū)的請求可以從該相同大小的一組緩沖區(qū)來得到滿足。如果沒有滿足請求的大小的緩沖區(qū),必須進(jìn)行其他操作,以將較大的緩沖區(qū)分離或?qū)⑤^小的緩沖區(qū)加入到適當(dāng)大小的緩沖區(qū)中。
分離或聯(lián)合緩沖區(qū)的其他開銷具有其自己的設(shè)計(jì)選擇集。其中,破碎和聯(lián)合和分離緩沖區(qū)的損失以及對組成用戶的影響是最重要的事。由于這些原因,良好的設(shè)計(jì)選擇試圖確保,存儲(chǔ)器緩沖區(qū)請求可以主要在與請求大小相同的緩沖區(qū)的子組內(nèi)進(jìn)行滿足。
當(dāng)發(fā)出請求的應(yīng)用程序要求從輔助存儲(chǔ)器中提供更多數(shù)據(jù)而所有緩沖區(qū)都在使用中時(shí),就要作出關(guān)鍵的緩沖決策。對于需求的新數(shù)據(jù),應(yīng)該使用哪一個(gè)緩沖區(qū),通常,哪一個(gè)緩沖區(qū)應(yīng)該用新數(shù)據(jù)來覆蓋?主流存儲(chǔ)器管理理論將這種情況叫做更換策略。這種覆蓋緩存或存儲(chǔ)器緩沖區(qū)存儲(chǔ)的數(shù)據(jù)的過程在當(dāng)前技術(shù)中叫做“緩沖區(qū)竊用”。存在不同的決策算法,并從所使用的更換方法的類型中取它們的名稱。例如,有多個(gè)常用的算法,如“最近最少使用的”(LRU)、“最不常用的”(LFU),以及“最近使用的”(MRU)。具體來說,請看LRU算法,如其名稱所暗示的,當(dāng)需求新的緩沖區(qū)時(shí),為替換所選擇的緩沖區(qū)是在最長的時(shí)段沒有被訪問的其中一個(gè)。
雖然LRU、LFU和MRU這些技術(shù)單獨(dú)使用或組合起來使用對于判斷竊用哪一個(gè)緩沖區(qū)很有用,以便最小化重新讀取替換的數(shù)據(jù)的必要性,但是,這些技術(shù)不是沒有缺點(diǎn)。一個(gè)缺點(diǎn)是,不管選擇的標(biāo)準(zhǔn)是什么,緩沖區(qū)竊用的目標(biāo)是將重新讀取替換的數(shù)據(jù)的必要性降低到最低程度。例如,被竊用的并且其數(shù)據(jù)被寫入到輔助存儲(chǔ)器的緩沖區(qū)實(shí)際上可以立即由應(yīng)用程序重新訪問,這樣就會(huì)產(chǎn)生新的緩沖區(qū)竊用并從輔助存儲(chǔ)器中重新讀取以前高速緩存數(shù)據(jù)。相應(yīng)地,需要判斷存儲(chǔ)器緩沖區(qū)中的一些東西已經(jīng)扔出了多長時(shí)間,以優(yōu)化給定組中的緩沖區(qū)和緩沖區(qū)大小,以便最小化重新訪問或從輔助存儲(chǔ)器將數(shù)據(jù)重新讀取回存儲(chǔ)器緩沖區(qū)的次數(shù)。
此外,單獨(dú)使用LRU、LFU、MRU不會(huì)有助于緩沖區(qū)大小判斷和分配。例如,常?;谔俚男畔G棄或竊用頁面,如LRU,其中,所使用的決策信息是從最后一次訪問以來最大的時(shí)間間隔。系統(tǒng)不能在不消耗大量的有價(jià)值的系統(tǒng)資源的情況下區(qū)別具有很少的訪問的緩沖區(qū)與沒有訪問的緩沖區(qū)而將使用的很少訪問的緩沖區(qū)保留在存儲(chǔ)器中。提供不同大小的緩沖區(qū)并將這些各種大小的緩沖區(qū)分到子組中的存儲(chǔ)器管理系統(tǒng)必須平衡對一樣大小的緩沖區(qū)的需求和對不同大小的緩沖區(qū)的需求。最佳平衡算法將只竊用在不久的將來不會(huì)再次使用的緩沖區(qū)。這可能意味著,可能需要在適當(dāng)大小的緩沖區(qū)的子組內(nèi)竊用就足夠了,或從較大的緩沖區(qū)中竊用并分離,或從較小的緩沖區(qū)竊用并組合。
因此,有必要克服如上文所討論的現(xiàn)有技術(shù)所存在的缺點(diǎn),并提供優(yōu)化竊用事件和分配各種大小的緩沖區(qū)存儲(chǔ)器的系統(tǒng)和方法。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供了通過竊用歷史平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)和方法。系統(tǒng)包括分區(qū)為多個(gè)子組的存儲(chǔ)器,每一個(gè)子組都包含一個(gè)或多個(gè)相似大小的緩沖區(qū)。系統(tǒng)進(jìn)一步包括具有存儲(chǔ)器管理器的控制器。
存儲(chǔ)器管理器用于響應(yīng)接收對將接收到的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中的請求,標(biāo)識緩沖區(qū);通過將標(biāo)識的緩沖區(qū)的高速緩存數(shù)據(jù)存儲(chǔ)在輔助存儲(chǔ)器中來竊用標(biāo)識的緩沖區(qū);創(chuàng)建緩沖區(qū)竊用歷史記錄。緩沖區(qū)竊用歷史記錄包括用于標(biāo)識高速緩存數(shù)據(jù)的輔助存儲(chǔ)器的唯一標(biāo)識符,并響應(yīng)接收到隨后的對緩沖區(qū)的請求以存儲(chǔ)第二個(gè)接收到的數(shù)據(jù),使用緩沖區(qū)竊用歷史記錄來標(biāo)識對高速緩存數(shù)據(jù)的任何重新訪問。此外,第二個(gè)接收到的數(shù)據(jù)包括高速緩存數(shù)據(jù),并使用緩沖區(qū)竊用歷史記錄以平衡緩沖區(qū)子組之間分區(qū)的存儲(chǔ)器。
附圖(其中,相同的參考數(shù)字在各個(gè)單獨(dú)的視圖中表示完全相同或功能上相似的元素)與下面的詳細(xì)描述一起,包括在說明書中并構(gòu)成說明書的一部分,用于進(jìn)一步顯示各種實(shí)施例并說明根據(jù)本發(fā)明的各種原理和所有優(yōu)點(diǎn)。
下面將通過附圖中顯示的示范性實(shí)施例(但不作出限制)來對本發(fā)明進(jìn)行描述,其中,相同的參考符號表示相似的元素,其中圖1是根據(jù)本發(fā)明的平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)的電子方框圖。
圖2顯示了根據(jù)本發(fā)明的圖1的用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)內(nèi)使用的緩沖區(qū)竊用歷史隊(duì)列。
圖3到5是顯示根據(jù)本發(fā)明的圖1的用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)的操作的各種實(shí)施例的流程圖。
圖6是根據(jù)本發(fā)明的示范性實(shí)施例的使用圖1的緩沖區(qū)的計(jì)算機(jī)處理節(jié)點(diǎn)的方框圖。
具體實(shí)施例方式
根據(jù)需要,這里說明了本發(fā)明的詳細(xì)實(shí)施例;然而,應(yīng)該理解,所說明的實(shí)施例只是本發(fā)明的示范,本發(fā)明可以以各種形式來實(shí)現(xiàn)。因此,這里所說明的特定結(jié)構(gòu)和功能細(xì)節(jié)不應(yīng)解釋為限制性的,而是作為權(quán)利要求的基礎(chǔ),并作為告訴精通本技術(shù)的人員在任何適當(dāng)詳細(xì)的結(jié)構(gòu)中應(yīng)用本發(fā)明的典型的基礎(chǔ)。此外,這里所使用的術(shù)語和句子不是限制性的;而是提供對本發(fā)明的可理解的說明。
這里所使用的術(shù)語“a”或“an”被定義為一個(gè)或多個(gè)。這里所使用的術(shù)語“多個(gè)”被定義為兩個(gè)或更多。這里所使用的術(shù)語“另一個(gè)”被定義為至少第二個(gè)或更多。這里所使用的術(shù)語“包括和/或具有”被定義為包括(即,公開語言)。這里所使用的術(shù)語“耦合”,被定義為連接,雖然不一定是直接的,也不一定是機(jī)械的。這里所使用的術(shù)語“程序”、“軟件應(yīng)用程序”,被定義為計(jì)算機(jī)系統(tǒng)上執(zhí)行而設(shè)計(jì)的指令序列。程序、計(jì)算機(jī)程序或軟件應(yīng)用程序可以包括子例程、功能、過程、對象方法、對象實(shí)現(xiàn)方式、可執(zhí)行應(yīng)用程序、小程序、servlet、源代碼、目標(biāo)代碼、目標(biāo)代碼、共享庫/動(dòng)態(tài)負(fù)載庫和/或?yàn)樵谟?jì)算機(jī)系統(tǒng)上執(zhí)行而設(shè)計(jì)的其他指令序列。
本發(fā)明提供了在競爭的數(shù)據(jù)緩沖區(qū)大小之間平衡存儲(chǔ)器分配的設(shè)備和方法。該方法利用歷史隊(duì)列提供了存儲(chǔ)器管理決定清晰度的更大深度。那些精通相關(guān)技術(shù)的普通人員將知道,本發(fā)明特別適用于可變大小分區(qū)單元對于文件系統(tǒng)的管理。具體來說,文件系統(tǒng)可以為元數(shù)據(jù)和用戶數(shù)據(jù)利用許多不同大小的單元,使用一樣的大小可能需要縮小不同大小的的單元的數(shù)量。本發(fā)明主要涉及可變大小存儲(chǔ)器分區(qū),具體來說,涉及不同大小的文件系統(tǒng)存儲(chǔ)器(也稱為文件系統(tǒng)緩沖區(qū))請求之間的存儲(chǔ)器的平衡。
圖1是根據(jù)本發(fā)明的用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)100的電子方框圖。如圖1所示,優(yōu)選情況下,用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)100包括控制器105??刂破?05接收信息并向這里所描述的系統(tǒng)100的各種操作組件發(fā)送命令。為執(zhí)行示范性系統(tǒng)100的必需的功能,控制器105連接到存儲(chǔ)器110。
控制器105包括存儲(chǔ)器管理器115,用于提供存儲(chǔ)器110的各個(gè)部分的管理。存儲(chǔ)器管理器115執(zhí)行各個(gè)程序步驟,并進(jìn)一步利用存儲(chǔ)器110內(nèi)存儲(chǔ)的數(shù)據(jù)。存儲(chǔ)器管理器115可以在制造過程中硬編碼或編程到控制器105中,可以在客戶預(yù)訂時(shí)在空中預(yù)定,或者,也可以是可下載的應(yīng)用程序。那些精通相關(guān)技術(shù)的普通人員將知道,可以使用其他編程方法來對存儲(chǔ)器管理器115進(jìn)行編程。那些精通相關(guān)技術(shù)的普通人員將理解,根據(jù)本發(fā)明,存儲(chǔ)器管理器115可以位內(nèi)控制器105,也可以位于控制器105外部。
例如,存儲(chǔ)器110可以包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM),和/或電可擦可編程只讀存儲(chǔ)器(EEPROM)(未顯示)、flash存儲(chǔ)器或等效物。可以從任何機(jī)械、電的、光學(xué)、磁鐵、有機(jī)和無機(jī)存儲(chǔ)器結(jié)構(gòu)或其任何組合建立其他存儲(chǔ)器110。存儲(chǔ)器110包括用于存儲(chǔ)各種類型的數(shù)據(jù)的多個(gè)緩沖區(qū)120。優(yōu)選情況下,多個(gè)緩沖區(qū)120被分區(qū)為離散的區(qū)域,以供使用。例如,如許多虛擬存儲(chǔ)器管理器所進(jìn)行的,多個(gè)緩沖區(qū)120可以被分區(qū)為諸如所顯示的子組125和子組130之類的一個(gè)或多個(gè)子組。優(yōu)選情況下,每一個(gè)子組(125、130)包括可變大小的分區(qū)單元。這些可變大小單元可以是存儲(chǔ)器管理器分區(qū)的基本方面或從諸如VMM頁面之類的較小的基本塊的組構(gòu)建。無論如何,可變的大小分區(qū)單元被當(dāng)做關(guān)于其管理和它包含的數(shù)據(jù)的單一的實(shí)體。優(yōu)選情況下,每一個(gè)子組都包括一個(gè)或多個(gè)相似大小的緩沖區(qū)(135、140)。
例如,子組125中的所有緩沖區(qū)135都是一個(gè)大小,子組130的所有緩沖區(qū)140都是另一個(gè)大小。通過對單獨(dú)的子組內(nèi)的相似大小的緩沖區(qū)進(jìn)行分組,對特定大小的緩沖區(qū)的請求可以從該相同大小的一組緩沖區(qū)來得到滿足。如果沒有滿足請求的大小的緩沖區(qū),必須進(jìn)行其他操作,以將較大的緩沖區(qū)分離或?qū)⑤^小的緩沖區(qū)加入到適當(dāng)大小的緩沖區(qū)中。
分離或聯(lián)合緩沖區(qū)的其他開銷具有其自己的設(shè)計(jì)選擇集。其中,破碎和聯(lián)合和分離緩沖區(qū)的損失以及對組成用戶的影響是最重要的事。由于這些原因,良好的設(shè)計(jì)選擇應(yīng)該試圖確保,存儲(chǔ)器緩沖區(qū)請求可以主要在與請求大小相同的緩沖區(qū)的子組內(nèi)進(jìn)行滿足。
優(yōu)選情況下,緩沖區(qū)竊用歷史隊(duì)列145存儲(chǔ)在存儲(chǔ)器110內(nèi)。緩沖區(qū)竊用歷史隊(duì)列145提供了涉及對多個(gè)緩沖區(qū)120的各種操作的記錄的存儲(chǔ)。例如,當(dāng)為替換選擇了緩沖區(qū)并竊用之后,記錄被插入到緩沖區(qū)竊用歷史記錄的循環(huán)隊(duì)列中。
圖2顯示了在根據(jù)本發(fā)明的圖1的用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)100內(nèi)使用的緩沖區(qū)竊用歷史隊(duì)列145。如圖所述,每一個(gè)歷史記錄(200,205)都包括唯一標(biāo)識符(210、215)、數(shù)據(jù)大小(220、225),以及記錄在它從其中竊用的緩沖區(qū)大小子組中的當(dāng)前序列號(230,235)。優(yōu)選情況下,唯一標(biāo)識符(210,215)作為其中寫入了緩沖區(qū)的數(shù)據(jù)的輔助存儲(chǔ)器的地址來計(jì)算。此輔助存儲(chǔ)器可以是硬盤、軟盤、磁帶或其他非易失性計(jì)算機(jī)可讀的介質(zhì)。當(dāng)前序列號(230,235)在每次從該子組中竊用緩沖區(qū)時(shí)每個(gè)子組序列號都會(huì)增大。
圖3是顯示根據(jù)本發(fā)明的圖1的用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)的操作的一個(gè)實(shí)施例的流程圖。具體來說,圖3顯示了在處理對緩沖區(qū)的請求時(shí)存儲(chǔ)器管理器115的操作。圖3的操作以存儲(chǔ)器管理器115將存儲(chǔ)器110分區(qū)開始。接下來,在步驟305中,存儲(chǔ)器管理器創(chuàng)建多個(gè)子組,每一個(gè)子組都具有在諸如子組(125,130)之類的組內(nèi)的相似大小的緩沖區(qū),如前面所描述的。接下來,在步驟310中,操作判斷存儲(chǔ)器管理器115是否接收到了對緩沖區(qū)的請求。當(dāng)沒有接收到請求時(shí),操作返回,并定期檢查這樣的對緩沖區(qū)的請求。在另一個(gè)實(shí)施例中,緩沖區(qū)請求是中斷驅(qū)動(dòng)的。
當(dāng)在步驟310中接收到對緩沖區(qū)的請求時(shí),操作繼續(xù)執(zhí)行步驟315,其中,存儲(chǔ)器管理器115重新使用已經(jīng)包含高速緩存數(shù)據(jù)的緩沖區(qū)來判斷是否滿足對緩沖區(qū)的請求。換句話說,滿足對緩沖區(qū)的請求可能需要替換當(dāng)前駐留在某些其他緩沖區(qū)中的高速緩存數(shù)據(jù)。當(dāng)在步驟315中檢測到緩沖區(qū)重新使用時(shí),操作繼續(xù)執(zhí)行步驟320,其中,所希望的緩沖區(qū)中的當(dāng)前組成數(shù)據(jù)被寫入到諸如磁盤驅(qū)動(dòng)器之類的輔助存儲(chǔ)器。概括起來說,這種對緩沖區(qū)的重新使用和將其以前高速緩存數(shù)據(jù)寫入到輔助存儲(chǔ)器中叫做“竊用緩沖區(qū)”。
有許多方法選擇要竊用的緩沖區(qū)。其中包括“最近最少使用的”、“最不常用的”和“最近使用的”,僅舉幾個(gè)例子而已。不管選擇的標(biāo)準(zhǔn)是什么,緩沖區(qū)竊用的目標(biāo)是將重新讀取替換的數(shù)據(jù)的必要性降低到最低程度。例如,被竊用的并且其數(shù)據(jù)被寫入到輔助存儲(chǔ)器的緩沖區(qū)實(shí)際上可以立即由應(yīng)用程序重新訪問,這樣就會(huì)產(chǎn)生新的緩沖區(qū)竊用并從輔助存儲(chǔ)器中重新讀取以前高速緩存數(shù)據(jù)。
本發(fā)明提供了每一個(gè)緩沖區(qū)大小的子組中的緩沖區(qū)的最佳平衡,以便滿足緩沖區(qū)請求的數(shù)量分離和連接的數(shù)量被最小化,竊用緩沖區(qū)最大限度地減少了重新讀取以前高速緩存數(shù)據(jù)的次數(shù)。
允許不同大小的緩沖區(qū)并將它們分到各種子組中的存儲(chǔ)器管理方案必須平衡對一樣大小的緩沖區(qū)的需求和對不同大小的緩沖區(qū)的需求。最佳平衡算法將只竊用在不久的將來不會(huì)再次使用的緩沖區(qū)。這可能意味著,可能需要在適當(dāng)大小的緩沖區(qū)的子組內(nèi)竊用就足夠了,或從較大的緩沖區(qū)中竊用并分離,或從較小的緩沖區(qū)竊用并組合。
這里是兩個(gè)緩沖區(qū)子組的示例。子組A包含256千字節(jié)緩沖區(qū),而子組B包含512個(gè)千字節(jié)緩沖區(qū)。子組A的當(dāng)前序列號為20,而子組B的序列號為5。在此示例中,我們按照從最近最少使用的(LRU)到最近使用的(MRU)的順序排列。
子組A(256K)子組B(512K)子組序列號#20 子組序列號#5(LRU)緩沖區(qū)1<唯一id 100> 緩沖區(qū)7<唯一id 481>
緩沖區(qū)2<唯一id 333>緩沖區(qū)8<唯一id 421>
(MRU)緩沖區(qū)3<唯一id 471> 緩沖區(qū)9<唯一id 472>
如果對256K緩沖區(qū)的新請求進(jìn)入系統(tǒng),那么,可以選擇子組A中的某一個(gè)緩沖區(qū)以重新使用。這里我們選擇了此隊(duì)列中的最近最少使用的緩沖區(qū),這是緩沖區(qū)1。如此從子組A中竊用緩沖區(qū)1,并重新使用,用于滿足新的緩沖區(qū)請求。
返回到圖3的操作,接下來,在步驟325中,創(chuàng)建新緩沖區(qū)竊用歷史記錄。接下來在步驟330中,新創(chuàng)建的緩沖區(qū)竊用歷史記錄被添加到緩沖區(qū)竊用歷史隊(duì)列145中。接下來,在步驟335中,其中竊用的緩沖區(qū)關(guān)聯(lián)的子組的每個(gè)子組序列號增大并存儲(chǔ)在新創(chuàng)建的緩沖區(qū)竊用歷史記錄內(nèi)。接下來,在步驟340中,新數(shù)據(jù)存儲(chǔ)在竊用的緩沖區(qū)內(nèi)。那么,操作返回到步驟310,并等待對緩沖區(qū)的新請求。如此,創(chuàng)建了緩沖區(qū)竊用歷史隊(duì)列。
圖4顯示了根據(jù)本發(fā)明的圖1的系統(tǒng)100的進(jìn)一步操作。操作從步驟402開始。接下來,在步驟404中,發(fā)出了對數(shù)據(jù)的請求。例如,存儲(chǔ)器管理器115可以接收請求以將數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中。接下來,在步驟406中,操作判斷請求的數(shù)據(jù)是否被緩存。如果請求的數(shù)據(jù)被緩存,則過程繼續(xù),以在408中竊用高速緩存數(shù)據(jù),并在404中請求數(shù)據(jù)。
當(dāng)在步驟406中數(shù)據(jù)沒有緩存時(shí),操作繼續(xù)執(zhí)行步驟410,其中,判斷緩存是否已滿。當(dāng)在步驟410中緩存沒有滿時(shí),操作繼續(xù)執(zhí)行步驟409,其中,將數(shù)據(jù)存儲(chǔ)在緩存中。例如,當(dāng)有打開的緩沖區(qū)可用時(shí),數(shù)據(jù)可以存儲(chǔ)到打開的緩沖區(qū)中。然后,操作返回到步驟404。
當(dāng)在步驟410中緩存已滿時(shí),操作繼續(xù)執(zhí)行步驟412,其中,緩沖區(qū)竊用通過查看緩沖區(qū)集的目標(biāo)數(shù)量來啟動(dòng)。例如,緩沖區(qū)竊用可以如圖3中所描述的那樣進(jìn)行,其中,步驟412、414、416對應(yīng)于圖3的步驟320、325、330和335。接下來,在步驟414中,存儲(chǔ)器管理器115計(jì)算竊用的數(shù)據(jù)的唯一ID。接下來,在步驟416中,存儲(chǔ)器管理器115在竊用的緩沖區(qū)的竊用歷史隊(duì)列附加新記錄。接下來,在步驟418中,存儲(chǔ)器管理器115從輔助存儲(chǔ)器或輔助存儲(chǔ)器讀取數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在緩存中。接下來,在步驟420中,存儲(chǔ)器管理器計(jì)算唯一ID。接下來,在步驟422中,存儲(chǔ)器管理器115基于計(jì)算出的唯一ID查詢緩沖區(qū)竊用歷史記錄。
接下來,在步驟424中,存儲(chǔ)器管理器115判斷緩沖區(qū)竊用是否為重新訪問。當(dāng)緩沖區(qū)竊用不是重新訪問時(shí),操作返回到步驟404。當(dāng)緩沖區(qū)竊用是重新訪問時(shí),操作繼續(xù)執(zhí)行步驟426,其中,存儲(chǔ)器管理器計(jì)算順序差值,以確定緩沖區(qū)隊(duì)列中的最佳緩沖區(qū)數(shù)量。接下來,在步驟428中,如果在所有緩沖區(qū)隊(duì)列中滿足閾值,則存儲(chǔ)器管理器重新計(jì)算緩沖區(qū)隊(duì)列中的緩沖區(qū)的目標(biāo)數(shù)量。
在我們的示例中,如果應(yīng)用程序再次需要具有唯一id 100的緩沖區(qū)數(shù)據(jù),如此進(jìn)行了重新訪問,我們將發(fā)現(xiàn)序列號為20的竊用歷史隊(duì)列中的對應(yīng)的竊用歷史記錄。
竊用歷史隊(duì)列
-----------------------------<唯一id 100><大小256K><序列 #20>
在我們的示例中,重新使用緩沖區(qū)1以竊用唯一標(biāo)識符為123的數(shù)據(jù),子組A的序列號增大1。緩沖區(qū)1在子組的最近使用的末尾重新進(jìn)入子組A。
子組A(256K) 子組B(512K)--------------------------------------------------------子組序列號 #21 子組序列號 #5(LRU)緩沖區(qū)2<唯一id 333> 緩沖區(qū)7<唯一id 481>
緩沖區(qū)3<唯一id 471> 緩沖區(qū)8<唯一id 421>
(MRU)緩沖區(qū)1<唯一id 123> 緩沖區(qū)9<唯一id 472>
繼續(xù)看此示例,如果大小為256千字節(jié)的第二新緩沖區(qū)請求進(jìn)入系統(tǒng),那么,選擇緩沖區(qū)2進(jìn)行重新使用,并竊用。創(chuàng)建了緩沖區(qū)2的竊用歷史記錄,該歷史記錄記錄了竊用緩沖區(qū)時(shí)的子組A的序列號,子組A的當(dāng)前序列號增大1。
緩沖區(qū)2的新數(shù)據(jù)具有唯一標(biāo)識符234,并且緩沖區(qū)再次進(jìn)入子組的最近使用的末尾。
子組A(256K) 子組B(512K)--------------------------- ---------------------------子組序列號 #22子組序列號 #5(LRU) 緩沖區(qū)3<唯一id 471> 緩沖區(qū)7<唯一id 481>
緩沖區(qū)1<唯一id 123> 緩沖區(qū)8<唯一id 421>
(MRU) 緩沖區(qū)2<唯一id 234> 緩沖區(qū)9<唯一id 472>
竊用歷史隊(duì)列-------------------<唯一id 100><大小256K><序列號 #20>
<唯一id 333><大小256K><序列號 #21>
取數(shù)量20并將子組A的序列號(22)減去該數(shù)得出差值2。如果子組A包含另外兩個(gè)緩沖區(qū),那么,通過從子組A的LRU的末尾竊用來滿足我們的示例中的兩個(gè)新緩沖區(qū)請求,不必竊用具有唯一id 100的緩沖區(qū)數(shù)據(jù)。如此,被重新訪問的數(shù)據(jù)將仍處于緩存狀態(tài),不會(huì)被竊用,不必從輔助存儲(chǔ)器中重新讀取此數(shù)據(jù)?;叵胍幌?,當(dāng)請求緩沖區(qū)以竊用數(shù)據(jù)時(shí),使用本發(fā)明,可以通過計(jì)算其唯一id和檢查竊用歷史隊(duì)列看是否發(fā)生,來判斷這是否為對以前高速緩存數(shù)據(jù)的重新訪問。如果發(fā)現(xiàn)竊用歷史記錄具有相同唯一id,那么,我們重新訪問由于以前的緩沖區(qū)竊用而被寫入到輔助存儲(chǔ)器中的數(shù)據(jù)。然后,我們計(jì)算該竊用歷史記錄內(nèi)的序列號和對應(yīng)的緩沖區(qū)大小子組的當(dāng)前序列號之間的差值。此差值<N>是在以前的緩沖區(qū)竊用和此隨后的重新訪問之間從該子組竊用的緩沖區(qū)的數(shù)量。差值<N>還告訴我們,如果此子組更大<N>緩沖區(qū),那么,重新訪問將會(huì)發(fā)現(xiàn),緩沖區(qū)仍在子組中,緩沖區(qū)數(shù)據(jù)仍緩存在存儲(chǔ)器中,重新訪問將不會(huì)導(dǎo)致從輔助存儲(chǔ)器中重新讀取。
本發(fā)明的另一個(gè)特點(diǎn)是,使用每一個(gè)重新訪問的緩沖區(qū)的差值<N>信息允許我們對每一個(gè)緩沖區(qū)大小子組就它是否應(yīng)該相對于所有其他子組是增長還是削減來進(jìn)行評估,如此,可以判斷從哪一個(gè)子組中竊用下一個(gè)緩沖區(qū)。此差值<N>信息可以在一段時(shí)間內(nèi)使用,以量化(平均起來),每一個(gè)子組應(yīng)該有多少緩沖區(qū),以最小化竊用的數(shù)據(jù)的重新讀取。
圖5是顯示根據(jù)本發(fā)明的系統(tǒng)100的操作的流程圖。具體來說,圖5顯示了存儲(chǔ)器管理器115在圖4的步驟428之后的根據(jù)適當(dāng)?shù)木彌_區(qū)數(shù)目確定子組的順序的操作。這只是使用差值<N>信息的一個(gè)示例實(shí)現(xiàn)方式。每一個(gè)緩沖區(qū)大小子組都按增長優(yōu)先級進(jìn)行排序。對高優(yōu)先級緩沖區(qū)大小子組中的緩沖區(qū)大小的請求被允許從較低優(yōu)先級的子組中竊用和聯(lián)合或竊用和分離緩沖區(qū)。
圖5的操作以步驟500開始,其中,計(jì)數(shù)器被設(shè)置為N=1。接下來在步驟505中,存儲(chǔ)器管理器115為竊用的并從第N個(gè)緩沖區(qū)大小子組重新訪問的所有緩沖區(qū)累積平均差值<N>,名為<N_a>。例如,如果從子組A竊用兩個(gè)緩沖區(qū),并分別用5和15的差值<N>進(jìn)行重新訪問,那么,對于子組A,<N_a>將是10。
接下來,在步驟510中,存儲(chǔ)器管理器115確定在第N個(gè)子組中進(jìn)行重新訪問相對于其他子組的重要性。例如,具有小<N_a>的竊用緩沖區(qū)的許多重新訪問被視為比不同緩沖區(qū)大小子組的具有相同小<N_a>的幾個(gè)重新訪問更重要。如此,存儲(chǔ)器管理器115產(chǎn)生特定子組的總竊用緩沖區(qū)重新訪問次數(shù)對第N個(gè)子組的<N_a>的比率為<R>。
接下來,在步驟515中,計(jì)數(shù)器增大為N=N+1。接下來,在步驟520中,操作判斷是否存在第N個(gè)子組。當(dāng)在存儲(chǔ)器110內(nèi)存在第N個(gè)子組時(shí),操作返回到步驟505。當(dāng)不存在第N個(gè)子組時(shí),操作繼續(xù)執(zhí)行步驟525,其中,所有子組都按增長優(yōu)先級排序。例如,如果子組A具有20個(gè)其<N_a>為10的重新訪問,子組B具有5個(gè)其<N_a>為8的重新訪問,那么子組A具有較高的增長優(yōu)先級。
(20/10)>(5/8)具有最高的<R>的那些子組應(yīng)該是緩沖區(qū)竊用的可能性最小的目標(biāo)。相反,當(dāng)嘗試增長另一個(gè)緩沖區(qū)大小子組時(shí),那些具有低<R>的子組沒有看到相對于它們的<N_a>的許多重新訪問,應(yīng)該首先從其中竊用。
再看原來的示例,子組A比子組B優(yōu)<R>,下一次竊用將導(dǎo)致將子組B中的緩沖區(qū)7分離為兩個(gè)256K緩沖區(qū)號4和5(指派給子組A)。
子組A(256K) 子組B(512K)--------------------------------子組序列號 #20 子組序列號 #6(LRU)緩沖區(qū)1<唯一id 100>緩沖區(qū)8<唯一id 421>
緩沖區(qū)2<唯一id 333> 緩沖區(qū)9<唯一id 472>
緩沖區(qū)3<唯一id 471>
緩沖區(qū)4<唯一id 123>
(MRU)緩沖區(qū)8<唯一id 234>
竊用歷史隊(duì)列---------------------<唯一id 481><大小512K><序列號 #5>
利用此發(fā)明,我們平衡了競爭的緩沖區(qū)大小的數(shù)量以縮小重新讀取竊用緩沖區(qū)的頻率以及根據(jù)使用的優(yōu)先級優(yōu)化分離或聯(lián)合緩沖區(qū)。
非限制性的硬件和軟件實(shí)現(xiàn)方式圖6是根據(jù)本發(fā)明的示范性實(shí)施例的使用圖1的緩沖區(qū)的計(jì)算機(jī)處理節(jié)點(diǎn)的方框圖。
圖6中顯示了描述組成員600的方框圖,組成員600是本發(fā)明的示范性實(shí)施例所使用的計(jì)算機(jī)處理節(jié)點(diǎn)。任何配置適當(dāng)?shù)奶幚硐到y(tǒng)也都能夠被本發(fā)明的實(shí)施例使用。計(jì)算機(jī)系統(tǒng)600具有連接到主存儲(chǔ)器620的處理器610,用于輔助存儲(chǔ)的大容量存儲(chǔ)器接口630,終端接口640和網(wǎng)絡(luò)接口650。系統(tǒng)總線660將這些系統(tǒng)組件互相連接在一起。大容量存儲(chǔ)接口630用于將諸如DASD設(shè)備655之類的大容量存儲(chǔ)設(shè)備連接到計(jì)算機(jī)系統(tǒng)600。DASD設(shè)備的一種特定類型是軟盤驅(qū)動(dòng)器、該驅(qū)動(dòng)器可以用來將數(shù)據(jù)存儲(chǔ)到軟盤695中以及從其中讀取數(shù)據(jù)。
主存儲(chǔ)器620包含應(yīng)用程序622、對象624、數(shù)據(jù)626以及操作系統(tǒng)映像628。雖然這里所顯示的是同時(shí)駐留在主存儲(chǔ)器620中,顯然,應(yīng)用程序622、對象624、數(shù)據(jù)626以及操作系統(tǒng)628不必都一直或同時(shí)完全駐留主存儲(chǔ)器620中。計(jì)算機(jī)系統(tǒng)600利用常規(guī)的虛擬尋址機(jī)制以允許程序行為如同它們可以訪問大型的單一的存儲(chǔ)器實(shí)體(這里被稱為計(jì)算機(jī)系統(tǒng)存儲(chǔ)器),而不是訪問多個(gè)較小的存儲(chǔ)器實(shí)體,如主存儲(chǔ)器620和DASD設(shè)備655。請注意,這里使用術(shù)語“計(jì)算機(jī)系統(tǒng)存儲(chǔ)器”來指計(jì)算機(jī)系統(tǒng)600的整個(gè)虛擬存儲(chǔ)器。
操作系統(tǒng)625是合適的多任務(wù)處理操作系統(tǒng)。操作系統(tǒng)628包括DASD管理用戶界面程序,以管理通過大容量存儲(chǔ)接口630進(jìn)行的訪問。本發(fā)明的實(shí)施例利用允許操作系統(tǒng)628的組件的指令在計(jì)算機(jī)600內(nèi)的任何處理器上執(zhí)行的諸如面向?qū)ο蟮目蚣軝C(jī)制之類的體系結(jié)構(gòu)。
雖然計(jì)算機(jī)602只使用了一個(gè)CPU 602,但是,也可以同樣有效地使用具有多個(gè)CPU的計(jì)算機(jī)系統(tǒng)。本發(fā)明的實(shí)施例包括各種接口,每一個(gè)接口都包括單獨(dú)的完全編程的微處理器,這些微處理器用于減輕CPU 602的處理負(fù)載。終端接口608用于直接將一個(gè)或多個(gè)終端618連接計(jì)算機(jī)系統(tǒng)600??梢允欠侵悄艿幕蛲耆删幊痰墓ぷ髡镜倪@些終端618,供系統(tǒng)管理員和用戶與計(jì)算機(jī)系統(tǒng)600進(jìn)行通信。
網(wǎng)絡(luò)接口650用于將其他計(jì)算機(jī)系統(tǒng)或組成員(例如,站A 675和站B 685)連接到計(jì)算機(jī)系統(tǒng)600。本發(fā)明適用于包括目前的模擬和/或數(shù)字技術(shù)或通過將來的網(wǎng)絡(luò)機(jī)制的任何數(shù)據(jù)通信連接。
雖然本發(fā)明的示范性實(shí)施例是在完全功能的計(jì)算機(jī)系統(tǒng)的上下文中進(jìn)行描述的,但是,那些精通本技術(shù)的人將理解,實(shí)施例能夠通過軟盤(例如,軟盤695)、CD-ROM或其他形式的可記錄介質(zhì)或通過任何類型的電子傳輸機(jī)制作為程序產(chǎn)品來分發(fā)。
本發(fā)明的實(shí)施例包括關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)632。RDBMS 632是合適的關(guān)系數(shù)據(jù)庫管理器,如處理結(jié)構(gòu)化查詢語言(SQL)的版本的關(guān)系數(shù)據(jù)庫管理器。
本發(fā)明的實(shí)施例可以作為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品(例如,磁盤695)來實(shí)現(xiàn)。程序產(chǎn)品的程序定義了實(shí)施例的功能(包括這里所描述的方法)并可以包含在各種各樣的信號承載介質(zhì)中。說明性的信號承載介質(zhì)包括,但不僅限于(i)永久地存儲(chǔ)在非可寫的存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)內(nèi)只讀存儲(chǔ)器設(shè)備,如可由CD-ROM驅(qū)動(dòng)器讀取的CD-ROM光盤)中的信息;(ii)存儲(chǔ)在可寫的存儲(chǔ)介質(zhì)(例如,軟盤驅(qū)動(dòng)器內(nèi)的軟盤或硬盤驅(qū)動(dòng)器)中的可變的信息;或(iii)可通過通信介質(zhì)傳遞的信息,如,通過計(jì)算機(jī)或電話網(wǎng)絡(luò),包括無線通信。后一實(shí)施例包括從因特網(wǎng)及其他網(wǎng)絡(luò)下載的信息。這樣的信號承載介質(zhì),當(dāng)攜帶了執(zhí)行本發(fā)明的功能的計(jì)算機(jī)可讀的指令時(shí),代表了本發(fā)明的實(shí)施例。
一般而言,用于實(shí)現(xiàn)本發(fā)明的實(shí)施例的例程,不論是作為操作系統(tǒng)的一部分或特定的應(yīng)用程序、組件、程序、模塊、對象或指令序列來實(shí)現(xiàn),這里都可以稱為“程序”。計(jì)算機(jī)程序通常包括將由天然的計(jì)算機(jī)轉(zhuǎn)換為機(jī)器可讀的格式并轉(zhuǎn)換為可執(zhí)行的指令的多個(gè)指令。此外,程序還包括駐留在程序本地或在存儲(chǔ)器或存儲(chǔ)設(shè)備中找到的變量和數(shù)據(jù)結(jié)構(gòu)。此外,這里所描述的各種程序可以基于在本發(fā)明的特定實(shí)施例中實(shí)現(xiàn)的應(yīng)用程序來標(biāo)識。然而,應(yīng)該理解,隨后的任何特定程序命名法只是為了方便,因此,本發(fā)明不應(yīng)該只限于只在這樣的命名法標(biāo)識和/或暗示的任何特定的應(yīng)用程序中使用。
還應(yīng)該清楚地是,通常計(jì)算機(jī)程序可以用無數(shù)種方式組織成例程、過程、方法、模塊、對象等等,以及程序功能可以用各種不同的方式在駐留在典型的計(jì)算機(jī)內(nèi)的各種軟件層(例如,操作系統(tǒng)、庫、API、應(yīng)用程序、小程序等等)之間分配。應(yīng)該理解,本發(fā)明不僅限于這里所描述的特定組織和分配或程序功能。
本發(fā)明可以以硬件、軟件或硬件和軟件的組合實(shí)現(xiàn)。根據(jù)本發(fā)明的優(yōu)選實(shí)施例的系統(tǒng)可以使用一個(gè)計(jì)算機(jī)系統(tǒng)以集中方式,或者以不同的元素跨多個(gè)互連的計(jì)算機(jī)系統(tǒng)的分布式方式來實(shí)現(xiàn)。任何類型的計(jì)算機(jī)系統(tǒng)或適于執(zhí)行這里描述的方法的其他裝置都適合。典型的硬件和軟件的組合可以是具有這樣的計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),當(dāng)加載并執(zhí)行該計(jì)算機(jī)程序時(shí),控制計(jì)算機(jī)系統(tǒng)以便它執(zhí)行這里描述的方法。
每一個(gè)計(jì)算機(jī)系統(tǒng)都可以包括,其中,一個(gè)或多個(gè)計(jì)算機(jī)和允許計(jì)算機(jī)從信號承載介質(zhì)中讀取數(shù)據(jù)、指令、消息或消息數(shù)據(jù)包及其他信號承載信息的信號承載介質(zhì)。信號承載介質(zhì)可以包括非易失性存儲(chǔ)器,如ROM、Flash存儲(chǔ)器、磁盤驅(qū)動(dòng)器存儲(chǔ)器、CD-ROM及其他永久存儲(chǔ)器。另外,計(jì)算機(jī)介質(zhì)可以包括,例如,諸如RAM之類的易失性存儲(chǔ)器、緩沖器、高速緩存和網(wǎng)絡(luò)線路。此外,信號承載介質(zhì)還可以包括允許計(jì)算機(jī)讀取這樣的信號承載信息的諸如網(wǎng)絡(luò)鏈路和/或網(wǎng)絡(luò)接口之類的暫時(shí)狀態(tài)介質(zhì)中的信號承載信息,包括有線網(wǎng)絡(luò)或無線網(wǎng)絡(luò)。
雖然說明了本發(fā)明的特定實(shí)施例,那些精通本技術(shù)的普通人員將理解,在不偏離本發(fā)明的精神和范圍的情況下,可以對特定的實(shí)施例進(jìn)行各種修改。因此,本發(fā)明的范圍不僅限于特定的實(shí)施例,所附的權(quán)利要求涵蓋在本發(fā)明范圍內(nèi)的一切這樣的應(yīng)用、修改和實(shí)施例。
權(quán)利要求
1.一種用于在多個(gè)存儲(chǔ)器緩沖區(qū)大小管理可變大小存儲(chǔ)器分區(qū)的方法,該方法包括接收對于給定大小的存儲(chǔ)器緩沖區(qū)的第一請求以在其中存儲(chǔ)接收到的數(shù)據(jù);通過以下操作竊用存儲(chǔ)器緩沖區(qū)將在存儲(chǔ)器緩沖區(qū)中高速緩存數(shù)據(jù)的至少一部分存儲(chǔ)到輔助存儲(chǔ)器中;以及將接收到的數(shù)據(jù)存儲(chǔ)在以前存儲(chǔ)了高速緩存數(shù)據(jù)的存儲(chǔ)器緩沖區(qū)中;創(chuàng)建緩沖區(qū)竊用歷史記錄,其中,緩沖區(qū)竊用歷史記錄包括用于標(biāo)識高速緩存數(shù)據(jù)在輔助存儲(chǔ)器中的位置的唯一標(biāo)識符,其中,緩沖區(qū)竊用歷史記錄用于判斷隨后的對竊用存儲(chǔ)器緩沖區(qū)的請求是否為重新訪問以前寫入到輔助存儲(chǔ)器中的高速緩存數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中,創(chuàng)建緩沖區(qū)竊用歷史記錄的過程包括創(chuàng)建具有與存儲(chǔ)器緩沖區(qū)的竊用順序關(guān)聯(lián)的序列號的緩沖區(qū)竊用緩沖區(qū)。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括接收對存儲(chǔ)器緩沖區(qū)的第二請求以存儲(chǔ)其他接收到的數(shù)據(jù);以及使用緩沖區(qū)竊用歷史記錄重新訪問輔助存儲(chǔ)器內(nèi)的高速緩存數(shù)據(jù)的部分。
4.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括將存儲(chǔ)器緩沖區(qū)分區(qū)為組內(nèi)具有相似大小緩沖區(qū)的至少一個(gè)子組。
5.根據(jù)權(quán)利要求4所述的方法,其中,創(chuàng)建緩沖區(qū)竊用歷史記錄的過程包括創(chuàng)建具有與具有相似大小的緩沖區(qū)的子組中的存儲(chǔ)器緩沖區(qū)的竊用順序關(guān)聯(lián)的序列號的緩沖區(qū)竊用緩沖區(qū)。
6.根據(jù)權(quán)利要求5所述的方法,其中,將存儲(chǔ)器緩沖區(qū)分區(qū)為組內(nèi)具有相似大小緩沖區(qū)的至少一個(gè)子組的過程包括基于緩沖區(qū)竊用歷史將存儲(chǔ)器緩沖區(qū)分區(qū)。
7.根據(jù)權(quán)利要求6所述的方法,其中,將存儲(chǔ)器緩沖區(qū)分區(qū)的過程進(jìn)一步包括,對于每一個(gè)子組,通過以下操作計(jì)算子組的優(yōu)先級為竊用的并從子組重新訪問的所有緩沖區(qū)累積平均差值;判斷子組中的重新訪問的重要性;通過比較每一個(gè)子組的優(yōu)先級來標(biāo)識存儲(chǔ)器緩沖區(qū),其中,存儲(chǔ)器緩沖區(qū)位于具有最小優(yōu)先級的子組內(nèi)。
8.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括將緩沖區(qū)竊用歷史記錄添加到緩沖區(qū)竊用歷史隊(duì)列中,其中,緩沖區(qū)竊用歷史隊(duì)列包括零個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄。
9.一種平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的方法,包括建立包括一個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄的緩沖區(qū)竊用歷史隊(duì)列,其中,一個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄中的每一個(gè)記錄都包括標(biāo)識輔助存儲(chǔ)器位置中存儲(chǔ)的一個(gè)或多個(gè)高速緩存數(shù)據(jù)的唯一標(biāo)識符;接收在緩沖區(qū)中存儲(chǔ)數(shù)據(jù)的請求;將接收到的請求與一個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄中的每一個(gè)記錄的每一個(gè)唯一標(biāo)識符進(jìn)行比較;以及當(dāng)請求中的數(shù)據(jù)匹配緩沖區(qū)竊用歷史記錄的其中一個(gè)唯一標(biāo)識符時(shí),從輔助存儲(chǔ)器重新訪問高速緩存數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,其中,緩沖區(qū)竊用歷史記錄進(jìn)一步包括序列號,該方法進(jìn)一步包括計(jì)算緩沖區(qū)竊用歷史記錄的序列號和對應(yīng)的緩沖區(qū)大小子組的當(dāng)前序列號之間的差值;將差值與對應(yīng)的緩沖區(qū)大小子組進(jìn)行比較;以及當(dāng)對應(yīng)的緩沖區(qū)大小子組至少等于差值時(shí),重新訪問高速緩存數(shù)據(jù)的對應(yīng)的緩沖區(qū)大小子組。
11.根據(jù)權(quán)利要求10所述的方法,進(jìn)一步包括當(dāng)對應(yīng)的緩沖區(qū)大小子組小于差值時(shí),從輔助存儲(chǔ)器重新讀取高速緩存數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的方法,其中,差值包括在以前的緩沖區(qū)竊用和當(dāng)前請求的重新訪問之間,從對應(yīng)的緩沖區(qū)大小子組竊用的緩沖區(qū)數(shù)量。
13.根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括對于多個(gè)子組中的每一個(gè)子組,其中,每一個(gè)子組都包括多個(gè)相似大小的緩沖區(qū),通過以下操作計(jì)算子組的優(yōu)先級為竊用的并從子組重新訪問的所有緩沖區(qū)累積平均差值;判斷子組中的重新訪問的重要性;以及通過比較每一個(gè)子組的優(yōu)先級,響應(yīng)對緩沖區(qū)的請求,標(biāo)識緩沖區(qū)竊用目標(biāo),其中,緩沖區(qū)竊用目標(biāo)是具有最小優(yōu)先級的緩沖區(qū)。
14.一種平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng),包括多個(gè)子組內(nèi)提供的多個(gè)緩沖區(qū),其中,子組包含一個(gè)或多個(gè)相似大小的緩沖區(qū),緩沖區(qū)竊用歷史隊(duì)列包括多個(gè)緩沖區(qū)竊用歷史記錄;以及控制器包括存儲(chǔ)器管理器,其中,存儲(chǔ)器管理器用于接收對于緩沖區(qū)的第一請求以在存儲(chǔ)器中存儲(chǔ)接收到的數(shù)據(jù);從多個(gè)緩沖區(qū)的一個(gè)中標(biāo)識緩沖區(qū),其中,緩沖區(qū)包含高速緩存數(shù)據(jù);通過以下操作竊用緩沖區(qū)將高速緩存數(shù)據(jù)存儲(chǔ)到輔助存儲(chǔ)位置;以及將接收到的數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中;創(chuàng)建緩沖區(qū)竊用歷史記錄,其中,緩沖區(qū)竊用歷史記錄包括用于標(biāo)識高速緩存數(shù)據(jù)在輔助存儲(chǔ)器中的位置的唯一標(biāo)識符,其中,緩沖區(qū)竊用歷史記錄用于判斷隨后的對竊用存儲(chǔ)器緩沖區(qū)的請求是否為重新訪問以前寫入到輔助存儲(chǔ)器中的高速緩存數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,存儲(chǔ)器被分區(qū)為組內(nèi)具有相似大小緩沖區(qū)的多個(gè)子組,其中緩沖區(qū)在多個(gè)子組之一中分組。
16.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,存儲(chǔ)器管理器進(jìn)一步用于對于多個(gè)子組中的每一個(gè)子組,通過以下操作計(jì)算優(yōu)先級為竊用的并從子組重新訪問的所有緩沖區(qū)累積平均差值;判斷子組中的重新訪問的重要性;以及通過比較每一個(gè)子組的優(yōu)先級,標(biāo)識緩沖區(qū),其中,緩沖區(qū)位于具有最小優(yōu)先級的子組內(nèi)。
17.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,緩沖區(qū)竊用歷史記錄被添加到緩沖區(qū)竊用歷史隊(duì)列中。
18.一種平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng),包括設(shè)置在多個(gè)子組內(nèi)的多個(gè)緩沖區(qū),其中,子組包含一個(gè)或多個(gè)相似大小的緩沖區(qū),以及緩沖區(qū)竊用歷史隊(duì)列包括多個(gè)緩沖區(qū)竊用歷史記錄,其中,一個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄中的每一個(gè)記錄都包括標(biāo)識輔助存儲(chǔ)器位置中存儲(chǔ)的一個(gè)或多個(gè)高速緩存數(shù)據(jù)的唯一標(biāo)識符;以及控制器包括存儲(chǔ)器管理器,其中,存儲(chǔ)器管理器用于從多個(gè)緩沖區(qū)竊用歷史記錄中的一個(gè)記錄中接收將數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中的請求;將接收到的請求與一個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄中的每一個(gè)記錄的每一個(gè)唯一標(biāo)識符進(jìn)行比較;以及當(dāng)隨后的請求中的數(shù)據(jù)匹配緩沖區(qū)竊用歷史記錄的唯一標(biāo)識符時(shí),從輔助存儲(chǔ)器重新訪問高速緩存數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,緩沖區(qū)竊用歷史記錄進(jìn)一步包括序列號,其中,存儲(chǔ)器管理器進(jìn)一步用于計(jì)算緩沖區(qū)竊用歷史記錄的序列號和對應(yīng)的緩沖區(qū)大小子組的當(dāng)前序列號之間的差值;將差值與對應(yīng)的緩沖區(qū)大小子組進(jìn)行比較;以及當(dāng)對應(yīng)的緩沖區(qū)大小子組至少等于差值的大小時(shí),重新訪問高速緩存數(shù)據(jù)的對應(yīng)的緩沖區(qū)大小子組。
20.根據(jù)權(quán)利要求14所述的方法,對于平衡根據(jù)權(quán)利要求16所定義的多個(gè)存儲(chǔ)器緩沖區(qū)大小,其中,存儲(chǔ)器管理器進(jìn)一步用于當(dāng)對應(yīng)的緩沖區(qū)大小子組小于差值的大小時(shí),從輔助存儲(chǔ)器重新讀取高速緩存數(shù)據(jù)。
21.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,唯一標(biāo)識符包括緩沖區(qū)的數(shù)據(jù)的磁盤地址。
22.一種用于在多個(gè)存儲(chǔ)器緩沖區(qū)大小管理可變大小存儲(chǔ)器分區(qū)的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括由處理電路可讀的存儲(chǔ)介質(zhì),以及存儲(chǔ)由處理電路執(zhí)行的用于執(zhí)行該方法的計(jì)算機(jī)指令,包括接收對于給定大小的存儲(chǔ)器緩沖區(qū)的第一請求以在其中存儲(chǔ)接收到的數(shù)據(jù);通過以下操作竊用存儲(chǔ)器緩沖區(qū)將存儲(chǔ)器緩沖區(qū)中的高速緩存數(shù)據(jù)的至少一部分存儲(chǔ)到輔助存儲(chǔ)器中;以及將接收到的數(shù)據(jù)存儲(chǔ)在以前存儲(chǔ)了高速緩存數(shù)據(jù)的存儲(chǔ)器緩沖區(qū)中;創(chuàng)建緩沖區(qū)竊用歷史記錄,其中,緩沖區(qū)竊用歷史記錄包括用于標(biāo)識高速緩存數(shù)據(jù)在輔助存儲(chǔ)器中的位置的唯一標(biāo)識符,其中,緩沖區(qū)竊用歷史記錄用于判斷隨后的對竊用存儲(chǔ)器緩沖區(qū)的請求是否為重新訪問以前寫入到輔助存儲(chǔ)器中的高速緩存數(shù)據(jù)。
23.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,其中,創(chuàng)建緩沖區(qū)竊用歷史記錄的過程包括創(chuàng)建具有與存儲(chǔ)器緩沖區(qū)的竊用順序關(guān)聯(lián)的序列號的緩沖區(qū)竊用緩沖區(qū)。
24.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括接收對存儲(chǔ)器緩沖區(qū)的第二請求以存儲(chǔ)其他接收到的數(shù)據(jù);以及使用緩沖區(qū)竊用歷史記錄重新訪問輔助存儲(chǔ)器內(nèi)的高速緩存數(shù)據(jù)的部分。
25.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括將存儲(chǔ)器緩沖區(qū)分區(qū)為組內(nèi)具有相似大小緩沖區(qū)的至少一個(gè)子組。
26.根據(jù)權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其中,創(chuàng)建緩沖區(qū)竊用歷史記錄的過程包括創(chuàng)建具有與具有相似大小的緩沖區(qū)的子組中的存儲(chǔ)器緩沖區(qū)的竊用順序關(guān)聯(lián)的序列號的緩沖區(qū)竊用緩沖區(qū)。
27.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其中,將存儲(chǔ)器緩沖區(qū)分區(qū)為組內(nèi)具有相似大小緩沖區(qū)的至少一個(gè)子組的過程包括基于緩沖區(qū)竊用歷史將存儲(chǔ)器緩沖區(qū)分區(qū)。
28.根據(jù)權(quán)利要求27所述的計(jì)算機(jī)程序產(chǎn)品,其中,將存儲(chǔ)器緩沖區(qū)分區(qū)的過程進(jìn)一步包括,對于每一個(gè)子組,通過以下操作計(jì)算子組的優(yōu)先級為竊用的并從子組重新訪問的所有緩沖區(qū)累積平均差值;判斷子組中的重新訪問的重要性;通過比較每一個(gè)子組的優(yōu)先級來標(biāo)識存儲(chǔ)器緩沖區(qū),其中,存儲(chǔ)器緩沖區(qū)位于具有最小優(yōu)先級的子組內(nèi)。
29.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括將緩沖區(qū)竊用歷史記錄添加到緩沖區(qū)竊用歷史隊(duì)列中,其中,緩沖區(qū)竊用歷史隊(duì)列包括零個(gè)或多個(gè)緩沖區(qū)竊用歷史記錄。
全文摘要
一種用于平衡多個(gè)存儲(chǔ)器緩沖區(qū)大小的系統(tǒng)包括分區(qū)為多個(gè)子組的存儲(chǔ)器,每一個(gè)子組都包含相似大小的緩沖區(qū)。該系統(tǒng)進(jìn)一步包括存儲(chǔ)器管理器,該存儲(chǔ)器管理器通過存儲(chǔ)和訪問緩沖區(qū)竊用歷史隊(duì)列中的緩沖區(qū)竊用歷史記錄來管理對緩沖區(qū)空間的請求。
文檔編號G06F12/00GK1673981SQ20051000438
公開日2005年9月28日 申請日期2005年1月20日 優(yōu)先權(quán)日2004年3月23日
發(fā)明者戴維·J.·克拉夫特, 布賴恩·P.·狄克遜, 尤里·L.·沃羅布維, 詹姆斯·C.·威列 申請人:國際商業(yè)機(jī)器公司