TW202328921A - 使用記憶體內日誌於非揮發性記憶裝置中的元資料管理 - Google Patents
使用記憶體內日誌於非揮發性記憶裝置中的元資料管理 Download PDFInfo
- Publication number
- TW202328921A TW202328921A TW111128984A TW111128984A TW202328921A TW 202328921 A TW202328921 A TW 202328921A TW 111128984 A TW111128984 A TW 111128984A TW 111128984 A TW111128984 A TW 111128984A TW 202328921 A TW202328921 A TW 202328921A
- Authority
- TW
- Taiwan
- Prior art keywords
- metadata
- data
- write
- list
- pages
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System (AREA)
Abstract
本文敘述的各種實施方式係有關於管理用於原子寫入操作之元資料的系統和方法,包括判定資料的元資料,將該元資料排隊在原子列表中,回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表,以及基於該邏輯資訊判定每一該寫入查找列表之非揮發性記憶體的元資料頁面之一者。
Description
本揭露大致上係有關於用於在非揮發性記憶體(NVM)裝置中元資料管理的系統、方法、及非暫態處理器可讀取媒體。
相關申請的交叉引用
本申請係與2021年八月3日提交之標題為「IN-MEMORY JOURNAL」的代理人案號 117441-0210有關,其內容以引用方式併入本文中。本申請亦與2021年八月3日提交之標題為「METHOD FOR DISCARDING GARBAGE COLLECTION DATA DURING POWER LOSS」的代理人案號 117441-0211有關,其內容以引用方式併入本文中。本申請係與2021年八月3日提交之標題為「CONDITIONAL UPDATE, DELAYED LOOKUP」的代理人案號 117441-0215有關,其內容以引用方式併入本文中。
習知固態硬碟(SSD)從主機接收寫入命令及相關聯資料,並且回應於將資料(亦稱為主機資料或使用者資料)寫入至揮發性儲存器或SSD之另一合適的暫時緩衝器來向主機確認寫入命令。SSD的控制器可將儲存在揮發性儲存器中的資料寫入至SSD之NVM(例如,快閃記憶體,諸如NAND記憶體裝置)。一旦將資料寫入NVM之實體位址完成,控制器(例如,快閃轉換層(FTL))就會更新與資料相關聯之邏輯位址和識別在例如邏輯至實體(L2P)映射資訊(其的一個實例係L2P映射表)中之實體位置的實體位址之間的映射。
元資料是指與SSD產生或使用之資料相關的資訊,用以促進和管理資料的處理(例如,讀取和寫入)。元資料的實例包括但不限於資料的L2P映射資訊(例如,L2P映射表)、資料的狀態資訊、資料的屬性資訊等。
在非頁面SSD(具有非頁面FTL)中,所有的元資料可藉由控制器經儲存在至少一動態隨機存取記憶體(DRAM)中。在這樣的SSD中並且在執行寫入命令期間,將新主機資料寫入NVM,更新映射資訊,以及計算可用空間。
在頁面SSD(具有頁面FTL)中,所有的元資料不能儲存在控制器的DRAM中,並且一些元資料係儲存在(多個)DRAM中,而其它元資料儲存在NVM裝置的元資料頁面中。換句話說,回應於寫入或讀取命令,必須從NVM裝置讀取(或「調入」)元資料片段以進行更新。在這方面,從NVM裝置讀取元資料可能會導致讀取或寫入命令的昂貴讀取等待時間。一個技術問題係可以在沒有載入元資料頁面的情況下確認寫入命令。
在分頁FTL中,通常對頁面的一小部分進行元資料更新。僅追蹤更新比保存整個頁面更有效。電力故障方案可依賴於兩個基本操作來恢復映射資訊。第一方案涉及在完全電力損失之前保存元資料。這個方案需要電容器或其他可以在主電力故障後提供備用電力的電力儲存裝置。第二方案涉及掃描使用者資料塊以在恢復電力時重建遺失的元資料。雖然第一方案通常比第二方案更穩健且更容易測試,但第一方案在硬體方面更昂貴並且具有規模限制。特別是,添加更大的超級電容器會增加硬體成本,包括額外的組件成本和額外的電路板空間。因此,形狀因素和電路板空間通常是一個重大限制。儘管在某些情況下掃描通常會降低成本,但掃描也有很大的限制,包括在多流裝置中的限制。
原子寫入是完全地執行的寫入操作,或者如果不能完全地執行,則根本不執行。原子寫入可防止由於電力故障或其他類型的中斷而無法完成的部分完成(亦稱為「撕裂」)寫入。通常,原子寫入操作可以藉由緩衝資料或替代地緩衝元資料來實現。由於寫入放大、可用空間計費問題和複雜性,緩衝資料的效率低於緩衝元資料。
在一些配置中,非暫態電腦可讀取媒體包括電腦可讀取指令,使得當由儲存裝置之至少一處理器執行時,導致處理器用以判定資料的元資料,將該元資料排隊在原子列表中,回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表,以及基於該邏輯資訊判定每一該寫入查找列表的元資料頁面之一者。
在一些配置中,該元資料包括映射資訊,該映射資訊將該邏輯資訊映射至該儲存裝置之非揮發性記憶體的實體位置,以及該資料係儲存在該非揮發性記憶體之該等實體位置中。
在一些配置中,判定該元資料包括使用該邏輯資訊基於邏輯至實體(L2P)映射表來判定該等實體位置。
在一些配置中,該處理器係經進一步導致從主機接收原子寫入命令及與該原子寫入命令相關聯的該資料,以及判定該原子提交是否已經發生。
在一些配置中,該處理器係經進一步導致使用該邏輯資訊判定該元資料組,以及將每一該元資料組移動至該等寫入查找列表之對應的一者。
在一些配置中,該處理器係經進一步導致將每一該元資料組從該等寫入查找列表之該一者移動至寫入快取列表之對應的一者,每一該寫入快取列表對應於元資料頁面之一者。
在一些配置中,該處理器係經進一步導致將每一該元資料組從該等寫入快取列表之每一者移動至該等元資料頁面之對應的一者。
在一些配置中,該原子列表、該寫入查找列表、及該寫入快取列表係儲存在記憶體內日誌。
在一些配置中,在所有的該元資料移動至該等元資料頁面之後,該原子提交已經完成。
在一些配置中,基於該邏輯資訊判定每一該寫入查找列表之該等元資料頁面之一者包括使用在該等寫入查找列表之每一者中該元資料之該邏輯資料執行一個查找操作來判定該等元資料頁面之該一者。
在一些配置中,儲存裝置包括資料頁面及元資料頁面的非揮發性記憶體以及控制器,該控制器組態以判定資料的元資料,將該元資料排隊在原子列表中,回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表,以及基於該邏輯資訊判定每一該寫入查找列表的元資料頁面之一者。
在一些配置中,該元資料包括映射資訊,該映射資訊將該邏輯資訊映射至該儲存裝置之該非揮發性記憶體之該等資料頁面的實體位置。該資料係儲存在該等資料頁面之該等實體位置中。
在一些配置中,該控制器係經進一步導致使用該邏輯資訊判定該元資料組,以及將每一該元資料組移動至該等寫入查找列表之對應的一者。
在一些配置中,該控制器係經進一步導致將每一該元資料組從該等寫入查找列表之該一者移動至寫入快取列表之對應的一者,每一該寫入快取列表對應於元資料頁面之一者。
在一些配置中,該控制器係經進一步導致將每一該元資料組從該等寫入快取列表之每一者移動至該等元資料頁面之對應的一者。
在一些配置中,該原子列表、該寫入查找列表、及該寫入快取列表係儲存在記憶體內日誌。
在一些配置中,在所有的該元資料移動至該等元資料頁面之後,該原子提交已經完成。
在一些配置中,基於該邏輯資訊判定每一該寫入查找列表之該等元資料頁面之一者包括使用在該等寫入查找列表之每一者中該元資料之該邏輯資料執行一個查找操作來判定該等元資料頁面之該一者。
在一些配置中,一種方法包括判定資料的元資料,將該元資料排隊在原子列表中,回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表,以及基於該邏輯資訊判定每一該寫入查找列表之非揮發性記憶體的元資料頁面之一者。
在一些配置中,該元資料包括映射資訊,該映射資訊將該邏輯資訊映射至該儲存裝置之非揮發性記憶體的實體位置,以及該資料係儲存在該非揮發性記憶體之該等實體位置中。
本文揭露的配置係有關於最小化回應於電力故障事件而刷新資料所需的時間以及用於最小化在電力恢復時準備好儲存裝置所需的掃描和時間的系統、方法及非暫態電腦可讀取媒體。也就是說,可以減少與電力故障事件相關的電容保持能量和準備就緒時間。此外,本文揭露的配置允許提前完成命令,並且防止從快閃記憶體載入元資料頁面以完成主機寫入命令。換句話說,可以在不需要讀取和寫入快閃記憶體的情況下實現早期命令完成。藉由實施記憶體內日誌,可以為分頁FTL達成此種改善。
圖1係根據各種配置繪示用於將資料寫入至儲存裝置100、更新與資料相關聯的元資料、回應於電力故障保留元資料更新之實例機制的方塊圖。如圖1所示,儲存裝置100包括NVM 110。在一個實例中,NVM 110包括NAND快閃記憶體裝置,NAND快閃記憶體裝置中的每一者包括一或多個晶粒。每一晶粒具有一或多個平面。每一平面具有多個方塊,並且每一方塊具有多個頁面。NVM 110具有資料頁面112a-112n,資料頁面中的每一者係儲存從主機(未圖示)接收之資料的頁面。在其中儲存裝置100係分頁SSD的實例中,NVM 110亦具有元資料頁面114a-114n。元資料頁面114a-114n中的每一者係儲存諸如但不限於資料的L2P映射資訊(例如,L2P映射表)、資料的狀態資訊、資料的屬性資訊等之元資料的頁面。NVM 110亦具有一或多個電力故障頁面/方塊116a-116n,其係NVM 110中為任何資料或元資料保留之頁面或方塊,以在電力故障的事件中使用備用電力刷新。
儲存裝置100包括用於將資料101編程為一或多個資料頁面112a-112n、使用FTL判定資料101的元資料更新102(例如,判定L2P映射資訊及其它類型的元資料)、管理記憶體內日誌120、更新載入在SRAM 130中的元資料頁面114a-114n、將記憶體內日誌120刷新為一或多個電力故障頁面/方塊116a-116n等的控制器105。控制器105使用元資料頁面快取144來保持一些元資料頁面。這些元資料頁面可包括已經更新但尚未寫入至NVM 110的元資料頁面,以及已經寫入的元資料頁面。一些數量的元資料頁面可以在SRAM 130中用於更新。元資料頁面快取144僅保持包含在NVM 140中的元資料頁面114a-114n中的完整查找表(LUT)中的一些條目,以便節省DRAM 140中的空間。元資料頁映射142係包含在DRAM 140中並且用來追蹤元資料頁面。如圖所示,DRAM 140係使用不在實施控制器105之晶片上的記憶體裝置來實施,並且SRAM 130係位於晶片上,儘管在一些配置中,SRAM和DRAM都可以位於晶片上,或控制器經配置為包括DRAM晶粒的多晶片模組。
在寫入操作中,從主機接收的資料101(例如,使用者資料、主機資料等)首先被緩衝在寫入緩衝器135中,然後被儲存在NVM 110(例如,快閃記憶體)中。控制器105為此寫入操作產生元資料更新102(例如,更新的L2P映射資訊、更新的狀態資訊及更新的屬性資訊)。類似地,控制器105為GC操作產生元資料更新102,其中儲存在NVM中的原始資料(例如,資料頁面112a-112n)是從原始實體位址(例如,原始方塊中的一個或多個頁面)複製到一個新的實體位址(例如,一個新頁面或新方塊中的頁面)。在這方面,用於GC操作的元資料更新102包括將原始資料的邏輯位址映射到新實體位址的元資料。這樣的元資料更新102可以替換儲存在對應於資料之相同邏輯位址的元資料頁面114a-114n之一(例如,元資料頁面114a)中的現有元資料。元資料更新102更新與資料101(主機資料)或儲存在資料頁面112a-112n之原始資料(用於GC)之邏輯位址相關之一些或全部的元資料,其可能僅構成元資料頁面114a的一小部分。如圖所示,元資料更新102係緩衝在記憶體內日誌120中、在元資料頁面114a的列表125a-125n之一者上。記憶體內日誌120可使用控制器105之任何合適的記憶體來實施,包括SRAM(從SRAM 130分離)或其它合適的揮發性或非揮發性記憶體裝置,諸如PCM(相變記憶體)或MRAM(磁性RAM)。
例如,記憶體內日誌120在載入元資料頁面114a之前分配寫入快取標籤(WrCacheTag)並且在當載入元資料頁面114a時使用寫入快取標籤將任何元資料更新102排隊至元資料頁面114a。寫入快取標籤識別包含在寫入緩衝器135中之資料101的元資料的元資料頁面。元資料包括諸如邏輯位址和NVM位址的欄位。為了確保一致性維護元資料更新102。具體而言,根據更新序列順序,在每一元資料頁面列表(例如,對應於元資料頁面114a的列表125a)上維護給定元資料頁面114a的元資料更新102。例如,列表125a儲存元資料頁面114a的元資料更新、列表125b儲存元資料頁面114b的元資料更新....以及列表125n儲存元資料頁面114n的元資料更新。元資料頁面114a的新的元資料更新102被添加到列表125a的末端。即使在對應的元資料頁面114a被載入到SRAM 130並被更新之後,列表125a也被維護。回應於判定將更新的元資料頁面114a編程至NVM 110中是成功的,清除對應於元資料頁面114a的列表125a。也就是說,列表125a-125n中的任何一個僅回應於判定元資料頁面114a-114n中的對應一個被寫回到NVM 110而被刪除。
此種機制改善電力故障刷新,因為不是刷新元資料頁面114a本身(其通常包含不需要更新的資料,稱為元資料更新102以外的資料),而是回應於電力故障而刷新列表125a。即,回應於電力故障,記憶體內日誌120中當前有效(當前正在使用但尚未刪除)的列表125a-125n係儲存在NVM 110中的電力故障頁面/方塊116a-116n,而不保存當前正在更新的元資料頁面114a-114n 本身(以及在分頁的元資料LUT中)。在一些實施方案中,其中在記憶體內日誌120在NVM中實施的情況下,可以將記憶體內日誌120保存到/從NVM 110中單獨的電力故障頁面/方塊116a-116n的保存/恢復省略。
回應於通電回恢復,藉由將記憶體內日誌120從相關的電力故障頁面/方塊116a-116n讀取記憶體內日誌120的記憶體來恢復記憶體內日誌120。然後在列表125a-125n中列出的任何元資料更新可以被重放並應用於元資料頁面114a-114n。因此,列表125a-125n記錄在電力故障之前尚未保存到NVM 110的未提交更新。這有效地將回應於電力故障而保存的元資料減少至最小,使得僅保存差異(對元資料頁面114a-114n的更新),假定先驗是可能保存的最小量的元資料。此種機制亦減少了在電力故障之後準備好儲存裝置的時間,假定只需要恢復列表,並且儲存裝置100可以恢復到它在電力故障之前停止的地方。除了電力故障/恢復情況之外,記憶體內日誌120同樣可以被實施以簡化或優化任何低電力或待機操作。
圖2係根據各種配置繪示之包括使用記憶體內日誌之元資料更新之寫入操作之實例方法200的流程圖。參考圖1-2,方法200可以由控制器105執行。
在210,控制器105從主機或另一個合適的實體接收寫入命令和與寫入命令相關聯的資料101。寫入命令至少識別與資料101相關聯的邏輯位址(例如,邏輯方塊位址(LBA))。在一些實例中,資料101係在寫入緩衝器135中接收,寫入緩衝器可為電力損失保護的緩衝器。在220,控制器105判定資料101的元資料。例如,控制器105的FTL可以判定NVM 110中資料101之新的實體位址,並將與資料101相關聯的邏輯位址映射到新的實體位址。更新的L2P映射(將邏輯位址映射到新的實體位址)是元資料更新102的實例。諸如寫入之時間的其它實例係元資料更新102的另一實例。換句話說,控制器105為元資料頁面114a產生元資料更新102。
在一些實施方式中,在225,控制器105回應於在220判定元資料而分配寫入快取標籤。在230,控制器105將元資料更新102儲存為用於元資料頁面114a之列表125a中的條目。如本文所述,列表125a-125n中的每一者儲存元資料頁面114a-114n之對應的一者的元資料更新。元資料頁面114a-114n中的每一者儲存一或多個邏輯位址、一或多個實體位址、一或多個資料頁面112a-112n、一或多個方塊、一或多個晶粒等的元資料。
根據接收210的資料和寫入命令的更新順序添加列表125a中的條目。例如,寫入命令的元資料更新及在時間之前接收的第一邏輯位址的第一資料(基於接收相同的相關聯順序)被添加至列表125a的末端,並且隨後的寫入命令的元資料更新和稍後接收到的第二邏輯位址的第二資料(基於相關聯的時間戳)稍後被添加到列表125a的末端。在其中第一和第二邏輯位址係相同的實例中,發生重疊寫入。在這方面,隨後接收的第二資料的元資料在先前接收的第一資料的元資料已經被更新之後被更新,從而確保重疊寫入中的資料一致性。
在230,控制器105藉由例如向主機發送確認訊息來向主機確認寫入命令。在一些配置中,控制器105回應於在210判定資料101被安全地儲存在電力損失保護緩衝器(例如,寫入緩衝器135)中並且在230元資料更新102作為條目儲存在記憶體內日誌120中的適當列表125a,向主機確認指示寫入操作完成的寫入命令。
在250,控制器105將資料101編程至NVM 110。具體而言,控制器105可以將資料101編程至由FTL判定至資料頁面112a-112n中的一或多個實體位址。在一些實例中,可回應於FTL判定實體位址來執行250,並且可以與230、240及260中的一或多個同時執行。
在260,控制器105執行元資料更新。例如,控制器105將包含需要被更新之元資料的元資料頁面114a讀取至SRAM 130中,並且將具有元資料更新102之更新的元資料頁面114a連同元資料頁面114a上的其餘未改變的元資料資訊一起編程至NVM 110中,作為更新的元資料頁面114a。元資料頁面映射142包含給定的邏輯位址之更新的元資料頁面114a的位置。如所描述的,在步驟225中分配寫入快取標籤,記憶體內日誌120在將元資料頁面114a讀入分頁的元資料130之前使用這個寫入快取標籤,並且在元資料頁面114a被讀取和載入之前、期間和之後,使用寫入快取標籤將任何元資料更新102排隊到元資料頁面114a。在一些實例中,可回應於在230將元資料更新102儲存在列表125a中而執行260,並且可以與240和250中的一或多個同時執行。
在270,控制器105判定在260是否已成功將元資料更新編程至NVM 110。回應於判定尚未成功將元資料更新編程至NVM 110(270:否),方法200返回至270。另一方面,回應於判定成功將元資料更新編程至NVM 110(270:是),控制器105在208刪除列表125a上的所有條目,包括對應於元資料更新102的條目。
以這方式寫入的資料101對於任何讀取操作都是一致的,因為讀取操作需要將最新的元資料頁面114a從NVM 110載入到SRAM 130中並進行更新。在元資料載入程序期間,任何先前寫入操作的元資料更新在讀取位址查找發生之前完成。在這點上,控制器105可以檢查列表125a以尋找仍然需要執行的元資料頁面114a的任何元資料更新。
圖3係根據各種配置繪示用於使用記憶體內日誌120來執行電力故障和恢復操作之實例方法300的流程圖。參考圖1-3,方法300可以由控制器105執行。
在310,控制器105使用任何合適的機制檢測電力故障。具體而言,控制器105可接收來自主要電力供應的電力故障訊號。在320,控制器105將記憶體內日誌120(包括當前有效(當前正在使用但尚未刪除)的列表125a-125n保存到NVM 110中的電力故障頁面/方塊116a-116n,而不保存當前正在更新的元資料頁面 114a-114n 的那些(以及在分頁的元資料 LUT中)。
在330,控制器105檢測電力恢復。在340,控制器105藉由將記憶體內日誌120從電力故障頁面/方塊116a-116n讀取至實施記憶體內日誌120之記憶體中來恢復記憶體內日誌120。在350,控制器105重播接著在列表125a-125n中列出的任何元資料更新。具體而言,控制器105繼續以關於260敘述的方式將然後在列表125a-125n中列出的元資料更新編程至元資料頁面114a-114n。
記憶體內日誌不僅改善電力故障/恢復操作,還改善分頁SSD的原子寫入及條件更新。如本文所述,在分頁的系統中,元資料更新可使用記憶體內日誌來排隊,以允許早期命令完成。出於一致性原因,元資料更新需要根據適當的寫入快取標籤進行排隊。對於原子寫入,由於系統效率的考慮,元資料更新不能在寫入快取標籤上排隊,直到做出以原子方式提交資料(以完成整個原子寫入操作)的決定。一種解決方案可能是在接收到資料時判定正確的寫入快取標籤。然而,在這樣的解決方案中,當在原子列表上時,必須儲存識別適當的寫入快取標籤的額外資訊。由於在原子列表上儲存這些額外資訊,這導致實施方式更加繁瑣。此外,原子列表中的每個條目都需要獨立查找,從而導致額外的處理。
圖4係根據各種配置繪示使用寫入查找列表和寫入快取標籤列表來管理原子寫入操作之實例的示意圖。圖5係根據各種配置繪示使用寫入查找列表和寫入快取標籤列表來管理原子寫入操作之實例方法500的流程圖。參照圖1-5,圖4中所示的機制及對應的方法500允許在提交原子寫入之前將對應於原子資料的元資料儲存在原子列表410上,然後在查找期間使用寫入查找標籤(例如,WrLookup標籤)及寫入查找列表420a和420b重新排隊元資料。寫入查找列表儲存對應於相同元資料頁面的所有元資料的條目。這導致對共享相同目標元資料頁面的所有條目僅進行一次查找操作。寫入查找列表420a和420b、寫入快取列表430a和430b中的每一者是記憶體內日誌120中的列表125a-125n的實例。
在510,儲存裝置100之控制器105從主機或另一個合適的實體接收原子寫入命令和與原子寫入命令相關聯的原子資料(例如,資料101)。原子寫入命令至少識別與原子資料相關聯的邏輯位址(例如,LBA)。在一些實例中,原子資料係在寫入緩衝器135中接收,寫入緩衝器可為電力損失保護的緩衝器。
在520,控制器105判定原子資料的元資料。例如,控制器105的FTL可以為NVM 110中原子資料的每一邏輯位址判定新的實體位址,並將與原子資料相關聯的邏輯位址映射到新的實體位址。更新的L2P映射(將邏輯位址映射到新的實體位址)是元資料或元資料更新102的實例。換句話說,控制器105為元資料頁面114a-114n產生元資料更新102。在一個實例中,為原子資料產生的元資料包括多個(例如,n+1)可映射單元(MUT),每個可映射單元使用索引號0-n來識別。在一個實例中,每一MUT對應於原子資料的塊(例如,一或多個LBA)。
在530,控制器105為原子寫命令分配原子標籤並將元資料排隊在原子列表410中。在前端邏輯中為與原子命令相關聯的所有原子資料塊分配相同的原子標籤。當在510分段接收原子資料及/或在520判定元資料時,可以分配原子標籤。如圖所示,原子列表410儲存在記憶體內日誌120中並且包括所有MUT、MUT0-MUTn。與原子寫入命令相關聯的所有MUT寫入都帶有相同的原子標籤。換句話說,在相同的原子列表410中的每一條目對應於相同原子標籤,為每一原子命令分配一個原子標籤。
為了最小化原子列表410所需的記憶體,原子列表410中的元資料尚未與任何元資料頁面114a-114n相關聯。儘管可以在達到時對原子列表410中的每個條目(例如,每一MUT)執行查找,但是這樣的額外的資訊需要儲存在原子列表410上,從而消耗額外的記憶體。這也意味著每一條目都需要單獨的查找操作。
在540,控制器105判定是否已經發生原子提交。原子提交是指承諾儲存在510接收的所有原子資料,並考慮儲存裝置100的電力循環等因素。回應於判定沒有發生原子提交(540:否),在580,原子列表410中的所有記錄被丟棄(例如,如果需要再執行自由空間之後),並且方法500結束。另一方面,回應於判定已經發生原子提交(540:是),在550,控制器105分配寫入查找標籤並基於邏輯資訊將元資料從原子列表410移動至寫入查找列表420a和420b。
儘管與原子列表410中列出之條目對應的元資料頁面是未知的,因為此時沒有發生查找以節省原子列表410的記憶體,但是原子列表410中的元資料可以被分組,使得每組元資料(一或多個MUT)對應於元資料頁面114a-114n之一。為每一組分配寫入查找標籤,並且將每一組元資料從原子列表410移動到對應於未知但共享的寫入查找標籤的寫入查找列表。在一個實例中,元資料頁面114a-114n中的每一者可儲存預定量的元資料(例如,10個MUT),標示為
a(例如,
a=10)。假設為在510接收的原子資料產生了2000個MUT,可以判定分配了200個寫入快取標籤(及寫入快取列表)。為了清楚起見,出於說明性目的顯示了兩個寫入快取列表420a和420b。
換句話說,每一寫入查找標籤或寫入查找列表特定於給定的(但未知的)元資料頁面實體位置、元資料頁面索引、元資料頁面識別符及/或元資料頁面號碼、以及寫入快取標籤。(MUTs0-n的)元資料分組到相同的寫入查找標籤或寫入查找列表係基於邏輯位置或對應於元資料的資訊在數學上可計算的。在一個實例中,假設已知元資料頁面114a-114n中的每一者都可以儲存
aMUTs,並且可以使用邏輯資訊來計算元資料頁面內的對齊。假設,在此實例中,該對齊與命令完全匹配,原子列表410 (MUT0-MUTa-1)第一
aMUTs與第一個寫入查找標籤和寫入查找列表420a相關聯,原子列表410的第二
aMUTs (MUTa-MUT2a-1)與第二寫入查找標籤和寫入查找列表420b相關聯,等等。如果對齊不匹配,則在第一寫入查找列表420a中將少於
aMUT’s。因此,如果原子寫入跨越幾個元資料頁面,則為每一段分配不同的寫入查找標籤。原子列表410中的每一元資料組被移動到相關聯的寫入查找列表420a和420b。
在560,控制器105基於與每一寫入查找標籤相關聯之元資料的邏輯資訊並且在每一寫入查找列表中為每一寫入查找標籤以及為執行查找的每一寫入查找列表判定寫入快取標籤。在一些配置中,控制器105向每一寫入查找標籤發出適當的邏輯資訊並將邏輯資訊轉換為元資料頁面實體位置、元資料頁面索引、元資料頁面識別符及/或元資料頁面號碼、以及寫入快取標籤。如果需要,控制器105可以使用包括元資料頁面映射142或將邏輯位址映射到元資料頁面114a-114n的實體位置、索引、標識符及/或號碼之另一個合適的表的各種資料結構來查找資訊並執行寫入快取標籤分配。控制器105可使用每一寫入查找列表的MUT中的一或多個邏輯位址(例如,LBA)作為查找程序的輸入,並獲得並獲得元資料頁面114a-114n之一的對應實體位置、索引、標識符、號碼、寫入快取標籤。使用的(多個)邏輯位址可以是每一寫入查找列表中的第一MUT、每一寫入查找列表中的最後一個MUT、每一寫入查找列表中的任何其他 MUT的邏輯位址。使用可用資料結構判定之元資料頁面114a-114n的邏輯位址至實體位置、索引、標識符、號碼和寫入快取標籤與其對應的寫入查找標籤一起返回。
在570,控制器105使用分配的寫入快取標籤並將元資料從寫入查找列表420a-420b移動至寫入快取列表430a和430b。每一寫入查找列表對應於一個寫入快取標籤及元資料頁面。換句話說,每一寫入查找列表(寫入查找標籤)對應於給定的寫入快取列表和給定的元資料頁面。寫入查找標籤(和寫入查找列表)的數量(例如,200)少於寫入快取標籤(和寫入快取列表)的數量,並且其大小被調整為保持查找程序繁忙。在560,寫入快取標籤係藉由查找操作來判定。然後將每一寫入查找列表中的元資料從寫入查找列表移動到對應的寫入快取列表。例如,MUT0-MUTa-1從寫入查找列表420a移動到寫入快取列表430a,而MUTa-MUT2a-1從寫入查找列表420b移動到寫入快取列表430b。一旦所有的元資料從所有的寫入查找列表420a-420b移動到寫入快取列表430a-430b,原子提交就完成了。此程序不包括從 NVM 110讀取而完成原子提交。
因此,在方法500中,每個元資料頁面僅執行一次元資料頁面查找,因此消除了在原子提交之前儲存元資料資訊的需要並且減少了查找操作的數量,因為查找是針對每個元資料頁面而不是每個MUT執行的。方法500相對較快,並且一旦所有元資料都已被移動到寫入快取列表上,就確認原子命令完成。
圖6係根據各種配置繪示使用寫入查找列表和寫入快取標籤列表來管理原子寫入操作之實例方法600的流程圖。參照圖1-6,方法600類似於方法500並且對應於圖4所示的機制。控制器105從主機接收原子寫入命令及與該原子寫入命令相關聯的該資料。
在610,控制器105判定資料的元資料。該元資料包括映射資訊,映射資訊將邏輯資訊映射至NVM 110的實體位置。資料係儲存在NVM 110之資料頁面112a-112n的實體位置中。在一些配置中,判定元資料包括使用其中使用L2P映射表的邏輯資訊來判定實體位置。
在620,控制器105將元資料排隊在原子列表410中。控制器105判定是否已經發生原子提交。在630,回應於判定原子提交已經發生,控制器105基於資料的邏輯資訊將元資料從原子列表410移動至寫入查找列表420a和420b。在一些配置中,控制器105使用邏輯資訊判定元資料組。將每一元資料組移動至寫入查找列表420a和420b之對應的一者。
在640,控制器105基於邏輯資訊為每一寫入查找列表420a和420b判定元資料頁面114a-114n之一者。來自寫入查找列表420a和420b之一者的每一元資料組被移動到寫入快取列表430a和430b中的對應一者,每一寫入快取列表430a和430b對應於元資料頁114a-114n之一者。控制器105將每一元資料組從寫入快取列表430a和430b的每一者移動至元資料頁面114a-114n對應的一者。在一些配置中,基於邏輯資訊判定寫入查找列表420a和420b之每一者的元資料頁面之一者包括使用在寫入查找列表420a和420b之每一者中該元資料之邏輯資料執行一個查找操作來判定元資料頁面114a-114n之一者。
原子列表410、寫入查找列表420a和420b、及寫入快取列表430a和430b係儲存在記憶體內日誌120中。在所有元資料被移動到寫入快取標籤列表430a-430b之後,原子提交已經完成。
在儲存裝置100中,NVM 110以頁面為單位編程並且以方塊為單位擦除,其中方塊包括多個頁面。方塊之某些頁面上的資料可能會更新到另一方塊上的另一個位置,從而使方塊中的一些頁面有效而方塊中的其他頁面無效。為了釋放方塊以供將來寫入,可以讀取塊的有效頁面並將其寫入其他方塊中的頁面(稱為垃圾收集(GC)寫入),並且可以擦除整個塊以用於將來的寫入。為了允許主機寫入(從主機接收到的資料經編程至NVM 110)和GC寫入之間的一致性,使用實體映射緩衝器和條件更新。GC資料(要在GC程序中寫入的資料)與原始源實體位置及其新的實體位置相關聯。此原始位置用作判定GC在更新程序中是否有效的金鑰。
在一些配置中,來自垃圾收集(GC)的條件更新也可以透過記憶體內日誌120進行緩衝。條件更新提出了一個問題,即在條件解析之前需要額外的空間。例如,此條件資訊可增加記錄的大小,並且在生活中只是短暫的。一個簡單的解決方案可能是擴大條目的大小,這可能是不受歡迎的,因為它會導致更繁瑣的實施方式並且效率較低,因為這些額外的資訊會添加到每一條目中。
在一些配置中,假設在條目的生命循環中,條件解析之前的時間很短,可以將第二條目作為「葉子」分配給主要單鏈列表以儲存瞬態資訊。回應於解析條件,可以解除分配此葉條目。換句話說,分配兩個條目或記錄,為額外的資訊建立額外的鏈路。一旦條件以任何一種方式解析,就可以釋放額外的條目,並適當地更新原始條目。這也允許列表保持單鏈路以節省額外的記憶體。
圖7係根據各種配置繪示條件更新機制的示意圖。參考圖1、2和7,可以由控制器105執行條件更新。在圖7中,示出了與關於邏輯位址的主機寫入相關的程序和操作、與關於相同邏輯位址的GC寫入相關的程序和操作、以及對應於邏輯位址的有效資料的實體位置。右側顯示的程序和操作比左側顯示的程序和操作發生的晚。
對應於邏輯位址之有效資料的位置最初儲存在NVM 110的第一實體位置730。關於主機寫入,控制器105在702接收對應於邏輯位址之新的主機資料。作為回應,控制器105(例如,FTL)在704為新的資料分配NVM 110的第二實體位置732。新的資料被編程至第二實體位置732。在706,控制器105執行無條件映射更新以將對應於邏輯位址之資料的有效邏輯位置從第一實體位置730更新至第二實體位置732。從那時起,有效實體位置係在第二實體位置732。可以使用如所述之記憶體內日誌120執行映射更新。例如,對映射(映射至第二實體位置732的邏輯位址)的更新被保存為列表125a-125n之一的條目。
關於GC寫入,在712,控制器105執行GC有效性檢查。在714,控制器105從第一實體位置730讀取資料。在716,控制器105(例如,FTL)分配與第二實體位置732不同之NVM 110的第三實體位置。在718,控制器718將在714讀取的資料複製到第三實體位置。在720,條件映射更新失敗,因為資料的有效位置已經被主機寫入無條件更新到第二實體位置732。雖然新的資料已被編程到第二實體位置732並且舊的資料已被編程至第三實體位置,但是只有第二實體位置732對於對應於資料的邏輯位址是有效的。
圖8A、8B、及8C係根據各種配置繪示使用記憶體內日誌之條件更新的示意圖。圖8A、8B和8C中的每一者繪示了記憶體內日誌120的列表800。圖9係根據各種配置繪示之使用記憶體內日誌之實例條件更新方法900的流程圖。參照圖1、2、7、8A-8C及9,列表800是可以是列表125a-125n之一的單鏈列表。
在圖8A中,列表800包括條目802、804、806、808、810及812。每一條目對應於不同的邏輯資訊(例如,不同的邏輯位址)。條目由指針或鏈接,表示為「下一個」。每一條目包括指示下一個條目之索引的指針或鏈接。例如,條目802指向條目804(經由鏈接831),條目804指向條目806(經由鏈接832),條目806指向條目808(經由鏈接833),條目808指向條目810(經由鏈接834),條目810指向條目812(經由鏈接835)。
每一條目包括關於NVM 110之資料頁面112a-112n之實體位置(例如,實體位址)的資訊851、852、854、854、855、856、或857。實體位置對應於每一條目的邏輯資訊。每一條目包括指示該條目是否有效的有效性標誌841、842、843、844、845或846(例如,1位元)。每個條目可包括用於執行查找的iKey(邏輯資訊)862、863、864、865、866或867。
在條件更新方法900中,對對應於基底條目802的邏輯位址執行GC。條目基底802是一個有效條目,其將資料的實體位置識別為在第一實體位置730。在910,控制器105將條件條目820添加至記憶體內日誌中的列表800,用於與GC寫入相關聯的條件更新。GC寫入包括將原始儲存在第一實體位置730中的資料寫入至第三實體位置。包括在條件條目820中的實體位置係第三實體位置。條件條目820是不指向列表800中的另一個條目的葉條目。組合的條件條目820和基底條目802含有邏輯資訊和兩個實體位置714和718。
在920,控制器105將基底條目802組態為指向條件條目820。如圖所示,代替iKey,基底條目802係組態為包括指向條件條目820的指針861(例如,葉指針LEAF-PTR)。基底條目802還具有另一個指針 831,它指向列表800中的下一個條目804。
在930,控制器105判定條件是否被解析使得第三實體位置有效。如果在 930 之前沒有發生干擾寫入操作,則第三實體位置有效。回應於判定控制器105判定第三實體位置係有效的(930:是),iKey 864在940基於基底條目802被複製,並且條件條目820在950被釋放,如圖8B所示。在基底條目802中的實體位置851係組態為第三實體位置。方塊940和950可回應於930:否以任何合適的順序執行。
另一方面,回應於判定控制器105判定第三實體位置係無效的(930:否),基底條目802在960被標記為無效(841:無效),並且條件條目820在970被釋放,如圖8C所示。在圖7所示的實例中,干擾主機寫入將有效實體位置更新為第二實體位置732,使得第三實體位置無效。方塊960和970可回應於930:是以任何合適的順序執行。
圖10係根據各種配置繪示之使用記憶體內日誌管理元資料之實例方法1000的流程圖。參考圖1-10,方法1000可以由控制器105執行。在一些實例中,方法200和300係方法1000的特定實施方式。
在1010,控制器105判定資料的元資料。資料101係從主機接收。例如,控制器105可從主機接收寫入命令和資料。資料係由邏輯位址界定。元資料(例如,元資料更新102)包括將邏輯資訊映射到儲存裝置100之NVM 110的至少一實體位置的映射資訊。判定資料的元資料包括判定至少一實體位置和映射資訊。在一些實例中,判定元資料包括使用邏輯資訊基於L2P映射表來判定至少一個實體位置。
在一些實例中,控制器105回應於判定資料的元資料而分配寫入快取標籤並使用寫入快取標籤對元資料區域的更新進行排隊。在讀取元資料區域之前對元資料區域的更新進行排隊。
在1020,控制器105將元資料儲存在記憶體內日誌120。在一些實例中,控制器105在元資料儲存在記憶體內日誌120中之後向主機確認寫入命令。在一些實例中,將元資料儲存在記憶體內日誌120中包括將元資料儲存為記憶體內日誌120的列表(例如,列表125a-125n之一)中的多個條目中的一個條目。該列表儲存對元資料區域的更新。根據接收對應於複數個條目的資料的順序,將列表的複數個條目添加至列表中。
在1030,控制器105檢測到儲存裝置100之操作危急中斷。在一些實例中,檢測儲存裝置的操作危急中斷包括檢測電力故障、低電力或待機中的至少一種。關於檢測電力故障,控制器105可以從儲存裝置100的電力接收訊號。關於檢測用於較低電力操作或待機操作的觸發,控制器105可以接收或檢測來自主機或另一合適實體的指示符,類似於經歷電力損失。在1040,在一些實例中,控制器105回應於檢測到危急中斷,將記憶體內日誌編程到儲存裝置100的NVM 110。在其它實例中,如果記憶體內日誌120係儲存在晶片上NV記憶體或在多晶粒模組類型控制器中,則可省略方塊1040,該多晶粒模組類型控制器具有以PCM或MRAM之類的方式實施的NV晶粒。
在1050,控制器105檢測儲存裝置的操作正在或已經被恢復。在一些實例中,檢測儲存裝置的操作正在恢復包括檢測電力恢復或復工中的至少一種。
在1060,控制器105執行元資料更新。執行元資料更新包括恢復記憶體內日誌(例如,在 340)和重播更新的(例如,在 350)。重播更新包括回應於檢測到儲存裝置的操作正在被恢復而對NVM 110的元資料區域中的元資料進行編程。元資料區域包括元資料頁面、元資料方塊或NVM 110中的另一個合適的位置/區域。在一些實例中,執行元資料更新包括根據接收與複數個條目對應的資料之順序而對添加至列表的元資料進行編程。在一些實例中,如果記憶體內日誌120係儲存在NVM晶片上中或儲存具有實施在(例如)PCM或MRAM中NV晶粒之多晶粒模組類型控制器中,則可以省略恢復記憶體內日誌120。在一些實施方案中,在進入或退出低電力狀態之諸如睡眠或中止的情況下,可能不需要重播更新。
GC是在原始位置(例如,原始方塊或另一合適的單元)收集有效資料(也稱為原始資料)並將該資料複製到新的位置(例如,新方塊或另一合適的單元)以允許擦除原始位置(可能包含大部分無效資料)的程序。參考圖1,SSD中的GC程序通常包括複製操作,諸如(1)將要從NVM 110的原始方塊重新定位的原始資料讀取到揮發性記憶體(例如,SRAM 130或控制器105的另一合適的揮發性記憶體),(2)判定GC資料將被複製到之新方塊上的新位置(例如,新的實體位置),(3)將GC資料編程至NVM 110之新的方塊中,(4)更新映射資訊以將原始資料的邏輯位址指向新的方塊(更新映射以將邏輯位址與新的方塊的實體位址相關聯)。
GC資料是指臨時讀入或儲存在控制器105的揮發性記憶體(例如,SRAM 130)中的資料,其中此種GC資料將被寫入或編程到新的方塊。原始資料是指儲存在待擦除的原始方塊中的資料。GC複製操作一次將幾GC資料的幾個MB複製到可能分佈在多個晶粒上的新方塊。
傳統上,回應於電力損失,GC資料被刷新至電力故障頁面/方塊116a-116n。此外,由於複製操作的異步特性以及複製操作發生在不同晶粒上的事實,複製操作可能會亂序執行。這可能會在電力損失期間成為問題,因為某些GC複製操作可能已完成,而其他操作可能尚未完成。在這方面,傳統機制會消耗寶貴的備用電力來不必要地對額外資料進行編程。
申請人理解到在電力損失期間,最好盡快關閉備用電力(例如,盡可能提供最小量的備用電力)。因此,較佳地回應於電力損失執行最小量的工作。在這方面,可以在電力恢復之後藉由另一機制恢復的資料可以在電力損失期間被丟棄。因此,假設原始資料保留在NVM 110中要擦除的原始方塊上,與在電力損失時尚未完成的GC操作相關聯的GC資料是回應於電力損失而丟棄的良好候選者。換句話說,代替如傳統那樣將GC資料刷新到NVM 110,本文揭露的配置提供回應危急中斷(例如,電力損失、低電力、睡眠、中止、待機等)而丟棄GC資料。
在一些配置中,用於任何不完整GC操作的元資料更新102(例如,映射資訊)被分開地管理和儲存。在一些實例中,不完整GC操作的元資料更新102被丟棄以防止L2P映射資訊指向處於不確定、未知或條件狀態的資料。
圖11係根據各種配置繪示在當檢測到危急中斷的時刻GC之複製操作1100之狀態的圖。換句話說,圖11繪示回應於接收到中斷或危急中斷的指示(例如,指示電力損失、低電力、睡眠、中止、待機等的訊號)之複製操作1100的狀態。參照圖1-11,複製操作1100之狀態中所示的每一方塊對應於波形模組的區域。區域對應於儲存在NVM 110中一或多個位置的資料(例如,GC資料)。區域中的資料可以排隊等待寫入NVM 110的其他位置。資料可以以任何合適的方式排隊。每一區域對應於一或多個邏輯位址。控制器105可判定或以其他方式分配GC資料將被編程至每一新的位置的實體位址。如圖所示,將隊列中的資料寫入或編程到NVM 110的順序是從左到右以及從下到上。在一些實例中,在兩或多個區域(例如,幾個MB)中的資料可被發送至NVM 110以在同時被編程。
被稱為第一區域1110之圖案陰影的區域可能已經或可能未發送至NVM 110以被編程。對應於具有未知完成狀態的第一區域1110的資料被稱為第一資料。被稱為第二區域1120的實心陰影的區域表示完成狀態為已確認的資料。對應於具有確認或完成的完成狀態的第二區域1120的資料被稱為第二資料。無陰影框表示沒有任何資料的區域(例如,擦除的區域)。第三區域1130還沒有對應於要發送至NVM 110的任何資料。控制器105已經判定了第一資料和第二資料的元資料更新102並且還沒有判定第三資料或第三區域1130的任何元資料,它們還沒有對應於資料。
由於複製操作的異步性質,控制器105可判定關於某些資料的複製操作在某些檢查點是否已經成功。在一些實例中,控制器105可保持追蹤複製操作1100之狀態。例如,控制器105可以從通道控制器接收NVM程式狀態資訊,通道控制器將資料編程至NVM 110並且從NVM 110獲得關於編程是否成功的反饋。在一些實例中,回應於基於來自NVM 110的反饋判定編程已經成功,通道控制器像控制器105發送關於給定邏輯位址及/或給定實體位址之複制操作已經完成的指示。然後控制器105可確認由邏輯位址及/或實體位址識別的資料已經成功地寫入NVM 110。就此而言,第二資料是指已被快閃系統確認已成功編程到NVM 110的資料。回應於確認完成,第二資料的元資料(例如,元資料更新102)被儲存在記憶體內日誌120中。
由第一區域1110表示的第一資料是指發送到NVM 110進行編程但尚未接收到完成指示的資料。例如,將第一資料發送到NVM 110是指將第一資料發送到寫入緩衝器(例如,寫入緩衝器135)、用於對NVM 110進行編程的通道控制器等中的一或多個。換句話說,第一資料可能在寫入緩衝器135中,可能在被通道控制器編程的程序中,或者可能成功地被編程到NVM 110之新的位置。雖然控制器105已分配新位置(例如,與其對應的實體位址)以編程第一資料,但不知道第一資料是否已成功編程到新的位置。
回應於向NVM 110發送任何資料(包括第一資料和第二資料),該資料的元資料被儲存在合適的記憶體裝置(例如,未示出之波形模組的記憶體裝置)中。如所描述的,回應於確認資料被成功地編程至NVM 110,該資料的元資料(現在稱為第二資料)被儲存在記憶體內日誌120或L2P映射表中。換句話說,雖然第一資料的編程已經開始,但在檢測到危急中斷時,第一資料的完成狀態是未知的。另一方面,在檢測到危急中斷時,已知第二資料的編程是成功的。第三資料是指尚未發送至NVM 110的資料。
第一資料(或第一區域1110)和第二資料(或第二區域1120)之間的點被稱為複制操作的FTL波尾1150。換句話說,FTL波尾1150將表示已確認已被編程至新的位置之資料的第二區域1120與表示尚未確認已被編程至新的位置之資料的第一區域1110分開。應當注意,區域中的資料編程可以包括將資料編程至許多NVM頁面,並且編程操作很可能無序地完成(由圖11和12中的箭頭表示的順序)。然而,FTL波尾1150僅在其前進路徑中的所有程序都完成時前進。例如,如果順序頁面a、b和c正在被編程,並且已經完成了對頁面b和c的編程,則FTL波尾1150不會立即前進(例如,頁面a、b和c仍然在第一區域1110中,而不是在第二區域1120中)。一旦編程頁面a完成,FTL波尾1150將前進以在第二區域1120中包括a、b和c。然而,如果頁面a在頁面b和c完成之前完成,則FTL波尾1150將前進以將a包括在第二區域1120中,並且完成對頁面b和c的編程,將再次前進以將頁面b和c包括在第二區域1120中。
第一區域1110和第三區域1130之間的點被稱為操作的FTL波前1140。換句話說,FTL波前1140將具有元資料更新102的資料(例如,第一和第二資料)與尚未為其產生的元資料的資料(例如,第三資料)分離。由於對於一些第一資料確認程式完成,一些第一資料變成第二資料。相應地,一些第一區域1110變成第二區域1120,並且FTL波尾1150在方塊位址空間中向前移動。隨著產生一些第三資料的元資料並且隨著一些第三資料被發送至NVM 110,一些第三資料變成第一資料。相應地,一些第三區域1130變成第一區域1110,並且FTL波前1140向前移動。
在一些實例中,與第一資料相關聯的元資料(稱為第一元資料)與記憶體內日誌120中的其它元資料(例如,與第二資料相關聯的第二元資料)分開儲存(例如,在波形模組中)。需要注意的是,第一資料的所有第一元資料都是條件的。第二資料的第二元資料可以是儲存在記憶體內日誌120中的條件和條件解析資料的混合,這取決於條件何時被解析。
回應於檢測到危急中斷,很難判定第一資料的準確完成狀態。因此,在一些配置中,回應於檢測到危急中斷,與已產生之第一資料相關聯的第一元資料被丟棄(例如,不保存到NVM 110)。鑑於沒有有效映射,這建設性地丟棄了第一資料,即使一些或全部第一資料已經被寫入對應於新的位置之新實體位址。換句話說,在電力故障的情況下,第一資料實際上是無效的,因為映射永遠不會更新以引用它。
圖12係根據各種配置繪示在發生恢復的時刻GC之複製操作1200之狀態的圖。換句話說,圖12繪示回應於接收到恢復的指示(例如,指示電力恢復、恢復等的訊號)及開始新的複製操作之複製操作1200的狀態。參照圖1-12,類似於複製操作的狀態1100,複製操作的狀態1200中所示的每個框對應於波形模組的區域。
被稱為第四區域1210之第一圖案陰影的區域對應於可能已經或可能未發送至NVM 110以被編程的資料。對應於具有未知完成狀態的第四區域1210的資料被稱為第四資料。實線陰影區域,稱為第二區域1120,表示第二資料,其中第二資料的完成狀態在中斷時被確認,與複製操作1100的狀態相比保持相同。無陰影框表示沒有任何資料的區域(例如,擦除的區域)。第五區域1230尚未對應任何資料。換句話說,控制器尚未分配任何新位置(或其實體位置)用於編程第五資料。用第二圖案陰影的框表示無效區域1240,其對應於可能或可能未儲存在NVM 110中的資料。無效資料與中斷時的第一資料相同,並且無效區域1240與之前的第一區域1110相同。如所述,假設對應於第一資料的第一元資料已經回應於中斷而被丟棄,則第一資料回應於危急中斷而被建設性地丟棄。因此,在恢復操作時,第一資料在複製操作1200的狀態中顯示為無效資料。
第四資料指回應於中斷後的恢復操作而發送至NVM 110(例如,至通道控制器)以進行編程,但尚未接收到完成指示。第四區域1210是在檢測到危急中斷時處於FTL波前1140的第三區域1130中的一些。回應於向NVM 110發送第四資料,第四資料1210的元資料被儲存在合適的記憶體裝置(例如,波形模組的記憶體裝置)中。回應於確認第四資料被成功地編程至NVM 110,第四資料的元資料被儲存在記憶體內日誌120或L2P映射表中。換句話說,雖然第四資料的編程已經開始,但是第四資料的完成狀態在複製操作1200的狀態是未知的。第五資料是指尚未發送至NVM 110的資料。
第四資料(或第四區域1210)和無效資料(例如,無效區域1240)之間的點被稱為操作1200的FTL波尾1250。換句話說,FTL波尾1250將表示無效資料的無效區域1240與表示尚未確認已被編程至NVM 110之新的位置之資料的第四區域1210分開。第四資料(或第四區域1210)和第五資料(或第五區域1230)之間的點被稱為操作1200的FTL波前1245。換句話說,FTL波前1245將具有元資料更新102的資料(例如,第四資料和第二資料)與尚未為其產生的元資料的資料(例如,第五資料)分離。回應於恢復操作,GC操作(例如,GC寫入)在FTL波前1140的檢查點恢復。FTL波尾1250位於FTL波前1140。隨著產生一些第五資料的元資料並且隨著一些第五資料被發送至NVM 110,一些第五資料變成第四資料。相應地,一些第五區域1230變成第四區域1210,並且FTL波前1245向前移動。
因此,回應於判定恢復,在FTL波尾1250處之新的檢查點建立在丟棄區域的末端,即FTL波前1140。可以藉由將第四資料複製到 NVM 110 來恢復編程。
如所述,由於複製操作的異步性質,控制器105可判定關於某些資料的複製操作在某些檢查點是否已經成功。回應於中斷,隊列中在最近檢查點之後的所有資料的元資料都將被丟棄。參考複製操作1100和1200的狀態,中斷或危急中斷的檢查點對應於FTL波尾1150。
圖13係根據各種配置繪示用於管理GC之元資料之實例方法1300的流程圖。參考圖1-13,方法1300可以由控制器105執行。在一些實例中,基於某些資料的原始元資料(例如,原始實體位址),做出GC決定以將方塊上的有效GC資料移動到NVM 110中新的位置並擦除方塊上的所有資料。在1305,控制器105將GC資料從NVM 110讀取到揮發性儲存器中。揮發性儲存器的實例包括SRAM 130或其它合適的揮發性儲存器。如下所述,GC資料從由原始實體位址識別的NVM 110的原始位置讀取。在1305從NVM讀取GC資料(例如,第一資料和第二資料),在1310和1320判定第一資料和第二資料的元資料,並在1315和1325將第一資料和第二資料發送至 NVM。在一些實例中,可以在1305在第一資料之前讀取第二資料。在一些實施方案中,資料(例如,第一資料和第二資料)的順序在整個GC操作中被保持以提高順序效能。在一些實例中,在判定第一元資料(例如,在1320)之前判定第二元資料(例如,在1310)。在一些實例中,在將第一資料發送到NVM 110(例如,在1325)之前,將第二資料發送到NVM 110(例如,在1315)。在一些實例中,可以在1320判定第一元資料,同時在1315將第二資料發送到NVM 110。
在1310,控制器105判定第二資料的第二元資料。第二資料從NVM 110的第二原始位置讀取。每一第二原始位置是NVM 110的第二方塊、頁面或另一單元。第二資料是從第二方塊、頁面或另一單元讀取至儲存裝置100的揮發性儲存器中的第二有效資料。第二元資料包括用於NVM 110的每一第二新的位置的第二實體位址。第二元資料進一步包括將第二新的位置中的每一者的第二實體位址映射到至少一第一邏輯位址的第二映射。每一第一新的位置是NVM 110的第二方塊、頁面或另一單元。第一元資料係儲存在合適的記憶體裝置(例如,波形模組的記憶體裝置)中。
在1315,控制器105將第一資料發送至NVM 110以被編程至NVM 110的第一新的位置。在一些實例中,將第一資料發送至NVM 110以被編程到第一新的位置包括將第一資料發送至通道控制器並且由通道控制器將第一資料編程至第一新的位置。
在一些實例中,回應於將第二資料發送到NVM 110,第二完成狀態是未知的。第二元資料保留在波形模組的記憶體裝置中,並且尚未進入記憶體內日誌120或L2P表。在一些實例中,將第二資料發送至NVM 110以被編程到第二新的位置進一步包括判定已經完成將第二資料編程到第二新的位置,並且回應於判定第二資料到第二新的位置的編程已經完成,將第二完成狀態改變為完成。在一些實例中,將第二完成狀態改變為已完成包括將第二元資料作為有效元資料保存在記憶體內日誌120或L2P表中。
在1320,控制器105判定第一資料的第一元資料。第一資料從NVM 110的第一原始位置讀取。每一第一原始位置是NVM 110的第三方塊、頁面或另一單元。第一資料是從第三方塊、頁面或另一單元讀取至儲存裝置100的揮發性儲存器中的第一有效資料。第一元資料包括用於NVM 110的每一第一新的位置的第一實體位址。第一元資料進一步包括將第一新的位置中的每一者的第一實體位址映射到至少一第一邏輯位址的第一映射。每一第一新的位置是NVM 110的第四方塊、頁面或另一單元。第一元資料係儲存在合適的記憶體裝置(例如,波形模組的記憶體裝置)中。在一些實例中,在判定第一元資料之前判定第一元資料。在一些實例中,第一資料具有在用於複製操作的隊列中的第一資料的位置之前的位置。
在1325,控制器105將第一資料發送至NVM 110以被編程至NVM 110的第一新的位置。在一些實例中,將第一資料發送至NVM 110以被編程到第一新的位置包括將第一資料發送至通道控制器並且由通道控制器將第一資料編程至第一新的位置。
在一些實例中,回應於將第一資料發送到NVM 110,第一完成狀態是未知的。第一元資料保留在波形模組的記憶體裝置中,並且尚未進入記憶體內日誌120或L2P表。
在1330,控制器105檢測到儲存裝置100之操作危急中斷。在一些實例中,檢測儲存裝置的操作危急中斷包括檢測電力故障、低電力、睡眠、中斷或待機等中的至少一種。回應於檢測到危急中斷,而丟棄記憶體內日誌120中的條目,並且記憶體內日誌120中的條目被保存至NVM 110。例如,儲存在波形模組的記憶體裝置中的尚未傳送到記憶體內日誌120的元資料被丟棄。在檢測到危急中斷時儲存在波形模組的記憶體裝置中的元資料包括第一元資料。在檢測到危急中斷時儲存在記憶體內日誌120中的元資料包括用於第二元資料的條目。
例如,在1335,回應於檢測到儲存裝置100之操作的危急中斷,控制器105丟棄第一元資料並保存第二元資料。鑑於在檢測到危急中斷時第一完成狀態未知,控制器105丟棄第一元資料。第一資料的第一完成狀態是未知的,因為它在檢測到危急中斷時沒有存儲在記憶體內日誌120中。控制器105回應於檢測到儲存裝置100之操作的危急中斷,假設用於第二資料1120之編程的第二完成狀態已完成,則保存第二元資料。鑑於指向每一第一新的位置的第一的第一元資料(例如,映射資訊)已被丟棄,第一資料被建設性地丟棄。換句話說,僅保存記憶體內日誌120中的條目。
在一些配置中,控制器105回應於檢測到儲存裝置100之操作的危急中斷而判定用於編程第一資料的第一完成狀態係未知的。控制器105回應於在檢測到危急中斷時判定第一完成狀態是未知的而丟棄第一元資料。在一些配置中,控制器105回應於檢測到儲存裝置100之操作的危急中斷而判定用於第二資料1120之編程的第二完成狀態已完成。控制器105回應於檢測到危急中斷來保存第二元資料,例如藉由如所述的將條目保存在記憶體內日誌120中。
在一些配置中,回應於檢測到儲存裝置的操作正在恢復,控制器105判定額外的資料(例如,第四資料)的附加元資料。額外的資料係從NVM 110之額外的原始位置讀取。額外的元資料包括用於NVM 110之每一額外新的位置之額外的實體位址。額外的資料不同於第一資料和第二資料。在一些實例中,檢測儲存裝置100的操作正在恢復包括檢測電力恢復或復工中的至少一種。
因此,回應於檢測到儲存裝置100之操作的危急中斷,控制器105在檢查點之後丟棄正被複製到NVM 110之資料的待丟棄元資料,其實例為FTL波尾1150。如圖所示,檢查點緊接在第二區域1120的最後一個區域之後,用於編程第二資料的第二完成狀態已完成。此檢查點位於所有第二區域 1120和第一區域 1110 之間。待丟棄元資料包括關於複製操作狀態1100和複製操作狀態1200繪示的第一元資料。在恢復操作之後用於恢復複製操作的另一檢查點是FTL波前1140,其緊接在第一區域1110的最後一個區域之後,對於該區域,用於編程第二資料的第一完成狀態是未知的。檢查點在所有第三區域1130和第一區域1110之間。
在一些配置中,檢查點基於波形模組中元資料的位置來判定。例如,基於記憶體內日誌120中的元資料更新102連同資料一起寫入NVM 110,以指示已經寫入NVM 110的邏輯方塊(對應於資料)。為索引表的記憶體內日誌120係丟棄操作的方便檢查點,因為記憶體內日誌120允許恢復期間的重建操作具有提升的效率。
圖14係根據各種配置繪示在當檢測到危急中斷的時刻GC之複製操作1400之狀態的圖。換句話說,圖14繪示回應於接收到中斷或危急中斷的指示(例如,指示電力損失、低電力、睡眠、中止、待機等的訊號)之複製操作1400的狀態。參考圖1-14,複製操作1400的狀態類似於複製操作1100的狀態,除了記憶體內日誌120在用於複製操作的資料之間交錯。
複製操作狀態1400中所示的每一框對應於波形模組中的區域,該區域可用於資料(例如,GC資料)和元資料(例如,記憶體內日誌120)。可以以任何合適的方式將其中交錯有元資料的資料排隊以寫入NVM 110。每一區域對應於一或多個邏輯位址。控制器105可判定或以其他方式分配GC資料將被編程至每一新的位置的實體位址。如圖所示,將資料和元資料寫入或編程至NVM 110的順序是從左到右和從下到上。在一些實例中,在兩或多個區域(例如,幾個MB)中的資料和元資料可被發送至NVM 110的區域以同時被編程。
被稱為第一區域之第一圖案陰影的區域可能已經或可能未發送至NVM 110以被編程。對應於具有未知完成狀態的第一區域1410的資料被稱為第一資料。被稱為第二區域1420的實心陰影的區域表示完成狀態為已確認的資料。對應於完成狀態為確認或完成的第二區域1420的資料為第二資料。無陰影框表示沒有任何資料的區域(例如,擦除的區域)。第三區域1430還沒有對應於要發送至NVM 110的任何資料。控制器105已經判定了第一資料和第二資料的元資料更新102並且還沒有判定第三資料或第三區域1430的任何元資料,它們還沒有對應於資料。此外,用第二圖案陰影的框表示與完成狀態為已確認之資料相對應之額外的區域1470,但是對應於此種資料的元資料沒有保存在NVM 110中(例如,包含此種元資料的記憶體內日誌120沒有保存在NVM 110中)。此類型的資料稱為附加的資料。元資料區域1460表示保存在NVM 110中的元資料(例如,在記憶體內日誌120中)。
控制器105已經判定了第一資料、第二資料、及額外的資料的元資料更新102。附加的元資料更新102被稱為額外的丟棄的元資料。控制器105尚未判定第三資料的任何元資料。
在一些實例中,控制器105可保持追蹤複製操作1400之狀態。例如,控制器105可以從通道控制器接收NVM程式狀態資訊。在一些實例中,回應於基於來自NVM 110的反饋判定編程已經成功,通道控制器像控制器105發送關於給定邏輯位址及/或給定實體位址之複制操作已經完成的指示。然後控制器105可確認由邏輯位址及/或實體位址識別的資料已經成功地寫入NVM 110。就此而言,第二資料及額外的資料是指已被快閃系統確認已成功編程到NVM 110的資料。
由第一區域1410表示的第一資料是指發送到NVM 110進行編程但尚未接收到完成指示的資料。例如,將第一資料發送到NVM 110是指將第一資料發送到寫入緩衝器(例如,寫入緩衝器135)、用於對NVM 110進行編程的通道控制器等中的一或多個。換句話說,第一資料可能在寫入緩衝器135中,可能在被通道控制器編程的程序中,或者可能成功地被編程到NVM 110之新的位置。雖然控制器105已分配新位置(例如,與其對應的實體位址)以編程第一資料,但不知道第一資料是否已成功編程到新的位置。
回應於向NVM 110發送任何資料(包括第一資料、第二資料、及額外的資料),該資料的元資料被儲存在合適的記憶體裝置(例如,未示出之波形模組的記憶體裝置)中。換句話說,雖然第一資料的編程已經開始,但在檢測到危急中斷時,第一資料的完成狀態是未知的。
在成功地編程對應於數個連續區域的資料之後,控制器120在對應於元資料區域1460的位置中儲存包含對應於與那些區域相關聯之資料的元資料的日誌1480。例如,儲存在對應於元資料區域1460之位置中的元資料含有日誌1480,該日誌1480具有用於緊接在元資料區域1460之前的一或多個可映射資料單元的元資料條目。雖然圖中僅示出了元資料區域1460,但是應當理解,每一或多個資料區域之後是含有日誌1480的元資料區域,該日誌1480對應於這些區域的可映射資料單元的元資料。
在確認資料被成功地編程到 NVM 110 之後,並且回應於判定該資料的元資料1460已被確定保存至NVM 110,該資料的元資料(現在稱為第二資料)被認為是有效的並發送到記憶體內日誌。因此,所有第二資料都被認為是有效的,因為相應的元資料已經保存在NVM 110中。儘管與額外的區域1470對應之額外的資料是已被快閃系統確認已成功編程到NVM 110的資料,但與額外的資料對應的元資料(稱為額外丟棄的元資料)尚未被確認已保存到NVM 110。因此,額外的資料之額外丟棄的元資料在檢測到危急中斷時保持在未知狀態。
額外的資料(或區域1470)和元資料(或元資料區域1460)之間的點被稱為複制操作的FTL波尾1455。換句話說,FTL波尾1455將表示確認已被編程到NVM 110之資料(包括相應的日誌1480)的區域1420和1460與表示確認已被編程至NVM 110而相應的日誌1480未被確認已被編程至NVM 110的資料之額外的區域1470分離。FTL波尾1455被設置為檢查點,使得在方塊中的FTL波尾1455之後要在NVM 110中編程的資料的任何元資料被丟棄。如上所述,區域中的資料編程可以包括將資料編程至許多NVM頁面,並且編程操作很可能無序地完成(由圖13和14中的箭頭表示的順序)。然而,FTL波尾1455僅在其前進路徑中的所有程序都完成時前進。
額外的資料(或區域1470)和第一資料(或第一區域1410)之間的點被稱為複制操作的快閃波尾1450。快閃波尾1450將具有確認已被編程到NVM 110之資料的區域1470、1460和1420與具有尚未確認已被編程到NVM 110之資料的區域1410分離。
第一資料(或第一區域1410)和第三資料(或第三區域1430)之間的點被稱為操作的FTL波前1440。換句話說,FTL波前1440將具有元資料更新102的資料(例如,第一、第二及額外的資料)與尚未為其產生的元資料更新102的資料(例如,第三資料)分離。由於對於一些第一資料確認程式完成,一些第一資料變成額外的資料。相應地,一些第一區域1410變成額外的區域1470,並且快閃波尾1450在隊列中向前移動。由於對於一些額外的資料之完成狀態被確認,額外的資料變成第二資料。相應地,一些額外的區域1470變成第二區域1420,並且FTL波尾1455在隊列中向前移動。隨著產生一些第三資料的元資料更新102並且隨著一些第三資料被發送至NVM 110,一些第三資料變成第一資料。相應地,一些第三區域1430變成第一區域1410,並且FTL波前1440向前移動。
圖15係根據各種配置繪示在發生恢復的時刻GC之複製操作1500之狀態的圖。換句話說,圖15繪示回應於接收到恢復的指示(例如,指示電力恢復、恢復等的訊號)之複製操作1500的狀態。參照圖1-15,類似於複製操作的狀態1400,複製操作的狀態1500中所示的每個框對應於波形模組的區域。
被稱為第四區域1510之第一圖案陰影的區域對應於可能已經或可能未發送至NVM 110以被編程的資料。對應於具有未知完成狀態的第四區域1510的資料被稱為第四資料。實線陰影區域,稱為第二區域1420',表示中斷時完成狀態為確認的第二資料和元資料。無陰影框表示沒有任何資料的區域(例如,擦除的區域)。第五區域1530尚未對應任何資料。換句話說,控制器尚未分配任何新位置(或其實體位置)用於編程第五資料。用第二圖案陰影的框表示無效區域1540,其對應於可能或可能未儲存在NVM 110中的資料。無效資料與中斷時的第一資料加上額外的資料相同,並且無效區域1540包括第一區域1410和附加的區域1470。如所述,假設對應於第一資料加上附加的資料的第一元資料已經回應於中斷而被丟棄,則第一資料加上附加的資料回應於危急中斷而被建設性地丟棄。因此,在恢復操作時,第一資料加上附加的資料在複製操作1500的狀態中顯示為無效資料。
第四資料指回應於中斷後的恢復操作而發送至NVM 110(例如,至通道控制器)以進行編程,但尚未接收到完成指示。第四區域1510是在檢測到危急中斷時處於FTL波前1440的第三區域1430中的一些。回應於向NVM 110發送第四資料,第四資料1510的元資料被儲存在合適的記憶體裝置(例如,波形模組的記憶體裝置)中。回應於確認第四資料及其相關聯的日誌1480被成功地編程至NVM 110,第四資料的元資料被認為是有效的。換句話說,雖然第四資料的編程已經開始,但是第四資料的完成狀態在複製操作1500的狀態是未知的。第五資料是指尚未發送至NVM 110的資料。
第四資料(或第四區域1510)和無效資料(或無效區域1540)之間的點被稱為操作1500的FTL波尾1550。換句話說,FTL波尾1550將表示無效資料的無效區域1540與表示尚未確認已被編程至NVM 110之資料的第四區域1510分開,該NVM亦沒有確認其對應之記憶體內日誌120已被編程至NVM 110。第四資料(或第四區域1510)和第五資料(或第五區域1530)之間的點被稱為操作1500的FTL波前1545。換句話說,FTL波前1545將具有元資料更新102的資料與尚未為其產生的元資料更新102的資料分離。回應於恢復操作,GC操作(例如,GC寫入)在FTL波前1440的檢查點恢復。FTL波尾1550位於FTL波前1440。隨著產生一些第五資料的元資料並且隨著一些第五資料被發送至NVM 110,一些第五資料變成第四資料。相應地,一些第五區域1530變成第四區域1510,並且FTL波前1545向前移動。
因此,回應於判定恢復,在FTL波尾1550處之新的檢查點建立在丟棄區域的末端,即FTL波前1440。可以藉由將第四資料複製到 NVM 110 來恢復編程。
因此,回應於檢測到儲存裝置100之操作的危急中斷,控制器105在檢查點之後丟棄正被複製到NVM 110之資料的待丟棄元資料。待丟棄元資料包括複製操作狀態1400和複製操作狀態1500中的第一元資料和額外丟棄的元資料。檢查點係FTL波前1440。如圖所示,檢查點位於隊列中最後一個額外的資料方塊之後。檢查點係位於所有附加的資料和第三資料之間。
還應該注意,本文揭露的配置可以在有或沒有壓縮的情況下實施。在其中儲存裝置100支持壓縮的實例中,要緩衝的資料量可以是可變的。由於緩衝的資料量可變,它可能與方便的實體邊界(例如,ECC頁面、NAND頁面等)不一致。應該注意,為了清楚起見,圖11、12、14和15顯示了統一大小的區域,在壓縮資料的情況下,這些區域可以具有不同的大小。
應理解到,所揭露的程序中的步驟的特定順序或階層係說明方案的實例。基於設計偏好,應當理解,可以重新排列程序中的步驟的特定順序或階層,同時保持在先前敘述的範圍內。所附之方法申請專利範圍以示例順序呈現了各種步驟的元件,並且並不意味限制於所呈現的特定順序和階層。
提供對所揭露實施方式的先前敘述以使任何所屬技術領域中具有通常知識者能夠製造或使用所揭露的請求標的。這些實施方式的各種修飾對於所屬技術領域中具有通常知識者而言是顯而易見的,並且在不背離先前敘述的精神和範圍的情況下,本文定義的一般原理可以應用於其他實施方式中。因此,先前敘述並不旨在限於本文所示的實施方案,而是應被賦予與本文揭露之原理及新穎特徵一致的最廣範圍。
僅作為實例提供所繪示和敘述之各種實例,以示出申請專利範圍的各種特徵。然而,關於任何給定實例顯示和敘述的特徵不必限制於相關聯的實例,並且可以與所顯示和敘述的其他實例一起使用或組合。此外,申請專利範圍無意受任何一實例的限制。
前述方法敘述和程序流程圖僅作為說明性實例而被提供,並且無意於要求或暗示各種實例的步驟必須以所呈現的順序執行。如所屬技術領域中具有通常知識者將理解的,前述實例中的步驟順序可以以任何順序執行。諸如「此後」、「然後」、「接著」等之類的字彙無意限制步驟的順序;這些字彙僅用於指導讀者進行方法的敘述。此外,例如,使用冠詞「一(a)」、「一(an)」或「該」對任何以單數形式的申請專利範圍元件的引用不應被解釋為將元件限制為單數形式。
結合本文揭露之實例敘述的各種說明性邏輯方塊、模組、電路、和演算法步驟可以被實施為電子硬體、電腦軟體或兩者的組合。為了清楚地說明硬體和軟體的這種可互換性,上面已經大體上根據其功能敘述了各種說明性組件、方塊,模組、電路和步驟。將這種功能性實施為硬體還是軟體取決於特定的應用和施加在整個系統上的設計限制條件。技術人員可以針對每個特定應用以變化的方式來實施所敘述的功能,但是這種實施方式決定不應被解釋為導致脫離本揭露的範圍。
用於實施結合本文所揭露之實例敘述的各種說明性邏輯、邏輯方塊、模組和電路的硬體可以使用通用處理器、DSP、ASIC、FPGA或其他可編程邏輯裝置,離散閘極或電晶體邏輯、離散硬體組件或其任意組合來實現或執行被設計為執行本文敘述之功能的組件。通用處理器可為微處理器,但可替代地,處理器可以是任何習知的處理器、控制器、微控制器或狀態機。處理器亦可以被實施為計算裝置的組合,例如,DSP和微處理器的組合、複數個微處理器、與DSP核心結合的一或多個微處理器、或任何其他這樣的組態。替代地,可以由特定於給定功能的電路來執行一些步驟或方法。
在一些例示性實例中,可以以硬體、軟體、韌體或其任何組合來實現所敘述的功能。如果以軟體實施,則功能可以作為一或多個指令或碼儲存在非暫態電腦可讀的儲存媒體或非暫態處理器可讀的儲存媒體上。本文揭示的方法或演算法的步驟可以具體化在處理器可執行軟體模組中,處理器可執行軟體模組可駐留在非暫態電腦可讀或處理器可讀的儲存媒體上。非暫態電腦可讀的或處理器可讀的儲存媒體可以是可由電腦或處理器存取的任何儲存媒體。舉例而言但不限於此,這樣的電腦或處理器存取的任何儲存媒體可包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其他光學驅動儲存器、磁性驅動儲存器、或其他磁性儲存、或任何其他可用於以指令或資料結構形式儲存所需程式碼且可由電腦存取的媒體。本文使用的驅動器和磁碟片包括光碟(CD)、雷射磁碟、光學磁碟、數位多功能光碟(DVD)、軟碟、藍光光碟,其中磁碟片通常以磁性方式複制資料,而磁碟片則以雷射光學地複制資料。以上的組合也包括在非暫態電腦可讀的和處理器可讀的媒體之範圍內。額外地,方法或演算法的操作可以作為碼或指令的一個或任何組合或集合駐留在非暫態處理器可讀的儲存媒體及/或電腦可讀的儲存媒體上,其可以被併入電腦程式產品中。
提供對所揭露實例的先前敘述以使任何所屬技術領域中具有通常知識者能夠製造或使用本揭露。這些實例的各種修飾對於所屬技術領域中具有通常知識者而言是顯而易見的,在不背離本揭露的精神或範圍的情況下,本文定義的一般原理可以應用於一些實例中。因此,本揭露並不旨在限於本文所示的實例,而是應被賦予與以下申請專利範圍和本文揭露之原理及新穎特徵一致的最廣範圍。
100:儲存裝置
101:資料
102:元資料更新
105:控制器
110:NVM
112a-112n:資料頁面
114a-114n:元資料頁面
116a-116n:電力故障頁面/方塊
120:記憶體內日誌
125a-125n:列表
130:SRAM
135:寫入緩衝器
140:DRAM
142:元資料頁映射
144:元資料頁面快取
200,300,500,600,900,1000,1300:方法
410:原子列表
420a,420b:寫入查找列表
430a,430b:寫入快取列表
730:第一實體位置
732:第二實體位置
800:列表
802,804,806,808,810,812:條目
820:條件條目
831,832,833,834,835:鏈接
841,842,843,844,845,846:有效性標誌
851,852,854,854,855,856,857:資訊
861:指針
862,863,864,865,866,867:iKey
1100,1200,1400,1500:複製操作
1110,1410:第一區域
1120,1420,1420’:第二區域
1130,1430:第三區域
1140,1245,1440,1545:FTL波前
1150,1250,1455,1550:FTL波尾
1210,1510:第四區域
1230,1530:第五區域
1240,1540:無效區域
1450:快閃波尾
1460:元資料區域
1470:額外的區域
1480:日誌
[圖1]係根據各種配置繪示用於將資料寫入至儲存裝置、更新與資料相關聯的元資料、回應於電力故障保留元資料更新之實例機制的示意圖。
[圖2]係根據各種配置繪示之包括使用記憶體內日誌之元資料更新之寫入操作之實例方法的流程圖。
[圖3]係根據各種配置繪示用於使用記憶體內日誌來執行電力故障和恢復操作之實例方法的流程圖。
[圖4]係根據各種配置繪示使用寫入查找列表和寫入快取標籤列表來管理原子寫入操作之實例的示意圖。
[圖5]係根據各種配置繪示使用寫入查找列表和寫入快取標籤列表來管理原子寫入操作之實例方法的流程圖。
[圖6]係根據各種配置繪示使用寫入查找列表和寫入快取標籤列表來管理原子寫入操作之實例方法的流程圖。
[圖7]係根據各種配置繪示條件更新機制的示意圖。
[圖8A、8B、及8C]係根據各種配置繪示使用記憶體內日誌之條件更新的示意圖。
[圖9]係根據各種配置繪示之使用記憶體內日誌之實例條件更新方法的流程圖。
[圖10]係根據各種配置繪示之使用記憶體內日誌管理元資料之實例方法的流程圖。
[圖11]係根據各種配置繪示在當檢測到危急中斷的時刻GC之複製操作之狀態的圖。
[圖12]係根據各種配置繪示在發生恢復的時刻GC之複製操作之狀態的圖。
[圖13]係根據各種配置繪示用於管理GC之元資料之實例方法的流程圖。
[圖14]係根據各種配置繪示在當檢測到危急中斷的時刻GC之複製操作之狀態的圖。
[圖15]係根據各種配置繪示在發生恢復的時刻GC之複製操作之狀態的圖。
100:儲存裝置
101:資料
102:元資料更新
105:控制器
110:NVM
112a-112n:資料頁面
114a-114n:元資料頁面
116a-116n:電力故障頁面/方塊
120:記憶體內日誌
125a-125n:列表
130:SRAM
135:寫入緩衝器
140:DRAM
142:元資料頁映射
144:元資料頁面快取
Claims (20)
- 一種非暫態電腦可讀取媒體,其包含電腦可讀取指令,使得當由儲存裝置之至少一處理器執行時,導致該處理器: 判定資料的元資料; 將該元資料排隊在原子列表中; 回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表;以及 基於該邏輯資訊判定每一該寫入查找列表的元資料頁面之一者。
- 如請求項1之非暫態電腦可讀取媒體,其中 該元資料包含映射資訊,該映射資訊將該邏輯資訊映射至該儲存裝置之非揮發性記憶體的實體位置;以及 該資料係儲存在該非揮發性記憶體之該等實體位置中。
- 如請求項2之非暫態電腦可讀取媒體,其中判定該元資料包含使用該邏輯資訊基於邏輯至實體(L2P)映射表來判定該等實體位置。
- 如請求項1之非暫態電腦可讀取媒體,其中該處理器係經進一步導致: 從主機接收原子寫入命令及與該原子寫入命令相關聯的該資料;以及 判定該原子提交是否已經發生。
- 如請求項1之非暫態電腦可讀取媒體,其中該處理器係經進一步導致: 使用該邏輯資訊判定該元資料組;以及 將每一該元資料組移動至該等寫入查找列表之對應的一者。
- 如請求項5之非暫態電腦可讀取媒體,其中該處理器係經進一步導致每一該元資料組從該等寫入查找列表之該一者移動至寫入快取列表之對應的一者,每一該寫入快取列表對應於元資料頁面之一者。
- 如請求項6之非暫態電腦可讀取媒體,其中該處理器係經進一步導致每一該元資料組從該等寫入快取列表之每一者移動至該等元資料頁面之對應的一者。
- 如請求項6之非暫態電腦可讀取媒體,其中該原子列表、該等寫入查找列表、及該等寫入快取列表係儲存在記憶體內日誌。
- 如請求項6之非暫態電腦可讀取媒體,其中在所有的該元資料移動至該等元資料頁面之後,該原子提交已經完成。
- 如請求項1之非暫態電腦可讀取媒體,其中基於該邏輯資訊判定每一該寫入查找列表之該等元資料頁面之一者包含使用在該等寫入查找列表之每一者中該元資料之該邏輯資料執行一個查找操作來判定該等元資料頁面之該一者。
- 一種儲存裝置,包含: 非揮發性記憶體,其包含資料頁面和元資料頁面;以及 控制器,其組態以: 判定資料的元資料; 將該元資料排隊在原子列表中; 回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表;以及 基於該邏輯資訊判定每一該寫入查找列表的該元資料頁面之一。
- 如請求項11之儲存裝置,其中 該元資料包含映射資訊,該映射資訊將該邏輯資訊映射至該儲存裝置之該非揮發性記憶體之該等資料頁面的實體位置;以及 該資料係儲存在該等資料頁面之該等實體位置中。
- 如請求項11之儲存裝置,其中該控制器更組態以: 使用該邏輯資訊判定該元資料組;以及 將每一該元資料組移動至該等寫入查找列表之對應的一者。
- 如請求項13之儲存裝置,其中該控制器係經進一步組態以將每一該元資料組從該等寫入查找列表之該一者移動至寫入快取列表之對應的一者,每一該寫入快取列表對應於元資料頁面之一者。
- 如請求項14之儲存裝置,其中該控制器係經進一步組態以將每一該元資料組從該等寫入快取列表之每一者移動至該等元資料頁面之對應的一者。
- 如請求項14之儲存裝置,其中該原子列表、該等寫入查找列表、及該等寫入快取列表係儲存在記憶體內日誌。
- 如請求項14之儲存裝置,其中在所有的該元資料移動至該等元資料頁面之後,該原子提交已經完成。
- 如請求項11之儲存裝置,其中基於該邏輯資訊判定每一該寫入查找列表之該等元資料頁面之一者包含使用在該等寫入查找列表之每一者中該元資料之該邏輯資料執行一個查找操作來判定該等元資料頁面之該一者。
- 一種方法,包含: 判定資料的元資料; 將該元資料排隊在原子列表中; 回應於判定原子提交已經發生,而基於該資料的邏輯資訊將該元資料從該原子列表移動至寫入查找列表;以及 基於該邏輯資訊判定每一該寫入查找列表之非揮發性記憶體的元資料頁面之一者。
- 如請求項19之方法,其中: 該元資料包含映射資訊,該映射資訊將該邏輯資訊映射至該儲存裝置之非揮發性記憶體的實體位置;以及 該資料係儲存在該非揮發性記憶體之該等實體位置中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/393,087 US11467970B1 (en) | 2021-08-03 | 2021-08-03 | Metadata management in non-volatile memory devices using in-memory journal |
US17/393,087 | 2021-08-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202328921A true TW202328921A (zh) | 2023-07-16 |
TWI823504B TWI823504B (zh) | 2023-11-21 |
Family
ID=83547242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111128984A TWI823504B (zh) | 2021-08-03 | 2022-08-02 | 非暫態電腦可讀取媒體、儲存裝置、及儲存方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11467970B1 (zh) |
CN (1) | CN115705152A (zh) |
TW (1) | TWI823504B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220147292A (ko) * | 2021-04-27 | 2022-11-03 | 삼성전자주식회사 | 메타 데이터 관리를 수행하는 스토리지 장치 및 이의 동작 방법 |
CN114328281B (zh) * | 2021-11-30 | 2023-11-14 | 苏州浪潮智能科技有限公司 | 固态硬盘异常掉电处理方法、装置、电子设备及介质 |
US12112064B2 (en) * | 2021-12-29 | 2024-10-08 | Micron Technology, Inc. | Techniques for atomic write operations |
CN118502682A (zh) * | 2024-07-22 | 2024-08-16 | 南京鹏云网络科技有限公司 | 数据存储方法、设备、介质和计算机程序产品 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5010505B2 (ja) | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
US10133662B2 (en) * | 2012-06-29 | 2018-11-20 | Sandisk Technologies Llc | Systems, methods, and interfaces for managing persistent data of atomic storage operations |
US9218279B2 (en) * | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9213633B2 (en) | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
US10223208B2 (en) * | 2013-08-13 | 2019-03-05 | Sandisk Technologies Llc | Annotated atomic write |
CN107278295B (zh) | 2015-03-25 | 2021-04-27 | 英特尔公司 | 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测 |
US10108658B1 (en) | 2015-08-21 | 2018-10-23 | Amazon Technologies, Inc. | Deferred assignments in journal-based storage systems |
US11216361B2 (en) | 2016-06-29 | 2022-01-04 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
US10521343B2 (en) | 2017-06-12 | 2019-12-31 | Western Digital Technologies, Inc. | Storage system with a controller having a persistent memory interface to local memory |
US11113251B2 (en) | 2018-09-05 | 2021-09-07 | Vast Data Ltd. | Transaction manager |
US10853165B2 (en) | 2019-02-21 | 2020-12-01 | Arm Limited | Fault resilient apparatus and method |
TWI712950B (zh) * | 2019-06-13 | 2020-12-11 | 和碩聯合科技股份有限公司 | 資料處理方法及裝置 |
US11436200B2 (en) | 2020-01-13 | 2022-09-06 | Vmware, Inc. | Fault tolerant parallel journaling for file systems |
-
2021
- 2021-08-03 US US17/393,087 patent/US11467970B1/en active Active
-
2022
- 2022-08-02 TW TW111128984A patent/TWI823504B/zh active
- 2022-08-03 CN CN202210927294.7A patent/CN115705152A/zh active Pending
- 2022-10-11 US US17/963,324 patent/US11841801B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11467970B1 (en) | 2022-10-11 |
US11841801B2 (en) | 2023-12-12 |
US20230038857A1 (en) | 2023-02-09 |
TW202409840A (zh) | 2024-03-01 |
TWI823504B (zh) | 2023-11-21 |
CN115705152A (zh) | 2023-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693463B2 (en) | Memory system and controller | |
TWI823504B (zh) | 非暫態電腦可讀取媒體、儲存裝置、及儲存方法 | |
EP3724764B1 (en) | Write-ahead style logging in a persistent memory device | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
US20190073277A1 (en) | Transaction Recovery Method in Database System, and Database Management System | |
US9170938B1 (en) | Method and system for atomically writing scattered information in a solid state storage device | |
TWI817638B (zh) | 條件更新,延遲查找 | |
US20190369892A1 (en) | Method and Apparatus for Facilitating a Trim Process Using Auxiliary Tables | |
CN110895514A (zh) | 映射表更新方法 | |
US20130080687A1 (en) | Solid state disk employing flash and magnetic random access memory (mram) | |
TW200929224A (en) | Data writing method for flash memory and controller thereof | |
US9940071B2 (en) | Memory system that carries out an atomic write operation | |
US20150074336A1 (en) | Memory system, controller and method of controlling memory system | |
CN104516959A (zh) | 一种管理数据库日志的方法及装置 | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
KR101456104B1 (ko) | 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치 | |
TWI856880B (zh) | 非暫態電腦可讀取媒體、儲存裝置、及儲存方法 | |
TWI850721B (zh) | 記憶體內日誌 | |
TW202326393A (zh) | 記憶體內日誌 | |
US11733924B1 (en) | Method for discarding garbage collection data during power loss | |
KR20120039166A (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
CN117539692B (zh) | 一种zns固态硬盘数据集管理命令实现方法 |