本博文主要交流設計思路,希望對初學者有用。注意這里只是拋磚引玉,切莫認為參考這就可以完成商用IP設計。
隊列管理模塊采用管理與存儲分離的結構進行設計,由發送隊列存儲、發送隊列管理、接收隊列管理、完成條目解析、異常完成條目處理和 Round-Robin 仲裁組成。
隊列管理模塊的結構如圖 1所示。

圖1 隊列管理模塊的結構圖
(1)發送隊列
發送隊列的管理由發送隊列管理單元和發送隊列存儲共同實現。其中,發送隊列存儲為所有發送隊列共用的存儲空間,根據用戶環境和開發板環境不同可由 BRAM、URAM 或 LUTRAM 實現。發送隊列管理單元則負責管理這個存儲空間,并處理用戶指令和發送隊列讀取請求。在發送隊列管理單元中存在一個 SQ1 表單和若干用戶 SQ表單來管理發送隊列,每個表單中存儲發送隊列的信息,包括隊列 ID、隊列深度、會話 ID、遠程主機 IP 地址、MAC 地址、遠程訪問密鑰、遠程主機數據包序列號、本地主機數據包序列號、遠程主機內存起始地址和遠程主機內存地址大小等。
當收到系統控制模塊中的隊列控制單元發送過來的創建隊列請求時,發送隊列管理單元首先判斷隊列 ID 和會話 ID 是否已存在。當隊列管理模塊可以接受請求時,其會啟用一個用戶請求隊列表單并根據接收到的信息創建用戶發送隊列,還會同步通知接收隊列管理單元啟用一個用戶接收隊列表單并創建接收隊列,并且通知連接管理模塊進入創建連接流程。如果隊列 ID 或會話 ID 已存在,則請求失敗并返回錯誤信息。
類似的,當收到刪除隊列請求時,同樣判斷隊列 ID 和會話 ID,如果二者均存在,則刪除對應的用戶請求隊列表單并同步通知接收隊列管理單元刪除對應用戶接收隊列表單,并通知連接管理模塊進入斷開連接流程。
當接收到系統控制模塊中的指令控制單元發送過來的用戶請求時,發送隊列管理單元首先根據用戶請求中的信息判斷對應隊列是否存在。如果存在,則再次判斷遠程主機 IP 地址、MAC 地址、遠程訪問密鑰等信息是否正確,如果均校驗通過,則根據對應用戶發送隊列表單中的起始偏移地址、隊列深度計算出當次用戶請求的寫地址,將發送隊列條目寫入該地址。同樣的,當接收到讀發送隊列請求時,其根據請求的地址獲取其對應的用戶請求隊列中的表單信息,生成發送隊列讀地址,并從該地址讀取
發送隊列條目。
通過上述的發送隊列管理方式,使得發送隊列可在系統工作過程中動態配置,用戶可以通過修改表單信息的方式簡便地修改隊列深度、隊列數量。在實際應用中,用戶即可根據不同的數據環境靈活控制隊列深度和數量,以此來優化系統的性能發揮和功耗表現。
B站已給出相關性能的視頻,如想進一步了解,請搜索B站用戶:專注與守望
https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click&vd_source=c355545d27a44fe96188b7caefeda6e7
審核編輯 黃宇
-
RDMA
+關注
關注
0文章
99瀏覽量
9615
發布評論請先 登錄
RDMA設計40:隊列管理及連接建立功能驗證與分析
RDMA設計27:隊列管理模塊設計之完成模塊詳細分析
RDMA設計23:連接管理模塊設計3
RDMA設計22:連接管理模塊設計2
RDMA設計21:連接管理模塊設計
RDMA設計18:隊列管理模塊設計3
RDMA設計17:隊列管理模塊設計2
RDMA設計15:連接管理模塊設計2
RDMA設計14:連接管理模塊設計
RDMA設計12:融合以太網協議棧設計1
RDMA設計11:性能監測單元設計
RDMA設計10:指令控制單元設計?
RDMA設計8:狀態管理單元設計
評論