姚惟琳 胡志良
中國(guó)電子科技集團(tuán)公司第三十二研究所,上海 200233
StarFabic總線技術(shù)在冗余計(jì)算機(jī)系統(tǒng)中的應(yīng)用
姚惟琳 胡志良
中國(guó)電子科技集團(tuán)公司第三十二研究所,上海 200233
針對(duì)冗余計(jì)算機(jī)系統(tǒng)中,處理器之間進(jìn)行高速數(shù)據(jù)傳輸?shù)男枨?,本文提出利用StarFabric總線技術(shù)實(shí)現(xiàn)實(shí)時(shí)高速數(shù)據(jù)傳輸通道的方案,設(shè)計(jì)并實(shí)現(xiàn)了StarFabric模塊。該設(shè)計(jì)成功應(yīng)用于磁浮運(yùn)行控制冗余計(jì)算機(jī)系統(tǒng),其傳輸時(shí)延滿(mǎn)足磁浮運(yùn)行控制系統(tǒng)要求。
StarFabric總線;冗余計(jì)算機(jī);高速數(shù)據(jù)傳輸
對(duì)于安全苛求系統(tǒng)等對(duì)可靠性要求比較高的應(yīng)用場(chǎng)所中,經(jīng)常采用多余度容錯(cuò)計(jì)算機(jī)提高計(jì)算機(jī)系統(tǒng)可靠性,冗余方式主要有二取二冗余、三取二冗余等。對(duì)于多處理器組成的冗余系統(tǒng),每個(gè)處理器產(chǎn)生的輸出和采集的輸入數(shù)據(jù)要與其它處理器的相應(yīng)數(shù)據(jù)進(jìn)行比較,從而可以判斷自身的狀態(tài),這樣就要求處理器之間數(shù)據(jù)傳輸快速,滿(mǎn)足實(shí)時(shí)性的要求?,F(xiàn)有的構(gòu)建多處理器間數(shù)據(jù)交換,大都采用CAN、以太網(wǎng)等技術(shù),但其延時(shí)不確定,性能不理想。對(duì)于實(shí)時(shí)性要求較高的應(yīng)用場(chǎng)合,例如軌道交通、航空航天等領(lǐng)域,基于以上技術(shù)的數(shù)據(jù)傳輸和比較模塊,不能滿(mǎn)足實(shí)時(shí)性和可靠性的要求。
StarFabric 技術(shù) 由StarGen 公司發(fā)起推廣,主要用于嵌入式多處理機(jī)系統(tǒng)模塊與模塊之間背板級(jí)交換互連和底板與底板之間機(jī)柜級(jí)互連,以每秒“吉比特”(Gb/s)級(jí)的速率傳遞數(shù)據(jù),且傳輸延遲確定,實(shí)時(shí)性較好。StarFabric 具有拓?fù)浣Y(jié)構(gòu)簡(jiǎn)單、組網(wǎng)方便、傳輸速率高、可擴(kuò)展性等優(yōu)點(diǎn),技術(shù)比較成熟且成本較低。
本文設(shè)計(jì)并實(shí)現(xiàn)了基于StarFabric總線的高速通信模塊。磁浮交通運(yùn)行控制計(jì)算機(jī)系統(tǒng)采用三取二冗余架構(gòu),利用該模塊實(shí)現(xiàn)了處理器之間的高速數(shù)據(jù)傳輸,該冗余計(jì)算機(jī)系統(tǒng)已成功應(yīng)用于上海磁浮嘉定試驗(yàn)線。
StarFabric是協(xié)議開(kāi)放的開(kāi)關(guān)互連技術(shù)中的一種,StarGen公司提出,得到了Dolphin、Agere、SVA、SIEMENS等20多個(gè)公司的支持。針對(duì)嵌入式計(jì)算機(jī),形成了PICMG2.17標(biāo)準(zhǔn)。StarFabric技術(shù)的應(yīng)用主要針對(duì)多處理器系統(tǒng),模塊與模塊之間、背板級(jí)交換互連以及底板與底板之間、系統(tǒng)級(jí)互連。
StarFabric有如下優(yōu)點(diǎn):
速度快:物理層分別使用4對(duì)622Mbps低壓差分信號(hào)線進(jìn)行全雙工的接收和發(fā)送,每條鏈路的帶寬可達(dá)2.5Gbps。其中協(xié)議效率89%,采用8B/10B編碼,數(shù)據(jù)帶寬為1.77Gbps。
可靠性高:硬件支持錯(cuò)誤監(jiān)測(cè)和上報(bào),實(shí)現(xiàn)點(diǎn)到點(diǎn)的CRC效驗(yàn)和錯(cuò)誤重傳。當(dāng)單方向的4對(duì)差分信號(hào)線中的某些失效時(shí),鏈路層可以檢測(cè)和重組,系統(tǒng)自動(dòng)以碎鏈路方式工作,見(jiàn)圖1。雖然這樣會(huì)降低帶寬,但提高了可用性和可靠性。
圖1 StarFabric的鏈路重組
服務(wù)質(zhì)量高:支持輸出緩存、分類(lèi)服務(wù)的虛通道和基于信用的流控機(jī)制。支持多種服務(wù)類(lèi)型,同步、異步、多播和專(zhuān)用幀。可以根據(jù)數(shù)據(jù)傳輸性質(zhì)和帶寬要求,動(dòng)態(tài)的預(yù)留和分配通道帶寬,已分配的帶寬在未使用時(shí)也可被其他服務(wù)類(lèi)型的數(shù)據(jù)傳輸使用。
結(jié)構(gòu)簡(jiǎn)單:StarFabric互連構(gòu)架的組成主要包括交換設(shè)備和橋節(jié)點(diǎn)設(shè)備。交換設(shè)備和橋節(jié)點(diǎn)設(shè)備主要由交換芯片和橋節(jié)點(diǎn)芯片組成。橋節(jié)點(diǎn)芯片實(shí)現(xiàn)PCI總線和StarFabric總線之間的橋接。交換芯片是StarFabric網(wǎng)絡(luò)中實(shí)現(xiàn)交換功能,負(fù)責(zé)完成StarFabric數(shù)據(jù)幀在不同端口之間的轉(zhuǎn)發(fā)。
延遲確定:每片PCI-to-StarFabric芯片協(xié)議轉(zhuǎn)換時(shí)間<0.5us,StarFabric交換芯片的交換延遲<1us。
兼容性好:100%兼容PCI協(xié)議,物理層接口符合IEEE1596.3規(guī)范TIA/EIA-644低壓差分信號(hào)標(biāo)準(zhǔn),兼容現(xiàn)有連接器(CPCI、RJ45等)和線纜(CAT5類(lèi)線)。
磁浮交通運(yùn)行控制系統(tǒng)計(jì)算機(jī)采用三取二冗余結(jié)構(gòu),如圖2所示。三個(gè)互為冗余的處理器通道A、B、C采用相同的處理器和IO硬件。每個(gè)通道輸入的數(shù)據(jù)會(huì)傳輸給其他2個(gè)通道,每個(gè)處理器會(huì)對(duì)3個(gè)通道的數(shù)據(jù)進(jìn)行比較,3通道數(shù)據(jù)中2個(gè)或2個(gè)以上一致的數(shù)據(jù)為有效數(shù)據(jù)。同樣,每個(gè)通道的輸出數(shù)據(jù)以及一部分計(jì)算處理數(shù)據(jù)也需要傳給其他2個(gè)通道進(jìn)行比較,并進(jìn)行3取2仲裁。
圖2 磁浮交通運(yùn)行控制系統(tǒng)計(jì)算機(jī)冗余結(jié)構(gòu)
每個(gè)通道配置一個(gè)StarFabric模塊,每個(gè)通道的處理器與StarFabric模塊通過(guò)PCI背板連接,三個(gè)通道間通過(guò)StarFabric模塊相互連接。連接采用點(diǎn)對(duì)點(diǎn)方式,即每個(gè)模塊均擁有獨(dú)立的通道連接到其他兩個(gè)模塊,在任何一個(gè)組件出故障時(shí),不會(huì)影響另兩個(gè)組件的通信。
StarFabric模塊主要由一片PCI-to-Fabric協(xié)議芯片(SG2010)和一片StarFabric交換芯片(SG1010)構(gòu)成,如圖3所示。PCI-to-Fabric協(xié)議芯片內(nèi)部包含PCI接口控制單元和兩路冗余的高速串行收發(fā)控制器。交換芯片負(fù)責(zé)協(xié)議芯片與外部StarFabric節(jié)點(diǎn)的通信。
圖3 StarFabric模塊組成框圖
PCI接口及總線轉(zhuǎn)換電路主要將復(fù)雜的PCI總線協(xié)議轉(zhuǎn)化為StarFabric總線,該功能電路STARGEN公司生產(chǎn)的SG2010芯片實(shí)現(xiàn)。該芯片支持33MHz/32bits的CPCI協(xié)議V2.3。該芯片可將復(fù)雜的CPCI總線協(xié)議轉(zhuǎn)化為高速串行的總線協(xié)議。
在本設(shè)計(jì)中,可以實(shí)現(xiàn)兩種編址模式,一種是采取傳統(tǒng)的PCI系統(tǒng)中的地址路由來(lái)實(shí)現(xiàn),另一種是采用解析幀頭的路徑路由方式。這兩種編址方式通過(guò)PCI-Fabric網(wǎng)關(guān)功能和PCI-PCI透明橋功能的使用模式來(lái)確定,共分成有橋功能的根模式、有橋功能的葉模式以及網(wǎng)關(guān)模式三種基本模式,本設(shè)計(jì)中在模塊上設(shè)置撥動(dòng)開(kāi)關(guān)來(lái)控制根/葉及有/無(wú)橋功能。
有橋功能的根模式下,SG2010的PCI接口必須連接到第一方總線上,如圖4所示。兩個(gè)鏈路接口可傳輸?shù)刂仿酚傻膸蚵窂铰酚?多播幀。這里的橋和網(wǎng)關(guān)成為PCI總線上的兩個(gè)功能設(shè)備。這兩種功能的配置空間可通過(guò)PCI總線,用Type0配置事務(wù)處理來(lái)訪問(wèn)。被配置為根的SG2010負(fù)責(zé)初始化時(shí)交換網(wǎng)絡(luò)的枚舉,并建立PCI等級(jí)樹(shù)結(jié)構(gòu)。
圖4 有橋功能的根模式
有橋功能的葉模式下,其中的一個(gè)鏈路接口必須連接到第一方總線上,兩個(gè)鏈路可傳輸?shù)刂仿酚傻膸蚵窂铰酚?多播幀,但另一個(gè)鏈路接口不屬于根的PCI等級(jí)樹(shù)結(jié)構(gòu)中,如圖5所示。這里的網(wǎng)關(guān)在邏輯上就像是橋的第二方總線上的一個(gè)PCI設(shè)備。缺省情況下,橋是完全透明的,連在橋的第二方總線上的所有設(shè)備包括網(wǎng)關(guān)對(duì)主機(jī)完全可見(jiàn),它們的資源空間被映射在全局PCI存儲(chǔ)空間中,但SG2010也能配置成對(duì)主機(jī)隱藏第二方總線的設(shè)備資源。
圖5 有橋功能的葉子模式
圖6 只有網(wǎng)關(guān)功能的模式
只有網(wǎng)關(guān)功能模式下,網(wǎng)關(guān)的PCI配置只能從PCI接口訪問(wèn),如圖6所示。在該模式中,傳輸PCI事務(wù)處理的唯一辦法是將PCI事務(wù)轉(zhuǎn)換成路徑路由或多播的幀,轉(zhuǎn)換是通過(guò)查詢(xún)段表和路徑表來(lái)實(shí)現(xiàn)的,這些查詢(xún)表可以是靜態(tài)的也可以是動(dòng)態(tài)的。當(dāng)SG2010的鏈路接口在網(wǎng)關(guān)模式中收到地址路由幀,它會(huì)將該幀丟棄,并且發(fā)出地址路由錯(cuò)誤事件的信號(hào)。
在根節(jié)點(diǎn)和葉子節(jié)點(diǎn)的設(shè)計(jì)中,需使每個(gè)組件可以根據(jù)用戶(hù)的需要配成根模式或葉子模式工作,但整個(gè)系統(tǒng)中必須有一個(gè)模塊以根模式工作。設(shè)定為根的SG2010負(fù)責(zé)系統(tǒng)中StarFabric交換網(wǎng)絡(luò)的初始化,初始化過(guò)程包括交換網(wǎng)絡(luò)的枚舉和交換網(wǎng)絡(luò)的發(fā)現(xiàn)。網(wǎng)絡(luò)枚舉即完成網(wǎng)絡(luò)中所有設(shè)備網(wǎng)絡(luò)標(biāo)號(hào)(FID)的分配,F(xiàn)ID實(shí)際上是各設(shè)備到根結(jié)點(diǎn)的一條路徑。網(wǎng)絡(luò)發(fā)現(xiàn)就是通過(guò)軟件檢測(cè)網(wǎng)絡(luò)中的設(shè)備及設(shè)備間連接關(guān)系的過(guò)程,最終建立交換網(wǎng)絡(luò)設(shè)備間的關(guān)系圖,并找出本地結(jié)點(diǎn)到其它設(shè)備的最短路徑。
設(shè)備本身需要設(shè)置這些配置寄存器值。這些配置寄存器值由設(shè)備向串行SROM預(yù)讀得到,串行SROM預(yù)讀在設(shè)備上電初始化的時(shí)候完成。該SROM存儲(chǔ)SG2010的上電配置信息。這里按照STARGEN公司的推薦,選用了AMTE公司的AMTE25640。其中,SG2010的網(wǎng)關(guān)功能地址設(shè)置寄存器是關(guān)鍵設(shè)置參數(shù),因?yàn)榻^大部分的應(yīng)用中都需要通過(guò)網(wǎng)關(guān)功能得到系統(tǒng)分配的存儲(chǔ)器空間和IO空間資源。
在硬件連接上,對(duì)SG2010進(jìn)行如下配置:
(1)總線為地址/數(shù)據(jù)復(fù)用;
(2)SG2010始終控制局部總線,不釋放總線控制權(quán);
(3)StarFabric總線所需要的時(shí)鐘是由CPCI時(shí)鐘得到的;
(4)SG2010的時(shí)鐘由66.208MHz和77.768MHz表貼晶振提供。
考慮到磁浮交通運(yùn)行控制系統(tǒng)冗余計(jì)算機(jī)為對(duì)可靠性的要求。這里使用擁有6個(gè)鏈路的SG1010來(lái)實(shí)現(xiàn)StarFabric總線的交換,支持錯(cuò)誤監(jiān)測(cè)和上報(bào),實(shí)現(xiàn)點(diǎn)到點(diǎn)的CRC效驗(yàn)和錯(cuò)誤重傳。
SG1010為了完成向系統(tǒng)配置軟件的資源分配請(qǐng)求,需要設(shè)置配置寄存器值。配置寄存器值由設(shè)備向串行SROM預(yù)讀得到。按照STARGEN公司的推薦,選用了AMTE公司的AMTE25640。
考慮磁浮交通運(yùn)行控制系統(tǒng)冗余計(jì)算機(jī)的可維修性要求,采用的前出線。StarFabric總線前出端口,串行了濾波電容和耦合電感,來(lái)防止信號(hào)的干擾??煽啃缘目紤],前出的四個(gè)端口,采用了冗余,雙路輸入雙路輸出,即使一個(gè)端口斷掉,另外一個(gè)端口會(huì)保證通信的正常進(jìn)行。
圖7 測(cè)試方法示意圖
針對(duì)磁浮交通運(yùn)行控制系統(tǒng)對(duì)實(shí)時(shí)性有較高要求,本文特針對(duì)StarFabric的傳輸時(shí)延進(jìn)行了測(cè)試。測(cè)試方法如圖7所示,作為根節(jié)點(diǎn)的A通道處理器通過(guò)StarFabric總線向B通道處理器發(fā)送一系列數(shù)字信號(hào),同時(shí)A通道處理器通過(guò)本通道數(shù)字輸出模塊將該信號(hào)輸出到示波器。B通道處理器通過(guò)StarFabric總線接收到數(shù)字信號(hào)后立即通過(guò)本通道數(shù)字輸出模塊將該信號(hào)輸出到示波器。A、B通道的數(shù)字信號(hào)在示波器上顯示,便可觀察出兩個(gè)信號(hào)之間的時(shí)間差,該時(shí)間差反映了A通道至B通道StarFabric的傳輸時(shí)延。本測(cè)試中,處理器采用PowerPC MPC8245,操作系統(tǒng)為Vxworks。
測(cè)試結(jié)果如表1所示,可以看出StarFabric的傳輸時(shí)延小于1ms,滿(mǎn)足磁浮交通運(yùn)行控制系統(tǒng)對(duì)實(shí)時(shí)性的要求。
表1 時(shí)延測(cè)試結(jié)果
本文設(shè)計(jì)并實(shí)現(xiàn)了一種StarFabric高速數(shù)據(jù)傳輸模塊,利用該模塊實(shí)現(xiàn)了三取二冗余計(jì)算機(jī)系統(tǒng)處理器之間的高速數(shù)據(jù)傳輸,具備可靠性高,傳輸延時(shí)小的優(yōu)點(diǎn)。該計(jì)算機(jī)系統(tǒng)已成功應(yīng)用于上海嘉定磁浮試驗(yàn)線。實(shí)驗(yàn)測(cè)試表明StarFabric數(shù)據(jù)傳輸延時(shí)小于1ms,滿(mǎn)足磁浮運(yùn)行控制系統(tǒng)對(duì)實(shí)時(shí)性的要求。
[1] StarGen, Inc..StarGen Fabric Programmer Manual [EB/OL].(2003-09-10).http//www.stargen.com.
[2] StarGen, Inc..SG2010 PCI to Starfabrie Bridge Data Sheet [EB/OL].(2003-08-12).http://www.stargen.com.
[3] StarGen, Inc..SG1010 Starfabrie Switch Data Sheet[EB/ OL].(2003-08-22).http//www.stargen.com.
10.3969/j.issn.1001-8972.2012.13.057