异步事件机制与AE数据结构 - 页码81
我们继续深入分析 NVM Express® Management Interface Specification, Revision 2.0 第 82 页,该页详细描述了 AE Occurrence List 数据结构 和 AE Occurrence 数据结构。这些数据结构是异步事件消息(AEM)的一部分,用于传输发生的异步事件。理解这些字段对于解析和处理异步事件至关重要。
✅ 一、AE Occurrence List 数据结构(继续)
1. AE Occurrence List Header
- AEM Transmission Info (AEMTI):该字段提供与 AEM 传输 相关的信息。如果该 AE Occurrence List 是 AEM Ack 或 AE 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 Header 和 AE 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 List 和 AE Occurrence 数据结构,我们可以更好地掌握 AEM 事件数据的管理与传输,以及如何处理事件溢出和重试机制。这为我们理解异步事件在 NVMe-MI 协议 中的处理提供了关键的信息。
如果你有任何问题或需要进一步的分析,随时告诉我!