※ 本文為 windows2k.bbs. 轉寄自 ptt.cc 更新時間: 2013-01-22 16:34:47
看板 PC_Shopping
作者 標題 [閒聊] GPU 二三事--Intel/SONY如何失敗的
時間 Tue Jan 22 01:55:10 2013
(題目寫太大了,事實上頂多只會提到為什麼Intel Larrabee
和SONY Cell不能當GPU用)
近年因為兩個因素,mobile GPU的需求提高到越來越接近
桌上型執行遊戲的GPU,高階GPU展現GPGPU(CUDA,OpenCL等)的運算能力
GPU的"可程式化"特性又成為一個熱門主題.
一方面,使用現成的GPU中的可程式化特性,希望能不依賴特定的硬體,
完成許多運算的工作.
另外一方面,GPU看起來越來越依賴"可程式化的部分"(=Programable Shader),
這對於不想要依賴傳統GPU廠商的人,是不是一個良好的切入點,可以攻擊到
傳統GPU廠商的弱項,帶來改朝換代的契機呢?
先討論後面這個問題好了.是不是可以做一個超強的可程式化核心(啊,
那不就跟一個超強的CPU類似嗎?),然後稍做調整,他就成為一個很有競
爭力的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用而已,仍然不出這兩種
執行方式.
分為兩部分,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.
省去多跑一個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
推 :JK大先推再看1F 01/22 02:03
推 :只能推了2F 01/22 02:05
→ :頸拜3F 01/22 02:23
→ :目前台灣只有1.5個部門在搞GPU....XD4F 01/22 02:25
推 :推JK神5F 01/22 02:36
推 :有推有保佑6F 01/22 02:37
推 :推,但不一定要相關領域的學生才看得懂啦..XD 有接7F 01/22 02:43
→ :觸異質計算或GPU相關課程的人大概就可以了...
→ :觸異質計算或GPU相關課程的人大概就可以了...
推 :推專業~9F 01/22 02:54
推 :看不懂快推10F 01/22 03:08
推 :看不懂推11F 01/22 03:10
推 :先推了再看看不看得懂12F 01/22 03:14
推 :推!13F 01/22 03:40
→ :可以借轉貼嗎?
→ :可以借轉貼嗎?
推 :呃 重量不討論的話 單人飛機大概30hp就足夠起飛了...15F 01/22 04:28
推 :快推 不然人家以為我們看不懂16F 01/22 05:36
推 :17F 01/22 06:34
推 :推18F 01/22 08:18
推 :神出沒 快推!19F 01/22 08:49
推 :蓮花廟不是有大開職缺找Mobile GPU?從前到後段都找了20F 01/22 09:14
推 :我看到CD的精髓了 ABC三角形中間的*被CD了(誤21F 01/22 09:17
推 :雖然看不太懂,但要推一下,囧22F 01/22 09:44
推 :推~23F 01/22 09:52
推 :推jk大神24F 01/22 10:03
推 :推25F 01/22 10:21
推 :推了!26F 01/22 10:35
推 :推27F 01/22 10:37
推 :推!28F 01/22 10:46
推 :推~~29F 01/22 10:56
推 :寫軟體GPU的人 其實也看不太懂+130F 01/22 11:40
→ :M開頭的不論國內的還是國外來的我都上了 XD 要去哪31F 01/22 11:40
推 :推,淺顯易懂!32F 01/22 12:08
推 :看不懂只好推了33F 01/22 12:08
推 :DX8 已經有 shader 了吧,虛弱的第一代 XD34F 01/22 12:47
推 :跪求高手翻譯成羊語35F 01/22 13:01
推 :快推~雖然我看不懂36F 01/22 13:39
推 :快推,不然別人以為我看不懂37F 01/22 13:57
推 :推38F 01/22 13:59
推 :快推,不然別人以為我看不懂39F 01/22 14:00
推 :===================別以為我看不懂!===============40F 01/22 14:36
推 :推淺顯但我看不懂41F 01/22 14:43
推 :淺顯易懂但看不太懂給推42F 01/22 15:20
推 :只能跪了43F 01/22 15:49
--
回列表(←)
分享