NVM子系统架构 - 控制器属性概述 (第57页)
NVME2.0协议解读 1 min read

NVM子系统架构 - 控制器属性概述 (第57页)

Blog Author

在《NVM Express® Base Specification, revision 2.0b》中,控制器属性部分(第3.1.2.3.5节)描述了控制器的各种属性以及它们如何通过特定的属性定义表进行访问。以下是对控制器属性的详细分析。

控制器属性概述

属性是与控制器相关的特性或配置项,每个属性可以是 dwordqword 属性,具有 读取写入读写 的访问权限。这些属性通常通过 Property GetProperty Set 命令进行访问,具体取决于所使用的传输模型。每个控制器的属性都通过一组标准化的偏移量和大小定义。

属性访问表

下表列出了控制器属性的映射和访问要求,包括偏移量(OFST)、大小(Size)、以及对不同类型控制器的支持情况(如 I/O 控制器、行政控制器、发现控制器):

名称 偏移量(OFST) 大小(字节) I/O 控制器 行政控制器 发现控制器 说明
CAP: 控制器能力 0h 8 M M M 控制器的能力定义。
VS: 版本 8h 4 M M R 控制器版本信息。
INTMS: 中断掩码设置 Fh 4 M M R 设置中断掩码。
INTMC: 中断掩码清除 14h 4 M M M 清除中断掩码。
CC: 控制器配置 18h 4 R R R 控制器配置设置。
CSTS: 控制器状态 20h 4 O O R 控制器状态信息。
NSSR: NVM 子系统复位 24h 4 M M R NVM 子系统复位命令。
AQA: 管理队列属性 28h 8 M M R 管理队列属性设置。
ASQ: 管理提交队列基址 30h 8 M M R 管理提交队列基址。
ACQ: 管理完成队列基址 38h 4 O O R 管理完成队列基址。
CMBLOC: 控制器内存缓冲区位置 3Ch 4 O O R 控制器内存缓冲区的位置。
CMBSZ: 控制器内存缓冲区大小 40h 4 O O R 控制器内存缓冲区的大小。
BPINFO: 启动分区信息 44h 4 O O R 启动分区信息。
BPMBL: 启动分区内存缓冲区位置 50h 8 O O R 启动分区内存缓冲区位置。
NSSD: NVM 子系统关闭 64h 4 M M R NVM 子系统关闭命令。
PMRCAP: 持久内存能力 E00h 4 O O R 持久内存能力定义。
PMRCTL: 持久内存区域控制 E04h 4 O O R 控制持久内存区域的配置。
PMRSTS: 持久内存区域状态 E08h 4 O O R 持久内存区域的状态。

说明

  • M:表示该属性对于该类型的控制器是必需的(Mandatory)。
  • O:表示该属性对于该类型的控制器是可选的(Optional)。
  • R:表示该属性对于该类型的控制器是只读的(Read-Only)。
  • P:表示该属性在该类型的控制器中不支持(Prohibited)。

关键点分析

  1. Controller Capabilities(CAP):这个属性描述了控制器的功能和支持的特性。所有控制器都必须支持这个属性。
  2. 管理队列属性(AQA):控制器在执行管理任务时使用的队列的配置,包括管理提交队列和完成队列的基地址。
  3. 控制器内存缓冲区(CMB):控制器内存缓冲区的相关属性,包括其位置、大小、状态等。这个缓冲区对于提供高效的数据传输和存储管理非常重要。
  4. 启动分区信息(BPINFO):有关启动分区的控制器配置,支持启动分区的操作。
  5. 持久内存(PMR):持久内存相关的属性,允许对控制器内存进行更精细的管理。

总结

控制器的属性定义为对其进行配置和管理提供了基本的框架。主机软件可以通过这些属性对控制器进行设置和管理。每个控制器根据其类型(I/O 控制器、行政控制器、发现控制器)支持不同的属性,主机软件在配置控制器时应根据需要访问相应的属性。