百科问答小站 logo
百科问答小站 font logo



A卡和N卡的架构有什么区别? 第1页

  

user avatar   netwarm007 网友的相关建议: 
      

A卡的基本执行部件为SIMD(此处可能写为SIMD阵列的SIMT执行模式更为贴切?),而N卡的基本执行部件为SIMT(此处可能写成lock-step的MIMD更为贴切?)。这是最为根本的区别。


(补充:评论区有很多讨论,目前的A卡和N卡在编程模型(程序的书写方式)方面都是SIMT,也就是基本不需要编程者手动进行向量的组装和拆分。

本文讨论的是硬件层面是如何实现的,也就是两个GPU在实际工作时的举动差别。A卡是通过SIMD+mask的方式实现了SIMT-like,然而笔者认为N卡应该在thread的组织和执行方面更加自由,不要求相邻thread在index上面是连续的,也就是可以组织不相邻的thread一起运行。

SIMT一词出自N卡,为营销用语。由于N卡未披露细节,导致有各种层面的理解,从而并非有严格定义的词汇。本文中主要作为与传统SIMD区分的实现方式使用)


2022/2/15 再次补充:

找到一张N卡Ampere的SM的图:(developer.download.nvidia.cn

作为对比,这个是A卡RDNA2的CU的图,图中为两个CU组成的WGP:

amd.com/system/files/do

这张更容易看些,是单个CU的微架构逻辑模块框图:

可以很明显地看到,N卡的一个SM里面,分成4个一模一样的模块。每个模块有单独的调度器和寄存器文件(64kB),以及指令缓存。INT/FLOAT32/FLOAT64的ALU则一个一个散列在其中。可以猜想更加类似于一种根据工作量调度分配ALU到不同线程去执行的模式(但是lock-step,因为一个方块里的所有ALU共享一条指令队列)

而A卡的一个CU里面,整个CU只有一个I-cache,然后指令分为标量指令(s指令)和向量指令(v指令)。有单独的标量流水线,在图的右上方。而向量的执行则交给下方的SIMD进行(1个CU当中是4基SIMD,正好与N卡SM当中的小方块数量相同)

也就是,以一个SM对应一个CU的方式去看,A卡的指令队列数量明显少于N卡,N卡内部也没有明显的SIMD结构。(当然,有可能只是人家没有画出来)


SIMD是单一指令多个数据,比如,一条SIMD的加法指令,可以对4对以上的整数执行加法。

而SIMT则是单一指令多个线程,从表面上来看,依然是一条加法指令可以对多个数据同时执行操作。

两者的区别在于:

比如做蛋糕,SIMD就好像工厂里面的机器,有一个包含很多槽位的模具,整体一次注入蛋液,整体送入烤箱,然后整体出来;

而SIMT则是很多条蛋糕生产线,每条线只有一个槽位。这些生产线由一套控制系统统一控制,在任何时候动作是保持一致的。

从结果上来说,两者似乎是等价的。但是明显后者成本更高,因为每条产线都是独立的,有很多重复的设备。

那么N卡为什么选择了SIMT这种看起来有些费力不讨好的方式呢?

设想我们需要生产的并不是一种蛋糕,而实际上是有好几种:草莓口味的,酸奶口味的,原味的。

在A卡的体系当中,因为我们无法一次性注入3种蛋液,所以我们可能只能采取先生产一种,再换液生产另外一种的方法;

或者,我们可以用一个盖板挡住部分槽位,注入完一种口味的蛋液之后,移动盖板,然后切换另外一种口味的蛋液注入。

对于第一种方法,我们需要实现对订单进行分组,统计每种口味的个数。如果个数不是槽位的整数倍,我们还会面临材料或者产能的浪费;

对于第二种方法,我们注入蛋液的时间会明显增长,而且会有浪费。

而N卡采用的SIMT方法,多条产线玩两人三脚游戏的,我们完全可以给每条产线安排不同的蛋液,在生产效率方面和一种口味并没有什么区别。

这就是SIMT的先进性所在。

具体到GPU当中,虽然两种架构都是对大量数据进行并行化处理,但是A卡的SIMD要求被处理的数据在地址空间连续(也许说索引连续更准确),在一个批次(wavefront)当中可以使用的寄存器组也只能是一个(蛋糕模组是一个整体),也就是thread之间会有所谓“相邻寄存器”的约束。

但是在N卡当中就没有这样的要求,每一个批次(warp)当中的每一个thread都可以有独立的寄存器组使用,也可以访问内存上不连续的数据。

这种特性对于过往的光栅化渲染效果可能并不是很突出,毕竟无论是顶点数据还是贴图,亦或是最终渲染输出基本上都是地址空间连续的;即便对于一些情况有性能差异,A卡也可以利用其SIMD核心结构简单单一核心所需寄存器文件小的优势粗暴堆核心来平衡,这也是为什么A卡的核心数量一般远多于N卡同等级的数量的原因。(多打几个槽比多安排生产线容易多了)

但是,对于诸如光追这种明显的稀疏数据结构,不同的thread在计算几次(光线反弹几次)之后的路径大相径庭的时候,N卡的优势就出来了,而且这种差异很难通过单纯堆核心数去弥补。

当然,虽然SIMT名义上支持RAM的随机(不连续)访问,但是由于实际上依然会遇到访存时Bank冲突问题,所以即便在N卡上也要尽可能关注随机不连续访存可能带来的性能问题,对于buffer当中的数据组织形式要进行安排。

另外,SIMD也并非就完全没有办法实现随机分散访存,通过引入额外的寄存器(每个thread一个)到寻址当中,或者在寻址当中支持vgpr,同样是可以实现的。只不过不同thread使用不同的寄存器组,这个目前还是有些困难。


user avatar   yusu-mige 网友的相关建议: 
      

学CUDA之前花了一星期的晚上学习了显卡的简单原理+A卡架构粗略+N卡架构粗略,非常皮毛,具体要对比两家的架构异同并分析出门道来,肯定要一本书。

以我的皮毛知识得出的结论:NVIDIA的GPU在一开始就选择了正确的方向MIMD,通过G80 Series,Fermi,Kepler和Maxwell四代大跨步进化,形成了完善和复杂的储存层次结构和指令派发/执行管线。ATI/AMD在一开始选择了VLIW5/4即SIMD,通过GCN向MIMD靠拢,但是进化不够完全(GCN一开始就落后于Kepler),所以图形性能和GPGPU效率低于对手,完全不同意某些回答认为的GCN同NV这边效率差不多,SP单元的频率相同数量相同但是功耗翻倍说明两个架构效率差不多?完全无视GCN寄存器的低效率?逗我呢,NV光Cache/Buffer的层次结构就甩了GCN几条街

简单的说,事情的开端是微软在DX10提出了统一渲染单元(Unified Shader),把以前的Vertex ShaderPixel Shder的功能合并了,厂家可以自行选择如何实现。NVIDIA认为由于指令的灵活性(一条指令可能会操作不定个数的数据),最高效率是完全打散计算单元(流处理器,Stream Processor),所以搞出了G80系列,并拥有很强的CUDA性能。CUDA执行模型是SIMT(单指令多线程),G80会在物理上把若干个(G80是8个)流处理器组合到一起,共享缓存,形成一个SM单元(Stream Multiprocessor)。因为单个SM里的所有流处理器共享缓存,所以CUDA模型里,会把多个Thread打包成一个Block,让Block内的线程在同一个SM里跑(实际执行粒度是Wrap,Block内的Threads不是同时跑的,但是线程切换开销极低,这个和CPU不同,因为显卡的寄存器数量巨大,可以理解为拥有很多个超线程的CPU,对超线程技术有了解很好理解,因为Intel的超线程技术就是分时调用Decoder但每个线程独享寄存器),Block内的线程间可以数据同步,不同Block间线程则不行。YouTube上有个视频很形象的把这种模型类比成OpenMP+MPI。

上面我好几处都用了“若干个”,因为这个数量配比在每一代都会有变化,而且对SM的定义也有变化如SMX,SMM,当然还有TPC、GPC等更高级SM集群的概念。核心依然是——NVIDIA在精心地、大胆地调配Stream Processor、Dispatcher、Register File、Buffer、Cache等单元的层次结构和数量配比。当然细化到每个单元,每一代都有支持新的特性。所以NV这四代的架构给人感觉差别特别大,远大于GCN1.0-4.0的差异(AMD还是没钱啊)。

到AMD这边,一开始AMD迷信VLIW(其实当时挺成功的),VLIW5即5个流处理器为一组,后期出现了VLIW4(HD6990),期望通过把多个操作不定长数据的指令打包成一条操作定长数据的指令来执行(指令级并发ILP,NV是线程级并发TLP+ILP,效率更高),例如3+2=5,1+4=5——请注意这个过程是通过编译器实现的,也就是并非硬件调度!一开始看到这个我很吃惊,这不是Itanium嘛(不过Itanium也是有硬件调度的)!

在VLIW强行扩展规模好几代之后,AMD意识到了效率和通用计算的缺乏,开始学习NV的MIMD思想,推出了GCN(CPUGPU两个VLIW都死了,不过ATI的这个在当时是很成功的):一个dispatcher对应16个流处理器和64kb寄存器文件,成为一组,四组+前端构成了一个CU单元,外带一个独立的流处理器和4kb寄存器文件。CU单元使得AMD也拥有了SIMT的能力。但是,CU单元的这种层次结构,在硬件上容易设计,但实际依然是以SIMD组来执行的。

非常巧合的是,GCN是16个SP对应一个Dispatcher,Maxwell也是平均16个sp享有一个Dispatcher,但是Maxwell的前端显然强得多,这是NVIDIA在四代MIMD的不断尝试下的成果。

其实Kepler的时候,已经出现了虽然HD7970GHZ性能和GTX680性能相同频率接近,但是NV的能耗比明显优于AMD的情况了,到麦克斯韦又大幅调整了执行管线和储存层次结构(SMX —> SMM),AMD的修修补补就落后太多了。

PS,之前仔细阅读过超过5本CPU微架构书籍和教材(现代处理器设计——超标量处理器基础,缓存层次结构,微处理器(CPU)的结构与性能,Anger's The microarchitecture of Intel, AMD and VIA CPUs,Intel 64 IA32架构优化手册等等好久之前看忘了名字)还是只能大致理解为什么这个处理器好,所以上面GPU的理解肯定是很皮毛的,看看就好。


user avatar   lulueh 网友的相关建议: 
      

显卡行业现在的态势,很大程度上就是2012年那次精彩的显卡架构大战奠定的,当年中关村有三篇文章好好的科普了下两家的架构,感兴趣的朋友一定要看看,因为即使到了2018年,两家的GPU架构总体还是基于2012年那次架构革新。

年度显卡技术回顾 显示世界的2012前篇

显示世界的2012中篇 年度GPU架构回顾

显示世界的2012终篇 显卡业界深度解析

拓展阅读:移动GPU构架全揭秘


然后作为一个硬件爱好者兼A饭谈谈自己的看法,不可否认的是,无论是硬件上还是软件上,NV都领先AMD太多了,甚至软件方面比硬件方面差距更大。NV多年布局的CUDA平台,和游戏开发商合作的THE WAY计划,还有GAME WORKS开发工具都比AMD领先太多,因为AMD这边除了偶尔还有点存在感的AMD Gaming Evolved计划,几乎没有对位的东西了(如果不算刚刚开始的ROCm平台)。

软件方面按下不提,咱说硬件,我始终认为,在2012年的当时,两家架构之间的差距还是比较小的,问题出在之后的发展。

在此引入一个【架构效率】的概念,有点类似一分钱一分货,一块钱两分货的意思,2000SP的GPU肯定达不到1000SP的两倍性能,5000SP可能也就1000SP性能的3倍,靠规格增长获得性能增长的收益肯定是越来越小的,直至收益降低为0。架构效率这个概念很重要,因为其直接决定了甜品卡的规格和架构的规模极限(关于规模对比,因为两家SP性能不对等,RX580 2304SP≈GTX1060 1280SP,所以自家比的话比SP数量,两家之间比就比芯片面积,后面不赘述)。

2012年之后NV架构的进步相当的稳健,细节反正我们都不懂,就说个谁都看得见的,我们都知道现在GPU有一个基础单元的概念,NV这边叫做SM以及之后的SMX SMM,与之对应AMD这边叫做CU,我大概把它理解成一个基础单元就包含GPU完整功能了,再下一级就是SP。从Fermi到Kepler,1SM 32SP改进到1SMX 192SP,然后又觉得Kepler步子迈太大扯着蛋,Maxwell往回退一步1SMM 128SP,到了Pascal Volta直接沿用Maxwell的SMM,期间总规模从Fermi的512SP到现在的Volta 5120SP,可以看到N卡在基础单元上调整了数次,架构效率一直在增长,甜点的规格和极限规模都在增加,奠定了现在超高的能耗比 。可以说NV这边的极限规模现在是5120SP 12nm 800mm2。

但是AMD这边就有些尴尬,2012年之后CPU业务大暴死,从此开始了拆GPU东墙补CPU西墙的悲剧。几年间GPU架构基本上都是小修小补,Tahiti是1CU 64SP,Hawaii是1CU 64SP,Fiji依然是1CU 64SP,VEGA竟然还是1CU 64SP,当真是以不变应万变,这几代的最大规模从2048SP到4096SP,架构效率明显在下降,特别是FIJI到VEGA,规模竟然很奇怪的没有增加保持4096SP。而且如果你看了上面中关村的文章,他们明确提到了一点,GCN架构在1500SP规格之后的效率衰减是比NV是更快的,所以现在RX580和GTX1060在规模相当的情况下(232mm2 VS 200mm2)还能打个有来有回已经算是实属不易,再往上提升规格,就变成了VEGA这个悲剧,一个482mm2的芯片堪堪打赢隔壁314mm2的GTX1080,竟然还有A炮好意思吹??...当真“Tahiti元勋,Hawaii英雄,Fiji勇士,VEGA废物”。而且还有一个更无奈的事实,那就是VEGA56和VEGA64性能基本没有差距,这说明在GCN架构在4000SP之后的SP增加性能增益极小,由此我们可以说GCN架构的规模极限就是4096SP 14nm 482mm2.

如果说Tahiti对Kepler还算棋逢对手,Fiji对Maxwell也算可堪一战的话,那么VEGA对Pascal就是纯粹的被碾压。前些年GPU性能极限的主要还是看600mm2的芯片下能塞下多少规格的SP,因为工艺制程极限就只能做那么大的芯片,而现在却有些不同,因为制程已经先进到能暴露架构极限了,从这个方面看来,NV的架构极限还没到,所以能做出史无前例的800mm2 TTV芯片,而AMD因为架构极限已经到了,所以止步482mm2。我个人认为下代7nm制程可能会是AN两家彻底的分水岭,如果AMD不能拿出新架构或者没法突破4096SP的桎梏,那么由于7nm相对14nm的进步,4096SP将会微缩到250mm2的芯片上,新一代甜点卡而已,更高规格AMD没法做了。而NV这边5120SP用7nm做下来估计400mm2出头,新一代XX80Ti,而且5120SP很明显不是极限,还能继续增加,到那时候AMD就只能跟高端GPU say goodbye吧。





  

相关话题

  CPU与GPU之间是如何通信的? 
  AMD 股价为何在 2017 年 5 月 2 日暴跌 25%? 
  PS4pro所谓棋盘渲染到底是什么概念? 
  6700XT和3070该如何选择? 
  如何看待 12 月 17 日英伟达发布的三款笔记本显卡 RTX 2050、MX 570、MX 550? 
  如何评价英特尔全新高性能显卡产品品牌 — 锐炫? 
  现在显卡疯狂涨价,品牌机却没有太大价格波动,品牌机已经比组装机都便宜了,这是为什么? 
  为什么英特尔要坚持在他的i系列中央处理器上集成显卡? 
  买二手显卡的时候需要注意什么? 
  为什么做出mantle的是AMD而不是Nvidia? 

前一个讨论
为什么会喜欢钱?
下一个讨论
云锤想问问,纳垢真的是一个仁慈之神吗?





© 2024-05-17 - tinynew.org. All Rights Reserved.
© 2024-05-17 - tinynew.org. 保留所有权利