http://www.develop-conference.com/developconference/schedule_at_a_glance.shtml?view=day&daycode=8
Deferred Rendering in Killzone 2
Next generation gaming brought high resolutions, very complex environments and large textures to our living rooms. With virtually every asset being inflated, it’s hard to use traditional forward rendering and hope for rich, dynamic environments with extensive dynamic lighting. Deferred rendering, on the other hand, has been traditionally described as a nice technique for rendering of scenes with many dynamic lights, that unfortunately suffers from fill-rate problems and lack of anti-aliasing and very few games that use it were published.
In this talk, we will discuss our approach to face this challenge and how we designed a deferred rendering engine that uses multi-sampled anti-aliasing (MSAA). We will give in-depth description of each individual stage of our real-time rendering pipeline and the main ingredients of our lighting, post-processing and data management. We’ll show how we utilize PS3’s SPUs for fast rendering of a large set of primitives, parallel processing of geometry and computation of indirect lighting. We will also describe our optimizations of the lighting and our parallel split (cascaded) shadow map algorithm for faster and stable MSAA output.
其實說起來Deferred Rendering已經不是什麼了不起的東西。
KZ2用Deferred Rendering的時候最大的問題看起來像是G-buffer並不便宜,有36MB….
而且KZ2的SPE雖然有用到四個,但是和繪圖相關的主要都是在display list產生上,還有一些Image-Based Lighting的資料產生。
SPU Usage
> We use SPU a lot during rendering
> Display list generation
>> Main display list
>> Lights and Shadow Maps
>> Forward rendering
> Scene graph traversal / visibility culling
> Skinning
> Triangle trimming
> IBL generation
> Particles
所以從這篇來看,KZ2實在是非常善用美術可做的事情來彌補RSX的不足….
不過他們正在檢討Ambient Occlusion和Dynamic Radiosity,也許有計畫利用Enlighten那一類的技術?
—-
每次遇到這種題目,我就會想,如果頻寬/容量條件完全相同的狀況下,改用G8x到底能表現比G7x好多少?
除了晶片本身之外,其他部份的成本不能大幅度改變之故,考慮的記憶體頻寬主要是靠原來的128bit GDDR3和FlexIO,總共25.6GB/s + 5GB/s雙向 + 15GB/s 下行 + 10GB/s上行,容量也限制在256MB + 256MB。
如果有G8x的TCP結構,可能KZ2不需要用到Deferred Rendering…. 因為console不能換硬體,這點特別的痛。
但是如果要維持peak performance的話,可能要作到3 ~ 4TCP的規模,電晶體數量可能會衝到500M….這樣真的值得嗎?
G8x的3 ~ 4TCP有達到500M個電晶體這麼多嗎^^?
雖然這個概算問題很大,不過有個數字可以參考:G86的電晶體數量是210M、G84的電晶體數量是289M,這兩者只差一個TCP。由於TCP內含TMU/cache等等所有的必須元件之故,應該只剩下互連需要的bus fabric。
所以….210 + 240 = 350M。_A_
當然這個算法很怪啦…. 畢竟G80有8個TCP都沒達到這個算法的規模….(210 + 560 > 681M),實際上應該沒差這麼多。
順便補充一個數字:
http://vga.zol.com.cn/61/617946.html
G84的32SP和RV630的120sp相比是這樣的話,那我不知道要是有這麼個64sp,和C1的240sp(?)比下去會變成怎樣的結果了。
如果是G8 64sp 和 C1 的 240sp 相比你或許會看到電經體數量差半個世代的東西在相互競爭效能,當然耗電量也是,另外一點 C1 的 SP 性能並無法等同於 R6x0 所用的直接類比也沒有什麼意義,US 架構下的性能並不只取決於 SP 的數量跟內部的運算單元這點我想也是很明顯的。
至於 PS3 實做 G8x 這點我想還是一件很有趣的事,同等級電晶體下的 G8x 在遊戲表現上有超越過 G7x 嗎? 如果說要維持到跟 G7x 一樣的性能 G8x 該擴充到怎麼樣的一個地步,如果說放棄 G7x 較高的電晶體/效能比去換取 G8x 的 TCP 在此情況下實際運算起來是否能滿足基本遊戲運算要求? 不可否認的 G8x 的確能實作許多的東西但換個方面想想光是 G80 就要吃掉近700M 的電晶體,就算只配上一個 Northwood 所要的電晶體比起 Cell 配合 RSX 的系統要多上 200M, 但是運算起來的效能有比較好嗎? G80 能在表現出跟 RSX 一樣的效果之下另外做出跟 SPE 一樣的幾何運算處理? 我想 G80 應該還沒有那麼神奇才是……
中央處理器以及繪圖卡的技術發展趨勢
http://tech.digitimes.com.tw/…09I6MOM2UREF1S0F14
~裡面部份文章指出~
ATI的R600繪圖晶片雖說是符合DX10規範的次世代產品,但是其設計思維仍然維持過去的方式,以提升每時脈週期可執行指令數(Instruction per cycle,IPC)為設計目標,因此以VLIW的方式來求取單一週期最大的處理效能表現,但是,在處理單元方面則是以64個單一週期多重指令集向量處理單元(SIMD vector ALU),每個單元在1個週期內可以執行5個打包好的指令,不過其遊戲適用性方面,卻未能如ATI預期般出色,在偏重Vertex處理的DX9遊戲方面可能稍佔優勢,但是在動用到GS處理單元的DX10遊戲上,就明顯比對手弱上許多。
G80內建了128個超純量處理單元,效率提升的目標從指令(Instruction)細分到執行緒(Thread),雖然每個處理單元在單一週期內僅能處理1道指令,單純從數字上比較,每週期128個指令似乎比對手的64*5=320要來得少,但是配合GigaThread對執行緒的有效控管,執行單元幾乎不存在閒置的問題,而在執行指令的並行性方面,也要比基於VLIW架構的R600出色,,R600雖然理論上每週期可以執行320道指令,但這些指令必須5個5個綁1堆,如果遊戲丟出的指令封包長度不一,或編譯器最佳化的程度不夠,就有可能造成處理單元的延遲、閒置與浪費。因此即便在記憶體寬度與每週期執行指令數量等規格數字偏弱勢的情況之下,目前G80依然穩坐效能王者。
===================
感覺G80多指令執行緒很神奇…
===================
另外一篇
多重執行緒技術創造高效率視訊轉換器SoC架構
http://tech.digitimes.com.tw/…3451CV12KQXC5J94PZ
看完這篇想到
想到PS3將發行的遊戲
http://gnn.gamer.com.tw/2/27642.html
影像辨識卡片對戰遊戲《審判魔眼》
不知是否有運用到這功能??
拿2篇科技新聞看完感想感覺PS3很變態..
不過這網站有一篇論文惡搞
http://tech.digitimes.com.tw/…3V7L5CY1ZW4U8WUJ2Z
想像一下「Sony PlayStation 2.5」吧!
曾幾何時 Multi thread 變成了拯救世界的英雄……該文對於 G80 跟 R600 的比較太著重在現在的遊戲表現上面了,R600 效率的損失應該是會比 G80 要大上許多,但如果遊戲本身在這方面的分配或是 driver 在這上面進行的判斷夠好,性能要表現的好也非不可能,光是用 thread 多寡來說明只是無限的把問題簡化而已,ATi 跟 nVidia 兩邊賭的東西不一樣,只不過這一次 nVidia 剛好賭對了而已,但要說 ATi 的作法就是錯的?那我們可能要看下一次 nVidia 會不會把單元作大了,另外 G80 以顯卡來說是以超高頻在運作的……
只不過我想這些跟 PS3 似乎沒太大關係,至於卡片遊戲的判斷其實方式很簡單,他們只是判斷卡片上下的黑邊形狀而已,畢竟這當初是要做在 PS2 上的東西不會太複雜,相較之下他們前幾個月公開的景深特效實作方式跟三維動態判定要來的高明許多,前者可能跟這次 KZ2 所用的技術有關,至於後者目前沒產品有做能有什麼效果目前還不清楚。
這邊要提出ㄧ些質疑。
1. 其實除了4D單元一次處理變成1D單元循序處理4個cycle之外,G80的單一SP和過去的4D shader似乎沒有太大的差異,所以G80其實只是單位指令長度不論是1D~4D都不會浪費效能而已,論shader是不是都有使用到的話那就比較尷尬,而不論是G8x和R6x0都算是高度依存Multi-thread的設計。
2. 處理單元的時脈也應該考慮進去,128 x2 vs 64×5是理論上的性能,G8x因為是倍頻的關係不會有什麼變化,而R6x0變化就很大:在運作效率上很依賴compiler的關係,64會乘上幾完全就看這點,比方說x5看起來就很困難。 以我的想法,G8x的作用是一個把軟體複雜度轉換到硬體上的設計。
—-
to jyuriko兄(應該是吧):
如果要維持能用的電晶體數量的話,CELL和RSX兩者合起來頂多600M左右,照現在G8x所需的電晶體來看,其實在CELL不改變(1PPE + 8SPEs)的前提下,基本上PS3能用的就是G84這個size(接近300M)了。那到底G84和G71同等的RSX相比,能夠帶來什麼優勢呢?
當然看現在的PC graphic的話是還蠻尷尬的,還包含一些3rd party oc版的G84,ASIC部分維持500MHz前後,但是SP已經衝到快1.5GHz….
然後DX9後期G84開始有優勢存在。http://www.pcinlife.com/…/1176863400d349_47.html
幾乎都和動態分支有關,類似R580相對於G71的優勢;只是這畢竟是PC game的範疇,而console不是這樣寫遊戲的….
這樣說好了,如果真的C1的48組DX9+,4+1D shader幹不贏G84的32組1D shader的話,那應該真的會讓很多人瘋狂吧。XD
今天是星期6
CELL+RSX 是不到 600 M 的,不過這前提是 RSX 真的只有他們所說的 300M 或是真的像是外傳的是採用 FlexIO 的 G71,雖說這可能性並不大,除非 FlexIO 的布線複雜度遠高於 GDDR3 IO,anyway 其實際電晶體量我猜想應該是在 500M~550M 左右。
7900GS 450/1320MHz、20ps/7vs/16ROPs 嚴格來說拿這東西來跟 RSX 做直接類比是有問題的,這東西唯一勝過 RSX 的是在 ROP 方面,anyway 我知道很多人喜歡拿 7900GS 跟來對 RSX 直接做類比,甚至有人會說 RSX 的 ROPs 只有8個所以只有 7600 等級,但問題從沒這麼簡單過 sigh~
另外如果以 Cell + G84 是否會超過 Cell + RSX 我想會是一個更有趣的問題,不過目前我能想到唯一的好處是 native HDR fp16+AA,除此之外 G84 能帶來什麼東西? 現在喊的很大的 DX10 效果應該不會有太多人期待他能做到才是,light tracing? Displacement mapping? Enlighten? 以上任何一項進行全景運算我想 G84 應該都沒能力負擔。
至於 G84 是否能勝過 C1 這點我想很難說,我是這樣認為的 G8x 性能其實並不強,但是他用超高的 thread 跟較小的 sp 來避免運算上的空轉跟性能的損失,這點使得他在 PC 上面將會發揮遠大於其他產品的優勢,由 G8x 跟 R600 或是 G7x 來相比,無疑的我們會看出其實 R600 跟 G7x 這方面存在著很大的問題,這也使得其表現受到遊戲本身跟 driver 的影響比 G8x 要來的高很多,如果說今天這是一款 PC base 的遊戲而且不對硬體做太多的調整我想 G8x 應該是目前最好的平台,但如果在針對硬體本身來做設計的情況下 C1 的表現並不一定會輸給 G84,光是比較 4D+1 或是 1D 在現在來說根本沒有意義,雖說還是有很多人認為 C1 的 SP 效能可以直接類比於 R600 的 SP,運算的效能自這一世代後對 SP 的依存性早已大不如前,如果光算 SP 運算量就能評估效能 ATi 這一次就不會輸的這麼慘了。
> 雖說這可能性並不大,除非 FlexIO 的布線複雜度遠高於 GDDR3 IO,anyway 其實際電晶體量我猜想應該是在 500M~550M 左右
說真的,在看到PS3的PCB之前我也覺得應該是這樣….但是RSX的die size真的大得超乎尋常。Orz
照理來說RSX的8vs/24ps/8ROP裡面ROP是比較小的單元,而且從系統方塊圖上看RSX應該是FlexIO和128bit GDDR3兩個介面,但是看過先前06 DEVSTATION那張圖都會發現,RSX似乎還是受到當時G7x的一些限制,比方說command processor造成最大input 4GB/s,或者是照理說砍掉的128bit interface其實還在、只是接到FlexIO上面來存取XDR之類。
http://www.aiplus.idv.tw/…rticleId=1394&blogId=2
先前扔過這張圖。
也就是說RSX目前看來相對於G70/G71最大的強化其實應該是double過的Texture Cache,因為ROP減少能帶來的縮小並不大;但是就我先前的經驗,其實PCIe x8的controller差不多就256KB SRAM的空間,扣掉PCIe x16換成FlexIO,ROP減半但是換成可以存取FlexIO的專用controller之類,弄一弄就算沒把PureVideo Vp拿掉,也不該是反而die size變大的程度….
>7900GS 450/1320MHz、20ps/7vs/16ROPs 嚴格來說拿這東西來跟 RSX 做直接類比是有問題的,這東西唯一勝過 RSX 的是在 ROP 方面,anyway 我知道很多人喜歡拿 7900GS 跟來對 RSX 直接做類比,甚至有人會說 RSX 的 ROPs 只有8個所以只有 7600 等級
我自己也很反對這個說法…. ROP減半的部份的確直接碰到的話會慢,不過這也是frame buffer access才會有影響的部份,texturing的話頻寬差距並不大,主要是分兩塊造成的操作細節問題。
不過這部份其實我當初引用的目的並不是要拿來直接把7900GS類比RSX,不過數據上也沒有人提供G84和7900更高階的產品直接比較的關係,只好大家用比例自己推了。
> 不過目前我能想到唯一的好處是 native HDR fp16+AA,除此之外 G84 能帶來什麼東西?
個人覺得,其實G8x的ROP提供的功能是真的強大不少。FP16之外比較重要的是R11G11B10的支援,作用類似C1的eDRAM專用format FP10….畢竟C1的alpha blending能快四倍,一半是因為eDRAM,另一半就是格式差異。
至於raw performance的問題…. 只能說要看狀況。當初第一次看到G8x spec的時候也覺得Raw performance表面上很糟,實際跑出來只能說強到爆,而且幾乎是不論新舊軟體。不過我想別的先不說,PS3系統要定案的時候不見得G8x有辦法用。
>至於 G84 是否能勝過 C1 這點我想很難說,我是這樣認為的 G8x 性能其實並不強,但是他用超高的 thread 跟較小的 sp 來避免運算上的空轉跟性能的損失,這點使得他在 PC 上面將會發揮遠大於其他產品的優勢。
其實這部份已經開始有討論:因為scalar指令的比例增加,和過去相比純4D相較起來損失比較大,而幾乎只與指令發射/同時運作threading有關。就像上面提到的,thread數量避免stall的損失,寧可用1D跑4個cycle來避免4D留空的損失之類。ATI在R600的時候以VLIW結構透過compiler來輔助4+1D的結構,其實這在NV3x已經做過了,效果並不明顯(雖說NV3x是register資源過少影響較大),畢竟這等於要求developer來配合自己的產品,但是市場角度來看這越來越困難。
如果真的只與指令發射數有關的話,那其實就足以解釋G84 > RV630的現況。
如果從 die size 反推的話應該也是在 330M 上下兩者相加應該還是不會到 600M,至於 IO 的話則是我寫錯了,應該是從 PCI-E 轉成 FlexIO 而不是取代 GDDR3,至於 RSX 保留多少 PCI-E 的東西則就不清楚了,RSX 一直是謎樣產物包括了他們的研發時間很長,相較於 G7x 變大的 die size 或是為什麼要把 ROP 這種差異不大的東西砍除等等,不過沒人說過他究竟是什麼東西,而且 SCEI 本身也從未對那多出的電晶體做出任何說明,我想就暫且別管他吧! 或許他們多出的東西都是 AV 用途也不一定。
至於 ROP 的話則一直是 PS3 的痛,畢竟這部分他們並沒有針對實際應用來做設計,雖說 SCEI 已經把 HDR+AA 給解決了,但真要等多數遊戲都普遍應用應該是一年後的事了,C1 針對輸出方面進行強化在這方面的確佔了不少的好處。
而 G8x 的 raw performance 又會回到前面的 driver 或是 game 各自的表現上面,G8x 比較像是是幫寫遊戲的人省去了大量的最佳化步驟,算是 nVidia 所發展出的 trick 吧!(笑)
至於 R6x0 的 VLIW 的話……. 說來也有趣 G8x 設計上用了來自於 Transmeta 設計 VLIW 的工程師,反而在這部分避開了不少的問題…….
C1 跟 R6x0 相較於 G7x or G8x 來說對於 driver 或是遊戲開發者的依存性以目前來看的確是高了些,但跟 Cell 相比都算是小問題,不過也正是因為有 cell graphic 我們才能在現在看到一些不一樣的東西,這方面總沒有兩全其美的解。
–
比起 KZ2 我反而覺得 Uncharted: Drake’s Fortune 所用的效果要好的多了,不過討論的人反而比較少? 這或許跟名氣也有關係吧!