胡 倩,王 超,王海霞,汪東升
(清華大學(xué)信息科學(xué)與技術(shù)國家實(shí)驗(yàn)室,北京100084)
基于Simics的系統(tǒng)級(jí)故障注入平臺(tái)
胡 倩,王 超,王海霞,汪東升
(清華大學(xué)信息科學(xué)與技術(shù)國家實(shí)驗(yàn)室,北京100084)
故障注入技術(shù)是評(píng)價(jià)系統(tǒng)可靠性的有效方法?,F(xiàn)有基于仿真的故障注入平臺(tái)大多基于現(xiàn)場可編程門陣列或超高速集成電路硬件描述語言實(shí)現(xiàn),對(duì)故障模型的支持非常有限。為此,基于Simics結(jié)構(gòu)級(jí)模擬器,設(shè)計(jì)并實(shí)現(xiàn)系統(tǒng)級(jí)硬件故障注入平臺(tái)。該平臺(tái)上層支持不同固件、操作系統(tǒng)以及應(yīng)用程序,底層支持對(duì)處理器典型流水部件的故障注入,同時(shí)實(shí)現(xiàn)瞬時(shí)故障、永久故障和間歇故障模型以及其他較全面的故障類型,并將一組系統(tǒng)級(jí)故障檢測機(jī)制集成入平臺(tái)中。實(shí)驗(yàn)通過監(jiān)測硬件故障在系統(tǒng)級(jí)的傳播,對(duì)比分析了故障對(duì)不同部件造成的系統(tǒng)級(jí)影響,結(jié)果表明,瞬時(shí)故障對(duì)系統(tǒng)影響較小,永久故障容易引起系統(tǒng)失效,間歇故障對(duì)各部件有不同程度的干擾作用。
故障注入;系統(tǒng)可靠性;故障模型;故障檢測;結(jié)構(gòu)級(jí)模擬器
隨著集成電路工藝的提高和處理器技術(shù)在多核領(lǐng)域的發(fā)展,處理器性能有了很大提高。與此同時(shí),硬件故障不斷增加,計(jì)算機(jī)系統(tǒng)的可靠性受到嚴(yán)峻挑戰(zhàn)。特別是在航空、航天等領(lǐng)域,系統(tǒng)可靠性成為第一要素。系統(tǒng)可靠性的評(píng)價(jià)是一個(gè)非常關(guān)鍵的技術(shù)環(huán)節(jié)。常見方法如測量、解析模型,都不能很好地解決評(píng)估可靠性的問題。理想方法是將系統(tǒng)置于實(shí)際環(huán)境中進(jìn)行測試,但通常會(huì)受到場景、可測性、可監(jiān)視性等因素限制。而故障注入類方法靈活有效,具有高可控性和可測性,是非常有效的可靠性評(píng)估手段。
故障注入由IBM實(shí)驗(yàn)室于20世紀(jì)70年代提出[1],經(jīng)過不斷的研究和應(yīng)用逐漸走向成熟。通過加速系統(tǒng)中故障的產(chǎn)生來觀察和驗(yàn)證故障對(duì)系統(tǒng)的影響,進(jìn)而指導(dǎo)容錯(cuò)系統(tǒng)的設(shè)計(jì)。目前已經(jīng)有許多成熟的故障注入技術(shù),已被廣泛應(yīng)用到工業(yè)領(lǐng)域。本文基于Simics模擬器,設(shè)計(jì)并實(shí)現(xiàn)系統(tǒng)級(jí)故障注入平臺(tái)。在大量實(shí)驗(yàn)的基礎(chǔ)上,總結(jié)故障在系統(tǒng)中的行為表現(xiàn),分析不同類型的故障對(duì)系統(tǒng)造成的影響。
為研究實(shí)際場景中的故障,首先必須建立理論模型。故障模型包括瞬時(shí)故障、永久故障和間歇故障。瞬時(shí)故障是由電磁干擾、粒子輻射等原因引起的短暫功能失效,并且是一次有效性[2]。永久故障通常是硬件的永久性損傷引起的,故障一直持續(xù)到部件被替換或者隔離。間歇故障是由硬件不穩(wěn)定引起的多次重復(fù)爆發(fā)的瞬時(shí)故障,但爆發(fā)時(shí)間不具有周期性。由于間歇故障爆發(fā)的不確定性,其時(shí)間模型支持均勻分布、指數(shù)分布和Weibull分布。故障類型具體可以分為單比特翻轉(zhuǎn)、多比特翻轉(zhuǎn)、恒0或恒1、橋接以及延遲等。
目前,國內(nèi)外有許多有關(guān)故障注入工具的研究。根據(jù)實(shí)現(xiàn)方法,故障注入可以分為3類[3]:基于硬件實(shí)現(xiàn)的故障注入,基于軟件實(shí)現(xiàn)的故障注入和基于仿真的故障注入。
2.1 基于硬件實(shí)現(xiàn)的故障注入
基于硬件實(shí)現(xiàn)的故障注入是指直接將故障引入到硬件電路中,一般要修改硬件邏輯來實(shí)現(xiàn)。硬件故障注入技術(shù)可以將故障注入到系統(tǒng)任意位置,比較精確,但由于是硬件實(shí)現(xiàn)的原因,不容易控制,缺乏靈活性,而且容易因?yàn)轭~外硬件損壞系統(tǒng)。
代表性的系統(tǒng)包括AFIT[4],通過硬件實(shí)現(xiàn)的管腳級(jí)故障注入平臺(tái),支持多種故障模型,故障部件、時(shí)間均可控;MESSALINE[5],由法國圖盧茲LAASCNRS大學(xué)開發(fā)的管腳級(jí)故障注入工具,支持stuckat、斷路、橋接等復(fù)雜模型;RIFLE[6],故障從處理器管腳注入,支持不同特性故障,適用范圍廣,故障注入可重現(xiàn),并且可以檢測成功與否;FIST[7],實(shí)現(xiàn)接觸式和非接觸式故障注入,直接將故障注入到芯片中,主要支持瞬時(shí)故障模型;MARS[8],由奧地利維也納大學(xué)開發(fā),非接觸式故障注入,分布式容錯(cuò)系統(tǒng),采用多個(gè)fail-silent節(jié)點(diǎn)結(jié)成,具有硬件和軟件冗余能力。
2.2 基于軟件實(shí)現(xiàn)的故障注入
軟件實(shí)現(xiàn)的故障注入是指在編譯或者運(yùn)行時(shí)修改程序或者現(xiàn)場某些值來引入故障。軟件故障注入的方法比較靈活、易于控制、成本較低,也可以用于應(yīng)用程序和操作系統(tǒng),但不能將故障注入到軟件訪問不到的位置,同時(shí)軟件故障注入的精度只能達(dá)到指令級(jí)。
比較有代表性的系統(tǒng)包括:Ftap[9],由美國UIUC開發(fā)的軟件故障注入平臺(tái),支持故障注入部件包括寄存器、內(nèi)存和磁盤,故障類型包括位翻轉(zhuǎn)、置位或者復(fù)位,其中磁盤故障是由驅(qū)動(dòng)程序?qū)崿F(xiàn)的因此沒有額外開銷;FERRARI[10],由德克薩奧斯丁分校開發(fā),通過計(jì)數(shù)器或計(jì)時(shí)器觸發(fā)軟件陷阱,由陷阱處理程序注入故障,支持部件包括CPU、內(nèi)存和總線,故障類型有瞬時(shí)故障和永久故障;DOCTOR[11],由美國Michigan大學(xué)開發(fā),相比于僅修改內(nèi)存的故障注入辦法,它使用復(fù)雜機(jī)制(內(nèi)存重寫、軟件陷阱和編譯時(shí)修改)模擬對(duì)CPU、內(nèi)存和網(wǎng)絡(luò)通信的故障注入;XCEPTION[12],利用處理器提供的調(diào)試功能進(jìn)行故障注入,故障注入功能由中斷處理程序完成,中斷由訪問特殊地址觸發(fā),系統(tǒng)不需要對(duì)應(yīng)用程序作任何修改。
2.3 基于仿真實(shí)現(xiàn)的故障注入
基于仿真的故障注入主要是通過修改仿真器來達(dá)到故障注入的效果。由于仿真器的高度可控,仿真實(shí)現(xiàn)的故障注入更加靈活、易于控制、模擬精度較高。
比較有代表性的工作包括FuSE[13],基于FPGA的可靠性評(píng)估平臺(tái),仿真速度較快;VFIT[14],基于VHDL的故障注入平臺(tái),支持瞬時(shí)、間歇和永久故障,故障時(shí)間支持多種分布函數(shù);INJECT[15],基于Verilog模型的故障注入平臺(tái),支持開關(guān)級(jí)、門級(jí)、RTL級(jí)和結(jié)構(gòu)級(jí)故障模型;VERIFY[16],擴(kuò)展了VHDL語言,允許最大化的利用硬件故障知識(shí),使用了多線程故障注入來加速仿真過程;HEARTLESS[17], C++開發(fā)的針對(duì)瞬時(shí)故障和永久故障的模擬器,故障類型有stuck-at、翻轉(zhuǎn)和延遲,支持以結(jié)構(gòu)化VHDL和ISCAS作為輸入。文獻(xiàn)[18]提供了一種ISA級(jí)別的故障注入思路,使用Bus Resolution Function來破壞信號(hào)賦值,提升仿真性能,但僅限于處理器故障注入。
基于硬件或者軟件實(shí)現(xiàn)的故障注入,或者在使用上容易干擾原系統(tǒng),或者不能很好地從系統(tǒng)層模擬故障場景?;诜抡娴墓收献⑷肫脚_(tái)多數(shù)由VHDL或FPGA實(shí)現(xiàn)。在多核場景下,由于內(nèi)核增多以及片上網(wǎng)絡(luò)的影響,故障發(fā)生場景更加復(fù)雜。本文基于體系結(jié)構(gòu)研究中廣泛使用的Simics模擬器,實(shí)現(xiàn)了一個(gè)結(jié)構(gòu)級(jí)多核故障注入系統(tǒng),支持瞬時(shí)故障、永久故障和間歇故障的模擬,并實(shí)現(xiàn)了單比特翻轉(zhuǎn)、stuck-at-0/1、橋接及延遲等多種故障類型,為后續(xù)故障診斷、故障恢復(fù)研究建立基礎(chǔ)。
3.1 Simics系統(tǒng)
Simics是一款高性能的系統(tǒng)級(jí)模擬器,支持模擬計(jì)算機(jī)系統(tǒng)各個(gè)部件。Simics模擬的最小粒度是指令,其高效性體現(xiàn)在模擬指令的同時(shí),還具有較高的性能。Simics可以模擬整個(gè)目標(biāo)機(jī)器,包括多核系統(tǒng)、存儲(chǔ)系統(tǒng)、網(wǎng)絡(luò)等。
在計(jì)算機(jī)體系結(jié)構(gòu)研究中,可以很方便地模擬系統(tǒng)中的某個(gè)部件并觀察和統(tǒng)計(jì)系統(tǒng)內(nèi)部狀態(tài)。此外,Simics可以跨平臺(tái)運(yùn)行,并且支持模擬多個(gè)平臺(tái)。正因?yàn)檫@些特點(diǎn),Simics廣泛用于系統(tǒng)研究中。
Simics提供了一整套開放的API實(shí)現(xiàn)用戶對(duì)系統(tǒng)狀態(tài)的訪問,同時(shí),用戶可以添加自己的功能模塊,實(shí)現(xiàn)特定需求。通過這些API,用戶不僅可以訪問到系統(tǒng)運(yùn)行時(shí)的各個(gè)內(nèi)部狀態(tài),還可以對(duì)系統(tǒng)部件、結(jié)構(gòu)和功能等進(jìn)行修改。
3.2 平臺(tái)設(shè)計(jì)
3.2.1 故障注入系統(tǒng)
圖1是給出多核處理器中單個(gè)核的流水線結(jié)構(gòu)。故障注入系統(tǒng)中支持的流水線部件有譯碼單元、地址生成單元、算術(shù)邏輯單元(Arithmetic Logical Unit,ALU)和寄存器堆。由于Simics對(duì)部件的模擬粒度的限制,系統(tǒng)采用功能上的近似來模擬4種部件。除了寄存器堆是直接注入到對(duì)應(yīng)寄存器中外,其他均有不同程度的近似(見圖1中灰色部件)。地址生成單元故障是通過注入到PC寄存器實(shí)現(xiàn),而譯碼單元是通過指令寄存器實(shí)現(xiàn),類似地,ALU故障注入也是通過其結(jié)果寄存器實(shí)現(xiàn)。
圖1 故障注入系統(tǒng)
系統(tǒng)硬件平臺(tái)是由Simics仿真出來的,在底層添加了故障注入單元和故障檢測單元。故障注入單元定義了故障模型和故障參數(shù),并注入到相應(yīng)部件中。故障檢測單元負(fù)責(zé)收集操作系統(tǒng)癥狀,并檢測系統(tǒng)是否遇到異常。為控制系統(tǒng)運(yùn)行,在Simics外還添加了控制單元和分析單元。仿真平臺(tái)也可以支持不同的操作系統(tǒng)。最上層是應(yīng)用程序?qū)?用來測試不同應(yīng)用場景,觀察故障注入后效果。
3.2.2 控制單元
控制單元負(fù)責(zé)整個(gè)實(shí)驗(yàn)系統(tǒng)的執(zhí)行,根據(jù)給定的故障模型、部件、類型,配置系統(tǒng)運(yùn)行一定次數(shù)的實(shí)驗(yàn)。實(shí)驗(yàn)完成后,實(shí)驗(yàn)數(shù)據(jù)的分析也由控制單元完成。
3.2.3 分析單元
分析單元負(fù)責(zé)數(shù)據(jù)分析功能,即根據(jù)程序運(yùn)行結(jié)果、監(jiān)測單元收集到的癥狀信息來分析故障注入的影響。同時(shí),給故障檢測及故障診斷提供信息。
3.2.4 故障注入單元
故障注入單元負(fù)責(zé)在結(jié)構(gòu)級(jí)完成對(duì)部件的故障注入。針對(duì)流水線中的4個(gè)重要部件,即譯碼單元、地址生成單元、ALU和寄存器堆,從功能上模擬了故障發(fā)生的情形。譯碼單元關(guān)系到指令解碼的正常與否,地址生成單元決定了下一條指令位置,ALU和寄存器堆都是和運(yùn)算結(jié)果相關(guān)的部件。
Simics是功能級(jí)的模擬器,最小粒度是指令。在執(zhí)行每條指令前,可以觸發(fā)一次自定義事件。在該事件中,可以根據(jù)Simics提供的API修改系統(tǒng)數(shù)據(jù),進(jìn)而實(shí)現(xiàn)故障注入的功能。
對(duì)譯碼單元的故障注入體現(xiàn)在指令寄存器中,每次取指完成后,給指令寄存器注入一個(gè)故障,從功能上模擬譯碼出現(xiàn)問題。
對(duì)ALU單元的故障體現(xiàn)在其結(jié)果寄存器上, ALU完成后,給結(jié)果寄存器注入一個(gè)故障,功能上模擬了運(yùn)算過程出錯(cuò)。
類似地,對(duì)地址生成單元的故障則體現(xiàn)在PC寄存器上。寄存器堆的注入工作是通過直接在隨機(jī)選擇的通用寄存器中注入故障實(shí)現(xiàn)。
對(duì)瞬時(shí)故障,其持續(xù)時(shí)間僅為一個(gè)時(shí)鐘;對(duì)永久故障,程序從開始運(yùn)行到結(jié)束過程中一直保持;而對(duì)間歇故障,故障爆發(fā)次數(shù)服從一定的分布規(guī)律,且每次爆發(fā)持續(xù)時(shí)間、2次爆發(fā)之間相隔時(shí)間,支持不同的分布函數(shù)。
為模擬故障發(fā)生的隨機(jī)性,故障注入的起始點(diǎn)是隨機(jī)的。此外,無論是單比特還是多比特,故障位也是隨機(jī)選擇。故障位的翻轉(zhuǎn)、stuck-at及橋接均通過位操作實(shí)現(xiàn),延遲類型的實(shí)現(xiàn)略微復(fù)雜,需要在模擬過程中以歷史變量值有規(guī)律地替換當(dāng)前變量值。
3.2.5 監(jiān)測單元
監(jiān)測單元功能主要是收集系統(tǒng)癥狀。為觀測故障注入后的系統(tǒng)狀態(tài),添加了該模塊來實(shí)時(shí)監(jiān)測系統(tǒng)各指標(biāo)。目前,監(jiān)測指標(biāo)包括關(guān)鍵陷入、掛起和高發(fā)活動(dòng),這些癥狀信息是反映系統(tǒng)狀態(tài)的關(guān)鍵指標(biāo)。SWAT項(xiàng)目[19]利用這些高層級(jí)癥狀實(shí)現(xiàn)了永久故障的檢測。
關(guān)鍵陷入一般是非功能性陷入,在系統(tǒng)遇到除零、非法指令等緊急情況時(shí)發(fā)生,可以用來作為判斷系統(tǒng)異常的一個(gè)條件。在正常情況下,應(yīng)用程序運(yùn)行在用戶態(tài),只有在系統(tǒng)調(diào)用及中斷處理等情況下才需要運(yùn)行在特權(quán)模式。如果系統(tǒng)持續(xù)處于特權(quán)模式的指令數(shù)超過一定閾值,可以認(rèn)為系統(tǒng)出現(xiàn)問題,該問題稱為高發(fā)活動(dòng)[20]。掛起[20]是指系統(tǒng)陷入死循環(huán),程序不能結(jié)束而且又沒有結(jié)果。
與故障注入單元類似,監(jiān)測單元是通過自定義的時(shí)鐘事件來完成系統(tǒng)狀態(tài)收集的功能。
陷入信息和系統(tǒng)架構(gòu)密切相關(guān)。例如在Sparc架構(gòu)下,共有5個(gè)陷入寄存器。對(duì)于每個(gè)時(shí)鐘,癥狀收集單元均訪問一次寄存器,并保存陷入信息、地址及指令。Solaris下還有一個(gè)關(guān)鍵陷入列表,通過比對(duì),可以找到所有的關(guān)鍵陷入,檢測系統(tǒng)是否正常運(yùn)行。
高發(fā)活動(dòng)的檢測是通過統(tǒng)計(jì)系統(tǒng)連續(xù)處于特權(quán)模式或超特權(quán)模式的時(shí)鐘數(shù)來實(shí)現(xiàn)。類似地,掛起的檢測需要統(tǒng)計(jì)系統(tǒng)在每次跳轉(zhuǎn)指令處的地址并進(jìn)行計(jì)數(shù)。
當(dāng)系統(tǒng)遇到關(guān)鍵陷入、高發(fā)活動(dòng)及掛起時(shí),即認(rèn)為系統(tǒng)出現(xiàn)異常。此時(shí),系統(tǒng)應(yīng)該啟動(dòng)故障診斷、故障恢復(fù)等過程。
此外,在系統(tǒng)執(zhí)行過程中,監(jiān)測單元還需要收集應(yīng)用程序執(zhí)行成功與否,系統(tǒng)是否異常退出等信息。這些數(shù)據(jù)除了反映故障注入的結(jié)果外,還可以用于后續(xù)的故障檢測、故障診斷等。
4.1 實(shí)驗(yàn)環(huán)境
本文實(shí)驗(yàn)?zāi)M了Sun Fire 6800機(jī)器,單核150 MHz,內(nèi)存256 MB,Solaris10系統(tǒng),測試程序是Splash2。由于Splash2是用于性能測試的程序集,在本文實(shí)驗(yàn)中,為了比較程序運(yùn)行結(jié)果,只選擇了其中一部分。針對(duì)多個(gè)流水部件、不同故障模型及不同故障類型下故障傳播和影響進(jìn)行實(shí)驗(yàn)研究。
4.2 實(shí)驗(yàn)過程
實(shí)驗(yàn)針對(duì)4種部件、3種故障模型及多種故障類型均進(jìn)行了研究。每種配置進(jìn)行1000次注入實(shí)驗(yàn),收集癥狀和程序運(yùn)行結(jié)果。
瞬時(shí)故障分別采用單比特翻轉(zhuǎn)、stuck-at-0/1、橋接及延遲的故障類型,從故障注入點(diǎn)開始收集2×106個(gè)時(shí)鐘信息,最后運(yùn)行到程序結(jié)束,檢測程序運(yùn)行結(jié)果。
永久故障采用stuck-at-0/1、橋接及延遲的故障類型,從故障注入點(diǎn)開始持續(xù)注入2×106個(gè)時(shí)鐘,最后運(yùn)行至程序結(jié)束,判斷執(zhí)行結(jié)果。
間歇故障的故障類型包括stuck-at-0/1、橋接及延遲,每次注入實(shí)驗(yàn)的爆發(fā)次數(shù)分別服從均勻分布。每次爆發(fā)持續(xù)時(shí)間和2次爆發(fā)之間的時(shí)間間隔分別服從均勻分布、指數(shù)分布和Weibull分布。故障注入完成后,同樣有一段時(shí)間的癥狀收集過程,最后檢測運(yùn)行結(jié)果。
3種故障模型的參數(shù)配置見表1,對(duì)于間歇故障3種分布函數(shù)的參數(shù)配置[21]見表2,Splash2測試程序的運(yùn)行參數(shù)見表3。
表1 3種故障模型的參數(shù)配置
表2 間歇故障的3種分布函數(shù)參數(shù)配置
表3 Splash2測試程序及執(zhí)行參數(shù)
4.3 實(shí)驗(yàn)結(jié)果
根據(jù)實(shí)驗(yàn)統(tǒng)計(jì),故障注入的結(jié)果有以下6種: (1)程序執(zhí)行正常,即故障注入后在執(zhí)行過程中被系統(tǒng)屏蔽,沒有對(duì)程序結(jié)果造成影響。(2)程序運(yùn)行結(jié)束,但結(jié)果不對(duì)。(3)程序陷入死循環(huán)或者遇到高發(fā)活動(dòng)。(4)程序因?yàn)榉欠ㄖ噶睢⒍五e(cuò)誤等原因?qū)е潞藖G棄(core dump)。(5)程序因?yàn)榉欠ㄔL問地址空間、地址不對(duì)齊、MMU缺失等原因進(jìn)入調(diào)試模式(debugger)。(6)程序進(jìn)入RED(Recover Error and Debug)STATE模式,導(dǎo)致Simics直接崩潰。
圖2描述了不同部件在不同故障模型下的歸一化實(shí)驗(yàn)結(jié)果,對(duì)不同故障類型(單比特翻轉(zhuǎn)、stuck-at-0/1、橋接和延遲)下的結(jié)果取了平均值,對(duì)于間歇故障的3種分布(均勻分布、指數(shù)分布和Weibull分布)、Splash2的不同測試集也作了類似處理。其中, T表示瞬時(shí)故障;P表示永久故障;I表示間歇故障。
圖2 故障注入實(shí)驗(yàn)結(jié)果
4.3.1 部件分析
譯碼單元對(duì)永久故障和間歇故障比較敏感,其中,Simics崩潰、程序進(jìn)入調(diào)試狀態(tài)占到80%以上;永久故障和間歇故障下實(shí)驗(yàn)結(jié)果正確的比例分別占到14%和9%,相對(duì)地,瞬時(shí)故障這一比例達(dá)到70%。
地址生成單元3種故障注入后的程序結(jié)果仍然正確的比例分別為63%,30%和19%。地址生成單元對(duì)瞬時(shí)故障屏蔽能力較強(qiáng),永久故障次之,間歇故障最差。
譯碼單元和地址生成單元對(duì)瞬時(shí)故障都有很好的屏蔽能力,永久故障次之,間歇故障最差。從故障持續(xù)時(shí)間上看,瞬時(shí)故障最短,永久故障最長,間歇故障處于兩者之間。但這2個(gè)部件對(duì)間歇故障是最敏感的,主要體現(xiàn)為間歇故障導(dǎo)致系統(tǒng)進(jìn)入調(diào)試模式,最終程序均以失敗結(jié)束。
ALU單元對(duì)瞬時(shí)故障有很好的屏蔽能力,屏蔽比例達(dá)到99%;對(duì)間歇故障的屏蔽能力稍差,比例降至53%。對(duì)永久故障最敏感,屏蔽比例僅為16%。在程序?qū)嶋H執(zhí)行過程中,ALU指令只占所有指令的一部分。根據(jù)統(tǒng)計(jì),測試程序在故障注入點(diǎn)碰到ALU指令的平均比例僅為53.8%,有大量的故障注入因?yàn)榉茿LU指令的原因沒有產(chǎn)生效果,所以,ALU表現(xiàn)出了較好的容錯(cuò)能力。
寄存器對(duì)3種故障注入的屏蔽比例分別為93%,9%和33%。與ALU類似,寄存器對(duì)永久故障最敏感,對(duì)瞬時(shí)故障容忍能力最好,間歇故障則處于兩者之間。這同3種故障持續(xù)時(shí)間相對(duì)應(yīng)。
從上述部件分析可以發(fā)現(xiàn),所有部件對(duì)瞬時(shí)故障均有最好的屏蔽能力,對(duì)永久故障和間歇故障容忍能力較差。瞬時(shí)故障只是暫時(shí)性的功能故障,影響局限在一定時(shí)間和空間范圍內(nèi)。永久故障是功能部件永久失效,對(duì)系統(tǒng)有致命影響。間歇故障持續(xù)時(shí)間處于兩者之間,但由于多次重復(fù)爆發(fā)的特點(diǎn),仍然對(duì)系統(tǒng)功能造成不同程度的損壞。
4.3.2 故障模型分析
從故障模型來看,瞬時(shí)故障對(duì)系統(tǒng)影響最小。譯碼器和地址生成單元的屏蔽比例不超過70%,而ALU和寄存器的屏蔽比例均超過90%。前者有很大一部分是核丟棄或者系統(tǒng)進(jìn)入調(diào)試狀態(tài)。這是因?yàn)樽g碼器故障容易造成指令解碼異常,地址生成單元容易破壞下一條指令地址,造成非法指令、非法地址訪問、段錯(cuò)誤、地址不對(duì)齊等異常,進(jìn)而引起核丟棄或者系統(tǒng)進(jìn)入調(diào)試狀態(tài)。相對(duì)地,ALU和通用寄存器的數(shù)據(jù)是計(jì)算結(jié)果,一般不會(huì)引起系統(tǒng)資源類異常。此外,Sparc架構(gòu)有32個(gè)通用寄存器,注入故障的寄存器結(jié)果容易被其他指令結(jié)果所覆蓋,并不會(huì)將故障傳播到程序中。
永久故障對(duì)系統(tǒng)影響比較嚴(yán)重,4種部件均出現(xiàn)了大量的Simics崩潰癥狀,也有部分系統(tǒng)進(jìn)入調(diào)試模式出現(xiàn)。ALU和寄存器還出現(xiàn)了超時(shí)運(yùn)行及程序陷入死循環(huán)的狀態(tài)。
間歇故障對(duì)不同部件表現(xiàn)出不同的影響。與瞬時(shí)故障相比,4種部件的屏蔽比例均有較大幅度的下降。譯碼單元和地址生成單元屏蔽比例要低于永久故障,而ALU和寄存器堆屏蔽故障的比例則高于永久故障。從圖2還可以看出,永久故障引起系統(tǒng)崩潰的比例要高于(或不低于)間歇故障,只是間歇故障引起了部分程序進(jìn)入調(diào)試狀態(tài),提高了系統(tǒng)失效的比例。間歇故障的重復(fù)性對(duì)系統(tǒng)可靠性造成了一定影響,使得系統(tǒng)故障可能性明顯高于瞬時(shí)故障。
4.3.3 程序行為分析
從癥狀上分析,程序結(jié)果是Error的實(shí)驗(yàn)占很少的比例,大多數(shù)結(jié)果是程序崩潰、系統(tǒng)進(jìn)入調(diào)試狀態(tài)、死循環(huán)或者Simics直接崩潰。其中,程序崩潰是由于段錯(cuò)誤、非法指令等原因造成的,這一部分的比例較低;程序進(jìn)入調(diào)試狀態(tài)是由于非法地址訪問、地址不對(duì)齊、MMU缺失等異常造成的,當(dāng)上述故障更嚴(yán)重時(shí),則直接演變?yōu)镾imics崩潰或死循環(huán)。從4個(gè)部件的效果上可以看出,在瞬時(shí)故障時(shí),有部分或較少的調(diào)試模式出現(xiàn);在間歇故障時(shí),譯碼器和地址生成單元出現(xiàn)較多的調(diào)試模式,并伴有大量的Simics崩潰癥狀出現(xiàn);永久故障時(shí),譯碼器和地址生成單元癥狀主要表現(xiàn)為Simics崩潰,ALU和寄存器也出現(xiàn)了較多的Simics崩潰癥狀,同時(shí)伴有較多的超時(shí)及死循環(huán)癥狀出現(xiàn)。
基于系統(tǒng)模擬器設(shè)計(jì)的故障注入平臺(tái),不僅可以模擬各部件的故障場景,同時(shí)也有利于進(jìn)一步研究容錯(cuò)系統(tǒng)。本文從Simics模擬器出發(fā),設(shè)計(jì)并開發(fā)一套支持流水線部件、多種故障模型、故障類型及參數(shù)的故障注入平臺(tái)。從功能上模擬處理器流水線級(jí)別的故障情形,并提供故障檢測工具收集系統(tǒng)信息,用于下一步的故障診斷和恢復(fù)工作。實(shí)驗(yàn)結(jié)果表明,瞬時(shí)故障對(duì)系統(tǒng)的影響較小,永久故障影響較大,而間歇故障在不同部件上表現(xiàn)出不同效果,對(duì)系統(tǒng)也有較嚴(yán)重影響。譯碼器、地址生成單元對(duì)故障更敏感,較容易造成程序或系統(tǒng)崩潰,ALU和寄存器對(duì)故障的屏蔽能力稍強(qiáng)。在發(fā)生永久故障時(shí),4種部件均出現(xiàn)大量的失效情形。下一步研究內(nèi)容包括將故障注入部件擴(kuò)展到存儲(chǔ)、總線及網(wǎng)絡(luò),搭建一個(gè)功能全面的故障注入平臺(tái),并且使故障注入平臺(tái)為容錯(cuò)系統(tǒng)服務(wù)進(jìn)行故障診斷及恢復(fù)。
[1] 李 娟.基于故障注入的軟件安全測試技術(shù)研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2009.
[2] Gil D,Gracia J,Baraza J C,et al.A Study of the Effects of Transient Fault Injection into the VHDL Model of a Fault-tolerant Microcomputer System[C]//Proceedings of the 6th IEEE International On-line Testing Workshop. Palma de Mallorca,Spain:IEEE Press,2000:73-79.
[3] Amendola A M,Benso A,Corno F,et al.Fault Behavior Observation on a Microprocessor System Through a VHDLSimulation-basedFaultInjectionExperiment[C]//Proceedings of EuroDAC’96.[S.l.]: ACM Press,1996:536-539.
[4] Martínez J R,Gil P J,Martín G,et al.Experimental Validation of High-speed Fault-tolerant Systems Using PhysicalFaultInjection[C]//Proceedingsof InternationalWorkingConferenceonDependable Computing for Critical Applications.Washington D.C., USA:IEEE Computer Society,1999:233-249.
[5] Arlat J,Crouzet Y,Laprie J C.Fault Injection for Dependability ValidationofFault-tolerantComputer Systems[C]//Proceedingsofthe19thAnnual International Symposium.Los Alamitos,USA:IEEE Press,1989:348-355.
[6] Madeira H,Rela M,Moreira F,et al.RIFLE:A General Purpose Pin-level Fault Injector[C]//Proceedings of the 1stEuropeanDependableComputingConference. Berlin,Germany:Springer-Verlag,1994:199-216.
[7] Gunnetlo O,Karlsson J,Tonn J.Evaluation of Error Detection Schemes Using Fault Injection by Heavy-ion Radiation[C]//Proceedings of the19th International SymposiumonFault-tolerantComputing.Chicago, USA:IEEE Press,1989:340-347.
[8] Karlsson J,Arlat J,Leber G.Application of Three Physical Fault Injection Techniques to the Experimental AssessmentoftheMARSArchitecture[C]// Proceedings of DCCA’95.Los Alamitos,USA:IEEE Press,1995:150-161.
[9] Tsai T K,Iyer R K.An Approach to Benchmarking of Fault-tolerant Commercial Systems[C]//Proceedings of International Symposium on Fault-tolerant Computing. Sendai,Japan:IEEE Press,1996:314-323.
[10] Kanawati G A,KanawatiNA,AbrahamJA. FERRARI:AToolfortheValidationofSystem Dependability Properties[C]//Proceedings of the 22nd AnnualInternationalSymposiumFault-tolerant Computing.Los Alamitos,USA:IEEE Press,1992: 336-344.
[11] Han S,Rosenberg H,Shin K.DOCTOR:An Integrated Software Fault Injection Environment[R].University of Michigan,Technical Report:CSE-TR-192-93,1993.
[12] Carreira J,Madeira H,Silva J.Xception:A Technique for the Experimental Evaluation of Dependability in Modern Computers[J].IEEE Transactions on Software Engineering,1998,24(2):125-136.
[13] Jeitler M,Delvai M,Reich S.FuSE——A Hardware Accelerated HDL Fault Injection Tool[C]//Proceedings ofSouthernConferenceonProgrammableLogic. Sao Carlos,Brazil:IEEE Press,2009:89-94.
[14] Baraza J C,Gracia J,Gil D,et al.A Prototype of a VHDL-basedFaultInjectionTool:Descriptionand Application[J].Journal of Systems Architecture,2002, 47(10):847-867.
[15] Zarandi H R,Miremadi G,Ejlali A R.Fault Injection into Verilog Models for Dependability Evaluation of Digital Systems[C]//Proceedings of the International Symposium on Parallel and Distributed Computing. [S.l.]:IEEE Press,2003:281-287.
[16] Sieh V,Tschche O,Balbach F.VERIFY:Evaluation of Reliability Using VHDL——Models with Embedded FaultDescriptions[C]//Proceedingsofthe27th International Symposium on Fault-tolerant Computing. Seattle,USA:IEEE Press,1997:32-36.
[17] Rousselle C,Pflanz M,Behling A,et al.A Registertransfer-levelFaultSimulatorforPermanentand TransientFaultsinEmbeddedProcessors[C]// Proceedings of DATE’01.Munich,Germany:IEEE Press,2001:1530-1591.
[18] Delong T A,Johnson B W,Profetan J A.A Fault InjectionTechniqueforVHDLBehavioral-level Models[J].IEEE Design&Test of Computers,1996, 5(3):24-33.
[19] Li M L.SWAT:DesigningResilientHardwareby Treating Software Anomalies[M].Chicago,USA:UMI Dissertation Publishing,2009.
[20] Li M L.Understanding the Propagation of Hard Errors to SoftwareandImplicationsforResilientSystems Design[C]//Proceedingsofthe13thInternational Conference on Architectural Support for Programming Languages and Operating Systems.New York,USA: ACM Press,2008.
[21] Siewiorek D P,Swarz R S.Reliable Computer Systems: Design and Evaluation[M].New York,USA:Digital Press,1992.
編輯 陸燕菲
Simics-based System Level Fault Injection Platform
HU Qian,WANG Chao,WANG Haixia,WANG Dongsheng
(National Laboratory for Information Science and Technology,Tsinghua University,Beijing100084,China)
Fault injection provides an effective method to evaluate the reliability of system,which is a complex topic in multicore situation.There are many simulation-based fault injection tools now,most of which are implemented by Field Programmable Gate Array(FPGA)and Very High Speed Integrated Circuits Hardware Description Language(VHDL), with limited fault models.Based on the widely used system simulator Simics in computer architecture,this paper designs and implements a system level fault injection platform,supporting different firmware,OS and applications.It can inject faults into several components,with different fault models(including transient faults,permanent and intermittent faults) and most fault types.Further more,it integrates fault detection module into the system.After observing of the propagation of hardware faults in system,it analyzes the effect of different components,fault models on system level,inspiring fault detection,and finds that transient faults have a little impact on system,while permanent faults seriously interrupt the running and intermittent faults performs differently on different components.
fault injection;system reliability;fault model;fault detection;structure level simulator
胡 倩,王 超,王海霞,等.基于Simics的系統(tǒng)級(jí)故障注入平臺(tái)[J].計(jì)算機(jī)工程,2015,41(2):57-62,75.
英文引用格式:Hu Qian,Wang Chao,Wang Haixia,et al.Simics-based System Level Fault Injection Platform[J]. Computer Engineering,2015,41(2):57-62,75.
1000-3428(2015)02-0057-06
:A
:TP302.8
10.3969/j.issn.1000-3428.2015.02.012
國家自然科學(xué)基金資助項(xiàng)目(61373025,61303002);國家“863”計(jì)劃基金資助項(xiàng)目(2012AA0100905);高等學(xué)校博士學(xué)科點(diǎn)專項(xiàng)科研基金資助項(xiàng)目(20120002110032)。
胡 倩(1988-),男,碩士研究生,主研方向:多核體系結(jié)構(gòu),系統(tǒng)容錯(cuò)技術(shù);王 超,助理研究員、博士后;王海霞,副教授;汪東升,教授、博士生導(dǎo)師。
2014-03-28
:2014-05-04E-mail:qianhu2011@gmail.com