质变!解析GeForce GTX 680强大之处

PChome | 编辑: 马振华 2012-06-15 06:00:00原创 返回原文

CX

开普勒为何如此强?推翻五年前理念

NVIDIA与AMD的第三代DX11显卡图形性能可以说胜负已分,结果是以NVIDIA“开普勒”架构的Geforce GTX 680在功耗控制和性能表现方面完压HD7970而收场。尽管PCHOME以及各家媒体同行早已对这两款产品做了详尽的首测,但同时也留下了一些蹊跷未获解析,后续我们暂时没有机会从厂商的工程师那儿获取标准答案,不过笔者仍然觉得能以媒体人的敏锐嗅觉猜个八九不离十。

● 开普勒架构的改革颠覆了5年前的决策,NVIDIA表示应该改变了

这事儿还得从2006年底说起。当年NVIDIA和AMD的GPU架构模式纷纷跨入统一渲染时代,NVIDIA拿出了基于此设计理念的首款产品——G80,而AMD则是R600。

NVIDIA首款采用统一渲染架构的芯片G80,用于Geforce 8系列产品

统一渲染让GPU内部的ALU不再分为顶点渲染和像素渲染,因为这两种工作槽并不会总是同时占满,部分闲置的情况不可避免。而由同一种流处理器担任这两种工作,可以根据不同的任务量随时转换角色,最终获得更好的资源利用率。

虽然NVIDIA和AMD都是奔着统一渲染的理念而去,但在实现方式的细节上却分道扬镳,前者采用了1D MIMD的标量结构,后者则是1D+4D SIMD的矢量结构。简单地来说,NVIDIA的结构是多指令多数据流,每个流处理器,即CUDA核心,各自接收独立的指令一次执行一个1D标量操作。AMD的1D+4D矢量结构则是每个Stream流处理器中有五个指令槽,一次最多可执行一个4D矢量操作。

无论是像素着色还是顶点着色,都是由四个位元数据来确定所要获得的结果。如像素着色是以R/G/B和α坐标来确定颜色;顶点着色是由X/Y/Z/W坐标来确定空间。因此从理论上来讲,AMD的矢量结构更适合游戏中的图形计算。遗憾的是图形计算指令并不总是4D的,也有很多3D、2D乃至1D的运算,这便导致矢量流处理器的一次操作中它的五个指令槽不一定被全部占满,始终无法确保发挥出100%的效能,在许多游戏中表现出性能不稳定。

相比之下,NVIDIA的做法简单直接,驱动程序将所有的图形指令拆分成若干1D指令,再由那些标量流处理器分别接收不同的指令进行操作。尽管一个CUDA核心一次只能发射一个顶点或像素的位元数据,但起码能保证没有ALU闲置,更容易适应各种形式的指令。这种做法让游戏编程者的工作挥洒自如,也使NVIDIA的GPU在通用计算领域极易展开工作。

鱼和熊掌不可兼得,既然每个CUDA核心在一次操作中完成的工作有限,那么为了提高GPU整体性能,NVIDIA不得不采取两个手段:第一,在芯片中集成更多的CUDA核心。于是每一代的产品中,Geforce显卡的CUDA核心数量总是比同定位的Radeon显卡的流处理单元多不少,如GTX480是480个,HD5870只有320个;第二,让CUDA核心以远高于其它组件的频率运行,从Fermi架构开始,这个数值确立为ROP频率的两倍。付出的代价便是数代产品饱受功耗和发热问题的困扰,此项指标几乎一直成为被竞争对手攻击的软肋。

NVIDIA和AMD在统一渲染领域不同方向的探索中各自遭遇了麻烦,也各自获得了成就,相信它们一定时刻关注着彼此的情况,研究彼此的产品。如今看看放在眼前的GTX680和HD7970,难道潜移默化之中它们开始向一个方向靠拢?

发展历程:欲知Kepler先回访Fermi

● 欲知开普勒先回访费米

Kepler架构虽然是NVIDIA的新生代产物,在设计思路上颠覆了许多Fermi的元素,但不能说它们没有联系。Fermi是NVIDIA为了支持DX11全新设计的产品,它摒弃了GT200的模式,结构变化非常大。在Fermi中,NVIDIA提出GPC和SM的结构概念,以此将GPU分成若干平级并行的工作组,每一个SM有32个CUDA核心,而每一个GPC则有4个SM。重点在于为了尽可能地满足DX11曲面细分计算需求,NVIDIA为每一个SM组配置了独立的几何引擎,并且拥有独立的纹理单元。相较之下,AMD当时的做法只是沿用了RV770的设计模式,扩充了流处理器,在工作网路上加入一个单一的几何引擎来获得对DX11的支持。

NVIDIA GF100/GF110芯片架构

AMD Cypress芯片架构(HD5800)

这两种截然不同的做法导致的结果是,针对曲面细分的理论测试项目中,面对巨大的工作压力,Fermi架构表现优异,AMD不堪重负,以至于NVIDIA一度不愿意承认竞争对手产品也算是真正的DX11显卡。可是实际应用中,游戏开发者为了权衡DX游戏的硬件适应范围,曲面细分量不会设置太多,通常只用在一些特定的效果表现上,因此Fermi的优势很难找到用武之地。

GF100/GF110与GF104的SM组构成

NVIDIA无法不正视这个问题,于是在随后推出的中高端芯片上做出了改进的尝试,GF104/GF114将SM内的CUDA数量增加到48个,但SM只有八个。因为SM少,与其对应的几何引擎“Polymorph”数量也减少,相当于调整了曲面细分器和流处理器之间的配比,实际应用中的结果令人相当满意。

简化SP增加其数量 AMD也借鉴NV?

● AMD也借鉴NVIDIA? 1D+4D架构繁琐又低效,VLIW4诞生

从HD6970开始,AMD在Cayman核心上终于放弃了坚持许久的VILW5流处理器结构,取而代之的是VILW4,即由1D+4D变成了4D。它们最明显的区别就是去掉了体积最大、可同时处理普通整数/浮点操作和超越操作的第五个逻辑流处理器:特殊功能T单元(SFU)。这样每个流处理器单元中可以一次性处理的普通整数/浮点操作数从五个减少到四个,原本SFU负责的指令(如超越指令)可由其中三个流处理器合并起来代替。

从RV600到Tahiti,AMD流处理器单元结构变化

事实上AMD新架构是将流处理器简化了,其中四个指令槽性质相同,编译器不需要考虑它们和SFU的差别,令资源调度更加简单,对图形程序的适应性增强,提高了效能。

HD6970 Cayman核心的流处理器单元结构

以上改进的好处不止于流处理器单元内部,从宏观上看,取消了SFU指令槽之后每个流处理器单元的体积缩小,这样原本占用的芯片面积可以用于集成更多的流处理器单元。HD5870的Cypress有320个流处理器单元,而HD6900的Cayman增加到了384个,核心面积只提高了59mm²,晶体管数量为26.4亿,随之可并行执行的线程数量、纹理单元数量等都相应提高。

CUDA数量爆翻 难道NV也借鉴了AMD?

● NVIDIA:CUDA数量暴增不再高频,它还是不是1D MIMD?

如果说AMD将流处理器单元简化并增加数量是借鉴了NVIDIA的CUDA架构,那NVIDIA做了什么呢?从下列图片中我们可以看到,从Fermi架构最初型号GF100到GF104,SM工作组内的CUDA内核以及其它单元配比发生了变化:流处理器更多,指令分派单元更多,纹理单元更多。

GTX 460和GTX 560Ti的GF104(GF114)芯片架构总布局

虽然GF104只是中高端显卡芯片,可显然NVIDIA在设计它时对原本的Fermi结构做了改进。整个原生芯片只有8个SM,相对应地Polymorph多形体引擎数量也减少一半,但每个SM中包含的ALU和相关组件数量增多。最后理论测试和实践测试都证明,无论是性能发挥还是功耗控制,新的模式更加出色,这便成为后来Kepler架构的雏形。

Geforce GTX 680的GK104芯片架构总布局

即便我们从GF104的成功中预感到什么,但当Kepler揭开面纱时,结果仍然令人吃惊。

Geforce GTX 680芯片GK104的SMX工作组

Kepler架构的首款芯片——GK104,乍一看结构与GF104几乎一模一样,有8组SM和8个Polymorph引擎。不过这一次,尝到甜头的NVIDIA如同打了鸡血一样,竟然在一个SM中集成了192个流处理器,纹理单元数量也激增到16个,并将这种爆炸式的SM称为SMX。

如此一来,GK104的流处理器总数达到了1536个,这一数字竟然与AMD Cayman核心流处理器的指令槽总数相当(注意是指令槽不是流处理器),是上一代旗舰GTX580的三倍,而纹理单元的数量也一反常态,与HD7970同为128个,是GTX 580的双倍。接下来更令人吃惊的是,此架构放弃了从G80时代开始的分频设定,流处理器和其它单元以相同的频率运行。

不知是否有人注意到,以上大刀阔斧的改革中还隐藏着令人困惑的谜团。

首先,GTX 580的512个流处理器已将它的功耗和发热逼到了40nm制程的极限,即便GK104采用28nm制程,但无论如何也不至于能在面积减小五分之二的前提下还能将流处理器数量提升至原来的三倍。

其次,谁都知道原生芯片的流处理器数量只和晶体管数目成正比,工艺制程的进步并不能让原有规模的晶体管实现更多相同的流处理器。GK104的晶体管数量只比GF110多了1/6,增加的1000多个流处理器从何而来?

Fermi和Kepler的流处理器单元本质不同,这恐怕是目前唯一合乎逻辑的解释。回想之前提到的NVIDIA和AMD互有借鉴的现象,不禁让人想到NVIDIA是吸纳了SIMD矢量指令设计?关于这个问题,只有Kepler的工程师才能给予准确解答。

量变终引发质变 NV中高端怒压AMD旗舰

● AMD不给力,NVIDIA中高端怒压对手旗舰

在今年年初AMD发布HD7970显卡时,目睹其性能后,NVIDIA的反应一反常态地平静,在市场宣传上几乎没有任何针对动作出现,只是淡淡地说了句:Kepler显卡一定会给大家出乎意料的惊喜。现在,我们确实感受到了这种惊喜,同时也觉察出些许猫腻。

之前NVIDIA代表新架构的旗舰GPU代号均以0收尾,无一例外,如G80、GT200、GF100、GF110;而以4收尾的型号通常是定位于中高端,以性价比为卖点,如GF104、GF114。作为Kepler架构的旗舰产品,GTX680的GPU竟然也是个以4收尾命名的芯片,实在令人诧异,难道NVIDIA原本计划中是把它当中高端卖的吗?

实际上早在Geforce GTX 680正式发布很早之前就从各种渠道传出Kepler的声音,最常见的版本是:NVIDIA的这次新架构先发布中高端产品,可能是GTX 660Ti或GTX 670Ti什么的。现在再一琢磨,不能不说这个传言确有几分属实,GK104果真曾打算作为中高端出售。

Geforce GTX 680 GK104芯片实物

看GK104芯片实物,DIE上没有相关型号印记,难道真的是因为很晚才确定型号?当然,这些略有隐晦的事情,咱们还是只能凭借自己的智慧来大胆猜测一下:造成这个结果的原因在AMD

看了以上成绩对比图,你应该明白了,Geforce GTX 680各方面性能基本完胜Radeon HD7970,正是因为这个原因,让NVIDIA觉得将GK104当做中高端出售实在是“屈才”了。于是决策者顺应市场上性能决定价值的自然规律,既然AMD不给力,那么原本2000元价位的GK104便成为3000多元的旗舰产品登场。而Kepler系列真正的大佬——GK100或者GK110将可能出现在未来的Geforce GTX 700系列产品中再次给对手一记重拳。否则让一个面积不到300mm²的芯片成为旗舰实在是有违NVIDIA“一贯追求极限”的风格。

Kepler这一代芯片与Fermi乃至于更早的Tesla相比,最大的变化就是CUDA内核突然呈爆炸式增长,由量变所引发的质变也有目共睹:原设计为中高端产品的性能击败对手旗舰这在GPU发展史上极为罕见,所以与奇说NVIDIA不厚道,不如怪NVIDIA太给力。

返回原文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑