返回列表 发帖

评价下G80 VS R600

当然是基于现在已经公开的资料之上的评价 :p 1 X1 O+ e- l, W* {
  I  \' ^0 @/ y2 z. K$ `- u/ X
本来我是想只写自己看法的,但为了照顾一些初级GZer,带上了比较长的解释,请各位老大自行跳过就是 :) 0 V- x1 S1 z4 n1 I3 N; E3 H" G

* ]$ I0 m5 E, _9 WG80架构在我个人看来,根本就不适合游戏) J6 P- R. S; ?" [' u
( y' `: G' u7 c& J2 M
    个人认为,对于图形渲染,如果只考虑效率,G80当然是最好的体系。但效率不等于效能,效能是综合个方面因素,尤其是当前半导体工制造艺水平之后的一个综合性的结果,综合从效能上来看,G80并不是最优的体系。也就是说,如果NV需要一款拥有跟G80类似的图形渲染效能的GPU,完全可以用更少的代价(晶体管)办到。我只能猜测,NV这次的野心不只在图形领域。: h/ s/ H9 V; k  o; g- v4 F: |
    R600相比之下就务实得多,它是一款实实在在为游戏而生的GPU,虽然AMD肯定不会止步于此,诸如CTM之类的一些东西很快就会被推到应用层面,但从目前已经透露的R600架构来看,R600的首要设计目标就是为了3D渲染。让游戏跑得更绚更快是这个架构最主要的任务。# j! L/ Q8 e3 t) X4 r( d% x" S

( P4 n' ^; P" p那么,让我们来稍微详细的看一下G80与R600设计侧重点之间的区别
, w( }1 @. s2 p4 {! j$ {9 P; t5 U( |3 p% W" X/ x
1 u9 `: X  |, l9 e: m: I+ d: w+ e  F- q
    G80与以前的GPU,最大的区别就是标量化渲运算单元和多执行诸架构,这两点是G80最引以为傲的革新,但也是争论最大的改进。8 U9 z- Z9 H1 B* l; b# ~- u( w
    / {# e0 W9 A) p- o; g+ [
    所谓标量化(scalar)运算单元,是相对于之前GPU的矢量化(vector)运算单元而言的。- i* S" G7 y* z# O
    我们知道,在图形处理中,最常见的像素都是由RGB三种颜色构成的,加上它们共有的信息说明(Alpha),就一共是4个通道。Vertex数据也一般是由x,y,z,w四个坐标构成,这样一共也是4个通道。对3D图形进行渲染,其实就是改变RGBA四个通道或者x,y,z,w四个坐标的数值。所以,为了方便,GPU的基本渲染单元从一开始就被设计为能同时完成一个象素渲染或者几何转换。数据的基本单元是scalar(标量),就是指一个单独的值,GPU的ALU里进行的一次这种变量操作,被称做1D scalar操作。由于GPU的一个ALU在一个时钟周期执行了4次这样的并行的运算,所以ALU的操作被称做4D vector操作,也就是矢量操作。一个vector(矢量)就是n个scalar(标量),一般来说n=4。所以,GPU的ALU指令发射端只有一个,但却可以同时计算4个通道的数据(在GPU上一般是3D+1D),这就是SIMD(单指令多数据流)的意思了。/ s7 G! [* c' ~9 A) E+ y
. B! R6 L; o; G2 R' d% t
    对于图形渲染来说,这种SIMD的设计真是再好不过了,因为VS和PS部分进行的大部分运算都是4D vector(3D+1D),它只要用一个指令端口,就能单周期完成4倍的运算量,所以自打GPU诞生开始,基本的运算单元就一直是这种vector SIMD设计。
* ]! w8 L( b) U4 o但G80却打破了这种传统,将最基本运算单元统统改成了scalar,也就是标量ALU。这样对于基本的vector操作,就需要多个周期,或者将它们拆分后用更多的运算单元才能完成。有什么样的东西值得NV这样冒险呢?3 i% |8 Q" v: k% ~) J+ k
! e. E' g$ ?0 U! s0 X4 U! @* I
    原来,NV认为,现在的GPU指令,长度并不一致,对于add,mul这样的指令,GPU能单周期完成,但对于诸如sqr这样的复杂指令也需要多个周期才能完成,对于这些需要多个执行周期的指令,过“大”的4D ALU显然“不合算”。而GPU的编译器即使经过大量优化,编译出来的shader也指令也会长短不一,五花八门,操作数既有4D,也有1D、2D、3D。对于通常执行能力为4D的ALU来说,让它跑1D或者2D指令,而由于SIMD天生的单发射端口限制,不可能同时跑两个或多个,而跑一个单周期内它的运算能力就填不饱。这样就很“划不来”了。这就是SIMD的指令并行性问题。在GPU中,如果标量和矢量指令能够并行,比如3D+1D,那么这被称做co-issue。但正如上面所说,面对复杂的shader环境,co-issue不可能是每时每刻都有效的,因此通常的4D ALU在这里就存在一个浪费问题。而对于1D ALU,就不存在上述问题了。如果把1个4D ALU分成4个小的1D ALU放在一起进行图形渲染,因为各自都有自己的指令发射端口和控制资源,所以能保证理论上100%的运行效率。 在G80上,NV率先引入了这种纯标量的渲染单元,所以G80的底层执行单元被称做MIMD(多指令多数据流)架构。
! E1 x3 u  S+ Z  C    G80的每个ALU的计算能力都不强,但它们不存在“浪费”问题,效率很高。然后通过增加运算单元的数量(128SP),提高频率(shader 1.35GHz)来增加运算能力。% N/ K; m$ Y7 D/ x2 N, M

$ T- k4 O, i! d# k$ H% d/ ]" M! Z, i    这样的做法,看上去一切都完美,既有高效率,又有强运算能力,但真的是这样吗?* S9 I3 ^5 O& a  X9 A' n
    在能够co-issue的程序中,4个1D Scalar ALU与4D Vector ALU的运算能力是一样的,但1D Scalar ALU因为有4个发射端口,4份控制单元,其占用的晶体管数量将远远超过4D Vector ALU。按照EJI的说法,算上ALU的其他辅助资源,4个1D ALU的体积将是1个4D ALU的2-3倍,对于GPU而言,这是一个灾难性的数字。或者有人会说,那无所谓,在运算能力相同的情况下,1D ALU效率高啊。但你是否有想过,与其做一堆庞大臃肿的1D标量ALU,不如干脆用同样的晶体管,做它一半数量运算能力超过它一倍的4D ALU不是更合算! 而实际上,R600就是这么做的...
7 c3 Z% I6 v- h6 t( i) a! q& j5 o) E* V/ d/ b
      Q5 d' N5 G0 V3 G6 s1 A- a
    再来看G80的多执行诸体系(Multi-Threading)9 Q4 a) e- z; F$ v( o9 d: @% Q+ V$ x
- p0 c6 j% _' z3 z+ F
    实际上这个并不能算G80的首创(我觉得,第一块能够真正称得上Multi-Threading的GPU,应该是Nvidia NV40,虽然还很简陋,但它有完善的控制体系和threading资源,整个流水线的工作也通过线程分发器来管理。R4XX只支持SM2.0,也只针对线性shader而设计,纵然它也通过threading来掩盖延迟,但并不能算),但G80却是最完善的Multi-Threading GPU,它有极为庞大的register资源,能维持4096个平行线程(看看你的CPU,4核心QX6700也不过是4线程而已),甚至引入了整数指令集来方便管理。当数据送至G80图形核心的流水线之后,会首先被送入一个叫做Thread Control Unit的地方,相当于G80图形核心整个流水线的仲裁和控制机构。这个类似于处理器的线程管理单元会将所有的着色单元的数据平行的拆成超过4000个平行的Threading(线程),并动态监测整个shader array流水线的工作状况。一旦它发现其下某个着色单元由于等待数据或工作完成而处于闲置状态,就会马上递交一个新的线程供其执行。这样让整个流水线保持极高的运行效率。
: d  i% T1 c5 A, q3 Y* T   
; M/ H& ]% @1 y    而且,富裕的Threading对于掩盖流水线延迟和动态分支都有极为重要的意义,详细介绍请看Eji兄的这篇文章,字太多不打了。:wacko:   http://we.pcinlife.com/thread-506629-1-1.html$ |4 Y) C+ U# t3 @' b$ l' v
   , F7 A1 f& U4 N- R4 U, l# o: X
    相比之下,R600依然维持512-1024之间的一个Thread数目。0 m: W% d* ?; w$ b4 O( m. v& O
6 e: ]% ~! m# Z; o" B
    一直到这里,我们发现Multi-Threading又是一个几乎完美的东西,它对GPU的任何一个部件的效率提升都有帮助,而且给予了GPU克服存储器延迟的力量,那么,我到底要说什么呢?, [8 n9 D2 @. n' f7 E
: o& v" ^. R  X) J) ]( a5 k
    实际上,跟标量化渲染单元一样,Multi-Threading确实是提高GPU运行效率的好东西,而我认为它的不足之处也跟标量渲染单元一样:实现起来代价太带,将用来实现它的资源花到别的地方,对于游戏来说效果可能更明显; Y& Z$ a; w+ j( {( A. i+ _6 z/ _
0 t2 l$ \! w' j
    想想看吧,我们能从G80如此多的Thread中得到什么?流水线效率?别扯谈了,效率高怎么了,R520具备512threading,低延迟的硬件化线程分配器,支持batch為單位的threading交换,效率还不高?同频下还不照样被200多threading,分配管理体系也不完善,延迟大得多,每threading能抓到的资源也少的G70打得满地找牙。G70不过是多装了8个Pixel Shader而已。不过后来R580 ATI也清醒了,Threading资源没有任何变化,依然是512个,但PS增加3倍,从16到48,现在同频下轮到G71满地找牙了,呵呵。7 B' {2 E+ m! d( h
    OK,我知道到这里那些天骄党们回贼心不死,拿R520的分支性能来说事,那么就彻底讲清楚。流水线平行度的问题已经是老生长谈,动态分支(Dynamic Branch)可以用来融合Shader,但不代表其他提高平行度的途径已经完蛋。一个充满分支和跳转的Shader对游戏的帮助理论意义大于实际意义。在3DMark06这种已经有用到相当复杂的Shader的程序中,Dynamic Branch也只是当作调味剂而不是主菜来用的。至于Branch在shadow filter的edge soft中的应用...恩,我想说的是,绝大部分情况下edge所占的部分都不多,而且随着分辨率的提升,这个部分的比例会越来越小。引用RacingPHT兄的话来说,也许我们还得感谢Branch-----它让一个只能跑15FPS的DEMO提速到了30FPS-----虽然它之前能跑300FPS。问题是:Filter一定要这么做吗?我想FEAR的SoftShadow已经给了一个表率。( C9 g5 |. s" L4 u$ J9 `2 q% ?

* K9 z5 y; i' [* e. W7 E7 H9 P. b; E; w# C. M
补上G80 VS R600(传言)的数据对比(统统根据官方材料而订) :huh: & n& m) G' T* T, p
shader吞吐能力: G80 1350MHz*128*3flops(mul+mad并行)=519GFlops VS  R600 1000MHz*64*12Flop=(mad+add并行)=768GFlops( @+ P9 }; L; |' J* z7 [
显存带宽: G80 86.4GB/S(384bit GDDR4) VS R600 over140 GB/s (GDDR4 over 1.1GHz)# i6 e4 m/ D, l4 c7 M5 b% G' E
  x3 K2 k( X; X+ u; L: \

( A4 q( k% @5 i4 M* I  y$ @  c( o! }) {  w1 b& w0 C
7 u' Z8 T" d0 m7 z" t
综上所述,G80不可谓不先进,效率不可谓不高,但他面对"暴力"的R600(说得好听点就是“将每一个晶体管都用于游戏”的R600),胜算实在不高。2 I4 S/ L" ]7 O- D
& M9 `1 E$ ], g: t
不过,大家就此认为NV是白痴设计了这么一个过于理想化的架构,就错了。NV从来都是实用至上。这些在游戏里很难被用到的“高级东西”,将会用到哪呢,嘿嘿,我现在打字也打得手痛了,容许我打一下广告,过几天会某网站有一篇文章,虽然并不完全是我写的,但我参与了其中,到时候我再来顶贴 :loveliness:& }: l1 k  a# O5 A1 T
. Y( M! c* M8 I; u
[ 本帖最后由 来不及思考 于 2007-1-1 06:42 编辑 ]

惯例,沙发不让,希望各位FANS看完帖子后,少一些感性,多一些理性。
! T) Q6 [# t5 h1 W* h, A$ d如果一定要吵架,请另外开个名为"G80 VS R600,两边FANS来PK"的贴,谢谢 :)

TOP

这流水文算是思考对PCI的元旦礼物吧,希望PCI越办越好,各位FANS们都能买到自己中意的卡 :p

TOP

板凳....9 B* I' \5 N" Z
; g( N5 s1 }$ a8 c( U
哪个强就支持哪个 等r600发布并且有详细对比评测的那一天

TOP

原帖由 honglun 于 2007-1-1 01:36 发表# l  ]. ~& w+ j5 h7 P' |) u
板凳...., j+ L) C: i2 [
+ x1 I5 p8 @4 H" z- ?* `  S
哪个强就支持哪个 等r600发布并且有详细对比评测的那一天
! Y( K+ m) v9 j  [  Q9 |
& E2 ?; [  L; V+ Y: ^4 a6 a
为什么我的帖子,第一个回复都被沙发板凳党占据,上次那个也是这样 :wacko:

TOP

:wub: 三更半夜来发猛文啦,明日仔细睇

TOP

希望了解跟CPU中SIMD单元的区别?

TOP

原帖由 R660 于 2007-1-1 01:39 发表7 l# L7 i6 Z" P4 O9 ?7 i1 j
NVIDIA CPU:lol:

: U# o2 p4 I/ Y6 i1 [8 M
2 p) P0 t1 L5 s三个字就概括了我的全文意义 :thumbsup: . W6 n8 W. R9 O. ~% D# b" Z* B+ O
G80虽然离CPU还差10万8千里,但绝对是第一个迈出这步的GPU :)
2 S) {/ R7 M' v' }) g
3 _& u0 s0 p/ ?[ 本帖最后由 来不及思考 于 2007-1-1 01:51 编辑 ]

TOP

原帖由 89度热水 于 2007-1-1 01:48 发表
/ b7 m) G6 z0 `; M希望了解跟CPU中SIMD单元的区别?
# D1 f5 u# _; P) C8 O
9 I) d5 ?- w" x0 a( @  N
一模一样,都是通过单指令发射多个数据吞吐来提高FLOPS

TOP

原帖由 PS1080 于 2007-1-1 01:46 发表3 ]4 ]; c' }' c4 I4 q3 k+ q
" z6 v3 `- _9 k8 ?5 I% m: [
# D" q% s4 r# C
如果是n卡“将每一个晶体管都用于游戏”,不知道LZ会用什么词来形容?完美架构?高效?或者“和谐”?:lol:
, }; j0 ]! }1 C/ K  _8 ]

- c" T) l( k+ S  @. }) F注意两点:
$ O* b+ W6 E1 i$ \第一,我是NFAN+ S3 `3 n9 z" J- r5 l
第二,我打了引号. o- B7 a6 z# G- q4 D' G8 Z

6 y: Y/ N, x/ U; m; z2 Q: r+ y* P:sleeping:

TOP

原帖由 PS1080 于 2007-1-1 01:43 发表, b# _: w6 O! d) \" q2 L
不行就是不行,很好奇为什么早就写好了今天才发?难道是因为知道R600真的很强悍不得不发:lol:
% b" E3 x6 g$ a
( T' N' a4 t* m0 V/ u
那又怎么样% `8 G+ d' [2 V% x# V; @
要不要比谁卖得多 :)

TOP

如果某些人认为我这是在为所谓的"G80即将到来的失败找借口"& P7 j! R  z2 a: R' ^3 v# N
那你大可以无视此文 :huh: ! w0 |, e8 c0 x! ]+ t9 _+ x: ^: h
) x6 U- O4 P. D
我也不会为了这种傻鸟一样的口舌之快找借口,我只想透过问题,触及本质
1 ~" k; p5 \# b7 c# t+ J
# `2 k: Y' L( zPS:即使只就游戏本身来说,G80当了3个月皇帝,足够了,下一个皇帝是G81(G85?),R600不过是个短暂的篡位者而已,有兴趣的话,另外开贴讨论

TOP

原帖由 R660 于 2007-1-1 01:58 发表, D0 K% J+ C/ r$ m7 m. @
小黄看来对Fusion不敢掉以轻心嘛:p
! L# _+ l' w5 k. U  ], {
也许G80的这些东西在游戏市场上是累赘,但GPGPU方面,就完全反了过来
+ ]4 {" D* S+ X+ J/ U' p- FCUDA的PDF一个月前就拿到,我敢说NV只要达到里面他宣称的一半效能,那在GPGPU方面R6XX这一代就无任何翻身机会 :)

TOP

原帖由 来不及思考 于 2007-1-1 01:50 发表% f4 q* z' J, O4 }+ a% ?0 Q
4 a7 ~& P0 T- Y2 r! T
& b( T4 O1 o6 j! c1 d
一模一样,都是通过单指令发射多个数据吞吐来提高FLOPS
  l7 q# p/ F$ T  W$ P$ ]4 R3 j9 c

3 l+ ]; G+ b! Z" j2 V* R# g! \' Y. F那类似多核心CPU里的SSE单元之类的能不能独立出来做成标量单元?不要束缚在X86的发射架构下

TOP

原帖由 89度热水 于 2007-1-1 02:01 发表0 s2 U3 Q" y3 a/ Y" b3 w
. y$ [- V" C4 K- N) G( O' `
& q9 h7 H5 C1 _+ f8 L
那类似多核心CPU里的SSE单元之类的能不能独立出来做成标量单元?不要束缚在X86的发射架构下
# y; Q) F. c9 X7 J/ G
6 `) p" O. C3 ], ?7 R) |! A: ?
这样做的话,应该叫DSP :lol:

TOP

还有一个极端点的,叫Cell :lol:

TOP

如果能兼容现在的程序的“DSP”也会非常强大

TOP

原帖由 89度热水 于 2007-1-1 02:03 发表" i, D5 E8 Z# R( l# h$ L( g
如果能兼容现在的程序的“DSP”也会非常强大

1 l. w9 I9 k  B* g) n) h8 H3 y  p! q' Y" s7 v- ~
理论上是如此 :) 3 G0 i# y) m& K
但实际结果是,拥有Cell的SONY还是找了NVIDIA

TOP

思考能不能预测一下,对于未来游戏,是G80好还是R600强

TOP

原帖由 lasia 于 2007-1-1 02:04 发表4 N/ k5 g/ e# {1 o# f9 ~
思考能不能预测一下,对于未来游戏,是G80好还是R600强
" r+ P# M) Z5 q7 h$ V" d$ C1 F

' b0 }# V4 i4 m, o7 n9 y$ _如果是NFS10那样的游戏,shader相对比较”规矩“,而计算量又很大+ N1 O; G; \6 K( z7 C$ o
那当然是FLOPS高的强,也就是R600强$ I% V4 a8 r, P& a
% c0 x9 o# }; L* `6 w' l
但如果是一些非常取巧的游戏,比如shader很"乱",充满了分支跳跃和子程序,那么G80就有优势1 f1 o+ {) A, M/ }! o4 p) Y8 V

. \) Y) g0 g+ s& ?0 H现在看来,第一个DX10游戏CrySis两方面都很X,既有极高的计算要求,shader又很灵活多变,所以不好说....
  Z& M8 C0 r' h( h% a4 |2 _) D4 a$ a0 F+ p( ^! L# |/ |
不过,R600的显存带宽要比G80大得多,只开MSAA的情况下,胜负应该已经分出来了 :)

TOP

话说,ATI官方材料上提到,R600应该是5.5亿左右的晶体管,比G80少,却还塞进了512bit MC,1024bit ringbus,提供了比G80高的Flops) M2 F' L7 z3 e% [0 V
确实是一个为游戏而生的GPU

TOP

原帖由 来不及思考 于 2007-1-1 02:04 发表/ Y* X4 Y' p* E+ p- a, C- @
6 T" ?$ v1 _% G. V3 h# g5 s
& c  U5 n' M2 r  g  y
理论上是如此 :)
4 G' Z3 T) d4 z- F# M5 _但实际结果是,拥有Cell的SONY还是找了NVIDIA
; T+ S5 r6 n: J3 q! B  O

$ d  e: Y1 g5 K5 E( @$ H" L3 D5 B9 z) ~8 P& ~& @
CELL的多媒体能力还是很强的吧……  y4 z$ h* q* P
CELL性能不好是因为编程困难,无法发挥性能,如果是把SSE单元独立出来,还是基于现有的指令系统的* n8 p% A* d7 z" z; C: `
/ u0 Y# E. y" Q+ q7 N& s
况且通用运算下CELL中SPE很多时候不能用到,而X64下浮点完全可以是SSE为主的,两者不能一概而论

TOP

ATI技术不行了只知道在带宽上作文章,不惜成本希望在大容量显存,高显存位宽上占得一点性能优势,结果带来恐怖的高功耗和热量. p0 V, S3 m' \# I) v
可惜游戏未来的趋势是GPU计算能力,G80革命性的MIMD构架,最彻底灵活分配的US内核无疑会把R600打回FX5800U的原形!!! R600在DX10中不能任意分配的残废US构架,落后的SIMD计算内核,远远落后于G80的分支性能简直活生生的NV30在世!" J4 C7 W  t! X
1 N/ w+ `$ H  N% W. }  @) t
R600的US构架沿自C1,没US构架的GPU时,它算先进,但G80这种最彻底的US构架+MIMD计算单元出来后,ATI的US构架就是十足的残废!!!

TOP

原帖由 89度热水 于 2007-1-1 02:12 发表, L0 r) H  P' h$ h) I" @
3 R9 ^1 A* G  P2 c5 _- \
+ ^2 s* t. J/ Y( {; t
5 h- G* ?8 c) H# V& W" ?
CELL的多媒体能力还是很强的吧……2 a' ?/ p5 s& g
CELL性能不好是因为编程困难,无法发挥性能,如果是把SSE单元独立出来,还是基于现有的指令系统' B' y0 U$ F" Y
8 u$ U  k6 I/ @5 G
况且通用运算下CELL中SPE很多时候不能用到,而X64下浮点完全可以是 ...
. o# r9 B) i" g4 ~
; C3 n: f# h: \; H
R600和G80就是按你说的在做* h$ X$ u, h& N0 Z9 y" `
协处理器,或者时髦一点,叫GPGPU :lol:

TOP

原帖由 SM5 于 2007-1-1 02:13 发表$ U0 ?8 B- [9 H7 s
ATI技术不行了只知道在带宽上作文章,不惜成本希望在大容量显存,高显存位宽上占得一点性能优势,结果带来恐怖的高功耗和热量, a" E: V0 {. l) ~. }5 |
可惜游戏未来的趋势是GPU计算能力,G80革命性的MIMD构架,最彻底灵活分配的US内核无疑会把R600打回FX5800U的原形!!! R600在DX10中不能任意分配的残废US构架,落后的SIMD计算内核,远远落后于G80的分支性能简直活生生的NV30在世!
. H" ]/ H# U$ d. H+ t( z- j" m6 K# ?6 Y% a6 F1 X
R600的US构架沿自C1,没US构架的GPU时,它算先进,但G80这种最彻底的US构架+MIMD计算单元出来后,ATI的US构架就是十足的残废!!! ...
; b6 x0 Q+ T* @9 B4 r
  {" B( X* ^( S9 }9 \! v
很遗憾,因为这些"先进技术",所以G80恰恰计算能力不如R600 (_(

TOP

返回列表