相关申请的交叉引用
本专利申请要求于2019年1月11日提交的申请号为10-2019-0003824的韩国专利申请的优先权,其全部公开内容通过引用并入本文。
本发明的各个实施例涉及一种存储器系统,且更特别地,涉及一种减少用于在非易失性存储器装置的存储块中检查用于垃圾收集的有效数据的时间的设备和方法。
背景技术:
近来,计算环境范例已经转变成可随时随地使用计算机系统的普适计算。因此,诸如移动电话、数码相机及笔记本电脑等的便携式电子装置的使用快速增长。这种便携式电子装置通常使用或包括使用或嵌入至少一个存储器装置的存储器系统,即数据存储装置。数据存储装置可用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,使用非易失性半导体存储器装置的数据存储装置的优点在于因为其不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐久性,并且具有高数据访问速度和低功耗。在具有这些优点的存储器系统的背景下,示例性数据存储装置包括通用串行总线(usb)存储器装置、具有各种接口的存储卡、固态驱动器(ssd)等。
技术实现要素:
本公开的实施例可提供一种存储器系统、数据处理系统以及操作进程或方法,其可通过降低存储器系统的操作复杂性和性能劣化来快速且可靠地将数据处理到存储器装置中,从而增强存储器装置的使用效率。
本公开的实施例可提供以下设备和方法:当在确定存储器装置中的被选择作为垃圾收集目标的存储块中的数据的有效性的进程中,建立了有效页面计数(vpc)与有效数据或无效数据的数量之间的预设关系时,该设备和方法能够不进行确认数据是否有效的操作,减少在搜索有效数据上花费的时间。
本公开的实施例可减少在包括能够存储大容量数据的块的存储器装置中确定每条数据是否有效以用于垃圾收集的进程中所消耗的资源,从而可以提供一种能够在使用存储器系统的主机或数据处理系统中处理大量数据的同时,增强操作效率并避免由于存储器系统的后台操作而导致的延迟的方法和设备。
在实施例中,存储器系统可包括:存储器装置,包括多个存储块,该多个存储块存储通过第一属性和第二属性而分类的多条数据,第二属性不同于第一属性;以及控制器,被配置成确定存储器装置中的用于垃圾收集的目标存储块的第一部分中的每个页面中存储的每个数据具有第一属性还是第二属性,以基于该存储块的第一属性页面计数和该存储块的第一部分中的存储第一属性的数据的页面数量,来确定该存储块的第二部分中存储的所有数据具有第一属性和第二属性中的一种,并且将具有第一属性和第二属性中的一种的数据迁移到另一存储块中。存储器系统可省略用于检查第二部分的每个页面处存储了第一或第二属性数据中的哪一种的操作。
作为示例而非限制,第一属性可指示一条数据(apieceofdata)有效,即该条数据是对应于特定逻辑地址的最新数据,并且第二属性可指示该条数据无效,即该条数据不是对应于特定逻辑地址的最新数据,从而不再使用该条数据。
在另一示例中,第一属性指示一条数据无效,并且第二属性指示该条数据有效。
当在存储块中的特定页面处,从第一属性页面计数中减去页面数量的值变为零时,下一页面至最后页面属于第二部分。
当从第一属性页面计数中减去页面数量的值与存储块中的剩余页面数量之间的比率小于或等于预设阈值时,下一页面至最后页面属于第二部分。该预设阈值为1%。
将存储块分成第一部分和第二部分,第一部分包括存储块的第一页面,第二部分包括存储块的最后页面。
在一个示例中,当存储块的有效页面计数(vpc)大于存储块的总页面数量的一半(1/2)时,第一属性指示一条数据无效。
在另一示例中,当存储块的有效页面计数(vpc)小于存储块的总页面数量的一半(1/2)时,第一属性指示一条数据有效。
控制器被配置成检查与在第一部分中的页面处存储的每个数据相关的两种不同类型的地址是否彼此相关联,以确定每个数据具有第一属性还是第二属性。
在另一实施例中,一种操作存储器系统的方法可包括:检查与在存储器装置中的存储块的第一部分中的页面处存储的每个数据相关的两种不同类型的地址是否彼此相关联,以确定每个页面中存储了第一属性数据还是第二属性数据;基于存储块的第一属性页面计数和存储块的第一部分中的存储第一属性的数据的页面数量,来确定存储块的第二部分中存储的所有数据具有第一属性和第二属性数据中的一种;并且将具有第一属性和第二属性中的一种的数据迁移到另一存储块中。
在一个示例中,第一属性指示一条数据有效,并且第二属性指示该条数据无效。
在另一示例中,第一属性指示一条数据无效,并且第二属性指示该条数据有效。
该方法可进一步包括以下步骤:当在存储块中的特定页面处,从第一属性页面计数中减去页面数量的值变为零时,将下一页面至最后页面包括在第二部分中。
该方法可进一步包括以下步骤:当从第一属性页面计数中减去页面数量的值与存储块中的剩余页面数量之间的比率变得低于或等于预设阈值时,将下一页面至最后页面包括在第二部分中。
作为示例而非限制,该预设阈值为1%。
将存储块分成第一部分和第二部分,第一部分包括存储块的第一页面,第二部分包括存储块的最后页面。
当存储块的有效页面计数(vpc)大于存储块的总页面数量的一半(1/2)时,第一属性指示一条数据无效。
当存储块的有效页面计数(vpc)小于存储块的总页面数量的一半(1/2)时,第一属性指示一条数据有效。
在另一实施例中,一种控制存储器系统的设备,其中存储器系统包括至少一个处理器和包括计算机程序代码的至少一个存储器。通过至少一个存储器和至少一个处理器,该计算机程序代码被配置成使设备:检查与在存储器装置中的存储块的第一部分中的页面处存储的每个数据相关的两种不同类型的地址是否彼此相关联,以确定每个页面中存储了第一属性数据或第二属性数据中的哪一种;基于存储块的第一属性页面计数和存储块的第一部分中的存储第一属性的数据的页面数量,来确定存储块的第二部分中存储的所有数据具有第一属性和第二属性中的一种;并且将具有第一属性和第二属性中的一种的数据迁移到另一存储块中。
在另一实施例中,存储器系统可包括:存储器装置,包括多个存储块;以及控制器,适于:顺序地确定多个存储块之中的存储块中的多个页面中的每一个的有效性;确定多个页面之中的一些页面的无效性概率是否大于阈值;当该一些页面的无效性概率大于阈值时,确定多个页面之中的剩余页面有效,具有有效性概率;将剩余页面的数据移动到多个存储块之中的另一存储块中。
在另一实施例中,一种用于控制存储器系统的方法,该存储器系统包括至少一个处理器和包括计算机程序代码的至少一个存储器,该方法可包括:检查与在存储器装置中的存储块的第一部分中的页面处存储的每个数据相关的两种不同类型的地址是否彼此相关联,以确定每个页面中存储了第一属性数据或第二属性数据中的哪一种;基于存储块的第一属性页面计数和存储块的第一部分中的存储第一属性的数据的页面数量,来确定存储块的第二部分中存储的所有数据具有第一属性和第二属性中的一种;并且将具有第一属性和第二属性中的一种的数据迁移到另一存储块中。
附图说明
本文参照附图进行描述,其中在整个附图中,相同的附图标记指代相同的部件,并且其中:
图1示出根据本公开的实施例的存储器系统的垃圾收集;
图2示出根据本公开的实施例的包括存储器系统的数据处理系统;
图3示出根据本公开的实施例的存储器系统;
图4和图5示出根据本公开的实施例的执行对应于多个命令的多个命令操作的存储器系统;
图6示出根据本公开的实施例的包括控制器和非易失性存储器装置的存储器系统;
图7示出根据本公开的实施例的控制器搜索有效数据的方法的示例;
图8示出控制器停止搜索有效数据的第一示例;
图9示出控制器停止搜索有效数据的第二示例;
图10示出控制器停止搜索有效数据的第三示例;
图11示出根据本公开的实施例的控制器控制元数据的方法;
图12示出控制器停止搜索有效数据的第四示例;
图13示出根据本公开的另一实施例的操作存储器系统的方法;并且
图14至图22是示意性地示出根据本公开的实施例的包括存储器系统的其它数据处理系统的框图。
具体实施方式
以下参照附图更详细地描述本公开的各个实施例。然而,本公开的元件和特征可被不同地配置或布置以形成其它实施例,这些实施例可以是任何所公开的实施例的变型。因此,本发明不限于本文阐述的实施例。相反,提供所描述的实施例使得本公开完整和全面,并且将本公开的范围充分地传达给本发明所属领域的技术人员。注意的是,对“一个实施例”、“另一实施例”等的参考不一定仅意味着一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
将理解的是,虽然可在本文中使用术语“第一”、“第二”、“第三”等来识别各个元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另一个具有相同或相似名称的元件区分开。因此,在不脱离本发明的技术方案和范围的情况下,一个示例中的第一元件在另一示例中也可被称为第二元件或第三元件。
附图不一定按比例绘制,并且在一些情况下,为了清楚地说明实施例的特征,比例可能已经被放大。当元件被称为连接到或联接到另一元件时,应当理解的是前者可直接连接或联接到后者,或者经由其间的中间元件电连接或联接到后者。此外,还将理解的是,当元件被称为在两个元件“之间”时,其可以是这两个元件之间的唯一元件,或者也可存在一个或多个中间元件。
本文中使用的术语仅用于描述特定实施例而不旨在限制本发明。如本文使用的,单数形式也旨在包括复数形式并且反之亦然,除非上下文另有清楚地说明。本申请和所附权利要求书中使用的冠词“一”和“一个”通常应被解释为表示“一个或多个”,除非另有说明或上下文清楚地指明单数形式。
将进一步理解的是,当在本说明书中使用术语“包括”、“包括有”、“包含”和“包含有”时,其说明所陈述元件的存在,但不排除一个或多个其它元件的存在或添加。如本文所使用的,术语“和/或”包括一个或多个相关所列项目的任何和全部组合。
除非另有定义,否则本文使用的包括技术术语和科学术语的所有术语具有与本发明所属领域的普通技术人员基于本公开所通常理解的含义相同的含义。将进一步理解的是,诸如在常用字典中定义的那些术语的术语应当被解释为具有与其在本公开的上下文中和相关技术中的含义一致的含义,并且将不以理想化或过于正式的意义来解释,除非本文中明确地这样定义。
在下面的描述中,为了提供对本发明的全面理解,阐述了大量具体细节。可在没有一些或全部这些具体细节的情况下实施本发明。在其它情况下,没有详细地描述公知的进程结构和/或进程以避免不必要地模糊本发明。
还注意的是,在一些情况下,如对于相关领域的技术人员显而易见的是,除非另有明确说明,否则结合一个实施例所描述的特征或元件可单独使用或与另一个实施例的其它特征或元件组合使用。
现在将参照附图详细描述本公开的实施例,其中相同的附图标记表示相同的元件。
图1示出根据本公开的实施例的存储器系统110中的用于搜索有效数据并执行垃圾收集的设备。存储器系统110可包括控制器130和存储器装置150。存储器系统110可与例如计算装置的另一装置接合。
参照图1,控制器130可通过垃圾收集控制电路198来执行垃圾收集(gc),作为后台操作。例如,垃圾收集可由存储器系统110本身执行,而无需从主机(例如,图2的主机102)接收命令或指令。控制器130可从存储器装置150的多个数据块40_1读取用户数据。进一步地,控制器130可将用户数据临时存储在存储器144中,并且将加载到存储器144中的用户数据编程到存储器装置150的空闲块40_2中,该存储器144设置在控制器130内或直接与控制器130接合并且由控制器130控制。多个数据块40_1可包括在不进行擦除操作的情况下不能够再编程新数据的块。
具体地,垃圾收集控制电路198可选择多个数据块40_1中的至少一个作为牺牲块。另外,垃圾收集控制电路198在被选择作为牺牲块的存储块中搜索和提取有效数据,并将有效数据移动到作为目标块的空闲块40_2。可丢弃多个数据块40_1之中的至少一个牺牲块中的被确定为不再有效的数据(即,可不将其移动到空闲块40_2)。当数据块40_1中存储的有效数据被移动到空闲块40_2时,控制器130认为数据块40_1不再具有有效数据。此后,当需要在特定数据块40_1中编程新数据时,可擦除相应数据块40_1中存储的所有数据。
为了执行垃圾收集,控制器130可将被选择作为牺牲块的数据块40_1中的有效数据与无效数据区分开。关于对应于数据块40_1的有效页面计数(vpc)的信息可指示数据块40_1中的有效数据或有效页面的量,但不指示哪个数据或哪个页面有效或无效。当一条数据有效时,该条数据是对应于特定逻辑地址的最新数据。当主机102请求对应于该特定逻辑地址的数据时,存储器系统110应当响应于主机的请求和特定逻辑地址而输出最新版本的数据。最新版本的数据可被称为有效数据。当一条数据无效时,该条数据不是对应于特定逻辑地址的最新数据,因此不再使用该条数据。因此,控制器130可使用包括映射数据的操作信息来确定哪个数据或哪个页面有效或无效。本公开的实施例可容易地区分出待存储到空闲块40_2中的有效数据以用于垃圾收集,从而可减少用于垃圾收集的资源(例如,时间和电力)。
根据实施例,控制器130可包括映射数据控制电路196。映射数据控制电路196可生成并控制与数据块40_1中存储的一条数据相对应的一条映射数据。例如,映射数据包括用于将逻辑地址转换成物理地址的第一地址信息(例如,逻辑到物理地址映射表或l2p映射表),以及用于将物理地址转换成逻辑地址的第二地址信息(例如,物理到逻辑地址映射表或p2l映射表)。每当将一条数据写入存储器装置150的存储块中时,映射数据控制电路196可生成或更新与该条数据相关联的映射数据(例如,第一地址信息和第二地址信息)。由映射数据控制电路196生成或更新的映射数据可被存储在存储器装置150中的存储块中。根据实施例,映射数据可与用户数据存储在相同的存储块中,或者可存储在与存储用户数据的存储块物理分离的存储块中。
垃圾收集控制电路198可在存储器装置150中的多个数据块40_1之中选择牺牲块。在示例中,垃圾收集控制电路198可在被选择作为牺牲块的存储块中搜索有效数据,将搜索到的有效数据加载到存储器144中,然后将存储器144中的被加载数据移动到空闲块40_2。在另一示例中,垃圾收集控制电路198可将所选择块的所有数据都加载到存储器144中,区分被加载数据中的有效数据和无效数据,然后仅将有效数据移动到空闲块40_2。
由垃圾收集控制电路198选择的存储块中存储的数据是否有效可通过映射数据控制电路196来确定。在映射数据控制电路196加载由垃圾收集控制电路198选择的存储块的映射数据之后,映射数据控制电路196可检查存储块中存储的每个数据的两条不同的地址信息是否彼此匹配。例如,两条不同的地址信息的量可能非常大。映射数据控制电路196可在存储器144的一部分中存储和更新包括两条不同的地址信息的映射数据。
为了确定每个数据的有效性,映射数据控制电路196可检查两条不同的地址信息(例如,l2p、p2l)是否彼此匹配。具体地,为了确认数据的逻辑地址(例如,主机使用的地址)和物理地址(例如,特定块中的特定页面中存储的数据的特定位置)是否彼此连接,映射数据控制电路196可使用数据的第二地址信息(例如,p2l映射表)来识别数据的逻辑地址。在找到逻辑地址之后,映射数据控制电路196可基于第一地址信息(例如,l2p映射表)来检查对应于逻辑地址的物理地址。数据的物理地址应当与通过基于p2l映射表和l2p映射表的两次地址转换进程所获得的物理地址相同。例如,如果通过第二地址信息(例如,p2l映射表)找到了当前位置中存储的数据的逻辑地址,并且对应于该逻辑地址的物理地址未指示该数据的当前位置,则该数据可不被认为是最新版本的数据,即该数据是更新之前的先前数据,因此该数据不再有效和被使用。如果对应于该逻辑地址的物理地址指示当前位置,则当前位置处存储的数据可以是最新版本的数据(即,有效数据)。
数据可被顺序地编程在数据块40_1中。当对存储块的最后页面编程数据时,存储块可从可被编程新数据的开放状态变为不再被编程新数据的关闭状态。当数据块40_1中的特定存储块处于关闭状态时,映射数据控制电路196可检查存储块中存储了多少有效数据,以获得存储块的有效页面计数(vpc)。
基于有效页面计数(vpc),垃圾收集控制电路198可防止映射数据控制电路196针对牺牲块的至少一些区域中存储的数据确定数据有效性。换言之,控制器130停止在牺牲块的至少一些部分中搜索有效数据,从而减少垃圾收集所需的资源(例如,时间)。在另一示例中,基于无效页面计数(ipc),垃圾收集控制电路198可避免映射数据控制电路196针对牺牲块中存储的所有数据检查数据有效性。基于无效页面计数(ipc)而非有效页面计数(vpc),映射数据控制电路196可不针对牺牲块的至少一部分中存储的数据检查数据有效性。
如在本公开中使用的,术语“电路”指代以下的所有内容:(a)仅硬件电路实施方案(诸如仅以模拟和/或数字电路的实施方案)以及(b)电路与软件(和/或固件)的组合,诸如(如适用于):(i)处理器的组合或(ii)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器)的部分;以及(c)需要软件或固件来进行操作的电路,诸如微处理器或微处理器的一部分,即使该软件或固件并非物理地存在。“电路”的这种定义适用于在本申请中、包括在任意权利要求中该术语的所有使用。作为进一步的示例,如在本申请中所使用的,术语“电路”还覆盖仅处理器(或多个处理器)或处理器的部分及其(或它们)的附带软件和/或固件的实施方案。例如并且如果适于特定的权利要求元素,术语“电路”还覆盖用于存储装置的集成电路。
图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、windowsmobile等。移动操作系统可需要支持移动性的服务或功能(例如,省电功能)。主机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),并且/或者存储器系统110的存储装置可利用诸如以下的非易失性存储器装置来实施:只读存储器(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可被集成到单个半导体装置中。控制器130和存储器装置150可被如此集成为ssd来提高操作速度。当存储器系统110用作ssd时,连接到存储器系统110的主机102的操作速度可以比利用硬盘实施的主机102的操作速度提高很多。另外,控制器130和存储器装置150可集成到一个半导体装置中以形成诸如以下的存储卡:pc卡(pcmcia)、紧凑式闪存(cf)卡、诸如智能媒体卡(例如,sm、smc)的存储卡、记忆棒、多媒体卡(例如,mmc、rs-mmc、微型mmc)、安全数字(sd)卡(例如,sd、迷你sd、微型sd、sdhc)、通用闪速存储器等。
存储器系统110可被配置成例如以下的一部分:计算机、超移动pc(umpc)、工作站、上网本、个人数字助理(pda)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(pmp)、便携式游戏机、导航系统、黑盒、数码相机、数字多媒体广播(dmb)播放器、三维(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可将从存储器装置150读取的数据提供到主机102。控制器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)、增强型小型磁盘接口(esdi)以及电子集成驱动器(ide)。根据实施例,主机接口132是用于与主机102交换数据的组件,主机接口132可通过被称为主机接口层(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可包括用于基于上述代码中的至少一个来执行错误校正操作的电路、模块、系统或装置中的全部。
pmu140可管理在控制器130中提供的电力。
存储器接口142可用作用于处理控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102传送的请求来控制存储器装置150。在当存储器装置150是闪速存储器时,特别地是当存储器装置150是nand闪速存储器时的情况下,存储器接口142可在处理器134的控制下生成用于存储器装置150的控制信号,并可处理输入到存储器装置150中或从存储器装置150输出的数据。存储器接口142可提供用于在控制器130与存储器装置150之间处理命令和数据,例如nand闪存接口的操作,特别是控制器130与存储器装置150之间的操作的接口。根据实施例,存储器接口142可通过作为用于与存储器装置150交换数据的组件的、被称为闪存接口层(fil)的固件来实施。
存储器144可支持由存储器系统110和控制器130执行的操作。存储器144可存储针对存储器系统110和控制器130中的操作而出现或传送的临时数据或事务数据。控制器130可响应于来自主机102的请求控制存储器装置150。控制器130可将从存储器装置150读取的数据传送到主机102。控制器130可将通过主机102输入的数据存储到存储器装置150中。存储器144可用于存储控制器130和存储器装置150执行诸如读取操作或编程/写入操作的操作的数据。
存储器144可利用易失性存储器来实施。存储器144可利用静态随机存取存储器(sram)、动态随机存取存储器(dram)或两者来实施。虽然图1例示了存储器144设置在控制器130内,但本发明不限于此。也就是说,存储器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。处理器134可处理与从主机102接收的命令相对应的指令或命令。控制器130可执行诸如与从主机102接收的命令相对应的命令操作的前台操作,诸如与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除/丢弃命令相对应的擦除/丢弃操作、以及利用设置命令的、与设置参数命令或设置特征命令相对应的参数设置操作。
又例如,控制器130可通过处理器134对存储器装置150执行后台操作。作为示例而非限制,后台操作包括将存储器装置150中的存储块152、154、156之中的存储块中存储的数据复制和存储到另一存储块的操作,例如垃圾收集(gc)操作。后台操作可包括将存储块152、154、156中的至少一个中存储的数据移动或交换到存储块152、154、156中的至少另一个中的操作,例如损耗均衡(wl)操作。在后台操作期间,控制器130可使用处理器134以将存储在控制器130中的映射数据存储到存储器装置150中的存储块152、154、156中的至少一个中,例如,映射清除操作。检查和搜索多个存储块152、154、156之中的坏块的坏块管理操作是由处理器134执行的后台操作的另一示例。
根据实施例,图1所示的垃圾收集控制电路198和映射数据控制电路196可通过图2中描述的控制器130中的至少一个处理器134和至少一个存储器144来实施。例如,当图1中所示的垃圾收集控制电路198和映射数据控制电路196包括固件时,该固件可由图2中描述的控制器130中的至少一个处理器134来执行并且被加载到至少一个存储器144中。
在存储器系统110中,控制器130执行与从主机102输入的多个命令相对应的多个命令操作。例如,当顺序地、随机地或可选地执行与多个编程命令相对应的多个编程操作、与多个读取命令相对应的多个读取操作以及与多个擦除命令相对应的多个擦除操作时,控制器130可确定用于将控制器130连接到包括在存储器150中的多个存储器管芯的多个通道(或通路)中的哪个(哪些)通道或通路适于或适用于执行每个操作。控制器130可经由所确定的通道或通路来传送数据或指令来执行每个操作。在每个操作完成之后,包括在存储器150中的多个存储器管芯可分别经由相同的通道或通路传送操作结果。然后,控制器130可将响应或确认信号传送到主机102。在实施例中,控制器130可检查每个通道或每个通路的状态。响应于从主机102输入的命令,控制器130可基于每个通道或每个通路的状态来选择至少一个通道或通路,使得可经由所选择的通道或通路来传送数据与指令和/或操作结果。
作为示例而非限制,控制器130可识别关于与包括在存储器装置150中的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可将每个通道或每个通路的状态确定为忙碌状态、就绪状态、激活状态、空闲状态、正常状态和/或异常状态中的一种。控制器130可基于物理块地址,确定通过哪个通道或通路来传送指令(和/或数据),例如将指令(和/或数据)传送到哪个(哪些)管芯中。控制器130可参考从存储器装置150传送的描述符。描述符可包括块或页面中存储的参数或信息,这可进行一些关于存储器装置150的描述。可将描述符划分成具有预定格式或结构的多条数据。例如,描述符可包括装置描述符、配置描述符、单元描述符等。控制器130可参考或使用描述符来确定经由哪个(哪些)通道或通路交换指令或数据。
管理单元(未示出)可被包括在处理器134中。管理单元可对存储器装置150执行坏块管理。管理单元可发现存储器装置150中的不符合进一步使用条件的坏存储块,并且对坏存储块执行坏块管理。当存储器装置150为例如nand闪速存储器的闪速存储器时,由于nand逻辑功能的特性,在写入操作期间(或编程操作期间)可能发生编程失败。在坏块管理期间,可将编程失败的存储块或坏存储块的数据编程到新存储块中。坏块可使具有三维(3d)堆叠结构的存储器装置150的利用效率和存储器系统110的可靠性严重劣化。因此,可靠的坏块管理可增强或提高存储器系统110的性能。
图3示出根据本公开的实施例的存储器系统的控制器130。
参照图3,详细描述了根据本公开的另一实施例的存储器系统中的控制器130。控制器130与主机102和存储器装置150协作。控制器130包括主机接口(i/f)132、存储器接口(i/f)142、存储器144和闪存转换层(ftl)240。
虽然未在图3中示出,但图2的ecc组件138可被包括在ftl240中。在另一实施例中,ecc组件138可被实施为包括在控制器130中或与控制器130关联的单独的模块、电路、固件等。
主机接口132可处理从主机102接收的命令、数据等。作为示例而非限制,主机接口132可包括缓冲器管理器52、事件队列54和命令队列56。命令队列56可顺序地存储从主机102接收的命令、数据等,并且以存储的顺序将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可对从命令队列56传送的命令、数据等进行分类、管理或调整。事件队列54可顺序地传送从缓冲器管理器52接收的用于处理命令、数据等的事件。
可从主机102连续接收相同特性的多个命令和/或数据。可选地,在不同特性的多个命令和/或数据经混合或打乱之后,可从主机102接收这些不同特性的多个命令和/或数据。例如,主机102可传送用于读取数据的多个命令(即,读取命令)。对于另一示例,可选地,主机102可传送用于读取数据的命令(即,读取命令)和用于编程/写入数据的命令(即,写入命令)。主机接口132可将从主机102接收的命令、数据等顺序地存储到命令队列56。此后,主机接口132可根据从主机102接收的命令、数据以及其它相关信息的特性来估计或预测控制器130将执行何种类型的操作。主机接口132可至少基于命令和数据的特性来确定命令和数据的处理顺序和优先级。根据命令和数据的特性,主机接口132的缓冲器管理器52被配置成确定缓冲器管理器52是否应当将命令和数据存储在存储器144中,或者缓冲器管理器52是否应当将命令和数据传递到ftl240。事件队列54接收从缓冲器管理器52输入的、待由存储器系统110或控制器130响应于命令和数据而内部地执行并处理的事件,以便以接收的顺序将事件传递到ftl240中。
根据实施例,图3的ftl240可执行图1中描述的垃圾收集控制电路198和映射数据控制电路196的功能。
根据实施例,ftl240可包括状态管理器42、映射管理器(mm)44、主机请求管理器(hrm)46和块管理器(bm或bbm)48。主机请求管理器46可管理从事件队列54输入的事件。映射管理器44可处理或控制映射数据。状态管理器42可执行垃圾收集或损耗均衡。块管理器48可对存储器装置150中的块执行命令或指令。
作为示例而非限制,主机请求管理器46可根据从主机接口132传送的读取和编程命令和事件,使用映射管理器44和块管理器48以处置或处理请求。主机请求管理器46可向映射管理器44发送查询请求,以确定与事件一起输入的逻辑地址相对应的物理地址。主机请求管理器46可向存储器接口142发送带有物理地址的读取请求,以处理读取请求(或处理事件)。另一方面,主机请求管理器46可向块管理器48发送编程请求(或写入请求),以将输入的数据编程到存储器装置150中的未记录(无数据)的特定页面。然后,主机请求管理器46可向映射管理器44传输对应于编程请求的映射更新请求,以对将逻辑到物理地址彼此映射的信息中的、与编程数据相关的项目进行更新。
块管理器48可将从主机请求管理器46、映射管理器44和/或状态管理器42传送的编程请求转换成用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强图2的存储器系统110的编程或写入性能,块管理器48可收集编程请求并向存储器接口142发送用于多平面和单触发编程操作的闪存编程请求。可能的是,块管理器48向存储器接口142发送若干闪存编程请求,以增强或最大化多通道和多向闪存控制器(即,存储器接口142)的并行处理。
块管理器48可被配置成根据有效页面的数量来管理存储器装置150中的块。进一步地,当需要空闲块时,块管理器48可选择和擦除不具有有效页面的块,并且当确定需要垃圾收集时,选择包括最少有效页面的块。状态管理器42可执行垃圾收集以将有效数据移动到空块并且擦除包括被移动的有效数据的块,使得块管理器48可具有足够的空闲块(即,不具有数据的空块)。如果块管理器48向状态管理器42提供与待擦除的块有关的信息,则状态管理器42可检查待擦除的块中的所有闪存页面以确定每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可识别在每个页面的区域(例如,带外(oob)区域)中存储的逻辑地址。为了确定每个页面是否有效,状态管理器42可将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面,向块管理器48发送编程请求。当编程操作完成时,可通过映射管理器44的更新来更新映射表。
映射管理器44可管理逻辑到物理映射表。映射管理器44可处理由主机请求管理器46或状态管理器42生成的诸如查询、更新等的请求。映射管理器44可将整个映射表存储在存储器装置150中(例如,闪存/非易失性存储器),并且根据存储器144的存储容量来高速缓存映射条目。当处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可向存储器接口142发送读取请求以加载存储在存储器装置150中的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可将编程请求发送到块管理器48,以便形成干净高速缓存块,并且可将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器46可对相同逻辑地址的页面编程最新版本数据,并且及时发出更新请求。当状态管理器42在未正常完成有效页面的复制的状态下请求映射更新时,映射管理器44可不执行映射表更新。这是因为,在状态管理器42请求映射更新并且稍后完成有效页面复制时,发出的映射请求具有旧物理信息。只有在最新映射表仍然指向旧物理地址时,映射管理器44可执行映射更新操作以确保准确性。
根据实施例,状态管理器42可包括图1所示的垃圾收集控制电路196。
存储器装置150可包括多个存储块。根据可在块中的一个存储器单元中存储或表达的位的数量,多个存储块可被分类为不同类型的存储块,诸如单层单元(slc)存储块、多层单元(mlc)存储块等。slc存储块包括由每个存储一位数据的存储器单元实施的多个页面。slc存储块可具有高数据输入和输出(i/o)操作性能和高耐久性。mlc存储块包括由每个存储多位(例如,两位或更多位)数据的存储器单元实施的多个页面。在相同空间中,mlc存储块可具有比slc存储块更大的存储容量。在存储容量方面,mlc存储块可被高度集成。在实施例中,存储器装置150可利用诸如以下的mlc存储块来实施:mlc存储块、三层单元(tlc)存储块、四层单元(qlc)存储块及其组合。mlc存储块可包括由每个能够存储2位数据的存储器单元实施的多个页面。tlc存储块可包括由每个能够存储3位数据的存储器单元实施的多个页面。qlc存储块可包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可利用包括由每个能够存储5位或更多位数据的存储器单元实施的多个页面的块来实施。
在本公开的实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,其中闪速存储器例如nand闪速存储器或nor闪速存储器。然而,在另一实施例中,存储器装置150可由相变随机存取存储器(pcram)、铁电随机存取存储器(fram)、自旋转移力矩随机存取存储器(stt-ram)和自旋转移力矩磁性随机存取存储器(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中执行命令操作的背景下给出的以下描述,但应当注意的是,图2中的控制器130中的处理器134可通过ftl来在存储器系统110中执行命令操作。在本公开的实施例中,控制器130将与从主机102输入的写入命令相对应的用户数据和元数据编程并存储在存储器装置150中的多个存储块之中的存储块中。进一步地,控制器130从多个存储块之中的存储块中读取与从主机102接收的读取命令相对应的用户数据和元数据,并且将读取数据提供到主机102。此外,控制器130从多个存储块之中的存储块中擦除与从主机102输入的擦除命令相对应的用户数据和元数据。
元数据可包括对应于编程操作而存储在存储块中的数据的第一映射数据和第二映射数据,第一映射数据包括逻辑/物理(逻辑到物理(l2p))信息(即,逻辑信息),第二映射数据包括物理/逻辑(物理到逻辑(p2l))信息(即,物理信息)。元数据可包括:关于与从主机102接收的命令相对应的命令数据的信息、关于与命令相对应的命令操作的信息、关于存储器装置150中的、待被执行命令操作的存储块的信息、以及关于与命令操作相对应的映射数据的信息。换言之,元数据可包括与从主机102接收的命令相对应的、除了用户数据之外的所有剩余信息和数据。
在本公开的实施例中,在控制器130从主机102接收到多个写入命令的情况下,执行对应于写入命令的编程操作,并且将对应于写入命令的用户数据写入并存储在存储器装置150的存储块之中的空存储块、开放存储块或已执行擦除操作的空闲存储块中。第一映射数据可包括l2p映射表或l2p映射列表,第一映射数据中存储了作为存储在存储块中的用户数据的逻辑地址与物理地址之间的映射信息的逻辑信息。第二映射数据可包括p2l映射表或p2l映射列表,第二映射数据中存储了作为存储有用户数据的存储块的物理地址与逻辑地址之间的映射信息的物理信息。第一映射数据和第二映射数据被写入并存储在存储器装置150的存储块之中的空存储块、开放存储块或空闲存储块中。
在从主机102输入写入命令的情况下,控制器130将对应于写入命令的用户数据写入并存储在存储块中。控制器130将存储在存储块中的用户数据的、包括第一映射数据和第二映射数据的元数据存储在其它存储块中。特别地,对应于存储器装置150的存储块中存储的用户数据的数据段,控制器130生成并更新第一映射数据的l2p段和第二映射数据的p2l段作为元数据的元段之中的映射数据的映射段。控制器130将映射段存储在存储器装置150的存储块中。将存储块中存储的映射段加载到控制器130中的存储器144中,然后进行更新。
在从主机102接收多个读取命令的情况下,控制器130从存储器装置150读取与读取命令相对应的读取数据,将读取的数据存储在存储器144中的缓冲器/高速缓存中。控制器130将缓冲器/高速缓存中存储的数据提供到主机102,由此执行与多个读取命令相对应的读取操作。
在从主机102接收多个擦除命令的情况下,控制器130检查存储器装置150中的、与擦除命令相对应的存储块,并且然后对该存储块执行擦除操作。
当在执行后台操作的同时执行与从主机102接收的多个命令相对应的命令操作时,控制器130将与后台操作相对应的数据,即元数据和用户数据加载并存储在存储器144中的缓冲器/高速缓存中,然后将数据,即元数据和用户数据存储在存储器装置150中。在本文中,作为示例而非限制,后台操作可包括作为复制操作的垃圾收集操作或读取回收操作、作为交换操作的损耗均衡操作、或者映射清除操作。对于后台操作,控制器130可在存储器装置150的存储块中检查对应于后台操作的元数据和用户数据。进一步地,控制器130可将存储器装置150的某些存储块中存储的元数据和用户数据加载并存储在存储器144的缓冲器/高速缓存中,然后将元数据和用户数据存储在存储器装置150的某些其它存储块中。
在执行作为前台操作的命令操作以及作为后台操作的复制操作、交换操作和映射清除操作的情况下,控制器130调度对应于前台操作和后台操作的队列。进一步地,控制器130将所调度的队列分配到控制器130中的存储器144和主机102中的存储器。在这方面,针对待在存储器装置150中执行的前台操作和后台操作,控制器130以各个操作分配标识符(id),并且分别调度与分配有标识符的操作相对应的队列。不仅根据存储器装置150的各个操作分配标识符,而且根据存储器装置150的功能来分配标识符,并且调度与分配有各自标识符的功能相对应的队列。
在本公开的实施例中,控制器130管理通过待在存储器装置150中执行的各个功能和操作的标识符调度的队列。控制器130管理通过待在存储器装置150中执行的前台操作和后台操作的标识符而调度的队列。在与通过标识符调度的队列相对应的存储器区域被分配到控制器130中的存储器144和主机102中的存储器之后,控制器130管理所分配的存储器区域的地址。通过使用调度的队列,控制器130在存储器装置150中不仅执行前台操作和后台操作,还执行各个功能和操作。
参照图4,控制器130执行与从主机102输入的多个命令相对应的命令操作。例如,控制器130执行与从主机102输入的多个写入命令相对应的编程操作。控制器130将对应于写入命令的用户数据编程并存储在存储器装置150的存储块中。而且,对应于针对存储块的编程操作,控制器130生成并更新用户数据的元数据,并且将元数据存储在存储器装置150的存储块中。
控制器130生成并更新第一映射数据和第二映射数据,第一映射数据和第二映射数据包括表示用户数据被存储在存储器装置150的存储块中的页面中的信息。也就是说,控制器130生成并更新l2p段作为第一映射数据的逻辑段以及生成并更新p2l段作为第二映射数据的物理段。然后,控制器130将逻辑和物理段存储在存储器装置150的存储块的页面中。
例如,控制器130将与从主机102输入的写入命令相对应的用户数据高速缓存和缓冲在控制器130的存储器144中的第一缓冲器510中。特别地,在将用户数据的数据段512存储在用作数据缓冲器/高速缓存的第一缓冲器510中之后,控制器130将第一缓冲器510中的数据段512存储在存储器装置150的存储块的页面中。因为与从主机102接收的写入命令相对应的用户数据的数据段512被编程到并存储在存储器装置150的存储块的页面中,所以控制器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接收的多个命令相对应的命令操作。例如,控制器130执行与从主机102接收的多个读取命令相对应的读取操作。特别地,控制器130将作为与读取命令相对应的用户数据的映射段的第一映射数据的l2p段522和第二映射数据的p2l段524加载到第二缓冲器520中,并且检查l2p段522和p2l段524。然后,控制器130读取存储在存储器装置150的存储块之中的相应存储块的页面中的用户数据,将读取的用户数据的数据段512存储在第一缓冲器510中,并且将数据段512提供到主机102。
控制器130执行与从主机102输入的多个命令相对应的命令操作。例如,控制器130执行与从主机102输入的多个擦除命令相对应的擦除操作。特别地,控制器130检查存储器装置150的存储块之中的、与擦除命令相对应的存储块,并且对检查到的存储块执行擦除操作。
控制器130可在存储器装置150中的存储块之中执行复制数据或交换数据的操作,例如作为后台操作的垃圾收集操作、读取回收操作或损耗均衡操作。在执行垃圾收集操作、读取回收操作或损耗均衡操作的情况下,控制器130将相应用户数据的数据段512存储在第一缓冲器510中,将对应于用户数据的映射数据的映射段522、524加载到第二缓冲器520中,然后执行垃圾收集操作、读取回收操作或损耗均衡操作。控制器130可针对存储器装置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。存储器管芯中的各个平面包括多个存储块,例如n个块,块0至块n-1,每个块包括多个页面,例如,2m个页面。存储器装置150包括与各个存储器管芯相对应的多个缓冲器,例如,与存储器管芯0相对应的缓冲器0、与存储器管芯1相对应的缓冲器1、与存储器管芯2相对应的缓冲器2及与存储器管芯3相对应的缓冲器3。
在执行与从主机102接收的多个命令相对应的命令操作的情况下,与命令操作相对应的数据被存储在存储器装置150中包括的缓冲器中。例如,在执行编程操作的情况下,将对应于编程操作的数据存储在缓冲器中,然后存储在存储器管芯的页面中。在执行读取操作的情况下,从存储器管芯的存储块中的页面中读取对应于读取操作的数据,将该数据存储在缓冲器中,然后通过控制器130而提供到主机102。
虽然下面描述了存储器装置150中的缓冲器设置在各个相应的存储器管芯的外部,但应当注意的是,缓冲器可设置在各个相应的存储器管芯的内部。进一步地,应当注意的是,缓冲器可对应于各个存储器管芯中的各个平面或各个存储块。虽然下面描述了存储器装置150中的缓冲器是页面缓冲器,但应当注意的是,缓冲器可以是存储器装置150中的多个高速缓存或多个寄存器。
存储器装置150中的多个存储块可被分组为多个超级存储块,并且可以以多个超级存储块来执行命令操作。超级存储块中的每一个可包括存储块组。例如,第一存储块组中的存储块可形成第一超级块,并且第二存储块组中的存储块可形成第二超级块。在这方面,当第一存储块组被包括在某个第一存储器管芯的第一平面中时,第二存储块组可被包括在第一存储器管芯的第一或第二平面中,或者被包括在第二存储器管芯的平面中。
在本公开的实施例中,数据处理系统可包括多个存储器系统。多个存储器系统110中的每一个可包括控制器130和存储器装置150。在数据处理系统中,多个存储器系统110中的一个可以是主设备(master),而其它存储器系统可以是从设备。可基于多个存储器系统110之间的争用(例如,对资源的竞争)来确定主设备。当在数据处理系统中从主机102接收到多个命令时,主设备可至少基于通道或总线的状态来确定每个命令的目标。例如,可对应于从多个存储器系统传送的信息(例如,操作状态),将第一存储器系统确定为多个存储器系统之中的主存储器系统。如果将第一存储器系统确定为主存储器系统,则认为剩余存储器系统是从存储器系统。主存储器系统的控制器可检查联接到多个存储器系统的多个通道(或通路、总线)的状态,以选择哪个存储器系统处理从主机102传送的命令或数据。在实施例中,可在多个存储器系统之中动态地确定主设备。在另一实施例中,主存储器系统可周期性地或根据事件而利用其它从存储器系统中的一个进行改变。
将更详细地描述在包括上述存储器装置150和控制器130的存储器系统110中传送数据的方法和设备。随着存储在存储器系统110中的数据量变大,可能需要存储器系统110一次读取或存储大量的数据。然而,用于读取存储器装置150中存储的数据的读取时间或用于将数据写入在存储器装置150中的编程/写入时间通常可能比控制器130处理数据的处理时间或控制器130和存储器装置150之间的数据传送时间长。例如,读取时间可能是处理时间的两倍。因为读取时间或编程时间相比于处理时间或数据传送时间长得多,因此在存储器系统110中传送数据的过程或进程可能影响存储器系统110的性能,例如存储器系统110的操作速度和/或存储器系统110的结构,诸如缓冲器大小。
图6示出根据本公开的实施例的主机10和存储器系统20。根据本公开的实施例的数据处理系统可由主机10、存储器系统20和其它组件构成。在嵌入有存储器系统20的计算装置或移动装置中,存储器系统20与主机10接合以交换数据。
参照图6,存储器系统20可包括控制器30和存储器装置40。控制器30从存储器装置40接收并输出从主机10请求的数据,或者将从主机10接收的数据存储到存储器装置40中,以便执行从主机10接收的命令操作。存储器装置40包括能够存储数据的多个存储器单元。可根据存储器装置40的特性、存储器系统20的使用目的、主机10所需的存储器系统20的规格等来改变存储器装置40的内部配置。例如,图1至图5的存储器装置150和图6的存储器装置40可包括相同的组件。另外,图1至图5的控制器130和图6的控制器30可包括相同的组件。
控制器30可包括处理器34、主机接口36、存储器38和控制器接口32。类似于在计算装置中使用的cpu,处理器34可起到在控制器30内处理命令操作的作用。主机接口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的内部结构可能变得更加复杂,如图6所示。控制器30可根据存储器装置40的内部配置将连接信息与数据一起传送或接收。例如,在如图6所示的在存储器装置40中包括各自包括多个块的多个管芯的情况下,在控制器30和存储器装置40之间存在n个通道和m个通路(其中,n或m为大于1的整数)。数据和连接信息可经由n个通道和m个通路传送。然而,为了使控制器30向存储器装置40读取或写入数据,根据存储器装置40的内部结构,可能需要另外的控制变量或控制信号。随着存储器装置40中包括更多的管芯,执行操作所需的另外信息变得更多。
主机10和存储器系统20可根据协议、系统通信方法或接口来彼此交换命令、地址和数据。因此,主机10可不需要知道存储器系统20内的特定结构。当主机10将特定数据存储到存储器系统20中,或者尝试读取存储器系统20中存储的数据时,主机10发送逻辑块地址(lba)。例如,逻辑块地址(lba)是逻辑块寻址方法,并且可以是用于指定与计算装置相关联的存储装置中的、待被存储的数据块的位置的格式。例如,在常规硬盘的情况下,使用指示硬盘中的诸如磁道、磁头和扇区(磁道-磁头-扇区,chs)的物理结构的寻址方法。然而,随着硬盘存储容量的增加,与磁盘的物理结构相对应的地址系统已达到极限。在这样的大容量存储装置中,可以按逻辑顺序在行中布置扇区,并且对扇区编号(例如,从0开始的顺序)的方式指定地址,这与硬盘的物理结构无关。存储器系统20中的控制器30可存储和管理作为存储器装置40中存储实际数据的地址的物理地址,而不是仅将数据传送或指向逻辑块地址(lba)的主机10。需要对主机10所使用的逻辑块地址(lba)进行匹配和管理。这种信息可被包括在元数据中,并且可与由主机10存储或读取的用户数据区分开。
随着待存储在存储器装置40中的数据量的增加,可能需要对元数据的有效管理。随着存储器装置40中的多个块的大小增加,待存储的数据量增加并且元数据量也增加。这增加了保持和管理存储器装置40中的被存储数据所需的资源(例如,时间),从而可能需要一种增加存储器系统20的操作效率、稳定性或可靠性的设备和方法。
根据实施例,存储器系统20可包括存储器装置40,存储器装置40包括能够存储数据的多个块。存储器系统20可包括控制器30,控制器30被配置成将每个块划分成多个逻辑单元块。控制器30可以以与将数据编程到块中的顺序相反的顺序,将块的有效页面计数与每个逻辑单元块的映射数据的数量进行比较,检查映射数据是否重复,并且删除或作废旧的重复映射数据。可在特定块中执行控制器30比较、验证和删除以调整映射数据的过程,该特定块具有在不进行擦除操作的情况下不能再被写入数据的状态(例如,关闭状态)。
当从主机10输入的命令重复地请求利用对应于相同逻辑块地址的不同数据进行的多个编程操作时,控制器30可将有效页面计数与映射数据的数量进行比较。根据实施例,存储器装置40中的多个存储块中的每一个可从该存储块中的第一页面到最后页面顺序地进行存储。例如,块是执行擦除操作的单位。块中可包括至少两个逻辑单元块。逻辑单元块可以是一起分配或管理映射数据的最小单位。例如,映射数据可包括用于将分配在每个逻辑单元块中的物理地址与主机102所使用的逻辑地址相关联的信息(例如,物理到逻辑(p2l))。
图7示出控制器搜索有效数据的操作方法的示例。
参照图7,选择存储器装置中的第一块blk1作为用于垃圾收集的牺牲块。例如,第一块blk1可包括(m+1)个页面(例如,页面pg_0至pg_m,其中“m”为32或更大的自然数)。假设第一块blk1处于关闭状态,并且第一块blk1的有效页面计数(vpc)为15。
控制器可顺序地确定从第一块blk1的第一页面pg_0到最后页面pg_m的数据有效性。在图7中,第一页面pg_0中存储的数据有效性可被如下确定。
当控制器30基于第二地址信息(例如,p2l映射表)而找到第一块blk1的第一页面pg_0中的数据的逻辑地址时,可能存在地址值“c08”(即,逻辑地址)。此后,控制器130可在第一地址信息(例如,l2p映射表)中搜索对应于地址值“c08”的信息(即,物理地址)。在图7中,第一地址信息(例如,l2p映射表)中的对应于地址值“c08”的信息可能指示第一块blk1的第一页面pg_0。在这种情况下,因为第一块blk1的第一页面pg_0中存储的数据的地址信息在第二地址信息和第一地址信息之间匹配,所以控制器30可确定第一块blk1的第一页面pg_0中存储的数据是一种有效数据。此后,第一块blk1的有效页面计数vpc可减去1,并且第一块blk1的剩余有效页面计数remainingvpc可以是14(=15-1)。
随后,控制器30可确定第一块blk1的第二页面pg_1中存储的数据有效性。当控制器30在第二地址信息(例如,p2l映射表)中检查与被编程在第一块blk1的第二页面pg_1中的数据相对应的逻辑地址时,可能存在地址值“6b1”。此后,控制器30可在第一地址信息(例如,l2p映射表)中搜索对应于地址值“6b1”的信息(即,物理地址)。在图7中,第一地址信息(例如,l2p映射表)中的对应于地址值“6b1”的信息可能指示第四块blk4的第十页面pg_9。在这种情况下,因为与第一块blk1的第二页面pg_1中存储的数据相关的第二地址信息和第一地址信息之间不存在匹配关系,所以第一块blk1的第二页面pg_1中存储的数据不再有效。因为被编程在第二页面pg_1中的数据无效,所以第一块blk1中的剩余有效页面计数既不减少也不改变。剩余有效页面的数量可以是14(=14-0)。
如上所述,控制器30可顺序地确定被选择作为用于垃圾收集的牺牲块的第一块blk_1的每个页面中存储的数据有效性。根据实施例,可顺序地检查数据有效性,直到第一块blk1的剩余有效页面计数remainingvpc变为零。
图8示出控制器停止在特定存储块中搜索有效数据的第一示例。
参照图8,从作为垃圾收集的目标块的第一块blk1的第一页面pg_0开始,顺序地执行检查数据有效性的进程。此外,在检查第一块blk1的第22页面pg_21中存储的数据的有效性之前,第一块blk1的剩余有效页面计数remainingvpc为1。
控制器30可确定第一块blk1的第22页面pg_21中存储的数据的有效性。当控制器130在第二地址信息(例如,p2l映射表)中找到与被编程在第一块blk1的第22页面pg_21中的数据相对应的逻辑地址时,可能存在地址值“a3a”。然后,控制器30在第一地址信息(例如,l2p映射表)中搜索对应于逻辑地址“a3a”的物理地址。在图8中,第一地址信息(例如,l2p映射表)中的对应于逻辑地址“a3a”的物理地址可指示第一块blk1的第22页面pg_21。在这种情况下,因为与第一块blk1的第22页面pg_21中存储的数据相关的第二地址信息和第一地址信息彼此匹配,所以确定被编程在第一块blk1的第22页面pg_21中的数据是一种有效数据。此后,第一块blk1的剩余有效页面计数remainingvpc可减去1,并且剩余有效页面的数量可以是0(=1-1)。
如果第一块blk1的剩余有效页面计数remainingvpc为0,则控制器30可确定从第一块blk1的第23页面pg_22到最后页面pg_m中不存在有效数据。控制器30可停止在第一块blk1中搜索有效数据的操作,并且仅将第一块blk1中的被确定为有效的数据移动到另一块。
在第一块blk1的第一部分中,即从第一块blk1的第一页面pg_0到第22页面pg_21,控制器30针对每个页面执行检查数据有效性的操作,但在第一块blk1的第二部分中,即从第一块blk1的第23页面pg_22到最后页面pg_m中,可不执行该操作。例如,当第一块blk1包括128个页面或256个页面时,控制器30不需要针对第一块blk1的许多部分中的每个页面确定数据有效性,从而可极大地减少在垃圾收集期间搜索有效数据所需的资源。
图9示出控制器中止在存储块中搜索有效数据的操作的第二示例。
参照图9,选择第二块blk2作为用于垃圾收集的牺牲块。进一步地,第二块blk2的有效页面计数vpc为90,并且可从第二块blk2的第一页面pg_0到最后页面pg_127顺序地执行数据有效性检查进程。
与图7和图8所示的使用有效页面计数vpc来确定被编程在第一块blk1中的数据的有效性的实施例不同,在图9所示的实施例中可使用无效页面计数(ipc)。在图9中,第二块blk2中的总页面数量为128。因为第二块blk2的有效页面计数vpc为90,所以第二块blk2可具有比无效数据(即,38条(=128–90))更多的有效数据(即,90条)。因此,控制器30可从第二块blk2的第一页面pg_0到最后页面pg_127确定被编程数据的数据无效性。在图9中,第二块blk2的无效页面计数ipc可以是38。
控制器30可从第二块blk2的第一页面pg_0开始顺序地检索无效数据,然后每当搜索到无效数据时减去第二块blk2的无效页面计数ipc。在图9中,第二块blk2的第56页面pg_55处的剩余无效页面计数remainingipc为1。
控制器30可确定被编程在第二块blk2的第56页面pg_55中的数据的有效性。当控制器30在第二地址信息(例如,p2l映射表)中找到与被编程到第二块blk2的第56页面pg_55中的数据相对应的逻辑地址时,可能存在地址值“2a1”。然后,控制器30在第一地址信息(例如,l2p映射表)中搜索对应于逻辑地址“2a1”的物理地址。在图9中,第一地址信息(例如,l2p映射表)中的对应于地址值“2a1”的物理地址可能指示第三块blk3的第六页面pg_5。在这种情况下,因为与第二块blk2的第56页面pg_55中的数据相关的第二地址信息和第一地址信息彼此不匹配,所以认为第二块blk2的第56页面pg_55中的数据是无效数据。此后,第二块blk2的剩余无效页面计数remainingipc可减去1,并且第二块blk2的剩余无效页面计数remainingipc变为0(=1-1)。
如果第二块blk2的剩余无效页面计数remainingipc为0,则控制器30可在无需检查每个数据的有效性的情况下,推测从位于第56页面pg_55之后的第57页面到最后页面pg_127的所有被编程数据都有效。然后,控制器30可停止在第二块blk2的剩余部分中搜索有效或无效数据的操作,并且仅将在第二块blk2中被确定为有效的数据移动到另一块。
根据实施例,控制器30可在用于垃圾收集的牺牲块中搜索有效数据或无效数据。例如,当牺牲块的有效页面计数vpc大于该块的总页面数量的一半时,控制器30可使用无效页面计数ipc来检查数据有效性。当牺牲块的有效页面计数vpc小于该牺牲块的总页面数量的1/2时,控制器130可使用有效页面计数vpc来检查数据有效性。
图10示出控制器停止在特定存储器中搜索有效数据的操作的第三示例。
参照图10,选择存储器装置中的第三块blk3作为用于垃圾收集的牺牲块。第三块blk3可包括(m+1)个页面。例如,m可以是80或更大的自然数。
如果第三块blk3的有效页面计数vpc为75,则第三块blk3的无效页面计数ipc可以是((m+1)-75)。如参照图9描述的实施例,控制器30可顺序地从第三块blk3的第一页面pg_0开始检查数据有效性。特别地,控制器30可使用用于垃圾收集的第三块blk3的无效页面计数ipc。每当搜索到一条无效数据时,控制器30可将第三块blk3的无效页面计数ipc减去1。
在图10中,通过从第一页面pg_0到特定页面pg_k检查数据有效性的进程,已经检查到第三块blk3中的99%的无效数据。控制器30可假设从任意页面pg_(k+1)到最后页面pg_m的所有剩余页面中的数据有效,而非进一步从所有剩余页面中检查1%的无效数据。控制器30可不检查从任意页面pg_(k+1)到最后页面pg_m中的数据有效性。
在确定特定页面pg_k中存储的数据的有效性之后,控制器30可识别剩余页面的数量,例如((m+1)-k)个页面,以执行检查第三块blk3中的数据的有效性,并且知道从第一页面pg_0到特定页面pg_k已搜索到多少条无效数据。
在从第一页面pg_0到任意页面pg_k确定数据有效性之后,控制器30可不基于第三块blk3的无效页面计数ipc((m+1)-75)是否变为零停止用于检查数据有效性的操作。但是,当尚未找到第三块blk3中的小于或等于1%的无效数据时,控制器130可假设剩余页面中,例如((m+1)-k)个页面中,存储的所有数据有效。在这种情况下,在对第三块blk3执行的垃圾收集中,1%或小于1%的无效数据可与有效数据一起移动到另一块。
以上述方式,即使在垃圾收集中将1%或小于1%的无效数据与有效数据一起移动到另一块,但是对垃圾收集性能的不利影响可能是微不足道的。另一方面,提取第三块blk3中的1%或小于1%的无效数据可能消耗的资源可能会非常巨大。因此,为了增强或增加垃圾收集的操作效率,可以将极少量的无效数据与有效数据一起移动。即使无效数据被移动到另一存储块中,但是因为该无效数据的第二地址信息和第一地址信息仍然彼此不匹配,所以该无效数据也不改变为有效数据。因此,无效数据的迁移在存储器系统的操作中不会引发担忧。
图11示出可由存储器系统的控制器执行的控制元数据的方法。在图11中,主机10可向图6的存储器系统20传送命令,以重复地编程与相同逻辑块地址(lba)相关联的数据。存储器系统20的存储器装置40可包括非易失性存储器装置(例如,闪速存储器)。如果存储器系统20可将数据写入或编程到指定的物理位置,然后重写其它数据,则存储器系统20可利用相同的逻辑块地址(lba)在存储器装置40的相同位置处重复地重写从主机10输入的不同数据。然而,在诸如非易失性存储器装置(例如,闪速存储器)的存储器装置40中,不可能在相同的位置处重写数据,因此必须将数据编程在新的位置(即,不同的位置)。
参照图11,控制器30可接收从主机10接收的数据、逻辑块地址和编程命令。控制器30可响应于编程命令而将逻辑块地址转换成物理块地址(52)。例如,逻辑块地址可以是由主机10识别和使用的逻辑地址或逻辑块地址(lba)。例如,逻辑地址是用于识别在整个用户数据存储装置中顺序地布置的扇区、空间或区域中的一个的指示符。例如,可将特定的逻辑块地址(lba)转换成存储器装置40中的物理块地址blk_3。作为示例而非限制,这种地址转换可通过实施上述ftl的固件来实现。
随着存储器系统存储大量的用户数据,每个块(例如,blk_3)具有更大的大小。因此,可将存储器装置40中的存储块(例如,blk_3)划分成多个逻辑单元块lub_0至lub_n(54)。一些操作可基于逻辑单元块,即逐个逻辑单元块地进行控制或管理。例如,块blk_3可包括“n”个逻辑单元块lub_0至lub_n。例如,“n”是2或更大的自然数。每个逻辑单元块(例如,lub_1)可包括“m”个页面pg_0至pg_m,其中m是2或更大的自然数。
根据实施例,可向每个逻辑单元块指定或分配单个映射数据。在实施例中,可生成用于将对应于每个逻辑单元块的物理地址与逻辑地址进行映射的物理到逻辑(p2l)映射表,以确定逻辑单元块的多个页面中的每一个中存储的数据是否有效。
图12示出控制器停止在特定块中搜索有效数据的第四示例。
参照图12,可选择第四块blk4作为用于垃圾收集的牺牲块。第四块blk4的有效页面计数vpc为90,并且可被划分成多个逻辑单元块lub_0至lub_7,如参照图11所述。
可基于每个逻辑单元块来生成和控制映射数据。控制器30可基于逻辑单元块来执行有效数据搜索以用于垃圾收集。假设在第一逻辑单元块lub_0和第二逻辑单元块lub_1中搜索到第四块blk4中99%的无效数据。在这种情况下,如图10的实施例中,控制器30可停止在剩余的六个逻辑单元块lub_2至lub_7中搜索无效数据的进程,而非继续在剩余的六个逻辑单元块中搜索1%的无效数据。与在剩余的六个逻辑单元块中搜索极少量的无效数据的进程相比,停止或跳过在剩余的六个逻辑单元块中的该进程可更高效地减少垃圾收集所消耗的资源。
图13示出根据本公开的另一实施例的操作存储器系统的方法。
参照图13,存储器系统的操作方法可包括步骤s82、s84和s86。步骤s82可包括检查与存储器装置中包括的存储块的第一部分中的页面处存储的每个数据相关的两种不同类型的地址是否彼此相关联,以确定每个页面中存储了第一属性数据还是第二属性数据。步骤s84可包括基于存储块的第一属性页面计数以及存储块的第一部分中的存储第一属性数据的页面数量,在无需检查第二部分的每个页面处存储了第一属性数据还是第二属性数据的情况下,假设存储块的第二部分中存储的所有数据都是第二属性数据。步骤s86可包括将第一属性数据和第二属性数据中的一种迁移到另一存储块。
在实施例中,执行从被选择作为用于垃圾收集(gc)的牺牲块的特定存储块的第一页面到最后页面来确定每个页面中存储的数据的有效性的进程,并且可减少在搜索有效数据中消耗的资源,以增加存储器系统的操作效率。特别地,在根据实施例的垃圾收集期间,通过存储块的第一部分中的第一属性数据或第二属性数据的数量以及关于被选择作为牺牲块的存储块的操作信息,在无需针对存储块的第二部分检查数据有效性的情况下,假设数据是有效的或者无效的。然后,可将所假设的数据迁移到另一存储块中。
根据实施例,第一属性可指示一条数据有效,即该条数据是对应于特定逻辑地址的最新数据,而第二属性可指示该条数据无效,即该条数据不是对应于该特定逻辑地址的最新数据,从而不再使用该条数据。在这种情况下,第一属性数据的数量可基本上等于存储块的有效页面计数(vpc)。
在另一实施例中,第一属性指示一条数据无效,而第二属性指示该条数据有效。在这种情况下,第一属性数据的数量可基本上等于图10中描述的存储块的无效页面计数(ipc)。
在操作存储器系统的方法中,可从所选择块的第一页面到最后页面顺序地检查被编程数据的有效性。当用于单个页面的数据有效性的进程完成时,可根据该进程的结果来减去有效页面计数(vpc)或无效页面计数(ipc)。例如,假设牺牲块的有效页面计数(vpc)为50。当第一页面中存储的数据有效时,剩余有效页面计数remainingvpc为49。可执行检查第二页面中存储的数据的有效性的进程,然后可根据结果来调整剩余有效页面计数remainingvpc。
可将被选择作为牺牲块的存储块划分成第一部分和第二部分。例如,第一部分包括逐个页面地执行判断数据有效性的进程的区域,并且第二部分包括没有逐个页面地来执行判断数据有效性的进程的区域。但是,假设第二部分中存储的多条数据可以是一种有效数据或一种无效数据。
根据实施例,可从被选择作为用于垃圾收集的牺牲块的存储块的第一页面到最后页面顺序地检查数据有效性。在这种情况下,存储块的第一部分可包括第一页面,而存储块的第二部分可包括最后页面。
根据另一实施例,可从被选择作为牺牲块的存储块的最后页面到第一页面来顺序地执行用于确定数据有效性的进程。在这种情况下,存储块的第一部分可包括最后页面,并且存储块的第二部分可包括第一页面。
在从被选择作为牺牲块的存储块中的第一页面或最后页面顺序地检查数据有效性的进程中,当在检查页面中存储的数据的有效性之后被减去的第一属性数据的数量变为0时,控制器可将存储块的剩余页面,即下一页面至最后页面,包括在不执行检查数据有效性的进程的第二部分中。
在另一示例中,如参照图10所述,当在检查数据有效性的进程之后被减去的第一属性数据的剩余数量下降到低于预设阈值时,存储块的下一页面到最后页面可被包括在为了操作效率而不需要执行逐个页面地检查数据有效性的进程的第二部分中。根据实施例,可将预设阈值确定在1%以内。通过垃圾收集将牺牲块的100%的有效数据移动到另一存储块(例如,空闲块)可能更好。进一步地,在控制器逐个页面地从牺牲块的第一页面到最后页面确定数据有效性之后,将1%或小于1%的无效数据移动到另一存储块也是不坏的(鉴于高效性)。也就是说,当在垃圾收集中迁移非常少量的无效数据的不利影响可忽略不计时,跳过或停止用于数据有效性的进程可能会更加高效地减少垃圾收集所消耗的资源。
根据实施例,当牺牲块的有效页面计数(vpc)大于该牺牲块的总页面数量的一半时,第一属性可指示一条数据无效。例如,当牺牲块中有效数据多于无效数据时,基于用于垃圾收集的牺牲块中的无效页面计数(ipc)来逐个页面地确定数据有效性会更加有利。
另一方面,如果牺牲块的有效页面计数(vpc)小于该存储块的总页面数量的一半(1/2),则第一属性可指示一条数据有效。例如,当牺牲块中的无效数据多于有效数据时,基于用于垃圾收集的牺牲块中的有效页面计数(vpc)来逐个页面地确定数据有效性会更加有利。
图14是示出包括存储器系统的数据处理系统的另一示例的示图。换言之,图14示意性示出应用了根据实施例的存储器系统的存储卡系统6100。
参照图14,存储卡系统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、处理器、主机接口、存储器接口和错误校正组件。存储器控制器130可进一步包括图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可由非易失性存储器(nvm)来实施。例如,存储器装置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)。
图15是示意性地示出根据实施例的包括存储器系统的数据处理系统6200的另一示例的示图。
参照图15,数据处理系统6200可包括具有一个或多个非易失性存储器的存储器装置6230和用于控制存储器装置6230的存储器控制器6220。数据处理系统6200可用作如参照图1和图2所述的诸如存储卡(cf、sd、微型sd等)或usb装置的存储介质。存储器装置6230可对应于图1和图5所示的存储器系统110中的存储器装置150。存储器控制器6220可对应于图1和图5所示的存储器系统110中的控制器130。
存储器控制器6220可响应于主机6210的请求来控制对存储器装置6230的读取操作、写入操作或擦除操作。存储器控制器6220可包括一个或多个cpu6221、诸如ram6222的缓冲存储器、ecc电路6223、主机接口6224和诸如nvm接口6225的存储器接口。
cpu6221可控制对存储器装置6230的全部操作,例如读取操作、写入操作、文件系统管理操作和坏页面管理操作。ram6222可根据cpu6221的控制来操作。ram6222可用作工作存储器、缓冲存储器或高速缓存存储器。当ram6222用作工作存储器时,通过cpu6221处理的数据可被临时存储在ram6222中。当ram6222用作缓冲存储器时,ram6222可用于缓冲从主机6210传送到存储器装置6230的数据或从存储器装置6230传送到主机6210的数据。当ram6222用作高速缓存存储器时,ram6222可以辅助存储器装置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码、turbo码、里德-所罗门码、卷积码、rsc或诸如tcm或bcm的编码调制来校正错误。
存储器控制器6220可通过主机接口6224与主机6210交换数据。存储器控制器6220可通过nvm接口6225与存储器装置6230交换数据。主机接口6224可通过pata总线、sata总线、scsi、usb、pcie或nand接口而连接至主机6210。存储器控制器6220可利用诸如wifi或长期演进(lte)的移动通信协议而具有无线通信功能。存储器控制器6220可连接到例如主机6210或另一外部装置的外部装置,并且然后与外部装置交换数据。特别地,由于存储器控制器6220被配置成通过各种通信协议中的一种或多种与外部装置通信,因此根据实施例的存储器系统和数据处理系统可被应用于有线/无线电子装置,特别是移动电子装置。
图16是示意性地示出包括存储器系统的数据处理系统的另一示例的示图。换言之,图16示意性地示出应用了根据实施例的存储器系统的固态驱动器(ssd)6300。
参照图16,ssd6300可包括控制器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、ddrsdram、lpddrsdram和gram的各种易失性存储器或诸如fram、reram、stt-mram和pram的非易失性存储器中的任意一种来实施。图16示出缓冲存储器6325被设置在控制器6320中。然而,缓冲存储器6325可位于控制器6320的外部。
在编程操作期间,ecc电路6322可计算待被编程到存储器装置6340的数据的ecc值。在读取操作期间,ecc电路6322可基于ecc值对从存储器装置6340读取的数据执行错误校正操作。在失效数据恢复操作期间,ecc电路6322可对从存储器装置6340恢复的数据执行错误校正操作。
主机接口6324可提供与例如主机6310的外部装置的接口功能。非易失性存储器接口6326可提供与通过多个通道而连接的存储器装置6340的接口功能。
此外,可提供应用了图1和图5的存储器系统110的多个ssd6300来实施数据处理系统,例如,raid(独立磁盘冗余阵列)系统。raid系统可包括多个ssd6300和用于控制多个ssd6300的raid控制器。当raid控制器响应于从主机6310提供的写入命令而执行编程操作时,raid控制器可根据多个raid级别,即从主机6310提供的写入命令的raid级别信息,在ssd6300中选择一个或多个存储器系统或ssd6300。raid控制器可将对应于写入命令的数据输出到所选择的ssd6300。此外,当raid控制器响应于从主机6310提供的读取命令而执行读取操作时,raid控制器可根据多个raid级别,即从主机6310提供的读取命令的raid级别信息,在ssd6300中选择一个或多个存储器系统或ssd6300。raid控制器可将从所选择的ssd6300读取的数据提供到主机6310。
图17是示意性地示出包括存储器系统的数据处理系统的另一示例的示图。也就是说,图17示意性地示出应用了根据实施例的存储器系统的嵌入式多媒体卡(emmc)6400。
参照图17,emmc6400可包括控制器6430和通过一个或多个nand闪速存储器实施的存储器装置6440。控制器6430可对应于图1和图2的存储器系统110中的控制器130。存储器装置6440可对应于图1和图5的存储器系统110中的存储器装置150。
更具体地,控制器6430可通过多个通道连接至存储器装置6440。控制器6430可包括一个或多个内核6432、主机接口6431和例如nand接口6433的存储器接口。
内核6432可控制emmc6400的全部操作。主机接口6431可提供控制器6430与主机6410之间的接口功能。nand接口6433可提供存储器装置6440与控制器6430之间的接口功能。例如,主机接口6431可用作并行接口,例如参照图1所描述的mmc接口。此外,主机接口6431可用作串行接口,例如uhs((超高速)-i/uhs-ii)接口。
图18至图20是示意性地示出包括存储器系统的数据处理系统的其它示例的示图。也就是说,图18至图20示意性地示出应用了根据实施例的存储器系统的通用闪存(ufs)系统6500、6600、6700、6800。
参照图18至图20,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可以参照图15至图17所描述的数据处理系统6200、ssd6300或emmc6400的形式来实施,并且ufs卡6530、6630、6730、6830可以参照图14所描述的存储卡系统6100的形式来实施。
此外,在ufs系统6500、6600、6700、6800中,主机6510、6610、6710、6810,ufs装置6520、6620、6720、6820以及ufs卡6530、6630、6730、6830可通过ufs接口,例如,mipi(移动行业处理器接口)中的mipim-phy和mipiunipro(统一协议)彼此通信。此外,ufs装置6520、6620、6720和6820与ufs卡6530、6630、6730和6830可通过除ufs协议以外的各种协议,例如ufd、mmc、sd、迷你sd和微型sd彼此通信。
在图18所示的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处,通过链路层交换来彼此通信。在图18的实施例中,通过示例的方式示出一个ufs装置6520和一个ufs卡6530连接到主机6510的配置。然而,在另一实施例中,多个ufs装置和ufs卡可并联地或以星型形式连接到主机6510。星型形式是一种将单个集中组件联接到多个装置以进行并行处理的布置。多个ufs卡可并联地或以星型形式连接到ufs装置6520或串联地或以链型形式连接到ufs装置6520。
在图19所示的ufs系统6600中,主机6610、ufs装置6620和ufs卡6630中的每一个可包括unipro,并且主机6610可通过执行交换操作的交换模块6640,例如,通过在unipro处执行例如l3交换的链路层交换的交换模块6640,与ufs装置6620或ufs卡6630通信。ufs装置6620和ufs卡6630可通过交换模块6640在unipro处的链路层交换来彼此通信。在图19的实施例中,通过示例的方式示出一个ufs装置6620和一个ufs卡6630连接到交换模块6640的配置。然而,在另一实施例中,多个ufs装置和ufs卡可并联或以星型形式连接到交换模块6640,并且多个ufs卡可串联或以链型形式连接到ufs装置6620。
在图20所示的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集成为一个模块。在图20的实施例中,通过示例的方式示出一个ufs装置6720和一个ufs卡6730连接到交换模块6740的配置。然而,在另一实施例中,每个都包括交换模块6740和ufs装置6720的多个模块可并联或以星型形式连接到主机6710,或者串联或以链型形式彼此连接。此外,多个ufs卡可并联或以星型形式连接至ufs装置6720。
在图21所示的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交换来彼此通信。在图21的实施例中,通过示例的方式示出一个ufs装置6820连接到主机6810并且一个ufs卡6830连接到ufs装置6820的配置。然而,在另一实施例中,多个ufs装置可并联或以星型形式连接至主机6810,或串联或以链型形式连接至主机6810,并且多个ufs卡可并联或以星型形式连接至ufs装置6820,或串联或以链型形式连接至ufs装置6820。
图22是示意性地示出包括存储器系统的数据处理系统的另一示例的示图。即,图22是示意性地示出应用了根据实施例的存储器系统的用户系统6900的示图。
参照图22,用户系统6900可包括应用处理器6930、存储器模块6920、网络模块6940、存储模块6950和用户接口6910。
具体地,应用处理器6930可以驱动包括在例如os的用户系统6900中的组件,并且包括控制包括在用户系统6900中的组件的控制器、接口、图形引擎。应用处理器6930可被设置为片上系统(soc)。
存储器模块6920可用作用户系统6900的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块6920可包括诸如dram、sdram、ddrsdram、ddr2sdram、ddr3sdram、lpddrsdram、lpddr2sdram和lpddr3sdram的易失性ram或诸如pram、reram、mram和fram的非易失性ram。例如,应用处理器6930和存储器模块6920可以基于pop(堆叠封装)来封装和安装。
网络模块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闪存,并且可被提供为诸如用户系统6900的存储卡或外部驱动器的可移动存储介质。存储模块6950可对应于参照图1和图5描述的存储器系统110。此外,存储模块6950可被实施为上面参照图15至图20描述的ssd、emmc和ufs。
用户接口6910可包括用于向应用处理器6930输入数据或命令或者用于将数据输出到外部装置的接口。例如,用户接口6910可包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件的用户输入接口,以及诸如液晶显示器(lcd)、有机发光二极管(oled)显示装置、有源矩阵oled(amoled)显示装置、led、扬声器和监控器的用户输出接口。
此外,当其中图1和图5的存储器系统110被应用于用户系统6900的移动电子装置时,应用处理器6930可控制移动电子装置的全部操作。网络模块6940可用作用于控制与外部装置的有线/无线通信的通信模块。用户接口6910可在移动电子装置的显示/触摸模块上显示由应用处理器6930处理的数据。进一步地,用户接口6910可支持从触摸面板接收数据的功能。
根据上述实施例,存储器系统、数据处理系统及其操作方法可显著地减少在垃圾收集期间搜索和提取有效数据所需的时间,从而可在存储器系统中更快速地执行垃圾收集。例如,可以极大地减少验证所存储的数据是否有效的有效性检查操作的时间。对可通过在存储器系统中搜索有效数据而执行的前台或后台操作的管理可更加容易。因此,可提高存储器系统的稳定性和可靠性。
本公开的实施例提供了一种通过基于能够存储大量数据的存储块的有效页面计数来搜索有效数据或无效数据的方法来高效地搜索有效数据的方法,从而可以极大地减少被执行用于确定数据是否有效的有效性检查操作的存储块范围。
虽然已经针对具体实施例说明和描述了本公开,但是对于本领域技术人员显而易见的是,根据本公开,在不脱离如所附权利要求所限定的本发明的精神和范围的情况下,可进行各种改变和修改。