Xenos 實效數據測試 by B3D post

被人家叫來看這篇XDa

http://forum.gamer.com.tw/C.php?bsn=60001&snA=9541
360 GPU “Xenos” Fill-Rate Performance測試
(by WaffenSS)

Source:
http://forum.beyond3d.com/showpost.php?p=1150172&postcount=107
http://forum.beyond3d.com/showthread.php?p=1150172#post1150172
“RSX Secrets” post#107

現在對eDRAM歌功頌德好像沒什麼意思,不過有數據總是好事。

這些相關數據裡面主要的問題是,color compression和z-compression的作用就是用來避免「MSAA開了以後效率就掉一半」的狀況,但是G72M並不具備這個功能;還有雖說TMU會佔走shader unit 0的指令slot,但是一來PS也不是和Tex的指令數量1:1,二來C1的TMU和RSX的TMU數量和功能對比都不均等,這篇數據是忽視了這些部分,只用”G72M乘六倍”來推估RSX的性能是不太恰當;當然原文有提示這點,問題就是各討論版的看官了。_A_

個人認為,這篇反而”證實” C1的unified shader ALU總資源大約與RSX的Pixel Shader ALU總資源相仿。_A_

友人言:OO 頻寬的 XX 效率不是很好,所以 ZZ 匯流排在 WW 系統上的表現要靠 AA 的頻率拉到 BB 才行,可是這樣一來 (下略

結論:嘴砲萬歲!

在〈Xenos 實效數據測試 by B3D post〉中有 43 則留言

  1. >fp16 nrm在FP16的normal mapping的時候取法向量的時候會用到,
    >所以其實可以替補某些sh0的作用。
    這麼說起來的話,
    只要遊戲中對normal mapping之類的應用較多的話,
    RSX會較吃香囉?
    再問Eji大一個問題,
    那就是mini-ALU有MADD指令嗎?

  2. >fp16 nrm在FP16的normal mapping的時候取法向量的時候會用到,
    >所以其實可以替補某些sh0的作用。
    這麼說起來的話,
    只要遊戲中對normal mapping之類的應用較多的話,
    RSX會較吃香囉?
    再問Eji大一個問題,
    那就是mini-ALU有MADD指令嗎?

  3. 個人推這句
    –
    如果嫌這測試不夠真實, 之前B3D有跨平台開發者,把真正遊戲故意關掉LOD減面功能,
    未經最佳化測出來數據也高達300MTris/s.
    有這種效能難怪不需要像PS3開發者, 常要用SPE去預先處理頂點及砍面數.
    360的開發者卻只要把所有東西丟給Xenos就好了…….它有太足夠的頂點效能讓你浪費
    –
    我長期以來一直懷疑某些人完全不清楚其實 PS 在現在或是近未來的世代中是比 VS 要來的重要的,另外就算頂點增大吃的也是 GS 非 VS……
    至於他拿全部 Xenos 的 ALU 去跟 RSX 的 PS ALU 相比然後順便提一下在 VS 下他們不用靠 CPU 去看頂點跟面數…….? 是忽略了一邊有 VS ALU 而他們已經把所有的 ALU 都拿去跑 PS 了嗎?這點我比較難以理解的是拿 Xenos 全部的 ALU 去跟 RSX 的 PS ALU 或是 VS ALU 比說他們在兩方面都比較好,這邏輯有強,或許我該學起來。
    當然最厲害的是拿 Go G74 來推論 RSX 的性能,這點也是一定要學的。
    結論:嘴砲萬歲!

  4. 個人推這句
    –
    如果嫌這測試不夠真實, 之前B3D有跨平台開發者,把真正遊戲故意關掉LOD減面功能,
    未經最佳化測出來數據也高達300MTris/s.
    有這種效能難怪不需要像PS3開發者, 常要用SPE去預先處理頂點及砍面數.
    360的開發者卻只要把所有東西丟給Xenos就好了…….它有太足夠的頂點效能讓你浪費
    –
    我長期以來一直懷疑某些人完全不清楚其實 PS 在現在或是近未來的世代中是比 VS 要來的重要的,另外就算頂點增大吃的也是 GS 非 VS……
    至於他拿全部 Xenos 的 ALU 去跟 RSX 的 PS ALU 相比然後順便提一下在 VS 下他們不用靠 CPU 去看頂點跟面數…….? 是忽略了一邊有 VS ALU 而他們已經把所有的 ALU 都拿去跑 PS 了嗎?這點我比較難以理解的是拿 Xenos 全部的 ALU 去跟 RSX 的 PS ALU 或是 VS ALU 比說他們在兩方面都比較好,這邏輯有強,或許我該學起來。
    當然最厲害的是拿 Go G74 來推論 RSX 的性能,這點也是一定要學的。
    結論:嘴砲萬歲!

  5. 補充一點
    長期以來我都認為會用 SPE 去做 pre-vertex 處理的遊戲是非常少的,頂多只有 PSedge/Phyreengine 或是少數第一廠的遊戲有做,這樣說起來的話似乎是種常態?
    –
    我老實承認我喜歡說反話……

  6. 補充一點
    長期以來我都認為會用 SPE 去做 pre-vertex 處理的遊戲是非常少的,頂多只有 PSedge/Phyreengine 或是少數第一廠的遊戲有做,這樣說起來的話似乎是種常態?
    –
    我老實承認我喜歡說反話……

  7. 有沒有RSX Shader ALU資源經過實測的分析數據?希望不要只是由實測數據對比單元數量、頻率計算出來的成果喔。

  8. 話說shader unit 0的free fp16 normalize有何作用?
    難道這free fp16 normalize沒有幫RSX(G7x)的PS減少某些負擔嗎?
    話說RSX的shader unit 0要負擔Tex,但C1何嘗不是要US分扮VS和PS?

  9. 話說shader unit 0的free fp16 normalize有何作用?
    難道這free fp16 normalize沒有幫RSX(G7x)的PS減少某些負擔嗎?
    話說RSX的shader unit 0要負擔Tex,但C1何嘗不是要US分扮VS和PS?

  10. > RSX實測
    目前沒有XD
    拿G71和G70大概都和RSX有一點點差距,畢竟G71有稍微刪減一點點指令slot。
    > 話說shader unit 0的free fp16 normalize有何作用?
    > 難道這free fp16 normalize沒有幫RSX(G7x)的PS減少某些負擔嗎?
    fp16 nrm在FP16的normal mapping的時候取法向量的時候會用到,所以其實可以替補某些sh0的作用。
    這個測試並沒有提到這點的關係,所以的確是有點偏頗;當然G8x的時候就不再強調這些free指令了。
    > 話說RSX的shader unit 0要負擔Tex,但C1何嘗不是要US分扮VS和PS?
    所以某種意味上,US總和與人家PS相同,不就是代表VS真的是多出來的。XD

  11. > RSX實測
    目前沒有XD
    拿G71和G70大概都和RSX有一點點差距,畢竟G71有稍微刪減一點點指令slot。
    > 話說shader unit 0的free fp16 normalize有何作用?
    > 難道這free fp16 normalize沒有幫RSX(G7x)的PS減少某些負擔嗎?
    fp16 nrm在FP16的normal mapping的時候取法向量的時候會用到,所以其實可以替補某些sh0的作用。
    這個測試並沒有提到這點的關係,所以的確是有點偏頗;當然G8x的時候就不再強調這些free指令了。
    > 話說RSX的shader unit 0要負擔Tex,但C1何嘗不是要US分扮VS和PS?
    所以某種意味上,US總和與人家PS相同,不就是代表VS真的是多出來的。XD

  12. 沒有RSX 的實測也沒關係,建議Eji可以計算G72M的PS ALU理論性能,再與這份日本人作的測試成果作比較。

  13. 沒有RSX 的實測也沒關係,建議Eji可以計算G72M的PS ALU理論性能,再與這份日本人作的測試成果作比較。

  14. > 這麼說起來的話,
    > 只要遊戲中對normal mapping之類的應用較多的話,
    > RSX會較吃香囉?
    在材質之中normal mapping比例比較多的話可能會有利吧。
    不過一來fp16 tex才有用、二來材質太多的話texture讓sh0閒置的比例反而會更難忽視的關係,我是比較支持TMU和shader無依存性的(G80這樣)。
    mini-ALU的MADD….
    哪個ALU?sh1嗎?sh1的話是有MADD的啊。

  15. > 這麼說起來的話,
    > 只要遊戲中對normal mapping之類的應用較多的話,
    > RSX會較吃香囉?
    在材質之中normal mapping比例比較多的話可能會有利吧。
    不過一來fp16 tex才有用、二來材質太多的話texture讓sh0閒置的比例反而會更難忽視的關係,我是比較支持TMU和shader無依存性的(G80這樣)。
    mini-ALU的MADD….
    哪個ALU?sh1嗎?sh1的話是有MADD的啊。

  16. 原來是sh1的mini-ALU才有MADD指令,
    疑惑終於解開了XD
    話說sh1的mini-ALU才有MADD而sh0沒有,
    是因什麼原因造成sh0和sh1的設計不同?
    難道是和Tex有關?

  17. 原來是sh1的mini-ALU才有MADD指令,
    疑惑終於解開了XD
    話說sh1的mini-ALU才有MADD而sh0沒有,
    是因什麼原因造成sh0和sh1的設計不同?
    難道是和Tex有關?

  18. to shady:
    > 原來是sh1的mini-ALU才有MADD指令,
    > 疑惑終於解開了XD
    我沒這樣說XD 我只是想問你講的mini-ALU是哪個XD
    對NV4x/G7x來說,mini-ALU指的是成組的”另外一半邊”,比方說我們都知道NV4x/G7x都是3+1D(sh0)和2+2D(sh1),這時候sh0的3D和sh1的其中一個2D是主ALU、然後sh0的1D和sh1的另外一個2D是mini-ALU。
    > 話說sh1的mini-ALU才有MADD而sh0沒有,
    > 是因什麼原因造成sh0和sh1的設計不同?
    > 難道是和Tex有關?
    呃,你忘記了:sh0沒有MADD是NV4x,G7x最大的改善就是sh0補上MADD;NV4x的sh1本來就有MADD了。
    http://techreport.com/articles.x/8466/1

  19. to shady:
    > 原來是sh1的mini-ALU才有MADD指令,
    > 疑惑終於解開了XD
    我沒這樣說XD 我只是想問你講的mini-ALU是哪個XD
    對NV4x/G7x來說,mini-ALU指的是成組的”另外一半邊”,比方說我們都知道NV4x/G7x都是3+1D(sh0)和2+2D(sh1),這時候sh0的3D和sh1的其中一個2D是主ALU、然後sh0的1D和sh1的另外一個2D是mini-ALU。
    > 話說sh1的mini-ALU才有MADD而sh0沒有,
    > 是因什麼原因造成sh0和sh1的設計不同?
    > 難道是和Tex有關?
    呃,你忘記了:sh0沒有MADD是NV4x,G7x最大的改善就是sh0補上MADD;NV4x的sh1本來就有MADD了。
    http://techreport.com/articles.x/8466/1

  20. >對NV4x/G7x來說,mini-ALU指的是成組的”另外一半邊”,
    >比方說我們都知道NV4x/G7x都是3+1D(sh0)和2+2D(sh1),
    >這時候sh0的3D和sh1的其中一個2D是主ALU、
    >然後sh0的1D和sh1的另外一個2D是mini-ALU。
    小弟一直以為sh0和sh1的mini-ALU只是個Scalar Unit…_A_
    >呃,你忘記了:sh0沒有MADD是NV4x,
    >G7x最大的改善就是sh0補上MADD;
    >NV4x的sh1本來就有MADD了。
    不,小弟沒忘記這一點,而以下這句:
    >>是因什麼原因造成sh0和sh1的設計不同?
    本來是要打成:
    >>是因什麼原因造成sh0和sh1的mini-ALU設計不同?
    所以小弟本意是要問sh0和sh1兩者的mini-ALU,
    而有此疑問是因為小弟誤會只有sh1的mini-ALU才有MADD指令XD

  21. >對NV4x/G7x來說,mini-ALU指的是成組的”另外一半邊”,
    >比方說我們都知道NV4x/G7x都是3+1D(sh0)和2+2D(sh1),
    >這時候sh0的3D和sh1的其中一個2D是主ALU、
    >然後sh0的1D和sh1的另外一個2D是mini-ALU。
    小弟一直以為sh0和sh1的mini-ALU只是個Scalar Unit…_A_
    >呃,你忘記了:sh0沒有MADD是NV4x,
    >G7x最大的改善就是sh0補上MADD;
    >NV4x的sh1本來就有MADD了。
    不,小弟沒忘記這一點,而以下這句:
    >>是因什麼原因造成sh0和sh1的設計不同?
    本來是要打成:
    >>是因什麼原因造成sh0和sh1的mini-ALU設計不同?
    所以小弟本意是要問sh0和sh1兩者的mini-ALU,
    而有此疑問是因為小弟誤會只有sh1的mini-ALU才有MADD指令XD

  22. > 小弟一直以為sh0和sh1的mini-ALU只是個Scalar Unit…_A_
    你說的是這張圖吧:
    http://pc.watch.impress.co.jp/…701/kaigai_5a.gif
    來源是這篇:
    http://pc.watch.impress.co.jp/…701/kaigai195.htm
    老實說,除了後藤老爹的專欄之外,似乎沒有其他地方在討論NV4x/G7x的時候把mini-ALU當成和main-ALU獨立的1D ALU….
    也就是「只有後藤老爹這篇把VS和PS都算成總計5D的unit」, 所以我覺得這篇本身有問題的機會比較大。
    此外,在RSX的發表會上,把mini-ALU寫成”SFU(Special function unit)”。
    http://pc.watch.impress.co.jp/…701/kaigai_3a.gif
    現在回想起來,在G8x時代,SFU指的是sin/cos等複雜的multi-cycle指令,由4D共用的一個mini-ALU;等到CUDA的規格公開之後,我們開始發現G8x並不是一堆1D ALU構成,而是每兩個支援scatter(移位)的4D unit構成一組8D,所以本來以為是4個1D共用的一個mini-ALU,實際上就是每個4D提供的SFU;而先前G8x宣稱的MAD+MUL,實際上應該就是只有MAD而已。
    經歷了G8x的SFU疑慮,再回頭看RSX的SFU/mini-ALU,我想應該可以很清楚地說,那個指的不是獨立的1D scalar;當然這樣說的話,講3D+1D/2D+2D的半邊unit也有問題就是了,SFU是有特定定義的部分….不好意思又誤導了。
    —-
    其實WaffenSS那篇後面也有討論別的東西:
    http://forum.gamer.com.tw/C.php?bsn=60001&snA=9541
    FP16 nrm_pp以他的說法比較合理,不過他的說法順便也cover到shader結構。
    在這裡面提到,NV4x有issue最大7個指令的能力,ALU0+ALU1+NRM,兩個ALU各自有1個vector和1個scalar,NRM則拆成dp3+mul+rsq三個指令。
    http://techreport.com/articles.x/6627/4
    這篇NV40的訪談也是把mini-ALU描述成和4D ALU獨立,不過沒有指出是scalar,指的是SFU的機會比較大。

  23. > 小弟一直以為sh0和sh1的mini-ALU只是個Scalar Unit…_A_
    你說的是這張圖吧:
    http://pc.watch.impress.co.jp/…701/kaigai_5a.gif
    來源是這篇:
    http://pc.watch.impress.co.jp/…701/kaigai195.htm
    老實說,除了後藤老爹的專欄之外,似乎沒有其他地方在討論NV4x/G7x的時候把mini-ALU當成和main-ALU獨立的1D ALU….
    也就是「只有後藤老爹這篇把VS和PS都算成總計5D的unit」, 所以我覺得這篇本身有問題的機會比較大。
    此外,在RSX的發表會上,把mini-ALU寫成”SFU(Special function unit)”。
    http://pc.watch.impress.co.jp/…701/kaigai_3a.gif
    現在回想起來,在G8x時代,SFU指的是sin/cos等複雜的multi-cycle指令,由4D共用的一個mini-ALU;等到CUDA的規格公開之後,我們開始發現G8x並不是一堆1D ALU構成,而是每兩個支援scatter(移位)的4D unit構成一組8D,所以本來以為是4個1D共用的一個mini-ALU,實際上就是每個4D提供的SFU;而先前G8x宣稱的MAD+MUL,實際上應該就是只有MAD而已。
    經歷了G8x的SFU疑慮,再回頭看RSX的SFU/mini-ALU,我想應該可以很清楚地說,那個指的不是獨立的1D scalar;當然這樣說的話,講3D+1D/2D+2D的半邊unit也有問題就是了,SFU是有特定定義的部分….不好意思又誤導了。
    —-
    其實WaffenSS那篇後面也有討論別的東西:
    http://forum.gamer.com.tw/C.php?bsn=60001&snA=9541
    FP16 nrm_pp以他的說法比較合理,不過他的說法順便也cover到shader結構。
    在這裡面提到,NV4x有issue最大7個指令的能力,ALU0+ALU1+NRM,兩個ALU各自有1個vector和1個scalar,NRM則拆成dp3+mul+rsq三個指令。
    http://techreport.com/articles.x/6627/4
    這篇NV40的訪談也是把mini-ALU描述成和4D ALU獨立,不過沒有指出是scalar,指的是SFU的機會比較大。

  24. > 小弟已經被搞混了…到底SFU和mini-ALU是否為同一個Unit_A_
    我也搞混啦XD
    這篇的SFU是”Main-ALU的部分指令由SFU”提供的style。
    > http://www.pcperspective.com/…150/g70summary.jpg
    > 小弟真正的疑問是,
    > 這官方資料的理論值是用後藤老爹的方式計算的嗎?
    如果這張圖確定是來自官方的話,那就是和後藤老爹一模一樣的算法了。

  25. > 小弟已經被搞混了…到底SFU和mini-ALU是否為同一個Unit_A_
    我也搞混啦XD
    這篇的SFU是”Main-ALU的部分指令由SFU”提供的style。
    > http://www.pcperspective.com/…150/g70summary.jpg
    > 小弟真正的疑問是,
    > 這官方資料的理論值是用後藤老爹的方式計算的嗎?
    如果這張圖確定是來自官方的話,那就是和後藤老爹一模一樣的算法了。

  26. >這篇的SFU是”Main-ALU的部分指令由SFU”提供的style。
    不太了解這句話的意思_A_
    >如果這張圖確定是來自官方的話,那就是和後藤老爹一模一樣的算法了。
    那這麼說起來官方也是將mni-ALU(還是SFU XD)當作1D囉?
    總覺得愈討論愈混亂_A_

  27. >這篇的SFU是”Main-ALU的部分指令由SFU”提供的style。
    不太了解這句話的意思_A_
    >如果這張圖確定是來自官方的話,那就是和後藤老爹一模一樣的算法了。
    那這麼說起來官方也是將mni-ALU(還是SFU XD)當作1D囉?
    總覺得愈討論愈混亂_A_

  28. 小弟用google找了些資料,
    由於太多且雜亂,
    所以沒有連結,
    而官方理論值小弟確定是與後藤老爹的計算結果一樣,
    但算法就可能有所不同了,
    因為小弟找到的資料有人將mini-ALU和SFU當作同一Unit,
    然而有些人則將兩者分開…
    所以實際算法到底是如何,
    只有nVidia才知道了…XD

  29. 小弟用google找了些資料,
    由於太多且雜亂,
    所以沒有連結,
    而官方理論值小弟確定是與後藤老爹的計算結果一樣,
    但算法就可能有所不同了,
    因為小弟找到的資料有人將mini-ALU和SFU當作同一Unit,
    然而有些人則將兩者分開…
    所以實際算法到底是如何,
    只有nVidia才知道了…XD

  30. 我是那篇的分析文作者,亂逛不小心就來了.
    本身有在寫遊戲的shader. 也是遊戲開發者.
    其實normalize指令跟normal map的貼圖存取沒有關係.
    FP16的限制是精度差異,跟貼圖無關.
    normalize指令是用來把長度跑掉的法向量正規化.
    那只是normal mapping所需的一部份計算.
    其他大部分的計算都不需要normalize指令.
    只是一般人看到”normalize”以為這就是專做normal mapping計算……字面上很像,其實是不一樣的.
    所以其實專用的nrm_pp即使在做normal mapping
    也不會一直使用到.因為它只能做向量正規化.
    以整個shader程式碼來看,實質上使用量是蠻低的.
    目前我還沒有看過”normalize”比例上超過1/4的shader
    程式碼, 所以不要高估其重要性.
    它是有加分的效果,但是沒有到有大幅影響效能的程度.
    所以後來的GPU架構已經不再實做NRM unit.
    不過FP16的限制有點惱人~
    我自己從來沒用過FP16做normalize……
    我問過的shader coder也沒人在用.
    由於那nrm_pp在gpu硬體發展上,只是曇花一現,
    很快消失了,基本上也沒有充分的文件告訴你,
    什麼情形下適合FP16,怎樣在FP32的運算中加入FP16?
    要運用它需要花時間去研究,但是恐怕很少人會去摸
    這種已經要消失的東西.

  31. 我是那篇的分析文作者,亂逛不小心就來了.
    本身有在寫遊戲的shader. 也是遊戲開發者.
    其實normalize指令跟normal map的貼圖存取沒有關係.
    FP16的限制是精度差異,跟貼圖無關.
    normalize指令是用來把長度跑掉的法向量正規化.
    那只是normal mapping所需的一部份計算.
    其他大部分的計算都不需要normalize指令.
    只是一般人看到”normalize”以為這就是專做normal mapping計算……字面上很像,其實是不一樣的.
    所以其實專用的nrm_pp即使在做normal mapping
    也不會一直使用到.因為它只能做向量正規化.
    以整個shader程式碼來看,實質上使用量是蠻低的.
    目前我還沒有看過”normalize”比例上超過1/4的shader
    程式碼, 所以不要高估其重要性.
    它是有加分的效果,但是沒有到有大幅影響效能的程度.
    所以後來的GPU架構已經不再實做NRM unit.
    不過FP16的限制有點惱人~
    我自己從來沒用過FP16做normalize……
    我問過的shader coder也沒人在用.
    由於那nrm_pp在gpu硬體發展上,只是曇花一現,
    很快消失了,基本上也沒有充分的文件告訴你,
    什麼情形下適合FP16,怎樣在FP32的運算中加入FP16?
    要運用它需要花時間去研究,但是恐怕很少人會去摸
    這種已經要消失的東西.

  32. 之前看過nvidia NV40文件裡的參考shader code.
    它是用組語的方式呈現,
    每一cycle都照硬體規格限制呈現.
    NV40架構每cycle發放3~7個指令(包含Tex).
    不過有NRM_pp時同時指令數是比較少的.
    (也就是說Nrm_pp一個指令應該當作3個指令來看)
    沒辦法6個指令+1個nrm_pp那樣.
    可以確定Nrm_pp是可以和Tex指令在同一cycle.
    所以Tex unit佔用的不是Nrm_pp的硬體.
    至於ALU0就比較複雜,Tex指令時ALU0還是能有計算指令.
    不過都是一些rcp之類的特別指令或是1D的指令
    大概可以判定Tex指令佔用了大部分ALU0的硬體.
    此時只能再處理1D或SFU的指令.

  33. 之前看過nvidia NV40文件裡的參考shader code.
    它是用組語的方式呈現,
    每一cycle都照硬體規格限制呈現.
    NV40架構每cycle發放3~7個指令(包含Tex).
    不過有NRM_pp時同時指令數是比較少的.
    (也就是說Nrm_pp一個指令應該當作3個指令來看)
    沒辦法6個指令+1個nrm_pp那樣.
    可以確定Nrm_pp是可以和Tex指令在同一cycle.
    所以Tex unit佔用的不是Nrm_pp的硬體.
    至於ALU0就比較複雜,Tex指令時ALU0還是能有計算指令.
    不過都是一些rcp之類的特別指令或是1D的指令
    大概可以判定Tex指令佔用了大部分ALU0的硬體.
    此時只能再處理1D或SFU的指令.

  34. >我是那篇的分析文作者,亂逛不小心就來了.
    >本身有在寫遊戲的shader. 也是遊戲開發者.
    我想有不少人知道吧…_A_?
    >其他的恕刪XD
    如果照閣下所說,”normalize”佔shader code只有1/4以下,
    但如果不用的話,當需要normalize時,會比NRM Unit來得慢,
    而這只佔shader code 1/4以下的code也會變大.
    所以話說回來NRM Unit應用的問題,
    對小弟來說是不知道它還有何用處,
    但既然它已經是封閉系統之一部份,
    只要它還有用且環境允許去開發或研究,
    它還是有些許的幫助,至少對G7x核心而言.
    >至於ALU0就比較複雜,Tex指令時ALU0還是能有計算指令.
    >不過都是一些rcp之類的特別指令或是1D的指令
    >大概可以判定Tex指令佔用了大部分ALU0的硬體.
    >此時只能再處理1D或SFU的指令.
    那個1D是mini-ALU嗎?

  35. >我是那篇的分析文作者,亂逛不小心就來了.
    >本身有在寫遊戲的shader. 也是遊戲開發者.
    我想有不少人知道吧…_A_?
    >其他的恕刪XD
    如果照閣下所說,”normalize”佔shader code只有1/4以下,
    但如果不用的話,當需要normalize時,會比NRM Unit來得慢,
    而這只佔shader code 1/4以下的code也會變大.
    所以話說回來NRM Unit應用的問題,
    對小弟來說是不知道它還有何用處,
    但既然它已經是封閉系統之一部份,
    只要它還有用且環境允許去開發或研究,
    它還是有些許的幫助,至少對G7x核心而言.
    >至於ALU0就比較複雜,Tex指令時ALU0還是能有計算指令.
    >不過都是一些rcp之類的特別指令或是1D的指令
    >大概可以判定Tex指令佔用了大部分ALU0的硬體.
    >此時只能再處理1D或SFU的指令.
    那個1D是mini-ALU嗎?

  36. >如果照閣下所說,”normalize”
    >佔shader code只有1/4以下,
    >但如果不用的話,當需要normalize時,會比NRM Unit
    >來得慢,而這只佔shader code 1/4以下的code
    >也會變大.
    1/4? 印象中是更低….有些shader code甚至不做nrm.
    如果面數高,頂點密集,PS甚至可以不做nrm.
    因為nrm是處理從VS到PS時,因為向量被插補造成的
    向量長度改變.
    面數很密時,插補造成的長度改變量太小了,可以不管它.
    我是常找一些機會省掉PS的normalize.
    反正VS一定會做normalize.
    只要你確定向量傳到PS時不會有明顯改變,
    就不一定要再做一次.
    例如地板是平的,它的所有法向量都會是平行的,長度相同.
    向量插補後長度不會變….那就不必去normalize.
    不過這算是針對特定物件做效能最佳化的範圍了.
    標準的程式碼是一定會做nrm.
    當然有專屬NRM Unit一定會快一點.
    不用nrm_pp,shader code不會變大.
    因為不管有沒有用專屬nrm unit.
    HLSL指令都是一個normalize();
    到GPU也都是分解成dp3+rsq+mul.
    只是nv40~G70會把這組fp16指令丟到專屬的nrm_pp
    單位. 其他GPU丟到一般泛用shader單位執行.
    雖然理論上nrm_pp是免費的,
    但是多做這些計算會用到較多的register.
    影響到thread的效能.
    nv40的register不太夠,G70稍微改善一點.
    實際上nrm_pp可能也不完全是免費.
    >>大概可以判定Tex指令佔用了大部分ALU0的硬體.
    >>此時只能再處理1D或SFU的指令.
    >那個1D是mini-ALU嗎?
    G70的shader core是4D+1D.
    1D就是之前一代架構的Mini-Alu
    以前叫”mini alu”是因為功能有限,只能處理少數指令.
    不算完整的1D
    現在功能完整化,所以很少文件再叫它Mini-Alu了.

  37. >如果照閣下所說,”normalize”
    >佔shader code只有1/4以下,
    >但如果不用的話,當需要normalize時,會比NRM Unit
    >來得慢,而這只佔shader code 1/4以下的code
    >也會變大.
    1/4? 印象中是更低….有些shader code甚至不做nrm.
    如果面數高,頂點密集,PS甚至可以不做nrm.
    因為nrm是處理從VS到PS時,因為向量被插補造成的
    向量長度改變.
    面數很密時,插補造成的長度改變量太小了,可以不管它.
    我是常找一些機會省掉PS的normalize.
    反正VS一定會做normalize.
    只要你確定向量傳到PS時不會有明顯改變,
    就不一定要再做一次.
    例如地板是平的,它的所有法向量都會是平行的,長度相同.
    向量插補後長度不會變….那就不必去normalize.
    不過這算是針對特定物件做效能最佳化的範圍了.
    標準的程式碼是一定會做nrm.
    當然有專屬NRM Unit一定會快一點.
    不用nrm_pp,shader code不會變大.
    因為不管有沒有用專屬nrm unit.
    HLSL指令都是一個normalize();
    到GPU也都是分解成dp3+rsq+mul.
    只是nv40~G70會把這組fp16指令丟到專屬的nrm_pp
    單位. 其他GPU丟到一般泛用shader單位執行.
    雖然理論上nrm_pp是免費的,
    但是多做這些計算會用到較多的register.
    影響到thread的效能.
    nv40的register不太夠,G70稍微改善一點.
    實際上nrm_pp可能也不完全是免費.
    >>大概可以判定Tex指令佔用了大部分ALU0的硬體.
    >>此時只能再處理1D或SFU的指令.
    >那個1D是mini-ALU嗎?
    G70的shader core是4D+1D.
    1D就是之前一代架構的Mini-Alu
    以前叫”mini alu”是因為功能有限,只能處理少數指令.
    不算完整的1D
    現在功能完整化,所以很少文件再叫它Mini-Alu了.

  38. > 這麼說起來的話,
    > 只要遊戲中對normal mapping之類的應用較多的話,
    > RSX會較吃香囉?
    nrm_pp是用來對把被插補的向量長度回歸到一單位.
    normal map裡的法向量原本就是存成單位1的向量.
    不需要插補,自然也不必做normalize
    所以有了normal map,反而更少用到normalize指令.
    normal mapping時你只需要對光的向量和cam的向量
    做nrm,就可以算光照了.
    對法向量的nrm可以省掉.

  39. > 這麼說起來的話,
    > 只要遊戲中對normal mapping之類的應用較多的話,
    > RSX會較吃香囉?
    nrm_pp是用來對把被插補的向量長度回歸到一單位.
    normal map裡的法向量原本就是存成單位1的向量.
    不需要插補,自然也不必做normalize
    所以有了normal map,反而更少用到normalize指令.
    normal mapping時你只需要對光的向量和cam的向量
    做nrm,就可以算光照了.
    對法向量的nrm可以省掉.

  40. 我是覺得別把360的eDRAM拿去跟PS2的比…
    一來年代差太遠,二來效率和功能也不太相同…
    PS2當年會被批容量太小,不是沒有原因的….

  41. 我是覺得別把360的eDRAM拿去跟PS2的比…
    一來年代差太遠,二來效率和功能也不太相同…
    PS2當年會被批容量太小,不是沒有原因的….

發佈留言

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

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