● NVIDIA用几何处理能力激怒AMD
相对于图形渲染能力(Rendering),几何能力(Geometry)在过去没有引起人们的足够重视。而NVIDIA设计的Fermi架构则重点强调几何处理能力,这个设计方向非常吻合DirectX 11提出的要求,也增强了画面的真实感。可以说几何能力(Geometry)的飞速提升,是GPU光栅化发展历程中的重要一步。![]()
在本次Computex电脑展之前,NVIDIA已经发布了Fermi架构的GTX400系列产品,而在Computex电脑展开幕当天,基于Fermi架构的GTX465产品也亮丽登场。NVIDIA称Fermi GF100是一个全新架构,不但是通用计算方面,游戏方面它也发生了翻天覆地的变化,几乎每一个原有模块都进行了重组。特别是还有新增的光栅引擎(Raster Engine)和多形体引擎(PolyMorph Engine),这两个概念的提出,为GPU的几何处理能力打下坚实基础。![]()
曲面细分技术让物体更加真实
在过去的几年中,确切说是从Geforce 5800到Geforce GT200的这几年间,GPU的着色器Shader计算能力提升了150倍,这几乎全部是因为大量的顶点和像素处理压力所致。而游戏开发商大都喜欢已经烘焙好的材质不愿意也没有考虑过使用更为真实自由的材质。
正是在这种思路的指导下,GPU的几何处理能力发展缓慢,在着色器Shader计算能力迅猛提升的前提下,几何处理能力只提升了3倍。并且负责几何处理的GPU单元基本上没有发生什么变化,完全是依赖规模的堆积和频率的提升来被动提高性能。![]()
Fermi架构拥有数量庞大的曲面细分单元(Tessellator)
Fermi架构的多形体引擎则要负责顶点拾取(Vertex Fetch)、曲面细分(Tessellation)、视口转换(Viewport Transform)、属性设定(Attribute Setup)、流输出(Stream Output)等五个方面的处理工作,DX11中最大的变化之一曲面细分单元(Tessellator)就在这里。Fermi GF100产品中有16个多形体引擎,每个SM一个,或者说每个GPC拥有四个。![]()
代号Cypress的AMD HD5000系列只有1个曲面细分单元(Tessellator)
代号Cypress的AMD HD5000系列是全球首款支持DirectX 11特效的GPU,它继承了R600架构高效的VLIW组织形式SIMD结构流处理器单元,又继承了RV770以来的RBE后端渲染单元改进,同时结合TSMC 40nm工艺,将性能和功耗完美匹配,但是在光环的背后,一直隐藏着AMD的忧虑,那就是作为Direct X11关键技术支撑的曲面细分单元。
最终我们看到,基于Fermi架构的GTX480产品,拥有15个曲面细分单元(Tessellator),而AMD的顶级单卡HD5870,只有1个曲面细分单元。同时从最高端的HD5870到最低端的HD5450芯片,曲面细分单元(Tessellator)的数量都只有一个,其运算能力只是有工作频率决定的。这是一种非常不合理的架构设计。AMD下一代“Southern Island”(中文名“南岛”)架构正在寻求这个层面的突破。
● R600以来的着色器结构与资源追加
SIMD结构ALU单元用作GPU着色器从提出直到现在,已经在GPU设计中被沿用了10年。AMD所使用的SIMD结构流处理器,具有非常明显的优势就是执行全4D指令时简洁高效,对晶体管的需求量更小。
而NVIDIA为了达到MIMD流处理器设计,消耗了太多晶体管资源,同时促使NVIDIA大量花费晶体管的还有庞大的线程仲裁机制、端口、缓存和寄存器等等周边资源。NVIDIA为了TLP(线程并行度)付出了太多的代价,而这一切代价,都是为了GPU能更好地运行在各种复杂环境下。![]()
ImpressWatch绘制的解析流处理器结构
但是业界普通的共识是SIMD结构的流处理器设计能够有效降低晶体管使用量,特别是在已经设计好的架构中扩展流处理器数量的难度,比起MIMD结构要容易很多。![]()
AMD与NVIDIA流处理器结构
对比R600和G80架构可知,4个1D标量ALU和1个4D矢量ALU的理论运算能力是相当的,但是前者需要4个指令发射端和4个控制单元,而后者只需要1个,如此一来MIMD架构所占用的晶体管数将远大于SIMD架构。![]()
AMD的GPU产品在特定测试中遥遥领先
回顾AMD在统一渲染时代做出的努力,我们能够感觉到从R600到R800时代,AMD在试图通过不断堆砌SIMD结构的ALU运算器以提升性能,这是一个简单而粗暴的真理。由于R600-R800的US是分“1大4小”,即一个全功能SP单元和4个仅能执行乘加运算而无法执行连乘运算的部分功能SP。所以在上图测试的Float 5指令中,由于数据类型符合其流处理器结构,AMD的GPU设计发挥出了理论应有的最高性能。
R600为每个US配备了1个发射端,所以如果要保证指令吞吐不受限制就通过VLIW,也就是超长指令打包的形式将若干个短指令打包在一起。在US结构方面,从R600到R800几乎没有任何变化,我们所看到的性能提升,是因为周边资源放大之后R800比RV770或者说比R600更好的通过cache机制来掩盖延迟造成的损失。
RV870,基本上应该就是RV770+DX11强制的硬件IC(曲面细分单元),不仅R600的构架完全没变,而且其周边资源,尤其是Sram和寄存器资源理论上并没有得到本质性的强化。但是借由40nm工艺所带来的频率提升,以及长时间在RV770中的积累所带来的寄存器和Sram时序的调整以及调度模式的转变,HD5870获得了非常理想的性能提升。
要想改进AMD目前的流处理器结构,在HD6000系列中几乎已经没有可能,也就是说从某种程度上来讲,HD6000仍然基于HD2000以来的架构基础。特别是用VLIW技术所组织的流处理器结构这一点不会发生改变,因为AMD一旦转变设计方向,现在建立起来的一切性能领先优势可能不复存在。
● 继续用固定硬件单元实现特殊功能
计算机体系结构的基本原理是,任何软件能够实现的,硬件都能够实现,相反也成立,这被成为硬件软件等效原理。这一原理只是功能等效,性能来说,良好优化和设计的硬件通常要比同样水平的软件快很多,同样,开发周期长,开发的成本,也要高不少,体系结构研究的重点就是从需要出发,寻求最佳的软硬件平衡点,在一定的成本约束下,获得最高的性能。
GPU中也是一样,在目前统一渲染成为主题的今天,统一渲染着色器(Unified Shader)和固定功能单元(Fixed Function)是配合的,当我们重点看SP规模的时候,其实GPU性能的很大程度是由固定功能单元来完成的。
从固定功能单元的发展历程来看,在一项新技术最初被提出时,一般厂商都希望使用一个特定的硬件IC去实现这项技术。而在这项技术经历一段时间之后,特定功能单元一般都会被大规模的可编程单元替代,尤其是在GPU的发展历程中非常普遍。![]()
曲面细分单元(Tessellator)会被替代吗
比如说当年的T&L技术最初是由特定硬件完成的,后来逐渐被替代。顶点、像素、几何三项着色工作在DirectX10出现之前也是由各自对应的着色器来负责的,但是统一渲染架构提出之后它们被统一渲染着色器替代。
Intel也知道这条道理,它认为固定渲染单元最终可以被Shader指令替换,Shader指令也可以由x86扩充指令替换。所以Larrabee简单而又庞大的架构运用而生。实际上整个IC设计领域都在实现“去功能化”这个方向,所有人都明白添加固定功能单元换取性能提升不是长久之计。
在5月28日我们对NVIDIA首席执行官黄仁勋先生的专访中,黄先生赞成不断增强曲面细分能力,但是这种能力的增强,依靠的是使用固定功能单元或者说特定硬件IC,实际上也就是曲面细分单元(Tessellator)。![]()
5月28日中国区媒体群访黄仁勋
黄仁勋先生向我们解释到,在考虑每瓦特性能的今天,追求性能的提升必须要衡量其他因素的影响以及控制这种影响,特别是用户最为关注的功耗问题。图形渲染能力(Rendering)和几何能力(Geometry)是目前GPU最为主要的两个发展方向,这两个方向所需要的硬件是不同的。
曲面细分性能或者说业界对曲面细分的依赖,再次造就出独立的Tessellation单元。当然虽然它不太符合通用处理单元的发展方向,但是如果计算晶体管的投入与性能回报,特定硬件实现Tessellation功能是目前最好的选择。所以黄仁勋先生坚持以增添特定硬件IC的方式来提升GPU几何处理能力。 |