热点推荐
ZOL首页 > 显卡 > 评测 > 横向评测 >

Radeon HD 2900 XT的通用着色器深度解析

镭获新生 HD2900XT对GF8800深度测试

CNET中国·ZOL 作者:中关村在线 王胤韬 责任编辑:王胤韬 【原创】 2007年05月15日 06:00 评论
在本页阅读全文(共28页)

Radeon HD 2900 XT的通用着色器深度解析

  ● 以量取胜 R600含320个通用着色器单元

  正如上页表格中所示,Radeon HD 2900 XT使用的R600 GPU内置惊人数量的通用标量着色器,共计达320个!在数量上远远超过G80的128个。但由于这些着色器组织形式、调度及运行频率等规格在两款顶级GPU上存在很大差异,我们并不能仅从着色器个数来判断GPU整体性能优劣。


镭获新生 HD2900XT对GF8800深度测试
R600 体系架构图

  全规格R600的体系结构示意图如上,核心机构着色器设计上相对R580变化巨大,但在外围基本逻辑和内存控制器方面则是在R580的基础上小幅改进。按照指令程序走向的顺序,基本上可分为Setup引擎、流处理单元阵、纹理单元、后端渲染(ROP)4个模块。ATI特色的流控制单元、前期Z轴处理单元、后期Z/Stencil压缩单元均被予以保留。

镭获新生 HD2900XT对GF8800深度测试
G80 体系架构图

  R600和G80的核心架构设计思路差异明显,R600虽然也将流处理单元分组,但并没有给每个这样的小组配置纹理单元及缓存,而是在整个流处理器阵外设计了纹理单元+缓存模块。而对整体性能影响更大的是,R600的标量流处理器运行模式以及它们和线程管理机构、编译器的互动和G80都是完全不同的,下一小节笔者会详细阐述这个部分。

  ● 标量还是矢量?R600着色器谜团

  R600虽然宏观上是320个流处理单元的超标量体系,但在微观实现上,却差别于G80的彻底标量化结构,反而具有浓厚传统4D向量着色器特征。

  历史上的高性能GPU一直都使用向量着色器,因为在3D图形处理过程中产生的数据大多数都是向量,正如包括R-G-B-A的像素着色信息和X-Y-Z-W的顶点空间信息。对这样的数据进行操作的话,单指令流多数据流架构(SIMD :single instruction/multiple data)的4D向量着色器结构是最为快捷的解决方案。

镭获新生 HD2900XT对GF8800深度测试
R600流处理单元组的标量化实现

  然而这种看起来高速的体系存在灵活性不足和硬件利用率不高的问题,在海量的图形着色处理数据中,并不是每一个片断都是对4D向量结构中的所有数据均进行计算的,更为复杂多样性编程现实让数据流中出现了大量不足4D的操作,甚至是许许多多1D标量操作,死板的4D向量结构在最糟情况—处理1D标量数据时每周期硬件利用率只有25%,大量的硬件资源被浪费。之前出现过的一种改进是让向量模式GPU都支持双指令发射,如R580的定点着色器使用“4D+1D”模式,允许同时发射一个4段向量指令和一个标量指令。

  R600的流处理单元被每5个分成一组,事实上形成一种4D+1D模式的5D向量着色器,不过这种着色器和传统向量着色器不同的是,它能够理论上实现每周器发射最多5个标量指令,形成逻辑上的1D*5着色执行模式,当然它也可以进行2D+2D+1D这样的多标量+向量指令的混合发射。不过和G80每个流处理器都是完整的拥有自己执行资源的ALU不同的是,R600的每5个流处理单元才能行使完整的ALU功能,向外部申请执行资源。R600和G80的着色器整体运行模式还在线程调度、管理模式上存在巨大差异。

镭获新生 HD2900XT对GF8800深度测试
R600的流处理单元组  

  R600的流处理单元组单时钟周期最大5个标量MAD(乘加)指令,5个流处理单元当中有1个功能更强的流处理单元负责处理超越指令(SIN, COS, LOG, EXP, 等等),并且可以处理32-bit 浮点精度,支持整数和逐位操作等。分支执行单元负责进行流控制和条件运算。而空闲的流处理单元负责这项任务,这样完全除去流控制性能上的开销,通用目的寄存器存储输入数据、暂时数值和输出数据。

  ● R600着色器指令并行实现

  R600超标量执行性能优劣的体现,很大程度由调度多样化的1D~4D各类指令以塞满5D向量流处理单元组的中间机构决定,它负责提高R600的着色器并行处理能力。

镭获新生 HD2900XT对GF8800深度测试
R600超级线程分支处理逻辑

  从AMD官方给出的架构图来看,明示出的超级线程分支处理逻辑(Ultra-Threaded Dispatch Porcessor)本身是R580上这个部分的加强版本,它负责调度不同类型的着色器命令,仲裁并排序,然后把数据输入进320个流处理单元阵进行处理,而它并不能把着色器数据本身进行分解组合,也就是说在硬件上R600并不能把各种向量指令分解成若干1D标量指令,它现程分支处理逻辑只能进行保持数据原结构基础上的调度。这和G80的GigaThread逻辑完全把向量指令分解成1D标量指令在进行超大规模的标量化线程调度,直接输出给流处理器的运行模式完全不同。

  那么R600的320流处理单元阵超标量执行是如何实现的呢?AMD的解决方式是依靠硬件软件之间的中间件、编译器来完成向量、标量指令的组合。也就是说编译器负责在编译具体3D应用程序中的着色器代码时,将不同段数的向量指令、标量指令进行组合,统一封装成5D总段数的片段再输入给线程分支处理逻辑,实现指令的并行化处理,充分利用大量可自由培植的5D向量着色器,这一过程时间上是在超级线程分支处理逻辑之前阶段进行。  

  ● 并行性级别差异 殊途同归提高GPU计算能力

  这样一来事情就变得清晰了,R600的着色器设计思路是把大量晶体管用在堆积海量流处理单元上,而向量、标量指令的并行推动力则交由编译器实现,提高并行处理的方式是对原始指令进行组合,封装成流处理器组适应的形式。

  对应的G80则走的更彻底些,GigaThread硬件逻辑一视同仁的把任何指令拆成1D标量指令,在强大的硬件线程调度能力和高容量缓存资源的支撑下去管理128个1D标量着色器执行这些指令。考虑到片内缓存的高实现成本,G80在GigaThread上耗费了大量晶体管,标量着色器绝对数目处于劣势,转而使用着色器频率异步来提高计算能力。

镭获新生 HD2900XT对GF8800深度测试
R600 vs G80

  很难直接定义出R600和G80这两种不同设计思路在产品应用性能上的优劣,宏观上的判断可以简单归纳为R600的理论绝对着色器性能更高,对传统应用中的4D向量数据偏重环境表现会更好,但对编译器(体现在驱动上)的依赖程度高。G80则能够在所有应用中保持稳定的均一性能,更高的着色器资源利用率,但不更改硬件前提下的可提升空间有限。

上一页 1 2 3 4 5 ...28 下一页
本文导航
频道热词:华硕主板  Intel  AMD  
视觉焦点
显卡评测热点
排行 文章标题
TOP10周热门显卡排行榜
  • 热门
  • 新品