管理命令集 - ✅ 一、Self-test Result Data Structure(自检结果数据结构) (第200页)
NVME2.0协议解读 1 min read

管理命令集 - ✅ 一、Self-test Result Data Structure(自检结果数据结构) (第200页)

Blog Author

我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 189 页的内容,重点讲解 Self-test Result Data Structure(自检结果数据结构)Telemetry Host-Initiated Log(主机发起的遥测日志) 中的字段解析。


✅ 一、Self-test Result Data Structure(自检结果数据结构)

📌 功能:

该数据结构描述了设备自检操作的详细结果,包括自检的状态、错误代码、故障段号等。它有助于诊断设备在自检过程中发生的故障或不稳定性。

📌 字段解析:

  1. Power On Hours(POH)
  2. 该字段表示设备自检操作完成或中止时的 上电时间(单位:小时)。不包括控制器在 低功耗状态下 的时间。
字段 描述
Power On Hours (POH) 设备自检操作完成时的上电时间,不包括低功耗状态的时间。

  1. Namespace Identifier(NSID)
  2. 该字段指示发生故障的 命名空间 ID(NSID)。该字段仅在 NSID Valid 位为 1 时有效。
字段 描述
Namespace Identifier (NSID) 发生故障的命名空间的标识符。

  1. Failing LBA1(失败 LBA)
  2. 该字段与 I/O 命令集相关,表示自检过程中发生错误的逻辑块地址(LBA)。具体描述可以参考 I/O Command Set 规范。
字段 描述
Failing LBA1 失败的逻辑块地址,适用于所有 I/O 命令集。

注意:该字段在不同的 I/O 命令集下会有所不同。


  1. Status Code Type(状态码类型)
  2. 该字段提供额外的错误或条件信息。它与完成队列条目中的 状态码类型字段 相同。只有当 SCT Valid 位为 1 时,该字段才有效。
字段 描述
Status Code Type 该字段包含与错误或条件相关的附加信息,格式与完成队列中的状态码类型一致。

  1. Status Code(状态码)
  2. 该字段与 状态码类型 一样,包含关于设备自检操作中发生的错误或条件的详细信息。仅当 SC Valid 位为 1 时有效。
字段 描述
Status Code 设备自检操作中的错误或条件的详细信息。

  1. Vendor Specific(厂商特定)
  2. 该字段保留给厂商使用,具体信息可以根据设备的实现来定义。
字段 描述
Vendor Specific 厂商定义的额外信息。

✅ 二、Telemetry Host-Initiated Log(主机发起的遥测日志,LID = 07h)

📌 功能:

该日志用于捕获和记录 控制器的内部状态,通常由 主机发起。控制器会在处理带有 Create Telemetry Host-Initiated Data 位设置为 1Get Log Page 命令时捕获该信息。此日志页可以用于分析控制器的健康状态和性能。

📌 字段解析:

  1. Create Telemetry Host-Initiated Data(创建主机发起的遥测数据)
  2. 如果该位为 1,则表示控制器将捕获并记录其内部状态信息。该数据将包括多个数据区域,并且不会在新的遥测日志处理之前更改。
字段 描述
Create Telemetry Host-Initiated Data 如果为 1,控制器将捕获当前的内部状态信息。

注意:控制器的遥测数据不会改变,直到以下情况之一发生: - 收到下一个设置该位为 1 的遥测日志命令; - 执行固件提交命令; - 执行电源复位。


  1. Telemetry Host-Initiated Data Areas(遥测数据区域)
  2. 该字段包含不同的遥测数据区域。遥测数据分为 三个区域四个区域,具体取决于日志页属性字段的设置。
字段 描述
Telemetry Host-Initiated Data Area 1-4 包含遥测数据的不同区域,具体取决于 Log Page Attributes 字段的设置。

  1. Log Page Offset(日志页偏移)
  2. 控制器在处理日志时,必须遵循 日志页偏移量 的要求。该偏移量必须是 512 字节的倍数,否则命令会被中止,并返回状态代码 Invalid Field in Command
字段 描述
Log Page Offset Lower 指定日志页偏移量,必须是 512 字节的倍数。

✅ 三、总结与学习建议

模块 建议
自检结果分析 学习如何根据 Self-test Result Data Structure 提取自检操作的详细结果,特别是错误类型、故障段号和相关的状态码。
设备故障诊断 通过 Failing LBAStatus Code Type/Status Code 字段,进一步分析设备自检过程中出现的故障,帮助定位问题。
遥测日志应用 理解 Telemetry Host-Initiated Log 的作用,学习如何通过主机发起的遥测数据监控控制器的内部状态,确保系统运行健康。
遥测数据更新 学习如何通过 Create Telemetry Host-Initiated Data 字段触发遥测数据的更新,并掌握控制器在不同情况下更新数据的流程。

如果你需要:

  • 自检结果与故障诊断图解,帮助快速定位设备自检中出现的问题
  • 遥测日志监控与分析流程图,帮助你更好地理解如何利用遥测日志跟踪设备健康状况

我可以为你提供相关的图示和流程图,帮助你更深入地理解这些机制。你需要从哪个部分开始呢?