用于存儲(chǔ)設(shè)備的第一高速緩存和第二高速緩存中的軌道的高速緩存管理的制作方法
【專利摘要】本發(fā)明提供了一種計(jì)算機(jī)程序產(chǎn)品、系統(tǒng)和方法,用于存儲(chǔ)設(shè)備的第一高速緩存和第二高速緩存中的軌道的高速緩存管理。第一高速緩存保持存儲(chǔ)設(shè)備中的受輸入/輸出(I/O)請(qǐng)求支配的已修改軌道和未修改軌道。已修改軌道和未修改軌道被從第一高速緩存降級(jí)。從第一高速緩存降級(jí)的已修改軌道和未修改軌道被提升到第二高速緩存。從第二高速緩存降級(jí)的未修改軌道被丟棄。第二高速緩存中的在存儲(chǔ)設(shè)備上的鄰近物理位置處的已修改軌道被分組,并且已分組的已修改軌道從第二高速緩存降級(jí)到存儲(chǔ)設(shè)備。
【專利說明】用于存儲(chǔ)設(shè)備的第一高速緩存和第二高速緩存中的軌道的高速緩存管理
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計(jì)算機(jī)程序產(chǎn)品、系統(tǒng)和方法,用于存儲(chǔ)設(shè)備的第一高速緩存和第二高速緩存中的軌道的高速緩存管理。
【背景技術(shù)】
[0002]高速緩存管理系統(tǒng)在比存儲(chǔ)所請(qǐng)求軌道(track)的存儲(chǔ)設(shè)備更快的存取存儲(chǔ)設(shè)備(例如存儲(chǔ)器)中緩沖存儲(chǔ)設(shè)備中的由于讀取和寫入操作而最近被存取的軌道。對(duì)更快存取高速緩沖存儲(chǔ)器中的軌道的隨后讀取請(qǐng)求被以比從較慢存取存儲(chǔ)設(shè)備中返回所請(qǐng)求軌道更快的速度返回,從而降低了讀取延遲。高速緩存管理系統(tǒng)還可能在指向存儲(chǔ)設(shè)備的已修改軌道被寫入到高速緩沖存儲(chǔ)器中時(shí)并且在已修改軌道被向外寫入到存儲(chǔ)設(shè)備(例如硬盤驅(qū)動(dòng)器)之前,完全返回寫入請(qǐng)求。到存儲(chǔ)設(shè)備的寫入延遲典型地顯著地長(zhǎng)于寫入到高速緩沖存儲(chǔ)器的延遲。因此,使用高速緩存還降低寫入延遲。
[0003]高速緩存管理系統(tǒng)可保持鏈表,該鏈表對(duì)于存儲(chǔ)在高速緩存中每個(gè)軌道具有一個(gè)條目,其可包括在寫入到存儲(chǔ)設(shè)備之前緩沖在高速緩存中的寫入數(shù)據(jù)或者讀取數(shù)據(jù)。在常用的最近最少使用(LRU)高速緩存技術(shù)中,如果高速緩存中的軌道被存取,即高速緩存“命中”,則LRU列表中的用于所存取軌道的條目被移動(dòng)到列表的最近使用(MRU)端。如果所請(qǐng)求的軌道不在高速緩存中,即高速緩存未命中,則高速緩存中的其條目在列表的LRU端的軌道可被移除(或降級(jí)回到存儲(chǔ)設(shè)備),而用于從存儲(chǔ)設(shè)備升級(jí)(stage)到高速緩存中的軌道數(shù)據(jù)的條目被添加到LRU列表的MRU端。利用這種LRU高速緩存技術(shù),被更頻繁存取的軌道很可能會(huì)留在高速緩存中,而不太頻繁存取的數(shù)據(jù)將更可能從列表的LRU端中移除,以便在高速緩存中為新存取的軌道騰出空間。
[0004]LRU高速緩存技術(shù)試圖為時(shí)間局部性優(yōu)化,以便降級(jí)(destage)不太可能被很快重寫的軌道,從而最小化降級(jí)操作的數(shù)量,也就是說,如果未被降級(jí)的寫入被重寫,則重寫寫入的降級(jí)被避免,從而節(jié)省了將數(shù)據(jù)從高速緩存寫入到磁盤的時(shí)間和努力。另一方面,也希望以利用空間局部性的方式降級(jí),這意味著,數(shù)據(jù)被寫入到彼此最接近的存儲(chǔ)位置,從而以最小化存儲(chǔ)設(shè)備寫入機(jī)制和存儲(chǔ)介質(zhì)需被移動(dòng)以達(dá)到下一個(gè)存儲(chǔ)位置以便寫入的距離。
[0005]利用時(shí)間局部性和空間局部性兩者的一種技術(shù)是明智寫入排序(WOW)算法。WOW算法采用循環(huán)鏈表或時(shí)鐘,其中循環(huán)鏈表對(duì)于高速緩存中緩沖的每個(gè)寫入請(qǐng)求具有一個(gè)條目。根據(jù)相關(guān)聯(lián)的寫入請(qǐng)求被指向的存儲(chǔ)位置而在鏈表中排序條目,以利用空間局部性的好處。此外,每個(gè)條目包括指示高速緩存中的存儲(chǔ)位置的寫入數(shù)據(jù)最近是否已被更新的位。當(dāng)用于條目的寫入數(shù)據(jù)被更新時(shí),設(shè)置用于該條目的位。指針指向循環(huán)鏈表中的當(dāng)前條目。使用WOW算法的任務(wù)存取由指針尋址的條目。如果用于該條目的位指示最近已更新用于高速緩存中的該條目的數(shù)據(jù),則該位被設(shè)置以指示寫入數(shù)據(jù)最近未被更新且指針遞增以指向下一條目,使得具有到空間上下一最接近先前寫入的存儲(chǔ)位置的存儲(chǔ)位置的寫入數(shù)據(jù)的條目被考慮。選擇條目以寫入在空間上最接近于最后寫入的存儲(chǔ)位置,并且它的位指示用于該條目的寫入數(shù)據(jù)最近未被更新。
[0006]因此,利用WOW算法,利用了空間局部性,因?yàn)榇龑懭氲南乱粋€(gè)條目被選擇用于考慮在空間上最接近于最后降級(jí)的寫入請(qǐng)求。此外,利用了時(shí)間局部性,因?yàn)樽罱驯粚懭氲臈l目將被跳過,直到指針循環(huán)返回到跳過的條目以便考慮。
[0007]磁盤驅(qū)動(dòng)器可實(shí)現(xiàn)考慮了寫入軌道的線性和角位置的WOW算法和其它算法,并針對(duì)兩者關(guān)于當(dāng)前寫入頭位置優(yōu)化以確定最小的總服務(wù)時(shí)間。這個(gè)過程被稱為“基于尋找和旋轉(zhuǎn)優(yōu)化的命令重排序”。磁盤驅(qū)動(dòng)器邏輯板將分析寫入請(qǐng)求,并基于將需要多少時(shí)間來尋找軌道的各種圓柱和角位置以便寫入以及將過去多少時(shí)間來等待數(shù)據(jù)在頭下旋轉(zhuǎn)兩者來確定先做哪些。
[0008]在該技術(shù)中存在對(duì)使用存儲(chǔ)系統(tǒng)中的高速緩存的改進(jìn)技術(shù)的需要。
【發(fā)明內(nèi)容】
[0009]提供了一種計(jì)算機(jī)程序產(chǎn)品、系統(tǒng)和方法,用于存儲(chǔ)設(shè)備的第一高速緩存和第二高速緩存中的軌道的高速緩存管理。第一高速緩存保持存儲(chǔ)設(shè)備中的受輸入/輸出(I/o)請(qǐng)求支配的已修改軌道和未修改軌道。已修改軌道和未修改軌道被從第一高速緩存降級(jí)(destage)o從第一高速緩存降級(jí)的已修改軌道和未修改軌道被提升(promote)到第二高速緩存。從第二高速緩存降級(jí)的未修改軌道被丟棄。第二高速緩存中的在存儲(chǔ)設(shè)備上的鄰近物理位置處的已修改軌道被分組,并且已分組的已修改軌道被從第二高速緩存降級(jí)到存儲(chǔ)設(shè)備。
【專利附圖】
【附圖說明】
[0010]圖1示出計(jì)算環(huán)境的實(shí)施例。
[0011]圖2示出第一高速緩存管理信息的實(shí)施例。
[0012]圖3示出第二高速緩存管理信息的實(shí)施例。
[0013]圖4示出第一高速緩存控制塊的實(shí)施例。
[0014]圖5示出第二高速緩存控制塊的實(shí)施例。
[0015]圖6示出空間索引條目的實(shí)施例。
[0016]圖7示出從第一高速緩存降級(jí)未修改軌道的操作的實(shí)施例。
[0017]圖8示出從第一高速緩存降級(jí)已修改軌道的操作的實(shí)施例。
[0018]圖9示出將軌道添加到第一高速緩存的操作的實(shí)施例。
[0019]圖10示出將軌道提升到第二高速緩存的操作的實(shí)施例。
[0020]圖11示出在第二高速緩存中釋放空間的操作的實(shí)施例。
[0021]圖12示出從第二高速緩存降級(jí)已修改軌道的操作的實(shí)施例。
[0022]圖13示出處理對(duì)于軌道的請(qǐng)求以返回給讀取請(qǐng)求的操作的實(shí)施例。
【具體實(shí)施方式】
[0023]圖1示出了計(jì)算環(huán)境的實(shí)施例。多個(gè)主機(jī)2a、2b...2n可通過網(wǎng)絡(luò)6提交輸入/輸出(I/O)請(qǐng)求到存儲(chǔ)控制器4,以存取存儲(chǔ)設(shè)備10中卷8 (例如邏輯單元號(hào)、邏輯設(shè)備、邏輯子系統(tǒng)等)處的數(shù)據(jù)。存儲(chǔ)控制器4包括:含有一個(gè)或多個(gè)具有單個(gè)或多個(gè)核的處理器的處理器復(fù)合體12,第一高速緩存14,用以備份在高速緩存14中的軌道的第一高速緩存?zhèn)浞菰O(shè)備16,以及第二高速緩存18。第一高速緩存14和第二高速緩存18高速緩存在主機(jī)2a、
2b......2n和存儲(chǔ)設(shè)備10之間傳送的數(shù)據(jù)。第一高速緩存?zhèn)浞菰O(shè)備16可以提供第一高速
緩存14中的軌道的非易失性存儲(chǔ)。在進(jìn)一步的實(shí)施例中,第一高速緩存?zhèn)浞菰O(shè)備16可位于與第一高速緩存14的不同的功率邊界上的集群或硬件中。
[0024]存儲(chǔ)控制器4中具有存儲(chǔ)器20,存儲(chǔ)器20包括存儲(chǔ)管理器22和高速緩存管理器24,存儲(chǔ)管理器22用于管理在主機(jī)2a、2b...2n和存儲(chǔ)設(shè)備10之間傳送的軌道傳送,高速緩存管理器24在第一高速緩存14、第一高速緩存?zhèn)浞菰O(shè)備16和第二高速緩存18中管理在主機(jī)2a、2b...2n和存儲(chǔ)設(shè)備10之間傳送的數(shù)據(jù)。軌道可包括存儲(chǔ)設(shè)備10中配置的任何數(shù)據(jù)單元,例如軌道、邏輯塊地址(LBA)等,它是軌道的更大分組的一部分,例如卷、邏輯設(shè)備等。高速緩存管理器24保持第一高速緩存管理信息26和第二高速緩存管理信息28以管理在第一高速緩存14和第二高速緩存18中讀取(未修改的)和寫(已修改的)軌道。第一高速緩存?zhèn)浞菰O(shè)備索引30提供到第一高速緩存?zhèn)浞菰O(shè)備16中位置的軌道標(biāo)識(shí)符的索引。
[0025]存儲(chǔ)管理器22和高速緩存管理器24在圖1中被示為加載到存儲(chǔ)器20并由處理器復(fù)合體12執(zhí)行的程序代碼??商鎿Q地,部分或全部的功能可以實(shí)現(xiàn)在存儲(chǔ)控制器4的硬件設(shè)備中,例如在專用集成電路(ASIC)中。
[0026]第二高速緩存18可在日志結(jié)構(gòu)陣列(LSA)32中存儲(chǔ)軌道,其中以接收的相繼順序?qū)懭胲壍溃瑥亩峁懭氲降诙咚倬彺?8的軌道的時(shí)間排序。在LSA中,已經(jīng)出現(xiàn)在LSA中的軌道的后來版本被寫入在LSA32的末尾。在可替換的實(shí)施例中,第二高速緩存18可以LSA中以外的格式存儲(chǔ)數(shù)據(jù)。
[0027]在一個(gè)實(shí)施例中,第一高速緩存14可包括隨機(jī)存取存儲(chǔ)器(RAM),例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM),而第二高速緩存18可包括閃速存儲(chǔ)器,例如固態(tài)器件,而存儲(chǔ)設(shè)備10由一個(gè)或多個(gè)順序存取存儲(chǔ)設(shè)備組成,例如硬盤驅(qū)動(dòng)器和磁帶。存儲(chǔ)設(shè)備10可包括單一的順序存取存儲(chǔ)設(shè)備或可包括存儲(chǔ)設(shè)備陣列,例如完全磁盤束(JB0D)、直接存取存儲(chǔ)設(shè)備(DASD)、獨(dú)立磁盤冗余陣列(RAID)的陣列、虛擬化設(shè)備等。在一個(gè)實(shí)施例中,第一高速緩存14是比第二高速緩存18更快的存取設(shè)備,而第二高速緩存18是比存儲(chǔ)設(shè)備10更快的存取設(shè)備。另外,第一高速緩存14可具有比第二高速緩存18更大的每個(gè)存儲(chǔ)單元成本,而第二高速緩存18可具有比存儲(chǔ)設(shè)備10中的存儲(chǔ)設(shè)備更大的每個(gè)存儲(chǔ)單元成本。
[0028]第一高速緩存14可以是存儲(chǔ)器20的一部分,或者在單獨(dú)的存儲(chǔ)器設(shè)備中實(shí)現(xiàn),例如DRAM。在一個(gè)實(shí)施例中,第一高速緩存?zhèn)浞菰O(shè)備16可包括非易失性備份存儲(chǔ)設(shè)備(NVS),例如非易失性存儲(chǔ)器,例如電池供電的隨機(jī)存取存儲(chǔ)器(RAM)、靜態(tài)RAM (SRAM)等。
[0029]網(wǎng)絡(luò)6可包括存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)
坐寸o
[0030]圖2示出第一高速緩存管理信息26的實(shí)施例,包括:軌道索引50,提供第一高速緩存14中的軌道索引給控制塊目錄52中的控制塊;未修改相繼LRU列表54,提供第一高速緩存14中未修改相繼軌道的時(shí)間排序;已修改LRU列表56,提供第一高速緩存14中已修改相繼和非相繼軌道的時(shí)間排序;以及未修改非相繼LRU列表58,提供第一高速緩存14中未修改非相繼軌道的時(shí)間排序。
[0031]在某些實(shí)施例中,在確定第一高速緩存?zhèn)浞菰O(shè)備16滿時(shí),已修改LRU列表56用于從第一高速緩存14降級(jí)已修改軌道,以便可以丟棄第一高速緩存?zhèn)浞菰O(shè)備16中這些軌道的副本,從而在第一高速緩存?zhèn)浞菰O(shè)備16中為新的已修改軌道騰出空間。
[0032]圖3示出第二高速緩存管理信息28的實(shí)施例,包括:軌道索引70,提供第二高速緩存18中的軌道索引給控制塊目錄72中的控制塊;未修改列表74,提供第二高速緩存18中未修改軌道的時(shí)間排序;以及空間索引76,基于存儲(chǔ)已修改軌道的存儲(chǔ)設(shè)備10中的物理位置而提供在第二高速緩存18中已修改軌道的空間排序。
[0033]LRU列表54、56、58和74都可包括根據(jù)最后一次存取識(shí)別的軌道時(shí)排序的第一高速緩存14和第二高速緩存18中軌道的軌道ID。LRU列表54、56、58和74具有指示最近存取的軌道的最近使用(MRU)端以及指示最近最少使用或存取的軌道的LRU端。添加到高速緩存14和18的軌道的軌道ID被添加到LRU列表的MRU端,并且從LRU端存取從高速緩存14和18降級(jí)的軌道。軌道索引50和70以及空間索引76可包括分散索引表(SIT)??商鎿Q類型的數(shù)據(jù)結(jié)構(gòu)可用于提供高速緩存14和18中軌道的時(shí)間排序和第二高速緩存18中軌道的空間排序。
[0034]非相繼軌道可包括聯(lián)機(jī)線事務(wù)處理(OLTP)軌道,其經(jīng)常包括不是完全隨機(jī)且具有一些參考位置(即具有被反復(fù)存取的可能性)的小塊寫入。
[0035]圖4示出控制塊目錄52中的第一高速緩存控制塊100的條目的實(shí)施例,包括:控制塊標(biāo)識(shí)符(ID)102、第一高速緩存14中軌道的物理位置的第一高速緩存位置104、指示軌道是已修改還是未修改的信息106以及指示軌道是相繼還是非相繼存取的信息108。
[0036]圖5示出第二高速緩存控制塊目錄72中的第二高速緩存控制塊120的條目的實(shí)施例,包括:控制塊標(biāo)識(shí)符(ID) 122、軌道在LSA32中所位于的LSA位置124以及指示軌道是已修改還是未修改的信息126。
[0037]圖6示出空間索引條目140,包括:第二高速緩存18中軌道的軌道標(biāo)識(shí)符142,以及軌道在存儲(chǔ)設(shè)備10中所存儲(chǔ)的物理位置144,例如圓筒、盤片、塊地址和存儲(chǔ)設(shè)備標(biāo)識(shí)符。
[0038]圖7示出由高速緩存管理器24執(zhí)行的操作的實(shí)施例,用以從第一高速緩存14降級(jí)未修改軌道。當(dāng)確定在第一高速緩存14中釋放空間時(shí),可啟動(dòng)降級(jí)操作。當(dāng)啟動(dòng)(在塊200處)操作以確定是否從第一高速緩存14中去除軌道從而在第一高速緩存14中釋放空間時(shí),高速緩存管理器24基于對(duì)不同類型的未修改軌道的預(yù)期命中而確定(在塊202處)降級(jí)非相繼還是相繼未修改軌道。如果(在塊204處)確定降級(jí)未修改相繼軌道,則高速緩存管理器24使用(在塊206處)未修改相繼LRU列表54以確定要從列表的LRU端降級(jí)的未修改相繼軌道,其并未被提升到第二高速緩存18。如果(在塊204處)確定降級(jí)未修改非相繼軌道,則高速緩存管理器使用未修改非相繼LRU列表58確定(在塊208處)要降級(jí)的未修改非相繼軌道。未修改非相繼軌道(在塊210處)被提升到第二高速緩存18。
[0039]圖8示出由高速緩存管理器24執(zhí)行的操作的實(shí)施例,用以從第一高速緩存14降級(jí)已修改軌道。如果在第一高速緩存?zhèn)浞菰O(shè)備16中需要空間,高速緩存管理器24可作為預(yù)定操作的一部分而定期降級(jí)軌道,并增加降級(jí)速率。當(dāng)啟動(dòng)(在塊250處)降級(jí)已修改軌道的操作時(shí),高速緩存管理器24處理(在塊252處)已修改LRU列表56以確定要從LRU列表56的LRU端降級(jí)的已修改軌道。如果(在塊254處)所確定的已修改軌道是相繼的,則高速緩存管理器24寫入(在塊256處)所確定的已修改相繼軌道到存儲(chǔ)設(shè)備10,從而繞過第二高速緩存18。如果(在塊254處)已修改軌道是非相繼的,則高速緩存管理器24提升(在塊258處)所確定的已修改非相繼軌道到第二高速緩存18并從第一高速緩存?zhèn)浞菰O(shè)備16丟棄(在塊260處)所確定的已修改軌道的副本。
[0040]利用圖7和圖8的操作,非相繼軌道被降級(jí),但不被提升到第二高速緩存18。相繼已修改(寫入)被直接寫入到存儲(chǔ)設(shè)備10,從而繞過第二高速緩存。相繼未修改軌道(讀取)被丟棄并且不被復(fù)制到其它位置,而從第一高速緩存14降級(jí)的未修改非相繼軌道被提升到第二高速緩存18。
[0041]圖9示出可由高速緩存管理器24執(zhí)行的操作的實(shí)施例,用以添加(即提升)軌道到第一高速緩存14,該軌道可包括來自主機(jī)2a、2b...2n的寫入或已修改軌道,受讀取請(qǐng)求支配并因此被移動(dòng)到第一高速緩存14的第二高速緩存18中的非相繼軌道,或者未在高速緩存14或18中找到并從存儲(chǔ)設(shè)備10檢索的讀取所請(qǐng)求的數(shù)據(jù)。當(dāng)接收(在塊300處)待添加至第一高速緩存14的軌道時(shí),高速緩存管理器24為待添加的軌道創(chuàng)建(在塊301處)控制塊100 (圖4),以指示第一高速緩存14中的位置104以及該軌道是否是已修改/未修改106和相繼/非相繼108。該控制塊100被添加到第一高速緩存14的控制塊目錄52。高速緩存管理器24添加(在塊302處)條目到第一高速緩存軌道索引50,其具有待添加的軌道的軌道ID以及到控制塊目錄52中所創(chuàng)建的高速緩存控制塊100的索引。條目被添加(在塊304處)到待添加的軌道的軌道類型的LRU列表54、56或58的MRU端。如果(在塊306處)待添加的軌道是已修改非相繼軌道,則待添加的軌道還被復(fù)制(在塊308處)到第一高速緩存?zhèn)浞菰O(shè)備16,并且針對(duì)添加的軌道,條目被添加到第一高速緩存?zhèn)浞菰O(shè)備索引30。如果(在塊306處)待添加的軌道是未修改相繼軌道,則控制結(jié)束。
[0042]圖10示出由高速緩存管理器24執(zhí)行的操作的實(shí)施例,用以將從第一高速緩存14降級(jí)的非相繼軌道提升到第二高速緩存18。當(dāng)啟動(dòng)(在塊350處)操作以提升軌道到第二高速緩存18時(shí),高速緩存管理器24添加(在塊352處)正被提升到第二高速緩存18中LSA32的軌道,并為待添加的軌道創(chuàng)建(在塊354處)控制塊120 (圖5),以指示在LSA32中的軌道位置124以及軌道是否已修改/未修改126。條目被添加(在塊356處)到第二高速緩存軌道索引70中,其具有被提升的軌道的軌道ID以及到第二高速緩存18的控制塊目錄72中所創(chuàng)建的高速緩存控制塊120的索引。如果(從塊358的“否”分支)正被提升的軌道是未修改數(shù)據(jù),則高速緩存管理器24在未修改LRU列表74的MRU端處指示(在塊360處)被提升的軌道,例如通過添加軌道ID到MRU端。如果(在塊358處)被提升的軌道是已修改數(shù)據(jù),則高速緩存管理器24確定(在塊362處)在存儲(chǔ)設(shè)備10上寫入已修改被提升的軌道的物理位置,并添加(在塊364處)條目到空間索引76,以指示被提升的軌道的軌道ID142以及所確定的被提升的軌道在存儲(chǔ)設(shè)備10上的物理位置144。
[0043]圖11示出由高速緩存管理器24執(zhí)行的操作的實(shí)施例,用以在第二高速緩存18中為待添加到第二高速緩存18的新軌道釋放空間,即從第一高速緩存14降級(jí)的軌道。當(dāng)啟動(dòng)該操作時(shí)(在塊400處),高速緩存管理器24從未修改LRU列表74的LRU端確定(在塊402處)第二高速緩存18中未修改軌道,并且使所確定的未修改軌道無效(在塊404處),而不降級(jí)被無效的未修改軌道到存儲(chǔ)設(shè)備10,并且還從未修改LRU列表74去除被無效的未修改軌道。
[0044]圖12示出由高速緩存管理器24所執(zhí)行操作的實(shí)施例,用以將第二高速緩存12中的已修改軌道降級(jí)到存儲(chǔ)設(shè)備10。當(dāng)啟動(dòng)(在塊420處)降級(jí)操作時(shí),高速緩存管理器24使用(在塊422處)空間索引76,以確定第二高速緩存18中的已修改軌道,從而基于已修改軌道在空間索引76中的順序?qū)υ诖鎯?chǔ)設(shè)備上的鄰近物理位置處的那些已修改軌道進(jìn)行分組,例如在位置排序的空間索引76中連續(xù)條目140 (圖6)處的一組軌道。所確定的已分組的已修改軌道(在塊424處)被從第二高速緩存18降級(jí)到存儲(chǔ)設(shè)備10。
[0045]圖12的操作優(yōu)化到存儲(chǔ)設(shè)備10 (其包括順序存取存儲(chǔ)設(shè)備)的寫入操作,通過使得存儲(chǔ)設(shè)備10在存儲(chǔ)設(shè)備10寫入表面的物理上最鄰近的物理位置處寫入軌道,從而最小化存儲(chǔ)設(shè)備10寫入頭的尋找量和移動(dòng),用以將第二高速緩存18中的軌道寫入到存儲(chǔ)設(shè)備10?;跁r(shí)間因素將軌道從第一高速緩存16提升到第二高速緩存18,例如它們?cè)贚RU列表54、56、58中的位置,而不是以針對(duì)到順序存取存儲(chǔ)設(shè)備10 (例如硬盤驅(qū)動(dòng)器)的相繼寫入而優(yōu)化的次序。因此,圖12的操作基于時(shí)間排序的已修改軌道在存儲(chǔ)設(shè)備10上的空間位置而優(yōu)化這些時(shí)間排序的已修改軌道,從而優(yōu)化在存儲(chǔ)設(shè)備10處的寫入。
[0046]圖13示出由高速緩存管理器24所執(zhí)行操作的實(shí)施例,用以從高速緩存14和18以及存儲(chǔ)設(shè)備10檢索對(duì)于讀取請(qǐng)求的所請(qǐng)求的軌跡。處理讀取請(qǐng)求的存儲(chǔ)管理器22可提交請(qǐng)求到高速緩存管理器24以用于所請(qǐng)求的軌道。當(dāng)接收(在塊450處)對(duì)于軌道的請(qǐng)求時(shí),高速緩存管理器24使用(在塊454處)第一高速緩存軌道索引50以確定是否所有所請(qǐng)求的軌道都在第一高速緩存14中。如果(在塊454處)并非所有所請(qǐng)求的軌道都在第一高速緩存14中,則高速緩存管理器24使用(在塊456處)第二高速緩存軌道索引70以確定在第二高速緩存18中而不在第一高速緩存14中的任何所請(qǐng)求的軌道。如果(在塊458處)存在在第一高速緩存14和第二高速緩存18中都未找到的任何所請(qǐng)求的軌道,則高速緩存管理器24從第二高速緩存軌道索引70中確定(在塊460處)在存儲(chǔ)設(shè)備10中而不在第一高速緩存14和第二高速緩存18中的任何所請(qǐng)求的軌道。然后高速緩存管理器24將在第二高速緩存18和存儲(chǔ)設(shè)備10中的任何所確定的軌道提升(在塊462處)到第一高速緩存14中。高速緩存管理器24使用(在塊464處)第一高速緩存軌道索引50以從第一高速緩存14檢索所請(qǐng)求的軌道以便返回給讀取請(qǐng)求。用于所檢索的軌道的條目被移動(dòng)(在塊466處)到包括用于所檢索的軌道的條目的LRU列表54、56、58的MRU端。利用圖13的操作,高速緩存管理器24從最高級(jí)的高速緩存14中檢索所請(qǐng)求的軌道,然后在進(jìn)入存儲(chǔ)設(shè)備10之前首先從第二高速緩存18檢索,因?yàn)楦咚倬彺?4和18將具有所請(qǐng)求的軌道的最近已修改版本。首先在第一高速緩存14中查找最近版本,如果不在第一高速緩存14中,則在第二高速緩存18中查找,如果不在高速緩存14、18的任一者中,則在存儲(chǔ)設(shè)備10中查找。
[0047]利用圖13的操作,高速緩存管理器24從最高級(jí)的高速緩存14檢索所請(qǐng)求的軌道,然后在進(jìn)入存儲(chǔ)設(shè)備10之前首先從第二高速緩存18檢索,因?yàn)楦咚倬彺?4和18將具有所請(qǐng)求的軌道的最近已修改版本。首先在第一高速緩存14中查找最新版本,如果不在第一高速緩存14中,則在第二高速緩存18中查找,如果不在高速緩存14、18的任一者中,則在存儲(chǔ)設(shè)備10中查找。
[0048]所述實(shí)施例提供用于允許在主要或第一級(jí)高速緩存和存儲(chǔ)設(shè)備之間使用第二級(jí)高速緩存的技術(shù),用以在最快存取第一高速緩存14具有最昂貴的空間、每字節(jié)成本時(shí)增加高速緩存空間,而比第一高速緩存便宜但比存儲(chǔ)設(shè)備快的第二高速緩存可用于增加系統(tǒng)中的高速緩存的數(shù)據(jù)量。當(dāng)所請(qǐng)求的數(shù)據(jù)在高速緩存中并可從高速緩存中返回而不必從較慢存取、成本較低的存儲(chǔ)設(shè)備中檢索時(shí),增加較快存取高速緩存的存儲(chǔ)空間提高了對(duì)高速緩存的數(shù)據(jù)的存取。另外,在所述實(shí)施例中,軌道基于第一高速緩存中的時(shí)間排序而被添加到第二高速緩存,然后基于順序存取存儲(chǔ)設(shè)備中的空間物理位置而在第二高速緩存中排序,使得降級(jí)的軌道被寫入到在存儲(chǔ)設(shè)備中鄰近或連續(xù)物理位置處的軌道組中,從而優(yōu)化到存儲(chǔ)設(shè)備的軌道寫入。
[0049]所述操作可被實(shí)現(xiàn)為方法、裝置或使用標(biāo)準(zhǔn)編程和/或工程技術(shù)來產(chǎn)生軟件、固件、硬件或其任意組合的計(jì)算機(jī)程序產(chǎn)品。因此,實(shí)施例的個(gè)方面可采用在這里一般都可被稱為“電路”、“模塊”或“系統(tǒng)”的完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、常駐軟件、微代碼等)或組合了軟件和硬件方面的實(shí)施例形式。此外,實(shí)施例的各方面可采用在具有其上體現(xiàn)的計(jì)算機(jī)可讀程序代碼的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中體現(xiàn)的計(jì)算機(jī)程序產(chǎn)品的形式。
[0050]可使用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是(例如但不限于)電子的、磁的、光學(xué)的、電磁的、紅外的或半導(dǎo)體系統(tǒng)、裝置或設(shè)備或前述的任何適當(dāng)組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮盡列表)將包括以下:具有一條或多條導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器)、光纖、便攜式光盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備或前述的任何適當(dāng)組合。在本文檔的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何有形的介質(zhì),它可包含或存儲(chǔ)由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或連同指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的程序。
[0051]計(jì)算機(jī)可讀信號(hào)介質(zhì)可包括具有在其中體現(xiàn)的計(jì)算機(jī)可讀程序代碼的傳播數(shù)據(jù)信號(hào),例如在基帶中或作為載波的部分。這種傳播的信號(hào)可采用各種形式的任一種,包括但不限于電磁的、光學(xué)的或其任何合適的組合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以是除了計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)外以外并可通信、傳播或運(yùn)輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或連同指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的程序的任何計(jì)算機(jī)可讀介質(zhì)。
[0052]可使用任何適當(dāng)?shù)慕橘|(zhì),包括但不限于無線、有線、光纖光纜、射頻等或前述的任何適當(dāng)組合來傳送在計(jì)算機(jī)可讀介質(zhì)上體現(xiàn)的程序代碼。
[0053]可以一種或多種編程語言的組合編寫用于執(zhí)行本發(fā)明方面的操作的計(jì)算機(jī)程序代碼,所述編程語言包括:諸如Java、Smalltalk、C++等面向?qū)ο蟮木幊陶Z言以及諸如“C”編程語言或類似編程語言的常規(guī)過程編程語言。程序代碼可完全在用戶的計(jì)算機(jī)上、部分地在用戶的計(jì)算機(jī)上、作為獨(dú)立的軟件包、部分地在用戶的計(jì)算機(jī)上并部分地在遠(yuǎn)程計(jì)算機(jī)上或完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種情況中,遠(yuǎn)程計(jì)算機(jī)可通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任何類型的網(wǎng)絡(luò)而連接到用戶的計(jì)算機(jī)上,或者可做出到外部計(jì)算機(jī)的連接(例如使用互聯(lián)網(wǎng)服務(wù)提供商通過互聯(lián)網(wǎng))。
[0054]以上參考根據(jù)發(fā)明的實(shí)施例的方法、設(shè)備(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖說明和/或塊圖描述本發(fā)明的方面。將理解的是,流程圖說明和/或框圖的每個(gè)塊以及流程圖說明和/或框圖中的塊組合可由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器,以產(chǎn)生機(jī)器,使得通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令創(chuàng)建用于實(shí)施流程圖和/或框圖塊中指定的功能/動(dòng)作的裝置。
[0055]這些計(jì)算機(jī)程序指令還可存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,該計(jì)算機(jī)可讀介質(zhì)可以指引計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備以特定方式工作,使得計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)的指令產(chǎn)生包括指令的制造物品,該指令執(zhí)行流程圖和/或框圖塊中指定的功能/動(dòng)作。
[0056]計(jì)算機(jī)程序指令還可加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上,以使得一系列的操作步驟在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行,用以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供用于實(shí)現(xiàn)流程圖和/或框圖塊中指定的功能/動(dòng)作的過程。
[0057]術(shù)語“一實(shí)施例”、“實(shí)施例”、“多個(gè)實(shí)施例”、“該實(shí)施例”、“該多個(gè)實(shí)施例”、“一個(gè)或多個(gè)實(shí)施例”、“一些實(shí)施例”和“一個(gè)實(shí)施例”是指“本發(fā)明的一個(gè)或多個(gè)(但不是全部)實(shí)
施例”,除非另有明確規(guī)定。
[0058]術(shù)語“包含”、“包括”、“具有”及其變體的是指“包含但不限于”,除非另有明確規(guī)定。
[0059]項(xiàng)目的枚舉列表并不暗示任何或所有的項(xiàng)目是相互排斥的,除非另有明確規(guī)定列舉。
[0060]術(shù)語“一個(gè)”和“該”是指“一個(gè)或多個(gè)”,除非另有明確規(guī)定。
[0061]彼此通信的設(shè)備不需要彼此連續(xù)通信,除非另有明確規(guī)定。此外,彼此通信的設(shè)備可直接通信或者通過一個(gè)或多個(gè)媒介間接地通信。
[0062]具有彼此通信的幾個(gè)組件的實(shí)施例的描述并不暗示需要所有的這些組件。相反,描述各種可選的組件來示出本發(fā)明的各種各樣的可能實(shí)施例。
[0063]此外,雖然以相繼次序描述過程步驟、方法步驟、算法等,但是這樣的過程、方法和算法可被配置為以可替換的次序工作。換言之,可被描述的任何步驟的序列或次序并不一定指示以該次序執(zhí)行步驟的需要。也可以任何實(shí)用的次序執(zhí)行此處所述的過程步驟。此外,可以同時(shí)執(zhí)行某些步驟。
[0064]當(dāng)在此處描述單個(gè)設(shè)備或物品時(shí),將易于顯而易見的是,可使用一個(gè)以上的設(shè)備/物品(不論它們協(xié)作與否)來代替單個(gè)設(shè)備/物品。同樣,當(dāng)此處描述一個(gè)以上的設(shè)備或物品時(shí)(不論它們協(xié)作與否),將易于顯而易見的是,可使用單個(gè)設(shè)備/物品來取代一個(gè)以上的設(shè)備或物品,或者可使用不同數(shù)目的設(shè)備/物品來取代所示數(shù)目的設(shè)備或程序。一設(shè)備的功能和/或特征可選地可由一個(gè)或多個(gè)其它設(shè)備實(shí)施,所述一個(gè)或多個(gè)其它設(shè)備未被明確描述為具有這樣的功能/特征。因此,本發(fā)明的其它實(shí)施例不需要包括設(shè)備本身。
[0065]圖7-圖13示出的操作顯示以某一次序發(fā)生的某些事件。在可替代的實(shí)施例中,可以不同的次序執(zhí)行某些操作,修改或刪除某些操作。此外,步驟可添加到上述邏輯,并且仍然符合所述實(shí)施例。此外,此處所述的操作可能相繼發(fā)生,或者可并行處理某些操作。更進(jìn)一步地,操作可由單個(gè)處理單元或由分布式處理單元執(zhí)行。
【權(quán)利要求】
1.一種計(jì)算機(jī)程序產(chǎn)品,用于管理包括第一高速緩存、第二高速緩存和存儲(chǔ)設(shè)備的高速緩存系統(tǒng)中的數(shù)據(jù),所述計(jì)算機(jī)程序產(chǎn)品包括具有在其中體現(xiàn)的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀程序代碼執(zhí)行以實(shí)施操作,所述操作包括: 在所述第一高速緩存中保持所述存儲(chǔ)設(shè)備中的受輸入/輸出(I/o)請(qǐng)求支配的已修改軌道和未修改軌道; 將所述已修改軌道和未修改軌道從所述第一高速緩存降級(jí); 將從所述第一高速緩存降級(jí)的所述已修改軌道和未修改軌道提升到所述第二高速緩存; 丟棄從所述第二高速緩存降級(jí)的未修改軌道; 對(duì)所述第二高速緩存中的在所述存儲(chǔ)設(shè)備上的鄰近物理位置處的已修改軌道進(jìn)行分組;以及 將已分組的已修改軌道從所述第二高速緩存降級(jí)到所述存儲(chǔ)設(shè)備。
2.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述第一高速緩存是比所述第二高速緩存快的存取設(shè)備,并且其中所述第二高速緩存是比所述存儲(chǔ)設(shè)備快的存取設(shè)備。
3.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述第一高速緩存包括隨機(jī)存取存儲(chǔ)器(RAM),所述第二高速緩存包括閃存設(shè)備,而所述存儲(chǔ)設(shè)備包括順序?qū)懭朐O(shè)備。
4.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 以基于所述第二高速緩存中的已修改軌道在所述存儲(chǔ)設(shè)備中的物理位置的排序,保持指示所述第二高速緩存中的已修改軌道的空間索引,其中所述空間索引用于基于所述第二高速緩存中的已修改軌道在所述空`間索引中的次序確定在所述存儲(chǔ)設(shè)備上的鄰近物理位置處的將被分組的已修改軌道。
5.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 確定所述第一高速緩存中的待降級(jí)的已修改軌道是否是相繼軌道; 將被確定為是相繼的所述待降級(jí)的已修改軌道寫入到所述存儲(chǔ)設(shè)備,而繞過所述第二高速緩存;以及 將被確定為是非相繼的所述待降級(jí)的已修改軌道提升到所述第二高速緩存。
6.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中被提升到所述第二高速緩存的從所述第一高速緩存降級(jí)的已修改軌道和未修改軌道包括聯(lián)機(jī)線事務(wù)處理(OLTP)軌道。
7.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 丟棄為相繼未修改軌道的所述待降級(jí)的未修改軌道,而不將被降級(jí)的相繼未修改軌道寫入到所述第二高速緩存或存儲(chǔ)設(shè)備,其中從所述第一高速緩存降級(jí)的未修改非相繼軌道被提升到所述第二高速緩存。
8.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 保持指示所述第一高速緩存中的未修改非相繼軌道的第一 LRU列表; 保持指示所述第一高速緩存中的未修改相繼軌道的第二 LRU列表; 確定所述第一高速緩存中的待降級(jí)的未修改非相繼軌道; 使用所述第一 LRU列表來確定待降級(jí)的未修改非相繼軌道; 確定所述第一高速緩存中的待降級(jí)的未修改相繼軌道;以及 使用所述第二 LRU列表來確定待降級(jí)的未修改相繼軌道。
9.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 保持所述第二高速緩存中的未修改軌道的最近最少使用(LRU)列表; 確定需要從所述第二高速緩存降級(jí)以釋放空間的軌道; 從所述第二高速緩存中的未修改軌道的LRU列表確定未修改軌道;以及 從所述第二高速緩存無效所確定的未修改軌道。
10.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 在所述第二高速緩存中的日志結(jié)構(gòu)陣列(LSA)中存儲(chǔ)從所述第一高速緩存降級(jí)的已修改軌道和未修改軌道;以及 對(duì)于所述第二高速緩存保持LSA索引,以指示所述第二高速緩存中的軌道,以及對(duì)于每個(gè)軌道保持到所述軌道的控制塊的指針,以指針指示軌道在所述LSA中的位置。
11.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 將添加到所述第一高速緩存的已修改軌道寫入到高速緩存?zhèn)浞菰O(shè)備; 保持指示所述第一高速緩存中的已修改軌道的第一高速緩存已修改LRU列表; 確定待從所述高速緩存?zhèn)浞菰O(shè)備降級(jí)的數(shù)據(jù); 響應(yīng)于所述第一 高速緩存已修改LRU列表為滿,使用所述第一高速緩存已修改LRU列表來確定待從所述第一高速緩存降級(jí)的已修改軌道;以及 從所述高速緩存?zhèn)浞菰O(shè)備丟棄作為所確定的待降級(jí)的已修改軌道的副本的軌道。
12.根據(jù)權(quán)利要求1的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 接收對(duì)于所請(qǐng)求的軌道的讀取請(qǐng)求; 在所述第一高速緩存中檢索任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求; 檢索未在所述第一高速緩存中找到而在所述第二高速緩存中的任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求;以及 從所述存儲(chǔ)設(shè)備中檢索未在所述第一高速緩存和第二高速緩存中找到的任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求;以及 將從所述第二高速緩存和存儲(chǔ)設(shè)備中檢索的任何所請(qǐng)求的軌道提升到所述第一高速緩存。
13.一種與存儲(chǔ)設(shè)備進(jìn)行通信的系統(tǒng),包括: 第一高速緩存; 第二高速緩存; 處理器; 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),具有由所述處理器執(zhí)行以實(shí)施操作的代碼,所述操作包括: 在所述第一高速緩存中保持所述存儲(chǔ)設(shè)備中的受輸入/輸出(I/O)請(qǐng)求支配的已修改軌道和未修改軌道; 將所述已修改軌道和未修改軌道從所述第一高速緩存降級(jí); 將從所述第一高速緩存降級(jí)的所述已修改軌道和未修改軌道提升到所述第二高速緩存; 丟棄從所述第二高速緩存降級(jí)的未修改軌道; 對(duì)所述第二高速緩存中的在所述存儲(chǔ)設(shè)備上的鄰近物理位置處的已修改軌道進(jìn)行分組;以及將已分組的已修改軌道從所述第二高速緩存降級(jí)到所述存儲(chǔ)設(shè)備。
14.根據(jù)權(quán)利要求13的系統(tǒng),其中所述第一高速緩存包括隨機(jī)存取存儲(chǔ)器(RAM),所述第二高速緩存包括閃存設(shè)備,而所述存儲(chǔ)設(shè)備包括順序?qū)懭朐O(shè)備。
15.根據(jù)權(quán)利要求13的系統(tǒng),其中所述操作還包括:以基于所述第二高速緩存中的已修改軌道在所述存儲(chǔ)設(shè)備中的物理位置的排序,保持指示所述第二高速緩存中的已修改軌道的空間索引,其中所述空間索引用于基于所述第二高速緩存中的已修改軌道在所述空間索引中的次序確定在所述存儲(chǔ)設(shè)備上的鄰近物理位置處的將被分組的已修改軌道。
16.根據(jù)權(quán)利要求13的系統(tǒng),其中所述操作還包括: 確定所述第一高速緩存中的待降級(jí)的已修改軌道是否是相繼軌道; 將被確定為是相繼的所述待降級(jí)的已修改軌道寫入到所述存儲(chǔ)設(shè)備,而繞過所述第二高速緩存;以及 將被確定為是非相繼的所述待降級(jí)的已修改軌道提升到所述第二高速緩存。
17.根據(jù)權(quán)利要求13的系統(tǒng),其中所述操作還包括: 丟棄為相繼未修改軌道的所述待降級(jí)的未修改軌道,而不將被降級(jí)的相繼未修改軌道寫入到所述第二高速緩存或存儲(chǔ)設(shè)備,其中從所述第一高速緩存降級(jí)的未修改非相繼軌道被提升到所述第二高速緩存。
18.根據(jù)權(quán)利要求13的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 保持指示所述第一高速緩存中的未修改非相繼軌道的第一 LRU列表; 保持指示所述第一高速緩存中的未修改相繼軌道的第二 LRU列表; 確定所述第一高速緩存中的待降級(jí)的未修改非相繼軌道; 使用所述第一 LRU列表來確定待降級(jí)的未修改非相繼軌道; 確定所述第一高速緩存中的待降級(jí)的未修改相繼軌道;以及 使用所述第二 LRU列表來確定待降級(jí)的未修改相繼軌道。
19.根據(jù)權(quán)利要求13的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 接收對(duì)于所請(qǐng)求的軌道的讀取請(qǐng)求; 在所述第一高速緩存中檢索任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求; 檢索未在所述第一高速緩存中找到而在所述第二高速緩存中的任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求;以及 從所述存儲(chǔ)設(shè)備中檢索未在所述第一高速緩存和第二高速緩存中找到的任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求;以及 將從所述第二高速緩存和存儲(chǔ)設(shè)備中檢索的任何所請(qǐng)求的軌道提升到所述第一高速緩存。
20.—種方法,包括: 在所述第一高速緩存中保持所述存儲(chǔ)設(shè)備中的受輸入/輸出(I/O)請(qǐng)求支配的已修改軌道和未修改軌道; 將所述已修改軌道和未修改軌道從所述第一高速緩存降級(jí); 將從所述第一高速緩存降級(jí)的所述已修改軌道和未修改軌道提升到所述第二高速緩存; 丟棄從所述第二高速緩存降級(jí)的未修改軌道;對(duì)所述第二高速緩存中的在所述存儲(chǔ)設(shè)備上的鄰近物理位置處的已修改軌道進(jìn)行分組;以及 將已分組的已修改軌道從所述第二高速緩存降級(jí)到所述存儲(chǔ)設(shè)備。
21.根據(jù)權(quán)利要求20的方法,其中所述第一高速緩存包括隨機(jī)存取存儲(chǔ)器(RAM),所述第二高速緩存包括閃存設(shè)備,而所述存儲(chǔ)設(shè)備包括順序?qū)懭朐O(shè)備。
22.根據(jù)權(quán)利要求20的方法,還包括:以基于所述第二高速緩存中的已修改軌道在所述存儲(chǔ)設(shè)備中的物理位置的排序,保持指示所述第二高速緩存中的已修改軌道的空間索弓丨,其中所述空間索引用于基于所述第二高速緩存中的已修改軌道在所述空間索引中的次序確定在所述存儲(chǔ)設(shè)備上的鄰近物理位置處的將被分組的已修改軌道。
23.根據(jù)權(quán)利要求20的方法,還包括: 確定所述第一高速緩存中的待降級(jí)的已修改軌道是否是相繼軌道; 將被確定為是相繼的所述待降級(jí)的已修改軌道寫入到所述存儲(chǔ)設(shè)備,而繞過所述第二高速緩存;以及 將被確定為是非相繼的所述待降級(jí)的已修改軌道提升到所述第二高速緩存。
24.根據(jù)權(quán)利要求20的方法,還包括: 丟棄為相繼未修改軌道的所述待降級(jí)的未修改軌道,而不將被降級(jí)的相繼未修改軌道寫入到所述第二高速緩存或存儲(chǔ)設(shè)備,其中從所述第一高速緩存降級(jí)的未修改非相繼軌道被提升到所述第二高速緩存。
25.根據(jù)權(quán)利要求20 的 方法,還包括: 保持指示所述第一高速緩存中的未修改非相繼軌道的第一 LRU列表; 保持指示所述第一高速緩存中的未修改相繼軌道的第二 LRU列表; 確定所述第一高速緩存中的待降級(jí)的未修改非相繼軌道; 使用所述第一 LRU列表來確定待降級(jí)的未修改非相繼軌道; 確定所述第一高速緩存中的待降級(jí)的未修改相繼軌道;以及 使用所述第二 LRU列表來確定待降級(jí)的未修改相繼軌道。
26.根據(jù)權(quán)利要求20的方法,還包括: 接收對(duì)于所請(qǐng)求的軌道的讀取請(qǐng)求; 在所述第一高速緩存中檢索任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求; 檢索未在所述第一高速緩存中找到而在所述第二高速緩存中的任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求;以及 從所述存儲(chǔ)設(shè)備中檢索未在所述第一高速緩存和第二高速緩存中找到的任何所請(qǐng)求的軌道以返回給所述讀取請(qǐng)求;以及 將從所述第二高速緩存和存儲(chǔ)設(shè)備中檢索的任何所請(qǐng)求的軌道提升到所述第一高速緩存。
【文檔編號(hào)】G06F12/16GK103562887SQ201280024839
【公開日】2014年2月5日 申請(qǐng)日期:2012年5月22日 優(yōu)先權(quán)日:2011年5月23日
【發(fā)明者】M·T·本哈斯, L·M·古普塔, M·J·卡洛斯, B·S·吉爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司