
RDNA2的CU是RDNA系列的第一个改进版CU,RDNA2的整体CU架构相比于RDNA1的改动不大,最大的改进在于添加了一个硬件光追求交加速器。在细节上AMD表示RDNA2 CU的微架构更加的流水线化,为RDNA2 GPU的高频做好了准备。
AMD的CU或者Nvidia的SM是GPU内部最小的独立执行单元,是一个完整的处理器。CU与一般的处理器不同,它们是吞吐向的处理器,因为延迟不敏感,所以它们都采用了FGMT或者FGMT与CGMT并存的多线程技术。GPU中的硬件线程称为Wavefront或者Warp。与传统CPU上的SMT不同,FGMT与CGMT不保证各个线程同时执行,而是每周期切换或者遇到缓存未命中的时候切换执行的硬件线程。在RDNA2架构中,每个CU最多可以有32个Wavefront处于就绪状态,而一般的CPU只有2个。32个Wavefront被分为两组,进入CU时被储存在两个指令缓冲中,每组16个。程序计数器也被分为两组,每组16个。完美的情况下,调度器会从2个指令缓冲中分别找出2条向量SIMD指令送给2个对应的SIMD32执行单元,找出2条标量指令送给2个对应的标量ALU,其余对应向量访存、分支、LDS、GDS、EXPORT的指令,则从2组Wavefront中找出3个送给对应的执行单元。
RDNA的CU和GCN的CU不同,它的Wavfront宽度为32,GCN为64。它的向量SIMD执行单元宽度为32,延迟为5周期,吞吐率为1,也就是每周期可以对它发射1条向量指令,并完成1条向量指令,当前发射的向量指令会在5周期时生成结果。RDNA的CU中总计2个SIMD可以有2的吞吐率,每周期完成32*2个软件线程。
GCN中的SIMD单元宽度为16,延迟为4周期,吞吐率为0.25,也就是每4周期可以对它发射1条向量指令,并完成1条向量指令,当前发射的向量指令会在4周期时生成结果。GCN的CU中总计4个SIMD每周期完成64*1个软件线程。两者吞吐率一致。
GCN是精细设计的十分优美的架构,单一的向量SIMD发射端对应了4个4分之1吞吐率的SIMD,每个SIMD指令不会有指令执行时间的重叠,每个SIMD也有自己的寄存器,完美避免了寄存器相关的任何访问冲突和冒险,并且简化了编译器以及硬件的调度难度。但缺点也是有的,GCN总计可以维持10*4个Wavefront,总计2560个软件线程,2560个线程分享256KiB的寄存器以及64KiB的LDS等资源,每线程的LDS以及寄存器压力都较大,每个SIMD用于掩盖延迟的Wave数量也较少。在软件对寄存器需求极多的极端情况下,每SIMD仅能维持一个Wavefront,全CU总计4*64 = 256软件线程,对于GCN的CU这个单周期5发射的处理器来说,也就是最少只有1/5的利用率。
RDNA2则是比较灵活的设计,需要比较复杂的软件调度来检测不同指令之间的寄存器Bank冲突,将没有冲突的指令的排列在一起,以便互相掩盖延迟,尽可能达到1的吞吐率。RDNA的CU可维持2*20个Wavefront,总计1280个软件线程,1280个软件线程分享265KiB的寄存器和64KiB的LDS等资源,压力较GCN小一倍。在软件对寄存器需求几多的极端情况下,每SIMD依然可以维持至少4个Wavefront,全CU总计2*4*32 = 256软件线程,对于RDNA的7发射来说,最差的利用率也有5/7,并且由于RDNA的SIMD单周期发射,甚至还有空间选择通过ILP还是切换线程来维持SIMD的利用,灵活性更高。简而言之,RDNA在低软件线程数下,相对GCN有很大的优势。由于这种设计优势过于明显,以至于出现边际效应,所以AMD在RDNA2中将可维持的Wavefront数量上限从40降低到了32,节约了资源。
AMD在GCN中引入了1个功能强大的Scalar ALU。Scalar ALU主要完成分支和流程控制方面的操作,极大的提高了程序的灵活性,以及动态分支的性能。GCN中Scalar ALU只有1个,由4组Wavefront轮流共享。而RDNA因为单周期发射的原因,所以将Scalar ALU加到了两个,两组Wavefront独享。
CU中其他部分,由所有的两组Wavefront共享。
在RDNA2中,AMD引入了硬件光追加速器,每周期可以完成4个BVH求交和1个三角形求交,与Nvidia的图灵保持一致。与图灵一样,AMD的光追加速器也与TMU设计在一起,因为光追加速器与TMU一样,都是需要直接访存的部件,可以与LSU共享很多部件。从硬件上来看AMD的硬件光追加速器与TMU的耦合度更高,Navi10的TMU、L0总计面积大约0.67mm^2,而同样7nm的RDNA2上,加上光追加速器之后,面积仅仅稍微增长到0.757mm^2,约1.13倍。作为对比TU10x和TU11x,每TPC中的TMU部分从2.355mm^2增长到了3.095mm^2,约1.31倍。
Navi10:

Navi21Lite

TU116

TU106
