1NVIDIA的小秘密?
前言:时隔五个月之后,GPU炼金试验室终于又和大家见面了。在先前的GPU炼金试验室中,我们揭开了Tahiti与Pitcairn的效率之谜,直面了Kepler架构对处理器的依赖以及新Scheduling过程的真相,那么在今天的炼金试验室中,我们又将面对哪个隐藏在现象背后的真相呢?
所谓隐藏在现象背后的真相,要从NVIDIA最近很热门的“小秘密”——非对称显存体系说起。
暑假带给我们的不仅有快乐的盛夏,还有NVIDIA全新发布的甜品级产品——GeForce GTX 660 Ti以及GeForce GTX 660。这两款面向甜品级的产品拥有许多新奇的特性,但并不是每一种特性都得到了所有人的理解。比如说新的非对称显存体系以及特异的PCB布局方案,就引起了人们不小的疑问甚至质疑。
“非对称的混搭设计巧妙地解决了显存容量问题,但其实也有隐忧。在对称设计中,每个控制器的显存容量都是相同的,很容易在所有控制器之间进行交错操作,达到子系统的性能最大化。而在非对称设计中,192-bit位宽、6GHz频率的总带宽为144.2GB/s,显存容量2GB的时候只有其中1.5GB可以享受到完全的交错操作,剩下的512MB只能与单个内存控制器通信,所以带宽也就是总量的1/3,仅仅为48GB/s。”
这就是我们的媒体同行在文章中所提到的问题。如果GeForce GTX 660 Ti以及GeForce GTX 660采用的非对称显存体系以及PCB布局真的导致了这样的问题,那可是一件非同小可的事,它代表NVIDIA向市场投放了带有设计问题,甚至可以说是不成熟的产品,这不仅会严重影响GeForce GTX 660 Ti以及GeForce GTX 660的可购买性,还会影响到由Kepler其他产品积累起来的认同度。更为严重的是,NVIDIA竟然并未对此做出任何回应,也没有对新的非对称显存体系进行任何有效地更深入的说明。
难道这里面,确实有什么不可告人的“小秘密”?
揭开现象背后的秘密,将本质暴露给需要知道真相的读者,这是我们制作GPU炼金试验室最根本的目的。所以在本期的炼金试验室当中,我们将会继续以针对性的测试和对测试结果与现象的解读来为您还原全新非对称显存体系的本来面目。如果带宽问题的确存在,我们必须得把它揪出来以便让消费者能够明了真相,如果问题并不存在,我们起码也要明白到底发生了些什么。接下来,就让我们一起来面对这个“小秘密”吧。
2什么是“非对称显存”
● 什么是“非对称显存”
我们首先要弄清楚的问题,是究竟什么才叫“非对称显存体系”。
显存是由显存颗粒组成的,每颗显存都有固定的位宽和容量,常规显存体系会由显存颗粒数的不同组合来对应GPU的显存位宽总数。比如256bit/2048MB的显存体系,通常可以由8颗32bit/2048Mb的显存颗粒所组成,而384bit/3072MB显存体系则可以由12颗32bit/2048Mb的显存颗粒所组成。只要显存体系可以以同容量同位宽的显存颗粒打造,同时这些颗粒的位宽之和与GPU的显存位宽一致,我们就可以认为这是常规的对称显存体系。
空焊可以作为简单判断非对称显存体系的依据之一
所以简单地说,非对称显存体系就是指显存容量/颗粒与既有显存位宽无法完成对应,或者显存颗粒规格并不统一的显存体系。比如说192bit显存位宽通常可以对应768/1536/3072MB的显存体系,如果出现192bit/1024/2048MB的显存搭配状态,颗粒的总位宽和总容量无法一一对应时,我们就算是遇到“非对称”的显存体系了。
第一次引起我们注意的典型非对称显存产品是NVIDIA的GeForce GTX 550Ti,它拥有192bit的显存位宽,同时却具备了1024MB而非768MB的显存容量,其显存颗粒由4颗32bit/1024Mb显存颗粒搭配2颗32bit/2048Mb所组成。上个月以及本月中NVIDIA全新发布的GeForce GTX 660 Ti以及GeForce GTX 660同样采用了非对称显存体系,它们具有192bit显存位宽,同时使用了8颗2048Mb显存颗粒打造了192bit/2048MB显存体系。
采用192bit/1024MB非对称显存的GeForce GTX 550Ti
与其他“常规”的非对称显存不同,GeForce GTX 660 Ti以及GeForce GTX 660的显存布局更加奇特,8颗显存中有4颗在PCB板上错位分布,另外4颗则两两对应的分布在PCB板的正反面。前面我们所面对的问题,也就是对GeForce GTX 660/660 Ti显存布局以及实际显存带宽的质疑,正是由此而来的。
NVIDIA并没有在任何场合以及任何资料中对这种特异的显存布位进行说明,也没有对GeForce GTX 660 Ti以及GeForce GTX 660的真实显存带宽进行任何描述。看来,GeForce GTX 660 Ti以及GeForce GTX 660的显存谜题,只能由我们自己来解决了。
3GTX660/660Ti的显存到底有没有问题
● GTX660/660Ti的显存带宽到底有没有问题
既然问题出在“实际”带宽层面,怀疑的焦点在于有2颗显存颗粒只能享受到1/3的正常带宽,那么测试真实应用环境下的显存带宽就成了我们求证问题的出发点。只要获得了GeForce GTX 660 Ti以及GeForce GTX 660的实际显存带宽数据,并将之与采用常规对称显存体系的其他Kepler架构显卡进行比对,我们就可以判断所谓的带宽会出现瑕疵的问题是否存在了。
图形处理的本质其实就是GPU各单元对各种数学过程进行执行的集合,如果通过常规的图形化测试方法来获取数据,我们就会因为过于拘泥于“图形化”的形式而将测试过程以及结果都包含进一个完整的图形化处理和输出过程中,并因为这些过程的彼此干扰而失去最终结果的“纯净度”。只要绕开图形化的几何关联,直接测试构架底层单元执行对应数学过程的能力,我们才能获得更加准确的结果。
所以,我们决定和以往一样,采用基于Open CL的通用性能测试软件GPCBenchmark来完成数据的收集。尽管我们曾经并依旧对NVIDIA当前Kepler架构驱动的Open CL性能抱有极大的不满,但这些不满主要集中在shared等缓冲层面,所有不涉及shared的测试,比如显存读写能力以及在显存中进行的一系列操作测试而言,GPCBenchmark收集到的数据依旧是正常并且真实的。
我们使用的1.1版本GPCBenchmark测试程序请点此下载。
GeForce GTX 670有效带宽测试
由于不同的应用场合会带来不同的读写操作方式,但无论是图形过程还是通用计算过程都会依赖相同的拷贝过程,所以我们决定采用拷贝测试的结果作为实际带宽测试的基准参考数值。另外,我们引入了采用常规的对称显存布局,显存带宽并无问题的GeForce GTX 670作为对比组来进行数据对比。由于现实操作中的显存带宽必定会低于理论数值,因此只要获得GeForce GTX 660 Ti以及GeForce GTX 660的实际显存带宽与理论带宽之间的比例,并将之与GeForce GTX 670的数据比例进行对比,我们就能得出前两者的显存体系是否存在问题的结论了。很明显,如果GeForce GTX 660 Ti以及GeForce GTX 660的显存实际/理论性能比例低于GeForce GTX 670的比例,这就说明相对于GeForce GTX 660Ti的显存设计存在更低带宽的部分,而不是连续的维持在正常的带宽范围内,这样我们就有充分的理由怀疑GeForce GTX 660 Ti以及GeForce GTX 660在显存体系设计层面层面存在问题了。
测试结果并没有如问题提出者预期的那样,我们的测试显示,在相同主频的前提下,GeForce GTX 660的实际/理论显存带宽比例与GeForce GTX 670相当,而GeForce GTX 660 Ti的比例甚至还要高于GeForce GTX 670,这表明采用非对称显存体系的GeForce GTX 660 Ti不仅不存在所谓的“有2颗显存颗粒只能享受到1/3的正常带宽”的问题,其显存的有效性能比例或者说效率比例(注意,这里讨论的并不是绝对性能)甚至还要强于拥有正常显存体系的显卡。
4带宽竟然正常?这不科学!
● 带宽竟然正常?这不科学!
默认频率/带宽下的测试结果否定了NVIDIA新的非对称显存体系存在带宽问题的猜测,但我们并不甘心,我们要进一步确认非对称显存体系的带宽是正常的这一结论,于是我们决定延展我们的测试过程。
GeForce GTX 660 Ti同GeForce GTX 670一样基于GK104架构,两者拥有完全相同的运算单元结构和运行频率,除ROP差异之外,双方主要的差距来自MC单元数量不同所导致的显存带宽差距。既然外部环境相同,ROP对测试的影响又可以被我们剔除,进行同理论带宽环境下显存的实际性能比例对比就成了必然的选择。当GeForce GTX 660 Ti同GeForce GTX 670处在同样的显存带宽时,如果前者的实际显存带宽不低于后者,就能进一步证明非对称显存设计并没有遇到所谓的带宽问题。
160.4G带宽GeForce GTX 670实际显存带宽测试结果
160.4G带宽GeForce GTX 660Ti实际显存带宽测试结果
由于GeForce GTX 670的显存最低只能运行在5000MHz以上的频率,所以我们选择以这一频率下GeForce GTX 670的理论带宽值也就是160.4GB/S作为目标值,将GeForce GTX 660 Ti的显存超频至6682MHz并令其理论带宽达到这一数值,然后再对两者的实际拷贝带宽进行测试。
不同块尺寸下GeForce GTX 660Ti实际显存带宽曲线
测试结果也许会令问题的提出者们感到沮丧,但也会让GeForce GTX 660/660Ti的用户们感到庆幸——在相同理论带宽的前提下,采用非对称显存以及奇特显存布位的GeForce GTX 660 Ti的实际有效带宽甚至还要高于采用正常显存布局的GeForce GTX 670,非对称显存外表上的不和谐并没有导致任何实际问题的产生。
同理论带宽下CUDA-Z获取数据,作为GTX670,又为GTX660Ti
可是,这好像不太科学啊?公版GeForce GTX 660/660Ti的走线明明所有人都可以看到,确实两两对称分布在PCB正反面的四颗显存只拥有和非对称颗粒相同的走线,这么少的连线加上点对点的连接,这四颗显存不应该会有正常的带宽才对啊?难道说NVIDIA又用了什么“黑科技”把带宽问题给搞定了?
其实,这里根本没有什么黑科技。一切关于非对称显存带宽和GeForce GTX 660/660 Ti问题的起点,都来自问题提出者对于memory controller结构以及GDDR5显存特性的不理解。比如说吧,你知道什么叫“显存与memory controller的点对点连接”么?
5其实,点对点被“形而上”才不科学
● 其实,点对点被“形而上”才不科学
点对点连接代表了直连的一种形式,作为GDDR5最重要的特性,我们在很多地方都可以找到相关的资料,证明GDDR5显存颗粒与显存控制器(memory controller)之间的连接是点对点的。但这里有一个奇特的问题——处于芯片内部作为逻辑单元出现的memory controller,怎么就可以突破限制直接跟外部的物理显存直接进行连线呢?
GDDR5显存与memory controller的点对点连线,并不是一般人看到的或者想象到的直接以PCB走线—BGA引脚—memory controller单元的形式去进行的。在显存颗粒和memory controller之间,还存在着一个作为交换层的中间结构,随着存储体系的不断发展和演进,这层结构有了很多种称呼,我们在这里采用可编程逻辑解决方案供应商Xilinx(赛灵思)使用的名字,称其为memory controller Top Level(MC顶层,Xilinx简称MC_TOP,以下行文简称TOP LEVEL)。
memory controller Top Level(MC_TOP)与其他部件的关系
TOP LEVEL设计几乎伴随了整个内存/内存控制器的发展史,它对于memory controller有着十分重要的意义,GDDR5显存颗粒的所谓点对点连接指的就是与它的直连,真正构成memory controller体系的各种controller、FIFO等等都要与它互联才能真正连通显存,包括loopback在内的各种操作也将透过它来实现。有了TOP LEVEL,板卡制造商无需关心交换层的设计,他们只需要通过PCB布线简单的将芯片预留的特定引脚与显存引脚相连即可。由于TOP LEVEL是水平互联的,因此任意一个连接在TOP LEVEL上的memory controller也可以透过TOP LEVEL来实现对任意显存颗粒的直接操作。
不严谨的“点对点连接”的概念,以及PCB上的走线的直接性,让很多人产生了“GDDR5颗粒是点对点的,所以显存颗粒肯定是直接跟某特个特定的MC单元绑定直连”的错觉。GDDR5颗粒确实在一般描述中如字面意思上那样实现了与memory controller的点对点直连,但由于作为交换层的TOP LEVEL的存在,GDDR5显存颗粒实际上是与交换层而不是controller本身直连的。特定的memory controller也并没有跟特定的显存颗粒进行物理绑定,任意memory controller都可以透过TOP LEVEL对连在上面的所有显存颗粒进行控制。
在其他场合,TOP LEVEL也可以被称作MC Interface等等
正因为此,采用非对称显存布局的显卡在理论上可以不受连线细节影响,只要有正确位宽的显存颗粒被连接,MC就能拥有与位宽/频率相符的理论带宽。GeForce GTX 660/660Ti的显存体系运行在6008MHz上,因此192bit位宽的它们也就拥有了144.2GB/S的理论显存带宽。
在明确了所谓点对点直连的形势之后,特殊非对称显存体系理论带宽的问题已经解决了,但这并不是所有矛盾的终结——两两对称分布在PCB正反面的4颗显存颗粒的连线资源都只有其他4颗颗粒的一半,2颗显存颗粒共用一组连线是很明显的,就算理论带宽没有受到影响,实际操作过程中共用连线的2颗显存应该也会遇到延迟撞车的问题啊?延迟大到接近翻倍的话,这4颗显存颗粒的实际带宽不可能跟其他4颗显存颗粒一样啊?总不能说这里的线很粗很强大,一根线可以顶两根用吧。
很不幸,在GDDR5显存体系中,对于对称分布在PCB正反面的显存颗粒来说,“一根连线就是当两根来用的”。造成这样奇特结果的原因,来自GDDR5显存体系的一个基本特性——clamshell mode。
6另一块拼图——clamshell mode
● 另一块拼图——clamshell mode
在传统的显存颗粒中,一组Address/command只能允许memory controller连接一颗显存颗粒,这不仅意味着需要更多地连线来完成显存颗粒与GPU的连接,还意味着两颗处于同一组连线中的显存颗粒必须错开周期使用Address/command,同一周期只能有一颗显存颗粒进行动作。伴随着GDDR5显存体系的出现,clamshell mode的到来改变了这种局面。
clamshell mode
clamshell mode允许memory controller以常规以外的形式与显存颗粒互联,常规单颗显存连接时,该显存颗粒可以独占Address/command并运行在X32模式,亦即单32bit显存颗粒模式下,而当PCB正反面对称出现2颗显存颗粒时,clamshell mode可以在不增加连线的前提下令他们连接在同一组Address/command上并执行并行操作。clamshell mode下的两颗显存颗粒都运行在X16模式下,也就是说只要2颗出现在PCB正反面对称的显存颗粒都是16bit,那么它们就可以使用同一组Address/command并行进行动作,实际效果等同于容量翻倍的单颗32bit颗粒。
clamshell mode不会带来任何性能损失,因为它保留了完整的点对点高速总线的所有特性,两颗挂在同一组Address/command上的显存颗粒实际上可以被看成是一个整体。clamshell mode实现难度也非常低,共享Address/command接口可以很容易地通过过孔和使用镜像功能模式来实现,只要两颗显存颗粒的所有引脚都处在PCB正反面完全对称的位置上即可。
在clamshell mode下,GeForce GTX 660/660Ti上看似有问题的4颗2048Mb显存颗粒,实际上可以被看做是2颗32bit/4096Mb显存颗粒,这4颗不仅没有任何带宽和延迟方面的问题,在性能上也与常规的2颗显存颗粒完全一样。最重要的是——它们很明显比2颗4096Mb的显存颗粒要便宜得多。
7漂亮的“廉价”恰恰舞
● 漂亮的“廉价”恰恰舞
好吧,我们再来梳理一下事情的始末,一起看看到底发生了些什么吧——当人们看到GeForce GTX 660/660Ti上前所未见的,甚至是怎么看怎么别扭的非对称显存布局时,各种各样的关于原因和性能问题的疑问便应运而生了。可实际上,无论我们专门进行的针对性测试,还是其他更加常规的图形化测试过程,都没有能够找到似乎铁定存在的所谓显存带宽有问题的证据,为什么那么不和谐的布局并没有导致性能问题呢?
首先,字面意思上的GDDR5显存与memory controller点对点连接是没有任何错误的,因为TOP LEVEL在逻辑上属于memory controller的一部分。但由于TOP LEVEL的存在,显存颗粒其实是点对点的连接在了作为交换层出现的TOP LEVEL而不是controller或者FIFO之类单元上的,这导致了显存颗粒对memory controller的完全开放而非绑定。所以在理论带宽层面,非对称显存体系只要完成足够承载位宽数的互联,其理论带宽就不会出现问题。
“普适”的怪异显存布局
在解决了理论带宽的问题之后,clamshell mode为实际应用带宽问题,也就是GeForce GTX 660/660Ti显存颗粒不对称连线方式所带来的延迟问题提供了答案。clamshell mode允许2颗对称分布在PCB正反面的显存颗粒同时使用同一组Address/command进行并行操作,因此GeForce GTX 660/660Ti的实际显存带宽同样不存在任何问题,它可以保持与对称显存架构同样甚至更高一些的实际显存效率(再次强调,这里说的并不是实际显存性能,而是实际显存带宽与理论带宽之间的比例)。
与此同时,clamshell mode还顺便解释了GeForce GTX 660/660Ti怪异PCB布局——8颗显存以两两对称加两两错开的方式布置,完全是为了满足clamshell mode的基本特性需求。只要2颗显存颗粒对称分布在PCB正反面,它们就可以在clamshell mode下等效成一颗容量和位宽都翻倍的显存颗粒。GeForce GTX 660/660Ti的非对称显存体系只会产生4颗有这样需求的显存颗粒,因此另外4颗也就不需要采用同样的布置方式了。
所以你看,虽然新的非对称显存体系好像哪里都显得有些别扭,但由这种别扭产生的所谓新的非对称显存存在显存带宽问题的说法其实并不存在,NVIDIA没有启用任何意义上的所谓黑科技来掩盖什么问题,GeForce GTX 660/660Ti前所未见的显存布位也只是出于clamshell mode的基本需求,最重要的是,这么干不仅性能没有损失而且还非常得省钱。
性能和成本,NVIDIA成功地在这两个矛盾的对象之间跳了一场漂亮的恰恰舞,不仅维持了非对称显存体系的性能,还巧妙的利用各种既有的特性完成了成本的控制。也许这会加深你对NVIDIA这一论定价策略的负面情绪,但每个人都应该承认它这次干的确实漂亮……
8答案——在正确的时间地点做正确的事
● 答案——在正确的时间地点做正确的事
“黑科技”一直是伴随着Kepler架构的奇妙存在,每当遇到异于常规的现象,比如远高于过去的性能功耗比表现之类问题时,我们都会尝试寻找并最终获得NVIDIA引入的全新概念以及技术细节。但在本期的GPU炼金试验室中,我们没有遇到任何令人惊奇的“黑科技”。无论理论带宽、实际带宽还是成本,NVIDIA在GeForce GTX 660/660Ti解决问题的方法都来自“古老”的技术。
这次解决问题的功臣并不是“黑科技”
这种对古旧技术的巧妙搭配和应用,为我们展现了Kepler鲜为人知的另一面,“黑科技”并不是解决问题的万灵药,在充满了想象力和创造火花的同时,NVIDIA同样需要并且切实的在用踏踏实实的脚踏实地来解决各种各样的问题。不管你是不是N饭,不管你是否欣赏NVIDIA以及它的产品,不管你是不是觉得现在的N卡卖的好坑爹,你都要面对这样一个事实——在Kepler架构的产品中,NVIDIA用心了。
制作一款优秀的显卡产品最需要的并不是令人眼花缭乱的新概念,更不是空中楼阁一般的口号。在保持切实创新的基础上对既有技术进行恰当的组合,在正确的时间地点投注精力做正确的事情,只有这么做才能最终收获令人满意的产品。如果每一个研发GPU的厂商都能做到这一点,不仅用户将有机会获得更优秀的产品,我们一直反复回味的业界良性循环的状态也将从回忆中再次回到现实。
Unmatched Trace Length Routing
本期GPU炼金试验室对GeForce GTX 660/660Ti的非对称显存体系特征进行的解读,以及实测数据对解读的进一步验证和支撑,让我们消除了对其采用的全新非对称显存体系的各种疑惑和误解,同时还导致了许多伴生式的结论出现。比如说GeForce GTX 660/660Ti之所以可以以非常简单的PCB和周边用料轻松保证显存上到超过7000MHz甚至7500MHz的高频,就是得益于clamshell mode以及GDDR5的另一个特性:Unmatched Trace Length Routing(非强制匹配布线长度,可以让厂商部分放弃蛇形走线,改用长短各异的简单直线进行连接)共同作用的结果。更少的连线以及更低的布线难度不仅降低了对PCB以及成本的要求,更通过降低体系复杂度换取了更大的性能提升空间。这些结果一起向我们展现了一个信号——Kepler架构的定价空间下限以及性能空间上限,都还有相当大的可挖掘潜力。
放心吧,GeForce GTX 660 Ti并不存在显存问题
在发布GK106架构之后,Kepler架构线的完整亮相标志着AMD与NVIDIA正式全面战争的开始。既然Kepler架构的成功设计令其拥有了更大的降价空间和性能提升可能,能不能将这些要素转化成对消费者更加有利的现实就成了摆在NVIDIA面前的问题。我们渴望获得更好产品的期许,能得到怎样的回应呢?让我们拭目以待吧。
9NVIDIA GeForce GTX 660详细参数
GeForce GTX 660和GeForce GTX 660 Ti具备相同的位宽、相同的显存频率、相同的显存理论带宽,这会拥有相同的实际显存效能吗?《炼金实验室》栏目为您揭开这不为人知的背后秘密,也许你会发现导致NVIDIA和AMD在这一代产品中PCB Layout上的本质区别。
推荐经销商