作者:admin 時間:2022-12-27
容錯設計的基本思想來源于馮·諾伊曼,他指出人的大腦細胞在人的一生中不斷地死亡,令人驚奇的是這并不影響任何生理系統的正常工作。另外,包括人體在內的眾多生命體都有自愈機制,例如粘膜的自行或、皮膚和肌肉以及軟組織愈合等等。這種生物界的自動恢復能力如果能引用到技術領域,使系統也具有這種自和容忍故障的能力,就可以達到高可靠性系統的目的。這就是容錯的思想。
容錯技術是對故障的“容忍”,但并非是“無視”故障的處在。它首先能自動地實時檢測并診斷出系統的故障,然后對故障進行決策、處理。這個過程大概可以表達如下:
圖片摘自《可靠性設計與分析》一書(主編 曾聲奎)
常用的容錯技術實現方法有信息容錯、時間容錯、結構(硬件)容錯和軟件容錯。下面分別舉一些例子。
◆信息容錯
在數據傳輸過程中,無論傳輸系統的設計再怎么,差錯總會存在,這種差錯可能會導致在鏈路上傳輸的一個或者多個幀被破壞(出現比特差錯,0變為1,或者1變為0),從而接受方接收到錯誤的數據。
為盡量提高接受方收到數據的正確率,在接收方接收數據之前需要對數據進行差錯檢測(部分方法還能夠實現自動糾錯),當且僅當檢測的結果為正確時接收方才真正收下數據。如數據通信中常用CRC校驗碼(循環冗余校驗碼),奇偶校驗碼,海明碼等。
此外,在信息的產生時,就要考慮容錯。例如,容易受到外界干擾的采集數據中,不要使用一位邏輯”1”和“0”的模式來表示,而應該采用多位既非全0又非全1的模式來表示。舉一個例子,一種旋轉開關如下。它用五組節點來代表信息含義,避免了簡單的1和0信息。
◆時間容錯
時間容錯是以犧牲時間來換取計算系統高可靠性的一種手段。通常為了診斷系統是否有出故障,讓系統重新執行某一段程序或指令,即用時間的冗余進行故障診斷,然后根據出錯的位置加以糾錯從而達到容錯的目的。
一般有兩種方式實現時間容錯,一種是有限度地降低機器的速度來增加系統可靠性。另外一種是重復執行指令或程序來消除瞬時錯誤帶來的影響。比如下面這個程序,重復執行3次。
對于復執不成功的情況,通常的處理方法是發出中斷,轉入錯誤處理程序或者對程序進行復算,或重新組合系統,或放棄程序處理等等。
程序復算中較常用的方法是程序卷回(Program Rollback),簡單地講,是在整個程序中預先設置了若干恢復點,在各個恢復點存有在改點對應時刻的運行數據記錄,供重復使用。如圖所示,在遇到故障時,回滾到故障點,再重新執行程序。
我在我新電腦安裝UG軟件的時候,剛好遇到一個安裝故障,其安裝界面提示如下,回滾后它重新安裝成功了,這就是典型的程序卷回。
◆結構(硬件)容錯
由于數字電路的集成化程度提高,硬件的體積、重量、性能及成本大幅降低,技術上利用硬件冗余實現容錯較簡單可靠,所以應用十分廣泛。
舉一個最簡單的例子,下圖是一個二管四模結構的示意圖:
它可以實現:
1、任意一個二管開路時,仍能正常工作
2、兩個或者三個二管的故障,只要不是同一支路的兩個二管短路,或者每一個支路都有一個二管開路時,仍能正常工作。
◆軟件容錯
軟件容錯是增加程序以提高軟件的可靠性的一種手段。通常采用的手段有:
1.增加用于測試檢錯或診斷的外加程序。
比如我之前做的這個圖片歸類軟件《無需編程!輕松實現圖片識別歸類~調研、質檢、營銷都可應用》,在對接口的校驗上,就用try-catch捕獲異常:
2.用于計算機系統自動重組、降級運行的外加程序。
在許多使用計算機的領域中 ,要求其具有高可靠性,特別是用于航天領域的計算機 ,更要求其具有長時間連續運行的高可靠性。這些是普通計算機難以勝任的,采取容錯施加以保證。
舉個例子,一種帶存儲體行備份的模塊級可降級重組雙機容錯系統邏輯框圖如下。
該系統采用模塊化結構 ,一個完整的單機由CPU、M (存儲體)和 I/O 接口三個模塊組成 。兩個獨立的單機之間用總線開關控制。當系統處于雙機工作模式時,總線開關關閉, 兩個單機獨立工作。當系統處于降級重組的單機工作模式時,總線開關打開。圖中,CL1、CL2分別是I機 、Ⅱ機的切換控邏輯,M1' 、M2'是M1、M2的行備份。BS為總線開關。
為了實現這個功能,計算機就會有一些程序去保證,比如說雙機間的數據交換程序、容錯管理程序。
3.一個程序用不同的語言或途徑獨立編寫。
在講軟件可靠性時,我們提了,N-版本程序設計方法。不同的小組用許多變體(不同的設計方法,不同的算法,不同的程序設計語言,不同的編譯程序,不同的實現技術,不同的設計師及程序員)實現相同的規格說明,所有變體同時進行計算,利用表決系統選擇多數作為輸出。
4.按方式將執行結果分階段進行表決,診斷出軟件故障并隔離,從而達到軟件容錯的目的。
在講軟件可靠性時,有談過恢復塊法,在每次模塊處理結束時都要檢驗運行結果,一旦發現異常后,通過替代模塊再次運行。可以用下面這個圖表達:
從上面舉的很多例子可以看出,容錯在很多時候,是通過冗余來實現的,對冗余方式的選取,是容錯設計首先需要考慮的問題。
容錯設計前,需要對系統容許的故障類型進行全面的分析,確定故障原因、故障模式、故障類型,才能針對性地去設計,它不會實現對未覆蓋故障的“容忍”。
容錯設計時,通常是多種方法綜合使用,以達到的容錯能力。
本文由國可小編為您!
版權所有© 國可工軟科技有限公司 滬ICP備2020030271號