0 引言
隨著航天技術(shù)的發(fā)展,空間任務(wù)日益復(fù)雜化、多樣化,未來(lái)航天系統(tǒng)對(duì)處理器的性能要求越來(lái)越高。在一些航天設(shè)備如星載 ATP 等系統(tǒng)的電子模塊設(shè)計(jì)中,基于 SRAM 的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)得到了日益廣泛的應(yīng)用。空間環(huán)境中的電子系統(tǒng)設(shè)計(jì),不僅要滿足高性能,而且其數(shù)據(jù)處理、傳輸和控制的準(zhǔn)確性和可靠性也必須得到保證。對(duì)于機(jī)載、星載、空間武器和其他空間應(yīng)用電子系統(tǒng),往往暴露在形形色色的電磁輻射環(huán)境中,如α粒子、宇宙射線、外太空強(qiáng)輻射等等惡劣環(huán)境,加之一些電子系統(tǒng)工作在地面的高電磁輻射環(huán)境中,這些輻射環(huán)境中充滿了各種高能粒子,高能粒子撞擊工作中的電子器件會(huì)引發(fā)輻射效應(yīng),如單粒子翻轉(zhuǎn)(SEU)等,并導(dǎo)致器件發(fā)生故障,由輻射效應(yīng)引起的軟錯(cuò)誤是導(dǎo)致空間環(huán)境中電子系統(tǒng)失效的重要原因之一[1]。
在提高系統(tǒng)可靠性與安全性方面,避錯(cuò)與容錯(cuò)技術(shù)是常用的兩種關(guān)鍵技術(shù)。微電子抗輻射加固技術(shù)[2],通過(guò)對(duì)材料選取、工藝結(jié)構(gòu)設(shè)計(jì)等方面進(jìn)行加固設(shè)計(jì),在物理層消除導(dǎo)致?lián)p傷的各類(lèi)寄生參數(shù), 能有效提高電子器件的抗輻射能力。但是僅在物理層上對(duì)系統(tǒng)進(jìn)行故障防護(hù)不能滿足惡劣環(huán)境中的系統(tǒng)可靠性要求,還需要從電路設(shè)計(jì)方面對(duì)系統(tǒng)功能進(jìn)行保護(hù)。運(yùn)用錯(cuò)誤校正碼(ECC)技術(shù)[3],在數(shù)據(jù)包的后端添加額外的校驗(yàn)數(shù)據(jù)位,來(lái)實(shí)現(xiàn)讀取 / 寫(xiě)入數(shù)據(jù)的準(zhǔn)確性,能在一定程度上對(duì)存儲(chǔ)器進(jìn)行檢錯(cuò)和糾錯(cuò)。容錯(cuò)設(shè)計(jì)技術(shù),如采用冗余設(shè)計(jì)來(lái)“屏蔽”或“隔離”故障,如信息冗余[4]、硬件冗余[5]等,進(jìn)而在一定時(shí)期內(nèi)將故障的影響掩蓋起來(lái),使發(fā)生故障的電子系統(tǒng)在一定時(shí)期內(nèi)仍能正常工作,但這種方式并未排除故障,隨著故障的累積和疊加,系統(tǒng)仍然可能失效,所以賦予系統(tǒng)故障自修復(fù)能力能有效減少故障累積,提高系統(tǒng)的可靠性。
本文從故障容錯(cuò)和故障自修復(fù)角度對(duì)系統(tǒng)進(jìn)行芯片級(jí)的可靠性設(shè)計(jì),提出了一種基于 SRAM 型 FPGA 的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)結(jié)構(gòu),并將該設(shè)計(jì)結(jié)構(gòu)在 Xilinx Virtex-6 FPGA 上進(jìn)行了設(shè)計(jì)驗(yàn)證。
1 基于動(dòng)態(tài)部分重構(gòu)的模塊修復(fù)
FPGA 的配置可分為靜態(tài)配置和動(dòng)態(tài)配置,靜態(tài)配置通常對(duì)整個(gè) FPGA 模塊進(jìn)行重新配置,系統(tǒng)功能在配置過(guò)程時(shí)中斷,并在配置結(jié)束后改變系統(tǒng)功能。動(dòng)態(tài)配置,又稱為動(dòng)態(tài)部分重構(gòu),能夠在不干擾 FPGA 內(nèi)部其他模塊工作的同時(shí)動(dòng)態(tài)地對(duì)部分區(qū)域的邏輯功能進(jìn)行修改。其核心思想是將 FPGA 內(nèi)部的邏輯資源從物理布局上劃分為靜態(tài)區(qū)域和若干個(gè)動(dòng)態(tài)區(qū)域。每個(gè)動(dòng)態(tài)區(qū)域可以對(duì)應(yīng)有多個(gè)配置文件,以實(shí)現(xiàn)不同的功能,將這些配置文件事先存放在片外存儲(chǔ)器中。在系統(tǒng)運(yùn)行的不同時(shí)刻,根據(jù)系統(tǒng)的實(shí)際需求加載不同的配置文件到同一個(gè)動(dòng)態(tài)區(qū)域來(lái)實(shí)現(xiàn)相應(yīng)的邏輯功能。在某一動(dòng)態(tài)區(qū)域進(jìn)行功能切換時(shí),不影響靜態(tài)區(qū)域和其他動(dòng)態(tài)區(qū)域的邏輯功能,系統(tǒng)依然處于連續(xù)運(yùn)行狀態(tài)。
動(dòng)態(tài)部分重構(gòu)技術(shù)能對(duì) FPGA 的部分資源實(shí)現(xiàn)分時(shí)復(fù)用,使芯片能夠在不同時(shí)刻實(shí)現(xiàn)不同的功能,提高了芯片資源的利用率,已廣泛應(yīng)用于工業(yè)系統(tǒng)設(shè)計(jì)中,如文獻(xiàn)[6]中結(jié)合動(dòng)態(tài)部分重構(gòu)技術(shù)對(duì)工業(yè)傳感器數(shù)據(jù)采集系統(tǒng)進(jìn)行設(shè)計(jì),針對(duì)不同的傳感器切換不同的功能。該技術(shù)還可應(yīng)用于可重構(gòu)計(jì)算[7]、可進(jìn)化硬件[8-9]、容錯(cuò)設(shè)計(jì)[10-14]等方面。將動(dòng)態(tài)部分重構(gòu)技術(shù)和冗余技術(shù)結(jié)合,即將冗余設(shè)計(jì)中各冗余模塊分別置于一動(dòng)態(tài)區(qū)域中,在故障發(fā)生時(shí)通過(guò)動(dòng)態(tài)重構(gòu)對(duì)故障模塊進(jìn)行修復(fù),可以避免故障的累積和疊加,在容錯(cuò)的同時(shí)賦予系統(tǒng)故障自修復(fù)能力。
2 粗粒度和細(xì)粒度的三模冗余自修復(fù)結(jié)構(gòu)
2.1 粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)
典型的模塊冗余技術(shù)——N 模冗余設(shè)計(jì):將功能模塊復(fù)制為 N 份,N 個(gè)模塊具有相同的輸入,N 個(gè)模塊的輸出經(jīng)過(guò)多數(shù)表決器表決輸出。N 模冗余系統(tǒng)在工作過(guò)程中能同時(shí)容忍不超過(guò)半數(shù)的冗余模塊發(fā)生故障而不影響最終的系統(tǒng)輸出。隨著冗余模塊的數(shù)量增加,系統(tǒng)的容錯(cuò)能力提高,但同時(shí)系統(tǒng)的硬件資源開(kāi)銷(xiāo)和功耗增大,綜合考慮容錯(cuò)能力和資源開(kāi)銷(xiāo),三模冗余(TMR)技術(shù)具有最高的性能表現(xiàn)。
FPGA 的系統(tǒng)通常可以分為多個(gè)功能模塊,粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)以整個(gè)功能模塊為單位進(jìn)行冗余設(shè)計(jì),如圖 1 所示,即將整個(gè)功能模塊作為一個(gè)冗余單位,將整個(gè)功能模塊復(fù)制三份,將每個(gè)功能單元模塊 FU1~FU3 配置到單獨(dú)的部分重構(gòu)模塊(PRM)中,使得每個(gè)冗余模塊都可以獨(dú)立被修復(fù)。表決器選擇多數(shù)的輸入結(jié)果進(jìn)行輸出。在粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)中,只要兩個(gè)冗余模塊的輸出結(jié)果正確,就能保證整個(gè)模塊輸出正常,當(dāng)其中任意模塊發(fā)生故障時(shí),通過(guò)系統(tǒng)的故障檢測(cè)機(jī)制可進(jìn)行故障定位,隔離故障區(qū)域并進(jìn)行自修復(fù)操作。
2.2 細(xì)粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)
采用粗粒度設(shè)計(jì)結(jié)構(gòu)能有效提高系統(tǒng)的可靠度,但其仍然存在一些不足,一是當(dāng)多數(shù)表決器出現(xiàn)故障時(shí)整個(gè)自修復(fù)結(jié)構(gòu)本身不可靠;二是由于模塊粒度較大,一些不能導(dǎo)致模塊功能失效的隱性故障持續(xù)累積,容易導(dǎo)致多個(gè)模塊同時(shí)故障,使得防護(hù)結(jié)構(gòu)失效。本文中細(xì)粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)能有效減少故障累積,該設(shè)計(jì)結(jié)構(gòu)將一功能模塊拆分為若干個(gè)獨(dú)立的時(shí)序元件和組合邏輯部分,本文將該設(shè)計(jì)結(jié)構(gòu)利用圖形化表示來(lái)說(shuō)明,將功能單元模塊中的組合邏輯表示為 CG,時(shí)序元件表示為 SE,則利用有向圖表示方法可以將圖 2(a)電路表示為圖 2(b)。
細(xì)粒度的三模冗余容錯(cuò)自修復(fù)結(jié)構(gòu)建立在有向圖表示方法基礎(chǔ)之上,其核心思想是,將電路分割為邏輯電路和時(shí)序電路,在時(shí)序電路輸出插入多數(shù)表決器,然后再對(duì)原始電路進(jìn)行三模冗余設(shè)計(jì),使得此自修復(fù)結(jié)構(gòu)具有三個(gè)表決器,因此加強(qiáng)了此結(jié)構(gòu)的故障容錯(cuò)能力,同時(shí)減輕了時(shí)序電路引起的錯(cuò)誤累積,可以成功避免域交叉錯(cuò)誤的出現(xiàn)。圖 2(a)表示的原始電路,利用有向圖表示方法將原始電路分割開(kāi)來(lái)如圖 2(b)所示,利用 TMR 三模冗余技術(shù)將其容錯(cuò)化如圖 2(c)所示。MV 表示多數(shù)表決器(Multiple Voter)在電路時(shí)序元件輸出之后插入,利用其三模冗余結(jié)構(gòu),增強(qiáng)了電路容錯(cuò)能力。當(dāng) D1 模塊的組合、時(shí)序電路以及表決器出現(xiàn)故障時(shí),D2 模塊和 D3 模塊通過(guò)多數(shù)表決器可以檢測(cè)到此類(lèi)故障,并經(jīng)中斷喚醒處理器進(jìn)行部分動(dòng)態(tài)重構(gòu)處理,使得 D1 部分重構(gòu)區(qū)域得以自修復(fù)。
細(xì)粒度的三模冗余容錯(cuò)自修復(fù)結(jié)構(gòu)同時(shí)降低了時(shí)序電路引起的錯(cuò)誤累積的概率,可以成功避免域交叉錯(cuò)誤的產(chǎn)生。當(dāng) D1 模塊的 SE2 電路和 D3 模塊的 CG4 電路同時(shí)出現(xiàn)故障的時(shí)候,由于在時(shí)序電路的輸出端用表決器成功地將 SE2 故障進(jìn)行檢測(cè)和隔離,不會(huì)傳遞積累影響下一級(jí)的 CG4 錯(cuò)誤,因此可以成功避免域交叉錯(cuò)誤的產(chǎn)生。
2.3 可靠度對(duì)比
功能模塊在 FPGA 內(nèi)部的實(shí)現(xiàn)可以用邏輯資源來(lái)表示,如查找表(LUTs)、觸發(fā)器(Flip-Flops)、塊存儲(chǔ)器(BRAM)等。而各邏輯資源的連接和使用通過(guò)比特流文件配置來(lái)實(shí)現(xiàn)。比特流文件由若干個(gè)配置幀(frame)組成,配置幀又包含若干個(gè)表示配置信息的比特位。在輻射環(huán)境中,當(dāng) FPGA 中的電路模塊發(fā)生單粒子翻轉(zhuǎn)效應(yīng)時(shí),并不是模塊任意比特位發(fā)生翻轉(zhuǎn)就會(huì)導(dǎo)致模塊功能失效,該模塊功能往往由一些關(guān)鍵比特位所決定??紤]該粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)的容錯(cuò)能力,討論馬爾科夫模型下的三模冗余結(jié)構(gòu)[15],假設(shè)功能模塊在時(shí)間 t 內(nèi)功能正常的可靠度隨著時(shí)間的推移呈指數(shù)遞減,其可靠度可以表示為:
其中λm 表示功能模塊 m 的故障率,其由比特位在單位時(shí)間內(nèi)的翻轉(zhuǎn)速率和模塊對(duì)應(yīng)的關(guān)鍵比特位數(shù)量所決定。對(duì)于一個(gè)三模冗余系統(tǒng)來(lái)說(shuō)只有當(dāng)兩個(gè)或者兩個(gè)以上的模塊發(fā)生錯(cuò)誤時(shí)系統(tǒng)防護(hù)功能才會(huì)失效,假設(shè)三模冗余系統(tǒng)表決邏輯功能正常,那么對(duì)于該粗粒度的三模冗余設(shè)計(jì)結(jié)構(gòu)其可靠度可以表示為:
將提出的細(xì)粒度的三模冗余結(jié)構(gòu)和粗粒度的三模冗余結(jié)構(gòu)的可靠度進(jìn)行比較,其可靠度示意圖如圖 3 所示。細(xì)粒度的三模冗余結(jié)構(gòu)容錯(cuò)可靠度相對(duì)于粗粒度的可靠度有顯著的提高,但同時(shí)細(xì)粒度的三模冗余結(jié)構(gòu)會(huì)引入額外表決器和故障檢測(cè)邏輯,導(dǎo)致額外資源開(kāi)銷(xiāo)的增加。細(xì)粒度的三模冗余結(jié)構(gòu)更適用于對(duì)故障率高的電路模塊進(jìn)行防護(hù)。
3 實(shí)時(shí)故障自修復(fù)系統(tǒng)設(shè)計(jì)
3.1 實(shí)時(shí)故障自修復(fù)系統(tǒng)整體設(shè)計(jì)結(jié)構(gòu)
圖 4 給出了一種基于 Xilinx FPGA 實(shí)現(xiàn)的故障自修復(fù)系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)方案。整個(gè)系統(tǒng)實(shí)現(xiàn)基于 MicroBlaze 軟核的片上微處理器系統(tǒng),主要?jiǎng)澐譃閮蓚€(gè)部分:靜態(tài)區(qū)域和動(dòng)態(tài)部分重構(gòu)區(qū)域。靜態(tài)區(qū)域主要包括:軟核 MicroBlaze、串口控制器、Flash 控制器等,這部分區(qū)域包括了整個(gè)關(guān)鍵處理模塊不適于動(dòng)態(tài)重構(gòu)的模塊,主要負(fù)責(zé)運(yùn)行低優(yōu)先級(jí)程序和檢測(cè)動(dòng)態(tài)重構(gòu)區(qū)域的正常運(yùn)行。動(dòng)態(tài)部分重構(gòu)區(qū)域是整個(gè)電子系統(tǒng)自修復(fù)的基礎(chǔ),所有的自修復(fù)操作都在其他模塊監(jiān)測(cè)、控制下有序地進(jìn)行,保證整個(gè)電子系統(tǒng)不間斷正常的工作,其中各個(gè)冗余模塊的標(biāo)準(zhǔn)配置文件存放于片外 Flash 中。當(dāng)系統(tǒng)收到重構(gòu)請(qǐng)求時(shí),由 Flash 控制器讀取片外存儲(chǔ)器中對(duì)應(yīng)模塊的比特流文件并通過(guò)內(nèi)部配置訪問(wèn)端口(ICAP)寫(xiě)入重構(gòu)區(qū)域。動(dòng)態(tài)部分重構(gòu)區(qū)域結(jié)合上文提出的容錯(cuò)方案進(jìn)行容錯(cuò)設(shè)計(jì),同時(shí) MicroBlaze 負(fù)責(zé)控制和監(jiān)測(cè)每個(gè)動(dòng)態(tài)重構(gòu)單元的工作情況:比如當(dāng)設(shè)計(jì)動(dòng)態(tài)重構(gòu)單元為三模冗余故障容錯(cuò)模塊時(shí),當(dāng)此模塊內(nèi)部故障檢測(cè)單元檢測(cè)到發(fā)生故障時(shí),通過(guò)中斷的形式將信息發(fā)送到 MicroBlaze 中,MicroBlaze 讀取此模塊的狀態(tài)寄存器以判明故障類(lèi)型和區(qū)域,根據(jù)應(yīng)用場(chǎng)合不同選擇不同的故障自修復(fù)策略將此模塊進(jìn)行有序的自重構(gòu),實(shí)現(xiàn)故障自修復(fù)的同時(shí)并不影響系統(tǒng)正常運(yùn)行。
3.2 內(nèi)嵌式故障檢測(cè)結(jié)構(gòu)
采用一內(nèi)嵌式故障檢測(cè)結(jié)構(gòu)對(duì)冗余模塊進(jìn)行故障檢測(cè),該方案將故障檢測(cè)單元嵌入到冗余模塊中。圖 5(a)所示為三模冗余容錯(cuò)自修復(fù)結(jié)構(gòu)中以邏輯門(mén)描述的故障檢測(cè)單元示意圖,該故障檢測(cè)單元由多數(shù)表決器和異或非門(mén)構(gòu)成,將多數(shù)表決器的輸出和檢測(cè)的冗余模塊的輸出接到異或非門(mén)的輸入端,多數(shù)表決器的輸出作為錯(cuò)誤標(biāo)志信號(hào) FLAG。當(dāng)檢測(cè)的冗余模塊的輸出和表決器的輸出相同,則異或門(mén)輸出為邏輯 1,表示該檢測(cè)的冗余模塊無(wú)故障發(fā)生,若異或門(mén)輸出邏輯為 0,則表明檢測(cè)的冗余模塊發(fā)生故障或故障檢測(cè)單元自身發(fā)生故障。具有該故障檢測(cè)單元的三模冗余結(jié)構(gòu)如圖 5(b)所示。
功能模塊在 FPGA 內(nèi)部的實(shí)現(xiàn)可以用邏輯資源來(lái)表示,如查找表(LUTs)、觸發(fā)器(Flip-Flops)、塊存儲(chǔ)器(BRAM)等。而各邏輯資源的連接和使用通過(guò)比特流文件(Bitstream)配置來(lái)實(shí)現(xiàn)。比特流文件由若干個(gè)配置幀(frame)組成,功能模塊大小也可通過(guò)配置幀的數(shù)量來(lái)表示。
該檢測(cè)單元從細(xì)粒度的角度對(duì)電路輸出的每一位進(jìn)行比較,也就是說(shuō)對(duì)于一個(gè)輸出信號(hào)為 N 位的功能模塊來(lái)說(shuō),采用該故障檢測(cè)單元會(huì)對(duì)每一個(gè)冗余模塊會(huì)產(chǎn)生 N 個(gè)故障標(biāo)志信號(hào)。然而對(duì)于一個(gè)冗余模塊來(lái)說(shuō)只需要一個(gè)標(biāo)志信號(hào)來(lái)表明該模塊是否發(fā)生故障。對(duì)此提出了一種將標(biāo)志信號(hào)進(jìn)行融合的邏輯結(jié)構(gòu),該融合邏輯結(jié)構(gòu)采用 FPGA 片內(nèi)進(jìn)位鏈邏輯來(lái)實(shí)現(xiàn)。如圖 6 所示,以 4 位的輸出信號(hào)為例,故障檢測(cè)單元對(duì) TR1 模塊的輸出位進(jìn)行檢測(cè),將故障標(biāo)志信號(hào)分別接入進(jìn)位鏈的 C0~C3 端口。進(jìn)位鏈 CIN 端口輸入邏輯 1,當(dāng)無(wú)故障發(fā)生時(shí)進(jìn)位鏈輸出邏輯 1,當(dāng)其中一位或者多位錯(cuò)誤發(fā)生時(shí),進(jìn)位鏈中的二選一選擇器選擇故障標(biāo)志信號(hào)進(jìn)行傳遞,進(jìn)位鏈輸出邏輯 0,表示 TR1 模塊發(fā)生故障。對(duì)于模塊輸出信號(hào)位數(shù)少于 4 位的情況,可以將進(jìn)位鏈空閑的輸入端輸入邏輯 1 即可。對(duì)于模塊輸出信號(hào)位數(shù)大于 4 位的情況,可以將前一進(jìn)位鏈的標(biāo)志輸出 FLAG 接入后一進(jìn)位鏈的 CIN 輸入端,將進(jìn)位鏈串行連接。
4 實(shí)驗(yàn)設(shè)計(jì)與分析
本節(jié)中將上文提出的故障自修系統(tǒng)在 Xilinx XC6VLX240T-1FF1156 FPGA 上進(jìn)行設(shè)計(jì)實(shí)現(xiàn),實(shí)驗(yàn)中靜態(tài)區(qū)域包含了一基于 MicroBlaze 核的片上微處理器系統(tǒng),該微處理器系統(tǒng)主要負(fù)責(zé)與上位機(jī)進(jìn)行交互、響應(yīng)重構(gòu)請(qǐng)求、控制片外存儲(chǔ)器讀取比特文件數(shù)據(jù)和控制內(nèi)部配置訪問(wèn)端口(ICAP)對(duì)重構(gòu)區(qū)域進(jìn)行重配置等任務(wù)。動(dòng)態(tài)區(qū)域中將 ITC99 benchmark 電路中 8 個(gè)不同粒度的標(biāo)準(zhǔn)電路進(jìn)行冗余設(shè)計(jì),以分析不同粒度模塊的故障自修復(fù)時(shí)間。
4.1 FPGA 系統(tǒng)設(shè)計(jì)流程
實(shí)驗(yàn)中對(duì)系統(tǒng)進(jìn)行設(shè)計(jì)實(shí)現(xiàn)采用的是基于 Xilinx ISE 開(kāi)發(fā)工具的設(shè)計(jì)流程,設(shè)計(jì)流程如圖 7 所示。在 ISE 頂層設(shè)計(jì)規(guī)劃中對(duì)系統(tǒng)各模塊進(jìn)行劃分,定義系統(tǒng)中的各靜態(tài)模塊和動(dòng)態(tài)模塊,并對(duì)動(dòng)態(tài)模塊進(jìn)行冗余保護(hù)設(shè)計(jì)。片上微處理器系統(tǒng)在 Xilinx 的 XPS 設(shè)計(jì)工具中進(jìn)行設(shè)計(jì)搭建,并在 SDK 設(shè)計(jì)工具中對(duì)微處理器系統(tǒng)進(jìn)行軟件功能編譯,PlanAhead 設(shè)計(jì)工具可通過(guò)圖形界面(GUI)對(duì) FPGA 進(jìn)行早期分析和布局規(guī)劃功能,施加物理約束,分析布線和時(shí)序的結(jié)果。實(shí)驗(yàn)中各動(dòng)態(tài)模塊的區(qū)域劃分在 PlanAhead 中進(jìn)行設(shè)計(jì)。PlanAhead 中比特流文件生成完成后,需要進(jìn)行軟硬件協(xié)同處理,即將 XPS 生成的塊存儲(chǔ)器映射文件(*.bmm)、SDK 生成的可執(zhí)行文件(*.elf)和 PlanAhead 生成的全局比特流文件合為一個(gè)新的比特流文件,借助 Xilinx 命令行工具 ISE Design Suite Command Prompt,通過(guò)命令指令合成最終的比特流文件。
4.2 實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)中各動(dòng)態(tài)模塊的區(qū)域劃分如圖 8 所示,動(dòng)態(tài)區(qū)域內(nèi)的邏輯資源能夠滿足各模塊功能實(shí)現(xiàn)。各動(dòng)態(tài)模塊的資源開(kāi)銷(xiāo)如表 1 所示,由實(shí)驗(yàn)結(jié)果可知,模塊粒度越小其冗余設(shè)計(jì)中表決器和故障檢測(cè)結(jié)構(gòu)所占的資源比例則越大,即系統(tǒng)模塊粒度劃分越小、重構(gòu)區(qū)域劃分越多,則容錯(cuò)自修復(fù)設(shè)計(jì)所帶來(lái)的額外資源開(kāi)銷(xiāo)越大。
各動(dòng)態(tài)模塊重構(gòu)時(shí)間花費(fèi)表 2 所示。實(shí)驗(yàn)中所采取的故障注入方式同樣采取動(dòng)態(tài)重構(gòu)方式,即通過(guò) FPGA 的內(nèi)部配置訪問(wèn)通道(ICAP)動(dòng)態(tài)地對(duì)各模塊進(jìn)行錯(cuò)誤配置來(lái)實(shí)現(xiàn)。實(shí)驗(yàn)中故障檢測(cè)方案采用上文所提出的內(nèi)嵌式故障檢測(cè)結(jié)構(gòu),其故障檢測(cè)延遲與信號(hào)在進(jìn)位鏈中的傳播延遲相關(guān),即和進(jìn)位鏈的串聯(lián)個(gè)數(shù)相關(guān),而進(jìn)位鏈中信號(hào)傳播延遲為納秒級(jí),遠(yuǎn)小于模塊重構(gòu)時(shí)間,可認(rèn)為模塊的自修復(fù)時(shí)間近似于模塊的重構(gòu)時(shí)間。由實(shí)驗(yàn)結(jié)果可看出模塊重構(gòu)時(shí)間與模塊占用資源數(shù)和模塊重構(gòu)區(qū)域大小成正比,即模塊占用資源數(shù)越多,其劃分的最小重構(gòu)區(qū)域則越大,模塊重構(gòu)時(shí)間花費(fèi)越大。而同時(shí),功能模塊劃分越小,其進(jìn)行冗余設(shè)計(jì)時(shí)所帶來(lái)的額外資源開(kāi)銷(xiāo)比例則越大。故在系統(tǒng)設(shè)計(jì)時(shí),需要綜合考慮資源分配情況和故障修復(fù)時(shí)間要求,合理地進(jìn)行模塊粒度劃分,實(shí)現(xiàn)粗粒度和細(xì)粒度的靈活組合。
5 結(jié)論
本文提出了一種基于 SRAM 型 FPGA 的實(shí)時(shí)容錯(cuò)自修復(fù)系統(tǒng)結(jié)構(gòu)和設(shè)計(jì)方法。該設(shè)計(jì)方法將系統(tǒng)分為若干功能模塊,采用粗粒度三模冗余結(jié)構(gòu)和細(xì)粒度三模冗余結(jié)構(gòu)并結(jié)合動(dòng)態(tài)重構(gòu)對(duì)系統(tǒng)進(jìn)行容錯(cuò)自修復(fù)設(shè)計(jì),實(shí)驗(yàn)結(jié)果表明該設(shè)計(jì)結(jié)構(gòu)下故障修復(fù)時(shí)間短,系統(tǒng)的可靠性得到有效提高。在系統(tǒng)設(shè)計(jì)時(shí),可以綜合考慮資源分配情況和故障修復(fù)時(shí)間要求,合理進(jìn)行模塊粒度劃分,實(shí)現(xiàn)粗粒度和細(xì)粒度的靈活組合。
評(píng)論
查看更多