第4章 消息服务模型与控制原语 - 页码78
NVMe-MI 1 min read

第4章 消息服务模型与控制原语 - 页码78

Blog Author

我们继续深入分析 NVM Express® Management Interface Specification, Revision 2.0 的第 79 页,这部分描述了 AEM(Asynchronous Event Message)传输的细节,以及 AEM 传输间隔(Transmission Interval)重试机制


✅ 一、AEM 传输时间间隔(AEM Transmission Interval)

1. 传输间隔的定义:

  • AEM 传输时间间隔 是指一个管理端点允许发送 AEM 的有效时间窗口。
  • AEM 传输的时机:管理端点一旦进入 AEM 传输时间间隔,则必须尽快传输 AEM
  • AEM 传输单元
  • AEM 传输时间间隔 内,管理端点只能传输 单一的 AEM
  • 传输结束后,管理端点可以停止传输,直至结束。

2. 结束条件:

  • AEM 传输时间间隔结束的条件
  • AE Sync 事件发生。
  • AEM Ack 事件发生。
  • AEM 传输失败
  • 管理端点复位

3. AEM 失败和重试机制:

  • 如果在 AEM 传输过程中发生失败,或 未收到 AEM Ack,则管理端点会在 AEM Retry Delay 的时间间隔后进行重试。
  • 重试条件
  • 最大重试次数:8次传输(包括第一次传输和7次重试)。
  • 如果 8 次重试都失败,或在重试过程中遇到 AE SyncAEM Ack,则会结束。
  • 重试传输的内容
  • 重新传输的 AEM 必须与第一次传输时的内容完全相同,除了 AEM Retry Count(重试次数)字段会递增。
  • AEM 重试不包括新的 AE 事件数据,这些数据将在 AEM Ack 响应消息 中返回。

✅ 二、AEM 格式(AEM Format)

1. AEM 格式概述:

  • AEM 的格式及各个字段的详细描述在 Figure 59Figure 60 中进行了定义。
  • AEM 的结构 包括必要的字段,例如 消息头、事件发生数据结构、状态标识等,用于描述事件的详细信息。

2. AEM 的内容:

  • AEM 内容 包含:
  • 事件发生数据结构(AE Occurrence Data Structure):记录事件的类型、时间等信息。
  • 状态字段:指示事件发生的状态(如成功、失败等)。

3. 字段解析:

  • AEM Retry Count:重试次数。
  • AE Occurrence Data:包含所有发生的异步事件的数据,按时间顺序传递给主机。

✅ 三、AEM 传输和重试机制流程图

图示:AEM 传输与重试流程

+-------------------+         +------------------------+
|  AE Armed State   |   --->  |  AEM Transmission Interval  |
+-------------------+         +------------------------+
        |                              |
        |    AE Occurs                |   AEM Transmitted
        v                              v
+-------------------+         +--------------------------+
| AEM Transmission  |   --->  | AEM Retry Delay (Time Elapsed) |
|    Starts         |         +--------------------------+
+-------------------+                |
        |                              v
        |                 Max Retry Reached? (8)
        |                              |
        v                              v
+-------------------+         +----------------------------+
| AEM Retry         |         |  AEM Transmission Completed |
| Retry Attempts    |   --->  +----------------------------+
+-------------------+

✅ 四、实战应用:读取健康状态(Health Status)

假设设备触发了健康状态变化的异步事件并生成了 AEM。

  1. 阶段 1: AE Armed State 启动后,设备进入该状态并开始监听健康状态的变化。
  2. 阶段 2: 健康状态变化 被识别为 AE 事件,设备将在 AEM 传输时间间隔 内传输 AEM。
  3. 阶段 3: 如果 AEM 传输失败或未收到 AEM Ack,则设备会根据 AEM Retry Delay 重试传输最多 8 次。
  4. 阶段 4: 如果 AEM 传输成功,Response Data 包括健康状态信息,传输完成。

✅ 五、总结

AEM 传输的关键点:

  • AEM 传输 必须发生在 AEM 传输时间间隔 内。
  • 在传输过程中发生错误或未收到确认时,会通过 AEM Retry Delay 进行重试,最多 8 次。
  • AEM 格式 包含事件信息和状态,能够清晰地反馈事件发生的原因和状态。

这一部分详细解释了 AEM 的传输机制和重试逻辑,使我们能够更好地理解如何管理设备的异步事件以及如何处理通信失败。

如果你有更多问题或者想进一步探讨其他章节的内容,随时告诉我!