7.2 Switch Configuration and Composition

7.2.1 CXL 交换机初始化选项

CXL交换机可以使用三种不同的方法进行初始化,分别是:

静态初始化 (Static Initialization)

图中展示了一个静态初始化的 CXL 交换机,它带有 2 个 VCS。在这个例子中,下游的 vPPB 被静态绑定到端口,并且在启动时对主机可用。支持使用标准的 PCIe 机制来对设备进行托管式的热插拔。 核心理念

特点与限制

Fabric Manager (FM) 优先启动

启动流程:

  1. FM 启动,主机复位:FM 首先启动,而主机则被保持在复位状态。
  1. 端口链路建立:交换机所有连接的下行端口 (DSPs) 建立链路,并初始绑定到由 FM 所拥有的物理 PCI-to-PCI 桥 (PPBs) 上。
  1. FM 执行绑定:FM 通过其管理接口向交换机发送绑定命令(例如 BIND (VCSO, VPPB1, PHY_PORT_ID1)),指示交换机将一个指定的物理端口绑定到一个特定 VCS 中的虚拟 PPB (vPPB) 上。
  1. 交换机完成映射:交换机执行从虚拟到物理的绑定,将 vPPB 的虚拟端口号映射到物理端口号 ,并将 vPPB 的所有功能(如链路控制)直接映射到该物理端口上。此时,原先由 FM 拥有的 PPB 对于该端口来说就不存在了。
  1. 主机启动:当主机被解除复位并启动时,交换机已经完全配置好,主机可以正常进行设备枚举。

Fabric Manager (FM) 和主机同时启动

7.2.3 绑定和解绑 (Binding and Unbinding)

这部分是 CXL 交换机实现动态资源分配的核心机制。它描述了如何将一个物理端口(及其连接的设备)与一个虚拟层次结构中的 vPPB 关联(绑定)或分离(解绑)的过程。这个过程根据设备是单一逻辑设备 (SLD) 还是多逻辑设备 (MLD) 而有所不同。

  1. 单一逻辑设备端口的绑定与解绑 (Binding and Unbinding of a Single Logical Device Port)

一个 SLD 端口一次只能绑定到一个 VCS。它可以连接 PCIe 设备或 CXL Type 1, 2, 3 型的 SLD 设备。

流程示意 (参考图 7-9 至 7-11):

  1. 初始状态:VCS 0 的 vPPB 2 绑定到某个物理端口。
  1. FM 发出解绑命令给 VCS 0 的 vPPB 2。
  1. 该物理端口变为未绑定状态,由 FM 拥有的 PPB 控制。
  1. FM 可以再发出绑定命令,将这个空闲的物理端口绑定到另一个虚拟交换机(例如 VCS 1 的 vPPB 1)。
  1. 绑定成功后,交换机会向 Host 1 发送一个热添加通知。

  1. 池化设备 (MLD) 的绑定与解绑 (Binding and Unbinding of a Pooled Device)

池化设备(即 MLD)在一个物理端口上包含多个逻辑设备 (LDs),因此其流量可以与多个分属于不同 VCS 的 vPPB 相关联。其绑定和解绑过程与 SLD 类似,但有几个关键区别

  1. 不影响物理链路: 绑定或解绑 MLD 中的某个 LD 绝不能影响物理链路本身(例如,不能使用 PERST# 复位、热复位或禁用链路),也必须不影响其他 VCS 的流量。
  1. 物理 PPB 始终由 FM 拥有: MLD 端口的物理 PPB 始终归 FM 所有。FM 负责该物理端口的链路控制、错误处理等。
  1. 由 FM 管理设备: FM 可能需要管理池化设备以更改内存分配、启用 LD 等。

流程示意 (参考图 7-12 至 7-14):

  1. 初始状态: MLD 设备连接到交换机,交换机在链路建立后通知 FM 这是一个 Type 3 池化设备。此时 MLD 中的各个 LD (如 LD 0, LD 1) 处于未绑定状态。

  1. 配置并绑定第一个 LD: FM 通过其 API 配置池化设备中的 LD 1(例如设置内存分配)。然后,FM 发送绑定命令,将 VCS 0 中未绑定的 vPPB 2 与该池化设备的 LD 1 进行绑定。
  1. 交换机设置路由: 交换机执行虚拟到物理的转换,确保所有目标为 VCS 0 的 vPPB 2 的 CXL.io 和 CXL.mem 流量都被路由到 MLD 端口,并附上 LD-ID=1。
  1. 热添加通知: 绑定后,该 vPPB 会像 SLD 绑定一样,向 VCS 0 的主机通知一个热添加事件。

  1. 绑定第二个 LD 到不同主机: 同样地,FM 可以配置 LD 0,并将其绑定到另一个虚拟交换机,例如 VCS 1 中的 vPPB 1。这样,同一个 MLD 设备的不同逻辑部分(内存)就可以同时被 Host 0 和 Host 1 访问。

7.2.4 PPB and vPPB Behavior for MLD Ports

zood