前沿與後摩爾時代

異質系統(a heterogeneous system)

想想一間經營良好的廚房。你不會用十個一模一樣的通才來配置它;你想要一個快手的爐前廚師處理簡單訂單、一個糕點專家做精細的活、一座強力烤箱來烘焙、一台急速冷凍機來冷卻——每樣工具都在自己的本行上出色。異質系統就是用同樣方式打造的電腦:它不是用許多一模一樣的通用核心,而是在一台機器上結合好幾種不同的處理單元,每一種為一種不同的工作而專門化,再把每件任務交給最擅長處理它的那個單元。這是從你的手機到超級電腦、現代電腦的主流形態。

具體而言,一顆手機晶片——一個系統單晶片——本身就已深度異質:它裝著通用 CPU 核心(給一般程式碼與控制)、一顆 GPU(給圖形與平行數學)、一顆神經處理單元或其他加速器(給機器學習)、一顆影像訊號處理器(給相機)、視訊編碼器,還有更多,全在一顆晶粒上。連 CPU 核心往往也是異質的:幾個大而耗電的核心應付吃重的爆發,加上數個小而省電的核心處理輕量的背景工作,讓系統在每個當下只用上剛好夠的力氣。藝術在於調度——決定什麼跑在哪裡,並在單元之間搬移資料而不讓那搬移吃掉好處。

為什麼異質性是後摩爾時代的核心趨勢,而不只是一個選項?因為一旦單一通用核心再也無法被大幅加速,繼續進步的辦法就是專業化——而專業化的單元只有在你把它們結合起來時才有幫助,因為沒有哪一個什麼都做。機器學習是拉著這件事往前走的主流工作負載:對 AI 運算的龐大需求,已讓 GPU 與張量處理單元這類加速器變得核心,晶片也越來越環繞它們來設計。誠實的難處是:異質系統難以良好地編程與排程——只有當對的工作真的落在對的單元上、並且尊重 Amdahl 定律時,加速才是真的,因為最慢的那個必要步驟仍框住了整件工作。

當你的手機拍一張照片時,相機的影像訊號處理器把原始感測器資料清理乾淨,GPU 與一顆神經加速器施加各種強化並辨識臉孔,CPU 核心跑應用程式的邏輯,若你正在錄影則由視訊編碼器把它打包——全在一顆異質的系統單晶片上,每個單元做著它最快、最省電的那件工作。

一台機器上有許多專用單元,每個處理它最擅長的事——這是現代電腦的主流形態。

異質性不是免費的效能。只有當對的工作抵達對的單元、且單元之間的資料搬移沒有吃掉省下的好處時,增益才是真的——而且 Amdahl 定律仍然框住它,因為最慢的那個必要步驟框住了整件任務。

又称
heterogeneous computingheterogeneous architecture異質系統異質運算異質架構