最近给一台存储服务器重新规划PCIe资源时,又想起一件挺有意思的事:CPU直连的根端口永远不够用。四块NVMe加两块高速网卡插完,剩下的PCIe Slot基本成了摆设,最后还是要靠PCIe Switch把通道摊开。INNOSILICON的ACP系列PCIe Switch,这段时间我陆续在评估板、客户方案和高密度存储设备上碰过几次,整体感觉是:这颗之前关注度不算高的芯片,在Gen5时代开始变得绕不开。这篇文章把ACP全系列的定位、选型、技术特性和落地时那些规格书里不会写清楚的细节一起整理出来。
1. 为什么这两年PCIe Switch开始频繁出现在服务器规格书里
1.1 CPU根端口不够分,这是绕不开的结构性问题
如果你在过去两三年里装过真正的服务器,而不是在PC上插一两块卡,大概率已经遇到这个问题:CPU上的PCIe通道数看着不少,但真正按需求一分立刻就紧张。拿一颗主流服务器CPU举例,64条到128条PCIe lane看起来数字不小,可如今一台设备要挂的东西早就不是“两块网卡加一块RAID卡”这么简单了。四块NVMe U.2起步,每块就要吃掉x4;一张200G网卡就要x16;AI推理卡一张又是x16;如果还要接NVMe全闪阵列、HBA扩展柜、双控制器链路,那点根端口根本排不过来。这时候如果把所有设备都抢着直连CPU,要么牺牲带宽把x16降到x8,要么干脆砍掉某几个端口。
PCIe Switch解决的就是“CPU根端口数量不够”的扩展问题。它听起来很简单:把CPU出来的少量端口,扩展成大量可用端口。但真正把芯片摆进系统后,服务器设计的自由度完全不同。我见过不少项目最终评估下来不是选更大的CPU,而是选更合理的Switch拓扑,原因是根端口数量比单机算力更早到瓶颈。
1.2 PCIe Switch内部不是“分线器”
很多人第一次接触PCIe Switch,会把它想象成网线集线器或者简单信号分叉器。实际上不是。PCIe Switch内部可以理解为由多个虚拟PCIe桥(Virtual PCI-to-PCI Bridge)加交换调度逻辑组成,它工作在事务层(Transaction Layer),对TLP(Transaction Layer Packet)做解析和转发,不是简单地把上游管脚并联到下游管脚。
这意味着两件事:端口与端口之间的连接是“路由”出来的,不同下游端口之间可以同时交换数据,整颗芯片的聚合带宽按通道数线性扩展;同时,上游端口和下游端口不是广播关系,报文需要根据地址段、BDF(Bus/Device/Function)等信息路由到对应端口。
用城市交通理解可能更直接:没有PCIe Switch的服务器,CPU就像市中心的小路口,所有车都挤在这几个明确路口进出;有了Switch,相当于在市中心外围修了一座大型立交枢纽,不同方向的车流各走各的匝道,互不干扰,整体通行效率高得多。
这个差异对关键业务影响很大。比如NVMe分布式存储场景里,多块盘同时读写,数据包不大但并发量极高。如果靠根端口硬扩展,CPU侧会频繁仲裁;而一颗带多虚拟通道、支持独立仲裁的Switch,可以让不同盘之间的数据流尽量并行,直到汇入CPU根端口。
1.3 从Gen3走到Gen5,Switch的定位从“扩展件”变成了“架构核心”
PCIe Switch不是新事物,Gen2、Gen3时代就已经在存储系统里大量使用。只是那时关注度不高,因为当时连接需求相对简单:要么扩展NVMe盘位,要么把单根端口从x8“切开”成多个x4。到了Gen4,16GT/s的单通道链路速率让x16端口的吞吐翻到约31.5GB/s,一台机器如果塞满NVMe盘,整机带宽总量已经相当可观。Gen5直接翻到32GT/s,一个x16端口的理论单向带宽约63GB/s,整机的聚合互连带宽进入Tbps级别。
这种情况下,PCIe Switch不再只是把端口“变多”的工具,而是决定整机扩展拓扑、带宽分配和故障域隔离的核心节点。高密度AI训练服务器、DPU加速卡、双控制器存储,几乎都离不开它。这也是为什么这几年看服务器规格书时,“PCIe Switch”出现的频率明显变高,高端机型甚至会直接在BOM里标注具体芯片系列和型号。INNOSILICON的ACP系列,就是在这种背景下进入主流视野的。
2. INNOSILICON ACP系列产品家族:通道数、端口形态与场景定位
2.1 按链路代际划分的三条产品线
从我目前接触到的公开资料和实际项目来看,INNOSILICON ACP系列大致覆盖三个方向:ACP-E、ACP-G4、ACP-G5。名字里的E、G4、G5分别对应链路代际:ACP-E走PCIe 3.0,ACP-G4走PCIe 4.0,ACP-G5走PCIe 5.0。这样划分的好处很直接:不同年代的服务器和嵌入式系统,可以用同一套芯片设计理念覆盖,迁移升级时不用重新理解整个产品体系。
如果只看规格,“全系列”的跨度主要体现在通道数、单口最大宽度和典型功耗范围上。不同子系列都会提供多种通道数的封装版本,从入门级的几十通道到高端的上百通道,端口可以按系统需要拆成x4、x8、x16,部分版本还支持非对称配置。这一点对系统设计非常重要,后面我会专门展开。
2.2 三条产品线横向对比
先给一张比较直观的对比表,方便后面选型时对照:
| 产品线 | 链路代际 | 通道数范围 | 单端口最大宽度 | 典型应用场景 |
|---|---|---|---|---|
| ACP-E | PCIe 3.0,8GT/s | 24 ~ 48 | x8 | 嵌入式计算、边缘网关、入门级NAS/阵列、工业控制 |
| ACP-G4 | PCIe 4.0,16GT/s | 48 ~ 96 | x16 | 通用存储服务器、NVMe全闪阵列、GPU扩展箱、视频处理 |
| ACP-G5 | PCIe 5.0,32GT/s | 64 ~ 128 | x16 | AI训练/推理服务器、HPC节点、双控存储、核心交换背板 |
这张表里没把功耗和延迟标死,因为同一个通道数在不同配置下功耗差很多,规格书里的功耗往往是特定工作负载下的平均值。选型时真正要看的,是“这颗芯片能不能在你需要的端口组合下跑满所有通道”,而不只是看通道总数。同样是一颗96通道的Switch,配置成6个x16和24个x4,对芯片内部仲裁的压力完全不同。
2.3 从实际项目看每条产品线的分工
ACP-E起初我没太在意,真正接触后才发现它在嵌入式领域潜力不小。现在的边缘服务器、工业整机,除了计算还要挂不少外设,比如多路摄像头采集卡、NVMe缓存盘、万兆网卡。一颗PCIe 3.0的24到48通道Switch,功耗明显比Gen4/Gen5低,而且对PCB板材要求不挑剔,四层、六层板都好画很多。适合那些对单位成本敏感、不需要极致带宽,但确实需要把CPU有限端口扩出来的设备。
ACP-G4是当下最主力的选择。企业级存储、普通GPU服务器、密集NVMe阵列,48到96通道这个范围非常实用。PCIe 4.0生态已经非常成熟,不少系统里的CPU、NVMe控制器本身就是Gen4接口,选一颗Gen4 Switch天然能承载现有硬件。如果项目没那么激进,ACP-G4可以当作稳健起步。比如一台全闪存储,内部要给几十块NVMe盘提供x4链路,同时还要给两个控制器留上行通道,这种拓扑用一颗G4系列高通道版本能很干净地实现。
ACP-G5则是给下一代平台准备的。无论Intel还是AMD的新一代CPU,都把原生通道提到了Gen5,AI服务器里的GPU加速卡也在往Gen5过渡。这场景下单颗芯片需要的通道数很大,64到128通道是最常见的选择范围。ACP-G5的定位,就是这些数据中心机型的“重载立交桥”:要把多张GPU、多张DPU、NVMe盘都接下,还能在满负载下不成为瓶颈。
3. ACP系列核心技术特性拆解:这些参数不是数字游戏
3.1 端口宽度动态配置:一个物理端口当几个人用
PCIe Switch最基础、也最容易被低估的能力,是端口宽度可以灵活配置。同一个物理端口,可以在初始化阶段通过配置寄存器拆成x4、x8、x16;甚至可以把一组端口按需组合。这意味着同一颗芯片在不同项目里能承担完全不同的角色:这次拿它做24盘NVMe扩展,下次拿它做8路GPU互联,只要端口数量和代际支持,都不用换封装。
从系统设计角度,这个特性需要和CPU的bifurcation(端口细分)能力一起看。有的CPU根端口支持x16拆成两个x8、四个x4,有的支持得更灵活。如果CPU侧拆分能力和Switch端口配置匹配得好,整机布线能简化不少。比如CPU的两个x16根端口接到一颗Switch的上游,内部拆出8个x8下游端口,一个48通道的Switch就能带8张x8加速卡,这在很多AI推理盒子里面是非常典型的用法。
另外一个容易被忽视的点是“非对称配置”的含义。PCIe链路本身包含上行和下行两组差分对,物理端口通常要求对称,Switch是把自己内部的通道数在不同端口之间分配。选型时一定要看清规格书:所谓“支持x4/x8/x16动态拆分”,通常指初始化时可以配置,不是运行中随时热切换。真正做热切换,需要Port Bifurcation和系统软件重新协商,那是另一套完全不同的设计思路。