1. GPU概述:GPU的发展历史、GPU与CPU的区别、GPU在图形处理中的核心地位

1.1 从图形加速卡到通用计算巨兽

说起GPU的发展史,我入行那会儿正好赶上从固定管线向可编程管线的过渡期。说实话,那时候的GPU还只能叫「图形加速卡」,功能单一得很。

最早期的GPU,比如1999年NVIDIA发布的GeForce 256,它第一次把变换、光照、三角形设置/裁剪这些操作从CPU手里接了过来。你想想看,在这之前,3D游戏里的每一个顶点变换都得靠CPU算,那画面能流畅才怪。

到了2001年,NVIDIA GeForce 3和微软DirectX 8引入了可编程着色器(Shader)。这是个里程碑——开发者终于可以自己写小段程序来控制顶点和像素的处理方式了。我记得当时第一次在项目中用Shader实现水面效果,那种兴奋感至今难忘。

再往后,2006年NVIDIA发布了CUDA架构,GPU正式从「图形专用」走向「通用计算」。说白了,GPU不再只是用来画图的,它还能做科学计算、深度学习、密码破解。嗯,这里要提一句,我曾在项目中用GPU做实时物理模拟,效果比CPU快了将近两个数量级。

关键里程碑总结:

  • 1999年:GeForce 256,首个集成T&L的GPU
  • 2001年:可编程着色器诞生
  • 2006年:CUDA架构,GPU通用计算时代开启
  • 2010年代:GPU成为AI训练的核心硬件

1.2 GPU与CPU:天生不同

很多人问我:「GPU和CPU到底差在哪?」我通常用一个比喻来解释:CPU是法拉利,GPU是卡车队。

CPU有强大的单线程性能,擅长处理复杂的逻辑分支和串行任务。它只有几个核心(现在主流也就8-16核),但每个核心都很大、很智能,有复杂的乱序执行、分支预测、大容量缓存。

GPU呢?它有成百上千个小核心。每个核心很小、很傻,但数量多。它擅长做同一件事的重复计算——比如同时处理几百万个像素的颜色。

对比维度 CPU GPU
核心数量 4-16个 数百到数千个
核心复杂度 高(乱序执行、分支预测) 低(顺序执行为主)
缓存设计 大容量多级缓存 小缓存,高带宽
擅长任务 串行、逻辑复杂 并行、数据密集
内存带宽 几十GB/s 数百到数千GB/s

为什么会这样?因为设计目标完全不同。CPU要处理各种不可预测的任务——你永远不知道用户下一秒会点哪个按钮。GPU面对的是高度规律的数据:几千个顶点、几百万个像素,每个的处理方式几乎一样。

避坑指南:我曾经在项目中试图用GPU加速一个逻辑分支极多的算法,结果性能还不如CPU。后来才明白——GPU最怕的就是分支发散(warp divergence)。说白了,如果32个线程走不同的分支,那它们只能串行执行,效率大打折扣。

1.3 GPU在图形处理中的核心地位

现在的图形渲染管线,从顶点输入到像素输出,几乎每一步都离不开GPU。我个人习惯把渲染管线分成三个阶段来看:

1.3.1 几何处理阶段

这个阶段处理的是3D模型中的顶点数据。包括顶点变换、光照计算、裁剪、屏幕映射。GPU的顶点着色器(Vertex Shader)就是干这个的。你想想看,一个游戏场景可能有几十万个三角形,每个三角形3个顶点,每个顶点要做矩阵乘法、法线变换——这计算量,CPU根本扛不住。

1.3.2 光栅化阶段

这是GPU最核心的活儿。把连续的几何数据(三角形)转换成离散的像素片段。说白了,就是决定「这个三角形覆盖了屏幕上的哪些像素」。GPU内部有专门的光栅化硬件单元,效率极高。我曾在项目中尝试用CPU做软光栅化,处理一个1080p的简单场景就卡成了PPT。

1.3.3 像素处理阶段

每个像素片段都要经过像素着色器(Pixel Shader)处理,计算最终颜色。这里涉及纹理采样、光照计算、阴影、反射等等。现代游戏中的那些炫酷特效——比如次表面散射、环境光遮蔽——全是在这个阶段完成的。

核心观点:没有GPU,就没有实时3D图形。CPU可以完成所有图形计算,但速度会慢几个数量级。GPU通过大规模并行架构,把图形渲染从「不可能实时」变成了「60帧流畅运行」。

1.4 我的几点体会

做了这么多年GPU相关的工作,我有几点体会想分享:

  • 理解并行度是关键:写GPU程序时,要时刻想着「这件事能不能拆成几千份同时做」。
  • 内存访问模式很重要:GPU的显存带宽很高,但延迟也很大。合并访问(coalesced access)和缓存友好性,直接影响性能。
  • 不要盲目追求通用计算:不是所有算法都适合GPU。我曾经见过有人用GPU算斐波那契数列——嗯,那效率还不如一个10块钱的计算器。

注意:GPU虽然强大,但它不是万能的。对于分支密集、数据依赖强的任务,CPU仍然是更好的选择。选对工具,比用好工具更重要。

好了,这一章我们聊了GPU的来龙去脉、它和CPU的本质区别,以及它在图形处理中不可替代的地位。下一章,我会带大家深入渲染管线的第一站——顶点处理阶段。到时候咱们再细聊。