高级特性与优化 - 第327页
我们继续深入分析 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 Namespace中RESCAP=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 设置机制掌握得非常透彻 💪