誰是AI算力的未來之王?英偉達GPU vs 穀歌TPU
撰文|徐令予
摘要
英偉達 GPU 長期一統 AI 算力天下的局麵,正在麵臨嚴峻的挑戰。隨著穀歌張量處理器(TPU)的持續演進,一種不同於 CPU 和 GPU 的計算路線正在重新進入人們的視野。從硬件結構上看,TPU 的核心更接近於早期計算機係統結構中的“陣列處理器”,而非傳統意義上的通用處理器。它以高度規則的二維陣列和數據流驅動的計算方式,專門服務於大規模張量運算,這恰恰契合了當代人工智能的計算本質。
令人感慨的是,陣列處理器並非新生事物。早在上世紀八十年代初,我的碩士論文題目便是《微陣列機上平行快速沃爾什–阿達馬變換之實現》。未曾想到,當年被認為小眾甚至逐漸淡出的陣列機技術,會在四十年後的 AI 革命中重新煥發生機,並成為推動大模型計算的重要技術基礎。每念及此,不免唏噓,這也是我寫下這篇科普文章的緣由。
正文
在現代人工智能中,不論是大語言模型、圖像生成模型,還是視頻分析與多模態係統,它們的訓練和推理都依賴一種共同的計算:高階張量(4 階、5 階甚至更高階)的乘法運算。
注意力機製是張量運算,卷積是張量運算,Embedding lookup 隱含張量運算,序列模型和多頭機製依然是張量運算。深度學習本質上就是一台處理巨大張量的機器。
張量(Tensor)這個詞看起來“高級”,其實它與程序員日常使用的多維數組(Multidimensional Array)完全對應:
程序員在 C/C++、Python 中使用的 ndarray 或 tensor,其實就是張量的直接描述。
張量 = 有物理意義的多維數組
張量運算 = 多維數組之間的線性代數運算
深度學習的所有中間數據(激活)、模型參數(weights)、序列數據(tokens)、圖像、視頻,本質上都可以用多維數組來描述,因此也全部屬於張量。
一個非常關鍵的數學事實是:高階張量之間的乘法可以通過 reshape(重排維度)變換成矩陣乘法(GEMM)。
例如,一個 (A, B, C) 張量與一個 (C, D) 的矩陣相乘,可以 reshape 成:(A×B, C) × (C, D)
這就是訓練 Transformer 時常見的 Q·K?、AV、FFN 中發生的事情。
LLM 的主要運算量,最終都落在巨大的矩陣乘法上。因此,現代 AI 可以被概括為:深度學習 -> 高維張量運算 -> 超大規模矩陣乘法。
矩陣越大,運算量呈平方級增長。在較常見的模型規模下,注意力機製中的 Q 和 K 是四階張量,其規模大致為:16×2048×32×128。當 Q 與 K 參與乘法運算時,會通過 reshape 被轉化為一個非常大的矩陣乘法。其乘加次數大約落在:10^10~10^11之間,也就是數百億級別的乘加運算。因此一次完整訓練 step 的總計算量非常容易達到百萬億到千萬億級別的乘加運算。
而 CPU 的結構天生不適合:並行度低、SIMD 寬度有限、內存帶寬不足、執行計算的單元數量太少。即便堆疊數百顆 CPU,也無法在合理時間內訓練一個大模型。
GPU 的大量並行計算單元本來就是為計算機圖形處理中的大規模向量和矩陣運算而設計,因此在深度學習領域被迅速采用,成為算力加速器。
但 GPU 的設計目標是“通用並行處理器”,裏麵包含:通用 ALU、多級緩存、調度與控製邏輯、圖形相關電路、線程控製與寄存器管理。這些組件在深度學習中並不需要,它們對矩陣乘法的有效算力沒有什麽貢獻。
既然深度學習的核心隻有一件事:超大矩陣乘法,為什麽不造一台隻做這件事的“矩陣運算機”呢?穀歌給出的答案不是更複雜的控製邏輯,也不是更靈活的指令係統,而是一種結構極其規則、幾乎“笨拙”的計算陣列——二維脈動陣列(2D Systolic Array)。這是一種能夠高效執行矩陣乘法的專用硬件結構,它讓數據在規則陣列內流動和重複使用,從而以極低開銷完成超大型矩陣運算。

一、什麽是二維脈動陣列?
二維脈動陣列可以理解為一個由大量完全相同的計算單元按二維網格排列而成的陣列。在穀歌的 TPU 中,這個陣列的規模是 128×128,也就是 16384 個乘加單元(MAC)。每一個單元隻做一件事:接收兩個數,相乘,再把結果累加到本地寄存器中。
沒有複雜指令,沒有分支判斷,沒有線程調度,也沒有緩存一致性問題。整個陣列的結構高度規則和單一,幾乎像一塊“邏輯內存陣列”。
“脈動(systolic)”這個名字,來自於數據在陣列中流動的方式:數據像心髒跳動一樣,一拍一拍地在陣列中向前傳播,而計算就在傳播過程中自然完成。
二、矩陣是如何在陣列中“流動”的?
以最經典的矩陣乘法 C = A x B 為例:
隨著時鍾推進,A 的行和 B 的列在陣列中“交匯”,而所有 C_{ij} 的結果會在對應的位置上被逐步累加完成,最後從右下角輸出最終結果。這就是 “脈動”(systolic)名稱的由來:數據像心跳一樣在陣列內流動、碰撞、累加、輸出。
這裏的關鍵不在於“每個單元算得多快”,而在於:
• 所有單元同時工作
• 數據在陣列內部被反複重用
• 幾乎不需要反複訪問外部內存
一旦矩陣被送入陣列,計算就像流水線一樣持續進行,直到整塊結果自然“流”出來。矩陣不像是被“算出來”的,而是被“流”出來的。
三、為什麽TPU是128×128的陣列,而不是更大或更小?
128×128 並不是一個隨意的數字,而是工程上的利弊權衡,陣列太小,單次並行度不夠,外部數據搬運和控製開銷占比會變大;陣列太大,芯片麵積、時序收斂、功耗和良率都會迅速惡化。
現實中的大模型矩陣乘法,規模往往遠遠超過 TPU 單個陣列的大小,這顯然不可能一次性塞進一個 128×128 的二維陣列中完成。解決辦法並不複雜,核心思想隻有一句話:把超大矩陣切分成許多 128×128 的小矩陣塊(tile),然後讓二維陣列一次處理一個塊。TPU 並不是一次性計算整個超大矩陣,而是把它切成許多 128×128 的小塊,再用一個高度規則的二維陣列,把這些小塊像流水線一樣快速“流”完。
四、GPU 與 TPU 的對比

總之:
GPU 是“什麽都能算的並行處理器”,
TPU 是“把矩陣運算做到極致的專用部件”。
從硬件結構上看,TPU 的核心更接近於早期計算機體係結構中的“陣列處理器”。其實“陳列處理器”並非什麽高新科技,該技術的研發至少在半個世紀前已經開始。七十年代未,筆者在上海交通大學讀研,碩士論文的題目是:《微陣列機上平行快速沃爾什-阿達馬變換之實現》。論文還發表在《計算機學報》1984年第2期。

我們當時的陣列機隻有8x8個處理單元,每個單元隻有整數運算功能,速度與效率也非常有限。整個陣列機由幾十片中規模集成電路構成,而穀歌的128x128陣列整個集成在一個芯片上,技術的先進程度無法相比,但是整體的想法和思路還是一致的。幾十年前的陣列機研究終於在今天開花結果,它將為AI的發展作出巨大貢獻。每念及此,不勝唏噓,當年的上海交通大學的微型計算機教研室的老師們還是挺不錯的,他們對未來技術發展趨勢極具前瞻性。
謹以此文致敬我的交大老師們。
徐令予 作於南加州(2025年12月12日)