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