国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      管理高速緩存數(shù)據(jù)和元數(shù)據(jù)的制作方法

      文檔序號(hào):6595515閱讀:286來(lái)源:國(guó)知局
      專利名稱:管理高速緩存數(shù)據(jù)和元數(shù)據(jù)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及用于使用非易失性存儲(chǔ)器設(shè)備的技術(shù),如可移動(dòng)和不可移動(dòng)非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)設(shè)備。
      背景技術(shù)
      一些常規(guī)操作系統(tǒng)提供采用非易失性存儲(chǔ)器設(shè)備(即,可用于向計(jì)算機(jī)提供輔助存儲(chǔ)和/或存儲(chǔ)器的外圍設(shè)備,如閃存USB驅(qū)動(dòng)器)來(lái)作為較慢存儲(chǔ)設(shè)備(例如,盤存儲(chǔ)介質(zhì)或可經(jīng)由網(wǎng)絡(luò)訪問(wèn)的一個(gè)或多個(gè)存儲(chǔ)設(shè)備)的塊或文件級(jí)高速緩存以提高操作系統(tǒng)和/ 或應(yīng)用程序的性能的能力。在這一方面,因?yàn)閷?duì)非易失性存儲(chǔ)器設(shè)備(此后,為簡(jiǎn)明起見(jiàn)稱為“高速緩存設(shè)備”)的讀和寫操作與對(duì)較慢存儲(chǔ)設(shè)備的讀和寫操作相比可以執(zhí)行得更快, 所以使用高速緩存設(shè)備來(lái)對(duì)存儲(chǔ)在這樣的較慢設(shè)備上的數(shù)據(jù)進(jìn)行高速緩存提供了顯著地提高操作系統(tǒng)和/或應(yīng)用程序的輸入/輸出(I/O)操作的速度的機(jī)會(huì)。為此,美國(guó)華盛頓州雷蒙德市的微軟公司生產(chǎn)的微軟Windows Vista操作系統(tǒng)包括被稱為ReadyBoost (就緒推進(jìn))的特征,該特征允許用戶使用高速緩存設(shè)備來(lái)對(duì)還駐留在較慢存儲(chǔ)設(shè)備(此后為方便起見(jiàn)稱為“盤存儲(chǔ)”或“盤”,但應(yīng)當(dāng)理解,這些術(shù)語(yǔ)一般指I/O通常執(zhí)行得比高速緩存設(shè)備慢的任何存儲(chǔ)介質(zhì)和/或設(shè)備,包括可經(jīng)由網(wǎng)絡(luò)訪問(wèn)的存儲(chǔ)設(shè)備)中的數(shù)據(jù)進(jìn)行高速緩存。采用高速緩存設(shè)備來(lái)對(duì)存儲(chǔ)在盤上的數(shù)據(jù)進(jìn)行高速緩存可以使用高速緩存管理器組件來(lái)實(shí)現(xiàn),在一些實(shí)現(xiàn)中,該組件是在操作系統(tǒng)的I/O棧中實(shí)現(xiàn)的驅(qū)動(dòng)程序。圖1A-1B 描繪示例高級(jí)過(guò)程10A-10B,其中高速緩存管理器組件100對(duì)數(shù)據(jù)在高速緩存設(shè)備110中的高速緩存進(jìn)行管理??梢允褂糜芯€和/或無(wú)線通信基礎(chǔ)結(jié)構(gòu)和協(xié)議來(lái)將高速緩存設(shè)備110 耦合到高速緩存管理器110所處的計(jì)算機(jī)(未示出)上。例如,高速緩存設(shè)備110可以是可從計(jì)算機(jī)(例如,包括閃存USB驅(qū)動(dòng)器)移除的、不可移除的和/或可由計(jì)算機(jī)經(jīng)由一個(gè)或多個(gè)有線和/或無(wú)線網(wǎng)絡(luò)來(lái)訪問(wèn)。在過(guò)程IOA(圖1A)的開(kāi)始,高速緩存管理器100接收指定數(shù)據(jù)應(yīng)被寫入盤存儲(chǔ) (即,高速緩存的卷120)上的地址X的寫請(qǐng)求。高速緩存管理器100通過(guò)在操作101使得該數(shù)據(jù)被寫到高速緩存的卷120上的地址X并還在操作102使得該數(shù)據(jù)被寫到高速緩存設(shè)備110上的地址Y來(lái)處理該請(qǐng)求。過(guò)程10B(圖1B)包括在接收到指定應(yīng)當(dāng)讀出存儲(chǔ)在高速緩存的卷120上的地址X處的數(shù)據(jù)的讀請(qǐng)求之后執(zhí)行的操作。高速緩存管理器100確定該數(shù)據(jù)被高速緩存在高速緩存設(shè)備110上的地址Y處,并且在操作103使得在地址Y處的數(shù)據(jù)被讀取。隨后在操作104,從高速緩存設(shè)備來(lái)提供該數(shù)據(jù)以滿足讀請(qǐng)求。高速緩存管理器在元數(shù)據(jù)中維護(hù)盤地址(例如,地址X)到對(duì)應(yīng)的高速緩存地址 (例如,地址Y)的映射,并且這一 “高速緩存元數(shù)據(jù)”通常被用于從高速緩存設(shè)備讀取或向其寫入。通常,高速緩存元數(shù)據(jù)被維護(hù)在存儲(chǔ)器中并且在接收到I/O請(qǐng)求時(shí)由高速緩存管理器來(lái)訪問(wèn)。如此,在高速緩存管理器接收到定向到盤偏移X的讀請(qǐng)求時(shí),高速緩存管理器使用該高速緩存元數(shù)據(jù)來(lái)確定該數(shù)據(jù)還被存儲(chǔ)在高速緩存偏移Y處,并且通過(guò)使得從高速緩存偏移Y而非盤偏移X讀取該數(shù)據(jù)來(lái)滿足該請(qǐng)求。在高速緩存管理器接收到定向到盤偏移X的寫請(qǐng)求時(shí),高速緩存管理器采用該高速緩存元數(shù)據(jù)來(lái)確定該盤地址處的數(shù)據(jù)是否也被存儲(chǔ)在高速緩存中。如果是(例如,如果該數(shù)據(jù)被存儲(chǔ)在高速緩存地址Y處),高速緩存管理器可以使得該數(shù)據(jù)被寫到高速緩存中的適當(dāng)?shù)刂坊蝌?qū)逐在該地址處的高速緩存內(nèi)容。 如果否,則高速緩存管理器可以使得該數(shù)據(jù)被寫到高速緩存,并可以更新高速緩存元數(shù)據(jù)以使得將來(lái)對(duì)盤偏移χ的讀取可以改為從存儲(chǔ)在高速緩存中的數(shù)據(jù)來(lái)進(jìn)行服務(wù)。常規(guī)操作系統(tǒng)能夠支持具有相對(duì)有限存儲(chǔ)容量的高速緩存設(shè)備。例如,Windows Vista操作系統(tǒng)的ReadyBoost特征支持具有多達(dá)4GB存儲(chǔ)容量的高速緩存設(shè)備。(在發(fā)行 Windows Vista時(shí),高速緩存設(shè)備的最大存儲(chǔ)容量大約是2GB。)高速緩存設(shè)備的存儲(chǔ)容量近年來(lái)增長(zhǎng)迅速,其中一些高速緩存設(shè)備提供多達(dá)16GB的存儲(chǔ)容量,在進(jìn)行壓縮的情況下這可存儲(chǔ)相對(duì)于32GB數(shù)據(jù)。

      發(fā)明內(nèi)容
      申請(qǐng)人:明白,具有相對(duì)較大存儲(chǔ)容量的高速緩存設(shè)備提供很大的機(jī)會(huì)來(lái)提高操作系統(tǒng)和應(yīng)用程序所執(zhí)行的I/O操作的速度。申請(qǐng)人還明白,常規(guī)操作系統(tǒng)只支持具有相對(duì)有限存儲(chǔ)容量的高速緩存設(shè)備的一個(gè)原因是在發(fā)生某種類型的電源轉(zhuǎn)換(例如,待機(jī)、休眠(或非微軟Windows操作系統(tǒng)所使用的等效模式)、或重啟)時(shí)高速緩存內(nèi)容必須被重新填充。對(duì)于具有相對(duì)較大存儲(chǔ)容量的高速緩存設(shè)備,重新填充高速緩存內(nèi)容可花費(fèi)相當(dāng)長(zhǎng)的時(shí)間并消費(fèi)顯著的處理資源。作為示例,在使用來(lái)自盤的大約IOMB每秒的后臺(tái)I/O的情況下,可保持多達(dá)16GB壓縮數(shù)據(jù)的8GB閃存設(shè)備可能花費(fèi)多達(dá)30分鐘來(lái)重新填充。這不僅有效地否定了通過(guò)采用高速緩存設(shè)備所獲得的任何性能好處,而且可顯著地拖慢系統(tǒng)操作。高速緩存內(nèi)容必須在某些電源轉(zhuǎn)換之間重新填充的一個(gè)原因是在計(jì)算機(jī)重啟時(shí)沒(méi)有方法來(lái)可靠地確保高速緩存內(nèi)容準(zhǔn)確地表示盤存儲(chǔ)的內(nèi)容,因?yàn)楦咚倬彺嬖O(shè)備和/或盤的內(nèi)容可能在該電源轉(zhuǎn)換期間被修改。例如,在第一計(jì)算機(jī)關(guān)機(jī)時(shí),黑客可以將可移動(dòng)高速緩存設(shè)備斷開(kāi)連接,將其連接到另一計(jì)算機(jī),并修改高速緩存內(nèi)容,以使得在該設(shè)備隨后被重新連接到第一計(jì)算機(jī)的情況下,不正確的數(shù)據(jù)(此后稱為“不可信”數(shù)據(jù))可能從該高速緩存設(shè)備提供以滿足I/O請(qǐng)求。除黑客的惡意動(dòng)作之外,在電源轉(zhuǎn)換期間,高速緩存內(nèi)容也可能由于計(jì)算機(jī)或高速緩存設(shè)備的硬件故障而被毀壞。在電源轉(zhuǎn)換期間,高速緩存內(nèi)容也可因盤上的數(shù)據(jù)在該轉(zhuǎn)換期間被更新而變 “ I日”,使得在計(jì)算機(jī)重啟時(shí),高速緩存內(nèi)容不再準(zhǔn)確地表示盤內(nèi)容。例如,在關(guān)機(jī)之后,用戶可能將盤引導(dǎo)到不能識(shí)別該高速緩存設(shè)備的另一操作系統(tǒng)并且修改被高速緩存在該高速緩存設(shè)備上的存儲(chǔ)在盤上的數(shù)據(jù),使得在計(jì)算機(jī)重啟時(shí),高速緩存內(nèi)容不再反映存儲(chǔ)在盤上的內(nèi)容。在另一示例中,在關(guān)機(jī)期間,計(jì)算機(jī)上的一些動(dòng)作可在高速緩存設(shè)備被呈現(xiàn)為不可由操作系統(tǒng)訪問(wèn)之后發(fā)生,(例如,在高速緩存設(shè)備被關(guān)閉之后),使得操作系統(tǒng)在這一時(shí)間點(diǎn)之后所執(zhí)行的對(duì)盤的任何寫操作可能不能被高速緩存內(nèi)容準(zhǔn)確地反映。多個(gè)事件中的任一個(gè)可以使得高速緩存內(nèi)容在電源轉(zhuǎn)換之間變丨日。本發(fā)明的各實(shí)施方式提供用于管理這些和其他問(wèn)題的技術(shù),使得在電源轉(zhuǎn)換之間就準(zhǔn)確地反映存儲(chǔ)在盤上的數(shù)據(jù)而言高速緩存內(nèi)容是可以依賴的。例如,本發(fā)明的一些實(shí)施方式提供用于驗(yàn)證高速緩存內(nèi)容在電源轉(zhuǎn)換之間保持可信的技術(shù)。另外,一些實(shí)施方式提供用于可靠地確保高速緩存內(nèi)容在電源轉(zhuǎn)換之間不變舊的技術(shù)。此外,一些實(shí)施方式提供用于在電源轉(zhuǎn)換之間以及在正常操作(“穩(wěn)定狀態(tài)”)期間管理高速緩存元數(shù)據(jù)的技術(shù), 從而確保在電源轉(zhuǎn)換發(fā)生時(shí)高速緩存元數(shù)據(jù)可被有效地訪問(wèn)并被可靠地保存和還原。通過(guò)提供確保在電源轉(zhuǎn)換之間就準(zhǔn)確地反映存儲(chǔ)在盤上的數(shù)據(jù)而言高速緩存內(nèi)容可被依賴的技術(shù),本發(fā)明的一些實(shí)施方式可以允許采用具有大量存儲(chǔ)容量的高速緩存設(shè)備來(lái)顯著地加速操作系統(tǒng)和/或應(yīng)用程序所執(zhí)行的I/O操作。I/O操作的提高的速度可以不僅加速計(jì)算機(jī)的正常“穩(wěn)定狀態(tài)”操作,還可顯著地加速在引導(dǎo)期間執(zhí)行的操作,使得計(jì)算機(jī)更快地就緒。在本發(fā)明的一些實(shí)施方式中,提供了一種用于操作包括存儲(chǔ)器并且與存儲(chǔ)介質(zhì)和高速緩存設(shè)備耦合的計(jì)算機(jī)的方法,該存儲(chǔ)介質(zhì)將多個(gè)數(shù)據(jù)項(xiàng)的每一個(gè)存儲(chǔ)在相應(yīng)的地址處,該多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)還被存儲(chǔ)在高速緩存設(shè)備上的對(duì)應(yīng)地址處,該計(jì)算機(jī)可訪問(wèn)的高速緩存元數(shù)據(jù)提供存儲(chǔ)介質(zhì)上的地址與高速緩存設(shè)備上存儲(chǔ)每一數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射。該方法包括以下動(dòng)作(A)將高速緩存元數(shù)據(jù)存儲(chǔ)在包括多個(gè)分層結(jié)構(gòu)層的分層數(shù)據(jù)結(jié)構(gòu)中;以及(B)只將多個(gè)分層結(jié)構(gòu)層的子集加載到存儲(chǔ)器中。其他實(shí)施方式提供了其上編碼有在被包括存儲(chǔ)器并且與盤存儲(chǔ)和高速緩存設(shè)備耦合的計(jì)算機(jī)執(zhí)行時(shí)執(zhí)行一種方法的指令的至少一個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該盤存儲(chǔ)將多個(gè)數(shù)據(jù)項(xiàng)的每一個(gè)存儲(chǔ)在相應(yīng)的地址處,該多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)還被存儲(chǔ)在高速緩存設(shè)備上的對(duì)應(yīng)地址處,該計(jì)算機(jī)可訪問(wèn)的高速緩存元數(shù)據(jù)提供盤存儲(chǔ)上的地址與高速緩存設(shè)備上存儲(chǔ)每一數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射,該方法包括以下動(dòng)作(A)將高速緩存元數(shù)據(jù)存儲(chǔ)在高速緩存設(shè)備中的包括多個(gè)分層結(jié)構(gòu)層的分層數(shù)據(jù)結(jié)構(gòu)中;(B)啟動(dòng)該計(jì)算機(jī)的重新引導(dǎo);(C)在啟動(dòng)該計(jì)算機(jī)的重新引導(dǎo)之后,只將多個(gè)分層結(jié)構(gòu)層的子集加載到存儲(chǔ)器;(D)接收讀取存儲(chǔ)在存儲(chǔ)介質(zhì)上的一地址處的數(shù)據(jù)項(xiàng)的請(qǐng)求;(E)訪問(wèn)高速緩存元數(shù)據(jù)的第一部分以標(biāo)識(shí)數(shù)據(jù)項(xiàng)被存儲(chǔ)在高速緩存設(shè)備上的對(duì)應(yīng)地址;以及(F)將高速緩存元數(shù)據(jù)的第一部分存儲(chǔ)在存儲(chǔ)器中。又一些實(shí)施方式提供一種計(jì)算機(jī)系統(tǒng),包括存儲(chǔ)器;在相應(yīng)地址處存儲(chǔ)多個(gè)數(shù)據(jù)項(xiàng)的存儲(chǔ)介質(zhì);高速緩存設(shè)備,該高速緩存設(shè)備也在對(duì)應(yīng)地址處存儲(chǔ)多個(gè)數(shù)據(jù)項(xiàng)并存儲(chǔ)提供存儲(chǔ)介質(zhì)上的地址與高速緩存設(shè)備上存儲(chǔ)每一數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射的高速緩存元數(shù)據(jù),該高速緩存元數(shù)據(jù)被存儲(chǔ)在包括多個(gè)分層結(jié)構(gòu)層的分層數(shù)據(jù)結(jié)構(gòu)中;至少一個(gè)處理器,該至少一個(gè)處理器被編程成在啟動(dòng)計(jì)算機(jī)的重新引導(dǎo)之后,只將多個(gè)分層結(jié)構(gòu)層的子集加載到存儲(chǔ)器;通過(guò)使用高速緩存元數(shù)據(jù)來(lái)標(biāo)識(shí)數(shù)據(jù)項(xiàng)被存儲(chǔ)在高速緩存設(shè)備中的對(duì)應(yīng)地址并通過(guò)將所標(biāo)識(shí)的對(duì)應(yīng)地址存儲(chǔ)在存儲(chǔ)器中來(lái)處理讀取存儲(chǔ)在存儲(chǔ)介質(zhì)上的相應(yīng)地址處的數(shù)據(jù)項(xiàng)的請(qǐng)求;以及通過(guò)將多個(gè)分層結(jié)構(gòu)層的該子集和所標(biāo)識(shí)的對(duì)應(yīng)地址從存儲(chǔ)器中轉(zhuǎn)移到高速緩存設(shè)備中來(lái)處理關(guān)閉計(jì)算機(jī)的命令。


      圖1A-1B是描繪根據(jù)現(xiàn)有技術(shù)的用于對(duì)高速緩存設(shè)備進(jìn)行讀寫的技術(shù)的框圖;圖2A-2B描繪根據(jù)本發(fā)明的一些實(shí)施方式的用于對(duì)高速緩存設(shè)備進(jìn)行讀寫的示例性技術(shù);
      圖3是描繪根據(jù)本發(fā)明的一些實(shí)施方式的用于確保在電源轉(zhuǎn)換之后高速緩存設(shè)備準(zhǔn)確地反映存儲(chǔ)在盤上的數(shù)據(jù)的示例性技術(shù)的框圖;圖4是描繪根據(jù)本發(fā)明的一些實(shí)施方式的用于存儲(chǔ)高速緩存元數(shù)據(jù)的示例性技術(shù)的框圖;圖5是描繪根據(jù)本發(fā)明的一些實(shí)施方式的高速緩存元數(shù)據(jù)的示例性存儲(chǔ)操作的框圖;圖6是根據(jù)本發(fā)明的一些實(shí)施方式的描繪用于使用高速緩存設(shè)備來(lái)對(duì)讀請(qǐng)求進(jìn)行服務(wù)的示例性技術(shù)的流程圖;圖7是描繪可被用來(lái)實(shí)現(xiàn)本發(fā)明的各方面的示例計(jì)算機(jī)的框圖;以及圖8是描繪其上可以記錄實(shí)現(xiàn)本發(fā)明的各方面的示例計(jì)算機(jī)存儲(chǔ)器的框圖。
      具體實(shí)施例方式本發(fā)明的一些實(shí)施方式提供用于確保在電源轉(zhuǎn)換之間高速緩存內(nèi)容準(zhǔn)確地反映盤存儲(chǔ)的內(nèi)容的技術(shù)。例如,一些實(shí)施方式提供用于確保在電源轉(zhuǎn)換之間高速緩存內(nèi)容保持可信和/或沒(méi)有變舊的能力。此外,一些實(shí)施方式提供用于管理高速緩存元數(shù)據(jù)以確保該元數(shù)據(jù)在電源轉(zhuǎn)換期間不被篡改的技術(shù)。另外,一些實(shí)施方式提供用于存儲(chǔ)可提高電源轉(zhuǎn)換和正常操作的執(zhí)行效率的高速緩存元數(shù)據(jù)的能力。以下章節(jié)詳細(xì)地描述這些實(shí)施方式。I.驗(yàn)證高速緩存數(shù)據(jù)真實(shí)性在計(jì)算機(jī)經(jīng)歷電源轉(zhuǎn)換時(shí)(例如,進(jìn)入待機(jī)或休眠模式,或被重新引導(dǎo)),高速緩存設(shè)備可以從該計(jì)算機(jī)斷開(kāi)連接,并且其內(nèi)容可被更改(例如,被惡意黑客更改)。例如,在計(jì)算機(jī)被帶入待機(jī)或休眠模式時(shí),諸如閃存驅(qū)動(dòng)器等可移動(dòng)高速緩存設(shè)備可以從該計(jì)算機(jī)斷開(kāi)連接并且其內(nèi)容被修改。在重新引導(dǎo)(即,重新加載,從而重啟計(jì)算機(jī))操作系統(tǒng)時(shí), 即使諸如內(nèi)部NVRAM設(shè)備等不可移動(dòng)設(shè)備也可以斷開(kāi)連接并且它們的內(nèi)容被改變。結(jié)果, 在高速緩存設(shè)備重新連接到計(jì)算機(jī)時(shí),它可以存儲(chǔ)與用戶認(rèn)為的信息所不同的信息(即, 存儲(chǔ)在高速緩存中的數(shù)據(jù)可能不是“可信的”)。如果從高速緩存提供不可信的數(shù)據(jù)來(lái)滿足輸入/輸出(I/O)請(qǐng)求,則計(jì)算機(jī)的操作可能受到不利影響。本發(fā)明的一些實(shí)施方式提供用于檢測(cè)在電源轉(zhuǎn)換期間發(fā)生的對(duì)高速緩存內(nèi)容的修改的技術(shù),以確保I/O請(qǐng)求不是使用來(lái)自高速緩存的不可信數(shù)據(jù)來(lái)滿足的。在一些實(shí)施方式中,提供檢測(cè)在電源轉(zhuǎn)換期間發(fā)生的對(duì)高速緩存內(nèi)容的任何“離線修改”的能力,這些離線修改致使高速緩存內(nèi)容變得不可信。—些實(shí)施方式使用該數(shù)據(jù)的至少一部分的表示來(lái)提供這一能力。例如,可以按預(yù)定方式從該數(shù)據(jù)的至少一部分和/或其他信息計(jì)算出或?qū)С霰硎?。該表示可以在該?shù)據(jù)被首次寫到高速緩存時(shí)生成并被存儲(chǔ)在一個(gè)或多個(gè)位置處。例如,該表示可以連同該數(shù)據(jù)一起被寫到高速緩存或某一(些)其他位置。當(dāng)被存儲(chǔ)到高速緩存時(shí),該表示可以按將該表示與該數(shù)據(jù)進(jìn)行關(guān)聯(lián)的方式來(lái)存儲(chǔ)(例如,它可被寫到與該數(shù)據(jù)被寫到的地址相鄰的高速緩存地址、寫到與該數(shù)據(jù)相關(guān)聯(lián)的高速緩存元數(shù)據(jù)、和/或以某一其他方式進(jìn)行關(guān)聯(lián))。當(dāng)隨后從高速緩存讀取該數(shù)據(jù)時(shí),還可以取回該表示。該表示可以按預(yù)定的方式來(lái)重新生成, 并且重新生成的表示可以與取回的表示進(jìn)行比較。如果這些表示相匹配,則確定從高速緩存導(dǎo)出的數(shù)據(jù)是可信的,并且被提供來(lái)滿足讀請(qǐng)求。如果否,則發(fā)起請(qǐng)求來(lái)改為從盤存儲(chǔ)讀取該數(shù)據(jù)以滿足該讀請(qǐng)求,并且存儲(chǔ)在高速緩存上的不可信數(shù)據(jù)可被驅(qū)逐(例如,刪除)。圖2A-2B更詳細(xì)地描繪這一過(guò)程。具體而言,圖2A中的過(guò)程20A包括在數(shù)據(jù)被寫到高速緩存時(shí)執(zhí)行的操作,并且圖2B中示出的過(guò)程20B包括在從高速緩存讀取了數(shù)據(jù)之后執(zhí)行的操作。過(guò)程20A-20B各自包括由高速緩存的卷120(在每一附圖的左側(cè))、高速緩存管理器100(在中間)以及高速緩存設(shè)備110(在右側(cè))所執(zhí)行的操作。在過(guò)程20A的開(kāi)始(圖2A),在動(dòng)作205中,高速緩存管理器100接收定向到盤存儲(chǔ)上的地址X的寫請(qǐng)求。在動(dòng)作210,高速緩存管理器100采用高速緩存元數(shù)據(jù)(未示出) 來(lái)確定該數(shù)據(jù)還應(yīng)被寫到的高速緩存設(shè)備110上的地址Y。高速緩存管理器還生成該數(shù)據(jù)的至少一部分的表示。本發(fā)明的各實(shí)施方式可以使用任何合適的技術(shù)來(lái)生成這一表示。在一些實(shí)施方式中,可以使用一種或多種密碼認(rèn)證技術(shù)來(lái)生成該表示。例如,在一些實(shí)施方式中,該表示可包括從該數(shù)據(jù)和一組密鑰和按數(shù)據(jù)項(xiàng)的序列號(hào)生成的消息認(rèn)證碼(MAC)。然而,本發(fā)明不限于這樣的實(shí)現(xiàn),因?yàn)榭梢允褂糜糜谏稍摫硎镜娜魏魏线m技術(shù)。例如,不必使用密碼認(rèn)證技術(shù)。作為示例,強(qiáng)散列和/或循環(huán)冗余碼(CRC)可以作為替換使用以表示數(shù)據(jù),并且可以從存儲(chǔ)到高速緩存的各單獨(dú)數(shù)據(jù)項(xiàng)或一組或多組數(shù)據(jù)項(xiàng)中生成。在這一方面,申請(qǐng)人明白,如果驗(yàn)證數(shù)據(jù)真實(shí)性的目標(biāo)僅僅是檢測(cè)硬件故障的情況(即,對(duì)數(shù)據(jù)進(jìn)行的黑客攻擊不是關(guān)心的問(wèn)題),則使用CRC可以是足夠的,并且與為每一數(shù)據(jù)項(xiàng)生成MAC相比可以消費(fèi)更少處理資源。然而,如果目標(biāo)是阻止黑客或惡意行動(dòng)者修改高速緩存內(nèi)容,則密碼解決方案可以是優(yōu)選的,使得可以使用諸如MAC等表示。本發(fā)明不限于任何特定實(shí)現(xiàn),因?yàn)榭梢允褂萌魏魏线m的技術(shù)。在動(dòng)作215,高速緩存管理器100對(duì)高速緩存設(shè)備110發(fā)起將數(shù)據(jù)寫到高速緩存地址Y的請(qǐng)求。高速緩存管理器還向高速緩存設(shè)備110發(fā)起寫入表示的請(qǐng)求。例如,高速緩存管理器100可以指定該表示應(yīng)被寫到與高速緩存地址Y相鄰的一個(gè)或多個(gè)位置,或可被存儲(chǔ)在該數(shù)據(jù)的高速緩存元數(shù)據(jù)中,和/或使用任何其他技術(shù)。如上所述,本發(fā)明不限于將該表示寫到任何特定位置(例如,它不必被寫到高速緩存設(shè)備110)。如果被寫到高速緩存,則該表示可以按任何所需方式來(lái)與該數(shù)據(jù)相關(guān)聯(lián)。在動(dòng)作220,高速緩存設(shè)備110接收該請(qǐng)求并通過(guò)在動(dòng)作225中寫入該數(shù)據(jù)和該表示來(lái)處理該請(qǐng)求。在動(dòng)作230,高速緩存管理器100向高速緩存的卷120發(fā)起將該數(shù)據(jù)寫到盤地址X 的對(duì)應(yīng)請(qǐng)求。在動(dòng)作235,高速緩存的卷120接收這一請(qǐng)求并且在動(dòng)作240通過(guò)將該數(shù)據(jù)寫到地址X來(lái)處理這一請(qǐng)求。雖然在圖2A中被示為在地址215-225中的到高速緩存的寫操作之后執(zhí)行,但動(dòng)作230-240可以與動(dòng)作215-225并行執(zhí)行,或在任何其他合適的時(shí)間執(zhí)行,因?yàn)楸景l(fā)明不限于任何特定實(shí)現(xiàn)。過(guò)程20A隨后完成。過(guò)程20B(圖2B)包括被執(zhí)行來(lái)讀取存儲(chǔ)到高速緩存的數(shù)據(jù)的操作。在動(dòng)作M5, 高速緩存管理器100接收讀取存儲(chǔ)在高速緩存的卷120上的地址X處的數(shù)據(jù)的請(qǐng)求。在動(dòng)作250,使用高速緩存元數(shù)據(jù)(未示出),高速緩存管理器100確定該數(shù)據(jù)存儲(chǔ)在高速緩存設(shè)備110上的地址Y處。在動(dòng)作255,高速緩存管理器100向高速緩存設(shè)備110發(fā)起讀請(qǐng)求以取回存儲(chǔ)在地址Y處的數(shù)據(jù)和相關(guān)聯(lián)的表示。在動(dòng)作260,該請(qǐng)求由高速緩存設(shè)備110接收并在動(dòng)作265進(jìn)行處理,隨之高速緩存設(shè)備100將結(jié)果返回到高速緩存管理器100。在動(dòng)作270,高速緩存管理器100確定從高速緩存取回的數(shù)據(jù)是否可被驗(yàn)證。在一些實(shí)施方式中,這可以通過(guò)重新生成數(shù)據(jù)的表示并將重新生成的表示與最初在動(dòng)作215生成的表示進(jìn)行比較來(lái)完成。例如,動(dòng)作270可包括重新生成該數(shù)據(jù)的MAC或CRC并將其與在動(dòng)作265從高速緩存取回的表示進(jìn)行比較。如果在動(dòng)作270確定表示可被驗(yàn)證,則該過(guò)程進(jìn)行至動(dòng)作275,其中提供從高速緩存設(shè)備110取回的數(shù)據(jù)來(lái)滿足讀請(qǐng)求,并且過(guò)程20B隨后完成。如果在動(dòng)作270確定該表示可被驗(yàn)證,則該過(guò)程進(jìn)行至動(dòng)作觀0,其中高速緩存管理器110向高速緩存設(shè)備110發(fā)起驅(qū)逐(例如擦除或以其他方式使其不可訪問(wèn))存儲(chǔ)在地址Y的數(shù)據(jù)的請(qǐng)求。在動(dòng)作觀5,高速緩存管理器100隨后向高速緩存的卷120發(fā)起從盤上的地址X讀取該數(shù)據(jù)的請(qǐng)求。在動(dòng)作290接收該請(qǐng)求并在動(dòng)作295進(jìn)行處理,隨之將該數(shù)據(jù)返回到高速緩存管理器100。在動(dòng)作四9,隨后提供從地址X讀取的數(shù)據(jù)以滿足讀請(qǐng)求。過(guò)程20B隨后完成。如果使用用于驗(yàn)證數(shù)據(jù)真實(shí)性的密碼解決方案,則在電源轉(zhuǎn)換期間,用于生成表示的任何密鑰可被寫到與高速緩存設(shè)備不同的位置,以阻止黑客獲得對(duì)密鑰的訪問(wèn)來(lái)重新生成被更改數(shù)據(jù)項(xiàng)的表示。例如,在一些實(shí)施方式中,密鑰可被存儲(chǔ)在盤存儲(chǔ)中(例如,在計(jì)算機(jī)關(guān)機(jī)時(shí))以阻止未經(jīng)授權(quán)的訪問(wèn)。然而,本發(fā)明不限于這樣的實(shí)現(xiàn),因?yàn)椴槐卮鎯?chǔ)密鑰,并且如果存儲(chǔ)了密鑰則該密鑰可以駐留在任何合適的位置。例如,所存儲(chǔ)的密鑰可被置于操作系統(tǒng)所提供的在系統(tǒng)引導(dǎo)期間可用的任何配置存儲(chǔ)(例如,Windows中的系統(tǒng)注冊(cè)表),或基于某用戶輸入(例如,口令)來(lái)重新生成,使得密鑰存儲(chǔ)不是必需的。應(yīng)當(dāng)明白,用于驗(yàn)證存儲(chǔ)在高速緩存設(shè)備上的數(shù)據(jù)項(xiàng)的真實(shí)性的上述實(shí)施方式僅僅是示例,并且該真實(shí)性可以使用任何合適的技術(shù)來(lái)驗(yàn)證。例如,數(shù)據(jù)項(xiàng)真實(shí)性不一定通過(guò)在寫入該數(shù)據(jù)項(xiàng)時(shí)生成該數(shù)據(jù)項(xiàng)的至少一部分的表示(在讀取該數(shù)據(jù)項(xiàng)時(shí)該表示稍后被重新生成)來(lái)驗(yàn)證??梢允褂每煽康卮_保從高速緩存讀取的數(shù)據(jù)項(xiàng)是可信的并與先前寫到高速緩存的數(shù)據(jù)項(xiàng)相匹配的任何合適的技術(shù)。本發(fā)明不限于任何特定實(shí)現(xiàn)。II.阻止高速緩存數(shù)據(jù)變舊如上所述,在致使高速緩存內(nèi)容變舊的電源轉(zhuǎn)換期間,常規(guī)操作系統(tǒng)不能檢測(cè)何時(shí)對(duì)存儲(chǔ)在盤上的數(shù)據(jù)項(xiàng)執(zhí)行了寫操作。本發(fā)明的一些實(shí)施方式提供用于檢測(cè)這些“離線寫”何時(shí)發(fā)生的機(jī)制,從而確保在電源轉(zhuǎn)換發(fā)生之后高速緩存內(nèi)容準(zhǔn)確地反映存儲(chǔ)在盤上的數(shù)據(jù)。對(duì)于一些操作系統(tǒng)(例如,微軟公司提供的Windows系列操作系統(tǒng)),一些電源轉(zhuǎn)換(例如,待機(jī)和休眠模式)的語(yǔ)義是在電源轉(zhuǎn)換期間不可移動(dòng)存儲(chǔ)設(shè)備(例如,盤存儲(chǔ)) 上的數(shù)據(jù)不能被修改。如此,與這樣的不可移動(dòng)介質(zhì)上的數(shù)據(jù)相對(duì)應(yīng)的高速緩存內(nèi)容一般不變舊。然而,在計(jì)算機(jī)關(guān)機(jī)時(shí),使盤上數(shù)據(jù)可能被修改的多件事情可能發(fā)生。例如,用戶可將該盤引導(dǎo)到該計(jì)算機(jī)上的另一操作系統(tǒng),或連接到另一計(jì)算機(jī),并修改存儲(chǔ)在盤上的數(shù)據(jù)。另外,如上所述,許多常規(guī)操作系統(tǒng)的關(guān)機(jī)機(jī)制是在關(guān)機(jī)期間的某一點(diǎn)處,高速緩存設(shè)備被關(guān)閉并且不再可由該操作系統(tǒng)訪問(wèn),但該操作系統(tǒng)可繼續(xù)訪問(wèn)盤。如此,操作系統(tǒng)可以更新盤上的被高速緩存在高速緩存設(shè)備上的數(shù)據(jù)項(xiàng)。因?yàn)楦咚倬彺嬖O(shè)備已被關(guān)閉,所以操作系統(tǒng)無(wú)法也更新這些高速緩存內(nèi)容,使得它們變舊。為了管理這些和其他情況,本發(fā)明的一些實(shí)施方式提供用于檢測(cè)在啟動(dòng)關(guān)機(jī)之后對(duì)存儲(chǔ)在盤上的數(shù)據(jù)的修改的技術(shù),以使得被這樣的修改變舊的高速緩存內(nèi)容可被更新、 從高速緩存中驅(qū)逐或以其他方式處理。為了檢測(cè)在高速緩存設(shè)備被切斷之后發(fā)生的關(guān)機(jī)操作期間對(duì)盤存儲(chǔ)執(zhí)行的寫,本發(fā)明的一些實(shí)施方式采用寫記錄器組件。寫記錄器組件可以例如被實(shí)現(xiàn)為操作系統(tǒng)的I/O 路徑中的驅(qū)動(dòng)程序,但本發(fā)明不限于這樣的實(shí)現(xiàn)。例如,寫記錄器組件可以是基于硬件的。 作為示例,盤存儲(chǔ)硬件可以提供一個(gè)或多個(gè)接口,這些接口提供標(biāo)識(shí)在特定時(shí)間段期間發(fā)生的一組修改或在特定時(shí)間段期間是否發(fā)生了修改的能力。例如,盤存儲(chǔ)硬件可以提供可被用來(lái)推斷出至少一些所存儲(chǔ)的數(shù)據(jù)項(xiàng)已被更新的加速自旋/上電/引導(dǎo)計(jì)數(shù)器,在這種情況下,可以驅(qū)逐與存儲(chǔ)器盤上的數(shù)據(jù)相對(duì)應(yīng)的高速緩存內(nèi)容(這不應(yīng)頻繁地發(fā)生,所以采用高速緩存設(shè)備仍然具有很多優(yōu)點(diǎn))。本發(fā)明不限于任何特定實(shí)現(xiàn)。在一些實(shí)施方式中,寫記錄器組件被配置成在啟動(dòng)關(guān)機(jī)時(shí)變得活動(dòng),并且保持對(duì)盤存儲(chǔ)執(zhí)行的所有寫的跟蹤,直至關(guān)機(jī)完成。結(jié)果,在稍后重啟計(jì)算機(jī)時(shí),這些寫可被應(yīng)用于高速緩存內(nèi)容。例如,在重啟計(jì)算機(jī)并且盤卷變得在線時(shí),高速緩存管理器可隨后啟動(dòng)并可開(kāi)始跟蹤對(duì)盤的寫。高速緩存管理器可以查詢寫記錄器組件來(lái)確定在高速緩存設(shè)備被切斷之后發(fā)生的離線寫,將這些寫與高速緩存管理器在啟動(dòng)期間跟蹤到的寫相歸并,并將寫的經(jīng)歸并的集合應(yīng)用于高速緩存內(nèi)容。將寫應(yīng)用于高速緩存內(nèi)容可包括例如更新與寫被定向到的盤上的數(shù)據(jù)相對(duì)應(yīng)的高速緩存內(nèi)容(例如,對(duì)這些高速緩存內(nèi)容執(zhí)行相同的寫操作)、驅(qū)逐這些高速緩存內(nèi)容、這兩者的組合(例如,將寫操作應(yīng)用于某些高速緩存內(nèi)容并驅(qū)逐其他高速緩存內(nèi)容)、或執(zhí)行某一(些)其他操作。在將離線寫應(yīng)用于高速緩存內(nèi)容之后,寫記錄器組件可被關(guān)閉,并且高速緩存設(shè)備可以開(kāi)始對(duì)I/O請(qǐng)求進(jìn)行服務(wù)。圖3描繪用于跟蹤離線寫并將這些寫應(yīng)用于高速緩存內(nèi)容的示例過(guò)程30。具體而言,過(guò)程300包括由高速緩存管理器100、寫記錄器300、高速緩存設(shè)備110以及高速緩存的卷120在計(jì)算機(jī)的關(guān)機(jī)和后續(xù)重新引導(dǎo)期間執(zhí)行的操作。在動(dòng)作305 (這發(fā)生在計(jì)算機(jī)關(guān)機(jī)期間),高速緩存管理器100激活寫記錄器300 并向其提供標(biāo)識(shí)寫記錄器要跟蹤的寫操作的集合(即,生成)的“持久標(biāo)識(shí)符”。(使用持久標(biāo)識(shí)符的示例在下文詳細(xì)描述。)在動(dòng)作310,高速緩存管理器100將持久標(biāo)識(shí)符以及存儲(chǔ)在存儲(chǔ)器中的高速緩存元數(shù)據(jù)寫到高速緩存設(shè)備110中。在關(guān)機(jī)過(guò)程中的這一點(diǎn)處,高速緩存設(shè)備110被關(guān)閉并變得不可由高速緩存管理器100訪問(wèn)。在動(dòng)作315,寫記錄器300將在動(dòng)作305傳遞給它的持久標(biāo)識(shí)符寫到高速緩存的卷 120,并開(kāi)始跟蹤在關(guān)機(jī)期間對(duì)高速緩存的卷執(zhí)行的任何寫操作。例如,寫記錄器300可以在高速緩存的卷120上或在某一其他位置處創(chuàng)建日志文件或一個(gè)或多個(gè)其他數(shù)據(jù)結(jié)構(gòu),以指示對(duì)其執(zhí)行寫操作的盤上的地址和/或?qū)懙竭@些地址的數(shù)據(jù)。在動(dòng)作315完成之后,計(jì)算機(jī)的關(guān)機(jī)操作結(jié)束。此后,重啟計(jì)算機(jī)。作為引導(dǎo)過(guò)程的一部分,使高速緩存的卷120上線,重啟寫記錄器300和高速緩存管理器100。高速緩存管理器100隨后可以開(kāi)始跟蹤對(duì)高速緩存的卷 120執(zhí)行的寫操作。例如,高速緩存管理器100可以創(chuàng)建日志文件并將其存儲(chǔ)在高速緩存設(shè)備110、高速緩存的卷120和/或計(jì)算機(jī)的存儲(chǔ)器(未在圖3中示出)上。在動(dòng)作320,寫記錄器300讀取在動(dòng)作315中記錄的卷改變,以及在動(dòng)作315被寫到高速緩存的卷120的持久標(biāo)識(shí)符。隨后在動(dòng)作325,將卷改變和持久標(biāo)識(shí)符傳遞到高速緩存管理器100。
      應(yīng)當(dāng)明白,寫記錄器300可能不能夠跟蹤在高速緩存設(shè)備110被關(guān)閉之后對(duì)盤的所有寫。例如,硬件數(shù)據(jù)毀壞、不合時(shí)宜的斷電和/或在寫日志文件時(shí)的問(wèn)題可致使記錄器 300不能夠跟蹤對(duì)盤卷執(zhí)行的所有離線寫。在這種情況下,寫記錄器300可以在動(dòng)作325向高速緩存管理器100指示它不能可靠地確定日志是所執(zhí)行的所有離線寫的完整且準(zhǔn)確的記錄。如果這種情況發(fā)生,則高速緩存管理器100因?yàn)榭赡懿豢煽慷梢则?qū)逐整個(gè)高速緩存內(nèi)容或其一部分(例如,與寫記錄器不能跟蹤其所有寫操作的特定盤卷相對(duì)應(yīng))。圖3的描述的其余部分設(shè)想寫記錄器300能夠跟蹤所有離線寫。在動(dòng)作330,高速緩存管理器100從高速緩存設(shè)備110將高速緩存元數(shù)據(jù)和持久標(biāo)識(shí)符讀到存儲(chǔ)器中。高速緩存管理器100確定持久標(biāo)識(shí)符是否可被驗(yàn)證(這在下文進(jìn)一步描述)。如果不能,則高速緩存管理器100可以驅(qū)逐高速緩存設(shè)備110的整個(gè)內(nèi)容或其一部分(例如,與持久標(biāo)識(shí)符不能被驗(yàn)證的特定盤卷相對(duì)應(yīng))。如果持久標(biāo)識(shí)符可被驗(yàn)證,則高速緩存管理器100歸并對(duì)盤存儲(chǔ)執(zhí)行的任何寫操作,因?yàn)橛?jì)算機(jī)是使用寫記錄器300跟蹤到的任何寫操作來(lái)重啟的。例如,如果一個(gè)或多個(gè)日志指示被寫到盤上的每一地址的數(shù)據(jù), 則高速緩存管理器100可以選擇對(duì)每一地址執(zhí)行的最近更新并將其寫到存儲(chǔ)器。在一些實(shí)施例中,寫記錄器300可被配置成在重啟計(jì)算機(jī)之后繼續(xù)記錄寫,使得高速緩存管理器100不必記錄在該點(diǎn)之后執(zhí)行的寫并將它們與寫記錄器300跟蹤到的寫相歸并。相反,寫記錄器300可以簡(jiǎn)單地向高速緩存管理器100提供所有寫的記錄。在動(dòng)作335,使用在動(dòng)作330中讀取的高速緩存元數(shù)據(jù),高速緩存管理器100隨后將一組寫應(yīng)用于高速緩存設(shè)備110的內(nèi)容。如上所述,應(yīng)用寫可包括驅(qū)逐高速緩存內(nèi)容、更新高速緩存內(nèi)容、進(jìn)行這兩個(gè)操作、或執(zhí)行某一(些)其他操作。例如,可以通過(guò)驅(qū)逐對(duì)應(yīng)的高速緩存內(nèi)容來(lái)應(yīng)用寫記錄器300在動(dòng)作315跟蹤到的離線寫,而可通過(guò)更新對(duì)應(yīng)的高速緩存內(nèi)容來(lái)應(yīng)用高速緩存管理器100跟蹤到的自計(jì)算機(jī)重啟以來(lái)的寫以反映這些寫。將寫操作應(yīng)用于高速緩存內(nèi)容可以用任何合適的方式來(lái)執(zhí)行,因?yàn)楸景l(fā)明不限于任何特定實(shí)現(xiàn)。在動(dòng)作335完成之后,圖3的過(guò)程完成。應(yīng)當(dāng)明白,本發(fā)明不限于使用被配置成在關(guān)機(jī)啟動(dòng)時(shí)變得活動(dòng)的寫記錄器組件, 因?yàn)檫€可以或替換地跟蹤不在關(guān)機(jī)期間發(fā)生的寫操作。例如,在一些實(shí)現(xiàn)中,高速緩存設(shè)備能在一段時(shí)間期間不可訪問(wèn)。例如,如果高速緩存設(shè)備是經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)訪問(wèn)的,則連接可能丟失,或者如果高速緩存設(shè)備可從計(jì)算機(jī)移除,則可發(fā)生意外(例如,非有意)移除。 結(jié)果,一些實(shí)施例可以使用寫記錄器來(lái)跟蹤對(duì)盤執(zhí)行的所有(或一部分)寫,而非只跟蹤在關(guān)機(jī)期間發(fā)生的那些寫,以及被配置成當(dāng)在線時(shí)周期性地捕捉高速緩存“快照”的高速緩存設(shè)備。如此,如果高速緩存在某一時(shí)間段期間變得不可訪問(wèn)并且稍后重新連接,則最新高速緩存快照可以使用寫記錄器所跟蹤的寫操作來(lái)進(jìn)行更新,而非必須被完全重建。還應(yīng)當(dāng)明白,盡管圖3的示例過(guò)程30可以檢測(cè)操作系統(tǒng)在關(guān)機(jī)期間執(zhí)行的離線寫,但在關(guān)機(jī)之后可能需要其他測(cè)量來(lái)檢測(cè)對(duì)盤執(zhí)行的離線寫。這樣的寫可以在例如以下情況下發(fā)生用戶在關(guān)機(jī)之后將盤引導(dǎo)到另一操作系統(tǒng)或在關(guān)機(jī)之后將盤從計(jì)算機(jī)移除并將其連接到另一計(jì)算機(jī),并隨后修改存儲(chǔ)在盤上的數(shù)據(jù)。認(rèn)識(shí)到與嘗試跟蹤在關(guān)機(jī)之后發(fā)生的離線寫(例如,由另一操作系統(tǒng)進(jìn)行的)相關(guān)聯(lián)的困難,本發(fā)明的一些實(shí)施例改為阻止它們發(fā)生。例如,一些實(shí)施例嘗試使特定盤卷對(duì)在關(guān)機(jī)之后不提供寫記錄器組件的操作系統(tǒng)不可用。這能夠以多種方式中的任一種來(lái)完成。在一些實(shí)施例中,寫記錄器300可以用以下方式來(lái)標(biāo)記盤卷該盤卷不可由不提供用于跟蹤離線寫的寫記錄器組件的操作系統(tǒng)掛載。例如,寫記錄器300可以修改指示在該卷所使用的文件系統(tǒng)的類型的卷標(biāo)識(shí)符。就此,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,卷標(biāo)識(shí)符使操作系統(tǒng)能夠標(biāo)識(shí)被用來(lái)在該卷上存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)的類型,從而使操作系統(tǒng)能夠理解存儲(chǔ)在該卷上的數(shù)據(jù)的結(jié)構(gòu)、在何處找到文件,等等。例如,如果卷標(biāo)識(shí)符指示使用NT File System(NTFS)文件系統(tǒng)來(lái)在該卷上存儲(chǔ)數(shù)據(jù),則嘗試掛載該卷的另一操作系統(tǒng)會(huì)理解將需要解析NTFS文件系統(tǒng)并訪問(wèn)其上的數(shù)據(jù)。如果卷標(biāo)識(shí)符沒(méi)有提供被用來(lái)在卷上存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)的類型的指示,則大多數(shù)操作系統(tǒng)將不能掛載該卷,因?yàn)閷](méi)有可靠的方式來(lái)理解存儲(chǔ)在其上的數(shù)據(jù)的結(jié)構(gòu)。如此,本發(fā)明的一些實(shí)施例修改盤卷的卷標(biāo)識(shí)符以使其不可訪問(wèn),從而防止用戶將該盤卷引導(dǎo)到另一操作系統(tǒng)以及防止用戶對(duì)存儲(chǔ)在該卷上的數(shù)據(jù)進(jìn)行離線改變。認(rèn)識(shí)到即使該卷標(biāo)識(shí)符被修改一些操作系統(tǒng)也能夠標(biāo)識(shí)用來(lái)在卷上存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)的類型,本發(fā)明的一些實(shí)施例提供一種用于檢測(cè)操作系統(tǒng)何時(shí)掛載該卷的機(jī)制。 就此,為了掛載盤卷,任何操作系統(tǒng)將需要更新卷標(biāo)識(shí)符(例如,以指示使用了 NTFS文件系統(tǒng)來(lái)在該卷上存儲(chǔ)數(shù)據(jù))以允許訪問(wèn)其上的數(shù)據(jù)。在重新引導(dǎo)時(shí),任何這樣的更新將是易于檢測(cè)的。如果檢測(cè)到這樣的更新,則本發(fā)明的一些實(shí)施例可以設(shè)想自最后關(guān)機(jī)以來(lái)該卷的內(nèi)容已被修改,并且驅(qū)逐與存儲(chǔ)在該卷上的數(shù)據(jù)相對(duì)應(yīng)的高速緩存內(nèi)容。本發(fā)明的一些實(shí)施例提供盤卷可由此被引導(dǎo)到也使用寫記錄器組件的另一操作系統(tǒng)的能力。例如,如果盤要從運(yùn)行提供寫記錄器組件的操作系統(tǒng)的一個(gè)計(jì)算機(jī)移除,并且將該盤引導(dǎo)到提供寫記錄器組件的另一操作系統(tǒng),則該另一操作系統(tǒng)可被配置成識(shí)別出經(jīng)改變的卷標(biāo)識(shí)符指示該卷被高速緩存。結(jié)果,該另一操作系統(tǒng)可以添加到第一操作系統(tǒng)所創(chuàng)建的離線寫的日志(例如,存儲(chǔ)在該卷上)。被設(shè)計(jì)成使盤卷不可由某些操作系統(tǒng)掛載的上述實(shí)施例可能對(duì)依賴于卷標(biāo)識(shí)符來(lái)執(zhí)行特定功能(例如,備份應(yīng)用)的某些應(yīng)用造成問(wèn)題。對(duì)于這些應(yīng)用,如果卷標(biāo)識(shí)符被改變,則該卷不可識(shí)別并且因而不可被備份。因此,本發(fā)明的一些實(shí)施例提供一種用于確定在關(guān)機(jī)之后文件系統(tǒng)是否被掛載的機(jī)制。如果是,則設(shè)想對(duì)文件系統(tǒng)中的數(shù)據(jù)進(jìn)行了改變, 并且驅(qū)逐與該文件系統(tǒng)中的數(shù)據(jù)相對(duì)應(yīng)的所有高速緩存內(nèi)容。一些實(shí)施例可以通過(guò)在關(guān)機(jī)時(shí)將文件系統(tǒng)日志置于將需要嘗試掛載文件系統(tǒng)的任何操作系統(tǒng)以某種方式修改(例如,改變其位置、添加新條目等)該日志的狀態(tài)來(lái)檢測(cè)關(guān)機(jī)之后對(duì)該文件系統(tǒng)的掛載。例如,寫記錄器300可以在文件系統(tǒng)被卸載時(shí)記錄文件系統(tǒng)日志的位置和/或內(nèi)容來(lái)作為記錄離線寫的任務(wù)的一部分(例如在日志本身中)。因?yàn)閲L試掛載該文件系統(tǒng)的任何操作系統(tǒng)都將必須改變?cè)撊罩?例如,如果該文件系統(tǒng)是NTFS系統(tǒng),則嘗試掛載該文件系統(tǒng)的操作系統(tǒng)將向該日志添加一條目),所以如果該日志在重新引導(dǎo)期間未被改變,則設(shè)想該文件系統(tǒng)在電源轉(zhuǎn)換期間沒(méi)有被另一操作系統(tǒng)掛載,使得對(duì)應(yīng)于存儲(chǔ)在該文件系統(tǒng)中的數(shù)據(jù)的高速緩存內(nèi)容未被致使變舊。相反,如果該日志被以某種方式改變(例如,其位置已改變,并且添加了條目,等等),則設(shè)想該文件系統(tǒng)被另一操作系統(tǒng)掛載,并且存儲(chǔ)在其中的數(shù)據(jù)已被改變,致使對(duì)應(yīng)于存儲(chǔ)在該文件系統(tǒng)中的數(shù)據(jù)的高速緩存內(nèi)容變舊。如此,可以驅(qū)逐這些高速緩存內(nèi)容。除提供用于防止離線寫的機(jī)制之外,本發(fā)明的一些實(shí)施例提供用于管理不一致的各代高速緩存內(nèi)容的能力??赡艹鲇诙喾N原因中的任一種而產(chǎn)生了不一致的各代高速緩存內(nèi)容。在其上連接有第一和第二高速緩存設(shè)備的第一和第二計(jì)算機(jī)采用本文描述的技術(shù)跨電源轉(zhuǎn)換來(lái)持久存儲(chǔ)高速緩存內(nèi)容的情況下,一個(gè)示例可以發(fā)生。如果第二高速緩存設(shè)備連接到第一計(jì)算機(jī)(或第一高速緩存設(shè)備連接到第二計(jì)算機(jī))并且第一計(jì)算機(jī)重啟,則可從第二高速緩存設(shè)備提供不正確的數(shù)據(jù)來(lái)滿足I/O請(qǐng)求。這是因?yàn)榈谝挥?jì)算機(jī)的操作系統(tǒng)將認(rèn)為第二高速緩存設(shè)備的內(nèi)容是真實(shí)(因?yàn)橹匦律傻膹母咚倬彺娣祷氐臄?shù)據(jù)的表示可與原始生成的表示相匹配)且不舊的(因?yàn)殡x線寫可被應(yīng)用于高速緩存內(nèi)容)。另一示例可以在以下情況下發(fā)生第一高速緩存設(shè)備連接到計(jì)算機(jī),該計(jì)算機(jī)被關(guān)機(jī)(從而持久存儲(chǔ)高速緩存內(nèi)容),該計(jì)算機(jī)隨后重啟,連接第二高速緩存設(shè)備,并且該計(jì)算機(jī)被再次關(guān)機(jī)(從而再次持久存儲(chǔ)高速緩存內(nèi)容)。如果該計(jì)算機(jī)隨后再次重啟并且連接第一高速緩存設(shè)備,則可提供不正確的數(shù)據(jù)來(lái)滿足I/O請(qǐng)求,因?yàn)闆](méi)有可靠的方式來(lái)確定第一高速緩存設(shè)備沒(méi)有存儲(chǔ)最新一代的高速緩存內(nèi)容。一些實(shí)施例提供用于標(biāo)識(shí)不一致的各代高速緩存內(nèi)容的能力,使得在最后關(guān)機(jī)之前持久存儲(chǔ)的高速緩存內(nèi)容不會(huì)被錯(cuò)誤地用來(lái)滿足I/O請(qǐng)求。在一些實(shí)施例中,這一能力是經(jīng)由唯一的持久標(biāo)識(shí)符來(lái)提供的,這可以按多種方式中的任一種來(lái)在啟動(dòng)關(guān)機(jī)時(shí)生成 (作為示例)。例如,可以將GUID和/或密碼隨機(jī)數(shù)生成器用于這一目的。如以上參考圖3 所述,在計(jì)算機(jī)啟動(dòng)時(shí),持久標(biāo)識(shí)符可以存儲(chǔ)在高速緩存設(shè)備上(例如,存儲(chǔ)在高速緩存元數(shù)據(jù)中或與其一起存儲(chǔ))以及計(jì)算機(jī)上(例如,在盤上和/或存儲(chǔ)器上)并且被驗(yàn)證(例如,通過(guò)將兩個(gè)版本進(jìn)行比較)。如果驗(yàn)證成功,則高速緩存內(nèi)容可因表示先前持久存儲(chǔ)的高速緩存代而被驅(qū)逐。如上述認(rèn)證密鑰一樣,用來(lái)生成持久標(biāo)識(shí)符的任何密鑰可在電源轉(zhuǎn)換期間被寫到與高速緩存設(shè)備不同的位置。例如,在一些實(shí)施例中,寫記錄器組件可以將密鑰以及持久標(biāo)識(shí)符寫到盤存儲(chǔ)(例如,在關(guān)機(jī)時(shí))。然而,本發(fā)明不限于這樣的實(shí)現(xiàn),因?yàn)楸绢I(lǐng)域技術(shù)人員可以想到可保存密鑰的多個(gè)替換位置。密鑰可以例如被保持在操作系統(tǒng)所提供的在系統(tǒng)引導(dǎo)期間可用的任何配置存儲(chǔ)中(例如,Windows中的注冊(cè)表)。III.高速緩存元數(shù)據(jù)如上所述,高速緩存元數(shù)據(jù)可以提供存儲(chǔ)了數(shù)據(jù)項(xiàng)的盤地址與高速緩存設(shè)備上的高速緩存了這些數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射。本發(fā)明的一些實(shí)施例提供用于存儲(chǔ)高速緩存元數(shù)據(jù)的能力,這一能力顯著地減少了在系統(tǒng)運(yùn)行時(shí)操作期間存儲(chǔ)高速緩存元數(shù)據(jù)所需的存儲(chǔ)器容量。另外,一些實(shí)施例提供在跨電源轉(zhuǎn)換或使高速緩存設(shè)備離線的任何其他情況下 (例如,從計(jì)算機(jī)移除高速緩存設(shè)備、使網(wǎng)絡(luò)高速緩存設(shè)備不可訪問(wèn)的網(wǎng)絡(luò)斷線,等等)允許依賴高速緩存元數(shù)據(jù)的技術(shù),使得在計(jì)算機(jī)重啟和/或使高速緩存設(shè)備在線時(shí)高速緩存內(nèi)容可被可靠地訪問(wèn)。就此,應(yīng)當(dāng)明白,對(duì)于特定類型的電源轉(zhuǎn)換(例如,待機(jī)或休眠模式),簡(jiǎn)單地將高速緩存元數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器(即,RAM)中是可接受的,因?yàn)樵诖龣C(jī)和休眠轉(zhuǎn)換期間存儲(chǔ)器的內(nèi)容被保留。然而,在重新引導(dǎo)期間,系統(tǒng)存儲(chǔ)器的內(nèi)容不被保留。如此,本發(fā)明的一些實(shí)施例允許在關(guān)機(jī)期間將高速緩存元數(shù)據(jù)存儲(chǔ)在某一個(gè)或多個(gè)非易失性介質(zhì)中,并隨后在重新引導(dǎo)時(shí)還原。例如,高速緩存元數(shù)據(jù)可以存儲(chǔ)在高速緩存設(shè)備上,和/ 或存儲(chǔ)在一個(gè)或多個(gè)分開(kāi)的非易失性介質(zhì)上。此外,一些實(shí)施例能夠從高速緩存元數(shù)據(jù)的一部分中導(dǎo)出其他部分,使得不需要存儲(chǔ)所有高速緩存元數(shù)據(jù)。一些實(shí)施例可以使用在以上第I節(jié)中描述的用于驗(yàn)證高速緩存元數(shù)據(jù)的真實(shí)性的技術(shù),以便檢測(cè)并防止在高速緩存設(shè)備離線時(shí)(例如,在計(jì)算機(jī)關(guān)機(jī)期間,從計(jì)算機(jī)移除高速緩存設(shè)備,使網(wǎng)絡(luò)高速緩存設(shè)備不可訪問(wèn)的網(wǎng)絡(luò)斷線,等等)對(duì)元數(shù)據(jù)的無(wú)意或惡意修改。例如,在高速緩存設(shè)備上線時(shí),高速緩存管理器可以在使用參考圖2A-2B描述的技術(shù)在將元數(shù)據(jù)加載到存儲(chǔ)器時(shí)驗(yàn)證元數(shù)據(jù)的真實(shí)性。如果高速緩存元數(shù)據(jù)的真實(shí)性不能被驗(yàn)證,則如上所述,對(duì)應(yīng)的高速緩存內(nèi)容可基于存儲(chǔ)在盤上的數(shù)據(jù)而被更新、驅(qū)逐、或以其他方式處理。在一些實(shí)施例中,高速緩存元數(shù)據(jù)可被壓縮以減少在關(guān)機(jī)期間保存并在重新引導(dǎo)時(shí)加載的元數(shù)據(jù)的量。因?yàn)樵獢?shù)據(jù)的壓縮需要保存包含與該元數(shù)據(jù)有關(guān)的信息的單獨(dú)一段信息(例如,高速緩存中的頭),所以上述技術(shù)也可被用來(lái)在重新引導(dǎo)時(shí)驗(yàn)證這一信息的真實(shí)性。本發(fā)明的一些實(shí)施例提供用于以極大地減少任何一次存儲(chǔ)在存儲(chǔ)器中的高速緩存元數(shù)據(jù)的量的方式來(lái)存儲(chǔ)高速緩存元數(shù)據(jù)的技術(shù),從而減少將高速緩存元數(shù)據(jù)加載到存儲(chǔ)器或從存儲(chǔ)器中卸載它(例如,在運(yùn)行時(shí)和啟動(dòng)/關(guān)機(jī)操作期間)所需的時(shí)間量并極大地減少高速緩存元數(shù)據(jù)的存儲(chǔ)器“腳印”。就此,應(yīng)當(dāng)明白,在高速緩存設(shè)備具有相對(duì)大的存儲(chǔ)容量的情況下,需要相當(dāng)大量的元數(shù)據(jù)來(lái)管理高速緩存內(nèi)容。例如,具有16GB存儲(chǔ)容量的高速緩存設(shè)備能夠存儲(chǔ)多達(dá)32GB的壓縮數(shù)據(jù)。在一些實(shí)現(xiàn)中,盤地址在高速緩存元數(shù)據(jù)中以表示4KB盤存儲(chǔ)的“數(shù)據(jù)單元”來(lái)反映。如此,為了跟蹤32GB數(shù)據(jù)的位置,需要8百萬(wàn)個(gè)不同的數(shù)據(jù)單元。如果這8百萬(wàn)個(gè)數(shù)據(jù)單元中的每一個(gè)都使用16字節(jié)映射(即,從盤地址到高速緩存地址)來(lái)在高速緩存元數(shù)據(jù)中表示,則這些映射需要U8MB存儲(chǔ)。申請(qǐng)人明白,在許多計(jì)算機(jī)中,在存儲(chǔ)器中存儲(chǔ)U8MB高速緩存元數(shù)據(jù)將占據(jù)不必要這么大的存儲(chǔ)器部分。另外,在關(guān)機(jī)期間將U8MB高速緩存元數(shù)據(jù)從存儲(chǔ)器寫到非易失性介質(zhì)中或在重新引導(dǎo)時(shí)將U8MB高速緩存元數(shù)據(jù)從非易失性介質(zhì)還原到存儲(chǔ)器中所需的時(shí)間,將是極其耗時(shí)的并且消耗過(guò)多量的處理資源。認(rèn)識(shí)到高速緩存元數(shù)據(jù)的量不能容易地減少,本發(fā)明的一些實(shí)施例提供被設(shè)計(jì)成減少存儲(chǔ)高速緩存元數(shù)據(jù)所需的存儲(chǔ)資源以及在關(guān)機(jī)和啟動(dòng)期間保存和還原高速緩存元數(shù)據(jù)所需的時(shí)間和處理資源的技術(shù)。在一些實(shí)施例中,這是通過(guò)將高速緩存元數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)分層數(shù)據(jù)結(jié)構(gòu)中 (例如,樹(shù)、多級(jí)數(shù)組等)來(lái)實(shí)現(xiàn)的。使用分層數(shù)據(jù)結(jié)構(gòu)可以允許該分層結(jié)構(gòu)的較低層被存儲(chǔ)在非易失性介質(zhì)中(例如,高速緩存設(shè)備),而只有該分層結(jié)構(gòu)的較高層被存儲(chǔ)在存儲(chǔ)器中。例如,在一些實(shí)施例中,只有分層結(jié)構(gòu)的較高層被存儲(chǔ)在存儲(chǔ)器中,使得即使在支持具有大存儲(chǔ)容量的高速緩存設(shè)備所需的高速緩存元數(shù)據(jù)的量被總體存儲(chǔ)時(shí),存儲(chǔ)器在高速緩存元數(shù)據(jù)中占據(jù)的“腳印”也被極大地減少。當(dāng)然,盡管只將分層結(jié)構(gòu)的較高層存儲(chǔ)在高速緩存元數(shù)據(jù)中,但一些實(shí)施例也可以允許將在該分層結(jié)構(gòu)的較低層處保存的一些信息存儲(chǔ)在存儲(chǔ)器中,以便降低與對(duì)這一信息的重復(fù)訪問(wèn)相關(guān)聯(lián)的I/O開(kāi)銷。本發(fā)明不限于用任何特定方式來(lái)實(shí)現(xiàn)。
      在系統(tǒng)操作期間,在處理讀請(qǐng)求時(shí),為執(zhí)行該讀操作而從非易失性介質(zhì)中(即,從分層結(jié)構(gòu)的較低層)讀出的高速緩存元數(shù)據(jù)可被“編頁(yè)”到(即,從存儲(chǔ)介質(zhì)中讀到)存儲(chǔ)器中,以使得它可被針對(duì)同一盤/高速緩存地址的后續(xù)讀請(qǐng)求更快地訪問(wèn)。在計(jì)算機(jī)稍后關(guān)機(jī)時(shí)和/或使高速緩存設(shè)備離線時(shí),只有存儲(chǔ)在分層結(jié)構(gòu)的較高層處的高速緩存元數(shù)據(jù)和存儲(chǔ)在分層結(jié)構(gòu)的較低層處的被編頁(yè)到存儲(chǔ)器中的高速緩存元數(shù)據(jù)才需要被保存到非易失性介質(zhì)中。如此,在關(guān)機(jī)時(shí)將高速緩存元數(shù)據(jù)從存儲(chǔ)器移到非易失性存儲(chǔ)以及在重新引導(dǎo)時(shí)將高速緩存元數(shù)據(jù)從非易失性存儲(chǔ)還原到存儲(chǔ)器所需的時(shí)間可被顯著地減少。本發(fā)明的一些實(shí)施例使用B+樹(shù)來(lái)存儲(chǔ)高速緩存元數(shù)據(jù)的至少一部分。如本領(lǐng)域技術(shù)人員將明白的,B+樹(shù)可以使用大分支因子,并且因此減少所使用的分層結(jié)構(gòu)中的層級(jí)的數(shù)量。使用以上給出的示例,如果要在高速緩存元數(shù)據(jù)中表示8百萬(wàn)個(gè)數(shù)據(jù)單元并且使用分支因子為200(使得分層結(jié)構(gòu)中的每一節(jié)點(diǎn)具有200個(gè)“子”節(jié)點(diǎn))的B+樹(shù),則只具有 3層的數(shù)據(jù)結(jié)構(gòu)將足以存儲(chǔ)該元數(shù)據(jù)最高層處單個(gè)“根”節(jié)點(diǎn),第二層處200個(gè)節(jié)點(diǎn),以及第三層處4萬(wàn)個(gè)節(jié)點(diǎn),這4萬(wàn)個(gè)節(jié)點(diǎn)中的每一個(gè)包括指向200個(gè)數(shù)據(jù)單元的指針(即,總共 8百萬(wàn)個(gè)數(shù)據(jù)單元)。圖4描繪包括根節(jié)點(diǎn)400、二層節(jié)點(diǎn)410^。以及三層節(jié)點(diǎn)420^。的這一示例B+ 樹(shù)。每一節(jié)點(diǎn)包括200個(gè)元素,各元素由指向分層結(jié)構(gòu)中的下一層處的節(jié)點(diǎn)的指針來(lái)分開(kāi)。 例如,根節(jié)點(diǎn)400中的元素402被指針401和403定界??梢酝ㄟ^(guò)沿著節(jié)點(diǎn)中的元素的左側(cè)或右側(cè)的指針來(lái)確定與給定鍵(例如,盤地址)相關(guān)聯(lián)的值(例如,高速緩存地址),其中在該鍵小于該元素的情況下沿著該元素左側(cè)的指針,并且在該鍵大于該元素的情況下沿著右側(cè)的指針。例如,為了確定小于元素402的鍵的值,將沿著指針401到達(dá)二層節(jié)點(diǎn)410” 為了確定大于元素402而小于元素404的鍵的值,將沿著指針403到達(dá)二層節(jié)點(diǎn)4102 (未示出),以此類推。類似地,在二層節(jié)點(diǎn)處,沿著元素左側(cè)或右側(cè)(取決于鍵大于還是小于節(jié)點(diǎn)中的元素)的指針到達(dá)三層節(jié)點(diǎn)。在第三層處,沿著最終指針(同樣基于鍵小于還是大于節(jié)點(diǎn)中的元素)到達(dá)該值,其中第三層處的每一指針都引用高速緩存元數(shù)據(jù)中的8百萬(wàn)個(gè)數(shù)據(jù)單元之一。應(yīng)當(dāng)明白,具有大分支因子的B+樹(shù)提供相對(duì)“平坦”的分層結(jié)構(gòu),幾乎所有節(jié)點(diǎn)都位于該分層結(jié)構(gòu)的底層。即,在該樹(shù)中的總共40,201個(gè)節(jié)點(diǎn)中,40,000個(gè)節(jié)點(diǎn)處于最低層。本發(fā)明的一些實(shí)施例通過(guò)以下方式來(lái)利用這一點(diǎn)在啟動(dòng)時(shí)只還原該分層結(jié)構(gòu)的頭兩層,同時(shí)該分層結(jié)構(gòu)的最低層中的高速緩存元數(shù)據(jù)被存儲(chǔ)在高速緩存設(shè)備中直至需要它為止(例如,它可在處理讀請(qǐng)求時(shí)被按需加載到存儲(chǔ)器中、懶散地加載,等等)。因?yàn)橹挥蟹謱訑?shù)據(jù)結(jié)構(gòu)的一部分被存儲(chǔ)在存儲(chǔ)器中,所以與在存儲(chǔ)器中維護(hù)全部高速緩存元數(shù)據(jù)或其更大部分所需的存儲(chǔ)器相比,高速緩存元數(shù)據(jù)可占據(jù)小得多的存儲(chǔ)器部分。另外,在計(jì)算機(jī)關(guān)機(jī)時(shí),只有頭兩層的數(shù)據(jù)和在操作期間被加載到存儲(chǔ)器中的數(shù)據(jù)需要存儲(chǔ)在高速緩存設(shè)備上。結(jié)果,啟動(dòng)和關(guān)機(jī)操作可以快速且高效地執(zhí)行。因此,本發(fā)明的一些實(shí)施例提供分層結(jié)構(gòu)的被存儲(chǔ)在存儲(chǔ)器中的至少一層(在以上示例中,分層結(jié)構(gòu)的頭兩層)處的節(jié)點(diǎn)中的指針,這些指針引用該分層結(jié)構(gòu)的存儲(chǔ)在高速緩存設(shè)備上的另一層(在以上示例中,第三層)處的節(jié)點(diǎn)。例如,在接收到對(duì)高速緩存的數(shù)據(jù)項(xiàng)的讀請(qǐng)求時(shí),本發(fā)明的各實(shí)施例沿著指針穿過(guò)該分層結(jié)構(gòu)的存儲(chǔ)在存儲(chǔ)器中的一層或多層并隨后到達(dá)該分層結(jié)構(gòu)的存儲(chǔ)在高速緩存中的較低層處的元數(shù)據(jù),以確定該數(shù)據(jù)項(xiàng)被存儲(chǔ)在高速緩存中的地址。在一些實(shí)施例中,一旦確定了數(shù)據(jù)項(xiàng)的高速緩存地址,它就可被存儲(chǔ)在存儲(chǔ)器中,使得讀取該項(xiàng)的后續(xù)請(qǐng)求可以在不必從高速緩存設(shè)備讀取高速緩存元數(shù)據(jù)的情況下來(lái)執(zhí)行。圖5描繪根據(jù)本發(fā)明的一些實(shí)施例的用于管理高速緩存元數(shù)據(jù)的示例系統(tǒng)50。圖 5描繪存儲(chǔ)器500和高速緩存設(shè)備110,這兩者都可由計(jì)算機(jī)(未示出)訪問(wèn)。在計(jì)算機(jī)啟動(dòng)時(shí),在操作505,包括諸如B+樹(shù)等分層數(shù)據(jù)結(jié)構(gòu)的一層或多層的高速緩存元數(shù)據(jù)被加載到存儲(chǔ)器500中。使用以上示例來(lái)說(shuō)明,如果高速緩存元數(shù)據(jù)中表示了 8百萬(wàn)個(gè)數(shù)據(jù)單元,使得可以使用三層分層數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)該高速緩存元數(shù)據(jù),則分層結(jié)構(gòu)的頭兩層可被加載到存儲(chǔ)器500。當(dāng)然,如果元數(shù)據(jù)中表示了多于或少于8百萬(wàn)個(gè)數(shù)據(jù)單元,并且使用了具有多于或少于三層的分層數(shù)據(jù)結(jié)構(gòu),則該分層結(jié)構(gòu)的不同數(shù)量的層可被加載到存儲(chǔ)器500中。此后,在讀請(qǐng)求被定向到在高速緩存中維護(hù)的數(shù)據(jù)項(xiàng)時(shí),通過(guò)訪問(wèn)分層結(jié)構(gòu)的被存儲(chǔ)在高速緩存設(shè)備110中的(各)層中所存儲(chǔ)的高速緩存元數(shù)據(jù)來(lái)確定存儲(chǔ)該數(shù)據(jù)項(xiàng)的高速緩存地址。這一高速緩存元數(shù)據(jù)隨后被存儲(chǔ)在存儲(chǔ)器510中,使得對(duì)該數(shù)據(jù)項(xiàng)的后續(xù)讀或?qū)懣梢栽诓槐刈x取存儲(chǔ)在高速緩存設(shè)備上的高速緩存元數(shù)據(jù)以確定存儲(chǔ)該數(shù)據(jù)項(xiàng)的高速緩存地址的情況下來(lái)執(zhí)行。相反,可以從存儲(chǔ)器中讀取該高速緩存地址,這可比對(duì)高速緩存的讀更快地執(zhí)行。稍后,在計(jì)算機(jī)關(guān)機(jī)時(shí),在動(dòng)作515,將存儲(chǔ)在存儲(chǔ)器中的高速緩存元數(shù)據(jù)(即, 分層結(jié)構(gòu)的在操作505被加載到存儲(chǔ)器中的各層中所存儲(chǔ)的元數(shù)據(jù),以及用于滿足讀請(qǐng)求的、在操作510寫到存儲(chǔ)器的任何元數(shù)據(jù))加載到高速緩存設(shè)備500中。作為相對(duì)小量的高速緩存元數(shù)據(jù)被存儲(chǔ)在存儲(chǔ)器中的結(jié)果,可以快速地執(zhí)行關(guān)機(jī),而不需要大量的處理資源。應(yīng)當(dāng)明白,B+樹(shù)只是可被用來(lái)存儲(chǔ)高速緩存元數(shù)據(jù)的多種類型的數(shù)據(jù)結(jié)構(gòu)之一, 并且可以使用其他類型的數(shù)據(jù)結(jié)構(gòu)(例如分層結(jié)構(gòu),諸如AVL樹(shù)、紅黑樹(shù)、二分搜索樹(shù)、B樹(shù)、 和/或其他分層和非分層數(shù)據(jù)結(jié)構(gòu))。本發(fā)明不需要少于任何一種數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)結(jié)構(gòu)的組合來(lái)存儲(chǔ)高速緩存元數(shù)據(jù)。一些實(shí)施例可以允許在任何一次都要在存儲(chǔ)器中保持“目標(biāo)量”的高速緩存元數(shù)據(jù)。該目標(biāo)量可以用任何合適的方式來(lái)確定。例如,目標(biāo)量可以是計(jì)算機(jī)可用的物理存儲(chǔ)器的量的百分比。例如,如果計(jì)算機(jī)具有IGB存儲(chǔ)器,則可在任何一次在存儲(chǔ)器中存儲(chǔ)2MB 高速緩存元數(shù)據(jù)(作為示例)。因此,在計(jì)算機(jī)關(guān)機(jī)時(shí),只需加載2MB高速緩存元數(shù)據(jù)到高速緩存設(shè)備中。在一些實(shí)施例中,高速緩存元數(shù)據(jù)可以在存儲(chǔ)器中進(jìn)進(jìn)出出地循環(huán)。例如,如果目標(biāo)量的高速緩存元數(shù)據(jù)已經(jīng)存儲(chǔ)在存儲(chǔ)器中,并且執(zhí)行了需要從高速緩存設(shè)備中讀取高速緩存元數(shù)據(jù)的讀,則如該元數(shù)據(jù)可被“編頁(yè)”到存儲(chǔ)器中,并且可以擦除其他高速緩存元數(shù)據(jù)(例如,最不頻繁訪問(wèn)的高速緩存元數(shù)據(jù))。例如,高速緩存元數(shù)據(jù)可以在被寫到高速緩存設(shè)備之后擦除?;蛘撸撓到y(tǒng)可以確定高速緩存元數(shù)據(jù)自它最后一次被寫出之后是否已改變,并且如果否,則可簡(jiǎn)單地擦除它,從而消除了寫入該高速緩存元數(shù)據(jù)所需的時(shí)間和處理資源。使用上述技術(shù),可保持高速緩存元數(shù)據(jù)在存儲(chǔ)器中占據(jù)小的“腳印”。圖6描繪一示例。具體而言,圖6中示出的過(guò)程60包括可由高速緩存管理器110 執(zhí)行來(lái)使用上述技術(shù)讀取高速緩存元數(shù)據(jù)的操作。在過(guò)程600的開(kāi)始處,在動(dòng)作605接收請(qǐng)求以讀取存儲(chǔ)在盤地址X處的數(shù)據(jù)。在動(dòng)作610,作出存儲(chǔ)該數(shù)據(jù)的高速緩存地址是否可從存儲(chǔ)在存儲(chǔ)器中的高速緩存元數(shù)據(jù)中標(biāo)識(shí)的判定。如果是,則過(guò)程進(jìn)行至動(dòng)作615,在這里確定所標(biāo)識(shí)的高速緩存地址,并隨后在動(dòng)作620將其用來(lái)發(fā)起對(duì)高速緩存設(shè)備110的讀請(qǐng)求。過(guò)程60隨后完成。如果不能使用存儲(chǔ)在存儲(chǔ)器中的高速緩存元數(shù)據(jù)標(biāo)識(shí)該高速緩存地址,則過(guò)程進(jìn)行至動(dòng)作625,在這里從高速緩存設(shè)備110讀取高速緩存元數(shù)據(jù)以確定存儲(chǔ)該數(shù)據(jù)的高速緩存地址。使用在動(dòng)作 625標(biāo)識(shí)的高速緩存偏移,在動(dòng)作620向所標(biāo)識(shí)的高速緩存偏移發(fā)起讀請(qǐng)求,并且過(guò)程60隨后完成。應(yīng)當(dāng)明白,將高速緩存元數(shù)據(jù)存儲(chǔ)在高速緩存設(shè)備上不僅可以在啟動(dòng)和關(guān)機(jī)期間加快加載和還原高速緩存元數(shù)據(jù)的過(guò)程,還可以加快啟動(dòng)和關(guān)機(jī)期間執(zhí)行的系統(tǒng)操作。就此,關(guān)機(jī)和啟動(dòng)通常涉及對(duì)特定數(shù)據(jù)項(xiàng)的多次訪問(wèn),并且對(duì)高速緩存設(shè)備執(zhí)行兩次讀操作通常比對(duì)盤存儲(chǔ)執(zhí)行一次讀操作還快。結(jié)果,如果在關(guān)機(jī)和/或啟動(dòng)期間訪問(wèn)的數(shù)據(jù)項(xiàng)以及指定其位置的元數(shù)據(jù)兩者都被存儲(chǔ)在高速緩存中,則該數(shù)據(jù)項(xiàng)可比該數(shù)據(jù)項(xiàng)被存儲(chǔ)在盤上的情況被更快地訪問(wèn),因?yàn)閷?duì)高速緩存的兩次讀(即,一次訪問(wèn)高速緩存元數(shù)據(jù)以確定該項(xiàng)的位置,并且第二次訪問(wèn)該項(xiàng)本身)通??杀葘?duì)盤的單次讀執(zhí)行得更快。如此,在關(guān)機(jī)和啟動(dòng)期間執(zhí)行的各單獨(dú)操作可被加速。此外,如果在從高速緩存第一次讀取高速緩存元數(shù)據(jù)期間存儲(chǔ)該項(xiàng)的地址被編頁(yè)到存儲(chǔ)器中,則對(duì)該數(shù)據(jù)項(xiàng)的后續(xù)讀可以更快速地執(zhí)行, 因?yàn)閷?duì)存儲(chǔ)器的讀通??梢员葘?duì)高速緩存的讀更快地執(zhí)行。用于實(shí)施本發(fā)明的各特征的系統(tǒng)和方法的各方面可被實(shí)現(xiàn)在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上,如圖7中示出的示例性計(jì)算機(jī)系統(tǒng)700。計(jì)算機(jī)系統(tǒng)700包括輸入設(shè)備702、輸出設(shè)備701、處理器703、存儲(chǔ)器系統(tǒng)704和存儲(chǔ)706,這些設(shè)備全都經(jīng)由可包括一個(gè)或多個(gè)總線、 交換機(jī)、網(wǎng)絡(luò)和/或任何其他合適互連的互連機(jī)制705來(lái)直接或間接耦合。輸入設(shè)備702接收來(lái)自用戶或機(jī)器(例如,人類操作者)的輸入,并且輸出設(shè)備701向用戶或機(jī)器(例如, 液晶顯示器)顯示或傳送信息。處理器703通常執(zhí)行被稱為操作系統(tǒng)(例如,微軟Windows 系列操作系統(tǒng)或任何其他合適的操作系統(tǒng))的計(jì)算機(jī)程序,操作系統(tǒng)控制其他計(jì)算機(jī)程序的執(zhí)行并提供調(diào)度、輸入/輸出以及其他設(shè)備控制、會(huì)計(jì)、匯編、存儲(chǔ)安排、數(shù)據(jù)管理、存儲(chǔ)器管理、通信以及數(shù)據(jù)流控制?;\統(tǒng)而言,處理器和操作系統(tǒng)定義為其編寫應(yīng)用程序和其他計(jì)算機(jī)程序語(yǔ)言的計(jì)算機(jī)平臺(tái)。處理器703還可執(zhí)行一個(gè)或多個(gè)計(jì)算機(jī)程序以實(shí)現(xiàn)各種功能。這些計(jì)算機(jī)程序語(yǔ)言可以用任何類型的計(jì)算機(jī)程序語(yǔ)言來(lái)編寫,包括過(guò)程程序設(shè)計(jì)語(yǔ)言、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言、宏語(yǔ)言、或它們的組合。這些計(jì)算機(jī)程序可以存儲(chǔ)在存儲(chǔ)系統(tǒng)706中。存儲(chǔ)系統(tǒng) 706可以將信息保持在易失性或非易失性介質(zhì)上,并可以是固定或可移動(dòng)的。在圖8中更詳細(xì)的示出了存儲(chǔ)系統(tǒng)706。存儲(chǔ)系統(tǒng)706通常包括計(jì)算機(jī)可讀和可寫非易失性記錄介質(zhì)801,其上存儲(chǔ)有定義計(jì)算機(jī)程序或要由該程序使用的信息的信號(hào)。介質(zhì)可以是例如盤或閃存。通常,在操作中,處理器703使得數(shù)據(jù)從非易失性記錄介質(zhì)801讀入易失性存儲(chǔ)器802(例如,隨機(jī)存取存儲(chǔ)器,即RAM)中,易失性存儲(chǔ)器802與介質(zhì)801相比允許處理器703進(jìn)行更快的信息訪問(wèn)。存儲(chǔ)器802可以位于存儲(chǔ)系統(tǒng)706中,如圖8所示,或位于存儲(chǔ)器系統(tǒng)704中,如圖7 所示。處理器703 —般處理集成電路存儲(chǔ)器704、802內(nèi)的數(shù)據(jù),然后在處理完成之后將這些數(shù)據(jù)復(fù)制到介質(zhì)801中。已知有各種機(jī)制可用于管理介質(zhì)801和集成電路存儲(chǔ)元件704、802之間的數(shù)據(jù)移動(dòng),并且本發(fā)明不限于此。本發(fā)明也不限于特定的存儲(chǔ)器系統(tǒng)704或存儲(chǔ)系統(tǒng)706。此外,本發(fā)明的各實(shí)施例也不限于使用被實(shí)現(xiàn)成操作系統(tǒng)的I/O棧中的驅(qū)動(dòng)程序的高速緩存管理器組件。作為替換或補(bǔ)充,可以使用任何合適的組件或組件組合,這些組件中的每一個(gè)可由操作系統(tǒng)或一個(gè)或多個(gè)獨(dú)立組件來(lái)實(shí)現(xiàn)。本發(fā)明不限于任何特定實(shí)現(xiàn)??梢杂枚喾N方式中的任一種來(lái)實(shí)現(xiàn)本發(fā)明的上述實(shí)施例。例如,可使用硬件、軟件或其組合來(lái)實(shí)現(xiàn)上述功能。當(dāng)使用軟件實(shí)現(xiàn)時(shí),該軟件代碼可在無(wú)論是在單個(gè)計(jì)算機(jī)中提供的還是在多個(gè)計(jì)算機(jī)之間分布的任何合適的處理器或處理器集合上執(zhí)行。就此,應(yīng)當(dāng)理解,執(zhí)行在此描述的功能的任何組件或組件集合一般可被認(rèn)為是控制上述功能的一個(gè)或多個(gè)控制器。一個(gè)或多個(gè)控制器可以用眾多方式來(lái)實(shí)現(xiàn),諸如用專用硬件、或通過(guò)采用使用執(zhí)行上述功能的微碼或軟件來(lái)編程的一個(gè)或多個(gè)處理器。在控制器存儲(chǔ)或提供數(shù)據(jù)以供系統(tǒng)操作的情況下,這些數(shù)據(jù)可以存儲(chǔ)在中央儲(chǔ)存庫(kù)中、多個(gè)儲(chǔ)存庫(kù)中、或其組合。此外,應(yīng)當(dāng)明白,(客戶機(jī)或服務(wù)器)計(jì)算機(jī)可以用多種形式的任一種來(lái)具體化, 如機(jī)架式計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、或其他類型的計(jì)算機(jī)。另外,(客戶機(jī)或服務(wù)器)計(jì)算機(jī)或終端可以嵌入在通常不被認(rèn)為是計(jì)算機(jī)但具有合適的處理能力的設(shè)備中,包括個(gè)人數(shù)字助理(PDA)、智能電話、或任何其他合適的便攜式或固定電子設(shè)備。同樣,(客戶機(jī)或服務(wù)器)計(jì)算機(jī)可以具有一個(gè)或多個(gè)輸入和輸出設(shè)備。這些設(shè)備主要可被用來(lái)呈現(xiàn)用戶界面。可被用來(lái)提供用戶界面的輸出設(shè)備的示例包括用于可視地呈現(xiàn)輸出的打印機(jī)或顯示屏和用于可聽(tīng)地呈現(xiàn)輸出的揚(yáng)聲器或其他聲音生成設(shè)備。可被用作用戶接口的輸入設(shè)備的示例包括鍵盤和諸如鼠標(biāo)、觸摸板和數(shù)字化桌等定點(diǎn)設(shè)備。作為另一示例,計(jì)算機(jī)可以通過(guò)語(yǔ)音識(shí)別或以其他可聽(tīng)格式來(lái)接收輸入信息。這些計(jì)算機(jī)可以通過(guò)任何合適形式的一個(gè)或多個(gè)網(wǎng)絡(luò)來(lái)互連,包括作為局域網(wǎng)或廣域網(wǎng),如企業(yè)網(wǎng)絡(luò)或因特網(wǎng)。這些網(wǎng)絡(luò)可以基于任何合適的技術(shù)并可以根據(jù)任何合適的協(xié)議來(lái)操作,并且可以包括無(wú)線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或光纖網(wǎng)絡(luò)。而且,此處略述的各種方法或過(guò)程可被編碼為可在采用各種操作系統(tǒng)或平臺(tái)中任何一種的一個(gè)或多個(gè)處理器上執(zhí)行的軟件。此外,軟件可使用多種合適的程序設(shè)計(jì)語(yǔ)言和/或常規(guī)程序設(shè)計(jì)或腳本工具中的任何一種來(lái)編寫,而且它們還可被編譯為可執(zhí)行機(jī)器語(yǔ)言代碼或在框架或虛擬機(jī)上執(zhí)行的中間代碼。就此,本發(fā)明可被具體化為用一個(gè)或多個(gè)程序編碼的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)存儲(chǔ)器、一個(gè)或多個(gè)軟盤、緊致盤、光盤、磁帶、閃存、現(xiàn)場(chǎng)可編程門陣列或其他半導(dǎo)體器件中的電路配置、或其他計(jì)算機(jī)存儲(chǔ)介質(zhì)),當(dāng)這些程序在一個(gè)或多個(gè)計(jì)算機(jī)或其他處理器上執(zhí)行時(shí),它們執(zhí)行實(shí)現(xiàn)本發(fā)明的上述各個(gè)實(shí)施例的方法。這一個(gè)或多個(gè)存儲(chǔ)介質(zhì)可以是便攜的,使得其上存儲(chǔ)的一個(gè)或多個(gè)程序可被加載到一個(gè)或多個(gè)不同的計(jì)算機(jī)或其他處理器上以便實(shí)現(xiàn)本發(fā)明上述的各個(gè)方面。此處以一般的意義使用術(shù)語(yǔ)“程序”或“軟件”來(lái)指可被用來(lái)對(duì)計(jì)算機(jī)或其他處理器編程以實(shí)現(xiàn)本發(fā)明上述的各個(gè)方面的任何類型的計(jì)算機(jī)代碼或計(jì)算機(jī)可執(zhí)行指令集。另外,應(yīng)當(dāng)理解,根據(jù)本實(shí)施例的一個(gè)方面,當(dāng)被執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明的方法的一個(gè)或多個(gè)計(jì)算機(jī)程序不必駐留在單個(gè)計(jì)算機(jī)或處理器上,而是可以按模塊化的方式分布在多個(gè)不同的計(jì)算機(jī)或處理器之間以實(shí)現(xiàn)本發(fā)明的各方面。計(jì)算機(jī)可執(zhí)行指令可以用可由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備執(zhí)行的各種形式來(lái)提供,諸如程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,在各實(shí)施例中,程序模塊的功能可以視需要組合或分布。本發(fā)明的各個(gè)方面可單獨(dú)、組合或以未在前述實(shí)施例中具體討論的各種安排來(lái)使用,從而并不將其應(yīng)用限于前述描述中所述或附圖中所示的組件的細(xì)節(jié)和安排。例如,可使用任何方式將一個(gè)實(shí)施例中描述的各方面與其他實(shí)施例中描述的各方面組合。在權(quán)利要求書中使用諸如“第一”、“第二”、“第三”等序數(shù)詞來(lái)修飾權(quán)利要求元素本身并不意味著一個(gè)權(quán)利要求元素較之另一個(gè)權(quán)利要求元素的優(yōu)先級(jí)、先后次序或順序、 或者方法的各動(dòng)作執(zhí)行的時(shí)間順序,而僅用作將具有某一名字的一個(gè)權(quán)利要求元素與(若不是使用序數(shù)詞則)具有同一名字的另一元素區(qū)分開(kāi)的標(biāo)簽以區(qū)分各利要求元素。同樣,此處所使用的短語(yǔ)和術(shù)語(yǔ)是出于描述的目的而不應(yīng)被認(rèn)為是限制。此處對(duì) “包括”、“包含”、或“具有”、“含有”、“涉及”及其變型的使用旨在包括其后所列的項(xiàng)目及其等效物以及其他項(xiàng)目。至此描述了本發(fā)明的至少一個(gè)實(shí)施例的若干方面,可以理解,本領(lǐng)域的技術(shù)人員可容易地想到各種更改、修改和改進(jìn)。這樣的更改、修改和改進(jìn)旨在是本發(fā)明的一部分且旨在處于本發(fā)明的精神和范圍內(nèi)。因此,上述描述和附圖僅用作示例。
      權(quán)利要求
      1.一種用于操作包括存儲(chǔ)器并且與存儲(chǔ)介質(zhì)(706)和高速緩存設(shè)備(110)耦合的計(jì)算機(jī)(700)的方法,所述存儲(chǔ)介質(zhì)將多個(gè)數(shù)據(jù)項(xiàng)的每一個(gè)存儲(chǔ)在相應(yīng)的地址處,所述多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)還被存儲(chǔ)在所述高速緩存設(shè)備(110)上的對(duì)應(yīng)地址處,所述計(jì)算機(jī)可訪問(wèn)的高速緩存元數(shù)據(jù)提供所述存儲(chǔ)介質(zhì)上的地址與所述高速緩存設(shè)備上存儲(chǔ)每一數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射,所述方法包括以下動(dòng)作(A)將所述高速緩存元數(shù)據(jù)存儲(chǔ)在包括多個(gè)分層結(jié)構(gòu)層的分層數(shù)據(jù)結(jié)構(gòu)中;以及(B)只將所述多個(gè)分層結(jié)構(gòu)層的子集加載到所述存儲(chǔ)器中。
      2.如權(quán)利要求1所述的方法,其特征在于,所述動(dòng)作(B)還包括將所述多個(gè)分層結(jié)構(gòu)層的剩余層中的至少一部分存儲(chǔ)在所述高速緩存設(shè)備上。
      3.如權(quán)利要求1所述的方法,其特征在于,還包括在動(dòng)作(A)之后執(zhí)行的動(dòng)作,該動(dòng)作包括啟動(dòng)所述計(jì)算機(jī)的重新引導(dǎo)和/或使所述高速緩存設(shè)備離線,并且其中所述動(dòng)作(B) 是在啟動(dòng)所述計(jì)算機(jī)的重新引導(dǎo)和/或使所述高速緩存設(shè)備在線之后執(zhí)行的。
      4.如權(quán)利要求1所述的方法,其特征在于,所述分層數(shù)據(jù)結(jié)構(gòu)具有至少一百的分支因子。
      5.如權(quán)利要求1所述的方法,其特征在于,動(dòng)作(A)還包括響應(yīng)于使所述高速緩存設(shè)備離線的命令來(lái)將高速緩存元數(shù)據(jù)存儲(chǔ)在所述高速緩存設(shè)備上。
      6.如權(quán)利要求1所述的方法,其特征在于,還包括以下動(dòng)作(D)接收讀取存儲(chǔ)在所述存儲(chǔ)介質(zhì)上的一地址處的數(shù)據(jù)項(xiàng)的請(qǐng)求;(E)訪問(wèn)所述高速緩存元數(shù)據(jù)的第一部分以標(biāo)識(shí)所述高速緩存設(shè)備上的存儲(chǔ)所述數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址;以及(F)將所述高速緩存元數(shù)據(jù)的所述第一部分中的至少一些存儲(chǔ)在所述存儲(chǔ)器中。
      7.如權(quán)利要求6所述的方法,其特征在于,所述地址(D)還包括作為被執(zhí)行來(lái)引導(dǎo)操作系統(tǒng)和/或使高速緩存設(shè)備在線的操作的一部分來(lái)接收讀取數(shù)據(jù)項(xiàng)的請(qǐng)求。
      8.如權(quán)利要求6所述的方法,其特征在于所述動(dòng)作(D)還包括接收讀取每一個(gè)都存儲(chǔ)在所述存儲(chǔ)介質(zhì)上的相應(yīng)地址處的多個(gè)數(shù)據(jù)項(xiàng)的請(qǐng)求;所述動(dòng)作(E)還包括對(duì)于在(D)中接收到的每一請(qǐng)求,訪問(wèn)所述高速緩存元數(shù)據(jù)來(lái)標(biāo)識(shí)所述高速緩存設(shè)備上的存儲(chǔ)數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址;所述動(dòng)作(F)還包括對(duì)于(E)中的每一訪問(wèn),將所述對(duì)應(yīng)地址的指示存儲(chǔ)在所述存儲(chǔ)器中;以及其中所述方法還包括以下動(dòng)作(G)在接收到關(guān)閉所述計(jì)算機(jī)的命令之后,將所述多個(gè)分層結(jié)構(gòu)層的在(C)中被加載到所述存儲(chǔ)器中的子集和/或在(F)中存儲(chǔ)的所述指示存儲(chǔ)到所述高速緩存設(shè)備。
      9.如權(quán)利要求6所述的方法,其特征在于,所述動(dòng)作(F)還包括(Fl)確定高速緩存元數(shù)據(jù)的目標(biāo)量已被存儲(chǔ)在所述存儲(chǔ)器中;(F2)如果確定高速緩存元數(shù)據(jù)的所述目標(biāo)量已被存儲(chǔ)在所述存儲(chǔ)器中,則;標(biāo)識(shí)高速緩存元數(shù)據(jù)的要從所述存儲(chǔ)器中擦除的第二部分;擦除高速緩存元數(shù)據(jù)的所述第二部分;以及將高速緩存元數(shù)據(jù)的所述第一部分存儲(chǔ)到所述存儲(chǔ)器;以及(F3)如果確定高速緩存元數(shù)據(jù)的目標(biāo)量尚未被存儲(chǔ)在所述存儲(chǔ)器中,則將高速緩存元數(shù)據(jù)的所述第一部分存儲(chǔ)到所述存儲(chǔ)器。
      10.如權(quán)利要求9所述的方法,其特征在于,所述存儲(chǔ)器具有一存儲(chǔ)容量,并且其中所述動(dòng)作(F)中的確定是相對(duì)于所述存儲(chǔ)器的存儲(chǔ)容量來(lái)執(zhí)行的。
      11.如權(quán)利要求6所述的方法,其特征在于,所述動(dòng)作(E)還包括驗(yàn)證所述高速緩存元數(shù)據(jù)在所述動(dòng)作(A)完成之后未被修改。
      12.如權(quán)利要求11所述的方法,其特征在于,動(dòng)作(A)還包括生成所述高速緩存元數(shù)據(jù)的至少一部分的表示并將所述表示寫入到所述高速緩存設(shè)備,并且其中(E)中的驗(yàn)證動(dòng)作包括(El)獲取被寫入到所述高速緩存設(shè)備的表示;(E2)重新生成所述表示;以及(E3)將在(El)中獲取到的表示與在(E》中重新生成的表示進(jìn)行比較以確定所述高速緩存元數(shù)據(jù)是否可被可靠地用來(lái)標(biāo)識(shí)所述高速緩存設(shè)備上的存儲(chǔ)所述數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址。
      13.如權(quán)利要求12所述的方法,其特征在于,還包括以下動(dòng)作(E4)如果確定所述高速緩存元數(shù)據(jù)能被可靠地用來(lái)標(biāo)識(shí)所述對(duì)應(yīng)地址,則讀取所述高速緩存設(shè)備上的對(duì)應(yīng)地址處的數(shù)據(jù)項(xiàng);以及(E5)如果確定所述高速緩存元數(shù)據(jù)不能被可靠地用來(lái)標(biāo)識(shí)所述對(duì)應(yīng)地址,則驅(qū)逐所述高速緩存元數(shù)據(jù)并從所述存儲(chǔ)介質(zhì)上的地址讀取所述數(shù)據(jù)項(xiàng)。
      14.至少一個(gè)其上編碼有在被包括存儲(chǔ)器并且與盤存儲(chǔ)(706)和高速緩存設(shè)備(110) 耦合的計(jì)算機(jī)(700)執(zhí)行時(shí)執(zhí)行一種方法的指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述盤存儲(chǔ)將多個(gè)數(shù)據(jù)項(xiàng)的每一個(gè)存儲(chǔ)在相應(yīng)的地址處,所述多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)還被存儲(chǔ)在高速緩存設(shè)備上的對(duì)應(yīng)地址處,該計(jì)算機(jī)可訪問(wèn)的高速緩存元數(shù)據(jù)提供所述盤存儲(chǔ)上的地址與所述高速緩存設(shè)備上存儲(chǔ)每一數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射,所述方法包括以下動(dòng)作(A)將所述高速緩存元數(shù)據(jù)存儲(chǔ)在所述高速緩存設(shè)備中的包括多個(gè)分層結(jié)構(gòu)層的分層數(shù)據(jù)結(jié)構(gòu)中;(B)啟動(dòng)所述計(jì)算機(jī)的重新引導(dǎo);(C)在啟動(dòng)所述計(jì)算機(jī)的重新引導(dǎo)之后,只將所述多個(gè)分層結(jié)構(gòu)層的子集加載到所述存儲(chǔ)器;(D)接收讀取存儲(chǔ)在所述存儲(chǔ)介質(zhì)上的一地址處的數(shù)據(jù)項(xiàng)的請(qǐng)求;(E)訪問(wèn)所述高速緩存元數(shù)據(jù)的第一部分以標(biāo)識(shí)所述高速緩存設(shè)備上的存儲(chǔ)所述數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址;以及(F)將所述高速緩存元數(shù)據(jù)的所述第一部分存儲(chǔ)在所述存儲(chǔ)器中。
      15.一種計(jì)算機(jī)系統(tǒng)(700),包括存儲(chǔ)器(704);將多個(gè)數(shù)據(jù)項(xiàng)存儲(chǔ)在各相應(yīng)地址的存儲(chǔ)介質(zhì)(706);高速緩存設(shè)備(110),所述高速緩存設(shè)備也將所述多個(gè)數(shù)據(jù)項(xiàng)存儲(chǔ)在對(duì)應(yīng)地址處,并存儲(chǔ)提供所述存儲(chǔ)介質(zhì)上的地址與所述高速緩存設(shè)備上存儲(chǔ)每一數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址之間的映射的高速緩存元數(shù)據(jù),所述高速緩存元數(shù)據(jù)存儲(chǔ)在包括多個(gè)分層結(jié)構(gòu)層的分層數(shù)據(jù)結(jié)構(gòu)中;至少一個(gè)處理器(703),所述至少一個(gè)處理器被編程為在啟動(dòng)所述計(jì)算機(jī)的重新引導(dǎo)之后,只將所述多個(gè)分層結(jié)構(gòu)層的子集加載到所述存儲(chǔ)器;處理讀取被存儲(chǔ)在所述存儲(chǔ)介質(zhì)上的各相應(yīng)地址處的數(shù)據(jù)項(xiàng)的請(qǐng)求,所述請(qǐng)求是通過(guò)使用所述高速緩存元數(shù)據(jù)來(lái)標(biāo)識(shí)所述高速緩存設(shè)備中的存儲(chǔ)所述數(shù)據(jù)項(xiàng)的對(duì)應(yīng)地址并通過(guò)將所標(biāo)識(shí)的對(duì)應(yīng)地址存儲(chǔ)在所述存儲(chǔ)器中來(lái)處理的;以及通過(guò)將所述多個(gè)分層結(jié)構(gòu)層的子集和所標(biāo)識(shí)的對(duì)應(yīng)的地址從所述存儲(chǔ)器轉(zhuǎn)移到所述高速緩存設(shè)備來(lái)處理關(guān)閉所述計(jì)算機(jī)的命令。
      全文摘要
      提供了用于管理將存儲(chǔ)介質(zhì)(例如,盤)上的地址映射到高速緩存設(shè)備上的對(duì)應(yīng)地址的高速緩存元數(shù)據(jù)的技術(shù)。高速緩存元數(shù)據(jù)可以存儲(chǔ)在分層數(shù)據(jù)結(jié)構(gòu)中。只有分層結(jié)構(gòu)的各層的子集可被加載到存儲(chǔ)器,從而減少高速緩存元數(shù)據(jù)的存儲(chǔ)器“足跡”并在啟動(dòng)期間加速它的還原。啟動(dòng)還可以通過(guò)使用高速緩存元數(shù)據(jù)來(lái)執(zhí)行與重新引導(dǎo)相關(guān)聯(lián)的操作來(lái)進(jìn)一步加速。在使用高速緩存元數(shù)據(jù)來(lái)標(biāo)識(shí)該數(shù)據(jù)被存儲(chǔ)在高速緩存中的地址以處理對(duì)從存儲(chǔ)中讀取數(shù)據(jù)的請(qǐng)求時(shí),所標(biāo)識(shí)的地址可被存儲(chǔ)在存儲(chǔ)器中。在計(jì)算機(jī)稍后關(guān)機(jī)時(shí),只有分層結(jié)構(gòu)各層的子集和/或所標(biāo)識(shí)的地址會(huì)被轉(zhuǎn)移(例如,轉(zhuǎn)移到高速緩存設(shè)備),而不是必須將高速緩存元數(shù)據(jù)整個(gè)從存儲(chǔ)器轉(zhuǎn)移到存儲(chǔ)中,從而加速關(guān)機(jī)。
      文檔編號(hào)G06F13/10GK102216899SQ200980145878
      公開(kāi)日2011年10月12日 申請(qǐng)日期2009年11月3日 優(yōu)先權(quán)日2008年11月14日
      發(fā)明者A·柯申鮑姆, C·厄?qū)? D·菲爾德斯, M·伊伊京, M·福汀, Y·巴克 申請(qǐng)人:微軟公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1