异构计算,PC效率的提升之道
硬动态
自第一台电脑诞生以来,CPU就一直领衔整个运算系统的主角。虽然当前CPU的性能、功能与最初CPU相比已经是不可同日而语,几乎能进行任何处理和任何操作,但传统的架构仍成为了CPU在并行计算以及高精度浮点运算上能力提升的瓶颈。在这种情形下,人们对PC的关注度逐渐从CPU向GPU转移。不过由于应用环境的制约,很长一段时间里GPU的应用只限于图形渲染、视频处理, GPU并行处理的优势往往得不到充分发挥。那么怎么解决不互助的问题呢?答案就是异构计算!
异构计算,拥有更高效的运算效率
何谓异构计算?它主要是指使用不同类型指令集和体系架构的计算单元组成混合计算系统的一种电脑系统运算方式。在我们熟悉的PC领域,最常见的两个使用不同类型指令集和体系架构的计算单元就是CPU和GPU。换句通俗的话说:在一个系统中,让CPU和GPU协同处理各自领域内最擅长的计算,两者相互取长补短,从而让整体系统实现最佳、最优化的性能。这就是异构计算设计的初衷。
要透彻理解异构计算的价值和思路,我们可以用送餐做一个更加直观的类比。目前不少快餐店都有外送服务,不过你细心观察会发现快餐店的外送服务大多采用摩托车或电动车来配送,很少用货车送餐。货车最大的优势就是可以运载的数量多,即便是需要运载1000份快餐送往5个或10个地方相信是没问题,但如果是1000份中有200份送到一个单位而其余的800份要送800个地方呢?虽然用货车配送也可以做到但会有效率上的问题。这就类似于CPU运算数据的模式,处理器为了提升效率,可以增加核心数量或是提高频率,这样虽然可以改善效率,但总会有上限的问题!因此,最佳的方案就是对企业大宗客户订餐用餐车配送,而针对个人订餐则采用摩托车或电动车的灵活配送方式——GPU的流处理器就如同配送用的摩托车或电动车,每个处理单元能以最快的方式将数据送达每个地点,目的就是提升运算的效率!
这种灵活的配送架构,实际上可以将其视作一种入门的“异构”化。芯片的异构化演进就是类似的道理,当频率的不断提升到达上限之后、增加内核又要提升功率的今天,只有异构化才是变革的出路。

硬件厂商在异构计算上的发展
目前异构计算的硬件发展上,主要有两个方向。第一个是将GPU内核集成到CPU芯片上,目前AMD和英特尔两大处理器厂商均采用这个方案。另一个方向则是利用GPU擅长对浮点运算进行并行处理的特点,将其用作矢量处理器,这也就是NVIDIA所倡导的面向通用计算领域的CUDA方案。
AMD的APU方案
最早表示要开发CPU+GPU异构多核处理器的是AMD公司,它在2006年10月提出了Fusion方案:在一个芯片内分别集成一个GPU和一个CPU,这就是APU的最初方案。目前AMD的APU处理芯片已经发展到第三代——Trinity。Trinity APU作为AMD的最新融合技术和异构计算的结晶,融合GCN架构的Radeon HD 7000系独立显示核心,整体性能相比同等级Llano APU提升50%以上,功耗基本保持不变,因此在异构计算方面更具优势。目前,AMD正致力于搭建起异构计算的开放生态环境,以促使异构计算得以迅速发展。只要更多的异构化软件或者方案出现,AMD就很容易在异构化的计算中获得优势。
英特尔从Larrabee架构到IVB架构
英特尔虽然推出了GPU+CPU的处理器,不过英特尔整合的GPU与CPU并不能一起实现并行处理运算。不过在之前,英特尔曾专门开发了一套面向可编程的显示计算通用架构芯片的全新架构,即Larrabee架构。按照英特尔的设想,可编程的显示计算通用架构会在未来应用中占据越来越重要的地位,并逐步取代现在GPU的地位,最终,CPU和GPU将合二为一,成为一个全新的硬件。
或许基于市场策略考虑的原因,Larrabee架构目前没有真正推广开来,反倒是英特尔处理器设计越来越趋向于AMD APU所采用的方式。其最新的IVB处理器已经支持GPU通用计算的两大API——OpenCL和DirectCompute,这或许就是Larrabee架构的结晶之一!
英伟达的CUDA平台
很早以前, 英伟达就认为GPU较CPU具有更强的浮点运算能力以及更大的带宽等优势,未来GPU将越来越多地取代CPU的数据处理职能。不过由于没有x86架构的处理器产品,因此英伟达提出了从GPU加速应用角度考虑的GPGPU(通用图形处理器)概念。英伟达的Tesla系列处理器就是此概念下的产品。
为了更好推广GPGPU概念, NVIDIA专门定制了一个具体的解决方案,即CUDA。CUDA是一个完整的解决方案,包含了API和C语言编译器等。整个CUDA平台是通过运用显卡内的流处理器进行数学运算。此外, NVIDIA下一代Maxwell图形核心中也会包含ARM处理器,再加上NVIDIA逐步推进的“丹佛计划”,异构计算很可能在下一波NVIDIA的产品中全面爆发。


无处不在的异构计算应用
异构计算并不神秘, 它在服务器上的应用远远超过我们想象的范围。在各种科学、工业或商业运用都受到肯定,只要任何你想得到的作业环境几乎都有异构计算的存在,举例来说电影工业、学术研究、医疗领域、气象仿真和图形开发等等,都需要使用大量GPU并行处理技术来运算。在第39届Top500中就有58套系统采用异构系统,有53套采用NVIDIA的GPU加速处理器,只有两套采用AMD的Radeon以及IBM的PowerXCell 8i。如我国千万亿次超级计算机“天河一号”就连接了上万个美国英特尔和NVIDIA公司制造的CPU和GPU,属异构混合架构。天河一号的配置是14336颗英特尔六核至强X5670 2.93GHz CPU和7168颗NVIDIA Tesla M2050 GPU及2048颗自主研发的八核飞腾FT-1000 CPU。
也许大家都觉得采用的异构计算架构只属于大型计算机范畴。其实对于个人计算机而言,异构计算的早就来临,比如AMD的APU处理器就是针对消费领域的异构处理方案。APU的应用能够提升我们日常看视频和图片的效果,特别是在未来的HTML5时代,异构计算能力可以让网页渲染速度更加流畅,可提升HTML5网页下的各种动画效果。未来异构计算还将会应用于人脸识别、生物识别等尖端技术,APU通过异构计算下的CPU与GPU相互配合,也将极大地提升并行计算效率。随着云计算的普及,个人终端的重心将会越来越倾向综合计算能力,异构计算解决了以往效能的瓶颈,能够让产品的应用体验得到进一步提升。这就是异构计算带来的想象空间。
大势所趋的异构计算
异构计算带来的发展机会日益凸显,无论是移动、桌面还是云计算各个平台,无论是在芯片级、机器级还是数据中心级,单位能耗所提供的性能、可扩展的并行处理能力等都成为异构计算的发展舞台。从长远来看,CPU、GPU这种协作处理方案已经是大势所趋,在不同的应用领域发挥越来越多异构运算优势,它们会在不同的应用领域发挥各自的优势或特长,谁也无法取代谁。这正是“你中有我,我中有你”!而从现在业界几大上游厂商来看,AMD早已有现成的产品,NVIDIA在下一代也会推出民用级异构计算的处理器,或许民用异构计算时代会比我们想象的来得快!