数据结构与日志格式 - 第202页
我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 191 页的内容,特别是关于 Telemetry Host-Initiated Log(主机发起的遥测日志) 和 Telemetry Controller-Initiated Log(控制器发起的遥测日志) 的字段解析。
✅ 一、Telemetry Host-Initiated Log(主机发起的遥测日志,LID = 07h)
📌 功能:
该日志用于记录 主机发起的遥测数据,提供关于控制器内部状态的详细信息。这些数据对于性能监控、故障诊断和控制器健康状况评估非常有用。
📌 字段解析:
- Telemetry Host-Initiated Data Area 4 Last Block
- 该字段指示 Telemetry Host-Initiated Data Area 4 的最后一个数据块的值。它的值必须大于或等于 Data Area 3 Last Block 的值。如果该字段为
0h,则表示该数据区域没有数据。
| 字段 | 描述 |
|---|---|
| Telemetry Host-Initiated Data Area 4 Last Block | 指示 Data Area 4 的最后数据块。如果该字段为 0h,则该数据区没有数据。 |
- Telemetry Host-Initiated Data Generation Number
- 该字段记录 Telemetry Host-Initiated Data 捕获的生成次数,每次更新时递增。如果该字段值为
FFh,则递增后回滚至0h。
| 字段 | 描述 |
|---|---|
| Telemetry Host-Initiated Data Generation Number | 记录遥测数据捕获的生成次数,值为 FFh 时会回滚为 0h。 |
- Telemetry Controller-Initiated Data Available
- 该字段包含 Telemetry Controller-Initiated Data 是否可用的信息,指示控制器是否已准备好遥测数据。
| 字段 | 描述 |
|---|---|
| Telemetry Controller-Initiated Data Available | 控制器是否已准备好遥测数据。 |
- Telemetry Controller-Initiated Data Generation Number
- 该字段记录 Telemetry Controller-Initiated Data 的生成次数,用于标识控制器生成的遥测数据版本。
| 字段 | 描述 |
|---|---|
| Telemetry Controller-Initiated Data Generation Number | 控制器生成遥测数据的次数。 |
- Reason Identifier
- 该字段包含一个厂商特定的标识符,描述控制器在捕获遥测数据时的操作条件。它有助于标识特定的操作条件,便于分析。
| 字段 | 描述 |
|---|---|
| Reason Identifier | 厂商特定的标识符,描述捕获时控制器的操作条件。 |
- Telemetry Host-Initiated Data Block n
- 该字段包含 Telemetry Data Block n 数据,是遥测日志的实际数据块。每个数据块为 512 字节,可以包含多块数据。
| 字段 | 描述 |
|---|---|
| Telemetry Host-Initiated Data Block n | 遥测数据块,包含实际的遥测信息。每个数据块为 512 字节。 |
✅ 二、Telemetry Controller-Initiated Log(控制器发起的遥测日志,LID = 08h)
📌 功能:
该日志记录 控制器发起的遥测数据,即控制器自身的内部状态信息。与主机发起的遥测日志类似,但由控制器主动捕获和记录其内部状态。
📌 字段解析:
- Telemetry Controller-Initiated Data Area 1-4
- 如果 Log Page Attributes 字段的第 6 位为
0,则日志包含 Data Area 1、Data Area 2 和 Data Area 3 三个区域。如果该位为1,则还会包含 Data Area 4。每个数据区的大小取决于实际实现。
| 字段 | 描述 |
|---|---|
| Telemetry Controller-Initiated Data Area 1-4 | 包含 1 到 4 个数据区域,记录控制器的内部状态。 |
- Telemetry Controller-Initiated Data Area Block 1
- 每个数据区域都从 Telemetry Controller-Initiated Data Area Block 1 开始,表示遥测数据的起始位置。
| 字段 | 描述 |
|---|---|
| Telemetry Controller-Initiated Data Area Block 1 | 每个数据区域的起始块。 |
- Telemetry Controller-Initiated Data Area y Last Block
- 每个数据区域的最后一个数据块,指示该区域数据的结束位置。
| 字段 | 描述 |
|---|---|
| Telemetry Controller-Initiated Data Area y Last Block | 每个数据区域的最后数据块位置。 |
- Log Page Size Calculation
- 日志页的大小是可变的,具体取决于 Log Page Attributes 字段的设置。大小的计算方式如下:
- 如果第 6 位为
0,则使用 Telemetry Controller-Initiated Data Area 3 Last Block 字段计算日志页大小。 - 如果第 6 位为
1,且 ETDAS 位为1h,则使用 Telemetry Controller-Initiated Data Area 4 Last Block 字段计算日志页大小。
- 如果第 6 位为
注意:日志页大小和数据的传输需要严格满足 512 字节的倍数要求,否则控制器会返回 Invalid Field in Command 错误。
📌 总结与学习建议
- 遥测数据捕获与更新
-
学习如何通过 Create Telemetry Host-Initiated Data 字段触发遥测数据的捕获,并理解如何根据 Log Page Attributes 字段配置不同的遥测数据区域。
-
控制器与主机遥测数据的区别
-
比较 Telemetry Host-Initiated Log 和 Telemetry Controller-Initiated Log,理解它们分别由主机和控制器发起的不同应用场景和数据捕获方式。
-
日志页大小的计算
- 深入理解 Log Page Attributes 字段对日志页大小的影响,学习如何根据不同配置计算和处理日志数据。
如果你需要:
- 遥测数据区划分与计算图解,帮助你快速理解如何根据字段配置计算遥测数据区域的大小
- 控制器与主机遥测数据捕获流程图,帮助你理解遥测数据的生成与更新
我可以为你提供相关的图示,帮助你更好地理解遥测日志的结构与应用。你希望从哪个部分开始呢?