流式多處理器
3秒看懂
流式多處理器(Streaming Multiprocessor,SM)是 NVIDIA GPU 架構中的基本計算單元。每個 GPU 晶片由數十乃至上百個 SM 構成,它們共享 L2 快取與視訊記憶體控制器,各自獨立排程成千上萬個執行緒,並內建了大量算術邏輯單元(CUDA 核心)、Tensor Core(張量核心)、載入/儲存單元、暫存器檔案及片上共享記憶體。SM 決定了 GPU 的並行吞吐上限,是 AI 訓練與推論算力的物理載體。
3分鐘產業解釋
在現代 AI 基礎設施中,無論是千億引數大型模型的分散式訓練,還是資料中心的低延遲推論,其底層算力本質上都來自一個個 SM 內的大量計算單元。NVIDIA GPU 之所以成為 AI 時代的標準硬體,正是因為其 SM 架構通過獨特的“執行緒束(warp)”排程機制,能夠用一個指令控制 32 個執行緒同時執行,再疊加專用加速器(如 Tensor Core),大幅提升矩陣乘法的效率。一次矩陣運算請求,通過 CUDA 程式設計模型下發到大量 SM 上並行處理,SM 內部的排程器、暫存器堆和共享記憶體協同工作,將視訊記憶體頻寬壓力降至最低。
因此,SM 的數量、內部單元配置和執行頻率直接決定了 GPU 的每秒浮點運算次數(FLOPS)與張量算力。追蹤 SM 架構演進,對判斷 AI 晶片的能效比、評估投資時機與折舊風險至關重要。
15分鐘專家深入
每個 SM 內部擁有一套完整的指令排程與執行管道。典型組成(以通用架構描述,具體代際有差異)包括:
- 執行緒束排程器(Warp Scheduler):一個 SM 內通常有多個排程器,每個排程器每時鐘週期可發射一條指令到一個 32 執行緒的執行緒束。
- 執行單元:若干 CUDA 核心(支援 FP32/INT32 運算)、特殊功能單元(SFU,負責超越函式)、載入/儲存(LD/ST)單元,以及後續加入的 Tensor Core(矩陣乘加器)和 RT Core(光線追蹤核心)。
- 暫存器檔案(Register File):SM 上所有執行緒的私有暫存器,容量在 Fermi 架構中為 32K 個 32 位暫存器,Kepler 及之後主流架構中通常為 64K 個 32 位暫存器(Blackwell 代際暫未見公開的倍數變動確認),分配給活躍執行緒束。執行緒佔用率(occupancy)受限於暫存器數量和共享記憶體大小。
- 共享記憶體 / L1 快取:可程式設計的快取記憶體,用於執行緒塊內資料交換,空間與 L1 快取統一設計,容量通常在 64 KB 至 256 KB 可配置。
- 指令快取與常量快取:用於暫存指令和廣播常量。
執行緒以 32 個為一組 warp 執行,SM 通過多 warp 併發隱藏訪存延遲。當某 warp 等待視訊記憶體資料時,排程器立即切換到另一個就緒 warp,從而實現接近峰值算力的實際吞吐。在 AI 負載中,Tensor Core 佔據主導。以典型的 MMA(矩陣乘加)指令為例,SM 在收到指令後,Tensor Core 單元讀取三個矩陣(A、B、C)的資料,在一個時鐘週期內執行外積操作並累加,輸出碎片矩陣。整個 SM 的多個 Tensor Core 可以協同執行大規模矩陣分塊計算,實現數倍於單純 CUDA 核心的浮點吞吐。
技術原理(最深)
SM 微架構與並行執行緒執行模型
SM 的工作機制可以抽象為“多執行緒前端、單指令多資料通路、分層儲存”的三段式:
┌──────────────────────[SM]──────────────────────┐
│ I-Cache │
│ Warp Scheduler 0 Warp Scheduler 1 ... │
│ ┌─────┐ ┌─────┐ │
│ │Dispatch Unit│ │Dispatch Unit│ │
│ └──┬──┘ └──┬──┘ │
│ │ │ │
│ ┌───▼────────────┐ ┌───▼────────────┐ │
│ │Register File │ │Register File │ ... │
│ │ (warp 0..N) │ │(warp 0..N) │ │
│ └──────┬─────────┘ └──────┬─────────┘ │
│ │ │ │
│ ┌──────▼───┐ ┌────▼────┐ │
│ │CUDA Cores│ ... │Tensor Core│ ... │
│ │(FP32/INT)│ │(MMA) │ │
│ └────┬─────┘ └───┬───────┘ │
│ │ │ │
│ ┌────▼───────────────────▼───┐ │
│ │ Shared Memory / L1 Cache │ │
│ └───────────────────────────┘ │
└───────────────────────────────────────────────┘
│
L2 Cache / Memory Controller
關鍵引數與流程(以下為通用定性描述,具體數字隨架構變化,未針對某代確認):
- 每個 SM 的 warp 排程器數量:通常為 4 個(多數架構),每個排程器每週期可發射 1 條指令。
- 每 warp 固定 32 執行緒,一個執行緒塊(block)常包含多個 warp(如 256 執行緒 = 8 個 warp)。
- 每個時鐘週期,排程器選擇一個就緒 warp,將其下一條指令的運算元從暫存器堆讀取,送入對應執行單元流水線。
- 對於 CUDA 核心執行標準算術:流水線深度約 8-12 級,結果寫回暫存器。
- 對於 Tensor Core:排程器發射 HMMA(Half-precision Matrix Multiply and Accumulate)或 IMMA 指令,權重矩陣駐留在暫存器或共享記憶體中,Tensor Core 對 16×16×16 或 32×8×16 等固定尺寸子矩陣執行乘累加,輸出精度通常是 FP16/FP32 或 INT32。
- SM 內共享記憶體可配置為較高的 L1 快取比例(如充分利用 Shared Memory 做資料重用),以降低全域性視訊記憶體訪問壓力;常與 L2 快取協同形成層級。
佔用率制約公式(估算):
最大活躍 warp 數 ≤ min( floor(暫存器容量/(每執行緒暫存器數×每 block 執行緒數)) × (每 block 執行緒數/32), floor(共享記憶體容量/(每 block 共享記憶體使用量)) × (每 block 執行緒數/32), 每 SM 最大 warp 限制 )
佔用率直接決定 SM 能否有效隱藏延遲,是核心調優核心指標。
SIMT 與張量並行對映:Megatron-LM 風格的張量並行將模型層內參數切分到多個 GPU,每個 GPU 上的 SM 負責部分矩陣乘加,然後通過 NVLink 或 NVSwitch 進行 AllReduce 或 ReduceScatter 通訊。MoE 模型的 token dispatch 則可能用到 All-to-All 集體通訊,此時 SM 負責路由計算與專家啟用。SM 內部的 Tensor Core 負責大部分 FLOP,CUDA 核心處理殘差、標準化等非矩陣乘操作。
技術演進史
- G80 / Tesla 架構(2006):首次提出“流式多處理器”概念,統一著色器設計,SM 內含 8 個流處理器(SP),支援 CUDA。
- Fermi(2010):SM 大幅強化,引入可配置的 L1 快取 / 共享記憶體,增加雙 warp 排程器,支援併發 kernel 執行。
- Kepler(2012):引入“SMX”設計,大幅增加 CUDA 核心數量,每個 SM 內包含 192 個單精度核心,採用四 warp 排程器,增加了 GPUDirect 等。
- Maxwell(2014):改稱“SMM”,將 CUDA 核心分解為更小的處理塊,提升能效;每個 SMM 含 128 個 CUDA 核心,仍保留 4 個 warp 排程器(每個處理塊 1 個),強化能效比。
- Pascal(2016):SM 繼續沿用 Maxwell 的高效設計,加入 HBMM2 支援,支援 NVLink,統一記憶體。SM 內 CUDA 核心數量約 64-128(因晶片等級而異),引入 FP16 計算能力。
- Volta(2017):SM 迎來重大變化,首次整合第一代 Tensor Core,專門加速矩陣乘;SM 分為 4 個處理塊,每塊含 16 個 FP32 核心、16 個 INT32 核心。
- Turing(2018):SM 加入 RT Core(光線追蹤),Tensor Core 升級至第二代,支援 INT8、INT4 推論;SM 引入併發執行浮點和整數的獨立資料通路。
- Ampere(2020):第三代 Tensor Core,支援 TF32、BF16;SM 內 CUDA 核心設計更靈活,可在一個週期內執行 2 次 FP32 或一次 FP32 + 一次 INT32;共享記憶體和 L1 快取容量翻倍(架構允許配置至 192 KB 或更高)。
- Hopper(2022):第四代 Tensor Core,引入 Transformer Engine(可動態管理 FP8 精度)、DPX 指令。SM 內包含更多 FP32 核心和專用記憶體加速,總 SM 數量和算力大幅提升。
- Blackwell(2024):進一步擴充套件 SM 規模,支援 FP4、第二代 Transformer Engine、增強的 NVLink,具體 SM 內部配置細節[未檢索到公開白皮書確認數字,據 NVIDIA 釋出資料定性為史上最強單 SM 算力]。
注:上述各代 SM 中 CUDA 核心、Tensor Core 等具體核心數量因晶片型號存在變化,以上僅描述代際特徵趨勢,不鎖定某具體晶片的精確數字。
技術路線對比(量化表)
(因搜尋受限,下表中數字均為基於公開架構文件的大致區間或定性描述,個別代際未驗證的精確值標註為“估算/不公開”)
| 架構 | 代表晶片 | SM 內 CUDA 核心數區間 | Tensor Core 代際 / 精度 | 共享記憶體 / L1 | 特殊硬體 | 工藝節點(代工廠) |
|---|---|---|---|---|---|---|
| Volta | V100 | ~64 FP32 | 第1代 (FP16/FP32) | 128 KB 可配置 | - | 12nm FFN (台積電) |
| Turing | T4 / RTX 20 | ~64 FP32 + 64 INT32 | 第2代 (INT8/FP16) | 96 KB 可配置 | RT Core 第1代 | 12nm FFN (台積電) |
| Ampere | A100 / RTX 30 | ~64 FP32 + 64 INT32 | 第3代 (TF32/BF16/INT8) | 192 KB 可配置 | 結構稀疏 | 7nm N7 (台積電) |
| Hopper | H100 | ~128 FP32 + 64 INT32[估算] | 第4代 (FP8/FP16/BF16/FP32) | 256 KB 可配置 | Transformer Engine, DPX | 4nm (台積電) |
| Blackwell | B100/B200 | [未充分揭露,規模顯著增大] | 第5代 (FP4/FP8) | [未檢索] | 第二代 Transformer Engine | 4nm / 更先進 (台積電) |
說明:AMD 的對等概念為計算單元(Compute Unit,CU),同樣包含流處理器和矩陣核心,但在排程模型和專用單元上存在差異,此處不做詳細量化對比。
上下游
- 上游:
- 晶圓製造 / 先進封裝:台積電(N7/N4/N3 等 FinFET 製程,未來轉向 GAA/nanosheet 的 N2)、三星(個別低功耗型號),封裝方案如 CoWoS-S/L/R 決定 SM 叢集與 HBM 互連密度。
- EDA 和 IP:Synopsys、Cadence,為 GPU 物理設計和驗證提供工具。
- 下游:
- GPU 板卡製造商:富士康、廣達、英業達等伺服器 ODM/OEM,將包含 SM 的 GPU 晶片整合至加速卡。
- AI 架構與編譯器:CUDA 工具鏈、PyTorch/TensorFlow 及時編譯器,將模型運算元對映為 SM 上的執行緒塊與 warp 排程。
- 雲端服務商:AWS、Azure、GCP 等採購 GPU 例項,提供訓練與推論算力,最終服務於各個行業的 AI 應用。
關鍵指標
- 每 SM 最大理論吞吐量:定義為核心組合(CUDA + Tensor Core)在不同資料精度下的 FLOPS。例如,每 SM 每時鐘週期可完成若干次浮點或整數運算,乘以 SM 主頻即為單 SM 算力。(具體數字依賴架構,未作逐個確認)
- 佔用率(Occupancy):活躍 warp 數與 SM 最大支援 warp 數的比值,直接影響延遲隱藏能力。
- 共享記憶體頻寬與時延:共享記憶體讀寫頻寬通常接近暫存器,是實現 softmax、FlashAttention 等運算元高效計算的關鍵。
- Tensor Core 吞吐效率:實際算力發揮程度,受制於記憶體頻寬、資料版面配置和指令流水。通常以 TOPS(INT8)或 TFLOPS(FP16/BF16/FP8)衡量。
- SM 數量與時脈頻率:由 GPU 規格決定,A100 擁有 108 SM,H100 擁有 132 SM 等(此為公開規格,但為寫本文無檢索查驗,以實際產品白皮書為準)。頻率一般為 1.0–2.0 GHz 區間。
供需與市場資料
由於未即時檢索,無法提供最新出貨量或價格資料。依據產業常識:先進製程的 AI 訓練 GPU(含高階 SM 叢集)長期供不應求,交付期可長達數月,二手市場價格高企。整體 AI 伺服器 GPU 市場由 NVIDIA 佔據主導(份額 > 80%),SM 的算力演進直接驅動市場規模,IDC 等機構預測 AI 晶片市場到 2027 年將達千億美元量級(引用為粗略預測,未確認具體報告),其中絕大部分的需求源於 SM 的浮點/整數/張量算力供給。
代表公司與資本對映
- NVIDIA(納斯達克:NVDA):SM 概念的提出者與主導者,每一代 SM 架構升級都會影響資料中心 GPU 的效能、功耗和產品組合。其資料中心業務(A100/H100/B100 等)營收佔比超過 50%,下游合作伙伴包括台積電(代工)、SK 海力士/美光(HBM 記憶體)、超微電腦/戴爾(伺服器整合)。
- AMD(納斯達克:AMD):其 CDNA 系列 GPU 採用計算單元(CU)類似概念,並在 MI300X 等產品中引入矩陣核心,市場份額較低但正在擴張,資本關注其搶奪 NVIDIA 份額的潛力。
- 初創 AI 晶片公司:如 Groq、Graphcore、SambaNova 等,以非 SM 架構挑戰傳統 GPU,通常採用資料流或粗粒度可重構架構,在特定場景下提供更高效率,但生態薄弱,資本對映波動較大。
產業觀察架構
- 架構代際變化:每次 SM 架構重大更新(如引入 Tensor Core、Transformer Engine)都會改變對應 GPU 產品的 AI 效能、能效和軟體適配要求,進而影響雲端廠商和企業的換代節奏。
- 製造約束:SM 需要最先進的製程和封裝(如 CoWoS),晶圓與先進封裝產能瓶頸會影響供應節奏和產品交付週期。
- 生態鎖定效應:CUDA 軟體棧與 SM 硬體深度耦合,模型最佳化(如 Triton 核心)高度依賴 SM 微架構特徵,遷移成本較高,影響不同 GPU 平台的採用門檻。
- 風險關注點:潛在的出口管制影響高階 SM 對特定市場的供應,美國相關政策變動可能造成需求和供應節奏擾動;同時,自研晶片(如 Google TPU、AWS Trainium)正在繞過 SM 生態,可能改變部分推論市場的競爭格局。
常見誤讀糾偏
-
“SM 數量 x FP32 CUDA 核心數 = GPU 效能”
實際上,效能取決於利用率(occupancy)、記憶體頻寬以及 Tensor Core 的參與度。許多 AI 載入中 Tensor Core 執行 90% 以上算力,CUDA 核心僅處理少量標量操作。單純比較 FP32 CUDA 核心數量會嚴重低估現代 GPU 的 AI 張量加速能力。 -
“SM 是完全可程式設計的通用處理器,與 CPU 核心無異”
SM 基於 SIMT 模型,以 32 執行緒 warp 為排程粒度,處理分支能力弱於 CPU 的亂序超標量核心。執行高度分歧的程式碼時效能會急劇下降,不適合細粒度、多樣化的邏輯控制。其擅長的是大規模資料並行與矩陣運算,而非通用作業系統級任務。
學習路徑
- 入門:《CUDA C Programming Guide》中“Hardware Implementation”章節,理解 SM、warp 與執行緒塊對映。
- 架構深入:NVIDIA 官方白皮書系列(如“NVIDIA A100 Tensor Core GPU Architecture”),其中包含 SM 具體框圖與各級儲存容量。
- 最佳化實戰:利用 Nsight Compute 分析核心的 SM 佔用率、共享記憶體 bank conflict、Tensor Core 使用效率;參考 cutlass 開源庫的 SM 級排程策略。
- 學術進階:閱讀 ISCA、MICRO 等頂會論文中關於 GPU 微架構和 Tensor Core 靈活的指令排程技術,以及針對 Transformer 的 SM 級加速最佳化。
一句話總結
SM 是 NVIDIA GPU 上平行計算引擎的核心副本單元,通過 warp 排程、多層次片上儲存和專用加速器(Tensor Core)實現超高吞吐,是現代 AI 大型模型訓練與推論的底層算力基石。
延伸閱讀與來源
- NVIDIA Corporation. “NVIDIA A100 Tensor Core GPU Architecture.” 2020. (公開白皮書)
- NVIDIA Corporation. “NVIDIA H100 Tensor Core GPU Architecture.” 2022. (公開白皮書)
- NVIDIA CUDA C++ Programming Guide, Chapter 2. Hardware Implementation.
- 行業分析:Mercury Research, GPU 市場份額季度報告(需訂閱)
- 報告引用:[台積電季度法說會紀要],[IDC 預測 AI 晶片市場 2027 年千億美元],(本文未檢索最新資料,以定性分析為主)
- 技術部落格:NVIDIA Developer Blog 中關於 SM 和 Tensor Core 最佳化系例。