本文是《深入Linux GPU AMD GPU渲染与AI技术实践》读书笔记,以通俗简洁的方式重述知识。
干货长文预警,建议您做好准备。
关键词: Linux GPU 计算机图形学



AMD显卡的历史与核心技术

架构历史

GCN为通用历史架构、RDNA主要服务游戏,CDNA服务计算。了解目标不同即可。

  • GCN(Graphic Core Next)
    该架构于 2011 年底随 HD7000 系列显卡推出,后续 2013 - 2019 年间,AMD 仅对其做小幅升级,先后推出 GCN2.0 到 GCN5.0 版本,在 2019 年被 RDNA 架构取代。
  • RDNA(Radeon DNA)
    2019 年 AMD 推出第一代 RDNA 架构,彻底取代 GCN 架构,应用于 Radeon RX 5000 系列显卡,后续持续迭代,该架构始终聚焦消费级游戏市场,不断优化游戏能效与画质表现。
  • CDNA(Compute DNA)
    它是 AMD 专为数据中心和高性能计算打造的架构,2020 年第一代 CDNA 以 7 纳米工艺亮相,对应 Instinct MI100 系列 GPU;2021 年 CDNA 2 升级为 6 纳米工艺;2023 年的 CDNA 3 采用 5 纳米 + 6 纳米混合工艺;2025 年发布的 CDNA 4 采用 3 纳米工艺。

核心技术

与核心内容无关,不做介绍。
AMD Advantage、FidelityFX、SSR、AMD Infinity。

显卡的计算硬件结构

硬件区别(相比CPU)

了解CU的区别即可

  • 核心极多,每个核心结构极简(无复杂分支预测、缓存小),专注于计算本身,多个简单核心打包成一个计算单元(AMD 的 CU、NVIDIA 的 SM)。
  • 缓存小且以 “共享缓存” 为主,依赖高带宽显存(HBM/GDDR)补充。
  • 支持简化指令集(如 GCN/RDNA 的 SIMD、NVIDIA 的 CUDA Core),专注并行计算。

着色器

重点了解,着色器是GPU工作原理的核心部分。

着色器的原理

着色器(Shader)只是历史遗留命名。GPU上运行的计算程序都可认为是广义着色器,后续提到的大多数程序和“着色”本身没有关系。
着色器是用 GLSL/HLSL/Cg 等专门语言编写,运行在 GPU 上的小程序,控制渲染管线特定阶段的行为。对顶点 / 像素数据进行计算,实现各种视觉效果(光照、纹理、阴影等)。

着色器的分类

  • 顶点着色器:顶点坐标变换(模型→世界→裁剪空间)、光照计算
  • 像素 (片段) 着色器:计算每个像素最终颜色(纹理采样、光照、阴影)
  • 几何着色器:动态创建 / 修改几何图元,生成粒子效果
  • 计算着色器:通用并行计算

现行GPU为统一着色器架构,不同的着色器使用完全相同的硬件资源。

指令集

重点了解SIMD原理,并行计算的基石。现代GPU多采用SIMD和SIMT混合的架构。

SIMD

  • 核心逻辑:一条指令同时处理多个相同类型的数据(比如同时对 8 个浮点数做加法),是并行计算的基础。
  • 硬件特点:GPU 的计算单元(如 AMD 的 CU、NVIDIA 的 SM)内置 SIMD 单元(如 SIMD32/SIMD64),每个单元包含多个算术逻辑单元(ALU),共享一个指令控制器。

SIMT

  • 核心逻辑:一条指令同时控制多个独立线程,每个线程处理一个数据,线程间可独立执行(但指令同步),是 GPU 并行的核心架构。
  • 硬件特点:基于 SIMD 扩展,每个线程有独立寄存器、程序计数器,支持线程级调度(如 NVIDIA 的 Warp(32 线程)、AMD 的 Wavefront(64 线程));遇到分支(if-else)时,会通过 “分支发散” 处理(不同路径的线程轮流执行)。

层次结构

了解即可
CU 包含 SIMD 核心,SIMD 核心又由流处理器组成,具体关系如下:

  • CU(计算单元):是 AMD GPU 的基础算力模块,每个 CU 会包含多个 SIMD 核心,还搭配标量单元、缓存等辅助部件,负责调度内部 SIMD 核心的任务分配与资源协调。
  • SIMD 核心:是 CU 内部的核心运算子模块,每个 SIMD 核心有专属寄存器组,能按单指令多数据的方式批量处理数据。比如 AMD GCN 架构中一个 CU 包含 4 个 SIMD 核心。
  • 流处理器:是最基础的计算单元(通常表现为矢量运算单元),是实际执行算术运算的 “最小单元”。例如 GCN 架构中,每个 SIMD 核心包含 16 个流处理器。

显卡的硬件图形管线

R600图形流水线解读

重中之重!理解流水线中各单元的作用。
R600的流水线主要由前端(Frontend)、统一着色器核心(Unified Shader Core)和后端(Backend)组成。

1. 前端(Frontend)

  • 输入装配器 (Input Assembler, IA): 负责读取顶点数据(如坐标、法线、纹理坐标)并将其装配成基本图元(如点、线、三角形)。
  • 顶点着色器 (Vertex Shader, VS) / Hull & Domain Shader (Tessellation): 传统的顶点着色器处理每个顶点。R600也包括**曲面细分(Tessellation)**阶段,由Hull Shader和Domain Shader组成,用于在GPU上动态生成更多的几何细节。
  • 几何着色器 (Geometry Shader, GS): 可选择的阶段,接收一个完整的图元(如三角形)作为输入,并可以输出零个、一个或多个新的图元。
  • 流输出 (Stream Output): 允许将几何着色器或顶点着色器的输出数据捕获到内存中,以便后续阶段或CPU使用。

2. 光栅化与设置(Rasterization & Setup)

  • 图元设置 (Primitive Setup): 对图元进行裁剪(Clipping)和屏幕空间映射(Viewport Transformation)。
  • 光栅化 (Rasterizer): 将几何图元(如三角形)转换为屏幕上的像素片段(Fragments)。它决定哪些像素被三角形覆盖。

3. 统一着色器核心 (Unified Shader Core) - 流处理单元 (Stream Processors)

这是R600架构的核心创新。所有可编程着色器类型(顶点、几何、像素/片段)都在这个统一的着色器阵列上执行,而不是使用专用的硬件。

  • 着色器执行 (Shader Execution): 统一调度器将来自不同阶段(VS, GS, PS)的工作分配给流处理单元
    • 像素着色器 (Pixel Shader, PS): 也称为片段着色器。对光栅化产生的每个片段执行计算,如光照、阴影、纹理采样等,最终确定像素的颜色。

4. 后端(Backend)

  • 纹理单元 (Texture Units): 在着色器执行过程中,负责从内存中读取和过滤纹理数据。
  • 输出合并器 (Output Merger, OM) / 光栅操作 (ROP): 最终阶段,处理片段着色器输出的颜色,并将其写入帧缓冲区(Frame Buffer)。
    • 深度测试和模板测试 (Depth/Stencil Test): 检查片段是否可见,并在必要时更新深度和模板缓冲区。
    • 混合 (Blending): 将新计算的颜色与帧缓冲区中已有的颜色进行混合(例如,用于透明度)。

简而言之,R600流水线的工作是:从输入几何体 → \rightarrow 经过可编程着色 → \rightarrow 光栅化成像素片段 → \rightarrow 再次着色 → \rightarrow 最终合并到屏幕。

低功耗技术

了解即可
IMR、TBR、TBDR是三种GPU渲染架构。IMR主打桌面端即时渲染,TBR和TBDR主打移动端低功耗分块渲染,且TBDR是TBR的优化升级版,具体简洁介绍如下:

  1. IMR(立即模式渲染)
    渲染命令提交后立即执行,需等当前命令走完完整流水线再执行下一条。优点是架构简单,适配桌面端复杂模型,兼容DirectX等桌面API;缺点是易出现过度绘制,且需频繁读写显存,带宽和功耗消耗大,常见于NVIDIA、AMD的桌面显卡。
  2. TBR(基于分块的渲染)
    先将画面分割为多个小区块(tile),先处理所有顶点数据并为每个区块生成专属图形列表,再逐块在片上高速缓存中完成渲染,最后整体写回显存。优点是大幅减少显存访问,降低带宽和功耗;缺点是有预处理延迟,顶点过多时缓存压力大,多用于高通Adreno、ARM Mali等移动GPU。
  3. TBDR(基于分块的延迟渲染)
    核心逻辑和TBR一致,额外增加了隐藏面消除(HSR)步骤。在片段着色前通过深度测试标记可见像素,仅对可见像素执行着色,几乎消除过度绘制。优点是能效比更高,渲染效率优于TBR;缺点是对透明物体渲染适配性差。

显卡的内存硬件结构

了解即可

核心缓存层

这一层负责降低显存访问延迟,提升数据复用效率。一是Infinity Cache(高速缓存),作为AMD的特色缓存技术,是连接计算核心与显存的关键。Infinity Cache 本质是 AMD GPU 的片上 L3 缓存,多集成在缓存 I/O 芯片(MCD)中,连接 L2 缓存与显存,是面向整个 GPU 核心的全局级缓存,层级高于 LDS。

比如RDNA 3架构的RX 7900 XTX配备96MB该缓存,RDNA 5旗舰型号预计将其提升至128MB;CDNA
4架构的MI350系列也搭载256MB该缓存,可减少对显存的频繁调用。

二是本地数据存储(LDS),属于计算单元(CU)的共享内存,供线程组高速交换数据,不同 CU 的 LDS 相互独立,无法跨 CU 共享数据。CDNA 4架构还将其带宽翻倍以提升并行效率。此外,每个计算复合体(如CDNA的XCD)会配备L2缓存,用于统筹局部数据调度。

主显存层

作为数据存储核心,不同用途的GPU选用不同显存类型。

游戏向的RDNA架构多配GDDR6,像RX 7900 XTX有24GB
GDDR6显存,搭配384位显存位宽保障游戏数据传输速度;计算向的CDNA架构则主打HBM3E这类高带宽显存,如MI350系列配备288GB
HBM3E显存,峰值带宽达8TB/s,适配AI训练等海量数据场景。且HBM通过堆叠封装与GPU芯片经中介层互联,在缩小体积的同时降低功耗。

互连与控制层

这一层负责协调各内存组件的数据传输。一方面靠Infinity Fabric(无限结构) 实现小芯片间的高速互连,

比如RDNA 3的图形计算芯片(GCD)与多缓存I/O芯片(MCD)通过该技术连接,峰值带宽达5.3TB/s

;另一方面配备多个内存控制器

,如RDNA 5顶级型号有16个32位统一内存控制器,总位宽达512位

。同时,CDNA架构还配有增强型通用转换缓存(UTC)优化虚拟内存管理,并支持NUMA模式分区,灵活适配不同计算负载。

显卡的显示输出

与主题弱相关,此处省略。

显示方式

DCC与EDID

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐