具有多位存储设备的数据存储系统及其片上缓冲编程方法技术领域
示范性实施例涉及一种存储设备,而且更具体地,涉及一种数据存储系
统。
背景技术
半导体存储设备是在诸如计算机以及范围涉及从卫星到消费类电子产
品的基于微处理器的应用的数字逻辑系统中常见的重要微电子组件。因此,
半导体存储设备的制造上的进展——包括允许定标(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 Waffle
Pack)、晶片内裸片形式(Die in Wafer Form)、板上芯片(Chip On Board,
COB)、陶瓷双列直插封装(Ceramic Dual In-Line Package,CERDIP)、塑料
标准四边扁平封装(Metric Quad Flat Pack,MQFP)、薄型四边扁平封装(Thin
Quad Flatpack,TQFP)、小外型IC(Small Outline IC,SOIC)、缩小型小外
型封装(Shrink Small Outline Package,SSOP)、薄型小外型封装(Thin Small
Outline,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的优先权,通过引用将其全部内容合并于此。