未来应用的多面手

时间:2022-08-28 07:16:38

未来应用的多面手

历史上,3D游戏应用与显示技术的发展休戚相关:一方面30游戏对硬件提出了更高的要求,而另一方面良好的硬件环境又为游戏提供了更广阔的发挥空间。但是最近一段时间我们发现一个有趣的现象,游戏对于显示技术来说已经不是唯一的推动力:其它一些日常应用,如辅助计算,浏览网页,乃至于查看图片等等都与GPU(GraphicProcessing Unit,图形/图像处理单元)扯上了关系。看来GPU已经不再安于现状,除了传统的3D渲染任务之外,未来的GPU又会在哪些领域中大显身手呢?本文将为大家描述一幅未来GPU应用的画卷。

GPU的潜力:无可限量

01:我们知道,一个木桶中能装多少水取决于最矮的那块木板;在计算机系统中也是一样的道理,系统性能的发挥也往往取决于性能较低的那个配件。现在最强GPU的运算能力已经远远超过了目前最强的CPU,在很多人惊异于图形处理器超强的性能时,我们也在思考另外一个问题,如何用比较长的“木板”来修补比较短的”缺口”呢?

邓:情况确实是这样的。事实上现在GPU的速度已经可以说是相当快了,在很多场合下系统的瓶颈出现在其他部分,比如CPU子系统,内存子系统等,GPU的性能也因此不能完全发挥。解决这个问题的关键是将尽可能多的计算交给GPU来完成。实际上我们看图形处理系统的发展史就是这样。

最初的图形加速器仅仅处理纹理、颤色的混合以及深度(Z)数据等,其余的步骤包括三角形的生成、几何外形的构建与光源的处理都是CPU来完成。

稍后的图形处理器慢慢有了硬件的setup部件、几何与光源处理部件。最新的Di rectX lO GPU又增加了Geometry Shader(几何图形处理单元),顶点的创建和删除操作都可以在GPU内完成,而较早一代GPU(DirectX 9级别的GPU,如Radeon lx00以及GeForce 7x00)这样的操作都需要由CPU来处理。可以说,现在绝大部分3D渲染的操作已经完全可以交由GPU来处理,而CPU主要负责场景和数据的管理方面。

除了3D的操作以外,随着GPU计算性能和可编程能力的不断提升,很多传统上完全是需要cPu处理的操作现在也可以交由GPU来进行处理,诸如物理计算等等,就很适合GPU进行处理。因此,今后比较理想的状态是GPU负责那些重负载、可以并行处理的运算(如3D和物理),而cPU处理算法密集型的部分和数据的管理(如AI、场景管理以及OS等等)。

Q2:GPU在设计时与CPU的思路有很大差异,很多人认为GPU是用来完成比较简单、但重复性非常高的图形渲染任务。请问GPU与CPu在进行运算的时候都有哪些区别昵?针对GPU的一些特点,能不能用它来完成更多的任务,如何来发掘GPU强大的运算潜力呢?

邓:GPU和CPU在设计上是有着完全不同的方向。对于GPU来说,高效率地完成图形的实时渲染是它的首要任务,因此它需要具备强大的数据处理能力;往往内部包含几十上百个运算单元,但是每个计算单元的复杂程度和CPU相比就要低很多;CPU需要高效率地运行现有的各种复杂的程序,它的内部架构往往只有有限的计算单元(例如目前主流的CPU内部的ALU运算单元数量往往只有个位数,比如说COnroe每个核心仅仅只有3个ALU),但是它具备极其复杂的指令和数据的读取、解码和执行单元。

目标应用的不同导致了架构上的极大差别,也造成了两者针对不同的应用有完全不同的表现。对于操作系统和很多事务性的程序,它们往往是单任务、单线程或者在数据处理上只具备有限的并行性,但是具备很复杂的程序结构,这样的应用当然是CPU的强项;而3D以及某些科学计算类型的计算往往是可以高度并行的(简而言之就是,数据之间的相关性很小),但是对于计算能力的需求很高,这种应用就是GPU的长项。GPU过去可编程能力不强,Shader程序往往只能是一些简单的程序。

但是目前GPU可编程性得到了极大的改善,它现在可以执行带有条件转移、分支和子程序的调用的几万条指令的较复杂程序,因此GPU的应用范围也得以逐步扩大。

GPU加速技术与应用程序

Q3:DOS时代是完全意义上的文字操作系统时代,而从Wlndows 95开始包括后续的Windows 98/Me/2000/XP,都可以看成是2D图形操作界面(GUl)的时代。Windows Vista的可以看成是一个明显的3DGUl时代的信号。那么历代操作系统与图形处理器之间又有什么深层次的联系呢?

邓:操作系统当然是所有图形处理的基本软件平台。对于操作系统的UI(用户界面)来说,确实是经历了三代:

第一代是DOS那样的字符操作系统,图形控制器只是需要把接收到的字符代码调用存放在显卡中的字符点阵输出显示而已。那个时候显卡叫图形控制器,地位和磁盘控制器这些没什么区别;

第二代是Windows后开始有的图形用户界面(GuI)。图形用户界面的出现对于图形的要求高了很多,因此后来的显卡加入了GUl加速的功能,可以提供对基本图形要素,诸如线,图形块和颜色填充等操作的加速,显卡后来叫加速卡,最初其实主要是针对GUl对2D图形的加速,3D加速卡的出现则是稍晚的事情;

而第三代则是Wlndows Vista引人的3D的用户界面。实际上3D用户界面在Vista之前就有了,不过大部分人没有用到而已。我相信就如同从第一代Wlndows到Windows XP在2D图形用户界面发生的巨大变化一样,Vista的3D用户界面仅仅是第一步,今后3D将无处不在,出现在各种应用程序中。毕竟我们的世界是3D的,3D的图形界面才最贴近我们生活中的感觉。

Q4:很多时候大家都认为GPU是专为游戏而生的,如果我平时只是上上网、做一些最基本的应用,是不是意味着GPU加速与我无关呢?

邓:我们相信和每个人都有关系。除了游戏外,最需要GPU的就是高清视频加速领域了。如果你用一台主流的PC看Blu-ray Disk或者是HD-DVD的影片,如果没有GPU的协助的话,想必将会是个痛苦的经历。

而现在的Radeon HD 2400/2600以及GeForce 8600/8500/8400系列的GPU基本上可以完全解决BIU-Ray Disk/HD-DVD播放的问题,而且可以使得画质更好。除此以外,越来越多的软件也都慢慢需要GPU的支持,或者是可以一个快速的GPU中获得很大的好处。

比如Adobe Acrobat是个电子文档的软件,过去可能很少人会认为和GPU有什么关系,但是最新的Acrobat 8.0支持利用GPU的计算能力对文档的现实进行加速。实际上,某些电子文档包含有非常复杂的图形元素在里面,比如说建筑的结构图、城市地图、测绘地图等文档中通常包含数以十万计的矢量图形单元在里面,如果完全依靠CPU很难快速地进行解压运算(矢量图形的显示改变一点比如说缩放的时候每一个像素都是需要根据相应的方程式进行计算)。

GPU的强大运算能力就可以快地协助演算方程。根据测试,即使是使用GeForce 8500这样的入门级GPU在显示一些复杂文档的时候也比非GPU加速快好几倍。这仅仅是一个例子,其他方面的应用还有诸如AdobePhotoshop这样的软件可以利用GPU的计算能力对一些过滤操作进行加速,比如降噪等操作使用GPU比CPU具有更高的效率。

更不用说一些本来就需要3D加速的软件了,比如Google Earth就是支持3D加速的软件,在显示复杂的3D地形或者城市地形的时候,3D的性能就是非常重要的。所以说,GPU在游戏外的应用已经开始了,今后的趋势毫无疑问地会越来越多。

Q5:很多经常上网的用户都有这样的体会――我们在打开一个Flash文件比较多的页面时,CPU的使用率直线上升,半天没有反应。以后GPU可以帮上忙么?

邓:Flash主要是由矢量图型、点阵图形和视频等元素构成。在技术上说实现对Flash一类的应用进行加速完全是可行的,就如刚才那个问题所举的例子,但是这个当然也是需要应用程序的支持。我们相信不久后就会出现可以利用GPU加速Flash一类软件的程序了。

Q6:如果我们打开或者拖动一张比较大的图片时,我们会发现画面是一点一点显示出来的(或者从模糊到清晰的过程)。这实际上是因为我们每进行一步操作,CPU都要对画面(用位图的形式)进行重新计算,然后才能显示出来。听说GPU以后也要进军这块领域,那么引入GPU加速技术之后,情况会变成怎么样呢?

邓:对图像执行打开或者缩放这类操作时,实际上就是将图像中的记录数据像素化的过程:位图需要使用特殊的算法来避免取样过度或者取样不足产生的条纹/马赛克等BUG,而矢量图则是将原来的矢量数据一一像素化,让它们能够在屏幕上显示出来(屏幕是由一个个的像素点所构成的)。在拖动图像时,其实就是对像素数据块的复制操作。这些操作看似“简单”,却是十分消耗系统资源的;而且这些操作完全可以交给GPU来进行,此类软件如Acrobat和最新的Google Picasa等。

Q7:近两年来国内的HTPC市场迅速升温,大家对“高清显卡”的需求越来越明显。高清显卡有两个特点,就是极低的功耗和静音效果与完善的视频编解码能力。而从传统方面来说,视频编解码都是CPU的工作,但目前看来GPU似乎更胜任这份工作。

邓:高清视频的解码交给GPU来完成是个必然的趋势,因为对于视频的处理来说,GPU毫无疑问比CPU更加适合。

从VCD、DVD过去的历史来看,毫无例外都是由显卡来最终解决视频播放的解码问题(PC平台上)。除了解码外,还有就是后期处理的工作,比如说反转电视电影、高级滤渡以及降噪和边沿增强等功能,这些功能可以大大提高画质,但也会带来的计算压力显著增加。现有的主流甚至一些高端的CPU进行复杂的BD/HD-DVD影片的解码已经是勉为其难了,后期处理更是无从谈起。

使用GPU可以彻底地将CPU的负担释放出来。现在最新一代的GPU实际上已经基本上完全解决了高清影片播放的问题。对于编码来说,特别是复杂编码方式,比如H 264的编码处理使用GPU进行加速的工作正在研究中,我们相信今后一段时间使用GPU进行编码加速将会是一个非常热门的应用(编者注:AMD已经有类似的技术出现)。

Q8:除此之外,科学仿真计算领域以及物理效果处理领域也将是GPU下一阶段的发展目标,两位能不能跟我们介绍T该领域的现状.以及未来一段时间内发展的趋势呢?

邓:使用GPU进行3D处理之外的计算的研究实际上早就有了,过去叫GPGPU(通用用途GPU)。GPGPU比较麻烦的是实际上它需要和3DAPI(DirectX和0penGL)打交道,要试用GPU进行计算就必须了解3D图形方面的知识,因此应用的门槛很高。NVIDIA公司去年推出了CuDA,算是第一个针对GPU高性能计算而推出的开发环境,包括C编译器和一些可以直接使用的函数库。CUDA的意义在于将GPU高性能计算从过去3D处理的附属物变成了一个独立的全新的领域,其意义是十分巨大的。对于使用者来说,他们不再需要了解这么多详细的3D处理技术,只需要把GPU视为一个高性能协处理器,使用通用的C语言进行开发即可,大大降低了开发的难度和门槛。

NVIDIA也推出了专门的GPU高性能计算产品叫Tesla,这是NVIDIA的一个新的晶牌,专用于解决复杂的计算问题。Tesla产品每个GPU目前可以做到5000亿次浮点计算的能力,甚至达到了一些巨型计算机的性能。目前,GPU通用计算已经在分子医学、油气勘探以及电磁分析等需要高性能计算的领域有了一些成果,和CPU相比,GPU处理这类应用的性能要高几十到上百倍。可以说,GPU高性能计算的前景十分广阔。

读者有问

09:可以看出GPU日后是想在计算机中发挥更重要的作用,那么关于GPU与CPU未来关系的发展也成为很多朋友关注的热点,甚至有些朋友戏言以后GPU会取代CPU成为计算机运算的主力,也有人会说GPU与CPU将会合二为一,成为“超级处理器(X-PU)”。请工程师朋友来分析一下这种观点成为现实的可能性有多大?

邓:我们在前面说过,GPU和CPU完全是针对不同的应用来进行设计的,在架构和应用上的区别非常明显,因此目前看来在可以预见的几年内似乎都不太可能出现一方取代另一方的情况出现。在操作系统以及复杂的程序运 行这些方面还是需要CPU来执行。GPU的应用范围越来越大,更多的是作为第二个专用于复杂计算的处理器。与其说GPU取代CPU的功能,不如说GPU将PC的应用范围扩大到过去没有涉足的地方。我相信CPU和GPU在今后相当长的时间内还是会共存下去,而且丽者都会持续不断地提升性能,以满足越来越复杂的各种应用。至于说台二为一,目前看来言之尚早。

写在最后:

如果你到现在为止还认为GPUP是用作图形运算用途的话,那就大错特错了!GPU是随着3D技术的发展而诞生的,经过了这么多年的洗礼,GPU的应用范畴已经远远超出了诞生时的初衷。我们专家讲堂栏目这次邀请邓先生给大家介绍当前GPU应用的一些最新进展,如果大家有兴趣的话不妨进一步思考,并把你们的想法和建议发给我们。相信不久的未来,GPU当中的“Graphics”将只是众多含义中的一个……

上一篇:个人桌面系统随身带希捷FreeAgent Go移动硬盘 下一篇:不玩游戏的手柄能干什么?