基于FPGA的TMR方法改進(jìn)策略
2.1 TMR與Scrubbing結合
由于TMR本身不具備錯誤模塊修復能力,若僅一個(gè)模塊出現錯誤時(shí),系統功能不受影響,但如果在另一個(gè)模塊出現錯誤前不能對已出現的錯誤模塊進(jìn)行修復,那么冗余方法會(huì )失效。所以當出現一個(gè)錯誤的時(shí)候,必須及時(shí)地對出錯的模塊進(jìn)行修復。
隨著(zhù)動(dòng)態(tài)可重構技術(shù)的發(fā)展,出現了Scrubbing這種對FPGA進(jìn)行配置的方法。由于對于空間電子系統來(lái)說(shuō)影響最嚴重的是SEU等軟故障,而軟故障可以通過(guò)重構來(lái)解決,所以周期性地對配置存儲器進(jìn)行刷新可以實(shí)現對這類(lèi)錯誤的修復。
Scrubbing和TMR配合使用對防止SEU的產(chǎn)生可以起到很好的效果。但很多研究同樣只考慮到單個(gè)錯誤的影響,而忽略了多個(gè)SEU同時(shí)出現的可能性。理論上一個(gè)快速的刷新率可以保證某一時(shí)間內只有一個(gè)錯誤的存在。然而實(shí)際中錯誤的出現是隨機的,這意味著(zhù)任何刷新率都不能保證在一個(gè)刷新周期內最多只出現一個(gè)錯誤。在實(shí)際中使用這種方法時(shí),必須通過(guò)復雜的實(shí)驗過(guò)程對SEU出現的概率進(jìn)行估計。選取Scru-bbing的刷新率的經(jīng)驗原則是使刷新率比估算的出錯率高一個(gè)數量級。而現在隨著(zhù)FPGA的規模越來(lái)越大,用來(lái)裝載整個(gè)配置位流的時(shí)間會(huì )達到幾百毫秒,刷新率更得不到保障,且系統功耗增大。
隨著(zhù)部分TMR的實(shí)現,可以設計出具有檢錯和定位功能的表決器,當某個(gè)模塊出錯時(shí),表決器的信號直接觸發(fā)重構功能,動(dòng)態(tài)地只對出錯部分的電路進(jìn)行重構。這樣可以解決Scrubbing時(shí)間和功耗的問(wèn)題,并為防止錯誤積累提供了解決途徑。
為了防止表決器出錯,表決器可以采用對輻射不敏感的器件來(lái)實(shí)現而替代基于SRAM的材料,這樣提高了表決器的穩健性。文獻也提出了一種改進(jìn)的表決器。它不再使用多數表決器對三個(gè)冗余模塊的輸出進(jìn)行表決,而是將三個(gè)冗余模塊相應的輸出通過(guò)三態(tài)緩沖器和少數表決器后分別由FPGA的三個(gè)輸出管腳輸出,最后在印刷電路板(PCB)上“線(xiàn)或”為一個(gè)信號。少數表決器電路負責判斷本冗余模塊的信號是否是少數
值,如果是少數值,則相對應的緩沖器輸出高阻,如果不是,則使相應的信號正常輸出。
Readback是在Scrubbing的基礎上發(fā)展起來(lái)的。它是指將配置數據回讀與最初的配置數據進(jìn)行比較,發(fā)現錯誤后進(jìn)行重構。文獻中使用了這樣的方法,另外它還采用了糾錯碼來(lái)保護配置數據。每一個(gè)配置幀的數據被12位的see-dec漢明碼保護,而且FPGA中每個(gè)基本單元的識別碼都不一樣,通過(guò)ICAP(InternalConfiguration Access Port)回讀配置文件后,糾錯碼可以給出錯位的位置。
Scrubbing可以在不中斷電路工作的情況下修復SEU在LUT、布線(xiàn)矩陣和CLB中所造成的功能錯誤。但是它不能改變LUT中觸發(fā)器中的內容,所以它也就不能重置寄存器的狀態(tài)。當存儲單元的值發(fā)生了翻轉,此時(shí)只能通過(guò)系統復位來(lái)得到修復。然而系統復位將使系統功能中斷,嚴重影響系統的性能。
2.2 小粒度TMR技術(shù)
隨著(zhù)部分動(dòng)態(tài)重構技術(shù)的出現,產(chǎn)生了小粒度的TMR方法??梢砸暂^小的粒度為步長(cháng),采用合理的布局與布線(xiàn)實(shí)現TMR以達到要求的資源開(kāi)銷(xiāo)并得到最大的可靠性。文獻中對在出現多個(gè)錯誤的情況下不同粒度TMR的容錯性能進(jìn)行了實(shí)驗分析,結果表明小粒度TMR比以整個(gè)系統為粒度進(jìn)行TMR的效果好。
在全局TMR不可行的情況下(例如資源有限),小粒度TMR是一個(gè)較好的選擇,可以在使用較少資源的情況下提高系統的可靠性。由于不是對所有的模塊都采用冗余措施,所以在實(shí)現的時(shí)候必須著(zhù)重于對那些可以相對更高地提高系統可靠性的模塊應用TMR技術(shù)。此時(shí)表決器的數量和位置也是一個(gè)需要考慮的問(wèn)題。由于采用三模冗余的模塊前后需要額外的布線(xiàn),而邏輯電路和布線(xiàn)資源都對SEU敏感,所以這樣的結果會(huì )降低系統可靠性。如圖2所示,圖中陰影部分是對SEU敏感的,由圖可以看出(c)中敏感的部分比(b)中多,這是由于表決器和額外的布線(xiàn)造成的。所以需要限制三模冗余電路和未采用三模冗余的電路的轉變,這樣可以通過(guò)集中使用三模冗余技術(shù)而提高系統可靠性。
為了選擇需要進(jìn)行三模冗余的模塊并進(jìn)行合理的布局布線(xiàn),將系統出現的錯誤分為持續性錯誤和非持續性錯誤。持續性的錯誤是指由SEU產(chǎn)生的改變了電路內部狀態(tài)的錯誤;非持續性錯誤是指可以通過(guò)FPGA重構而消除的錯誤,而持續性錯誤在重構后依然存在。
結合以上的分析,實(shí)施部分TMR的優(yōu)先級別如下:
第一級是會(huì )產(chǎn)生持續性錯誤的部分。
第二級是會(huì )導致能產(chǎn)生連續性錯誤電路部分出錯的電路,以降低TMR和非TMR之間的轉換為準則。
第三級是會(huì )產(chǎn)生持續性錯誤電路的前向部分,同樣以降低TMR和非TMR之間的轉換為準則。
第四級是與會(huì )產(chǎn)生持續性錯誤電路部分獨立的部分。
可以通過(guò)靜態(tài)的分析來(lái)對電路進(jìn)行劃分。這里存在的問(wèn)題是在標準的全局TMR中,所有的輸入、輸出以及時(shí)鐘都進(jìn)行了三模冗余,而使用部分TMR時(shí),對I/O以及時(shí)鐘的冗余有可能不能被實(shí)現。和沒(méi)有采用TMR的邏輯電路一樣,沒(méi)有進(jìn)行TMR的時(shí)鐘和I/O同樣可以產(chǎn)生不能被檢測的錯誤。
由實(shí)驗結果來(lái)看,由于此方法主要著(zhù)重于能產(chǎn)生持續性錯誤的電路部分,所以當所使用的冗余資源增多時(shí),持續性的錯誤出現的幾率很快的降低,最終幾乎全部被克服掉。所以采用部分TMR可以在資源和可靠性間達到平衡,在最小限度影響可靠性的條件下,最大限度地提高資源利用率。
另外,一個(gè)翻轉有可能改變配置存儲器中控制布線(xiàn)的配置位,而使得兩個(gè)不同冗余模塊間的連線(xiàn)短路,這樣一個(gè)翻轉影響了TMR中不止一個(gè)模塊,導致輸出錯誤。而配置資源中的90%都用來(lái)控制布線(xiàn),所以這個(gè)問(wèn)題是需要考慮的。產(chǎn)生這種錯誤的可能性還依賴(lài)于TMR的布局,而TMR的布局直接依賴(lài)于多數表決器的數量。當表決器增多時(shí),模塊之間需要額外的連接,所以各模塊必須靠得很近,這樣使得一次翻轉導致模塊之間短路的可能性增加。為了降低會(huì )影響TMR穩健性的產(chǎn)生改變布線(xiàn)的錯誤的可能性,必須最大可能地減少各個(gè)模塊之間的連接。如果多數表決器的數量可以被降下來(lái),那么模塊之間的連接可以減少。
解決這個(gè)問(wèn)題的方法是采用較大粒度的TMR以降低它們之間的連接,且表決器只應用在電路輸出部分。但同時(shí)又出現了一個(gè)新的問(wèn)題,例如為對存儲單元的狀態(tài)進(jìn)行修復,Xilinx提出了將表決器應用在有寄存器的地方并加入反饋以糾正翻轉對寄存器中值的影響的XTMR方法,如果內部的表決器被去掉,那么出錯部分存儲單元的錯誤將得不到糾正,所以重構后它與其他模塊工作的狀態(tài)不同步。
文獻中解決這個(gè)問(wèn)題的方法是通過(guò)從外部存儲器中讀取存儲的工作狀態(tài)。但是這個(gè)方法需要三個(gè)模塊離線(xiàn)后才能進(jìn)行狀態(tài)的存儲和重置進(jìn)而達到同步。顯然可行性不高,尤其是對實(shí)時(shí)性要求高的電路。
針對此問(wèn)題,文獻提出了一種同步技術(shù),該技術(shù)TMR系統中采用狀態(tài)寄存器復制機制,并在三個(gè)冗余模塊之間引入數據通路來(lái)傳輸狀態(tài)寄存器的數據。當某一個(gè)冗余模塊發(fā)生故障被局部重構后,能夠通過(guò)接受主控制器的令牌,從正常模塊復制狀態(tài)寄存器的數據來(lái)完成同步而及時(shí)地恢復工作。該方法縮短了故障模塊從修復到重新加入系統工作的時(shí)間,從而減小發(fā)生故障積累的概率,提高冗余系統的可靠性。
另一種方法是預測其他模塊最快會(huì )達到的狀態(tài),然后對重構后的模塊進(jìn)行狀態(tài)的預置。這時(shí)只需使要重構的模塊停止工作而不影響其他兩個(gè)模塊的工作,當工作模塊的狀態(tài)和預置的狀態(tài)同步時(shí),三個(gè)模塊又一起工作。此時(shí)狀態(tài)選擇是一個(gè)問(wèn)題,這個(gè)狀態(tài)到達的頻率必須很高,而且會(huì )在較快時(shí)間內到達,另外多個(gè)狀態(tài)可以提高效率但同時(shí)會(huì )使預置信號寬度增加。
如果寄存器中狀態(tài)不可預測,例如寄存器鏈和加法器,那么不能使用這個(gè)方法,所以這種方法需要改進(jìn)以提高其適應性。在TMR各模塊布線(xiàn)時(shí),盡量將它們相隔有一定的距離,這樣也可以降低一個(gè)模塊出現錯誤后對其他模塊造成影響的可能性。
評論