Chapter 1: Pixel Pioneers - The Graphics Garage Era
1993年的硅谷,一个雨夜。在一间弥漫着咖啡香和电路板气味的车库里,七名从硅谷图形公司(SGI)出走的工程师围坐在一张白板前,白板上潦草地画着一条蜿蜒的“性能曲线”。他们刚刚辞去了世人羡慕的“铁饭碗”,决心要做一件当时被认为疯狂的事:让每个家庭都能拥有实时的3D图形体验。这个雨夜没有雷鸣般的宣言,只有黄仁勋(Jensen Huang)用马克笔敲着白板说:“我们不做工作站,我们做游戏卡——因为游戏,是并行计算最极致的游乐场。” 谁也没有想到,这个为《毁灭战士》(Doom)和《雷神之锤》(Quake)而生的“玩具”,二十年后会成为驱动人工智能革命的超级引擎。本章将带你回到那个“像素 pioneers”时代,揭开NVIDIA如何在一场看似与AI无关的游戏中,意外埋下了并行计算的种子。
---
从SGI的阴影中出走:当图形遇见大众市场
1990年代初的计算机图形世界,是一个被高端工作站垄断的王国。硅谷图形公司(Silicon Graphics, SGI)是这个王国的绝对君主。它的IRIS系列工作站凭借强大的几何处理能力,统治着电影特效(《侏罗纪公园》中栩栩如生的恐龙)、科学可视化(天气预报、分子模拟)和高端工程设计的每一个角落。SGI的机器动辄售价数十万美元,运行着专有的UNIX系统,其性能让普通PC望尘莫及。在SGI内部,工程师们引以为傲的是他们如何用复杂的流水线架构处理海量的多边形,为《玩具总动员》这样的动画电影渲染每一帧。
然而,正是SGI的成功,孕育了它的“掘墓人”。在SGI的LSI逻辑部门,一位名叫黄仁勋的年轻工程师正负责芯片设计。他敏锐地注意到一个被忽视的市场裂缝:随着《德军总部3D》(Wolfenstein 3D)和《毁灭战士》的流行,PC游戏玩家对实时3D图形的渴望正在爆炸式增长。但SGI的高傲在于,它视游戏为“低端玩具”,专注于利润丰厚的专业市场。黄仁勋在内部多次提议开发面向消费市场的图形芯片,但得到的回应总是:“那不够优雅,也不够赚钱。”
1993年4月5日,黄仁勋与两位SGI同事——硬件专家克里斯·马拉科夫斯基(Chris Malachowsky)和芯片架构师柯蒂斯·普里姆(Curtis Priem)——在一家名为Denny's的平价餐厅吃早餐。餐巾纸上,他们画出了第一张NVIDIA芯片的架构草图:一颗单芯片,同时处理2D GUI和3D加速。他们的目标清晰而大胆: democratize 3D graphics,让每个拥有PC的人都能体验沉浸式虚拟世界。三个月后,NVIDIA正式成立,初始资金来自黄仁勋在AMD工作期间积攒的存款和风险投资。公司名字“NVIDIA”是拉丁语“invidia”(嫉妒)的变体,寓意“让人嫉妒的视觉能力”,但最初的产品NV1却差点让公司“被人嫉妒地埋葬”。
NV1是一款集成了2D/3D功能的芯片,但它押注于二次曲面表面(Quadratic Surfaces)技术,而非当时游戏开发者青睐的多边形(Polygon)渲染。这是一个致命的技术误判。当《古墓丽影》和《极品飞车》等热门游戏全部基于多边形引擎时,NV1几乎无法流畅运行它们。NVIDIA的第一款产品成了市场上的笑话,公司现金流枯竭,员工数从40人锐减至7人。这次失败几乎让公司在成立第二年就宣告终结,但它也教会了团队一个珍贵教训:图形市场的规则由游戏开发者制定,而非由工程师的“优雅”决定。黄仁勋后来回忆:“我们学会了倾听市场,而不是 instruct 市场。” 这个教训为后续的RIVA 128革命埋下了伏笔。
---
RIVA 128:集成芯片的闪电逆袭
1997年,PC游戏产业正处于一个临界点。微软的DirectX 5.0发布,为Windows平台提供了统一的3D编程接口,而id Software的《雷神之锤》正以每秒数百万次的多边形渲染震撼玩家。然而,市场主流的3D解决方案是3dfx Interactive的Voodoo Graphics。Voodoo性能强劲,但它是一个“3D-only”的附加卡:用户必须同时拥有一块2D显卡来处理桌面显示,再将Voodoo通过VGA pass-through线缆串联起来。这种方案不仅昂贵(Voodoo卡本身约200美元),安装复杂,还导致了图像质量下降和兼容性问题。3dfx的SLI(Scan-Line Interleave)技术虽能双卡并联提升性能,但进一步增加了成本和功耗。
就在此时,NVIDIA推出了RIVA 128(RV128,RIVA意为“Realtime Interactive Video Acceleration”)。这款芯片的核心理念简单却致命:将2D和3D功能集成在单芯片上。RV128不仅包含一个像素渲染管线,还集成了符合VGA标准的2D控制器,用户只需一块卡即可搞定所有图形输出。更重要的是,NVIDIA与微软紧密合作,成为首家获得DirectX认证的第三方显卡厂商。这意味着游戏开发者可以确信,基于DirectX编写的游戏在RV128上能获得一致且优化的体验。
从技术架构看,RV128代表了并行思维的重要进化。它拥有一个可编程的像素管线,支持每像素2个纹理映射(dual-texturing),这在当时是高端特性。其核心时钟频率达到100MHz,像素填充率高达100 Mpixels/s——比Voodoo的90 Mpixels/s高出约11%,更重要的是,它在支持双线性过滤等特效时性能衰减更小。RV128的并行设计体现在:它内部有多个独立的纹理单元和渲染单元,可以同时处理来自不同像素或纹理坐标的数据流。例如,在渲染一个带有光影和纹理的墙面时,RV128可以并行计算光照方程、纹理查找和颜色混合,而无需像早期方案那样串行处理。
但RV128真正的杀手锏是价格和生态。NVIDIA以199美元的策略性定价(远低于Voodoo+2D卡组合的300美元以上),迅速赢得主流市场。同时,NVIDIA开创了“OEM优先”策略:与戴尔、康柏等PC制造商深度合作,将RV128预装在品牌机中。这一策略让3D加速从“玩家改装”变成了“家庭标配”。1997年第四季度,NVIDIA的市占率从近乎零飙升至约20%,首次超越3dfx成为市场领导者。曾经嘲笑NVIDIA的SGI工程师们,如今不得不承认:那个在Denny's画草图的孩子,真的找到了通往大众市场的钥匙。
RV128的成功不仅是商业胜利,更是并行计算理念的首次大规模验证。它证明:将原本由CPU承担的、可分解为大量独立子任务的图形操作,卸载到专用硬件并行执行,能带来指数级的性能提升和成本下降。每个像素的着色、每个纹理的采样,都是独立且可同时进行的。这种“像素级并行”思维,后来被扩展到顶点、几何乃至通用计算领域。RV128像一位沉默的教师,在数百万玩家的电脑里,默默演示着并行主义的威力。
---
GeForce 256:GPU概念的诞生与架构革命
如果RV128是“并行计算”的启蒙老师,那么1999年发布的GeForce 256就是“并行计算”的正式宣言。NVIDIA在这款产品上做了两件颠覆性的事:一是将硬件几何变换与光照(Hardware Transform and Lighting, T&L) 引入消费级显卡;二是首次将自己的产品定义为“GPU”(Graphics Processing Unit),而非简单的“图形加速卡”。
在GeForce 256之前,3D图形的几何处理(将3D模型坐标转换为2D屏幕坐标、计算光影效果)完全依赖CPU。随着游戏场景复杂度提升(多边形数量从几千激增至数万),CPU成为瓶颈。开发者不得不编写复杂的优化代码,将部分计算转移到软件层面,效果仍不理想。GeForce 256的硬件T&L单元独立于像素渲染管线,专门负责顶点变换、投影、光照计算。这意味着CPU解放出来,可以专注于游戏逻辑、AI和物理模拟,而几何流水线被完全卸载到GPU的并行硬件上。
从架构看,GeForce 256包含了四个像素管线,每条管线支持单周期双纹理,理论像素填充率高达480 Mpixels/s(在166MHz核心时钟下)。更重要的是,它的T&L单元每秒可处理1500万个三角形——是前代RIVA TNT2的约5倍。这种“双引擎”设计(几何引擎+像素引擎)让GPU第一次具备了处理完整图形流水线的能力。黄仁勋在发布会上宣称:“GPU是单芯片集成变换、光照、三角设置、裁剪、渲染的处理器。” 这一定义虽然当时引发争议(有人认为只是营销术语),但事实上,GeForce 256确实首次将图形处理的并行任务系统性地整合到一颗芯片中。
技术细节上,GeForce 256的并行性体现在多层次:顶点级并行:T&L单元可同时处理多个顶点变换;图元级并行:三角形设置和裁剪单元可批量处理;像素级并行:四条像素管线并行执行着色、纹理和混合操作。这种“分而治之”的流水线设计,本质上是一种空间并行——不同硬件单元同时处理图形流的不同部分。相比之下,CPU的时间并行(超标量、乱序执行)更适合处理分支密集的通用代码。
GeForce 256的市场反应起初是怀疑的。一些评论家质疑“硬件T&L”是否必要,认为CPU足够快。但很快,游戏《Unreal》和《重返德军总部》(Return to Castle Wolfenstein)证明:当场景充满高细节模型和动态光影时,配备GeForce 256的系统帧率远超依赖CPU T&L的配置。更深远的影响在于开发者生态:微软在DirectX 7中正式加入对硬件T&L的支持,游戏工作室开始针对GPU架构优化引擎。到2000年,NVIDIA凭借GeForce 2系列进一步巩固优势,而3dfx因技术滞后和财务问题最终破产,被NVIDIA收购。
GeForce 256的遗产远不止于游戏性能。它确立了一个关键范式:将特定计算任务(这里是图形)从通用处理器剥离,部署到大规模并行、专用硬件上,能获得数量级的效率提升。这个范式后来被复制到通用计算(GPGPU)、深度学习(Tensor Core)乃至今天的数据中心加速器。黄仁勋在2000年的一次内部演讲中曾说:“我们卖的不是显卡,是并行计算平台。” 当时没人听懂,直到CUDA时代来临。
---
黄仁勋的管理哲学:扁平、敏捷与长期主义
技术突破离不开组织文化的支撑。NVIDIA在1990年代的逆袭,很大程度上归功于黄仁勋独特的管理哲学。这位毕业于俄勒冈州立大学和斯坦福大学的工程师CEO,创造了一种融合了硅谷敏捷精神与硬件行业严谨性的混合文化。
扁平化与直接沟通是NVIDIA最显著的特征。从创立之初,黄仁勋就废除了独立办公室,所有员工(包括高管)在开放式大平层办公。他本人没有独立房间,只有一张可移动的桌子,每天在不同团队间“游荡”。决策链条极短:工程师遇到问题,可以直接发邮件给黄仁勋,甚至当面讨论。这种“零官僚”文化在硬件公司中极为罕见——传统芯片企业层级森严,设计、验证、流片各环节分隔。NVIDIA则要求“全栈责任”:一个团队从架构定义到芯片交付全程负责。黄仁勋常说:“问题不会自己浮出水面,你必须亲手把它挖出来。”
“直面问题”(Face the Problem) 是NVIDIA的内部信条。当RV128项目遭遇延迟时,黄仁勋没有寻找替罪羊,而是组织全员会议,用白板逐条分析失败原因。他要求团队“把问题写在墙上”,直到解决为止。这种文化鼓励快速试错:RV128上市后仍有驱动bug,但NVIDIA以每周更新驱动的速度修复,而竞争对手的驱动更新周期以月计。黄仁勋相信,速度是硬件公司的生命线——市场窗口短暂,错过一代产品可能意味着出局。
长期主义研发投入是另一核心。即使在1995-1996年NV1失败、公司濒危时,NVIDIA仍将收入的30%以上投入研发(行业平均约15%)。黄仁勋说服董事会:“我们不是卖芯片的,是卖架构的。” 这种投入在RV128上获得回报:其架构为后续GeForce系列打下了基础。更前瞻的是,1999年GeForce 256发布后,NVIDIA已开始研究可编程着色器(Shader),尽管当时游戏还不需要。黄仁勋在内部备忘录中写道:“固定功能管线是过去,可编程是未来。我们要为五年后的应用设计芯片。” 这种“为未知而设计”的思维,让NVIDIA在2001年推出GeForce 3时,率先支持可编程顶点和像素着色器,为GPGPU时代埋下伏笔。
对人才的极致重视同样关键。黄仁勋从SGI、IBM、AMD等公司挖角顶尖工程师,但提供的不是高薪 alone,而是“使命认同”。他常说:“我们不是来工作的,是来改变世界的。” NVIDIA早期办公室墙上贴满游戏海报和性能图表,营造出“极客乐园”氛围。公司提供免费餐饮、健身房,甚至允许员工带宠物上班——这些如今常见的福利,在1990年代的硬件公司中极为前卫。黄仁勋理解,吸引最聪明的大脑需要自由和挑战,而非仅仅金钱。
这种文化在危机中尤其闪耀。2000年互联网泡沫破裂,许多科技公司裁员,NVIDIA却逆势加码研发。黄仁勋对团队说:“现在是最好的投资时机,因为竞争在收缩。” 结果,2001年发布的GeForce 3凭借可编程Shader架构,在性能上甩开ATI的Radeon 8500一代,为日后CUDA的推出储备了技术资本。黄仁勋的管理哲学本质上是一种工程驱动的长期主义:不追求短期利润最大化,而是持续将利润投入下一代架构,等待市场成熟。这种耐心,在游戏显卡这个快速迭代的行业里,几乎是个异类,却成了NVIDIA最深的护城河。
---
游戏市场:并行计算的意外摇篮
为什么是游戏市场,而不是科学计算或CAD,意外成为了并行计算的孵化器?答案藏在游戏需求的本质中:实时性、高吞吐、数据独立性。
一款3D游戏在每秒60帧的节奏下,需要处理数百万个顶点、数千万个像素。每个顶点的变换(从模型空间到屏幕空间)是独立计算:顶点A的位置不影响顶点B的变换。每个像素的着色(颜色、光照、纹理)同样独立:像素(100,200)的颜色与像素(101,200)无关。这种“数据并行”特性,完美契合单指令多数据(SIMD) 架构——用同一套指令,同时处理多个数据点。相比之下,通用计算(如操作系统、数据库)充满分支和依赖,难以并行化。
游戏引擎的图形管线(Graphics Pipeline)天然就是一条并行流水线。以DirectX 7时代的固定功能管线为例: 1. 顶点处理:CPU或GPU的T&L单元并行变换所有顶点。 2. 图元装配:将顶点组合成三角形。 3. 光栅化:将三角形转换为像素片段(fragment)——这是高度并行的阶段,一个三角形覆盖的数千像素可同时生成。 4. 像素着色:并行计算每个片段的颜色、纹理、深度测试。 5. 混合:将片段写入帧缓冲区。
在GeForce 256中,这些阶段被分配到不同硬件单元,且每个单元内部高度并行。例如,光栅化单元可同时生成多个像素片段;像素管线中的纹理单元可并行采样多张纹理;混合单元可同时处理多个片段的深度/模板测试。游戏需求的演进,直接驱动了GPU并行粒度的细化:从早期的每管线单像素,到每管线双像素,再到后来的统一着色器架构(Unified Shader),并行能力持续增强。
更重要的是,游戏市场的规模效应让GPU并行硬件得以大规模量产和降价。1999年,全球PC游戏玩家约1亿;到2005年,这一数字超过15亿。每售出一块GPU,就相当于在世界上增加了一个并行处理器。数百万玩家在不知情的情况下,成为了并行计算的“基础设施提供者”。黄仁勋曾比喻:“我们卖游戏卡,但实际上是卖并行计算单元。玩家买它为了打《半条命》,但我们知道,它在计算流体力学方程。” 这种“隐藏的并行性”为后来的GPGPU浪潮奠定了基础。
当2003年《黑客帝国》电影上映时,其标志性的“子弹时间”特效需要渲染海量慢动作粒子—— studios 发现,用GPU集群渲染比CPU农场快得多。这标志着GPU并行能力首次被专业领域“发现”。但NVIDIA的远见更早:2002年,公司内部已开始研究如何让GPU运行非图形算法。游戏市场不仅提供了硬件规模,还培养了一个庞大的、熟悉GPU编程模型的开发者社区——当CUDA在2006年发布时,无数游戏开发者已经懂得如何编写Shader,这为GPU通用编程降低了门槛。
---
技术深挖:从像素管线到并行架构的演进
要理解游戏市场如何孕育并行计算种子,必须深入GPU架构的微观世界。让我们以GeForce 256为解剖对象,观察其如何将图形任务分解为并行流。
图形管线的并行分解
在固定功能管线中,数据以“三角形”为单位流动。一个三角形由三个顶点定义,经过T&L后,被送入三角形设置单元,计算边缘方程和深度梯度。接着,光栅化器确定哪些像素被三角形覆盖,生成像素片段。这些片段进入像素管线,经历纹理采样、光照、雾化等操作,最后通过混合单元写入帧缓冲。
并行性存在于每个阶段:
- **顶点级并行**:T&L单元通常有多个顶点处理单元。GeForce 256的T&L单元可每周期处理一个顶点,但通过流水线,每时钟周期仍能输出一个变换后的顶点流。后续架构(如GeForce 3)引入更多顶点着色器,实现真正的同时多顶点处理。
- **图元级并行**:三角形设置和光栅化可批量处理。GPU将多个三角形组成“批次”(batch),减少状态切换开销。
- **像素级并行**:这是并行度最高的阶段。GeForce 256的四条像素管线意味着每周期可处理四个像素(若双纹理,则每管线处理两个纹理操作)。更关键的是,**每个管线内部也是并行的**:纹理单元可同时访问不同
```mermaid graph LR A[1993: NVIDIA成立] --> B[1994: NV1失败] B --> C[1995-1996: 濒临破产] C --> D[1997: RIVA 128逆袭] D --> E[1999: GeForce 256定义GPU] E --> F[2001: GeForce 3可编程Shader] F --> G[2006: CUDA诞生] G --> H[2012: AlexNet引爆AI] ```
在GeForce 256的架构深处,并行性被精心编织成一张多层网络。以纹理采样为例:当GPU需要为像素片段应用纹理时,它并非逐像素串行查询纹理内存,而是将多个像素的纹理坐标(U, V)打包成纹理请求批次,通过纹理缓存层次结构并行访问。GeForce 256的纹理缓存分为两级:第一级缓存(L1)集成在像素管线中,每管线独立;第二级缓存(L2)共享,容量约8MB。当一批像素请求同一纹理区域时,缓存命中率飙升,带宽需求骤降。这种空间局部性利用是并行效率的关键——它让大量并行的像素请求实际上只触发少数几次内存访问。
再看深度测试的