看板 PC_Shopping 關於我們 聯絡資訊
(題目寫太大了,事實上頂多只會提到為什麼Intel Larrabee 和SONY Cell不能當GPU用) 近年因為兩個因素,mobile GPU的需求提高到越來越接近 桌上型執行遊戲的GPU,高階GPU展現GPGPU(CUDA,OpenCL等)的運算能力 GPU的"可程式化"特性又成為一個熱門主題. 一方面,使用現成的GPU中的可程式化特性,希望能不依賴特定的硬體, 完成許多運算的工作. 另外一方面,GPU看起來越來越依賴"可程式化的部分"(=Programable Shader), 這對於不想要依賴傳統GPU廠商的人,是不是一個良好的切入點,可以攻擊到 傳統GPU廠商的弱項,帶來改朝換代的契機呢? 先討論後面這個問題好了.是不是可以做一個超強的可程式化核心(啊, 那不就跟一個超強的CPU類似嗎?),然後稍做調整,他就成為一個很有競 爭力的GPU? 答案當然是No......所以才會有這篇文章........ 最早是預定於2006發表的PS3內的Cell晶片,由Cell的超高浮點數運算能力 讓他充當GPU的工作...但是,因為製程跟不上,Cell的運算能力直接縮水 變成原來的 1/4 因此這個也直接打消,重新再接上一個nVidia GPU. 不過就算Cell的計算能力沒縮水 他當GPU還是會變成悲劇.... 悲劇不只是只有第一個,永遠會有第二個.第三個....... 再來一樣悲劇的就是組合數十個"修正過後,具有強大SIMD指令集的x86" 的Intel Larrabee,強大的可程式化性能,悲劇的GPU命運. 但不只這兩個會構成悲劇,相信以後還會有前仆後繼的同樣悲劇出現, 只是影響力小到我們不會發現,可能是一些學術單位,小型的IC design house 這樣搞.然後發現會失敗了...... ==================宣傳時間====================== 不要以為設計了CPU/DSP指令集 再來幫他擴充點浮點運算能力 他就可以充當GPU了 如果你的單位正在做這件事情 停下來 把錢省省 比較好. ================================================ 但是講到這邊還是沒有講為什麼.基本上,GPU的Programmagle Shader 分為兩部分,Vertex Shader,處理物體模型的向量資料,Pixel Shader, 處理螢幕上每個pixel的計算.GPU可能設計成Unified Shader,那表示他 可以選擇當Vertex Shader 或者Pixel Shader用而已,仍然不出這兩種 執行方式. 那麼,最簡單的GPU運作會不會是...... Input Vertex Pixel Output Data ===>Shader ====>Shader ====> Data 答案是否定的,GPU做的事情沒有這麼少 基本一顆Programmable Shader的運作就是.... Input Data || Vertex Pixel Frame \/ (1) ===>Shader ==>(2)==>Shader ==>(3)==> Buffer 在Vertex Shader之前有一個工作(1) 在兩者之間有一個工作(2),在Pixel Shader之後有一個工作(3) 在現在的可程式化GPU裡面,這三個工作很多嗎? 答案:這三個工作一樣很吃重.和傳統GPU一樣 (1)通常有甚麼工作,舉例而言,計算甚麼樣的vertex超出畫面範圍外不用畫. 知道三角面是背向對著你提早捨棄掉不畫.還有....老GPU廠商AMD,nVidia,Sis 等還有"提早計算出Z值,把蓋掉別人的三角面提前畫"這樣的工作. 已經退出PC市場 但是成為mobile上最強GPU的PowerVR架構 他的特性稱為Tile-Based Defeffed Rendering,這種相對於其他GPU 廠商相當另類的做法 也可以歸類在(1)的範疇 (2)呢? vertex資料,轉成pixel資料.... 這個也是傳統GPU一定會設計的硬體,但是Intel Larrabee把這都省去了 不過說轉換不太正確 不如說計算一個三角面覆蓋了螢幕上哪些Pixel 也就是....... A A ====> *** ***** B C B********C 這個vertex資料,等等就會被分解成19個pixel資料以及各自的座標/參數, 繼續下去到pixel shader計算....這樣的過程有很多種命名. OpenGL稱為Rasterizer(不過容易跟3.的ROP混淆),或者也會稱為 Projection.Triangle Setup Engine等等..... 有時候GPU硬體在(2)的階段就會提前做一些(3)的判斷.這樣可以 省去多跑一個Pixel Shader的運算.這個能不能做要看運算特性. 比如說沒有透明色的時候就可以提早計算有沒有覆蓋掉Pixel. (3)的話就是連Pixel Shader都算完了.這個部份通常稱為ROP, 就是計算透明色的累加,FSAA,HDR,Z和stencil的數值的檢查 等等.... ===============小總結時間================== 那到底1/2/3三個硬體,如果沒做或者是做不好會怎樣?? 用最簡單的比喻,就是設計一台汽車,具有超大馬力超大油耗的 引擎,但是沒有設計良好的車胎,輪軸,齒輪箱.....這樣的話只能 用超浪費的方式硬推.Sony Cell或者是Intel Larrabee這樣的設計 並非完全不能當GPU,頂多只是搞成500mm^2的晶片弄不出人家200mm^2 的GPU的效果而已. =========================================== 結論就是GPU走到Programmable時代,那些Prograamable Shader 以外的硬體(且GPU軟體看不到)重要性仍然超過一半 !! 麻煩在於這些東西如何設計的好,只有曾經設計過的人知道. 這也是近年在GPU市場上推出產品能存活的.幾乎都是傳統GPU時代 就活著的廠商(AMD,nVidia,PowerVR).不容易看到新廠商切入. 那...我們是不是挖角傳統GPU廠商的離職員工,把這些基本的硬體設計好, 然後我設計一個很好的Programmable Shader,他跑GPU功能很快,跑一般運算 也很快......讓我通吃GPU/GPGPU領域?? 聽起來好像很好,可是目前來說是很難做的.這個答案為甚麼是No. 我在考慮要不要深入解釋下去......基本上前一個問題能看完的 應該有相關領域的學生或者是企業的新人的程度了,以下可以繼續 挑戰...........我也不確定我在說甚麼的東西............ 我們考慮Mobile GPU領域的話,基本上類似幾年前的desktop GPU. 處在Fixed Function(ie. DX7/DX8/OpenGL ES 1.x相應水準)和 Programmable Shader的交接期.PC Game大概從2001~2004花了四年 讓市面上90%的遊戲使用Programmable Shader. 在這個兩者的交接時期,老牌GPU廠商推出的GPU雖然是基於 Programmable Shader,但是指令集的設計會對繪圖的Fixed Function做特化. 儘可能用更少的Shader指令做出傳統特效.比如說更多更有彈性的swizzle. (繪圖資料想從哪個軸搬到另外一個軸都可以,一個化成3~4份也可以), 計算的operand 也可以直接指定成許多種常數(不是那種保留16bit, 做0~65535的常數運算),浮點數的 +-1 0, Pi ,e, 或者Operand直接根號,log等等. 這樣的GPU指令集拿去做GPGPU,取代DSP運算會有兩個問題. 第一個是編譯器很難做最佳化.比不上手寫的.這問題比較小, 因為編譯器技術一定會慢慢跟上來 第二個問題是Instruction Encoding變大了.....傳統CPU/DSP指令, 平均一個指令大概是2~4byte間.但是一個GPU指令,可能因此變成8~16byte 的instruction encoding. 這個巨大的code-size,對GPU程式通常問題沒有很大,因為很多計算畫面特效 的Shader不超過200個指令.只是畫面上有幾十種shader在跑而已..... 但是弄成DSP,跑個影像核心,或者GPU充當超級電腦,弄個粒子模擬之類的. 可能單一個Basic Block就超過1000個指令,整個核心超過50000道指令. 這樣的話因為Code-size的關係,instruction cache的需求也變得非常大..... ================又要總結================== 第二段比較亂...不過我想個同樣簡單的比喻, 如果想要讓GPU充當其他運算 就好像在一台賓士汽車上 安裝多大馬力的引擎他可以當成飛機使用一樣. 如果只有200馬力,不管如何都很難成為良好的飛機, 即使過去曾經有200馬力就飛上天的飛機的例子 如果有20000馬力,那麼賓士汽車是有機會飛上天的. ========================================== -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.54 jk21234:轉錄至看板 VideoCard 01/22 01:59
condition0 :JK大先推再看 01/22 02:03
monHHH :只能推了 01/22 02:05
obov :頸拜 01/22 02:23
jk21234 :目前台灣只有1.5個部門在搞GPU....XD 01/22 02:25
halow :推JK神 01/22 02:36
ericinttu :有推有保佑 01/22 02:37
soem :推,但不一定要相關領域的學生才看得懂啦..XD 有接 01/22 02:43
soem :觸異質計算或GPU相關課程的人大概就可以了... 01/22 02:43
thatsocool :推專業~ 01/22 02:54
justlovenene:看不懂快推 01/22 03:08
zseineo :看不懂推 01/22 03:10
ruyur :先推了再看看不看得懂 01/22 03:14
noahleft :推! 01/22 03:40
noahleft :可以借轉貼嗎? 01/22 03:44
kennot :呃 重量不討論的話 單人飛機大概30hp就足夠起飛了... 01/22 04:28
AXby :快推 不然人家以為我們看不懂 01/22 05:36
gaiaesque : 01/22 06:34
EndlessYearn:推 01/22 08:18
AustonJhu :神出沒 快推! 01/22 08:49
Holysml :蓮花廟不是有大開職缺找Mobile GPU?從前到後段都找了 01/22 09:14
Aquari :我看到CD的精髓了 ABC三角形中間的*被CD了(誤 01/22 09:17
segaboy :雖然看不太懂,但要推一下,囧 01/22 09:44
a83a83cjcj :推~ 01/22 09:52
ArSaBuLu :推jk大神 01/22 10:03
Biantai :推 01/22 10:21
batschris :推了! 01/22 10:35
three456 :推 01/22 10:37
redsquad :推! 01/22 10:46
b6byc :推~~ 01/22 10:56
good3211 :寫軟體GPU的人 其實也看不太懂+1 01/22 11:40
jk21234 :M開頭的不論國內的還是國外來的我都上了 XD 要去哪 01/22 11:40
evo2001 :推,淺顯易懂! 01/22 12:08
dkchronos :看不懂只好推了 01/22 12:08
Bencrie :DX8 已經有 shader 了吧,虛弱的第一代 XD 01/22 12:47
ganbaday :跪求高手翻譯成羊語 01/22 13:01
CrazyMika :快推~雖然我看不懂 01/22 13:39
lyt316 :快推,不然別人以為我看不懂 01/22 13:57
giannie :推 01/22 13:59
QingTing :快推,不然別人以為我看不懂 01/22 14:00
tim0723 :===================別以為我看不懂!=============== 01/22 14:36
jf6203 :推淺顯但我看不懂 01/22 14:43
dickson11 :淺顯易懂但看不太懂給推 01/22 15:20
oceanforward:只能跪了 01/22 15:49
debian99 :cuda很強大呀 拿來做平行運算最適合了 01/22 16:40
SRNOB : 喔是喔真的假的 01/22 16:51
MrDisgrace :能算double了喔? 01/22 17:08
Nappa :原來如此 XD 01/22 17:20
Jay915 :推 01/22 18:19
ant74214 :囧 完全聽不懂 01/22 19:37
wolfspring :越看不懂越是要推 01/22 22:19
s25g5d4 :是jk神 先拜 01/22 23:03
moonevil :推 01/23 12:45
TrueX67 :雖然大部分是中文 但總感覺在看原文書.. T_T 01/23 17:39
MrAB :太專業了 只好給推 01/23 23:44