科技年轮 | 浪子回头金不换——聊聊AMD GCN显卡架构史(上)
Hello大家好,由于各大学校都陆续进入了期末考试周,飘哥也忙于复(预)习考试,本周的科技年轮呢就由小天哥来跟大家聊聊近几年AMD显卡赖以生存的“骨骼”——GCN架构。顺便也给大家梳理一下,农企这些年发布的显卡中的各种“马甲”,帮助大家做到心里有数。
在梳理GCN历代架构之前,让我们先来看一下这张汇总表:
▲注:图片较大,大家可以保存后查看
本表包含了HD7970以来的所有AMD GCN架构显卡,截至Polaris架构RX系列。由于VEGA织女星架构至今只有VEGA64/56流出,本表将暂时不涉及,待VEGA系列全面铺货后再行更新。
- 0 -
序:GCN诞生之前
大家可以回头看一眼题目,在这里我将AMD的GCN架构比作“浪子回头金不换”的一代架构,为什么这么说呢?这要从HD7000之前的HD5000/6000系列说起了。
▌被胜利的喜悦冲昏了头脑
飘哥曾经在《科技年轮 | 红色永不服输 ATI/AMD旗舰进化之路(下)》(戳我传送)中提到,AMD在尝到了HD4850/HD4870小核心战略的甜头后,凭借着对40nm制程以及GDDR5显存的成功试水,在DX11发布的初期,AMD就抢先一举发布了1600个流处理器的HD5870,轻松拿下单芯性能王座。
然而早在DX10时代,由于混合型指令以及分支预测的情况更加频繁,NVIDIA就拿出了G80/G92这种统一渲染架构,即把原本像素着色、顶点着色以及DX10中新增的几何着色,统一交给流处理器来处理。而AMD刚刚尝到小核心战略的甜头,没来得及思考核心架构的不足,单单凭借进一步的“堆料”,就又昂首阔步走进了DX11的时代。虽然在隔壁GF100核心深陷良品率的泥潭时成功收复了不少失地,但是NVIDIA凭借多年来在统一渲染架构方向打下的基础,以及在GT200时代为通用并行计算而优化的架构,凭借Fermi核心一举完成了DX11与并行计算的完美结合。
接下来的事情大家想必都有些许印象了:在游戏领域,HD5870大幅落后的曲面细分性能在对阵GTX480时一败涂地;在通用计算领域,VLIW5这种SIMD架构注定其只在处理被打包好的4D+1D指令时才能完全发挥性能,因此要求编程人员/驱动程序将众多复杂的通用指令打包成4D+1D的处理模式,大大限制了其性能的发挥。反观NVIDIA,MIMD的统一渲染架构使得无论什么样的指令都无需打包直接在SM中运行,再加上兼容C语言特性的CUDA日趋成熟,最终直接导致中国最强的超级计算机天河一号由曾经使用的HD4870X2,升级成了NVIDIA的Tesla,宣布了AMD在通用计算领域的全线溃败。
▌可怕的不是走错路,而是在错误的道路上越走越远
AMD在使用HD5000系列收复失地之后,也已经意识到在DX11时代,4D+1D的超标量运算架构效率逐渐低下。AMD通过自己长期内部测试发现,VLIW5架构的五个处理槽中平均只能用到3.4个,也就是在游戏里会有1.6个白白浪费了。
但可怕的是,针对NVIDIA早早布局的通用计算领域,AMD却仍然不甚上心,认为自己的VLIW架构依然还能“再战三年”——于是,小幅优化的VLIW4架构诞生了。AMD在HD6900系列中,将较少用到的全功能1D ALU削减,转而使用3个更加小而灵活的1D ALU来完成以前交付给那个全功能的1D ALU的复杂操作。同时,采用双发射的指令架构,使得HD6000系列相比HD5000系列的曲面细分能力等更上了一层楼。
但是,相比良品率已经提高、以GF100完全体呈现的GTX580,HD6970不仅仅输在了曲面细分这一项,游戏性能甚至全面落败,仅能和GTX570一战。而在通用计算领域,老旧的VLIW架构更不用说,已经完全不是Fermi的对手。加之HD6970的指令发射单元由HD5870的1/5*SP总数增至1/4*SP总数,相对应的核心面积、晶体管数目以及功耗均大幅增加。在保持40nm制程的前提下,它毫无疑问成了一颗核弹。而双芯的HD6990……
- 1 -
GCN1.0 横空出世
终于,AMD看到了自己在通用计算领域的短板,同时随着DirectX的发展,混合型指令以及分支预测的情况更加频繁,1D、2D、3D的种种指令越来越多,即便是VLIW4的架构也不足以抵消非4D指令执行的低效率。于是,AMD痛定思痛,开始了GCN架构的研发。
GCN,全称为Graphics Core Next,字面译为次世代显示架构。从这一代架构开始,AMD完全抛弃了VLIW架构体系,转而使用像NVIDIA的SM一样的GCN单元(也叫做CU,Compute Unit),每个CU内部拥有4组SIMD阵列。虽然架构还是基于SIMD体系,但是四组SIMD阵列同步运行使得每个CU单元每周期可以执行4线程,具备了MIMD体系的特点。而每个SIMD阵列又拥有16个ALU,因此HD7970便是32个CU-128组SIMD阵列-2048个流处理器。
GCN架构可谓是AMD全新的革命性架构,除了传统的3D运算之外,它还在GPU通用计算上洗心革面,是AMD首次针对3D渲染/GPU计算双重使命而设计的。在VLIW的弯路上走了许久之后,终于正视了GPU在通用计算领域重要的作用,也终于下定决心重新设计GPU的架构。因此,小天哥将GCN称之为AMD“浪子回头金不换”的一代架构,GCN设计的成功甚至可以让AMD在7年以后的今天,依然在GCN架构的大框架下,进行着修修补补,推出了一代又一代的新(马)显(甲)卡。
- 2 -
GCN1.0 显卡解析
HD7970推出后,AMD终于又打了个漂亮的翻身仗,特别是前瞻性的加入了2个ACE异步运算单元,使得DX12到来的时候毫不慌张的适配了DX12的异步运算特性。反观NVIDIA,直到Maxwell 2代(GTX900系列)才将异步调度的功能加入Warp Scheduler,并且由于不是硬件实现,及其依赖驱动的优化,后果大家也看到了——就是在《奇点灰烬》中,全面落败了AMD显卡。当然,AMD在16.9.2驱动之后禁用了GCN1.0的异步运算支持,这就是后话了。
不过,目前真正做到使用底层API开发的纯DX12游戏依然不多,而且NVIDIA的驱动层面也已逐渐跟上,这一点用N卡的同学们还是不用担心的。举这个例子,只是说明AMD的GCN架构在设计之初,就具有了一定的前瞻性,也使得AMD冠上了“三年之后再三年,缝缝补补又三年”的称号。
接下来让我们说说采用了GCN1.0架构的显卡都有哪些吧。从本文最开始的表格中可以看到(为大家方便,这里再放一次):
大家熟悉的R9 280X / R9 280,其实就是HD7970 / HD7950的马甲,甚至连核心名称都没换,只是优化了一下工艺就推出了。而HD7930则是AMD在HD7950的基础上再砍一刀,用于对抗GTX660Ti。不过需要注意的是,同为Tahati LE核心,显存位宽却有384bit与256bit两种。虽然最终AMD交由各大AIB厂商发布的是256位宽的HD7870+(又名HD7870XT、HD7890),但是384bit的HD7930也曾经有公版流出到市场上。
而接下来的Pitcairn XT核心,可谓是AMD的“最强马甲”卡,从HD7870到R9 270到R9 270X再到R9 370X,全部是一个核心,只是优化了工艺,超了超频率,再改改核心名称,就推向了市场。与之对应的Pitcairn PRO核心,则是从HD7850到R7 265(国外市场)R9 270 1024SP(国内市场)再到R9 370,也是一路马甲下来。特别是R9 270和R9 370,看似同样的定位竟然出现了开倒车的情况,十分令人唏嘘。
有趣的是,AMD的AIB厂商AFOX在向TomsHardware送测HD7850时,竟然无意中送错,送出了一块768SP的HD7850,使得各大媒体竞相将其猜测成填补HD7770 / HD7850中间空档的HD7830,还“脑补”了GTX560Ti与其“对阵”……当然,在TomsHardware联系了AFOX确认是其送错了样品后,这事也就不了了之了。
低端卡一直是马甲重灾区,从表中大家也都能看出来,在这里也就不给大家详细解释了。不过,HD7790却是HD7000系列中的一朵“奇葩”,它的出现直接为我们带来了GCN2.0(GCN1.1),那么这朵“奇葩”,以及之后的GCN3.0(GCN1.2)、GCN4.0,就留到下周给大家继续讲解吧~本期科技年轮就先到这里,我们下周债见啦!