- UID
- 143219
- 热情
- 690
- 人气
- 1083
- 主题
- 40
- 帖子
- 2127
- 精华
- 2
- 积分
- 1996
- 分享
- 0
- 记录
- 0
- 相册
- 1
- 好友
- 3
- 日志
- 0
- 在线时间
- 2181 小时
- 注册时间
- 2008-5-9
- 阅读权限
- 20
- 最后登录
- 2024-2-24
升级 99.6% - UID
- 143219
- 热情
- 690
- 人气
- 1083
- 主题
- 40
- 帖子
- 2127
- 精华
- 2
- 积分
- 1996
- 阅读权限
- 20
- 注册时间
- 2008-5-9
|
CPU 取代 GPU,还是 GPU取代CPU,在我看来都是短期内不现实的 ,低端市场除外。
小小的看了下作者的Slide,有机会还有仔细研究。我的理解:作者的观点在于软件3D加速的人工成本低,硬件3D加速的开发成本高。由于针对硬件优化的开发成本高,而GPGPU的限制太多,也同样不是3D开发的未来方向,因此长远来说3D加速会转向软件层次的开发。作者的论据主要在于预见CPU和GPU会同质话,或者增加两者的集成度。讨论这个问题的原因在于作者做的是游戏引擎的开发,周期很长,平均五年出一个引擎,一定要能预见到未来几年的趋势,而基于作者之前几个游戏引擎的成功,他的话应该还是蛮有分量的。
不过也来谈谈我的看法:
其实GPU这个概念出来之前,我们是只有CPU的,如果有3d图形运算,都是CPU的运算,因为没有通过专门的GPU针对3D加速优化,可以算是软件模拟。软件模拟的好处是通用性好,不管什么样的指令,最后能能解码成”1+1=10”。后来大概是3DFX VOODOO卡的出来,独立的3D加速卡的威力魅力优势才占先出来。因为很多非常通用的运算,比如三角型的创建和处理,可以用专门的硬件电路来实现,速度远远超过通用CPU的运算。当初的SGI应该有专业级的3D加速卡了,还回有其他品牌,可惜都是对OpenGL的优化,难入大众市场。因此无法享受规模化的优势,大规模化生产=价钱越来越低,也因此没有能进入消费市场的价格优势。由此可见软件3D加速并不是新概念了,从图形加速卡到硬件加速卡,都是因为周边硬件的发展,PC的普及,有了这个市场需求,出现了专门的周边硬件,来填补这个CPU无法满足的市场空缺。
不到一年前,没有3D显示技术的火热(阿凡达意义上的3D)。还有ATI的EYEFINITY技术,表面上显卡3D加速能量已有饱和的趋势。30-60HZ的速度,加上HD的分辨率。貌似显卡厂商的注意力开始转向开发CUDA,PHYX之类的周遍技术了。我做为一个非狂热游戏玩家,开始考虑低端/集成显卡应该能满足我游戏的要求了。假设我这样的属于主流消费者/或者主流消费者趋势,那么至少厂商们要开始在降低功耗和成本上做文章了,最好的办法,自然是集成GPU入CPU或者主板控制芯片。而且,众所周知AMD, Intel, Nvidia等等等等都有类似的主流集成产品待出。当时看来作者的预言是蛮安全的。不过最近很热的3D显示和个人很干兴趣的EYEFINITY技术的技术增加了GPU对性能的需求。如果这些新技术中的一两项能进入主流市场的话,GPU短时间内还没有办法被取消。从现在的趋势看,GPU还有发展的余地,不像声卡,网卡,Modem之类外设有限的性能需求很快被从外设被集成入了芯片组。从我个人看来,GPU还会作为独立的硬件继续存在一段时间。
回到ibeloved提到的point,GPU和CPU是不一样的运算处理需求。虽然都是处理器,最基本的构架都是与或门开始,但他们是针对不同类型数据/问题领域优化后的处理器构架。可以简单的说:GPU在于数据(DATA),CPU在于控制(CONTROL/LOGIC)。GPU的强项在于大并发数据流量的运算,简单的说就是对图形处理的专门优化,和我们日常的CPU处理有同有不同。GPU替代CPU也不是那么简单。以前CRAY 的Vector Computer,超级计算机的经典机型,速度很快。但是,做日常的运算效率并不一定好,它的处理器设计概念就更接近我们今天的GPU。值得一提的是vector computer很大程度上是专门针对科学运算优化的,同样GPU在科学问题的运算上速度也是相当的惊人,不过在日常计算机操作中,包括服务器上,GPU并没有太大的优势。还是在于设计时针对的问题领域不同,总的来说,科学运算大多是大数据量的处理,很多时候可以通过增加数据带宽,还有多线性流程来加速。而日常和服务器的CPU很多时候时候是在处理IO方面的突发的随机数据,或者是有先后逻辑的问题,对CPU的要求属于控制域方面的问题。
谈到(主流)CPU的优势,Intel 系列的X86处理器的优势在于综合性能,和兼容性。由于这两点的优势,造成了X86系列靠着规模效益,成本可以降的很低。虽然Intel /AMD 的x86指令集发展到今天,为了兼容性的要求,现代的处理器本身都已经演化成了处理器的硬件模拟器(CISC to RISC),性能本身谈不上最优化。不过凭借着规模化的优势成了最佳性能价格比的构架,除非特殊的科学运算,用x86系列的处理器成了通用运算的最佳选择(前提是有这个能力自己设计集群计算机系统软硬件,比如Google)。当然,通用的x86处理器或者集群处理器一样能优化科学运算,不过作为通用处理器的本身,并没有专门为大数据量的浮点或者整型运算优化。同理,GPU在这些情况下会有比CPU高效很多的情况,不过同样成本下,日常和商用通用的计算任务并不适用这种情况了。而且从软件工业来看,彻底放弃x86指令集的兼容性,目前看是不现实的。所以,CPU也不是那么容易被GPU取代的。
不过现在就连PDA,手机都集成DSP,协处理器,同时没有CPU的制造商不考虑能耗发热因素,集成GPU进入CPU,除了降低低端市场的成本,没有其他的优势。目前主流GPU的半导体数目远大于CPU,而且彼此之间有不可替代性,加上GPU的性能还有提高的余地,CPU想集成GPU,岂不是老虎吃大象?
不是做3D开发的,不过在我看来OpenGL, DirectX不就是对为3D程序的开发提供额外的抽象层次,开发者面对的是API,API来处理软件或者硬件加速。对于只和API打交道的开发者来说,软件或者硬件加速的问题基本和他们无关。同时我们可以说游戏引擎只不过是另一套API而已,讨论来讨论去,作者讨论的是一个基本只和游戏引擎开发人员有关的问题? |
|