《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > ATCA架構(gòu)中多網(wǎng)口后板的高效設(shè)計
ATCA架構(gòu)中多網(wǎng)口后板的高效設(shè)計
來源:電子技術(shù)應(yīng)用2013年第1期
王 江
上海貝爾股份有限公司P&RD,上海200125
摘要: 介紹了多網(wǎng)口后板(RTM)的普通設(shè)計方案,提出了優(yōu)化解決方案,并從軟、硬件方面進行了比較,并且描述了新方案在卸載CPU負(fù)荷、防止“中斷風(fēng)暴”等方面的創(chuàng)新性設(shè)計。
中圖分類號: TP399
文獻標(biāo)識碼: A
文章編號: 0258-7998(2013)01-0020-03
Efficient design of RTM with multiple ports based on ATCA
Wang Jiang
P&RD,Alcatel-Lucent Shanghai Bell Co.,Ltd.Shanghai 200125,China
Abstract: The paper first introduces normal design of RTM boards with multiple ports, and then the optimized new design is presented. Through comparing them on the aspects of software and hardware, it finally describes some innovatory ideas of the new design, including CPU offloading, "interrupt flooding" preventing and so on.
Key words : ATCA;SFP;interrupt;RTM

    先進的電信計算平臺ATCA(Advanced Telecom Computing Architecture)是國際工業(yè)計算機制造者聯(lián)合會PICMG(PCI Industrial Computer Manufacturer's Group)標(biāo)準(zhǔn)歷史上最重大的革新。它的設(shè)計初衷是針對電信運營級應(yīng)用,為下一代通信及數(shù)據(jù)網(wǎng)絡(luò)應(yīng)用提供一個高性價比、模塊化、兼容性強、擴展性好的硬件構(gòu)架,為新一代電信運營設(shè)備提供一個“可靠、可用、適用”的解決方案。

    ATCA不僅能因其總線的開放性而降低電信設(shè)備總體部署成本,而且最大限度地提升了不同廠商產(chǎn)品之間的兼容性。ATCA設(shè)備在降低網(wǎng)絡(luò)建設(shè)和維護成本的同時,還可以通過更換板卡快速支持新應(yīng)用和新業(yè)務(wù),靈活性更強。由于這些優(yōu)點,ATCA架構(gòu)不僅在電信運營領(lǐng)域得到了廣泛應(yīng)用,也逐漸在儀器儀表、軍事和航空航天等領(lǐng)域受到關(guān)注。
1 多網(wǎng)口后板的設(shè)計所面臨的問題
    符合ATCA標(biāo)準(zhǔn)的系統(tǒng)由一個或多個熱插拔線卡(即模塊)組成,這些線卡也稱為現(xiàn)場可替換單元FRU(Field Replacable Unit)。在基于ATCA的網(wǎng)絡(luò)設(shè)備中,為了提供數(shù)量多且性能高的網(wǎng)絡(luò)接口,往往在前板安裝先進的網(wǎng)絡(luò)處理器NPU(Network Process Unit)或CPU,而在同槽位的后板(RTM)上布置多個網(wǎng)絡(luò)接口連接器(如RJ45或者SFP插槽),用于連接外部網(wǎng)線或光纖。
    RJ45接口最高支持1 000 Mb/s的以太網(wǎng)速率,接口電纜是銅電纜,不適應(yīng)電信設(shè)備“光進銅退”的發(fā)展趨勢。而SFP(Small Form-factor Pluggable transceiver)插槽由于既能容納RJ45接口的電模塊(Copper SFP),也能容納FiberJack接口的光模塊(Fiber SFP),靈活性好,速率可達10 Gb/s,因此越來越得到設(shè)計師的青睞。但是如何管理這些SFP模塊,對設(shè)計師而言,在硬件和軟件方面,面臨如下問題:
    (1)硬件方面:因為ATCA標(biāo)準(zhǔn)[1]規(guī)定,前板通往后板和背板的連接器分為3個區(qū)域:區(qū)域1、區(qū)域2和區(qū)域3。其中,區(qū)域1用于電源和管理信號,連接到背板;區(qū)域2負(fù)責(zé)前板之間的數(shù)據(jù)通路,也連接到后板;區(qū)域3用于前后板的連接,信號自定義,而前后板的連接無需經(jīng)過背板,采用共面互連技術(shù)。區(qū)域3最多允許安放3個高速連接器,因為前后板之間的連接信號數(shù)量有限,所以在利用這些互聯(lián)信號時需要精打細(xì)算?;ミB信號越少,就越能節(jié)省昂貴的高速連接器,降低產(chǎn)品成本。按照SFP標(biāo)準(zhǔn)[2],每個SFP模塊都提供了一個符合I2C標(biāo)準(zhǔn)的管理接口,通過I2C接口,系統(tǒng)可以獲得模塊的型號、參數(shù)和工作狀態(tài)等信息。
    如果把每個模塊的I2C接口總線都連接到如圖1所示的前板,則會造成浪費。因為一個I2C接口需要占用2個互連引腳,I2C占用的互連引腳越多,留給其他模塊的互連引腳就越少,而實際上有相當(dāng)多的互連引腳被用于傳輸以太網(wǎng)的收發(fā)信號,才能保證足夠的數(shù)據(jù)通路帶寬。
    另外,所有同類型SFP模塊的I2C接口的器件地址都是相同的,而I2C標(biāo)準(zhǔn)[3]規(guī)定每條I2C總線上不能存在兩個相同的器件地址,所以當(dāng)它們與CPU相連時,必須經(jīng)過I2C復(fù)用器(因為處理器通常沒有足夠的I2C總線接口)。I2C復(fù)用器可以采用專用的芯片實現(xiàn)(如PHILIPS公司的PCA9548A,支持將一個I2C接口擴展為8個I2C接口),也可以用CPLD或者FPGA實現(xiàn)。
    (2)軟件方面:I2C是一種低速串行總線,頻率一般為100 kHz或400 kHz。以100 kHz為例,如果不考慮器件的響應(yīng)時間,讀取一個字節(jié)大約耗費40個I2C時鐘周期(約0.4 ms)。因為處理器和I2C復(fù)用器之間只有一個I2C接口相連,處理器不得不通過逐個輪詢的方式去查詢各個SFP模塊的狀態(tài)變化,占用了大量的CPU資源;如果用中斷方式,SFP模塊標(biāo)準(zhǔn)中又沒有定義模塊的中斷引腳,硬件架構(gòu)上不提供支持。所以,如何有效管理各個SFP模塊而又盡可能低地耗費CPU指令是軟硬件設(shè)計面對的一大難題。對以上問題,本文提出下面的優(yōu)化解決方案。
2 優(yōu)化的解決方案
    為了解決硬件和軟件面臨的設(shè)計難題,本文從硬件架構(gòu)入手,借助于CPLD或FPGA芯片,輔以高效的軟件設(shè)計,開發(fā)出了一套行之有效的解決方案。
2.1 硬件設(shè)計
    為了減少I2C接口所占用的前后板互連引腳數(shù)目,本文將執(zhí)行I2C復(fù)用功能的芯片放到了后板上,這樣只有一條I2C總線通過互連區(qū)域3(即只占用2根互連引腳),極大地節(jié)省了互連引腳的數(shù)目。另一方面,I2C復(fù)用器不采用商業(yè)專用芯片,而是采用CPLD或者FPGA,可為軟件設(shè)計提供較佳的靈活性(如提供中斷機制)。在本設(shè)計中,采用了FPGA。
    假設(shè)后板上安放了8個SFP插槽,與優(yōu)化前的設(shè)計相比,優(yōu)化后的設(shè)計節(jié)省了14個互連引腳。為了進一步提升處理器訪問后板SFP模塊的速率,本文用PCIe總線取代I2C總線,如圖2所示。連接FPGA和處理器,PCIe總線占用4根互連引腳,雖然比I2C總線多占2個引腳,但是速率提升到了2.5 Gb/s,遠高于I2C的速率,使處理器和I2C復(fù)用器之間的速率瓶頸問題得以解決。選擇PCIe的另一個好處是:如果采用中斷方式,則PCIe不需要專用的中斷引腳,因為它是依賴帶內(nèi)消息中斷的。此外,連接FPGA和8個SFP插槽的8組I2C總線互相獨立,所以FPGA可以并行地訪問8個SFP模塊,比串行訪問的效率提升了8倍。

2.2 軟件設(shè)計
    如何處理高速處理器與低速外圍總線之間的關(guān)系,是軟件設(shè)計的主要任務(wù)。處理器的速度一般在幾百到上千兆赫茲,而I2C總線的速度一般最高為400 kHz(普通的只有100 kHz),兩者完全不在一個數(shù)量級上。所以,F(xiàn)PGA不但要承擔(dān)擴展I2C總線的任務(wù),而且要承擔(dān)管理低速總線設(shè)備的任務(wù),使處理器有更多的時間處理計算量大、優(yōu)先級高的任務(wù)。因此,軟件設(shè)計的主要工作在FPGA上。
    FPGA中集成了2個成熟的IP核:一個是PCIe內(nèi)核,工作于從設(shè)備(End Point)模式,1路通道(x1 Lane);另一個是I2C內(nèi)核,工作于主設(shè)備(Master)模式,各條總線互相獨立。FPGA軟件的設(shè)計需要考慮兩方面的因素:一是高效,盡可能降低CPU的負(fù)擔(dān);二是支持熱插拔,因為SFP模塊隨時都可能被插入或拔出,導(dǎo)致I2C總線上正在運行的協(xié)議隨時會被中斷而產(chǎn)生異常。
    FPGA中的寄存器設(shè)計以及與SFP模塊之間的控制連線如圖3所示。根據(jù)SFP標(biāo)準(zhǔn)[2],每個模塊會引出一個存在(Prt)信號和一個使能(En)信號,F(xiàn)PGA中的使能(En)寄存器通過使能信號控制每個模塊是否工作。存在(Prt)寄存器通過讀取存在信號反映每個SFP插槽中是否插入了SFP模塊。重啟寄存器用于重啟各條I2C總線,特別是當(dāng)I2C協(xié)議正在總線上運行時,模塊被突然拔出,I2C總線因為缺少客戶端的響應(yīng)而產(chǎn)生異常,此時會在中斷狀態(tài)寄存器反映異常情況,并且自動重啟I2C總線,以便下次模塊插入時可以正常工作。CPU也可以主動設(shè)置指令寄存器來重啟某條I2C總線。

    地址寄存器和數(shù)據(jù)寄存器成對出現(xiàn),每一對寄存器對應(yīng)一條I2C總線。當(dāng)處理器需要讀取SFP模塊內(nèi)的一個寄存器時,可以將寄存器地址設(shè)置到地址寄存器,再設(shè)置指令寄存器為讀操作。如果操作正常,則操作完成后,F(xiàn)PGA會把讀取的數(shù)據(jù)存放在對應(yīng)的數(shù)據(jù)寄存器中;如果操作出現(xiàn)異常,則FPGA會設(shè)置中斷狀態(tài)寄存器的相關(guān)比特位反映異常情況;當(dāng)處理器需要寫SFP模塊內(nèi)的一個寄存器時,先把待寫數(shù)據(jù)寫入數(shù)據(jù)寄存器,并將寄存器地址寫入地址寄存器,再設(shè)置指令寄存器為寫操作。如果寫操作異常,F(xiàn)PGA也會設(shè)置中斷狀態(tài)寄存器的相關(guān)比特位反映異常情況。
    中斷狀態(tài)寄存器反映了每條I2C總線的工作狀態(tài)以及模塊本身的狀態(tài),例如:I2C總線工作是否正常、讀寫操作是否成功完成、模塊被拔出或者插入等。中斷屏蔽寄存器定義了各個狀態(tài)變化是否要觸發(fā)中斷上報機制。
    指令寄存器在不同比特位針對每條I2C總線設(shè)置了讀、寫、輪詢和重啟4種指令(讀寫和重啟指令在前文中已有描述)。輪詢指令是指:如果SFP模塊存在且使能,則FPGA會不停地讀取SFP模塊中的寄存器(寄存器地址由地址寄存器指定),并將讀回的數(shù)據(jù)存放在數(shù)據(jù)寄存器中,供處理器隨時調(diào)用;同時可以設(shè)置中斷,如果本次讀的數(shù)值不同于上次讀的數(shù)值,則產(chǎn)生中斷并通知處理器。輪詢功能為系統(tǒng)軟件監(jiān)測后板對外的以太網(wǎng)接口的鏈路狀態(tài)提供了強大的支持。因為在系統(tǒng)運行過程中,以太網(wǎng)鏈路可能被斷開或連接,鏈接狀態(tài)隨時可能變化。例如,速率從百兆變?yōu)槭祝驈那д鬃優(yōu)榘僬?;模式從全雙工變?yōu)榘腚p工。
    許多SFP模塊的鏈路狀態(tài)可以從其中的一個物理層狀態(tài)寄存器獲得。假設(shè)處理器通過直接輪詢這個寄存器來獲得鏈路信息。如果I2C工作頻率為100 kHz,則讀取一個寄存器耗時約0.4 ms(8個SFP模塊共耗費約3.2 ms);在一個主頻為1 GHz的處理器中,輪詢一次占用的CPU資源高達3 200 000個CPU時鐘周期,處理器為了及時獲得模塊和鏈路狀態(tài),不得不頻繁地(如每隔0.1 s)去輪詢一次,明顯降低了處理器的工作效率。然而,模塊和鏈路狀態(tài)不是一直在變化的,可能數(shù)小時或者幾周有一次變化,但是處理器如果不能及時捕獲這一次變化,就可能給系統(tǒng)運行造成致命的后果。例如鏈路斷開了沒有及時發(fā)現(xiàn),仍然誤認(rèn)為連接,將導(dǎo)致實際業(yè)務(wù)的中斷。而為了偶然出現(xiàn)的一次狀態(tài)變化,而頻繁地去輪詢查看低速設(shè)備的狀態(tài),耗費大量的CPU資源是不值得的。
    因此,在新的軟件設(shè)計中,由FPGA接管處理器的輪詢?nèi)蝿?wù),以中斷方式上報給處理器,使處理器只要在系統(tǒng)初始化時去獲得SFP模塊和鏈路狀態(tài),運行過程中幾乎不需要在I2C總線上浪費任何CPU資源。
    另外,對某些中斷類型,例如模塊的插拔、鏈路狀態(tài)等,F(xiàn)PGA設(shè)計了防止“中斷風(fēng)暴”的功能。“中斷風(fēng)暴”是指短時間內(nèi)有大量的中斷產(chǎn)生,直接影響處理器的效率甚至業(yè)務(wù)。例如有時SFP模塊或網(wǎng)線沒有插緊或者對端設(shè)備的網(wǎng)線虛插,可能引發(fā)狀態(tài)的頻率變化,觸發(fā)大量中斷產(chǎn)生。
    因為在系統(tǒng)軟件中,中斷的優(yōu)先級大于任何線程或任務(wù),當(dāng)中斷過多時,處理器就忙于處理中斷而無暇顧及正常的數(shù)據(jù)處理和業(yè)務(wù)。而FPGA會根據(jù)“中斷風(fēng)暴寄存器”規(guī)定的時間間隔,統(tǒng)計相同類型的中斷數(shù)量,上報第一個發(fā)生的中斷和最后一個發(fā)生的中斷,隱瞞中間過程產(chǎn)生的中斷,從而提高了處理器效率。時間間隔的設(shè)置需要根據(jù)應(yīng)用仔細(xì)權(quán)衡,一般設(shè)置為50 ms左右。此外,運行在處理器上的軟件發(fā)現(xiàn)某類中斷頻繁上報時,還可以通過設(shè)置中斷屏蔽寄存器禁止這類中斷,并輸出消息提醒用戶。
    圖4是針對一個SFP模塊的FPGA的軟件流程。首先,F(xiàn)PGA讀入模塊的存在寄存器和使能寄存器,然后判斷模塊是否存在和使能,如果模塊不存在或者不使能則跳過;否則,根據(jù)指令寄存器中的指令進行相關(guān)操作。如果沒有設(shè)置指令,則跳過;如果是寫指令,則根據(jù)地址寄存器和數(shù)據(jù)寄存器的值進行寫操作;如果是讀指令,則根據(jù)地址寄存器中的數(shù)值進行讀操作,并將讀取的數(shù)值存放在數(shù)據(jù)寄存器中;如果設(shè)置了輪詢,則不斷地讀取設(shè)定的寄存器,更新數(shù)據(jù)寄存器中的數(shù)值。每種操作完成后都會調(diào)用中斷子程序,例如讀取存在寄存器后,F(xiàn)PGA會把當(dāng)前數(shù)值和前一次的值進行比較,如果不同,則根據(jù)中斷屏蔽寄存器的設(shè)置觸發(fā)中斷;輪詢操作時數(shù)據(jù)寄存器的數(shù)值發(fā)生更新也可觸發(fā)中斷。

 

 

    本設(shè)計采用軟、硬件相結(jié)合(包括SFP模塊頻繁插拔、鏈路狀態(tài)頻繁變化等),經(jīng)過長時間連續(xù)集成測試,同時觀察CPU的利用率,后板模塊管理任務(wù)所占的CPU利用率始終低于0.1%,而且處理器沒有漏過任何一次模塊和鏈路的狀態(tài)變化。測試證明,優(yōu)化后的設(shè)計不但可以長時間可靠工作,而且大幅度降低了處理器在管理多網(wǎng)口后板上的指令開銷,提高了處理器的利用率。本文介紹的優(yōu)化后的后板的軟、硬件設(shè)計架構(gòu)不但適合于ATCA標(biāo)準(zhǔn)的后板,也可以應(yīng)用到CompactPCI標(biāo)準(zhǔn)和其他自定義后板的設(shè)計中。

參考文獻
[1] PICMG.PICMG R3.0 advancedTCA base specification[Z]. 2008.
[2] SFF Committee.SFF-8472 specification for diagnostic monitoring interface for optical transceivers[EB/OL]Rev 11,2010.9,ftp://ftp.seagate.com/sff/SFF-8472.PDF.
[3] PHILIPS.The I2C-bus specification version 2.1[Z].2000.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。