命名空间管理与配置 - 第127页
NVME2.0协议解读 1 min read

命名空间管理与配置 - 第127页

Blog Author

下面是对 《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.EN0 变为 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 = 0CSTS.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
或者是否想让我绘制一张“关机状态机流程图”来帮助你可视化理解?