第4章 消息服务模型与控制原语 - 页码66
NVMe-MI 1 min read

第4章 消息服务模型与控制原语 - 页码66

Blog Author

我们继续深入解析 NVMe-MI 2.0 规范第 67 页内容,该页包含了 Figure 49:NVMe-MI Send Command 的映射表格。它将 NVMe-MI Request Message 各字段NVMe Admin Command Submission Queue Entry (SQE) 中的字段一一对应起来,展示了如何将一个带内 NVMe-MI 命令结构体“隧道”封装进标准 NVMe 命令格式中。


✅ 一、映射表格总览(Figure 49)

这是我们在前一页图示(Figure 48)所见图形映射的文字补充说明,更加精确地标明了字节偏移和字段含义。我们将其逐字段解析。


🔹【1】通用结构字段映射

NVMe-MI 字段 SQE 字段 描述
n/a CDW0 (03:00) 标准 Admin Command 控制字,由 NVMe Base 规范定义
n/a NSID (07:04) 主机应设置为 0h,在 NVMe-MI 隧道中不使用 NSID
n/a MPTR / DPTR (23:08, 39:24) NVMe-MI 不使用元数据指针,Request Data 直接放在 Data Buffer 中

🔹【2】关键 NVMe-MI 字段映射到 SQE 中的位置

NVMe-MI 请求字段 SQE 字段 描述
03:00 – NMH (Header) CDW10 (43:40) 映射到 Command Dword 10,小端格式
04 – OPC (Opcode) CDW11 (47:44) 映射到 CDW11 的低字节(Byte 0)
07:05 – Reserved CDW11 高字节 填入保留位(Byte 1~3)
11:08 – NMD0 (Mgmt Dword 0) CDW12 (51:48) 管理指令字 0,参数用途由命令定义
15:12 – NMD1 (Mgmt Dword 1) CDW13 (55:52) 管理指令字 1,支持附加参数传输
n/a CDW14 (59:56) 保留字段,无实际映射
n/a CDW15 (63:60) 保留字段,无实际映射

📦 数据内容传输位置:

  • NVMe-MI 的 Request Data 部分(如果命令有附带数据)通过 Data Pointer (DPTR) 指向的数据缓冲区传输。
  • 该缓冲区在主机侧准备并提交,实际数据内容与 Request Message 的尾部结构一致

✅ 二、字段说明图示(简要对照)

NVMe-MI Request Message            ↔️     NVMe Admin SQE
──────────────────────────────        ──────────────────────────────
NMH (0x00 ~ 0x03)                    →     CDW10 (0x40 ~ 0x43)
OPC (0x04) + Reserved (0x05 ~ 0x07) →     CDW11 (0x44 ~ 0x47)
Mgmt Dword 0 (0x08 ~ 0x0B)          →     CDW12 (0x48 ~ 0x4B)
Mgmt Dword 1 (0x0C ~ 0x0F)          →     CDW13 (0x4C ~ 0x4F)
Request Data (可选)                 →     Data Buffer via DPTR

✅ 三、主机实现建议(Host Software Perspective)

操作项 建议
NSID 设置 始终写入 0h,由 NVMe-MI 命令自身指定目标控制器/命名空间
CDW10~13 填充 由 NVMe-MI 消息体映射填充,不需要解释字段含义,只需照搬字节
Data Buffer 设置 需正确排布 NVMe-MI 消息数据结构,后续会与 Response 一一对应

✅ 四、小结:带内 Send 命令请求映射要点

模块 映射位置 注意事项
NMH(Header) CDW10 小端格式
OPC + Reserved CDW11 Opcode 为 Byte 0
管理参数字段(NMD0/1) CDW12、CDW13 映射直接填入
Request Data Data Buffer(通过 DPTR) 不使用 DPTR 字段本身,而是直接传输

下一页(第 68 页)将进入 Figure 50 / 51:NVMe-MI Response 与 NVMe Completion Queue Entry (CQE) 的映射方式,也就是 NVMe-MI Receive 命令的响应结构实现,完整建立带内隧道命令的“回路”。

是否继续深入解析带内 Response 的结构映射?我可以继续为你图解 CQE 的结构对应关系。