特性配置 - 1. Controller List (CNS 13h) (第283页)
NVME2.0协议解读 1 min read

特性配置 - 1. Controller List (CNS 13h) (第283页)

Blog Author

在《NVM Express® Base Specification, revision 2.0b》中,第5.17.2.12至第5.17.2.13部分描述了与控制器相关的命令及其数据结构。这些命令和结构为管理和查询控制器提供了详细的信息,尤其是在支持虚拟化、资源分配和命名空间管理等方面。以下是对这些内容的详细分析:

1. Controller List (CNS 13h)

CNS 13h命令用于返回一个控制器列表,包含控制器标识符(Controller Identifier)。最多支持2,047个控制器标识符。

作用

  • 返回的内容:此列表包含能够附加到命名空间的控制器标识符。
  • 用途:适用于查询哪些控制器可以处理特定命名空间,特别是在多控制器环境下。主机可以根据这个列表来管理控制器和命名空间之间的关联。

2. Primary Controller Capabilities Data Structure (CNS 14h)

CNS 14h命令用于返回一个关于主控制器(Primary Controller)能力的数据结构。这为管理主控制器及其资源提供了详细信息。

字段分析

  • Controller Identifier (CNTLID)
  • 指定主控制器的标识符。
  • Port Identifier (PORTID)
  • 指定与主控制器相关联的NVM子系统端口标识符。如果NVM子系统在此PCIe端口上支持NVMe-MI管理端点,则此字段的值应与Controller Information Data Structure中的Port Identifier相同。
  • Controller Resource Types (CRT)
  • 表示控制器支持的资源类型。主控制器支持的资源类型也会被所有附属的次级控制器所支持。
  • VI Resources(虚拟化资源):如果Bit 1设置为1,则主控制器支持虚拟化资源。
  • VQ Resources(队列资源):如果Bit 0设置为1,则主控制器支持队列资源。
  • VQ Resources Flexible Total (VQFRT)
  • 指示主控制器及其附属控制器的VQ资源总数。
  • VQ Resources Flexible Assigned (VQRFA)
  • 指示分配给附属控制器的VQ资源数量。
  • VQ Resources Flexible Allocated to Primary (VQRFAP)
  • 指示当前分配给主控制器的VQ资源数量。
  • VQ Resources Private Total (VQPRT)
  • 指示主控制器的VQ私有资源总数。
  • VQ Resources Flexible Secondary Maximum (VQFRSM)
  • 指示最大允许分配给附属控制器的VQ资源数量。
  • VQ Flexible Resource Preferred Granularity (VQGRAN)
  • 指示分配和移除VQ资源的首选粒度。这有助于减少资源分配时的浪费。
  • VI Resources Flexible Total (VIFRT)
  • 指示主控制器及其附属控制器的VI资源总数。
  • VI Resources Flexible Assigned (VIRFA)
  • 指示分配给附属控制器的VI资源数量。

作用

该数据结构为主控制器提供了关于虚拟化资源(VQ和VI资源)分配的详细信息,尤其是在涉及多控制器和虚拟化资源管理的环境中。控制器资源的管理对于性能优化、资源分配和故障恢复等方面至关重要。

总结

  • CNS 13h命令用于获取控制器列表,帮助主机了解哪些控制器可以附加到命名空间并进行数据管理。
  • CNS 14h命令则提供了主控制器的能力数据,包括其支持的资源类型、虚拟化资源的分配情况以及队列资源的分配。这对于支持多控制器和虚拟化功能的存储系统尤为重要。
  • 对于每个资源类型(如VQ和VI),有多个字段(如VQFRT、VQRFA等)用于管理资源分配,确保在多控制器环境下的资源最优化使用。

这些结构和字段对于存储系统的虚拟化管理、资源分配、以及性能优化提供了强大的支持。