数据结构读取与响应格式 - 页码125
NVMe-MI 1 min read

数据结构读取与响应格式 - 页码125

Blog Author

我们继续深入分析 NVMe-MI 2.0 规范中的 2-Wire Port Specific Data 的最后字段 以及 Controller List & Controller Information 数据结构(5.7.3 ~ 5.7.4)


🔹 Figure 116(续):2-Wire Port Specific Data

✅ 字节 12:NVMe Basic Management (NVMEBM)

Bit 名称 说明
0 NVMEBMS(NVMe Basic Management Support) 若为 1,表示此端口支持“NVMe Basic Management Command
若为 0,则不支持该命令。

⚠️ 注意: - 强烈建议清除此位(即设置为 0) - 该命令 非标准 NVMe-MI 协议的一部分,仅供附录参考说明(见 Appendix A)


🧩 5.7.3 Controller List Response Data

该结构体列出了当前 NVM Subsystem 中所有的 Controller,包括:

  • I/O Controller
  • Administrative Controller
  • Primary/Secondary Controller

📌 关键点:

  • 返回的控制器列表从指定的 CTRLID 开始(NVMe Management Dword 0)
  • 最多可包含 2047 个 Controller Identifier
  • 使用此结构可以一次性获取所有存在控制器的编号

📖 具体 Controller Identifier 的定义请参考 NVMe Base Specification


🧩 5.7.4 Controller Information Response Data

用于获取 特定 Controller 的详细信息。响应结构见 Figure 117。


✅ 字节 00:Port Identifier (PORTID)

表示该 Controller 所连接的 PCIe 端口编号


✅ 字节 01 ~ 04:Reserved


✅ 字节 05:PCIe Routing ID 信息(PRII)

Bit 字段 含义
0 PCIERIV 若为 1,表示设备已捕获 PCI Bus Number + Device Number(或仅 Bus Number,若为 ARI)
若为 0,表示未捕获
7:1 保留

✅ 字节 06 ~ 07:PCIe Routing ID (PRI)

这个字段编码了 PCIe 地址信息:

Bit 范围 字段 说明
15:08 PCIBN PCI Bus Number
07:03 PCIDN PCI Device Number
02:00 PCIFN PCI Function Number

❗对于 ARI(Alternative Routing-ID Interpretation)设备,此处的 8 位合并表示完整的 Function Number(替代 Device/Function 分离)。


✅ 字节 08 ~ 09:PCI Vendor ID (PCIVID)

标准 PCI 标识,表示厂商(Vendor)编号。

✅ 字节 10 ~ 11:PCI Device ID (PCIDID)

对应厂商定义的具体设备型号 ID。

✅ 字节 12 ~ 13:PCI Subsystem Vendor ID (PCISVID)

用于区分子系统级别厂商 ID(常用于 OEM 区分)。

✅ 字节 14 ~ 15:PCI Subsystem Device ID (PCISDID)

用于指定子系统设备 ID。


✅ 总结图示(结构关系回顾):

Controller Information Data Structure:
+----------------+-------------------------------------------------+
| Offset (Byte)  | Field                                           |
+----------------+-------------------------------------------------+
| 00             | Port Identifier (PORTID)                        |
| 01-04          | Reserved                                        |
| 05             | PRII (PCIe Routing ID Info: Valid Bit)         |
| 06-07          | PRI (Routing ID: Bus/Device/Function Numbers)  |
| 08-09          | PCI Vendor ID (PCIVID)                          |
| 10-11          | PCI Device ID (PCIDID)                          |
| 12-13          | PCI Subsystem Vendor ID (PCISVID)              |
| 14-15          | PCI Subsystem Device ID (PCISDID)              |
+----------------+-------------------------------------------------+

如果你准备继续阅读 5.7.5 Optionally Supported Command List 或者对 Controller List 的使用场景和命令示例感兴趣,我可以帮你继续分析。是否继续?