《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > ATCA架構(gòu)中多網(wǎng)口后板的高效設(shè)計(jì)
ATCA架構(gòu)中多網(wǎng)口后板的高效設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2013年第1期
王 江
上海貝爾股份有限公司P&RD,上海200125
摘要: 介紹了多網(wǎng)口后板(RTM)的普通設(shè)計(jì)方案,提出了優(yōu)化解決方案,并從軟、硬件方面進(jìn)行了比較,并且描述了新方案在卸載CPU負(fù)荷、防止“中斷風(fēng)暴”等方面的創(chuàng)新性設(shè)計(jì)。
中圖分類(lèi)號(hào): TP399
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

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

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

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

 

 

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

參考文獻(xiàn)
[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)載。