第3章 物理层与MCTP传输 - 页码33
NVMe-MI 1 min read

第3章 物理层与MCTP传输 - 页码33

Blog Author

你引用的是 《NVM Express® Management Interface Specification, Revision 2.0》 中的 2-Wire 元素和 I3C 模式切换 的详细内容。本部分涉及 2-Wire 总线的高级通信特性,特别是如何在 SMBusI3C 模式之间切换,以及如何使用 动态地址分配时钟拉伸 特性。

以下是对这些细节的深入分析,帮助你更好地理解 2-Wire 元素 的工作机制和 I3C 模式切换 的实现。


✅ 一、2-Wire 端口模式切换:SMBus 到 I3C

📌 SMBus 到 I3C 的切换过程:

  • 初始状态: 2-Wire 端口默认使用 SMBus 模式。
  • 切换到 I3C: 如果 2-Wire 端口支持 I3C,管理控制器(Management Controller)可以将该端口从 SMBus 切换到 I3C 模式,以支持更高频率和低电压操作。

🔄 过程:

  1. 开始扫描: 控制器发送地址 FCh,若 2-Wire 端口支持 I3C 模式,将响应 ACK 信号。
  2. 禁用 SMBus: 一旦切换成功,端口的 SMBus 功能将被禁用
  3. 扫描 I3C 元素: 控制器接着扫描支持 I3C 的元素,并为它们分配动态地址(类似 SMBus 的 ARP 机制)。
  4. 重新切换: 如果未检测到 SMBus 元素,控制器会再次发送 FCh 地址,将端口切换至 I3C 模式,并降至 1.8V 工作电压。

⚠️ 时钟拉伸(Clock Stretching):

  • 在 SMBus 模式下, 时钟拉伸是允许的,管理控制器和 FRU 信息设备可以通过拉伸时钟来调整数据传输节奏。
  • 在 I3C 模式下, 时钟拉伸是禁止的,确保更高的传输频率和更低的功耗。

🧠 设计建议:

  1. SMBus与I3C切换:对于支持 I3C 的设备,在高频率需求下可考虑切换到 I3C 模式。而对于不支持的设备,建议保持 SMBus 模式,以保证兼容性。
  2. 时钟控制:避免过度依赖时钟拉伸,尤其是在 I3C 模式下,尽量依赖硬件时钟控制。

✅ 二、I3C 与 SMBus 的区别:通信机制

📌 I3C 模式的通信差异:

  1. I3C 地址分配:
  2. I3C 模式下,设备的地址由管理控制器动态分配。
  3. 使用 ENTDAA(Enter Dynamic Address Assignment)命令进行地址分配。

  4. 数据传输:

  5. I3C 与 SMBus 相似,采用 CMOS 推挽驱动 来实现更高频率的数据传输,避免了 SMBus 中每个字节的 ACK 位反向驱动(从而提高了传输效率)。

  6. 传输方式:

  7. ACK 位变为 T 位: 在 I3C 中,ACK 位被替换为 T 位,用于写入时的位校验或读取时的传输完成信号。
  8. 总线方向: 在 I3C 中,总线方向仅由管理控制器驱动,而非每个字节都反向 ACK。

🧠 实际应用:

特性 SMBus I3C
频率 较低,适用于低功耗设备 高频,适合快速数据传输
地址分配 静态分配,使用 ARP 动态分配,使用 ENTDAA
总线控制 设备和控制器均可控制 控制器主导总线

✅ 三、I3C Mode 中的 MCTP 与通信

📌 MCTP I3C Transport 绑定:

  • MCTP (Management Component Transport Protocol)I3C 模式下的传输方式与 SMBus 基本相同,但由于 I3C 的高速性和高效性,它不需要每个字节的 ACK 位反向驱动。

  • MTU(最大传输单元):I3C 支持 64 字节的数据包大小。

  • MCTP 与 I3C 结合使用:

  • 通过 I3C 管理端点,管理控制器可以快速读取或写入管理消息。
  • MCTP I3C 传输绑定规范定义了如何利用 I3C 的私有读写命令 来传输管理消息,确保数据在不同平台间高效交换。

🧠 实际应用:

  • 数据中心与工作站: 在需要高吞吐量和低延迟的场景下,I3C 提供了比 SMBus 更优的性能。
  • 设备健康监测与固件更新: 通过 MCTP 和 I3C,能够快速、稳定地传输 NVMe 存储设备的健康信息、固件更新等。

✅ 四、典型设计和实现

📌 NVMe 存储设备的 I3C 支持:

  1. 设计要点:
  2. 确保设备支持 I3C 模式切换,可以在需要时切换到高频传输。
  3. 确保 UDID 唯一性,避免因地址分配不当导致的设备冲突。

  4. 如何处理多个 2-Wire 元素:

  5. 在多个 2-Wire 设备之间,确保使用 ARP2-Wire Mux 来避免地址冲突。
  6. 对于支持 I3C 的设备,确保它们能通过 ENTDAA 动态分配地址,适应多设备环境。

✅ 五、总结与推荐

设计需求 推荐做法
SMBus 到 I3C 切换 支持 I3C 模式,并在需要时切换,以提高带宽和降低功耗
多设备支持 使用 ARP2-Wire Mux 避免地址冲突,确保系统稳定运行
I3C 高速传输 充分利用 I3C 提供的高频率、低延迟特性,特别适用于数据中心和企业级存储

📘 继续学习建议

  1. MCTP I3C 传输绑定规范 的详细内容,特别是如何定义 私有命令动态地址分配
  2. I3C 的最大传输单元 (MTU)总线控制 协议。
  3. 深入理解 SMBus 和 I3C 的时序差异,并通过具体硬件平台进行实现测试。

是否有具体的部分你想进一步探索,或者需要具体的代码示例?