100℃结冰 2007-6-28 19:39
<转>教你区分流处理器和管线的概念!
[color=black][/color][color=black][/color][color=black][/color][color=black][/color][color=black][/color][color=black][/color][color=black][/color][color=black][/color][color=black][/color][color=black]关于流处理器,完全不是管线这种概念,不能混淆[/color]
[color=black][/color]
[color=black]8800GTX/Ultra 128个流处理器
[/color]
[color=black]8800GTS 96个流处理器
[/color]
[color=black]8600GTS/GT 32个流处理器
[/color]
[color=black]8500GT 16个流处理器[/color]
[color=black][/color]
[color=black]可能很多人都发现8600GTS/GT的性能和20管线的7900GS差不多,根本比不上24管线的7900GT和7950GT[/color]
[color=black]8500GT的性能只和8管线的7300GT差不多,性能还不如12管线的7600GT/GS[/color]
[color=black][/color]
[color=black]这是因为流处理器不能等同于传统的“管线”,而且DX10显卡都是统一渲染架构,流处理器既要负责像素还要负责顶点渲染。那么流处理器和管线有什么关系呢?说起来比较麻烦,有耐心的话慢慢看看:[/color]
[color=#000000] [/color]
[color=black][img]http://img5.pcpop.com/ArticleImages/0x0/0/476/000476661.jpg[/img][/color]
[color=#000000] [/color]
[color=black] 在图形处理中,最常见的像素都是由RGB(红黄蓝)三种颜色构成的,加上它们共有的信息说明(Alpha),总共是4个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。为了一次性处理1个完整的像素渲染或几何转换,GPU的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4次运算能力的运算器(ALU)。[/color]
[color=black] [/color]
[color=black] 数据的基本单元是Scalar(标量),就是指一个单独的值,GPU的ALU进行一次这种变量操作,被称做1D标量。由于传统GPU的ALU在一个时钟周期可以同时执行4次这样的并行运算,所以ALU的操作被称做4D Vector(矢量)操作。一个矢量就是N个标量,一般来说绝大多数图形指令中N=4。所以,GPU的ALU指令发射端只有一个,但却可以同时运算4个通道的数据,这就是SIMD(Single Instruction Multiple Data,单指令多数据流)架构。[/color]
[color=#000000] [/color]
[align=left][color=black][img]http://img5.pcpop.com/ArticleImages/500x375/0/476/000476646.jpg[/img][/color][/align][align=left][color=black][/color] [/align][align=left][color=black] 显然,SIMD架构能够有效提升GPU的矢量处理性能,由于顶点和像素的绝大部分运算都是4D Vector,它只需要一个指令端口就能在单周期内完成4倍运算量,效率达到100%。但是4D SIMD架构一旦遇到1D标量指令时,效率就会下降到原来的1/4,3/4的模块被完全浪费。为了缓解这个问题,ATI和NVIDIA在进入DX9时代后相继采用混合型设计,比如R300就采用了3D+1D的架构,允许Co-issue操作(矢量指令和标量指令可以并行执行),NV40以后的GPU支持2D+2D和3D+1D两种模式,虽然很大程度上缓解了标量指令执行效率低下的问题,但依然无法最大限度的发挥ALU运算能力,尤其是一旦遇上分支预测的情况,SIMD在矢量处理方面高效能的优势将会被损失殆尽。[/color][/align][color=black] [/color]
[color=black] 可以这么理解,传统的1条管线里面包含了4个基本运算单元,在早期这种架构的执行效率还是很高的,因为大多数程序指令都是4D的。但由于API和游戏复杂Shader指令的发展,4D指令所占比重开始下降,3D/2D/1D等混合指令频繁出现,所以传统的管线式架构效率越来越低![/color]
[color=black] [/color]
[color=black] 因此,NVIDIA从G80开始架构作了变化,把原来的4D着色单元彻底打散,构成了128个基本运算单元,称之为流处理器。这些流处理器可以按照动态流控制智能的执行各种4D/3D/2D/1D指令,无论什么类型的指令执行效率都能接近于100%![/color]
[color=black] [/color]
[color=black] 如果硬是要把流处理器和传统管线建立一个公式的话,就应该是128÷4,因为目前4D指令还是要占很大的比例。但还要考虑到G80的流处理器工作频率是核心频率的两倍(GTX是1350MHz,Ultra是1510MHz),所以G80的“管线”应该是128÷4×2=64条,这64条就是统一的管线,假如给G80分配8条顶点管线(因为G71/R580都是8个顶点),那么G80的像素管线就是56条——而且是超高执行效率的56条管线,在某些情况下还能超过56条,因为64条管线可以动态分配像素和顶点的比例,遇到有些模型简单的游戏,那么像素管线所占比例就更多了![/color]
[color=black] 8800GTX/Ultra是64个统一着色单元,就当它是56像素管线8顶点管线吧[/color]
[color=black] [/color]
[color=black] 8800GTS是96÷4×2=48个统一着色单元,就当它是40像素管线8顶点管线吧(核心500MHz,流处理器1200MHz,就当600MHz算)[/color]
[color=black] [/color]
[color=black] 8600GTS是32÷4×2=16个统一着色单元(核心675MHz流处理器1450MHz,就当700MHz算)[/color]
[color=#000000] [/color]
[color=black][img]http://img5.pcpop.com/ArticleImages/0x0/0/462/000462541.jpg[/img][/color]
[color=black]
3Dmark03这种很老的游戏里面,8600GT没比7600GT强多少,原因就是它等效于12像素管线+4顶点的规格,新架构在老游戏里面没有优势[/color]
[color=black] [/color]
[color=black] 8600GT也是16个统一着色单元(核心540MHz流处理器1180MHz,就当560MHz算),可以看作是12像素管线4个顶点——这个规格和7600GT差不多,但是8600GT比7600GT强不止一点,从这里就能看出G80新的架构优势有多明显:[/color]
[color=#000000] [/color]
[color=black][img]http://img5.pcpop.com/ArticleImages/0x0/0/462/000462545.jpg[/img][/color]
[color=black]
到了3Dmark05里面就完全不是那么回事了,8600GT的成绩居然和7950GT差不多,这就说明G71的架构在3DMark05一类的游戏(比如极品飞车上古四)中效率特别低。而G8X系列在各种新老游戏里有效率都是很高的[/color]
[color=black][/color]
[color=black] 最后是8500GT 16÷4×2=8个统一着色单元,把它拆分成5管线3顶点应该差不多吧,所以它在很多老游戏里面的性能不如7300GT,只有在新游戏里面才能超过7300GT、接近7600GS[/color]
[color=black][/color]
[color=black][/color]
[color=black][/color]
[color=black][/color]
[color=black] 8600/8500架构是很强,可惜流处理器有点少,只有在新游戏里面才有好的性能。而且显存只有128Bit,AA效能不如7900GS和X1950GT[/color]
[color=black][/color]
[color=black][/color]
[color=black][/color]
[color=black][/color]
ahcome 2007-7-1 11:00
发得好!不过貌似太长了捏~~哈哈
最近实在忙,一直都没得到这个版块顶你了,呵呵