在
《N卡与A卡的区别(2012完整版)》一文(以下简称《
前文》)发布后,网友们留言提出了若干疑问,非常有代表性,下面对这些疑问进行归纳总结,并用最通俗的方式进行解答,以求0级玩家也能看懂,算是后续篇。建议初次看到的玩家先看《
前文》再看本篇,因为有些概念本篇将直接引用《
前文》而不再复述,可能会造成初次观看的初学者误读。
OpenCL篇:
《
前文》中有坛友提出OpenCL的内容没有,其实已经讲到了,只不过用了“中文”代替而已,可能感觉没有技术文的那种“神秘范儿”吧,毕竟前文的宗旨是把神秘拉下神坛,而不是故作神秘。
要说OpenCL,就不得不提API,什么是API?程序要想实现某种功能,就要调用系统中的某个函数,而一大堆函数的集合体,人们就称之为API了(中文简称为“程序编程接口”),API提供什么功能,那么依此开发的软件就能展现什么功能。硬件如果兼容某坨API,那么就能兼容依这坨API开发的程序。也就是说,当一坨API被某个领域广泛采用的时候,也就成为了该领域的软硬件发展的技术标准,它的升级也会带动软硬件随之升级(虽然它本体只是一坨函数包)。
在图形领域有两坨主要的API被广泛采用,一坨是DirectX,另一坨就是OpenCL了。
DirectX是微软开发,集成在自家Windows系统中,由于Windows系统的普及性,DirectX就自然而然的成为多媒体(包括
游戏)开发的主流API。XP系统集成的DirectX9.0c版本(简称DX9)至今还是主流游戏开发API。XP之后的Vista系统集成了DX10,再之后的Win7系统集成了DX11,目前的
Win8系统集成了DX11.1。每一代DX都加入了更先进的仿真技术,使游戏开发者能调用更先进的功能做出画面更逼真的游戏,但同时也对
显卡功能、性能有了更高要求。比如微软在DX10上已经不再区分像素和顶点单元,而是定义了通用的运算单元来统一负责,这时候显卡要想兼容这坨DX10,就必需取消像素、顶点单元,设计出统一运算功能的单元来,从而导致当年N卡A卡大换代,管线换成流处理器,开启了DX10时代。
(小提示:系统中集成的DX函数并不是完整的,如果碰到一些调用了冷门函数的游戏,那就需要用户下载安装完整DX包才能正常运行了)。
而图形领域的另一坨主流API,就是大有来头的OpenCL了,由苹果首创,一堆大佬来开发,其开放性成就了众多领域通用的地位,虽然也有用在游戏领域,但更多的是用于专业图形领域及通用计算中,所有专业的2D、3D图像设计软件都对其支持,所以专业图形显卡都必需支持庞大的完整的OpenCL功能。Windows系统虽然没有集成OpenCL这坨死对头,但显卡厂商都在驱动程序中集成了OpenCL包,只要安装了完整版的显卡驱动程序,OpenCL就有了。不过常见的游戏显卡只支持少部分OpenCL功能,驱动程序也只集成了部分OpenCL函数,而不支持的部分只能由CPU进行运算,效率极低,所以在专业图形领域中,再顶级的游戏卡也远弱于入门级专业卡,稳定性也远远不及。相对的,专业卡虽然完美支持OpenCL,却对DirectX极度轻视,几千元的专业卡在游戏上也只相当于几百元游戏卡的性能,兼容性也较差。所以做设计的同学们要注意了,是游戏重要还是工作重要,自己来衡量吧,所谓术业有专攻,这是没办法的。至于两家的专业卡的对比,多年来两家都拼得忽高忽低,但NV占优的时间较长,市场占有率上NV专业卡是占了大头的。就产品本身而言,其实两家都非常专业而优秀,完全能满足各级专业人员的需求,没什么可挑的(套句俗话:专业大师级都不挑,你这水平挑什么?)。
在通用计算方面,由于DirectX的通用计算功能实在羸弱,主流的通用计算还是基于OpenCL的。N卡自DX10以后就开始了通用计算之路,并且走得大刀阔斧,架构中的缓存、双精度浮点单元也是为通用计算而设计(对游戏却没有太多帮助),最关键的是支持了C++语言,推出基于OpenCL的CUDA开发套件,使更多开发者投入到N卡阵营中来。而AMD虽然早在X1900XT性能过剩时代就提出了显卡通用计算的概念,但之后却没有太多发力,架构设计也没有考虑到通用计算的支持,导致周边支持较少,这种情况直到HD7000系列以后才有所改观。
加强通用计算的支持就意味着显卡不止用于图形渲染,还能代替CPU用在其它通用的领域上,看上去有点“不务正业”是吧,但正是由于显卡核心的恐怖计算能力和N、A两家的推动,显卡正慢慢侵占着CPU的领地。NV就是凭着通用计算的能力在科研、医疗、大型计算等领域占了一席之地,一台超级计算机几千上万颗计算芯片里,可能就有几千颗N卡的核心。AMD悔恨之后终于“改过自新”,在HD7000上重新设计了架构,不惜大费晶体管增强通用计算能力。当然,AMD与NV的策略有些区别,AMD由于同时是CPU领域的巨头之一,在自家显卡的通用计算上更多的是倾向于与CPU的极致协作,倡导GPGPU的概念,与只有显卡业务的NV压力是不同的。
对普通玩家来说,显卡通用计算目前只有视频转码、网页加速(IE9支持,IE8、7、6免谈)、文件压缩、解密、图形设计、少部分游戏特效等用途,还没有到非用不可的程度,也就很难理解两家巨头的决策方向了。
也就是说,在《
前文》中已经通过专业图形及通用计算两块内容简述了OpenCL,只不过为了减少过多连带解释搞花了初学者的眼睛,也就隐去了这些鸟语。
最新进展及对比篇:
有坛友提出《
前文》老架构说得多而新架构说得少,确实如此,因为DX10架构(2006年问世)是现有架构的开端和基础,两家长达5年的换代都是在此基础上改进而来,本质上没有变化,连DX11架构都是如此,而网络上几乎所有的流言和对两家的印象也都从DX9、DX10时期而来,所以有必要把重点放在DX10上。对于最新的DX11.1,如果坛友觉得《前文》还没说得过瘾,那么下面再通俗的介绍一下。
为了便于理解,我们简单引入DX10以后几代发展的历程,也算同时回答了有些坛友指出的“对比较少”的问题:
NV在DX10换代之际开了个好头,果断彻底的抛弃单指令多数据流架构(以下简称SIMD),转投效率更高的多指令多数据流架构(以下简称MIMD),以8800GTX抢先进入DX10时代。而AMD则开了个最烂的头,不但让NV独占DX10市场长达大半年之久,晚了大半年推出的DX10产品(HD2900XT)竟还弱于对手,这让A卡的人气和市场瞬间跌到谷底,跟一年前A卡的DX9辉煌相比有如天壤之别。AMD采用的是改进后的SIMD架构体系,虽然SIMD本质上非常适合图形渲染,但AMD又跳票又弱的烂开场让人们开始怀疑SIMD的性能。在众多分析中,比较合理的说法是A卡在DX10换代时期不幸处在了AA收购调整期,研发与决策受到严重影响。但不管事实如何,这个烂头已成定局。
到第二代后,NV更新了工艺推出GF9000系列,架构与上代不变,连流处理器都没有增加(还是128个),只凭着新工艺提升了一些频率,市场还是很好,看来AMD的弱势让NV非常没有压力。而AMD的HD3000终于赶上了对手第二代的发布时间,开始走小芯片路线,特点是面积小功耗低,方便推出“多核”型号,策略是以单芯占领中高端,再以双芯占领高端(老玩家有没有很眼熟?是的,小芯片单双芯策略并不是AMD独创,而是DX9末期NV为了抗衡ATI单芯的强势而首创的绝招),这一代明显体现了AMD的工艺掌控能力,晶体管密度大幅提升,芯片面积变得非常小。不过这一代A卡架构上也没有改变(还是320个流处理器),同样也只提升了一些频率,所以还是落后于对手。NV轻松之余唯一的紧张感只不过是被突然袭来的双芯HD3870X2逼出了个9800GX2而已。
到了第三代,NV突然暴长计算单元,GTX280达到了240个流处理器,单元做了不少改进,继续稳占最强宝座,同时开始大推自家CUDA通用计算技术,已经透露出侵食CPU领地的野心。不过GTX280的晶体管规模也几乎是上代的两倍,其中相当数量是用在了加强通用计算上,芯片面积和功耗巨大。而这一代的A卡开始了反击,流处理器暴长了两倍多(800个),并且各模块都做了优化改进,芯片面积还是很小,HD4870以不到GTX280一半的芯片面积就实现了80%的性能,证明SIMD其实并没有问题,问题在于设计上,AMD开始缓过劲了。结果小芯片优势尽显,不出所料,双芯HD4870X2横空出世,占了近半年的卡皇宝座,NV最后只能降频降宽的推出双芯GTX295才勉强把HD4870X2赶下来。这一代A卡人气和市场猛增。
第四代,NV过于严谨稳健的策略开始显露弊端,AMD已经走入第四代了NV的第三代GF200系列都还没发布完全,中端GTS250更是只能延用上一代的G92核心来顶替;而AMD趁机从反击的姿态转为进攻,运算单元再次翻倍,HD5870以1600个流处理器猛然占领卡皇地位,是首款支持DX11、也是史上首款以单芯卡身份超越上代顶级双芯卡(GTX295)的卡皇,令人意想不到的是HD5870卡皇还没坐热,双芯HD5970就紧接着炸出来了(这款具备3200个流处理器的卡皇将在之后占据长达一年半的最强地位),完全不留超越的余地。这一代的开场AMD打得确实漂亮,虽然市场占有率还是不如对手,但维稳回升的势头很明显。在AMD第四代几乎铺货完成后,NV的第四代才姗姗到来,核心高达512个流处理器,数量是前代的两倍有余,控制单元和缓存规模史无前例的庞大,明显专为通用计算性能而强化,不过由于规模超出了当时制造工艺水平的极限,只能屏蔽掉一组SM(带32个流处理)才能推出旗舰GTX480,尽管如此,GTX480凭着剩下的480个流处理器也已经可以把HD5870砍下马来,成为最强单芯显卡。但是NV这一代已经无法再做出双芯卡了,功耗发热量已经很难控制(甚至比对手的双芯卡还高),只能放弃最强宝座的争夺。
《
前文》说过,这一代两家架构都走到了极限,NV已经到了屏蔽单元发布不完整核心的地步,而AMD虽然表面看上去占了上风,但计算单元的堆砌已经到了极限,再堆下去不但性能提升有限,小芯片的优势也荡然无存。所以两家都在苦思出路。
到了第五代,《
前文》已经做了详细介绍,由于台积电放鸽子,两家只能继续延用40纳米工艺,被迫做了少量妥协。NV开始适当缩减通用计算性能,明显降低了晶体管消耗和功耗发热量,而AMD也适当缩减了计算单元增加了控制单元,效率明显提升。两家都在这一代向对方迈了一小步。
(各代旗舰核心面积对比)
到了第六代(重点来了),AMD于2011年底抢先推出HD7000系列,这是首款采用28纳米工艺、PCI-E3.0接口、DX11.1技术的显卡,最大的亮点就是AMD设计了全新的GCN架构,放弃了使用多年的5D-4D(SIMD)架构。从官方介绍即可看出设计的思路,就是MIMD与SIMD的混合。下面看看AMD是如何实现的:
宏观上,整个运算部分由32个MIMD的“大核心”组成(而当时最强单芯GTX580只相当于16个);每个“大核心”其实又是由4个SIMD的“小核心”组成;而每个“小核心”的本体其实就是16个流处理器,整体形成了32X4X16=2048个流处理器的庞大规模。也就是说,在宏观指令调度上它实现了N卡的高效率和方便编程的特性,在底层上它又具备A卡的高指令吞吐和恐怖计算性能,可以说是史无前例的混合式设计。并且不再打包指令,也不像N卡那样拆分,而是原封不动的通吃,这也是4个“16D小核心”为一组的原因。加上所有单元共享768K二级缓存(和GTX580一样),每层“核心”又具备独享缓存,形成了庞大的多层缓存规模(以前的A卡是没有的),再配合增强的双精度浮点单元,使通用计算性能得到大幅增强并超越对手,至此再无死角。
但是,这些改进必需依托庞大的晶体管数量支撑,并且要想实现MIMD的高效率,线程调度工作必需像N卡那样放到硬件上实行(之前的A卡偏重软件实行,虽然减少了晶体管消耗,但却对驱动依赖极高)这在晶体管消耗上也是相当“可观”的,最终HD7970达到了史无前例的43亿晶体管规模。好在这是基于28纳米下的挥霍,芯片面积反而比上代HD6970要小一些,功耗也没有夸张。需要注意的是,虽然HD7970游戏性能是当时单芯最强,但其架构的多数改进都是针对通用计算而去的,这些设计极耗晶体管又对游戏性能没有太大帮助,说明AMD终于也醒悟了,和NV一样坚定通用计算就是显卡未来的发展方向。HD7970在当时被媒体冠以最球最快的GPU,人气高涨,N卡市场份额险些被A卡超越。
(上图可看出A卡近代变化明显,从HD6000的双前端4D到HD7000的MIMD+SIMD混合)
NV方面,终于半年内也推出了万众期待的第六代核心GTX680(GK104),28纳米,依旧采用MIMD架构,并且依旧是GPC、SM多层多组管理体系,明显不同的是,GTX680每组SM包含的流处理器撑到了192个!(之前GTX580每组SM只管32个,即使是“新架构”的GTX560TI也只撑到48个),SM管辖的流处理器越多,那么在相同流处理器数量下需要的SM分组就越少,连带的控制单元、缓存也就少得多,可有效的减少晶体管消耗和功耗,但是相应的,由于SM管理的流处理器暴增,控制单元压力也随之暴长,指令调度效率会受到很大影响(这就是GF600的384个流处理器只相当于GF500的128个性能的原因),因此GTX680每组SM的控制单元都做了优化改进,数量也是翻了两倍以上,以约3倍的效率提升来应付6倍的流处理器提升,总算把SM效率控制在了一个“应该合理”的范围内。不过,GTX680和GTX560TI一样做到了8组SM,总数就是8X192=1536个流处理器,运算能力翻了几倍,流处理器也终于可以取消翻倍频率的设计,明显降低了功耗和部分晶体管消耗,核心频率也终于突破了1Ghz大关。另外,显存控制器也做了“增强和缩减”,增强的是对高频显存的支持,缩减的是控制器的数量(4个64bit控制器组成了仅256bit的位宽规格),更少的显存控制器可以减少晶体管和功耗的开销(A卡一直是这么做的),加上指令调度的部分工作放到了软件端,虽然对驱动和编程有了更高依赖,但却可以明显减少晶体管消耗,功耗也再次得到控制(有点A卡的味道)。最终,GTX680晶体管控制在了35.4亿,芯片面积终于比A卡小了,功耗也更低,性能却强于对手HD7970,成为真正意义上的最强。
至于GTX680的缺点,由于没有更强的参照物做为对比,无法得出结论,就像当初每一代的最强核心发布,我们都认为它是“完美”的,但之后被更强的核心超越时,我们才知道原来还可以这样改进,原来它的缺点是这个等等等等。所以要等这个结论,可能是明年了。我们唯一知道的是,GTX680架构的设计是基于第4代GTX460及第5代GTX560TI的尝试性设计而得出,效率与计算的比例目前看来还是“完美”的,但今后肯定会有更合理的比例来超越它,我们拭目以待。

(N卡近代的架构体系没有明显改变,重点在SM管理的流处理器数量上做文章,从32个到48个再到目前的192个,以及随之强化的SM控制单元)
关于GTX680的命名,其实还是有点意思的,本来GK104并不是定位在旗舰的核心,从之前的GF104(GTX460)和GF114(GTX560TI)可以看出,同属4字辈的GK104也应该是相同的定位,型号也应该是GTX660TI之类的更合理,现在却命名为GTX680,看来原因只有一个:对手的旗舰HD7970性能没有达到预期。就像当初AMD也碰到了此类问题,HD6800系列本来是要命名为主流HD6700系列的,谁知道性能超过预期,接近了上代最高端HD5870,为了避免造成真空带,最后只能“升级”为HD6800,把高端改为HD6900了。GK104的出现,说明NV其实还有真正的高端没有放出,代号应该为GK100之类完全追求高性能、极致通用计算性能、功耗也较高的旗舰核心,看来只能在AMD放出HD8000以后才能看到了(在官方没有发布确切消息之前,以上只能是猜测,初学者不用当真)。
在GTX680发布三个月后,AMD发布了高频版的HD7970GHZ,核心/显存频率接近GTX680达到1000/6000MHZ,在相同频率下性能稍强于GTX680,说明架构还是可圈可点的,不过功耗却高了几十W,效能比明显不足,GTX680完全也可以提升频率来赶超,而且提升空间还要大一些,所以HD7970GHZ版的意义不在于超越,而在于抗衡。
两家的第六代其它功能特性:
之前A卡多屏输出的优势项目还是继续保持,不但支持六屏输出,还突破了三路音视频独立的屏障,并且支持了不同尺寸分辨率屏幕的弹性组建,技术更上一层楼;而N卡终于做到3屏输出和3屏3D视觉输出,超越了自己,但相比对手还明显不足。
在自家抗锯齿技术上,NV推出了最新的TXAA技术,虽然还没有游戏支持,但其效果和效率的比值很高,发展前景很大,A卡在这方面虽然也在发展,但相比之下还有所欠缺。
在高清解码上,两家都提升了解码引擎,功能更强,效率更高,但还是那句话,目前的入门级CPU都可以轻松搞定高清了,软解码画质还更好,显卡的硬解码功能已经没那么亮眼了
DX11性能方面,两家从第4代就开始支持DX11(A卡是HD5000,N卡是GF400)
虽然A卡支持了完整的DX11功能特性,但由于只有一个多形体引擎,导致对DX11其中一个特性(曲面细分)性能不足,这样在碰到采用过多曲面细分技术的DX11游戏时,性能就会受到严重影响,虽然众多DX11游戏中“曲面细分”效果比重大的几乎没有,但将来大量采用还是有可能的,所以A卡的这个弱项一开始就受人诟病。于是到HD6800系列后,A卡的双前端处理器也同时带来了两个多形体引擎,曲面细分性能可达到上代的两倍,但相比对手还是较弱。到了HD7000系列后,多形体引擎还是没有增加,不过却做了优化改进,效率翻倍,达到之前四倍以上的性能,尽管如此,还是稍弱于对手。看来目前的游戏让AMD不太重视这个项目。
NV方面,从GF400开始就在每组SM中集成了多形体引擎,GTX580凭着16组SM就具备了16个多形体引擎(虽然单个引擎功能与A卡不能比较,但16个并行的效率还是非常可观的),所以N卡这方面一直占有优势。不过有一点是需要注意的,N卡越往低端,SM就越少,连带的多形体引擎也就越少,而A卡则几乎是整个系列前端都一样,除了HD6800系列以上有两个多形体引擎外,其它都没有差别,所以越往下,两家的曲面细分性能差距就越小,到最后反而是A卡占优了。
当然,DX11游戏数量本来就不多,大量采用曲面细分效果的更是极少,而且无一例外的都是显卡杀手,中低端显卡基本是全灭的,造成了两个现象:
1。大多数玩家无法体验到曲面细分效果带来的影响,也无法感受到显卡这项性能的差别
2。多数曲面细分性能的测试都是N卡占优(因为这些游戏只有高端顶级显卡能应付,而在高端上N卡的曲面细分是强于A卡的)
所以,目前游戏环境对这方面影响不明显,当未来普及曲面细分后,两家显卡也肯定会做出相应的改进。
至此《N卡与A卡的区别》篇已经完结,下一次对比可能要在5年之后了,到时会以现在的28纳米架构为开端,再看看5年之战的精彩。
结语:
N卡与A卡的大讨论“自古”就有,未来也不会结束,我们提倡更大的讨论,同时也提倡讨论的内容走向更理性和正确的方向。
喜欢某个品牌其实无可厚非,但为了支撑这个“喜欢”而去找各种支撑的理由和传播不科学的言论,就不应该了。就像某些喜欢苹果的用户,找了一堆“质量好、研发成本高”等无知的理由来支持这个高价,不但让自己喜欢的品牌掉价,还暴露出自己“喜欢”的肤浅。我们不禁要吐槽:你至少要了解自己喜欢的东西才讲话吧!
喜欢是不需要理由的,你若喜欢一个东西,一句“我喜欢”就可以了,不需要找一堆莫需有的理由来证明它的好,你唯一要做的就是真正了解它的优点和缺点,并勇敢的直视别的品牌的优点,
你还记得吗,那个最初让你选择这个品牌的原因,尽管可能是某个“高手”的推荐,尽管今天你已经明白那些推荐的理由是多么无知和愚蠢,但是你放弃了吗,你还需要那些理由来支撑吗?
如果有人问我支持N卡还是A卡,我只会给他讲一句废话:“两个我都支持”,“为什么呢?”,硬要找一个理由的话,那只能是:“因为这两个站在全球图形领域最顶峰的品牌,都是出自华人之手。”
神皮顽
2012书