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

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