小晶片/晶粒(a chiplet)
想像你要造一台巨大又複雜的機器。你可以試著用一整塊巨大的大理石把整件東西雕出來——任何一處有瑕疵,整塊就毀了。或者你可以做許多較小、各自測試過的零件再組裝起來,把任何做壞的零件換掉。小晶片就是處理器的第二種策略:與其造一顆什麼都做的巨大單體晶粒,不如造好幾顆較小的晶粒——小晶片——每顆負責工作的一部分,再把它們在單一封裝裡接在一起,彷彿是一顆晶片。
這在後摩爾時代之所以行得通,原因在此。造一顆毫無瑕疵的矽晶粒,其成本與難度隨面積急劇上升,因為隨機的製造缺陷散布在整片晶圓上;單一缺陷就能毀掉一整顆大晶粒,所以晶粒越大,良率(合格晶粒的比例)就越低。四顆小晶片各自無瑕的機會,遠高於一顆是它們四倍大的晶粒,而你只需要丟掉壞掉的那幾顆小的。小晶片也讓你能混搭:用最新、最貴的製程造運算核心,但用較舊、較便宜的製程造輸入輸出與記憶體介面,因為它們從縮小製程中得到的好處沒那麼大。你甚至能像樂高積木一樣,把同一款小晶片重複用在許多產品上。
這種樂高做法的代價是:小晶片之間必須跨越一道縫隙互相溝通,而在晶粒之間穿越,比待在同一塊矽上更慢、更耗電。所以底下的連接技術——一個中介層,或一個用非常密集的短連線把小晶片接起來的先進封裝——就變得至關重要。小晶片是這個問題的一個領先答案:「當單一晶粒再也裝不下我們想要的一切,或再也無法以我們需要的尺寸便宜地造出來時,我們該怎麼辦?」它們就是去整合化:把巨大的單體拆成可重複使用、各自最佳化的部件。
一顆現代伺服器 CPU 可能由八顆相同的運算小晶片(每顆含數個核心)外加一顆較大、負責記憶體與 PCI Express 的輸入輸出小晶片組成。運算小晶片用最新製程;輸入輸出小晶片用較舊、較便宜的製程。如果製造時某個缺陷毀掉一顆運算小晶片,被丟棄的只有那一小片——而不是一整顆 64 核心的巨大單體。
把一顆大晶片拆成較小、各自測試的小晶片,提升良率,也讓每個部件用上最適合的製程。
小晶片不是免費的午餐。晶粒之間的通訊比待在同一晶粒上更慢、更耗能,所以小晶片設計是用製造良率與彈性,去換取跨晶粒延遲,以及先進封裝的複雜度。