显卡杂谈5: 强劲的显卡性能,是不是某种浪费?
(yanlb2000, 2005.01.14)
前面的文章谈到,这几年显卡的发展真是飞速,其性能的提升、更新换代的速度,甚至连CPU的发展也不能与之相比,更将其他配件,比如显示器、硬盘、内存等的发展抛在后面。这就引出了一个问题,是不是人人都需要这么强的显示性能?强劲的显卡资源,是不是某种浪费?
显卡上的资源主要是两个。一个是主芯片,或说图形处理器的处理能力;另一个就是显存。
先说图形处理器。现在ATI和nVidia的高端图形芯片,其晶体管集成度已经超过了同时代的CPU(比如现在的奔腾4),单位时间内可处理大量的点、线、多边形的几何运算,以及阴影、贴图等操作。但实际上,这些功能也仅仅是在玩3D游戏或设计的时候才用得上。那么,有多少比例的电脑是真正被经常拿来执行3D任务的?就算这些电脑中,在开机运行的过程中,又有多少比例的时间,是在执行3D任务?稍微考虑一下就知道,现在大部分电脑的3D功能,其实是被闲置着。
大部分人用电脑,多数是用来上网浏览或聊天、看片子听音乐、处理文件、或编程开发等,这些活儿,几乎都用不上3D功能。也有不少玩游戏的,但至少现在,平面游戏还是比较多的。总的来说,2D(平面)应用占了大多数电脑的大部分时间。但大家可以发现,现在谈到显卡,几乎就没有谈到2D性能的了,最多是说,画质如何显示效果如何。而这些画质的问题,更多地与显卡的设计、用料相关。那么现在显卡的2D性能到底如何呢?其实,早在几年前,显卡的2D性能可以说已经达到顶峰了,CPU来多少数据和指令,显卡都能马上处理掉,基本上处于空闲状态。所有显卡2D能力都绰绰有余,现在没人比较2D的快慢。
所以,显卡图形处理器的大部分晶体管都是为了3D加速而设计制造的,但这些功能在大部分电脑上的大部分时间被闲置,这就是浪费!
进一步考虑,因为3D加速算法的问题,所以显卡的浮点运算能力是非常强大的,那么,能不能将图形处理器的强大运算能力开放出来,让其在空闲的时候,为其他应用服务呢?比如是在做科学薄雾浓云愁永昼运算的时候?我只是偶尔听说一次,说有软件能利用显卡的浮点运算能力做其他事情,但具体情况如何,就不知道了。
接下来再谈谈显卡上的显存资源。在2D应用的时候,显存主要用做帧缓存,就是存放对应到屏幕上每个像素的色彩信息。这对显存的需求其实并不高,就算是大屏幕高分辨率下的真彩色模式,几个兆(MB)的显存就够了。但3D应用下就不同了,除了帧缓存,还需要保存大量其他数据,比如各个多边形信息、顶点信息、Z轴缓冲、贴图素材,以及大量中间结果等等,可以说多大的显存都是需要的。而且,显存不但要大,而且要快,要有足够的带宽来快速交换数据。所以,显卡上的显存,往往比主板上的内存要高端,先进的内存技术,往往是先用在显卡上面的。
现在显卡上的显存,主流的都是64M,128M了,高端的就要再翻一两个翻,而现在电脑内存,主流的也不过256M, 512M等。就是说,显存的大小约为内存大小的四分之一左右。回顾这几年PC发展的历史,显卡内存的大小基本上就保持在主内存大小的1/8到1/4左右。比如486的时候典型配置是4MB内存,一块Trident8900显卡显存就是1MB。老奔腾系统,内存16MB,S3显卡显存一般是2MB或4MB。应该说,这是个不小的比例了,值得好好考虑显存的其性价比。
那么,这些显存的利用情况如何呢?很可惜,与图形处理器类似的情形,只有在3D应用的时候才需要这么多显存,大部分时候,2D应用,只用了几个MB的帧缓存,其余的显存就是闲置的。
所以,如何避免在显存上的浪费?有2个思路。一个是,显卡上只用很少的显存,3D应用需要的大量内存与主板上的内存合用(这个说起来内容就比较多了,容我另文再表)。另一个思路是反过来,如何让系统在不用那么多显存的时候,将多余的显存资源贡献出来,让其他应用程序来使用?比如编一个底层驱动程序,可以将显存映射到系统内存的地址空间,统一使用。或者退步些,将显存模拟成一个逻辑盘,作为系统的磁盘缓存什么的。这个思路我好几年前就有,理论上也是可以实现的,但却从来没听说过真有这样的实现技术。
本专题的其他文章列表,请看:
专题:显卡杂谈 http://www.blogcn.com/User13/yanlb2000/blog/55778484.html