CN115705153A - 有条件更新和延迟的查找 - Google Patents
有条件更新和延迟的查找 Download PDFInfo
- Publication number
- CN115705153A CN115705153A CN202210930248.2A CN202210930248A CN115705153A CN 115705153 A CN115705153 A CN 115705153A CN 202210930248 A CN202210930248 A CN 202210930248A CN 115705153 A CN115705153 A CN 115705153A
- Authority
- CN
- China
- Prior art keywords
- data
- conditional
- entry
- metadata
- nvm
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- 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/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
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0608—Saving storage space on storage systems
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
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)
- Oscillators With Electromechanical Resonators (AREA)
- Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
Abstract
本发明涉及有条件更新和延迟的查找。本文描述的各种实施方式涉及用于管理用于有条件更新的元数据的系统和方法,包括:将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;将列表中的基础条目配置为指向有条件条目;以及响应于确定有条件更新被解析以使得在有条件条目中标识的物理位置是有效的,释放有条件条目。
Description
相关申请的交叉引用
本申请与2021年8月3日提交的标题为“METADATA MANAGEMENT IN NON-VOLATILEMEMORY DEVICES USING IN-MEMORY JOURNAL(使用存储器内日志在非易失性存储器装置中的元数据管理)”的律师案号117441-0198相关,其内容通过引用整体并入本文。本申请还与2021年8月3日提交的标题为“IN-MEMORY JOURNAL(存储器内日志)”的律师案号117441-0210相关,其内容通过引用整体并入本文。本申请与2021年8月2日提交的标题为“METHODFOR DISCARDING GARBAGE COLLECTION DATA DURING POWER LOSS(在断电期间丢弃垃圾收集数据的方法)”的律师案号117441-0211相关,其内容通过引用整体并入本文。
技术领域
本公开一般涉及用于非易失性存储器(NVM)器件中的元数据管理的系统、方法和非暂时性处理器可读介质。
背景技术
传统固态驱动器(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中,通常对页的一小部分进行元数据更新。仅跟踪更新比保存整个页更有效。电力故障方案可能依赖于两个基本操作来恢复映射信息。第一种方案涉及在完全断电之前保存元数据。该方案需要电容器或其他可以在主电源故障后提供备用电源的电力存储装置。第二种方案涉及扫描用户数据块以在电力恢复时重建丢失的元数据。虽然第一种方案通常比第二种方案更稳健且更容易测试,但是第一种方案在硬件方面更昂贵并且具有规模限制。特别是,添加更大的超级电容器会增加硬件成本,包括额外的组件成本和额外的电路板空间两者。因此,外形尺寸和电路板空间通常是一个重大限制。尽管在某些情况下扫描通常会降低成本,但是扫描也有很大的限制,包括在多流装置中的限制。
原子写入是被完整执行或者如果不能被完整执行则根本不被执行的写入操作。原子写入防止由于电力故障或其他类型的中断而无法被完成的部分完成(也称为“撕裂”)的写入。通常,原子写入操作可以通过缓冲数据或替代地缓冲元数据来实现。由于写入放大、可用空间计算(accounting)问题和复杂度,缓冲数据的效率低于缓冲元数据。
发明内容
在一些布置中,一种非暂时性计算机可读介质,其包括计算机可读指令,以使得当由存储装置的至少一个处理器执行时,使所述处理器:将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;将所述列表中的基础条目配置为指向所述有条件条目;以及响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的物理位置是有效的,释放所述有条件条目。
在一些布置中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将逻辑信息从基础条目复制到所述有条件条目。
在一些布置中,所述基础条目包括到所述有条件条目而不是所述逻辑信息的指针。
在一些布置中,所述基础条目包括指向所述列表中的下一条目的另一指针。
在一些布置中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目的物理位置配置作为所述有条件条目的所述物理位置。
在一些布置中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目标记为无效。
在一些布置中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,释放所述有条件条目。
在一些布置中,所述有条件更新基于是否已发生介入的主机写入而被解析。
在一些布置中,一种存储装置,包括:非易失性存储器;以及控制器,其被配置为:将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;将所述列表中的基础条目配置为指向所述有条件条目;以及响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的物理位置是有效的,释放所述有条件条目。
在一些布置中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将逻辑信息从基础条目复制到所述有条件条目。
在一些布置中,所述基础条目包括到所述有条件条目而不是所述逻辑信息的指针。
在一些布置中,所述基础条目包括指向所述列表中的下一条目的另一指针。
在一些布置中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目的物理位置配置作为所述有条件条目的所述物理位置。
在一些布置中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目标记为无效。
在一些布置中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,释放所述有条件条目。
在一些布置中,所述有条件更新基于是否已发生介入的主机写入而被解析。
在一些布置中,一种方法,包括:将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;将所述列表中的基础条目配置为指向所述有条件条目;以及响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的物理位置是有效的,释放所述有条件条目。
在一些布置中,所述方法还包括:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目的物理位置配置作为所述有条件条目的所述物理位置。
在一些布置中,所述方法还包括:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目标记为无效。
在一些布置中,所述方法还包括:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,释放所述有条件条目。
附图说明
图1是示出根据各种布置的用于将数据写入存储装置、更新与数据相关联的元数据、以及响应于电力故障而保留元数据更新的示例机制的示意图;
图2是示出根据各种布置的包括使用存储器内日志的元数据更新的写入操作的示例方法的流程图;
图3是示出根据各种布置的用于使用存储器内日志来执行电力故障和恢复操作的示例方法的流程图;
图4是示出根据各种布置的使用写入查找列表和写入高速缓存标签列表来管理原子写入操作的示例的示意图;
图5是示出根据各种布置的用于使用写入查找列表和写入高速缓存标签列表来管理原子写入操作的示例方法的流程图;
图6是示出根据各种布置的用于使用写入查找列表和写入高速缓存标签列表来管理原子写入操作的示例方法的流程图;
图7是示出根据各种布置的有条件更新机制的示意图;
图8A、8B和8C是示出根据各种布置的使用存储器内日志的有条件更新的示意图;
图9是示出根据各种布置的使用存储器内日志的示例有条件更新方法的流程图;
图10是示出根据各种布置的用于使用存储器内日志来管理元数据的示例方法的流程图;
图11是示出根据各种布置的在检测到即将发生的中断时的GC的复制操作的状态的图;
图12是示出根据各种布置的在发生重新开始时的GC的复制操作的状态的图;
图13是示出根据各种布置的用于管理GC的元数据的示例方法的流程图;
图14是示出根据各种布置的在检测到即将发生的中断时的GC的复制操作的状态的图;
图15是示出根据各种布置的在发生重新开始时的GC的复制操作的状态的图。
具体实施方式
本文公开的布置涉及用于最小化响应于电力故障事件而清仓(flush)数据所需的时间以及用于最小化在电力恢复时准备好存储装置所需的扫描和时间的系统、方法和非暂时性计算机可读介质。也就是说,能够减少与电力故障事件相关的容性保持能量和准备就绪时间。此外,本文公开的布置允许提前完成命令,并且防止从闪存加载元数据页以完成主机写入命令。换言之,可以在不需要读取和写入闪存的情况下实现早期命令完成。通过实现存储器内日志,能够为分页FTL实现此类改进。
图1是示出根据各种布置的用于将数据写入存储装置100、更新与数据相关联的元数据、以及响应于电力故障而保留元数据更新的示例机制的框图。如图所示。如图1所示,存储装置100包括NVM 110。在一个示例中,NVM 110包括NAND闪存器件,每个闪存器件包括一个或多个裸片。每个裸片具有一个或多个面。每个面具有多个块,每个块具有多个页。NVM110具有数据页112a-112n,每个数据页是存储从主机(未示出)接收的数据的页。在存储装置100是分页SSD的示例中,NVM 110还具有元数据页114a-114n。元数据页114a-114n中的每一者是存储元数据的页,元数据例如但不限于数据的L2P映射信息(例如L2P映射表)、数据的状态信息、数据的属性信息等上。NVM 110还具有一个或多个电力故障页/块116a-116n,它们是NVM 110中的页或块,被保留用于在电力故障的情况下将要使用备用电源清仓的任何数据或元数据。
存储装置100包括控制器105,用于将数据101编程到数据页112a-112n中的一者或多者,使用FTL来确定数据101的元数据更新102(例如,确定L2P映射信息和其他类型的元数据),管理存储器内日志120,更新加载在SRAM 130中的元数据页114a-114n,将存储器内日志120清仓到电力故障页/块116a-116n中的一者或多者,等等。控制器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,即,响应于电力故障,列表125a-125n中的在存储器内日志120中当前有效(当前正在使用但尚未被删除)的那些列表被保存到NVM 110中的电力故障页/块116a-116n,而不保存元数据页114a-114n中的本身当前正在被更新(并且在分页后的元数据LUT中)的那些元数据页。在一些实施方式中,在存储器内日志120在NVM中被实现的情况下,可以省略将存储器内日志120保存到NVM 110中的单独的电力故障页/块116a-116n/省略从NVM 110中的单独的电力故障页/块116a-116n恢复存储器内日志120。
响应于通电恢复,通过将存储器内日志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))。在一些示例中,在写入缓冲器135中接收数据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中的一者或多者的物理地址。在一些示例中,250可以响应于FTL确定物理地址而被执行,以及可以与230、240和260中的一者或多者被同时执行。
在260,控制器105执行元数据更新。例如,控制器105将包含需要被更新的元数据的元数据页114a读取到SRAM 130中,并且将具有元数据更新102的更新后的元数据页114a连同元数据页114a上的其余未改变的元数据信息一起编程至NVM 110中作为更新后的元数据页114a。元数据页映射142包含给定逻辑地址的更新后的元数据页114a的位置。如所描述的,在步骤225中分配写入高速缓存标签,存储器内日志120在将元数据页114a读入分页元数据130之前使用该写入高速缓存标签,以及在元数据页114a正在被读取和加载之前、期间以及之后使用写入高速缓存标签将任何元数据更新102排队到元数据页114a。在一些示例中,260可以响应于在230元数据更新102被存储在列表125a中而被执行,以及可以与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中接收原子数据,该写入缓冲器135可以是断电保护缓冲器。
在520,控制器105确定用于原子数据的元数据。例如,控制器105的FTL可以为NVM110中的原子数据的每个逻辑地址确定新的物理地址,并将与原子数据相关联的逻辑地址映射到新的物理地址。更新后的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确定是否已经发生原子提交(atomic commit)。原子提交是指承诺存储在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。
换言之,每个写入查找标签或写入查找列表特定于给定的(但未知的)元数据页物理位置、元数据页索引、元数据页标识符和/或元数据页编号、以及写入高速缓存标签。(MUT0-n的)元数据到相同的写入查找标签或写入查找列表的分组是基于逻辑位置或对应于元数据的信息而在数学上可计算的。在一个示例中,假设已知元数据页114a-114n中的每一者可以存储a个MUT,并且逻辑信息可以被用于计算元数据页内的对齐。在该示例中,假设对齐与命令完全匹配,原子列表410的最初a个MUT(MUT0-MUTa-1)与第一个写入查找标签和写入查找列表420a相关联,原子列表410的其次a个MUT(MUTa–MUT2a-1)与第二个写入查找标签和写入查找列表420b相关联,以此类推。如果对齐不匹配,则在第一写入查找列表420a中的MUT将少于a。因此,如果原子写入跨越多个元数据页,则为每个段分配不同的写入查找标签。原子列表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所示的机制。控制器150从主机接收原子写入命令和与原子写入命令相关联的数据。
在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处。关于主机写入,在702,控制器105接收与逻辑地址相对应的新主机数据。作为响应,在704,控制器105(例如,FTL)针对新数据分配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、853、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:是),在940,基于基础条目802,复制iKey 864,并且在950释放有条件条目820,如图8B所示。基础条目802中的物理位置851被配置为第三物理位置。框940和框950可以响应于930:否而以任何合适的顺序执行。
另一方面,响应于确定控制器105确定第三物理位置是无效的(930:否),在960,基础条目802被标记为无效(841:无效),并且在970释放有条件条目820,如图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中。在一些示例中,在元数据被存储在存储器内日志120中之后,控制器105向主机确认写入命令。在一些示例中,将元数据存储在存储器内日志120中包括将元数据作为多个条目中的条目存储在存储器内日志120的列表(例如,列表125a-125n之一)中。列表存储元数据区域的更新。根据接收与多个条目相对应的数据的顺序,列表的多个条目被添加到列表中。
在1030,控制器105检测对存储装置100的操作的即将发生的中断。在一些示例中,检测对存储装置的操作的即将发生的中断包括检测电源故障、低功率、或待机中的至少一项。关于检测电源故障,控制器105可以接收来自存储装置100的电源的信号。关于检测低功率操作或待机操作的触发,控制器105可以接收或检测来自主机或另一个合适实体的指示符,类似于经历电力损失。在1040,在一些示例中,响应于检测到即将发生的中断,控制器105将存储器内日志编程到存储装置100的NVM 110。在其他示例中,如果存储器内日志120被存储在片上NV存储器中或被存储在具有以PCM或MRAM之类实现的NV裸片的多裸片模块类型控制器中,则可以省略框1040。
在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复制操作一次将若干MB的GC数据复制到可分布在若干裸片上的新块。
传统上,响应于电力损失,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并从NVM110获得关于编程是否已成功的反馈。在一些示例中,响应于基于来自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将前进以将a、b和c包括在第二区域1120中。然而,如果页a在页b和页c完成之前完成,则FTL波尾1150将前进以将a包括在第二区域1120中,并且一旦对页b和页c的编程完成,则将再次前进以将页b和页c包括在第二区域1120中。
第一区域1110与第三区域1130之间的点被称为操作的FTL波前1140。换句话说,FTL波前1140将具有元数据更新102的数据(例如,第一数据和第二数据)与尚未针对其生成元数据的数据(例如,第三数据)分离。当针对一些第一数据确认程序完成时,一些第一数据变成第二数据。相应地,一些第一区域1110变成第二区域1120,并且FTL波尾1150在块地址空间中向前移动。当用于一些第三数据的元数据被生成并且当一些第三数据被发送到NVM110时,一些第三数据变成第一数据。相应地,一些第三区域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的数据(例如,第四数据和第二数据)与没有针对其生成元数据的数据(例如,第五数据)分开。响应于重新开始(resume)该操作,GC操作(例如,GC写入)在FTL波前1140的检查点重新开始。FTL波尾1250位于FTL波前1140。当一些第五数据的元数据被生成并且当一些第五数据被发送到NVM 110时,一些第五数据变为第四数据。相应地,一些第五区域1230变成第四区域1210,并且FTL波前1245向前移动。
因此,响应于确定重新开始,在丢弃区域的末端建立FTL波尾1250处的新检查点,其是FTL波前1140。编程可以通过将第四数据复制到NVM 110来重新开始。
如上所述,由于复制操作的异步特性,控制器105可以确定关于某些数据的复制操作在某些检查点是否已经成功。响应于中断,将队列中在最近检查点之后的所有数据的元数据丢弃。参考复制操作1100和1200的状态,用于中断或即将发生的中断(imminentinterruption)的检查点对应于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)。在一些示例中,可以当在1315第二数据正被发送到NVM 110时,在1320确定第一元数据。
在1310,控制器105确定第二数据的第二元数据。从NVM 110的第二原始位置读取第二数据。每个第二原始位置是NVM 110的第二块、页或另一单元。第二数据是从第二块、页或另一单元读取到存储装置100的易失性存储器中的第二有效数据。第二元数据包括NVM110的第二新位置的每个的第二物理地址。第二元数据还包括将第二新位置的每个的第二物理地址映射到至少一个第一逻辑地址的第二映射。每个第一新位置是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的易失性存储器中的第一有效数据。第一元数据包括NVM110的第一新位置的每个的第一物理地址。第一元数据还包括将第一新位置的每个的第一物理地址映射到至少一个第一逻辑地址的第一映射。第一新位置的每个是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中,则第一数据的第一完成状态是未知的。在用于第二数据1120的编程的第二完成状态响应于检测到存储装置100的操作的即将发生的中断而完成的情况下,控制器105保存第二元数据。如果指向第一新位置的每个的第一物理地址的第一元数据(例如,映射信息)已经被丢弃,则第一数据被建设性地丢弃。换句话说,仅保存存储器内日志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示出了响应于接收到中断或即将发生的中断的指示(例如,指示电力损失、低功耗、睡眠、挂起(suspend)、待机等的信号)的复制操作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相对应的位置中的元数据包含具有针对紧接在元数据区域1460之前的一个或多个可映射数据单元的元数据条目的日志1480。尽管在图中仅示出了元数据区域1460,但是应当理解,每个或多个数据区域之后是包含与用于那些区域的可映射数据单元的元数据相对应的日志1480的元数据区域。
在确认数据被成功编程到NVM 110之后,并且响应于确定用于该数据的元数据1460已经被确认被保存到NVM 110,用于该数据的元数据(现在被称为第二数据)被认为是有效的并且被发送到存储器内日志。因此,所有第二数据都被认为是有效的,因为相应的元数据已经被保存在NVM 110中。尽管与附加区域1470相对应的附加数据是已经被闪存系统确认为已经被成功编程到NVM 110的数据,但是与附加数据相对应的元数据(被称为附加地丢弃的元数据)还没有被确认为已经被保存到NVM 110。因此,在检测到即将发生的中断时,用于附加数据的附加地丢弃的元数据保持在未知状态。
附加数据(或区域1470)和元数据(或元数据区域1460)之间的点被称为复制操作的FTL波尾1455。换句话说,FTL波尾1455将表示被确认已经被编程到NVM 110的数据的区域1420和1460(包括对应的日志1480)与表示被确认已经被编程到NVM 110的数据的附加区域1470分开,而不确认对应的日志1480已经被编程到NVM 110。FTL波尾1455被设置为检查点,使得在块中的FTL波尾1455之后的NVM 110中的要被编程的数据的任何元数据被丢弃。如上所述,区域中的数据的编程能包括将数据编程到许多NVM页,并且编程操作能不按顺序(由图13和图14中的箭头表示的顺序)地完成。然而,FTL波尾1455仅在其前进路径中的所有程序完成时前进。
附加数据(或区域1470)和第一数据(或第一区域1410)之间的点被称为复制操作的闪烁波尾(flash wave tail)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中的一些。响应于将第四数据发送到NVM110,第四数据1510的元数据被存储在合适的存储器装置(例如,波模块的存储器装置)中。响应于确认第四数据及其相关联的日志1480被成功编程到NVM 110,第四数据的元数据被认为是有效的。换句话说,尽管已经开始了第四数据的编程,但是在复制操作1500的状态下,第四数据的完成状态是未知的。第五数据是指还没有发送到NVM 110的数据。
第四数据(或第四区域1510)和无效数据(或无效区域1540)之间的点被称为操作1500的FTL波尾1550。换句话说,FTL波尾1550将表示无效数据的无效区域1540与表示还没有被确认已经被编程到NVM 110的数据的第四区域1510分开,所述第四区域也没有其相应的被确认已经被编程到NVM 110的存储器内日志120。第四数据(或第四区域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示出了大小一致的区域,在压缩数据的情况下,这些区域能具有不同的大小。
应当理解,所公开的过程中的步骤的特定顺序或层次是说明性方法的示例。基于设计偏好,应当理解,过程中的步骤的特定顺序或层次在保持在之前描述的范围内的情况下能重新排列。所附方法权利要求以示例顺序呈现了各个步骤的元素,并且不意味着限于所呈现的特定顺序或层次。
提供所公开实施方式的先前描述以使得所属领域的技术人员能够制作或使用所公开的主题。对这些实施方式的各种修改对于所属领域的技术人员将容易显而易见,且本文中界定的一般原理能在不脱离先前描述的精神或范围的情况下可以应用于其它实施方式。因此,先前描述不希望限于本文所示的实施方式,而是应被赋予与本文公开的原理和新颖特征一致的最广范围。
所说明和描述的各种示例仅作为示例提供以说明权利要求的各种特征。然而,关于任何给定示例示出和描述的特征不一定限于相关联的示例,并且可以与示出和描述的其它示例一起使用或组合。此外,权利要求并不旨在受任何一个示例限制。
前述方法描述和过程流程图仅作为说明性示例而提供,且不希望要求或暗示必须以所呈现的次序执行各种示例的步骤。如本领域技术人员将理解的,前述示例中的步骤的顺序可以以任何顺序执行。诸如“其后”、“然后”、“接下来”等词语不旨在限制步骤的顺序;这些词语仅用于引导读者通读对方法的描述。此外,任何对单数形式的权利要求元素的引用,例如使用冠词“一”、“一个”或“该”不应被解释为将该元素限制为单数。
结合本文所公开的示例而描述的各种说明性逻辑块、模块、电路和算法步骤能实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此可互换性,上文已大体上在其功能性方面描述了各种说明性组件、块、模块、电路和步骤。将此功能性实施为硬件还是软件取决于特定应用和强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为导致脱离本发明的范围。
用于实施结合本文所公开的示例而描述的各种说明性逻辑器件、逻辑块、模块和电路的硬件可用经设计以执行本文所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑电路、离散硬件组件或其任何组合来实施或执行。通用处理器可以是微处理器,但是,在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以被实施为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合、或者任何其它此种配置。或者,一些步骤或方法可由特定于给定功能的电路执行。
在一些示例性示例中,所描述的功能可以以硬件、软件、固件或其任意组合来实施。如果以软件实施,所述功能可作为一个或一个以上指令或代码存储于非瞬时性计算机可读存储介质或非瞬时性处理器可读存储介质上。本文所公开的方法或算法的步骤可以体现在处理器可执行软件模块中,该处理器可执行软件模块可以驻存在非瞬时性计算机可读或处理器可读存储介质上。非瞬时性计算机可读或处理器可读存储介质能够为能由计算机或处理器存取的任意存储介质。作为示例而非限制,此非瞬时性计算机可读或处理器可读存储介质能包括RAM、ROM、EEPROM、闪速存储器、CD-ROM或其它光学驱动存储装置、磁驱动存储装置或其它磁存储装置、或可被用于存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它介质。如本文中所使用,驱动器和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘驱动器和蓝光光盘,其中驱动器通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。上述各项的组合也包括在非瞬时性计算机可读和处理器可读介质的范围内。另外,方法或算法的操作可作为代码和/或指令中的一者或任何组合或集合而驻存在可并入到计算机程序产品中的非瞬时性处理器可读存储介质和/或计算机可读存储介质上。
提供所公开示例的先前描述以使所属领域的技术人员能够制作或使用本公开。所属领域的技术人员将容易明白对这些示例的各种修改、且在不脱离本公开的精神或范围的情况下,本文所界定的一般原理可应用于一些示例。因此,本公开无意限于本文中所展示的示例,而是应被赋予与所附权利要求书以及本文中所公开的原理和新颖的特征一致的最大范围。
Claims (20)
1.一种非暂时性计算机可读介质,其包括计算机可读指令,以使得当由存储装置的至少一个处理器执行时,使所述处理器:
将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;
将所述列表中的基础条目配置为指向所述有条件条目;以及
响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的物理位置是有效的,释放所述有条件条目。
2.根据权利要求1所述的非暂时性计算机可读介质,其中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将逻辑信息从基础条目复制到所述有条件条目。
3.根据权利要求2所述的非暂时性计算机可读介质,其中,所述基础条目包括到所述有条件条目而不是所述逻辑信息的指针。
4.根据权利要求2所述的非暂时性计算机可读介质,其中,所述基础条目包括指向所述列表中的下一条目的另一指针。
5.根据权利要求1所述的非暂时性计算机可读介质,其中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目的物理位置配置作为所述有条件条目的所述物理位置。
6.根据权利要求1所述的非暂时性计算机可读介质,其中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目标记为无效。
7.根据权利要求1所述的非暂时性计算机可读介质,其中,进一步使所述处理器:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,释放所述有条件条目。
8.根据权利要求1所述的非暂时性计算机可读介质,其中,所述有条件更新基于是否已发生介入的主机写入而被解析。
9.一种存储装置,包括:
非易失性存储器;以及
控制器,其被配置为:
将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;
将所述列表中的基础条目配置为指向所述有条件条目;以及
响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的物理位置是有效的,释放所述有条件条目。
10.根据权利要求9所述的存储装置,其中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将逻辑信息从基础条目复制到所述有条件条目。
11.根据权利要求10所述的存储装置,其中,所述基础条目包括到所述有条件条目而不是所述逻辑信息的指针。
12.根据权利要求10所述的存储装置,其中,所述基础条目包括指向所述列表中的下一条目的另一指针。
13.根据权利要求9所述的存储装置,其中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目的物理位置配置作为所述有条件条目的所述物理位置。
14.根据权利要求9所述的存储装置,其中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目标记为无效。
15.根据权利要求9所述的存储装置,其中,所述控制器进一步被配置为:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,释放所述有条件条目。
16.根据权利要求9所述的存储装置,其中,所述有条件更新基于是否已发生介入的主机写入而被解析。
17.一种方法,包括:
将有条件条目添加到存储器内日志中的列表中以用于与垃圾回收写入相关联的有条件更新;
将所述列表中的基础条目配置为指向所述有条件条目;以及
响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的物理位置是有效的,释放所述有条件条目。
18.根据权利要求17所述的方法,还包括:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目的物理位置配置作为所述有条件条目的所述物理位置。
19.根据权利要求17所述的方法,还包括:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,将所述基础条目标记为无效。
20.根据权利要求17所述的方法,还包括:响应于确定所述有条件更新被解析以使得在所述有条件条目中标识的所述物理位置是有效的,释放所述有条件条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/393195 | 2021-08-03 | ||
US17/393,195 US20230044942A1 (en) | 2021-08-03 | 2021-08-03 | Conditional update, delayed lookup |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705153A true CN115705153A (zh) | 2023-02-17 |
Family
ID=85153039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210930248.2A Pending CN115705153A (zh) | 2021-08-03 | 2022-08-03 | 有条件更新和延迟的查找 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230044942A1 (zh) |
CN (1) | CN115705153A (zh) |
TW (1) | TWI817638B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102583244B1 (ko) * | 2022-01-28 | 2023-09-26 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
JP2023136083A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5010505B2 (ja) * | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
US9213633B2 (en) * | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
EP3274832A4 (en) * | 2015-03-25 | 2018-10-24 | Intel Corporation | Byte level granularity buffer overflow detection for memory corruption detection architectures |
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 |
US11436200B2 (en) * | 2020-01-13 | 2022-09-06 | Vmware, Inc. | Fault tolerant parallel journaling for file systems |
-
2021
- 2021-08-03 US US17/393,195 patent/US20230044942A1/en active Pending
-
2022
- 2022-08-02 TW TW111128986A patent/TWI817638B/zh active
- 2022-08-03 CN CN202210930248.2A patent/CN115705153A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW202318209A (zh) | 2023-05-01 |
TWI817638B (zh) | 2023-10-01 |
US20230044942A1 (en) | 2023-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100843543B1 (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
US20190073277A1 (en) | Transaction Recovery Method in Database System, and Database Management System | |
CN106471478B (zh) | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 | |
US11467970B1 (en) | Metadata management in non-volatile memory devices using in-memory journal | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
CN110895514A (zh) | 映射表更新方法 | |
RU2728816C2 (ru) | Отслеживание "грязных" областей энергонезависимых носителей | |
US8255614B2 (en) | Information processing device that accesses memory, processor and memory management method | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US20190369892A1 (en) | Method and Apparatus for Facilitating a Trim Process Using Auxiliary Tables | |
CN108431783B (zh) | 访问请求处理方法、装置及计算机系统 | |
CN115705153A (zh) | 有条件更新和延迟的查找 | |
CN103577121A (zh) | 一种基于nand flash的高可靠线性文件存取方法 | |
WO2019118154A1 (en) | Write-ahead style logging in a persistent memory device | |
JP2013061799A (ja) | 記憶装置、記憶装置の制御方法およびコントローラ | |
TWI406127B (zh) | 更新使用者資料的方法 | |
CN103577574A (zh) | 一种基于nand flash的高可靠线性文件系统 | |
JPWO2008099786A1 (ja) | メモリ障害復旧方法、情報処理装置およびプログラム | |
US20150074336A1 (en) | Memory system, controller and method of controlling memory system | |
CN104516959A (zh) | 一种管理数据库日志的方法及装置 | |
US20240020240A1 (en) | Method for storing l2p table, system, device, and medium | |
JP5057887B2 (ja) | データ更新装置及びデータ更新方法及びデータ更新プログラム | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
TWI850721B (zh) | 記憶體內日誌 | |
US11650759B2 (en) | Method and apparatus of managing a non-volatile memory using an in-memory journal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |