NVMe架构与操作理论 - 第27页
你当前阅读的是 《NVM Express® Base Specification 2.0b》第 2 章(Theory of Operation)的延续部分,主要涉及:
- NVM Subsystem 的结构定义与控制器分工
- 传输模型分类图(Figure 4):Memory-based vs. Message-based
- 命名空间与 I/O Command Set 的关联机制
- 命令分类结构图(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 机制,还是传输模型流程图开始?我马上为你展开。