亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向二進(jìn)制代碼的軟錯誤故障注入器設(shè)計(jì)與實(shí)現(xiàn)

        2021-10-15 12:48:28羅予東董守玲
        關(guān)鍵詞:程序故障

        羅予東 董守玲 陸 璐

        1(嘉應(yīng)學(xué)院計(jì)算機(jī)學(xué)院 廣東 梅州 514015) 2(華南理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 廣東 廣州 510641)

        0 引 言

        隨著計(jì)算機(jī)硬件設(shè)備集成度的日益提高,現(xiàn)代系統(tǒng)中的硬件故障率也與日俱增。隨著芯片小型化和精密化的不斷發(fā)展,硬件設(shè)備更容易受到外部環(huán)境的影響。在使用過程中,主要的故障問題是軟錯誤:一些隨機(jī)位在存儲器和寄存器中翻轉(zhuǎn),導(dǎo)致軟件在計(jì)算時產(chǎn)生不可預(yù)知的錯誤。導(dǎo)致硬件設(shè)備電壓變化、存儲器位翻轉(zhuǎn)等軟錯誤的原因很多,對于高可靠性要求的軟件應(yīng)用,更加重視軟錯誤的影響。目前,硬件和系統(tǒng)級檢測與校正機(jī)制幾乎不能監(jiān)視某些軟錯誤。因此,研究軟錯誤對程序計(jì)算、程序控制的系統(tǒng)來說具有重要意義。

        為了評估軟錯誤對系統(tǒng)的影響,通常的解決方案是手動生成故障并研究程序在故障下的行為及動作。通常的方法是采用軟件方式注入故障,除此以外還可以模擬外部環(huán)境(如輻射等)產(chǎn)生故障。由于在實(shí)際應(yīng)用中很少發(fā)生軟錯誤,因此需要提高軟錯誤的發(fā)生概率。實(shí)際上,模擬外部環(huán)境和直接修改硬件設(shè)備狀態(tài),代價是昂貴且不切實(shí)際的。研究表明在機(jī)器代碼級通過軟件故障注入技術(shù)更容易模擬硬件故障,并且具有較高的精度[1]。

        在硬件模擬方法中,通過硬件模擬設(shè)備實(shí)現(xiàn)位翻轉(zhuǎn)。該方法可以提供機(jī)器代碼級的硬件故障注入,通過檢測和校正機(jī)制可以覆蓋整個注入過程。為了實(shí)現(xiàn)匯編代碼的故障注入結(jié)果與源代碼的映射,研究并設(shè)計(jì)了一種軟件故障注入方法,可以針對源代碼進(jìn)行故障注入。目前,該技術(shù)面臨的主要挑戰(zhàn)是如何保證硬件錯誤能夠精確注入。原因是硬件錯誤可以分布在程序的任何地方和任何部分,而程序的某些組件無法提供源代碼。二進(jìn)制故障注入技術(shù)可以有效解決上述兩個問題,能夠提供可操縱的、準(zhǔn)確以及實(shí)用的故障注入方法,該方法通過直接修改二進(jìn)制代碼來模擬硬件故障。常用的動態(tài)二進(jìn)制故障檢測和注入工具包括PIN[2]和Valgrind[3],基于上述工具進(jìn)行故障模擬的方法已被證明是準(zhǔn)確和有效的。該故障注入技術(shù)主要是處理機(jī)器代碼級的硬件指令,對于源代碼級的故障注入更是準(zhǔn)確和有效的。

        為了研究軟錯誤對程序計(jì)算的實(shí)際影響,本文設(shè)計(jì)并開發(fā)了一種基于PIN的故障注入器。其主要特點(diǎn)是可以在特定位置檢測和修改應(yīng)用程序,包括各種寄存器和存儲器單元。實(shí)驗(yàn)證明,該方法針對ECC保護(hù)存儲器和邏輯單元可以有效地模擬位翻轉(zhuǎn)。本文的主要貢獻(xiàn)是:

        1) 本文設(shè)計(jì)的故障注入器基于PIN工具。介紹了故障注入器的設(shè)計(jì)和實(shí)現(xiàn),它能夠注入軟錯誤并分析運(yùn)行結(jié)果,同時提供了一種將故障注入任何特定存儲器和寄存器的方法。

        2) 研究并分析了基于PIN的故障注入器的準(zhǔn)確性,評估了軟錯誤對應(yīng)用程序的影響。

        1 國內(nèi)外主要研究工作

        截至目前,軟錯誤對應(yīng)用性能和系統(tǒng)可靠性的影響越來越受到關(guān)注,故障注入技術(shù)作為研究軟錯誤對系統(tǒng)影響的一種常用方法,現(xiàn)已被廣泛采用。在故障注入技術(shù)領(lǐng)域,已經(jīng)提出了許多種方法,主要包括以下內(nèi)容。

        1.1 軟錯誤分析的故障注入

        硬件模擬方法通過在機(jī)器代碼級別使用硬件模擬器產(chǎn)生單粒子翻轉(zhuǎn),可以在系統(tǒng)架構(gòu)級別輕松注入故障,例如內(nèi)存和寄存器。研究人員采用了照射硬件的方法使存儲器單元在運(yùn)行過程中引發(fā)位翻轉(zhuǎn)。Karlsson等[4]提出了一種通過使用來自acallfbtnhun-252源的重離子輻射將瞬態(tài)故障注入到集成芯片電路的方法。該方法模擬軟錯誤的基本原理實(shí)現(xiàn)了硬件單粒子翻轉(zhuǎn)。這種方法的缺點(diǎn)顯而易見,它們通常是無法控制且高成本的。另外,該方法可能會破壞目標(biāo)系統(tǒng)。

        基于軟件的故障注入技術(shù)是修改目標(biāo)系統(tǒng)運(yùn)行的硬件狀態(tài),分析在硬件故障發(fā)生時系統(tǒng)的運(yùn)行情況。Guan等[5]設(shè)計(jì)并實(shí)現(xiàn)了軟錯誤故障注入框架SEFI,這是一種分析軟件對軟錯誤敏感性的工具。在不改變其他程序或共享VM的操作系統(tǒng)的情況下,可以通過使用開源虛擬機(jī)和處理器仿真器(QEMU)成功地實(shí)現(xiàn)在目標(biāo)程序的邏輯操作中注入軟錯誤。但是該方法不支持對特定的寄存器和存儲器進(jìn)行故障注入。

        1.2 基于動態(tài)二進(jìn)制插裝的故障注入

        目前,比較流行的故障注入技術(shù)是動態(tài)地模擬應(yīng)用程序二進(jìn)制文件中的軟錯誤。王承松[6]提出了一個名為BIFIT的故障注入工具,它基于二進(jìn)制檢測來模擬位翻轉(zhuǎn)。BIFIT能夠在任何指定的位置注入錯誤,如應(yīng)用程序的全局或堆棧數(shù)據(jù)對象等。但是不支持對寄存器的注入操作,需要進(jìn)一步的改進(jìn)。Li等[7]開發(fā)了一種新的故障注入工具FIT-grind,它使用了Valgrind提供的動態(tài)二進(jìn)制插裝。該工具從底層硬件架構(gòu)進(jìn)行抽象,并將故障注入到Valgrind提供的人工架構(gòu)中。但是其不支持軟件在動態(tài)運(yùn)行過程中的注入操作,所以需要增強(qiáng)故障注入的靈活性。

        2 故障模型和動態(tài)二進(jìn)制檢測框架

        2.1 故障模型

        本文主要考慮針對處理器和存儲器單元發(fā)生的單粒子翻轉(zhuǎn)錯誤。該錯誤一般是由外部環(huán)境輻射引起的。通常每個應(yīng)用程序運(yùn)行過程中僅產(chǎn)生一個bit位的翻轉(zhuǎn)錯誤,根據(jù)研究表明,在短時間內(nèi)產(chǎn)生多位翻轉(zhuǎn)的概率非常低。在選擇注入故障的指令時,采用隨機(jī)均勻分布。例如,如果應(yīng)用程序選擇與插裝條件匹配的N條指令,則指令注入故障的概率為1/N。由于寄存器值和存儲器單元內(nèi)容具有多個位,因此采用隨機(jī)均勻分布的方法選擇翻轉(zhuǎn)故障的位[8]。

        依據(jù)軟錯誤模擬的相關(guān)研究,將實(shí)驗(yàn)結(jié)果分為以下幾類,具體定義內(nèi)容如下。

        定義1良性故障——故障注入的程序輸出與原始執(zhí)行結(jié)果相同。其主要原因是可以通過后續(xù)的程序計(jì)算來覆蓋故障數(shù)據(jù)。因此,故障不會擴(kuò)散到應(yīng)用程序中,也不會影響其運(yùn)行結(jié)果。

        定義2硬件異常——由于故障注入引起的硬件陷阱或異常,軟錯誤可能會導(dǎo)致應(yīng)用程序崩潰。

        定義3內(nèi)存捕獲——注入的錯誤被內(nèi)置檢測機(jī)制捕獲。

        定義4靜默數(shù)據(jù)損壞(SDC)——故障注入程序的輸出與原始程序成功執(zhí)行后的結(jié)果不一致,通常被認(rèn)為是危險故障,因?yàn)樗鼈冊诔绦驁?zhí)行期間無法被檢測到,但確實(shí)會影響其結(jié)果。

        定義5應(yīng)用程序掛起(“超時”)——如果應(yīng)用程序沒有在規(guī)定的時間內(nèi)終止,則定義為超時。通常在不執(zhí)行故障注入的情況下運(yùn)行程序以獲得基準(zhǔn)時間[9]。

        2.2 PIN

        PIN是由英特爾設(shè)計(jì)的程序分析框架,它在執(zhí)行Linux應(yīng)用程序過程中進(jìn)行二進(jìn)制插裝,具有可移植性、透明性、高效率和健壯性,采用C/C++編程實(shí)現(xiàn),提供了一個支持多種體系結(jié)構(gòu)的插裝平臺,實(shí)現(xiàn)了一種程序分析器和故障注入器[10]。PIN配備了豐富的API,抽象出架構(gòu)的具體細(xì)節(jié),可以編寫便攜式插裝工具。PIN采用即時(JIT)編譯的方法插入和優(yōu)化代碼,提供了一種高效的檢測機(jī)制,該檢測機(jī)制可以在程序運(yùn)行過程中探測代碼,從而使得PIN比靜態(tài)檢測或代碼修補(bǔ)的系統(tǒng)工具更強(qiáng)大。

        3 軟錯誤故障注入器

        軟錯誤故障注入器是一種基于二進(jìn)制檢測的故障注入工具,可在機(jī)器代碼級注入硬件故障。該注入器使用PIN(動態(tài)二進(jìn)制插裝和分析工具)模擬存儲器和各種寄存器中的單粒子翻轉(zhuǎn)。故障注入的目標(biāo)是可執(zhí)行的二進(jìn)制程序,可以在沒有源代碼的情況下模擬軟錯誤,其故障注入方法不受編程語言的影響[11]。

        3.1 軟錯誤故障注入器概述

        圖1給出了故障注入器的架構(gòu)設(shè)計(jì),主要由三個模塊組成:控制器、監(jiān)視器和故障注入模塊。使用動態(tài)檢測工具可以在應(yīng)用程序執(zhí)行期間將故障注入到存儲器和寄存器的隨機(jī)位置。為了提高插裝性能,設(shè)計(jì)并開發(fā)了一個收集指令信息的監(jiān)視器。為了協(xié)調(diào)預(yù)處理和插裝功能,采用了基于Python腳本的控制器??刂破鞑粌H僅是提供給用戶直接使用的組件,而且還是整個故障注入過程的控制器。在控制器的協(xié)同下,注入器使用預(yù)處理的指令信息執(zhí)行故障注入操作;故障注入模塊負(fù)責(zé)軟錯誤的模擬與實(shí)現(xiàn)。圖2為故障注入過程,其整個過程如下:

        1) 用戶控制器,該控制器通過界面的方式提供給用戶,配置實(shí)驗(yàn)的相關(guān)參數(shù)信息。

        2) 控制器激活目標(biāo)系統(tǒng)和監(jiān)視器并執(zhí)行。監(jiān)視器獲取有關(guān)故障注入點(diǎn)的相關(guān)數(shù)據(jù)。故障注入點(diǎn)為程序監(jiān)視模式下的具體實(shí)例,故障信息被傳遞到故障注入器中,注入器激活故障并注入到與控制器相連的進(jìn)程中。

        3) 故障注入器啟動后,將故障注入到二進(jìn)制程序中。故障注入產(chǎn)生的數(shù)據(jù)傳遞給控制器,然后存儲在文件中以供離線分析。在注入操作完成并且從目標(biāo)系統(tǒng)收集了所有數(shù)據(jù)之后,控制器退出實(shí)驗(yàn)并關(guān)閉監(jiān)視器。

        圖1 故障注入器架構(gòu)設(shè)計(jì)

        圖2 故障注入過程

        3.2 監(jiān)視器

        監(jiān)視器是故障注入器的一個模塊,用于判斷在測試過程中注入軟件故障的位置。該模塊能夠收集所有可能的故障信息以及相關(guān)的故障模式,并為故障注入器提供該信息。在注入操作之前監(jiān)視器獲取了指令的詳細(xì)信息進(jìn)而加速故障注入過程。應(yīng)用程序的分析過程不會影響程序?qū)收献⑷氲捻憫?yīng)。事實(shí)上,監(jiān)視器為所有可能的故障位置提供了特定插裝操作的相關(guān)故障模式??刂破鲉涌蓤?zhí)行程序和監(jiān)視器。后者識別某些指令模式并將分析信息存儲到文件中作為故障注入點(diǎn)。當(dāng)應(yīng)用程序到達(dá)指定的執(zhí)行點(diǎn)并匹配輸入的分析信息時,故障注入模塊立即注入故障以模擬bit位翻轉(zhuǎn)。故障注入操作將使不相關(guān)的代碼快速運(yùn)行。通過在指定的故障注入執(zhí)行點(diǎn)之前注入故障和插裝,可以精確地提高插裝性能。

        3.3 控制器

        控制器為用戶與故障注入器之間的接口,通過用戶配置實(shí)現(xiàn)故障注入操作。采用Python腳本的方式實(shí)現(xiàn)控制器信息配置,故障支持多次注入,用戶可以靈活地設(shè)計(jì)各種故障實(shí)例集。控制器將用戶設(shè)置的參數(shù)傳遞給監(jiān)視器,并協(xié)調(diào)監(jiān)視器和故障注入模塊之間的工作。

        控制器負(fù)責(zé)收集故障注入操作產(chǎn)生的相關(guān)數(shù)據(jù),包括應(yīng)用狀態(tài)、執(zhí)行輸出和故障注入信息。此外,如果應(yīng)用程序運(yùn)行很長時間,控制腳本將中止應(yīng)用程序執(zhí)行。如果執(zhí)行時間超過設(shè)定值,故障注入器將可執(zhí)行程序狀態(tài)定義為超時。根據(jù)之前的故障注入研究成果,超時時間系數(shù)設(shè)置為10,表示故障注入下目標(biāo)應(yīng)用程序的執(zhí)行時間比無錯誤執(zhí)行時間延長了10倍。

        3.4 故障注入模塊

        故障注入模塊是整個系統(tǒng)的關(guān)鍵模塊。通過監(jiān)視器和控制器的協(xié)調(diào),故障注入器可以在任何執(zhí)行位置產(chǎn)生位翻轉(zhuǎn)錯誤。故障注入模塊應(yīng)能夠識別故障注入點(diǎn),通過PIN的API識別與用戶配置匹配的特定故障模式。PIN提供了一種通過允許分析例程覆蓋應(yīng)用程序寄存器和應(yīng)用程序內(nèi)存來修改程序行為的方法,這種機(jī)制可以模擬寄存器和存儲器的位翻轉(zhuǎn)。對于寄存器,可以通過確定操作數(shù)是否帶PIN助手的寄存器來選擇限定指令,同時,可以指定寄存器的類型,包括數(shù)據(jù)寄存器、標(biāo)志寄存器等。對于存儲器借助PIN的功能接口判斷是否進(jìn)行加載或存儲操作[12]。

        4 實(shí)驗(yàn)與結(jié)果分析

        4.1 典型應(yīng)用程序的選取

        實(shí)驗(yàn)所選應(yīng)用程序代表了典型的應(yīng)用程序。本文中使用的目標(biāo)應(yīng)用程序主要包括:

        1) 多線程程序應(yīng)用。多線程協(xié)同工作,共享存儲資源,線程之間通過鎖控制不同順序的執(zhí)行過程。要求訪問全局存儲線程安全的工具或手段能夠與其他線程協(xié)調(diào)。

        2) 預(yù)測算法?;诰€性關(guān)系數(shù)據(jù)的算法,通過讀寫存儲器完成數(shù)據(jù)的訪問,通過寄存器保存中間過程,完成復(fù)雜的預(yù)測式計(jì)算。

        3) 浮點(diǎn)計(jì)算。通過浮點(diǎn)寄存器傳遞參數(shù),完成浮點(diǎn)計(jì)算,輸出計(jì)算結(jié)果到其他應(yīng)用。

        4.2 實(shí)驗(yàn)方法

        本節(jié)主要介紹了故障注入實(shí)驗(yàn)的結(jié)果。實(shí)驗(yàn)環(huán)境的操作系統(tǒng)是Linux(x64),在該環(huán)境中下載PIN 3.7并進(jìn)行二次開發(fā)以實(shí)現(xiàn)功能擴(kuò)展。在選擇注入故障的模式時,采用隨機(jī)均勻分布的方法。

        通過實(shí)驗(yàn)評估軟錯誤對應(yīng)用程序執(zhí)行時間和應(yīng)用程序輸出結(jié)果的影響。為了評估故障注入對執(zhí)行時間的影響,定義了三個執(zhí)行時間。T0為最初的程序執(zhí)行時間,作為基準(zhǔn)時間;T1為故障注入后的執(zhí)行時間;T2為在沒有故障注入但是使用插裝的情況下的執(zhí)行時間。將故障注入的性能影響定義為P。其計(jì)算公式如下:

        P=(T1-T2)/T0

        對于故障注入操作,根據(jù)監(jiān)視器的指令信息隨機(jī)選擇800條指令,選擇一個隨機(jī)均勻分布的指令來隨機(jī)翻轉(zhuǎn)。對于每個應(yīng)用程序,模擬寄存器和存儲器的單粒子翻轉(zhuǎn),分別執(zhí)行三次故障注入,觀察整個故障注入期間應(yīng)用程序的執(zhí)行時間,并評估軟錯誤對其性能的影響。

        4.3 實(shí)驗(yàn)結(jié)果

        在同一應(yīng)用程序的不同位置注入故障會對執(zhí)行時間產(chǎn)生不同的影響。圖3顯示了軟錯誤對多線程應(yīng)用程序執(zhí)行時間的影響,同時可以看到寄存器故障注入下的執(zhí)行時間明顯長于內(nèi)存故障注入時的執(zhí)行時間,這說明應(yīng)用程序的寄存器單元對軟錯誤故障特別敏感。

        圖3 多線程應(yīng)用程序的擴(kuò)展執(zhí)行時間

        圖4說明了在預(yù)測算法應(yīng)用程序中,寄存器故障的執(zhí)行時間明顯比存儲器的執(zhí)行時間延長,這表明應(yīng)用程序的寄存器故障對軟錯誤故障響應(yīng)明顯。而在寄存器故障方面性能損耗較小。圖5說明了內(nèi)存故障的浮點(diǎn)計(jì)算應(yīng)用程序的執(zhí)行時間比寄存器故障的應(yīng)用程序執(zhí)行時間更為敏感。

        圖4 預(yù)測算法應(yīng)用程序的擴(kuò)展執(zhí)行時間

        圖5 浮點(diǎn)計(jì)算應(yīng)用程序的擴(kuò)展執(zhí)行時間

        實(shí)驗(yàn)結(jié)果表明,應(yīng)用程序執(zhí)行時間對軟錯誤非常敏感。此外,還可以得出結(jié)論,寄存器中的軟錯誤對性能的影響更大,因?yàn)榧拇嫫麇e誤注入會顯著延長執(zhí)行時間。在預(yù)測算法應(yīng)用程序中,可以看到執(zhí)行時間增加了幾倍,這表明寄存器中的數(shù)據(jù)一旦被破壞,就會導(dǎo)致算法收斂達(dá)到預(yù)期精度的時間延長。同時在某些情況下,可以觀察到執(zhí)行時間的增加取決于某些特殊的故障注入點(diǎn)。

        圖6和圖7分別比較了三個目標(biāo)應(yīng)用程序之間的故障注入結(jié)果對性能的影響,通過結(jié)果可以看出預(yù)測算法應(yīng)用程序最容易受到軟錯誤對程序性能的影響。這主要可能是預(yù)測算法需要通過計(jì)算收斂到預(yù)期的精度,從而導(dǎo)致預(yù)測的時間增加。

        圖6 寄存器故障注入執(zhí)行時間

        圖7 存儲器故障注入執(zhí)行時間

        圖8和圖9分別給出了目標(biāo)應(yīng)用程序的寄存器和存儲器的故障注入結(jié)果,錯誤行為也因不同的應(yīng)用程序而不同。從圖9中可以看到寄存器故障的浮點(diǎn)計(jì)算應(yīng)用成功率高于其他應(yīng)用,統(tǒng)計(jì)上證明了該應(yīng)用對寄存器故障不敏感。內(nèi)存捕獲僅在多線程應(yīng)用程序上發(fā)生,因?yàn)樗诖藨?yīng)用程序上有自己的檢測機(jī)制。無論是在寄存器還是在內(nèi)存中,類型SDC錯誤在預(yù)測算法應(yīng)用程序中比在其他應(yīng)用程序中更為常見,這表明此類故障對應(yīng)用程序的輸出具有更大影響。良性故障的成功率在浮點(diǎn)計(jì)算中比在其他應(yīng)用程序中更為常見;硬件異常在多線程應(yīng)用中比在其他應(yīng)用程序中更為常見;超時在預(yù)測算法中比在其他應(yīng)用程序中更為常見。通過評估軟錯誤對應(yīng)用程序的影響,本文發(fā)現(xiàn)如果應(yīng)用程序?qū)M件敏感,應(yīng)用程序執(zhí)行時間和應(yīng)用程序輸出幾乎會同時受到影響。

        圖8 存儲器故障注入結(jié)果統(tǒng)計(jì)

        圖9 寄存器故障注入結(jié)果統(tǒng)計(jì)

        4.4 軟錯誤結(jié)果分析

        根據(jù)4.3節(jié)中的實(shí)驗(yàn)結(jié)果,分析故障注入器的實(shí)驗(yàn)結(jié)果。如圖3所示,可以看出寄存器故障注入下的應(yīng)用程序其執(zhí)行時間明顯長于內(nèi)存故障浮點(diǎn)計(jì)算應(yīng)用程序。為了探究軟錯誤對各種寄存器的影響,將故障分別注入通用寄存器,臨時寄存器和標(biāo)志寄存器,以分析故障注入對特定寄存器的影響。

        每個故障注入都針對以下三種寄存器之一:

        1) 1x86-64 ISA中的16個64位通用寄存器(RAX,RBX,RCX,RDX,RDI,RSI,RSP,RBP,R8,R9,R10,R11,R12,R13,R14,R15)。

        2) 一個64位標(biāo)志寄存器。

        3) 32個64位臨時寄存器,代表寄存器的高位或低位。

        圖10顯示了多線程應(yīng)用中的故障注入崩潰率。臨時寄存器只延長執(zhí)行時間,不會產(chǎn)生崩潰。R8寄存器和R15寄存器的影響很小,因?yàn)樗鼈兒苌偈褂?。由此可以得出結(jié)論,在堆棧指針寄存器中注入的故障大大增加了該實(shí)驗(yàn)中程序的崩潰率。

        圖10 多線程應(yīng)用程序寄存器故障崩潰率

        根據(jù)4.3節(jié)中的結(jié)果,進(jìn)一步研究注入故障后的程序產(chǎn)生不同行為的原因。注入的故障通常從硬件傳播到軟件級別,然后破壞各種程序狀態(tài)和行為。

        故障注入類型分為三種:

        1) 控制方式注入:如果將故障注入用于條件分支的寄存器,則定義為控制故障。在這種情況下,故障注入器將故障直接注入到條件分支中的條件標(biāo)志。

        2) 地址方式注入:如果故障被注入到影響加載或存儲操作中的存儲器地址的寄存器中,則將其作為地址故障。

        3) 數(shù)據(jù)方式注入:這種類型的故障通常涉及整數(shù)算術(shù)指令、浮點(diǎn)計(jì)算、寄存器之間的數(shù)據(jù)移動、邏輯指令等。從后續(xù)程序的運(yùn)行結(jié)果分析,在軟錯誤傳播之后,數(shù)據(jù)故障將轉(zhuǎn)變?yōu)榈刂饭收匣蚩刂乒收稀?/p>

        從圖11中可以看出,在多線程應(yīng)用中,地址方式注入的故障率高于其他類型,這說明在內(nèi)存操作階段注入故障時可能會導(dǎo)致程序中止。此外,可以得出結(jié)論,當(dāng)在預(yù)測算法的數(shù)值計(jì)算階段中注入故障時,可能會導(dǎo)致應(yīng)用程序的執(zhí)行時間增加。由于算法結(jié)構(gòu)和數(shù)據(jù)規(guī)模的原因,故障注入下不同程序的執(zhí)行時間和輸出變化很大。

        圖11 不同故障類型注入結(jié)果

        5 結(jié) 語

        本文設(shè)計(jì)一種軟錯誤的故障注入器,用于模擬機(jī)器級代碼的軟錯誤,主要基于英特爾的動態(tài)插裝和分析框架PIN。該注入器能夠模擬寄存器和存儲器中的單bit錯誤。為了提高插裝性能,設(shè)計(jì)并實(shí)現(xiàn)了監(jiān)視和控制腳本。此外,將該注入器應(yīng)用于典型的應(yīng)用程序,并運(yùn)行數(shù)百次故障注入實(shí)驗(yàn)以評估其對程序執(zhí)行時間和程序輸出的影響。

        實(shí)驗(yàn)結(jié)果表明,典型應(yīng)用程序的軟錯誤對性能和精度敏感。故障注入的位置不同,會對應(yīng)用程序產(chǎn)生不同的影響,基于應(yīng)用程序固有的算法特性和計(jì)算規(guī)模的不同,其對軟錯誤響應(yīng)也不同。

        下一步的工作是開發(fā)一個完全集成的故障注入環(huán)境,該環(huán)境可以在各種操作系統(tǒng)下使用。此外,還要進(jìn)一步改進(jìn)支持的故障類型,以便將來在實(shí)際系統(tǒng)上進(jìn)行應(yīng)用。

        猜你喜歡
        程序故障
        故障一點(diǎn)通
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        奔馳R320車ABS、ESP故障燈異常點(diǎn)亮
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        故障一點(diǎn)通
        故障一點(diǎn)通
        故障一點(diǎn)通
        天天躁日日躁狠狠躁av| 国产av一区二区制服丝袜美腿| 日本刺激视频一区二区| 五月四房播播| 国产又黄又大又粗的视频| 亚洲AV无码精品色欲av| 成人偷拍自拍在线视频| 国产精品午夜夜伦鲁鲁| 国精产品一区一区三区有限公司杨| 亚洲首页一区任你躁xxxxx| 亚洲无码中文字幕日韩无码| 日本一区二区三区女优在线| 午夜三级a三级三点在线观看| 丰满人妻被黑人中出849| 精品人妻少妇一区二区中文字幕| 国产熟女露脸大叫高潮| av人摸人人人澡人人超碰下载| 又爽又黄又无遮挡的激情视频| 国产成人精品日本亚洲专区61| 久久精品人人做人人爽电影蜜月| 在线看片国产免费不卡| 91久久精品一区二区三区大全| 国产av天堂亚洲国产av天堂| 国产乱人伦av在线无码| 亚洲欧美日本人成在线观看| 曰日本一级二级三级人人| 亚洲色成人网站www永久| 纯爱无遮挡h肉动漫在线播放| 国产精品久久久久…| 一区二区三区一片黄理论片| 成 人片 黄 色 大 片| 国产亚洲av人片在线观看| 国产一区二区丁香婷婷| 麻神在线观看免费观看| 久久无码av中文出轨人妻| 五月丁香六月综合激情在线观看| 白色白色视频在线观看| 亚洲国产aⅴ成人精品无吗| 欧美最猛性xxxxx免费| 久久国产成人午夜av影院| 亚洲美女一区二区三区三州|