NVM子系统架构 - Discovery Controller 初始化过程 (第53页)
NVME2.0协议解读 1 min read

NVM子系统架构 - Discovery Controller 初始化过程 (第53页)

Blog Author

在《NVM Express® Base Specification, revision 2.0b》中的 Discovery Controller 初始化过程(第3.1.2.3.1节),主要涉及以下步骤:


Discovery Controller 初始化过程

当主机完成 Connect 命令并获得“成功完成”状态后,初始化 Discovery 控制器的步骤如下:

  1. NVMe认证(如果需要)
    如果系统配置要求,主机会执行 NVMe 认证过程(详见第8.13.2节)。认证过程确保主机和控制器之间的连接是安全且有效的。

  2. 读取控制器的能力
    主机通过读取控制器能力属性(Controller Capabilities)来确定控制器的功能。这些能力包括控制器是否支持某些特性,是否可以执行特定类型的命令等。

  3. 配置控制器的设置
    主机通过写入控制器的配置属性(Controller Configuration),包括设置 CC.EN1,从而启用命令处理功能。该操作启动了控制器,允许它开始处理接下来的命令。

  4. 等待控制器准备好处理命令
    主机等待控制器通过设置 CSTS.RDY(控制器状态)为 1,以表示控制器已准备好开始处理命令。

  5. 确定控制器的特性和功能
    主机通过发送 Identify 命令来查询控制器的特性,获取与控制器相关的所有信息,特别是控制器数据结构(详见第5.17节)。这些数据结构定义了控制器支持的各种特性。

读取 Discovery Log Page

在初始化 Discovery 控制器后,主机会继续读取 Discovery Log Page,获取更多关于NVM子系统的信息(详见第5.16.1.21节)。Discovery Log Page 提供了有关控制器和命名空间的信息,帮助主机完成连接和路径选择。


Discovery Controller 支持的命令

Discovery 控制器支持所有 Fabrics 命令。以下是 Discovery 控制器支持的一些 Admin 命令(详见第32图):

  1. 删除 I/O 提交队列(Delete I/O Submission Queue)
  2. 禁止(Prohibited),因为 Discovery 控制器不支持 I/O 队列。

  3. 创建 I/O 提交队列(Create I/O Submission Queue)

  4. 禁止(Prohibited),同样是因为 Discovery 控制器不支持 I/O 队列。

  5. 获取日志页面(Get Log Page)

  6. 必须支持(Mandatory),Discovery 控制器需要支持该命令,以便主机能够获取日志信息,尤其是 Discovery Log Page。

  7. 标识命令(Identify)

  8. 必须支持(Mandatory),允许主机查询控制器的详细信息,如其特性和配置。

总结

Discovery 控制器的初始化涉及多个步骤,从认证、能力读取到控制器配置和准备处理命令。主机与Discovery 控制器的交互通过 Connect 命令开始,随后通过读取 Discovery Log Page 获取子系统相关信息。此外,Discovery 控制器主要负责处理与NVM子系统的发现相关的任务,而不支持直接的数据I/O操作或命名空间管理。因此,Discovery 控制器的命令支持有限,主要集中在管理和发现功能上。