从GTX到RTX NVIDIA GPU架构的变迁史
本文转载自,其他媒体转载需经超能网同意
gpu发展史上,2006年是一个不能错过的节点——这一年amd以54亿美元的代价收购了ati公司,从此手握cpu及gpu两张好牌,amd此后一直以此为荣,强调他们是业界唯一能够同时提供高性能cpu及高性能gpu的公司,cpu拳打nvidia,gpu脚踢英特尔。当年另外一件事就是微软在dx10 api上推出了统一渲染架构,nvidia 2006年发布的g80架构geforce 8800 gtx显卡率先支持统一渲染,从此nvidia的cuda也闪亮登场了。
2006年发生的这两件事本质上没什么关联,但是回想起当年及之后的gpu发展情况,总忍不住遐想一下如果当年ati没被amd收购,ati、nvidia两家gpu公司今天的发展会如何?因为在2006年前后,ati在独显gpu市场上的份额与nvidia并没有多大差距,05年之前市场份额甚至还领先一些,但2006年被收购之后由于两家公司需要整合,amd/ati两边的cpu、gpu产品路线图都不免受到影响,也是从那个时候amd显卡的份额不断下滑,与nvidia的差距不断拉大,从曾经的55开变成了46开、37开,直到今年初双方的差距已经是28开了。
reddit上有帖子讨论了2002年到2017年gpu市场的份额变化
nvidia做大靠的是amd收购ati的机遇吗?也许有天时地利的因素,但从根本上来说双方差距的拉大还是源于产品/技术的差异,nvidia在g80架构之后就开始占上风了,期间虽然也有gtx 480这样的翻车事故,但总体上还是一路上扬的,40nm fermi费米架构之后kepler、maxwell、pascal、volta(这代只有titan v这一个桌面版显卡),再到去年的turing图灵显卡,nvidai在gpu市场上的地位已经稳如狗了,amd近几代显卡掀不起大风大浪了。
nvidia的gpu路线图已经四五年没更新了,最新的还是15年版
nvidia以往会在gtc大会上提前两三年公布gpu路线图,不过2015年之后更新过pascal显卡之后就不再推新的gpu路线图了,turing图灵显卡发布之前就没在路线图上出现过,图灵之后的gpu架构官方也是守口如瓶,目前的说法称之为amper安培,但最终是否如此还是未知数。
今天的超能课堂里我们就来回顾下nvidia gpu的发展过程,回头来看下这10年中nvidia gpu都经历了怎样的变化。同样地,后续还有amd的gpu发展路程姊妹篇,敬请期待。
nvidia g80到gf100架构:40nm费米gpu的教训
nvidia的gpu发展史少说也要从g80时代cuda架构开始讲起,不过限于篇幅原因,这里不打算再挖坟这么深了,g80及衍生版的g92核心在nvidia gpu中非常经典,马甲卡当初就是形容这一时期变化的,可以说花样频出,比现在的刀法精湛多了。
microway之前总结过gf100架构及之前的nvidia gpu架构情况
曾经有段时间业界形容amd、nvida在gpu策略上的不同是“amd擅长小核心,性能适中,但是低功耗、nvidia偏重大核心,性能强,但功耗高、成本更贵”,nvidia在gt200核心上确实是大核心策略,在gf100核心上达到了巅峰,从sp单精度、dp双精度配比上大家应该可以看出来,这时候nvidia已经在大幅提升gpu的计算性能了。
在40nm fermi费米架构中,nvidia一下子将cuda核心数提升到了512个,是gt200核心的两倍,而且单双精度达到了1:2,大量核心用于双精度计算。但是第一代费米核心的gtx 480显卡也因此翻车了,还记得那个著名的显卡红外温度100°c+的图片吗?说的就是gtx 480时代的事。
当年的gtx 480显卡(上)与gtx 580显卡(下)
gtx 480在功耗、发热上的翻车教训导致nvidia一度很难堪,直到后来推出了gtx 580显卡才有所缓解,详细情况大家可以翻看我们之前的评测:fermi威力完美呈现,geforce gtx 580全球同步评测
总的来说,40nm费米架构这一代,nvidia在gpu设计上有了一次飞跃,规格大幅提升,不仅注重游戏性能,也重视计算性能,为此塞入了更多的双精度计算单元,但也因此带来了诸多问题,gtx 480翻车事故带给nvidia很多教训,多多少少都影响了后来的gpu架构设计。
2012年nvidia kepler架构:游戏、计算gpu分离,nvidia后发制人
距离gtx 580显卡发布一年半时间后,2012年3月22日nvidia推出了gtx 680显卡,由此28nm工艺的kepler架构闪亮登场。这时候amd基于全新gcn架构的hd 7970显卡已经发布将近3个月了(海外市场2011年12月底发布,国内是次年1月初),后者当时光芒万丈,gcn架构同时融合了计算及游戏的优点,性能比之前的vliw架构显卡有了明显进步,而且还首发了台积电28nm工艺、pcie 3.0等等。
gtx 680发布于2012年3月底
gtx 680显卡使用的是kepler家族中的gk104核心,但gk104反应的架构设计思路早在gf100到gf104、gf114架构中就有所体现了,那就是减少sm单元数(nvida这代的正式称呼是smx单元),提升每组sm单元中的cuda核心数,gf100时代每组sm单元还是32个cuda核心,gf104/gf114则是每组sm单元48个cuda核心,而到了kepler时代,每组sm单元的cuda核心数一下子提升到了192个,纹理单元也增加到16组,前端渲染单元也增加到四组,同时sfu以及ld/st单元也是水涨船高,增加到32组,纹理单元再次翻倍,8组smx单元总计有1536个流处理器、128个纹理单元以及32个rop单元。
gf110 sm单元(左)、gf114 sm单元(中)以及gk104 smx单元(右)对比
除了sm单元大变之外,nvidia在kepler架构中还做了一项重要改变——从kepler开始,nvidia以往坚持的core:shader=1:2的分频模式已经没有了,以前采用这种方式是因为核心频率不能大幅提高,为了提高性能就必须让cuda的核心频率增加一倍,但是这也意味着更高的能耗。
gk104架构的一大特点就是cuda规模大幅增长
gtx 680中nvidia将smx单元中的cuda核心数提高至原来的3倍,而且核心频率也达到1ghz以上,不再需要shader异步了,二者将同频运行,有助于降低显卡功耗,因此gtx 680在cuda数量暴增的同时功耗更低,而每瓦性能比更是提高了一倍。
gtx 680显卡的规格
在kepler时代,nvidia还改变了一个潜规则——以往gpu发布是首发大核心,比如费米时代的gf100到gf104/gf106,而kepler时代是首发gk104,更大的核心gk110是后面才发布的。不过这次改变也只是kepler时代出现的,在后面的pascal、volta及现在的turing中多是大核心先发(gtc大会上首发,tesla计算卡先用),gx104/106核心后续才会跟进。
gtx 680显卡的发布解决了nvidia的燃眉之急,游戏性能小幅领先amd的hd 7970,扳回了一局,不过计算性能上不如后者,毕竟gk104并不是为计算而生的架构。对nvidia来说,kepler是他们真正贯彻了游戏、计算卡彻底分离的产品,想要更好的计算性能?那就找大核心的gk110核心吧。
2012的gtc大会上nvidia就展示了gk110大核心的威力,年底的sc超算大会上正式发布了基于gk110的tesla k20x及tesla k20加速卡,完整版gk110核心拥有15组smx单元,总计2880个cuda核心,集成了71亿晶体管,核心面积也达到了551mm2。
gk110核心的smx单元中依然有192个cuda核心,但dp双精度单元数量从gk104的8个提升到了64组,这样一来但双精度的比例就变成了1:3,虽然还没有达到费米时代1:2那么夸张的地步,但远高于gk104的1:24了,再加上总性能的提升,gk110核心的计算性能总体来说还是进步的。
此外,gk110不仅仅是计算规模的增加,还增加了一些计算专用的新技术,比如nvidia开发的grid management unit、gpudirect、hyper-q以及dynamic parallelism动态并行技术。
第一代titan显卡
在消费级显卡中,gk110首先用于2013年3月发布的gtx titan显卡中,自此nvidia也开辟了一条新的产品线——titan显卡,售价是999美元起步,比当时的高端显卡翻倍。
此外,titan显卡的公版设计也与之前的显卡大为不同,并影响了后面的gtx xx80/80 ti系列公版显卡的设计。
titan显卡不是一般人买得起的,2013年11月份nvidia又推出了基于gk110核心的gtx 780系列显卡,其中gtx 780 ti使用的是gk110-425-b1新核心,与此前的gk110还有所不同,核心面积更小一些,而且启用了完整版smx单元,导致它的规格实际上比titan显卡更好,性能更强,以致于后面nvidia又推出了完整版gk110核心的titan black显卡。
在kpler架构的尾声阶段,nvidia还推出了gk210核心,它可以说是gk110核心的再改良版,也被称为kepler 2.0,cuda计算能力从gk104的3.0、gk110的3.5升级到了cuda 3.7。
此外,nvidia并没有改变cuda核心数或者cuda的架构,他们改进的只是smx单元之间的内存子系统,gk110(b)的smx单元拥有256kb寄存器文件,64kb共享缓存,gk210的规模翻倍,拥有512kb寄存器文件,128kb共享缓存,因此它改进了smx单元的数据吞吐量,提高了效率,确保cuda核心的更容易频繁使用。
不过gk210架构主要是用在计算卡上, 消费级显卡中没有,所以diy玩家的影响力非常少,倒是有同样kpler 2.0的gk208等核心用于低端的gt 740/730/720及移动版产品中。
2014年nvidia maxwell架构:smm单元又重组,更注重能效
在kpler时代,nvidia显卡从amd hd 7970显卡的阴影中走出来了,gk104核心的gtx 680追上了hd 7970,但没有全面优势,gk110大核心的gtx 780系列性能上有绝对优势了,只是功耗要高,但此时的nvidia已经掌握主动权了,毕竟amd后来推出hd 7970继任者的r9 290x同样存在功耗、发热的问题。
根据nvidia的路线图,kepler之后就是maxwell架构了,这时候制程工艺还是28nm,maxwell架构的重点则是改进能效。在这个阶段,nvidia又上演了一次出人意料的举动,maxwell架构既不是gm200也不是gm204,而是gm107,用在了gtx 750 ti及gtx 750显卡,从命名上也不是更新一代的,还是沿用了gtx 700系列的。
gm107核心使用的是maxwel一代架构,其最大变化就是将sm单元(这一代称为smm单元)再次重组,从kpler时代的每组sm单元192个cuda核心减少到了每组128个,但是每个smm单元将将拥有更多的逻辑控制电路,便于精确控制,这使得gm107核心的每核心效能提升了35%,每瓦功耗比提升了一倍。
这种全新的 sm 架构可大幅提升节能性,而且在着色器有限的工作场合中可令每个cuda核心的性能提升 35%。实现这些进步需要对架构进行大量重大更改。 nvidia重新编写了sm调度器架构和算法,使其更加智能,避免了不必要的停顿,同时进一步降低了调度每条指令所需的能耗。
当然,smm单元也有很多改进的地方,比如l2缓存容量从之前的256kb大幅增加到2mb,h.264及nvenc编码/解码能力也提升了,指令周期性能也改善了。
反映到显卡上,gtx 750 ti及gtx 750显卡拥有极好的能效比,游戏功耗比同期的hd 7770、gtx 660甚至gtx 650 ti功耗要低很多,而且温度、噪音也非常低,这款显卡可以说是近年来的一代经典。
在gm107核心的maxwell一代架构之后,nvidia又在2014年9月份推出了gtx 980/970显卡,它们使用的是gm204核心,也被称为maxwell 2.0架构。整个gm204核心可分为4组gpc单元,每组gpc则包含4个smm单元,每个smm单元又包含128个cuda核心,8个纹理单元以及一个多边形引擎单元(polymorph engine 3.0),总计2048个cuda核心,128个纹理单元。
在桌面级显卡命名上,nvidia这次跳过了gtx 800系列(oem及移动版gpu上有gtx 800系列),直接进入了gtx 900系列,gtx 980使用的是gm204-400核心,搭配4gb gddr5显存,但它的性能已经超过了gk110大核心的gtx 780 ti显卡,tdp则从250w直降到165w,整机功耗测试中也印证了功耗的大幅下降,可以说能效优势非常明显,不论是对amd的显卡还是对自家上代显卡而言都是如此,能效简直是碾压般的存在。
在gm107、gm204、gm206核心之后,nvidia在titan x显卡上又使用了gm200核心,而且是完整版的gm200-400核心,该卡发布于2015年3月18日,它使用的gm200核心拥有6组gpc单元,24组smm单元,每组smm单元128个cuda核心,总计3072个cuda核心,而显存控制器也从之前4组64bit gddr5变成了6组,位宽384bit。
不过6月1日nvidia又推出了gtx 980 ti显卡,使用的也是gm200大核心,但是阉割版的gm200-310核心,cuda核心数为2816个。gtx 980 ti显卡的详细规格如下:
2016年nvidia pascal架构:16nm制程红利,计算游戏核心再分离
时间很快到了2016年,4月初的gtc大会上nvidia发布了tesla p100加速卡,使用的是gp100核心,这是pascal架构的大核心,制程工艺升级到了16nm,这种工艺则是高性能工艺,所以在pascal显卡上其gpu频率大幅提升,起步就达到了1.6ghz,加速频率达到2ghz稀松平常。
在pascal显卡上,最大的特色就是先进工艺带来的制程红利,不过这时候的gpu架构再次出现了游戏、计算的分离,出现了gp100、gp102两种大核心,而且使用的架构、显存都是不同的,其中gp100是纯粹的计算核心,不仅有3584个单精度cuda核心,双精度核心也达到了1792个,重新回到了1:2的比例。
此外,计算用的gp100核心使用的是hbm 2显存,等效位宽4096bit,带宽达到了720gb/s,虽然没有实现hbm2显存1tb/s的满速带宽,但带宽已经比当时的gddr5显存大幅提升了,只不过hbm2显存实在太贵了,别说2016年,直到2019年的今天都远未普及。
2016年7月份nvidia推出了titan x pascal显卡,它使用的也是16nm pascal架构,但核心是gp102,全规格的gp102核心确实可以称为目前最强大的微架构:120亿晶体管、3584个流处理器、12gb gddr5x 显存、384-bit位宽,相比tesla p10的hbm 2显存和nvlink有所妥协,所以显存带宽为480gb/s,8+6pin供电,显示接口提供display port 1.4、hdmi 2.0b以及双链dvi,最大支持7680*4320@60hz输出,性能上达到11tflops。
在titan x pascal之外,桌面的gtx 1080 ti显卡也是gp102核心,除了显存容量、位宽的变化之外,gp102核心的sm单元架构也跟gp100核心不同,后者为了追求更高的计算性能,每组sm单元的cuda核心数减少到了64个,但集成了更多组sm单元,高达56组,而gp102核心虽然也是3584个cuda核心总数,但只有28组,每组sm单元的数量回归到了maxwell的128个,所以这一代游戏及计算再次分离,本质上来说gp100是真正的pascal核心,而gp102核心是16nm加强版的maxwell架构。
从gtx 1080的gp104到gtx 1080 ti的gp102核心,它们的sm单元架构倒是一致的,只是cuda核心数量的区别。
除此之外,gtx 1080系列显卡在在技术上也比gtx 980系列有所增强,使用了频率更高的gddr5x显存及更先进的内存压缩算法,改进了异步运算及对vr的支持。
2017年nvidia volta:真正为计算而生的gpu,支持ai加速
在nvidia的路线图上,原本maxwell之后是volta,后者技术迈进的更多,但因为种种原因,volta显卡进度不如预期,所以中间多了个pascal显卡,这也可以解释为什么gp102/104核心的架构其实比maxwell没什么质的变化。
但是volta就不同了,这又是一款真正为计算而生的显卡架构了,与pascal相比,gv100核心的cuda核心数一下子增加到了5120个,尽管使用了16nm改良版的12nm ffn工艺,但它各方面规格都很惊人——815mm2核心面积、211亿晶体管、5120个cuda核心、15tflops浮点性能等等。
在gv100大核心中,每组gpc单元是14个sm单元,总数应该是84组sm单元,但是现在tesla v100跟tesla p100一样都不是完全体,前者启用了56组sm单元,后者启用了80组sm单元,总计80x64=5120个cuda核心。
除此之外还有fp64单元,gv100依然延续了gp100中fp32:fp64=2:1的比例,每个sm单元中有32个fp64单元,理论上有2688个fp64单元,实际启用的是2560个。
更重要的是,volta架构在传统的单双精度计算之外还增加了专用的tensor core张量单元,用于深度学习、ai运算等,在gv100大核心中,每组sm单元中还有8个tensor单元,这样整个sm单元中就是fp32:fp64:tensor=64:32:8的比例存在,gv100也因此有了tensor计算能力这个指标,tesla p100的tensor计算能力高达120tflops,nvidia宣称它的tensor性能是pascal架构的12倍。
volta架构如此之特殊,以致于nvidia并没有推出对应的消费级产品,除了titan v这一款显卡,titan v从tesla v100的4096-bit、16gb缩减为3072-bit、12gb的hbm2显存,显存频率850mhz,等效数据频率1700mhz,带宽高达652.8gb/s,另外titan v的l2缓存减少到4.5mb,这些使得在深度学习运算性能上稍不如tesla v100(112tflops),显卡供电接口是6+8pin,显卡tdp 250w,显示接口为3个dp+1个hdmi。
2018年nvidia turing架构:追光十二年,rtx全新品牌诞生
volta这一代没有什么主流游戏卡问世,但这也没影响nvidia的显卡布局,gtx 10系列显卡时代恰逢矿卡市场再次火爆,导致gtx 1060等显卡完全不愁销路,2017到2018年上半年的时候nvidia及amd都不担心互相抢市场了,光是卖矿卡就大赚特赚了,所以gtx 10系列的pascal显卡升级换代周期长达2年多,发布2年之后不光没有退市,还没有降价,简直是显卡市场上的奇迹。
不过2018年下半年了,矿卡崩了,nvidia及显卡厂商即便有矿卡库存问题,还是要推新架构,8月底的德国科隆游戏展上nvidia正式发布了turing图灵架构,当然这次其实是游戏展之前的sigraph大会上现发布了面向工作站的quadro rtx 8000/6000系列专业卡。
对于图灵显卡,我们已经很熟悉了,这一代显卡最大的变化首先是全新的品牌命名,从gtx变成了rtx,而rtx代表就是实时光线追踪技术,因为这是图灵显卡技术升级最多的地方,nvidia ceo黄仁勋在发布会热情表态图灵是他们12年来gpu架构变化最大的一次,原因就是rtx,通过专用的rt core核心,nvidia实现了游戏中可用的实时光线追踪渲染。
除了rtx之外,图灵显卡也支持volta的tensor core,可以用于ai加速,nvidia之前也提供了多种显卡可用的ai玩法,比如dlss抗锯齿技术,不过相比rtx光追技术,ai加速在游戏中应用太少,不够吸引人。
在sm单元架构中,图灵这一代又有所不同了,不同于pascal架构中的gp102/gp104核心,更像是volta架构的gv100大核心,因为每组sm单元又变成了64个cuda核心,其中rtx 2080 ti使用的tu102核心一共分为6组gpc单元,每组gpc单元又拥有12个sm单元,一共是72个sm单元,但rtx 2080 ti也只用到其中的68个而已,算下来68 x 64=4352个cuda流处理器。
至于rtx 2080显卡使用的tu104核心,完整版的tu104核心依然是6组gpc单元,不过每组gpc改为8个sm单元,一共是6×8=48个,而rtx 2080的gpu核心是tu104-400,只用上了46组,还有预留有2组空缺的,46×64=2944个,规模要比rtx 2080 ti小多了。
支持rtx光追是图灵显卡的特色,不过rtx光追除了游戏数量的问题之外,还有一个问题就是它对性能的要求还是太高了,所以在图灵显卡这一代中nvidia的市场策略也不同,支持rtx技术的显卡主要是rtx titan、rtx 2080 ti、rtx 2080、rtx 2070及rtx 2060,而不支持rtx的则变成了gtx 16系列,包括gtx 1660 ti、gtx 1660及刚刚发布的gtx 1650显卡。
总结:五代gpu性能大幅提升,能效更高,但价格也更高
从2012年的kepler显卡到今天为止,nvidia的显卡已经推出了五代架构,如果算上每代中的大核心与游戏核心,那就是至少10款了,这些显卡的制程工艺也从28nm一路升级到16nm、12nm。在游戏性能上,根据超能网的显卡天梯榜,如今的rtx 2080 ti显卡的性能是gtx 480显卡的7倍左右,而gpu的晶体管数量也从30亿增长到了210亿,与性能增幅基本同步。
如果考虑到性能、功耗,那么多年来nvidia显卡的能效增长还是很明显的,毕竟大核心的tdp功耗多年来一直维持在250-300w之间,但性能已经增长了6-7倍。
此外,前面我们没有详细提及历代显卡的价格,但是这个趋势也很明显了,gtx 400到gtx 700阶段中,高端显卡的售价都是3999元,但是这几年来价格已经水水涨船高,nvidia这边尤其明显,titan显卡从最初7999元的价格一路涨到了2万元,而主流市场上的旗舰显卡价格也涨到了6000元以上,rtx 20这一代涨价更多,rtx 2080 ti售价直奔9999元,这是以往titan显卡的级别了。