張翼飛,趙宇翔,張東偉,張善從
(1.中國(guó)科學(xué)院光電研究院,北京 100094; 2.中國(guó)科學(xué)院大學(xué),北京 100049;3.北京國(guó)科環(huán)宇空間技術(shù)有限公司,北京 100190; 4.國(guó)防科技大學(xué), 長(zhǎng)沙 410073;5.中國(guó)科學(xué)院空間應(yīng)用工程與技術(shù)中心,北京 100094)
?
輕量級(jí)計(jì)算機(jī)內(nèi)存軟件巡檢技術(shù)
張翼飛1,2,3,趙宇翔4,張東偉1,張善從5
(1.中國(guó)科學(xué)院光電研究院,北京 100094; 2.中國(guó)科學(xué)院大學(xué),北京 100049;3.北京國(guó)科環(huán)宇空間技術(shù)有限公司,北京 100190; 4.國(guó)防科技大學(xué), 長(zhǎng)沙 410073;5.中國(guó)科學(xué)院空間應(yīng)用工程與技術(shù)中心,北京 100094)
摘要:針對(duì)軟件單粒子效應(yīng)防護(hù)問(wèn)題,介紹了一種輕量級(jí)軟件加固方法。該方法采用軟件內(nèi)存巡檢技術(shù),在不增加額外的設(shè)備硬件開銷的情況下,檢驗(yàn)并糾正CPU內(nèi)存單粒子翻轉(zhuǎn),提升設(shè)備可靠性。該技術(shù)實(shí)現(xiàn)簡(jiǎn)單,系統(tǒng)資源消耗小,只需在已有程序的基礎(chǔ)上進(jìn)行少量代碼添加,就可以實(shí)現(xiàn)軟件加固,對(duì)已有代碼修改量小。利用了系統(tǒng)中CPU空閑率高的特點(diǎn),只在CPU空閑時(shí)對(duì)內(nèi)存進(jìn)行巡檢,不會(huì)干預(yù)軟件正常功能的運(yùn)行。試驗(yàn)和在軌運(yùn)行結(jié)果表明,該技術(shù)可以有效檢測(cè)到內(nèi)存中出現(xiàn)的單粒子異常事件,對(duì)原軟件任務(wù)的功能性能指標(biāo)沒有影響。
關(guān)鍵詞:計(jì)算機(jī);軟件加固;單粒子效應(yīng);巡檢
1引言
目前計(jì)算機(jī)作為主要的控制系統(tǒng)廣泛地應(yīng)用于航天領(lǐng)域,但由于太空中高能粒子輻照強(qiáng)度較高,其射入集成電路時(shí)會(huì)導(dǎo)致電路邏輯狀態(tài)發(fā)生翻轉(zhuǎn),引發(fā)計(jì)算機(jī)系統(tǒng)故障。為提高航天器中計(jì)算機(jī)系統(tǒng)對(duì)由于粒子輻射導(dǎo)致系統(tǒng)故障的抵抗能力,可以通過(guò)對(duì)硬件與軟件的改進(jìn)來(lái)提高計(jì)算機(jī)系統(tǒng)的抗單粒子能力。
硬件加固主要有使用抗輻照加固的器件、使用三模冗余TMR[1]、使用有ECC[2]糾錯(cuò)的內(nèi)存結(jié)構(gòu)等途徑提高計(jì)算機(jī)系統(tǒng)的抗單粒子能力,但采用硬件加固的計(jì)算機(jī)系統(tǒng)價(jià)格比同等功能的計(jì)算機(jī)系統(tǒng)高出數(shù)倍,且抗輻照芯片須專門采購(gòu),來(lái)源受限。所以越來(lái)越多的系統(tǒng)采用軟件加固方法提高計(jì)算機(jī)系統(tǒng)的抗單粒子能力。
軟件加固是通過(guò)復(fù)算、冗余、糾錯(cuò)碼等方式提高計(jì)算機(jī)系統(tǒng)的抗單粒子能力。近年的研究表明,計(jì)算機(jī)系統(tǒng)中80%~90%的失效是由單粒子翻轉(zhuǎn)(SEU)引起的瞬態(tài)故障產(chǎn)生的[3],瞬態(tài)故障可以通過(guò)軟件算法檢測(cè)并糾正。
本文針對(duì)計(jì)算機(jī)系統(tǒng)內(nèi)存和寄存器瞬態(tài)故障提出一種軟件內(nèi)存巡檢技術(shù)加固方法,該方法實(shí)現(xiàn)簡(jiǎn)單,系統(tǒng)資源消耗小,對(duì)不同系統(tǒng)有較好的適應(yīng)性。
2輕量級(jí)軟件內(nèi)存巡檢技術(shù)
2.1設(shè)計(jì)原理
通常,數(shù)據(jù)被使用前檢查數(shù)據(jù)的正確性既可以減少重復(fù)的無(wú)效檢查,又可以最大程度地確保數(shù)據(jù)的正確性。但在計(jì)算機(jī)系統(tǒng)運(yùn)行過(guò)程中,在某個(gè)任務(wù)到來(lái)時(shí)檢查數(shù)據(jù)的正確性,會(huì)嚴(yán)重影響計(jì)算機(jī)系統(tǒng)對(duì)任務(wù)的響應(yīng)速度,尤其是嘗試檢查正在被使用的數(shù)據(jù),這對(duì)航天高實(shí)時(shí)系統(tǒng)的影響尤為嚴(yán)重。因此,我們采用在系統(tǒng)CPU空閑時(shí),數(shù)據(jù)不被使用的時(shí)候去檢查數(shù)據(jù)的正確性。
軟件內(nèi)存巡檢技術(shù)的檢錯(cuò)原理是基于在一個(gè)短的時(shí)間片內(nèi),大部分內(nèi)存區(qū)的值都是固定不變的這一特性,周期性地計(jì)算各個(gè)內(nèi)存區(qū)域的校驗(yàn)和,通過(guò)比較同一區(qū)域前后兩次的校驗(yàn)和,檢測(cè)內(nèi)存是否因瞬態(tài)故障被非正常的改寫。
2.2實(shí)現(xiàn)原理
圖1 對(duì)單個(gè)區(qū)域的巡檢流程Fig.1 Flow chart of the single area inspection
在軟件內(nèi)存巡檢過(guò)程中,我們選擇一段連續(xù)的內(nèi)存空間稱為“巡檢區(qū)域”。通常每個(gè)巡檢區(qū)域的數(shù)據(jù)只會(huì)被一個(gè)或幾個(gè)確定的進(jìn)程修改,如各個(gè)進(jìn)程的棧區(qū)、進(jìn)程公用的全局?jǐn)?shù)據(jù)段、代碼段等。圖1是對(duì)某個(gè)巡檢區(qū)域的巡檢流程,首先計(jì)算一次將要被巡檢的巡檢區(qū)域校驗(yàn)和,并將校驗(yàn)和保存。在一段時(shí)間后(這段時(shí)間可以用來(lái)計(jì)算其他巡檢區(qū)域的校驗(yàn)和),再次計(jì)算該巡檢區(qū)域的校驗(yàn)和,并與上次計(jì)算的校驗(yàn)和進(jìn)行比較。比較前先通過(guò)進(jìn)程執(zhí)行次數(shù)判斷該巡檢區(qū)域在兩次校驗(yàn)之間是否有被正常改寫的可能性。如果在兩次巡檢之間,該巡檢區(qū)間被調(diào)用,那么本次檢測(cè)被跳過(guò),稱本次巡檢為無(wú)效巡檢;如果兩次計(jì)算校驗(yàn)和之間,沒有任何可能修改該巡檢區(qū)域的進(jìn)程被調(diào)用,稱本次巡檢為“有效巡檢”。兩次有效巡檢的校驗(yàn)和如果不相等,說(shuō)明巡檢區(qū)域出現(xiàn)了異常改寫。無(wú)論何種情況,都保存后一次的校驗(yàn)和用來(lái)進(jìn)行下一次比較。
圖2 多區(qū)域巡檢流程Fig. 2 Flow chart of the multi-area inspection
對(duì)于多個(gè)巡檢區(qū)域的巡檢,只需周期性地計(jì)算各個(gè)巡檢區(qū)域的校驗(yàn)和,然后分別與各自上次計(jì)算的校驗(yàn)和進(jìn)行比較,如圖2所示。 對(duì)于三個(gè)進(jìn)程棧T1、T2、T3,進(jìn)程棧T1在前兩次校驗(yàn)之間被使用過(guò),所以對(duì)第一次T1進(jìn)程棧的巡檢為無(wú)效巡檢。進(jìn)程棧T2在3次巡檢時(shí)都未被使用過(guò),所以前兩次巡檢都為有效巡檢。
通常單粒子在短時(shí)間內(nèi)不會(huì)同時(shí)擊中同一巡檢區(qū)域兩次,我們假設(shè)擊中每個(gè)存儲(chǔ)位的概率相同,則軟件內(nèi)存巡檢技術(shù)在時(shí)間段T內(nèi)發(fā)現(xiàn)錯(cuò)誤的概率P1=有效巡檢次數(shù)an/總的巡檢次數(shù)sn。
3試驗(yàn)驗(yàn)證
3.1地面實(shí)驗(yàn)
地面實(shí)驗(yàn)主要用于驗(yàn)證加固的有效性,并確認(rèn)加固技術(shù)對(duì)程序原有功能和性能的影響。軟件內(nèi)存巡檢技術(shù)的地面試驗(yàn)是在硬件環(huán)境與目標(biāo)載荷完全相同的設(shè)備上進(jìn)行的,目標(biāo)載荷處理器為TI公司的DSP C6203處理器,該處理器使用哈佛結(jié)構(gòu),處理速率約1600 MIPS,片內(nèi)代碼內(nèi)存256 KB,數(shù)據(jù)內(nèi)存512 KB,設(shè)備未掛載其它內(nèi)存[5]。
地面試驗(yàn)中,被測(cè)程序進(jìn)程數(shù)9個(gè),代碼段1個(gè),全局?jǐn)?shù)據(jù)區(qū)1個(gè)。進(jìn)程??傆?jì)15 616 B;由于校驗(yàn)速度所限,過(guò)于頻繁的校驗(yàn)代碼段會(huì)嚴(yán)重影響其他數(shù)據(jù)的巡檢工作,所以代碼段校驗(yàn)頻率被設(shè)定為堆棧區(qū)的1/10;全局?jǐn)?shù)據(jù)區(qū)只巡檢固定的2 KB。
地面試驗(yàn)的統(tǒng)計(jì)結(jié)果見表1:
表1 地面試驗(yàn)結(jié)果
從表1中可以看出,大部分進(jìn)程棧區(qū)的檢錯(cuò)效率都在90%以上。8號(hào)進(jìn)程為進(jìn)程中運(yùn)行頻率最高的進(jìn)程,頻率為100次/秒,該進(jìn)程的檢錯(cuò)效率為82.93%。15號(hào)進(jìn)程、17號(hào)進(jìn)程與22號(hào)進(jìn)程為外部事件驅(qū)動(dòng)的進(jìn)程,15號(hào)進(jìn)程、17號(hào)進(jìn)程在開機(jī)后沒有收到指令時(shí),進(jìn)程處于掛起狀態(tài),檢錯(cuò)效率為100%;22號(hào)進(jìn)程指令的接收頻率非常低(相對(duì)于巡檢的速度來(lái)說(shuō)),檢錯(cuò)效率為99.98%。代碼段數(shù)據(jù)維持不變,檢錯(cuò)效率為100%。2 KB的全局?jǐn)?shù)據(jù)區(qū)是關(guān)鍵數(shù)據(jù),更新頻率較慢,檢錯(cuò)效率為93.70%。
經(jīng)地面驗(yàn)證,加固技術(shù)對(duì)錯(cuò)誤的檢查確實(shí)有效,對(duì)程序原有的功能和性能無(wú)影響。
3.2在軌試驗(yàn)
采用該技術(shù)的軟件于2014年12月上傳至在軌航天器進(jìn)行在軌試驗(yàn),截止2015年3月10日,共檢測(cè)到兩次異常,檢測(cè)到的錯(cuò)誤函數(shù)編號(hào)通過(guò)遙測(cè)量下行至地面。分別為一次代碼段錯(cuò)誤,一次全局?jǐn)?shù)據(jù)錯(cuò)誤。
4結(jié)論
本文提出的軟件內(nèi)存巡檢技術(shù)內(nèi)存空間占用量很小,只在原有計(jì)算機(jī)系統(tǒng)CPU空閑時(shí)使用CPU資源,對(duì)原軟件任務(wù)的功能性能指標(biāo)未產(chǎn)生影響,達(dá)到了軟件內(nèi)存巡檢技術(shù)輕量化的目的。
通過(guò)地面試驗(yàn)和在軌驗(yàn)證證明,軟件內(nèi)存巡檢技術(shù)可以有效檢測(cè)到內(nèi)存中出現(xiàn)的單粒子異常事件,證明了該方法的正確性與有效性,是一種實(shí)用性較強(qiáng)的軟件加固技術(shù)。
參考文獻(xiàn)(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
作者簡(jiǎn)介:張翼飛(1987-),男,碩士研究生,研究方向?yàn)橛?jì)算機(jī)技術(shù)。E-mail:khalim@126.com
中圖分類號(hào):TP315
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1674-5825(2016)03-0368-03