特性配置 - 1. CNS值及其相关定义 (第251页)
NVME2.0协议解读 1 min read

特性配置 - 1. CNS值及其相关定义 (第251页)

Blog Author

在《NVM Express® Base Specification, revision 2.0b》文档中,第5章继续描述了Identify命令的CNS值以及与其相关的标识符数据结构。以下是对这些内容的深入分析:

1. CNS值及其相关定义

在文中列出了多个CNS值,每个值返回不同的控制器或命名空间数据结构。具体来说:

  • 15h:返回与处理命令的主控制器相关的次级控制器列表。此项为可选(O),其中NSID字段不适用,CNTID字段为必需。
  • 16h:返回一个命名空间粒度列表,最多16个条目。此项为可选(O),且所有字段均不适用。
  • 17h:返回UUID列表。此项为可选(O),且所有字段均不适用。
  • 18h:返回域列表。此项为可选(O),且所有字段均不适用。
  • 19h:返回耐久组列表。此项为可选(O),且所有字段均不适用。
  • 1Ah:返回针对I/O命令集的分配命名空间ID列表。此项为可选(O),但NSID和CSI字段为必需。
  • 1Bh:返回I/O命令集特定的Identify Namespace数据结构。此项为可选(O),NSID字段为必需,CNTID字段为不可用,CSI字段为必需。

2. 字段说明与使用

在这些CNS值中,O/M标志表明每个字段是否必需(M表示必需,O表示可选),而NSID、CNTID、CSI等字段的使用情况也被明确标注。例如: - NSID:指示是否使用Namespace ID字段,标为Y表示使用,标为N表示不使用。 - CNTID:指示是否使用控制器ID字段,同样标为Y表示使用,N表示不使用。 - CSI:指示是否使用I/O命令集标识符字段。

3. 命令集标识符

图274中定义了不同的命令集标识符,包括: - 00h:NVM命令集,参见NVM命令集规范。 - 01h:键值命令集,参见键值命令集规范。 - 02h:分区命名空间命令集,参见分区命名空间命令集规范。 - 03h到2Fh:保留。 - 30h到3Fh:厂商特定。 - 40h到FFh:保留。

4. Identify Controller数据结构 (CNS 01h)

  • Identify Controller数据结构:这是返回给主机的控制器数据结构,用于处理命令的控制器。该结构包含控制器的相关信息,并在CNS为01h时返回。详细信息可以参考图275。

5. 理解这些数据结构的应用

  • 每个CNS值对应不同的数据结构,返回的数据类型取决于具体的命令集和控制器能力。比如,针对I/O命令集的CNS值返回的是特定的Identify Namespace数据结构,这在支持特定命令集的控制器上是必需的。
  • 有些字段是强制性的(如NSIDCNTIDCSI),而其他字段则是可选的,这取决于具体的硬件和命令集实现。

总结

NVM Express协议中的Identify命令不仅定义了如何通过CNS值区分不同的数据结构,还详细描述了各个字段的作用及其适用条件。每个CNS值定义了返回的不同类型的数据,这些数据通过字段(如NSID、CNTID、CSI)提供了对命名空间、控制器以及I/O命令集的详细描述。在实现和使用该协议时,理解这些数据结构和命令集的关系是非常关键的。