正文内容 评论(0

3.5GB显存问题后续:NVIDIA承认GTX 970显卡规格有误
2015-01-27 12:22:00  出处:超能网   编辑:快科技     评论(0)点击可以复制本篇文章的标题和链接

这几天有关GTX 970显卡只能使用3.5GB显存的讨论热火朝天,昨天小编也验证了这个问题,在一些游戏中GTX 970只显示3.5GB显存占用的问题是存在的,NVIDIA对此也作出了解释,说这是设计使然。但官方回答并没有详细解释为什么要这么做,现在这个问题的内幕被深挖出来了,NVIDIA在GTX 970显卡的规格上存在错误,其ROP单元及L2缓存并非当初所说的那样,而是做了精简。

Anandtech网站对GTX 970显卡的3.5GB显存问题做了深入研究,在跟NVIDIA探讨之后澄清了一些目前存在的问题。原文写的很长,而且非常有技术深度,我们简单来看下这个问题到底是怎么发生的。

GTX 970规格修正:ROP及L2缓存有精简

首先要搞清的一个问题是,NVIDIA此前在官方文档中介绍的GTX 970规格是有错误的,它跟GTX 980一样使用了GM204核心,之前NVIDIA只说其SMM单元屏蔽了三组以降低功耗,7GHz GDDR5显存、256bit位宽及64 ROP单元保留,但实际上有些规格是错误的。

GTX 970显存异常的背后必然有规格上的差异,现在NVIDIA已经承认了当初的GTX 970规格说明是有错误的,4个ROP/显存控制分区中实际上有1个被禁用了,所以它的实际ROP单元只有56个,L2缓存也不是当初说的2MB而是1.75MB,少了1/8,不过显存控制器没有变化,确实是256bit位宽,4GB显存。

GTX 970禁用三组SMM单元,同时部分单元功能也受影响了

部分禁用ROP/显存主控的功能是Maxwell架构上才有的新功能,原文后面还会介绍这个功能。

这是当初NVIDIA文档上介绍的GTX 970规格

至于为什么会出现这样的错误,NVIDIA的解释称这是偶然的,这些文档资料都是NVIDIA的技术销售团队做的。(PPT制作人员这次惨了?)NVIDIA解释说技术销售团队在制作评测指南时并没有意识到Maxwell架构具备上面提及的“部分禁止”功能,他们知道GTX 970是有256bit位宽的,但不知道可以独立禁止ROP单元及2MB L2缓存,所以他们制作的文档中的错误就在NVIDIA各部门流传开了,并通过媒体传播开了。

这个问题在过去的4个月中都没有被发现,直到本月初NVIDIA开始调查GTX 970显存寻址的问题时才被注意到。

NVIDIA现在做的无疑是危机公关,Anandtech表示考虑到NVIDIA几乎不是第一家在危机公关时撒谎的公司,他们应该相信他们吗?Anandtech网站给出的答案是:是的。(这里有点被绕晕了,搞不懂是真相信还是调侃NVIDIA,我反正是不信的,即便NVIDIA之前真的找到问题了,恐怕也不会主动说出,特别是没有爆发问题的情况下,现在是不得不说)

当然,Anandtech网站也做了反思,这些问题其实之前也暴露出了一些蛛丝马迹,比如NVIDIA的CUDA DeviceQuery工具之前已经报告GTX 970显卡的L2缓存是1.75MB,而GTX 980是2MB。

之前的工具也报告过去GTX 970 L2缓存精简的情况

GPU-Z之类的第三方软件并不能检测到这个问题

GPU-Z及AIDA64等第三方软件也不知道这个情况,所以他们也不能检测出这个问题,最新的GPU-Z 0.8.1版上依然显示是64个ROP单元。

深度解析:Maxwell架构的显存交叉及ROP分区

出问题的是GTX 970(也只有GTX 970,之前小编的验证文章中GTX 760及GTX 960显示的掉速原因跟这里其实是不同的。),因为在Maxwell架构NVIDIA才开始禁用部分ROP/显存主控分区,之前的Kepler及更早的架构都没有这个能力。而GTX 970禁用了部分分区,所以它的行为跟GTX 980或者理论上的Maxwell架构有所不同。

NVIDIA之前的解释也提到了这一点,禁用部分单元导致GTX 970的ROP/内存主控分区不平衡,所以NVIDIA设计了内存分区,3.5GB的这部分是高性能分区0,0.5GB那部分包含了剩余的显存,性能略低。

为了更好地理解上面的差异,首先我们要先了解Maxwell架构的内存交叉( memory crossbar),看看他们是如何工作的。

GTX 970显卡的内存交叉问题

NVIDIA在上图中阐述了Maxwell架构的内存交叉布局,特别是GTX 970如何配置的。Crossbar上面是16组SMM单元,下面则是4组ROP/主控分区,每个分区都被分配到特定的ROP/L2缓存单元及内存主控中。需要注意的是,GTX 970屏蔽的三组SMM单元并不是1/3/5组这么简单,L2缓存也不是屏蔽了最后一组,不过这里是示意图,我们不需要考虑到底是那些单元被屏蔽了。

上面的示意图显示了SMM单元及ROP/主控分区是如何通过Crossbar连接的,内存分区主要是跟ROP/主控分区有关,而SMM单元实际上在GTX 970显卡的内存分配无关——Crossbar将他们联系在一起,而Croosbar只跟ROP/主控分区有关。

说到ROP/主控分区,这是Maxwell架构上的新功能。之前的Kepler架构上,ROP/MC分区只有完全禁用和完全不禁用两种选择——要么关闭整个分区,要么都不能关。而在Maxwell架构上,NVIDIA可以通过分区来独立禁用ROP/L2单元,允许1、2个单元禁用。这实际上引入了第三种可能——部分开启的ROP/MC分区,可由1组ROP/L2单元、2组内存主控支持,而与此同时,内存主控依然是一体的,禁用他们中的1个就会导致整个主控被禁用。

Kepler与Maxwell架构的区别

这就是GTX 970显卡的情况,这是Maxwell架构首次使用这种部分禁用的新功能,NVIDIA禁用了1组ROP/L2缓存单元,去掉了8个ROP单元(或者说是1组8pixel/clock的单元)以及256KB L2缓存,这就是GTX 970为什么只有56个ROP单元、1.75MB L2缓存的来源。

与此同时,这还有一个新功能,但它只有在禁用部分分区时才会激活——这就是第一、第二个ROP分区之间的Link通。通常每个ROP/L2单元都需要1个接口连接到Crossbar,同时需要1个Link连接到它自己的32位显存控制器通道中。不过GTX 970禁用了1组ROP/L2单元,所以临近的Link(buddy link)开始发挥作用,这是Maxwell架构能够禁用部分分区的关键,它能让第二个只有一半的显存主控保持激活状态。

这个Link只有在ROP/L2单元被禁用时才会需要被激活,NVIDIA确认它跟正常的ROP/L2单元到MC主控的link一样都是全带宽的,每周期可以执行4个32bytes要求(2读2写)。总之,这个Link是保证禁用部分分区功能的关键,它也使得在缺少了1组ROP/L2单元之后还能使用完整256bit位宽成为了可能。

与GPU执行每个操作类似,内存读取也会支持并行操作以提高吞吐量。在GTX 980这样完整的的显卡上,这些操作是以1KB的步幅匹配于所有内存控制器的。为了实现这个设计,每个32bit内存通道都需要通过自己的ROP/L2单元用一个直接的Link连接Crossbar。在GTX 970上,它有7个Crossbar接口和8个内存通道。

最后,由于Crossbar和内存主控的设计,1个Crossbar接口不能承载2个内存通道的完全负载,Crossbar和它自己的ROP/L2单元可以同时连接两个内存通道,分裂4个算法,不过同时只有1个读取返回总线,因此实际情况中它只能读取1个内存通道。

(看到这里,很多人可能还是不明白到底咋回事,还是直接来说吧)

正因为此,NVIDIA才将GTX 970显卡的显存分为两个分区,正常的3.5GB和另外的500MB分区,前面的3.5GB部分,其功能跟正常的GTX 980显卡是一样的,以1KB步进匹配7个Crossbar接口,因此有7个DRAM模块。第八个DRAM模组包含500MB分区,需要自己的Crossbar。

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

最终的结果就是GTX 970拥有独一无二的显存布局,需要操作系统及NVIDIA的驱动优化,因为3.5GB部分的显存相比另外的500MB部分更大,更快,更好。这500MB部分的显存逻辑上来看相当于VRAM与系统内存之间的缓存,它的速度比3.5GB部分更慢,不过依然是PCI-E总线到内存的带宽的2倍。

GTX 970是NVIDIA首次使用ROP/MC主控分区的产品,不过这并不是NVIDIA首次次用分区内存或者非对称内存配置了。从GTX 500系列NVIDIA就开始应用非对称/异构内存配置了,特别是在GTX 660及GTX 660 Ti上了。这些显卡上使用了192bit位宽,但搭配了2GB显存,这也意味着有些内存主控会比其他主控连着更多VRAM。

最终的结果也是类似的,不过NVIDIA从来没有深度解释这些显卡的内存寻址,看起来跟GTX 970的情况很类似。与其说NVIDIA有过多次这样的经验,不如说这是NVIDIA首次在GTX 970这样的高端显卡上使用这种方式。

GTX 660 Ti上使用过类似的异构内存

至于为什么NVIDIA要这么做,问题的关键显然是成本和良率。如果没有这样部分禁用的能力,NVIDIA要么就只能使用功能完整的分区——这会减少良率进而提升成本,要么就只能直接禁用整个分区,这又会损失额外的ROP、内存及内存主控。现在这种细粒度调整允许NVIDIA更好地控制坏的芯片,调节部分单元再推向市场,

往大的方面说,取决于你如何定义GTX 970的显存容量,它可以说是3.5GB显存的,也可以说是4GB显存的,其中只有前面的3.5GB是全速的,这也是软件最想用的那部分。不过512MB那部分分区也是有意义的,虽然性能比3.5GB部分低,但它依然比PCI-E到主内存的带宽更高,GTX 970依然可以使用完整的4GB显存。

这意味着两种说法都是正确的,这就跟其他现代技术具备多方面因素一样,真正的答案往往比单一因素更复杂。

总结:

限于时间和篇幅,原文我只翻了前面两页,主要解释了GTX 970为什么有规格错误以及3.5GB+500MB内存分区到底是怎么来的。如有错误之处,还请读者多多指出。

GTX 970显卡发布4个多月了,现在NVIDIA才指出是技术销售团队在制作文档时犯错了,这个解释不知道大家相信不?

这里也解释了GTX 970的分区内存到底怎么来的,技术问题大家了解一下就好了,愿意深究的可以去详细阅读原文。至于GTX 970的分区内存到底有多大影响,昨天官方有公布过测试了,小编也体验过了,算起来影响确实不大,只不过消费者是否介意这个问题,还得看每个人的想法了,GTX 970的4GB内存确实可用,但有1/8的部分性能差,心里确实会有个疙瘩。

责任编辑:

  • 支持打赏
  • 支持0

  • 反对

  • 打赏

文章价值打分

当前文章打分0 分,共有0人打分
  • 分享好友:
  • |
本文收录在
#电脑

  • 热门文章
  • 换一波

  • 好物推荐
  • 换一波

  • 关注我们

  • 微博

    微博:快科技官方

    快科技官方微博
  • 今日头条

    今日头条:快科技

    带来硬件软件、手机数码最快资讯!
  • 抖音

    抖音:kkjcn

    科技快讯、手机开箱、产品体验、应用推荐...