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的本质区别,以及它在图形处理中不可替代的地位。下一章,我会带大家深入渲染管线的第一站——顶点处理阶段。到时候咱们再细聊。