晶圆级芯片算力再好看,最终都是被I/O拖死的。
这句话不是夸张。最近几年,只要提到超大AI加速芯片,绕不开“晶圆级”这个词——把一整片晶圆做成一个计算芯片,而不是切成几十个小die。听起来很美:几十万个AI核,巨大缓存,超大片上SRAM。但真到了实际部署,你会发现一个非常现实的矛盾:计算可以铺满一整片硅片,数据却只能从芯片边缘进出。I/O带宽成了那种平时不显眼、一旦跑真实负载就立刻卡死你的因素。
我去年参与评估过类似架构的加速器,第一轮跑出来峰值算力确实漂亮,但一换到真实模型,吞吐率掉得厉害。后来定位了很久,问题不在矩阵计算,也不在内核调度,而在I/O——数据喂不进去,计算阵列只能空转。这个经历让我意识到,晶圆级芯片真正的评价锚点不是算力,而是它怎么组织数据进出。下面把这个问题拆开聊。
1. 晶圆级芯片为什么会在I/O这里被卡住
1.1 算力越堆越高,数据却进不去
先看一个常识:单个芯片的计算密度可以随着制造工艺和集成方式暴涨,但数据进出芯片的端口密度受封装、面板、基板、pin脚间距限制。晶圆级芯片是把几百个die拼一起,计算核心数动辄几十万,但外部连接只有芯片边缘的那一圈pad,加上封装基板的布线层。无论内部多强,外部数据吞吐的天花板远低于内部计算需求。
举个例子,用最简单的比例理解:假设一片晶圆级芯片内部有10万个计算单元,每个单元每个时钟周期需要从片上存储器读取几百字节数据,内部设计可以做到很高带宽。但如果这些数据都需要从芯片外部进入,外部I/O总带宽可能只有片上带宽的百分之一甚至千分之一。这意味着绝大多数计算单元必须依赖片上缓存反复复用数据,一旦缓存局部性不好,就会暴露外部带宽缺口。
所以晶圆级芯片的I/O瓶颈,本质上是一个“面积与周长”的矛盾。算力与存储可以平均分布在整个二维平面,但外部通信只能从边界进出。面积增长是平方关系,周长只是线性关系。即使整片晶圆的面积比普通芯片大几十倍,也只是把可用的I/O总带宽增加了几倍,远达不到算力增长的幅度。
1.2 带宽瓶颈不是简单多放几个引脚就能解决
有人会说:那我把芯片周围的pad做密一点,不就有更多I/O了吗?
没那么简单。芯片I/O带宽受几个环节同时制约。首先是封装基板:芯片pad信号要通过基板走线扇出到球栅阵列,走线层数和线宽决定了信号密度。晶圆级芯片尺寸巨大,基板相应也要大,翘曲、热膨胀、信号完整性都会变差。其次,高速串行接口需要大量电源引脚和地引脚配对,单纯增加信号引脚会引入串扰和电源噪声。第三,更实际的问题在功耗:每一路高速SerDes(串行器/解串器)都要消耗几瓦甚至几十瓦,晶圆级芯片本身功耗已经非常高,再堆大量高速I/O,热密度会先击穿系统。
因此,I/O瓶颈不是“硬件设计时少加了几根线”的问题,而是从物理、封装到功耗都受到约束的系统性问题。这也是为什么晶圆级芯片常采用特殊设计来回避I/O压力,而不是硬怼引脚数量。
2. 拆开看看:I/O带宽瓶颈到底卡在哪几层
2.1 封装物理极限:引脚数量、扇出和信号完整性
普通工艺下,芯片pad pitch在40~80微米量级,晶圆级芯片如果要兼容标准封装,pad数要控制在合理范围。假设一片芯片的边长大约220毫米(300mm晶圆直径),四边利用率假设只有70%,即使按50微米pitch算,可用pad数量也只是十万到二十万量级。每个pad如果跑2Gbps甚至5Gbps,理论上I/O可以到数百Gbps到数Tbps。但别忘记,这需要大量的差分对、电源、地、冗余,实际可用差分信号对数会少一个数量级。
更重要的是信号完整性。晶圆级芯片封装基板的尺寸大,走线长,阻抗控制难,引脚之间的串扰和损耗更明显。如果盲目增加I/O数量,信号质量下降,误码率上升,最终有效带宽可能不升反降。所以设计上通常要留出足够的信噪比预算,有些方案宁可降低接口速率,也不牺牲误码率。
从工程经验看,封装层面的I/O优化空间是有限的,除非走向更先进的封装技术,例如co-packaged optics(共封装光学)或硅光互连。但这些技术目前成本高,良率挑战大,距离大规模商用还有距离。
2.2 功耗墙:SerDes功耗与带宽不成线性
I/O链路每提升一个档次的速率,在相同调制技术下,功耗/bit并不会等比例下降。到56Gbps PAM4或112Gbps PAM4时代,单通道功耗可以达到500mW~1.5W,这还只是PHY功耗,不含编码和协议处理。晶圆级芯片如果要追求50Tbps甚至100Tbps的外部I/O带宽,光是PHY功耗就可能占满整个芯片功耗预算的相当大比例。
计算芯片的功耗早就被热管理制约,晶圆级芯片更是如此。之前不少AI加速器为了达到较高带宽,采用HBM堆叠,但HBM每个堆栈的IO功耗也在几十瓦量级。如果用户需要更多HBM堆栈,功耗自然上涨;而高带宽存储堆栈本身就制造了新的热源,还会加重封装散热负担。
因此,晶圆级芯片设计不得不在I/O带宽、存储带宽和功耗之间做取舍。很多厂商给出的峰值I/O带宽,往往是理论最大值,真实部署时受功耗限制后能用的要打折扣。
2.3 外部存储带宽:HBM 数量、堆叠层数和热密度
晶圆级芯片计算速度很快,存储系统如果跟不上,就会出现“数据饥渴”。目前主流高带宽存储是HBM2e、HBM3甚至HBM3e。单颗HBM3e的带宽可以达到1.2TB/s以上,但这只是存储堆栈本身的接口带宽,连接HBM与计算芯片的Interposer/Silicon Bridge以及基板通道也是瓶颈。多个HBM堆栈并排放在晶圆级芯片周围,还会占据大量封装面积和布线资源。
我们经常看到一些宣传文案写“HBM总带宽达到xx TB/s”,但实际使用时还要看存储控制器的调度能力、读写混比、访问模式和数据分布。HBM本质上是一个共享资源,如果不同计算核同时访问不同堆栈,地址映射和路由可能造成冲突,实际带宽远低于理论值。
晶圆级芯片为了减少对外部存储的依赖,通常会把大量SRAM直接集成在die内,形成巨大的片上缓存。这确实是一个聪明的方向:与其把大量数据放在外部存储,不如抬高数据局部性,减少跨芯片和跨存储层的数据搬移。但代价是片上SRAM容量和面积受限,应用程序如果无法复用数据,还是有大量数据需要通过外部存储接口,而外部存储带宽又受HBM堆栈数量、封装布线和功耗的联合约束。
2.4 片内互连:晶圆级片上网络也有带宽和延迟约束
晶圆级芯片不是几十个核的小系统,而是几十万个核的超级网格。片内互连网络(片上网络)的带宽、跳数、路由策略一样影响数据供给。如果片内数据网络没有足够的臂展带宽,即使数据已经到了芯片边缘,也无法快速送到目标计算单元。
片内互连的瓶颈更多体现在扇出和功耗上:每条长距离连线都需要中继器(buffer),会消耗功耗和面积。把几百个die连接起来的跨die总线,需要穿过硅中介层或通过微桥连接,跨die通信的延迟和功耗远高于die内部。如果路由算法没有把数据尽量控制在同一个die或邻近die,那么大量跨die流量会造成片上网络拥塞,拖累整体吞吐。这也是为什么说I/O瓶颈不仅指芯片外部接口,还包括芯片内部的数据分发路径。
3. 绕开瓶颈的工程思路:从硬件到软件协同
3.1 存储近计算:把数据放在计算单元边上
晶圆级芯片最大的结构优势,其实是巨大的片上SRAM。设计上应该尽量让数据在片上多复用,把外部存储和外部I/O当作最后的数据源,而不是每次计算都去搬数据。
具体做法包括:使用较大的一级/二级缓存,并在运行时做显式的数据分块(tiling),让每次从外部HBM读入的数据块能在片上停留足够长时间,完成多轮计算后再写回。这有点像CPU的寄存器分块和缓存优化,但在晶圆级芯片上,缓存容量可以非常大,优化的空间也大。
如果你的应用属于卷积、Transformer推理或矩阵乘法,这类经典算子可以通过分块策略做到高数据复用,减少到外部存储的数据流量。但如果你的应用是图神经网络、稀疏推理、随机访问较多的业务,局部性很差,片上缓存的命中率会低,I/O瓶颈就会暴露得更明显。
3.2 片内互连的层级设计:减少跨片流量
晶圆级芯片如果由多个die拼接而成,那么die之间的互联带宽就成了隐藏瓶颈。工程上有一个朴素的设计原则:数据尽量在核组(compute cluster)内部流动,避免跨die长距离路由。
具体可以这样做:
- 在体系结构层面把计算核按物理位置分区,任务与数据映射尽量采用分区分片的策略。
- 在通信库和编译器层面,尽可能把对相同数据的访问调度到同一个die上的核,减少跨die同步。
- 如果不得不跨die通信,优先使用靠近数据源的局部网络,而不是全芯片统一路由。
这类方法不一定写入芯片说明书,但在实际程序调优时非常有效。我见过很多晶圆级加速器的性能问题,最后都归结为“通信局部性差”,数据在片上网络绕了很长的路,把有效带宽消耗在路由拥塞上。
3.3 数据压缩与稀疏化:让有效带宽翻倍
I/O带宽紧张,除了想方设法增加物理带宽,还可以减少传输的数据量。这一点在深度学习场景里尤其有效。
- 对权重、激活值做量化:从FP32降到INT8甚至INT4,数据量直接除以4或8。
- 对梯度做稀疏化:只传输非零梯度或top-k梯度,大幅度降低通信量。
- 对中间特征做无损或有损压缩:很多AI框架里的通信库已经支持梯度压缩,晶圆级芯片的SDK也往往提供类似能力。
压缩不是免费的,解压和压缩需要额外计算资源,还会引入延迟。通常在芯片端到端总带宽已接近极限时,压缩的收益会大于消耗。实际工程里,可以先做profiling,看看当前任务的片上总流量和有效利用率,再决定是否引入压缩或稀疏化。
3.4 运行时调度和流水线重叠:把等待时间变成计算时间
很多I/O瓶颈不是硬件接口不够快,而是任务调度没有把数据加载和计算重叠起来。思路很简单:如果计算需要的数据还在路上,就让计算单元先处理已经在缓存里的下一批数据,形成“数据加载-计算-写回”流水线。
这套做法在传统HPC里叫overlap communication and computation,在晶圆级芯片上同样适用。硬件上需要异步数据搬运引擎(DMA、copy engine),软件上需要任务切分和预取机制。如果你使用的SDK支持异步数据流,建议用它替代同步接口。否则计算单元会在缓存未命中时空转,表现出的有效带宽远低于硬件能力。
流水线重叠还会改变排障思路:很多“带宽不够”的问题,其实是同步等待过多,而非接口物理带宽真的耗尽。先用profiler看时间线,如果发现计算和拷贝没有重叠,那优先去优化调度,而不是买更贵的硬件。
4. 如果要在真实项目中评估和验证I/O带宽
4.1 一个可参考的评估流程
评估晶圆级芯片的I/O能力,不要只看宣传PPT,建议按下面四步走:
- 确定负载特征。先明确跑什么类型的算子/模型,访存密集还是计算密集,数据复用度如何。计算密集、复用度高的模型,I/O压力相对小;访存密集、随机访问多的模型,I/O压力大。
- 用同一套真实负载构建基准。选取至少两个模型:一个高数据复用,一个低数据复用。分别记录单batch和连续batch的吞吐。
- 分析瓶颈位置。用profiler查看计算单元利用率、缓存命中率、I/O队列深度、PCIe/HBM链路利用率。如果计算单元利用率低但I/O链路已经拉满,那就是I/O瓶颈。
- 做压力测试。逐步增加并发和batch size,观察有效带宽是否先于计算能力饱和。画一条带宽利用率-计算量曲线,能直观看出系统在什么位置进入拐点。
这套流程能帮助你区分“计算瓶颈”“存储瓶颈”和“I/O瓶颈”,避免把问题简单归结为“带宽不够”。
4.2 常见误区:单看峰值带宽,不看实际可达带宽
很多人比较不同加速器时,直接看“I/O带宽”数字,比如“芯片到外部接口带宽为20TB/s”或“HBM带宽为4TB/s”。但这些数字和真实可达带宽差距很大。
实际可达带宽需要扣除编码开销、协议开销、读写切换开销、访问冲突和刷新开销。以PCIe为例,说128GT/s的PCIe,有效数据带宽通常只有八成左右;HBM也有类似情况,如果全部读或全部写也许能接近峰值,但读混写时会掉很多。
所以在评估时要问清楚:官方数字是单向峰值,还是双向总和?是物理层速率,还是有效数据速率?是否包含纠错码(ECC)开销?这些细节直接决定了你对I/O能力的判断是否准确。
4.3 排查链路:从链路、协议、驱动、拓扑到负载
如果实际I/O带宽明显低于预期,建议按下面的顺序排查:
- 先看物理链路。接口是否工作在预期速率,信号完整性是否达标,误码率是否正常。链路可能因为布线长度、连接器质量、供电噪声降速。
- 再看协议层。检查是否有握手超时、重传、流控反压。统计协议层面的事件,比如NAK、重传次数,这是排查隐藏性能损失的好入口。
- 再看驱动和系统层。DMA缓冲是不是分配在不可访问区域?中断处理是否频繁?页大小和内存锁页是否影响内核和用户态之间的数据拷贝?这些问题经常被忽略。
- 再看拓扑和路由。数据访问路径上是否有拥塞节点,比如多个核争抢同一个I/O通道或同一个HBM堆栈。有些问题在你验证初期不会出现,扩容后才暴露。
- 最后才回到负载本身。访问模式是否随机、是否存在大量小指令写、是否频繁切换读/写方向。
不要直接怀疑硬件标注错了。绝大多数“带宽不达标”的现象,最终都能在协议层、驱动映射或者负载特征中找到原因。
4.4 这类方案适合谁,不适合谁
晶圆级芯片在I/O上天然有挑战,但它依然适合特定场景:需要超大片上缓存、超强算力且数据复用度极高的蜜罐型负载,比如大规模稀疏模型训练、Transformer推理、科学计算中的某些结构化网格计算。这类负载的核心收益来自“大量计算在片上完成,减少外部I/O流量”。
不适合的场景包括:访问模式高度随机、数据量远超片上容量、无法做数据分块的负载。比如某些图计算或数据库查询,大量数据需要从外部存储随机读取,片上放不下,外部I/O一旦成为瓶颈,晶圆级芯片可能反而不如多个小芯片并联灵活。
因此,选择这类方案前,先算一算“拟算法的算术强度”和“数据复用度”。如果算术强度很低,数据复用度不高,I/O压力必然很大,晶圆级芯片的优势会大打折扣。这也是为什么有些通用加速器团队评估完晶圆级芯片后选择放弃,不是因为芯片不好,而是因为负载不匹配。
另一个需要关注的边界是软件生态。晶圆级芯片的编程模型通常与传统GPU或CPU有很大差异,很多算子的实现需要重新编写。如果团队没有足够精力做深度移植和优化,那么再大的内部算力也体现不出来。这个问题比I/O硬件瓶颈更隐性,也更容易导致项目延期。
说到底,晶圆级芯片的I/O带宽问题,不是一道简单的“增加I/O接口”题,而是封装、功耗、存储、互连和软件调度共同作用的系统设计课题。评估任何这类加速器时,我都建议把“峰值算力”放在一边,先去问一个问题:这套系统能够稳定维持的、真实负载下的有效I/O带宽是多少?只有把这个数字摸清楚,你才算真正看懂了一台晶圆级芯片。
如果你正在考虑采购或使用这类方案,我的建议是别急着跑大模型,先拿一个访存密集、数据复用低的小测试程序探底。这个小程序跑出来的实际带宽,往往比几百页的架构白皮书更能说明问题。晶圆级芯片的潜力是真实的,但它的I/O边界也是真实的。那些在边界之内妥善设计的人和团队,才有机会获得真正的收益。