命名空间管理 - 📌 Set Features 和 Get Features 细节解析 (第149页)
NVME2.0协议解读 1 min read

命名空间管理 - 📌 Set Features 和 Get Features 细节解析 (第149页)

Blog Author

我们继续深入分析 《NVM Express® Base Specification, revision 2.0b》第138页,本部分内容涵盖了 Set FeaturesGet Features 命令中与 NSID(命名空间标识符)特性值保存机制 相关的内容,以及如何处理不支持的 Feature Identifiers。此外,还讨论了 PCI Vendor ID、PCI Subsystem Vendor ID、Serial Number、Model Number 等标识符的格式和布局。我们将逐一解读这些内容。


📌 Set Features 和 Get Features 细节解析

特性标识符与命名空间相关设置

  • NSID 字段的使用:NSID 字段用于指示特性值是否与 特定命名空间 相关。
  • 如果 MDS 位Identify Controller 数据结构 中设置为 1,则特性值不适用于命名空间;
  • 如果 MDS 位0,特性值应用于 所有命名空间

Set Features 命令与 Get Features 命令的错误处理

  • 如果 NSID 设置为无效值,Set FeaturesGet Features 命令将返回 Invalid Field in Command 错误。

示例:不同 NSID 设置时的行为

  • NSID = 0hFFFFFFFFh
  • Set Features 设置控制器级特性;
  • Get Features 返回控制器级别的当前值。

  • NSID 为有效的命名空间标识符

  • Set Features 设置该命名空间的特性;
  • Get Features 返回该命名空间的当前值。

特性标识符的保存与选择

  • 控制器支持 Save 字段Select 字段,使得命名空间特性可以按命名空间单独保存。
  • 如果 Feature Identifier 不被支持,控制器将返回 Invalid Field in Command 错误。

📑 标识符格式和布局(4.3节)

PCI Vendor ID(VID)与 PCI Subsystem Vendor ID(SSVID)

  • VIDSSVID 是由 PCI SIG 分配的唯一标识符,用于区分不同的 供应商子系统
  • VID 是一个 16 位数,采用小端格式表示。
  • SSVID 是一个 16 位数,同样采用小端格式表示。

示例:

字节 00 01 02 03
CDh ABh 34h 12h
  • 示例解释
  • VID = ABCDh
  • SSVID = 1234h

Serial Number(SN)与 Model Number(MN)

  • SN(序列号)MN(型号)Identify Controller 数据结构 中定义,为 ASCII 字符串,由厂商分配。
  • SNMN 都是 大端格式

示例:

字节 04 05 06 23至07 24 25 63至26
53h ('S') 4Eh ('N') 31h ('1') 20h (' ') 4Dh ('M') 32h ('2') 20h (' ')
  • 示例解释
  • SN = “SN1”
  • MN = “M2”

IEEE OUI Identifier(IEEE)

  • IEEE OUI(组织唯一标识符) 是由 IEEE 注册管理机构 分配的,用于唯一标识组织。它在 Identify Controller 数据结构 中以小端格式表示。

示例:

字节 75 74 73
XXh XXh XXh

📋 总结与要点

项目 说明
Set Features 和 Get Features 命令 允许设置和获取控制器及命名空间的特性值。特性可针对控制器或命名空间,支持保存、恢复机制。
NSID 字段的应用 NSID 指定特性应用范围:全局控制器级或命名空间级。
命名空间特性值的保存与恢复 控制器支持将命名空间特性保存为“保存值”,并在 Controller Reset 后恢复。
错误处理 不支持的特性标识符将导致 Invalid Field in Command 错误,命名空间标识符无效时会中止命令。
PCI 标识符(VID 和 SSVID) PCI Vendor ID 和 Subsystem Vendor ID 分别用于标识供应商和子系统,采用小端格式。
序列号与型号 SNMN 是由厂商分配的 ASCII 字符串,用于标识设备。
IEEE OUI 由 IEEE 注册管理机构分配的组织标识符,通常用于网络设备的唯一标识。

🎯 教学建议

  1. 掌握命名空间与控制器级特性管理:区分命名空间级与控制器级特性的差异,有助于优化命令使用和配置。
  2. 注意错误处理:理解 Set FeaturesGet Features 中关于 NSIDFeature Identifiers 的错误处理规则,帮助排查实际应用中的问题。
  3. 标识符的正确使用:确保使用合适的标识符(如 VIDSN)进行设备管理,避免混淆。

如果你希望我进一步深入解析 特性设置命令的详细应用示例,或者对 标识符字段的实际应用 进行代码级别的解读,请随时告诉我!