NVIDIA GeForce GTX 280测试报告(4)

时间:2008-12-17   来源:pcinLife   网友评论:0   人气: 974 作者:


 

GT200架构——Texture/Thread Processor Cluster

Tesla的所有可编程运算都是由SPA完成,SPA是streaming processor array的缩写,由若干个TPC组成,而在GT200的TPC中主要包含了一个几何控制器、一个SM控制器(SMC)、三个stream multiprocessors以及一个纹理处理模块组成。

而在每个SM中,包含了指令cache、线程发射器、常数cache、Streaming Processor(缩写SP)、Special Function Unit(缩写SFU)以及一个16KB大小可以让SM内各个SP共享的shared memory。

为了方便大家理解,我将其功能模块绘制成下图:

线程数/寄存器数量增加——存取延迟容忍能力显著增强

GeForce GTX 280支持超过32000条线程处于in-flight(运转)状态,线程调度都完全由硬件来执行,确保所有内核都能达到接近100%的利用率。

GPU是一个能在一定程度上做到容忍延迟的架构——当某些线程需要访问内存而导致较大的存储延迟时,GPU可以执行基于硬件的零代价上下文切换(context-switching)并马上切换至另一个线程的处理中。

位于SM内部的SIMT Multithreaded指令单元能以32个线程为一个warp的方式创建、管理、调度、执行线程。在GT200中,每个SM可以支持最高32个warp,而在此之前的G80、G8X、G9X的每个SM最高只能支持到24个warp。

不仅如此,GT200的每个SM对应的寄存器容量也从原来的8KB提升了一倍达到16KB,结合增加线程数,GT200在掩盖内存存取延迟的能力上较上一代产品有了显著的提高,NVIDIA表示在3DMark Vantage Extreme模式中,16KB寄存器比8KB快10%,要知道这是3DMark Vantage的总成绩而不是某个子项目测试结果的性能改善。

SP能力增强——立即可用的双发射与IEEE-754R双精度支持

NVIDIA在G80的时期其实具备了MAD+MUL指令双发射,不过这个特性在很长的一段时间里都没有被开启,而后的CUDA 1.0文档中其dual-issue特性似乎消失了。

在G84、G86发布的时候,我们发现其中的G86在采用正式驱动后,指令吞吐率超过了single-issue的能力,故此我们判断出G86当时已经开启了dual-issue。

NVIDIA在这次发布GT200的时候特别强调了dual-issue,我们使用配合GT200发布的驱动来搭配G80、G92进行了测试,发现它们的也都实现了双发射。

指令双发射对于一般的游戏其实帮助不是很大,主要是对一些CUDA程序会有一定的帮助。

与SP有关的另一项重要改进是引入了IEEE 754r双精度浮点运算支持。IEEE 754r是IEEE 754的修订版,刚刚这个月11日由IEEE RecCom进行了投票,IEEE RevCom推荐大家投赞成票,不过投票结果我还没找到。

和IEEE 754相比,其中一个新增的地方就是提供了MAD(或者说FMA)指令作了定义,明确了MAD指令的精度要求和异常处理。

引入双精度运算能力,可以在一定程度上增强GT200在科学计算领域的适用性,尽管在实际的相关领域中其实有部分甚至只需要16位精度就足够了。

GT200的每个SM能实现一个双精度MAD运算,所以每个周期GT200能达成1MAD*30SM=30MAD,在1.5GHz的shader频率下可以达到90 GFLOPS(MAD)的双精度浮点性能,NVIDIA对其称之为可以与8核Xeon处理器(我想应该是指45nm Hypertown内核Xeon E5440 2.83GHz)的水平。

不过需要注意的是,Xeon每个内核的浮点单元组合是每两个周期完成一个ADDPD或者一个周期完成一个MULPD,在双精度浮点峰值性能上"含金量"方面似乎要比GT200每个SM单周期MAD高一些。

NVIDIA的对手AMD在RV670上实现了硬件(非模拟)的FP64支持,双精度MAD性能为单精度MAD的1/5,

GT200架构的双精度浮点支持应该是NVIDIA迈向双精度浮点加速器的第一步,未来的架构很可能会把浮点双精度的性能做到单精度的1/2水平,这将是非常可观的。

纹理填充率的提升

随着TPC数量的增加,GT200的纹理吞吐率也有了一定程度的提升。

在G80中,NVIDIA为每个TPC搭配了8个单周期8-bit的texture fetch(纹理拾取器)和4个FP32纹理定址单元,可以每个周期实现32个4Dx16-bit纹理的双线性filtering。

从G84开始,NVIDIA给每个TPC增加4个FP32纹理定址单元,不过texture fetch单元数量没有变动,在4Dx16-bit纹理处理能力上没有变化,但是在4Dx8-bit的纹理处理能力,G84的单个TPC相对G80的TPC来说提升了一倍。

GT200的TPC在纹理处理能力和G84一样,都是搭配了8个单周期8-bit texture fetch和8个FP32纹理定址单元,可以每个周期实现40个4Dx16-bit纹理的双线性filtering、或者是80个4Dx8-bit纹理的双线性filtering。

NVIDIA表示,GT200采用了更高效的调度器,可以让芯片的实际处理能力更加接近于理论性能,在3DMark的多纹理填充速率测试中,在峰值效率上就比之前的GeForce 9系列高22%。

有趣的,NVIDIA在举例GT200多纹理填充率性能时,其理论指标被标示为51.84GTexel/s,这样推算出来的"这个"GT200频率应该是648MHz而不是GeForce GTX 280的602MHz。


 

文章评论