唐 敏,饒 垚,蔣東新,胡 偉,何 磊
(中國電子科技集團(tuán)公司 第四十四研究所,重慶 400060)
高速光纖總線技術(shù)研究
唐敏,饒垚,蔣東新,胡偉,何磊
(中國電子科技集團(tuán)公司 第四十四研究所,重慶 400060)
摘要:分析了幾種常見高速光纖總線技術(shù)在物理層、鏈路層和邏輯層上的相似性和差異性,且研究在實(shí)際工程應(yīng)用中的可用性和可靠性。
關(guān)鍵詞:光纖;總線技術(shù);可用性;可靠性
收稿日期:2015-01-15 2015-03-10
作者簡介:唐敏(1979-),男,重慶市人,工程師,從事FPGA開發(fā)設(shè)計(jì)和光傳輸設(shè)備研發(fā)方面工作;饒垚(1984-),女,重慶市人,工程師,從事光波分復(fù)用設(shè)備研發(fā)工作。
中圖分類號(hào):TN929.11
文獻(xiàn)標(biāo)識(shí)碼:識(shí)碼:A
文章編號(hào):編號(hào):1008-6390(2015)03-0167-04
基金項(xiàng)目:國家自然科學(xué)基金(60443004);重慶市教委科研項(xiàng)目(KJ120824)
在嵌入式系統(tǒng)中,高速光纖總線技術(shù)Ethernet、PCI-Express(PCIe)、RapidIO得到了越來越廣泛的應(yīng)用。它們都使用相似的串行解串器(SerDes)技術(shù),提供的吞吐量和時(shí)延性能都要超過寬的并行總線技術(shù)。隨著技術(shù)的不斷發(fā)展,其趨勢是采用通用SerDes技術(shù)。這意味著這些協(xié)議提供的原始帶寬不會(huì)有明顯的差異。相反,每種協(xié)議的用途將取決于如何使用帶寬。
一、高速光纖總線的物理層、鏈路層分析
在這三種高速光纖總線的物理層描述中,光纖接口標(biāo)準(zhǔn)均采用相似的結(jié)構(gòu),如圖1所示,由以下幾個(gè)主要功能模塊組成:邏輯控制器、數(shù)據(jù)緩存FIFO、串行解串器(SerDes)及光電信號(hào)轉(zhuǎn)換模塊(O/E和E/O模塊)。其中的SerDes采用適用于光纖傳輸?shù)?B/10B編碼或16B/20B編碼格式,O/E和E/O模塊實(shí)現(xiàn)光纖通道串行光信號(hào)和串行電信號(hào)之間的相互轉(zhuǎn)換。
圖1 高速光纖總線光纖接口標(biāo)準(zhǔn)
但是,這三種高速光纖總線標(biāo)準(zhǔn)在物理層/鏈路層的流量控制和誤碼恢復(fù)方面有很大的區(qū)別。Ethernet流量控制主要是在網(wǎng)絡(luò)層用軟件實(shí)現(xiàn)的,因?yàn)閷?duì)大型網(wǎng)絡(luò)這是最有效的處理方式。Ethernet唯一的物理層流量控制機(jī)制是PAUSE,它將中斷一定的傳輸時(shí)間。有限的物理層流量控制意味著Ethernet將采用丟棄數(shù)據(jù)包的方式處理擁塞。與之不同,PCIe和RapidIO的物理層流量控制機(jī)制可確保數(shù)據(jù)包的可靠傳送,每個(gè)包都會(huì)被發(fā)送器保留直到被確認(rèn)。如果檢測到發(fā)送誤碼,鏈路維護(hù)協(xié)議可確保發(fā)生誤碼的數(shù)據(jù)包得到重傳。PCIe保證采用數(shù)據(jù)鏈路層數(shù)據(jù)包(DLLP)發(fā)送,而RapidIO則使用控制符進(jìn)行發(fā)送。與DLLP不同的是,RapidIO控制符可以被嵌入數(shù)據(jù)包內(nèi),這樣即可實(shí)現(xiàn)低時(shí)延的RapidIO流量控制信息(如緩存占用量)交換,這將允許更快地發(fā)送更多的數(shù)據(jù)包。見圖2。
圖2 數(shù)據(jù)流量控制方式
在圖2-a部分,器件A不能向器件B發(fā)送任何數(shù)據(jù)包,因?yàn)槠骷﨎中的緩存是滿的。器件B在向器件A連續(xù)發(fā)送數(shù)據(jù)包。在圖2-b部分,器件B中的一個(gè)緩存空出來了,此時(shí)器件B必須告知器件A它能發(fā)送數(shù)據(jù)包了。在圖2-c的RapidIO描述部分,控制符被嵌入正在發(fā)送的數(shù)據(jù)包內(nèi)。圖2-d是描述PCIe的工作方式,可以看到DLLP在當(dāng)前數(shù)據(jù)包傳送完成之前是無法得到傳送的。因此與其他協(xié)議相比,RapidIO協(xié)議能以更低時(shí)延和更高吞吐量完成可靠的數(shù)據(jù)包傳送。將控制符嵌入數(shù)據(jù)包的能力使得RapidIO流量控制的其余功能比PCIe或Ethernet都要豐富。
除了更有效的流量控制外,將控制符嵌入數(shù)據(jù)包使得RapidIO具有PCIe和Ethernet目前無法提供的能力,如圖2所示??刂品€可以用來低時(shí)延和低抖動(dòng)地在整個(gè)RapidIO系統(tǒng)中分配事件。
圖3 高速光纖總線中事件分配
這一功能可以支持將公共實(shí)時(shí)時(shí)鐘信號(hào)分配到多個(gè)端點(diǎn)或?yàn)樘炀€系統(tǒng)分配定時(shí)信號(hào)、幀信號(hào)等應(yīng)用,還可以用于發(fā)送其他系統(tǒng)事件信息,實(shí)現(xiàn)很多其他光纖總線不能完成的實(shí)際工程需求。如圖3所示,PCIe的DLLP在每次通過交換機(jī)傳送時(shí)都會(huì)引入很大的時(shí)延和抖動(dòng)。相反,RapidIO協(xié)議允許在整個(gè)RapidIO架構(gòu)中分配信號(hào)時(shí)具有低于10個(gè)單位間隔(UI)的抖動(dòng)性能和每次交換低于50ns的時(shí)延性能,并且與數(shù)據(jù)包業(yè)務(wù)無關(guān)。
PCIe和Ethernet可以選擇擴(kuò)展各自的規(guī)范以允許事件獲得低時(shí)延的分配。引入類似控制符的概念對(duì)Ethernet來說是很大的進(jìn)步。Ethernet生態(tài)系統(tǒng)下已有幾家組織正在改進(jìn)存儲(chǔ)應(yīng)用中的Ethernet能力,其中就可能需要用到類似控制符的概念。Ethernet還準(zhǔn)備采用簡單的XON/XOFF流量控制來進(jìn)一步增強(qiáng)性能。
PCIe目前還不允許將DLLP嵌入TLP,因?yàn)檫@個(gè)概念不能兼容傳統(tǒng)的PCI/X總線操作。嵌入TLP的DLLP會(huì)產(chǎn)生沒有數(shù)據(jù)可以放置到傳統(tǒng)總線上的周期。PCIe端點(diǎn)可以工作在存儲(chǔ)-轉(zhuǎn)發(fā)模式,確保數(shù)據(jù)包在轉(zhuǎn)發(fā)給總線之前全部接收到,而代價(jià)是時(shí)延的顯著增加和吞吐量的降低。由于PCIe主要用于單處理器系統(tǒng)的板上互連,并且一直需要保持與傳統(tǒng)總線標(biāo)準(zhǔn)的兼容,所以PCIe最終也是不太可能允許DLLP被嵌入TLP的。
二、高速光纖總線的邏輯層分析
RapidIO、PCIe和Ethernet在邏輯層方面也有多個(gè)差異較大的地方,最明顯的區(qū)別是所支持的語義。表1是這三種標(biāo)準(zhǔn)在協(xié)議層的對(duì)比。
PCIe數(shù)據(jù)包支持基于地址的讀寫語義。在PCIe系統(tǒng)中,發(fā)起讀或?qū)懙膶?shí)體必須知道系統(tǒng)的全局存儲(chǔ)器映射圖中的目標(biāo)地址,這對(duì)控制平面應(yīng)用而言是很自然的一種方法。然而,這種對(duì)全局地址映射圖的依賴性也會(huì)導(dǎo)致難以發(fā)展的相關(guān)連動(dòng)軟件系統(tǒng)。PCIe協(xié)議也支持通過消息TLP的消息傳送。不過消息TLP只支持有限數(shù)量的功能,如中斷和復(fù)位信號(hào)。這點(diǎn)與Ethernet和RapidIO消息包有很大的不同,后者可用于進(jìn)程間通信。
與PCIe不同,建立在Ethernet物理層之上的軟件協(xié)議只支持消息語義。在發(fā)送消息時(shí),發(fā)送者只需知道接收地址。尋址機(jī)制是分層的,因此沒有哪個(gè)節(jié)點(diǎn)必須知道所有的地址。地址可能會(huì)隨系統(tǒng)發(fā)展而改變,支持軟件單元實(shí)現(xiàn)相互間的松散關(guān)聯(lián)。這種屬性對(duì)數(shù)據(jù)平面應(yīng)用來說是必要的。
表1 RapidIO、PCIe和Ethernet邏輯層對(duì)比
RapidIO同時(shí)支持讀/寫和消息語義。除了明顯的架構(gòu)優(yōu)勢和系統(tǒng)靈活性外,對(duì)讀/寫和消息處理的支持允許單路互連同時(shí)用于控制數(shù)據(jù)平面。因此RapidIO系統(tǒng)要比必須結(jié)合PCIe和Ethernet的系統(tǒng)更簡單,從而具有降低功耗和成本的優(yōu)勢。PCIe不可能在其數(shù)據(jù)包定義中合并進(jìn)程間通信消息語義,因?yàn)榕c傳統(tǒng)PCI和PCI-X總線的操作相沖突。PCIe是圍繞根聯(lián)合體概念設(shè)計(jì)的,這個(gè)聯(lián)合體只包含系統(tǒng)中的處理器。
目前大家對(duì)Ethernet通過遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)協(xié)議支持讀寫語義還存有爭議,該協(xié)議支持設(shè)備間進(jìn)行直接存儲(chǔ)器拷貝。不過,RapidIO和PCIe讀寫語義的效率要比RDMA高得多。RDMA協(xié)議建立在其他Ethernet協(xié)議之上,如TCP,并且每個(gè)數(shù)據(jù)包都需要大量的包頭開銷。與RapidIO讀/寫事務(wù)處理相比,RDMA的實(shí)現(xiàn)要在時(shí)延和帶寬方面付出大得多的代價(jià)。消息語義的一種可能應(yīng)用是其他協(xié)議的封裝。RapidIO擁有封裝各種協(xié)議的標(biāo)準(zhǔn)。這種封裝能力給系統(tǒng)設(shè)計(jì)人員提供了許多優(yōu)勢,包括即將大力推廣的RapidIO背板,這就保證了任何以后、傳統(tǒng)或是專有協(xié)議都可以用標(biāo)準(zhǔn)的RapidIO組件進(jìn)行封裝和傳送。例如,用于Ethernet封裝的現(xiàn)有RapidIO規(guī)范,設(shè)計(jì)人員就可在基于RapidIO的系統(tǒng)中使用基于Ethernet的軟件。雖然Ethernet也支持封裝,并且有多種封裝標(biāo)準(zhǔn)可以選擇,但是Ethernet協(xié)議層需要更多的字頭開銷,封裝效率大大低于RapidIO。曾經(jīng)有組織試圖對(duì)在PCIe結(jié)構(gòu)上實(shí)現(xiàn)各種協(xié)議封裝進(jìn)行標(biāo)準(zhǔn)化,但最終失敗,因?yàn)榕c傳統(tǒng)PCI/X總線密切相關(guān)的要求,很難將PCIe擴(kuò)展成適合嵌入式系統(tǒng)的結(jié)構(gòu)。
三、高速光纖總線的應(yīng)用分析
大多數(shù)設(shè)計(jì)人員都很熟悉基本的Ethernet協(xié)議特征。Ethernet是一種“盡力而為”的數(shù)據(jù)包傳送方式。在Ethernet協(xié)議物理層上建立的軟件協(xié)議提供信息的可靠傳輸,如TCP/IP、UDP等,因?yàn)榛贓thernet的系統(tǒng)一般在網(wǎng)絡(luò)層執(zhí)行流量控制,而不是在物理層,所以一般基于Ethernet的系統(tǒng)帶寬都要超配20%~70%。因此Ethernet最適合高時(shí)延的設(shè)備間應(yīng)用,或帶寬要求較低的板上/板間應(yīng)用。
PCIe針對(duì)板上互連的數(shù)據(jù)包可靠傳送作了優(yōu)化,這種場合的典型時(shí)延在毫秒數(shù)量級(jí)。PCIe協(xié)議交換的是事務(wù)處理層數(shù)據(jù)包(TLP),如讀和寫,以及被稱為數(shù)據(jù)鏈路層數(shù)據(jù)包(DLLP)的少量特殊鏈路信息。DLLP用于鏈路管理功能,包括物理層的流量控制。PCIe向上兼容傳統(tǒng)的PCI和PCI-X器件,這些器件認(rèn)為處理器位于總線層的頂部,因此PCIe具有能夠充分利用與PCI相關(guān)的軟件和硬件知識(shí)產(chǎn)權(quán)的優(yōu)勢。但是,也正因?yàn)檫@樣,傳統(tǒng)PCI總線對(duì)交換式PCIe協(xié)議有很大的約束。
RapidIO技術(shù)則針對(duì)嵌入式系統(tǒng)作了優(yōu)化,尤其是那些要求多處理單元合作的嵌入式系統(tǒng)。與PCIe一樣,RapidIO協(xié)議交換的是數(shù)據(jù)包和被稱為控制符的少量特殊鏈路信息。RapidIO兼具PCIe和Ethernet的特性。例如,RapidIO可以提供可靠和非可靠的數(shù)據(jù)包傳送機(jī)制。RapidIO也具有許多獨(dú)特的功能,因此最適合板上、板間以及短距離(小于100m)的設(shè)備間應(yīng)用。
四、高速光纖總線的可靠性分析
在大多數(shù)使用光纖總線系統(tǒng)的應(yīng)用中,對(duì)可靠性都有明確要求。系統(tǒng)需要誤碼檢測、誤碼提醒、故障元件分析與隔離以及恢復(fù)機(jī)制。從高層看,PCIe、RapidIO和Ethernet在所有這些方面都有相似的功能。不過在備份策略以及快速隔離系統(tǒng)使之免受故障元件影響的功能方面有很大差別。
起初,互聯(lián)網(wǎng)使用網(wǎng)絡(luò)層的軟件協(xié)議,在可能會(huì)經(jīng)歷嚴(yán)重?fù)p傷的網(wǎng)絡(luò)上提供可靠的通信。因此Ethernet的原始誤碼管理功能主要用于檢測、隔離和避免網(wǎng)絡(luò)中的新漏洞,而不是用于單個(gè)系統(tǒng)的魯棒性。系統(tǒng)可靠性通過網(wǎng)絡(luò)元件的復(fù)制來實(shí)現(xiàn)。后來的性能增強(qiáng)則增加了標(biāo)準(zhǔn)化的誤碼捕捉和誤碼提醒機(jī)制,并以此簡化網(wǎng)絡(luò)管理。
RapidIO具有與Ethernet類似的備份、誤碼捕捉和誤碼提醒功能。PCIe支持有限的備份策略,因?yàn)樗膫鬏攲酉抻跇錉罱Y(jié)構(gòu)。PCIe非透明橋接(NTB)允許兩個(gè)或多個(gè)樹狀結(jié)構(gòu)進(jìn)行通信,以實(shí)現(xiàn)1+1備份(也稱為1∶1備份)。但是NTB很難拓展到采用N+M備份機(jī)制的系統(tǒng)。理論上多根I/O虛擬化(MRIOV)可以用來在PCIe系統(tǒng)中支持N+M備份,但是其中N+M的總數(shù)量不超過8。然而,由于MRIOV系統(tǒng)中的子樹無法相互通信,從故障恢復(fù)可能要求系統(tǒng)中斷運(yùn)行來重新配置系統(tǒng),以便隔離故障元件,并采用新的元件。
與PCIe和RapidIO相比,Ethernet的誤碼檢測機(jī)制通常比較慢,因?yàn)镋thernet是針對(duì)全球范圍內(nèi)分布的網(wǎng)絡(luò)設(shè)計(jì)的。PCIe和RapidIO都有誤碼檢測和提醒機(jī)制,其時(shí)延要比Ethernet小得多。雖然PCIe和RapidIO都保證數(shù)據(jù)包的發(fā)送,但在誤碼條件下它們會(huì)棄包,以防止故障元件造成致命擁塞。
相反,RapidIO標(biāo)準(zhǔn)允許對(duì)誤碼做出特殊系統(tǒng)響應(yīng),如鏈路再學(xué)習(xí)。當(dāng)誤碼發(fā)生時(shí),系統(tǒng)會(huì)立即開始棄包,或者它會(huì)保留包,并允許擁塞發(fā)生。RapidIO使用“漏桶”式誤碼計(jì)數(shù)方法,并有兩個(gè)可配置門限。危險(xiǎn)門限能盡早提醒系統(tǒng)管理軟件鏈路上正在發(fā)生誤碼。失效門限用于觸發(fā)丟包以實(shí)現(xiàn)用戶定義的誤碼率。RapidIO誤碼管理的靈活性保證了嵌入式系統(tǒng)設(shè)計(jì)人員不斷變化的需求。
五、結(jié)語
Ethernet、PCIe和RapidIO是現(xiàn)在應(yīng)用最為廣泛的幾種高速光纖總線技術(shù),它們都基于相似的SerDes技術(shù),SerDes技術(shù)不再是這些技術(shù)的差異點(diǎn),而是它們使用可用帶寬的方式。每種技術(shù)都有最適合的專門應(yīng)用領(lǐng)域。
Ethernet最適合地理上分散的、具有長時(shí)延的網(wǎng)絡(luò)。PCIe則能對(duì)單板上的分層總線結(jié)構(gòu)提供最理想的支持。這兩種技術(shù)都可用于板上、板間和設(shè)備間通信,而且在許多應(yīng)用場合被同時(shí)用于同一系統(tǒng)。
RapidIO能將這兩種互連的優(yōu)勢結(jié)合到單個(gè)互連中,并可顯著節(jié)省功率和成本。RapidIO是嵌入式系統(tǒng)的最佳互連選擇,具有與PCIe和Ethernet相似的功能,并具有其他互連技術(shù)無法復(fù)制的功能,如低時(shí)延、低抖動(dòng)的系統(tǒng)事件分發(fā);組合式鏈路層和網(wǎng)絡(luò)層流量控制機(jī)制;可配置的誤碼檢測和模糊拓?fù)渎酚煽蓪?shí)現(xiàn)高效的備份、高可靠性和可用性;讀/寫和進(jìn)程間通信消息語義的硬件實(shí)現(xiàn)。這些功能允許系統(tǒng)架構(gòu)師創(chuàng)建性能更高、功耗更低并且更容易擴(kuò)展的系統(tǒng)。
了解這幾種常見高速光纖總線的差異性和優(yōu)缺點(diǎn)可讓我們更有針對(duì)性地對(duì)不同的工程應(yīng)用做出最優(yōu)化設(shè)計(jì)。
參考文獻(xiàn):
[1]IEEE 802.3-2008 Ethernet specification.2008.
[2]PCI Express Card Electromechanical Specification (Revision 1.0a).2003.
[3]RapidIO Interconnect Specification (Revision 2.1).2009.
[4]Sam Fuller. RapidIO : The Embedded System Interconnect[M]. 北京:電子工業(yè)出版社,2006.
[5]Trevor Hiatt,Devashish Paul,Barry Wood. RapidIO Gen2 Technology.www. rapidio.org,2009.
[6]Barry Wood. Comparing Ethernet and RapidIO. www. rapidio.org,2010.
[責(zé)任編輯王南山]