E X P

  • 编辑
  • 评论
  • 标题
  • 链接
  • 查错
  • 图文
  • 拼 命 加 载 中 ...

     

      “我相信历史会将Fermi作为一个里程碑载入史册。”
                    ——Dave Patterson 并行计算研究实验室总监

     


    Enrico Fermi,著名核物理学家

      Fermi,NVIDIA新一代显卡架构代号,在这半年来亮相的频率非常之高。“Fermi”一词来自于著名意大利核物理学家Enrico Fermi,1938年诺贝尔物理奖得主,核反应堆技术的发明者。

      在去年AMD发布DirectX 11显卡Radeon HD 5000系列之后,NVIDIA面临着非常大的压力,一方面产品青黄不接,一方面Fermi架构显卡迟迟不能推出。好在NVIDIA有着出色的市场宣传与公关能力,消费者与品牌商们在对Fermi的无限期待中一天一天度过。


    2009年9月GTC大会上首次展示Fermi架构Tesla样卡

      去年9月底的NVIDIA GTC大会上,也就是对手发布DirectX 11显卡的一周后,NVIDIA CEO黄仁勋先生展示了Fermi架构的Tesla显卡,这也是Fermi架构显卡首度公开亮相。虽然后来因为展示的是实物还是样卡引得一片轩然,但此举无疑极大鼓舞了NVIDIA产品士气,并引起全世界对Fermi的高度关注,Fermi也从此开始频频步入我们视野。

      在随后的CES(2010年1月)和CeBIT(2010年3月初)大会上,NVIDIA都高调展示了Fermi架构的桌面图形卡,Fermi虽然姗姗来迟,但离我们也越来越近了。

      终于在今天,2010年的3月27日,NVIDIA正式发布了它的全新桌面显卡——Fermi架构GeForce GTX 480/470显卡。

      NVIDIA的Fermi会在视觉计算领域引发一场“核裂变”革命吗?


    Fermi:新一代CUDA计算与图形架构

      在未来的游戏世界里,当显卡的渲染速度足够快后,真正能带给玩家视觉震撼的是流光溢彩的表面效果和栩栩如生的物体动作,比如现在的光线追踪和物理加速技术就是在朝着这个方向努力,然而这需要显卡具备极强的计算能力(GPU Computing),不止是图形渲染能力。

      G80架构是NVIDIA公司最初的通用计算GPU架构,即可以做图形渲染,也可以用来做并行计算,后来的GT200架构扩展了G80架构的特点和功能,性能得到进一步提升。新一代的Fermi架构则是继G80架构后的又一重要GPU架构,它站在G80和GT200的肩上,几乎是重新设计了并更注重通用计算的架构。

      Fermi继承了上代的特色,同样也是双架构设计,即CUDA计算架构和图形架构,两种架构可灵活切换,比如在游戏中需要进行物理计算时使用CUDA计算架构,需要进行渲染时使用图形架构。

    Fermi   CUDA计算架构

    Fermi图形渲染架构

      NVIDIA给Fermi的定义是:新一代CUDA计算与图形架构。它采纳了用户在使用G80和GT200架构时给出的建议,针对双精度运算、ECC内存容错能力、Cache体系结构、上下文切换和原子读写操作等方面进行了全新的设计,通过新的架构设计不仅仅增加了计算能力,并且支持更好的可编程能力和计算效果。

      Fermi架构的主要更新如下:

       ◎ 第三代Streaming Multiprocessor(SM)
         •  每个SM包含32个CUDA Core,是GT200的4倍
         •  8倍于GT200的双精度浮点性能
         •  Dual Warp调度策略,一个周期内启动两个warp进行计算
         •  每个SM有64KB的RAM,可灵活配置Shared Memory和L1缓存

       ◎ 第二代PTX ISA架构(PTX 2.0)
         •  统一寻址空间,完整的支持C++特性
         •  针对OpenCL和DirectCompute进行优化设计
         •  完整支持IEEE 754-2008 32bit/64bit精度
         •  通过Predication(断言)来提高条件性能

       ◎ 改进的内存操作子系统
         •  可配置的L1和统一的L2并行数据高速缓存
         •  首个提供ECC内存支持的GPU
         •  原子内存操作性能极大增强

       ◎ 第三代千兆线程引擎(GigaThread 3.0)
         •  10倍于上一代的上下文切换能力
         •  并发Kernel(核心程序)执行机制

      GF100是首款采用Fermi架构的GPU,旗下的产品包括GeForce GTX 480和GTX 470,它们能够实现所有的DirectX 11硬件特性,包括Tessellation和DirectCompute等,除了上面提到的领先的并行计算能力外,在游戏图形性能方面也很大改善:

       ◎ 卓越的游戏性能
       ◎ 超一流的图像质量
       ◎ 电影级的几何真实效果
       ◎ 革命性的游戏计算架构

      Fermi是相当复杂和庞大的,其晶体管数达到30亿个,规模空前,这也是它迟迟不能推出的主要原因,它实在是太复杂了!



    第一章 Fermi CUDA计算架构解读

      CUDA计算架构上的改进是Fermi最重要的部分之一,经过G80和GT200两代的发展,Fermi的很多功能单元都升级到了第三代。

    §1.1 第三代Streaming Multiprocessor流处理器

      第三代Streaming Multiprocessor(SM,流处理器群)架构不只是增强了SM的计算能力,同时使得其可编程性和效率得到提高。

          Fermi架构第三代流处理器群示意图

      • 512个CUDA Core

      从Fermi开始,NVIDIA正式使用CUDA Core的概念,实际上它就是之前的Stream Processor(SP,流处理器),为了统一,全文将通称CUDA Core。

      Fermi的SM已经是第三代了,前两代架构的单个SM中只包含有8个CUDA Core,而Fermi的SM中包含有32个CUDA Core,完整规格的Fermi具备16个SM,构成512个CUDA Core,每个CUDA Core都具备完整的整数逻辑单元(ALU)和浮点数单元(FPU)。  

      在GT200,整数逻辑单元(ALU)仅限于24bit的乘法操作,Fermi的ALU几乎采用全新的设计,对所有指令支持全32bit精度,这就符合标准的编程语言要求。通过优化,新的ALU还可以支持64bit精度和扩展的指令运算,包括支持移位、布尔值、比较、转化以及更多的指令操作。

      G80和GT200架构都是用IEEE 754-1985的单精度浮点标准,Fermi开始采用IEEE 754-2008的单精度浮点标准,并支持FMA(fused multiply-add)功能,关于FMA,后文会图解详细说明。

      • 16个Load/Store单元

      每个SM包含16个内存Load/Store(LD/ST,存/取)单元,可以保证源和目标地址在一个周期内同时由16个线程来进行操作,支持缓存和DRAM的任何位置读取。

      • 4个SFU单元

      除了存取单元外,每个SM中还包含有4个SFU(Special Function Units,特殊功能单元),它的作用是处理超越函数,包括sin、cosine、求倒数、平方根等。每个SFU在一个时钟周期内每个thread可以执行一个指令操作,因此每组warp执行需要8个周期(每组warp有32个thread)。指令分发器可以按照当前SFU的运行情况来分发指令,当一个SFU被占用时,可以将指令分发到其他的SFU单元处理。




      • 双精度浮点性能大幅提升

      单精度实数占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。双精度的浮点计算在高性能计算中有着核心的重要位置,在求解线性代数中、数值计算量子化学等中都会需要双精度浮点运算。

    Fermi 架构提供了前所未有的双精度性能

      Fermi架构为支持双精度浮点运算进行了特别设计,FPU单元放到了CUDA Core中,每2个CUDA Core在一个周期内可以完成1个64bit的双精度浮点数FMA操作,也就是每个SM(32个CUDA Core)在一个时钟周期内可以完成16个双精度浮点数操作,单精度与双精度的执行性能达到2:1。

      相比之下,GT200架构下的每个SM(8个CUDA Core)只有1个双精度浮点运算单元,单双精度的执行性能为8:1,可见Fermi的双精度浮点性能有着显著提升,初步估算它的双精度浮点性能是GT200架构的4倍以上,这是一项非常重要的改进。

      • Dual Warp调度策略

      在SM内是执行程序时是以Warp为单位的,32个thread为一组Warp。

    每个SM内具有两个Warp调度器和指令发送器,允许两个Warp同时发射和执行

      Fermi的每一个SM都有两个Warp调度器和指令发送器,Dual warp调度机制可以同时并发调度两个warp的一条指令分别在16个一组的CUDA cores上进行计算,或者在16个LD/ST单元运行,或者4个SFU上运行。Fermi的调度器并不需要对指令流间的相依性进行检查,利用这样的调度机制,可以让硬件的计算能力达到极致。

      大多数的指令都能实现双发射,例如两条整数指令、两条浮点指令或者混合的整数、浮点、Load/Store和SFU处理指令的组合都可以被并发执行,单精度和双精度的指令一样可以并发执行。

      • 64KB可配置的Shared Memory/L1缓存

      在执行CUDA程序时,每个CUDA Core对应一个thread,每个SM则对应一个thread block(线程块),SM内的Shared Memory(共享内存)对可编程性和运行效率提供了强力支持,它可以让同在一个thread block的线程进行协作,能重复利用片上内存,减少对片外内存访问。共享内存在许多高性能CUDA应用程序中起到了重要作用。

    三代GPU间的一些规格比较

      G80和GT200的每个SM都只有16KB的共享内存,Fermi架构中,每个SM的片上内存达到64KB,重要的是这64KB可以被配置成48KB的共享内存和16KB的L1缓存,或者配置成为16KB的共享内存和48KB的L1缓存。

      对于已经使用共享内存的程序来说,可以提供3倍于上一代的共享内存支持,尤其是那些对带宽要求较高的程序获益更多。对一些已经使用了共享内存作为缓存的应用程序来说,可以转而直接使用系统硬件提供的缓存,同时还可以继续使用16KB的共享内存。最理想的是,一些原本就没有使用共享内存的程序,可以直接利用L1缓存,使得程序运行时间缩短,得到更高的性能。


    §1.2 第二代PTX ISA架构(PTX 2.0)

      PTX(Parallel Thread eXecution,并行线程执行)是NVIDIA用以支持并行线程处理器的低级虚拟机和ISA(Instruction-Set Architecture),当程序运行时PTX指令都会通过GPU驱动转变为机器指令,PTX的目的在于提供一个与机器无关的编程环境。

      Fermi是首款支持第二代PTX指令的GPU架构,相比于G80/GT200时代的PTX 1.x,PTX 2.0有了明显改进,因此NVIDIA这次比较高调地将它摆上台面。

      PTX 2.0有一些新的特性,使得GPU具备更强的可编程性、更精确和提供更高的性能。这些包括:完整支持IEEE 32bit的单精度浮点数;变量和指针支持统一的寻址空间;新的指令支持OpenCL和DirectCompute并为完全支持C/C++而做了特殊的设计。

      ·统一寻址空间实现完全C++支持

      在PTX 1.0中进行Load/store操作时需要从local、Shared以及global三处寻址空间中指定一个,由于C/C++语言中所有变量和函数都是通过指针才能确定对象,这样存在编译时分离的寻址空间无法确定指针的位置而导致无法支持C/C++语言。在PTX 2.0中把三个寻址空间统一为一个单独连续的空间,不再需要指定具体寻址空间从而解决了不支持C/C++语言的难题。

      统一寻址空间实现完全C++支持

      另外PTX 1.0的寻址长度为40-bit,可以支持TB以上的寻址空间,到了PTX 2.0中Load/store操作的寻址长度进一步提升到64-bit,为未来发展提供了更广阔的空间。

      更主要的是,统一寻址空间的意义是将GPU当成“共享地址空间”的并行计算机。大量的算法是基于共享地址空间平台的,这样能够显著推动GPU并行计算的发展。

      ·新的指令支持OpenCL和DirectCompute

      OpenCL和DirectCompute与CUDA有着非常密切的关系,甚至可以把它们理解为基于CUDA的API。作为第三代CUDA架构的Fermi,自然能很好地支持它们,更特别的,Fermi可以利用标准的转换方式,从硬件上支持OpenCL和DirectCompute的接口指令,使得图形渲染计算和通用计算很简单地操作在相同的数据上。

      PTX 2.0 ISA还为DirectCompute提供了的新指令population count、append和bit-reverse。

      ·IEEE 32-bit浮点精度

      Fermi在单精度浮点指令上开始从硬件上支持次正规数(subnormal number)以及IEEE 754-2008的四种舍入模式(nearest、zero、positive infinity、negative infinity)。

      次正规数是非常小的数字,介于0和最小的正规数间,在上一代的GPU中通常将它当作0来处理,这样会造成精度的损失影响最终结果。Fermi开始通过硬件来处理次正规数,可以精确的计算小于0的浮点数并避免精度损失的问题。

      FMA指令可以确保计算结果的精度

      通常情况下在GPU上完成的如“a*b+c”这样的MAD计算可以让两个操作在一个指令周期内完成。MAD指令先进行“a*b”的乘法运算,再将结果与“c”进行加运算。但是MAD指令乘运算积作为中间数据是会被舍掉尾数部分的,因此在随后的加法运算中得到的数据并不是最精确的结果。

      Fermi使用了更高精度的FMA指令,不但可以支持32-bit的单精度的操作,也满足64-bit双精度的需求(GT200只支持64-bit双精度的FMA)。FMA做乘运算和加运算的时候只在最后运算的时候作一次舍入,它保留中间数据的全部精度,确保最终结果的准确性。在这样的精度保证下面,更多的算法都可以受益,像渲染算法、迭代的数学算法和求平方根的算法等。

      ·通过predication(断言)提高条件性能

      Fermi的PTX 2.0 ISA开始在指令层为分散的线程提供predication(断言)硬件级支持,它能缩短条件代码部分,更快更好地执行条件语句。



    §1.3 改进的内存操作子系统

      ·可配置的L1和统一的L2并行数据缓存技术

      透过成千上万的GPU Computing应用程序,我们发现Shared Memory(共享内存)不能解决所有问题,一些程序需要Shared Memory,另一些程序可能需要cache,还有的既需要Shared Memory也需要cache。针对这样的应用需求,Fermi在内存体系上作了重要改进,优化的内存设计可以提供Shared Memory也能提供cache,程序员能根据自己的需求来做选择。

    Fermi的内存体系

      在前面我们已谈到,Fermi架构内的每个SM的RAM达到64KB,可以被配置成48KB的Shared Memory和16KB的L1 cache,或者配置成为16KB的Shared Memory和48KB的L1 cache。这样的配置可以最大限度的满足应用程序的不同需求。

      同时,应用程序都能因寄存器溢出而从L1 cache得到好处,在之前类似的情况,都会从片外的内存去访问数据,大大增加延迟导致性能下降。

      Fermi还新增配备有768KB大小统一的L2 cache,可以支持所有的存取(LD/ST)和纹理请求,为它们提供有效和高速的数据支持。有些算法不能在运行前就确定下来,像一些物理问题、光线跟踪和稀疏矩阵乘法等,尤其需要缓存的支持。当过滤器和转换器需要所有的SM都去读取相同数据的时候,缓存一样会有很大的帮助。

      • 首个提供ECC内存支持的GPU

      Fermi是首个支持ECC(Error Correcting Code)的GPU,正常情况下的内存位存储错误,都会引起软件的错误,ECC就是用来检查和纠正这样的错误。由于这样的错误会根据系统的增大线性的增加,越是高性能的计算ECC就显得越重要。

      普通用户对ECC或许没有什么概念,但是在商业计算上ECC却是不可或缺的功能,GT200虽然实现了双精度浮点运算,但是并没有支持ECC,像使用GT200的Tesla 10系列就只适合做小规模的集群,要想真正冲击高性能计算机(HPC)领域那么只能是Fermi架构的服务器。

      Fermi的寄存器、共享内存、L1缓存、L2缓存和DRAM内存都受到ECC保护,这样的设计大大增加系统的可靠性,在HPC领域Fermi将能大展身手。

      • 原子内存操作性能极大增强

      所谓原子操作(Atomic operations)是指像add、min、max、compare-and-swap这些操作在读、改和写的过程中不会被其它线程中断。原子内存操作在并行计算中非常重要,并发线程允许正确地在共享数据结构上实现“读-改-写”操作。

      原子内存操作广泛用于并行排序、归约操作和没有锁定线程时的建立并行筑数据结构。更多的原子单元和L2缓存的加入,使得Fermi的原子操作性能相比GT200提升了20倍以上。




    §1.4 第三代千兆线程引擎(GigaThread 3.0)

      Fermi的一个重要特性就是它的两级式线程调度机制,在芯片层面,全局的线程调度引擎分发thread block至SM,在SM层面,两个warp调度器按32个thread一组将warp分配给合适的单元执行。

      到了Fermi,千兆线程引擎(GigaThread)已进化到第三代,具有更大的线程吞吐量,可管理24567个实时线程,达到G80的两倍,另外还引进了更快的上下文切换(Context Switching)机制、并发核心程序执行机制和增强了thread block的调度。

      • 10倍于上一代的上下文切换性能(Context Switching)

      像CPU一样,GPU也可以利用上下文切换(Context Switching)来管理多任务的切换,每一个任务都可以通过分时的方法利用计算机资源。Fermi的流水线经过特别优化,将上下文切换的时间缩短至25毫秒以下,相对于上一代有10倍的提升。

      不只是性能的提升,这种设计还可以让开发者创建出更快的kernel-to-kernel程序,比如在游戏时的图形渲染和PhysX物理计算间的切换应用。

      • 并发Kernel(核心程序)执行机制

      在GPU内执行的CUDA程序称作Kernel,Fermi开始支持并发Kernel执行机制,同一应用程序的不同Kernel可以同时在GPU上执行,这样能充分发挥出GPU强大的并行计算能力,比如在PhysX程序中,可能要分别对流体和刚体进行解算,如果是串行执行的话,只能利用到一半的线程处理器,造成极大浪费。

    并发的核心程序执行机制

      Fermi让同一程序的不同Kernel同时执行,这种并行执行机制可以让GPU资源利用率达到最大化。而不同程序的Kernel得益于上下文切换性能的提升依然能迅速地按串行方式执行。


    第二章 GF100图形架构解读

      Fermi的图形渲染架构更注重它在游戏中的表现,即为游戏提供更快的速度、更好的画质,同时借助Fermi在CUDA计算方面的能力,在游戏中展现更加真实的几何效果。

      GF100是NVIDIA新一代的GPU,同时也是基于Fermi架构的首款GPU,GF是Graphics Fermi的缩写,100是指民用高端显卡。它能支持全部DirectX 11硬件功能,如Tessellation和DirectCompute等,而实现电影级的几何真实效果是GF100的重心。

      由于图形架构与CUDA计算架构在很多功能单元上是相同的,所以本章的少部分内容可能会和第一章有些重复,权当温故知新吧。

    §2.1 几何真实效果(Geometric Realism)

      在讨论GF100图形架构之前,我们先来看看游戏中角色或物体在几何真实效果上的表现。

      物体与人物等游戏内容一般需要用Mudbox、ZBrush、3D Studio Max、Maya或SoftImage等建模软件来创建,这些软件包能够提供基于Displacement Mapping(贴图置换)表面的工具来辅助设计者创建出细腻的人物与环境。现在,设计师必须手动创建各种细腻程度的多边形模型,以满足游戏中各种渲染场景所需,达到保持可玩性帧速率的目的。这些模型就是带有相关纹理贴图的三角形网格,而这些纹理贴图则是正确着色所需要的。当游戏中运用到这些模型时,每一帧的模型信息都通过主接口(Host Interface)发送给GPU。由于PCI Express总线的带宽限制,游戏开发商倾向于使用相对简单的几何模型以及目前GPU最保守的几何学吞吐量。
     

    FarCry   2游戏中的人物与物体

      即使在当前的一些优秀游戏中,也会因为现有图形API和GPU的限制而存在几何学伪像。比如在《FarCry 2》游戏截图中就可以看到复杂几何图形的折衷表现。手枪皮套有太多的细小画面,皮带被分成多段,屋顶本应看起来有波纹感,实际上只是带有条纹纹理的平面。最后,正如游戏中的大多数人物一样,这个人戴着一顶帽子,“巧妙”避开了渲染头发所涉及的复杂度。

      ·Tessellation和Displacement Mapping概述

      Tessellation(曲面细分)和Displacement Mapping(贴图置换)并不是什么新型渲染技术,如今,电影制作还一直在运用这两项技术。随着DirectX 11的推出,Tessellation作为其主要改进得到更广泛应用。

      利用基于GPU的Tessellation,游戏开发人员能够发送物体或人物的紧凑型几何表现形式,Tessellator单元则为特定场景生成合适的几何学复杂度。现在来看看更加细腻的细节表现,研究一下Tessellation与Displacement Mapping结合使用的特点与优势。

          Tessellation与Displacement Mapping结合使用

      上面左边的图像使用了四边形网格来勾勒人物的大致轮廓,即使与一般的游戏内容相比,这种表现形式占用空间也是非常少的。中间这幅人物图像是对左侧图像进行了精细Tessellation(曲面细分)与描绘的结果,因此它拥有了非常光滑的外观,没有因几何形状的限制而“棱角突出”。不过这个人物虽然外表光滑,但是与粗糙的网格相比,细节部分并无改善。右侧的图像是对中间图像附上了一个Displacement Mapping的效果,整个人物顿时丰满起来了。

      ·Tessellation和Displacement Mapping相结合的优势

      Displacement Mapping与Tessellation的结合使用具有许多优势:表现形式占用空间少、可扩展,能够实现高效存储与计算。紧凑型绘图形式意味着占用的显存较少,当将构成这些图像的顶点发送给GPU处理时所消耗的带宽较少,因此能表现出计算密集度更高、更复杂、更逼真的动作。当游戏人物出现在特定帧中时,这种按需分配的三角形合成法让其几何复杂度能够与针对特定人物情况所生成的三角形数量相匹配。

      这种控制几何细节级别(level of detail,LOD)的能力非常强大。它是按需分配的,数据全部处于片上,所以维持了从前的显存带宽。而且一个模型可能会产生许多个细节级别,同一项游戏内容都能够应用在各种平台上,无论在性能平庸的笔记本还是在强大的四路SLI系统上均可使用,只是表现的细节有所差别而已。

      此外,它具有可扩展性,开发人员能够在前后几代游戏中均使用相同的模型。在性能更强的未来GPU上,细节表现将比当初游戏问世时效果更好。复杂度能够实现动态调整,以适应特定的帧速率。最终,利用Displacement Mapping与Tessellation相结合的方式所渲染出来的模型与设计师所用工具中的原生模型很相似,从而让设计师不必创建不同几何细节级别的模型。

          当一个贴图置换附加于一个平面上时,所造成的表面便呈现出编码中的高度

      Displacement Mapping是一种非常强大的建模与渲染技术,它能够表现出高度信息的纹理。当附加到一个模型上时,Displacement Mapping可用来改变该模型顶点的相对位置,它让复杂的几何图形能够存储在一个紧凑的贴图当中。因此,Displacement Mapping可以被看作是一种几何信息的压缩形式。

      与浮雕贴图、法线贴图以及视差贴图这些仅改变像素外观的贴图不同,Displacement Mapping能够改变顶点的位置。这样一来,就能在阴影的边缘实现自遮挡、精确的阴影以及更加生动的运动效果。

          凭借贴图置换,弹痕能够用于改变游戏中物体的底层几何结构

      Displacement Mapping最有趣的一点就是能够在游戏期间轻松修改它们。在当今的诸多游戏中,用枪对金属门扫射的动作只会留下弹孔的痕迹,但门的形状不会改变。凭借Displacement Mapping,可以用相同的弹孔纹理来更改Displacement Mapping,从而让玩家不仅能够将游戏中的物体的外观打得变形而且还能够将其底层结构打得变形。

      为了追求游戏中的几何真实效果,GF100在图形架构上作了大量的优化设计,接下来就让我们一起看看到底在哪些方面作了优化。



    §2.2 GF100图形架构概况

      在GF100中,抛弃了过去的TPC(Texture Processing Cluster)概念,开始引入GPC(Graphics Processing Cluster)这一名词。GF100的基本结构由一些可伸缩的GPC单元、SM(Streaming Multiprocessor)单元和内存控制器构成。

    GF100架构图

      NVIDIA会推出不同数量GPC、SM和内存控制器搭配的产品以对应不同的价格点,但是一个完整的GF100架构具有4个GPC,16个SM和6个内存控制器。

      CPU的命令通过Host Interface传递给GPU,然后千兆线程(GigaThread)引擎从系统内存取得特定数据并复制到帧缓冲区,GF100拥有6个64-bit的GDDR5内存控制器(总共384-bit),能为通向帧缓冲区提供足够多的带宽。千兆线程引擎创建并分配线程块(thread blocks)给不同的SM,每个SM轮流调度warp给CUDA Core或其它的执行单元。当流水线上一些任务重现时,千兆线程引擎还能重新分配工作给SM,比如光栅化阶段和Tessellation(曲面细分)之后。

      正如在前面介绍Fermi CUDA计算架构所说的,GF100包含有512个CUDA Core,每32个Core组成一个SM,一共有16个SM。每个SM都是高度并行的多核处理器,最多能支持48个warp,也就是能管理1576(48*32)个实时线程,这样16个SM最多可以管理24576个线程。

      每个CUDA Core是一个统一的处理器核心,可以执行顶点、像素、几何和计算Kernel处理任务。另外统一的L2缓存架构能为存、取和纹理操作服务。

      GF100拥有48个ROP单元,应用于像素混合、抗锯齿和原子内存操作等。这些ROP单元每8个一组分为6组,每组与一个64-bit的内存控制器绑定并由之服务。内存控制器、L2缓存和ROP之间的关系是无限亲密的——牵一发而动全局。



    §2.3 GPC架构

      GF100的图形架构建立于一定数量的GPC(Graphics Processing Cluster)之上,每个GPC包含有一个光栅引擎(Raster Engine)和四个SM。

    GPC(Graphics Processing       Cluster)架构图

      GPC是GF100中主要的高级硬件单元,它有两个关键的创新,一是具有弹性的光栅引擎,完成如三角形建立、光栅化和Z-Cull等操作;一是弹性的多形体引擎(PolyMorph Engine),作用于顶点属性获取和Tessellation等任务。光栅引擎居住于GPC之内,每个GPC内只有一个光栅引擎,而多形体引擎则居于SM之内,每个GPC内一共有4个多形体引擎。

      正如其名,GPC封装了所有关键的图形处理单元,唯一例外的是ROP功能,你甚至可以把GPC看作是一个自给自足的GPU。



    §2.4 并行几何处理

      过去的GPU都使用了单一的前端功能设计,如fetch、assemble和rasterize等,固定的流水线只能为那些灵活的并行处理核心提供固定的性能,这样很容易造成这些功能单元成为瓶颈或资源浪费。

      虽然单一的前端设计在过去的GPU中有过辉煌历史,但随着几何复杂性的增加,单一的前端设计成为主要障碍,尤其是Tessellation的应用从根本上打破了GPU图形工作量的平衡,Tessellation中的三角形密度呈几何倍数增长,对流水线的优化成为最迫切的要求。

      有鉴于此,GF100图形架构最重要的改进在于将原来的单一前端设计改变为并行几何处理,包括并行化的光栅引擎和多形体引擎,它们将会带来突破性的性能飞跃,相比于GT200,GF100的几何性能增长8倍以上。

      ·多形体引擎(PolyMorph Engine)

      多形体引擎(PolyMorph Engine)负责Vertex Fetch(顶点拾取)、Tessellation(曲面细分)、Viewport Transform(视口变换)、Attribute Setup(属性设定)和Stream Output(流式输出)五个阶段运算,每个阶段的计算结果都会被传递给SM,SM执行游戏着色器,然后将结果返回给多形体引擎的下一个阶段,当所有运算完成后,结果将会送至光栅引擎。


      第一个阶段,从全局的顶点缓冲区获取顶点并送给SM进行顶点和外壳(Hull)着色,此时顶点的物理空间转变为世界空间,而Tessellation要求的参数也得以计算。

      第二个阶段,多形体引擎得到Tessellation参数,Tessellator开始进行曲面细分并输出对应的顶点,这些新的顶点被送至SM的Domain着色器和Geometry着色器。Domain着色器以从Hull着色器和Tessellator得到的信息为基础,对顶点的最终位置进行计算,在这个阶段, 贴图置换(Displacement map)通常会为了增加细节特征而得以应用。

      而Geometry着色器管理着后处理,对需要的顶点和基本体进行删减或添加,这个结果最终将送回到多形体引擎。

      第三个阶段,多形体引擎执行Viewport Transformation(视口变换)和透视修正,接下来是Attribute setup(属性设定),把后期视口变换顶点自属性转换成平面方程,以进行高效的着色器评估,最后顶点被随意地“stream out”(流输出)到内存,以便能作其它的处理。

      每个SM内包含有一个多形体引擎,完整的GF100一共拥有16个多形体引擎,在作Tessellation处理时,16个引擎以相当于并行的方式工作,相比与对手RV870的单一Tessellator固定单元,GF100在这方面的性能将具有明显优势。

      ·光栅引擎(Raster Engine)

      在经由多形体引擎处理之后,运算结果被送至光栅引擎(Raster Engine),为了提高三角形吞吐量,GF100使用了四个光栅引擎并行处理。

      光栅引擎由Edge Setup(边缘设置)、Rasterizer(光栅器)和Z-Cull(Z剔除)三步组成。在Edge Setup阶段,顶点位置被拾取,三角表边缘被处理,那些不需要在屏幕上显示的三角形将被消隐掉。每个Edge setup单元在每个周期可以处理一个点、线或三角形。

      Rasterizer为每个基元运行边缘方程计算像素的覆盖,如果使用了抗锯齿功能,则为每个多采样和覆盖采样进行覆盖操作。每个Rasterizer在每个周期可以输出8个像素,因此4个光栅引擎每周期一共可以输出32个光栅化的像素。

      光栅化后的像素进入Z-Cull单元,Z-Cull单元获取像素图块,并将图块中像素的颜色深度与显存中的现有像素进行比较,那些完全处理显存像素之后的像素图块将从流水线中剔除掉,不需要进一步的像素着色工作,从而提高工作效率。



    §2.5 第三代Streaming Multiprocessor流处理器

      关于SM的架构在第一章也作了详细说明,这里仅对它在图形方面的特性作些补充。

      GF100图形架构中的SM

      每个SM中包含有32个CUDA Core、16个Load/Store单元、4个SFU单元、1个多形体引擎、64kb可配置的共享内存/L1缓存,以及两个Warp调度器和指令发送器。

      ·增强的纹理性能

      每个SM里还配置有4个纹理单元(Texture Unit),每个纹理单元在一个周期内能完成一个纹理地址计算并获取四个纹理采样,返回的结果是可以过滤的,也可以是没有过滤的,它支持双线性、三线性和各向异性过滤。

      GF100通过提升效率来提升纹理性能,这主要是通过将纹理单元移至SM内来实现,它提升了纹理缓存的效率,同时纹理单元和纹理缓存的工作频率也更高

    GT200的纹理引擎

      在上代的GT200架构,每三个SM(一个TPC)共享一个包含有8个纹理过滤单元的纹理引擎,一共有80个纹理单元,在GF100架构中,虽然纹理单元减少到了64个(4*16),但每个SM都有自己独立的纹理单元和独立的纹理缓存,这种整合的方式使得其性能直线增长。比如在Crysis游戏中,GF100的纹理性能是GT200的170%。

      同时,在实际应用中它会带来积极的作用,比如阴影绘图和SSAO(Screen Space Ambient Occlusion,屏幕环境光遮蔽)方面。


      GF100的专用L1纹理缓存(12KB)也作了重新设计,可以实现更高的效率,而且,通过统一的L2缓存(768KB),纹理可用的缓存容量达到GT200的三倍,为纹理密集的着色器提升了命中率。

      另外,在上一代架构中,纹理单元的频率与核心频率相同,但在GF100中,纹理单元的工作频率更高,因此对性能的提升是显而易见的。

      GF100的纹理单元还支持DirectX 11的BC6H和BC7压缩格式,在HDR纹理或渲染目标时可以减少内存占用量。

      ·从硬件上实现抖动采样(jittered sampling)

      抖动采样(jittered sampling)是针对阴影边缘和后期处理一项技术,通过对邻近texel(纹理像素)进行采样来计算并创建更柔和的阴影边缘效果。借助于DirectX 11的four-offset Gather4特性,GF100的纹理单元支持抖动采样,允许通过一条纹理指令从64x64的像素网格中拾取4个texel。

      不同的是,GF100从硬件上实现了DirectX 11的four-offset Gather4,能大大加速阴影绘图、环境光遮蔽和后处理算法,有了抖动采样的帮助,游戏能提高柔和阴影(soft shadow)或纹理过滤效率。对游戏开发商来说,意味着消耗的硬件资源更少;对玩家来说,则意味着画质更好。

      在上图左边显示的是3DMark 2006中的柔和阴影图样,它是通过右边的纹理网格执行抖动采样来完成的。GF100从硬件上实现抖动采样,性能较之以前提升了2倍。



    §2.6 L2缓存设计

      GF100特别拥有768KB的统一的L2缓存,为所有的存取和纹理请求服务,L2缓存为GPU提供高效高速的数据共享。一些不能预知数据地址的算法,比如物理解算、光线追踪等都能从硬件缓存中受益。后处理过滤通常要求多个SM从内存中读取相同的数据,L2缓存在此时就能有效提升带宽效率。

          GF100缓存架构有利于流水线各阶段的通讯,减少对片外内存的访问

      GT200只有256KB的L2缓存,还是只读的。GF100就不同了,除了容量大三倍外,并且能够进行读写操作,这也是GF100能够支持C/C++程序的重要因素。L2缓存有助于流水线上阶段间的数据交流,减少对片外内存的访问。 另外还采取了优先算法来清除L2中的数据,包括各种检查确保需要的数据居留在缓存中。



    §2.7 新的ROP单元增强抗锯齿能力

      GF100一共有48个ROP单元,每8个一组分为6组,分别与6个64-bit的GDDR5内存控制器绑定。GF100的ROP单元也进行了重新设计,性能和效率都得到增强,是上一代的两倍

      每个ROP单元每周期能输出32-bit整数像素,一个FP16像素只需要2个周期,一个FP32像素则需要4个周期。同时原子指令性能也得到极大提升,同一地址的原子操作性能比GT200快了20倍,连续内存地址的原子操作快了7.5倍。

      ·8xMSAA性能提升

      GF100在8xMSAA(MultiSampling Anti-Aliasing)的性能表现也有明显提升,这得益于在压缩效率上的改进。对于许多不能被压缩的很小的几何体,增加的ROP单元能带来更有效的渲染。

      一些测试显示,GF100在8xMSAA模式下的性能只比4xMSAA下损失9%,而对应的GT200性能损失在30%以上。

      ·支持32xCSAA

      在GF100中,还有一个很重要的设计,那就是支持32xCSAA(Coverage Sample Anti-Aliasing,覆盖采样抗锯齿),有提供更好的图像质量,利用alpha-to-coverage(透明至覆盖)来改善几何真实体的表现水平。

      CSAA是NVIDIA在MSAA基础上开发出来的,进一步节省显存使用量及带宽,它将边缘多边形里需要取样的子像素坐标覆盖掉,把原像素坐标强制安置在驱动程序预先算好的坐标中,能够高效率的执行边缘取样,效能提升非常的显著。 从G80时代就开始引入CSAA,不过最高只能支持到16xCSAA。

    32xCSAA是一种新的8+24   CSAA模式

      32xCSAA实际上是8x的颜色采样(Color Sample)加上24x的覆盖采样(Coverage Sample),在750*750的采样坐标中8个蓝色点为实际采样点,通过驱动调度每个实际采样点周围再计算出3个覆盖采样,从而实现8xAA + 24xCSAA的32xCSAA效果。

      受限于API与GPU的计算能力,当今游戏能渲染的几何图形数量还是很有限的,比如树叶这样的细长物体就是一个老大难的问题,针对树叶的一种常用技术就是创建一个包含许多树叶的透明纹理包,利用alpha-to-coverage来消除树叶间的缝隙。覆盖采样的数量决定了边缘的质量,当覆盖采样只有4或8个时,将会出现很严重的锯齿和镶边效果。GF100能实现32xCSAA采样,采样达到32个,最大限度提升边缘质量。

    16xCSAA vs   32xCSAA

      另外,TMAA(Transparency Adaptive Multisampling,透明动态多采样)也能从CSAA获益。由于DirectX 9 API不支持alpha-to-coverage,因此对于DirectX 9游戏,就需要TMAA的帮助。它采用一种叫“alpha test”的技术,为透明纹理产生硬边缘。TMAA能转换DirectX 9中旧有的着色器代码,使之能使用alpha-to-coverage,结合CSAA,能大幅提升画面质量。

      在上一代的GT200仅能实现最高16xCSAA(8xAA + 8xCSAA),在画面质量上是不能和GF100的32xCSAA相提并论,而且32xCSAA在性能上损失相当小,比如说32xCSAA下的性能只比8xAA下低7%。



    §2.8 面向图形的计算架构

      虽然我们就Fermi通用计算架构作了讲解,在这里还是要针对它在图形计算方面的设计多费些口水,作为一款GPU,GF100很多设计是专为图形计算作了优化。

      像光栅化、光线追踪以及Reyes都是为人们所广泛认可的通用渲染算法,迄今为止,GPU已经专为光栅化而进行了设计。随着开发人员不断探索全新的方式来改进其图形引擎,GPU将需要在各种不断发展的图形算法上实现出色的性能。这些算法是通过通用计算API来执行的,因此一个强大的计算架构对GPU的图形功能来说是至关重要的。

      由于程序存储器的本地性仅在运行时有效,因此像光线追踪、物理效果以及人工智能等诸多算法无法利用共享存储器。GF100的高速缓存架构在设计过程中考虑到了这些问题。凭借每个SM所配备的最多48KB的L1高速缓存以及一个全局L2高速缓存,在运行时存取存储器同一位置的线程将自动加速运行,无论这些线程选用了那种算法都会实现加速。

      GF100计算架构针对游戏的另一个改进方面是调度。在游戏应用程序中,并不会执行单个占主导地位的内核,而是执行各种较小的内核(例如布料、流体、刚性体)。在GF100上,这些内核能够并行地执行,从而最大限度地利用了诸多CUDA Core。

      在利用计算的游戏当中,每一帧都会出现上下文切换,这一点使其性能很难达到灵敏帧速率的要求。GF100将上下文切换的时间缩短至约20微妙,使其能够在每帧多个内核之间执行精细的上下文切换。例如,一款游戏可以使用DirectX 11来渲染场景、切换至CUDA以实现选择性光线追踪、调用一个DirectCompute内核来执行后期处理以及利用PhysX执行流体模拟。

      计算算法在性质上是通用的,它们可用于解决各种各样的视觉计算与模拟算法等问题,在下面就两个实例作些探讨,即光线追踪和平滑粒子流体力学。



      §2.8.1 光线追踪(Ray tracing)

      当光线透射到物体表面时,光会被吸收或反射和折射,特别是当光被折射到不同方向时,光谱就会发生变化,光线在经过一系列的衰减最后进入人的眼睛。光线追踪就是要计算出光线发出后经过一系列衰减再进入人眼时的情况,这种技术非常有助于提高游戏场景的真实感。

      光线追踪在电影制作中被广泛运用,但是PC游戏要求实时渲染,光线追踪所需的运算量极其庞大,这么多年来,CPU或GPU都无法胜任这项工作。但是无论是光线追踪本身还是它与光栅化的结合都被视为图形处理的未来发展趋势。

      现在,随着GF100的问世,交互式光线追踪首次在标准PC上成为可能。GF100在设计期间就专门将光线追踪考虑在内,它是首款在硬件上支持循环的GPU,能执行高线的光线追踪和其它图形算法。GF100的L1和L2高速缓存大幅提升了光线追踪的效率,L1缓存为邻近的光线增加了存储器的本地性,L2缓存则增大了至显存间的带宽。

      GF100不仅在光线追踪中有不错的表现,在路径追踪(Path tracing)等高级全局照明算法中也有表现不凡。路径追踪采用大量光线来收集场景中的环境光照信息。早期估算,GF100的路径追踪性能是GT200的四倍。

    借助NVIDIA       OptiX技术的路径追踪所渲染的布加迪威龙

      为了维持一定的性能,游戏可以选择性地运行光线追踪。比如光栅化用来执行场景的第一个通道,被确定为反射光的像素将通过光线追踪来作进一步处理,这种混合渲染模式能提供更好的性能和更好的质量,相信会更容易被游戏厂商接受。



      §2.8.2 平滑粒子流体力学(SPH)

      逼真的流体模拟一直被应用在电影中,以创造出各种奇特效果。虽然游戏设计师们非常渴望制作出类似的效果,但流体模拟的复杂度阻碍了它在实时应用程序中的应用。

      随着平滑粒子流体力学(Smoothed Particle Hydrodynamics,简称SPH)算法被集成到PhysX API中,流体模拟开始在游戏中得以突破。或许你还记得首个PhysX SPH游戏《Cryostasis》(雪域危机),它在极短的时间内模拟出了3万个流体微粒。

          《雪域危机》中的水花落在人物身上,会呈现出逼真的飞溅效果

      然而《雪域危机》中的水粒子数量太少,还不足以达到以假乱真的地步,而且图形互操作极高的成本也限制了实际性能。

      GF100是首款能实现高保真流体模拟所需性能的GPU,GF100搭配改进型的SPH解算器,可以帮助设计师在整个游戏环景中加入高质量的SPH流体效果。GF100能模拟每帧128000个以上的SPH粒子,足以支持大量水及其它流体的特效表现,比如可以制作出自然形成的水花四溅和水漩涡效果。

      SPH算法一般不利用共享内存,上一代的共享内存架构制约了它的性能,而GF100的高速缓存架构能大大减少片外内存的通信量,能够在不耗尽存储器带宽的情况下模拟出大量粒子,而高速的上下文切换机制也进一步降低了模拟的开销 。总而言之,对于GF100来说,流体模拟达到了前所未有的高效。



    §2.9 NVIDIA 3D Vision Surround

      NVIDIA的3D Vision Surround技术是在三台显示器上以全立体3D显示的方式呈现完全身临其境的游戏效果,从而将3D游戏推向一个新的高度。

      3D Vision Surround的渲染能力可以达到每秒7.46亿像素(1920*1080*120*3),当开启了Tessellation、PhysX等效果后要求就更变态了,这样就给了强大的GF100用武之地。GF100的每组ROP有8个ROP单元,相比前代产品翻了一番,其并行的多形体引擎和光栅引擎在像Tessellation这样任务繁重的场景中保持高性能。

      三台1920*1080分辨率的3D显示器可以组建成3D Vision Surrond系统,分辨率可以达到5760*1080。对于那些非3D显示器,也可以组建NVIDIA Surround,只要分辨率相同的多台显示器即可。除了GF100之外,GT200系列也同样支持3D Vision Surround技术,但都要求是双卡SLI以上,以保证游戏的流畅运行,目前针对这项技术的专用256驱动还没有发布。

      3D Vision Surround还包含有控制部分,可以让用户调整显示器,以补偿显示器的边框和间隙问题,从而呈现更加逼真的全屏游戏显示效果。



    第三章 GF100显卡GeForce GTX 480/GTX 470

      GF100晶体管数达到30亿个,比对手RV870要多出近40%,即便是采用了40nm工艺,其核心大小(Die size)达到了惊人的529mm2,而RV870的核心大小只有334mm2,我们似乎只有感慨它的复杂性。

      首批上市的GF100显卡为GeForce GTX 480和GTX 470。略显遗憾的是它们都不是完整规格的GF100,完整的GF100有16个SM(512个CUDA Core)、6个ROP组(48个单元)。

          GeForce GTX 480/GTX 470规格表

      GTX 480只有15个SM,即480个CUDA Core,对应的纹理单元减少到了60个,不过显存位宽保留了完整的384-bit。GTX 480的核心频率为700MHz,Shader频率为1401MHz,显存容量为1536MB,其频率为3696MHz(GDDR5)。

      GTX 470规格还要低一点,只有14个SM,448个CUDA Core,纹理单元为56个,而且ROP也减少了一组,总共40个ROP单元,因此它的显存位宽只有320bit。GTX 470的核心频率为607MHz,Shader频率为1215MHz,显存容量为1280MB,其频率为3348MHz(GDDR5)。

          中高端主流显卡排排座

      GTX 480的PCB长度为26.7cm,与Radeon HD 5870相当,GTX 470 PCB长24.1cm,和Radeon HD 5850一样。由于这次测试的GTX 480/GTX 470是由NVIDIA提供的样卡,没有产品标志贴纸,显得有些“寒碜”。

      GTX 480/GTX 470的各项规格参数基本明了,官方提供的最大TDP为250W和215W,单纯从这个数据来看还是可以接受的,不过实际测试得到的数据有点“出乎意料”。




    §3.1 GeForce GTX 480显卡写真

    GeForce GTX 480

    GeForce GTX 480的GPU-Z信息图

    GeForce GTX 480提供了两个DVI和一个mini HDMI接口

      GeForce GTX 480提供了两个DVI和一个mini HDMI接口,据悉,一些品牌厂商将会随卡赠送mini HDMI转HDMI的转换线。

    输入电源接口为6pin+8pin

      GTX 480的最大TDP为250W,因此至少需要一个6pin+8pin的电源输入接口,这样可以提供300W的电能。

    GeForce GTX 480 PCB背面

    GeForce GTX 480的PCB正面

      在PCB正面的右侧主要是供电部分,供电采用了6+2相设计,而且涡轮风扇下方的PCB作了开孔设计,这样冷空气可以从PCB背面吸入,进一步提升散热效率。在左侧是GPU和显存等,我们以前在GT200上常常见到NVIO芯片已被整合到了GPU当中,12片GDDR5显存围绕在GPU周围。DVI输出接口上并没有屏蔽罩,这在高端显卡上是比较少见的。

      供电部分的输入电容为香港万裕X-CON ULR系列的固态电容,输出电容为Nippon chemicon系列固态电容,GPU供电为6相,显存供电为2相。

    GeForce GTX 480的核心代号为GF100-375

    三星的GDDR5显存(0.4ns)

      GTX 480搭配的GDDR5显存为三星产品,标准频率为1250MHz(0.4ns),而GTX 480指定的工作频率仅为924MHz,排除功耗等因素,理论上存在着很大的超频空间。每颗显存的规格为128MB/32bit,12颗显存总共组成了1536MB/384bit的显存规格。

    GPU供电电路

      GPU供电采用了6相供电设计,数字PWM芯片为CHiL公司产品,Mosfet为安森美SO-8封装产品,每相由三个Mosfet组成(一上两下),在Mosfet左边是每相对应的driver IC。

    核心供电的控制芯片,位于PCB背面

    显存供电部分

      显存供电部分位于PCB的上部,采用了2相设计,每相的Mosfet只有两个。

    去掉导风罩后的样子,似乎帅多了

    去掉散热器主体后的模样

      整个散热器分为三部分,基座、散热器主体部分和风扇,基座能通过螺丝固定在PCB上,然后主体部分和风扇再固定在基座上。

    完整的GTX 480散热器

    GeForce GTX 480散热器主体

      由于GTX 480的功耗非同小可,在散热器上也作了特别设计,和以往散热器不同的是在鳍片上方还焊接了一个金属盖,除了导风的作用外,进一步增加散热面积。

    GeForce GTX 480散热器使用了热管直触技术

      GTX 480的散热器开始采用了流行的热管直触技术,五根6mm热管直接与GPU表面进行接触,尽量降低热阻,具有比较好的传导效果,这也是首次在公版散热器上采用热管直触技术,当然在第三方散热器上是屡见不鲜了。

    GeForce GTX 480散热器风扇

      从GTX 480散热器的风扇似乎可以窥见其功耗非同一般,采用的是台达BFB0712HF风扇,额定电流达到1.80A,对于这个70mm规格的风扇来说,它的噪音在高转速下会达到一个恐怖的高度。不过好在大多数时候它的转速和噪音都比较低。

    GeForce GTX 480的散热器安装孔距为58mm


      可能一些玩家会考虑更换第三方散热器,有一个不太好的消息,GTX 480安装散热器的相邻孔距为58mm,这个和GeForce 8800Ultra的孔距是一样的,现在大多数第三方显卡散热器都不支持这一孔距。一些相对老的散热器,比如Zalman GV1000、ZeroTherm HC92、Xigmatek VD964等是支持58mm孔距的,现在又有了用武之地。

    §3.2 GeForce GTX 470显卡写真

    GeForce GTX 470


    GeForce GTX 470 GPU-Z截图

    GeForce GTX 470提供了两个DVI和一个mini HDMI接口

      GeForce GTX 470同样也是提供了两个DVI和一个mini HDMI接口,相信大部分品牌厂商将会随卡赠送mini HDMI转HDMI的转换线。

    输入电源接口为6pin+6pin

      GTX 480的最大TDP为215W,因此只需要两个6pin的电源输入接口即可,这样可以提供225W的电能。

    GeForce GTX 470 PCB背面

    GeForce GTX 470的PCB正面

      在PCB正面的右侧是供电部分,供电采用了4+1相设计,同样在涡轮风扇下方的PCB作了开孔设计,这样冷空气还可以从PCB背面吸入,提升散热效率。在左侧是GPU和显存等,10片GDDR5显存围绕在GPU周围。DVI输出接口上也是没有屏蔽罩的。

      供电部分的输入电容为台湾立隆OCRZ系列固态电容,输出电容具体品牌不详。

    GeForce GTX 470的核心代号为GF100-275

    三星的GDDR5显存(0.5ns)

      GTX 470搭配的GDDR5显存为0.5ns三星显存,标准频率为1000MHz,GTX 470指定的工作频率仅为837MHz,排除功耗等因素,理论上存在着较大的超频空间。每颗显存的规格为128MB/32bit,10颗显存总共组成了1280MB/320bit的显存规格。

    GPU供电电路

      GTX 470也是采用了模拟供电,其中GPU供电采用了4相供电设计,PWM芯片为安森美NCP5388,Mosfet同GTX 480一样,也是安森美SO-8封装产品,每相由三个Mosfet组成(一上两下)。

    核心供电的控制芯片安森美NCP5388

    显存供电部分

      显存供电部分位于PCB的上部,采用了1相设计,Mosfet也是采用了一上两下的组合方式。

    去掉导风罩后的样子

    去掉散热器主体后的模样

      GTX 470散热器的结构和GTX 480基本相似,只是规格上要小一些,也分为三部分,基座、散热器主体部分和风扇,基座能通过螺丝固定在PCB上,然后主体部分和风扇再固定在基座上。

    完整的GTX 470散热器

    GeForce GTX 470散热器主体

      GTX 470散热器只有4根热管,而且鳍片顶部也没有焊接金属盖。

    GeForce GTX 470散热器也使用了热管直触技术

      GTX 470的散热器也采用了热管直触技术,4根6mm热管直接与GPU表面进行接触,尽量降低热阻,具有比较好的传导效果。

      GTX 470散热器的风扇与GTX 480风扇完全一样,不过工作时的转速相对还要低一些。另外,和GTX 480一样,GTX 470安装散热器的相邻孔距也是58mm,现在大多数第三方显卡散热器都不支持这一孔距。


    第四章 GeForce GTX 480/GTX 470测试

    §4.1 测试平台及说明

      我们选用了Intel Core i7-920平台,并把CPU频率提升至4GHz,避免CPU性能成为瓶颈。测试除了有主角GeForce GTX 470、GeForce GTX 480外,还分别对比了GeForce GTX285、Radeon HD 5870、Radeon HD 5850以及Radeon HD 5970。

      测试项目囊括了DX9/DX10/DX10.1/DX11游戏大作,并加入了多个DX11专用测试软件;在3DMark Vantage测试时统一关闭PPU物理加速选项;另外,在测试中还加入了两款PhysX游戏,以对比新旧产品在启用/关闭PhysX时的性能损失情况。

      GeForce GTX 470/480均安装NV提供的Forceware 197.17版本专用驱动,而GTX285则采用Forceware 196.21 Forceware WHQL正式版驱动;Radeon显卡统一采用最新的Catalyst 10.3 WHQL驱动。由于近期业内有传闻称Catalyst 10.3驱动存在作弊嫌疑,但我们在测试了关闭和开启驱动面板AI后的成绩并无太大差别,不过我们在测试中依然关闭了AI选项。

      另外,在显卡温度测试方面,我们采用了银欣乌鸦2机箱进行封装测试。



    §4.2 温度测试:绝对高温

    GeForce GTX 470待机温度情况(室温23℃)

    GeForce GTX 470满载温度情况(室温23℃)

      在封箱测试中,在待机情况下GeForce GTX 470的核心/shader/显存频率自动下降为50/101/135MHz,核心温度恒定在42℃(室温23℃),风扇转速40%(约1471rpm);

      利用Furmark v1.8拷机5分钟以上,GPU核心温度飙升至93℃,风扇转速提升至73%(约3226rpm),噪音明显增大。

    GeForce GTX 480待机温度情况(室温23℃)

    GeForce GTX 480满载温度情况(室温23℃)

      GeForce GTX 480在待机情况下核心/shader/显存频率同样降至50/101/135MHz,GPU核心温度为43℃,风扇转速为44%(约1668rpm)。

      使用Furmark v1.8拷机5分钟以上,GPU核心温度上升至92℃,风扇转速达到87%(约4323rpm),风扇的高转速不可避免地产生巨大噪音,而且程度比GTX 470更甚。


    §4.3 功耗测试:惊为天人


      我们利用Seasonic PowerAngle功耗测试仪记录显卡功耗值:启动计算机进入Windows 7系统界面自然待机5分钟,记录功耗仪上的功耗峰值数据作为待机整机功耗;运行《DiRT 2》游戏来使GPU负载,记录出现的功耗峰值数据作为显卡负载整机功耗。

      以下测试成绩均为整机功耗,而不是独立的显卡功耗,由于平台一致,所以数据是具有实际比较价值的。

      从测试结果可以看到,GeForce GTX 470/480显卡的待机整机功耗为227w,仅比上代旗舰GTX285稍高,基本与AMD阵营的双核旗舰Radeon HD 5970持平。

      在《DiRT 2》游戏负载情况下,GeForce GTX 480的功耗值瞬间飙升,整机功耗上升至474w,比双核心的Radeon HD 5970还要高出46w;而GeForce GTX 470整机功耗则上升为424w,比Radeon HD 5970低4w左右。

      虽然GeForce GTX 470/480的标称最大功耗为215w和250w,但实际测试功耗更高,GTX 470与Radeon HD 5870相比功耗高出75w,而GTX 480则要比HD5870高出125w之多。

    §4.4 GeForce GTX 470/480超频测试

    利用nTune进行超频

      由于目前的主流超频软件均不支持GeForce GTX 470/480显卡的频率调节,在调试时会出现核心和显存频率参数混乱的bug。在经过多番尝试后,我们发现可使用nTune对GTX 470/480进行频率的调节。

    GeForce GTX 470超频后3DMark Vantage得分

      经过调试过,GeForce GTX 470的核心/Shader/显存频率可由默认的607/1215/1674MHz提升至750/1500/1750MHz的水平,此时同过3DMark Vantage的Extreme模式考验,得分为X8726,比默认频率时得分(X7295)提升了19.6%,性能提升幅度非常不错。

    GeForce GTX 480超频后3DMark Vantage得分

      GeForce GTX 480的核心/Shader/显存频率可由默认的700/1401/1848MHz(3696MHz DDR)提升至800/1600/2150MHz(4300MHz)的水平,此时同过3DMark Vantage的Extreme模式考验,得分提升为X10532,比默认频率时得分(X9286)提升了13.4%,性能提升幅度较为乐观。



    §4.5 32xCSAA抗锯齿模式测试

    在驱动控制面板中可开启32xCSAA

      GeForce GTX 470/480可在驱动控制面板中开启32xCSAA,这是Fermi相比过往产品的又一改进之处。

    《Crysis Warhead》游戏中放大到200%时的叶片边缘锯齿情况

      从《Crysis Warhead》中选择的树叶较多的场景截图,并放大到200%时画面时可以看到,在开启普通的16xQAA时的锯齿情况非常严重,而在驱动面板中打开32xCSAA时,锯齿情况得到更进一步的改善。

      对比16xQAA和驱动面板强制启用32xCSAA,游戏帧数由原来的平均33.787下降到19.84,性能下降幅度约为41.2%左右。

      由性能对比测试可见,虽然开启32xCSAA能够在游戏中带来更高级别的抗锯齿效果,使物体边缘得到更加自然的过渡效果,但在对显卡性能要求较高的游戏如《Crysis Warhead》等中将带来性能一定的损失。



    §4.6 DX11 TechDemo:StoneGiant

      在StoneGiant DX11 Techdemo中GTX 480/470均领先于AMD阵营的三款产品,体现出了GTX 480/470在DX11的Tessellation技术方面更具优势。



    §4.7 DX11 SDK Test:Sub D11

      在SDK DX11测试中,低级别的Tessellation程度设置下,GTX 470/480与HD5870/5850效率差距并不大,双核心的HD5970一马当先;不过当Tessellation程度逐渐加重,Radeon显卡性能急速下降,在最高级别设置下HD5970仅14.493帧,而GTX 470和GTX 480则依然能够达到54.774和72.291帧。可见NVIDIA在Fermi架构产品中对Tessellation的优化更甚。



    §4.8 DX11 SDK Test:PN Triangle

      在Microsoft DX11 SDK PN Triangle Demo中,轻度Tessellation的设置下几款参测显卡均可达到非常高的帧数,而在重度Tessellation应用下三款Radeon显卡性能下降非常大,所得帧数由接近1000的水平大幅下降至剩下两位数,而GTX 470/480虽然亦有严重的性能下降,但依然可保持在200帧的水平以上。由该Demo可更进一步体现了基于Fermi架构的GTX 480/470显卡对于Tessellation的优化。

     


    §4.9 GTX 470 VS. GTX285

    <img style="cursor: -moz-zoom-out;" alt="http://img2.expreview.com/img/review/fermi/GTX470_285.png" src=http://img2.expreview.com/img/review/fermi/GTX470_285.png">

      与上代单核心旗舰GTX285相比较,GTX 470性能自然是遥遥领先了,平均领先幅度达到20.24%。而在最低帧数比较中,GTX 470领先GTX285幅度同样在20.1%左右。由此可见,GTX 470在游戏中的性能起伏并不大,即最低帧数保持在较为稳定的水平下。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。

     

     


    §4.10 GTX 470 VS. Radeon HD 5850

      通过测试表明,GeForce GTX 470在极多数游戏中的表现均可大幅领先HD5850,仅极少数项目落后,综合来看GTX 470平均领先HD5850约10.44%;

      由于最低帧数对游戏体验存在举足的影响,故我们增加了最低帧数的对比,在对比中可以看到GTX 470与HD5850的差距平均达到了7.04%。由此可见,Fermi架构对ROP进行了更进一步的优化,反映在游戏中则能够使最低帧数得到保证。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。

     

     


    §4.11 GTX 470 VS. HD5870

      在与AMD的单核心旗舰HD5870的较量中,GTX 470平均落后对手约4.88%左右,在多数的游戏中不敌HD5870。而最新推出的Unigine Heaven v2.0则成为了NVIDIA显卡的强项之一。而在最低帧数的较量中GTX 470则落后HD5870约6.33%。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。

     

     


    §4.12 GTX 480 VS. GTX 470

      两款旗舰产品的较量中,毫无疑问GTX 480在所有项目中均领先于GTX 470,平均领先幅度达到24.11%,而最低帧数领先幅度为23.67%,可见两款显卡在游戏中的最低帧数均保持在稳定的水平。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。

     

     


    §4.13 GTX 480 VS. Radeon HD 5870

      GTX 480平均领先HD5870约14.21%的幅度,在绝大部分游戏中均大幅领先后者, 而最低帧数则平均领先11.9%左右。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。

     


    §4.14 GTX 480 VS. Radeon HD 5970

      在与双核心旗舰Radoen HD 5970的角力中,GTX 480在绝大多数的项目中均落后,平均落后幅度为7.55%。尤为突出的是,在Heaven v2.0的测试中,Extreme Tessellation级别设置下GTX 480反胜HD5970,领先幅度达到最大21.69%,可见在高级别的Tessellation项目中,即使是双核心的HD5970亦显得力不从心。

      小插曲:在测试期间,我们的Dell 3008WFP显示器出现了故障,两个DVI接口均不能使用,而HDMI为1.2标准并不能上2560X1600分辨率,故在测试HD5870/5850使用了DP接口,但HD5970并不具备标准DP接口(配备min-DP),故在HD5970的对比成绩中非常遗憾地失去了2560X1600分辨率的设置。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。




    §4.15 GTX 480 SLI VS. GTX 480

      从以上测试可以看出GTX480 SLI的效率相当高,比单卡时平均提升了60.66%,最低帧数亦有50.70%的提升,在DX10.1游戏《Tom Clancy's H.A.W.X》中达到了最高89.13%的性能提升;而《WarHammer 40K:Dawn of War II》该游戏似乎对SLI的支持不太理想,在该游戏中SLI基本无效。

      SLI效率除了与显卡物理因素有关外,驱动的优化和影响亦是举足轻重的,而我们测试所采用的为NV内部提供的测试版驱动,相信在正式版驱动出炉后或者还会对GTX480单卡及SLI性能作进一步的优化。

    §4.16 GTX 480 SLI VS. Radeon HD 5970

      GTX480 SLI后的性能惊人,已经远远超越了目前的双核王者HD5970,平均领先幅度达到了41.34%,而最低帧数也有32.11%的领先。可预见未来双核心版GTX480的大致性能情况,不过GTX480功耗过高及良率问题则是目前急需解决的问题。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。


    Fermi:视觉计算王国的缔造者

      在对手的DirectX 11显卡发布的半年后,NVIDIA才在今天“纸面发布”了GF100显卡,它们的首款DirectX 11显卡。单纯从商业角度来说,NVIDIA无疑落后很多,然而我们在全面了解Fermi架构的GF100后,完全能理解NVIDIA的苦心孤诣。


      · 革命性地将光线追踪带入真实应用

      正如前面所说的,真正能带给玩家视觉震撼的是流光溢彩的电影级画面和栩栩如生的物体动作,光线追踪和物理计算在目前看来是唯一选择,任何DirectX下的技术都难以与之匹敌甚至不值一提。虽然我们在文中强调了DirectX 11的Tessellation特性在几何真实性方面带来的益处,但是相信很多人都觉得那不过是可有可无的绵上添花而已。

      NVIDIA甘冒难产的风险重新打造了全新一代显卡架构,GF100这个怪兽级的GPU具备高度并行化的设计,凭借L1和全局L2高速缓存,可以解决诸如光线追踪、物理效果等算法无法利用共享内存的问题,加下并行内核程序执行机制和超快的上下文切换速度,NVIDIA首次将光线追踪在PC上应用变成可能。

      PhysX物理加速技术NVIDIA早已开始行动,这次庞大而复杂的Fermi又革命性地将光线追踪带来,在未来几年内GPU真正可依赖的两项GPU视觉技术上,NVIDIA都远远地将对手甩在身后,专心缔造着自己的视觉计算王国。

      世界并行计算研究实验室总监Dave Patterson如是说:“我相信历史会将Fermi作为一个里程碑载入史册。”几年后再回首,你会不会记得这句话?

      · 世界上最快的GPU

      以目前的情况而言,GeForce GTX 480无疑是这个世界上最快的GPU,对于那些关注游戏性能的玩家,这是相当令人鼓舞的。GF100提供了更好的性能、更好的画质和更优秀的几何真实效果。

      30亿个晶体管的GF100有着恐怖的功耗和发热量,在你选购它之前,一定记得先选好一个强劲的电源,比如GTX 480,至少要一个600W的电源来伺候它。

      · GF100只是一个开始

      在我们看来,Fermi架构是相当具有创造性和远见性的,在未来的二三年内,AMD会越发相形见绌。然而现在的GF100还面临诸多困难,消费者甚至媒体都是很现实的,NVIDIA在DirectX 11显卡市场上的劣势、GF100夸张的功耗,甚至那传说中的良率,都可能会让它饱受困扰。

      对于NVIDIA来说,GF100仅仅是一个开始……

      · GeForce GTX 480/GTX 470市场状况

      今天只是GeForce GTX 480/GTX 470显卡的纸面发布时间,真正供货时候在4月6日,GTX 480的发售时间可能要更晚些。

      据了解本次GeForce GTX 480的产品发布合作伙伴在中国一共是8家厂商,消费者可以关注以下8家厂商以保证可以第一时间的买到GeForce GTX 480。它们分别是索泰、影驰、Inno3D、微星、七彩虹、翔升、耕昇和技嘉。

      具体的价格,GTX 470在2888-2999元,GTX 480在3888-3999元间。



    Fermi:新一代CUDA计算与图形架构

      在未来的游戏世界里,当显卡的渲染速度足够快后,真正能带给玩家视觉震撼的是流光溢彩的表面效果和栩栩如生的物体动作,比如现在的光线追踪和物理加速技术就是在朝着这个方向努力,然而这需要显卡具备极强的计算能力(GPU Computing),不止是图形渲染能力。

      G80架构是NVIDIA公司最初的通用计算GPU架构,即可以做图形渲染,也可以用来做并行计算,后来的GT200架构扩展了G80架构的特点和功能,性能得到进一步提升。新一代的Fermi架构则是继G80架构后的又一重要GPU架构,它站在G80和GT200的肩上,几乎是重新设计了并更注重通用计算的架构。

      Fermi继承了上代的特色,同样也是双架构设计,即CUDA计算架构和图形架构,两种架构可灵活切换,比如在游戏中需要进行物理计算时使用CUDA计算架构,需要进行渲染时使用图形架构。

    Fermi   CUDA计算架构

    Fermi图形渲染架构

      NVIDIA给Fermi的定义是:新一代CUDA计算与图形架构。它采纳了用户在使用G80和GT200架构时给出的建议,针对双精度运算、ECC内存容错能力、Cache体系结构、上下文切换和原子读写操作等方面进行了全新的设计,通过新的架构设计不仅仅增加了计算能力,并且支持更好的可编程能力和计算效果。

      Fermi架构的主要更新如下:

       ◎ 第三代Streaming Multiprocessor(SM)
         •  每个SM包含32个CUDA Core,是GT200的4倍
         •  8倍于GT200的双精度浮点性能
         •  Dual Warp调度策略,一个周期内启动两个warp进行计算
         •  每个SM有64KB的RAM,可灵活配置Shared Memory和L1缓存

       ◎ 第二代PTX ISA架构(PTX 2.0)
         •  统一寻址空间,完整的支持C++特性
         •  针对OpenCL和DirectCompute进行优化设计
         •  完整支持IEEE 754-2008 32bit/64bit精度
         •  通过Predication(断言)来提高条件性能

       ◎ 改进的内存操作子系统
         •  可配置的L1和统一的L2并行数据高速缓存
         •  首个提供ECC内存支持的GPU
         •  原子内存操作性能极大增强

       ◎ 第三代千兆线程引擎(GigaThread 3.0)
         •  10倍于上一代的上下文切换能力
         •  并发Kernel(核心程序)执行机制

      GF100是首款采用Fermi架构的GPU,旗下的产品包括GeForce GTX 480和GTX 470,它们能够实现所有的DirectX 11硬件特性,包括Tessellation和DirectCompute等,除了上面提到的领先的并行计算能力外,在游戏图形性能方面也很大改善:

       ◎ 卓越的游戏性能
       ◎ 超一流的图像质量
       ◎ 电影级的几何真实效果
       ◎ 革命性的游戏计算架构

      Fermi是相当复杂和庞大的,其晶体管数达到30亿个,规模空前,这也是它迟迟不能推出的主要原因,它实在是太复杂了!



    第一章 Fermi CUDA计算架构解读

      CUDA计算架构上的改进是Fermi最重要的部分之一,经过G80和GT200两代的发展,Fermi的很多功能单元都升级到了第三代。

    §1.1 第三代Streaming Multiprocessor流处理器

      第三代Streaming Multiprocessor(SM,流处理器群)架构不只是增强了SM的计算能力,同时使得其可编程性和效率得到提高。

          Fermi架构第三代流处理器群示意图

      • 512个CUDA Core

      从Fermi开始,NVIDIA正式使用CUDA Core的概念,实际上它就是之前的Stream Processor(SP,流处理器),为了统一,全文将通称CUDA Core。

      Fermi的SM已经是第三代了,前两代架构的单个SM中只包含有8个CUDA Core,而Fermi的SM中包含有32个CUDA Core,完整规格的Fermi具备16个SM,构成512个CUDA Core,每个CUDA Core都具备完整的整数逻辑单元(ALU)和浮点数单元(FPU)。  

      在GT200,整数逻辑单元(ALU)仅限于24bit的乘法操作,Fermi的ALU几乎采用全新的设计,对所有指令支持全32bit精度,这就符合标准的编程语言要求。通过优化,新的ALU还可以支持64bit精度和扩展的指令运算,包括支持移位、布尔值、比较、转化以及更多的指令操作。

      G80和GT200架构都是用IEEE 754-1985的单精度浮点标准,Fermi开始采用IEEE 754-2008的单精度浮点标准,并支持FMA(fused multiply-add)功能,关于FMA,后文会图解详细说明。

      • 16个Load/Store单元

      每个SM包含16个内存Load/Store(LD/ST,存/取)单元,可以保证源和目标地址在一个周期内同时由16个线程来进行操作,支持缓存和DRAM的任何位置读取。

      • 4个SFU单元

      除了存取单元外,每个SM中还包含有4个SFU(Special Function Units,特殊功能单元),它的作用是处理超越函数,包括sin、cosine、求倒数、平方根等。每个SFU在一个时钟周期内每个thread可以执行一个指令操作,因此每组warp执行需要8个周期(每组warp有32个thread)。指令分发器可以按照当前SFU的运行情况来分发指令,当一个SFU被占用时,可以将指令分发到其他的SFU单元处理。



      • 双精度浮点性能大幅提升

      单精度实数占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。双精度的浮点计算在高性能计算中有着核心的重要位置,在求解线性代数中、数值计算量子化学等中都会需要双精度浮点运算。

    Fermi   架构提供了前所未有的双精度性能

      Fermi架构为支持双精度浮点运算进行了特别设计,FPU单元放到了CUDA Core中,每2个CUDA Core在一个周期内可以完成1个64bit的双精度浮点数FMA操作,也就是每个SM(32个CUDA Core)在一个时钟周期内可以完成16个双精度浮点数操作,单精度与双精度的执行性能达到2:1。

      相比之下,GT200架构下的每个SM(8个CUDA Core)只有1个双精度浮点运算单元,单双精度的执行性能为8:1,可见Fermi的双精度浮点性能有着显著提升,初步估算它的双精度浮点性能是GT200架构的4倍以上,这是一项非常重要的改进。

      • Dual Warp调度策略

      在SM内是执行程序时是以Warp为单位的,32个thread为一组Warp。

          每个SM内具有两个Warp调度器和指令发送器,允许两个Warp同时发射和执行

      Fermi的每一个SM都有两个Warp调度器和指令发送器,Dual warp调度机制可以同时并发调度两个warp的一条指令分别在16个一组的CUDA cores上进行计算,或者在16个LD/ST单元运行,或者4个SFU上运行。Fermi的调度器并不需要对指令流间的相依性进行检查,利用这样的调度机制,可以让硬件的计算能力达到极致。

      大多数的指令都能实现双发射,例如两条整数指令、两条浮点指令或者混合的整数、浮点、Load/Store和SFU处理指令的组合都可以被并发执行,单精度和双精度的指令一样可以并发执行。

      • 64KB可配置的Shared Memory/L1缓存

      在执行CUDA程序时,每个CUDA Core对应一个thread,每个SM则对应一个thread block(线程块),SM内的Shared Memory(共享内存)对可编程性和运行效率提供了强力支持,它可以让同在一个thread block的线程进行协作,能重复利用片上内存,减少对片外内存访问。共享内存在许多高性能CUDA应用程序中起到了重要作用。

      三代GPU间的一些规格比较

       G80和GT200的每个SM都只有16KB的共享内存,Fermi架构中,每个SM的片上内存达到64KB,重要的是这64KB可以被配置成48KB的共享内存和16KB的L1缓存,或者配置成为16KB的共享内存和48KB的L1缓存。

      对于已经使用共享内存的程序来说,可以提供3倍于上一代的共享内存支持,尤其是那些对带宽要求较高的程序获益更多。对一些已经使用了共享内存作为缓存的应用程序来说,可以转而直接使用系统硬件提供的缓存,同时还可以继续使用16KB的共享内存。最理想的是,一些原本就没有使用共享内存的程序,可以直接利用L1缓存,使得程序运行时间缩短,得到更高的性能。



    §1.2 第二代PTX ISA架构(PTX 2.0)

      PTX(Parallel Thread eXecution,并行线程执行)是NVIDIA用以支持并行线程处理器的低级虚拟机和ISA(Instruction-Set Architecture),当程序运行时PTX指令都会通过GPU驱动转变为机器指令,PTX的目的在于提供一个与机器无关的编程环境。

      Fermi是首款支持第二代PTX指令的GPU架构,相比于G80/GT200时代的PTX 1.x,PTX 2.0有了明显改进,因此NVIDIA这次比较高调地将它摆上台面。

      PTX 2.0有一些新的特性,使得GPU具备更强的可编程性、更精确和提供更高的性能。这些包括:完整支持IEEE 32bit的单精度浮点数;变量和指针支持统一的寻址空间;新的指令支持OpenCL和DirectCompute并为完全支持C/C++而做了特殊的设计。

      ·统一寻址空间实现完全C++支持

      在PTX 1.0中进行Load/store操作时需要从local、Shared以及global三处寻址空间中指定一个,由于C/C++语言中所有变量和函数都是通过指针才能确定对象,这样存在编译时分离的寻址空间无法确定指针的位置而导致无法支持C/C++语言。在PTX 2.0中把三个寻址空间统一为一个单独连续的空间,不再需要指定具体寻址空间从而解决了不支持C/C++语言的难题。

      统一寻址空间实现完全C++支持

      另外PTX 1.0的寻址长度为40-bit,可以支持TB以上的寻址空间,到了PTX 2.0中Load/store操作的寻址长度进一步提升到64-bit,为未来发展提供了更广阔的空间。

      更主要的是,统一寻址空间的意义是将GPU当成“共享地址空间”的并行计算机。大量的算法是基于共享地址空间平台的,这样能够显著推动GPU并行计算的发展。

      ·新的指令支持OpenCL和DirectCompute

      OpenCL和DirectCompute与CUDA有着非常密切的关系,甚至可以把它们理解为基于CUDA的API。作为第三代CUDA架构的Fermi,自然能很好地支持它们,更特别的,Fermi可以利用标准的转换方式,从硬件上支持OpenCL和DirectCompute的接口指令,使得图形渲染计算和通用计算很简单地操作在相同的数据上。

      PTX 2.0 ISA还为DirectCompute提供了的新指令population count、append和bit-reverse。

      ·IEEE 32-bit浮点精度

      Fermi在单精度浮点指令上开始从硬件上支持次正规数(subnormal number)以及IEEE 754-2008的四种舍入模式(nearest、zero、positive infinity、negative infinity)。

      次正规数是非常小的数字,介于0和最小的正规数间,在上一代的GPU中通常将它当作0来处理,这样会造成精度的损失影响最终结果。Fermi开始通过硬件来处理次正规数,可以精确的计算小于0的浮点数并避免精度损失的问题。

      FMA指令可以确保计算结果的精度

      通常情况下在GPU上完成的如“a*b+c”这样的MAD计算可以让两个操作在一个指令周期内完成。MAD指令先进行“a*b”的乘法运算,再将结果与“c”进行加运算。但是MAD指令乘运算积作为中间数据是会被舍掉尾数部分的,因此在随后的加法运算中得到的数据并不是最精确的结果。

      Fermi使用了更高精度的FMA指令,不但可以支持32-bit的单精度的操作,也满足64-bit双精度的需求(GT200只支持64-bit双精度的FMA)。FMA做乘运算和加运算的时候只在最后运算的时候作一次舍入,它保留中间数据的全部精度,确保最终结果的准确性。在这样的精度保证下面,更多的算法都可以受益,像渲染算法、迭代的数学算法和求平方根的算法等。

      ·通过predication(断言)提高条件性能

      Fermi的PTX 2.0 ISA开始在指令层为分散的线程提供predication(断言)硬件级支持,它能缩短条件代码部分,更快更好地执行条件语句。



    §1.3 改进的内存操作子系统

      ·可配置的L1和统一的L2并行数据缓存技术

      透过成千上万的GPU Computing应用程序,我们发现Shared Memory(共享内存)不能解决所有问题,一些程序需要Shared Memory,另一些程序可能需要cache,还有的既需要Shared Memory也需要cache。针对这样的应用需求,Fermi在内存体系上作了重要改进,优化的内存设计可以提供Shared Memory也能提供cache,程序员能根据自己的需求来做选择。

    Fermi的内存体系

      在前面我们已谈到,Fermi架构内的每个SM的RAM达到64KB,可以被配置成48KB的Shared Memory和16KB的L1 cache,或者配置成为16KB的Shared Memory和48KB的L1 cache。这样的配置可以最大限度的满足应用程序的不同需求。

      同时,应用程序都能因寄存器溢出而从L1 cache得到好处,在之前类似的情况,都会从片外的内存去访问数据,大大增加延迟导致性能下降。

      Fermi还新增配备有768KB大小统一的L2 cache,可以支持所有的存取(LD/ST)和纹理请求,为它们提供有效和高速的数据支持。有些算法不能在运行前就确定下来,像一些物理问题、光线跟踪和稀疏矩阵乘法等,尤其需要缓存的支持。当过滤器和转换器需要所有的SM都去读取相同数据的时候,缓存一样会有很大的帮助。

      • 首个提供ECC内存支持的GPU

      Fermi是首个支持ECC(Error Correcting Code)的GPU,正常情况下的内存位存储错误,都会引起软件的错误,ECC就是用来检查和纠正这样的错误。由于这样的错误会根据系统的增大线性的增加,越是高性能的计算ECC就显得越重要。

      普通用户对ECC或许没有什么概念,但是在商业计算上ECC却是不可或缺的功能,GT200虽然实现了双精度浮点运算,但是并没有支持ECC,像使用GT200的Tesla 10系列就只适合做小规模的集群,要想真正冲击高性能计算机(HPC)领域那么只能是Fermi架构的服务器。

      Fermi的寄存器、共享内存、L1缓存、L2缓存和DRAM内存都受到ECC保护,这样的设计大大增加系统的可靠性,在HPC领域Fermi将能大展身手。

      • 原子内存操作性能极大增强

      所谓原子操作(Atomic operations)是指像add、min、max、compare-and-swap这些操作在读、改和写的过程中不会被其它线程中断。原子内存操作在并行计算中非常重要,并发线程允许正确地在共享数据结构上实现“读-改-写”操作。

      原子内存操作广泛用于并行排序、归约操作和没有锁定线程时的建立并行筑数据结构。更多的原子单元和L2缓存的加入,使得Fermi的原子操作性能相比GT200提升了20倍以上。



    §1.4 第三代千兆线程引擎(GigaThread 3.0)

      Fermi的一个重要特性就是它的两级式线程调度机制,在芯片层面,全局的线程调度引擎分发thread block至SM,在SM层面,两个warp调度器按32个thread一组将warp分配给合适的单元执行。

      到了Fermi,千兆线程引擎(GigaThread)已进化到第三代,具有更大的线程吞吐量,可管理24567个实时线程,达到G80的两倍,另外还引进了更快的上下文切换(Context Switching)机制、并发核心程序执行机制和增强了thread block的调度。

      • 10倍于上一代的上下文切换性能(Context Switching)

      像CPU一样,GPU也可以利用上下文切换(Context Switching)来管理多任务的切换,每一个任务都可以通过分时的方法利用计算机资源。Fermi的流水线经过特别优化,将上下文切换的时间缩短至25毫秒一下,相对于上一代有10倍的提升。

      不只是性能的提升,这种设计还可以让开发者创建出更快的kernel-to-kernel程序,比如在游戏时的图形渲染和PhysX物理计算间的切换应用。

      • 并发Kernel(核心程序)执行机制

      在GPU内执行的CUDA程序称作Kernel,Fermi开始支持并发Kernel执行机制,同一应用程序的不同Kernel可以同时在GPU上执行,这样能充分发挥出GPU强大的并行计算能力,比如在PhysX程序中,可能要分别对流体和刚体进行解算,如果是串行执行的话,只能利用到一半的线程处理器,造成极大浪费。

    并发的核心程序执行机制

      Fermi让同一程序的不同Kernel同时执行,这种并行执行机制可以让GPU资源利用率达到最大化。而不同程序的Kernel得益于上下文切换性能的提升依然能迅速地按串行方式执行。



    第二章 GF100图形架构解读

      Fermi的图形渲染架构更注重它在游戏中的表现,即为游戏提供更快的速度、更好的画质,同时借助Fermi在CUDA计算方面的能力,在游戏中展现更加真实的几何效果。

      GF100是NVIDIA新一代的GPU,同时也是基于Fermi架构的首款GPU,GF是Graphics Fermi的缩写,100是指民用高端显卡。它能支持全部DirectX 11硬件功能,如Tessellation和DirectCompute等,而实现电影级的几何真实效果是GF100的重心。

      由于图形架构与CUDA计算架构在很多功能单元上是相同的,所以本章的少部分内容可能会和第一章有些重复,权当温故知新吧。

    §2.1 几何真实效果(Geometric Realism)

      在讨论GF100图形架构之前,我们先来看看游戏中角色或物体在几何真实效果上的表现。

      物体与人物等游戏内容一般需要用Mudbox、ZBrush、3D Studio Max、Maya或SoftImage等建模软件来创建,这些软件包能够提供基于Displacement Mapping(贴图置换)表面的工具来辅助设计者创建出细腻的人物与环境。现在,设计师必须手动创建各种细腻程度的多边形模型,以满足游戏中各种渲染场景所需,达到保持可玩性帧速率的目的。这些模型就是带有相关纹理贴图的三角形网格,而这些纹理贴图则是正确着色所需要的。当游戏中运用到这些模型时,每一帧的模型信息都通过主接口(Host Interface)发送给GPU。由于PCI Express总线的带宽限制,游戏开发商倾向于使用相对简单的几何模型以及目前GPU最保守的几何学吞吐量。
     

    FarCry   2游戏中的人物与物体

      即使在当前的一些优秀游戏中,也会因为现有图形API和GPU的限制而存在几何学伪像。比如在《FarCry 2》游戏截图中就可以看到复杂几何图形的折衷表现。手枪皮套有太多的细小画面,皮带被分成多段,屋顶本应看起来有波纹感,实际上只是带有条纹纹理的平面。最后,正如游戏中的大多数人物一样,这个人戴着一顶帽子,“巧妙”避开了渲染头发所涉及的复杂度。

      ·Tessellation和Displacement Mapping概述

      Tessellation(曲面细分)和Displacement Mapping(贴图置换)并不是什么新型渲染技术,如今,电影制作还一直在运用这两项技术。随着DirectX 11的推出,Tessellation作为其主要改进得到更广泛应用。

      利用基于GPU的Tessellation,游戏开发人员能够发送物体或人物的紧凑型几何表现形式,Tessellator单元则为特定场景生成合适的几何学复杂度。现在来看看更加细腻的细节表现,研究一下Tessellation与Displacement Mapping结合使用的特点与优势。

          Tessellation与Displacement Mapping结合使用

      上面左边的图像使用了四边形网格来勾勒人物的大致轮廓,即使与一般的游戏内容相比,这种表现形式占用空间也是非常少的。中间这幅人物图像是对左侧图像进行了精细Tessellation(曲面细分)与描绘的结果,因此它拥有了非常光滑的外观,没有因几何形状的限制而“棱角突出”。不过这个人物虽然外表光滑,但是与粗糙的网格相比,细节部分并无改善。右侧的图像是对中间图像附上了一个Displacement Mapping的效果,整个人物顿时丰满起来了。

      ·Tessellation和Displacement Mapping相结合的优势

      Displacement Mapping与Tessellation的结合使用具有许多优势:表现形式占用空间少、可扩展,能够实现高效存储与计算。紧凑型绘图形式意味着占用的显存较少,当将构成这些图像的顶点发送给GPU处理时所消耗的带宽较少,因此能表现出计算密集度更高、更复杂、更逼真的动作。当游戏人物出现在特定帧中时,这种按需分配的三角形合成法让其几何复杂度能够与针对特定人物情况所生成的三角形数量相匹配。

      这种控制几何细节级别(level of detail,LOD)的能力非常强大。它是按需分配的,数据全部处于片上,所以维持了从前的显存带宽。而且一个模型可能会产生许多个细节级别,同一项游戏内容都能够应用在各种平台上,无论在性能平庸的笔记本还是在强大的四路SLI系统上均可使用,只是表现的细节有所差别而已。

      此外,它具有可扩展性,开发人员能够在前后几代游戏中均使用相同的模型。在性能更强的未来GPU上,细节表现将比当初游戏问世时效果更好。复杂度能够实现动态调整,以适应特定的帧速率。最终,利用Displacement Mapping与Tessellation相结合的方式所渲染出来的模型与设计师所用工具中的原生模型很相似,从而让设计师不必创建不同几何细节级别的模型。

          当一个贴图置换附加于一个平面上时,所造成的表面便呈现出编码中的高度

      Displacement Mapping是一种非常强大的建模与渲染技术,它能够表现出高度信息的纹理。当附加到一个模型上时,Displacement Mapping可用来改变该模型顶点的相对位置,它让复杂的几何图形能够存储在一个紧凑的贴图当中。因此,Displacement Mapping可以被看作是一种几何信息的压缩形式。

      与浮雕贴图、法线贴图以及视差贴图这些仅改变像素外观的贴图不同,Displacement Mapping能够改变顶点的位置。这样一来,就能在阴影的边缘实现自遮挡、精确的阴影以及更加生动的运动效果。

          凭借贴图置换,弹痕能够用于改变游戏中物体的底层几何结构

      Displacement Mapping最有趣的一点就是能够在游戏期间轻松修改它们。在当今的诸多游戏中,用枪对金属门扫射的动作只会留下弹孔的痕迹,但门的形状不会改变。凭借Displacement Mapping,可以用相同的弹孔纹理来更改Displacement Mapping,从而让玩家不仅能够将游戏中的物体的外观打得变形而且还能够将其底层结构打得变形。

      为了追求游戏中的几何真实效果,GF100在图形架构上作了大量的优化设计,接下来就让我们一起看看到底在哪些方面作了优化。



    §2.2 GF100图形架构概况

      在GF100中,抛弃了过去的TPC(Texture Processing Cluster)概念,开始引入GPC(Graphics Processing Cluster)这一名词。GF100的基本结构由一些可伸缩的GPC单元、SM(Streaming Multiprocessor)单元和内存控制器构成。

    GF100架构图

      NVIDIA会推出不同数量GPC、SM和内存控制器搭配的产品以对应不同的价格点,但是一个完整的GF100架构具有4个GPC,16个SM和6个内存控制器。

      CPU的命令通过Host Interface传递给GPU,然后千兆线程(GigaThread)引擎从系统内存取得特定数据并复制到帧缓冲区,GF100拥有6个64-bit的GDDR5内存控制器(总共384-bit),能为通向帧缓冲区提供足够多的带宽。千兆线程引擎创建并分配线程块(thread blocks)给不同的SM,每个SM轮流调度warp给CUDA Core或其它的执行单元。当流水线上一些任务重现时,千兆线程引擎还能重新分配工作给SM,比如光栅化阶段和Tessellation(曲面细分)之后。

      正如在前面介绍Fermi CUDA计算架构所说的,GF100包含有512个CUDA Core,每32个Core组成一个SM,一共有16个SM。每个SM都是高度并行的多核处理器,最多能支持48个warp,也就是能管理1576(48*32)个实时线程,这样16个SM最多可以管理24576个线程。

      每个CUDA Core是一个统一的处理器核心,可以执行顶点、像素、几何和计算Kernel处理任务。另外统一的L2缓存架构能为存、取和纹理操作服务。

      GF100拥有48个ROP单元,应用于像素混合、抗锯齿和原子内存操作等。这些ROP单元每8个一组分为6组,每组与一个64-bit的内存控制器绑定并由之服务。内存控制器、L2缓存和ROP之间的关系是无限亲密的——牵一发而动全局。



    §2.3 GPC架构

      GF100的图形架构建立于一定数量的GPC(Graphics Processing Cluster)之上,每个GPC包含有一个光栅引擎(Raster Engine)和四个SM。

    GPC(Graphics Processing       Cluster)架构图

      GPC是GF100中主要的高级硬件单元,它有两个关键的创新,一是具有弹性的光栅引擎,完成如三角形建立、光栅化和Z-Cull等操作;一是弹性的多形体引擎(PolyMorph Engine),作用于顶点属性获取和Tessellation等任务。光栅引擎居住于GPC之内,每个GPC内只有一个光栅引擎,而多形体引擎则居于SM之内,每个GPC内一共有4个多形体引擎。

      正如其名,GPC封装了所有关键的图形处理单元,唯一例外的是ROP功能,你甚至可以把GPC看作是一个自给自足的GPU。



    §2.4 并行几何处理

      过去的GPU都使用了单一的前端功能设计,如fetch、assemble和rasterize等,固定的流水线只能为那些灵活的并行处理核心提供固定的性能,这样很容易造成这些功能单元成为瓶颈或资源浪费。

      虽然单一的前端设计在过去的GPU中有过辉煌历史,但随着几何复杂性的增加,单一的前端设计成为主要障碍,尤其是Tessellation的应用从根本上打破了GPU图形工作量的平衡,Tessellation中的三角形密度呈几何倍数增长,对流水线的优化成为最迫切的要求。

      有鉴于此,GF100图形架构最重要的改进在于将原来的单一前端设计改变为并行几何处理,包括并行化的光栅引擎和多形体引擎,它们将会带来突破性的性能飞跃,相比于GT200,GF100的几何性能增长8倍以上。

      ·多形体引擎(PolyMorph Engine)

      多形体引擎(PolyMorph Engine)负责Vertex Fetch(顶点拾取)、Tessellation(曲面细分)、Viewport Transform(视口变换)、Attribute Setup(属性设定)和Stream Output(流式输出)五个阶段运算,每个阶段的计算结果都会被传递给SM,SM执行游戏着色器,然后将结果返回给多形体引擎的下一个阶段,当所有运算完成后,结果将会送至光栅引擎。


      第一个阶段,从全局的顶点缓冲区获取顶点并送给SM进行顶点和外壳(Hull)着色,此时顶点的物理空间转变为世界空间,而Tessellation要求的参数也得以计算。

      第二个阶段,多形体引擎得到Tessellation参数,Tessellator开始进行曲面细分并输出对应的顶点,这些新的顶点被送至SM的Domain着色器和Geometry着色器。Domain着色器以从Hull着色器和Tessellator得到的信息为基础,对顶点的最终位置进行计算,在这个阶段, 贴图置换(Displacement map)通常会为了增加细节特征而得以应用。

      而Geometry着色器管理着后处理,对需要的顶点和基本体进行删减或添加,这个结果最终将送回到多形体引擎。

      第三个阶段,多形体引擎执行Viewport Transformation(视口变换)和透视修正,接下来是Attribute setup(属性设定),把后期视口变换顶点自属性转换成平面方程,以进行高效的着色器评估,最后顶点被随意地“stream out”(流输出)到内存,以便能作其它的处理。

      每个SM内包含有一个多形体引擎,完整的GF100一共拥有16个多形体引擎,在作Tessellation处理时,16个引擎以相当于并行的方式工作,相比与对手RV870的单一Tessellator固定单元,GF100在这方面的性能将具有明显优势。

      ·光栅引擎(Raster Engine)

      在经由多形体引擎处理之后,运算结果被送至光栅引擎(Raster Engine),为了提高三角形吞吐量,GF100使用了四个光栅引擎并行处理。

      光栅引擎由Edge Setup(边缘设置)、Rasterizer(光栅器)和Z-Cull(Z剔除)三步组成。在Edge Setup阶段,顶点位置被拾取,三角表边缘被处理,那些不需要在屏幕上显示的三角形将被消隐掉。每个Edge setup单元在每个周期可以处理一个点、线或三角形。

      Rasterizer为每个基元运行边缘方程计算像素的覆盖,如果使用了抗锯齿功能,则为每个多采样和覆盖采样进行覆盖操作。每个Rasterizer在每个周期可以输出8个像素,因此4个光栅引擎每周期一共可以输出32个光栅化的像素。

      光栅化后的像素进入Z-Cull单元,Z-Cull单元获取像素图块,并将图块中像素的颜色深度与显存中的现有像素进行比较,那些完全处理显存像素之后的像素图块将从流水线中剔除掉,不需要进一步的像素着色工作,从而提高工作效率。



    §2.5 第三代Streaming Multiprocessor流处理器

      关于SM的架构在第一章也作了详细说明,这里仅对它在图形方面的特性作些补充。

      GF100图形架构中的SM

      每个SM中包含有32个CUDA Core、16个Load/Store单元、4个SFU单元、1个多形体引擎、64kb可配置的共享内存/L1缓存,以及两个Warp调度器和指令发送器。

      ·增强的纹理性能

      每个SM里还配置有4个纹理单元(Texture Unit),每个纹理单元在一个周期内能完成一个纹理地址计算并获取四个纹理采样,返回的结果是可以过滤的,也可以是没有过滤的,它支持双线性、三线性和各向异性过滤。

      GF100通过提升效率来提升纹理性能,这主要是通过将纹理单元移至SM内来实现,它提升了纹理缓存的效率,同时纹理单元和纹理缓存的工作频率也更高

    GT200的纹理引擎

      在上代的GT200架构,每三个SM(一个TPC)共享一个包含有8个纹理过滤单元的纹理引擎,一共有80个纹理单元,在GF100架构中,虽然纹理单元减少到了64个(4*16),但每个SM都有自己独立的纹理单元和独立的纹理缓存,这种整合的方式使得其性能直线增长。比如在Crysis游戏中,GF100的纹理性能是GT200的170%。

      同时,在实际应用中它会带来积极的作用,比如阴影绘图和SSAO(Screen Space Ambient Occlusion,屏幕环境光遮蔽)方面。


      GF100的专用L1纹理缓存(12KB)也作了重新设计,可以实现更高的效率,而且,通过统一的L2缓存(768KB),纹理可用的缓存容量达到GT200的三倍,为纹理密集的着色器提升了命中率。

      另外,在上一代架构中,纹理单元的频率与核心频率相同,但在GF100中,纹理单元的工作频率更高,因此对性能的提升是显而易见的。

      GF100的纹理单元还支持DirectX 11的BC6H和BC7压缩格式,在HDR纹理或渲染目标时可以减少内存占用量。

      ·从硬件上实现抖动采样(jittered sampling)

      抖动采样(jittered sampling)是针对阴影边缘和后期处理一项技术,通过对邻近texel(纹理像素)进行采样来计算并创建更柔和的阴影边缘效果。借助于DirectX 11的four-offset Gather4特性,GF100的纹理单元支持抖动采样,允许通过一条纹理指令从64x64的像素网格中拾取4个texel。

      不同的是,GF100从硬件上实现了DirectX 11的four-offset Gather4,能大大加速阴影绘图、环境光遮蔽和后处理算法,有了抖动采样的帮助,游戏能提高柔和阴影(soft shadow)或纹理过滤效率。对游戏开发商来说,意味着消耗的硬件资源更少;对玩家来说,则意味着画质更好。

      在上图左边显示的是3DMark 2006中的柔和阴影图样,它是通过右边的纹理网格执行抖动采样来完成的。GF100从硬件上实现抖动采样,性能较之以前提升了2倍。



    §2.6 L2缓存设计

      GF100特别拥有768KB的统一的L2缓存,为所有的存取和纹理请求服务,L2缓存为GPU提供高效高速的数据共享。一些不能预知数据地址的算法,比如物理解算、光线追踪等都能从硬件缓存中受益。后处理过滤通常要求多个SM从内存中读取相同的数据,L2缓存在此时就能有效提升带宽效率。

          GF100缓存架构有利于流水线各阶段的通讯,减少对片外内存的访问

      GT200只有256KB的L2缓存,还是只读的。GF100就不同了,除了容量大三倍外,并且能够进行读写操作,这也是GF100能够支持C/C++程序的重要因素。L2缓存有助于流水线上阶段间的数据交流,减少对片外内存的访问。 另外还采取了优先算法来清除L2中的数据,包括各种检查确保需要的数据居留在缓存中。



    §2.7 新的ROP单元增强抗锯齿能力

      GF100一共有48个ROP单元,每8个一组分为6组,分别与6个64-bit的GDDR5内存控制器绑定。GF100的ROP单元也进行了重新设计,性能和效率都得到增强,是上一代的两倍

      每个ROP单元每周期能输出32-bit整数像素,一个FP16像素只需要2个周期,一个FP32像素则需要4个周期。同时原子指令性能也得到极大提升,同一地址的原子操作性能比GT200快了20倍,连续内存地址的原子操作快了7.5倍。

      ·8xMSAA性能提升

      GF100在8xMSAA(MultiSampling Anti-Aliasing)的性能表现也有明显提升,这得益于在压缩效率上的改进。对于许多不能被压缩的很小的几何体,增加的ROP单元能带来更有效的渲染。

      一些测试显示,GF100在8xMSAA模式下的性能只比4xMSAA下损失9%,而对应的GT200性能损失在30%以上。

      ·支持32xCSAA

      在GF100中,还有一个很重要的设计,那就是支持32xCSAA(Coverage Sample Anti-Aliasing,覆盖采样抗锯齿),有提供更好的图像质量,利用alpha-to-coverage(透明至覆盖)来改善几何真实体的表现水平。

      CSAA是NVIDIA在MSAA基础上开发出来的,进一步节省显存使用量及带宽,它将边缘多边形里需要取样的子像素坐标覆盖掉,把原像素坐标强制安置在驱动程序预先算好的坐标中,能够高效率的执行边缘取样,效能提升非常的显著。 从G80时代就开始引入CSAA,不过最高只能支持到16xCSAA。

    32xCSAA是一种新的8+24   CSAA模式

      32xCSAA实际上是8x的颜色采样(Color Sample)加上24x的覆盖采样(Coverage Sample),在750*750的采样坐标中8个蓝色点为实际采样点,通过驱动调度每个实际采样点周围再计算出3个覆盖采样,从而实现8xAA + 24xCSAA的32xCSAA效果。

      受限于API与GPU的计算能力,当今游戏能渲染的几何图形数量还是很有限的,比如树叶这样的细长物体就是一个老大难的问题,针对树叶的一种常用技术就是创建一个包含许多树叶的透明纹理包,利用alpha-to-coverage来消除树叶间的缝隙。覆盖采样的数量决定了边缘的质量,当覆盖采样只有4或8个时,将会出现很严重的锯齿和镶边效果。GF100能实现32xCSAA采样,采样达到32个,最大限度提升边缘质量。

    16xCSAA vs   32xCSAA

      另外,TMAA(Transparency Adaptive Multisampling,透明动态多采样)也能从CSAA获益。由于DirectX 9 API不支持alpha-to-coverage,因此对于DirectX 9游戏,就需要TMAA的帮助。它采用一种叫“alpha test”的技术,为透明纹理产生硬边缘。TMAA能转换DirectX 9中旧有的着色器代码,使之能使用alpha-to-coverage,结合CSAA,能大幅提升画面质量。

      在上一代的GT200仅能实现最高16xCSAA(8xAA + 8xCSAA),在画面质量上是不能和GF100的32xCSAA相提并论,而且32xCSAA在性能上损失相当小,比如说32xCSAA下的性能只比8xAA下低7%。



    §2.8 面向图形的计算架构

      虽然我们就Fermi通用计算架构作了讲解,在这里还是要针对它在图形计算方面的设计多费些口水,作为一款GPU,GF100很多设计是专为图形计算作了优化。

      像光栅化、光线追踪以及Reyes都是为人们所广泛认可的通用渲染算法,迄今为止,GPU已经专为光栅化而进行了设计。随着开发人员不断探索全新的方式来改进其图形引擎,GPU将需要在各种不断发展的图形算法上实现出色的性能。这些算法是通过通用计算API来执行的,因此一个强大的计算架构对GPU的图形功能来说是至关重要的。

      由于程序存储器的本地性仅在运行时有效,因此像光线追踪、物理效果以及人工智能等诸多算法无法利用共享存储器。GF100的高速缓存架构在设计过程中考虑到了这些问题。凭借每个SM所配备的最多48KB的L1高速缓存以及一个全局L2高速缓存,在运行时存取存储器同一位置的线程将自动加速运行,无论这些线程选用了那种算法都会实现加速。

      GF100计算架构针对游戏的另一个改进方面是调度。在游戏应用程序中,并不会执行单个占主导地位的内核,而是执行各种较小的内核(例如布料、流体、刚性体)。在GF100上,这些内核能够并行地执行,从而最大限度地利用了诸多CUDA Core。

      在利用计算的游戏当中,每一帧都会出现上下文切换,这一点使其性能很难达到灵敏帧速率的要求。GF100将上下文切换的时间缩短至约20微妙,使其能够在每帧多个内核之间执行精细的上下文切换。例如,一款游戏可以使用DirectX 11来渲染场景、切换至CUDA以实现选择性光线追踪、调用一个DirectCompute内核来执行后期处理以及利用PhysX执行流体模拟。

      计算算法在性质上是通用的,它们可用于解决各种各样的视觉计算与模拟算法等问题,在下面就两个实例作些探讨,即光线追踪和平滑粒子流体力学。



      §2.8.1 光线追踪(Ray tracing)

      当光线透射到物体表面时,光会被吸收或反射和折射,特别是当光被折射到不同方向时,光谱就会发生变化,光线在经过一系列的衰减最后进入人的眼睛。光线追踪就是要计算出光线发出后经过一系列衰减再进入人眼时的情况,这种技术非常有助于提高游戏场景的真实感。

      光线追踪在电影制作中被广泛运用,但是PC游戏要求实时渲染,光线追踪所需的运算量极其庞大,这么多年来,CPU或GPU都无法胜任这项工作。但是无论是光线追踪本身还是它与光栅化的结合都被视为图形处理的未来发展趋势。

      现在,随着GF100的问世,交互式光线追踪首次在标准PC上成为可能。GF100在设计期间就专门将光线追踪考虑在内,它是首款在硬件上支持循环的GPU,能执行高线的光线追踪和其它图形算法。GF100的L1和L2高速缓存大幅提升了光线追踪的效率,L1缓存为邻近的光线增加了存储器的本地性,L2缓存则增大了至显存间的带宽。

      GF100不仅在光线追踪中有不错的表现,在路径追踪(Path tracing)等高级全局照明算法中也有表现不凡。路径追踪采用大量光线来收集场景中的环境光照信息。早期估算,GF100的路径追踪性能是GT200的四倍。

    借助NVIDIA       OptiX技术的路径追踪所渲染的布加迪威龙

      为了维持一定的性能,游戏可以选择性地运行光线追踪。比如光栅化用来执行场景的第一个通道,被确定为反射光的像素将通过光线追踪来作进一步处理,这种混合渲染模式能提供更好的性能和更好的质量,相信会更容易被游戏厂商接受。



      §2.8.2 平滑粒子流体力学(SPH)

      逼真的流体模拟一直被应用在电影中,以创造出各种奇特效果。虽然游戏设计师们非常渴望制作出类似的效果,但流体模拟的复杂度阻碍了它在实时应用程序中的应用。

      随着平滑粒子流体力学(Smoothed Particle Hydrodynamics,简称SPH)算法被集成到PhysX API中,流体模拟开始在游戏中得以突破。或许你还记得首个PhysX SPH游戏《Cryostasis》(雪域危机),它在极短的时间内模拟出了3万个流体微粒。

          《雪域危机》中的水花落在人物身上,会呈现出逼真的飞溅效果

      然而《雪域危机》中的水粒子数量太少,还不足以达到以假乱真的地步,而且图形互操作极高的成本也限制了实际性能。

      GF100是首款能实现高保真流体模拟所需性能的GPU,GF100搭配改进型的SPH解算器,可以帮助设计师在整个游戏环景中加入高质量的SPH流体效果。GF100能模拟每帧128000个以上的SPH粒子,足以支持大量水及其它流体的特效表现,比如可以制作出自然形成的水花四溅和水漩涡效果。

      SPH算法一般不利用共享内存,上一代的共享内存架构制约了它的性能,而GF100的高速缓存架构能大大减少片外内存的通信量,能够在不耗尽存储器带宽的情况下模拟出大量粒子,而高速的上下文切换机制也进一步降低了模拟的开销 。总而言之,对于GF100来说,流体模拟达到了前所未有的高效。



    §2.9 NVIDIA 3D Vision Surround

      NVIDIA的3D Vision Surround技术是在三台显示器上以全立体3D显示的方式呈现完全身临其境的游戏效果,从而将3D游戏推向一个新的高度。

      3D Vision Surround的渲染能力可以达到每秒7.46亿像素(1920*1080*120*3),当开启了Tessellation、PhysX等效果后要求就更变态了,这样就给了强大的GF100用武之地。GF100的每组ROP有8个ROP单元,相比前代产品翻了一番,其并行的多形体引擎和光栅引擎在像Tessellation这样任务繁重的场景中保持高性能。

      三台1920*1080分辨率的3D显示器可以组建成3D Vision Surrond系统,分辨率可以达到5760*1080。对于那些非3D显示器,也可以组建NVIDIA Surround,只要分辨率相同的多台显示器即可。除了GF100之外,GT200系列也同样支持3D Vision Surround技术,但都要求是双卡SLI以上,以保证游戏的流畅运行,目前针对这项技术的专用256驱动还没有发布。

      3D Vision Surround还包含有控制部分,可以让用户调整显示器,以补偿显示器的边框和间隙问题,从而呈现更加逼真的全屏游戏显示效果。



    第三章 GF100显卡GeForce GTX 480/GTX 470

      GF100晶体管数达到30亿个,比对手RV870要多出近40%,即便是采用了40nm工艺,其核心大小(Die size)达到了惊人的529mm2,而RV870的核心大小只有334mm2,我们似乎只有感慨它的复杂性。

      首批上市的GF100显卡为GeForce GTX 480和GTX 470。略显遗憾的是它们都不是完整规格的GF100,完整的GF100有16个SM(512个CUDA Core)、6个ROP组(48个单元)。

          GeForce GTX 480/GTX 470规格表

      GTX 480只有15个SM,即480个CUDA Core,对应的纹理单元减少到了60个,不过显存位宽保留了完整的384-bit。GTX 480的核心频率为700MHz,Shader频率为1401MHz,显存容量为1536MB,其频率为3696MHz(GDDR5)。

      GTX 470规格还要低一点,只有14个SM,448个CUDA Core,纹理单元为56个,而且ROP也减少了一组,总共40个ROP单元,因此它的显存位宽只有320bit。GTX 470的核心频率为607MHz,Shader频率为1215MHz,显存容量为1280MB,其频率为3348MHz(GDDR5)。

          中高端主流显卡排排座

      GTX 480的PCB长度为26.7cm,与Radeon HD 5870相当,GTX 470 PCB长24.1cm,和Radeon HD 5850一样。由于这次测试的GTX 480/GTX 470是由NVIDIA提供的样卡,没有产品标志贴纸,显得有些“寒碜”。

      GTX 480/GTX 470的各项规格参数基本明了,官方提供的最大TDP为250W和215W,单纯从这个数据来看还是可以接受的,不过实际测试得到的数据有点“出乎意料”。



    §3.1 GeForce GTX 480显卡写真

          GeForce GTX 480

          GeForce GTX 480的GPU-Z信息图

          GeForce GTX 480提供了两个DVI和一个mini HDMI接口

      GeForce GTX 480提供了两个DVI和一个mini HDMI接口,据悉,一些品牌厂商将会随卡赠送mini HDMI转HDMI的转换线。

          输入电源接口为6pin+8pin

      GTX 480的最大TDP为250W,因此至少需要一个6pin+8pin的电源输入接口,这样可以提供300W的电能。

          GeForce GTX 480 PCB背面

          GeForce GTX 480的PCB正面

      在PCB正面的右侧主要是供电部分,供电采用了6+2相设计,而且涡轮风扇下方的PCB作了开孔设计,这样冷空气可以从PCB背面吸入,进一步提升散热效率。在左侧是GPU和显存等,我们以前在GT200上常常见到NVIO芯片已被整合到了GPU当中,12片GDDR5显存围绕在GPU周围。DVI输出接口上并没有屏蔽罩,这在高端显卡上是比较少见的。

      供电部分的输入电容为香港万裕X-CON ULR系列的固态电容,输出电容为Nippon chemicon系列固态电容,GPU供电为6相,显存供电为2相。

          GeForce GTX 480的核心代号为GF100-375

          三星的GDDR5显存(0.4ns)

      GTX 480搭配的GDDR5显存为三星产品,标准频率为1250MHz(0.4ns),而GTX 480指定的工作频率仅为924MHz,排除功耗等因素,理论上存在着很大的超频空间。每颗显存的规格为128MB/32bit,12颗显存总共组成了1536MB/384bit的显存规格。

          GPU供电电路

      GPU供电采用了6相供电设计,PWM芯片为台湾CHiL公司产品,Mosfet为安森美SO-8封装产品,每相由三个Mosfet组成(一上两下),在Mosfet左边是每相对应的driver IC。这也是NVIDIA首次在高端显卡首批公版中放弃数字供电设计方案,在制造成本上会得到更好控制。

          核心供电的控制芯片,位于PCB背面

          显存供电部分

      显存供电部分位于PCB的上部,采用了2相设计,每相的Mosfet只有两个。

          去掉导风罩后的样子,似乎帅多了

          去掉散热器主体后的模样

      整个散热器分为三部分,基座、散热器主体部分和风扇,基座能通过螺丝固定在PCB上,然后主体部分和风扇再固定在基座上。

          完整的GTX 480散热器

          GeForce GTX 480散热器主体

      由于GTX 480的功耗非同小可,在散热器上也作了特别设计,和以往散热器不同的是在鳍片上方还焊接了一个金属盖,除了导风的作用外,进一步增加散热面积。

          GeForce GTX 480散热器使用了热管直触技术

      GTX 480的散热器开始采用了流行的热管直触技术,五根6mm热管直接与GPU表面进行接触,尽量降低热阻,具有比较好的传导效果,这也是首次在公版散热器上采用热管直触技术,当然在第三方散热器上是屡见不鲜了。

          GeForce GTX 480散热器风扇

      从GTX 480散热器的风扇似乎可以窥见其功耗非同一般,采用的是台达BFB0712HF风扇,额定电流达到1.80A,对于这个70mm规格的风扇来说,它的噪音在高转速下会达到一个恐怖的高度。不过好在大多数时候它的转速和噪音都比较低。

          GeForce GTX 480的散热器安装孔距为58mm


      可能一些玩家会考虑更换第三方散热器,有一个不太好的消息,GTX 480安装散热器的相邻孔距为58mm,这个和GeForce 8800Ultra的孔距是一样的,现在大多数第三方显卡散热器都不支持这一孔距。一些相对老的散热器,比如Zalman GV1000、ZeroTherm HC92、Xigmatek VD964等是支持58mm孔距的,现在又有了用武之地。



    §3.2 GeForce GTX 470显卡写真

          GeForce GTX 470


          GeForce GTX 470 GPU-Z截图

          GeForce GTX 470提供了两个DVI和一个mini HDMI接口

      GeForce GTX 470同样也是提供了两个DVI和一个mini HDMI接口,相信大部分品牌厂商将会随卡赠送mini HDMI转HDMI的转换线。

          输入电源接口为6pin+6pin

      GTX 480的最大TDP为215W,因此只需要两个6pin的电源输入接口即可,这样可以提供225W的电能。

          GeForce GTX 470 PCB背面

          GeForce GTX 470的PCB正面

      在PCB正面的右侧是供电部分,供电采用了4+1相设计,同样在涡轮风扇下方的PCB作了开孔设计,这样冷空气还可以从PCB背面吸入,提升散热效率。在左侧是GPU和显存等,10片GDDR5显存围绕在GPU周围。DVI输出接口上也是没有屏蔽罩的。

      供电部分的输入电容为台湾立隆OCRZ系列固态电容,输出电容具体品牌不详。

          GeForce GTX 470的核心代号为GF100-275

          三星的GDDR5显存(0.5ns)

      GTX 470搭配的GDDR5显存为0.5ns三星显存,标准频率为1000MHz,GTX 470指定的工作频率仅为837MHz,排除功耗等因素,理论上存在着较大的超频空间。每颗显存的规格为128MB/32bit,10颗显存总共组成了1280MB/320bit的显存规格。

          GPU供电电路

      GTX 470也是采用了模拟供电,其中GPU供电采用了4相供电设计,PWM芯片为安森美NCP5388,由于NCP5388内置有驱动IC,所以在PCB上是看不到另外的驱动IC的,这和GTX 480的供电有所区别。Mosfet同GTX 480一样,也是安森美SO-8封装产品,每相由三个Mosfet组成(一上两下)。

          核心供电的控制芯片安森美NCP5388,内置驱动IC

          显存供电部分

      显存供电部分位于PCB的上部,采用了1相设计,Mosfet也是采用了一上两下的组合方式。

          去掉导风罩后的样子

          去掉散热器主体后的模样

      GTX 470散热器的结构和GTX 480基本相似,只是规格上要小一些,也分为三部分,基座、散热器主体部分和风扇,基座能通过螺丝固定在PCB上,然后主体部分和风扇再固定在基座上。

          完整的GTX 470散热器

          GeForce GTX 470散热器主体

      GTX 470散热器只有4根热管,而且鳍片顶部也没有焊接金属盖。

          GeForce GTX 470散热器也使用了热管直触技术

      GTX 470的散热器也采用了热管直触技术,4根6mm热管直接与GPU表面进行接触,尽量降低热阻,具有比较好的传导效果。

      GTX 470散热器的风扇与GTX 480风扇完全一样,不过工作时的转速相对还要低一些。另外,和GTX 480一样,GTX 470安装散热器的相邻孔距也是58mm,现在大多数第三方显卡散热器都不支持这一孔距。



    第四章 GeForce GTX 480/GTX 470测试

    §4.1 测试平台及说明

      我们选用了Intel Core i7-920平台,并把CPU频率提升至4GHz,避免CPU性能成为瓶颈。测试除了有主角GeForce GTX 470、GeForce GTX 480外,还分别对比了GeForce GTX285、Radeon HD 5870、Radeon HD 5850以及Radeon HD 5970。

      测试项目囊括了DX9/DX10/DX10.1/DX11游戏大作,并加入了多个DX11专用测试软件;在3DMark Vantage测试时统一关闭PPU物理加速选项;另外,在测试中还加入了两款PhysX游戏,以对比新旧产品在启用/关闭PhysX时的性能损失情况。

      GeForce GTX 470/480均安装NV提供的Forceware 197.17版本专用驱动,而GTX285则采用Forceware 196.21 Forceware WHQL正式版驱动;Radeon显卡统一采用最新的Catalyst 10.3 WHQL驱动。由于近期业内有传闻称Catalyst 10.3驱动存在作弊嫌疑,但我们在测试了关闭和开启驱动面板AI后的成绩并无太大差别,不过我们在测试中依然关闭了AI选项。

      另外,在显卡温度测试方面,我们采用了银欣乌鸦2机箱进行封装测试。



    §4.2 温度测试:绝对高温

    GeForce GTX 470待机温度情况(室温23℃)

    GeForce GTX 470满载温度情况(室温23℃)

      在封箱测试中,在待机情况下GeForce GTX 470的核心/shader/显存频率自动下降为50/101/135MHz,核心温度恒定在42℃(室温23℃),风扇转速40%(约1471rpm);

      利用Furmark v1.8拷机5分钟以上,GPU核心温度飙升至93℃,风扇转速提升至73℃(约3226rpm),噪音明显增大。

    GeForce GTX 480待机温度情况(室温23℃)

    GeForce GTX 480满载温度情况(室温23℃)

      GeForce GTX 480在待机情况下核心/shader/显存频率同样降至50/101/135MHz,GPU核心温度为43℃,风扇转速为44%(约1668rpm)。

      使用Furmark v1.8拷机5分钟以上,GPU核心温度上升至92℃,风扇转速达到87%(约4323rpm),风扇的高转速不可避免地产生巨大噪音,而且程度比GTX 470更甚。



    §4.3 功耗测试:惊为天人

      我们利用Seasonic PowerAngle功耗测试仪记录显卡功耗值:启动计算机进入Windows 7系统界面自然待机5分钟,记录功耗仪上的功耗峰值数据作为待机整机功耗;运行《DiRT 2》游戏来使GPU负载,记录出现的功耗峰值数据作为显卡负载整机功耗。

      以下测试成绩均为整机功耗,而不是独立的显卡功耗,由于平台一致,所以数据是具有实际比较价值的。

      从测试结果可以看到,GeForce GTX 470/480显卡的待机整机功耗为227w,仅比上代旗舰GTX285稍高,基本与AMD阵营的双核旗舰Radeon HD 5970持平。

      在《DiRT 2》游戏负载情况下,GeForce GTX 480的功耗值瞬间飙升,整机功耗上升至474w,比双核心的Radeon HD 5970还要高出46w;而GeForce GTX 470整机功耗则上升为424w,比Radeon HD 5970低4w左右。

      虽然GeForce GTX 470/480的标称最大功耗为225w和250w,但实际测试功耗更高,GTX 470与Radeon HD 5870相比功耗高出75w,而GTX 480则要比HD5870高出125w之多。



    §4.4 GeForce GTX 470/480超频测试

    利用nTune进行超频

      由于目前的主流超频软件均不支持GeForce GTX 470/480显卡的频率调节,在调试时会出现核心和显存频率参数混乱的bug。在经过多番尝试后,我们发现可使用nTune对GTX 470/480进行频率的调节。

    GeForce GTX 470超频后3DMark Vantage得分

      经过调试过,GeForce GTX 470的核心/Shader/显存频率可由默认的607/1215/1674MHz提升至750/1500/1750MHz的水平,此时同过3DMark Vantage的Extreme模式考验,得分为X8726,比默认频率时得分(X7295)提升了19.6%,性能提升幅度非常不错。

    GeForce GTX 480超频后3DMark Vantage得分

      GeForce GTX 480的核心/Shader/显存频率可由默认的700/1401/1848MHz(3696MHz DDR)提升至800/1600/2150MHz(4300MHz)的水平,此时同过3DMark Vantage的Extreme模式考验,得分提升为X10532,比默认频率时得分(X9286)提升了13.4%,性能提升幅度较为乐观。



    §4.5 32xCSAA抗锯齿模式测试

    在驱动控制面板中可开启32xCSAA

      GeForce GTX 470/480可在驱动控制面板中开启32xCSAA,这是Fermi相比过往产品的又一改进之处。

    《Crysis Warhead》游戏中放大到200%时的叶片边缘锯齿情况

      从《Crysis Warhead》中选择的树叶较多的场景截图,并放大到200%时画面时可以看到,在开启普通的16xQAA时的锯齿情况非常严重,而在驱动面板中打开32xCSAA时,锯齿情况得到更进一步的改善。

      对比16xQAA和驱动面板强制启用32xCSAA,游戏帧数由原来的平均33.787下降到19.84,性能下降幅度约为41.2%左右。

      由性能对比测试可见,虽然开启32xCSAA能够在游戏中带来更高级别的抗锯齿效果,使物体边缘得到更加自然的过渡效果,但在对显卡性能要求较高的游戏如《Crysis Warhead》等中将带来性能一定的损失。



    §4.6 DX11 TechDemo:StoneGiant

      在StoneGiant DX11 Techdemo中GTX 480/470均领先于AMD阵营的三款产品,体现出了GTX 480/470在DX11的Tessellation技术方面更具优势。



    §4.7 DX11 SDK Test:Sub D11

      在SDK DX11测试中,低级别的Tessellation程度设置下,GTX 470/480与HD5870/5850效率差距并不大,双核心的HD5970一马当先;不过当Tessellation程度逐渐加重,Radeon显卡性能急速下降,在最高级别设置下HD5970仅14.493帧,而GTX 470和GTX 480则依然能够达到54.774和72.291帧。可见NVIDIA在Fermi架构产品中对Tessellation的优化更甚。



    §4.8 DX11 SDK Test:PN Triangle

      在Microsoft DX11 SDK PN Triangle Demo中,轻度Tessellation的设置下几款参测显卡均可达到非常高的帧数,而在重度Tessellation应用下三款Radeon显卡性能下降非常大,所得帧数由接近1000的水平大幅下降至剩下两位数,而GTX 470/480虽然亦有严重的性能下降,但依然可保持在200帧的水平以上。由该Demo可更进一步体现了基于Fermi架构的GTX 480/470显卡对于Tessellation的优化。



    §4.9 GTX 470 VS. GTX285

      与上代单核心旗舰GTX285相比较,GTX 470性能自然是遥遥领先了,平均领先幅度达到24.12%。而在最低帧数比较中,GTX 470领先GTX285幅度同样在26.89%左右。由此可见,GTX 470在游戏中的性能起伏并不大,即最低帧数保持在较为稳定的水平下。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。



    §4.10 GTX 470 VS. Radeon HD 5850

      通过测试表明,GeForce GTX 470在极多数游戏中的表现均可大幅领先HD5850,仅极少数项目落后,综合来看GTX 470平均领先HD5850约10.44%;

      由于最低帧数对游戏体验存在举足的影响,故我们增加了最低帧数的对比,在对比中可以看到GTX 470与HD5850的差距拉得更大,平均达到了9.72%。由此可见,Fermi架构对ROP进行了更进一步的优化,反映在游戏中则能够使最低帧数得到保证。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。



    §4.11 GTX 470 VS. HD5870

      在与AMD的单核心旗舰HD5870的较量中,GTX 470平均落后对手约4.88%左右,在多数的游戏中不敌HD5870。而最新推出的Unigine Heaven v2.0则成为了NVIDIA显卡的强项之一。而在最低帧数的较量中GTX 470则落后HD5870约6.33%。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。



    §4.12 GTX 480 VS. GTX 470

      两款旗舰产品的较量中,毫无疑问GTX 480在所有项目中均领先于GTX 470,平均领先幅度达到24.11%,而最低帧数领先幅度为23.67%,可见两款显卡在游戏中的最低帧数均保持在稳定的水平。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。



    §4.13 GTX 480 VS. Radeon HD 5870

      GTX 480平均领先HD5870约14.21%的幅度,在绝大部分游戏中均大幅领先后者, 而最低帧数则平均领先11.9%左右。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。



    §4.14 GTX 480 VS. Radeon HD 5970

      在与双核心旗舰Radoen HD 5970的角力中,GTX 480在绝大多数的项目中均落后,平均落后幅度为7.55%。尤为突出的是,在Heaven v2.0的测试中,Extreme Tessellation级别设置下GTX 480反胜HD5970,领先幅度达到最大21.69%,可见在高级别的Tessellation项目中,即使是双核心的HD5970亦显得力不从心。

      小插曲:在测试期间,我们的Dell 3007FWP显示器出现了故障,两个DVI接口均不能使用,而HDMI为1.2标准并不能上2560X1600分辨率,故在测试HD5870/5850使用了DP接口,但HD5970并不具备标准DP接口(配备min-DP),故在HD5970的对比成绩中非常遗憾地失去了2560X1600分辨率的设置。

      * 上表中3DMarkVantage的成绩以及差距太大的数据(标红)并未列入最后的平均值统计。



    Fermi:视觉计算王国的缔造者

      在对手的DirectX 11显卡发布的半年后,NVIDIA才在今天“纸面发布”了GF100显卡,它们的首款DirectX 11显卡。单纯从商业角度来说,NVIDIA无疑落后很多,然而我们在全面了解Fermi架构的GF100后,完全能理解NVIDIA的苦心孤诣。


      · 革命性地将光线追踪带入真实应用

      正如前面所说的,真正能带给玩家视觉震撼的是流光溢彩的电影级画面和栩栩如生的物体动作,光线追踪和物理计算在目前看来是唯一选择,任何DirectX下的技术都难以与之匹敌甚至不值一提。虽然我们在文中强调了DirectX 11的Tessellation特性在几何真实性方面带来的益处,但是相信很多人都觉得那不过是可有可无的绵上添花而已。

      NVIDIA甘冒难产的风险重新打造了全新一代显卡架构,GF100这个怪兽级的GPU具备高度并行化的设计,凭借L1和全局L2高速缓存,可以解决诸如光线追踪、物理效果等算法无法利用共享内存的问题,加下并行内核程序执行机制和超快的上下文切换速度,NVIDIA首次将光线追踪在PC上应用变成可能。

      PhysX物理加速技术NVIDIA早已开始行动,这次庞大而复杂的Fermi又革命性地将光线追踪带来,在未来几年内GPU真正可依赖的两项GPU视觉技术上,NVIDIA都远远地将对手甩在身后,专心缔造着自己的视觉计算王国。

      世界并行计算研究实验室总监Dave Patterson如是说:“我相信历史会将Fermi作为一个里程碑载入史册。”几年后再回首,你会不会记得这句话?

      · 世界上最快的GPU

      以目前的情况而言,GeForce GTX 480无疑是这个世界上最快的GPU,对于那些关注游戏性能的玩家,这是相当令人鼓舞的。GF100提供了更好的性能、更好的画质和更优秀的几何真实效果。

      30亿个晶体管的GF100有着恐怖的功耗和发热量,在你选购它之前,一定记得先选好一个强劲的电源,比如GTX 480,至少要一个600W的电源来伺候它。

      · GF100只是一个开始

      在我们看来,Fermi架构是相当具有创造性和远见性的,在未来的二三年内,AMD会越发相形见绌。然而现在的GF100还面临诸多困难,消费者甚至媒体都是很现实的,NVIDIA在DirectX 11显卡市场上的劣势、GF100夸张的功耗,甚至那传说中的良率,都可能会让它饱受困扰。

      对于NVIDIA来说,GF100仅仅是一个开始……

      · GeForce GTX 480/GTX 470市场状况

      今天只是GeForce GTX 480/GTX 470显卡的纸面发布时间,真正供货时候在4月6日,GTX 480的发售时间可能要更晚些。

      据了解本次GeForce GTX 480的产品发布合作伙伴在中国一共是8家厂商,消费者可以关注以下8家厂商以保证可以第一时间的买到GeForce GTX 480。它们分别是索泰、影驰、Inno3D、微星、七彩虹、翔升、耕昇和技嘉。

      具体的价格,GTX 470在2888-2999元,GTX 480在3888-3999元间。

    ×
    热门文章
    1Thermaltake钢影透EX机箱开售:支持360水冷,10风扇位,299元
    2IGN对横尾太郎与金亨泰进行访谈,横尾太郎表示日本厂商不习惯使用西方技术
    3Win11 AI资源管理器或只支持骁龙X Elite,Intel和AMD处理器可能无法启用
    4英特尔宣布完成业界首台High-NA EUV光刻机组装工作,目前正在进行校准步骤
    5消息称一加 Ace 3 Pro将采用全新的家族式外观设计,且定位不低
    62024Q1中国显示器市场报告出炉:AOC排名第一,整体均价下行
    7优派VX2758-2K-PRO显示器上市:2K@185Hz满血小金刚,首发849元
    8安耐美PlatiGemini 1200W电源评测:全球首款ATX 3.1&12VO双模电源
    9机构预计华为Pura 70系列年内出货量超千万,力助其重夺中国市场榜首位置
    已有 48 条评论,共 57 人参与。
    登录快速注册 后发表评论
    • 游客  2012-08-09 02:54

      该评论年代久远,荒废失修,暂不可见。

      已有1次举报

      支持(1)  |   反对(0)  |   举报  |   回复

      48#

    • 游客  2010-04-15 21:17

      该评论年代久远,荒废失修,暂不可见。

      已有1次举报

      支持(1)  |   反对(0)  |   举报  |   回复

      47#

    • 游客  2010-04-05 12:58

      该评论年代久远,荒废失修,暂不可见。

      支持(1)  |   反对(0)  |   举报  |   回复

      46#

    • 游客  2010-03-31 10:50

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(1)  |   举报  |   回复

      45#

    • 超能网友管理员 2010-03-31 09:16    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(1)  |   举报  |   回复

      44#

    • 游客  2010-03-30 20:15

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(1)  |   举报  |   回复

      43#

    • 游客  2010-03-29 23:44

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      42#

    • 游客  2010-03-29 15:30

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      41#

    • 游客  2010-03-29 14:49

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      40#

    • 游客  2010-03-29 13:03

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      39#

    • 超能网友一代宗师 2010-03-29 11:03    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      38#

    • 游客  2010-03-28 22:12

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      37#

    • 超能网友大学生 2010-03-28 19:39    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      36#

    • 超能网友教授 2010-03-28 13:51    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      35#

    • 游客  2010-03-28 13:29

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      34#

    • 游客  2010-03-28 12:28

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      33#

    • 游客  2010-03-28 10:35

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      32#

    • 游客  2010-03-27 14:52

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      31#

    • 超能网友管理员 2010-03-27 14:26    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      30#

    • 超能网友初中生 2010-03-27 14:18    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      29#

    • 游客  2010-03-27 14:03

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      28#

    • 游客  2010-03-27 13:57

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      27#

    • 超能网友教授 2010-03-27 13:39    |  加入黑名单

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      26#

    • 游客  2010-03-27 13:11

      该评论年代久远,荒废失修,暂不可见。

      支持(1)  |   反对(0)  |   举报  |   回复

      25#

    • 游客  2010-03-27 12:47

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      24#

    • 游客  2010-03-27 12:43

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      23#

    • 游客  2010-03-27 12:15

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      22#

    • 游客  2010-03-27 12:13

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      21#

    • 游客  2010-03-27 11:36

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      20#

    • 游客  2010-03-27 11:30

      该评论年代久远,荒废失修,暂不可见。

      支持(0)  |   反对(0)  |   举报  |   回复

      19#

    加载更多评论

    登录 后发表评论,若无帐号可 快速注册 ,请留意 评论奖罚说明