命名空间管理与配置 - 第126页
以下是对 《NVM Express® Base Specification, revision 2.0b》第115页 中涉及 控制器初始化错误处理与关机处理 的中文深入分析与学习讲解:
🌟 控制器初始化错误处理(Handling Errors During Initialization)
✅ 控制器初始化超时:命名空间与介质就绪失败
如果控制器在启用后(CC.EN = 1)无法在 CRTO.CRWMT 超时限制内完成以下操作,则需要进行错误处理:
- 命名空间未准备好:至少有一个命名空间在超时期间未准备好。
- 介质未准备好:至少有一个 Admin 命令所需的介质在超时期间未准备好。
❗ 错误处理过程:
- 控制器未就绪:如果控制器在
CRTO.CRWMT超过最大等待时间后仍未变为就绪(CSTS.RDY),则: - 控制器必须在该超时内变为就绪,设置
CSTS.RDY为1。 - 如果控制器支持持久事件日志(Persistent Event Log),则会记录一个硬件错误事件,事件代码设置为 Controller Ready Timeout Exceeded,并存储在持久事件日志中(参见图 233)。
🔧 关机处理(Shutdown Processing)
✅ 关机流程
在即将断电或关机的情况下,协议推荐主机按照以下步骤进行正常或突发关机处理:
📝 正常关机步骤:
-
停止提交新 I/O 命令:如果控制器处于启用状态(
CC.EN = 1),主机应停止向控制器提交任何新的 I/O 命令,并等待所有待处理命令完成。 -
删除 I/O 提交队列:
- 如果控制器实现了 I/O 队列,主机应使用 Delete I/O Submission Queue 命令删除所有 I/O 提交队列。
-
完成此命令后,所有剩余的命令将被中止。
-
删除 I/O 完成队列:
-
如果控制器实现了 I/O 完成队列,主机应使用 Delete I/O Completion Queue 命令删除所有 I/O 完成队列。
-
设置关机通知:
- 主机应将 Shutdown Notification (CC.SHN) 字段设置为
01b,以指示正常的关机操作。 - 控制器会通过更新 Shutdown Status (CSTS.SHST) 字段为
10b和清除 Shutdown Type (CSTS.ST) 字段为0来指示关机处理完成。
📝 突发关机步骤:
-
停止提交新 I/O 命令:如果控制器已启用(
CC.EN = 1),主机应停止向控制器提交新 I/O 命令。 -
设置关机通知:
- 主机应将 Shutdown Notification (CC.SHN) 字段设置为
10b,以指示突发关机操作。 - 控制器会通过更新 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 等细节有进一步的疑问,我可以继续深入解释。是否希望继续探讨这些部分?