彭嘉輝
摘要:在現代計算機快速發展并且對人們的工作和生活影響越來越大的前提下,人們對于計算機系統容錯的需求就越來越強烈,要求計算機系統有良好的容錯性能,進而保障計算機系統的正常運行。因此,需要對計算機系統軟硬件的容錯方法進行分析,進而探索出幾種較為實用的計算機容錯系統的體系結構,希望能夠促進計算機系統容錯性能的大幅提升。
關鍵詞:計算機容錯系統;容錯技術;硬件;軟件;冗余
計算機容錯系統是由若干臺計算機按照一定的容錯原則通過資源冗余,配置構成冗余結構的計算機系統,當系統出現一定的運行性故障時,能夠依賴系統內駐的容錯能力保證系統連續正確地執行其程序并輸出正確的結果。對于計算機系統來講,其軟硬件都有著不同的容錯方法,因此,我們需要對軟硬件的容錯方法進行分別的研究,進而促使計算機在實際的運行過程當中實現其軟硬件系統容錯性能的提高。
1硬件錯誤的容錯方法
計算機可能出現的硬件錯誤有永久性錯誤、間歇性錯誤和瞬態錯誤。永久性錯誤是指由于計算機硬件老化、電路元件短路等現象而產生的故障,一旦出現則影響系統原有功能,需通過更換元器件來恢復系統正常工作;瞬態錯誤的發生率是非常頻繁的,在所有系統錯誤中所占的比例也是最大的,對整個系統可靠性和安全性的影響也是最大的;間歇性錯誤介于以上兩種錯誤之間,針對系統的可靠性設定了一定的閾值,當瞬態錯誤的發生頻率超過該閾值時表現為間歇性錯誤。
計算機容錯系統為了更好地容錯性能,必須是冗余的。不同形式的冗余資源可分為不同的冗余方法,主要包括硬件冗余、信息冗余、時間冗余、線程冗余等集中冗余類型。
1.1硬件冗余
根據冗余程度的不同,硬件冗余還可分為部分冗余和完全冗余。完全冗余可分為冷備、溫備、熱備以及雙工這四種工作方式。以雙系統為例,可分為雙系統冷備、雙系統溫備、雙系統熱備和雙系統雙工。其中,在對故障導向實時性和安全性要求較高的系統中首選方式是應用雙系統雙工,而其他三種方式可以應用在一般性系統中,即對故障診斷時間和切換時間沒有過高要求的情況。此外,三模、四模的冗余技術的應用也非常廣泛。
目前,基于動態可重構現場可編程門陣列(FPGAs)在硬件冗余技術中是研究關注度較高的。這種方法可根據抽象層次分為2層:硬件層(DL)和配置層(CL)。
目前,學界在計算機系統容錯技術研究中,對硬件冗余方法的研究最多,花費也相對較大,但是其在提升計算機系統的可靠性和安全性方面的效果也非常良好,技術相對比較成熟,并在很多場合都已實踐運用。因此,我們在計算機系統容錯中,一般首選硬件冗余。
1.2信息冗余
信息冗余是指通過在原始數據中添加若干冗余位以實現故障檢測或故障恢復,這種容錯技術包括檢錯編碼和糾錯編碼。檢錯編碼可以檢測出錯誤,糾錯編碼可以檢測錯誤,也可以糾正錯誤。編碼技術通常應用于傳輸、儲存、處理信息環節中。比較典型的信息冗余技術有奇偶校驗碼、循環冗余校驗碼、海明碼及其擴展編碼方式等。
相對其他冗余方法,信息冗余技術的優點有:速度快,對冗余信息的處理與原始數據在同一時間段內,無需額外占用時間成本,在數據處理時檢錯、糾錯并行完成,從而避免由于錯誤恢復操作引發的遲延;代價較小,僅需支付少許額外的編碼電路或字節和計算開銷,與其他硬件冗余相比開銷要小得多,因此,在實際進行計算機系統性能提升的過程中,可以根據實際的需要來選擇采用硬件冗余技術還是信息冗余技術。
常見的信息冗余技術有ABFT、RED-FECMechanism、check-sum EDAC。
1.3時間冗余
在對實時性要求不高,且沒有實施硬件冗余的系統中,可以采用時間冗余的方法來保證系統可靠性,實現容錯機制。在具體應用過程中,時間冗余技術體現為1種方式,分別為:Re-execution of the task on the Same Hardware(RSHW),指同一硬件基礎上的同一數據在不同的時間片內執行相同的指令集;利用表決電路和數據延遲單元,把這兩者結合處理后的數據根據延遲的多少拷貝出對應的版本,并傳送到表決器驚醒表決判斷,通過對比得出最佳結果。
時間冗余技術的關鍵點在延遲時間的大小,也就是說若延遲時間過小可能會導致表決器的輸入內容出現錯誤,無法實現系統容錯;若延遲時間過大,會導致時間成本增大,那么容錯機制就是去了原本減小延遲的意義。因此,在時間冗余技術的應用中,一定要對系統的時間要求進行合理的判斷,進而設置合理的時間冗余,以實現計算機系統容錯性能的提高。
1.4硬件線程冗余
硬件線程冗余是指在多線程處理器中使用容錯手段實現線程級容錯,具體方法是在多線程系統中把主線程拷貝成多個同樣的線程并行處理數據,然后通過比較處理結果來實現容錯。目前常見的線程冗余技術有基于CMP的容錯即芯片級冗余多線程、冗余多線程RMT、基于微線程的粗粒度超標量容錯MTB等。
目前在硬件多線程冗余中研究最多的是主副線程通信方式,通過對中間結果隊列的共享使線程的執行速度加快,并實現容錯。線程冗余技術對硬件成本的要求不高,而且容錯效果好,時間開銷小,實時性較高,因此硬件線程冗余技術是一種高效可行的硬件容錯方法。
2軟件錯誤的容錯方法
關于計算機系統的可靠性的評價與分析,需將其軟件的可靠性因素考慮進去,但是對這方面的研究卻不太成熟,因此相比硬件容錯方法效率較低,導致在評估系統的可靠性是忽略軟件的失誤率。人為設計引發的軟件錯誤一直存在,在一定的輸入刺激下產生各種故障,尚無法用統一數學模型進行描述。軟件錯誤的容錯方法通常有恢復快方法、軟件多樣性方法、防衛式程序設計方法。也可以通過改善軟件工程、計算機平臺環境和構造異常處理模塊等方面來提高容錯水平。
計算機系統出現故障后恢復的策略通常可分為前向恢復和后向恢復。前向恢復是指使系統繼續向前運行,采取措施是系統連貫,彌補故障造成的不連貫,繼續計算;后向恢復是指將系統還原到之前的正確階段,再重新運行計算。
2.1N-version programming方法
N版本軟件容錯技術是將軟件的各個版本交由不一樣的開發團隊進行開發,用不同的開發語言和方法,獨立的設計工具和環境,以減少不同版本之間出現相關錯誤的幾率。此時各個版本的軟件設計開發不能違背以下幾個原則:總體設計目標要一致,避免錯誤恢復;各個模塊之間要有統一的標準接口;軟件設計過程中模塊內部對外透明,要進行封裝;各個版本的軟件開發必須獨立。
2.2恢復塊方法
恢復塊方法的具體過程是配置有主塊和后備塊,其功能是相同的,首先是主塊開始運行,計算結果,若出現故障,則運行一后備塊,再計算結果進行測試,未通過則再運行一后備塊,直到測試通過,若測試—直未通過,則說明產生了不可恢復的故障。在設計開發過程中應盡量保證主塊與各后備塊之間的獨立性,以降低它們之間的錯誤的相關性。此外,測試計算結果的程序有著至關重要的地位,必須毫無錯誤。
2.3防衛式程序設計方法
防衛式程序設計方法是一種保守的容錯機制,它不利用任何傳統的容錯方法就能實現系統容錯。它的具體過程是這樣的:若程序在運行過程中出現錯誤,就會調用程序自帶的檢測代碼和恢復代碼進行處理,將系統返回到上一個正確的狀態,如此,就實現了對程序中出現的錯誤的檢測,錯誤類型以及影響范圍的估計,并且最終實現錯誤恢復。
3結語
隨著極端及系統的規模不斷擴大,越來越多的應用部署在計算機系統中,對系統可靠性的要求也越來越高,因此需要更加完善的容錯技術來保障系統的可靠性和安全性。目前的硬件冗余容錯方法成本較高,耗能較多,物理空間占用較大;信息冗余容錯方法中針對瞬態錯誤的容錯技術還有待深入研究;時間冗余容錯方法不僅使延遲增大,對永久性錯誤沒有好的容錯機制;并行線程冗余容錯方法在合理分配線程資源方面沒有完善的解決方案;軟件冗余技術相對硬件更加落后;恢復塊方法中必須保證測試程序的準確性;防衛式程序設計方法尚缺乏完整的理論依據。因此無論哪種容錯技術,雖然已經取得了很多研究成果,但是還有不足,仍有許多問題值得進一步探索。