管理命令集与操作 - 第156页
NVME2.0协议解读 1 min read

管理命令集与操作 - 第156页

Blog Author

我们继续深入解析 《NVM Express® Base Specification, revision 2.0b》第 145 页 的内容,重点是:


📘 图 138(续)—— Admin 命令扩展与说明补充

Opcode 分配区间补充:

Opcode 范围 含义
C0hFFh Vendor Specific,厂商自定义命令范围
未列出的值 保留(Reserved),未来规范可能定义

🧾 图 138 注释解读(Notes)

这些注释为开发者使用 NSID、Opcode、数据传输方向提供了关键限制说明:

🔹 Note 1

  • 表中未列出的 Opcode 属于保留值(Reserved),不要使用

🔹 Note 2

  • Namespace Identifier (NSID) 只在某些命令中使用;
  • 若使用此字段,通常支持设置为 FFFFFFFFh(广播命名空间 ID),除非命令明示不支持;
  • 如果命令不使用 NSID,则该字段必须设为 0h(详见图 87)。

🔹 Note 3

  • 数据传输方向说明如下(用于标记命令的 I/O 类型):
  • 00b无数据传输
  • 01bHost → Controller
  • 10bController → Host
  • 11b双向(Bidirectional)

🔹 Note 4

  • 某些命令(如 Namespace Attachment不支持 NSID=FFFFFFFFh

🔹 Note 5

  • Directive Send/Receive 是否支持 NSID=FFFFFFFFh 取决于 Directive Operation 类型(见第 8.7 节)。

🔹 Note 6

  • Identify 命令是否使用 NSID 取决于 CNS 值(参见图 273)。

🔹 Note 7

  • Security Send/Receive 命令的 NSID 用法取决于具体的 安全协议(如 TCG)。

🔹 Note 8

  • 命令是否依赖某个 I/O Command Set:
  • No:与任何 I/O Command Set 无关;
  • NVM:仅适用于 NVM Command Set;
  • ZNS:适用于 Zoned Namespace Command Set;
  • A:所有 I/O Command Set 通用。

🔹 Note 9

  • 所有 NVMe over Fabrics 命令都使用 Opcode 7Fh,具体定义见第 6 章。

⚠️ 图 139:格式化/擦除操作中的 Admin 命令限制

NVMe 对于正在执行 Format NVM 或 Sanitize 操作的命令兼容性做了详细规定。

🧩 图 139 的作用:

情况 说明
当某个命名空间正在执行 Format NVM 命令 控制器会拒绝执行某些 Admin 命令,返回 Format in Progress 状态码
若有未列出的 Admin 命令正在被处理 会导致随后发起的 Format NVM 被拒绝,返回 Command Sequence Error

📘 图 139(部分)允许的 Admin 命令

命令名称 对 Format NVM 的限制 对 Sanitize 的限制
Abort ✅ 允许 ✅ 允许
Asynchronous Event Request ✅ 允许 ✅ 允许
Create I/O Completion Queue ✅ 允许 ✅ 允许
Create I/O Submission Queue ✅ 允许 ✅ 允许
Device Self-Test 只允许 Controller DST ❌ 禁止
Delete I/O Completion Queue ✅ 允许 ✅ 允许
Delete I/O Submission Queue ✅ 允许 ✅ 允许
Get Features ✅ 允许 ✅ 允许

❗ 说明: - Controller DST(Device Self-Test) 是指仅允许对整个控制器执行自检,不允许对命名空间执行; - Sanitize(清除)操作下,禁止某些可能影响数据完整性的命令(例如测试命令)。


🧠 小结:命令处理机制的工程意义

项目 工程意义
控制器正在执行 Format 或 Sanitize 时限制其他命令 保证数据一致性与可靠性
格式化期间允许哪些命令 保障必要的管理、监控操作(如 AER、Abort)仍可执行
不兼容命令强制返回特定错误码 便于主机软件快速判定问题来源并采取容错策略

✅ 建议学习步骤

  1. 整理所有 Admin Opcode 对应的功能与 NSID 支持情况
  2. 专门研究图 139,理解“命令执行与互斥行为”的管理机制;
  3. 编写一个 Admin 命令兼容矩阵表格,用于后续开发时判断命令冲突;
  4. 想深入理解任一命令(如 Format NVM 或 Sanitize),我可为你按位解析其结构、执行过程和状态码。

需要我继续讲解 Format NVM、Sanitize 或 Identify 命令的具体用法与结构吗?还是我们继续看下一页?