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

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

3天内不再提示

NVME控制器设计之指令控制

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

扫码添加小助手

加入工程师交流群

指令控制模块由一个指令信息缓存, 一个指令组装状态机和一个 ID 池组成。 指令信息缓存中存放着由系统控制模块写入的待处理指令信息; 指令组装状态机获取缓存的指令信息, 将其组装成提交队列条目写入提交队列中; ID 池则用于存放可使用的指令 ID。

wKgZPGgJn0iAM8xbAABgDb_iiTU521.png

图1 NVMe控制器之指令控制转移图

指令组装状态机状态转移如图 1所示。 系统复位后, 首先进入 IDLE 状态。 在IDLE 状态下, 当检测到指令信息缓存非空时, 表示有新的指令信息需要处理, 跳转到 GET_CMD 状态; 当指令信息缓存为空时, 保持 IDLE 状态。

在 GET_CMD 状态下, 读取一条缓存中的指令信息, 同时从 ID 池中获取一个 ID,进入 SEL_SQ 状态; 如果 ID 池中的 ID 全部都在被使用, 则保持 GET_CMD 状态。

在 SEL_SQ 状态下, 根据读取的指令信息的指令类型选择提交条目将要放入的提交队列。 当指令类型为 Admin 指令时, 选择 Admin 提交队列, 当指令类型为 I/O 指令时, 使用轮询仲裁选择将要放入的队列。 然后跳转到 WR_SQ 状态。

在 WR_SQ 状态下, 将获取的 ID 和指令信息组装成为提交条目, 写入 SEL_SQ状态下选择的队列。 如果指令涉及数据传输, 在该状态下还要将 ID 和对应的 PRP 写入 PRP 控制模块。 完成指令的写入后, 如果指令信息缓存非空, 跳转到 GET_CMD获取新的指令信息, 否则回到 IDLE 状态。

ID 池在复位时被写入位宽为 16 比特的连续 ID, 由于实际应用中 SSD 处理任务的性能有限, 所以将 ID 池深度设置为 1024, 足以满足常见 SSD 的并发性能。 在有新的指令信息被组装成提交条目时, ID 池中的 ID 被读出; 在接收到新的完成条目时,将完成条目中返回的指令 ID 写入 ID 池。

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

审核编辑 黄宇

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

    关注

    0

    文章

    11

    浏览量

    7011
  • nvme
    +关注

    关注

    0

    文章

    287

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

    设备控制器可以正常处理指令,然后跳转到DONE状态。 DONE:NVMe配置初始化完成状态,该状态表示NVMe配置初始化过程正常完成,当复位有效时跳转到IDLE状态,否则保持ERROR
    发表于 07-05 22:03

    NVMe协议分析提交队列

    NVMe指令提交与完成机制是NVMe协议的核心,该机制制定了NVMe指令的交互流程和处理步骤。
    的头像 发表于 05-15 23:25 540次阅读
    <b class='flag-5'>NVMe</b>协议分析<b class='flag-5'>之</b>提交队列

    NVMe协议简介2

    NVMe指令提交与完成机制 NVMe指令提交与完成机制是NVMe协议的核心,该机制制定了NVMe
    发表于 05-15 23:15

    NVMe控制器IP设计系列接口转换模块

    接口转换模块负责完成AXI4接口与控制器内部的自定义接口之间的转换工作。由于AXI4接口协议的实现会占用大量的逻辑资源,为了节约资源,控制器内部的接口信号均采用逻辑简单的自定义接口,对外通过此模块转换为通用的AXI4接口,从而实现与其他模块之间的高效互联。
    的头像 发表于 05-10 14:36 522次阅读
    <b class='flag-5'>NVMe</b><b class='flag-5'>控制器</b>IP设计系列<b class='flag-5'>之</b>接口转换模块

    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 470次阅读

    NVME控制器队列管理模块

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

    H5U系列可编程逻辑控制器指令手册

    INOVANCE汇川-H5U系列可编程逻辑控制器指令手册-中文
    发表于 04-30 16:38 7次下载

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

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

    NVME控制器指令控制模块设计

    指令控制模块由一个指令信息缓存, 一个指令组装状态机和一个 ID 池组成。 指令信息缓存中存放着由系统
    发表于 04-25 08:07

    NVMe控制器设计1

    NVMe 控制模块负责实现用户请求事务与 NVMe 事务的转换、 NVMe 命令提交 与完成机制、 PRP 寻址机制。这里简介其组成,后续分享其他模块设计。
    的头像 发表于 04-24 09:51 605次阅读
    <b class='flag-5'>NVMe</b><b class='flag-5'>控制器</b>设计1

    NVME控制器设计1

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

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

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