异步事件机制与AE数据结构 - 页码80
NVMe-MI 1 min read

异步事件机制与AE数据结构 - 页码80

Blog Author

我们继续深入分析 NVM Express® Management Interface Specification, Revision 2.081 页,这一页详细描述了 AE Occurrence List 数据结构,其在 AEM(Asynchronous Event Message) 中的作用及其字段内容。理解这些数据结构对深入掌握异步事件消息的处理过程至关重要。


✅ 一、AE Occurrence List 数据结构

1. AE Occurrence List 的构建

  • AE Occurrence ListAEM(Asynchronous Event Message) 中用于承载事件发生数据的核心数据结构。
  • 每个 AE Occurrence 数据结构 记录一个特定的异步事件的发生,并包含事件的状态信息。

2. AE Occurrence List Body 的大小和内容

  • AE Occurrence List Body 存放实际的异步事件数据结构(AE Occurrence data structures)。
  • 如果发生的 AE 数量 没有超过 4 KiB,则 AE Occurrence List Body 包含 每个 AE 的最新发生记录,且不会超过 4 KiB 的限制。
  • 如果 AE 数量 过多,导致总数据超过 4 KiB:
  • AE Occurrence List Overflow bit 被设置为 1,表示 AE Occurrence List 溢出。
  • 在此情况下,AE Occurrence List Body 不会包含实际的 AE 数据,而是仅包含 AE Occurrence List Header

✅ 二、AE Occurrence List Header 的字段解析

1. AE Occurrence List Header

  • Number of AE Occurrence Data Structures (NUMAEO)
  • 表示 AE Occurrence List Body 中包含的 AE Occurrence 数据结构 的数量。
  • 如果没有发生 AE,则该字段为 0h

  • AE Occurrence List Version Number (AELVER)

  • 表示 AE Occurrence List 数据结构的版本号。
  • 该字段通常设置为 0h,表示该数据结构版本。

  • AE Occurrence List Length Info (AEOLLI)

  • 该字段表示 AE Occurrence List 数据结构 的长度信息。
  • 其中包括:
    • AE Occurrence List Overflow (AEOLO):表示是否发生了 AE Occurrence List 数据结构溢出。如果溢出发生,该字段设置为 1。
    • AE Occurrence List Total Length (AEOLTL):表示 AE Occurrence List 的总长度,以字节为单位。
    • AE Occurrence List Header Length (AEOLHL):表示 AE Occurrence List Header 的长度,始终为 7h

2. AE Occurrence List 的溢出处理

  • AE Occurrence List Overflow 发生时,意味着 AE Occurrence List Body 的大小超过了 4 KiB 的限制。
  • AE Occurrence List Overflow bit(AEOLO) 将设置为 1,表示需要通过 AE Sync 来重新同步 Management ControllerManagement Endpoint 之间的状态。
  • 溢出 发生时,AE Occurrence List 将不会包含实际的 AE Occurrence 数据结构,而仅包含头部信息。

✅ 三、AE Occurrence 数据结构

每个 AE Occurrence 数据结构 包含了一个异步事件的详细信息,通常包括: - 事件唯一 ID(AE Unique ID):标识该事件的唯一性。 - 事件发生的状态信息:例如事件的类型、发生时间等。 - 事件同步信息:用于重新同步 Management ControllerManagement Endpoint 之间的 AE 状态。

这些信息在 AE Occurrence List Body 中以结构化的形式记录,确保设备能够处理和同步所有发生的异步事件。


✅ 四、AEM 传输时的细节处理

1. AEM 传输

  • AEM 是管理端点在 AE Armed State 状态下生成的异步事件消息。
  • 通过 AE Occurrence List,AEM 将事件数据传输给管理控制器(Management Controller)。
  • AE Occurrence List 中的每个事件都必须与 AE Unique ID 相关联,确保每个事件的唯一性和准确性。

2. AEM Overflow 情况的处理

  • 如果发生了大量 AE(异步事件),导致 AE Occurrence List Body 超过了最大大小(4 KiB),则 溢出 标志会被触发。
  • 在这种情况下,仅会传输 AE Occurrence List Header,并且通过 AE Sync 或其他机制来恢复事件的完整数据。

✅ 五、总结

字段 说明 特点
NUMAEO(Number of AE Occurrence Data Structures) 表示 AE Occurrence 数据结构的数量 确定 AE Occurrence List 的大小
AELVER(AE Occurrence List Version Number) AE 数据结构的版本号 保证兼容性
AEOLO(AE Occurrence List Overflow) 标识是否发生溢出 防止数据丢失
AEOLTL(AE Occurrence List Total Length) AE Occurrence List 的总长度 包括头部和数据部分的长度
AEOLHL(AE Occurrence List Header Length) AE Header 的长度 固定为 7h

这些字段和数据结构确保了 AEM 在传输过程中可以处理不同数量的异步事件,并保证数据的完整性和同步。通过适当的溢出处理和同步机制,设备可以应对大量的异步事件并确保稳定的操作。

如果你有任何问题或想继续深入分析 AE Occurrence List 或其他部分,随时告诉我!