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 如何處理網站訪客的留言資料