基于SRAM的FPGA對于空間粒子輻射非常敏感,很容易產生軟故障,所以對基于FPGA的電子系統(tǒng)采取容錯措施以防止此類故障的出現是非常重要的。三模冗余(TMR)方法以其實現的簡單性和效果的可靠性而被廣泛用于對單粒子翻轉(SEL7)進行容錯處理。但傳統(tǒng)TMR方法存在系統(tǒng)硬件資源消耗較多且功耗較大等問題??偨Y了傳統(tǒng)TMR方法存在的問題,分析了一些近年來出現的改進的TMR方法的優(yōu)劣,針對其存在問題指出了改進策略,并展望了TMR技術的發(fā)展趨勢。
引言
軟故障是是由粒子和PN結相互作用引起的一種暫態(tài)故障,軟故障對在基于SRAM的FPGA上實現的電路具有特別嚴重的影響。由于三模冗余(Triple Modular Redundancy,TMR)技術簡單性以及高可靠性,它是一個被廣泛使用的針對于FPGA上的單粒子翻轉(Single-Event Upset,SEU)的容錯技術。文獻中表明TMR大幅度提高了FP-GA在SEU影響下的可靠性。盡管TMR能有效提高設計的可靠性,但是由于要實現額外的模塊與布線,它對硬件資源以及功耗消耗較大,而且工作速度也受到影響。這都限制了傳統(tǒng)TMR的使用。隨著電子技術特別是部分可重構技術發(fā)展,出現了多種改進的TMR技術,它們都針對性地解決了傳統(tǒng)TMR方法所存在的問題,使得TMR技術得到發(fā)展。本文首先介紹了傳統(tǒng)TMR的原理,接著總結了其所存在的問題,然后對改進的TMR技術的優(yōu)劣進行了全面的分析,最后對TMR技術發(fā)展趨勢進行了展望。
1 常規(guī)TMR方法及存在的問題
TMR的基本概念是用三個相同的模塊分別實現相同的功能,最后在輸出口通過一個多數表決器對數據進行選擇以實現容錯的目的。TMR的使用是建立在某一個時刻錯誤只出現在一個模塊里的基礎上,而實際上,因為在不同的模塊里同時出錯的概率是比較低的,而且實現過程直接、簡單,所以TMR是現在比較有效且被大量使用的一種容錯的方法。TMR主要被廣泛用于防止由輻射引起的SEU對系統(tǒng)的影響,由于它的使用使FPGA在SEU影響下的可靠性得到很大提高。常規(guī)TMR方法的基本結構如圖1所示。
盡管TMR可以有效提高設計的可靠性,但是它也存在很多不足之處。主要有以下幾點:
(1)它不能對出錯的模塊進行修復。當一個模塊出錯后,我們只是將錯誤通過多數表決器屏蔽,但是錯誤模塊仍然存在。而且一般的TMR也不能對錯誤進行檢測和定位,以便系統(tǒng)進行修復。如果出現的錯誤得不到及時修復,那么當再次出現錯誤時TMR將失效。
(2)很多研究只是考慮到單個錯誤的影響,而忽略了多個SEU同時出現的可能,盡管出現這種情況的概率較低,但卻是存在的。實驗也表明TMR對減弱單個SEU產生的影響是非常有效的,但SEU在配置存儲器中積累會使效果降低。
(3)普通TMR資源開銷大,資源利用率低。普通TMR是對整個設計或者較大的模塊進行三模冗余,粒度比較大,它的資源開銷相比原始電路增大200%。如果受到FPGA硬件資源和功耗等設計約束的限制不能對整個電路或者模塊實現TMR,那么會造成資源浪費。
(4)由于電路的倍增使得功耗增大,而且由于表決器的存在以及其他一些額外的布線使得速度降低。
(5)表決器本身也可能出錯,而一般的TMR的表決器沒有自檢錯能力,也不具備抗輻射能力。
(6)當采用三模冗余的電路驅動沒有采用冗余的電路時,需要一個表決器將三個信號合為一個信號。當沒有采用冗余的電路驅動采用三模冗余的電路時需要通過額外的布線將一路信號擴展稱為三路信號。因為邏輯電路和布線資源都對SEU敏感,所以這樣的結果會降低系統(tǒng)可靠性。
2 改進的TMR方法
2.1 TMR與Scrubbing結合
由于TMR本身不具備錯誤模塊修復能力,若僅一個模塊出現錯誤時,系統(tǒng)功能不受影響,但如果在另一個模塊出現錯誤前不能對已出現的錯誤模塊進行修復,那么冗余方法會失效。所以當出現一個錯誤的時候,必須及時地對出錯的模塊進行修復。
隨著動態(tài)可重構技術的發(fā)展,出現了Scrubbing這種對FPGA進行配置的方法。由于對于空間電子系統(tǒng)來說影響最嚴重的是SEU等軟故障,而軟故障可以通過重構來解決,所以周期性地對配置存儲器進行刷新可以實現對這類錯誤的修復。
Scrubbing和TMR配合使用對防止SEU的產生可以起到很好的效果。但很多研究同樣只考慮到單個錯誤的影響,而忽略了多個SEU同時出現的可能性。理論上一個快速的刷新率可以保證某一時間內只有一個錯誤的存在。然而實際中錯誤的出現是隨機的,這意味著任何刷新率都不能保證在一個刷新周期內最多只出現一個錯誤。在實際中使用這種方法時,必須通過復雜的實驗過程對SEU出現的概率進行估計。選取Scru-bbing的刷新率的經驗原則是使刷新率比估算的出錯率高一個數量級。而現在隨著FPGA的規(guī)模越來越大,用來裝載整個配置位流的時間會達到幾百毫秒,刷新率更得不到保障,且系統(tǒng)功耗增大。
隨著部分TMR的實現,可以設計出具有檢錯和定位功能的表決器,當某個模塊出錯時,表決器的信號直接觸發(fā)重構功能,動態(tài)地只對出錯部分的電路進行重構。這樣可以解決Scrubbing時間和功耗的問題,并為防止錯誤積累提供了解決途徑。
為了防止表決器出錯,表決器可以采用對輻射不敏感的器件來實現而替代基于SRAM的材料,這樣提高了表決器的穩(wěn)健性。文獻也提出了一種改進的表決器。它不再使用多數表決器對三個冗余模塊的輸出進行表決,而是將三個冗余模塊相應的輸出通過三態(tài)緩沖器和少數表決器后分別由FPGA的三個輸出管腳輸出,最后在印刷電路板(PCB)上“線或”為一個信號。少數表決器電路負責判斷本冗余模塊的信號是否是少數
值,如果是少數值,則相對應的緩沖器輸出高阻,如果不是,則使相應的信號正常輸出。
Readback是在Scrubbing的基礎上發(fā)展起來的。它是指將配置數據回讀與最初的配置數據進行比較,發(fā)現錯誤后進行重構。文獻中使用了這樣的方法,另外它還采用了糾錯碼來保護配置數據。每一個配置幀的數據被12位的see-dec漢明碼保護,而且FPGA中每個基本單元的識別碼都不一樣,通過ICAP(InternalConfiguration Access Port)回讀配置文件后,糾錯碼可以給出錯位的位置。
Scrubbing可以在不中斷電路工作的情況下修復SEU在LUT、布線矩陣和CLB中所造成的功能錯誤。但是它不能改變LUT中觸發(fā)器中的內容,所以它也就不能重置寄存器的狀態(tài)。當存儲單元的值發(fā)生了翻轉,此時只能通過系統(tǒng)復位來得到修復。然而系統(tǒng)復位將使系統(tǒng)功能中斷,嚴重影響系統(tǒng)的性能。
2.2 小粒度TMR技術
隨著部分動態(tài)重構技術的出現,產生了小粒度的TMR方法??梢砸暂^小的粒度為步長,采用合理的布局與布線實現TMR以達到要求的資源開銷并得到最大的可靠性。文獻中對在出現多個錯誤的情況下不同粒度TMR的容錯性能進行了實驗分析,結果表明小粒度TMR比以整個系統(tǒng)為粒度進行TMR的效果好。
在全局TMR不可行的情況下(例如資源有限),小粒度TMR是一個較好的選擇,可以在使用較少資源的情況下提高系統(tǒng)的可靠性。由于不是對所有的模塊都采用冗余措施,所以在實現的時候必須著重于對那些可以相對更高地提高系統(tǒng)可靠性的模塊應用TMR技術。此時表決器的數量和位置也是一個需要考慮的問題。由于采用三模冗余的模塊前后需要額外的布線,而邏輯電路和布線資源都對SEU敏感,所以這樣的結果會降低系統(tǒng)可靠性。如圖2所示,圖中陰影部分是對SEU敏感的,由圖可以看出(c)中敏感的部分比(b)中多,這是由于表決器和額外的布線造成的。所以需要限制三模冗余電路和未采用三模冗余的電路的轉變,這樣可以通過集中使用三模冗余技術而提高系統(tǒng)可靠性。
為了選擇需要進行三模冗余的模塊并進行合理的布局布線,將系統(tǒng)出現的錯誤分為持續(xù)性錯誤和非持續(xù)性錯誤。持續(xù)性的錯誤是指由SEU產生的改變了電路內部狀態(tài)的錯誤;非持續(xù)性錯誤是指可以通過FPGA重構而消除的錯誤,而持續(xù)性錯誤在重構后依然存在。
結合以上的分析,實施部分TMR的優(yōu)先級別如下:
第一級是會產生持續(xù)性錯誤的部分。
第二級是會導致能產生連續(xù)性錯誤電路部分出錯的電路,以降低TMR和非TMR之間的轉換為準則。
第三級是會產生持續(xù)性錯誤電路的前向部分,同樣以降低TMR和非TMR之間的轉換為準則。
第四級是與會產生持續(xù)性錯誤電路部分獨立的部分。
可以通過靜態(tài)的分析來對電路進行劃分。這里存在的問題是在標準的全局TMR中,所有的輸入、輸出以及時鐘都進行了三模冗余,而使用部分TMR時,對I/O以及時鐘的冗余有可能不能被實現。和沒有采用TMR的邏輯電路一樣,沒有進行TMR的時鐘和I/O同樣可以產生不能被檢測的錯誤。
由實驗結果來看,由于此方法主要著重于能產生持續(xù)性錯誤的電路部分,所以當所使用的冗余資源增多時,持續(xù)性的錯誤出現的幾率很快的降低,最終幾乎全部被克服掉。所以采用部分TMR可以在資源和可靠性間達到平衡,在最小限度影響可靠性的條件下,最大限度地提高資源利用率。
另外,一個翻轉有可能改變配置存儲器中控制布線的配置位,而使得兩個不同冗余模塊間的連線短路,這樣一個翻轉影響了TMR中不止一個模塊,導致輸出錯誤。而配置資源中的90%都用來控制布線,所以這個問題是需要考慮的。產生這種錯誤的可能性還依賴于TMR的布局,而TMR的布局直接依賴于多數表決器的數量。當表決器增多時,模塊之間需要額外的連接,所以各模塊必須靠得很近,這樣使得一次翻轉導致模塊之間短路的可能性增加。為了降低會影響TMR穩(wěn)健性的產生改變布線的錯誤的可能性,必須最大可能地減少各個模塊之間的連接。如果多數表決器的數量可以被降下來,那么模塊之間的連接可以減少。
解決這個問題的方法是采用較大粒度的TMR以降低它們之間的連接,且表決器只應用在電路輸出部分。但同時又出現了一個新的問題,例如為對存儲單元的狀態(tài)進行修復,Xilinx提出了將表決器應用在有寄存器的地方并加入反饋以糾正翻轉對寄存器中值的影響的XTMR方法,如果內部的表決器被去掉,那么出錯部分存儲單元的錯誤將得不到糾正,所以重構后它與其他模塊工作的狀態(tài)不同步。
文獻中解決這個問題的方法是通過從外部存儲器中讀取存儲的工作狀態(tài)。但是這個方法需要三個模塊離線后才能進行狀態(tài)的存儲和重置進而達到同步。顯然可行性不高,尤其是對實時性要求高的電路。
針對此問題,文獻提出了一種同步技術,該技術TMR系統(tǒng)中采用狀態(tài)寄存器復制機制,并在三個冗余模塊之間引入數據通路來傳輸狀態(tài)寄存器的數據。當某一個冗余模塊發(fā)生故障被局部重構后,能夠通過接受主控制器的令牌,從正常模塊復制狀態(tài)寄存器的數據來完成同步而及時地恢復工作。該方法縮短了故障模塊從修復到重新加入系統(tǒng)工作的時間,從而減小發(fā)生故障積累的概率,提高冗余系統(tǒng)的可靠性。
另一種方法是預測其他模塊最快會達到的狀態(tài),然后對重構后的模塊進行狀態(tài)的預置。這時只需使要重構的模塊停止工作而不影響其他兩個模塊的工作,當工作模塊的狀態(tài)和預置的狀態(tài)同步時,三個模塊又一起工作。此時狀態(tài)選擇是一個問題,這個狀態(tài)到達的頻率必須很高,而且會在較快時間內到達,另外多個狀態(tài)可以提高效率但同時會使預置信號寬度增加。
如果寄存器中狀態(tài)不可預測,例如寄存器鏈和加法器,那么不能使用這個方法,所以這種方法需要改進以提高其適應性。在TMR各模塊布線時,盡量將它們相隔有一定的距離,這樣也可以降低一個模塊出現錯誤后對其他模塊造成影響的可能性。2.3 基于對FPGA基本單元結構改進的TMR技術
因為TMR資源消耗較大,一般方法中由于布線以及表決器的實現,當粒度越小耗費的資源更多。文獻提出了一種比較新穎的小粒度的方法,它對基于SRAM的FPGA的結構進行了一些改變(LUT及CLB結構),以小粒度來實現TMR但資源消耗卻得到降低。
文中選用Xilinx Virtex-5系列芯片。其基本結構是由兩個5輸入的LUT實現的一個6輸入的LUT。如圖3所示。如果低五位輸入數據相同那么可以實現兩個5輸入的LUT。在有些情況下,只需要5輸入的LUT,此時另一個LUT沒有被使用。如果在布局時使其總滿足這種情況,那么可以用留下的資源來實現TMR。
一個TMR需要兩個LUT,而兩個TMR只需要三個LUT,需要在LUT內部實現表決器、報錯電路以及其他的一些控制線,這增加了LUT內部的布線和延遲。
這種方法的優(yōu)點是粒度減小,可靠性增加,資源消耗少,可通過檢錯和定位進行有條件的重構,減少了功耗和配置時間。實驗結過表明,相比于傳統(tǒng)的小粒度的TMR,這種方法額外資源消耗只為76.5%,而傳統(tǒng)的則達到242%。
2.4 基于空間搜索方法的TMR技術
由于部分以及小粒度TMR的出現,在FPGA和設計約束的情況下,對粒度以及電路模塊的選擇是一個關鍵的問題,而往往只知道資源、功耗及可靠性等要求,實際的布局與實現是一個棘手的問題。文獻都提出了基于空間搜索的方法。這種方法是提供資源、功耗與可靠性等參數,在各種可能的解決方法中進行搜索而得到最優(yōu)的結果。
2.5 基于時間的TMR技術
基于時間的基本思想是通過多次計算進行故障屏蔽,是對相同的計算重復進行兩次或者多次并比較結果以檢測和克服錯誤。當對某一部分的電路得到一個結果后,暫時將其存儲起來,延遲一定時間后再進行一次計算并輸出存儲,若比較結果不一致則出現了錯誤,此時再延遲相同的時間,將其輸出作為正確的結果輸出。
這種方法對于檢測瞬時故障很有效,但其容錯效果與延遲時間有關系。此方法實際上使用時間的延長換取了資源的節(jié)省,對于實時性較高的系統(tǒng)使用性較差。
2.6 基于軟、硬件冗余的TMR技術
對于在硬件上出現的不可修復的損壞,上面的方法將都會失效。此時對每個模塊中采用三個不同的版本的文件(一個使用,兩個備份)且每個模塊還有1/4的硬件冗余資源。如果出現了硬件故障,則首先用其他版本對其進行重新配置,如果這樣問題還得不到解決,那么通過使用額外的冗余資源重新布局以繞過出錯的部分。但是由于對冗余資源及存儲單元的要求,這種方法進一步增加了資源的消耗。
3 TMR技術發(fā)展展望
基于以上的分析,用圖4所示的框圖來描述TMR技術出現的問題與改進方法之間的關系。由于硬件存在故障積累的問題,所以在系統(tǒng)可靠性的要求下產生出了多種新的基于TMR的解決辦法,不過這些技術都只是針對某些問題而提出的,它只解決了部分問題同時也帶來了一些新的問題,所以基于TMR的容錯技術仍然不夠成熟。
不過其中小粒度的TMR技術是一種靈活性很大的方法,它結合其他的一些方法可以在節(jié)約資源的基礎上達到較好的性能,基于小粒度的TMR的技術將會是TMR技術的一個主要發(fā)展方向,需要進一步解決由于布線資源相對增多而對系統(tǒng)可靠性的影響。另外,由于小粒度TMR的實現需要對系統(tǒng)的各部分電路進行選擇并進行布局,所以TMR實現的自動化也是一個需要研究的方向。
4 結語
總結了TMR技術存在的突出問題,研究了這些新方法,分析了其優(yōu)勢以及存在的問題并指出了相應的解決辦法。TMR技術的發(fā)展應該以高效的實現方法及可靠性為方向,以穩(wěn)健的評估策略為基礎,根據所要達到的參數要求,以較高的自動化的方式在不同的粒度和布局上進行權衡而得到最終的TMR解決方案。