TWI649652B - Fast and safe data storage device and method - Google Patents
Fast and safe data storage device and method Download PDFInfo
- Publication number
- TWI649652B TWI649652B TW106146455A TW106146455A TWI649652B TW I649652 B TWI649652 B TW I649652B TW 106146455 A TW106146455 A TW 106146455A TW 106146455 A TW106146455 A TW 106146455A TW I649652 B TWI649652 B TW I649652B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- data cache
- user data
- user
- data storage
- Prior art date
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一種資料貯存裝置有一個資料快取記憶體模組及一個NAND快閃記憶體。該NAND快閃記憶體有一個資料快取記憶體映像及一個使用者資料貯存區。該資料快取記憶體模組,經第一路徑,連接該資料快取記憶體映像,並經第二路徑,連接該使用者資料貯存區。該資料快取記憶模組從一個主機接收寫入指令及使用者資料,並以間接寫入模式,把一份使用者資料寫入該使用者資料貯存區,且以直接寫入模式,把另一份使用者資料寫入該資料快取記憶體映像。若有使用者資料,在被寫入該使用者資料貯存區以前,從該資料快取記憶模組遺失,則於再開機後,複製該資料快取記憶體映像貯存的那份使用者資料,並把它寫入該資料快取記憶體模組。
Description
本發明有關於資料貯存裝置,特別是有關於間接寫入(writ-back)模式及直接寫入(write-through)模式於NAND快閃記憶體的應用。
直接寫入模式(write-through mode)在某些情況中是必需的。然而,與間接寫入模式(write-back mode)比,直接寫入模式的速度低。與間接寫入模式比,直接寫入模式的物理空間利用率(physical space utilization)也低,這是因為髒緩衝區(dirty buffer)的位元組大小可能小於一頁的大小。
固態硬碟(SSD)有NAND快閃記憶體,且通常配置資料快取(cache)記憶體。這類固態硬碟通常採用間接寫入模式。亦即,資料先被寫入資料快取記憶體,然後,當資料快取記憶體裡的資料達到NAND快閃記憶體的一頁的尺寸的整數倍,這些資料從資料快取記憶體被下刷(flushed)到NAND快閃記憶體。然而,若在這些資料從資料快取記憶體被下刷到NAND快閃記憶體的過程中停電,則這些資料全然消失。在某些情況中,不能容忍資料損失,只好採用直接寫入模式。亦即,對每一個寫入指令,固態硬碟把資料下刷到NAND快閃記憶體。
支援直接寫入模式的一般方案是對每個寫入指
令都寫到NAND快閃記憶體。這種方案犧牲效能與物理空間利用率來換取安全性。其固態硬碟吞吐量低(因為它用寫入一頁的時間寫較少的資料)、寫放大率高(因為固態硬碟為了要達成直接寫入,常常在每一頁填充無意義資料)。終生寫入的資料總量大幅降低。
有鑑於上述習知技藝之問題,本發明之目的在於提供一種快速且安全的資料貯存裝置。
為達成上述目的,該資料貯存裝置有一個資料快取記憶體模組及一個NAND快閃記憶體。該NAND快閃記憶體有一個資料快取記憶體映像及一個使用者資料貯存區。該資料快取記憶體模組,經第一路徑,連接該資料快取記憶體映像,並經第二路徑,連接該使用者資料貯存區。該資料快取記憶模組從一個主機接收寫入指令及使用者資料,並以間接寫入模式,把一份使用者資料寫入該使用者資料貯存區,且以直接寫入模式,把另一份使用者資料寫入該資料快取記憶體映像。若有使用者資料,在被寫入該使用者資料貯存區以前,從該資料快取記憶模組遺失,則於再開機後,複製該資料快取記憶體映像貯存的那份使用者資料,並把它寫入該資料快取記憶體模組。
12‧‧‧資料貯存裝置
14‧‧‧資料快取記憶體模組
16‧‧‧快閃記憶體轉換層
18‧‧‧NAND快閃記憶體模組
20‧‧‧資料快取記憶體
22‧‧‧資料快取記憶體映像
24‧‧‧使用者資料貯存區
S10‧‧‧啟動資料貯存裝置
S12‧‧‧資料快取記憶體映像的寫入指標是否大於資料快取記憶體映像的下刷指標?
S14‧‧‧把資料快取記憶體映像下刷指標的下一頁的使用者資料到最後一頁的使用者資料寫入資料快取記憶體,並設定這些使用者資料的LAA
S16‧‧‧主機是否下達寫入指令?
S18‧‧‧傳送至使用者資料至資料快取記憶體
S20‧‧‧資料快取記憶體映像所剩的空間是否小於寫入指令的大小?
S22‧‧‧把所有的髒資料從資料快取記憶體下刷至使用者資料貯存區
S24‧‧‧選擇NAND快閃記憶體的另一個部分當作資料快取記憶體映像
S26‧‧‧把使用者資料寫入資料快取記憶體映像
S28‧‧‧告訴主機已完成寫入指令
S30‧‧‧髒資料的位元組數量是否達到預先被規劃的下刷標準?
S32‧‧‧把髒資料從資料快取記憶體,經快閃記憶體轉換層,下刷至使用者資料貯存區
S34‧‧‧更新在記憶體裡的下刷指標
S36‧‧‧結束
第1圖是本發明的較佳實施例的資料貯存裝置的方塊圖。
第2圖是第1圖所示的資料貯存裝置執行的方法的一部
分的流程圖。
第3圖是第1圖所示的資料貯存裝置執行的方法的另一部分的流程圖。
如第1圖所示,一個主機10連接一個資料貯存裝置12。依本發明的一個較佳實施例,資料貯存裝置12是一個固態硬碟。資料貯存裝置12有一個資料快取記憶體模組14、一個快閃記憶體轉換層(flash translation layer:FTL)16及一個NAND快閃記憶體模組18。
資料快取記憶體模組14有至少一個資料快取記憶體20及其他元件(未被標示)。
NAND快閃記憶體模組18有一個資料快取記憶體映像22及一個使用者資料貯存區24。具體而言,NAND快閃記憶體模組18被規劃為兩個區,一區是資料快取記憶體映像22,另一區是使用者資料貯存區24。資料快取記憶體映像22被規劃為SLC模式,並因此快速運作。資料快取記憶體映像22的容量不大,以免資料貯存裝置12的成本過高。使用者資料貯存區24被規劃為MLC或TLC模式,並因此僅需低成本。
資料快取記憶體模組14透過兩條路徑連接NAND快閃記憶體模組18。資料快取記憶體模組14經第一條路徑連接資料快取記憶體映像22。資料快取記憶體模組14經第二條路徑連接使用者資料貯存區24。具體而言,資料快取記憶體模組14的資料快取記憶體20經第二條路徑連接使用者資料貯存區24。快閃記憶體轉換層16在第二條路徑中。亦即,資料快取記憶體模組14的資料快取記憶體20,經快閃記憶體轉換層16,連
接使用者資料貯存區24。
運作時,主機10把寫入指令及使用者資料傳到資料貯存裝置12的資料快取記憶體模組14。資料快取記憶體模組14把一份使用者資料寫入資料快取記憶體20,並把另一份使用者資料寫入資料快取記憶體映像22。這兩份使用者資料的內容及寫的順序都相同。把使用者資料,從資料快取記憶體模組14,寫入資料快取記憶體映像22,是用直接寫入模式。把使用者資料從資料快取記憶體20,經快閃記憶體轉換層16,寫入使用者資料貯存區24,是用間接寫入模式。具體而言,使用者資料被暫存在資料快取記憶體20。當在資料快取記憶體20的使用者資料達到NAND快閃記憶體模組18的一頁的一個整數倍,就把使用者資料,從資料快取記憶體20,經快閃記憶體轉換層16,傳到使用者資料貯存區24。若還有使用者資料,未從資料快取記憶體20,被傳到使用者資料貯存區24時,即發生斷電,則於再開機後,複製資料快取記憶體映像22貯存的那份使用者資料,並把它傳到資料快取記憶體20。然後,資料貯存裝置12繼續上述程式。因此,資料貯存裝置12的運作快速且安全。快速是因為把使用者資料從資料快取記憶體20,經快閃記憶體轉換層16,寫入使用者資料貯存區24,是用間接寫入模式。安全是因為把一份使用者資料暫存在資料快取記憶體映像22裡,並可在需要時予以複製,且寫入資料快取記憶體20,而恢復正常運作,不損失任何使用者資料。
以下,將參考圖2及圖3,藉一項實施例,資料貯存裝置12的運作方法。
在S10,啟動資料貯存裝置12。
在S12,每次資料貯存裝置12被啟動,它就判斷
資料快取記憶體映像22的最後一頁使用者資料的寫入指標(“write pointer”)是否大於下刷指標(“flush pointer”)。每一頁使用者資料都有元資料(“metadata”)。依本發明,規劃元資料而使其有寫入指標及下刷指標。資料貯存裝置12找到被寫入資料快取記憶體映像22的最後一頁使用者資料,並判斷其元資料的寫入指標的實體分配地址(“physical allocation address”)是否大於下刷指標的實體分配地址。若寫入指標大於下刷指標,則流程走到S14,否則流程走到S16。
在S14,把下刷指標所代表的一頁的下一頁到最後一頁載入資料快取記憶體模組14,並設定這些資料的邏輯分配地址(“logical allocation address”)。舉例而言,寫入指標是7,且下刷指標是4。寫入指標是7,表示被暫存在資料快取記憶體映像22的使用者資料是第一頁到第七頁。下刷指標是4,表示已從資料快取記憶體20被下刷到使用者資料貯存區24的使用者資料是第一頁到第四頁。使用者資料的第五頁到第七頁尚未被貯存於使用者資料貯存區24。於是,把使用者資料的第五頁到第七頁,從資料快取記憶體映像22,傳到資料快取記憶體模組14。然後,資料快取記憶體模組14經內部管道,把使用者資料的第五頁到第七頁,傳到資料快取記憶體20。
在S16,判斷主機10是否下達寫入指令。若主機10下達寫入指令,則流程走到S18,否則流程走到S38。
在S18,主機10把使用者資料傳到資料快取模組14。
在S20,判斷資料快取記憶體映像22所剩的貯存空間是否小於寫入指令的大小。若資料快取記憶體映像22所
剩的貯存空間小於寫入指令的大小,則流程走到S22,否則流程走到S26。
在S22,把所有髒資料從資料快取記憶體20下刷至使用者資料貯存區24。
在S24,選擇NAND快閃記憶體模組18的另一個部分當作資料快取記憶體映像22。
在S26,把使用者資料,從資料快取模組14,寫入資料快取記憶體映像22。
在S28,告訴主機10,資料貯存裝置12已完成寫入指令。
在S30,判斷在資料快取記憶體20的髒資料(“dirty data”,就是被暫存在資料快取記憶體20且尚未被貯存於使用者資料貯存區24的使用者資料)的位元組是否達到預先被規劃的下刷門檻。若髒資料的位元組達到下刷門檻,則流程走到S32,否則流程走到S38。
在S32,把髒資料,從資料快取記憶體模組14,經快閃記憶體轉換層16,下刷到使用者資料貯存區24。
在S34,更新下刷指標。
在S36,流程結束。此時,若主機10下達另一個寫入指令,則將重複上述流程一次。
在上述流程中,把資料寫入使用者資料貯存區24是用間接寫入模式。因用間接寫入模式,故可用較低價的MLC或TLC當作使用者資料貯存區24。若寫資料的過程中不停電,則用間接寫入模式,把資料從資料快取記憶體模組14寫入使用者資料貯存區24。
把資料寫入資料快取記憶體映像22是用直接寫
入模式。雖用直接寫入模式,但因資料快取記憶體映像22是SLC模式,所以寫資料的速度不低。資料快取記憶體映像22被視為暫時貯存區。若寫資料的過程中不停電,則不從資料快取記憶體映像22取資料。若寫資料的過程中停電,則把資料從資料快取記憶體映像22寫入使用者資料貯存區24。
本發明的資料貯存裝置12有若干特徵。第一,固態硬碟12把主機10的每一個寫入指令的資料寫入資料快取記憶體映像22,且資料快取記憶體映像22是NAND快閃記憶體模組18的一個部分。
第二,資料快取記憶體映像22被預先規劃成SLC模式。
第三,資料貯存裝置12把下刷指標記在被寫入資料快取記憶體映像22的每一頁使用者資料的備用區。下刷指標代表被下刷的資料在資料快取記憶體映像22裡的最後實體分配地址。
第四,把髒資料從資料快取記憶體20下刷到使用者資料貯存區24,所依的順序被稱為「下刷順序」。把相同資料寫入資料快取記憶體映像22,所依的順序被稱為「寫入順序」。下刷順序與寫入順序須相同。
第五,每一次把髒資料從資料快取記憶體模組14裡下刷到使用者資料貯存區24,資料貯存裝置12就更新下刷指標。
第六,每一次資料貯存裝置12被啟動,它判斷與被寫入資料快取記憶體映像22的資料相同的資料是否已全被沖入使用者資料貯存區24。若否,則它須重建那些從資料快取記憶體20遺失,且尚未被下刷到使用者資料貯存區24的資
料。
第七,資料快取記憶體20為這些被載入的資料設定邏輯地址資訊。
以上所述說明,僅為本發明的較佳實施方式而已,意在明確本發明的特徵,非用以限定本發明實施例的範圍,本技術領域內的一般技術人員根據本發明所作的均等變化,以及本領域內技術人員熟知的改變,仍應屬本發明涵蓋的範圍。
Claims (10)
- 一種資料貯存裝置,包括:一個NAND快閃記憶體模組(18),有一個資料快取記憶體映像(22)及一個使用者資料貯存區(24);及一個資料快取記憶體模組(14),經第一路徑,連接該資料快取記憶體映像(22),並經第二路徑,連接該使用者資料貯存區(24),其中該資料快取記憶模組(14)從一個主機(10)接收寫入指令及使用者資料,並以間接寫入模式,把一份使用者資料寫入該使用者資料貯存區(24),且以直接寫入模式,把同一份使用者資料寫入該資料快取記憶體映像(22),其中若有使用者資料,在被寫入該使用者資料貯存區(24)以前,從該資料快取記憶模組(14)遺失,則於再開機後,複製該資料快取記憶體映像(22)貯存的那份使用者資料,並把它寫入該資料快取記憶體模組(14)。
- 如申請專利範圍第1項所述之資料貯存裝置,其中該資料快取記憶體模組(14)包括一個資料快取記憶體(20),貯存一份使用者資料,並在使用者資料的量達到一個預先被設定的標準時,把使用者資料下刷到該使用者資料貯存區(24)。
- 如申請專利範圍第2項所述之資料貯存裝置,還包括一個快閃記憶體轉換層(16),居中連接該資料快取記憶體(20)與該使用者資料貯存區(24)。
- 一種資料貯存方法,其包括以下步驟: (a)提供一個資料貯存裝置(12),其中該資料貯存裝置(12)有一個資料快取記憶體模組(14)及一個NAND快閃記憶體模組(18),其中該資料快取記憶體模組(14)有一個資料快取記憶體(20);(b)取該NAND快閃記憶體模組(18)的一個部分當作一個資料快取記憶體映像(22);(c)取該NAND快閃記憶體模組(18)的另一個部分當作一個使用者資料貯存區(24);(d)把寫入指令及使用者資料,從一個主機(10),傳到該資料快取記憶模組(14);(e)以間接寫入模式,把一份使用者資料,從該資料快取記憶模組(14),寫入該使用者資料貯存區(24);(f)以直接寫入模式,把同一份使用者資料,從該資料快取記憶模組(14),寫入該資料快取記憶體映像(22);(g)判斷有或無使用者資料,在被寫入該使用者資料貯存區(24)以前,從該資料快取記憶模組(14)遺失;及(h)若有,則於再開機後,複製該資料快取記憶體映像(22)貯存的那份使用者資料,並把它寫入該資料快取記憶體模組(14)。
- 如申請專利範圍第4項所述之資料貯存方法,其中步驟(g)包括以下步驟:(g1)為在該資料快取記憶體映像(22)裡的使用者資料的每一頁設定一個寫入指標; (g2)為在該資料快取記憶體映像(22)裡的使用者資料的每一頁設定一個下刷指標;(g3)判斷資該寫入指標是否大於該下刷指標;及(g4)每次把使用者資料,從該資料快取記憶模組(14),寫入該使用者資料貯存區(24)以後,更新該下刷指標。
- 如申請專利範圍第4項所述之資料貯存方法,其中步驟(h)包括以下步驟:(h1)把該下刷指標代表的那頁的下一頁到最後一頁,從該資料快取記憶體映像(22),寫入該資料快取記憶體模組(20);及(h2)設定這些使用者資料的邏輯分配地址。
- 如申請專利範圍第4項所述之資料貯存方法,其中步驟(d)包括以下步驟:(d1)判斷主機(10)是否下達寫入指令;(d2)若是,則把使用者資料,從主機(10)傳到該資料快取記憶模組(14);及(d3)若否,則結束作業。
- 如申請專利範圍第4項所述之資料貯存方法,其中步驟(f)包括以下步驟:(f1)判斷快取記憶體映像(22)所剩的貯存空間是否小於指令的大小;(f2)若是,則進行以下步驟: (f2A)把使用者資料,從該資料快取記憶模組(20),下刷到該使用者資料貯存器(24);及(f2B)取該NAND快閃記憶體模組(18)的另一部分當作資料快取記憶體映像(22)。
- 如申請專利範圍第4項所述之資料貯存方法,把使用者資料,從該資料快取記憶模組(14),寫入該資料快取記憶體映像(22)的步驟還有以下步驟:告訴該主機(10),已把使用者資料,從該資料快取記憶模組(14),寫入該資料快取記憶體映像(22)。
- 如申請專利範圍第5項所述之資料貯存方法,其中步驟(e)包括以下步驟:(e1)判斷髒資料的量是否達到一個預設值;及(e2)若是,則把使用者資料,從該資料快取記憶模組(14),下刷到該使用者資料貯存區(24),並更新該下刷指標。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106146455A TWI649652B (zh) | 2017-12-29 | 2017-12-29 | Fast and safe data storage device and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106146455A TWI649652B (zh) | 2017-12-29 | 2017-12-29 | Fast and safe data storage device and method |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI649652B true TWI649652B (zh) | 2019-02-01 |
TW201931122A TW201931122A (zh) | 2019-08-01 |
Family
ID=66213506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106146455A TWI649652B (zh) | 2017-12-29 | 2017-12-29 | Fast and safe data storage device and method |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI649652B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050278486A1 (en) * | 2004-06-15 | 2005-12-15 | Trika Sanjeev N | Merging write-back and write-through cache policies |
CN101923499A (zh) * | 2009-03-30 | 2010-12-22 | 英特尔公司 | 执行防电源故障高速缓存而无需原子元数据的技术 |
TW201546712A (zh) * | 2011-10-26 | 2015-12-16 | Hewlett Packard Development Co | 分段式快取記憶體 |
TW201624491A (zh) * | 2014-12-29 | 2016-07-01 | 東芝股份有限公司 | 資訊處理裝置及非暫態電腦可讀取記錄媒體 |
-
2017
- 2017-12-29 TW TW106146455A patent/TWI649652B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050278486A1 (en) * | 2004-06-15 | 2005-12-15 | Trika Sanjeev N | Merging write-back and write-through cache policies |
CN101923499A (zh) * | 2009-03-30 | 2010-12-22 | 英特尔公司 | 执行防电源故障高速缓存而无需原子元数据的技术 |
TW201546712A (zh) * | 2011-10-26 | 2015-12-16 | Hewlett Packard Development Co | 分段式快取記憶體 |
TW201624491A (zh) * | 2014-12-29 | 2016-07-01 | 東芝股份有限公司 | 資訊處理裝置及非暫態電腦可讀取記錄媒體 |
Also Published As
Publication number | Publication date |
---|---|
TW201931122A (zh) | 2019-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8037232B2 (en) | Data protection method for power failure and controller using the same | |
US8621139B2 (en) | Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same | |
US8909986B2 (en) | Data storing method for solid state drive to preserve data integrity after power failure | |
US8001317B2 (en) | Data writing method for non-volatile memory and controller using the same | |
US8312554B2 (en) | Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
US20120173795A1 (en) | Solid state drive with low write amplification | |
US8510502B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US20100011154A1 (en) | Data accessing method for flash memory and storage system and controller using the same | |
KR20160027805A (ko) | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 | |
JPWO2005103903A1 (ja) | 不揮発性記憶システム | |
US9122583B2 (en) | Memory controller and memory storage device and data writing method | |
US8037236B2 (en) | Flash memory writing method and storage system and controller using the same | |
US20100318726A1 (en) | Memory system and memory system managing method | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
JP4843222B2 (ja) | 半導体記憶装置の制御方法、メモリカード、及びホスト機器 | |
US9378130B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
JP5592478B2 (ja) | 不揮発性記憶装置及びメモリコントローラ | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US9501397B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
KR101369408B1 (ko) | 스토리지 시스템 및 이의 데이터 전송 방법 | |
US8589620B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
TWI649652B (zh) | Fast and safe data storage device and method | |
CN108255437B (zh) | 数据贮存装置及方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |