我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 189 页的内容,重点讲解 Self-test Result Data Structure(自检结果数据结构) 和 Telemetry Host-Initiated Log(主机发起的遥测日志) 中的字段解析。
✅ 一、Self-test Result Data Structure(自检结果数据结构)
📌 功能:
该数据结构描述了设备自检操作的详细结果,包括自检的状态、错误代码、故障段号等。它有助于诊断设备在自检过程中发生的故障或不稳定性。
📌 字段解析:
- Power On Hours(POH)
- 该字段表示设备自检操作完成或中止时的 上电时间(单位:小时)。不包括控制器在 低功耗状态下 的时间。
| 字段 |
描述 |
| Power On Hours (POH) |
设备自检操作完成时的上电时间,不包括低功耗状态的时间。 |
- Namespace Identifier(NSID)
- 该字段指示发生故障的 命名空间 ID(NSID)。该字段仅在 NSID Valid 位为
1 时有效。
| 字段 |
描述 |
| Namespace Identifier (NSID) |
发生故障的命名空间的标识符。 |
- Failing LBA1(失败 LBA)
- 该字段与 I/O 命令集相关,表示自检过程中发生错误的逻辑块地址(LBA)。具体描述可以参考 I/O Command Set 规范。
| 字段 |
描述 |
| Failing LBA1 |
失败的逻辑块地址,适用于所有 I/O 命令集。 |
注意:该字段在不同的 I/O 命令集下会有所不同。
- Status Code Type(状态码类型)
- 该字段提供额外的错误或条件信息。它与完成队列条目中的 状态码类型字段 相同。只有当 SCT Valid 位为
1 时,该字段才有效。
| 字段 |
描述 |
| Status Code Type |
该字段包含与错误或条件相关的附加信息,格式与完成队列中的状态码类型一致。 |
- Status Code(状态码)
- 该字段与 状态码类型 一样,包含关于设备自检操作中发生的错误或条件的详细信息。仅当 SC Valid 位为
1 时有效。
| 字段 |
描述 |
| Status Code |
设备自检操作中的错误或条件的详细信息。 |
- Vendor Specific(厂商特定)
- 该字段保留给厂商使用,具体信息可以根据设备的实现来定义。
| 字段 |
描述 |
| Vendor Specific |
厂商定义的额外信息。 |
✅ 二、Telemetry Host-Initiated Log(主机发起的遥测日志,LID = 07h)
📌 功能:
该日志用于捕获和记录 控制器的内部状态,通常由 主机发起。控制器会在处理带有 Create Telemetry Host-Initiated Data 位设置为 1 的 Get Log Page 命令时捕获该信息。此日志页可以用于分析控制器的健康状态和性能。
📌 字段解析:
- Create Telemetry Host-Initiated Data(创建主机发起的遥测数据)
- 如果该位为
1,则表示控制器将捕获并记录其内部状态信息。该数据将包括多个数据区域,并且不会在新的遥测日志处理之前更改。
| 字段 |
描述 |
| Create Telemetry Host-Initiated Data |
如果为 1,控制器将捕获当前的内部状态信息。 |
注意:控制器的遥测数据不会改变,直到以下情况之一发生:
- 收到下一个设置该位为 1 的遥测日志命令;
- 执行固件提交命令;
- 执行电源复位。
- Telemetry Host-Initiated Data Areas(遥测数据区域)
- 该字段包含不同的遥测数据区域。遥测数据分为 三个区域 或 四个区域,具体取决于日志页属性字段的设置。
| 字段 |
描述 |
| Telemetry Host-Initiated Data Area 1-4 |
包含遥测数据的不同区域,具体取决于 Log Page Attributes 字段的设置。 |
- Log Page Offset(日志页偏移)
- 控制器在处理日志时,必须遵循 日志页偏移量 的要求。该偏移量必须是 512 字节的倍数,否则命令会被中止,并返回状态代码
Invalid Field in Command。
| 字段 |
描述 |
| Log Page Offset Lower |
指定日志页偏移量,必须是 512 字节的倍数。 |
✅ 三、总结与学习建议
| 模块 |
建议 |
| 自检结果分析 |
学习如何根据 Self-test Result Data Structure 提取自检操作的详细结果,特别是错误类型、故障段号和相关的状态码。 |
| 设备故障诊断 |
通过 Failing LBA 和 Status Code Type/Status Code 字段,进一步分析设备自检过程中出现的故障,帮助定位问题。 |
| 遥测日志应用 |
理解 Telemetry Host-Initiated Log 的作用,学习如何通过主机发起的遥测数据监控控制器的内部状态,确保系统运行健康。 |
| 遥测数据更新 |
学习如何通过 Create Telemetry Host-Initiated Data 字段触发遥测数据的更新,并掌握控制器在不同情况下更新数据的流程。 |
如果你需要:
- 自检结果与故障诊断图解,帮助快速定位设备自检中出现的问题
- 遥测日志监控与分析流程图,帮助你更好地理解如何利用遥测日志跟踪设备健康状况
我可以为你提供相关的图示和流程图,帮助你更深入地理解这些机制。你需要从哪个部分开始呢?