管理命令集与操作 - 第185页
NVME2.0协议解读 1 min read

管理命令集与操作 - 第185页

Blog Author

我们继续深入解读 NVM Express® Base Specification Revision 2.0b 第 174 页内容,聚焦于:


✅ Get Log Page 命令的详细字段解析(Command Dword 10 ~ 12)

涵盖字段包括: - Log Page Identifier(LID) - Log Specific Field(LSP) - Log Specific Identifier - Offset 类型(Byte/Index) - Offset 字段(LPOL)


✅ 一、Get Log Page – Command Dword 10(图 197)

Bits 字段 描述
14:08 Log Specific Field(LSP) 如果目标日志页未定义该字段,则为保留位
07:00 Log Page Identifier(LID) 指定要访问的日志页 ID(例如 SMART 日志为 02h,LID 列表见章节 3.1.2.1.2 等)

LID 是 Get Log Page 的核心字段,决定了获取哪种日志页。

🔸 LSP 是某些日志页特定的附加控制字段,并不是所有日志页都会用到


✅ 二、Get Log Page – Command Dword 11(图 198)

📌 Bits 31:16 – Log Specific Identifier(日志页专属标识符)

  • 用于某些日志页,需要额外的标识来指定其范围、归属等,例如:
  • Endurance Group 信息页 → 需要 Endurance Group Identifier
  • Predictable Latency Per NVM Set → 需要 NVM Set Identifier
  • Media Unit Status / Supported Capacity List → 需要 Domain Identifier

❗ 如果控制器不支持多域(Multiple Domains),此字段为保留位。
❗ 若指定了不合法的标识符(比如不存在的 Domain ID),控制器会返回状态码: Invalid Field in Command


📌 Bits 15:00 – Number of Dwords Upper(NUMDU)

  • 表示返回数据长度的高 16 位,与前面的 NUMDL(低 16 位)拼成完整的传输长度字段。
  • 注意:这是一个 0-based 值,即 NUMDU:NUMDL = 0000_0000h 表示实际传输 1 个 Dword。

✅ 三、Get Log Page – Command Dword 12(图 199)

📌 Bits 31:00 – Log Page Offset Lower(LPOL)

用于指定从日志页的哪个位置开始返回数据。


📌 不同 Offset 类型下 LPOL 的解释:

🔹 Offset Type (OT) = 0(Byte Offset)

此时 LPOL 表示 Byte 偏移量

  • 必须 Dword 对齐(即 LPOL 的 bit[1:0] 应为 00b);
  • 🚫 控制器不强制检查对齐位,但如果未对齐,可能报错 Invalid Field in Command
  • ❗ 若偏移量超过日志页实际大小,例如日志页只有 100 字节却从 200 偏移读取,会返回:
  • Invalid Field in Command

🔹 Offset Type (OT) = 1(Index Offset)

此时 LPOL 表示 数据结构条目的索引位置(用于某些带数组/列表结构的日志页):

  • 每个日志页需定义自身的 索引含义(Index 单位是“条目”而不是 Byte);
  • 如果指定的索引超过条目数(如:日志页只有 100 项,却索引从 200),控制器将报错;
  • ✅ 此模式下只有当该日志页在 “LID Supported and Effects Data Structure” 中标记为:
  • IOS=1(Index Offset Supported) 时才能使用,否则返回:
    • Invalid Field in Command

✅ 四、学习重点小结

模块 要点总结
LID 决定日志类型,必须查阅标准 LID 表
LSP & Log Specific ID 并非所有日志页使用,部分日志页依赖特定 ID,如 NVM Set ID、Domain ID 等
NUMDU/NUMDL 合并组成实际数据长度,0-based 值
LPOL(偏移字段) 需根据 OT 位解释是字节偏移还是结构索引偏移
偏移合法性检查 偏移超过日志页实际内容或结构数将导致 Invalid Field in Command
IOS 位配合 OT 使用 如果日志页不支持索引访问(IOS=0),却使用 OT=1,命令将失败

✅ 举例说明

✅ 示例 1:获取 SMART 日志页(LID = 02h)

  • 不使用 LSP、Log Specific ID
  • 设置 OT = 0,LPOL = 0,表示从头按字节偏移读取

✅ 示例 2:获取 Media Unit Status(需要 Domain ID)

  • 设置 Log Specific Identifier = 0x01(目标 Domain)
  • LID = 对应日志页 ID
  • OT = 1(假设该日志页支持 Index Offset)
  • LPOL = 0 表示从第 0 项结构开始读取

如果你需要我整理一份“日志页访问策略图(LID → 是否支持 Index Offset、是否需要额外 ID)”或一张“Get Log Page 字段结构完整图解”,我可以马上做给你,帮助快速掌握这一复杂命令。需要我生成一份吗?