CN114647594A - 非易失性存储器系统中的日志记录设备和方法 - Google Patents
非易失性存储器系统中的日志记录设备和方法 Download PDFInfo
- Publication number
- CN114647594A CN114647594A CN202110800758.3A CN202110800758A CN114647594A CN 114647594 A CN114647594 A CN 114647594A CN 202110800758 A CN202110800758 A CN 202110800758A CN 114647594 A CN114647594 A CN 114647594A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- memory device
- controller
- garbage collection
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced 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/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
- 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/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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开涉及一种存储器系统以及非易失性存储器系统中的日志记录设备和方法,该存储器系统包括:存储器装置,包括存储块;以及控制器,被配置为在开始针对存储器装置的垃圾收集之后,生成指示空闲存储块的数量是否满足参考的结果,基于该结果,针对请求选择性地执行日志记录操作,并且将通过垃圾收集所收集的数据编程在存储器装置中。
Description
相关申请的交叉引用
本专利申请要求于2020年12月17日提交的、申请号为10-2020-0177185的韩国专利申请的优先权,其全部公开通过引用并入本文。
技术领域
本文描述的一个或多个实施例涉及一种存储器系统中的日志记录设备和方法。
背景技术
便携式电子装置可以几乎随时随地被访问,并且例如包括移动电话、数码相机和笔记本电脑。这种装置可以配备有用作主存储装置和/或辅助存储装置的一个或多个半导体存储器。
半导体存储器表现出改善的稳定性和耐用性,不具有机械驱动部件(例如,机械臂),并且与硬盘相比实现了高数据访问速度和相对低的功耗。半导体存储器的示例包括,但不限于通用串行总线(USB)存储器装置、具有各种接口的存储卡和固态驱动器(SSD)。
发明内容
根据实施例,一种数据处理系统和用于操作该数据处理系统的方法可以包括诸如存储器系统和主机的组件和资源,并且能够基于组件和资源的使用来动态地分配用于组件之间的数据通信的多个数据路径。
本发明实施例可提供一种通过停止日志记录操作并执行快照操作(snapshotoperation),以在难以在包括非易失性存储器单元的存储器装置中分配可用于存储数据的存储块(例如,空闲存储块)的操作环境中,通过垃圾收集来容易地确保可用存储块,从而提高操作安全性的方法和设备。
进一步地,在根据本公开实施例的存储器系统中,当在电力不稳定的情况下执行关于数据输入/输出的日志记录操作时,空闲块的消耗可能持续,并且难以执行垃圾收集,使得获取空闲存储块被延迟。因此,为了确保存储器系统的运行安全性,可以提供一种通过执行快照操作而不执行日志记录操作,来在确保数据输入/输出的原子性的同时,减少空闲存储块的消耗的方法和装置。
在本公开的实施例中,一种存储器系统可以包括:存储器装置,包括存储块;以及控制器,被配置为在开始针对存储器装置的垃圾收集之后,生成指示空闲存储块的数量是否满足参考的结果,基于该结果,针对请求选择性地执行日志记录,并且将通过垃圾收集所收集到的数据编程在存储器装置中。
该控制器可以被配置为当空闲存储块的数量小于参考时,停止日志记录操作,并且与快照操作一起将数据编程在存储器装置中。
该控制器可以被配置为在快照操作期间,存储基于针对根据垃圾收集的数据的编程操作而改变的逻辑到虚拟地址映射信息、有效页面信息和无效页面信息。
该控制器可以被配置为使用逻辑到虚拟地址映射信息来执行恢复操作或者基于逻辑到虚拟地址映射信息来跟踪存储数据的位置。该位置由于垃圾收集而被改变。
该控制器可以被配置为当由于突然断电(SPO)而导致逻辑到虚拟地址映射信息不完整时,在经历垃圾收集的目标块中找出有效数据。
该控制器可以被配置为基于结果,通过快照操作来在存储器装置中标记块分配紧急机制的开始和结束。
该日志记录操作可以包括以下中的至少一个:用于将通过垃圾收集所收集的数据存储在存储器装置的日志区域中,并且当经过预设时间量或日志区域没有可用空间时执行检查点操作的第一进程;或者用于将通过垃圾收集所收集的数据存储在日志区域中,并且将数据的位置变化反映在文件系统区域中的第二进程。
在本公开的另一实施例中,一种操作存储器系统的方法可以包括:触发垃圾收集;生成指示包括多个存储块的存储器装置中的空闲存储块的数量是否满足参考的结果;基于该结果,针对请求选择性地执行日志记录操作;并且将通过垃圾收集所收集的数据编程在存储器装置中。
该方法可以进一步包括:当空闲存储块的数量小于参考时,停止日志记录操作,并且与快照操作一起将数据编程在存储器装置中。
该快照操作可以包括:存储基于针对根据垃圾收集的数据的编程操作而改变的逻辑到虚拟地址映射信息、有效页面信息和无效页面信息的操作。
该方法可以进一步包括:使用逻辑到虚拟地址映射信息来执行恢复操作或者基于逻辑到虚拟地址映射信息来跟踪存储数据的位置,其中该位置由于垃圾收集而被改变。
该方法可以进一步包括:当由于突然断电(SPO)而导致逻辑到虚拟地址映射信息不完整时,在经历垃圾收集的目标块中找出有效数据。
该快照操作可以包括:基于结果,通过快照操作来在存储器装置中标记块分配紧急机制的开始和结束的操作。
该日志记录操作可以包括以下中的至少一个:用于将通过垃圾收集所收集的数据存储在存储器装置的日志区域中,并且在经过预设时间量或日志区域没有可用空间时执行检查点操作的第一进程;或者用于将通过垃圾收集所收集的数据存储在日志区域中,并且将数据的位置变化反映在文件系统区域中的第二进程。
在本公开的另一实施例中,一种控制器可以经由至少一个数据路径联接到包括多个存储块的存储器装置,每个存储块包括多个非易失性存储器单元。该控制器可以包括至少一个处理器、至少一个存储器和逻辑,该逻辑的至少一部分包括在硬件中,该逻辑:触发垃圾收集;生成指示包括多个存储块的存储器装置中的空闲存储块的数量是否满足参考的结果;基于该结果,针对请求选择性地执行日志记录;并且将通过垃圾收集所收集的数据编程在存储器装置中。
该逻辑可以被配置为:当空闲存储块的数量小于参考时停止日志记录操作,并且与快照操作一起将数据编程在存储器装置中。
该逻辑可以被配置为:在快照操作期间,存储基于针对根据垃圾收集的数据的编程操作而改变的逻辑到虚拟地址映射信息、有效页面信息和无效页面信息。
该逻辑可以被配置为:使用逻辑到虚拟地址映射信息来执行恢复操作或者基于逻辑到虚拟地址映射信息来跟踪存储数据的位置。
该逻辑可以被配置为:当由于突然断电(SPO)而导致逻辑到虚拟地址映射信息不完整时,在经历垃圾收集的目标块中找出有效数据。
该逻辑可以被配置为:基于结果,通过快照操作来在存储器装置中标记块分配紧急机制的开始和结束。
附图说明
本文参照附图进行描述,其中在所有附图中,相同的附图标记指代相同的部件。
图1示出存储器系统的实施例。
图2示出控制器的实施例。
图3示出数据处理系统的实施例。
图4示出存储器系统的实施例。
图5示出存储块的实施例。
图6示出有效页面表的示例。
图7示出操作存储器系统的方法的实施例。
图8示出当空闲块的数量满足参考时存储器系统的操作的实施例。
图9示出当空闲块的数量不满足参考时存储器系统的操作的实施例。
具体实施方式
下面参照附图描述本公开的各个实施例。然而,可以不同地配置或布置本公开的元件和特征以形成可以是所公开实施例中的任意一个的变型的其他实施例。
在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如在所附权利要求书中所使用的,这些术语指定所陈述元件的存在,并且不排除一个或多个其他元件的存在或添加。权利要求书中的术语不排除设备包括附加组件(例如,接口单元、电路等)。
在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其他实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的引用旨在表示任何这样的特征被包括在本公开的一个或多个实施例中,但是在相同的实施例中可能组合或者可能不一定被组合。
在本公开中,可以将各种单元、电路或其他组件描述或要求保护为“被配置为”执行一个或多个任务。在这样的语境下,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。因此,即使当所指定的块/单元/电路/组件当前不工作(例如,未接通或未激活)时,也可以说该块/单元/电路/组件被配置为执行任务。与“被配置为”一起使用的块/单元/电路/组件包括硬件,例如电路、存储可运行的程序指令以实现操作的存储器等。另外,“被配置为”可以包括由软件和/或固件(例如,运行软件的FPGA或通用处理器)操纵,以能够执行相关任务的方式进行操作的通用结构(例如,通用电路)。“被配置为”还可以包括使制造过程(例如,半导体制造设施)适于制造适于实施或执行一个或多个任务的装置(例如,集成电路)。
如本公开中所使用的,术语“电路”可以指以下的全部内容:(a)纯硬件电路实施方案(诸如仅在模拟和/或数字电路中的实施方案),以及(b)电路和软件(和/或固件)的组合,诸如(如适用于):(i)处理器的组合,或(ii)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器)的部分,以及(c)需要软件或固件来操作的电路,诸如微处理器或微处理器的一部分,即使该软件或固件物理上不存在。“电路”的这种定义适用于本申请中、包括任何权利要求中的该术语的所有使用。作为另一示例,如在本申请中所使用的,术语“电路”还涵盖仅处理器(或多个处理器)或处理器的一部分以及它的(或它们的)所附软件和/或固件的实施方案。例如,如果适用于特定的权利要求要素,则术语“电路”还涵盖存储装置的集成电路。
如本文所用的,术语“第一”、“第二”、“第三”等被用作它们之后的名词的标签,并且不表示任何类型的排序(例如,空间、时间、逻辑等)。术语“第一”和“第二”不一定表示第一值必须写在第二值之前。此外,尽管本文可以使用这些术语来标识各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与否则具有相同或相似名称的另一个元件区分开。例如,可以将第一电路与第二电路区分开。
此外,术语“基于”用于描述影响确定结果的一个或多个因素。该术语不排除可能影响确定结果的其他因素。也就是说,确定结果可以仅基于那些因素或者至少部分地基于那些因素。考虑短语“基于B确定A”。虽然在这种情况下,B是影响A的确定结果的因素,但是这种短语不排除A的确定结果也基于C。在其他情况下,可以仅基于B来确定A。
在本文中,数据的项或数据项可以是位的序列。例如,数据项可以包括文件内容、文件的一部分、存储器中的页面、面向对象程序中的对象、数字消息、数字扫描图像、视频的一部分或音频信号或可由一系列的位表示的任何其他实体。根据实施例,数据项可以包括离散对象。根据另一实施例,数据项可以包括两个不同组件之间的传输包内的信息单元。
现在将参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出存储器系统110的实施例,存储器系统110可以包括存储器装置150和控制器130。存储器装置150和控制器130可以被认为是例如彼此物理分离的组件或元件。存储器装置150和控制器130可以经由至少一个数据路径,例如通道和/或通路来连接。
根据实施例,可以在功能上划分存储器装置150和控制器130。进一步地,根据实施例,可以利用单个芯片或多个芯片来实施存储器装置150和控制器130。控制器130可以响应于从外部装置输入的请求来执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,将存储器装置150中包括的多个非易失性存储器单元中存储的数据传送到控制器130。
存储器装置150可以包括多个存储块60。存储块60可以包括一组非易失性存储器单元,通过单个擦除操作来一起移除该组非易失性存储器单元中的数据。每个存储块60可以包括页面,该页面包括例如可以在单个编程操作期间一起存储数据或者可以在单个读取操作期间一起输出数据的非易失性存储器单元。例如,一个存储块可以包括多个页面。
存储器装置150可以包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以是逻辑分区或物理分区,该逻辑分区或物理分区包括至少一个存储块、控制包括多个非易失性存储器单元的阵列的驱动电路,以及可以临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲器。
根据实施例,存储器管芯可以包括至少一个存储器平面,并且例如,可以被理解为在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径(例如,通道)连接到控制器130。每个存储器管芯可以包括与控制器130交换数据条和信号的接口。
根据实施例,存储器装置150可以包括至少一个存储块60、至少一个存储器平面或至少一个存储器管芯。图1所示的存储器装置150的内部配置可以根据存储器系统110的性能而不同。本公开的实施例不限于图1所示的内部配置。
参照图1,存储器装置150可以包括能够向存储块供应一个或多个电压的电源70。例如,电源70可以向存储块60中的非易失性存储器单元供应读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers。例如,在读取存储块60中的非易失性存储器单元中存储的数据的读取操作期间,电源70可以将读取电压Vrd供应给所选择非易失性存储器单元。
在将数据存储在存储块60中的非易失性存储器单元中的编程操作期间,电源70可以将编程电压Vprog供应给所选择非易失性存储器单元。而且,在对所选择非易失性存储器单元执行读取操作或编程操作期间,电源70可以向未选择非易失性存储器单元供应通过电压Vpass。
在擦除存储块60中的非易失性存储器单元中存储的数据的擦除操作期间,电源70可以将擦除电压Vers供应给存储块60。
存储器装置150可以基于执行了哪个操作来存储关于供应给存储块60的各种电压的信息。例如,当存储块60中的非易失性存储器单元可以存储多位数据时,可以使用读取电压Vrd的多个电平来识别或读取多位数据。存储器装置150可以包括表,该表包括与读取电压Vrd的多个电平相对应的信息,读取电压Vrd的多个电平对应于多位数据。例如,该表可以包括存储在寄存器中的偏置值,每个偏置值对应于读取电压Vrd的特定电平。用于读取操作的读取电压Vrd的偏置值的数量可以限制在预设范围内。并且,偏置值可以被量化。
响应于从外部装置输入的请求,控制器130可以执行数据输入/输出操作。例如,当控制器130执行与从外部装置输入的读取请求相对应的读取操作时,存储在存储器装置150中的多个非易失性存储器单元中的数据可以被传送到控制器130。对于读取操作,输入/输出(I/O)控制器192可以通过收发器198将读取命令传输到存储器装置150。收发器198可以将读取命令传输到存储器装置150,并且接收从存储器装置150输出的数据。收发器198可以将从存储器150输出的数据存储在存储器144中。输入/输出(I/O)控制器192可以响应于读取请求而将存储在存储器144中的数据输出到外部装置。
另外,输入/输出控制器192可以通过收发器198,将与写入请求一起从外部装置输入的数据传输到存储器装置150。在将数据存储在存储器装置150中之后,输入/输出控制器192可以向外部装置传输指示数据被成功编程的写入请求的响应。
在某些情况下,可能难以对存储器装置150中的非易失性存储器单元进行重写。这可能导致外部装置使用的地址(例如,逻辑地址)与存储器系统110中使用的地址(例如,物理地址)之间的差异。例如,可以假设,外部装置已经请求存储器系统110以存储对应于特定逻辑地址的数据项,并且在经过一段时间后,请求存储器系统110存储对应于相同逻辑地址的更新数据项。
在响应于先前请求而存储数据项之后,存储器系统110可能无法将更新数据项存储在存储了数据项的相同位置处(可能无法重写存储器装置150)。因此,存储器系统110可以生成和控制连接由外部装置使用的地址(例如,逻辑地址)和存储器系统110中使用的地址(例如,物理地址)的映射信息。例如,闪存转换层(FTL)240(例如,参见图2和图3的实施例)可以在不管存储器系统110的上述特性的情况下,支持数据项能够被存储在存储器装置150中,并且可将所存储的数据输出到外部装置。
生成和控制存储器系统110中的映射信息的方法可以分为三种类型:页面级映射方法、块级映射方法和混合映射方法。例如,页面级映射方法可以以每个页面为单位相互映射两个地址(例如,逻辑地址和物理地址)。块级映射方法可以以块为单位映射两个地址。混合映射方法可以被实施为页面级映射方法和块级映射方法的组合。
在页面级映射方法中,闪速存储器的存储空间越大,映射表的大小就变得越大。这是因为映射是基于页面执行的,页面可以是比存储块或存储器平面更小的写入操作或编程操作的单元组。因此,分配用于映射表的存储器144的存储空间也可能增加。例如,在存储器系统110具有1TB存储空间来用于每4KB页面存储4字节的数据项的情况下,1GB的存储器144可以用于加载和控制所有映射信息。为了减小映射表的大小,块级映射方法可以使用基于包括多个页面的存储块而创建的映射表。块级映射方法可减小映射表的大小,但可降低存储空间效率,并且可能发生多次擦除操作。
如前所述,混合映射方法可以被实施为块级映射方法和页面级映射方法的组合。存储器装置150中的部分空间可以用作专用于更新数据项的日志缓冲器。因此,当使用混合映射方法时,存储器装置150可以包括两个区域以用于存储数据项(例如,包括至少一个日志存储块的日志区域和包括至少一个存储块的数据区域)。至少一个日志存储块可以用于存储更新数据项,该更新数据项对应于先前存储在数据区域中的数据项。页面级映射方法可以用于日志区域,而块级映射方法可以用于数据区域。在混合映射方法中,日志存储块的数量可以根据页面映射信息的大小而变化。
根据实施例,在页面级映射方法中,每个逻辑页面可以映射到存储器装置150中的每个物理页面。因此,对于分配、指定或映射物理地址,页面级映射方法可比块级映射方法更灵活。在页面级映射方法中,存储器装置150中的存储块60可以形成类似于在日志结构文件系统中使用的日志格式。当将数据项写入存储器装置150时,可以将数据项和数据项的相关信息简单地添加到日志格式的末端。
当日志格式的空闲空间低于预设阈值时,可触发垃圾收集。在选择特定存储块之后,控制器130复制在日志格式的末端处的相应存储块的所有有效页面(即,存储尚未更新的最近数据项的页面)。可以对相应存储块执行擦除操作,并且可将相应存储块添加至空闲块列表。
例如,当更新元数据时,存储器系统110可以使用执行日志(logging)操作或日志记录(journaling)操作的文件系统(例如,Ext4或XFS)。在一个实施例中,可以至少基于将如何执行日志操作或日志记录操作,来将日志操作分类为重做日志操作和撤销日志操作。例如,重做日志操作可以首先将新的数据项(例如,编程数据项)存储到日志区域,然后当经过一定时间段或日志区域不足时可以执行检查点进程。例如,检查点进程可以包括将存储在日志区域中的数据项复制或移动到数据区域(例如,文件系统区域)。
撤消日志操作可以对应于以下方法:将新数据项存储在日志区域中并且将相同数据项反映在数据区域(例如,文件系统区域)中。稍后,例如当数据项不再保留在日志区域中时,撤消日志操作可以擦除存储在日志区域中的数据项。
在某些情况下,撤消日志操作可能导致对日志区域的额外写入操作,写入操作中的开销可能会增加(例如,翻倍)。然而,在重做日志操作中,最新数据项存储在日志区域中,而不是数据区域中。因此,当执行对最新数据项的读取操作时,在跟踪最新数据时可能产生开销。日志记录管理器194(例如,如图1所示)可以控制在存储器系统110中执行的上述日志操作或日志记录操作。
当存储器装置150中的空闲块的数量足够(例如,大于或等于预定数量)时,执行上述日志操作或日志记录操作可能没有困难。然而,当存储器装置150中的空闲块的数量不足(例如,低于预定数量)或不满足预设条件时,存储器系统110可执行或触发垃圾收集。
如上所述,当即使在执行垃圾收集的过程中也持续地执行日志操作或日志记录操作时,用于获得空闲块的时间也可能会延长。当存储器装置150中的空闲块的数量不满足预设标准时,存储器系统110可以根据垃圾收集来中断、中止或停止关于数据项的复制或移动的日志操作或日志记录操作。而且,在实施例中,当日志记录操作被中断、中止或停止时,存储器系统110可以执行关于一些元数据(诸如逻辑到虚拟地址映射信息L2V等)的快照操作。
因为当断电后再次施加电力时,存储器系统110可以通过日志记录操作或快照操作来保证原子性(atomicity),所以可以修复或恢复与日志记录操作或快照操作一起存储的数据项。
图2示出图1中所示的控制器130的内部配置的实施例。
参照图2,控制器130可以包括闪存转换层(FTL)240,其可分为三层:地址转换层ATL;虚拟闪存层VFL;以及闪存接口层FIL。例如,地址转换层ATL可以将从文件系统传输的逻辑地址LA转换为逻辑页面地址。地址转换层ATL可以执行关于逻辑地址空间的地址转换过程。也就是说,地址转换层ATL可以基于将闪速存储器140的逻辑页面地址LPA映射到从主机传输的逻辑地址LA的映射信息,来执行地址转换过程。这种逻辑到逻辑地址映射信息(例如,被称为L2L映射)可以存储在存储器装置150中的存储元数据的区域中。
虚拟闪存层VFL可以将由地址转换层ATL映射的逻辑页面地址LPA转换为虚拟页面地址VPA。虚拟页面地址VPA可以对应于虚拟存储器装置的物理地址,例如虚拟页面地址VPA可以对应于存储器装置150中的存储块60。如果在存储器装置150中的存储块60之中存在坏块,则虚拟闪存层VFL可以排除该坏块。此外,虚拟闪存层VFL可以包括恢复算法,该恢复算法用于对扫描区域进行扫描以恢复存储在存储器装置150中的逻辑到虚拟地址映射信息(L2V映射)和用于存储用户数据的数据区域中的映射信息。恢复算法可以恢复逻辑到虚拟地址映射信息(L2V映射)。基于通过这种恢复算法恢复的逻辑到虚拟地址映射信息(L2V映射),虚拟闪存层VFL可以执行关于虚拟地址空间的地址转换过程。
闪存接口层FIL可以将虚拟闪存层VFL的虚拟页面地址转换为存储器装置150的物理页面地址。闪存接口层FIL执行用于与存储器装置150接口连接的低层级操作。例如,闪存接口层FIL可以包括用于控制存储器装置150的硬件的低层级驱动器,用于检查和校正从存储器装置150传输的数据中的错误的错误校正码(ECC),以及用于执行诸如坏块管理(BBM)的操作的模块。
参照图1至图2,当存储器装置150中的空闲块数量不满足预设条件时,存储器系统110可以中断、中止或停止关于经历垃圾收集的数据项的数据复制或移动的日志操作或日志记录操作。在垃圾收集中,存储在目标存储块(其随后将被擦除)中的有效数据项首先被复制到另一存储块。例如,即使停止了用于复制或移动根据垃圾收集的数据项的日志操作或日志记录操作,在上述虚拟闪存层VFL中产生的逻辑到虚拟地址映射信息(L2V映射)也被存储在存储器装置150中。因此,即使不执行日志操作或日志记录操作,存储器系统110也可以根据垃圾收集而跟踪所复制或移动的数据的位置,而且响应于来自外部装置的请求来读取所复制或移动的数据。
进一步地,当在没有进行关于垃圾收集中的所复制数据项的日志操作或日志记录操作的情况下,关闭电源时,存储器系统可以在先前位置(例如,在目标存储块中)找到该数据项。如果发生诸如突然断电(SPO)的情况,并且无法保存在虚拟闪存层(VFL)中生成的逻辑到虚拟地址映射信息(L2V),则可能不会对目标存储块执行根据垃圾收集的擦除操作。在该擦除操作之前,可以通过访问目标存储块来从先前位置获取有效数据项(最新数据项)。
在日志记录操作被停止并且与快照操作一起将数据存储在存储器装置150中时,存储器系统110可以通过执行垃圾收集来增加空闲块的数量。当通过垃圾收集获得新的空闲存储块并且空闲块的数量满足预设条件时,存储器系统110可以再次执行日志操作或日志记录操作。
如上所述,存储器系统110可以响应于存储器装置150中的空闲存储块的数量来确定是否执行日志操作或日志记录操作。因此,可以避免当空闲存储块的数量变为不足时存储器系统110变为卡住状态。此外,存储器系统110仍可保证基于从外部装置输入的请求而被读取或编程的数据的原子性,从而提高数据输入/输出操作的安全性和可靠性。
图3和图4示出可由存储器系统110执行的操作的实施例。
参照图3,数据处理系统100可以包括与诸如存储器系统110的存储器系统接合或联接的主机102。主机102可以包括便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)或非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
主机102还可以包括至少一个操作系统(OS),其可以控制在主机102中执行的功能和操作。OS可以提供与存储器系统110可操作地接合的主机102与意图将数据存储在存储器系统110中的用户之间的互操作性。OS可以支持与用户请求相对应的功能和操作。
通过示例而非限制的方式,可根据主机102的移动性将OS分类为通用操作系统或移动操作系统。根据系统要求或用户环境,可以将通用操作系统分为个人操作系统和企业操作系统。与个人操作系统相比,企业操作系统可以专门用于获得和支持高性能计算。
移动操作系统可以用于支持用于移动性的服务或功能(例如,省电功能)。在一个实施例中,主机102可以包括多个操作系统。主机102可以基于用户请求来运行与存储器系统110互锁的多个操作系统。主机102可以将与用户请求相对应的多个命令传输到存储器系统110,从而在存储器系统110内执行与命令相对应的操作。
存储器系统110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以将从存储器装置150读取的数据项提供给主机102,并且可以执行写入操作(或编程操作)以将从主机102输入的数据项存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制和管理用于数据读取、数据编程、数据擦除等的内部操作。
根据实施例,控制器130可以包括主机接口132、处理器134、错误校正电路138、电源管理单元(PMU)140、存储器接口142和存储器144。关于实施例之中的存储器系统110,图3所示的控制器130中的组件可以根据结构、功能、操作性能等而变化。
例如,存储器系统110可以利用与主机102电联接的各种类型的存储装置中的任意一种并且根据主机接口的协议来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。可以基于存储器系统110的实施方案来添加或省略控制器130中的组件。
主机102和存储器系统110可以包括用于根据一种或多种预定协议来传输和接收信号、数据项等的控制器或接口。例如,存储器系统110中的主机接口132可以包括能够将信号、数据项等传输到主机102或接收从主机102输入的信号、数据项等的设备。
控制器130中的主机接口132可以接收从主机102输入的信号、命令(或请求)和/或数据项。例如,主机102和存储器系统110可以使用预定协议在彼此之间传输和接收数据项。由主机102和存储器系统110支持的、用于发送和接收数据项的协议或接口的示例包括:通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIE)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动工业处理器接口(MIPI)等。根据实施例,主机接口132可以是一种用于与主机102交换数据项的层,并且可以利用被称为主机接口层(HIL)的固件来实施或驱动。
电子集成驱动器(IDE)或高级技术附件(ATA)可以用作传输和接收数据的接口中的一个,并且例如,可以使用包括40条并行连接的布线的电缆来支持主机102和存储器系统110之间的数据传输和接收。当多个存储器系统110连接到单个主机102时,可以使用多个存储器系统110所连接到的位置或拨码开关,来将存储器系统110划分为主设备和从设备。设置为主设备的存储器系统110可以用作主存储器装置。IDE(ATA)可以包括例如快速ATA、ATAPI和增强型IDE(EIDE)。
串行高级技术附件(SATA)是一种与由电子集成驱动器(IDE)装置所使用的、各种ATA标准的并行数据通信接口兼容的串行数据通信接口。可将IDE接口中的40条布线减少为SATA接口中的6条布线。例如,用于IDE的40个并行信号可以被转换为用于SATA的6个串行信号,以在彼此之间传输。SATA由于更快的数据传输和接收速率以及在主机102中的用于数据传输和接收的较少资源消耗而被广泛使用。SATA可以支持将多达30个外部装置与主机102中的单个收发器连接。另外,SATA可以支持热插拔(hot plugging),该热插拔允许即使在主机102和另一装置之间正在执行数据通信时,也可将外部装置附接到主机102或将外部装置与主机102分离。因此,即使在主机102通电时,存储器系统110也可以像通用串行总线(USB)支持的装置那样,作为附加装置被连接或断开。例如,在具有eSATA端口的主机102中,可以像外部硬盘一样自由地拆卸存储器系统110。
小型计算机系统接口(SCSI)是一种用于在计算机、服务器和/或其他外围装置之间进行连接的串行数据通信接口。与诸如IDE和SATA的其他接口相比,SCSI可以提供高传输速度。在SCSI中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是可以通过并行数据通信来执行主机102和每个外围装置之间的数据传输和接收。在SCSI中,较容易将诸如存储器系统110的装置连接到主机102或从主机102断开。SCSI可以支持15个其他装置与主机102中的单个收发器的连接。
串列SCSI(SAS)可以被理解为SCSI的串行数据通信版本。在SAS中,不仅主机102和多个外围装置串联连接,而且主机102和每个外围装置之间的数据传输和接收也可以以串行数据通信方案来执行。SAS可以通过串行电缆,而不是并行电缆支持主机102和外围装置之间的连接,从而容易地使用SAS管理设备,并且增强或提高操作可靠性和通信性能。SAS可以支持八个外部装置与主机102中包括的单个收发器的连接。
高速非易失性存储器(NVMe)是一种至少基于高速外围组件互连(PCIe)的接口,该高速外围组件互连(PCIe)被设计为增强配备有非易失性存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性。PCIe可以使用插槽或专用电缆来连接主机102(例如,计算装置)和存储器系统110(例如,外围装置)。例如,PCIe可以使用多个引脚(例如,18引脚、32引脚、49引脚、82引脚等)和至少一条布线(例如,x1、x4、x8、x16等)以实现每秒数百MB以上(例如,250MB/s、500MB/s、984.6250MB/s、1969MB/s等)的高速数据通信。根据实施例,PCIe方案可以实现每秒数十至数百千兆位的带宽。使用NVMe的系统可以高效地使用诸如SSD的非易失性存储器系统110的运行速度,其中非易失性存储器系统110以比硬盘更高的速度进行操作。
根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)连接。通用串行总线(USB)是一种可扩展的、可热插拔即插即用的串行接口,其可以在主机102和诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间提供经济高效的标准连接。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
参照图3,错误校正电路138可以校正待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位,错误校正电路138可以包括错误校正码(ECC)编码器和ECC解码器。ECC编码器可以对待编程在存储器装置150中的数据执行错误校正编码,以生成添加奇偶校验位的经编码数据,并且将经编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ECC解码器可以检测并校正从存储器装置150读取的数据中包含的错误。
例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可以确定错误校正解码是否已经成功并且输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用在ECC编码过程期间生成的奇偶校验位来校正所读取数据中的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138可以不校正错误位,而是可以输出指示校正错误位失败的错误校正失败信号。
根据实施例,错误校正电路138可以基于编码调制来执行错误校正操作。示例包括基于低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(BCH)码、涡轮码、里德-所罗门(RS)码、卷积码、递归系统码(RSC),网格编码调制(TCM)以及分组编码调制(BCM)等的编码调制。错误校正电路138可以包括基于上述代码中的至少一个来执行错误校正操作的电路、模块、系统和/或装置。
例如,ECC解码器可以对从存储器装置150传输的数据执行硬判定解码或软判决解码。硬判决解码可以被理解为针对错误校正而在广义上分类的两种方法中的一种。硬判决解码可以包括通过从存储器装置150中的非易失性存储器单元读取数字数据“0”或“1”来校正错误的操作。因为硬判定解码处置二进制逻辑信号,所以电路/算法设计或配置可以比软判决解码更简单并且处理速度可以更快。
软判决解码可以通过两个或更多个量化值(例如,多位数据、近似值、模拟值等)来量化存储器装置150中的非易失性存储器单元的阈值电压,以便基于两个或更多个量化值来校正错误。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个字母表或量化值,然后基于通过将量化值表征为诸如条件概率或可能性的信息的组合而生成的信息来执行解码。
根据实施例,在针对软判决解码而设计的方法之中,ECC解码器可以使用低密度奇偶校验和生成器矩阵(LDPC-GM)码。低密度奇偶校验(LDPC)码使用一种算法,该算法可以根据可靠性以若干个位从存储器装置150中来读取数据的值,而不是像硬判决解码那样简单地读取数据1或0,并且通过消息交换来迭代地重复该过程以便提高值的可靠性。然后,这些值最终被确定为数据1或0。例如,使用LDPC码的解码算法可以被理解为概率解码。
在硬判决解码中,从非易失性存储器单元输出的值被编码为0或1。与硬判定解码相比,软判决解码可以基于随机信息确定非易失性存储器单元中存储的值。关于位翻转(其可以被认为是在存储器装置150中可能发生的错误),软判决解码可以提供提高的校正错误和恢复数据的可能性,并且提供经校正数据的可靠性和稳定性。LDPC-GM码可以具有内部LDGM码可以与高速LDPC码串联连接的方案。
根据实施例,ECC解码器可以使用例如低密度奇偶校验卷积码(LDPC-CC)码来进行软判决解码。LDPC-CC码可以具有基于可变块长度和移位寄存器来使用线性时间编码和管线解码的方案。
根据实施例,ECC解码器可以使用例如对数似然比涡轮码(LLR-TC)来进行软判决解码。对数似然比(LLR)可以被计算为采样值与理想值之间的距离的非线性函数。另外,涡轮码(TC)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
电力管理单元(PMU)140可以控制控制器130中的电力。PMU 140可以监测供应给存储器系统110的电力(例如,供应给控制器130的电压),并且将电力提供给控制器130中的组件。当供应给存储器系统110的电力不稳定时,PMU 140不仅可以检测通电或断电,还可以生成触发信号以使存储器系统110能够紧急地备份当前状态。根据实施例,PMU 140可以包括能够积蓄可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以便允许控制器130响应于从主机102输入的命令或请求来控制存储器装置150。在存储器装置150是闪速存储器的情况下,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号,并且可以处理输入到存储器装置150或从存储器装置150输出的数据。例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处置控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过被称为闪存接口层(FIL)的固件来实施或由其驱动,以用于与存储器装置150交换数据。
根据实施例,存储器接口142可以支持开放式NAND闪存接口(ONFi)、切换(toggle)模式等,以用于与存储器装置150进行数据输入/输出。例如,ONFi可以使用数据路径(例如,通道、通路等),该数据路径包括至少一条能够支持以8位或16位数据为单位进行双向传输和接收的信号线。控制器130与存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)和切换双倍数据速率(DDR)的至少一个接口来实现。例如,图1中描述的用于编程数据项的操作以及日志记录操作或快照操作可以由用于在控制器130和存储器装置150之间接口连接数据通信的装置或模块来执行。
存储器144可以是存储器系统110或控制器130中的一种工作存储器,同时存储针对存储器系统110和控制器130中的操作而出现或传递的临时数据或事务数据。例如,在响应于来自主机102的请求而将从存储器装置150输出的读取数据输出到主机102之前,存储器144可以临时存储该读取数据。另外,控制器130可以在将从主机102输入的写入数据编程到存储器装置150中之前,将该写入数据临时存储在存储器144中。当控制器130控制存储器装置150的诸如数据读取、数据写入、数据编程、数据擦除等操作时,可以将在存储器系统110的控制器130和存储器装置150之间传输或生成的数据项存储在存储器144中。
除了读取数据或写入数据之外,存储器144还可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括为命令队列分配的多个区域、编程存储器、数据存储器、图1所示的写入缓冲器/高速缓存、图2所示的读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。控制器130可以在存储器144中分配一些存储空间,以用于被建立为执行数据输入/输出操作的组件。例如,在存储器144中建立的写入缓冲器可以用于临时存储用于编程操作的目标数据。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或这两者来实施。尽管图2示出存储器144设置在控制器130内,但是实施例不限于此。存储器144可以在外部并且联接到控制器130。例如,存储器144可以通过具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器来实现。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于来自主机102的写入请求或读取请求来控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。在本文中,固件可以被称为闪存转换层(FTL)。参照图4描述FTL的示例。根据实施例,可以利用微处理器或中央处理单元(CPU)来实施处理器134。
根据实施例,可以利用至少一个多核处理器来实施存储器系统110。多核处理器可以是一种集成了被认为是不同处理区域的两个或更多个内核的电路或芯片。例如,当多核处理器中的多个内核独立地驱动或运行多个闪存转换层(FTL)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(I/O)操作。
控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。进一步地,存储器系统110可以独立于从诸如主机102的外部装置输入的命令或请求进行操作。在一种情况下,由控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操作,而由控制器130独立地(例如,不管从主机102输入的请求或命令的情况下)执行的操作可以被认为是后台操作。
控制器130可以在存储器装置150中执行针对数据条的读取、写入或编程、擦除等的前台操作或后台操作。另外,可以将与作为从主机102传输的设定命令的设定参数命令或设定特征命令相对应的参数设定操作视为前台操作。可以在没有来自主机102的命令的情况下由控制器130执行的后台操作的示例包括垃圾收集(GC)、损耗均衡(WL)、用于识别和处理坏块的坏块管理等。例如,可以关于存储器装置150中的多个存储块152、154、156来执行后台操作。
根据实施例,基本上类似的操作可以作为前台操作和后台操作两者来执行。例如,当存储器系统110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动GC)时,垃圾收集可以被认为是前台操作。当存储器系统110独立于主机102而执行垃圾收集(例如,自动GC)时,垃圾收集可以被认为是后台操作。
当存储器装置150具有包括非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以被配置为执行关于从主机102输入的多个请求或命令的并行处理,以便提高存储器系统110的性能。例如,所传输的请求或命令可以被划分,并且在存储器装置150中包括的多个平面、多个管芯或多个芯片中的至少一些内并行处理。控制器130中的存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个平面、管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令,通过每个通道或每个通路将数据分布和存储在多个管芯中时,可以单独地或并行地执行与请求或命令相对应的多个操作。该处理方法或方案可以被认为是交错方法。因为以交错方法操作的存储器系统110的数据输入/输出速度可以快于没有利用交错方法的数据输入/输出速度,所以可以提高存储器系统110的数据I/O性能。
通过示例而非限制的方式,控制器130可以识别出关于与存储器装置150中的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可以将每个通道或每个通路的状态确定为,例如忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态中的一个。可以将控制器确定通过哪个通道或通路传递指令(和/或数据)与物理块地址相关联,例如,将指令(和/或数据)传递到哪个管芯中。
控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述关于存储器装置150的一些内容的块参数或页面参数,该描述符是具有设定格式或结构的数据。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以引用或使用描述符以确定经由哪个(哪些)通道或通路来交换指令或数据。
参照图3,存储器装置150可以包括多个存储块152、154、156。存储块152、154、156中的每一个可以包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是被一起擦除的一组非易失性存储器单元。存储块152、154、156可以包括与一起读取或编程的一组非易失性存储器单元相对应的多个页面。在一个实施例中,每个存储块152、154、156可以具有用于高度集成的三维堆栈结构。进一步地,存储器装置150可以包括多个管芯,每个管芯包括多个平面,并且每个平面包括多个存储块152、154、156。存储器装置150可以针对存储器系统110的性能而不同地配置。
基于在一个存储器单元中可以存储或表示的位数,存储器装置150中的多个存储块152、154、156可以是单层单元(SLC)存储块、多层单元(MLC)存储块等。SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可以具有高数据I/O操作性能和高耐用性。MLC存储块包括由每个存储多位(例如,两位或更多位)数据的存储器单元实施的多个页面。与SLC存储块相比,在相同的空间中,MLC存储块可以具有更大的存储容量。在存储容量方面,MLC存储块可以高度集成。
在实施例中,存储器装置150可以利用MLC存储块来实施。示例包括双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合。双层单元(DLC)存储块可以包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可以包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可以包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个能够存储5位数据或更多位数据的存储器单元实施的多个页面的块来实施。
根据实施例,控制器130可以像SLC存储块一样使用存储器装置150中的多层单元(MLC)存储块来在一个存储器单元中存储一位数据。多层单元(MLC)存储块的数据输入/输出速度可慢于SLC存储块的数据输入/输出速度。例如,当将MLC存储块用作SLC存储块时,可减少用于读取操作或编程操作的裕量。当将多层单元(MLC)存储块用作SLC存储块时,控制器130可以利用多层单元(MLC)存储块的更快速的数据输入/输出速度。例如,因为缓冲器可能需要高数据输入/输出速度以提高存储器系统110的性能,所以控制器130可以使用MLC存储块作为缓冲器来临时存储数据项。
进一步地,根据实施例,控制器130可以将数据多次地编程在多层单元(MLC)中,而无需对存储器装置150中的特定MLC存储块执行擦除操作。非易失性存储器单元具有不支持数据重写的特点。然而,控制器130可以使用多层单元(MLC)可以存储多位数据的特点,以便将多条1位数据多次地编程在MLC中。对于MLC重写操作,当将1位数据编程在非易失性存储器单元中时,控制器130可以将编程次数的数量存储为单独的操作信息。根据实施例,可以在将另一数据重写在相同的非易失性存储器单元中之前,执行用于均匀地均衡非易失性存储器单元的阈值电压的操作。
在实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,例如NAND闪速存储器、NOR闪速存储器等。在实施例中,存储器装置150可以由相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一个来实施。
参照图4,存储器系统中的控制器130可以与主机102和存储器装置150一起操作。如图所示,控制器130包括主机接口132、闪存转换层(FTL)240、以及先前结合图3识别的存储器接口142和存储器144。
根据实施例,图3中示出的错误校正电路138可以在闪存转换层(FTL)240中。在另一实施例中,错误校正电路138可以被实施为包括在控制器130中或与控制器130相关联的单独的模块、电路、固件等。
主机接口132能够处置从主机102传输的命令、数据等。通过示例而非限制的方式,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且例如,以命令、数据等被存储的顺序将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。
可以从主机102传输具有相同特性的多个命令或数据(例如,读取命令或写入命令),或者可以在由主机102将多个不同特性的命令和数据混合或混杂之后,将它们传输到存储器系统110。例如,可以将用于读取数据的多个命令(读取命令)传递到存储器系统110,或者可以将用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)交替地传输到存储器系统110。主机接口132可以将从主机102传输的命令、数据等顺序地存储到命令队列56。
此后,主机接口132可以根据已经从主机102输入的命令、数据等的特性来估计或预测控制器130将执行哪种内部操作。主机接口132可以至少基于命令、数据等的特性来确定命令、数据等的处理顺序和优先级。
根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置为确定缓冲器管理器是否应将命令、数据等存储在存储器144中,或者确定缓冲器管理器是否应将命令、数据等传递到闪存转换层(FTL)240中。事件队列54接收从缓冲器管理器52输入的事件,这些事件将响应于从主机102传输的命令、数据等而被存储器系统110或控制器130内部地运行和处理。然后,事件队列54可以按顺序,例如按照所接收的顺序,将事件传递到闪速转换层(FTL)240。
根据实施例,图4所示的闪存转换层(FTL)240可以实施多线程方案以执行数据输入/输出(I/O)操作。可以通过控制器130中包括的使用多线程的多核处理器来实施多线程FTL。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理从事件队列54输入的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块运行命令或指令。根据实施例,图3中所示的错误校正电路138可以包括在闪存转换层(FTL)240中。根据实施例,错误校正电路138可以通过包括在控制器130中的模块、电路或固件来实施。
进一步地,根据实施例,闪存转换层(FTL)240可以执行由输入/输出控制器192和日志记录管理器194执行的操作,而存储器接口142可以执行由收发器198执行的操作。
通过示例而非限制的方式,主机请求管理器(HRM)46可以根据从主机接口132传递的读取命令和编程命令以及事件,使用映射管理器(MM)44和块管理器48来处置或处理请求。主机请求管理器(HRM)46可以向映射管理器(MM)44发送查询请求,以确定对应于与事件一起输入的逻辑地址的物理地址。主机请求管理器(HRM)46可以将带有物理地址的读取请求发送到存储器接口142,以处理读取请求(处置事件)。
在实施例中,主机请求管理器(HRM)46可以向块管理器48发送编程请求(写入请求)以将数据编程到存储器装置150中的特定空白页面(没有数据的页面)。然后,主机请求管理器(HRM)46可以将对应于编程请求的映射更新请求传输到映射管理器(MM)44,以便在逻辑-物理地址相互映射的信息中更新与编程数据相关的项。
块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以便管理存储器装置150中的闪存块。为了最大化或增强存储器系统110(例如,参见图3)的编程或写入性能,块管理器48可以收集编程请求并且将用于多平面和单触发编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48向存储器接口142发送若干闪存编程请求,以增强或最大化多通道和多方向闪存控制器的并行处理。
在实施例中,块管理器48可以被配置为根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定将执行垃圾收集时选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据移动到空块,并且擦除包含所移动的有效数据的块,使得块管理器48可以具有足够的空闲块(没有数据的空块)。当块管理器48将关于待擦除的块的信息提供到状态管理器42时,状态管理器42可以检查待擦除的块中的所有闪存页面以确定每个页面是否有效。
例如,为了确定每个页面的有效性,状态管理器42可以识别记录在每个页面的带外(OOB)区域中的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。针对每个有效页面,状态管理器42将编程请求发送到块管理器48。当编程操作完成时,可以通过更新映射管理器44来更新映射表。
映射管理器44可以管理逻辑-物理映射表。映射管理器44可以处理由主机请求管理器(HRM)46或状态管理器42生成的各种请求,例如查询、更新等。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求的同时发生映射高速缓存未命中时,映射管理器44可以向存储器接口142发送读取请求以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可将编程请求发送到块管理器48,以便生成干净高速缓存块,并且可以将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可以针对相同逻辑地址的页面编程最新版本的数据,并且即时地发出更新请求。当状态管理器42在未正常完成有效页面的复制的状态下请求映射更新时,映射管理器44可不执行映射表更新。这是因为当状态管理器42请求映射更新并且稍后才完成有效页面复制时,发出的是具有旧物理信息的映射请求。当或仅当最新映射表仍然指向旧物理地址时,映射管理器44才可以执行映射更新操作以确保准确性。
图5示出对应于存储器装置150中的存储块的信息的实施例。
参照图5,由存储器系统110管理和控制的元数据可以包括关于存储器装置150中的每个存储块(PHY BLK)的各种类型的信息。作为示例提供了图5中描述的元数据。元数据的类型可以至少基于存储器装置150的配置和控制器130可以提供的性能而变化。
假设存储器装置150包括‘nnn’个存储块(例如,存储块的数量为‘nnn’)。关于每个存储块,元数据可以包括编程/擦除周期(P/E周期)、有效页面计数(VPC)、无效页面计数(IPC)、存储块的最后修改时间(Last Mod.Time)、存储块中存储的数据项的类型(DataType)等。例如,编程/擦除周期(P/E周期)可以用于损耗均衡操作以控制存储器装置150的损耗程度。有效页面计数VPC和无效页面计数IPC可以用于确定垃圾收集的目标存储块。根据实施例,可以将元数据提供到图2中描述的虚拟闪存层VFL。可通过恢复算法来使用元数据连同逻辑到虚拟地址映射信息(L2V映射),并且可以由虚拟闪存层VFL执行该恢复算法。
可以根据元数据中的项目,以诸如数字、特定符号或图案的标识符的形式来存储和调整元数据。例如,可以以根据存储块中存储的数据类型预先建立的数字或符号,来写入数据类型(Data Type)。最后修改时间(Last Mod.Time)可以示出当执行编程/删除操作时的实际时间或编程/删除操作的序号。例如,根据图5所示的元数据,第一存储块(PHY BLK#:0)的编程/擦除周期(P/E周期)为260、有效页面计数(VPC)为3、无效页面计数(IPC)为“aaa”、最终修改时间为x1-x2-x3(年-月-日)的y1:y2:y3(时:分:秒)。就数据类型而言,第一存储块用于存储元数据。
此外,元数据可以包括对应于另一存储块的信息。在另一示例中,关于第(nnn+1)存储块(PHY BLK#:nnn),元数据示出编程/擦除周期(P/E周期)为170,并且有效页面计数(VPC)和无效页面计数(IPC)为零,使得第(nnn+1)存储块可以被理解为没有存储数据的空闲存储块。
图6示出有效页面表(VPT)的示例,该VPT可以包括指示存储器装置150中的页面是否存储了有效数据项的数据结构。
参照图6,如果控制器130识别出存储器装置150中的多个页面中的每一个的状态(例如,有效状态、无效状态等),则控制器130可以使用页面状态来执行各种相关操作。控制器130可以基于有效页面表VPT来检查存储器装置110中的多个页面PG中的每一个的状态(例如,有效状态、无效状态等)。
根据实施例,有效页面表302可以包括关于多个页面的位置信息和有效页面确认信息(有效位),该有效页面确认信息用于检查每个页面是否有效,例如每个页面是否包括有效数据项(例如,与特定逻辑地址相对应的最新数据项)。在一个实施例中,有效页面确认信息可以包括指示页面状态的信息,其也可以称为页面状态信息。
例如,如果数据项‘AB’存储在物理页面编号(PPN)为135的位置,并且存储在该页面中的数据项有效,则将有效页面表302中的、与物理页面编号(PPN)135相对应的区域标记为V(指示有效状态)。另一方面,如果数据项“-”存储在物理页面编号(PPN)为137的位置并且存储在该页面中的数据项无效,则将有效页面表302中的、与物理页面编号(PPN)137相对应的区域标记为I(指示无效状态)。为了便于理解,有效页面确认信息(有效位)以有效状态V和无效状态I显示,但有效页面确认信息也可以被标记为简单的位图信息,诸如“0”或“1”。
在一个实施例中,假设当执行垃圾收集时,将来自垃圾收集的(待擦除)牺牲块的有效数据项复制或移动到目标块。页面(例如,牺牲块中的、曾存储有效数据项的位置)变为无效状态。如果有效页面确认信息(有效位)被标记为表示有效状态的“1”或表示无效状态的“0”,则相应页面的有效页面检查信息(有效位)被从“1”变为“0”。在这种情况下,牺牲块的无效页面计数(IPC)可增加。另一方面,目标块中的已被复制或移动有效数据项的位置的有效页面确认信息(有效位)可以从“0”变为“1”。此外,当将数据项复制或移动到目标块时,目标块的有效页面计数VPC可增加。
根据实施例,元数据可以配置有与控制器130执行的操作相对应的多个数据结构。例如,有效页面表VPT可以包括仅针对存储器装置150中的所有页面PG之中的一些页面PG来检查页面是否有效的信息。根据实施例,有效页面表可以仅包括有效页面,从而如果其他页面不在有效页面表VPT中,则那些页面可以被识别为无效页面。
根据一个实施例,有效页面表VPT(用于指示每个页面是无效页面还是有效页面)中的一些页面可以与控制器130当前使用或访问的特定存储块相关联。例如,有效页面表VPT可以不包含关于空闲存储块或坏存储块中的页面的信息。但是有效页面表VPT可以包括关闭块或开放块中的页面的有效页面确认信息(有效位)。在这些情况下,可以在存储器144中动态地改变有效页面表VPT的大小,并且可以提高存储器144的使用效率。
图7示出用于操作存储器系统的方法的实施例,该存储器系统例如可以是存储器系统110。
参照图7,该方法包括,在342处,存储器系统110在预设条件或预设环境下对存储器装置150执行垃圾收集操作。例如,当存储器装置150中的空闲块的数量不满足预设标准时,可以触发垃圾收集。根据实施例,基于存储器装置150是否接收到从外部装置(例如,主机)输入的I/O请求,可改变或调整垃圾收集和根据I/O请求的操作的优先级,并且可改变或调整用于触发垃圾收集的预设条件。
在344处,当垃圾收集开始时,存储器系统110可以分配用于移动或复制数据的存储块。在这种情况下,存储器系统110可以检查存储器装置150中的空闲存储块的数量并且确定是否满足日志记录操作的预设条件。例如,为了有效地执行日志记录操作,存储器系统110可以包括至少一个额外的空闲存储块。如果存储器装置150中存在至少一个额外的空闲存储块,则可以满足预设条件。如果没有可用的空闲存储块用于日志记录操作,则可能不满足预设条件。
根据实施例,存储器装置150可以包括多个管芯或平面,并且预设条件可以包括每个管芯或平面中存在至少一个空闲存储块。同时,存储器系统110可以执行与各种类型的文件系统和映射方法中的至少一种相对应的日志记录操作,使得预设条件可以根据由控制器130执行的日志记录操作而不同。
在346处,当存储器装置150中的空闲存储块的数量满足预设条件时,存储器系统110可以与日志记录操作一起,将经过垃圾收集的数据项移动或复制到存储器装置150。
在348处,当空闲存储块的数量不满足预设条件时,存储器系统110可以与快照操作一起,将经过垃圾收集的数据项移动或复制到存储器装置150。在快照操作中,当编程操作成功完成时,将控制器130的存储器144中存储的文件系统的元数据存储在元数据存储块中。元数据存储块可以是存储器装置150中的预定位置。存储器系统110可以在初始化时读取存储在相应位置中的信息以执行存储器系统110的初始化,诸如启动顺序。
在350处,在存储器系统110与日志记录操作或快照操作(346或348)一起,移动或复制经过垃圾收集的数据项之后,可以终止垃圾收集。
如上所述,根据存储器装置1150中的空闲存储块的数量是否满足预设条件,存储器系统110可以在垃圾收集期间执行日志记录操作或快照操作。通过与日志记录操作或快照操作一起,将根据垃圾收集的数据项移动或复制到存储器装置150,可以追踪(pursue)相应数据项的原子性。
图8和图9示出将垃圾收集的牺牲块中的有效数据项移动或复制(编程)到存储器装置150中的新位置(目标块)的操作的实施例。根据参照图7描述的预设条件,对垃圾收集的牺牲块中的有效数据项进行编程的操作可以不同。
参照图8,当空闲块的数量满足参考值时,可以在存储器系统内执行操作。例如,存储器系统110可以与日志记录操作一起对数据项进行编程。当执行日志记录操作时,将数据项编程到存储器装置150中的日志块(或开放块)中。存储器系统110可以通过垃圾收集来保持有效数据项(GC有效数据)并且删除无效数据项。在这些过程中,可能会消耗至少一个空闲存储块,并且可以执行对日志块和数据块的垃圾收集(GC打开)。
在对数据项进行编程之后,存储器系统110可以生成包括映射信息等的日志。此外,存储器系统110可以根据对数据项的编程操作来生成或更新用于管理和控制存储器装置150目的的元数据。在图8中,作为元数据的示例,可以生成或更新逻辑到虚拟地址映射信息(L2V映射)、有效页面表(VPT)和无效页面计数(IPC)。
例如,可以响应于存储器装置150的内部配置或存储器系统110的控制器130中的闪存转换层(FTL)的设计来改变元数据的配置。存储器系统110可以将日志和元数据依次存储在元数据块中,该元数据块为预设位置。
图9示出当空闲块的数量不满足参考时在存储器系统内执行的操作。
参照图9,当存储器装置150中不存在空闲存储块或者空闲存储块的数量小于预设条件时,存储器系统110可以中断、中止或停止日志记录操作。图8中描述的日志可能未被更新。然而,存储器系统110应该根据垃圾收集来将(待擦除的)牺牲块中的有效数据项编程到存储器装置150的另一位置,并且稍后能够恢复或读取所编程的数据项。因此,当日志记录操作停止时,存储器系统110可以与快照操作一起存储数据项。
当存储器装置150中不存在空闲存储块或者空闲存储块的数量小于预设条件时,可以启动块分配紧急机制(块紧急开始)。当存储器装置150中的空闲块的数量满足预设条件时,块分配紧急机制可以终止(块紧急结束)。在执行区块分配紧急机制的同时,存储器系统110可以通过快照操作(原子操作)来追踪所编程的数据项的原子性。当块分配紧急机制结束时,存储器系统110可以再次如参照图8所描述的,顺序地将日志和元数据存储在元数据块中(再次使用)。根据实施例,可以在元数据块中标记块分配紧急机制的开始和结束。
通过快照操作,存储器系统110可以将可由经过垃圾收集的编程操作生成或更新的所有元数据存储在元数据块中,该元数据块为预设位置。如图6中所述,随着垃圾收集的执行,有效页面表(VPT)和无效页面计数(IPC)被改变。基于该信息,控制器130可以识别到存储在牺牲块中的所有有效页面被复制或移动到目标块(例如,在执行擦除操作时获得的空闲存储块)。在通过执行快照操作而不是日志记录操作来减少空闲存储块的消耗的同时,存储器系统110可以通过垃圾收集(GC打开)更快速地获取至少一个新的空闲存储块。这些过程可以持续,直到基于通过垃圾收集而新获得的空闲存储块,存储器装置150中的空闲存储块的数量满足了预设条件。
根据一个或多个实施例,由控制器130执行的垃圾收集(例如,如图1至图4中所描述的)可以包括保持存储器装置150中的有效数据项(GC有效数据)和擦除存储器装置150中的无效数据项的过程。根据实施例,垃圾收集可以选择无效页面(IPC)数量较多的日志块或数据块,将与有效数据项相关的元数据复制到元数据块中,并且擦除没有有效数据项的日志块或数据块。而且,可以执行一个或多个动作。
根据实施例,可以通过存储器系统110的重启操作或在存储器系统110中的供应电力的初始阶段执行的恢复操作,将通过快照操作存储的元数据与逻辑到虚拟地址映射信息(L2V映射)一起使用,使得可将与元数据相关的数据项复制或移动到存储器装置150内的另一位置。
因此,根据一个或多个实施例,可以提供一种具有增加的数据输入/输出操作的可靠性的存储器系统。进一步地,可以提供一种存储器系统,该存储器系统可以确保所存储数据的原子性,并且避免存储器装置中存在空闲块不足的状态。另外,可以提供一种存储器系统,该存储器系统可以保证所存储数据的原子性,并且确保用于执行可以获得存储器装置中的空闲存储块的垃圾收集的操作裕量。因此,可以避免存储器系统的卡住状态。虽然已经根据垃圾收集操作描述了实施例,但是可以根据不同于垃圾收集操作的预定操作来执行其他实施例,例如,另一个后台操作或不同于后台操作的操作。
本文描述的方法、过程和/或操作可以由待由计算机、处理器、控制器或其他信号处理装置运行的代码或指令来执行。计算机、处理器、控制器或其他信号处理装置可以是本文描述的那些或者除了本文描述的元件之外的计算机、处理器、控制器或其他信号处理装置。因为详细描述了形成方法(或计算机、处理器、控制器或其他信号处理装置的操作)的基础的算法,因此用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其他信号处理装置转变为用于执行本文的方法的专用处理器。
当至少部分在软件中实施时,控制器、处理器、装置、模块、管理器、块、单元、多路复用器、生成器、逻辑、接口、解码器、驱动器、发生器和其他信号生成和信号处理特征可以包括,例如,用于存储待由例如计算机、处理器、微处理器、控制器或其他信号处理装置运行的代码或指令的存储器或其他存储装置。计算机、处理器、微处理器、控制器或其他信号处理装置可以是本文描述的那些或者除了本文描述的元件之外的计算机、处理器、微处理器、控制器或其他信号处理装置。因为详细描述了形成方法(或计算机、处理器、控制器或其他信号处理装置的操作)的基础的算法,因此用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其他信号处理装置转变为用于执行本文所描述的方法的专用处理器。
虽然已经针对具体实施例说明和描述了本教导,但是鉴于本公开,对于本领域技术人员将显而易见的是,在不脱离本公开的如所附权利要求书中限定的精神和范围的情况下,可以进行各种改变和修改。
Claims (20)
1.一种存储器系统,包括:
存储器装置,包括存储块;以及
控制器:
在开始针对所述存储器装置的垃圾收集之后,生成指示空闲存储块的数量是否满足参考的结果,
基于所述结果,针对请求选择性地执行日志记录操作,并且
将通过所述垃圾收集所收集的数据编程在所述存储器装置中。
2.根据权利要求1所述的存储器系统,其中所述控制器:
当所述空闲存储块的数量小于所述参考时,停止所述日志记录操作,并且
与快照操作一起将所述数据编程在所述存储器装置中。
3.根据权利要求2所述的存储器系统,其中所述控制器在所述快照操作期间,存储基于针对根据所述垃圾收集的数据的编程操作而改变的逻辑到虚拟地址映射信息、有效页面信息和无效页面信息。
4.根据权利要求3所述的存储器系统,其中所述控制器使用所述逻辑到虚拟地址映射信息来执行恢复操作或者基于所述逻辑到虚拟地址映射信息来跟踪存储所述数据的位置,并且其中所述位置由于所述垃圾收集而被改变。
5.根据权利要求3所述的存储器系统,其中当由于突然断电而导致所述逻辑到虚拟地址映射信息不完整时,所述控制器在经历所述垃圾收集的目标块中找出有效数据。
6.根据权利要求2所述的存储器系统,其中所述控制器基于所述结果,通过所述快照操作来在所述存储器装置中标记块分配紧急机制的开始和结束。
7.根据权利要求1所述的存储器系统,其中所述日志记录操作包括以下中的至少一个:
第一进程,用于将通过所述垃圾收集所收集的数据存储在所述存储器装置的日志区域中,并且当经过预设时间量或所述日志区域没有可用空间时执行检查点操作;以及
第二进程,用于将通过所述垃圾收集所收集的数据存储在所述日志区域中,并且将所述数据的位置变化反映在所述文件系统区域中。
8.一种操作存储器系统的方法,包括:
触发垃圾收集;
生成指示存储器装置中的空闲存储块的数量是否满足参考的结果;
基于所述结果,针对请求选择性地执行日志记录操作;并且
将通过所述垃圾收集所收集的数据编程在所述存储器装置中。
9.根据权利要求8所述的方法,进一步包括:
当所述空闲存储块的数量小于所述参考时,
停止所述日志记录操作,并且与快照操作一起将所述数据编程在所述存储器装置中。
10.根据权利要求9所述的方法,其中所述快照操作包括:存储基于针对根据所述垃圾收集的数据的编程操作而改变的逻辑到虚拟地址映射信息、有效页面信息和无效页面信息。
11.根据权利要求10所述的方法,进一步包括:
使用所述逻辑到虚拟地址映射信息来执行恢复操作或者基于所述逻辑到虚拟地址映射信息来跟踪存储所述数据的位置,其中所述位置由于所述垃圾收集而被改变。
12.根据权利要求10所述的方法,进一步包括:
当由于突然断电而导致所述逻辑到虚拟地址映射信息不完整时,在经历所述垃圾收集的目标块中找出有效数据。
13.根据权利要求9所述的方法,其中所述快照操作包括基于所述结果,通过所述快照操作来在所述存储器装置中标记块分配紧急机制的开始和结束的操作。
14.根据权利要求9所述的方法,其中所述日志记录操作包括以下中的至少一个:
第一进程,用于将通过所述垃圾收集所收集的数据存储在所述存储器装置的日志区域中,并且在经过预设时间量或所述日志区域没有可用空间时执行检查点操作;以及
第二进程,用于将通过所述垃圾收集所收集的数据存储在所述日志区域中,并且将所述数据的位置变化反映在所述文件系统区域中。
15.一种控制器,经由至少一个数据路径联接到包括多个存储块的存储器装置,每个存储块包括多个非易失性存储器单元,其中所述控制器包括至少一个处理器、至少一个存储器和逻辑,所述逻辑的至少一部分包括在硬件中,所述逻辑:
触发垃圾收集;
生成指示包括多个存储块的存储器装置中的空闲存储块的数量是否满足参考的结果;
基于所述结果,针对请求选择性地执行日志记录操作;并且
将通过所述垃圾收集所收集的数据编程在所述存储器装置中。
16.根据权利要求15所述的控制器,其中所述逻辑当所述空闲存储块的数量小于所述参考时停止所述日志记录操作,并且与快照操作一起将所述数据编程在所述存储器装置中。
17.根据权利要求16所述的控制器,其中所述逻辑在所述快照操作期间,执行操作以存储基于针对根据所述垃圾收集的数据的编程操作而改变的逻辑到虚拟地址映射信息、有效页面信息和无效页面信息。
18.根据权利要求17所述的控制器,其中所述逻辑使用所述逻辑到虚拟地址映射信息来执行恢复操作或者基于所述逻辑到虚拟地址映射信息来跟踪存储所述数据的位置。
19.根据权利要求17所述的控制器,其中当由于突然断电而导致所述逻辑到虚拟地址映射信息不完整时,所述逻辑在经历所述垃圾收集的目标块中找出有效数据。
20.根据权利要求16所述的控制器,其中所述逻辑基于所述结果,通过所述快照操作来在所述存储器装置中标记块分配紧急机制的开始和结束。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200177185A KR20220086934A (ko) | 2020-12-17 | 2020-12-17 | 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법 |
KR10-2020-0177185 | 2020-12-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114647594A true CN114647594A (zh) | 2022-06-21 |
Family
ID=81992191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110800758.3A Withdrawn CN114647594A (zh) | 2020-12-17 | 2021-07-15 | 非易失性存储器系统中的日志记录设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11704281B2 (zh) |
KR (1) | KR20220086934A (zh) |
CN (1) | CN114647594A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220197862A1 (en) * | 2020-12-17 | 2022-06-23 | SK Hynix Inc. | Journaling apparatus and method in a non-volatile memory system |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2003286967B2 (en) * | 2002-12-24 | 2009-01-15 | Lg Electronics, Inc. | Dual journaling store method and storage medium thereof |
KR100483490B1 (ko) * | 2002-12-24 | 2005-04-15 | 한국전자통신연구원 | 저장 매체에 데이터를 저장하기 위한 이중 저널링저장방법 |
JP2013200741A (ja) * | 2012-03-26 | 2013-10-03 | Toshiba Corp | 半導体記憶装置、その制御方法及び情報処理装置 |
US9802124B2 (en) * | 2013-03-15 | 2017-10-31 | Skyera, Llc | Apparatus and method for cloning and snapshotting in multi-dimensional to linear address space translation |
KR20160027805A (ko) * | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US10409526B2 (en) * | 2014-12-17 | 2019-09-10 | Violin Systems Llc | Adaptive garbage collection |
KR101738965B1 (ko) * | 2015-06-30 | 2017-05-23 | 성균관대학교산학협력단 | 가비지 컬렉션 저널링 장치 및 방법 |
US10254998B2 (en) * | 2015-11-03 | 2019-04-09 | Samsung Electronics Co., Ltd. | Coordinated garbage collection of flash devices in a distributed storage system |
US20170139825A1 (en) | 2015-11-17 | 2017-05-18 | HGST Netherlands B.V. | Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach |
US10013346B2 (en) | 2015-11-17 | 2018-07-03 | Western Digital Technologies, Inc. | Method of decreasing write amplification of NAND flash using a journal approach |
JP6414853B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US9959046B2 (en) | 2015-12-30 | 2018-05-01 | Samsung Electronics Co., Ltd. | Multi-streaming mechanism to optimize journal based data storage systems on SSD |
US10289544B2 (en) * | 2016-07-19 | 2019-05-14 | Western Digital Technologies, Inc. | Mapping tables for storage devices |
CN106354660A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市先天海量信息技术有限公司 | 固态存储设备的垃圾回收方法及装置 |
JP6553566B2 (ja) * | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR20200004656A (ko) * | 2018-07-04 | 2020-01-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR102634631B1 (ko) * | 2018-07-11 | 2024-02-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200064499A (ko) * | 2018-11-29 | 2020-06-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
WO2020124867A1 (zh) * | 2018-12-16 | 2020-06-25 | 华为技术有限公司 | 一种数据处理的方法、控制器、存储设备及存储系统 |
KR20200126533A (ko) * | 2019-04-30 | 2020-11-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 온도 조절 방법 |
US10929288B1 (en) * | 2019-10-08 | 2021-02-23 | International Business Machines Corporation | Protecting against data loss during garbage collection |
US11609848B2 (en) * | 2020-07-30 | 2023-03-21 | Micron Technology, Inc. | Media management based on data access metrics |
KR20220086934A (ko) * | 2020-12-17 | 2022-06-24 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법 |
-
2020
- 2020-12-17 KR KR1020200177185A patent/KR20220086934A/ko active Search and Examination
-
2021
- 2021-06-07 US US17/340,535 patent/US11704281B2/en active Active
- 2021-07-15 CN CN202110800758.3A patent/CN114647594A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220197862A1 (en) * | 2020-12-17 | 2022-06-23 | SK Hynix Inc. | Journaling apparatus and method in a non-volatile memory system |
US11704281B2 (en) * | 2020-12-17 | 2023-07-18 | SK Hynix Inc. | Journaling apparatus and method in a non-volatile memory system |
Also Published As
Publication number | Publication date |
---|---|
US11704281B2 (en) | 2023-07-18 |
US20220197862A1 (en) | 2022-06-23 |
KR20220086934A (ko) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429307B2 (en) | Apparatus and method for performing garbage collection in a memory system | |
CN112445723A (zh) | 用于在存储器系统中的传输映射信息的装置和方法 | |
US20210279180A1 (en) | Apparatus and method for controlling map data in a memory system | |
US11409606B2 (en) | Apparatus and method for handling a firmware error in operation of a memory system | |
CN113867995A (zh) | 处理坏块的存储器系统及其操作方法 | |
CN112148632A (zh) | 用于改善存储器系统的输入/输出吞吐量的设备和方法 | |
CN113900586A (zh) | 存储器系统及其操作方法 | |
CN114356207A (zh) | 用于存储器系统中的数据通信的校准设备和方法 | |
CN113495852A (zh) | 控制存储器系统中的映射数据的设备和方法 | |
US11620213B2 (en) | Apparatus and method for handling data stored in a memory system | |
US11507501B2 (en) | Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system | |
CN110806983A (zh) | 存储器系统及其操作方法 | |
CN113553631A (zh) | 用于在存储器系统中保护数据的设备和方法 | |
US11704281B2 (en) | Journaling apparatus and method in a non-volatile memory system | |
US20230333750A1 (en) | Apparatus and method for power-loss data protection in a system | |
US11941289B2 (en) | Apparatus and method for checking an error of a non-volatile memory device in a memory system | |
US11645002B2 (en) | Apparatus and method for controlling and storing map data in a memory system | |
US20210365183A1 (en) | Apparatus and method for increasing operation efficiency in data processing system | |
CN115756298A (zh) | 用于控制数据处理系统中的共享存储器的设备和方法 | |
CN112599170A (zh) | 用于在存储器系统中提供多流操作的设备和方法 | |
US11775426B2 (en) | Apparatus and method for securing a free memory block in a memory system | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
US20230153032A1 (en) | Apparatus and method for improving data input/output performance of storage | |
US11704068B2 (en) | Apparatus and method for scheduling operations performed in plural memory devices included in a memory system |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220621 |
|
WW01 | Invention patent application withdrawn after publication |