徐 軍,王 瀾,耿進龍,崔 丹,房增華
(卡斯柯信號有限公司 研發中心,上海 200071)
一種提高安全計算機可靠性的內存檢測設計
徐 軍,王 瀾,耿進龍,崔 丹,房增華
(卡斯柯信號有限公司 研發中心,上海 200071)
目前應用在嵌入式系統的各種內存檢測方案,很難均衡地滿足內存檢測性能要求:比較高的檢測覆蓋率、比較低的硬件開銷、比較高的檢測速度。根據軌旁安全計算機的系統特性和安全性要求,提出了一種軟硬件相結合的內存內建測試架構方案,利用硬件BIST方案來檢測高層次內存故障和軟件BIST方案來覆蓋低層次內存故障。實際項目應用結果顯示,該混合內存檢測方案可以有效地減少硬件開銷和降低檢測時間,并提高內存故障檢測覆蓋率至99%,使系統能夠滿足高實時性、高安全性的要求。
內存故障;安全;內存檢測
目前,在軌道交通行業中,各種控制系統和設備功能復雜、實時性強、安全性要求高,系統任何部件的錯誤或者故障都可能導致災難性后果[1]。因此對軌道實時安全設備的內存進行內建測試(BIST)也顯得越來越重要。
目前,對內存進行內建測試BIST的方式主要有2種[2],(1)采用硬件架構的BIST,在硬件邏輯電路中實現內存檢測算法;(2)軟件架構BIST,通過基于處理器的軟件來實現內存測試。
本文結合軌旁安全計算機的安全性和實時性要求,根據March-TB內存檢測算法,設計了一種硬件與軟件相結合的內存內建測試架構方案,探討了該方案在降低硬件開銷、保證較高的檢測速度和覆蓋率等方面的有效性,并在相應實際項目中做了應用和驗證。
根據《電氣/電子/可編程電子安全系統的功能安全》IEC61508標準[3],安全相關系統或者設備的安全性,一般用安全完整性等級(SIL)和每小時平均危險失效頻率(PFH)來衡量。IEC61508標準將安全相關的系統的安全完整性等級分為SIL1、SIL2、SIL3、SIL4,見表1。
本文提到的安全計算機是應用于軌旁安全平臺的計算機系統,應用在軌道交通行業的設備或者系統,需要滿足高安全性和高可靠性的要求。
在對軌旁安全計算機系統進行設計開發時,需要采用相應的安全處理技術來使PFH滿足 ,即其系統安全完整性等級需要達到SIL4安全等級。
軌旁安全平臺計算機系統采用二取二的安全冗余系統架構,可以依靠以下模型來來分析其每小時平均危險失效頻率(PFH)。

由上(1),(2),(3)式得:

其中,λ為系統失效率,λD為危險失效率,λDU為未檢測到的危險失效率,為系統故障檢測覆蓋率,πP是系統工作時危險失效率調整因子,與系統的架構設計有關。
當系統采用二取二的冗余架構時,檢測覆蓋率DC對PFH影響關系見表2。

表1 SIL與PFH關系表

表2 基于故障檢測覆蓋率的危險失效率
由式(4)和表2中可知,要使軌旁安全平臺計算機系統的達到SIL4要求,可以在進行安全計算機系統設計時采取以下技術措施:
(1)降低各子系統的失效率λ至λ=1.0×10-7;
(2)提高各子系統的診斷覆蓋率DC至99%;
(3)系統的關鍵組件采用冗余或者表決技術,如二取二冗余結構。
由上分析可知提高系統的故障檢測覆蓋率,可以降低系統的危險失效率,提高系統的安全性。
2.1 內存故障模式
在嵌入式系統中, RAM的內存的功能模塊框圖如圖1所示。
內存一般可分為3個功能模塊:內存單元陣列、內存地址解碼邏輯、讀寫邏輯。系統所選用RAM本身可能存在一些制造缺陷,如晶體管氧化短路、電離子遷移、氧化層破裂等,同時對嵌入式板卡電路進行設計時,也會因為設計和制造的失誤,導致RAM電路出現故障,如元件開路、電源短路、線開路等。

圖1 內存功能模塊框圖
無論門級電子元件的制造缺陷,還是板卡電路級的設計錯誤,都可能發生在3個功能模塊中,而這3個模塊是作為實現內存功能不可分割的組成部分,出現在這3個模塊中故障或者失效,最終都會反映出RAM的內存功能性故障,從而降低RAM的功能完整性和可靠性。
內存功能故障的故障模型情況[4]如表3:
當內存的任意一個單元能夠正確的存儲數據,即每個內存單元存儲狀態能夠從0變為1,也能夠從1變為0,并能夠正確的從任意單元讀出正確的數據,而這些操作不會影響別的存儲單元,也不會被別的存儲單元影響,則說明該內存的存儲功能是完整的和可靠的。
可以通過分析上面內存故障發生的情況,可得檢測內存功能完整性和可靠性的依據,如果RAM的功能是完整的和可靠的,則應該滿足以下5個條件:

其中,假定有內存模塊M,由n個內存陣列單元,AUi(i=1,…, n);表示單元Ui的狀態處于狀態值v,其中ν;∈{0, 1}每個單元的狀態最大狀態變換延遲時間為Δ cMax;每個單元的狀態最小狀態保持時間為Δ sMin;表示單元Ui的寫入狀態值ν,)表示從Ui的讀出狀態值ν。
2.2 內存內建測試架構
針對內存的內建測試方式,目前主要有兩種:硬件BIST架構和軟件BIST架構。
(1)BIST架構在硬件電路中設計專門的硬件邏輯部件來對內存進行測試,其圖形測試向量有專門的硬件電路模塊生成,自動地對內存的各種功能故障進行測試,硬件架構內建測試的內存故障測試覆蓋率高,而且測試速度快,但是,需要設計專門的硬件電路,設計困難,研發成本高,而軌道安全實時設備對系統連續正常工作性能要求高,同時,引入復雜的內建測試邏輯電路,沒有可靠的手段來保證該電路的安全穩定性,最終也會降低系統的整體安全性。
(2)BIST架構的測試圖形向量由軟件模塊實現,內存測試算法嵌入到某個軟件模塊中,由軟件模塊來進行內存內建測試,軟件編碼實現起來比較方便,而且該軟件算法框架實現后,可移植性好,能夠很快的與其他設備系統軟件集成,降低系統的開發周期和成本,但是軟件BIST架構,故障檢測覆蓋率受操作系統特性的限制,不能完全測試所有內存區塊,測試速度不高[2],而且對內存的動態失效,如不能檢測出數據保留故障等。另外對嵌入式操作系統軟件的實時性要求高,需要經過大量的調試來確定集成方案。
一個有效的BIST架構方案,至少應該滿足3個條件:比較高的測試覆蓋率、比較低硬件開銷和比較少的測試時間[5]。
本文根據軌旁安全計算機的安全性和實時性以及研發生產成本的要求,選取相關內存檢測算法,提出了一種軟件BIST架構(SBIST)與硬件BIST架構(HBIST)相結合的內存內建測試方案。
2.3 內存檢測算法
實際項目應用中,開發人員需要關注內存功能的完整性和可靠性,通過內存檢測算法來對內存功能性故障進行檢測和診斷,能夠及時發現和定位RAM的故障[6~8],并做出相應的措施,避免因內存的數據錯誤導致的嚴重后果。根據軌道交通設備的安全性和實時性要求,用在實時安全設備中的內存檢測算法需要滿足以下2個條件:
(1)故障檢測覆蓋率DC:

其中,FD為發現的內存故障數,F為內存中所有存在的故障數。使用的內存檢測算法應該盡可能的覆蓋所有故障,提高故障測試覆蓋率。
(2) 算法的時間復雜度Ω(n),應該盡可能地小,如果Ω(n)過大,不僅影響了系統的實時性,也影響了算法了有效性。
內存檢測算法性能比較表如表4所示。

表4 內存檢測算法性能比較表
從表4中可以看出,March-TB內存檢測算法能夠支持檢測的故障類型比較全面,同時該算法的時間復雜度也比較低[9~10],其內存檢測時間與內存容量成線性關系,可以有效的控制檢測時間,保證較高的檢測速度。
同時March-TB算法對內存檢測的診斷檢測率可以達到99%[10]。該算法具有很好內存檢測性能,因此,本文采用March-TB算法對軌旁安全計算機的內存進行檢測。
3.1 安全計算機系統架構
軌旁安全平臺計算機系統采用二取二的冗余系統架構,由主處理板MPU、高速通信板HCU組成、比較接口板JIU組成,如圖2所示。

圖2 設備架構圖
其中MPU板,主要負責整個系統的邏輯處理,MPU會通過網口接收外部其他設備發送過來的消息數據,并進行處理之后將處理生成的邏輯結果發送出去。本文提到的內存檢測主要針對MPU使用的內存,內存檢測功能框圖如圖3所示。

圖3 內存檢測功能框圖
由于各種內存故障之間有一定的層次關系,高層次的內存測試一定能覆蓋低層次的內存故障測試,因此覆蓋高層次內存故障的情況下,不需要對每種內存故障進行測試[11]。
對于HBIST部分,設計選取的測試圖形向量主要用于覆蓋高層次的內存故障,如NPSF、CF、DRF內存故障。硬件BIST測試的周期為24 h,當夜間軌道實時安全設備處于空閑狀態時,啟動硬件BIST測試。
對于SBIST部分,選取存檢測算法測試圖形向量子集,保證用最少的圖形向量覆蓋檢測SAF、TF、AF內存故障,以保證能夠內存測試能夠快速的完成。并將該算法嵌入到定時中斷處理函數中,周期性的對內存分段測試。
通過硬件架構和軟件架構來覆蓋不同層次的內存故障,可以減少硬件開銷,降低開發成本。
3.2 內存檢測流程
實時安全設備上運行的操作系統是嵌入式vxWorks操作系統,系統的啟動分為2個階段:板卡上電初始化和vxWorks操作系統運行[12]。因此,對實時安全設備的內存檢測也分為兩個步驟:上電檢測和在線檢測。內存檢測流程如圖4。

圖4 內存檢測流程圖
嵌入式設備的板卡上電后,vxWorks操作系統和應用業務還沒正常運行起來,可以對vxWorks將要使用的內存進行全面的檢測。此時使用的方法主要是ECC方法加March -TB方法,可以有效的發現失效故障的內存單元。
3.3 硬件內存檢測
硬件BIST利用March-TB內存測試算法對系統的內存進行測試,使用硬件HBIST電路來生成測試圖形向量,并由硬件HBIST電路來進行測試,HBIST測試電路模型如圖5所示。
硬件HBIST測試架構包括模式控制器、測試向量產生器、地址與數據生成邏輯、測試結果比較器以及BIST控制接口。
HBIST模塊硬件電路包含在MPU板卡上的CPLD中,利用VHDL硬件編程語言實現BIST的邏輯功能。

圖5 硬件BIST模塊圖
在硬件BIST處于非工作狀態時,會拉低BIST的時鐘信號,BIST電路進入休眠狀態。當系統在夜間進入非繁忙狀態,會產生BIST_MODE信號,來激活BIST電路的BIST模式控制器,并拉高時鐘信號,BIST模式控制器發出控制信號,會接管對整個RAM的訪問控制,并對RAM開始進行測試。
BIST模式控制器控制測試向量產生器、地址與數據生成邏輯工作,產生相應的測試向量對RAM進行測試。并將測試結果在BIST結果比較器中進行比較,如果發現異常,退出BIST_MODE模式,通知MPU測試異常,MPU產生相應的告警和錯誤處理。
HBIST在進行內存檢測時一共具有4個狀態:idle, test, error, wait。
idle:HBIST模塊處于等待測試數據進行測試的空閑狀態;
test:獲得測試向量對相應內存單元進行測試;
err:HBIST檢測到內存單元出錯;
wait:HBIST處于休眠狀態,等待CPU模塊激活HBIST。
HBIST狀態機的狀態轉移圖如圖6所示。

圖6 硬件BIST模塊狀態轉移圖
當ram_errn = '0',表示內存出錯;
bit_reg = X"35C9"是清除中斷控制字;
bit_reg = X"A563"是準備開始test的控制字。
在測試的過程中,通過植入內存故障,并用邏輯分析儀獲取的出錯信號,如圖7。藍圈里面的測試結果與期望結果不一致,內存檢測出錯。

圖7 硬件BIST模塊檢測內存出錯圖
3.4 軟件內存檢測
系統鏡像被加載到RAM后,開始運行后,內存區域分為不可變內存段和可變內存段,其中不可變內存段包括代碼段,可變內存段包括任務棧、全局數據段、堆數據段。
3.4.1 不可變內存檢測
代碼段內存檢測的流程如圖8所示。

圖8 不可變內存檢測流程圖
在程序開發完成后,通過Diab編譯器編譯生成a.out格式的應用程序的可執行文件。可以通過LoadModule模塊功能將a.out文件加載到指定的內存地址處,并在加載前對將要放置代碼段的內存區段利用March TB算法檢測,檢測通過則繼續加載應用程序并運行,否則就錯誤日志,并告警。在a.out格式的文件中,可執行指令代碼數據被存儲在對應的位置,可以通過離線工具解析a.out文件,從中提取到TEXT數據,并計算出TEXT數據的MD5值。
根據不可變內存區域的屬性,存放在該內存段的數據是只讀的,不會發生變化,如果存儲的數據被改變,意味著內存可能出現異常或者故障。
3.4.2 可變內存檢測
存儲在可變內存中數據是可變的,程序從該內存區段讀出數據,也向可變內存段寫入數據。利用March-TB算法對可變內存進行在線檢測。可以有效的發現可變內存故障,避免發生嚴重后果。
MPU板卡上的定時器產生10 ms周期的定時器中斷,然后觸發中斷處理函數TIMER_INT_PROC運行,在中斷處理函數中,會利用March TB算法對可變內存進行在線檢測,檢測步驟如下:
(1)定時中斷觸發中斷處理函數TIMER_INT _PROC運行;(2)中斷處理函數TIMER_INT_ PROC同過intLock()鎖住操作系統,禁止任務運行和接收其他中斷;(3)中斷處理函數TIMER_ INT_PROC根據當前周期號,利用March TB算法對相應的可變內存進行分段檢測,如果發現錯誤,進行記錄日志,并告警,否則繼續執行;(4)中斷處理函數TIMER_INT_PROC調用UnIntlock()解鎖操作系統,正常接收中斷,主任務繼續運行。等待定時中斷,如果中斷到來,執行第一步。
3.5 內存檢測性能
依據不同的內存檢測方案,通過實際項目結果得到對不同內存區段檢測效率和性能參數,性能參數見表5和表6。總體診斷覆蓋率為99%,滿足EN50129鐵路安全標準[13]中表D.1對大規模集成電路的測試方法和IEC61508-2標準[3]附錄A中對安全相關系統硬件的隨機失效的診斷覆蓋率要求。

表5 硬件內存檢測性能表

表6 軟件內存檢測性能表
分析了應用在軌道交通行業中的軌旁安全計算機的內存檢測機制,并在實際的項目設備開發中,設計了軟件與硬件機制相結合的內存檢測方案,性能參數可以滿足軌道交通行業中的嵌入式設備對內存的安全性要求。
[1] 燕 飛,唐 濤.軌道交通信號系統技術的發展和研究現狀[J].中國安全科學學報,2005,15(6):94-99.
[2] 王長弘,萬培元,林平分.嵌入式存儲器內建自測試時間的優化[J].中國集成電路,2013,169(6):31-34.
[3] IEC61508-2,Functional Safety of Electrical/Electronic/ Programmable Electronic Safety-related Systems-Part II[S]. 2010.
[4] 吳光林,胡 晨,李 銳,等.一種并行內建自診斷測試嵌入式SRAM方案[J].電路與系統學報,2003,8(5):51-56.
[5] 丁 琳,虞美蘭.邏輯內建自測試高故障覆蓋率設計[J].計算機測量與控制,2006,16(1):24-26.
[6] 唐 培,徐拾義,張小峰.基于軟件內建自測試的測試用例研究[J].計算機應用與軟件,2006,23(10):45-46.
[7] Scherrer C, Steininger A. Dealing with dormant faults inan embedded fault-tolerant computer system[J]. IEEE Trans. Reliability, 2003, 52(4): 512-522.
[8] Corno F, Damiani M, et al. On-line Testing of an Off-the-Shelf Microprocessor Board for Safety-critical Applications[C]. Proceeding of Second Eroupean Dependable Computing Conference(EDCC-2), Taormina, Italy, October 2-4, 1996.Berlin:Springer, 1996: 190-201.
[9] 張 銅,成本茂,張小峰.基于MARCH算法的SRAM內建自測試設計[J].計算機與現代化,2013,216(8):99-101.
[10]任愛玲,凌 明,吳光林,等.一種用于嵌入式內存測試的高效診斷算法[J]. 應用科學學報,2005,23(2):178-182.
[11]唐 濤,許邦建.基于March算法的嵌入式存儲器BIST技術[J].計算機研究與發展,2007,44(1):17-21.
[12]符冬陽.嵌入式系統內存檢測分析[J].微型機與應用,2012,31(21):26-27.
[13] CENELEC EN50129-2006. Railway Applications:Safety Related Electronic Systems for Signalling[S]. 2006.
責任編輯 徐侃春
Design of memory detection for raising reliability of vital computer
XU Jun, WANG Lan, GENG Jinlong, CUI Dan, FANG Zenghua
( Research and Development Center, CASCO SIGNAL LTD., Shanghai 200071, China )
Design scheme of memory detection applied to embedded devices currently, seemed diff i cult to meet three performances: high diagnostic coverage, low hardware cost and high testing speed. According to system property and safety requirement of track-side vital computer, the paper presented a design scheme of memory detection for safety device, combined hardware with software, used BIST hardware to detect high level memory fault, used BIST software to test low level fault. Experimental results showed that the hybrid memory detection methods could effectively detect memory failure and fault with high reliability requirement and high safety requirement, obtain a general increase in the diagnostic coverage to 99%, reduce hardware cost and testing time, meet the needs of highly real-time and high security.
memory fault; safety; memory detection
U29∶TP39
A
1005-8451(2014)10-0047-06
2014-04-15
徐 軍,助理工程師;王 瀾,高級工程師。