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

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

Blog Author

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

3.2.1.2 Valid and Invalid NSIDs

在 NVM Express 协议中,NSID (Namespace Identifier) 用于标识一个命名空间。每个有效的 NSID 对应一个已存在的命名空间。合法的 NSID 范围由控制器的 Identify Controller 数据结构中的 Number of Namespaces 字段所定义。合法的 NSID 不能是 0h,也不能超出定义的命名空间数量。如果 NSID 是 FFFFFFFFh,则表示广播值,用来表示所有命名空间。

合法和不合法的 NSID

  • 合法的 NSID
  • 分配的(Allocated)NSID:指已经关联并存在于 NVM 子系统中的命名空间。
  • 未分配的(Unallocated)NSID:指没有关联到任何命名空间的 NSID。

重要:如果一个 NSID 在当前的 NVM 子系统中已被分配,那么它要么是 "活动"(active),要么是 "非活动"(inactive)。

  • 不合法的 NSID
  • 任何不是有效的 NSID 且不等于广播值 FFFFFFFFh 的 NSID,都会被视为不合法。此类不合法的 NSID 在相关命令中使用时,会导致控制器返回 Invalid Namespace or Format 错误状态。

3.2.1.3 Allocated and Unallocated NSID Types

  • 分配的 NSID(Allocated NSID):指的是已分配给特定命名空间的 NSID。在 NVM 子系统中,已分配的 NSID 会关联到实际存在的命名空间。
  • 未分配的 NSID(Unallocated NSID):指没有与任何命名空间关联的 NSID,通常指未分配给任何实际存在命名空间的标识符。

3.2.1.4 Active and Inactive NSID Types

对于某个特定的控制器,分配的 NSID 可以是 "活动的" 或 "非活动的": - 活动 NSID(Active NSID):指该 NSID 所关联的命名空间已经与该控制器绑定并可以被访问。 - 非活动 NSID(Inactive NSID):指该 NSID 所关联的命名空间并未与该控制器绑定,因此不能被该控制器访问。

3.2.1.5 NSID and Namespace Relationships

  • 使用 NSID 的命令规则
  • 非活动 NSID:在命令中使用非活动的 NSID 会导致控制器返回 Invalid Field in Command 错误。
  • 无效 NSID:在命令中使用无效的 NSID 会导致控制器返回 Invalid Namespace or Format 错误。

总结

  • 合法的 NSID:包括 分配的(allocated)和 未分配的(unallocated)两种类型。有效的 NSID 必须在有效的命名空间范围内,且不可为 0h
  • 活动和非活动 NSID:对于已分配的 NSID,控制器会区分它是 "活动" 还是 "非活动" 的。
  • 不合法 NSID:包括超出命名空间范围的任何 NSID 或是与 0hFFFFFFFFh(广播值)不匹配的 NSID。

实际应用

  • 控制器在使用 NSID 进行命令执行时需要区分活动与非活动命名空间,以及有效与无效的 NSID。确保命令中的 NSID 是合法且有效的,以避免执行错误。