纠错码电路

申请号 CN02104497.X 申请日 2002-03-25 公开(公告)号 CN1409492A 公开(公告)日 2003-04-09
申请人 萧正杰; 发明人 萧正杰;
摘要 本 发明 公开了一种方法,用于改变纠错码(ECC)逻辑 电路 的配置以对数据宽度不断变化的数据进行错误检验。该方法包括如下步骤:A)顺序地互连一组N1个相同的错误检验 块 ,其中N1是第一个正整数。并且,该方法还包括一个步骤:B)通过将纠错码 逻辑电路 改变为一组由N2个相同的错误检验块顺序互连组成的电路来对纠错码逻辑电路进行重新配置,其中N2为第二个正整数。在优先 权利要求 当中,顺序地互连一组N1个相同的错误检验块这一步指的是互连只介于顺序相邻两个用于传输只介于相邻两个错误检验块之间 信号 的块之间的N1个错误检验块。另外,通过将纠错码逻辑电路改变为一组由N2个相同的错误检验块顺序互连组成的电路来对纠错码逻辑电路进行重新配置这一步指的是互连只介于顺序相邻两个用于传输只介于相邻两个错误检验块之间信号的块之间的N2个错误检验块。
权利要求

1.一种用于改变纠错码(ECC)逻辑电路配置的方法,以便于对数据宽度不断 变化的数据进行错误检验,该方法包含:
顺序互连一组N1个相同的错误检验,其中N1是第一个正整数;并且
通过将上述的纠错码逻辑电路改变为一组由N2个上述的相同的错误检验块顺序 互连组成的电路来对上述的纠错码逻辑电路进行重新配置,其中N2为第二个正整 数。
2.在权利要求1所述的方法当中:
上述的顺序地互连一组N1个相同的错误检验块这一步指的是互连上述的只介于 顺序相邻两个用于传输只介于相邻两个错误检验块之间信号的块之间的N1个错误检 验块;另外
上述的通过将上述的纠错码逻辑电路改变为一组由N2个错误检验块顺序互连组 成的电路来对上述的纠错码逻辑电路进行重新配置这一步指的是互连上述的只介于 顺序相邻两个用于传输只介于相邻两个错误检验块之间信号的块之间的N2个错误检 验块。
3.一种对由大量存储单元所组成的存储设备进行操作的方法,该方法包含:
对上述的存储单元进行错误检验;以及
对存储有错误数据位的存储单元进行修复。
4.在权利要求3所述的方法当中:
上述的对出错存储单元进行修复这一步进一步包含通过把正确数据位写入到上 述的出错存储单元中来自动对上述的出错存储单元进行修复这一步。
5.一种由大量存储单元组成的存储设备,每个存储单元有一个浮动栅,用于在 里面存储大量的电荷,所述存储设备进一步包含:
一个由一组相同错误检验块顺序互连组成的用于检验上述存储单元数据存储是 否有错的错误检验逻辑电路。
6.如权利要求5所述的存储设备,进一步包含:
一个多级电压装置,用于给上述的浮动栅供应至少两个电荷平以代表至少两 个存储在上述的存储单元中的数据位。
7.如权利要求6所述的存储设备,进一步包含:
一个多级电荷读出装置,用于读出至少两个存储在上述的浮动栅中的电荷水平 以检测至少两个存储在上述的存储单元中的二进制位。
8.在权利要求7所述的存储设备中:
上述的多级电荷读出装置还进一步包括一个位组合格式装置,其用途是根据上 述的多级电荷读出装置读出的电荷水平来形成位组合格式。
9.在权利要求7所述的存储设备中:
上述的位组合格式装置还进一步被用来依据上述的电荷水平而形成一列位组合 格式,其中,依据第一级电荷水平形成的位组合格式与依据跟第一级电荷水平顺序 相邻的第二级电荷水平形成的位组合格式只有一个数据位不同。
10.一种由大量存储单元所组成的存储设备,每个存储单元具有至少两种存储 单元特征状态,每种存储单元特征状态代表一种存储于其中的位组合格式,上述的 存储设备还进一步包含:
一个由一组相同错误检验块顺序互连组成的用于检验上述存储单元数据存储是 否有错的错误检验逻辑电路。
11.一种按内容寻址的存储器(CAM)设备,该CAM设备包含大量存储单元阵 列,用于存储阵列内容,在查询内容与阵列内容相匹配的基础上,阵列内容可以用 来对某个阵列进行数据存取。上述的CAM设备进一步还包含:
一个错误检验逻辑电路,用于检验上述的每个存储单元阵列的数据存取是否有 错。
12.如权利要求11所述的按内容寻址的存储器(CAM)设备,进一步还包含:
一个错码存储装置,用于存储由上述的用于检验上述的各个存储单元阵列的数 据存取是否有错的错误检验逻辑电路所使用的上述的各个存储单元阵列的错码检验 位。
13.在权利要求11所述的按内容寻址的存储器(CAM)设备当中:
上述的每个存储单元阵列还进一步存储了一个由上述的用于检验上述的各个存 储单元阵列的数据存取是否有错的错误检验逻辑电路所生成的错码检验位。
14.在权利要求11所述的按内容寻址的存储器(CAM)设备当中:
上述的错码存储装置是一种随机存取存储器(RAM)设备,用于存储由上述的 用于检验上述的各个存储单元阵列的数据存取是否有错的错误检验逻辑电路所使用 的上述的各个存储单元阵列的错码检验位。
15.一种由大量存储单元组成的存储设备,每个存储单元有一个浮动栅,用于 在里面存储大量的电荷,所述存储设备进一步包含:
一个多级电荷读出装置,用于读出至少两个存储在上述的浮动栅中的电荷水平 作为一列电荷水平,以检测至少两个存储在上述的存储单元中的用于记录大量位组 合格式的二进制位。
上述的多级电荷读出装置还进一步包括一个位组合格式装置,其用途是根据上 述的一列电荷水平来形成一列位组合格式。其中,依据第一级电荷水平形成的位组 合格式与依据跟第一级电荷水平顺序相邻的第二级电荷水平形成的位组合格式只有 一个数据位不同。
16.一种模拟信号读出设备,包含:
一个模拟信号读出装置,用于读出一列模拟信号水平以形成一列与上述模拟信 号水平相对应的位组合格式,其中,上述的每一个信号水平均代表一种位组合格 式,和另外一个代表相邻信号水平的位组合格式相比较而言,二者只有一个数据位 不同。

说明书全文

所属技术领域

发明涉及纠错码(ECC),尤其是涉及用于数据宽度不断变化数据纠错的纠 错码电路设备及应用程序。

已有技术说明

应用纠错电路(ECC)进行数据校正是一种十分有效的用于提高数据完整性的 方法。这种方法广泛应用于通信系统以及数据存贮设备的应用程序当中。图1示出 的是一种纠错码计算器的系统方框图,通过它可以说明纠错码的运算原理。这种纠 错码计算器以预先确定的具有固定位数的数据包(在本示例当中为64位)为工作 对象。来自原始数据包的被选位被发送到多个奇偶检验树(本示例当中为8个)。 用于计算不同数据子集的奇偶性。每个数据子集大约由数据包数据位的一半组成。 而且每个子集当中的数据都与其它子集当中的数据存在部分重叠。最后得出来的奇 偶检验位(也称为纠错码位)将与原始数据一起被传输或者存储。由于采用这样的 构形来选择数据子集,因而,当在数据传输过程中有错误被引入到原始数据中时。 可以通过比较由同样奇偶计算方法计算得到的奇偶检验位与初始纠错码位来识别错 误位。

尽管已有的纠错码机制能够为数据完整性提供优良的保护,但是它同时也带来 了许多技术难题。纠错码计算器把大量数据送入大量奇偶检验树,而每个奇偶检验 树对不同的数据子集执行不同的奇偶计算。由于这样的奇偶计算需要复杂的布线, 从而导致纠错码电路不仅速度慢而且十分复杂。纠错码计算造成的性能下降通常会 限制纠错码的应用。在已有的纠错码机制当中,每种纠错码机理只适用于某种特定 的数据量。如果数据包的大小发生了改变,就需要重新设计纠错码机制。测试是另 外一个问题。在已有技术当中,纠错码计算器的速度强烈地依赖于输入数据的格 式;当数据包的大小增加时,纠错码计算器的速度往往会产生明显下降。在已有技 术当中,如果纠错电路使用的复杂布线中有某一条布线存在制造缺陷的话,要探测 出该问题将会十分困难,因为要获得完整的故障覆盖范围需要大量的测试向量(在 图1的示例当中为272×272)。

因此,急需开发出一种不仅结构简单而且便于支持不同数据宽度的高性能纠错 码机制。

本发明的目的

本发明的主要目的在于提供一种具有简化结构的纠错码计算器。这种简化的纠 错码计算器能够用相同的电路以相同的速度来支持几乎任意大小的数据包。本发明 的另一个目的在于提高纠错电路的速度。本发明的另一个主要目的在于为使用本发 明提出的新颖纠错电路的实用产品提供新颖的应用程序。 按照本发明提供的纠错码计算公式中的旋转关系即可达到上述目的与其它一些目 的。最终的纠错电路可以通过相同的电路进行构建,而且数据宽度能够自由扩 展。按照本发明提供的简化电路结构即可获得纠错电路的优良性能。

虽然本发明的一些新的技术特征是在本发明的几个从属权利要求中限定的,但 是通过结合附图阅读本发明的目的、特征以及下文的详细描述,本发明的结构和内 容均不难理解。

附图简要说明

图1为已有技术的纠错电路的方框图;

图2(a)为本发明提出的纠错电路块间旋转关系的示意图;

图2(b)为图2(a)中纠错电路块的示意图;

图2(c)示出的是本发明提出的纠错码译码器的结构;

图2(d)为图2(c)中纠错码译码器块的示意图;

图3(a)示出的是本发明提出的一种宽度可变的纠错码计算器;

图3(b)示出的是一种允许处理具有不同数据宽度的连续引入数据流的宽度 可变的纠错码计算器;

图4示出的是已有技术的浮动栅设备的结构;

图5为本发明提出的纠错码自修复过程的流程图

图6(a-d示出的是以一个模拟信号来代表多位数字数据的几种不同方法;

图6(e)为电路根据图6(b)中的表格来执行模数数据转换的方框图;

图7(a-c)示出的是已有技术的按内容寻址存储器以及与之相关联的存储单 元的结构;以及

图8(a-d)示出的是采用纠错码对按内容寻址的存储器设备进行保护的示 例。

本发明的详细说明

由于纠错机制的复杂性,本发明的说明将在以下的讨论当中采用C编程语言中 使用的向量符号来对该机制进行描述。例如,D[3:2][4:1]表示一组8个符号, 即D34、D33、D32、D31、D24、D23、D22和D21。符号“mod”表示取模 运算,运算结果为除法运算的余数。例如,当k=7时,[(k+3)mod8]等于 2,当k=1时,[(k-3)mod8]等于6。“mod”功能由实际电路输入连接中的 旋转关系来执行。

在编号为6,216,246的美国专利中,本发明的同一发明人公开了一种纠错 码计算器,示于图2(a)中。该示例中的纠错码计算器采用64个输入数据(D[7: 0][7:0])。该纠错码计算器由8个相同的奇偶检验电路块(P7-P0)组成。奇 偶检验电路块的示意图如图2(b)所示。每个奇偶检验电路块(P7-P0)都是由 19个异或、一个异非门以及一个变换器所组成。奇偶检验电路块P[k]把数据 D[k][7:0]以及储存的纠错码位Ck作为输入,其中k为介于0和7之间的整数。 它把四个输出(N11、N22、N33和N41)传送到位于其上的奇偶检验电路,并从位 于其下的奇偶检验电路接收相应的输出(N11B、N22B、N33B和N41B)。同时,它 还把三个输出,也就是N24、N32和N42传送到位于其下的奇偶检验电路,并从位 于其上的奇偶检验电路接收相应的输出,也就是N24T、N32T和N42T。另外,它还 输出校正因子Fk。第k个奇偶检验电路(P[k])输出的逻辑函数可以写成如下形 式:

N11=Parity{Ck,Dk0}                               (1a),

N23=Parity{Dk3,Dk4,Dk7}                         (1b),

N33=Parity{N23B,Dk2,Dk5,Dk6}                       (1c),

N41=Parity{N33B,N24T,Dk1,Dk4,Dk5}                 (1d),

N24=Parity{Dk4,Dk5,Dk6,Dk7}                        (1e),

N32=Parity{Dk0,Dk1,Dk2,Dk3,Dk4,Dk5,Dk6,Dk7}    (1f),

N42=Parity{N32T,N11B,Dk0,Dk1,Dk2,Dk3,Dk4,Dk5}  (1g),以及

Fk=Parity{N42T,N41B}                                 (1h), 其中,“Parity{}”表示大括号“{}”中包含的全部输入的奇偶检验值。根据 所有奇偶检验电路都相同这一事实,可以确定出由附近奇偶检验电路所提供的输入 (N11B、N22B、N33B、N41B、N24T、N32T和N42T)。例如,根据方程(1a),可 以建立如下的函数关系式:

N11B=Parity{C[(k+1)mod8],D[(k+1)mod8]0}               (2) 其中,C[(k+1)mod8]是储存的纠错码位,D[(k+1)mod8]0是第一个连接 到位于其下的奇偶检验电路的数据。以同样的方式可以确定出所有其它输入 (N22B、N33B、N41B、N24T、N32T和N42T)。根据图2(b)中的连接关系以及方 程(1a-1h),可以得出以下关系: Fk=Parity{Ck,D[(k-2)mod8][7:0],D[(k-1)mod8][5:0],

           D[k][7:4,0],D[(k+1)mod8][5,4,1],

           D[(k+2)mod8][6,5,2],D[(k+3)mod8][7,4,3]}

          (3) 其中k=(0,1,2,3,4,5,6,7)。

如果输入数据当中没有错误的话,所有信号(Fk)将会全部为零。如果输入 数据D[7:0][7:0]当中有一个错误的话,那么通过利用图2(c)中示出的纠错码 译码器来检查校正因子(F0-Fk)就可以识别出错误位。图2(c)中示出的纠错 码译码器由8个纠错码译码块(CB0-CB7)组成。这8个纠错码译码块具有相同 的逻辑功能,其示意图如图2(d)所示。它们之间唯一的差别就在于与Fk信号的 连接不同。这里,在与Fk的连接当中,再次出现了旋转关系。例如,CB1的F1等 于CB0的F0,而且CB2的F2也等于F0,如此等等。这些纠错码译码块(CB0- CB7)的输出(CR[7:0][7:0]#)指明了错误位的位置。如果CRij#较低,这就意 味着应当跟Dkj的值进行交换,其中k=(0,1,2,3,4,5,6,7)、j=(0,1, 2,3,4,5,6,7)。

在图2(a)中示出的电路也可以用来计算一组原始数据的纠错码位,指定所 有Ck输入都为零,通过下式所得到的Fk就是纠错码位:

ECC(k)=Parity{D[(k-2)mod8][7:0],D[(k-1)mod8][5:0],

               D[k][7:4,0],D[(k+1)mod8][5,4,1],

               D[(k+2)mod8][6,5,2],D[(k+3)mod8][7,4,3]}

              (4) 其中,ECC(k)就是纠错码位的值,而且k=(0,1,2,3,4,5,6,7)。

图2(a-d)中示出的纠错码机制由于奇偶检验计算中的旋转关系而具有新颖 性。C[k+1]的奇偶检验计算就是C[k]简单旋转的结果。这种旋转关系在纠错码 校正电路中也有应用。在本发明当中,这种纠错码电路也称为“旋转纠错码计算器 (REC)”。旋转纠错码计算器电路与其它已有技术的纠错电路相比,存在以下几 个方面的不同: (1)已有技术的纠错电路使用不同的纠错码树来计算不同的纠错码位,导致复杂 的电路上连接有复杂的布线。而旋转关系允许旋转纠错码计算器支持所有使用相同 标准部件进行的逻辑计算。因此,旋转纠错码计算器的设计复杂程度得到极为明显 的简化。 (2)在已有技术的纠错电路当中,每个输入数据都需要经过长距离旅行才能到达 多个奇偶检验树。而对旋转纠错码计算器而言,每个输入数据只需要抵达一个奇偶 检验电路块即可。这种简化显著降低了输入信号布线的复杂程度,并明显提高了运 算速度。 (3)就旋转纠错码计算器电路而言,中间逻辑信号(N11、N22、N33、N41、 N24、N32和N42)只需要传送到邻近的奇偶检验电路块即可,在整个旋转纠错码计 算器电路的任何部分都不存在长的信号线或者复杂的布线。这也正是旋转纠错码计 算器速度总是要比其它已有技术的纠错码计算器速度快得多的主要原因。 (4)由于旋转对称,旋转纠错码计算器电路的速度几乎与输入数据的格式毫不相 关,从而为其测试、调试以及优化过程提供了明显的改进。

旋转纠错码计算器的一个重要特点就是它能够以相同的重复电路来支持不同大 小的输入数据。图3示出了一种旋转纠错码计算器电路,该电路采用与图2(a) 中所示电路块相同的电路块来支持长度不断变化的输入数据。本示例中的纠错码计 算器取走输入数据(D[(N-1):0][7:0])中的N个字节,其中N为任意整数。 该纠错码计算器由N个相同的奇偶检验电路块(PN-1-P0)组成,这些电路块以图 3(a)示出的旋转关系进行连接。这些奇偶检验电路块(PN-1-P0)的逻辑功 与图2(b)中电路块的逻辑功能相同。对这些奇偶检验电路块(PN-1-P0)而 言,方程(1a-h)仍然成立,只是k可以为介于0和N-1之间的任意整数。方程 (2-4)需要改写为如下形式:

N11B=Parity{C[(k+1)modN],D[(k+1)modN]0}                     (5)

Fk=Parity{Ck,D[(k-2)modN][7:0],D[(k-1)modN][5:0],

               D[k][7:4,0],D[(k+1)modN][5,4,1],

               D[(k+2)modN][6,5,2],D[(k+3)modN][7,4,3]}  (6)

ECC(k)=Parity{D[(k-2)modN][7:0],D[(k-1)modN][5:0],

               D[k][7:4,0],D[(k+1)modN][5,4,1],

               D[(k+2)modN][6,5,2],D[(k+3)modN][7,4,3]}  (7) 其中,ECC(k)是纠错码位的值,而且k=(0,1,…,N-1)。

需要指出,图2(a-d)中示出的旋转纠错码计算器电路只是N=8时的一 种特殊情况。旋转纠错码计算器能够采用与图3(a)示出的宽度可变的纠错码计 算器相同的多个旋转纠错码计算器标准部件进行扩展以支持任意数量的输入数据 集。无论输入数据集的宽度为多少,最终得到的电路都将具有相同的速度和相同的 电路连接。不再需要对纠错码计算器进行重新设计以支持不同的数据宽度。针对不 同的应用场合,还可以象图3(b)示出的那样通过断开闭环构型来扩展本发明的 应用范围。图3(b)示出了本发明的一种替代发明,该发明可以应用于数据通信 系统经常碰到的以预先确定的数据(例如标题记录)作为起始和结束的一长条输入 数据被连续接收的情况。如同图3(b)所示,为了确保数据传输的准确性,采用 了一个串联的旋转纠错电路而不是上面所说的闭环旋转纠错计算器电路来接收和处 理数据流。图3(b)中采用了一个人工环绕式逻辑电路(AWALC),其中,错码计 算是通过把简化位组合格式(比如全1或者全0)供给开头和结尾的纠错码计算器 块来进行的。错码计算也可以采用与具有固定位组合格式输入的闭环旋转纠错计算 器相似的方式来进行。通过首先传送数据记录的长度然后再应用相应数量的纠错码 计算器块进行错码计算,可以方便地对开环环绕式纠错码计算器进行控制或者重新 配置以处理不同长度的数据流。

虽然文中用文字和附图的形式给出了本发明的若干具体实施例,但是应当认识 到本发明不仅仅局限于这些具体实施例,它在实际当中还会有所更改和修正。例 如,在保持旋转关系不变的条件下,方程(1-7)还可以改写成其它不同的形 式。奇偶检验块可以访问不同数量的输入,而不仅仅是8个,而且可以输出不同数 量的纠错码位和中间信号。本发明的校正机制的新颖之处在于在纠错码机制的奇偶 检验计算中实行了旋转关系。基于旋转关系,可以使用重复电路设计来简化设计工 作。另外,通过最大限度地降低布线的复杂程度也可以获得更高的性能。

根据以上的说明,本发明公开了一种方法,用于改变纠错码逻辑电路的配置以 进行数据宽度不断变化的数据的错误检验。该方法包括如下步骤:A)顺序地互连 一组N1个相同的错误检验块,其中N1是第一个正整数。并且,该方法还包括一个步 骤:B)通过将纠错码逻辑电路改变为一组由N2个相同的错误检验块顺序互连组成的 电路来对纠错码逻辑电路进行重新配置,其中N2为第二个正整数。在优先权利要求 当中,顺序地互连一组N1个相同的错误检验块这一步指的是互连只介于顺序相邻两 个用于传输只介于相邻两个错误检验块之间信号的块之间的N1个错误检验块。另 外,通过将纠错码逻辑电路改变为一组由N2个相同的错误检验块顺序互连组成的电 路来对纠错码逻辑电路进行重新配置这一步指的是互连只介于顺序相邻两个用于传 输只介于相邻两个错误检验块之间信号的块之间的N2个错误检验块。

配备了以上纠错码保护机制的系统将需要另外的逻辑电路和更多的数据存储资 源。这些对额外资源的要求看起来似乎会增加系统的成本,但是,实际上,以上纠 错码保护机制通常有利于降低实际产品的总成本。在下面的讨论中将给出两个实际 的例子以更好地说明这几点。

第一个例子是纠错码保护机制在浮动栅设备中的应用。图4示出的是一个浮动 栅晶体管的符号结构。这个晶体管和普通晶体管一样由源(S)、漏(D)以及栅 (G)组成。这个晶体管和普通晶体管的差别在于它在栅和通道区之间还有一个浮 动栅(FG)。在大多数工作条件下浮动栅是绝缘的,然而,在执行程序运算或者执 行清除操作的过程当中,通过热载流子机理或者隧道效应机理可以把电荷注入到浮 动栅上或者从浮动栅上清除电荷。浮动栅设备的传导性是浮动栅捕获电荷量的函 数。因此,可以通过改变浮动栅所捕获的电荷量来把数据存储到浮动栅设备上。许 多商业产品,比如EPROM、EEPROM以及FLASH等,都是建立在浮动栅设备之上的。 浮动栅设备最难解决的可靠性问题是电荷损失(QL)问题以及程序运算-清除 (PE)循环导致的故障。电荷损失问题通常是由浮动栅周围的绝缘体的制造缺陷导 致的。制造缺陷会让浮动栅产生缓慢的泄露,从而导致该设备由于捕获电荷的损失 而无法保持存储数据。电荷损失问题通常并不会造成浮动栅设备的永久性损坏,如 果向出现过该问题的设备当中重新写入数据的话,这些设备仍然能够在一定时期内 起作用,直到浮动栅捕获的电荷渐渐泄露完为止。程序运算-清除循环导致的故障 往往是永久性的。当用户执行程序运算并多次对浮动栅设备进行清除时,高能电荷 穿过浮动栅会对浮动栅周围的材料产生破坏,因此经过一定的程序运算-清除循环 之后,设备可能会遭到损坏。通常的浮动栅设备往往对电荷损失问题和程序运算- 清除循环要求具有优良的耐受性,因而浮动栅设备的故障通常是由于制造缺陷引起 的。在目前的技术条件下,尽管浮动栅产品是由上百万的存储单元所组成的,但是 它们对电荷损失和程序运算-清除循环的耐受性却是由这些上百万存储单元当中质 量最差的数位所决定的。因此,使用纠错码来保护浮动栅产品可能会给这些产品的 可靠性带来重大的改进。受到纠错码保护的设备的可靠性特性将不再由设备中质量 最差的数位来决定。取而代之的是,设备的可靠性将由设备的固有特性来决定。这 样得到的产品通常情况下要可靠得多。采用纠错码电路以后,即使部分存储数据出 现错误的话,也可以知道正确的数据。因此,这样以来,就可以从源头解决问题, 而不再仅仅只是对输出进行校正。图5示出的是纠错码自修复过程的流程图。这种 自修复过程可以依靠外部系统(比如计算机软件)来启动,也可以在外部用户不知 情的情况下自行启动。例如,在加电初始化过程中可以激活自修复过程的执行,或 者利用定时器信号来触发自修复过程。假定纠错码位已经与原始数据一起被写入存 储设备当中,那么,在自修复过程启动后,会从存储设备中读出一个数据集以及相 关联的纠错码位。接着使用纠错电路来检查原始数据当中是否存在错误。如果原始 数据当中没有错误,错误检验操作将进入到下一个数据集,直到整个过程完成时为 止。如果在原始数据当中发现错误而且纠错电路无法进行校正的话,设备将会向系 统发出告警信号。如果纠错电路能够校正所发现的错误,那么经过校正的数据位将 被写回到存储设备当中。如果问题是由软错误(比如浮动栅设备的电荷损失问题) 引起的或者是由阿尔法(alpha)粒子引起的话,把正确数据重新写回到存储设备当 中就有可能解决这些问题。重新写入数据之后,纠错电路会再次读入并检验出错的 数据。如果问题已经得到解决的话,错误码检验操作就可以转而对下一个数据集进 行处理。如果重新写入数据并没有使问题得到解决,那么可以利用一个可编程的冗 余电路来解决由于存储单元出现故障而引起的问题。如果冗余电路能够解决问题的 话,错误检验操作将继续处理下一个数据集。即使冗余电路仍然不能解决问题,产 品还是能够起作用,因为在进行纠错电路校正后用户能够得到正确的数据。然而, 如果有太多的故障需要纠错电路进行校正的话,表明设备故障已经具有毁灭性。在 纠错电路中,可以使用计数器来对所校正的故障数目进行计数。如果计数数目超过 某一预先确定的数值,将会产生告警信号以通知系统用户。本发明提出的旋转纠错 码计算器电路同样适用于以上的自修复过程。而且,与已有的纠错电路相比,本发 明提出的旋转纠错码计算器不仅能够明显减少由于增加纠错电路所需要的设备面积 而且能够提高错误码检验操作的速度。

根据上面的描述,本发明还公开了一种用于处理由大量存储单元构成的存储设 备的方法。该方法包括步骤A)对上述的存储单元进行错误检验,以及步骤B)对存 储有错误数据位的故障存储单元进行修复。在优先权利要求当中,修复故障存储单 元这一步还应当包括向故障存储单元写入正确数据位来自动修复故障存储单元这一 步。

虽然文中用文字和附图的形式给出了本发明的若干具体实施例,但是应当认识 到本发明不仅仅局限于这些具体实施例,它在实际当中还会有所更改和修正。在不 同的应用场合下,自修复过程的细节可以进行相应改动。例如,有人可能不想利用 重新写入数据的方式来解决问题,也有人可能没有冗余电路来解决问题。此外,还 可能引入其它类型的问题解决方式,比如定时调整等。另外一个可能性就是在应激 状态下进行自修复过程,以便探测并解决潜在的故障,从而防止这些潜在故障在今 后的正常工作条件下带来问题。例如,可以在电压或者高温下进行自修复过程。 上面的方法可以应用于任何存储设备或者系统。它的应用不仅仅局限于浮动栅设 备。

进行纠错码保护或者自修复过程将需要额外的资源,但是,由于这样以来具有 更好的产出以及/或者更好的可靠性,最终得到的产品可能具有更高的成本效率。 此外,由于可靠性的改进,还有可能利用同一设备来传送更多的数据。例如,我们 定义了四个模拟平来表示浮动栅捕获的电荷量,从而使得一个存储单元现在能够 用来存储两位二进制数据而不是一位二进制数据。图2(a)给出了这种多水平数 字数据(MLDD)表示法的一个示例。当浮动栅设备所捕获的电荷量(Q)超过某一 预先确定的值(Q3),也就是Q>Q3时,将会把两位二进制数据(1,1)存储起 来;当Q3>Q>Q2时,将会把二进制数据(1,0)存储起来;当Q2>Q>Q1 时,将会把二进制数据(0,1)存储起来;当Q<Q1时,将会把二进制数据(0, 0)存储起来。其中,Q3、Q2和Q1是预先确定的与读出电路触发电平相关的几个 值,并且有Q3>Q2>Q1。与常规存储单元相比,利用这种方法可以存储两倍数 量的数据,与此同时,出错容限提高了四倍。由于纠错码保护机制能够修正故障, 所以这种方法有可能十分实用。本发明提出的用于解决故障的自修复机制将会使这 种方法更加可靠。图2(a)中的多水平数字数据表示法存在一个问题。如果初始 存储数据为(1,0),并且有Q3>Q>Q2的话,那么当设备损失一些电荷达到Q2 >Q>Q1时,数据将变为(0,1)。这样以来,由于少量的电荷损失就导致两个 二进制数位发生改变。因此,需要纠错码保护能够校正两个数位,否则的话,就需 要两个独立的纠错电路来分别保护这两个数位。这两种方法都将需要更多的资源。 如果象图2(b)中示出的那样对两位多水平数字数据表示法重新进行定义的话, 所需要的资源将会减少。对每一个高水平Q而言,二进制数据的变化永远不会超过 一位。因此,解决少量电荷损失问题所需的资源将会减少。同样的方法可以适用于 图6(c)中8水平3位的例子以及图6(d)中16水平4位的例子。

图6(e)为电路根据图6(b)中的表格来执行模数数据转换的方框图。模 拟信号(Q)通过比较器(651)与三个预先确定的值(Q3、Q2和Q1)进行比较。 例如,当Q>Q1时第一个比较器(CP1)的输出为1,而当Q<Q1时第一个比较 器(CP1)的输出为0;当Q>Q2时第二个比较器(CP2)的输出为1,而当Q< Q2时第二个比较器(CP2)的输出为0;当Q>Q3时第三个比较器(CP3)的输出 为1,而当Q<Q3时第三个比较器(CP3)的输出为0。这些比较器的输出(CP3、 CP2和CP1)被传送到编码器(652)电路。译码器(652)将提供两个数字输出位 (D1,D0)。当CP3=CP2=CP1=1时(D1,D0)的值为(1,0);当CP3=0 而CP2=CP1=1时(D1,D0)的值为(1,1);当CP3=CP2=0而CP1=1时 (D1,D0)的值为(0,1);当CP3=CP2=CP1=0时(D1,D0)的值为(0, 0)。图6(c,d)中示出的表格也能在相似电路中得到执行。

根据以上描述,本发明进一步公开了一种存储设备,该存储设备包括大量的存 储单元,而每个存储单元具有一个浮动栅,用来在里面存储大量的电荷。该存储设 备还包括一个错误检验逻辑电路,该错误检验逻辑电路包括一组同样的顺序互连的 错误检验块,用于检验存储在各个存储单元中的数据是否有错。在一项优先权利要 求当中,该存储设备还进一步包括一个多级电压装置,用于给浮动栅供应至少两个 电荷水平以代表至少两个存储在存储单元中的数据位。在一项优先权利要求当中, 该存储设备还进一步包括一个多级电荷读出装置,用于读出至少两个存储在浮动栅 中的电荷水平以检测至少两个存储在存储单元中的二进制位。在另外一项优先权利 要求当中,多级电荷读出装置还进一步包括一个位组合格式装置,其用途是根据多 级电荷读出装置读出的电荷水平来形成位组合格式。在另外一项优先权利要求当 中,位组合格式装置还进一步被用来依据电荷水平而形成一列位组合格式,其中, 依据第一级电荷水平形成的位组合格式与依据跟第一级电荷水平顺序相邻的第二级 电荷水平形成的位组合格式只有一个数据位不同。

虽然文中用文字和附图的形式给出了本发明的若干具体实施例,但是应当认识 到本发明不仅仅局限于这些具体实施例,它在实际当中还会有所更改和修正。上面 的方法还可以应用于使用其它类型参数的其它类型的设备。例如,Q可以为任意的 模拟参数(比如电压或者电流等),不一定就是捕获的电荷。而且设备也不一定就 是浮动栅设备。

另外一个实施例是应用纠错码来保护按内容寻址的存储器(CAM)。图7(a) 示出的是已有技术的按内容寻址的存储器设备的基本结构。在一个按内容寻址的存 储器设备当中存储有两种类型的数据,一种是存储在典型随机存取存储器(RAM) 阵列(703)当中的普通数字数据,另外一种是存储在按内容寻址存储器阵列 (701)当中的寻址数据(在IC行业称为“TAG”)。图7(b)为随机存取存储器 (RAM)阵列(703)中典型存储单元的示意图。这个存储单元使用四个晶体管 (Mp0、Mp1、Mn0和Mn1)来形成双稳存器以存储数据,另外还使用两个晶体管 (Mw和Mw#)以便于根据字线(WL)来选择该存储单元。图7(c)为按内容寻址 存储器阵列(701)中典型存储单元的示意图。这个存储单元与随机存取存储器阵 列的存储单元基本相似,差别仅在于本存储单元有四个晶体管(Mc0、Mc1、Mc0#和 Mc1#)形成一个XOR门以把置于位线(BL,BL#)上的新的寻址数据与存储数据 (CC,CC#)进行比较。如果存储数据与位线值有差别的话,那么遗漏线(MISS#) 将会被下拉。按内容寻址存储器阵列(701)的每一行都是由大量的按内容寻址存 储器单元所组成,而且这些按内容寻址存储器单元的MISS#线都相互连接在一起。 当一行存储起来的寻址数据当中有任意一位与被查阅的寻址数据存在差别时, MISS#线就会降低。每个寻址数据行的MISS#线(705)都是用来控制与之相应的随 机存取存储器行的字线(WL)。只有当存储有与查阅寻址数据相同的寻址地址的行 被选择时,才能从随机存取存储器阵列中读出存储数据。在同时查阅大量存储地址 并同时利用正确地址读出所需数据的场合,图7(a)示出的这种按内容寻址的存 储器设备十分有效。在进行这种并行查阅操作时,已有技术的按内容寻址的存储器 都不具有纠错码保护。为了确保寻址地址查阅结果的准确性,有必要保证在整个查 阅过程中所有寻址地址阵列都不会出现错误位。这样将要求按内容寻址存储器阵列 的每一行都要有一个纠错码计算器,而这样做将十分昂贵,并将导致纠错码保护不 会得到实际使用。因此,已有技术的按内容寻址的存储器产品经常会由于可靠性问 题(比如阿尔法粒子引起的软错误等)而造成失败。

然而,为了使纠错码保护在按内容寻址存储器的查询操作中得到实际应用,我 们认识到,同时对随机存取存储器阵列的每一行进行纠错码保护是不必要的。取而 代之的是,因为在后续操作中只用得上相匹配的数据位流,因此在随机存取存储器 查询过程中只需要对相匹配的行进行保护即可。图8(a)为采用纠错码对随机存 取存储器进行保护的方框图。该随机存取存储器设备仍然具有同样的用于寻址地址 查询的按内容寻址存储器阵列(801)以及同样的用于存储数据的随机存取存储器 阵列(803)。按内容寻址存储器阵列(801)以及随机存取存储器阵列(803)所 使用的存储单元及其结构与图7(a-c)中示出的相同。对每一组寻址数据而 言,通过纠错码电路计算得到的纠错码位也被存储到一个按内容寻址存储器阵列 (807)当中。这个用于存储纠错码位的按内容寻址存储器阵列(807)与用于存储 寻址数据的按内容寻址存储器阵列(801)既可以相互分离也可以合并在一起。图 8(b)为图8(a)中示出的按内容寻址存储器的查询过程的流程图。在查询过程 中,无论是寻址数据还是其纠错码位都要进行比较。如果寻址数据及其纠错码位与 比较数据均不匹配,那么系统照例进行通告操作。如果寻址数据及其纠错码位与比 较数据均匹配,那么照例进行匹配数据的数据传输。如果寻址数据与比较数据匹配 而其纠错码位与比较数据不匹配,那么就意味着这是一个错误匹配,需要把这个错 误匹配通知系统并把它当作匹配不当进行处理。此时,通过尝试把纠错电路确定的 正确值重新写回到按内容寻址存储器阵列当中就有可能解决这个问题。如果在寻址 数据数组中有多个寻址数据与比较数据相匹配的话,那么具有匹配纠错码位的那个 寻址数据才是真正的匹配数据。只有正确的数据位流才会被传输,此外,进行修复 错误寻址数据的操作也会向系统发送有关这个数据错误以及校正情况的通告。为了 保护随机存取存储器数据,随机存取存储器阵列也可以具有自己的纠错码位。图8 (c)示出的是另外一个例子,在这个例子当中,纠错码位是存储在一个随机存取 存储器阵列当中,而不是存储在一个按内容寻址存储器阵列当中。查询过程示于图 8(d)中。在寻址数据查询过程中,只对寻址数据进行比较。如果寻址数据与比较 数据不匹配的话,那么系统照例进行发现不匹配时的通告操作。如果寻址数据与比 较数据匹配的话,那么会从随机存取存储器阵列中读出寻址数据以及纠错码位。这 个纠错码位可以只用于保护寻址数据。此外,还可以在纠错码计算当中既包含数据 本身也包含其寻址数据,从而对二者都进行保护。在纠错码计算之后,如果没有检 测到错误,那么系统照例进行数据传输并声称命中寻址数据。如果纠错电路检测到 错误,那么需要把这个错误匹配通知系统并把它当作匹配不当进行处理。此时,通 过尝试把纠错电路确定的正确值重新写回到按内容寻址存储器阵列以及随机存取存 储器阵列当中就有可能解决这个问题。图8(c)中示出的例子所使用的资源要比 图8(a)中示出的例子少。当在寻址数据数组中发现多个与比较数据匹配的寻址 数据时,图8(c)中示出的结构不能区分出哪个寻址数据才是真正的匹配数据。

根据上面的描述,本发明进一步公开了一种按内容寻址的存储器(CAM)设 备。该CAM设备包括大量存储单元阵列,用于存储阵列内容,在查询内容与阵列内 容相匹配的基础上,阵列内容可以用来对某个阵列进行数据存取。该CAM设备进一 步还包括一个错误检验逻辑电路,用于检验每个存储单元阵列的数据存取是否有 错。在一项优先权利要求当中,该CAM设备进一步还包括一个错码存储装置,用于 存储由用于检验各个存储单元阵列的数据存取是否有错的错误检验逻辑电路所使用 的各个存储单元阵列的错码检验位。在另外一项优先权利要求中,每个存储单元阵 列还进一步存储了一个由用于检验各个存储单元阵列的数据存取是否有错的错误检 验逻辑电路所生成的错码检验位。在另外一项优先权利要求中,错码存储装置是一 种随机存取存储器(RAM)设备,用于存储由用于检验各个存储单元阵列的数据存 取是否有错的错误检验逻辑电路所使用的各个存储单元阵列的错码检验位。

虽然文中用文字和附图的形式给出了本发明的若干具体实施例,但是应当认识 到本发明不仅仅局限于这些具体实施例,它在实际当中还会有所更改和修正。因 此,可将本申请案的权利要求解释成涵盖在本发明原始精神与领域下的所有更改与 修正。

发明背景

QQ群二维码
意见反馈