?

一種基于FPGA的微處理器軟錯誤敏感性分析方法

2017-02-06 00:37梁華國孫紅云孫駿黃正峰徐秀敏易茂祥歐陽一鳴魯迎春閆愛斌
電子與信息學報 2017年1期
關鍵詞:故障注入存儲單元寄存器

梁華國孫紅云孫駿黃正峰徐秀敏易茂祥歐陽一鳴魯迎春閆愛斌

?

一種基于FPGA的微處理器軟錯誤敏感性分析方法

梁華國①孫紅云①孫 駿①黃正峰*①徐秀敏①易茂祥①歐陽一鳴②魯迎春①閆愛斌②

①(合肥工業大學電子科學與應用物理學院 合肥 230009);②(合肥工業大學計算機與信息學院 合肥 230009)

為了自動快速地分析微處理器對軟錯誤的敏感性,該文提出一種基于FPGA故障注入的軟錯誤敏感性分析方法。在FPGA芯片上同時運行有故障和無故障的兩個微處理器,并充分利用FPGA的并行性,把故障注入控制、故障分類、故障列表等模塊均在硬件上實現,自動快速地完成全部存儲位的故障注入。以PIC16F54微處理器為實驗對象,基于不同負載分別注入約30萬個軟錯誤用以分析微處理器軟錯誤敏感性,并對敏感性較高的單元加固后再次進行分析,驗證該方法的有效性。實驗數據表明,使用該方法進行故障注入及敏感性分析所需的時間比軟件仿真方法提高了4個數量級。

FPGA;故障注入;單粒子翻轉;軟錯誤;敏感性分析

1 引言

隨著集成電路特征尺寸的縮小、供電電壓的降低以及時鐘頻率的提高,使得微處理器對串擾、電壓擾動、輻射等因素變得更加敏感。尤其在航空航天等特殊應用領域,高能粒子輻照作用引起的單粒子效應,嚴重影響微處理器的可靠性。研究結果顯示,計算機系統中80%~90%的失效都是由于瞬態故障引起的[1]。因此,為提高集成電路的可靠性,需要對瞬態故障導致的軟錯誤進行敏感性分析,分析結果可作為選擇性加固的依據。

故障注入作為一種靈活方便、便宜有效的方法廣泛應用于可靠性評估領域[2]。常用的故障注入方法有物理故障注入、仿真故障注入和現場可編程門陣列(Field-Programmable Gate Array, FPGA)故障注入。文獻[3,4]中使用重離子輻射及引腳級注入的物理方法引入故障,此方法的優點是實驗結果與實際結果最為接近,但需要昂貴的實驗設備和已制造出的電路原型。文獻[5-9]中使用軟件仿真的方法實現故障注入,該方法雖然具有很好的觀察性和可控性,但是時間開銷較大,難以進行大量的故障注入。

近幾年,受到研究人員關注的是基于FPGA的故障注入,它既具有物理故障注入的快速性,又具有仿真故障注入的可控性,可通過重配置或修改源代碼實現。文獻[10,11]利用重配置方式實現故障注入,但該方式每進行一次故障注入需要重新配置FPGA,時間開銷較大。文獻[12-15]中使用修改源代碼的方式實現故障注入,其故障注入平臺是由硬件和軟件兩個部分組成。每次故障注入都需等待主機傳送控制命令到FPGA開發板,主機與FPGA之間頻繁的數據通信嚴重阻礙實驗的速度。

基于以上分析,本文提出一種基于FPGA故障注入的軟錯誤敏感性分析方法,把故障列表、故障注入控制、故障分類等模塊全部放到FPGA硬件上實現,減少主機與FPGA之間的通信,保證該方法的快速性。該方法使用狀態機自動地完成所有觸發器的故障注入,使用超級終端一次性顯示所有的故障分類結果。利用該方法對PIC微處理器注入大約30萬個軟錯誤,來分析微處理器的軟錯誤敏感性,并對敏感性較高的寄存器進行三模冗余加固后再次進行分析,驗證該方法的有效性。

2 相關介紹

2.1故障注入點及故障注入控制電路

任何軟錯誤不管產生于組合邏輯還是時序邏輯,如果要產生顯式的處理器運行失效,都必須通過觸發器傳遞錯誤狀態,因此對所有觸發器進行故障注入就可模擬大多數的軟錯誤。本文研究對象為PIC16F54微處理器,具有兩級的堆棧深度,7個特殊功能寄存器,25個通用寄存器,1個工作寄存器,1個PC指針,3個不可尋址寄存器。對這些寄存器以及設計PIC微處理器過程中的一些控制信號全部進行故障注入(共48個存儲單元,即321位),所有的存儲單元以及每個存儲單元的位寬如表1所示。

表1 PIC包含的存儲單元

本文選擇對軟錯誤而言最常用的位翻轉作為故障模型。使用源代碼修改技術,對微處理器中的所有觸發器進行修改,使其具有單粒子翻轉(Single Event Upset, SEU)故障注入控制功能,修改后的控制電路如圖1所示。FIS(Fault Injection Set)為故障注入設置位,當FIS值為低電平時,正常的輸入值傳遞到觸發器輸出端;當FIS值為高電平時,輸入的相反值傳遞到觸發器的輸出端,即一個故障注入到相應位置。把這種故障注入控制電路添加到每一個觸發器,通過控制FIS值來決定是否對該觸發器進行故障注入。

圖1 故障注入控制電路

2.2故障注入結果分類

軟錯誤在處理器中的表現形式是不一樣的,一些軟錯誤不產生任何作用,而另一些則產生功能性錯誤。為分析不同存儲單元的軟錯誤敏感性,我們將處理器注入軟錯誤后的運行結果分為以下3類:

顯式失效:故障處理器和無故障處理器的輸出結果不一致,即產生了顯式的錯誤。

隱式失效:故障和無故障處理器的輸出結果一致,但存儲單元的狀態不完全一致,把運行結果歸為隱式失效。雖然該故障目前沒有表現出來,但改變了處理器的狀態,例如通用寄存器的數據,則在用到該寄存器的時候就可能使系統產生顯式失效。

完全匹配:故障處理器和無故障處理器不僅輸出結果一致,而且存儲單元的狀態也完全一致,該類軟錯誤被完全屏蔽,不影響微處理器的功能。

3 故障注入與分析平臺

3.1平臺框圖

構造實用的故障注入平臺是將故障注入方法應用到實際實驗中的重要步驟,圖2為所構造的故障注入及分析平臺結構示意圖。在FPGA芯片上,運行兩個微處理器,一個是無故障處理器,其運行結果作為對故障注入結果分類時的參考狀態。另一個是故障處理器,用于執行具有故障注入機制的處理器,它們兩個在故障管理器的控制下運行。一旦故障管理器啟動之后,該平臺自動對故障處理器的存儲位進行故障注入,在運行一定周期之后,把故障處理器與無故障處理器進行輸出端口及存儲單元狀態的比較,并把所有比較分類結果保存在FPGA的寄存器中。待所有存儲位的故障注入完成之后,在Microblaze軟核的控制下,通過接口電路把結果信息一次性顯示到主機的超級終端上,完成一輪完整的故障注入。其中的故障列表是一片位寬為10、深度為321的單端口塊ROM,在故障管理器的控制下對其解碼并設置FIS值。

圖2 基于FPGA的故障注入與分析平臺

3.2故障管理器

該平臺中故障管理器起著重要作用,控制著故障注入、數據收集、狀態比較等過程。故障管理器的控制過程使用一個含有7個狀態的狀態機實現,狀態轉移如圖3所示,各個狀態所執行的操作如下:

(1)初始化狀態:當Microblaze接收到主機發送的開始故障注入命令之后,啟動狀態機,進入初始化狀態,完成相應寄存器的清零或置數操作。

(2)保存狀態:當初始化完成后進入到保存狀態,把保存標志寄存器置1,以便無故障及故障處理器把該故障注入時刻的所有寄存器值保存起來。

(3)加載狀態:當保存狀態或比較狀態完成后,自動進入到加載狀態,即把加載標志寄存器置1,以便故障處理器及無故障處理器把在故障注入時刻的寄存器值重新加載到寄存器中。另外還需檢測是否到故障注入的最后一位,以便進入到結束狀態。

(4)故障注入狀態:該狀態控制故障處理器按照所采用的故障模型在相應的存儲位進行故障注入,即設置FIS值,激活故障注入控制電路。

(5)運行狀態:故障注入完成以后進入到運行狀態,如果到達所需比較的時間,則進入到比較狀態。

(6)比較分類狀態:把故障處理器與無故障處理器的運行輸出結果及所有的寄存器進行比較,并把分類結果保存起來。由于平臺實現的是自動對所有存儲位進行故障注入,所以在此狀態還需進行故障列表地址加1的操作,以便對下一位進行故障注入。

(7)結束狀態:所有的存儲位注入完成后,狀態機進入到結束狀態。把結束標志位置1,以便主機查詢注入是否結束,通過控制命令把所有的故障數及分類結果一次性傳到超級終端以便用戶觀察。

4 實驗結果

4.1實驗環境及步驟

基于自動快速故障注入的考慮,該故障注入平臺在FPGA硬件上實現,所使用的FPGA芯片為Xilinx公司Spartan-6系列的xc6slx16。主機為I3處理器,頻率3.4 GHz。軟件為ISE 13.2,用該軟件對故障及無故障PIC16F54微處理器、故障管理器以及故障列表進行RTL建模。用Microchip公司的MAPLAB設計負載程序,編譯生成16進制文件。用MathWorks公司的MATLAB將16進制文件生成ISE能夠識別.v文件作為微處理器的運行負載。最后使用ISE綜合工具及實現工具編譯之后,將生成的二進制配置文件通過JTAG接口下載到FPGA開發板上。MicroBlaze軟核負責主機與FPGA芯片之間的通信,通過RS232接口一方面接收主機發送的故障管理器啟動命令,另一方面把故障管理器獲得的分析結果傳送到主機的超級終端上進行顯示。

圖3 狀態轉移圖

4.2敏感性分析及敏感單元加固

根據存儲單元所在位置不同,把故障注入分為5個模塊,試驗首先進行的是按不同模塊進行故障注入。對特定負載下的PIC處理器注入約30萬個軟錯誤,得出不同模塊的軟錯誤敏感性即(/)×100%,為對該模塊進行故障注入的總數,為故障運行結果為顯式失效的個數。表2給出了故障注入模塊、該模塊包含的觸發器個數以及該模塊的敏感性。從表2中可以看出,系統失效較高的敏感模塊為取指令模塊以及特殊功能寄存器模塊。該平臺也可獲得每一個存儲單元的軟錯誤敏感性,不同負載下處理器的敏感單元略有不同。第1個負載為使用TMR0定時器的計數器,在此負載下注入約30萬個軟錯誤,敏感性結果如圖4所示,該圖的橫坐標為存儲單元名稱,縱坐標為該存儲單元的故障注入結果。單元名稱依次為Stack1, Stack2, PC_next_pop, Op_Mux_A, Op_Mux_L, ALU_out_Mux, bit_loc, TRISA, TRISB, OPTION,PC, W, f_out_data, PORTB, PORTA, FSR, TMR0, Pan, TO_N, PD_N, Z, DC, C, dataram,圖中橫坐標只是列出其中的幾個??煽闯?,敏感單元包含TMR0, PC, W等,對沒有使用到的Stack1, Stack2等單元故障注入結果是隱式失效。

表2不同模塊的軟錯誤敏感性

故障注入模塊觸發器個數模塊敏感性(%) 取指令 2931.0 譯碼 14 8.4 通用寄存器200 3.2 特殊功能寄存器 5832.1 不可尋址寄存器 200

第2個負載是調用子函數的延時程序,該程序頻繁使用Stack1, Stack2,在此負載下故障注入,敏感性結果如圖5所示??煽闯?,敏感性較高的存儲單元含Stack1, Stack2, PC, W等,而TMR0為隱式失效。從圖4,圖5中得出,微處理器在同一負載下,不同存儲單元對軟錯誤的敏感性是不一樣的;不同負載下,同一存儲單元的軟錯誤敏感性也不一樣,但除了與負載有關的特定存儲單元外,其余的總體趨勢基本一致;微處理器中的軟錯誤敏感單元包括頻繁使用的PC指針、工作寄存器(W)以及譯碼模塊中的控制信號;對于沒有使用到的存儲單元,注入結果為隱式失效。這些結果都與理論分析相符,也與文獻[3]中的結論一致,由此證明該平臺的正確性。由于PORTA, PORTB在本實驗中作為微處理器失效的輸出,所以對其進行故障注入敏感性達到100%,實際情況下不會有這么高的敏感性。

使用文中的故障注入平臺可以快速準確地分析出在定負載下的敏感單元,運行負載1的微處理器敏感性較高的存儲單元包括TMR0, PC, W,寄存器輸出文件(f_out_data)以及譯碼模塊中的控制信號Op_Mux_A, Op_Mux_L, ALU_out_Mux, Z。對這些敏感性較高的存儲單元以及PORTA, PORTB端口采取三模冗余方案進行加固,加固后再次使用該平臺對其進行故障注入,所得結果如圖6所示,可以看出三模冗余方案完全屏蔽SEU故障,同時進一步驗證了該平臺的正確性。在三模冗余加固方案下,僅僅通過加固20%的觸發器,可以使微處理器對SEU故障的軟錯誤敏感性降低到1%以下。

4.3速度比較

為了證明本文提出的基于FPGA故障注入與敏感性分析方法的快速性,使用Modelsim軟件仿真的方法,同樣采用RTL修改源代碼技術對PIC微處理器再次進行故障注入及敏感性分析。表3中數據為微處理器在不同負載下,分別使用兩種方法進行一次故障注入及敏感性分析所需的時間,單位為μs。最后一列數據表明,本文提供的FPGA方法比軟件仿真的方法速度提升了4個數量級,從而使得在可以接受的時間范圍內,為獲得具有統計意義的結果而進行更多的故障注入成為可能。

表3 不同方法的時間開銷

5 總結

本文基于FPGA的故障注入技術,提出一種自動快速并便于觀察的敏感性分析方法。用該方法,對不同負載下的PIC16F54微處理器,分別注入大約30萬個軟錯誤,分析每個存儲單元的敏感性。該方法在FPGA芯片上同時運行兩個處理器RTL模型,方便實現故障結果的分類,降低了設計的復雜度;利用內部的故障管理器實現對故障注入過程的控制,自動完成所有觸發器的故障注入;把故障分類、故障列表都放到FPGA上實現,減少實驗過程中主機與FPGA之間通信時間,加快了敏感性分析的過程;使用超級終端一次性顯示所有的故障注入結果,具有良好的觀察性。

圖4 負載1故障注入結果 圖5 負載2故障注入結果 圖6三模冗余加固后故障注入結果

[1] CLARK J and PRADHAN D. Fault injection: a method for validating computer-system dependability[J]., 1995, 28(6): 47-56. doi:10.1109/2.386985.

[2] 孫峻朝, 王建瑩, 楊孝宗. 故障注入方法與工具的研究現狀[J]. 宇航學報, 2001, 22(1): 99-104.

SUN Junzhao, WANG Jianying, and YANG Xiaozong. The present situation for research of fault injection methodology and tools[J]., 2001, 22(1): 99-104.

[3] KARLSSON J, FOLKESSON P, ARLAT J,.Application of three physical fault injection techniques to the experimental assessment of the MARS architecture[C]. Proceedings of 5th IFIP Working Conference on Dependable Computing for Critical Applications, Urbana-Champaign, IL, 1995, (10): 267-287.

[4] GAISLER J. A portable and fault-tolerant microprocessor based on the SPARC V8 architecture[C].International Conference on Dependable Systems and Networks, Washington, D.C., 2002: 409-415.

[5] 黃海林, 唐志敏, 許彤. 龍芯1號處理器的故障注入方法與軟錯誤敏感性分析[J]. 計算機研究與發展, 2006, 43(10): 1820-1827.

HUANG Hailin, TANG Zhimin, and XU Tong. Fault injection and soft error sensitivity characterization for fault-tolerant Godson-1 processor[J]., 2006, 43(10): 1820-1827.

[6] 武振平, 付方發, 肖立伊. 基于VHDL故障注入的處理器敏感性分析[J]. 微電子學與計算機, 2012, 29(10): 51-55.

WU Zhenping, FU Fangfa, and XIAO Liyi. Sensitivity analysis for processor based on VHDL fault injection[J].&, 2012, 29(10): 51-55.

[7] 吳杰. 基于VHDL的故障注入工具的研究與實現[D]. [碩士論文], 哈爾濱工業大學, 2013.

WU Jie. Research and implementation of VHDL-based fault injection tool[D]. [MsSter. dissertation], Harbin Institute of Technology, 2013.

[8] ADMANE N and ROTAKE D. Fault tolerant system for FPGA using simulation based fault injection technique[C]. 2015 International Conference on Communications and Signal Processing, Melmaruvathur, 2015: 0855-0859.

[9] 薛茜男, 李振, 姜承翔, 等. 面向航空環境的多時鐘單粒子翻轉故障注入方法[J]. 電子與信息學報, 2014, 36(6): 1504-1508. doi: 10.3724/SP.J.1146.2013.01296

XUE Qiannan, LI Zhen, JIANG Chengxiang,. A single event upset fault injection method based on multi-clock for aviation environment[J].&, 2014, 36(6): 1504-1508. doi: 10.3724/ SP.J.1146.2013.01296

[10] SERRANO F, CLEMENTE J, and MECHA H. A methodology to emulate single event upsets in flip-flops using FPGAs through partial reconfiguration and instrumentation [J]., 2015, 62(4): 1617-1624. doi:10.1109/TNS.2015.2447391.

[11] SHOBANA M and SENTHIL S. Reconfigurable data processing using duplex fault tolerance system[C]. 2015 International Conference on Innovations in Information, Embedded and Communication Systems, Coimbatore, 2015: 1-5. doi: 10.1109/ICIIECS.2015.7192935.

[12] EBRAHIMI M, MOHAMMADI A, EJLALI A,.A fast, flexible, and easy-to-develop FPGA-based fault injection technique[J]., 2014, 54(5): 1000-1008. doi:10.1109/DATE.2012.6176538.

[13] MOHAMMADI A, EBRAHIMI M, EJLALI A,. SCFIT: A FPGA-based fault injection technique for SEU fault model[C]. Design, Automation & Test in Europe Conference & Exhibition, Dresden, 2012: 586-589. doi: 10.1109/DATE.2012.6176538.

[14] CIVERA P, MACCHIARULO L, REBAUDENGO M,.FPGA-based fault injection techniques for fast evaluation of fault tolerance in VLSI circuits[C]. Field-Programmable Logic and Applications, Berlin Heidelberg, 2001: 493-502.

[15] SHOKROLAH-SHIRAZI M and MIREMADI S. FPGA- based fault injection into synthesizable verilog HDL models [C]. Secure System Integration and Reliability Improvement, Yokohama, 2008: 143-149.

梁華國: 男,1959年生,教授,研究方向為嵌入式系統綜合與測試、數字系統設計自動化.

孫紅云: 女,1991年生,碩士,研究方向為基于FPGA的故障注入、軟錯誤敏感性分析.

孫 駿: 男,1991年生,碩士,研究方向為軟錯誤敏感性分析.

黃正峰: 男,1978年生,副教授,研究方向為數字集成電路的硬件容錯、星載SoC芯片的抗輻射加固.

徐秀敏: 男,1989年生,博士,研究方向為超大規模集成電路(VLSI)設計與測試、軟錯誤敏感性分析.

易茂祥: 男,1964年生,教授,研究方向為超大規模集成電路(VLSI)設計與測試.

歐陽一鳴:男,1963年生,教授,研究方向為片上網絡(NoC)與片上系統(SoC)、數據挖掘與信息系統.

魯迎春: 男,1979年生,博士,研究方向為嵌入式系統綜合與測試、數字系統設計自動化.

閆愛斌: 男,1983年生,博士,研究方向為軟錯誤敏感性分析.

FPGA-based Soft Error Sensitivity Analysis Method for Microprocessor

LIANG Huaguo①SUN Hongyun①SUN Jun①HUANG Zhengfeng①XU Xiumin①YI Maoxiang①OUYANG Yiming②LU Yingchun①YAN Aibin②

①(&,,230009,);②(&,,230009,)

In order to quickly and automatically analyze the soft error sensitivity for microprocessors, a soft error sensitivity analysis method using FPGA-based fault injection is proposed. The fault and fault-free microprocessors on a FPGA are board run simultaneously. Moreover, a fault injection controller, a fault classification module and a fault list module are also implemented on the hardware. The method inherits the parallelism of the FPGA and achieves a fast and automatical fault injection for all storage bits. Further, using a PIC16F54 microprocessor as experimental subject, approximate 300, 000 soft errors are injected into the microprocessors to analyze its softerror sensitivity. In order to demonstrate the sensitivity evaluation efficiency of the method, the quite sensitive storage cells are hardened and the sensitivity is analyzed again. Compared to the simulation approach, experimental results show that the proposed technique achieves four orders of magnitude speedup.

FPGA; Fault injection; Single event upset; Soft error; Sensitivity analysis

TP302.8

A

1009-5896(2017)01-0245-05

10.11999/JEIT160225

2016-03-11;改回日期:2016-07-22;

2016-10-09

黃正峰 huangzhengfeng@139.com

國家自然科學基金(61274036, 61371025, 61474036, 61574052),安徽省自然科學基金(1608085MF149)

The National Natural Science Foundation of China (61274036, 61371025, 61474036, 61574052), Anhui Provincial Natural Science Foundation (1608085MF149)

猜你喜歡
故障注入存儲單元寄存器
一種28 nm工藝下抗單粒子翻轉SRAM的12T存儲單元設計
Lite寄存器模型的設計與實現
SM4算法前四輪約減輪故障注入分析
采用修改-回放原理的1553B故障注入方法
數據在計算機內存中的存儲形式及實驗驗證
分簇結構向量寄存器分配策略研究*
一種成本更低的全新靜態DRAM存儲單元
MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
列車MVB總線故障注入研究
一種指令級Linux內核瞬時故障注入方法研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合