PCIe Switch工作原理
端口扩展与路由机制详解
什么是PCIe Switch?
PCIe Switch(交换器)是一种多端口的PCIe设备,用于扩展PCIe拓扑结构。它有一个上游端口(Upstream Port)连接Root Complex或其他Switch,以及多个下游端口(Downstream Port)连接Endpoint设备或下游Switch。
主要作用
- 端口扩展:RC的PCIe端口有限,Switch可以扩展出更多端口连接设备
- 拓扑扩展:支持多级级联,构建复杂的PCIe拓扑
- 带宽汇聚:多个低速设备共享上游带宽
- 热插拔支持:下游端口支持独立的热插拔
Switch架构
Root Complex
CPU/SoC
PCIe Switch
GPU
NVMe
NIC
AI卡
内部结构
PCIe Switch内部包含:
- 上游端口(Upstream Port):Type 1配置头,连接RC或上级Switch
- 下游端口(Downstream Port):多个Type 1配置头,连接设备或下级Switch
- 内部交换逻辑:负责TLP路由和转发
- 仲裁器:管理多个端口间的流量仲裁
路由机制
Switch的核心功能是路由(Routing)——根据TLP中的地址或ID信息,将数据包转发到正确的端口。
地址路由(Address Routing)
用于Memory和I/O事务,Switch根据TLP中的目标地址决定转发端口。
Switch内部路由表示例:
| 目标地址范围 | 输出端口 | 说明 |
|---|---|---|
| 0xA0000000 - 0xAFFFFFFF | Downstream Port 0 | GPU BAR空间 |
| 0xB0000000 - 0xB0FFFFFF | Downstream Port 1 | NVMe SSD BAR空间 |
| 0xB1000000 - 0xB1FFFFFF | Downstream Port 2 | 网卡 BAR空间 |
| 其他 | Upstream Port | 发往RC |
ID路由(ID Routing)
用于配置事务,Switch根据Bus/Device/Function号路由TLP。
配置Type 0
目标为Endpoint,Switch根据设备号转发到对应下游端口
配置Type 1
目标为Bridge/Switch,Switch根据总线号决定是否转发到下游
隐式路由(Implicit Routing)
用于消息事务(如中断、电源管理),不需要地址信息,Switch根据消息类型决定处理方式。
Switch的配置空间
Switch的每个端口都有独立的Type 1配置空间,包含总线号配置和路由信息。
关键寄存器
| 寄存器 | 偏移 | 说明 |
|---|---|---|
| Primary Bus Number | 0x18 | 上游总线号 |
| Secondary Bus Number | 0x19 | 下游直接连接的总线号 |
| Subordinate Bus Number | 0x1A | 下游最大总线号 |
| Memory Base/Limit | 0x20 | Memory空间范围 |
| Prefetchable Base/Limit | 0x24 | 可预取Memory空间范围 |
| I/O Base/Limit | 0x1C | I/O空间范围 |
总线号分配示例
RC (Bus 0)
└── Switch Upstream Port (Bus 0, Dev 0)
├── Downstream Port 0 (Bus 1) → GPU (Bus 1, Dev 0)
├── Downstream Port 1 (Bus 2) → NVMe (Bus 2, Dev 0)
└── Downstream Port 2 (Bus 3) → NIC (Bus 3, Dev 0)
典型应用场景
1. 服务器扩展
服务器主板通常只有有限的PCIe插槽,通过Switch可以扩展连接更多设备:
- 连接多个GPU用于AI训练/推理
- 连接多个NVMe SSD构建高速存储
- 连接多个高速网卡(25G/100G)
2. GPU服务器架构
典型8卡GPU服务器架构:
- CPU提供2-4个PCIe x16端口
- 每个CPU端口连接一个PCIe Switch
- Switch下游连接4个GPU(x16或x8)
- GPU之间通过NVLink或PCIe P2P通信
3. 存储服务器
全闪存存储服务器使用Switch连接大量NVMe SSD:
- 单个Switch可支持24-32个NVMe设备
- 多级级联支持更多设备
- 支持热插拔,便于维护
4. 嵌入式系统
SoC的PCIe端口有限,使用Switch扩展:
- 工业控制计算机
- 网络设备(路由器、交换机)
- 边缘计算设备
Switch高级特性
现代PCIe Switch支持多种高级特性,用于增强系统安全性、扩展性和虚拟化能力。
ACS (Access Control Services)
ACS是PCIe的一项重要安全特性,用于控制Switch内部的路由行为,防止恶意设备访问其他设备的资源。
ACS Source Validation
验证TLP的源地址,防止伪造源地址攻击
ACS Translation Blocking
阻止地址转换请求,确保设备只能访问分配给它的地址空间
ACS P2P Request Redirect
将点对点请求重定向到RC,由RC进行仲裁和转发
ACS P2P Completion Redirect
将点对点完成包重定向到RC
ACS Upstream Forwarding
控制上游端口的转发行为
ACS P2P Egress Control
控制 egress 端口的P2P访问
ACS应用场景
- 虚拟化环境:防止虚拟机之间的非法内存访问
- 安全隔离:将不同安全级别的设备隔离
- SR-IOV:配合SR-IOV实现VF之间的隔离
ARI (Alternative Routing-ID Interpretation)
ARI扩展了PCIe设备的Function编号范围,从传统的3位(最多8个Function)扩展到8位(最多256个Function)。
| 特性 | 传统PCIe | ARI扩展 |
|---|---|---|
| Function位宽 | 3位 | 8位 |
| 最大Function数 | 8 | 256 |
| Device号使用 | 5位(32个Device) | 0(Function扩展) |
| 应用场景 | 普通设备 | 高密度VF设备(如100G网卡) |
MR-IOV (Multi-Root I/O Virtualization)
MR-IOV允许一个PCIe设备同时连接到多个Root Complex,实现多主机共享I/O设备。
MR-IOV架构特点
- 多根支持:单个设备可被多个独立的RC访问
- 资源分区:设备资源可以分配给不同的RC
- 隔离性:不同RC之间的访问相互隔离
- 应用场景:刀片服务器、多主机系统
路由表生成原理
Switch根据配置空间中的Base/Limit寄存器生成分路由表,决定TLP的转发端口。
地址路由决策流程
// 简化的路由决策逻辑
int route_packet(uint32_t addr, SwitchPort* ports, int num_ports) {
for (int i = 0; i < num_ports; i++) {
// 检查Memory空间范围
if (addr >= ports[i].mem_base && addr <= ports[i].mem_limit) {
return i; // 转发到对应端口
}
// 检查Prefetchable Memory范围
if (addr >= ports[i].prefetch_base && addr <= ports[i].prefetch_limit) {
return i;
}
// 检查I/O空间范围
if (addr >= ports[i].io_base && addr <= ports[i].io_limit) {
return i;
}
}
return UPSTREAM_PORT; // 转发到上游端口
}
Memory Base/Limit
定义32位Memory空间范围,用于路由Memory读写请求
Prefetchable Base/Limit
定义可预取Memory空间范围,通常用于大容量BAR
I/O Base/Limit
定义I/O空间范围,用于兼容传统PCI设备
常见PCIe Switch芯片
| 厂商 | 型号系列 | 特点 |
|---|---|---|
| Broadcom | PEX系列 | 市场份额最大,支持Gen3/Gen4,端口数多 |
| Microchip | Switchtec | 支持Gen4,功能丰富,支持NVMe热插拔 |
| ASMedia | ASM系列 | 性价比高,常用于消费级产品 |
| Diodes | PI7C9X | 支持Gen3,低功耗设计 |
| Texas Instruments | PCIe Switch | 工业级产品,可靠性高 |
使用Switch的注意事项
带宽规划
- 上游带宽是所有下游端口的共享资源
- 避免下游总带宽超过上游带宽过多
- 考虑设备实际带宽需求进行规划
散热设计
- Switch芯片功耗较高(5-15W)
- 需要良好的散热设计
- 高负载时注意温度监控
延迟影响
- Switch会引入额外的传输延迟
- 对延迟敏感的应用需谨慎使用
- 多级级联会累积延迟
成本控制
- 高端Switch芯片价格较高
- 根据实际需求选择合适规格
- 考虑长期供货稳定性