NVMe IP高速传输却不依赖XDMA设计之九:队列管理模块(上)

描述

注:这是采用PCIe设计NVMe,并非调用XDMA方式,后者在PCIe4.0时不大方便,故团队直接采用PCIe设计,结合UVM验证加快设计速度。

队列管理模块采用队列的存储与控制分离的设计结构,如图1所示为队列管理模块的结构框图。

高速传输

图1 队列管理模块结构图

对于提交队列,设置一块完整的BRAM存储空间用于存储提交队列条目,一个提交队列管理单元用于实现提交队列存储地址空间的管理和门铃控制。在提交队列管理单元中,构建一个admin提交队列表单和N个I/O提交队列表单,I/O提交队列表单的个数N为参数配置,考虑到仲裁效率和资源占用,N的最大数量为16。每一个提交队列表单包含了队列的ID、队列深度、起始偏移地址、门铃头指针、门铃尾指针、门铃地址,表单中的初始信息在NVMe初始化的创建提交队列过程中获取,起始偏移地址在初始化时按照队列深度依次连续分配,而门铃头指针则由完成队列管理单元更新。

当指令控制模块需要向某一个提交队列写入提交条目时,提交队列管理单元首先读取所选则队列的表单信息,根据起始偏移地址、队列深度和门铃尾指针计算出提交队列存储写地址,再将提交条目写入该地址中,同时发起对应的门铃写请求。当接收到提交队列读请求时,根据请求的地址获取对应表单信息生成提交队列存储读地址。

对相关视频感兴趣的,B站搜用户名:  专注与守望

审核编辑 黄宇

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

全部0条评论

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

×
20
完善资料,
赚取积分