雖然在嵌入式系統(tǒng)中有許多連接元件的方法,但最主要的還是以太網(wǎng),、PCI Express和RapidIO這三種高速串行標準。所有這三種標準都使用相似的串行解串器(SerDes)技術,,它們提供的吞吐量和時延性能都要超過寬的并行總線技術,。隨著這些標準的不斷發(fā)展,今后的趨勢將是采用通用SerDes技術,。這意味著這些協(xié)議提供的原始帶寬不會有明顯的差異,。相反,每種協(xié)議的用途將取決于如何使用帶寬,。
大多數(shù)設計人員都很熟悉基本的以太網(wǎng)協(xié)議特征,。以太網(wǎng)是一種'盡力而為'的數(shù)據(jù)包傳送方式。在以太網(wǎng)物理層上建立的軟件協(xié)議,,如TCP/IP,,需要提供信息的可靠傳輸,因為基于以太網(wǎng)的系統(tǒng)一般在網(wǎng)絡層執(zhí)行流量控制,,而不是在物理層,。一般基于以太網(wǎng)的系統(tǒng)帶寬都要超配20%到70%。因此以太網(wǎng)最適合高時延的設備間應用,,或帶寬要求較低的板上/板間應用,。
相反,PCI Express(PCIe)針對板上互連的數(shù)據(jù)包可靠傳送作了優(yōu)化,,這種場合的典型時延在毫秒數(shù)量級,。PCIe協(xié)議交換的是事務處理層數(shù)據(jù)包(TLP),如讀和寫,,以及被稱為數(shù)據(jù)鏈路層數(shù)據(jù)包(DLLP) 的少量特殊鏈路信息,。DLLP用于鏈路管理功能,包括物理層的流量控制,。PCIe后向兼容傳統(tǒng)的PCI和PCI-X器件,,這些器件認為處理器位于總線層的頂部,因此PCIe具有能夠充分利用與PCI相關的軟件和硬件知識產權的優(yōu)勢,。正如后文要討論的那樣,,傳統(tǒng)PCI總線對交換式PCIe協(xié)議有很大的約束。
RapidIO 技術則針對嵌入式系統(tǒng)作了優(yōu)化,,尤其是那些要求多處理單元合作的嵌入式系統(tǒng),。與PCIe一樣,,RapidIO協(xié)議交換的是數(shù)據(jù)包和被稱為控制符的少量特殊鏈路信息。RapidIO兼具PCIe和以太網(wǎng)的特性,。例如,,RapidIO可以提供可靠和非可靠的數(shù)據(jù)包傳送機制。RapidIO也具有許多獨特的功能,,因此最適合板上,、板間以及短距離(小于100米)的設備間應用。
物理層
在物理層/鏈路層,,這些協(xié)議在流量控制和誤碼恢復方面有很大的區(qū)別,。以太網(wǎng)流量控制主要是在網(wǎng)絡層用軟件實現(xiàn)的,因為對大型網(wǎng)絡來說這是最有效的處理方式,。以太網(wǎng)唯一的物理層流量控制機制是PAUSE,,它將中斷傳輸一定的時間。有限的物理層流量控制意味著以太網(wǎng)將采用棄包的方式處理擁塞,。
相反,,PCIe和RapidIO的物理層流量控制機制可確保數(shù)據(jù)包的可靠傳送。每個包都會被發(fā)送器保留直到被確認,。如果檢測到發(fā)送誤碼,,鏈路維護協(xié)議可確保發(fā)生誤碼的數(shù)據(jù)包得到重傳。
PCIe 保證采用數(shù)據(jù)鏈路層數(shù)據(jù)包(DLLP)發(fā)送,,而RapidIO則使用控制符進行發(fā)送,。與DLLP不同的是,RapidIO控制符可以被嵌入在數(shù)據(jù)包內,,這樣可以實現(xiàn)低時延的RapidIO流量控制信息(如緩存占用量)交換,,將允許更快地發(fā)送更多的數(shù)據(jù)包。圖1闡明了這一概念,。在最左邊部分,,器件A不能向器件B發(fā)送任何數(shù)據(jù)包,因為器件B中的緩存是滿的,。器件B在向器件A連續(xù)發(fā)送數(shù)據(jù)包,。
在圖的中間部分,器件B中的一個緩存空出來了,。此時器件B必須告知器件A它能發(fā)送數(shù)據(jù)包了,。在右邊底部的PCIe部分,DLLP在當前數(shù)據(jù)包的傳送完成之前是無法得到傳送的,。在右邊頂部的RapidIO部分,,控制符被嵌入進了正在發(fā)送的數(shù)據(jù)包內。因此與其它協(xié)議相比,,RapidIO協(xié)議能以更低時延和更高吞吐量完成可靠的數(shù)據(jù)包傳送,。將控制符嵌入進數(shù)據(jù)包的能力使得RapidIO流量控制的其余功能比PCIe或以太網(wǎng)都要豐富,,后文對此將有進一步描述。
除了更有效的流量控制外,,將控制符嵌入進數(shù)據(jù)包使得RapidIO具有PCIe和以太網(wǎng)目前無法提供的能力,。控制符可以用來低時延和低抖動地在整個RapidIO系統(tǒng)中分配事件,,如圖2所示,。
這一功能可以支持將公共實時時鐘信號分配到多個端點或為天線系統(tǒng)分配幀信號等應用,還可以用于發(fā)送其它系統(tǒng)事件信息,,以及實現(xiàn)多處理器系統(tǒng)中的調試,。如圖2 所示,PCIe的DLLP在每次通過交換機傳送時都會引入很大的時延和抖動,。相反,RapidIO協(xié)議允許在整個RapidIO架構中分配信號時具有低于 10個單位間隔(UI)的抖動性能和每次交換低于50ns的時延性能,,并且與數(shù)據(jù)包業(yè)務無關,。
PCIe和以太網(wǎng)可以選擇擴展各自的規(guī)范以允許事件獲得低時延的分配。引入類似控制符的概念對以太網(wǎng)來說是很大的進步,。以太網(wǎng)生態(tài)系統(tǒng)下已有幾家組織正在改進存儲應用中的以太網(wǎng)能力,,其中就可能需要用到類似控制符的概念。以太網(wǎng)還準備采用簡單的XON/XOFF流量控制來進一步增強性能,。
PCIe目前不允許將DLLP嵌入進TLP,,因為這一概念不能兼容傳統(tǒng)的PCI/X總線操作。嵌入TLP的DLLP會產生沒有數(shù)據(jù)可以放置到傳統(tǒng)總線上的周期,。PCIe端點可以工作在存儲-轉發(fā)模式,,確保數(shù)據(jù)包在轉發(fā)給總線之前全部接收到,代價是時延的顯著增加和吞吐量的降低,。由于PCIe主要用于單處理器系統(tǒng)的板上互連,,并且一直需要保持與傳統(tǒng)總線標準的兼容,PCIe陣營不太可能允許DLLP被嵌入進TLP,。
帶寬選項
除了流量控制和鏈路維護外,,以太網(wǎng)、PCIe和RapidIO在物理/鏈路層方面的最顯著區(qū)別是所能支持的帶寬選項,。以太網(wǎng)帶寬具有一代增加10倍的悠久歷史,。以太網(wǎng)目前工作在 10Mbps、100Mbps,、1Gbps和10Gbps,。一些專用器件甚至支持2Gbps(2.5GBaud)。下一代以太網(wǎng)將能工作在40Gbps和 /或100Gbps,。
PCIe和RapidIO采用了不同的方法,,因為板上,、板間和設備間互連要求功率與數(shù)據(jù)流匹配。因此與以太網(wǎng)相比,, PCIe和RapidIO支持更多的通道速率和通道帶寬組合,。PCIe 2.0允許通道工作在2Gbps或4Gbps(2.5和5Gbaud),而RapidIO支持1,、2,、2.5、4和5Gbps(1.25,、2.5,、 3.125、5和6.25Gbaud)的通道速率,。PCIe和RapidIO都支持從單個通道到16個通道的通道帶寬組合,。PCIe規(guī)范中還支持32通道端口。對于給定的通道帶寬,,RapidIO端口可以提供多于或少于PCIe的帶寬,,因此允許系統(tǒng)設計人員調整系統(tǒng)中用于數(shù)據(jù)流的功率大小。
傳輸層
RapidIO和以太網(wǎng)標準都是模糊拓撲結構,。任何端點組都可以用任何拓撲結構連接,,包括環(huán)形、樹形,、網(wǎng)狀,、超立方體以及超復雜網(wǎng)絡等更深奧的幾何圖形。數(shù)據(jù)包則根據(jù)它們的網(wǎng)絡地址在這些拓撲中完成路由,?;ヂ?lián)網(wǎng)協(xié)議(IP)地址就是一種以太網(wǎng)網(wǎng)絡地址。 RapidIO網(wǎng)絡地址被稱為目的識別符,,簡稱destID,。
與拓撲無關的(Topology-agnostic)協(xié)議可實現(xiàn)各種資源備份和冗余功能。例如,,一些系統(tǒng)使用N+1備份策略來確保高可用性和可靠性,,而不用顯著增加硬件數(shù)量。(備份功能將未使用的設備作為在用設備的備份,。在N+1 備份機制時,,N個元件有一個共同的備份,因此當N個元件中的一個發(fā)生故障時系統(tǒng)可以繼續(xù)工作,。這個策略也被稱為1:N備份),。支持不同拓撲選項還允許系統(tǒng)設計人員通過匹配數(shù)據(jù)路徑和數(shù)據(jù)流程消除系統(tǒng)中的性能瓶頸。系統(tǒng)擴展和演變在RapidIO和以太網(wǎng)絡中是不受約束的,。
相反,,PCIe在頂層支持帶單個根聯(lián)合體(Root Complex)的樹狀結構,。PCIe還使用了多種路由算法,具體取決于TLP類型,。PCIe支持的單路拓撲是傳統(tǒng)PCI/X總線支持的一部分,。PCIe 標準已經(jīng)用多根I/O虛擬化(MRIOV)進行了擴展,進一步增加了PCIe可以支持的物理拓撲數(shù)量,。然而,,由于MRIOV實現(xiàn)代價高,是否能被PCIe 生態(tài)系統(tǒng)采納還是未知數(shù),。PCIe元件還支持非透明橋接(NTB)功能,,因此一個PCIe層可以訪問另一個PCIe層中的確定存儲范圍。這種方法的系統(tǒng)可靠性和可用性將在后文作進一步闡述,。
許多基于以太網(wǎng)的系統(tǒng)功能也受限于樹形結構,。例如,許多以太網(wǎng)實現(xiàn)使用不同生成樹協(xié)議(STP)將可用鏈路組減少到樹形使用鏈路,。作為將以太網(wǎng)擴展到存儲網(wǎng)絡的一部分努力,,協(xié)議中規(guī)定可以為以太網(wǎng)支持的4096個虛擬通道中的每個通道創(chuàng)建生成樹,這樣可以允許同時使用更多的鏈路,。然而,,支持4096個虛擬通道會增加交換的復雜性,,可能需要更多的緩存,,并增加通過交換機的時延。
邏輯層
RapidIO,、PCIe和以太網(wǎng)在邏輯層方面也有多個差異較大的地方,。最明顯的區(qū)別是所支持的語義PCIe數(shù)據(jù)包支持基于地址的讀寫語義。在PCIe系統(tǒng)中,,發(fā)起讀或寫的實體必須知道系統(tǒng)的全局存儲器映射圖中的目標地址,,這對控制平面應用而言是很自然的一種方法。然而,,這種對全局地址映射圖的依賴性也會導致難以發(fā)展的緊耦合軟件系統(tǒng),。
PCIe協(xié)議也支持通過消息TLP的消息傳送。不過消息TLP只支持有限數(shù)量的功能,,如中斷和復位信號,。這點與以太網(wǎng)和RapidIO消息包有很大的不同,后者可用于進程間通信,。
與PCIe 不同,,建立在以太網(wǎng)物理層之上的軟件協(xié)議只支持消息語義。在發(fā)送消息時,,發(fā)送者只需知道接收地址,。尋址機制一般是分層的,,因此沒有哪個節(jié)點必須知道所有的地址。地址可能會隨系統(tǒng)發(fā)展而改變,,支持軟件單元實現(xiàn)相互間的松散耦合,。這些屬性對數(shù)據(jù)平面應用來說是必要的。
RapidIO同時支持讀/寫和消息語義,。除了明顯的架構優(yōu)勢和系統(tǒng)靈活性外,,對讀/寫和消息處理的支持允許單路互連同時用于控制和數(shù)據(jù)平面。RapidIO系統(tǒng)因此要比必須結合PCIe和以太網(wǎng)的系統(tǒng)來得更簡單,,從而具有降低功耗和成本的優(yōu)勢,。
PCIe不可能在其數(shù)據(jù)包定義中合并進程間通信消息語義,因為與傳統(tǒng)PCI和PCI-X總線的操作相沖突,。PCIe是圍繞根聯(lián)合體概念設計的,,這個聯(lián)合體只包含系統(tǒng)中的處理器。在這個范例中,,沒有消息處理是在PCIe到其它軟件實體上完成的,,因此消息語義沒有價值。
人們對以太網(wǎng)通過遠程直接存儲器訪問(RDMA)協(xié)議支持讀寫語義尚存爭議,,該協(xié)議支持設備間進行直接存儲器拷貝,。然而,RapidIO(和PCIe)讀寫語義的效率要比RDMA高得多,。RDMA協(xié)議建立在其它以太網(wǎng)協(xié)議之上,,如TCP,并且每個數(shù)據(jù)包都需要大量的包頭開銷,。與RapidIO讀/寫事務處理相比,,RDMA實現(xiàn)在時延和帶寬方面付出的代價都要大得多。雖然一些RDMA能幫助卸載已有引擎的負擔,,但很難想象將RDMA用于控制平面功能,,例如對寄存器進行編程。
消息語義的一種可能應用是其它協(xié)議的封裝,。RapidIO擁有封裝各種協(xié)議的標準,。這種封裝能力給系統(tǒng)設計人員提供了許多優(yōu)勢,包括未來將要證明的RapidIO背板,。任何未來,、傳統(tǒng)或專有協(xié)議都可以用標準的RapidIO組件進行封裝和傳送。例如,,用于以太網(wǎng)封裝的現(xiàn)有 RapidIO規(guī)范就允許設計人員在基于RapidIO的系統(tǒng)中使用基于以太網(wǎng)的軟件,。
以太網(wǎng)也支持封裝,并且有多種封裝標準可以選擇。RapidIO的封裝效率要比以太網(wǎng)高,,因為以太網(wǎng)協(xié)議層需要更多的頭部開銷,。
曾經(jīng)有個組織試圖對在PCIe類結構上的各種協(xié)議封裝進行標準化。但幾年前這個組織宣告失敗,,因為過程太過復雜,。由于與傳統(tǒng)總線相關的要求,很難將PCIe擴展成適合嵌入式系統(tǒng)的結構,。
可靠性和可用性
大多數(shù)系統(tǒng)對可靠性和/或可用性都有要求,。有可靠性和/可用性要求的系統(tǒng)需要誤碼檢測、誤碼提醒,、故障元件分析與隔離以及恢復機制,。從高層看,PCIe,、RapidIO和以太網(wǎng)在所有這些方面都要相似的功能,。不過在備份策略以及快速隔離系統(tǒng)使之免受故障元件影響的功能方面有很大差別。
起初,,互聯(lián)網(wǎng)使用網(wǎng)絡層的軟件協(xié)議,,在可能會經(jīng)歷嚴重損傷的網(wǎng)絡上提供可靠的通信。因此以太網(wǎng)的原始誤碼管理功能主要用于檢測,、隔離和避免網(wǎng)絡中的新漏洞,,而不是用于單個系統(tǒng)的魯棒性。系統(tǒng)可靠性通過網(wǎng)絡元件的復制來實現(xiàn),。后來的性能增強則增加了標準化的誤碼捕捉和誤碼提醒機制來簡化網(wǎng)絡管理,。
RapidIO具有與以太網(wǎng)類似的備份、誤碼捕捉和誤碼提醒功能,。PCIe支持有限的備份策略,,因為它的傳輸層僅限于樹狀結構,。上文提及的PCIe非透明橋接(NTB)允許兩個或多個樹狀結構進行通信,,足以實現(xiàn)1+1備份(也稱為1:1備份)。NTB很難拓展到采用N+M備份機制的系統(tǒng),。理論上多根I/O虛擬化(MRIOV)可以用來在PCIe系統(tǒng)中支持N+M備份,,其中N+M的總數(shù)量不超過8。然而,,由于MRIOV系統(tǒng)中的子樹無法相互通信,,從故障恢復可能要求系統(tǒng)中斷運行,目的是重新配置系統(tǒng),,以便隔離故障元件,,并采用新的元件。
與PCIe和RapidIO相比,以太網(wǎng)的誤碼檢測機制通常比較慢,,因為以太網(wǎng)是針對全球范圍內分布的網(wǎng)絡設計的,。PCIe和RapidIO都有誤碼檢測和提醒機制,其時延要比以太網(wǎng)小得多,。
雖然PCIe和RapidIO都保證數(shù)據(jù)包的發(fā)送,,但在誤碼條件下它們會棄包,以防止故障元件造成致命擁塞,。然而,,PCIe誤碼條件機制是不可配置的。當鏈路必須再學習時數(shù)據(jù)包通常會被丟棄,。另外,,PCIe隔離機制只在幾個毫秒后就被激活。這些并不是所有系統(tǒng)都理想的行為,。
相反,, RapidIO標準允許對誤碼作出特殊系統(tǒng)響應,如鏈路再學習,。當誤碼發(fā)生時,,系統(tǒng)會立即開始棄包,或者它會保留包,,并允許擁塞發(fā)生,。RapidIO使用 '漏桶'式誤碼計數(shù)方法,并有兩個可配置門限,。DEGRADED門限能盡早提醒系統(tǒng)管理軟件鏈路上正在發(fā)生誤碼,。FAILED門限用于觸發(fā)丟包以實現(xiàn)用戶定義的誤碼率。RapidIO誤碼管理的靈活性反映了嵌入式系統(tǒng)設計人員的不斷變化需求,。
流量控制
流量控制貫穿互連規(guī)范的物理,、傳輸和邏輯層。流量控制功能非常重要,,可確保系統(tǒng)在各種條件下都能正確和魯棒性地操作,,這些條件包括部分故障和過載。流量控制機制允許盡可能高效和完整地使用可用帶寬,。為了盡量減少由于超配高頻串行鏈路而浪費的帶寬和功率,,流量控制策略正變得越來越重要。
目前還不可能討論統(tǒng)一的以太網(wǎng)流量控制策略,,因為許多不相干的以太網(wǎng)消息處理標準都有特殊協(xié)議流量控制策略來避免丟包,。一般來說,這些標準的流量控制策略基于的是檢測到丟包時降低傳送速率,。流量控制策略一般用軟件實現(xiàn),,并且要求很強的緩存能力來實現(xiàn)重傳,。
PCIe流量控制僅限于物理層。PCIe流量控制機制基礎是跟蹤數(shù)據(jù)包頭和數(shù)據(jù)塊的信用,,并且對投遞,、非投遞和完整事務的跟蹤是分開的。
RapidIO 規(guī)定了物理層和邏輯層的流量控制機制,。物理層流量控制機制設計用于處理幾個毫秒周期的擁塞,。在物理層,RapidIO提供PCIe風格的流量控制,,并輔之以簡單的重傳機制,。簡單的重傳機制能很高效地實現(xiàn),與PCIe風格的流量控制相比性能損失最少,。RapidIO物理層流量控制還包括基于虛擬輸出隊列的反壓機制,。這種在RapidIO 2.0中引入的機制允許交換機和端點了解哪些目的地是擁塞的,并將業(yè)務發(fā)送到未擁塞的目的地,。這種特性可以實現(xiàn)分布式?jīng)Q策制定,,確保可用的網(wǎng)絡帶寬得到最大化的利用,。決策制定的時延很低,,因為擁塞信息使用控制符進行交換,而這些控制符如前所述可以被嵌入RapidIO包,。
在圖的上面部分,,數(shù)據(jù)源發(fā)送數(shù)據(jù)的速率比端點(EP)1接收數(shù)據(jù)包的速率快得多,這將導致一個擁塞狀態(tài)控制符由EP1發(fā)送到交換機2,,它級聯(lián)在消息后面返回給源端,。當交換機2在與EP1連接的端口上檢測到擁塞時,交換機2也能產生擁塞狀態(tài)控制符,。一旦源接收到擁塞狀態(tài)控制符,,它就開始將數(shù)據(jù)包發(fā)送給EP2,并降低到達EP1的數(shù)據(jù)包發(fā)送速率,。
RapidIO的邏輯層流量控制機制設計用于避免網(wǎng)絡中的擁塞,,方法是計量發(fā)到網(wǎng)絡的確認數(shù)據(jù)包數(shù)量,從而在網(wǎng)絡級管理擁塞,。這種方法與基于以太網(wǎng)的軟件協(xié)議非常相似,。針對特殊流程的數(shù)據(jù)包接納可以通過XON/XOFF類協(xié)議,,以及基于速率和信用的流量控制進行管理,。也許最重要的是,這些流量控制機制也能用于應用層來提高軟件應用性能,。最好的一點是,,這些流量控制機制可用硬件實現(xiàn),從而釋放寶貴的CPU資源,為用戶提供更高的價值,。RapidIO流量控制機制可以確?;赗apidIO的系統(tǒng)能以高效、可預測的方式使用可用帶寬,。
本文小結
以太網(wǎng),、PCIe和RapidIO都是基于相似的SerDes技術,因此SerDes技術不再是這些技術的差異點,,而是它們使用可用帶寬的方式,。每種技術都有最適合的專門應用領域。
以太網(wǎng)最適合地理上分散的,、具有長時延并且??絡配置的網(wǎng)絡,。PCIe則能對單板上的分層總線結構提供最理想的支持。這兩種技術都可用于板上,、板間和設備間通信,,而且在許多應用場合被同時用于同一系統(tǒng)。RapidIO能將這兩種互連的優(yōu)勢結合到單個互連中,,并可顯著節(jié)省功率和成本,。
RapidIO 是嵌入式系統(tǒng)的最佳互連選擇。RapidIO具有與PCIe和以太網(wǎng)相似的功能,,并具有其它互連技術無法復制的功能,,如:低時延、低抖動的系統(tǒng)事件分發(fā),;組合式鏈路層和網(wǎng)絡層流量控制機制,;可配置的誤碼檢測和模糊拓撲路由可實現(xiàn)高效的備份、高可靠性和可用性,;讀/寫和進程間通信消息語義的硬件實現(xiàn),。這些功能允許系統(tǒng)架構師創(chuàng)建性能更高、功耗更低并且更容易擴展的系統(tǒng),。