|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于SRAM的现场可编程门阵列(Field Programmable Gate Array,FPGA)对于带电粒子的辐射特别敏感,尤其是近年来高密度集成芯片的出现,电路容量增大、操作电压降低使得它们在辐射环境下的可靠性降低。其中软故障是主要的故障,它是由粒子和PN结相互作用引起的一种暂态故障,软故障对在基于SRAM的FPGA上实现的电路具有特别严重的影响。由于三模冗余(Triple Modular Redundancy,TMR)技术简单性以及高可靠性,它是一个被广泛使用的针对于FPGA上的单粒子翻转(Single-Event Upset,SEU)的容错技术。
3 u% y$ ?4 c2 j8 M文献中表明TMR大幅度提高了FP-GA在SEU影响下的可靠性。尽管TMR能有效提高设计的可靠性,但是由于要实现额外的模块与布线,它对硬件资源以及功耗消耗较大,而且工作速度也受到影响。这都限制了传统TMR的使用。随着电子技术特别是部分可重构技术发展,出现了多种改进的TMR技术,它们都针对性地解决了传统TMR方法所存在的问题,使得TMR技术得到发展。本文首先介绍了传统TMR的原理,接着总结了其所存在的问题,然后对改进的TMR技术的优劣进行了全面的分析,最后对TMR技术发展趋势进行了展望。5 j, @ n& b- b* d4 b
1 常规TMR方法及存在的问题& c/ w+ s' B. a- E$ @
$ Y) @" t& m7 I2 }4 Y
TMR的基本概念是用三个相同的模块分别实现相同的功能,最后在输出口通过一个多数表决器对数据进行选择以实现容错的目的。TMR的使用是建立在某一个时刻错误只出现在一个模块里的基础上,而实际上,因为在不同的模块里同时出错的概率是比较低的,而且实现过程直接、简单,所以TMR是现在比较有效且被大量使用的一种容错的方法。TMR主要被广泛用于防止由辐射引起的SEU对系统的影响,由于它的使用使FPGA在SEU影响下的可靠性得到很大提高。常规TMR方法的基本结构如图1所示。# Y; U6 d1 B O s( N; g6 [9 w/ C
4 {( [9 b- t3 ]7 C$ O8 A% g& u
尽管TMR可以有效提高设计的可靠性,但是它也存在很多不足之处。主要有以下几点:6 x' h$ ?" H( w5 B8 f7 ~
e& S2 D3 J) F c+ F( x(1)它不能对出错的模块进行修复。当一个模块出错后,我们只是将错误通过多数表决器屏蔽,但是错误模块仍然存在。而且一般的TMR也不能对错误进行检测和定位,以便系统进行修复。如果出现的错误得不到及时修复,那么当再次出现错误时TMR将失效。
' f4 F* z: z* ?; H+ u; |(2)很多研究只是考虑到单个错误的影响,而忽略了多个SEU同时出现的可能,尽管出现这种情况的概率较低,但却是存在的。实验也表明TMR对减弱单个SEU产生的影响是非常有效的,但SEU在配置存储器中积累会使效果降低。) C! R. U% ^1 |9 d: L
(3)普通TMR资源开销大,资源利用率低。普通TMR是对整个设计或者较大的模块进行三模冗余,粒度比较大,它的资源开销相比原始电路增大200%。如果受到FPGA硬件资源和功耗等设计约束的限制不能对整个电路或者模块实现TMR,那么会造成资源浪费。4 _' L+ D- U) H* `1 U+ ~" Z5 ~
(4)由于电路的倍增使得功耗增大,而且由于表决器的存在以及其他一些额外的布线使得速度降低。
# D$ p. h1 S7 z: w" j(5)表决器本身也可能出错,而一般的TMR的表决器没有自检错能力,也不具备抗辐射能力。
& ^3 ?, H# ~3 _* \(6)当采用三模冗余的电路驱动没有采用冗余的电路时,需要一个表决器将三个信号合为一个信号。当没有采用冗余的电路驱动采用三模冗余的电路时需要通过额外的布线将一路信号扩展称为三路信号。因为逻辑电路和布线资源都对SEU敏感,所以这样的结果会降低系统可靠性。
7 f( @" X) F/ x* z" d! u0 I8 s2 改进的TMR方法
0 ~1 ~+ I: g# W; R9 w) o; z. C5 s2 a% ^- ]' j2 `+ P
2.1 TMR与Scrubbing结合1 m8 J( z! x2 y0 h6 n
! e, }. i0 x% ?6 A! o! A: g4 p
由于TMR本身不具备错误模块修复能力,若仅一个模块出现错误时,系统功能不受影响,但如果在另一个模块出现错误前不能对已出现的错误模块进行修复,那么冗余方法会失效。所以当出现一个错误的时候,必须及时地对出错的模块进行修复。! w+ P* | g) @6 G( C# z) n
% }# B8 G* v$ e9 J! P! M7 g( @, E
随着动态可重构技术的发展,出现了Scrubbing这种对FPGA进行配置的方法。由于对于空间电子系统来说影响最严重的是SEU等软故障,而软故障可以通过重构来解决,所以周期性地对配置存储器进行刷新可以实现对这类错误的修复。) l5 Q7 N2 H0 O* y2 I6 a9 [2 V) W
9 d" [* e% d5 U% d; Z3 r: s+ a" xScrubbing和TMR配合使用对防止SEU的产生可以起到很好的效果。但很多研究同样只考虑到单个错误的影响,而忽略了多个SEU同时出现的可能性。理论上一个快速的刷新率可以保证某一时间内只有一个错误的存在。然而实际中错误的出现是随机的,这意味着任何刷新率都不能保证在一个刷新周期内最多只出现一个错误。在实际中使用这种方法时,必须通过复杂的实验过程对SEU出现的概率进行估计。选取Scru-bbing的刷新率的经验原则是使刷新率比估算的出错率高一个数量级。而现在随着FPGA的规模越来越大,用来装载整个配置位流的时间会达到几百毫秒,刷新率更得不到保障,且系统功耗增大。
7 @, ~6 e9 {2 r4 ~% E1 @* O& n* n- q* P2 ~ t6 E4 Q% o( b8 H
随着部分TMR的实现,可以设计出具有检错和定位功能的表决器,当某个模块出错时,表决器的信号直接触发重构功能,动态地只对出错部分的电路进行重构。这样可以解决Scrubbing时间和功耗的问题,并为防止错误积累提供了解决途径。" p5 Z$ ?. k/ |- S
5 o, \! L$ `! K) y+ A$ o
为了防止表决器出错,表决器可以采用对辐射不敏感的器件来实现而替代基于SRAM的材料,这样提高了表决器的稳健性。文献也提出了一种改进的表决器。它不再使用多数表决器对三个冗余模块的输出进行表决,而是将三个冗余模块相应的输出通过三态缓冲器和少数表决器后分别由FPGA的三个输出管脚输出,最后在印刷电路板(PCB)上“线或”为一个信号。少数表决器电路负责判断本冗余模块的信号是否是少数值,如果是少数值,则相对应的缓冲器输出高阻,如果不是,则使相应的信号正常输出。" y& }' w6 \2 Q6 ?+ |( e
4 | |# J2 J# E% g# E
Readback是在Scrubbing的基础上发展起来的。它是指将配置数据回读与最初的配置数据进行比较,发现错误后进行重构。文献中使用了这样的方法,另外它还采用了纠错码来保护配置数据。每一个配置帧的数据被12位的see-dec汉明码保护,而且FPGA中每个基本单元的识别码都不一样,通过ICAP(InternalConfiguration Access Port)回读配置文件后,纠错码可以给出错位的位置。( q; @* f* T- C; L) x
. t4 g" B+ m" |0 j
Scrubbing可以在不中断电路工作的情况下修复SEU在LUT、布线矩阵和CLB中所造成的功能错误。但是它不能改变LUT中触发器中的内容,所以它也就不能重置寄存器的状态。当存储单元的值发生了翻转,此时只能通过系统复位来得到修复。然而系统复位将使系统功能中断,严重影响系统的性能。
$ G0 P7 R( N7 f; ?3 ^4 ~+ u4 t9 ]: H
2.2 小粒度TMR技术
4 f I0 \' @( X* b E+ J* R3 o; b( P* ?8 R
随着部分动态重构技术的出现,产生了小粒度的TMR方法。可以以较小的粒度为步长,采用合理的布局与布线实现TMR以达到要求的资源开销并得到最大的可靠性。文献中对在出现多个错误的情况下不同粒度TMR的容错性能进行了实验分析,结果表明小粒度TMR比以整个系统为粒度进行TMR的效果好。
* E2 `2 K$ o2 l' C5 V! G* }' t8 m* B8 p1 R
在全局TMR不可行的情况下(例如资源有限),小粒度TMR是一个较好的选择,可以在使用较少资源的情况下提高系统的可靠性。由于不是对所有的模块都采用冗余措施,所以在实现的时候必须着重于对那些可以相对更高地提高系统可靠性的模块应用TMR技术。此时表决器的数量和位置也是一个需要考虑的问题。由于采用三模冗余的模块前后需要额外的布线,而逻辑电路和布线资源都对SEU敏感,所以这样的结果会降低系统可靠性。如图2所示,图中阴影部分是对SEU敏感的,由图可以看出(c)中敏感的部分比(b)中多,这是由于表决器和额外的布线造成的。所以需要限制三模冗余电路和未采用三模冗余的电路的转变,这样可以通过集中使用三模冗余技术而提高系统可靠性。0 F$ m0 m& k5 h' m R' W6 h1 n1 X
! a8 N) V4 M( A+ }$ c/ _
为了选择需要进行三模冗余的模块并进行合理的布局布线,将系统出现的错误分为持续性错误和非持续性错误。持续性的错误是指由SEU产生的改变了电路内部状态的错误;非持续性错误是指可以通过FPGA重构而消除的错误,而持续性错误在重构后依然存在。
7 q2 W" G& \: u' D' p; q" j/ ?/ S# C1 F1 I% a
结合以上的分析,实施部分TMR的优先级别如下:
/ k b: r0 @! W2 }! @" o第一级是会产生持续性错误的部分。$ p' I" U1 R) @% l; N- i
第二级是会导致能产生连续性错误电路部分出错的电路,以降低TMR和非TMR之间的转换为准则。) ?5 k; b2 Z0 B Y! ?* Q: b
第三级是会产生持续性错误电路的前向部分,同样以降低TMR和非TMR之间的转换为准则。& w- J5 f0 M+ @& U3 v
第四级是与会产生持续性错误电路部分独立的部分。
/ S7 P; w/ X# O: k1 S( G
7 Y, Q' h, g, v可以通过静态的分析来对电路进行划分。这里存在的问题是在标准的全局TMR中,所有的输入、输出以及时钟都进行了三模冗余,而使用部分TMR时,对I/O以及时钟的冗余有可能不能被实现。和没有采用TMR的逻辑电路一样,没有进行TMR的时钟和I/O同样可以产生不能被检测的错误。* w8 t7 ~& c9 l$ g& V
4 Y F3 `+ Q7 u r8 S% r. n, Q由实验结果来看,由于此方法主要着重于能产生持续性错误的电路部分,所以当所使用的冗余资源增多时,持续性的错误出现的几率很快的降低,最终几乎全部被克服掉。所以采用部分TMR可以在资源和可靠性间达到平衡,在最小限度影响可靠性的条件下,最大限度地提高资源利用率。
% p& c: E6 K6 I6 I) D6 Z( I( T
% ]1 j8 p- ?% P- v* ^/ F8 M另外,一个翻转有可能改变配置存储器中控制布线的配置位,而使得两个不同冗余模块间的连线短路,这样一个翻转影响了TMR中不止一个模块,导致输出错误。而配置资源中的90%都用来控制布线,所以这个问题是需要考虑的。产生这种错误的可能性还依赖于TMR的布局,而TMR的布局直接依赖于多数表决器的数量。当表决器增多时,模块之间需要额外的连接,所以各模块必须靠得很近,这样使得一次翻转导致模块之间短路的可能性增加。为了降低会影响TMR稳健性的产生改变布线的错误的可能性,必须最大可能地减少各个模块之间的连接。如果多数表决器的数量可以被降下来,那么模块之间的连接可以减少。8 T' D0 H3 B6 B: p9 g' p
$ {" Q6 Y% l0 q) X# `
解决这个问题的方法是采用较大粒度的TMR以降低它们之间的连接,且表决器只应用在电路输出部分。但同时又出现了一个新的问题,例如为对存储单元的状态进行修复,Xilinx提出了将表决器应用在有寄存器的地方并加入反馈以纠正翻转对寄存器中值的影响的XTMR方法,如果内部的表决器被去掉,那么出错部分存储单元的错误将得不到纠正,所以重构后它与其他模块工作的状态不同步。& X1 c0 j" S, w/ Y( V
1 M7 {5 h3 P/ ^6 W
文献中解决这个问题的方法是通过从外部存储器中读取存储的工作状态。但是这个方法需要三个模块离线后才能进行状态的存储和重置进而达到同步。显然可行性不高,尤其是对实时性要求高的电路。
+ _2 U, h" V/ ?( v6 @4 _- `# T
' M1 x3 [$ _% s+ k6 e) j7 N针对此问题,文献提出了一种同步技术,该技术TMR系统中采用状态寄存器复制机制,并在三个冗余模块之间引入数据通路来传输状态寄存器的数据。当某一个冗余模块发生故障被局部重构后,能够通过接受主控制器的令牌,从正常模块复制状态寄存器的数据来完成同步而及时地恢复工作。该方法缩短了故障模块从修复到重新加入系统工作的时间,从而减小发生故障积累的概率,提高冗余系统的可靠性。( s$ V+ J" Z7 R0 L' j' y4 k
- f, M& b5 F3 L" @! x: G3 F9 B另一种方法是预测其他模块最快会达到的状态,然后对重构后的模块进行状态的预置。这时只需使要重构的模块停止工作而不影响其他两个模块的工作,当工作模块的状态和预置的状态同步时,三个模块又一起工作。此时状态选择是一个问题,这个状态到达的频率必须很高,而且会在较快时间内到达,另外多个状态可以提高效率但同时会使预置信号宽度增加。. d( r& f" K! j8 P8 G/ p% N
如果寄存器中状态不可预测,例如寄存器链和加法器,那么不能使用这个方法,所以这种方法需要改进以提高其适应性。在TMR各模块布线时,尽量将它们相隔有一定的距离,这样也可以降低一个模块出现错误后对其他模块造成影响的可能性。
* F$ g' T- U% t0 s i
9 G! }% l+ q; l5 Y2.3 基于对FPGA基本单元结构改进的TMR技术
+ _: O7 |8 ?2 \4 v
8 U- f. B$ w5 `& q" U4 J因为TMR资源消耗较大,一般方法中由于布线以及表决器的实现,当粒度越小耗费的资源更多。文献提出了一种比较新颖的小粒度的方法,它对基于SRAM的FPGA的结构进行了一些改变(LUT及CLB结构),以小粒度来实现TMR但资源消耗却得到降低。% m4 J8 `- H _0 P
! C8 O8 l- d$ ]' w* C2 y文中选用Xilinx Virtex-5系列芯片。其基本结构是由两个5输入的LUT实现的一个6输入的LUT。如图3所示。如果低五位输入数据相同那么可以实现两个5输入的LUT。在有些情况下,只需要5输入的LUT,此时另一个LUT没有被使用。如果在布局时使其总满足这种情况,那么可以用留下的资源来实现TMR。1 z6 B( i! F. N7 H) D
, F3 S4 y: i, }3 J5 v$ W3 L
一个TMR需要两个LUT,而两个TMR只需要三个LUT,需要在LUT内部实现表决器、报错电路以及其他的一些控制线,这增加了LUT内部的布线和延迟。$ ]+ E4 F+ F) q$ t+ d0 A
& {& r. L# y! R
这种方法的优点是粒度减小,可靠性增加,资源消耗少,可通过检错和定位进行有条件的重构,减少了功耗和配置时间。实验结过表明,相比于传统的小粒度的TMR,这种方法额外资源消耗只为76.5%,而传统的则达到242%。) w) P7 E2 W' }, k
0 v5 s% w7 s" H2.4 基于空间搜索方法的TMR技术
3 e: G3 S% q4 d `. x! J3 i
0 r) C# N3 G9 U8 f5 a4 A由于部分以及小粒度TMR的出现,在FPGA和设计约束的情况下,对粒度以及电路模块的选择是一个关键的问题,而往往只知道资源、功耗及可靠性等要求,实际的布局与实现是一个棘手的问题。文献都提出了基于空间搜索的方法。这种方法是提供资源、功耗与可靠性等参数,在各种可能的解决方法中进行搜索而得到最优的结果。0 F m7 i& ~* _* \
/ p& @ }. Q. N! M7 s2.5 基于时间的TMR技术; U- E" N }9 y" @& x
) x. O: j/ L; j' r, {基于时间的基本思想是通过多次计算进行故障屏蔽,是对相同的计算重复进行两次或者多次并比较结果以检测和克服错误。当对某一部分的电路得到一个结果后,暂时将其存储起来,延迟一定时间后再进行一次计算并输出存储,若比较结果不一致则出现了错误,此时再延迟相同的时间,将其输出作为正确的结果输出。0 C' h$ ?+ p u. @0 t3 ^) C: C/ Y
8 G# _9 e. `! c* d6 L9 _. C! M
这种方法对于检测瞬时故障很有效,但其容错效果与延迟时间有关系。此方法实际上使用时间的延长换取了资源的节省,对于实时性较高的系统使用性较差。- }. A* |, h3 j9 M- c
, w2 C& y" w1 A, c3 k: n2.6 基于软、硬件冗余的TMR技术$ Q' |0 d' Q0 [7 h3 a
: F' p# n% ?2 m- f3 n: ]* A
对于在硬件上出现的不可修复的损坏,上面的方法将都会失效。此时对每个模块中采用三个不同的版本的文件(一个使用,两个备份)且每个模块还有1/4的硬件冗余资源。如果出现了硬件故障,则首先用其他版本对其进行重新配置,如果这样问题还得不到解决,那么通过使用额外的冗余资源重新布局以绕过出错的部分。但是由于对冗余资源及存储单元的要求,这种方法进一步增加了资源的消耗。
; o3 y: r' C2 q/ |. q! P3 TMR技术发展展望
1 e( J1 \& Y* `2 x' t: R
1 ?" O& n0 Y" Y+ e# p( i基于以上的分析,用图4所示的框图来描述TMR技术出现的问题与改进方法之间的关系。由于硬件存在故障积累的问题,所以在系统可靠性的要求下产生出了多种新的基于TMR的解决办法,不过这些技术都只是针对某些问题而提出的,它只解决了部分问题同时也带来了一些新的问题,所以基于TMR的容错技术仍然不够成熟。
) a1 D* a) L: ]; k# K+ ]
2 V, Q7 s8 C- [, B$ f6 d不过其中小粒度的TMR技术是一种灵活性很大的方法,它结合其他的一些方法可以在节约资源的基础上达到较好的性能,基于小粒度的TMR的技术将会是TMR技术的一个主要发展方向,需要进一步解决由于布线资源相对增多而对系统可靠性的影响。另外,由于小粒度TMR的实现需要对系统的各部分电路进行选择并进行布局,所以TMR实现的自动化也是一个需要研究的方向。
" }! x6 l% a( E% ~0 X |
|