CN101622674A - 利用随机化抑制错误的闪存装置、系统和方法 - Google Patents
利用随机化抑制错误的闪存装置、系统和方法 Download PDFInfo
- Publication number
- CN101622674A CN101622674A CN200780045693A CN200780045693A CN101622674A CN 101622674 A CN101622674 A CN 101622674A CN 200780045693 A CN200780045693 A CN 200780045693A CN 200780045693 A CN200780045693 A CN 200780045693A CN 101622674 A CN101622674 A CN 101622674A
- Authority
- CN
- China
- Prior art keywords
- data
- randomization
- fetching
- unit
- raw data
- 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.)
- Pending
Links
Images
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/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- 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/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
一种存储数据的装置和方法,包括:非易失性存储器和控制器和/或电路,所述控制器和/或电路在保持原始数据的大小的同时使要存储在所述存储器中的原始数据随机化,并且响应于对原始数据的请求,取回、去随机化和输出原始数据而无需认证请求实体。一种用于存储数据的系统和方法,包括:第一非易失性存储器和通过执行驱动器代码相似地在第一非易失性存储器中存储数据的处理器,所述驱动器代码存储在第二非易失性存储器中。在随机化之前或之后应用ECC编码,在去随机化之后或之前应用ECC解码。
Description
技术领域
本发明一般地涉及闪存存储系统。具体地讲,本发明涉及其中闪存能够每个存储单元存储多位,并且其中某些干扰作用被最小化的闪存存储系统。
背景技术
闪存装置已为人所知许多年了。通常,闪存内的每一个单元存储一位信息。传统地,存储一位的方式是通过支持单元的两个状态-一个状态表示逻辑“0”而另一个状态表示逻辑“1”。在闪存单元中,这两个状态是通过在单元的沟道(连接单元的晶体管的源极和漏极元件的区域)上具有浮栅,并且使该浮栅内存储的电荷量具有两个有效状态来实现的。通常,一个状态是在浮栅中具有零电荷,并且是单元在被擦除之后的初始未写入状态(通常被定义为表示“1”状态);而另一个状态是在浮栅中具有一些量的负电荷(通常被定义为表示“0”状态)。在栅极中具有负电荷使得单元的晶体管的阈值电压(即,要应用于晶体管的控制栅极以便使晶体管导通的电压)增加。现在,有可能通过检查单元的阈值电压来读取存储的位--如果阈值电压为较高的状态,则位值为“0”,如果阈值电压为较低的状态则位值为“1”。实际上,不需要准确地读取单元的阈值电压--所有需要的就是正确地识别单元当前处于两个状态中的哪一个。由于该目的,只需要与在这两个状态之间的参考电压值进行比较,从而确定单元的阈值电压是否低于或高于该参考值。
图1A图解地示出了这是如何进行的。具体地讲,图1A示出了大量单元的阈值电压的分布。因为闪存装置中的单元在其特性和行为方面不完全相同(例如,由于硅结构中的杂质浓度的微小差别或缺陷),向所有单元应用相同的编程操作不会使所有的单元具有完全相同的阈值电压。(请注意,由于历史原因,向闪存写入数据通常被称作对闪存“编程”。术语“写入”和“编程”在此处可互换地使用)。相反,阈值电压的分布与图1A所示的方式相似。存储值“1”的单元通常具有负阈值电压,从而大部分单元具有与由图1A的左峰值表示的值接近的阈值电压,而较小数量的单元具有较低或较高的阈值电压。相似地,存储值“0”的单元通常具有正阈值电压,从而大部分单元具有与图1A的右峰值表示的值接近的阈值电压,而较小数量的单元具有较低或较高的阈值电压。
近年来,市场上出现了一种使用传统地称为“多级单元”或简称为MLC的技术的新型闪存装置。(该命名是误导的,因为之前的闪存单元类型也具有多于一个级:如上所述,它们具有两级。因此,这两种类型的闪存单元在此处被称为“单位单元”(SBC)和“多位单元”(MBC))。由MBC闪存带来的改进是在每一个单元中存储两位。(原理上,MBC也包括每个单元存储多于两位。为了简化说明,此处强调两位的情况。然而,应理解本发明可等同地应用于支持每单元多于两位的闪存装置。)为了使单个单元存储两位信息,该单元必须能够处于四种不同状态中的一种。因为单元的“状态”由其阈值电压表示,很清楚,MBC单元应支持其阈值电压的四种不同的有效的范围。图1B示出了典型的MBC单元的阈值电压分布。如期望的那样,图1B具有四个峰值,每一个峰值对应于一个状态。至于SBC的情况,每一个状态实际上是一个阈值电压范围而不是单个阈值电压。当读取单元的内容时,所有必须要保证的就是单元的阈值电压所处的范围被正确地识别。对于MBC闪存装置的现有技术的例子,请见Harari的美国专利No.5434825。
当将MBC单元中的两位编码为四个状态中的一个时,通常使图1B中最左侧的状态(通常具有负的阈值电压)表示两位都具有值“1”的情况。(在下面的讨论中,使用下述符号:单元的两位被称为“下位(lower bit)”和“上位(upper bit)”。位的具体值被写为[“上位”“下位”]的形式,并且下位值在右侧。所以下位为“0”上位为“1”的情况被写作“10”。必须理解该术语和符号的选择是任意的,并且其它名称和编码是可能的)。使用该符号,最左侧的状态表示“11”的情况。其它三个状态被示出为从左向右以下述顺序分配“10”,“00”,“01”。可在Chen的美国专利No.6522580中见到使用上述这样的编码的MBCNAND闪存装置的实现的例子,该专利实际上通过引用而并入,如同其全文在此处陈述了一样。具体见Chen的专利的图8。但应注意,本发明不依赖于状态的该分配,而可以使用其它排序。当读取MBC单元的内容时,单元的阈值电压所在的范围必须被正确地识别;仅在该情况下,不能总是通过与一个参考电压比较来实现,可能需要几个比较。例如,在图1B中所示的情况下,一种读取下位的方法是先将单元的阈值电压与参考比较电压V1相比较,然后根据比较的结果,将单元的阈值电压与零参考比较电压或参考比较电压V2相比较。另一种读取下位的方法是无条件地将单元的阈值电压与零参考电压和V2相比较。在任一种情况下,都需要两个比较。
MBC装置的大的优点是成本:使用相似大小的单元,能够存储两位而不是一位。然而,使用MBC闪存也有一些缺点:MBC存储器的平均读取和写入时间长于SBC存储器,导致了较低的性能。并且,MBC的可靠性低于SBC。这可以容易地理解:MBC中的阈值电压范围之间的差比SBC中的小得多。因此,在SBC中由于两个状态之间的大的差距而注意不到的阈值电压的干扰(例如,导致阈值电压偏移的存储电荷的泄露、来自相邻单元的操作的干扰等)可能使MBC单元从一个状态移至另一个状态,导致错误的位。最终结果就是在数据保持时间或装置对于许多写入/擦除周期的持久性方面MBC单元具有较低质量规格。因此,同时使用MBC单元和SBC单元具有优点,取决于应用的要求选择可不同。
尽管上述说明是关于浮栅闪存单元的,也有其它类型的闪存技术。例如,在NROM闪存技术中没有导电浮栅,但有捕获电荷的绝缘层。本发明可等同地应用于所有闪存类型,尽管此处的说明是关于浮栅技术给出的。
在闪存装置中有几种错误源。如上所述,一个这样的错误源是电子从存储单元的栅极泄露,其可能使单元的最初写入状态变为另一个不正确的状态,导致读取单元时的一个或多个位错误。本发明主要涉及通常称为“编程干扰(program disturb)”或简称为“PD”的特定错误源。与导致在将数据存储在闪存装置中的长时间段中缓慢累积错误的泄露型作用不同,PD作用导致在将数据写入装置的单元中之后马上出现错误。
PD作用使没有打算写入的单元无意地从它们的初始最左侧的状态移至某个其它状态。(此处的说明假设附图的图1A和1B中也使用的通常做法,阈值电压轴的左方向表示较低的值。这是任意的做法并且不应被理解为以任何方式限制本发明的范围)。参照图1B的每个单元两位的例子,发现在对应于位值“11”(或换句话说,对应于单元的擦除状态)的最左侧的状态中并且应该保持这样的状态的单元处于“10”的次最左侧(next-to-leftmost)状态中,导致存储在这样的单元中的两位中的一位错误。在一些情况下,特别是在每单元存储多于两位并具有多于四个状态的单元中,PD作用可能最终不仅导致从最左侧的状态移动至紧邻的状态,还从最左侧的状态移至更远的状态,以及从不是最左侧状态的状态移动至其右侧的另一个状态(即具有更高的阈值电压)。然而,从最左侧的状态移动至其紧邻的状态的上述第一种情况是最常见的,并将在不限制本发明的方法的一般性的情况下在此处作为所有的例子和解释来使用。
通过背景技术讨论PD作用的原因,与Chen的专利的图1相同的图2是典型的现有技术闪存装置的框图。由列控制电路2、行控制电路3、c源控制电路4和c-p阱控制电路5控制包括排列成矩阵的多个存储单元M的存储单元阵列1。列控制电路2连接至存储单元阵列1的位线(BL),以读取存储在存储单元(M)中的数据,在编程操作期间确定存储单元(M)的状态,并且控制位线(BL)的电压电平以促进编程或禁止编程。行控制电路3连接至字线(WL)以选择字线(WL)中的一个,施加读取电压,施加与由列控制电路2控制的位线电压电平相组合的编程电压,并且施加与其上形成有存储单元(M)的p型区域的电压相耦合的擦除电压。C源控制电路4控制与存储单元(M)相连接的公共源极线。C-p-阱控制电路5控制c-p-阱电压。通常,在NAND闪存装置中,由一个字线控制的单元对应于装置的一个或两个页面,并且字线被组织成块,每一个块通常包括2的适当次幂,例如25=32的字线的数量。页面是其单元被一起编程的NAND闪存装置的最小单位(unit)。块是其单元可被一起擦除的NAND闪存装置的最小单位。
存储单元(M)中存储的数据由列控制电路2读取并经由I/O线和数据输入/输出缓存器6输出至外部I/O线。要存储在存储单元中的编程数据经由外部I/O线被输入至数据输入/输出缓存器6,并且被传递至列控制电路2。外部I/O线连接至控制器20。
用于控制闪存装置的命令数据被输入至连接至外部控制线的命令接口,所述外部控制线与控制器20相连接。命令数据通知闪存请求什么操作。输入命令被传递至控制列控制电路2、行控制电路3、c-源极控制电路4、c-p-阱控制电路5和数据输入/输出缓存器6的状态机8。状态机8可输出诸如READY/BUSY或PASS/FAIL的闪存的状态数据。
控制器20连接至或可连接至诸如个人计算机、数码摄影机、个人数字助理的主机系统。是主机发起诸如向存储器阵列1存储或从其读取数据的命令,并分别提供或接收这样的数据。控制器20将这样的命令变换为可由命令电路7解释和执行的命令信号。控制器20也通常包含使用户数据被写入存储器阵列1或从中被读取的缓冲存储器。典型的存储系统包括一个集成电路芯片21,其包括控制器20;以及分别包含存储器阵列及其相关控制、输入/输出和状态机电路的一个和多个集成电路芯片22。当然,趋势是将系统的存储器阵列和控制器电路一起集成在一个或多个集成电路芯片上。存储系统可以作为主机系统的一部分嵌入,或包括在可移除地插入到主机系统的配合插座的存储卡中。这样的卡可包括整个存储系统,或者控制器和存储器阵列连同相关联的外围电路可设置在单独的卡中。
当考虑在对页面编程时施加到NAND闪存装置的单元的电压时,容易理解PD作用的原因。当对单元的页面编程时,向与页面的单元的控制栅极相连接的字线施加相对高的电压。决定是否作为该控制栅极电压的结果而增加某单元阈值电压的是向与该单元相连接的位线施加的电压。不要被写入数据的单元(也就是说,要保持擦除,表示全1状态)的位线连接至使单元上的电压差最小化的相对高的电压电平。要写入的单元使其位线连接至低电压,在单元上导致大的电压差,并使得单元的阈值电压增加,从而将单元向图1B的电压轴的右侧移动,并使得单元的状态变化。
然而,尽管不打算被写入的单元上的电压差低于打算被写入的单元,不打算被写入的单元上仍然具有一些电压差。如果要被写入的页面具有一些要被写为高阈值电压(例如,写为最右侧的状态)的单元,则在未编程的单元上的电压差变高。这是因为该页面的所有单元的所有控制栅极得到了对其施加的相同电压,要达到的阈值电压越高,该电压就越高。因此,向一些单元施加较高的控制栅极(即字线)电压的需要导致了未编程单元上的较高的电压差。尽管设计单元时的目标是不被这样的预期电压差影响,在实际的NAND闪存装置中,这样的电压差压迫单元,并且可能使一些单元改变其状态,即使这不是有意的也不是所需的。
总结上述说明,PD是这样的一种作用,其中当对单元的一个页面编程时,预期要保持在最左侧的擦除状态的一些单元最终变为另一状态,导致当读取那些单元时的位错误。
可经验性地或统计地测量PD作用,并且可以应用纠错方案形式的对策来处理该PD作用。闪存装置制造商意识到了该潜在错误源,并且当向他们的客户推荐客户应使用的纠错等级时将其考虑在内。所以,当每单元两位的MBC闪存装置的制造商推荐4位ECC方案(是指应防止每512字节的用户数据出现最多达四位的错误)时,他可使该推荐以假设存储在装置中的随机数据样式的统计分析、和在这样的环境下发生PD型错误的概率为基础。明显地,这样的计算也要考虑其它错误源和类型。
不幸地,典型的现实生活中的用户数据不是随机的。对现实生活中的用户文件的测量显示出,单元的各种可能的状态的发生不具有相等的概率。单元的最左侧的状态是没有被写入的单元的默认值,该状态是最常见的。这很容易理解:未初始化或未在文件内使用的存储器的一部分通常对应于擦除状态的单元。
其结果是,在现实生活的应用中PD错误的问题比基于随机数据样式统计计算预期的更严重。相对多的单元将处于擦除状态,这是最易遭受PD错误影响的状态,因此将实际发生比通过随机数据分布模型预测的更多的PD错误。
请注意,尽管我们强调PD作用是取决于存储在闪存中的用户数据的错误源,也存在其它这样的错误源。例如,后模式(back pattern)(BP)现象,其是不同位线BL具有不同电阻的结果,并且也是与数据相关的。位线的电阻取决于存储在沿位线的单元中的数据,即位线的电阻取决于沿位线的单元的实际状态或电压电平。不同位线电阻导致了不同的位线电流。这可能导致在读取两个不同位线中的两个单元期间的不同电压电平感测,即使这两个单元被编程为完全相同的电压电平(即,两个单元具有完全相同的阈值电压)。其结果是,这样的两个单元的错误概率是不同的并且是与用户数据相关的。
明显地,闪存块或页面错误率与存储在闪存中的用户数据之间的这种相关性是不希望的。某些“最差情况”的用户数据样式可能具有比其它情况高得多的错误率。这使得难以估计保护所存储的数据所需要的ECC要求。此外,如上所述,由于例如PD的现象,现实生活中的非随机用户数据易于遭受比随机数据更高的错误率。
因此,广泛认识到,需要在不易遭受由诸如PD或BP的现象导致的与数据相关的错误方面比现有技术闪存装置更可靠的闪存装置,并且这将是很有利的。
定义
随机序列是不具有可识别的样式或规律性的序列。序列中没有元素可以从序列的其它已知元素被预测。因此,此处“随机化”被定义为增加高度非随机的位序列的随机性的操作。换句话说,已被“随机化”的序列的位比随机化之前的序列的位更不容易从序列中的其它位被预测。请注意,因为本发明的随机化处理是确定性的,这些处理的输出序列是可预测的,所以就下述意义而言不是真正的随机而只是“伪随机”,即,输出序列的样式或规律性比输入序列的样式和规律性更难识别(优选地是难得多)。因此,所附权利要求中所述的“随机化”序列是伪随机序列,不是真正的随机序列。
随机化的一个特殊情况是“加扰”。加扰是输入位序列到输出位序列的可逆变换,使得输出位序列的每一位是输入位序列的几个位和辅助位序列的函数。
随机化的逆操作是“去随机化”。加扰的逆操作是“解扰”。
针对存储单元的多组状态相似地定义“随机化”。如果当单元被编程为第一组状态时由单元表示的位序列比当单元被编程为第二组状态时由单元表示的位序列更随机,则存储单元的第一组状态相对于相同存储单元的第二组状态被“随机化”。优选地,各个存储单元状态以近似相等的数量出现在“随机化”的一组存储单元状态中。
“非随机”位序列是具有可识别的样式和/或规律性的位序列。一组“非随机”的存储单元状态是一组具有可识别的样式和/或规律性,和/或在单元状态上具有非均匀导出分布的单元状态。
发明内容
根据本发明,提供了一种用于存储数据的装置,包括:(a)非易失性存储器;和(b)非易失性存储器的控制器,可操作用来:(i)在保持原始数据的大小的同时使要存储在存储器中的原始数据随机化,从而提供随机化数据;(ii)在存储器中存储随机化数据;以及(iii)响应于装置外部的实体对原始数据的请求:(A)从存储器中取回随机化数据,以及(B)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(C)将取回的数据输出至实体而不认证该实体。
根据本发明,提供了一种用于存储数据的装置,包括:(a)存储器,其包括(i)非易失性存储单元的阵列,以及(ii)电路,可操作用来:(A)在保持原始数据的大小的同时使要存储在存储单元中的原始数据随机化,从而提供随机化数据;(B)在至少一部分存储单元中存储随机化数据;(C)从所述至少一部分存储单元中取回随机化数据,以及(D)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据;以及(b)控制器,可操作用来:(i)响应于来自装置外部的实体的对于原始数据的请求,将取回的数据输出至实体而不认证该实体。
根据本发明,提供了一种用于存储数据的系统,包括:(a)第一非易失性存储器;(b)第二非易失性存储器,其中存储有用于第一非易失性存储器的驱动器,所述驱动器包括:(i)用于在保持原始数据的大小的同时使要存储在第一非易失性存储器中的原始数据随机化,从而提供随机化数据的代码;(ii)用于在第一非易失性存储器中存储随机化数据的代码;以及(iii)用于通过(A)从第一非易失性存储器中取回随机化数据,(B)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(C)输出取回的数据而不认证该请求,来响应对于原始数据的请求的代码;以及(c)处理器,用于执行驱动器的代码。
根据本发明,提供一种计算机可读存储介质,其上嵌入有计算机可读代码,所述计算机可读代码是存储装置的驱动器代码,所述计算机可读代码包括:(a)用于在保持原始数据的大小的同时使要存储在存储装置的存储器中的原始数据随机化,从而提供随机化数据的程序代码;(b)用于在存储器中存储随机化数据的程序代码;以及(c)用于通过(i)从存储器中取回随机化数据,(ii)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(iii)输出取回的数据而不认证该请求,响应对于原始数据的请求的程序代码。
根据本发明,提供了一种用于存储数据的装置,包括:(a)具有足够数量的存储单元的非易失性存储器,其通过将存储单元编程为存储单元的一组对应的状态来存储原始数据;以及(b)该非易失性存储器的控制器,可操作用来:(i)将原始数据映射为相对于该组对应状态被随机化的所有存储单元的一组状态,(ii)指令存储器将存储单元编程为该组随机化的状态,以及(iii)响应于装置外部的实体对原始数据的请求:(A)读取存储单元,从而提供取回的随机化的数据,(B)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(C)将取回的数据输出至实体而不认证实体。
根据本发明,提供了一种用于存储数据的装置,包括:(a)存储器,所述存储器包括:(i)足够数量的存储单元,其通过将存储单元编程为存储单元的一组对应的状态来存储原始数据;以及(ii)电路,可操作用来:(A)将原始数据映射为相对于该组对应状态被随机化的所有存储单元的一组状态,(B)将存储单元编程为该组随机化的状态,(C)读取存储单元,从而提供取回的随机化的数据,以及(D)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据;以及(b)控制器,可操作为响应于来自装置外部的实体对原始数据的请求,将取回的数据输出至实体而不认证该实体。
根据本发明,提供了一种用于存储数据的系统,包括:(a)具有足够数量的存储单元的第一非易失性存储器,其通过将存储单元编程为存储单元的一组对应的状态来存储原始数据;(b)第二非易失性存储器,其中存储有用于第一非易失性存储器的驱动器,所述驱动器包括:(i)用于将原始数据映射为相对于该组对应状态被随机化的所有存储单元的一组状态的代码,(ii)用于指令第一非易失性存储器将存储单元编程为该组随机化的状态的代码,以及(iii)用于通过(A)指令第一非易失性存储装置读取存储单元,从而提供取回的随机化的数据,(B)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(C)将取回的数据输出而不认证请求,来响应对于所述原始数据的请求的代码;以及(c)处理器,用于执行驱动器的代码。
根据本发明,提供了一种其上嵌入有计算机可读代码的计算机可读存储介质,所述计算机可读代码是用于存储装置的驱动器代码,其包括:足够数量的存储单元,其通过将存储单元编程为存储单元的一组对应的状态来存储原始数据,所述计算机可读代码包括:(a)用于将原始数据映射为相对于该组对应状态被随机化的所有存储单元的一组状态的程序代码;(b)用于指令存储装置将存储单元编程为该组随机化的状态的程序代码;以及(c)用于通过(i)指令存储装置读取存储单元,从而提供取回的随机化的数据,(ii)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(iii)将取回的数据输出而不认证实体,来响应对于原始数据的请求的程序代码。
根据本发明,提供一种存储数据的方法,包括下述步骤:(a)在保持原始数据的大小的同时使原始数据随机化,从而提供随机化数据;(b)在非易失性存储器中存储随机化数据;以及(c)响应于对于原始数据的请求:(i)从存储器中取回随机化数据,(ii)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(iii)将取回的数据输出至从其接收请求的实体而不认证该实体。
根据本发明,提供了一种存储数据的方法,包括下述步骤:(a)提供足够数量的存储单元,以通过将存储单元编程为存储单元的一组对应的状态来存储原始数据;(b)将原始数据映射为相对于该组对应状态被随机化的所有存储单元的一组状态;(c)将存储单元编程为该组随机化的状态,以及(d)响应于对于原始数据的请求:(i)读取存储单元,从而提供取回的随机化的数据,(ii)对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及(iii)将取回的数据输出至从其接收请求的实体而不认证该实体。
本发明的范围包括两个基本装置和用于存储数据的基本系统。
第一基本装置包括非易失性存储器和控制器。控制器在保持原始数据的大小的同时使要存储在存储器中的原始数据随机化,以提供随机化的数据。控制器在存储器中存储随机化数据。响应于来自装置外部的实体(例如,装置的主机)的对于原始数据的请求,控制器从存储器取回随机化数据,并对取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据。非常优选地,取回的数据与原始数据严格相同,但这不能在所有的情况下被保证,这是由于例如在读取数据时没有被错误校正解码校正的错误造成的。将取回的数据输出至实体而不认证该实体。
保持原始数据的大小是本发明的装置与相似的现有技术装置的区别,现有技术装置对要存储在其存储器中的数据进行压缩。数据压缩可被理解为至少部分随机化的一种形式,但由于其性质,数据压缩减小了被压缩的数据的大小。不认证请求原始数据的实体是本发明的装置与相似的现有技术装置的区别,现有技术装置对要存储在其存储器中的数据加密(从而至少部分随机化),但这需要某种形式的认证,诸如出示口令或诸如出示加密时原始使用的密钥,从而以解密形式接收从它们的存储器读取的数据。
第二基本装置包括存储器和控制器。存储器包括非易失性存储单元阵列和执行第一基本装置的控制器的随机化、存储、取回和去随机化功能的电路。控制器执行由第一基本装置的控制器执行的取回数据的无认证的输出。
优选地,任一个控制器都在随机化之前对原始数据应用纠错编码,并在输出取回的数据之前对取回的数据应用纠错解码。可供替换地,第一装置的控制器在存储随机化数据之前对随机化的数据应用纠错编码,并且在去随机化之前对取回的随机化数据应用纠错解码。纠错编码可以是其中纠错位附于编码数据以产生代码字的系统编码,或被编码的数据在代码字中不可识别的非系统编码中的任何一个。
优选地,随机化包括对以2为模的原始数据和固定的随机位序列或伪随机位序列求和,而去随机化包括对以2为模的取回的随机化数据与随机位序列或伪随机位序列求和。在本发明的一些实施例中,伪随机位序列是固定的。在本发明的其它实施例中,例如使用线性反馈移位寄存器,由第一装置的控制器或第二装置的电路产生伪随机位序列,所述线性反馈移位寄存器的种子是固定的,或是其中存储了随机化数据的由存储器分区所得的单位(unit)的单位编号的函数。例如,如果存储器是闪存,则所述单位可以是闪存的块或闪存的页面。
可供替换地,随机化包括对原始数据加扰,并且去随机化包括解扰取回的随机化数据。例如,在第二装置中,电路包括用于执行加扰的加扰器块、和用于执行解扰的解扰器块。最优选地,使用共享公共种子的相应线性反馈移位寄存器实现加扰和解扰。在本发明的一些实施例中,种子是固定的。在本发明的其它实施例中,种子是其中存储了随机化数据的由存储器分区所得的单位的单位编号的函数。例如,如果存储器是闪存,则所述单位可以是闪存的块或闪存的页面。
本发明的基本系统包括第一非易失性存储器、第二非易失性存储器和处理器。在第二非易失性存储器中存储了包括由处理器执行的代码的驱动器,以对本发明的第一装置的控制器进行仿真。在本发明的系统的上下文中,请求原始数据的实体通常是在系统上运行并执行命令的用户应用,以便编程和读取由驱动器支持的第一非易失性存储器。
可以硬件、固件、软件或其组合来实现本发明的各个实施例的功能元件,例如线性反馈移位寄存器。
作为方法,本发明的范围也包括由本发明的装置和系统使用的用于存储数据的方法。本发明的范围也包括其上嵌入有用于本发明的系统的驱动器的计算机可读代码的计算机可读存储介质。
从另一个角度来看,本发明的方法是在要编程为存储单元的一组对应状态的足够数量的存储单元中存储原始数据的方法。例如,512个SBC闪存单元或256个四状态MBC闪存单元可被编程为存储512位数据。原始数据被映射为所有单元(在本例子中,所有512个SBC单元或所有256个MBC单元)的一组状态,该组状态相对于该组对应的状态被随机化。然后,存储单元被编程为该组随机化的状态,而不是被编程为原始的一组对应状态。这两组中的状态数是相同的,这是该角度的本发明的方法与相似的现有技术方法的区别,在现有技术中,数据以压缩形式存储在比以未压缩形式存储相同数据所需要的更少的存储单元中。如下所述,将原始数据映射为一组随机化的存储单元状态的优选方法是通过将原始数据随机化。
优选地,以该组随机状态发生的各个存储单元状态为基本上相同的数量。
附图说明
此处参考附图,仅通过例子描述了本发明,其中:
图1A示出了以1位模式编程的闪存单元的阈值电压分布;
图1B示出了以2位模式编程的闪存单元的阈值电压分布;
图2是闪存装置的框图;
图3A和3B是根据本发明的随机化/去随机化和ECC编码/解码的示意性框图;
图4示出了使用固定的随机位序列的示例性随机化器和去随机化器块;
图5示出了使用由线性反馈移位寄存器产生的伪随机位序列的示例性随机化器和去随机化器块;
图6示出了示例性加扰器和解扰器块;
图7-9是本发明的系统的高层框图。
具体实施方式
本发明的装置是(在ECC解码之前)消除或减少存储在闪存中的用户数据和原始闪存错误率之间的相关性的每单元多位的闪存存储装置。这是通过将用户数据位变换为伪随机位序列,然后将伪随机位序列编程到闪存中来完成的,其结果是,导致块或页面高错误率的有问题的(“最差情况下的”)位样式的概率变得可忽略,并且实际上减少至零。优点是明显的:1)闪存的可靠性不是由非常难以确定的某些最差情况下的用户数据样式来驱动的。2)提高了现实生活场景中的闪存的可靠性,其中在现实生活场景中这种最差情况下的用户数据样式更常见。3)ECC要求更容易评估。4)需要较低的ECC冗余,并且提高了闪存成本效率(就每信息位的单元而言)。其原因是,我们不需要处理实际上出现概率为零的最差情况的错误率。我们仅需要处理在随机位序列被编程到闪存中的假设下的闪存的预期错误率。
2007年5月3日提交的美国专利申请11/797379中陈述了用于抵抗具体由PD作用引起的与数据相关的错误的方法。该方法基于改变从位到电压电平的映射,使得擦除状态被切换至另一个状态。请注意,其实现无需改变闪存所使用的实际映射。实际上,可在编程之前使闪存的控制器有意地翻转某些位,然后在读取时再翻转那些位。例如,翻转所有位将使得最初被设想为存储全为1的状态(即,擦除状态)的单元的编程被编程为全为0的状态。该方法的缺点是不能普遍地解决与数据相关的错误的问题。其仅处理擦除状态下PD错误的一个非常特殊的场景。此外,即使对于该特殊情况,该建议的方案也不是最佳的,因为使擦除状态切换为替换状态使得替换状态易于经受PD错误。例如,考虑之前的例子,其中我们翻转所有的位从而切换全为1和全为0的状态。如果用户数据包含0的大序列,则编程的页面仍将遭受许多涉及PD的错误。
本发明的方法以更普遍的方式解决与数据相关的错误的问题。枚举所有有问题的数据样式是一个非常难(并且可能不可行)的任务,因为这样的枚举需要完全理解在闪存中出现的各种物理现象和产生数据的用户应用的完整统计表征,以确定哪些数据样式比其它的存储得更频繁。因此,代替处理对于例如PD的特定现象有问题的特定数据样式,本发明的方法通过确保写入闪存的位序列是伪随机的,将任何样式的概率实际上减少为零。
在本发明的一些实施例中,根据本领域已知的几种方法的一种,使用随机化器块(以硬件、固件或软件实现的)完成用户数据位到伪随机位序列的变换。变换需要是可逆的。使用去随机化器块完成逆变换。可在ECC编码之前对用户数据位进行变换(如图3A所示),或在ECC编码之后对编码用户数据位进行变换(如图3B所示)。在第一种情况下,可通过在使用ECC解码器对位序列解码之后,对从闪存读取的位序列执行逆变换执行来恢复用户数据位(如图3A所示)。在第二种情况下,直接对从闪存读取的位序列执行逆变换。然后使用ECC解码器对得到的位序列解码,以恢复用户数据位(如图3B所示)。
根据本发明的一个实施例,通过对模2的用户数据位与固定的随机位序列或固定的伪随机位序列求和来执行随机化。所得到的随机化的位序列被ECC编码(如果需要),然后被编程到闪存中。在读取闪存时,经由ECC解码器对读取的位序列解码(如果需要)。通过对模2的位序列与已知的固定随机位序列或伪随机位序列求和来将解码的、无错误的位序列去随机化,以恢复用户数据位。根据该实施例的随机化器和去随机化器块的例子在图4中被示出。
根据本发明的另一个实施例,通过对模2的ECC编码用户数据位与固定随机位序列或固定伪随机位序列求和来执行随机化。然后将得到的随机化位序列编程到闪存中。在读取闪存时,通过对模2的读取的位序列与已知的固定随机位序列或伪随机位序列求和对读取的位序列去随机化。然后通过对去随机化位序列进行ECC解码来恢复用户数据位。根据该实施例的随机化器和去随机化器块的例子也在图4中示出。
根据本发明的另一个实施例,通过对模2的用户数据位与伪随机位序列求和来执行随机化。例如使用线性反馈移位寄存器产生伪随机位序列。如本领域中已知的,为了获得“好”的随机性,根据足够大的有限域(Galois域)(S.Golomb,Shift Register Sequences,Agean ParkPress,Laguna Hills CA USA,1982)的原始多项式来构建反馈移位寄存器。得到的随机化的位序列被ECC编码(如果需要),然后被编程到闪存中。在读取闪存时,使用ECC解码器对读取的位序列解码(如果需要)。通过对模2的位序列与在编程期间使用的相同的伪随机位序列求和对解码的、无错误的位序列去随机化,来恢复用户数据位。例如,当使用反馈移位寄存器产生伪随机位序列时,通过将相同的种子用于初始化反馈移位寄存器,即通过以相同的位序列初始化反馈移位寄存器,在编程和读取期间获得相同的位序列。
根据本发明的另一个实施例,通过对模2的ECC编码用户数据位与伪随机位序列求和来执行随机化。然后将随机化位序列编程到闪存中。在读取闪存时,通过对模2的位序列与在编程期间使用的相同的伪随机位序列求和,对读取的位序列去随机化。然后通过对去随机化的位序列进行ECC解码来恢复用户数据位。根据该实施例的随机化器和去随机化器块的例子也在图5中示出。
存在用于确定初始化伪随机位序列发生器所使用的种子的各种选项。例如,种子可以是不变的。可供替换地,种子可以是其中存储有数据的闪存的块或页面的单位编号的函数。根据该实施例的随机化器和去随机化器块的例子也在图5中示出。
当种子是单位编号的函数时,必需小心,因为大多数闪存装置执行“垃圾收集”,在“垃圾收集”的过程中,存储有数据的单位的编号变化。垃圾收集的一种常见形式是通过一旦闪存页面已被编程,就必需在重新编程之前擦除页面的事实激发的,并且擦除是一次一个块而不是一次一个页面进行的。其所有页面已被编程的闪存块通常包含具有当前数据的一些页面、和具有已被更加新的编程数据代替的数据的其它页面。为了恢复该块以用于进一步的编程,当前数据页面被复制到一个不同的块,然后擦除旧块。新块具有与旧块不同的块编号。通常,向其复制当前数据的页面具有与从其复制数据的页面不同的页面编号。为了使用于初始化反馈寄存器的种子对于编程和读取都相同,必需考虑与这样的垃圾收集相关联的单位编号的变化。
一种确保使用相同的种子编程和读取的方法是,当将数据写入新页面或新块时,总是对要移动至新页面或新块的数据去随机化,并且可能使用不同的种子对数据重新随机化。另一种确保使用相同的种子编程和读取的方法是,总是将数据移动至新页面或新块,使得产生种子的单位编号的函数对于旧单位编号和新单位编号产生相同的种子。例如,如果使用函数“模8的页面编号”来产生种子,则垃圾收集应总是将数据的页面复制到其以二进制表示的页面编号具有与旧页面的页面编号相同的最后三位的新页面。另一种确保使用相同种子编程和读取的方法是,与数据一起存储种子。例如,NAND闪存的每一个页面通常包括用于存储数据的主要部分和用于存储管理信息的管理部分。这样的页面的典型的大小为528字节:512字节用于存储数据,16字节用于存储管理信息。用于产生用于随机化存储在页面的主要部分中的数据的伪随机序列的种子存储在页面的管理部分中。在该替换方案下,存储种子的单元应排除在随机化处理外,以确保正确地读取种子用于去随机化。
在具有“闪存文件系统”的闪存装置中,可使用逻辑页面地址作为产生伪随机序列的种子。闪存文件系统提供了一种在闪存装置上进行数据存储和操作的系统,其允许装置模拟磁盘。闪存文件系统使得应用程序或操作系统能够不使用物理地址而使用逻辑地址(有时称为虚拟地址)与闪存装置交互。软件应用和物理存储系统之间的中间软件层提供逻辑地址和物理地址之间的映射。Ban的US5404485和Ban的美国专利US5937425和Lasser的美国专利US6591330中描述了实现逻辑-物理地址映射的一些系统,所有这三个专利都通过引用而并入,如同其全文在此陈述了一样。因为闪存系统的主机使特定逻辑地址与特定数据块相关联,可保证用于产生初始化反馈寄存器以用于编程数据的种子的这种逻辑地址,可用于产生初始化反馈寄存器以用于读取数据的相同种子。
根据本发明的另一个实施例,通过使用户数据位经过加扰器块来执行随机化。可使用线性反馈移位寄存器实现加扰器。如本领域中熟知的,为了获得“好”随机性,根据某种足够大的有限域(Galois域)(S.Golomb,ibid)的原始多项式来构建反馈移位寄存器。以预定种子初始化线性反馈移位寄存器。该种子可以是不变的,或者是存储有数据的闪存的页面或块的单位编号的函数,或是当读取数据时已知的任何其它参数。在加扰器的输出端得到的伪随机位序列被ECC编码(如果需要),然后被编程到闪存中。在读取闪存时,使用ECC解码器解码读取的位序列(如果需要)。然后,通过使用解扰器块对解码的无错误的位序列去随机化来恢复用户数据位,所述解扰器块是用与编程期间在加扰器块中使用的相同的种子初始化的。当由基于多项式构建的线性反馈移位寄存器实现加扰器块时,解扰器块优选地被实现为表示逆多项式的线性移位寄存器。根据该实施例的随机化器和去随机化器块的例子在图6中示出。
根据本发明的另一个实施例,通过使ECC编码用户数据位经过加扰器块来执行随机化。一种实现加扰器的方法是使用以预定种子初始化的线性反馈移位寄存器。在加扰器的输出端处得到的伪随机位序列被编程到闪存内。在读取闪存时,使用以与编程期间在加扰器块中使用的相同的种子初始化的解扰器块对读取的位序列去随机化。当由基于多项式构建的线性反馈移位寄存器实现加扰器块时,解扰器块优选地被实现为表示逆多项式的线性移位寄存器。然后通过ECC解码去随机化的位序列来恢复用户数据位。根据该实施例的随机化器和去随机化器块的例子在图6中被示出。关于基于单位编号的种子与垃圾收集的交互的考虑与上述基于线性反馈移位寄存器的随机化器块的情况中的相同。
请注意,其中在ECC编码之前执行加扰和在ECC解码之后执行解扰的加扰和解扰的第一方法,与其中在ECC编码之后执行加扰和在ECC解码之前执行解扰的第二方法相比是优选的。这是因为如果从闪存读取的位序列包含错误,则这些错误可通过解扰而被传播,造成在解扰序列中错误数量的增加、以及如果ECC解码在解扰之后则对于ECC解码来说纠错作业更困难。
除了此处提到的,可以有各种其它随机化和去随机化块的实现方法。在上述例子中,串行地逐位执行随机化。可供替换地,使随机化并行进行,从而随机化器/去随机化器块同时输出几个位。在所有情况下,由随机化块产生的伪随机位序列具有与输入至随机化块的原始位序列相同数量的位。这是本发明的将本发明与现有技术中的压缩相区别的方面,现有技术中的压缩也将输入数据在某种程度上随机化,但也输出比输入数据中更少的位。
请注意,向数据位应用变换的上述方法假设正在对闪存编程。当擦除闪存页面时,页面的所有单元都被设定为最左侧的状态或电压电平(如图1A和1B所示),并且假设所有单元都包含固定的全1数据样式。这可能导致与实际被编程为全1位序列,但根据本发明表示某个其它数据位序列的页面的混淆。然而,这可以由使用能够区分还没写入的页面和已被写入的页面的闪存装置的应用来处理。这是容易做的,并且在闪存管理系统的现有技术中是熟知的,例如通过在页面的管理部分中分配一个或多个标志单元(flag cell),其总是被写入作为页面编程操作的一部分,从而如果发现处于最左侧的状态,则指示未写入页面。所以根据标准的现有技术逻辑来解释被发现未写入的页面,而根据本发明的方法解释被发现写入的页面。
请注意,除了US 11/797379,其它现有技术也描述了要存储在存储装置中的逻辑位值被转换为实际存储的物理值的转换阶段的概念。Lasser的美国专利申请公开No.2005/0213393中教导了该概念。然而,不仅Lasser的‘393专利申请中的转换的目的与本发明的目的完全不同,Lasser的‘393专利申请中的转换还缺少使本发明的转换可用的特定特征。本发明中使用的转换的类型的实质性特征是:使单元的所有状态有相等的发生几率,而与存储在单元中的用户数据无关,从而错误是与数据无关的。在Lasser的‘393专利申请中,转换的目的是为了使错误的分布均匀,而不是为了消除数据相关性。事实上,Lasser的‘393专利申请中示出的所有变换例子都没有实现本发明的目的。
Gonzalez等人在美国专利No.6684289中也教导了当写入和读取闪存时逻辑位值和物理位值之间的映射,用于避免数据的静态样式的重复编程(见第6栏,第28-47行)。Gonzalez等人的‘289专利不仅与使得例如存储位的PD错误的与数据相关的错误的概率最小化无关,还应用了时变变换,使得相同的逻辑数据值在不同时间被变换为不同的物理状态,否则避免对静态数据样式重复编程的目的就无法实现。而另一方面,本发明不要求变换是基于时间的(尽管其可以是基于时间的,如果存在一种确保在读取时原始数据可以被对应的逆变换恢复的方法)。
还应注意,尽管对闪存单元的操作的上述解释假设存储N位的单元具有正好2N个可能的不同状态(由其阈值电压的不同范围来表示),并且擦除操作使单元成为表示2N个数据值之一的最左侧(最低电压)的状态,也存在不是该情况的闪存装置。在这样的装置中,擦除状态与所有数据状态不同。具体地讲,擦除状态具有比数据状态中的任何一个更大的负阈值电压。在这样的装置中,无论何时将数据写入单元,即使数据是全1值,单元也被编程(也就是说,其阈值电压增加)为达到对应于该数据值的状态。换句话说,擦除状态与全1状态不同,这与之前提到的装置不同。尽管关于第一种类型的装置给出本发明的上述解释,本发明也可应用于第二种类型的装置。
本发明的方法可通过软件或硬件来实现。更具体地讲,在编程期间数据的随机化和读取期间数据的去随机化可通过执行软件代码或由电路(例如非门)来实现。如果由软件来实现随机化和去随机化,则它们可由在写入或读取数据的主机计算机上(例如在支持存储装置的软件装置驱动器内)执行的软件实现,或它们可由在与主机计算机交互并控制存储介质的存储器控制器(例如,图2的控制器20)内执行的固件实现。如果由硬件实现随机化和去随机化,则它们可在存储器控制器中或存储介质(例如在图2的命令电路7中)内实现。其适用于不管存储器控制器和存储介质是两个独立的芯片还是驻留在一个共同的芯片上。所有上述配置和变形都在本发明的范围内。
因此,除了示出典型的现有技术闪存装置,图2也示出了本发明的闪存装置的两种实施例。在如图3B所示,在随机化之前执行ECC编码,并且在随机化之后执行ECC解码的第一种实施例中,控制器20执行ECC编码和解码,命令电路7执行随机化和去随机化。在以图3A所示的顺序或以图3B所示的顺序执行ECC编码/解码和随机化/去随机化的第二种实施例中,控制器20执行ECC编码/解码和随机化/去随机化。在两种类型的实施例中,控制器20在从闪存装置的主机接收到读取命令时,将读取数据输出至主机而不要求主机认证其本身。换句话说,主机不需要向控制器20证明该主机被授权来接收读取的数据,以使控制器20将读取的数据发送至主机。
图7和8是包括第二种类型的闪存装置实施例的两个系统40和60的高层框图。在系统40中,主机计算机42将读取和写入指令发送至本发明的闪存装置52。闪存装置52通过执行闪存管理软件46使用闪存控制器44管理闪存50。闪存管理软件46包括随机化模块48和ECC模块49,以便如上所述,以图3A示出的顺序或图3B示出的顺序执行随机化/去随机化和ECC编码/解码。在系统60中,主机计算机将读取和写入指令发送至闪存装置72。闪存装置72通过执行闪存管理软件66,使用闪存控制器64来管理闪存70。闪存控制器64还包括随机化硬件68和ECC硬件69,以便如上所述,以图3A示出的顺序或图3B示出的顺序执行随机化/去随机化和ECC编码/解码。
图9是本发明的另一个系统80的高层框图。系统80包括处理器82和四个存储器装置:RAM 84、引导(boot)ROM 86、大容量存储装置(硬盘)88和现有技术闪存装置94,所有上述装置都通过共用总线60通信。闪存驱动器代码90存储在大容量存储装置88中,并由处理器82执行,以在由处理器82执行的用户应用和闪存装置94之间进行接口连接,并管理闪存装置94的闪存。驱动器代码90包括随机化模块92和ECC模块93,以便如上所述以图3A示出的顺序或图3B示出的顺序执行随机化/去随机化和ECC编码/解码。驱动器代码90不要求从存储装置94读取数据的用户应用认证其本身来接收所请求的数据。驱动器代码90通常包括在系统80的操作系统代码中,但也可以是独立的代码。
除闪存装置94以外的系统80的组件构成了闪存装置94的主机100。大容量存储装置88是承载有用于实现本发明的计算机可读驱动器代码的计算机可读存储介质的例子。这样的计算机可读存储介质的其它例子包括例如承载有这种代码的CD的只读存储器。
配置本发明的装置或系统,例如图2、7和8的装置和图9的系统,以要求对仅请求接收存储在装置或系统的闪存中的特定数据的实体进行认证也在本发明的范围内。例如,闪存控制器44或64可选择地被配置为允许装置52或72的用户对闪存50或70分区为私有分区和公共分区。对存储在私有分区中的数据的访问需要例如出示口令的认证。对存储在公共分区中的数据的访问不需要认证。可供替换地,闪存控制器44或64被配置为支持来自特权用户的命令,该命令将装置52或72在安全模式(其中对存储在闪存50或70中的数据的访问需要认证)和开放模式(其中对存储在闪存50或70中的数据的访问不需要认证)之间切换。本发明对无需认证的访问的所有要求就是,本发明的装置或系统的操作模式中的一个必需允许读取至少一些存储数据,而不要求请求数据的实体认证其本身。
尽管已关于有限数量的实施例描述了本发明,应理解可以对本发明做出许多变形、修改和其它应用。
权利要求书(按照条约第19条的修改)
1.一种用于存储数据的装置,包括:
(a)非易失性存储器;以及
(b)所述非易失性存储器的控制器,可操作用来:
(i)使要存储在所述存储器中的原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据,
(ii)对所述随机化数据应用纠错编码,从而提供编码的随机化数据,
(iii)在所述存储器中存储所述纠错编码的随机化数据,以及
(iv)响应于装置外部的实体对所述原始数据的请求:
(A)从所述存储器中取回所述编码的随机化数据,
(B)对所述取回的编码的随机化数据应用纠错解码,从而提供解码的随机化数据,
(C)对所述解码的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(D)将所述取回的数据输出至所述实体而不认证所述实体。
2.如权利要求1所述的装置,其中所述控制器可操作用来通过包括对模2的所述原始数据与固定的随机位序列求和的步骤对所述原始数据随机化;以及其中,所述控制器可操作用来通过包括对模2的所述取回的随机化数据与所述随机位序列求和的步骤对所述取回的随机化数据去随机化。
3.如权利要求1所述的装置,其中所述控制器可操作用来通过包括对模2的所述原始数据与伪随机位序列求和的步骤对所述原始数据随机化;以及其中,所述控制器可操作用来通过包括对模2的所述取回的随机化数据与所述伪随机位序列求和的步骤对所述取回的随机化数据去随机化。
4.如权利要求3所述的装置,其中所述伪随机位序列是固定的。
5.如权利要求3所述的装置,其中所述控制器可操作用来产生所述伪随机位序列。
6.如权利要求5所述的装置,其中所述控制器可操作用来使用线性反馈移位寄存器产生所述伪随机位序列。
7.如权利要求6所述的装置,其中所述线性反馈移位寄存器的种子是固定的。
8.如权利要求6所述的装置,其中所述存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
9.如权利要求8所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的块。
10.如权利要求8所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的页面。
11.如权利要求1所述的装置,其中所述控制器可操作用来通过包括对所述原始数据加扰的步骤对所述原始数据随机化;以及其中,所述控制器可操作用来通过包括对所述取回的随机化数据解扰的步骤对所述取回的随机化数据去随机化。
12.如权利要求11所述的装置,其中使用共享公共种子的相应线性反馈移位寄存器来实现所述加扰和所述解扰。
13.如权利要求12所述的装置,其中所述种子是固定的。
14.如权利要求12所述的装置,其中所述存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
15.如权利要求14所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的块。
16.如权利要求14所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的页面。
17.一种用于存储数据的系统,包括:
(a)第一非易失性存储器;
(b)第二非易失性存储器,其中存储了用于所述第一非易失性存储器的驱动器,所述驱动器包括:
(i)用于使要存储在所述第一非易失性存储器中的原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据的代码,
(ii)对所述随机化数据应用纠错编码,从而提供编码随机化数据的代码,
(iii)用于在所述第一非易失性存储器中存储所述编码随机化数据的代码,以及
(iv)用于通过下述操作来响应对于所述原始数据的请求的代码:
(A)从所述第一非易失性存储器中取回所述编码随机化数据,
(B)对所述取回的编码随机化数据应用纠错解码,从而提供解码随机化数据,
(C)对所述解码随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(D)输出所述取回的数据而不认证所述请求;以及
(c)处理器,用于执行所述驱动器的所述代码。
18.如权利要求17所述的系统,其中所述用于随机化所述原始数据的代码包括用于对模2的所述原始数据与固定的随机位序列求和的代码;以及其中,所述用于对所述取回的随机化数据去随机化的代码包括对模2的所述取回的随机化数据与所述随机位序列求和的代码。
19.如权利要求17所述的系统,其中所述用于随机化所述原始数据的代码包括用于对模2的所述原始数据与伪随机位序列求和的代码;以及其中,所述用于对所述取回的随机化数据去随机化的代码包括对模2的所述取回的随机化数据与所述伪随机位序列求和的代码。
20.如权利要求19所述的系统,其中所述伪随机位序列是固定的。
21.如权利要求19所述的系统,其中所述驱动器还包括:
(iv)用于产生所述伪随机位序列的代码。
22.如权利要求21所述的系统,其中所述用于产生所述伪随机位序列的代码包括线性反馈移位寄存器的代码。
23.如权利要求22所述的系统,其中所述线性反馈移位寄存器的种子是固定的。
24.如权利要求22所述的系统,其中所述第一非易失性存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
25.如权利要求24所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的块。
26.如权利要求24所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的页面。
27.如权利要求17所述的系统,其中所述用于对所述原始数据随机化的代码包括用于对所述原始数据加扰的代码;以及其中,所述用于对所述取回的随机化数据去随机化的代码包括用于对所述取回的随机化数据解扰的代码。
28.如权利要求27所述的系统,其中所述用于对所述原始数据加扰的代码包括相应的线性反馈移位代码;其中,所述用于对所述取回的随机化数据解扰的代码包括相应的线性反馈移位代码;以及其中这两个所述线性反馈移位代码共享公共种子。
29.如权利要求28所述的系统,其中所述种子是固定的。
30.如权利要求28所述的系统,其中所述第一非易失性存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
31.如权利要求30所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的块。
32.如权利要求30所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的页面。
33.一种计算机可读存储介质,其上嵌入有计算机可读代码,所述计算机可读代码是用于存储装置的驱动器代码,所述计算机可读代码包括:
(a)用于使要存储在存储装置的存储器中的原始数据随机化同时保持原始数据的大小,从而提供随机化数据的程序代码;
(b)用于对所述随机化数据应用纠错编码,从而提供编码随机化数据的程序代码;
(c)用于在所述存储器中存储所述编码随机化数据的程序代码;以及
(d)用于通过下述操作来响应对于所述原始数据的请求的程序代码:
(i)从所述存储器中取回所述编码随机化数据,
(ii)对所述取回的编码随机化数据应用纠错解码,从而提供解码随机化数据,
(iii)对所述解码随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(iv)输出所述取回的数据而不认证所述请求。
34.一种存储数据的方法,包括下述步骤:
(a)使原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据;
(b)对所述随机化数据应用纠错编码,从而提供编码随机化数据;
(c)在非易失性存储器中存储所述编码随机化数据;以及
(d)响应于对所述原始数据的请求:
(i)从所述存储器中取回所述编码随机化数据,
(ii)对所述取回的编码随机化数据应用纠错解码,从而提供解码随机化数据,
(iii)对所述解码随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(iv)将所述取回的数据输出至从其接收所述请求的实体而不认证所述实体。
35.如权利要求34所述的方法,其中通过包括对模2的所述原始数据与固定的随机位序列求和的步骤实现所述随机化;以及其中,通过包括对模2的所述取回的随机化数据与所述随机位序列求和的步骤实现所述去随机化。
36.如权利要求34所述的方法,其中通过包括对模2的所述原始数据与伪随机位序列求和的步骤实现所述随机化;以及其中通过包括对模2的所述取回的随机化数据与所述伪随机位序列求和的步骤实现所述去随机化。
37.如权利要求36所述的方法,其中所述伪随机位序列是固定的。
38.如权利要求36所述的方法,还包括步骤:
(d)产生所述伪随机位序列。
39.如权利要求38所述的方法,其中使用线性反馈移位寄存器实现所述产生。
40.如权利要求39所述的方法,其中所述线性反馈移位寄存器的种子是固定的。
41.如权利要求39所述的方法,还包括下述步骤:
(e)将所述存储器分区为多个单位,每一个所述单位具有相应的单位编号;
以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
42.如权利要求41所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的块。
43.如权利要求41所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的页面。
44.如权利要求34所述的方法,其中通过包括对所述原始数据加扰的步骤实现所述随机化;以及其中通过包括对所述取回的随机化数据解扰的步骤来实现所述去随机化。
45.如权利要求44所述的方法,其中所述加扰和所述解扰是使用共享公共种子的相应的线性反馈移位寄存器实现的。
46.如权利要求45所述的方法,其中所述种子是固定的。
47.如权利要求45所述的方法,还包括下述步骤:
(d)将所述存储器分区为多个单位,每一个所述单位具有相应的单位编号;
以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
48.如权利要求47所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的块。
49.如权利要求47所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的页面。
Claims (81)
1.一种用于存储数据的装置,包括:
(a)非易失性存储器;以及
(b)所述非易失性存储器的控制器,可操作用来:
(i)使要存储在所述存储器中的原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据,
(ii)在所述存储器中存储所述随机化数据,以及
(iii)响应于装置外部的实体对所述原始数据的请求:
(A)从所述存储器中取回所述随机化数据,
(B)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(C)将所述取回的数据输出至所述实体而不认证所述实体。
2.如权利要求1所述的装置,其中所述控制器还可操作用来:
(iv)在所述随机化所述原始数据的步骤之前,对所述原始数据应用纠错编码;以及
(v)在所述输出所述取回的数据的步骤之前,向所述取回的数据应用纠错解码。
3.如权利要求1所述的装置,其中所述控制器还可操作用来:
(iv)在所述的在所述存储器中存储所述随机化数据的步骤之前,对所述随机化数据应用纠错编码;以及
(v)在所述去随机化所述取回的随机化数据的步骤之前,对所述取回的随机化数据应用纠错解码。
4.如权利要求1所述的装置,其中所述控制器可操作用来通过包括对模2的所述原始数据与固定的随机位序列求和的步骤对所述原始数据随机化;以及其中,所述控制器可操作用来通过包括对模2的所述取回的随机化数据与所述随机位序列求和的步骤对所述取回的随机化数据去随机化。
5.如权利要求1所述的装置,其中所述控制器可操作用来通过包括对模2的所述原始数据与伪随机位序列求和的步骤对所述原始数据随机化;以及其中,所述控制器可操作用来通过包括对模2的所述取回的随机化数据与所述伪随机位序列求和的步骤对所述取回的随机化数据去随机化。
6.如权利要求5所述的装置,其中所述伪随机位序列是固定的。
7.如权利要求5所述的装置,其中所述控制器可操作用来产生所述伪随机位序列。
8.如权利要求7所述的装置,其中所述控制器可操作用来使用线性反馈移位寄存器产生所述伪随机位序列。
9.如权利要求8所述的装置,其中所述线性反馈移位寄存器的种子是固定的。
10.如权利要求8所述的装置,其中所述存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
11.如权利要求10所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的块。
12.如权利要求10所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的页面。
13.如权利要求1所述的装置,其中所述控制器可操作用来通过包括对所述原始数据加扰的步骤对所述原始数据随机化;以及其中,所述控制器可操作用来通过包括对所述取回的随机化数据解扰的步骤对所述取回的随机化数据去随机化。
14.如权利要求13所述的装置,其中使用共享公共种子的各个线性反馈移位寄存器来实现所述加扰和所述解扰。
15.如权利要求14所述的装置,其中所述种子是固定的。
16.如权利要求14所述的装置,其中所述存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
17.如权利要求16所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的块。
18.如权利要求16所述的装置,其中所述存储器是闪存,并且其中,所述单位是所述闪存的页面。
19.一种用于存储数据的装置,包括:
(a)存储器,包括:
(i)非易失性存储单元的阵列,以及
(ii)电路,可操作用来:
(A)使要存储在所述存储单元中的原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据,
(B)在至少一部分所述存储单元中存储所述随机化数据,
(C)从所述至少一部分所述存储器中取回所述随机化数据,以及
(D)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据;以及
(b)控制器,可操作用来:
(i)响应于装置外部的实体对于所述原始数据的请求,将所述取回的数据输出至所述实体而不认证所述实体。
20.如权利要求19所述的装置,其中所述控制器还可操作用来:
(iv)在所述随机化所述原始数据的步骤之前,对所述原始数据应用纠错编码;以及
(v)在所述输出所述取回的数据的步骤之前,向所述取回的数据应用纠错解码。
21.如权利要求19所述的装置,其中所述电路可操作用来通过包括对模2的所述原始数据与固定的随机位序列求和的步骤对所述原始数据随机化;以及其中,所述电路可操作用来通过包括对模2的所述取回的随机化数据与所述随机位序列求和的步骤对所述取回的随机化数据去随机化。
22.如权利要求19所述的装置,其中所述电路可操作用来通过包括对模2的所述原始数据与伪随机位序列求和的步骤对所述原始数据随机化;以及其中,所述电路可操作用来通过包括对模2的所述取回的随机化数据与所述伪随机位序列求和的步骤对所述取回的随机化数据去随机化。
23.如权利要求22所述的装置,其中所述伪随机位序列是固定的。
24.如权利要求22所述的装置,其中所述电路可操作用来产生所述伪随机位序列。
25.如权利要求24所述的装置,其中所述电路包括用于产生所述伪随机位序列的线性反馈移位寄存器。
26.如权利要求25所述的装置,其中所述线性反馈移位寄存器的种子是固定的。
27.如权利要求25所述的装置,其中所述存储器被分区为多个单位,每一个所述单位具有相应的单位编号;其中所述至少一部分所述存储单元是所述单位中的一个,并且其中所述线性反馈移位寄存器的种子是所述一个单位的所述相应的单位编号的函数。
28.如权利要求27所述的装置,其中所述存储单元是闪存单元,并且其中,所述单位是所述闪存单元的块。
29.如权利要求27所述的装置,其中所述存储单元是闪存单元,并且其中所述单位是所述闪存单元的页面。
30.如权利要求19所述的装置,其中所述电路包括:
(A)用于对所述原始数据随机化的加扰器块;以及
(B)用于对所述取回的随机化数据去随机化的解扰器块。
31.如权利要求30所述的装置,其中所述加扰器块和所述解扰器块被实现为共享公共种子的相应线性反馈移位寄存器。
32.如权利要求31所述的装置,其中所述种子是固定的。
33.如权利要求31所述的装置,其中所述存储器被分区为多个单位,每一个所述单位具有相应的单位编号;其中所述至少一部分所述存储单元是所述单位中的一个;以及其中所述种子是所述一个单位的所述相应的单位编号的函数。
34.如权利要求33所述的装置,其中所述存储单元是闪存单元,并且其中所述单位是所述闪存单元的块。
35.如权利要求33所述的装置,其中所述存储单元是闪存单元,并且其中所述单位是所述闪存单元的页面。
36.一种用于存储数据的系统,包括:
(a)第一非易失性存储器;
(b)第二非易失性存储器,其中存储了用于所述第一非易失性存储器的驱动器,所述驱动器包括:
(i)用于使要存储在所述第一非易失性存储器中的原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据的代码,
(ii)用于在所述第一非易失性存储器中存储所述随机化数据的代码,以及
(iii)用于通过下述操作来响应对于所述原始数据的请求的代码:
(A)从所述第一非易失性存储器中取回所述随机化数据,
(B)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(C)输出所述取回的数据而不认证所述请求;以及
(c)处理器,用于执行所述驱动器的所述代码。
37.如权利要求36所述的系统,其中所述驱动器还包括:
(iv)用于在所述随机化所述原始数据的步骤之前,对所述原始数据应用纠错编码的代码;以及
(v)用于在所述输出所述取回的数据的步骤之前,对所述取回的数据应用纠错解码的代码。
38.如权利要求36所述的装置,其中所述驱动器还包括:
(iv)用于在所述的在所述存储器中存储所述随机化数据的步骤之前,对所述随机化数据应用纠错编码的代码;以及
(v)用于在所述去随机化所述取回的随机化数据的步骤之前,对所述取回的随机化数据应用纠错解码的代码。
39.如权利要求34所述的系统,其中所述用于随机化所述原始数据的代码包括用于对模2的所述原始数据与固定的随机位序列求和的代码;以及其中,所述用于对所述取回的随机化数据去随机化的代码包括对模2的所述取回的随机化数据与所述随机位序列求和的代码。
40.如权利要求36所述的系统,其中所述用于随机化所述原始数据的代码包括用于对模2的所述原始数据与伪随机位序列求和的代码;以及其中,所述用于对所述取回的随机化数据去随机化的代码包括对模2的所述取回的随机化数据与所述伪随机位序列求和的代码。
41.如权利要求40所述的系统,其中所述伪随机位序列是固定的。
42.如权利要求40所述的系统,其中所述驱动器还包括:
(iv)用于产生所述伪随机位序列的代码。
43.如权利要求42所述的系统,其中所述用于产生所述伪随机位序列的代码包括线性反馈移位寄存器的代码。
44.如权利要求43所述的系统,其中所述线性反馈移位寄存器的种子是固定的。
45.如权利要求43所述的系统,其中所述第一非易失性存储器被分区为多个单位,每一个所述单位具有相应的单位编号;以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
46.如权利要求45所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的块。
47.如权利要求45所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的页面。
48.如权利要求36所述的系统,其中所述用于对所述原始数据随机化的代码包括对所述原始数据加扰的代码;以及其中,所述用于对所述取回的随机化数据去随机化的代码包括用于对所述取回的随机化数据解扰的代码。
49.如权利要求48所述的系统,其中所述用于对所述原始数据加扰的代码包括相应的线性反馈移位代码;其中,所述用于对所述取回的随机化数据解扰的代码包括相应的线性反馈移位代码;以及其中这两个所述线性反馈移位代码共享一个公共种子。
50.如权利要求49所述的系统,其中所述种子是固定的。
51.如权利要求49所述的系统,其中所述第一非易失性存储器被分区为单位,每一个所述单位具有相应的单位编号;以及其中所述种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
52.如权利要求51所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的块。
53.如权利要求51所述的系统,其中所述第一非易失性存储器是闪存,并且其中所述单位是所述闪存的页面。
54.一种计算机可读存储介质,其上嵌入有计算机可读代码,所述计算机可读代码是用于存储装置的驱动器代码,所述计算机可读代码包括:
(a)用于使要存储在存储装置的存储器中的原始数据随机化同时保持原始数据的大小,从而提供随机化数据的程序代码;
(b)用于在所述存储器中存储所述随机化数据的程序代码;以及
(c)用于通过下述操作来响应对于所述原始数据的请求的程序代码
(i)从所述存储器中取回所述随机化数据,
(ii)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(iii)输出所述取回的数据而不认证所述请求。
55.一种用于存储数据的装置,包括:
(a)具有足够数量的存储单元的非易失性存储器,其通过将所述存储单元编程为所述存储单元的一组对应状态来存储原始数据;以及
(b)所述非易失性存储器的控制器,可操作用来:
(i)将所述原始数据映射为所有所述存储单元的一组状态,所述一组状态相对于所述的一组对应状态被随机化,
(ii)指令所述存储器将所述存储单元编程为所述随机化的一组状态,以及
(iii)响应于装置外部的实体对所述原始数据的请求:
(A)读取所述存储单元,从而提供取回的随机化数据,
(B)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(C)将所述取回的数据输出至所述实体而不认证所述实体。
56.如权利要求55所述的装置,其中所述存储单元的所述状态在所述随机化的一组状态中发生的数目基本上相等。
57.一种用于存储数据的装置,包括:
(a)存储器,包括:
(i)足够数量的存储单元,其通过将所述存储单元编程为所述存储单元的一组对应状态来存储原始数据;以及
(ii)电路,可操作用来:
(A)将所述原始数据映射为所有所述存储单元的一组状态,所述一组状态相对于所述的一组对应状态被随机化,
(B)将所述存储单元编程为所述随机化的一组状态,
(C)读取所述存储单元,从而提供取回的随机化数据,以及
(D)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(b)控制器,可操作用来响应于装置外部的实体对所述原始数据的请求,将所述取回的数据输出至所述实体而不认证所述实体。
58.如权利要求57所述的装置,其中所述存储单元的所述状态在所述随机化的一组状态中发生的数目基本上相等。
59.一种用于存储数据的系统,包括:
(a)具有足够数量的存储单元的第一非易失性存储器,其通过将所述存储单元编程为所述存储单元的一组对应状态来存储原始数据;
(b)第二非易失性存储器,其中存储有用于所述第一非易失性存储器的驱动器,所述驱动器包括:
(i)用于将所述原始数据映射为所有所述存储单元的一组状态的代码,所述一组状态相对于所述的一组对应状态被随机化,
(ii)用于指令所述第一非易失性存储器将所述存储单元编程为所述随机化的一组状态的代码,以及
(iii)用于通过下述操作来响应对于所述原始数据的请求的代码:
(A)指令所述第一非易失性存储装置读取所述存储单元,从而提供取回的随机化的数据,
(B)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(C)输出所述取回的数据而不认证所述请求;以及
(c)处理器,用于执行所述驱动器的所述代码。
60.如权利要求59所述的系统,其中所述存储单元的所述状态在所述随机化的一组状态中发生的数目基本上相等。
61.一种其上嵌入有计算机可读代码的计算机可读存储介质,所述计算机可读代码是用于存储装置的驱动器代码,该存储装置包括:足够数量的存储单元,其通过将存储单元编程为存储单元的一组对应状态来存储原始数据,所述计算机可读代码包括:
(a)用于将原始数据映射为所有存储单元的一组状态的程序代码,所述一组状态相对于所述的一组对应状态被随机化;
(b)用于指令存储装置将存储单元编程为所述随机化的一组状态的程序代码;以及
(c)用于通过下述操作来响应对于原始数据的请求的程序代码:
(i)指令存储装置读取存储单元,从而提供取回的随机化的数据,
(ii)对所述取回的随机化数据去随机化,从而提供与原始数据基本上相同的取回的数据,以及
(iii)输出所述取回的数据而不认证所述请求。
62.如权利要求61所述的计算机可读存储介质,其中所述存储单元的所述状态在所述随机化的一组状态中发生的数目基本上相等。
63.一种存储数据的方法,包括下述步骤:
(a)使原始数据随机化同时保持所述原始数据的大小,从而提供随机化数据;
(b)在非易失性存储器中存储所述随机化数据;以及
(c)响应于对所述原始数据的请求:
(i)从所述存储器中取回所述随机化数据,
(ii)对取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(iii)将所述取回的数据输出至从其接收所述请求的实体而不认证所述实体。
64.如权利要求63所述的方法,还包括下述步骤:
(d)在所述随机化所述原始数据的步骤之前,对所述原始数据应用纠错编码;以及
(e)在所述输出所述取回的数据的步骤之前,对所述取回的数据应用纠错解码。
65.如权利要求63所述的方法,还包括下述步骤:
(d)在所述的在所述存储器中存储所述随机化数据的步骤之前,对所述随机化数据应用纠错编码;以及
(e)在所述去随机化所述取回的随机化数据的步骤之前,对所述取回的随机化数据应用纠错解码。
66.如权利要求63所述的方法,其中通过包括对模2的所述原始数据与固定的随机位序列求和的步骤实现所述随机化;以及其中,通过包括对模2的所述取回的随机化数据与所述随机位序列求和的步骤实现所述去随机化。
67.如权利要求63所述的方法,其中通过包括对模2的所述原始数据与伪随机位序列求和的步骤实现所述随机化;以及其中通过包括对模2的所述取回的随机化数据与所述伪随机位序列求和的步骤实现所述去随机化。
68.如权利要求67所述的方法,其中所述伪随机位序列是固定的。
69.如权利要求67所述的方法,还包括以下步骤:
(d)产生所述伪随机位序列。
70.如权利要求69所述的方法,其中使用线性反馈移位寄存器实现所述产生。
71.如权利要求70所述的方法,其中所述线性反馈移位寄存器的种子是固定的。
72.如权利要求70所述的方法,还包括下述步骤:
(e)将所述存储器分区为多个单位,每一个所述单位具有相应的单位编号;
以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
73.如权利要求72所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的块。
74.如权利要求72所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的页面。
75.如权利要求63所述的方法,其中通过包括对所述原始数据加扰的步骤实现所述随机化;以及其中通过包括对所述取回的随机化数据解扰的步骤来实现所述去随机化。
76.如权利要求75所述的方法,其中所述加扰和所述解扰是使用共享公共种子的相应的线性反馈移位寄存器实现的。
77.如权利要求76所述的方法,其中所述种子是固定的。
78.如权利要求76所述的方法,还包括下述步骤:
(d)将所述存储器分区为多个单位,每一个所述单位具有相应的单位编号;
以及其中所述线性反馈移位寄存器的种子是其中存储有所述随机化数据的所述单位的所述相应的单位编号的函数。
79.如权利要求78所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的块。
80.如权利要求78所述的方法,其中所述存储器是闪存,并且其中所述单位是所述闪存的页面。
81.一种存储数据的方法,包括下述步骤:
(a)提供足够数量的存储单元,以通过将所述存储单元编程为所述存储单元的一组对应状态来存储原始数据;
(b)将所述原始数据映射为所有所述存储单元的一组状态,所述一组状态相对于所述的一组对应状态被随机化;
(c)将所述存储单元编程为所述随机化的一组状态;以及
(d)响应对于所述原始数据的请求:
(i)读取所述存储单元,从而提供取回的随机化数据,
(ii)对所述取回的随机化数据去随机化,从而提供与所述原始数据基本上相同的取回的数据,以及
(iii)将所述取回的数据输出至从其接收到所述请求的实体而不认证所述实体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US87182006P | 2006-12-24 | 2006-12-24 | |
US60/871,820 | 2006-12-24 | ||
US11/808,906 | 2007-06-13 | ||
US11/808,905 | 2007-06-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101622674A true CN101622674A (zh) | 2010-01-06 |
Family
ID=39733949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780045693A Pending CN101622674A (zh) | 2006-12-24 | 2007-12-06 | 利用随机化抑制错误的闪存装置、系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8370561B2 (zh) |
CN (1) | CN101622674A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208210A (zh) * | 2010-03-31 | 2011-10-05 | 深圳市朗科科技股份有限公司 | 闪存设备及其数据存储方法 |
CN102543182A (zh) * | 2010-12-14 | 2012-07-04 | 炬力集成电路设计有限公司 | 随机化电路、存储器控制单元、存储器、通信系统及方法 |
CN105931668A (zh) * | 2015-02-27 | 2016-09-07 | 爱思开海力士有限公司 | 非易失性存储器装置和操作方法及包括其的数据存储装置 |
CN106024058A (zh) * | 2015-03-26 | 2016-10-12 | 华邦电子股份有限公司 | 半导体存储装置以及数据处理方法 |
CN106128510A (zh) * | 2015-05-07 | 2016-11-16 | 爱思开海力士有限公司 | 控制器、半导体存储系统及其操作方法 |
CN107274929A (zh) * | 2016-04-07 | 2017-10-20 | 三星电子株式会社 | 用于执行随机操作的非易失性存储器装置 |
CN108109661A (zh) * | 2016-11-25 | 2018-06-01 | 翰顺联电子科技(南京)有限公司 | 快闪存储器及其操作方法 |
CN108255464A (zh) * | 2016-12-28 | 2018-07-06 | 北京忆恒创源科技有限公司 | 数据加扰方法、解扰方法及其装置 |
CN110120236A (zh) * | 2014-03-11 | 2019-08-13 | 艾沃思宾技术公司 | 非易失性逻辑和安全电路 |
CN116521432A (zh) * | 2023-04-06 | 2023-08-01 | 珠海妙存科技有限公司 | 一种提高闪存可靠性的方法、控制器和计算机存储介质 |
Families Citing this family (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7697326B2 (en) | 2006-05-12 | 2010-04-13 | Anobit Technologies Ltd. | Reducing programming error in memory devices |
WO2007132457A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
US8239735B2 (en) | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
CN103280239B (zh) | 2006-05-12 | 2016-04-06 | 苹果公司 | 存储设备中的失真估计和消除 |
WO2008026203A2 (en) | 2006-08-27 | 2008-03-06 | Anobit Technologies | Estimation of non-linear distortion in memory devices |
US7821826B2 (en) * | 2006-10-30 | 2010-10-26 | Anobit Technologies, Ltd. | Memory cell readout using successive approximation |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7924648B2 (en) * | 2006-11-28 | 2011-04-12 | Anobit Technologies Ltd. | Memory power and performance management |
US7706182B2 (en) * | 2006-12-03 | 2010-04-27 | Anobit Technologies Ltd. | Adaptive programming of analog memory cells using statistical characteristics |
US8151163B2 (en) | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US7900102B2 (en) | 2006-12-17 | 2011-03-01 | Anobit Technologies Ltd. | High-speed programming of memory devices |
FR2910998A1 (fr) * | 2007-01-03 | 2008-07-04 | St Microelectronics Sa | Protection d'une donnee statique dans un circuit integre. |
US7751240B2 (en) | 2007-01-24 | 2010-07-06 | Anobit Technologies Ltd. | Memory device with negative thresholds |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
US7813067B1 (en) | 2007-02-14 | 2010-10-12 | Marvell International Ltd. | Accumulator for non-return to zero (NRZ) linear feedback shift register (LFSR) in controller for disk drive |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US8001320B2 (en) | 2007-04-22 | 2011-08-16 | Anobit Technologies Ltd. | Command interface for memory devices |
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 |
US7925936B1 (en) | 2007-07-13 | 2011-04-12 | Anobit Technologies Ltd. | Memory device with non-uniform programming levels |
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 |
US7773413B2 (en) * | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
WO2009050703A2 (en) | 2007-10-19 | 2009-04-23 | Anobit Technologies | Data storage in analog memory cell arrays having erase failures |
US8068360B2 (en) | 2007-10-19 | 2011-11-29 | Anobit Technologies Ltd. | Reading analog memory cells using built-in multi-threshold commands |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
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 |
US8456905B2 (en) | 2007-12-16 | 2013-06-04 | Apple Inc. | Efficient data storage in multi-plane memory devices |
JP5019611B2 (ja) * | 2007-12-27 | 2012-09-05 | 株式会社東芝 | メモリシステム |
US8085586B2 (en) | 2007-12-27 | 2011-12-27 | Anobit Technologies Ltd. | Wear level estimation in analog memory cells |
US8301912B2 (en) | 2007-12-31 | 2012-10-30 | Sandisk Technologies Inc. | System, method and memory device providing data scrambling compatible with on-chip copy operation |
TWI404076B (zh) * | 2008-01-07 | 2013-08-01 | Powerchip Technology Corp | 記憶體裝置以及資料讀取方法 |
US8156398B2 (en) | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US7924587B2 (en) | 2008-02-21 | 2011-04-12 | Anobit Technologies Ltd. | Programming of analog memory cells using a single programming pulse per state transition |
US7864573B2 (en) * | 2008-02-24 | 2011-01-04 | Anobit Technologies Ltd. | Programming analog memory cells for reduced variance after retention |
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 |
US8059457B2 (en) | 2008-03-18 | 2011-11-15 | Anobit Technologies Ltd. | Memory device with multiple-accuracy read commands |
US8281061B2 (en) * | 2008-03-31 | 2012-10-02 | Micron Technology, Inc. | Data conditioning to improve flash memory reliability |
US20090282267A1 (en) * | 2008-05-09 | 2009-11-12 | Ori Stern | Partial scrambling to reduce correlation |
US8458563B2 (en) * | 2008-06-23 | 2013-06-04 | Ramot At Tel Aviv University Ltd. | Reading a flash memory by joint decoding and cell voltage distribution tracking |
US8464131B2 (en) * | 2008-06-23 | 2013-06-11 | Ramot At Tel Aviv University Ltd. | Reading a flash memory by constrained decoding |
US8154918B2 (en) | 2008-06-30 | 2012-04-10 | Sandisk Il Ltd. | Method for page- and block based scrambling in non-volatile memory |
US8498151B1 (en) | 2008-08-05 | 2013-07-30 | Apple Inc. | Data storage in analog memory cells using modified pass voltages |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
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 |
KR101554159B1 (ko) * | 2008-10-08 | 2015-09-21 | 삼성전자주식회사 | 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템 |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8713330B1 (en) * | 2008-10-30 | 2014-04-29 | Apple Inc. | Data scrambling in 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 |
US8397131B1 (en) | 2008-12-31 | 2013-03-12 | Apple Inc. | Efficient readout schemes for analog memory cell devices |
WO2010076835A1 (en) | 2008-12-31 | 2010-07-08 | Christophe Laurent | Error correction code for unidirectional memory |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
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 |
KR101504338B1 (ko) * | 2009-03-04 | 2015-03-23 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법 |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
US8413016B2 (en) * | 2009-04-28 | 2013-04-02 | Panasonic Corporation | Nonvolatile memory device and controller for judging a normal or anomalous condition of an error-corrected bit pattern |
JP5492679B2 (ja) * | 2009-06-30 | 2014-05-14 | パナソニック株式会社 | 記憶装置およびメモリコントローラ |
US20120174187A1 (en) * | 2009-07-09 | 2012-07-05 | Georgia Tech Research Corporation | Systems and methods for providing physical layer security |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
TWI435328B (zh) * | 2009-07-20 | 2014-04-21 | Silicon Motion Inc | 針對一快閃記憶體的控制器所存取之資料來進行資料型樣管理之方法以及相關之記憶裝置及其控制器 |
US7961520B2 (en) * | 2009-08-18 | 2011-06-14 | Seagate Technology Llc | Encoding and decoding to reduce switching of flash memory transistors |
ES2694076T3 (es) | 2009-10-01 | 2018-12-17 | Interdigital Patent Holdings, Inc. | Transmisión de datos de control del enlace ascendente |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
KR20110055178A (ko) * | 2009-11-19 | 2011-05-25 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것을 포함한 메모리 시스템 |
US8239733B2 (en) * | 2009-11-27 | 2012-08-07 | Skymedi Corporation | Memory device with protection capability and method of accessing data therein |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
CN102812658B (zh) | 2010-01-08 | 2015-12-16 | 交互数字专利控股公司 | 针对多个载波的信道状态信息传输的方法及设备 |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8572311B1 (en) | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
TWI438778B (zh) | 2010-03-25 | 2014-05-21 | Silicon Motion Inc | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
EP2559036A1 (en) | 2010-04-15 | 2013-02-20 | Ramot at Tel-Aviv University Ltd. | Multiple programming of flash memory without erase |
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 |
KR20120002760A (ko) * | 2010-07-01 | 2012-01-09 | 삼성전자주식회사 | 낸드 플래쉬 메모리의 동작 신뢰성을 향상시키는 데이터 기록 방법 및 데이터 기록 장치 |
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 |
US8767459B1 (en) | 2010-07-31 | 2014-07-01 | Apple Inc. | Data storage in analog memory cells across word lines 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 |
WO2012103075A1 (en) * | 2011-01-24 | 2012-08-02 | Aplus Flash Technology, Inc. | An one-die flotox-based combo non-volatile memory |
KR101736337B1 (ko) * | 2011-02-28 | 2017-05-30 | 삼성전자주식회사 | 비휘발성 메모리 장치, 상기 메모리 장치를 제어하는 컨트롤러, 및 상기 컨트롤러 동작 방법 |
JP2012226822A (ja) | 2011-04-15 | 2012-11-15 | Samsung Electronics Co Ltd | 不揮発性メモリ装置 |
KR20120125790A (ko) * | 2011-05-09 | 2012-11-19 | 삼성전자주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
KR101818443B1 (ko) * | 2011-07-08 | 2018-01-16 | 삼성전자주식회사 | 메모리 컨트롤러, 및 상기 메모리 컨트롤러를 포함하는 메모리 시스템 |
KR20130060795A (ko) * | 2011-11-30 | 2013-06-10 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 동작 방법 |
KR101811298B1 (ko) * | 2011-12-28 | 2017-12-27 | 삼성전자주식회사 | 랜덤마이져로 씨드를 제공하는 씨드 컨트롤러 및 그것을 포함한 메모리 컨트롤러 |
US9306876B1 (en) * | 2013-04-01 | 2016-04-05 | Marvell Israel (M.I.S.L) Ltd. | Multibank egress queuing system in a network device |
KR102133542B1 (ko) * | 2013-12-03 | 2020-07-14 | 에스케이하이닉스 주식회사 | 랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템 |
KR102244617B1 (ko) | 2014-03-13 | 2021-04-26 | 삼성전자 주식회사 | 논리 정보와 물리 정보를 이용하여 데이터를 처리할 수 있는 장치와 방법 |
KR102200108B1 (ko) | 2014-10-10 | 2021-01-08 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
CN105679365B (zh) * | 2015-10-20 | 2020-04-10 | 中国科学院微电子研究所 | 半导体存储器操作方法 |
US10698839B2 (en) * | 2017-12-12 | 2020-06-30 | Western Digital Technologies, Inc. | Seed scrambling |
US10635400B2 (en) | 2017-12-12 | 2020-04-28 | Western Digital Technologies, Inc. | Seed generation |
US10949130B2 (en) * | 2018-05-10 | 2021-03-16 | Seagate Technology Llc | Virtual solid state storage system with solid state storage error emulation |
US11017128B2 (en) | 2018-05-22 | 2021-05-25 | Seagate Technology Llc | Data security using bit transposition during memory accesses |
US11347860B2 (en) * | 2019-06-28 | 2022-05-31 | Seagate Technology Llc | Randomizing firmware loaded to a processor memory |
KR20210079556A (ko) * | 2019-12-20 | 2021-06-30 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
US11327884B2 (en) * | 2020-04-01 | 2022-05-10 | Micron Technology, Inc. | Self-seeded randomizer for data randomization in flash memory |
US11256617B2 (en) | 2020-04-01 | 2022-02-22 | Micron Technology, Inc. | Metadata aware copyback for memory devices |
KR102208497B1 (ko) | 2020-07-01 | 2021-01-27 | 주식회사 파두 | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
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 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US4993029A (en) | 1989-03-13 | 1991-02-12 | International Business Machines Corporation | Method and apparatus for randomizing data in a direct access storage device |
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5712863A (en) | 1996-02-09 | 1998-01-27 | Overland Data Inc | Randomizing encoder for digital data storage |
US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
US6279133B1 (en) | 1997-12-31 | 2001-08-21 | Kawasaki Steel Corporation | Method and apparatus for significantly improving the reliability of multilevel memory architecture |
GB2346234B (en) * | 1998-01-08 | 2002-12-18 | Seagate Technology | A physical block address recovery apparatus,system and method for cyclic error correction codes |
EP1130600A1 (en) | 2000-03-01 | 2001-09-05 | Hewlett-Packard Company, A Delaware Corporation | Data balancing scheme in solid state storage devices |
US7155015B2 (en) * | 2000-08-08 | 2006-12-26 | Hitachi, Ltd. | Optical disk apparatus and data randomizing method using for optical disk apparatus |
US6684289B1 (en) | 2000-11-22 | 2004-01-27 | Sandisk Corporation | Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory |
US20020093356A1 (en) | 2000-11-30 | 2002-07-18 | Williams Thomas W. | Intelligent test vector formatting to reduce test vector size and allow encryption thereof for integrated circuit testing |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
JP4417629B2 (ja) * | 2001-04-24 | 2010-02-17 | エヌエックスピー ビー ヴィ | ビット変更を可能にする、フラッシュメモリにおける使用のための、改良されたエラー修正方式 |
US6591330B2 (en) | 2001-06-18 | 2003-07-08 | M-Systems Flash Disk Pioneers Ltd. | System and method for flexible flash file |
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 |
US20030135798A1 (en) * | 2001-12-13 | 2003-07-17 | Yukari Katayama | Optical disk device and data randomizing method for optical disk device |
KR100683179B1 (ko) | 2003-11-03 | 2007-02-15 | 삼성전자주식회사 | 듀얼 스트림용 디지털 방송 송/수신 시스템의 강건한에러정정 부호화/복호화 장치 및 그의 방법 |
US7509556B2 (en) | 2003-11-20 | 2009-03-24 | Seagate Technology Llc | Method and apparatus for combining output of different type interleavers based on an input data sequence to obtain a combined output |
US20050213393A1 (en) | 2004-03-14 | 2005-09-29 | M-Systems Flash Disk Pioneers, Ltd. | States encoding in multi-bit flash cells for optimizing error rate |
US7305574B2 (en) * | 2004-10-29 | 2007-12-04 | International Business Machines Corporation | System, method and storage medium for bus calibration in a memory subsystem |
EP1686592A3 (en) | 2005-01-19 | 2007-04-25 | Saifun Semiconductors Ltd. | Partial erase verify |
US20060227974A1 (en) * | 2005-03-30 | 2006-10-12 | Attila Haraszti | Encryption and decryption method |
US7916866B2 (en) * | 2006-05-19 | 2011-03-29 | Mediatek, Inc. | Apparatus for descrambling a data retrieved from an optical storage medium, and method therefor |
-
2007
- 2007-06-13 US US11/808,905 patent/US8370561B2/en active Active
- 2007-12-06 CN CN200780045693A patent/CN101622674A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208210A (zh) * | 2010-03-31 | 2011-10-05 | 深圳市朗科科技股份有限公司 | 闪存设备及其数据存储方法 |
CN102543182A (zh) * | 2010-12-14 | 2012-07-04 | 炬力集成电路设计有限公司 | 随机化电路、存储器控制单元、存储器、通信系统及方法 |
CN102543182B (zh) * | 2010-12-14 | 2014-12-31 | 炬力集成电路设计有限公司 | 随机化电路、存储器控制单元、存储器、通信系统及方法 |
CN110120236B (zh) * | 2014-03-11 | 2023-08-04 | 艾沃思宾技术公司 | 非易失性逻辑和安全电路 |
CN110120236A (zh) * | 2014-03-11 | 2019-08-13 | 艾沃思宾技术公司 | 非易失性逻辑和安全电路 |
CN105931668A (zh) * | 2015-02-27 | 2016-09-07 | 爱思开海力士有限公司 | 非易失性存储器装置和操作方法及包括其的数据存储装置 |
CN105931668B (zh) * | 2015-02-27 | 2020-11-17 | 爱思开海力士有限公司 | 非易失性存储器装置和操作方法及包括其的数据存储装置 |
CN106024058A (zh) * | 2015-03-26 | 2016-10-12 | 华邦电子股份有限公司 | 半导体存储装置以及数据处理方法 |
CN106128510A (zh) * | 2015-05-07 | 2016-11-16 | 爱思开海力士有限公司 | 控制器、半导体存储系统及其操作方法 |
CN106128510B (zh) * | 2015-05-07 | 2020-08-25 | 爱思开海力士有限公司 | 控制器、半导体存储系统及其操作方法 |
CN107274929A (zh) * | 2016-04-07 | 2017-10-20 | 三星电子株式会社 | 用于执行随机操作的非易失性存储器装置 |
CN107274929B (zh) * | 2016-04-07 | 2023-03-10 | 三星电子株式会社 | 用于执行随机操作的非易失性存储器装置 |
CN108109661B (zh) * | 2016-11-25 | 2021-01-26 | 翰顺联电子科技(南京)有限公司 | 快闪存储器及其操作方法 |
CN108109661A (zh) * | 2016-11-25 | 2018-06-01 | 翰顺联电子科技(南京)有限公司 | 快闪存储器及其操作方法 |
CN108255464A (zh) * | 2016-12-28 | 2018-07-06 | 北京忆恒创源科技有限公司 | 数据加扰方法、解扰方法及其装置 |
CN116521432A (zh) * | 2023-04-06 | 2023-08-01 | 珠海妙存科技有限公司 | 一种提高闪存可靠性的方法、控制器和计算机存储介质 |
CN116521432B (zh) * | 2023-04-06 | 2024-01-09 | 珠海妙存科技有限公司 | 一种提高闪存可靠性的方法、控制器和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US8370561B2 (en) | 2013-02-05 |
US20080215798A1 (en) | 2008-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101622674A (zh) | 利用随机化抑制错误的闪存装置、系统和方法 | |
US8127200B2 (en) | Flash memory device and system with randomizing for suppressing errors | |
USRE45515E1 (en) | Built in on-chip data scrambler for non-volatile memory | |
US9396137B2 (en) | Storage device, protection method, and electronic apparatus | |
US8526605B2 (en) | Data encryption to provide data security and memory cell bit wear leveling | |
US7739576B2 (en) | Variable strength ECC | |
US9229802B2 (en) | Non-systematic coded error correction | |
US8429330B2 (en) | Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations | |
US8381076B2 (en) | Variable sector-count ECC | |
KR101449673B1 (ko) | 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법 | |
KR101563647B1 (ko) | 메모리 시스템 및 그것의 데이터 처리 방법 | |
KR101587464B1 (ko) | 온-칩 카피 동작과 호환되는 데이터 스크램블링을 제공하는 시스템, 방법 및 메모리 장치 | |
KR20090101887A (ko) | 치환 변환을 사용하여 플래시 메모리 내의 에러를 피하는 방법 | |
US8949689B2 (en) | Storage control system with data management mechanism and method of operation thereof | |
CN102148058A (zh) | 读可靠性获得提高的含有多位存储单元的快闪存储器件 | |
KR101990972B1 (ko) | 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러 | |
WO2010030701A1 (en) | Built in on-chip data scrambler for non-volatile memory | |
CN106297883A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
US10735030B2 (en) | Re-encoding data associated with failed memory devices | |
US8392766B2 (en) | Operational method of a controller of a flash memory, and associated memory device and controller thereof | |
WO2009139115A1 (ja) | 半導体記録装置 | |
US11307777B2 (en) | Memory system and operating method thereof | |
CN112786099B (zh) | 存储装置和其多个实体单元纠错方法 | |
CN109767805B (zh) | 用于三维存储器的擦除验证方法以及存储器系统 | |
CN112786099A (zh) | 存储装置和其多个实体单元纠错方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100106 |