HD7970核心——革命的GCN架构
核心架构对显卡性能至关重要,可能有些读者对HD7970的核心还不熟悉,这里我们简单介绍一下。
我们知道AMD历代GPU的瓶颈除了曲面细分以外,其实最重要的是5D/4D VLIW架构的效率问题。HD7950和HD7970核心代号Tahiti,采用了全新的GCN架构,流处理器结构全部重新设计而来。
Tahiti彻底抛弃VLIW架构
通过Tahiti的整体架构图我们看到,传统的SIMD流处理器阵列消失了,取而代之的是GCN阵列,Tahiti总计拥有2048个流处理器,这样每个GCN阵列里面拥有64个流处理器。现在来看看GCN阵列的微观结构。
GCN与GF100的SM何其相似
GCN阵列里有4组SIMD单元,每组SIMD单元里面包括16个流处理器、或者说是标量运算器。GCN架构已经完全抛弃了此前5D/4D流处理器 VLIW超长指令架构的限制,不存在5D/4D指令打包-派发-解包的问题,所有流处理器以16个为一组SIMD阵列完成指令调度。简单来说,以往是指令 集并行,而现在是线程级并行。
可以这么理解,一个GCN阵列与GF100当中的一组SM相当,GF100的一组SM当中有4组共计32个流处理器,而Tahiti的一组GCN当中有4组共计64个流处理器。
缓存部分
每个SIMD-16单元都拥有64KB向量寄存器
每组GCN阵列拥有64KB的本地数据共享缓存,还有16KB的一级缓存
每组GCN阵列有一个标量运算单元,用于执行整数指令、媒体指令和浮点原子操作,这个标量运算单元拥有自己的4KB寄存器
而GF100的缓存设计得更加灵活,每组SM里面拥有总计64KB的共享缓存+一级缓存,这64KB缓存可以根据实际运算量来动态调整,如果把16KB分配给一级缓存的话,那剩下的48KB就是共享缓存,反之亦然。
一般来说,进行图形渲染时需要共享缓存比较多,而并行计算时则会用到更多的一级缓存。GF100这种灵活的缓存分配机制更适合做并行计算,而GCN架构更大的共享缓存会有更好的图形渲染性能,并行计算则会稍逊一筹。
更多的线程调度
从缓存部分的设计来看,虽然GCN拥有更大的缓存容量,但在并行计算领域经营多年的NVIDIA显然要棋高一手。
从线程级别来看,GCN与SM是不可分割的最小单元,GCN一次可以执行64个线程,而SM是48个(其实就是流处理器的数量)。
从多线程执行上来看,GCN可以同时执行4个硬件线程,而SM是双线程调度器的设计(参见架构图)。
所以GCN架构的多线程性能更加优秀。