您的位置:首页 > 其它

显卡告别3D游戏迈向通用计算时代

2012-04-24 14:02 176 查看
极富弹性的架构以及卓越的浮点性能赋予GPU越来越多的潜力,现在,GPU除了可以在3D游戏中大展身手以外,还进入到一个崭新的广阔空间,无论是高性能计算还是日常办公应用,GPU都扮演不可或缺的角色。

3D游戏一直是用户升级显卡的动力,游戏开发商总是不知疲倦地推出画面更真实的3D大作,并以耗费GPU资源为荣(如果新一代3D游戏对GPU要求低反而被认为是一件可耻的事情)。而nVIDIA与ATI则在市场竞争的驱使下进行一场GPU开发的竞赛,往往是新品还没有来得及捂热,“革命性”的下一代架构又开始登台亮相,游戏玩家们又得掂量再一次的升级。但显卡的意义似乎仅限于此,如果你对3D游戏毫无兴趣,只是玩一些纸牌、连连看、泡泡堂之类的益智小游戏,日常以办公和上网浏览为主,那么使用高端显卡便是莫大的浪费。计算工业在过去同样为此感到困惑,它们认为现有计算系统的晶体管资源利用率过低,在一套标准PC平台中,GPU所占用的晶体管数量往往比高端双核处理器还要多得多,但在很多时候,显卡都处于闲置状态,GPU所集成数量巨大的晶体管只在那边空耗能源,而CPU往往是疲于奔命—这就好比是一个部门的两个职员,一个老是忙得团团转,另一个通常都在那边闲呆。显然,将任务均分是个比较合理的解决方案,即让GPU能够与CPU一道来处理通用任务,但这对于过去的图形工业来说却是巨大的挑战。

GPU难以分担CPU任务的障碍在于架构限制。众所周知,GPU唯一的使命就是3D渲染,它的核心逻辑包含顶点渲染单元和像素渲染单元,两者最初都只能执行固定的图形指令。如果你将别的指令强加给GPU,GPU根本就无法识别,在这个时代,GPU难以走出3D图形体系。为了让程序员拥有更多的灵活性,GPU后来实现了可编程功能,允许程序员采用更加灵活的程序指令。随着图形API的不断升级,GPU的可编程能力也变得越来越强大。在DirectX 9.0C时代,顶点渲染指令和像素渲染指令的长度都达到512条,如果通过某种指令转换机制,将通用计算指令转为GPU可执行的指令格式,那么就可以让GPU完成3D图形之外的通用计算。而在最新的DirectX
10体系中,GPU的通用性获得进一步的释放:通用的渲染单元具有更强的可编程支持,GPU所配备的指令解码器能够将顶点/像素指令转换为可直接被通用渲染单元执行的微指令,这就赋予统一渲染单元更强大的能力。理论上说,只要有相应的API支持,基于统一渲染架构的新一代图形产品就能够完成许多3D图形之外的繁重任务,充分发挥出GPU在浮点性能方面的巨大优势。

计算机科学家与图形工业共同携手将GPU推向更广阔的市场,未来GPU将可作为超级计算机的浮点协处理器使用,也可以用于流处理的加速。而对于PC用户,GPU将在操作系统GUI界面渲染、网页内容渲染、PDF文件/图像文件处理中发挥巨大的价值。

GPU渲染操作系统GUI界面

在微软的Vista操作系统中,我们看到了Aero Glass视觉模式带来的卓越效果。标题栏和窗口边框都拥有半透明磨砂玻璃质感,窗口的放大、缩小动作流畅而富有动感,窗口可以三维的样式排列方便于定位……而要实现这样的GUI效果,光有性能强劲的处理器根本不够,因为处理器并不擅长于图形渲染相关的操作,由GPU完成GUI渲染便是唯一可行,也是最理想的方案。



微软Vista系统的Aero视觉模式支持3D窗口和半透明特效,这一切均借助GPU的力量实现。
微软在Vista系统中成功地做到这一点,它的技术奥秘就在于将操作系统与图形API紧密地结合在一起,加强系统对GPU的控制能力。我们知道,在2D GUI界面的OS中,专门负责3D渲染的图形API是个可有可无的角色,因为GUI界面的绘制是由处理器来完成的,只是将最终结果交给显卡,由显卡的2D功能将其输出到屏幕上显示,这样操作系统运行对显卡就没有任何要求,对显存的要求也仅限于能够存放24/32bit精度的色彩。但在Vista的Aero视觉模式中,GUI界面的渲染任务是由显卡来负责—微软公司通过图形API的深度整合成功地创建了这一模式:当Aero模式启用时,CPU不再直接负责GUI界面的渲染,而是将诸如动态缩放、半透明效果、玻璃效果相对应的渲染指令转交给GPU,GPU接到指令后完成相应的工作,并将结果输出到屏幕上。由于Vista
Aero视觉模式的渲染任务都比较简单,对GPU的运算性能要求不高,因此从理论上说,集成图形都能够很好地满足Aero界面渲染的要求。问题在于微软将GUI渲染指令定格在DirectX 9.0标准,这就导致所有无法支持DirectX 9规格的显卡和集成图形产品出局。

比Vista领先半年时间,Linux环境也实现了由GPU来渲染GUI和桌面,而且Linux业界提出了XGL和AIGLX两套方案。XGL由Novell公司发起并完成,它是一套全新的X Server软件。在Linux/UNIX系统中,X Server负责整个图形环境的构建,过去它并没有丝毫掌控GPU资源的权力。而Novell的XGL与传统的X Server完全不同,它直接与OpenGL API紧密耦合,通过OpenGL图形指令来生成GUI界面,这种模式赋予操作系统GUI界面前所未有的想象力。借助GPU的力量,XGL除了可支持类似Vista
Aero的动态窗口缩放、半透明标题栏之外,还可支持窗口半透明、更富动态感的淡入淡出以及窗口移动时宛若弹性布条般的视觉效果。由于XGL对OpenGL版本要求不高,GeForce 4 MX级别的显卡都能够轻松胜任,前提条件是显卡能够被驱动程序正确驱动。AIGLX则是RedHat发展的技术方案,它同样是一套与OpenGL结合的X Server系统,但与XGL从零开始编写不同的是,AIGLX是基于现有X Server系统上的改良,但它同样能够完成相同的任务,即由GPU来渲染Linux的图形操作环境。

Vista与Linux XGL/AIGLX技术的出现,意味着GPU首度在3D游戏之外找到了新工作,现在,显卡可以用来渲染操作系统的图形界面,而在显卡的帮助下,操作系统在视觉方面获得质的改善。GUI不再是冷冰冰、机械呆板的丑陋样式,而变得漂亮而富有动感,这不仅能令用户使用过程中感到赏心悦目,同时也将起到降低操作疲劳和提升生产效率的效果。也许你从来没对操控复杂的3D游戏动过任何念头,但现在也应该考虑为自己的PC配一块符合Vista或者Linux XGL/AIGLX要求的显卡:DirectX 9甚至DirectX
10支持、拥有256MB显存、能够很容易地在Linux系统中安装驱动程序……当然新一代集成图形芯片组也能够满足基本的要求,但它们显然难以应对未来操作系统的升级。而如果你使用的是Linux系统,便会发现在启用XGL/AIGLX模式时,系统的操控性能有非常显著的提升,原因就在于GPU承担了GUI渲染相关的任务,CPU因此获得解放,能够将更多资源投放到任务的执行进程中。

GPU给传统应用加速

GPU对普通用户的另一个重要用途便是加速网页内容、PDF文件以及图形图像的渲染。现在互联网有一个糟糕透顶的倾向,就是网页设计得越来越花哨,大量光怪陆离的Flash广告充斥着页面,而这些Flash极其耗用CPU资源,即便你现在用的是最时髦的双核处理器,打开一个Flash内容较多的网页并且用鼠标中键滚动几下,便会发现CPU资源占用率可以轻松向50%靠拢。换句话说是其中一个CPU核心处于接近100%的资源占用,硬件消耗比播放高清电影还要高出许多,这显然极不合理。除了Flash动画外,网页上显示图片也颇为耗费硬件资源,尤其是那些高分辨率的图片,都会对CPU提出不低的要求,这也是网页浏览耗费资源的一个重要的原因。



Adobe Acrobat 8和Reader 8已经可借助GPU来渲染PDF文件内容,性能提升非常明显。
同理,如果用GPU来渲染这些视觉相关的内容,无疑会更具效率并且节约系统资源。现在软件工业已经朝着这个目标行进,比较有代表性的技术方案包括浏览器层级的完全GPU加速与通过OpenVG API的部分加速。采用完全GPU加速技术的便是正在开发的Firefox 3.0,它采用Gecko 2.0网页排版引擎,而在基础的2D图形库方面,Gecko 2.0将逐渐抛弃传统的软件实现方案,转而采用“Cario(开罗)”2D图形引擎。Cairo引擎基于OpenGL API构建,即采用OpenGL渲染指令,让显卡来完成2D图形图像的绘制。如此一来,基于Cecko
2.0引擎的Firefox 3.0浏览器便具有GPU硬件加速支持,网页所显示的内容,包括图形图像、Flash动画等各类视觉元素都由GPU负责处理,由此大幅度减轻了CPU的负担,让网页浏览工作变得更加轻松。除了Firefox 3.0之外,任何其他基于Gecko 2.0排版引擎的浏览器产品都能够支持这一功能。

Gecko 2.0和Firefox 3.0都将在上半年完成,在它们的引导下,网页内容GPU加速将会逐渐形成风潮。不过IE、Opera、Konqueror/Safari等浏览器并没有打算采取类似的做法来实现GPU加速,事实上,浏览器开发商无需作任何改变—关键在于未来的Flash动画和网页矢量图形将支持OpenVG API—OpenVG的全称是“Open Vector Graphics”,意为开放性矢量图形,它是一套专门用于矢量图形硬件加速的开放API借口。但除了矢量图形外,OpenVG还能够为Flash动画提供硬件加速功能,如果Flash支持这项技术,那么不管用户使用何种浏览器,都能够实现Flash动画的GPU硬件加速,从而大幅度改善目前网页浏览资源占用率过高的情况。

作为Flash的拥有者,Adobe公司尚未在Flash硬件加速领域迈开实际的步伐,但该公司已经率先实现了PDF文件的GPU加速。PDF是互联网通行的开放文档标准,它具有强大的图文混排能力和完善的版权保护机制,阅读器又是完全免费的,在出现之后迅速获得广泛采用,目前几乎所有学术性文档、政府公文、技术白皮书都采用PDF格式发行。PDF文件的渲染一直都是由CPU完成,但CPU显然效率不够高,渲染PDF文件总是存在明显的延迟,倘若PDF文件足够复杂而CPU性能又不够强,浏览PDF时会出现严重的顿滞。为此,Adobe与nVIDIA进行合作,在最新的Acrobat
8和Adobe Reader 8软件中引入GPU加速功能,即由GPU来渲染PDF文件。Adobe没有阐述具体的细节,只是介绍这项机制是通过DirectX 9.0c中的Shader Model 3.0实现的;硬件要求方面,nVIDIA平台一般建议GeForce 6600以上,AMD-ATI平台则要求Radeon X1300和FireGL V3300、3400和V5200等GPU,当然如果集成图形能够支持Shader Model 3.0规范,也能够支持这一功能。而除了Adobe公司外,Linux中的Gnome阵营也在完成类似的任务,它所依赖的同样是Cario图形引擎,Cario同样将被作为未来Gnome环境的2D渲染引擎,这样Gnome环境下的PDF查看器也将从中受益。

网页渲染加速以及PDF加速功能的实现,让GPU在日常应用中也能派得上大用场,对于长时间操作电脑的商业用户来说,配备一块性能中等的3D显卡不再是一种浪费,想必nVIDIA、AMD-ATI等独立图形厂商会对此眉开眼笑。

GPU实现流处理加速

超级计算机系统普遍都具有强悍的并行浮点计算能力,以便完成如科学计算、宇宙探索、气象预报、分子生物计算、核模拟、虚拟现实之类的研究。现行的超级计算机大都采用对等处理架构,即由通用的处理器来负责浮点运算。这一领域基本上都是RISC架构的天下,IBM的Power平台、富士通的SPARC64平台、英特尔的Itanium平台(EPIC架构)便是其中的代表者。为了实现尽可能高的性能,超级计算机都不遗余力地增加处理器数量,同时积极开发技术更先进的处理器产品,但这样做并不是特别有效率。当前世界上运算速度最快的计算机当属IBM的“蓝色基因/L(Blue
Gene/L)”,它的峰值浮点性能达到367TFlops,但为此付出的代价就是动用了65536枚双核心处理器,也就是131072个CPU内核,硬件规模极其惊人。为此,IBM和SUN都提出采用协处理器加速的方法来获得更高的效率,其中的典型代表者就是IBM的Cell平台,它以专用设计获得远超通用处理器的浮点性能。



AMD推出的FireStream流处理加速卡,基于R580图形处理器。
不过光就浮点运算能力而言,Cell显然不是GPU的对手。AMD-ATI的Radeon X1900 GPU即可拥有高达375GFlops的浮点性能,新一代R600 GPU更将具有512GFlops的超级计算能力(当然,nVIDIA的GPU同样拥有非凡的浮点效能)。ATI很早就提出了“流计算”的概念,即利用GPU的可编程特性以及R500架构所拥有的庞大像素处理器来完成一些通用的浮点计算任务,借此获得远超过通用型处理器的效能表现。ATI后来被AMD成功收购,而AMD继承了ATI的这项研究并在2006年度的超级计算机大会上拿出相应的“流处理器加速卡”—这块加速卡采用Radeon
X1900 GPU和PCI Express X16接口,它与普通Radeon X1900显卡的区别在于:流处理器卡加入一些特殊的控制电路,内存控制器也经过调整以优化并行的流计算任务,为了满足繁重的任务需求,流加速卡配备了1.3GHz频率的GDDR3内存,且容量高达1GB之多。加上Radeon X1900 GPU自身具有的48个像素处理器(每个像素处理器由两个算术逻辑ALU、两个标量ALU和一个分支执行单元构成)和600MHz高频率,该流处理加速卡最终实现375GFlops浮点的通用计算能力。AMD流处理加速卡的另一项关键技术就是它所支持的“CTM(Close
To Metal)”应用程序接口,CTM可以令应用程序直接访问GPU的原生指令集和内存,最终实现八倍于传统3D图形API的浮点效能。AMD将该款流处理加速卡与标准的Radeon X1950XTX显卡进行MatMult标准测试,基于CTM接口的加速卡在执行通用计算任务时可提供96GFlops的实际浮点性能,而基于OpenGL API的Radeon X1950XTX显卡的运算速度仅为12GFlops,同当前的主流型X86处理器相当。AMD对自己的这项成果非常骄傲,它们表示如果在超级计算机系统中采用流处理加速卡,那么理论上大约只要不到1000块加速卡就能够获得媲美IBM“蓝色基因/L”的性能水平。目前AMD已经开始向OEM厂商供应这种流处理加速卡(当然价格不菲),同时吸引超过60家企业和研究机构进入AMD的这一研究项目,AMD表示这种加速卡虽然暂时供应高性能计算市场,但未来将会引入消费市场,用于完成视频编解码加速和图像的处理,尤其是H.264编码任务非常适合由GPU来处理。当然要实现这个目标,需要硬件厂商与软件工业的共同努力。

在AMD锐意拓展高性能计算市场的同时,nVIDIA也没有闲着,事实上,早在2004年9月份,剑桥大学的BionicFX小组就率先采用GeForce 6800图形处理器来完成音频效果的计算。BionicFX发明了一项***EX(Audio Video EXchange音频视频转换)技术,***EX的工作原理是将音频流转换成图形格式的数据,这些图形数据在GeForce 6800 GPU上按照像素或区格来进行处理(按音频效果算法),并于显示内存中读取结构,最终计算结果再被还原为音频信号,由此完成了GPU处理音频效果生成的全过程。第一个采用***EX技术的混响VST插件便是2005年冬季亮相的BionicReverb,这款插件可以实时模拟出各个真实声学条件下的混响音频,效果近乎完美,而在这背后就是堪称巨量的精确计算。得益于***EX技术,GeForce
6800承担了这一任务,否则要是由通用的X86处理器来负责的话,系统资源估计会被拖垮。遗憾的是,nVIDIA并没有意识到其中的机会,所以未能及时投入相关的研究,错失在这个新领域领先对手的良机。现在nVIDIA也在积极从事这方面的研究以期赶上AMD,尽管没有披露何时拿出可供实用化的商业解决方案,但以GeForce 8800 GPU所采用的128个流处理器设计来看,nVIDIA同样能够让自己的GPU产品进入高性能计算市场。

现在,GPU又有了一个新的工作:用在超级计算机系统中,完成浮点加速任务。AMD和nVIDIA大概都可以在这个市场狂卖高端GPU产品了,而这个市场向来是利润丰厚:AMD的流处理加速卡定价高达2600美元,而它的成本和一块Radeon X1900 XTX显卡相当,后者的市场价格现在还不到400美元。在不远的将来,流处理加速技术会出现在消费市场,帮助CPU完成诸如影像编码之类任务,或许在跑Super Pi测试的时候,GPU也许还能够帮上大忙。

GPU加速物理计算

物理加速的概念由AGEIA公司在2005年率先提出,该公司同时也推出了世界上首款物理处理器(PPU):PhysX。如果用户计算机配备了一块基于PhysX PPU的加速卡,那么将构成CPU-PPU-GPU的三角协作系统—CPU负责程序指令的执行和任务分配,遇到物理计算指令就将它提交给PhysX PPU,图形渲染指令则提交给GPU。PhysX的专用化设计让它具有出色的物理计算能力,如目前最高端的双核X86处理器每秒只能生成数百个粒子或者刚性物体,而PhysX每秒可处理3.2至5万个,这将极大程度提高游戏体验的真实性。注意这种体验包括画面效果的提升以及游戏的互动性,例如当游戏角色身处爆炸区外,却不幸被弹片击中,那么它也将因此负伤或者死亡,而在那些不支持物理计算的游戏中,这样的场景完全不可能出现。



Havok FX API可以让GPU直接完成物理计算,数据交换可以在内部进行,可以充分发挥GPU浮点性能卓越的专长。但其缺点在于暂时无法提供游戏交互性。
PhysX PPU推出之后获得游戏开发商的广泛认可,目前可支持PhysX的游戏已有数十款之多,并且这个数字还在不断增加,物理加速的概念被游戏工业广泛接受。nVIDIA与AMD-ATI显然不甘寂寞,在PhysX PPU推出后不久,nVIDIA和ATI都先后对外披露自己的GPU物理加速方案—以GPU来完成物理加速的原理与加速流处理如出一辙,都是利用GPU可观的浮点性能和可编程能力来完成。但是nVIDIA和ATI都不是GPU物理加速技术的主导者,真正的关键是Havok(业界著名的物理和动画引擎开发商)。Havok在2005年11月推出Hovok
FX物理引擎,这个引擎可以让符合Shader Model 3.0标准的GPU执行物理效果的计算。Havok认为它们的技术更具效率,如在激烈碰撞的场景要求GPU(或PPU)与CPU交换大量的数据,而采用GPU来进行物理计算就可避免这种情况,有效提升系统的处理性能;其次,Havok FX引擎可与Havok的HydraCore技术配合使用,从而实现对多核心、多线程处理器的优化。必须注意的是,借助Havok实现物理加速并非是所谓的“软件方案”,Havok FX引擎本身是一个可利用GPU可编程特性来实现物理计算的API,地位与作为图形API的DirectX和OpenGL类似,如果3D游戏直接对Havok
FX提供支持,那么GPU在运行这个游戏时就可以直接执行物理计算任务。从这个角度来讲,GPU+Havok FX引擎的物理加速与AGEIA PhysX PPU+PhysX API的物理加速方案并无本质区别,不同之处仅在于前者利用GPU来处理物理计算指令,后者则是采用PhysX PPU。

nVIDIA与AMD-ATI都宣称GPU物理加速方案性能优越,如AMD-ATI Radeon X1900XT每秒可完成50亿次物理撞击的处理,而PhysX PPU每秒仅能处理5.33亿次。表面上看GPU在计算性能方面占了绝对优势,但AGEIA则认为光比较计算性能并无意义,因为在物理计算体系中,交互性是一个极其重要的概念,所谓交互性就是物理计算的结果必须会对游戏的运行产生影响,例如爆炸反射的弹片击中游戏角色,那么这个角色就会负伤或者死亡,PhysX PPU便具有这样的能力。GPU固然拥有优秀的物理计算性能,但它只能渲染出逼真的画面而无法形成交互性,也就是说我们同样可以在GPU物理加速平台中看到真实的爆炸场面,但即便画面显示出游戏角色被弹片击中致命部位,这个角色也不会受到丝毫的影响。目前nVIDIA和AMD-ATI都带来了基于统一渲染架构的图形处理器,芯片浮点性能创下新高,可编程能力也更为突出,两家公司也都不约而同带来多显卡物理加速的方案,但它们都未能解决游戏交互性的问题。近期有消息说nVIDIA在研发独立的物理卡,如果这一消息获得最终证实,那么我们也不会对此感到太惊讶。事实上,如果nVIDIA和AMD-ATI能够获得更完善的物理处理技术,并将它与GPU直接集成,那么便可在保持卓越画面效果的同时解决交互性问题。不过与其自己独立开发,还不如在AGEIA发达之前将它抢先收购,毕竟作为物理计算的开创者,AGEIA有先入为主的优势,其PhysX
PPU平台也已获得广泛支持。

尽管GPU物理加速目前存在缺乏交互性的不足,但它的积极意义也显而易见:GPU拥有更强大的物理计算能力,能够处理高度复杂的物理计算,让未来的3D游戏能够淋漓尽致展现壮阔的场景。倘若GPU物理加速能与专业的PPU协同运作,无疑是一套非常完美的方案,但这有赖于物理加速的API达成最终的统一。

前瞻

极富弹性的架构以及卓越的浮点性能赋予GPU越来越多的潜力,现在,GPU除了可以在3D游戏中大展身手以外,还进入到一个崭新的广阔空间,无论是高性能计算还是日常办公应用,GPU都扮演不可或缺的角色。尽管集成芯片组在中低端领域影响日渐增大,严重挤压了独立GPU的空间,但未来的情况大有不同,伴随着GPU走向通用计算,越来越多用户会意识到GPU的重要性。在AMD宣布并购ATI之后,英特尔也迅速作出反馈,积极投入高端图形技术的研发,而作为唯一的独立图形供应商,nVIDIA则在谋求开发高端CPU产品。越来越多的迹象表明:GPU与CPU的关系将日趋紧密,GPU的用途也将越来越广阔,它将遍及高性能计算、专业工作站、游戏PC系统以及日常的办公平台,对于nVIDIA和AMD-ATI来说,这是个巨大的机遇,但对于英特尔这样的老牌处理器厂商而言,GPU进入通用领域则意味着空前的挑战。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: