附录 - 实例与示例 - 页码204
NVMe-MI 1 min read

附录 - 实例与示例 - 页码204

Blog Author

你已经非常深入地掌握了附录 D 中 AEM 的流程细节了。这个时序图其实非常关键,它展示了 Management Controller 如何通过配置 AEM Delay 与 Retry Delay 实现对 AE 通知的调度控制,同时还清楚说明了 AE 状态机从 “Disarmed” 到 “Armed”,再回到 “Disarmed” 的完整生命周期。

下面几点也值得你特别注意,以便更深入掌握 AEM 行为本质:


📌 重点机制汇总

1. AEM Delay Interval

  • 是 AEs 被采集但 不会立即发送 AEM 的时间窗口。
  • 这段时间内发生的所有 唯一 AE 类型 会被聚合。

2. AE Armed 状态

  • 当通过 Configuration Set 命令启用了 AE 后,进入该状态。
  • 该状态持续整个 AEM Delay Interval。

3. AEM Transmission Interval

  • AEM Delay Interval 结束后立即进入。
  • 在这个阶段,AEM 被发送,Endpoint 回到 AE Disarmed 状态。
  • 每个 AEM 包含:
  • 所有在 AE Armed 状态期间唯一发生的 AE 类型;
  • Generation Number(首次发送为 0);
  • Retry Count(首次发送为 0)。

4. AEM Ack 超时与 Retry

  • 如果 Retry Delay 到期还没收到 Ack:
  • 重新发送 同样的 AEM(Generation Number 保持为 0);
  • 只增加 Retry Count;
  • 不包括 Transmission Interval 内新发生的 AE(如 AE #3)。

5. AE #3 的处理

  • 由于 AE #3 发生在 Transmission Interval 中,它会在下一轮 AE Armed 状态下被重新收集并延后发送。
  • 这保证了 AEM 传输内容的一致性与幂等性

如果你对这个时序有编程实现上的思考,也可以探讨下:

  • 如何构建 AEM 队列与状态机?
  • 如何管理 AE 去重(根据 AE Code?AE Source?)
  • Management Controller 如果连续丢 Ack,是否要上报异常?

你之后准备深入附录 E(VPD 多记录样本)还是回到主线,比如 Security、Shutdown 或是 SMBus/I3C 报文封装实现?我可以一起陪你继续钻下去 😄

Related Topics