近日開發人員道格·約翰遜透過反向工程發現蘋果M1處理器中存在名為AMX的協處理器,它不同於M1片上系統(SoC)中的神經網路引擎,甚至沒有出現在蘋果的各種宣傳資料當中。
這個神秘的AMX協處理器可以高效率地執行矩陣運算(包括加、減、縮放和乘積操作),加速諸如影象處理、機器學習、語音和手寫識別、人臉識別、資料壓縮、音訊和影片處理等任務。這或許就是M1能夠在一些效能測試中擊敗酷睿i9等x86處理器的原因。
AMX協處理器同大家熟知的神經網路引擎有一定的區別,GPU和神經網路引擎屬於加速器範疇。CPU、協處理器和加速器可以透過共享資料匯流排交換資料,CPU通常控制記憶體訪問,而加速器通常具有自己的專用記憶體。加速器的這種架構可以在大規模計算中得到回報,但由於協調等方面的原因,對於較小的任務開銷太高。
協處理器則不同,它可以監視從記憶體讀取到CPU的指令流,並對特定指令做出反應,與此同時CPU會忽略這些指令,或者幫助協處理器處理這些指令,延遲更低。
協處理器執行的指令可以放在常規程式碼中,而不是單獨的記憶體緩衝區中。對於涉及矩陣處理器的較小工作負載,AMX協處理器的效率將優於神經網路引擎。
當然要實現以上目標,蘋果需要在微處理器的指令集架構中定義新的特定指令,使協處理器和CPU緊密整合。蘋果並未公開AMX協處理器,而是為矩陣相關的資料計算提供了一些特殊的庫或框架,比如圖形格式轉換和處理的vImage、線性代數行業標準BLAS、用於執行神經網路和訓練的BNNS、用於訊號處理的vDSP、用於求解線性方程組等運算的LAPACK。蘋果向開發者提供這些庫或框架,而無需關心它的底層實現方法。根據nod.ai的測試結果證明,蘋果AMX協處理器執行矩陣乘法運算的效率比ARM v8.6的標準NEON指令高出約2倍,說明蘋果的自定義AMX協處理器在機器學習和高效能計算工作中極具優勢。
無獨有偶,索尼PlayStation 5的片上處理器(SoC)也使用了大量定製設計,在CPU部分仍採用x86架構ZEN2核心的同時,RDNA2.0架構的GPU進行了深度定製以提供更強效能。在我們B站影片賬號上也對此有過介紹:https://www.bilibili.com/video/BV1bg4y1873K
Geometry Engine為開發者提供了更好的多邊形控制能力和地形隱面消除能力,Intersection Engine主要負責光線追蹤的硬體加速處理,實現空間反射、環境光遮蔽、陰影畫、全域性光照等功能。更具體的細節需要索尼方面逐步解密才可瞭解。
SoC雖然行業中早已在定製晶片中採用,但由於商業保密的原因,這方面公開資料很少。作為電腦玩家,如果僅以DIY圈子內所瞭解的公開資訊去看待這些定製晶片,往往會發現很多現象無法解釋,進而得到錯誤結論,這是需要注意的。