小晶片(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
一整塊大的單晶片晶粒會讓整顆晶片因一個缺陷而報廢,並把每個模組都鎖死在同一個製程節點上;把它拆成中介層上的多塊小晶片,則能提高良率,並讓每塊晶粒用上最適合自己的節點。
小晶片用單顆晶粒的簡單性換來更好的經濟性,所以前沿工作就是把晶粒間的跨越做得足夠便宜——無論是能量還是延遲——讓整個封裝表現得就像一顆晶片。