存储器阵列中的错误校正方法及实施其的系统与流程

文档序号:13423618阅读:210来源:国知局
存储器阵列中的错误校正方法及实施其的系统与流程

本发明的实施例一般地涉及半导体技术领域,更具体地,涉及存储器阵列的错误校正方法及实施其的系统。



背景技术:

半导体集成电路(ic)产业制造出各种各样的数字器件来解决多个不同领域中的问题。这些数字器件中的一些(诸如存储器阵列)配置为用于存储数据。在存储器阵列的制造工艺期间,存储器阵列的部分被破坏或包含损坏的数据。



技术实现要素:

根据本发明的一方面,提供了一种校正存储器阵列中的错误的方法,所述方法包括:配置具有第一纠错码ecc的第一存储器阵列以提供存储在所述第一存储器阵列中的数据的错误校正,所述第一存储器阵列包括布置为多行和多列的第一组存储器单元,所述第一组存储器单元中的一行存储器单元包括第一组存储器字,所述第一组存储器字中的每个字包括第一组比特;配置具有第二ecc的第二存储器阵列以提供存储在所述第一存储器阵列中的数据的错误校正,所述第二存储器阵列包括布置为多行和多列的第二组存储器单元,所述第二组存储器单元中的一行存储器单元包括第二组存储器字,所述第二组存储器字中的每个字包括第二组比特;对所述第一存储器阵列和所述第二存储器阵列实施回流工艺;以及至少基于所述第一ecc或所述第二ecc来校正存储在所述第一存储器阵列中的数据。

根据本发明的另一方面,提供了一种校正存储器阵列中的错误的方法,所述方法包括:配置具有第一纠错码ecc的第一存储器阵列以提供存储在所述第一存储器阵列中的数据的错误校正,所述第一存储器阵列包括布置为多行和多列的第一组存储器单元,所述第一组存储器单元中的一行存储器单元包括第一组存储器字,所述第一组存储器字中的每个字包括第一组比特;配置具有第一奇偶校验的第二存储器阵列的第一部分,所述第一奇偶校验配置为提供存储在所述第一存储器阵列的行中的所述数据的错误检测,所述第二存储器阵列的所述第一部分包括存储第一组数据的第二组存储器单元;配置具有第二奇偶校验的所述第二存储器阵列的第二部分,所述第二奇偶校验配置为提供存储在所述第一存储器阵列的列中的数据的错误检测,所述第二存储器阵列的所述第二部分包括存储第二组数据的第三组存储器单元;配置具有第二ecc的所述第二存储器阵列的所述第二部分以提供存储在所述第二存储器阵列的所述第二部分中的所述第二组数据的错误校正;对所述第一存储器阵列和所述第二存储器阵列实施回流工艺;至少基于(1)所述第一ecc或(2)所述第一奇偶校验和所述第二奇偶校验来校正存储在所述第一存储器阵列中的数据的至少部分;以及基于所述第二ecc来校正存储在所述第二存储器阵列的所述第二部分中的所述第二组数据。

根据本发明的又一方面,提供了一种校正存储器阵列中的错误的方法,所述方法包括:配置具有第一纠错码(ecc)的第一存储器阵列以提供存储在所述第一存储器阵列中的一组数据的错误校正,从而生成第一组数据,所述第一存储器阵列包括布置为多行和多列的第一组存储器单元,所述第一组存储器单元中的一行存储器单元包括第一组存储器字,所述第一组存储器字中的每个字包括第一组比特;将第二组数据存储在第二存储器阵列中,所述第二组数据至少包括所述第一组数据的副本,所述第二存储器阵列包括布置为多行和多列的第二组存储器单元;对所述第一存储器阵列和所述第二存储器阵列实施回流工艺;基于所述第一组数据和所述第二组数据来恢复所述第一组数据的至少部分;以及基于ecc校正所述恢复的第一组数据中的错误。

根据本发明的又一方面,提供了一种筛选存储器阵列中的弱比特的方法,所述方法包括:将第一组数据存储在所述存储器阵列的第一存储器阵列中,所述第一存储器阵列具有第一组存储器单元;至少对所述第一存储器阵列实施第一烘焙工艺,或者至少对所述第一存储器阵列施加第一磁场;确定存储在所述第一存储器阵列中的所述第一组数据的部分是否由所述第一烘焙工艺或所述第一磁场改变;以及如果所述第一组存储器单元的所述第一存储器单元存储改变的数据,则跟踪所述第一组存储器单元的至少所述第一存储器单元的地址,并且实施以下操作中的至少一个:(1)利用所述存储器阵列的第二存储器阵列中的对应存储器单元替换存储所述改变的数据的所述第一组存储器单元中的所述第一存储器单元,或(2)丢弃存储所述改变的数据的所述第一组存储器单元中的所述第一存储器单元。

根据本发明的又一方面,提供了一种校正存储器阵列中的错误的方法,所述方法包括:筛选所述存储器阵列的第一存储器阵列中的弱比特,所述第一存储器阵列包括布置为多行和多列的第一组存储器单元,所述第一组存储器单元中的一行存储器单元包括第一组存储器字,所述第一组存储器字的每个字包括第一组比特;将一组数据存储在所述第一存储器阵列中;配置具有第一纠错码ecc的所述第一存储器阵列以提供存储在所述第一存储器阵列中的所述一组数据的错误校正,从而生成第一组数据;将第二组数据存储在第二存储器阵列中,所述第二组数据包括所述第一组数据的偶数个副本,所述第二存储器阵列包括布置为多行和多列的第二组存储器单元;对所述第一存储器阵列和所述第二存储器阵列实施回流工艺;基于所述第一组数据和所述第二组数据来恢复所述第一组数据的至少部分;以及基于ecc校正所述恢复的第一组数据中的错误。

根据本发明的又一方面,提供了一种存储器系统,包括:第一存储器阵列,配置有第一纠错码ecc以提供存储在所述第一存储器阵列中的数据的错误校正,所述第一存储器阵列包括布置为多行和多列的第一组存储器单元,所述第一组存储器单元中的一行存储器单元包括第一组存储器字,所述第一组存储器字中的每个字包括第一组比特;第二存储器阵列,配置有第二ecc以提供存储在第一存储器阵列中的数据的错误校正,所述第二存储器阵列包括布置为多行和多列的第二组存储器单元,所述第二组存储器单元中的一行存储器单元包括第二组存储器字,所述第二组存储器字中的每个字包括第二组比特,所述第一存储器阵列和所述第二存储器阵列是相同的存储器阵列的部分;以及配置系统,连接至所述第一存储器阵列和所述第二存储器阵列,所述配置系统配置具有所述第一ecc的所述第一存储器阵列和具有所述第二ecc配置所述第二存储器阵列。

附图说明

当结合附图进行阅读时,从以下详细描述可最佳地理解本发明的各个方面。应该注意,根据工业中的标准实践,各个部件未按比例绘制。实际上,为了清楚的讨论,各种部件的尺寸可以被任意增大或减小。

图1是根据一些实施例的存储器系统的框图。

图2是根据一些实施例的校正存储器系统中的错误的方法的流程图。

图3a是根据一些实施例的存储器阵列的部分的示图。

图3b是根据一些实施例的校正存储器阵列中的错误的方法的流程图。

图4a是根据一些实施例的存储器阵列的部分的示图。

图4b是根据一些实施例的存储器阵列的部分的示图。

图4c是根据一些实施例的校正存储器阵列中的错误的方法的流程图。

图5a是根据一些实施例的存储器阵列的部分的图。

图5b是根据一些实施例的校正存储器阵列中的错误的方法的流程图。

图5c是根据一些实施例的系统的框图。

图6是根据一些实施例的校正存储器阵列的错误的方法的流程图。

图7是根据一些实施例的用于配置存储器阵列的系统的框图。

具体实施方式

以下公开内容提供了许多用于实现所提供主题的不同特征的不同实施例或实例。下面描述了组件、材料、值、步骤、布置等的具体实例以简化本发明。当然,这些仅仅是实例,而不旨在限制本发明。其他组件、材料、值、步骤、布置等是预期的。例如,在以下描述中,在第二部件上方或者上形成第一部件可以包括以直接接触的方式形成第一部件和第二部件的实施例,并且也可以包括在第一部件和第二部件之间可以形成附加的部件,从而使得第一部件和第二部件可以不直接接触的实施例。此外,本发明可在各个实例中重复参考标号和/或字符。该重复是为了简单和清楚的目的,并且其本身不指示所讨论的各个实施例和/或配置之间的关系。

而且,为了便于描述,在此可以使用诸如“在…下方”、“在…下面”、“下部”、“在…之上”、“上部”等空间相对术语以描述如图所示的一个元件或部件与另一个(或另一些)元件或部件的关系。除了图中所示的方位外,空间相对术语旨在包括器件在使用或操作中的不同方位。装置可以以其他方式定向(旋转90度或在其他方位上),并且在此使用的空间相对描述符可以同样地作出相应的解释。

根据一些实施例,存储器阵列经受回流工艺。根据一些实施例,回流工艺是其中使用焊膏将存储器阵列中的至少一个电组件暂时附接至至少一个接触焊盘的工艺。之后,整个装置经受可控加热,从而熔化焊料并且在至少一个电组件与至少一个接触焊盘之间提供固定连接。然而,回流工艺可能会损坏包含在存储器阵列中的数据或者可能会损坏存储器阵列内的存储器单元。

根据一些实施例,一种校正存储器阵列中的错误的方法包括:配置具有第一纠错码(ecc,又称错误校正码)的第一存储器阵列以提供存储在第一存储器阵列中的数据的错误校正,配置具有第二ecc的第二存储器阵列以提供存储在第一存储器阵列中的数据的错误校正,对第一存储器阵列和第二存储器阵列实施回流工艺,并且至少基于第一ecc或第二ecc校正存储在第一存储器阵列中的数据。根据一些实施例,第一存储器阵列和第二存储器阵列是存储器阵列的部分。根据一些实施例,使用第一ecc或第二ecc来校正由回流工艺引入的比特误码(biterror,又称比特错误)。

图1是根据一些实施例的存储器系统100的框图。

存储器系统100包括电连接至配置系统104的集成电路(ic)102。ic102包括配置为存储数据的存储器阵列102a。在一些实施例中,ic102包括其他电路或配置为存储或执行软件,为了简化,未示出。在一些实施例中,ic102配置为修复或检测存储在存储器阵列102a中的数据的错误。修复错误包括利用由纠错码(ecc)提供的正确数据覆盖数据或翻转存储器阵列102a的故障位置中的现有数据的逻辑值。

存储器阵列102a包括多个存储器单元库。每个库包括多个行、多个列以及诸如感测放大器、字线、位线等的相关电路。根据应用,存储器102a的大小包括例如1、2、4兆字节(mb)等。其他存储器大小在各个实施例的范围内。在一些实施例中,存储器单元的行称为数据位。本发明的各个实施例提供了使用一个或多个ecc修复出现在存储器阵列102a中的错误的机制。存储器阵列102a是非易失性存储器。在一些实施例中,存储器阵列102a包括电阻式随机存取存储器(rram)、磁阻式ram(mram)、相变式ram(pram)、铁电式ram(fram)或其他合适的存储器类型。其他存储器类型在各个实施例的范围内。

配置系统104与集成电路102接口连接,从而配置具有一个或多个ecc配置或错误检测配置的存储器阵列102a。在一些实施例中,配置系统104包括硬件处理器和非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质编码有(即存储有)可执行指令集。配置系统104的实施例在图7中示出为系统700。配置系统104与ic102分离。在一些实施例中,配置系统104是ic102的部分。

图2是根据一些实施例的校正存储器系统100中的错误的方法200的流程图。应当理解,可以在图2所示的方法200之前、期间和/或之后实施附加的操作,并且因此本文仅简要描述一些其他操作。在一些实施例中,方法200可用于配置具有ecc的ic102(图1),并且至少基于ecc校正存储器阵列102a的错误。

在方法200的操作202中,配置存储器阵列102a。在一些实施例中,存储器阵列102a配置有错误校正以能够校正存储在存储器阵列102a中的数据的一个或多个错误。例如,在一些实施例中,存储器阵列102a配置有ecc以校正存储在存储器阵列102a中的数据的一个或多个错误。在一些实施例中,ecc包括汉明ecc(hammingecc)、里德-所罗门ecc(reed-solomonecc)、bch码等。在一些实施例中,存储器阵列102a配置有错误校正以能够检测存储在存储器阵列102a中的数据的一个或多个错误。在一些实施例中,错误检测包括奇偶校验以检测存储在存储器阵列102a中的数据的一个或多个比特错误(error,又称误码)。其他ecc或错误检测方法在各个实施例的范围内。

方法200继续操作204,其中对存储器阵列102a实施回流工艺。在一些实施例中,操作204的回流工艺包括将存储器阵列102a放置到回流炉中,并且在第一温度t1处将回流炉加热第一持续时间d1。在一些实施例中,操作204的回流工艺包括将存储器阵列102a暴露于红外灯,并且通过红外灯在第一温度t1处将存储器阵列102a加热第一持续时间d1。

方法200继续操作206,恢复存储器阵列102a中的数据。在一些实施例中,通过ic102使用ecc来恢复存储器阵列102a中的数据。在一些实施例中,ecc至少包括第一ecc、第二ecc或第三ecc。在一些实施例中,通过ic102使用第一奇偶校验和第二奇偶校验来恢复存储器阵列102a中的数据。

图3a是根据一些实施例的存储器阵列300的部分的示图。

存储器阵列300是图1的存储器阵列102a的实施例。存储器阵列300包括第一存储器阵列302和第二存储器阵列304。

第一存储器阵列302直接与第二存储器阵列304相邻。在一些实施例中,第一存储器阵列302通过另一区域(未示出)与第二存储器阵列304分离。第一存储器阵列302和第二存储器阵列304是相同的存储器阵列300的部分。在一些实施例中,第一存储器阵列302和第二存储器阵列304是不同的存储器阵列的对应部分。

第一存储器阵列302包括布置为多行和多列的第一组存储器单元。第一组存储器单元中的每行存储器单元包括第一组存储器字。为了说明,示出存储器单元的一行315,但是行315的教导可应用于第一存储器阵列302中的每行存储器单元。第一组存储器单元中的存储器单元的行315包括第一组存储器字w[1]、w[2]、w[3]或w[4](统称为字“w”)。一行中的字w的常用数量包括8、16、32、64等。第一组存储器单元的一行存储器单元中不同数量的字w在各个实施例的范围内。第一组存储器字w的每个字包括多个存储器单元或多个存储器位。字w[3]包括第一组比特(bit,又称位)315a和第二组比特315b。为了简明,未示出字w[1]、w[2]和w[4]中的存储器位。

第一组比特315a包括位a1、...、ax,其中,x是与字w[3]中第一组比特315a中的数据比特数相对应的正整数。

第二组比特315b包括位b1...、bz,其中,z是与第二组比特315b中的比特数相对应的正整数。第二组比特315b称为第一ecc330,该第一ecc330配置为提供字w[3]的第一组比特315a中的n比特错误校正,其中n是正整数。

第二存储器阵列304配置有第二ecc332,该第二ecc332配置为提供存储在第一存储器阵列302中的数据错误校正。第二存储器阵列304包括布置为多行和多列的第二组存储器单元。第二组存储器单元中的每行存储器单元包括第二组存储器字。为了说明,示出存储器单元的一行325,但是行325的教导可应用于第二存储器阵列304中的每行存储器单元。第二组存储器单元中的存储器单元的行325包括第二组存储器字sw[1]、sw[2]、sw[3]或sw[4](统称为字“sw”)。在一些实施例中,第二组存储器单元中的每行存储器单元在第一组存储器单元中具有对应行的存储器单元。一行中字sw的常用数量包括8、16、32、64等。第二组存储器单元的一行存储器单元中的不同数量的字sw在各个实施例的范围内。第二组存储器字sw的每个字包括多个存储器单元或多个存储器位。字sw[3]包括第一组比特325a。为了简明,未示出字sw[1]、sw[2]和sw[4]中的存储器位。第一组字w中的每个字在第二组字sw中具有对应的字。第二组字sw中的每个字配置有第二ecc332以提供第一组字w中的字的至少对应部分的错误校正。为了简明,未示出每个字sw[1]、sw[2]和sw[4]中的第二ecc332。

第一组比特325a包括位c1、c2...、cz’,其中z’是与字sw[3]中的第一组比特325a中的数据比特数相对应的正整数。第一组比特325a称为第二ecc332,该第二ecc332配置为提供字w[3]的第一组比特315a中m1比特错误校正。在一些实施例中,第二ecc332配置为提供字w[3]的第一组比特315a和第二组比特315b中的m1比特错误校正。m1是大于整数n的正整数。

整数m1由公式1表示:

m1=n+m(1)

其中,与第一ecc330相比,m是与由第二ecc332向字w[3]提供的额外保护的比特数相对应的正整数。

在一些实施例中,第一存储器阵列302和第二存储器阵列304具有相同数量的存储器单元的行或列。在一些实施例中,第一存储器阵列302和第二存储器阵列304具有不同数量的存储器单元的行或列。在一些实施例中,第二存储器阵列304是配置为存储临时数据的备用存储器阵列。第一存储器阵列302和第二存储器阵列304的不同位置在各个实施例的范围内。第一存储器阵列302中的第一组字w或第一ecc330和第二存储器阵列304中的第二组字sw或第二ecc332的不同位置在各个实施例的范围内。第一存储器阵列302中的行315和第二存储器阵列304中的行325的不同位置在各个实施例的范围内。

图3b是根据一些实施例的校正存储器阵列300中的错误的方法300’的流程图。

方法300’是具有类似元件的图2的方法200的实施例。为了简明,方法300’应用于图3a中的字w[3]和字sw[3],但是在一些实施例中,方法300’可应用于第一存储器阵列302或第二存储器阵列304中的每行存储器单元。

在方法300’的操作302’中,将存储器阵列300(图3a)划分成第一存储器阵列302和第二存储器阵列304。

方法300’继续操作304’,其中,将数据存储在第一存储器阵列302中。在一些实施例中,存储在第一存储器阵列302中的数据是第一组比特315a。在一些实施例中,存储在第一存储器阵列302中的数据是字w[3]的部分。在一些实施例中,ic102配置为将数据存储在第一存储器阵列302中。在一些实施例中,配置系统104配置为将数据存储在第一存储器阵列302中。

方法300’继续操作306’,其中,第一存储器阵列302配置有第一ecc330以提供存储在第一存储器阵列302中的数据的错误校正。在一些实施例中,第一ecc330配置为提供存储在第一存储器阵列302中的数据(例如,第一组比特315a)的错误校正。第一ecc330存储在第一存储器阵列302中作为第二组比特315b。

方法300’继续操作308’,其中,第二存储器阵列304配置有第二ecc332以提供存储在第一存储器阵列302中的数据的至少部分(例如,第一组比特315a)错误校正。在一些实施例中,第一ecc330或第二ecc332包括汉明ecc、里德-所罗门ecc或bch码等。其他ecc在各个实施例的范围内。在一些实施例中,配置系统104至少配置具有第一ecc330的第一存储器阵列302或配置具有第二ecc332(例如,第二组比特325a)的第二存储器阵列304。操作304’、306’和308’是操作202(图2)的实施例。

方法300’继续操作310’,其中,对第一存储器阵列302和第二存储器阵列304实施回流工艺。操作310’的回流工艺类似于操作204(图2)的回流工艺。

在一些实施例中,操作310’的回流工艺损坏存储在第一存储器阵列302中的数据的部分。在一些实施例中,在回流工艺之前损坏存储在第一存储器阵列302中的数据的部分。在一些实施例中,操作310’的回流工艺损坏第一存储器阵列302中的存储器单元,使得损坏的存储器单元不能正常工作。

方法300’继续操作312’,其中至少基于第一ecc330或第二ecc332校正存储在第一存储器阵列302中的数据(例如,字w[3]的第一组比特315a)。在一些实施例中,第二ecc332校正第一组比特315a和第二组比特315b,因此,操作312’的校正数据包括第一组比特315a和第二组比特315b。

在一些实施例中,如果第一存储器阵列302中的第一组字w的字的至少部分的比特误码数小于或等于n比特,则基于第一ecc330来校正存储在第一存储器阵列302中的第一组字w的该字处的数据(例如,第一组比特315a)。例如,在一些实施例中,如果第一存储器阵列302中的第一组字w的字w[3]中的比特误码数小于或等于n比特,则基于第一ecc330来校正存储在第一存储器阵列302中的字w[3](例如,第一组比特315a)处的数据的至少部分。

在一些实施例中,如果第一存储器阵列302中的第一组字w的字的至少部分中的比特误码数大于n比特并且小于或等于m1比特,则基于第二ecc332来校正存储在第一存储器阵列302中的第一组字的字处的数据(例如,第一组比特315a或第二组比特315b)。例如,在一些实施例中,如果第一存储器阵列302中的第一组字w的字w[3]中的比特误码数大于n比特并且小于或等于m1比特,则基于第二ecc332校正存储在第一存储器阵列302中的字w[3]处的数据(例如,第一组比特315a或第二组比特315b)。操作312’是操作206(图2)的实施例。

方法300’继续操作314’,其中释放第二存储器阵列304的至少部分。在一些实施例中,操作314’包括将第二存储器阵列304的至少部分指定为由ic102或其他电路写入的可用的存储器单元。在一些实施例中,操作302’或314’是可选的。

使用目前公开的方法中的至少一种,存储器阵列(例如,存储器阵列102a、图3a的存储器阵列300、图4a的存储器阵列400a、图4b的存储器阵列400b或图5a的存储器阵列500)的错误校正能力大于大于其他方法,从而导致存储器阵列(例如,存储器阵列102a、300、400a、400b或500)具有比其他方法更低的比特误码率(ber)和更低的现场返修率(fieldreturnrate)。在一些实施例中,现场返修率是在回流工艺之后的集成电路中的存储器阵列管芯的故障率。使用目前公开的方法中的至少一种,ecc(例如,第一ecc330、第二ecc332、432、434、530或第三ecc532)或奇偶校验(例如,第一奇偶校验420或424或第二奇偶校验422)用于校正由回流工艺、烘焙工艺或施加的磁场引入到存储器阵列(例如,存储器阵列102a、300、400a、400b或500)中的比特误码。

图4a是根据一些实施例的存储器阵列400a的示图。

存储器阵列400a是图1的存储器阵列102a的实施例。存储器阵列400a是图3a的存储器阵列300的变型。存储器阵列400a包括代替第一存储器阵列302的第一存储器阵列402和代替第二存储器阵列304的第二存储器阵列404。

第一存储器阵列402是第一存储器阵列302(图3)。第二存储器阵列404是第二存储器阵列304(图3)的变型。

第二存储器阵列404包括第一部分404a和第二部分404b。

第一部分404a包括布置为列的第二组存储器单元。存储器单元的列配置为存储第一组数据p1、p2、...、py(统称为第一组数据“p”),其中y是与第一组数据p的比特数相对应或是与第一存储器阵列402中的存储器单元的行数相对应的正整数。

第一组数据p配置为第一奇偶校验420中的第一组奇偶校验位。第一奇偶校验420配置为提供存储在第一存储器阵列402的每行中的数据(例如,行315、第一组比特315a或第二组比特315b)的奇偶校验错误检测。第一奇偶校验420是偶校验或奇校验。第一组数据p中的每行奇偶校验数据与第一存储器阵列402中对应行的数据的奇偶校验相对应。

第二存储器阵列404的第二部分404b配置有第二奇偶校验422和第二ecc432。第二部分404b包括布置为多行和多列的第三组存储器单元。第三组存储器单元中的每行存储器单元包括第二组存储器字。为了说明,示出存储器单元的一行425,但是行425的教导可应用于第二存储器阵列404的第二部分404b中的每行存储器单元。第三组存储器单元中的存储器单元行425包括第二组存储器字sw[1]’、sw[2]’、sw[3]’或sw[4]’(统称为字“sw’”)。在一些实施例中,第三组存储器单元中的每行存储器单元在第一存储器阵列402的第一组存储器单元中具有对应行的存储器单元。一行中字sw’的常用数量包括8、16、32、64等。第三组存储器单元的一行存储器单元中的不同数量的字sw’在各个实施例的范围内。第二组存储器字sw’的每个字包括多个存储器单元或多个存储器比特。字sw[3]’包括第一组比特425a和第二组比特425b。为了简明,未示出字sw[1]’、sw[2]’和sw[4]’中的比特。第二组字sw’中的每个字在第一组字w中具有对应的字。

第一组比特425a包括比特p1’、...、px’,其中,x’是与字sw[3]’中第一组比特425a中的数据比特数相对应的正整数。第一组比特425a配置为在第二奇偶校验422的第二组奇偶校验位。第二奇偶校验422配置为提供存储在第一存储器阵列402的每列中的数据的奇偶校验错误检测。第二奇偶校验422是偶校验或奇校验。在一些实施例中,第二组字sw’中的每个字与第一存储器阵列402中的对应列的存储器单元相关联。在一些实施例中,第二组字sw’中的每个字的部分是第一存储器阵列402中对应列的存储器单元的第二奇偶校验。

第二组比特425b包括位d1、...、dz’,其中z’是与第二组比特425b中的比特数相对应的正整数。第二组比特425b称为第二ecc432,该第二ecc432配置为提供字sw[3]’的第一组425a中n1比特错误校正,其中n1是正整数。第二组字sw’中的每个字配置有第二ecc432以提供第二组字sw’中的字的部分错误校正。为了简明,未示出每个字sw[1]’、sw[2]’和sw[4]’中的第二个ecc。

在一些实施例中,第一存储器阵列402和第二存储器阵列404具有相同数量的存储器单元的行或列。在一些实施例中,第一存储器阵列402和第二存储器阵列404具有不同数量的存储器单元的行或列。在一些实施例中,第二存储器阵列404是配置为存储临时数据的备用存储器阵列。第一存储器阵列402和第二存储器阵列404的不同位置在各个实施例的范围内。第一部分404a或第二部分404b的不同位置在各个实施例的范围内。第一存储器阵列402中的第一组字w或第一ecc330和第二存储器阵列404中的第二组字sw’或第二ecc432的不同位置在各个实施例的范围内。第一存储器阵列402中的行315和第二存储器阵列404中的行425的不同位置在各个实施例的范围内。在一些实施例中,第一ecc330是可选的,因此,第一存储器阵列402不包括第一ecc330,并且字w[3]不包括第二组比特315b。

图4b是根据一些实施例的存储器阵列400b的示图。

存储器阵列400b是图1的存储器阵列102a的实施例。存储器阵列400b是图4a的存储器阵列400a的变型。存储器阵列400b包括第一存储器阵列402和第二存储器阵列406。与图4a相比较,图4b的第二存储器阵列406替换第二存储器阵列404。

第二存储器阵列406是第二存储器阵列404(图4a)的变型。

第二存储器阵列406包括第一部分406a和第二部分406b。第二部分406b是图4a的第二部分404b。第一部分406a是图4a的第一部分404a的变型。

第一部分406a包括布置为多行和多列的第四组存储器单元。第一部分406a配置有第一奇偶校验424和第三ecc434。

第四组存储器单元中的每行存储器单元包括第三组存储器字。为了说明,示出存储器单元的一行435,但是行435的教导可应用于第二存储器阵列406的第一部分406a中的每行存储器单元。第四组存储器单元中的存储器单元的行435包括第三组存储器字s[1]、s[2]、s[3]或s[4](统称为字“s”)。在一些实施例中,第四组存储器单元中的每行存储器单元在第一存储器阵列402的第一组存储器单元中或者在第二存储器阵列406的第二部分406b中的第三组存储器单元中具有对应行的存储器单元。

一行中字s的常用数量包括8、16、32、64等。在第四组存储器单元的一行存储器单元中的不同数量的字s在各个实施例的范围内。第三组存储器字s的每个字包括多个存储器单元或多个存储器比特。字s[3]包括第一组比特435a和第二组比特435b。为了简明,未示出字s[1]、s[2]和s[4]中的存储器比特。在一些实施例中,第三组字s中的每个字在第一组字w或第二组字w’中具有对应的字。

第一组比特435a是图4b中的第一组数据p。第一组比特435a包括比特p1’、...、py’,其中,y’是与字s[3]的第一组比特435a中的数据比特数相对应的正整数。第一组比特435a在第一奇偶校验424中配置为第一组奇偶校验位。第一奇偶校验424配置为提供存储在第一存储器阵列402的行315中的数据的奇偶校验错误检测。第一奇偶校验424是偶校验或奇校验。

在一些实施例中,第三组字s中的每个字与第一存储器阵列402中的对应行的存储器单元相关联。在一些实施例中,第三组字s中的每个字的部分是第一存储器阵列402中对应行的存储器单元的第一奇偶校验。例如,在这些实施例中,第一奇偶校验424配置为提供存储在第一存储器阵列402的行315中的数据的奇偶校验错误检测。

第二组比特435b包括位e1、...、ez”,其中z”是与第二组比特435b中的比特数相对应的正整数。第二组比特435b称为第三ecc434,该第三ecc434配置为提供字s[3]的第一组比特435a中n2比特错误校正,其中n2是正整数。第三组字s中的每个字配置有第三ecc434以提供第三组字s中的字的部分错误校正。为了简明,未示出每个字s[1]、s[2]和s[4]中的第三ecc。在一些实施例中,整数n、n1或n2不同于整数n、n1或n2的另一个。

第一部分406a或第二部分406b的不同位置在各个实施例的范围内。第一存储器阵列402中的第一组字w或第一ecc330、第二存储器阵列404中的第二组字sw’或第二ecc432或第二存储器阵列404中的第三组字s或第三ecc434的不同位置在各个实施例的范围内。第一存储器阵列402中的行315和第二存储器阵列406中的行425或行435的不同位置在各个实施例的范围内。在一些实施例中,第一ecc330是可选的,并且因此,第一存储器阵列402不包括第一ecc330并且字w[3]不包括第二组比特315b。

图4c是根据一些实施例的校正存储器阵列400a或400b中的错误的方法400c的流程图。

方法400c是具有相似元件的图2的方法200的实施例。为了简明,方法400c应用于图4a-图4b中的字w[3]和字sw[3]’和s[3],但是在一些实施例中,方法400c可应用于第一存储器阵列402和第二存储器阵列404或406中的每行存储器单元。

在方法400c的操作402’中,存储器阵列400a(图4a)被划分为第一存储器阵列402和第二存储器阵列404。在一些实施例中,存储器阵列400b(图4b)划分为第一存储器阵列402和第二存储器阵列406。

方法400c继续操作404’,其中,将数据存储在第一存储器阵列402中。在一些实施例中,存储在第一存储器阵列402中的数据是第一组比特315a。在一些实施例中,存储在第一存储器阵列402中的数据是字w[3]的部分。在一些实施例中,ic102配置为将数据存储在第一存储器阵列402中。在一些实施例中,配置系统104配置为将数据存储在第一存储器阵列402中。

方法400c继续操作406’,其中,第一存储器阵列402配置有第一ecc330以给提供存储在第一存储器阵列402中的数据的错误校正。在一些实施例中,第一ecc330配置为提供存储在第一存储器阵列402中的数据(例如,第一组比特315a)的错误校正。在一些实施例中,配置系统104配置为具有第一ecc330的第一存储器阵列402。第一ecc330作为第二组比特315b存储在第一存储器阵列402中。

方法400c继续操作408’,其中,第二存储器阵列404(图4a)的第一部分404a配置有第一奇偶校验420。第一奇偶校验420配置为提供存储在第一存储器阵列402的行中的数据的错误检测。在一些实施例中,操作408’应用于图4b的存储器阵列400b,其中第二存储器阵列406的第一部分406a配置有第一奇偶校验424。在一些实施例中,第二存储器阵列404的第一部分404a包括配置为存储第一组数据p(例如,第一奇偶校验420)的第二组存储器单元。在一些实施例中,第二存储器阵列406的第一部分406a包括配置为存储第一组数据(例如,用于字w[3]的第一组比特435a)的第二组存储器单元。

方法400c继续操作410’,其中,第二存储器阵列404的第二部分404b配置有第二奇偶校验422。第二奇偶校验422配置为提供存储在第一存储器阵列402的列中的数据提供错误检测。在一些实施例中,操作410’应用于图4b的存储器阵列400b,其中第二存储器阵列406的第二部分406b配置有第二奇偶校验422。在一些实施例中,第二存储器阵列404的第二部分404b或第二存储器阵列406的第二部分406b包括配置为存储第二组数据(例如,用于字sw[3]’的第一组比特425a)的第三组存储器单元。

方法400c继续操作412’,其中,图4b的第二存储器阵列404的第二部分404b配置有第二ecc432以提供存储在第二存储器阵列404中的数据(例如,第一组比特425a)的错误校正。在一些实施例中,配置系统104配置具有第二ecc432(例如,第二组比特425b)的第二存储器阵列404。在一些实施例中,操作412’应用于图4b的存储器阵列400b,其中第二存储器阵列406的第二部分406b配置有第二ecc432以提供存储在第二存储器阵列406中的数据(例如,第一组比特425a)的错误校正。

方法400c继续操作414’,其中,图4b的第二存储器阵列406的第一部分406a配置有第三ecc434以提供存储在第二存储器阵列406的第一部分406a中的第一组数据(例如,第一组比特435a)的错误校正。在一些实施例中,第一组比特435a是一组奇偶校验位。

在一些实施例中,第一ecc330、第二ecc432或第三ecc434包括汉明ecc、里德-所罗门ecc、bch码等。其他ecc在各个实施例的范围内。在一些实施例中,配置系统104配置具有第三ecc434(例如,第二组比特435b)第二存储器阵列406。操作404’、406’、408’、410’、412’和414’是操作202(图2)的实施例。

方法400c继续操作416’,其中,对第一存储器阵列402和第二存储器阵列404或406实施回流工艺。操作416’的回流工艺是操作204(图2)的回流工艺。在一些实施例中,操作416’的回流工艺损坏存储在第一存储器阵列402中的数据的部分。在一些实施例中,在回流工艺之前损坏存储在第一存储器阵列402中的数据的部分。在一些实施例中,操作416’的回流工艺损坏第一存储器阵列402中的存储器单元,从而使得损坏的存储器单元不能正常工作。

方法400c继续操作418’,其中,至少基于(1)第一ecc330或(2)第一奇偶校验420和第二奇偶校验422来校正存储在第一存储器阵列402中的数据(例如,字w[3]或第一组比特315a)的至少部分。在一些实施例中,操作418’的校正数据包括第一组比特315a和第二组比特315b。

在一些实施例中,第一ecc330是n比特ecc,其中n是与在第一组存储器字w的至少一个字中由第一ecc330提供错误保护的比特数相对应的正整数。在一些实施例中,操作418’包括基于第一ecc330校正第一组字w的字中的n比特误码,并且基于第一奇偶校验420(或图4b中的第一奇偶校验424)和第二奇偶校验422的组合来校正第一组字w的字中的单比特误码。在一些实施例中,第一奇偶校验420(或图4b中的第一奇偶校验424)和第二奇偶校验422共同提供1比特-5比特的错误保护。

在一些实施例中,如果第一存储器阵列402中的第一组字w的字的至少部分中的错误数量小于或等于n比特,则基于第一ecc330来校正存储在第一存储器阵列402中的第一组字w的字处的数据(例如,第一组比特315a)。例如,在一些实施例中,如果第一存储器阵列302中的第一组字w的字w[3]中的错误数量小于或等于n比特,则基于第一ecc330来校正存储在第一存储器阵列402中的字w[3](例如,第一组比特315a)处的数据的至少部分。

在一些实施例中,如果第一存储器阵列402中的第一组字w的字的至少部分中的错误数量大于n比特且小于或等于n+1位,则第一ecc校正第一存储器阵列402中的第一组字的字中的n比特误码,并且第一奇偶校验420(或图4b中的第一奇偶校验424)和第二奇偶校验422的组合校正第一存储器阵列402中的第一组字的字中的比特误码。

方法400c继续操作420’,其中,基于第三ecc434校正存储在第二存储器阵列406的第一部分406a中的第一组数据(例如,第一组比特435a)。在一些实施例中,操作414’和420’不应用于图4a的存储器阵列400a。

方法400c继续操作422’,其中,基于第二ecc432校正存储在图4a的第二存储器阵列404的第二部分404b中的第二组数据(例如,第一组比特425a)。在一些实施例中,操作422’应用于图4b的存储器阵列400b,其中,基于第二ecc432校正存储在图4b的第二存储器阵列406的第二部分406b中的第二组数据(例如,第一组比特425a)。

方法400c继续操作424’,其中,释放第二存储器阵列404或第二存储器阵列406的至少部分。在一些实施例中,操作424’包括将第二存储器阵列404或第二存储器阵列406的至少部分指定为可由ic102或其他电路写入的存储器单元。在一些实施例中,操作402’、406’、414’、420’、422’或424’中的一个或多个是可选的。

图5a是根据一些实施例的存储器阵列500的示图。

存储器阵列500是图1的存储器阵列102a的实施例。存储器阵列500a是图3a的存储器阵列300的变型。存储器阵列500a包括代替第一存储器阵列302的第一存储器阵列502和代替第二存储器阵列304的第二存储器阵列504。

第一存储器阵列502是第一存储器阵列302(图3)。第二存储器阵列504是第二存储器阵列304(图3)的变型。第二存储器阵列504包括第一部分504a和第二部分504b。

在一些实施例中,第一部分504a或第二部分504b是第一存储器阵列502的副本。在一些实施例中,第一部分504a是第二部分504b的副本。在一些实施例中,第二存储器阵列504包括偶数(例如,整数k是偶数)个第一存储器阵列502的副本。在一些实施例中,存储在第二存储器阵列504中的数据包括第一存储器阵列502中的数据的偶数(例如,整数k是偶数)个副本。

第一部分504a包括布置为多行和多列的第二组存储器单元。第二组存储器单元中的每行存储器单元包括第二组存储器字。为了说明,示出存储器单元的一行525,但是行525的教导可应用于第二存储器阵列504的第一部分504a中的每行存储器单元。第二组存储器单元中的存储器单元的行525包括第二组存储器字w[1]’、w[2]’、w[3]’或w[4]’(统称为字“w’”)。在一些实施例中,第二组存储器单元中的每行存储器单元在第一存储器阵列502中的第一组存储器单元中具有对应行的存储器单元。一行中的字w’的常用数量包括8、16、32、或64等。第二组存储器单元的一行存储器单元中的不同数量的字w’在各个实施例的范围内。第二组存储器字w’的每个字包括多个存储器单元或多个存储器比特。字w[3]’包括第一组比特525a和第二组比特525b。为了简明,未示出字w[1]’、w[2]’和w[4]’中的存储器比特。第二组字w’中的每个字在第一组字w中具有对应的字。

在一些实施例中,第二组字w’中的每个字配置有第二ecc530以提供第二组字w’中的字的至少对应部分的错误校正。为了简明,未示出每个w[1]’、w[2]’和w[4]’中的第二个ecc530。

第一组比特525a包括比特f1、...、fx,其中x是与字w[3]’的第一组比特525a中的数据比特数相对应的正整数。

第二组比特525b包括位g1、...、gz,其中z是与第二组比特525b中的比特数相对应的正整数。第二组比特525b称为第二ecc530,该第二ecc530配置为提供字w[3]’的第一组比特525a中n比特错误校正,其中n是正整数。在一些实施例中,第一存储器阵列502未配置有第一ecc330并且第一部分504a未配置有第二ecc530。在一些实施例中,第一组字w中的每个字不包括第二组比特525b并且第二组字w’中的每个字不包括第二组比特525b。

在一些实施例中,第二部分504b是第一部分504a的副本。第二部分504b包括布置为多行和多列的第三组存储器单元。第三组存储器单元中的每行存储器单元包括第三组存储器字。为了说明,示出存储器单元的一行535,但是行535的教导可应用于第二存储器阵列504的第二部分504b中的每行存储器单元。第三组存储器单元中的存储器单元的行535包括第三组存储器字w[1]”、w[2]”、w[3]”或w[4]”(统称为字“w””)。在一些实施例中,第三组存储器单元中的每行存储器单元在第一存储器阵列502的第一组存储器单元中或者在第二存储器阵列504的第一部分504a中的第二组存储器单元中具有对应行的存储器单元。一行中的字w”的常用数量包括8、16、32、64等。第三组存储器单元的一行存储器单元中的不同数量的字w”在各个实施例的范围内。第三组存储器字w”的每个字包括多个存储器单元或多个存储器比特。字w[3]”包括第一组比特535a和第二组比特535b。为了简明,未示出字w[1]”、w[2]”和w[4]”中的存储器比特。第三组字w”中的每个字在第一组字w或第二组字w’中具有对应的字。

第一组比特535a包括位f1’...、fx’,其中x’是与字w[3]”的第一组比特535a中的数据比特数相对应的正整数。

第二组比特535b包括位g1’...、gz’,其中z’是与第二组比特535b中的比特数相对应的正整数。第二组比特535b称为第三ecc530,该第三ecc530配置为提供字w[3]”的第一组比特535a的n比特错误校正,其中n是正整数。在一些实施例中,第一部分504a和第二部分504b是第一存储器阵列502的副本。在一些实施例中,第一存储器阵列502未配置有第一ecc330,至少第一部分504b未配置有第二ecc530或者第二部分504b未配置有第三ecc532。在一些实施例中,第一组字w中的每个字不包括第二组比特315b,至少第二组字w’中的每个字不包括第二组比特525b或者第三组字w”中的每个字不包括第二组比特535b。

在一些实施例中,行525或535是行315的副本。在一些实施例中,字w[3]’或w[3]”是字w[3]的副本。在一些实施例中,第一组比特525a或535a是第一组比特315a的副本。在一些实施例中,第二组比特525b或535b是第二组比特315b的副本。

在一些实施例中,第一ecc330、第二ecc530或第三ecc532中的至少一个与第一ecc330、第二ecc530或第三ecc532中的另一个是相同类型的ecc。在一些实施例中,第一ecc330、第二ecc530或第三ecc532中的至少一个与第一ecc330、第二ecc530或第三ecc532中的另一个是不同类型的ecc。在一些实施例中,第二ecc530或第三ecc532包括汉明ecc、里德-所罗门ecc、bch码等。其他ecc在各个实施例的范围内。在一些实施例中,第二存储器阵列504的大小比第一存储器阵列502的大小大至少66%。

图5b是根据一些实施例的校正存储器阵列500中的错误的方法500'的流程图。

方法500'是具有类似元件的图2的方法200的实施例。为了简明,方法500’应用于图5a中的字w[3]、字w[3]’和字w[3]”。但是,方法500’可应用于第一存储器阵列502或第二存储器阵列504中的每行存储器单元。

在方法500’的操作502’中,将存储器阵列500(图5a)划分为第一存储器阵列502和第二存储器阵列504。在一些实施例中,操作502’包括将第二存储器阵列504划分为偶数(例如,偶数k)个部分(例如,在图5a-图5c中是k等于2的第一部分504a和第二部分504b)。在一些实施例中,第一存储器阵列502的大小小于或等于第二存储器阵列504的大小的1/kth

方法500’继续操作504’,其中,将一组数据(例如,第一组比特315a)存储在第一存储器阵列502中。在一些实施例中,存储在第一存储器阵列502中的该组数据(例如,第一组比特315a)是字w[3]的部分。在一些实施例中,ic102配置为将该组数据(例如,第一组比特315a)存储在第一存储器阵列502中。在一些实施例中,配置系统104配置为将该组数据(例如,第一组比特315a)存储在第一存储器阵列502中。

在一些实施例中,该组数据(例如,第一组比特315a)包括第一存储器阵列502中的存储器单元的地址。

方法500’继续操作506’,其中,第一存储器阵列502配置有第一ecc330以提供存储在第一存储器阵列502中的该组数据(例如,第一组比特315a)的错误校正,从而生成第一组数据(例如,第一组比特315a和第二组比特315b)。在一些实施例中,配置系统104配置具有第一ecc330第一存储器阵列502。第一ecc330作为第二组比特315b存储在第一存储器阵列502中。在一些实施例中,第一组数据包括第一组比特315a和315b。在一些实施例中,操作506’是可选地。例如,在一些实施例中,第一存储器阵列502没有配置第一ecc330,因此,方法500’的第一组数据对应于该组数据。

方法500’继续操作508’,其中,将第二组数据存储在第二存储器阵列504中。在一些实施例中,第二组数据至少包括第一组数据的副本(类,第一组比特315a和第二组比特315b)。

在一些实施例中,第二组数据至少包括第一组比特525a或第一组比特535a。在一些实施例中,至少第一存储器阵列502配置有第一ecc330,第二存储器阵列的第一部分504a或第二部分504b配置ecc保护(例如,第二ecc530或第三ecc532)。在一些实施例中,如果第二组存储器阵列的第一部分504a或第二部分504b配置有ecc保护,则第二组数据至少包括第一组比特525a、第一组比特535a、第二组比特525b或第二组比特535b。在一些实施例中,第一存储器阵列502没有配置第一ecc330,因此,在这些实施例中,方法500’的第二组数据没有ecc保护。在一些实施例中,如果第二组数据没有配置ecc保护,则第二组数据不包括第二组比特525b或535b中的一个或多个。

在一些实施例中,第二存储器阵列504的尺寸s2和第一存储器阵列502的尺寸s1之间的关系通过以下公式2或3表示:

s2<2*s1(2)

s2≥k*s1(3)

其中,k为偶数。

在一些实施例中,如果第二存储器阵列504的尺寸s2满足公式2,则操作508’包括将第一组数据的副本作为第二组数据存储在第二存储器阵列504中。在一些实施例中,如果第二存储器阵列504的尺寸s2满足公式3,则操作508’包括将第二存储器阵列504划分为偶数个(例如,偶数k)部分(例如,在图5a至5c中,偶数k等于3的第一部分504s和第二部分504b),并且将第一组数据的副本保存在第二存储器阵列504的每个对应部分中(例如,第一部分504a和第二部分504b)。在一些实施例中,第二组数据包括第一组数据(例如,第一组比特315a)的偶数(例如,偶数k)个副本。在一些实施例中,第二组数据包括存储在至少字w[3]中的数据的偶数个(例如,偶数k)副本。

方法500’继续操作510’,其中(i)对第一存储器阵列502和第二存储器阵列504实施回流工艺。操作510’的回流工艺是图2的操作204、图3b的操作310’或者图4c的操作416’的回流工艺。在一些实施例中,操作510’的回流工艺损害存储在第一存储器阵列502或第二存储器阵列504中的数据的部分。在一些实施例中,操作510’的回流工艺损害第一存储器阵列502或第二存储器阵列504中的存储器单元,使得损害的存储器单元无法适当地存储数据。

方法500’继续操作512’,其中恢复存储在第一存储器阵列502中的第一组数据(例如,第一组比特315a和第二组比特315b)的部分。在一些实施例中,恢复的第一组数据为输出信号out_f(图5c)。在一些实施例中,恢复的第一组数据具有恢复的ecc(如果可用的话)。在一些实施例中,基于第一组数据(例如,第一组比特315a和第二组比特315b)和第二组数据(例如,第一组比特525a或535a或者第二组比特525b或535b)的多数投票电路(majorityvotingcircuit)来生成操作512’的恢复的第一组数据(例如,输出信号out_f(图5c))。在第一实施例中,恢复的第一组数据至少包括第一组数据的部分。在一些实施例中,恢复的第一组数据至少包括第一组比特315a的校正版本或者第一ecc330的校正版本。

在一些实施例中,在实施操作512’的多比特投票的l模块冗余系统中配置第一阵列502和第二阵列504,其中l是与l模块冗余系统中的冗余元件的数量相对应的正整数。例如,在一些实施例中,如果整数l等于3,则在实施操作512’的多比特投票的三模块冗余系统550(图5c所示)中配置第一阵列502和第二阵列504。在一些实施例中,整数l等于操作502’或508’的整数k+1。在一些实施例中,在l模块冗余系统中,对于每比特数据,如果来自l系统(例如,第一存储器阵列502和第二存储器阵列504)中的一个的数据不正确,则来自剩余l-系统(例如,第一存储器阵列502和第二存储器阵列504)的数据用于校正不正确的数据。在一些实施例中,对于第一组数据和第二组数据,逐位地实施操作512’的多比特投票。

在一些实施例中,操作512’包括对于每比特数据,通过至少实施第一组数据和第二组数据之间的一个and运算来生成第一组输出信号,以及对第一组输出信号实施or运算。

在一些实施例中,第一组数据的第一ecc330或者第二组数据的第二ecc530不包含任何错误并且没有被恢复或校正。在一些实施例中,第一组数据的第一ecc330或者第二组数据的第二ecc530包含错误并且通过ic102中的ecc引擎(未示出)进行恢复或校正。在一些实施例中,如果第二存储器阵列504的尺寸s2满足公式2,则第一组数据和第二组数据包括一个或多个错误(如果它们包含不同数据)。在这些实施例中,如果第二组数据中的错误数量小于第二组数据中的错误数量,则将第二组数据(例如,第一组比特525a和恢复的ecc530)复制到第一存储器单元阵列502中作为恢复的第一组数据。在这些实施例中,如果第一组数据的错误数量小于第二组数据的错误数量,则第一组数据(例如,第一组比特325a和恢复的第一ecc530)对应于恢复的第一组数据。在这些实施例中,如果没有恢复ecc,则第一ecc330或者第二ecc530替换恢复的ecc。

方法500’继续操作514’,其中基于ecc(例如第一ecc330,第二ecc530或第三ecc532)校正存储在第一存储器阵列502中的恢复的第一组数据(例如,输出信号out_f(图5c))的部分。在一些实施例中,操作514’的ecc是恢复的ecc。在一些实施例中,如果在操作512’中没有校正第一ecc330,则基于第一ecc330恢复或校正恢复的第一组数据(例如,输出信号out_f(图5c))的部分。

在一些实施例中,操作514’的恢复的第一组数据至少包括第一组比特315a的部分和第二组比特315b的部分。在一些实施例中,恢复的第一组数据包括第一存储器阵列502中的第一组字w中的字。在一些实施例中,如果第一存储器阵列502的第一组字w中的至少部分字的中的错误数量小于或等于n比特,则基于恢复的第一ecc330来校正存储在第一存储器阵列502中的第一组字w的字处的数据(例如,第一组比特315a)。在一些实施例中,如果第一存储器阵列502的第一组字w的至少一部分字中的错误数量大于n比特,则不基于恢复的第一ecc330校正存储在第一存储器阵列502中的第一组字的字处的数据(例如,第一组比特315a或第二组比特315b)。

方法500’继续操作524’,其中,释放第二存储器阵列504的至少部分。在一些实施例中,操作524’包括将第二存储器阵列504的至少部分指定为能够由ic102或其他电路写入的存储器单元。

在一些实施例中,操作502’、506’-514’或516’中的一个或多个是可选的。

应当理解,可以在图3b所示的方法300’、图4c所示的方法400’图5所示的方法500’或图6的方法600之前、期间和/或之后实施附加的操作,并且因此本文仅简要描述一些其他操作。

图5c是根据一些实施例的系统550的框图。

系统550包括电连接至第一存储器阵列502、第二存储器阵列504的第一部分504a和第二存储器阵列504的第二部分504b中的每个的多数投票电路560。在一些实施例中,系统550包括其他电路或配置为存储或执行软件,为了简明,未示出。系统550是图1的ic102的部分。在一些实施例中,系统550是图1的配置系统104的部分。

当整数k和l等于3时,系统550是配置为实施图5b的操作520’的多比特投票的三模式冗余系统。在一些实施例中,系统550配置为修复或检测存储在第一存储器阵列502中的数据的错误。

第一存储器阵列502配置为存储输入数据in1。在一些实施例中,输入数据in1是操作504’的第一组数据。

第二存储器阵列504的第一部分504a配置为存储输入数据in1的第一副本in2。第二存储器阵列504的第二部分504b配置为存储输入数据in1的第二副本in3。在一些实施例中,第一副本in2和第二副本in3是操作508’的第二组数据。

通过系统550对存储在第一存储器阵列502和第一部分504a和第二部分504b中的数据实施读取操作。在一些实施例中,多数投票电路560配置为对第一存储器阵列502、第一部分504a和第二部分504b实施读取操作。

多数投票电路560配置为接收信号out1、out2和out3。信号out1、out2和out3是从对应的第一存储器阵列502、第一部分504a和第二部分504b读取的数据。多数投票电路560配置为基于输入信号out1、out2和out3生成输出信号out_f。多数投票电路560是逻辑电路,该多比特投票电路配置为逐位确定(或校正)如果存储在第一存储器阵列502、第一部分504a和第二部分504b中的数据中是否存在错误。输出信号out_f是由“0”表示的低逻辑值或由“1”表示的高逻辑值。

在一些实施例中,多数投票电路560配置为比较第一存储器阵列502和第二存储器阵列504中数据的每比特以确定存储在第一存储器阵列502、第一部分504a和第二部分504b中的数据是否存在错误。在一些实施例中,对于每个比特数据,如果存储在第一存储器阵列502和第二存储器阵列504中的比特数据损坏或彼此不一致,则利用其他两个存储器阵列中的正确数据来校正该不一致或错误。

在一些实施例中,多数投票电路560是配置为生成输出信号out_f的and-or逻辑电路。在这些实施例中,输出信号out_f等于公式4的表达式:

out_f=(out1andout2)or(out2andout3)or(out1andout3)(4)

在这些实施例中,对于存储在第一存储器阵列502中的输入数据in1中的每比特,多数投票电路560检测并校正输入数据in1、第一副本in2或第二副本in3中的单比特错误。在一些实施例中,对于存储在第一存储器阵列502中的比特数据,如果信号out1、out2或out3中的两个或多个是逻辑“1”,则多数投票电路560的输出信号out_f是逻辑“1”。在一些实施例中,对于存储在第一存储器阵列502中的比特数据,如果信号out1、out2或out3中的两个或多个是逻辑“0”,则多数投票电路560的输出信号out_f是逻辑“0”。例如,在这些实施例中,如果输入数据in1、第一副本in2、第二副本in2、out1、out2和out3彼此相等,则输出信号out_f等于信号out1、out2或out3,并且信号out1、out2和out3中不存在错误。在这些实施例中,如果输入数据in1、第一副本in2、第二副本in2、out1、out2或out3中存在单比特误码,则信号out1、out2或out3中的一个将与信号out1、out2或out3中的另一个具有不同的值,但是多数投票电路560将基于由公式4表示的and-or逻辑运算来校正单个错误。

图6是根据一些实施例的校正存储器阵列500中的错误的方法600的流程图。

操作600是具有类似元件的图2的方法200的实施例。为了简明,方法600应用于图5a中的字w[3]、字w[3]’和字w[3]”,但是在一些实施例中,方法600可应用于第一存储器阵列502或第二存储器阵列504中的每行存储器单元。方法600是图5b的方法500’的变型。

在方法600的操作602中,将一组数据(例如,第一组比特315a)存储在存储器阵列500的第一存储器阵列502中。在一些实施例中,存储在第一存储器阵列502中的一组数据(例如,第一组比特315a)是字w[3]的部分。在一些实施例中,ic102配置为将一组数据(例如,第一组比特315a)存储在第一存储器阵列502中。在一些实施例中,配置系统104配置为将一组数据(例如,第一组比特315a)存储在第一存储器阵列502中。在一些实施例中,存储在第一存储器阵列502中的一组数据(例如,第一组比特315a)是第一数据类型。在一些实施例中,第一数据类型是一组高逻辑值或“1”。在一些实施例中,第一数据类型是一组低逻辑值或“0”。

方法600继续操作604,其中(i)对存储器阵列500实施烘焙工艺,或(ii)将磁场施加到存储器阵列500。

在一些实施例中,烘焙工艺包括将存储器阵列500放置到烘箱中,并且在温度t2处将烘箱加热持续时间d2。在一些实施例中,在温度t2处将烘箱加热持续时间d2包括在温度t2处加热存储器阵列500。在一些实施例中,操作606的烘焙工艺的温度t2大于或等于方法500’的操作510’的回流工艺的温度t1。在一些实施例中,操作606的烘焙工艺的持续时间d2大于或等于方法500’的操作510’的回流工艺的持续时间d1。

在一些实施例中,施加到存储器阵列500的磁场的强度在约500奥斯特(oe)至约2000oe的范围内。在一些实施例中,施加到存储器阵列500的磁场的持续时间d2为约1秒至约10秒。

方法600继续操作606,其中确定一组数据(例如,第一组比特315a)的至少部分是否通过操作604的烘焙工艺或施加的磁场而改变。如果一组数据(例如,第一组比特315a)的至少部分确定为已经通过烘焙工艺或所施加的磁场而改变,则方法600进行至操作608。如果确定一组数据(例如,第一组比特315a)未通过烘焙工艺或施加的磁场而改变,则方法600进行至操作612。在一些实施例中,包括改变的数据的一个或多个存储单元称为第一存储器阵列502的第一组存储器单元。

在一些实施例中,改变的一组数据包括与该组数据中的比特的逻辑值具有相反逻辑值的一组比特。例如,在一些实施例中,如果该组数据对应于一组高逻辑值,则改变的一组数据包括具有低逻辑值的一组比特。类似地,在一些实施例中,如果该组数据对应于一组低逻辑值,则改变的一组数据包括具有高逻辑值的一组比特。

方法600继续操作608,其中跟踪至少存储改变的数据的第一组存储单元中的存储单元的地址。在一些实施例中,将跟踪的存储器单元的地址记录在数据库中(例如,系统700的存储器704(图7))。在一些实施例中,包括改变的数据的存储器单元称为“弱比特”。

方法600继续操作610,其中利用第二存储器阵列中的对应存储器单元替换存储改变的数据的第一组存储器单元中的存储器单元,或者丢弃存储改变的数据的第一组存储单元中的存储器单元。在一些实施例中,丢弃的存储器单元是在第一存储器阵列502中未使用的存储器单元。在一些实施例中,丢弃的存储器单元是从ic102去除的存储器单元。在一些实施例中,对存储改变的数据的第一组存储器单元中的每个存储器单元重复操作606、608和610。

在一些实施例中,操作602-610用于筛选出第一存储器阵列502中描述为“弱比特”的存储器单元。在一些实施例中,重复操作602-610。例如,在一些实施例中,将操作602-610应用于存储器阵列500,当一组数据对应于一组高逻辑值时,筛选出第一存储器阵列502中的易于通过操作604的烘焙工艺或磁场从高逻辑值转换到低逻辑值的存储器单元。在这些实施例中,操作602-610再次应用于存储器阵列500,但是该组数据对应于一组低逻辑值,以筛选出易于通过操作604的烘焙工艺或磁场从低逻辑值转换到高逻辑值的存储器单元。该组数据的其他配置在本发明的范围内。

在一些实施例中,当重复操作602-610时,第一次重复的烘焙工艺与第二次重复的烘焙工艺相同。在一些实施例中,当重复操作602-610时,第一次重复的烘焙工艺与第二次重复的烘焙工艺不同。在一些实施例中,当重复操作602-610时,第一次重复施加的磁场与第二次重复施加的磁场相同。在一些实施例中,当重复操作602-610时,第一次重复施加的磁场与第二次重复施加的磁场不同。烘焙工艺或施加磁场的其他配置在本发明的范围内。

方法600继续操作612。在一些实施例中,方法600的操作612对应于图5b的校正存储器阵列500中的错误的方法500’。

方法600可以识别并筛选出存储器阵列500中的导致存储器阵列500具有比其他方法更低的ber和更低的现场返修率的弱比特。

方法200、300’、400c、500’或600的操作的顺序仅用于说明;能够以不同于对应图2、图3b、图4c、图5b或图6所示的顺序执行200、300’、400c、500’或600的操作。在一些实施例中,可以在图2、图3b、图4c、图5b或图6所示的操作之前、期间和/或之后实施除了图2、图3b、图4c、图5b或图6所示的操作之外的操作。

图7是根据一些实施例的用于配置存储器阵列102a的系统700的框图。系统700包括硬件处理器702和非暂时性计算机可读存储介质704,非暂时性计算机可读存储介质704编码有(即,存储)计算机程序代码706(即,可执行指令集)。计算机程序代码706配置为与集成电路102连接,从而用于配置具有各种ecc配置的存储器阵列102a。处理器702通过总线708电连接至计算机可读存储介质704。处理器702还通过总线708电连接至i/o接口710。网络接口712也通过总线708电连接至处理器702。网络接口612连接至网络714,从而使得处理器702和计算机可读存储介质704能够通过网络714连接至外部元件。将处理器702配置为执行编码在计算机可读存储介质704中的计算机程序代码706,以使得系统700可用于实施方法200、300’、400c、500’或者600中描述的部分或全部的操作。在一些实施例中,系统700是图5c的系统550。

在一些实施例中,处理器702是中央处理单元(cpu)、多处理器、分布式处理系统、专用集成电路(asic)和/或合适的处理单元。

在一些实施例中,计算机可读存储介质704是电子的、磁性的、光学的、电磁的、红外的和/或半导体系统(或装置或器件)。例如,计算机可读存储介质704包括半导体或固相存储器、磁带、可移动计算机软盘、随机存取存储器(ram)、只读存储器(rom)、硬磁盘和/或光盘。在使用光盘的一些实施例中,计算机可读存储介质704包括只读光盘存储器(cd-rom)、读/写光盘(cd-r/w)和/或数字视频光盘(dvd)。

在一些实施例中,存储介质704存储计算机程序代码706,该计算机程序代码配置为使系统700实施方法200、300’、400c、500’或600。在一些实施例中,存储介质604还存储实施方法200、300’、400c、500’或600所需的信息以及在实施方法200、300’、400c、500’或600期间所生成的信息(诸如第一ecc716、第二ecc718、第三ecc720、第一奇偶校验722、第二奇偶校验724和配置726)和/或用于实施方法200、300’、400c、500’或600的操作的可执行指令集的信息。

在一些实施例中,存储介质704存储用于连接存储器件的计算机程序代码706。计算机程序代码706使得处理器702能够生成集成电路102可读取的指令以在存储器配置工艺期间有效地实施方法200、300’、400c、500’或600。

系统700包括i/o接口710。i/o接口710连接至外部电路。在一些实施例中,i/o接口710包括用于向处理器702传送信息和命令的键盘、小型键盘、鼠标、轨迹球、触控板和/或光标方向键。

系统700还包括连接至处理器702的网络接口712。网络接口712允许系统700与网络714通信,其中一个或多个其他计算机系统连接至该网络。网络接口712包括诸如蓝牙、wifi、wimax、gprs或wcdma的无线网络接口;或诸如ethernet、usb或ieee-1394的有线网络接口。在一些实施例中,在两个或多个系统700中实施方法200、300’、400c500’或600,并且通过网络714在不同的系统700之间互换诸如第一ecc、第二ecc、第三ecc、第一奇偶校验、第二奇偶校验和配置的信息。

系统700配置为通过i/o接口710或网络接口712接收与第一ecc有关的信息。信息通过总线708传送到处理器702以确定用于配置集成电路102的第一ecc。然后将第一ecc作为第一ecc716存储在计算机可读介质704中。系统700配置为通过i/o接口710或网络接口712接收与第二ecc有关的信息。该信息作为第二ecc718存储在计算机可读介质704中。系统700配置为通过i/o接口710或网络接口712接收与第三ecc有关的信息。该信息作为第三ecc720存储在计算机可读介质704中。系统700配置为通过i/o接口710或网络接口712接收与第一奇偶校验有关的信息。该信息作为第一奇偶校验722存储在计算机可读介质704中。系统700配置为通过i/o接口710或网络接口712接收与第二奇偶校验有关的信息。该信息作为第二奇偶校验724存储在计算机介质704中。系统700配置为通过i/o接口710或网络接口712接收与存储器配置有关的信息。该信息作为配置726存储在计算机可读介质704中。

本发明的一个方面涉及一种校正存储器阵列中的错误的方法。该方法包括配置具有第一ecc的第一存储器阵列以提供存储在第一存储器阵列中的数据的错误校正,配置具有第二ecc的第二存储器阵列以提供存储在第一存储器阵列中的数据的错误校正,对第一存储器阵列和第二存储器阵列实施回流工艺,以及至少基于第一ecc或第二ecc校正存储在第一存储器阵列中的数据。第一存储器阵列包括布置为多行和多列的第一组存储器单元。第一组存储器单元中的一行存储器单元包括第一组存储器字。第一组存储器字中的每个字包括第一组比特。第二存储器阵列包括布置为多行和多列的第二组存储器单元。第二组存储器单元中的一行存储器单元包括第二组存储器字。第二组存储器字中的每个字包括第二组比特。

在实施例中,所述第一存储器单元是所述存储器阵列的第一部分;以及所述第二存储器单元是所述存储器阵列的第二部分。

在实施例中,所述第一ecc是n比特ecc,其中,n是对应于所述第一组存储器字的至少一个字中由第一ecc提供的错误保护的比特数的正整数。

在实施例中,所述第二ecc是m1比特ecc,其中,m1是对应于所述第一存储器阵列中的所述第一组存储器字的至少一个字中由第二ecc提供的错误保护的比特数的正整数,并且m1大于n。

在实施例中,至少基于所述第一ecc或所述第二ecc来校正存储在所述第一存储器阵列中的数据包括:如果所述第一存储器阵列中的所述第一组字的至少一个字中的错误数量小于或等于n比特,则基于所述第一ecc校正存储在所述第一存储器阵列中的数据。

在实施例中,至少基于所述第一ecc或所述第二ecc来校正存储在所述第一存储器阵列中的数据包括:如果所述第一存储器阵列中的所述第一组字的至少一个字中的错误数量大于n比特且小于或等于m1比特,则基于所述第二ecc校正存储在所述第一存储器阵列中的数据。

在实施例中,所述第一ecc或所述第二ecc是汉明ecc、里德-所罗门ecc或bchecc。

在实施例中,校正存储器阵列中的错误的方法还包括:将所述数据存储在所述第一存储器阵列中;以及

将所述存储器阵列划分为所述第一存储器阵列和所述第二存储器阵列。

在实施例中,所述第一存储器阵列是所述存储器阵列的部分,以及所述第二存储器阵列是另一存储器阵列的部分,其中,所述另一存储器阵列与所述存储器阵列不同。

在实施例中,校正存储器阵列中的错误的方法还包括:在校正所述第一存储器阵列中的错误之后释放所述第二存储器阵列。

本发明的另一方面涉及校正存储器阵列中的错误的方法。该方法包括配置具有第一ecc的第一存储器阵列以提供存储在第一存储器阵列中的数据的错误校正,配置具有第一奇偶校验的第二存储器阵列的第一部分,该第一奇偶校验配置为提供存储在第一存储器阵列的行中的数据的错误检测,配置具有第二奇偶校验的第二存储器阵列的第二部分,该第二奇偶校验配置为提供存储在第一存储器阵列的列中的数据的错误检测,配置具有第二ecc的第二存储器阵列的第二部分以提供存储在第二存储器阵列的第二部分中的第二组数据的错误校正,对第一存储器阵列和第二存储器阵列实施回流工艺,至少基于(1)第一ecc或(2)第一奇偶校验和第二奇偶校验校正存储在第一存储器阵列中的数据的至少部分,以及基于第二ecc校正存储在第二存储器阵列的第二部分中的第二组数据。第一存储器阵列包括布置为多行和多列的第一组存储器单元。第一组存储器单元中的一行存储器单元包括第一组存储器字。第一组存储器字中的每个字包括第一组比特。第二存储器阵列的第一部分包括存储第一组数据的第二组存储器单元。第二存储器阵列的第二部分包括存储第二组数据的第三组存储器单元。

在实施例中,校正存储器阵列中的错误的方法还包括:配置具有第三ecc的所述第二存储器阵列的所述第一部分以提供存储在所述第二存储器阵列的所述第一部分中的所述第一组数据的错误校正,所述第一组数据具有第一组奇偶校验位。

在实施例中,校正存储器阵列中的错误的方法还包括:基于所述第三ecc来校正存储在所述第二存储器阵列的所述第一部分中的所述第一组数据。

在实施例中,所述第一ecc是n比特ecc,其中,n是对应于所述第一组存储器字的至少一个字中由第一ecc提供的错误保护的比特数的正整数;以及所述第二ecc是n1位ecc,其中,n1是对应于第二组数据中由第二ecc提供的错误保护的比特数的正整数,所述第二组数据具有第二组奇偶校验位。

在实施例中,所述第三ecc是n2比特ecc,其中,n2是对应于所述第一组数据中由所述第三ecc提供的错误保护的比特数的正整数。

在实施例中,基于(1)所述第一ecc或(2)所述第一奇偶校验和所述第二奇偶校验来校正存储在所述第一存储器阵列中的数据,包括:基于所述第一ecc校正所述第一组字中的字的n比特错误;以及基于所述第一奇偶校验和所述第二奇偶校验的组合来校正所述第一组字的字中的单比特错误。

本发明的又一方面涉及校正存储器阵列中的错误的方法。该方法包括配置具有第一纠错码(ecc)的第一存储器阵列以提供存储在第一存储器阵列中的第一组数据提供错误校正,将第二组数据存储在第二存储器阵列中,对第一存储器阵列和第二存储器阵列实施回流工艺,校正第一组数据,从而基于第一组数据和第二组数据的多数位投票来生成第三组数据,并且基于第一ecc校正第三组数据中的错误。第一存储器阵列包括布置为多行和多列的第一组存储器单元。第一组存储器单元中的一行存储器单元包括第一组存储器字。第一组存储器字的每个字包括第一组比特。第二组数据包括第一组数据的偶数个副本。第二存储器阵列包括布置为多行和多列的第二组存储器单元。

在实施例中,基于所述第一组数据和所述第二组数据来恢复所述第一组数据的至少部分包括:基于所述第一组数据和所述第二组数据的多数位投票来恢复所述第一组数据,包括:对于每比特数据,通过在所述第一组数据和所述第二组数据之间实施至少一次and运算来生成第一组输出信号;以及对所述第一组输出信号实施or运算。

在实施例中,所述第二组数据还包括所述第一组数据的偶数个副本。

在实施例中,所述第二组数据还包括所述第一组数据的单个副本。

在实施例中,筛选存储器阵列中的弱比特的方法,还包括:将第二组数据存储在所述第一存储器阵列中;至少对所述第一存储器阵列实施第二烘焙工艺,或者至少对所述第一存储器阵列施加第二磁场;确定存储在所述第二存储器阵列中的所述第二组数据的部分是否由所述第二烘焙工艺或所述第二磁场改变;以及如果所述第一组存储器单元中的第二存储器单元存储改变的数据,则跟踪所述第一组存储器单元的至少所述第二存储器单元的地址,并且实施以下操作中的至少一个:(1)利用所述存储器阵列的所述第二存储器阵列中的对应存储器单元替换存储所述改变的数据的所述第一组存储器单元中的所述第二存储器单元,或(2)丢弃存储所述改变的数据的所述第一组存储器单元中的所述第二存储器单元。

在实施例中,所述第一组数据在逻辑上与所述第二组数据相反。

在实施例中,所述第一组数据的每个成员是低逻辑值或高逻辑值。

在实施例中,实施所述第一烘焙工艺包括将所述存储器阵列放置到烘箱中,并在第一温度下将所述烘箱加热第一持续时间;实施所述第二烘焙工艺包括将所述存储器阵列放置到所述烘箱中,并在第二温度下将所述烘箱加热第二持续时间,并且符合下列条件中的至少一个:(1)所述第一温度与所述第二温度相等;或(2)所述第一持续时间与所述第二持续时间相等。

在实施例中,施加所述第一磁场包括施加具有第一强度的所述第一磁场第一持续时间,以及施加所述第二磁场包括施加具有第二强度的所述第二磁场第二持续时间,以及符合下列条件中的至少一个:(1)所述第一强度与所述第二强度相等;或(2)所述第一持续时间与所述第二持续时间相等。

在实施例中,基于所述第一组数据和所述第二组数据来恢复所述第一组数据的至少所述部分包括:基于所述第一组数据和所述第二组数据的多数位投票来恢复所述第一组数据。

在实施例中,基于所述第一组数据和所述第二组数据的所述多数位投票来恢复所述第一组数据包括:对于每比特数据,通过在所述第一组数据和所述第二组数据之间实施至少一次and运算来生成第一组输出信号;以及对所述第一组输出信号实施or运算。

上面概述了若干实施例的特征,使得本领域技术人员可以更好地理解本发明的各方面。本领域技术人员应该理解,他们可以容易地使用本发明作为基础来设计或修改用于实施与在此所介绍实施例相同的目的和/或实现相同优势的其他工艺和结构。本领域技术人员也应该意识到,这种等同构造并不背离本发明的精神和范围,并且在不背离本发明的精神和范围的情况下,在此他们可以做出多种变化、替换以及改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1