(一)纠错与检测代码错误检测和纠正(EDAC)代码技术(Peterson,1980)也被用来缓解电子器件和集成电路中产生的单粒子翻转(SEU)。这种检错纠错的办法通常应用于存储器件的单粒子翻转防护。有很多种不同类型的编码方式可用于保护系统免受单个和多个SEU的危害。例如,汉明码就是最常用的一种形式,它是一个错误检测和错误纠正的二进制代码,可以检测所有的单位和双位错误,并纠正所有的单位错误(SEC-DED)。这个编码适用于单数据结构(一个字节中只有一个错误位)中错误概率较低的系统。该编码满足关系:
2k≥m+k+1
式中,m+k是编码字的总比特位数,m是原始字的信息比特数,k是编码字中的校验比特数。
根据这个关系式,汉明码能够纠正n个比特字的所有单比特位错误,以及当使用整体奇偶校验位时检测双比特位错误。
汉明码由一个用于编码数据的组合块构成,包括奇偶校验的数据位和解码的数据组合块。编码块计算奇偶校验位,它可由一组二输入的异或门实现。解码块要比编码块更复杂,因为它不仅要检测错误,而且还必须纠正错误。它是由奇偶校验位加上表明发生SEU的地址解码数据的相同逻辑门组成的。解码块也可由一组二输入异或门和一些与门和反相门组成。
编码块计算检验位放置在编码字的1、2、4、…、2(k-1)位置。例如:对于8 bit的数据,需要4个检验位(p1、p2、p3、p4),以便汉明码能够检测和纠正单个比特位错误。图6-16给出了12 bit的编码字结构,检验位p1、p2、p3、p4分别在字位置1、2、4、8处。检验位能够给出错误位的位置信息。编码块由一组二输入异或门实现。对于8 bit的数据,需要14个二输入的异或门产生4个奇偶位,检验位p1为位组{1、3、5、7、9、11}产生偶数奇偶校验,检验位p2为位组{2、3、6、7、10、11}产生偶数奇偶校验。类似地,p3为位组{4、5、6、7、12}产生偶数校验位,检验位p4为位组{8、9、10、11、12}产生偶数校验位。
图6-16 汉明码编码说明
汉明码可以防护寄存器、寄存器文件和存储器等结构。每个受保护的寄存器必须将其输入连接到编码器块,并将其输出连接到解码器块。需注意的是,在一个时钟周期内只能使用一个寄存器。寄存器组的结构的优点仅仅体现在一组寄存器被一个编码器块和一个解码器块多路复用时。
表6-4给出了汉明码和全硬件三模冗余(TMR)在时序逻辑电路中缓解SEU的比对分析。研究结果表明在防护寄存器和小容量存储器方面,TMR在开销面积和性能方面更有效,而汉明码更适合防护大容量寄存器文件和存储器。
表6-4 汉明码和TMR缓解SEU的比对分析总结
汉明码的缺点是不能对深亚微米技术下的双位翻转进行纠错处理,尤其对于存储密度很大的存储器。为此,必须研究开发其他检测码来处理多位翻转。Reed-Solomon(RS)是一种纠错编码系统,旨在解决纠正多位错误的问题。它在数字通信和存储器领域有着广泛的应用。Reed-Solomon编码用于纠正许多系统中的错误,包括存储设备、无线或移动通信设备、高速调制解调器等。Reed-Solomon编码和解码通常在软件中进行,因此,RS的实现通常没有考虑硬件实现时的面积开销和性能影响等。然而,在Neuberger等人的研究中提出的RS硬件实现是防护存储器免受多位SEU影响的有效解决方案。
RS码定义为RS(n,k)和s位标示位,其中n是每个编码器的总数,k是每个信息数据的位数。奇偶校验位的数目等于n-k,其中n等于2s-1。RS解码器能够纠正t个字节的数据,其中2t=n-k,如图6-17所示。
图6-17 RS码定义说明
数学上,RS码是基于有限域的算术。存储器件使用RS码时,数据字以符号形式划分,每个数据字是一个不同的RS码字。例如,在一个n行的存储器中,数据字使用整个行,每个数据字根据符号大小和存储数据大小以m个符号进行划分。矩阵的任何部分都可能发生多位翻转,如图6-18所示。
RS码很容易纠正图6-18所示中a类型的单粒子翻转,这是由于RS码的基本特性就是在同一个数据位实现多位错误纠正。图6-18中b类型所示的双位翻转也能被纠正,因为每行都是不同的RS码,对于不同行上的单个错误来说是具有等同的检测能力。但是,对于图6-18所示的c类型的单粒子翻转,将不能实现纠正。
图6-18 RS码结构组成说明
(二)错误检测与纠正
首次提出纠错码是为了解决数字信息可靠性通信中的实际问题。信息理论的一个分支叫作错误检测码。很显然,对于SEU减缓设计来说,不仅在系统级,而且在部件级(微电子电路),EDAC在大多数成功实现单粒子翻转缓解的技术方案中都起着非常重要的作用。例如,现在有很多系列化的EDAC芯片可用于空间用电子器件以及航天器电子系统中。下面具体介绍纠错码的实现过程。假设有表6-5所示的四个7 bit码的字。
表6-5 四个7 bit码的字
此时,这三个奇偶校验位依次构成一个3位的二进制字100,也就是4的二进制数。然后,该算法认为xʹ中的第4位出现错误,也就是说,xʹ=1010010应该是x=1011010,这和运算前的假设SEU错误发生位置是一致的。这个过程被称为汉明码(7/4)译码,它可以检测到上述7 bit字中的任何单个错误。这个算法在一些小字节(1 Byte=8 bit)的芯片中实现了应用。其他更复杂的EDAC算法,如在23 bit字中使用到11个冗余位(EDAC),能够纠正多达3个比特位的错误。但是,如此复杂的冗余纠错,除了占用大量的芯片“空间位置”外,还需要消耗大量系统计算机的时间来实现,特别在大型存储阵列中尤其明显。对于23 bit的字(0和1的不同组合将会有223个字),奇偶校验位算法则在212个不同组成中查询1~3个翻转错误。其他更复杂的EDAC算法方案如表6-6所示。
表6-6 各种字节长度下的EDAC参数
EDAC字比特率定义为字信息比特位长度相对字比特位总长度的比率,例如,7 bit的字,字比特率为4/7=0.571。需注意的是,表6-6中的字比特率随着字比特长度的增加而逐渐接近0.500 0。从信息理论的角度考虑,当字比特率小于系统的信息吞吐量(信道)时,如果EDAC编码使用足够长的字比特长度,则可以以任意小的错误率实现冗余检错纠错。如果字比特位长度包含足够多的EDAC位,则位错误纠正算法就可以有效地检测和纠正任意数量的位错误。理论上一个“优秀”EDAC方法是能够检测和纠正大量错误的,但是,在实际中需要的是一个切实可行的EDAC方案。
在芯片级(微电子集成电路)层面,SEU错误的减小,既可以在其制造工程中通过特定的制版工艺实现,例如高浓度掺杂掩埋层以缩短隧穿漏斗;也可以在芯片设计中实现,如引入反馈电阻后的低通滤波;还可以通过采用片上或者离线的SEU EDAC方案实现。正如所见,基于汉明码的EDAC系统能够检测单个字中的单个位错误。利用这个检测编码,在芯片中对一个字的位进行物理分离时必须仔细考虑,以使多位翻转错误最小化。早期有关于非保持系统进行低级别可靠性测试的实际应用。片上EDAC主要是通过硬件和软件的配合得到节省计算时间的目的。假如一个256 Kbit×1的DRAM,其片上继承了汉明码ECC电路。DRAM的每个字为12 bit,包括4位EDAC码和8位信息位。若引入片上的错误纠正电路,则DRAM的位阵列就必须扩展到512 bit×512 bit到768 bit×512 bit。
在片上ECC纠错系统中,重点关注的是评估同一个字中发生两个或多个SEU错误的概率。假设W2为发生连续两个或多个翻转错误的12 bit字的数量,定义在数据存储时间Ts内发生SEU错误总数为nT,其概率定义为P(W2>1,nT≥2),由二项分布可得:
由二项分布的基本特性可知:
(1)N=215,是DRAM的12 bit长的字的总数量,ps=1/N是某一个字中遭受一个SEU错误的最大似然概率,(1/N)i是发生i个SEU错误的最大似然概率。
(3)因为要查找分析多位翻转的概率,所以计算DRAM中多位错误概率的求和系数i从2到nT,如果i=0(无翻转)和i=1(一位翻转)也包括在内,则相应的概率P=1,此时式(6.2-25)可写为:
DRAM存储器多位翻转错误的平均错误率R2为:
R2称为错误拒绝率,它是在DRAM输出检测到的两个或多个错误与在内存单元中引起的总错误位的比值,是表征芯片ECC误差函数的主要参数。R2与nT的相互关系如图6-19所示。
图6-19 N=32 768的存储芯片ECC误差抑制比
式中,CD是每比特的数据时钟操作数;B为可寻址比特数的log2值;f是器件的时钟频率。将式(6.2-30)的Ts代入式(6.2-29)可得:
上式最右边对应于试验用的256K ECC DRAM器件的参数。DRAM的最大Ts受到刷新循环时间的限制,要对应其工作频率设置一个下限。但在SRAM器件中,由于不存在数据刷新的问题,因此不需要设置这个下限。图6-20给出了两种离子(M=1,96 MeV的12C离子和M=10,200 MeV的56Fe离子)在时钟频率为2 MHz的错误抑制比R2。
图6-20 两种离子入射时的ECC错误抑制比
从图6-20可以看出,要提高器件ECC SEU纠错能力,必须提高工作频率f。
对于有三模冗余TMR和多数表决器的EDAC系统,实现了对之前EDAC方案的改进,其主要用于SRAM存储器,但也可以根据具体使用要求与DRAM架构的存储器配合使用。TMR是一个决策单元,信息信号被输入到三个包含三个触发器的模块中,这些触发器的输出提供给多数表决器。三个模块中的每个触发器都位于时钟电路的不同分支,一个分支上的错误就不会传播到另外两个分支上。与之前的系统一样,希望确定在给定的时钟周期内一个TMR单元中连续两个或多个错误的概率。SEU错误会在每个周期循环内被擦除。
在比特位层面,假设SEU错误统计由泊松分布确定,这是因为SEU时间通常归类为极为罕见发生的事。因此,t时刻重离子诱发k个SEU的概率P(k,t;λ)为:(www.xing528.com)
式中,λ为平均SEU率。下面简单解释TMR的触发器运行时如何受到多位翻转影响的。TMR系统中的每个触发器代表一个位,在状态1(逻辑“0”)和状态2(逻辑“1”)之间转换。当在状态2的情况下,如果被触发,可以“翻”回状态1。对于刷新周期内发生偶数个SEU的情形,触发器会在刷新之后“翻”回保持在状态1,也就是:①处于状态1时,发生第一个SEU,触发器状态转换为状态2;②处于状态2时,第二个SEU到达,触发器“翻”回状态1,刷新擦除,依次持续进行。这个过程中触发器的输出在系统中正常传播如同没有发生SEU,这时偶数个SEU(即前文说的没有发生SEU)的概率是:
式中,nT假设足够大,求和指数k接近nT,使得nT对概率的影响很小,如式(6.2-33)“近似等于”符号所示。类似地,当发生奇数个SEU时,其等效于发生了一个SEU,概率为:
在字层面,ps和pf可看作是弱项分布的参数,用来计算同一个字中两个或多个SEU错误概率P(W2,nT)。如前所述,
其相应的错误抑制比r2为:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。