本發(fā)明屬于系統(tǒng)單粒子軟錯誤可靠性評估,涉及一種基于動態(tài)指令流的高效多核處理器故障注入方法。
背景技術:
1、在空間應用中,嵌入式處理器系統(tǒng)在高速數(shù)傳、信號通信、導航處理等數(shù)據(jù)信息處理和控制領域得到廣泛應用,然而由于空間單粒子輻射效應的存在,單粒子軟錯誤對處理器運行狀態(tài)的影響,其故障形式表現(xiàn)為以下兩類:(1)系統(tǒng)運行狀態(tài)異常或者跑飛、死循環(huán),此類故障稱為癥狀型故障,當觀測到故障發(fā)生時,系統(tǒng)已經(jīng)奔潰;(2)系統(tǒng)結(jié)果出錯,此類由于狀態(tài)出錯造成結(jié)果故障,稱為狀態(tài)錯誤故障,此時整個程序狀態(tài)表面正常運行,但輸出結(jié)果錯誤,進而可引起系統(tǒng)連鎖錯誤指示。上述狀態(tài)錯誤引發(fā)的系統(tǒng)故障由于具備隨機性、隱蔽性特點,難以及時觀測和恢復,但又是易發(fā)性故障,因此通過采用地面模擬故障注入方法,實現(xiàn)對系統(tǒng)單粒子翻轉(zhuǎn)敏感動態(tài)指令流進行故障注入,模擬空間輻照環(huán)境下的系統(tǒng)工作穩(wěn)定性,提前進行故障預判分析,降低系統(tǒng)故障發(fā)生的幾率,提升系統(tǒng)在軌可靠性運行。
2、當前的技術多基于修改指令層級代碼進行故障注入行為的表述,或者基于硬件故障方式注入,其注入行為往往需要預編譯,并且屬于粗放型注入,在實現(xiàn)過程中無法模擬單粒子翻轉(zhuǎn)效應進行實時、有效和精確故障注入,造成了故障注入測試范圍、檢測效率降低等缺點,。因此,當前技術在設計的覆蓋性、有效性和檢測效率等方面依然有改善提升空間。
技術實現(xiàn)思路
1、本發(fā)明解決的技術問題是:克服現(xiàn)有技術的不足,提出一種基于動態(tài)指令流的高效多核處理器故障注入方法。
2、本發(fā)明解決技術的方案是:
3、一種基于動態(tài)指令流的高效多核處理器故障注入方法,包括:
4、確定多核處理器的核心id;
5、根據(jù)確定的處理器核心id,提取原始指令流;
6、將提取到的原始指令流格式化為動態(tài)指令流;
7、基于動態(tài)指令流,篩選易受單粒子翻轉(zhuǎn)影響的指令,生成篩選后的動態(tài)指令流文件;
8、以篩選后的動態(tài)指令流文件進行隨機分布截取動態(tài)指令,將gdb調(diào)試器切換到要注入的處理器核心id;
9、讀取編譯后帶調(diào)試功能的應用程序源文件,提供gdb調(diào)試器的斷點調(diào)試信息;
10、根據(jù)截取的動態(tài)指令,創(chuàng)建故障注入斷點,根據(jù)注入指令的執(zhí)行次數(shù)確定停止位置;
11、注入故障到相應資源處,恢復多核同步執(zhí)行,繼續(xù)執(zhí)行應用程序。
12、優(yōu)選的,根據(jù)確定的處理器核心id,提取原始指令流的方法如下:
13、對于每條運行的指令,利用gdb調(diào)試器的斷點功能,將應用程序運行于指令入口處暫停,供后續(xù)gdb調(diào)試;
14、通過gdb調(diào)試器單步執(zhí)行功能讓處理器核心的應用程序匯編指令按單指令逐步執(zhí)行;
15、在逐條運行的指令斷點處,通過命令查看pc寄存器獲取當前的匯編指令信息,并生成動態(tài)運行的原始指令流。
16、優(yōu)選的,將提取到的原始指令流格式化為動態(tài)指令流,格式化內(nèi)容如下:
17、<coreid,curindex,machcode,func+offset,asmcode>
18、其中,coreid是指當前注入的處理器核心id,curindex是指當前指令的運行序號,代表其在總的指令執(zhí)行流程中的第幾次執(zhí)行;machcode是指當前指令的機器碼;func+offset代表指令在運行過程中提供給故障注入的斷點位置;asmcode是指當前指令的匯編指令。
19、優(yōu)選的,易受單粒子翻轉(zhuǎn)影響的指令,包括加載與存儲指令、整數(shù)與浮點運算指令、邏輯運算指令以及跳轉(zhuǎn)指令。
20、優(yōu)選的,以篩選后的動態(tài)指令流文件進行隨機分布截取動態(tài)指令,將gdb調(diào)試器通過thread命令切換到要注入的處理器核心id。
21、優(yōu)選的,根據(jù)截取的動態(tài)指令,創(chuàng)建故障注入斷點,根據(jù)注入指令的執(zhí)行次數(shù)確定停止位置,實現(xiàn)方法如下:
22、根據(jù)隨機分布獲得需要注入的寄存器編號及寄存器翻轉(zhuǎn)位;
23、通過gdb調(diào)試器的set指令進行故障注入,注入的故障是采用位翻轉(zhuǎn)的方式實現(xiàn)的,故障掩碼為在數(shù)據(jù)位寬中只有故障注入位為1,其余位都為0的掩碼數(shù)值。
24、優(yōu)選的,位翻轉(zhuǎn)的實現(xiàn)是通過目標資源值與故障掩碼進行按位異或?qū)崿F(xiàn)的,根據(jù)按位異或的二進制加法特性,當注入位的值與1異或運算,會將對寄存器當前值進行0或1的翻轉(zhuǎn),而其他值保持原始值,從而實現(xiàn)按位翻轉(zhuǎn)的故障注入。
25、優(yōu)選的,注入故障后,通過應用程序執(zhí)行結(jié)果,判斷故障注入對系統(tǒng)運行影響,評估系統(tǒng)設計可靠性。
26、本發(fā)明與現(xiàn)有技術相比的有益效果是:
27、(1)本發(fā)明依據(jù)多核處理器的加存運算與指令跳轉(zhuǎn)特性,篩選出單粒子翻轉(zhuǎn)敏感的動態(tài)指令流,通過模擬注入方式實現(xiàn)了程序受單粒子翻轉(zhuǎn)影響的故障工作模式;
28、(2)本發(fā)明故障注入采用了伴隨程序指令執(zhí)行時間尺度的斷點動態(tài)注入方式,單條指令粒度的精細故障注入,具有可控精確的注入時機,有效避免了注入時機選擇對注入錯誤的生效,最大程度避免了無效注入,有效提高覆蓋性、有效性和檢測效率,;
29、(3)本發(fā)明實現(xiàn)了對多核處理器的故障注入,相比單核擴展了故障注入的適用范圍;
30、(4)本發(fā)明不單純依靠單粒子輻照試驗對系統(tǒng)單粒子防護可靠性評估,從而減少對單粒子試驗的依賴,提升評估系統(tǒng)抗seu評估效率。
1.一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,根據(jù)確定的處理器核心id,提取原始指令流的方法如下:
3.根據(jù)權(quán)利要求1所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,將提取到的原始指令流格式化為動態(tài)指令流,格式化內(nèi)容如下:
4.根據(jù)權(quán)利要求1所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,易受單粒子翻轉(zhuǎn)影響的指令,包括加載與存儲指令、整數(shù)與浮點運算指令、邏輯運算指令以及跳轉(zhuǎn)指令。
5.根據(jù)權(quán)利要求1所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,以篩選后的動態(tài)指令流文件進行隨機分布截取動態(tài)指令,將gdb調(diào)試器通過thread命令切換到要注入的處理器核心id。
6.根據(jù)權(quán)利要求1所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,根據(jù)截取的動態(tài)指令,創(chuàng)建故障注入斷點,根據(jù)注入指令的執(zhí)行次數(shù)確定停止位置,實現(xiàn)方法如下:
7.根據(jù)權(quán)利要求6所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,位翻轉(zhuǎn)的實現(xiàn)是通過目標資源值與故障掩碼進行按位異或?qū)崿F(xiàn)的,根據(jù)按位異或的二進制加法特性,當注入位的值與1異或運算,會將對寄存器當前值進行0或1的翻轉(zhuǎn),而其他值保持原始值,從而實現(xiàn)按位翻轉(zhuǎn)的故障注入。
8.根據(jù)權(quán)利要求1所述的一種基于動態(tài)指令流的高效多核處理器故障注入方法,其特征在于,注入故障后,通過應用程序執(zhí)行結(jié)果,判斷故障注入對系統(tǒng)運行影響,評估系統(tǒng)設計可靠性。