算力引擎的內(nèi)核:GPU 架構(gòu)深度解析與 H100 技術(shù)密碼? 原創(chuàng)
本文聚焦 GPU 這一 AI 時(shí)代的核心算力引擎,從 CPU 與 GPU 的本質(zhì)差異切入,解析二者在架構(gòu)設(shè)計(jì)(運(yùn)算單元占比、并行能力)和協(xié)同工作流程(數(shù)據(jù)傳輸、指令注入、并行計(jì)算、結(jié)果回傳)的底層邏輯。
以 NVIDIA H100(Hopper 架構(gòu))為核心案例,深入拆解其基本架構(gòu):80GB HBM3 顯存的高帶寬設(shè)計(jì)、PCI-E 5.0 接口的傳輸能力,以及內(nèi)部層級(jí)化結(jié)構(gòu) —— 從頂層 GPC(圖形處理集群)、中層 TPC(紋理處理集群)到核心 SM(流式多處理器)的功能分工。同時(shí),詳解 SM 的四象限組成(Tensor Core、CUDA Core 等計(jì)算單元及緩存系統(tǒng))、五級(jí)緩存機(jī)制(寄存器、L0/L1/L2 緩存、HBM3)的動(dòng)態(tài)調(diào)度策略,以及 TMA(張量?jī)?nèi)存加速器)對(duì)數(shù)據(jù)搬運(yùn)效率的革命性提升,為理解 GPU 高性能計(jì)算原理提供全景視角。
GPU:AI時(shí)代的算力引擎
在AI技術(shù)蓬勃發(fā)展的今天,大模型訓(xùn)練和推理應(yīng)用正在各個(gè)行業(yè)快速普及。越來(lái)越多的企業(yè)開(kāi)始自行訓(xùn)練AI模型,或是基于大廠提供的基礎(chǔ)模型進(jìn)行二次開(kāi)發(fā)。在這個(gè)過(guò)程中,數(shù)據(jù)隱私保護(hù)的要求促使企業(yè)傾向于在本地部署AI模型,而不是完全依賴(lài)云端服務(wù)。這種趨勢(shì)使得硬件部署成為了AI應(yīng)用落地的重要課題,而GPU作為AI計(jì)算的核心硬件,自然成為了關(guān)注的焦點(diǎn)。
CPU VS GPU
在計(jì)算機(jī)系統(tǒng)中,CPU(中央處理單元)和GPU(圖形處理單元)是兩個(gè)核心組件,它們各自承擔(dān)著不同的任務(wù),設(shè)計(jì)理念和架構(gòu)也有所不同。CPU是計(jì)算機(jī)的大腦,負(fù)責(zé)處理操作系統(tǒng)和應(yīng)用程序運(yùn)行所需的各類(lèi)計(jì)算任務(wù)。它具有強(qiáng)大的通用性,能夠處理各種復(fù)雜的數(shù)據(jù)類(lèi)型和邏輯判斷。CPU的內(nèi)部結(jié)構(gòu)非常復(fù)雜,因?yàn)樗枰獞?yīng)對(duì)大量的分支跳轉(zhuǎn)和中斷處理,以確保程序能夠高效、穩(wěn)定地運(yùn)行。由于CPU需要處理的任務(wù)種類(lèi)繁多,它的設(shè)計(jì)更注重邏輯控制和串行計(jì)算能力,通過(guò)流水線技術(shù)等手段縮短程序的執(zhí)行時(shí)間。
如下圖所示,從架構(gòu)上看,CPU和GPU都包含運(yùn)算單元(ALU)、控制單元(Control)和緩存單元(Cache),但三者所占的比例截然不同。CPU的緩存單元占據(jù)了很大一部分空間,大約占50%,控制單元占25%,運(yùn)算單元僅占25%。這種設(shè)計(jì)使得CPU能夠通過(guò)緩存減少數(shù)據(jù)訪問(wèn)的延遲,提高處理效率。而GPU的緩存單元僅占5%,控制單元占5%,運(yùn)算單元?jiǎng)t占據(jù)了90%。GPU的設(shè)計(jì)更注重運(yùn)算能力的提升,通過(guò)大量運(yùn)算單元和線程來(lái)實(shí)現(xiàn)高吞吐量。

在并行處理能力方面,CPU擁有少量的強(qiáng)大計(jì)算單元,適合處理順序執(zhí)行的任務(wù)。它的時(shí)鐘頻率很高,能夠在很少的時(shí)鐘周期內(nèi)完成算術(shù)運(yùn)算。CPU還具備復(fù)雜的控制邏輯單元,可以提供分支預(yù)測(cè)能力,使其在處理邏輯控制和串行計(jì)算時(shí)表現(xiàn)出色。相比之下,GPU采用了數(shù)量眾多的計(jì)算單元和線程,能夠?qū)崿F(xiàn)非常大的計(jì)算吞吐量。GPU的超配線程設(shè)計(jì)可以很好地平衡內(nèi)存延遲問(wèn)題,從而同時(shí)處理多個(gè)任務(wù),專(zhuān)注于大規(guī)模高度并行的計(jì)算任務(wù)。

一言以蔽之,CPU更適合處理順序執(zhí)行的任務(wù),如操作系統(tǒng)、數(shù)據(jù)分析等;而GPU則適合處理需要大規(guī)模并行計(jì)算的任務(wù),如圖形處理、深度學(xué)習(xí)等。
CPU 與 GPU 協(xié)同工作
在了解了CPU(中央處理器)和GPU(圖形處理器)的不同功能和特點(diǎn)后,我們可以進(jìn)一步探討它們是如何協(xié)同工作的。CPU和GPU雖然在設(shè)計(jì)和功能上有所不同,但通過(guò)高效協(xié)作,能夠充分發(fā)揮各自的性能優(yōu)勢(shì),提升整體系統(tǒng)的計(jì)算效率。接下來(lái),我將通過(guò)下面這張圖來(lái)展示CPU與GPU協(xié)作的全過(guò)程。

根據(jù)圖上的標(biāo)號(hào),進(jìn)行詳細(xì)解釋?zhuān)?/p>
數(shù)據(jù)傳輸階段
- CPU發(fā)起DMA(Direct Memory Access,直接內(nèi)存訪問(wèn)),將系統(tǒng)主內(nèi)存中的數(shù)據(jù)復(fù)制到GPU內(nèi)存中。
指令注入階段
- CPU向GPU注入指令,告訴GPU需要執(zhí)行的任務(wù)。 ?
- 例如,在深度學(xué)習(xí)任務(wù)中,這些指令可能包括模型推理或訓(xùn)練的命令。
并行計(jì)算階段
- GPU中的多個(gè)計(jì)算線程會(huì)并行執(zhí)行CPU注入的指令。 ?
- 由于GPU擁有大量計(jì)算核心,特別適合處理高度并行化的任務(wù),如矩陣運(yùn)算。
結(jié)果回傳階段
- GPU完成計(jì)算后,會(huì)通過(guò)DMA將結(jié)果數(shù)據(jù)從GPU內(nèi)存復(fù)制回系統(tǒng)主內(nèi)存中。 ?
- 這些結(jié)果可能包括模型的推理輸出或訓(xùn)練過(guò)程中的中間結(jié)果。通過(guò)這種協(xié)作機(jī)制,CPU負(fù)責(zé)任務(wù)的調(diào)度和管理,而GPU則專(zhuān)注于執(zhí)行高并行化的計(jì)算任務(wù),從而實(shí)現(xiàn)了計(jì)算資源的高效利用。
GPU 基本架構(gòu)
在介紹了CPU和GPU的協(xié)作方式后,我們接下來(lái)將聚焦于GPU的內(nèi)部機(jī)構(gòu),特別是以NVIDIA H100(基于Hopper架構(gòu))為例,深入了解其高性能計(jì)算的核心秘密。作為英偉達(dá)于2022年發(fā)布的旗艦級(jí)GPU加速器,H100專(zhuān)為高性能計(jì)算(HPC)、人工智能(AI)和大規(guī)模數(shù)據(jù)中心設(shè)計(jì),是前代A100(Ampere架構(gòu))的升級(jí)版。其內(nèi)部設(shè)計(jì)采用了多項(xiàng)突破性技術(shù),其中最引人注目的是其高帶寬內(nèi)存(HBM)和PCI-E 5.0接口的結(jié)合。
如下圖所示,H100配備了80GB的HBM3顯存,這是其性能的核心保障之一。與之配套的顯存技術(shù)——高帶寬內(nèi)存(HBM),是一種基于3D堆疊技術(shù)的高性能內(nèi)存標(biāo)準(zhǔn)。通過(guò)將多個(gè)DRAM芯片垂直堆疊在GPU芯片旁邊(圖的左側(cè))。多個(gè) HBM 堆疊的部分就是顯卡的顯存。而在它右邊通過(guò)雙箭頭連接的綠色區(qū)域就是顯卡的運(yùn)算核心,包含:運(yùn)算、緩存、控制等功能,在后面的內(nèi)容中會(huì)展開(kāi)描述。

讓我們將上面的圖片放大, 關(guān)注 HBM 顯存本身,如下圖所示。多個(gè)顯存芯片(HBM)通過(guò)硅通孔(TSV, Through-Silicon Via)實(shí)現(xiàn)層間通信,像一棟高樓,每層樓是一個(gè)DRAM芯片,通過(guò)“電梯”(TSV)快速連通所有樓層,從而實(shí)現(xiàn)了更高的傳輸效率。HBM顯著提升了內(nèi)存帶寬,同時(shí)減少了功耗和占用面積。

需要注意的是,H100芯片支持6個(gè)HBM堆棧(HBM Stack),每個(gè)堆棧可提供800GB/s的傳輸帶寬,總內(nèi)存帶寬高達(dá)4.8TB/s。
在連接方面,H100通過(guò)16個(gè)PCI-E 5.0通道與CPU相連,每個(gè)通道的單向帶寬約為4GB/s(雙向約8GB/s),總理論傳輸帶寬可達(dá)63GB/s。這一設(shè)計(jì)確保了CPU能夠高效地將程序指令發(fā)送到GPU,并為GPU提供訪問(wèn)計(jì)算機(jī)主存儲(chǔ)器的快速通道。
GPU 內(nèi)部結(jié)構(gòu)
在對(duì) GPU 的基本架構(gòu)有所了解之后,然后深入到 GPU 的運(yùn)算核心中一探究竟。如果籠統(tǒng)而言,GPU 的運(yùn)算核心包含:運(yùn)算、緩存和控制。不過(guò)設(shè)計(jì)到的組件和單元較多,需要通過(guò)下圖來(lái)了解。

我們可以清晰地看到 NVIDIA GH100 芯片的層級(jí)架構(gòu),從頂層的 GPC 到下層的 TPC、SM,再到具體的運(yùn)算核心(CUDA Core、Tensor Core、RT Core)和緩存(L2 Cache)的分布與功能。
從圖片整體而言,描述了 GPU 的運(yùn)算單元與其他組件的協(xié)同情況。圖的上方通過(guò) PCI-E5.0 的接口與 CPU 溝通,左右兩側(cè)與 HBM 顯存進(jìn)行數(shù)據(jù)交換,下方利用英偉達(dá)的 NVLinke 接口技術(shù)與其他 GPU 顯卡進(jìn)行溝通。
接下來(lái),讓我們把目光放到這張圖的中間部分:
GPC(Graphics Processing Cluster,圖形處理集群)
它用綠色的區(qū)域表示,在 H100 GPU 中有 8 個(gè) GPC。它負(fù)責(zé)管理和協(xié)調(diào)多個(gè)下級(jí)計(jì)算單元(如 TPC、SM)。每個(gè) GPC 包含 9 個(gè) TPC。每 4 個(gè) GPC 共享 30MB L2 緩存,整顆芯片總計(jì) 60MB L2 Cache。
它用來(lái)分配計(jì)算任務(wù),將圖形渲染或計(jì)算任務(wù)分發(fā)到下屬 TPC/SM。同時(shí)避免不同任務(wù)間的資源爭(zhēng)用(如光線追蹤與 AI 計(jì)算)。
TPC(Texture Processing Cluster,紋理處理集群)
它是 GPC 的子模塊,傳統(tǒng)上專(zhuān)注于紋理處理(圖形渲染),但在現(xiàn)代 GPU 中已擴(kuò)展為通用計(jì)算單元。每個(gè) GPC 包含 9 個(gè) TPC,整顆芯片共 72 個(gè) TPC。每個(gè) TPC 包含 2 個(gè) SM,整顆芯片總計(jì) 144 個(gè) SM。它用來(lái)做紋理映射,例如:加速游戲/圖形中的紋理采樣(雖命名保留“紋理”,實(shí)際功能已泛化)。負(fù)責(zé)與 SM 協(xié)作處理通用計(jì)算(如 CUDA 核心的并行任務(wù))。
SM(Streaming Multiprocessor,流式多處理器)
它是 NVIDIA GPU 的最小計(jì)算單元,位于 GPC 內(nèi)部,H100 的 TPC 中包含了 2 個(gè) SM 單元,SM 直接執(zhí)行 CUDA 核心、Tensor Core 等運(yùn)算任務(wù)。換句話說(shuō)它就是運(yùn)算的主力軍。每個(gè) SM 包含:128 個(gè) CUDA Core(FP32/INT32 運(yùn)算)。4 個(gè) Tensor Core(FP8/FP16/TF32 加速 AI)。1 個(gè) RT Core(光線追蹤加速)。整顆芯片總計(jì) 144 個(gè) SM→總計(jì) 18,432 個(gè) CUDA Core(144 × 128)。
L2 Cache(二級(jí)緩存)
它位于整個(gè)運(yùn)算核心的中間,是全局共享的高速緩存,用于減少訪問(wèn)顯存(HBM)的延遲。我們可以看到 H100 擁有 60MB L2 Cache(8 GPC ÷ 4 × 30MB)。采用 非均勻分配(NUMA):每 4 個(gè) GPC 共享 30MB,優(yōu)化數(shù)據(jù)局部性。這起到了數(shù)據(jù)復(fù)用的效果,頻繁訪問(wèn)的數(shù)據(jù)(如 AI 模型參數(shù))緩存在 L2,降低 HBM 訪問(wèn)功耗。還會(huì)肩負(fù)協(xié)調(diào)多個(gè) GPC 間數(shù)據(jù)同步的責(zé)任。
SM 流式多處理器
通過(guò)前面對(duì) GPU 內(nèi)部結(jié)構(gòu)的介紹,我們發(fā)現(xiàn)在GPU的層級(jí)架構(gòu)中,SM(Streaming Multiprocessor) 是執(zhí)行實(shí)際計(jì)算任務(wù)的核心單元。每個(gè)SM如同一個(gè)高度并行的微型計(jì)算集群,負(fù)責(zé)管理數(shù)百個(gè)并發(fā)線程的計(jì)算資源調(diào)度。當(dāng)GPU接收來(lái)自CPU的指令后,任務(wù)會(huì)被拆解成線程塊(Thread Block)分配到各個(gè)SM上執(zhí)行。這種設(shè)計(jì)使數(shù)萬(wàn)個(gè)線程能高效協(xié)同,尤其適合處理圖形渲染與AI計(jì)算中的海量并行任務(wù)。
SM 內(nèi)部組成結(jié)構(gòu)
接下來(lái),通過(guò)下圖對(duì) SM 的內(nèi)部結(jié)構(gòu)進(jìn)行了解。
每個(gè)SM被劃分為4個(gè)對(duì)稱(chēng)的象限(Quadrant),形成高度復(fù)用的計(jì)算單元集群:
- 計(jì)算資源分層部署:每個(gè)象限配備 1個(gè)第四代Tensor Core(專(zhuān)精矩陣運(yùn)算,如FP16矩陣乘法提速10倍)和 32個(gè)FP32 CUDA Core(處理標(biāo)量計(jì)算與邏輯控制)。二者互補(bǔ)協(xié)作——Tensor Core像“矩陣流水線”高效處理大塊數(shù)據(jù),CUDA Core則如“精密工具組”執(zhí)行激活函數(shù)、數(shù)據(jù)轉(zhuǎn)換等細(xì)粒度操作。?
- 執(zhí)行單元全域覆蓋:INT32單元(地址計(jì)算)與FP64單元(科學(xué)計(jì)算)分布其間,確保整數(shù)/雙精度需求無(wú)縫銜接。特殊函數(shù)單元(SFU)獨(dú)立處理超越函數(shù)(如SIN/COS),釋放主計(jì)算管線壓力。?
- 存儲(chǔ)系統(tǒng)緊耦合:每象限獨(dú)占 1KB寄存器文件(線程私有,1-2周期延遲),構(gòu)成最速數(shù)據(jù)通道;共享的 L0指令緩存實(shí)時(shí)輸送指令流,避免計(jì)算單元“饑餓”。全局 L1緩存(256KB/SM)作為數(shù)據(jù)中轉(zhuǎn)站,減少高延遲內(nèi)存訪問(wèn)。?
- 動(dòng)態(tài)調(diào)度中樞:Warp調(diào)度器(每SM配4個(gè))持續(xù)監(jiān)控32線程束狀態(tài),將矩陣運(yùn)算分派至Tensor Core,標(biāo)量指令路由到CUDA Core,實(shí)現(xiàn)零空閑的流水線作業(yè)。

從上圖得知,每個(gè)SM采用四象限(Quadrant)架構(gòu),這里我們將象限中的組件列了一個(gè)清單方便查看:
組件類(lèi)型 | 數(shù)量/象限 | 功能說(shuō)明 | 關(guān)鍵技術(shù)特性 |
Tensor Core | 1個(gè) | 加速矩陣運(yùn)算(GEMM) | 第四代架構(gòu),支持FP8/FP16/TF32 |
FP32 CUDA Core | 32個(gè) | 單精度浮點(diǎn)運(yùn)算(激活函數(shù)等) | 傳統(tǒng)標(biāo)量計(jì)算核心 |
INT32單元 | 16 個(gè) | 整數(shù)運(yùn)算與地址計(jì)算 | 獨(dú)立于FP32單元 |
FP64單元 | 16 個(gè) | 雙精度科學(xué)計(jì)算 | 面向HPC場(chǎng)景 |
寄存器文件 | 1KB | 線程私有存儲(chǔ)(速度最快) | 延遲1-2周期 |
L0指令緩存 | 1 個(gè) | 減少指令獲取延遲 | 服務(wù)象限內(nèi)所有核心 |
LD/ST | 8 個(gè) | 加載參數(shù)訓(xùn)練集 | |
SFU | 1 個(gè) | 保存特殊函數(shù) | |
Warp Scheduler | 1 個(gè) | 運(yùn)算線程調(diào)度器 | |
Dispatch Unit | 1 個(gè) | 發(fā)送指令 |
SM內(nèi)部工作機(jī)制
在了解了 SM 的組成結(jié)構(gòu)之后, 再來(lái)看看它是如何工作。 SM通過(guò)三級(jí)流水線機(jī)制實(shí)現(xiàn)組件高效協(xié)作,以執(zhí)行一條典型指令為例:
階段1:指令調(diào)度
- Warp Scheduler監(jiān)控32線程組成的Warp狀態(tài),選擇就緒的Warp。?
- Dispatch Unit解析指令類(lèi)型,分配至對(duì)應(yīng)硬件單元:
A.FP32/INT32運(yùn)算→CUDA Core
B.矩陣乘法 (GEMM)→Tensor Core
C.超越函數(shù) (e.g. SIN)→SFU(特殊函數(shù)單元)
D.數(shù)據(jù)搬運(yùn)→LD/ST(加載/存儲(chǔ)單元)
階段2:數(shù)據(jù)供給
- 寄存器文件提供線程級(jí)瞬時(shí)數(shù)據(jù)(如矩陣計(jì)算中的中間值)?
- L1 Cache緩存共享數(shù)據(jù)(若寄存器溢出則暫存至此處,延遲20-30周期)?
- TMA(Tensor Memory Accelerator)優(yōu)化矩陣分塊訪問(wèn)(自動(dòng)處理子矩陣內(nèi)存布局)
階段3:并行執(zhí)行

假設(shè)上圖完成 Transform 模型架構(gòu)的運(yùn)算,大致工作流程如下:
- Tensor Core率先處理核心矩陣運(yùn)算:接收16×16矩陣塊(如QK<sup>T</sup>),執(zhí)行FP16/FP8混合精度GEMM,提供10倍于標(biāo)量單元的吞吐量。?
- FP32 CUDA Core承接后續(xù)計(jì)算:處理非矩陣操作,包括Softmax歸一化、激活函數(shù)(GELU/ReLU)等標(biāo)量密集型任務(wù)。?
- SFU加速特殊函數(shù):專(zhuān)精超越函數(shù)計(jì)算(如Softmax中的指數(shù)運(yùn)算),降低主計(jì)算管線延遲。?
- 分級(jí)存儲(chǔ)體系保障數(shù)據(jù)供給:結(jié)果優(yōu)先寫(xiě)回寄存器(1-2周期延遲)或L1緩存(20-30周期),最終由L2緩存(60MB)協(xié)調(diào)寫(xiě)入HBM顯存(3.35TB/s帶寬)。
GPU 的緩存機(jī)制
通過(guò)對(duì) SM 的內(nèi)部組成和工作原理的介紹,讓我們對(duì) GPU 的運(yùn)算有了更加深刻的了解,不過(guò)在探究 GPU 內(nèi)部的過(guò)程中發(fā)現(xiàn)遇到了很多的“緩存”。這里我們以英偉達(dá) H100 顯卡為例,對(duì)其緩存按照五級(jí)分層給大家做詳細(xì)介紹。
這五級(jí)分層分別是:頂層的寄存器文件(1周期延遲/1KB線程)與L0指令緩存如同貼身工作臺(tái),專(zhuān)精服務(wù)線程的即時(shí)計(jì)算與指令吞吐;中層的L1緩存(256KB/SM)與L2緩存(60MB/GPU)扮演共享樞紐,以容量換帶寬,高效緩存高頻數(shù)據(jù)塊(如Attention矩陣切片);底層的HBM3顯存(80GB/3.35TB/s)則如中央倉(cāng)庫(kù),承載全量模型參數(shù)。這套機(jī)制通過(guò)動(dòng)態(tài)路由策略——將98%的“熱數(shù)據(jù)”鎖定在高速緩存,僅5%的“冷數(shù)據(jù)”下沉至顯存——使H100的Tensor Core利用率突破98%,同時(shí)將AI訓(xùn)練的吞吐量推升6倍。
GPU 緩存分層
如下圖所示,我們將 GPU (以英偉達(dá) H100 為例)緩存分成五個(gè)層次。

針對(duì)這五個(gè)層級(jí),按照功能和服務(wù)的對(duì)象將其分為頂層、中層和底層,如下:
頂層:專(zhuān)注運(yùn)算命令的極速通道(服務(wù)線程即時(shí)需求)
組件 | 速度優(yōu)勢(shì) | 容量限制 | 高頻場(chǎng)景示例 |
寄存器文件 | 1周期延遲(硬件極限) | 1KB/線程 | 矩陣乘法中間累加值 |
L0指令緩存 | 2-5周期取指(0空轉(zhuǎn)) | 4KB/象限 | Tensor Core的HMMA指令預(yù)取 |
中層:專(zhuān)注數(shù)據(jù)緩存的均衡通道(服務(wù)SM協(xié)作需求)
組件 | 速度-容量平衡點(diǎn) | 核心功能 | 實(shí)戰(zhàn)價(jià)值 |
L1數(shù)據(jù)緩存 | 256KB/SM(20-30周期) | 緩存Attention頭的K/V塊 | 使QK^T計(jì)算減少76% HBM訪問(wèn) |
L2 數(shù)據(jù)緩存 | 60MB/GPU(100-200周期) | 聚合多SM的梯度數(shù)據(jù) | AllReduce通信延遲降低40% |
底層:專(zhuān)注參數(shù)模型的海量通道(服務(wù)全局存儲(chǔ)需求)
組件 | 容量王者 | 速度代價(jià) | 不可替代性 |
HBM3顯存 | 80GB(存儲(chǔ)全量參數(shù)) | 300+周期 | 承載百億參數(shù)大模型 |
GPU 緩存策略
1. 熱度感知緩存
基于訪問(wèn)頻率動(dòng)態(tài)調(diào)整數(shù)據(jù)層級(jí), L2緩存通過(guò)內(nèi)置的訪問(wèn)計(jì)數(shù)器自動(dòng)識(shí)別熱點(diǎn)數(shù)據(jù),例如Transformer的Embedding表。當(dāng)某個(gè)數(shù)據(jù)塊被連續(xù)訪問(wèn)超過(guò)三次時(shí),其緩存優(yōu)先級(jí)會(huì)被提升,可能被保留在L2緩存的Bank0高速區(qū)。此外,在多個(gè)SM共享相同權(quán)重的情況下,例如在AllReduce期間,L2緩存會(huì)采用單副本緩存策略,以?xún)?yōu)化資源使用。
2. 寄存器壓力釋放
通過(guò)編譯器驅(qū)動(dòng)數(shù)據(jù)生命周期管理。通過(guò)路由邏輯實(shí)現(xiàn)高效的資源分配和性能優(yōu)化。在實(shí)施機(jī)制方面,寄存器分配算法優(yōu)先保留循環(huán)計(jì)數(shù)器、矩陣?yán)奂悠鞯汝P(guān)鍵變量,確保核心計(jì)算任務(wù)的高效執(zhí)行。當(dāng)寄存器不足,例如線程使用超過(guò)1KB時(shí),系統(tǒng)會(huì)自動(dòng)將中間變量暫存至L1緩存,以避免性能瓶頸。
此外,針對(duì)長(zhǎng)生命周期變量,如優(yōu)化器狀態(tài)等,系統(tǒng)采用動(dòng)態(tài)降級(jí)策略,直接路由至L2或HBM,進(jìn)一步優(yōu)化內(nèi)存使用效率。在性能防護(hù)方面,編譯器引入了寄存器溢出警告機(jī)制,當(dāng)寄存器溢出時(shí)會(huì)觸發(fā)性能懸崖警告(通過(guò)NVCC編譯選項(xiàng)--ptxas-warnings實(shí)現(xiàn)),提醒開(kāi)發(fā)者關(guān)注潛在性能問(wèn)題。同時(shí),Hopper架構(gòu)新增寄存器文件壓縮技術(shù),使寄存器的有效容量提升40%,從而在有限的硬件資源下實(shí)現(xiàn)更高的計(jì)算效率。
3. 顯存預(yù)取流水線
路由邏輯主要關(guān)注計(jì)算與數(shù)據(jù)搬運(yùn)的時(shí)空重疊,通過(guò)三級(jí)預(yù)取流水線和TMA加速器來(lái)優(yōu)化數(shù)據(jù)傳輸與計(jì)算的并行性。在實(shí)施機(jī)制方面,三級(jí)預(yù)取流水線分為三個(gè)層級(jí):Tier1階段,Tensor Core啟動(dòng)時(shí),DMA預(yù)取相鄰數(shù)據(jù)至L2緩存;Tier2階段,L2到L1的數(shù)據(jù)搬運(yùn)與標(biāo)量函數(shù)單元(SFU)的計(jì)算任務(wù)并行執(zhí)行;Tier3階段,寄存器加載與矩陣乘法操作實(shí)現(xiàn)重疊執(zhí)行。
此外,TMA(張量?jī)?nèi)存加速器)通過(guò)張量坐標(biāo)的直接定位,能夠快速訪問(wèn)HBM中的數(shù)據(jù)塊,從而減少地址計(jì)算的開(kāi)銷(xiāo)。在帶寬優(yōu)化方面,系統(tǒng)將細(xì)碎的數(shù)據(jù)傳輸請(qǐng)求合并為128字節(jié)的大塊傳輸,這使得HBM3的效率提升了4倍;同時(shí),當(dāng)Tensor Core正在處理一個(gè)16×16的矩陣時(shí),DMA已經(jīng)預(yù)取了下一個(gè)64×64的數(shù)據(jù)塊,進(jìn)一步提升了數(shù)據(jù)傳輸?shù)男屎陀?jì)算的連續(xù)性。
緩存路由策略全景圖
這里我們將路由策略做一個(gè)總結(jié),通過(guò)下面矩陣表格的方式展示。
數(shù)據(jù)特性 | 路由目標(biāo) | 策略實(shí)現(xiàn) | 硬件支持 |
指令流 | → L0緩存 | 分支預(yù)測(cè)預(yù)取下4條指令 | PC-Relative Addressing |
線程私有中間結(jié)果 | → 寄存器 | 編譯器寄存器分配算法 | 寄存器文件壓縮 |
高頻共享數(shù)據(jù) | → L1緩存 | LRU替換策略+硬件預(yù)取 | 256KB SRAM陣列 |
跨SM共享權(quán)重 | → L2緩存 | 訪問(wèn)計(jì)數(shù)晉升機(jī)制 | 60MB全域緩存 |
歷史參數(shù)/冷數(shù)據(jù) | → HBM | DMA異步搬運(yùn)+緩存逐出 | HBM3 3.35TB/s帶寬 |
TMA 加速原理
前面我們花費(fèi)了很多的篇幅在講解 GPU 的構(gòu)成和工作方式,并且在 GPU 的運(yùn)算單元上停留了很長(zhǎng)時(shí)間。我們知道,在大模型訓(xùn)練和高性能計(jì)算任務(wù)中,GPU 的計(jì)算效率并不僅僅取決于 Tensor Core 的運(yùn)算能力,還極大依賴(lài)于數(shù)據(jù)搬運(yùn)是否高效。而傳統(tǒng)架構(gòu)中,計(jì)算線程必須親自負(fù)責(zé)內(nèi)存地址生成與數(shù)據(jù)傳輸任務(wù),這使得原本用于數(shù)學(xué)運(yùn)算的資源被“數(shù)據(jù)搬運(yùn)”占用,效率無(wú)法最大化。
為了解決這個(gè)問(wèn)題,NVIDIA 在 Hopper 架構(gòu)的 H100 中引入了 TMA(Tensor Memory Accelerator)單元,徹底改變了數(shù)據(jù)在 GPU 內(nèi)部的傳輸機(jī)制。
為了把 TMA 這種重要的概念搞清楚,通過(guò)下圖給大家做詳細(xì)講解,先看圖的左邊。
在 A100 中,數(shù)據(jù)從顯存搬運(yùn)到 SM(流式多處理器)內(nèi)部緩存的全過(guò)程,依賴(lài)指令線程來(lái)完成。
當(dāng)計(jì)算需要數(shù)據(jù)時(shí),線程首先要手動(dòng)生成內(nèi)存地址,再通過(guò) LDGSTS 指令從顯存讀取數(shù)據(jù)。這意味著線程不僅要負(fù)責(zé)發(fā)起讀寫(xiě)操作,還要等待數(shù)據(jù)搬運(yùn)完成。在這個(gè)過(guò)程中,線程無(wú)法繼續(xù)進(jìn)行其他計(jì)算任務(wù),Tensor Core 的計(jì)算資源也被閑置下來(lái)。
換句話說(shuō),在 A100 架構(gòu)中,“線程+數(shù)據(jù)線程”是合并在一起的,既要思考如何計(jì)算,也要親自去“搬磚”。尤其在大模型訓(xùn)練這種需要頻繁搬運(yùn)大塊數(shù)據(jù)的任務(wù)中,這種緊耦合的模式會(huì)嚴(yán)重限制整體吞吐率。

既然 A100 的設(shè)計(jì)限制了整體吞吐量,那么我們看看圖的右邊 H100 在加入了 TMA 有何改觀。H100 的最大變化在于新增了一個(gè)名為 TMA 的硬件單元,專(zhuān)門(mén)負(fù)責(zé)地址生成和數(shù)據(jù)搬運(yùn)。現(xiàn)在,線程只需告訴 TMA 自己需要哪一塊數(shù)據(jù)、數(shù)據(jù)的尺寸和布局等信息,TMA 就能自動(dòng)生成地址,直接將數(shù)據(jù)從 GPU 顯存搬運(yùn)到共享內(nèi)存或一級(jí)緩存中。
圖中可以看到,H100 的指令線程與數(shù)據(jù)線程已經(jīng)分離,原本由線程執(zhí)行的數(shù)據(jù)搬運(yùn)操作完全交由 TMA 處理。線程和 Tensor Core 因此可以繼續(xù)執(zhí)行數(shù)學(xué)運(yùn)算,不再被等待或阻塞。
這種架構(gòu)上的優(yōu)化,使得 SM 內(nèi)部的資源調(diào)度更加高效,計(jì)算與數(shù)據(jù)訪問(wèn)可以并行進(jìn)行,尤其對(duì) AI 和 HPC 等任務(wù)密集型場(chǎng)景,帶來(lái)顯著的性能提升。
TMA 的出現(xiàn)最大程度上利用了緩存的時(shí)間局部性和空間局部性原則,將頻繁使用的數(shù)據(jù)及時(shí)搬入共享內(nèi)存,讓計(jì)算單元可以高速、低延遲地訪問(wèn)數(shù)據(jù)。
在 GPU 這樣數(shù)以千計(jì)線程并行執(zhí)行的環(huán)境中,避免線程在 I/O 上的等待成為提升效率的關(guān)鍵。而 TMA 的加入,則是在這一關(guān)鍵點(diǎn)上,邁出的決定性一步。
補(bǔ)充說(shuō)明:什么是時(shí)間局部性和空間局部性?
GPU(以及 CPU)之所以設(shè)置緩存,是為了避免頻繁訪問(wèn)速度較慢的顯存或主存,而緩存的命中效率依賴(lài)于“數(shù)據(jù)局部性”原則。
時(shí)間局部性指的是:剛剛訪問(wèn)過(guò)的數(shù)據(jù),很快可能會(huì)再次被訪問(wèn)。比如你正在做一段矩陣計(jì)算,某個(gè)數(shù)據(jù)塊多次參與乘法,就體現(xiàn)了時(shí)間局部性。
空間局部性則是指:如果某個(gè)地址的數(shù)據(jù)被訪問(wèn),那么它附近的數(shù)據(jù)也很可能在接下來(lái)被訪問(wèn)。比如讀取一個(gè)數(shù)組時(shí),往往會(huì)按序讀取多個(gè)相鄰元素,這就屬于空間局部性。
TMA 支持批量搬運(yùn)連續(xù)的數(shù)據(jù)塊,正好契合這兩個(gè)局部性原則。它能預(yù)判和預(yù)取有可能用到的數(shù)據(jù),減少線程頻繁請(qǐng)求顯存的次數(shù),讓共享內(nèi)存和一級(jí)緩存的命中率大大提高,進(jìn)而提升整體計(jì)算效率。
總結(jié)
本文系統(tǒng)剖析了 GPU 的架構(gòu)設(shè)計(jì)與工作機(jī)制,核心揭示了其作為并行計(jì)算引擎的獨(dú)特優(yōu)勢(shì)。通過(guò)對(duì)比 CPU 與 GPU 的架構(gòu)差異(運(yùn)算單元占比、并行能力側(cè)重),闡明二者協(xié)同工作的高效模式。以 H100 為實(shí)例,層層拆解其層級(jí)化結(jié)構(gòu):GPC 的任務(wù)分配、TPC 的功能擴(kuò)展、SM 的并行計(jì)算核心,尤其是 SM 內(nèi)部 Tensor Core 與 CUDA Core 的分工協(xié)作,構(gòu)成了高效處理 AI 與圖形任務(wù)的基礎(chǔ)。
五級(jí)緩存機(jī)制通過(guò)動(dòng)態(tài)調(diào)度熱數(shù)據(jù),平衡了速度與容量;TMA 技術(shù)則通過(guò)分離指令與數(shù)據(jù)線程,突破了數(shù)據(jù)搬運(yùn)的效率瓶頸。這些設(shè)計(jì)共同支撐了 H100 的高性能表現(xiàn),使其成為 AI 訓(xùn)練、高性能計(jì)算的核心硬件,也為理解現(xiàn)代 GPU 的技術(shù)演進(jìn)與應(yīng)用價(jià)值提供了清晰框架。
作者介紹
崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開(kāi)發(fā)和架構(gòu)經(jīng)驗(yàn),10年分布式架構(gòu)經(jīng)驗(yàn)。

















