余氯含量:一个双128显卡的128Mb和128位到底有什么区别

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 05:44:47
买显卡总是提到128M和128位双128,请问这两个128有什么本质的不同呢?

128M是显存的意思,跟内存差不多的意思,只是它是显存
128位也就是显存位宽: 128bit
那么,什么是显存带宽,这里就向大家介绍一下。显示卡的显存带宽表示图形处理器与显存间数据传输的速率,其单位是:字节/秒。显存带宽跟显示卡的显存速度和显存架构有关。

举例来说,小影霸G3400显卡,采用4颗6ns的2M X 32位的显存。6ns是指显存的一个读/写周期,也就相当于显存的工作频率是166MHz。由于是4颗32位显存,表示在一个读写周期内可以读/写128位数据。因此,这张显卡的带宽就等于166MHz(工作频率)X 128bit(显存位数)=21248MBit/秒,换算成字节(1字节=8位)是2.7G字节/秒。

而现在市场上有些商家为节约成本推出了64位的“窄带”显卡,同样是使用6ns的显存,但由于显存位数是64位,显卡的显存带宽只有166MHz X 64位=10624M位/秒,换成字节(1字节=8位)只有1.3G字节/秒。可见同样是用6ns的显存,显存带宽有惊人的差异!

我们看看显存带宽到底有什么重要性?

大家知道,显示卡在进行像素渲染时,都需要从显存的不同缓冲区中读写数据。这些缓冲区中有的放置描述像素ARGB(阿尔法通道,红,绿,蓝)元素的颜色数据,有的放置像素Z值(用来描述像素的深度或者说可见性的数据)。

基本的渲染过程是:计算一个像素的的颜色值,从颜色和Z缓冲区中对应该像素的存储位置读取颜色值和Z值,然后计算出这个像素新的颜色值和Z值,计算中可能还需要与像素原来的颜色进行混合或者合成处理(这个计算还和Z值以及Alpha值有关)。

一旦新的像素颜色和Z值计算完成后,新的数据就需要写回到内存中。对于32位颜色以及32位Z/模板缓冲区的情况下,每个像素进行这些处理都会在内存总线上传输相当大数量的数据。如果进行基本的渲染操作,每个像素被渲染一次的话,就需要传送16个字节,计算公式如下:读取32-bit color+读取32-bit Z=8bytes,写入32-bit color+写入 32-bit Z=8bytes,或者总共16bytes。

材质贴图和深度复杂性会使每个像素渲染所需要的带宽加倍。当前大部分游戏都使用了多重贴图(在每个像素上应用两层或者更多的纹理)以及双线性或者三线性过滤来达到丰富的图象细节和逼真度。纹理数据也是从同时放有像素颜色和Z缓冲区的内存中读取。

为了了解纹理读取所需带宽的近似值,我们可以假设每个像素应用了两层纹理,同时还采用了三线性过滤。每个像素的每个纹理在三线性过滤时会使用8个纹理样本,每个样本都是32位(4字节)。显然,这意味着每个纹理一次会读取32个字节或者在假定每个像素有两个纹理的情况下每个像素一次会读取64个字节纹理数据。

因为所有的GPU都会采用某种形式的高速纹理缓存,倘若高速缓存可以将必须从外部显示内存读取的纹理数据量平均减少一半(具体的情况相当复杂而且是随时变化的,不过这个假设基本上还是合理的),那么我们可以认为在双纹理和采用三线性过滤的情况下,每个像素进行渲染的时候都会从显示内存中读取平均32个字节的数据。

这样,最终我们可以计算出在1024 X 768 X 32dpp显示模式下每一帧需要的数据传输量:水平分辨率X垂直分辨率X(基本渲染数据读写+纹理数据读取)=1024pixel/line X 768lines/frame X (16bytes/pixel+32bytes/pixel)=38MB/帧。

如果帧刷新速度为60帧/秒(速度越快,画面越流畅),则内存带宽需求为38MB X 60=2.3GB/秒,请注意,这仅仅是像素渲染所需的带宽,这还不包括更高的分辨率、更高的刷新率和使用全屏反锯齿设置等的带宽消耗。

由此可见,内存带宽是决定图形性能和速度最重要的一个因素之一。要得到精细(高分辨率)、色彩逼真(32位真彩)、和流畅(高刷新速度)的3D画面,显卡制造商应当尽可能提高显存带宽,来解决显卡性能瓶颈。

128位是指显存带宽为128bit,128M是指其大小为128MB。

那么,什么是显存带宽,这里就向大家介绍一下。显示卡的显存带宽表示图形处理器与显存间数据传输的速率,其单位是:字节/秒。显存带宽跟显示卡的显存速度和显存架构有关。

举例来说,小影霸G3400显卡,采用4颗6ns的2M X 32位的显存。6ns是指显存的一个读/写周期,也就相当于显存的工作频率是166MHz。由于是4颗32位显存,表示在一个读写周期内可以读/写128位数据。因此,这张显卡的带宽就等于166MHz(工作频率)X 128bit(显存位数)=21248MBit/秒,换算成字节(1字节=8位)是2.7G字节/秒。

而现在市场上有些商家为节约成本推出了64位的“窄带”显卡,同样是使用6ns的显存,但由于显存位数是64位,显卡的显存带宽只有166MHz X 64位=10624M位/秒,换成字节(1字节=8位)只有1.3G字节/秒。可见同样是用6ns的显存,显存带宽有惊人的差异!

我们看看显存带宽到底有什么重要性?

大家知道,显示卡在进行像素渲染时,都需要从显存的不同缓冲区中读写数据。这些缓冲区中有的放置描述像素ARGB(阿尔法通道,红,绿,蓝)元素的颜色数据,有的放置像素Z值(用来描述像素的深度或者说可见性的数据)。

基本的渲染过程是:计算一个像素的的颜色值,从颜色和Z缓冲区中对应该像素的存储位置读取颜色值和Z值,然后计算出这个像素新的颜色值和Z值,计算中可能还需要与像素原来的颜色进行混合或者合成处理(这个计算还和Z值以及Alpha值有关)。

一旦新的像素颜色和Z值计算完成后,新的数据就需要写回到内存中。对于32位颜色以及32位Z/模板缓冲区的情况下,每个像素进行这些处理都会在内存总线上传输相当大数量的数据。如果进行基本的渲染操作,每个像素被渲染一次的话,就需要传送16个字节,计算公式如下:读取32-bit color+读取32-bit Z=8bytes,写入32-bit color+写入 32-bit Z=8bytes,或者总共16bytes。

材质贴图和深度复杂性会使每个像素渲染所需要的带宽加倍。当前大部分游戏都使用了多重贴图(在每个像素上应用两层或者更多的纹理)以及双线性或者三线性过滤来达到丰富的图象细节和逼真度。纹理数据也是从同时放有像素颜色和Z缓冲区的内存中读取。

为了了解纹理读取所需带宽的近似值,我们可以假设每个像素应用了两层纹理,同时还采用了三线性过滤。每个像素的每个纹理在三线性过滤时会使用8个纹理样本,每个样本都是32位(4字节)。显然,这意味着每个纹理一次会读取32个字节或者在假定每个像素有两个纹理的情况下每个像素一次会读取64个字节纹理数据。

因为所有的GPU都会采用某种形式的高速纹理缓存,倘若高速缓存可以将必须从外部显示内存读取的纹理数据量平均减少一半(具体的情况相当复杂而且是随时变化的,不过这个假设基本上还是合理的),那么我们可以认为在双纹理和采用三线性过滤的情况下,每个像素进行渲染的时候都会从显示内存中读取平均32个字节的数据。

这样,最终我们可以计算出在1024 X 768 X 32dpp显示模式下每一帧需要的数据传输量:水平分辨率X垂直分辨率X(基本渲染数据读写+纹理数据读取)=1024pixel/line X 768lines/frame X (16bytes/pixel+32bytes/pixel)=38MB/帧。

如果帧刷新速度为60帧/秒(速度越快,画面越流畅),则内存带宽需求为38MB X 60=2.3GB/秒,请注意,这仅仅是像素渲染所需的带宽,这还不包括更高的分辨率、更高的刷新率和使用全屏反锯齿设置等的带宽消耗。

由此可见,内存带宽是决定图形性能和速度最重要的一个因素之一。要得到精细(高分辨率)、色彩逼真(32位真彩)、和流畅(高刷新速度)的3D画面,显卡制造商应当尽可能提高显存带宽,来解决显卡性能瓶颈。

看来,购买显卡,不仅仅是要看“多少位”,显存带宽不够,位数再高也不会发挥出显卡的性能来,更谈不上实用了。大家在选购之时,千万要注意显存带宽的问题,要在保证高性能的基础之上追求实用,这才是最重要的。