張翼飛,趙宇翔,張東偉,張善從
(1.中國科學院光電研究院,北京 100094; 2.中國科學院大學,北京 100049;3.北京國科環宇空間技術有限公司,北京 100190; 4.國防科技大學, 長沙 410073;5.中國科學院空間應用工程與技術中心,北京 100094)
?
輕量級計算機內存軟件巡檢技術
張翼飛1,2,3,趙宇翔4,張東偉1,張善從5
(1.中國科學院光電研究院,北京 100094; 2.中國科學院大學,北京 100049;3.北京國科環宇空間技術有限公司,北京 100190; 4.國防科技大學, 長沙 410073;5.中國科學院空間應用工程與技術中心,北京 100094)
摘要:針對軟件單粒子效應防護問題,介紹了一種輕量級軟件加固方法。該方法采用軟件內存巡檢技術,在不增加額外的設備硬件開銷的情況下,檢驗并糾正CPU內存單粒子翻轉,提升設備可靠性。該技術實現簡單,系統資源消耗小,只需在已有程序的基礎上進行少量代碼添加,就可以實現軟件加固,對已有代碼修改量小。利用了系統中CPU空閑率高的特點,只在CPU空閑時對內存進行巡檢,不會干預軟件正常功能的運行。試驗和在軌運行結果表明,該技術可以有效檢測到內存中出現的單粒子異常事件,對原軟件任務的功能性能指標沒有影響。
關鍵詞:計算機;軟件加固;單粒子效應;巡檢
1引言
目前計算機作為主要的控制系統廣泛地應用于航天領域,但由于太空中高能粒子輻照強度較高,其射入集成電路時會導致電路邏輯狀態發生翻轉,引發計算機系統故障。為提高航天器中計算機系統對由于粒子輻射導致系統故障的抵抗能力,可以通過對硬件與軟件的改進來提高計算機系統的抗單粒子能力。
硬件加固主要有使用抗輻照加固的器件、使用三模冗余TMR[1]、使用有ECC[2]糾錯的內存結構等途徑提高計算機系統的抗單粒子能力,但采用硬件加固的計算機系統價格比同等功能的計算機系統高出數倍,且抗輻照芯片須專門采購,來源受限。所以越來越多的系統采用軟件加固方法提高計算機系統的抗單粒子能力。
軟件加固是通過復算、冗余、糾錯碼等方式提高計算機系統的抗單粒子能力。近年的研究表明,計算機系統中80%~90%的失效是由單粒子翻轉(SEU)引起的瞬態故障產生的[3],瞬態故障可以通過軟件算法檢測并糾正。
本文針對計算機系統內存和寄存器瞬態故障提出一種軟件內存巡檢技術加固方法,該方法實現簡單,系統資源消耗小,對不同系統有較好的適應性。
2輕量級軟件內存巡檢技術
2.1設計原理
通常,數據被使用前檢查數據的正確性既可以減少重復的無效檢查,又可以最大程度地確保數據的正確性。但在計算機系統運行過程中,在某個任務到來時檢查數據的正確性,會嚴重影響計算機系統對任務的響應速度,尤其是嘗試檢查正在被使用的數據,這對航天高實時系統的影響尤為嚴重。因此,我們采用在系統CPU空閑時,數據不被使用的時候去檢查數據的正確性。
軟件內存巡檢技術的檢錯原理是基于在一個短的時間片內,大部分內存區的值都是固定不變的這一特性,周期性地計算各個內存區域的校驗和,通過比較同一區域前后兩次的校驗和,檢測內存是否因瞬態故障被非正常的改寫。
2.2實現原理

圖1 對單個區域的巡檢流程Fig.1 Flow chart of the single area inspection
在軟件內存巡檢過程中,我們選擇一段連續的內存空間稱為“巡檢區域”。通常每個巡檢區域的數據只會被一個或幾個確定的進程修改,如各個進程的棧區、進程公用的全局數據段、代碼段等。圖1是對某個巡檢區域的巡檢流程,首先計算一次將要被巡檢的巡檢區域校驗和,并將校驗和保存。在一段時間后(這段時間可以用來計算其他巡檢區域的校驗和),再次計算該巡檢區域的校驗和,并與上次計算的校驗和進行比較。比較前先通過進程執行次數判斷該巡檢區域在兩次校驗之間是否有被正常改寫的可能性。如果在兩次巡檢之間,該巡檢區間被調用,那么本次檢測被跳過,稱本次巡檢為無效巡檢;如果兩次計算校驗和之間,沒有任何可能修改該巡檢區域的進程被調用,稱本次巡檢為“有效巡檢”。兩次有效巡檢的校驗和如果不相等,說明巡檢區域出現了異常改寫。無論何種情況,都保存后一次的校驗和用來進行下一次比較。

圖2 多區域巡檢流程Fig. 2 Flow chart of the multi-area inspection
對于多個巡檢區域的巡檢,只需周期性地計算各個巡檢區域的校驗和,然后分別與各自上次計算的校驗和進行比較,如圖2所示。 對于三個進程棧T1、T2、T3,進程棧T1在前兩次校驗之間被使用過,所以對第一次T1進程棧的巡檢為無效巡檢。進程棧T2在3次巡檢時都未被使用過,所以前兩次巡檢都為有效巡檢。
通常單粒子在短時間內不會同時擊中同一巡檢區域兩次,我們假設擊中每個存儲位的概率相同,則軟件內存巡檢技術在時間段T內發現錯誤的概率P1=有效巡檢次數an/總的巡檢次數sn。
3試驗驗證
3.1地面實驗
地面實驗主要用于驗證加固的有效性,并確認加固技術對程序原有功能和性能的影響。軟件內存巡檢技術的地面試驗是在硬件環境與目標載荷完全相同的設備上進行的,目標載荷處理器為TI公司的DSP C6203處理器,該處理器使用哈佛結構,處理速率約1600 MIPS,片內代碼內存256 KB,數據內存512 KB,設備未掛載其它內存[5]。
地面試驗中,被測程序進程數9個,代碼段1個,全局數據區1個。進程棧總計15 616 B;由于校驗速度所限,過于頻繁的校驗代碼段會嚴重影響其他數據的巡檢工作,所以代碼段校驗頻率被設定為堆棧區的1/10;全局數據區只巡檢固定的2 KB。
地面試驗的統計結果見表1:

表1 地面試驗結果
從表1中可以看出,大部分進程棧區的檢錯效率都在90%以上。8號進程為進程中運行頻率最高的進程,頻率為100次/秒,該進程的檢錯效率為82.93%。15號進程、17號進程與22號進程為外部事件驅動的進程,15號進程、17號進程在開機后沒有收到指令時,進程處于掛起狀態,檢錯效率為100%;22號進程指令的接收頻率非常低(相對于巡檢的速度來說),檢錯效率為99.98%。代碼段數據維持不變,檢錯效率為100%。2 KB的全局數據區是關鍵數據,更新頻率較慢,檢錯效率為93.70%。
經地面驗證,加固技術對錯誤的檢查確實有效,對程序原有的功能和性能無影響。
3.2在軌試驗
采用該技術的軟件于2014年12月上傳至在軌航天器進行在軌試驗,截止2015年3月10日,共檢測到兩次異常,檢測到的錯誤函數編號通過遙測量下行至地面。分別為一次代碼段錯誤,一次全局數據錯誤。
4結論
本文提出的軟件內存巡檢技術內存空間占用量很小,只在原有計算機系統CPU空閑時使用CPU資源,對原軟件任務的功能性能指標未產生影響,達到了軟件內存巡檢技術輕量化的目的。
通過地面試驗和在軌驗證證明,軟件內存巡檢技術可以有效檢測到內存中出現的單粒子異常事件,證明了該方法的正確性與有效性,是一種實用性較強的軟件加固技術。
參考文獻(References)
[1]Rollins N, Wirthlin M, Caffrey M, et al. Evaluating TMR techniques in the presence of single event upsets[C]//Proceedings of the 6th Annual International Conference on Military and Aerospace Programmable Logic Devices (MAPLD). Washington, DC: NASA Office of Logic Design, AIAA. 2003: P63.
[2]Reis G A, Chang J, Vachharajani N, et al. SWIFT: Software implemented fault tolerance[C]//Proceedings of the international symposium on Code generation and optimization. IEEE Computer Society, 2005: 243-254.
[3]Clark J, Pradhan D K. Fault injection: A method for validating computer-system dependability[J]. Computer, 1995, 28(6): 47-56.
[4]Oh N, Shirvani P P, McCluskey E J. Control-flow checking by software signatures[J]. Reliability, IEEE Transactions on, 2002, 51(1): 111-122.
[5]SMJ320C6203 DSP[M/OL]. Texas Instruments,2002. (2002)[2015]. http://www.ti.com.cn/cn/lit/ds/symlink/smj320c6203.pdf.
Lightweight Memory Inspection Technology for Software in Computer System
ZHANG Yifei1,2,3, ZHAO Yuxiang4, ZHANG Dongwei1, ZHANG Shancong5
(1.Academy of opto-electronics, Chinese Academy of Sciences, Beijing 100094, China; 2.University of Chinese Academy of Sciences, Beijing 100049, China; 3.Beijing UCAS Space Technology Co.,Ltd,Beijing 100190, China;4.National University of Defense Technology,Changsha 410073, China; 5.Technology and Engineering Center for Space Utilization, Chinese Academy of Sciences, Beijing 100094, China)
Abstract:This article introduced a lightweight software reinforcement method for single event effect protection technology. The “Software Memory inspection technology” was adopted in this method to test and correct the single event upsets in CPU memory without additional equipment hardware expenditures so as to improve the reliability of the equipment. The protection technology has achieved the goal of both simplicity and small consumption of system resources. It s a lightweight error detection technology. Software engineers only need to add a small amount of code on the basis of the existing code before the achievement of this protection technology. Thereby the modifications to the existing code were reduced. The protection technology utilized the characteristic of the high vacancy rate of CPU in the system. It only inspected the memory when CPU was idle, without interfering with the normal function of the software. The testing experiment and on-orbit operation showed that using the protection technology did not affect the functions and performances of the original software tasks and could meet the requirements of the system running.
Key words:computer; software protection; single event effect; software memory inspection
收稿日期:2015-05-12;修回日期:2015-10-09
作者簡介:張翼飛(1987-),男,碩士研究生,研究方向為計算機技術。E-mail:khalim@126.com
中圖分類號:TP315
文獻標識碼:A
文章編號:1674-5825(2016)03-0368-03