陳 陳,楊孟飛,劉鴻瑾
(1.北京控制工程研究所,北京 100090;2.中國空間技術(shù)研究院,北京 100194)
航天技術(shù)的發(fā)展對以星載計算機為代表的空間電子系統(tǒng)的性能、體積、功耗、重量、可靠性及空間環(huán)境適用性的要求越來越高.片上系統(tǒng)(SOC,systemon-chip)技術(shù)不僅可以提高星載計算機的內(nèi)部功能集成度、減小體積重量、提高功能密度,而且可以提高性能,提高系統(tǒng)的總體可靠度.多處理器片上系統(tǒng)(MPSOC,multiprocessor system-on-chip)[1]具有多處理器系統(tǒng)和單處理器SOC的共同優(yōu)點,代表著嵌入式多核設(shè)計的發(fā)展方向.MPSOC具有良好的擴展性、可定制化設(shè)計等特點,尤其在提高系統(tǒng)并行性方面顯示出巨大優(yōu)勢.
研究表明,計算機系統(tǒng)中70~80%的失效都是由于瞬態(tài)故障引起[2],這表明瞬態(tài)故障是引起計算機系統(tǒng)失效的主要原因.在航天等特殊應(yīng)用場合,瞬態(tài)故障也將是引起處理器以及計算機系統(tǒng)失效的主要原因,并且隨著特征尺寸的減少,這一趨勢將會越來越明顯[3].因此,為了提高航天等特殊應(yīng)用場合下處理器的可靠性,消除瞬態(tài)故障所引起的軟錯誤(soft error)[4]的有害影響是一個重要的任務(wù).在多核體系結(jié)構(gòu)中,存在多個內(nèi)核,可以設(shè)計為冗余運行的處理結(jié)構(gòu),因此除了并行性之外,還具有容錯潛力.只要合理有效地利用這些冗余硬件資源,就可以在減少額外開銷的基礎(chǔ)上,提供更強的容錯能力.
本文提出了一種能夠檢測并屏蔽瞬時故障的三模冗余(TMR,triple modular redundancy)MPSOC處理器設(shè)計方案.該系統(tǒng)由3個基于SPARC V8規(guī)范的LEON3處理器[5]、容錯管理模塊和選通電路等組成,采用軟件表決和硬件仲裁相結(jié)合的方法完成三模冗余的容錯功能.
本文提出的三模冗余MPSOC容錯處理器結(jié)構(gòu)如圖1所示.三模冗余MPSOC容錯處理器基于FPGA設(shè)計實現(xiàn),設(shè)計中采用了3個原理設(shè)計完全相同的LEON3處理器.3個處理器獨立運行,每個處理器有獨立的靜態(tài)隨機存儲器(SRAM,static random access memory)和可編程序只讀存儲器(PROM,programmable read-only memory).3個處理器中其中一個為當(dāng)班機,其他兩個則為非當(dāng)班機.當(dāng)班機由容錯電路仲裁產(chǎn)生,任意時刻只有當(dāng)班機的數(shù)據(jù)輸出.
圖1 系統(tǒng)內(nèi)部結(jié)構(gòu)框圖Fig.1 Architecture diagram of TMR system
三模冗余MPSOC處理器具體的容錯策略是采用TMR數(shù)據(jù)表決輸出的容錯結(jié)構(gòu),在3個完全相同的處理器上運行相同的程序;3個處理器以串口通信的方式實現(xiàn)數(shù)據(jù)交換,軟件進行三模冗余數(shù)據(jù)比對(部分浮點數(shù)據(jù)帶容差比較),由軟件進行3取2表決,最終向容錯管理單元輸出本機狀態(tài)信息(健康信號、清看門狗信號等),由容錯管理單元仲裁后輸出當(dāng)班信號,確定一個當(dāng)班機,并選通當(dāng)班處理的數(shù)據(jù)輸出,當(dāng)班機的輸出數(shù)據(jù)作為系統(tǒng)輸出的最終結(jié)果(如圖1所示).
三模冗余MPSOC處理器容錯設(shè)計的關(guān)鍵在于容錯管理單元的邏輯設(shè)計、軟件表決算法的設(shè)計及處理器之間的同步機制的設(shè)計,下面將詳細描述.
容錯管理模塊功能框圖如圖2所示,主要由時鐘產(chǎn)生電路、看門狗電路、復(fù)位電路和當(dāng)班仲裁電路組成,為了提高容錯管理模塊的可靠性,容錯管理模塊功能均采用雙熱備份的方式實現(xiàn).容錯電路的主要功能有:
1)為3個處理器提供時鐘及控制周期信號;
2)通過看門狗電路監(jiān)視當(dāng)班機工作狀態(tài);
3)提供復(fù)位信號,同時送往3個處理器;
4)根據(jù)三機健康狀態(tài)由硬件仲裁決定哪一機為當(dāng)班機.
時鐘產(chǎn)生邏輯用來產(chǎn)生時鐘及控制周期信號.為了提高電路的可靠性,設(shè)計兩套獨立的時鐘產(chǎn)生電路,主備份時鐘信號可以實現(xiàn)自主切換.產(chǎn)生的時鐘信號同時送往3個處理器作為控制周期信號,保證3個處理器采用同一時鐘源.
看門狗電路用于監(jiān)測當(dāng)班機的工作狀態(tài).該電路設(shè)計的主要作用是當(dāng)3個處理器均不能正常清看門狗時可產(chǎn)生自主復(fù)位,修復(fù)瞬時故障.當(dāng)班機在每個控制周期內(nèi)進行清看門狗操作,如果當(dāng)班機不能正常清看門狗,則看門狗電路通過狗咬信號使處理器復(fù)位.看門狗復(fù)位由看門狗的狗咬信號產(chǎn)生,最終生成3個復(fù)位信號,分別送往3個處理器,保證所有處理器同時復(fù)位.采用兩套獨立的看門狗電路可以在單個看門狗電路失效的情況下,由另一路看門狗電路監(jiān)視當(dāng)班機的工作狀態(tài),在3個處理器都發(fā)生故障的情況下,通過狗咬復(fù)位使系統(tǒng)恢復(fù)正常.兩路看門狗電路的清看門狗信號均由LEON3處理器的通用輸入/輸出端口(GPIO,general purpose I/O port)口產(chǎn)生.
仲裁電路根據(jù)各處理器的工作情況控制三機中的其中一機輸出.三機輸出的數(shù)據(jù)經(jīng)軟件3取2表決后,發(fā)出本機的健康狀態(tài)信號,仲裁電路根據(jù)三機的健康狀態(tài)信號決定哪一機輸出,其他兩機的輸出均被封鎖.三機健康狀態(tài)信號SA、SB、SC為低電平有效.三機的當(dāng)班信號CSA、CSB、CSC是高電平有效.
圖2 容錯管理模塊功能框圖Fig.2 Block diagram of the fault-tolerant management module
仲裁邏輯根據(jù)3取2的原則,即根據(jù)三機健康狀態(tài)來決定輸出哪一機的數(shù)據(jù).同時,在仲裁邏輯的設(shè)計上保證了只能輸出一機的數(shù)據(jù).為防止仲裁邏輯電路單點故障,采用兩套相同的電路,并聯(lián)輸出.三機的優(yōu)先級是A>B>C,例如:如果SA,SB為低電平,SC為高電平,則仲裁模塊輸出CPU_A的數(shù)據(jù);如果SA為高電平,SB、SC為低電平,則仲裁模塊輸出CPU_B的數(shù)據(jù).
當(dāng)班信號CSA、CSB、CSC的產(chǎn)生方式如圖3所示.為防止三機都不輸出的情況,即三機的狀態(tài)SA、SB、SC都為“1”時,仲裁電路自主選擇 CPU_C當(dāng)班,由于CPU_C不健康,不清看門狗,則引起狗咬復(fù)位.為了防止仲裁電路短時間內(nèi)的循環(huán)切換當(dāng)班機,造成任務(wù)無法完成,設(shè)計中采用單向切換的方案.
圖3 當(dāng)班信號產(chǎn)生方式Fig.3 Generation of the on duty signal
最后輸出選通模塊使用容錯管理模塊產(chǎn)生的當(dāng)班信號(CSA、CSB、CSC)來控制各處理器對外輸出接口的使能端,保證只有當(dāng)班機能夠?qū)ν獍l(fā)送控制指令和信號,而其他兩機的輸出被禁止.
三模冗余MPSOC處理器對外輸出的接口只有3種:串口、1553B總線和GPIO口.對于輸入信號采集和接收電路的使能端則常有效,3個處理器都能夠接收其他外部設(shè)備的輸入數(shù)據(jù)和狀態(tài)信號.
三模冗余MPSOC處理器的3取2表決通過軟件實現(xiàn),由表決生成每一機的健康狀態(tài)信號供容錯管理單元的仲裁邏輯使用.
如圖4所示,當(dāng)每個控制周期某一機工作正常并且與其他任意一機的數(shù)據(jù)比對一致時,該機發(fā)送健康信號,該控制周期當(dāng)班機正常清看門狗,下一個控制周期的數(shù)據(jù)計算使用該控制周期經(jīng)過三機數(shù)據(jù)比對軟件表決后的數(shù)據(jù).
當(dāng)某一機在一個控制周期與其他兩機的數(shù)據(jù)比對都不一致時,該機首先判斷其他兩機數(shù)據(jù)比對是否一致,如果其他兩機數(shù)據(jù)比對一致,則該機置自己不健康.
如果某一處理器判斷三機數(shù)據(jù)比對都不一致,則該機查詢自己的系統(tǒng)自檢狀態(tài)信息,如果系統(tǒng)狀態(tài)信息正常,則該機置自己健康,如果系統(tǒng)狀態(tài)信息不正常,則該機置自己不健康.
在出現(xiàn)三機數(shù)據(jù)比對均不一致時,如果三機的系統(tǒng)自檢狀態(tài)信息都不正常,則三機都置自己不健康,仲裁電路的硬件會自主選擇CPU_C為當(dāng)班機,由于CPU_C不健康,不清看門狗,則引起狗咬復(fù)位.三機同時復(fù)位后,嘗試恢復(fù)重要數(shù)據(jù),并重新進入TMR工作模式.
圖4 軟件表決算法原理框圖Fig.4 Block diagram of software voting algorithm
同步技術(shù)是三模冗余容錯處理器的核心基礎(chǔ)技術(shù)之一,它用來消除系統(tǒng)中3個處理器模塊之間因時鐘、輸入延遲等因素造成的不同步,使得系統(tǒng)中3個處理器模塊在程序執(zhí)行狀態(tài)、周期定時及時間基準(zhǔn)上達到相對一致的狀態(tài),在計算后同時將輸出送給仲裁電路進行表決輸出,真正完成三模冗余功能.常用的同步技術(shù)包括任務(wù)同步、中斷同步[6]、公共時鐘、鎖相同步[7]等.
本系統(tǒng)在三模冗余工作模式時實現(xiàn)3個處理器任務(wù)級同步[8]功能.系統(tǒng)通過容錯電路產(chǎn)生3個處理器共用的控制周期信號和復(fù)位信號來實現(xiàn)任務(wù)級同步.三模冗余工作模式下,完成上電后3個處理器同時復(fù)位,這種情況下3個處理器控制周期信號同源可保證同時產(chǎn)生控制周期中斷,通過控制周期中斷進行任務(wù)調(diào)度,即可完成處理器間任務(wù)級同步.
為了驗證上述處理器系統(tǒng)的正確性,使用EDA仿真工具ModelSim對該系統(tǒng)進行仿真驗證.圖5所示為處理器正常運行時的仿真波形,其中vdata(0)、vdata(1)、vdata(2)分別為 CPU_A、CPU_B、CPU_C 3個處理器的運算結(jié)果,data為TMR處理器最后輸出的結(jié)果.從仿真波形可以看出,3個處理器同時運行相同的程序,經(jīng)過數(shù)據(jù)交換和比較后,向容錯電路發(fā)送正常信號,SA、SB、SC均為低電平時表示相應(yīng)的處理器處于正常工作狀態(tài).容錯電路經(jīng)過仲裁控制輸出選通.當(dāng)3個處理器都正常運行時,默認CPU_A為當(dāng)班機.系統(tǒng)最后輸出的數(shù)據(jù)data為CPU_A的輸出數(shù)據(jù)vdata(0).圖6所示為EDA環(huán)境下TMR容錯處理器的仿真結(jié)果.
圖5 3個處理器正常運行時的仿真結(jié)果Fig.5 Result of simulation when 3 processors run normally
為了驗證處理器系統(tǒng)對錯誤的診斷和屏蔽能力,試驗中模擬了處理器系統(tǒng)因存儲區(qū)域被單粒子擊中造成的翻轉(zhuǎn)而發(fā)生的程序計算結(jié)果錯誤,并驗證了在這種故障模式下處理器和容錯電路的功能.
如圖7所示,對CPU_A進行故障注入,假定其運算結(jié)果在某一時刻出現(xiàn)錯誤.由仿真波形可以看出,通過數(shù)據(jù)交換和比較,檢測到處理器CPU_A中的錯誤,CPU_A的正常信號為“1”(該信號低有效),容錯電路經(jīng)過仲裁,將當(dāng)班機切換至CPU_B,輸出數(shù)據(jù)為vdata(1),同時清看門狗.系統(tǒng)最后輸出數(shù)據(jù)data為CPU_B的輸出數(shù)據(jù)vdata(1).
同樣,繼續(xù)對CPU_B進行故障注入,從仿真波形可以看出當(dāng)CPU_B出錯時,CPU_B的正常信號為“1”(該信號低有效).根據(jù)單向切換的原則,盡管CPU_A在當(dāng)前時刻的輸出正確,其正常信號仍為“1”(該信號低有效),仲裁電路將當(dāng)班機切換至CPU_C,輸出數(shù)據(jù)為 vdata(2),清看門狗(如圖8所示).
當(dāng)3個處理器都不正常時,系統(tǒng)強制CPU_C當(dāng)班,輸出數(shù)據(jù)為vdata(2).如果當(dāng)班機CPU_C不清看門狗,最后,狗咬復(fù)位信號lreset被觸發(fā),3個處理器同時復(fù)位,重新運行初始化程序(如圖9、圖10所示).
TMR處理器原型基于Virtex IV 2000萬門FPGA實現(xiàn),最終完成綜合、調(diào)試后的TMR容錯處理器演示驗證系統(tǒng)如圖11所示.系統(tǒng)的核心功能(包括3個處理器和容錯電路等)都集中在FPGA中實現(xiàn).FPGA通過JTAG線纜與PC機連接.本設(shè)計的對外接口與單處理器系統(tǒng)相同,因此可通過Gaisler公司的調(diào)試工具GRMON在PC機上實現(xiàn)軟件的加載、調(diào)試.以矩陣乘法運算程序作為測試用例,如圖12所示,測試程序可以正常運行.該試驗驗證了本設(shè)計可以完成預(yù)定的處理功能.
本系統(tǒng)采用50MHz的晶振,通過數(shù)字時鐘管理模塊(DCM)處理后,系統(tǒng)實際時鐘仍為50MHz.在該時鐘頻率下,系統(tǒng)的最大工作頻率為70.4MHz,與單處理器系統(tǒng)相比性能下降了9%左右.根據(jù)布局布線后的結(jié)果,本設(shè)計占用的FPGA資源約為單處理器系統(tǒng)的302%.
本文提出了一種用FPGA實現(xiàn)的基于軟件表決和硬件仲裁相結(jié)合的容錯處理器的軟硬件設(shè)計方案,然后對這種容錯設(shè)計方案進行了原型實現(xiàn)和驗證.試驗結(jié)果表明,該設(shè)計可以屏蔽瞬時故障,任意一個處理器故障或兩個處理器故障時不影響正常當(dāng)班機的輸出,系統(tǒng)具備自主切換當(dāng)班機的能力.
[1] Wayne W,Ahmed A J,Grant M.Multiprocessor system-on-chip(MPSOC)technology[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2008,27(10):1701-1713
[2] Karlsson J,Liden P,Dahlgren P,et al.Using heavyion radiation to validate fault-handling mechanisms[J].IEEE Micro,1994,14(1):8-23
[3] Mukherjee S.Architecture design for soft errors[M].San Francisco,CA,USA:Morgan Kaufmann Publishers Inc.,2008
[4] Mukherjee S S,Emer J,Reinhardt S K.The soft error problem:an architectural perspective[C].The 11thInternational Symposium on High-Performance Computer Architecture,San Francisco,CA,USA,F(xiàn)eb 2005
[5] Jiri G,Sandi H.GRLIB IP library user’s manual[M].Sweden:Gaisler Research,2010
[6] Xin M,Qiu Q.Research on precise synchronization for TMR fault-tolerant embedded computer[C].The 1stInternational Conference on Multimedia Information Networking and Security,Wuhan,China,Nov 2009
[7] Tomohiro Y,Takashi S,Yoshihiro T.Interrupt handling in the loosely synchronized TMR system[C].The 44thAsilomar Conference on Signals,Systems and Computers,Pacific Grove,USA,Nov 2007
[8] Mahyar R,Malekpour.A byzantine-fault tolerant selfstabilizing protocol for distributed clock synchronization systems[R].Dallas,TX,United States,NASA Report NASA TM-2006-214322,Nov 2006