控制器寄存器与属性配置 - 第83页
NVME2.0协议解读 1 min read

控制器寄存器与属性配置 - 第83页

Blog Author

深入分析 NVM Express® Base Specification, revision 2.0b

命名空间ID与电源关闭条件的关联

  • 命名空间ID变化
  • 在电源关闭或重新启动的情况下,命名空间ID(NSID) 可能会发生变化。然而,建议命名空间ID在电源关闭后保持静态,以避免给主机软件带来问题。为了确保主机能够识别同一命名空间,主机可以使用以下字段:

    1. UUID:如果命名空间标识描述符中存在UUID字段,则主机可以使用它来判断命名空间是否一致。
    2. NGUID:在“Identify Namespace”数据结构中,或在命名空间标识描述符中,如果存在该字段,则可以通过它进行识别。
    3. EUI64:同样在“Identify Namespace”数据或命名空间标识描述符中,如果该字段存在,也可以用来确保命名空间一致性。
  • UIDREUSE字段:在NSFEAT字段中(或Identify Namespace数据结构中),UIDREUSE位指示NGUID和EUI64的重用特性,表明是否允许重复使用这些标识符。

命名空间与提交队列的关系

  • 命名空间和提交队列
  • 命名空间可能与提交队列之间有关系,也可能没有。这个关系取决于主机软件的实现。控制器必须支持从任何活动的命名空间访问任何I/O提交队列。也就是说,控制器可以从多个I/O提交队列中访问一个活动命名空间。

命名空间与I/O命令集的关联

  • 命名空间与I/O命令集
  • 每个命名空间与一个I/O命令集相关联。对于I/O命令和特定于I/O命令集的管理命令,命名空间标识符(NSID) 字段用于确定命令提交队列条目与哪个I/O命令集关联。
  • 在同一NVM子系统中,可能包含多个命名空间,每个命名空间都与不同的I/O命令集关联。控制器可能支持多种I/O命令集,并且每个命名空间可能使用这些命令集中的任何一个,这由控制器的I/O命令集配置文件(I/O Command Set Profile)来指示。

NVM集合(NVM Sets)

  • NVM集合定义
  • NVM集合是一个逻辑上(或潜在地物理上)与其他NVM集合分开的NVM集合。一个NVM集合可以包含一个或多个命名空间,而这些命名空间继承了该NVM集合的属性。
  • 命名空间与NVM集合的关系:每个命名空间完全包含在一个NVM集合中,并且不会跨越多个NVM集合。也就是说,一个命名空间必须完全位于某个NVM集合内,不能同时属于多个NVM集合。

NVM集合的示例

  • 示例:假设存在三个NVM集合:
  • NVM集合A 包含三个命名空间(NS A1, NS A2, NS A3)。
  • NVM集合B 包含两个命名空间(NS B1, NS B2)。
  • NVM集合C 包含一个命名空间(NS C1)。

  • 未分配的区域

  • 每个NVM集合也包含未分配的区域,这些区域代表的是尚未分配给命名空间的NVM。未分配区域中的NVM并没有被分配给任何命名空间,因此仍然是可用的。

总结

  • NSID的一致性:命名空间ID(NSID)应该保持静态,尤其是在电源关闭之后。主机可以通过UUID、NGUID或EUI64字段来判断命名空间的一致性。
  • 命名空间与I/O队列的关系:主机软件控制命名空间与提交队列的关联,控制器必须支持从任何I/O提交队列访问活动命名空间。
  • 命名空间与I/O命令集:每个命名空间只能与一个I/O命令集相关联,控制器可以支持多个命名空间使用不同的I/O命令集。
  • NVM集合:NVM集合是NVM的集合,命名空间完全属于一个NVM集合,且命名空间之间不会跨越集合。