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

(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站已給出相關(guān)性能的視頻,如想進一步了解,請搜索B站用戶:專注與守望
https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click&vd_source=c355545d27a44fe96188b7caefeda6e7
-
模塊
+關(guān)注
關(guān)注
7文章
2848瀏覽量
53428 -
高速傳輸
+關(guān)注
關(guān)注
0文章
45瀏覽量
9317 -
RDMA
+關(guān)注
關(guān)注
0文章
102瀏覽量
9661 -
BRAM
+關(guān)注
關(guān)注
0文章
43瀏覽量
11704
發(fā)布評論請先 登錄
NVMe高速傳輸之擺脫XDMA設計九:隊列管理模塊設計(上)
NVMe高速傳輸之擺脫XDMA設計十:隊列管理模塊設計(下)
NVMe高速傳輸之擺脫XDMA設計37:隊列管理功能驗證與分析1
RDMA設計17:隊列管理模塊設計2
RDMA設計18:隊列管理模塊設計3
RDMA設計26:隊列管理模塊設計之接收隊列模塊詳細分析
RDMA設計27:隊列管理模塊設計之完成模塊詳細分析
RDMA設計40:隊列管理及連接建立功能驗證與分析
主動隊列管理建模及最優(yōu)控制策略
隊列管理電路-上篇
NVMe IP高速傳輸卻不依賴XDMA設計之九:隊列管理模塊(上)
RDMA設計25:隊列管理模塊之發(fā)送模塊詳細設計分析
評論