CN102473460B - 将数据恢复到闪存器件中 - Google Patents
将数据恢复到闪存器件中 Download PDFInfo
- Publication number
- CN102473460B CN102473460B CN200980160945.7A CN200980160945A CN102473460B CN 102473460 B CN102473460 B CN 102473460B CN 200980160945 A CN200980160945 A CN 200980160945A CN 102473460 B CN102473460 B CN 102473460B
- Authority
- CN
- China
- Prior art keywords
- data
- reference voltage
- memory cell
- group
- storage
- 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.)
- Active
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/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
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
通过使用MBC存储方案,将编程器的数据初始地存储在存储器件(100)的存储器器件(120)中。在存储器件被嵌入在主机设备(170)中之后,通过使用传统的读基准电压从存储器器件内部地读取编程器的数据,并且计算编程器的数据中的错误数据位的数量。如果编程器的数据包括不可校正的数量的错误数据位,则通过使用具有降低的电平的非传统读基准电压重复地重新读取编程器的数据。当编程器的数据中的错误数据位的数量小于或等于错误数据位的预定数量时,包括降低读基准电压的电平和重新计算错误数据位的数量的该重复处理终止,在这之后,存储器件恢复编程器的数据并且将其传统地重新写到存储器器件中。
Description
技术领域
本发明总体地涉及闪存器件,更具体地涉及将数据预加载到闪存器件的方法和使用该方法的存储器件。
背景技术
近年来闪存器件的使用迅速增长,因为它们便携并且它们具有小物理尺寸和大存储容量。闪存器件出现了各种设计。一些存储器件被认为是“可移除的”,这意味着用户可以将它们从一个主机设备移动到另一个或者将一个存储器件用另一个存储器件替换。其他存储器件被认为是“嵌入的”,这意味着它们不能并且不本意不想由用户从它们所工作的主机设备移除。由于各种原因,嵌入的存储器件的制造商在数据存储器件被合并到主机中之前将用户数据预加载到存储器件中。通常,在嵌入了存储器件的主机分布到终端用户之前,将用户数据预加载到该存储器件中。全球定位***(“GPS”)地图、音乐文件、视频文件、视频游戏等是用户数据的例子。
众所周知,作为每单元单个位(“SBC”)单元工作的存储器单元比作为每单元多位(“MBC”)单元而工作的存储器单元具有更高的数据保持耐久性。但是,传统上用户数据被存储在作为MBC单元工作的存储器单元中,这是因为用户数据通常很大(例如几百兆字节到千兆字节的量级),并且将它们紧密地存储在MBC单元中节省存储空间。
通常,通过使用回流焊接(reflow soldering)工艺将存储器件嵌入于主机设备中。具有预加载的用户数据的MBC单元易受到回流焊接工艺产生的热量的可能影响,并且因此其中的数据可能改变,特别是由于在存储器单元的不同二进制状态之间存在的相对小的错误余量(例如比SBC单元中的二进制状态之间的更小的错误余量)。换句话说,由于回流工艺产生的过度的热量降低了存储器单元的阈值电压,因此导致它们非有意地从指定的二进制状态变换到其他(即错误的)二进制状态。
因此存在克服当涉及的存储器件被嵌入于主机设备中时存储器单元中的电荷回流引起的放电问题的需要。
发明内容
因此,下面将是有益的:即使用户数据在回流阶段之前被预加载到存储器件中,也能够在回流工艺完成之后恢复(restore)存储器件中的用户数据。下面也将是有益的:在回流阶段之前并且在存储器件被嵌入于主机设备中之后将用户数据存储在MBC单元中。设计各种实施例以实现这样的数据恢复,在此提供其例子。
为了克服上述问题,通过使用传统的MBC存储方案,从编程设备传送到存储器件的编程器的数据初始被存储在存储器件的存储器器件中。在存储器件被嵌入于主机设备中之后,通过使用传统读基准电压从存储器器件内部地(即在存储器件中)读取编程器的数据,检测编程器的数据中的错误数据位,并且计算其数量EA。如果编程器的数据包括不能被存储器件校正的错误数据位,则使用非传统的读基准电压重复地重新读取编程器的数据,其中,在每次重复中,非传统的读基准电压的电平根据预定方案进一步降低。
反复进行重复步骤(1)降低读基准电压的电平、(2)使用降低的读基准电压(重新)读取编程器的数据以及(3)(重新)计算编程器的数据中的错误数据位的数量EA,直到编程器的数据中的错误数据位的数量EA小于或等于可以被存储器件校正的错误数据位的预定数量ET为止(即这时终止)。
在重复处理终止之后,存储器件恢复编程器的数据并通过使用传统方式中的相同或者更紧密的MBC存储方案将恢复的编程器的数据重新写(rewrite)到存储器器件中。
附图说明
在附图中例示了各种示例实施例,意图这些例子不是限制性的。将认识到,为了例示的简化及清楚,以下参考的图中所示的要素不一定按比例绘出。而且,在认为适当时,可以在各图之间重复参考标记以指示相同、对应或者类似的部件。附图中:
图1是根据示例实施例的存储器件的框图;
图2更详细地示出图1的存储器件的一些部件;
图3A示出用于在存储器件被嵌入于主机设备中之前将编程器的数据预加载到存储器件中的示例传统MBC存储方案;
图3B例示根据示例实施例的可以用于读取编程器的数据的非传统读基准电压;
图4是用于将编程器的数据预加载到存储器件中的方法;
图5是根据示例实施例的用于恢复编程器的数据的方法;
图6是根据示例实施例的将数据预加载到存储器件中的方法;
图7示出根据示例实施例的用于产生存储管理器的连接性信号的电端子和电路;以及
图8示出图7的存储器件和传统主机设备。
具体实施方式
以下描述提供了示例实施例的各个细节。但是,此描述不意图限制权利要求的范围而是说明本发明的各种原理及实践方式。
措辞“阈值电压轴上的阈值电压分布曲线的传统位置”、“传统阈值电压(分布)范围”、“传统阈值电压分布曲线”和“传统读基准电压”指通常被闪存工业接受作为操作闪存单元的最优化的数据存储实例。“操作(快闪)存储器单元”指对(快闪)存储器单元进行各种存储和与存储有关的操作,比如向(快闪)存储器单元写数据及从其读数据。关于“单元计数相对单元的阈值电压电平”图(作为例子在图3A中示出),传统的存储器单元的阈值电压的电平(即在该图的电压轴上的存储器单元的阈值电压的位置)取决于存储器件的类型(例如、基于每单元2位的器件、基于每单元3位的器件等)、涉及的技术(例如NAND、NOR)以及相关存储处理的规范。即,传统的阈值电压分布曲线的位置及其相关的传统阈值电压范围是预定的,以便在可靠性和性能方面优化数据写和数据读。因而,属于一种类型的存储器件(例如基于每单元2位的器件)的传统阈值电压分布曲线的位置及其相关的传统阈值电压范围可能不同于属于另一类型的存储器件(例如基于每单元3位的器件)的传统阈值电压分布曲线的位置及其相关的传统阈值电压范围。
作为存储器件的存储元件的闪存单元通常被实现为浮置栅极晶体管。存储器单元的浮置栅极能够保存由浮置栅极的物理尺度限制的最大量的电荷。存储器单元的不同电荷量被解释为不同的二进制状态,其中存储器单元的二进制状态对应于存储在其中的数据(例如“00”、“01”等)。可通过检测存储器单元的阈值电压来检测存储器单元的电荷及因此的其二进制状态和数据。说存储器单元例如处于二进制状态“0”(在此情况下单元存储一个数据位)、处于二进制状态“11”(在此情况下单元存储两个数据位)或者处于二进制状态“101”(在此情况下单元存储三个数据位)和说存储器单元分别存储二进制数据“0”、“11”或“101”被视为是等同的。存储器单元存储的数据位的数量(例如1、2、3等)取决于用于操作存储器单元的存储设置(setup)或者存储方案。
简要地说,“回流焊接”(或简称“回流”)是其中电路板组装被加热以便将组件的电端子焊接到电路板上的相应焊点的焊接工艺。在存储器件被焊接到主机的电路板时,通常在175℃到270℃的范围内的高焊接温度致使存储器单元丢失电荷。当存储器单元丢失显著量的电荷时,单元的阈值电压可能改变,并且作为结果,单元的二进制状态可能改变,因此改变了存储在该单元中的数据。这样的数据改变当然是不期望的。
对回流工艺引起的问题的一个解决方案涉及将用户数据预加载到SBC存储器件,此方案可能是使用主机设备的用户可接受的,无论该主机设备是否是数字相机、蜂窝电话等都如此,但是从主机设备制造商的观点看是有问题的,因为他们需要分开地处理(装配、测试、操作等)若干存储器件。另外,将SBC存储器件贡献于存储用户数据消耗了主机设备中的实际资产(例如设备的电路板上的物理空间),并且存储器件的控制器需要分开管理(例如寻址、与之通信等)SBC器件,这是低效的。
另一方案涉及将用户数据存储在MBC单元中并进行在闪存器件领域中称为“修复处理”的处理。在修复处理期间,通过控制存储器件的温度烘烤型态来减轻热引起的存储器单元的电荷放电。但是,使用修复处理具有如下缺点:存储器件的存储器单元越小,其效率越低。即,修复处理可以针对70纳米(nm)技术而工作,但是对56nm更低效并且对34nm更加低效,等等。
图1是根据示例实施例的存储器件100的框图。存储器件100包括存储管理器110、包括可以是例如NAND闪存单元的多个电荷存储单元122的存储器器件120。每个存储器单元122保持K(K≥2)位数据,或者K个数据位,并且可编程到2K个二进制状态之一,其中2K个二进制状态的每个由2K个阈值电压范围中的具体一个表示并且可通过使用2K-1个读基准电压读取。
存储器件100还包括可配置的存储设置模块(“CSSM”)130,其可由存储管理器110配置,以便传统地当存储器件100连接到编程设备时以及非传统地在存储器件100嵌入于主机设备中之后,使存储器件100能够将存储器单元122的存储器单元作为MBC单元来操作,如下所述。存储器件100还包括主机接口(即主机I/F 140)以促进存储管理器110和编程设备或主机设备之间的双向通信。
作为例子,存储器件100被示出为嵌入到主机170中并经由控制和数据总线172与主机170连接。由于技术和其他原因,在存储器件100被嵌入到主机170中之前,存储器件100由其制造商通过将数据预加载到存储器器件120中而按数据(data-wise)初始化。尽管存储器件100在图1中示出为连接到编程器160(示例的编程设备)并且嵌入在主机170(示例的主机设备)中,但是实际上不是这样的情况。即,在存储器件100被嵌入在主机170中之前,存储器件100首先连接到编程器160以便经由命令和数据总线162将初始数据预加载到存储器件120。从编程器160传送到存储器件的初始数据在此也被称为“编程器的数据”。通过编程器160预加载到存储器器件120的编程器的数据可以是或者可以包括例如GPS地图、音乐文件、视频文件、游戏的文件和其他类型的数据。换句话说,尽管编程器160和主机170两者均被示出为连接到主机I/F 140,但是每个设备在不同的时间连接到该主机I/F 140:编程器160连接到主机I/F 140以便将编程器的数据预加载到存储器器件120,并且当装配主机170时以及周期地还在主机170电“接通”时,主机170物理地连接到主机I/F 140。命令和数据总线162具有可移除地可连接到存储器件100的编程插口(socket)的连接器。存储器件的编程插口和命令和数据总线162的连接器未在图1中示出。
在编程器160对存储器件100编程期间,命令和数据总线162的连接器连接到存储器件的编程插口,并且在主机170装配期间,控制和数据总线172连线到主机I/F 140。控制和数据总线172可以是扁平电缆或者电路板连接器。在主机的制造商或者装配者对主机170装配期间,存储器件100被焊接到主机170的电路板174。在主机170的装配处理完成并且主机170通电之后,存储器件100和主机170可以按传统方式交互工作。
存储管理器110耦接142到主机I/F 140,且通过其与诸如编程器160和主机170的外部设备交换数据/信息、状态信息和命令。存储管理器170还管理包括向存储器器件120写数据或者从其读或擦除数据或者与这些相关联的存储操作。CSSM 130可操作地耦接132到存储器器件120,并且存储管理器110通过控制CSSM 130的操作来管理数据被写到存储器单元122以及从其读取的方式,如以下例如结合图2详细说明的。
存储管理器110通过数据总线114向存储器器件120传送数据或者从其接收数据;经由地址总线116将存储器单元的地址传送到存储器器件120,并且经由控制总线118将控制信号传送到CSSM 130以促进传统的和非传统的存储操作。例如,如果存储管理器110被例如编程器160或者主机170请求将数据写到存储器器件120内的具体存储器单元中,则存储管理器110将该数据与具体存储器单元的有关地址以及与促进向正确的存储器单元写入数据的控制信号一起转发到存储器器件120。同样,如果请求存储管理器110从存储器器件120内的具体存储器单元读数据,则存储管理器110将该具体存储器单元的地址与促进从正确的存储器单元读数据的控制信号一起转发到存储器器件120。
CSSM 130在以下意义上可由存储管理器110配置:存储管理器110可以配置并使用CSSM 130,以传统地通过使用传统的阈值电压分布和传统的读基准电的集合或者非传统地通过使用非传统的(即调整的)一个或多个读基准电压来将操作存储器器件120内的存储器单元作为MBC单元。“存储设置”在此意味CSSM 130的配置,其使得存储管理器110能够将存储器单元122或者其所选部分(例如单元的组124)作为传统的MBC单元或者作为非传统的MBC单元来操作。CSSM 130的第一配置属于2K个传统的阈值电压范围的集合以及2K-1个传统的读基准电压的集合或者由这些集合定义。CSSM 130的第二配置属于2K-1个非传统的读基准电压的集合或者由该集合定义。
通常,CSSM 130的第一配置用于传统地将编程器的数据预加载于存储器件100中,并且还用于传统地在编程器的数据在被回流工艺破坏之后被恢复之后将编程器的数据重新写在存储器件100中,并且CSSM 130的第二配置用于读取具有可校正数量的错误数据位的被破坏的编程器的数据。关于CSSM 130的第二配置,施加“非传统的读基准电压”意味存储管理器110反复逐步地(重新)调整(即降低)读基准电压的电压电平,直到编程器的数据中的错误数据位的数量EA等于或小于存储管理器110可以校正的错误数据位的预定(例如最大)数量ET。如果EA≤ET,则存储管理器110校正错误数据位,并通过使用CSSM 130的第一配置、即通过施加传统的阈值电压范围和传统的读基准电压将校正了错误数据位的编程器的数据重新写到存储器单元122中。
在存储器件100被制造之后,在存储器件100被嵌入在主机170中之前,将编程器的数据预加载到存储器器件120中,主机170可以是例如蜂窝电话或者数字相机。之所以在装配阶段进行之前将编程器的数据预加载到存储器器件120中,是因为,在存储器件被嵌入主机中之后将数据预加载到存储器件并且执行各种测试过程以测试存储器件需要传统主机制造线/工艺方面的显著改变,并且这样的改变是昂贵的。因此,在将存储器件100嵌入在主机设备(例如主机170)中之前,在将编程器的数据预加载到存储器器件120中之后,由编程器160进行测试。
在数据预加载处理完成之后,通过使用回流工艺将存储器件100嵌入在主机170中。在存储器件100被嵌入在主机170中之后,主机170和存储器件100通常承受正常的周围温度。但是,在回流工艺期间,存储器件100承受远高于正常周围温度的温度。如在此说明的,高焊接温度导致数据保持(retention)的恶化及因此导致数据丢失。因此,在存储器件100被嵌入在主机170中之后,并且假设存储器件100通过主机170通电,通过使用传统的存储设置(即CSSM 130的第一配置)读取存储在存储器单元122的存储器单元中的编程器的数据或者其一个或多个所选部分,并且检测编程器的数据中的错误数据位并计算其数量EA。如果EA≤ET,则存储管理器110校正错误数据位并将恢复的编程器的数据或者其一个或多个所选部分重新写入存储器单元122中。但是,如果存在太多的错误数据位要存储管理器110校正(即EA>ET),则存储管理器110重复地调整(即降低)读基准电压,如对于CSSM130的第二配置定义的,并且这次以调整的读基准电压重新读取编程器的数据,以由此在每次重复之后减少错误数据位的数量EA。
有关编程器的数据的所有还是所选部分(要)从存储器单元122读取并之后重新写入存储器单元122以及需要多少读/写操作的问题取决于编程器的数据被破坏的程度以及保持数据的存储器单元有多容易发生数据读失败。通常,编程器的数据可以完全或者部分地从存储器单元122读取并且之后重新写入其中。对于从/向存储器单元122读和重新写编程器的数据,存在三个选项:(1)可以通过使用一个读操作和一个写操作从/向存储器单元122读和重新写全部的编程器的数据,或者(2)可以通过使用多个读操作(即一次一部分地读取全部的编程器的数据)以及同样多的写操作来从/向存储器单元122读和重新写全部的编程器的数据,或者(3)可以仅从存储器单元122读取编程器的数据的所选部分并且之后将其写到存储器单元122中。选项(2)在以下情况下是有益的:其中存储管理器忙于进行其他事务并且可能作为后台操作来读/写编程器的数据的部分。选项(3)在以下情况下是有益的:其中回流工艺没有严重影响存储器单元122内的初始存储编程器的数据的存储器单元的一些。在这样的情况下,仅读和重新写存储在严重受影响的存储器单元中的数据部分可能就足够了。换句话说,不需要读和重新写存储在影响可忽略的存储器单元中的数据部分。如果预先(例如,根据经验)已知存储器单元122内的具体存储器单元是存储方面(storage-wise)有问题的,例如因为它们严重易受回流工艺影响,则可以仅读取存储在有问题的存储器单元中的编程器的数据的部分并将其重新写到存储器单元122中。因此,从其读取编程器的数据的部分的存储器单元可以基于单元的预期对读失败的易受影响性预先确定。
当存储管理器110连接到编程器160时,其按通过使用属于所使用的MBC方案的传统阈值电压范围和传统读基准电压以传统方式将存储器单元122作为MBC单元来操作的方式来配置CSSM 130。然后,存储管理器110通过使用传统的阈值电压范围和传统的读基准电压将编程器的数据暂时写到存储器单元122中(例如写到第一组单元124中)。假设在编程器的数据被初始地写到(例如)第一组单元124之后的某个时间,在主机170的装配期间,存储器件100被焊接到主机170的电路板174。
在主机170被装配之后,将其“接通”对存储器件100通电。在存储器件100被主机170通电之后很短时间,存储管理器110从第一组单元124读取编程器的数据。存储管理器110可以一次或多次从第一组单元124读取编程器的数据,该次数取决于可能包括在编程器的数据中的错误数据位是否可以被存储管理器110校正。存储管理器110使用纠错码机制(即ECC190)来检测并校正编程器的数据中的错误数据位。存储管理器110可以校正的给定数据块中的错误数据位的最大数量取决于使用的ECC代码的“强度”:ECC代码越强,数量越高。
ECC代码是被添加到存储在存储器器件中的数据的冗余数据。如果存储的数据中的错误数据位的数量在代码的能力之内,则存储器件可以使用该冗余数据来检测错误数据位的位置并校正它们。里德所罗门码和BCH码是可以用于检测和计数错误数据位的示例ECC代码。作为例子,表示为“RS(204,188)”的里德所罗门码一次处理188字节的有用信息的块,并且将16(204-188=16)个冗余字节附加到每个块并且处理每个数据块的八个不正确的字节。
因为存储管理器110通过使用传统的阈值电压范围和传统的读基准电压将编程器的数据写到存储器单元122中,因此第一次存储管理器110从单元组124读取编程器的数据时,其通过施加传统的阈值电压范围和传统的读基准电压来读取数据。如果读取的编程器的数据中的错误数据位的数量EA不可通过存储管理器110校正,则使用非传统的读基准电压;即,读基准电压被降低(即左移)以使得能够从单元组124重新读取具有更少的错误数据位的编程器的数据。使用足够低的读基准电压得到可以被存储管理器110校正的数量的错误数据位。
在存储管理器110校正编程器的数据之后,将其暂时存储152在随机存取存储器(“RAM”)150中。其后或者同时,存储管理器110按将存储器单元122作为传统的MBC单元来操作的方式重新配置CSSM 130。然后,这次存储管理器110通过使用属于使用的MBS存储设置的传统的阈值电压范围和传统的读基准电压从RAM 150读取152数据并将其重新写到存储器单元122的第二组(例如组126或者组128)。编程器的数据暂时被写到的第一组存储器单元和编程器的数据被重新写到的第二组存储器单元可以是分别的组,如由分别的组124和128所示。或者,第一组存储器单元和第二组存储器单元可以具有共同的一个或多个存储器单元,如组124和126的部分重叠所示。第二组存储器单元和第一组存储器单元包括相同数量的存储器单元,这是因为通过使用相同类型的MBC存储设置,相同的数据(即编程器的数据)被写到它们之中(即存储相同数量的数据位,例如每个单元中2位)。如果使用不同的MBC存储设置,则两组存储器单元具有不同数量的存储器单元。
存储管理器110如果比如通过感测或者推断或者被编程器160通知而“知道”存储器件110连接到编程器160,则使用CSSM 130的第一配置来将编程器的数据初始地写到存储器单元122中。同样,存储管理器110如果比如通过感测或者推断或者被主机170通知而“知道”存储器件100连接到主机170,则适时使用CSSM 130的第一配置和CSSM 130的第二配置之一或其两者来从存储器单元122读取编程器的数据并将其重新写到存储器单元122中。以下描述使得存储管理器110能够确定其是否连接到编程器160或者主机170的各种示例方式。存储管理器可以执行应用112以实现ECC 190和进行在此所述的CSSM 130的各种配置、步骤、操作、确定等等。存储器件100的固件可以被安全地存储在诸如只读存储器(“ROM”)190的单独的存储器器件中。
图2是根据示例实施例的可配置的存储设置模块(CSSM)130的框图。将结合图1描述图2。CSSM 130由存储管理器110配置,其后由存储管理器110使用,以通过传统地或者非传统地使用MBC存储设置来选择性地操作存储器单元122内的存储器单元。由存储管理器110非传统地使用MBC存储设置使得存储管理器110能够降低读基准电压的电平直到编程器的数据可以正确地被读取或者具有可校正的错误数据位。CSSM130包含实现传统的MBC存储设置(即CSSM 130的第一配置)和非传统的MBC存储设置(即CSSM130的第二配置)所需的配置信息。为了方便,实现这两个存储设置所需的信息功能上被划分为两部分:属于传统的MBC存储设置的信息被示出在210,属于非传统的MBC存储设置的信息被示出在220。如果存储管理器110确定应该使用传统的MBC存储设置,则其向CSSM 130发送118选择240信息210的命令。如果存储管理器110确定应该使用非传统的MBC存储设置,则其向CSSM 130发送118选择250信息220的命令。
信息210包括属于(pertain to)2K个传统的阈值电压范围的集合的信息212。信息210还包括属于2K-1个传统的读基准电压的集合的信息214。信息212与信息214一起定义传统的MBC存储设置。例如,K=2(即存储器单元122的存储器单元(将)***作为每单元2位的单元)意味着(将)***作为每单元2位的单元的存储器单元122的每个存储器单元每次可以处于4个(22)二进制状态“00”、“01”、“10”或者“11”之一。因此(继续该例子),信息212属于四个阈值电压范围/,每个阈值电压范围/表示四个二进制状态的具体一个,并且信息214属于三个读基准电压。措辞“传统的MBC存储设置”、“CSSM 130的第一配置”和“第一存储设置”在此可互换地使用来表示相同的事物。信息220属于2K-1个非传统的读基准电压的集合。措辞“非传统的MBC存储设置”、“CSSM 130的第二配置”和“第二存储设置”在此可互换地使用来表示相同的事物。
无论何时存储管理器110将数据写到存储器器件120中或从其读数据时,其确定哪个存储设置与具体的数据写和具体的数据读相关。基于确定结果,存储管理器110指示118CSSM 130选择属于该相关存储设置的信息。如果存储管理器110确定第一存储设置是相关的存储设置,则其指示118CSSM 130选择信息210(信息210的选择示出在240)。但是,如果存储管理器110确定第二存储设置是相关的存储设置,则其指示118CSSM 130选择信息220(信息220的选择示出在250)。作为例子,存储管理器110被示出为选择240第一存储设置和取消选择250第二存储设置。说CSSM 130正使用信息210(或信息220)来操作存储器单元122和说CSSM 130被配置为根据第一存储设置来操作存储器单元(或者,如果选择了信息220,则根据第二存储设置来操作)被认为是等同的。
存储器器件120包括编程单元230。编程单元230负责存储器单元122的实际操作(例如,编程)。编程单元230包括存储器编程器232和感测单元234。为了将数据(例如编程器的数据)写到存储器单元122中,存储管理器110将该数据与数据要被写到的存储器单元的地址一起传送到编程单元230。为了使编程单元230能够通过使用正确的存储设置将数据写在存储器单元122中,存储管理器110向CSSM 130传送应用正确的信息的存储设置选择命令118。存储设置选择命令118指示CSSM 130应该使用哪个信息来写数据。编程单元230然后从CSSM 130接收132所选信息(例如信息210)并因此将数据写在存储器器件120中。
假设从CSSM 130传送到编程单元230的信息是信息210。存储管理器110使用存储器编程器232、通过使用第一存储设置将数据写到存储器单元122的存储器单元中。即,在编程单元230接收到(i)要被写在存储器单元122中的数据(例如编程器的数据)、(ii)相关单元的地址和(iii)相关的存储设置信息(在此例子中的信息210)之后,存储管理器110使用存储器编程器232来逐步编程相关存储器单元(例如单元的组124),同时在每个编程步骤期间,存储器编程器232增加存储器单元的阈值电压电平。在每个编程步骤之后,存储管理器110使用感测单元234、通过使用在信息210中指定的或者由其定义的传统的读基准电压来检测被编程的存储器单元的当前二进制状态。然后,存储管理器110使用感测单元243来确定被编程的存储器单元的当前二进制状态是否已经达到目标二进制状态。(存储器单元的“目标”二进制状态是要被存储在其中的数据的按位(bitwise)的部分“xy”、“xyz”等。(其中“x”、“y”和“z”的每个是二进制值“0”或者“1”。)。)如果存储器单元的当前二进制状态不同于该单元的目标二进制状态,则该存储器单元经历另外的编程步骤。重复增加存储器单元的阈值电压和将结果的二进制状态与相应目标二进制状态相比较的处理,直到每个被编程的存储器单元达到其目标二进制状态,即直到每个被编程的存储器单元存储了意图要存储在其中的数据的按位的部分。
存储管理器110还使用感测单元234来从存储器单元122读取数据。为了从存储器单元读取数据,感测单元234逐渐增加施加到该单元的浮置栅极的电压的电平,直到电流开始流经该单元。电流开始流经存储器单元的最小电压电平是存储器单元的阈值电压。如上所述,存储器单元的阈值电压指示该单元的二进制状态。存储管理器110因此使用感测单元234来检测存储器单元的阈值电压电平。然后,存储管理器110将单元的阈值电压电平与在信息210中指定的或者由其定义的一个或多个传统的读基准电压相比较,以便确定每个存储器单元的二进制状态。
在存储器件100连接到编程器160时,存储管理器110使用CSSM 130和编程单元230、通过使用第一存储设置将编程器的数据写到存储器单元122中。在存储器件100被嵌入在主机170中之后,存储管理器110使用CSSM 130和编程单元230、首先通过使用第一存储设置来从存储器单元122读取编程器的数据并且如果在编程器的数据中存在太多的错误数据位,则通过使用第二存储设置来从存储器单元122读取编程器的数据。然后,存储管理器110使用CSSM 130和编程单元230、通过使用第一存储设置将编程器的数据重新写到存储器单元122中。
图3A示出示例传统的MBC存储方案。将结合图1和图2描述图3A。图3A涉及其中K=2的情况。即。存在四个二进制状态“A”、“B”、“C”和“D”,它们分别由四个传统的阈值电压分布曲线310、320、330和340表示。二进制状态“A”、“B”、“C”和“D”可通过使用三个传统的读基准电压350、360和370来检测。作为例子,传统的读基准电压350、360和370分别是0.5V、2.5V和4.5V。
如果存储器单元的验证电压在传统的阈值电压分布范围380内,则该存储器单元传统地处于二进制状态“A”;如果其阈值电压在传统的阈值电压分布范围382内,则处于二进制状态“B”;如果其阈值电压在传统的阈值电压分布范围384内,则处于二进制状态“C”,以及如果其阈值电压在传统的阈值电压分布范围386内,则处于二进制状态“D”。继续此例子,如果存储器单元的阈值电压高于4.5V,则该单元处于状态“D”,如果存储器单元的阈值电压在2.5V到4.5V的范围内,则该单元处于状态“C”,等等。
如果存储管理器110确定存储器件100连接到编程设备(例如编程器160),则其通过传统地使用MBC存储设置、通过致使CSSM 130选择信息210以及通过这样做致使编程单元根据第一存储设置操作存储器单元122来将其从编程设备接收的数据(即编程器的数据)存储在存储器单元122中。参考图3A,K=2,信息212定义了四个(22)传统的阈值电压范围380、382、384和386的集合,并且信息214定义了三个(22-1)传统的读基准电压350、360和370的集合。
图3B示出非传统的读基准电压,通过该电压,根据示例实施例读取被破坏的数据。图3B还示出回流工艺对图3A的传统的阈值电压分布曲线310、320、330和340的不利影响。将结合图1、2和3A描述图3B。在主机170被装配时,回流工艺致使存储器单元122丢失电荷。换句话说,回流工艺(在回流工艺期间产生的热量)将存储器单元的传统阈值电压左移,或者换句话说,回流工艺降低了单元的阈值电压。在相同的焊接处理期间,不同的存储器单元可能经历不同的温度。此现象和存储器单元的飘忽不定(erratic)的行为致使存储器单元122不均匀地丢失电荷(例如一些存储器单元比经历相同机械应力的其他存储器单元丢失更多的电荷)。因此,图3A示出在存储器件100被嵌入在主机170中之前的传统阈值电压分布曲线310、320、330和340,而图3B示出由回流工艺对这些曲线的影响得到的非传统的阈值电压曲线:传统的阈值电压分布曲线310变换(即移位和变形)为非传统的阈值电压曲线312;传统的阈值电压分布曲线320变换为非传统的阈值电压曲线322;传统的阈值电压分布曲线330变换为非传统的阈值电压曲线332;传统的阈值电压分布曲线340变换为非传统的阈值电压曲线342。
非传统的阈值电压分布曲线从各自传统的阈值电压分布曲线的(在位置和形状方面的)偏离取决于几个因素,其中焊接温度、焊接时段和各个存储器单元的飘忽不定的行为是主要的。在嵌入处理完成之后,从传统的阈值电压分布曲线310、320、330和340偏离的非传统的阈值电压分布曲线的一些可以定位分别比阈值电压分布曲线312、322、332和342更向右或者更向左和/或可以比它们更窄或者更宽。例如,非传统的阈值电压分布曲线332可以更靠近读基准电压350和/或更宽。
在存储器件100被嵌入在主机170并由主机170通电之后,存储管理器110在其读取编程器的数据之前不能知道该数据中存在多少错误数据位。因此,存储管理器110通过使用过去用于将编程器的数据预加载到第一组存储器单元(例如组124)的相同的传统读基准电压(即读基准电压350、360和370)来读取编程器的数据。在存储管理器110从第一组存储器单元读取编程器的数据并将其暂时存储在另一存储器器件(例如RAM 150)中之后,存储管理器110例如通过使用ECC 190检测编程器的数据中的错误数据位。
读基准电压由数字表示(例如读基准电压350的“0.5”),存储器单元的物理(physical)阈值电压与该数字相比较以便确定存储器单元的二进制状态。正常地(即在主机被装配并且其在正常条件下与存储器件交互操作之后),指定使用的读基准电压的数字是不可变的。但是,根据本公开,在存储器件100被嵌入在主机170中之后逐步改变这些数字以便将编程器的数据中的错误数据位的数量减少到存储管理器110可以校正的数量。换句话说,存储管理器110选择(并且如果需要时改变选择)并使用替换的非传统的读基准电压来从存储器单元122读取编程器的数据。其后,其后,如果在编程器的数据中检测到的错误数据位可由存储管理器110校正,则存储管理器110校正它们并选择和使用传统的读基准电压将校正后的编程器的数据重新写到存储器单元122中(即复原编程器的数据)。
经验表明,试图通过施加传统的读基准电压从其传统阈值电压分布曲线已经改变的存储器单元读取编程器的数据时常得到不可校正的数量的错误数据位。假设编程器的数据是如下数据,保持该数据的存储器单元的一些处于二进制状态“A”;其他存储器单元处于二进制状态“B”;其他存储器单元处于二进制状态“C”;并且其余的存储器单元处于二进制状态“D”。如图3B所示,阈值电压分布曲线310的左移(即减小)无关紧要,因为偏移的曲线312整个位于读基准电压350的左边(即,原始被编程到二进制状态“A”的所有单元仍然处于二进制状态“A”,尽管其阈值电压左移)。
作为例子,在图3B中示出为粗线的阈值电压分布曲线322的小段存在于传统的读基准电压350的左侧。这意味着原始被编程到二进制状态“B”的一些存储器单元转变到二进制状态“A”。从一个二进制状态转变到另一个(例如从二进制状态“B”转变到二进制状态“A”)的存储器单元包括至少一个错误数据位。存在的转变越多,错误数据位的数量越大。继续此例子,阈值电压分布曲线322的更大段(也在图3B中示出为粗线)存在于传统的读基准电压360的左侧。这意味着相比于从二进制状态“B”转变到二进制状态“A”的存储器单元,更多存储器单元从二进制状态“C”转变到二进制状态“B”。继续此例子,阈值电压分布曲线342的甚至更大段(也在图3B中示出为粗线)存在于传统的读基准电压370的左侧。这意味着从二进制状态“C”转变到二进制状态“B”的存储器单元,更多存储器单元从二进制状态“D”转变到二进制状态“C”。
编程器的数据中的错误数据位的总数EA因此是由每种类型的转变(即从二进制状态“D”到二进制状态“C”的转变等等)引起的错误数据位的和。存储管理器110可以校正多达最大数量的错误数据位ET,其取决于ECC 190的类型。如果EA<ET,则存储管理器110校正错误数据位并刷新(refresh)(即复原该数据)。但是,如果EA>ET,则存储管理器110指示118CSSM 130选择250并使用如上所述属于非传统读基准电压的信息220。非传统读基准电压是相应传统读基准电压的“降低的版本”。使用降低的传统读基准电压以及使用作为传统读基准电压的降低版本的非传统读基准电压指代相同。参考信息220或者由信息220定义的读基准电压352、362和372是示例的非传统读基准电压。非传统读基准电压352是传统读基准电压350的降低的版本;非传统读基准电压362是传统读基准电压360的降低的版本;非传统读基准电压372是传统读基准电压370的降低的版本。
作为对于传统读基准电压350、360和370的替换而应用非传统读基准电压352、362和372得到更少的错误数据位,这是因为通过应用读基准电压352,先前从二进制状态“B”转变到二进制状态“A”的存储器单元已经恢复其二进制状态“B”,并且通过应用读基准电压362和372,更少的存储器单元从二进制状态“C”转变到二进制状态“B”以及从二进制状态“D”转变到二进制状态“C”。如果应用非传统读基准电压352、362和372仍得到不可校正的数量的错误数据位,则读基准电压被进一步降低以进一步减少编程器的数据中的错误数据位的数量。具有进一步降低的电平的示例读基准电压被示出在354、364和374处。
使用非传统的读基准电压354、364和374作为新替换的读基准电压得到更少的错误数据位,因为由于读基准电压354,存储器单元不从二进制状态“B”转变到二进制状态“A”(曲线322完全在读基准电压354的右侧);并且由于读基准电压364,存储器单元不从二进制状态“C”转变到二进制状态“B”(曲线332完全在读基准电压364的右侧),并且更少的存储器单元从二进制状态“D”转变到二进制状态“C”。因此,达某个点,读基准电压的电平方面的每次降低得到编程器的数据中的更少错误数据位。
图4是用于按传统方式将数据预加载到存储器件中的方法。将结合图1和图2描述图4。假设存储器件100连接到编程设备(例如编程器160)。在步骤410,存储管理器110确定存储器件100连接到编程器160。在步骤420,在存储器件100连接到编程器160的同时,存储管理器110配置CSSM 130以根据第一存储设置传统地操作第一组存储器单元(例如组124)。换句话说,存储管理器110指示CSSM 130选择信息210并对第一组存储器单元应用信息210。在步骤430,存储管理器110从编程器160接收编程器的数据(例如GPS地图等),并且在步骤440,存储管理器110使用CSSM 130、通过使用第一存储设置将编程器的数据写到(例如)单元组124中。信息210可以属于或者定义在传统阈值电压分布曲线310、320、330和340中以及传统读基准电压350、360和370中体现的MBC方案。
如上所述,第一存储设置使得存储管理器110传统地将存储器单元122的每个编程到2K个二进制状态的具体一个,由此将K个数据位存储在这样被编程的每个存储器单元中。如图3A和图3B中所示,K等于2。但是,本公开同样适用于其中K大于2的情况。当存储器件100连接到编程器160时,存储管理器110使用第一存储设置、通过将第一组存储器单元的每个编程到2K个二进制状态的具体一个来将编程器的数据写到第一组存储器单元中,其中2K个二进制状态的每个由2K个阈值电压范围的第一集合(即传统集合)中的具体一个表示。存储管理器110还使用第一存储设置、通过施加2K-1个读基准电压的第一集合(即传统集合)或者2K-1个读基准电压的第二集合(即非传统集合)在2K个二进制状态之间区分来从第一组存储器单元初始读取数据。在存储管理器110通过使用2K-1个读基准电压的传统或者非传统集合读取具有零个或者可校正数量的错误数据位的数据之后,其通过使用第一存储设置、即通过使用2K个阈值电压范围的传统集合和2K-1个读基准电压的传统集合将编程器的数据重新写到第二组存储器单元(例如组126或者组128或者另一组)中。
存储管理器110具有几种方式“知道”其是否连接到编程器160或者主机170:(1)存储管理器110可以从编程器160接收指示要传送给它的数据是编程器数据的信息或信号,(2)存储管理器110可以从编程器160接收通过使用第一存储设置存储数据的明确命令,或者(3)存储管理器110可以使用基于内部/本地的决策机制,如以下详述的。存储管理器110可以基于以下的任意一个/视以下的任意一个而定,自发地确定存储器件100连接到编程器160:从编程器160接收的命令以及存储管理器110从编程器160接收的一个或多个数据存储请求。存储管理器110可以在接收第一数据之前或之后选择第一存储设置作为默认存储设置。(注意:假设存储管理器110可以在其管理数据存储时“知道”其接收用于存储在存储器单元122中的数据是否是“第一数据”、“第二数据”等,因此可以假设第一数据是从编程设备传送到其处的。)或者,编程器160可以通知存储管理器110其正与编程设备通信。例如,编程器160可以使用专用命令或指示通知存储管理器110其连接到编程设备。编程器160可以在编程器160开始与存储管理器110的任何数据传送会话之前将这样的命令或通知发送到存储管理器110。或者,存储管理器110可以通过检测数据中或者与数据相关联的元数据中的特定数据串(例如特定前缀、特定后缀等)——其由编程设备而不是由主机唯一地使用——知道其正与编程器160通信。
图5是用于根据示例实施例恢复编程器的数据的方法。将结合图1和图2描述图5。假设存储器件110嵌入在主机170中以便允许主机的用户使用由编程器160预加载到存储器件100中的编程器的数据(例如GPS地图、视频剪辑或者歌曲等)。在步骤510,存储管理器110确定存储器件100被嵌入在主机170中并且包含预加载的数据(即编程器的数据)。在存储器件100嵌入在主机170中时,存储管理器110配置CSSM 130以在步骤520通过使用第一存储设置传统地从第一组存储器单元(例如从组124)读取编程器的数据或其所选部分。当存储器件100连接到编程器160时,存储管理器110配置CSSM 130以根据第一存储设置操作第一组存储器单元,并且其维持第一存储设置配置以便在其被主机170通电之后传统地从第一组存储器单元读取编程器的数据或者其所选部分。
假设在步骤520传统地读取的编程器的数据包括不能被存储管理器110校正的EA个错误数据位,在步骤530,存储管理器110重新配置CSSM 130以使用非传统读基准电压的集合;通过使用非传统读基准电压集合重新读取编程器的数据,并且重新计算重新读取的编程器的数据中的错误数据位的数量EA。存储管理器110重复步骤530直到编程器的数据中的错误数据位的数量EA可由存储管理器110校正(即直到EA≤ET)。以下结合图6详尽说明步骤530。
在步骤540,存储管理器110校正编程器的数据中的错误数据位并通过使用第一存储设置将校正后的编程器的数据或者其一个或多个所选部分重新写到第二组存储器单元(例如组126)中。即,在存储管理器110恢复编程器的数据之后,其回复、恢复或者重新使用第一存储设置以将编程器的数据重新写在存储器单元122中。存储管理器110然后可以刷新编程器的数据或者其一些。可能发生如下情况:编程器的数据被回流工艺破坏得存储管理器110不能校正,无论读基准电压多低。在这样的情况下,存储管理器110可以向主机170发送编程器的数据不可校正的消息。存储管理器110可以在重新读取编程器的数据并且重新计算重新读取的编程器的数据中的错误数据位的数量的步骤重复预定次数之后,或者如果相关读基准电压中的一个或多个已经达到预定电平(例如其初始电平的75%)并且错误数据位仍不可校正时,通知主机关于不可校正的数据。
存在存储管理器110可以通过其确定其连接到主机170的几种方式:(1)存储管理器110可以从主机170接收指示其正与主机设备通信的信息或信号,(2)存储管理器110可以从主机170接收通过初始地使用第一存储设置以及如需要通过使用第二存储设置从第一组单元读取编程器的数据并且在校正了编程器的数据中的错误数据位之后通过重新使用第一存储设置将校正后的编程器的数据重新写到第二组单元中的明确命令,(3)存储管理器110可以使用基于内部/本地的决策机制或电路,如以下详述的。
存储管理器110可以例如基于以下的任意一个或者视以下的任意一个而定自发地确定存储器件100被嵌入在主机170中:其从主机170接收的命令、其从主机170接收的特定数据或者特定数据串、以及其从主机170接收的一个或多个数据存储请求,这些与预定样式匹配。为了从第一组存储器单元读取编程器的数据。存储管理器110可以在其被主机170上电之后或者在其与主机170通信时初始地使用第一存储设置作为默认存储设置。假设存储管理器110知道其上电了多少次,当其第二次被上电时,存储管理器110可以假设其被主机设备上电。在存储管理器110的第二次上电之后,存储管理器110通过使用第一存储设置以及在所需的程度上使用第二存储设置来读取编程器的数据或者其部分,并且在编程器的数据被校正之后,通过使用第一存储设置来重新写该数据。
关于上述的编程器的数据串,如果存储管理器110正与设备通信并且未接收唯一数据串,则存储管理器110认为其正与主机设备通信并且据此而动作。或者,存储管理器110可以通过从主机170接收由主机设备唯一地使用并且不由编程设备使用的特定数据串(例如特定前缀、特定后缀等)知道其正与主机170通信。或者存储管理器110如果从主机170接收到将第二数据(即除了编程器的数据之外的数据)写到一个或多个存储器单元中的请求,并且通过使用超过预定限制或范围的逻辑块寻址(“LBA”)地址可访问这些存储器单元,则其可以确定其连接到主机170。或者,存储管理器110如果从主机170接收到通过使用LBA地址“m”写第二数据的请求以及使用LBA地址“n”写第三数据的随后的请求使得n小于或等于m,则其可以确定其连接到主机170。或者,存储管理器110如果从主机170接收到使用已经在使用的LBA地址写数据的请求,则其可以确定其连接到主机170。或者,存储管理器170如果从主机170接收到将过大尺寸的数据写到存储器件中的请求,则其可以确定其连接到主机170。“过大尺寸的数据”可以是例如其尺寸近似为涉及的存储器件的存储容量的一半的数据。或者,存储器件100可以包括用于为存储管理器110产生信号的电端子和电路,通过该信号,存储管理器110可以确定其是否连接到编程设备(例如编程器160)或者嵌入在主机(例如主机170)中。如果存储器件100在其第一次被主机上电时已经存储了数据,则存储管理器110可以确定已经存储在存储器件中的数据是(该)编程器的数据。存储管理器110可以确定存储器件100不包含预加载的数据。在确定存储器件100不包含预加载的数据之后,存储管理器110可以永久地配置CSSM 130以根据第一存储设置操作存储器单元122。
图6是用于根据示例实施例将数据预加载到存储器件中的方法。将结合图1、图2、图3A和图3B描述图6。图6示出手动进行的两个步骤:步骤610由存储器件100的制造商进行,步骤630由主机170的制造商进行。在步骤610,存储器件的制造商将存储器件100连接到编程器160,并且在步骤630,主机的制造商/装配者将存储器件100嵌入在主机170中。在步骤620,存储器件100的制造商(或其他人)通过使用第一存储设置、即通过传统地使用MBC存储方案按传统方式将编程器的数据预加载到第一组存储器单元122(例如组124)。在存储器件100嵌入在主机170中之后,存储管理器110在步骤640通过传统地使用MBC存储方案、即通过使用传统的读基准电压或者在所需程度上非传统地、即通过使用非传统的读基准电压从第一组存储器单元读取编程器的数据或其一个或多个所选部分。即,重复步骤640以便通过使用传统的读基准电压并且然后在所需的程度上(见步骤660)通过使用非传统的读基准电压开始读操作。如上所述,传统的读基准电压被信息214参考或者由信息214定义,并且非传统的读基准电压被信息220参考或者由信息220定义。
在步骤650,存储管理器110使用ECC 190来检测编程器的数据中的错误数据位。如果EA=0,这意味着编程器的数据中不存在错误数据位(示出为步骤650处的“N”),则存储管理器110禁止使用第二存储设置(即信息220)。在步骤680,存储管理器110可以决定刷新652编程器的数据或者禁止654刷新编程器的数据。如果EA>0,这意味着在编程器的数据中存在一些错误数据位(示出为步骤650处的“Y”),则存储管理器110在步骤660检验错误数据位的数量是否是可校正的。如上所述,如果错误数据位的数量EA小于或等于可以由所使用的ECC(例如ECC 190)校正的错误数据位的最大数量ET,则错误数据位是可校正的。如果通过使用ECC190可校正错误数据位(示出为步骤660处的“Y”);即,如果EA≤ET,则存储管理器110通过在步骤670(通过使用ECC 190)校正错误数据位并通过在步骤680将编程器的数据重新写在存储单元122中来刷新编程器的数据。但是,如果错误数据位不可校正(示出为步骤600处的“N”);即如果EA>ET,则存储管理器110重复地使用循环662来减少错误数据位的数量。当满足在步骤680指定的条件(即EA≤ET)时,重复循环662终止。
在步骤690,存储管理器110指示CSSM 130选择信息220以重新读取编程器的数据。参考图3B的示例的非传统读基准电压,信息220属于或者定义非传统读基准电压352、362和372。读基准电压352、362和372具有相对于传统读基准电压350、360和370分别降低的电平,如上所述。作为例子,传统读基准电压370的电平是4.50V,并且非传统读基准电压372的电平是比如4.40V;传统读基准电压360的电平是2.50V并且非传统读基准电压362的电平是比如2.40V,传统读基准电压350的电平是0.50V并且非传统读基准电压352的电平是比如0.40V。
在CSSM 130被指示118选择非传统读基准电压352、362和372之后,在步骤630,存储管理器110使用它们来重新读取编程器的数据。在步骤650和660,存储管理器110分别重新检验编程器的数据中是否仍存在错误数据位,并且如果存在,则它们是否可被校正。如果它们仍不能被校正(即EA>ET),则进一步降低读基准电压的电平(即施加具有降低的电平的非传统读基准电压)。
作为例子,所使用的读基准电压的电平进一步降低到在374、364和354处示出的电平。作为例子,相对于4.40V的非传统读基准电压372,非传统读基准电压374的电平是4.30V;相对于2.40V的非传统读基准电压362,非传统读基准电压364的电平是2.30V;相对于0.40V的非传统读基准电压352,非传统读基准电压354的电平是0.30V。
在CSSM 130选择非传统读基准电压354、364和374之后,在步骤630,存储管理器110使用它们重新读取编程器的数据。在步骤650和660,存储管理器110分别重新检验编程器的数据中是否仍存在错误数据位,并且如果存在,则它们是否可被校正。如果它们不能被校正,则以其电平相对于读基准电压354、364和374的电平分别进一步降低的读基准电压重复步骤690、640、650、660。否则(错误数据位可以被校正),如上所述进行步骤670和680。
如图3B所示,跨越读基准电压356、366和376均匀地并且在每组内线性地降低用于数据读取的读基准电压的电平。即,读基准电压350和读基准电压352之间的差、读基准电压360和读基准电压362之间的差以及读基准电压370和读基准电压372之间的差是0.1V,因此是均匀的差。读基准电压352和读基准电压354之间的差、读基准电压362和读基准电压364之间的差以及读基准电压372和读基准电压374之间的差也是0.1V,因此在每组读基准电压内线性降低。用于(重新)读取编程器的数据的读基准电压可以不均匀地降低,原因和示例如下。因为回流工艺对具有高阈值电压的存储器单元的影响比对具有低阈值电压的存储器单元的影响更大,因此读基准电压370的电平可以比读基准电压360的电平降低到更大程度。同理,读基准电压360的电平可以比读基准电压350的电平降低到更大程度。例如,读基准电压370的电平可以从4.5V降低到4.2V(ΔVD,C=0.30V,其中“ΔVD,C”指用于在二进制状态“D”和“C”之间区分的读基准电压);读基准电压360的电平可以从2.5V降低到2.3V(ΔVC,B=0.20V,其中“ΔVC,B”指用于在二进制状态“C”和“B”之间区分的读基准电压);以及读基准电压350的电平可以从0.5V降低到0.4V(ΔVB,A=0.10V,其中“ΔVB,A”指用于在二进制状态“B”和“A”之间区分的读基准电压)。
替代地,或附加地,可以通过施加其电平被非线性降低的读基准电压来从第一组存储器单元读取编程器的数据,原因和示例如下。如上所述,回流工艺对具有高阈值电压的存储器单元的影响比对具有低阈值电压的存储器单元的影响更大。因此,读基准电压370的电平在第一次读重复中可以降低达更大的程度并且在接下来的重复中可以降低达更小的程度。例如,参考读基准电压组376,位于二进制状态“D”和“C”之间的读基准电压的电平在第一次重复中可以从4.5V降低到4.2V(ΔVD,C=0.3V);在第二次重复中可以从4.2V降低到4.0V(ΔVD,C=0.2V);在第三次读重复中可以从4.0V降低到3.9V(ΔVD,C=0.1V),等等。
图2的信息220可以属于或者可以定义每组读基准电压的各自目标读基准电压。例如,信息220可以包含属于或者定义组356中的读基准电压352和354、组366中的读基准电压362和364以及组376中的读基准电压372和374的信息。在一个例子中,在信息220中仅指定在当前重复中使用的读基准电压和要在下一重复中使用的读基准电压之间的电压差(例如电压差390和392)。例如,信息220可以指定读基准电压370和读基准电压372之间的0.3V的电压差(即电压步长)、读基准电压372和读基准电压374之间的0.2V的电压差/步长,等等。在另一例子中,读基准电压的向左偏移与编程器的数据中的错误数据位的数量相关或者视该数量而定:存在的错误数据位越多,读基准电压向左偏移越大。例如,如果编程器的数据中的错误数据位的数量是错误数据位的最大可校正数量EA的比如两倍,则读基准电压370可以向左偏移比如0.6V,或者如果是比如1.3倍,则向左偏移比如0.4V,等等。信息220可以指定编程器的数据中的错误数据位的实际数量和一个或多个读基准电压的向左偏移之间的依赖性/相关性。随着重复上述错误数据位减少处理,用于降低读基准电压的电压步长可以缩小。
图7示出根据示例实施例用于产生存储管理器110的连接性信号的电端子730和电路740。将结合图1描述图7。存储器件100包括传统端子710的集合,并且编程器160包括传统端子720的集合。当存储器件100和编程器160连接时(以便将数据预加载到存储器单元122),端子710的每个接触端子720的每个。端子710和720的一些促进电力从编程器160的传送以对存储器件100上电,并且端子710和720中的其它端子促进这两个设备之间的通信和数据传送。
存储器件100包括电端子730,用于从编程器160接收关于存储器件100与编程器160的连接的第一信号(例如第一信号762),或者从主机接收关于存储器件100与主机的连接的第一信号。存储器件100还包括电路740,其功能上***电端子730和存储管理器110之间。电路740从第一信号762产生第二信号750。第二信号750向存储器件110指示存储器件100是否连接到编程器160。第二信号750下文中被称为“连接性信号”。连接性信号750可在“高”状态和“低”状态之间切换。作为例子,连接性信号750被编程器160外部地强制到“高”状态以由此向存储管理器110指示存储器件100当前连接到编程设备。当存储器件100被不是编程设备的设备、例如主机170上电时,连接性信号750内部地被强制到“低”状态。因此,存储管理器110基于连接性信号750处于“高”状态还是处于“低”状态来确定存储器件100是连接到编程器160还是嵌入在主机170中。如下所述产生连接性信号750。编程器160包括端子760,当这两个设备接合时,该端子760接触端子730。端子760和730在此被称为“连接性端子”。(注意:不像存储器件100和编程器160,主机170不具有连接性端子。)如图7所示,连接性端子760内部地连接到第一信号762,在此例子中该第一信号762是基准电压“+V”(例如+5V)。因此,当存储器件100连接到编程器160时,基准电压762从连接性端子760经由连接性端子730传送到电路740。作为例子,电路740包括下拉电阻器742和信号放大器744,该信号放大器744的电压增益(G)可以等于+1(即单位增益放大器)。基准电压762被馈送到信号放大器744的输入端子770,并且假设G=+1,信号放大器744输出电平基本与输入电压“+V”的电平相同的电压(即连接性信号750,上述的第二信号)。即,连接性信号750处于“高”状态。G的值可以不同于+1,并且在这样的情况下,如果连接性信号750的电压电平大于预定值(例如大于基准电压762的电平的60%),则该连接性信号750可以被认为是处于“高”状态。
图8示出图7的存储器件和传统的主机设备。将结合图1和图7描述图8。当存储器件100从编程器160断开并且嵌入在主机170中时,存储器件100的连接性端子730通过下拉电阻器742被强制到地电势(即732处示出的“Gnd”)。从而,信号放大器744的输入端子770处的电压基本是0。因此,信号放大器744输出电平基本是0的电压(即连接性信号750),这意味着连接性信号750处于“低”状态。
电路740可以完全或者部分地存在于存储管理器110中,或者其可以在存储管理器110外部,如图7和图8所示。下拉电阻器742可以用上拉电阻器替换,并且放大器744可以是逻辑反相器。取决于电路740的具体细节,存储管理器110可以将连接性信号750的“高”状态解释为存储器件100与编程设备的连接,如上所述,或者解释为存储器件100与主机设备的连接,并且存储管理器110将据此解释“低”状态。作为例子,提供第一信号的电端子(即电端子760)存在于编程器160中。但是,其可以存在于主机170设备中而不是编程器160中,并且存储管理器110可以据此解释第二信号(例如连接性信号750等)。
存储管理器110可以是标准现用(off-the-shelf)***级(“SoC”)设备或者***级封装(“SiP”)设备或者具有当被存储管理器110执行时进行在此所述的配置、步骤、操作、确定和估算的专用的软件或应用(例如应用112)的通用处理单元。或者,存储管理器110可以是通过使用硬件实现在此所述的配置、步骤、操作、确定和估算的专用集成电路(“ASIC”)。
取决于上下文,在此使用冠词“一个”来指代一个或者多于一个(即至少一个)该冠词的语法对象。作为例子,取决于上下文,“部件”可以意味一个部件或者多于一个部件。在此使用措辞“包括”以意味短语“包括但不限于”并且与该短语可互换地使用。在此使用措辞“或”以及“和”以意味措辞“和/或”并且与该措辞可互换地使用,除非上下文明确指示不是这样。在此使用措辞“诸如”以意味短语“比如但不限于”并且与该短语可互换地使用。
注意,以上描述涉及配备有通用串行总线(“USB”)接口、USB快闪驱动器(“UFD”)、多媒体卡(“MMC”)、安全数字(“SD”)、迷你SD和微SD等的诸如存储卡、SD驱动的闪存卡、闪存器件、“钥匙盘”器件的各种类型的海量存储器件。
已经因此描述了本发明的示例实施例,对本领域技术人员将显然的是,所公开的实施例的修改将在本发明的范围内。因此替换实施例可以包括更多的模块、更少的模块和/或功能上等效的模块。因此以下权利要求的范围不受在此的公开的限制。
Claims (14)
1.一种用于将数据预加载到存储器件的方法,包括:
在嵌入于主机设备中的存储器件中,其中该存储器件包括存储管理器和多个存储器单元,该存储器件包含该多个存储器单元的第一组存储器单元,其中,所述第一组存储器单元包含来自编程设备的数据,进行下述操作:
通过施加第一组基准电压从该第一组存储器单元读取该数据;
计算读取的数据中错误数据位的第一数量;以及
当错误数据位的第一数量大于预定阈值时:
通过将该第一组基准电压的每个基准电压降低基于错误数据位的第一数量而确定的量而产生第二组基准电压;
通过施加所述第二组基准电压从该第一组存储器单元重新读取数据;
计算重新读取的数据中的错误数据位的第二数量;以及
当所述错误数据位的第二数量小于或等于该阈值时,校正所述重新读取的数据。
2.如权利要求1的方法,其中,所述存储器件还被配置为对于产生所述组基准电压的每次发生而生成减少的电压降。
3.如权利要求1的方法,其中第一组基准电压包括基于存储器件的类型确定的一个或多个基准电压。
4.如权利要求1的方法,还包括将校正的重新读取的数据写入到第二组多个存储器单元。
5.如权利要求1的方法,其中所述第一组存储器单元基于在回流处理之后所述第一组存储器单元的存储器单元的预期读取失败的易受影响性来预先确定。
6.如权利要求1的方法,其中,所述阈值是存储管理器所能够校正的错误数据位的最大数量。
7.一种存储器件,包括:
存储器器件,具有多个用于存储数据的电荷存储存储器单元,所述多个存储器单元包含第一组存储器单元;
可配置的存储设置模块;以及
存储管理器,用于配置该存储设置模块以通过施加特定组的基准电压来操作该多个电荷存储存储器单元;
其中该存储管理器被配置为:
通过施加第一组基准电压从该第一组存储器单元读取该数据;
计算读取的数据中错误数据位的第一数量;以及
当错误数据位的第一数量大于阈值时:
通过将该第一组基准电压的每个基准电压降低基于错误数据位的第一数量而确定的量而产生第二组基准电压;以及
通过施加所述第二组基准电压从该第一组存储器单元重新读取数据;
计算重新读取的数据中的错误数据位的第二数量;以及
当所述错误数据位的第二数量小于或等于该阈值时,校正所述重新读取的数据。
8.如权利要求7的存储器件,还包括:
第一电端子,能够连接到第一外部设备中的第二电端子,用于通过第二电端子从该第一外部设备接收第一信号;以及
***在第一电端子和存储管理器之间的电路,用于从该第一信号产生第二信号,
其中该第二信号能够在指示存储器件连接到第一外部设备的第一逻辑状态和指示存储器件连接到第二外部设备的第二逻辑状态之间切换。
9.如权利要求8的存储器件,其中所述第一外部设备是编程设备。
10.如权利要求8的存储器件,其中所述电路整体或者部分地存在于存储管理器中。
11.如权利要求8的存储器件,其中所述电路在存储管理器外部。
12.如权利要求7的存储器件,其中,所述存储管理器还被配置为对于每个生成的一组基准电压而在电压上降低。
13.如权利要求7的存储器件,其中,所述存储管理器还被配置为当一个或多个基准电压达到预定的更低电平时指示在第一组存储器单元中存储的数据是不可校正,其中,第一组存储器单元基于所述第一组存储器单元的对回流工艺的易受影响性来预先确定。
14.如权利要求7的存储器件,其中所述存储管理器还被配置为将校正的数据写入到第二组多个存储器单元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2009/006632 WO2011024015A1 (en) | 2009-08-25 | 2009-08-25 | Restoring data into a flash storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102473460A CN102473460A (zh) | 2012-05-23 |
CN102473460B true CN102473460B (zh) | 2016-10-12 |
Family
ID=41226295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980160945.7A Active CN102473460B (zh) | 2009-08-25 | 2009-08-25 | 将数据恢复到闪存器件中 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8254170B2 (zh) |
EP (1) | EP2471068B1 (zh) |
KR (1) | KR20120059506A (zh) |
CN (1) | CN102473460B (zh) |
WO (1) | WO2011024015A1 (zh) |
Families Citing this family (130)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8050086B2 (en) | 2006-05-12 | 2011-11-01 | Anobit Technologies Ltd. | Distortion estimation and cancellation in memory devices |
WO2007132457A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
WO2007132456A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Memory device with adaptive capacity |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
WO2008068747A2 (en) | 2006-12-03 | 2008-06-12 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
US8369141B2 (en) | 2007-03-12 | 2013-02-05 | Apple Inc. | Adaptive estimation of memory cell read thresholds |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8234545B2 (en) | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
US8259497B2 (en) | 2007-08-06 | 2012-09-04 | Apple Inc. | Programming schemes for multi-level analog memory cells |
US8174905B2 (en) | 2007-09-19 | 2012-05-08 | Anobit Technologies Ltd. | Programming orders for reducing distortion in arrays of multi-level analog memory cells |
US8527819B2 (en) | 2007-10-19 | 2013-09-03 | Apple Inc. | Data storage in analog memory cell arrays having erase failures |
KR101509836B1 (ko) | 2007-11-13 | 2015-04-06 | 애플 인크. | 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택 |
US8225181B2 (en) | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
US8209588B2 (en) | 2007-12-12 | 2012-06-26 | Anobit Technologies Ltd. | Efficient interference cancellation in analog memory cell arrays |
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US8156398B2 (en) | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US8230300B2 (en) | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US7995388B1 (en) | 2008-08-05 | 2011-08-09 | Anobit Technologies Ltd. | Data storage using modified voltages |
US8949684B1 (en) | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
US8482978B1 (en) | 2008-09-14 | 2013-07-09 | Apple Inc. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8261159B1 (en) | 2008-10-30 | 2012-09-04 | Apple, Inc. | Data scrambling schemes for memory devices |
US8208304B2 (en) | 2008-11-16 | 2012-06-26 | Anobit Technologies Ltd. | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
US8174857B1 (en) | 2008-12-31 | 2012-05-08 | Anobit Technologies Ltd. | Efficient readout schemes for analog memory cell devices using multiple read threshold sets |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
KR20120062738A (ko) | 2009-08-31 | 2012-06-14 | 샌디스크 아이엘 엘티디 | 플래쉬 저장 디바이스로의 데이터 프리로드 |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8677203B1 (en) | 2010-01-11 | 2014-03-18 | Apple Inc. | Redundant data storage schemes for multi-die memory systems |
US8694853B1 (en) | 2010-05-04 | 2014-04-08 | Apple Inc. | Read commands for reading interfering memory cells |
US8572423B1 (en) | 2010-06-22 | 2013-10-29 | Apple Inc. | Reducing peak current in memory systems |
US8595591B1 (en) | 2010-07-11 | 2013-11-26 | Apple Inc. | Interference-aware assignment of programming levels in analog memory cells |
US9104580B1 (en) | 2010-07-27 | 2015-08-11 | Apple Inc. | Cache memory for hybrid disk drives |
US8645794B1 (en) | 2010-07-31 | 2014-02-04 | Apple Inc. | Data storage in analog memory cells using a non-integer number of bits per cell |
US8856475B1 (en) | 2010-08-01 | 2014-10-07 | Apple Inc. | Efficient selection of memory blocks for compaction |
US8694854B1 (en) | 2010-08-17 | 2014-04-08 | Apple Inc. | Read threshold setting based on soft readout statistics |
US9021181B1 (en) | 2010-09-27 | 2015-04-28 | Apple Inc. | Memory management for unifying memory cell conditions by using maximum time intervals |
KR101756111B1 (ko) * | 2011-04-15 | 2017-07-10 | 삼성전자 주식회사 | 메모리 컨트롤러 구동방법, 메모리 컨트롤러, 메모리 장치 및 메모리 시스템 |
JP5682466B2 (ja) * | 2011-06-14 | 2015-03-11 | 日本電気株式会社 | 電子装置、フラッシュメモリ交換管理システム、方法およびプログラム |
JP2013041634A (ja) * | 2011-08-11 | 2013-02-28 | Fujitsu Ltd | 不揮発性半導体記憶装置 |
US9047210B2 (en) | 2011-09-15 | 2015-06-02 | Sandisk Technologies Inc. | Data storage device and method to correct bit values using multiple read voltages |
US9058289B2 (en) | 2011-11-07 | 2015-06-16 | Sandisk Enterprise Ip Llc | Soft information generation for memory systems |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US8687421B2 (en) | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
US8811076B2 (en) * | 2012-07-30 | 2014-08-19 | Sandisk Technologies Inc. | Systems and methods of updating read voltages |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US8793558B2 (en) | 2012-08-27 | 2014-07-29 | Freescale Semiconductor, Inc. | Adaptive error correction for non-volatile memories |
KR101991437B1 (ko) * | 2012-08-30 | 2019-06-20 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그의 동작방법 |
US8874992B2 (en) | 2012-08-31 | 2014-10-28 | Sandisk Technologies Inc. | Systems and methods to initiate updating of reference voltages |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
KR102039537B1 (ko) | 2013-03-15 | 2019-11-01 | 삼성전자주식회사 | 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법 |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9367246B2 (en) * | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9229806B2 (en) | 2013-11-14 | 2016-01-05 | Sandisk Technologies Inc. | Block closure techniques for a data storage device |
US9165670B2 (en) | 2013-11-14 | 2015-10-20 | Sandisk Technologies Inc. | Data retention detection techniques for a data storage device |
US8982617B1 (en) | 2013-11-14 | 2015-03-17 | Sandisk Technologies Inc. | Block closure techniques for a data storage device |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9230689B2 (en) | 2014-03-17 | 2016-01-05 | Sandisk Technologies Inc. | Finding read disturbs on non-volatile memories |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
KR102147916B1 (ko) | 2014-04-14 | 2020-08-26 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9472270B2 (en) | 2014-10-24 | 2016-10-18 | Sandisk Technologies Llc | Nonvolatile storage reflow detection |
US9552171B2 (en) | 2014-10-29 | 2017-01-24 | Sandisk Technologies Llc | Read scrub with adaptive counter management |
US9978456B2 (en) | 2014-11-17 | 2018-05-22 | Sandisk Technologies Llc | Techniques for reducing read disturb in partially written blocks of non-volatile memory |
US9349479B1 (en) | 2014-11-18 | 2016-05-24 | Sandisk Technologies Inc. | Boundary word line operation in nonvolatile memory |
US9449700B2 (en) | 2015-02-13 | 2016-09-20 | Sandisk Technologies Llc | Boundary word line search and open block read methods with reduced read disturb |
US9653154B2 (en) | 2015-09-21 | 2017-05-16 | Sandisk Technologies Llc | Write abort detection for multi-state memories |
KR102381218B1 (ko) * | 2015-09-25 | 2022-04-01 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN106205720B (zh) * | 2016-07-06 | 2019-07-09 | 记忆科技(深圳)有限公司 | 一种恢复Nand Flash错误数据的方法 |
US10228998B2 (en) * | 2016-08-04 | 2019-03-12 | Taiwan Semiconductor Manufacturing Company Limited | Systems and methods for correcting data errors in memory susceptible to data loss when subjected to elevated temperatures |
JP2018160303A (ja) * | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | 半導体記憶装置 |
US10446241B1 (en) * | 2018-08-13 | 2019-10-15 | Micron Technology, Inc. | Automatic calibration (autocal) error recovery for a memory sub-system |
US11043266B1 (en) | 2020-06-15 | 2021-06-22 | Western Digital Technologies, Inc. | Multi-level read after heating event in non-volatile storage |
US11556416B2 (en) | 2021-05-05 | 2023-01-17 | Apple Inc. | Controlling memory readout reliability and throughput by adjusting distance between read thresholds |
US11847342B2 (en) | 2021-07-28 | 2023-12-19 | Apple Inc. | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657332A (en) * | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
CN101211659A (zh) * | 2006-12-27 | 2008-07-02 | 海力士半导体有限公司 | 非易失性存储器件及其自补偿方法 |
CN101252020A (zh) * | 2007-02-22 | 2008-08-27 | 海力士半导体有限公司 | 存储器件的读取方法 |
CN101335047A (zh) * | 2007-06-28 | 2008-12-31 | 三星电子株式会社 | 闪存装置和调节闪存装置的读电压的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001167588A (ja) | 1999-12-06 | 2001-06-22 | Nec Ic Microcomput Syst Ltd | Eepromの読み出し不良検出回路及び読み出し不良検出方法 |
US6522580B2 (en) * | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
US7554842B2 (en) * | 2001-09-17 | 2009-06-30 | Sandisk Corporation | Multi-purpose non-volatile memory card |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
JP2006114078A (ja) * | 2004-10-12 | 2006-04-27 | Toshiba Corp | 不揮発性半導体記憶装置及びその動作方法 |
US7876621B2 (en) * | 2007-04-23 | 2011-01-25 | Sandisk Il Ltd. | Adaptive dynamic reading of flash memories |
KR101518199B1 (ko) * | 2008-05-23 | 2015-05-06 | 삼성전자주식회사 | 오류 정정 장치, 그 방법 및 상기 장치를 포함하는 메모리장치 |
-
2009
- 2009-08-25 US US12/664,631 patent/US8254170B2/en active Active
- 2009-08-25 WO PCT/IB2009/006632 patent/WO2011024015A1/en active Application Filing
- 2009-08-25 EP EP09786176.9A patent/EP2471068B1/en active Active
- 2009-08-25 CN CN200980160945.7A patent/CN102473460B/zh active Active
- 2009-08-25 KR KR1020127003904A patent/KR20120059506A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657332A (en) * | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
CN101211659A (zh) * | 2006-12-27 | 2008-07-02 | 海力士半导体有限公司 | 非易失性存储器件及其自补偿方法 |
CN101252020A (zh) * | 2007-02-22 | 2008-08-27 | 海力士半导体有限公司 | 存储器件的读取方法 |
CN101335047A (zh) * | 2007-06-28 | 2008-12-31 | 三星电子株式会社 | 闪存装置和调节闪存装置的读电压的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2471068B1 (en) | 2015-11-11 |
US20110228604A1 (en) | 2011-09-22 |
WO2011024015A1 (en) | 2011-03-03 |
CN102473460A (zh) | 2012-05-23 |
US8254170B2 (en) | 2012-08-28 |
KR20120059506A (ko) | 2012-06-08 |
EP2471068A1 (en) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102473460B (zh) | 将数据恢复到闪存器件中 | |
CN101779194B (zh) | 用于存储器的错误校正 | |
CN105144302B (zh) | 存储器装置中的错误校正操作 | |
JP4660353B2 (ja) | 記憶媒体再生装置 | |
CN110246533B (zh) | 固态储存装置的失败模式检测方法及错误更正方法 | |
KR101829861B1 (ko) | 반도체 메모리 장치, 그 소거 방법 및 프로그램 방법 | |
CN101627371A (zh) | 用于nand存储器的编程管理数据 | |
CN102483949A (zh) | 预加载数据到快闪存储装置中 | |
CN105320464B (zh) | 防止读取干扰的方法、存储器控制电路单元与存储装置 | |
WO2009156876A1 (en) | Fast, low-power reading of data in a flash memory | |
CN108766495A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
US10445008B2 (en) | Data management method for memory and memory apparatus | |
US7471562B2 (en) | Method and apparatus for accessing nonvolatile memory with read error by changing read reference | |
US20110161779A1 (en) | Semiconductor recording device, control method of semiconductor recording device, and semiconductor recording system | |
TW200917028A (en) | Semiconductor memory device with memory cell having charge accumulation layer and control gate and memory system | |
CN105988880B (zh) | 存储器管理方法、存储器控制电路单元及存储器储存装置 | |
TWI556248B (zh) | 記憶體程式化方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN107958687A (zh) | 存储器编程方法、存储器控制电路单元及其存储装置 | |
JP5320511B2 (ja) | マルチレベル・ライトワンス・メモリ・セルを備える書き換え可能メモリデバイス | |
CN110473584B (zh) | 固态储存装置中已抹除区块的再验证方法 | |
CN104572324A (zh) | 固态储存装置及其控制方法 | |
CN104167220B (zh) | 数据读取方法、控制电路、存储器模块与存储器存储装置 | |
CN104102598B (zh) | 数据读取方法、控制电路、存储器模块与存储器储存装置 | |
US10586596B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US8654590B2 (en) | Nonvolatile memory device performing a program verification with sense signals based on program data of adjacent memory cells and program method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Israel Kfar Saba Patentee after: Western data Israel Limited Address before: Israel saaba Patentee before: SANDISK IL Ltd. |
|
CP03 | Change of name, title or address |