五千年(敝帚自珍)

主题:【知识】显存容量与位宽的故事 -- 我心飞翔

分页树展主题 · 全看首页 上页
/ 1
下页 末页
  • 家园 【知识】显存容量与位宽的故事

    [决定显卡性能的因素]

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

    点看全图

    外链图片需谨慎,可能会被源头改

    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已经是显卡的第一标志,厂商也无法在上面动什么手脚。但对于显存的位宽及容量,这些隐性的指标,就成了左右显卡性能在实际使用中的关键因素了!

    [显存容量的意义]

    显存担负着系统与显卡之间数据交换以及显示芯片运算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这么多可供选择的显存容量,我们究竟需要买多大的显存容量呢?

    [显存带宽的意义]

    显存带宽是指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的低端芯片显卡的优势在哪?劣势在哪?

    [总结]

    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在低端市场上将会有很大的竞争力。

分页树展主题 · 全看首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河