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

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