CN114153372A - 在存储器系统中控制和存储映射数据的设备和方法 - Google Patents
在存储器系统中控制和存储映射数据的设备和方法 Download PDFInfo
- Publication number
- CN114153372A CN114153372A CN202110306166.6A CN202110306166A CN114153372A CN 114153372 A CN114153372 A CN 114153372A CN 202110306166 A CN202110306166 A CN 202110306166A CN 114153372 A CN114153372 A CN 114153372A
- Authority
- CN
- China
- Prior art keywords
- mapping data
- data
- mapping
- memory
- controller
- 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
- 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
- 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
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of 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/0629—Configuration or reconfiguration of 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0656—Data buffering arrangements
-
- 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/0658—Controller construction arrangements
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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
- 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
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开涉及一种存储器系统,该存储器系统包括:存储器装置,包括多个非易失性存储器单元;以及控制器,被配置为将从外部装置输入的数据编程在存储器装置中,生成与该数据相对应的映射数据项,并且当第二映射数据不包括用于映射数据项的空区域时对第二映射数据执行压缩操作。根据第二映射数据是否被压缩来确定基于第二映射数据来更新存储器装置中存储的第一映射数据的时间。
Description
相关申请的交叉引用
本专利申请要求于2020年9月8日提交的申请号为10-2020-0114621的韩国专利申请的优先权,其全部公开通过引用并入本文。
技术领域
本文所描述的一个或多个实施例涉及一种在存储器系统中控制信息的设备和方法。
背景技术
近来,计算环境的范例已经转变为使得可以实际上随时随地访问计算机系统的普适计算。因此,便携式电子装置(例如,移动电话、数码相机、笔记本计算机等)的使用正在迅速增加。这样的便携式电子装置各自可以使用或包括具有至少一个存储器装置的存储器系统。存储器系统可以是数据存储装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,这种数据存储装置使用非易失性半导体存储器,表现出提高的稳定性和耐久性,不具有机械驱动部件(例如,机械臂),因此提供较高的数据访问速度和相对较低的功耗。具有这些优点的数据存储装置的示例包括但不限于通用串行总线(USB)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
本公开的实施例可提供一种数据处理系统和用于操作数据处理系统的方法。数据处理系统包括诸如存储器系统和主机的组件和资源,并且能够基于组件和资源的使用动态地分配用于组件之间的数据通信的多个数据路径。
本文所述的各个实施例提供了一种用于压缩映射数据的方法和设备,该方法和设备用于在将映射数据清除或更新到非易失性存储器装置之前压缩可用于提高存储器系统的数据输入/输出性能的映射数据,使得可以延迟将映射数据清除或更新到非易失性存储器装置中的时间。这可以引起用于执行数据输入/输出操作的资源的相应减少,并且可以提高操作效率。在一个实施例中,当响应于从外部装置输入的请求或数据类型将数据存储在非易失性存储器装置中时,存储器系统可以生成映射数据;并且可以在将映射数据清除或更新到非易失性存储器装置之前确定该映射数据是否被压缩。因此,存储器系统可改变将映射数据清除或更新到非易失性存储器装置中的时间。
根据实施例,存储器系统可以减少对诸如高速缓存存储器的资源的消耗,该高速缓存存储器被分配和用于诸如地址转换和映射信息管理的内部操作。另外地或可选地,为了针对与从外部装置输入的请求相对应的数据输入/输出操作而使用或重新分布更多的可用资源并且为了提高存储器系统的数据输入/输出性能,存储器系统可以确定是否压缩映射数据以改变映射更新的时间。
在实施例中,一种存储器系统可包括:存储器装置,包括多个非易失性存储器单元;以及控制器,被配置为将从外部装置输入的数据编程在存储器装置中,生成与该数据相对应的映射数据项,并且当第二映射数据不包括用于映射数据项的空区域时对该第二映射数据执行压缩操作。可根据第二映射数据是否被压缩来确定基于第二映射数据来更新存储器装置中存储的第一映射数据的时间。
当第二映射数据包括用于映射数据项的空区域时,控制器可被配置为将映射数据项添加到第二映射数据。控制器可被配置为不对第二映射数据执行压缩操作。
当被映射数据项完全填充的第二映射数据未通过压缩操作而被压缩时,控制器可被配置为基于该第二映射数据来更新第一映射数据,生成新的第二映射数据或重置该第二映射数据,并且将映射数据项添加到新的第二映射数据或所重置的第二映射数据。
控制器可被配置为基于第二映射数据是否被压缩来改变指示该第二映射数据的数据结构的标识符。
第二映射数据可包括至少一些映射数据项,每个映射数据项将每个物理地址与每个逻辑地址相关联,对该至少一些映射数据项执行压缩操作。在第二映射数据被压缩之后,该第二映射数据可以包括至少一个映射数据项,该至少一个映射数据项包括与至少一些映射数据项相对应的多个连续逻辑地址的起始逻辑地址以及与多个连续逻辑地址的数量相对应的计数值。
当该至少一些映射数据项对应于被单独编程在存储器装置中的顺序数据项时,可压缩第二映射数据。
第二映射数据可被存储在易失性存储器中。控制器可被配置为针对第二映射数据分配易失性存储器的预设大小,其中不管第二映射数据是否被压缩,该预设大小都是固定的。
控制器可被配置为多次压缩第二映射数据。控制器可被配置为不压缩第二映射数据中先前已经被压缩的映射数据项。
在另一实施例中,一种用于操作存储器系统的方法可包括:将从外部装置输入的数据编程在包括多个非易失性存储器单元的存储器装置中;生成对应于该数据的映射数据项;并且当第二映射数据不包括用于该映射数据项的空区域时,压缩该第二映射数据。可根据第二映射数据是否被压缩来确定基于第二映射数据来更新存储器装置中存储的第一映射数据的时间。
该方法可进一步包括:当第二映射数据包括用于映射数据项的空区域时,将映射数据项添加到该第二映射数据;并且当映射数据项被添加到第二映射数据时,跳过对第二映射数据的压缩。
当被映射数据项完全填充的第二映射数据未通过压缩操作而被压缩时,该方法可进一步包括:基于第二映射数据来更新第一映射数据;生成新的第二映射数据或重置第二映射数据;并且将映射数据项添加到新的第二映射数据或所重置的第二映射数据。
该方法可进一步包括:基于第二映射数据是否被压缩来改变指示该第二映射数据的数据结构的标识符;并且将映射数据项添加到第二映射数据的空区域。
第二映射数据可包括至少一些映射数据项,每个映射数据项将每个物理地址与每个逻辑地址相关联,对该至少一些映射数据项执行压缩操作。在第二映射数据被压缩之后,该第二映射数据可包括至少一个映射数据项,该至少一个映射数据项包括与至少一些映射数据项相对应的多个连续逻辑地址的起始逻辑地址以及与多个连续逻辑地址的数量相对应的计数值。
当该至少一些映射数据项对应于被单独编程在存储器装置中的顺序数据项时,可压缩第二映射数据。
第二映射数据可被存储在易失性存储器中。不管第二映射数据是否被压缩,分配给第二映射数据的易失性存储器的预设大小都可以是固定的。
该方法可进一步包括:当第二映射数据被多次压缩时,跳过对该第二映射数据中先前已经被压缩的映射数据项的压缩。
在另一实施例中,一种控制器可以控制第一映射信息和第二映射信息,第一映射信息和第二映射信息用于将不同的地址彼此关联以接合使用不同的地址系统的多个装置。该控制器可被配置为:将从外部装置输入的数据编程在包括多个非易失性存储器单元的存储器装置中;生成对应于该数据的映射数据项;并且当第二映射数据不包括用于该映射数据项的空区域时,压缩第二映射数据;并且根据第二映射数据是否被压缩,基于该第二映射数据更新存储器装置中存储的第一映射数据。
控制器可进一步被配置为:当第二映射数据包括用于映射数据项的空区域时,将映射数据项添加到第二映射数据,并且跳过对第二映射数据的压缩。
当被映射数据项完全填充的第二映射数据未通过压缩操作而被压缩时,控制器可进一步被配置为:基于第二映射数据来更新第一映射数据;生成新的第二映射数据或重置第二映射数据;并且将映射数据项添加到新的第二映射数据或所重置的第二映射数据。
控制器可进一步被配置为:基于第二映射数据是否被压缩来改变指示该第二映射数据的数据结构的标识符;并且将映射数据项添加到第二映射数据的空区域。
附图说明
本文参照附图进行描述,其中在所有附图中,相同的附图标记指代相同的部件。
图1示出根据实施例的存储器系统。
图2示出根据实施例的数据处理系统。
图3示出根据实施例的存储器系统。
图4示出根据实施例的操作存储器系统的方法。
图5A至图5C示出根据实施例的存储器系统中的映射数据的结构改变。
图6示出根据另一实施例的操作存储器系统的方法。
图7示出根据实施例的由存储器系统执行的数据输入/输出操作。
具体实施方式
下面参照附图描述本公开的各个实施例。然而,可以不同地配置或布置本公开的元件和特征以形成可以作为所公开的实施例中的任意一个的变型的其他实施例。
在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”,“各个实施例”、“其他实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的引用旨在表示任何这样的特征被包括在本公开的一个或多个实施例中,但可能或不一定在相同的实施例中进行组合。
在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如在所附权利要求书中所使用的,这些术语指定所陈述的元件的存在,而不排除一个或多个其他元件的存在或添加。权利要求书中的术语不排除该设备包括附加组件(例如,接口单元、电路等)。
在本公开中,各种单元、电路或其他组件可以被描述或声称为“被配置为”执行一个或多个任务。在这样的语境下,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来暗示结构。这样,即使所指定的块/单元/电路/组件当前不进行操作(例如,未接通或未启用),也可以说该块/单元/电路/组件被配置为执行任务。与“被配置为”语言一起使用的块/单元/电路/组件包括硬件,例如电路、存储可运行以实现该操作的编程指令的存储器等。此外,“被配置为”可以包括由软件和/或固件(例如,运行软件的FPGA或通用处理器)操纵的通用结构(例如,通用电路)以能够执行相关任务的方式进行操作。“被配置为”还可以包括使制造过程(例如,半导体制造设施)适于制造适于实施或执行一个或多个任务的装置(例如,集成电路)。
如本公开中所使用的,术语“电路”指下面的全部内容:(a)纯硬件电路实施方案(诸如仅在模拟和/或数字电路中的实施方案),以及(b)电路和软件(和/或固件)的组合,诸如(如适用于):(i)处理器的组合,或(ii)处理器/软件(包括数字信号处理器)、软件和存储器中的一起工作以使诸如移动电话或服务器的设备执行各种功能的部分以及(c)诸如微处理器或微处理器的一部分的、即使软件或固件物理上不存在也需要软件或固件来操作的电路。“电路”的这种定义适用于该术语在本申请中,包括在任何权利要求中的所有使用。作为进一步的示例,如在本申请中所使用的,术语“电路”还涵盖仅处理器(或多个处理器)或处理器的一部分以及它的(或它们的)所附软件和/或固件的实施方案。例如,并且如果适用于特定的权利要求要素,术语“电路”还涵盖用于存储装置的集成电路。
如本文所使用的,这些术语“第一”、“第二”、“第三”等被用作它们之后的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等上的排序)。术语“第一”和“第二”不一定暗示着第一值必须写在第二值之前。进一步,尽管本文可以使用这些术语来标识各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另外具有相同或相似的名称的另一元件区分开。例如,可以将第一电路与第二电路区分开。
进一步,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其他因素。也就是说,确定可以仅基于那些因素或者至少部分地基于那些因素。考虑措辞“基于B确定A”。虽然在这种情况下,B是影响A的确定的因素,但这样的措辞并不能排除A的确定也基于C。在其他情况下,可以仅基于B确定A。
在本文中,数据的项或数据项可以是位的序列。例如,数据项可以包括以下中的内容:文件、文件的一部分、存储器中的页面、面向对象程序中的对象、数字消息、数字扫描图像、视频或音频信号的一部分或任何其他可由位序列表示的实体。根据实施例,数据项可以包括离散对象。根据另一实施例,数据项可以包括两个不同组件之间的传输包内的信息单元。
现在将参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出根据实施例的存储器系统110。存储器系统110可以包括存储器装置150和控制器130。存储器装置150和控制器130可以在存储器系统110中彼此物理地分离。存储器装置150和控制器130可以经由至少一条数据路径连接。例如,该数据路径可以包括通道和/或通路。根据实施例,可以在功能上划分存储器装置150和控制器130。进一步,根据实施例,可以利用单个芯片或多个芯片来实施存储器装置150和控制器130。
存储器装置150可以包括多个存储块60。存储块60可以被理解为在单次擦除操作期间一起被擦除数据的一组非易失性存储器单元。存储块60可以包括多个页面。根据实施例,每个页面可以被理解为在单次编程操作期间一起被存储数据或在单次读取操作期间一起被读出数据的一组非易失性存储器单元。
存储器装置150可以包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以被认为是逻辑或物理分区,包括至少一个存储块60、能够控制包括多个非易失性存储器单元的阵列的驱动电路、以及可以临时存储待输入到非易失性存储器单元的数据或从非易失性存储器单元输出的数据的缓冲器。
另外,根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以被理解为在可物理地区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括用以与控制器130交换数据和信号的接口。
根据实施例,存储器装置150可以包括至少一个存储块60、至少一个存储器平面或至少一个存储器管芯。图1所示的存储器装置150的内部配置可以根据存储器系统110的性能而改变。因此,实施例不限于图1所示的内部配置。
参照图1,存储器装置150可以进一步包括能够将至少一种类型的电压供应到存储块60中的电压供应电路70。在一个实施例中,电压供应电路70可以向存储块60中包括的非易失性存储器单元供应读取电压Vrd、编程电压Vprog、通过电压Vpass和/或擦除电压Vers。例如,在用于读取存储块60中包括的所选择的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路70可以将读取电压Vrd供应到所选择的非易失性存储器单元中。在用于将数据存储在存储块60中包括的所选择的非易失性存储器单元中的编程操作期间,电压供应电路70可以将编程电压Vprog供应到所选择的非易失性存储器单元中。另外,在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路70可以将通过电压Vpass供应到未选择的非易失性存储器单元中。在用于擦除存储块60中存储的数据的擦除操作期间,电压供应电路70可以将擦除电压Vers供应到存储块60中。
为了将由例如图2至图3所示的主机102的外部装置请求的数据存储在存储器装置150(例如,包括非易失性存储器单元的存储空间)中,存储器系统110可以执行由主机102使用的文件系统与包括非易失性存储器单元的存储空间的物理位置之间的地址转换。例如,根据由主机102使用的文件系统确定的数据地址可以被称为逻辑地址或逻辑块地址,而将数据存储在存储空间中的物理位置的地址可以被称为物理地址或物理块地址。
当主机102将逻辑地址与读取请求一起传送到存储器系统110时,存储器系统110搜索与该逻辑地址相关联的物理地址,读取存储在由该物理地址识别的物理位置处的数据,并且将所读取的数据输出到主机102。在该过程期间,可以在存储器系统110中执行地址转换,以搜索与从主机102输入的逻辑地址相关联的物理地址。
控制器130可以响应于从外部装置输入的请求来执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储器装置150中包括的多个非易失性存储器单元中存储的数据被传送到控制器130。在读取操作中,输入/输出(I/O)控制器192可以执行从外部装置输入的逻辑地址与物理地址之间的地址转换,然后通过收发器198将该物理地址和与读取请求相对应的读取命令传输到存储器装置150。收发器198可以将物理地址和读取命令传输到存储器装置150,并且接收从存储器装置150输出的与该物理地址相对应的数据。收发器198可以将从存储器装置150传送的数据临时存储在存储器144中。I/O控制器192可以响应于读取请求而将存储在存储器144中的数据输出到外部装置。
另外,I/O控制器192可以通过收发器198将与写入请求一起从外部装置输入的写入数据传输到存储器装置150。在将写入数据存储在存储器装置150中之后,I/O控制器192可以将与写入请求相对应的响应传输到外部装置。I/O控制器192可以生成或更新映射数据,该映射数据将指示写入数据在存储器装置150中存储的位置的物理地址与同写入请求一起输入的逻辑地址相关联。
当I/O控制器192执行数据输入/输出操作时,映射数据控制器196控制或管理由控制器130使用的映射数据。映射数据可以包括多个映射数据项,多个映射数据项中的每一个可以将逻辑地址与物理地址相关联,或反之亦然。可以将映射数据或映射数据项用作用于由控制器130执行的数据输入/输出操作的操作信息。例如,I/O控制器192可以将映射数据用于地址转换,并且可以在与写入请求相对应的写入数据被编程在存储器装置150中之后,更新或生成映射数据项。
根据实施例,映射数据可以被分类为用于将逻辑地址与物理地址相关联的第一映射数据(例如,逻辑到物理(L2P)表)以及用于将物理地址与逻辑地址相关联的第二映射数据(例如,物理到逻辑(P2L)表)。映射数据控制器196可以确定或改变从存储器装置150加载到存储器144中的第一映射数据或第二映射数据的数据结构。
根据实施例,存储器装置150中存储的第一映射数据或第二映射数据中包括的映射数据项可以将单个逻辑地址与单个物理地址相关联。多个映射数据项可以构成单个映射段。例如,映射段可以对应于被一起存储在存储器装置150中或从存储器装置150中一起读取的一组映射数据项。在控制器130从存储器装置150读取第一映射数据或第二映射数据的至少一些部分并且将所读取的映射数据存储在存储器144中之后,控制器130可以利用存储器144中存储的映射数据来执行数据输入/输出操作。存储器系统110中的存储器144的存储容量可能有限,因此存储器144中的被分配用于临时存储第一映射数据或第二映射数据的存储器空间可能有限,第一映射数据和第二映射数据中的每一个包括多个映射数据项。因此,第一映射数据或第二映射数据中包括的映射数据项的数量也可能有限。
控制器130中包括的映射压缩器194可以响应于映射数据控制器196的确定来压缩存储器144中存储的第一映射数据或第二映射数据。当映射压缩器194压缩存储器144中存储的第一映射数据或第二映射数据时,存储器144中的被分配用于存储第一映射数据或第二映射数据的存储器空间可以包括空闲区域(或空区域)。映射数据控制器196可以将新的映射数据项添加到存储器144中被分配用于存储第一映射数据或第二映射数据的存储器空间中的空闲区域。
根据实施例,第一映射数据(例如,L2P表)可以被存储在存储器装置150中,该第一映射数据包括多个映射数据项,例如用于将逻辑地址与物理地址相关联的第一映射信息(例如,逻辑到物理(L2P)信息)。在数据输入/输出操作期间,控制器130可以生成第二映射数据(例如,P2L表),该第二映射数据包括多个映射数据项,例如,用于将物理地址与逻辑地址相关联的第二映射信息(例如,物理到逻辑(P2L)信息)。
例如,在控制器130将新的用户数据编程到存储器装置150之后,控制器130可以生成一条第二映射信息(P2L)用于将指示新的用户数据被编程在存储器装置150中的位置的物理地址链接到从主机102输入并且与新的用户数据相对应的逻辑地址。该条第二映射信息(P2L)可以指示新的用户数据存储在存储器装置150中的最近位置。
在一种情况下,假设被加载到存储器144中的第一映射数据(L2P表)包括第一映射信息(L2P),该第一映射信息指示特定逻辑地址(例如,“0A0”)和第一物理地址(例如,“123”)彼此关联。
在控制器130对与特定逻辑地址(例如,“0A0”)相对应的新的用户数据执行编程操作之后,控制器130可以生成一条第二映射信息(P2L)并且将该条第二映射信息存储在存储器144中。该条第二映射信息(P2L)可以将逻辑地址(例如,“0A0”)与指示新的用户数据存储在存储器装置150中的位置的第二物理地址(例如,“876”)相关联。在这种情况下,控制器130可以识别出第一映射数据(L2P表)中包括的那条第一映射信息(L2P)是旧的,而该条第二映射信息(P2L)是最新的,即,识别出该条第二映射信息P2L是最新的映射信息。之后,控制器130可以基于该条第二映射信息P2L来更新存储器装置150中存储的第一映射数据(L2P表)。
如上所述,控制器130可以周期性地、间歇地或根据需要执行映射清除操作(例如,用于更新存储器装置150中存储的第一映射数据(L2P表)的操作)。在执行映射清除操作之后,可以删除或消除存储器144中存储的包括那条第二映射信息(P2L)的第二映射数据(P2L表)。当在执行映射清除操作之后执行用于将用户数据编程在存储器装置150中的操作时,控制器130可以生成新的第二映射数据(P2L表)。
根据实施例,可以不同地确定执行映射清除操作的时间。例如,当控制器130执行预定数量的编程操作时,例如执行10次编程操作时,控制器130可以确定应当执行映射清除操作。又例如,当存储器144中的分配给第二映射数据(P2L表)的存储器空间已满并因此不能将新的一条第二映射信息(P2L)添加到该存储器空间中时,控制器130可以确定应当执行映射清除操作。再例如,控制器130可以确定每预定时段(例如,1小时、10分钟或1分钟)执行映射清除操作。
当存储器系统110具有独立于或不同于诸如主机102的外部装置的地址方案时,可以在存储器系统110中执行映射清除操作。外部装置可能不会请求存储器系统110执行映射清除操作。存储器系统110独立于外部装置执行映射清除操作,因此在映射清除操作期间可能延迟由外部装置请求的数据输入/输出操作。从外部装置的角度来看,在存储器系统110内执行的映射清除操作可能是开销。因此,当过于频繁地执行映射清除操作时,数据输入/输出性能可能劣化。
另一方面,如果长时间未执行映射清除操作,则在存储器装置150中存储的第一映射数据(L2P表)中,不再用于地址转换的无效映射信息的量可能会增加。在这种情况下,存储器系统110的操作安全性可能劣化,并且控制器130应当检查的映射信息的量或者控制器130应当检查映射数据以用于执行与读取请求相关联的地址转换的频率可能会增加。当第一映射数据(L2P表)不包括最近的映射信息时,控制器130可以参考存储器144中存储的第二映射数据(P2L表)以进行地址转换。另外,如果长时间未执行映射清除操作,则存储器144中存储的第二映射数据(P2L表)的量可能增加,因此存储器144的使用效率可能劣化。
参照图1,在I/O控制器192将从外部装置传输的用户数据存储在存储器装置150中之后,可以生成用于将物理地址与逻辑地址相关联的映射数据项。映射数据控制器196可以将由I/O控制器192生成的映射数据项添加到存储器144中存储的第二映射数据(P2L表)中。当在分配给第二映射数据(P2L表)的存储器空间中存在空区域时,映射数据控制器196可以将映射数据项添加到第二映射数据(P2L表)。
因为控制器130为第二映射数据(P2L表)分配预设大小的区域(即,有限区域),所以如果分配给第二映射数据(P2L表)的存储器空间被多个映射数据项完全填充,则映射数据控制器196无法将映射数据项添加到第二映射数据(P2L表)。当映射数据项不能被添加到第二映射数据(P2L表)时,映射数据控制器196可以执行映射清除操作。然而,根据实施例,当第二映射数据(P2L表)可压缩时,映射压缩器194可以确定是否压缩第二映射数据(P2L表)中的映射数据项并且对第二映射数据(P2L表)执行压缩操作。
当映射压缩器194压缩第二映射数据(P2L表)时,可以在分配给第二映射数据(P2L表)的存储器空间中生成空区域,从而映射数据控制器196可以将另一映射数据项添加到该空区域。然而,当映射压缩器194可能不压缩第二映射数据(P2L表)中的任何映射数据项时,因为分配给第二映射数据(P2L表)的存储器空间已经被映射数据项完全填充,所以映射数据控制器196不能将另一映射数据项添加到第二映射数据(P2L表)。
当不可能将新的映射数据项添加到第二映射数据(P2L表)时,映射数据控制器196可以执行映射清除操作。在执行映射清除操作之后,可以重置第二映射数据(P2L表),或者可以生成新的第二映射数据。然后,可以将新的映射数据项添加到所生成的第二映射数据。
可以根据第二映射数据(P2L表)是否被压缩来改变分配给第二映射数据(P2L表)的存储器空间被映射数据项完全填充的时间。当进行设置以在分配给第二个映射数据(P2L表)的存储器空间已满时执行映射清除操作时,可以响应于第二映射数据(P2L表)是否被压缩来改变执行映射清除操作的时间。
例如,当从外部装置输入的多个请求与顺序数据有关时,可以由映射压缩器194压缩第二映射数据(P2L表)中存储的多个映射数据项。当与顺序数据有关的映射数据项被包括在第二映射数据(P2L表)中存储的多个映射数据项中时,可以压缩与顺序数据有关的映射数据项,从而可以延迟映射清除操作的时间。如果映射清除操作的时间被延迟,则可以提高存储器系统110的数据输入/输出性能。
在实施例中,控制器130,例如映射压缩器194,多次压缩第二映射数据(P2L表)。但是,在另一实施例中,控制器130可以不压缩第二映射数据(P2L表)中先前已经被压缩的映射数据项。
参照图2和图3,将描述可以由图1的存储器系统110执行的一些操作。
参照图2,数据处理系统100可以包括与对应于图1的存储器系统110的存储器系统110接合或互锁的主机102。主机102可以包括便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)或非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
主机102还可以包括至少一个操作系统(OS),该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、错误校正电路(ECC)138、电源管理单元(PMU)140、存储器接口142和存储器144。如图2所示的控制器130中包括的组件可以根据关于存储器系统110的结构、功能、操作性能等而变化。
例如,根据主机接口的协议,存储器系统110可以利用可与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。可以根据存储器系统110的实施方案将组件添加到控制器130或从控制器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)可以包括例如Fast-ATA、ATAPI或增强型IDE(EIDE)。
串行高级技术附件(SATA)接口是一种与由电子集成驱动器(IDE)装置使用的并行数据通信接口的各种ATA标准兼容的串行数据通信接口。可将IDE接口中的40个导线减少到SATA接口中的6个导线。例如,用于IDE的40个并行信号可以被转换为用于SATA接口的6个串行信号。SATA接口由于其更快的数据传输和接收速率以及用于数据传输和接收的主机102中的较少的资源消耗而被广泛使用。SATA接口可以将多达30个外部装置连接到主机102中包括的单个收发器。另外,即使在主机102和另一装置之间的数据通信正在执行时,SATA接口也可支持允许将外部装置与主机102连接或从主机102拆卸该外部装置的热插拔。因此,即使当主机102通电时,也可将存储器系统110作为如由通用串行总线(USB)支持的装置的附加装置来连接或断开。例如,在具有eSATA端口的主机102中,存储器系统110可以如外部硬盘一样自由地连接到主机102或从主机102拆卸。
小型计算机系统接口(SCSI)是一种用于将计算机或服务器与其他外围装置连接的串行数据通信接口。与诸如IDE和SATA的其他接口相比,SCSI可以提供较高的传输速度。在SCSI中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是可以通过并行数据通信来执行主机102和每个外围装置之间的数据传输和接收。在SCSI中,较容易将诸如存储器系统110的装置与主机102连接或断开。SCSI可以支持15个其他的装置与主机102中包括的单个收发器进行连接。
串列SCSI(SAS)可以被理解为SCSI的串行数据通信版本。在SAS中,主机102和多个外围装置串联连接,并且可以以串行数据通信方案来执行主机102和每个外围装置之间的数据传输和接收。SAS可以通过串行电缆而不是并行电缆来支持主机102和外围装置之间的连接,以使用SAS轻松管理设备并且增强或提高操作可靠性和通信性能。SAS可以支持八个外部装置与主机102中包括的单个收发器进行连接。
高速非易失性存储器(NVMe)是一种至少基于被设计为增加配备有非易失性存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性的高速外围组件互连(PCIe)的接口。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的操作速度。
根据实施例,可以通过通用串行总线(USB)连接主机102和存储器系统110。通用串行总线(USB)是一种可扩展、可热插拔的即插即用串行接口,该串行接口可以在主机102和诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间提供具有成本效益的标准连接。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
参照图2,错误校正电路138可以校正从存储器装置150读取的数据的错误位,并且可以包括错误校正码(ECC)编码器和ECC解码器。ECC编码器可以对待编程在存储器装置150中的数据执行错误校正编码,以生成添加了奇偶校验位的经编码数据,并且将经编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ECC解码器可以检测和校正从存储器装置150读取的数据中包含的错误位。例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138确定错误校正解码是否成功,并且基于错误校正解码的结果输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用在针对存储器装置150中存储的数据的ECC编码过程期间生成的奇偶校验位,以便校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的数量时,错误校正电路138可以不校正错误位,而是可以输出指示错误位校正失败的校正失败信号。
根据实施例,错误校正电路138可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,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。与硬判决解码相比,软判决解码可以基于随机信息(stochastic information)确定非易失性存储器单元中存储的值。关于位翻转(可以认为是在存储器装置150中可能发生的错误),软判决解码可以提供提高的校正错误和恢复数据的概率,并且提供经校正的数据的可靠性和稳定性。LDPC-GM码可以具有内部LDGM码能够与高速LDPC码串联的方案。
根据实施例,ECC解码器可以使用例如低密度奇偶校验卷积码(LDPC-CC)来进行软判决解码。LDPC-CC可以具有基于可变块长度和移位寄存器使用线性时间编码和管线解码的方案。
根据实施例,ECC解码器可以使用例如对数似然比Turbo码(LLR-TC)来进行软判决解码。对数似然比(LLR)可以被计算为采样值与理想值之间的距离的非线性函数。另外,Turbo码(TC)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
电源管理单元(PMU)140可以控制提供到控制器130的电力。PMU 140可以监测供应到存储器系统110的电力(例如,供应到控制器130的电压),并且将电力提供到控制器130中包括的组件。PMU 140不仅可以检测通电或断电,还可以在供应到存储器系统110的电力不稳定时,生成触发信号以使存储器系统110能够紧急地备份当前状态。根据实施例,PMU 140可以包括能够积蓄可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求来控制存储器装置150。在存储器装置150是闪速存储器的情况下,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号,并且可以处理输入到存储器装置150或从存储器装置150输出的数据。
例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可提供用于处置控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可通过用于与存储器装置150交换数据的被称为闪存接口层(FIL)的固件来实施或由该固件驱动。
根据实施例,对于与存储器装置150的数据输入/输出,存储器接口142可以支持开放NAND闪存接口(ONFi)、切换模式等。例如,ONFi可以使用包括能够支持以8位或16位数据为单位的双向传输和接收的至少一条信号线的数据路径(例如,通道、通路等)。控制器130与存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)、切换双倍数据速率(DDR)等的至少一个接口来实现。
存储器144可以用作存储器系统110或控制器130的工作存储器,同时临时存储在存储器系统110和控制器130中执行的操作的事务数据。例如,在将读取数据输出到主机102之前,存储器144可以临时存储响应于来自主机102的读取请求而从存储器装置150输出的读取数据。另外,在将写入数据编程在存储器装置150中之前,控制器130可以将从主机102输入的写入数据临时存储在存储器144中。当控制器130控制存储器装置150的诸如数据读取操作、数据写入或编程操作、数据擦除操作等的操作时,可以将在存储器系统110的控制器130和存储器装置150之间传输的数据临时存储在存储器144中。
除了读取数据或写入数据之外,存储器144还可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等中的一个或多个。控制器130可以在存储器144中为被建立以执行数据输入/输出操作的组件分配一些存储空间。例如,在存储器144中建立的写入缓冲器可以用于临时存储进行编程操作的目标数据。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。尽管图2示出,例如存储器144设置在控制器130内,但是实施例不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以通过具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器来实现。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求来控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。在本文中,该固件可以被称为闪存转换层(FTL)。将参照图3详细描述FTL的示例。根据实施例,处理器134可以利用微处理器、中央处理单元(CPU)等来实施。
根据实施例,可以利用至少一个多核处理器来实施存储器系统110。多核处理器是一种集成了被认为是不同的处理区域的两个或更多个内核的电路或芯片。例如,当多核处理器中的多个内核独立地驱动或运行多个闪存转换层(FTL)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(I/O)操作。
控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。进一步,存储器系统110可以独立于从主机102输入的命令或请求来执行操作。在一种情况下,由控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操作,而由控制器130独立于从主机102输入的请求或命令执行的操作可以被认为是后台操作。控制器130可以执行前台操作或后台操作以在存储器装置150中读取、写入或擦除数据。另外,与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作可以被视为前台操作。同时,作为在没有从主机102传输的命令的情况下执行的后台操作,控制器130可以执行垃圾收集(GC)、损耗均衡(WL)、用于识别和处理坏块的坏块管理等。
根据实施例,可以执行基本类似的操作作为前台操作和后台操作两者。例如,当存储器系统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可以参考或使用描述符来确定使用哪个(哪些)通道或通路来交换指令或数据。
参照图2,存储器系统110中的存储器装置150可以包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是被一起擦除的一组非易失性存储器单元。存储块152、154、156可以包括多个页面,页面是被一起读取或编程的一组非易失性存储器单元。
在一个实施例中,每个存储块152、154或156可以具有三维堆叠结构以高度集成。进一步,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块152、154、156。存储器装置150的配置可以根据存储器系统110的性能而改变。
图2示出包括多个存储块152、154和156的存储器装置150。根据可以存储在一个存储器单元中的位的数量,多个存储块152、154和156可以是单层单元(SLC)存储块、多层单元(MLC)存储块等中的任意一个。SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。与MLC存储块相比,SLC存储块可以具有更高的数据I/O操作性能和更高的耐用性。MLC存储块包括由每个存储多位数据(例如,两位或更多位数据)的存储器单元实施的多个页面。与SLC存储块相比,MLC存储块可以在相同的空间中具有更大的存储容量。MLC存储块可在存储容量方面高度集成。
在实施例中,存储器装置150可以利用诸如双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。DLC存储块可以包括由每个能够存储2位数据的存储器单元实施的多个页面。TLC存储块可包括由每个能够存储3位数据存储器单元实施的多个页面。QLC存储块可包括由每个能够存储4位数据存储器单元实施的多个页面。在另一实施例中,存储器装置150可利用包括由每个能够存储5位数据或更多位数据的存储器单元实施的多个页面的块来实施。
根据实施例,控制器130可以将存储器装置150中包括的MLC存储块用作在一个存储器单元中存储一位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可以慢于SLC存储块的数据输入/输出速度。也就是说,当将MLC存储块用作SLC存储块时,可减少用于读取操作或编程操作的裕量。例如,当MLC存储块被用作SLC存储块时,控制器130可以以更高的速度执行数据输入/输出操作。因此,控制器130可以将MLC存储块用作SLC缓冲器来临时存储数据,因为该缓冲器可能需要较高的数据输入/输出速度以提高存储器系统110的性能。
进一步,根据实施例,控制器130可以在对存储器装置150中包括的特定MLC存储块不执行擦除操作的情况下,多次将数据编程在MLC中。通常,非易失性存储器单元不支持数据重写。但是,控制器130可以使用MLC能够存储多位数据的特征来多次将1位数据编程在MLC中。对于MLC重写操作,当将1位数据编程在MLC中时,控制器130可以将编程次数作为单独的操作信息进行存储。根据实施例,在将另外的1位数据编程在每个已经存储了另外的数据位的相同的MLC中之前,可以执行用于均匀地均衡各MLC的阈值电压的操作。
在实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,例如被实施为NAND闪速存储器、NOR闪速存储器等。在另一实施例中,存储器装置150可以由相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一个来实施。
参照图3,存储器系统中的控制器130与主机102和存储器装置150一起操作。如图所示,控制器130包括主机接口132、闪存转换层(FTL)240、存储器接口142和存储器144。先前参照图2识别了主机接口132、存储器接口142和存储器144。
根据实施例,图2所示的错误校正电路138可以被包括在闪存转换层(FTL)240中。在另一实施例中,错误校正电路138可以被实施为被包括在控制器130中或与控制器130相关联的单独的模块、电路、固件等。
主机接口132可以处置从主机102传输的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且例如以命令、数据等被存储在命令队列56中的顺序将它们输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。
可以从主机102传输具有相同特性的多个命令或数据,或者可以将具有不同特性的命令和数据在被主机102混合或打乱之后传输到存储器系统110。例如,可以将用于读取数据的多个命令(即,读取命令)传递到存储器系统110,或者可以将用于读取数据的命令(即,读取命令)与用于编程/写入数据的命令(即,写入命令)交替地传输到存储器系统110。主机接口132可以将从主机102传输的命令、数据等顺序地存储在命令队列56中。此后,主机接口132可以根据已经从主机102传输的命令、数据等的特性来估计或预测控制器130将执行哪种内部操作。主机接口132可以基于它们的特性来确定命令、数据等的处理顺序和优先级。
根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置为确定缓冲器管理器52是否应将命令、数据等存储在存储器144中,或者缓冲器管理器52是否应将命令、数据等传递到闪存转换层(FTL)240。事件队列54接收从缓冲器管理器52传输的事件,这些事件将由存储器系统110或控制器130响应于命令、数据等而在内部被执行和处理,并且事件队列54以事件输入到事件队列54的顺序将事件传递给闪存转换层(FTL)240。
根据实施例,图3所示的闪存转换层(FTL)240可以实施多线程方案以执行数据输入/输出(I/O)操作。可以通过使用控制器130中包括的多线程的多核处理器来实施多线程FTL。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器(GC/WL)42和块管理器(BM/BBM)48。主机请求管理器(HRM)46可以管理从事件队列54传输的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块执行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以根据从主机接口132传递的读取命令和编程命令以及事件来使用映射管理器(MM)44和块管理器48来处置或处理请求。主机请求管理器(HRM)46可以向映射管理器(MM)44发送查询请求,以确定对应于与事件一起输入的逻辑地址的物理地址。主机请求管理器(HRM)46可以将读取请求与该物理地址一起发送到存储器接口142,以处理读取请求,即处置事件。在一个实施例中,主机请求管理器(HRM)46可以向块管理器48发送编程请求(或写入请求),以将数据编程到存储器装置150中的未存储数据的特定空页面,然后可以将与编程请求相对应的映射更新请求传输到映射管理器(MM)44,以便更新将逻辑地址和物理地址相互映射的信息中与所编程的数据有关的项。
块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以便管理存储器装置150中的闪存块。为了最大化或增强存储器系统110的编程或写入性能,块管理器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可以执行映射更新操作以确保准确性。
图4示出根据本公开的实施例的操作存储器系统的方法。可以参照图1至图3中的至少一个来描述图4所示的方法。
参照图4,操作存储器系统的方法可以包括:响应于从外部装置输入的写入请求,将写入数据编程到非易失性存储器装置中(342),并且将与写入数据相关联的映射数据项(P2L)添加到例如第二映射数据(P2L表)的映射表(344)。该方法可以包括压缩例如第二映射数据的映射表中的映射数据项(346)或执行映射清除操作(348)中的至少一个。
连同来自外部装置(例如,图2或图3中所示的主机102)的写入请求,逻辑地址和写入数据可以被输入到存储器系统110。存储器系统110可以将与写入请求相对应的写入数据存储在包括非易失性存储器单元的存储器装置150中(342)。
在将写入数据存储在存储器装置150中之后,存储器系统110可以生成映射数据项(P2L),该映射数据项(P2L)将指示写入数据存储在存储器装置150中的位置的物理地址与从主机102输入的逻辑地址相关联。因为主机102和存储器系统110使用不同的地址方案,所以生成该映射数据项(P2L)。
当主机102向存储器系统110传输读取请求以获得存储器系统110中存储的数据时,主机102将逻辑地址连同读取请求一起发送到存储器系统110。在执行地址转换以找到与逻辑地址相关联的物理地址之后,存储器系统110可以读取与该物理地址相对应的位置中存储的数据,并且将所读取的数据传输到主机102。
存储器系统110可以使用将逻辑地址与物理地址相关联以用于地址转换的第一映射数据(L2P表)。同时,在与写入请求相对应的编程操作中,较容易生成将物理地址链接到逻辑地址以用于编程写入数据的第二映射数据(P2L表)。控制器130在编程操作期间将映射数据项(P2L)添加到存储器144中存储的第二映射数据(P2L表)中,然后执行映射清除操作以基于第二映射数据(P2L表)来更新存储器装置150中存储的第一映射数据(L2P表)(348)。
每当通过编程操作将写入数据存储在存储器装置150中时,都可以生成映射数据项(P2L)。如果每当生成映射数据项(P2L)时都执行映射清除操作,则因为在执行映射清除操作时不能执行数据输入/输出操作,所以存储器系统110的输入/输出性能可能劣化或降低。控制器130可以操作第二映射数据(P2L表)以收集每当写入数据被存储在存储器装置150中时所生成的映射数据项(P2L)。
在将写入数据存储在存储器装置150中之后,存储器系统110可以将与写入数据有关的映射数据项(P2L)添加到第二映射数据(P2L表)(344)。在将映射数据项(P2L)添加到分配给第二映射数据(P2L表)的存储器空间的空区域时,存储器系统110可以处于就绪状态,在该状态下可以对其他写入数据(或下一个写入数据)进行编程(342)。
当由于分配给第二映射数据(P2L表)的存储器空间中不存在空区域而无法将映射数据项(P2L)添加到第二映射数据(P2L表)时,存储器系统110可以压缩第二映射数据(P2L表)中包括的映射数据项(346)。当第二映射数据(P2L表)中的映射数据项中的至少一些被压缩时,可以在分配给第二映射数据(P2L表)的存储器空间中生成空区域,因此存储器系统110可以将映射数据项(P2L)添加到第二映射数据(P2L表)。此后,存储器系统110可以返回到就绪状态,在该状态下对其他写入数据进行编程(342)。
当第二映射数据(P2L表)中包括的映射数据项中的至少一些未被压缩时,在分配给第二映射数据(P2L表)的存储器空间中可能不会生成空区域。在这种情况下,存储器系统110可以执行映射清除操作以基于第二映射数据(P2L表)中包括的映射数据项来更新存储器装置150中的第一映射数据(L2P表)(348)。当执行了映射清除操作时,可以重置或删除现有的第二映射数据(P2L表)。当第二映射数据(P2L表)被重置时,可以将映射数据项(P2L)添加到第二映射数据(P2L表)中。当第二映射数据(P2L表)被删除时,存储器系统110可以生成新的第二映射数据(P2L表),然后可以将映射数据项(P2L)添加到新的第二映射数据(P2L表)。在执行映射清除操作之后,存储器系统110可以返回到就绪状态,在该状态下可对其他写入数据进行编程(342)。
图5A至图5C示出根据实施例的存储器系统中的映射数据的结构改变。具体地,图5A至图5C示出根据第二映射数据(P2L表)中的至少一些映射数据项是否被压缩的第二映射数据(P2L表)的改变。可以参照图1至图3中的至少一个来描述图5A至图5C所示的第二映射数据(P2L表)的改变。
参照图5A,多个存储块可以被包括在存储器装置150中。作为示例,图5A所示的存储块可以包括8个页面,并且这8个页面可以由页面索引0至7来标识。根据实施例,当组合用于将一个存储块与其他存储块区分开的块地址以及页面索引时,存储器装置150可以使用组合的地址作为指示数据项存储在存储器装置150中的位置的物理地址。
在编程操作中,与逻辑地址LBA100至LBA107相对应的数据项可以被顺序地存储在存储块中分别由页面索引0至7标识的8个页面中。在将与逻辑地址LBA100至LBA107相对应的数据项编程到存储块中之后,控制器130可以将多个映射数据项添加到存储器144中的第二映射数据(P2L表)。
如图5A所示,当数据项被编程在存储器装置150中时所生成的多个映射数据项可以顺序地存储在例如第一类型P2L表的第二映射数据中。第二映射数据(第一类型P2L表)可以包括与存储块中存储的数据相对应的逻辑地址LBA100至LBA107。具有第一数据结构的第二映射数据(第一类型P2L表)的第一映射数据项可以示出与第一逻辑地址LBA100相对应的数据项被存储在由存储器装置150中的存储块的第一页面0指示的位置中。与存储块的第一页面0中存储的数据项相关联的逻辑地址LBA100可以被存储为第二映射数据(第一类型P2L表)的第一映射数据项。因为与8个逻辑地址LBA100至LBA107相对应的数据项被顺序地存储在存储块的8个页面0至7中,所以具有第一数据结构的第二映射数据(第一类型P2L表)包括8个逻辑地址LBA100至LBA107。也就是说,可以将8个逻辑地址LBA100至LBA107顺序地存储在分配给第二映射数据(第一类型P2L表)的存储器空间中。
在将8个映射数据项添加到图5A所示的具有第一数据结构的第二映射数据(第一类型P2L表)之后,存储器系统110可以将下一个数据项编程在存储器装置150中。存储器系统110可以生成与被编程在存储器装置150中的下一个数据项相对应的映射数据项。然而,当分配给第二映射数据(第一类型P2L表)的存储器空间已经被映射数据项完全填充时,存储器系统110可以不将所生成的映射数据项添加到第二映射数据(第一类型P2L表)中。
例如,当第二映射数据具有第一数据结构并且控制器130将50个数据项存储在存储器装置150中时,分别对应于50个数据项的50个逻辑地址被添加到存储器144中的第二映射数据(第一类型P2L表)。在这种情况下,第二映射数据(第一类型P2L表)应当具有用于存储至少50个映射数据项的空区域。但是,当在存储器144中分配给第二映射数据(第一类型P2L表)的存储器空间的空区域不足以存储50个映射数据项,例如,不足以存储50个逻辑地址时,控制器130在将50个数据项存储在存储器装置150中之前,从第二映射数据(第一类型P2L表)中移除一个或多个映射数据项。当在将50个数据项编程在存储器装置150中之前,分配给第二映射数据(第一类型P2L表)的存储器空间已满时,控制器130可以执行基于第二映射数据(第一类型P2L表)中存储的映射数据项来更新存储器装置150中的第一映射数据的操作。该操作可以被称为映射清除操作。在执行映射清除操作时,可能延迟用于将50个数据项中的一些编程在存储器装置150中的操作。
为了推迟或延迟执行映射清除操作的时间,存储器系统110可以压缩图5A所示的第二映射数据(第一类型P2L表)。第二映射数据(第一类型P2L表)可以包括在执行关于顺序数据项的数据I/O操作时生成的多个映射数据项。在这种情况下,存储器系统110可以以将多个映射数据项转换为单个映射数据项的方式压缩第二映射数据,该单个映射数据项包括与顺序数据相对应的多个逻辑地址的起始地址以及多个逻辑地址的计数值(长度)。控制器130可以压缩第二映射数据(第一类型P2L表)中包括的、在执行关于顺序数据项的数据I/O操作时生成的映射数据项中的至少一些,以生成具有第二数据结构的第二映射数据(例如,图5B所示的第二类型P2L表)。多个逻辑地址的起始地址可以对应于顺序数据项中的第一数据,并且多个逻辑地址的计数值可以对应于顺序数据项中包括多少条数据。
例如,参照图5B,与八个逻辑地址LBA100至LBA107相对应的八个数据项被顺序地存储在存储块的八个页面0至7中。当八个数据项被顺序地存储在存储块中时,将八个逻辑地址LBA100至LBA107中的第一逻辑地址LBA100添加到具有第二数据结构的第二映射数据(第二类型P2L表)的第一项中作为八个逻辑地址LBA100至LBA107的起始地址,并且将8(长度:8)添加在第一项中作为关于八个逻辑地址LBA100至LBA107的计数值。
参照图5A和图5B所示的两种情况,当与八个逻辑地址LBA100至LBA107相对应的八个数据项被存储在存储块的八个页面0至7中时,具有第一数据结构的第二映射数据(第一类型P2L表)可以被与八个逻辑地址LBA100至LBA107相对应的八个映射数据项完全填充,但是具有第二数据结构的第二映射数据(第二类型P2L表)未被映射数据项完全填充。当具有第二数据结构的第二映射数据(第二类型P2L表)未被完全填充时,即当通过压缩映射数据项获得空区域时,控制器130可以在执行映射清除操作之前将新的映射数据项添加到第二映射数据并且执行另一编程操作以将另一数据项编程在存储器装置150中。当控制器130可以延迟将多个映射数据项清除到存储器装置150的时间并且执行关于其他数据项的另外的编程操作时,可以提高存储器系统110的数据输入/输出性能。
根据实施例,当分配给第二映射数据(P2L表)的存储器空间固定时,根据由控制器130生成的第二映射数据(P2L表)的数据结构,可以改变第二映射数据(P2L表)被映射数据项完全填充的时间。如果改变第二映射数据(P2L表)被映射数据项完全填充的时间,则可以改变执行映射清除操作的时间。
根据实施例,当分配给第二映射数据(P2L表)的存储器空间不固定时,根据由控制器130生成的第二映射数据(P2L表)的数据结构,可以改变分配给第二映射数据(P2L表)的存储器空间的大小。存储器144的存储容量是有限的。因此,当存储第二映射数据(P2L表)所需的存储器空间减少时,控制器130可以为另一操作和目的分配和分布可用存储器空间。通过此过程,当为数据输入/输出操作分配或分布更多的可用资源时,控制器130可以提高存储器系统110的数据输入/输出性能。
参照图5C,存储器系统110可以压缩第二映射数据(P2L表)中包括的映射数据项中的至少一些,从而生成具有第三数据结构的第二映射数据(例如,第三类型P2L表)。控制器130可以在执行关于随机数据项和顺序数据项的混合模式的数据输入/输出操作的同时,将多个映射数据项存储在第二映射数据中。例如,当从诸如主机102的外部装置输入到存储器系统110的多个请求与随机数据项和顺序数据项的混合模式有关时,控制器130可以仅压缩用于顺序数据项的映射数据项以生成具有第三数据结构的第二映射数据(第三类型P2L表),其中可压缩第二映射数据中包括的映射数据项的一部分。
根据实施例,当分配给第二映射数据(P2L表)的存储器空间已满时,存储器系统110可以尝试压缩第二映射数据中包括的多个映射数据项。当存储器系统110尝试压缩多个映射数据项并且至少一些映射数据项被压缩时,可以延迟执行映射清除操作的时间。另一方面,当映射数据项未被压缩时,可以与未尝试压缩时相同的方式执行映射清除操作。另外,每当将新的映射数据项添加到第二映射数据(P2L表)时都对映射数据项执行压缩,可能在存储器系统110的数据输入/输出操作中产生不必要的开销。因此,通过仅在第二映射数据(P2L表)已满时才尝试压缩映射数据项,可以减少开销。
图6示出根据另一实施例的操作存储器系统的方法。
参照图6,操作存储器系统的方法可以包括:开始写入操作(360),编程数据(362),更新映射数据(364)以及终止写入操作(380)。
当数据和逻辑地址与写入请求一起从外部装置(例如,图2或图3所示的主机102)输入到存储器系统110时,可以开始写入操作(360)。如参照图2和图3所描述的,外部装置可以向存储器系统110传输多个请求或命令,并且存储器系统110可以调度与多个请求或命令相对应的操作。根据该调度,存储器系统110可以响应于每个写入请求而开始每个写入操作(360)。
存储器系统110可以将与写入请求相对应的数据编程到存储器装置150中(362)。存储器装置150包括能够存储数据项的开放存储块,并且可以根据对数据项的写入操作的顺序将数据项顺序地编程或存储在开放存储块中。此处,开放存储块可以是特定管芯或平面中包括的存储块。或者,开放存储块可以包括超级块,该超级块包括被分布在多个管芯或平面上的多个存储块。
在存储器系统110将数据项存储在存储器装置150中之后,存储器系统110生成映射数据项,该映射数据项将指示存储器装置150中存储数据的位置的物理地址与从外部装置连同数据一起输入的逻辑地址相关联。存储器系统110可以将该映射数据项添加到第二映射数据(P2L表)(364)。例如,可以对应于开放存储块来生成第二映射数据(P2L表)。在这种情况下,第二映射数据(P2L表)中的索引可以指示存储数据的位置,从而可以通过将所关联的逻辑地址写入与第二映射数据(P2L表)的索引相对应的存储器空间中来生成和添加映射数据项。
利用与被编程的数据项相对应的映射数据项(映射信息)来更新第二映射数据(P2L表)的操作(364)可以包括确定第二映射数据(P2L表)是否已满(366)。当第二映射数据(P2L表)未满(在操作366中为“否”)时,则存储器系统110可以将映射数据项添加到第二映射数据(P2L表)中(368)。通过这样,完成了利用与被编程的数据项相对应的映射数据项更新第二映射数据(P2L表)的操作(364)。然后,可以终止写入操作(380)。
另一方面,当第二映射数据(P2L表)已满(在操作366中为“是”)时,则难以将映射数据项添加到第二映射数据(P2L表)。因此,存储器系统110可以尝试压缩第二映射数据(P2L表)(370)。此处,第二映射数据(P2L表)的压缩(370)可以参照图5B或图5C中描述的示例。当第二映射数据(P2L表)中包括的多个映射数据项中的至少一些映射数据项可以被压缩时,存储器系统110可以在分配给第二映射数据(P2L表)的存储器空间中获得空区域。
在压缩第二映射数据(P2L表)的操作(370)之后,存储器系统110可以检查第二映射数据(P2L表)的大小是否减小(372)。此处,第二映射数据(P2L表)的大小减小可以指示第二映射数据(P2L表)中包括的多个映射数据项中的至少一些被压缩,导致在分配给第二映射数据(P2L表)的存储器空间中生成空区域。因此,可以将另一映射数据项添加到第二映射数据(P2L表)。
如果第二映射数据(P2L表)的大小减小(在操作372中为“是”),则存储器系统110可以响应于至少一些映射数据项是否被压缩而改变指示第二映射数据(P2L表)的数据结构的标识符或参数(374)。因为获得了分配给第二映射数据(P2L表)的存储器空间中的空区域,所以存储器系统110可以将映射数据项添加到第二映射数据(P2L表)(368)。通过这些操作,可以添加与被编程的数据相对应的映射数据项,即,可以完成利用映射数据项更新第二映射数据(P2L表)的操作(364),然后也可以终止写入操作(380)。
如果第二映射数据(P2L表)的大小未减小(在操作372中为“否”),则第二映射数据(P2L表)仍然填充有多个映射数据项,使得不能将另一映射数据项添加到第二映射数据(P2L表)。存储器系统110可以基于第二映射数据(P2L表)来更新存储器装置150中存储的第一映射数据(L2P表)(376)。该操作可以对应于上述的映射清除操作或映射更新。
在更新第一映射数据(376)之后,存储器系统110可以重置或初始化存储器144中存储的现有的第二映射数据(P2L表)(378)。根据实施例,存储器系统110可以删除现有的第二映射数据(P2L表)并且生成新的第二映射数据(P2L表)(378)。因为所重置或所生成的第二映射数据(P2L表)具有空的空间,所以存储器系统110可以将与被编程的数据相对应的映射数据项添加到所重置或所生成的第二映射数据(P2L表)(368)。通过这些操作,完成了将与被编程的数据相对应的映射数据项添加到第二映射数据(364),并且可以终止写入操作(380)。
图7示出根据实施例的由存储器系统执行的数据输入/输出操作。
参照图7,图1至图3所示的存储器系统110接收从外部装置输入的多个写入请求WR。例如,多个写入请求WR可以包括八个写入请求WR1至WR8。存储器系统110可以接收八个写入请求WR1至WR8以及与八个逻辑地址相对应的八条数据。在实施例中,可以假设八个写入请求WR1至WR8可以分别与八的倍数个顺序数据项相关联。存储器系统110可以执行与八个写入请求WR1至WR8相对应的八个写入操作WO1至WO8。在图7中,根据至少一些映射数据项是否被压缩来改变存储器系统110中的I/O性能。
根据本公开的实施例的存储器系统110在每当执行与八个写入请求WR1至WR8相对应的八个写入操作WO1至WO8中的每一个时,都可以生成映射数据项。参照图5A,针对每个写入操作生成的映射数据项可以被顺序地存储在第二映射数据(P2L表)中。在图7中,假设在第二映射数据(P2L表)中存在用于存储少于八个映射数据项的空区域。
例如,假设分配给第二映射数据(P2L表)的存储器空间被在八个写入操作WO1至WO8之中的六个写入操作WO1至WO6中生成的映射数据项完全填充。存储器系统110可以尝试压缩第二映射数据(P2L表)。当第二映射数据(P2L表)未被压缩(未压缩P2L表)时,即第二映射数据(P2L表)的存储器空间已满时,另一映射数据项(例如,在第七写入操作WO7中生成的映射数据项(P2L))无法被添加到第二映射数据(P2L表),因此可以执行映射清除操作(MF)以在存储器空间中生成空区域。由于映射清除操作(MF),第七写入操作WO7和第八写入操作WO8可能被延迟。因为八个写入操作WO1至WO8之中的其他两个写入操作WO7至WO8被延迟,所以存储器系统110通知外部装置完成了八个写入操作WO1至WO8的时间点可能被延迟。而且,在执行下一映射清除操作(MF)之前,基于对应于在映射清除操作(MF)之后执行的第七写入操作WO7和第八写入操作WO8生成的映射数据项来更新第一映射数据(L2P表)可能被延迟。
另一方面,假设第二映射数据(压缩P2L表)通过由存储器系统110尝试的压缩而获得了空区域。存储器系统110可以将在八个写入操作WO1至WO8之中的写入操作WO7至WO8中生成的映射数据项存储在第二映射数据(P2L表)的空区域中。存储器系统110可以连续执行八个写入操作WO1至WO8而不执行映射清除操作(MF),并且可以不延迟通知外部装置完成了八个写入操作WO1至WO8的时间点。
参照图5B至图5C,当执行针对顺序数据项的写入操作时,第二映射数据P2L表中的至少一些映射数据项可以被压缩以减小第二映射数据(P2L表)的大小。因此,映射清除操作(MF)可以在执行了全部八个写入操作WO1至WO8之后发生,并且与从外部装置输入的八个写入请求WR1至WR8相对应的写入操作由存储器系统110完成。通知外部装置写入操作完成的时间点可以更快。另外,可以通过单次映射清除操作(MF)将与八个写入操作WO1至WO8相对应的所有映射数据项存储在存储器装置150中。与未压缩的第二映射数据(未压缩P2L表)相比,压缩的第二映射数据(压缩P2L表)可以提高存储器系统110的操作稳定性。
图7示出如何根据第二映射数据(P2L表)的压缩来提高存储器系统110的操作性能或操作稳定性的示例。
当存储器系统110接收用于存储从外部装置输入的大量数据的写入请求时,该大量数据可以包括顺序数据项。在这种情况下,由于在存储大量数据的过程中,在更大程度上延迟映射清除操作(MF),因此外部装置可以识别到在更大程度上提高了存储器系统110的操作性能。
根据实施例,存储器系统110可以生成指示第二映射数据(P2L表)是否被压缩的标识符或参数以及指示第二映射数据(P2L表)的数据结构的另一标识符或参数中的至少一个。控制器130可以利用标识符或参数来设置或建立第二映射数据(P2L表)的数据结构或类型,从而可以改善在映射清除操作(MF)期间如何使用第二映射数据(P2L表)。
根据本公开的实施例,存储器系统可确定临时存储在高速缓存存储器或易失性存储器中的映射数据项是否已被压缩,从而改变执行映射更新或映射清除操作的时间,例如,基于高速缓存存储器或易失性存储器中存储的映射数据项来更新非易失性存储器装置中存储的映射数据的时间。
根据本公开的实施例,存储器系统可以通过压缩由控制器使用的高速缓存存储器或易失性存储器中存储的映射数据项来提高数据输入/输出性能。
虽然已经相对于具体实施例说明和描述了本教导,但是根据本公开,对于本领域技术人员显而易见的是,在不脱离本公开所附权利要求书中确定的精神和范围的情况下,可以进行各种改变和修改。
Claims (20)
1.一种存储器系统,包括:
存储器装置,包括多个非易失性存储器单元;以及
控制器,将从外部装置输入的数据编程在所述存储器装置中,生成与所述数据相对应的映射数据项,当第二映射数据不包括用于所述映射数据项的空区域时对所述第二映射数据执行压缩操作。
其中根据所述第二映射数据是否被压缩来确定基于所述第二映射数据来更新所述存储器装置中存储的第一映射数据的时间。
2.根据权利要求1所述的存储器系统,其中,当所述第二映射数据包括用于所述映射数据项的空区域时,所述控制器将所述映射数据项添加到所述第二映射数据,并且不对所述第二映射数据执行压缩操作。
3.根据权利要求1所述的存储器系统,其中,当被映射数据项完全填充的所述第二映射数据未通过所述压缩操作而被压缩时,所述控制器:基于所述第二映射数据来更新所述第一映射数据,生成新的第二映射数据或重置所述第二映射数据,并且将所述映射数据项添加到所述新的第二映射数据或所重置的第二映射数据。
4.根据权利要求1所述的存储器系统,其中所述控制器基于所述第二映射数据是否被压缩来改变指示所述第二映射数据的数据结构的标识符。
5.根据权利要求1所述的存储器系统,其中所述第二映射数据包括至少一些映射数据项,每个映射数据项将每个物理地址与每个逻辑地址相关联,对所述至少一些映射数据项执行所述压缩操作,并且
在所述第二映射数据被压缩之后,所述第二映射数据包括至少一个映射数据项,所述至少一个映射数据项包括与所述至少一些映射数据项相对应的多个连续逻辑地址的起始逻辑地址以及与所述多个连续逻辑地址的数量相对应的计数值。
6.根据权利要求5所述的存储器系统,其中当所述至少一些映射数据项对应于被单独编程在所述存储器装置中的顺序数据项时,压缩所述第二映射数据。
7.根据权利要求1所述的存储器系统,其中所述第二映射数据被存储在易失性存储器中,并且所述控制器针对所述第二映射数据分配所述易失性存储器的预设大小,其中不管所述第二映射数据是否被压缩,所述预设大小都是固定的。
8.根据权利要求1所述的存储器系统,其中所述控制器多次压缩所述第二映射数据,并且所述控制器不压缩所述第二映射数据中先前已经被压缩的映射数据项。
9.一种操作存储器系统的方法,所述方法包括:
将从外部装置输入的数据编程在包括多个非易失性存储器单元的存储器装置中;
生成对应于所述数据的映射数据项;并且
当第二映射数据不包括用于所述映射数据项的空区域时,压缩所述第二映射数据,
其中根据所述第二映射数据是否被压缩来确定基于所述第二映射数据来更新所述存储器装置中存储的第一映射数据的时间。
10.根据权利要求9所述的方法,进一步包括:
当所述第二映射数据包括用于所述映射数据项的空区域时,将所述映射数据项添加到所述第二映射数据,并且跳过对所述第二映射数据的压缩。
11.根据权利要求9所述的方法,进一步包括:
当被映射数据项完全填充的所述第二映射数据未通过所述压缩操作而被压缩时,
基于所述第二映射数据来更新所述第一映射数据;
生成新的第二映射数据或重置所述第二映射数据;并且
将所述映射数据项添加到所述新的第二映射数据或所重置的第二映射数据。
12.根据权利要求9所述的方法,进一步包括:
基于所述第二映射数据是否被压缩来改变指示所述第二映射数据的数据结构的标识符;并且
将所述映射数据项添加到所述第二映射数据的空区域。
13.根据权利要求9所述的方法,其中所述第二映射数据包括至少一些映射数据项,每个映射数据项将每个物理地址与每个逻辑地址相关联,对所述至少一些映射数据项执行所述压缩操作,并且
在所述第二映射数据被压缩之后,所述第二映射数据包括至少一个映射数据项,所述至少一个映射数据项包括与所述至少一些映射数据项相对应的多个连续逻辑地址的起始逻辑地址以及与所述多个连续逻辑地址的数量相对应的计数值。
14.根据权利要求13所述的方法,其中当所述至少一些映射数据项对应于被单独编程在所述存储器装置中的顺序数据项时,压缩所述第二映射数据。
15.根据权利要求9所述的方法,其中所述第二映射数据被存储在易失性存储器中,并且不管所述第二映射数据是否被压缩,所述易失性存储器中的被分配给所述第二映射数据的预设大小都是固定的。
16.根据权利要求9所述的方法,进一步包括:
当所述第二映射数据被多次压缩时,跳过对所述第二映射数据中先前已经被压缩的映射数据项的压缩。
17.一种控制器,控制第一映射信息和第二映射信息,所述第一映射信息和所述第二映射信息用于将不同的地址彼此关联以接合使用不同的地址系统的多个装置,所述控制器:
将从外部装置输入的数据编程在包括多个非易失性存储器单元的存储器装置中;
生成对应于所述数据的映射数据项;
当第二映射数据不包括用于所述映射数据项的空区域时,压缩所述第二映射数据;并且
根据所述第二映射数据是否被压缩,基于所述第二映射数据更新所述存储器装置中存储的第一映射数据。
18.根据权利要求17所述的控制器,其中所述控制器进一步:
当所述第二映射数据包括用于所述映射数据项的空区域时,将所述映射数据项添加到所述第二映射数据,并且跳过对所述第二映射数据的压缩。
19.根据权利要求17所述的控制器,其中所述控制器进一步:
当被映射数据项完全填充的所述第二映射数据未通过所述压缩操作来被压缩时,
基于所述第二映射数据来更新所述第一映射数据;
生成新的第二映射数据或重置所述第二映射数据;并且
将所述映射数据项添加到所述新的第二映射数据或所重置的第二映射数据。
20.根据权利要求17所述的控制器,其中所述控制器进一步:
基于所述第二映射数据是否被压缩来改变指示所述第二映射数据的数据结构的标识符;并且
将所述映射数据项添加到所述第二映射数据的空区域。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0114621 | 2020-09-08 | ||
KR1020200114621A KR20220032826A (ko) | 2020-09-08 | 2020-09-08 | 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114153372A true CN114153372A (zh) | 2022-03-08 |
Family
ID=80460919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110306166.6A Withdrawn CN114153372A (zh) | 2020-09-08 | 2021-03-23 | 在存储器系统中控制和存储映射数据的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11645002B2 (zh) |
KR (1) | KR20220032826A (zh) |
CN (1) | CN114153372A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11842069B2 (en) * | 2022-01-14 | 2023-12-12 | Western Digital Technologies, Inc. | Storage system and method for delaying flushing of a write buffer based on a host-provided threshold |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US10146435B2 (en) * | 2013-07-31 | 2018-12-04 | Hitachi, Ltd. | Storage system and data write method |
US10970206B2 (en) * | 2017-03-16 | 2021-04-06 | Intel Corporation | Flash data compression decompression method and apparatus |
US10372341B2 (en) | 2017-06-28 | 2019-08-06 | Western Digital Technologies, Inc. | Non-volatile storage device system with page based remapping |
KR20190040607A (ko) * | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102507140B1 (ko) * | 2017-11-13 | 2023-03-08 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190136492A (ko) | 2018-05-31 | 2019-12-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
JP2020154603A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム |
TWI707234B (zh) * | 2019-05-20 | 2020-10-11 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
US11200126B2 (en) * | 2020-02-11 | 2021-12-14 | International Business Machines Corporation | Utilizing translation tables for testing processors |
US11422945B2 (en) * | 2020-03-20 | 2022-08-23 | Micron Technology, Inc. | Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes |
-
2020
- 2020-09-08 KR KR1020200114621A patent/KR20220032826A/ko unknown
-
2021
- 2021-02-10 US US17/172,934 patent/US11645002B2/en active Active
- 2021-03-23 CN CN202110306166.6A patent/CN114153372A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US11645002B2 (en) | 2023-05-09 |
US20220075553A1 (en) | 2022-03-10 |
KR20220032826A (ko) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113342705A (zh) | 在存储器系统中执行垃圾收集的设备和方法 | |
CN112445723A (zh) | 用于在存储器系统中的传输映射信息的装置和方法 | |
US11526298B2 (en) | Apparatus and method for controlling a read voltage in a memory system | |
CN113867995A (zh) | 处理坏块的存储器系统及其操作方法 | |
US20210279180A1 (en) | Apparatus and method for controlling map data in a memory system | |
US11756643B2 (en) | Apparatus and method for correcting an error in data transmission of a data processing system | |
US11620213B2 (en) | Apparatus and method for handling data stored in a memory system | |
CN114356207A (zh) | 用于存储器系统中的数据通信的校准设备和方法 | |
CN113495852A (zh) | 控制存储器系统中的映射数据的设备和方法 | |
US11507501B2 (en) | Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system | |
US11704068B2 (en) | Apparatus and method for scheduling operations performed in plural memory devices included in a memory system | |
CN115756298A (zh) | 用于控制数据处理系统中的共享存储器的设备和方法 | |
US20220171564A1 (en) | Apparatus and method for maintaining data stored in a memory system | |
US11360697B2 (en) | Apparatus and method for encoding and decoding operations to protect data stored in a memory system | |
US11645002B2 (en) | Apparatus and method for controlling and storing map data in a memory system | |
US11941289B2 (en) | Apparatus and method for checking an error of a non-volatile memory device in a memory system | |
US11704281B2 (en) | Journaling apparatus and method in a non-volatile memory system | |
US12032843B2 (en) | Apparatus and method for increasing operation efficiency in data processing system | |
CN116136739A (zh) | 用于改善存储装置的数据输入/输出性能的设备和方法 | |
US11775426B2 (en) | Apparatus and method for securing a free memory block in a memory system | |
US12050795B2 (en) | Apparatus and method for managing map data between host and memory system | |
US12125549B2 (en) | Apparatus and method for correcting an error in data transmission of a data processing system | |
US11854657B2 (en) | Memory device and memory system supporting interleaving operation and operation method thereof |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220308 |