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

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

Blog Author

以下是对 《NVM Express® Base Specification, revision 2.0b》第115页 中涉及 控制器初始化错误处理与关机处理中文深入分析与学习讲解


🌟 控制器初始化错误处理(Handling Errors During Initialization)

控制器初始化超时:命名空间与介质就绪失败

如果控制器在启用后(CC.EN = 1)无法在 CRTO.CRWMT 超时限制内完成以下操作,则需要进行错误处理:

  1. 命名空间未准备好:至少有一个命名空间在超时期间未准备好。
  2. 介质未准备好:至少有一个 Admin 命令所需的介质在超时期间未准备好。

错误处理过程:

  • 控制器未就绪:如果控制器在 CRTO.CRWMT 超过最大等待时间后仍未变为就绪(CSTS.RDY),则:
  • 控制器必须在该超时内变为就绪,设置 CSTS.RDY1
  • 如果控制器支持持久事件日志(Persistent Event Log),则会记录一个硬件错误事件,事件代码设置为 Controller Ready Timeout Exceeded,并存储在持久事件日志中(参见图 233)。

🔧 关机处理(Shutdown Processing)

关机流程

在即将断电或关机的情况下,协议推荐主机按照以下步骤进行正常或突发关机处理:

📝 正常关机步骤:

  1. 停止提交新 I/O 命令:如果控制器处于启用状态(CC.EN = 1),主机应停止向控制器提交任何新的 I/O 命令,并等待所有待处理命令完成。

  2. 删除 I/O 提交队列

  3. 如果控制器实现了 I/O 队列,主机应使用 Delete I/O Submission Queue 命令删除所有 I/O 提交队列。
  4. 完成此命令后,所有剩余的命令将被中止。

  5. 删除 I/O 完成队列

  6. 如果控制器实现了 I/O 完成队列,主机应使用 Delete I/O Completion Queue 命令删除所有 I/O 完成队列。

  7. 设置关机通知

  8. 主机应将 Shutdown Notification (CC.SHN) 字段设置为 01b,以指示正常的关机操作。
  9. 控制器会通过更新 Shutdown Status (CSTS.SHST) 字段为 10b 和清除 Shutdown Type (CSTS.ST) 字段为 0 来指示关机处理完成。

📝 突发关机步骤:

  1. 停止提交新 I/O 命令:如果控制器已启用(CC.EN = 1),主机应停止向控制器提交新 I/O 命令。

  2. 设置关机通知

  3. 主机应将 Shutdown Notification (CC.SHN) 字段设置为 10b,以指示突发关机操作。
  4. 控制器会通过更新 Shutdown Status (CSTS.SHST) 字段为 10b 并清除 Shutdown Type (CSTS.ST) 字段为 0 来指示关机处理完成。

🔋 进入 D3 电源状态:

  • 为了进入 D3 电源状态,主机应遵循正常的关机步骤。
  • 推荐主机等待 RTD3 Entry Latency(在 Identify Controller 数据结构中报告的字段)作为关机操作的最小延迟。如果该值为 0h,则应至少等待 1 秒。

不推荐通过 CC.EN 字段禁用控制器,因为这会导致 控制器重置,可能影响关机处理的完成时间。

关机过程中命令处理:

  • 在关机处理中,控制器可以中止任何命令,并返回 “Commands Aborted due to Power Loss Notification” 状态码。

📘 关键点总结与理解:

为什么需要控制器初始化和关机处理的细致规定?

  • 初始化超时:控制器在启动过程中,可能由于硬件或资源问题未能及时准备好,协议通过超时机制确保主机能够及时检测到初始化错误,并作出相应处理。
  • 关机流程:在系统断电或关机时,必须确保所有命令处理完毕,所有数据正确保存,避免数据丢失。正常与突发关机模式下,主机行为应有所区分,确保控制器正确完成关机。

🎯 实践建议与注意事项:

1. 关机时的操作顺序

  • 无论是正常关机还是突发关机,都应严格按照协议的步骤进行操作,特别是停止提交命令和删除队列的顺序,确保控制器能在无误的情况下完成关机。

2. 控制器状态监控

  • 在控制器初始化期间,主机应监控控制器是否在 CRTO.CRWMT 时间内变为就绪。如果超过该时间,主机应检查事件日志,以便确认是否存在硬件错误。

3. 关机时延

  • 如果设备进入 D3 电源状态,主机应确保遵循 RTD3 Entry Latency 延迟时间,避免关机操作过于急促导致硬件未能完成关机操作。

如果你对 持久事件日志(Persistent Event Log) 的结构、Shutdown Status 处理、或 RTD3 Entry Latency 等细节有进一步的疑问,我可以继续深入解释。是否希望继续探讨这些部分?