论文部分内容阅读
探寻显卡内部的秘密
当你看到炫目的游戏画面时有没有想过这些画面都是如何渲染出来的呢?时常挂在嘴边的显示核心流处理器、显存在其中又起到了什么作用呢?或许你只是偏爱游戏本身而对上边这些问题并不关心,不过读完本文,或许你会对游戏以及显卡都会产生全新的认识和浓厚的兴趣。下面就让我们一起来探寻显卡内部的秘密。
属于显卡的油画
游戏画面由一帧一帧静态画面组成。可以把每帧画面比作一幅油画。显卡在完成这幅画时,需要先勾边,描绘出物体外形、尺寸等,接着再为这幅画注入色彩,加入明暗、高光等细节。比如一个立方体木块,显卡要根据指令将决定它大小的八个顶点位置确定下来,给出它的形状轮廓。接着显卡需要让这个立方体看上去像是一个木块,根据木块的表面形状来进行纹理贴图。贴完图后,这个木块已基本成型,但它的表面却没有光泽,周围也没有任何阴影,非常生硬。显卡会根据指令,确定光源的位置,然后根据光线数据,计算出木块高光部位、影子等,使它更真实生动、更有立体感。当然实际的游戏画面并不仅是一块木头,茂密的森林、澎湃的海浪以及战争场面中的大量士兵、坦克,一切一切都需要非常复杂的绘制过程。
游戏的渲染指令首先送到显示核心,然后再做任务分配。定义顶点、勾勒轮廓和渲染细节这两个过程以前是分别由显示核心的顶点单元(Vertex Shader)和像素渲染管线(Pixel Shader)完成的,但进入到DirectX 10统一渲染架构时代,为了提高画面渲染效率,顶点单元和渲染管线合为一体,变成了今天的流处理器(StreamProcessor),让顶点架构和细节渲染同时完成。而当完成画面渲染后,显卡还需要通过ROP Domain(光栅操作单元)将显卡渲染出的3D图像转化为显示器所需的数据并由输出接口输出。
那么显存又起到什么作用呢?实际上显示核心得到的顶点、阴影以及画面变化趋势等指令最初都是从硬盘里的游戏目录里被调入内存再调入显存的。显存和内存一样都是指令的临时寄存器,但显存的带宽优势使它更加高效。
流处理器数量更为重要
统一渲染架构时代,流处理器数量是决定显示核心性能的关键。现在的显卡大都拥有数量众多的流处理器,而对游戏画面的渲染任务则被有序分为多个部分,由不同的流处理器共同完成。因此,流处理器数量越多,渲染任务分配就越细,渲染同样画面所需时间就越少,效率自然越高。虽然流处理器频率也影响着渲染效率,但显然它的定位并没有流处理器数量那么高。比如,NVIDIA GeForce 9800GTX和AMDRadeon HD4850两款定位相似,在抛开流处理器结构和单个流处理器的效能不谈的情况下,虽然9800GTX流处理器频率是HD4850的数倍,但HD4850还是凭借800个流处理器的数量优势获得了性能上的领先。所以消费者购买显卡时应该以显示核心流处理器数量作为考虑的出发点,当然频率越快越好。
显存容量同样不容忽视
显存带宽计算公式是:显存频率×位宽/8。例如Radeon HD4850的显存频率为2200MHz,位宽为256bit,那么它的显存带宽就是2200x256/8=70.4GB/s。显存的频率和显存的位宽决定了显存在单位时间内能够传输的数据量,因此显存的频率和位宽对显卡性能的影响是非常大的。那么显存容量大小又有何意义呢?游戏的顶点架构、阴影模式、光照强度等指令数据都是先从硬盘里调入内存,然后再调入显存的,由于显存带宽要比内存带宽高很多,因此显示核心调用显存里的数据,肯定会比调用内存快得多。如果显示核心在显存里找不到所需数据才会访问效率更低的内存。大容量显存的意义在于使显卡在游戏渲染过程中尽量少去访问效率更低的数据寄存器,以保证高效渲染。现在的大型3D游戏的渲染愈发复杂,也就需要更加庞大的渲染指令数据。所以显存频率和位宽固然重要,但显存容量同样不容忽视。
不过这也要视显卡规格而定,类似GeForce 9500GT这样的低端显卡,核心处理速度并不快,显存中装再多的数据也是浪费,配备512MB或者1GB的大显存没有意义。而类似RadeonHD4850或者是更高端的Radeon HD4870、GeForce GTX260,1GB甚至更多的显存都是有必要的,因为用户不可能用这么好的显卡在1024×768低画质条件下玩游戏,更高的分辨率、更多的游戏特效都需要得到大容量显存的支持。
当你看到炫目的游戏画面时有没有想过这些画面都是如何渲染出来的呢?时常挂在嘴边的显示核心流处理器、显存在其中又起到了什么作用呢?或许你只是偏爱游戏本身而对上边这些问题并不关心,不过读完本文,或许你会对游戏以及显卡都会产生全新的认识和浓厚的兴趣。下面就让我们一起来探寻显卡内部的秘密。
属于显卡的油画
游戏画面由一帧一帧静态画面组成。可以把每帧画面比作一幅油画。显卡在完成这幅画时,需要先勾边,描绘出物体外形、尺寸等,接着再为这幅画注入色彩,加入明暗、高光等细节。比如一个立方体木块,显卡要根据指令将决定它大小的八个顶点位置确定下来,给出它的形状轮廓。接着显卡需要让这个立方体看上去像是一个木块,根据木块的表面形状来进行纹理贴图。贴完图后,这个木块已基本成型,但它的表面却没有光泽,周围也没有任何阴影,非常生硬。显卡会根据指令,确定光源的位置,然后根据光线数据,计算出木块高光部位、影子等,使它更真实生动、更有立体感。当然实际的游戏画面并不仅是一块木头,茂密的森林、澎湃的海浪以及战争场面中的大量士兵、坦克,一切一切都需要非常复杂的绘制过程。
游戏的渲染指令首先送到显示核心,然后再做任务分配。定义顶点、勾勒轮廓和渲染细节这两个过程以前是分别由显示核心的顶点单元(Vertex Shader)和像素渲染管线(Pixel Shader)完成的,但进入到DirectX 10统一渲染架构时代,为了提高画面渲染效率,顶点单元和渲染管线合为一体,变成了今天的流处理器(StreamProcessor),让顶点架构和细节渲染同时完成。而当完成画面渲染后,显卡还需要通过ROP Domain(光栅操作单元)将显卡渲染出的3D图像转化为显示器所需的数据并由输出接口输出。
那么显存又起到什么作用呢?实际上显示核心得到的顶点、阴影以及画面变化趋势等指令最初都是从硬盘里的游戏目录里被调入内存再调入显存的。显存和内存一样都是指令的临时寄存器,但显存的带宽优势使它更加高效。
流处理器数量更为重要
统一渲染架构时代,流处理器数量是决定显示核心性能的关键。现在的显卡大都拥有数量众多的流处理器,而对游戏画面的渲染任务则被有序分为多个部分,由不同的流处理器共同完成。因此,流处理器数量越多,渲染任务分配就越细,渲染同样画面所需时间就越少,效率自然越高。虽然流处理器频率也影响着渲染效率,但显然它的定位并没有流处理器数量那么高。比如,NVIDIA GeForce 9800GTX和AMDRadeon HD4850两款定位相似,在抛开流处理器结构和单个流处理器的效能不谈的情况下,虽然9800GTX流处理器频率是HD4850的数倍,但HD4850还是凭借800个流处理器的数量优势获得了性能上的领先。所以消费者购买显卡时应该以显示核心流处理器数量作为考虑的出发点,当然频率越快越好。
显存容量同样不容忽视
显存带宽计算公式是:显存频率×位宽/8。例如Radeon HD4850的显存频率为2200MHz,位宽为256bit,那么它的显存带宽就是2200x256/8=70.4GB/s。显存的频率和显存的位宽决定了显存在单位时间内能够传输的数据量,因此显存的频率和位宽对显卡性能的影响是非常大的。那么显存容量大小又有何意义呢?游戏的顶点架构、阴影模式、光照强度等指令数据都是先从硬盘里调入内存,然后再调入显存的,由于显存带宽要比内存带宽高很多,因此显示核心调用显存里的数据,肯定会比调用内存快得多。如果显示核心在显存里找不到所需数据才会访问效率更低的内存。大容量显存的意义在于使显卡在游戏渲染过程中尽量少去访问效率更低的数据寄存器,以保证高效渲染。现在的大型3D游戏的渲染愈发复杂,也就需要更加庞大的渲染指令数据。所以显存频率和位宽固然重要,但显存容量同样不容忽视。
不过这也要视显卡规格而定,类似GeForce 9500GT这样的低端显卡,核心处理速度并不快,显存中装再多的数据也是浪费,配备512MB或者1GB的大显存没有意义。而类似RadeonHD4850或者是更高端的Radeon HD4870、GeForce GTX260,1GB甚至更多的显存都是有必要的,因为用户不可能用这么好的显卡在1024×768低画质条件下玩游戏,更高的分辨率、更多的游戏特效都需要得到大容量显存的支持。