TW201826267A - 數據儲存方法及其裝置 - Google Patents
數據儲存方法及其裝置 Download PDFInfo
- Publication number
- TW201826267A TW201826267A TW106101289A TW106101289A TW201826267A TW 201826267 A TW201826267 A TW 201826267A TW 106101289 A TW106101289 A TW 106101289A TW 106101289 A TW106101289 A TW 106101289A TW 201826267 A TW201826267 A TW 201826267A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- list
- data
- memory block
- memory blocks
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種數據儲存方法,用以將數據儲存在非揮發性記憶體之一組記憶體區塊中。個別保存數據之一部分的每一記憶體區塊係依據是否保存該部分之一最新版本而分類為有效或無效,以及依據是否該部分屬於數據之一連貫快照而分類為錨定或非錨定。當供電中止後恢復,根據記憶體區塊為有效或無效以及錨定或非錨定的分類,從記憶體區塊重建數據之連貫快照。
Description
本發明係有關於一種數據儲存技術,特別是有關於一種保持非揮發性記憶體中數據集一致性的方法以及系統。
有各種系統以及應用將數據儲存非揮發性記憶體非揮發性記憶體。在一些應用中,數據中的特定部分係定義為一數據集,其全體應該保持一致,儘管發生故障或是供電中止。在本技術領域中,各種保持數據集一致性的技術已經是習知技術。
例如,美國專利號6,769,053,其公開內容通過引用併入本文,其描述一種儲存資料結構的技術,其能用於將一組數據持久儲存。在一態樣中,此方法將該數據組的至少一最舊版本以及一第一標籤儲存在資料結構中的一第一記憶區,而第一標籤係用以識別該最舊版本。在此資料結構中,此方法更包含將此組數據之最近更新版本以及一第二標籤儲存在資料結構中的一第二記憶區,而第二標籤係用以識別最近更新版本。如果在此資料結構中該組數據有至少兩個最近更新版本,則此方法亦可解除分配第一記憶區。
再者,美國專利號8,874,515,其公開內容通過引用併入本文,其描述一種在非揮發性記憶體中進行數據版本控制的技術:產生與一資料物件相關的一物件鑰,使用此物件鑰產生一物件表內的索引,版本數量係結合資料物件儲存在非揮發性記憶體中。一物件鏈結清單係用以儲存此物件鑰以及此資料物件在非揮發性記憶體之位置資訊,而與資料物件相關的的紀錄係產生在該物件表中。此記錄包含一索引、此物件鏈結清單之一參考、以及此版本數量。此索引是根據物件鑰所產生的。
根據一實施例,本發明係提供一種數據儲存方法,其包含:在一非揮發性記憶體之一組記憶體區塊中儲存一數據;每一記憶體區塊係個別儲存此數據之一部分,並依據每一記憶體區塊是否儲存部分之最新版本,將每一記憶體區塊分類成有效或無效,以及依據該部分是否屬於數據之連貫快照,將每一該記憶體區塊分類成錨定(anchor)或是非錨定;當從供電中止發生後恢復,根據此些記憶體區塊之有效或無效之分類以及錨定或非錨定之分類,從該些記憶體區塊重建該數據之此連貫快照。
在一些實施例中,本發明之方法進一步包含:將一更新部分寫入一新的記憶體區塊,以更新儲存在既有記憶體區塊之該數據之該部分,並將該新的記憶體區塊分類成有效,以及將該既有記憶體區塊重新分類為無效。在一些實施例中,本發明之方法進一步包含:在一第一階段,從該組記憶體區塊中識別出分類為有效以及非錨定的該記憶體區塊,並將所識別出的該記憶體區塊重新分類為錨定,在一第二階段,針對在該第一階段中識別出的該記憶體區塊,找出保存該記憶體區塊所保存之該部分的一先前版本的一相對應的記憶體區塊,並將所找出的該相對應的記憶體區塊重新分類為非錨定。
在一些實施例中,重建連貫快照的步驟包含:建構一第一列表以及一第二列表,該第一列表包含分類為錨定以及有效的該記憶體區塊,而該第二列表包含分類為錨定以及無效的該記憶體區塊;根據該第一列表以及該第二列表重建該連貫快照。在一實施例中,重建連貫快照的步驟包含:如果從該第一列表紀錄的該些記憶體區塊可取得整個數據,則從該第一列表紀錄的該些記憶體區塊中提取該數據。
在一實施例中,如果該第一列表紀錄的該些記憶體區塊未包含整個該數據,則對於該數據之每一部分,重建該連貫快照之步驟包含:如果該部分可從該第二列表上該些記憶體區塊取得,從該第二列表提取該部分;以及如果該部分無從該第二列表上該些記憶體區塊取得,從該第一列表提取該部分。在一示例性實施例,對每一記憶體區塊分類的步驟包含:對每一該記憶體區塊設定一有效/無效旗標以及一錨定/非錨定旗標。
根據另一實施例,本發明提供一種數據儲存裝置,其包含一介面以及一處理器。此介面係用於與一非揮發性記憶體通訊,非揮發性記憶體包含一組記憶體區塊。此處理器係用於將數據儲存在該組記憶體區塊內,對該組記憶體區塊之分別保存該數據之一部分的每一記憶體區塊分類,依據記憶體區塊是否保存此部分之一最新版本而將記憶體區塊分類成有效或無效,以及依據該部分是否屬於該數據之一連貫快照而將該記憶體區塊分類成錨定或非錨定,以及當從一供電中止發生後恢復時,該處理器根據該些記憶體區塊之有效或無效分類以及錨定或非錨定分類,從此些記憶體區塊重建該數據之該連貫快照。
根據另一實施例,本發明再提供一種數據儲存裝置,其包含一非揮發性記憶體以及一記憶體控制器。非揮發性記憶體包含一組記憶體區塊。此記憶體控制器係用於將數據儲存在該組記憶體區塊內,對此組記憶體區塊之分別保存該數據之一部分的每一記憶體區塊進行分類,依據記憶體區塊是否保存該部分之一最新版本而將該記憶體區塊分類成有效或無效,以及依據該部分是否屬於該數據之一連貫快照而將該記憶體區塊分類成錨定或非錨定,以及當從一供電中止發生後恢復時,該處理器根據該些記憶體區塊之有效或無效分類以及錨定或非錨定分類,從此些記憶體區塊重建該數據之該連貫快照。
本發明之上述及其他特徵及優勢將藉由參照附圖詳細說明其例示性實施例而變得更顯而易知。
概述
各種數據處理應用都所需其記憶體系統具有數據集一致性。在此類應用中,數據之特定本體係定義為一數據集,而記憶體系統需要產生以及保存"快照",其為系統可恢復之數據集之版本。
根據本發明之實施例,提供一種支持快閃記憶體或其他非揮發性記憶體中數據集一致性的改善方法以及系統。在一些實施例中,記憶體系統產生一連貫快照,使得供電中止後恢復供電,可恢復快照。
原則上,可以透過複製整個數據集至一專用記憶體位置以產生快照。不過,此解決方案非常耗費時間。本發明之方法能高效率地創建快照並使用記憶體區塊之分類(例如設定旗標)來重建快照。
在一示例性實施例,記憶體控制器管理非揮發性記憶體中的數據儲存,而非揮發性記憶體包含複數個記憶體區塊。記憶體控制器將保存數據之個別部分的每一記憶體區塊進行分類,依據記憶體區塊是否保存數據之該部分之最新版本而分類為"有效"或"無效"。記憶體控制器亦依據儲存在記憶體區塊之數據之該部分是否屬於數據之連貫快照而分類為"錨定"或"非錨定"。當供電中止後恢復供電,記憶體控制器根據記憶體區塊之有效/無效以及錨定/非錨定之分類從記憶體區塊重建該連貫快照。
在一些實施例中,對每一記憶體區塊維持一"有效"旗標以及一"錨定"旗標來實現分類。本發明之方法係使用此分類來產生以及重建快照。本發明之方法係使用旗標操作對快照進行排他性管理,而不須為了產生快照而實際複製數據。因此,本發明公開的技術產生的延遲非常小。
系統說明
第1圖是本發明之一實施例之記憶體系統20之一方塊示意圖,記憶體系統20係為了主機24而儲存數據在一非揮發性記憶體。記憶體系統20可包含一安全記憶卡、一固態硬碟(SSD)、或其他可在非揮發性記憶體中儲存數據之任何類型的系統。在一示例性實施例,記憶體系統20係在單一元件封裝單元內執行,例如系統單晶片(SoC)或是多晶片封裝(MCP)。
記憶體系統20包含一非揮發性記憶體(其在本示例中為一快閃記憶體28)以及一記憶體控制器32。此記憶體控制器20管理快閃記憶體28的數據儲存以及數據取回,並與主機24透過匯流排或其他介面36進行通訊。在本示例中,記憶體控制器32包含一主機介面50用以與主機24通訊、一記憶體介面54用以與快閃記憶體28通訊、以及一處理器52用以實施本發明所述之各種記憶體管理方法。
快閃記憶體28,其可包含至少一記憶體元件或晶粒,係包含複數個記憶體區塊40。每一記憶體區塊40包含一快閃記憶體單元陣列,其用以非揮發性地儲存數據。記憶體區塊40亦稱為實體區塊。
通常,在快閃記憶體中數據無法即地更新,在重新編寫之前多個記憶體單元必須先抹除,而此抹除動作是在記憶體區塊單元內進行。當主機24更新特定數據時,記憶體控制器32通常將新版本的數據寫入記憶體之一新實體位置中,並將儲存先前版本之數據的先前實體位置無效。記憶體控制器亦實施一垃圾蒐集處理,其將儲存有無效數據的實體區塊抹除,藉此釋放此些記憶體區塊以儲存新的數據。以下將解釋,如果已經被無效的記憶體區塊被定義為錨定時(例如,其為數據集之一連貫快照之一部分),記憶體控制器如何避免抹除此記憶體區塊。
上述記憶體管理過程對此主機經常是通透的,所以記憶體控制器32通常採用邏輯轉實體位址映射。對向主機24,記憶體控制器32呈現邏輯位址之連續且單調的位址空間,而此邏輯位址對於實體儲存位置之內部管理是不可知的。此記憶體控制器將邏輯位址轉移至個別實體位址,而此數據係依據實體位址實體儲存在快閃記憶體28。當主機更新數據時,數據之實體位址改變但邏輯位址保持相同,而此記憶體控制器因此更新邏輯轉實體位址映射。
在本發明之此實施例中,記憶體控制器32如何使用本方法以支持數據集一致性以及快照將於以下段落說明。為了管理快照,記憶體控制器32之處理器52使用兩個旗標來標記每一實體記憶體區塊,即一個有效旗標(VALID)44以及一錨定旗標(ANCHOR)48。由於快閃記憶體無法即地(in-place)複寫,為了使得記憶體控制器能設定及/或重設快閃記憶體,所以每一旗標可包含一個以上的位元。
一般來說,如果此記憶體區塊40儲存最新版本之數據,則處理器52將其標記為有效,反之為無效。如果此記憶體區塊40所儲存的數據是此數據集之最近快照之一部位,處理器52將其標記為"錨定(anchor)";反之則為"非錨定(non-anchor)"。以下將說明如何將上述旗標用於產生此數據集之連貫快照的方法以及當供電中止結束後如何使用連貫快照恢復數據集。
第1圖所示之記憶體系統20是一範例性組態,其繪示內容僅是為了概念清楚起見。在其他實施例可使用其他任何合適的系統組態。例如,不限於使用快閃記憶體,可使用其他任何合適類型的非揮發性記憶體,例如其他類型之固態非揮發性記憶體或硬碟(HDD)記憶體。
在其他實施例中,例如,記憶體控制器32可對小於整個實體快閃記憶體區塊的記憶體單元(其有時亦稱為抹除區塊)進行分類以及設定旗標。在本發明的內容以及請求項中,此類較小記憶體單元亦稱為"記憶體區塊"。”
記憶體系統20之不同元件可使用任何合適硬體來實現,例如特殊應用積體電路(ASIC)或場可編程閘陣列(FPGA)。在一些實施例中,記憶體系統20之ㄧ些元件可使用軟體來實現、或是用硬體以及軟體元件之組合來實現,例如記憶體控制器32之處理器52之元件。
在一些實施例中,處理器52包含一通用可程式化處理器,其可用軟體編程以實現本發明所述之功能。例如,此軟體可透過網路,以電子訊號形式下載至此處理器;或者,此軟體係儲存在非暫時性有形媒體上,例如磁性、光學或電子記憶體。
使用記憶體區塊之"有效"以及"錨定"分類在供電中止時保持數據集一致性
在一些實施例中,主機24可看到記憶體控制器32之一邏輯位址空間,其佔有K個邏輯區塊。實體記憶體區塊40之實際數量是N,而K<(N/2)。K個邏輯區塊係稱為一數據集,而記憶體控制器32係用以創建此數據集以及管理數據集之連貫快照。主機看不到的實體記憶體尺寸係用於記憶體內部的各種管理任務,例如快照管理。
為清楚起見,以下說明係參酌將整個邏輯位址空間視為一數據集。不過,在其他實施例中,記憶體控制器32可支持較小的數據集,其僅包含邏輯位址空間之部分子集合。
在一些實施例中,記憶體控制器32之處理器52係指定每一邏輯區塊有一個別區塊索引(block index)。當數個實體區塊儲存相同邏輯區塊之不同版本時(只有一個版本是有效的),此些所有實體區塊係指定成相同區塊索引。此區塊索引可與區塊之邏輯位址(其為主機所知)一致,或是兩者可為不同的索引。
在一些實施例中,在數據儲存期間,處理器52對各個實體記憶體區塊40設定有效旗標44以及錨定旗標48。如果記憶體區塊40儲存此數據之最新版本,則此區塊之旗標44被設為"有效"。如果記憶體區塊40儲存的是數據之較舊的、過時的版本,則此區塊之旗標44被設為"無效"。如果儲存在區塊40內的數據是數據集之最近快照的一部位,則此記憶體區塊40之旗標48被設為"錨定"。如果記憶體區塊40內儲存的數據不是數據集之最近快照的一部位,則記憶體區塊40之旗標48被設為"非錨定"。
應注意的是,在實作上有效/無效以及錨定/非錨定的各種組合都是可能的。例如,如果快照產生後數據才更新,則實體記憶體區塊40儲存的是此數據之最新版本但不是此快照之一部分,則會分類為有效但非錨定。同樣地,實體區塊40可能是快照之一部位,但儲存的是數據之過時版本,則其分類為無效但錨定。
在一些實施例中,當主機24更新一特定邏輯區塊,處理器52將邏輯區塊之更新版本寫入一新的實體區塊,並將此新實體區塊指定至與舊的實體區塊相同的區塊索引,並將新實體區塊分類為有效,而將舊的實體區塊分類為無效。
在一些實施例中,記憶體控制器32提供一"提交"指令,主機24可使用"提交"指令指示記憶體控制器產生此數據集之連貫快照。當從供電中止後恢復,記憶體控制器32能透過恢復此快照以一致性地重建此數據集。
第2圖係為本發明之執行提交指令之方法之一實施例之流程圖。在方法的一開始,在提交接收步驟60,記憶體控制器32之處理器52透過主機介面50從主機24接收一提交指令。
回應此提交指令,記憶體控制器應該在各個實體記憶體區塊中保持此數據之最新版本,以及維持一最新版本作為快照,其可用於後續時間之後的數據恢復。在一些實施例中,在記憶體控制器確認此提交指令之前,此主機將避免發布新的寫入指令。但此機制並非必要的。
在本示例中,處理器52以兩階段程序執行此提交指令。在階段I步驟64,處理器52識別所有實體區塊中有標記成"有效"以及"非錨定"的實體區塊,並將其重新分類為"錨定"。
在階段II步驟68,對於在步驟64中被識別且重新分類的每一記憶體區塊,處理器52尋找其他記憶體區塊有儲存上述記憶體區塊之先前版本(保存有先前版本的會與保存有效版本的區塊有相同區塊索引)。處理器52相所找到的記憶體區塊重新分類為"非錨定"。
階段I以及II完成後,在確認步驟72,處理器52向主機24確認提交指令已經完成。
在此步驟中,標記為“錨定”的記憶體區塊群係共同保存此數據集之最新產生的快照。此快照是連貫的,其反映出在此時間點沒有寫入操作的干擾下整個數據集之真正狀態。
從此之後,此數據的最新更新將造成新的記憶體區塊被寫入而設定為"有效",此記憶體區塊之一部分,其屬於快照,將會變成"無效"。然而,只要沒有接收到新的提交指令,則屬於快照的記憶體區塊將保持被分類為"錨定"。如果記憶體系統20經歷供電中止而後恢復供電,則處理器52使用分類"錨定"的記憶體區塊來重建此連貫快照。
通常,當使用此技術時,記憶體控制器32執行的任何"垃圾蒐集"程序應該避免抹除"錨定"的記憶體區塊,即使其被標記成"無效"。
第3圖為本發明之從供電中止恢復的方法之一實施例之流程圖。第3圖所示之方法為供電中止後的上電程序的一部分,通常以記憶體控制器32之處理器52來實現。所謂用語"供電中止",其包含無意的供電中止,例如因為故障而供電中止,以及有意的停止供電。
此方法的一開始,處理器52建構實體記憶體區塊40之兩個列表,在一第一列表建構步驟80中,處理器52建構第一列表,其記錄被分類成"錨定"以及"有效"的記憶體區塊。在一第二列表建構步驟84中,處理器52建構第二列表,其記錄被分類成"錨定"以及"無效"的記憶體區塊。
在全數據檢查步驟88中,處理器52檢查是否第一列表包含全部的記憶體區塊,其包含整個數據集。例如,處理器52可檢查是否第一列表包含全部的區塊索引。
如果第一列表確實包含整個數據集,則在單一列表選擇步驟92中,處理器52根據第一列表使用全部的記憶體區塊作為快照。
反之,如果第一列表未能包含整個數據集,則在雙列表選擇步驟96中,處理器52從兩個列表中選擇用於快照的記憶體區塊。對每一區塊索引而言,如果第二列表包含的記憶體區塊具有此區塊索引,則處理器52將此記憶體區塊增加至快照。此第二列表未包含具有此區塊索引的記憶體區塊,則處理器52從第一列表找出具有此區塊索引的記憶體區塊,並將其增加至快照。此選擇機制能確保選擇用於恢復快照的記憶體區塊將包含此數據之所有最新版本,此數據係保持一致,即定義為"錨定"。
範例性的虛擬碼
下列的虛擬碼係呈現本發明之方法之示例性實施例。在一些實施例中,除此"錨定/非錨定"以及"有效/無效"之外,記憶體區塊也可分類成其他類型。
在此範例性虛擬碼中,程式用語“committed(已提交)"以及"ex_committed(提交前)"係分別對應"錨定"以及"非錨定"。例如,程式操作"mark p.committed"係表示記憶體區塊p被分類為"錨定(anchor)".程式操作"mark p.ex_committed"表示記憶體區塊P未分類成"錨定"而是,例如,分類成"未錨定"。一記憶體頁(page)被標記成"committed"以及"ex_committed"時,其視為"未錨定"。
除此之外,此虛擬碼使用下列術語:
"Dirty"表示記憶體區塊未抹除。
"有效"的解釋與前面段落的說明相同。
"anchor"的解釋與前面段落的說明相同,亦稱為"committed"。
"Index"係表示此記憶體頁的邏輯位址,與上述段落的說明相同。
"Obsolete"表示記憶體頁被分類成"invalid",例如,其未被分類為"valid"。
"Start_peer_erase"表示當進行頁對頁的複製時,為了能辨別數據來源以及複製目的地(在供電中止之情況下),數據來源被分類為start_peer_erase。
記憶體區塊之摘要包含額外資訊,其能用於記憶體區塊內的數據致能。
Init flash (once in life cycle)
for each page p from the initial K active pages
Mark p.dirty p.valid p.anchor
p.index = its index (0..K-1)
pagesTable[ p.index ] = p
(pagesTable always points to the active pages.)
rollPage from oldPage to newPage obsoleting pageToObsolete
(Usually pageToObsolete == oldPage. if reconstruct an obsolete anchor, first obsolete the current valid page.)
if pageToObsolete.committed
mark pageToObsolete.ex_committed
mark pageToObsolete.obsolete
simple case: obsolete old page
mark newPage.dirty
mark oldPage.start_peer_erase
copy data
mark newPage.valid
mark oldPage.obsolete
commit()
for each page p in pagesTable
if !p.committed
mark p.committed
(At this stage we have the new set of anchors
even in case of power-fail)
// Mark the old anchors
for each page (.committed && !.ex_committed && .obsolete)
mark the page as ex_committed
powerUp()
// Step A: collect candidates
for each page p {
if digest( p ) is OK {
if the p.valid & !p.obsolete
pagesTable[ p.index ] = p
if p.committed && !p.ex_commited && p.obsolete
(i.e. p is an "old anchor")
anchors[ p.index ] = p
}
}
// Step B: choose set of pages
if all the pages in pagesTable are (.committed && !.ex_committed)
do nothing – pagesTable[] is the actual set
else
for each page p in anchors[]
rollPage p to a new page q obsoleting pagesTable[ p.index ]
mark q.committed
pagesTable[ q.index ] = q
for each page p in anchors[]
mark p.ex_committed
除此之外,當各種所繪示及討論的元件被放置在不同的位置時,可以理解的是,各種元件的相對位置可以改變,且同時此處仍保有上述所提及的功能。可以設想到的是,各種組合、具體特徵和實施例之子集合係可以被進行,且此子集合仍然落入本說明書的範圍之內。各種特徵和所公開的實施例可以彼此結合或進行取代,而所有這些修改和改變都將落入本發明之所附權利要求所限定的範圍之內。
20‧‧‧記憶體系統
24‧‧‧主機
28‧‧‧快閃記憶體
32‧‧‧記憶體控制器
36‧‧‧介面
40‧‧‧記憶體區塊
44‧‧‧有效旗標
48‧‧‧錨定旗標
50‧‧‧主機介面
52‧‧‧處理器
54‧‧‧記憶體介面
60、64、68、72‧‧‧步驟流程
80、84、88、92、96‧‧‧步驟流程
第1圖是本發明之可支持數據集一致性之記憶體系統之一實施例之方塊示意圖。
第2圖是本發明之執行提交指令以產生快照之方法的一實施例之執行流程圖。
第3圖是本發明之從供電中止發生後還原數據以保持數據集一致性之方法的一實施例之流程圖。
Claims (21)
- 一種數據儲存的方法,包含: 在一非揮發性記憶體之複數個記憶體區塊中儲存一數據,其中每一該複數個記憶體區塊係個別儲存該數據之一部分; 依據每一該複數個記憶體區塊是否儲存該部分之最新版本,將每一該複數個記憶體區塊分類成有效或無效,以及依據該部分是否屬於該數據之一連貫快照,將每一該複數個記憶體區塊分類成錨定(anchor)或是非錨定;以及 當從一供電中止發生後恢復,根據該複數個記憶體區塊之有效或無效之分類以及錨定或非錨定之分類,從該複數個記憶體區塊重建該數據之該連貫快照。
- 如申請專利範圍第1項所述之方法,更包含: 將一更新部分寫入一新的記憶體區塊,以更新儲存在既有記憶體區塊之該數據之該部分;以及 將該新的記憶體區塊分類成有效,以及將該既有記憶體區塊重新分類為無效。
- 如申請專利範圍第1項所述之方法,其中產生該連貫快照的步驟更包含: 在一第一階段,從該複數個記憶體區塊中識別出分類為有效以及非錨定的該記憶體區塊,並將所識別出的該記憶體區塊重新分類為錨定;以及 在一第二階段,針對在該第一階段中識別出的該記憶體區塊,找出保存該記憶體區塊所保存之該部分的一先前版本的一相對應的記憶體區塊,並將所找出的該相對應的記憶體區塊重新分類為非錨定。
- 如申請專利範圍第1項所述之方法,其中重建該連貫快照之步驟更包含: 建構一第一列表以及一第二列表,該第一列表包含分類為錨定以及有效的該記憶體區塊,而該第二列表包含分類為錨定以及無效的該記憶體區塊;以及 根據該第一列表以及該第二列表重建該連貫快照。
- 如申請專利範圍第4項所述之方法,其中重建該連貫快照之步驟包含: 如果從該第一列表紀錄的該複數個記憶體區塊可取得全部該數據,則從該第一列表紀錄的該複數個記憶體區塊中提取該數據。
- 如申請專利範圍第5項所述之方法,其中如果該第一列表紀錄的該些記憶體區塊未包含整個該數據,則對於該數據之每一該部分,重建該連貫快照之步驟包含: 如果該部分可從該第二列表上該些記憶體區塊取得,從該第二列表提取該部分;以及 如果該部分無從該第二列表上該些記憶體區塊取得,從該第一列表提取該部分。
- 如申請專利範圍第1項所述之方法,其中分類每一該記憶體區塊的步驟包含:對每一該複數個記憶體區塊設定一有效/無效旗標以及一錨定/非錨定旗標。
- 一種數據儲存裝置,包含: 一介面,用於與一非揮發性記憶體通訊,該非揮發性記憶體包含複數個記憶體區塊;以及 一處理器,用於將數據儲存在該複數個記憶體區塊內,對該複數個記憶體區塊之分別保存該數據之一部分的每一該複數個記憶體區塊分類,依據該記憶體區塊是否保存該部分之一最新版本而將該記憶體區塊分類成有效或無效,以及依據該部分是否屬於該數據之一連貫快照而將該記憶體區塊分類成錨定或非錨定,以及當從一供電中止發生後恢復時,該處理器根據該複數個記憶體區塊之有效或無效分類以及錨定或非錨定分類,從該複數個記憶體區塊重建該數據之該連貫快照。
- 如申請專利範圍第8項所述之數據儲存裝置,其中該處理器將一更新部分寫入一新的記憶體區塊,用於更新儲存在一既有記憶體區塊的該數據之該部分,並將該新的記憶體區塊分類為有效,以及將該既有記憶體區塊重新分類為無效。
- 如申請專利範圍第8項所述之數據儲存裝置,其中該處理器用於產生該連貫快照的動作包含: 在一第一階段,從該些記憶體區塊中識別出被分類成有效以及非錨定的該記憶體區塊,並將所識別出的該記憶體區塊重新分類為錨定;以及 在一第二階段,針對在該第一階段識別出的每一該記憶體區塊,找出保存該記憶體區塊保持之該部分之一先前版本的一相對應的記憶體區塊,並將該相對應的記憶體區塊重新分類成非錨定。
- 如申請專利範圍第8項所述之數據儲存裝置,其中該處理器用於重建該連貫快照之動作包含: 建構一第一列表以及一第二列表,該第一列表包含分類為錨定以及有效的該記憶體區塊,而該第二列表包含分類為錨定以及無效的該記憶體區塊;以及 根據該第一列表以及該第二列表重建該連貫快照。
- 如申請專利範圍第11項所述之數據儲存裝置,其中該處理器重建該連貫快照之動作包含: 如果從該第一列表紀錄的該些記憶體區塊可取得全部該數據,則從該第一列表紀錄的該些記憶體區塊中提取該數據。
- 如申請專利範圍第12項所述之數據儲存裝置,其中如果該第一列表紀錄的該些記憶體區塊未包含整個該數據,則對於該數據之每一部分,該處理器重建該連貫快照之動作包含: 如果該部分可從該第二列表上該些記憶體區塊取得,從該第二列表提取該部分;以及 如果該部分無從該第二列表上該些記憶體區塊取得,從該第一列表提取該部分。
- 如申請專利範圍第8項所述之數據儲存裝置,其中該處理器分類每一該記憶體區塊的動作包含:對每一該記憶體區塊設定一有效/無效旗標以及一錨定/非錨定旗標。
- 一種數據儲存裝置,包含: 一非揮發性記憶體,包含複數個記憶體區塊;以及 一記憶體控制器,用於將數據儲存在該複數個記憶體區塊內,對該複數個記憶體區塊之分別保存該數據之一部分的每一該複數個記憶體區塊分類,依據該記憶體區塊是否保存該部分之一最新版本而將該記憶體區塊分類成有效或無效,以及依據該部分是否屬於該數據之一連貫快照而將該記憶體區塊分類成錨定或非錨定,以及當從一供電中止發生後恢復時,該記憶體控制器根據該些記憶體區塊之有效或無效分類以及錨定或非錨定分類,從該些記憶體區塊重建該數據之該連貫快照。
- 如申請專利範圍第15項所述之數據儲存裝置,其中該記憶體控制器將一更新部分寫入一新的記憶體區塊,用於更新儲存在一既有記憶體區塊的該數據之該部分,並將該新的記憶體區塊分類為有效,以及將該既有記憶體區塊重新分類為無效。
- 如申請專利範圍第15項所述之數據儲存裝置,其中該記憶體控制器產生該連貫快照之動作包含: 在一第一階段,從該些記憶體區塊中識別出被分類成有效以及非錨定的該記憶體區塊,並將所識別出的該記憶體區塊重新分類為錨定;以及 在一第二階段,針對在該第一階段識別出的每一該記憶體區塊,找出保存該記憶體區塊保持之該部分之一先前版本的一相對應的記憶體區塊,並將該相對應的記憶體區塊重新分類成非錨定。
- 如申請專利範圍第15項所述之數據儲存裝置,其中該記憶體控制器重建該連貫快照之動作包含: 建構一第一列表以及一第二列表,該第一列表包含分類為錨定以及有效的該記憶體區塊,而該第二列表包含分類為錨定以及無效的該記憶體區塊;以及 根據該第一列表以及該第二列表重建該連貫快照。
- 如申請專利範圍第18項所述之數據儲存裝置,其中該記憶體控制器重建該連貫快照之動作包含:如果從該第一列表紀錄的該些記憶體區塊可取得全部該數據,則從該第一列表紀錄的該些記憶體區塊中提取該數據。
- 如申請專利範圍第19項所述之數據儲存裝置,其中如果該第一列表紀錄的該些記憶體區塊未包含整個該數據,則對於該數據之每一部分,重建該連貫快照之步驟包含: 如果該部分可從該第二列表上該些記憶體區塊取得,從該第二列表提取該部分;以及 如果該部分無從該第二列表上該些記憶體區塊取得,從該第一列表提取該部分。
- 如申請專利範圍第15項所述之數據儲存裝置,其中該記憶體控制器用於對每一該記憶體區塊設定一有效/無效旗標以及一錨定/非錨定旗標,以對每一該記憶體區塊分類。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106101289A TW201826267A (zh) | 2017-01-13 | 2017-01-13 | 數據儲存方法及其裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106101289A TW201826267A (zh) | 2017-01-13 | 2017-01-13 | 數據儲存方法及其裝置 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201826267A true TW201826267A (zh) | 2018-07-16 |
Family
ID=63640227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101289A TW201826267A (zh) | 2017-01-13 | 2017-01-13 | 數據儲存方法及其裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TW201826267A (zh) |
-
2017
- 2017-01-13 TW TW106101289A patent/TW201826267A/zh unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10025669B2 (en) | Maintaining data-set coherency in non-volatile memory across power interruptions | |
US11762817B2 (en) | Time sequence data management | |
US10509776B2 (en) | Time sequence data management | |
US8762661B2 (en) | System and method of managing metadata | |
CN101539891B (zh) | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 | |
US20150186224A1 (en) | Data storage device and flash memory control method | |
JP3682256B2 (ja) | ディスクアレイ装置及び同装置におけるパリティ処理方法 | |
US20160224588A1 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
WO2017113213A1 (zh) | 访问请求处理方法、装置及计算机系统 | |
JP2007012058A (ja) | フラッシュ様媒体におけるトランザクションレコードを格納するファイルシステム | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
TW201931366A (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
BR122018075830B1 (pt) | Sistema de memória, sistema de computador e meio legível por computador não-transitório | |
CN109614055B (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
US10114576B2 (en) | Storage device metadata synchronization | |
US20130111263A1 (en) | Systems and methods for recovering information from nand gates array memory systems | |
US20170017405A1 (en) | Systems and methods for improving flash-oriented file system garbage collection | |
KR101738965B1 (ko) | 가비지 컬렉션 저널링 장치 및 방법 | |
US9535799B2 (en) | Apparatus, systems, and methods for data recovery | |
CN108334275A (zh) | 数据储存方法及其装置 | |
KR20150094292A (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
US20170017406A1 (en) | Systems and methods for improving flash-oriented file system garbage collection | |
TW201826267A (zh) | 數據儲存方法及其裝置 | |
Lee et al. | RMSS: an efficient recovery management scheme on NAND flash memory based solid state disk | |
JP6864228B2 (ja) | 記憶装置および記憶装置のデータ管理方法 |