上文我们分析了GTX260+的主要提升就是流处理器数量和纹理单元的增加,另外还提到了部分读者可能产生的“不屑一顾”思想,毕竟ATI的“大手笔一挥”就是上百个流处理器单元的增加,而NVIDIA仅仅增加的24个流处理器能起作用吗?答案当然是肯定的。
我们从基本架构谈起,传统的GPU因为采用了分离式的架构,所以经常会出现数据分配问题,极大的影响了渲染效率。而DirectX 10中最大的改进便是引入了统一渲染架构(unified shader),所谓统一渲染架构,最容易的理解方式就是Shader着色单元不再分离。正是DX10统一架构的出现,sp单元也就是流处理器成为了一个规格的重要衡量指标,因为流处理器是显卡像素处理、顶点处理乃至几何单元处理的关键。不过因为设计架构的不同,sp单元也不能完全等同,因为它们的处理能力并不相同。
对于RV770核心的HD4870,当消费者听到800个流处理器的时候,确实感到了数量众多,而GTX260+仅有216个流处理器。从sp单元的内部角度说,GT200采用完全标量的设计,显卡内部会把向量代码自动转换成标量代码,达到100%的运作效率,除了GPU中的其它因素例如带宽、存取延迟会对构成一定的性能影响,sp单元本身不存在任何延迟性能的结构。
而基于RV770架构的HD4870的每个sp单元都包括5个算术运算单元和一个分支单元,如果采用特定安排的指令组合,最高可以实现每个周期发射、执行5条指令。理论上RV770每个sp单元在每个周期可以完成5条指令,因此ATI就用这样的计算方法来定义自己的流处理器数量,得出800个流处理器的结果。
『ATI对sp单元的解释是“5-Way”,5路流处理器单元』
但是根据功能的不同,RV770的sp单元的5个算术单元被划分为两种,即ALU和ALU.transcendental,两种单元都能执行 MULADD 等整数、浮点指令,不过两者都存在一些彼此不能执行的指令,例如CUBE、Dot4、MOVA指令不能在ALU.trans上执行,而SIN、COS、MULHI、MULLO、RECIP、SQRT等指令都只能在ALU.trans单元上执行。
因此在某些情况下,RV770的执行效率并不会达到理论的顶点,也就是说,因为架构设计的特点,RV770也许并不会在同一周期发挥出800个流处理器的所有效能,这与3D程序的编程方式有极大的关系。此外如果指令分支增多,这种效率还会继续降低,ATI当然考虑到了这个问题,所以在sp单元中包含分支运算单元,只不过我们无法判断这个分支单元能为sp处理器带来多大的效率提升。
总而言之,对于实际游戏来说,GTX260+架构的216个流处理器效率有基本的保证,而架构不同的RV770则不尽然,其实在运算中的效率问题各类架构优缺点并存。
如果说sp单元在架构上的区别,是GTX 260+性能非常强劲的基本理由,那么shader频率的异步则是GTX260+另一关键因素。DirectX9中引入了可编程shader的概念,在游戏的发展中人们逐渐发现,各个固定功能单元有些需要更快运行速度,例如像素处理单元,而有些运算单元的重要行则正在减弱,例如纹理映射单元及光栅处理单元。
『GTX260+的每个处理器阵列都包含高速的缓存』
Shader频率即我们平时所说的像素着色器与顶点处理器的运作频率,核心频率则是指纹理映射处理单元与Rop(Raster Operation partitions)光栅处理单元的运行频率,在G80之前,核心频率与Shader频率均以相同的频率运行。其实NVIDIA早在GeForce 7系列中就提出了频率异步的概念, 顶点处理器的速度比核心频率高出几十MHz,在一定程度上提高顶点处理单元的运算速度。
与CPU类似,Shader在运算时主要依赖于片载缓存(cache),片载缓存是一个典型的采用流处理器的单元,它可以迅速输入和读取数据从而完成下一步的渲染。GTX260+的每个流处理器阵列都拥有cache,Shader在运行时只需在这些片载缓存中输入或读取数据,不需要像纹理映射单元一样频率访问显卡内存,另外片载缓存所需的访问时间又非常的低,这就为Shader的高频运行提供了可能。
『shader频率的高速异步运行很大程度的提升了显卡的性能』
今天我们测试的影驰GTX260+核心频率625MHz,而shader频率则达到了1350MHz,比核心频率高两倍还多,这就为提升shader性能打下了良好的基础,我们会在后面的测试中详尽展示GTX260+的性能提升。不过GTX260+不仅有架构优势,练就一身GeForce内功的GTX260+还有很多功夫没有秀出来。