为什么要把芯片拆开?
在这之下的每一级台阶,都是在跟同一堵墙较劲。当 登纳德缩放 在 2006 年前后终结,功耗就不再随之缩小,于是我们没法再单纯靠拉高时钟来提速了。随着 互连缩放 陷入停滞,导线相对于晶体管变得越来越慢。而一个新 工艺节点 的成本不断攀升,即便 摩尔定律 还在勉力维持。几十年来,面对"我需要更多芯片"的本能答案始终如一:画一块更大的单一裸片——一整块单片硅,把 CPU 内核、缓存、I/O、模拟电路,统统装进去。本指南讲的就是这种本能为什么终于失灵,以及整个行业转向的那个替代方案。
这个替代方案就是解聚:把一整块大 集成电路 的各项功能拆分到几块较小的裸片上——也就是芯粒——再在同一个封装内把它们紧密互连起来,让它们在电气上、在软件看来,仍然表现得像一个单一的产品。可以把它想成铸造一整块巨大而毫无瑕疵的发动机缸体,和用一套做工精良的模块拼装起来之间的区别。这些模块更容易制造、更容易测试,而且——至关重要——你可以换掉其中一个,而不必把整块重铸一遍。本指南余下的部分,就是逐个限制地讲清这笔权衡背后的*原因*。
良率与大裸片的成本
下面这个限制,让解聚成为一种经济上的*必然*,而不只是个不错的点子。当你光刻一片晶圆时,会有随机缺陷落在上面——一颗游离的颗粒、光刻 中的一处瑕疵、金属层 上的一个坏点。这些缺陷大致均匀地散布在整片晶圆的面积上。所以每块裸片越大,至少一个缺陷落*进*它里面、把它报废的概率就越高。良率随裸片面积增大而下降——而且下降得比线性还快,因为面积本身是随裸片边长的平方增长的。
把这件事反过来看,就得到了芯粒的核心洞见:把一块大裸片切成四块小的,那么一个缺陷现在只会毁掉它落进去的*那一块*小裸片,而不是整个产品。另外三个完好的邻居都能存活。你在晶圆的圆形边缘也浪费更少的硅——大块的矩形裸片在那里往往会被切掉。同样的缺陷密度,切得更细,就把一个昂贵的低良率怪物,变成了好几块高良率的小块——而良率,正是决定一块芯片成本的大头。
ONE BIG MONOLITHIC DIE SAME FUNCTION, SPLIT INTO CHIPLETS
(one defect kills the lot) (a defect kills only its own tile)
+-----------------------------+ +---------+ +---------+
| x (defect) | | CPU x | | CPU | x = defect
| CPU CPU CPU CPU | | (scrap) | | (good) |
| | +---------+ +---------+
| CACHE I/O | --> +---------+ +---------+
| | | CACHE | | I/O |
| ANALOG MEM-CTRL | | (good) | | (good) |
+-----------------------------+ +---------+ +---------+
big area -> low yield, all-or-nothing small dies -> high yield, lose 1 tile
[ ============ one package: chiplets sit side-by-side ============ ]已知良好裸片
拆成小裸片,只有在你能*赶在*花钱组装它们*之前*就把坏的扔掉时,才划算。这就是已知良好裸片的思路:每一块芯粒都先单独经过完整测试——通电、运行、在不同电压和温度下筛查——并在被放进封装*之前*就被认定为工作正常。你只从一桶证实合格的零件里去组装。
为什么这件事要紧,是因为算术很残酷。假设你把四块未测试的裸片键合进一个封装,而其中只要有一块有缺陷——整个昂贵的组装件,包括那三块完好的裸片和代价高昂的封装工序,全都报废。你堆叠或放置的裸片越多,这件事就越凶残:良率是相乘的。有了 已知良好裸片 测试,你就打破了这条链条,因为进入组装环节的每一个零件都已经通过了测试。这也正是为什么 先进封装 与芯粒理念密不可分——封装现在成了把已测裸片接合在一起的地方,所以测试这一步必须先行。
- 在各自的晶圆上制造每一块芯粒,用最适合它的那套工艺。
- 逐块单独测试每一片裸片——在额定速度下、跨越各种电压和温度——并标记出通过的那些。
- 只用已知良好裸片来组装封装,让有缺陷的零件永远到不了那道代价高昂的键合工序。
- 再把组装好的多裸片封装作为一个整体来测试,以抓出组装本身引入的任何问题。
混用节点
解聚解锁了单片裸片永远做不到的一件事:每一块芯粒都可以建在最适合它的那个工艺节点上。 这就是 异构集成——在一个封装里混用不同的技术。在单一裸片上,*所有东西*都被迫挤到同一个节点上,即便有些部分从中根本得不到任何好处。
而且很多部分确实得不到任何好处。快速逻辑真正从最新、最贵的节点中获益——它的 晶体管 更小、开关更快,无论它们是 FinFET 还是更新的 环绕栅极 纳米片。但大块 SRAM 缓存几乎已经停止缩小,模拟和 I/O 电路在更老、更便宜、更成熟的节点上往往工作得*更好*,而一个基于 MOSFET 的电源或射频模块,根本没有理由去追那个最前沿。把它们统统逼到一块单一的前沿裸片上,意味着为那些根本不需要它的电路,付出每平方毫米最高的价钱。把它们拆成芯粒,你就能把密集逻辑放在最新的 CMOS 节点上,同时把缓存、模拟和 I/O 留在成熟工艺上——逐个模块,各取所宜。
HETEROGENEOUS PACKAGE: each chiplet on its best-fit node
+-------------+ +-------------+ +-------------+
| COMPUTE | | COMPUTE | | I/O + |
| (logic) | | (logic) | | ANALOG |
| leading-edge| | leading-edge| | mature node |
| GAA node | | GAA node | | (cheaper) |
+-------------+ +-------------+ +-------------+
| | |
+-----------------------------------------------+
| SRAM CACHE chiplet (node that barely shrinks)|
+-----------------------------------------------+
pay top dollar only where it actually buys speedUCIe:一种标准插槽
一旦一个产品变成好几块芯粒,一个新问题就冒出来了:*它们彼此怎么对话?* 多年来,每家厂商都发明自己的私有裸片间接口,这意味着来自不同公司的芯粒没法混用。这正是 UCIe——通用芯粒互连快线(Universal Chiplet Interconnect Express)——着手要消除的限制。它是一套面向裸片间连接的开放、行业标准规范:电气信号、物理凸点布局、以及协议,全都被共同定义下来。
有个比喻能抓住它的精髓:在 UCIe 出现之前,连接两块芯粒就像用一根你自己设计、自己焊的定制线缆去接两台设备。UCIe 把这变成了一种标准插槽——一种 USB 式的约定,任何合规的芯粒都能插进任何合规的邻居。封装内部一条短而密集的连接,取代了旧世界里长长的电路板走线,于是两块芯粒能以接近片上的带宽、只用一小部分能量来交换数据。在物理上,这些连接可以走一块硅 中介层,也可以靠 混合键合 面对面接合——两块裸片以铜焊盘对铜焊盘的方式键合,完全不用焊锡凸点。
芯粒经济
把这些拼到一起,芯粒就不再只是一种封装上的把戏,而成了一种*商业模式*。当裸片做得小、分开测试、跨节点混搭、并通过标准插槽接合,一块芯粒就变成了一个可复用的积木块——像一块乐高,而不是一次性的铸件。一个设计团队可以只造一次计算芯粒,再把它丢进十几种不同的产品里,每次都给它配上不同的 I/O 或内存芯粒,而不必为每一个变体都重新流片一块全新的单片裸片。
这也是 领域专用架构 的天然归宿:一块 CPU 芯粒、一块 GPU/NPU 加速器芯粒、一块 I/O 芯粒,各自都可以交给最擅长那项工作的人去设计,再混搭组合成一个定制产品——成为设计单元的是封装,而不是裸片。这呼应了你在下一级台阶遇到过的同一种模块化逻辑:在那里,布局布线 流程用预先造好的 标准单元 拼装出一块芯片;芯粒只不过是把这个想法往上提了一级——从裸片内部的单元,提到封装内部的整块裸片。