|
作者:西安电子科技大学通信工程系 周江 [ 返回 ] |
|
摘 要:本文分析了存储器产生错误的原因,提出了提高其可靠性的途径,给出了一套常用数字系统中存储器容错的纠错码方案,最终通过验证电路说明其可行性。 关键词:容错;ECC;改进汉明码;存储器 |
容错存储器概述 存储器是数字系统中常用的器件之一,是采用大规模集成电路存储芯片构成的。实际统计表明,存储器的主要错误是单个电路故障所引起的一位错或者相关多位错,而随机独立的多位错误极少。在按字节组织的内存储器中,主要错误模式为单字节错;而在按位组织的内存储器中,主要错误模式为单位错。 半导体存储器的错误大体上分为硬错误和软错误,其中主要为软错误。硬错误所表现的现象是在某个或某些位置上,存取数据重复地出现错误,出现这种现象的原因是一个或几个存储单元出现故障。软错误主要是由α粒子引起的,存储器芯片的材料中含有微量放射性元素,它们会间断地释放α粒子。这些粒子以相当大的能量冲击存储电容,改变其电荷,从而引起存储数据的错误。引起软错误的另一原因是噪声干扰。 随着存储芯片容量的增大,器件的成品率呈指数规律下降。通常人们一方面改良制造工艺以提高成品率,另一方面在电路设计时通过硬件冗余的方式来实现可靠性的提高。当前,VLSI存储器芯片的设计过程中主要采用两种错误检测与纠正方案。 ● 备份行(或列)方案 这种方案是在存储芯片的设计与制造过程中,增加若干备份的行(或列)。在芯片测试时,若发现失效的行(或列),则通过激光(或电学)的处理,用备份行(或列)去代替它们。这种方法的优点是设计简单,管芯面积增加较少,电路速度没有损失。但是,它需要增加某些测试与修正失效行(或列)的工艺环节,更重要的弱点是这种方案仅适用于RAM,不能用于ROM。 ● 纠错编码方案 这种方案是在存储芯片内部采用纠错编码,自动检测并纠正错误。这种方案不需要额外的测试和纠正错误等工艺环节,除提高成品率外,还对可靠性有明显改进。这种方案最突出的优点是特别适合ROM,在对速度要求不高的情况下也可用于RAM。其主要缺点在于要占用额外的芯片面积,同时因编译码而影响芯片整个的工作速度。将用于存储器系统级的纠错编码等容错技术引入存储器芯片内部,是提高存储芯片成品率和可靠性的有效措施,例如ECC内存就采用了此技术。 |
常用的纠错码简介 数据通信中常用的纠检错码有奇偶校验码、汉明码及其改进码。 ● 在串行通信中使用的一维奇偶校验码是最简单的一种纠错码,它的编码规律是在数据位末尾添加一位校验位,使得整个码字中含有奇数或偶数个1,它能发现所有的奇数位错,但它不能用来纠正错误。需要指出的是采用二维奇偶校验码(即将数据按矩阵排列,分别对行、列进行一维奇偶校验编码)后,不仅可以纠正一位错,还能检出某些突发错误,所以在一些数据传输网络中得以应用。 ● 汉明码是一种能纠一位错的线性分组码,由于它的编译码简单,在数据通信和计算机存储系统中广泛应用,如在蓝牙技术和硬盘阵列中。它的最小码距为3,可以纠正一位错误,但对于两位错不能检测,还可能会造成误纠。尽管发生一位错的概率相对最高,但在一些要求较高的应用中汉明码不能满足要求。 ● 常用的能检测两位错同时能纠正一位错(简称纠一检二,SEC-DED)的纠错码有扩展汉明码(Extended Hamming Code)和最佳奇权码(Optimal Odd-Weight-Column Code),它们的最小码距都为4,两者有相似之处,比如冗余度一样,对于数据位数k,校验位数r应满足2r-1≥k+r,当k=16时,r=6,数据位长增加一倍,校验位数只需增加一位,编码效率较高。另外从来源上讲,两者分别是汉明码的扩展码和截短码,也有资料称最佳奇权码为修正汉明码(Modified Hamming Code)。 本文应用于存储器的纠错码是面向随机字节数据的,一二维奇偶校验码都不能满足要求,只能从最佳奇权码和扩展汉明码中选取。从性能上看最佳奇权码比扩展汉明码更为优越,前者在纠检错能力方面也优于后者,它的三位错误的误纠概率低于后者,而四位错误的检测概率高于后者,最重要的是它便于硬件实现,故应用得最多,本文决定采用最佳奇权码。 |
编译码原理 首先构造最佳奇权码的校验矩阵即H矩阵,最佳奇权码的H矩阵应满足: (1)每列含有奇数个1,且无相同列; (2)总的1的个数少,所以校验位、伴随式生成表达式中的半加项数少,从而生成逻辑所需的半加器少,可以节约器材、降低成本和提高可靠性。 (3)每行中1的个数尽量相等或接近某个平均值,这种决定了生成逻辑及其级数的一致性,不仅译码速度快,同时线路匀称。 应用中采用(13,8,4)最佳奇权码,数据码为(d7d6···d1d0),校验码为(),P矩阵和编码规则分别为: 译码时把数据再次编码所得到的新校验位与原校验位模二加,便得到伴随式S,由其可判别错误类型。 |
|
1)若S=0,则认为没有错误; (2)若S≠0,且S含有奇数个1,则认为产生了单位错; (3)若S≠0,且S含有偶数个1,则认为产生了两位错; 其中的情况(2)中,根据错误图样可以确定错误位置,将其取反即可完成纠错。 因为对用户而言真正有用的是数据,校验位是无用的。为了节省时间和器材,只对数据纠错,而对校验位不进行纠错,纠错后的数据也不再写回存储器。 |
纠检错性能分析 纠一检二码可以校正单错,存储器不因单错而中断工作,故其平均无故障时间MTBF增大,提高了可靠性。但是纠一检二码的新增器材又使MTBF有所下降。 在效率上,设在时间T内,发生1位错的次数为n1,发生两位及多位错的次数为n2,则未采用纠错码时,平均无故障时间为 T1=T/(n1+n2)=T/(1+n1/n2)n2。 采用最佳奇权码后,一位错是可纠的,仅两位及多位错是不可纠的,作为出错处理。设由于采用纠错码而增加器材δ%,因而采用最佳奇权码后的平均无故障时间为 |
|
据资料估计,对于1位错占整个错误的比例n1/(n1+n2)为80%~90%,δ=8,增益G为4.6~9.3。 |
纠错系统原理框图 可以采用逻辑运算和ROM查表两种方法进行纠错,图1是逻辑运算纠错的原理框图,图2是ROM查表纠错的原理框图。 |
|
|
|
用逻辑运算进行纠错使用标准逻辑门电路实现,结构较复杂,容易产生时序错误及竞争冒险;用ROM查表进行纠错使用ROM/EPROM/E2PROM构成编码、译码表,电路结构简单,由于本文中的码长较短,所以采用易于实现的第二种方法,另外,也可采用PLD/CPLD/FPGA等可编程逻辑器件。 |
验证电路原理图 图3是验证电路原理图,采用Atmel公司51内核的AT89S8252单片机可实现在线编程,ECC ENABLE是控制校验位生成的口线,低电平有效,与写控制线进行或运算后使用。 |
总结 本文介绍了数字集成电路中提高存储器可靠性的途径,着重说明了使用纠错编码的方法,其中给出了使用最佳奇权码(扩展汉明码)的应用原理和实例,最终通过电路验证了该方案是可行有效的。 |