顯示廣告
隱藏 ✕
※ 本文為 windows2k.bbs. 轉寄自 ptt.cc 更新時間: 2013-01-22 16:34:47
看板 PC_Shopping
作者 jk21234 (BL2400PT真不錯)
標題 [閒聊] 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?


答案當然是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大先推再看1F 01/22 02:03
monHHH      :只能推了2F 01/22 02:05
obov        :頸拜3F 01/22 02:23
jk21234     :目前台灣只有1.5個部門在搞GPU....XD4F 01/22 02:25
halow       :推JK神5F 01/22 02:36
ericinttu   :有推有保佑6F 01/22 02:37
soem        :推,但不一定要相關領域的學生才看得懂啦..XD 有接7F 01/22 02:43
soem        :觸異質計算或GPU相關課程的人大概就可以了...
thatsocool  :推專業~9F 01/22 02:54
justlovenene:看不懂快推10F 01/22 03:08
zseineo     :看不懂推11F 01/22 03:10
ruyur       :先推了再看看不看得懂12F 01/22 03:14
noahleft    :推!13F 01/22 03:40
noahleft    :可以借轉貼嗎?
kennot      :呃 重量不討論的話 單人飛機大概30hp就足夠起飛了...15F 01/22 04:28
AXby        :快推 不然人家以為我們看不懂16F 01/22 05:36
gaiaesque   :17F 01/22 06:34
EndlessYearn:推18F 01/22 08:18
AustonJhu   :神出沒 快推!19F 01/22 08:49
Holysml     :蓮花廟不是有大開職缺找Mobile GPU?從前到後段都找了20F 01/22 09:14
Aquari      :我看到CD的精髓了 ABC三角形中間的*被CD了(誤21F 01/22 09:17
segaboy     :雖然看不太懂,但要推一下,囧22F 01/22 09:44
a83a83cjcj  :推~23F 01/22 09:52
ArSaBuLu    :推jk大神24F 01/22 10:03
Biantai     :推25F 01/22 10:21
batschris   :推了!26F 01/22 10:35
three456    :推27F 01/22 10:37
redsquad    :推!28F 01/22 10:46
b6byc       :推~~29F 01/22 10:56
good3211    :寫軟體GPU的人  其實也看不太懂+130F 01/22 11:40
jk21234     :M開頭的不論國內的還是國外來的我都上了 XD 要去哪31F 01/22 11:40
evo2001     :推,淺顯易懂!32F 01/22 12:08
dkchronos   :看不懂只好推了33F 01/22 12:08
Bencrie     :DX8 已經有 shader 了吧,虛弱的第一代 XD34F 01/22 12:47
ganbaday    :跪求高手翻譯成羊語35F 01/22 13:01
CrazyMika   :快推~雖然我看不懂36F 01/22 13:39
lyt316      :快推,不然別人以為我看不懂37F 01/22 13:57
giannie     :推38F 01/22 13:59
QingTing    :快推,不然別人以為我看不懂39F 01/22 14:00
tim0723     :===================別以為我看不懂!===============40F 01/22 14:36
jf6203      :推淺顯但我看不懂41F 01/22 14:43
dickson11   :淺顯易懂但看不太懂給推42F 01/22 15:20
oceanforward:只能跪了43F 01/22 15:49

--
※ 看板: FW 文章推薦值: 1 目前人氣: 0 累積人氣: 1764 
※ 本文也出現在看板: PC_Shopping 以及 1 個隱藏看板
分享網址: 複製 已複製
MindOcean 轉錄至看板 MindOcean (使用連結) 時間:2013-01-22 18:38:37
2樓 時間: 2013-01-24 23:24:01 (台灣)
  01-24 23:24 TW
所以我沒有轉這篇
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇