论虚假宣传?和英伟达比小米还差点

  英伟达和小米能有什么交集和可比性?在业务方面确实不多,不过在营销宣传和所谓的企业道德方面却有着高度的相似性。当然,如果作为消费者的你是上述某家公司的超级粉,在看完标题后急着“护主”却又没有耐心读完余下的“深度分析”,那么小编在此建议你直接跳转至评论区,用“被打完左脸还要送上右脸”的实际行动,坚定捍卫自己“不需要拥有消费者权益”的权利。

  另一方面,小编也要给出友情提示:如果你是上述某家公司的竞争对手的超级粉,也请不要急于发表高论。毕竟,你也是一个消费者,有一天你也可能遭受到同样的对待。所以,同为“弱势群体”的我们更应该站在消费者阵营,共同去谴责并规范当前愈演愈烈的虚假宣传行为。

事件回放

  一家叫Oxide Games的游戏开发公司于不久前放出了全球首份A卡(AMD显卡)和N卡(英伟达显卡)的DirectX 12(后简称DX12)游戏性能测试。不过测试的结果一度令很多媒体和用户都大感吃惊。

  其中,最令人惊讶的并不是A卡因为DX12而“焕然一新”,而是相比之下,英伟达的9xx系列旗舰卡却因为用了DX12,反意外出现“性能倒退”——没理由啊!DX12可是号称“更接近硬件底层”的API(编程接口),能更高效地调用硬件资源,因此性能表现只会比早期版本的DirectX更好——这是业界的共识,包括英伟达自己也如此承认!

  可是,测试的结果确实没有符合英伟达预期,公司方面也迟迟未作出解释。迫切希望知道答案的用户只好纷纷给出自己的猜测:一,这只是一款尚未正式发布的DX12游戏,可能还未成熟;二,兼容DX12的驱动尚未完善,英伟达如此,AMD也是如此;三,Oxide Games是一家AMD支持的游戏开发公司,从之前的Mantle技术合作就能得知,所以测试结果有偏向性,不具公信力……

  其实,第一和第二点猜测都还能被认为是合理的解释,但唯独这第三点——质疑一家AAA游戏开发公司的专业性——那可就触及红线了。

  于是,Oxide也终打破沉默,将自己在开发过程中一直通过邮件与英伟达保持交流的事实公开……将英伟达一直有权访问游戏源代码的事实公开……甚至将英伟达在发现测试结果不合预期后,数次施压并要求屏蔽DX12某项核心功能的事实也公开……尤其是在屏蔽DX12核心功能ACE(Asynchronous Compute Engine,异步计算引擎,后半段将有详解)这个问题上,Oxide更是直言不讳地指出——英伟达第二代Maxwell架构(9xx系列GeForce)根本就不支持ACE,至少是无法做到“原生支持”(Native Support)。

  面对这样的指控,英伟达用户(除了超级粉)可真坐不住了——不支持DX12最核心功能之一的ACE,岂不就等于不支持DX12吗?于是,国外主要科技论坛,包括Anandtech、Guru3d以及Reddit等,有关话题的跟帖迅速破千,大量用户开始声讨英伟达,要求官方必须给出解释。

  然而,英伟达的官方声明还没等到,AMD的全球技术营销主管Robert Hallock却出现在Reddit上“添油加醋凑热闹”。Hallock先是表示,自己在看到Oxide的测试成绩后也有过类似怀疑,即:Maxwell架构是通过“环境切换”(context switching)的方式来实现ACE的,此方法效率极低,因此无法做到真正意义的“异步计算”(文后解释,看不懂不要急)——这言下之意就是,N卡的DX12是残缺的,至少在ACE这个功能上没有做到“完全支持”。

  不得不说,这是一次成功的“火上浇油”,只不过火势蔓延太快,连Hallock自己都有些惊惶不安——N粉和A粉在Reddit论坛上即刻展开对撕,场面一度有些失控。情急之下,Hallock只好补上一句:“没有谁家的产品能完美支持DX12,英伟达如此,AMD也是如此”——希望能借此为整个事件打个圆场……

  再然后,我们就看到了《AMD:当前没有什么可完美支持DX12》的新闻充斥在各大科技媒体的头条……

  AMD和英伟达的恩怨其实不是小编要在这里讲述的内容,如果A粉和N粉要对撕,请三思后绕道而行。接下来,小编将花些篇幅讲解DX12的技术细节,其中包括本文一再提到的ACE的概念,因此可能会很乏味,不喜者可忽略之。

DirectX 12的技术浅析

  大谈专业技术内容通常不会获得网友的理解,所以小编在此会尽量简化细节,一些不恰当的比喻还望专业人士指正。

  DX12与以往任何版本的DirectX都不同。这种不同并不在于提供了更多的功能性特效,譬如光影特效、水波纹特效等,而是在于将实现这些特效的方法放到了GPU的硬件层去执行,正所谓“DX12是低级别API”的原因。注意,这里的低级和高级并不指“好坏”,级别越低,代表越接近硬件底层,因此执行起来效率高,但编写时代码特别长。

  因为把“功能下放到硬件层”去实现,DX12自然就会对GPU的硬件规格(或者说资源规模)有要求,因此我们又看到了微软根据GPU能提供的硬件资源规模,对每一项DX12的功能都给出了Tier 1、Tier 2和Tier 3三个级别分类,以表示该GPU对该项特性的支持程度(级别越高表示支持越好,但级别低也算是支持)。

  听起来有点拗口难懂?没关系,我们换个角度来简单说明一下。不管AMD还是英伟达,在一颗GPU上能使用的晶体管总数是有限的,所以想要把有限的资源“完美”分配给每一项DX12规范的功能,几乎是不可能完成的任务(当前技术下)。这就好比我们只有3000元来配置新电脑,是买好一点的CPU,还是好一点的显卡,还是大一点的硬盘,还是快一点

  SSD?这都需要进行取舍,而取舍的结果将会决定该电脑擅长的领域,譬如较好的显卡有助于提升游戏性,大容量硬盘则可用于专业的NAS服务等。

  那么,AMD和英伟达又各自做了哪些取舍?

  AMD从第一代GCN架构开始,将大量的晶体管投入到了实现Asynchronous Compute Engine(异步计算引擎)上。所以,A卡号称拥有64+1个完整的ACE。

  相比之下,第二代的Maxwell架构将大量晶体管用在了实现Conservative Rasterization(保守光栅)和Raster Ordered Views(光栅顺序视图)两项功能上。因此,N卡的ACE只有31+1个——注意,这只是官方数据,其真实性还有待考证,这也正是引出本期《易评》的焦点所在。

  当然,以上只是一部分晶体管的分配情况和一部分DX12规范下的功能。但也就这一小部分差别,今天在互联网上引发了剧烈的质疑和讨论。

  AMD说自己也不完美支持DX12,其所指正是上述的Conservative Rasterization和Raster Ordered Views两项功能。此两项功能在DX12标准下为“可选择项”,是不要求必须实现的。不过,英伟达已经支持了,尽管有的只是Tier 1的支持(AMD两项均为零支持),所以微软又制订了DX12.1规范,即下个升级版的DX12将会开始要求支持Conservative Rasterization和Raster Ordered Views——这也是为什么英伟达一直标榜自己产品是DX12.1标准的原因。


DirectX 12和12.1规格要求

  不过讽刺的是,ACE可是DX12规范下必须支持的核心功能。英伟达在宣传中号称支持该功能,但实际测试却发现,所谓的支持可能仅仅是通过“驱动层模拟”(emulated)来实现的,而并非是大家所期待的架构层原生支持。除了Oxide和AMD先后提出相关质疑外,beyond3D论坛上的专业网友也通过多次针对性测试得到了类似结论——特别值得一提的是,此前GTX 970被曝出的“只有3.5GB有效显存”的问题,也是经过beyond3D网友多次测试后发现。

  根据这些网友和专业人士的解释,英伟达实现ACE的方式应该是依赖了大量Preemption(抢占式多任务)和“环境切换”操作。简单地说,就是GPU在进行异步计算时,需要先暂停当前正在处理的任务,以腾出资源来处理优先插入的数据。这一过程,通常会产生大量的闲置(Idle)。同时,“环境切换”在存储和重建任务上极为低效,这更进一步增加了处理的延迟。

  换用更通俗一点的比喻来说,英伟达实现ACE的方法就好比有交通灯的大道,侧道车辆如果要并入主道,主道车辆就必须先停下来,并等待红灯再次变绿。相比之下,如果是从架构层实现ACE,就相当于在一条自由宽松的高速公路上,让车辆自由并入主干道,整个交通无需通过红绿灯来控制。

  英伟达这种通过“驱动模拟”实现的ACE到底算不算真正支持?目前还没有一个权威定论。不过小编在这里大致说一下DX12是如何“弱化”驱动的,然后大家自己就会有答案了。

  传统高级别API下,一款游戏或者一个3D绘图应用在调用Draw Calls时(可理解为向GPU发出指令让其在屏幕上绘出一个或多个指定图形)通常会经历以下过程:来自应用程序的指令先是被“翻译”给DirectX,然后再被“翻译”给显卡驱动,再然后还要“翻译”给系统内核接口,最后才“翻译”给GPU去执行……整个过程冗长且低效,但好处是“显卡驱动”可以有很大发挥空间——“AMD驱动不如英伟达,尤其是游戏表现上”的说法就是来自于此了。

  DX12出现后,所有中间层的“翻译”工作就被取消了,游戏开发商可以直接通过API与GPU进行沟通。这不仅只是效率高了,开发者自由发挥的空间也大了(任意分配GPU资源到需要的地方),然而缺点是使用难度也提高了。

  那么,会不会出现游戏开发者抵制DX12,或者迟迟不用DX12的现象?可能性极低。因为“低级API”一直是游戏开发社区所呼吁的,当年DirectX的低效和复杂已被太多人诟病。游戏主机曾经之所以风靡,部分原因就是因为开发环境的友好和高效成就了大量的经典。更何况,DX12正是一款衍生自游戏主机平台的API接口。

  技术部分谈完了,英伟达第二代Maxwell是否算支持DX12的架构,恐怕每个人心中都有不同的答案。小编只想说,不是每个消费者在购买一款产品时都只看跑分的,国产手机跑分普遍高,可骂的人少吗?如果当初就是冲着DX12才买的英伟达显卡,如今却看到满世界”模拟支持“的质疑报道,不知此刻的心情会是怎样?要知道,这已经不是英伟达的初犯。

  也许,对于英伟达的“真假DX12”还尚存争议,那么在今年初,经由官方公开承认的“作假”,终归能算作是铁证了吧?

  不少网友应该都还记得,今年1月份,同样是英伟达第二代Maxwell架构的GTX 970显卡被曝出只能有效使用3.5GB显存的bug,而这还不是唯一一处“虚假宣传”。

  在网友进一步挖掘之后,英伟达官方承认,除了4GB显存实际只能有效利用3.5GB外,GTX 970的ROP(渲染输出单元)也不是包装盒上显示的64个,而是56个。此外,二级缓存也只有1.75MB,而不是完整的2MB。


规格更改前后对比

  “造假”曝光后,一些超级粉以“反正性能没有损失”为由来自我安慰,最终让英伟达冠冕堂皇地将丑闻不了了之——不过国外市场因为法律的完善,使得零售商和英伟达官方都不敢怠慢,随即宣布将无条件接受退货。而反观国内市场,一方面是因为没有这种传统,另一方面是消费者自己也不懂得维权,使得零售商没有压力,英伟达也就更加懒得发表任何公开声明,以弥补过失。

  小编不否认Maxwell是优秀的架构,也不否认GTX 970是市场上很有吸引力的一款产品。但是宣传规格与实际不符,就是对消费者的欺诈,是企业道德的沦丧,是公然的违法违规。

  小编还不能理解的是,如果是一家国产企业作假,估计祖上十八代都已被网友骂得“狗血淋头”。可换作一家外企公然玷污市场规则时,我们的消费者不但不抗议,反而还以“跪舔”之态绞尽脑汁为其辩护。

  所以说,小米在“驯养忠实粉丝”的能力上远逊于英伟达。不就是屏幕出厂品牌与宣称的不符嘛,但起码分辨率等硬性指标还是一致的,结果就引来了各种“专家”的点评了……小编可不是要帮小米申冤(强烈建议发起集体诉讼,赔死了活该,市场就应该对这种不规范行为严惩),只是站在英伟达的角度看这个问题会“睡觉都在笑”——我们在同一代产品里都已经四次假宣传了,也没有哪个大V站出来说什么啊,中国人太友善了!

  不知道我们的大V们是真心不懂,还是只“对内服务”,也或者是小编太牛X了,做了专家和有关部门应该做的活。

热门相关:天下第一剑道   星河贵族   异世之小小法师   重生后我嫁了最凶的崽   星河贵族