三维集成与芯粒

芯粒(chiplet)

几十年来,人们的本能做法都是把所有东西塞进一整块大硅片里——也就是单片芯片(monolithic)。芯粒(chiplet)把这个本能反了过来:你把设计拆成几块小小的、各管一摊的裸片(die)——这里放一簇 CPU 核,那里放一块 I/O,再来一块缓存——然后把它们装进同一个封装里,彼此之间连得极其紧密,工作起来几乎就像一颗芯片。可以把它想成:从用一整块大理石雕一尊像,改成用乐高积木来搭——与其押注在一个又大又冒险的部件上,不如把几块更小、更成熟可靠的部件拼到一起。

图什么呢?最大的理由是良率。缺陷会随机落在晶圆上的某个位置,所以裸片越大,越容易被某个意外瑕疵毁掉整片——而在最先进的工艺节点上,扔掉一块巨大的裸片代价高得惊人。把这块裸片切成四小块,单个缺陷就只毁掉其中一小块;好的那几块(known-good die,已知合格裸片)留下,便宜的废片扔掉就行。芯粒还让你能混搭节点:渴求最新、最贵工艺的计算核心可以用最尖端的节点,而几乎不靠缩小受益的 I/O 和模拟模块则留在更便宜、更成熟的节点上。而且因为每块芯粒都是自成一体、可复用的积木,你可以把同一套核心组合既放进一颗笔记本电脑芯片,也放进一颗 64 核服务器芯片,而不必从头重新设计。

代价在于那道接缝。同一块单片裸片上的两个晶体管,靠几微米长的导线对话;而两块芯粒之间,信号必须横跨封装,这比留在片内要多花一些能量、多担一点延迟。所以芯粒要依赖高密度封装——并排坐在硅中介层(interposer)上,或者叠起来——再加上快速、标准化的裸片间(die-to-die)互连,好让这道边界几乎看不出来。UCIe 就是正在兴起的开放标准,让来自不同厂商、不同节点的芯粒能够拼接起来,就像当年 USB 统一各种外设那样。AMD 的 Ryzen 和 EPYC(计算裸片与 I/O 裸片分开)、Intel 的分块(tiled)处理器、苹果的双裸片 Ultra 系列,都是已经大批量出货的芯粒设计。

MONOLITHIC DIE            CHIPLET PACKAGE
+-------------------+      +-----------------------------+
|                   |      | [CPU] [CPU]  [ I/O ]  [cache]|
|  cores + I/O +    |      |  die   die    die      die  |
|  cache + analog   |      |  ===========================  <- die-to-die links
|  ALL on one node  |      |  ====== interposer =========  |
|  one defect = lose|      +-----------------------------+
|  the whole thing  |       small dies, each maybe a
+-------------------+       DIFFERENT process node

一整块大的单片裸片会让整颗芯片因一个缺陷而报废,并把每个模块都锁死在同一个工艺节点上;把它拆成中介层上的多块芯粒,则能提高良率,并让每块裸片用上最适合自己的节点。

芯粒用单颗裸片的简单性换来更好的经济性,所以前沿工作就是把裸片间的跨越做得足够便宜——无论是能量还是延迟——让整个封装表现得就像一颗芯片。

又称
chipletsdie-to-die integration