R600的VLIW….

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。

在〈R600的VLIW….〉中有 13 則留言

  1. 這篇就是改錯字:
    原來的數字是500MHz x 48 x (4+1)x2 = 240GFLOPS,現在發現(4+1)x2 是不對的,因為1D沒有MAD。
    所以應該改成500MHz x 48 x (4×2+1) = 216GFLOPS。
    照你的算法會變264GFLOPS吧XD

  2. 但我在
    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と修正されている。

  3. 看過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,
    不知哪個算法才正確?

  4. 後藤老爹和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。(一般用前者)

  5. 有個疑問想再請問Eji大,
    這”[3+1+2+2]*2+1″當中最後的*2+1的+1是指兩個SFU嗎?如果是的話,那SFU的幫助也太少了…
    還有那TMU的nrm_pp(FP16 normalize,7flops)在R580或Xenos都有嗎?如果沒有的話,那G7x多出的這個東東有何功用?

  6. 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也沒有這個設計了。

  7. 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的設計有很大的不同。

  8. 噗~~!
    原來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相比。)

  9. 的確,在只有AA的測試比較,都是G71勝R580…
    反而在有HDR或HDR+AA中G71可說是全盤皆輸XD
    (真不知PS3要如何針對這個窘境…)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料