图形性能与通用计算并重的设计方向
代号GF100的Fermi设计方案在4年前确定下来并付诸行动,这时正值代号G80的Geforce 8800GTX做最后的出厂准备。G80凭借全新的MIMD(多指令流多数据流)统一着色器(又称流处理器)获得了业界的一致认同,同时被业界关注的还有G80的通用计算性能。
NVIDIA的Tony Tamasi先生(NVIDIA高级副总裁,产品与技术总监)表示:“以前的G80架构是非常出色的图形处器。但Fermi则是一款图形处理同样出色的并行处理器。”
这句话揭示了Fermi的与众不同,它已经不再面向图形领域设计了,因为更广阔的通用计算市场在等待它。Fermi将为通用计算市场带来前所未有的变革,图形性能和游戏被提及已经越来越少。
NVIDIA公司在不断强调并行计算的重要性
从NVIDIA处理器架构的发展来看,Tamasi先生的话意思很清楚。回顾历史我们可以发现NVIDIA最近几年间,大规模改进图形处理架构设计的是GeForce 6000(NV40)系列,之后就是GeForce 8000(G80)和GeForce GTX 200(GT200),最后就是Fermi。
“CUDA Cores”是Fermi最基础的运算单元,将它的历史向上追溯首先是G80时代的统一着色单元(Unified Shader Model),我们在G80和GT200时代将它统称为流处理器(Stream Processor),再向上追溯可知,这个单元将Vertex Shader(顶点着色器)和Pixel Shader(像素着色器)合并而成。
理论上说“CUDA Cores”只是起了一个好听的名字,让人们更看重GPU通用计算的作用,实际上我们在图形领域还是将它视为普通的流处理器。但这背后透露出NVIDIA公司的另一种计划——面向并行计算领域设计一颗芯片,并使其具备图形运算能力,这颗芯片由众多的“CUDA Cores”组成,运算速度主要由“CUDA Cores”的数量和频率决定。
Fermi就在这种设计目标下诞生了,你可以说它不是GPU,因为它真的是一颗并行通用计算芯片,只不过它也能安装在显卡上帮你运行游戏。不过对于我们评测人员就比较麻烦,Fermi诞生之后,我们需要对它的底层运算性能和实际运算表现做评测,但是拿它和谁对比呢?是HD 5870,还是I7-965?
似乎它们都没有可比性,也没有统一的评比标准。一切可以在Fermi上运行的程序,I7-965也能办得到,但是大规模并行速度惨不忍睹;很多Fermi能做的工作,HD 5870却做不了,因为它没有足够的周边资源诸如LDS(Local Data Share)支撑这么多流处理器同时运作,同时这颗GPU身上更找不到任何可读写的缓存。
在没有了解Fermi的核心构成之前,很多人“CUDA Cores”概念嗤之以鼻,认为这是NVIDIA公司的营销策略,就像HD5870所拥有的1600个流处理器一样,实际上是320个SIMD单元。两家公司确实打了不少口水仗,无数玩家也跟着它们提出的概念升级了自己的显卡。不过这次Fermi改变名称和设计方向,是有备而来的。
NVIDIA这次敢提出图形性能和通用计算并重,说明GPU设计的重点和难点都在通用计算方面而非图形。因为一颗已经演化了十年的GPU肯定能做好自己的老本行图形计算,但是要做通用计算,需要更强大的线程管理能力,更强大的仲裁机制,丰富的共享cache和寄存器资源以及充足的发射端……如果做不好这些东西,GPU永远都是PC中的配角,永远都是一颗流处理器。这些表面上看这些部件是极占晶体管的东西,更可怕的是设计这些部件需要太多科研成本和时间。
Impress Watch网站知名IT评论人後藤弘茂称NVIDIA全新Fermi架构,是以处理器为目标进行设计的。因为你在Fermi身上可以看到以前GPU上从来没有的东西,包括更多的指令双发射、统一的L2全局缓存、64KB的可配置式L1或者Shared Memory、大量的原子操作单元等等。
当然图形性能也毫不含糊,除了非常暴力的处理核心“CUDA Cores”之外,Fermi拥有强大的ROP和TMU单元,可以提供更高级别各种AA算法,并且有效控制性能衰减。Gather 4指令可以有效助力抖动采样实现更高画质。全新设计的PolyMorph Engine(多形体引擎)核心概念——Tessellation功能是必不可缺的,虽然这个概念由微软提出,由AMD率先应用在GPU上并坚持到HD 5870,但是这次呈现在我们面前的Fermi在Tessellation多数据并行计算方面遥遥领先HD 5870。