NVM子系统与控制器架构 - 第41页
NVME2.0协议解读 1 min read

NVM子系统与控制器架构 - 第41页

Blog Author

你现在阅读的是 NVM Express® Base Specification, revision 2.0b 第 3 章的起始部分,主题是:

🔧 NVM Controller Architecture(NVMe 控制器架构)

我们来深入、系统地用中文讲解和分析这部分内容,尤其是重点围绕:

  • ✅ 控制器模型(Controller Model)的类型与差异
  • ✅ 控制器与主机之间的绑定机制(Association)
  • ✅ 动态与静态控制器模型的实际应用场景

🧱 控制器模型(Controller Model)

📌 控制器的定义:

控制器(Controller)是主机与 NVM 子系统之间进行命令交互的接口。

主机提交的命令通过控制器进入 NVM 子系统,完成如读写、管理等操作。一个 NVM Subsystem 可以包含一个或多个控制器。


🧠 控制器模型分类

根据规范,NVMe 控制器模型分为两类:

控制器模型 特点 应用场景
静态控制器模型 (Static Controller Model) 控制器是预先存在的,每个 Controller ID 在主机连接前就已确定。其状态(如 Feature 设置、命名空间绑定)在主机间可能不同。 所有基于内存的传输模型,如 PCIe
动态控制器模型 (Dynamic Controller Model) 控制器是按需动态分配的。分配时所有控制器对主机呈现一致的初始状态(如同一命名空间列表与功能设置)。之后的控制器变更不影响其他控制器。 NVMe-oF Fabrics 架构,如 TCP、RDMA。Discovery Controller 必须支持

🔁 控制器模型对主机的影响:

事项 静态模型 动态模型
Controller ID 是否固定 主机可请求任意空闲控制器(ID = FFFFh)
状态是否保留 是(如 Feature、命名空间配置) 否,每次建立连接后都是初始化状态
控制器是否预存在系统中 否,按需分配
适用于哪些传输类型 PCIe Fabrics(如 NVMe-TCP、RDMA)
是否允许多个主机访问 否(一个控制器只能绑定一个主机) 同样不允许共享控制器,但可通过多个动态控制器实现多主机支持

🔌 控制器与主机的关联(Association)

Association 是主机与控制器之间建立的连接关系:

  • 建立 Association: 使用 Fabrics 的 Connect 命令,在其中指定:
  • Host NQN(主机唯一名称)
  • NVM Subsystem NQN(目标子系统名称)
  • Host Identifier(主机标识)
  • 以及请求的 Controller ID(或者用 FFFFh 表示请求动态分配)

  • 一个控制器只能关联一个主机,处于关联状态时不可再次连接。


🧯 控制器关联的断开机制

虽然没有显式命令可以中断关联,但以下情形会导致自动断开:

情形 说明
控制器被关闭(Shutdown) 使用 Admin Command 停止控制器
Controller Level Reset 控制器重置
管理或 I/O Queue 的 NVMe Transport 连接断开 例如网络中断
某个 I/O Queue 的连接断开,且不支持单独删除该队列 必须删除整个关联

若需主动移除某个 I/O Queue,可以使用 Disconnect Command(第 6.4 节)。


🧠 动态模型的实用指令流程举例

主机使用 Connect 命令,指定 Controller ID = FFFFh
↓
NVM Subsystem 分配一个动态控制器并建立 Admin Queue
↓
主机提交 Create I/O Queue 命令建立 I/O 通道
↓
之后可正常读写命名空间(根据控制器初始化时附加的命名空间列表)

🔍 使用场景举例

🎯 场景 A:云存储中的多主机共享基础架构

  • 主机 1 使用 Connect 命令获取动态控制器 A
  • 主机 2 同样使用 FFFFh 请求另一个控制器 B
  • 控制器 A 和 B 都是动态的,起始状态相同
  • 它们可能通过共享命名空间实现数据访问一致性(需主机同步机制配合)

✅ 小结:控制器模型对比表

属性 静态控制器 动态控制器
生命周期 永久存在 按需分配
控制器状态保留
初始状态是否一致
是否支持 PCIe
是否支持 Fabrics 支持但较少 是(推荐)

是否继续分析 3.2 节 NVM Subsystem 结构与命名空间管理,或者转向 3.3 节队列机制的详细结构(SQ/CQ)?我可以继续配图+逐段讲解~