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

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

3天内不再提示

NVMe控制器设计1

高速传输与存储 来源:高速传输与存储 作者:高速传输与存储 2025-04-24 09:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

NVMe 控制模块负责实现用户请求事务与 NVMe 事务的转换、 NVMe 命令提交与完成机制、 PRP 寻址机制。 在 NoP 逻辑加速引擎中, 用户通过配置系统控制模块的相关寄存器来发送 DMA 或队列管理请求, NVMe 控制模块在得到任务信息后生成对应的 NVMe 命令, 并通过指令提交与完成机制实现与 NVMe SSD 的任务交互。NVMe 控制模块一方面通过硬件实现降低了命令交互的延迟和 PRP 寻址机制的过程延迟, 另一方面通过结构的设计继承了软件协议栈的灵活性, 这使得系统即使在不同的应用场景下也能充分发挥性能优势。 如图 3.8 所示 NVMe 控制模块按照功能划分为命令控制模块、 队列管理模块、 PRP 管理模块三个部分。

wKgZPGgJlsSAJmw9AABp1vyoB8Q125.png

图1 NVMe控制器架构图

指令控制模块负责 NVMe 指令的组装、分配、注销。在 NVMe 协议中, 一条 NVMe指令由 16 个双字构成, 不同指令对应字段的含义也不相同。 因此当系统控制模块发起请求事务时, 指令控制模块将对应寄存器中的信息整合成为 NVMe 的提交队列条目, 并分配唯一的指令 ID, 再将条目写入提交队列中, 实现指令的组装和分配; 当

接收到完成队列中的正常完成条目时, 指令控制模块提取其中的指令 ID 进行注销。队列管理模块实现 NVMe 提交队列和完成队列的存储、 门铃机制、 仲裁机制,以及队列的创建和删除管理。 NVMe 队列是实现 NVMe 指令提交与完成机制的核心组件, 队列的数量和深度直接影响数据传输的性能。 在小数据随机读写的场景下, 性能随着队列数量和深度线性增加然后趋于饱和; 在大数据顺序读写的场景下, 性能则受队列数量和深度影响很小。 为了适应不同的应用场景, 队列管理模块采用存储和控制分离的结构设计, 实现动态配置队列, 以更低的时间和资源成本实现性能的最优发挥。

PRP 控制模块实现 PRP 的管理与生成。 每一条涉及数据传输的 NVMe 指令都有对应的 PRP 条目或列表来指示地址, PRP 控制模块根据指令 ID 创建对应的 PRP 列表头指针, 在有指令需要读取 PRP 列表时根据 ID 生成与指令对应的 PRP 条目。 PRP控制模块使 PRP 的存储位置更加接近数据传输链路, 从而降低 PRP 读取延迟, 提高数据传输效率。

接下来对指令控制模块、 队列管理模块、 PRP 控制模块的结构设计进行分析。

审核编辑 黄宇

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

    关注

    114

    文章

    17638

    浏览量

    190223
  • nvme
    +关注

    关注

    0

    文章

    287

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVMe高速传输之摆脱XDMA设计50:主要功能测试结果与分析2 nvmePCIe高速存储

    。 2) NVMe初始化 NVMe初始化是通过PCIe总线与控制器进行配置和通信的过程,它主要包括硬件加电、链路训练、队列配置及命令协商等,下面给出相关测试图。 启动 NVMe
    发表于 12-01 09:32

    Xilinx高性能NVMe Host控制器IP+PCIe 3.0软核控制器IP,纯逻辑实现,AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0

    Host Controller IP作为一个对PCIe SSD的高性能存储控制器,不但提供对PCIe SSD的配置管理功能,而且提供对PCIe SSD的IO(Page)读写以及DMA读写功能。NVMe
    发表于 11-14 22:40

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

    。 测试点与对应测试步骤如表 1所示。 表 1 队列管理功能验证步骤 (1) 创建队列功能测试结果 测试步骤 1、 2 关键信号波形如图1
    发表于 10-13 11:17

    NVMe高速传输之摆脱XDMA设计30: NVMe 设备模型设计

    设备则需要开启至少 8KB 的 BAR0 空间, BAR0 地址空间中存放 NVMe 设备寄存组, 其中包含了初始化过程中需要使用的控制器功能寄存
    发表于 09-29 09:31

    NVMe高速传输之摆脱XDMA设计之十:NVMe初始化状态机设计

    进入ENABLE_CC状态。 ENABLE_CC:NVMe控制器启动状态。该状态下配置BAR空间的控制器配置寄存的Enable字段为1,并
    发表于 07-05 22:03

    NVMe协议研究扫盲

    Johnson在Zynq上挂载NVMe SSD,借助Linux系统中的NVMe驱动程序实现了对NVMe SSD的控制,并在Zynq-7z030芯片上进行了测试,写速度为84.7 MB
    发表于 06-02 23:28

    NVMe协议简介2

    通过PCIe进行,使用PCIe的存储读写TLP请求。指令的提交与完成机制如图1所示,图中展示的指令提交与完成步骤如下: 图1 NVMe指令提交与完成步骤图 (1)主机
    发表于 05-15 23:15

    NVMe协议简要分析

    控制器更新。NVMe的队列结构如图1所示。 []()图1 队列示意图 NVMe队列的深度是固定的,通过Tail和Head来分别指向队列的首尾
    发表于 05-15 00:34

    NVMe控制器IP设计之接口转换

    这是NVMe控制器IP设计系列博客之一,其他的见本博客或csdn搜用户名:tiantianuser。相关视频见B站用户名:专注与守望。 接口转换模块负责完成AXI4接口与控制器内部的自定义接口之间
    发表于 05-10 14:33

    NVME控制器之队列管理模块

    队列管理模块是整个NVMe Host控制器的核心模块,该模块实现了提交队列与完成队列的管理,多队列请求的仲裁判决等功能。队列管理模块中含有数据选择单元、SQ、CQ、和仲裁等模块。其中Admin
    发表于 05-03 20:19

    NVMe控制器之完成信息解析模块

    完成信息解析模块用于解析NVMe命令执行完成后返回的信息。该模块首先提取完成信息中的Status Field字段和ID号。通过检查Status Field字段,判断NVMe命令是否成功执行。
    的头像 发表于 05-03 15:58 469次阅读

    NVME控制器之队列管理模块

    队列管理模块是整个NVMe Host控制器的核心模块,该模块实现了提交队列与完成队列的管理,多队列请求的仲裁判决等功能。队列管理模块中含有数据选择单元、SQ、CQ、和仲裁等模块。
    的头像 发表于 05-03 15:32 420次阅读
    <b class='flag-5'>NVME</b><b class='flag-5'>控制器</b>之队列管理模块

    工程机械控制器厂家 控制器国产替代 #国产控制器#控制器厂家#控制器品牌

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年04月29日 14:15:05

    NVME控制器设计1

    的相关寄存来发送 DMA 或队列管理请求, NVMe控制模块在得到任务信息后生成对应的 NVMe 命令, 并通过指令提交与完成机制实现与 NVMe
    发表于 04-24 09:45

    工程机械控制器如何选型?控制器选型指南 #控制器 #车载控制器 #整车控制器 #控制器选型

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年03月14日 10:54:24