在PC时代初始,还没有GPU这一说法,它的前身便是所谓的“显示芯片”,但当3D游戏出现在PC平台时,这一名称变为“图形芯片”,后来NVIDIA制造出功能更强的“图形芯片”,使图形应用对CPU的依赖逐渐降低,由此诞生了“图形处理器”,也就是我们所说的GPU。到2006年以后,GPU们又有了新的名称,即“流处理器”或“高并行处理器”。虽然业内习惯上对其还是沿用GPU的名称,但这已是一个全新的时代。而现在,GPU整合于CPU内部,彼此协同的异构计算方式成为新的方向,这又带领着图形工业朝向新的领域前进。
接下来,我们将回顾图形史上的架构变迁,分别是:加速卡时代、GPU时代与通用计算时代,从中我们也将了解到这个行业过去这些年的风云动荡。加速卡时代:3D初生
在最初的阶段,只有显示芯片,它的功能就是将CPU运算的结果显示在CRT屏幕上,本身只是简单的功能逻辑。图形时代无疑是从PC进入3D世界之后开始的,3Dfx的Voodoo是这个时代的里程碑。
在Voodoo出现之前,其实就已经有一些简单的3D游戏出现在PC之上了,但当时3D渲染工作只能由CPU来完成——所谓的3D渲染,从计算层面来讲其实就是大量的、可同时进行的浮点计算。如果要让3D渲染工作可以流畅地进行下去,就要求计算系统能够提供足够高的硬件性能。由于当时的CPU都是单线程,只能一步一步地依次进行各个计算操作,而完成所有这些计算工作就需要比较长的时间。满足3D渲染流畅度的标准要求是30fps,也就是一秒钟生成并显示出30个3D画面,即便是面对当时非常“简陋”的3D游戏,这个任务所需的浮点计算量也是CPU所无法承受的。
1.3Dfx Voodoo开创3D时代
Voodoo加速卡诞生于1995年11月,它的职能就是纯粹的3D加速器,本身不具备显示输出的功能,所以我们只能将它看作一种辅助3D运算的协处理器。Voodoo加速芯片的原理很简单,就是将原本由CPU处理的3D渲染任务接管过来。注意,它还只是有限度的接管任务,核心在于帮助计算多边形和像素填充工作,所以这两方面的性能在后来也成为衡量图形芯片强弱的两个主要指标。
Voodoo支持丰富的3D功能,它具有透视、双线性过滤、像素矫正、alpha图形融合、精确贴图、纹理描影与贴图转换在内的所有3D渲染技术,并可支持诸如16位波动RGB骨架缓存、多种贴图缓存、反混淆、Z缓冲、雾化、透明、半透明处理在内的各种视觉效果,尤其是可对雾化效果进行硬件加速,这在当时是划时代的。为了保证游戏兼容性,Voodoo直接支持包括微软Direct3D和OpenGL在内的当时所有主流API,事实证明,这种做法是相当明智。而在硬件本体上,Voodoo加速的规格也非常豪华,它搭载了4MB容量的显存,核心频率达到50/55MHz,像素填充率达到当时看来不可思议的每秒4500万,多边形生成能力则达到每秒100万个,这些规格在当时都创下了纪录。
Voodoo加速卡
作为加速卡,Voodoo必须与显卡配合才能正常运作,这也意味着额外的成本提升。1996年11月,3Dfx发布了Voodoo Rush,它在Voodoo加速卡的基础上增加了2D显示功能的模块,但3D内核本身没有任何变动。到了1998年,新一代Voodoo2加速卡到来,它的性能提升十分巨大:多边形运算效能达到每秒300万个,为Voodoo的3倍;像素填充速度也提升到每秒9000万,相当于Voodoo的两倍。在同一运算周期中,Voodoo2可以为每个像素渲染多个(实际是两个)材质,而且这一功能是借助一个像素芯片和两个纹理芯片共同完成。相比之下,第一代的Voodoo只附带了一个纹理芯片,一个周期只能对像素进行单材质处理,这就意味着Voodoo2可以带来更为精细的3D效果。