定義
容錯計算,就是在系統存在故障的情況下,仍能正確地執行給定的算法。容錯計算技術隨計算技術發展而發展,特別是與VLSI的發展密切相關。早期50~60年代,計算機硬體由分立元件組成,與之相應,容錯計算技術集中在器件級和基本功能部件級(運算器、控制器、暫存器等)進行研究,提出了大量的方法來提高邏輯電路的可靠性,大部分檢錯、糾錯碼也在這期間廣泛套用。
基本技術
計算機系統的RAM技術主要就是容錯計算(Fault-Tolerant Computing)技術。所謂容錯計算,就是在系統存在故障的情況下,仍能正確地執行給定的算法。為了實現這一點,必須使系統具有故障檢測與診斷、功能切換與系統重組(reconfiguration)、系統恢復與重新運行、系統的重構(reintegration)與可擴展等功能,而且這些功能不能影響系統的正常運行或至少不能使系統的性能下降到不能容忍的程度。對非容錯系統,當故障導致系統發生算法執行錯誤並被發現後,系統要停止運行,由專門的維修人員進行檢測、診斷,找到故障發生的原因。維修人員根據系統的構成將故障部件拆除,將剩下的正常部件構成一個功能有所降低的系統繼續運行或將備用的正常部件裝入,重新起動系統運行。但此時,發生故障時執行的算法(程式)已被破壞,系統重起後必須重新運行算法(程式)甚至重新裝入算法(程式)。而容錯系統中上述人的工作絕大部分由系統自行完成。
容錯的基本技術是冗餘(redundancy)及其管理、故障檢測與診斷和系統狀態的維護與恢復。冗餘概念中,從方式上可分為靜態、動態冗餘;從種類上可分為時間、空間冗餘,從對象上可分為器件、部件、模組、系統、數據冗餘。下圖出容錯計算技術的基本分類:
故障檢測與診斷
故障檢測與診斷就是當系統部件的故障引起算法執行發生錯誤時,能發現並確定其具體位置的技術,它是容錯系統首先要解決的問題。故障檢測與診斷技術的主要內容有三個:故障檢測、故障隔離(在故障導致系統不可恢復的損壞之前,將故障的影響封閉起來)和故障診斷。其技術評估的主要標準有:故障的復蓋率、診斷率和對故障的反應時間(平均值)。它們分別代表故障檢測能力、故障的定位能力和檢測與診斷的實時性。這項技術分為在線上或脫機方式,可以用硬體、軟體或固件實現。
靜態冗餘
靜態冗餘又稱故障禁止,其基本思想是利用多個部件或系統以固定的結構和運行方式同時執行相同的功能,利用多個一致的結果來禁止掉某些故障部件或系統的錯誤結果。其墓本的模型如下圖:
從系統容錯運行和可靠性的角度來說,靜態冗餘不需要其它容錯功能(如檢測與診斷、恢復等等)就可滿足要求。靜態冗餘技術的難點在它的表決機構可靠性與同步問題。而它的最大缺點就是當系統運行一定的時間後由於故障子系統多於正常子系統使系統的可靠性小於單個子系統的可靠性,因此靜態冗餘一般要與其它容錯技術結合使用。靜態冗餘的主要優點是系統在故障條件下對外界的快速回響性,對於某些極快速回響要求的實時套用要採用靜態冗餘技術。
靜態冗餘技術的實現方式主要有雙重冗餘和TMR(三重冗餘)。均可以在系統的任何層次上用任何方法實現。
動態冗餘
由於靜態冗餘的固有缺陷,大部分套用領域都採用動態冗餘技術。動態冗餘的基本思想是:系統不僅能保證故障的禁止,而且還要定位並自動切換故障子系統或改變系統的結構,不讓故障部分的積累造成一系統的錯誤動作。動態冗餘以高覆蓋率、快回響時間的故障檢測與診斷技術為基礎。其關鍵技術是重組、恢復和重構。動態冗餘為在線上修復(系統運行中修復)提供了必要條件。
動態冗餘不僅使系統的可靠性大大提高,而且極大地縮短了故障部件的修復時間,使系統的可用性也大大提高。所以動態冗餘是容錯計算技術中最主要最常用的技術,也是最複雜的技術。對於新型系統結構和分散式處理動態冗餘又具有新的內容。
容錯方法
軟體容錯方法
70年代中期出現了新的容錯方法。它採用多處理器和特別設計的作業系統來達到容錯。避免了上一代容錯系統處理器的主從關係及連線至所有子系統的雙路徑。更重要的是.新方法在商業套用中第一次提供在線上修理功能,即故障部分的移出和更換都不影響正在運行的應用程式。具有這種性能的系統的主要結構特點包括處理器重複、雙存取輸入輸出控制器、冗餘電源系統和一個以信息為基礎的作業系統。
這種以軟體為基礎的容錯系統以檢查點為最基本的恢復機能。每一個運行中的進程都在另一處理器上備有完全相同但並不活動的後備進程。如原進程內發現不能恢復的故障,則後備進程可用來替換它。原進程定時將關鍵計算點通過訊息方式送到後備進程。若作業系統發現原進程失效。則“喚醒”後備進程,後備進程可從最後一個檢查點開始恢復計算。
檢查點是一個簡單概念,但其有效地在套用系統中使用則需有高度的編程技巧和對系統的詳細了解,而且對計算機系統的資源消耗比正常大25%。
硬體容錯方法
由於軟體的費用越來越高,停機時間造成的損失越來越大,維修投資越來越多,而硬體的成本越來越低,故以Stratus為代表的硬體容錯技術在80年代初開始出現。
某些計算機廠商為了提高產品可靠性,採用了如“磁碟鏡象”、“數據重讀”等一些容錯技術,但這些產品都還不能稱作是容錯系統。真正意義上的硬體容錯系統應該具有以下5個特性:
(1)雙匯流排體系結構;
(2)雙重冗餘部件:CPU、記憶體、通訊子系統、磁碟、電源……;
(3)自檢邏輯排除故障;
(4)自動隔離故障部件;
(5)在線上更換故障部件。
具體地說就是,雙匯流排及雙重冗餘部件確保了系統在某一部分發生故障時仍能“生存”下去並不會降低或失去其處理性能;每個模組在運行時都不斷檢查自身的狀態,如果發現任何部件發生故障,系統會將該部件自動隔離。並立即將故障信息自動通過遠程服務網,轉達到用戶服務中心,此時其餘部件仍將會繼續運行;能線上更換或擴充部件,而不影響系統的正常運行。
當系統發生故障時,硬體容錯結構不需要從故障中恢復。任何故障元件都自動退出操作,而系統則利用冗餘部分繼續運行,用戶不需要設計恢復程式。對用戶來說,硬體容錯計算機和傳統計算機一樣,並不必為容錯而特別編程。
技術發展
計算機系統的可靠性一直為人們所關注。早期由繼電器和真空管構成的計算機經常不能正常工作。隨著人們對計算機依賴程度的不斷提高,系統的可靠性就顯得更為重要。提高計算機的可靠性有避錯和容錯兩種方法。避錯實際上是不容錯的,乃是保守設計方法的產物,它以採用高可靠性零件、最佳化路線等質量控制管理的方法,來減低出錯的可能性,但即使是最仔細的避錯設計,故障也總有一天會出現,從而導致系統失效。容錯是指在硬體或軟體故障產生的情況下,仍能將指定的算法準確地完成,同時不使性能降低,即用冗餘的資源使計算機具有容忍故障的能力。冗餘一般可分為暫存性和物理性兩種,前者通過重複執行來實現,後者則使用重複的硬體和軟體。
1965年美法合作的公共電話網路開始使用計算機控制的電子交換系統。由於服務的特性,系統要求在每40年內中斷運行時問不能超過2小時。為了達到這樣高的技術指標,生產商討所有的關鍵性元件,如處理器和存儲體等,進行重複配置。系統運行時使用一組子系統,而重複的一組則處於“熱備份”狀態或和在線上的一組子系統同步運行。系統檢測出故障的方式有兩種:比較子系統產生的結果;或每一組都由自檢模組組成(自檢模組是自重複和能夠互相比較結果的)。
計算機系統發展到今天,已走出條件優越的機房,進入各種複雜的環境之中。航天、航空、過程控制、銀行商業事務處理、軍事工程等領域的套用,使計算機系統的可靠性問題成為整個大系統能否生存的關鍵問題。因此,人們對計算機系統的可靠性(reliability)、可用性(availability)和可維護性(maintainability)(簡稱RAM)進行了深入、細緻的研究,提出種類繁多的RAM技術和理論,開發出多種高RAM的計算機系統。
容錯計算技術隨計算技術發展而發展,特別是與VLSI的發展密切相關。早期50~60年代,計算機硬體由分立元件組成,與之相應,容錯計算技術集中在器件級和基本功能部件級(運算器、控制器、暫存器等)進行研究,提出了大量的方法來提高邏輯電路的可靠性,大部分檢錯、糾錯碼也在這期間廣泛套用。用冗餘的思想解決容錯問題在這期間也提了出來。70年代VLSI技術的出現及迅猛發展,推動了整個計算機工業的發展,改變了人們對計算機的許多基本觀念,也使容錯技術發生了大轉變。計算機器件功能愈加複雜,其內部的冗餘邏輯和功能的容錯設計使它的可靠性和可測試性有所提高。容錯的重點轉向處理機、子系統甚至系統級。同時,硬體價格的下降使得人們有能力更多地套用冗餘技術來獲得高RAM的系統。此外,並行處理、多機系統、分散式系統等的發展給容錯計算提供了新的研究領域和課題。