• 正文
  • 相关推荐
申请入驻 产业图谱

一文读懂现代GPU架构:从晶体管到AI算力的硬核拆解

04/20 12:23
427
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

现在我们用的GPU早就不是当年只用来画游戏画面的显卡了,从AI大模型训练到科学模拟,所有高算力需求的场景里,GPU都是绝对的核心。

今天我们就拿NVIDIA RTX 30系用的GA102芯片来举例,一层一层拆开讲清楚,现代GPU到底是怎么设计出这么恐怖的算力的。

1.  GPU算力的增长有多夸张?

先来直观感受一下GPU这三十年的进步:

1996年跑《超级马里奥64》的3D画面,只需要每秒1亿次计算;

2011年玩《我的世界》,就需要每秒1000亿次;

现在玩《赛博朋克2077》开光追跟实时光影,单颗GPU需要每秒36万亿次计算才能流畅运行。

换个更直观的对比:全球80亿人,每个人每秒做一次乘法,加起来也才每秒80亿次运算。这个集体算力,还不到一颗高端GPU的四千五百分之一。

这种差距不是堆核心就能堆出来的,是GPU从设计底层就针对大规模并行计算做了优化,才有今天的结果。

2. CPU和GPU:完全不一样的设计思路

很多人分不清CPU和GPU到底差在哪,用一个很经典的类比就能讲清楚:

CPU就像大型客机,核心数量少,但每个核心都很强,也很灵活,能处理各种各样的任务。跑操作系统、管理外设、处理复杂的分支逻辑,靠的都是CPU的低延迟单线程性能,就像客机能飞到全世界各个机场,通用性极强。

GPU就像大型货轮,造了几千上万个简单的小核心,不追求单任务的低延迟,追求的是整体吞吐量。它一次就能拉海量的数据,比如图形顶点、像素值、AI矩阵参数,批量做重复的运算。虽然单个操作的延迟比CPU高,但一次拉的货是飞机的几十上百倍,总效率高太多了。

我整理了两者核心差异对比:

CPU一般是6到24个高性能x86核心,能跑操作系统、复杂分支逻辑、网络协议栈各种任务,特点是低延迟、低吞吐量,接口支持硬盘、网络、USB各种类型,适合处理串行、控制密集的复杂任务。

GPU一般是一万个以上CUDA核心再加几百个专用核心,只需要处理算术、向量计算、着色这类窄指令集,特点是高吞吐量、单个操作延迟高,接口只有PCIe、NVLink、显示接口这类高带宽专用通道,天生适合跑高度并行的任务:3D渲染、AI训练、加密哈希计算都是典型。

简单说就是,CPU管灵活应变的杂事,GPU管批量重复的算力活,分工不同,设计思路完全不一样。

3. 现代GPU物理架构拆解:GA102为例

我们以NVIDIA RTX 30系列用的GA102芯片为例子,把GPU一层层拆开看。

几十亿晶体管的硅芯片

GPU核心就是一块几平方厘米的硅片,GA102这块小小的芯片里,塞了283亿个晶体管。晶体管就是数字开关,一开一关代表0和1,没有这么高的晶体管密度,每秒万亿次计算就是天方夜谭。

分层设计的计算单元

这么多晶体管不能乱堆,现代GPU用的是分层嵌套的结构来组织计算资源:

第一层是图形处理集群(GPC),GA102一共做了7个GPC,每个GPC都是一个独立的模块,各自处理一部分渲染任务。

每个GPC里面又分了12个流多处理器(SM),GA102总共有84个SM,SM就是GPU里真正负责分发执行线程的主力干活单元。

GA102的GPC内部84个流多处理器(SM)网格布局图

SM(流处理器)再往下细分,到最核心的计算单元:

单个流多处理器(SM)放大图,显示四个Warp单元和两个RT核心

Warp:一个Warp就是32个线程组成的小组,一起并行执行同一个指令序列。

单个Warp放大图,展示32个CUDA核心加1个Tensor核心的布局

CUDA核心(着色核心):每个Warp配32个简单算术单元,GA102总共有10752个CUDA核心,专门负责加减乘、按位逻辑这类基础操作,速度极快。

Tensor核心(张量核心):每个Warp配1个,GA102一共336个,专门做矩阵乘加运算,是AI计算的核心专用单元。

RT核心(光追核心):每个SM配1个,GA102一共84个,专门负责处理光追的加速结构和光线碰撞检测,是实时光追的硬件基础。

总结一下:GA102芯片核心计算单元,一共有10752个CUDA核心、336个Tensor核心、84个RT核心。

GA102芯片核心分区图,标注10752个CUDA核心、336个Tensor核心、84个RT核心

这种分层设计能把大任务拆成小任务,调度效率特别高,能让芯片上几乎所有计算资源都跑满,不浪费。

单个CUDA核心里有什么?

别看CUDA核心小,一个里面就藏了差不多41万个晶体管。其中大约5万个用来做乘加单元(FMA),能在一个时钟周期里就算完A×B + C,剩下的晶体管用来做移位、掩码、控制逻辑。

GA102的boost频率是1.7GHz,每个核心每秒就能做17亿次乘加运算,RTX 3090开起boost来,总共有10496个活跃核心,算下来就是每秒大约35.6万亿次浮点运算(FLOPS),这个算力放在十年前,要一整个超级计算机机房才能做到。

每个SM还配了4个特殊功能单元,负责处理除法、平方根、三角函数这类没法直接用乘加单元算的复杂操作。

存储控制、缓存和输入输出

计算集群周围,就是支撑计算的配套电路

GA102芯片标注图,标出L2缓存、Gigathread引擎、PCIe接口位置

存储控制器:GA102用12通道GDDR6X显存,拼出384位的总线,持续带宽能做到每秒1.15TB,这个速度能一秒传完差不多300部普通高清电影。

片上缓存:所有SM共享两个3MB的L2 SRAM缓存,每个SM自己还有128KB的L1缓存,这么设计就是为了减少对外部显存的访问,毕竟访问显存比访问片上缓存慢太多也费电太多。

Gigathread引擎:负责管理所有GPC和SM的任务调度,平衡负载。

PCIe和NVLink:高速串行通道,用来把GPU连到CPU、主板,或者连其他GPU做多卡并行。

显示输出:一般是1个HDMI加3个DisplayPort,直接输出画面到显示器

GPU PCB边缘特写,展示3个DisplayPort和1个HDMI接口

供电和散热设计

这么大的算力,要喂饱还要压得住温度,可不是一件容易事:

电压调节模块(VRM):把PCIe供电进来的12V电压,降到GPU核心需要的1.1V左右,同时能输出几百瓦的功率,保证核心满载的时候不会掉电压。

12V供电输入到VRM,降压到约1.1V供给GPU核心的示意图

散热:一般都是大体积铝鳍片加铜热管,把核心的热量导出来,再用高风量风扇吹到空气中,把热量带走,保证核心不会因为温度太高降频。

GPU大型散热套件:带铜热管和高风量风扇

芯片分级:同一颗晶圆做不同产品

晶圆生产出来,难免会有部分小缺陷,直接扔掉太浪费,厂商就会做分级:把不同缺陷程度的芯片,屏蔽掉有问题的部分,做成不同档次的产品卖。

GA102就分出了四个常见产品:

RTX 3090 Ti:全规格无缺陷,10752个CUDA核心,是顶级旗舰

RTX 3090:屏蔽了两个有缺陷的SM,剩10496个CUDA核心,次旗舰

RTX 3080 Ti:屏蔽四个,剩10240个,中端主力

RTX 3080:屏蔽十六个,剩8704个,入门高端

除了核心数,不同型号的频率、显存容量(10G到24G不等)、功耗限制也会做区分,覆盖不同价位的需求,这也是半导体行业通用的做法,能最大限度降低成本。

喂饱算力:不同显存技术对比

GPU是出了名的数据黑洞,几千个核心要不停干活,必须持续不断喂数据,现在主流的高端显存技术有三种,各有各的特点:

GDDR6X SDRAM

高端卡一般用24颗1GB的芯片,总容量24GB。它用了PAM-4信号技术,一个时钟周期每个针脚能传2个bit,用四种不同电压表示,不用增加针脚数量就能把吞吐量翻一倍,384位总线的总带宽能超过每秒1.15TB。

PAM-4信号示意图,四种电压等级每个周期编码2bit

对比一下,CPU的内存总线位宽一般是64位,带宽大约每秒6GB,差了快两百倍,就能看出来GPU对显存带宽的需求有多大。

GDDR7 SDRAM

GDDR7用了PAM-3编码,用-1、0、+1三种电压等级编码数据,比PAM-4更省电,信号完整性也更好,能把传输效率再提一档。

GDDR7的PAM-3编码二进制转三进制示意图

HBM高带宽显存

HBM是现在AI加速卡最喜欢用的显存技术,它把DRAM芯片叠起来堆成立方,用硅通孔(TSV)把不同层连起来,做成一个整体的存储芯片

堆叠DRAM芯片通过TSV互联,组成高带宽存储立方示意图

单颗HBM3E立方就能做到24GB到36GB容量,单颗带宽就能做到每秒192GB,非常适合AI加速卡用。

4. 并行计算模型:从SIMD到SIMT

GPU天生适合跑高度并行任务——也就是同一个操作,独立套用到海量不同数据上的任务,比如3D顶点变换、图片像素滤镜、加密哈希计算、神经网络矩阵运算,都是典型的并行任务。

GPU处理并行任务的模型,也走过两代进化:

SIMD:单指令多数据

早期的并行模型,一条指令同时驱动一组固定宽度的数据通道,同步执行。好处是适合完全统一的任务,但如果遇到分支跳转,灵活性就很差,会卡。说人话就是,早期GPU一条指令管一堆数据,必须所有人同步走,不能有人走快有人走慢。

SIMT:单指令多线程

这是NVIDIA搞出来的创新,每个线程都有自己的程序计数器,解决了分支的问题:

同一个Warp里的线程哪怕走了不同的分支路径,也能分开处理,之后再重新汇合,这叫Warp分歧处理,比SIMD灵活太多。

整个SIMT也是分层的:

单个线程:在一个CUDA核心上执行一个指令数据对

一个Warp:32个线程,一起发同一个指令,但支持管理分歧

一个线程块:一组Warp,分配给同一个SM

一个网格:一个内核启动的所有线程块

Gigathread引擎:硬件调度器,负责把线程块分配到SM,平衡负载

这个灵活的模型,让开发者能写通用GPU代码,同时还能保留大规模并行的性能,现在我们用GPU做AI、做科学计算,都是靠这个模型撑起来的。

5. 实际场景的GPU干活例子

3D图形渲染

举个简单的例子,给一个14000个顶点的牛仔帽模型做坐标转换:模型本身的顶点是相对于自己原点的,要放到整个场景里,就要给每个顶点坐标加上模型在场景里的位置向量。

这个操作就是典型的并行任务——每个顶点的计算完全不影响其他顶点,上千个CUDA核心可以同时开工,一下子就算完了。从旋转、缩放、投影到光栅化、着色,每个步骤都能拆成并行任务,几千个核心一起跑,速度自然快。

加密货币挖矿

早年比特币挖矿,GPU一秒能算9500万次SHA-256哈希,每个nonce(随机数)都是独立计算,刚好适合GPU并行。现在ASIC专用矿机已经能做到每秒250万亿次哈希,把GPU远远甩在后面,也能看出来越专用的硬件,在特定任务上性能越强。

神经网络训练和推理

AI现在能发展这么快,GPU的Tensor核心功不可没。Tensor核心直接在硬件里做D = A×B + C的矩阵乘加运算,这正是神经网络里最常见的操作。

它还支持混合精度计算,用FP16/INT8算术提升吞吐量,同时不损失精度。现在训练一个大模型,一次就要完成几万亿到几百万亿次矩阵运算,没有Tensor核心的加速,根本不可能在可接受的时间里训完。

6. 总结

现代GPU是半导体创新、并行计算理论和工程实践结合到极致的产物。从几平方厘米硅片上的几十亿晶体管,到分层调度的计算单元,再到专门优化的显存技术,GPU硬是把过去只有超级计算机才能有的算力,塞进了每个人电脑里的一块卡。

不管是渲染虚拟游戏世界,还是加速AI大模型训练,或是做科学模拟,GPU一直在重新定义计算的边界。

接下来随着新显存标准普及、更灵活的并行模型落地,还有和CPU更紧密的集成,GPU的创新速度只会越来越快。

接下来还能跑出什么新的可能性,我们拭目以待。

参考:

1:https://learnopencv.com/modern-gpu-architecture-explained/

2:https://www.youtube.com/watch?v=h9Z4oGN89MU

相关推荐