控制器寄存器 - 📘 一、Endurance Group 事件管理 (第87页)
NVME2.0协议解读 1 min read

控制器寄存器 - 📘 一、Endurance Group 事件管理 (第87页)

Blog Author

下面是对 NVM Express® Base Specification, revision 2.0b 第 76 页内容中关于 Endurance Group 事件管理Domain 与 Division 概念 的中文深入分析讲解,帮助你全面理解协议中的管理机制。


📘 一、Endurance Group 事件管理

1️⃣ 事件监控与日志管理

主机可以通过读取 Endurance Group Event Aggregate log page 来判断哪些 Endurance Group 存在未处理的事件。如果某个 Endurance Group 有待处理的事件,该日志页将返回一条记录。

  • 事件条目: 每个未处理事件的 Endurance Group 会在该日志页中产生一条记录。
  • 最大日志页大小: 主机可以通过 Identify Controller 数据结构中报告的 Endurance Group Identifier Maximum 值来确定此日志页的最大大小。

2️⃣ 事件详情与清除

要获取具体的事件信息,主机需要读取 Endurance Group Information log page,该页会为每个 Endurance Group 返回详细的事件状态。具体的事件类型会由 Critical Warning 字段标识,例如:所有与该 Endurance Group 关联的 Namespace 都已进入只读模式。

  • 清除事件: 如果主机成功读取了 Endurance Group Information log page,且在 Get Log Page 命令中清除了 Retain Asynchronous Event 位(即设为 0),那么所有相关事件将被清除。
  • 事件不报告: 如果 Critical Warning 字段被清空(设为 0h),则该 Endurance Group 的事件不会再出现在 Endurance Group Event Aggregate log page 中。

📘 二、Domain 与 Division 的概念

1️⃣ Domain 的定义与功能

Domain(域) 是 NVM 子系统中的最小不可分割的单位,多个 Domain 可以组成一个 NVM 子系统。

  • 功能: 一个 Domain 包含了共享的状态信息,如电源状态和容量信息。
  • 单一 Domain 实现: 对于不支持多域的 NVM 子系统来说,只有一个 Domain 进行管理。
  • 多 Domain 实现: 如果支持多个 Domain,那么这些 Domain 需要在 NVM 子系统中协同工作,任何一个 Domain 无法正常工作都可能导致子系统出现故障或分裂。

2️⃣ Division(划分) 的定义

Division(划分) 是指在 NVM 子系统中发生的事件或操作,这些事件或操作影响了各个 Domain 之间的通信。

  • 划分事件: 如某个 Domain 发生故障,导致该 Domain 与其他 Domain 之间的通信中断。
  • 划分影响: 如果发生划分,整个 NVM 子系统的全球状态可能会受到影响。例如,某个 Controller 可能仅能访问与其正常通信的 Domain 的状态。

3️⃣ Domain 的组成

每个 Domain 包括:

  • 零个或多个 Controller: 每个 Domain 中可以包含多个控制器,这些控制器负责管理 Domain 内的 NVM 资源。
  • 零个或多个 NVM Endurance Groups: 每个 Domain 内可以包含多个 Endurance Group,这些组用于管理不同 NVM Set 的耐久性。

📘 三、多域 NVM 子系统的支持要求

如果一个 NVM 子系统支持多个 Domain,那么它的所有 Controller 必须:

  1. 在 Identify Controller 数据结构中的 CTRATT 字段中设置 MDS 位为 1。
    这样可以表明该 NVM 子系统支持多个 Domain。

  2. 在每个 Endurance Group 描述符中设置非零的 Domain Identifier。
    这确保每个 Endurance Group 都与某个特定的 Domain 相关联。

  3. 在每个 Identify Controller 数据结构中设置非零的 Domain Identifier。
    这为每个 Controller 分配一个唯一的 Domain 标识符。

4️⃣ 可选支持:

对于支持多个 Domain 的 NVM 子系统,其 Controller 可能:

  • 支持 Endurance Groups。
    如果支持,则 CTRATT 字段中的 Endurance Groups 位将被置为 1。

5️⃣ 唯一的 Domain Identifier

每个 Domain 都应该有一个在整个 NVM 子系统中唯一的 Domain Identifier,以便区分不同的域。


🧠 理解要点总结

概念 说明
Endurance Group 管理耐久性的一组 NVM Sets,关联着多个命名空间。
事件监控与清除 主机通过读取日志页获取 Endurance Group 的事件状态,事件可被清除或更新。
Domain NVM 子系统中的最小单位,负责共享电源、容量等状态信息。支持多个 Domain 时,需协同工作。
Division 在 NVM 子系统中影响 Domain 之间通信的事件或操作(如故障、管理操作)。
支持多个 Domain 的要求 包括设置 MDS 位、配置非零的 Domain Identifier 等,确保多域协作与管理。

如果你对以上内容有任何疑问或希望进一步了解某些细节,如具体的日志页格式、命令字段,或者多 Domain 配置实例,请告诉我,我可以为你提供更详细的解析。