作者jk21234 (BL2400PT真不错)
站内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?
答案当然是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
1F:推 condition0 :JK大先推再看 01/22 02:03
2F:推 monHHH :只能推了 01/22 02:05
3F:→ obov :颈拜 01/22 02:23
4F:→ jk21234 :目前台湾只有1.5个部门在搞GPU....XD 01/22 02:25
5F:推 halow :推JK神 01/22 02:36
6F:推 ericinttu :有推有保佑 01/22 02:37
7F:推 soem :推,但不一定要相关领域的学生才看得懂啦..XD 有接 01/22 02:43
8F:→ soem :触异质计算或GPU相关课程的人大概就可以了... 01/22 02:43
9F:推 thatsocool :推专业~ 01/22 02:54
10F:推 justlovenene:看不懂快推 01/22 03:08
11F:推 zseineo :看不懂推 01/22 03:10
12F:推 ruyur :先推了再看看不看得懂 01/22 03:14
13F:推 noahleft :推! 01/22 03:40
14F:→ noahleft :可以借转贴吗? 01/22 03:44
15F:推 kennot :呃 重量不讨论的话 单人飞机大概30hp就足够起飞了... 01/22 04:28
16F:推 AXby :快推 不然人家以为我们看不懂 01/22 05:36
17F:推 gaiaesque : 01/22 06:34
18F:推 EndlessYearn:推 01/22 08:18
19F:推 AustonJhu :神出没 快推! 01/22 08:49
20F:推 Holysml :莲花庙不是有大开职缺找Mobile GPU?从前到後段都找了 01/22 09:14
21F:推 Aquari :我看到CD的精髓了 ABC三角形中间的*被CD了(误 01/22 09:17
22F:推 segaboy :虽然看不太懂,但要推一下,囧 01/22 09:44
23F:推 a83a83cjcj :推~ 01/22 09:52
24F:推 ArSaBuLu :推jk大神 01/22 10:03
25F:推 Biantai :推 01/22 10:21
26F:推 batschris :推了! 01/22 10:35
27F:推 three456 :推 01/22 10:37
28F:推 redsquad :推! 01/22 10:46
29F:推 b6byc :推~~ 01/22 10:56
30F:推 good3211 :写软体GPU的人 其实也看不太懂+1 01/22 11:40
31F:→ jk21234 :M开头的不论国内的还是国外来的我都上了 XD 要去哪 01/22 11:40
32F:推 evo2001 :推,浅显易懂! 01/22 12:08
33F:推 dkchronos :看不懂只好推了 01/22 12:08
34F:推 Bencrie :DX8 已经有 shader 了吧,虚弱的第一代 XD 01/22 12:47
35F:推 ganbaday :跪求高手翻译成羊语 01/22 13:01
36F:推 CrazyMika :快推~虽然我看不懂 01/22 13:39
37F:推 lyt316 :快推,不然别人以为我看不懂 01/22 13:57
38F:推 giannie :推 01/22 13:59
39F:推 QingTing :快推,不然别人以为我看不懂 01/22 14:00
40F:推 tim0723 :===================别以为我看不懂!=============== 01/22 14:36
41F:推 jf6203 :推浅显但我看不懂 01/22 14:43
42F:推 dickson11 :浅显易懂但看不太懂给推 01/22 15:20
43F:推 oceanforward:只能跪了 01/22 15:49
44F:推 debian99 :cuda很强大呀 拿来做平行运算最适合了 01/22 16:40
45F:推 SRNOB : 喔是喔真的假的 01/22 16:51
46F:→ MrDisgrace :能算double了喔? 01/22 17:08
47F:→ Nappa :原来如此 XD 01/22 17:20
48F:推 Jay915 :推 01/22 18:19
49F:推 ant74214 :囧 完全听不懂 01/22 19:37
50F:推 wolfspring :越看不懂越是要推 01/22 22:19
51F:推 s25g5d4 :是jk神 先拜 01/22 23:03
52F:推 moonevil :推 01/23 12:45
53F:推 TrueX67 :虽然大部分是中文 但总感觉在看原文书.. T_T 01/23 17:39
54F:推 MrAB :太专业了 只好给推 01/23 23:44