CN105989891A - 用于增强的闪存性能的读取级别分组 - Google Patents
用于增强的闪存性能的读取级别分组 Download PDFInfo
- Publication number
- CN105989891A CN105989891A CN201610161521.4A CN201610161521A CN105989891A CN 105989891 A CN105989891 A CN 105989891A CN 201610161521 A CN201610161521 A CN 201610161521A CN 105989891 A CN105989891 A CN 105989891A
- Authority
- CN
- China
- Prior art keywords
- wordline
- error count
- reading
- read
- level voltage
- 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
Classifications
-
- 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/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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/26—Sensing or reading circuits; Data output circuits
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- 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
- 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/5642—Sensing or reading circuits; Data output circuits
-
- 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/08—Address circuits; Decoders; Word-line control circuits
-
- 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/10—Programming or data input circuits
-
- 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/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3427—Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
-
- 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/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/022—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/14—Word line organisation; Word line lay-out
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
用于增强的闪存性能的读取级别分组。错误计数表基于读取闪存装置的字线而生成,该表存储对于字线和读取该字线的相应读取级别电压的每个组合的错误计数。多个偏移字线组基于错误计数表而生成,每个组使不同读取级别偏移电压与多个字线地址关联。存储装置被配置为使用与待读取存储元件的字线地址关联的所生成的偏移字线组的读取级别偏移电压来读取存储元件。在相应存储块的寿命周期中的预定点之后,重新生成该表,并且基于重新生成的错误计数表而重新生成多个偏移字线组。
Description
相关申请的交叉引用
本发明要求于2014年11月20日提交的名称为“CalibratingOptimal Read Levels”的美国专利申请第14/549,535号以及于2014年11月20日提交的名称为“Read Level Grouping Algorithms for IncreasedFlash Performance”的美国专利申请第14/549,532号的优先权并作为其部分继续申请案,为了所有目的其公开内容通过引证结合于此。
背景技术
本发明涉及从闪存装置诸如固态硬盘(SSD)中取得信息。通常使用增加数据容量的多级元件(MLC)闪存来制造较廉价的固态硬盘(SSD),但MLC闪存有时不如单级元件(SLC)闪存可靠。消费类SSD制造商通过使用某些磨损平衡算法减轻了这些问题。即使在MLC的增加数据容量下,在企业应用中使用MLC也会更加昂贵,这归因于随着时间的推移由于需要(磨损引起的)增大的压力来读取、编程和擦除闪存导致其在编程/擦除(P/E)周期不成比例降低,从而导致耐久性逐渐退化。
发明内容
本发明技术涉及一种用于取得存储在闪存中的信息的方法。根据多个方面,该方法包括:读取存储块的字线的第一样本,字线的所述第一样本中的每个字线与字线标识符关联并且使用不同读取级别电压被多次读取,以产生用于字线与相应读取级别电压的每个组合的错误计数;基于所产生的错误计数生成错误计数表,对每个产生的错误计数,所述错误计数表利用对应的字线标识符和所述不同读取级别电压中用于产生该错误计数的相应一个读取级别电压来标引(index)该错误计数;以及配置存储装置,以使用基于所述错误计数表的错误计数选择的读取级别电压来执行读取操作。其他方面包括用于执行该计算机实现方法的对应系统、设备和计算机程序产品。
在多个方面,一种数据存储系统包括:多个闪存装置,每个闪存装置均包括多个存储块;以及控制器,所述控制器耦接至所述多个闪存装置。所述控制器被配置为:读取所述闪存装置的字线的第一样本,字线的所述第一样本中的每个字线与字线标识符关联且使用不同读取级别电压被多次读取,以产生用于字线与相应读取级别电压的每个组合的错误计数;基于所产生的错误计数生成错误计数表,所述错误计数表利用对应字线标识符和不同读取级别电压中的相应一个来标引每个产生的错误计数;以及基于所述错误计数表的错误计数选择读取级别电压用于将来的读取操作。
在多个方面,一种方法包括:读取闪存装置的字线的第一样本,字线的所述第一样本中的每个字线均与字线地址关联并且使用不同读取级别电压被多次读取,以产生用于字线与相应读取级别电压的每个组合的错误计数;基于所产生的错误计数生成错误计数表,所述错误计数表利用对应的字线地址和不同读取级别电压中的对应一个来标引每个产生的错误计数;基于所述错误计数表形成多个字线组,每个组使所述不同读取级别电压中的相应一个与多个字线地址关联;以及配置存储装置,以使用与待读取的存储元件的字线地址对应的所生成的字线组的读取级别电压来读取所述存储元件。
应理解,下文的详细描述将使本公开的其他配置对于本领域技术人员变得明显,其中,通过示意性的方式示出并描述可本公开的各个构造。如将认识到的,本公开能够包括其他且不同的配置,并且在不背离本公开的范围的前提下,能够在各个其他方面中修改其一些细节。因此,附图和详细说明将被认为本质上是示意性而非限制性的
附图说明
图1是用于多级元件(MLC)闪存中的一组存储元件的四个可能的阈值电压(VT)分布和附带的程序读取级别的示例性图表。
图2A示出了使用三个读取级别对最低有效位(LSB)页进行的示例性概率确定。
图2B示出了使用三个读取级别对MLC闪存的最高有效位页进行的示例性概率确定。
图3示出了用于存储块的多个字线的示例性最优读取级别电压变化。
图4示出了用于多个字线的读取级别偏移值的示例性范围的错误计数的示例性表。
图5A至图5C示出了用于循环存储块的示例性最优读取级别偏移的图表。
图6示出了用于生成偏移字线组的示例性算法的方框图。
图7示出了用于生成偏移字线组的第一示例性过程的流程图。
图8示出了用于生成偏移字线组的第二示例性过程的流程图。
图9示出了建模成具有二元输入和K元输出的离散无记忆通道(DMC)的示例性闪存通道。
图10A至图10C示出了用于校准示例性读取级别和/或读取级别偏移的示例性线性插值图。
图10D至图10F示出了用于再校准示例性读取级别和/或读取级别偏移的示例性线性插值图。
图11A和图11B示出了示例性读取级别最优模式。
图12示出了对用于读取存储装置中的多个存储元件的读取级别进行校准的示例性过程的流程图。
图13示出了用于校准读取级别以恢复数据的示例性过程的流程图。
图14示出了用于基于再生成和再标引的错误计数表而再生成多个最优偏移字线组的示例性过程的流程图。
图15是示出了示例性数据存储系统的部件的方框图。
具体实施方式
下面的详细描述是作为本公开的各种配置的描述,而非表示本发明可被实践的唯一配置。所附附图结合于此并构成详细描述的一部分。详细描述包括为了提供本公开深入理解的目的的具体描述。然而,对于本领域技术人员应理解到可在这些具体描述之外实行本公开。在一些实例中,以方框图的形式示出了结构和部件,以避免模糊本发明的概念。为了易于理解,用相同的参考表号表示相同的部件。
在例如具有NAND架构的闪存装置中,存储元件(memory cell)按串来分组,其中,每串均包括串联在漏极选择晶体管(其连接至存储块(memory block)的相应位线)与源极选择晶体管(其连接至基准电压分布线)之间的一组晶体管。每个存储元件均包括浮栅MOS晶体管。当对存储元件进行编程时,电子例如借助于福勒-诺得海姆隧道效应和/或热电子注射而被注入到浮栅中。电子的非易失性归因于电子被保持在浮栅内。通过俘获浮栅(电绝缘导体)上的电荷来存储比特(bit),该浮栅存储由其阈值电压(使元件导通所需的电压)限定的逻辑值,该阈值电压与所存储的电荷同量。当擦除存储元件时,通过量子论隧道效应将元件的浮栅中的电子从浮栅拉出至例如源极和/或基底。
随着闪存被循环(即重复地编程和擦除),其物理特性改变。例如,分别在编程和清除操作期间重复地放置和移除浮栅上的电子导致一些多余电子被该装置俘获。而且,在编程一个或多个元件时,相邻的元件可受到注射至其浮栅的不理想且不期望的电荷注射,由此导致存储在其中的数据损坏。例如,电子在由于邻近元件的栅处的电压而导致的持续施压之后可泄露到邻近元件中。这些存储元件的阈值电压最终可带来与期望值不同(或高或低)的值,从而导致读取数据时的错误。通常,发生的损坏视场强(例如电压)和持续时间而定;因此,将闪存编程至高阈值电压状态增大了由于编程和擦除引起的损坏率,这是因为其需要更长的持续时间和/或更高的被施加场。例如,添加足够的电子可将元件从擦除状态改变至编程状态。
在不同的实现方式中,存储元件可用列(位线)和行(字线)的阵列方式布置在晶片中。存储元件的地址表示对应于(如标引)该存储元件的位线和字线的交叉。闪存可进一步由块(block)组成,每个块被分成页(page)。在MLC存储器的一些实现方式中,闪存的元件的每行由2个页组成:LSB页和MSB页。如果块具有128个页,则其可具有64行元件,每行有两个页。因为当元件物理地结合在晶元中时,其受到电压和电阻以及制造过程的其他特征的变化的影响,所以每行均可不同地表现。
在NAND架构中,已经发现,退化的问题尤其需要关注,这是因为(例如在位线)读取的元件的串中的每个晶体管接收增大的电压应力,即使其小于该串的在任一时间二笔读取所有元件(例如,在位线中的与指定字线对应的位置)。由于这种退化,当编程时,一些行(字线)的元件比其他元件更远离其预期值(例如,在对应的位线测量的预期电压)。可观察到这些变化可与个别字线关联。因此,本发明技术把这些变化表征为可测量值,并且提供一种机制在运行时补偿这种变化。例如,如果发现字线中的元件电压偏移(例如,作为特征化过程的结果),则在编程或后续操作期间可引入偏压(例如,偏移电压)以校正编程电压或读取值。在这种方式中,在不同字线的元件之间的实际编程值的非线性可减小,从而减小读取元件时的错误。
然而,相同的偏压可能不适于对整个特定的块或晶元一致地更正读取有关的错误。此外,对每个字线或块存储偏压值可快速消耗用于存储的存储器,并且因在每个读取操作中需要大量查找以施加更正偏压而变成难以管理和/或妨碍的性能。因此,本发明技术提供了一种机制来确定和关联偏压值与字线组,为了读取组内的字线的最小可能读取错误率而优化偏压值。本发明技术还提供了一种机制,用于在存储元件的整个寿命中优化偏压值。在这种方式下,偏压值可被有效地存储和取消,并且根据需要被更正,从而提高总体闪存元件体系结构的可靠性和耐久性,以使闪存适于企业应用。
图1是根据本发明技术一方面的用于多级元件(MLC)闪存中的一组存储元件的四个可能的元件阈值电压(VT)分布(401,410,420和430)和附带的程序读取级别(L0,L1和L2阈值)的示例性图表。MLC NAND闪存在电荷(读取级别)的多个级别之间进行选择以施加到其元件的浮栅,从而获得传导性的多个状态,由此为每个元件提供多于一个的位(bit),每一个以不同的电压阈值VT发生。如图1示出的,MLC NAND元件能够存储每元件四个状态(电荷级别)中的一个,产生每元件两个逻辑位(bit)的信息:最高有效位(MSB)和最低有效位(LSB)。这两个位可组成存储块的对应的MSB和LSB页。
图1示出了编程为数据级别L0、L1、L2和L3的一组存储元件(如在块中)的概率密度分布曲线400。分布401、410、420和430分别对应于L0、L1、L2和L3数据级别的概率密度分布曲线。每个数据级别由相应的阈值电压级别分开。在示出的实例中,阈值电压级别被标识为L0阈值、L1阈值和L2阈值。阈值电压级别由阈值检测器使用(如在闪存内)作为“读取级别”,以例如确定读取信号是否应按照分布401、410、420和430来读取。图1中的四个元件分布401、410、420和430可从实验数据获得。
为了确保分布中的所有元件导通,施加大于该分布的读取级别电压。在本文描述的各种实例中,第一读取级别RL1对应于L0阈值电压,第二读取级别RL2对应于L2阈值电压,而第三读取级别RL3对应于L2阈值电压。这样,RL1电压将使L0分布中的元件导通,RL2电压将使L1分布中的元件导通,RL3电压将使L2分布中的元件导通,等等。这里,如图1所示,仅四个状态可用,RL3电压将不会使L3分布中的任何元件导通。在一些实现中,为这些元件在LSB中生成二进制数x0。一般情况下,对N个分布有N-1个读取级别。在示出的实例中,存在四个分布(状态)和三个读取级别。然而应理解,在不背离主题技术的范围的前提下,可存在八个、十六个或更多个分布。
图2A示出了根据本发明技术一方面的使用三个读取级别RL1、RL2和RL3对LSB页示例性概率判定。在所示实例中,第一读取级别202(“RL2”)用于LSB页的第一读取以确定用于LSB页的存储元件的推定编程。为了确定存储元件实际编程为观察的推定编程级别的概率,启动多个软读取。
在所示的实例中,使用第一读取级别202以下的第二读取级别204和第一读取级别202以上的第三读取级别206来读取存储元件。第一编程区域β1包括具有在第一读取级别202与第二读取级别204之间的编程值的一个或多个元件,并且第二变成区域β2包括具有在第一度与级别202余第三读取级别206之间的编程值的一个或多个元件。读取级别之间的不同区域被表示为“容仓(bin)”。在各方面,对每个容仓,可基于该容仓与一个或多个其他容仓相比有多少存储元件而对该容仓计算置信度。可基于在用于该容仓的分布曲线下的区域208对该容仓计算置信度。该置信度然后被分配给对应的容仓中的每个存储元件。如将进一步描述的,置信度可包括对数似然比。
图2B示出了使用三个读取级别RL1、RL2和RL3对MLC闪存的MSB页进行示例性概率确定。根据本主题技术的方面,初始读取级别202可应用于一个或多个存储元件,以获得用于每个存储元件的LSB值。在所示实例中,读取级别202被选择为编码比特1的分布与编码比特0的分布之间的交叉位置,以使预期比特错误率(BER)最小化。使BER最小化所选择的读取级别被称为最优读取级别。
基于LSB值,可确定第一读取级别202以读取用于MSB的推定编程级别。一旦确定了第一读取级别202且读取编程级别,就能启动多个后续读取以确定存储元件实际编程为观察的推定编程级别的概率。因此,每个元件可与对应于在应用一个或多个后续读取时发现元件导通或不导通的级别的编程区域(容仓)α0,α1,α2,α3,α4,α5和α6关联。
图3示出了根据本主题技术的方面的用于存储块的多个字线的示例性最优读取级别电压变化。存储块可具有高达(或多于)64个字线。实验结果表明,最优读取级别(例如RL1、RL2或RL3)因字线不同而不同。在所示的实例中,三个读取级别RL1、RL2和RL3被最优地设定为其相应值,以按对应于数据级别L0、L1、L2和L3的概率密度分布曲线读取存储元件。然而,这些最优读取级别的值或电压被示为相对于每个字线变化。例如,用于字线1的最优读取级别向右偏移,具有稍微增大的值,而字线64向左偏移,具有稍微减小的值。如将进一步描述的,用于每个读取级别的电压中的这些偏移中的每个可表现为来自相应主读取级别电压的偏压值或读取级别偏移。
图4示出了根据本主题技术的方面的用于多个字线的读取级别偏移值的示例性范围的错误计数表400。如上文解释的,用于读取存储元件的具体状态的最优读取级别可因字线不同而不同,其示为每个字线相对于彼此具有独特的特征集。通过将读取级别修改一特定偏压——本文称“读取级别偏移”——可示出字线之间的最优读取级别中的变化。读取级别偏移可对每个字线和/或每个块和/或每个存储器晶元而不同。这样,可应用多个偏移:每个字线应用一个偏移、每个块应用一个偏移,和/或每个存储器晶元应用一个偏移。
表400的每行代表不同的字线,而每列代表不同的读取级别偏移值。块的每个字线可在该表中表示。列在示例性表中的错误计数是以对应偏移值读取对应字线时产生错误的数量。该错误计数可由字线和读取级别偏移值来标引(index)。读取级别偏移值表示成从主读取级别电压的“跳变(tick)”。在一些实现中,每两个跳变可等于25mV。此外,对于每个读取级别电压可存在不同的表。例如,所示的表可用于RL1,而不同的表提供以RL2读取相同字线的错误计数,并且不同的表提供以RL3读取相同字线的错误计数。
可基于实验数据初始地生成表。在至少一个实例中,可依据读取存储块的字线而生成错误计数表,利用选择的读取级别电压来多次读取每个字线,对每次读取,利用不同的偏移电压修改选择的读取级别电压。因此,对于每个偏移电压产生一个错误计数,并且产生该表以利用字线和相应的偏移电压来标引该错误计数。
图5A至图5C示出了根据本主题技术的各方面的用于循环的存储块的示例性最优读取级别偏移的图表。如上文解释的,随着存储元件被循环,他们其可经受某些退化。因此,分布L1、L2和/或L3可从预期值漂移或移动,并且需要新的最优读取级别,使得用具有最小错误的新值来读取元件。在所示的实例中,对主读取级别RL1、RL2和RL3为存储块的128字线(0-127)绘制了最优读取级别偏移值。图5A表示使用RL1对MSB页进行的示例性读取,并且示出了在设置于用于较高的字线号的14个跳变之前,读取级别偏移值如何在18个跳变与12个跳变之间变化。图5B表示使用RL2对LSB页进行示例性读取。图5B示出了与较高的字线号处(例如在块的结束处)相比在较低的字线号处(例如,在块的开始出)怎样需要较大偏移(即,18个跳变)。应用于RL2的读取级别偏移可见总体上数值下降,从对字线0的18个跳变至对字线120的10个跳变,然后最终至字线127的4个跳变。图5C遵循类似的模式。
图6示出了根据本主题技术的各方面的用于生成偏移字线组的示例性算法的方框图。算法602可实现成计算机软件(例如,在计算设备上执行的指令)、电子硬件或这两者的组合。使用三个(或更多个)不同的读取级别将需要提供用于读取存储元件的最优读取级别的偏移值存储在例如128个字线中的每一个中将会提供大量存储器空间。因此,本主题技术实现了一种读取级别成形算法602,该算法降低了需要存储的偏移值(或读取级别)的量,同时在存储器读取操作中提供接近最优比特错误率降低。读取级别分析算法602减少了所存储的读取级别偏移的量,而不使由对应的由可增加硬或软编码故障的对应读取操作产生的比特错误率降级。
示例性读取级别分组算法602的输入是例如块的字线的初始划分形式的初始边界条件和先前描述的错误计数表400。由边界条件定义的字线的每个划分形成候选(输入)字线组的集合,每个候选字线组由相继的字线地址构成。例如,初始边界条件可指定四个候选组,组1是字线0至31,组2是字线32至63,组3是字线64至95,并且组4是字线96-127。这些候选组建立初始边界条件,算法600使用这些初始边界条件来分析错误率并最后生成最优边界条件以用于形成在存储装置的操作期间在读取操作中使用的最优(输出)偏移字线组。
示例性算法602接收表400和初始边界条件,并且输出最优偏移字线组。通过算法602输出的每个最优偏移字线组包括作为初始条件的一部分输入的全部字线(如128个字线)的相继部分。由算法602输出的最优偏移字线组的边界可与初始边界条件相同也可不同,并且在许多情况下是不同的。每个最优偏移字线组包括与该组的对应最优偏移电压配对的相继分组的字线。这些组可相对于其字线相继排序。
每个最优偏移字线组与每个相应最优偏移电压的每个配对,都针对读取每个偏移字线组的字线时的总体最低可能错误计数并且这些组作为整体,由该算法自动地选择。总体上,由算法400产生的最优偏移字线组集至少部分地基于迭代标引表400,其基于字线位置和用于每个初始字线组集的偏移值,以确定用于每个输出组的最佳配合的或标准化的错误计数。因此,读取级别分组算法602如基于输入表(400)输出最优偏移字线组(如,用于每个组的边界)和最优读取级别偏移(或读取级别)以为每个组提供最少比特错误率退化。
图7示出了根据本主题技术的各方面的用于生成偏移字线组的第一示例性过程700的流程图。为了解释的目的,这里参考本文描述的部件和/或过程来描述示例性过程700的各个方框。例如通过一个或多个处理器(包括例如图15中的控制器1501或控制器1501的一个或多个部件或处理器)来执行过程700的一个或多个方框。在一些实现方式中,可与其他方框分开地执行一个或多个方框,并且可通过一个或多个不同的处理器或控制器执行一个或多个方框。另外为了解释的目的,示例性过程700的方框被描述为串行地或线性地发生。然而,示例性过程700的方框可并行地发生。此外,示例性过程700的方框不一定需要以所示出的顺序执行,和/或不一定需要执行示例性过程700的一个或多个方框。
根据各个实现方式,通过读取级别分组算法602实现过程700的方框。这样,对于在存储器装置中使用的每个可能的读取级别可执行过程700的方框或其子集。例如,可基于表400和输入的边界条件执行过程700的方框以生成用于RL1、RL2和RL3的最优偏移字线组。在不同的方面,对于每个不同的读取级别可生成不同尺寸的和/或具有不同偏移值配对的偏移字线组。此外,可执行过程700的方框以生成用于不同块和/或晶元的不同的组。在操作之前或在操作期间,可在配置存储装置期间实现过程700。
总体上,对于每个初始边界条件而言,过程700执行多个迭代步骤以对于每个组自动地选择最优组边界和对应的最优读取级别偏移,与最优比特错误率相比,其提供总体比特错误率的最少增加,如由对应的输入表400确定。对于由边界条件限定的多个候选组而言,算法600可选择两个相继的组k和k+1,并且从该第一组的第一元素开始直到第二组的最后元素,考虑所有可能的两个相继划分。
在所示的实例中,块的字线被分成候选组(702)。在使用128个字线的实例中,该块被分成四个候选组,其中,组1为字线0至15,组2为字线16至31,组3为字线32至63,组4为字线64至79,等等。如前文描述的,组的划分可表示为组的边界。过程600然后选择相继的候选组集(704)。例如,可选择组1和组2,从而形成0至31之间的字线集。考虑该集的多个相继子组的排列(706)。在这里的各实例中,考虑两个子组的排列(permutation),但可考虑更多个的子组。在给出的实例中,由于子组是相继的且组内的字线是相继的,所以对于n个字线的最大排列数为n-1个排列。示例性的范围0至31的字线集的排列可包括{[0,1-31],[0-1,2-31],[0-3,4-31]...[0-30,31]}。
示例性过程700被描述为最小平均算法。即,对于每个可能的排列而言,基于对应的错误表计算平均错误计数,然后比较排列内的子组以选择具有最少错误计数的那些子组。这样,基于错误计数表400使用所有可用的读取级别偏移来计算每个子组的错误计数,并且确定向每个排列提供最少错误计数的读取级别。在所示的实例中,过程700始于(或选择)第一排列(708),然后对于排列(710)内的每个子组对表示在输入表400中的每个偏移值查找该子组对应的总体错误计数(712)。例如利用呈现在表400中的第一偏移值和第一(i=1)子组内的每个字线索引表400以确定该子组内的每个字线的错误计数,然后将所确定的错误计数求和,由此可查找总体错误计数。以相同的方式确定由表400呈现的对于其他偏移值的总体错误计数,并且比较错误计数的求和结果以识别对该子组具有最少错误计数的偏移值。然后选择所识别的偏移值,并且其与该子组相关联(714)。相同的过程应用于该排列的下个子组。
重复前述过程(716),在方框708重新开始,直到偏移值与每个排列的每个子组关联,每个子组也与对应于相关偏移值的总体错误计数关联。下面的表1提供了对于两个子组的三个排列的示例性偏移关联。
排列 | 第一子组偏移 | 第二子组偏移 | 第一子组TEC | 第二子组TEC |
0,1-31 | 16 | 14 | 28640 | 16254321 |
0-1,2-31 | 18 | 16 | 63012 | 16222110 |
0-2,3-31 | 18 | 18 | 104832 | ... |
0‐3,4‐31 | 18 | 18 | ... | ... |
表1 用于所选排列的示例性偏移关联
一旦偏移值与每个排列的每个子组关联,过程700选择具有最少总体错误计数的排列(718)。取决于所使用算法的实现方式,最少总体错误计数可为排列内的两个子组或者第一子组或第二子组的总体错误计数。在各个实例中,在所有字线(两个子组)上求和的总体错误计数用于对排列进行比较。通过将第一子组及其所选排列的对应偏移选择为最优对而使过程700继续(720)。
通过选择第三候选组而使过程700继续,并且使用第二子组和第三候选组来重复前述步骤。在所示的实例中,过程700确定是否存在更多候选输入组(722)。如果存在下一个候选组(例如,上述实例中的字线32至47),然后选择在方框718识别的排列的第二子组,并连同下一个候选组被重构到该算法(724)。在上述实例中,如果第一子组包括基于第一和第二候选组(具有0至31的字线边界)生成的0至22的字线边界,则在下一候选组集中使用具有字线23至31的第二子组连同输入到算法中的下一后续候选组。因此,在上述实例中,下一候选组集将包括具有字线23至31的候选组和具有字线32至47的候选组。如果不存在下一候选组,则该方法可将在方框718中识别的排列的第二子组及其对应偏移选择为最终最优对(726)。
可重复过程700,直到输出的组边界从一个迭代至下一迭代不再改变,或者直到达到某一数量的迭代。可使用相同的初始边界条件、在方框726结束时产生的输出边界条件或新的/不同的边界条件进行每个迭代。还可将随机化引入到过程700内。例如,可生成包括不具有任何特定顺序的子组的排列。第一子组可包括字线13至31,而第二子组可包括字线0至12。
虽然示例性过程被描述为最小平均算法,但可执行其他类型的算法。例如,可执行最小-最大算法。在这种方式中,对于排列内的每个子组(710),方框712可被修改成对于每个偏移值查找子组中的所有字线的最大错误计数(712)。可例如通过索引表400的第一偏移值并将由该第一偏移值标引的错误计数与子组中的每个字线(例如,排列{[0-3],[4-31]}的第一子组的字线0、1、2和3)进行比较来查找最大错误计数。然后将对于每个偏移值查找的最大错误计数进行比较,然后选择与所有最大错误计数的最小值对应的偏移值并使其与子组关联(714)。相同的过程可应用于排列的下一子组。执行最小-最大算法的过程700的一个益处包括将错误保持在通过存储装置使用的错误更正编码的最大能力以下,以更正错误。
在某些方面,本主题技术可包括执行与上文相对于示例性过程700所讨论的方框和步骤不同的方框和步骤。通过利用初始边界条件和表400,过程700输出用于最优偏移字线组的边界,其包括用于每个组的最优读取级别,其从表400的最优值中提供例如用于每个组中的每个字线的最小比特错误率退化。
图8示出了根据本主题技术的各方面的用于生成偏移字线组的第二示例性过程800的流程图。为了解释的目的,这里参考本文中描述的部件和/或过程来描述示例性过程800的各个方框。可例如通过一个或多个处理器(包括例如图15的闪存控制器1501或者控制器1501的一个或多个部件或处理器)来实现过程800的一个或多个方框。在一些实现方式中,可与其他方框分离地以及通过一个或多个不同的处理器或控制器来实现一个或多个方框。另外为了解释的目的,示例性过程800的方框被描述为串行或线性地发生。然而,示例性过程800的多个方框可并行地发生。此外,不一定需要以所示的顺序实施示例性过程800的方框,和/或不一定实施示例性过程800的一个或多个方框。
根据多个实现方式,过程800的方框对应于或补充过程700的一个或多个方框。这样,可通过算法600执行过程800的方框的一部分。对于存储器装置中使用的每个可能的读取级别可执行过程800的方框及其子集。例如,可基于表400和输入的边界条件执行过程800的方框以生成用于RL1、RL2和RL3的最优偏移字线组。在各个方面,对于每个不同的读取级别可生成不同尺寸的和/或具有不同偏移值配对的偏移字线组。此外,可执行过程800的方框以生成用于不同块和/或晶元的不同组。在操作之前或期间,可在配置存储装置的过程中实现过程800。
在所示的实例中,根据本发明技术的系统提供足以读取大多数被编程为预定编程级别的存储元件的读取级别电压(802)。在一些实现方式中,每个存储元件为多级非易失存储元件,其被配置成编程为四个编程级别之一。例如,第一和第四编程级别可与第一比特值关联(如最高有效位的二进制数0或1的表示),并且第二和第三编程级别可与第二比特值关联(如最低有效位的二进制数0或1的表示)。如前文描述的,当以元件的编程级别对应的特定读取级别(如RL1、RL2、RL3)将电压施加于存储元件时,该元件将导通以指示编程级别。
系统将多个存储器字线分成多个最优字线组,每个字线组与多个标准化读取级别偏移中的一个关联(804)。最优字线组中的每个由存储块的相继排序的字线构成,其中,第一个组的字线在第二个组的字线之前。这样,对由使用读取级别电压的每个偏移造成的最佳错误率,规范化该偏移,以读取对应字线组的字线。在一些实现方式中,将多个字线化分成最优字线组包括基于与相应排列关联的总体错误计数的最小值从预定的字线候选组集内选择相继字线子组的相应排列(例如图7中的方框702至706)。在这种方式中,相继字线子组中的每一个与对应于与多个可能的读取级别偏移关联的错误计数的最小值的读取级别偏移关联。
作为例子参考图7,可从预定的一组候选字线组(704)中选择第一和第二相继字线组(704)。如前文描述的,候选字线组可基于初始边界条件。然后对所选的第一和第二相继字线组提供多个子组排列(706),其中,每个子组排列包括覆盖第一和第二相继字线组的字线的多个相继字线子组。对于相应子组排列的每个字线子组而言,可从可能的读取级别偏移中选择相应的读取级别偏移,使得当使用该读取级别电压来读取字线子组中的字线时,相应的读取级别偏移产生对于该字线子组的最少量的错误(714)。然后可选择对于子组排列中的相继字线子组具有最少总体错误计数的多个子组排列(718)。因此,多个字线组可至少部分地基于与多个子组排列的所选一个对应的一个或多个读取级别偏移。
在一些实现方式中,将多个字线分成多个字线组包括基于与相应排列关联的最大错误计数从预定的字线候选组集中选择相应的相继字线子组的排列,其中,相继字线子组与对应于与多个可能的读取级别偏移关联的最大错误计数的最小值的读取级别偏移关联。如一实例,对每个字线子组,系统可确定当每个可能的读取级别偏移与读取级别电压一起使用以读取字线子组的字线时对于字线子组中的字线生成的最大错误数量。然后可从多个可能的读取级别偏移中选择与所确定的最大数量的最小值对应的读取级别偏移。对于每个子组排列而言,确定与子组排列的字线子组对应的所选的读取级别偏移的最大错误计数。然后选择具有对于子组排列确定的最大错误计数的最小值的子组排列(例如见718)。
在上述实现方式的一个或多个中,可基于预定的候选字线组集内的相继字线的交错而生成相应排列的每个相继字线子组。交错可用于引入随机化。例如,子组排列中的第一字线子组可包括字线14至31,然后是包括字线0至13的第二子组。在包括三个子组的子组排列中,排列的第一字线子组可包括字线4至6,排列的第二字线子组可包括字线0至3,并且排列的第三字线子组可包括字线7至32。
此外,可基于标引错误率的表(例如使用上述实现方式的任一种)来生成每个相应的规范化读取级别偏移,其中,基于相应读取级别偏移和相应字线标引表中的每个错误率。在这种方式中,表可由多个相继字线标引,以识别对于每个相继字线具有最低错误率的对应读取级别偏移,并确定在与单个识别偏移关联时对于相继字线组具有最小可能错误率的一组相继字线。
一旦生成字线组,多个规范化的读取级别偏移与其相应的最优字线组关联,且被存储以在存储装置的操作期间读取存储元件中使用(806)。这样,前述过程自动地选择最优组边界以及对于每个组的对应的最优读取级别偏移,提供最优比特错误率相比的总体比特错误率的最少增加。
示例性过程700和800的多个上述特征以及相关特征和应用可被实现为软件过程,该软件过程被规定为计算机可读存储介质(还被称为计算机可读介质)上记录的指令集。当由一个或多个处理单元(例如一个或多个处理器、处理器的核心,或其他处理单元)执行这些指令时,其引起处理单元执行指令指定的动作。计算机可读介质的实例包括但不限于,CD-ROM、闪存盘、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质可不包括无线地行进或在有线连接之上的载波和电子信号。
在低密度奇偶检查(LDPC)应用中,LLR可包括介于“0”或“1”的比特概率之间的比值的对数。LLR可覆盖预定范围。例如,在一些实现方式中,LLR可覆盖-225至+225的范围。正的LLR总体上可表示从存储元件读取的信号可能是0比特,并且负的LLR总体上可表示从存储元件读取的信号可能是1比特。LLR可与从存储元件读取的比特值关联。与具有等于1的指定LLR的比特相比,与等于5的LLR关联的比特可更近似于二进制数0。具有等于0的指定LLR的比特可近似等于二进制数1或0。
在某一读取级别处,如果从存储元件中读出0比特,则可指派正的LLR。如果读出1比特,则可指派负的值。在具有两比特的多级存储元件中,存在多个潜在的元件分布级别(例如,L0、L1、L2和L3)。在MSB的读取中在二进制数1与二进制数0之间的区分需要确定交叉的多个读取级别边界。在图1的实例中,0与1之间的区分需要确定元件是否在中间两个分布L1和L2内(例如对于二进制的0x)或在端部分布L0和L3(例如对于二进制的1x)导通。因此,做这种判定时可涉及多个读取级别(例如RL0和RL2)。
图9示出了根据本主题技术的建模为具有二元输入和K元输出的离散无记忆通道(DMC)的示例性闪存通道900。在这个实例中,K元输出对应于可用多个读取识别的K元件编程区域(容仓)。通道900的模型提供了对于对数似然比(LLR)的定义。使用这种模型,LLR可被定义为:
在一些实施方式中可假定,所有的输入是等概率的;这样,方程式(1)的表达变成:
参考图2A,如果对于LSB页读取K=2,则K区域被指定为ri∈{α0,α1},其中,由下列方程式给出图2A的区域α1的LLR:
参考图2B,在对于MSB页读取的K=7的情况下,该区域可被指定为:
(4)ri∈{α0,α1,α2,α3,α4,α5}
在N次读取中的每次之前可设定读取级别。查找表可用于确定有多少读取级别和用于读取级别的值基于多少容仓用于确定存储元件的LLR值。闪存装置被构造为使用所存储的读取级别来读取LSB或MSB。如前文描述的,为了产生容仓(bin),第一读取级别用于确定元件的推定值,然后进行多次读取以确定关联的LLR值。在一些方面,通过利用相应的容仓关联的预定(例如存储的)偏移改变第一读取级别,由此来确定读取级别。这个偏移可与由本主题技术确定的偏移不同。
分析读取数据的转换来确定哪个区域包含每个存储元件的电压阈值(VT)。因此,可(例如,临时地)存储第一读取级别,基于从存储元件读取(例如正的或负的)二进制值确定的域,并且通过存储器控制器启动第一读取级别与后续读取级别之间的差值。读取级别可按预定的次序改变或不改变。如果以预定的次序改变读取级别,则仅可存储前一读取级别,并且基于每个后续读取确定元件编程区域。如果(如一次)执行所有读取,则可使用查找表基于所接收的二进制值来确定容仓(bin)。一旦确定,就可确定对于每个元件编程区域的容仓号。指派给该容仓的LLR可应用于落在该容仓内的全部元件。对每个存储元件,在查找表中容仓号映射到LLR值。
根据前述,对于主读取级别(如RL1、RL2或RL3),容仓的数量等于读取数量加一。因此,对LLR值生成的表可具有对应于8个容仓的8列。在这个实例中,MSB页具有两行,如表2中所示:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
RL1 | -255 | -114 | -133 | -116 | -78 | -38 | 5 | 117 |
RL3 | 174 | 154 | 127 | 91 | 50 | 7 | -38 | -133 |
表2
主读取级别关于表2的位置在容仓3与容仓4之间。对LSB页生成的表可仅需要一行,如表3所示
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
RL2 | -255 | -199 | -163 | -119 | -70 | -23 | 24 | 110 |
表3
如前文描述的,可与主读取级别关联地实现偏移(偏压值),以获得具有低比特错误率的最优读取级别。可例如在晶元或块或者在独立字线的基础上,全局地设置偏移值。每个字线可具有不同的和/或独特的特征,其使每个字线在读取操作期间表现出或多或少的错误。因此,为了获得最佳错误率(最小错误率),必须确定最优读取级别。在一些方面,可通过实验数据确定字线的最优读取级别。在本文描述的多个实例中,可按不同的偏移来读取字线,并且对每个读取的错误计数放在表中以用于后续比较。虽然实验数据可用于存储器的生命周期的一部分,但存储元件的特征随时间而变,并且在存储元件的寿命周期的一段时间之后,数据不能用于获得最佳错误率。
例如,对每个读取级别(如RL1、RL2或RL3)以及对存储器的预期寿命中的多个不同的时期,可在存储器中可存储不同的表400,使得装置可在该装置的整个预期寿命中获得接近最优的比特错误率。然而,实验数据可用于每个晶元、每个块或者甚至在装置的寿命中有个别字线或存储元件经受的任何形式的退化。因此,本主题技术提供了一种机制,在存储器装置的操作期间通过估算新的读取最优读取级别和/或偏移(例如在运行时)动态地校准读取级别。
图10A至图10C示出了根据本主题技术的多个方面的用于校准示例性读取级别和/或读取级别偏移的示例性线性插值图。该图表达了本主题技术的算法如何确定用于读取操作的新的校准偏移。参考上述表2和表3,每个图均绘制了相对于与每个容仓关联的预定偏移值所计算的LLR值。因此,x轴表示正负偏移值从未校准的零偏移902开始的范围。在所示的实例中,未校准偏移1102(标记为“0”)在其利用生成容仓的“补充”读取级别被重新读取之前,对应于相应的“中央”读取级别(例如RL1、RL2或RL3),该中央读取级别用于初始地确定存储元件的编程级别。
根据一固定量,每个容仓覆盖x轴上的6个跳变。在所示的实例中,偏移被均匀地间隔开6个跳变。在X轴上,偏移0至+6对应于容仓4,偏移+7至+12对应于容仓5,偏移+13至+18对应于容仓6,并且偏移+19至+24对应于容仓7。类似地,x轴上的偏移0至-6对应于容仓3,偏移-7至-12对应于容仓2,偏移-13至-18对应于容仓1,并且容仓-19至-24对应于容仓0。分别以偏移值-21、-15、-9、-3、+3、+9、+15和+21绘制位于容仓中的对应LLR值。这些偏移值仅提供为实例并且根据具体存储器实现方式可使用其他偏移值。
一旦读取字线或区段的存储元件并确定LLR,本主题技术就对表中的RL1、RL2和RL3中的每个把LLR指派给容仓,如上文的表2和表3中所示。LLR值在对应容仓(例如0-7)上的线性插值然后用于确定所呈现的LLR值的过零点。这样,对表的行中的LLR值进行扫描,以确定过零点的位置。关于图10A和上述表1,RL1的过零点介于容仓5与容仓6之间,容仓5和容仓6的LLR值分别为-38和5。沿着x轴与过零点(1004)对应的偏移值(1006)被选择为用于对应读取级别(例如RL1、RL2或RL3)的校准偏移值。在图10A中,所校准的偏移值被确定为近似+14个跳变(例如,+175mV,其中每个跳变为25mV)。在图10B中,所校准的偏移值被确定为近似+12个跳变。在图10C中,所校准的偏移值被确定为近似+10个跳变。
如上文指出的,可对每个读取级别(例如RL1、RL2或RL3)确定校准的偏移值。在一些实现中,校准的偏移值可替代或用于调节用于每个个别字线或者总体上用于块或晶元的已有偏移值。在一些实现方式中,校准的偏移电压替代先前与由例如过程700和/或800确定的偏移字线组关联的读取级别偏移。在一些方面,将通过校准电压来调节先前关联的读取级别偏移。
在这种情况下,无需基于用于块、晶元或组的全部存储元件的LLR值确定校准偏移电压,而是根据到达一个或多个所选字线、字线的部分、一个或多个码字等,基于指派给容仓的LLR值来确定校准偏移电压。在一些实现方式中,除了对字线组确定的偏移之外,还可存储校准的偏移值,并且在读取操作时与指派给字线组的偏移和任何可用的全局偏移求和。
可在闪存装置的预期寿命中的特殊点处使用上述过程来校准读取级别。例如,在块经受预定数量的编程/擦除循环时执行校准过程。例如响应于与满足预定阈值数量错误的读取操作关联地产生的错误计数,在“困难模式”中执行校准过程。预定的阈值在一段时间上对于单个读取操作或对于多个读取操作可相对于一个或多个码字、字线、块或其组合。在一些实现方式中,预定阈值的错误可包括对一个或多存储元件(其为读取操作的主题)进行读取或解码的故障。例如,所产生的错误的数量可多于与可处理的闪存装置关联的ECC方案。
响应于识别与过高错误计数(满足阈值)关联的字线,实现本发明技术的闪存控制器或其部件可读取邻近于所识别字线的一个或多个字线中的存储元件,以生成相应容仓的LLR值,并且使用前述LLR线性插值过程来确定新的校准偏移值以用于读取字线。如果能读取并成功地解码相邻字线,则可使用新校准偏移值来恢复所识别字线中的存储元件的读取。然后可使用为校准偏移值的设定的(例如由校准偏移值调节的)读取级别来重新读取所识别的字线。
类似地,经受读取操作的码字(如范围覆盖字线或者字线的一部分)可被识别为具有满足错误阈值的错误率。例如,对该码字解码的所有尝试都可失败。响应于识别码字,实现本主题技术的闪存控制器或其部件可读取邻近于所识别码字的一个或多个码字中的存储元件,以生成LLR值,并且使用前述LLR线性插值过程来确定新的校准偏移值。如果可读取并成功解码相邻的码字,则可尝试使用新的校准偏移值来恢复失败的码字。然后可使用设定为校准偏移值的(例如由校准偏移值调节的)读取级别重新读取所识别的码字。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
RL1 | -255 | -108 | -71 | -25 | -22 | -70 | 111 | 146 |
RL2 | -255 | -123 | -74 | -24 | -26 | -74 | 109 | 119 |
RL3 | 191 | 112 | 70 | 23 | -26 | -74 | -117 | -165 |
表4
上述表4表达了在校准与表2和表3的LLR值对应的各个读取级别偏移之后的用于每个容仓的更新的LLR值。如由表4可见,对于全部三个读取级别,过零点(1004)现在位于容仓3与容仓4之间。图10D至图10F示出了根据本主题技术的多个方面的用于再校准示例性读取级别和/或读取级别偏移的示例性线性插值图。在根据上述相对于图10A至图10C描述的过程调节读取级别之后,然后可使用相同的过程来重新校准所调节的读取级别以验证或微调该校准。产生的LLR值预期最终收敛于零偏移,如由表4和图10D至10F的图表所示。
图11A和图11B描述了根据本主题技术的各个方面的示例性读取级别最优模式。闪存体系结构可被配置成使得数据集包括存储器的多个通道1102,每个通道1102例如包括一个或多个存储块1104。可由每个通道1102寻址的每个块1104还可由页1106寻址。在所示的实例中,每个通道寻址单个存储块,每个块具有256个页(例如页0-255)。如前文描述的,页1106可由字线物理地表示,并因此,术语“页”和“字线”可交换地使用。
在一些实现方式中,如由图11A描述的,偏移电压可与能由存储器通道寻址的全部块和全部页总体地关联1108。在这种实现方式中,相同的偏移值是在读取与多个存储器通道关联的任何页或块的存储元件时使用的“总体”偏移。因此,可使用本文描述的任一计数来校准总体偏移。在一些实现方式中,如由图11B所示,可例如通过使每个偏移值与页址关联来使用多个偏移1110,其中每个偏移值与每个页(字线)关联。与页地址关联的相同偏移值可用于所有存储器通道上的每个页。这些“页偏移”可相对于总体偏移,总体偏移将被应用于(并且根据需要调节至)全部页,并且在读取每个页时将通过对应页偏移来修改总体偏移。
图12示出了根据本发明的多个方面的对用于读取存储装置中的多个存储元件的读取级别进行校准的示例性过程的流程图。为了解释的目的,这里参考本文描述的部件和/或过程来描述示例性过程1200的各个块。例如可通过一个或多个处理器(包括如图15的闪存处理器1501或控制器1501的一个或多个部件或处理器)执行过程1200的一个或多个块。在一些实现方式中,一个或多个块可与其他块分开实现,并且通过一个或多个不同的处理器或控制器来执行。而且为了解释的目的,示例性过程1200的块被描述为串行地或线性地发生。然而,示例性过程的多个块可并行地发生。此外,示例性过程1200的块不需要以所示顺序执行,和/或不需要执行示例性过程1200的一个或多个块。
根据多个实现方式,过程1200的块对应于或者补充关于图9和图10A至图10F描述的过程。对于在存储器装置中使用的每个可能的读取级别可执行过程1200的块或其子集。例如,过程1200的块可被执行,以生成、调节和/或校准用于RL1、RL2和RL3的字线或字线组的偏移。在多个方面,对于每个不同的读取级别可生成不同尺寸的和/或具有不同偏移至配对的偏移字线组。此外,过程1200的块可被执行,以生成、调节和/或校准用于不同块的不同组和/或晶元的偏移。在操作之前或在操作期间,在配置存储装置的过程中执行过程1200。
在所示的实例中,根据本发明技术的系统提供了足以读取大多数编程为一预定编程级别的存储元件的读取级别电压(1202)。如前文描述的,存储元件可为单级或多级非易失存储元件,其被配置成编程为四个编程级别之一。例如,第一和第四编程级别与第一比特值关联(例如最高有效位的二进制数0或1的表示),并且第二和第三编程级别可与第二比特值关联(例如最低有效位的二进制数0或1的表示)。如前文描述的,当以元件的编程级别对应的特定读取级别(例如RL1、RL2、RL3)对存储元件施加电压时,该元件将导通以指示编程级别。
在存储器装置的寿命周期中的一预定时间段之后,生成与一个或多个存储器元件的多次读取对应的可靠性值(1204)。在这个实例中,每次读取均使用读取级别电压的变化,并且每个产生的可靠性值表示存储元件的输出状态等于预定编程状态的可能性,可靠性值的范围覆盖负值和正值。如前文描述的,对于多个可靠性值而言,正可靠性值表示对应输出状态为二进制数0,而负可靠性值可表示对应输出状态为二进制数1。
在生成可靠性值之后,识别从读取级别电压偏移的偏移电压(1206)。在图10A至图10C所示的实例中,该偏移对应于可靠性值(例如表2和/或表3)的范围中的过零点1104。
在识别(例如用于读取级别的)偏移电压之后,基于该偏移电压,读取级别电压被设定成校准的电压(1208)。根据本主题技术的多个方面,将读取级别电压设定为校准的电压可包括:例如在与读取操作关联的情况下,从存储位置取得所识别的偏移电压,并且利用所识别的偏移电压来调节读取级别电压,以读取存储元件。在一些实现方式中,在多个存储器通道上的存储元件上进行读取操作,每个通道可被配置为对一个或多个存储元件进行寻址。
参考图11A,所识别的偏移电压可与能由多个存储器通道寻址的全部块和全部页关联,使得在读取与多个存储器通道关联的任何页或块的存储元件时通过所识别的偏移电压调节读取级别。参考图11B,所识别的偏移电压可与页地址关联,并且在通过多个存储器通道中的任一个读取与页址关联的存储元件时通过所识别的偏移电压来调节读取级别,其中,能通过与不同偏移电压关联的存储器通道对每个页址进行寻址。
此外,校准过程可应用于更新用于个别字线的偏移或者应用于更新与最优字线组关联的偏移。例如,可存储多个预定读取级别,其中,每个预定读取级别偏移与一组字线关联,该组字线与该组中的读取存储元件中的相应读取级别电压一起使用。对相应的字线组,可用所识别的偏移电压来更新先前与该组关联的读取级别偏移。因此在与读取操作关联的情况下,可从其存储位置(例如查找表)来获取更新的读取级别偏移,以将读取级别电压设定成校准电压,并且新校准的电压用于读取相应字线组。
图13示出了根据本发明技术的多个方面的用于校准读取级别以恢复数据的示例性过程的流程图。前述校准过程1200还可应用于恢复不能被读取或解码的数据。在图13所示的示例性实现方式中,在读取操作期间,识别关联一错误率的一个或多个字符行,该错误率满足错误阈值(1302)。例如,读取字线或码字可产生过多数据错误以用于编码处理错误更正。这样,读取操作有可能不能读取存储在一个或多个被识别字线处的数据。
响应于识别字线或码字,可调用图12的过程1200或其一个或多个块以恢复一个或多个字线的数据。这样,邻接所识别字线或码字的一个或多个字线或码字中的存储单元被读取,以生成上文关于图10A至图10C描述的多个可靠性值(1304)。在生成可靠性值之后,识别新校准的偏移电压(例如,其在可靠性值的范围中对应于过零点1004),并且读取级别电压被设定/调节成新的校准偏移电压(1306)。然后使用新校准的读取级别电压重新读取所识别的字线或码字(1308)。
图14示出了根据本发明技术的多方面的用于基于再生成和再标引错误计数表而再生成多个最优偏移字线组的示例性过程的流程图。为了解释的目的,这里参考本文描述的部件和/或过程描述示例性过程1400的各个块。在例如通过一个或多个处理器(包括例如图15的闪存控制器1501或控制器1501的一个或多个部件或处理器)实现过程1400的一个或多个块。在一些实现方式中,一个或多个块可与其他块分开实现,并且通过一个或多个不同的处理器或控制器执行一个或多个块。而且,为了解释的目的,示例性过程1400的多个块可被描述的串行地发生或线性地发生。然而示例性过程1400的多个块可并行地发生。此外,示例性过程1400的方框不需要以所示顺序执行,和/或无需执行示例性过程1400的一个或多个块。
根据多个实现方式,过程1400的框对应或补充过程700、800、1300和/或1200和/或关于图9和图10A至图10F描述的过程的一个或多个框。可对用于读取存储器装置中的存储元件的每个可能的读取级别执行过程1400的框或其子集。这些存储元件被配置以编程为多个编程级别,通过读取相应的读取级别电压处的存储元件来确定每个编程级别。过程1400的方框被执行以生成、调节和/或校准用于RL1、RL2和RL3的字线或字线组的偏移。可通过算法602执行过程1400的方框的一部分。在多个方面,可对每个不同的读取级别生成不同尺寸和/或具有不同偏移值配对的偏移字线组。此外,过程1400的方框可被执行以生成、调节和/或校准用于不同方框和/或晶元的不同组的偏移。在操作之前或在操作期间,可在存储装置的配置过程中实施过程1400。
在所示的实例中,根据本发明技术的系统基于读取存储块的字线的第一样本生成错误计数表(1402)。表400是可由本发明技术生成的错误计数表的一个实例。如前文描述的,为了生成新的表,可使用利用不同偏移电压修改的读取级别电压多次读取每个字线,以产生用于字线和相应读取级别电压的每个组合的错误计数。每次读取均可产生对于每个偏移电压的错误计数。生成该表,使得该表的行对应于字线且表的列对应于偏移值。该表通过对应字线标识符(例如,字线地址或部分字线地址)和不同读取级别电压的相应一个(例如,用相应偏移电压或偏移电压修改的读取级别)来标引每个产生的错误计数。被生成的错误计数然后利用字线和相应读取级别电压来标引。
此外或可替换地,可读取存储块的字线的第一样本,其中,使用不同读取级别电压来多次读取每个字线,以产生对字线和相应读取级别电压的每个组合的错误计数。每个字线与字线标识符(例如,字线的地址)关联。然后可基于所产生的错误计数生成错误计数表,其中,错误计数表利用对应字线标识符和不同读取级别电压的用于产生错误计数的相应一个来标引每个产生的错误计数。
与配置实现本发明技术的存储装置相关,基于错误计数表和多个字线的初始划分(例如通过算法602)形成多个最优偏移字线组(1404)。该字线组可基于用于标引错误计数表的字线标识符而形成,每个字线组把不同读取级别电压的相应一个与待执行读取操作的多个字线相关联。如前文关于过程700和800以及图7和图8描述的,每个最优偏移字线组可包括与对应偏移电压配对的字线的相继分组部分,为了读取每个所述字线组中的字线的总体最小可能错误计数而选择配对。这样,可利用相应字线和读取级别偏移电压来标引错误计数表以确定每个字线的最大和/或最小错误计数可能,然后将字线组织到相继组中,每个组与对该分组提供最小可能错误计数退化(与独立字线相比)的偏移值配对。
在生成最优字线组(包括对应偏移电压)之后,存储装置被配置成使用基于错误计数表中的错误计数为字线组选择的读取级别偏移电压在字线组的相应字线上进行读取操作(1406)。因此,与读取偏移字线组的特定字线的存储元件相关,可识别与相应偏移字线组关联的偏移电压,并且使用所识别的偏移电压来读取存储元件。在多个实现方式中,所识别的偏移电压修改相应的读取级别电压,以与不修改相应读取级别电压的情况相比以较少错误读取存储元件。
在存储块的寿命周期中的预定点(例如,存储块中的存储元件产生预定阈值以上的比特错误率或者经受预定数量的编程/擦除循环的点)之后,可重新校准包括关联偏移值的最优字线组。这样,重新生成错误计数表(1408)。该错误计数表可基于读取与用于标引错误计数表的字线标识符对应的字线的第二样本而生成。例如,错误计数表可基于在存储器装置的当前条件(例如电压级别)下读取存储块的多个字线而生成。
在一些实现方式中,在生成错误计数表之前,可校准用于生成该表的读取级别和/或偏移电压。简要地参考图13和过程1300,可生成与关于相应读取级别电压的多次读取对应的可靠性值,识别用于读取级别电压的校准电压(例如用于校准已有的读取级别的偏移电压),并且存储装置被配置成基于与读取级别电压有关的校准电压而重新读取存储块的多个字线。因此,每次读取均可使用读取级别电压的变化,并且每个生成的可靠性值可表示存储元件的输出状态等于一预定编程状态的可能性(例如对数似然比)。可靠性值的范围可覆盖负值和正值。用于重新读取字线的所识别的更新的偏移电压可对应于可靠性值的范围中的过零点。
用于生成最初错误计数表的不同读取级别电压可被更新以产生更新的读取级别电压。例如,不同读取级别电压中的每个可用校准电压调节。这样,可使用更新的读取级别电压多次读取字线的第二样本中的每个字线,以产生更新的错误计数。然后可从产生的更新错误计数中重新生成错误计数表。因此,可更新错误计数表,以用对应字线标识符和用于产生更新错误计数的更新的读取级别电压的相应一个来标引每个产生的更新错误计数。
一旦重新生成错误计数表,就基于利用字线和读取级别偏移电压标引重新生成的错误计数表而重新生成最优偏移字线组(1410)。可以由过程700和/或过程800中的一个或多个块描述的方式重新生成最优偏移字线组。
示例性过程1200、1300和1400的许多上述特征以及相关特征和应用可实现为软件过程,该软件过程被规定为在计算机可在存储介质(也被称为计算机可读介质)上重新编码的一组指令。当通过一个或多个处理单元(例如,一个或多个处理器、处理器的核心或其他处理单元)执行这些指令时,其引起处理单元执行指令中规定的动作。计算机可读介质的实例包括但不限于,CD-ROM、闪存、RAM芯片、硬盘、EPROM等等。计算机可读介质不包括载波以及无线地或在有线连接件上行进的电信号。
图15是示出了根据本发明技术的各实现方式的示例性数据存储系统1500(例如,固态硬盘)的部件的方框图。数据存储系统1500可包括数据存储控制器1501、存储介质1502以及闪存装置1503。控制器1501可使用存储介质1502来临时存储用于管理数据存储系统1500的数据和信息。控制器1501可包括一些内部部件(未示出),诸如一个或多个处理器、只读存储器、闪存部件接口(例如,用于管理指令和沿着至闪存装置1503的串行连接传输数据的多路转换器)、I/O接口、误差校正电路等等。在一些方面,控制器1501的一个或多个元件可被集成到单个芯片中。在其他方面,这些元件可体现为两个或更多个离散部件。
控制器1501或者其中的一个或多个部件可被配置为执行编码和指令,以执行本文描述的操作和功能。例如,控制器1501可被配置为执行用于管理请求流和地址映射的操作,并且执行计算并生成命令。控制器1501的处理器可用于监控和控制数据存储控制器1501中的部件的操作。处理器可为通用的微处理器、微控制器、数字信号处理器(DSP)、特定用途集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑电路(PLD)、控制器、状态机、选通逻辑、离散硬件或前述这些的组合。一个或多个指令序列可被存储为控制器1501内的ROM上的固件。一个或多个指令序列可为存储介质1502、闪存1503中存储和从中读取或者从主机设备(例如通过主机接口)接收的软件。ROM、存储介质1502、闪存装置1503表示机器或计算机可读介质的实例,在其上可储存有能由控制器1501和/或其处理器执行的指令/编码。机器和计算机可读介质总体上可表示用于向控制器1501和/或其处理器提供指令的任何有形的和/或永久的介质或媒介,其包括易失性介质如用于存储介质1502或用于控制器1501内的缓冲器的动态存储器和非易失性介质如电子介质、光介质和磁介质。
因此,数据存储系统1500还可包括主机接口1505。主机接口1505被配置为耦接至主机设备1510,以从主机设备1510接收数据以及将数据发送至主机设备1510。主机接口1505可包括电连接件和物理连接件两者以用于将主机设备1510操作地耦接至控制器1501。主机接口1505被配置为使数据、地址和控制信号在主机设备1510与控制器1501之间连通。以这样的方式,控制器1501被配置为响应于来自主机设备1510的写入命令而存储从闪存装置1503中的主机设备1510接收的数据,并且被配置为读取存储在闪存1503中的数据并相应于来自主机设备1510的读取命令通过主机接口1505将读取数据传输至主机设备1510。
主机设备1510表示配置为耦接至数据存储系统1500以及耦接至数据存储系统1500中的存储数据的任意设备。主机设备1510可为计算机系统,诸如个人电脑、服务器、工作站、便携式电脑、PDA、智能手机等。可替换地,主机设备1510可为电子设备,诸如数字照相机、数字音频播放器、数字视频记录器等。
在一些方面,存储介质1502表示用于临时存储数据的易失性存储器体以及用于管理数据存储系统1500的信息。根据本公开的一方面,存储介质1502为随机存取存储器(RAM),诸如双倍数据速率RAM。其他类型的RAM也可用于实现存储介质1502。可使用单RAM模块或多RAM模块实现存储介质1502。虽然存储介质1502被示出为区别于控制器1501,但本领域技术人员将认识到在不背离本公开的范围的前提下可将存储介质1502结合到控制器1501中。可替换地,存储介质1502可为非易失性存储器,诸如磁盘、闪存、外部SSD等。
如在图2中进一步示出的,数据存储系统1500还可包括总线。总线可使用适当的接口标准,其包括但不限于串行高级技术附件(SATA)、高级技术附件(ATA)、小型计算机系统接口(SCSI)、PCI扩展(PCI-X)、光纤信道、串列SCSI(SAS)、安全数字(SD)、内嵌式多媒体卡(EMMC)、通用闪存(UFS)和总线和接口标准(PCIe)。
主机设备1510和数据存储系统1500可通过有线或无线连接而彼此连通,并且可彼此本地或远程。根据一些方面,数据存储系统1500可包括插脚(或插座)以与主机设备1510上的对应插座(或插脚)匹配,以建立电连接和物理连接。根据一个或多个方面,数据存储系统1500包括无线收发器,使主机设备1510和数据存储系统1500彼此无线地连通。
闪存装置1503表示用于存储数据的非易失性存储器装置。根据本公开的一方面,闪存装置1503包括例如NAND闪存。闪存装置1503可包括单个闪存装置或芯片,并且可包括布置在多个通道中的多个闪存装置或芯片。闪存装置1503不限于任何具体的容量和构造。例如,物理块的数量、每物理块的物理页的数量、每物理页的区段的数量以及区段的大小可在本公开的范围内变化。
闪存可具有标准接口规格。这个标准确保多个制造商的芯片可互换地使用(至少在很大程度上)。接口还可隐藏闪存的内部工作并且仅返回内部检测的数据比特值。
术语“软件”意味着包括(在适用的情况下)存在于只读存储器中的固件或存储在磁存储器中的应用,可在存储器中读取该软件以用于通过处理器进行处理。而且在一些实现方式中,本公开的多个软件方面可实现为较大程序的子部分,同时保持区分公开的软件方面。在一些实现方式中,多个软件方面也可被实现为独立程序。最后,将独立程序组合到一起实现这里描述的软件方面的任意组合均在本公开的范围内。在一些实现方式中,当软件程序安装成在一个或多个电子系统上进行操作时,该软件程序限定执行并实现软件程序的操作的一个或多个特定机器实现方式。
计算机程序(已知为程序、软件、软件应用、脚本或编码)可以任何形式的编程语言(包括编译的或解译的语言、描述性的或程序化的语言)写入,并且其可以任意形式部署,包括部署成孤立程序或模块、部件、子程序、对象或适于在计算机环境中使用的其他单元。计算机程序可(但不一定)对应于文件系统中的文件。程序可存储在文件的保留其他程序或数据的一部分中(例如,一个或多个脚本存储在标记语言文档中)、专属于问题程序的单个文件中、或多个并列文件(例如,存储一个或多个模块、子程序或部分编码的文件)中。计算机程序部署成在位于一个站点处或分布在多个站点上的一个或多个计算机上执行,并且由连通网络相互连接。
应该理解,本文描述的所示块、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或这两者的组合。为了示出硬件和软件的这种互换能力,上文总体上在其功能性方面描述了各种所示的块、模块、元件、部件、方法和算法。这种功能性被实现为硬件还是软件取决于施加在总体系统上的具体应用和设计约束。技术人员可对于每个具体应用以变化的方式实现所描述的功能性。在不背离本公开的范围的前提下可不同地布置各种部件和块(例如,以不同的顺序布置或者以不同的方式划分)。
应该理解,所公开的步骤中的特定顺序和层次表示为一些示例性方法的说明。基于设计偏好和/或其他考虑,应理解到可重新布置程序中的步骤的特定顺序或层次。例如,在一些实现方式中,一些步骤可同时进行。因此,所附的方法要求各个步骤中的存在的元件处于样本顺序,而且并不意味着限制于所呈现的特定顺序或层次。
前文的描述提供于使被领域技术人员实践本文描述的各方面。前文的描述提供了本公开的各个实例,并且本公开不限于这些实例。对这些方面的各种修改将对于本领域技术人员是显而易见的,并且本文限定的通用原则可应用于其他方面。因此,权利要求并非旨在限制本文示出的方面,但其符合与语言要求一致的全部范围,其中,除非具体地陈述,否则参考单数形式的元件并非旨在表示“一个或仅一个”,而是表示“一个或多个”。阳性的代词(例如,他的)包括阴性和中性(例如,她的和它的)并且反之亦然。如果有的话,标题和子标题仅为了方便而不限制本公开。
谓语“配置为”、“操作为”和“编程为”并不表示主题的任何具体的有形或无形修改,而是旨在互换地使用。例如,配置成监控和控制操作和部件的处理器也可表示编程为监控和控制操作的处理器或者操作为监控和控制操作的处理器。同样地,配置为执行编码的处理器应理解为编程为执行编码或操作为执行编码的处理器。
短语“连通”和“耦接”表示直接连通或者通过本文中命名或未命名的一个或多个部件间接地连通。
短语(诸如,“方面”)不表示对于本公开必要的方面或者应用于本公开所有配置的方面,与一方面相关的公开可应用于所有配置,或者一个或多个配置。一方面可提供一个或多个实例。短语(诸如,方面)可表示一个或多个方面并且反之亦然。短语(诸如“实施方式”)不表示对于本公开必要的实施方式或者应用于本公开所有配置的实施方式。与实现方式有关的公开可应用于所有方面或者一个或多个方面。一实现方式可提供一个或多个实例。短语(诸如“实施方式”)可表示一个或多个实现方式并且反之亦然。短语(诸如“构造”)不表示对于本公开必要的构造或者应用于本公开所有配置的构造。与构造有关的公开可应用于所有配置或者一个或多个配置。一构造可提供一个或多个实例。短语(诸如“构造”)可表示一个或多个构造并且反之亦然。
词语“示例性”在本文中用于表示“用作实例或说明”。本文描述为“示例性”的方面或设计不一定被理解为比其他方面或设计优选或有利。
Claims (20)
1.一种计算机实现的方法,包括:
读取存储块的字线的第一样本,字线的所述第一样本中的每个字线与字线标识符关联并且使用不同读取级别电压被多次读取,以产生对于字线与相应读取级别电压的每个组合的错误计数;
基于所产生的错误计数生成错误计数表,对每个产生的错误计数,所述错误计数表利用对应的字线标识符和所述不同读取级别电压中用于产生该错误计数的相应一个读取级别电压来标引该错误计数;以及
配置存储装置,以使用基于所述错误计数表的错误计数选择的读取级别电压来执行读取操作。
2.根据权利要求1所述的方法,其中,所述配置存储装置包括:
基于用来标引所述错误计数表的所述字线标识符形成多个字线组,每个所述字线组把所述不同读取级别电压中的相应一个与待被执行读取操作的多个字线关联,
其中,所述存储装置被配置为使用与相应字线对应的字线组的读取级别电压而在该相应字线上执行相应读取操作。
3.根据权利要求2所述的方法,其中,所述多个字线组基于与用来标引所述错误计数表的所述字线标识符对应的字线的初始划分而生成,并且其中,每个字线组包括与对应读取级别电压配对的对应字线的相继分组部分,为了读取每个所述字线组中的字线的总体最小可能错误计数而选择配对。
4.根据权利要求2所述的方法,还包括:
在所述存储装置中的一个或多个存储块的寿命周期中的预定点之后,基于读取与用来标引所述错误计数表的所述字线标识符对应的字线的第二样本,重新生成错误计数表,以及
基于重新生成的错误计数表而重新生成多个字线组。
5.根据权利要求4所述的方法,其中,重新生成错误计数表包括:
生成多个可靠性值,所述多个可靠性值与一个或多个存储块的存储元件的多次读取对应,每次读取使用不同读取级别电压来执行,所述可靠性值的范围覆盖负值和正值;
识别校准的电压,该校准的电压与所述可靠性值的范围中的过零点对应;以及
配置所述存储装置使得基于所述校准的电压读取字线的所述第二样本。
6.根据权利要求5所述的方法,其中,重新生成错误计数表还包括:
基于所述校准的电压更新所述不同读取级别电压,其中,使用更新的读取级别电压多次读取字线的所述第二样本的每个字线,以产生更新的错误计数;以及
基于所产生的更新的错误计数重新生成错误计数表,所述错误计数表被更新,使得利用对应的字线标识符和用于产生更新的错误计数的更新的读取级别电压中的相应一个来标引每个产生的更新的错误计数。
7.根据权利要求5所述的方法,其中,所述一个或多个存储块的寿命周期中的所述预定点包括所述寿命周期中使所述一个或多个存储块中的存储元件的一次或多次读取产生错误阈值以上的比特错误率的点。
8.根据权利要求5所述的方法,其中,所述一个或多个存储块的寿命周期中的所述预定点包括所述寿命周期中使所述一个或多个存储块中的存储元件经受预定数量编程/擦除周期的点。
9.一种数据存储系统,包括:
多个闪存装置,每个闪存装置均包括多个存储块;以及
控制器,所述控制器耦接至所述多个闪存装置,其中,所述控制器在配置模式期间被配置为:
读取所述闪存装置的字线的第一样本,字线的所述第一样本中的每个字线与字线标识符关联且使用不同读取级别电压被多次读取,以产生对于字线和相应读取级别电压的每个组合的错误计数;
基于所产生的错误计数生成错误计数表,所述错误计数表利用对应的字线标识符和不同读取级别电压中的相应一个来标引每个产生的错误计数;以及
基于所述错误计数表的错误计数选择读取级别电压用于将来的读取操作。
10.根据权利要求9所述的数据存储系统,其中,所述控制器在所述配置模式期间还被配置为:
基于用来标引所述错误计数表的所述字线标识符形成多个字线组,每个字线组把不同读取级别电压中的相应一个与待被执行读取操作的多个字线关联;以及
配置所述数据存储系统,以使用与相应字线对应的字线组的读取级别电压在该相应字线上执行相应读取操作。
11.根据权利要求10所述的数据存储系统,其中,所述多个字线组基于与用来标引所述错误计数表的所述字线标识符对应的字线的初始划分而生成,并且其中,每个字线组包括与对应读取级别电压配对的对应字线的相继分组部分,为了读取每个所述字线组中的字线的总体最小可能错误计数而选择配对。
12.根据权利要求10所述的数据存储系统,其中,把所述读取级别电压与所述多个字线关联包括把所述读取电压与对应于所述多个字线的多个字线地址关联。
13.根据权利要求12所述的数据存储系统,其中,所述控制器被配置为:
在相应存储块的寿命周期中的预定点之后,基于读取与用来标引所述错误计数表的所述字线标识符对应的字线的第二样本,重新生成错误计数表,以及
基于重新生成的错误计数表而重新生成多个字线组。
14.根据权利要求13所述的数据存储系统,其中,重新生成错误计数表包括:
生成与相应存储块的存储元件的多次读取对应的多个可靠性值,每次读取使用不同读取级别电压来执行,所述可靠性值的范围覆盖负值和正值;
识别与所述可靠性值的范围中的过零点对应的校准的电压;以及
配置所述存储装置使得基于所述校准的电压读取相应存储块的字线。
15.根据权利要求13所述的数据存储系统,其中,所述一个或多个存储块的寿命周期的所述预定点包括所述寿命周期中的使所述一个或多个存储块中的存储元件的一次或多次读取产生错误阈值以上的比特错误率的点。
16.根据权利要求13所述的数据存储系统,其中,所述相应存储块的寿命周期中的所述预定点包括所述寿命周期中的使所述相应存储块中的存储元件经受预定数量编程/擦除周期的点。
17.一种计算机实现的方法,包括:
读取闪存装置的字线的第一样本,字线的所述第一样本中的每个字线与字线地址关联并且使用不同读取级别电压被多次读取,以产生对于字线与相应读取级别电压的每个组合的错误计数;
基于所产生的错误计数生成错误计数表,所述错误计数表利用对应的字线地址和不同读取级别电压中的相应一个来标引每个产生的错误计数;
基于所述错误计数表形成多个字线组,每个组把所述不同读取级别电压中的相应一个与多个字线地址关联;以及
配置存储装置,以使用与待读取的存储元件的字线地址对应的所生成的字线组的读取级别电压来读取该存储元件。
18.根据权利要求17所述的方法,其中,所述多个字线组也基于与用来标引所述错误计数表的字线地址对应的字线的初始划分而生成,并且其中,每个字线组包括与对应读取级别电压配对的字线地址的相继分组部分,为了读取每个所述字线组中的字线的总体最小可能错误计数而选择配对。
19.根据权利要求18所述的方法,还包括:
在一个或多个存储块的寿命周期中的预定点之后,基于读取与用来标引所述错误计数表的字线标识符对应的字线的第二样本而重新生成错误计数表,以及
基于重新生成的错误计数表而重新生成多个字线组。
20.根据权利要求19所述的方法,其中,所述一个或多个存储块的寿命周期中的所述预定点包括所述一个或多个存储块中的经受预定数量编程/擦除周期的存储元件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/664,768 | 2015-03-20 | ||
US14/664,768 US9720754B2 (en) | 2014-11-20 | 2015-03-20 | Read level grouping for increased flash performance |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105989891A true CN105989891A (zh) | 2016-10-05 |
CN105989891B CN105989891B (zh) | 2020-11-24 |
Family
ID=55952218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610161521.4A Active CN105989891B (zh) | 2015-03-20 | 2016-03-21 | 用于增强的闪存性能的读取级别分组 |
Country Status (6)
Country | Link |
---|---|
JP (1) | JP6218195B2 (zh) |
KR (1) | KR101831209B1 (zh) |
CN (1) | CN105989891B (zh) |
DE (1) | DE102016003366B4 (zh) |
FR (1) | FR3033927B1 (zh) |
GB (1) | GB2537484B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107958686A (zh) * | 2016-10-17 | 2018-04-24 | 爱思开海力士有限公司 | 3d nand闪存的存储器系统及其操作方法 |
CN108257642A (zh) * | 2016-12-29 | 2018-07-06 | 北京忆恒创源科技有限公司 | 读阈值设置方法与装置 |
CN108777156A (zh) * | 2018-05-31 | 2018-11-09 | 郑州云海信息技术有限公司 | 一种闪存数据处理方法及装置 |
CN110010170A (zh) * | 2018-01-05 | 2019-07-12 | 旺宏电子股份有限公司 | 存储装置的操作方法及其存储系统 |
CN110473588A (zh) * | 2019-08-15 | 2019-11-19 | 山东华芯半导体有限公司 | 一种SSD中在线校准NAND Flash读参考电压的方法 |
CN110908825A (zh) * | 2018-09-17 | 2020-03-24 | 北京兆易创新科技股份有限公司 | 一种数据读取方法、装置、存储设备及存储介质 |
CN111540393A (zh) * | 2018-12-11 | 2020-08-14 | 爱思开海力士有限公司 | 用于基于字线分组的读取操作的存储器系统和方法 |
CN112447245A (zh) * | 2019-08-28 | 2021-03-05 | 国际商业机器公司 | 非易失性随机存取存储器中的混合读取电压校准 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10140040B1 (en) | 2017-05-25 | 2018-11-27 | Micron Technology, Inc. | Memory device with dynamic program-verify voltage calibration |
US10402272B2 (en) * | 2017-05-25 | 2019-09-03 | Micron Technology, Inc. | Memory device with dynamic programming calibration |
US10452480B2 (en) | 2017-05-25 | 2019-10-22 | Micron Technology, Inc. | Memory device with dynamic processing level calibration |
US10347344B2 (en) * | 2017-08-29 | 2019-07-09 | Micron Technology, Inc. | Read voltage calibration based on host IO operations |
KR102395196B1 (ko) | 2017-10-17 | 2022-05-06 | 삼성전자주식회사 | 파라미터 교정 기능을 갖는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US10910061B2 (en) * | 2018-03-14 | 2021-02-02 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
US10566063B2 (en) | 2018-05-16 | 2020-02-18 | Micron Technology, Inc. | Memory system with dynamic calibration using a trim management mechanism |
US10664194B2 (en) | 2018-05-16 | 2020-05-26 | Micron Technology, Inc. | Memory system with dynamic calibration using a variable adjustment mechanism |
US10990466B2 (en) * | 2018-06-20 | 2021-04-27 | Micron Technology, Inc. | Memory sub-system with dynamic calibration using component-based function(s) |
US11188416B2 (en) | 2018-07-12 | 2021-11-30 | Micron Technology, Inc. | Enhanced block management for a memory sub-system |
US10936246B2 (en) | 2018-10-10 | 2021-03-02 | Micron Technology, Inc. | Dynamic background scan optimization in a memory sub-system |
US10957407B1 (en) * | 2019-10-30 | 2021-03-23 | International Business Machines Corporation | Calculating corrective read voltage offsets in non-volatile random access memory |
DE102020100541A1 (de) | 2020-01-13 | 2021-07-15 | Infineon Technologies Ag | Bestimmung eines resultierenden datenworts beim zugriff auf einen speicher |
US11189351B2 (en) | 2020-03-27 | 2021-11-30 | Sandisk Technologies Llc | Peak and average current reduction for sub block memory operation |
CN112216333B (zh) * | 2020-09-30 | 2024-02-06 | 深圳市宏旺微电子有限公司 | 芯片测试方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100052159A (ko) * | 2008-11-10 | 2010-05-19 | 삼성전자주식회사 | 비휘발성 반도체 메모리 장치, 그를 포함하는 메모리 카드와 메모리 시스템 및 그의 리드 전압 추정 방법 |
US20100332729A1 (en) * | 2009-06-30 | 2010-12-30 | Sandisk Il Ltd. | Memory operations using location-based parameters |
US20120140560A1 (en) * | 2010-12-07 | 2012-06-07 | Tsung-Chieh Yang | Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory |
CN102831932A (zh) * | 2011-06-14 | 2012-12-19 | 群联电子股份有限公司 | 数据读取方法、存储器控制器及存储器储存装置 |
US20130176784A1 (en) * | 2011-03-30 | 2013-07-11 | Stec, Inc. | Adjusting operating parameters for memory cells based on wordline address and cycle information |
US20140029336A1 (en) * | 2012-07-30 | 2014-01-30 | Sandisk Technologies Inc. | Systems and methods of updating read voltages |
US20140359202A1 (en) * | 2013-05-31 | 2014-12-04 | Western Digital Technologies, Inc. | Reading voltage calculation in solid-state storage devices |
US20150070988A1 (en) * | 2013-09-10 | 2015-03-12 | SK Hynix Inc. | Semiconductor device, memory system and operating method thereof |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7554853B2 (en) * | 2006-12-30 | 2009-06-30 | Sandisk Corporation | Non-volatile storage with bias based on selective word line |
US8159881B2 (en) * | 2009-06-03 | 2012-04-17 | Marvell World Trade Ltd. | Reference voltage optimization for flash memory |
US8072805B2 (en) * | 2009-08-18 | 2011-12-06 | Skymedi Corporation | Method and system of finding a read voltage for a flash memory |
US9195586B2 (en) * | 2012-02-23 | 2015-11-24 | Hgst Technologies Santa Ana, Inc. | Determining bias information for offsetting operating variations in memory cells based on wordline address |
US9135106B2 (en) * | 2012-05-22 | 2015-09-15 | Hgst Technologies Santa Ana, Inc. | Read level adjustment using soft information |
KR101984900B1 (ko) * | 2012-07-24 | 2019-05-31 | 삼성전자 주식회사 | 메모리 장치 및 상기 메모리 장치의 독출 전압 결정 방법 |
US8879324B2 (en) * | 2013-02-01 | 2014-11-04 | Lsi Corporation | Compensation loop for read voltage adaptation |
-
2016
- 2016-03-11 GB GB1604222.8A patent/GB2537484B/en active Active
- 2016-03-15 FR FR1652158A patent/FR3033927B1/fr active Active
- 2016-03-18 KR KR1020160032905A patent/KR101831209B1/ko active IP Right Grant
- 2016-03-18 JP JP2016054914A patent/JP6218195B2/ja active Active
- 2016-03-18 DE DE102016003366.5A patent/DE102016003366B4/de active Active
- 2016-03-21 CN CN201610161521.4A patent/CN105989891B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100052159A (ko) * | 2008-11-10 | 2010-05-19 | 삼성전자주식회사 | 비휘발성 반도체 메모리 장치, 그를 포함하는 메모리 카드와 메모리 시스템 및 그의 리드 전압 추정 방법 |
US20100332729A1 (en) * | 2009-06-30 | 2010-12-30 | Sandisk Il Ltd. | Memory operations using location-based parameters |
US20120140560A1 (en) * | 2010-12-07 | 2012-06-07 | Tsung-Chieh Yang | Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory |
CN102568593A (zh) * | 2010-12-07 | 2012-07-11 | 慧荣科技股份有限公司 | 读取快闪存储器中储存数据的方法、存储器控制器与装置 |
US20130176784A1 (en) * | 2011-03-30 | 2013-07-11 | Stec, Inc. | Adjusting operating parameters for memory cells based on wordline address and cycle information |
CN102831932A (zh) * | 2011-06-14 | 2012-12-19 | 群联电子股份有限公司 | 数据读取方法、存储器控制器及存储器储存装置 |
US20140029336A1 (en) * | 2012-07-30 | 2014-01-30 | Sandisk Technologies Inc. | Systems and methods of updating read voltages |
US20140359202A1 (en) * | 2013-05-31 | 2014-12-04 | Western Digital Technologies, Inc. | Reading voltage calculation in solid-state storage devices |
US20150070988A1 (en) * | 2013-09-10 | 2015-03-12 | SK Hynix Inc. | Semiconductor device, memory system and operating method thereof |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107958686B (zh) * | 2016-10-17 | 2021-06-15 | 爱思开海力士有限公司 | 3d nand闪存的存储器系统及其操作方法 |
CN107958686A (zh) * | 2016-10-17 | 2018-04-24 | 爱思开海力士有限公司 | 3d nand闪存的存储器系统及其操作方法 |
CN108257642A (zh) * | 2016-12-29 | 2018-07-06 | 北京忆恒创源科技有限公司 | 读阈值设置方法与装置 |
CN108257642B (zh) * | 2016-12-29 | 2021-08-17 | 北京忆恒创源科技股份有限公司 | 读阈值设置方法与装置 |
CN110010170A (zh) * | 2018-01-05 | 2019-07-12 | 旺宏电子股份有限公司 | 存储装置的操作方法及其存储系统 |
CN110010170B (zh) * | 2018-01-05 | 2021-04-02 | 旺宏电子股份有限公司 | 存储装置的操作方法及其存储系统 |
CN108777156A (zh) * | 2018-05-31 | 2018-11-09 | 郑州云海信息技术有限公司 | 一种闪存数据处理方法及装置 |
CN110908825A (zh) * | 2018-09-17 | 2020-03-24 | 北京兆易创新科技股份有限公司 | 一种数据读取方法、装置、存储设备及存储介质 |
CN110908825B (zh) * | 2018-09-17 | 2024-03-01 | 兆易创新科技集团股份有限公司 | 一种数据读取方法、装置、存储设备及存储介质 |
CN111540393A (zh) * | 2018-12-11 | 2020-08-14 | 爱思开海力士有限公司 | 用于基于字线分组的读取操作的存储器系统和方法 |
CN111540393B (zh) * | 2018-12-11 | 2023-09-08 | 爱思开海力士有限公司 | 用于基于字线分组的读取操作的存储器系统和方法 |
CN110473588A (zh) * | 2019-08-15 | 2019-11-19 | 山东华芯半导体有限公司 | 一种SSD中在线校准NAND Flash读参考电压的方法 |
CN112447245A (zh) * | 2019-08-28 | 2021-03-05 | 国际商业机器公司 | 非易失性随机存取存储器中的混合读取电压校准 |
CN112447245B (zh) * | 2019-08-28 | 2024-05-17 | 国际商业机器公司 | 非易失性随机存取存储器中的混合读取电压校准 |
Also Published As
Publication number | Publication date |
---|---|
FR3033927A1 (zh) | 2016-09-23 |
JP2016177860A (ja) | 2016-10-06 |
DE102016003366B4 (de) | 2020-10-29 |
GB2537484A (en) | 2016-10-19 |
GB2537484B (en) | 2019-07-03 |
FR3033927B1 (fr) | 2019-10-11 |
KR20160113051A (ko) | 2016-09-28 |
GB201604222D0 (en) | 2016-04-27 |
DE102016003366A1 (de) | 2016-09-22 |
KR101831209B1 (ko) | 2018-02-23 |
CN105989891B (zh) | 2020-11-24 |
JP6218195B2 (ja) | 2017-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105989891A (zh) | 用于增强的闪存性能的读取级别分组 | |
US11488673B2 (en) | Calibrating optimal read levels | |
US9720754B2 (en) | Read level grouping for increased flash performance | |
US9905302B2 (en) | Read level grouping algorithms for increased flash performance | |
US8365040B2 (en) | Systems and methods for handling immediate data errors in flash memory | |
US9117529B2 (en) | Inter-cell interference algorithms for soft decoding of LDPC codes | |
JP5944941B2 (ja) | クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置 | |
US9454414B2 (en) | System and method for accumulating soft information in LDPC decoding | |
US8924824B1 (en) | Soft-decision input generation for data storage systems | |
US9639419B2 (en) | Read voltage level estimating method, memory storage device and memory control circuit unit | |
CN104040504A (zh) | 用于存储器系统的软信息生成 | |
CN106997777A (zh) | 具有改进的硬解码吞吐量的vss ldpc解码器 | |
CN110473581B (zh) | 固态储存装置及其相关控制方法 | |
US11630722B2 (en) | Method and system for decoding data based on association of first memory location and second memory location | |
CN106681856A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN109901784A (zh) | 数据存取方法、存储器控制电路单元以及存储器储存装置 | |
Kaynak et al. | Bit interleaved coded modulation to enable fractional bits-per-cell storage at NAND flash memory | |
US10628259B2 (en) | Bit determining method, memory control circuit unit and memory storage device | |
Thiers et al. | Read Reference Calibration and Tracking for Non-Volatile Flash Memories. Electronics 2021, 10, 2306 | |
CN109960603A (zh) | 比特标记方法、存储器控制电路单元以及存储器存储装置 | |
전명운 | Bidirectional Error Correcting Codes and Interference Mitigation for Flash Memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181127 Address after: American California Applicant after: Western Digital Technologies, Inc. Address before: Holland, Amsterdam Applicant before: Hitachi Global Storage Tech Nl |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |