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