CN110928807B - 用于检查存储器***中的有效数据的设备和方法 - Google Patents
用于检查存储器***中的有效数据的设备和方法 Download PDFInfo
- Publication number
- CN110928807B CN110928807B CN201910753551.8A CN201910753551A CN110928807B CN 110928807 B CN110928807 B CN 110928807B CN 201910753551 A CN201910753551 A CN 201910753551A CN 110928807 B CN110928807 B CN 110928807B
- Authority
- CN
- China
- Prior art keywords
- memory
- block
- data
- controller
- host
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及一种存储器***。该存储器***包括:存储器装置,包括存储数据的多个存储块;以及控制器,被配置成将存储块划分成多个逻辑单元块,将从存储块的有效页面计数获得的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成比较结果,并且在多个逻辑单元块之中识别选择逻辑单元块,以在选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复,并且将选择逻辑单元块中重复的映射数据的旧映射数据取消映射。
Description
相关申请的交叉引用
本专利申请要求于2018年9月20日提交的申请号为10-2018-0113160的韩国专利申请的优先权,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本发明的各个实施例涉及一种存储器***,并且更特别地,涉及一种通过使用非易失性存储器装置的存储块中存储的有效数据计数来确定垃圾收集的目标(或牺牲)存储块的设备和方法。
背景技术
近来,计算机环境范例已经转变成能够随时随地访问计算机***的普适计算。因此,诸如移动电话、数码相机、笔记本计算机等的便携式电子装置的使用正在增加。这种便携式电子装置通常使用或包括使用或嵌入至少一个存储器装置的存储器***,即数据存储装置。数据存储器装置可以用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,因为用作非易失性半导体存储器装置的数据存储装置不具有机械驱动部件(例如,机械臂),所以它的优点在于其具有优异的稳定性和耐用性,并且具有高数据访问速度和低功耗。这种数据存储装置的示例包括USB(通用串行总线)存储器装置、具有各种接口的存储卡以及固态驱动器(SSD)。
发明内容
本公开的实施例提供一种存储器***、数据处理***和操作进程或方法,其可以通过降低存储器***的操作复杂性和性能劣化来快速且可靠地将数据处理到存储器装置中,从而提高存储器装置的使用效率。
本公开的实施例简化用于选择并确定存储器装置中已被分配用于数据存储的块之中哪个块是不必要的以便释放不必要块的数据并将这些不必要块变为空闲块的控制操作。基于简化的操作,实施例可以提供一种可以减少选择并确定存储器装置中的至少一个不必要块所需的资源(例如,时间)的方法和设备。
在实施例中,大容量存储器装置中具有增加的数据存储容量的存储块可以被划分为多个单元块。当确定在没有擦除操作的情况下不能再编程新数据的存储块时,可以将每个单元块的估计平均有效页面计数与用于将物理地址与逻辑地址相关联的多条映射数据的计数进行比较。如果基于比较结果确定有效数据的比率小于阈值,则可以提供用于扫描相应单元块的数据并释放分配数据的方法和设备。
在实施例中,一种存储器***可以包括:存储器装置,包括存储数据的多个存储块;以及控制器,被配置成将存储块划分成多个逻辑单元块,将从存储块的有效页面计数获得的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成比较结果,并且在多个逻辑单元块之中识别选择逻辑单元块,以在选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复,并且将选择逻辑单元块中重复的映射数据的旧映射数据取消映射。
通过示例而非限制的方式,当存储块处于以下状态时:在没有擦除操作的情况下没有新数据被编程,控制器可以被配置成执行比较操作。可以从存储块的第一页面到最后页面顺序地编程数据条。
映射数据计数可以是关于物理到逻辑(P2L)信息的多条映射数据的数量,该P2L信息将选择逻辑单元块的逻辑地址和物理地址相关联。存储块包括可作为单元被一起擦除的存储器单元组,并且选择逻辑单元块由设定数量的映射数据识别,设定数量的映射数据各自被分配给可作为单元被一起编程的独特存储器单元组。
在将旧映射数据取消映射之后,控制器可以被配置成将映射数据存储在在物理上可与该存储块区分开的另一存储块中。
控制器可以被配置成,通过将存储块的有效页面计数除以存储块中的逻辑单元块的数量来计算估计平均值。在示例中,当逻辑单元块的映射数据计数大于估计平均值时,控制器被配置成对该逻辑单元块执行检查和取消映射操作。在另一示例中,当逻辑单元块的映射数据计数小于或等于估计平均值时,控制器被配置成跳过关于该逻辑单元块的检查和取消映射操作。
当对应于从主机接收的至少一个命令,重复请求针对相同逻辑地址的多个编程操作时,控制器可以被配置成确定比较结果是否大于阈值。
在另一实施例中,一种操作存储器***的方法可以包括:将存储数据的存储块划分成多个逻辑单元块,将从存储块的有效页面计数获得的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成针对每个逻辑单元块的比较结果;基于相应比较结果,针对每个逻辑单元块确定该逻辑单元块的映射数据计数是否大于阈值以识别至少一个选择逻辑单元块;以在至少一个选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复;并且将至少一个选择逻辑单元块中重复的映射数据的旧映射数据取消映射。
方法进一步可以包括确定存储块是否处于关闭状态,在该关闭状态下,在没有擦除操作的情况下没有新数据被编程。可以从存储块的第一页面到最后页面顺序地编程数据条。当存储块变为处于关闭状态时,可以执行比较步骤。
映射数据计数是关于物理到逻辑(P2L)信息的多条映射数据的数量,该P2L信息将至少一个选择逻辑单元块的逻辑地址和物理地址相关联。存储块包括可作为单元被一起擦除的存储器单元组,并且至少一个选择逻辑单元块由设定数量的映射数据识别,设定数量的映射数据各自被分配给可作为单元被一起编程的独特存储器单元组。
方法进一步可以包括在将旧映射数据取消映射之后将映射数据存储在在物理上可与存储块区分开的另一存储块中。
比较有效页面计数包括:通过将存储块的有效页面计数除以存储块中的逻辑单元块的数量来计算估计平均值。
例如,当逻辑单元块的映射数据计数大于估计平均值时,对该逻辑单元块执行检查和取消映射操作。再例如,当逻辑单元块的映射数据计数小于或等于估计平均值时,不对该逻辑单元块执行检查和取消映射操作。
在另一实施例中,一种控制存储器***的设备可以包括至少一个处理器和包括计算机程序代码的至少一个存储器。利用至少一个处理器来配置至少一个存储器和计算机程序代码以使设备:将存储数据的存储块划分成多个逻辑单元块;将通过将存储块的有效页面计数除以逻辑单元块的数量而计算的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成针对每个逻辑单元块的比较结果;基于相应比较结果,针对每个逻辑单元块确定该逻辑单元块的映射数据计数是否大于阈值以识别至少一个选择逻辑单元块;以在至少一个选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复;并且将至少一个选择逻辑单元块中重复的映射数据的旧映射数据取消映射。
在另一实施例中,存储器***可以包括:非易失性存储器装置,其包括被划分成多个单元块的操作块,每个单元块包括多个页面;以及控制器,被配置成:控制非易失性存储器装置对操作块内的一个或多个页面执行数据操作;根据数据操作更新每个单元块的映射数据;并且当操作块变成关闭并且单元块的多条映射数据的数量变得比单元块的有效页面的估计平均数量多阈值时,移除指示单元块的相同逻辑地址的作废的映射数据条。映射数据条可以表示存储数据的页面的逻辑地址和物理地址之间的映射关系。
附图说明
本文的描述参照附图,其中相同的附图标记在若干附图中表示相同的部件,并且其中:
图1示出根据本公开的实施例的存储器***中的垃圾收集;
图2示出包括根据本公开的实施例的存储器***的数据处理***;
图3示出根据本公开的实施例的存储器***;
图4和图5示出根据本公开的实施例的执行对应于多个命令的多个命令操作的存储器***;
图6示出根据本公开的实施例的存储器***;
图7示出控制器中管理元数据的方法;
图8示出控制器如何运行编程指令和如何控制块;
图9示出控制器执行的用于控制映射数据的方法;
图10示出根据本公开的另一实施例的操作存储器***的方法;以及
图11至图19是示意性地示出每个都包括根据本公开的实施例的存储器***的其它数据处理***的框图。
具体实施方式
以下参照附图更详细地描述本公开的各个示例。然而,本发明的方面和特征可以不同地形式来实现以形成包括所公开实施例中的任意一个的变型的其它实施例。因此,本发明不应被解释为限于本文阐述的实施例。相反,提供所描述的实施例以使本公开完整和全面,并且将本公开的范围充分地传达给本发明所属领域的技术人员。在整个本公开中,相同的附图标记在本公开的各个附图和示例中表示相同的部件。注意的是,对“实施例”、“另一实施例”等的参考不一定表示仅针对一个实施例,并且对任意这种短语的不同参考不一定针对相同的实施例。
将理解的是,虽然在本文中可以使用术语“第一”、“第二”、“第三”等来识别各个元件,但是这些元件不受这些术语限制。这些术语用于将一个元件与否则将具有相同或相似名称的另一元件区分开。因此,在不脱离本发明的精神和范围的情况下,一个示例中的第一元件可在另一示例中被称为第二元件或第三元件。
附图不一定按比例绘制,并且在一些情况下,为了清楚地示出实施例的特征,比例可能已经被夸大。当元件被称为连接或联接到另一元件时,应该理解,前者可以直接连接或联接到后者,或者通过它们之间的一个或多个中间元件电连接或联接到后者。另外,还将理解的是,当元件被称为在两个元件“之间”时,它可以是这两个元件之间的唯一元件,或者也可以存在一个或多个中间元件。
本文使用的术语仅用于描述特定实施例的目的,并不旨在限制本发明。如本文使用的,单数形式旨在包括复数形式并且反之亦然,除非上下文另有清楚地说明。
将进一步理解的是,当在本说明书中使用术语“包括”、“包括有”、“包含”和“包含有”时,其指定所述元件的存在,并不排除一个或多个其它元件的存在或添加。如本文所使用的,术语“和/或”包括一个或多个相关所列项目的任意和全部组合。
除非另有定义,否则本文所使用的包括技术术语和科学术语的所有术语具有与本发明所属领域的普通技术人员根据本公开通常理解的相同的含义。将进一步理解的是,诸如在常用词典中定义的那些术语的术语应被理解为具有与它们在本公开和相关领域的背景下的含义一致的含义,并且不以理想化或过于形式化的意义来解释,除非本文明确地如此限定。
在下面的描述中,为了提供对发明的透彻理解,阐述了大量具体细节。可在没有一些或全部这些具体细节的情况下来实施本发明。在其它情况下,为免不必要地模糊本发明,未详细地描述公知的进程结构和/或进程。
还注意的是,在一些情况下,如对相关领域的技术人员显而易见的是,结合一个实施例描述的特征或元件可单独使用或与另一实施例的其它特征或元件结合使用,除非另有明确说明。
以下参照附图详细描述本公开的实施例,其中相同的附图标记表示相同的元件。
在图1中,根据本公开的实施例,存储器***110包括控制器130和存储器装置150。存储器***110可以与另一装置,例如,计算装置接合。
参照图1,可以在没有从主机102(参见图2)传输的命令或指令的情况下由存储器***自行执行垃圾收集(GC)。存储器***110中的控制器130可以从存储器装置150的多个数据块40_1读取用户数据、将用户数据临时加载在设置在控制器130内或者直接与控制器130接合并由控制器130控制的存储器144中,并且将加载在存储器144中的用户数据编程到存储器装置150的空闲块40_2中。此处,多个数据块40_1可以包括在没有擦除的情况下不能再编程新数据的块。
根据实施例,控制器130可以使用存储器144临时存储被识别并选择以用于垃圾收集的有效数据,直到有效数据被编程到空闲块40_2中。
为了实现垃圾收集,控制器130应该将存储在多个数据块40_1中的有效数据和无效数据区分开。关于对应于每个数据块40_1的有效页面计数(VPC)的信息指示在每个数据块40_1中存储了多少有效数据(或有效页面的数量),但是不指示哪个数据或哪个页面有效。因此,控制器130可以使用包括映射数据的操作信息项58(参见图8和图9)来确定哪个数据(或哪个页面)有效。例如,操作信息项58可以包括有效页面计数或诸如与存储在相应存储块中的数据相关联的元数据或映射数据的其它操作信息中的至少一个。如果应被传送或存储到空闲块40_2中以用于垃圾收集有效数据可以被容易地区分开,则可以减少资源(例如,时间和功率)。
根据实施例,控制器130可以包括操作信息检查电路(OICC)124。OICC 124可以基于包括映射数据的操作信息项58来确定数据被编程到多个数据块40_1中的特定页面是否有效,也就是说,确定存储在页面中的数据是否有效。
如在本公开中所使用的,术语“电路”可以指以下中的任意或全部:(a)仅硬件电路实施方案(诸如仅在模拟和/或数字电路中的实施方案);(b)电路和软件(和/或固件)的组合,诸如(如适用):(i)处理器的组合或(ii)(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器的)处理器/软件的一部分;以及(c)需要软件或固件来进行操作的电路,诸如微处理器或微处理器的一部分,即使软件或固件并非物理地存在。“电路”的这种定义适用于该术语在本申请中,包括在任意权利要求中的所有应用。作为另外的示例,如在本申请中所使用的,术语“电路”还将涵盖仅处理器(或多个处理器)或处理器的以部分及其附带的软件和/或固件的实施方案。例如,如果术语“电路”适用于特定的权利要求元件,则术语“电路”还将涵盖用于存储装置的集成电路。
可以从数据块40_1中的第一页面到最后页面顺序地编程数据。当对存储块的最后页面编程数据时,存储块从可以编程新数据的开放状态改变成不可以编程新数据的关闭状态。当数据块40_1之中的特定块处于关闭状态时,OICC 124可以顺序地将与存储在每个逻辑单元块中的数据相对应的多条映射数据的数量与相应逻辑单元块的有效页面计数进行比较,以确定数据的有效性。
存储器装置150中的每个数据块40_1具有足够大的存储容量,使得每个数据块40_1可以被划分成多个逻辑单元块。可以使用不同的方法划分每个数据块40_1。例如,可以基于存储器装置150的结构、映射数据的大小、映射数据的位置等将一个数据块划分成若干逻辑单元块。存储器装置150中的每个存储块可以以多个页面为单元来编程数据。能够存储在每个页面中的数据的大小可以根据每个存储块中包括的存储器单元的类型而改变。例如,当映射数据是位图格式时,可以将对应于与映射数据的一倍或多倍的区域确定为逻辑单元块的大小。通过示例而非限制的方式,存储块可以包括至少两个逻辑单元块。存储块可以是可作为单元被一起擦除的独特的存储器单元组。逻辑单元块可以通过设定数量的映射数据来识别,设定数量的映射数据各自被分配给可作为单元被一起编程的独特存储器单元组。
在图2中,描述根据本公开的实施例的数据处理***100。参照图2,数据处理***100可以包括与存储器***110接合或通信的主机102。
例如,主机102可以包括诸如移动电话、MP3播放器和膝上型计算机的便携式电子装置或诸如台式计算机、游戏机、电视(TV)和投影仪等的电子装置。
主机102还包括通常可以管理并控制在主机102中执行的功能和操作的至少一个操作***(OS)。OS可以提供与存储器***110接合的主机102和存储器***110的用户之间的互操作性。OS可以支持与用户请求相对应的功能和操作。通过示例而非限制的方式,根据主机102的移动性,OS可以被划分为通用操作***和移动操作***。根据***的要求或用户的环境,通用操作***可以被分为个人操作***和企业操作***。包括Windows和Chrome的个人操作***可以提供一般支持服务。但是企业操作***可以专门用于保护和支持高性能,包括Windows服务器、Linux、Unix等。此外,移动操作***可以包括Android、iOS、Windows Mobile等。移动操作***可以提供针对移动的支持服务或功能(例如省电功能)。主机102可以包括多个操作***。对应于用户的请求,主机102可以运行与存储器***110通信的多个操作***。主机102可以将对应于用户的请求的多个命令传输到存储器***110,从而在存储器***110内执行对应于命令的操作。稍后参照图4和图5描述在存储器***110中处置多个命令。
存储器***110可以响应于来自主机102的请求而操作或执行特定功能或操作,并且特别地,可以存储待由主机102访问的数据。存储器***110可以用作主机102的主存储器***或辅助存储器***。根据主机接口的协议,存储器***110可以利用与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态硬盘(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型-MMC、安全数字(SD)卡、迷你-SD、微型-SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡(SM)卡、记忆棒等。
用于存储器***110的存储装置可以利用例如动态随机存取存储器(DRAM)和静态RAM(SRAM)的易失性存储器装置和/或诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)、电阻式RAM(RRAM或ReRAM)和闪速存储器的非易失性存储器装置来实施。
存储器***110可以包括控制器130和存储器装置150。存储器装置150可以存储待由主机102访问的数据。控制器130可以控制将数据存储在存储器装置150中。
控制器130和存储器装置150可被集成到单个半导体装置中,其中单个半导体装置可被包括在以上所例示的各种类型的存储器***中的任意一种中。
通过示例而非限制的方式,控制器130和存储器装置150可以被集成到单个半导体装置中来提高操作速度。当存储器***110用作SSD时,连接至存储器***110的主机102的操作速度可以比利用硬盘来实施的主机102的操作速度提高得更多。在另一实施例中,控制器130和存储器装置150可以集成到一个半导体装置中来形成诸如以下的存储卡:智能媒体卡(SM、SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC)、SD卡(SD、迷你-SD、微型SD和SDHC)或通用闪速存储器等。
存储器***110可以被配置为例如以下的中的一部分:计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板计算机、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航***、黑盒、数码相机、数字多媒体广播(DMB)播放器、3维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、构成数据中心的存储装置、能够在无线环境下传送/接收信息的装置、构成家庭网络的各种电子装置中的一种、构成计算机网络的各种电子装置中的一种、构成远程信息处理网络的各种电子装置中的一种、射频识别(RFID)装置或构成计算***的各种组件中的一种。
存储器装置150可以是非易失性存储器装置,并且即使在不供应电力时也可保留其中存储的数据。存储器装置150可以通过写入操作来存储从主机102提供的数据,而通过读取操作将存储在其中的数据提供至主机102。存储器装置150可以包括多个存储块152、154、156,多个存储块152、154、156中的每一个可以包括多个页面。多个页面中的每一个可以包括电联接至多个字线(WL)的多个存储器单元。存储器装置150还包括多个存储器管芯,多个存储器管芯中的每一个包括多个平面,多个平面中的每一个包括一组多个存储块152、154、156。另外,存储器装置150可以是非易失性存储器装置,例如闪速存储器,其中闪速存储器可以是三维堆叠结构。
控制器130可以控制存储器装置150的全部操作,诸如读取操作、写入操作、编程操作和擦除操作。例如,控制器130可以响应于来自主机102的请求来控制存储器装置150。控制器130可以向主机102提供从存储器装置150读取的数据。控制器130可将由主机102提供的数据存储到存储器装置150中。
控制器130可以包括主机接口(I/F)132、处理器134、错误校正码(ECC)单元138、电源管理单元(PMU)140、存储器接口(I/F)142以及存储器144,其全部通过内部总线可操作地联接。
主机接口132可以处理从主机102提供的命令和数据,并可通过诸如以下的各种接口协议中的至少一种与主机102通信:通用串行总线(USB)、多媒体卡(MMC)、高速***组件互连(PCI-e或PCIe)、小型计算机***接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、小型计算机***接口(SCSI)、增强型小型磁盘接口(ESDI)以及电子集成驱动器(IDE)。根据实施例,主机接口132用于与主机102交换数据,主机接口可以通过称为主机接口层(HIL)的固件来实施。
ECC单元138可以校正待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位,ECC单元138可以包括ECC编码器和ECC解码器。此处,ECC编码器可以对待被编程在存储器装置150中的数据执行错误校正编码以生成添加奇偶校验位的经编码数据并且将经编码数据存储在存储器装置150中。当控制器130读取存储在存储器装置150中的数据时,ECC解码器可以检测并校正从存储器装置150读取的数据中包含的错误。换言之,在对从存储器装置150读取的数据执行错误校正解码之后,ECC单元138可以确定错误校正解码是否已经成功,并且输出指示信号(例如,校正成功信号或校正失败信号)。ECC单元138可以使用在ECC编码进程中生成的奇偶校验位来校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,ECC单元138可不校正错误位而是可以输出指示校正错误位失败的错误校正失败信号。
ECC单元138可以基于诸如下列的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归***码(RSC)、网格编码调制(TCM)、分组编码调制(BCM),等等。ECC单元138可以包括用于基于上述码中的至少一种来执行错误校正操作的所有或一些电路、模块、***或装置。
PMU 140可以管理提供在控制器130中的电力。
存储器接口142可以用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102传递的请求来控制存储器装置150。在当存储器装置150是闪速存储器并且特别地当存储器装置150是NAND闪速存储器时的情况下,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号并且处理输入到存储器装置150或从存储器装置150输出的数据。存储器接口142可以提供用于处置在控制器130和存储器装置150之间的命令和数据的接口,例如NAND闪存接口的操作,特别地控制器130和存储器装置150之间的操作。根据实施例,存储器接口142可以通过称为闪存接口层(FIL)、作为与存储器装置150交换数据的组件的固件来实施。
存储器144可以支持存储器***110和控制器130执行的操作。存储器144可以存储被生成或传递以用于存储器***110和控制器130中的操作的临时或事务数据。控制器130可以响应于来自主机102的请求来控制存储器装置150。控制器130可以将从存储器装置150读取的数据传递至主机102中。控制器130可以将通过主机102输入的数据存储在存储器装置150中。存储器144可以用于存储控制器130和存储器装置150执行诸如读取操作或编程/写入操作的操作所需的数据。
存储器144可以利用易失性存储器来实施。存储器144可以利用静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)或两者来实施。虽然图1示出设置在控制器130内的第二存储器144,但是本发明不限于该布置。也就是说,存储器144可以设置在控制器130内部或外部。例如,存储器144可以由具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器来实现。
存储器144可以存储用于执行主机102请求的诸如数据写入和数据读取和/或用于诸如以上所述的垃圾收集和损耗均衡的后台操作的存储器装置150和控制器130之间的数据传送的操作所需的数据。根据实施例,为了支持存储器***110中的操作,存储器144可以包括编程存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
处理器134可以利用微处理器或中央处理单元(CPU)来实施。存储器***110可以包括一个或多个处理器134。处理器134可以控制存储器***110的全部操作。通过示例而非限制的方式,处理器134可以响应于从主机102输入的写入请求或读取请求而控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以使用或运行固件来控制存储器***110的全部操作。此处,固件可以被称为闪存转换层(FTL)。FTL可以执行作为主机102和存储器装置150之间的接口的操作。主机102可以通过FTL将用于写入操作和读取操作的请求传输到存储器装置150。
FTL可以管理地址映射、垃圾收集、损耗均衡等操作。特别地,FTL可以加载、生成、更新或存储映射数据。因此,控制器130可以通过映射数据将从主机102输入的逻辑地址与存储器装置150的物理地址进行映射。由于地址映射操作,存储器装置150可以是执行读取操作或写入操作的通用存储装置。而且,通过基于映射数据的地址映射操作,当控制器130试图更新存储在特定页面中的数据时,由于闪速存储器装置的特性,控制器130可以将更新的数据编程在另一空页面上,并且可以使特定页面的旧数据无效(例如将与更新的数据的逻辑地址对应的物理地址从先前特定页面更新成另一新编程的页面)。此外,控制器130可以将新数据的映射数据存储到FTL中。
例如,当在存储器装置150中执行从主机102请求的操作时,控制器130使用处理器134。与存储器装置150接合的处理器134可以处置与从主机102输入的命令相对应的指令或命令。控制器130可以执行作为与从主机102输入的命令相对应的命令操作的前台操作,例如与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除/丢弃命令相对应的擦除/丢弃操作以及利用设置命令与设置参数命令或设置特征命令相对应的参数设置操作。
再例如,控制器130可以通过处理器134对存储器装置150执行后台操作。通过示例而非限制的方式,对存储器装置150的后台操作包括将存储在存储块152、154、156之中的选择存储块中的数据复制并存储到另一目标存储块中的操作,例如垃圾收集(GC)操作。后台操作还可以包括将存储在存储块152、154、156中的至少一个中的数据移动或交换到存储块152、154、156中的至少另一存储块中的操作,例如损耗均衡(WL)操作。在后台操作中,控制器130可以使用处理器134来将存储在控制器130中的映射数据存储到存储块152、154、156中的至少一个,例如映射清除(flush)操作。检查多个存储块152、154、156之中的坏块的坏块管理操作是处理器134执行的后台操作的另一示例。
根据实施例,图1中所示的OICC 124可以通过图2中描述的控制器130中的至少一个处理器134和至少一个存储器144来实施。
在存储器***110中,控制器130执行与从主机102输入的多个命令相对应的多个命令操作。例如,可以响应于编程命令执行编程操作,可以响应于读取命令执行读取操作,并且可以响应于擦除命令执行擦除操作。可以顺序地、随机地或可选地执行这些操作。为此,控制器130可以确定用于将控制器130连接到存储器装置150中包括的多个存储器管芯的哪条(哪些)通道或路径适于或适合于执行每个操作。控制器130可以经由确定的通道或路径发送或传送数据或指令以执行每个操作。在完成每个操作之后,多个存储器管芯可以分别经由相同的通道或路径传送操作结果。然后,控制器130可以将响应或确认信号传送至主机102。在实施例中,控制器130可以检查每条通道或每条路径的状态。响应于从主机102输入的命令,控制器130可以基于每条通道或每条路径的状态来选择至少一条通道或路径,使得可以经由所选择的通道或路径来传递指令和/或操作结果与数据。
通过示例而非限制的方式,控制器130可以识别关于与存储器装置150中的多个存储器管芯相关联的多条通道(或路径)的状态。控制器130可以将每条通道或每条路径的当前状态确定为忙碌状态、就绪状态、激活状态、空闲状态、正常状态或异常状态。控制器确定传递指令(和/或数据)的哪条通道或路径传递指令(和/或数据)可以与物理块地址,例如被传递指令(和/或数据)的哪个管芯相关联。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述存储器装置150块或页面的参数,其为具有设定格式或结构的数据。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定经由哪条(哪些)通道或路径来交换指令或数据。
管理单元(未示出)可以包括在处理器134中。管理单元可以对存储器装置150执行坏块管理。管理单元可以找到存储器装置150中不满足进一步使用条件的坏存储块,并且对坏存储块执行坏块管理。当存储器装置150是闪速存储器,例如NAND闪速存储器时,由于NAND逻辑功能的特性,在写入操作期间,例如在编程操作期间,可能发生编程失败。在坏块管理期间,可以将编程失败的存储块或坏存储块的数据编程到新的存储块中。坏块可能严重劣化具有3D堆叠结构的存储器装置150的利用效率和存储器***110的可靠性。因此,可靠的坏块管理可以增强或提高存储器***110的性能。
参照图3,详细地描述根据本公开的另一实施例的存储器***中的控制器。控制器130与主机102和存储器装置150协作。控制器130可以包括主机接口132、闪存转换层(FTL)40、存储器接口142和存储器144。
虽然未在图3中示出,但是根据实施例,图2中描述的ECC单元138可以包括在闪存转换层FTL 40中。在另一实施例中,ECC单元138可以被实施成包括在控制器130中或与控制器130相关联的单独模块、电路、固件等。
主机接口132用于处置从主机102传送的命令、数据等。通过示例而非限制的方式,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且按照它们被存储的顺序将它们输出至缓冲器管理器52。缓冲器管理器52可以分类、管理或调整从命令队列56接收的命令、数据等。事件队列54可以顺序地传送用于处理从缓冲器管理器52传送的命令、数据等的事件。
可以从主机102传送相同特性的多个命令或数据,例如读取命令和写入命令,或者不同特性的命令和数据可以在被主机102混合或混杂之后被传送至存储器***110。例如,用于读取数据的多个命令(读取命令)可以被传递,或者用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)可以被交替地传送至存储器***110。主机接口132可以将从主机102传送的命令、数据等顺序地存储至命令队列56。此后,主机接口132可以根据已经从主机102输入的命令、数据等的特性来估计或预测控制器130将执行何种操作。主机接口单元132可以至少基于它们的特性,确定命令、数据等的处理顺序和优先级。根据从主机102传送的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置成确定缓冲器管理器是否应该将命令、数据等存储在存储器144中,或者缓冲器管理器是否应该将命令、数据等传递至闪存转换层(FTL)40。事件队列54接收从缓冲器管理器52输入的、待由存储器***110或控制器130响应于从主机102传送的命令、数据等而内部运行和处理的事件,以便以接收的顺序将事件传递至闪存转换层(FTL)40。
根据实施例,图3中描述的主机接口132可以执行图1中描述的控制器130的功能。主机接口132可以将主机102中的第一存储器104设置为从存储器,并且添加该第一存储器104作为可由控制器130控制或使用的额外存储空间。
根据实施例,闪存转换层(FTL)40可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理从事件队列54输入的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集或损耗均衡。块管理器48可以对存储器装置150中的块运行命令或指令。
通过示例而非限制的方式,主机请求管理器(HRM)46可以使用映射管理器(MM)44和块管理器48以根据从主机接口132传递的读取和编程命令以及事件来处置或处理请求。主机请求管理器(HRM)46可以将查询请求发送至映射数据管理器(MM)44,以确定与事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可以将读取请求和物理地址一起发送至存储器接口142,以处理读取请求(处置事件)。另一方面,主机请求管理器(HRM)46可以将编程请求(写入请求)发送至块管理器48,以将数据编程至存储器装置150中的特定空页面(没有数据),然后可以将与编程请求相对应的映射更新请求传输至映射管理器(MM)44,以更新逻辑-物理地址相互映射的信息中与编程数据相关的项。
此处,块管理器48可以将从主机请求管理器(HRM)46、映射数据管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或提高存储器***110(参见图2)的编程或写入性能,块管理器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的存储容量高速缓存映射条目。当在处理查询请求或更新请求时发生映射高速缓存缺失(miss)时,映射管理器44可以将读取请求发送至存储器接口单元142以加载存储在存储器装置150中的相关映射表。当映射管理器44中的脏高速缓存块的数量超过特定阈值时,编程请求可以被发送至块管理器48,使得形成干净高速缓存块并且脏映射表可以存储在存储器装置150中。
另一方面,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可以针对相同逻辑地址的页面编程最新版本的数据,并且当前发出更新请求。当在有效页面的复制没有正常完成的状态下状态管理器42请求映射更新时,映射管理器44可不执行映射表更新。这是因为如果状态管理器42请求映射更新并且稍后完成有效页面复制,则映射请求与旧的物理信息一起被发出。映射管理器44只有在最新映射表仍然指向旧的物理地址时才可执行映射更新操作以确保准确性。
根据实施例,状态管理器42、映射管理器44或块管理器48中的至少一个可以包括图1中所示的OICC 124。
存储器装置150可以包括多个存储块。根据一个存储器单元中能够存储或表达的位的数量,多个存储块可以是诸如单层单元(SLC)存储块、多层单元(MLC)存储块等不同类型的存储块中的任意一种。此处,SLC存储块包括由存储器单元实施的多个页面,其中每个存储器单元存储一位数据。SLC存储块可以具有高数据I/O操作性能和高耐用性。MLC存储块包括由存储器单元实施的多个页面,其中每个存储器单元存储多位(例如,两位或更多位)数据。比SLC存储块相比,对于相同的空间,MLC存储块可以具有更大的存储容量。在存储容量方面,MLC存储块可以高度集成。在实施例中,存储器装置150可以利用诸如MLC存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。MLC存储块可以包括由存储器单元实施的多个页面,其中每个存储器单元能够存储两位数据。三层单元(TLC)存储块可以包括由存储器单元实施的多个页面,其中每个存储器单元能够存储三位数据。四层单元(QLC)存储块可以包括由存储器单元实施的多个页面,其中每个存储器单元能够存储四位数据。在另一实施例中,存储器装置150可以利用包括由存储器单元实施的多个页面的块来实施,其中每个存储器单元能够存储五位或更多位数据。
在本公开的实施例中,存储器装置150被实施为非易失性存储器,例如诸如NAND闪速存储器、NOR闪速存储器等的闪速存储器。可选地,存储器装置150可以由以下中的至少一种来实施:相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器(例如,自旋转移力矩磁性随机存取存储器,STT-MRAM)等。
图4和图5示例性地示出根据本公开的实施例的在存储器***中执行与多个命令相对应的多个命令操作。例如,从主机102接收多个写入命令并且执行与写入命令相对应的编程操作。又例如,从主机102接收多个读取命令并且执行与读取命令相对应的读取操作。再例如,从主机102接收多个擦除命令并且执行与擦除命令相对应的擦除操作。又例如,从主机102一起接收多个写入命令和多个读取命令并且执行与写入命令和读取命令相对应的编程操作和读取操作
在一个实施例中,与从主机102输入的多个写入命令相对应的写入数据被存储在控制器130的存储器144中的缓冲器/高速缓存中,存储在缓冲器/高速缓存中的写入数据被编程并存储在存储器装置150中的多个存储块中,相应于多个存储块中存储的写入数据来更新映射数据,并且更新的映射数据被存储在多个存储块中。在本公开的另一实施例中,执行与从主机102输入的多个写入命令对应的编程操作。在本公开的另一实施例中,从主机102输入针对存储在存储器装置150中的数据的多个读取命令,通过检查与读取命令相对应的数据的映射数据从存储器装置150读取与读取命令相对应的数据,读取的数据被存储在控制器130的存储器144中的缓冲器/高速缓存中,并且存储在缓冲器/高速缓存中的数据被提供至主机102。换言之,执行与从主机102输入的多个读取命令相对应的读取操作。另外,从主机102接收针对存储器装置150中的存储块的擦除命令,检查与擦除命令相对应的存储块,擦除存储在经检查的存储块中的数据,更新与擦除的数据相对应的映射数据,并且将更新的映射数据存储在存储器装置150中的多个存储块。也就是说,执行与从主机102接收的多个擦除命令相对应的擦除操作。
此外,虽然下面描述控制器130在存储器***110中执行命令操作,但是应注意的是,如上所述,控制器130中的处理器134可以通过例如FTL(闪存转换层)在存储器***110执行命令操作。而且,控制器130将与从主机102输入的写入命令相对应的用户数据和元数据编程并存储在存储器装置150中的多个存储块之中的选择存储块中,从选择存储块读取与从主机102接收的读取命令相对应的用户数据和元数据并且将读取的数据提供至主机102,或对应于从主机102输入的擦除命令,从存储器装置150中的多个存储块之中的选择存储块擦除用户数据和元数据。
元数据可以包括对应于编程操作而被存储在存储块中的数据的第一映射数据和第二映射数据,该第一映射数据包括逻辑/物理(L2P:逻辑到物理)信息(逻辑信息),该第二映射信息包括物理/逻辑(P2L:物理到逻辑)信息(物理信息)。而且,元数据可以包括关于与从主机102接收的命令相对应的命令数据的信息、关于与命令相对应的命令操作的信息、关于存储器装置150的将执行命令操作的存储块的信息、以及关于与命令操作相对应的映射数据的信息。换言之,元数据可以包括与从主机102接收的命令相对应的全部信息和除用户数据之外的数据。
也就是说,当控制器130从主机102接收多个写入命令时,执行与写入操作相对应的编程操作,并且将与写入命令相对应的用户数据写入并存储在存储器装置150的存储块之中已经执行擦除操作的空存储块、开放存储块或空闲存储块中。而且,包括L2P映射表或L2P映射列表的第一映射数据和包括P2L映射表或P2L映射列表的第二映射数据被写入并存储在存储器装置150的存储块之中的空存储块、开放存储块或空闲存储块,其中L2P映射表或L2P映射列表中记录有作为存储在存储块中的用户数据的逻辑地址和物理地址之间的映射信息的逻辑信息,P2L映射表或P2L映射列表中记录有作为存储有用户数据的存储块的物理地址和逻辑地址之间的映射信息的物理信息。
此处,在从主机102输入写入命令的情况下,控制器130将与写入命令相对应的用户数据写入并存储在存储块中。控制器130将包括存储的用户数据的第一映射数据和第二映射数据的元数据存储在另一存储块中。特别地,对应于存储的用户数据的数据段,控制器130生成并更新第一映射数据的L2P段以及第二映射数据的P2L段作为元数据的元段之中的映射数据的映射段。控制器130将映射段存储在存储器装置150的存储块中。存储在存储器装置150的存储块中的映射段被加载在包括在控制器130中的存储器144中,并且然后被更新。
此外,在从主机102接收到多个读取命令的情况下,控制器130从存储器装置150读取与读取命令相对应的数据,将读取的数据存储在控制器130的存储器144中包括的缓冲器/高速缓存中。控制器130将存储在缓冲器/高速缓存中的数据提供至主机102,由此来执行与多个读取命令相对应的读取操作。
另外,在从主机102接收到多个擦除命令的情况下,控制器130检查存储器装置150的、与擦除命令相对应的存储块,然后对存储块执行擦除操作。
当在执行后台操作的同时执行与从主机102接收的多个命令相对应的命令操作时,控制器130将与后台操作相对应的数据,即元数据和用户数据加载并存储在控制器130的存储器144中包括的缓冲器/高速缓存中,然后将数据,即元数据和用户数据存储在存储器装置150中。此处,通过示例而非限制的方式,后台操作可以包括作为复制操作的垃圾收集操作或读取回收操作、作为交换操作的损耗均衡操作或映射清除操作,例如,对于后台操作,控制器130可以检查存储器装置150的存储块中与后台操作相对应的元数据和用户数据、将存储在某些存储块中的元数据和用户数据加载并存储在控制器130的存储器144中包括的缓冲器/高速缓存中,然后将元数据和用户数据存储在其它存储块中。
在根据本公开的实施例的存储器***中,在执行作为前台操作的命令操作和作为后台操作的复制操作、交换操作和映射清除操作的情况下,控制器130调度与前台操作和后台操作相对应的队列、并且将调度的队列分配给控制器130中包括的存储器144和在主机102中包括的存储器。就这方面而言,控制器130为待在存储器装置150中执行的前台操作和后台操作的各个操作分配标识符(ID),并且分别调度与分配有标识符的操作相对应的队列。在根据本公开的实施例的存储器***中,不仅为对存储器装置150的各个操作分配标识符,而且为对存储器装置150的功能分配标识符,并且调度与分配有各自的标识符的功能相对应的队列。
在根据本公开的实施例的存储器***中,控制器130管理通过待在存储器装置150中执行的各个功能和操作的标识符而被调度的队列。控制器130管理通过待在存储器装置150中执行的前台操作和后台操作的标识符而被调度的队列。在根据本公开的实施例的存储器***中,在将与通过标识符而被调度的队列相对应的存储器区域分配给控制器130中包括的存储器144和主机102中包括的存储器之后,控制器130管理分配的存储器区域的地址。控制器130通过使用调度的队列不仅执行前台操作和后台操作,而且还执行存储器装置150中各个功能和操作。
参照图4,控制器130执行与从主机102接收的多个命令相对应的命令操作,例如与从主机102输入的多个写入命令相对应的编程操作。控制器130将与写入命令相对应的用户数据编程并存储在存储器装置150的存储块中。而且,对应于针对存储块的编程操作,控制器130生成并更新用户数据的元数据,并且将元数据存储在存储器装置150的存储块中。
控制器130生成并更新第一映射数据和第二映射数据,该第一映射数据和第二映射数据包括指示用户数据存储在存储器装置150的存储块中包括的页面中的信息。也就是说,控制器130生成并更新作为第一映射数据的逻辑段的L2P段和作为第二映射数据的物理段的P2L段,然后将逻辑段和物理段存储在存储器装置150的存储块中包括的页面中。
例如,控制器130将与从主机102输入的写入命令相对应的用户数据高速缓存并缓冲在控制器130的存储器144中包括的第一缓冲器510中。特别地,在将用户数据的数据段512存储在作为数据缓冲器/高速缓存的第一缓冲器510中之后,控制器130将在第一缓冲器510中的数据段512存储在存储器装置150的存储块中的页面中。当与从主机102输入的写入命令相对应的用户数据的数据段512被编程并存储在存储块中的页面中时,控制器130生成并更新第一映射数据和第二映射数据。控制器130将第一映射数据和第二映射数据存储在控制器130的存储器144中的第二缓冲器520中。特别地,控制器130将用户数据的第一映射数据的L2P段522和第二映射数据的P2L段524存储在作为映射缓冲器/高速缓存的第二缓冲器520中。如上所述,第一映射数据的L2P段522和第二映射数据的P2L段524可以存储在控制器130中的存储器144的第二缓冲器520中。第一映射数据的L2P段522的映射列表和第二映射数据的P2L段524的另一映射列表可以存储在第二缓冲器520中。控制器130将存储在第二缓冲器520中的第一映射数据的L2P段522和第二映射数据的P2L段524存储在存储器装置150的存储块中包括的页面中。
此外,控制器130执行与从主机102接收的多个命令相对应的命令操作,例如与从主机102接收的多个读取命令相对应的读取操作。特别地,控制器130将第一映射数据的L2P段522和第二映射数据的P2L段524作为与读取命令相对应的用户数据的映射段加载在第二缓冲器520中,并且检查L2P段522和P2L段524。然后,控制器130读取存储在存储器装置150的存储块之中的相应存储块的页面中的用户数据、将读取的用户数据的数据段512存储在第一缓冲器510,然后将数据段512提供至主机102。
此外,控制器130执行与从主机102输入的多个命令相对应的命令操作,例如与从主机102输入的多个擦除命令相对应的擦除操作。特别地,控制器130识别存储器装置150的存储块之中的、与擦除命令相对应的存储块以对识别的存储块执行擦除操作。
在执行在存储器装置150中的存储块之中的复制数据或交换数据的操作,例如作为后台操作的垃圾收集操作、读取回收操作或损耗均衡操作的情况下,控制器130将相应用户数据的数据段512存储在第一缓冲器510中,将与用户数据相对应的映射数据的映射段522、524加载在第二缓冲器520中,然后执行垃圾收集操作、读取回收操作或损耗均衡操作。在对存储器装置150的存储块执行作为后台操作的例如映射数据的元数据的映射更新操作和映射清除操作的情况下,控制器130将相应映射段522、524加载在第二缓冲器520中,然后执行映射更新操作和映射清除操作。
如上所述,在对存储器装置150执行包括前台操作和后台操作的功能和操作的情况下,控制器130为待对存储器装置150执行的功能和操作分配标识符。控制器130分别调度分别与分配有标识符的功能和操作相对应的队列。控制器130将与各个队列相对应的存储器区域分配给控制器130中的存储器144和主机102中的存储器。控制器130分别管理分配给各个功能和操作的标识符、针对各个标识符而被调度的队列以及对应于队列而分配给控制器130的存储器144和主机102的存储器的存储器区域。控制器130通过分配给控制器130的存储器144和主机102的存储器的存储器区域对存储器装置150执行功能和操作。
参照图5,存储器装置150包括多个存储器管芯,例如存储器管芯0、存储器管芯1、存储器管芯2以及存储器管芯3,每个存储器管芯包括多个平面,例如,平面0、平面1、平面2以及平面3。存储器装置150中的存储器管芯中的各个平面包括多个存储块,例如,N个块:Block0、Block1、......、BlockN-1,每个块包括多个页面,例如,如上参照图3所描述的2M个页面。此外,存储器装置150包括与各个存储器管芯相对应的多个缓冲器,例如,与存储器管芯0相对应的缓冲器0、与存储器管芯1相对应的缓冲器1、与存储器管芯2相对应的缓冲器2以及与存储器管芯3相对应的缓冲器3。
在执行与从主机102接收的多个命令相对应的命令操作的情况下,与命令操作相对应的数据存储在存储器装置150中包括的缓冲器中。例如,在执行编程操作的情况下,与编程操作相对应的数据被存储在缓冲器中,然后被存储在存储器管芯的存储块中包括的页面中。在执行读取操作的情况下,与读取操作相对应的数据从存储器管芯的存储块中的页面被读取,被存储在缓冲器中,然后通过控制器130被提供至主机102。
在本公开的实施例中,存储器装置150中的缓冲器设置在它们各自的存储器管芯的外部。在另一实施例中,缓冲器可以设置在它们各自的存储器管芯的内部。此外,缓冲器可以对应于它们各自的存储器管芯中它们各自的平面或它们各自的存储块。此外,在本公开的实施例中,存储器装置150中的缓冲器是如上参照图3描述的存储器装置150中的多个页面缓冲器322、324和326。在另一实施例中,缓冲器可以是存储器装置150中包括的多个高速缓存或多个寄存器。
而且,存储器装置150中包括的多个存储块可以被分组为多个超级存储块,并且可以以多个超级存储块来执行命令操作。超级存储块中的每一个可以包括多个存储块的组,例如,在第一存储块组中的存储块可以形成第一超级存储块并且第二存储块组中的存储块可以形成第二超级存储块。就这方面而言,在第一存储块组被包括在第一存储器管芯的第一平面中的情况下,第二存储块组可以包括在第一存储器管芯的第一平面、包括在第一存储器管芯的第二平面中或者包括在第二存储器管芯的平面中。
在本公开的实施例中,数据处理***可以包括多个存储器***。多个存储器***110中的每一个可以包括控制器130和存储器装置150。在数据处理***中,多个存储器***110中的一个可以主存储器***,其它存储器***中的每一个可以是从存储器***。例如,可以基于多个存储器***110之间的争用(例如,仲裁和冲突避免,或资源竞争)来确定主存储器***。当在数据处理***中从主机102传递多个命令时,主存储器***可以至少基于通道或总线的状态来确定每个命令的目的地。例如,对应于从多个存储器***传递的信息(例如,操作状态),可以将第一存储器***确定为多个存储器***之中的主存储器***。如果第一存储器***被确定为主存储器***,则剩余存储器***被认为是从存储器***。主存储器***的控制器可以检查联接至多个存储器***的多条通道(或路径、总线)的状态,以选择哪个存储器***处置从主机102传递的命令或数据。在实施例中,可以动态地确定多个存储器***之中的主存储器***。在另一实施例中,多个存储器***之中的主存储器***可以周期性地或根据事件而改变。也就是说,当前的主存储器***稍后可能变成从存储器***,并且从存储器***中的一个可能变成主存储器***。
在下文中,将更详细地描述用于在包括上述存储器装置150和控制器130的存储器***110中传输数据的方法和设备。随着存储在存储器***110中的数据量变大,存储器***110可能需要一次读取或存储大量数据。然而,用于读取存储在存储器装置150中的数据的读取时间或用于将数据写入存储器装置150中的编程/写入时间通常可能比控制器130处理数据的处置时间或控制器130和存储器装置150之间的数据传输时间长。例如,读取时间可能是处置时间的两倍。由于读取时间或编程时间明显比处置时间或数据传输时间长,因此用于在存储器***110中传递数据的过程或进程可能影响存储器***110的性能,例如操作速度,和/或存储器***110的结构,例如缓冲器大小。
在图6中,描述根据本公开的实施例的存储器***20。主机10、存储器***20和其它组件可以构成为根据本公开的实施例的数据处理***。在嵌入有存储器***20的计算装置或移动装置中,存储器***20与主机10接合以交换数据。
参照图6,存储器***20可以包括控制器30和存储器装置40。控制器30从存储器装置40接收从主机10请求的数据和输出从主机10请求的数据,或者为了执行从主机10请求的命令操作将从主机10传输的数据存储到存储器装置40中。存储器装置40包括能够存储数据的多个存储器单元。此处,存储器装置40的内部配置可以根据存储器装置40的特性、使用存储器***20的目的、主机10所需的存储器***20的规格等而改变。例如,图1至图5中所示的存储器装置150和图6的存储器装置40可以包括相同组件。另外,图1至图5中描述的控制器130和图6中所示的控制器30可以包括相同组件。
控制器30可以包括至少一个处理器34、主机接口36、缓冲器28和控制器接口32。对于控制器30内的命令操作,处理器34可以起到与在计算装置中所使用的CPU的作用相似的作用。主机接口36用于存储器***20和主机10之间的数据通信,而控制器接口32用于存储器装置40和控制器30之间的数据通信。存储器38临时存储在处理器34、主机接口36和控制器接口32执行的操作期间所需的数据和操作状态。或者,存储器38可以临时存储存储器装置40和主机10之间的I/O数据。上述控制器30的内部配置可以是每一个能够执行由控制器处置或处理的操作、任务等的一类功能模块。
根据实施例,控制器30的物理配置可以由至少一个处理器、至少一个存储器、至少一个输入/输出端口以及用于上述组件之间的电连接的布线构成。
控制器30和存储器装置40可以彼此交换元数据和用户数据。此处,用户数据包括待被用户通过主机10存储的数据,并且元数据包括用于将用户数据存储在存储器装置40中并对该数据进行管理所需的***信息(例如,映射数据等)。因为用户数据和元数据的属性彼此不同,所以可以在控制器30中以不同方式处理或管理用户数据和元数据。
随着存储器装置40的存储容量增加,状态信息等的量也会增加。这种状态信息可以包括诸如读取、编程和擦除存储器装置40中包括的多个管芯、多个块或多个页面内的数据的操作所需的***信息、映射信息和/或操作信息。控制器30很难将所有状态信息等存储在存储器38中。因此,用于诸如读取操作、编程操作、擦除操作等操作的***信息、映射信息、操作信息等以及用户数据可以存储在存储装置40中。控制器30可以从存储器装置40中的多个管芯、块加载诸如读取、编程或删除来自存储器装置40的多个页面中的数据的操作所需的一些信息,然后在相应操作完成之后,将更新的信息重新存储在存储器装置40中。
虽然未示出,但是随着存储器装置40中能够存储数据的存储器单元的数量增加,存储器装置40的内部结构可能变得更复杂。控制器30可以根据存储器装置40的内部配置一起传输或接收连接信息和数据。例如,在当多个管芯包括在如图6中所示存储器装置40的情况下,在控制器30和存储器装置40之间存在n条通道和m条路径(n或m是大于1的整数)。数据和连接信息可以经由n条通道和m条路径传输。然而,为了使控制器30将数据写入存储器装置40或从存储器装置40读取数据,根据存储器装置40的内部结构,可能需要额外的控制变量或控制信号。当存储器装置40中包括更多的管芯时,执行操作所需的额外的信息变得更大。
例如,主机10和存储器***20可以根据协议、***通信方法或接口彼此交换命令、地址、数据等。因此,主机10可能不需要知道存储器***20内部的特定结构。当主机10将特定数据存储到存储器***20或着试图读取存储在存储器***20中的数据时,主机10发送逻辑块地址(LBA)。此处,逻辑块地址(LBA)可以是用于指定待存储在存储装置中的数据块的位置的格式。例如,在传统硬盘的情况下,使用指示在硬盘中包括的物理结构,诸如柱面(cylinder)、磁头(head)和扇区(sector)(Cylinder-Head-Sector,CHS)的寻址方法。然而,随着硬盘的存储容量增加,与硬盘的物理结构相对应的地址***已达到极限。在这样的大容量存储装置中,可以以按照逻辑顺序将扇区排列成行,并且对扇区编号(例如,从0开始的顺序)的方式来指定地址,而不论硬盘的物理结构如何。不同于主机10仅将数据传输或指定到逻辑块地址(LBA),存储器***20中的控制器30可以存储并管理物理地址,其中该物理地址是存储器装置40中实际存储数据的地址。需要匹配并管理主机10使用的逻辑块地址(LBA)。这样的信息可以包括在元数据中,并且可以与主机10存储或读取的用户数据区分开。
随着存储器装置40中能够存储的数据的量增加,可能需要对元数据进行有效管理。而且,随着存储器装置40中包括的多个块的大小增加,能够存储的数据的量增加,并且元数据的量也增加。这增加了保持并管理存储器装置40中存储的数据所需的资源(例如,时间),从而可能需要用于提高存储器***20的操作效率、稳定性或可靠性的设备和方法。
根据实施例,存储器***20可以包括存储器装置40,该存储器装置40包括能够存储数据的多个块。另外,存储器***20可以包括控制器30,该控制器30被配置成将每个块划分成多个逻辑单元块。控制器30可以将块的有效页面计数与每个逻辑单元块的多条映射数据的数量进行比较,检查映射数据是否以与将数据编程在块中的顺序相反的顺序重复,并且删除或废除的重复的旧映射数据。在本描述中,当对应于单个逻辑地址的数据条被编程在对应于不同物理地址的物理位置时,映射数据可能重复。每当数据条被编程在存储器装置40的特定存储区域,例如页面中时,控制器30可以生成映射数据条。单个逻辑地址映射到逻辑单元块内的不同物理地址表示该单个逻辑地址的数据存储在逻辑单元块的前一物理地址的存储区域(例如,页面)中,然后与该单个逻辑地址相关联的其它数据存储在逻辑单元块内的后一物理地址的另一存储区域中。当逻辑单元块的映射数据条重复时,将两条或更多条映射数据可以包括映射到逻辑单元块中的不同物理地址的相同逻辑地址。控制器30可以在具有以下状态的特定块中执行用于比较、验证和删除的进程:在没有擦除操作的情况下不能再将数据写入到该块(例如关闭状态)。
当从主机10输入的命令重复请求对与相同逻辑块地址相对应的不同数据的多个编程操作时,控制器30可以将有效页面计数与多条映射数据的数量进行比较。根据实施例,存储器装置40中的多个存储块中的每一个可以从其内的第一页面至最后页面被顺序存储。此处,块是执行擦除操作的单元。块中可以包括至少两个逻辑单元块。逻辑单元块可以是映射数据被一起分配或管理的最小单元。此处,映射数据可以包括用于将以每个块为单元而分配的物理地址与主机102使用的逻辑地址相关联的信息(物理到逻辑,P2L)。
图7示出存储器***的控制器可以执行的用于管理元数据的方法。在图7中,主机10可以将命令传输到存储器***20(参见图6)以重复编程与相同逻辑块地址(LBA)相关联的数据。存储器***20中的存储器装置40可以包括非易失性存储器装置(例如,闪速存储器)。如果存储器***20可以将数据写入或编程到特定物理位置,然后重写其它数据,则存储器***20可以将从主机10输入的具有相同逻辑块地址(LBA)的不同数据重复地重写在存储器装置40的相同位置处。然而,在诸如存储器***20的存储器装置40的非易失性存储器装置(例如,闪速存储器等)中,不可以在相同位置处重写数据,因此必须将数据编程在新的(不同的)位置处。
参照图7,控制器30可以接收从主机10传输的数据、逻辑块地址和编程命令。控制器30可以响应于编程命令将逻辑块地址转换为物理块地址(52)。此处,控制器30接收的逻辑块地址可以是主机10识别并使用的逻辑地址或逻辑块地址(LBA)。例如,逻辑地址是用于识别在整个用户数据存储装置中顺序布置的扇区、空间或区域中的一个的指示符。例如,特定逻辑块地址(LBA)可以被转换成存储器***的存储器装置40中包括的物理块地址BLK_3。通过示例而非限制的方式,这种地址转换可以通过实施上述闪存转换层(FTL)的固件来实现。
随着存储器***存储更大量的用户数据时,每个块(例如,BLK_3)具有更大的大小。因此,存储器装置40中的存储块(例如,BLK_3)可以被划分成多个逻辑单元块LUB_0至LUB_n(54)。可以基于逐个逻辑单元块地来控制或管理一些操作。例如,块BLK_3可以包括“n”个逻辑单元块LUB_0、LUB_1、......、LUB_n-1、LUB_n。此处,“n”是2或更大的自然数。每个逻辑单元块(例如,LUB_1)可以包括“m”个页面PG_0、PG_1、......、PG_m-1、PG_m,其中m是2或更大的自然数。
根据实施例,各个映射数据可以被分派或分配给每个逻辑单元块。在实施例中,可以生成用于将对应于每个逻辑单元块的物理地址与逻辑地址匹配的物理到逻辑(P2L)映射表,以确定逻辑单元块中包括的多个页面中的每一个中所包括的数据是否有效。
图8示出存储在存储器***中的映射数据。在图8中,可以假设对应于逻辑地址的数据被重复编程在特定块BLK_3中。此处,存储器装置40中的块BLK_3可以包括五个逻辑单元块LUB_0至LUB_4。
例如,如图7中所描述,当主机10将命令传输至存储器***20中以用于重复编程对应于相同逻辑块地址(LBA)的多个数据时,可以以从作为存储器装置40中的开放块的块BLK_3中包括的第一单元块LUB_0到最后单元块LUB_4的顺序多次编程对应于LBA的多个数据。可以从存储器装置中的任意块(例如,BLK_3)的第一页面到最后页面来顺序地写入数据。当数据被写入到最后页面或最后单元块LUB_4时,块BLK_3变成在没有擦除操作的情况下不能写入数据的关闭状态。虽然未示出,但是当数据被编程在块BLK_3的所有页面处时,控制器30(参见图6)可以顺序地将其它数据写入到下一空闲块或开放块。
当块BLK_3变成不能再写入数据的状态时,控制器30可以检查、检测或分析关于块BLK_3的操作信息项58。控制器30可以识别有效页面计数(VPC),该有效页面计数(VPC)指示在块BLK_3中包括的所有页面中存储有效数据的页面的数量。另外,控制器30可以检查分配给块BLK_3的多个逻辑单元块LUB_0至LUB_4中的每一个的多少条映射数据是有效的。例如,块BLK_3的有效页面计数(VPC)是200,第一逻辑块LUB_0的映射数据计数是40,第二逻辑块LUB_1的映射数据计数是80,第三逻辑块LUB_2的映射数据计数是10,第四逻辑块LUB_3的映射数据计数是50,并且第五逻辑块LUB_4的映射数据计数是60。在本描述中,逻辑单元块的映射数据计数为多条映射数据的数量,每条映射数据表示逻辑地址和逻辑单元块内的物理地址之间的映射关系。
在这种情况下,块BLK_3中的有效页面计数(VPC)是200,但是与第一至第五逻辑块LUB_0至LUB_4的有效映射数据的数量可以是240(=40+80+10+50+60)。也就是说,块BLK_3中的40条映射数据可能是无效的或者不需要存储。出现无效映射数据归因于非易失性存储器装置不支持重写的特性。当从主机10输入对相同逻辑块地址(LBA)重复编程多个数据的指令时(参见图6),虽然新的数据和旧的数据存储在相同块的不同位置中,但是新数据可能有效而旧数据可能无效。由于存储器装置40不支持重写,因此必须将新传递的数据编程到新页面中,而与待编程数据相对应的映射数据条的逻辑地址可能与先前编程数据相对应的另一映射数据条的逻辑地址重复。例如,在关于第二逻辑块LUB_1的映射数据LUB_1P2L中存在重复的逻辑地址值“4C1”。存储的数据之中的最新数据有效,而旧数据不再有效。由于最新数据更接近块BLK_3中的最后页面并且旧数据更接近第一页面,因此当存在重复的地址值时,控制器30可以确定哪一个无效或不必要。
图9示出控制器运行或执行的用于控制映射数据的方法。在图9中,在图8中描述的操作信息项58的背景下进行描述。
参照图8和图9,当在块BLK_3中不能再编程新数据时,控制器30可以识别关于块BLK_3的四十条映射数据无效。控制器30可以通过将块BLK_3划分为五个逻辑单元块LUB_0至LUB_4来控制块BLK_3。块BLK_3的有效页面计数VPC是200。可以通过简单地将有效页面计数(VPC=200)除以逻辑单元块的数量(例如,“5”)来估计在每个单元块中平均编程40条有效数据。控制器30可以将估计平均值(例如,“40”)与每个逻辑单元块的映射数据计数进行比较,以识别块BLK_3中的逻辑单元块之中哪个逻辑单元块具有最大差。特别地,逻辑单元块的映射数据计数与平均值之间的差越大,在相应逻辑单元块中存储重叠数据的可能性越高。参照图9,在块BLK_3中,具有映射数据计数与平均值之间的最大差的逻辑单元块可以是第二逻辑单元块LUB_1。
参照图9,控制器30可以移除关于第二单元块LUB_1的冗余映射数据条。映射数据LUB_1P2L可以具有用于以规则顺序存储与第二单元块LUB_1中包括的每个页面相对应的若干地址值的格式或数据结构。在图8中,在关于第二逻辑块LUB_1的映射数据LUB_1P2L中包括重复的逻辑地址值“4C1”。在图9中,可以删除或作废(无效/作废)可能更接近第一位置的重复地址值的至少一个旧地址值。这些操作可以被称为取消映射或取消映射操作。通过该方法,第二逻辑块LUB_1的映射数据计数可以从“80”(参见图8)减少到“50”(参见图9)。在块BLK_3中,有效映射数据的总数量可以从“240”减少到更接近有效页面计数(VPC=200)的“210”。
控制器30可以将以上述方式调整的操作信息项58编程在存储器装置40中。例如,当完成对一条或多条映射数据的取消映射的操作时,控制器30可以将包括调整的映射数据的操作信息项58存储在物理上与存储有数据的块区分开的另一块中。
每当存储器装置40中的特定块(例如,BLK_3)不能再编程新数据时,控制器可以分析并调整该块的操作信息项58,使得稍后可以更容易地指定该快中的有效数据,因为无效数据可能已经被取消映射。知道特定块中的哪个页面包括有效数据可以减少存储器***执行耗损均衡或垃圾收集的后台操作的负担。通过这种方法,存储器***可以更容易地确保其它操作的操作余量。
如上所述,用于控制根据本公开的实施例的非易失性存储器装置的设备可以包括至少一个处理器和至少一个存储器。当对应于从主机传输的指令需要对相同逻辑块地址的重复编程操作时,处理器可以以上述方式控制非易失性存储器装置。具体地,至少一个处理器可以被配置成将存储器装置中与逻辑块地址相对应的存储块中的每一个划分为多个逻辑单元块,将从存储块的有效页面计数获得的估计平均值与存储块中的每个逻辑单元块的映射数据计数进行比较,以与数据被写入存储块中的顺序相反的顺序检查重复的映射数据条,并且对旧的重复的映射数据条取消映射。
图10示出根据本公开的另一实施例的操作存储器***的方法。
如图10所示,存储器***的操作方法可以包括将能够存储数据的多个块中的每一个划分为多个逻辑单元块的步骤82。多条数据可以顺序地存储或编程在块中。
存储器***的操作方法可以包括:步骤84,将从特定块的有效页面计数获得的估计平均值与特定块中包括的每个单元块的映射数据计数进行比较;步骤86,确定比较结果是否大于设定差,例如预定阈值;步骤88,基于确定,以数据编程顺序的相反方向检查多条映射数据是否彼此重复或重叠;以及步骤90,删除重复或重叠的映射数据的旧映射数据或将其取消映射。例如,映射数据可以包括与参照图8和图9描述的操作信息项58中包括的与每个逻辑单元块(例如,LUB_1)相对应的多条映射数据(例如,LUB_1P2L)。
尽管未示出,但是存储器***的操作方法进一步可以包括确定是否可以将新数据写入到特定块的步骤。例如,在当前没有编程数据的空闲块中,不需要调整或控制关于该块的操作信息项58。此外,当块处于开放状态时,可以在该块中进一步编程新数据,使得即使已调整操作信息项58,在该块关闭之后也可能需要重新调整操作信息项58。因此,当块处于关闭状态时,可以通过分析操作信息项58来调整存储器***的操作方法。因此,当主体块处于不能将数据写入或编程到存储器装置中的该块的状态时,可以执行比较步骤84。
在存储器装置中的块中,可以从块的第一页面到最后页面顺序地存储数据条。该块包括至少两个逻辑单元块。该块可以是可作为单元被一起擦除的独特存储器单元组。可以通过存储在该逻辑单元块中的多条映射数据(例如,物理到逻辑(P2L)映射数据)的数量来识别逻辑单元块。每个映射数据被分配给可作为单元被一起编程的独特存储器单元组并且被管理和控制。根据实施例,存储器装置中的块可以是执行擦除操作的单元,包括块中的至少两个块的单元块可以分配映射数据的最小单元。
虽然未示出,但是存储器***的操作方法进一步可以包括在取消映射步骤90之后将调整后的映射数据存储在物理上与编程有用户数据的另一块区分开的块中的步骤。存储器***可以至少基于存储的映射数据更容易地确定存储在块中的数据条是否有效。
确定比较结果是否大于阈值的步骤86可以包括比较通过将有效页面计数除以逻辑单元块的数量而获得的值以及检查平均值和每个逻辑单元块的映射数据计数之间的差。为了将常规存储器***中重复或重叠的映射数据取消映射或者删除,将关于块的所有不同类型的映射数据相互比较可能花费大量时间。然而,如参照图8和图9所述,在将块划分成多个逻辑单元块之后,优先执行比较步骤84以识别具有更高可能性的重复或重叠的映射数据的逻辑单元块,使得可以减少搜索用于垃圾收集的有效数据所需的时间,并且可以提高操作效率。例如,在存储器***的操作方法中,如果关于特定逻辑单元块的映射数据计数大于或等于通过将块的有效页面计数除以逻辑单元块的数量而获得的平均值,则可以执行搜索重复或重叠的映射数据的检查步骤88。另一方面,在存储器***的操作方法中,如果逻辑块的映射数据计数小于平均值,则可以不执行搜索重复或重叠的映射数据的检查步骤88。
根据一个实施例,还可以仅对块中包括的多个逻辑单元块之中的、具有最高可能性的单个逻辑单元块执行搜索复制或重叠的映射数据的步骤88。可选地,可以在识别为待搜索的逻辑单元块之中、以最高可能性具有重复或重叠的映射数据到最低可能性具有重复或重叠的映射数据的顺序对多于一个的逻辑单元块执行步骤88。
在图11中,示出包括根据实施例的存储器***的数据处理***的另一示例。图11示意性地示出应用存储器***的存储卡***。
参照图11,存储卡***6100可包括存储器控制器6120、存储器装置6130和连接器6110。
存储器控制器6120可以连接至实现为非易失性存储器的存储器装置6130。存储器控制器6120可以被配置为访问存储器装置6130。通过示例而非限制的方式,存储器控制器6120可以被配置成控制存储器装置6130的读取操作、写入操作、擦除操作和后台操作。存储器控制器6120可以被配置成提供存储器装置6130和主机之间的接口连接并使用用于控制存储器装置6130的固件。也就是说,存储器控制器6120可以对应于参照图1和图3描述的存储器***110的控制器130,并且存储器装置6130可以对应于参照图1和图5描述的存储器***110的存储器装置150。
因此,存储器控制器6120可以包括RAM、处理器、主机接口、存储器接口和错误校正单元。存储器控制器6120进一步可以包括图1和图3中所示的元件。
存储器控制器6120可以通过连接器6110与外部装置,例如图1的主机102通信。例如,如参照图1至图3所述,存储器控制器6120可以被配置成在诸如以下的各种通信协议中的一种或多种下与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、***组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA、并行ATA、小型计算机***接口(SCSI)、增强型小型磁盘接口(EDSI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WIFI以及蓝牙。因此,存储器***和数据处理***可以应用于有线/无线电子装置,特别是移动电子装置。
存储器装置6130可以由非易失性存储器来实施。例如,存储器装置6130可利用诸如以下的各种非易失性存储器装置中的任意一种来实施:可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)以及自旋转移力矩磁性RAM(STT-MRAM)。存储器装置6130可以包括如图5的存储器装置150的多个管芯。
存储器控制器6120和存储器装置6130可以被集成到单个半导体装置中。例如,存储器控制器6120和存储器装置6130可以通过集成到单个半导体装置中来构成固态硬盘(SSD)。在另一实施例中,存储器控制器6120和存储器装置6130可以构成诸如下列的存储卡:PC卡(PCMCIA:个人计算机存储卡国际协会)、紧凑型闪存(CF)卡、智能媒体卡(例如,SM和SMC)、记忆棒、多媒体卡(例如,MMC、RS-MMC、微型MMC和eMMC)、SD卡(例如,SD、迷你SD、微型SD和SDHC)和/或通用闪存(UFS)。
图12是示意性示出包括根据实施例的存储器***的数据处理***的另一示例的示图。
参照图12,数据处理***6200可以包括具有一个或多个非易失性存储器的存储器装置6230和用于控制存储器装置6230的存储器控制器6220。图12中所示的数据处理***6200可以用作如参照图1和图2描述的诸如存储卡(CF、SD、微型SD等)或USB装置的存储介质。存储器装置6230可以对应于如图1和图5所示的存储器***110中的存储器装置150。存储器控制器6220可以对应于图1和图3所示的存储器***110中的控制器130。
存储器控制器6220可以响应于主机6210的请求来控制存储器装置6230的读取操作、写入操作和擦除操作。存储器控制器6220可以包括一个或多个CPU 6221、诸如RAM 6222的缓冲存储器、ECC电路6223、主机接口6224以及诸如NVM接口6225的存储器接口。
CPU 6221可以控制对存储器装置6230的全部操作,例如读取操作、写入操作、文件***管理操作和坏页面管理操作。RAM 6222可以根据CPU 6221的控制来操作。RAM 6222可以用作工作存储器、缓冲存储器或高速缓冲存储器。当RAM 6222用作工作存储器时,通过CPU 6221处理的数据可以被临时存储在RAM 6222中。当RAM 6222用作缓冲存储器时,RAM6222可用于缓冲从主机6210传输到存储器装置6230或从存储器装置6230传输到主机6210的数据。当RAM 6222用作高速缓冲存储器时,RAM 6222可辅助存储器装置6230以高速操作。
ECC电路6223可以对应于图1所示的控制器130的ECC单元138。如参照图1所述,ECC电路6223可以生成用于校正从存储器装置6230提供的数据的失败位或错误位的ECC(错误校正码)。ECC电路6223可对被提供给存储器装置6230的数据执行错误校正编码,从而形成具有奇偶校验位的数据。奇偶校验位可被存储在存储器装置6230中。ECC电路6223可对从存储器装置6230输出的数据执行错误校正解码。ECC电路6223可使用奇偶校验位来校正错误。例如,如参照图1所述,ECC电路6223可以使用LDPC码、BCH码、涡轮码、里德-所罗门码、卷积码、RSC或诸如TCM或BCM的编码调制来校正错误。
存储器控制器6220可以通过主机接口6224与主机6210交换数据。存储器控制器6220可以通过NVM接口6225与存储器装置6230交换数据。主机接口6224可以通过PATA总线、SATA总线、SCSI、USB、PCIe或NAND接口连接至主机6210。存储器控制器6220可以利用诸如WiFi或长期演进(LTE)的移动通信协议而具有无线通信功能。存储器控制器6220可以连接到外部装置,例如主机6210或另一外部装置,并且然后与外部装置交换数据。特别地,由于存储器控制器6220被配置成通过各种通信协议中的一种或多种与外部装置进行通信,因此存储器***和数据处理***可应用于有线/无线电子装置,特别是移动电子装置。
图13是示意性示出包括根据实施例的存储器***的数据处理***的另一示例的示图。图13示意性示出应用存储器***的SSD。
参照图13,SSD 6300可包括控制器6320和包括多个非易失性存储器的存储器装置6340。控制器6320可以对应于图1和图2的存储器***110中的控制器130。存储器装置6340可以对应于图1和图5的存储器***中的存储器装置150。
更具体地,控制器6320可通过多个通道CH1至CHi连接至存储器装置6340。控制器6320可以包括一个或多个处理器6321、缓冲存储器6325、ECC电路6322、主机接口6324以及存储器接口,例如非易失性存储器接口6326。
缓冲存储器6325可临时存储从主机6310提供的数据或从包括在存储器装置6340中的多个闪速存储器NVM提供的数据,或者临时存储多个闪速存储器NVM的元数据,例如,包括映射表的映射数据。缓冲存储器6325可通过诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器或诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器来实现。图13示出缓冲存储器6325设置在控制器6320中。然而,在另一实施例中,缓冲存储器6325可以是设置在控制器6320外部的单独组件。
在编程操作期间,ECC电路6322可以计算待被编程到存储器装置6340的数据的ECC值。在读取操作期间,ECC电路6322可以基于ECC值对从存储器装置6340读取的数据执行错误校正操作。在失败数据的恢复操作期间,ECC电路6322对从存储器装置6340恢复的数据执行错误校正操作。
主机接口6324可以提供与外部装置,例如主机6310的接口功能。非易失性存储器接口6326可以提供与通过多个通道连接的存储器装置6340的接口功能。
此外,可以提供应用图1和图5的存储器***110的多个SSD 6300来实现数据处理***,例如,RAID(独立磁盘冗余阵列)***。RAID***可以包括多个SSD 6300和用于控制多个SSD 6300的RAID控制器。当RAID控制器响应于从主机6310提供的写入命令执行编程操作时,RAID控制器可以根据多个RAID级别,即,从主机6310提供的写入命令的RAID级别信息,在SSD 6300中选择一个或多个存储器***或SSD 6300。RAID控制器可以将对应于写入命令的数据输出到选择的SSD 6300。此外,当RAID控制器响应于从主机6310提供的读取命令执行读取操作时,RAID控制器可以根据多个RAID级别,即,从主机6310提供的读取命令的RAID级别信息,在SSD 6300中选择一个或多个存储器***或SSD 6300。RAID控制器可以将从选择的SSD 6300读取的数据提供至主机6310。
图14是示意性示出包括根据实施例的存储器***的数据处理***的另一示例的示图。图14示意性地示出应用存储器***的嵌入式多媒体卡(eMMC)。
参照图14,eMMC 6400可以包括控制器6430和通过一个或多个NAND闪速存储器实施的存储器装置6440。控制器6430可以对应于图1和图2的存储器***110中的控制器130。存储器装置6440可以对应于图1和图5的存储器***110中的存储器装置150。
更具体地,控制器6430可通过多个通道连接至存储器装置6440。控制器6430可以包括一个或多个内核6432、主机接口6431和存储器接口,例如,NAND接口6433。
内核6432可以控制eMMC 6400的全部操作。主机接口6431可以提供控制器6430和主机6410之间的接口功能。NAND接口6433可以提供存储器装置6440和控制器6430之间的接口功能。例如,主机接口6431可以用作并行接口,例如参照图1所描述的MMC接口。此外,主机接口6431可以用作串行接口,例如UHS(超高速)-I/UHS-II接口。
图15至图18是示意性地示出包括根据实施例的存储器***的数据处理***的其它示例的示图。图15至图19示意性地示出应用存储器***的UFS(通用闪存)***。
参照图15至图18,UFS***6500、6600、6700、6800可以分别包括主机6510、6610、6710、6810,UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830。主机6510、6610、6710、6810可以用作有线/无线电子设备,特别是移动电子装置的应用处理器,UFS装置6520、6620、6720、6820可以用作嵌入式UFS装置,并且UFS卡6530、6630、6730、6830可以用作外部的嵌入式UFS装置或可移除UFS卡。
在各个UFS***6500、6600、6700、6800中的主机6510、6610、6710、6810,UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830可以通过UFS协议与外部装置,例如有线/无线电子装置,特别是移动电子装置通信,并且UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830可以由图1和图5中所示的存储器***110来实现。例如,在UFS***6500、6600、6700、6800中,UFS装置6520、6620、6720、6820可以以参照图12至图14描述的数据处理***6200、SSD 6300或eMMC 6400的形式来实现,并且UFS卡6530、6630、6730、6830可以以参照图11描述的存储卡***6100的形式来实现。
此外,在UFS***6500、6600、6700、6800中,主机6510、6610、6710、6810,UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730和6830可以通过UFS接口,例如MIPI(移动产业处理器接口)中的MIPI M-PHY和MIPI UniPro(统一协议)彼此通信。此外,UFS装置6520、6620、6720、6820与UFS卡6530、6630、6730、6830可通过除UFS协议以外的各种协议,例如UFD、MMC、SD、迷你-SD和微型-SD彼此通信。
在图15所示的UFS***6500中,主机6510、UFS装置6520以及UFS卡6530中的每一个可以包括UniPro。主机6510可执行交换操作,以便与UFS装置6520和UFS卡6530通信。特别地,主机6510可通过UniPro处的链路层交换,例如L3交换与UFS装置6520或UFS卡6530通信。UFS装置6520和UFS卡6530可以通过主机6510的UniPro处的链路层交换来彼此通信。在图15的实施例中,示出一个UFS装置6520和一个UFS卡6530连接到主机6510的配置。然而,在另一实施例中,多个UFS装置和UFS卡可以并联或以星型形式连接至主机6510。星型形式是单个集中式组件联接至用于并行处理的多个装置的布置。多个UFS卡可以并联或以星型形式连接至UFS装置6520,或者可以串联或以链型形式连接至UFS装置6520。
在图16所示的UFS***6600中,主机6610、UFS装置6620和UFS卡6630中的每一个可以包括UniPro,并且主机6610可通过执行交换操作的交换模块6640,例如,通过在UniPro处执行链路层交换,例如L3交换的交换模块6640,与UFS装置6620或UFS卡6630通信。UFS装置6620和UFS卡6630可通过交换模块6640在UniPro处的链路层交换来彼此通信。在图16的实施例中,示出一个UFS装置6620和一个UFS卡6630连接到交换模块6640的配置。然而,在另一实施例中,多个UFS装置和UFS卡可并联或以星型形式连接至交换模块6640,并且多个UFS卡可串联或以链型形式连接至UFS装置6620。
在图17所示的UFS***6700中,主机6710、UFS装置6720和UFS卡6730中的每一个可以包括UniPro,并且主机6710可通过执行交换操作的交换模块6740,例如,通过在UniPro处执行链路层交换,例如L3交换的交换模块6740,与UFS装置6720或UFS卡6730通信。UFS装置6720和UFS卡6730可以通过交换模块6740在UniPro处的链路层交换来彼此通信,并且交换模块6740可在UFS装置6720内部或外部与UFS装置6720集成为一个模块。在图17的实施例中,示出一个UFS装置6720和一个UFS卡6730连接到交换模块6740的配置。然而,在另一实施例中,每个都包括交换模块6740和UFS装置6720的多个模块可以并联或以星型形式连接至主机6710,或者串联或以链型形式彼此连接。此外,多个UFS卡可以并联或以星型形式连接至UFS装置6720。
在图18所示的UFS***6800中,主机6810、UFS装置6820和UFS卡6830中的每一个可以包括M-PHY和UniPro。UFS装置6820可执行交换操作,以便与主机6810和UFS卡6830通信。特别地,UFS装置6820可以通过用于与主机6810通信的M-PHY和UniPro模块和用于与UFS卡6830通信的M-PHY和UniPro模块之间的交换操作,例如通过目标ID(标识符)交换操作,来与主机6810或UFS卡6830通信。主机6810和UFS卡6830可以通过UFS装置6820的M-PHY和UniPro模块之间的目标ID交换来彼此通信。在图18的实施例中,示出一个UFS装置6820连接到主机6810和一个UFS卡6830连接到UFS装置6820的配置。然而,在另一实施例中,多个UFS装置可并联或以星型形式连接至主机6810,或者串联或以链型形式连接至主机6810,并且多个UFS卡可并联或以星型形式连接至UFS装置6820,或者串联或以链型形式连接至UFS装置6820。
图19是示意性示出包括根据本发明的实施例的存储器***的数据处理***的另一示例的示图。图19是示意性地示出应用存储器***的用户***的示图。
参照图19,用户***6900可以包括应用处理器6930、存储器模块6920、网络模块6940、存储模块6950和用户接口6910。
更具体地,应用处理器6930可以驱动包括在用户***6900中的组件,例如OS,并且包括控制包括在用户***6900中的组件的控制器、接口、图形引擎。应用处理器6930可被设置为片上***(SoC)。
存储器模块6920可用作用户***6900的主存储器、工作存储器、缓冲存储器或高速缓冲存储器。存储器模块6920可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDRAM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性RAM,或诸如PRAM、ReRAM、MRAM和FRAM的非易失性RAM。例如,可以基于POP堆叠封装)来封装和安装应用处理器6930和存储器模块6920。
网络模块6940可以与外部装置通信。例如,网络模块6940不仅可支持有线通信,还可支持诸如以下的各种无线通信:码分多址(CDMA)、全球移动通信***(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、全球微波接入互操作性(Wimax)、无线局域网(WLAN)、超宽带(UWB)、蓝牙、无线显示(WI-DI),从而与有线/无线电子装置,特别是移动电子装置通信。因此,根据本发明的实施例,存储器***和数据处理***可应用于有线/无线电子装置。网络模块6940可被包括在应用处理器6930中。
存储模块6950可存储数据,例如从应用处理器6930接收的数据,并且然后可以将存储的数据传送到应用处理器6930。存储模块6950可由诸如以下的非易失性半导体存储器装置实现:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(ReRAM)、NAND闪存、NOR闪存和3DNAND闪存,并且存储模块6950可被设置为诸如用户***6900的存储卡或外部驱动器的可移除存储介质。存储模块6950可以对应于参照图1和图5描述的存储器***110。此外,存储模块6950可以被实现为以上所述SSD、eMMC和UFS。
用户接口6910可以包括用于将数据或命令输入至应用处理器6930或将数据输出到外部装置的接口。例如,用户接口6910可包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件的用户输入接口以及诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器的用户输出接口。
此外,当图1和图5的存储器***110被应用于用户***6900的移动电子装置时,应用处理器6930可以控制移动电子装置的全部操作。网络模块6940可以用作控制与外部装置的有线/无线通信的通信模块。用户接口6910可以在移动电子装置的显示/触摸模块上显示由处理器6930处理的数据。此外,用户接口6910可以支持从触摸面板接收数据的功能。
根据以上所述的实施例,存储器***、数据处理***及其操作方法使得每当特定块被关闭时能够比较有效数据计数和映射数据并释放重叠的映射数据的旧映射数据,以便显著减少在垃圾收集期间搜索和提取有效数据所需的时间,从而可以在存储器***中更快地执行垃圾收集。
本公开提供将能够存储大量数据的块划分为多个逻辑单元块的实施例。这可以大大减小用于验证存储的数据是否有效的数据有效性检查操作的范围。可以通过在存储器***中的有效数据搜索来更容易地管理或控制垃圾收集的性能。因此,可以提高存储器***的稳定性和可靠性。
虽然已经针对具体实施例示出并描述了本发明,但是对于本领域技术人员根据本公开将显而易见的是,在不脱离如所附权利要求所限定的本发明的精神和范围的情况下,可以进行各种改变和修改。
Claims (18)
1.一种存储器***,包括:
存储器装置,包括存储数据的多个存储块;以及
控制器:
将所述存储块划分成多个逻辑单元块;
将从所述存储块的有效页面计数获得的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成比较结果并在所述多个逻辑单元块之中识别选择逻辑单元块;
以在所述选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复;并且
将所述选择逻辑单元块中重复的映射数据的旧映射数据取消映射,
其中所述控制器通过将所述存储块的有效页面计数除以所述存储块中的逻辑单元块的数量来计算所述估计平均值。
2.根据权利要求1所述的存储器***,其中当存储块处于以下状态时:在没有擦除操作的情况下没有新数据被编程,所述控制器执行比较操作。
3.根据权利要求1所述的存储器***,其中所述存储器装置从所述存储块的第一页面到最后页面顺序地存储所述数据。
4.根据权利要求1所述的存储器***,其中所述映射数据计数是关于物理到逻辑信息,即P2L信息的多条映射数据的数量,所述P2L信息将所述选择逻辑单元块的逻辑地址和物理地址相关联。
5.根据权利要求1所述的存储器***,其中所述存储块包括可作为单元被一起擦除的存储器单元组,并且所述选择逻辑单元块由设定数量的映射数据识别,所述设定数量的映射数据各自被分配给可作为单元被一起编程的独特存储器单元组。
6.根据权利要求1所述的存储器***,其中在将所述旧映射数据取消映射之后,所述控制器将所述映射数据存储在在物理上可与所述存储块区分开的另一存储块中。
7.根据权利要求1所述的存储器***,其中当逻辑单元块的所述映射数据计数大于所述估计平均值时,所述控制器对该逻辑单元块执行检查和取消映射操作。
8.根据权利要求1所述的存储器***,其中当逻辑单元块的所述映射数据计数小于或等于所述估计平均值时,所述控制器跳过关于该逻辑单元块的检查和取消映射操作。
9.根据权利要求1所述的存储器***,其中当对应于从主机接收的至少一个命令而重复请求针对相同逻辑地址的多个编程操作时,所述控制器确定所述比较结果是否大于阈值。
10.一种操作存储器***的方法,包括:
将存储数据的存储块划分成多个逻辑单元块;
将从所述存储块的有效页面计数获得的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成针对每个逻辑单元块的比较结果;
基于相应比较结果,针对每个逻辑单元块确定该逻辑单元块的所述映射数据计数是否大于阈值以识别至少一个选择逻辑单元块;
以在所述至少一个选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复;并且
将所述至少一个选择逻辑单元块重复的映射数据的旧映射数据取消映射,
其中比较所述有效页面计数包括:
通过将所述存储块的有效页面计数除以所述存储块中的逻辑单元块的数量来计算所述估计平均值。
11.根据权利要求10所述的方法,进一步包括确定所述存储块是否处于关闭状态,在所述关闭状态下,在没有擦除操作的情况下没有新数据被编程。
12.根据权利要求11所述的方法,
其中从包括所述至少一个选择逻辑单元块的所述存储块的第一页面到最后页面顺序地存储所述数据;
其中当所述存储块变为处于所述关闭状态时,执行比较步骤。
13.根据权利要求10所述的方法,其中所述映射数据计数是关于物理到逻辑信息,即P2L信息的多条映射数据的数量,所述P2L信息将所述至少一个选择逻辑单元块的逻辑地址和物理地址相关联。
14.根据权利要求10所述的方法,其中所述存储块包括可作为单元被一起擦除的存储器单元组,并且所述至少一个选择逻辑单元块由设定数量的映射数据识别,所述设定数量的映射数据各自被分配给可作为单元被一起编程的独特存储器单元组。
15.根据权利要求14所述的方法,进一步包括在将所述旧映射数据取消映射之后,将所述映射数据存储在在物理上可与所述存储块区分开的另一存储块中。
16.根据权利要求10所述的方法,其中当逻辑单元块的所述映射数据计数大于所述估计平均值时,对该逻辑单元块执行所述检查和所述取消映射。
17.根据权利要求10所述的方法,其中当逻辑单元块的所述映射数据计数小于或等于所述估计平均值时,不对该逻辑单元块执行所述检查和所述取消映射。
18.一种控制存储器***的设备,所述存储器***包括至少一个处理器和包括计算机程序代码的至少一个存储器,其中利用所述至少一个处理器来配置所述至少一个存储器和所述计算机程序代码以使所述设备:
将存储数据的存储块划分成多个逻辑单元块;
将通过将所述存储块的有效页面计数除以所述逻辑单元块的数量而计算的估计平均值与每个逻辑单元块的映射数据计数进行比较以生成针对每个逻辑单元块的比较结果;
基于相应比较结果,针对每个逻辑单元块确定该逻辑单元块的映射数据计数是否大于阈值以识别至少一个选择逻辑单元块;
以在所述至少一个选择逻辑单元块中存储数据的相反顺序检查映射数据是否重复;并且
将所述至少一个选择逻辑单元块中重复的映射数据的旧映射数据取消映射。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180113160A KR20200033625A (ko) | 2018-09-20 | 2018-09-20 | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 |
KR10-2018-0113160 | 2018-09-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928807A CN110928807A (zh) | 2020-03-27 |
CN110928807B true CN110928807B (zh) | 2023-04-07 |
Family
ID=69856611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910753551.8A Active CN110928807B (zh) | 2018-09-20 | 2019-08-15 | 用于检查存储器***中的有效数据的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10817418B2 (zh) |
KR (1) | KR20200033625A (zh) |
CN (1) | CN110928807B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200074647A (ko) * | 2018-12-17 | 2020-06-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20210018570A (ko) * | 2019-08-05 | 2021-02-18 | 에스케이하이닉스 주식회사 | 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치 |
CN113467697A (zh) * | 2020-03-30 | 2021-10-01 | 瑞昱半导体股份有限公司 | 存储器控制器与数据处理方法 |
KR20210121696A (ko) * | 2020-03-31 | 2021-10-08 | 에스케이하이닉스 주식회사 | 컨트롤러 및 메모리 시스템 |
CN111651124B (zh) * | 2020-06-03 | 2023-07-04 | 深圳忆联信息***有限公司 | Ssd映射表多核分区并行重建方法、装置、设备及介质 |
KR20230019714A (ko) * | 2021-08-02 | 2023-02-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 컨트롤러 |
CN114063918B (zh) * | 2021-11-12 | 2023-08-15 | 深圳宏芯宇电子股份有限公司 | 数据存取方法、存储器存储装置及存储器控制器 |
CN116540950B (zh) * | 2023-07-05 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种存储器件及其写入数据的控制方法 |
CN117093515A (zh) * | 2023-10-09 | 2023-11-21 | 荣耀终端有限公司 | 存储器、终端设备及存储*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003228513A (ja) * | 2001-11-28 | 2003-08-15 | Access:Kk | メモリ制御方法および装置 |
JP2008146253A (ja) * | 2006-12-07 | 2008-06-26 | Sony Corp | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 |
CN102298555A (zh) * | 2011-08-22 | 2011-12-28 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理*** |
CN106708744A (zh) * | 2015-11-13 | 2017-05-24 | 爱思开海力士有限公司 | 存储***和存储***的操作方法 |
US9870321B2 (en) * | 2014-11-03 | 2018-01-16 | Silicon Motion, Inc. | Data storage device and flash memory control method |
CN107797934A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 处理去分配命令的方法与存储设备 |
CN108073470A (zh) * | 2016-11-07 | 2018-05-25 | 三星电子株式会社 | 执行地址映射表的纠错的存储器***及其控制方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212512B1 (en) * | 1999-01-06 | 2001-04-03 | Hewlett-Packard Company | Integration of a database into file management software for protecting, tracking and retrieving data |
JP5087347B2 (ja) * | 2007-09-06 | 2012-12-05 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
US9727570B2 (en) * | 2011-06-03 | 2017-08-08 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US9069657B2 (en) | 2011-12-12 | 2015-06-30 | Apple Inc. | LBA bitmap usage |
JP5813589B2 (ja) * | 2012-07-13 | 2015-11-17 | 株式会社東芝 | メモリシステムおよびその制御方法 |
KR102301772B1 (ko) | 2015-03-09 | 2021-09-16 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법 |
US20170161202A1 (en) * | 2015-12-02 | 2017-06-08 | Samsung Electronics Co., Ltd. | Flash memory device including address mapping for deduplication, and related methods |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
-
2018
- 2018-09-20 KR KR1020180113160A patent/KR20200033625A/ko not_active Application Discontinuation
-
2019
- 2019-07-23 US US16/519,976 patent/US10817418B2/en active Active
- 2019-08-15 CN CN201910753551.8A patent/CN110928807B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003228513A (ja) * | 2001-11-28 | 2003-08-15 | Access:Kk | メモリ制御方法および装置 |
JP2008146253A (ja) * | 2006-12-07 | 2008-06-26 | Sony Corp | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 |
CN102298555A (zh) * | 2011-08-22 | 2011-12-28 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理*** |
US9870321B2 (en) * | 2014-11-03 | 2018-01-16 | Silicon Motion, Inc. | Data storage device and flash memory control method |
CN106708744A (zh) * | 2015-11-13 | 2017-05-24 | 爱思开海力士有限公司 | 存储***和存储***的操作方法 |
CN107797934A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 处理去分配命令的方法与存储设备 |
CN108073470A (zh) * | 2016-11-07 | 2018-05-25 | 三星电子株式会社 | 执行地址映射表的纠错的存储器***及其控制方法 |
Non-Patent Citations (1)
Title |
---|
Zhiyong Xu等.CAST: A page-level FTL with compact address mapping and parallel data blocks.《IEEE》.2013,142-151. * |
Also Published As
Publication number | Publication date |
---|---|
CN110928807A (zh) | 2020-03-27 |
US20200097397A1 (en) | 2020-03-26 |
KR20200033625A (ko) | 2020-03-30 |
US10817418B2 (en) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110928807B (zh) | 用于检查存储器***中的有效数据的设备和方法 | |
CN110825319B (zh) | 基于块状态确定可用性的存储器***及操作方法 | |
CN111240586A (zh) | 存储器***及其操作方法 | |
CN110825659B (zh) | 用于检查存储器***中的块中的有效数据的设备和方法 | |
CN110806984B (zh) | 在存储器***中搜索有效数据的设备和方法 | |
CN111290704B (zh) | 用于控制储存在存储***中的数据的装置和方法 | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
CN110806837B (zh) | 数据处理***及其操作方法 | |
CN112148632A (zh) | 用于改善存储器***的输入/输出吞吐量的设备和方法 | |
CN110781023A (zh) | 用于在存储器***中处理数据的设备和方法 | |
CN110908843A (zh) | 诊断存储器***的设备及其操作方法 | |
CN110895449B (zh) | 用于在存储器***中管理有效数据的装置和方法 | |
CN110888825B (zh) | 在存储器***中处理数据的设备和方法 | |
CN111581121B (zh) | 用于管理存储器***中的映射数据的方法和设备 | |
CN112835811A (zh) | 存储器***及其操作方法 | |
CN111435334B (zh) | 在存储器***中检查有效数据的设备和方法 | |
CN110806983B (zh) | 存储器***及其操作方法 | |
CN109753233B (zh) | 存储器***及其操作方法 | |
CN109407968B (zh) | 存储器***及其操作方法 | |
CN113687769A (zh) | 用于提高数据处理***中的操作效率的设备和方法 | |
CN111857565A (zh) | 存储器***、数据处理***及其操作方法 | |
CN111857818A (zh) | 存储器***和通过该存储器***执行命令操作的方法 | |
CN113495689A (zh) | 用于控制存储器***的输入/输出吞吐量的设备和方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |