第3章 物理层与MCTP传输 - 页码38
NVMe-MI 1 min read

第3章 物理层与MCTP传输 - 页码38

Blog Author

你现在看到的是 Figure 20: NVMe-MI Message Fields(图 20:NVMe-MI 消息字段) 的 Byte 1 部分,字段名为 NVMe-MI Message Parameters (NMP)。这是整个 NVMe-MI 消息头的关键部分之一,用于表达请求/响应、消息类型、命令槽等基本控制信息。

下面我们将 逐位深入讲解 NMP 字节的结构和使用规则,帮助你完全掌握这个控制字段的意义和应用。


✅ 图 20:Byte 1 – NVMe-MI Message Parameters (NMP)

Bit位 字段名 含义
7 ROR (Request or Response) 消息方向标识:请求(0) 或 响应(1)
6:3 NMIMT (NVMe-MI Message Type) 指定消息的具体类型(如命令、事件等)
2:1 Reserved 保留位,写 0,读时忽略
0 CSI (Command Slot Identifier) 指示该命令属于哪个槽(仅在 Out-of-Band 使用)

🔸 Bit 7: ROR (Request or Response)

说明
0 代表 Request Message
1 代表 Response Message
AE Messages 该字段 无效,必须设为 0

✅ 用于区分消息是从 管理端发出(请求)还是从 设备返回(响应)。


🔸 Bits 6:3: NMIMT (NVMe-MI Message Type)

4 位字段,用于标识该 NVMe-MI 消息的具体类型。

类型说明 使用场景 参考章节
0h Control Primitive 管理控制(如暂停、重放) §4.2.1
1h NVMe-MI Command 管理命令集(如读取VPD、健康信息) §5
2h NVMe Admin Command 透传 Admin 指令(如 Get Log Page) §6
3h Reserved 保留,禁止使用 -
4h PCIe Command 配置/IO/内存访问命令 §7
5h Asynchronous Event AEM 异步事件 §4.1.3
6h–Fh Reserved 保留,禁止使用 -

✅ 每种消息类型在后续章节有具体结构说明,你可以通过 NMIMT 字段快速知道该如何解析 payload。


🔸 Bit 0: CSI (Command Slot Identifier)

⚠️ 仅适用于 Out-of-Band 请求或响应消息,In-Band 与 AEM 不适用。

所属命令槽
0 Slot 0
1 Slot 1
  • Out-of-Band 使用两个并发槽来发送/接收命令;
  • CSI 决定该条消息进入哪个槽处理流程

🎯 每个 Management Endpoint 仅支持两个并发命令槽,便于异步命令并发处理。


✅ NMP 字节结构图(示意)

+----------+--------------+-------------+--------+
| Bit 7    | Bit 6:3      | Bit 2:1     | Bit 0  |
| ROR      | NMIMT        | Reserved    | CSI    |
+----------+--------------+-------------+--------+
| Req/Resp | Msg Type     | 00b         | SlotID |
+----------+--------------+-------------+--------+

✅ 实用解析举例

类型 ROR NMIMT CSI 含义
请求健康状态 0 1h 0 请求类型、NVMe-MI 命令、使用 Slot 0
异步事件通知 0 5h 0 异步事件,无 CSI,无需回应
返回响应 1 1h 0 响应 NVMe-MI 命令(来自 Slot 0)

✅ 总结重点

  • ROR:确定消息方向(请求/响应);
  • NMIMT:是 NVMe-MI 消息类型的核心字段;
  • CSI:仅在带外使用,标识命令所属槽位;
  • 所有保留位必须写 0;
  • 异步事件消息使用特殊类型(5h)并禁用 CSI 与 ROR。

如果你有兴趣,我可以为你接下来分析:

🔸 图 21:Rocksoft CRC 算法参数(用于 Integrity Check)

🔸 图 22:消息完整性校验示例(Message Integrity Check Example)

是否继续?你也可以告诉我你更想深入的方向!