RDMA设计24:队列管理模块设计 本文主要交流设计思路,在本博客已给出相关博文几十篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用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条评论
快来发表一下你的评论吧 !