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

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

Blog Author

我们继续深入学习 NVM Express® Base Specification Revision 2.0b 第 356 页内容,涵盖两个部分:


✅ 一、扩展设备自检操作(Extended Device Self-Test Operation)


📌 执行特性与机制

⏱ 执行时间:

  • 应在 Identify Controller 数据结构中的 Extended Device Self-test Time 字段指定时间内完成。
  • 进度通过 Device Self-Test Log 中的 Current Percentage Complete 字段 指示。

🧠 特殊能力:

  • 与短自检不同,扩展自检在控制器复位或上电后能够恢复继续执行
  • 恢复后 从上次测试的段开始或重新执行上一个段(具体取决于厂商)

🚫 中止触发条件(与短自检相似)

条件 是否中止 说明
a) Format NVM 指令 ✅ 中止 依据图 415 判定
b) Sanitize 操作启动 ✅ 中止 数据擦除前需停止自检
c) Self-test 指令的 Self-Test Code 为 Fh(中止) ✅ 中止 明确指示终止
d) Namespace 被移除 🟡 可选中止 控制器可根据实现选择中止与否

🔎 图 415 的 Format NVM 中止判断机制,在之前我们已详细解析,请参考之前笔记。


✅ 二、Directives(指令机制)


📚 定义:

Directives 是 主机与 NVMe 子系统/控制器之间信息交换机制

  • Directive Receive 指令:控制器 ➡ 主机;
  • Directive Send 指令:主机 ➡ 控制器;
  • 某些 I/O 命令(如 Write)可能携带 Directive Specific 字段,实现特定行为。

🔍 判断支持条件:

判断控制器是否支持 Directives: - 查看 Identify Controller 数据结构中的 OACS(Optional Admin Command Support)字段; - 如果支持,则需 强制支持以下内容

要素 要求
OACS 中标记为支持 Directives
支持 Directive Receive 命令
支持 Directive Send 命令
支持 Type 00h 的 Identify Directive

🧾 可支持的 Directive 类型(Figure 416)

Directive 名称 Directive Type 值 定义章节 可用于 I/O 命令?
Identify 00h §8.7.2 ❌ 否
Streams 01h §8.7.3 ✅ 是

💡 总结重点

分类 内容
类型 Device Self-Test & Directives
扩展自检特点 可在重置后恢复,执行时间更长,分段结构更复杂
中止条件 与短自检相同(Format/Sanitize/Code Fh)
Directives 是什么 主机和控制器间的一种可扩展通信机制
支持条件 OACS 中声明,且必须支持基本 Directive 命令
当前支持的类型 Identify(00h),Streams(01h)

如果你希望我接下来详细分析:

  • 8.7.2 Identify Directive 的结构与命令格式;
  • 8.7.3 Streams Directive 的原理与使用场景;

可以直接告诉我,我们继续一条条解析 🔍。需要继续吗?