MCPLive > 杂志文章 > GTX 970显卡“3.5GB显存门”揭秘!

GTX 970显卡“3.5GB显存门”揭秘!

2015-03-09夏松 王锴《微型计算机》2015年2月下

前不久,就在GTX 900系列凭Maxwell架构的优秀特性,在市场上呼风唤雨大红大紫的时候,GTX 970却突然爆出“3.5GB显存门”事件,让这款次旗舰高端显卡再次成为大家关注的焦点。在我们看来,原本事情能很快得到解决,但NVIDIA模糊的态度让大家更多了几分猜测,于是事情迅速发酵,发展成购买者“维权”、欲购买者观望、好事者看热闹、图谋不轨者落井下石的混乱场面。这反而激起了MC众编辑探究真相的兴趣,事情究竟是怎样的,对GTX 970的影响到底有多大?让我们来为你还原……

看不清真相?GTX 970显卡“3.5GB显存门”揭秘!
看不清真相?GTX 970显卡“3.5GB显存门”揭秘!

起因:

在NVIDIA发布GTX 980、GTX 970时,曾宣称两者除了流处理器规格和频率有差别外,其他诸如显存容量、光栅、缓存、显存控制器等各种规格都是一致的。但在入手GTX 970后,不少玩家发现在很多游戏和显卡信息侦测软件中,GTX 970的显存可使用量并不是标称的4GB容量,而只有3.5GB,同样的情况下查看GTX 980,则能完整显示出4GB容量。随后这一事件快速发酵,越来越多的媒体和资深玩家开始分析问题原因,而且越传越离奇。

问题症结:

归纳了多家媒体和论坛资深玩家的言论,我们发现大家讨论的焦点不外乎两个:1、GTX970到底有多大显存容量,难道是物理上4GB,但实际只能用到3.5GB?倘若如此,那么NVIDIA显然有欺骗消费者的嫌疑。2、如果GTX 970能够使用全部的4GB显存,那么相比起GTX 980来,它在使用超过3.5GB的另外0.5GB显存时,会不会出现效率下降,影响性能的问题?各大媒体和论坛中的各个大神发帖也基本都是针对这两个问题在进行分析和讨论。但综合当前的所有信息后,MC却发现大家的关注点有“歪楼”的嫌疑,NVIDIA的标注错误和GTX 970的问题完全是两回事。而其中GTX 970的问题也绝不仅仅是个显存容量的事儿,关系到新架构、新特性的一系列问题,那些歪楼到“爆显存”的讨论更是没有太大意义。难道玩家们已经被气愤冲昏了头,还是说有人故意误导大家?总之我们觉得问题应该主要有以下几点:

1、有关GTX 970的特性,NVIDIA的官方宣传中是否真的有问题,问题究竟在哪?

2、究竟什么原因导致了GTX 970遇到这些前所未有的问题?

3、GTX970到底能不能使用全部的4GB显存,如果可以,那为何软件只显示3.5GB?

4、GTX 970在使用3.5GB以上的显存时,和GTX 980相比会不会有明显差异,性能会不会暴降?
 
其实经过后续我们的分析,你会发现2、3点涉及到相关的底层技术,都跟新架构的设计有关,好了不废话,接下来让我们逐点解析。

刨根究底:

有关GTX 970的特性,NVIDIA的官方宣传中是否真的有问题,问题究竟在哪?

显存门问题爆发前,NVIDIA自己都还没发现他们的宣传出现了问题。实际上对行业有所了解的玩家应该知道,早从上两代显卡开始,NVIDIA就对显卡参数的标注进行了改革。通过官网发布的,都是面对大众用户的基本资料,涉及到的都是显卡的频率、流处理器数量等主要参数,这个部分其实是没有问题的。但NVIDIA官方还在给媒体和资深玩家送测显卡的过程中,通过评测建议书(Reviewer's Guide)发布了另一个更详细的参数介绍,包含晶体管数量、内核面积、二级缓存数量、ROP单元数量等底层规格。在这上面,NVIDIA确实错误标注了GTX 970的ROP单元和L2缓存的规格,让大家误认为GTX 970跟GTX 980一样,都具备了64个ROP单元和2MB共享缓存,实际上GTX 970只有56个ROP单元,对应的共享缓存也仅1.75MB。由于ROP、缓存这样的参数通常不太被关注,所以该问题一直没有被发现,直到本次3.5GB显存门事件,发现和这些参数有些关系,才被广大玩家知晓。NVIDIA第一时间就承认了这个失误,并进行了修正。到此,我们认为算得上NVIDIA错误,或者“欺骗消费者”的内容就是这些了。严格来说这些内容并没有直接提供给消费者,而是针对第一批评测GTX 970的少部分用户。但就目前来看,这似乎并不是本次显存门事件的重点,NVIDIA也没有给出有关这个错误的后续解决方案。反倒是GTX 970的显存容量成为了大家关注的焦点,因为大家之所以发现参数问题,也是因分析软件只能识别GTX 970的3.5GB显存开始的。OK,那让我们看看GTX 970的3.5GB问题究竟是怎么回事,剩下的0.5GB到底去哪了。

Tips:MCer怎么看?

3.5GB显存门事件的爆发对GTX 970的影响绝对是极大的,为此事件,MC临时增加的一项读者调查在短时间内就获得了相当多读者的关注和反馈。MC随机调查结果显示,受此事影响的读者就占了大约一半的比例。已经入手GTX 970的用户就占到了12%,其中的25%想要退货,剩下的75%还在等待官方的解决办法。本来准备入手GTX 970的读者占到随机调查样本总量的32%,其中超过34%的读者因此事件决定直接放弃GTX 970了。

MC随机调查结果图
MC随机调查结果图

究竟是什么原因导致了GTX 970遇到这些前所未有的问题?

为什么GTX 970明明具备完整的256bit显存控制器,拥有8颗显存颗粒,但不少软件检测中只显示3.5GB显存可用?要回答这个问题,必须从GM204核心的底层设计说起。相比此前的显示核心设计,在GTX970上多了一个我们之前从未听说过的结构—显存纵横交换矩阵(Maxwell memory crossbar)。正是这个结构,为GTX 970争取了更多的显存控制器和灵活的核心数量匹配问题,但也因此导致了显存门事件。

从NVIDIA官方给出的Maxwell显存纵横交换矩阵架构示意图中可以看出显存纵横交换矩阵在GPU的底层架构上是如何分布的,图中清晰地表明了GTX 970中这种矩阵中的各个单元分布形态。在完整的结构下,图示上方共有16组GM204的SMM流处理器阵列连接到中间的交换矩阵上,而在矩阵下方则有4组ROP、MC单元(图中标注MC,表示与显存控制器相关联的ROP),每一组ROP、MC单元都由相对固定的L2单元用以连接矩阵。请注意,每一颗GTX 970显卡的GPU所禁用的L2单元以及SMM阵列单元都不尽相同,可能是1、3、5也可能是2、4、6。不过宏观上来看,它们是一致的,无论怎样,在GTX 970的显存纵横交换矩阵中,总有一些单元是被禁用了的,也就是我们常说的屏蔽。

那么究竟什么是显存纵横交换矩阵?简单点理解就是在显存控制器和真正的计算核心之间架设的一条数据通道。以往显存中的数据要抵达计算核心,是通过显存控制器—缓存—计算核心,现在是显存控制器—缓存—交换矩阵—计算核心。增加这一层有什么好处?实际上它让ROP与显存控制器之间不再是生硬的绑定关系,能够避免在以前的GTX 660等显卡上出现的192bit“畸形”位宽而设计。以往要阉割核心计算单元和ROP后端,就必须连同显存控制器一同阉割。而现在的灵活搭配机制,使得NVIDIA能够禁用部分光栅单元(ROP)和内存控制器(MC)区域,且不影响显存控制器位宽。当然,这种设计并不完美,随意阉割并不意味着缺少部分ROP单元的GTX 970的表现能跟GTX 980完全一样,它有一个特别之处—会导致显存分段分区。

虽然没有硬性绑定,但每组计算单元、ROP和缓存的模块,都划分了与之对应的显存控制器和显存空间,这样整个系统才能如传统设计一样高效率工作。很明显,在阉割掉一部分计算单元、ROP和缓存的模块后,与他们对应的显存控制器和显存空间就落单了。为此,NVIDIA才将GTX 970标配的4GB显存分为了两个部分,具备完好对应关系的就是第一部分,拥有高性能的3.5GB显存分区,NVIDIA将这部分称为显存分区0。而另一部分就是失去对应,必须通过复用通道等办法才能访问的闲置空间,称为分区1,共有0.5GB,也就是GTX 970所支持的4GB显存的余下部分。而这0.5GB的显存分区由于需要通过特殊调用方式才能访问,自然在性能上难以和分区0相提并论。而这,也正是造成此前各大媒体相竞报道GTX 970存在3.5GB显存门的正真原罪。

NVIDIA官方给出的Maxwell显存纵横交换矩阵架构示意图。
NVIDIA官方给出的Maxwell显存纵横交换矩阵架构示意图。

详细点说,在任何情况下,SMM阵列与ROP、MC单元都是通过交换矩阵进行互通连接工作的,此前所说的GTX 970显存分区问题,其实就是有关于ROP、MC单元的问题。SMM阵列本身并不对GTX 970的显存配置有任何的影响,而中间的交换矩阵(Crossbar)也只是关心到底有多少ROP、MC单元在与其通信而已。

前面提到了,交换矩阵带来了灵活性,让NVIDIA从Maxwell架构开始拥有了独立禁用ROP、L2单元中某一部分的特性。这样就在之前的全开或全关之外带来了第三个选择—禁用一个ROP、MC单元中的某些功能,比如禁用一组L2单元,让一组ROP、MC单元由两个显存控制器和一个L2单元构成。同时需要注意,两个显存控制器单元仍然是捆绑在一起的,禁用其中一个,势必导致禁用整个单元的后果。NVIDIA在GTX 970中禁用了1个L2单元,减少了8个ROP单元和256KB L2缓存。所以GTX 970只剩下56个ROP单元,分布在4个ROP、MC区域内,总共拥有1.75MB L2缓存。缺少了一个L2单元,但NVIDIA还是宣称GTX 970仍然能提供256bit的显存带宽和224GB/s联合显存带宽,也就意味着在GTX 970中,每一个显存控制器都是活跃的,即使有哪个显存控制器对应的L2单元被屏蔽也不影响显存控制器的正常工作。不过在GTX 980中,每一个32位的内存通道都需要通过与其对应的L2单元直连到交换矩阵上,但在GTX 970上,却产生了麻烦—7个交换矩阵接口却有8个32位的内存控制器通道,这该如何是好?为此,NVIDIA干脆对GTX 970的显存交换矩阵硬件结构进行了“分区”—将7个完整的ROP、MC单元单独划分出来,每个单元负责0.5GB的显存,也就是此前所说的3.5GB显存区,这个区域的所有功能都是完整的,与GTX 980没有任何的差别。而对于后一个区域,则是所谓的“阉割区”,拥有0.5GB显存的控制权,缺少一个L2单元,只能通过复用另一个L2连接到矩阵才能被SMM单元所访问。

交换矩阵机制的存在,让矩阵的接口以及L2连接端口具备访问两个通道数据的能力,也正是这种复用特性,让它不必关闭“多余”的显存控制器。但很显然,对于缺少了一个连接到矩阵上的L2单元来说,肯定不可能让1个矩阵接口在同一时间处理来自两个显存通道的数据。一次循环中只能处理1个读取以及1个写入的操作请求,另一个通道中的数据显然就会被闲置并延后处理。这也就是为什么说原理上分析,剩下的0.5GB显存工作在低性能状态,难以和分区0中的3.5GB相提并论的原因。

由此看,NVIDIA所说的GTX 970拥有224GB/s显存带宽,具备完整的256bit显存控制器以及全部的4GB显存空间从技术上来说是说得通的。但问题就在于由于ROP、MC单元被分割为了7+1的结构,因此它在实际工作中是不可能正真达到224GB/s的带宽。在纯读取的情况下,GTX 970在3.5GB显存段可以达到196GB/s的带宽(7000MHz×7个端口×32位),剩下的0.5GB显存段虽也能提供28GB/s的读取带宽(7000MHz×1端口×32位),但是它们却不能在一个时刻同时工作。这就是一个典型的XOR异域运算法则,写入操作过程中也应该同理。

GTX 970削减了三组SM阵列,占GM204核心的3/16,但是ROP和缓存单元只削减了1/8。
GTX 970削减了三组SM阵列,占GM204核心的3/16,但是ROP和缓存单元只削减了1/8。

于是问题就来了,很明显,弱势的0.5GB显存段的存在会影响3.5GB显存的整体性能发挥。举个例子来说,假如我们同时对3.5GB显存段和0.5GB显存段发出读取的指令,对于带宽远低于3.5GB显存段的0.5GB显存段来说,在一个指令循环中它就会严重影响3.5GB显存段的执行效率,如果没有清除阻塞的指令存在,3.5GB显存段就将陷入空闲时间。而且0.5GB显存段的读取时间越久,3.5GB显存段的利用率就越低,效率也就越低,这就变相降低了3.5GB显存段的带宽。为此NVIDIA不得不设定GTX 970显卡在实际工作中会优先调用3.5GB显存空间,只有在此空间使用完之后才会开放剩下的0.5GB空间。这也就是为什么不少软件显示GTX 970的显存可用空间总量只有3.5GB的原因。到此,其实我们已经回答了我们的第三个问题“3、GTX970到底能不能使用全部的4GB显存,如果可以,那为何软件会只显示3.5GB?”

坦白讲,NVIDIA的这种不平衡显存配置也不是第一次出现了,远的有GTX 500系列,稍近一点的GTX 660/660 Ti系列其实也或多或少存在类似问题。以GTX 660Ti为例,NVIDIA为其配置了3个显存控制单元(6个通道)及2GB的显存,这样势必产生有一个内存控制单元用两个通道负责8Gb显存,而其余两个通道每个通道负责4Gb显存的问题。虽然NVIDIA从未正面解释过这类问题,但这与GTX 970的情况在本质上没有太大区别—都是基于不平衡带宽的设置。只是在GTX 970这种高端卡上,我们第一次重视这种问题,而此前对这类问题并未深究而已。

GTX 660上其实也出现过类似的显存不均匀分配问题。
GTX 660上其实也出现过类似的显存不均匀分配问题。

至于NVIDIA为何要采用这种配置来推出GTX 970显卡,或许直接和经济效益相关。如果没有这种部分禁用单元的技术,NVIDIA将只能推出完整核心产品,如GTX 980,稍有瑕疵就会被抛弃,这无疑会大幅降低晶圆生产的良品率,成本难以接受。而这种部分禁用单元的技术,让NVIDIA有了更多的选择,对于那些存在部分瑕疵的芯片也能在尽可能保持高规格的情况下物尽其用,不至于因为一个L2单元的瑕疵而毁掉整个MC模块甚至整块芯片。如果一定要坚持绝对平衡的配置的话,那后的结果很可能GTX 970又是一个规格比现在更低,且只有192bit显存位宽的奇特核心。

GTX 970在使用3.5GB以上的显存时,和GTX 980相比会不会有明显差异,性能会不会暴降?

后这个问题,就理论分析来看,貌似已经回答了,我们认为GTX 970的设计应该会对剩下的0.5GB显存的使用效率带来负面影响。但是具体影响有多大,这个部分对动态的实时工况的影响系数是多少等等更深层次的问题我们没法解答。在NVIDIA的架构师们给出更详细、精确的数据之前,我们只有通过实际的游戏测试来简单验证,因为测试过程和统计结果的某些不可控误差,这种对比其实并不绝对严谨。但这足够代表广大GTX 970用户在真正遇到超3.5GB显存运用中的情况,可以当作一个客观参考。

想要真实体验,我们首先要找出显存占用量能大于3.5GB的应用。然后通过调节特效选项,来让这些应用处于小于3.5GB显存占用和占用量介于3.5GB~4GB间的两种状态。后分别在两种状态下测试GTX970、GTX 980,通过对比GTX 970、GTX 980分别在这两种状态下的性能差距,分析GTX 970是否明显受到显存系统影响,进而出现性能下降幅度比GTX 980大的情况。

这里不得不说,相比分析数据,找到能超过3.5GB显存占用的测试场景和应用平台相对更难。终我们在5K显示器的超高分辨率帮助下,在《怪物猎人online》、《Crysis 3》和3DMark自定义模式中找到了合适的测试设置。

具体设置如下:

《3DMark FireStrike》显存占用3.5GB以内:5120×2880分辨率、曲面细分1、阴影贴图1024、体积照明1、粒子照明1、景深质量1

《3DMark FireStrike》显存占用3.5GB~4GB:5120×2880分辨率、曲面细分5、阴影贴图1024、体积照明6、粒子照明10、景深质量5

《怪物猎人online》显存占用3.5GB内:5120×2880分辨率、抗锯齿SMAA

《怪物猎人online》显存占用3.5GB~4GB:5120×2880分辨率、抗锯齿4×MSAA

《Crysis 3》显存占用3.5GB内:5120×2880分辨率、特效高、16×AF、抗锯齿2×MSAA

《Crysis 3》显存占用3.5GB~4GB:5120×2880分辨率、特效高、16×AF、抗锯齿4×MSAA

超3.5GB显存占用量前后GTX 970、GTX 980性能测试成绩对比一览
超3.5GB显存占用量前后GTX 970、GTX 980性能测试成绩对比一览

很显然,在调高特效让显存占用量超过3.5GB之后,无论是GTX 970还是GTX 980都免不了成绩下降。而且就我们体验的三款应用来看,超越3.5GB显存前后,GTX 970和GTX 980的性能跌幅基本相当。显存占用超3.5GB之后,GTX 970的成绩平均下跌到超越前的82%,GTX 980的成绩也平均下跌到超越前的82.4%。可以说纵向比较中, GTX 980和GTX 970各自的下跌幅度差异并不大。横向对比,超越3.5GB前,GTX 970在三款应用中落后GTX 980平均约17%。显存占用超过3.5GB后,GTX 970相比GTX 980平均落后幅度小幅度增加到17.4%。这个和我们此前的GTX 980、GTX 970对比测试中,两者性能差距基本在16%~18%之间基本吻合,要说多跌出的0.04%,有可能就是显存性能产生的差距,但也很可能是仅仅是测试误差。总之,这样的实际表现很难证明交叉矩阵的设计存在“缺陷”,也许显存通道复用的影响本就这么小,也很可能我们这种实际体验对这个问题的探讨来说还不够严谨和专业。

MC点评:

至此,我们觉得有关此事件的4个主要问题都已经解答完毕。GTX 970在芯片设计层面上也确实存可能让部分显存性能下降的问题。但实际的体验中,GTX 970究竟有3.5GB显存还是4GB显存的差别不大,因为绝大多多数玩家用不到5K分辨率加极限画质的设定。更重要的是,虽然分高低性能差异,但剩下的0.5GB显存也确实能被GTX 970调用,这一点NVIDIA的宣传谈不上错误。后不得不说,NVIDIA也确实有需要道歉的地方,至少官方给出的Reviewer's Guide中确实标错了GTX 970的参数,看起来有些误导消费者的嫌疑。但必须要承认的是,因此而闹出的3.5GB显存门事件对GTX 970的性能其实没有太多实质上的影响,更多地存在于理论分析上。综上就是MC分析和测试的结果。至于GTX 970究竟是不是一款性价比、能耗比不错的高端卡,它的表现有目共睹,相信玩家完全可以自行判断。只是我们确实不希望NVIDIA这样的上游厂商再犯类似的低级错误,也希望NVIDIA能完美解决这次错标参数的问题,拿出一个顶级芯片厂商该有的大气量。

分享到:

用户评论

用户名:

密码: