GPU的新应用:浅谈浏览器硬件加速之争
泡泡网显卡频道11月3日 近段时间,我们经常可以从网络上看到关于浏览器硬件加速的报道,似乎在一夜之间所有的浏览器都开始讨论硬件加速这一话题,IE9、Firefox、Google Chrome 都在积极的准备着为浏览器迎来完整硬件加速的支持。今天,我们这片文章就主要谈谈浏览器的硬件加速。
● 何谓硬件加速
根据维基百科的解释,硬件加速就是指在计算机中通过把计算量非常大的工作分配给专门的硬件来处理来减轻中央处理器的工作量的技术。
从上面这句话中我们就不难看出,硬件加速首先应该具备减轻中央处理器工作量的特征,同时需要有专门的硬件来处理。为了有便于大家更好的理解,笔者在这里对“硬件加速”这个词用更加通俗的语言解释一下。
大家知道,计算机中最重要的是CPU(中央处理器),它之所以重要,并不仅仅因为它是整个电脑的心脏,而且在计算能力方面是全能型的,只要是运算方面的事情,理论上那个CPU都能够搞定,比如CPU可以渲染图像,可以解码视频、可以解码音频、可以3D渲染,但在执行效率方面,就不如专门的硬件了。比如使用GPU来进行图像、视频的处理,使用独立声卡来进行音频的处理,甚至在早些年,视频解压、采集等等都需要专门的硬件(显卡未能支持)。
90年代使用辅助处理器实现的浮点数计算硬件加速
在计算机中,CPU由于要管的事情太多(几乎所有的事情它多少都会参与,至少会下达指令),所以节约CPU的资源就是硬件加速的重要目的,闲置的CPU资源就可以用来干更多的事情。这就是硬件加速的根本目的。
● GPU硬件加速
在所有类型的硬件加速中,GPU硬件加速是最为引人注目的,甚至当今人们一说到硬件加速就会默认当作GPU硬件加速,为什么GPU的硬件加速会如此受关注呢?这还得从GPU的应用说起。
GPU最初的功能虽然只是用来渲染图像(2D/3D),但是由于人们对虚拟视觉的要求永无止境,导致现在GPU和CPU一样,成为了计算机中最重要的设备之一,所以大家可能会看到,有不少的品牌电脑厂商在广告中都将“显卡”的介绍放在了第一位,这也是由于GPU的重要程度决定的。
相对于其他硬件来说,GPU最大的特性就是运算能力强大,甚至比CPU的运算能力要强大很多倍(3D游戏渲染对运算器的要求非常高),但由于并不是所有时间GPU都在满负荷工作,所以如何利用GPU的潜能就成了这几年业界关注的一个焦点,也就是所谓的“GPU硬件加速”。
现在,有非常非常多的应用都可以使用GPU来实现硬件加速,比如高清视频的播放、视频格式的转换、蛋白质折叠运算、大规模的浮点运算等等,而GPU通用计算在最近这几年也得到了蓬勃的发展,GPU能做的事情越来越多,甚至密码破解、病毒扫描等等乱七八糟、歪门邪道的事情都可以使用GPU加速。
作为普通用户进入互联网世界的入口,浏览器恐怕要数现在每天使用率最为频繁的软件,而Web应用的趋势让浏览器可能成为今后的应用平台,比如Google公司即将发布的 Chrome OS 操作系统,就完全是一款浏览器操作系统,所有的操作都只能在浏览器中完成。
HTML以及JavaScript技术的发展也让浏览器中的内容变得更加丰富和有趣,在网页中办公、玩游戏、甚至处理图像都已经实现并逐渐成为了非常平常的事情,而未来浏览器中还会出现大型的3D游戏、高清晰的多媒体视频,如果还是像传统的浏览器一样,将这些工作全部都交给CPU来处理的话,CPU将不堪重负,而且压根也完成不了这些工作。所以,浏览器的GPU加速已经迫在眉睫。
基于Web的硬件加速虽然好几年前就一直在提,但相关的进展一直都非常缓慢,尤其是 Google 还没有推出 Chrome 浏览器的时候,浏览器从技术方面可以说有很多年都没有明显的更新。
随着 Google Chrome 浏览器的崛起,更多用户也越来越认识到了浏览器的重要性,Firefox 和 Google Chrome 都双双蚕食着 IE浏览器的市场份额,在这种情况下微软必须要振作了。Windows 7 发布之前,微软推出了 IE 8浏览器,现在,IE9 Beta 版已经发布,最重要的是——IE9浏览器直接支持GPU硬件加速功能。
IE9 Beta 的发布让浏览器的GPU硬件加速一夜之间成为了热门话题,随后Firefox、Google Chrome 等浏览器都纷纷将硬件加速功能作为当务之急,Opera 更是率先开始研究移动平台上的浏览器硬件加速,浏览器厂商开始了“硬件加速之争”。
在IE9中,微软使用了Direct2D、DirectWirte、XPS等新技术进行文字、图像、视频、SVG等内容的渲染。Direct2D的加入可以让浏览器调动GPU来优化渲染丰富的图形,从而带来更快的Web程序运行速度,以及更高质量的浏览体验。
对一些图形操作来说,GPU是更合适的选择,比如GPU在执行Alpha混合与双线性图形缩放的时候就比CPU快得多,还可以利用像素着色器执行复杂的每像素计算。
利用GPU执行更多任务,CPU资源就得以释放给其他浏览器子系统,还能获得更流畅的动画和视频播放效果。
根据Mozilla提供的资料,Firefox和IE9在Windows平台上的实现方式完全一样,而在Mac及Linux平台上的实现方式目前还没有特别细的资料。
互联网巨头 Google 自己的 Chrome 浏览器也有一套完整的GPU硬件加速方案,而且是一种非常特殊的硬件加速方案。
在硬件加速条件下,GPU接受来自渲染进程的命令,并将其输入OpenGL 或 Direct3D 进行处理,Chrome在此一直落后于其他对手,原因是Google考虑到安全因素,将浏览器的渲染工作安排在一个独立的进程内,导致无法与操作系统的硬件接口直接通信。因此为了实现硬件加速,Chrome需要特殊的方案:
在渲染进程和GPU两者无法直接通信的情况下,Chrome特意分出了一片共享存储区,让渲染进程将命令缓存录入存储区,再等GPU从存储区读取命令,进而执行相应命令。这方案解决了核心问题,但因为始终不是直接通信,功能上还有一定的限制。
依靠这个结构,Chrome开始对部分内容实施硬件加速。对于普通的网页内容(文本、CSS、静态图片)依旧直接使用CPU渲染,而GPU负责大型媒体(如视频)的加速渲染任务,更为特殊的WebGL元素,则完全交由GPU渲染。对各层面的内容渲染完成后,最后关键的一步是将所有内容揉合进同一个页面,这项工作CPU无法很好胜任,所以这一部分工作也完全可以交由浏览器来完成。
下面,我们就来检测一下目前在IE9浏览器上的GPU硬件加速实现情况,由于目前Firefox和Chrome都还没有发布完整支持硬件加速的正式版本,甚至连公测版本也还没有,所以我们本次只测试IE9 Beta的硬件加速功能。
点击查看大图
测试平台除显卡之外,使用了两套完全一样的平台。只是其中一个平台上的显卡是主板集成的880G,另一个平台上的显卡为独立显卡GTX460,我们本次主要测试在一些支持硬件加速的场景中,显卡本身的性能是否真的对整体的网页性能有很大的影响。
GTX460性能:44FPS流畅
880G性能:8FPS幻灯片
微软推出的FISHIE TANK是一个真实模拟在浏览器中实时渲染的小应用,我们选择了同时在屏幕上渲染1000条小鱼,测试结果可以看出GTX460渲染1000条小鱼非常轻松,每秒帧数高达44帧。相比之下,集成显卡880G的表现就非常差了,只有8FPS。
● 880G集成显卡性能
6FPS超级无敌卡
10FPS超级卡
● GTX460独立显卡性能
60FPS满帧无悬念
60FPS满帧无悬念
这个叫做视频万花筒的应用非常有意思,它可以将视频通过万花筒的方式展现出来,在万花筒转动的同时视频也在继续播放,你很难想象这是直接在浏览器中实现的。从测试结果我们可以看到,880G和GTX460有着非常显著的差距,足以证明硬件加速已经生效。
880G杯具的12FPS
GTX460又是60FPS的满帧
Canvas Zoom也是一个非常有意思的应用,主要是在网页上对一副超大照片进行缩放操作,由于图片实在是太大了,所以如果使用CPU来计算将非常困难,故而采用GPU硬件加速。测试结果不用怀疑,高性能的GTX460获得了满帧,而880G只有杯具的12帧。
Speed Read
880G耗时:24秒
GTX460耗时:15秒
SPeed Read是一个测试在浏览器中快速渲染文字的工具,在固定数量的文字渲染过程中,880G使用GPU硬件加速花费了24秒时间完成,而GTX460只花费了15秒的时间,效果非常明显。
本文我们比较简单的介绍了一下目前IE、Firefox以及Google Chrome在浏览器GPU硬件加速方面的进度和实现原理,并且对IE9 BETA的硬件加速效果进行了简单的测试。当然,在实际的应用上,远远不止我们本文中所介绍的内容,微软就曾经表示IE9的一切都可以使用硬件加速,就好象 Windows 7 支持 Direct Compute 一样,用户并不知道在什么时候生效了,但确确实实的生效了。
在微软这样的业界龙头带动下,浏览器的GPU硬件加速功能在半年内得到了非常迅猛的发展。对浏览器市场比较了解的朋友应该知道,目前IE、FireFox以及Chrome是最流行的3大浏览器,这三大浏览器如果都完全支持了硬件加速,受益人数将超过整个互联网用户的90%(这里不考虑浏览器更新因素),可以肯定,浏览器的硬件加速将成为未来浏览器的标配功能。
浏览器的硬件加速也同样体现出了一个事实——CPU的工作正在逐渐被GPU所取代,也就是说以后连上网都需要更好的显卡才能获得更好的体验,CPU的确应该感到鸭梨很大。但是,在执行效率方面,GPU的并行计算架构确实更加适合这样的工作。可以确定的是,虽然CPU的重要性在逐渐降低,但GPU应该永远不会取代CPU。■<