规格缩水?显存问题?NVIDIA GTX970风波始

  • 来源:PC电脑王
  • 关键字:显存,NVIDIA,NVIDIA GTX970
  • 发布时间:2015-04-11 08:08

  作为NVIDIA革命性第二代Maxwell架构的次旗舰产品,GTX970凭借强劲的性能和合理的功耗带来了非常优秀的能耗比,自上市起就成为了大家关注的焦点,一度被视为极为完美的显卡。可是好景不长,前不久围绕GTX970的麻烦可不少,因为很多玩家发现其4GB显存只有3.5GB可以被充分利用,剩下的0.5GB似乎被忽略了。这一下在玩家圈中炸开了锅,玩家们纷纷怀疑,这是遇到了质量问题?还是产品设计缺陷?抑或是驱动对新显卡的支持度不够好呢?下面跟小编一起来看看这起“显存门”风波的始末。

  1 显存问题掀起风波

  NVIDIA GTX970的风波要从年初说起。二代Maxwell架构的GTX980和970牢牢占据了单芯显卡性能前两名的宝座,自然是玩家们最关注的焦点。而细心的国外玩家在论坛指出,自己购买的GTX970似乎只能使用最多3.5GB的显存,剩下的0.5GB容量看上去似乎被忽略浪费掉了。并给出了GPU-Z的截图,图中显示该卡的显存占用一直在3.5GB。而通过overlock开发的一款测试程序发现,GTX970其实可以完全利用全部的4GB显存,但是最后0.5GB的性能会出现大幅度下滑。根据NVIDIA最早给出的技术文档,GTX970和GTX980的差别仅在于CUDA流处理器、纹理单元和核心频率,屏蔽了三组SMM单元以降低功耗,而显存位宽、显存大小、显存频率、L2缓存等均没有任何区别,一切都变得扑朔迷离起来。

  2 官方回应 竟是规格缩水

  随着显卡问题的发酵,NVIDIA也坐不住了,对此进行了官方回应,称:“虽然架构上GTX970和GTX980是完全一致的,GTX970配备了4GB独立显存,但是它的SM配置与GTX980不同,交叉开关(crossbar)资源也更少。为了优化此结构下的显存管理,我们将其分成了3.5GB、0.5GB两个部分。GPU会优先访问3.5GB部分。如果游戏需要的显存少于3.5GB,就只会访问第一部分,所以有些第三方工具显示显存占用量的时候就只会给出3.5GB,而在GTX980上会显示更多。如果游戏需要的显存超过3.5GB,我们就会同时使用两部分。我们知道大家担心这0.5GB显存的性能,而最好的测试就是看看实际游戏性能。”

  虽然语焉不详语意模糊,但还是在一定程度上解释了GTX970出现的显存问题,但是对喜欢刨根问底的技术宅同学来说,这个答案显然不能让他们满意,含糊不清的回应并没有解释到底哪里出现了问题,因为以前没遇到过这样的问题。

  NVIDIA GTX 980/970使用的都是GM204核心,显存规格完全一致,都是256bit位宽,4GB GDDR5容量,7GHz频率,由四组ROP/显存管理器负责,从这一点来看不会有什么不同。唯一的不同,就是GTX 970屏蔽了三组SMM阵列,但是这会和显存有关吗?以前的显卡也都是这么做的,并没有观察到类似的现象啊?

  要解释这个问题,就需要彻底的了解GTX970底层构架的基本规格,随着调查的进一步深入,NVIDIA很意外的告诉大家:“我们以前宣传的时候把GTX970的规格搞错了!”GTX970的错误在于,它的实际ROP单元只有56个,L2缓存也不是最初的和GTX980一样的2MB,而是1.75MB,减少了1/8,不过显存控制器没有变化,的确是256bit位宽,4GB显存。对于为什么会出现这样的错误,NVIDIA解释说技术销售团队在制作评测指南时并没有意识到Maxwell架构具备上具备部分禁用ROP/显存主控的功能,而这是Maxwell架构上才有的新功能,他们知道GTX970是有256bit位宽的,但不知道可以独立禁止ROP单元及2MBL2缓存,所以他们制作的文档中的错误就在NVIDIA各部门流传开了,并通过媒体传播开了。这个问题在过去的4个月中都没有被发现,直到本月初NVIDIA开始调查GTX970显存寻址的问题时才被注意到。PPT团队再一次背黑锅了。

  而由于GPU-Z、AIDA64这样知名的工具也因为对第二代Maxwell架构了解不够深入,而未能发现问题,GTX970检测中都标注着64个ROP单元。不过其实也有迹象的,比如说NVIDIA自己的Device Query CUDA开发工具,一直都准确报告了GTX970只有1.75MB的二级缓存,但是除了相关软硬件开发者,普通玩家和评测人员显然不会注意到这。3深度解析Maxwell架构显存架构限制问题NVIDIA的高级VPJonahAlben对这个问题做了详细解释。GTX970有13个SMM,每个SMM有128个SP,总计1664个SP。

  SMM通过Crossbar与L2连接,然后L2再连接显存控制器,GTX980有8个L2(共计2048KB)与MC连接(每个连接32bit),但GTX970只有7个L2(共计1792KB)与MC连接,最后2个MC共用一个L2。GTX980每个L2ROP模块有专门对应的32bit带宽的512MB区域,但GTX970由于少组L2,这样,最后一部分的512MB显存和MC就需要和前面一组512MB显存和MC共用L2,此时最后一组L2的请求数量就是前面其他L2的两倍,性能就会减半,这样就导致最后一组的512MB显存的利用率和使用效率会出现问题。

  为了解决这个问题,NVIDIA将内存分成两个区域,前面的七个DRAM3.5GB一个主区域,最后第八个DRAM0.5GB一个区域。

  显存访问时系统会依照1-2-3-4-5-6-7-1-2-3-4-5-6-7的顺序优先使用,这样可以使得带宽能够更为均衡地使用。这样的解决方案在3.5GB以下使用情况完美,但在3.5GB以上就会出现问题。通过Naibench mark浮点测试表明,最后0.5GB显存的速度仅有前面3.5GB的1/7,从正常的150GB/s下降到22.35GB/s。OS将显存分为三个区域,PCI-E访问前面的3.5GB主区域性能是后面的0.5GB的4倍,NVIDIA会让OS优先使用前面的3.5GB,最后的0.5GB到迫不得已不够用才会不情愿地使用。

  这就是为什么GTX970显卡的224GB/s带宽是技术上正确的,因为3.5GB部分显存的带宽是196GB/s(7GHz×7port×32bit),而0.5GB那部分读取速度是28GB/s,但这二者不是同时读取的,这实际上是一个XOR(异或)的情况。进一步来讲,由于0.5GB显存那部分不能跟3.5GB那部分同时读取,这又进一步导致显卡的等效带宽太低了,使用的0.5GB部分显存越多,3.5GB部分显存的等效带宽就会越低。

  最终的结果就是GTX970拥有独一无二的显存布局,需要操作系统及NVIDIA的驱动优化,因为3.5GB部分的显存相比另外的0.5GB部分更大、更快、更好。这0.5GB部分的显存逻辑上来看相当于VRAM与系统内存之间的缓存,它的速度比3.5GB部分更慢,不过依然是PCI-E总线到内存的带宽的2倍。往大的方面说,取决于你如何定义GTX970的显存容量,它可以说是3.5GB显存的,也可以说是4GB显存的,其中只有前面的3.5GB是全速的,这也是软件最想用的那部分。不过512MB那部分分区也是有意义的,虽然性能比3.5GB部分低,但它依然比PCI-E到主内存的带宽更高,GTX970依然可以使用完整的4GB显存。

  写在最后:GTX970到底有问题吗?

  上面分析了这么多,那么GTX970到底有问题吗?所幸的是,通过多家国内外媒体的测试,GTX970确实可以使用全部的4GB显存,3.5-4GB中间部分的显存是可以被游戏利用起来的。与GTX980的性能进行对比,无论是在3.5GB-4GB之间占用还是在4GB显存占用时,性能下降均处于较为相当的水平。在测试中,无论显存占用情况如何,GTX970和GTX980的性能差距始终在15%左右,爆显存的事情并没有发生。如果之前的GTX970显存问题的传言准确,那应该会看到GTX970相对于GTX980性能有较大幅度的下降才对,而这样的事情并没有在测试中出现。绝大多数热门游戏大作在4K及以下分辨率的时候,即使画质全部手动调至最高,显存占用率也不会超过3.5GB。

  小编认为,这次可能真的如NVIDIA说的那样,他们是疏忽了,而不是故意隐瞒。首先,因为ROP单元、二级缓存的参数对普通用户来说确实意义不大,NVIDIA故意夸大它们的规格捞不到任何好处,被发现了反而是严重的打脸,没必要这样冒险。其次,无论之前的传言如何,以及显存分配到底是怎样的,GTX970的性能都在那摆着的,而且二代Maxwell架构优秀的功耗比也给大家带来了深刻的印象,我们再在显存上纠结似乎完全没有必要。

  文/小戴

关注读览天下微信, 100万篇深度好文, 等你来看……