《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SRAM型FPGA的實時容錯自修復系統(tǒng)設計方法
基于SRAM型FPGA的實時容錯自修復系統(tǒng)設計方法
2019年電子技術應用第7期
徐偉杰1,謝永樂2,彭禮彪2,沈北辰3
1.長安大學 信息工程學院,陜西 西安710064; 2.電子科技大學 自動化工程學院,四川 成都611731;3.四川大學 軟件學院,四川 成都610207
摘要: 為提高輻射環(huán)境中電子系統(tǒng)的可靠性,提出了一種基于SRAM型FPGA的實時容錯自修復系統(tǒng)結構和設計方法。該設計方法采用粗粒度三模冗余結構和細粒度三模冗余結構對系統(tǒng)功能模塊進行容錯設計;將一種細粒度的故障檢測單元嵌入到各冗余模塊中對各冗余模塊進行故障檢測;結合動態(tài)部分重構技術可在不影響系統(tǒng)正常工作的前提下實現故障模塊的在線修復。該設計結構于Xilinx Virtex-6 FPGA中進行了設計實現,實驗結果表明系統(tǒng)故障修復時間和可靠性得到顯著提高。
中圖分類號: TN710
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190480
中文引用格式: 徐偉杰,謝永樂,彭禮彪,等. 基于SRAM型FPGA的實時容錯自修復系統(tǒng)設計方法[J].電子技術應用,2019,45(7):50-55.
英文引用格式: Xu Weijie,Xie Yongle,Peng Libiao,et al. SRAM based FPGA system capable of runtime fault tolerance and recovery[J]. Application of Electronic Technique,2019,45(7):50-55.
SRAM based FPGA system capable of runtime fault tolerance and recovery
Xu Weijie1,Xie Yongle2,Peng Libiao2,Shen Beichen3
1.School of Information Engineering,Chang′an University,Xi′an 710064,China; 2.School of Automation Engineering,University of Electronic Science and Technology of China,Chengdu 611731,China; 3.College of Software Engineering,Sichuan University,Chengdu 610207,China
Abstract: In order to enhance the reliability of electronic system working in radiation environment, a reliability enhanced SRAM based FPGA system with runtime fault recovery is presented in this work. Coarse-grained TMR architecture and fine-grained TMR architecture are proposed to achieve the ability of fault tolerance. Fine-grained fault detection units are inserted in each redundancy module to mask the faulty module. The technique of partial dynamic reconfiguration is used to repair the faulty module without interrupting other parts of the system。The scheme is implemented in Xilinx Virtex-6 FPGA, and the results show that the improvements in recovery time and reliability are achieved by the proposed technique.
Key words : reliability;fault tolerance;fault recovery;TMR;dynamic reconfiguration

0 引言

    隨著航天技術的發(fā)展,空間任務日益復雜化、多樣化,未來航天系統(tǒng)對處理器的性能要求越來越高。在一些航天設備如星載ATP等系統(tǒng)的電子模塊設計中,基于SRAM的現場可編程門陣列(FPGA)得到了日益廣泛的應用??臻g環(huán)境中的電子系統(tǒng)設計,不僅要滿足高性能,而且其數據處理、傳輸和控制的準確性和可靠性也必須得到保證。對于機載、星載、空間武器和其他空間應用電子系統(tǒng),往往暴露在形形色色的電磁輻射環(huán)境中,如α粒子、宇宙射線、外太空強輻射等等惡劣環(huán)境,加之一些電子系統(tǒng)工作在地面的高電磁輻射環(huán)境中,這些輻射環(huán)境中充滿了各種高能粒子,高能粒子撞擊工作中的電子器件會引發(fā)輻射效應,如單粒子翻轉(SEU)等,并導致器件發(fā)生故障,由輻射效應引起的軟錯誤是導致空間環(huán)境中電子系統(tǒng)失效的重要原因之一[1]

    在提高系統(tǒng)可靠性與安全性方面,避錯與容錯技術是常用的兩種關鍵技術。微電子抗輻射加固技術[2],通過對材料選取、工藝結構設計等方面進行加固設計,在物理層消除導致?lián)p傷的各類寄生參數, 能有效提高電子器件的抗輻射能力。但是僅在物理層上對系統(tǒng)進行故障防護不能滿足惡劣環(huán)境中的系統(tǒng)可靠性要求,還需要從電路設計方面對系統(tǒng)功能進行保護。運用錯誤校正碼(ECC)技術[3],在數據包的后端添加額外的校驗數據位,來實現讀取/寫入數據的準確性,能在一定程度上對存儲器進行檢錯和糾錯。容錯設計技術,如采用冗余設計來“屏蔽”或“隔離”故障,如信息冗余[4]、硬件冗余[5]等,進而在一定時期內將故障的影響掩蓋起來,使發(fā)生故障的電子系統(tǒng)在一定時期內仍能正常工作,但這種方式并未排除故障,隨著故障的累積和疊加,系統(tǒng)仍然可能失效,所以賦予系統(tǒng)故障自修復能力能有效減少故障累積,提高系統(tǒng)的可靠性。

    本文從故障容錯和故障自修復角度對系統(tǒng)進行芯片級的可靠性設計,提出了一種基于SRAM型FPGA的實時容錯自修復系統(tǒng)結構,并將該設計結構在Xilinx Virtex-6 FPGA上進行了設計驗證。

1 基于動態(tài)部分重構的模塊修復

    FPGA的配置可分為靜態(tài)配置和動態(tài)配置,靜態(tài)配置通常對整個FPGA模塊進行重新配置,系統(tǒng)功能在配置過程時中斷,并在配置結束后改變系統(tǒng)功能。動態(tài)配置,又稱為動態(tài)部分重構,能夠在不干擾FPGA內部其他模塊工作的同時動態(tài)地對部分區(qū)域的邏輯功能進行修改。其核心思想是將FPGA內部的邏輯資源從物理布局上劃分為靜態(tài)區(qū)域和若干個動態(tài)區(qū)域。每個動態(tài)區(qū)域可以對應有多個配置文件,以實現不同的功能,將這些配置文件事先存放在片外存儲器中。在系統(tǒng)運行的不同時刻,根據系統(tǒng)的實際需求加載不同的配置文件到同一個動態(tài)區(qū)域來實現相應的邏輯功能。在某一動態(tài)區(qū)域進行功能切換時,不影響靜態(tài)區(qū)域和其他動態(tài)區(qū)域的邏輯功能,系統(tǒng)依然處于連續(xù)運行狀態(tài)。

    動態(tài)部分重構技術能對FPGA的部分資源實現分時復用,使芯片能夠在不同時刻實現不同的功能,提高了芯片資源的利用率,已廣泛應用于工業(yè)系統(tǒng)設計中,如文獻[6]中結合動態(tài)部分重構技術對工業(yè)傳感器數據采集系統(tǒng)進行設計,針對不同的傳感器切換不同的功能。該技術還可應用于可重構計算[7]、可進化硬件[8-9]、容錯設計[10-14]等方面。將動態(tài)部分重構技術和冗余技術結合,即將冗余設計中各冗余模塊分別置于一動態(tài)區(qū)域中,在故障發(fā)生時通過動態(tài)重構對故障模塊進行修復,可以避免故障的累積和疊加,在容錯的同時賦予系統(tǒng)故障自修復能力。

2 粗粒度和細粒度的三模冗余自修復結構

2.1 粗粒度的三模冗余設計結構

    典型的模塊冗余技術——N模冗余設計:將功能模塊復制為N份,N個模塊具有相同的輸入,N個模塊的輸出經過多數表決器表決輸出。N模冗余系統(tǒng)在工作過程中能同時容忍不超過半數的冗余模塊發(fā)生故障而不影響最終的系統(tǒng)輸出。隨著冗余模塊的數量增加,系統(tǒng)的容錯能力提高,但同時系統(tǒng)的硬件資源開銷和功耗增大,綜合考慮容錯能力和資源開銷,三模冗余(TMR)技術具有最高的性能表現。

    FPGA的系統(tǒng)通??梢苑譃槎鄠€功能模塊,粗粒度的三模冗余設計結構以整個功能模塊為單位進行冗余設計,如圖1所示,即將整個功能模塊作為一個冗余單位,將整個功能模塊復制三份,將每個功能單元模塊FU1~FU3配置到單獨的部分重構模塊(PRM)中,使得每個冗余模塊都可以獨立被修復。表決器選擇多數的輸入結果進行輸出。在粗粒度的三模冗余設計結構中,只要兩個冗余模塊的輸出結果正確,就能保證整個模塊輸出正常,當其中任意模塊發(fā)生故障時,通過系統(tǒng)的故障檢測機制可進行故障定位,隔離故障區(qū)域并進行自修復操作。

wdz4-t1.gif

2.2 細粒度的三模冗余設計結構

    采用粗粒度設計結構能有效提高系統(tǒng)的可靠度,但其仍然存在一些不足,一是當多數表決器出現故障時整個自修復結構本身不可靠;二是由于模塊粒度較大,一些不能導致模塊功能失效的隱性故障持續(xù)累積,容易導致多個模塊同時故障,使得防護結構失效。本文中細粒度的三模冗余設計結構能有效減少故障累積,該設計結構將一功能模塊拆分為若干個獨立的時序元件和組合邏輯部分,本文將該設計結構利用圖形化表示來說明,將功能單元模塊中的組合邏輯表示為CG,時序元件表示為SE,則利用有向圖表示方法可以將圖2(a)電路表示為圖2(b)。

    細粒度的三模冗余容錯自修復結構建立在有向圖表示方法基礎之上,其核心思想是,將電路分割為邏輯電路和時序電路,在時序電路輸出插入多數表決器,然后再對原始電路進行三模冗余設計,使得此自修復結構具有三個表決器,因此加強了此結構的故障容錯能力,同時減輕了時序電路引起的錯誤累積,可以成功避免域交叉錯誤的出現。圖2(a)表示的原始電路,利用有向圖表示方法將原始電路分割開來如圖2(b)所示,利用TMR三模冗余技術將其容錯化如圖2(c)所示。MV表示多數表決器(Multiple Voter)在電路時序元件輸出之后插入,利用其三模冗余結構,增強了電路容錯能力。當D1模塊的組合、時序電路以及表決器出現故障時,D2模塊和D3模塊通過多數表決器可以檢測到此類故障,并經中斷喚醒處理器進行部分動態(tài)重構處理,使得D1部分重構區(qū)域得以自修復。

wdz4-t2.gif

    細粒度的三模冗余容錯自修復結構同時降低了時序電路引起的錯誤累積的概率,可以成功避免域交叉錯誤的產生。當D1模塊的SE2電路和D3模塊的CG4電路同時出現故障的時候,由于在時序電路的輸出端用表決器成功地將SE2故障進行檢測和隔離,不會傳遞積累影響下一級的CG4錯誤,因此可以成功避免域交叉錯誤的產生。

2.3 可靠度對比

    功能模塊在FPGA內部的實現可以用邏輯資源來表示,如查找表(LUTs)、觸發(fā)器(Flip-Flops)、塊存儲器(BRAM)等。而各邏輯資源的連接和使用通過比特流文件配置來實現。比特流文件由若干個配置幀(frame)組成,配置幀又包含若干個表示配置信息的比特位。在輻射環(huán)境中,當FPGA中的電路模塊發(fā)生單粒子翻轉效應時,并不是模塊任意比特位發(fā)生翻轉就會導致模塊功能失效,該模塊功能往往由一些關鍵比特位所決定。考慮該粗粒度的三模冗余設計結構的容錯能力,討論馬爾科夫模型下的三模冗余結構[15],假設功能模塊在時間t內功能正常的可靠度隨著時間的推移呈指數遞減,其可靠度可以表示為:

    wdz4-gs1.gif

其中λm表示功能模塊m的故障率,其由比特位在單位時間內的翻轉速率和模塊對應的關鍵比特位數量所決定。對于一個三模冗余系統(tǒng)來說只有當兩個或者兩個以上的模塊發(fā)生錯誤時系統(tǒng)防護功能才會失效,假設三模冗余系統(tǒng)表決邏輯功能正常,那么對于該粗粒度的三模冗余設計結構其可靠度可以表示為:

wdz4-gs2-3.gif

    將提出的細粒度的三模冗余結構和粗粒度的三模冗余結構的可靠度進行比較,其可靠度示意圖如圖3所示。細粒度的三模冗余結構容錯可靠度相對于粗粒度的可靠度有顯著的提高,但同時細粒度的三模冗余結構會引入額外表決器和故障檢測邏輯,導致額外資源開銷的增加。細粒度的三模冗余結構更適用于對故障率高的電路模塊進行防護。

wdz4-t3.gif

3 實時故障自修復系統(tǒng)設計

3.1 實時故障自修復系統(tǒng)整體設計結構

    圖4給出了一種基于Xilinx FPGA實現的故障自修復系統(tǒng)整體結構設計方案。整個系統(tǒng)實現基于MicroBlaze軟核的片上微處理器系統(tǒng),主要劃分為兩個部分:靜態(tài)區(qū)域和動態(tài)部分重構區(qū)域。靜態(tài)區(qū)域主要包括:軟核MicroBlaze、串口控制器、Flash控制器等,這部分區(qū)域包括了整個關鍵處理模塊不適于動態(tài)重構的模塊,主要負責運行低優(yōu)先級程序和檢測動態(tài)重構區(qū)域的正常運行。動態(tài)部分重構區(qū)域是整個電子系統(tǒng)自修復的基礎,所有的自修復操作都在其他模塊監(jiān)測、控制下有序地進行,保證整個電子系統(tǒng)不間斷正常的工作,其中各個冗余模塊的標準配置文件存放于片外Flash中。當系統(tǒng)收到重構請求時,由Flash控制器讀取片外存儲器中對應模塊的比特流文件并通過內部配置訪問端口(ICAP)寫入重構區(qū)域。動態(tài)部分重構區(qū)域結合上文提出的容錯方案進行容錯設計,同時MicroBlaze負責控制和監(jiān)測每個動態(tài)重構單元的工作情況:比如當設計動態(tài)重構單元為三模冗余故障容錯模塊時,當此模塊內部故障檢測單元檢測到發(fā)生故障時,通過中斷的形式將信息發(fā)送到MicroBlaze中,MicroBlaze讀取此模塊的狀態(tài)寄存器以判明故障類型和區(qū)域,根據應用場合不同選擇不同的故障自修復策略將此模塊進行有序的自重構,實現故障自修復的同時并不影響系統(tǒng)正常運行。

wdz4-t4.gif

3.2 內嵌式故障檢測結構

    采用一內嵌式故障檢測結構對冗余模塊進行故障檢測,該方案將故障檢測單元嵌入到冗余模塊中。圖5(a)所示為三模冗余容錯自修復結構中以邏輯門描述的故障檢測單元示意圖,該故障檢測單元由多數表決器和異或非門構成,將多數表決器的輸出和檢測的冗余模塊的輸出接到異或非門的輸入端,多數表決器的輸出作為錯誤標志信號FLAG。當檢測的冗余模塊的輸出和表決器的輸出相同,則異或門輸出為邏輯1,表示該檢測的冗余模塊無故障發(fā)生,若異或門輸出邏輯為0,則表明檢測的冗余模塊發(fā)生故障或故障檢測單元自身發(fā)生故障。具有該故障檢測單元的三模冗余結構如圖5(b)所示。

wdz4-t5.gif

    功能模塊在FPGA內部的實現可以用邏輯資源來表示,如查找表(LUTs)、觸發(fā)器(Flip-Flops)、塊存儲器(BRAM)等。而各邏輯資源的連接和使用通過比特流文件(Bitstream)配置來實現。比特流文件由若干個配置幀(frame)組成,功能模塊大小也可通過配置幀的數量來表示。

    該檢測單元從細粒度的角度對電路輸出的每一位進行比較,也就是說對于一個輸出信號為N位的功能模塊來說,采用該故障檢測單元會對每一個冗余模塊會產生N個故障標志信號。然而對于一個冗余模塊來說只需要一個標志信號來表明該模塊是否發(fā)生故障。對此提出了一種將標志信號進行融合的邏輯結構,該融合邏輯結構采用FPGA片內進位鏈邏輯來實現。如圖6所示,以4位的輸出信號為例,故障檢測單元對TR1模塊的輸出位進行檢測,將故障標志信號分別接入進位鏈的C0~C3端口。進位鏈CIN端口輸入邏輯1,當無故障發(fā)生時進位鏈輸出邏輯1,當其中一位或者多位錯誤發(fā)生時,進位鏈中的二選一選擇器選擇故障標志信號進行傳遞,進位鏈輸出邏輯0,表示TR1模塊發(fā)生故障。對于模塊輸出信號位數少于4位的情況,可以將進位鏈空閑的輸入端輸入邏輯1即可。對于模塊輸出信號位數大于4位的情況,可以將前一進位鏈的標志輸出FLAG接入后一進位鏈的CIN輸入端,將進位鏈串行連接。

wdz4-t6.gif

4 實驗設計與分析

    本節(jié)中將上文提出的故障自修系統(tǒng)在Xilinx  XC6VLX240T-1FF1156 FPGA上進行設計實現,實驗中靜態(tài)區(qū)域包含了一基于MicroBlaze核的片上微處理器系統(tǒng),該微處理器系統(tǒng)主要負責與上位機進行交互、響應重構請求、控制片外存儲器讀取比特文件數據和控制內部配置訪問端口(ICAP)對重構區(qū)域進行重配置等任務。動態(tài)區(qū)域中將ITC99 benchmark電路中8個不同粒度的標準電路進行冗余設計,以分析不同粒度模塊的故障自修復時間。

4.1 FPGA系統(tǒng)設計流程

    實驗中對系統(tǒng)進行設計實現采用的是基于Xilinx ISE開發(fā)工具的設計流程,設計流程如圖7所示。在ISE頂層設計規(guī)劃中對系統(tǒng)各模塊進行劃分,定義系統(tǒng)中的各靜態(tài)模塊和動態(tài)模塊,并對動態(tài)模塊進行冗余保護設計。片上微處理器系統(tǒng)在Xilinx的XPS設計工具中進行設計搭建,并在SDK設計工具中對微處理器系統(tǒng)進行軟件功能編譯,PlanAhead設計工具可通過圖形界面(GUI)對FPGA進行早期分析和布局規(guī)劃功能,施加物理約束,分析布線和時序的結果。實驗中各動態(tài)模塊的區(qū)域劃分在PlanAhead中進行設計。PlanAhead中比特流文件生成完成后,需要進行軟硬件協(xié)同處理,即將XPS生成的塊存儲器映射文件(*.bmm)、SDK生成的可執(zhí)行文件(*.elf)和PlanAhead生成的全局比特流文件合為一個新的比特流文件,借助Xilinx命令行工具ISE Design Suite Command Prompt,通過命令指令合成最終的比特流文件。

wdz4-t7.gif

4.2 實驗結果分析

    實驗中各動態(tài)模塊的區(qū)域劃分如圖8所示,動態(tài)區(qū)域內的邏輯資源能夠滿足各模塊功能實現。各動態(tài)模塊的資源開銷如表1所示,由實驗結果可知,模塊粒度越小其冗余設計中表決器和故障檢測結構所占的資源比例則越大,即系統(tǒng)模塊粒度劃分越小、重構區(qū)域劃分越多,則容錯自修復設計所帶來的額外資源開銷越大。

wdz4-t8.gif

wdz4-b1.gif

    各動態(tài)模塊重構時間花費表2所示。實驗中所采取的故障注入方式同樣采取動態(tài)重構方式,即通過FPGA的內部配置訪問通道(ICAP)動態(tài)地對各模塊進行錯誤配置來實現。實驗中故障檢測方案采用上文所提出的內嵌式故障檢測結構,其故障檢測延遲與信號在進位鏈中的傳播延遲相關,即和進位鏈的串聯(lián)個數相關,而進位鏈中信號傳播延遲為納秒級,遠小于模塊重構時間,可認為模塊的自修復時間近似于模塊的重構時間。由實驗結果可看出模塊重構時間與模塊占用資源數和模塊重構區(qū)域大小成正比,即模塊占用資源數越多,其劃分的最小重構區(qū)域則越大,模塊重構時間花費越大。而同時,功能模塊劃分越小,其進行冗余設計時所帶來的額外資源開銷比例則越大。故在系統(tǒng)設計時,需要綜合考慮資源分配情況和故障修復時間要求,合理地進行模塊粒度劃分,實現粗粒度和細粒度的靈活組合。

wdz4-b2.gif

5 結論

    本文提出了一種基于SRAM型FPGA的實時容錯自修復系統(tǒng)結構和設計方法。該設計方法將系統(tǒng)分為若干功能模塊,采用粗粒度三模冗余結構和細粒度三模冗余結構并結合動態(tài)重構對系統(tǒng)進行容錯自修復設計,實驗結果表明該設計結構下故障修復時間短,系統(tǒng)的可靠性得到有效提高。在系統(tǒng)設計時,可以綜合考慮資源分配情況和故障修復時間要求,合理進行模塊粒度劃分,實現粗粒度和細粒度的靈活組合。 

參考文獻

[1] 潘雄,鄧威,苑政國,等.SRAM型FPGA單粒子隨機故障注入模擬與評估[J].微電子學與計算機,2018,35(7):29-33.

[2] 馮彥君,華更新,劉淑芬.航天電子抗輻射研究綜述[J].宇航學報,2007,28(5):1071-1080.

[3] DEMIRCI M,REVIRIEGO P,MAESTRO J A.Implementing double error correction orthogonal latin squares codes in SRAM-based FPGAs[J].Microelectronics Reliability,2016,56:221-227.

[4] KOESTER M,LUK W,HAGEMEYER J,et al.Design optimizations for tiled partially reconfigurable systems[J].IEEE Transactions on Very Large Scale Integration Systems,2011,19(6):1048-1061.

[5] KOREN I,KRISHNA C M.Fault-tolerant systems[M].Morgan Kaufmann Publishers Inc.,2007.

[6] BAO S,YAN H,CHI Q,et al.A FPGA-Based reconfigurable data acquisition system for industrial sensors[J].IEEE Transactions on Industrial Informatics,2017,13(4):1503-1512.

[7] 鄔貴明.FPGA矩陣計算并行算法與結構[D].長沙:國防科學技術大學,2011.

[8] 姚睿,王友仁,于盛林,等.具有在線修復能力的強容錯三模冗余系統(tǒng)設計及實驗研究[J].電子學報,2010,38(1):177-183.

[9] 王宏宇.基于FPGA的片上電路進化設計研究[D].石家莊:河北師范大學,2017.

[10] KONDELOVA A,CUNTALA J.Time models of dynamic and static reconfiguration in FPGAs[C].Proceedings of ELEKTRO,2014:451-454.

[11] RODRIGUES T,VESTIAS M.Using dynamic reconfiguration to reduce the area of a JPEG decoder on FPGA[C].Proceedings of 2015 Euromicro Conference on Digital System Design,2015:65-71.

[12] 張小林,丁磊,顧黎明.基于三層級低開銷的FPGA多比特翻轉緩解技術[J].電子技術應用,2018,44(4):61-64.

[13] 佟昕,于勇,趙寶珍,等.基于DMR-CED容錯方法的多相結構數字下變頻SEU防護設計[J].遙測遙控,2018,39(4):56-61.

[14] 王銳,段小虎.一種具備故障自恢復能力的容錯計算機架構設計[J].信息通信,2017(4):72-73.

[15] RUPE J W.Reliability of computer systems and networks fault tolerance,analysis,and design[M].John Wiley & Sons,Inc.,2003:586-587.



作者信息:

徐偉杰1,謝永樂2,彭禮彪2,沈北辰3

(1.長安大學 信息工程學院,陜西 西安710064;

2.電子科技大學 自動化工程學院,四川 成都611731;3.四川大學 軟件學院,四川 成都610207)

此內容為AET網站原創(chuàng),未經授權禁止轉載。