第一章:起点——图形世界的统治者与摩尔定律的挑战
1993年,当黄仁勋(Jensen Huang)与克里斯·马拉科夫斯基(Chris Malachowsky)、柯蒂斯·普里姆(Curtis Priem)在加州圣克拉拉的一间小办公室里写下英伟达(NVIDIA)的商业计划时,他们或许未曾想到,这家专注于图形处理的公司将在三十年后成为全球人工智能算力的核心引擎。英伟达的起点,是PC图形世界的统治者之路,却意外地成为算力革命的发端。本章将带你回到那个个人电脑图形革命的时代,探索英伟达如何从一家初创企业起步,在GPU市场血战中生存下来,并发现并行计算的巨大潜力——这最终成为AI时代的基石。我们将深入剖析GPU与CPU的根本区别,解释为何图形处理需求天然适合并行计算,并通过时间线图表,清晰展示1993年至2006年英伟达的关键产品迭代与市场地位确立过程。同时,我们会探讨当时整个行业面临的“摩尔定律放缓”挑战,以及英伟达如何将这一挑战转化为机遇。理解这段历史,是认识当今AI算力格局的起点。
英伟达的创立与早期图形市场的混沌
1993年,个人电脑正处于从文本界面向图形用户界面(GUI)过渡的关键时期。微软的Windows 3.1刚刚发布,其图形界面要求更高的显示性能,而游戏产业也因《毁灭战士》(Doom)和《神秘岛》(Myst)等作品的流行,开始渴求逼真的3D视觉效果。然而,当时的CPU(中央处理器)如Intel 80486,虽然主频已达数十MHz,却难以实时渲染复杂的3D场景。图形处理任务严重拖累系统性能,用户常常需要为运行一款3D游戏而升级整机。正是在这一背景下,三位来自Sun Microsystems和LSI Logic的工程师——黄仁勋、马拉科夫斯基和普里姆——看到了专用图形硬件的巨大机会。他们于1993年9月创立了NVIDIA(取自拉丁文“invidia”,意为“嫉妒”,寓意其产品令人羡慕),目标是开发高性能的图形协处理器,将图形计算从CPU中解放出来。
英伟达的首款产品NV1于1995年问世,它是一款集2D/3D图形、音频功能于一体的多媒体芯片。NV1的技术亮点在于支持二次曲面(quadratic surfaces)纹理映射,这是一种比当时主流三角形多边形更高效的3D建模方式。然而,NV1的市场表现却惨淡不堪。根本原因在于它未能兼容微软刚发布的DirectX标准——DirectX采用三角形作为基本图元,而NV1的二次曲面技术与之格格不入。游戏开发者不愿为小众硬件单独优化,OEM厂商也转向支持开放标准的竞争对手。NV1的失败给英伟达上了残酷的一课:在快速迭代的PC行业,拥抱开放标准比追求技术独创性更重要。黄仁勋后来回忆:“那是一次痛苦的教训,但让我们明白了生态系统的力量。”
这次挫折促使英伟达彻底转向。公司裁员一半,并全力研发支持Direct3D的下一代产品。1997年,RIVA 128(Reliable Information Video Acceleration)发布,成为首款完全支持微软Direct3D标准的主流图形芯片。RIVA 128凭借其出色的3D性能、合理的价格以及对OpenGL的较好支持,迅速赢得IBM、Dell等OEM厂商的订单,市场占有率从近乎零飙升至约20%。这一产品的成功验证了两个关键战略:一是坚决遵循行业标准,二是以高性价比切入主流市场。RIVA 128不仅为英伟达带来急需的现金流,更奠定了其“快速跟进、大规模量产”的商业基因。
GPU与CPU:架构的分野与并行计算的本质
要理解英伟达为何能从图形处理器崛起为AI算力霸主,首先必须厘清GPU(图形处理单元,Graphics Processing Unit)与CPU(中央处理器,Central Processing Unit)在架构设计上的根本差异。这种差异并非简单的性能高低,而是源于两种处理器所针对的计算范式截然不同:CPU追求低延迟的通用串行处理,GPU追求高吞吐量的数据并行处理。
CPU:通用计算的“大学教授” CPU的设计哲学是“通用性”与“低延迟”。它需要操作系统、应用程序、中断响应等多样化的任务,因此其架构围绕以下核心构建:
- **少量强大核心**:现代CPU通常拥有4至64个核心,每个核心配备复杂的控制单元、乱序执行引擎、分支预测器和大容量缓存(L1/L2/L3)。这些特性使其能高效处理依赖链长、逻辑复杂的顺序任务。
- **高单线程性能**:CPU追求极高的时钟频率(如Intel Core i9可达5.0 GHz以上),通过深度流水线、超标量执行等技术,在最短时间内完成单个任务。
- **优化延迟而非吞吐量**:CPU的缓存层次结构和预取机制旨在减少内存访问等待时间,确保关键路径快速执行。
比喻而言,CPU如同一位大学教授:他能独立解决复杂的学术问题(如推导定理),但一次只能深入思考一个课题。如果让他批改一千份完全相同的试卷,他会因反复切换思路而效率低下。
GPU:并行处理的“千军万马” GPU则诞生于一个截然不同的需求:图形渲染需要同时处理数百万个像素或顶点,每个元素的计算模式高度相似但数据独立。这催生了“数据并行”架构:
- **海量简化核心**:现代GPU包含数千个流处理器(Stream Processors)或CUDA核心。这些核心结构简单,无复杂分支预测,但数量庞大(如NVIDIA H100拥有超过18000个CUDA核心)。
- **高吞吐量设计**:GPU的时钟频率通常低于CPU(约1-2 GHz),但其内存带宽极高(H100达3.35 TB/s),并采用SIMD(单指令多数据)或SIMT(单指令多线程)架构,使单个指令能同时作用于成百上千个数据元素。
- **优化吞吐量而非延迟**:GPU的缓存较小,但依赖大量寄存器和高带宽显存(GDDR6或HBM),确保数据能快速喂给所有核心。
GPU如同一个军训方阵:数千名士兵(核心)同时执行相同的动作(指令),如正步走。虽然单个士兵能力简单,但整体能瞬间完成大规模重复任务。若让这个方阵去解一道微分方程(串行任务),则因缺乏复杂逻辑单元而效率极低;但若让每个士兵计算一个像素的颜色,则方阵的吞吐量远超任何大学教授。
技术对比表格 下表量化了典型CPU与GPU的架构差异(基于2020年代主流产品):
| 特性 | CPU (Intel Xeon Platinum 8380) | GPU (NVIDIA A100) | |------|--------------------------------|-------------------| | 核心数量 | 40 个物理核心 | 6912 个CUDA核心 | | 时钟频率 | 2.3 GHz (基础) / 3.4 GHz ( turbo) | 1.41 GHz | | 缓存 | 60 MB L3 缓存 | 40 MB L2 缓存 | | 内存带宽 | 200 GB/s (DDR4) | 1.6 TB/s (HBM2) | | 主要优化目标 | 低延迟、单线程性能 | 高吞吐量、数据并行 | | 典型应用场景 | 操作系统、数据库、控制逻辑 | 渲染、科学计算、AI训练 |
这种架构分野决定了:**对于高度并行、规则统一的计算任务(如图形渲染
图形管线:并行计算的天然试验场
要理解GPU为何能成为并行计算的理想平台,必须深入其核心任务——图形渲染管线(Graphics Rendering Pipeline)。这一管线是将3D场景转化为2D屏幕图像的标准化流程,其每一步都天然适合大规模并行处理。我们可以将整个渲染过程类比于建造一座虚拟城市:从设计建筑蓝图(顶点处理),到搭建城市框架(几何装配),再到为每栋建筑涂装(像素着色),最后计算光照效果(光栅化与着色)。这些步骤中,绝大多数操作都可以同时进行,互不干扰——这正是并行计算的黄金场景。
渲染管线的并行性分解
现代图形管线可划分为五个主要阶段,每个阶段的并行潜力如下:
1. 顶点处理(Vertex Processing) 3D模型由成千上万个顶点(Vertex)定义,每个顶点包含位置、法线、纹理坐标等数据。在渲染一帧时,GPU需要将顶点从模型空间转换到屏幕空间(通过模型-视图-投影变换)。由于每个顶点的变换完全独立,GPU可将数千个顶点同时送入大量并行核心处理。例如,渲染一个拥有10,000个顶点的复杂角色模型时,CPU可能需要循环10,000次,而GPU可一次性启动数千个线程,每个线程处理一个顶点,耗时仅为CPU的几十分之一。
2. 图元装配与裁剪(Primitive Assembly & Clipping) 顶点被连接成图元(通常是三角形)。这一阶段虽有一定顺序依赖(需等待顶点处理完成),但不同图元之间仍可并行处理。GPU通过并行图元装配器同时组装多个三角形,并利用视锥体裁剪(Clipping)剔除屏幕外部分,为后续阶段减少冗余计算。
3. 光栅化(Rasterization) 将矢量图元转换为像素(或片段,Fragment)的过程。这是管线中并行性最极致的阶段:一个三角形覆盖的数千个像素可被同时计算。GPU将三角形分割为2×2像素块(称为“瓦片”,Tile),每个瓦片由一组线程并行处理。例如,一个覆盖1920×1080屏幕的三角形,可能涉及超过200万个像素,GPU可同时计算其中数万个像素的属性(如深度、插值纹理坐标)。
4. 像素/片段着色(Fragment Shading) 为每个像素计算最终颜色,包括纹理采样、光照计算、阴影等。这是计算最密集的阶段,也是GPU核心数量最多的原因。现代游戏中的每个像素可能需执行数十条着色器指令,包括多次纹理查找和数学运算。由于相邻像素的计算通常独立(除非涉及屏幕空间效果如SSAO),数万个着色器核心可同时工作。以NVIDIA RTX 4090为例,其拥有16,384个CUDA核心,在4K分辨率下每帧需处理约830万像素,若每个像素着色耗时100个周期,串行处理需83亿周期,而并行处理仅需约5,000周期(忽略调度开销)。
5. 输出合并(Output Merging) 将片段颜色与帧缓冲区混合,处理深度测试、模板测试和混合。此阶段有一定顺序依赖(需按像素位置排序),但GPU通过分区并行(将屏幕分割为瓦片,每个瓦片独立处理)和异步混合引擎实现高吞吐量。
关键洞察:图形管线的并行性并非“完美并行”——部分阶段(如顶点着色与光栅化之间存在依赖)需流水线协调。但GPU通过超量流水线设计(Deep Pipeline)和线程调度器隐藏延迟:当一个线程组等待纹理数据时,调度器立即切换至另一组就绪线程,保持核心满载。这种设计使GPU在图形负载下始终维持>90%的利用率,而CPU在类似并行任务中利用率常低于30%。
图形需求如何驱动硬件创新
图形市场的竞争直接推动了GPU架构的演进,而每一次架构升级都意外提升了通用并行计算能力:
- **可编程着色器的诞生(2001-2004)**
早期GPU(如NVIDIA GeForce 3)的顶点和像素着色器仅支持固定功能。2001年,微软DirectX 8引入可编程顶点着色器(Programmable Vertex Shader),允许开发者用HLSL/GLSL编写自定义变换逻辑。2004年DirectX 9又加入可编程像素着色器。这标志着GPU从“固定功能电路”转向“可编程流处理器”。 suddenly,GPU不再是单纯的图形加速卡,而是数千个可编程核心的并行计算机。游戏开发者开始用着色器语言实现物理模拟、粒子效果等非图形算法——尽管初衷是提升视觉效果,但硬件已具备通用计算潜力。
- **统一着色器架构(2006)**
NVIDIA GeForce 8800 GTX(G80架构)是里程碑产品。此前,GPU的顶点着色器和像素着色器是独立硬件单元,常导致资源失衡(如顶点密集型场景时像素单元闲置)。G80首次采用统一着色器架构(Unified Shader Architecture),将所有着色器核心设计为通用流处理器,可根据负载动态分配。这意味着,当图形管线某一阶段需求低时,这些核心可被用于其他计算。这一架构创新直接为后来的CUDA铺平道路——CUDA核心本质上就是G80统一着色器的通用化版本。
- **并行内存子系统**
图形渲染需要同时访问大量纹理和帧缓冲区数据,这催生了GPU的高带宽内存设计:
- **GDDR显存**:专为GPU高吞吐量优化,早期DDR显存带宽仅数GB/s,而GDDR3(2005)已达20+ GB/s。
- **内存控制器并行化**:GPU配备数十个内存通道,可同时服务不同核心组的请求。
- **缓存层次重构**:GPU缓存小而多(如L1缓存每SM一个),减少核心间争用,而CPU依赖大容量共享缓存。
这些设计使GPU在数据并行任务中内存访问效率远超CPU。
案例研究:《毁灭战士3》与GPU并行潜力的觉醒
2004年id Software发布的《毁灭战士3》(Doom 3)是展示GPU可编程能力的经典案例。其延迟着色(Deferred Shading)技术彻底改变了渲染流程:
- **传统前向渲染**:每个物体依次处理,每处理一个物体即进行光照计算。若场景中有100个物体和10个光源,需进行1000次光照计算,且大量像素被重复处理(如被遮挡像素)。
- **延迟着色革新**:
1. 几何阶段:一次性渲染所有物体到G缓冲(G-Buffer),存储位置、法线、材质等数据(此阶段高度并行,每个像素独立写入)。 2. 光照阶段:对屏幕每个像素,从G缓冲读取数据并计算所有光源贡献。由于光照计算仅针对可见像素,且可并行处理(每个像素独立),效率大幅提升。
《毁灭战士3》的引擎要求GPU同时处理大量动态光源(如爆炸、枪火),这在当时CPU几乎无法实时完成。而GPU的并行架构使每个像素的光照计算可分配到不同着色器核心,最终实现每秒60帧的复杂光影效果。更深远的影响是,开发者开始意识到:GPU不仅能加速图形,还能加速任何可分解为“对大量独立数据应用相同操作”的算法。物理模拟(如布料、流体)、图像处理(如模糊、降噪)等非图形任务,开始被移植到GPU上运行——尽管当时缺乏标准编程模型,开发者仍需使用图形API(如OpenGL)的“技巧”来执行通用计算(称为GPGPU,通用GPU计算)。
摩尔定律的放缓:挑战与转折点
1993年至2005年是PC行业的黄金时代,英特尔处理器主频从25MHz飙升至3.8GHz以上,性能年增长率约50%,这被归结为摩尔定律(Moore's Law)的胜利——集成电路上可容纳的晶体管数目,约每两年翻倍。然而,从2005年前后,这一趋势遭遇根本性挑战,英伟达的崛起恰与这一行业转折共振。
摩尔定律放缓的技术根源
摩尔定律的放缓并非晶体管密度增长停滞(密度仍在按约18个月周期翻倍),而是性能提升效率的下降,根源在于:
1. 功耗与散热墙(Power Wall) 随着时钟频率提升,CPU功耗呈立方级增长($P \propto f^3$)。2004年,英特尔 Prescott 核心Pentium 4(90nm工艺)主频达3.8GHz,但功耗超过100W,远超散热解决方案极限。继续提频将导致芯片熔毁, industry被迫转向多核设计而非高频单核。2005年,英特尔放弃NetBurst架构,转向酷睿微架构,主频回归2-3GHz区间,性能提升依赖核心数量增加。但多核并行需要软件支持,而当时绝大多数应用程序仍是串行设计,并行化瓶颈显现。
2. 指令级并行(ILP)挖掘殆尽 CPU性能提升曾依赖深度流水线、乱序执行、分支预测等技术,以在单个核心内同时处理多条指令。但这些技术的收益递减:流水线越深,分支错误惩罚越大;乱序执行窗口有限,难以找到更多独立指令。2000年代初,CPU的每时钟周期指令数(IPC)增长几乎停滞,从Pentium Pro到Core 2 Duo仅提升约50%,远低于频率增长。
3. 内存墙(Memory Wall) CPU速度与内存速度的差距持续扩大。1990年代,CPU主频每18个月翻倍,而DRAM带宽每5年仅翻倍。到2005年,CPU等待内存数据的时间占比超50%,即使增加缓存,受限于局部性原理,也无法完全解决。相比之下,GPU从设计之初就采用高带宽内存(如GDDR)和吞吐量优化,内存访问延迟对整体性能影响较小。
数据佐证:下图展示了1993-2010年CPU主频与GPU核心数的增长曲线。可见2005年后CPU主频平台期(约3-3.5GHz),而GPU核心数呈指数上升(从几十到数千)。
```mermaid graph LR A[1993-2005<br>CPU主频指数增长] --> B[2005<br>功耗墙/内存墙] B --> C[2005-2010<br>CPU主频停滞<br>转向多核] B --> D[2000-2010<br>GPU核心数指数增长<br>并行计算崛起] ```
英伟达的应对:从图形到计算的战略转型
摩尔定律放缓对英伟达既是威胁也是机遇。威胁在于:若CPU性能停滞,图形API调用开销将成为瓶颈,GPU需更高效地接收指令;机遇在于:CPU无法解决的并行计算需求,正是GPU的用武之地。
1. 产品策略:以并行性能抵消频率瓶颈 英伟达意识到,即使CPU频率不再增长,只要GPU能提供指数级增长的并行吞吐量,图形体验仍可提升。这驱动了其核心数量竞赛:
- GeForce 6800 Ultra(2004):16条像素管线,约1.5亿晶体管。
- GeForce 8800 GTX(2006):128个统一着色器核心,7.21亿晶体管。
核心数量增长远超摩尔定律本身——英伟达通过更激进的并行设计,将晶体管密度红利转化为计算单元数量,而非单核性能。
2. 技术储备:GPGPU的早期探索 在CUDA诞生前,学术界和工业界已尝试用GPU进行通用计算。2003年,斯坦福大学 researchers 利用像素着色器实现快速傅里叶变换(FFT),证明GPU在特定算法上比CPU快10倍以上。2004年,GPUGems一书出版,系统总结了用图形API模拟通用计算的技术(如将数据编码为纹理,通过帧缓冲区读写)。这些探索验证了GPU的并行潜力,但也暴露了编程障碍:开发者需将算法“扭曲”为图形操作,使用 inconvenient 的API,且缺乏通用内存模型。
3. **生态构