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

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

Blog Author

我们继续深入分析 NVM Express® Management Interface Specification, Revision 2.082 页,该页详细描述了 AE Occurrence List 数据结构AE Occurrence 数据结构。这些数据结构是异步事件消息(AEM)的一部分,用于传输发生的异步事件。理解这些字段对于解析和处理异步事件至关重要。


✅ 一、AE Occurrence List 数据结构(继续)

1. AE Occurrence List Header

  • AEM Transmission Info (AEMTI):该字段提供与 AEM 传输 相关的信息。如果该 AE Occurrence ListAEM AckAE Sync 响应消息的一部分,则该字段不适用,并应设置为 0h

字段解析:

  • AEM Generation Number (AEMGN)
  • 该字段指示 AEM 生成编号,它会在 第一次尝试传输 AEM 时 增加。如果值为 1Fh,则在递增时会回绕(即变为 0h)。
  • 这个字段的作用是帮助确定 AEM 是否为重复消息。如果最近接收到的 AEM 的 AEM 生成编号 与先前的 AEM 相同,则该 AEM 被视为重复的并应被忽略。

  • AEM Retry Count (AEMRC)

  • 该字段表示 AEM 重试次数。初次传输时为 0h,第二次(即第一次重试)为 1h,以此类推。
  • 这个字段帮助识别 AEM 是否为重试消息,如果同一 AEM 多次传输,管理控制器可以通过该字段判断是首次传输还是重试。

2. AE Occurrence List Body

  • AE Occurrence List Body 包含了实际的 AE Occurrence 数据结构,每个 AE Occurrence 结构表示一个单独的异步事件。
  • 这些事件按照 AE Occurrence 数据结构 被存储,每个事件的长度由其 AE Occurrence 头具体信息 字段定义。
  • AE Occurrence 0:指示第一个 AE Occurrence 数据结构
  • AE Occurrence 1:指示第二个 AE Occurrence 数据结构,以此类推,直到 AE Occurrence List Body 完成。

✅ 二、AE Occurrence 数据结构

1. AE Occurrence Header

  • AE Occurrence Header Length (AELHLEN)
  • 该字段表示 AE Occurrence Header 的长度,固定为 9h

  • AE Occurrence Specific Info Length (AEOSIL)

  • 该字段指示 AE Occurrence Specific Info 字段的长度。如果该事件没有 Specific Info 字段,则该字段为 0h
  • 如果该事件是 厂商特定的(AE Identifier 范围在 C0h 至 FFh),则该字段也为 0h

  • AE Occurrence Vendor Specific Info Length (AEOVSIL)

  • 该字段指示 AE Occurrence Vendor Specific Info 字段的长度。如果没有该字段,则该字段为 0h

2. AE Occurrence Specific Info 和 Vendor Specific Info

  • AE Occurrence Specific Info:这个字段包含与特定事件相关的附加信息,用于传递事件的详细内容。
  • AE Occurrence Vendor Specific Info:当事件为厂商特定时,此字段将包含厂商定义的扩展信息。

✅ 三、AE Occurrence List 数据结构的工作原理

1. AE List 的大小和内容

  • AE Occurrence List 通过 AE Occurrence List HeaderAE Occurrence List Body 来管理异步事件数据。
  • 每个 AE Occurrence 数据结构 包含 事件的详细信息(如事件发生时的状态),并且 按顺序记录 每个异步事件。

2. AE Occurrence List Body 的溢出处理

  • 当事件的数量过多,导致 AE Occurrence List Body 超过 4 KiB 时,会触发 溢出处理。在这种情况下,AEM Overflow bit 会设置为 1,并且只传输 AE Occurrence List Header,不包含实际的事件数据。
  • AE Sync 用于 重新同步 管理控制器和管理端点之间的事件状态。

✅ 四、总结

AE Occurrence List 和 AE Occurrence 数据结构的重要字段

字段 说明 特点
AEM Generation Number (AEMGN) AEM 生成编号,用于区分重复的 AEM 确保避免重复的 AEM 被处理
AEM Retry Count (AEMRC) AEM 重试次数 识别重试的 AEM
AE Occurrence List Overflow (AEOLO) 指示 AE Occurrence List 是否溢出 处理大量事件的情况
AE Occurrence Header Length (AELHLEN) AE Occurrence Header 的长度,固定为 9h 标识事件头部
AE Occurrence Specific Info Length (AEOSIL) 事件特定信息的长度 包含额外的事件信息
AE Occurrence Vendor Specific Info Length (AEOVSIL) 厂商特定信息的长度 针对厂商特定事件提供额外数据

通过理解 AE Occurrence ListAE Occurrence 数据结构,我们可以更好地掌握 AEM 事件数据的管理与传输,以及如何处理事件溢出和重试机制。这为我们理解异步事件在 NVMe-MI 协议 中的处理提供了关键的信息。

如果你有任何问题或需要进一步的分析,随时告诉我!