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