PS3 的 GPU 不是只有1個,全部總共有1+7個』。
PS3 的 繪圖系統有些部分仍有謎團。比方說
(1) 不使用 UMA 架構,XDR DRAM 256MB的主存儲器與CPU (CELL)連結,
而繪圖晶片 (GPU︰RSX,以下RSX-GPU)則配備著256MB 的GDDR3....的這個架構本身。
(2) NVIDIA社長 黃仁勛先生在簡報中提出RSX可以使用超過本身裝配的256MB的內存容量進行繪製,
可使用的內存總共為512MB的這段敘述。
等以上兩點。
GDDR3 256MB的話,使用起來不是比 XBOX360 的 512MB UMA 來得綁手綁腳嗎?其實呢....
『最大可朝512MB的內存進行Rendering』的這段敘述。不過,RSX只有256MB的內存才對。這代表的是?
為了這些迷團,我們前往了RSX的原設計出處NVIDIA進行取材。
招待我們的人,是與NVIDIA所有的GPU關係密切,被稱為『GeForce之父』的總工程師 David Kirk先生。
NVIDIA總工程師 David Kirk先生。昵稱NVIDIA的 Kirk 艦長。(譯注︰by Star Trek)
> PS3的RSX-GPU可以對主存儲器進行Rendering
前述點(1)提到,主存儲器與顯示用內存分開設定的缺點,其中之一是『顯示時只能使用256MB』的這個容量限制。
在高分辨率(HD)的環境下,被當成RenderTarget的FrameBuffer容量,可是相當於PC環境底下XGA或是UXGA的大畫面,而且這些新世代的顯示晶片能夠使用大量的decare Texture,以及NormalMap,這些功能都需要大量的內存。
以主存儲器與顯示內存結合為一體的Xbox360可以針對場景以及狀況自由地分發以512MB為範圍的內存去應付各種用途。而PS3的話不就因為有著256MB的界限存在而在自由度上會遜於Xbox360了嗎?.... 這樣的疑問立刻浮現下我們的腦海。
PS3的架構方塊圖。從這張圖看起來RSX只能使用到256MB GDDR3,但是實際上不然。
關於這點,Kirk先生做了如下的說明。
『RSX可以對CELL方面裝配的256MB XDR DRAM主存儲器當成RenderTarget來利用。所以基本上你可以當成沒有這個限制。』也就是說,理論上而言RSX可以作為繪圖用內存使用的空間為GDDR3 256MB + XDR 256MB = 512MB total。於是(2)的謎題也跟著解開了。
如果讀者對PC較為熟悉的話,在PC上的AGP Memory.... 利用所謂的GART(Graphics Aperture Remapping Table)的架構,GPU就可以把主存儲器當成晶片自己的內存(Local Memory)使用....和那個功能很類似....來這樣思考就比較容易了解了。
(譯注︰GART並沒有可以將AGP Memory 當成 Render Target的能力,所以總之這是TurboCache功能,只是頻寬大多了)
但是,在提到實際上能不能將主存儲器像是與GPU直接連結的GDDR3 VRAM來使用這部份,其實就不得不讓人懷疑了。
CELL處理器的架構圖。RSX-GPU連接在FlexIO bus上。
RS-X-GPU與CELL靠FlexI/O來連接,CPU→GPU的下行頻寬有20GB/s,CPU←GPU的上行頻寬有15GB/s的限制存在。雖說CPU存取XDR主存儲器的頻寬有25.6GB/s,但是GPU朝主存儲器的上行頻寬限制在15GB/s,這裡就會形成瓶頸了。
再其次,在方塊圖中寫著『BUS』的部份是PPE與八個SPE以package relay模式連結的『Element Interconnect Bus』的環類Bus之故,透過這裡存取內存的延遲也不可忽視。
結果,可以完全當成繪圖內存般使用(主存儲器)還是有所困難。具體來說,把場景Render成Texture,再套用入這個場景的Multi-pass Rendering的狀況下,如果只把 XDR 當成 Render Target的話,效能勢必大幅衰減。
> PS3不是有叫做SPE的副GPU嗎~透過RSX-GPU與七個SPE來實現SLI?
也就是說,其實這個PS3的架構並沒有優勢了嗎。
『沒這回事。CELL processor裡面有七個SPE(Synergistic Processor Element) 可以與RSX-GPU共同作業。主存儲器上的繪圖相關聯data可以由SPE進行前置處理,也可以讓SPE對RSX-GPU的繪圖結果進行類似影像後製處理般的加工。(by Kirk先生)』
RSX-GPU如果可以存取CELL Processor的主存儲器的話,反過來說,主存儲器就是CELL processor與RSX-GPU的共享內存。對PS3而言這個架構也可以成為優勢。
雖然過去已經在進行過基本的解說,CELL具備著七組稱為SPE的特定單元,朝4純量32bit浮動小數點實數向量演算的128bit SIMD型RISC處理器。
這個SPE本身的實力,如果願意相信SCE給的性能指標的話,即使是一個SPE在3.2GHz運作的時候,進行Vertex處理的速度也能達到每秒八億(800M)個Vertex,這個已經相當於普通的GPU所具備的 好幾個 Programmable Shader的能力了。而且如果比較可程式化能力(Programmablity)的話,SPE有著可以使用完整的C++語言的程度,在這方面遠遠超過普通的Programmable Shader。
SCE也實驗性地製作完成了將數個SPE當成GPU來活用的軟體繪圖引擎,在先前召開的發表會中,也公開過只靠SPE完成的影像。
靠SPE來進行 Rendering的flight sim 類般的flyby demo。連Normal Map都使用到了。
比方說,讓我們考慮一個把某個場景透過數個 Render Target 來處理的 Multi-pass Rendering。
例如說,圖中那個水面上反射出周遭的影像這種狀況。
(NVIDIA提供)
類似這種場景,在進行整個場景的Rendering前,必須把以水面為分界點,由水面所反射的場景先行rendering(產生反射Texture)。
在進行最終Rendering的時候,再使用這個Texture來顯示出水面的反射效果,如果只有一個GPU的話,就只能夠全部"自己"完成。如果反射Texture產生的時間過長,那麼繪製過程整體就會出現延遲。
反射材質。這個能不能讓SPE來Render呢?
如果這個反射Texture可以讓 CELL Processor方面的SPE,與RSX-GPU並行進行Rendering的話,比起全由RSX-GPU自己處理處理時間必然縮短,也就是整體效能將會提升。
RSX-GPU進行最終Rendering的時候,從XDR主存儲器中取得反射Texture,雖然會遇上於FlexIO朝GPU的下行20GB/s的頻寬限制,但是從整體來看仍然相當有機會賺取效能才是。
在這種狀況下,雖然有必要在主存儲器與繪圖內存內都存放Geometry set與Texture set,但是以反射Texture這一類的需求,材質分辨率較低也不至於造成問題。well,這裡提到的部份可能只是為了說明而小舉一個例子,但是在Rendering的時候讓RSX-GPU與SPE進行共同作業的創意,也可以說是個非常獨特的功能。
NVIDIA把以複數個GPU進行Rendering的技術稱為『SLI』,PS3這個架構某個意味上,也可以稱為半SLI也說不定。
> SPE 可以對Rendering完成後的影像進行處理
來源
第二,通篇文句超級不順,一堆概念疊來蓋去,寫這篇出來的人真的知道他寫了啥?
上面說的東西沒有一樣是新的,這些都是目前都知道的,可是限制也是還在。當然,你可以用主記憶體的256MB來繪圖,PC架構中AGP就有類似的概念,但是速度如何大家心知肚明,現在一堆顯示卡上加了512M 1G記憶體不是用來營造氣勢的。
另外,整個文章中Kirk說的話只有『RSX可以對CELL方面裝配的256MB XDR DRAM主存儲器當成RenderTarget來利用。所以基本上你可以當成沒有這個限制。』『沒這回事。CELL processor裡面有七個SPE(Synergistic Processor Element) 可以與RSX-GPU共同作業。主存儲器上的繪圖相關聯data可以由SPE進行前置處理,也可以讓SPE對RSX-GPU的繪圖結果進行類似影像後製處理般的加工。(by Kirk先生)』這兩段,第一句話只提到RSX可以用主記憶體,但他沒跟你說這樣做會損失多少速度。第二句話是說SPE可以做render之前的預處理與之後的後處理,其他的Kirk可是一個字也沒提。其他的是誰說的,證據為何,通篇都沒看到。