特性配置 - 1. Controller List (CNS 13h) (第283页)
在《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等)用于管理资源分配,确保在多控制器环境下的资源最优化使用。
这些结构和字段对于存储系统的虚拟化管理、资源分配、以及性能优化提供了强大的支持。