公司动态

晶圆级芯片的I/O瓶颈:算力再高也怕数据喂不进去

📅 2026/8/31 7:34:56
晶圆级芯片的I/O瓶颈:算力再高也怕数据喂不进去
晶圆级芯片算力再好看最终都是被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在4080微米量级晶圆级芯片如果要兼容标准封装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时代单通道功耗可以达到500mW1.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边界也是真实的。那些在边界之内妥善设计的人和团队才有机会获得真正的收益。