高级特性与优化 - 第327页
NVME2.0协议解读 1 min read

高级特性与优化 - 第327页

Blog Author

我们继续深入分析 NVMe Base Specification 2.0b 中的 Feature Identifier 82h 与 83h(Set Features / Get Features),并以中文方式为你梳理重点逻辑、适用条件与使用场景:


Feature Identifier 82h: Reservation Notification Mask(保留通知屏蔽)

用于配置是否屏蔽特定类型的 Reservation(保留)相关事件通知。这些通知用于触发 Reservation Notification Log Page 的更新。

🌟 作用:

通过此 Feature,主机可选择是否屏蔽以下三类保留事件的通知(每个 Namespace 可单独设置): - REGPRE:Registration Preempted(注册被抢占) - RESREL:Reservation Released(保留被释放) - RESPRE:Reservation Preempted(保留被抢占)


🧠【命令字段结构】

📍Command Dword 11(见 Figure 367):

Bit 字段名 功能说明
03 RESPRE 屏蔽“保留抢占”通知(1=屏蔽,0=允许)
02 RESREL 屏蔽“保留释放”通知
01 REGPRE 屏蔽“注册抢占”通知
00, 31:04 Reserved 保留位

🔁【命令行为说明】

  • Set Features
  • 指定 NSID = FFFFFFFFh:作用于所有支持 Reservation 的 Namespace
  • 指定特定 NSID:仅作用于该命名空间
  • Get Features
  • NSID != FFFFFFFFh:返回对应 Namespace 的配置
  • NSID == FFFFFFFFh应中止命令,返回 Invalid Field in Command

Feature Identifier 83h: Reservation Persistence(保留持久性配置)

🌟 作用:

此 Feature 设置或读取 每个 Namespace 的“断电后是否保留 Reservation 信息”的行为,即 PTPL(Persist Through Power Loss)状态


🧠【行为说明】

✅ PTPL 状态的修改方式:

  • 通过 Set Features 命令
  • 或通过 Reservation Register 命令(详见规范第 7.3 节)

📍Command Dword 11:

包含一个二进制位(在未展示的 Figure 368 中定义)用于表示是否启用 PTPL:

Bit 字段名 功能说明
00 PTPL Enable 1=断电保留 Reservation;0=断电清除 Reservation
31:01 Reserved 保留位

🔁【命令使用规则】

操作类型 NSID = FFFFFFFFh NSID = 有效命名空间ID
Set 设置所有支持 PTPL 的命名空间 设置指定 Namespace 的 PTPL 状态
Get 返回错误(Invalid Field) 返回对应 Namespace 的 PTPL 状态

⚠️【注意事项】

  • 若 Namespace 不支持 Reservation 或 PTPL(Identify NamespaceRESCAP=0),则访问该 Feature 会被拒绝。
  • 支持 Reservation 功能的控制器(ONCS 指示)必须实现此 Feature(即此为 Mandatory Feature)。

📘总结图解:

Reservation 功能相关控制特性(Namespace Scoped):


┌─────────────────────────────┬────────────────────────────┐
│ Feature ID                  │ 功能                       │
├─────────────────────────────┼────────────────────────────┤
│ 82h                         │ Reservation Notification Mask │
│                             │ 屏蔽或启用指定类型的通知   │
├─────────────────────────────┼────────────────────────────┤
│ 83h                         │ Reservation Persistence     │
│                             │ 是否启用“掉电后保留注册信息”│
└─────────────────────────────┴────────────────────────────┘

如果你需要我进一步帮你: - 展示 Reservation Register 命令的行为与 PTPL 的关联 - 比较 Reservation 系统中涉及的所有 Feature 配置方式 - 给出一个具体命令的 Hex 构造示例

欢迎继续提问,我们可以一起把 NVMe Feature 设置机制掌握得非常透彻 💪