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

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分