第4章 消息服务模型与控制原语 - 页码73
非常好!我们继续深入分析 NVMe-MI 2.0 规范第 74 页的内容,即:
✅ Figure 55:NVMe-MI Receive 命令的 Request 消息如何映射到 NVMe Admin Command SQE 的表格表示
✅ 一、Figure 55 表格结构概览
该表格是对前页 Figure 54 图解结构的精确文字化:逐字段对照 NVMe-MI Request Message 字段 与 Admin SQE(提交队列项)字段 的映射关系。
✅ 二、字段映射详解(文字对照)
🔹 NVMe-MI Request → SQE 对照表
NVMe-MI Request 字段 | 映射到 SQE | 描述 |
---|---|---|
❌ n/a | CDW0 (03:00) | 无映射,使用标准 NVMe Admin Command 格式字段 |
❌ n/a | NSID (07:04) | 不适用于 MI,主机需填 0h |
❌ n/a | MPTR (23:08) | 不使用 |
❌ n/a | DPTR (39:24) | 用于接收 Response Data,指向主机准备的内存区域 |
NMH (03:00) | CDW10 (43:40) | 消息头字段(类型、IC 位等)映射至 CDW10(小端序) |
Opcode (04) | CDW11 Byte 0 (47) | 操作码(如 Get, Read, List 等)映射至 CDW11 的低字节 |
Reserved (05~07) | CDW11 Bytes 1~3 | 保留字段填入剩余 3 字节 |
Mgmt Dword 0 (08~11) | CDW12 (51:48) | NVMe-MI 管理指令参数 |
Mgmt Dword 1 (12~15) | CDW13 (55:52) | NVMe-MI 管理指令参数 |
❌ n/a | CDW14 / CDW15 (59~63) | 保留字段,无映射使用 |
❌ Request Data (16~N-1) | ❌ n/a | Receive 命令不包含 Request Data |
❌ MIC (N+3:N) | ❌ n/a | 带内机制不使用 MIC |
🧠 映射关键理解点:
- ✅ DPTR 指针有效:Receive 命令的实际响应数据将写入 DPTR 所指的主机缓冲区中。
- ❌ Request Data 字段无效:Receive 不是发送命令,不需要 Request Payload。
- ❌ MIC 不参与:带内机制中整个 MI 通信过程中均不使用 MIC 校验。
- ✅ Opcode/NMH/NMDx 等字段依然重要,用于指定请求的是哪个 MI 命令及其参数。
✅ 三、实战场景举例:读取结构体列表(Get Data Structure List)
☑️ SQE 构建流程如下:
SQE 字段 | 填入内容 |
---|---|
CDW10 | 填入 NMH(包含消息类型、IC 等) |
CDW11 | Byte 0: Opcode = 0x01 (例如:Get Data Structure)Byte 1-3: Reserved |
CDW12/13 | 设置 NMD0/NMD1 参数(如结构体 ID = 0x01 ) |
DPTR | 指向主机缓冲区(接收响应结构体内容) |
NSID | 设置为 0h |
CDW14/15 | 保留位,清 0 即可 |
📌 总结对照表(核心字段)
NVMe-MI Request 字段 | 对应 SQE 字段 | 说明 |
---|---|---|
NMH (0–3) |
CDW10 |
消息头 |
OPC (4) |
CDW11[0] |
管理命令操作码 |
NMD0/NMD1 (8–15) |
CDW12/13 |
参数 |
Response Data |
DPTR 指向 |
将从控制器填充到主机缓冲区 |
MIC |
— | 不使用 |
🧠 理解差异:Receive vs Send 字段结构重点对比
对比项 | NVMe-MI Send | NVMe-MI Receive |
---|---|---|
包含 Request Data | ✅ 是 | ❌ 否 |
需准备接收 Buffer | ❌ 否(除非有 Response) | ✅ 是(必需) |
使用 DPTR |
接收端可能忽略 | ✅ 控制器写回数据 |
MIC 字段作用 |
❌ 无效 | ❌ 无效 |
下一页 Figure 56 将会解释 Receive 响应如何映射至 NVMe CQE(即 Completion Queue Entry),也就是 Controller 如何返回数据与状态码。是否继续?我可以继续帮你逐字段解析。也可以为你绘制整个 带内 NVMe-MI 通信过程的完整交互图(Sequence Diagram),帮助记忆。