找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2120

积分

0

好友

275

主题
发表于 昨天 19:55 | 查看: 0| 回复: 0

当我们在《赛博朋克2077》的夜之城中流连忘返,或者惊叹于 ChatGPT 生成的精妙回答时,很少有人意识到这背后正在进行着怎样规模的数字狂欢。为了支撑现代图形渲染和人工智能,GPU 架构经历了一场从“方阵士兵”到“特种部队”的静默革命。本文将深入解剖 GPU 的微观架构,从 SIMD 的物理局限到 SIMT 的逻辑突围,并揭示 GPGPU 是如何凭借“极度并行”的哲学,成为现代 AI 产业的心脏。

第一章:不可思议的算力规模

在进入枯燥的架构图解之前,我们需要先建立一个量级概念。现代计算的规模,早已超出了人类直觉的想象范畴。

让我们把时间拨回 1996 年,那是《超级马里奥 64》诞生的年代。那时的 3D 游戏简单纯粹,多边形棱角分明,算力需求约为每秒 1 亿次计算(100 Million Ops)。而在仅仅二十多年后的 2020 年,为了在 4K 分辨率下流畅运行光追大作《赛博朋克 2077》,显卡每秒必须执行惊人的 36 万亿次运算(36 Trillion Ops)

算力数量级对比图:从《马里奥64》到《赛博朋克2077》

36 万亿次,这个数字冷冰冰的,没有任何实感。为了让你理解这个量级,我们做一个疯狂的各种假设:

如果我们将全地球 4,400 个 平行宇宙中的所有人口(约 34 万亿人)集合起来,每个人每秒钟做一道复杂的数学题,那么这 4,400 个地球的全人类总算力,才刚刚能匹配一颗 RTX 3090 芯片的运算能力。

这种恐怖的算力增长,并不是靠单纯提高核心频率实现的(摩尔定律已近黄昏),而是源于一种计算哲学的根本性胜利——极度并行(Embarrassingly Parallel)

GPU计算能力具象化图示

第二章:喷气机与远洋货轮 —— CPU 与 GPU 的本质分歧

要理解 GPU 的架构,首先要明白它为什么长得和 CPU 完全不一样。

CPU(中央处理器)的设计理念是“全能与低延迟”。它像是一架超音速喷气式客机。它的核心数量很少(通常 8-24 核),但每个核心都极其强壮,主频极高,并且拥有复杂的控制逻辑,能够处理各种突发的、逻辑混乱的任务(比如运行操作系统、响应鼠标点击、打开复杂的网页)。它的目标是——让单个乘客(指令)以最快速度到达目的地。

CPU与GPU对比示意图:喷气式客机与巨型货轮

而 GPU(图形处理器)则是为了完全不同的目的而生。它是一艘巨型远洋货轮。它的单核速度并不快,甚至有些迟钝,但它拥有成千上万个核心(如 RTX 3090 拥有 10,000+ 个核心)。它的目标不是让一个集装箱快速到达,而是一次性运送十万个集装箱。

这种设计是为了解决一类特定的问题:极度并行问题

在图形渲染中,屏幕上有 800 万个像素(4K),或者场景中有 1000 万个多边形。改变一个像素的颜色,通常不需要知道另一个像素是什么颜色。这种“互不依赖、可无限拆分”的任务,就是 GPU 的主战场。

第三章:SIMD —— 整齐划一的“方阵士兵”

早期的 GPU 为了实现这种海量吞吐,采用了最简单粗暴的并行策略:SIMD(Single Instruction Multiple Data,单指令多数据)

3.1 什么是 SIMD?

SIMD 的核心逻辑非常直观:既然有成千上万个数据需要做相同的处理,那为什么不发布一条指令,让大家同时执行呢?让我们来看一个经典的 3D 渲染案例:牛仔帽的坐标变换

SIMD实例:牛仔帽的坐标变换

想象一个 3D 场景中的牛仔帽,它由大约 14,000 个顶点(Vertex)构成。在数据层面,这顶帽子只是一堆 (x, y, z)坐标的集合。现在,我们需要把这顶帽子从“模型空间”(以帽子中心为原点)移动到“世界空间”(以游戏场景中心为原点)。

顶点坐标加法运算示例

在数学上,这意味着我们需要对这 14,000 个顶点同时加上一个坐标偏移量 (dx, dy, dz)。

  • 单指令(Single Instruction):  “将当前坐标加上偏移量”。
  • 多数据(Multiple Data):  这条指令被瞬间复制,并同时应用到帽子的 14,000 个顶点上。

在硬件内部,这就像是一个指挥官对着一万名士兵大喊:“向前一步走!”。一万名士兵(数据)在同一瞬间完成了动作。这就是 SIMD 的威力,它能在一个时钟周期内完成海量的加法运算。

而这仅仅是一帽子的顶点计算,一个3D场景如下图有5629个不同的Object 需要被计算。

3D场景中的众多物体

然后所有的这些 Objects 形成了大约8,300,000个顶点坐标信息,最后需要25,000,000次坐标矩阵变化,这就显现出来SIMD的优势。

拥有5629个物体的场景渲染

这些物体在3D世界里面作任何的动作,放大,缩小,旋转,坐标变换都要重新计算。

坐标变换矩阵示例(平移、旋转、缩放)

而且这些坐标变换只是3D Pipeline 的一个小步骤而已。 而每步都是大量的并行计算。

3.2 SIMD 的阿喀琉斯之踵:锁步(Lockstep)

然而,传统的 SIMD 有一个巨大的缺陷。在 SIMD 架构中,几十个线程被打包成一个“线程束”(Warp,在 NVIDIA 架构中通常为 32 个线程)。这个 Warp 就像是古希腊的重装步兵方阵。方阵中的所有士兵必须步调绝对一致(Lockstep)。如果所有士兵都走平路(执行简单的加法),那效率极高。但是,如果遇到复杂的逻辑分支(Branching)呢?

传统SIMD的局限:线程必须步调一致

假设代码中出现了 if-else 语句:

  • 如果顶点被光照亮(条件 A),则执行复杂的颜色计算。
  • 如果顶点在阴影中(条件 B),则直接显示黑色。

在一个 Warp 中,可能有一半的线程满足条件 A,另一半满足条件 B。

在严格的 SIMD 锁步机制下,硬件无法同时执行这两种不同的动作。

  1. 首先,所有满足条件 A 的线程执行计算,而满足条件 B 的线程必须暂停(Stall)等待。
  2. 接着,满足条件 B 的线程执行,满足条件 A 的线程暂停。
  3. 最后,它们重新汇合。

这种现象被称为“线程束发散”(Warp Divergence)。一旦发生发散,GPU 的并行效率就会大打折扣,因为总有一部分核心在“摸鱼”等待队友。这使得传统 SIMD 极难处理复杂的非图形任务。

第四章:SIMT —— 赋予士兵“独立思考”的能力

为了解决 SIMD 的死板,NVIDIA 在其现代架构(大约从 2006 年 G80 架构开始萌芽,并在后续架构中不断完善)中引入了 SIMT(Single Instruction Multiple Threads,单指令多线程) 模型。这是 GPU 进化史上的分水岭。它让GPU从单纯的“绘图卡”变成了“通用计算器”。

4.1 从“木偶”到“特种兵”

SIMT 在保留了 SIMD 高吞吐优势(依然是大量线程执行同一指令流)的同时,引入了几个关键的变革,让线程获得了“自由”:

架构演进对比图:从SIMD到SIMT

  1. 独立的程序计数器(Program Counter, PC):
    在传统 SIMD 中,整个方阵共享一个大脑(PC),大家只能听同一个口令。而在 SIMT 中,每个线程(或者说每个最小执行单元)都拥有了独立的逻辑状态记录。这意味着虽然它们大部分时间依然同步行动,但每个线程都知道自己“走到哪一步了”。独立的线程调度(Independent Thread Scheduling):
    当遇到 if-else 分支时,SIMT 架构允许线程暂时“分头行动”。现代 GPU(如 Volta 架构及之后)甚至引入了更高级的独立线程调度机制,硬件可以更灵活地管理不同分支的执行进度,并高效地在分支结束后进行重汇聚(Reconvergence)
  2. 共享 L1 缓存与数据交换:
    SIMT 允许一个流式多处理器(SM)内的线程共享高速 L1 缓存(在 GA102 中为 128KB)。这打破了数据孤岛。以前,士兵 A 算出的结果,士兵 B 很难直接拿来用。现在,通过共享内存,线程之间可以进行高效的数据协作。

总结来说:  如果说 SIMD 是踢正步的仪仗队,SIMT 就是佩戴了单兵通讯系统的特种作战群。他们依然听从总指挥的宏观调配(单指令),但在遇到具体地形障碍(逻辑分支)时,允许单兵进行战术机动,最后再从容归队。

这种灵活性,是 GPU 能够运行复杂的 AI 算法和通用计算程序的基石。

第五章:解剖怪兽 —— GA102 芯片的物理架构

理解了 SIMT 的逻辑,我们再来看看这种逻辑是如何固化为物理实体的。以 NVIDIA 的 GA102 核心(RTX 3090 的心脏)为例,这是一座由 283 亿个晶体管 构成的精密迷宫。

GA102芯片物理架构层级图

这座迷宫有着严格的层级结构,像极了俄罗斯套娃:

  1. GPC(图形处理集群):  整个芯片包含 7 个 GPC。你可以把每个 GPC 想象成一个独立的“工业区”。
  2. SM(流式多处理器):  每个 GPC 包含 12 个 SM。SM 是 GPU 的核心干活单位,相当于一个拥有全套设施的“大型车间”。 每个 SM 拥有自己的指令调度器、L1 缓存和寄存器堆。
    • 关键点:  SM 是 SIMT 模型执行的最小全功能模块。
  3. Warp(线程束):  每个 SM 被划分为 4 个分区,每个分区负责调度一个 Warp(32 个线程)。
  4. CUDA 核心:  这是最底层的“工人”。在 GA102 中,一个 SM 包含 128 个 CUDA 核心。

5.1 三种核心,三种使命

现代 GPU 不再只有一种核心。为了应对不同的数学问题,GA102 GPU SM 内部集成了三种专用的处理单元:

三种核心功能对比图:CUDA Core, Tensor Core, RT Core

  1. CUDA Core(流处理器):
    a.  数量:  10,752 个(RTX 3090 Ti)。
    b.  职责:  通用计算的“万金油”。擅长做 FP32(单精度浮点)运算,也就是最基础的 A *  B + C(FMA 运算)。它们是传统游戏渲染和通用计算的主力。
  2. RT Core(光追核心):
    a.  数量:  84 个。
    b.  职责:  极其特殊的专用电路。它们只做一件事:计算光线与三角形是否相交。这是光线追踪技术中最耗时的部分,如果用 CUDA 核心硬算,帧率会跌成 PPT。RT Core 的加入让实时光追成为可能。
  3. Tensor Core(张量核心):
    a.  数量:  336 个。
    b.  职责:  AI 时代的真正主角。 我们稍后会详细讲它。

第六章:GPGPU 与 AI —— 极度并行的终极舞台

如果 GPU 只是为了玩游戏,那它永远只能是“显卡”。但 SIMT 的出现,开启了 GPGPU(General-Purpose computing on GPU,通用图形处理器计算) 的大门。人们发现,不仅是图形渲染,世界上还有很多问题在本质上是“极度并行”的。

其中最著名的两个应用,就是比特币挖矿人工智能(AI)

6.1 挖矿:暴力的彩票游戏

比特币挖矿本质上是在玩一个暴力猜数字的游戏(哈希碰撞)。你需要不断地尝试一个随机数(Nonce),代入 SHA-256 算法,看生成的结果是否前面有足够多的 0。

比特币挖矿原理示意图

每一次猜测都是完全独立的。第一次猜错不影响第二次猜测。这简直是为 GPU 量身定做的任务。GPU 的数千个核心可以同时尝试数千个不同的随机数。这就是为什么前几年显卡价格飞涨的原因——它们是完美的数字矿铲。

6.2 AI 与张量核心:矩阵运算的艺术

然而,真正让 GPU 封神的,是 AI,特别是深度学习

神经网络的本质是什么?无论是识别猫的图片,还是 GPT-4 写诗,其底层的计算 99% 都是矩阵乘法(Matrix Multiplication)。想象两个巨大的矩阵相乘。这涉及到成千上万次的“乘法求和”操作。而且,这些操作也是极度并行的——计算矩阵左上角的值,不需要等待右下角的值算完。

为了加速这种特定的运算,NVIDIA 在 GPU 中加入了 Tensor Core(张量核心)

  • 普通 CUDA 核心:  做一次乘法,再一次加法,需要多个时钟周期,像是在用计算器按 1 * 2 + 3。
  • Tensor Core:  这是一个专用的矩阵计算器。它可以在一个时钟周期内,完成一个 4 4矩阵的完整乘加运算(D = A B + C)。在 AI 训练和推理中,这种效率的提升是指数级的。正是 Tensor Core 的存在,使得现在的 GPU 不再仅仅是图形渲染器,而是AI 加速器

6.3 喂饱怪兽:HBM 与带宽的瓶颈

有了能在瞬间吞噬数据的 Tensor Core,传统的显存(VRAM)开始跟不上了。如果核心计算太快,而数据还在内存条上排队传输,核心就会闲置。这就是为什么顶级 AI 芯片(如 H100)不使用普通的 GDDR 显存,而是使用 HBM(High Bandwidth Memory,高带宽存储器)

Tensor Core运算与HBM内存示意图

HBM 技术通过“硅通孔”(TSV)技术,像盖摩天大楼一样将存储芯片垂直堆叠起来,并直接安放在 GPU 核心旁边。这提供了像高速公路一样宽阔的数据通道(带宽可达数 TB/s),确保 Tensor Core 这头吞金兽永远有数据可以“吃”。

结语:从像素到智慧

回顾 GPU 的发展史,我们看到了一条清晰的进化路线:

  1. SIMD 时代:  为了处理海量像素,GPU 变成了整齐划一的“方阵士兵”,牺牲了灵活性换取了极致的吞吐量。
  2. SIMT 时代:  为了处理更复杂的图形效果,GPU 引入了独立线程逻辑,变成了灵活的“特种部队”,无意中开启了通用计算的大门。
  3. AI 时代:  恰逢神经网络崛起,其对矩阵运算的极度并行需求,与 GPU 的架构完美契合。加上 Tensor Core 和 HBM 的硬件加持,GPU 最终成为了现代人工智能的物理基石。

GPU作为现代计算通用加速器的总结图

今天,当我们谈论 GPU 时,我们谈论的不再仅仅是帧率和分辨率。我们谈论的是天气模拟、药物研发、自动驾驶以及通用人工智能的未来。那个曾经只为了让我们在屏幕上看到逼真爆炸效果的芯片,如今正在计算着人类的未来。这,就是架构演进的力量。

如果您对更多关于计算机系统架构的深度内容感兴趣,欢迎在云栈社区与众多技术爱好者一起交流探讨。




上一篇:垃圾袋再设计:工业设计如何将日常消耗品转化为场景化解决方案
下一篇:无锁编程实战:深入解析Dekker算法原理与并发互斥实现
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-2 23:22 , Processed in 0.370615 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表