持久内存与安全机制 - 第369页
NVME2.0协议解读 1 min read

持久内存与安全机制 - 第369页

Blog Author

我们现在继续深入学习 NVMe 2.0b 规范第 358 页 的内容,聚焦 8.7.2 Identify Directive 的两个操作:


🔍 8.7.2.1.1:Directive Receive(操作码 01h)——返回参数结构


🎯 操作功能:

使用 Directive Receive + Directive Operation = 01h(Return Parameters)操作时,控制器会返回一个 数据结构,内容包括:

  • 哪些 Directive 类型被控制器支持
  • 哪些 Directive 类型在当前命名空间已启用(enabled)

🧱 数据结构详解:Figure 419

Bytes Bits 字段名称 描述
31:00 255:02 Reserved 保留位
01 Streams Directive 若支持 Streams Directive,该位为 1,否则为 0
00 Identify Directive 始终为 1,表示控制器支持 Identify Directive
63:32 255:02 Reserved 保留位
01 Streams Directive 若已启用 Streams Directive,则该位为 1
00 Identify Directive 始终为 1,表示已启用
4095:64 N/A Reserved 未来扩展

⚠️ 注意事项:

  • 如果 NSID = FFFFFFFFh(即所有命名空间),控制器必须中止命令,并返回状态码:Invalid Field in Command
  • Dword 11 的 DSPEC 字段在此操作中不使用

🧭 8.7.2.2.1:Directive Send(操作码 01h)——启用指令


🎯 操作功能:

使用 Directive Send + Directive Operation = 01h(Enable Directive)操作时,主机可对指定命名空间启用某一 Directive 类型。


🧠 启用规则:

  1. Identify Directive 总是被默认启用;
  2. 启用其他 Directive 时,若:
  3. NSID = FFFFFFFFh,表示应用于 整个子系统(所有命名空间 & 所有关联控制器)
  4. 指定具体 NSID,则仅作用于该命名空间;
  5. 当多个控制器具有 相同非零 Host Identifier(HOSTID),则启用/关闭某 Directive 的操作,会自动同步到所有相关控制器上。

🔁 启用状态传播机制:

操作 影响
Controller Level Reset 除 Identify 外所有 Directives 都被该控制器清除
NVM Subsystem Reset 除 Identify 外所有 Directives 都被清除(针对受影响 Domain)
设置相同的 HOSTID 给多个控制器 所有挂接在共享 namespace 的控制器同步启用状态
启用控制器并设置 HOSTID 同样同步 Directive 状态到其他控制器
通过非重置方式启用 Directive 所有关联控制器都同步该 Directive 状态

💡 总结知识点:

关键点 描述
支持性返回 通过 Directive Receive + Return Parameters 获取支持的指令
启用操作 通过 Directive Send + Enable Directive 启用指定 NSID 的指令
同步机制 对于共享 namespace,启用状态自动在相同 HOSTID 的控制器间同步
默认状态 Identify Directive 总是被支持和启用;其他指令在重置后需重新启用

✅ 建议学习路径

  1. 先使用 Directive Receive + Return Parameters 查看支持与启用状态;
  2. 若某 Directive 被支持但未启用,使用 Directive Send + Enable Directive 启用;
  3. 使用相同 HOSTID 的多个控制器时,可自动同步指令启用状态;
  4. 操作时注意 NSID = FFFFFFFFh 表示“全局生效”;
  5. 每次重置后(除 Identify 指令),其他 Directives 需重新启用。

下一页进入 Streams Directive(流写优化) 的具体结构与用途说明(8.7.3),是否继续帮你逐条翻译讲解?这部分是 Directives 中唯一一个 适用于 I/O 命令的数据归类优化指令,在高性能 SSD 应用中非常关键。