葉雷 賈海鵬
【摘要】本文簡要地對冗余備份的必要性作出了初步分析,并以自動修復為設計目標建立模型并加以論證。
【關鍵詞】VHDL:Very high speed integraded circuit Hardware Description Language;超高速集;成電路硬件描述語言;FPGA:Field-Programable Gate Array;現(xiàn)場可編程門陣列
1.緒論
在當前電子產(chǎn)品日新月異的飛速發(fā)展下,社會生產(chǎn)力得到了急速的提升。在我們享受電子產(chǎn)品帶來的各種便利的同時,其副作用也開始逐步凸現(xiàn)出來,最明顯的外在表現(xiàn)就是隨著電子產(chǎn)品集成度越來越高,速度越來越快,功能變得極度細化,各種專業(yè)的單功能芯片越來越多,這使得最終的產(chǎn)品的組成也不斷趨于復雜化。
復雜化的副作用就是因元器件的種類和數(shù)量(包含集成電路內(nèi)部的晶體管)不斷攀升造成產(chǎn)品可靠性的不斷下降。依據(jù)串聯(lián)結構的可靠性模型計算可以使用下面的公式:
λGs=ΣNiλGiΠQi
其中各參數(shù)的定義如下:
λGs:設備總失效率;
Ni:第i種元器件數(shù)量;
λGi:第i種元器件的通用失效率;
ΠQi:第i種元器件的通用質(zhì)量系數(shù)。
從公式中我們可以看出,隨著元器件的種類和數(shù)量增加,設備的失效率呈非線性變化,也就是說,即使每一個元器件的可靠性都很高,在數(shù)量的堆積下也會導致設備整體的可靠性下滑。這里有一個簡單的例子,那就是美國的航天飛機,據(jù)說上面的每一個元器件的可靠性都達到了六個9(99.9999%)以上,但整個航天飛機的可靠性卻不足50%。同理,現(xiàn)在的集成電路的使用的硅單晶純度達到14個9甚至更高,卻因為集成的晶體管規(guī)模動輒數(shù)以億計,從而使得良品率過于低下而導致造價高昂。
解決這個問題一般依靠兩種方式,其一是繼續(xù)通過提升單個組成部分或元器件的可靠性來完成,另一種則是在這種串聯(lián)模型的基礎上增加一個或多個并聯(lián)模型,從而降低整體故障的風險。我們在這里只討論后一種,這種方式通常也被稱作冗余備份設計。
2.冗余備份設計的歷史和發(fā)展
冗余備份設計起源很早,已經(jīng)很難考證其由來,但是真正讓人們大規(guī)模認識到其必要性還是來自19世紀后期發(fā)生的“愛迪生電燈事件”。事件起源于發(fā)明大王愛迪生發(fā)明白熾燈后,為了推廣白熾燈成立了專門的公司花大力氣進行推銷,初期卻應者寥寥。通過分析發(fā)現(xiàn),愛迪生的電燈公司采用的是這樣的控制模型,如圖1所示。
圖1
這是一個標準的串聯(lián)模型,從發(fā)電廠到控制開關再到一長串用戶,所經(jīng)過的各個節(jié)點都是串在一起,用戶沒有獨立的控制權,所有的電燈開關都掌握在發(fā)電廠的手里。同時,盡管愛迪生的白熾燈在走出實驗室的時候已經(jīng)擁有了上千小時的壽命,但是在龐大而脆弱的串聯(lián)結構下表現(xiàn)糟糕,失效率和接入用戶數(shù)量成正比,結果就是只要其中一處發(fā)生故障(斷路),整個線路就全部癱瘓,令維修人員疲于奔命。
為了解決這個問題,愛迪生的電燈公司將控制模型作了這樣的改進如圖2所示。
圖2
經(jīng)過改進以后,用戶接入模式由串行改為并行,單個用戶故障(斷路)不會影響其他用戶,大大提升了整個配電系統(tǒng)的可靠性。這也成為現(xiàn)代供電系統(tǒng)的基本模型。從某種意義上來講,假設用戶的功能和用電級別相同,就可以把并聯(lián)在同一供電網(wǎng)絡內(nèi)的用戶視作互為備份。這就好比幾條相互獨立的生產(chǎn)線生產(chǎn)相同的產(chǎn)品時,其中一條故障,其余正常工作的生產(chǎn)線可以接替其任務繼續(xù)維持生產(chǎn),有必要的情況下,在建立生產(chǎn)線的同時就需要提前建立備用的生產(chǎn)線以備隨時接替故障的生產(chǎn)線。
這樣的備份模式最大的問題在于需要人工干預。也就是說,故障部分的工作任務需要人工參與,把它承擔的功能轉(zhuǎn)移到其他的備份上。在通常的情況下,這樣的備份方式當然沒有問題,但是在一些特殊情況下就不適合了,例如使用探測器在深海、火山或者外空間之類的區(qū)域執(zhí)行任務,或者在執(zhí)行特殊的軍事命令的時候,操作人員無法現(xiàn)場維修或與設備失去聯(lián)絡的情況下,就需要設備具有一定的自我修復的能力,以維持一些必需的基本功能的運行。這也是未來冗余備份設計的發(fā)展趨勢之一。
3.自動修復的冗余備份設計
需要具備自動修復的冗余備份功能,通常情況下應當滿足下面幾個條件:
(1)復雜度不宜過高,過于復雜的設計同樣會降低系統(tǒng)的可靠性,
(2)成本控制:冗余設計本身必定會帶來額外的成本,在不到萬不得已的情況下,盡可能減少冗余備份的數(shù)量;
(3)部件通用化:使用最大化設計的模式,讓每個獨立的功能模塊都具有完成或輔助完成其他功能模塊的能力,盡量避免使用專用元器件;
(4)根據(jù)使用環(huán)境,盡量裁減次要功能:從理論上講,理想的冗余備份就是制造一套或多套和原件相同的產(chǎn)品,用于隨時替換故障的部分,但這顯然不可能,也不現(xiàn)實。應當依據(jù)各個部分的重要等級和易損程度,對冗余設計的必要性作出評估。
設計具備自動修復的冗余備份功能,基本設計原則應當遵循下列原則:
(1)功能完善且獨立,可以完全代替故障模塊繼續(xù)運行;
(2)具有獨立的故障診斷電路,能與其他并行工作的功能模塊實時同步工作狀態(tài),以便隨時可以執(zhí)行功能移交的操作;
(3)具有防死鎖設計,以免出現(xiàn)相互判斷對方故障,造成系統(tǒng)鉗死;
(4)模塊之間采用電路相互隔離的措施,防止嚴重硬件故障造成災難擴散。
依據(jù)上述原則,設計出一個簡化的實驗方案,功能結構簡圖如圖3所示。
如圖3中所示,我們的目標是對兩個執(zhí)行單元進行控制,并且為了提高運行的穩(wěn)定性,對控制功能區(qū)作了冗余備份的設計,分別為功能區(qū)A和功能區(qū)B,因二者軟硬件功能結構完全相同,故采用模塊化設計,以便于生產(chǎn)和維護。從功能最小化的角度上看,正常運行的時候只需要一個功能模塊即可,出現(xiàn)故障時可以通過人工干預,更換故障功能模塊。然而在某些特定情況下,我們需要功能模塊迅速自動進行功能的移交轉(zhuǎn)移,在不中斷當前運行任務的情況下繼續(xù)工作,以達到自動修復的目標。在這種情況下,功能單元的設計可以遵循下面的設計方案來進行。
(1)主控單元
主控單元作為整個功能模塊的核心,應當具備兩個基本的功能模式,即工作模式和故障模式。
在處于工作模式的時候,必須在執(zhí)行對兩個執(zhí)行單元的控制任務的同時,依據(jù)執(zhí)行單元的反饋信息,對下一步的控制指令進行相應的調(diào)整,并執(zhí)行對看門狗電路的喂狗操作,在看門狗發(fā)出故障信號的時候,將故障信號通過通信單元將自檢結果發(fā)送出去,發(fā)送完畢后停止喂狗操作以關閉指令通道,交出對故障部分的功能控制權,嚴重的情況下自我封閉并通知電源,對本模塊進行斷電保護。
在處于故障模式的時候,只接收執(zhí)行單元的反饋信息,計算執(zhí)行單元的控制指令但不發(fā)送,需要實時對工作中的功能模塊進行監(jiān)視,分析對方發(fā)送來的自檢信號,一旦發(fā)現(xiàn)對方的自檢出現(xiàn)故障,立即開始進行喂狗操作,將控制執(zhí)行單元的指令發(fā)送出去,接替故障單元的功能,進入工作模式。
從上述的需求進行分析,主控單元為了保證系統(tǒng)工作的實時性,應當優(yōu)先采用具有并行處理能力的元器件,利用多個任務同時執(zhí)行的優(yōu)勢將故障造成的工作中斷壓縮到最小。在實時性要求不高的場合下,再考慮使用順序執(zhí)行的處理器或其他元器件。在本次的試驗中,采用CPLD作為主控單元的核心,利用可編程的VHDL語言的并發(fā)執(zhí)行的特點可以將各功能分解安排進不同的進程。如果需要的計算量比較大,可以將CPLD更換為容量更大、功能更多的FPGA。
(2)看門狗
看門狗的基本原理是計數(shù)器,利用喂狗信號來對計數(shù)器的計數(shù)值進行清零。在超出等待時間還沒有等到喂狗信號,計數(shù)器產(chǎn)生溢出信號,這個信號一方面用于通知主控單元,另一面用于關閉該看門狗所監(jiān)視的功能指令的使能,避免錯誤的指令被執(zhí)行單元所執(zhí)行??撮T狗可以使用獨立的專用元器件來構建,也可以將這部分功能集成到CPLD/FPGA內(nèi)部,以節(jié)約成本。
(3)緩沖器
緩沖器由帶有使能的驅(qū)動電路和隔離器件組成,以避免干擾或其他意外情況造成故障。隔離器件根據(jù)使用的環(huán)境不同有所差別,低電壓弱電流的情況下通??梢允褂霉怆婑詈掀?,高電壓強電流下則需要使用繼電器等元器件予以保護。
(4)通信單元
依據(jù)工作環(huán)境、運行指標等因素,可以選擇串行通信或并行通信,根據(jù)實際情況來選用通信器件,或直接使用自定義的通信協(xié)議,將通信功能也集成到CPLD/FPGA內(nèi)部,然后在外部使用電流差分、LVDS等方式完成接口之間的匹配。
以上述功能框架設計出的控制模型,經(jīng)過仿真驗證,基本上滿足了我們對控制目標不間斷切換控制的需求,在進一步完善軟件后,還可以實現(xiàn)兩個功能區(qū)各自執(zhí)行一個控制目標的半冗余設計,從而滿足部分損壞但不致命的情況,再度提高整個系統(tǒng)的可靠性。
當然,這種所謂的“修復”,從本質(zhì)意義上并不算是修復,只能是替換。因此,“自動修復”從廣義的角度上講,最終目標應當是融合生物技術,模仿生物本身擁有的生長恢復的能力來進行新陳代謝——從電子到仿生,還需要漫長的探索和研究。