第4章 消息服务模型与控制原语 - 页码66
我们继续深入解析 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 的结构对应关系。