背景技术
[0001] 本公开涉及如闪存等固态
存储器,并且具体地涉及调节用于读取存储在固态存储器中的数据的读取电平。随着闪存寿命或者数据保留次数的增加,闪存单元的编程电平分布趋于分散和移位,导致增大的读取错误比率。随着闪存寿命或者数据保留次数的增加而调节读取电平可以降低读取错误比率。然而,许多读取电平调节
算法在确定何时进行调节以及如何进行调节方面不是有效的。
发明内容
[0002] 本主题技术涉及一种用于管理数据存储系统的方法,所述方法包括:使用第一读取电平
电压从闪存中读取所
请求数据;确定所述读取的所请求数据中的第一位值错误(first bit-value error)的数量和第二位值错误(second bit-value error)的数量;以及将所述第一位值错误的数量与所述第二位值错误的数量的错误比率与错误比率范围进行比较。在某些方面,所述数据存储系统可以进一步包括:基于所述错误比率与所述错误比率范围的所述比较调节所述第一读取电平电压。
[0003] 在某些方面,本主题技术涉及一种数据存储系统,所述数据存储系统包括:闪存;
控制器,所述控制器被配置成用于执行一种用于控制所述数据系统的方法。所述控制器可以被进一步配置成用于执行以下操作:使用第一读取电平电压从所述闪存中的
块中读取并解码所请求数据的多个码字;在已经读取并解码目标数量的码字之后,确定所述读取的所请求数据中的第一位值错误的数量和第二位值错误的数量;将所述第一位值错误的数量与所述第二位值错误的数量的错误比率与错误比率范围进行比较;以及基于所述错误比率与所述错误比率范围的所述比较调节所述第一读取电平电压。
[0004] 应理解的是,根据下面的具体实施方式,其中通过说明示出并描述了本公开的各种配置,本公开的其他配置将变得对本领域技术人员易于显而易见。如将认识到的,本公开能够有其他且不同的配置,并且其若干细节能够在各种其他方面被
修改,所有均不会背离本公开的范围。因此,
附图和具体实施方式应被认为是实际上说明性而非限制性的。
附图说明
[0005] 图1是
框图,描绘了根据本主题技术的各方面的数据存储系统的部件。
[0006] 图2包括根据本主题技术的各方面的MLC闪存的四个编程电平之间的单元分布的示例曲线图以及展示LSB读取错误、不同读取电平电压、和LSB错误比率之间的关系的示例曲线图。
[0007] 图3描绘了根据本主题技术的各方面的示出总LSB读取错误和读取电平电压之间的关系的示例曲线图。
[0008] 图4描绘了根据本主题技术的各方面的用于管理数据存储系统的示例过程的
流程图。
[0009] 图5描绘了根据本主题技术的各方面的用于调节读取电平电压的示例过程的流程图。
[0010] 图6描绘了根据本主题技术的各方面的用于校准并调节读取电平电压的示例过程的流程图。
[0011] 图7描绘了根据本主题技术的各方面的用于优化读取电平电压的示例过程的流程图。
[0012] 图8描绘了根据本主题技术的各方面的用于校准并调节读取电平电压的示例过程的流程图。
具体实施方式
[0013] 在下面阐述的具体实施方式意在作为本公开的各种配置的描述,并且并不意在表示可以实践本公开的唯一配置。附图结合在此并且构成具体实施方式的一部分。具体实施方式包括出于提供对本公开的全面理解的目的的具体细节。然而,将明显的是,在没有这些特定细节的情况下可以实践本公开。在一些实例中,以框图形式示出了结构和部件以便避免模糊本公开的概念。为了便于理解,相同的部件标记有相同的元件号。
[0014] 使用读取电平电压来读取闪存。当读取电平电压被设置为最优电平时,误比特率(BER)可以被最小化。然而,随着闪存设备寿命或闪存设备中的数据保留次数的增加,最优读取电平电压移位。如以下将详细描述的,本主题技术提供了用于自适应读取电平电压调节的系统和方法。本主题技术有效地确定何时调节读取电平电压并且可以使用在标准读取操作期间获得的度量来执行调节。本主题技术进一步有效地确定何时执行可能需要附加读取操作的校准操作。调节和校准操作两者允许系统在最小化执行以进行调节或校准的额外操作的数量的同时调节读取电平电压,以便说明闪存设备的寿命。
[0015] 图1是框图,描绘了根据本主题技术的各种实施方式的示例数据存储系统100的部件。数据存储系统100可以包括控制器105、存储介质110、闪存设备115、和
接口120。控制器105可以使用存储介质110以便临时存储用于管理数据存储系统100的数据和信息。控制器
105可以包括若干内部部件(未示出),如一个或多个处理器、
只读存储器(ROM)、闪存部件接口(例如,用于管理指令和沿着到闪存设备115的连接的数据传输的多路复用器)、I/O接口、错误校正码(ECC)模块等。ECC模块可以被配置成用于从自主机125处接收的数据中生成将要存储在闪存设备115中的码字,并且被配置成用于在向主机125发送经解码的数据之前对从闪存设备115处读取的码字进行解码。各种ECC解决方案可用于对数据进行编码和解码,以便生成码字。在一些方面,控制器105的一个或多个元件可以被集成到单个芯片中。在其他方面,所述元件可以在多个分立部件上实施。
[0016] 例如控制器105(使用一个或多个处理器)可以被配置成用于执行代码或指令(所述代码或指令用于执行本文中所描述的操作和功能)、管理请求流程和地址映射、以及执行计算和生成命令。控制器105的一个或多个处理器可以被配置成用于监测和控制控制器105和数据存储系统100中的部件的操作。一个或多个处理器可以包括通用
微处理器、
微控制器、数字
信号处理器(DSP)、专用集成
电路(ASIC)、现场可编程
门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机器、门逻辑、分立
硬件部件或前述组合。一条或多条指令序列可以被存储为控制器105内的ROM上的
固件。一条或多条指令序列可以被存储并从存储介质110、闪存设备115中读取,或从主机设备125中接收(例如,经由主机接口120)。ROM、存储介质110、闪存设备115表示机器或计算机可读介质的示例,由控制器105执行的指令/代码可以存储在所述机器或计算机可读介质上。机器或计算机可读介质通常可以指用于向控制器
105和/或其处理器提供指令的任何有形的和/或非瞬态介质,包括易失性介质(如用于存储介质110或用于控制器105内的
缓冲器的动态存储器)和非易失性介质(如
电子介质、光学介质和磁介质)两者。
[0017] 数据存储系统100可以进一步包括主机接口120。主机接口120可以被配置成用于耦合至主机设备125,接收来自主机设备125的数据并将数据发送至主机设备。主机接口120可以包括用于可操作地将主机设备125耦合至控制器105的电连接和物理连接。主机接口120可以被配置成用于在主机设备125与控制器105之间传达数据、地址和
控制信号。以此方式,控制器105被配置成用于响应于来自主机设备125的写命令而将从主机设备125处接收的数据存储在闪存设备115中,并且被配置成用于响应于来自主机设备125的读命令而读取存储在闪存设备115中的数据并经由主机接口120将所读取的数据递送至主机设备125。接口120可以使用任何专有或标准接口协议,包括但不限于:串行高级技术附件(SATA)、高级技术附件(ATA)、小型
计算机系统接口(SCSI)、PCI扩展(PCI-X)、光纤通道、串行附接SCSI(SAS)、安全数字(SD)、嵌入式多媒体卡(EMMC)、通用闪存(UFS)和外围组件互连(PCIe)。
[0018] 根据本主题技术的各方面,主机接口120可以使用标准化或专有无线接口标准和协议来实现主机设备125与数据存储系统100之间的无线连接。在这方面,主机接口120或数据存储系统100的其他部件可以包括用于将主机设备125和数据存储系统100置于与彼此进行的无线通信中的无线收发器。
[0019] 主机设备125表示被配置成用于耦合至数据存储系统100并将数据存储在数据存储系统100中的任何设备。主机设备125可以是计算系统,如个人计算机、
服务器、工作站、膝上型计算机、PDA、智能电话等。可替代地,主机设备125可以是电子设备,如
数码相机、数字音频播放器、数字视频录像机等。主机设备125可以使用发送至数据存储系统100的数据命令的逻辑地址。然后,数据存储系统100可以将从主机设备125处接收的逻辑地址映射到闪存设备115中的存储器
位置的物理地址。
[0020] 在一些方面,存储介质110表示用于临时存储用于管理数据存储系统100的数据和信息的易失性存储器。根据本公开的各方面,存储介质110是
随机存取存储器(RAM),如双倍
数据速率(DDR)RAM。其他类型的RAM也可以用于实现存储介质110。可以使用单个RAM模块或多个RAM模块来实现存储介质110。尽管存储介质110被描绘为不同于控制器105,但是本领域技术人员将认识到,在不背离本公开的范围的情况下,可以将存储介质110结合到控制器105中。可替代地,存储介质110可以是
非易失性存储器,如磁盘、闪存、外围SSD等。
[0021] 闪存设备115表示用于存储数据的非易失性存储器。根据本公开的各方面,闪存设备115包括例如NAND闪存。NAND闪存可以被组织成页和块。NAND闪存中的块中的每个块可以包括许多页(例如,256),并且页中的每一页可以包含一个或多个扇区或数据的部分。闪存设备115可以包括单个闪存设备或芯片,或者可以包括被安排在多个通道中的多个闪存设备或芯片。闪存设备115不限于任何特定容量或配置。例如,物理块的数量、每物理块中物理页的数量、每物理页中扇区的数量、和/或扇区的大小可以改变。
[0022] 闪存设备115可以包括单级单元(SLC)存储器、多级单元(MLC)存储器和/或三级单元(TLC)存储器。在一些方面,闪存设备115可以包括能够在SLC、MLC或TLC模式中的一个或多个模式中运行的一个或多个混合存储器设备。本主题技术不限于这些类型的存储器,并且可以应用于使用多于三级(例如,每单元4位、每单元5位等)配置和操作的闪存单元。
[0023] MLC NAND闪存通过使用多级电荷提供将被每单元存储的多于一位,所述电荷被施加到其单元的浮置栅极以便实现多状态传导,每个状态发生在不同电压
阈值(VT)处。MLC NAND单元可能能够存储每单元四个编程电平(电荷的电平)之一,产生每单元信息的两个逻辑位:最高有效位(MSB)和最低有效位(LSB)。来自单元的这两位可以分别构成相应的MSB和LSB页。
[0024] 图2包括以下更加详细描述的MLC闪存的四个编程电平之间的单元分布的示例曲线图和展示LSB读取错误、读取电平2(RL2)的不同读取电平电压、和LSB错误比率之间的关系的示例曲线图。曲线图206展示了以下四个编程电平之间的闪存单元的分布:L0、L1、L2和L3。使用四个编程电平,每个闪存单元可以存储两位数据,LSB和MSB。根据一个示例,在曲线图206上指示编程电平中的每个编程电平的LSB值。具体地,L0和L1对应于LSB值“1”,L2和L3对应于LSB值“0”。
[0025] 读取电平2(RL2)可以用于读取使用LSB值“1”(L0和L1)编程的闪存单元,并将其与使用LSB值“0”(L2和L3)编程的闪存单元区分。如曲线图206中所描绘的,编程电平分布可能重叠,这导致读取错误。重叠分布可能是由于闪存设备老化(增加的编程/擦除(P/E)循环)或增加的数据保留次数。随着重叠编程电平分布,用于读取操作的读取电平电压对读取错误具有不同影响。
[0026] 曲线图206展示了RL2的两个不同读取电平电压,RL2 204和RL2 205。RL2 204可以是RL2的初始设置,并且RL2 205可以表示RL2的最优设置。L1和L2的分布曲线的有图案的区域表示读取错误或位值错误。例如,使用RL2 204,区域211表示使用LSB值“0”(例如,L2)编程但错误地读取为包含LSB值“1”(例如,L1)的闪存单元。这种第一种类型的读取错误或位值错误由错误0→1
指定。类似地,区域212、213和214表示使用LSB值“1”(例如,L1)编程但错误地读取为包含LSB值“0”(例如,L2)的闪存单元。这种第二种类型的读取错误或位值错误由错误1→0指定。使用RL2 205,区域212不再包含读取错误,并且区域214从表示第二种类型的读取错误变成表示第一种类型的读取错误。
[0027] 示例曲线图207描绘了总LSB读取错误与RL2之间的关系。总LSB读取错误表示第一和第二种类型的读取错误的数量之和,错误0→1和错误1→0。三条曲线208、209和210表示闪存设备的生命周期中的三种不同状态。曲线208可以表示闪存设备的如由P/E循环计数或数据保留次数测量的生命周期中的后期阶段,曲线209可以表示闪存设备的生命周期中的中期阶段,并且曲线210可以表示闪存设备的生命周期中的早期阶段。曲线图207上还指示了表示超过数据存储系统中的ECC的容量的读取错误计数的阈值的线。读取错误的总量必须保持在阈值线以下,以便使数据存储系统使用ECC功能纠正任何读取错误并将所请求数据返回至主机系统。曲线208、209和210意在展示不同生命周期阶段的相对值,P/E循环计数或保留时间的实际值没有被提供也不是为理解本主题技术所必需的。
[0028] 根据本主题技术的各方面,可以将最优读取电平电压确定为导致读取错误数量最少(由曲线208、209和210上的星星表示)的读取电平电压。由于RL2移动一个方向或者另外地远离最优电平,所以LSB读取错误的总量增加。还相关联于曲线208、209和210中的每个曲线而示出了通过用读取错误的第一种类型(错误0→1)除以读取错误的第二种类型(错误1→0)而确定的LSB错误比率。尽管曲线208、209和210上示出的错误比率的范围改变,但是RL2的最优值处的错误比率保持在跨不同生命周期阶段的相比于整个范围(例如,0.04至20;
0.1至5.8;0.1至6)的相对窄的范围(例如,1.1至1.3)内。如以下将讨论的,本主题技术利用LSB错误比率的此相对窄的范围来将LSB错误比率用作读取电平电压调节的信号。
[0029] 实验室测试和仿真已经示出了,用于确定存储在闪存单元中的MSB值的RL1和RL3的最优值与RL2的最优值很好的关联。因此,本主题技术使用本文中所描述的算法来确定对RL2的调节,并且做出对RL1和RL3的相应调节。对RL1和RL3的调节可以具有与对RL2的调节的值相同的值,或者所述调节可以从施加到RL2上的调节中进行缩放。相应调节可以基于实验室测试和/或仿真数据。可替代地,如本文中所描述的,针对RL2的相似算法可以被适配成用于调节RL1和RL3。
[0030] 图3描绘了来自图2的曲线图207的具有基于总LSB读取错误的阈值而定义的多个区域的版本。曲线图300示出了四种错误阈值:Th1、Th2、Th23和Th3。区域0与总LSB读取错误小于或等于Th1的区域相对应。根据本主题技术的各方面,区域0内的读取错误数量被认为足够低,从而使得无法执行对读取电平电压的调节来减少数据存储系统中的开销操作。
[0031] 区域1与总LSB读取错误大于Th1且小于或等于Th2的区域相对应。根据本主题技术的各方面,当总LSB读取错误落入区域1内时,使用本文中所描述的算法来调节读取电平电压。可以对此区域进行所述调节来提高
解码器效率和/或基于ECC容量向读取错误的不可校正电平提供边缘。
[0032] 区域2与总LSB读取错误大于Th2且小于或等于Th3的区域相对应。根据本主题技术的各方面,当总LSB读取错误落入区域2内时,根据本文中所描述的算法来校准读取电平电压。此外,也调节用于本文中所描述的算法的LSB错误比率的范围。如图3中所示出的,区域2被分成两个子区域:区域2-高和区域2-低。区域2-低与总LSB读取错误大于Th2且小于或等于Th23的区域相对应。区域2-高与总LSB读取错误大于Th23且小于或等于Th3的区域相对应。当总LSB读取错误落入区域2-高内时,错误计数接近数据存储系统中的ECC容量的阈值。因此,可以执行附加步骤来使块中的数据保持被读取。例如,如果存储在块中的数据的驻留时间满足阈值,则块可以被指定用于垃圾收集操作。如果驻留时间低于所存储的数据的阈值,则在系统被配置成用于或使用可变码率时,可以评估用于存储在块中的数据的可变码率。例如,如果可变码率还没有处于最低值,则可以改变块的码率。如果块的可变码率已经处于最低
水平,则可以移除存储在块中的数据,并且丢弃所述块。总LSB读取错误的阈值不限于任何特定值,并且可以基于实验室和/或仿真数据设置。
[0033] 图4描绘了用于管理在数据存储系统100中使用的读取电平电压的示例过程400的流程图。为了解释的目的,参照本文中所描述的部件和/或过程在此描述了示例过程400的各个框。例如通过一个或多个处理器可以实现过程400的框中的一个或多个框,所述处理器包括例如图1的控制器105或者控制器105的一个或多个部件或处理器。在一些实施方式中,还可以通过一个或多个不同处理器或控制器来实现除其他框之外的框中的一个或多个框。进一步为了解释的目的,示例过程100的框可以被描述为串行或线性地发生。然而,示例过程100的多个框可以并行地发生。此外,示例过程400的框不需要以所示出的顺序执行和/或示例过程100的框中的一个或多个框不需要被执行。
[0034] 控制器105可以维护与闪存的用于判定是否开始示例过程400以及用于判定是否调节或校准读取电平电压的对应块相关联的元数据。下面的表4提供了块元数据的示例。
[0035] 表4
[0036]
[0037] 表4示出了不同元数据的范围、名称、大小、和说明,所述元数据可以被包括作为块元数据的一部分。范围可以指示元数据应用的存储器单元。例如,Blk指示元数据的范围是单个块,并且BlkSet指示元数据的范围是同时编程的块的条带(例如,独立磁盘(RAID)条带的冗余阵列)。
[0038] 如表4中所示出的,块元数据可以包含与块打开、关闭块上首次读取、区域2中首次读取、以及标记用于比率变化相关联的标记,所述标记可用于过程400的各个步骤中。块打开标记可以指示块是否打开。当控制器105没有将数据写入块的最后页中时,块被认为是打开的。当块内的所有页已经被写入时块可以是关闭的,或者在本主题技术的一些方面,在自块中的第一和最后页被写入以来已经过去一段时间之后,块可以是关闭的,即使块中的页对数据存储来说保持未使用。
[0039] 块元数据可以包括与关闭块上首次读取相关联的标记。关闭块上首次读取标记可以指示在块已经关闭之后块是否被首次读取。区域2中首次读取标记可以指示自关闭以来块是否被首次读取,LSB错误总量被确定在区域2中。标记用于比率变化标记可以指示目标LSB错误比率是否已经被标记用于在以下所讨论的过程期间基于所做出的确定进行调节。
[0040] 块元数据可以进一步包括RL2偏移和RL2移位,所述RL2偏移和RL2移位结合RL2开始一起使用来产生用于读取操作的RL2。RL2开始表示初始读取电平电压,并且可以与闪存设备的具有存储在闪存设备中的数据的零驻留时间的生命周期的早期阶段的最优读取电平电压相对应。例如,RL2开始可以从NAND特性数据中确定,并且可以具有与闪存设备中的块的不同生命周期阶段、P/E循环相对应的不同值。
[0041] 例如,RL2偏移可以使用以下所讨论的过程来确定,并且可以添加到RL2开始以便解释闪存设备中的编程电平分布中的块到块和/或裸片到裸片变化。RL2偏移可以跨对应块的P/E循环被保留。例如,RL2移位可以使用以下所讨论的过程来确定,并且可以添加到RL2开始和RL2偏移以便解释由于存储在闪存设备的块中的数据的保留时间或驻留时间而产生的闪存设备中的编程电平分布的变化。RL2移位将不被添加到RL2的其他两个部件,直到对应块已经关闭之后为止,并且当对应块被擦除(例如,P/E循环结束)时,RL2移位可以被重置。
[0042] 控制器105可以将打开块标记设置为指示块目前正在被编程。在一些方面,当打开块标记被设置时,控制器105可以不开始用于调节和校准块的读取电平电压的过程400。例如,由于单元间干涉(ICI),所以对页进行编程可以影响被编程页附近的页的读取电平电压。因此,当打开块标记已经被清除(指示块已经关闭)时可以调节读取电平电压。
[0043] 当块的最后页被编程时,控制器105可以清除打开块标记。可替代地,如果对块进行的编程没有在预定时间阈值(例如,三分钟、一分钟、三十秒等)内完成,则控制器105可以清除打开块标记。对块进行编程可能花费数秒完成。可以基于NAND特性数据确定预定时间阈值。块可以被关闭以便在时间阈值结束时在当前P/E循环中进行进一步编程。
[0044] 在框401中,控制器105可以使用第一读取电平电压从闪存设备115中读取所请求数据。如之前提及的,第一读取电平电压可以是RL2,所述RL2是RL2开始和RL2偏移之和。在框402中,控制器105可以在所读取的数据中确定第一位值错误的数量和第二位值错误的数量。可以通过ECC模块来确定并提供第一位值错误的数量和第二位值错误的数量,所述ECC模块被配置成用于使
用例如校正码和如LDPC等算法来校正读取错误。第一位值错误可以对应于错误0→1并且第二位值错误可以对应于错误1→0。控制器105可以通过确定的错误数量增大到块元数据中的对应位值错误类型的总错误计数。控制器105还可以基于已更新的总错误计数来更新存储在块元数据中的错误比率(例如,LSB错误比率)。控制器105可以增大块元数据中的累积计数,所述累积计数指示自累积计数被最后重置以来从块中读取的码字的数量。在框403中,控制器105可以将累积计数与预定阈值进行比较。如果累积计数大于或等于预定阈值,则控制器在框405中重设累积计数并继续到框406。如果累积计数小于预定阈值,则控制器可以在框404中退出过程400。预定阈值可以设置为任何数量的码字(例如,8、16)。在继续过程400之前需要读取的码字越多,单个坏码字读取将越不可能触发本文中所描述的调节或校准测量。需要读取的码字的数量可以是码字长度的函数(例如,成反比的)。
[0045] 在框406中,控制器105可以确定总LSB读取错误数量,所述总LSB读取错误数量可以是第一位值错误的数量与第二位值错误的数量之和。控制器105可以将总LSB读取错误数量与第一错误阈值进行比较。如果总LSB读取错误数量小于或等于第一错误阈值(区域0),则控制器105在框407中可以不进行任何调节并退出所述过程。否则,在框408中,控制器105可以将总LSB读取错误计数的数量与第二错误阈值进行比较。
[0046] 如果总LSB读取错误数量小于或等于第二错误阈值(区域1),则在框409中,控制器105可以调节RL2。以下将参照图5描述调节过程。
[0047] 在框410中,控制器105可以将总LSB读取错误数量与第三错误阈值进行比较。如果总LSB读取错误数量小于或等于第三错误阈值(区域2),则在框411中,控制器105可以校准和/或调节RL2。以下将参照图6描述此校准和/或调节过程。
[0048] 在框410中,控制器105可以确定总LSB读取错误数量大于第三错误阈值。然后,由于超过第三错误阈值的错误计数可能超过数据存储系统中的ECC的错误校正能
力,因此在框414中,控制器105可以标记用于进行软解码或RAID恢复操作的块。
[0049] 图5描绘了用于调节读取电平电压的示例过程500的流程图,所述过程与图4中的框409相对应。如之前提及的,控制器105可以将总LSB读取错误数量与第一错误阈值和第二错误阈值进行比较。如果控制器105确定总LSB读取错误数量在第一错误阈值与第二错误阈值之间,则可以通过过程500调节读取电平电压。根据一些方面,可以从关闭块的LSB中心页(地址范围的25%至75%)中收集的错误度量中进行读取电平电压调节。
[0050] 在框501中,控制器105可以判定当前码字读取是否是自块关闭以来的首次码字读取。例如,控制器105可以
访问与块相关联的关闭块上首次读取标记。可以对关闭块上首次读取标记进行编程,以便指示自块关闭以来所述块没有被读取。基于与块相关联的关闭块上首次读取标记的值,控制器105可以调节或者RL2偏移或者RL2移位。
[0051] 如果当前码字读取是自块关闭以来的首次码字读取,则在框502中,控制器105可以使用块元数据将块的LSB错误比率与错误比率范围进行比较。如图3中所见,与最优RL2相关联的LSB错误比率停留在窄范围内。可以使用闪存设备或闪存设备中的单独块的目标错误比率和相关联错误比率范围对控制器105进行预编程。目标错误比率和相关联错误比率范围可以使用特性数据、仿真等来确定,并且可以具有闪存设备的不同生命周期的不同值(例如,P/E循环范围)。可以通过将目标错误比率除以因子N(范围的下端)以及将目标错误比率乘以因子N(范围的上端)来确定错误比率范围。例如,因子N可以被初始地设置为2,并且可以在闪存设备的不同生命周期阶段进行调节。如果LSB错误比率在错误比率范围内,则在框503中,控制器105可以退出过程500而不需要任何调节。否则,当LSB错误比率高于错误比率范围时,在框504中,控制器105可以减小RL2偏移,并且当LSB错误比率低于错误比率范围时,在框505中,可以增大RL2偏移。
[0052] 在框506中,控制器105可以使用块元数据将块的LSB错误比率与框506中的错误比率范围进行比较,框506中的动作类似于在框502中完成的动作。如果LSB错误比率在错误比率范围内,则在框507中,控制器105可以退出过程500而不需要任何调节。否则,当LSB错误比率高于错误比率范围时,在框508中,控制器105可以减小RL2移位,并且当LSB错误比率低于错误比率范围时,在框509中,可以增大RL2移位。
[0053] 可以通过对存储在块元数据中的相关联的值改变一位值来增大或减小RL2移位和RL2偏移的值。例如,如果使用两位,则相关联的值可以比最小初始值增大三倍或者比最大值减小三倍。每位值可以与预定量电压(如50mV,100mV,500mV等)相对应。
[0054] 图6描绘了用于校准并调节读取电平电压的示例过程600的流程图,所述过程与图4中的框411相对应。在框601中,控制器105可以判定当前码字读取是否是自块关闭以来的首次码字读取,总LSB错误数量在区域2中。例如,控制器105可以访问块元数据中与块相关联的区域2中首次读取标记。可以在已经读取了引起总LSB错误数量增加到以上所讨论的区域2的水平的码字之后重置区域2中首次读取标记。控制器105还可以通过访问与框601中的块相关联的块元数据中的标记用于比率变化标记来判定块是否已经被标记用于比率变化。
标记用于比率变化标记可以指示目标错误比率应当被改变,并且以下将参照图8进行讨论。
基于与块相关联的区域2中首次读取标记的值,控制器105可以通过校准环或优化过程。
[0055] 在当前码字读取是自块关闭以来的首次码字读取且总LSB错误数量在区域2中时,或者当块已经被标记用于比率变化时,控制器105可以通过框602中的校准过程校准读取电平电压,所述校准过程将参照图8在以下进行讨论。如果这些条件中的任何条件都不满足,则控制器105可以通过框603中的调节过程调节读取电平电压,所述调节过程将参照图7在以下进行讨论。在一些实施方式中,控制器105在框603中可以基于例如块的寿命或块已经通过优化603的次数的数量来确定转到校准环602。
[0056] 在框604中,控制器105可以判定第一位值错误的数量与第二位值错误的数量之和(总LSB错误数量)对否大于第四错误阈值。如果所述和小于第四错误阈值(对应于以上描述的区域2-低),则在框606中,控制器105可以退出过程600。如果所述和大于第四错误阈值(对应于区域2-高),则在框605中,控制器105可以在框606中退出所述过程之前标记块以用于高BER错误处置器。例如,根据块的寿命,BER错误处置器可以指定块用于垃圾收集或改变用于将数据写入块中的码率。可替代地,可以基于块的寿命(P/E循环计数)或和缺少可用较低码率而退出所述块。
[0057] 图7描绘了用于调节读取电平电压的示例过程700的流程图,所述过程与图6中的框603相对应。在框701中,控制器105可以将LSB错误比率与错误比率范围进行比较。如果LSB错误比率在错误比率范围内,则控制器105在框706中可以将总LSB读取错误数量与第四错误阈值进行比较。根据本主题技术的各方面,如果总LSB读取错误数量小于第四错误阈值(区域2-低),则在框708中,控制器105可以退出所述过程。如果总LSB读取错误数量大于第四阈值(区域2-高),则控制器105可以标记块以用于高BER错误处置器。根据块的寿命,BER错误处置器可以指定块用于垃圾收集或改变用于将数据存储到块中的码率。例如,控制器105可以基于与块相关联的P/E循环数量来确定块的寿命。可以将块的寿命与一个或多个阈值进行比较。如果块的寿命大于所述阈值,则控制器105可以开始垃圾收集。如果块的寿命小于所述阈值,则控制器105可以改变用于将数据存储在块中的码率。根据本主题技术的各方面,如果块的寿命小于所述阈值,并且控制器105不能改变码率(例如,由于当前码率是最低码率),则可以将块指定为被丢弃。
[0058] 如果LSB错误比率在错误比率范围之外,则在框702中,控制器105可以检查块或闪存设备的优化模式。如果设置低读取影响模式,则过程继续到框703来调节读取电平电压。如果不设置低读取影响模式,则过程继续到与图6中的框602相对应的校准过程,并且所述校准过程参照图8在以下描述。可以基于例如块的寿命、在过程700期间发现LSB错误比率在错误比率范围之外的次数的数量等来设置优化模式。例如,数据存储系统100可以主要用于读取数据,这将意味着,存储在闪存设备115的块中的数据的驻留时间可能非常长。如之前提及的,块的编程电平的分布可以随着驻留时间的增加而变化,并且可能期望执行对读取电平和LSB错误比率的校准。
[0059] 在框703中,控制器105可以将LSB错误比率与错误比率范围进行比较。可以基于LSB错误比率与错误比率范围的比较来调节RL2移位。例如,如果LSB错误比率低于错误比率范围,则在框704中,控制器105可以增大RL2移位。如果LSB错误比率高于错误比率范围,则在框705中,控制器105可以减小RL2移位。然后,所述过程继续到以上讨论的块706。
[0060] 图8描绘了用于校准并调节读取电平电压的示例过程800的流程图,所述过程与图6中的框602相对应。在框801中,控制器105可以基于LSB错误比率与目标错误比率的比较来使读取电平电压步进一个增量。例如,当LSB错误比率大于目标错误比率时,控制器105可以将RL2减小一个RL步进,并且当LSB错误比率小于目标错误比率时,可以将RL2增大一个RL步进。
RL步进可以表示如50mV、100mV、500mV等许多增量电压值。增量电压值可以基于调节闪存设备
115中可用的读取电平电压的
分辨率。RL步进可以具有用于指示做出增量变化的方向的符号(正或负)。
[0061] 在框802中,控制器105可以使用增大的或减小的RL2来从闪存设备115中读取预定数量n个码字(校准数据)。码字的数量可能因不同的实施方式而变化并且被设置成用于提供样本大小的读取数据。控制器105可以计算基于BER的读取n个码字并在框803中判定BER是否已经从上次
迭代中增大。控制器105可以将所计算的BER存储在存储介质115中并增大计数器。计数器可以指示控制器105已经执行了框801和框802多少次。
[0062] 如果所计算的BER没有增大,则过程返回到框801,并且重复框801、802和803。如果所计算的BER已经增大,则在框804中,RL步进后退一个增量值,这表示读取电平电压产生最小BER。在框805中,对RL步进的值(所述值表示对读取电平电压进行调节的增量的数量)进行评估。
[0063] 如果RL步进的值大于一,则控制器105可以在框806中按一个增量值调节RL2偏移并按与RL步进的值减去一相对应的增量值的数量调节RL2移位,并且过程继续到框808。如果RL步进的值等于一,则控制器105可以在框807中按一个增量值调节RL2偏移并不对RL2移位做出任何调节,并且过程继续到框808。如果RL步进的值等于零,则不对读取电平电压做出任何调节,并且过程继续到框808。所述调节是增大的或减小的以便与在框801中进行的增量改变的方向一致。
[0064] 在框808中,控制器105可以基于使用最近计算的RL2来读取的n个码字计算LSB错误比率并将LSB错误比率与错误比率范围进行比较。如果LSB错误比率在错误比率范围内,则控制器105可以继续到以上关于图7而讨论的框706。如果LSB错误比率在错误比率范围之外,则控制器105继续到框809。
[0065] 在框809中,控制器105可以检查块元数据中的标记用于比率变化标记。如果控制器105确定之前未设置标记用于比率变化标记,则控制器105可以设置标记用于比率变化标记并继续到框706。如果控制器105确定之前已经设置标记用于比率变化标记,则在继续到框706之前调节错误比率。
[0066] 如之前描述的,通过以下方式来执行读取电平电压调节:将块的LSB错误比率与错误比率范围进行比较以及改变与块相关联的RL2偏移或RL2移位。因为如在图3中所见,与最优RL2相关联的LSB错误比率停留在窄范围内,所以可以预先确定错误比率范围。然而,随着总LSB读取错误数量增大,可能需要改变目标错误比率及其相关联的错误比率范围。例如,如果基于最近计算的RL2的新LSB错误比率不在错误比率范围内,则在不调节错误比率范围的情况下,控制器105可能将RL2朝着例如错误的读取电平电压调节。
[0067] 可以少量地进行对目标错误比率的改变。根据本主题技术,当控制器105首次确定需要调节目标错误比率时可能无法调节目标错误比率。在所述首次期间,控制器105可以设置标记用于比率变化标记,并且如果控制器105确定需要第二次改变目标错误比率,则控制器105调节目标错误比率及其相关联的错误比率范围。
[0068] 例如,目标比率可以是1并且错误比率范围可以为.5至2,将值二用于以上所指出的因子N。如之前提及的,当所计算的LSB错误比率在错误比率范围内时,控制器105退出过程500、700和800。如果所计算的LSB错误比率在错误比率范围之外(例如,3),则控制器105可以减小RL2偏移或RL2移位,从而使得LSB错误比率最终变成在.5至2内。在大多数情况下,这种调节将导致控制器105找到接近最优RL2的RL2。然而,如果控制器105在框808中确定基于最近计算的RL2的LSB错误比率在错误比率范围之外,则可能需要调节错误比率范围。这是因为基于产生最低BER的RL2计算新LSB错误比率,这意味着最优RL2与不在错误比率范围内的错误比率相关联。在控制器105首次对块进行校准之后,控制器可以例如使用标记用于比率变化标记来对其进行标记。在控制器105第二次对块进行校准期间,控制器可以改变目标错误比率及其相关联的错误比率范围。在这种情况下,可以将目标错误比率设置为3。可以通过将新目标错误比率乘以或除以预定因子N来确定新的错误比率范围。在此示例中,范围的下界可以确定为目标错误比率除以2(1.5)并且错误比率范围的上界可以确定为目标错误比率乘以2(6)。以上关于图7而讨论了框706、707和708,并且在此将不再对其进行描述。
[0069] 以上所讨论的主题技术提供了用于在闪存系统中进行读取电平调节和校准的有效机制。虽然前述示例集中于MLC闪存,但是可以将算法和基本原则应用于如TLC等其他类型的闪存或被配置成用于使用多于3位、8电平来存储数据的其他类型,并且因此不应当被解释为限制MLC闪存。
[0070] 应当理解的是,可以将本文中所描述的各种说明性块、模块、元件、部件、方法和算法实施为电子硬件、计算机
软件或两者的组合。为了说明硬件和软件的这种可互换性,上面已经将各种说明性的块、模块、部件、组件、方法以及算法一般性地按照它们的功能进行了描述。至于这种功能是实现为硬件还是软件,这取决于特定的应用和施加在整体系统上的设计约束。本领域技术人员可以针对每种具体应用以变化的方式来实现所描述的功能。可以采用不同方式(例如,以不同顺序安排、或者以不同方式分割)来安排各种部件和块,而全都不背离本公开的范围。
[0071] 应当理解的是,所公开的过程中的步骤的特定顺序或层次被呈现为对一些示例性方式的说明。应当理解的是,基于设计偏好和/或其他考虑因素,可以重新编排所述过程中的步骤的特定顺序或层次。例如,在一些实施方式中,可以同时执行所述步骤中的一些步骤。由此,所附的方法
权利要求以示例顺序呈现了各种步骤的要素,但是并不意味着受所给出的特定顺序或层次的限制。
[0072] 前面的描述被提供来使本领域的任何技术人员能够实践本文中所描述的各种方面。本
说明书提供了本公开的各种示例,并且本公开并不限于这些示例。对这些方面的各种修改对本领域的技术人员而言将是明显的,并且本文中所定义的一般原理也可以适用于其他方面。因此,权利要求书并非旨在被限定于本文中所示出的方面,而是应被授予与语言上的权利要求书相一致的全部范围,其中对要素的单数形式的引述除非特别
声明,否则并非旨在表示“有且仅有一个”,而是“一个或多个”。除非特别另外声明,否则术语“一些”指的是一个或多个。男性代词(例如,他的)包括女性和中性代词(例如,她的或它的),反之亦然。标题和小标题如果有的话,仅为了方便而使用并且并不限制本公开。
[0073] 谓语“被配置成用于”、“可操作用于”、和“被编程用于”不暗示对主题的任何特定的有形的或无形的修改,而是意在可交换地使用。例如,被配置成用于监测并控制操作或部件的处理器还可以指被编程用于监测并控制操作的处理器或可操作用于监测并控制操作的处理器。同样地,被配置成用于执行代码的处理器可以被解释为被编程用于执行代码或可操作用于执行代码的处理器。
[0074] 短语“通信”和“耦合”指直接通信或经由在本文中命名或未命名的一个或多个部件(例如,存储器卡阅读器)的间接通信。
[0075] 如“方面”等短语并不暗示这样的方面对本公开是必要的或这样的方面适用于本公开的所有配置。与方面有关的公开可以适用于所有配置、或一个或多个配置。一个方面可以提供一个或多个示例。如方面等短语可以指一个或多个方面,反之亦然。如“
实施例”等短语并不暗示这样的实施例对本公开是必要的或这样的实施例适用于本公开的所有配置。与实施方式有关的公开可以适用于所有方面、或一个或多个方面。一个实施方式可以提供一个或多个示例。如“实施例”等短语可以指一个或多个实施方式,反之亦然。如“配置”等短语并不暗示这样的配置对本公开是必要的或这样的配置适用于本公开的所有配置。与配置有关的公开可以适用于所有配置、或一个或多个配置。一个配置可以提供一个或多个示例。如“配置”等短语可以指一个或多个配置,反之亦然。
[0076] 词语“示例性”在本文用来表示“用作为示例或说明”的意思。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。