Rapid IO---成就高速互連之美
Ack ID被接收方用作發(fā)送響應包的ID號,表明此包是否被接收端接收,或是需要重傳。Rapid IO協議定義了兩個bit位用于表示包的優(yōu)先級,所以共有4個優(yōu)先等級,0是最低的,3是最高的,優(yōu)先級高的包將被交換器優(yōu)先傳送。
每一個數據包都會被物理層附加上一個或兩個16bit的CRC字段,用于接收方判斷接收到的數據包的完整性,小于80個字節(jié)的數據包只有一個CRC,大于80個字節(jié)的數據包除了在第80個字節(jié)后有第一個CRC字段后,還會在包的末尾再加上一個CRC字段,實現數據包的檢錯,自動糾錯和自動重傳的功能,保證數據包被對端完整正確的接收。第一個CRC字段可用于對大數據包包頭的驗證,這樣就可以在整個數據包被接收下來之前就可以進行對數據包的處理,交換器的直通模式就是利用了這個特性,這樣可以有效減少傳送時延。ACKID并不包括在CRC的計算范圍內,這幾個bit位在計算CRC時用0代替,這樣就保證了在每一個鏈路上CRC無須被重新計算,當然如果HOP_COUNT字節(jié)有變化時,CRC還是需要重新計算的。
傳輸層:
Rapid IO的第二層是傳輸層,實現Rapid IO數據包的路由、傳送。所有的邏輯層協議均使用單一的傳輸層實體來實現,這樣無論邏輯層怎么變化,或是采用何種方式來封裝應用,都可以用單一的傳輸層實體來實現,即使有新的邏輯層規(guī)范出現,也可以用這個單一的傳輸層來實現。
Rapid IO的路由和交換是通過每個終端設備的ID號來實現的。每一個終端都會分配一個唯一的ID號,當一個終端發(fā)出一個數據包時,在它的包頭中包含有目的終端的ID號和發(fā)送源端的ID號。每一個交換器在它的每一個端口上都有一個交換路由表,根據此表就可以決定此數據包由那一個端口送出。每個端口的路由表需要在系統初始化時進行配置,這與以太網相比,顯得不是非常的靈活和智能,但正是如此,使得系統的路由實現變得非常簡單。同樣對于組播功能的實現也變得簡單,只是由單一的傳輸層就可以實現了。
Rapid IO系統構成如左圖,包括兩類器件,一個是終端,產生數據包和接收數據包;另一類是交換器,實現數據包在各個端點間的路由和傳送,且不對數據包做解釋。
Rapid IO的傳輸層包頭中的另一個字節(jié)是HOP_COUNT,是用來實現終端對交換器的初始化和路由配置,Rapid IO交換器的配置可以用任一個與之相連的終端進行配置,當交換器收到一個數據包時,它會首先判斷收到包的HOP_COUNT值,如果此值是0則由此交換器終結此數據包,交換器利用此數據包的數據進行讀寫操作;如果此值不是0,則交換器將此值減一,然后按照目的ID值查路由表進行轉發(fā)。如果是要對級連的多個交換器進行配置,可以在發(fā)送這些維護包時設置HOP_COUNT為0,1,2等對與之相連的第一個交換器,第二個交換器以及第三個交換器,以此類推。
邏輯層:
在Rapid IO的體系結構中定義了6種基本操作,用來執(zhí)行相應操作的事務和對操作的描述。這6種操作包括:NREAD(讀),NWRITE(寫),NWRITE_R(寫操作,但操作結束前需要等等一個響應);SWRITE(流寫,面向大數據量DMA傳送);Atomic(原子操作:讀-修改-寫);Maintenance(維護包,以Rapid IO專用寄存器為目標的事務,如:系統發(fā)現,初始化、配置以及系統維護)。
在消息傳遞系統中,經常使用兩種機制將命令或數據從一個器件到另一個器件,一個是DMA(直接內存訪問),另一個是messaging(消息)。使用消息傳送時,發(fā)送端只須訪問目標,而不需要象DMA方式那樣,還需對目標的地址空間的可見性。
Rapid IO定義了兩種不同的包格式用于消息事務,第10類包格式(door bell)和第11類包格式,doorbell非常適合傳送8bit或16bit短信息,可以用于處理器的中斷等。第11類消息數據所最大的載荷是4096字節(jié),可以由16個消息事務組成,每個最大載荷是256字節(jié)。Rapid IO可以支持4個訊息信箱(mailbox),每個信箱可以最多裝入4個信件,這樣發(fā)送方可以同時發(fā)送4個信件到同一個目標信箱。
除此,Rapid IO也具備Data Streaming的邏輯層協議,為封裝和傳輸通過Rapid IO交換器的數據流提供一種標準方法。支持獨立流事務,通過SAR功能支持長度可變的PDU,且與內部的PDU協議無關,提供對虛擬流識別功能;Rapid IO流是由源ID、目的ID與傳送鏈路組成的邏輯結構,為了支持固定、較小的包長,必須對較長PDU分段處理,數據流支持分段傳輸以及重組還原操作,在段落類型上主要有:開始(Start)、繼續(xù)(Continuation)和結束(End), 當然可能會有多個繼續(xù)段。虛擬流被定義為協議數據單元定序集,可以對各個數據流進行識別,在輸入輸出器件對之間可以只存在一個單獨的流,系統也可以為每一用戶和流量類型的組合分配一個單獨的流,使用虛擬流標識最多可標識四百萬個流,特定的流量級別可以提供基于優(yōu)先級、延遲和吞吐率等因素的流量商定,可以根據中最高位的優(yōu)先次序處理交換結構中的流量。
流量控制是任何互連技術的重要內容,Rapid IO提供了鏈路級的流量控制和端到端的流量控制兩種方式,由于業(yè)務流與物理連接和系統拓樸結構相關,規(guī)定流量控制為Rapid IO物理層規(guī)范的內容,同時定義了重傳、限速和基于信用三種流控方式,保證Rapid IO數據流的正確傳送。除了鏈路級的流量控制處,同時Rapid IO也定義了端到端的流量控制機制,鏈路級流控管理緊相連的兩個器件,但對于來自多個源,發(fā)往同一個或多個目的地的流量會很大程度上降低系統的性能,端到端的流量控制使用由交換或是端點器件產生的特殊擁塞包來控制流量,通過交換器件將擁塞控制包傳回到源端,源端可根據收到的控制包暫停發(fā)送數據包一定時間,通過限制源頭流量來達到流量控制的目的。單一的Rapid IO傳輸層結構使得擁塞數據控制包的傳送變得非常簡單,交換結構只是把他當作普通數據包進行傳送,但包的優(yōu)先級可能不同。
三、 Rapid IO在高速系統設計中的應用
目前,Rapid IO在無線基站系統中已經得到了廣泛的應用,同樣在視頻處理,語音處理,高性能計算機及存儲領域也會得到越來越多的應用。在實現芯片到芯片之間、板與板之間的高速互連上,Rapid IO所能帶來的好處也越來越直觀,對于簡化系統設計、高帶寬、低延時等特點也被開發(fā)人員廣泛接受。
下一代的Rapid IO在應用上也要向機箱與機箱間的高速互連方向上發(fā)展,同時也會提供更高的傳輸速率,2.0規(guī)范中已經可以實現40Gbps的帶寬。我們相信,隨著越來越多的處理器支持Rapid IO接口,Rapid IO的應用前景會越來越光明。
作者簡介:
姓名:裴濟杰
工作單位:加拿大騰華半導體上海代表處
職務:資深技術支持工程
聯系信息:地址:上海市人民路885弄淮海中華大廈1410室
電話:021-63114043 13501798266
郵編:200070
評論