分類彙整: GPU

GameTomorrow的CELL vs G80

http://gametomorrow.com/blog/index.php/2007/09/05/cell-vs-g80/
well,IBM又拿他們的iRT來說嘴了XD
能不能拿些別的應用出來….XD

這篇是引用薩爾大學的 Philipp Slusallek教授拿G80作ray-tracing的論文,Stackless KD-Tree Traversal for High Performance GPU Ray Tracing的數據,與CELL跑iRT的比較。非常有趣的是,iRT的作者正好是 Philipp Slusallek的學生。

這完全就是重複當初RacingPHT兄自己做的Ray-Tracing demo on G80的狀況,只是當初是預估,這次是實際跑完。

從左至右:

2.6 GHz AMD Opteron – Saarland Ray-tracer
Nvidia GeForce 8800 GTX – Saarland Ray-tracer
Sony Playstation3 (partial 3.2 GHz Cell processor running Linux) – IBM iRT
3.2 GHz Cell ProcessorIBM iRT
IBM QS20 Blade (Two 3.2 GHz Cell Processors) – IBM iRT

論文本身有提到因為Register footprint的關係,G80運作的效率並不高,有待CUDA本身的改善。

Although we believe a performance of over 16M rays/s to be already quite impressive for the CONFERENCE scene, we expected much higher performance: The G80 with its 128 scalar arithmetic units running at 1.3GHz should deliver over 160GFlops, meaning that tracing one ray costs about 10,000 cycles. We suspect the main bottleneck to be the large number of registers in the compiled code, which limits the occupancy of the GPU to less than 33%. Unfortunately, although the program requires much less registers, the CUDA compiler is not yet mature enough and cannot aid in reducing their count. An option would be to rewrite the whole CUDA code in PTX intermediate assembly.

不過即使是考慮33%的效率,仍與6SPE的CELL有相當的距離,更別提完整8SPE的CELL與內建雙CELL的QS20 blade,這應該與每個SPE都具備相對多數的register有關….然後IBM的人對Larrabee放話了。XD

—-
說真的,來點別的應用吧。TGS07希望多點東西….
謠傳有HOME for JP、firmware 2.0、新的線上AV服務、新定價策略與同捆包,甚至是FF7….

GameTomorrow的CELL vs G80

http://gametomorrow.com/blog/index.php/2007/09/05/cell-vs-g80/
well,IBM又拿他們的iRT來說嘴了XD
能不能拿些別的應用出來….XD

這篇是引用薩爾大學的 Philipp Slusallek教授拿G80作ray-tracing的論文,Stackless KD-Tree Traversal for High Performance GPU Ray Tracing的數據,與CELL跑iRT的比較。非常有趣的是,iRT的作者正好是 Philipp Slusallek的學生。

這完全就是重複當初RacingPHT兄自己做的Ray-Tracing demo on G80的狀況,只是當初是預估,這次是實際跑完。

從左至右:

2.6 GHz AMD Opteron – Saarland Ray-tracer
Nvidia GeForce 8800 GTX – Saarland Ray-tracer
Sony Playstation3 (partial 3.2 GHz Cell processor running Linux) – IBM iRT
3.2 GHz Cell ProcessorIBM iRT
IBM QS20 Blade (Two 3.2 GHz Cell Processors) – IBM iRT

論文本身有提到因為Register footprint的關係,G80運作的效率並不高,有待CUDA本身的改善。

Although we believe a performance of over 16M rays/s to be already quite impressive for the CONFERENCE scene, we expected much higher performance: The G80 with its 128 scalar arithmetic units running at 1.3GHz should deliver over 160GFlops, meaning that tracing one ray costs about 10,000 cycles. We suspect the main bottleneck to be the large number of registers in the compiled code, which limits the occupancy of the GPU to less than 33%. Unfortunately, although the program requires much less registers, the CUDA compiler is not yet mature enough and cannot aid in reducing their count. An option would be to rewrite the whole CUDA code in PTX intermediate assembly.

不過即使是考慮33%的效率,仍與6SPE的CELL有相當的距離,這應該與CELL SPE都具備相對多數的register有關….然後IBM的人對Larrabee放話了。XD

GeForce8延續

最近可能真的步調該放慢一點…..在年底NVIDIA的新產品只能算是產品小改款。

GeForce 8700 — G84的65nm版、或者是G98。前者的話是2TPC、後者的話就是3TPC。
GeForce 8950 — G92,規模應該會是6TPC,最高階版很可能是雙晶片的MCM。

這兩款的Shader可能會從MAD+MUL改成MAD+ADD,修改的部分不多,主要是成本改善。
不過本來G8x就已經幾乎完整支援DX10.1,就算僅止於改bug也還很夠用,而且PCIe 2.0也會開出來….
本來因為bug搭不起來的BR02會弄出A5版來配合,繼續對永遠打不死的AGP市場供貨。

看來雖然還是有點小改款,G8x會再陪伴我們好一陣子。

另外,如果G98確實是3TPC化,這樣和6TPC的G92就可以達成1:2,高階則是雙G92的MCM共12TPC,就可以達成從低到高剛好1:2:4,彌補先前G8x在G80與G84中間落差過大(沒有4TPC產品)的問題。

8/31的時候ZOL主辦一個NVIDIA市場經理專訪,在提供的資訊上面出現下面這張圖:
http://vga.zol.com.cn/topic/636500.html

上面提到G92 1000M電晶體。注意是「顯示卡」的總電晶體發展趨勢,不是單一GPU….且原始網址的G92數字已經被mask掉了。這夠此地無銀三百兩了吧XD

—-
補充一點別的東西: 兩顆G92該怎麼連接的問題,其實要回頭檢視G8x的TCP、以及CELL computing Board。

從CELL computinb Board的結構上、RSX對XDR存取的效率可以知道,線性對應定址、Cache coherency protocol做得好的話,一個GPU可以非常有效率地對另一個device的local memory作讀寫,所以其實我們大可把多數GPU用線性定址mapping串接起來,所以要是G92有512bit,那兩個G92就可以256bit對外、256bit互接就可以了;而G92的單晶片產品只要封裝上不實作完整的512bit,就可以達到產品區隔。

當然實體層不見得是這樣,可是觀念應該很接近了:既然上層結構(TCP)已經做了切割,那麼要做的其實只是把TPC–ROP中間這段corssbar跨晶片連結起來就可以。那麼前端FIFO workload的分配做好之後,所有的動作其實就都與Driver沒有關係,那連結效率就只剩底層I/O overhead,以及分離成兩塊的記憶體造成的一些零碎問題,但是這都可以解決(極端地來說對每塊ROP而言記憶體都是切塊分散的)。

用BR03對這部分也有一個明顯的好處:GPU BIOS其實在BR03上,對Host而言BR03後全部視為同一個GPU,除了能跨越BR03的NVIDIA之外。這對上述的實做法其實也是有利,只是沒搞錯的話目前Quadro Plex靠的也是BR03,這顆晶片適合這樣像多層星形連結的方式嗎?這倒是還有疑問。

G86 64/128bit續報

在上次那篇「G86-64bit版心得」之後,HKEPC放出了比較完整的8400GS產品報告。
http://www.hkepc.com/bbs/hwdb.php?tid=817975&tp=NVIDIA-GeForce-8400GS&rid=817975

8400GS的SP/TMU/ROP分別是16、8、4,和8500GT的核心、SP時脈完全相同(450/1000MHz),記憶體時脈也相同,等於只差在記憶體頻寬與ROP數量。
而即使核心時脈設定相同,在比較高解析、高倍率AA/AF等記憶體頻寬吃重的部份G86的64bit和128bit性能差距仍幾乎差30~50%。
這似乎可以用來推估G84 256bit版會與128bit版產生的性能落差,或者可以說成「如果G84提昇為256bit」後能夠得到的性能成長。

當然G84的SP與G80相比仍然是絕對性的少數,而且從自身產品的觀點來看,為了避免G80可能的存貨問題,8800GTS 320MB那樣的設定才是適當的,性能上G84 256bit照理說也很難與8800GTS320對抗,所以G84-256bit適當的推出時機其實很難估算。

NVIDIA開始DX10產品線65nm化

http://www.theinquirer.net/default.aspx?article=40257
照這篇的說法,九月會有GeForce8400的65nm,不過不見得是G86的直接縮小版,至少應該會是別的編號。

目前來說,最早的65nm GPU是G78(目前產品為GeForce 7200GS)。下一個65nm產品依照NVIDIA這幾年的慣例,應該是高一階的G8x低階品,然後等65nm成熟後,在Q4的時候推出G90高階。這個作法當初在NV4x與G7x(NV43 -> G70、G73 -> G71)已經行之有年,也獲得了相當的成果。

不過比較有趣的事情是,宣稱會有更加改進版的”PureVideo 3″,新增1080p輸出(類比色差?)。雖然我覺得把完整的VC-1 decode也順便補上還算蠻重要的,會更有低階超值影片卡的架勢。(實話是H.264可以做到完整硬解、VC-1作不到是很怪的事情….應該只需要軟體小改就能對應)

希望可以做到畫質的繼續提昇,比方說scaling等等的進一步強化。目前對HTPC的期待,硬體solution主要是GeForce系、軟體主要是XBMC的Linux porting,這些搞定的話媒體播放就會有非常全面的解決方案。當然直接買AppleTV後續的改版也是個方法啦…. 不過這有自尊上不能讓步的部份。XD

PS3後續也很有看頭,畢竟CPU實在強太多了;只是要期待有MPEG4-ASP decode的部份比較困難就是了。HTPC的自己動手solution可以自己掌握的部份畢竟還是比較多….如果PS3要完全滿足要求的話,至少要在不犧牲現有功能(那就得維持XMB)的前提下有DVD全區、MPEG4-ASP和samba支援,這還真的是蠻困難的(而且非技術因素比較多)。

[EDIT]
http://northwood.blog60.fc2.com/blog-entry-930.html
從這篇來看,這批65nm的GPU會叫做D8M,D=desktop、8=GeForce8、M=Mainstream,然後HDMI的部份會有Audio-inside:內部HD-Audio(反正RSX的時候就做了)。值得期待?
然後INQUIRER可能是覺得D8M是G8M的typo,但是這部份還沒個準。如果65nm夠穩的話,像80nm這樣單元規模不大,還刻意切成G86和G84兩個產品就沒意義了,直接double上去比較有意義。
話說注意到8300M的話,可以發現G8x其實還是可以用8SP(1/2 TCP)為單位開關執行單元….果然他們還是有考慮到的嗎。

http://northwood.blog60.fc2.com/blog-entry-922.html
所以R650/670是反間作戰….XD
實際上真的要靠dual-chip R600?好吧,PCB的供電規模是吃得下去啦,可是這樣又得加電源接頭了吧?
65nm如果直接跳R7x0的話,那和NVIDIA的打算是一樣的。

追求簡單化以擴充執行規模的R600設計哲學

http://pc.watch.impress.co.jp/docs/2007/0515/kaigai358.htm
ラディカルなAMDの「Radeon HD 2000」アーキテクチャ
http://pc.watch.impress.co.jp/docs/2007/0518/kaigai359.htm
大きく異なるRadeon HD 2000とGeForce 8000のアーキテクチャ
http://pc.watch.impress.co.jp/docs/2007/0523/kaigai360.htm
AMDがRadeon HD 2000で倍速シェーダを採らなかった理由

雖然這幾篇裡面講的都有引用AMD(ATI)的技術資料,甚至第三篇還有訪談,還提到了R600有38個fequency domain(!!),但是聽起來都沒有說服力….. 因為雖然透過維持等速shader、VLIW指令排程和全面RingBus等設計簡化了GPU的結構,但是除了R600的shader數量較多(320D vs 128D)之外,實質上R600還是比G80電晶體更多、更耗電、更晚上市。XD

好吧,也許不這麼作、用G80的路線的話,R600根本出不來吧XD

VAIO type R新增”DSD Direct player”

http://www.watch.impress.co.jp/av/docs/20070517/sony.htm
ソニー、VAIO「type R」に「DSD Direct Player」を搭載
-音楽CDをリアルタイムDSD再生。夏モデル情報も

DSD Direct
http://www.vaio.sony.co.jp/Products/Solution/DSDdirect/

這還蠻有趣的…. 透過2GHz 以上的 Core2Duo,將普通音樂CD轉成DSD Stream,然後透過Sound Reality輸出。

主要的重點在於Sound Reality有DSD Bit Stream輸出能力,所以剩下的只要CPU夠力就可以做到DSD播放。DSD Direct Player的DSD轉換精確度是64bit FP,DSD Direct的運算會對倍精度浮點資料做30,000TAP的FIR filter(64x up-sampling),以及Delta Sigma Modulator。透過Intel提供的工具最佳化之後,在PentiumD 3.4GHz幾乎達到real-time播放。所以現在才會在Core2Duo 2GHz提供DSD Direcr Player。

(與最佳化相關的工作,刊載於Intel的工作事例內)
未來只要是VAIO系列具備2GHz以上的Core2Duo的話,都會預載DSD Direct Player。(型錄)

不過真正有趣的一點是,SONY目前已經將DSD相關format開放全部免費licence….
看來他們真的想推動DSD了,PS3的DSF直接播放(目前只能燒進DVD-R)應該不遠了。

當然這樣相比起來CELL好像就有點虛,要用5個SPE才能做到real-time,當然這是因為CELL的倍精度能力算是被刻意弱化,與一般的PC CPU相去無幾,好與IBM現在主推的eDP CELL做區隔(記憶體支援容量與pipeline化的倍精度運算能力)。這也證明其實結構的部份各有優缺點,只有特性問題,做良好的optimize之後,現在PC還是能用和PS3同等的精確度來播放DSD format….

另外,順應DX10潮流,VAIO ordermade model現在也可以選購8600GTS。
對SONY來說,8600GTS最大的改善應該是對H.264視訊方面….
在BD上的H.264 title開始增加的現在,GeForce 8的PureVideo HD2堪稱及時雨。
不過和這些機器取得的成本比起來,就更顯得PS3經濟實惠也說不定?

GeForce 8 中階產品正式發表

http://pc.watch.impress.co.jp/docs/2007/0418/nvidia.htm
正式發表~

G84為289M、32SP的結構,Shader時脈定在1450MHz(比G80的1350MHz稍高),核心定在675MHz。
具備PureVideo HD2(原PureVideo HD + H.264 AVC相關元件的hardwire化),以及DDL support。

G86為210M、16SP的結構,Shader時脈定在900MHz、核心定在450MHz。
同樣具備PureVideo HD2,DDL support。

—-
http://pc.watch.impress.co.jp/docs/2007/0416/kaigai350.htm
http://pc.watch.impress.co.jp/docs/2007/0418/kaigai352.htm

這兩篇文章是本周後藤弘茂專欄對於G8x的評論,第一篇是從CUDA文檔的內容對G80結構作分析;第二篇則是對G84/G86的總合評論。

裡面有一段很重要:為什麼NVIDIA不做64sp的G8x,而要讓中階和高階之間出現那麼大的差距呢?
結論上來說是沒有必要,因為高階是為了誇示效能,所以規模膨脹不斷地挑戰限度;中階和低階則因為獲利需求,無論如何要維持成本,在這兩者中間完全不需要互補物。
所以,以這篇的觀點來說,NVIDIA應該寧可以G80現有晶片為基礎,推出64sp、256bit、256MB(或者是512MB,看情況)版本的產品即可,而不是做出一個64SP的晶片來破壞獲利結構。反正G80的結構容許這樣的產品出現….

G80的優勢與弱項

最近後藤老爹發了五篇關於G80的文章:

【12/ 1】メモリアクセス粒度が課題となるG80時代のGPUメモリ

【11/27】シェーダプログラムの進化と連動するGPUのマルチスレッディング化

【11/21】G80とG7xの最大の違いはマルチスレッディング

【11/14】GeForce 8800世代のキーとなるマルチスレッディング

【11/ 9】これがGPUのターニングポイント NVIDIAの次世代GPU「GeForce 8800」

其中12/1這篇提到了目前繪圖記憶體在存取單位大小的問題,這也是G80一個非常有爭議的地方。

GDDR4目前把GDDR3的prefetch4提升到prefetch8,但是因為這個prefetch必須是連續的,所以以64bit寬度的ROP來說,等於一次讀取的單位就是總計512bit/64byte的資料,但是其中其實可能只有8~16byte的資料有用處,剩下都浪費掉了。即使是GPU這樣資料結構經過特別最佳化的硬體都還是不容易遇到這麼大的連續讀取,更別提GPGPU了。

所以ATI R5x0為了對應這個問題,提早把ROP的寬度改為32bit,使得prefetch8也能維持和當初GDDR3的prefetch4類似的效率;但是因為DRAM本身是32bit的,也就是說未來還想要進展到Prefetch16的話,問題就無可迴避了。G80維持64bit的ROP,因而被認為是設計上沒有打算對應GDDR4。(不過目前看來R600似乎也是32/64 x 8的設計,或許實做32×16的結構真的對電晶體數量壓力太大了吧)

但是透過XDR2提供的Micro-Threading結構,就可以迴避這個問題,在prefetch16的長度內放入交錯於不同bank內的資料,進而有辦法實做更長的prefetch,讓傳輸更貼近銅線可傳輸的極限….這也是protocol based DRAM interface的初衷。所以,GDDR系的記憶體,遲早有必要實做類似Micro-Threading的結構;但是有可能會因此遇到與RAMBUS公司間的專利問題,而使得問題複雜化。

另一個可能,自然就是直接採用XDR2了。
由於同屬SONY在PS3的合作夥伴,NVIDIA和RAMBUS也算是有一度合作過的關係,不過RSX最後仍然沒有採用XDR。
以後會不會採用相當值得注目,畢竟NVIDIA在GPU上有PureVideo這個外來IP,雖然它還只是附加價值系的東西,重要性和Memory Controller相比是輕了許多。
這麼關鍵的環節,真的會放心交給外人嗎?值得注意。

此外,在CUDA programming guide裡面對G80的硬體spec描述如下:

G80 has the following characteristics:
1. The maximun number of threads per block is 512;
2. The amount of device memory is 1GB;
3. The amount fo shard memory abailable per multiprocessor is 16KB divided into 16 banks;
4. The amount of constant memory available is 64KB;
5 The warp size is 32 threads.

這個”device memory is 1GB”看起來像是在指出G80的on-board memory組成可達1GB,也就是64×8=512bit….
但是看到shader與新AA模式–CSAA的表現,其實感覺G80對512bit的需求並不急迫。

Shader真的蠻可怕的,512 threads per block(TCP),意思就是整個G80總共有4096個thread!
這足足是R5x0的8倍;但是從分支性能看來,其實反而比R520還差些,為什麼呢?考慮shader規模大約是兩倍(128個1D,相當於32個4D),每個thread看來很可能都是1D,所以4096個thread相當於1024個4D thread。(!!)
Shader Pool的時脈和其他部分相差兩倍左右,所以延遲也大了一倍左右,讓與R520同等thread比例(128thread–4個4D,512thread–16個1D)的G80,實際上可以處理的branch size不得不加倍(4×4 become 4x4x2)。

也就是說,理論上G80的shader時脈可以非定比例拉高沒錯(AFAIK up to 4GHz),但是延遲會跟著shader時脈比例增加,也就會遇上分支性能隨著時脈增加而弱化的問題,類似R580增加shader時分支開銷相較於R520弱化。

CSAA目前有種說法,是指出它其實是Matrox 過去提出的Fragment AA的完美版本….
每個pixel可以儲存4個fragment,並且每個fragment都可以儲存4個sample,所以4個fragment成為這16個sample的index….
和過去Matrox FAA相比,大概就是fragment有沒有儲存sub-sample帶來的差異,所以可以有比較好的汎用性;不過弱點還是類似,shadow volume。
這也造成AA效果大大改善,資源需求卻變少的狀況。

memory interface本身了無新意,但同時也因此展現出了Shader與新AA模式本身的潛力,真是非常有趣的狀況。

G80正式公佈

後藤老爹的解說文
http://pc.watch.impress.co.jp/docs/2006/1109/kaigai316.htm
不過ROP應該沒有96個吧?應該是透過壓縮,使得color sample可以送出96個/cycle。
(Z則為192個)

西川善司這篇則比較通俗易懂….
http://www.4gamer.net/specials/3de/geforce_8800/geforce_8800_001.shtml
西川寫的另一篇
http://journal.mycom.co.jp/special/2006/g80/

以第一印象來說,最讓我驚訝的其實是TMU內的Double Filter Unit。
因為當初就為了傳聞的64TMUs而有所質疑,當初的想法是”為了filter增加這麼多TMU有必要嗎?”
結果NVIDIA終於設計出double speed的Filter,使得TMU整體規模只作一定程度的提升、達到節省成本的目標之外,
並提供了強大的filtering能力,可以達到FP32半速、FP16全速(與int8等速),以及提供全時無失效角度AF的驚人成果,算是達到了我對G8x最大的期望(畫質提升)之一。

從這點設計也可以看出,G80是個以強大Hardwired加速單元為後盾的高性能Unified Shader處理器,並且不只是對繪圖性能優異,也對GPGPU有著立竿見影的高性能,比方說”CUDA(Compute Unified Device Architecture)”,這個命名顯然也強烈地意識到了”CBEA(Cell Boardband Engine Architecture)”。

這個結構未來的衍生產品,可能比過去的產品還要多:
比方說,NV4x衍生出了一個G7x;那G8x會不會持續到G9x,甚至更以後的產品(G10x?)都維持僅修改、補強這個結構而已的程度?值得期待。

話說注意MYCOM這篇有G80的Die Photo:
http://journal.mycom.co.jp/photo/special/2006/g80/images/011l.jpg
看起來G80的確會變成每次關閉兩個TCP,產品線也可能用2/4/6/8TCPs為基礎變化。

—-
此外,NVIO內有HDMI 1.3的支援也算是驚喜之ㄧ,只是還沒有釐清到底是HDMI 1.3 perchannel,還是其實是每組DualLink DVI的一個運作模式而已。
前者的話自然是豪華到爆….

最後,G8x內建的PureVideo HD的HQV Benchmark已達到128分(R5x0為113分),G7x與PS3內建的PV-HD也跟著雞犬升天。_A_