基于FPGA的三模冗余容錯(cuò)技術(shù)研究
為了選擇需要進(jìn)行三模冗余的模塊并進(jìn)行合理的布局布線,將系統(tǒng)出現(xiàn)的錯(cuò)誤分為持續(xù)性錯(cuò)誤和非持續(xù)性錯(cuò)誤。持續(xù)性的錯(cuò)誤是指由SEU產(chǎn)生的改變了電路內(nèi)部狀態(tài)的錯(cuò)誤;非持續(xù)性錯(cuò)誤是指可以通過(guò)FPGA重構(gòu)而消除的錯(cuò)誤,而持續(xù)性錯(cuò)誤在重構(gòu)后依然存在。
結(jié)合以上的分析,實(shí)施部分TMR的優(yōu)先級(jí)別如下:
第一級(jí)是會(huì)產(chǎn)生持續(xù)性錯(cuò)誤的部分。
第二級(jí)是會(huì)導(dǎo)致能產(chǎn)生連續(xù)性錯(cuò)誤電路部分出錯(cuò)的電路,以降低TMR和非TMR之間的轉(zhuǎn)換為準(zhǔn)則。
第三級(jí)是會(huì)產(chǎn)生持續(xù)性錯(cuò)誤電路的前向部分,同樣以降低TMR和非TMR之間的轉(zhuǎn)換為準(zhǔn)則。
第四級(jí)是與會(huì)產(chǎn)生持續(xù)性錯(cuò)誤電路部分獨(dú)立的部分。
可以通過(guò)靜態(tài)的分析來(lái)對(duì)電路進(jìn)行劃分。這里存在的問(wèn)題是在標(biāo)準(zhǔn)的全局TMR中,所有的輸入、輸出以及時(shí)鐘都進(jìn)行了三模冗余,而使用部分TMR時(shí),對(duì)I/O以及時(shí)鐘的冗余有可能不能被實(shí)現(xiàn)。和沒(méi)有采用TMR的邏輯電路一樣,沒(méi)有進(jìn)行TMR的時(shí)鐘和I/O同樣可以產(chǎn)生不能被檢測(cè)的錯(cuò)誤。
由實(shí)驗(yàn)結(jié)果來(lái)看,由于此方法主要著重于能產(chǎn)生持續(xù)性錯(cuò)誤的電路部分,所以當(dāng)所使用的冗余資源增多時(shí),持續(xù)性的錯(cuò)誤出現(xiàn)的幾率很快的降低,最終幾乎全部被克服掉。所以采用部分TMR可以在資源和可靠性間達(dá)到平衡,在最小限度影響可靠性的條件下,最大限度地提高資源利用率。
另外,一個(gè)翻轉(zhuǎn)有可能改變配置存儲(chǔ)器中控制布線的配置位,而使得兩個(gè)不同冗余模塊間的連線短路,這樣一個(gè)翻轉(zhuǎn)影響了TMR中不止一個(gè)模塊,導(dǎo)致輸出錯(cuò)誤。而配置資源中的90%都用來(lái)控制布線,所以這個(gè)問(wèn)題是需要考慮的。產(chǎn)生這種錯(cuò)誤的可能性還依賴于TMR的布局,而TMR的布局直接依賴于多數(shù)表決器的數(shù)量。當(dāng)表決器增多時(shí),模塊之間需要額外的連接,所以各模塊必須靠得很近,這樣使得一次翻轉(zhuǎn)導(dǎo)致模塊之間短路的可能性增加。為了降低會(huì)影響TMR穩(wěn)健性的產(chǎn)生改變布線的錯(cuò)誤的可能性,必須最大可能地減少各個(gè)模塊之間的連接。如果多數(shù)表決器的數(shù)量可以被降下來(lái),那么模塊之間的連接可以減少。
解決這個(gè)問(wèn)題的方法是采用較大粒度的TMR以降低它們之間的連接,且表決器只應(yīng)用在電路輸出部分。但同時(shí)又出現(xiàn)了一個(gè)新的問(wèn)題,例如為對(duì)存儲(chǔ)單元的狀態(tài)進(jìn)行修復(fù),Xilinx提出了將表決器應(yīng)用在有寄存器的地方并加入反饋以糾正翻轉(zhuǎn)對(duì)寄存器中值的影響的XTMR方法,如果內(nèi)部的表決器被去掉,那么出錯(cuò)部分存儲(chǔ)單元的錯(cuò)誤將得不到糾正,所以重構(gòu)后它與其他模塊工作的狀態(tài)不同步。
文獻(xiàn)中解決這個(gè)問(wèn)題的方法是通過(guò)從外部存儲(chǔ)器中讀取存儲(chǔ)的工作狀態(tài)。但是這個(gè)方法需要三個(gè)模塊離線后才能進(jìn)行狀態(tài)的存儲(chǔ)和重置進(jìn)而達(dá)到同步。顯然可行性不高,尤其是對(duì)實(shí)時(shí)性要求高的電路。
針對(duì)此問(wèn)題,文獻(xiàn)提出了一種同步技術(shù),該技術(shù)TMR系統(tǒng)中采用狀態(tài)寄存器復(fù)制機(jī)制,并在三個(gè)冗余模塊之間引入數(shù)據(jù)通路來(lái)傳輸狀態(tài)寄存器的數(shù)據(jù)。當(dāng)某一個(gè)冗余模塊發(fā)生故障被局部重構(gòu)后,能夠通過(guò)接受主控制器的令牌,從正常模塊復(fù)制狀態(tài)寄存器的數(shù)據(jù)來(lái)完成同步而及時(shí)地恢復(fù)工作。該方法縮短了故障模塊從修復(fù)到重新加入系統(tǒng)工作的時(shí)間,從而減小發(fā)生故障積累的概率,提高冗余系統(tǒng)的可靠性。
另一種方法是預(yù)測(cè)其他模塊最快會(huì)達(dá)到的狀態(tài),然后對(duì)重構(gòu)后的模塊進(jìn)行狀態(tài)的預(yù)置。這時(shí)只需使要重構(gòu)的模塊停止工作而不影響其他兩個(gè)模塊的工作,當(dāng)工作模塊的狀態(tài)和預(yù)置的狀態(tài)同步時(shí),三個(gè)模塊又一起工作。此時(shí)狀態(tài)選擇是一個(gè)問(wèn)題,這個(gè)狀態(tài)到達(dá)的頻率必須很高,而且會(huì)在較快時(shí)間內(nèi)到達(dá),另外多個(gè)狀態(tài)可以提高效率但同時(shí)會(huì)使預(yù)置信號(hào)寬度增加。
如果寄存器中狀態(tài)不可預(yù)測(cè),例如寄存器鏈和加法器,那么不能使用這個(gè)方法,所以這種方法需要改進(jìn)以提高其適應(yīng)性。在TMR各模塊布線時(shí),盡量將它們相隔有一定的距離,這樣也可以降低一個(gè)模塊出現(xiàn)錯(cuò)誤后對(duì)其他模塊造成影響的可能性。
2.3 基于對(duì)FPGA基本單元結(jié)構(gòu)改進(jìn)的TMR技術(shù)
因?yàn)門MR資源消耗較大,一般方法中由于布線以及表決器的實(shí)現(xiàn),當(dāng)粒度越小耗費(fèi)的資源更多。文獻(xiàn)提出了一種比較新穎的小粒度的方法,它對(duì)基于SRAM的FPGA的結(jié)構(gòu)進(jìn)行了一些改變(LUT及CLB結(jié)構(gòu)),以小粒度來(lái)實(shí)現(xiàn)TMR但資源消耗卻得到降低。
評(píng)論