AMD Radeon HD 7000的架构
从“Southern Islands”南方群岛系列开始,超微开始使用新一代名为“Graphics Core Next”(次世代显示核心,GCN)的显示核心架构,主要为加强图形核心的通用计算能力而特别设计。这种设计概念类似于英特尔已经取消的Larrabee专案,但不同的是AMD的专案仍然会重视传统的图形处理能力。
模块化
对比图形引擎,流处理器的改动相对比较大。
以往的5-Ways VLIW SIMD或4-Ways VLIW SIMD(俗称5D/4D架构)架构流处理器是针对指令而优化的:自R600显示核心以来,AMD/ATI显示核心的流处理单元上是由一个指令发射端+五个“流处理器”(四个矢量运算单元+一个超标量运算单元,后期变更为仅有四个矢量单元),理论上,通过将几个短指令组合为一个长的指令,使每个流处理单元可同一时间处理一个5D/4D指令,达到大数据吞吐量的目的。但这样做的缺点也很明显:需要依赖指令的恰当组合,而且在指令组合时会出现延时。实际上运行时指令组合往往并非最佳组合,造成有部分流处理器处于闲置状态,致使运行效率不高,而造成超微显示核心一直以来给人“理论参数高,实际性能低”的印象。所以AMD放弃以往的VLIW架构,改用称为GCN的新架构。
而新的GCN架构是针对线程而优化,尽管仍然保留SIMD的设计。GCN架构中,为强化通用处理能力,超微开始引入类似于对手英伟达的“流多处理器”、“GPC”等概念。在GCN架构的显示核心上,划分为多个计算单元(Compute Unit,CU,前称“GCN数组”),每个CU单元里包含指令获取/仲裁单元(Instruction Fetch Arbitration)、控制/解码单元(Control and Decode)、独享的一级指令/数据高速缓存、65个ALU:一个标量运算单元(Scalar Unit)以及64个矢量运算单元(Vector Unit,即流处理器),这64个矢量运算单元中,每16个矢量运算单元组成一个16位的SIMD数组并独享64KB的暂存器,这样一来,一个CU单元就拥有4组SIMD矢量数组。在运行运算任务时,所有数据都会被拆散为1D数据,每个SIMD矢量数组运行一条线程,由此一组CU单元可运行四条硬件线程,一个GCN架构的显示核心中包含多个CU单元,因此整个GCN显示核心可以同时运行多个任务/进程,以一组SIMD数组为一个运算单元的角度看,一个CU单元具备MIMD的特性。超微官方的数据指出,这是一种“基于SIMD数组的MIMD架构”(“Southern Islands is a MIMD architecture with a SIMD array”)。
这样做的话,只要一直有数据输入显示核心,就不会有流处理器闲置。这与NVIDIA的处理方式相似,将所有数据都分解为1D数据。效率的提升,可以弥补额外配套而增加的线路。在某些特定情况,线程可以乱序执行,减少线程之间互相影响。
图形引擎
核心配备两个几何引擎。每一个几何引擎包含曲面细分单元、几何装配器、顶点装配器各一个,还有可用于卷积运算、傅里叶变换等特殊运算任务以及材质贴图处理的材质数组。单从数量而言,光栅器和曲面细分单元依然比不上对手NVIDIA。AMD特别针对相关单元的运行效率,声称Radeon HD 7970的曲面细分性能最高是上一代Radeon HD 6970的4倍,即使平均下来也有两倍的性能提升水平。
任务仲裁
新增一级和二级线程调度机制。为此,核心额外新增了一到两个Asynchronous Compute Engine(异步运算引擎,ACE),用作CU单元(包括其内部)/流处理器的任务分配和仲裁,增强显示核心的乱序执行能力(显示核心本质上依然是顺序执行),提高几何和通用计算的性能。
存储器架构
暂存器
GCN架构中,为保证数据快速访问,暂存器数量惊人。在一个CU单元中,每一组SIMD矢量数组拥有各自的暂存器,容量为每组64KB,一个标量单元独占4KB的暂存器,这样一来一个CU单元里***有5个独立的暂存器。而对手NVIDIA的Kepler架构的GeForce 600中,每个SMX单元(相当于一个CU单元)仅有1个全局暂存器,即使是早期Fermi架构的GeForce 400上,每组SM单元也是仅有一个全局暂存器。但是,过多的暂存器会使得显示核心过于庞大,在出于成本考量时还会挤压运算单元的晶体管使用量,而且还不利于功耗发热控制以及时钟频率的提升,Tahiti XT顶级显示核心就拥有约43.13亿个晶体管。有评论指出如此庞大的暂存器数量,显示出Radeon HD显示核心暂存器的使用算法不佳。
高速缓存以及存储器
以往的缓冲存储器只支持读取模式。新的缓冲存储器,可支持读写模式,方便交换数据。每一个CU单元拥有64KB的一级高速缓存,被划分为一个32KB的一级只读指令高速缓存、一个16KB的一级只读数据高速缓存和一个16KB一级可读写数据高速缓存,全部是连通的,而且可供其它CU单元访问,以保证数据同步和***享。而且,这种设计更多的是为了日后CPU+GPU协同运算着想。
所有的CU单元和图形引擎***用容量为768KB的全局二级高速缓存,支持与一级高速缓存、系统存储器的数据同步。支持X86虚拟内存技术,可将显示存储器中的一部分容量映射到系统存储器上,供中央处理器访问,以解决纹理生成速率樽颈。
顶级型号Radeon HD 7970GDDR5存储器控制器位宽为384位。支持PCI-E 3.0总线接口。
加速
支持C、C++(及后来的C++ AMP)以及其它高级编程语言
支持CPU和GPU之间统一虚拟寻址、支持GPU读取存储器数据和存储器标签页除错、CPU和GPU间存储器数据同步
支持FP64双精度浮点运算,和单精度浮点运算的速率比率为1:4
支持ECC存储器
新增VCE视频编码引擎以及SAD媒体处理指令,UVD升级至3.0版本
支持OpenCL 1.2
程序接口
硬件支持Direct X 11.1所有特性,支持OpenGL 4.3。增加Partially Resident Textures(局部存储纹理)特性。支持光栅作业与Z缓冲单元继续独立运作、所有纹理作业支持高速缓存读写作业等。