我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 188 页的内容,重点解析 Device Self-test Log Page(设备自检日志页) 和 Self-test Result Data Structure(自检结果数据结构)。
✅ 一、Device Self-test Log Page(设备自检日志页,LID = 06h)
📌 功能:
该日志页用于指示设备自检操作的状态,包括自检操作的完成百分比和过去的 20 次自检操作结果。这些信息有助于诊断设备是否存在故障或性能问题。
📌 字段解析:
- Current Device Self-Test Operation(当前设备自检操作)
- 该字段定义了当前正在进行的设备自检操作的状态。字段值指示自检操作的类型,从无自检到扩展自检。
| Bits |
描述 |
| Bits 3:0 |
自检操作的状态: |
0h |
无自检操作正在进行 |
1h |
正在进行短自检操作 |
2h |
正在进行扩展自检操作 |
3h-Dh |
保留 |
Eh |
厂商特定 |
Fh |
保留 |
注意:如果自检操作正在进行中(即当前字段为 1h 或 2h),则控制器不会将该字段设置为 0h,直到新的自检结果数据结构创建。
- Current Device Self-Test Completion(当前设备自检完成度)
- 该字段指示当前自检操作的完成度,表示自检操作已完成的百分比。
| Bits |
描述 |
| Bits 6:0 |
自检操作已完成的百分比。例如,25 表示自检完成了 25%,剩余 75% 尚未完成。如果没有正在进行的自检操作(即 Current Device Self-Test Operation 为 0h),则该字段无效。 |
- Newest Self-test Result Data Structure(最新自检结果数据结构)
- 该字段包含 最新完成或中止的自检操作 的结果数据结构。每次自检操作完成或中止时,都会创建一个新的自检结果数据结构。
| 字段 |
描述 |
| Newest Self-test Result Data Structure |
包含最新自检操作的结果数据结构。 |
- 2nd newest Self-test Result Data Structure(第二次最新自检结果数据结构)
- 该字段包含第二次最新自检操作的结果数据结构。如果自检操作少于 20 次,该字段会被清空。
| 字段 |
描述 |
| 2nd newest Self-test Result Data Structure |
包含第二次最新的自检操作结果数据结构。 |
✅ 二、Self-test Result Data Structure(自检结果数据结构)
📌 功能:
该数据结构描述了每次设备自检操作的状态和结果,帮助用户了解设备自检的成功与失败,具体包括操作状态、故障信息等。
📌 字段解析:
- Device Self-test Status(设备自检状态)
- 该字段指示设备自检的状态和操作的结果。
| Bits |
描述 |
| Bits 7:4 |
Self-test Code:自检操作的类型。 |
0h |
保留 |
1h |
短自检操作 |
2h |
扩展自检操作 |
3h-Dh |
保留 |
Eh |
厂商特定 |
Fh |
保留 |
| Bits 3:0 |
操作结果:指示自检操作的完成状态。 |
0h |
操作完成,无错误 |
1h |
操作被设备自检命令中止 |
2h |
操作被控制器级重置中止 |
3h |
操作被从命名空间清除的命名空间中止 |
4h |
操作被格式化 NVM 命令中止 |
5h |
执行自检时发生严重错误或未知测试错误,操作未完成 |
6h |
操作完成,但存在失败的段且未标识失败段 |
7h |
操作完成,但存在失败的段,且失败的段在 Segment Number 字段中标识 |
8h |
操作因未知原因中止 |
9h |
操作因清除操作中止 |
Fh |
未使用条目(不包含测试结果) |
- Segment Number(段号)
- 如果自检操作结果为
7h(存在失败段),该字段指示第一个失败的段号。
| 字段 |
描述 |
| Segment Number |
指示自检操作失败的第一个段号。如果设备自检状态不是 7h,则该字段无效。 |
- Valid Diagnostic Information(有效诊断信息)
- 该字段指示诊断失败信息的有效性。包括 Status Code、Status Code Type、Failing LBA、Namespace Identifier 等字段的有效性。
| 字段 |
描述 |
| Bits 7:4 |
保留 |
| Bit 3 (SC Valid) |
如果为 1,则表示 Status Code 字段有效 |
| Bit 2 (SCT Valid) |
如果为 1,则表示 Status Code Type 字段有效 |
| Bit 1 (FLBA Valid) |
如果为 1,则表示 Failing LBA 字段有效 |
| Bit 0 (NSID Valid) |
如果为 1,则表示 Namespace Identifier 字段有效 |
- Reserved(保留字段)
- 用于未来扩展的保留字段,通常在实现中不使用。
✅ 三、总结与学习建议
| 模块 |
建议 |
| 自检操作监控 |
学习如何根据 Device Self-test Log 监控设备的自检状态,确保设备在自检过程中没有发生故障。 |
| 自检结果解析 |
通过 Self-test Result Data Structure,分析设备自检的完成状态、是否有错误发生,以及错误的具体细节,特别是 Segment Number 和 Valid Diagnostic Information 字段。 |
| 故障诊断与追踪 |
学会使用 自检结果数据结构 中的诊断信息,追踪自检失败的原因,特别是如何通过 Failing LBA 和 Namespace Identifier 字段找到出现问题的具体位置。 |
如果你需要:
- 设备自检操作与故障分析图解,展示如何基于自检结果结构诊断设备问题
- 自检操作执行状态监控,帮助你更好地理解如何实时跟踪自检进度和错误
我可以为你提供相关的图表和示意图,帮助你更好地理解设备自检与故障处理机制。你希望从哪里开始呢?