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

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

Blog Author

你阅读到的是 NVMe Base 2.0b 规范第 1.5 节术语定义 的第 3 页内容,这一部分继续定义了 固件管理、主机与控制器的内存关系、Identify 命令相关的数据结构、I/O 队列体系、介质单位、元数据等关键概念

这些术语在后续章节(特别是第 5 章 Admin 命令、第 7 章 I/O 命令、第 8 章扩展能力)中将频繁出现,因此掌握它们对你解析协议整体结构和具体命令非常关键。


✅ 一、固件更新与存储

🔹 firmware slot(固件槽)

用于在域(Domain)中存储固件映像(firmware image)的位置。

特性 说明
每个 domain 最多存储 7 个固件镜像
同一 domain 中所有控制器共享固件槽
Firmware Commit 命令相关(CDW10 定义固件槽号)

📘 示例场景: - 设备支持 A/B 分区冗余引导; - 主机下载新固件 → 写入槽位 2 → 提交生效。


✅ 二、主机与内存的关系

🔹 host(主机)

主机是与 NVM 子系统交互的实体,主要功能是:

  • 提交命令到 SQ(Submission Queue)
  • 从 CQ(Completion Queue)中获取命令执行结果

📘 可以是物理主机(如 x86 服务器),也可以是虚拟化中的 hypervisor 实体。


🔹 host-accessible memory(主机可访问内存)

所有主机可读写的内存区域,包括但不限于:

类型 说明
主机自身内存 Host RAM
CMB Controller Memory Buffer(控制器暴露出来的一段缓冲区)
PMR Persistent Memory Region(持久性内存区域)

🔹 host memory(主机内存)

可被主机和控制器访问、但不被控制器暴露给主机的共享内存区域。

📘 示例: - 一段 DMA 共享区域; - 在设备之外但同时被控制器与主机访问的寄存器映射内存; - 与 Host Memory Buffer 功能配合使用(参见 Features FID 0Dh)。


✅ 三、Identify 命令相关数据结构

🔹 Identify Controller Data Structures

包括以下两类结构,皆可通过 Identify 命令获取:

CNS 值 含义
01h 标准控制器识别结构(Identify Controller)
06h 各个 I/O Command Set 专属的控制器结构

📘 在解析 Identify Controller 响应时非常重要,参见规范第 5.17 节。


🔹 Identify Namespace Data Structures

涵盖所有 namespace 级别的信息结构体,可通过 Identify 命令读取:

CNS 值 说明
00h 标准 Identify Namespace
08h I/O Command Set 独立的 Identify Namespace
05h 各 I/O Command Set 专属结构

📘 常用于获取 LBA 大小、命名空间容量、支持的元数据等信息。


✅ 四、I/O 命令与队列机制

🔹 I/O Command

提交至 I/O Submission Queue 的命令,如: - Read - Write - Compare - Flush - Reservation

📘 区别于 Admin 命令(仅提交到 Admin SQ)。


🔹 I/O Submission Queue(I/O 提交队列)

控制器用于接收 I/O 命令 的队列。每个队列有唯一的 Queue ID,主机需显式创建(非 ID=0)。


🔹 I/O Completion Queue(I/O 完成队列)

与一个或多个 I/O SQ 关联,用于向主机返回执行结果。

📘 队列配对形式如: - SQ1 → CQ1 - SQ2, SQ3 → CQ2(可多对一)


🔹 I/O Controller(I/O 控制器)

实现 I/O 队列并允许访问用户数据的控制器。

📘 与 Administrative Controller / Discovery Controller 区分:

类型 是否支持 I/O Queue 是否访问用户数据
I/O Controller ✅
Admin Controller ❌
Discovery Controller ❌

✅ 五、物理存储与元数据

🔹 Media Unit(介质单元)

NVM 子系统中基本的物理介质组成单元。

  • Endurance Group 是由多个 Media Unit 构成的;
  • 每个 Media Unit 可能对应一块 NAND Die、一个存储通道等。

📘 见第 3.2.3 节与第 8.19 Endurance 分区管理。


🔹 Metadata(元数据)

与用户数据相关的上下文信息,可被主机提交给控制器存储,或由控制器自动附加。

类型 示例
元数据内容 CRC、校验值、数据版本、快照标识等
使用方式 SGL 描述符或 PRP 描述符之后紧跟 metadata buffer
说明位置 每种 I/O Command Set 规范会定义具体格式与支持方式(如 NVM、ZNS)

📘 通常通过 Identify Namespace 返回的 FLBAS、MS、MC 字段定义。


✅ 总结复习表

概念 中文解释 应用场景
Firmware Slot 固件映像存储槽位 固件更新流程
Host 与控制器通信的主机实体 NVMe 主机
Host-accessible Memory 主机可访问的所有内存区域 DMA、CMB、PMR
Host Memory 主机与控制器可共享的非暴露内存 HMB 机制
Identify Controller Data Structures CNS=01h/06h 的响应结构 查询控制器能力
Identify Namespace Data Structures CNS=00h/05h/08h 的响应结构 获取命名空间属性
I/O Command 提交到 I/O SQ 的命令 数据读写等操作
I/O SQ / CQ 用于数据命令的提交和完成 普通 I/O 操作路径
Media Unit 最小物理存储单元 构成 Endurance Group
Metadata 用户数据相关的上下文信息 用于校验、标识等

你现在已经具备了解析 Identify 结构、命令通路、内存结构、元数据机制 的全部关键术语。如果你接下来想进入:

  • Identify Namespace / Controller 响应字段图解
  • Get Log Page 的结构字段解析
  • I/O 命令数据路径(含 PRP / SGL / Metadata)

我可以为你逐步引导构建结构图或流程图,配合规范内容帮你吃透每个命令。你想从哪个命令或结构开始?我们立刻进入实战讲解!