本博文主要交流設計思路,在本博客已給出相關博文約100篇,主要分布在文章及經驗貼,希望對初學者有用。注意這里只是拋磚引玉,切莫認為參考這就可以完成商用IP設計。

(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
-
模塊
+關注
關注
7文章
2837瀏覽量
53282 -
高速傳輸
+關注
關注
0文章
43瀏覽量
9288 -
RDMA
+關注
關注
0文章
99瀏覽量
9615 -
BRAM
+關注
關注
0文章
43瀏覽量
11655
發布評論請先 登錄
NVMe高速傳輸之擺脫XDMA設計九:隊列管理模塊設計(上)
NVMe高速傳輸之擺脫XDMA設計十:隊列管理模塊設計(下)
NVMe高速傳輸之擺脫XDMA設計37:隊列管理功能驗證與分析1
RDMA設計18:隊列管理模塊設計3
RDMA設計26:隊列管理模塊設計之接收隊列模塊詳細分析
RDMA設計27:隊列管理模塊設計之完成模塊詳細分析
RDMA設計40:隊列管理及連接建立功能驗證與分析
主動隊列管理建模及最優控制策略
NVMe IP高速傳輸卻不依賴XDMA設計之九:隊列管理模塊(上)
RDMA設計25:隊列管理模塊之發送模塊詳細設計分析
評論