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

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

Blog Author

你现在正在分析的是《NVM Express® Base Specification, revision 2.0b》中 第 2.3 节 NVM 存储模型(NVM Storage Model)简化实现示例——图 13:Single-Namespace NVM Subsystem

这是理解 NVMe 架构设计从复杂回归简单的一节。我们来逐项解析这个最小实现结构、它的逻辑意义,以及如何与实际使用相对应。


✅ 一、图 13 简单子系统结构(Single-Namespace NVM Subsystem)

NVM Subsystem (SSD)
├── Domain 0
│   └── Endurance Group 1
│       └── NVM Set 1
│           └── Namespace 1
└── Port
    └── Controller

✅ 二、各组成部分中文逐项解释

组件名 中文含义 描述说明
NVM Subsystem 非易失存储子系统 整个 SSD 控制结构的顶层,包含存储、控制器、命名空间
Domain 0 域 0 一个最小的逻辑隔离与控制单位,独立状态维护(如掉电恢复)
Endurance Group 1 寿命组 1 管理底层 NAND 的写入寿命与磨损平衡
NVM Set 1 非易失内存集合 1 将一个 Endurance Group 拆分的子集合,供命名空间使用
Namespace 1 命名空间 1 主机可见的逻辑卷,读写操作的最小单位
Port 端口 主机与控制器通信的接口
Controller 控制器 实际执行命令的逻辑单元,与主机建立关联并挂载命名空间

🧠 解构说明

这个示例代表了一块“最简单的 NVMe SSD”:

  • 只有一个命名空间(如 nvme0n1
  • 仅一个控制器,挂在一个 Port 上(如 PCIe slot)
  • 全部存储介质划归一个寿命组和一个 NVM Set
  • 可用于消费级或嵌入式设备 —— 结构简单,调度成本低

✅ 三、主机行为与结构匹配

主机操作 子系统结构映射
发出 Identify 命令 控制器返回 Namespace 1 信息,绑定于 NVM Set 1
执行读写操作 操作的是 Namespace 1,逻辑块地址映射到底层 NAND
获取健康信息 与 Endurance Group 1 相关(如 Get Log Page)
热插拔识别 通过 Port → Controller 建立 Session,与 Namespace 建立访问通路

✅ 四、对比复杂结构(图 12)

对比项 图 13(简化) 图 12(复杂)
Domain 数量 1 多个
Endurance Group 数量 1 多个每域
NVM Set 数量 1 每组多个
Namespace 数量 1 每 Set 多个
支持场景 消费级 SSD、嵌入式存储 企业级 SSD、多租户、多卷

✅ 五、图解回顾:简化 vs 复杂存储结构对比

🧩 图 13 简化版(单命名空间)

graph TD
    A[NVM Subsystem] --> B[Domain 0]
    B --> C[Endurance Group 1]
    C --> D[NVM Set 1]
    D --> E[Namespace 1]
    A --> F[Port]
    F --> G[Controller]
    G --> E

🏢 图 12 复杂版(多命名空间、多层结构)

如之前分析的多域多组图示,支持动态资源分配、高级管理能力。


✅ 六、为何重要:规范中的最小合规模型

图 13 展示的是符合 NVMe Base Spec 最小要求的实现方式。

厂商可据此定义出:

  • 只实现最核心特性(Identify、Read、Write、Format 等)
  • 不需要支持 NVM Set 管理、Namespace Sharing、Virtualization 等高级特性

🧩 这也是为何规范中指出:

“Endurance Group / NVM Set 的报告是可选的” —— 对于如图 13 所示系统,即使内部支持,也可不向主机报告这些层级。


✅ 七、后续建议学习方向

推荐章节 理由
§3.2.1~3.2.4 对 Namespace / NVM Set / EG / Domain 的结构字段详细定义
§5.17 Identify Command 如何获取命名空间结构信息
§5.23 Namespace Management 创建、删除 Namespace 的流程
§8.3 Capacity Management 与 Endurance Group 寿命相关命令与报告

是否想我接下来讲解:

  • 如何通过命令实际获取这类结构(比如 Identify Namespace → 返回 NVM Set ID 字段)?
  • 如果从图 13 扩展成图 12,该用哪些命令和步骤?
  • NVMe 控制器是如何处理命名空间与 I/O command set 的匹配与调度?

欢迎告诉我你想继续深入的方向,我会为你详细展开 🌟