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