TWI471726B - 快取資料與元資料之管理 - Google Patents

快取資料與元資料之管理 Download PDF

Info

Publication number
TWI471726B
TWI471726B TW98138300A TW98138300A TWI471726B TW I471726 B TWI471726 B TW I471726B TW 98138300 A TW98138300 A TW 98138300A TW 98138300 A TW98138300 A TW 98138300A TW I471726 B TWI471726 B TW I471726B
Authority
TW
Taiwan
Prior art keywords
cache
memory
stored
metadata
computer
Prior art date
Application number
TW98138300A
Other languages
English (en)
Other versions
TW201019110A (en
Inventor
Mehmet Iyigun
Yevgeniy Bak
Michael Fortin
David Fields
Cenk Ergan
Alexander Kirshenbaum
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW201019110A publication Critical patent/TW201019110A/zh
Application granted granted Critical
Publication of TWI471726B publication Critical patent/TWI471726B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

快取資料與元資料之管理
本發明關於利用非揮發性記憶體裝置之技術,例如可移除式及不可移除式非揮發性隨機存取記憶體(Non-removable non-volatile random access memory,NVRAM)裝置。
一些習用作業系統提供利用一非揮發性記憶體裝置(即一周邊裝置,可用於提供輔助性儲存及/或記憶體給電腦,像是快閃記憶體USB碟),做為較慢儲存裝置(例如磁碟儲存媒體、或經由網路存取之一或多個儲存裝置)之資訊塊或檔案層級的快取之能力,藉以改善該作業系統及/或應用之效能。在這方面,因為讀取及寫入作業對於一非揮發性記憶體裝置(在此簡稱為”快取裝置”)之執行明顯地要比對於一較慢儲存裝置之執行要快,使用一快取裝置來快取儲存在這種較慢裝置上的資料可提供機會來顯著地改善作業系統及/或應用之輸入/輸出(I/O)作業的速度。為此目的,由美國華盛頓州Redmond市之微軟公司所生產的Microsoft Windows Vista作業系統包括已知為ReadyBoost之特徵,其可允許使用者利用快取裝置來快取亦存在於一較慢儲存裝置(為了方便起見以下稱之為”磁碟儲存器”或”碟片”,雖然應瞭解這些術語概略可代表任何的儲存機制及/或裝置,對其而言,I/O之執行基本上要比一快取裝置要更慢,其中包括藉由網路存取的儲存裝置)。
利用一快取裝置來快取儲存在磁碟上的資料可使用一快取管理員組件來完成,其在一些實作中為實作在該作業系統之I/O堆疊中的一驅動器。第1A圖到第1B圖所示為示例性高階處理10A到處理10B,藉此一快取管理員100管理資料快取到快取裝置110。快取裝置110可使用有線及/或無線通訊基礎設施及協定來耦合至其上存有快取管理員100之電腦(未示出)。例如,快取裝置110可自該電腦移除(例如包含一快閃記憶體USB碟)、不可移除式及/或藉由一或多個有線及/或無線網路而存取到該電腦。
在處理10A開始時(第1A圖),一寫入請求由快取管理員100接收,其指定該資料必須被寫入到磁碟儲存器(即快取的空間120)上的位址X。快取管理員100藉由在作業101中使得該資料被寫入到快取的空間120上的位址X,且亦在作業102中使得該資料被寫入到快取裝置110上的位址Y來處理該請求。處理10B(第1B圖)包括在當接收一讀取請求時在其後執行之作業,其指定儲存在快取的空間120上之位址X處的資料必須被讀取。快取管理員100決定該資料被快取在快取裝置110上的位址Y處,並在作業103中使得在位址Y處的資料被讀取。該資料則可由該快取裝置供應來滿足作業104中的該讀取請求。
該快取管理員維護磁碟位址(例如位址X)的映射關係到元資料中的相對應快取位址(例如位址Y),且此「快取元資料」通常用於讀取或寫入該快取裝置。基本上,快取元資料被保持在記憶體中,並在當收到I/O請求時由該快取管理員存取。因此,當由被導引到磁諜偏置X之該快取管理員收到一讀取請求時,該快取管理員使用該快取元資料來決定該資料亦儲存在快取偏置Y處,並藉由使得該資料自快取偏置Y而非磁碟偏置X處讀取來滿足該請求。當由被導引到磁碟偏置X之該快取管理員收到一寫入請求時,該快取管理員利用該快取元資料來決定在該磁碟位址處的該資料是否亦儲存在快取中。如果是(例如如果該資料被儲存在快取位址Y處),該快取管理員可以使得該資料被寫入到快取中適當的位址,或逐出在該位址處的快取內容。如果否,該快取管理員可使得該資料被寫入到快取,並可以更新該快取元資料,所以未來讀取到磁碟偏置X另可由儲存在快取上的資料來服務。
習用作業系統能夠以相當有限的儲存容量支援快取裝置。例如,Windows Vista作業系統之ReadyBoost特徵以最高到四Gb(gigabyte,Gb)的儲存容量支援快取裝置。(此時Windows Vista被釋放,快取裝置之最高儲存容量大約為兩Gb)。快取裝置之儲存容量在近年來已經快速成長,其中一些快取裝置提供最高到16Gb的儲存容量,其在當壓縮時可以儲存相當於32Gb的資料。
應用者已經瞭解到具有相對較大之儲存容量之快取裝置可提供顯著機會來改善由作業系統及應用程式執行之I/O作業的速度。應用者亦可瞭解到習用作業系統僅可以相當有限的儲存容量支援快取裝置之一原因為快取內容在當發生某種電力轉換(例如待機、休眠(或由非Microsoft Windows作業系統使用的同等模式)或重新開機)時必須重新進駐。利用具有相對較大儲存容量之快取裝置,重新進駐快取內容會花費相當的時間,並消耗顯著的處理資源。例如,一8Gb快閃記憶體裝置可保存到16Gb的壓縮資料,其需要30分鐘使用來自磁碟的背景I/O以每秒大約10Mb的速度來重新進駐。此不僅有效地否定藉由使用該快取裝置已得到的任何效能好處,且實際上亦會顯著地減慢系統作業。
快取內容必須橫跨某些電力轉換而重新進駐之一種理由為其無法可靠地保證當該電腦重新啟動時,快取內容可正確地代表磁碟儲存器之該內容,因為該快取裝置及/或該磁碟之該內容於該電力轉換期間可能已被修改。例如,當一第一電腦被關機時,一駭客可斷接一可移除式快取裝置,將其連接到另一電腦,並修改該快取內容,所以如果該裝置接著被重新連接到該第一電腦,不正確的資料(以下稱之為「不確實」資料)可由該快取裝置供應來滿足I/O請求。除了一駭客的惡意行為之外,快取內容在一電力轉換期間由於該電腦或快取裝置之一硬體失效而亦可能被破壞。
快取內容亦可能在一電力轉換期間成為「失效」(stale),因為在磁碟上的資料在該轉換期間被更新,所以當該電腦重新啟動時,該等快取內容可能不再正確地代表磁碟內容。例如,在關機之後,一使用者可能開啟該磁碟到無法辨識該快取裝置之另一作業系統中,並修改儲存在該磁碟上的資料,其被快取在該快取裝置上,所以當該電腦重新啟動時,該等快取內容不再反映出在該磁碟上儲存了什麼。在另一示例中,於關機期間在一電腦上某些作業在該快取裝置呈現出無法存取到該作業系統之後(例如在該快取裝置被關閉之後)可能發生,所以在該時間點之後由該作業系統執行之任何對磁碟的寫入可能無法由快取內容正確地反映。多種事件之任一者可使得快取內容在橫跨一電力轉換時成為失效。
本發明之具體實施例可提供管理這些及其它問題的技術,所以當快取內容在橫跨一電力轉換時可依靠以正確地反映儲存在磁碟上的資料。例如,本發明一些具體實施例提供用於驗證快取內容在橫跨一電力轉換時維持確實之技術。此外,一些具體實施例提供用於可靠地保證快取內容在橫跨一電力轉換時不會成為失效的技術。另外,一些具體實施例提供技術來用於橫跨電力轉換以及在正常(穩態,“steady state”)作業期間管理快取元資料的技術,以確保該快取元資料可以有效率地存取,且可靠地儲存,並在發生一電力轉換時被恢復。
藉由提供可確保該快取內容可被依賴而做為橫跨電力轉換時正確地反映儲存在磁碟上的資料之技術,本發明一些具體實施例可使得一快取裝置以大量儲存容量來用於顯著地加速由該作業系統及/或應用程式所執行的I/O作業。I/O作業的該增加速度不僅可加速正常、「穩態」的電腦作業,且亦顯著地加速在開機期間所執行的作業,所以該電腦可更快速地預備以使用。
在本發明一些具體實施例中,提供一種方法來操作包含一記憶體以及已經耦合有一儲存媒體及一快取裝置之一電腦,該儲存媒體儲存有複數資料項目,其每一項在各別位址處,該等複數資料項目之每一者亦儲存在該快取裝置上一相對應位址處,該電腦可存取之快取元資料提供在該儲存媒體上該位址與在該快取裝置上儲存有每一資料項目之該相對應位址之間的一映射關係。該方法包含以下步驟:(A)儲存該快取元資料在包含有複數階層層級之一階層式資料結構中;及(B)僅載入該等複數階層層級之一子集合到該記憶體。
其它具體實施例提供在其上具有被編碼之指令的至少一電腦可讀取儲存媒體,其在當由包含一記憶體以及已經耦合有磁碟儲存器及一快取裝置之一電腦執行時,該磁碟儲存器儲存有複數資料項目,其每一項在各別位址處,該等複數資料項目之每一者亦儲存在該快取裝置上一相對應位址處,該電腦可存取之快取元資料提供在該磁碟儲存器上該位址與在該快取裝置上儲存有每一資料項目之該相對應位址之間的一映射關係,其執行的方法包含以下步驟:(A)儲存該快取元資料在包含複數階層層級之一階層式資料結構之該快取裝置中;(B)啟始該電腦的一重新開機;(C)在啟始該電腦之該重新開機時,僅載入該等複數階層層級的一子集合到該記憶體中;(D)接收一請求來讀取儲存在該儲存媒體上一位址處的一資料項目;(E)存取該快取元資料的一第一部份來辨識該資料項目儲存在該快取裝置上之一相對應位址;及(F)儲存該快取元資料的該第一部份在該記憶體中。
其它具體實施例提供一種電腦系統,其包含:一記憶體;一儲存媒體,其在各別位址處儲存複數資料項目;一快取裝置,其亦在相對應位址處儲存該等複數資料項目,及快取元資料,其提供在該儲存媒體上該位址與儲存每一資料項目之該快取裝置上該相對應位址之間的一映射關係,該快取元資料被儲存在包含複數階層層級之一階層式資料結構中;至少一處理器,其被程式化來進行:在啟始該電腦的一重新開機時,僅載入該等複數階層層級之一子集合到該記憶體;藉由使用該快取元資料來辨識該等資料項目被儲存在該快取裝置中的相對應位址,且藉由儲存所辨識的相對應位址在該記憶體中來處理請求讀取儲存在該儲存媒體上各別位址處的資料項目;且藉由自該記憶體傳送該等複數階層層級之該子集合及該等辨識的相對應位址到該快取裝置來處理一指令以使該電腦關機。
本發明一些具體實施例提供用於在橫跨電力轉換時可確保快取內容正確地反映磁碟儲存器上的內容之技術。例如,一些具體實施例提供在橫跨電力轉換時可確保快取內容維持確實及/或不會成為失效的能力。另外,一些具體實施例提供用於管理快取元資料的技術,用以確保在電力轉換期間元資料並未被竄改。此外,一些具體實施例提供儲存快取元資料的能力,其可以同時改善執行電力轉換及正常作業時的效率。以下的段落詳細說明這些具體實施例。
I. 驗證快取資料確實性
當一電腦經歷到電力轉換時(例如進入待機或休眠模式,或正在重新開機),一快取裝置可能與該電腦斷接,且其內容會被改變(例如由一惡意的駭客)。例如,當一電腦被帶入到待機或休眠模式時,一可移除式快取裝置(例如快閃記憶碟)會與該電腦斷接,且其內容會修改。甚至是不可移儲式裝置,例如內部NVRAM裝置,在當該作業系統重新開機(即重新載入,藉以重新開啟該電腦)時,其會被斷接,且它們的內容會改變。因此,當該快取裝置重新連接至該電腦時,其可能儲存與該使用者所相信的為不同之資訊(即儲存在該快取中的資料可能不「確實」)。如果自快取提供不確實的資料來滿足一輸入/輸出(I/O)請求,該電腦之作業會受到負面的影響。
本發明一些具體實施例提供用於偵測在一電力轉換期間快取內容所發生的修改之技術,藉以確保I/O請求不會使用來自快取之不確實的資料來滿足。在一些具體實施例中,提供一種能力來偵測在一電力轉換期間發生在快取內容上而使得它們不確實之任何「離線修改」(offline modifications)。
一些具體實施例使用至少該資料的一部份之表示來提供此能力。例如,一表示可用預定的方式做計算,或由該資料及/或其它資訊之至少一部份來獲得。當該資料被寫入到快取,並儲存在一或多個位置處時,該表示被第一次產生。例如,該表示可連同該資料被寫入到快取,或寫入到某個其它位置。當儲存到快取時,該表示係以使該表示關聯於該資料的方式被儲存(例如其可被寫入到鄰接於被寫入資料之一快取位址,被寫入到關聯於該資料之快取元資料,及/或以某種其它方式產生關聯)。當該資料在後續自快取讀取時,該表示亦可被取得。該表示可用預定方式重新產生,且該重新產生的表示可以相較於所取得的表示。如果該表示吻合,自快取所取得的資料被判定為確實,並用於滿足該讀取請求。如果否,反而從磁碟儲存器發出一請求來讀取該資料以滿足該讀取請求,且儲存在快取上的不確實資料被逐出(例如刪除)。
第2A圖到第2B圖為更詳細地描述此程序。特別是,第2A圖所示的程序20A包括當資料被寫入到快取時所執行的作業,且第2B圖所示的程序20B包括當該資料自快取讀取之後所執行的作業。程序20A-20B每一者包括由快取的空間120(在每張圖的左側)、快取管理員100(中間)及快取裝置110(右側)所執行的作業。
在程序20A開始時(第2A圖),導向到磁碟儲存器上位址X之寫入請求由快取管理員100接收,如步驟205。在步驟210中,快取管理員100利用快取元資料(未示出)來決定快取裝置110上亦必須寫入該資料的一位址Y。快取管理員亦產生該資料至少一部份的表示。
本發明之具體實施例可以使用任何適當的技術來產生此表示。在一些具體實施例中,一或多個加密驗證技述可用於產生該表示。例如在一些具體實施例中,該表示可以包含由該資料產生的一訊息驗證碼(Message authentication code,MAC),及一組秘密金鑰,及每個資料項目之序號。但是,本發明並不限於這種實作,其可利用產生該表示之任何適當的技術。例如,其不需要使用加密驗證技術。例如,一強雜湊及/或循環冗餘碼(Cyclic redundancy code,CRC)另可用於表示資料,且可由被儲存到快取之各別資料項目所產生,或用於資料項目的一或多個群組。在此方面,應用者已經瞭解到如果驗證資料確實性之目標僅係要偵測硬體破壞之實例(即不需要考慮資料竊用),則使用CRC即已足夠,並會比對於每個資料項目產生MAC要消耗較少的處理資源。但是,如果該目標為防止駭客或惡意行動者修改快取內容,則較佳的是加密解決方案,所以可使用一種表示,例如MAC。本發明並不限於任何特定實作,因為其可利用任何適當的技術。
在步驟215中,快取管理員100發出該等請求到快取裝置110,以寫入該資料到快取位址Y。快取管理員亦發出一請求到快取裝置110來寫入該表示。例如,快取管理員100可以指定該表示必須被寫入到鄰接於快取位址Y的一或多個位置,或是儲存在該資料的快取元資料中,及/或使用任何其它技術。如上所述,本發明並不限於寫入該表示到任何特定位置(例如其不需要寫入到快取裝置110)。如果寫入到快取,該表示可用任何想要的方式關聯於該資料。
在步驟220中,快取裝置110接收該請求,並藉由寫入該資料及該表示來處理它,如步驟225。
在步驟230中,快取管理員100發出一相對應請求到快取的空間120來寫入該資料到磁碟位址X。快取的空間120在步驟235中接收此請求,並藉由寫入該資料到位址X來處理它,如步驟240。雖然第2A圖中顯示係在步驟215到步驟225中寫入到快取之後來執行,步驟230到步驟240可平行於步驟215到步驟225來執行,或在任何其它適當時間,因為本發明並不限於任何特定實作。然後程序20A即完成。
程序20B(第2B圖)包括要執行來讀取被儲存到快取的資料之作業。在步驟245中,快取管理員100接收一請求來讀取儲存在快取的空間120上位址X處的資料。使用快取元資料(未示出),快取管理員100決定該資料係儲存在快取裝置110上位址Y處,如步驟250。在步驟255中,快取管理員100發出一讀取請求到快取裝置110,以同時取得儲存在位址Y處的資料及該相關的表示。該請求在步驟260中由快取裝置110接收,並在步驟265中處理,此時快取裝置100傳回該等結果到快取管理員100。
在步驟270中,快取管理員100決定自快取取得的資料是否可被驗證。在一些具體實施例中,此係藉由重新產生該資料的表示,並比較該重新產生的表示與在步驟215中原始產生的該表示來完成。例如,步驟270可以包括重新產生該資料的MAC或CRC,並將其與步驟265中自快取取得的該表示做比較。
如果在步驟270中決定該表示可被驗證,該程序進行到步驟275,其中自快取裝置110取得的該資料被提供來滿足該讀取請求,然後程序20B即完成。如果在步驟270中決定該表示不能夠被驗證,該程序進行到步驟280,其中快取管理員100發出一請求到快取裝置110來逐出(例如抹除或另造成無法存取)儲存在位址Y處的該資料。然後快取管理員100發出一請求到快取的空間120來由磁碟上位址X處讀取該資料,如步驟285。此請求在步驟290中被接收,並在步驟295中做處理,此時該資料被傳回到快取管理員100。然後自位址X讀取的資料被提供來滿足該讀取請求,如步驟299。然後程序20B即完成。
如果利用驗證資料確實性的加密解決方案,用於產生一表示的任何金鑰在該電力轉換期間可被寫入到該快取裝置之外的位置,藉以防止一駭客取得到該等金鑰的存取,以重新產生改變的資料項目之表示。例如在一些具體實施例中,金鑰可被儲存在磁碟儲存器(例如當該電腦被關機時)以防止未授權的存取。但是,本發明並不限於這種實作,因為金鑰不需要被儲存,且如果儲存的話,其可存在於任何適當的位置。例如,儲存的金鑰可設置成在系統開機期間可使用的該作業系統所提供的任何組態舖中(例如Windows中的系統註冊),或基於某個使用者輸入(例如密碼)來重新產生,所以不需要任何金鑰儲存。
應瞭解上述用於驗證儲存在一快取裝置上一資料項目的確實性之具體實施例僅為示例,且該確實性可使用任何適當技術來驗證。例如,資料項目確實性不需要藉由當該資料項目被寫入時產生該資料項目的至少一部份之表示來驗證,其係在當該資料項目被讀取時在稍後重新產生。其可利用任何適當的技術,用於可靠地確保自快取讀取的一資料項目為確實,並吻合先前被寫入到快取之資料項目。本發明不限於任何特定實作。
II. 防止快取資料失效
如上所述,習用的作業系統不能夠偵測在電力轉換期間何時要對儲存在磁碟上的資料項目執行寫入作業,其會造成快取內容失效。本發明一些具體實施例提供偵測何時發生這些「離線寫入」(offline writes)的機制,藉此確保快取內容可正確地反映在發生一電力轉換之後儲存在磁碟上的資料。
對於一些作業系統(例如由微軟公司所提供之Windows系列的作業系統),某些電力轉換(例如待機及休眠模式)的語義係使得在不可移除式儲存裝置(例如磁碟儲存器)上的資料在電力轉換期間不能夠被修改。因此,對應於在這種不可移除式媒體上的資料之該等快取內容一般而言不會成為失效。但是,當該電腦關機時,即發生一些事而使得在磁碟上的資料有可能被修改。例如,一使用者可在電腦上將該磁碟開機到另一作業系統當中,或將該磁碟連接到另一部電腦,並修改儲存在磁碟上的資料。此外,如上所述,許多習用作業系統之關機方式使得在關機期間某個時刻一快取裝置被關閉,且無法再由該作業系統存取,但該作業系統可繼續存取該磁碟。因此,該作業系統可以更新在磁碟上被快取在該快取裝置上的資料項目。因為該快取裝置已經被關閉,該作業系統無法亦更新這些快取內容,所以它們即成為失效。
為了管理這些及其它發生者,本發明一些具體實施例提供偵測在啟始關機之後在儲存在磁碟上之資料的修改之技術,所以由於這些修改造成失效的快取內容可被更新,自快取逐出,或另外處理。
為了偵測在關機作業期間在一快取裝置被關掉之後發生的對於磁碟儲存器所執行的寫入,本發明一些具體實施例利用一寫入記錄器組件。例如一寫入記錄器組件可以實作成在該作業系統的I/O路徑上的驅動器,雖然本發明並不限於這種實作。例如,一寫入記錄器組件可以為硬體式。例如,磁碟儲存器硬體可以提供一或多個介面,其提供能力來辨識在某段時間當中發生的該組修改,或是在某段時間當中是否發生修改。例如,磁碟儲存器硬體可以提供一加速/供電/開機計數器,其可用於推斷至少部份的儲存資料項目已經被更新,在此例中對應於儲存在磁碟上的資料之快取內容可被逐出(此必須經常發生,所以利用該快取裝置必須仍提供實質的好處)。本發明不限於任何特定實作。
在一些具體實施例中,該寫入記錄器組件構形成當啟始關機時即成為啟動,並追蹤所有對於磁碟儲存器所執行之寫入,直到完成關機為止。因此,當該電腦在稍後重新啟動時,這些寫入可被應用到快取內容。例如,當該電腦重新啟動,且磁碟空間進入上線時,該快取管理員接著啟動,並可開始追蹤對於磁碟的寫入。該快取管理員可以查詢該寫入記錄器組件來決定發生在該快取裝置被關閉之後的離線寫入,把這些寫入合併到該快取管理員於啟動期間追蹤的那些寫入,並應用該等合併的寫入組合到快取內容。應用寫入到快取內容可以包括例如更新對應於該等寫入被導向(例如執行相同的寫入作業到這些快取內容)之磁碟上的資料之該等快取內容,逐出這些快取內容,兩者之組合(例如應用寫入作業到某些快取內容及逐出其它者),或執行某些其它作業。在應用離線寫入到快取內容之後,該寫入記錄器組件可被關機,且該快取裝置可開始服務I/O請求。
第3圖描述為用於追蹤離線寫入並應用這些寫入到快取內容之示例程序30。特別是,程序30包括於一電腦的關機及後續重新開機期間由快取管理員100、寫入記錄器300、快取裝置110及快取的空間120執行的作業。
在步驟305中,其發生在電腦關機期間,快取管理員100啟動寫入記錄器300,並將供應給它一「持續識別」,其可辨識要由該寫入記錄器追蹤的該組(即產生)寫入作業。(使用一持續識別的示例在以下詳細說明)。在步驟310中,快取管理員100寫入該持續識別以及儲存在記憶體中的快取元資料到快取裝置110。在該關機程序中的此時,快取裝置110被關閉,並成為無法存取到快取管理員100。
在步驟315中,寫入記錄器300在步驟305中寫入被傳送給它的該持續識別到快取的空間120,且開始追蹤在關機期間對於快取的空間120所執行的任何寫入作業。例如,寫入記錄器300可以在快取的空間120或在某些其它位置處產生一記錄檔案,或一或多個其它資料結構,以指示在磁碟上被執行寫入作業之該等位址及/或被寫入到那些位址之資料。在完成步驟315時,該電腦的關機作業已經結束。
然後,該電腦即重新啟動。做為該開機程序的一部份,快取的空間120被設為上線,寫入記錄器300及快取管理員100即重新啟動。然後快取管理員100開始追蹤對於快取的空間120所執行的寫入作業。例如,快取管理員100可以產生一記錄檔案,並將其儲存在快取裝置110、快取的空間120及/或該電腦之記憶體(未示於第3圖中)。在步驟320中,寫入記錄器300讀取在步驟315中記錄的空間改變,以及在步驟315中被寫入到快取的空間120之持續識別。然後該等空間改變及持續識別被傳送到快取管理員100,如步驟325。
應瞭解寫入記錄器300可能不能夠追蹤在快取裝置110被關閉之後所有對於磁碟的寫入。例如,硬體資料破壞,不合時宜的電力失效,及/或寫入該記錄檔案有問題,其皆造成寫入記錄器300無法追蹤對於一磁碟空間執行的所有離線寫入。在這些狀況中,寫入記錄器300可以在步驟325中指示快取管理員100其無法可靠地決定該記錄為所有執行的離線寫入之完整及正確的記錄。如果這樣,快取管理員100可逐出整個快取內容,或其一部份(例如對應於該寫入記錄器不能追蹤所有寫入作業之一特定磁碟空間),因為其可能並不可靠。第3圖之說明的其餘部份假設寫入記錄器300能夠追蹤所有的離線寫入。
在步驟330中,快取管理員100自快取裝置110讀取該快取元資料及持續識別到記憶體中。快取管理員100決定該持續識別是否可被驗證(此另在以下說明)。如果否,快取管理員100可逐出快取裝置110之整個內容或其一部份(例如對應於該持續識別不能夠被驗證之一特定磁碟空間)。如果該持續識別可被驗證,快取管理員100合併對於磁碟儲存器所執行的任何寫入作業,因為該電腦利用寫入記錄器300所追蹤的任何寫入作業來重新啟動。例如,如果一或多個記錄指示被寫入到磁碟上每一位址之資料,快取管理員100可選擇對於每一位址所執行的最新更新,並將其寫入到記憶體。
在一些具體實施例中,寫入記錄器300可以構形成在該電腦重新啟動之後繼續記錄寫入,所以快取管理員100不需要記錄在該時間點之後所執行的寫入,並將它們合併於由寫入記錄器300所追蹤的寫入。反而,寫入記錄器300可以簡單地提供所有寫入之一記錄給快取管理員100。
使用在步驟330中讀取的該快取元資料,快取管理員100即應用該組寫入到快取裝置110之該等內容,如步驟335。如上所述,應用該等寫入可以包括逐出快取內容、更新快取內容、兩者都做、或執行某些其它作業。例如,由寫入記錄器300在步驟315中追蹤的離線寫入可由逐出該等相對應快取內容來應用,而由快取管理員100自從該電腦被重新啟動之後所追蹤的該等寫入可藉由更新該等相對應快取內容來應用,藉以反映該等寫入。應用寫入作業到快取內容可用任何適當方式來執行,因為本發明並不限於任何特定實作。
在完成步驟335時,第3圖之程序即完成。
應瞭解本發明並不限於利用被構形成在當啟使關機時成為啟動的一寫入記錄器組件,因為在關機期間未發生的寫入作業亦會或另外會被追蹤。例如在一些實作中,一快取裝置可受影響而在一段時間內成為無法存取。例如,如果該快取裝置經由一或多個網路存取,可能會喪失連接器,或如果該快取裝置可自該電腦移除時,可能發生一意外(例如無意圖的)移除。因此,一些具體實施例可以利用一寫入記錄器來追蹤所有(或其一部份)對於磁碟所執行的寫入,不僅是那些在關機期間發生者,且被構形成定期地補捉快取「快照」的一快取裝置仍然上線時。因此,如果該快取在某段時間成為無法存取,且在稍後重新連接,最新的快取快照可使用由該寫入記錄器所追蹤的寫入作業來更新,而不需要完全地重新構建。亦應瞭解當第3圖之示例程序30可以偵測到在關機期間由該作業系統執行的離線寫入時,即需要其它措施來偵測在完成關機之後對於磁碟所執行的離線寫入。例如這種寫入可以發生在當一使用者在關機之後將該磁碟開機到另一作業系統當中,或在關機之後自該電腦移除該磁碟,並將其連接到另一部電腦,且然後修改儲存在磁碟上的資料。
認定關聯於嘗試要追蹤在關機(由另一作業系統)之後發生的離線寫入之困難之下,本發明一些具體實施例反而嘗試要防止它們發生。例如,一些具體實施例嘗試要使得一特定磁碟空間無法由作業系統存取,其在關機之後並未提供一寫入記錄器組件。此可用多種方式之任一種來完成。
在一些具體實施例中,寫入記錄器300可以標示一磁碟空間,其方式為成為無法由作業系統安裝,而其不提供一寫入記錄器組件來追蹤離線寫入。例如,寫入記錄器300可以修改指示在該空間上使用之檔案系統種類的該空間識別。在此方面,熟習此項技術者將可瞭解到一空間識別使得一作業系統可辨識用於儲存資料在該空間上的檔案系統種類,藉此使得該作業系統可以瞭解儲存在該空間上的資料結構,何處來尋找檔案等。例如,如果一空間識別指示一NT檔案系統(NT File System,NTFS)檔案系統係用於儲存資料在該空間上,則嘗試要安裝該空間的另一作業系統將可瞭解到將需要一NTFS檔案系統來解析及存取其上的資料。如果該空間識別並無提供用於儲存資料在該空間上之檔案系統種類的指示,大多數作業系統將無法安裝該空間,因為並無可靠的方式來瞭解在其上所儲存之資料的結構。因此,本發明一些具體實施例修改一磁碟空間之空間識別而使其無法存取,藉此防止使用者將該磁碟空間開機到另一作業系統當中,並對於儲存在該空間上的資料進行離線變更。
認定一些作業系統可能能夠辨識用於儲存在一空間上之資料的檔案系統種類,即使該空間識別被修改,本發明一些具體實施例提供一種機制來偵測何時一作業系統安裝該空間。在這方面,為了安裝一磁碟空間,任何作業系統將需要更新該空間識別(例如指示一NTFS檔案系統被用於儲存資料在該空間上),以允許在其上的資料被存取。任何這些更新將在重新開機時可簡易地被偵測到。如果偵測到這種更新,本發明一些具體實施例可以假設該空間的內容自從上次關機之後已經被修改,並逐出對應於儲存在該空間上之資料的該等快取內容。本發明一些具體實施例提供一種能力,藉此一磁碟空間可被開機到亦利用一寫入記錄器組件之另一作業系統當中。例如,如果一磁碟自執行提供一寫入記錄器組件的作業系統之一電腦中移除,並將該磁碟開機到提供一寫入記錄器組件之另一作業系統當中,該另一作業系統可以構形成認定一改變的空間識別指示該空間可被快取。因此,另一作業系統可加入到由該第一作業系統產生的一離線寫入之記錄(例如儲存在該空間上)。
設計成使得一磁碟空間無法由某些作業系統安裝的上述具體實施例會造成某些應用程式的問題,其依賴該空間識別來執行某些功能(例如備份應用),利用這些應用程式,如果該空間識別被改變,該空間可能無法辨識,因此無法備份。因此,本發明一些具體實施例提供一種機制來決定一檔案系統是否在關機之後被安裝。如果是,其假設對於該檔案系統中的資料有做改變,且可逐出在該檔案系統中對應於資料的所有快取內容。
一些具體實施例可以藉由在關機時放置該檔案系統記錄偵測在關機之後一檔案系統之安裝,其狀態將需要任何作業系統嘗試來安裝該檔案系統來以某種方式修改該記錄(例如改變其位置、加入一新項目等)。例如,寫入記錄器300可以標示為當該檔案系統卸下時(例如在該記錄本身中),記錄離線寫入該位置及/或該檔案系統記錄之內容的工作之一部份。因為任何嘗試要安裝該檔案系統之作業系統將必須改變該記錄(例如如果該檔案系統為一NTFS檔案系統,嘗試要安裝該檔案系統之一作業系統將加入一項目到該記錄),如果該記錄在重新開機時並未改變,其假設該檔案系統在該電力轉換期間並未由另一作業系統所安裝,所以對應於儲存在該檔案系統中之資料的該等快取內容尚未成為失效。相反地,如果該記錄已經用某種方式改變(例如其位置已經改變,且已經加入項目等),則其假設該檔案系統由另一作業系統安裝,且儲存在其中的該資料已經改變,使得對應於儲存在該檔案系統中的資料之該等快取內容為失效。因此,這些快取內容可被逐出。
除了提供機制來防止離線寫入,本發明一些具體實施例提供一管理快取內容之不一致的產生的能力。快取內容之不一致的產生可由於許多原因中任一種所產生。一示例可在當具有連接第一與第二快取裝置之第一與第二電腦利用此處所述的技術來保留橫跨電力轉換之快取內容時會發生。如果該第二快取裝置係連接至該第一電腦(或該第一快取裝置連接至該第二電腦)及該第一電腦被重新啟動時,不正確的資料會由該第二快取裝置提供來滿足I/O請求。此係因為該第一電腦之作業系統可將該第二快取裝置之內容視為確實(因為自該快取傳回的該資料之重新產生的表示能夠符合原始產生的一種表示)且未失效(因為離線寫入能夠應用到快取內容)。另一示例在當一第一快取裝置被連接到一電腦時、該電腦被關機時(藉此保留快取內容)時即會產生,該電腦接著被重新啟動,一第二快取裝置被連接,且該電腦被再次關機(藉此再次保留快取內容)。如果該電腦接著被再次重新啟動且該第一快取裝置連接,不正確的資料會被提供來滿足I/O請求,因為並無可靠的方式來決定該第一快取裝置不會儲存快取內容的最新產生。
一些具體實施例提供一辨識快取內容的不一致產生之能力,所以在該最後開機之前所保留的快取內容不會被錯誤地使用來滿足I/O請求。在一些具體實施例中,此能力係經由一唯一持續識別而提供,其可用多種方式之任一種在當啟始關機時被產生(做為示例)。例如,GUID及/或加密隨機數目產生器可為此目的而使用。如以上參照第3圖所述,該持續識別可儲存在該快取裝置(例如在快取元資料或利用快取元資料)以及在該電腦上(例如在磁碟上及/或記憶體中)並在當該電腦被開啟時來驗證(例如藉由比較兩個版本)。如果驗證不成功,快取內容可被逐出作為代表一先前保留的快取產生。
當利用上述的該等驗證金鑰時,用於產生一持續識別的任何金鑰在一電力轉換的持續期間可被寫入到該快取裝置之外的一位置。例如,在一些具體實施例中,一寫入記錄器組件可寫入該等金鑰以及該持續識別到磁碟儲存器(例如在關機時)。但是,本發明並不限於這種實作,熟習此項技術者可想到可以儲存金鑰之許多替代的位置。例如金鑰可被保存在由該作業系統所提供的任何組態舖中,其可在系統開機期間內使用(例如Windows中的註冊)。
III. 快取元資料
如上所述,快取元資料可以提供儲存有資料項目之磁碟位址與快取有那些資料項目之一快取裝置上的相對應位址之間的映射關係。本發明一些具體實施例提供一儲存快取元資料的能力,其顯著地降低在系統運行時間作業期間儲存快取元資料所需要的記憶體數量。
此外,一些具體實施例提供允許快取元資料在橫跨電力轉換時可被依靠的技術,或將該快取裝置設為離線之任何其它事件(例如自該電腦移除一快取裝置,使得一網路快取裝置無法存取的一網路斷線等),所以快取內容在當該電腦重新啟動及/或該快取裝置被設為上線時可被可靠地存取。在此方面,應瞭解利用某些種類的電力轉換(例如待機及休眠模式),簡單地儲存快取元資料在記憶體中(即RAM)可被接受,因為記憶體的該等內容於待機及休眠轉換期間被保留。但是在重新開機期間,系統記憶體之該等內容不會保留。因此,本發明一些具體實施例提供用於在關機期間儲存快取元資料在一些非揮發性媒體上,在重新開機時則被恢復。例如,快取元資料可被儲存在一快取裝置上,及/或在一或多個獨立的非揮發性媒體上。另外,一些具體實施例能夠自其它者取得快取元資料之某些部份,所以不需要儲存所有的快取元資料。
一些具體實施例可以利用以上第I段所述的該等技術,用於驗證快取元資料之確實性,藉以在當該快取裝置進入離線時(例如在電腦關機期間、該快取裝置自該電腦移除時、使得一網路快取裝置無法存取的網路斷線時)偵測及防止對於元資料之未留意或惡意修改。例如,當該快取裝置成為上線時,該快取管理員可以利用以上參照第2A圖到第2B圖所述之該等技術來驗證元資料在其被載入到記憶體時的確實性。如果無法驗證快取元資料的確實性,該等相對應快取內容可基於儲存在磁碟上的資料來更新,逐出,或另依以上所述來處理。
在一些具體實施例中,快取元資料可被壓縮來降低於關機期間要儲存及在重新開機時要載入之元資料的數量。因為元資料的壓縮會需要儲存包含有關於該元資料之資訊的一獨立段落之資訊(例如在該快取中的標頭),上述的技術可在重新開機時亦被用來驗證此資訊之確實性。
本發明一些具體實施例提供用來儲存快取元資料的技術,其方式可在任何時間大量降低儲存在記憶體中快取元資料之數量,藉以降低載入快取元資料到記憶體及將其自記憶體卸載時所需要的時間(例如在運行時間及啟動/關機作業期間),並大為降低快取元資料之記憶體「覆蓋區」。在此方面,應瞭解利用具有相當大的儲存容量之快取裝置,其會需要大量的元資料來管理快取內容。例如,具有16Gb儲存容量之快取裝置能夠儲存最高到32Gb之壓縮資料。在一些實作中,磁碟位址可反映在快取元資料中,即在代表4Kb之磁碟儲存器之「資料單元」中。因此,為了追蹤32Gb資料的位置,將需要8百萬個不同的資料單元。如果8百萬資料單元之每一者使用16位元組映射關係來表示在快取元資料中(即由一磁碟位址到一快取位址),則這些映射關係需要一百個28Mb的儲存。應用者已可瞭解到儲存一百個28Mb之快取元資料在記憶體中將佔用許多電腦中記憶體的多餘大量部份。此外,在關機期間由記憶體寫入一百個28Mb的快取元資料到非揮發性媒體,及在重新開機時由非揮發性媒體恢復一百個28Mb的快取元資料到記憶體所需要的時間將消耗過多時間,並消耗過量的處理資源。
認定快取元資料的數量不能夠輕易地降低,本發明一些具體實施例提供有設計成降低儲存快取元資料所需要的該等儲存資源的技術,以及在關機及啟動期間儲存及恢復快取元資料所需要的時間及處理資源。
在一些具體實施例中,此係由儲存快取元資料在一或多個階層式資料結構(例如樹、多層級陣列等)中來完成。利用一階層式資料結構可以允許該階層的較低層級係要儲存在一非揮發性媒體上(例如該快取裝置),而僅有該階層的較高層級被儲存在記憶體中。例如,在一些具體實施例中,僅有該階層的較高層級被儲存在記憶體中,所以在快取元資料中由記憶體所佔用的「覆蓋區」可大為降低,甚至當支援具有大量儲存容量之快取裝置所需要的快取元資料之數量被整體儲存時。當然,僅儲存該階層之較高層級在快取元資料中,如同一些具體實施例,其亦可提供用於儲存保存在該階層之較低層級處的一些資訊,藉以降低關聯於重複存取到此資訊之I/O負荷。本發明並不限於以任何特定方式來實作。
在系統作業期間,當處理讀取請求時,自該非揮發性媒體讀取的該快取元資料(即來自該階層的較低層級)來執行該讀取作業可被「頁面輸入」(“paged in”)到(即自一儲存媒體讀入)記憶體,所以其可更為快速地對於相同磁碟/快取位址之後續讀取請求來進行存取。當該電腦在稍後關機及/或該快取裝置設為離線時,僅有儲存在該階層之較高層級的快取元資料,及要被儲存在該階層之較低層級中而要被頁面輸入到記憶體之快取元資料會需要被儲存在該非揮發性媒體中。因此,在關機期間自記憶體移動快取元資料到非揮發性儲存器,及在重新開機期間自非揮發性儲存器恢復快取元資料到記憶體所需要的時間,皆可顯著地降低。
本發明之一些具體實施例利用一B+樹來儲存快取元資料之至少一部份。熟習此項技術者將可瞭解到B+樹可以利用大的分支因子,且因此降低在所使用之階層中層級的數目。使用上述之示例,如果8百萬資料單元要表示在快取元資料中,且利用具有兩百之一分支因子的B+樹(所以在該階層中每個節點具有兩百個「子」節點),僅具有三個層級之一資料結構將足以儲存該元資料:在最高層級處的一單一「根」節點,在該第二層級處的兩百個節點,及在該第三層級處四萬個節點,該等四萬個節點之每一者包括對於兩百個資料單元之指標(或總共8百萬個資料單元)。
第4圖所示為此示例B+樹,其包括根節點400、層級2節點4101-200 ,及層級3節點4201-200 。每個節點包括兩百個元素,其每一者由對於在該階層中較低層級處的節點之指標所區隔。例如,根節點400中的元素402由指標401及403所限定。關聯於一給定金鑰(例如一磁碟位址)的數值(例如一快閃位址)可由依循在一節點中一元素之左邊或右邊的指標來決定,如果該金鑰小於該元素時利用對於其後的該元素之左方的指標,且如果該金鑰大於該元素時利用對於其後的該元素之右方的指標。例如,為了決定小於元素402之一金鑰值,指標401將被依循到層級2節點4101 ,以決定大於元素402但小於元素404之一金鑰值,指標403將被依循到層級2節點4102 (未示出),依此類推。類似地,在該層級2節點處,對於一元素之左方或右方之指標(根據該金鑰是否小於或大於該節點中的元素)被依循到一層級3節點。在層級3處,一最後指標被依循(再次基於該金鑰是否小於或大於在該節點中元素)到該數值,利用在層級3處的每個指標來參照到快取元資料中8百萬個資料單元中之一。
應瞭解具有一大的分支因子的B+樹提供一相當「平坦」的階層,其幾乎所有的節點係位在該階層的底層級處。也就是說,在該樹中的總共40,201個節點中有40,000個位在最低層級。本發明一些具體實施例藉由在啟動時僅恢復該階層的最上方兩個層級到記憶體來利用其好處,而直到需要時在該階層之最低層級中的快取元資料被儲存在該快取裝置上(例如其可在當處理讀取請求、慢速載入等等時,依需被載入到記憶體中)。因為僅有該階層式資料結構的一部份被儲存在記憶體中,該快取元資料會佔用非常小的記憶體部份,其相較於如果快取元資料的全部或大部份要維持在記憶體中時所需要者要小很多。此外,當該電腦被關機時,僅有位在最上方兩個層級處的資料及在作業期間被載入到記憶體中的資料需要儲存在該快取裝置上。因此,啟動及關機作業皆可快速及有效率地執行。
因此,本發明一些具體實施例提供在節點中的指標位在儲存在記憶體中該階層之一個層級處(在以上的示例中,為該階層的層級2),其參照到儲存在該快取裝置上該階層的另一層級處的節點(在以上的示例中為層級3)。例如,當收到一快取的資料項目之讀取請求時,本發明之具體實施例依循指標通過儲存在記憶體中該階層的一或多個層級,然後到位在儲存在該快取中該階層的較低層級處之元資料,以決定該資料項目被儲存在快取中的該位址。在一些具體實施例中,一旦該快取位址對於該資料項目被決定,其可儲存在記憶體中,所以後續讀取該項目的請求可被執行,而不需要自該快取裝置讀取快取元資料。
第5圖所示為一示例性系統50,其用於根據本發明一些具體實施例管理快取元資料。第5圖所示為記憶體500與快取裝置110,其皆可存取到一電腦(未示出)。當該電腦啟動時,包含一階層式資料結構(例如B+樹)之一或多個層級的快取元資料在作業505中被載入到記憶體500。使用上述的示例來例示如果在快取元資料中表示有8百萬個資料單元,使得一三層級階層式資料結構可用於儲存該快取元資料,則該階層的最上方兩個層級可被載入到記憶體500。當然,如果在元資料中表示有比8百萬資料單元或多或少者,且一具有比三層級或多或少之階層式資料結構要被使用,則該階層之不同數目的層級可被載入到記憶體500。
然後,當一讀取請求被導向到在快取中維持的一資料項目,該資料項目被儲存之快取位址即由存取儲存在快取裝置110中該階層之該層級中的快取元資料所決定,此快取元資料接著被儲存在記憶體中,如作業510,所以後續讀取或寫入到該資料項目可被執行,而不需要讀取儲存在快取裝置上的快取元資料來決定該資料項目被儲存之快取位址。另外,該快取位址可自記憶體讀取,其可比讀取到快取要更快速地執行。
稍後,當該電腦被關機時,儲存在記憶體中的該快取元資料(即儲存在於作業505中被載入到記憶體之該階層的該等層級中的該元資料,及用於滿足於作業510中被寫入到記憶體之讀取請求的任何元資料)被載入到快取裝置500中,如步驟515。由於儲存在記憶體中為快取元資料之相當少的數量,關機可更為快速地執行,而不需要大量的處理資源。
應瞭解B+樹僅為可用於儲存快取元資料之多種資料結構之一種,且其可利用其它種類的資料結構(例如階層式結構,像是AVL(Adelson-Velskii and Landis,AVL)樹、紅黑樹、二元搜尋樹、B樹及/或其它階層式及非階層式資料結構)。本發明並不限於利用任何一種資料結構或資料結構的組合來儲存快取元資料。
一些具體實施例可提供在任何時間保存一「目標量」的快取元資料在記憶體中。該目標量可用任何適當方式來決定。例如,一目標量可為一電腦可使用之實體記憶體的數量之一百分比。例如,如果該電腦具有1Gb的記憶體,則在任何時間可以儲存2Mb的快取元資料(作為示例)在記憶體中。因此,當該電腦被關機時,僅有2Mb的快取元資料需要被載入到該快取裝置中。
在一些具體實施例中,快取元資料可被循環進出記憶體。例如,如果一目標量的快取元資料已經儲存在記憶體中,且執行一讀取,其需要快取元資料自該快取裝置讀取,其元資料可被「頁面輸入」到記憶體,並可抹除其它快取元資料(例如其在最近為最少被存取)。例如,快取元資料可在被寫入到該快取裝置之後被抹除。另外,該系統可以決定該快取元資料自從上次被寫出之後是否已經改變,如果否,其僅為被抹除,因此可減少寫入該快取元資料所需要的時間及處理資源。使用上述的技術,可以維持記憶體中被快取元資料所佔用的小的「覆蓋區」。
第6圖所示為一示例。特別是,第6圖所示的程序60包括可由快取管理員100執行之作業,以使用上述的技術來讀取快取元資料。
在程序60開始時,於步驟605中收到一請求來讀取儲存在磁碟位址X處的資料。在步驟610中,做出該資料被儲存之快取位址是否可由儲存在記憶體中的快取元資料所辨識的決定。如果是,該程序進行到步驟615,其中決定所辨識的快取位址,然後用於發出一讀取請求到快取裝置110,如步驟620。然後程序60即完成。如果該快取位址不能夠使用儲存在記憶體中的快取元資料來辨識,則該程序進行到步驟625,其中快取元資料自快取裝置110讀取,以決定該資料被儲存之快取位址。使用在步驟625中所辨識之快取偏置,於步驟620中發出一讀取請求到所辨識的快取偏置,然後程序60完成。
應瞭解儲存快取元資料在該快取裝置上不僅可加速啟動及關機期間載入及恢復快取元資料的程序,且亦可加速於啟動及關機期間所執行之該等系統作業。在此方面,關機及啟動經常牽涉到多重存取到某些資料項目,且對一快取裝置執行兩次讀取作業基本上要比對磁碟儲存器執行一次讀取作業要快。因此,如果於關機及/或啟動期間所存取的一資料項目及指明其位置之元資料皆儲存在快取中,則該資料項目可比如果該資料項目儲存在磁碟上時要更為快速地存取,因為兩次讀取到快取(即一次存取快取元資料來決定該項目的位置,而第二次存取該項目本身)基本上可比對磁碟的單一讀取要更為快速地執行。因此,於關機及啟動期間執行的個別作業可被加速。再者,如果自快取對快取元資料的第一次讀取期間,該項目被儲存之位址被頁面輸入到記憶體,則該資料項目的後續讀取甚至可被更為快速地執行,因為讀取記憶體基本上可比讀取快取要更為快速地執行。
用於實施本發明之特徵的多種系統與方法之態樣可以實作在一或多個電腦系統上,例如第7圖所示的示例性電腦系統700。電腦系統700包括輸入裝置702、輸出裝置701、處理器703、記憶體系統704及儲存器706,其皆經由互連接機制705直接或間接地耦合,其中可包含一或多個匯流排、交換器、網路及/或任何其它適當的互連接。輸入裝置702自一使用者或機器(例如人工操作者)接收輸入,且輸出裝置701顯示或傳送資訊到一使用者或機器(例如一液晶顯示器)。處理器703基本上執行稱之為一作業系統之電腦程式(例如Microsoft Windows系列的作業系統,或任何其他適當的作業系統),其可控制其它電腦程式的執行,並提供排程、輸入/輸出及其它裝置控制,會計、編譯、儲存器指定、資料管理、記憶體管理、通訊及資料流控制。該處理器及作業系統共同地定義該電腦平台,用於撰寫應用程式及其它電腦程式語言。
處理器703亦可執行一或多個電腦程式來實作多種功能。這些電腦程式可用任何種類的電腦程式語言來撰寫,其包括一程序性程式化語言、物件導向式程式化語言、巨集語言或其組合。這些電腦程式可被儲存在儲存器系統706中。儲存器系統706可以保存資訊在一揮發性或非揮發性媒體上,並可為固定式或可移除式。儲存器系統706在第8圖中更為詳細地顯示。
儲存器系統706基本上包括一電腦可讀取及可寫入非揮發性記錄媒體801,其上儲存有信號,其可定義一電腦程式或要由該程式使用的資訊。例如一媒體可為一磁碟或快閃記憶體。基本上,一作業,處理器703使得要自非揮發性記錄媒體801讀取的資料進入到一揮發性記憶體802(例如一隨機存取記憶體或RAM),其允許由處理器703比對於媒體801要更為快速地存取到該資訊。記憶體802可以位在儲存器系統706中,如第8圖所示,或在記憶體系統704中,如第7圖所示。處理器703概略地操縱位在積體電路記憶體704、802內的資料,然後在處理完成之後複製該資料到媒體801。已知有多種機制可管理媒體801與積體電路記憶體元件704、802之間的資料移動,且本發明並不限於此。本發明亦不限於一特定記憶體系統704或儲存器系統706。
另外,本發明之具體實施例亦不限於利用一快取管理員組件,其在一作業系統之I/O堆疊中實作成一驅動器。任何適當的組件或組件之組合,其每一者可由一作業系統或一或多個單獨運作組件來實作,其可替代地或額外地使用。本發明不限於任何特定實作。
上述本發明的具體實施例可用任何多種方式來實施。例如,上述的該等功能可使用硬體、軟體或其組合來實施。當實施成軟體時,該軟體碼可在任何適當處理器或處理器的集合上執行,不論是提供在一單一電腦上或分散在多部電腦當中。在此方面,應瞭解執行此處所述之該等功能的任何組件或組件的集合可概略視為控制該等上述功能之一或多個控制器。該等一或多個控制器可用多種方式實作,例如利用專屬硬體、或藉由使用微編碼或軟體來程式化的一或多個處理器來執行上述的該等功能。當一控制器儲存或提供系統作業之資料時,這些資料可被儲存在一中央式儲存庫中,在複數個儲存庫中,或其組合當中。
另外,應瞭解一(用戶端或伺服器)電腦可實施成一些型式中任何一種,例如架掛安裝式電腦,桌上型電腦、膝上型電腦、平板電腦或其它種類的電腦。此外,一(用戶端或伺服器)電腦可以嵌入在一種裝置上,其不能概略視為一電腦,而是具有適當處理能力,其包括個人數位助理(PDA)、智慧型電話或任何其它適當可攜式或固定式電子裝置。
同時,一(用戶端或伺服器)電腦可以具有一或多個輸入及輸出裝置。這些裝置除此之外可以用於呈現一使用者介面。可用來提供一使用者介面之輸出裝置的範例包括印表機或顯示螢幕,用於輸出的視覺呈現,及喇叭或其它聲音產生裝置,用於輸出的聲音呈現。可用於一使用者介面之輸入裝置的範例包括鍵盤、及指向裝置,例如滑鼠、觸控板及數位板。在另一範例中,一電腦可接收經由語音辨識或其它聲音格式的輸入資訊。
這種電腦可以任何適當型式由一或多個網路相互連接,其包括一區域網路或一廣域網路,例如企業網路或網際網路。這些網路可以基於任何適當技術,即可根據任何適當協定來運作,並可包括無線網路、有線網路或光纖網路。同時,此處所概述之多種方法或程序可以編碼成軟體,其可在利用多種作業系統或平台中任何一種的一或多個處理器上執行。
此外,軟體可以使用一些適當程式化語言及/或習用程式化或腳本化工具之任何一種來撰寫,且亦可編譯成可在一架構或虛擬機器上執行的可執行機器語言碼或中間碼。
在此方面,本發明可實施成一儲存媒體(或多種儲存媒體)(例如電腦記憶體、一或多個軟碟片、磁碟、光碟片、磁帶、快閃記憶體、在場域可程式化閘極陣列或其它半導體裝置中的電路組態、或其它電腦儲存媒體等),其利用一或多個程式編碼,其在當於一或多部電腦或其它處理器上執行時,可執行實作上述之本發明多種具體實施例的方法。該儲存媒體或媒介可以傳輸,使得儲存在其上的程式可以載入到一或多部不同電腦或其它處理器,以實施如上述之本發明的多種態樣。
術語「程式」或「軟體」在此處為一般性意義來使用,以代表任何種類的電腦碼或電腦可執行指令集,其可被利用來程式化一電腦或其它處理器來實施本發明如上所述的多種態樣。此外,應瞭解根據本具體實施例的一種態樣,一或多個電腦程式,其當執行時可執行本發明之方法時不需要存在於一單一電腦或處理器上,但可用模組化方式分散在一些不同電腦或處理器之間,以實施本發明之多種態樣。
電腦可執行指令可提供成許多型式,例如由一或多部電腦或其它裝置執行的程式模組。概言之,程式模組包括例式、程式、物件、組件、資料結構等,其可執行特殊工作或實施特定的摘要資料型態。基本上,該等程式模組的功能在多種具體實施例中可視需要組合或分散。
本發明的多種態樣可以單獨使用,結合使用,或是位在前述之具體實施例中未被特定討論的多種配置中使用,因此並不限於此申請案中在前述說明或在圖面中所例示提出的組件之細節與配置。例如在一具體實施例中描述的態樣可以用任何方式利用在其它具體實施例中所描述的態樣來組合。
在申請專利範圍中使用的序數術語,例如「第一」、「第二」、「第三」等來修正一申請專利範圍元件,其本身並不代表一個申請專利範圍元件之間任何的優先性、先後次序或順序,或是執行一方法之步驟時的時間順序,而是僅做為標示來區別具有某個名稱之一申請專利範圍元件與另一個具有相同名稱之元件(但用於該序數術語中),以區別該等申請專利範圍元件。
同時,此處所使用的語法與術語係做為說明的目的,而不應視為限制。在此處使用到「包括」、「包含」或「具有」、「含有」、「牽涉到」及其變化語皆代表涵蓋了以下所列出的項目及其同等者,以及附加的項目。
以上說明了本發明之至少一具體實施例的數種態樣之後,對於熟習此項技術者將可立即瞭解到有多種變化、修正及改進。這些變化、修正及改進皆要視為本說明書的一部份,並包含在本發明的精神與範圍之內。因此,前述的說明及圖式僅做為範例。
100...快取管理員
110...快取裝置
120...快取的空間
300...寫入記錄器
400...根節點
401,403...指標
402...元素
4101-200 ...層級2節點
4201-200 ...層級3節點
500...記憶體
700...電腦系統
701...輸出裝置
702...輸入裝置
703...處理器
704...記憶體系統/積體電路記憶體(元件)
705...互連接機制
706...儲存器(系統)
801...電腦可讀取及可寫入非揮發性記錄媒體
802...揮發性記憶體/積體電路記憶體(元件)
第1A圖到第1B圖為描述根據先前技藝中用於寫入及讀取一快取裝置之技術的方塊圖;
第2A圖到第2B圖描述根據本發明一些具體實施例中用於寫入及讀取一快取裝置之示例性技術;
第3圖為描述根據本發明一些具體實施例中用於確保在電力轉換之後快取資料可正確地反映儲存在磁碟上的資料之示例性技術的方塊圖;
第4圖為描述根據本發明一些具體實施例中用於儲存快取元資料的示例性技術之方塊圖;
第5圖為描述根據本發明一些具體實施例中用於快取元資料之示例性儲存作業的方塊圖;
第6圖為描述根據本發明一些具體實施例中使用一快取裝置服務來讀取請求之示例性技術的流程圖;
第7圖為描述可用於實作本發明之態樣的一示例電腦的方塊圖;及
第8圖為描述在其上可記錄實作本發明之態樣的指令之一示例電腦記憶體的方塊圖。
100...快取管理員
110...快取裝置
120...快取的空間
300...寫入記錄器

Claims (20)

  1. 一種操作一電腦(700)的方法,該電腦包含一記憶體以及已經與其耦合有一儲存媒體(706)及一快取裝置(110),該儲存媒體(706)儲存有複數資料項目,其每一項位在各別的位址處,該等複數資料項目之每一者亦被儲存在該快取裝置(110)上一相對應位址處,可由該電腦存取的快取元資料提供在該儲存媒體上該位址與在該快取裝置上儲存有每一資料項目之該相對應位址之間的一映射關係(mapping),該方法包括以下步驟:(A)以包含複數階層層級的一階層式資料結構儲存該快取元資料;及(B)僅載入該等複數階層層級之一子集合到該記憶體。
  2. 如申請專利範圍第1項所述之方法,其中該步驟(B)另包含:儲存該等複數階層層級之其餘部份中至少一部份在該快取裝置上之步驟。
  3. 如申請專利範圍第1項所述之方法,其中該階層式資料結構為包括一B+樹、一AVL樹、一紅黑樹、一二元搜尋樹及一B樹的階層式資料結構之一群組中之一。
  4. 如申請專利範圍第1項所述之方法,另包含在該步驟(A)之後執行的一步驟,其包含:啟始該電腦的一重新開機及/或將該快取裝置設為離線之步驟,且其中該步驟(B)在啟始該電腦的該重新開機及/或將該快取裝置設為上線時執行。
  5. 如申請專利範圍第1項所述之方法,其中該階層式資料結構具有至少一百的分支因子。
  6. 如申請專利範圍第5項所述之方法,其中該階層式資料結構具有至少兩百的分支因子。
  7. 如申請專利範圍第1項所述之方法,其中該階層式資料結構包含在一最高階層層級處一根節點,且其中該步驟(B)另包含:載入至少該根節點到該記憶體之步驟。
  8. 如申請專利範圍第1項所述之方法,其中該步驟(A)另包含:回應於將該快取裝置設為離線的一指令而儲存快取元資料在該快取裝置上之步驟。
  9. 如申請專利範圍第1項所述之方法,另包含以下步驟:(D)接收一請求來讀取儲存在該儲存媒體上一位址處的一資料項目;(E)存取該快取元資料的一第一部份,以辨識該資料項目被儲存在該快取裝置上之一相對應位址;及(F)儲存該快取元資料之該第一部份的至少一些在該記憶體中。
  10. 如申請專利範圍第9項所述之方法,其中該步驟(D)另包含:接收一請求來讀取一資料項目做為被執行來開機一作業系統及/或將該快取裝置設為上線之一作業的一部份之步驟。
  11. 如申請專利範圍第9項所述之方法,其中:該步驟(D)另包含:接收請求來讀取複數資料項目,其每一者儲存在該儲存媒體上一各別的位址處之步驟;該步驟(E)另包含:對於在(D)中接收的每一請求存取該快取元資料來辨識一資料項目被儲存在該快取裝置上的一相對應位址之步驟;該步驟(F)另包含:對於(E)中每一存取儲存在該記憶體中該相對應位址之一指示之步驟;及其中該方法另包含一步驟:(G)在接收關機該電腦的一指令時,儲存在(C)中被載入到該記憶體之該等複數階層層級的該子集合及/或在(F)中被儲存之該等指示到該快取裝置。
  12. 如申請專利範圍第9項所述之方法,其中該步驟(F)另包含以下步驟:(F1)決定快取元資料的一目標量是否已經儲存在該記憶體中;(F2)如果其決定快取元資料的該目標量已經儲存在該記憶體中:辨識要自該記憶體抹除的快取元資料之一第二部份;抹除快取元資料的該第二部份;及儲存快取元資料的該第一部份到該記憶體;及(F3)如果其決定快取元資料的該目標量尚未儲存在該記憶體中,儲存快取元資料之該第一部份到該記憶體。
  13. 如申請專利範圍第12項所述之方法,其中該記憶體具有一儲存容量,且其中在該步驟(F1)中所做的該決定係參照該記憶體之該儲存容量而執行。
  14. 如申請專利範圍第13項所述之方法,其中該步驟(F1)中所做的該決定包含:決定該記憶體之該儲存容量之一百分比是否由該快取元資料所佔用之步驟。
  15. 如申請專利範圍第9項所述之方法,其中該步驟(E)另包含:驗證該快取元資料在該步驟(A)完成之後並未被修改之步驟。
  16. 如申請專利範圍第15項所述之方法,其中該步驟(A)另包含:產生該快取元資料之至少一部份的一表示,並將該表示寫入到該快取裝置之步驟,且其中在(E)中驗證的該步驟包含以下步驟:(E1)取得被寫入到該快取裝置之該表示;(E2)重新產生該表示;及(E3)比較步驟(E1)中取得的該表示與在步驟(E2)中重新產生的該表示,以決定該快取元資料是否可被可靠地利用,以辨識該資料項目被儲存在該快取裝置上的該相對應位址。
  17. 如申請專利範圍第16項所述之方法,另包含以下步驟:(E4)如果決定該快取元資料能夠可靠地被利用來辨識該相對應位址,於該快取裝置上該相對應位址處讀取該資料項目;及(E5)如果決定該快取元資料不能夠可靠地利用來辨識該相對應位址,逐出該快取元資料,並由該儲存媒體上該位址讀取該資料項目。
  18. 如申請專利範圍第1項所述之方法,其中該電腦另包含一作業系統,且該作業系統執行該步驟(A)到該步驟(C)。
  19. 一種在其上具有編碼之指令的電腦可讀取儲存媒體,其在當由包含一記憶體以及已經耦合有磁碟儲存器(706)及一快取裝置(110)之一電腦(700)執行時,該磁碟儲存器儲存有複數資料項目,其每一項在各別位址處,該等複數資料項目之每一者亦儲存在該快取裝置上的一相對應位址處,該電腦可存取之快取元資料提供在該磁碟儲存器上該位址與在該快取裝置上儲存有每一資料項目的該相對應位址之間的一映射關係,其執行的一方法包含以下步驟:(A)以包含複數階層層級的一階層式資料結構儲存該快取元資料在該快取裝置中;(B)啟始該電腦之一重新開機;(C)在啟始該電腦之該重新開機時僅載入該等複數階層層級的一子集合到該記憶體;(D)接收一請求來讀取儲存在該儲存媒體上一位址處的一資料項目;(E)存取該快取元資料的一第一部份,以辨識該資料項目被儲存在該快取裝置上之一相對應位址;及(F)儲存該快取元資料之該第一部份在該記憶體中。
  20. 一種電腦系統(700),其包含:一記憶體(704);一儲存媒體(706),其儲存複數資料項目在各別的位址處;一快取裝置(110),其亦儲存該等複數資料項目在相對應位址處,且快取元資料提供在該儲存媒體上該位址與在該快取裝置上每個資料項目被儲存的該相對應位址之間的一映射關係,該快取元資料儲存在包含複數階層層級之一階層式資料結構中;至少一處理器(703),其被程式化來進行:於啟始該電腦之一重新開機時僅載入該等複數階層層級的一子集合到該記憶體;處理請求來藉由使用該快取元資料來辨識該等資料項目儲存在該快取裝置中相對應位址,且藉由儲存所辨識的相對應位址在該記憶體中而讀取儲存在該儲存媒體上各別位址處的資料項目;及處理一指令來藉由自該記憶體傳送該等複數階層層級之該子集合與該等辨識的相對應位址到該快取裝置而關機該電腦。
TW98138300A 2008-11-14 2009-11-11 快取資料與元資料之管理 TWI471726B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/271,400 US8032707B2 (en) 2008-09-15 2008-11-14 Managing cache data and metadata

Publications (2)

Publication Number Publication Date
TW201019110A TW201019110A (en) 2010-05-16
TWI471726B true TWI471726B (zh) 2015-02-01

Family

ID=42008275

Family Applications (1)

Application Number Title Priority Date Filing Date
TW98138300A TWI471726B (zh) 2008-11-14 2009-11-11 快取資料與元資料之管理

Country Status (7)

Country Link
US (3) US8032707B2 (zh)
EP (1) EP2353081B1 (zh)
JP (1) JP2012508932A (zh)
CN (1) CN102216899B (zh)
ES (1) ES2663701T3 (zh)
TW (1) TWI471726B (zh)
WO (1) WO2010056571A2 (zh)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
IL176685A (en) * 2006-07-03 2011-02-28 Eci Telecom Dnd Inc Method for performing a system shutdown
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8200895B2 (en) * 2009-05-04 2012-06-12 Microsoft Corporation File system recognition structure
US9015733B2 (en) 2012-08-31 2015-04-21 Facebook, Inc. API version testing based on query schema
KR101113894B1 (ko) * 2010-05-18 2012-02-29 주식회사 노바칩스 반도체 메모리 시스템 및 이의 제어 방법
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8793309B2 (en) * 2010-09-07 2014-07-29 Sap Ag (Th) Systems and methods for the efficient exchange of hierarchical data
US10114847B2 (en) * 2010-10-04 2018-10-30 Ca, Inc. Change capture prior to shutdown for later backup
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US9286079B1 (en) * 2011-06-30 2016-03-15 Western Digital Technologies, Inc. Cache optimization of a data storage device based on progress of boot commands
CN102567490B (zh) * 2011-12-21 2013-12-04 华为技术有限公司 数据库内的描述信息的恢复和数据的缓存方法及设备
US9286303B1 (en) * 2011-12-22 2016-03-15 Emc Corporation Unified catalog service
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US8756538B2 (en) * 2012-02-20 2014-06-17 International Business Machines Corporation Parsing data representative of a hardware design into commands of a hardware design environment
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
WO2014030249A1 (ja) * 2012-08-24 2014-02-27 株式会社日立製作所 ボリュームのi/o性能の検証システム及び検証方法
US20140067781A1 (en) * 2012-08-31 2014-03-06 Scott W. Wolchok Graph Query Language API Querying and Parsing
US9646028B2 (en) * 2012-08-31 2017-05-09 Facebook, Inc. Graph query logic
US9047238B2 (en) 2012-11-28 2015-06-02 Red Hat Israel, Ltd. Creating a virtual machine from a snapshot
US10713183B2 (en) * 2012-11-28 2020-07-14 Red Hat Israel, Ltd. Virtual machine backup using snapshots and current configuration
US9317435B1 (en) * 2012-12-18 2016-04-19 Netapp, Inc. System and method for an efficient cache warm-up
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102079B2 (en) 2013-06-13 2018-10-16 Hytrust, Inc. Triggering discovery points based on change
US8849764B1 (en) 2013-06-13 2014-09-30 DataGravity, Inc. System and method of data intelligent storage
US10089192B2 (en) 2013-06-13 2018-10-02 Hytrust, Inc. Live restore for a data intelligent storage system
US9213706B2 (en) 2013-06-13 2015-12-15 DataGravity, Inc. Live restore for a data intelligent storage system
US9684607B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Automatic recovery of application cache warmth
US9582160B2 (en) 2013-11-14 2017-02-28 Apple Inc. Semi-automatic organic layout for media streams
US20150134661A1 (en) * 2013-11-14 2015-05-14 Apple Inc. Multi-Source Media Aggregation
US9489104B2 (en) 2013-11-14 2016-11-08 Apple Inc. Viewable frame identification
US10545917B2 (en) 2014-02-19 2020-01-28 Snowflake Inc. Multi-range and runtime pruning
US10325032B2 (en) 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
WO2016122491A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Page cache in a non-volatile memory
US9684596B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Application cache replication to secondary application(s)
US9600417B2 (en) * 2015-04-29 2017-03-21 Google Inc. Data caching
CN106484691B (zh) * 2015-08-24 2019-12-10 阿里巴巴集团控股有限公司 移动终端的数据存储方法和装置
CN106681649A (zh) * 2015-11-06 2017-05-17 湖南百里目科技有限责任公司 一种分布式存储元数据加速方法
US10678578B2 (en) * 2016-06-30 2020-06-09 Microsoft Technology Licensing, Llc Systems and methods for live migration of a virtual machine based on heat map and access pattern
US10437780B2 (en) 2016-07-14 2019-10-08 Snowflake Inc. Data pruning based on metadata
CN108733507B (zh) * 2017-04-17 2021-10-08 伊姆西Ip控股有限责任公司 文件备份和恢复的方法和设备
US10733044B2 (en) * 2018-07-09 2020-08-04 Microsoft Technology Licensing, Llc Use of cache for content validation and error remediation
US11354415B2 (en) * 2019-06-29 2022-06-07 Intel Corporation Warm boot attack mitigations for non-volatile memory modules
US10992743B1 (en) * 2019-09-23 2021-04-27 Amazon Technologies, Inc. Dynamic cache fleet management
US11221776B2 (en) * 2019-12-30 2022-01-11 Micron Technology, Inc. Metadata indication for a memory device
CN113031864B (zh) * 2021-03-19 2024-02-02 上海众源网络有限公司 一种数据处理方法、装置、电子设备及存储介质
US11366765B1 (en) 2021-04-21 2022-06-21 International Business Machines Corporation Optimize metadata management to boost overall system performance
US20230124622A1 (en) * 2021-10-14 2023-04-20 Arm Limited Alarm Systems and Circuits
KR20230072886A (ko) * 2021-11-18 2023-05-25 에스케이하이닉스 주식회사 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083275A1 (en) * 2000-12-25 2002-06-27 Shinichi Kawamoto Cache coherent control system
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US6535949B1 (en) * 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6539456B2 (en) * 1999-10-13 2003-03-25 Intel Corporation Hardware acceleration of boot-up utilizing a non-volatile disk cache

Family Cites Families (280)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4476526A (en) 1981-11-27 1984-10-09 Storage Technology Corporation Cache buffered memory subsystem
US4612612A (en) 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US4979108A (en) 1985-12-20 1990-12-18 Ag Communication Systems Corporation Task synchronization arrangement and method for remote duplex processors
US4972316A (en) 1987-03-30 1990-11-20 International Business Machines Corporation Method of handling disk sector errors in DASD cache
US4945474A (en) 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
DE69033438T2 (de) 1989-04-13 2000-07-06 Sandisk Corp., Santa Clara Austausch von fehlerhaften Speicherzellen einer EEprommatritze
JPH02273843A (ja) 1989-04-14 1990-11-08 Nec Corp スワッピング装置
US5900870A (en) 1989-06-30 1999-05-04 Massachusetts Institute Of Technology Object-oriented computer user interface
US5088026A (en) 1990-02-09 1992-02-11 International Business Machines Corporation Method for managing a data cache using virtual external storage addresses as arguments
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
RU2010317C1 (ru) 1990-07-20 1994-03-30 Институт точной механики и вычислительной техники им.С.А.Лебедева РАН Устройство управления буферной памятью
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5764877A (en) 1991-06-25 1998-06-09 Digital Equipment Corporation Media recovery with time-split B-trees
JP2582487B2 (ja) 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5297258A (en) 1991-11-21 1994-03-22 Ast Research, Inc. Data logging for hard disk data storage systems
JP3451099B2 (ja) 1991-12-06 2003-09-29 株式会社日立製作所 外部記憶サブシステム
EP0547992A3 (en) 1991-12-17 1993-12-01 Ibm Method and system for enhanced efficiency of data recovery in balanced tree memory structures
JP3485938B2 (ja) 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置
US5420998A (en) 1992-04-10 1995-05-30 Fujitsu Limited Dual memory disk drive
US5398325A (en) 1992-05-07 1995-03-14 Sun Microsystems, Inc. Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5574877A (en) 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
US5454098A (en) 1992-09-28 1995-09-26 Conner Peripherals, Inc. Method of emulating access to a sequential access data storage device while actually using a random access storage device
US5561783A (en) 1992-11-16 1996-10-01 Intel Corporation Dynamic cache coherency method and apparatus using both write-back and write-through operations
US5751932A (en) 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
US5463739A (en) 1992-12-22 1995-10-31 International Business Machines Corporation Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold
US5557770A (en) 1993-03-24 1996-09-17 International Business Machines Corporation Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5551002A (en) 1993-07-01 1996-08-27 Digital Equipment Corporation System for controlling a write cache and merging adjacent data blocks for write operations
US5572660A (en) 1993-10-27 1996-11-05 Dell Usa, L.P. System and method for selective write-back caching within a disk array subsystem
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US6026027A (en) 1994-01-31 2000-02-15 Norand Corporation Flash memory system having memory cache
EP0668565B1 (en) 1994-02-22 2002-07-17 Advanced Micro Devices, Inc. Virtual memory system
US6185629B1 (en) 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5642501A (en) 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
US5897640A (en) 1994-08-08 1999-04-27 Microsoft Corporation Method and system of associating, synchronizing and reconciling computer files in an operating system
JPH10507566A (ja) 1994-10-18 1998-07-21 アイオメガ コーポレイション ディスクカートリッジの検出方法および装置
JPH08137634A (ja) 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
EP0806015A4 (en) 1995-01-23 2003-09-03 Compaq Computer Corp SYSTEM FOR CONSERVING THE INTEGRITY OF A DATABASE
JP3426385B2 (ja) 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
US5897660A (en) 1995-04-07 1999-04-27 Intel Corporation Method for managing free physical pages that reduces trashing to improve system performance
US6078925A (en) 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US5917723A (en) 1995-05-22 1999-06-29 Lsi Logic Corporation Method and apparatus for transferring data between two devices with reduced microprocessor overhead
US5608892A (en) 1995-06-09 1997-03-04 Alantec Corporation Active cache for a microprocessor
US5720029A (en) 1995-07-25 1998-02-17 International Business Machines Corporation Asynchronously shadowing record updates in a remote copy session using track arrays
US5809280A (en) 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive ahead FIFO with LRU replacement
US5717954A (en) 1995-10-13 1998-02-10 Compaq Computer Corporation Locked exchange FIFO
US5754782A (en) 1995-12-04 1998-05-19 International Business Machines Corporation System and method for backing up and restoring groupware documents
US5754888A (en) 1996-01-18 1998-05-19 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment
US5806074A (en) 1996-03-19 1998-09-08 Oracle Corporation Configurable conflict resolution in a computer implemented distributed database
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US5832515A (en) 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
US6321234B1 (en) 1996-09-18 2001-11-20 Sybase, Inc. Database server system with improved methods for logging transactions
GB2317722B (en) 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
GB2317720A (en) 1996-09-30 1998-04-01 Nokia Mobile Phones Ltd Managing Flash memory
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
JPH10177563A (ja) 1996-12-17 1998-06-30 Mitsubishi Electric Corp フラッシュメモリ内蔵マイクロコンピュータ
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US6345000B1 (en) 1997-04-16 2002-02-05 Sandisk Corporation Flash memory permitting simultaneous read/write and erase operations in a single memory array
US5943692A (en) 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
US5897638A (en) 1997-06-16 1999-04-27 Ab Initio Software Corporation Parallel virtual file system
US6148368A (en) 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6240414B1 (en) 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6189071B1 (en) 1997-10-06 2001-02-13 Emc Corporation Method for maximizing sequential output in a disk array storage device
US6108004A (en) 1997-10-21 2000-08-22 International Business Machines Corporation GUI guide for data mining
FR2770952B1 (fr) 1997-11-12 2000-01-21 Adl Systeme Sa Dispositif de tele-ecriture
US6560702B1 (en) 1997-12-10 2003-05-06 Phoenix Technologies Ltd. Method and apparatus for execution of an application during computer pre-boot operation
US6098075A (en) 1997-12-16 2000-08-01 International Business Machines Corporation Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6018746A (en) 1997-12-23 2000-01-25 Unisys Corporation System and method for managing recovery information in a transaction processing system
US6006291A (en) 1997-12-31 1999-12-21 Intel Corporation High-throughput interface between a system memory controller and a peripheral device
US6205527B1 (en) 1998-02-24 2001-03-20 Adaptec, Inc. Intelligent backup and restoring system and method for implementing the same
US7007072B1 (en) 1999-07-27 2006-02-28 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US6272534B1 (en) 1998-03-04 2001-08-07 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US6959318B1 (en) 1998-03-06 2005-10-25 Intel Corporation Method of proxy-assisted predictive pre-fetching with transcoding
US6298428B1 (en) 1998-03-30 2001-10-02 International Business Machines Corporation Method and apparatus for shared persistent virtual storage on existing operating systems
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US6360330B1 (en) 1998-03-31 2002-03-19 Emc Corporation System and method for backing up data stored in multiple mirrors on a mass storage subsystem under control of a backup server
US6263342B1 (en) 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6122685A (en) 1998-05-06 2000-09-19 Emc Corporation System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed
US6314433B1 (en) 1998-06-12 2001-11-06 Hewlett-Packard Company Frame-based heroic data recovery
FR2780178B1 (fr) 1998-06-18 2001-08-10 Inst Nat Rech Inf Automat Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine
US6425057B1 (en) 1998-08-27 2002-07-23 Hewlett-Packard Company Caching protocol method and system based on request frequency and relative storage duration
US6714935B1 (en) 1998-09-21 2004-03-30 Microsoft Corporation Management of non-persistent data in a persistent database
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6519597B1 (en) 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6249841B1 (en) 1998-12-03 2001-06-19 Ramtron International Corporation Integrated circuit memory device and method incorporating flash and ferroelectric random access memory arrays
US6338056B1 (en) 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6378043B1 (en) 1998-12-31 2002-04-23 Oracle Corporation Reward based cache management
US6640278B1 (en) 1999-03-25 2003-10-28 Dell Products L.P. Method for configuration and management of storage resources in a storage network
US6401093B1 (en) 1999-03-31 2002-06-04 International Business Machines Corporation Cross file system caching and synchronization
US6295578B1 (en) 1999-04-09 2001-09-25 Compaq Computer Corporation Cascaded removable media data storage system
US6237065B1 (en) 1999-05-14 2001-05-22 Hewlett-Packard Company Preemptive replacement strategy for a caching dynamic translator
US6317806B1 (en) 1999-05-20 2001-11-13 International Business Machines Corporation Static queue and index queue for storing values identifying static queue locations
US6381605B1 (en) 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets
US6370534B1 (en) 1999-06-01 2002-04-09 Pliant Technologies, Inc. Blocking techniques for data storage
TW479194B (en) 1999-06-18 2002-03-11 Phoenix Tech Ltd Method and apparatus for execution of an application during computer pre-boot operation
US6438750B1 (en) 1999-06-18 2002-08-20 Phoenix Technologies Ltd. Determining loading time of an operating system
US6199195B1 (en) 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
JP3812928B2 (ja) 1999-07-14 2006-08-23 株式会社日立製作所 外部記憶装置及び情報処理システム
US6513051B1 (en) 1999-07-16 2003-01-28 Microsoft Corporation Method and system for backing up and restoring files stored in a single instance store
US6311232B1 (en) 1999-07-29 2001-10-30 Compaq Computer Corporation Method and apparatus for configuring storage devices
US6542904B2 (en) 1999-07-30 2003-04-01 International Business Machines Corporation Method and system for efficiently providing maintenance activity on a relational database that is utilized within a processing system
JP3239335B2 (ja) 1999-08-18 2001-12-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 電気的接続用構造体の形成方法およびはんだ転写用基板
JP2001067258A (ja) 1999-08-25 2001-03-16 Mitsubishi Electric Corp フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法
US6370541B1 (en) 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6751658B1 (en) 1999-10-18 2004-06-15 Apple Computer, Inc. Providing a reliable operating system for clients of a net-booted environment
US6338126B1 (en) 1999-12-06 2002-01-08 Legato Systems, Inc. Crash recovery without complete remirror
WO2001044948A1 (en) 1999-12-17 2001-06-21 Koninklijke Philips Electronics N.V. Data processor with cache
JP3562419B2 (ja) 2000-02-01 2004-09-08 日本電気株式会社 電子交換機
US6556983B1 (en) 2000-01-12 2003-04-29 Microsoft Corporation Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space
US6366996B1 (en) 2000-01-24 2002-04-02 Pmc-Sierra, Inc. Page memory management in non time critical data buffering applications
US6694336B1 (en) 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
AU2001233131A1 (en) 2000-02-02 2001-08-14 Sony Electronics Inc. System and method for effectively utilizing a cache memory in an electronic device
JP4131894B2 (ja) 2000-02-29 2008-08-13 株式会社東芝 ランダムディスクライトに好適なディスク制御機構
JP4078010B2 (ja) 2000-03-03 2008-04-23 株式会社日立グローバルストレージテクノロジーズ 磁気ディスク装置及び情報記録方法
US6633978B1 (en) 2000-03-31 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for restoring computer resources
US6718361B1 (en) 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
US6820088B1 (en) 2000-04-10 2004-11-16 Research In Motion Limited System and method for synchronizing data records between multiple databases
US7421541B2 (en) * 2000-05-12 2008-09-02 Oracle International Corporation Version management of cached permissions metadata
WO2001088720A2 (en) 2000-05-15 2001-11-22 Superspeed Software, Inc. System and method for high-speed substitute cache
US6671699B1 (en) 2000-05-20 2003-12-30 Equipe Communications Corporation Shared database usage in network devices
US6715016B1 (en) 2000-06-01 2004-03-30 Hitachi, Ltd. Multiple operating system control method
JP3705731B2 (ja) 2000-06-05 2005-10-12 富士通株式会社 入出力制御装置
US7412369B1 (en) 2000-06-09 2008-08-12 Stmicroelectronics, Inc. System and method for designing and optimizing the memory of an embedded processing system
TW576966B (en) 2000-06-23 2004-02-21 Intel Corp Non-volatile cache integrated with mass storage device
US6557077B1 (en) 2000-07-07 2003-04-29 Lsi Logic Corporation Transportable memory apparatus and associated methods of initializing a computer system having the same
US6928521B1 (en) * 2000-08-01 2005-08-09 International Business Machines Corporation Method, system, and data structures for using metadata in updating data in a storage device
US6418510B1 (en) 2000-09-14 2002-07-09 International Business Machines Corporation Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD)
US6725342B1 (en) 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US6434682B1 (en) 2000-09-28 2002-08-13 International Business Machines Corporation Data management system with shortcut migration via efficient automatic reconnection to previously migrated copy
US7043524B2 (en) 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6999956B2 (en) 2000-11-16 2006-02-14 Ward Mullins Dynamic object-driven database manipulation and mapping system
US6629198B2 (en) 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
US7178100B2 (en) 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US6871271B2 (en) 2000-12-21 2005-03-22 Emc Corporation Incrementally restoring a mass storage device to a prior state
US6651141B2 (en) 2000-12-29 2003-11-18 Intel Corporation System and method for populating cache servers with popular media contents
US6546472B2 (en) 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
US6877081B2 (en) 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6918022B2 (en) 2001-02-28 2005-07-12 Intel Corporation Memory space organization
JP2002259186A (ja) 2001-03-06 2002-09-13 Hitachi Ltd Tree構造型インデクスの整合性チェック処理方法およびプログラムおよび装置
US6877111B2 (en) 2001-03-26 2005-04-05 Sun Microsystems, Inc. Method and apparatus for managing replicated and migration capable session state for a Java platform
US6996660B1 (en) 2001-04-09 2006-02-07 Matrix Semiconductor, Inc. Memory device and method for storing and reading data in a write-once memory array
US6584034B1 (en) 2001-04-23 2003-06-24 Aplus Flash Technology Inc. Flash memory array structure suitable for multiple simultaneous operations
US6961723B2 (en) 2001-05-04 2005-11-01 Sun Microsystems, Inc. System and method for determining relevancy of query responses in a distributed network search mechanism
US6717763B2 (en) 2001-05-16 2004-04-06 Hitachi Global Storage Technologies, Netherlands B.V. Power savings method and apparatus for disk drives
JP2002342037A (ja) 2001-05-22 2002-11-29 Fujitsu Ltd ディスク装置
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US6697818B2 (en) 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
US6922765B2 (en) 2001-06-21 2005-07-26 International Business Machines Corporation Method of allocating physical memory space having pinned and non-pinned regions
US6772178B2 (en) 2001-07-27 2004-08-03 Sun Microsystems, Inc. Method and apparatus for managing remote data replication in a distributed computer system
US6742097B2 (en) 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US6769050B1 (en) 2001-09-10 2004-07-27 Rambus Inc. Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules
JP3822081B2 (ja) 2001-09-28 2006-09-13 東京エレクトロンデバイス株式会社 データ書込装置、データ書込制御方法及びプログラム
JP4093741B2 (ja) 2001-10-03 2008-06-04 シャープ株式会社 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置
US6636942B2 (en) 2001-10-05 2003-10-21 International Business Machines Corporation Storage structure for storing formatted data on a random access medium
US6944757B2 (en) 2001-10-16 2005-09-13 Dell Products L.P. Method for allowing CD removal when booting embedded OS from a CD-ROM device
EP1304620A1 (en) 2001-10-17 2003-04-23 Texas Instruments Incorporated Cache with selective write allocation
US20030110357A1 (en) 2001-11-14 2003-06-12 Nguyen Phillip V. Weight based disk cache replacement method
US6687158B2 (en) 2001-12-21 2004-02-03 Fujitsu Limited Gapless programming for a NAND type flash memory
JP2003196032A (ja) 2001-12-26 2003-07-11 Nec Corp ストレージ装置のライトキャッシュ制御方法及びストレージ装置
US20030154314A1 (en) 2002-02-08 2003-08-14 I/O Integrity, Inc. Redirecting local disk traffic to network attached storage
US6782453B2 (en) 2002-02-12 2004-08-24 Hewlett-Packard Development Company, L.P. Storing data in memory
US6771536B2 (en) 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
JP4299555B2 (ja) * 2002-03-15 2009-07-22 富士通株式会社 キャッシュ制御プログラム
US7136966B2 (en) 2002-03-18 2006-11-14 Lsi Logic Corporation Method and apparatus for using a solid state disk device as a storage controller cache
US20040044776A1 (en) 2002-03-22 2004-03-04 International Business Machines Corporation Peer to peer file sharing system using common protocols
US7065627B2 (en) 2002-03-25 2006-06-20 International Business Machines Corporation Method and system for providing an event driven image for a boot record
JP4229626B2 (ja) 2002-03-26 2009-02-25 富士通株式会社 ファイル管理システム
US6820180B2 (en) 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
US6966006B2 (en) 2002-05-09 2005-11-15 International Business Machines Corporation Adaptive startup policy for accelerating multi-disk array spin-up
US6898609B2 (en) 2002-05-10 2005-05-24 Douglas W. Kerwin Database scattering system
US7062675B1 (en) 2002-06-25 2006-06-13 Emc Corporation Data storage cache system shutdown scheme
US7065527B2 (en) 2002-06-26 2006-06-20 Microsoft Corporation Systems and methods of optimizing metadata publishing system updates by alternating databases
US7017037B2 (en) 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
US6941310B2 (en) 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
EP1527392B1 (en) 2002-07-23 2011-11-16 Research In Motion Limited Data store management system and method for wireless devices
JP2004054845A (ja) 2002-07-24 2004-02-19 Sony Corp データ管理装置
JP4026753B2 (ja) 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
NZ520786A (en) 2002-08-14 2005-06-24 Daniel James Oaeconnell Method of booting a computer system using a memory image of the post boot content of the system RAM memory
US7043610B2 (en) 2002-08-19 2006-05-09 Aristos Logic Corporation System and method for maintaining cache coherency without external controller intervention
FI20021620A (fi) 2002-09-10 2004-03-11 Nokia Corp Muistirakenne, järjestelmä ja elektroniikkalaite sekä menetelmä muistipiirin yhteydessä
US20040078508A1 (en) * 2002-10-02 2004-04-22 Rivard William G. System and method for high performance data storage and retrieval
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7284149B1 (en) 2002-10-16 2007-10-16 Ken Scott Fisher Intermittent connection protection for external computer devices
US20040088481A1 (en) 2002-11-04 2004-05-06 Garney John I. Using non-volatile memories for disk caching
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US7502791B2 (en) 2002-11-26 2009-03-10 Norsync Technology A/S Database constraint enforcer
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US7003620B2 (en) 2002-11-26 2006-02-21 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US7039765B1 (en) 2002-12-19 2006-05-02 Hewlett-Packard Development Company, L.P. Techniques for cache memory management using read and write operations
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
KR100504696B1 (ko) 2003-02-26 2005-08-03 삼성전자주식회사 블록 소거/프로그램 정보를 저장하기 위한 상태 셀들의어레이를 포함한 낸드 플래시 메모리 장치
JP2004272324A (ja) 2003-03-05 2004-09-30 Nec Corp ディスクアレイ装置
US7505958B2 (en) 2004-09-30 2009-03-17 International Business Machines Corporation Metadata management for a data abstraction model
US20050286855A1 (en) 2003-04-25 2005-12-29 Matsushita Electric Industrial Co., Ltd. Data recording apparatus
US7296043B2 (en) 2003-05-30 2007-11-13 Microsoft Corporation Memory file size adjustment
US7139933B2 (en) 2003-06-20 2006-11-21 International Business Machines Corporation Preserving cache data against cluster reboot
US7299379B2 (en) 2003-06-27 2007-11-20 Intel Corporation Maintaining cache integrity by recording write addresses in a log
JP4090400B2 (ja) 2003-07-24 2008-05-28 株式会社日立製作所 ストレージシステム
US7068575B2 (en) 2003-07-30 2006-06-27 Microsoft Corporation High speed optical disc recording
US6977842B2 (en) 2003-09-16 2005-12-20 Micron Technology, Inc. Boosted substrate/tub programming for flash memories
US7366866B2 (en) 2003-10-30 2008-04-29 Hewlett-Packard Development Company, L.P. Block size allocation in copy operations
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
WO2005057400A1 (ja) 2003-12-09 2005-06-23 Matsushita Electric Industrial Co., Ltd. 電子装置、その制御方法、ホスト装置及びその制御方法
US7130962B2 (en) 2003-12-18 2006-10-31 Intel Corporation Writing cache lines on a disk drive
JP2005191413A (ja) 2003-12-26 2005-07-14 Toshiba Corp 不揮発性半導体記憶装置
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US8458488B2 (en) 2003-12-31 2013-06-04 International Business Machines Corporation Method and system for diagnosing operation of tamper-resistant software
US20050145923A1 (en) 2004-01-06 2005-07-07 Chiou-Feng Chen NAND flash memory with enhanced program and erase performance, and fabrication process
US6993618B2 (en) 2004-01-15 2006-01-31 Super Talent Electronics, Inc. Dual-mode flash storage exchanger that transfers flash-card data to a removable USB flash key-drive with or without a PC host
US7127549B2 (en) 2004-02-04 2006-10-24 Sandisk Corporation Disk acceleration using first and second storage devices
KR100564613B1 (ko) 2004-02-25 2006-03-29 삼성전자주식회사 플래시 메모리 및 광 드라이브의 펌웨어 모듈 동적 로딩동작 방법
US7421562B2 (en) 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US20050204091A1 (en) 2004-03-11 2005-09-15 Kilbuck Kevin M. Non-volatile memory with synchronous DRAM interface
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7143120B2 (en) 2004-05-03 2006-11-28 Microsoft Corporation Systems and methods for automated maintenance and repair of database and file systems
US7366740B2 (en) 2004-05-03 2008-04-29 Microsoft Corporation Systems and methods for automatic maintenance and repair of enitites in a data model
JP4392601B2 (ja) 2004-05-07 2010-01-06 パナソニック株式会社 データアクセス装置および記録媒体
US7231497B2 (en) 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
US20060010293A1 (en) * 2004-07-09 2006-01-12 Schnapp Michael G Cache for file system used in storage system
CN1266229C (zh) 2004-08-10 2006-07-26 汕头市龙华珠光颜料有限公司 一种随角异色的多层变色颜料及其生产方法
US7171532B2 (en) 2004-08-30 2007-01-30 Hitachi, Ltd. Method and system for data lifecycle management in an external storage linkage environment
JP4192129B2 (ja) 2004-09-13 2008-12-03 株式会社東芝 メモリ管理装置
US20060075185A1 (en) 2004-10-06 2006-04-06 Dell Products L.P. Method for caching data and power conservation in an information handling system
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US20060106889A1 (en) 2004-11-12 2006-05-18 Mannby Claes-Fredrik U Method, system, and program for managing revisions to a file
JP4689247B2 (ja) 2004-11-19 2011-05-25 キヤノン株式会社 カメラ及びその制御方法
KR100643287B1 (ko) 2004-11-19 2006-11-10 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
US20060136664A1 (en) 2004-12-16 2006-06-22 Trika Sanjeev N Method, apparatus and system for disk caching in a dual boot environment
US7480654B2 (en) 2004-12-20 2009-01-20 International Business Machines Corporation Achieving cache consistency while allowing concurrent changes to metadata
US7480761B2 (en) 2005-01-10 2009-01-20 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
KR100670010B1 (ko) 2005-02-03 2007-01-19 삼성전자주식회사 하이브리드 브로드캐스트 암호화 방법
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US8812781B2 (en) 2005-04-19 2014-08-19 Hewlett-Packard Development Company, L.P. External state cache for computer processor
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7516277B2 (en) 2005-04-28 2009-04-07 Sap Ag Cache monitoring using shared memory
US20060277359A1 (en) 2005-06-06 2006-12-07 Faber Robert W Blank memory location detection mechanism
US7523256B2 (en) 2005-06-15 2009-04-21 Bea Systems, Inc. System and method for scheduling disk writes in an application server of transactional environment
JP4833595B2 (ja) 2005-06-30 2011-12-07 大和ハウス工業株式会社 脱臭機能を備えたシューズボックス
US7640398B2 (en) 2005-07-11 2009-12-29 Atmel Corporation High-speed interface for high-density flash with two levels of pipelined cache
US7634516B2 (en) 2005-08-17 2009-12-15 International Business Machines Corporation Maintaining an aggregate including active files in a storage pool in a random access medium
US7409524B2 (en) 2005-08-17 2008-08-05 Hewlett-Packard Development Company, L.P. System and method for responding to TLB misses
US7533215B2 (en) 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US7395401B2 (en) 2005-09-30 2008-07-01 Sigmatel, Inc. System and methods for accessing solid-state memory devices
US7409537B2 (en) 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US20070150966A1 (en) 2005-12-22 2007-06-28 Kirschner Wesley A Method and apparatus for maintaining a secure software boundary
US7451353B2 (en) 2005-12-23 2008-11-11 Intel Corporation Cache disassociation detection
US7627713B2 (en) 2005-12-29 2009-12-01 Intel Corporation Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility
US20070207800A1 (en) 2006-02-17 2007-09-06 Daley Robert C Diagnostics And Monitoring Services In A Mobile Network For A Mobile Device
JP2007233896A (ja) 2006-03-03 2007-09-13 Hitachi Ltd ストレージ装置及びその制御方法
ATE488009T1 (de) 2006-03-31 2010-11-15 Mosaid Technologies Inc Flash-speichersystem-steuerverfahren
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7512739B2 (en) * 2006-07-05 2009-03-31 International Business Machines Corporation Updating a node-based cache LRU tree
US7818701B1 (en) 2006-12-22 2010-10-19 Cypress Semiconductor Corporation Memory controller with variable zone size
US20080172519A1 (en) 2007-01-11 2008-07-17 Sandisk Il Ltd. Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
TWI417722B (zh) * 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
US7945734B2 (en) 2007-08-10 2011-05-17 Eastman Kodak Company Removable storage device with code to allow change detection
US8190652B2 (en) 2007-12-06 2012-05-29 Intel Corporation Achieving coherence between dynamically optimized code and original code
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8082384B2 (en) 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
US8275970B2 (en) 2008-05-15 2012-09-25 Microsoft Corp. Optimizing write traffic to a disk
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
EP3075677B8 (en) 2014-06-02 2022-10-26 TR Holdings Inc. Capped container

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6535949B1 (en) * 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6539456B2 (en) * 1999-10-13 2003-03-25 Intel Corporation Hardware acceleration of boot-up utilizing a non-volatile disk cache
US20020083275A1 (en) * 2000-12-25 2002-06-27 Shinichi Kawamoto Cache coherent control system
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller

Also Published As

Publication number Publication date
US20100070747A1 (en) 2010-03-18
WO2010056571A2 (en) 2010-05-20
EP2353081A2 (en) 2011-08-10
WO2010056571A3 (en) 2010-07-29
US8135914B2 (en) 2012-03-13
US20120173824A1 (en) 2012-07-05
JP2012508932A (ja) 2012-04-12
EP2353081A4 (en) 2012-06-27
US20110314202A1 (en) 2011-12-22
ES2663701T3 (es) 2018-04-16
EP2353081B1 (en) 2017-12-27
CN102216899A (zh) 2011-10-12
US8489815B2 (en) 2013-07-16
CN102216899B (zh) 2016-12-07
TW201019110A (en) 2010-05-16
US8032707B2 (en) 2011-10-04

Similar Documents

Publication Publication Date Title
TWI471726B (zh) 快取資料與元資料之管理
US10387313B2 (en) Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US9354857B2 (en) System and method to update firmware on a hybrid drive
EP2745228B1 (en) Secure recovery apparatus and method
TWI465906B (zh) 用以執行無原子元資料之電力故障安全快取的技術
US20150039837A1 (en) System and method for tiered caching and storage allocation
US20080091874A1 (en) System and method for loading programs from hdd independent of operating system
US20110167049A1 (en) File system management techniques for computing environments and systems
US11210173B2 (en) Fault tolerant device upgrade
JP2010186341A (ja) メモリシステム
CN111198832B (zh) 一种处理方法和电子设备
JP7202030B2 (ja) 記憶装置内の悪意のある動作を検出するためのモジュールおよび方法
US11573912B2 (en) Memory device management system, memory device management method, and non-transitory computer-readable recording medium erasing data stored in memory device if a value of a first key and second key are different
CN102117213B (zh) 使用独立磁盘冗余阵列的计算机系统的开机方法
JP2010257481A (ja) データ記憶システムおよびキャッシュデータの一貫性保証方法
WO2011089700A1 (ja) 情報処理装置、ドライブ制御プログラムおよびドライブ制御方法
JP2001100938A (ja) ディスクアレイ装置のデータ書込方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees