异构多核架构下的智能手机平台

 

2007年秋,在PC及服务器中占主流地位的x86处理器终于进入了4核时代。

  AMD公司的4核处理器在2007年9月上市,英特尔公司也预定在2007年内推出单芯片封装的4核产品。两家公司都明确表示未来将会提供集成8个CPU内核的处理器产品。但是,多核化只不过掀开了处理器内部架构变革的序幕,各厂商正在摸索新的道路。

  在半导体行业中,很早就有这样的说法:“不断集成更多CPU内核的多核架构,并不能使处理器的性能像期待的那样得到提高。”但是,在AMD和英特尔公司转向多核架构的2004年,除了依赖这种手段以外再没有其它出路。

  多核化是无奈之举

  以前,半导体工艺的发展可以带来“一举三得”的效果,包括提高晶体管速度、降低功耗和缩小芯片面积。但是,当制造工艺发展到90nm或65nm时,泄漏电流的问题凸显,沿用以往的内部架构来提高频率的方法难以奏效。为了在不提高工作频率的条件下实现性能的提升,只能增加CPU内核的数量。

  在有许多客户机要求进行并行处理的服务器中,多核架构容易获得比较好的效果。但是,问题发生在根据用户的要求运行应用软件的客户机里。由于可能同时运行的软件数量有限,即使可以将各个软件分割以后并行执行,但软件中必须串行执行的部分仍然会妨碍处理性能的提升。许多相关人士认为,在目前这种架构的PC中,4~8个内核可能是多核处理器能够获得较好性能提升效果的极限。

  集成多个不同类型的内核

  另一方面,提供新体验的高级用户接口、动态及静态图像分析等新的应用软件的不断出现,对处理器的处理性能提出了更高的要求。如果处理器仅在目前以CPU内核为主的架构上继续发展,这些新应用可能将无法实现。

  2007年9月,英特尔公司董事会名誉主席Gordon Moore在英特尔秋季技术峰会上表示:“众所周知,摩尔定律在物理上是有极限的。大约10年或15年以后,摩尔定律将会遇到根本性障碍,而退出历史舞台。”反过来说,Moore认为,半导体工艺的发展很可能还会像以前那样再延续10年左右。在把工艺发展当作技术推动力的同时,为了越过横亘在多核架构前面的壁垒,处理器应该采用什么样的内部架构呢?

  业界想到的方案是采用异构处理器架构,即将不同类型的内核集成在一起。在这种架构中,CPU内核所不擅长的浮点运算及信号处理工作,将由集成在同一块芯片上的其它可编程内核执行。相关人士认为,集成多个不同类型内核的异构多核架构将成为今后处理器的主流架构。

  从同构到异构通用处理器将实现SoC化

  图形芯片生产商Nvidia公司的总裁兼CEO Jen-Hsun Huang指出:“目前,图形芯片具有的浮点运算性能已经大大超越了处理器。如果能够灵活运用,随着图形芯片的发展,将会涌现出各种各样新的应用。”在占据PC及服务器主流地位的x86处理器中,围绕GPU(图形处理单元)展开的相关研发工作突然活跃起来。

  GPU的集成和通用化取得进展

  围绕GPU的研发方向主要有两个。首先,是将GPU内核集成到处理器芯片上。AMD公司在2006年7月收购了加拿大的GPU生产商ATI科技公司,并提出了将ATI公司的GPU内核集成到处理器上的Fusion处理器方案。另外,英特尔公司在2007年4月明确表示,正在开发矢量处理器Larrabee(开发代号),其中集成了许多专用于浮点运算的CPU内核。

  另一个研发方向是,利用GPU擅长对浮点运算进行并行处理的特点,将其用作矢量处理器。这就是面向通用计算领域的GPGPU(General Purpose Computing on GPU),NVIDIA公司从2006年下半年已陆续推出相关的硬件产品及软件开发工具(见图1)。

  图1 围绕矢量处理器展开的研发活动

  利用多核化暂时回避危机

  以前,处理器厂商主要依靠采用更先进的工艺来提高处理器的处理性能,但现在,他们遇到了难以逾越的障碍——功耗在不断增大。通过采用更先进的工艺,他们可以缩小晶体管的体积而提高开关速度,并不断提升芯片的工作频率,但这会使功耗超出设备允许的范围。于是就出现了多核解决方案,即利用新工艺的高集成度优势,将多个CPU内核集成在一块芯片上。2004年春,英特尔和AMD公司相继中止了单核产品的开发工作,转向开发集成多个CPU内核的多核产品(见图2)。

  图2 利用新工艺增加CPU内核的数量而不是提高频率

  目前市场上销售的PC处理器或服务器处理器大多集成有2个以上的CPU内核,4核架构也已经上市。2007年9月,AMD公司的4核Opteron服务器处理器(开发代号为Barcelona)上市。在PC市场,英特尔公司的4核Penryn(开发代号)PC处理器和AMD公司的4核Phenom PC处理器都在2007年11月相继上市。而且,这两家公司均表示计划在2008年~2009年提供8核产品。这些产品都采用同构处理器架构,处理器中集成的是同类型的CPU内核。

  同构处理器出现极限

  但是,以前就有人指出,通过增加CPU内核来提升处理器的性能,存在一定的极限。达到极限值之后,性能就无法再随着内核数量的增加而提升了。这就是著名的Amdahl定律:即使能够不断增加同类型的CPU内核以加强并行处理能力,但整个系统的处理性能仍然会受到软件中必须串行执行的那部分的制约。

  比如,工艺从90nm发展到22nm时,一块芯片中集成的晶体管大约能增加到16倍。但是,当利用这些晶体管将芯片中集成的CPU内核由1个增加到16个时,芯片的整体处理能力却不会简单地提高到16倍。根据Amdahl定律,当软件中必须串行执行的部分占到20%时,整体处理能力只能提高4倍(见图3)。这只是简化计算后得到的结果,还没有考虑用于保持高速缓存相关性时的同步时间,以及多个内核集中访问内存时的待机时间等。如果将实际工作时存在的这些等待时间都考虑在内,整体处理能力的提升很可能还不到原来的4倍。

  图3 Amdahl定律

  在像服务器那样同时产生多个处理请求,且各处理所涉及的数据都相互独立的应用中,必须串行执行的软件部分很少,针对这类应用的处理器就可以通过集成更多的同类型内核来提高处理性能。Sun微系统公司的UltraSparc T2已经上市,这种服务器处理器集成有8个CPU内核,每个内核包含8个线程,即拥有64线程的并行处理能力。

  但是,PC那样的客户机是以执行一个用户的处理请求为主,需要同时启动的应用软件数量很少。而且,即使想要将应用软件变为并行处理,也很难把处理过程中相互独立的部分抽取出来。面向嵌入式设备的处理器厂商普遍认为:“对于客户机中使用的处理器来说,多核化可能发挥效果的极限是4~8个内核。”多核化只不过是一种暂时回避功耗危机的手段。

  采用异构处理器摆脱困境

  为了摆脱上述困境,处理器厂商注意到,可以利用GPU来应对同构多核处理器遇到的难题。

  最近,在苹果公司的iPhone等产品中可以看到,用户对于提高画面质量的要求日益高涨。各种各样的设备都试图采用新的用户接口,以带给用户简单、顺畅、直接的操作体验。另外,许多游戏软件中常常需要进行实时计算,以实时显示游戏里虚拟空间中物体的坐标。有时,还需要利用现实世界的物理规律计算虚拟空间中的物体运动情况,并将其以接近真实的方式表达出来。为了支持这些新应用,处理器厂商开始考虑要发挥GPU的计算能力。

  近几年来,GPU理论上的浮点运算性能已经大大超越了通用处理器。NVIDIA公司的GeForce 8800 GPU浮点运算性能的最大值已经达到500GFLOPS以上,而英特尔公司的Core 2 Duo处理器的浮点运算性能只有50GFLOPS左右。按照每单位功耗的浮点运算性能进行比较,GeForce 8800的浮点运算性能约为Core 2 Duo的5倍。

  处理器厂商关注GPU的另一个理由是,NVIDIA公司和已被AMD收购的ATI公司都取消了集成多个专用电路的开发方针,这些专用电路主要用于执行图形处理流水线中的各级处理。这两家公司转向使用集成多个通用运算单元的架构,采用这些通用运算单元来支持流水线的各级处理。于是,除了图形处理以外,这种具有新架构的GPU也能被方便地应用于其他领域。可以说,目前的GPU是优化了浮点运算的矢量处理器。

  将这种新的GPU内核与CPU内核集成到一起以后,面向并行处理的应用软件所要求的浮点运算及定点运算将由GPU执行;而CPU内核则致力于执行传统处理器的主要任务,即运行操作系统、执行商务软件中的整数运算等。这样,芯片就可以高效地执行和处理大量独立数据的任务,如:面向多个运动对象的计算;对显示画面进行优化的光线跟踪处理(光线渲染);图像的编/解码处理等。

  这样一来,处理器厂商不再需要不停地增加处理器中集成的同类型CPU内核的数量,而可以把重点转移到异构多核处理器架构上,将GPU内核和CPU内核集成在一起。也可以说,x86处理器正在向SoC发展。英国Imagination技术公司CEO Hossein Yassaie表示:“在对功耗及成本要求非常严格的嵌入式设备中,很早以前就开始遵循‘利用正确的内核执行正确的处理’的设计方法。现在,这种方法对于PC那样的通用计算设备也变得越来越重要了。”

  CPU和GPU的集成取得进展

  最早表示要开发异构多核处理器的是AMD公司。GPU的应用得到扩展后,就有越来越多的数据需要通过CPU内核和GPU内核进行交换,因此,为了拥有更宽的通信路径,方法就是将这两种内核集成在同一块芯片上。

  在该公司提出的第一代Fusion方案中,CPU内核和内存之间、GPU内核和内存之间均使用交叉开关进行连接,并且,两种内核通过共享内存进行数据交换。该公司表示,在第一代产品之后,将会加强CPU内核和GPU内核的集成(见图4)。该公司高级副总裁兼CTO Phil Hester表示:“最终目标是制成将CPU内核和GPU内核融合为一体的新型架构。”

  图4 AMD公司提出分阶段推进CPU内核和GPU内核的集成方案

  异构多核架构中能集成的不只是GPU内核,也可以将进行网络及视频等处理的内核集成到一块芯片上。英特尔公司正在推进Tolapai(开发代号)SoC的开发工作,这种SoC将主要用于各种可联网的嵌入式设备。在这种SoC中,除了支持86指令集的CPU内核之外,还集成有内存控制器、Gb以太网及PCI Express接口电路、用于执行各种编码处理的安全服务单元(Security Service Units)等。英特尔公司所设想的SoC,是将可编程内核或FPGA等和CPU内核集成到一起。这些可编程内核或FPGA就像安全服务单元一样,是专为特定领域内大量存在的运算而特别定制的。该公司计划将Tolapai作为第一批SoC产品推出,然后再依次推出面向各种应用的SoC。

  2006年,AMD和英特尔将面向低功耗设备的处理器业务分别出售给了Raza微电子公司和Marvell半导体公司,但这并不意味着这两家公司要退出嵌入式设备市场。这两家公司的新目标是,不仅要将集成了支持86指令集CPU内核的SoC用于PC及服务器,而且还要扩展其应用到数字消费设备以及便携式信息终端等领域。

  改变内核数量以适应各种应用

  今后,这两家公司将为各种应用提供具有类似内部架构的SoC产品。其中,CPU内核的数量以及GPU内核里用于运算的内核数量等,都可以随要求的运算性能和被允许的功耗做出相应的调整(见图5)。这两家公司的计划是,在便携式设备中使用低功耗CPU内核,在固定式设备或PC等产品中则使用普通CPU内核。预计,在面向PC的SoC中集成的GPU内核,也可能在减少了运算单元的数量之后,集成到面向便携式设备的SoC中。

  图5 CPU内核和GPU内核的数量都可以灵活调整

  AMD计划在2009年之后的处理器产品系列中分别使用2种CPU内核。面向台式PC、固定式数字消费设备以及高性能服务器的处理器产品,将采用Bulldozer CPU内核;面向便携式信息终端、笔记本电脑等的处理器产品,则计划集成低功耗的Bobcat CPU内核。

 

 

 

 

 

最近,Khronos公布了OpenCL(Open Computing Language)的第一个测试版本,一经发布便在通用计算领域掀起来轩然大波!OpenCL是由苹果公司发起,业界众多著名厂商共同制作的面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境。便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

  那么OpenCL与NVIDIA的CUDA架构是什么关系,是否是外界认为的竞争关系?目前众多的通用计算标准中,比如NVIDIA的CUDA、Khronos的OpenCL、AMD的Stream,CAL、Brook+、微软下一代的Computer shader等,他们之间有什么异同,看完这篇文章,相信你就会有一个大概的了解……

  OpenCL来了!

  Khronos是一个开发组织,著名的OpenGL就是出自Khronos之手,Khronos有很多厂商组成,OpenCL工作组同时也是OpenCL的一个协调机构,来负责制定OpenCL的规格、架构等等各方面。业界最主要的和图形或者和计算相关的厂商都是Khronos的成员。

  OpenCL实际上是针对异构系统进行并行编程的一个全新的API,OpenCL可以利用GPU进行一些并行计算的工作。我们知道,图形里面有很多API,比如OpenGL是针对图形的,而OpenCL则是针对并行计算的API。 OpenCL开发人员可以利用GPU和CPU的计算能力,把GPU和CPU异构的系统运用在很多并行计算的领域。

  OpenCL对于业界来说是非常重要也是非常好的一个标准,这样业界有一个共同的标准可以利用GPU的强大计算能力,然后应用在图形以外各种各样的并行计算方面。NVIDIA公司的副总裁Neil Trevett是OpenCL工作组的主席,引导很多OpenCL的开发,NVIDIA公司很多员工都在参与这项工作。

  OpenCL最早由Apple公司提出的,OpenCL发起NVIDIA就和Apple公司进行非常紧密的合作。OpenCL开发的过程中,技术平台均为NVIDIA的GPU,实际上OpenCL是基于NVIDIA GPU的平台进行开发的。另外OpenCL在大概两个多月以前进行了第一次演示,也是运行在NVIDIA的GPU上。

  对于Apple公司来说是把GPU计算当成一种未来的趋势,他们非常重视OpenCL,在新一代的产品里面选择了最适合于OpenCL运行的平台。所以新一代苹果的笔记本电脑全都采用了NVIDIA的平台,不管是MacBook Pro还是MaBook。实际上这也是从另外一个方面证明NVIDIA的GPU对于OpenCL的支持。

  OpenCL与CUDA并非敌对关系

  很多人对什么是CUDA可能还有一些疑虑,并没有搞清楚CUDA到底是什么。实际上CUDA最主要的包含两个方面:一个是ISA指令集架构;第二硬件计算引擎;实际上是硬件和指令集。 也就是说我们可以把CUDA看做是与X86或者cell类似的架构,但是是基于是GPU,而不是传统的CPU。

  这个其实很好理解,把它和传统的和CPU的架构比较下相信就更容易理解,传统X86是包含一套指令集和执行X86各种各样的CPU,对于CUDA也是一样,CUDA有一套指令集ISA,还有执行指令集各种各样的硬件引擎。CUDA到目前为止包含了一个C语言的编译器,当然CUDA架构还可以支持其他的API,包括OpenCL或者DirectX,同时CUDA还会有其他的语言,包括Fortran、Java、Python等各种各样的语言,可以说CUDA架构是原生的,专门为计算接口而建造的这样的一个架构,这种硬件架构包括指令集都是非常适合于这种并行计算,为异构计算而设计的一整套的架构。


OpenCL与CUDA的关系

  上图很好的解释CUDA和OpenCL的关系,他们并不是冲突关系,而是包容关系。OpenCL是一个API,在第一个级别,CUDA架构是更高一个级别,在这个架构上不管是OpenCL还是DX11这样的API,还是像C语言、Fortran、DX11计算,都可以支持。作为程序开发员来讲,一般他们只懂这些语言或者API,可以采用多种语言开发自己的程序,不管他选择什么语言,只要是希望调用GPU的计算能,在这个架构上都可以用CUDA来编程。

  CUDA编程的道理和CPU的编程很类似,比如有了X86的指令集,又有X86各种各样的CPU,那么我们只需要对这个指令集编程即可。X86架构上有各种各样的开发工具,当然也有C语言,Fortran语言,Python语言,Java或者以前的Pascal语言,不论你使用什么语言进行开发,最后还是在X86的架构上执行。CUDA也是一样,有了CUDA的指令集,有了支持CUDA的硬件,我们就可以采用不同的途径来进行开发,比如可以采用OpenCL或者DirectX这样的API,也可以用C语言或者Fortran或者Java开发,最终都可以在CUDA架构上运行。

 

  转载感言:

   智能手机平台的多核时代势在必行,并且单纯openGL处理已不能满足人们对高品质渲染的需求,异构框架下的openGL图像处理加openCL的并行计算什么时候会到来?

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值