在安全系統(tǒng)設計中,為防護硬件隨機性故障造成的功能失效,會用到不同于一般電子產(chǎn)品的設計方法,這些設計方法在功能安全標準如IEC61508、ISO26262有推薦的方法列表,根據(jù)電子系統(tǒng)的不同組成部分,可以應用不同的設計方法。本文來談談應用比較多的冗余技術,具體有硬件冗余、信息冗余、軟件冗余。
硬件冗余:
硬件冗余是將多個硬件單元復制作為一個整體來提供功能。從組成部分來看,多個硬件單元可以是相同的,也可以是不同的,如使用相同的硬件,但是操作系統(tǒng)和應用不同,或者只有應用不同的。從最終輸出來看,可以沒有獨立的表決器,由其中一個處理單元準備輸出,也可以有獨立的表決器。下面介紹幾種典型的冗余架構:
主/從控制架構:以一個計算單元作為主控制輸出,另一個計算單元作為從控制。在下面的架構中,主控制單元和從控制單元都對輸入數(shù)據(jù)進行處理,并進行互相交互的校核,當從控制單元檢查主控制單元的輸出存在故障時,對主控制單元進行復位。該架構中當從控制單元的檢查存在時間上的延遲,需要對故障輸出的延遲時間影響增加分析。
雙核鎖步架構:芯片內(nèi)的雙核鎖步架構冗余技術,每條CPU指令都由兩個處理器獨立地執(zhí)行,每個處理器讀取、寫入數(shù)據(jù)后執(zhí)行下一條指令,主處理器控制總線,從控制器控制一個監(jiān)控器,當兩個處理器發(fā)生不一致時,監(jiān)控器用來使芯片輸出導向安全,輸出報警給外部的監(jiān)控芯片。為了防止外部瞬態(tài)的電磁干擾,兩個處理器在執(zhí)行的時序上采用分時執(zhí)行的方法。
NooM架構:由兩個硬件計算單元構成的2oo2架構,由2個以上的計算單元可以構成2*2oo2或2oo3架構。2oo2架構能檢查單個單元的故障,但是無法容錯。它的共因故障是需要避免的,軟件要具備硬件同樣等級的安全性水平,硬件設計避免有共用部分,對CPU、內(nèi)存應引入自檢機制,以避免潛伏故障。
2oo2架構的一種近似架構是1oo2D架構,它也是由兩個處理單元組成,每個處理單元都有對應的故障檢測模塊,比如說獨立的看門狗,看門狗的輸出用來控制選擇開關,授權哪個處理單元對外輸出。
多個處理單元的NooM架構有2oo3,兼顧了安全性和可用性。對于單個處理單元的故障,通常是將其導向安全側輸出,但也有設計為故障后進行重置,分享其狀態(tài)給其它處理單元。舉Boeing 777中的飛控計算機為例,由三個處理單元PFC(Primary Flight Computer)組成,PFC之間通過獨立三個通信網(wǎng)絡進行通信,每個PFC內(nèi)部有三個異構的處理器Intel、Motorola和AMD,從而避免處理器的共因故障。每個處理單元在三種狀態(tài)之間轉換:控制、待機和監(jiān)視,執(zhí)行器對處理單元的輸出進行選擇。
信息冗余:
信息冗余增加多余的信息碼,用于檢測傳輸數(shù)據(jù)的錯誤,也可用于糾錯,應用于內(nèi)存,數(shù)據(jù)總線和通信網(wǎng)絡的數(shù)據(jù)錯誤。常用的有奇偶校驗,CRC校驗,海明碼和算術碼。奇偶校驗只能檢測單bit錯誤,無法檢測雙重bit錯誤。CRC校驗還可以應用于校驗存儲在內(nèi)存中的數(shù)據(jù)或程序是否被篡改。
海明碼用于存儲或傳輸數(shù)據(jù)時檢測和糾正錯誤,通過增加額外的奇偶校驗位實現(xiàn)。標準漢明碼只能檢測和糾正單bit錯誤。對于雙重bit錯誤,可以添加一個額外的總體奇偶校驗位,以可靠地檢測兩位中的錯誤。這稱為單糾錯/雙糾錯檢測(SECDED)。
算術編碼用包含兩個字段的編碼替代原來的數(shù)據(jù):數(shù)據(jù)部分和編碼部分。能夠檢測三種類型的錯誤:
operation error(操作數(shù)錯誤):計算機使用預期操作符處理操作數(shù)得到了錯誤的結果。這種類型的錯誤,非常類似于傳輸錯誤,但不會給代碼設計帶來新的約束。
operator error(操作符錯誤):計算機使用好的操作數(shù),但有一個非預期的運算符。例如,如果一個加法運算符被替換成乘法運算符,結果是假的,即使乘法計算的結果是正確的。對這種類型的錯誤的檢測,不是數(shù)據(jù)傳輸通道存在的錯誤,需要對運算符增加編碼。
operand error(操作錯誤):一種情況是地址錯誤,相當于用一個變量替換了另一個變量。這種類型的錯誤發(fā)生在傳輸系統(tǒng)中,在不同的通道之間發(fā)生了串擾。類似于傳輸過程中收到了發(fā)送到另一個接收者的數(shù)據(jù)。另一種情況是存儲錯誤,存儲的數(shù)據(jù)變化或者沒有被更新,是過時的數(shù)據(jù)。
軟件冗余:
軟件在同一個處理器執(zhí)行兩次,由外部設備進行表決,可以用于檢測內(nèi)存錯誤。需要將軟件分別加載到不同的內(nèi)存區(qū)域,因此,各種內(nèi)存的故障如RAM、ROM、EPROM,都可以在運行過程中檢測出來。但軟件冗余屬于執(zhí)行程序的冗余,對于共享的硬件處理器故障無法檢測。
可以在執(zhí)行過程中加入指令的自測試,對不一致的數(shù)據(jù)進行比較,對處理器進行全面的功能測試。為了進行有效的檢測,測試覆蓋率必須足夠(覆蓋應用指令等),并且必須在正確的時間執(zhí)行(初始化,在每個周期內(nèi),定期,在任務結束時)。這種做的缺點是增加了處理器的性能開銷。
軟件冗余相比硬件冗余更簡單,但檢測錯誤的有效性需要應用其它技術進行彌補,采用軟件的多樣化和自檢測技術可以作為很好的補充。另外,由于軟件的冗余執(zhí)行,執(zhí)行時間較長,適用于對時間性能要求不高的系統(tǒng)。
總結
以上是三種冗余技術的介紹,都是通過增加冗余的資源以實現(xiàn)故障的檢測,有硬件資源的冗余,數(shù)據(jù)信息的冗余和軟件執(zhí)行層的冗余,通過一些簡單的示例進行了說明。在實際系統(tǒng)的設計中,往往不僅僅采用單一的技術,而是多種冗余技術相結合。同時,冗余技術在于它對隨機故障的檢測有效性,與異構多樣化相結合,實際使用可以提高對系統(tǒng)性故障的檢測能力。
審核編輯:劉清
-
處理器
+關注
關注
68文章
19259瀏覽量
229650 -
控制器
+關注
關注
112文章
16332瀏覽量
177803 -
電磁干擾
+關注
關注
36文章
2312瀏覽量
105391 -
監(jiān)控芯片
+關注
關注
1文章
9瀏覽量
3685
發(fā)布評論請先 登錄
相關推薦
評論