自行恢复的非易失性存储器 相关申请案的交叉参考
本申请案主张2007年9月25日申请的第11/861,146号美国专利申请案的优先权和权益,为了所有目的,所述申请案以全文引用的方式并入本文中。
【技术领域】
本发明涉及非易失性存储器和形成非易失性存储器的方法。具体来说,本申请案涉及非易失性存储器阵列,其中浮动栅极存储器单元个别地保持数据的一个或一个以上位。
背景技术
非易失性存储器系统用于各种应用中。一些非易失性存储器系统嵌入于例如个人计算机等较大系统中。其它非易失性存储器系统以可移除的方式连接到主机系统且可在不同主机系统之间互换。这些可移除存储器系统的实例包括存储器卡和USB快闪驱动器。包括非易失性存储器卡的电子电路卡已根据众多众所周知的标准而商用。存储器卡配合个人计算机、蜂窝式电话、个人数字助理(PDA)、数码相机、数字电影摄影机、便携式音频播放器和用于存储大量数据的其它主机电子装置而使用。这些卡通常含有可再编程的非易失性半导体存储器单元阵列以及控制器,所述控制器控制并支持存储器单元阵列的操作且与所述卡所连接到的主机接口介接。若干相同类型的卡可在经设计以收纳所述类型的卡的主机卡槽中互换。然而,许多电子卡标准的形成已产生在各种程度上彼此不兼容的不同类型的卡。根据一个标准制造的卡通常不可配合经设计以配合另一标准的卡操作的主机而使用。存储器卡标准包括PC卡标准、CompactFlashTM卡(CFTM卡)标准、SmartMediaTM卡标准、多媒体卡(MMCTM)标准、安全数字(SD)卡标准、miniSDTM卡标准、用户身份模块(SIM)标准、Memory StickTM标准、记忆棒Duo卡(Duo card)标准和microSD/TransFlashTM存储器模块标准。存在可以商标从SanDisk公司购得的若干USB快闪驱动器产品。USB快闪驱动器通常比上文描述的存储器卡大且形状与上文描述的存储器卡不同。固态驱动器(SSD)在应用中使用非易失性存储器系统,其中传统上已使用硬盘驱动器(HDD),例如在膝上型计算机中。
不同类型的存储器阵列架构用于非易失性存储器系统中。使用浮动栅极以存储电荷的快闪存储器阵列为存储器阵列的一种常见类型。在一种类型的架构(NAND阵列)中,一系列两个以上(例如16或32个)存储器单元的串与一个或一个以上选择晶体管一起连接于个别位线与参考电位之间以形成单元的列。字线延伸跨越大量这些列内的单元。在称为单层级单元(SLC)设计的设计中,个别存储器单元可保持一位的数据。在一些实例中,在称为多层级单元(MLC)设计的设计中,存储器单元可保持两个或两个以上位的数据。
可靠性通常是存储器产品中的重要特征,且对于某些工业应用尤其重要。因此,存在对具有高可靠性的非易失性存储器系统的需要。
【发明内容】
独立磁盘冗余阵列(RAID)技术和数据置乱的组合可在非易失性存储器阵列中提供高可靠性。具体来说,在不同数据置乱用于提供冗余的不同装置的情况下,每一装置含有不同数据模式,即使原始(未置乱)数据对于每一装置为相同的。因此,由装置中的特定数据模式引发的任何错误由于所使用的不同置乱而不会在多个装置中重复。使用此置乱的RAID系统并入有对数据模式引发的错误以及装置故障的保护。
一种根据本发明的一实施例的将数据安全地存储于非易失性存储器阵列中的方法包含:根据第一变换来变换数据的一部分以获得第一经变换数据;将第一经变换数据存储于存储器阵列的第一部分中;根据第二变换来变换数据的部分以获得第二经变换数据;以及在第一经变换数据存储于存储器阵列的第一部分中的同时将第二经变换数据存储于存储器阵列的第二部分中,以提供数据的所述部分的冗余存储。
一种根据本发明的一实施例的非易失性存储器系统包含:存储器阵列的第一部分;第一数据置乱器单元,其连接到存储器阵列的第一部分以在存储于存储器阵列地第一部分中之前根据第一变换对数据进行置乱;存储器阵列的第二部分;以及第二数据置乱器单元,其连接到存储器阵列的第二部分以在存储于存储器阵列的第二部分中之前根据第二变换对数据进行置乱,第二数据置乱器单元与第一数据置乱器单元并联连接。
【附图说明】
图1展示使用镜射的存储器系统,其中存储于第一装置中的所有数据还存储于第二装置中。
图2展示图1的存储器系统,其中数据A2由于其存储时的模式而在其被读取时不可由ECC校正。在装置1和装置2中的数据A2的两个副本均不可校正。
图3展示使用条带化而存储的数据,以将数据分布于四个装置上。
图4展示具有较大数据条的替代条带化布置。
图5A展示使用数据的镜射和条带化的存储器系统。
图5B展示图5A的存储器系统,其中数据A2和A7由于数据模式引发的错误而在读取时不可由ECC校正。
图6A展示使用镜射和条带化的替代存储器系统。
图6B展示图6A的存储器系统,其中数据A2由于数据模式引发的错误而在读取时不可由ECC校正。
图7A展示使用镜射和条带化的存储器系统,其具有数据置乱器单元以在数据存储于存储器系统中之前变换所有数据。
图7B展示图7A的存储器系统,其中经变换数据A2′和A3′由于数据模式引发的错误而在读取时不可由ECC校正。
图8A展示一替代存储器系统,其具有用于装置1的第一数据置乱器单元和用于装置2的第二数据置乱器单元,使得每一装置中的数据经受不同变换。
图8B展示由于数据模式引发的错误而在读取时不可由ECC校正的经变换数据A1′,而经变换数据A1*仍可校正。
图9A展示具有在装置之间的数据条带化的替代布置,其中数据在共享数据置乱器的装置上经条带化。
图9B展示图9A的存储器系统,其中经变换数据A2′和A7*由于数据模式引发的错误而不可由ECC校正,而经变换数据A2*和A7′保持可由ECC校正。
图10A展示另一存储器系统,其中一些装置具有专用数据置乱器且一些装置共享数据置乱器。
图10B展示图10A的存储器系统,其中经变换数据A2′和A3″由于数据模式引发的错误而在读取时不可由ECC校正,而经变换数据A2*、A2″、A3′和A3*保持在读取时可由ECC校正。
图10C展示使用数据A2*对不可校正的经变换数据A2′的替换,和使用数据A3*对不可校正的经变换数据A3″进行的替换。
图11A展示32个密钥的集合,其依序用于在密钥重复之前变换32个连续页。
图11B展示用于变换在四个装置上条带化的数据的32个密钥,其中密钥在每一装置内在8页之后重复。
图12A展示使用单一数据置乱器单元所存储的数据,所述数据置乱器单元使用针对数据的每一页而改变的一组密钥来变换数据。
图12B展示具有用于每一装置的单独数据置乱器单元的替代系统,其中每一数据置乱器依序使用密钥,使得密钥不在装置内频繁重复。
图13展示一存储器系统,其使用专用装置以存储奇偶校验数据且其具有用于每一装置的专用数据置乱器单元。
图14展示在四个装置上分布奇偶校验数据的存储器系统,其中每一装置具有专用数据置乱器单元。
【具体实施方式】
使用各种方法以实现非易失性存储器系统中的高可靠性数据存储。经由冗余来改进可靠性的某些方法使用独立磁盘冗余阵列(RAID)。存在不同类型的RAID系统,其使用镜射、条带化(striping)和奇偶校验(parity)数据或这些技术的某一组合。尽管术语RAID通常与硬盘驱动器(HDD)相关联,但RAID技术可与其它类型的存储器(包括例如快闪存储器等非易失性存储器阵列)一起使用。
图1展示两个装置,装置1和装置2,其以镜射布置而连接(还被称为RAID 1)。镜射意味着存储于装置1中的相同数据A0、A1、A2、A3还存储于装置2中,使得在装置2中存在每一数据单位的冗余副本。在其它实例中,两个以上装置可以此方式连接以提供相同数据的两个以上副本。一般来说,在两个或两个以上装置中维持相同数据的单独副本提供保护而免受任何个别装置的故障。因此,如果在图1中装置1出故障,则存储于装置1中的所有数据可替代地从装置2恢复。
虽然分离装置中的数据的冗余副本保护不受装置故障的影响,但其不保护不受所有可能形式的数据损失的影响。具体来说,在某些非易失性存储器阵列中,数据存储的特定模式可增加数据变损坏的可能性。此情况可由于在邻近单元之间的相互作用而出现,其中单元的浮动栅极不仅影响其下伏沟道,而且还影响相邻沟道且因此影响相邻单元的阈值电压。此对于单元阈值电压的小改变可导致存储于单元中的一个或一个以上位被不正确读取的MLC存储器系统来说尤其为一问题。所述问题随着存储器阵列中的尺寸变小和单元之间的相互作用变强而变得更加严重。举例来说,最初编程到低阈值电压的MLC单元(其浮动栅极上几乎无电荷或无电荷)的阈值电压稍后可升高,因为相邻单元被编程到高阈值电压(在其浮动栅极上存在大量电荷)。此可被视为一种形式的编程干扰。哪些特定数据模式引起编程干扰,和所引起干扰的程度(稍后错误读取的位的数目)视存储器架构而定。因此,可存在即使在存储器阵列在其设计限制内工作的情况下仍将致使存储于特定存储器阵列中的数据被错误读取的特定数据模式。避免这些数据模式通常为理想的。
许多存储器系统包括某一形式的错误校正编码(ECC)以便允许含有一些错误位的数据被检测且校正。为此,数据以某一冗余存储。当读取数据时,冗余允许针对错误检查数据,且达某一有限数目的错误可经校正。然而,为了校正大量错误,需要高度冗余(大量额外位),此并非对存储器空间的有效使用。通常,所使用的冗余度是基于预期错误率(例如,基于预期有缺陷单元的数目)且可能不足以校正例如由特定数据模式所引起的大量错误。具体来说,数据模式引发的错误可在暴露于类似条件的单元中的数据的相同部分中一起出现,且ECC通常限于校正数据的此部分中的仅有限数目的位。因此,ECC单独可能不足以克服某些存储器系统中的数据模式引发的错误。
图2展示一实例,其中装置1和装置2存储相同数据的相同副本。在此情况下,数据A2的一部分具有一数据模式,使得当A2经存储且稍后读取时,所读取的数据由于单元之间的相互作用而具有大量错误。此可包括A2内的单元的相互作用和与A2外的单元的相互作用。具体来说,一行中的单元倾向于受同一块的邻近行中的单元的影响。在此情况下,数据A2中的错误的数目超出所使用的ECC方案的校正能力且认为数据不可由ECC校正。数据部分A2可为任一数据单位,例如,512字节的区段(加额外开销)、页(写入单位)或块(擦除的最小单位)。数据A2同样存储于装置1与装置2两者中,因此相同模式出现在每一装置中。因此,两个装置中的数据A2的副本均受影响且两个副本均不可恢复。因此,在此情况下,仅靠镜射不提供使得能够恢复所有数据的充分可靠性水平。
图3展示在不同装置之间的数据条带化的第一实例(RAID 0)。数据经接收为三个文件,文件A、文件B和文件C,如所示。这些文件接着如所示而在装置1-4上散开。具体来说,文件A在装置1中存储为A0且在装置2中存储为A1。文件B存储为B0-B6,其在装置1-4上散开。且文件C存储为C0-C9,其在装置1-4上散开。在此实例中的数据的数据条由每一装置中的一个数据单位组成,例如,A0、A1、B0和B1共同构成一数据条。在此实例中,每一数据条含有2千字节的数据。图4展示另一实例,其中相同数据使用较大数据条大小而在相同装置上被条带化,其中每一数据条含有4千字节的数据。尽管条带化不提供任何冗余,但其可改进可靠性,因为数据经分解且原本可能引发错误的数据模式可得到避免。条带化数据可改进性能,因为其促进在多个装置上以高度并行度进行编程。
图5A展示使用镜射和条带化的组合的存储器系统的实例。数据在装置1与装置2之间被条带化,且装置1和装置2中的数据镜射于装置3和装置4中。应用RAID 0和RAID 1的方面的此混合布置可被称为RAID 0+1。如图5B中所示,当某些模式出现在所存储数据中时,此布置仍产生问题。具体来说,如果数据A2在装置1中的存储归因于数据模式而导致一定数目的不可校正的错误,则存储于装置3中的数据A2的副本也含有一定数目的不可校正的错误。类似地,装置2和装置4中的数据A7的两个副本均为不可校正的,因此不存在A2或A7的可恢复副本。
图6A展示RAID 0和RAID 1的替代组合,其可被称为RAID 10。在此布置中,装置1中的数据镜射于装置2中。存储于装置1和装置2中的相同数据在装置3和装置4上被条带化。然而,如图6B中所示,在数据A2的一个副本由于其数据模式而不可校正的情况下,其它装置中的数据A2的其它副本也不可校正。
针对可导致数据在其被读取时不可校正的数据模式的一种方法为在存储前对数据进行置乱。置乱使数据经受某一变换,使得经变换数据具有与未经变换数据不同的模式。具体来说,此置乱可将某一随机化引入到数据中的重复模式中。变换的简单实例为颠倒(或翻转)所有位,即,将所有零改变为一且将所有一改变为零。其它变换涉及对待存储的数据和某一系列的位执行异或(XOR)运算。不同于ECC,置乱不添加冗余位,因此经置乱的数据包括与原始数据相同数目的位。在一些情况下,变换可压缩数据,从而减少待存储位的数目。一些变换使用可分解数据模式的数据安全算法。
图7A展示一实例,其中数据置乱器单元或数据置乱器(DS)连接到装置1-4,使得待存储于装置1-4中的所有数据在存储之前经置乱。置乱在图7A中由撇号指示,使得A0经变换以变成A0′等。图7A展示如图6A中的RAID 10布置,其中数据在装置1与装置2之间镜射,且相同数据在装置3和装置4上经条带化。虽然置乱数据可导致具有不引起干扰的模式的经变换数据,但在一些情况下,经变换数据将具有在读取时引起错误的模式。在一些情况下,未置乱将不引起错误的数据被变换为引起错误的模式。图7B展示置乱的结果,其中经变换数据A2′和A3′具有在读取时引起错误的模式。由于这些模式引起错误且所述模式在数据的每一副本中被复制,因此无数据的可恢复副本可用。因此,在此情况下,除镜射和条带化以外使用单一数据置乱器单元进行置乱不足以确保可靠性。
图8A展示根据本发明的实施例的数据存储系统。存储器系统接收由第一数据置乱器DS′根据第一变换而变换的数据A0、A1、A2、A3......的单位序列。由DS′变换的数据(A0′、A1′、A2′、A3′......)存储于装置1中。数据A0、A1、A2、A3......还由第二数据置乱器DS*变换(变换为A0*、A1*、A2*、A3*......)且存储。因此,数据A0被变换为A0′以用于存储于装置1中且数据A0被变换为A0*以用于存储于装置2中。数据A0′具有与数据A0*不同的模式。因此,存储数据A0′的装置1的单元的阈值电压可与存储数据A0*的装置2中的对应单元不同。类似地,对于数据的其它部分,不同副本在存储之前经历不同变换以使得不复制相同的数据模式。如上所论述,有时经置乱数据可具有导致所存储数据不可校正的模式。图8B展示经变换数据A1′归因于其存储时的数据模式而不可校正。然而,经变换数据A1*在存储时具有不同的数据模式,因此经变换数据A1*并非不可校正。因此,即使数据A1′不可恢复,仍可从数据A1*获得原始(未变换)数据A1的副本。类似地,如果任何其它数据单位归因于变换和存储时的数据模式而不可校正,则原始数据仍可恢复,因为数据在存储于另一装置之前还经受另一变换。因此,图8B的布置提供免受装置故障(即,如果装置1或装置2出故障)和数据模式引发的错误的保护。虽然此方法因数据存储在两个独立装置中而类似于镜射,但两个装置作为置乱结果而保持不同的数据模式。因此,装置2中的数据不镜射装置1中的数据且此并非真实镜射。
图9A展示使用RAID 0+1的另一实例,其中两个不同置乱器单元DS′、DS*执行两个不同数据变换。数据置乱器DS′服务于装置1和装置2,而数据置乱器DS*服务于装置3和装置4。因此,存储于装置1和装置2中的所有数据经受第一变换,而相同数据在存储于装置3和装置4之前经受第二变换。数据在装置1与装置2之间被条带化,且数据还在装置3与装置4之间被条带化。在其它实例中,两个以上装置的组可共享数据置乱器且以此方式将数据条带化。图9B展示出现在经变换数据A2′和经变换数据A7*中的数据模式引发的错误。可通过读取A2*且将其变换(使产生A2*的变换反向)来恢复原始数据A2。由于A2*在存储时具有不同于A2′的数据模式,因此不太可能两个模式均引发错误。类似地,即使A7*不可恢复,原始数据A7仍可从A7′重建。用于此实例中的条带化可允许在编程期间的较大并行度,其改进了性能。虽然针对每一装置可提供不同数据置乱器单元(即,单独的数据置乱器用于装置1、2、3和4),但通常为存储经条带化数据的装置群组提供一个数据置乱器是足够的,因为此些装置通常不含有数据的任一特定部分的一个以上副本。
图10A展示具有RAID 10配置的替代存储器系统。由存储器系统接收的数据在其存储于装置1中之前经受由数据置乱器DS′进行的第一变换。所接收数据还在存储于装置2中之前经受由数据置乱器DS*进行的第二变换。所接收数据还在存储于装置3和装置4中之前经受由数据置乱器DS″进行的第三变换。经变换数据在装置3和装置4上经条带化。因此,在此实例中,如果任一变换导致当读取数据时引发错误的数据,则存在可从其恢复数据的两个其它位置。举例来说,图10B展示由于数据模式引发的错误而不可恢复的数据A2′和数据A3″。然而,对于这些数据单位中的每一者,存在两个其它版本(A2*、A2″、A3′和A3*),可从其恢复原始数据。
图10C展示读取时不可由ECC校正的图10B的数据A2′和A3″的部分如何可被从另一装置产生的数据替换。举例来说,当发现装置1中的A2′不可由ECC校正时,原始数据A2从存储于装置2中的数据A2*恢复。原始数据A2还可经受又一变换以提供数据A2**。可通过将由数据置乱器DS′执行的变换修改为与早先变换不同来执行此变换。在此替换之后,存在可从其恢复原始数据A2的三个装置。类似地,装置4中的数据A3″不可由ECC校正,但原始数据A3从装置2中的数据A3*恢复。原始数据A3接着经变换以提供数据A3**,其替换不可校正数据A3″。数据A3到A3**的变换由数据置乱器DS″执行,所述数据置乱器DS″经修改以执行不同于针对先前存储的数据执行的变换的变换。在此实例中,数据A2**和A3**为类似变换的结果。然而,在其它情况下,当执行替换时在不同装置中可使用不同变换。
在一些存储器系统中,根据密钥执行数据变换。举例来说,经变换数据可为对原始数据和密钥进行XOR运算的产物。为了恢复原始数据,使所述运算反向。密钥可周期性地改变(例如,针对每一区段、每一页、每一块或某一其它模式而改变)。通常使用有限数目的密钥,使得存在密钥使用的重复模式。然而,在此系统与数据条带化一起使用的情况下,在任一装置中可使用密钥总数的分数,从而导致密钥模式比预期早地重复。图11A展示装置1,其中使用32个密钥(密钥0到密钥31)来对具有四个装置(装置1到装置4)的存储器系统内的数据进行置乱,密钥在页与页之间改变。在32个密钥的情况下,密钥使用的模式在32页之后重复。然而,如果此方案应用于如图11B中所示的使用条带化的存储器系统中,则密钥早得多地重复。在此情况下,在仅8页之后重复。模式如此早重复通常为不合需要的,因为如果密钥较早重复,则存储器单元相互作用的风险增加。
图12A展示另一实例,其中单一数据置乱器DS使用有限数目的密钥以在数据在装置1-4上被条带化之前对数据进行置乱。如可看到,用于每一装置中的密钥限于密钥的特定子集,且因此密钥较早地在装置内重复。
图12B展示针对每一装置使用不同数据置乱器的替代配置,其中每一数据置乱器使用密钥的全集,使得在每一装置中使用所有密钥。此增加在同一密钥的再次使用之间的间隔,且因此降低以将导致数据损坏的方式对准的存储器单元状态的可能性。因此,甚至在不提供冗余的情况下,针对每一装置使用不同置乱也可为有利的。图12B展示由每一数据置乱器使用相同密钥模式。在其它实例中,不同数据置乱器可以不同次序使用密钥。举例来说,每一数据置乱器可以不同密钥开始(例如,数据置乱器DS1可以密钥0开始,数据置乱器DS2可以密钥8开始,数据置乱器DS3可以密钥16开始,且DS4可以密钥24开始)。每一置乱器可具有一初始密钥或种子,从所述初始密钥或种子导出后续密钥。确保数据在不同装置中的不同变换的一种方式是使用不同种子来初始化其相应数据置乱器。在其它实例中,可控制数据置乱器以使得每一数据置乱器在对相同数据进行置乱时使用不同密钥。
图13展示在专用装置中维持奇偶校验数据的实例(RAID 4)。在此情况下,奇偶校验数据专门存储于装置4中。从存储于装置1-3中的数据导出装置4中的奇偶校验数据。可在对数据进行置乱之前或之后导出奇偶校验数据。奇偶校验信息通过允许一个装置中的数据从包括奇偶校验数据的其它装置中的数据重构来添加针对故障的额外保护水平。一般来说,由于每当写入或读取数据时执行奇偶校验运算的时间,使用奇偶校验数据不仅增加冗余而且还引起性能损失。每一装置具有专用数据置乱器,使得数据置乱密钥不在装置内频繁重复。
图14展示一实例,其中奇偶校验数据分布于所有装置上(RAID 5)。在此实例中,每一数据条包括从所述数据条中的其它数据导出的奇偶校验数据。举例来说,从A0、A1和B0导出奇偶校验0。从B1、B2和B3导出奇偶校验1。此实例还展示用于每一装置的专用数据置乱器。
某些实例展示附接到个别装置的专用数据置乱器单元。此可经由硬件通过具有专用电路(例如,存储器裸片上的外围电路)而实现。在其它实例中,可通过控制器中的固件而实现数据置乱,使得同一硬件用于不同电路,但固件确保根据目的装置执行不同变换。其它硬件还可一次将不同置乱提供到一个以上装置。因此,可实现不同置乱方案而不一定需要用于每一装置的不同硬件。
以上所述的各种方案可与提供高可靠性的其它方案组合或用于替换所述其它方案。举例来说,所述方案通常与ECC方案组合,所述ECC方案提供保护以免受归因于数据的一部分中的小数目错误的故障。一般来说,以上所述的方案在存储器系统(例如,可移除存储器卡或USB快闪驱动器)内执行且主机可能不可见。在一些情况下,保护程度或特定保护方案可由用户经由主机或以其它方式选择。在一些情况下,主机系统可具有除存储器系统中的任一保护方案以外的其本身的保护方案。
本文所引用的所有专利、专利申请案、文章、书籍、说明书、其它公开案、文档和事物特此以全文引用的方式并入本文中以用于所有目的。在术语的定义或使用在所并入的公开案、文档或事物中的任一者与本文档的文本之间存在任何不一致或冲突的情况下,应以所述术语在文档件中的定义或使用为主。
尽管已关于某些优选实施例描述了本发明的各个方面,但应理解,本发明享有在所附权利要求书的全部范围内受到保护的权利。