最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

显卡性能影响因素【详解】

笔记本显卡 crifan 4012浏览 0评论

显卡性能影响因素【详解】【转】【好文推荐】

[决定显卡性能的因素]

现在已经不仅是游戏玩家才在意自己电脑的显卡怎么样,普通的电脑用户在配置电脑的时候也对显卡有了特别要求,而面对市面上纷繁复杂的显卡,了解显卡的性能也就成了一件不简单的事。显卡的性能是由不少因素而决定的,首先我们来了解一下显卡的简单工作原理。

1、 从总线 (bus) 进入显卡芯片 ——将 CPU 送来的数据送到显卡芯片(GPU)里面进行处理。

2、 从 video chipset 进入 video RAM——将芯片处理完的数据送到显存。

3、 从显存进入 Digital Analog Converter (RAMDAC=数字模拟转换器),由显示显存读取出数据再送到 RAMDAC 进行数据转换的工作。(显卡现在大都已将RAMDAC集成在了显示芯片内)

4、 从 DAC 进入显示器 (Monitor)——将转换完的类比数据送到显示屏。

可以看到,决定显卡的性能的首要是显卡的GPU,也就是显卡的显示核心,比如NVIDIA的GeForce FX 5900和ATI的Radeon 9800等,这都是我们熟悉的GPU名称,可以说GPU的性能直接决定了显卡的性能。

其次就是显存的带宽,要保证GPU的性能得到充分的发挥就需要足够大的带宽,就像一辆法拉利,一定要在赛道上才能发挥它的威力,如果跑在乡间的土路上,我想连拖拉机都跑不过!

再次是显存的容量等等其他的因素。高分辨率的应用以及大量3D场景的渲染,需要用到大显存,因此当显存容量不足的时候,系统会自动调用内存作显存使用,然而在速度上内存当然是无法和显存相比的了,这样显卡的性能自然也就受到影响。

这些因素都是依据理论得来的,显卡GPU这方面相信大家都没有什么异议,什么档次的GPU基本上就决定了这款显卡在实际应用中会有怎么样的性能,而且在购买时GPU已经是显卡的第一标志,厂商也无法在上面动什么手脚。但对于显存的位宽及容量,这些隐性的指标,就成了左右显卡性能在实际使用中的关键因素了!

这是我们这次测试所使用的一个最新的Athlon64平台,我们将在这个平台上测试显存的位宽及容量对显卡性能的影响。

驱动程序都使用了NVIDIA和ATI官方最新发布的驱动(在我们截稿前,NVIDIA官方已经发布了最新的ForceWare驱动56.64版)。测试软件除了权威的三款显卡基准测试软件——3DMark2001 SE、3DMark03 Build 340和AquaMark 3外,还使用了两款最新的游戏DEMO——UT2004 DEMO和FarCry的第二版DEMO。这两款游戏都是今年众人期待的年度大作,其中FarCry是一款全面支持DirectX 9的游戏

[显存容量的意义]

显存担负着系统与显卡之间数据交换以及显示芯片运算3D图形时的数据缓存,因此显存容量理论上决定了显示芯片能处理的数据量。

小知识:

我们先来算一下我们在平时应用时所需要的显存容量,当在进行2D应用时,显存容量=水平分辨率×垂直分辨率×颜色位数/8bit,比如在1024×768×32的显示模式下,那么需要的显存容量=1024x768x32bit/8bit=3145728 byte=3.072MB,这只是2D应用时,如果是使用3D应用时,那么需要的显存容量=水平分辨率×垂直分辨率×颜色位数×3/8bit= 1024x768x32bitx3/8bit=9437184byte=9.216MB,当然,这些都这是应用时的最低需求,因此还必须有一定的显存容量来专门存放纹理数据或Z-Buffer数据,否则当显存容量被显示资源完全占用时,系统会自动调用内存作为纹理显存使用,而在速度上内存是无法和显存相比的了,这样的二次调用自然会导致显示性能下降。

从上面的计算式看来,就算在1600×1200×32的显示模式下使用三维绘图比如3D Studio Max,它所需的显存也仅为1600×1200×32bit/8bit×3=23040000byte=22.5MB而已。但是现在的主流显存容量已经是128MB,256MB的显卡在市场也并不少见,我们从前面的式子可以知道理论上32MB的显存容量都绰绰有余了,那为什么显卡的显存容量还在不停的成倍增长呢?我们用得着这么大的显存容量吗?多出来的是浪费吗?

其实不尽然,现在的一些主流3D游戏,材质数据、顶点数据和其他数据所需的显存容量都已经越来越大了,像一些最新的游戏如DOOM III等,所需的材质数据十分惊人,被称为“显卡杀手”。

并且在显卡的同质化越来越严重的今天,显卡厂商急需寻找一些新的卖点,而在其他规格已经无法再做什么大文章的时候,显存容量也就成了厂商大肆宣传的目标,64MB已经过时,128MB凑合使用,256MB才够时髦!于是在一些中低端卡上出现了高端卡都未必会使用的256MB大容量显存。所以目前显卡的发展趋势,使得显存容量的地位开始水涨船高,每种核心的显卡可供选择的显存容量也就多了。那么面对市面上从64MB到256MB这么多可供选择的显存容量,我们究竟需要买多大的显存容量呢?

[显存容量的测试]

我们现在就使用了三块显存容量分别为64MB、128MB和256MB的FX 5600XT来进行测试,看看究竟显存容量会对显卡性能有多大的影响。

首先来看看DirectX 8上的比较:显存容量为128MB的显卡性能比64MB的有了一些提升,并随着分辨率的提高幅度也增大,但就算是1600*1200*32的分辨率,性能提升也才只有6%。而令人吃惊的是,显存容量为256MB的比128MB的显卡性能不仅没有增长,反而有了些许下降!就算是提高分辨率也依然如此。

你可能会说3DMark2001 SE太老了,对现在的显卡的运算和材质负担不够大,那么我们来看看3DMark03,而说到运算复杂度和材质大小,3DMark03的第四项游戏测试Mother Nature无疑是最要求显卡性能的项目了。

同前面的测试一样,128MB显存容量的显卡性能仍然比64MB显存容量的性能有了提高,并且提高的幅度比3DMark2001 SE的测试高了一些,随着分辨率的提升幅度也随之增大。但256MB显存容量的显卡在标准的1024*768*32模式下性能依然比不上128MB的显卡,增大分辨率后才与128MB的显卡持平。

在开启4X全屏抗锯齿后,256MB的显卡终于有了第一次领先,但也只是在把分辨率提高到1600*1200*32时。全屏抗锯齿的开启也使得128MB对64MB的显卡性能优势增大,而随着分辨率的提高,更是把64MB的显卡“虐待”得不成样,在1280*1024*32时已经只有128MB显卡的一半帧数,提升到1600*1200*32的分辨率时干脆就“崩溃”了,弹出一个“显存溢出”的错误对话框,根本无法运行3DMark03。

64MB的5600XT在1600*1200*32下开启4X全屏抗锯齿出现错误对话框

3DMark03-Mother Nature的这项测试对显卡的显存容量需求十分大,其中需要的材质数据为50MB,顶点数据为54MB,索引数据为9MB,这样加起来测试时需要的显存容量就达到了113MB。所以只有128MB显存容量或以上的显卡才能将数据一次性载入,而64MB显存容量的显卡就必须借用系统主内存了,这样自然影响了显卡的性能。而开启全屏抗锯齿和提高分辨率更是加重了显卡对显存容量的需求了,这样也就不难理解64MB显存容量的显卡性能暴跌的原因了。

再来看看实际游戏中的表现,128MB显存的显卡依然是三块显卡中性能最佳的,它领先64MB显存的显卡性能幅度随分辨率提高而增大,领先256MB显存的显卡性能幅度随分辨率的提高而减少。

在游戏中开启4X全屏抗锯齿后,在标准模式的1024*768*32下情况还一切正常:128MB显存的显卡比64MB和256MB显存的显卡性能还是稍高,但随着分辨率的提高情况就有点不一样了,在1280*1024*32时三块不同显存容量的显卡性能已经基本持平,当达到1600*1200*32模式时,64MB显存的显卡性能居然超出了128MB和256MB的显卡!

对此我们编辑的解释是UT2004游戏本身跟驱动的兼容性造成的。自从UT2004发布DEMO以来,ATI和NVIDIA的驱动都一直与UT2004存在兼容性问题,NVIDIA甚至因此把原定于今年二月份发布的56.56版驱动推迟发布,直到了3月16日,在改进了一些问题并把版本号由56.56升到56.64后才发布出来。由于时间错位问题,我们这次测试所使用的是上一版的官方正式驱动——53.03,跟UT2004的兼容性等问题在所难免,使得高显存容量的显卡在高分辨率下帧数过低,所以我们认为这种情况是不正常的。

[显存带宽的意义]

显存带宽是指GPU与显存之间的数据传输速率,它以字节/秒为单位。

当显示卡在进行像素渲染时,都需要从显存的不同缓冲区中读写数据。这些缓冲区中有的放置描述像素ARGB(阿尔法通道,红,绿,蓝)元素的颜色数据,有的放置像素Z值(用来描述像素的深度或者说可见性的数据)。基本的渲染过程是:计算一个像素的的颜色值,从颜色和Z缓冲区中对应该像素的存储位置读取颜色值和Z值,然后计算出这个像素新的颜色值和Z值,计算中可能还需要与像素原来的颜色进行混合或者合成处理(这个计算还和Z值以及Alpha值有关)。一旦新的像素颜色和Z值计算完成后,新的数据就需要写回到内存中。也就是说进行一次基本的渲染操作,每个像素被渲染一次的话,就需要传送(读取32bit 颜色 + 读取32bit Z + 写入32bit 颜色 + 写入32bit Z)=128bit,即16个字节。

材质贴图和深度复杂性会使每个像素渲染所需要的带宽加倍。当前大部分游戏都使用了多重贴图(在每个像素上应用两层或者更多的纹理)以及双线性或者三线性过滤来达到丰富的图象细节和逼真度。纹理数据也是从同时放有像素颜色和Z缓冲区的内存中读取。为了了解纹理读取所需带宽的近似值,我们可以假设每个像素应用了两层纹理,同时还采用了三线性过滤,每个像素的每个纹理在三线性过滤时会使用8个纹理样本,每个样本都是32bit。这样,每个像素一次会读取:32bit×8(纹理样本数量)×2(纹理层数量)=512bit,即64个字节的纹理数据。而又因为所有的GPU都会采用某种形式的高速纹理缓存,倘若高速缓存可以将必须从外部显示内存读取的纹理数据量平均减少一半(具体的情况相当复杂而且是随时变化的,不过这个假设基本上还是合理的),那么我们可以认为在双纹理和采用三线性过滤的情况下,每个像素进行渲染的时候都会从显示内存中读取平均(64字节/2)=32个字节的数据。

所以在1024×768×32的显示模式下,进行像素渲染时每一帧需要的数据传输量 = 水平分辨率×垂直分辨率×(基本渲染数据读写+纹理数据读取)=1024×768×(16+32)=38MB。如果帧刷新速度为60帧/秒,则显存带宽需求为38MB×60=2.3 GB/s。而这仅仅是像素渲染所需的带宽,要是使用更高的分辨率、更高的刷新率和打开全屏抗锯齿、各异性向过滤时,带宽的消耗将更惊人!

由此可见,只有足够大的显存带宽才能带来更精细(高分辨率)、色彩更逼真(32位真彩)、和更流畅(高刷新速度)的3D画面!

显存带宽跟显示卡的显存速度和显存架构有关,其计算公式为:显存带宽=显存工作频率×显存位宽/ 8,因此,在工作频率一定的情况下,显存位宽的大小决定了显存带宽的大小。显存位宽(bit)即一个时钟周期传送数据的位数,位数越大,传输效率越高。

比如GeForce FX 5200,官方默认的显存工作频率为400MHz,而显存位宽则有128bit和64bit两种规格,所以显存位宽为128bit的GeForce FX 5200的显存带宽=400×128/8=6.4GB/s,而显存位宽为64bit的GeForce FX 5200的显存带宽=400×64/8=3.2GB/s。也就是说从理论上来讲,显存位宽为64bit的GeForce FX 5200的显卡性能只是显存位宽为128bit的GeForce FX 5200的一半!但由于FX 5200只是属于低端核心,在“价钱第一”的低端市场里只要使用64bit的显卡价钱足够便宜,其跟128bit的性能差距也就显得没有那么重要了。而无独有偶,目前的显卡市场还存在着一款使用中高端核心,却只有64bit显存带宽的显卡——Radeon 9600 SE。它使用了和目前ATI的中高端主力Radeon 9600系列相同的RV350核心,与Radeon 9600标准版最大的区别就在显存位宽上,而频率则同为325/400MHz,所以显存带宽分别为3.2GB/s和6.4GB/s。那么它对128bit的低端芯片显卡的优势在哪?劣势在哪?

我们还是让实际测试来告诉大家答案吧。

[实测显存带宽对效能的影响]

现在我们就分别拿一块64bit的FX 5200和一块128bit的FX 5200进行对比,以及用Radeon 9600 SE、Radeon 9200和Radeon 9600标准版来进行对比。

其中64bit和128bit的FX5200对比以及Radeon 9600 SE和Radeon 9600标准版的对比是看看显存位宽缩水后带来的性能差异。Radeon 9600 SE和Radeon 9200的对比是看看使用中高端核心却只有64bit显存带宽的显卡,跟使用低端芯片的128bit显卡相比又有何优势和劣势。

128bit显存的FX 5200和9600标准版,都分别大幅领先于显存位宽缩水的64bit显存FX 5200和9600SE。而虽然核心架构先进,但Radeon 9600 SE的DirectX 8性能仍然远低于Radeon 9200标准版,这更显得显存位宽的重要性。

3DMark03中128bit显存带宽的FX 5200和9600标准版优势依然十分大,都高出35%以上。而9600SE终于凭借支持DirectX 9的先进架构,在3DMark03测试中超出9200标准版。

AquaMark 3上的结果基本跟3DMark03的测试一样,不过128bit的FX5200优势没那么明显了,领先64bit的FX5200不到12%,9600SE在这里仍然领先不支持DirectX 9的9200标准版。

在这两款游戏的测试结果验证了在前面的基准测试软件上得到的结果:128bit显存位宽的显卡保持对同一核心64bit显存位宽的显卡25%以上的优势,并随着分辨率的提高,优势愈加明显;9600SE在DirectX 8上的游戏性能还不如9200标准版,但其DirectX 9的性能也是9200标准版无法比拟的。

而且相对于9200,9600SE因为核心的优势还有更好的游戏兼容性,在我们测试的Farcry中,9200就有贴图错误,而9600则一切正常,请看下图:

9200的farcry截图,我们可以看到近处的岩石和远山都出现了贴图错误。

[总结]

1.显存容量——并非越多越好!

显存容量是否真的像银行账户上的金额一样——越多越好呢?从理论上讲显存容量当然是越多越好,但是我们应该知道容量越大的显存也会让我们银行账户上的金额减少得更多!所以我们就应该在性能与价钱之间找到一个平衡点,我们只需要够用就好。

从前面的测试我们已经可以看到128MB的显存容量性能才是最佳的,但其比64MB显存的显卡也只高了3%左右,而256MB显存的显卡性能也都落后于128MB显存的显卡,除非使用在更高的分辨率下,以及打开全屏抗锯齿和各向异性过滤时,256MB的显卡才基本跟128MB的显卡性能持平。

其实这是跟我们测试使用的只是属于中低端的FX 5600XT有关,FX 5600XT的核心处理能力有限,即使增加内存容量也不能使性能大幅度增加,相反,更多的显存会使读写所需的时间延长,处理效率降低,性能因此而下降。但是要是换成中高端的显卡时,随着核心架构的提高,显存容量的重要性也就会有了“英雄用武之地”。

所以,如果你只是做一些2D绘图、浏览互联网和娱乐的视频播放时,如果现在还能买到的话:),32MB的显存容量就够你使用了;

如果你只是做做普通的三维设计,打打一些不是十分BT的3D游戏,64MB的显卡也会让你用起来绰绰有余!当然,128MB的显存会给你带来更好的性能。

但是对于那些想玩玩一些马上即将很快……就会成为主流的,动不动就需要几十MB材质和纹理应用的游戏,而且还喜欢在高分辨率下开启抗锯齿和各向异性过滤的发烧级朋友,128MB甚至更高的256MB、512MB显存,对于你们来说都不算多。

2.显存带宽——对性能的影响更大

显存带宽的重要性即是显存位宽的重要性。从前面的测试可以看到128bit显存的显卡性能并没有达到64bit显存的显卡的两倍,这是为什么呢?其实这里还要牵扯到另外一个位宽——系统总线位宽(Bus Width)的因素,因为无论显卡的显存位宽为多少bit,其系统总线位宽也只为32bit,也就是说无论显卡的内部是以何种速度在运行,它实际上都是连接在一条32bit的主干道上。因此128bit显存位宽的显卡性能也就没有像理论上那样达到64bit显存位宽显卡的两倍,但是基本上依然有30%以上的性能差距。

所以在价钱允许的情况下,显存位宽当然是越高越好,选择一块高显存位宽的显卡也就成了必然的事了。

而对于只有64bit的显存位宽却拥有先进的核心架构的9600SE,其在最新的DirectX 9游戏中的表现很是抢眼,比起那些核心不支持DirectX 9架构的低端卡,还是很有优势的,而随着DirectX 9游戏的大量上市,9600SE在低端市场上将会有很大的竞争力。

转载请注明:在路上 » 显卡性能影响因素【详解】

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 这空间真不错..
    逆风尘16年前 (2009-07-29)回复
  2. 非常感谢你的文章,让我对显卡性能的各方面有了更好的理解!一般我不留言,这次我专门的注册空间留言了,希望你能努力的把更多的好文章放上来,感谢了!
    谢世傲17年前 (2008-03-26)回复
83 queries in 0.176 seconds, using 22.36MB memory