秦 娟 姬葉華
中國(guó)電子科技集團(tuán)公司第三十二研究所
近年來,隨著信息系統(tǒng)在軍用惡劣環(huán)境下應(yīng)用的復(fù)雜性和質(zhì)量要求的不斷提高,計(jì)算機(jī)技術(shù)已向小型化、高集成度、高可用、低功耗高環(huán)保的設(shè)計(jì)方向發(fā)展,這樣就給了像CPLD 和FPGA 這樣的可編程邏輯器件極大的用武之地,PLD 的設(shè)計(jì)靈活性和資源豐富性,不僅使得整個(gè)系統(tǒng)物理空間精簡(jiǎn)緊湊,而且提高了整個(gè)系統(tǒng)的可靠性,實(shí)現(xiàn)了系統(tǒng)的軟硬件一體化。本文結(jié)合一個(gè)計(jì)算機(jī)系統(tǒng),簡(jiǎn)單介紹CPLD 在該熱備份系統(tǒng)中的切換設(shè)計(jì)和實(shí)現(xiàn)。
隨著計(jì)算機(jī)信息系統(tǒng)的深入發(fā)展和廣泛應(yīng)用,需要的功能越來越多,用途也越來越多樣化,帶來的設(shè)計(jì)實(shí)現(xiàn)上的復(fù)雜性也不斷提高。為適應(yīng)當(dāng)今信息系統(tǒng)軍用惡劣環(huán)境,實(shí)現(xiàn)用戶對(duì)高性能、高可靠、高可用、抗惡劣環(huán)境的計(jì)算機(jī)信息系統(tǒng)需求,保證系統(tǒng)任務(wù)工作的連續(xù)性和實(shí)時(shí)性,盡可能地把因硬件、軟件、人為造成的故障對(duì)工作的影響降低到最低程度,因此,在復(fù)雜系統(tǒng)中常常采用備份方式進(jìn)行工作。在計(jì)算機(jī)信息系統(tǒng)中,常用的備份方式有熱備份和冷備份兩種。熱備份工作方式可以理解成在線備份,即當(dāng)前主系統(tǒng)對(duì)外提供支持服務(wù)而備份系統(tǒng)空轉(zhuǎn)待命,一旦主系統(tǒng)出現(xiàn)故障,備份系統(tǒng)快速接管,以保證任務(wù)遷移的連續(xù)性和實(shí)行性。冷備份工作方式可以理解為離線備份,即當(dāng)前主系統(tǒng)正常工作對(duì)外提供支持服務(wù)而備份系統(tǒng)不工作,對(duì)任務(wù)實(shí)時(shí)性要求不高的系統(tǒng)來說,冷備份具有簡(jiǎn)單易操作的特點(diǎn)。
本文基于一個(gè)通用計(jì)算機(jī)雙系統(tǒng),結(jié)合可編程邏輯器件CPLD,介紹熱備份切換功能的硬件設(shè)計(jì)和實(shí)現(xiàn)。
雙機(jī)熱備份系統(tǒng)就是在一個(gè)計(jì)算機(jī)信息系統(tǒng)中提供主備雙機(jī),在系統(tǒng)正常情況下,主機(jī)作為工作機(jī)為信息系統(tǒng)提供支持,備份機(jī)則監(jiān)視工作機(jī)的運(yùn)行情況(工作機(jī)也同時(shí)監(jiān)視備份機(jī)是否正常,有時(shí)備份機(jī)因某種原因出現(xiàn)異常,工作機(jī)可盡早通知操作人員解決,確保下次切換的可靠性)。當(dāng)工作機(jī)出現(xiàn)異常,無法支持信息系統(tǒng)運(yùn)行時(shí),備份機(jī)則主動(dòng)接管工作機(jī)的工作,繼續(xù)支持信息系統(tǒng)的運(yùn)行,使得信息系統(tǒng)能夠不間斷地運(yùn)行,確保了系統(tǒng)的穩(wěn)定性、高可靠性和可用性。
通用計(jì)算機(jī)熱備份系統(tǒng)由主系統(tǒng)、備系統(tǒng)構(gòu)成。主系統(tǒng)由1 個(gè)處理器模塊和1 個(gè)電源模塊組成,備系統(tǒng)由1 個(gè)處理器模塊和1 個(gè)電源模塊組成,主備系統(tǒng)對(duì)外提供一致的硬件接口,包括網(wǎng)絡(luò)、USB、串口等。系統(tǒng)模塊安裝在一塊主、備物理隔離的背板上,主備系統(tǒng)的健康狀態(tài)信號(hào)、切換控制信號(hào)等通過背板互連,并引入各自處理器模塊的可編程邏輯器件CPLD 中進(jìn)行控制設(shè)計(jì)。系統(tǒng)框圖如圖1所示。
該雙機(jī)熱備份系統(tǒng)中的切換是通過軟件自動(dòng)切換和按鈕手動(dòng)切換兩種方式來操作實(shí)現(xiàn)的,軟件自動(dòng)切換實(shí)現(xiàn)從主系統(tǒng)到備系統(tǒng)的切換,按鈕手動(dòng)切換實(shí)現(xiàn)從備系統(tǒng)到主系統(tǒng)的切換,如圖2 所示。
圖1 雙機(jī)熱備份系統(tǒng)框圖
圖2 系統(tǒng)切換方式
圖3 軟件切換流程
對(duì)于軟件實(shí)現(xiàn)的由主系統(tǒng)到備系統(tǒng)的切換,是當(dāng)檢測(cè)軟件檢測(cè)到主系統(tǒng)發(fā)生故障時(shí),通過設(shè)置主備系統(tǒng)之間互連的控制信號(hào),啟動(dòng)切換流程,實(shí)現(xiàn)主備之間的切換。切換流程圖見圖3,說明如下:
主系統(tǒng)發(fā)生故障;
主系統(tǒng)硬件平臺(tái)設(shè)置健康狀態(tài)信號(hào)異常;
備系統(tǒng)獲知主系統(tǒng)健康狀態(tài)信號(hào)異常時(shí)通知備系統(tǒng)軟件;
備系統(tǒng)軟件設(shè)置切換使能信號(hào)有效;
主系統(tǒng)硬件平臺(tái)收到切換使能信號(hào)后完成對(duì)外接口的關(guān)閉,備系統(tǒng)則完成硬件資源的啟用和主系統(tǒng)相應(yīng)任務(wù)的加載運(yùn)行;
切換完成。
對(duì)于按鈕實(shí)現(xiàn)的備系統(tǒng)到主系統(tǒng)的切換,是整個(gè)系統(tǒng)檢測(cè)到按鈕輸入信號(hào)后,主備系統(tǒng)對(duì)各自的軟硬件資源進(jìn)行切換的操作實(shí)現(xiàn)。為優(yōu)化系統(tǒng)的工作狀態(tài),簡(jiǎn)化操作,設(shè)定按鈕切換優(yōu)先級(jí)最高,即啟動(dòng)按鈕切換后,在系統(tǒng)重啟或復(fù)位前不可再進(jìn)行軟件自動(dòng)切換操作。按鈕切換的流程圖見圖4,說明如下:
主、備系統(tǒng)收到按鈕切換信號(hào)有效,進(jìn)入切換流程;
軟件設(shè)置主系統(tǒng)加載當(dāng)前任務(wù),硬件平臺(tái)完成對(duì)外接口的切換;
切換完成。
根據(jù)系統(tǒng)切換方案,軟件檢測(cè)故障,采用CPLD 判斷并設(shè)置硬件平臺(tái)之間的切換互連控制信號(hào),系統(tǒng)之間正確有效獲取當(dāng)前狀態(tài),從而指揮系統(tǒng)完成軟硬件資源的切換工作,保證系統(tǒng)的連續(xù)性和高可用性。
本系統(tǒng)中CPLD 可編程邏輯器件選用ALTERA 公司的EPM2210F324 芯 片。EPM2210F324 是MAX II 系 列中的高端產(chǎn)品,封裝是324-pin 的FBGA 芯片,它的資源情況如下表1 所示。
圖4 按鈕切換流程圖
表1 CPLD 資源參數(shù)表
EPM2210F324 高性能可編程邏輯器件主要特性如下:
提供快速傳播延遲和時(shí)鐘到輸出時(shí)間;
每邏輯陣列模塊(LAB)提供4 個(gè)全局時(shí)鐘;
多達(dá)8 個(gè)UFM Kbits 非易失性存儲(chǔ);
IO 引腳支持多種電平;
支持IEEE 1149.1 標(biāo)準(zhǔn)JTAG 接口;
接口兼容32 位/66MHz PCI 總線;
Pin-pin 的最小延時(shí)可達(dá)7ns。
在本系統(tǒng)中,充分利用可編程邏輯器件的豐富資源和編程設(shè)計(jì)的靈活性,實(shí)現(xiàn)健康狀態(tài)信號(hào)的采集、判斷以及切換使能信號(hào)的控制。
下面結(jié)合當(dāng)出現(xiàn)總線故障時(shí),如何對(duì)寄存器狀態(tài)進(jìn)行讀寫操作,完成狀態(tài)和信息的上報(bào)互傳功能。
設(shè)計(jì)時(shí)為標(biāo)識(shí)切換方式、健康狀態(tài)信號(hào)組以及切換使能信號(hào)組,在CPLD 中定義一個(gè)8 位的寄存器,寄存器的每一位即可對(duì)應(yīng)相應(yīng)信號(hào)狀態(tài)。例如下面的定義語句。
寄存器需要在系統(tǒng)復(fù)位時(shí)賦初始值,該初始值按照正常系統(tǒng)設(shè)定為0x2C,約定寄存器地址偏移為0x10000。設(shè)定有主、備電源提供給處理器模塊的健康狀態(tài)信號(hào)M_Power_sta、B_Power_sta,備系統(tǒng)輸出到主系統(tǒng)的切換使能信號(hào)Sys_wk 和主系統(tǒng)輸出到備系統(tǒng)的狀態(tài)信號(hào)sys_status,提供一組8 位的數(shù)據(jù)總線data 對(duì)寄存器進(jìn)行讀寫操作,通過Master_back 輸入信號(hào)對(duì)處理器模塊的位置進(jìn)行主備系統(tǒng)識(shí)別,定義一個(gè)But_Switch 表示按鈕輸入信號(hào)。CPLD 切換功能程序如下:
從上面的代碼可以看出,當(dāng)軟件檢測(cè)工作系統(tǒng)出現(xiàn)故障時(shí),就設(shè)置健康狀態(tài)寄存器中的相應(yīng)位,CPLD 通過查看健康狀態(tài)寄存器的狀態(tài)位查看系統(tǒng)是否異常,發(fā)現(xiàn)異常時(shí)則通過硬件平臺(tái)設(shè)置系統(tǒng)狀態(tài)信號(hào),通知備份系統(tǒng),備份系統(tǒng)由軟件判斷是否需要切換,通過軟件設(shè)置切換使能信號(hào)即系統(tǒng)有效信號(hào)后,該信號(hào)傳遞到主系統(tǒng)中,完成切換信息的交互,控制實(shí)現(xiàn)主備系統(tǒng)軟硬件資源的備份切換。
通過對(duì)系統(tǒng)中切換流程的分析和CPLD 內(nèi)系統(tǒng)狀態(tài)和信息上報(bào)互傳的切換設(shè)計(jì),實(shí)現(xiàn)了一個(gè)基本的系統(tǒng)雙機(jī)熱備份切換功能,其中CPLD 的運(yùn)用,就像畫龍點(diǎn)睛之筆,讓系統(tǒng)的輕量化、高可靠、高可用硬件設(shè)計(jì)變得更加輕便靈活。