領域專用架構與加速器

硬體加速器(hardware accelerator)

假設你每年都手算報稅。你可以繼續自己算,也可以買一台專用計算機,它正好幫你算你需要的那幾欄數字,瞬間完成。計算機並沒有取代你——你仍負責整理工作——但你把繁重的計算交給它,再拿回結果。硬體加速器就是電腦的那台專用計算機:一塊獨立的矽,主 CPU 把某項特定的繁重任務卸載給它,因為這加速器在那一件事上比 CPU 快得多、耗能也便宜得多。

具體來說,加速器坐在 CPU 旁邊,由 CPU 驅動。CPU 先在記憶體裡備好資料與參數,告訴加速器「開始」(常是寫一個控制暫存器),然後要嘛等待、要嘛趁加速器運行時去做別的事。加速器做完後會發出中斷或設定狀態旗標,CPU 再收回結果。這加速器可能是 GPU、神經網路單元、影片編碼器、加密引擎,或網路/儲存卸載晶片。使它成為「加速器」而非僅僅「另一顆處理器」的,是它的專用化:它的資料路徑圍繞單一任務塑形,所以它擁有多得多的對口算術單元,以及少得多的通用開銷。

誠實的重點是:只有當被卸載的工作大到足以蓋過把資料送過去再送回來的成本時,加速器才有幫助。把輸入搬到加速器的記憶體、啟動它、再把結果拷回來,全都要花時間與能量。若任務很小,這些啟動開銷會遠遠蓋過加速,CPU 自己做還更快。加速器在龐大、重複、平行的工作上發光;對於小型、一次性、充滿分支的工作則格格不入。

加密一個 4 GB 的磁碟映像:一段 CPU 迴圈可能要好幾秒,但晶片裡專用的 AES 加密引擎能以快得多的速度串流處理,同時 CPU 還能去做別的事。相對地,加密一個短密碼太小了,呼叫引擎的成本比直接讓 CPU 做還高。

卸載只有在任務大到足以攤平交接成本時才划算。

加速器並不會讓電腦整體變快——它只加速它被打造來做的那個特定工作負載,而真正的瓶頸往往變成餵資料給它,而不是運算本身。

又称
acceleratoroffload engine加速器