分类: IT业界
2012-04-22 15:48:14
硬件巨头态度分析——AMD
AMD
众多芯片厂商中,AMD算是对于持异构计算发展走在最前列的厂商了。从它历经数载“卧薪尝胆”开发APU产品,我们就能看出AMD对异构计算未来市场的“野心”。目前,AMD已经发布了多个系列的APU产品,其中又以代号“Llano”的A系列APU产品最为受到玩家们的关注。
APU的设计思路是将先进的CPU和GPU融合在一起,使其拥有了CPU在复杂顺序计算和GPU在大规模并行计算中的双重优势。同时,通过硬件调度逻辑和软件层实时智能分配CPU和GPU的负载使得APU相对于目前多核CPU的性能有明显提高。目前一代的APU产品内融合了Radeon HD 6000等级的GPU模块,在性能堪比同级别独显的同时,也保留了HD6000系列独显的特性,可完美支持OpenCL和DirectCompute通用计算规范,为实现异构计算打下了良好的基础。
APU的这种设计思路完全符合异构计算的标准,得益于APU产品的诞生,我们现在只需要一颗芯片便可实现CPU与GPU异构计算的效果了。
值得注意的一点是,现在AMD放出的新版驱动包内已内置了OpenCL驱动,用户只需进行下载并正确安装,就可以利用AMD显卡实现OpenCL软件的异构加速计算了。
笔者分析,AMD之所以如此大力支持异构计算的原因,一方面是顺应处理器业界时代的发展,而更重要的则是他们已经推出了主打异构计算的APU产品。AMD希望借此机会打破Intel对CPU指令集的垄断地位,利用自身GPU方面的优势另辟蹊径,主导未来处理器的发展方向,从而使自己站在更有利的位置上战胜竞争对手。
硬件巨头态度分析——NVIDIA
NVIDIA很早以前就已经预见到了异构计算的重要性,不过苦于得不到x86授权而无法开发x86架构的CPU,只好在自己擅长的GPU方面下功夫。他们从GeForce 8时代就开始走上了GPGPU的发展道路,并开发出了CUDA。但是CUDA是一种基于CUDA架构的私有标准,非CUDA架构的GPU(例如AMD GPU)无法使用。
而且CUDA只是面向GPU通用计算,而OpenCL和Directcompute则在面向GPU通用计算的同时,还支持CPU+GPU异构运算。因此NVIDIA在不断发展自身CUDA的同时,也让自己的产品同时兼顾了对OpenCL和DirectCompute的支持。
另外,虽然NVIDIA无法得到x86授权,但是他们却得到了ARM的授权,可以开发ARM架构的处理器。目前,NVIDIA已经开发出了Tegra系列处理器,并提出了“丹佛计划”。尽管现在的Tegra 1、Tegra 2和尚未上市的Tegra 3均不支持异构计算,但是谁又能保证日后的Tegra 4、Tegra 5不会支持呢?移动领域处理器产品的性能本来相对PC领域就弱,如果能够利用异构计算而提高效能又何乐而不为呢?
“丹佛计划”也同样值得我们关注,据悉NVIDIA将会在2013年推出代号为“Maxwell”的产品,该产品内部将会集成GPU以及ARM架构的CPU。目前关于这颗ARM架构CPU在“Maxwell”里的作用还没有确切的消息,不过笔者推测这与NVIDIA想通过异构计算来提升效能肯定不无关系。
从NVIDIA对显卡产品的设计上我们也可以看出,尽管他们推出了自己的私有GPU通用计算标准,但仍然对开放性的异构计算规范积极的提供了支持。而在移动处理器领域NVIDIA也在向着异构计算的方向努力着。由此我们可以认为,对于异构计算这项技术来说,NVIDIA站在支持行列已是确认无疑的了。
硬件巨头态度分析——ARM
如果你只关注PC领域DIY的话,那么可能对ARM这家企业不是很了解。其实ARM(Advanced RISC Machines)是微处理器行业内的一家知名企业,他们设计了大量高性能、廉价且低功耗的RISC处理器和相关技术及软件。
目前,ARM设计的产品主要用于移动领域,在手机处理器以及平板电脑处理器市场占有非常高的市场份额。高通、德州仪器、三星、NVIDIA等厂商均购买了ARM架构的授权,以此来生产自己的移动处理器。我们熟悉的iPhone、iPad以及众多Android系统的移动产品都采用了ARM架构的处理器。在移动设备领域里,它的地位甚至可以说相当于PC领域的Intel。
那ARM也要做异构计算产品吗?答案是肯定的,ARM媒体处理事业部的首席科学家兼副总裁Jem Davies在今年6月的AMD Fusion开发者峰会上曾明确表示:ARM下一步就要做异构计算,这个异构计算跟AMD的很类似,只不过AMD走在了前面。
可以预见,一旦ARM的异构计算处理架构研发成功,那么造成的影响将会是相当巨大的。那些购买ARM架构授权的移动芯片巨头们届时都将会推出自己的异构计算处理器。到了那时,我们身边的异构计算设备将不再仅限于PC,因为这一技术还将应用到我们裤兜里的智能手机、平板电脑等移动设备中。
当然,ARM追逐异构计算也是有原因的。笔者分析,ARM的立身之本就是设计芯片尺寸尽可能小、功耗尽可能低的高性能处理器,而AMD的APU则正好与ARM的设计思路相吻合。当然,ARM架构的移动处理器目前还不具备APU这样的先进性。ARM处理器的核心与Mali、ImaginATIon、PowerVR以及NVIDIA的移动图形核心还不能共享缓存,并行处理能力也较弱。两者只能分工,无法合作。因此,ARM必然会向往APU的设计,希望通过异构计算使ARM未来的处理器更加高效。
硬件巨头态度分析——Intel
尽管Intel是目前PC领域无可争议的芯片巨头,但是在异构计算支持上他们显然没有前几家厂商那样积极。到了现在,Intel给世人表现出来的态度仍然是固守x86指令集,并且坚称x86能简化软件开发。对于异构计算,他们似乎漠不关心,选择了沉默。
事实上,Intel在AMD之前已经推出了“CPU整合GPU”设计的产品。当然,Intel在该类产品最初的设计思路上与AMD还是有不少区别的,“Clarkdale”(第一代Core i3/双核i5产品)的设计思路与当初Pentium D的双核设计做法类似,并非原生的单芯片解决方案。它们有着两个独立的芯片(CPU和GPU),仅仅是两个功能模块的叠加,不能实现异构计算。
今年第二代产品“Sandy Bridge”的出现,实现了将CPU与GPU封装在同一颗芯片上。不过由于Intel在GPU方面的劣势,其内建的Intel HD Graphics仍不能支持OpenCL和DirectX 11,不支持DirectX 11自然也就无法支持完整功能的DirectCompute。因此,可以说Intel的“Sandy Bridge”想要单独实现异构计算仍旧不可能实现。
当然Intel其实正在低调的弥补这一不足。据悉,Intel将会在明年3、4月份问世的下一代“Ivy Bridge”处理器内建的GPU上加入对OpenCL 1.1和DirectX 11的支持。
笔者认为,Intel看似并不在意异构计算的发展,主要是因为他们的产品还无法支持异构计算。为了推广现有产品,Intel只能故意表现出一副“异构计算无用”的态度,继续强调他们的优势项目——纯CPU性能。不过从目前透露出的一些“Ivy Bridge”消息,我们也可以看出Intel正在尽快完善自家的产品,以满足未来异构计算的需要。由此看来,Intel其实只是嘴上对异构计算不屑一顾,实际上是支持其发展的。
“异构百核”由何而来?
不熟悉DIY的消费者初此听到“异构计算”这个词可能会感到很陌生,其实这个概念很早以前就已经存在了,因为它起源于上世纪80年代中期。简而言之,异构计算就是让不同架构设计的处理单元可以实现共同运算,由此实现效率最大化。由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,一直以来都是并行、分布计算领域中的研究热点之一。
尽管异构计算概念的诞生距今已有近30年历史,但是在PC领域,还是由AMD的融合产品Fusion APU推出后才受到了消费者们的广泛关注,它首先实现了内部的CPU单元与GPU单元共同完成运算任务。另外,AMD为了让大家便于记忆和理解,还为APU的这个特色功能起了个比较通俗易懂的名字——百核加速;意思就是可以利用APU内建的数百个GPU处理核心和CPU的四个核心进行协同加速计算,从而达到性能大幅提升的目的。
我们知道,CPU适合复杂指令调度、循环、分支、逻辑判断以及执行等程序任务,而GPU则适合可以拆分成简单指令的重复的高度并行数值计算。在此之前,GPU的应用大多局限在图形显示领域,这显然是“屈才”了。如果将GPU的运算能力运用到更多通用计算领域,让它与CPU相互补足发挥出最大性能的话,就目前来看,这将成为PC领域最好的异构计算实现方案。理论上来说,这样的方案能使PC变得更加高效,给用户带来更好的使用体验。
当然,异构计算在PC领域还算是一个比较新的技术,软件支持还处于发展阶段。这本来很好理解,但近期却出现了一些围绕“异构百核”产生了一些争论。由此,今天笔者就与大家一起来探讨一下异构计算和百核加速到底能给我们带来什么。
软件支持很关键 异构计算API分析
异构计算在硬件层面上来看,的确在理论上能够有效提升PC的运算效能。但光有硬件是不行的,毕竟我们用的是软件,而软件对该技术的支持度则变得非常值得关注。异构计算作为PC领域新兴的技术,目前支持它的成品软件还有限,这一点完全可以理解。但是在软件开发中至关重要的API上,支持的情况又是怎样呢?这对该项技术能否变为主流或普及有着极其重要的影响。
由于CPU与GPU架构完全不同,软件要在GPU上运行,就必须通过特定的环境或接口。通俗来说,就是需要一种工具,把程序员的语言翻译成GPU听的懂的语言。这个工具,就叫做GPU通用计算API。
其实随着业界对GPU通用计算技术的认可与重视,不同的厂商早开始提供不同的GPU通用计算API解决方案。其中NVIDIA最先推出了CUDA,但是CUDA毕竟是一种私有标准,非CUDA架构的GPU(例如AMD的GPU)无法使用,这就带来了很大的局限性。除了CUDA外,更为重要的显然是OpenCL,它是由苹果提出并得到业界多家厂商支持的开放标准。
但是OpenCL的成员中并不包括微软,作为业界的领军者之一,微软自己推出了DirectCompute,并集成在DirectX内。当然DirectCompute也是一种开放的标准,由于微软在业界的地位,NVIDIA和AMD均提供对DirectCompute的支持。接下来,我们就来了解一下这两大API的情况。
苹果领衔的OpenCL
OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境。它很便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心CPU、GPU、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
目前,索尼Vegas Pro视频编辑、Viewdle Video Uploader视频处理、ViVu VuRoom视频会议、MotionDPS vReveal视频增强等应用都已经完全支持OpenCL异构计算加速了。
OpenCL最早由苹果公司于2008年6月的WWDC大会上提出,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。目前,3Dlabs、AMD、苹果、ARM、Codeplay、爱立信、飞思卡尔、Graphic Remedy、IBM、ImaginATIon Technologies、Intel、诺基亚、NVIDIA、摩托罗拉、QNX、高通,三星、Seaweed、德州仪器和瑞典Ume大学等重量级成员已加入OpenCL工作组。
各行各业如此之多的厂商均加入了OpenCL工作组,该API在开发者们心中的地位可见一斑。像我们熟悉的Intel、NVIDIA和AMD都是这个标准的支持者,只不过微软由于主推自家的DirectCompute,所以并不在其列。
微软领衔的DirectCompute
DirectCompute也是一种用于GPU通用计算的应用程序接口,由微软开发和推广,集成在DirectX内。其中DirectX 10内集成Directcompute 4.0;DirectX 10.1内集成Directcompute 4.1;目前最新的DirectX 11内集成Directcompute 5.0。它们之间的区别在于DX10/DirectX 10.1中只包含了Directcompute的一个子集,功能有限,而DX11才具备完整的DirectCompute功能。
目前,NVIDIA方面的Geforce8系列、9系列、GT200系列、GT400系列、GT500系列、ION系列以及AMD方面的Radeon HD2000系列、Radeon HD3000系列、Radeon HD4000系列、HD5000系列、HD6000系列显卡均提供对Directcompute的硬件支持。其中GT400系列、GT500系列、HD5000系列以及HD6000系列显卡能够支持完整DirectCompute功能的DirectCompute 5.0版本。
此外,DirectCompute还是Windows 7操作系统里相当重要的一个组成部分。在Windows 7系统中,CPU与GPU组成了协同处理环境。它们的分工是,CPU运算非常复杂的序列代码,而GPU则运行大规模并行应用程序。因此,在Windows 7中,CPU与GPU的功能变的更加平衡。Windows系统的支持,也标志着主流桌面级操作系统已经迈入异构计算时代。