导读:一文看懂GPU的前世今生。
作者:钱纲
来源:华章科技
▲图24-1 CPU的结构图(冯·诺依曼构架)
CPU的运行遵循冯·诺依曼构架:存储程序顺序执行。程序执行过程如下:CPU根据程序计数器(Program Counter,PC)从内存中得到指令,然后通过指令总线将指令送至译码器,将转译后的指令交给时序发生器与操作控制器,再从内存中取得数据并由运算器对数据进行处理,最后通过数据总线将数据存至数据缓存寄存器以及内存中。
CPU是一步步来处理数据的(见图24-2)。在处理大规模与高速数据时,CPU很难满足需要。
▲图24-3 CPU与GPU构架对比示意图
CPU的功能模块多,适合复杂的运算环境,大部分晶体管用在控制电路和Cache上,少部分晶体管用来完成运算工作。GPU的控制相对简单,且不需要很大的Cache,大部分晶体管可被用于各类专用电路和流水线,GPU的计算速度因此大增,拥有强大的浮点运算能力。
当前的多核CPU一般由4或6个核组成,以此模拟出8个或12个处理进程来运算。但普通的GPU就包含了几百个核,高端的有上万个核,这对于多媒体处理中大量的重复处理过程有着天生的优势,同时更重要的是,它可以用来做大规模并行数据处理。
尽管,GPU是为了图像处理设计的,但它的构架并没有专门的图像处理算法,仅仅是对CPU的构架进行了优化,因此GPU不仅在图像处理中应用广泛,还在科学计算、密码破解、数值分析、大数据处理、金融分析等需要并行运算的领域中广为应用。GPU是一种较为通用的专业芯片。
02 图形处理器的构成
GPU的线路板一般是6层或4层PCB线路板。GPU的所有元器件都集成在它的线路板上,线路板影响着GPU的质量。
GPU线路板上最大的芯片就是GPU,它上面有散热片和风扇。作为处理数据的核心,GPU大多采用单芯片设计,而专业的GPU也有采用多个GPU芯片的。
GPU线路板上的另一个重要芯片是数/模转换器(RAMDAC)。它的作用是将显存中的数字信号转换成显示器能够识别的模拟信号,速度以MHz为单位,速度越快,图像越稳定,它决定了GPU能支持的最高刷新频率。为了降低成本,多数厂商都将数/模转换器整合到了GPU芯片中,但仍有一些高档GPU采用独立的数/模转换器芯片。
GPU的数据是存放在显存内的,显存是用来存储等待处理的图形数据信息的。显存容量决定了GPU支持的分辨率、色深。分辨率越高,显示的像素点越多,所需显存容量越大。对目前的三维GPU来说,需要很大的显存来存储Z-Buffer数据或材质数据。
显存有两大类:单端和双端显存。前者从GPU中读取数据并向数/模转换器传输数据且经过同一端口,数据的读写和传输无法同时进行;后者则可以同时进行数据的读写与传输。目前流行的显存有SDRAM、SGRAM、DDR RAM、VRAM、WRAM等。
GPU线路板上采用的常见电容类型有电解电容、钽电容等,前者发热量较大,许多名牌GPU采用钽电容来获得性能上的提升。电阻也是如此,常见的金属膜电阻、碳膜电阻越来越多地让位于贴片电阻。
GPU线路板上有对GPU进行供电的供电电路。它的作用是调整来自主板的电流以供GPU稳定地工作。由于GPU越来越精密,因此对GPU供电电路的要求也越来越高。
GPU线路板上还有一款用于VGA BIOS的闪存。它包含了GPU和驱动程序的控制程序、产品标识等信息。该闪存可以通过专用程序进行升级,改善GPU性能,有时能给GPU带来改头换面的效果。
GPU线路板上有向GPU内部提供数/模转换时钟频率的晶体振荡器等元器件。此外,由于GPU的频率越来越高,工作时热量很大,GPU线路板上还会有一个散热风扇。
03 计算机图形的生成原理
计算机的输出图像是模拟信号,而计算机处理的是二进制数字信号。数据离开CPU后,经过以下四个步骤,才到达显示屏成为图像。
- 经总线进入GPU,将CPU送来的数据送到GPU里进行处理。(数字信号)
- 从GPU进入显存,将GPU处理完的资料送到显存。(数字信号)
- 从显存进入数/模转换器,从显存读取出数据然后送到数/模转换器进行数据转换。
- 从数/模转换器进入显示器,将转换完的模拟信号送到显示屏(模拟信号)
显示屏上显示的是最后处理的结果,显示效能的高低由以上四个步骤共同决定,它与GPU的效能不同,GPU的效能决定了中间两步。第一步是由CPU进入到GPU,最后一步是由GPU将资料送到显示屏上。
近几年,人工智能中的深度学习算法大热,让GPU制造商大火。其实,深度学习的理论早在20世纪七八十年代就有了,但它的崛起主要是因为GPU的出现。英伟达公司的联合创始人与CEO黄仁勋说:“因为人工智能世界的大爆炸发生了,人工智能计算机科学家们找到了新算法,让我们能利用深度学习的技术,取得无人敢想的成果。”
04 显卡的诞生
提到显卡和GPU,人们会想到游戏和电影中精美的三维图形。其实,早期显卡不但不能处理三维图形,甚至连二维图形都无法处理,它仅具备显示能力。今天,GPU不但能够处理复杂的三维图形,还能作为协处理器,在通用计算中使用。
电脑图形处理器的发展是从图形显示适配器开始的,到图形加速器,再到图形处理器即GPU,其功能在不断增强。
从显示适配器到图形加速卡的转变是显卡历史上的重要转折点。从此,显卡开始承担计算机中的部分计算任务,这奠定了其日后与CPU分庭抗礼的基础。
电脑图形学是在1962年,由麻省理工学院的伊凡·苏泽兰(Ivan Edward Sutherland)在他的博士论文中提出来的。这位香农的学生是电脑图形之父。在之后的20年里,电脑图形学一直在不断发展,但没有产生专门的图形处理芯片。
在显卡出现之前,电脑中通常的图形输出工作由CPU承担。显卡的出现不是为了加速电脑的图形输出,最初的显卡是为了让游戏机上的二维图形显示加速。这款游戏是雅达利公司于1977年推出的雅达利2600。同期流行的电脑是苹果-II,而苹果-II的图形输出由CPU承担。
进行图形处理时需要电脑具备较强的并行计算能力,对精度和运算强度的要求也很高,对早期的电脑来说,这很难。当时的显卡仅仅是将CPU计算生成的图形翻译成显示设备能识别的信号来进行显示,不具备计算能力,被称作图形适配器(VGA Card)。
▲图24-5 阿米加500电脑用的显卡
1988年,支持256种颜色显示的第一代显卡问世。它是ATI公司生产的ATI VGA Wonder显卡。这是一款真正意义上的第一代显卡,时至今日VGA一词还是显卡的代名词。
05 前GPU时代
1989年,多家芯片制造商联合创立了影像电子工程标准协会(Video Electronic Standards Association,VESA)。1994年年底,VESA发表了64位架构的VESA Local Bus标准,80486及以后的个人电脑大多采用该标准的显卡。
1991年,英特尔推出了一种局部总线PCI(Peripheral Component Interconnect)。在结构上,PCI是在CPU和原来的系统总线之间插入的一级总线,由一个桥接电路对该层进行管理,并实现接口间的协调数据传送。管理器提供信号缓冲,使其支持10种外接设备,同时在高时钟频率下保持高性能。PCI为显卡、声卡、网卡等设备提供了接口。
显卡接口制约着显卡技术的发展。为了加快显卡与总线间的传输速度,使用高带宽的接口总线势在必行。在民用市场,显卡接口的起点是最普通的ISA接口,ISA接口包含ISA总线、EISA总线和VESA总线,ISA接口是一种统称。
当VGA标准流行之后,ISA接口就显得力不从心了,由PCI取而代之,但PCI接口并未持续多久就被更为先进的AGP(Accelerated Graphics Port)所淘汰。与PCI相比,AGP在带宽上有了突飞猛进的发展,还能有效利用系统内存。
但AGP的半开放性格局使之不断面临兼容性的困扰。从最早的AGP 1×到AGP 8×,真正具有里程碑意义的只有AGP 4×。如今AGP 8X也开始被PCI Express×16取而代之了。
1991年,支持微软视窗操作系统图形加速的第二代显卡(Graphics Card)问世。
VGA的唯一功能就是输出图像,图形运算全靠CPU,当微软的视窗操作系统出现后,PC不堪重负。1991年5月,ATI发布Mach8,这是ATI第一款优化微软视窗操作系统图形界面的显卡。ATI用专用芯片进行图形运算处理,将CPU解放了出来,且让视窗操作系统的界面运行起来非常流畅,图形化操作系统的资源消耗大降、实用性大增。
Mach8就是ATI 38800-1芯片。Mach8显卡由两个芯片组成,主芯片为VGA Wonder XL 24(ATI 28800-6),负责显示输出,辅助芯片是Mach8专门用于加速视窗操作系统图形界面的,通过双芯片的设计增强了绘图能力。
为了与只具备显示功能的VGA相区别,具备图形处理能的显卡被称为Graphics Card,即图形加速卡,它加速了视窗的普及,加速了PC图形化界面的步伐。
1991年6月,S3公司推出了一款二维图形加速卡S3 86C911。它是最早的视窗加速卡之一,支持16位256种颜色。此后,二维显卡进入了群雄争霸时代。当时,Trident、S3、Matrox三大厂商占据主导地位。
这些二维显卡角逐的激烈程度丝毫不亚于今天的三维显卡的争斗。由此也产生了不少经典产品:Trident的9440、S3的Trio64V+、Matrox的Millennium等。其中性能最优的是Millennium及后继产品,但因其售价昂贵没有得到很多市场份额。当时,最成功的是S3的Trio 64V+。等到了voodoo时代,它仍是voodoo的好搭配。
第一款三维显卡是三维实验室(3Dlabs)制造的GLINT 300SX(见图24-6)。它的三维图形的高洛德着色(Gouraud Shading),深度缓冲,全屏抗锯齿,Aplha混合等特性被沿用至今。300SX正式开启了计算机三维显示的大门,但它也有很多不足,比如没有数模转换芯片(RAMDAC),要加上数模转换芯片才能将内容输出到显示器上。
▲图24-7 3Dfx的第一款三维显卡
3Dfx的运气很好。1996年夏,芯片工艺的更新让RAM价格大跌,3Dfx借机得以推广,而各游戏和个人电脑生产厂家也改变了态度,开始使用voodoo。当voodoo以300美元的价格上市时,市场被引爆了。voodoo支持DVD和OpenGL,但二者还较粗糙,抑制了voodoo的性能。3Dfx只好开发图形API——Glide。
20世纪末,3Dfx的崛起宣布了三维显卡进入了白热化竞争时代。S3、Matrox、3Dlabs等厂商都加入了竞争,但它们均不敌voodoo。除voodoo以外的三维显卡的代表作是ATI的3DRage II+DVD。
这一款1996年秋天发布的显卡,其二维引擎来自Mach64。它具有MPEG-2硬件动态补偿功能,能在播放DVD时起到辅助作用,这是非常先进的。加上ImpacTV芯片,它还可以播放电视节目。3DRage II的驱动支持也非常好,无论是游戏用户还是专业用户都可以得到对应的驱动程序。只是ATI当时专注于OEM市场,而非零售。
3Dfx为了解决voodoo没有二维加速功能的问题,于1997年开发了具有二维加速功能的voodoo rush。但是其性能很差,它以主卡加副卡的方式实现二维加速,且二维芯片来自第三方。voodoo rush成了一款二维显示很差、三维性能又比voodoo差的显卡。它对Glide的支持也很差,经常无法加速。
不久,ATI研发出了3D Rage Pro。因其强大的DVD回放功能成了当时OEM多媒体电脑的首选。ATI尝试过进入零售市场,但因其很差的驱动失败了,等到ATI驱动没问题的时候,Rage Pro已过时了。3D Rage Pro是最早支持AGP接口的显卡之一。
ATI在被AMD收购之前一直是计算机图形领域的领头羊之一。这是一家由三位来自中国香港的华裔在1984年于加拿大创建的计算机图形公司。其主要创始人何国源,1950年出生于中国广东省。
12岁时,何国源来到香港。因家庭贫困,他20岁时只身来到学费和生活费较低的台湾就读大学。1984年,已在电脑领域有了丰富工作经验的何国源移居加拿大,创办了计算机图形公司——ATI。
1998年,3Dfx推出了voodoo2。voodoo2的性能比voodoo提高了2~3倍,它还增加了大量新的画质提升技术。voodoo2降低了对CPU的依赖,很多低端的CPU也可以流畅运行大型三维游戏。
voodoo2还引入了SLI技术,能让两张voodoo2显卡同时运算同一画面。有1/3以上的voodoo2用户是双卡用户。voodoo2让3Dfx成了三维显卡初期的绝对老大。
1998年,3Dfx犯了两个致命的错误:一是收购了一家名为STB的公司,自行生产GPU,舍弃了第三方合作伙伴;二是对Glide API的封锁,导致游戏厂商开始对其敬而远之,表面上看3Dfx因voodoo2风光无限,但这也是其衰落的开始。
3Dfx在1998年犯的错误并没有让它面临危机,这是因为没有竞争对手。到了1999年情况就不同了,几件事让3Dfx面临灭顶之灾。先是DX7带来了硬件T&L,硬件T&L的出现彻底解放了CPU,即便是低端CPU,搭配了支持硬件T&L的显卡也可以流畅地玩游戏。大量视觉技术的添加使得Glide的优势丧失殆尽。
3Dfx于1999年发布的voodoo3不支持新出现的AGP4x,仅支持2x,但只支持接口,不支持AGP的特性。voodoo3的16比特渲染在大势所趋的32比特潮流面前毫无竞争力。
同时,来自英伟达的TNT2以其强大的性能干脆利落地将voodoo3打败了。与同年发布的Gefroce 256相比,它只是一款TNT的改进产品,但这未能阻碍TNT2成为一代经典。
1998年2月,英特尔发布了和Real 3D合作设计的i740显卡(见图24-8)。这是迄今为止英特尔推出过的唯一一款独立显卡。i740支持2X AGP规格,核心频率为80MHz,像素填充率为55MT/s,支持DVD解压、平行信息处理、精准像素描插补等技术。
i740的2D效果并不令人满意,但它的三维性能还不错,它首次在民用显卡中采用散热风扇。后来,英特尔将i740改进后集成进了810芯片组。
延伸阅读《芯片改变世界》
推荐语:本书是芯片技术发展的科普图书,重点讲述了电子工业的产生,早期电子器件、半导体器件、及芯片的产生与发展的历史。把芯片技术与其发展史结合起来,描绘芯片产业与第三、第四次工业革命的兴起及发展过程。本书的主角是芯片技术的历史沿革、发明家、创业家、风险投资家及企业家。