1. 从“内存墙”说起:为什么3D堆叠大内存成了香饽饽
但凡折腾过本地大模型推理或者大规模数据分析的人,大概率都撞过同一堵墙——内存墙。算力芯片的峰值算力年年翻倍,但内存带宽和容量的增长曲线明显跟不上,结果就是芯片大部分时间在等数据搬运,算力利用率惨不忍睹。我做推理部署那几年,最头疼的不是模型跑不动,而是显存/内存不够,batch size 死活上不去,吞吐量卡在一个尴尬的位置。
D-Matrix 这个项目标题里的“3D堆叠大内存”,本质上就是冲着这堵墙去的。它想做的事情,是把存储单元从传统的二维平面布局,改成垂直方向一层层叠起来,再配合高密度互连,让单位面积里的内存容量和带宽同时往上跳一个数量级。你可以把它理解成:以前是平房,现在改成了高层公寓,同样的地皮,住的人多了好几倍,而且每户人家门口的电梯(互连)还更快。
这篇文章适合谁看?如果你在做AI加速器架构、存算一体、先进封装,或者单纯对“内存怎么堆起来”这件事好奇,那接下来的内容应该能给你一些可复现的思路。我会从整体设计逻辑、核心细节、实操要点、常见坑几个角度拆开讲,尽量把“为什么这么设计”说透,而不是只丢一堆名词。
需要先说明一点:D-Matrix 这个标题本身信息量有限,很多具体参数官方并没有完全公开。所以下面涉及到的具体数值、工艺节点、堆叠层数等,一部分是基于当前3D堆叠内存领域的常见工程实践做的合理推演,我会在相应位置标注清楚哪些是“行业通行做法”,哪些是“针对该项目的推测”。这样你读的时候心里有数,不会把推测当成实锤。
2. 整体设计思路拆解:3D堆叠到底解决了什么问题
2.1 传统2D内存布局的三个死穴
要理解3D堆叠的价值,得先看清楚老路子卡在哪。传统DRAM或者SRAM阵列是平铺在芯片上的,走线在金属层里横向铺开。这套方案成熟、便宜,但到了大模型时代,三个问题越来越突出。
第一个是面积换容量的边际成本越来越高。芯片面积不是无限的,光罩尺寸就那么大,你想塞更多存储单元,就得把面积撑大,但面积一大,良率下降、成本飙升,而且走线长度增加导致延迟和功耗都上去了。这就像在一个固定大小的仓库里堆货,平铺的话很快就没地方了。
第二个是带宽受限于引脚数和走线密度。内存和计算单元之间的数据通道,宽度是有限的。你想提高带宽,要么提高频率(功耗爆炸),要么增加通道数(引脚不够用)。HBM 之所以能打,就是因为它用硅中介层把通道做宽了,但即便如此,面对动辄几百GB的模型权重,带宽依然是瓶颈。
第三个是能效比难看。数据在内存和计算单元之间来回搬运,消耗的能量往往比计算本身还大。有研究统计过,在先进工艺节点下,一次片外访存的能耗可能是一次片上乘加运算的几十倍甚至上百倍。这就是所谓的“内存墙”,算力再强,喂不饱也是白搭。
2.2 3D堆叠的核心逻辑:把“平铺”改成“盖楼”
3D堆叠的思路很直接:既然平面扩展受限,那就往垂直方向要空间。把多层存储晶圆或者存储阵列堆叠起来,层与层之间用硅通孔(TSV)或者混合键合(Hybrid Bonding)连接。这样一来,单位面积上的存储容量可以翻好几倍,而且层间互连的延迟远低于走长距离的平面走线。
这里的关键在于互连技术。早期用TSV,直径在几微米到十几微米,密度有限,主要用来做电源和少量信号连接。后来混合键合出来了,直接把两片晶圆的铜焊盘对准压合,间距可以做到亚微米级,互连密度提升了一到两个数量级。这意味着层与层之间可以并行传输大量数据,带宽自然就上去了。
D-Matrix 这个项目标题强调“大内存”,我推测它的堆叠层数不会低,可能是4层、8层甚至更多。层数越多,容量越大,但散热和良率挑战也越大。所以实际设计里通常会在层数、单层容量、散热方案之间找一个平衡点。这个平衡怎么找,后面实操部分会展开。
2.3 为什么是“大内存”而不是“大缓存”
有人可能会问:为什么不干脆把SRAM缓存做大?SRAM快啊。问题在于密度和成本。SRAM每个bit要用6个晶体管,DRAM只要1个晶体管加1个电容,密度差了好几倍。在需要几百GB甚至TB级容量的场景里,全用SRAM是不现实的,面积和成本都扛不住。所以3D堆叠大内存通常走的是DRAM路线,或者DRAM和逻辑die混合堆叠,用DRAM保证容量,用逻辑层做近存计算。
这也是D-Matrix这类项目的一个典型特征:存储和计算靠得足够近。传统架构里,内存和计算单元隔着老远,数据要经过长走线、经过内存控制器、经过总线,才能到计算单元手里。3D堆叠之后,计算逻辑可以直接放在存储层的旁边或者中间层,数据搬运距离缩短到微米级,延迟和功耗都大幅下降。
3. 核心细节解析:堆叠结构、互连与散热
3.1 堆叠架构的几种常见形态
3D堆叠内存不是只有一种玩法,根据计算单元和存储单元的相对位置,大致可以分成三类。
第一类是存储层堆叠,逻辑层在底部。底层是逻辑die,负责控制和计算,上面叠好几层DRAM die。这种结构比较常见,逻辑工艺和DRAM工艺分开做,各自用最合适的节点,然后键合在一起。优点是灵活,逻辑层可以用先进节点,DRAM层用成熟节点,成本可控。
第二类是逻辑层夹在存储层中间。上下都是DRAM,中间是逻辑,这样逻辑层到上下两边的距离都短,带宽分配更均匀。但制造难度大,因为逻辑层要承受上下两次键合,热预算和应力管理很麻烦。
第三类是存储和计算完全混合,也就是存算一体。计算单元直接嵌在存储阵列里面,数据几乎不用搬。这是最理想的形态,但工艺挑战最大,目前还处于研究阶段,离大规模量产有距离。
D-Matrix 从标题看,大概率是第一种或第二种。考虑到“大内存”这个定位,我倾向于认为它用了多层DRAM堆叠,逻辑层负责内存控制和近存计算调度。
3.2 混合键合:3D堆叠的命门
混合键合是3D堆叠里最关键的工艺之一。简单说,就是把两片晶圆的表面抛光到原子级平整,然后把铜焊盘对准,在室温下先预键合,再退火让铜扩散融合。键合之后,两片晶圆之间的互连间距可以做到1微米以下,密度比TSV高得多。
这个工艺的难点在于对准精度和表面洁净度。对准偏了,焊盘对不上,信号就断了。表面有颗粒污染,键合强度不够,后续工艺里可能分层。所以混合键合通常在百级洁净环境里做,对准精度要求亚微米级。
对于D-Matrix这种大内存项目,混合键合带来的好处是高带宽密度。假设键合间距是1微米,每平方毫米可以放下大约一百万个互连点。哪怕只用其中一部分做数据通道,带宽也能轻松做到TB/s级别。这就是为什么3D堆叠能把内存带宽拉上去的根本原因。
3.3 散热:堆叠层数越多,热越难跑
3D堆叠有个绕不开的问题:热。芯片工作时会发热,堆叠之后,中间层的热量很难散出去,因为上下都被挡住了。层数越多,中间层越热,温度一高,DRAM的刷新率要提高,功耗增加,严重时还会导致数据丢失。
常见的散热方案有几种。一是减薄,把每层晶圆磨到几十微米甚至更薄,热阻就小了。二是热通孔,在堆叠层里打一些专门用来导热的TSV,把热量往下引。三是微流道冷却,在晶圆里刻出微通道,让冷却液流过,直接把热带走。前两种比较成熟,第三种还在实验室阶段。
实际设计里,通常会根据功耗密度来选方案。如果每层功耗不高,减薄加导热通孔就够了。如果功耗密度大,可能就得考虑微流道或者更激进的散热手段。D-Matrix 如果定位是数据中心推理,功耗密度不会低,散热方案应该是重点考虑过的。
4. 实操过程与核心环节实现
4.1 从设计到流片:一个可参考的流程
虽然我们没法真的去流一片3D堆叠内存的晶圆,但可以把整个流程拆解成可理解的步骤,方便你在做架构评估或者方案设计时参考。
第一步:确定容量和带宽目标。先想清楚你要跑什么负载。如果是大模型推理,模型权重多大,激活值多大,KV Cache多大,这些决定了你需要多少内存容量。带宽则取决于每秒要搬运多少数据。比如一个70B参数的模型,FP16精度下权重约140GB,如果每秒要跑10个token,每个token要读一遍权重,那带宽需求就是1.4TB/s左右。这个数字直接决定了你堆叠层数和互连密度的下限。
第二步:选堆叠层数和单层容量。假设单层DRAM die容量是16Gb(2GB),你要做到64GB,那就需要32层。但32层太多了,散热和良率都扛不住。所以实际会选单层容量更大的die,比如32Gb(4GB),那16层就够了。再配合逻辑层,总层数控制在合理范围。行业里目前比较激进的做法是8到12层,再往上就很少见了。
第三步:选互连方案。如果带宽需求在几百GB/s级别,TSV可能够用。如果到了TB/s级别,混合键合基本是必选项。混合键合的间距、焊盘尺寸、对准精度这些参数,要根据代工厂的工艺能力来定。通常代工厂会提供设计规则,你按规则来就行。
第四步:热仿真和结构优化。这一步很关键。用热仿真工具把堆叠结构建出来,跑不同负载下的温度分布。如果中间层温度超标,就调整层厚、加导热通孔、或者改布局把高功耗模块挪到边缘。迭代几轮,直到温度在安全范围内。
第五步:流片和测试。流片之后,先做晶圆级测试,确认每层die的功能正常。然后键合,再做封装级测试。测试环节要特别关注层间互连的良率,因为键合缺陷往往在早期看不出来,跑一段时间才暴露。
4.2 参数计算示例:带宽和容量的平衡
举个具体的计算例子,方便你理解参数之间怎么互相制约。
假设目标是在1平方毫米的键合面积上实现1TB/s的带宽。如果每个互连点跑2Gbps,那需要500个互连点。混合键合间距1微米的话,1平方毫米能放100万个点,所以500个点只占很小一部分面积,完全可行。但如果用TSV,间距10微米,1平方毫米只能放1万个点,要凑够500个点虽然也行,但TSV本身占面积,而且电容大、功耗高,频率上不去。
再算容量。假设单层die面积100平方毫米,密度是0.5Gb每平方毫米,那单层容量就是50Gb,约6.25GB。堆8层就是50GB。如果模型需要100GB,那就得堆16层,或者换密度更高的die。密度提升靠工艺微缩,但DRAM微缩已经接近极限,所以堆层数是更现实的路径。
这两个计算说明一个道理:带宽靠互连密度,容量靠堆叠层数。两者要匹配,不能一个很高一个很低,否则就是浪费。
4.3 近存计算怎么落地
D-Matrix 这类项目通常不会只做纯内存,而是会带一点近存计算能力。具体怎么做?常见的是在逻辑层里放一些简单的计算单元,比如乘加器、激活函数单元,让数据从DRAM读出来之后,先在逻辑层做一部分处理,再传给主计算单元。
这样做的好处是减少数据搬运量。比如矩阵乘法,如果能把一部分乘加操作放到近存逻辑里做,主计算单元就不用把原始数据全读一遍,只需要读中间结果。搬运量少了,带宽压力就小了,功耗也降了。
落地的时候要注意计算精度和编程模型。近存计算单元通常精度有限,可能是INT8或者FP16,要跟主计算单元对齐。编程模型也要改,不能再用传统的“内存-计算”分离的写法,得让编译器知道哪些操作可以下推到近存层。这部分目前还没有统一标准,各家有各家的方案。
5. 常见问题与排查技巧实录
5.1 键合良率低怎么办
混合键合良率是3D堆叠的头号难题。常见原因有几个:表面颗粒污染、对准偏移、铜焊盘氧化、退火温度不当。
排查思路:先做表面检测,看有没有颗粒。如果有,检查洁净室等级和清洗工艺。然后测对准精度,用红外或者X射线看键合界面。如果对准没问题但电阻偏高,可能是铜氧化了,需要调整退火气氛或者加还原步骤。退火温度也要优化,太低铜扩散不够,太高可能损伤器件。
实操心得:键合前的清洗步骤特别关键,我见过因为清洗液残留导致整批键合失败的案例。清洗之后最好马上键合,不要放置太久,表面会重新氧化。
5.2 中间层过热怎么破
中间层过热通常表现为:跑一段时间后性能下降,或者测试时中间层die的误码率升高。
排查思路:先用热仿真定位热点,看是哪个模块功耗高。如果是计算单元,考虑把计算任务分散到边缘层。如果是DRAM刷新功耗,考虑降低刷新率或者用温度补偿刷新。还可以加导热通孔,把热往下引。
实操心得:减薄晶圆是最直接的散热手段,但减薄之后机械强度下降,后续封装容易裂。所以减薄之后通常要加支撑衬底,或者用模塑封装保护起来。
5.3 带宽跑不满的排查清单
带宽跑不满,可能是互连问题,也可能是调度问题。下面这个表可以帮你快速定位。
| 现象 | 可能原因 | 排查方法 | 解决方向 |
|---|---|---|---|
| 带宽只有理论值一半 | 互连通道部分失效 | 测各通道误码率 | 检查键合对准和焊盘连通性 |
| 带宽波动大 | 热 throttling | 监控温度曲线 | 优化散热或降低功耗 |
| 延迟高但带宽正常 | 调度算法差 | 分析访存模式 | 改调度策略,增加并行度 |
| 读写不对称 | 通道分配不均 | 统计读写通道占用 | 重新分配通道资源 |
5.4 测试环节的坑
3D堆叠的测试比2D复杂得多。因为层与层之间是键合在一起的,没法单独测每一层。通常的做法是:先做晶圆级测试,把坏die挑出来,只键合好die。键合之后再做整体测试,但这时候如果发现某一层有问题,整个堆叠就废了,成本很高。
所以已知良好die(KGD)测试特别重要。要在键合之前把每层的功能、功耗、时序都测一遍,确保只有好die进入键合环节。KGD测试的覆盖率越高,最终良率越好。但KGD测试本身也有成本,要在覆盖率和成本之间找平衡。
6. 影响范围与适用场景分析
6.1 对AI推理的影响
3D堆叠大内存最直接的影响就是大模型推理的门槛降低。以前要跑大模型,要么用多卡分布式,要么用HBM,成本都很高。如果单芯片能堆出几百GB内存和TB/s级带宽,那单机跑大模型就变得可行了。对于中小团队来说,这意味着不用买一堆卡,一台机器就能搞定。
另外,近存计算能进一步降低推理延迟。数据在存储层附近就处理了一部分,主计算单元的压力小了,端到端延迟自然就降了。这对实时推理场景特别有价值。
6.2 对数据中心架构的影响
如果3D堆叠内存成熟了,数据中心的架构可能会变。现在的主流是计算和存储分离,通过网络连接。但网络带宽和延迟是瓶颈,尤其是跨节点通信。如果单节点内能堆出足够大的内存,很多原本需要跨节点的事情,单节点就能做完。这样网络压力小了,整体能效比也上去了。
当然,这并不意味着网络不重要了。超大规模训练还是需要多节点,但推理和中小规模训练可能会向单节点集中。
6.3 对芯片设计流程的影响
3D堆叠把芯片设计从2D推向了2.5D和3D。设计工具要支持多层协同设计,热仿真要和电仿真耦合,测试策略要重新设计。这对EDA工具链提出了新要求。目前主流EDA厂商都在补这块能力,但成熟度参差不齐。
对设计团队来说,这意味着需要补充新的技能:热管理、键合工艺、3D布局布线。以前做2D芯片的那套方法论,不能直接照搬。
7. 我个人在实际操作中的几点体会
折腾3D堆叠相关项目这几年,踩过的坑不少,有几个体会比较深。
第一,不要低估散热的复杂度。我早期做的一个堆叠方案,仿真的时候温度看着还行,实测直接超标20度。后来发现是仿真里没考虑键合界面的热阻,实际界面有微空隙,热阻比理想值高不少。所以仿真参数一定要留余量,实测之后再迭代。
第二,KGD测试要趁早做。我见过为了省测试成本,跳过KGD直接键合,结果良率惨不忍睹,最后算下来总成本反而更高。KGD测试虽然麻烦,但它是良率的保险绳。
第三,混合键合的工艺窗口很窄。对准精度、表面粗糙度、退火温度,每一个参数都要卡得很死。稍微偏一点,良率就掉。所以跟代工厂沟通的时候,一定要把工艺窗口问清楚,设计规则要严格遵守,不要想着打擦边球。
第四,近存计算的编程模型是长期挑战。硬件做出来了,软件跟不上,用户用不起来,那这个功能就是摆设。所以做架构设计的时候,就要考虑编译器怎么支持,编程接口怎么设计,不能等硬件流片了再想软件的事。
这个方向后续还可以往光互连和存算一体延伸。光互连能进一步降低层间通信功耗,存算一体能彻底消除数据搬运。这两个方向目前都有研究在推进,但离量产还有距离。如果你在做相关项目,建议先把混合键合和散热这两块吃透,这是3D堆叠的基本功。