TWI393004B - 用於動態改變快取記憶體順序清單大小之系統以及方法 - Google Patents
用於動態改變快取記憶體順序清單大小之系統以及方法 Download PDFInfo
- Publication number
- TWI393004B TWI393004B TW094133273A TW94133273A TWI393004B TW I393004 B TWI393004 B TW I393004B TW 094133273 A TW094133273 A TW 094133273A TW 94133273 A TW94133273 A TW 94133273A TW I393004 B TWI393004 B TW I393004B
- Authority
- TW
- Taiwan
- Prior art keywords
- sequential
- list
- data
- random
- data list
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
Description
本發明係大致有關資料快取。
快取是一種隱藏將資料寫入諸如硬碟機儲存裝置等的儲存裝置及自儲存裝置讀取資料時的延遲之基礎技術。可將這些延遲稱為輸入/輸出(I/O)延遲。因為快取在隱藏I/O延遲上是有效的,所以廣泛地將快取用於儲存裝置控制器、資料庫、及作業系統。
因而可將快取記憶體定義為用來減少自一較低速記憶體或裝置讀取資料或將資料寫到一較低速記憶體或裝置所需的有效時間之高速記憶體或儲存裝置。現代的儲存裝置控制器快取記憶體通常包含被用來作為讀取快取記憶體之揮發性記憶體、以及被用來作為寫入快取記憶體之非揮發性記憶體。讀取快取記憶體之有效性係取決於其"命中"率,亦即,無須進行一磁碟存取作業(磁碟存取作業代表在快取記憶體中找到資料上"未命中")而自快取記憶體服務要求的比率。本發明係將重點放在改善讀取快取記憶體的效能,亦即,提高命中率或同等的講法為將未命中率降至最低。
通常係以被稱為分頁的相同大小之單位管理快取記憶體。只有在快取記憶體未命中一分頁的情況下,所謂的需求分頁(demand paging)機制才要求將該分頁自較慢的記憶體(例如一磁碟)複製到快取記憶體,亦即,只有在主機要求該分頁且在快取記憶體中無法找到該分頁時,才需要進行一較慢的磁碟存取。在需求分頁中,快取記憶體管理是較簡單的,且在快取記憶體已被填滿時,嘗試智慧地亦快取記憶體選擇一分頁以供替換,並因一"未命中"而將一新的分頁儲存在快取記憶體中。一種習知的策略只是以新的分頁替換在未來進行存取是最久遠的分頁。被稱為最近最少使用(Least recently used;簡稱LRU)的另一策略以新的分頁替換最近最少使用的分頁。
我們當了解,除了需求分頁之外,可以推測方式對分頁進行預先提取或預先分段(prestaging),而對隱藏I/O延遲作進一步的改善。也已導入了嘗試預測何時將需要一分頁的較複雜之演算法,但是商用系統很少使用極複雜的預測機制,這是因為複雜的預測機制需要保存許多的分頁存取歷史資料。此種方式是麻煩且高成本的。此外,為了要有效,必須在預測的要求之前,先完成一預先提取,因而需要時間足夠的預先通知,而這是可能不可行的。此外,長期的預測準確性可能在開始時是較低的,且在插入大量不同的工作負載時,該準確性可能會惡化。最後,對於在接近其尖峰容量下工作的一磁碟子系統而言,平均回應時間將隨著磁碟提取次數的增加而大幅增加,因而將造成更多的磁碟提取次數的低準確性之推測式預先提取事實上可能使效能惡化。
因此,本發明了解:可採用一種以推測式預先提取的較簡單之方法,該方法使用循序原則,該原則是通常需要沒有間隙且按照遞增順序而連續編號的分頁的所需求資料(所要讀取的資料)之一特徵。循序檔案存取出現在其中包括隨選視訊、資料庫掃描、複製、備份、及恢復的許多環境中。與複雜的預測方法不同,在本說明書中當可了解:偵測循序性是容易的,只需要極少的歷史資訊,且可得到接近100%的預測準確性。
然而,雖然看起來簡單,但是如本說明書所極度認知的,一種良好的循序預先提取演算法及相關聯的快取記憶體替換策略是令人意外地難以實現。為了解原因,首先必須知道:在循序預先提取中,可於開始時使用同步預先提取(將一未命中的分頁放入快取記憶體的循序分頁中),且在該啟動階段之後,使用非循序預先提取(將接續在被"命中"(亦即在快取記憶體中找到)的一所需求"觸發"分頁之後的分頁放入快取記憶體的循序分頁中)。預先提取及快取作業因而相互糾纏,且於使用預先提取時的快取記憶體管理是前文所述的LRU,其中係根據存取距離現今的遠近而維護兩份清單,其中一份清單列出各循序分頁,而另一份清單列出各隨機存取分頁。在循序預先提取的環境中,當預先提取或存取磁軌時,係將該等磁軌放在該循序清單的最近最常使用(Mostrecently used;簡稱MRU)端,而對於快取記憶體替換而言,係自該清單的LRU端清除磁軌。
在了解前文所述的背景之後,本發明將嚴肅地檢視:當使用同步及非同步預先提取策略以及LRU式快取作業,且存取一非同步的觸發磁軌時,將發生次一組磁軌的非同步預先提取。在一LRU式快取記憶體中,係將一組新提取的磁軌以及非同步觸發磁軌放在該清單的MRU中,並將現行預先提取組內之未被存取的磁軌保留在LRU清單中之原先位置,因而有可能接近該清單的LRU端。可能在該新預先提取組的該等磁軌之前先存取該現行預先提取組內之這些未被存取的磁軌,因而,視循序資料可用的快取記憶體空間量而定,這些未被存取的磁軌中之某些磁軌在被存取之前即先被自快取記憶體中清除的情況是有可能發生的,因而造成一循序未命中。此外,本發明了解此種情況可能重複發生,因而無法達到採用非同步預先提取之目的。
因此,當使用LRU式快取作業以及前文所述的預先提取策略時,所產生的演算法可能違反所謂的堆疊特性,因而當提供給循序預先提取的資料量增加時,循序未命中並不必然會減少。在本說明書中當可了解:"堆疊"特性可能是適當的快取記憶體管理中決定性的構成要素。在本說明書中當可進一步了解:在會增加循序未命中的情況下,(i)如果只使用同步預先提取,或者(ii)如果同時使用同步及非同步預先提取,但將非同步觸發設定成必然是一預先提取組中之最後的磁軌,則可隱藏前文所述的問題,當然,第一種方法將放棄非同步預先提取的所有可能好處,而第二種方法在一被預先提取的磁軌被放在快取記憶體之前即先提取該磁軌的情形下可能造成一循序未命中。有鑑於前述的問題,本發明之一目的係為在不引發額外的循序未命中之情況下避免違反堆疊特性。更一般性而言,本發明提供了在使用循序預先提取時的快取記憶體管理之改善。
係根據本說明書所述之本發明的步驟而設計一般用途電腦之程式。亦可將本發明實施為一製品,亦即,為一數位處理裝置所使用且在實體上實施該數位處理裝置可執行以便執行本發明的邏輯的一指令程式之一機器元件。可在使一數位處理裝置執行本說明書所述的本發明的方法步驟的一關鍵性之機器元件中實現本發明。
因此,一種快取資料之方法包含下列步驟:維護一隨機資料清單及一循序資料清單;以及動態建立該循序資料清單的一所需大小。
在某些實施例中,該建立步驟可包含下列步驟:根據快取記憶體未命中而決定該循序資料清單的一最近最少使用(LRU)部分是否比該隨機資料清單的一最近最少使用(LRU)部分更有價值;以及如果確係如此,則增加該所需大小,如果並非如此,則減少該所需大小。在特定實施例中,該方法包含下列步驟:根據循序未命中比率而計算增加空間到該循序資料清單的一邊際效用;以及憑經驗地決定增加空間到該隨機資料清單的一邊際效用。根據該計算及決定步驟而建立該循序資料清單的該所需大小。
該計算步驟可決定該邊際效用等於s/L(含)與2s/L(含)之間的一數目,其中s代表同步與非同步預先提取間之循序未命中比率,且L代表該循序資料清單的長度。此外,憑經驗地決定之該步驟可包含下列步驟:決定兩次連續快取記憶體命中該隨機資料清單的底部△L部分之間的循序未命中次數。如果增加空間到該循序資料清單的該所計算之邊際效用超過增加空間到該隨機資料清單的該憑經驗地決定之邊際效用,則增加該所需大小;如果並非如此,則減少該所需大小。如有需要,該方法可進一步包含下列步驟:將至少一新預先提取組的磁軌以及該組磁軌中之一非同步觸發磁軌移到該循序資料清單的一最近最常使用(MRU)部分。此外,該方法可包含下列步驟:將該組磁軌中之至少某些未被存取的磁軌移到該循序資料清單的該MRU部分。此外,如果需要,該方法可包含下列步驟:決定該循序資料清單的至少一部分之大小是否超過該所需大小;以及根據該決定的結果而替換至少一個快取記憶體元件。
在另一方面中,揭示了一種至少使用最近最少使用(LRU)快取機制之資料系統,該快取機制又使用對一資料儲存裝置的資料進行之同步及非同步預先提取。該系統在不引發額外的快取記憶體循序未命中之情況下避免實質違反堆疊特性。
在又一方面中,一種電腦程式產品包含計算裝置,用以根據循序未命中比率而計算增加空間到一快取記憶體的一循序清單之一邊際效用。亦設有決定裝置,該決定裝置憑經驗地決定增加空間到快取記憶體中之一隨機清單之一邊際效用。該電腦程式產品具有建立裝置,用以回應該計算及決定裝置而建立該循序清單的一所需大小。
在又一方面中,在與具有一循序清單及一隨機清單的至少一個快取記憶體相關聯之一處理器中,這兩份清單界定了個別的最近最少使用(LRU)部分,而每一LRU部分係與作業期間將改變的一個別之邊際效用相關聯,該處理器中設有邏輯,該邏輯包含於作業期間嘗試使該等邊際效用相等。
在另一方面中,一處理器係與一快取記憶體相關聯,以便執行將一新預先提取組的磁軌以及該組磁軌中之一非同步觸發磁軌移到一循序快取記憶體清單的一最近最常使用(MRU)部分之邏輯。該邏輯亦將該組磁軌中之未被存取的磁軌移到該循序快取記憶體清單的該MRU部分。
在又一方面中,與一快取記憶體相關聯的一處理器執行下列邏輯:決定一循序快取記憶體清單的大小是否超過一所需大小;以及根據該決定的結果而替換至少一個快取記憶體元件。
首先請參閱圖1,圖中示出一系統(10),該系統(10)示出可使用本發明的一非限制性環境。一般而言,本發明是一種管理用來緩衝儲存來自一較慢的記憶體的資料的一資料快取記憶體之系統。例如,可在諸如DB2及Oracle等的資料庫系統、諸如本發明受讓人的"Shark"系統等的RAID式系統、以及諸如個別硬碟機等的其他系統中實施本發明。因此,我們當了解,雖然圖1示出具有一"Shark"架構的一非限制性實施例,但是圖1只是代表了可使用本發明的環境。因此,可在一檔案系統、資料庫系統、或必須將空間分配給可變大小的資料物件之其他系統中實施本發明。在一實施例中,本發明的一個或多個處理器(電腦)可以是由國際商務機器股份有限公司(IBM)(Armonk,New York)製造的個人電腦、或其中包括在諸如AS400的商標下銷售且具有附屬的IBM網路站之電腦的任何電腦。
如圖所示,一個或多個處理器(12)可經由具有相關聯的連接器(18)之一主配接器陣列(16)而與一個或多個主電腦(14)通訊。此外該等一個或多個處理器(12)可經由個別的裝置配接器(22)而與諸如RAID組態的磁碟儲存系統(20)等較慢之儲存系統通訊。該等處理器(12)可具有自其他處理器接收通訊資訊之個別的非揮發性儲存裝置(non-volatile storage;簡稱NVS)(24)、以及個別的最好是以固態元件實施之資料快取記憶體(26)。一個或兩個處理器被程式設計成執行本發明之邏輯。
有關該邏輯,本說明書中之流程圖及虛擬碼例示了在電腦程式軟體中實施的且由處理器(12)執行的本發明邏輯之結構。熟悉此項技術者當可了解,該等流程圖及虛擬碼示出諸如電腦程式碼元件或電子電路等根據本發明而工作的邏輯元件之結構。顯然係由一機器元件在本發明的基本實施例中實施本發明,而該機器元件可使該等邏輯元件以一種指示一數位處理裝置(亦即,一電腦)之方式執行與流程圖所示者對應的一序列功能步驟。
換言之,可在由一處理器執行的一電腦程式中將該等流程圖及(或)虛擬碼實施為一系列的電腦可執行之指令。這些指令可存在於諸如系統(10)的一程式儲存裝置中。該程式儲存裝置可以是隨機存取記憶體(RAM)、磁碟、光碟、或軟碟、DASD陣列、磁帶、電子唯讀記憶體(ROM)、或其他適當的資料儲存裝置。在本發明的一實施例中,該等電腦可執行的指令可以是若干行的編譯後之C/C++相容指令碼。
在所示之非限制性實施例中,每一快取記憶體(26)具有八十億位元組(8 GB)(每一叢集)的一容量,每一NVS(24)具有二十億(2 GB)(每一叢集)的一容量,可使用四個600 MHz PowerPC/RS641V CPU(每一叢集),且可將具有72GB、10K rpm的磁碟之十六個RAID-5(6+同位元檢查+備援)陣列用於資料儲存系統(20)。一AIX電腦可以下列組態實施主電腦(14):16 GB RAM、具有1 GHz PowerPC/Power4 CPU的二路對稱式多重處理(SMP)。主電腦(14)可經由實施主配接器陣列(16)的兩個光纖通道介面卡而被連接到該等處理器(12)。
現在請參閱圖2,每一快取記憶體(26)可包含兩個堆疊清單,亦即,一隨機RANDOM清單(28)及一循序("SEQ")清單(30)。隨機清單(28)列出可根據諸如一讀取需求而已隨機存取的快取分頁,而SEQ清單(30)維護係根據推測式循序快取或循序讀取需求而已快取的分頁之一清單,本說明書中將述及該等清單的原理。在每一清單(28)、(20)的頂部是其最近最常使用(MRU)的分頁,而清單的底部是最近最少使用(LRU)的分頁。可將每一清單底部(例如,2%)的一個別部分(32)、(34)視為一LRU部分。有關SEQ清單(30),係根據下文所述之邏輯而動態決定並調整該清單的LRU部分之所需大小(36),以便將快取記憶體的效能最佳化。
如同一傳統的LRU式快取記憶體,最好是將一新預先提取組的磁軌以及現行組的磁軌中之非同步觸發磁軌放置在SEQ清單(30)的MRU(頂部)端。此外,根據本發明的原理,也將該現行組的磁軌中之所有未被存取的磁軌移到清單(30)的MRU端,以便保留非同步預先提取的好處,且同時消除前文所述的不恰當狀況。
現在請參閱圖3,圖中示出本發明創新的適應性自行調整且低額外負擔之演算法,該演算法動態分割SEQ清單(30)及隨機清單(28)中之快取記憶體空間量,以便將整體的未命中率降至最低。該方法開始於步驟(38),此時計算增加空間到SEQ清單(30)的邊際效用。在一非限制性實施例中,係在步驟(38)中將該邊際效用計算為介於s/L與2 s/L之間,且可為了方便而選擇後者,其中"s"代表同步與非同步預先提取間之循序快取記憶體未命中比率,且"L"代表SEQ清單(30)的長度(例如,以4KB的分頁為單位)。在一實施例中,"s"是可能有的多個資料流的個別同步與非同步預先提取間之循序快取記憶體未命中比率之總和,該總和是易於觀測的。可將該"邊際效用"視為當該清單的大小改變時的循序快取記憶體未命中比率改變方式之一衡量值。
在圖3中,步驟(40)示出:也係憑經驗地決定增加空間到隨機清單(28)之邊際效用。在一非限制性實施例中,係將該邊際效用決定為1/△L,其中△L是對隨機清單(28)的最底部部分的連續兩次快取記憶體命中所界定的一時間期間之隨機清單(28)的最底部部分之長度。因此,可自行根據實際工作狀況而調整在步驟(40)中進行該憑經驗地決定時之抽樣時間期間,但是亦可使用某一固定的時間期間。
一旦得到了前文所述的兩個邊際效用之後,該邏輯進入決定步驟(42),以便決定哪一邊際效用是較大的。如果增加循序快取記憶體的邊際效用超過增加隨機快取記憶體的邊際效用,則該邏輯在步驟(44)中增加SEQ清單(30)的所需大小(36)(圖2);否則,在步驟(46)中減少該所需大小(36)。
圖4示出替換快取記憶體中之分頁的一非限制性例示邏輯流程圖。該邏輯開始於決定步驟(48),此時可決定一邊界狀況是否存在。邊界狀況的非限制性例子包括隨機清單(28)小於整體快取記憶體大小的2%或超過整體快取記憶體大小的98%。如果不曾執行過下文虛擬碼所示之起始化,則存在另一邊界狀況。
如果一邊界狀況存在,則該邏輯可進入決定步驟(50),以便決定SEQ清單(30)中之LRU磁軌是否比隨機清單(28)中之LRU磁軌舊,而我們當了解:該測試根據此項技術中習知的原理而使用所快取的資料被賦予的時戳。如果決定步驟(50)中之測試結果是否定的,則該邏輯在步驟(52)中以來自隨機清單(28)的一分頁進行替換;否則,該邏輯在步驟(54)中以來自SEQ清單(30)的一分頁進行替換。
然而,如果邊界狀況並不存在,則該邏輯進入步驟(56),以便決定SEQ清單(30)的至少一部分(例如,圖2所示之LRU部分(34))之大小是否超過所需大小(36)。如果確係如此,則該邏輯進入步驟(54),否則該邏輯進入步驟(52)。
圖3所示之邏輯持續地或定期地回到步驟(38),以便在作業期間動態建立SEQ清單(30)的LRU部分之所需大小,並於快取記憶體使用上有要求時改變該所需大小。
下文之虛擬碼是可自我解釋的,但是藉由該虛擬碼的第6及12行進一步的解釋,可決定對其中一份清單的一命中是否真的在LRU部分△L中。因此,如果TMRU及TLRU分別表示SEQ清單中之MRU及LRU磁軌的時戳,L表示SEQ清單中以分頁為單位的大小,且THIT表示被命中磁軌的時戳,此時如果(THIT-TLRU)△L/L(TMRU-TLRU),則已發生一底部的命中。可將相同的計算用來決定隨機清單中之底部命中。
下文中之虛擬碼使用與一特定實施例有關且是非限制性的三個限制限制條件:(i)"m"(第18及32行)表示同步及非同步預先讀取的程度;(ii)"g"(第18及32行)表示當在一RAID裝置中實施本發明時的一RAID組中之磁碟的數目;以及(iii)"triggerOffset"(第49行)是自一預先提取組的磁軌之末端算起之位移量,且被用來區分非同步觸發。
只在起始化階段使用第1-3行。計數器"seqmiss"追蹤連續兩次命中隨機清單底部之間的循序未命中次數,且該計數器之起始值被設定為零。變數"desiredSeqListSize"是SEQ清單(30)的所需大小(36),且該變數的起始值被設定為零,意指開始時存在有一邊界狀況。因而只在SEQ被寫入之後才開始進行其餘的邏輯(請參閱第69-73行)。變數"adapt"決定對desiredSeqListSize的調整之瞬間大小及方向。
第4-50行描述快取記憶體管理策略。在某些非限制性實施例中,可將第4行中之量比率設定為(2*s*△L)/L。
第5-10行處理隨機清單中之一磁軌被命中時的情況。如果該命中發生在隨機清單的底部部分(第6行),則將"seqmiss"重新設定為零(第7行),這是因為連續兩次命中隨機清單底部之間的循序未命中次數是要被注意的。第8行將變數"adapt"設定為等於{2.seqmiss.△L}/L-1。然而,不容許"adapt"超過1或小於-1。檢視到如果"adapt"大於零,則最好是增加desiredSeqListSize;反之,則最好是減少desiredSeqListSize。在第70行中執行該增加或減少。此外,當SEQ清單與隨機清單的邊際效用間之不相等量較大時,"adapt"的量也較大,因而採用一較快的調整速率,而當這兩個邊際效用是差不多相等時,"adapt"將接近零,且將採用一較慢的調整速率。最後,只有在實際自其中一份清單清除一磁軌時,才執行第70行(該行程式碼執行執行實際的調整)。
第11-27行處理SEQ清單中之一磁軌被命中時的情況。如果該命中發生在SEQ清單的底部部分(第12行),且"比率"變得較大(第13行),換言之,在一段時間中不曾觀測到發生在隨機清單底部的命中,則將"adapt"設定為1(第14行),意指以可能達到的快速率增加"desiredSeqListSize"。如果被命中的磁軌是一非同步觸發磁軌(第17行),則第18行非同步預先讀取次一接續組的磁軌。第21-27行描述一種偵測循序存取型樣的非限制性方式之實施例。
第28-40行處理一快取記憶體未命中。對於一循序未命中(第29-31行)而言,在第32行中同步預先讀取一組磁軌。其餘各行處理對循序存取型樣的偵測。
第41-50行執行下列各項:(i)自一特定範圍的磁軌讀取未命中的磁軌;(ii)將該特定範圍中之所有磁軌放置在MRU部分;以及(iii)設定非同步觸發。第51-73行執行前文中參照圖4所述之快取記憶體替換策略,並執行所需大小的調整。如同典型的多緒執行系統,本發明假設可在個別的執行緒上執行這些行的程式碼(第51行)。如果未被使用的佇列之大小低於某一預定之臨界值(第52行),在該大小超過desiredSeqListSize情形下,自SEQ清單清除磁軌;反之,則自隨機清單清除磁軌。不論在哪一種情況,將被清除的磁軌放置在未被使用的佇列。最後,第68-73行自所需清單清除LRU磁軌,且以前文所述之方式完成一調整。
起始化:將調整變數設定為0。
1:Set seqMiss to 0 2:Set"adapt"to 0 3:Set desiredSeqListSize to 0
快取記憶體管理策略:要求磁軌x:4:Set ratio=(2.seqMiss.△L)/seqListSize 5:case i:x is an element of RANDOM(H I T
)6:if x is an element of RANDOM BOTTOM then 7:Reset seqMiss=0 8:Set"adapt"=max(-1,min(ratio-1,1))9:endif 10:Mru(x,RANDOM)11:case ii:x is an element of SEQ(H I T
)12:if x is an element of SEQ BOTTOM then 13:if(ratio>20)then 14:Set"adapt"=1 15:endif 16:endif 17:if x is AsyncTrigger then 18:ReadAndMru([x+1,x+m-x%g],SEQ)19:endif 20:Mru(x,SEQ)21:if track(x-1)is an element of(SEQ union with RANDOM)then 22:if(seqCounter(x-1)==0)then 23:Set seqCounter(x)=max(seqThreshold,seqCounter(x-1)+1)24:endif 25:else 26:Set seqCounter(x)=1 27:endif 28:case iii:x is not an element of(SEQ union with RANDOM)(M I S S
)29:if(x-1)is an element of(SEQ union with RANDOM)then 30:if seqCounter(x-1)==seqThrreshold then 31:seqMiss++ 32:ReadAndMru([x,x+m-x%g],SEQ)33:Set seqCounter(x)=seqThreshold 34:else 35:ReadAndMru([x,x],RANDOM)36:Set seqCounter(x)=seqCounter(x-1)+1 37:endif 38:else 39:Set seqCounter(x)=1 40:endif
快取記憶體管理策略(續):ReadAndMru([Start,end],listType)41:toreach track t in[start,end];do 42:if t is not an element of(SEQ union with RANDOM)then 43:grab a frce track from FreeQ 44 read track t from disk 45:endif 46:Mru(t,listType)47:done 48:if(listType==SEQ)49:Set AsyncTrigger as(end-triggeroffset)50:endif
未被使用的佇列管理:FreeQTread()51:while(true)do 52:if length(FreeQ)<FreeQThreshold then 53:if(seqListSize<△L or randomListSize<△L)then 54:if(lru track of SEQ is older than lru track of RANDOM)then 55:EvictLruTrackAndAdapt(SEQ)56:else 57:EvictLruTrackAndAdapt(RANDOM)58:endif 59:else 60:if(seqListSize>desiredSeqListSize)then 61:EvictLruTrackAndAdapt(SEQ)62:else 63:EvictLruTrackAndAdapt(RANDOM)64:endif 65:endif 66:endif 67:endwhile EvictLruTrackAndAdapt(listType)68:evict lru track in listType and add it to FreeQ 69:if(desiredSeqListSize>0)then 70:Set desiredSeqListSize+="adapt"/2 71:else 72:Set desiredSeqListSize=seqListSize 73:endif
總結而言,本發明將快取作業與循序預先提取結合,且無須保存一歷史資料。
雖然本說明書中詳細示出及說明的用於動態建立快取記憶體循序清單大小之系統及方法完全可達到前文所述的本發明之目的,但是我們當了解:該系統及方法是本發明的較佳實施例,且因而代表了本發明所廣泛考慮到的主題;本發明的範圍完全包含熟悉此項技術者顯然易知的其他實施例;以及本發明的範圍因而只受最後的申請專利範圍之限制,而在申請專利範圍中,以單數形提及一元件時,除非有明確地陳述,否則並非意指"一個且只有一個",而是意指"一個或多個"。一裝置或方法並不必然要解決本發明試圖解決的各個及每一問題,這是因為本發明的申請專利範圍已包含了此一方面。此外,本發明所揭示的任何元件、組件、或方法步驟都將不"貢獻給公眾"(dedicated to the public),且不論是否在申請專利範圍中明確地述及該等元件、組件、或方法步驟都是如此。在本說明書中並無明確的定義時,申請專利範圍的術語將具有不與本說明書及檔案歷史資料不相容的所有通常慣用的意義。
10...系統
12...處理器
14...主電腦
16...主配接器陣列
18...連接器
20...磁碟儲存系統
22...裝置配接器
24...非揮發性儲存裝置
26...資料快取記憶體
28...隨機清單
30...循序清單
32,34...LRU部分
36...所需大小
若參照各附圖,將可對本發明的結構及作業細節有最佳的了解,而在該等附圖中,相同的代號表示類似的部分,在這些圖式中:圖1是可使用本發明的快取記憶體管理策略的一非限制性系統之一方塊圖;圖2是快取記憶體中之隨機分頁清單及循序清單之一示意圖;圖3是快取記憶體大小管理邏輯之一流程圖;以及圖4是快取記憶體替換邏輯之一流程圖。
10...系統
12...處理器
14...主電腦
16...主配接器陣列
18...連接器
20...磁碟儲存系統
22...裝置配接器
24...非揮發性儲存裝置
26...資料快取記憶體
Claims (20)
- 一種快取資料之方法,包含下列步驟:維護一隨機資料清單及一循序資料清單;以及動態建立該循序資料清單的一所需大小,其中該建立步驟包含下列步驟:憑經驗地決定增加空間到該隨機資料清單的一邊際效用;根據循序未命中比率而計算增加空間到該循序資料清單的一邊際效用;以及根據該計算及決定步驟而建立該循序資料清單的該所需大小。
- 如請求項1之方法,其中建立該循序資料清單的該所需大小之該步驟包含下列步驟:如果增加空間到該循序資料清單的該所計算之邊際效用超過增加空間到該隨機資料清單的該憑經驗地決定之邊際效用,則增加該所需大小;以及如果並非如此,則減少該所需大小。
- 一種快取資料之方法,包含下列步驟:維護一隨機資料清單及一循序資料清單;以及動態建立該循序資料清單的一所需大小,其中該建立步驟包含下列步驟:憑經驗地決定增加空間到該隨機資料清單的一邊際效用;根據循序未命中比率而計算增加空間到該循序資料清 單的一邊際效用;以及根據該計算及決定步驟而建立該循序資料清單的該所需大小,其中該憑經驗地決定步驟包含下列步驟:將一循序未命中比率"s"決定為兩次連續快取記憶體命中該隨機資料清單的一底部部分△L所界定的一時間期間中之循序未命中次數,其中該計算步驟決定該邊際效用等於s/L(含)與2s/L(含)之間的一數目,其中s代表同步與非同步預先提取間之循序未命中比率,且L代表該循序資料清單的長度。
- 如請求項3之方法,其中建立該循序資料清單的該所需大小之該步驟包含下列步驟:如果增加空間到該循序資料清單的該所計算之邊際效用超過增加空間到該隨機資料清單的該憑經驗地決定之邊際效用,則增加該所需大小;以及如果並非如此,則減少該所需大小。
- 如請求項3之方法,包含下列步驟:將至少一新預先提取組的資料單位以及該組資料單位中之一非同步觸發資料單位移到該循序資料清單的一最近最常使用(MRU)部分;以及將該組資料單位中之至少某些未被存取的資料單位移到該循序資料清單的該MRU部分。
- 如請求項3之方法,包含下列步驟:決定該循序資料清單的至少一部分之大小是否超過該所需大小;以及 根據決定該循序資料清單的至少一部分之大小是否超過該所需大小之該步驟而替換至少一個快取記憶體元件。
- 一種快取資料之方法,包含下列步驟:維護一隨機資料清單及一循序資料清單;以及動態建立該循序資料清單的一所需大小,其中該建立步驟包含下列步驟:憑經驗地決定增加空間到該隨機資料清單的一邊際效用;根據循序未命中比率而計算增加空間到該循序資料清單的一邊際效用;以及根據該計算及決定步驟而建立該循序資料清單的該所需大小,其中該憑經驗地決定步驟包含下列步驟:將一循序未命中比率"s"決定為兩次連續快取記憶體命中該隨機資料清單的一底部部分△L所界定的一時間期間中之循序未命中次數,其中△L係一長度,及進一步其中建立該循序資料清單的該所需大小之該步驟包含下列步驟:如果增加空間到該循序資料清單的該所計算之邊際效用超過增加空間到該隨機資料清單的該憑經驗地決定之邊際效用,則增加該所需大小;以及如果並非如此,則減少該所需大小;將至少一新預先提取組的資料單位以及該組資料單位中之一非同步觸發資料單位移到該循序資料清單的一最近最常使用(MRU)部分;以及 將該組資料單位中之至少某些未被存取的資料單位移到該循序資料清單的該MRU部分。
- 一種使用一最近最少使用(LRU)快取機制之資料系統,該快取機制使用對一資料儲存裝置的資料進行之同步及非同步預先提取,該系統至少部分地藉由決定增加空間到一循序清單的一邊際效用等於s/L(含)與2s/L(含)之間的一數目,其中L代表該循序資料清單的長度及"s"係一循序未命中比率,而在不實質引發額外的快取記憶體循序未命中之情況下避免違反堆疊特性。
- 如請求項8之系統,其中該系統執行包含下列步驟之邏輯:憑經驗地決定增加空間到一隨機清單的一邊際效用;以及根據該決定及憑經驗地決定步驟而動態建立該循序清單的一所需大小。
- 如請求項9之系統,其中該邏輯係以下列方式執行該憑經驗地決定步驟:將一循序未命中比率"s"決定為兩次連續快取記憶體命中該隨機清單的一底部部分△L所界定的一時間期間中之循序未命中次數。
- 如請求項8之系統,其中該系統執行包含下列步驟之邏輯:將至少一新預先提取組的資料單位以及該組資料單位中之一非同步觸發資料單位移到一循序資料清單的一最近最常使用(MRU)部分;以及 將該組資料單位中之至少某些未被存取的資料單位移到該循序資料清單的該MRU部分。
- 如請求項8之系統,其中該系統執行包含下列步驟之邏輯:決定一循序資料清單的至少一部分之大小是否超過一所需大小;以及根據決定該循序資料清單的至少一部分之大小是否超過該所需大小之結果而替換至少一個快取記憶體元件。
- 一種使用一最近最少使用(LRU)快取機制之資料系統,該快取機制使用對一資料儲存裝置的資料進行之同步及非同步預先提取,該系統至少部分地藉由決定增加空間到一循序清單的一邊際效用等於s/L(含)與2s/L(含)之間的一數目,其中L代表該循序資料清單的長度及"s"係一循序未命中比率,而在不實質引發額外的快取記憶體循序未命中之情況下避免違反堆疊特性,其中該系統執行包含下列步驟之邏輯:憑經驗地決定增加空間到一隨機清單的一邊際效用;以及根據該決定及憑經驗地決定步驟而動態建立該循序清單的一所需大小,其中該邏輯係以下列方式執行該憑經驗地決定步驟:將一循序未命中比率"s"決定為兩次連續快取記憶體命中該隨機清單的一底部部分△L所界定的一時間期間中之循序未命中次數,及進一步其中該系統執行包含下列步驟之邏輯: 將至少一新預先提取組的資料單位以及該組資料單位中之一非同步觸發資料單位移到一循序資料清單的一最近最常使用(MRU)部分;以及將該組資料單位中之至少某些未被存取的資料單位移到該循序資料清單的該MRU部分。
- 一種在一電腦可讀媒體上之電腦程式產品,包含:維護一隨機清單之構件;維護一循序清單之構件;對循序資料進行同步及非同步預先提取之構件;根據循序未命中比率而計算增加空間到該循序清單的一邊際效用之構件;憑經驗地決定增加空間到該隨機清單的一邊際效用之構件;回應該計算及決定構件而建立該循序清單的一所需大小之構件;將一循序未命中比率"s"決定為兩次連續快取記憶體命中該隨機清單的一底部部分△L所界定的一時間期間中之循序未命中次數之構件;以及計算s/L(含)及2s/L(含)之構件,其中L代表該循序清單的長度。
- 如請求項14之電腦程式產品,包含:將至少一新預先提取組的資料單位以及該組資料單位中之一非同步觸發資料單位移到該循序清單的一最近最常使用(MRU)部分之構件;以及 將該組資料單位中之至少某些未被存取的資料單位移到該循序清單的該MRU部分之構件。
- 如請求項14之電腦程式產品,包含:決定一循序清單的至少一部分之大小是否超過一所需大小之構件;以及根據決定該循序資料清單的至少一部分之大小是否超過該所需大小之該構件而替換至少一個快取記憶體元件之構件。
- 一種與具有一循序清單及一隨機清單的至少一個快取記憶體相關聯之一處理器,這兩份清單界定了個別的最近最少使用(LRU)部分,而每一LRU部分係與作業期間將改變的一個別邊際效用相關聯,該處理器中設有邏輯,該邏輯包含於作業期間嘗試使該等邊際效用相等,其中該邏輯包含下列步驟:根據循序未命中比率而計算增加空間到該循序清單的一邊際效用;憑經驗地決定增加空間到該隨機清單的一邊際效用;根據該計算及決定步驟而建立該循序清單的所需大小,其中該邏輯包含下列步驟:將一循序未命中比率"s"決定為兩次連續快取記憶體命中該隨機清單的一底部部分△L所界定的一時間期間中之循序未命中次數,其中該邏輯將邊際效用決定為等於s/L(含)與2s/L(含)之間的一數目,其中L代表該循序清單的長度。
- 如請求項17之處理器,其中該邏輯包含下列步驟:如果 增加空間到該循序清單的該所計算之邊際效用超過增加空間到該隨機清單的該憑經驗地決定之邊際效用,則增加該所需大小;以及如果並非如此,則減少該所需大小。
- 如請求項17之處理器,其中該邏輯包含下列步驟:將至少一新預先提取組的資料單位以及該組資料單位中之一非同步觸發資料單位移到該循序清單的一最近最常使用(MRU)部分;以及將該組資料單位中之至少某些未被存取的資料單位移到該循序清單的該MRU部分。
- 如請求項17之處理器,其中該邏輯包含下列步驟:決定該循序清單的至少一部分之大小是否超過一所需大小;以及根據決定該循序清單的至少一部分之大小是否超過該所需大小之結果而替換至少一個快取記憶體元件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/954,937 US7464246B2 (en) | 2004-09-30 | 2004-09-30 | System and method for dynamic sizing of cache sequential list |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200627144A TW200627144A (en) | 2006-08-01 |
TWI393004B true TWI393004B (zh) | 2013-04-11 |
Family
ID=36100559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094133273A TWI393004B (zh) | 2004-09-30 | 2005-09-26 | 用於動態改變快取記憶體順序清單大小之系統以及方法 |
Country Status (3)
Country | Link |
---|---|
US (5) | US7464246B2 (zh) |
CN (1) | CN100442249C (zh) |
TW (1) | TWI393004B (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7464246B2 (en) * | 2004-09-30 | 2008-12-09 | International Business Machines Corporation | System and method for dynamic sizing of cache sequential list |
US7260679B2 (en) * | 2004-10-12 | 2007-08-21 | International Business Machines Corporation | Apparatus and method to manage a data cache using a first and second least recently used list |
US8250316B2 (en) * | 2006-06-06 | 2012-08-21 | Seagate Technology Llc | Write caching random data and sequential data simultaneously |
CN100426258C (zh) * | 2006-09-08 | 2008-10-15 | 威盛电子股份有限公司 | 嵌入式系统及其缓冲器尺寸决定方法 |
US7783839B2 (en) | 2007-01-08 | 2010-08-24 | International Business Machines Corporation | Using different algorithms to destage different types of data from cache |
US7702857B2 (en) * | 2007-08-22 | 2010-04-20 | International Business Machines Corporation | Adjusting parameters used to prefetch data from storage into cache |
US8239640B2 (en) * | 2008-10-09 | 2012-08-07 | Dataram, Inc. | System for controlling performance aspects of a data storage and access routine |
KR101570179B1 (ko) * | 2008-12-08 | 2015-11-18 | 삼성전자주식회사 | 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템 |
US8914417B2 (en) | 2009-01-07 | 2014-12-16 | International Business Machines Corporation | Apparatus, system, and method for maintaining a context stack |
US8095738B2 (en) * | 2009-06-15 | 2012-01-10 | International Business Machines Corporation | Differential caching mechanism based on media I/O speed |
US8510785B2 (en) * | 2009-10-19 | 2013-08-13 | Motorola Mobility Llc | Adaptive media caching for video on demand |
WO2011106458A1 (en) * | 2010-02-24 | 2011-09-01 | Marvell World Trade Ltd. | Caching based on spatial distribution of accesses to data storage devices |
CN101894048B (zh) * | 2010-05-07 | 2012-11-14 | 中国科学院计算技术研究所 | 一种基于阶段分析的缓存动态划分方法和系统 |
CN101853218B (zh) * | 2010-05-12 | 2015-05-20 | 中兴通讯股份有限公司 | 用于磁盘阵列的读取方法和系统 |
US9043533B1 (en) * | 2010-06-29 | 2015-05-26 | Emc Corporation | Sizing volatile memory cache based on flash-based cache usage |
US8590001B2 (en) * | 2010-08-20 | 2013-11-19 | Promise Technology, Inc. | Network storage system with data prefetch and method of operation thereof |
US8812788B2 (en) | 2010-11-09 | 2014-08-19 | Lsi Corporation | Virtual cache window headers for long term access history |
US8533393B1 (en) * | 2010-12-14 | 2013-09-10 | Expedia, Inc. | Dynamic cache eviction |
US8650354B2 (en) * | 2011-07-22 | 2014-02-11 | International Business Machines Corporation | Prefetching tracks using multiple caches |
US8631190B2 (en) | 2011-07-22 | 2014-01-14 | International Business Machines Corporation | Prefetching data tracks and parity data to use for destaging updated tracks |
US8566530B2 (en) | 2011-07-22 | 2013-10-22 | International Business Machines Corporation | Prefetching source tracks for destaging updated tracks in a copy relationship |
US9069678B2 (en) | 2011-07-26 | 2015-06-30 | International Business Machines Corporation | Adaptive record caching for solid state disks |
CN102298508B (zh) * | 2011-09-07 | 2014-08-06 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
US9110810B2 (en) * | 2011-12-06 | 2015-08-18 | Nvidia Corporation | Multi-level instruction cache prefetching |
US10698826B1 (en) | 2012-01-06 | 2020-06-30 | Seagate Technology Llc | Smart file location |
US9268692B1 (en) | 2012-04-05 | 2016-02-23 | Seagate Technology Llc | User selectable caching |
US9542324B1 (en) | 2012-04-05 | 2017-01-10 | Seagate Technology Llc | File associated pinning |
US10339069B2 (en) * | 2012-09-28 | 2019-07-02 | Oracle International Corporation | Caching large objects in a computer system with mixed data warehousing and online transaction processing workload |
CN103778069B (zh) * | 2012-10-18 | 2017-09-08 | 深圳市中兴微电子技术有限公司 | 高速缓冲存储器的高速缓存块长度调整方法及装置 |
US9497489B2 (en) | 2013-03-12 | 2016-11-15 | Google Technology Holdings LLC | System and method for stream fault tolerance through usage based duplication and shadow sessions |
DE102013204469A1 (de) * | 2013-03-14 | 2014-09-18 | Robert Bosch Gmbh | Mikroelektrochemischer Sensor und Verfahren zum Betreiben eines mikroelektrochemischen Sensors |
US9652406B2 (en) * | 2015-04-30 | 2017-05-16 | International Business Machines Corporation | MRU batching to reduce lock contention |
US9996476B2 (en) | 2015-09-03 | 2018-06-12 | International Business Machines Corporation | Management of cache lists via dynamic sizing of the cache lists |
US20170116127A1 (en) * | 2015-10-22 | 2017-04-27 | Vormetric, Inc. | File system adaptive read ahead |
KR102429903B1 (ko) * | 2015-12-03 | 2022-08-05 | 삼성전자주식회사 | 비휘발성 메인 메모리 시스템의 페이지 폴트 처리 방법 |
KR20180097220A (ko) * | 2017-02-23 | 2018-08-31 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 동작 방법 |
US10248577B2 (en) | 2017-04-07 | 2019-04-02 | International Business Machines Corporation | Using a characteristic of a process input/output (I/O) activity and data subject to the I/O activity to determine whether the process is a suspicious process |
US10282543B2 (en) | 2017-05-03 | 2019-05-07 | International Business Machines Corporation | Determining whether to destage write data in cache to storage based on whether the write data has malicious data |
US10445497B2 (en) | 2017-05-03 | 2019-10-15 | International Business Machines Corporation | Offloading processing of writes to determine malicious data from a first storage system to a second storage system |
KR102415875B1 (ko) * | 2017-07-17 | 2022-07-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US20190303037A1 (en) * | 2018-03-30 | 2019-10-03 | Ca, Inc. | Using sequential read intention to increase data buffer reuse |
US11176052B2 (en) | 2019-05-12 | 2021-11-16 | International Business Machines Corporation | Variable cache status for selected volumes within a storage system |
US11151035B2 (en) | 2019-05-12 | 2021-10-19 | International Business Machines Corporation | Cache hit ratios for selected volumes within a storage system |
US11237730B2 (en) | 2019-05-12 | 2022-02-01 | International Business Machines Corporation | Favored cache status for selected volumes within a storage system |
US11169919B2 (en) | 2019-05-12 | 2021-11-09 | International Business Machines Corporation | Cache preference for selected volumes within a storage system |
US11163698B2 (en) * | 2019-05-12 | 2021-11-02 | International Business Machines Corporation | Cache hit ratios for selected volumes using synchronous I/O |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761715A (en) * | 1995-08-09 | 1998-06-02 | Kabushiki Kaisha Toshiba | Information processing device and cache memory with adjustable number of ways to reduce power consumption based on cache miss ratio |
US6260115B1 (en) * | 1999-05-13 | 2001-07-10 | Storage Technology Corporation | Sequential detection and prestaging methods for a disk storage subsystem |
TW497033B (en) * | 1997-06-12 | 2002-08-01 | Ibm | Cache address generation |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432919A (en) * | 1989-07-06 | 1995-07-11 | Digital Equipment Corporation | Sequential reference management for cache memories |
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
US6327644B1 (en) | 1998-08-18 | 2001-12-04 | International Business Machines Corporation | Method and system for managing data in cache |
US6141731A (en) | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
US6684294B1 (en) * | 2000-03-31 | 2004-01-27 | Intel Corporation | Using an access log for disk drive transactions |
US6785771B2 (en) | 2001-12-04 | 2004-08-31 | International Business Machines Corporation | Method, system, and program for destaging data in cache |
US6957305B2 (en) * | 2002-08-29 | 2005-10-18 | International Business Machines Corporation | Data streaming mechanism in a microprocessor |
US6961821B2 (en) * | 2002-10-16 | 2005-11-01 | International Business Machines Corporation | Reconfigurable cache controller for nonuniform memory access computer systems |
US6996676B2 (en) | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
US20060059311A1 (en) * | 2002-11-22 | 2006-03-16 | Van De Waerdt Jan-Willem | Using a cache miss pattern to address a stride prediction table |
US7464246B2 (en) * | 2004-09-30 | 2008-12-09 | International Business Machines Corporation | System and method for dynamic sizing of cache sequential list |
-
2004
- 2004-09-30 US US10/954,937 patent/US7464246B2/en not_active Expired - Fee Related
-
2005
- 2005-09-26 TW TW094133273A patent/TWI393004B/zh not_active IP Right Cessation
- 2005-09-29 CN CNB2005101070534A patent/CN100442249C/zh not_active Expired - Fee Related
-
2008
- 2008-02-18 US US12/032,851 patent/US7509470B2/en not_active Expired - Fee Related
- 2008-02-19 US US12/033,105 patent/US7533239B2/en not_active Expired - Fee Related
- 2008-04-01 US US12/060,431 patent/US7793065B2/en not_active Expired - Fee Related
- 2008-04-02 US US12/060,945 patent/US7707382B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761715A (en) * | 1995-08-09 | 1998-06-02 | Kabushiki Kaisha Toshiba | Information processing device and cache memory with adjustable number of ways to reduce power consumption based on cache miss ratio |
TW497033B (en) * | 1997-06-12 | 2002-08-01 | Ibm | Cache address generation |
US6260115B1 (en) * | 1999-05-13 | 2001-07-10 | Storage Technology Corporation | Sequential detection and prestaging methods for a disk storage subsystem |
Also Published As
Publication number | Publication date |
---|---|
US7533239B2 (en) | 2009-05-12 |
US7707382B2 (en) | 2010-04-27 |
US7509470B2 (en) | 2009-03-24 |
US7793065B2 (en) | 2010-09-07 |
TW200627144A (en) | 2006-08-01 |
CN100442249C (zh) | 2008-12-10 |
US20080195834A1 (en) | 2008-08-14 |
US7464246B2 (en) | 2008-12-09 |
US20080183969A1 (en) | 2008-07-31 |
US20060069871A1 (en) | 2006-03-30 |
US20080140940A1 (en) | 2008-06-12 |
CN1755652A (zh) | 2006-04-05 |
US20080140939A1 (en) | 2008-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI393004B (zh) | 用於動態改變快取記憶體順序清單大小之系統以及方法 | |
US6823428B2 (en) | Preventing cache floods from sequential streams | |
US8601216B2 (en) | Method and system for removing cache blocks | |
US6141731A (en) | Method and system for managing data in cache using multiple data structures | |
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
EP1149342B1 (en) | Method and apparatus for managing temporal and non-temporal data in a single cache structure | |
US20030105926A1 (en) | Variable size prefetch cache | |
US20030110357A1 (en) | Weight based disk cache replacement method | |
US7120759B2 (en) | Storage system and method for prestaging data in a cache for improved performance | |
US5224217A (en) | Computer system which uses a least-recently-used algorithm for manipulating data tags when performing cache replacement | |
US8874840B2 (en) | Adaptive prestaging in a storage controller | |
US6098153A (en) | Method and a system for determining an appropriate amount of data to cache | |
US20060069876A1 (en) | Method and system of clock with adaptive cache replacement and temporal filtering | |
JPH0531177B2 (zh) | ||
US7047362B2 (en) | Cache system and method for controlling the cache system comprising direct-mapped cache and fully-associative buffer | |
Fedorov et al. | Speculative paging for future NVM storage | |
US20050108478A1 (en) | Dynamic frequent instruction line cache | |
KR100900489B1 (ko) | 디스크 어레이 매스 프리페칭 방법 | |
US20010032297A1 (en) | Cache memory apparatus and data processing system | |
JP2013041414A (ja) | 記憶制御システムおよび方法、置換方式および方法 | |
KR100981884B1 (ko) | 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법 | |
KR101976320B1 (ko) | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 | |
Yoon et al. | Access characteristic-based cache replacement policy in an SSD | |
CN109086224B (zh) | 一种自适应分类重用距离来捕捉热数据的缓存方法 | |
Shoa et al. | Distortion of matching pursuit: modeling and optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |