NVMe架构与操作理论 - 第27页
NVME2.0协议解读 1 min read

NVMe架构与操作理论 - 第27页

Blog Author

你当前阅读的是 《NVM Express® Base Specification 2.0b》第 2 章(Theory of Operation)的延续部分,主要涉及:

  1. NVM Subsystem 的结构定义与控制器分工
  2. 传输模型分类图(Figure 4):Memory-based vs. Message-based
  3. 命名空间与 I/O Command Set 的关联机制
  4. 命令分类结构图(Figure 5):Admin, I/O, Fabrics Command Set 分类体系

我将继续用中文教学方式逐条带你深入解析,并结合图示进行知识融合。


✅ 一、NVM Subsystem 与控制器类型关系

An NVM subsystem is made up of a single domain or multiple domains...

🧩 总结重点:

  • NVM Subsystem:控制器 + 非易失存储介质 + 命名空间 + 接口组合体
  • 控制器(Controller)负责把存储介质映射给主机通过 Namespace
  • Namespace 是 “逻辑视图” 的概念,不是物理划分!

⚠️ 特别说明:

  • 不是所有控制器都绑定所有命名空间,可选挂载(Attach)
  • 若一个 Subsystem 是 Discovery Controller,就不允许存在 I/O 或 Admin 控制器

📘 详见: - §3.1 控制器类型定义(Admin / I/O / Discovery) - §3.2.4 多 Domain 的组织形式(Domain = 状态/电源隔离单元)


✅ 二、传输模型分类(Figure 4)

Figure 4: Taxonomy of Transport Models

这是 NVMe 最核心的设计图之一,把传输机制分为三类:

模型类型 命令/响应机制 数据传输机制 举例
Memory-based Shared Memory(命令、响应和数据) Shared Memory PCIe
Message-only Capsule(消息) Capsule / Message Fibre Channel, TCP
Message + Memory Capsule(命令响应) Memory DMA or Capsule RDMA (InfiniBand / RoCE)

✨ 特点解析:

  • PCIe 的效率最高(全部共享内存),适合直连设备;
  • Fabrics 如 TCP 虽然简单,但是消息模式,延迟略高;
  • RDMA 是最强的远程传输(零拷贝 DMA),适合数据中心级部署。

✅ 三、命名空间(Namespace)与命令集(Command Set)

A namespace is a formatted quantity of non-volatile memory...

📦 Namespace 的重要属性:

特性 来源字段
支持的命令集(NVM / ZNS / KV) Identify Namespace 中的 CSI(Command Set Identifier)
LBA 格式(512B/4KiB) LBAF 表、FLBAS, MS, MC 字段
空间大小 NSZE, NCAP, NUSE 字段
是否支持共享 NMIC 字段
是否支持保护信息(PI) DPC, DPS 字段

📘 命名空间是“逻辑卷”的映射,主机通过 NSID(Namespace ID)进行访问,每个 NSID 可视为一个独立逻辑磁盘。


🧩 命名空间对应命令集结构:

NVMe 允许一个控制器支持多个命名空间,而每个命名空间可能绑定不同的命令集

  • 标准 NVM 命令集(Read/Write)
  • ZNS 命令集(顺序写优化)
  • Key-Value 命令集(非结构化存储)
  • Identify Namespace 会指出该 namespace 支持哪个 CSI(Command Set Identifier)

✅ 四、NVMe 三类命令结构图(Figure 5)

Figure 5: Types of NVMe Command Sets

三大命令集类别:

类别 用途 示例命令
Admin Command Set 管理类操作 Identify, Set Features, Format NVM
I/O Command Sets 数据访问 Read, Write(标准 NVM)ZNS Append、KV PUT 等
Fabrics Command Set NVMe-over-Fabrics 特有 Connect, Property Get/Set, Auth Send/Recv

I/O Command Sets 内部包含多个子集:

  • NVM Command Set(传统 SSD 访问命令)
  • ZNS Command Set(顺序写命名空间)
  • Key-Value Command Set(键值型存储结构)

📘 I/O 命令集由 CSI 值区分: - 01h = NVM - 02h = ZNS - 03h = KV


✅ 总结知识点整合表

概念 中文解释 说明
NVM Subsystem 控制器+介质+命名空间 可以包含一个或多个 domain
Controller 控制器,负责处理命令 包含 Admin/CQ + SQ 结构
Namespace 主机可访问的逻辑卷 可以是 NVM、ZNS、KV 等
Transport Model 命令与数据交互机制 PCIe(内存型)、TCP(消息型)
Command Sets 命令类型分类 Admin / I/O / Fabrics

✅ 下一步推荐阅读内容:

内容 理由
§3.1 控制器类型详细定义 补充多控制器架构理解
§3.2 命名空间、NVM Set、Endurance Group 结构 理解命名空间之间的逻辑映射
§4.2 Command Capsule 格式 理解命令 64B 内部结构
§5.17 Identify 命令详解 实际查看命名空间 + 控制器能力结构
§8.1~8.2 ANA、Boot Partition 探索多路径 I/O 与引导机制

如果你需要,我可以为你:

  • 画出命名空间与 CSI 映射关系图;
  • 展示三类传输模型实际流程图;
  • 深度解析 Identify Namespace 字段 + CSI 区分逻辑;
  • 构建完整命令投递 → 完成队列响应 的时序图。

你更想从命名空间结构、CSI 机制,还是传输模型流程图开始?我马上为你展开。