《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > ATCA架構中多網(wǎng)口后板的高效設計
ATCA架構中多網(wǎng)口后板的高效設計
來源:電子技術應用2013年第1期
王 江
上海貝爾股份有限公司P&RD,上海200125
摘要: 介紹了多網(wǎng)口后板(RTM)的普通設計方案,提出了優(yōu)化解決方案,并從軟、硬件方面進行了比較,并且描述了新方案在卸載CPU負荷、防止“中斷風暴”等方面的創(chuàng)新性設計。
中圖分類號: TP399
文獻標識碼: 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)標準歷史上最重大的革新。它的設計初衷是針對電信運營級應用,為下一代通信及數(shù)據(jù)網(wǎng)絡應用提供一個高性價比、模塊化、兼容性強、擴展性好的硬件構架,為新一代電信運營設備提供一個“可靠、可用、適用”的解決方案。

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

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

    地址寄存器和數(shù)據(jù)寄存器成對出現(xiàn),每一對寄存器對應一條I2C總線。當處理器需要讀取SFP模塊內(nèi)的一個寄存器時,可以將寄存器地址設置到地址寄存器,再設置指令寄存器為讀操作。如果操作正常,則操作完成后,F(xiàn)PGA會把讀取的數(shù)據(jù)存放在對應的數(shù)據(jù)寄存器中;如果操作出現(xiàn)異常,則FPGA會設置中斷狀態(tài)寄存器的相關比特位反映異常情況;當處理器需要寫SFP模塊內(nèi)的一個寄存器時,先把待寫數(shù)據(jù)寫入數(shù)據(jù)寄存器,并將寄存器地址寫入地址寄存器,再設置指令寄存器為寫操作。如果寫操作異常,F(xiàn)PGA也會設置中斷狀態(tài)寄存器的相關比特位反映異常情況。
    中斷狀態(tài)寄存器反映了每條I2C總線的工作狀態(tài)以及模塊本身的狀態(tài),例如:I2C總線工作是否正常、讀寫操作是否成功完成、模塊被拔出或者插入等。中斷屏蔽寄存器定義了各個狀態(tài)變化是否要觸發(fā)中斷上報機制。
    指令寄存器在不同比特位針對每條I2C總線設置了讀、寫、輪詢和重啟4種指令(讀寫和重啟指令在前文中已有描述)。輪詢指令是指:如果SFP模塊存在且使能,則FPGA會不停地讀取SFP模塊中的寄存器(寄存器地址由地址寄存器指定),并將讀回的數(shù)據(jù)存放在數(shù)據(jù)寄存器中,供處理器隨時調用;同時可以設置中斷,如果本次讀的數(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)寄存器獲得。假設處理器通過直接輪詢這個寄存器來獲得鏈路信息。如果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),仍然誤認為連接,將導致實際業(yè)務的中斷。而為了偶然出現(xiàn)的一次狀態(tài)變化,而頻繁地去輪詢查看低速設備的狀態(tài),耗費大量的CPU資源是不值得的。
    因此,在新的軟件設計中,由FPGA接管處理器的輪詢?nèi)蝿?,以中斷方式上報給處理器,使處理器只要在系統(tǒng)初始化時去獲得SFP模塊和鏈路狀態(tài),運行過程中幾乎不需要在I2C總線上浪費任何CPU資源。
    另外,對某些中斷類型,例如模塊的插拔、鏈路狀態(tài)等,F(xiàn)PGA設計了防止“中斷風暴”的功能。“中斷風暴”是指短時間內(nèi)有大量的中斷產(chǎn)生,直接影響處理器的效率甚至業(yè)務。例如有時SFP模塊或網(wǎng)線沒有插緊或者對端設備的網(wǎng)線虛插,可能引發(fā)狀態(tài)的頻率變化,觸發(fā)大量中斷產(chǎn)生。
    因為在系統(tǒng)軟件中,中斷的優(yōu)先級大于任何線程或任務,當中斷過多時,處理器就忙于處理中斷而無暇顧及正常的數(shù)據(jù)處理和業(yè)務。而FPGA會根據(jù)“中斷風暴寄存器”規(guī)定的時間間隔,統(tǒng)計相同類型的中斷數(shù)量,上報第一個發(fā)生的中斷和最后一個發(fā)生的中斷,隱瞞中間過程產(chǎn)生的中斷,從而提高了處理器效率。時間間隔的設置需要根據(jù)應用仔細權衡,一般設置為50 ms左右。此外,運行在處理器上的軟件發(fā)現(xiàn)某類中斷頻繁上報時,還可以通過設置中斷屏蔽寄存器禁止這類中斷,并輸出消息提醒用戶。
    圖4是針對一個SFP模塊的FPGA的軟件流程。首先,F(xiàn)PGA讀入模塊的存在寄存器和使能寄存器,然后判斷模塊是否存在和使能,如果模塊不存在或者不使能則跳過;否則,根據(jù)指令寄存器中的指令進行相關操作。如果沒有設置指令,則跳過;如果是寫指令,則根據(jù)地址寄存器和數(shù)據(jù)寄存器的值進行寫操作;如果是讀指令,則根據(jù)地址寄存器中的數(shù)值進行讀操作,并將讀取的數(shù)值存放在數(shù)據(jù)寄存器中;如果設置了輪詢,則不斷地讀取設定的寄存器,更新數(shù)據(jù)寄存器中的數(shù)值。每種操作完成后都會調用中斷子程序,例如讀取存在寄存器后,F(xiàn)PGA會把當前數(shù)值和前一次的值進行比較,如果不同,則根據(jù)中斷屏蔽寄存器的設置觸發(fā)中斷;輪詢操作時數(shù)據(jù)寄存器的數(shù)值發(fā)生更新也可觸發(fā)中斷。

 

 

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

參考文獻
[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)授權禁止轉載。