特性配置 - 1. 控制器基本信息字段 (第252页)
NVME2.0协议解读 1 min read

特性配置 - 1. 控制器基本信息字段 (第252页)

Blog Author

在《NVM Express® Base Specification, revision 2.0b》文档中,Identify命令的Identify Controller数据结构(CNS 01h)详细描述了控制器的基本信息和功能,以下是对该数据结构的深入分析:

1. 控制器基本信息字段

这些字段返回了关于控制器的基本信息,其中一些字段是必需的(M),另一些则是可选的(O)。

  • PCI Vendor ID (VID):包含由PCI SIG分配的公司供应商标识符,这与NVMe over PCIe Transport Specification中的PCI Header部分的ID寄存器中的值相同。

  • PCI Subsystem Vendor ID (SSVID):包含为子系统分配的供应商标识符。这也是PCI Header部分SS寄存器中的值。

  • Serial Number (SN):包含由供应商分配的NVM子系统的序列号。该序列号是一个ASCII字符串,具体的唯一标识符要求可以参考协议的第4.5.1节。

  • Model Number (MN):包含由供应商分配的NVM子系统的型号。也是一个ASCII字符串,具体要求同上。

  • Firmware Revision (FR):包含当前活动的固件版本,这与Get Log Page命令中检索到的版本信息相同。固件版本用于标识该控制器域的固件版本。

  • Recommended Arbitration Burst (RAB):指定建议的仲裁突发大小(以命令为单位,通常是2的幂次方)。这个值的单位与仲裁突发大小相同,参考第3.4.4节。

  • IEEE OUI Identifier (IEEE):包含控制器供应商的组织唯一标识符(OUI),这是一个有效的IEEE/RAC分配的标识符。可以在IEEE官网上注册。

2. 控制器多路径I/O和命名空间共享能力(CMIC)

该字段描述了控制器和NVM子系统的多路径I/O和命名空间共享能力。它由多个子字段组成,标明了控制器支持的不同功能:

  • Bits 7:4:保留字段。

  • Bit 3:如果设置为'1',则表示NVM子系统支持非对称命名空间访问报告(Asymmetric Namespace Access Reporting)。如果为'0',则表示不支持该功能。

  • Bit 2:如果设置为'1',则表示该控制器与SR-IOV虚拟功能关联;如果为'0',则表示控制器与PCI功能或Fabrics连接关联。

  • Bit 1:如果设置为'1',则表示NVM子系统可能包含多个控制器;如果为'0',则表示NVM子系统只有一个控制器。这与NVM子系统是否支持多路径访问和多主机使用有关。

  • Bit 0:如果设置为'1',则表示NVM子系统可能包含多个端口;如果为'0',则表示NVM子系统只有一个端口。这影响到NVM子系统的端口配置和数据传输能力。

3. 总结

Identify Controller数据结构提供了控制器的核心信息,涵盖了硬件标识符、固件版本、仲裁机制及I/O多路径支持等重要内容。特别是CMIC字段,它明确描述了控制器支持的多路径I/O、虚拟化和命名空间共享等高级功能,帮助理解不同控制器的拓扑结构和功能配置。

  • 硬件标识符:如PCI Vendor ID、Serial Number等,确保了每个控制器的唯一性和可识别性。
  • 固件和仲裁机制:提供了控制器的固件版本及推荐的仲裁策略,有助于理解控制器的性能特性。
  • 多路径和共享能力:CMIC字段则揭示了控制器在多控制器和多端口环境下的能力,为实现复杂的系统拓扑和性能优化提供了支持。

这些字段对于系统设计和调试非常重要,尤其是在多控制器、多主机的复杂环境下,帮助开发者理解控制器的配置和行为。