命名空间管理与配置 - 第127页
下面是对 《NVM Express® Base Specification, revision 2.0b》第116页 所涉及的内容进行的中文深入分析与教学讲解,涵盖:
- 控制器安全断电条件
- 控制器关机后的再次启用方式
- 基于消息的控制器关机流程(Message-based Transport)
- NVM 子系统关机机制(NVM Subsystem Shutdown)
🔌 一、控制器何时可以安全断电?
在完成关机处理后:
- 当以下两个条件成立时,即可安全断电:
CSTS.ST == 0(Shutdown Type 字段为 0,代表无剩余未完成关机类型)CSTS.SHST == 10b(表示 Shutdown Status 为“关机完成”)
✅ 此时,即使 CC.EN = 1(控制器启用),仍可以安全断电
✅ 一旦控制器再次启用(CC.EN 从 0 变为 1),则必须重新执行初始化过程
🔁 二、关机后的再次启用方式与要求
想要在关机完成后重新使用控制器,需要正确设置 CC.EN:
当前 CC.EN 状态 |
操作 | 启用方式 |
|---|---|---|
CC.EN = 1 |
必须先清零为 0,再设置为 1 | 即 Controller Reset |
CC.EN = 0 |
直接设置为 1 | 控制器启用 |
🧠 注意: 重新启用后,需要重新执行初始化序列(如队列创建、Identify、命名空间扫描等),与上电初始状态一致。
❗ 三、Admin Queue 中剩余命令的处理
协议不强制要求主机在关机前中止 Admin Queue 中的命令,但推荐如下:
- 在关机完成时,Admin Queue 中唯一允许存在的命令是:
- Asynchronous Event Request(AER):因为它是常驻等待事件触发的命令
📬 四、Message-based Transport 的控制器关机(如 NVMe over Fabrics)
✅ 如何发起关机:
使用 Property Set 命令(详见 §6.6)来设置 CC.SHN 字段:
| 值 | 含义 |
|---|---|
01b |
正常关机 |
10b |
突发关机 |
🧠 行为与区别:
- 与 PCIe 模式不同,Fabrics 模式不使用
CC.EN来关机 - 发起关机后,主机可以选择:
- 主动断开 NVMe Transport 连接
- 或持续轮询
CSTS.SHST查看关机是否完成
🚫 控制器行为限制:
在关机期间(直到发生 Controller Reset 或控制器被移除前):
- 控制器仅处理 Fabrics 命令
- 如果支持 Keep Alive 机制,则此时应禁用
⏳ 五、关机后的连接保持(Fabrics 特有)
- 如果在关机过程中或之后,
CC.EN被清零(代表 Controller Reset): - 控制器与主机之间的连接关系(association)应保留至少 2分钟
- 若控制器在这 2 分钟内未被重新启用,控制器可移除关联关系
🧩 六、NVM 子系统级关机(NVM Subsystem Shutdown)
🔄 什么是 NVM Subsystem Shutdown?
- 它是一种通过 一个控制器 来同步关闭整个子系统中所有控制器的机制。
- 适用于单域(Single Domain)子系统
✅ 两种发起方式:
| 方式 | 条件 |
|---|---|
主机向 NSSD.NSSC 写入 "Nrml"(十六进制 4E726D6Ch) |
仅在 CAP.CPS = 11b(支持 NVM Subsystem Shutdown)时生效 |
| 发出 NVMe-MI 的 Shutdown 命令 | 向管理端点(Management Endpoint)发出关机命令 |
🔍 子系统中各控制器的行为:
对于每个控制器,在收到子系统关机信号时:
- 若该控制器
CSTS.SHST == 00b(表示未开始关机) - 则应立即进入关机处理状态
后续将进入 §3.6.3.1 继续描述子系统中每个控制器的处理流程
✅ 总结教学重点:
| 内容板块 | 要点总结 |
|---|---|
| 安全断电条件 | CSTS.ST = 0 且 CSTS.SHST = 10b,无论 CC.EN 状态如何 |
| 关机后重启控制器 | 如果之前是 CC.EN=1,则需要先清零,再启用;之后重新初始化 |
| Message-based Transport 模式 | 不使用 CC.EN 来关机,仅通过 Property Set 发起关机 |
| 子系统级关机 | 可通过 "Nrml" 标记或 NVMe-MI 命令一次性关闭多个控制器 |
是否需要我继续带你进入下一页(第117页),继续深入讲解 §3.6.3.1:NVM Subsystem Shutdown in a Single Domain NVM Subsystem?
或者是否想让我绘制一张“关机状态机流程图”来帮助你可视化理解?