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

圖1 隊列管理模塊的結構圖
發送流程:
首先,用戶指令發送到發送隊列存儲,存儲實際的發送數據/指令。用戶隊列ID用于識別是哪個用戶的隊列,發送隊列管理根據用戶隊列ID查找對應的用戶SQn表單,獲取該用戶發送隊列的當前序號(SQn),管理發送隊列的讀寫位置(比如寫地址對應SQn的遞增)。
發送隊列存儲的讀地址可能來自發送隊列管理,當需要讀取發送隊列數據時,發送隊列管理提供讀地址,發送隊列管理向Round Robin仲裁提交發送請求,Round Robin仲裁采用輪詢方式選擇一個發送請求,生成發送隊列條目,輸出到外部。
接收與完成流程:
外部的接收隊列條目進入Round Robin仲裁。Round Robin仲裁將選中的接收隊列條目發送到完成條目解析模塊,完成條目解析負責解析接收的內容。
完成條目解析同時將解析后的信息(比如完成的序號)發送到指令釋放模塊,指令釋放模塊根據數據排序序號,和接收隊列RQn表單、用戶RQn表單來管理接收隊列的序號,確保接收的數據按順序釋放給用戶。
異常處理:
異常完成條目處理模塊負責處理異常情況,比如接收的完成條目有錯誤(比如CRC錯誤、超時),或者發送隊列的異常(比如隊列溢出),當出現異常時,該模塊處理這些異常條目,可能生成異常通知,或者糾正錯誤,確保隊列管理的正確性。
B站已給出相關性能的視頻,如想進一步了解,請搜索B站用戶:專注與守望
https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click&vd_source=c355545d27a44fe96188b7caefeda6e7
審核編輯 黃宇
-
隊列管理
+關注
關注
0文章
5瀏覽量
6394 -
RDMA
+關注
關注
0文章
101瀏覽量
9658
發布評論請先 登錄
RDMA設計40:隊列管理及連接建立功能驗證與分析
RDMA設計25:隊列管理模塊之發送模塊詳細設計分析
RDMA設計27:隊列管理模塊設計之完成模塊詳細分析
RDMA設計26:隊列管理模塊設計之接收隊列模塊詳細分析
RDMA設計18:隊列管理模塊設計3
RDMA設計12:融合以太網協議棧設計1
NVMe高速傳輸之擺脫XDMA設計54:如何測試隊列管理功能2
NVMe高速傳輸之擺脫XDMA設計53:如何測試隊列管理功能
NVMe高速傳輸之擺脫XDMA設計37:隊列管理功能驗證與分析1
NVMe IP高速傳輸卻不依賴XDMA設計之九:隊列管理模塊(上)
RDMA設計24:隊列管理模塊設計
評論