領域專用架構與加速器

領域專用架構(domain-specific architecture, DSA)

想像一間擺滿萬用主廚刀的廚房。一把好刀幾乎什麼都能做——切、片、削——在你還不知道下一道菜是什麼時,這非常棒。但如果你的餐廳整天只供應壽司,一整排專用壽司刀具會比那把萬用刀切得更利、做得更快,也更不累手。領域專用架構就是這樣打造的硬體:它不是一顆什麼程式都跑得還可以的通用 CPU,而是一顆圍繞某個狹窄領域(深度學習、影音、網路)的模式塑形出來的處理器,於是它把那一種工作跑得遠快、耗能遠少。

具體來說,DSA 並不是一種全新的運算方式——它是把 CPU 的電晶體重新花用。架構師研究目標工作負載,發現例如深度學習幾乎全是對低精度數字做矩陣乘法,記憶體存取又非常可預測、呈串流式。於是他們把該領域不需要的東西拆掉(深度推測、巨大的亂序視窗、大型通用快取),把省下的矽倒進它真正需要的地方:數百個小型乘加單元、以軟體管理的暫存記憶體(scratchpad)取代自動快取、以及把運算精度收窄到 int8 或 bfloat16。結果是一台極擅長某一件事、卻對其他大多數事一無是處的機器。Google 的 TPU、影音編解碼區塊、加密引擎全都是 DSA。

誠實的說法:DSA 在效率上取勝,正是因為它放棄了通用性。這是一筆真實的取捨,不是免費午餐。只有當該領域夠大、夠穩定,足以攤平龐大的設計與驗證成本,且工作負載確實具備設計所假設的平行性與對低精度的容忍度時,它才划算。DSA 之所以成為後摩爾、後 Dennard 時代的核心故事,是因為通用晶片不再自動變快——於是繼續取得效能的唯一辦法就是專用化。

一顆通用 CPU 在跑神經網路某一層時,可能把大部分能量花在提取指令、預測分支、搬動通用快取上——這些開銷與真正的乘法毫無關係。針對同一層的 DSA 把這些開銷移除:它讓資料串流穿過一格格乘加單元,每做一個控制決策就完成數千個有用的算術運算。

DSA 把 CPU 的矽重新花用:更少的控制開銷、遠多的算術,只為某個選定的領域。

DSA 不是「更好的 CPU」——除了它的目標領域以外,它在每件事上都是更差的 CPU。在領域之外,它可能比一顆便宜的通用處理器還慢,因此它必須在異質系統中與一顆通用處理器搭配,而非取代它。

又稱
DSAdomain-specific processor領域專用處理器