显卡 频道

融入新GCN架构 AMD HD7970显卡技术解析

  【IT168 评测】在今年6月15日召开的AMD Fusion Developer Summit(融合处理器开发者峰会)上,AMD两位院士级的体系架构师首次向外界公布了公布名为AMD Graphic Core Nex(简称GCN)的下一代GPU 体系架构,包括并行处理架构、计算单元架构、多级可读写高速缓存等细节都在这次会议上发布了,虽然没有提及路线图、产品名称以及规格等,但是外界都认为这款产品的型号很可能会被称作RADEON HD 7900。

  不出所料,就在2011年12 上旬召开的一次AMD媒体通风会上,AMD首次“向大家公开”了首款采用 GCN 的产品型号就是基于Tahiti架构的RADEON HD 7970及其阉割版RADEON HD 7950。

AMD HD7970显卡技术全析
▲AMD RADEON HD7900

  AMD在2010年引入被称作北方群岛的产品波次,其中包括了两个体系架构,即Barts和Cayman,Barts 本质上其实就是前代产品波次Evergreen中Cypress架构的延伸,而Cayman则是一款接近全新架构的产品,它首次采用了VLIW4架构以及双几何引擎。

  不过有点让人感到有些失望的是,原本大家期待Cayman能够在Tessellaion Sahder和Compute Shader性能能够和NVIDIA的Fermi抗衡,结果出来的测试结果表明Cayman在Tessellaion Sahder的改进并不大,而Compute Shader方面也没有引入可读写的数据Cache等加速技术,可以说Barts获得了期待中的成功,而Cayman系列实话实说是多少存在一些不尽人意之处。

  凭借上市先决的策略,AMD在Everygreen、北方群岛这两个DX11产品波次上取得了先机,特别是Everygreen,成功夺得市场真空期,到目前为止已经获得了67% 的DX11 市场,DX11(包括Llano)产品出货累计超过1亿。

  [pcinlife.com 原创]

  Tahiti 的体系架构

  有北方群岛,南方群岛也是顺理成章的,这次的融入了GCN 基因的RADEON HD 7900系列就是南方群岛产品波次的头炮产品。

  当初Cayman出来的时候曾经被认为是一个承上启下的产品,不过从目前的任何资料来看,Cayman几乎只能算是一个旁系产品,也许除了都是来自AMD 公司和一些小特征外,它和GCN之间的差别极大。

Tahiti 的体系架构
▲AMD RADEON HD 7970(Tahiti XT)体系架构图

Tahiti 的体系架构
▲Evergreen 时代的 Cypress(RADEON HD 5870)体系架构图

  GCN引入了多层次的并行架构,除了具备两个几何引擎流水线(通用计算架构同层级的单元被称作被ACE,即Asynchronous Compute Engine——异步计算引擎,当然ACE和几何引擎在物理上是两回事,我们这里提及只是方便大家有一个比较笼统的整体观),以往Cypress架构中的SIMD Engine现在被称作GCN CU(计算单元,Compute Unit 的缩写),不过CU和SIMD Engine有很大的出入。

  GNC Compute Unit

GNC Compute Unit
▲GCN CU的功能模块图

  上图是GCN CU的功能模块图。可以看到,一个GCN CU包含了:

  1 个向量计算单元模块(Vector Unit,里面有4 个16路SIMD计算子模块);

  每个SIMD-16 模块拥有4*64KiB 向量寄存器;

  1 个标量计算单元模块(Scalar Unit),用于执行整数指令、媒体指令和浮点原子操作(min、max、cmpxchg)。

  标量计算单元模块拥有 4KiB 标量寄存器

  每个GCN CU拥有64KiB LDS;

  每个GCN CU拥有16 KiB 数据 Cache

  每个GCN CU拥有1 个纹理拾取或者说内存存取模块(单周期执行16 个32-bit Load/Store 操作);

  每个GCN CU拥有1个单周期执行4*32bit 线性滤波的纹理滤波单元;

  图中的Branch&Message(分支与信息)单元可以用于执行分支指令和 Debug 等操作。

  作为多线程处理器,AMD和NVIDIA的DX11 GPU都有一定的线程粒度,NVIDIA的线程粒度被称作 Warp,一个Warp是32 "线程";而AMD的线程粒度称作wavefront,粒度是 64 "线程"。

  严格来说,所谓的线程其实是指处理数据的宽度,不过NVIDIA 偷换概念后,AMD也跟着上,都叫起“线程”了,而传统意义上的硬件线程本应该是Warp和wavefront这级别的才对。

  在GCN CU上,一个周期能执行一个wavefront(硬件线程),或者说4个周期执行4 个wavefront。

  因为线程调度器实际上是每次将4 个wavefront 派给CU,CU上的每个SIMD-16 单元执行其中一个,因为同一个wavefront 的指令都是一样的,只是所处理的数据地址是截然不同的。

  所以SIMD-16 单元可以4 个周期完成一个Wavefront,这样由4 个SIMD-16 组成的CU 看上去就能单周期执行一个wavefront或者说4 个周期执行4 个Wavefront。

  AMD Cypress架构的wavefront(简称C-wavefront) 和GCN 的wavefront 是不一样的,C-wavefront 粒度虽然也是64 “线程”,但是每个“线程”是由一个VLIW5 的指令包组成的,虽然跑图形的时候问题不大,但是跑通用计算的话,效率就会大打折扣,需要比GCN wavefront更高带宽的指令总线,增加了开发工具的复杂性,性能的可预测性也存在不定因素。

  重新设计的GCN CU现在更像一个80年代流行的向量处理器环路——极为简化的向量、标量组合,具备最高效的标量开发模型,和NVIDIA Fermi的设计思路一样,可以让程序员觉得是在给一个标量处理器开发程序。

  每个RADEON HD 7970的GCN CU 的线程管理器最高可以同时容纳32 个 wavefront,也就是说当计算单元是空闲的话,可以有32个待处理的硬件线程可以选着派给计算单元执行。相比之下,NVIDIA Fermi的每个SM(相当于CU)最高可以有48 个warp 供选择执行。

  在多线程执行上,CU拥有更多的子(调度器)模块,可以同时执行4个硬件线程,而NVIDIA Fermi则只有两个子(调度器)模块,可以同时执行两个硬件线程,这样的设计并没有一定的优劣之分,每个Fermi SM或者 GCN CU SIMD16 都能获得平均24 个(GF100/GF110) 或者16 个(GF10X/GF11X 以及GCN)硬件线程分派,硬件线程数越多,计算资源的利用率自然越高。

  Tahiti 一共拥有32 个CU,RADEON HD 7970 是足本的规模,而RADEON HD 7950则被烧成28 个 CU。

  Tahiti 的高速缓存层次

Tahiti 的高速缓存层次
▲Tahiti 的高速缓存层次

  GCN或者说Tahiti引入了多层次高速缓存,每个CU都有16 KB 可透过Golbal Data Store 共享的L1可读写数据Cache,32个CU 合计有512KiB L1数据cache,各个L1数据Cache的带宽为64 字节/周期,总带宽 2TB/s;每4个CU还共享1个16KiB的L1指令高速缓存和32KiB标量数据高速缓存(或者说Kernel Cache)。

  GCN每个内存控制器通道配备有64 KiB L2可读写cache,RADEON HD 7970具备6 个64-bit内存控制器,因此拥有768 KiB L2可读写cache,L2 cache带宽可以达到64 字节* 6= 384 字节/周期。按照AMD的说法,L2 cache的总带宽是700GB/s,这意味着L2 Cache的频率可能是两倍于GPU内核频率即1.85GHz。

  Tahiti的ROP、纹理单元及内存控制器

Tahiti 的 ROP、纹理单元及内存控制器
▲Tahiti的ROP、纹理单元

  RADEON HD 7970具备32个ROP,每个周期能完成32个色彩处理和128个Z/Stencil处理,不过由于有更高的有效带宽,在真实世界中的性能要比理论值一样的Cayman快 50%。

Tahiti 的 ROP、纹理单元及内存控制器
▲Tahiti的内存控制器

  由于具备384-bit 内存总线,RADEON HD 7970的带宽比6970高50%达到264 GB/s,这对于确保 118GTexel/s贴图处理和32 Gpixel/s的ROP单元来说至关重要。

  RADEON HD 7970引入了PCIE 3.0总线,是市场上第一款基于PCIE 3.0总线的独立GPU,双向带宽可以达到16Gb/s。

  Tahiti 的Tessellator

  大家最关心的DX11特性Tessellation又有和改进呢?

Tahiti的Tessellator
▲GCN架构中的Tessellation

Tahiti的Tessellator
▲4 倍于RADEON HD 6970的Tessellation 性能

  和Cayman相比,RADEON HD 7970采用了最新的硬件Tessellation迭代单元,提高了顶点的复用度、片外缓存设计有所增强、采用了更大参数的高速缓存,因此RADEON HD 7970的Tessellation和几何缓存都有显著的增强,能在所有拆分倍率下达到4 倍于RADEON HD 6970的Tessellation性能。

  通用计算性能有何提升?

  根据官方公布的数字,Tahiti的晶体管数量为43 亿,相比之下Cayman是26.4 亿,GF110大约是 30.5亿。

  晶体管数量增加了63%,但是“内核”数只是从Cayman时代的1536 提升到2048,肯定会有人为只增加了33% 的内核数感到不爽,那么现实中的性能变化又会是如何呢?AMD提供了一些参考。

通用计算性能有何提升?
▲Tahiti和Cayman相比,性能提升幅度没有低于50%

  上图是执行诸如光线追踪渲染、加密、傅里叶转换等常见的通用计算,可以看到Tahiti和Cayman相比,性能提升幅度没有低于50%的,像AES256甚至超过 3 倍。

  Cache 技术的引入不仅仅是常见应用的性能提升,还能带来一些新技术得以执行,例如id Software的Rage所采用的idtech 5引擎采用了纹理转码加速技术,这项技术目前只能在NVIDIA Fermi家族的GPU执行,原因就是Fermi具备Cache,能够高效的执行一些纹理转码操作。

  GCN和Partially Resident Textures

  为此,AMD也专门提到了专为GCN这类集成了真正Cache的GPU而度身定制的Partially Resident Textures(部分常驻纹理)技术。PRT可以让shader和应用程序掌控虚拟纹理内存,和CPU那样的纯错误模型不同的是,PRT 可以由程序来做决断,如此一来就能实现像32TB大小级别的纹理,除了可以让贴图更丰富外,还能降低纹理载入时出现的顿挫现象。

  下面举一个简单的例子说明PRT是怎样执行的。

GCN 和 Partially Resident Textures
▲PRT的执行过程

  载入的纹理被切成若干个64 KB块,大小是固定的,采用字节而非纹理元素(texel)为单位。

  上图中左面的插图代表这是一个高分辨率的纹理映射图,高亮的区域表示是需要抓出来的纹理元素。

  中间的插图表示了这个纹理在内存中是如何分块存放的,右面的插图代表了为了实现正确纹理映射所需要拾取的纹理页面。

GCN 和 Partially Resident Textures
▲PRT的执行过程

  一般来说,一个场景中会有许多不同mipmap或者说纹理分辨率版本,左面的插图中分别有最高分辨率的mipmap,以及以此较低分辨率的mipmap。

  当要渲染的时候,例如渲染4 个不同的位置嘶吼,就需要4 张不同分辨率的mipmap,当shader要拾取这些mipmap的时候,有些会从页面表中直接抓到,而有些这不行。此时Shader或者应用程序就要对命中缺失后要做什么作出决断,但是这些决断不会造成错误也不会造成耽搁。程序将知道哪些页面是缺失的,并且在下一帧渲染的时候把它们直接抓进来。

GCN 和 Partially Resident Textures
▲AMD在迪斯尼开发的Ptex演示程序基础上做的PRT执行案例

  上图是AMD在迪斯尼开发的Ptex演示程序基础上做的PRT执行案例,用来表现大纹理管理和多分辨率贴图技术。

GCN 和 Partially Resident Textures
▲纹理过滤技术

  在纹理过滤方面,AMD提到在Cayman时代曾经说自己的纹理过滤技术是最好的,但是同时承认后来被媒体抓包发现Cayman的高频纹理过滤存在晃闪现象,而这次Tahiti 在这方面有所改进。

  此外,AMD 还提到了Tahiti提供了非常好的的角度不相依纹理LOD算法。

GCN 和 Partially Resident Textures
▲AMD 还提到了 Tahiti 提供了非常好的的角度不相依纹理LOD算法

  在计算架构方面,RADEON HD 7970还提供了947GFLOPS IEEE 双精度浮点性能,更高效的流控制和分支处理,完全DRAM、SRAM 的ECC 保护,支持OCL 1.2、DX 11.1、C++ AMP,引入了新的计算指令。

GCN 和 Partially Resident Textures
▲南方群岛产品波次的 GPU 引入了QSAD和MQSAD指令

  南方群岛产品波次的GPU引入了QSAD和MQSAD指令,能显著提升运动侦测、视频/图片搜索、提取立体深度等计算的性能。

  Tahiti 的电力控制

Tahiti 的电力控制
▲AMD的PowerTune技术

Tahiti 的电力控制
▲AMD的PowerTune技术

  上图表明了 AMD在电力控制上的做法,那就是依据给定的功率阀值来调整显卡的性能,当超过阀值后,GPU 就会启动各种电力控制措施,让性能和功耗维持在安全状态,而调整的频率粒度是和Cayman 一样都是以MHz为单位调整,耗电水平的侦测时间为毫秒级。

Tahiti 的电力控制
▲Tahiti 在电力控制上的独特之处在于引入了 ZeroCore 电力技术

  Tahiti在电力控制上的独特之处在于引入了ZeroCore电力技术,能够在闲置的时候透过将GPU关闭掉来节省95%的闲置模式耗电,此时GPU的功能模块耗电只有0瓦特,整卡耗电低于三瓦特,风扇也会彻底关闭,完全避免噪声滋扰。

  在多卡交火的时候,这样的特性显得尤为重要,因为很多情况下只有主卡是连接显示器的,在ZeroCore技术下,副卡不仅耗电极低,而且不会出现风扇依然运作造成噪音叠加的问题。

  VCE 视频编码技术

  在 UVD 方面,Tahiti和Cayman相比并没有改进,依然是UVD 3.0,不过在另一方面,Tahiti引入了VCE硬件视频压缩编码引擎,能实现1080p60硬件视频编码。

VCE 视频编码技术
▲VCE完全模式

VCE 视频编码技术
▲VCE混合模式

  VCE 支持两种编码运作模式,包括完全模式和混合模式,完全模式则是所有的编码操作都是由VCE的固定编码功能单元执行,而混合模式则是将上图中黄色框线的功能交给GPU可编程单元来执行,对于高性能的GPU来说,混合模式是速度最高的方式。

  AMD Steady Video 2.0

AMD Steady Video 2.0
▲AMD Steady Video 2.0

AMD Steady Video 2.0
▲Steady Video 2.0 还实现了隔行视频的处理、指示信息、左右对比等特性

  AMD这次推出了Steady Video 2.0技术,借助QSAD指令,立体深度侦测性能提升到48 倍,对于变动分辨率为32像素的1088@60Hz视频运动侦测可以达到每秒513G SAD ops/s。

  此外,Steady Video 2.0还实现了隔行视频的处理、指示信息、左右对比等特性。

  也许会有人对这个感兴趣,但是对我来说,还是远不如插帧或者说时间超采样吸引。

  Eyefinity 2.0与DDMA

Eyefinity 2.0 与 DDMA
▲Eyefinity 2.0中的任务栏跨屏

  当然,AMD不会忘记他们强大的多屏输出能力,像上图就是Eyefinity 2.0中我觉得最有价值的任务条跨屏,当然这些其实都是些软件相关的技术,硬件相关的就得看下面的DDMA。

Eyefinity 2.0 与 DDMA
▲实现了独立数字多声道音频技术

  Tahiti在多屏输出方面有一个有意思的改进支持,那就是实现了独立数字多声道音频技术,显卡输出的各个显示器都有独立的音频通道,每个显示器的声音都是独立的,当你将视频拖拉到另一个显示器的时候,声音也会随之在另一个显示器对应的喇叭上播放。

  RADEON HD 7970/7950规格与大图

RADEON HD 7970/7950 规格与大图
▲RADEON HD 7970

RADEON HD 7970/7950 规格与大图
▲RADEON HD 7970规格

RADEON HD 7970/7950 规格与大图
▲RADEON HD 7950规格

RADEON HD 7970/7950 规格与大图
▲双槽、2 mDP+HDMI+DVI 的显示配置、双 BIOS 开关、新式刀叶风鼓、均热板散热

  到目前为止,足本的RADEON HD 7970的规格基本上是定制925MHz内核|5500GT/s 内存,TDP 210瓦,号称可以超频1GHz 甚至更高。

  削减CU数的RADEON HD 7950目前尚未完全确定频率规格,但是它的内存总线是足本的,理论上同频下的RADEON HD 7970和RADEON HD 7950性能差距应该在13%以内。

0
相关文章