0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVMe IP高速传输却不依赖XDMA设计之十:队列管理模块下

高速传输与存储 来源:高速传输与存储 作者:高速传输与存储 2025-07-30 16:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

wKgZO2iJ2KuAXFb4AADorI0gq8Q618.png

图1 队列管理结构

由于提交队列管理单元使用表单管理队列信息,所以使队列具有了可动态配置的属性,通过修改表单的信息便可以修改队列数量和深度。在实际应用中,当出现大量随机数据读写请求时,可以通过修改表单增加队列数量和深度,增强随机读写性能;在顺序读写数据时,可以清除表单减少队列数量和深度,降低资源占用和功耗。

对于完成队列,设置一个完成队列管理单元、一个完成条目解析单元和一块异常完成条目缓存。完成管理单元中同样包含了完成队列表单,与提交队列表单不同的是完成队列表单中只包含了门铃地址、队列深度和门铃头、尾指针,并且只设置了一个admin完成队列和一个I/O完成队列。

这样的结构设计基于两个方面的考量:首先,当完成条目状态为正常完成时,只需将完成条目中的指令ID释放到ID池,将对应提交队列ID的门铃头指针更新到提交队列条目,当完成条目状态为异常时,将其写入异常完成条目缓存等待处理,这些过程由完成条目解析单元在短时间内并行处理,不会出现完成队列写请求的阻塞,因此不需要设置多个I/O完成队列和完成条目的存储空间。其次,由于ID池的存在,所有的NVMe指令都具有一个唯一的ID,完成条目中的提交队列ID不再作为指令的标识,因此仅使用一个I/O完成队列对应多个I/O提交队列是可行的,并且异常的I/O完成条目和异常的admin完成条目存放在同一个缓存中也不会影响ID的辨识作用。

在有新的提交条目写入提交队列和新的完成队列写请求时,提交队列管理单元和完成队列管理单元向对应的队列发起门铃写请求,这些请求经过Round Robin仲裁器的仲裁后被发送给SSD。实际上,随着仲裁输入数量的增加,仲裁的效率和时序也会变差[[i]]。假设采用完成队列和提交队列一一对应的结构,仲裁的输入数量将是提交队列数量的2倍,要保证仲裁效率和良好的时序,只能降低提交队列数量,导致性能下降。而完成队列管理单元所实现的结构只占用两个仲裁请求输入,基于此可以增加更多的I/O提交队列,充分发挥SSD性能。

B站已给出相关性能的视频,如想进一步了解,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click


审核编辑 黄宇

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

    关注

    0

    文章

    301

    浏览量

    23923
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVMe高速传输摆脱XDMA设计54:如何测试队列管理功能2

    本博文主要交流设计思路,在本博客已给出相关博文几篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有NVME或RDMA 产品及项目需求,请看B站视频后联系
    发表于 12-10 08:33

    NVMe高速传输摆脱XDMA设计53:如何测试队列管理功能

    本博文主要交流设计思路,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有NVME或RDMA 产品及项目需求,请看B站视频后联系。 这里通过实际环境中测试队列管理
    发表于 12-09 08:21

    NVMe高速传输摆脱XDMA设计37:队列管理功能验证与分析1

    本文主要交流设计思路,在本博客已给出相关博文九十多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有产品或项目需求,请看B站视频后联系 队列管理功能主要包含创建
    发表于 10-13 11:17

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

    这是采用PCIe设计NVMe,并非调用XDMA方式,后者在PCIe4.0时不大方便,故团队直接采用PCIe设计,结合UVM验证加快设计速度。 队列管理模块采用
    的头像 发表于 08-04 09:53 873次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>九:<b class='flag-5'>队列管理</b><b class='flag-5'>模块</b>(上)

    NVMe高速传输摆脱XDMA设计队列管理模块设计(

    ​续上,队列管理模块采用队列的存储与控制分离的设计结构,如图1所示为队列管理模块的结构框图。 ​编辑 图1
    发表于 07-30 16:27

    NVMe高速传输摆脱XDMA设计九:队列管理模块设计(上)

    设计,结合UVM验证加快设计速度。队列管理模块采用队列的存储与控制分离的设计结构,如图1所示为队列管理模块的结构框图。 图1
    发表于 07-27 17:41

    NVMe IP高速传输却不依赖XDMA设计八:系统初始化

    采用XDMA是许多人常用xilinx库实现NVMe或其他传输的方法。但是,XDMA介绍较少,在高速存储设计时,尤其是PCIe4.0模式
    的头像 发表于 07-26 15:14 981次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>八:系统初始化

    NVMe IP高速传输却不依赖XDMA设计五:DMA 控制单元设计

    DMA 控制单元负责控制 DMA 传输事务, 该单元承担了 DMA 事务到 NVMe 事务的转换任务, 使用户对数据传输事务的控制更加简单快捷。 DMA 控制功能由 DMA寄存器组实现。
    的头像 发表于 07-02 19:47 2175次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>五:DMA 控制单元设计

    NVMe IP高速传输却不依赖XDMA设计五:DMA 控制单元设计

    DMA 控制单元负责控制 DMA 传输事务, 该单元承担了 DMA 事务到 NVMe 事务的转换任务, 使用户对数据传输事务的控制更加简单快捷。 DMA 控制功能由 DMA寄存器组实现。DMA
    发表于 07-02 19:45

    NVMe IP高速传输却不依赖XDMA设计四:系统控制模块

    系统控制模块负责实现 NVMe over PCI 逻辑加速引擎的控制功能, 其结构如图 1 所示。 用户通过系统控制模块实现对初始化功能、 队列管理功能、 DMA 功能等主要功能的控制
    的头像 发表于 06-29 17:52 641次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>四:系统控制<b class='flag-5'>模块</b>

    NVMe IP高速传输却不依赖XDMA设计之三:系统架构

    所设计的新系统架构中,Nvme over PCIe IP通过 PCIe 3.0x4 接口连接 NVMe固态硬盘, 并提供 AXI4-Lite 接口用于系统控制, 以及 AXI4 接口用于数据
    的头像 发表于 06-29 17:46 1169次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计之三:系统架构

    NVMe IP高速传输却不依赖便利的XDMA设计之三:系统架构

    加速模块、 PCIE 集成块。 以下为各功能模块的定义: 系统控制模块是实现NVMe over PCIe关键组件。 NoP 逻辑加速引擎内部集成了各种功能, 包括初始化、
    发表于 06-29 17:42

    NVMe IP高速传输却不依赖XDMA设计之二:PCIe读写逻辑

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块分别
    的头像 发表于 06-09 17:25 896次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计之二:PCIe读写逻辑

    NVMe IP高速传输却不依赖便利的XDMA设计之二

    NVMe IP放弃XDMA原因 选用XDMANVMe IP的关键
    发表于 05-25 10:20

    NVMe IP高速传输却不依赖便利的XDMA设计之一

    NVMe IP放弃XDMA原因 选用XDMANVMe IP的关键
    发表于 05-24 17:09