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

    文章

    17931

    浏览量

    196021
  • nvme
    +关注

    关注

    0

    文章

    304

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    IDEC FT1A SmartAXIS 控制器:高性价比自动化解决方案

    IDEC FT1A SmartAXIS 控制器:高性价比自动化解决方案 在自动化控制领域,选择一款性能卓越且价格合理的控制器至关重要。IDEC 的 FT
    的头像 发表于 05-17 09:05 122次阅读

    RL78/L1C微控制器:特性、规格与应用全解析

    RL78/L1C微控制器:特性、规格与应用全解析 在当今的电子领域,微控制器扮演着至关重要的角色,它们广泛应用于各种电子设备中,为设备的智能化和自动化提供了核心支持。RL78/L1C微
    的头像 发表于 04-13 14:45 275次阅读

    高性能网络存储设计:NVMe-oF IP的实现探讨

    的 NVMeRAID0 横向扩展能力,通过多通道NVMe控制器并行访问多个SSD,实现以下技术特性: •多 SSD 带宽聚合,读写性能接近线性提升 •跨盘条带(Striping)调度优化,减少跨盘等待
    发表于 12-19 18:45

    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设计44:工程设计考量?

    运行过程和测试结果。 NoPHAE 模块为课题设计的 NoP 逻辑加速引擎, ctrl_axi 控制总线接口连接到CPU, data_axi数据传输总线连接到MIG控制器与DDR对接, PCIe接口
    发表于 11-12 09:52

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

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

    NVMe高速传输之摆脱XDMA设计33:初始化功能验证与分析

    都通过 NVMe 子系统模型来实现, 因此对初始化功能的测试用例的实现比较简单, 只需要配置初始化控制寄存控制初始化进程, 要实现不同应用场景的模拟则需要通过构建不同拓扑结构的
    发表于 10-08 08:02

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

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

    codesys 3.5版本控制器联机指导:如何进行RS232联机?#codesys编程控制器 #控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年08月29日 09:07:25

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

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

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

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

    NVMe IP高速传输摆脱XDMA设计之四:系统控制模块设计

    系统控制模块负责实现 NVMe over PCI 逻辑加速引擎的控制功能, 其结构如图 1 所示。 用户通过系统控制模块实现对初始化功能、
    发表于 06-29 18:07

    NVMe协议研究扫盲

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