NVMe架构与操作理论 - 第17页
NVME2.0协议解读 1 min read

NVMe架构与操作理论 - 第17页

Blog Author

你这部分引用的是 《NVM Express® Base Specification, revision 2.0b》 中第 1.4.3 继续部分和 1.5 开始的内容,涉及两个重点:

  1. 数据单位之间的关系(Byte, Word, Dword, Qword)及其在内存中的排列结构
  2. Admin Queue(管理队列)定义及其作用

我们逐个深入分析并配合图形结构讲解,帮你彻底掌握这部分的知识。


✅ 一、Byte, Word, Dword 的关系与排列(图 3)

🔹 基本单位定义:

单位 大小(Byte) 结构说明
Byte 1 字节 = 8 bit 最基本的数据单位
Word 2 字节 = 16 bit 包含 Byte 0 和 Byte 1
Dword 4 字节 = 32 bit 包含 Word 0(Byte 0~1)和 Word 1(Byte 2~3)
Qword 8 字节 = 64 bit 包含两个 Dword(共 4 个 word、8 个 byte)

🔹 图解说明(图 3)补充解释:

虽然图片文字图不易完整渲染,但我们可以结合图示和规范的逻辑文字说明如下构造:

🔸 以一个 32-bit Dword 举例:

+---------+---------+---------+---------+
| Byte 3  | Byte 2  | Byte 1  | Byte 0  |   ← 每个 Byte 是 8 bit
+---------+---------+---------+---------+
    ↑         ↑         ↑         ↑
 Word 1   Word 0             ← 每个 Word 是 2 Byte(16 bit)


 Dword (4 Byte, 32 bit)

默认排列顺序:Little Endian(小端序) - 即:低字节存在低地址,高字节存在高地址 - 举例: - 数值 0x12345678h - 存储顺序为:78h 56h 34h 12h(从 Byte 0 到 Byte 3)


🧠 应用场景

  • 在解析 寄存器(如 CAP, VS)Identify Controller 数据结构Log Page 条目 等时,理解字段从 byte 到 dword 的映射是必须的;
  • 在处理传输协议时(如 PCIe 或 NVMe-MI over SMBus),也要正确按字节偏移来解析数据帧。

✅ 二、Admin Queue(管理队列)

🔹 定义(1.5)

Admin Queue 是用于 NVMe 控制器管理指令提交与完成响应的基本通信机制。它包括:

类型 Queue Identifier 用途
Admin Submission Queue ID = 0 提交 Admin 指令(如 Identify, Set Features, Get Log Page 等)
Admin Completion Queue ID = 0 接收指令的执行结果(即 Completion Entry)

🔹 特性说明:

  • Admin SQ 和 CQ 是一一绑定的:即 一个 Admin SQ 只能连接到一个 Admin CQ
  • 设备上电初始化后,Admin Queue 是第一个初始化的队列,也是管理命令(非数据命令)传输的主要路径
  • 使用 Admin Queue 进行:
  • 控制器初始化配置(如设置特性、识别信息)
  • 日志查询
  • 命名空间管理
  • 固件更新
  • 安全管理 等等

🧩 举例:Identify Controller 命令流程

  1. 主机构建 Identify 命令(CDW10 = 01h)
  2. 将命令写入 Admin Submission Queue(ID=0)
  3. 控制器执行命令,将结果写入 DMA 缓冲区
  4. 控制器将完成信息写入 Admin Completion Queue(ID=0)
  5. 主机读取 CQ Entry 确认命令执行状态

✅ 总结与建议

项目 要点
✅ 字节关系 1 Dword = 2 Word = 4 Byte,默认 Little Endian 排列
✅ 实现解析 字段解码要正确读取对应 Byte 顺序(从 Byte 0 开始)
✅ Admin Queue ID 固定为 0,是所有管理命令的传输通道
✅ 小端存储 记住:低位数据在低地址(Byte 0)

🔍 建议深入部分:

  • 我可以帮你复刻 Identify Controller 的完整 Admin Queue 提交与 CQ 返回全过程图解(结合寄存器与 DMA 数据结构)。
  • 也可以深入讲解后面章节的 Queue Pair 创建机制(如何创建非 Admin 的 I/O Submission Queue 与 Completion Queue)。

你对哪一部分最感兴趣?我们可以立刻深入分析!