随着Big Navi显卡的发布,AMD终于重回高端GPU空间。尽管RDNA 2设计在计算和图形流水线方面与RDNA 1非常相似,但仍有一些更改允许包含Infinity Cache和高提升时钟。
下面,我们将讨论Navi GPU与由GCN架构提供支持的传统Vega和Polaris部件有何不同。
AMD的GCN架构为Radeon显卡提供了近十年的支持。尽管该设计具有强大的Compute Engine,硬件调度程序和统一内存等优势,但对于游戏而言并不是十分有效。与当代NVIDIA部件相比,硬件利用率相当差,每个着色引擎的前11个CU后缩放比例急剧下降,并且总体而言,每个GPU使用64个以上的CU是不可行的。
结果,尽管采用了强大的计算架构,AMD的GCN GPU(Vega)却屡屡输给NVIDIA的高端游戏产品,同时却获得了更高的性能。
RDNA是GPU架构,而Navi是使用它构建的图形处理器的代号。同样,GCN是体系结构,而Vega和Polaris是代号。
支持Navi 10和Navi 14 GPU(Radeon RX 5500 XT,5600 XT和5700 / XT)的第一代RDNA架构基于与GCN相同的构造块:一种矢量处理器,带有一些用于地址计算和控制的专用标量流,异步运行的独立计算和图形流水线。称为流处理器的ALU提供了计算能力,命令处理器(与ACE一起)处理每个计算单元的工作量调度。
核心区别在于RDNA重组了GCN的基本组件,以实现更高的IPC,更低的延迟和更高的效率。这就是Navi的全部意义:用更少的硬件就能完成更多的工作!
AMD GCN:功能强大但未充分利用
AMD的GCN图形体系结构每个计算单元包含64个波前或工作项(以及ALU /内核)。它们分为四个SIMD(多种数据类型的单个指令),每个SIMD包装16个ALU(SP)。
这是大多数人感到困惑的地方。是的,这是真的,调度可能每四个周期后发出新一波的群体,但同时每个计算单元也将上工作464项波,而不是一个64项波。像推土机一样,目标是最大程度地实现并行化。同时,GCN并不是乱序的架构。波前的指令仍按其顺序执行。区别在于CU或SIMD可以切换到四个可用波中的任何一个。
之所以不太有效,是因为大多数游戏使用较短的工作队列,因为每个执行周期只有四个波前中的一个或两个饱和。因此,具有相同着色器数量的竞争NVIDIA GPU凭借其超标量体系结构要快得多,并且只需一到两个周期即可执行这些较短的调度。另一方面,尽管有更多波前的余地,AMD同行仍需要等待四个周期才能进行下一个周期。
每个向量可以对多个数据集执行相同的指令。向量调度的工作原理是,始终有一条指令要在多个项目上执行。如果只有一两套可用,则其余插槽将在该周期内处于空闲状态。
总结起来,与许多其他SIMD设计一样,GCN计算单元一次在四个波前工作,并花费四个周期来执行它们。在理想世界中,这意味着一波的有效时间为一个周期。但是,由于SIMD的工作方式,情况并非如此,并且CU经常未得到充分利用。
AMD RDNA:双重计算架构和Wave32
在Navi中实现的RDNA架构使用wave32,这是一个具有32个工作项的较窄波前。它比旧的wave64设计更简单,更有效。每个SIMD较宽,但计算单位较窄。
在计算单元是GCN中基本着色器单元的地方,RDNA用WGP(工作组处理器)代替了它:两个CU与共享的本地数据协同工作。RDNA SIMD由32个着色器或ALU组成,是GCN的两倍。每个CU有两个SIMD,双计算单元中有四个。CU中的流处理器总数仍为64,但是它们分布在两个(不是四个)较宽的SIMD中。参阅四个周期VS每指令的一个周期以下进一步示图。
RDNA SIMD由32个着色器或ALU组成,是GCN的两倍。每个CU有两个SIMD,双计算单元中有四个。CU中的流处理器总数仍为64,但是它们分布在两个(不是四个)较宽的SIMD中。
这种安排允许在一个时钟周期内执行一个完整的波前,从而减少瓶颈并将IPC提升4倍。通过更快地完成4倍的波前,可以更快地释放寄存器和高速缓存,从而总体上可以调度更多的指令。此外,wave32使用的寄存器数量是wave64的一半,从而也降低了电路复杂度和成本。
为了适应较窄的波前,矢量寄存器文件也已进行了重组。每个向量通用寄存器(vGPR)现在包含32个32位宽的通道(对于FP32),并且SIMD总共包含1,024个vGPR-再次是GCN中寄存器数量的4倍。
总体而言,更窄的wave32模式可通过改善IPC和并发波前总数来提高吞吐量,从而显着提高性能和效率。
异步计算隧道
GCN架构的主要亮点之一是在NVIDIA将其集成到其图形卡之前使用了异步计算引擎方式。RDNA保留了该功能,并且加倍了。
命令处理器处理来自API的命令,然后将它们发布到相应的管道:图形命令处理器管理图形管道(着色器和固定功能硬件),而四个异步计算引擎(ACE)负责计算。Navi 10芯片(RX 5700 XT)具有一个图形命令处理器和四个ACE。每个ACE都有一个独特的命令流,而GCP对于每种着色器类型(域,顶点,像素,栅格等)都有单独的流。
在GCN中,命令处理器可以优先于图形进行计算。在RDNA架构中,GPU可以使用所有资源来执行高优先级的计算任务,从而完全挂起图形管线。
DNA体系结构通过引入一种称为“异步计算隧道”的新功能,改善了指令级的并行处理。GCN和较新的Navi GPU均支持异步计算(图形和计算管道的同时执行),但RDNA则更进一步。当一个任务(图形或计算)比其他任务对延迟的敏感度高得多时,Navi可以完全暂停另一个任务。
在基于GCN的Vega设计中,命令处理器可以使计算优先于图形,并在着色器上花费更少的时间。在RDNA架构中,GPU可以使用所有资源来执行高优先级的计算任务,从而完全挂起图形管线。这可以显着提高对延迟最敏感的工作负载(例如虚拟现实)的性能。
控制流的标量执行
实际上,AMD GCN和RDNA架构中的大多数计算都是由SIMD执行的,而SIMD本质上是矢量:对多种数据类型执行一条指令(每个SIMD每个周期同时执行32 INT / 32 FP)。但是,每个CU中也有标量单位。RDNA 1中的每个计算单元每个周期可以启动(调度)四个指令,两个标量,两个向量。在RDNA1 WGP中,总吞吐量为每个时钟128个向量和4个标量。四个SIMD各自为该数字做出了相同的贡献。
结论
尽管RDNA和Navi并没有完全重新发明Radeon设计,但它们主要只是对其进行了改进。消除了管道瓶颈,减少了延迟,现在每个SIMD都变得越来越宽和更快。
每个着色器引擎都有更多的渲染后端,具有三个级别的统一缓存,这是对之前的Vega GPU的重大改进。看看RDNA 2与现有的Navi GPU有何不同将是很有趣的。
我认为不会有任何根本性的变化。可能会有一些专用的光线跟踪加速或放大核心,仅此而已。AMD需要从事的工作是他们的软件和驱动程序。
#科技日报#