R600的結構資訊裡面提到,Shader是VLIW + SuperScalr + SIMD….
乍看之下很陌生,不過這邊要提醒一下,其實VLIW並不是很新的東西,因為NV30就已經是VLIW結構了….
這裡(引用Tech Report的內文)提到,Xenos”不是”NV30般的VLIW結構,沒有排程上的問題。
不過R600似乎是第一個ATI提供register file overflow to DRAM的產品,這是為了達成SM4的規格;
NV3x當初為了達成當時為overspec的SM2a,也做了類似的決定,雖說這個特性有保留至NV4x/G7x,但是因為NV4x/G7x結合Superscalar的關係,相較於NV3x效率得到大幅改善。等到G80的時候,就和VLIW的關係更小了。
所以,其實VLIW真的沒什麼新奇的,不知道ATI這時候才拿出來講的原因是什麼。XD
補充:
http://www.rage3d.com/board/showthread.php?t=33816261
Xenos相關的一些資訊。其實只要扣掉一些特性之後,Xenos真的和R600很像。
然後,Xenos的Scalar並沒有mad,只有add/mul。
所以Xenos的raw performance應該是500MHz x 48 x (4×2+1) = 216GFLOPS。
48 ALU
simultaneous vector, scalar ops
16 vertex & 16 texture fetch
96 shader instr/cycle ( 48 Ginstr/s) – 12 instr/pix fill rate
32-bit IEEE FP (VS & PS)
216 GFLOPS (theory)
168 GFLOPS (Vtransform)
they are arranged in 3 banks of 16 ALUs in SIMD
64 threads (HW), 16×64 Vertex vectors, 48×64 Pixel Vectors
Balancing vertex vs pixel shader perf
資訊來源:
http://we.pcinlife.com/thread-757792-1-1.html
http://msdn2.microsoft.com/en-us/library/bb313879.aspx
http://forum.beyond3d.com/showpost.php?p=978652&postcount=3679
Jawed的R600指令使用率測試。(含R580/Xenos對比)
—-
最後一個無聊的小插曲:G80沒有PureVideo HD2,R600同樣沒有UVD。
我記得Xenos的浮點達到240GFLOPS不是嗎?
(500MHz*48*[5*2+1]=240GFLOPS)
這篇就是改錯字:
原來的數字是500MHz x 48 x (4+1)x2 = 240GFLOPS,現在發現(4+1)x2 是不對的,因為1D沒有MAD。
所以應該改成500MHz x 48 x (4×2+1) = 216GFLOPS。
照你的算法會變264GFLOPS吧XD
但我在
http://pc.watch.impress.co.jp/…526/kaigai183.htm
當中看到的是:
ちなみに、前のレポートでは、Microsoftからの情報をもとに、ベクタFPUが1サイクルで積和算の2オペレーション、スカラFPUが1サイクルで加算の1オペレーションで、1 Shaderで1サイクル当たり最大9の浮動小数点演算オペレーションで、Shader演算性能は最大216GFLOPSと性能について書いた。しかし、Microsoftが後に出した資料では、最大で5wayベクタで1サイクル2オペレーション、Shader演算性能は最大240GFLOPSと修正されている。
看過Eji大的資料來源後,我知道問題出在哪了…
(這算是MS在放假數據嗎?XD)
500MHz*48*[5*2+1]=240GFLOPS是筆誤,
複製更改500MHz x 48 x (4×2+1)時忘了將+1殺掉XD
—-
因為瀏覽那些資料,在下找到了下圖:
http://www.pcinlife.com/…/arts/specs_compare.png
當中RSX(應該說G7x系列)的PS之浮點是0.5*24*(4+4)*2=192GFLOPS,
而後藤大叔的算法是:
http://pc.watch.impress.co.jp/…701/kaigai195.htm
0.5*24*[(4+1+4+1)*2+7]=324GFLOPS,
不知哪個算法才正確?
後藤老爹和PIL的的數字差距來源主要是:
1. shader除了3D+1D與2D+2D之外另有兩個SFU,所以變成3D+1D+1D & 2D+2D+1D。
2. TMU的nrm_pp有算進去(FP16 normalize,算7flops)。
這兩個數字應該都有問題。
首先,根據NVIDIA在PS3發表會上的發言指出,由於RSX是136ops x 550MHz(當時),加上CELL的3.2GHz x 8 總共是 100Gops。
136ops的算法是8VS裡面的4D+1D算成兩個 x 8 = 16,24個ps要有120個ops,所以最多5個指令發射。
這樣的話3D+1D+2D+2D是4個、後藤老大的算法會變成6個,都不對。
現在主要的疑問是SFU有沒有MAD,正常狀況應該是沒有。
這樣的話就會變成0.5x 24 x(([3+1+2+2]x2+1)+7(nrm_pp} = 0.5x24x17 or 0.5x24x24 = 204GFLOPS or 288GFLOPS。(一般用前者)
有個疑問想再請問Eji大,
這”[3+1+2+2]*2+1″當中最後的*2+1的+1是指兩個SFU嗎?如果是的話,那SFU的幫助也太少了…
還有那TMU的nrm_pp(FP16 normalize,7flops)在R580或Xenos都有嗎?如果沒有的話,那G7x多出的這個東東有何功用?
NVIDIAE官方的資訊是G70有SFU,NV40沒有不過一般是不太把這個東西算進去,認定G70的改善主要是sh0的MAD化。
至於nrm_pp,主要是對FP16的一點omake,因為NV40/G70在register file資源上的改善,已經沒有NV30那樣FP16和FP32的速度有嚴重落差的狀況了(NV30是FP32等速,FP16 double pump;NV40/G70都是FP16和FP32等速)。但是NV40/G70在使用FP16的時候TMU可以附加這個免費的算術指令,作用是求法線。
R580與Xenos都沒有這個功能,不過顯然這個功能並沒有帶來很大的優勢….現在G80也沒有這個設計了。
>認定G70的改善主要是sh0的MAD化。
What is sh0?
再問關於sh0於Xenos或R580上是否都有類似的架構?
sh0 = Pixel Shader ALU0,即3D+1D那組ALU,和TMU共用指令發射,所以使用TMU的時候無法使用。
NVIDIA的Sh0、Sh1架構的指令有互補性,兩者之間沒有特別的主從關係。
但是ATI的設計則是一個大的3D+1D ALU與一個小的3D+1D ALU,等到Xenos/R600的時候變成一個4D vector ALU + 1D scalar ALU,都和NVIDIA的設計有很大的不同。
噗~~!
原來sh0是指Pixel Shader ALU0,
我還以為是啥新東東…XD
(不過還是謝謝Eji大,讓我知道其別名。)
所以”[3+1+2+2]*2+1″最後的+1是指兩個SFU,
故2SFU=Xenos沒有MAD的1D是嗎?
不知G70的24PS的”[3+1+2+2]*2+1″與R580的48PS的”(3D+1D)*2″相比,不知何者較效率較高?
(最主要是G70中的2D+2D比R580中的3D+1D相比。)
不論ALU效率,光R580的threading就已經把G71幹掉了吧。XD
的確,在只有AA的測試比較,都是G71勝R580…
反而在有HDR或HDR+AA中G71可說是全盤皆輸XD
(真不知PS3要如何針對這個窘境…)