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