專利名稱:使用多個數(shù)據(jù)結(jié)構(gòu)管理高速緩存中的數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種使用多個數(shù)據(jù)結(jié)構(gòu)管理高速緩存中的數(shù)據(jù)的方 法、系統(tǒng)和程序。
背景技術(shù):
高速緩存管理系統(tǒng)將在存儲設(shè)備內(nèi)保存的數(shù)據(jù)存儲在更快的訪 問介質(zhì)內(nèi),例如存儲器設(shè)備,以便可以從更快的訪問高速緩存存儲器 服務(wù)來自存儲器的數(shù)據(jù)請求。高速緩存管理系統(tǒng)可以保存鏈接列表, 其具有從存儲器進入高速緩存的每個數(shù)據(jù)單元的單個條目。在通常使
用的最近最少使用(Least Recently Used: LRU)高速緩存技術(shù)中, 如果訪問在高速緩存內(nèi)的數(shù)據(jù),即高速緩存"命中",則將用于所訪問 數(shù)據(jù)的LRU列表內(nèi)的條目移動到該列表的最近最常使用(Most Recently Used: MRU)端。如果所請求的數(shù)據(jù)不在高速緩存內(nèi),即高 速緩存未中,則可以刪除(或者降回存儲器)其條目在列表LRU端 的高速緩存內(nèi)的數(shù)據(jù),并將升入高速緩存的新數(shù)據(jù)的條目添加到LRU 列表的MRU端。使用這種LRU高速緩存技術(shù),較頻繁使用的數(shù)據(jù)可 保存在高速緩存內(nèi),而不經(jīng)常使用的數(shù)據(jù)將更可能被從該列表的LRU 端刪除以在高速緩存內(nèi)為新訪問的數(shù)據(jù)提供空間。
在異步計算環(huán)境內(nèi)(其中在多處理器環(huán)境內(nèi)的多個線程或不同處 理器正在從同一高速緩存訪問數(shù)據(jù)),由鎖保護MRU條目使對MRU 條目的訪問串行化。這意味著一個或多個線程必需等待保持MRU條 目上的鎖(lock)的線程以完成它們的高速緩存命中或未中操作。在 多線程環(huán)境中,存在對該鎖的大量竟?fàn)?,因為所有的高速緩存命中?高速緩存未中都要求訪問這個鎖。對于高性能和高吞吐量的環(huán)境,例
如虛擬存儲器、數(shù)據(jù)庫、文件系統(tǒng)和存儲器控制器,并不希望這種竟 爭。
圖1圖示在現(xiàn)有技術(shù)中公知的管理從存儲設(shè)備高速緩存的數(shù)據(jù)的
時鐘數(shù)據(jù)結(jié)構(gòu)(或者"時鐘")2。該時鐘2包括環(huán)形緩沖器。該時鐘包 括指在該時鐘2的頭部條目6和尾部條目8之間的時鐘指針4。將來 自存儲器的數(shù)據(jù)添加到頭部條目6。該時鐘算法保存用于每個時鐘2 條目或頁面的"頁面參考比特"。當(dāng)?shù)谝淮螌?shù)據(jù)從存儲器帶入高速緩 存時,將用于所高速緩存數(shù)據(jù)的條目的頁面參考比特設(shè)置為零。當(dāng)訪 問高速緩存內(nèi)的數(shù)據(jù)時,將用于所訪問數(shù)據(jù)的頁面參考比特設(shè)置為一。
為了使用從存儲器最新訪問的數(shù)據(jù)替換高速緩存內(nèi)的數(shù)據(jù),如果 在時鐘指針4上的頭部條目8具有頁面參考比特零,則將與頭部條目 8對應(yīng)的數(shù)據(jù)從高速緩存降級,并將新頁面的相關(guān)信息添加到頭部條 目6。如果用于當(dāng)前頭部條目8的頁面參考比特是一,則將該頁面參 考比特重新設(shè)置為零,并將時鐘指針4沿時鐘2向前移動直到發(fā)現(xiàn)具 有為零的頁面參考比特的頭部條目8以替換。在虛擬存儲應(yīng)用中,可 以通過硬件改變頁面參考比特。
時鐘高速緩存技術(shù)的一個優(yōu)點是不需要為了高速緩存命中將頁 面移動到MRU位置,例如對于LRU高速緩存技術(shù)的情況,其需要鎖 和串行化以將LRU列表內(nèi)用于所訪問數(shù)據(jù)的條目移動到MRU位置。 此外,時鐘高速緩存技術(shù)的命中比率通??膳cLRU高速緩存方法的 比率相比較。因此,在多種操作系統(tǒng)和應(yīng)用程序內(nèi)使用時鐘高速緩存 技術(shù)的變型。然而,當(dāng)將頁面添加到時鐘結(jié)構(gòu)的頭部條目8時,依然 需要時鐘用于高速緩存未中。因而,當(dāng)替換高速緩存內(nèi)的數(shù)據(jù)時,LRU 和時鐘高速緩存技術(shù)都需要鎖定竟?fàn)帯?br>
因為這些原因,在技術(shù)上需要提供用于管理高速緩存內(nèi)的數(shù)據(jù)的技術(shù)。
發(fā)明內(nèi)容
提供用于使用多個數(shù)據(jù)結(jié)構(gòu)管理高速緩存內(nèi)的數(shù)據(jù)的方法、系統(tǒng)
和程序。多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到 第二計算機可讀介質(zhì)的數(shù)據(jù)的條目。接收對第一計算機可讀介質(zhì)內(nèi)數(shù)
據(jù)的請求。確定在數(shù)據(jù)結(jié)構(gòu)之一中是否存在用于所請求數(shù)據(jù)的條目。 響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,從第一 計算機可讀介質(zhì)檢索所請求的數(shù)據(jù)以存儲在第二計算機可讀介質(zhì)內(nèi)。 響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,選擇數(shù) 據(jù)結(jié)構(gòu)之一,并將用于所檢索數(shù)據(jù)的條目添加到選定數(shù)據(jù)結(jié)構(gòu)。
在又一種實施例中,選擇數(shù)據(jù)結(jié)構(gòu)之一包括隨機地選擇數(shù)據(jù)結(jié)構(gòu)
之一》
在又一種實施例中,響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所 請求數(shù)據(jù)的條目,確定第二計算機可讀介質(zhì)是否具有可用于存儲所檢 索的所請求數(shù)據(jù)的空間。響應(yīng)于確定第二計算機可讀介質(zhì)不具有可用 空間,從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目。使用于選定條目的數(shù)據(jù)從第 二計算機可讀介質(zhì)中降級。
在又一種實施例中,響應(yīng)于確定第二計算機可讀介質(zhì)不具有可用 空間、從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目包括確定具有最舊條目的其中 一個數(shù)據(jù)結(jié)構(gòu),其中選定條目包括在所確定數(shù)據(jù)結(jié)構(gòu)內(nèi)的最舊條目。
在又一種實施例中,響應(yīng)于確定第二計算機可讀介質(zhì)不具有可用 空間、從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目包括選擇數(shù)據(jù)結(jié)構(gòu)的隨機子集 和從選定隨機子集中逸擇一個數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)的最舊條目不新 于選定子集內(nèi)任何其它數(shù)據(jù)結(jié)構(gòu)內(nèi)的最舊條目。
在又一種實施例中,數(shù)據(jù)結(jié)構(gòu)包括最近最少使用(LRU)列表, 并且其中添加用于所檢索數(shù)據(jù)的條目包括將條目添加到選定LRU列 表的最近最常使用(MRU)端。
在又一種實施例中,數(shù)據(jù)結(jié)構(gòu)包括時鐘,其中每個時鐘包括在列 表中彼此相鄰的頭部和尾部條目,并且其中添加所檢索數(shù)據(jù)的條目包 括將條目添加到選定時鐘的頭部條目。
在又一種實施例中,時鐘內(nèi)的條目表示條目是否被訪問過。響應(yīng) 于確定在時鐘之一中沒有用于所請求數(shù)據(jù)的條目,確定第二計算機可
讀介質(zhì)是否具有可用空間以存儲所檢索的所請求數(shù)據(jù)。選擇時鐘之一 , 并確定時鐘內(nèi)被表示為尚未被訪問的 一個條目。使用于所確定條目的 數(shù)據(jù)從第二計算機可讀介質(zhì)中降級。
在又一種實施例中,多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機 可讀介質(zhì)添加到第二計算機可讀介質(zhì)的數(shù)據(jù)的條目。接收對第一計算 機可讀介質(zhì)內(nèi)的數(shù)據(jù)的請求,確定是否在數(shù)據(jù)結(jié)構(gòu)之一中存在用于所 請求數(shù)據(jù)的條目。響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在所請求數(shù)據(jù)的條 一個目,針對該數(shù)據(jù)請求從第二計算機可讀介質(zhì)訪問所請求的數(shù)據(jù)。
響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在所請求數(shù)據(jù)的一個條目,選擇數(shù)據(jù) 結(jié)構(gòu)之一,響應(yīng)于確定存在用于所請求數(shù)據(jù)的一個條目,將確定的用 于所請求數(shù)據(jù)的條目移動到選定的數(shù)據(jù)結(jié)構(gòu)。
在又一種實施例中,響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在所請求數(shù) 據(jù)的一個條目,隨機地選擇數(shù)據(jù)結(jié)構(gòu)。
在又一種實施例中,每個數(shù)據(jù)結(jié)構(gòu)是一組數(shù)據(jù)結(jié)構(gòu)的成員,所述
數(shù)據(jù)結(jié)構(gòu)包括下述之一最近最少使用(LRU)列表和時鐘數(shù)據(jù)結(jié)構(gòu)。
圖1圖示現(xiàn)有技術(shù)的用于高速緩存管理的時鐘數(shù)據(jù)結(jié)構(gòu)。 圖2圖示計算環(huán)境的實施例。
圖3圖示在圖2的計算環(huán)境內(nèi)用于管理高速緩存的索引條目的實施例。
圖4圖示使用圖2和圖3的數(shù)據(jù)結(jié)構(gòu)管理高速緩存的操作的實施例。
圖5圖示用于管理高速緩存的存儲器內(nèi)組件的實施例。
圖6圖示4吏用圖5的存儲器用于管理高速緩存的索引條目的實施例。
圖7圖示使用圖5和圖6的結(jié)構(gòu)管理高速緩存的操作的實施例。
具體實施例方式
圖2圖示計算環(huán)境的實施例。系統(tǒng)12包括一個或多個處理器14a、
14b..... 14n,其中每個處理器14a、 14b..... 14n提交指向存儲裝
置(storage) 16內(nèi)存儲位置的輸入/輸出(I/O)請求。高速緩存管理
器18處理I/0請求,和將由處理器14a、 14b.....14n請求的數(shù)據(jù)高
速緩存到在存儲器22內(nèi)存儲的多個最近最少使用(LRU)列表20a、
20b.....20n之一中。高速緩存管理器18使用LRU列表20a 、 20b.....
20n管理來自存儲裝置16、高速緩存在存儲器(memory) 22內(nèi)的數(shù) 據(jù),從而確定何時從存儲裝置16升級(stage)和降級(destage)數(shù) 據(jù)以優(yōu)化高速緩存命中和最小化高速緩存未中。每個LRU列表20a 、
20b、…、20n包括最近最常使用(MRU)端24a、 24b.....24n和
LRU端26a、 26b、…、26n。在LRU列表20a、 20b、…、20n內(nèi)伊、 別的從存儲裝置16訪問的數(shù)據(jù)高速緩存在存儲器22內(nèi)。
高速緩存管理器18還保存高速緩存索引28,其具有在存儲器22 的高速緩存內(nèi)保存的來自存儲裝置16的數(shù)據(jù)的相關(guān)信息。高速緩存索 引28表示來自存儲裝置16內(nèi)特定地址或位置的數(shù)據(jù)是否在LRU列 表20a、 20b、 ...、 20n之一中的條目內(nèi)被識別。存儲地址或位置可以 包括存儲裝置16內(nèi)數(shù)據(jù)的軌道、塊、頁面或任何其它分段。
存儲裝置16可以包括一個或多個存儲設(shè)備,例如一個或多個磁 盤驅(qū)動器,存儲設(shè)備陣列,例如僅一組磁盤(JBOD)、直接訪問存 儲設(shè)備(DASD)、獨立磁盤冗余陣列(RAID)、虛擬化設(shè)備、磁帶 存儲器、閃存、等等。存儲器22可以包括一個或多個存儲器設(shè)備,其 具有比存儲裝置16更高的吞吐量和更快的訪問。在替代實施例中,存 儲器22和存儲裝置16可以包括在現(xiàn)有技術(shù)內(nèi)公知的任意合適的計算 機可讀介質(zhì),以便一個計算機可讀介質(zhì)用作對另一個計算機可讀介質(zhì)
(1/0請求指向其)的快速訪問高速緩存。處理器14a、 14b.....14n
可以包括分立微處理器設(shè)備或者在一個或多個多核微處理器設(shè)備上實 施的分立處理內(nèi)核。高速緩存管理器18可以實施為由一個或多個處理
器14a、 14b..... 14n執(zhí)行或者在存儲器22硬件內(nèi)實施的計算機程序。在一種實施例中,系統(tǒng)12可以包括從多個連接主機接收對存儲 裝置16的讀和寫請求的存儲控制器。
圖3圖示在高速緩存索引28內(nèi)高速緩存索引條目30的實施例, 所述高速緩存索引條目表示存儲位置32,例如存儲地址;LRU列表 34,識別具有用于該高速緩存的存儲位置32的條目的LRU列表10a、
10b..... 10n;和對于該高速緩存的存儲位置32、在表示的LRU列
表34中的條目36位置。
高速緩存索引28可以包括散列表,其條目根據(jù)存儲位置32的散 列進行索引。可替代地,可以通過除了在現(xiàn)有技術(shù)中公知的散列表之 外的適當(dāng)索引類型數(shù)據(jù)結(jié)構(gòu)實施高速緩存索引28。
圖4圖示由高速緩存管理器18執(zhí)行以管理將數(shù)據(jù)從存儲裝置16 高速緩存在存儲器22內(nèi)的操作的實施例。 一旦接收到請求(在方框 100),例如讀或?qū)懻埱?,以訪問在存儲裝置16內(nèi)的數(shù)據(jù),高速緩存 管理器18處理(在方框102)高速緩存索引28以確定所請求的存儲
地址是否在LRU列表20a、 20b.....20n之一中。所高速緩存的數(shù)
據(jù)的存儲位置可以包括存儲裝置的塊、軌道、頁面或者其它單元或分 段。如果(在方框104)存在用于所請求存儲地址的高速緩存索引條 目30 (圖3),則所請求的數(shù)據(jù)在高速緩存內(nèi),即"高速緩存命中"。 在這種情況下,高速緩存管理器18根據(jù)高速緩存索引28確定(在方 框106)來自字段34的LRU列表20a、 20b、…、20n和所請求數(shù)據(jù) 的列表內(nèi)的條目36。在一種實施例中,高速緩存管理器18可以將用 于所訪問數(shù)據(jù)的條目移動到當(dāng)前LRU列表20a、 20b、 ...、 20n的MRU 端24a、 24b、…、24n,在所述當(dāng)前LRU列表內(nèi)包括該條目。在替代 實施例中,高速緩存管理器18可以選擇(在方框108),例如隨機地 選擇,LRU列表20a、 20b、 ...、 20n之一 (它可能包括也可能不包括 已經(jīng)包含所確定條目的LRU列表),和將所確定的用于請求數(shù)據(jù)的 條目移動(在方框110)到選定LRU列表20a、 20b、…、20n的MRU 端24a、 24b、…、24n。
如果(在方框104)在高速緩存索引28內(nèi)不存在用于所請求存儲
地址的條目,則所請求的數(shù)據(jù)不在高速緩存內(nèi),即"高速緩存未中"。
在這種情況下,如果(在方框112)高速緩沖存儲器22未滿,即具有 可用于所請求數(shù)據(jù)的空間,則高速緩存管理器18 (在方框114)將所 請求的數(shù)據(jù)升級入高速緩存存儲器22。為了建立用于升級入高速緩存 存儲器22的數(shù)據(jù)的LRU列表條目,高速緩存管理器18選擇,例如 隨機地,(在方框116) LRU列表20a、 20b、…、20n之一,和(在 方框118)將用于所升級數(shù)據(jù)的條目添加到選定LRU列表20a、 20b、…、20n的MRU端24a、 24b、…、24n。還將條目30 (圖3) 添加(在方框120)給高速緩存索引28,所述高速緩存索引包括所請 求數(shù)據(jù)的存儲地址和添加了條目30的選定LRU列表20a、 20b、...、 20n。如果(在方框112)高速緩存已滿,即并不具有可用于所請求數(shù) 據(jù)的空間,則需要使該數(shù)據(jù)降級。為了使該數(shù)據(jù)降級,通過處理隨機
選擇的列表子集以確定包含最舊的LRU26a、 26b.....26n條目的隨
機選擇的子集的列表,高速緩存管理器18 (在方框124)選擇列表之 一。通過為每個高速緩存條目保存存儲最后訪問該條目的時間的時間 戳記,可以確定最舊的條目。例如,如果存在n個LRU列表,則隨 機選擇列表的子集可以包括m個列表。在一種實施例中,列表子集或 者m可以是兩個。隨后,高速緩存管理器18 (在方框126)將用于
LRU條目26a.....26n的數(shù)據(jù)從選定的LRU列表20a、 20b、…、
20n中降級。使數(shù)據(jù)降級會從存儲器22中刪除該數(shù)據(jù),并將對該數(shù)據(jù) 的任何更新應(yīng)用于存儲裝置16。在使該數(shù)據(jù)降級之后,控制繼續(xù)到方 框114,以升級所請求的數(shù)據(jù)。從方框110或120,控制前進到方框
128以將所請求的數(shù)據(jù)返回給進行請求的處理器14a、 14b..... 14n。
通過將條目隨機地分配在LRU列表之中,所描述的實施例尋求 提高同時訪問的存儲位置在不同LRU列表內(nèi)具有條目以避免請求數(shù)
據(jù)的處理器14a、 14b..... 14n的鎖竟?fàn)幍目赡苄?。例如,如果存?br>
對LRU條目在不同的LRU列表上的存儲位置的兩個同時請求,則將 不存在由于當(dāng)兩個請求要求訪問同一 LRU列表內(nèi)的MRU條目時會產(chǎn) 生的鎖竟?fàn)幒瓦B續(xù)化而導(dǎo)致的延遲。然而,如果兩個同時請求針對其
條目在同一列表上的數(shù)據(jù),則依然可能出現(xiàn)鎖竟?fàn)?。盡管如此,通過
在多個LRU列表(具有用于它們的MRU和LRU端的單獨鎖)之中 隨機地分配最近訪問的條目,所描述的實施例大大降低了鎖竟?fàn)幍目?能性。
圖5是替代實施例,其中不使用LRU列表20a、 20b.....20n
(圖2 ),高速緩存管理器18在存儲器152內(nèi)保存時鐘數(shù)據(jù)結(jié)構(gòu)(或 "時鐘,,)150a、 150b、…、150n以管理在高速緩存存儲器152內(nèi)來自
存儲裝置16的數(shù)據(jù)。每個時鐘150a、 150b.....150n包括時鐘指針
154a、 154b..... 154n,提供指向時鐘150a、 150b、…、150n中在
時鐘150a、 150b、…、150n的尾部條目156a、 156b..... 156n和頭
部條目158a、 158b.....158n之間的位置的指針。高速緩存索引160
提供到時鐘之一中的條目的存儲地址的索引。高速緩存索引160可以 包括散列表或其它合適的索引數(shù)據(jù)結(jié)構(gòu)。
圖6是在高速緩存索引160內(nèi)條目170的實施例,它表示存儲位 置172,例如存儲地址;時鐘174,識別具有用于該存儲位置172的條 目的時鐘150a、 150b、 ...、 150n;和用于該存儲位置172的在所表示 的時鐘174內(nèi)的條目176。
圖7圖示由高速緩存管理器18使用時鐘150a、 150b..... 150n
管理高速緩存存儲器152所執(zhí)行的操作的實施例。 一旦(在方框200) 接收到對存儲地址的請求,高速緩存管理器18 (在方框202)處理高 速緩存索引160以確定所請求的數(shù)據(jù)是否在時鐘150a、150b、...、150n 之一中。如果(在方框204)存在用于所請求存儲地址的高速緩存索 引條目160,即"高速緩存命中",則高速緩存管理器18根據(jù)高速緩存
索引160(在方框206 )確定時鐘150a、 150b.....150n和在時鐘150a、
150b..... 150n內(nèi)用于所請求數(shù)據(jù)的條目176 (圖6)。隨后,高速
緩存管理器18 (在方框208)設(shè)置用于所確定條目的條目比特以表示 該條目已經(jīng)被訪問過(例如將頁面參考比特設(shè)置為"l,,)和返回(在方 框210)所請求的數(shù)據(jù)。如果(在方框204)高速緩存索引160并不包 括用于所請求存儲地址的條目,即"高速緩存未中",并且如果(在方
框212)高速緩存存儲器152未滿,即確實具有可用于所請求數(shù)據(jù)的 空間,則高速緩存管理器18 (在方框214 )將所請求的數(shù)據(jù)升級進入
高速緩存存儲器152,并(在方框216)選擇時鐘150a、 150b.....
150n之一,其可以是隨機地選擇。(在方框218)將用于所升級數(shù)據(jù)
的條目170 (圖6)添加到選定時鐘150a、 150b..... 150n的頭部條
目158a、 158b..... 158n,并(在方框220 )將一個條目添加到高速
緩存索引170。該高速緩存索引條目170包括所請求數(shù)據(jù)的存儲地址 172、選定時鐘和用于升級進入存儲器152的數(shù)據(jù)的選定時鐘內(nèi)的條 目。從方框220,控制前進到方框210以返回數(shù)據(jù)。
如果(在方框212)存儲器高速緩存152已滿,即并不具有可用 于所請求數(shù)據(jù)的空間,則高速緩存管理器18可以(在方框222)通過
隨機地選擇時鐘150a、 150b..... 150n的子集以確定隨機選擇子集
的最大塊時鐘(即具有最多條目170的時鐘)來選擇從中刪除條目的 時鐘150a、 150b、…、150n之一,該時鐘是具有最多條目的時鐘。 對于每個時鐘,保持表示其中的條目數(shù)量的計數(shù)器。可以使用計數(shù)器 確定一組時鐘之中的最大時鐘,即包含最多條目的時鐘??商娲兀?br>
高速緩存管理器18可以隨機地選擇時鐘150a、 150b.....150n之一,
以對用于針對高速緩存未中升級入存儲器152的數(shù)據(jù)的條目進行更 新。
如果(在方框224)在選定時鐘集150a、 150b、…、150n的時
鐘指針154a、 154b.....154n上的頭部條目158a、 158b、…、158n
被表示為已經(jīng)訪問過,即將用于該條目的頁面參考比特設(shè)置為"l",則 高速緩存管理器18設(shè)置(在方框226)該條目170的比特以表示該存 儲地址尚未被訪問過,例如"0",并將時鐘指針154a、 154b、…、154n
向前移動一個條目以l更先前的頭部條目158a、 158b..... 158n現(xiàn)在
是新時鐘指針位置的尾部條目156a、 156b.....156n。在重置該條目
的比特以表示"未訪問,,之后,例如"0",(在方框226)控制繼續(xù)回到 方框224,以便時鐘指針154a、 154b、…、154n繼續(xù)向前移動直到到 達其訪問比特表示該條目最近未被訪問的頭部條目158a、 158b、…、158n,例如頁面參考比特為零。
如果(在方框224)在時鐘指針154a、 154b..... 154n上的頭
部條目158a、 158b、 ...、 158n表示高速緩存內(nèi)的存儲地址尚未被訪 問,例如頁面參考比特為零,則高速緩存管理器18 (在方框228)將
頭部條目156a、 156b.....156n的數(shù)據(jù)從高速緩沖存儲器152降級
到存儲裝置16 (如果該數(shù)據(jù)已經(jīng)被修改的話)。如果該數(shù)據(jù)尚未被修 改,則可以丟棄該數(shù)據(jù)。控制隨后前進到方框214以升級所請求的數(shù) 據(jù),將所請求數(shù)據(jù)的條目添加到時鐘150a、 150b、 ...、 150n之一, 并返回所請求的數(shù)據(jù)。
通過在時鐘數(shù)據(jù)結(jié)構(gòu)之中隨機地分配條目,所描述的實施例尋求 提高同時訪問的存儲位置在不同時鐘內(nèi)具有條目以避免當(dāng)存在高速緩
存未中時處理器14a、 14b..... 14n的鎖竟?fàn)幍目赡苄?。例如,如?br>
存在對時鐘條目在不同時鐘上的存儲位置的兩個同時請求,則將不存 在由于在有高速緩存未中情況時的鎖竟?fàn)幒瓦B續(xù)化而產(chǎn)生的延遲,因 為可以針對該高速緩存未中升級入高速緩存的數(shù)據(jù),分別地更新不同 時鐘。通過在具有單獨鎖的多個時鐘上隨機地分配最新訪問的條目, 所描述的實施例大大降低了鎖竟?fàn)幍目赡苄浴6?,通過避免鎖定延 遲,使用多個列表改善了系統(tǒng)傳輸吞吐量。
附加實施例細節(jié)
使用標(biāo)準(zhǔn)編程和/或工程技術(shù)以生成軟件、固件、硬件或其任意 組合,可以將所描述的操作實施為方法、設(shè)備或制造產(chǎn)品??梢詫⑺?描述的操作實施為在"計算機可讀介質(zhì)"內(nèi)保存的編碼,其中處理器可 以從計算機可讀介質(zhì)讀取和執(zhí)行該代碼。計算機可讀介質(zhì)可以包括介 質(zhì),例如磁存儲介質(zhì)(例如硬盤驅(qū)動器、軟盤、磁帶、等等)、光存 儲器(CD-ROM、 DVD、光盤、等等)、易失性和非易失性存儲器設(shè) 備(例如EEPROM、 ROM、 PROM、 RAM、 DRAM、 SRAM、閃存、 固件、可編程邏輯、等等)、等等??梢赃M一步將執(zhí)行所描述操作的 代碼實施為硬件邏輯(例如集成電路芯片、可編程門陣列(PGA)、
應(yīng)用專用集成電路(ASIC)、等等)。另外,可以在"傳輸信號,,內(nèi)實 施執(zhí)行所描述操作的代碼,其中傳輸信號可以通過空間或者通過諸如 光纖、銅線等傳輸介質(zhì)傳播。其中編碼代碼或邏輯的傳輸信號還可以 包括無線信號、衛(wèi)星傳輸、無線電波、紅外信號、藍牙、等等。其中 編碼代碼或邏輯的傳輸信號能夠由發(fā)送站發(fā)送和由接收站接收,其中 在傳輸信號內(nèi)編碼的代碼或邏輯可以在接收和發(fā)送站或設(shè)備上的硬件 或計算機可讀介質(zhì)上解碼和存儲。"制造物品"包括其中可以實施代碼 的計算機可讀介質(zhì)、硬件邏輯和/或傳輸信號。其中編碼實施所描述的 操作實施例的代碼的設(shè)備可以包括計算機可讀介質(zhì)或硬件邏輯。當(dāng)然, 本領(lǐng)域的普通技術(shù)人員將認識到在不脫離本發(fā)明的范圍的情況下可以 對此配置進行多種修改,制造物品可以包括在現(xiàn)有技術(shù)中公知的適當(dāng) 信息承載介質(zhì)。
在所描述的實施例中,用于在高速緩存內(nèi)存儲數(shù)據(jù)的條目的數(shù)據(jù) 結(jié)構(gòu)包括LRU列表或時鐘。在替代實施例中,可以使用其它適當(dāng)數(shù) 據(jù)結(jié)構(gòu)存儲信息的條目以管理高速緩存內(nèi)的數(shù)據(jù)。而且,在所描述的 實施例中,用于存儲條目的數(shù)據(jù)結(jié)構(gòu)具有同一類型,例如LRU列表、 時鐘。在替代實施例中,用于存儲高速緩存條目的多個數(shù)據(jù)結(jié)構(gòu)可以 是混合類型的。
術(shù)語"實施例"、"一個實施例"、"多個實施例"、"該實施例"、"所 述實施例"、"一個或多個實施例"、"一些實施例"是指"本發(fā)明的 一個或多個(但并非全部的)實施例",除非另有具體表述。
術(shù)語"包括"、"包含"、"具有"及其變型是指"包括但是不限于", 除非另有具體表述。
項目的枚舉列表并不暗示任意或全部項目是相互排除的,除非另 有具體表述。
術(shù)語"一個,,以及"該"是指"一個或多個,,,除非另有具體表述。
變量"n,,和"m"當(dāng)用于表示元素的可變數(shù)量時可以表示元素的任 意數(shù)量的實例,并且當(dāng)用于不同的元素時可以表示不同的整數(shù)。
相互通信的設(shè)備不需要相互連續(xù)地通信,除非另有具體表述。此
外,相互通信的設(shè)備可以通過一個或多個中介直接或間接地通信。
具有相互通信的若干組件的實施例的描述并不暗示需要所有這 些組件。相反,描述多種可選組件以說明本發(fā)明的各種可能的實施例。 此外,盡管順序地描述了處理步驟、方法步驟、算法等,也可以 以替代的順序配置這些處理、方法和算法以工作。換句話說,可描述 的任意順序的步驟并不必然表示以該順序執(zhí)行這些步驟的要求??梢?以任何實際的順序執(zhí)行在此所述的處理步驟。此外,可以同時執(zhí)行一 些步驟。
當(dāng)在此描述單個設(shè)備或物品時,顯然可以使用多個設(shè)備/物品(無 論它們是否協(xié)作)替代單個設(shè)備/物品。類似地,在此描述多個設(shè)備或 物品時(無論它們是否寫作),顯然可以使用單個設(shè)備/物品替代多個 設(shè)備或物品或者可以使用不同數(shù)量的設(shè)備/物品替代所描述數(shù)量的設(shè) 備或程序。通過未明確描述為具有某功能/特征的一個或多個其它設(shè)備 可以替代地實施該設(shè)備的功能和/或特征。因而,本發(fā)明的其它實施例 不需要包括設(shè)備本身。
圖4和圖7的圖示操作說明以某個順序出現(xiàn)的某些事件。在替代 實施例中,可以以不同的順序執(zhí)行、修改或刪除某些操作。而且,可 以將步驟添加到上述邏輯,并依然符合所描述的實施例。此外,在此 所描述的操作可以順序地出現(xiàn),或者可以并行地處理某些操作。另外, 可以通過單個處理單元或者通過分布式處理單元執(zhí)行操作。
已經(jīng)為了說明和描述的目的介紹了本發(fā)明的上述各種實施例的 描述。將不是詳盡的,或者將本發(fā)明的限制為所公開的具體形式。在 上述教導(dǎo)之下可以進行多種修改和變化。本發(fā)明的范圍將不由該詳細 描述而由權(quán)利要求來限制。上述描述、實例和數(shù)據(jù)提供制造物的完整 描述和本發(fā)明的組成的使用。因為在不脫離本發(fā)明的精神和范圍的情 況下,可以實現(xiàn)本發(fā)明的多種實施例,所以本發(fā)明的范圍由權(quán)利要求 書來限定。
權(quán)利要求
1.一種方法,包括提供多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到第二計算機可讀介質(zhì)的數(shù)據(jù)的條目;接收對第一計算機可讀介質(zhì)中數(shù)據(jù)的請求;確定在數(shù)據(jù)結(jié)構(gòu)之一中是否存在用于所請求數(shù)據(jù)的條目;響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,從第一計算機可讀介質(zhì)檢索所請求的數(shù)據(jù)以存儲在第二計算機可讀介質(zhì)中;響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,選擇數(shù)據(jù)結(jié)構(gòu)之一;和將用于所檢索數(shù)據(jù)的條目添加到選定數(shù)據(jù)結(jié)構(gòu)。
2. 權(quán)利要求1的方法,其中選擇數(shù)據(jù)結(jié)構(gòu)之一包括隨機地選擇 數(shù)據(jù)結(jié)構(gòu)之一。
3. 權(quán)利要求l的方法,還包括響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,確 定第二計算機可讀介質(zhì)是否具有可用于存儲所檢索的所請求數(shù)據(jù)的空間;響應(yīng)于確定第二計算機可讀介質(zhì)不具有可用空間,從數(shù)據(jù)結(jié)構(gòu)之 一中選擇一個條目;使用于選定條目的數(shù)據(jù)從第二計算機可讀介質(zhì)中降級。
4. 權(quán)利要求3的方法,其中響應(yīng)于確定第二計算機可讀介質(zhì)不 具有可用空間、從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目包括確定具有最舊條目的數(shù)據(jù)結(jié)構(gòu)之一,其中選定條目包括在所確定 數(shù)據(jù)結(jié)構(gòu)中的最舊條目。
5. 權(quán)利要求3的方法,其中響應(yīng)于確定第二計算機可讀介質(zhì)不 具有可用空間、從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目包括選擇數(shù)據(jù)結(jié)構(gòu)的隨機子集;和 從選定隨機子集中選擇一個數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)的最舊條目不 新于選定子集中任何其它數(shù)據(jù)結(jié)構(gòu)中的最舊條目。
6. 權(quán)利要求l的方法,其中數(shù)據(jù)結(jié)構(gòu)包括最近最少使用(LRU) 列表,并且其中添加用于所檢索數(shù)據(jù)的條目包括將條目添加到選定 LRU列表的最近最常使用(MRU)端。
7. 權(quán)利要求1的方法,其中數(shù)據(jù)結(jié)構(gòu)包括時鐘,其中每個時鐘 具有在列表中彼此相鄰的頭部和尾部條目,并且其中添加用于所檢索 數(shù)據(jù)的條目包括將條目添加到選定時鐘的頭部條目。
8. 權(quán)利要求7的方法,其中時鐘內(nèi)的條目表示該條目是否被訪 問過,還包括響應(yīng)于確定在時鐘之一中沒有用于所請求數(shù)據(jù)的條目,確定第二 計算機可讀介質(zhì)是否具有可用空間以存儲所檢索的所請求數(shù)據(jù); 選擇時鐘之一;確定時鐘內(nèi)被表示為尚未被訪問的一個條目;和 使用于所確定條目的數(shù)據(jù)從第二計算機可讀介質(zhì)中降級。
9. 一種方法,包括提供多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到 第二計算機可讀介質(zhì)的數(shù)據(jù)的條目;接收對第 一計算機可讀介質(zhì)中的數(shù)據(jù)的請求; 確定在數(shù)據(jù)結(jié)構(gòu)之一中是否存在用于所請求數(shù)據(jù)的條目; 響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在用于所請求數(shù)據(jù)的一個條目,針對該數(shù)據(jù)請求從第二計算機可讀介質(zhì)訪問所請求的數(shù)據(jù);響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在用于所請求數(shù)據(jù)的一個條目,選擇數(shù)據(jù)結(jié)構(gòu)之一;和響應(yīng)于確定存在用于所請求數(shù)據(jù)的一個條目,將確定的用于所請求數(shù)據(jù)的條目移動到選定的數(shù)據(jù)結(jié)構(gòu)。
10. 權(quán)利要求9的方法,其中響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在 所請求數(shù)據(jù)的一個條目,隨機地選擇數(shù)據(jù)結(jié)構(gòu)。
11. 權(quán)利要求9的方法,其中每個數(shù)據(jù)結(jié)構(gòu)是一組數(shù)據(jù)結(jié)構(gòu)的成員,所述數(shù)據(jù)結(jié)構(gòu)包括下述之一最近最少使用(LRU)列表和時鐘 數(shù)據(jù)結(jié)構(gòu)。
12. —種與笫一計算機可讀介質(zhì)通信的系統(tǒng),包括 至少一個處理器;第二計算機可讀介質(zhì);多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到第二 計算機可讀介質(zhì)的數(shù)據(jù)的條目;管理對第二計算機可讀介質(zhì)的訪問的高速緩存管理器,其能夠執(zhí)行操作,所述操作包括提供多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到 第二計算機可讀介質(zhì)的數(shù)據(jù)的條目;從一個處理器接收對第一計算機可讀介質(zhì)中數(shù)據(jù)的請求; 確定在數(shù)據(jù)結(jié)構(gòu)之一中是否存在用于所請求數(shù)據(jù)的條目; 響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,從 第一計算機可讀介質(zhì)檢索所請求的數(shù)據(jù)以存儲在第二計算機可讀介質(zhì)中;響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,選 擇數(shù)據(jù)結(jié)構(gòu)之一;和將用于所檢索數(shù)據(jù)的條目添加到選定數(shù)據(jù)結(jié)構(gòu)。
13. 權(quán)利要求12的系統(tǒng),其中由高速緩存管理器執(zhí)行的操作還包括響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,確 定第二計算機可讀介質(zhì)是否具有可用于存儲所檢索的所請求數(shù)據(jù)的空間;響應(yīng)于確定第二計算機可讀介質(zhì)不具有可用空間,從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目;使用于選定條目的數(shù)據(jù)從第二計算機可讀介質(zhì)中降級。
14. 權(quán)利要求13的系統(tǒng),其中響應(yīng)于確定第二計算機可讀介質(zhì) 不具有可用空間、從數(shù)據(jù)結(jié)構(gòu)之一中選擇一個條目包括 選擇數(shù)據(jù)結(jié)構(gòu)的隨機子集;和從選定隨機子集中選擇一個數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)的最舊條目不 新于選定子集中任何其它數(shù)據(jù)結(jié)構(gòu)中的最舊條目。
15. 權(quán)利要求12的系統(tǒng),其中數(shù)據(jù)結(jié)構(gòu)包括最近最少使用(LRU) 列表,并且其中添加用于所檢索數(shù)據(jù)的條目包括將條目添加到選定 LRU列表的最近最常使用(MRU)端。
16. 權(quán)利要求12的系統(tǒng),其中數(shù)據(jù)結(jié)構(gòu)包括時鐘,其中每個時 鐘包括在列表中彼此相鄰的頭部和尾部條目,并且其中添加用于所檢 索數(shù)據(jù)的條目包括將條目添加到選定時鐘的頭部條目。
17. 權(quán)利要求16的系統(tǒng),其中時鐘內(nèi)的條目表示條目是否被訪 問過,并且其中由高速緩存管理器執(zhí)行的操作還包括響應(yīng)于確定在時鐘之一中沒有用于所請求數(shù)據(jù)的條目,確定第二 計算機可讀介質(zhì)是否具有可用空間以存儲所檢索的所請求數(shù)據(jù); 選擇時鐘之一;確定時鐘內(nèi)被表示為尚未被訪問的一個條目;和 使用于所確定條目的數(shù)據(jù)從第二計算機可讀介質(zhì)中降級。
18. —種與第一計算機可讀介質(zhì)通信的系統(tǒng),包括 至少一個處理器;第二計算機可讀介質(zhì);多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到第二 計算機可讀介質(zhì)的數(shù)據(jù)的條目;管理對第二計算機可讀介質(zhì)的訪問的高速緩存管理器,其能夠執(zhí)行操作,所述操作包括從處理器接收對第一計算機可讀介質(zhì)中的數(shù)據(jù)的請求; 確定在數(shù)據(jù)結(jié)構(gòu)之一中是否存在用于所請求數(shù)據(jù)的條目; 響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在用于所請求數(shù)據(jù)的一個條目,針對該數(shù)據(jù)請求從第二計算機可讀介質(zhì)訪問所請求的數(shù)據(jù);響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中存在所請求數(shù)據(jù)的一個條目,選擇數(shù)據(jù)結(jié)構(gòu)之一;和 響應(yīng)于確定存在用于所請求數(shù)據(jù)的一個條目,將確定的用于所請 求數(shù)據(jù)的條目移動到選定的數(shù)據(jù)結(jié)構(gòu)。
19. 一種執(zhí)行代碼的制造物品,其中該代碼使執(zhí)行操作以訪問第 一計算機可讀介質(zhì)和第二計算機可讀介質(zhì),該操作包括用于執(zhí)行根據(jù) 權(quán)利要求1 _ 11中任一權(quán)利要求的方法中的步驟的指令。
全文摘要
提供用于使用多個數(shù)據(jù)結(jié)構(gòu)管理高速緩存中的數(shù)據(jù)的方法、系統(tǒng)和程序。多個數(shù)據(jù)結(jié)構(gòu),每個具有識別從第一計算機可讀介質(zhì)添加到第二計算機可讀介質(zhì)的數(shù)據(jù)的條目。接收對第一計算機可讀介質(zhì)中數(shù)據(jù)的請求。確定在數(shù)據(jù)結(jié)構(gòu)之一中是否存在用于所請求數(shù)據(jù)的條目。響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,從第一計算機可讀介質(zhì)檢索所請求的數(shù)據(jù)以存儲在第二計算機可讀介質(zhì)中。響應(yīng)于確定在數(shù)據(jù)結(jié)構(gòu)之一中不存在用于所請求數(shù)據(jù)的條目,選擇數(shù)據(jù)結(jié)構(gòu)之一,并將用于所檢索數(shù)據(jù)的條目添加到選定數(shù)據(jù)結(jié)構(gòu)。
文檔編號G06F17/30GK101110061SQ200710102599
公開日2008年1月23日 申請日期2007年5月16日 優(yōu)先權(quán)日2006年7月20日
發(fā)明者畢尼·謝爾·吉爾, 約瑟夫·S.·海德二世, 達蒙德拉·S.·莫哈, 邁克爾·T.·本哈斯 申請人:國際商業(yè)機器公司