[發(fā)明專利]一種基于錯誤傳播分析的SDC脆弱指令識別方法有效
| 申請?zhí)枺?/td> | 201410234116.1 | 申請日: | 2014-05-29 |
| 公開(公告)號: | CN103984632A | 公開(公告)日: | 2014-08-13 |
| 發(fā)明(設(shè)計(jì))人: | 汪蕓;馬駿馳;李凱 | 申請(專利權(quán))人: | 東南大學(xué) |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 江蘇永衡昭輝律師事務(wù)所 32250 | 代理人: | 王斌 |
| 地址: | 210096*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 錯誤 傳播 分析 sdc 脆弱 指令 識別 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域的軟錯誤檢測,具體涉及一種基于錯誤傳播分析的SDC脆弱指令識別方法。
背景技術(shù)
單粒子翻轉(zhuǎn)(Single?Event?Upset)造成的軟錯誤,是半導(dǎo)體電路中的一種瞬態(tài)故障現(xiàn)象,通常是由外部環(huán)境中的高能粒子輻照和電壓擾動、電磁干擾等電子噪聲誘發(fā)。軟錯誤雖然不會損壞內(nèi)部硬件電路,但是卻可以通過改變處理器狀態(tài)或存儲單元值等方式影響程序的正常運(yùn)行,甚至導(dǎo)致衛(wèi)星運(yùn)行異常或者失控。近年來,芯片集成晶體管數(shù)呈指數(shù)級增長,在性能得到大幅提升的同時,處理器對于單粒子翻轉(zhuǎn)變得更加敏感,系統(tǒng)整體的軟錯誤率快速增加,因此對于單粒子軟錯誤的檢測與加固技術(shù)的需求變得日益迫切。
單粒子軟錯誤引起的故障類型大致可以分為四種,包括:屏蔽(Benign)、崩潰(Crash)、掛起(Hang)和無異常伴隨的結(jié)果錯誤(Silent?Data?Corruption,后文簡稱SDC)。其中,屏蔽沒有造成可見的異常,并且運(yùn)行結(jié)果正確;崩潰和掛起沒有得到運(yùn)行結(jié)果;SDC得到了運(yùn)行結(jié)果,并且結(jié)果是錯誤的。由于導(dǎo)致SDC的運(yùn)行過程不會拋出異常,因此SDC的發(fā)生最為隱蔽。一旦發(fā)生SDC,如果不能有效的檢測,可能導(dǎo)致嚴(yán)重的后果。
現(xiàn)有的軟錯誤檢測方法主要基于現(xiàn)象捕捉(Symptom-based?Detector)。現(xiàn)象是指系統(tǒng)的一些異常特征,包括分支預(yù)測失效、cache命中率低等。當(dāng)檢測器捕捉到異常特征時,就認(rèn)為發(fā)生了軟錯誤。此方法對軟錯誤的檢測率高、代價(jià)較低,但是不能檢測導(dǎo)致SDC的軟錯誤,因?yàn)镾DC是隱蔽傳播的,不會出現(xiàn)常見的異常特征。
為了彌補(bǔ)基于現(xiàn)象捕捉方法的缺陷,近年來出現(xiàn)了針對導(dǎo)致SDC的軟錯誤檢測方法,主要包括指令級冗余和程序級斷言。指令級冗余對容易受到軟錯誤干擾的指令進(jìn)行時間或空間的冗余設(shè)計(jì);程序級斷言通過對程序正常運(yùn)行時為真的條件進(jìn)行判斷來檢測軟錯誤。兩種方法都需要針對選定的指令添加檢測代碼。執(zhí)行檢測代碼會導(dǎo)致額外的時間代價(jià),并且選定的指令越多,代價(jià)越高昂。為了減小時間代價(jià),兩種方法都重點(diǎn)針對SDC脆弱指令(SDC-causing?instruction)進(jìn)行部署。SDC脆弱指令是指發(fā)生軟錯誤后會導(dǎo)致SDC的指令。
SDC脆弱指令可以通過錯誤注入實(shí)驗(yàn)(Fault?Injection?Campaign)得到。錯誤注入實(shí)驗(yàn)通過隨機(jī)修改硬件的一個比特位來模擬單粒子翻轉(zhuǎn)。注入錯誤數(shù)是修改比特位的總次數(shù),可以用來衡量錯誤注入實(shí)驗(yàn)的時間代價(jià)。假如對每條指令都進(jìn)行錯誤注入,即使規(guī)模很小的程序都有巨量的注入錯誤數(shù)。例如,對目的操作數(shù)(32位)進(jìn)行錯誤注入,當(dāng)程序含有10000條指令時,注入錯誤數(shù)就達(dá)到320000。為了減少注入錯誤數(shù),一般只抽取部分指令樣本進(jìn)行錯誤注入。隨機(jī)抽樣雖然能夠保證樣本與原有的指令集合具有近似的SDC比例,但由于樣本數(shù)量有限,會漏選很多SDC脆弱指令,造成檢測的漏洞。
根據(jù)是否進(jìn)行錯誤注入實(shí)驗(yàn),可將現(xiàn)有工作中識別SDC脆弱指令的方法分為動態(tài)方法和靜態(tài)方法兩類,以下分類進(jìn)行介紹。動態(tài)方法進(jìn)行錯誤注入實(shí)驗(yàn),通過選擇性錯誤注入緩解了原有錯誤注入實(shí)驗(yàn)代價(jià)過高的問題。
Relyzer壓縮了導(dǎo)致非SDC故障類型和等價(jià)類的錯誤注入。等價(jià)類是指每個基本塊(basic?block)都相同的控制流實(shí)例組成的集合,對等價(jià)類的不同實(shí)例進(jìn)行錯誤注入得到的結(jié)果是相似的,因此在等價(jià)類中只選擇一個代表進(jìn)行錯誤注入。
SmartInjector補(bǔ)充了Relyzer的方法,認(rèn)為具備相同數(shù)據(jù)傳播模式的數(shù)據(jù)流的注入結(jié)果是相似的,將其歸為同一個等價(jià)類,并只選擇一個實(shí)例進(jìn)行錯誤注入。
CriticalFault通過指令級脆弱性分析來減少注入錯誤數(shù)。指令級脆弱性分析能夠找出非敏感位。在非敏感位發(fā)生的軟錯誤不會對程序的運(yùn)行產(chǎn)生影響,也不會產(chǎn)生SDC,因而CriticalFault排除掉了這些非敏感位的錯誤注入。
靜態(tài)方法不進(jìn)行錯誤注入實(shí)驗(yàn),而是通過直接分析指令特征得到SDC脆弱指令。
Shoestring認(rèn)為所有影響全局內(nèi)存或函數(shù)參數(shù)的指令都是SDC脆弱指令。此判定方法容易實(shí)施,但由于判定條件只考慮指令的目的操作數(shù),而不考慮程序邏輯等其他因素,因此準(zhǔn)確率較低。
SymPLIFIED通過符號執(zhí)行模擬錯誤傳播過程來識別SDC脆弱指令。由于符號執(zhí)行窮舉了所有錯誤傳播路徑,因此不會出現(xiàn)漏判。但其模擬的某些錯誤在現(xiàn)實(shí)中不會發(fā)生,所以準(zhǔn)確率較低。并且符號執(zhí)行導(dǎo)致了狀態(tài)爆炸,使得時間和空間代價(jià)極大。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于東南大學(xué),未經(jīng)東南大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410234116.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類





