【通信傳輸協議】SRIO(一)


一、RapidIO 簡介

1、總線技術 Rapid IO 的含義

  根據百度百科的介紹:“ Rapid IO 是由 Motorola 和 Mercury 等公司率先倡導的一種高性能低引腳數、 基於數據包交換的互連體系結構,是為滿足和未來高性能嵌入式系統需求而設計的一種開放式互連技術標准。RapidIO主要應用於嵌入式系統內部互連,支持芯片到芯片、板到板間的通訊,可作為嵌入式設備的背板(Backplane)連接”。可以得知 Rapid IO 是一種總線技術,常見的總線技術包括:

傳統串行總線:UART、SPI、IIC總線等;

         接口簡單,硬件設計簡單;

         協議較簡單

         傳輸速度慢

傳統並行總線:EMIF、UPP、PCI總線等;

         比傳統串行總線速度快

         接口引腳多,硬件設計困難

         傳輸距離短

由此誕生了高速串行總線:USB\PCIE\SRIO總線等;

    速度快,鏈路速度一般可以在2.5Gbps,3.2 Gbps,5 Gbps,6.25 Gbps;

         低壓差分信號(low voltage differential signal, LVDS)

         接口簡單,硬件設計簡單,但傳輸協議復雜

有三種帶寬能達到10 Gbps的互連技術:以太網,PCIE,SRIO(串行rapidIO):

 

 

  RapidIO 2.0已經支持40Gbps帶寬。

 

  Rapid IO 最初規范使用並行總線,8位或16位,但並行總線需要較多信號引腳,比如8位位寬的接口需要40根信號線,16位位寬的接口需要76根,不適用於系統背板間的互聯。現在基本上都有串行總線RapidIO,即SRIO。並行和串行只是物理接口的不同,它們具有相同的編程模型,事務處理,尋址機制。

   作為高速串行總線,Rapid IO的特點有:

    系統結構靈活,允許點對點傳輸;

    帶錯誤檢測的魯棒傳輸(CRC?

    可擴展的頻率和接口寬度

    非軟件密集型操作

    低開銷的高帶寬互聯

    低引腳數、低功耗、低延遲

 

深入了解 Rapid IO 互聯特性可以看《RapidIO Interconnect Specification 2.1》。

 

2、Rapid IO 協議結構

  三層:邏輯層、傳輸層和物理層

 

 

         邏輯層(logical layer)定義接口的協議和數據包格式,為端點之間發起和結束事務提供必要的信息,位於最高層;

         傳輸層(buffer layer)定義了包交換、路由和尋址機制,與互聯結構無關,SRIO可以實現多種拓撲結構,最常見的是基於交換機的拓撲結構,有圖;

基於交換機的拓撲結構

         物理層(physical layer)定義了電氣特性、鏈路控制和糾錯重傳等,SRIO的物理層定義了器件間雙向差分信號的全雙工串行鏈路,即在一個端口的每個方向上都使用單向差分信號。一個串行差分對作為一個通道,即1X;兩個串行差分對作為兩個通道,即2X;四個串行差分對作為四個通道,即4X。這就是常說的鏈路為1X模式,2X模式,4X模式。

 

3、RIO 傳輸流程

  RIO 協議數據有包和控制符號組成。包是系統中各器件間通信的基本單元;控制符號有兩個作用,一是管理RIO物理層互聯的事務流,二是用來流量控制和維護等功能。

  RIO 協議的操作過程基於“請求”和“響應”事務,如圖所示。

  對於一次操作,發起器件向交換結構發出請求事務,開始一起操作,交換結構收到請求后發起控制符號,確認收到該請求,然后將該請求轉發到目標端點,目標接收請求事務並完成操作后,發出響應事務,交換結構收到響應事務后發起控制符號,確認收到響應,並將響應事務轉發到發起器件,發起器件收到響應事務后發出控制符號,表明響應包得到確認,至此操作完成。交換結構是指提供系統互連的單個或多個交換器件的集合,通常是一個交換機,一般只在大型系統中使用該結構,在小型系統中直接使用點對點的連接方式。

 

4、RIO 包格式

  RIO 包由包頭、可選的載荷數據和 16 bits CRC 校驗碼組成。包頭的長度因為包類型不同可能是十幾到二十幾個字節;每包的載荷數據長度不超過 256 字節,這有利於減少傳輸時延,簡化硬件實現。

 

 

 

  需要重點關注設備ID:RIO 統一采用設備ID作為區分交換系統中各器件的唯一標示。路由和交換過程是通過每個端點器件的設備ID來實現的。當端點器件產生一個請求包時,會在包頭加上自己的設備ID和對方的設備ID,分別作為源ID和目的ID,交換機根據目的ID查找轉發端口。每個交換機對自身的每個端口都維護一個交換路由表,需要在系統初始化時進行配置。交換芯片根據所接收到包的ID查找此路由表,進而決定將數據包由哪個端口輸出。

  上圖藍色的傳輸層包的位域格式:

  • tt決定不同大小的設備域,00表示8位的設備ID,10表示16位的設備ID。使用8位的設備ID最多允許256個設備,使用16位設備ID系統中最多允許65536個設備;
  • ftype表示邏輯層包格式類型,代表不同的事務類型,屬於邏輯層。

  在交換系統中,端點器件都有ID號,而交換機沒有ID號。在大部分情況下,操作的目標不是交換器件,所以不會產生問題;但當RIO操作目標為交換機時,會導致數據無法到達交換機。例如系統正在配置或要讀取交換機的寄存器信息時,由於交換機沒有ID標示,不能進行典型的讀寫操作,這種情況下就需要一種特殊的包:維護包。用於交換機的維護和管理。維護包中多了一個跳出字段,該字段定義了網絡中交換機的數量,僅供了解。

 

5、RIO 支持的IO操作規范(六種)

  RIO 支持的邏輯層業務主要有直接IO事務和消息傳遞事務。進行直接IO事務操作的前提是主設備知道被訪問端的存儲器映射,主設備可以直接讀寫從設備的存儲器,直接IO在被訪問端的功能往往完全由硬件實現,被訪問的器件無任何軟件負擔。

  RIO 支持六種基本的IO操作:

 

 

 

  • NREAD:讀操作
  • NWRITE:寫操作,不要求接收端響應
  • NWRITE_R:帶響應的寫操作,要求接收端響應
  • SWRITE:streaming-write,流寫,數據長度必須是8字節的整數倍,不要求接收端響應
  • ATOMIC:原子操作
  • MAINTENANCE:維護事務

  以 RIO NREAD操作為例介紹 RIO 操作流程:

 

 

 

   圖3.1是操作的基本過程,請求端發出NREAD事務請求,得到目標端點某內存區域的內容,目標端點將請求內容嵌入到 response 響應事務,返回給請求端。NREAD事務使用第2類包完成,圖2.5是第2類包的格式。無陰影部分是邏輯層字段。表2.3是邏輯層各字段代表意義的詳細介紹。

  RIO操作對系統中的地址空間都是可見的,RIO 支持三種地址模式:小地址模式、中地址模式和大地址模式。小地址模式由 rdsize 結合Address、wdptr、xamsbs 位域指出數據的位置、大小和對齊方式,共支持16g字節的尋址空間;中地址模式和大地址模式增加了擴展地址,中地址模式擴展地址為16位,大地址模式擴展地址為32位。目標端點會根據收到的NREAD請求包中地址信息對本地存儲器進行尋址,然后將這些存儲數據嵌入到response包中,發送給請求端,請求端對response包進行解包,得到請求的數據。

  response 由第13類包完成:

 

 

   第13類包定義了有數據載荷和無數據載荷兩類數據類型,由 ttype 位域編碼標識。目標事務ID與響應包正在響應的請求事務ID相同,請求端會根據該ID來匹配響應和請求。如果響應包載有數據,數據會在目標事務ID之后出現,需要注意響應中沒有用來指示所含數據長度和大小的位域,接收者需要根據包尾符判斷。包尾符是控制符號的一種,前文討論RIO 傳輸流程時提到過控制符號。第13類包可以完成大部分請求的響應。

 

6、RIO 支持的消息傳遞邏輯規范

  RIO 除了支持IO操作還支持消息傳遞。與IO操作不同的是,在消息傳遞時,消息是由目標端控制,請求端不需要對目標端的地址空間可見,提高了系統安全性。數據在被訪問設備中的位置由消息中所攜帶的郵箱號等信息計算得出,從設備根據計算出的地址,將數據保存到對應的緩沖區中,這一過程一般需要軟件的協助。

  RIO 定義了第10類包和第11類包,用於傳遞消息事務。第10類包是DOORBELL包,包頭精簡,所能攜帶的數據載荷只有16位,DOORBELL通常用於處理器之間的中斷控制;第11類包用於消息操作,最多可以攜帶4096字節的數據載荷。一個DOOEBELL操作由DOORBELL和response事務完成,MESSAGE操作也是由MESSAGE和response事務完成,如圖所示。

 

 

7、RIO數據對齊和分包

 

  為了簡化系統中對數據的尋址,RIO 假設所有的事務都對齊到雙詞邊界,也就是8個字節,64位。若正被發送的數據不以雙詞邊界開始或結束,就用一個特殊的掩碼來表明哪些字節包含有效數據。

  RIO 支持的最小數據是一個字節,也就是8位。對於寫操作,為了把數據傳遞到目的端,處理部件會正確地把數據對齊到雙詞邊界,如果沒有自然的對齊數據,那么該對齊操作就可能要求將一個數據流分成多個事務來進行傳輸。

  圖3-9展示了一個48字節的數據流,處理部件希望通過互聯結構將該數據寫往另一部件。圖中陰影標注的是將被寫入的數據。因為流的開始和結束都沒有與雙詞邊界對齊,所以發送部件將事務至少分成三個獨立事務。第一個事務發送前三個字節,並指示567字節有效;第二個事務發送中間的5個雙詞,即40字節;RIO的一個事務最多可攜帶256個字節,所以這40個字節可以通過一個事務發送完;第三個事務發送剩下的5個字節,並表明有效位。如果數據是對齊雙詞邊界的話,那只需要1個事務就全部發完了。

 

8、RIO常用數據包的具體格式

  RIO 事務是封裝在包中的,包是系統內端點器件間通信的基本單元,RIO包包含了物理層、邏輯層和傳輸層的信息。RIO所有包都是以物理字段開始的(圖中黃色),包的類型由邏輯層字段:格式類型Ftype和事務類型字段Ttype唯一確定。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM