CN102831076A - 具有多位存储设备的数据存储系统及其片上缓冲编程方法 - Google Patents
具有多位存储设备的数据存储系统及其片上缓冲编程方法 Download PDFInfo
- Publication number
- CN102831076A CN102831076A CN2012101969297A CN201210196929A CN102831076A CN 102831076 A CN102831076 A CN 102831076A CN 2012101969297 A CN2012101969297 A CN 2012101969297A CN 201210196929 A CN201210196929 A CN 201210196929A CN 102831076 A CN102831076 A CN 102831076A
- Authority
- CN
- China
- Prior art keywords
- programming
- data
- programming operation
- area
- buffering
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
公开了一种用于包括多位存储设备和存储控制器的数据存储设备的片上缓冲编程方法。该片上缓冲编程方法包括:测量数据存储设备的性能;判断所测量的性能是否满足数据存储设备的目标性能;以及根据判断结果选择多个调度方式中的一个作为数据存储设备的片上缓冲编程调度方式。
Description
技术领域
示范性实施例涉及一种存储设备,而且更具体地,涉及一种数据存储系统。
背景技术
半导体存储设备是在诸如计算机以及范围涉及从卫星到消费类电子产品的基于微处理器的应用的数字逻辑系统中常见的重要微电子组件。因此,半导体存储设备的制造上的进展——包括允许定标(scale)至更高存储密度和更快操作速度的过程改进和电路设计相关的发展——有助于建立关于其它数字逻辑家族成员(families)的性能标准。
半导体存储设备一般包括诸如随机存取存储器(RAM)设备的易失性存储设备和非易失性存储设备。在RAM设备中,要么通过诸如在静态随机存取存储器(SRAM)中建立双稳态触发器(flip-flop)的逻辑状态、要么通过在动态随机存取存储器(DRAM)中对电容器充电来存储数据。在SRAM和DRAM两者中,只要供电,则数据就保持被存储并可以被读取,但当断开电源时数据丢失。
即使电源断开,掩模只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)设备也能够存储数据。取决于所使用的制造工艺,非易失性存储器数据存储状态可以是永久的或可重复编程的。在计算机、航空电子、电信和消费类电子行业的各种应用中,非易失性半导体存储器用于程序和微代码存储。单芯片易失性和非易失性存储器存储模式的组合在用于要求快速、可重复编程的非易失性存储器的系统中的诸如非易失性SRAM(nvRAM)的设备上也是可行的。此外,演变出了许多特殊的存储器架构,包含一些额外的逻辑电路以优化其针对特定应用任务的性能。
掩模只读存储器(MROM)、可编程只读存储器(PROM)和可擦除可编程只读存储器(EPROM)非易失性存储设备并不由系统自身自由地擦除和写入,所以不容易更新存储器的内容。另一方面,电可擦除可编程只读存储器(EEPROM)非易失性存储设备是电可擦除和可写的,并且因此可以被容易地应用到要求连续更新的辅助存储器或系统编程存储器。
发明内容
一个实施例旨在提供一种用于包含多位存储设备和存储控制器的数据存储设备的片上(on-chip)缓冲编程方法。该片上缓冲编程方法包括:测量数据存储设备的性能;判断所测量的性能是否满足该数据存储设备的目标性能;以及根据判断结果,选择多个调度方式中的一个作为该数据存储设备的片上缓冲编程调度方式。
在一个实施例中,多位存储设备包含被定义为第一区域和第二区域的存储单元阵列,该第一区域由每一个被指定为存储1-位数据的存储单元形成,且该第二区域由每一个被指定为存储M-位数据(M是3或更大的整数)的存储单元形成。
在一个实施例中,所述片上缓冲编程调度方式包括缓冲编程操作和主编程操作,而所述多个调度方式包括静态调度方式以及动态调度方式,在静态调度方式中根据给定顺序依次执行缓冲编程操作和主编程操作,在动态调度方式中连续地执行缓冲编程操作而不执行主编程操作,在缓冲编程操作的连续执行之后进行动态调度方式的延迟的主编程操作。
在一个实施例中,在其中连续地进行缓冲编程操作的预定时间段之后,进行根据动态调度方式延迟的主编程操作。
在一个实施例中,当对应于第一区域的最小编程单位的数据被存储在存储控制器的缓冲存储器中时,根据存储控制器的控制来触发缓冲编程操作,当对应于第二区域的最小编程单位的数据被存储在第一区域中时,根据存储控制器的控制来触发主编程操作,并且所述主编程操作包括1步编程操作、粗糙(coarse)编程操作或精细(fine)编程操作中的至少一个。
在一个实施例中,主编程操作包括用于从第一区域中读取数据的单位读取(single-bit read)操作和用于将从第一区域中读取的数据存储在第二区域中的多位编程(multi-bit program)操作,根据主编程操作来迭代进行单位读取操作。
在一个实施例中,基于在参考时间段期间处理的数据量来确定数据存储设备的性能。
在一个实施例中,目标性能是预定最小吞吐量(throughput)阈值,并且如果所测量的性能低于数据存储设备的目标性能,则选择动态调度方式。
在一个实施例中,如果所测量的性能高于数据存储设备的目标性能,则选择静态调度方式。
另一实施例旨在一种数据存储设备,其包括:多位存储设备,具有被定义为第一区域和第二区域的存储单元阵列;及存储控制器,具有缓冲存储器,并被配置为控制所述多位存储设备,其中存储控制器控制多位存储设备以执行缓冲编程操作和主编程操作,在缓冲编程操作中将存储在缓冲存储器中的数据存储到第一区域中,在主编程操作中将存储在第一区域中的数据存储到第二区域中;以及其中存储控制器基于在参考时间段期间处理的数据的吞吐量来改变缓冲编程操作和主编程操作的片上缓冲编程调度方式。
在一个实施例中,第一区域由每一个被指定为存储1-位数据的存储单元形成,而第二区域由每一个被指定存储M-位数据(M是3或更大的整数)的存储单元形成。
在一个实施例中,片上缓冲编程调度方式包括静态调度方式以及动态调度方式,在静态调度方式中根据给定顺序来依次执行缓冲编程操作和主编程操作,在动态调度方式中连续地执行缓冲编程操作而不执行主编程操作,根据动态调度方式将主编程操作延迟预定量并在缓冲编程操作的连续执行之后进行主编程操作。
在一个实施例中,基于在参考时间段期间处理的数据量来确定数据的吞吐量,而基于数据的吞吐量来确定数据存储设备的性能。当所确定的性能不满足数据存储设备的目标性能时选择动态调度方式,而当所确定的性能满足数据存储设备的目标性能时选择静态调度方式。
在一个实施例中,在其中连续地进行缓冲编程操作的预定时间段之后,进行根据动态调度方式延迟的主编程操作。
在一个实施例中,当对应于第一区域的最小编程单位的数据被存储在存储控制器的缓冲存储器中时,根据存储控制器的控制来触发缓冲编程操作,当对应于第二区域的最小编程单位的数据被存储在第一区域中时,根据存储控制器的控制来触发主编程操作,并且所述主编程操作包括1步编程操作、粗糙编程操作或精细编程操作中的至少一个。
在另一实施例中,一种数据存储设备中的编程方法包括:从第一缓冲器到第一存储单元区域存储数据页(page),从而执行第一编程阶段操作;从第一存储单元区域到第二存储单元区域存储数据页,从而执行第二编程阶段操作;测量数据存储设备的吞吐量性能;以及基于所测量的吞吐量性能,选择用于执行第一编程阶段操作和第二编程阶段操作的调度顺序。
附图说明
通过参考附图的以下描述,上述和其它目的和特征将变得明显,其中贯穿各种图的相似的参考数字指代相似的部分,除非指明并非如此,其中
图1A是示出依据示范性实施例的应用于多级存储设备的地址加扰方式的例子的图。
图1B是示出当根据3步编程法执行编程操作以在每一存储单元中存储4-位数据时的各种示范性阈值电压分布的图。
图1C是示出当依据3步编程法执行编程操作以在每一存储单元中存储3-位数据时的各种示范性阈值电压分布的图。
图2是示出依据示范性实施例的数据存储系统的框图。
图3是示出依据示范性实施例的图2中的存储控制器的框图。
图4是示出每单元存储3-位数据且应用了3步再编程方法的多位存储设备的示范性地址加扰方式的图。
图5是示出图4所示的数据存储系统的编程操作期间的示范性数据流的图。
图6是用于描述根据示范性实施例的、应用于数据存储设备的静态和动态调度方式的图。
图7是用于描述依据示范性实施例的、数据存储设备的性能感知(performance-aware)调度方式的流程图。
图8是用于描述依据示范性实施例的、数据存储设备的性能感知调度方式的图。
图9A到图9D是用于描述依据各种示范性实施例的、多位存储设备的第一和第二区域上的各种组合的图。
图10是示出其中4-位数据被存储在存储单元中而且使用了再编程方法的多位存储设备的另一地址加扰方式的图。
图11是用于描述依据示范性实施例的、数据存储设备的整体操作的图。
图12是示出依据示范性实施例的固态驱动的框图。
图13是示出依据示范性实施例的存储卡的框图。
具体实施方式
以下参照其中示出了各种实施例的附图更全面地描述本公开。然而,可以以很多不同的形式来具体化本发明构思,而不应该将其解释为限于在此阐述的实施例。在这些图中,为了明了而可能夸大层和区域的尺寸和相对尺寸。全文相似的数字指代相似的元件。这里使用的术语只用于描述特定实施例的目的,而不是意欲限制本发明构思。
可以理解,虽然这里可以使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该被这些词语所限制。这些词语只是用来将一个元件、组件、区域、层或部分与另一个区域、层或部分相区分。因此,以下讨论的第一元件、组件、区域、层或部分可以被称作第二元件、组件、区域、层或部分,而不脱离本公开的指导。
为了描述的简易性,这里可以使用空间相对词语,诸如“在下方”、“在……之下”、“更低”、“在……下面”、“在上方”、“更上”等,来描述图中示出的一个元件或特征与另一(些)元件或特征的关系。可以理解,除了图中描绘的方向,所述空间相对词语意欲涵盖设备在使用或操作中的不同方向。例如,如果将图中的设备翻转过来,那么被描述为在其它元件或特征“之下”或“下方”或“下面”的元件将朝向在其它元件或特征“之上”。因此,示范性术语“在……下方”和“在……之下”可以涵盖上面和下面两个方向。设备可以朝向其它(旋转90度或朝其它方向),并且相应地解释这里使用的空间相对描述符。此外,也可以理解,当一层被称为“在”两层“之间”时,它可以是所述两层之间的唯一一层,或者也可以存在一个或更多的中间层。
如这里所使用的,单数形式“一”、“一个”和“该”也意欲包括复数形式,除非上下文清楚地指出并非如此。还可以理解,当在本说明书中使用时,术语“包括了”、“包括”、“包含了”和/或“包含”指定存在所阐述的特征、整数、步骤、操作、元件和/或组件,但是不排除存在或添加一个或更多其它特征、整数、步骤、操作、元件、组件和/或其组。如这里所使用的,术语“和/或”包括一个或更多相关所列项目的任何及所有组合。
可以理解,当一个元件或层被称为“在另一元件或层上”、“连接到另一元件或层”、“耦接到另一元件或层”或“与另一元件或层相邻”时,它可以直接在另一元件或层上、直接连接到另一元件或层、直接耦接另一元件或层或直接与另一元件或层相邻,或者可以存在中间元件或层。相反,当一个元件被称为“直接在另一元件或层上”、“直接连接到另一元件或层”、“直接耦接到另一元件或层”或“与另一元件或层直接相邻”时,不存在中间元件或层。
除非另有定义,否则这里使用的所有术语(包括技术和科学术语)具有和本领域一个普通技术人员所理解的一样的意思。还可以理解,诸如常用词典中定义的词语应该被解释为具有与在相关领域和/或本说明书中上下文的意思一致的意思,而不应以理想化或过于形式化的意思来解释,除非这里清楚地定义的确如此。
随着在每一存储单元中存储的数据位数的增加,保证存储多位(或多级)数据的存储设备(以下称作多级存储设备)的可靠性越来越难。导致可靠性下降的因素中的代表性的一个可能是归因于相邻存储单元之间的耦合而导致的阈值电压的变化。例如,预先编程的存储单元的阈值电压可能由于当与已编程存储单元相邻的存储单元被编程时导致的耦合而变化。在图1A中,示出了为了有效管理耦合而应用于多级存储设备的地址加扰方式的例子。
将在3-位数据被存储在一个存储单元中的假设下描述地址加扰方式。为便于说明,在图1A中示出了存储设备的四条字线WL0到WL3。多个存储单元MC可以与每一字线连接。对于存储设备,可以执行1步编程操作(即第一编程操作步骤),其中,初始位数的数据、诸如2位数据(例如低2-位数据)被存储到第一字线WL0的每一存储单元中。也就是说,在1步编程操作期间,2页数据可以被存储到与第一字线WL0连接的存储单元中。在图1A中这可以由①代表。相继地,可以进行关于与第二字线WL1连接的存储单元的1步编程操作。在图1A中这可以由②代表。在执行关于与第二字线WL1连接的存储单元的1步编程操作之后,可以进行关于第一字线WL0的粗糙编程操作(或称作第二编程操作步骤或2步编程操作),该第一字线WL0位于第二字线WL1之下而且其中编程低2-位数据。这可以由③代表。在粗糙编程操作期间,数据的第3位(例如,高1-位数据)可以被存储到与第一字线WL0连接的存储单元。在对与第一字线WL0连接的存储单元的粗糙编程操作之后,可以进行关于第三字线WL2的1步编程操作。这可以由④代表。在第三字线WL2上的1步编程操作之后,可以在与第二字线WL1连接的存储单元中执行粗糙编程操作,以存储数据的第3位(例如,高1-位数据)。这可以由⑤代表。在第二字线WL1上的粗糙编程操作之后,可以执行关于第一字线WL0的精细编程操作(第三编程操作步骤)。这可以由⑥代表。以后根据上述编程顺序(参照图1A)可以依序执行1步、粗糙和精细编程操作。依据图1A所示编程顺序的字线选择方式可以称作地址加扰方式。
在示范性实施例中,在3-位数据被存储在一个存储单元中的假设下描述地址加扰方式。然而,本发明构思并不限于此。例如,除了在2步编程操作期间存储两页数据以外,当4-位数据被存储在一个存储单元时执行的编程操作可以类似于当3-位数据被存储在一个存储单元中时执行的编程操作,因此省略其描述。另外,编程字线的加扰顺序不需要遵循上面描述的模式。可以使用同样不遵循字线的连续顺序的其它模式。
如果完成了1步编程操作和粗糙编程操作,则可以形成相应于M-位数据(M是2或更大的整数)的所有的阈值电压分布(例如,2M个阈值电压分布)。虽然所有的阈值电压分布是在粗糙编程操作完成之时形成的,但是阈值电压分布之间的容限(margin)可能不足以精确区分阈值电压分布。可以执行精细编程操作以确保足够精确区分阈值电压分布的容限。可以执行精细编程操作来缩窄每一阈值电压分布的宽度。在精细编程操作期间,可以使用比在粗糙编程操作处使用的阈值电压分布的验证电压高预定电压的验证电压。通过上述编程方式,可以减小相邻存储单元之间的耦合的影响,该编程方式也被称作再编程方法或再编程算法。
在示范性实施例中,上述3-位数据再编程方法,也就是1步编程、粗糙编程、精细编程,可以被应用于其它数据尺寸的再编程方法,诸如,例如如2-位数据。
利用再编程方法,有必要保持数据被存储在任意字线的存储单元中,直到完成对所述任意字线的精细编程操作为止。例如,取决于从存储控制器提供给多位存储设备的数据,可以执行1步编程操作,并且取决于通过1步编程操作存储的数据和从存储控制器提供的数据,可以进行粗糙编程操作。取决于通过1步和粗糙编程操作存储的数据,可以执行精细编程操作。但是,如上描述,可能很难准确地读取通过1步和粗糙编程操作存储的数据。这意味着精细编程操作所必需的数据应该从存储控制器提供给多位存储设备。由于这个原因,存储控制器使得保持数据被存储在任意字线的存储单元中直到完成对所述任意字线的精细编程操作为止。结果,需要向存储控制器提供大缓冲存储器以保持精细编程操作所需要的数据。
图1B是示出当根据三步编程执行编程操作以在每一存储单元中存储4-位数据时的各种阈值电压分布的图。下面将参照附图更全面地描述跟据三步编程的编程方法。
首先,2-页数据(例如数据的第一和第二页,虽然可以使用其它页)可以被存储在选择的字线(例如图1A的WL0)的存储单元中。这时候,如图1B的框21所示,基于要编程的数据,可以将在对应于擦除状态E的阈值电压分布中的存储单元编程为具有其每个对应于编程状态Q1、Q2和Q3的阈值电压分布中的阈值电压。
如上描述,在相邻字线(例如WL1)中的存储单元的1步编程操作之后,可以执行字线(例如WL0)中的1步编程后存储单元的粗糙编程操作。这时候,如图1B中的框22所示,由于相邻字线(例如WL1)中的存储单元被编程时导致的耦合,字线(例如WL0)中的1步编程后存储单元的分布可能扩宽。
接着,2-页数据,例如数据的第三和第四页可以被存储到选择的字线WL0的存储单元中。这时候,如图1B的框23所示,对应于每一状态的阈值电压分布中的存储单元可以被编程为具有对应阈值电压分布中的阈值电压。例如,基于要编程的数据,对应于擦除状态E的阈值电压分布中的存储单元可以被编程为具有到编程状态P1’到P3’的对应阈值电压分布中的阈值电压。基于要编程的数据,对应于编程状态Q1的阈值电压分布中的存储单元可以被编程为具有到编程状态P4’到P7’的相应阈值电压分布中的阈值电压。基于要编程的数据,对应于编程状态Q2的阈值电压分布中的存储单元可以被编程为具有到编程状态P8’到P11’的对应阈值电压分布中的阈值电压。基于要编程的数据,对应于编程状态Q3的阈值电压分布中的存储单元可以被编程为具有到编程状态P12’到P15’的对应阈值电压分布中的阈值电压。
如上所述,在相邻字线(例如,WL2和WL1)上的1步编程操作和粗糙编程操作之后可以进行一字线(例如,WL0)中粗糙编程后的存储单元的精细编程操作。这时候,如图1B的框24所示,由于当相邻字线(例如,WL2和WL1)中的存储单元被编程时导致的耦合,字线(例如WL0)中的粗糙编程后的存储单元的分布可能扩宽。由于这个原因,当执行精细操作时可能很难从粗糙编程后的存储单元中精确地读取数据。
字线WL0中的存储单元可以被编程为具有最终的阈值电压分布P1到P15,如图1B的框25所示。这个操作可以称作精细编程操作。如上描述,精细编程操作可能需要使用先前编程的数据(例如,数据的第一到第四页)。因为很难从字线WL0中的存储单元中读取先前编程的数据,所以可以基于从存储控制器提供的数据(或者,由存储设备单独保存的数据)来进行精细编程操作。如图1B的框26所示,由于当相邻字线中的存储单元被编程时导致的耦合,精细编程后的存储单元的分布可能扩宽。
之后,将根据诸如示出的、例如在图1A中的编程顺序(或,次序)来进行每一字线上的1步编程操作、粗糙编程操作和精细编程操作,其可以以与图1B描述的一样的方式执行。
图1C是示出当依据三步编程来执行编程操作以在每一存储单元中存储3-位数据时的各种阈值电压分布的图。下面将参照附图更全面地描述依据三步编程的编程方法。
首先,2-页数据(例如,数据的第一和第二页,虽然可以使用其它页)可以被存储在选择的字线(例如,图1A的WL0)的存储单元中。这时候,如图1C的框31所示,基于要编程的数据,对应于擦除状态E的阈值电压分布中的存储单元可以被编程为具有其每个对应于编程状态Q1、Q2和Q3的阈值电压分布中的阈值电压。
如上所述,在一字线(例如,WL1)中的存储单元的1步编程操作之后可以执行相邻字线(例如,WL0)中的1步编程后的存储单元的粗糙编程操作。这时候,如图1C中框31的实线所示,由于当相邻字线(例如,WL1)中的存储单元被编程时导致的耦合,字线(例如,WL0)中的1步编程后的存储单元的分布可能扩宽。
接着,1-页数据可以被存储到选择的字线WL0的存储单元中。这时候,如图1C的框32所示,对应于每一状态的阈值电压分布中的存储单元可以被编程为具有对应阈值电压分布中的阈值电压。例如,基于要编程的数据,对应于擦除状态E的阈值电压分布中的存储单元可以被编程为具有到编程状态P1的对应阈值电压分布中的阈值电压。基于要编程的数据,对应于编程状态Q1的阈值电压分布中的存储单元可以被编程为具有到编程状态P2和P3的对应阈值电压分布中的阈值电压。基于要编程的数据,对应于编程状态Q2的阈值电压分布中的存储单元可以被编程为具有到编程状态P4和P5的对应阈值电压分布中的阈值电压。基于要编程的数据,对应于编程状态Q3的阈值电压分布中的存储单元可以被编程为具有到编程状态P6到P7的对应阈值电压分布中的阈值电压。
如上所述,在相邻字线(例如,WL2和WL1)的1步编程操作和粗糙编程操作之后可以进行字线(例如,WL0)的粗糙编程后的存储单元的精细编程操作。这时候,如图1C中框32的实线所示,由于当相邻字线(例如,WL2和WL1)中的存储单元被编程时导致的耦合,字线(例如,WL0)中粗糙编程后的存储单元的分布可能扩宽。由于这个原因,当执行精细编程时可能很难从粗糙编程后的存储单元中精确地读取数据。
字线WL0中的存储单元可以被编程为具有最终的阈值电压分布P1到P7,如图1C的框33中所示。这个操作可以被称作精细编程操作。如上所述,精细编程操作可能需要使用先前编程的数据(例如,数据的第一到第三页)。因为很难从字线WL0中的存储单元中读取先前编程的数据,所以可以基于从存储控制器提供的数据(或者,由存储设备单独保存的数据)来进行精细编程操作。如图1C的框33中的实线所示,由于当相邻字线中的存储单元被编程时导致的耦合,精细编程后的存储单元的分布可能扩宽。
之后,将根据示出的、例如在图1A中的编程顺序(或,次序)来进行每一字线上的1步编程操作、粗糙编程操作和精细编程操作,其可以以与图1C中描述的一样的方式执行。
图2是示出依据示范性实施例的数据存储系统的框图。
参照图2,数据存储系统1000可以包括:多位存储设备100作为非易失性存储设备;存储控制器200;和主机300。多位存储设备100可以由一个或更多的存储芯片形成。作为数据存储设备1100,多位存储设备100和存储控制器200可以构成存储卡、固态驱动(SSD)、记忆棒等。多位存储设备100可以包括多个存储块(或者,扇区/存储体(bank)),其中每一个具有按行和列布置的存储单元。每一存储单元可以存储多位(或,多级)数据。所述存储单元被布置为具有二维阵列结构或三维/纵向阵列结构。在美国专利申请No.7,812,390和No.7,646,664和美国专利公开No.2008/0023747和No.2008/0084729中公开了示范性的三维阵列结构,通过引用将其全部内容合并于此。
多位存储设备的存储块可以被划分成至少两个区域,即,第一区域101和第二区域102。在此,很好理解第一和第二区域101和102的划分是按逻辑进行的,而不必是物理上的。可以逻辑地改变第一和第二区域101和102的划分。在多位存储设备100由多个芯片或者一个或更多的芯片上的多个物理区域形成,则可以物理地划分两个区域。可以以不同于第二区域102中的存储块的方式来编程第一区域101中的存储块。例如,可以根据单位编程方式(以下称作SLC编程方式)来编程第一区域101中的存储块,而可以根据多位编程方式(例如,包括上述多步再编程方式中的步骤的方式)来编程第二区域102中的存储块。换言之,第一区域101中的每一存储单元可以被指定为存储并可以存储1-位数据,而第二区域102中的每一存储单元可以被指定为存储并可以存储M-位数据(M是2或更大的整数)。另外,与在第二区域102中的每一存储单元中存储的M-位数据(M是2或更大的整数)相比,第一区域101中的每一存储单元可以存储更少数目的数据位。
继续参照图2,存储控制器200可以被配置为响应于主机300的请求而控制多位存储设备100。存储控制器200可以包括缓冲存储器201。缓冲存储器201可以用来临时存储从主机300发送的数据和从多位存储设备100读出的数据。存储控制器200可以控制以静态调度方式和动态调度方式的多位存储设备100的编程操作。可以实时地进行静态和动态调度方式之间的切换。例如,可以根据数据存储设备1100的性能来实时地进行静态和动态调度方式之间的切换。例如,可以根据数据吞吐量/带宽来实时地确定数据存储设备1100的性能。但是,很好理解数据存储设备1100的性能并不限于此公开。
存储控制器200可以被配置为测量数据存储设备1100的性能。例如,可以使用给定时间(或,参考时间)期间处理的数据量的平均值来测量/确定数据存储设备1100的性能。存储控制器200可以基于所测量的性能来选择静态和动态调度方式中的一个,并可以根据所选择的调度方式来控制多位存储设备100。通过实时切换调度方式可以有效地管理数据处理性能。
使用静态调度方式,例如,如果第一区域101的最小编程单位的数据被存储在缓冲存储器201中,则存储控制器200可以控制多位存储设备100以便最小编程单位的数据被存储(或,编程)在第一区域101中。这可以被称作缓冲编程操作(BP)。如果在第一区域101处聚集(gather)第二区域102的最小编程单位的数据,则存储控制器200可以控制多位存储设备100以便第二区域102的最小编程单元的数据被存储(或,编程)在第二区域102中。这可以被称作主编程操作(MP)。所述缓冲编程操作和主编程操作可以形成片上缓冲编程(OBP)操作,下面将更全面地描述。
使用动态调度方式,可以连续地执行缓冲编程操作而不执行主编程操作。也就是说,与静态调度方式不同,如果选择了动态调度方式,则可以连续地执行第一区域101上的缓冲编程操作一预定时间段,而不执行第二区域102上的主编程操作。延迟第二区域102上的主编程操作的时间长度(即,预定时间段)可以以不同方式来选择,而且考虑到存储控制器200的各种限制会具有不同的量。例如,主编程操作的延迟时间可以考虑各种限制(例如,第一区域101的容量、目标性能等)来确定,并可以内部地和/或自动地设置,或基于运算符(operator)或用户输入。
如此,不同的调度方式在触发主编程操作的方式上各不相同。在静态调度中,例如,可以响应于对于特定字线(例如,目的在于特定地址的)的特定数据页被存储在第一区域101中而触发主编程操作,而在动态调度中,可以响应于计时器、数据的许多页当存储到第一区域101中或其它因素而触发主编程操作。
在示范性实施例中,取决于编程方式、每单元的位数(cell-per-bit number)等,可以不同地确定第一区域的最小编程单位和第二区域102的最小编程单位。第一区域101的最小编程单位可以不同于第二区域102的最小编程单位。
在示范性实施例中,可以通过经缓冲编程操作将数据存储在第一区域101中和经主编程操作将数据存储在第二区域102中来最小化存储控制器200的缓冲存储器201的尺寸。例如,可能不必在缓冲存储器201中为精细编程操作保存数据。因此,存储控制器200的缓冲存储器201的尺寸可以做得更小。另外,根据数据存储设备1100的性能,可以实时地将调度方式切换到动态调度方式或静态调度方式。
图3是示出依据示范性实施例的图2中的存储控制器的框图。
参照图3,存储控制器200可以包括主机接口210、存储器接口220、诸如CPU或微处理器的处理单元230、缓冲存储器240、错误控制单元250和ROM 260。
主机接口120可以被配置为与图2中的主机300接口,并且存储器接口220可以被配置为与图2中的多位存储设备100接口。处理单元230可以被配置为控制存储控制器200的整体操作。例如,处理单元230可以被配置为操作诸如存储在ROM 260中的快闪转换层(Flash Translation Lay,FTL)的固件。另外,处理单元230可以被配置为驱动存储于ROM 260中的用于性能监视的固件(FW)。处理单元230可以根据所测量的性能来选择一种调度方式。根据所测量的性能可以实时切换调度方式(即,动态和静态调度方式)。
在示范性实施例中,可以分别使用独立的软件来实现FTL功能和性能监视功能。可替代地,可以使用共用的软件来实现FTL功能和性能监视功能。不管怎样,所公开的实施例不限于此。
缓冲存储器240可以用于临时存储要经由主机接口210转移到主机300的数据。缓冲存储器240可以用于临时存储要经由存储器接口220写入多位存储设备100中的数据。ECC单元250可以被配置为编码要存储到多位存储设备100的数据对以及对从多位存储设备100中读取的数据解码。可以在多位存储设备100内提供ECC单元250。在这种情况下,可以在多位存储设备100内进行数据编码和解码,而不需要转移数据到存储控制器200。
在示范性实施例中,固件可以被存储在多位存储设备100中,而不是ROM 260中。
在示范性实施例中,主机接口210可以包含用于在主机300和存储控制器200之间执行数据交换的协议。例如,主机接口210可以被配置为经由诸如USB(通用串行总线)协议、MMC(多媒体卡)协议、PCI(外围组件互连)协议、PCI-E(PCI-express)协议、ATA(高级技术附加装置)协议、串行-ATA协议、并行-ATA协议、SCSI(小型计算机小型接口)协议、ESDI(加强型小型磁盘接口)协议、IDE(电子集成驱动器)协议等的各种接口协议中的至少一个与主机300通信。
图4是示出每单元存储3-位数据且应用了三步再编程方法的多位存储设备的示范性地址加扰方式的图,而图5是示出图4所示数据存储系统的编程操作期间的数据流的图。下面,将参照附图更全面地描述依据示范性实施例的数据存储系统的操作。
为了简化描述,如图4所示,假定每一存储块包含64条字线WL0到WL63且每一存储单元存储3-位数据。在这个假定下,每一存储块中存储了192页。
首先,如果第一区域101的最小编程单元的数据D0从主机300被转移到存储控制器200的缓冲存储器201,则可以根据存储控制器200的控制将存储在缓冲存储器201中的数据D0编程到多位存储设备100的第一区域101中。如上所述,可以通过SLC编程操作将数据D0编程到第一区域101中。如上所述,这可以被称作缓冲编程操作。存储控制器200可以判断在第一区域101处是否聚集了第二区域102的最小编程单元的数据,并可以根据判断结果来控制主编程操作。例如,可以根据页地址来判断在第一区域101处是否聚集了第二区域102的最小编程单元的数据。由于只有一页D0被存储在第一区域101中,所以可以不执行主编程操作。如果第一区域101的最小编程单元的数据D1被从主机300转移到存储控制器200的缓冲存储器201中,则可以根据存储控制器200的控制将存储在缓冲存储器201中的数据D1编程到多位存储设备100的第一区域101中。
如果第一区域101的最小编程单元的数据D2被从主机300转移到存储控制器200的缓冲存储器201中,则可以根据存储控制器200的控制将存储在缓冲存储器201中的数据D2编程到多位存储设备100的第一区域101中。由于在第一区域101处聚集了第二区域102的最小编程单元的数据(例如,1步编程操作所需的两页数据),所以存储控制器200接下来可以控制多位存储设备100以使存储在第一区域101中的数据D0和D2被存储到第二区域102中。也就是说,基于存储在第一区域101中的数据D0和D2,可以进行字线WL0上的1步编程操作。该1步编程操作可以包括:经由页缓冲器从第一区域101中读取数据D0;经由页缓冲器从第一区域101中读取数据D2;并将经由页缓冲器读取的数据D0和D2存储到第二区域102中。可以对于在1步编程操作期间读取的数据执行纠错操作。这可以通过将从第一区域101中读取的数据转移到存储控制器200并将由存储控制器200纠正的数据加载到页缓冲器来完成。可以每当从第一区域101中读出数据时进行纠错操作。
如果第一区域101的最小编程单元的数据D3被从主机300转移到存储控制器200的缓冲存储器201,则可以根据存储控制器200的控制将存储在缓冲存储器201中的数据D3编程到多位存储设备100的第一区域101中。如果第一区域101的最小编程单元的数据D4被从主机300转移到存储控制器200的缓冲存储器201中,则可以根据存储控制器200的控制将存储在缓冲存储器201中的数据D4编程到多位存储设备100的第一区域101中。由于在第一区域101处聚集了第二区域102的最小编程单元的数据(例如,1步编程操作所需的两页数据),所以存储控制器200可以控制多位存储设备100以使存储在第一区域101中的数据D1和D4被存储到第二区域102中。也就是说,基于存储在第一区域101中的数据D1和D4,可以执行字线W1上的1步编程操作。
如上所述,如果第一区域101的最小编程单元的数据被存储在缓冲存储器201中,则可以在存储控制器200的控制下将存储在缓冲控制器201中的数据编程到多位存储设备100的第一区域101中。数据可以通过SLC编程操作被存储到第一区域101中。如果第一区域101的最小编程单元的数据Di(i是0到191)被存储在缓冲存储器201中,如图5中描述,则可以在存储控制器200的控制下通过SLC编程操作将存储在缓冲存储器201中的数据编程到多位存储设备100的第一区域101中。连同判断关于第一区域101的最小编程单元的数据是否被存储在缓冲存储器201中,存储控制器200可以判断在第一区域101处是否聚集了第二区域102的最小编程单元的数据。取决于判断结果,存储控制器200可以控制第二区域102上的1步编程操作、粗糙编程操作或精细编程操作,下面将更加详细地描述。
可以以图4所示的地址加扰方式来确定第二区域102上的1步编程操作、粗糙编程操作或精细编程操作。例如,倘若D0和D2数据被存储在第一区域101中,则取决于被存储在第一区域101中的D0和D2数据,可以执行字线WL0上的1步编程操作。如果D1和D4数据被存储在第一区域101处,则可以执行字线WL1上的1步编程操作。也就是说,取决于存储在第一区域101中的D1和D4数据,可以执行字线WL1上的1步编程操作。
随后,如果D5数据被存储在第一区域101中,则取决于存储在第一区域101中的D0、D2和D5数据,可以执行字线WL0上的粗糙编程操作。当D3和D7数据被存储在第一区域101中时,取决于存储在第一区域101中的D3和D7数据,可以进行字线WL2上的1步编程操作。倘若D8数据被存储在第一区域101中,则取决于存储在第一区域101中的D1、D4和D8数据,可以执行字线WL1上的粗糙编程操作。在取决于存储在第一区域101中的D1、D4和D8数据执行字线WL1上的粗糙编程操作之后,可以取决于存储在第一区域101中的D0、D2和D5数据进行字线WL0上的精细编程操作。以后,直到D191数据被存储在第一区域101中为止,可以按与D3和D7数据的1步编程操作、D1、D4和D8数据的粗糙编程操作以及D0、D2和D5数据的精细编程操作一样的顺序来在第二区域102中存储剩余的数据D10到D190。
在D191数据被存储在第一区域101中的情况下,取决于存储在第一区域101中的D186、D189和D191数据,可以执行字线WL63上的粗糙编程操作。在取决于存储在第一区域101中的D186、D189和D191执行字线WL63上的粗糙编程操作之后,取决于存储在第一区域101中的D183、D187和D190数据,可以进行字线WL62上的精细编程操作。最终,取决于存储在第一区域101中的D186、D189和D191数据,可以进行字线WL63上的精细编程操作。
如从图5理解的,取决于要存储在第一区域101中的数据,诸如要存储在第一区域101中的数据的页地址,可以判断如下:SLC编程操作(例如,第一编程模式);SLC和1步编程操作的集合(例如,第二编程模式);SLC和粗糙编程操作的集合(例如,第三编程模式);SLC、粗糙和精细编程操作的集合(例如,第四编程模式);以及SLC、粗糙、精细和精细编程操作集合(例如,第五编程模式)。例如,当从存储控制器200向多位存储设备100提供对应的命令时,可以执行SLC编程操作、1步编程操作、粗糙编程操作或精细编程操作。可替代地,可以向多位存储设备100提供指示编程样式的命令集,并且多位存储设备100可以根据该命令集自动执行一套操作。编程样式可以由如下组成:SLC编程操作;SLC和1步编程操作的集合;SLC和粗糙编程操作的集合;SLC、粗糙和精细编程操作的集合;或SLC、粗糙、精细和精细编程操作的集合。根据地址加扰方式、每单元位数等可以改变编程模式中的编程操作的集合。
在某些实施例中,多位存储设备的地址加扰方式不限于图4所示的地址加扰方式。
图4和图5中描述的片上缓冲编程操作可以对应于静态调度方式。例如,每当在第一区域101处聚集了第二区域102上的最小编程单元的数据,可以进行主编程操作。如上描述,在连续执行缓冲编程操作期间延迟的主编程操作可以在预定时间期间延迟。例如,可以在预定时间之后进行延迟的主编程操作。该片上缓冲编程操作可以对应于动态调度方式。下面,将更全面地描述动态和静态调度方式。
图6是用于描述根据示范性实施例的、应用于数据存储设备的静态和动态调度方式的图。
依据示范性实施例的片上缓冲编程操作可以包括缓冲编程操作和主编程操作。可以进行缓冲编程操作以将存储在缓冲存储器201中的数据(例如,1-页数据)存储到多位存储设备100的第一区域101中。可以进行主编程操作以将存储在多位存储设备100的第一区域101中的数据(例如,1步编程中的2-页数据或者粗糙或精细编程中的3-页数据)存储到多位存储设备100的第二区域102中。
在动态调度方式的情况下,如图6所示,可以在预定时间期间连续地进行缓冲编程操作。对经由连续缓冲编程操作存储在第一区域101中的数据的主编程操作可以被迟延。在某个时间段内,可以进行缓冲编程操作而不执行散布在缓冲编程操作步骤之间的主编程操作。如果根据动态调度方式进行片上缓冲编程操作,则编程性能在缓冲编程操作处可以被最大化,而编程性能(或,数据存储设备1100的性能)在主编程操作处可能恶化。在使用动态调度方式进行片上缓冲编程操作的情况下,第一区域101应该被配置为具有更大的容量。
在静态调度方式的情况下,如图6所示,当第一区域101的最小编程单元的数据被存储在缓冲存储器201时可以进行缓冲编程操作。当在第一区域101中聚集了第二区域102的最小编程单元的数据时可以执行主编程操作。与动态调度方式不同,可能不会产生主编程操作的延迟。在使用静态调度方式进行片上缓冲编程操作的情况下,第一区域101可以被配置为具有更小的容量。
如上讨论的,字线的编程包括可以遵循加扰方式的多重编程步骤。在那些多重步骤中,那些步骤中的多个可以对应于对于特定字线的编程阶段。例如,对第一字线的第一编程阶段可以包括一个或更多的SLC编程操作(例如,缓冲编程操作),例如,其中各个页被存储在第一区域101中。对那条字线的第二编程阶段可以包括一个或更多的MLC编程操作(例如,主编程操作),其中存储在第一区域101中的一页或更多页数据被编程到第二区域102中。第二编程阶段可以包含子阶段。例如,第一子阶段可以包括前面描述的1步编程操作,例如,其中存储在第一区域101中的两页数据被编程到第二区域102的字线。第二子阶段可以包括粗糙编程操作,例如,其中存储在第一区域101中的一页或更多额外页被编程到已经经历了编程的第一子阶段的第二区域102的字线。额外的编程子阶段可以包括精细编程。
在其中使用静态调度方式的一个实施例中,对每一要编程的字线,通过特定第一编程阶段操作的完成来触发第二编程阶段操作。例如,在一个实施例中,只要作为第一编程阶段操作的结果,足够的页数被存储在第一区域101中以满足编程到第二区域的最小页面需求,则对存储设备执行的下一编程步骤是对那条字线的第二阶段编程操作。例如,对于上述3-位存储设备,只要关于字线的两页被存储在第一区域中,则对该存储设备的随后的编程步骤可以包括执行包含将所述两页1步编程到第二区域102中的第一子阶段编程。另外,在已发生1步编程之后,只要关于所述字线的第三页稍后被存储在第一区域中,则对该存储设备的随后的编程步骤可以包括执行包含使用前两页和第三页的粗糙编程的第二子阶段编程。
在其中使用动态调度方式的一个实施例中,对每一要编程的特定字线,基于计时器或其它测量来触发第二编程阶段操作。例如,在一个实施例中,当作为第一编程阶段操作的结果,足够数量的页被存储在第一区域101中以满足第二阶段操作中编程到第二区域的最小页面需求时,对该存储设备执行的下一编程步骤不必是对那条字线的第二阶段编程操作。相反,下一编程步骤可以包括存储额外页到第一区域中,例如,用于其它字线且也用于特定字线。可替代地,可以是并非在特定时间段之后,而是在已填满第一区域101中特定量的存储单元/字线之后,或基于与第二区域102的最小页尺寸无关的某些其它准则,可以发生第二阶段编程步骤(或多个)。在符合所述准则(例如,预定时间段)之后,接着下面的一系列的编程步骤是诸如1步操作、粗糙编程操作和精细编程操作的第二阶段编程操作。
对于动态调度,可以使用第二准则(例如,第二时间段、第一区域101中可用于编程的字线的阈值数目等)来确定何时再继续第一阶段编程步骤。第一阶段编程和第二阶段编程的这种循环可以以一种连续的方式接着重复。
动态调度方式可以适合于提高性能(例如,编程性能),而静态调度方式可以适合于维持平均编程性能。因此,可以通过根据数据存储设备1100的性能选择性地使用上述动态和静态调度方式来有效地管理数据存储设备1100的性能。
图7是用于描述依据示范性实施例的、数据存储设备的性能感知调度方式的流程图。下面,将参照附图更加全面地描述依据示范性实施例的数据存储设备的性能感知调度方式。
参照图7,在步骤S110中,可以测量数据存储设备1100的性能。例如,可以基于在给定时间期间处理的数据量来进行性能的测量。可以将给定时间期间处理的数据量称作“数据吞吐量“。在操作S120中,可以判断数据吞吐量是否满足目标性能。
如果判断数据吞吐量满足目标性能,则在操作S130中可以选择静态调度方式作为调度方式。当选择静态调度方式时,一旦关于特定字线的第一区域101的最小编程单元的数据被存储到缓冲存储器201中,就可以执行缓冲编程操作,而一旦在第一区域101中聚集了关于特定字线的第二区域102的最小编程单元的数据,就可以执行主编程操作。
如果判断数据吞吐量不满足目标性能,则在操作S140中可以选择动态调度方式作为调度方式。当选择动态调度方式时,可以执行缓冲编程操作一连续的时间段。在这种情况下,可以延迟对经由缓冲编程操作存储在第一区域101中的数据的主编程操作。可以单独执行缓冲编程操作,而不被主编程操作的执行打断。可以由存储控制器200考虑到各种限制来进行延迟的主编程操作。
在示范性实施例中,可以定期地、以规律的时间间隔来进行图7描述的调度切换操作,诸如用于确定是否满足目标性能的步骤。
图8是用于描述依据示范性实施例的、数据存储设备的性能感知调度方式的图。在图8中,横轴表示时间,纵轴表示带宽。
例如,可以使用带宽(或,数据吞吐量)来测量数据存储设备1100的性能。数据存储设备1100可以具有一个最大带宽。在一个实施例中,数据存储设备1100的目标性能可以被设置为高于允许的最小希望带宽一定带宽容限的目标带宽。可以在生产阶段设置或在操作期间动态地设置最小希望带宽和目标带宽,或者由设备1100自动地设置或者由用户或操作者手工地设置。最小希望带宽可以被设置为例如如下的量:低于这个量则客户对产品的满意度就会受到影响、可以基于某些工业标准或其它因素的量。在一个实施例中,示范性最小希望带宽被设置为6MB/s,而目标带宽被设置为高于最小希望带宽的6.5MB/s。不管怎样,用于测量数据存储设备1100的性能的带宽不限于这些例子。例如,数据存储设备1100的目标性能(即,目标阈值带宽)可以被设置为接近或就是设备1100的最大带宽。
如图8中所示,数据存储设备1100的性能(或,带宽)可以随着时间的变化而变化。在数据吞吐量满足目标性能的第一时段P1的情形中,可以使用静态调度方式来执行片上缓冲编程操作。当使用静态调度方式执行片上缓冲编程操作时,数据吞吐量可能减少。如果判断数据吞吐量不满足目标性能了,则片上缓冲编程操作被可以切换为使用动态调度方式来执行。在这种情况下,由于延迟了主编程操作,所以数据吞吐量可以增加。在一个实施例中,使用动态调度方式直到数据吞吐量经动态调度方式增加了一定量(例如,在目标性能阈值之上,或达到目标性能阈值之上的更高的阈值)为止,在这个时刻可以再次切换片上缓冲编程操作以通过静态调度方式来执行片上缓冲编程操作。之后,可以基于数据吞吐量来实时地进行调度方式的切换。
在示范性实施例中,数据吞吐量可以指示在预定时间段期间处理的数据的平均量。例如,在应主机300的写入请求输入的数据被存储到多位存储设备100之后,数据存储设备1100可以向主机300发送对写入请求的响应。这时候,可以基于写入请求与响应之间的时间以及写入请求的数据量来计算数据吞吐量的单个数据点。可以使用在预定时间段期间进行的对于写入请求的数据吞吐量的平均值来判断数据吞吐量是否满足目标性能。
图9A到图9D是用于描述依据各种示范性实施例的、多位存储设备的第一和第二区域上的各种组合的图。在这些图中,“BP”可以指示第一区域101上的缓冲编程,而“MP”可以指示第二区域102上的主编程。
如上描述,多位存储设备100可以包括第一区域101和第二区域102。在此,第一和第二区域101和102可以组成多位存储设备100的存储单元阵列。虽然图中没有示出,但是存储单元阵列可以包括诸如元数据区域、保留区域等的另外的区域。很好理解存储单元阵列的区域是被逻辑划分的,而不必是物理上的。这意味着根据存储控制器200的地址映射来定义存储单元阵列的这样的区域。
参照图9A,在每单元存储3-位数据的多位存储设备的情况下,第一区域101可以由每个存储1-位数据的存储单元形成,而第二区域102可以由每个存储3-位数据的存储单元形成。在这种情况下,可以根据SLC编程方式来执行缓冲编程,并可以根据上述MLC编程方式来进行主编程。
参照图9B,在每单元存储4-位数据的多位存储设备的情况下,第一区域101可以由每个存储1-位数据的存储单元形成,而第二区域102可以由每个存储4-位数据的存储单元形成。在这种情况下,可以根据SLC编程方式来执行缓冲编程,并可以根据上述MLC编程方式来进行主编程。
参照图9C,在每单元存储3-位数据的多位存储设备的情况下,第一区域101可以由每个存储2-位数据的存储单元形成,而第二区域102可以由每个存储3-位数据的存储单元形成。在这种情况下,可以根据上述或传统的MLC编程方式来执行缓冲编程,并可以根据上述MLC编程方式(例如,再编程方式)来进行主编程。
参照图9D,在每单元存储4-位数据的多位存储设备的情况下,第一区域101可以由每个存储2-位数据的存储单元形成,而第二区域102可以由每个存储4-位数据的存储单元形成。在这种情况下,可以根据上述或传统的MLC编程方式来执行缓冲编程操作,并可以根据上述MLC编程方式(例如,再编程方式)来进行主编程。
在示范性实施例中,很好理解图9A到图9D中所示的第一和第二区域101和102的定义不限于此公开。例如,如果在数据存储设备中包含的存储介质由多个多位存储设备形成,则可以关于各个多位存储设备来定义第一和第二区域101和102。可替代地,可以针对多位存储设备中的任何一个来定义第一区域101。可替代地,任何一个多位存储设备可以被定义成第一区域101。
图10是示出其中4-位数据被存储在存储单元中而且使用再编程方法的多位存储设备的另一地址加扰方式的图。
图10所示的地址加扰方式可以应用于每单元存储4-位数据的多位存储设备。使用图10中所示的地址加扰方式的数据存储系统可以类似于上述数据存储系统而操作。例如,当第一区域101上的最小编程单元的数据被存储在缓冲存储器201中时,存储控制器200可以控制多位存储设备100以使得存储在缓冲存储器201中的数据被编程到第一区域101中。同样地,存储控制器200可以判断在第一区域101中是否准备好了第二区域102上的最小编程单元的数据,并根据判断来控制多位存储设备100从而执行1步编程操作、粗糙编程操作和精细编程操作。可以基于页地址信息根据图10中的样式来进行这些操作。
图11是用于描述依据示范性实施例的、数据存储设备的全部操作的图。
参照图11,性能监视块2010可以测量数据吞吐量(或,带宽)。该数据吞吐量可以是预定时间段期间处理的数据的平均值。调度器(scheduler)2020可以基于由性能监视块2010测量的数据吞吐量而选择静态和动态调度方式中的一个。也就是说,可以实时地进行静态和动态调度方式之间的切换。在选择静态调度方式的情况下,可以执行缓冲编程操作BP和主编程操作MP。为便于说明,示范地示出了这种情形:轮流执行缓冲编程操作BP和主编程操作MP,使得当已经在第一存储区域中存储了足够数量的数据页时触发主编程操作以编程第二存储区域中的字线。可以根据图4和图5中描述的地址加扰方式来确定缓冲编程操作BP和主编程操作MP的顺序。如果选择了动态调度方式,如图11所示,则例如可以执行一套缓冲编程操作一预定时间段,然后可以进行一套主编程操作。
在示范性实施例中,性能监视块2010和调度器2020可以由硬件实现。可替代地,性能监视块2010和调度器2020的功能可以由处理单元230驱动的固件或软件实现。可替代地,性能监视块2010和调度器2020的功能可以通过硬件、固件和软件的组合实现。
图12是示出依据示范性实施例的固态驱动的框图。
参照图12,固态驱动(SSD)3000可以包括存储介质3100和控制器3200。存储介质3100可以经由多个信道(其中每个信道通常与多个非易失性存储设备连接)连接到控制器3200。每一非易失性存储设备可以由诸如结合图2所描述的存储器形成。控制器3200可以被配置为根据考虑性能而实时确定的调度方式(例如,静态调度方式或动态调度方式)来执行片上缓冲编程操作。可以经由片上缓冲编程操作最小化在控制器3200中包含的缓冲存储器的尺寸并经由性能感知调度方式来有效地管理性能。
图13是示出依据示范性实施例的存储卡的框图。
存储卡,例如,可以是MMC卡、SD卡、多用途卡、微SD卡、记忆棒、压缩(compact)SD卡、ID卡、PCMCIA卡、SSD卡、芯片卡、智能卡、USB卡等。
参照图13,根据某些实施例存储卡可以包括:接口电路4221,用于接与外部设备接口;控制器4222,包括缓冲存储器并控制存储卡的操作;以及至少一个非易失性存储设备4207。控制器4222可以是被配置为控制非易失性存储设备4207的写入和读取操作的处理器。特别地,控制器4222可以经由数据总线和地址总线与非易失性存储设备4207和接口电路4221耦合。控制器4222和非易失性存储设备4207可以分别对应于图2描述的存储控制器200和多位存储设备100。控制器4222可以被配置为根据考虑性能而实时确定的调度方式(例如,静态调度方式或动态调度方式)来执行片上缓冲编程操作。可以经由片上缓冲编程操作来最小化在控制器4222中包含的缓冲存储器的尺寸且经由性能感知调度方式来有效管理性能。
在示范性实施例中,存储单元可以由具有电荷存储层的各种单元结构之一形成。具有电荷存储层的单元结构可以包括使用电荷俘获(trap)层的电荷俘获快闪(flash)结构、其中在多层中堆放阵列的堆栈快闪结构、源极-漏极自由(source-drain free)快闪结构、插针型(pin-type)快闪结构等。
在美国专利申请No.6,858,906、No.7,253,467和美国专利公开No.2004/0169238和No.2006/0180851中公开了具有电荷俘获快闪结构作为电荷存储层的存储设备,通过引用将其全部内容合并于此。在韩国专利申请No.673020中公开了源极-漏极自由快闪结构,通过引用将其全部内容合并于此。
可以使用各种类型的封装(package)来封装依据所公开的实施例的存储设备和/或存储控制器。例如,可以使用诸如如下的封装来封装依据发明构思的非易失性存储设备或存储控制器:PoP(Package on Package,层叠封装)、球栅阵列(Ball grid array,BGA)、芯片尺寸封装(Chip scale package,CSP)、塑料带引线芯片载体(Plastic Leaded Chip Carrier,PLCC)、塑料双列直插封装(Plastic Dual In Line Package,PDIP)、叠片内裸片封装(Die in WafflePack)、晶片内裸片形式(Die in Wafer Form)、板上芯片(Chip On Board,COB)、陶瓷双列直插封装(Ceramic Dual In-Line Package,CERDIP)、塑料标准四边扁平封装(Metric Quad Flat Pack,MQFP)、薄型四边扁平封装(ThinQuad Flatpack,TQFP)、小外型IC(Small Outline IC,SOIC)、缩小型小外型封装(Shrink Small Outline Package,SSOP)、薄型小外型封装(Thin SmallOutline,TSOP)、薄型四边扁平封装(Thin Quad Flatpack,TQFP)、系统级封装(System In Package,SIP)、多芯片封装(Multi Chip Package,MCP)、晶片级结构封装(Wafer-level Fabricated Package,WFP)、晶片级处理堆叠封装(Wafer-Level Processed Stack Package,WSP),等等。
上面公开的主题内容应被认为是说明性的而不是限制性的,且所附权利要求意欲覆盖落入真实的精神和范围内的所有这样的修改、改进和其它实施例。所以,所述范围将由下述权利要求及其等价物所允许的最广泛的解释确定,而不应该被前面的具体描述约束或限制。
对相关申请的交叉引用
本申请要求于2011年6月14日提交的韩国专利申请No.10-2011-0057432的优先权,通过引用将其全部内容合并于此。
Claims (20)
1.一种用于包括多位存储设备和存储控制器的数据存储设备的片上缓冲编程方法,该片上缓冲编程方法包括:
测量数据存储设备的性能;
判断所测量的性能是否满足数据存储设备的目标性能;以及
根据判断结果选择多个调度方式中的一个作为数据存储设备的片上缓冲编程调度方式。
2.如权利要求1所述的片上缓冲编程方法,其中,片上缓冲编程调度方式包括缓冲编程操作和主编程操作,并且所述多个调度方式包括:静态调度方式,在其中根据给定顺序依次执行缓冲编程操作和主编程操作;及动态调度方式,在其中连续地执行缓冲编程操作而不执行主编程操作,在连续执行缓冲编程操作之后进行动态调度方式的延迟的主编程操作。
3.如权利要求2所述的片上缓冲编程方法,其中,在连续进行缓冲编程操作的预定时间段之后进行根据动态调度方式的延迟的主编程操作。
4.如权利要求2所述的片上缓冲编程方法,其中,多位存储设备包括被定义为第一区域和第二区域的存储单元阵列,该第一区域由每个被指定为存储1-位数据的存储单元形成,而该第二区域由每个被指定为存储M-位数据(M是3或更大的整数)的存储单元形成。
5.如权利要求4所述的片上缓冲编程方法,其中,当对应于第一区域的最小编程单元的数据被存储到存储控制器的缓冲存储器中时,根据存储控制器的控制来触发缓冲编程操作;当对应于第二区域的最小编程单元的数据被存储到第一区域中时,根据存储控制器的控制来触发主编程操作,并且主编程操作包括1步编程操作、粗糙编程操作或精细编程操作中的至少一个。
6.如权利要求4所述的片上缓冲编程方法,其中,主编程操作包括用于从第一区域中读取数据的单位读取操作和用于将从第一区域中读取的数据存储到第二区域中的多位编程操作,根据主编程操作而迭代进行单位读取操作。
7.如权利要求1所述的片上缓冲编程方法,其中,基于在参考时间段期间处理的数据量来确定数据存储设备的性能。
8.如权利要求1所述的片上缓冲编程方法,其中,目标性能是预定最小吞吐量阈值,并且如果所测量的性能低于数据存储设备的目标性能,则选择动态调度方式。
9.如权利要求8所述的片上缓冲编程方法,其中,如果所测量的性能高于数据存储设备的目标性能,则选择静态调度方式。
10.一种数据存储设备,包括:
多位存储设备,具有被定义为第一区域和第二区域的存储单元阵列;及
存储控制器,具有缓冲存储器并被配置为控制多位存储设备,
其中,存储控制器控制多位存储设备以执行缓冲编程操作和主编程操作,在缓冲编程操作中将存储在缓冲存储器中的数据存储到第一区域中,在主编程操作中将存储在第一区域中的数据存储到第二区域中;以及
其中,基于在参考时间段期间处理的数据的吞吐量,存储控制器改变缓冲编程操作和主编程操作的片上缓冲编程调度方式。
11.如权利要求10所述的数据存储设备,其中,第一区域由每个被指定用于存储1-位数据的存储单元形成,而第二区域由每个被指定用于存储M-位数据(M是3或更大的整数)的存储单元形成。
12.如权利要求11所述的数据存储设备,其中,片上缓冲编程调度方式包括:静态调度方式,其中根据给定顺序依次执行缓冲编程操作和主编程操作;及动态调度方式,其中连续地执行缓冲编程操作而不执行主编程操作,主编程操作根据动态调度方式主编程操作被延迟预定量并在连续执行缓冲编程操作之后进行。
13.如权利要求12所述的数据存储设备,其中,基于在参考时间段期间处理的数据量来确定数据的吞吐量,并基于数据的吞吐量来确定数据存储设备的性能,以及
其中,当所确定的性能不满足数据存储设备的目标性能时选择动态调度方式,而当所确定的性能满足数据存储设备的目标性能时选择静态调度方式。
14.如权利要求12所述的数据存储设备,其中,在其中连续进行缓冲编程操作的预定时间段之后进行根据动态调度方式的延迟的主编程操作。
15.如权利要求12所述的数据存储设备,其中,当对应于第一区域的最小编程单元的数据被存储到存储控制器的缓冲存储器中时,根据存储控制器的控制来触发缓冲编程操作;当对应于第二区域的最小编程单元的数据被存储到第一区域中时,根据存储控制器的控制来触发主编程操作,并且主编程操作包括1步编程操作、粗糙编程操作或精细编程操作中的至少一个。
16.一种在数据存储设备中编程的方法,包括:
将来自第一缓冲器的数据页存储到第一存储单元区域中,从而执行第一编程阶段操作;
将来自第一存储单元区域的数据页存储到第二存储单元区域中,从而执行第二编程阶段操作;
测量数据存储设备的吞吐量性能;并且
基于所测量的吞吐量性能,选择用于执行第一编程阶段操作和第二编程阶段操作的调度顺序。
17.如权利要求16所述的方法,其中,第一存储单元区域包括被指定用于存储1-位数据的存储单元,而第二存储单元区域包括被指定用于存储3-位或更高位数据的存储单元。
18.如权利要求16所述的方法,其中,选择调度顺序的步骤包括:
在第一调度顺序和第二调度顺序中选择,在第一调度顺序中由特定第一编程阶段操作的完成来触发第二编程阶段操作的执行,而在第二调度顺序中基于预定时间段或能够在第一存储单元区域中编程的页的量来触发第二编程阶段操作的执行。
19.如权利要求18所述的方法,还包括:
当所测量的吞吐量性能低于阈值时,从第一调度顺序切换到第二调度顺序。
20.如权利要求18所述的方法,其中,第二编程阶段操作包括如下中的一个或多个:1步编程操作,包括将至少两位数据编程到正被编程的每一存储单元中;粗糙编程操作,包括将至少三位数据编程到正被编程的每一存储单元中;及精细编程操作,包括将至少三位数据编程到正被编程的每一存储单元中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110057432A KR101785007B1 (ko) | 2011-06-14 | 2011-06-14 | 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온-칩 버퍼 프로그램 방법 |
KR10-2011-0057432 | 2011-06-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102831076A true CN102831076A (zh) | 2012-12-19 |
CN102831076B CN102831076B (zh) | 2017-12-05 |
Family
ID=47334222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210196929.7A Active CN102831076B (zh) | 2011-06-14 | 2012-06-14 | 具有多位存储设备的数据存储系统及其片上缓冲编程方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9026749B2 (zh) |
KR (1) | KR101785007B1 (zh) |
CN (1) | CN102831076B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104425020A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104425019A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN107980126A (zh) * | 2015-06-05 | 2018-05-01 | 桑迪士克科技有限责任公司 | 多裸芯储存装置的调度方案 |
US9977714B2 (en) | 2013-08-23 | 2018-05-22 | Silicon Motion, Inc. | Methods for programming a storage unit of a flash memory in multiple stages and apparatuses using the same |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454443B1 (en) | 2013-01-24 | 2016-09-27 | Seagate Technology Llc | Managed reliability of data storage |
KR102096285B1 (ko) * | 2013-07-30 | 2020-04-02 | 삼성전자주식회사 | 메모리 시스템 및 그것의 프로그램 방법 |
TWI552160B (zh) * | 2013-08-23 | 2016-10-01 | 慧榮科技股份有限公司 | 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 |
KR102295223B1 (ko) * | 2015-01-13 | 2021-09-01 | 삼성전자주식회사 | 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치 |
JP6453718B2 (ja) * | 2015-06-12 | 2019-01-16 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
US10134473B1 (en) * | 2016-05-19 | 2018-11-20 | Vexata, Inc. | Input output scheduling for solid state media |
US10140181B1 (en) | 2016-05-19 | 2018-11-27 | Vexata, Inc. | Endurance aware raid scheme for flash based SSDS with FPGA optimized implementation |
CN106775484A (zh) * | 2016-12-26 | 2017-05-31 | 中国航空工业集团公司西安飞机设计研究所 | 一种NvRam存储管理方法 |
US10032511B1 (en) | 2017-05-18 | 2018-07-24 | Macronix International Co., Ltd. | Memory with dynamic permissible bit write logic and method |
US10714169B1 (en) * | 2019-06-11 | 2020-07-14 | Sandisk Technologies Llc | System and method for programming non-volatile memory during burst sequential write |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136522A1 (en) * | 2005-12-08 | 2007-06-14 | Masaya Umemura | Information processing apparatus, media player and method for controlling a storage device |
CN101403984A (zh) * | 2007-10-01 | 2009-04-08 | 国际商业机器公司 | 收集转储数据的设备和方法 |
US7706181B2 (en) * | 2007-05-02 | 2010-04-27 | Samsung Electronics Co., Ltd. | Multi-bit programming device and method using single-bit memory cells |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930167A (en) | 1997-07-30 | 1999-07-27 | Sandisk Corporation | Multi-state non-volatile flash memory capable of being its own two state write cache |
US6684306B1 (en) | 1999-12-16 | 2004-01-27 | Hitachi, Ltd. | Data backup in presence of pending hazard |
US20060180851A1 (en) | 2001-06-28 | 2006-08-17 | Samsung Electronics Co., Ltd. | Non-volatile memory devices and methods of operating the same |
US7253467B2 (en) | 2001-06-28 | 2007-08-07 | Samsung Electronics Co., Ltd. | Non-volatile semiconductor memory devices |
DE10228768A1 (de) | 2001-06-28 | 2003-01-16 | Samsung Electronics Co Ltd | Nicht-flüchtige Floating-Trap-Halbleiterspeichervorrichtungen, die Sperrisolationsschichten mit hohen Dielektrizitätskonstanten enthaltend, und Verfahren |
JP4410188B2 (ja) | 2004-11-12 | 2010-02-03 | 株式会社東芝 | 半導体記憶装置のデータ書き込み方法 |
US7130210B2 (en) | 2005-01-13 | 2006-10-31 | Spansion Llc | Multi-level ONO flash program algorithm for threshold width control |
KR100634458B1 (ko) | 2005-07-04 | 2006-10-16 | 삼성전자주식회사 | 단일의 페이지 버퍼 구조로 멀티-비트 및 단일-비트프로그램 동작을 수행하는 플래시 메모리 장치 |
JP4679490B2 (ja) | 2005-11-11 | 2011-04-27 | 株式会社東芝 | 半導体記憶装置 |
KR100673020B1 (ko) | 2005-12-20 | 2007-01-24 | 삼성전자주식회사 | 전계효과 소오스/드레인 영역을 가지는 반도체 장치 |
JP4805696B2 (ja) | 2006-03-09 | 2011-11-02 | 株式会社東芝 | 半導体集積回路装置およびそのデータ記録方式 |
JP2007305210A (ja) | 2006-05-10 | 2007-11-22 | Toshiba Corp | 半導体記憶装置 |
KR100813618B1 (ko) | 2006-07-25 | 2008-03-17 | 삼성전자주식회사 | 3차원 어레이 구조를 갖는 반도체 메모리 장치 |
US7646664B2 (en) | 2006-10-09 | 2010-01-12 | Samsung Electronics Co., Ltd. | Semiconductor device with three-dimensional array structure |
US7936599B2 (en) | 2007-06-15 | 2011-05-03 | Micron Technology, Inc. | Coarse and fine programming in a solid state memory |
US8281061B2 (en) | 2008-03-31 | 2012-10-02 | Micron Technology, Inc. | Data conditioning to improve flash memory reliability |
JP2010009733A (ja) | 2008-06-30 | 2010-01-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR101434400B1 (ko) | 2008-07-09 | 2014-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 메모리 시스템 및 그것의 관리방법 |
JP5259481B2 (ja) | 2009-04-14 | 2013-08-07 | 株式会社東芝 | 不揮発性半導体記憶装置 |
KR20110001098A (ko) | 2009-06-29 | 2011-01-06 | 주식회사 하이닉스반도체 | 불휘발성 메모리 소자의 프로그램 방법 |
US7936610B1 (en) | 2009-08-03 | 2011-05-03 | Micron Technology, Inc. | Selective refresh of single bit memory cells |
US8054684B2 (en) | 2009-12-18 | 2011-11-08 | Sandisk Technologies Inc. | Non-volatile memory and method with atomic program sequence and write abort detection |
US8144512B2 (en) | 2009-12-18 | 2012-03-27 | Sandisk Technologies Inc. | Data transfer flows for on-chip folding |
KR101662827B1 (ko) | 2010-07-02 | 2016-10-06 | 삼성전자주식회사 | 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
KR101798013B1 (ko) | 2010-12-30 | 2017-11-16 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 |
-
2011
- 2011-06-14 KR KR1020110057432A patent/KR101785007B1/ko active IP Right Grant
-
2012
- 2012-05-31 US US13/484,712 patent/US9026749B2/en active Active
- 2012-06-14 CN CN201210196929.7A patent/CN102831076B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136522A1 (en) * | 2005-12-08 | 2007-06-14 | Masaya Umemura | Information processing apparatus, media player and method for controlling a storage device |
US7706181B2 (en) * | 2007-05-02 | 2010-04-27 | Samsung Electronics Co., Ltd. | Multi-bit programming device and method using single-bit memory cells |
CN101403984A (zh) * | 2007-10-01 | 2009-04-08 | 国际商业机器公司 | 收集转储数据的设备和方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104425020A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104425019A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN107341071A (zh) * | 2013-08-23 | 2017-11-10 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
US9977714B2 (en) | 2013-08-23 | 2018-05-22 | Silicon Motion, Inc. | Methods for programming a storage unit of a flash memory in multiple stages and apparatuses using the same |
CN104425019B (zh) * | 2013-08-23 | 2018-07-06 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN107980126A (zh) * | 2015-06-05 | 2018-05-01 | 桑迪士克科技有限责任公司 | 多裸芯储存装置的调度方案 |
Also Published As
Publication number | Publication date |
---|---|
US9026749B2 (en) | 2015-05-05 |
KR20120138115A (ko) | 2012-12-24 |
KR101785007B1 (ko) | 2017-11-07 |
CN102831076B (zh) | 2017-12-05 |
US20120324178A1 (en) | 2012-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102831076A (zh) | 具有多位存储设备的数据存储系统及其片上缓冲编程方法 | |
KR102233074B1 (ko) | 저장 장치 및 그것의 신뢰성 검증 방법 | |
JP6315917B2 (ja) | 不揮発性メモリ装置とプログラミング方法 | |
KR101949879B1 (ko) | 동적 소거 블록 그룹화 메커니즘을 가진 데이터 스토리지 시스템 및 이것의 작동 방법 | |
CN104036825B (zh) | 存储器控制器和包括存储器控制器的存储器系统 | |
KR102053953B1 (ko) | 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법 | |
US8694720B2 (en) | Nonvolatile memory devices with page flags, methods of operation and memory systems including same | |
KR102125376B1 (ko) | 저장 장치 및 그것의 쓰기 방법 | |
US10114575B2 (en) | Storage device and operating method thereof | |
US10656840B2 (en) | Real-time I/O pattern recognition to enhance performance and endurance of a storage device | |
CN106971754B (zh) | 非易失性存储器设备、包括其的存储装置和操作其的方法 | |
US20140101372A1 (en) | Memory system and read reclaim method thereof | |
CN107093465A (zh) | 包括电压搜索单元的数据存储器装置 | |
CN103093818A (zh) | 存储系统及其操作方法 | |
CN107045892B (zh) | 非易失性存储器和包括非易失性存储器的存储装置 | |
US9953712B2 (en) | Nonvolatile memory device and storage device including the nonvolatile memory device | |
CN102290105A (zh) | 具有多位存储器件的数据存储系统及其操作方法 | |
US10409718B2 (en) | Memory system and operating method thereof | |
CN107039072B (zh) | 非易失性存储器设备和非易失性存储器设备的操作方法 | |
CN105718381A (zh) | 存储设备、非易失性存储器以及操作其的方法 | |
EP3903314A1 (en) | Physical unclonable function (puf) with nand memory array | |
CN113129978B (zh) | 使用奇偶校验增加存储器存取并行性 | |
CN103578551A (zh) | 非易失性存储器件和编程方法 | |
US20210109675A1 (en) | Memory system, memory controller and operating method | |
KR20110099883A (ko) | 홀수의 매트들을 갖는 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 배속 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |