AMD和NVIDIA的GPU特点及优势_第1页
AMD和NVIDIA的GPU特点及优势_第2页
AMD和NVIDIA的GPU特点及优势_第3页
AMD和NVIDIA的GPU特点及优势_第4页
AMD和NVIDIA的GPU特点及优势_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AMD和NVIDIA的GPU特点及优势发表时间:2011-4-25作者:熊东旭来源:e-works关键字:GPU关键字:GPU图形处理器AMDGPUNV」DIAGPU作为图形工作站标志性的配件,专业显卡良好的抗锯齿功能帮助图形工作站处理复杂的三维模型,保证线条的光滑。除线条抗锯齿功能,专业显卡对重叠图形、动态光源、图形剖切等操作的处理,与普通显卡也有着非常大的不同。作为专业显卡领域仅有的两家厂商,AMD和NVIDIA的专业显卡在性能和价格上都日益趋于同质化,纯粹的从性能和价格两方面来讨论两家产品孰优孰劣已不合适。为了更加深入的了解两家厂商专业级显卡产品的硬件特性,e-works将从两家厂商的GPU架构着手来讨论两家产品的优势及不足。一、GPU与显卡简单来说,GPU与显卡的关系就好比CPU与主板的关系,主板有了CPU才有了动力之源,利用CPU提供的动能,主板才可以实现各种功能。同理,显卡之所以能加速图形图像处理,也是因为GPU为显卡提供了强大的运算能力。专业显卡发展到今天,无论是AMD还是NVIDIA,功能上已经日趋同质化,NVIDIA专业显卡能实现的功能,AMD也能实现,但从GPU运算能力来讲,两家厂商还是有一定可比较性。二、AMD与NVIDIA的GPU架构对于像素的特点,相关的文章也讨论的比较多。任何一个像素都包含着两种不同的属性信息,即色彩和坐标。色彩信息包括RGB三原色和一个信息通道Alpha;坐标信息包括XYZ三维坐标信息和一个重力元素W。为对像素完成一次色彩计算和坐标转换,GPU的顶点着色单元和像素着色单元从一开始就被设计成为一个周期内具备4次运算能力的逻辑运算器,这便是4D矢量逻辑运算器的由来。(1)AMD基于SIMD结构的流处理器AMD的GPU采用的是SIMD架构模式,SIMD即SingleInstructionMultipleData,单指令多数据,这种架构能很好的对像素的色彩和坐标所包含的四维数据进行运算。传统的顶点单元和像素单元中的ALU都能在一个周期内完成对4D矢量数据的运算。因此,通常称这种逻辑运算器为4DALU。图1SIMD架构图1为SIMD架构流处理器的运算模式,通过唯一的指令发射端向所属的ALU发送运算需求,ALU在接收到运算指令后开始并行计算。需要注意的是,4DSIMD架构虽然很适合处理4D指令,但遇到1D指令的时候效率便会降为原来的1/4。此时的ALU, 3/4的资源都被闲置。为了提高像素单元和顶点单元执行1D2D3D指令时的资源利用率,从DirectX9时代开始,AMD的GPU通常采用1D+3D或2D+2DALU。这便是Co-issue技术。这种ALU对4D指令的计算时仍然效能与传统的ALU相同,但当遇到1D2D3D指令时效率则会高不少,例如如下指令:

ADDR0.xyz,R0,R1〃此指令是将RO,R1矢量的x,y,z值相加结果赋值给R0ADDR3.x,R2,R3〃此指令是将R2R3矢量的w值相加结果赋值给R3对于传统的4DALU,显然需要两个周期才能完成,第一个周期ALU利用率75%,第二个周期利用率25%。而对于1D+3D的ALU,这两条指令可以融合为一条4D指令,因而只需要一个周期便可以完成,ALU利用率100%。但当然,即使采用co-issue,ALU利用率也不可能总达到100%,这涉及到指令并行的相关性等问题,而且,更直观的,上述两条指令显然不能被2D+2DALU一周期完成,而且同样,两条2D指令也不能被1D+3DALU一周期完成。传统GPU在对非4D指令的处理显然不是很灵活。previnstructprevinstructprevinstructloadA(1)loadA(2)loadA(n)loadB(1)loadB(2)loadB(n)C(2)=A(2)*B(2)C(n)=A(n)^B(n)storeC(1)storeC(2)starsC(n)nextinstructnextinstructnextinstructP1图2AMDEDALU流处理器卩fl为进一步改善流处理器的运算性能,AMD推出了代号为R600的显卡核心,该GPU采用了统一渲染架构,采用了5路超标量运算单元,通过在流处理器内部集成5个1D标量运算单元,每一个流处理器都能进行1+1+1+1+1或1+4或2+3等方式搭配运算。同时,为提升ALU运算效率,AMD采用了VLIW体系设计,将多个短指令合并为一个超长指令交给流处理器去执行。对于下述指令:ADDR0.xyz,R0,R1//3DADDR4.x,R4,R5//1DADDR2.x,R2,R3 //1DR600也可以将其集成为一条VLIW指令在一个周期完成。综上:R600的架构可以用64X5D的方式来描述。previnstructprevinstructprevinstructloadA(1)loadA(2)loadB(1)loadB(2)C(2)=A(2fB(2)storeC(1)storeC(2)nextinstructSinextinstructP2nextinstructPn~loadA(n)previnstructprevinstructprevinstructloadA(1)loadA(2)loadB(1)loadB(2)C(2)=A(2fB(2)storeC(1)storeC(2)nextinstructSinextinstructP2nextinstructPn~loadA(n)loadB(n)C(n)=A(n)*B(n)storeC(n)图3R600流处理器R600采用SIMD架构,拥有64个SP,每个SP中有5个1DALU,因而通常声称R600有320个PSU,每个SP只能处理一条指令,ATI采用VLIW体系将短指令集成为长的VLIW

指令来提高资源利用率,例如5条1D标量指令可以被集成为一条VLIW指令送入SP中在一个周期完成。(2)NVIDIA基于MIMD结构的流处理器与AMDGPU的SIMD架构不同,NVIDIAGPU所采用的是MIMD架构,即多指令多数据。这种指令架构,使NVIDIAGPU的指令控制系统要比AMDGPU复杂。在NVIDIA看来,一味的追求流处理器数量,并不意味着高效率的计算性能。previnstructprevinstructprevinstructloadA(1)loadA(2)loadB⑵C(2)=A(2)*B(2)storeC(2)storeC(1)nextinstructnextinstructP2nextinstruct-Pn~loadA(n)loadB(n)previnstructprevinstructprevinstructloadA(1)loadA(2)loadB⑵C(2)=A(2)*B(2)storeC(2)storeC(1)nextinstructnextinstructP2nextinstruct-Pn~loadA(n)loadB(n)C(n)=A(n)*B(n)storeC(n)图4G80核心架构从G80核心开始,NVIDIA的GPU采用了统一运算单元,并开始走彻底标量化路线,在G80GPU内部,NVIDIA将ALU拆分为最基本的1D标量运算单元,实现了128个标量流处理器,所有的运算指令都会被拆分为1D标量指令进行运算,理想情况下,能保证所有运算效率都达到100%。例如一个4D矢量指令ADDRO.xyzw,RO,R1R0与R1矢量相加,结果赋R0G80的编译器会将其拆分为4个1D标量运算指令并将其分派给4个SP:ADDR0.x,R0,R1ADDR0.y,R0,R1ADDR0.z,R0,R1ADDR0.w,R0,R1综上:G80的架构可以用128X1D来描述。这种流处理器设计方式抛弃了单独追求浮点吞吐的目标,转而优化流处理器内部结构来换取更高的执行效率。但是它也有明显的问题就是需要使用更多发射端和周边寄存器资源来支撑这种被“打散”的流处理器运行,芯片集成度和面积相对于ATI都有较大提升,必须严格控制发热和功耗。三、两家GPU架构的优势和不足现在的AMD,最大的追求就是在尽可能保证小尺寸核心的基础上,提供尽可能多的性能。或者这话应该换一种方式说??堆垛晶体管的临界点,出现在增加晶体管所导致的性能增加出现拐点的那一刻。当堆垛晶体管所能够换来的性能增幅明显下降的时候,就停止堆垛晶体管。疯狂的ALU运算器规模堆砌,让NVIDIA毫无招架之力,同时坚持以效率致胜的MIMD结构流处理器长期无法摆脱晶体管占用量大的烦恼,运算器规模无法快速增长。Fermi架构完全放弃了一味追求吞吐的架构设计方向,这一点在通用计算或者说复杂的Shader领域值得肯定,但是遇到传统编程方式的图形运算,还是因为架构过于超前显得适应性不足。RV770可以说是AMD化腐朽为神奇的力作,较之R600,RV770不仅将公共汽车一般缓慢的Ringbus换成了高速直连的Crossbar,而且还追加了大量的资源,比如为16个VLIWCORE配置了16K的LocalDataShare,同时将原有的GlobalDataShare容量翻倍到了16K,在此基础上,还将VLIWCORE规模整体放大到了R600的250%(320个提升到800个),另外,在后端配置的RBE单元以及更加完善的TA/TF也促成了RV770的脱胎换骨。在扩展ALU资源的基础之上,AMD还在做着另外一件事,那就是尽一切可能逐步优化较为古老和低效的SIMD结构。在RV7中对LDS的空间直接读写操作管理等改进就是这类努力地开始。这导致了R600和R770在ShaderProgram执行方面有很大差别。R600的ShaderProgram是VerticalMode(5D)+HorizontalMode(16x5D)的混合模式。而RV770是单纯的VerticalMode(16x4D=64D&16*1D=16D,即64D+16D)。简单的说,RV770更加趋紧于NV50ShaderUnit的执行方式,而R600则相去甚远。总的来说,NV更加趋紧于使用基于硬件调度器的Superscalar方式来开发ILP,而AMD更加趋紧于基于软件编译器调度的VLIW方式来开发ILP。到了RV870架构,AMD控制甚至紧缩资源,然后靠制程来拼规模,并最终让SIMD尽可能接近通过暴力吞吐掩盖延迟的最理想结局。然后就出现了我们现在看到的拥有1600个流处理器,体积却依然小于Fermi架构GF100的RadeonHD5870显卡。AMD从R600核心开始,一直延续着上述理念设计GPU产品,R600身上有很多传统GPU的影子,其StreamProcessingUnits很像上代的ShaderUnits,它依然是传统的SIMD架构。这些SIMD架构的5DALU使用VLIW技术,可以用一条指令完成多个对数值的计算。由于内部的5个1DALU共享同一个指令发射端口,因此宏观上R600应该算是SIMD(单指令多数据流)的5D矢量架构。但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们是各自独立能够处理任意组合的1D/2D/3D/4D/5D指令,完美支持Co-issue(矢量指令和标量指令并行执行),因此微观上可以将其称为5DSuperscalar超标量架构。previnstructprevinstructprevinstructloadA(1)loadA(2)loadA(n)loadB(1)load日(2)loadB(n)C(2)=A(2)*B(2)C(n)=A(n)*B(n)storeC(1)store0(2)storeC(n)nextinstructnextinstructnextinstruct图5AMD的流处理器结构变化"SIMD虽然很大程度上缓解了标量指令执行效率低下的问题,但依然无法最大限度的发挥ALU运算能力,尤其是一旦遇上循环嵌套分支等情况,SIMD在矢量处理方面高效能的优势将会被损失殆尽。同时VLIW的效率依赖于指令系统和编译器的效率。SIMD加VLIW在通用计算上弱势的原因就在于打包发送和拆包过程。NVIDIA从G80开始架构作了变化,把原来的4D着色单元彻底打散,流处理器不再针对矢量设计,而是统统改成了标量运算单元。每一个ALU都有自己的专属指令发射器,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论