泡泡网显卡频道 PCPOP首页      /      显卡     /      评测    /    正文

HD7970脱胎换骨全测试!5年架构大革命

第二章/第十一节 DX11与并行计算的完美结合:GF100/110的野心

    随着Tesla在高性能计算领域日渐深入人心,NVIDIA也在与科研工作者们进行深入的沟通,倾听一线用户的需求,以便在下代GPU核心中做出相应的优化改进。当时用户最大的需求有两点:第一,科学家和超级计算只看重64bit双精度浮点运算能力,GT200性能太低,只有单精度的1/8;第二:企业级用户对稳定性要求更高,传统的显卡不支持显存ECC(错误检查和纠正),计算出错后效率较低。

    这就是下一代GPU的设计目标。而且,这次GF100不仅要满足并行计算的需求,还要兼顾DX11游戏性能,针对DX11新增的曲面细分、几何运算做出相应的改进,时间紧、任务重、压力大。

    过于追求完美往往结果就会不完美,NVIDIA在GPU架构设计部分做到了近乎完美,但是在芯片制造端掉了链子——由于GPU核心太大,台积电40nm工艺还不够成熟,导致GF100核心良率低下,没能达到设计预期,最终的产品不仅功耗发热很大,而且规格不完整。所以虽然当时GTX480显卡的评价不是很高,但GF100核心的架构极其优秀的。等到工艺成熟之后的GF110核心以及GTX580显卡,就毫无疑问的站在了游戏与计算的巅峰!

    GF100是“四核心”设计:4个光栅化引擎

GF100/110可以看作是四核心设计

    如果我们把Cayman看作是双核心的设计,那GF100就是四核心的设计,它拥有四个GPC(图形处理器集群)模块,每个GPC都有各自的光栅化引擎(Raster Engine),而在以往都是整颗GPU共享一个Raster Engine。

    GF100拥有16个多形体引擎

    GF100与GT200最大的不同其实就是PolyMorph Engine,译为多形体引擎。每个SM都拥有一个多形体引擎,GF100核心总共有多达16个。那么多形体引擎是干什么用的呢?为什么要设计如此之多?

    为什么要这么多的多形体引擎?

    之前的GPU架构一直都使用单一的前端控制模块来获取、汇集并对三角形实现光栅化。无论GPU有多少个流处理器,这种固定的流水线所实现的性能都是相同的。但应用程序的工作负荷却是不同的,所以这种流水线通常会导致瓶颈出现,流处理器资源未能得到充分利用。

    实现光栅化并行处理的同时还要保持API的顺序是非常困难的,这种难度阻碍了这一领域的重大创新。虽然单个前端控制单元的设计在过去的GPU中曾有过辉煌的历史,但是随着对几何复杂度的需求不断增长,它现在已经变成了一个主要障碍。

    Tessellation的使用从根本上改变了GPU图形负荷的平衡,该技术可以将特定帧中的三角形密度增加数十倍,给设置于光栅化单元等串行工作的资源带来了巨大压力。为了保持较高的Tessellation性能,有必要重新平衡图形流水线。

    为了便于实现较高的三角形速率,NVIDIA设计了一种叫做“PolyMorph”的可扩展几何引擎。每16个PolyMorph引擎均拥有自己专用的顶点拾取单元以及镶嵌器,从而极大地提升了几何性能。与之搭配的4个并行光栅化引擎,它们在每个时钟周期内可设置最多4个三角形。同时,它们还能够在三角形获取、Tessellation、以及光栅化等方面实现巨大性能突破。

图形与计算那些事 AMD次世代架构解析

这是Cayman的图形引擎,是双核心设计

    AMD的Cayman核心是不分光栅化引擎和多形体引擎的,都可以算作是双核心设计,GF100与Cayman相比,光栅化引擎是4:1,多形体引擎(包括曲面细分单元)是16:2,GF100的几何图形性能有多么强大已经可以想象。

    当NVIDIA的工程师通过计算机模拟测试得知几何引擎将会成为DX11新的瓶颈之后,毫不迟疑的选择了将单个控制模块打散,重新设计了多形体引擎和光栅化引擎,并分散至每组SM或每个GPC之中,从而大幅提升了几何性能,彻底消除了瓶颈。

    GF100流处理器部分的改进

    每一个CUDA核心都拥有一个完全流水线化的整数算术逻辑单元(ALU)以及浮点运算单元(FPU)。GF100采用了最新的IEEE754-2008浮点标准,2008标准的主要改进就是支持多种类型的舍入算法。新标准可以只在最终获取数据时进行四舍五入,而以往的标准是每进行一步运算都要四舍五入一次,最后会产生较大的误差。

    GF100能够为32bit单精度和64bit双精度运算提供FMA(Fused Multiply-Add,积和熔加)指令,而GT200只在64bit时才能提供。FMA不仅适用于高性能计算领域,事实上在渲染紧密重叠的三角形时,新的FMA算法能够最大限度的减少渲染误差。

    ATI所有的流处理器在执行整数型加、乘指令时仅支持24bit精度,而NVIDIA CUDA核心支持所有整数指令全32位精度,符合标准编程语言的基本要求。整数ALU还经过了优化,可有效支持64位以及更高精度的运算,这一点是对手无法比拟的。

    GF100拥有双Warp调度器可选出两个Warp,从每个Warp发出一条指令到16个核心、16个载入/存储单元或4个特殊功能单元。因为Warp是独立执行的,所以GF100的调度器无需检查指令流内部的依存关系。通过利用这种优秀的双指令执行(Dual-issue)模式,GF100能够实现接近峰值的硬件性能。

    GF100首次引入一级缓存与动态共享缓存

    GF100核心拥有很多种类的缓存,他们的用途不尽相同,其中一级缓存、共享缓存和纹理缓存位于SM内部,二级缓存则是独立的一块,与光栅单元及显存控制器相连。

    以往的GPU都是没有一级缓存的,只有一级纹理缓存,因为这些缓存无法在通用计算中用于存储计算数据,只能用于在纹理采样时暂存纹理。而在GF100当中,NVIDIA首次引入真正的一级高速缓存,而且还可被动态的划分为共享缓存。

    在GF100 GPU中,每个SM除了拥有专用的纹理缓存外,还拥有64KB容量的片上缓存,这部分缓存可配置为16KB的一级缓存+48KB共享缓存,或者是48KB一级缓存+16KB共享缓存。这种划分方式完全是动态执行的,一个时钟周期之后可自动根据任务需要即时切换而不需要程序主动干预。

    一级缓存与共享缓存是互补的,共享缓存能够为明确界定存取数据的算法提升存取速度,而一级缓存则能够为一些不规则的算法提升存储器存取速度。在这些不规则算法中,事先并不知道数据地址。

    对于图形渲染来说,重复或者固定的数据比较多,因此一般是划分48KB为共享缓存,当然剩下的16KB一级缓存也不是完全没用,它可以充当寄存器溢出的缓冲区,让寄存器能够实现不俗的性能提升。而在并行计算之中,一级缓存与共享缓存同样重要,它们可以让同一个线程块中的线程能够互相协作,从而促进了片上数据广泛的重复利用并减少了片外的通信量。共享存储器是使许多高性能CUDA应用程序成为可能的重要促成因素。

    GF100拥有一个768KB容量统一的二级高速缓存,该缓存可以为所有载入、存储以及纹理请求提供服务。二级缓存可在整个GPU中提供高效、高速的数据共享。物理效果、光线追踪以及稀疏数据结构等事先不知道数据地址的算法在硬件高速缓存上的运行优势尤为明显。后期处理过滤器需要多个SM才能读取相同的数据,该过滤器与存储器之间的距离更短,从而提升了带宽效率。

    统一的共享式缓存比单独的缓存效率更高。在独享式缓存设计中,即使同一个缓存被多个指令预订,它也无法使用其它缓存中未贴图的部分。高速缓存的利用率将远低于它的理论带宽。GF100的统一共享式二级高速缓存可在不同请求之间动态地平衡负载,从而充分地利用缓存。二级高速缓存取代了之前GPU中的二级纹理缓存、ROP缓存以及片上FIFO。

GF100的缓存架构让各流水线之间可以高效地通信,减少了显存读写操作

    统一的高速缓存还能够确保存储器按照程序的顺序执行存取指令。当读、写路径分离(例如一个只读纹理路径以及一个只写ROP路径)时,可能会出现先写后读的危险。一个统一的读/写路径能够确保程序的正确运行,同时也是让NVIDIA GPU能够支持通用C/C++程序的重要因素。

    与只读的GT200二级缓存相比,GF100的二级高速缓存既能读又能写,
而且是完全一致的。NVIDIA采用了一种优先算法来清除二级缓存中的数据,这种算法包含了各种检查,可帮助确保所需的数据能够驻留在高速缓存当中。

0人已赞
第1页:前言:AMD“南方群岛”耀世而出第2页:GPU核心概述:半导体制造工艺之瓶颈第3页:皇位之争:AMD和NVIDIA的“巅峰对决”第4页:Radeon是一款好显卡,但不是颗好GPU第5页:成也微软败也微软:XBOX360阻碍显卡/游戏发展第6页:从X1900XTX谈起:用3:1黄金架构做计算第7页:HD2900XT走向不归路:超长指令集的弊端第8页:HD4870的救赎:暴力扩充流处理器第9页:HD5870的辉煌:在错误的道路上越走越远第10页:HD6870的一小步:双超线程分配处理器第11页:HD6970昙花一现:北方群岛5D改4D返璞归真第12页:GPU的一大步:NVIDIA G80图形架构解析第13页:真正的并行计算架构:GT200只为计算优化第14页:DX11与并行计算的完美结合:GF100/110的野心第15页:HD7970华丽登场:曲面细分性能大幅提升第16页:GCN架构的精髓:流处理器完全重新设计第17页:GCN架构的缓存:和GF100异曲同工第18页:Tihiti其他方面的改进:AMD真是个激进派第19页:GCN架构的真正意义:GPU计算效能大增第20页:浴火重生,新的开始新的期待第21页:呼之欲出:南方群岛全系列发售前瞻第22页:南方群岛应用篇:DDM Audio 解析第23页:南方群岛应用篇:EYEFINITY“2.0”解析第24页:南方群岛应用篇:HD3D技术解析第25页:南方群岛应用篇:AMD APP 加速并行技术第26页:AMD再度领跑:DX11.1规范详解第27页:首测显卡曝光:蓝宝HD7970第28页:首测显卡曝光:迪兰HD7970第29页:首测显卡曝光:镭风HD7970第30页:首测显卡曝光:讯景HD7970第31页:首测显卡曝光:讯景非公版HD7970第32页:首测显卡曝光:双敏HD7970第33页:其他首发显卡曝光汇总展示第34页:六核3960X客串:HD7970鏖战众卡皇第35页:DX10基准测试:《3DMark Vantage》 第36页:DX10游戏性能测试:《孤岛危机》第37页:DX10.1游戏测试:《孤岛惊魂2》第38页:DX11基准测试:《3DMark11》第39页:DX11游戏性能测试:《尘埃3》第40页:DX11游戏性能测试:《战地3》第41页:DX11游戏性能测试:《AVP》第42页:DX11游戏性能测试:《地铁 2033》第43页:DX11游戏性能测试:《孤岛危机2》第44页:曲面细分专项测试:《石巨人》第45页:曲面细分专项测试:《Heaven 2.5》第46页:PhysX特效专项测试:《BatmanAC》第47页:通用计算:纹理压缩/光线追踪第48页:通用计算:流体模拟/蒙特卡罗算法第49页:附加测试:AES加解密/像素纹理填充第50页:附加测试:HD7970功耗最低3W第51页:成绩汇总:HD7970 PK GTX580第52页:成绩汇总:HD7970 PK HD6970第53页:成绩汇总:HD7970 PK HD6990第54页:成绩汇总:HD7970 CrossFire交火效率第55页:成绩汇总:HD7970 超频效能测试第56页:全文总结:架构、效能与应用的全面胜利

关注我们

泡泡网

手机扫码关注