开篇
很多朋友对目前A/N两家的图形架构非常有兴趣,这是一件很好的事情,我们也鼓励大家一定程度结合显卡实际性能去了解架构设计的特点,当然有些部分我们也是没办法去深究的,因为厂商(A/N)也并不会透露给我(对)们(手)。对于一些公开的设计我们可以尽量去了解,有的时候真的可以通过对比几代的架构来看出产品设计的趋势,甚至是一些猫腻。我想许多同学会问什么事显卡的图形架构,打一个比方,把显卡比作一个人的话,显卡的架构就相当于人体内部的结构,显卡对不同数据执行运算过程就相当于人体对不同食物进行消化吸收的过程,显卡核心架构执行指令处理数据的不同情况也就相当于我们人体吃不同类型食物可能有不同表现类似,当然不同的是显卡架构一代代可以变化改进,而人体原生的结构恐怕轻易没办法改变了。目前AMD在售的旗舰显卡是FURY X,架构是基于GCN 1.2,NVIDIA的则是TITAN X,架构是MAXWELL,下面我们就来看看这两款产品的架构设计特点。 在介绍之前大家要先了解一个问题,那就是显卡的核心GPU跟CPU的差别,两者的相同点就是GPU和CPU同样是用来执行指令处理数据的单元,同样跟人体一样,GPU和CPU执行指令的过程如果好比人吃东西一样,假如我们面前有几盒菜,首先我们要打开饭盒,然后根据你的口味和身体情况来选择哪些食物可以吃,有的时候还要根据习惯来安排吃东西的顺序,比如点心类的食物我们可能要放在主食之后再吃,然后把你要吃的东西再送进嘴里,吃下去,GPU和CPU的这个过程就是寻址、取指、缓存、判断、队列、发射、执行,其中GPU在每个线程队列执行的时候是要严格按照顺序的,也就是In-Order,而CPU是可以按照“需求”的顺序来打乱排列这些线程的,也就是Out of Order(简称OoO),所以对于没办法“排序”要处理线程的GPU来说就涉及到执行效率这个问题,这也是目前无论是A还是N每一代图形架构都在调整和改进的地方,同时GPU在处理和排序这些线程的能力并没有CPU强,所以有些排列线程的环节是交给CPU来完成的,因为CPU的逻辑运算能力更强,GPU更多的能力则是并行运算(戏称为肌肉运算)。 NVIDIA MAXWELL架构的SMM单元 NVIDIA MAXWELL架构:前面说了GPU强大之处是并行运算,其内部也是有许多重复的单元来并行,AMD和NVIDIA都是如此,其中无论你是GTX960还是TITAN X,架构都是MAXWELL,其中图形架构内的一个完整“模组”我们称为SMM(Maxwell Streaming Multiprocessor)单元,也就是上图,其中一组SMM单元内有四组SM(Straming Multiprocessor)多核流处理器阵列单元,每组SM单元内有32个标量的CUDA Core(最基础的运算单元)我们习惯叫SP流处理器,每个流处理器里面整合了包括单精度FPU和ALU,同时还有8个SFU(特殊函数执行单元,因为有些函数比较特殊复杂,一般的CUDA Core无法执行,所以就设计了SFU)。另外大家注意一下上图的黄色部分,那是PolyMorph Engine 2.0单元,是MAXWELL图形架构中来做几何顶点变换与运算的,我们熟悉的Tessellation曲面细分效果就是在这个单元内完成的,然后大家向下看,蓝色的Instruction Cache是指令缓存,再往下橙色的是Warp Scheduler,这个就是来进行线程调度排序的单元,其中Warp对于N卡来说就是一组待处理的线程,包括32个线程,Warp分配判断就在这个单元内,同时也需要跟CPU打交道,从Warp Scheduler出来的指令要通过下面棕色的单元Dispatch Unit(发射单元)来送到流处理器内,MAXWELL架构的每个SM单元内有两个Dispatch Unit发射单元。其中TITAN X的GM200总共有24个SMM单元,大家可以算一下TITAN X的流处理器数量,这就是MAXWELL基础的架构特点。可能许多同学说3072个流处理器同时工作岂不是很强大,这里就存在一个效率问题,那就是上图中的魅族SM单元内的对应的两个发射单元要进行处理的Warp A和Warp B存在相关性,比如Warp B需要Warp A的运算结果才能执行,那么此时Warp B就要等到第二个周期才能执行,如果所有的SM单元都存在这种情况,那么TITAN X的3072个流处理器只有一半也就是1536个在工作,当然这是最坏的情况。 AMD GCN架构的CU单元 AMD GCN架构:无论你的显卡是7850,或者是R9 390X,再或者是FURY X,架构都是GCN,上图就是AMD GCN架构内的一个完整的运算模组CU(Compute Unit),比如说FURY X就是总共有64个CU,这个CU内还包含了4组16way-SIMDs ALU,这么说可能不是很好理解,其实说白了就是4组并行的ALUs,每组是16个同时以SIMD(单指令多数据)模式工作,比如有一个运算指令进来,那么同时可以处理16个数据。同时上述的4组16way-SIMDs ALU同样需要配合类似N卡MAXWELL线程调度单元,处理的数据称之为Wavefront,等同于N卡的Warp,一个待处理的Wavefront包括64个线程,而在GCN之前的VLIW4架构尽管一个Wavefront也是64个线程但却是VLIW4“规格”的Wavefront,如果存在Wavefront A和Wavefront B的相关性,那么抱歉就算空余ALU同时不管Wavefront C~X是否无关也要等下个周期才能继续执行,而到了GCN这代情况就好了不少,如果遇到上述情况,那么可以绕过B直接执行C、D、E,然后下个周期再执行B、F、G、H。其中魅族CU内还集成了一个Scalar ALU单元,这个单元是类似N卡的SFU,用来执行特殊函数的。而GCN架构除了CU单元还有一个很重要的叫做Geometry Processor的单元,这个单元类似N卡MAXWELL架构中的PolyMorph Engine,用来进行曲面细分等变换操作的单元,其中FURY X的GCN 1.2架构中有4组Geometry Processor,就是下图!当然GCN架构也存在最坏的情况,那就是比如FURY X的4096个流处理器,在每个CU中遇到待处理的Wavefront都存在指令相依性,也就是Wavefront A~N可能都相关需要前面一组的处理结果,最坏的情况就是对于4发射的CU只有1个发射端口可以发送Wavefront,此时FURY X整体有效工作的流处理器则只有1024个,不过这种概率跟前面N卡的TITAN X相同都是很小的概率。 R9 390X 的Hawaii核心图形架构 其中R9 390X是GCN 1.1架构,区别在于比起HD7970的GCN1.0来说在Geometry Processor部分强化很明显,特别是曲面细分效能增强。而GCN架构真正强大的是运算效果,注意这个运算可能不是图形运算,对应每组CU内配备了单元间可共享的缓存,这是要比N卡强的,但是这也消耗了大量的晶体管资源。而GCN对于线程调度同样是比较“挑食”的,所以AMD也表示目前GCN架构的显卡在DirectX 12上面的表现会更好,因为DircetX 12下的线程执行效率更迎合GCN架构。当然在DX12还没出来,具体表现如何还要看显卡在真正支持DX12游戏中的表现。 |
手机版|外设堂 ( 辽ICP备13014379号 )辽公网安备 21010202000549号
GMT+8, 2024-11-25 09:34 , Processed in 0.104663 second(s), 24 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.