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

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

Blog Author

我们继续深入分析 NVM Express® Management Interface Specification, Revision 2.0 第 78 页的内容,重点分析 Out-of-Band AEM(Asynchronous Event Message)服务模型 和相关的状态转换机制。


✅ 一、Out-of-Band AEM Servicing Model

1. AEM(Asynchronous Event Messages)概述

  • AEM 是由 管理端点(Management Endpoint) 在异步事件发生时传输的消息。
  • AEM 不包括尚未发生的事件。
  • AEM 传输时间间隔(AEM Transmission Interval)是由规范中的 section 4.4.3 定义的。
  • AEM 传输行为
  • AEM 不会占用 命令槽,可以在任何命令槽的命令处理状态下传输。
  • 如果 管理端点 在处理中时发生了 AEM,则在允许的 AEM 传输时间间隔内,推荐尽快传输 AEM,而不是等到当前命令的处理完成。

2. AEM 传输的时机

  • AEM 发生 时,必须在下一个 AEM 传输时间间隔 内传输。
  • AEM 传输时间间隔外不传输,确保 AEM 不会打断其他命令或任务。

3. AEM 影响的状态

  • AEM 不会改变 命令槽的服务状态,也不会干扰其他正在进行的命令消息。

✅ 二、Management Endpoint AE Armed State 和 AE Disarmed State

1. AE Armed State(事件激活状态)

  • 触发条件:通过处理 AE SyncAEM Ack,使得一个或多个 AEs 被激活,进入 AE Armed State
  • 持续时间:此状态持续,直到所有支持的 AEs 被禁用,或进入 AE Disarmed State

2. AE Disarmed State(事件禁用状态)

  • 触发条件
  • 所有支持的 AEs 被禁用(例如通过 AE Sync管理端点复位(Management Endpoint Reset))。
  • 或者 AEM 传输时间间隔开始
  • 持续时间:该状态会持续,直到下一个 AE Armed State 被激活。

3. AEM 传输时机

  • 当 AE Armed 状态下发生 AE 时,管理端点会在 下一个 AEM 传输时间间隔 内传输 AEM,除非发生 管理端点复位 等特殊情况。

✅ 三、AEM 延迟间隔(AEM Delay Interval)

  • AEM Delay Interval 是管理端点在发生 AE 后,等待传输 AEM 的时间间隔。
  • 开始条件:当管理端点进入 AE Armed State 时,AEM 延迟间隔开始计时。
  • 结束条件:当延迟时间到达或 AE Disarmed State 开始时,AEM 延迟间隔结束。

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

  • AEM 传输时间间隔 只会在 AE Armed State 中发生。
  • 开始条件:AEM 传输时间间隔将在以下条件下开始:
  • AEM Delay Interval 中指定的时间过去之后,或者
  • AE Armed State 结束后进入 AE Disarmed State

✅ 五、实战举例:健康状态变化事件(Health Status Change)

假设管理端点(例如存储设备)在 健康状态 发生变化时,会触发一个 AEM。

  1. 事件发生:健康状态发生变化。
  2. 设备从 AE Disarmed State 切换到 AE Armed State,并且该事件(健康状态变化)被激活。

  3. AEM 传输

  4. AEM 传输时间间隔 允许的情况下,管理端点将发送 AEM,通知主机健康状态的变化。
  5. 该消息通过 AEM Occurrence Data Structure 传输,包含事件的详细信息。

  6. 状态更新

  7. AE Armed State 中,如果再次发生 AEs,设备将在下一个 AEM 传输时间间隔 期间继续传输 AEM。

  8. 命令槽处理

  9. AEM 不会影响 命令槽的状态,因此设备可以继续处理其他命令。

✅ 六、总结

AEM 服务模型总结

状态 说明 转换条件
AE Armed State 事件激活状态,等待 AEs 发生 通过 AE Sync 或 AEM Ack 激活
AE Disarmed State 事件禁用状态,停止接收 AEs 所有 AEs 禁用或进入 AEM 传输时间间隔
AEM Delay Interval 等待传输 AEM 的间隔 从进入 AE Armed State 开始,直到延迟时间到
AEM Transmission Interval AEM 传输的有效时间窗口 在 AEM 延迟时间后开始

📌 小结:

  • AEM(异步事件消息) 是管理端点用来通知主机设备状态变化或其他重要事件的消息。
  • 事件激活(AE Armed)与禁用(AE Disarmed)状态 控制了 AEM 的传输时机。
  • 通过 AEM 传输时间间隔AEM 延迟间隔 的管理,确保事件不会干扰正常的命令和响应处理。

你想要继续深入分析其他部分,还是需要我为你梳理整个 AEM 流程图事件交互流程,以便更好地理解这些状态转换和事件处理呢?