面向未来计算-异构开发技术社区

异构系统架构(Heterogeneous System Architecture)

 

异构系统架构(HSA) : 面向未来应用的创新计算架构

今天的计算技术面临挑战

计算产业的发展陷入了四处挚肘的窘境,推动计算技术发展的努力不得不在多个互相牵制的因素上仔细权衡。首先,降低功耗对各种类型、各种规模的计算都变得日益关键。消费者希望笔记本电脑、平板电脑、智能手机的电池续航时间更长、尺寸更小、分量更轻。与之类似,数据中心的用电需求和制冷成本不断上升。另一方面,我们不断追求更高的计算性能,为用户提供更炫酷的体验。我们希望通过更加自然的人机界面(包括语音和手势)来控制设备,我们希望设备可以处理无休止膨胀的数据(从照片、录像一直到“云”上的一切内容)。为了提供这些功能,程序员的工作效率变成了必须确保的关键因素。为此,必须使得软件开发者很容易地通过原来所熟悉的、强大的编程模型,就能充分利用新的计算能力。最后,应用软件需要支持和兼容广泛的硬件平台也日益变得重要。对开发者而言,随着平台种类的不断增多,目前反复移植代码的惯常方法必然难以为继。

计算产业需要一种新的发展思路–让计算机架构更加高效, 才能在上述需求交织的复杂环境中前行。这种新的思路需承诺在功耗、性能、可编程性和可移植性这四个维度上同时都有改进。

异构系统架构(HSA,Heterogeneous System Architecture)应运而生

计算机发展历程中,为了解决各种特定的问题,不断有互不兼容的计算模块被加入系统,却很少从全局优化的角度加以考察。计算机整体效率不高的现状正是这种设计模式的直接后果。常见情况是软件的计算负载被调度在一个并不适合当前任务的计算设备上低效执行。HSA则展现了一种全新的体系架构,可以适应各种特性的计算任务。

计算机从诞生之日起就配有中央处理器,即执行通用计算任务的CPU。但在过去的二、三十年中,主流的计算系统同时配置了其他计算处理单元,其中最常见的是图形处理器(GPU)。最初,GPU应用于并行化的特殊的图形计算。随着时间推移,GPU的绝对计算能力越来越强,而专用芯片的特点则逐渐淡化,此消彼长的结果是,GPU可以极佳的性能-功耗比完成通用并行计算的任务。

今天数量越来越多的主流应用要求兼具高性能和低功耗的素质,并行计算是达成目标的唯一途径。但是,当前的CPU和GPU是分立设计的处理器,不能高效率地协同工作,编写同时运行于CPU和GPU的程序也是相当麻烦。由于CPU和GPU拥有独立的地址空间,应用程序不得不明确地控制数据在CPU和GPU之间的流动。

CPU代码通过系统调用向GPU发送任务,此类系统调用一般由GPU驱动程序管理,而驱动程序本身又受到其他调度程序管理。这么多的环节造成了很大的调用开销,以至于,只有在任务所需处理的数据规模足够大,任务的并行计算量足够大时,这样的调用开销才是划算的。而其他的调用形式,比如由GPU向CPU发送任务,或者GPU向自己发送任务,在今天则根本不被支持!

为了充分释放并行处理器的计算能力,架构设计者必须打破既有格局,采用新的思路。设计者必须重塑计算系统,把同一个平台上分立的处理单元紧密整合成为不断演进单颗处理器,同时无需软件开发者的编程方式发生重大的改变,这是HSA设计中的首要目标。

HAS创造了一种更佳的处理器设计,展示了CPU和GPU被无缝集成后所带来的益处和潜能。通过HSA,程序可以在统一的地址空间中建立数据结构,在最合适的处理器上创建任务。处理器之间的数据交互不过是传递一个指针。多个计算任务之间通过coherent memory,barrier,和atomic等操作来保证数据的同步(和多核CPU的方式相同)。

HSA 效能初探

AMD的HSA团队分析了Haar人脸检测算法的性能,这是一个广为使用的多级视频分析算法,用于在视频流中识别出人脸。HSA团队对比了基于OpenCL实现和基于HSA实现。HSA版本可以在CPU和GPU之间无缝地共享数据,而无需内存拷贝和缓存刷新,因为任务以极低的开销被调度到合适的处理器上。最终的结果是HSA版本的性能高出2.3倍,而功耗降低2.4倍*。相较而言,无论是多核CPU、GPU、甚至非HSA方式的混合CPU和GPU都无法达到这样的性能水平。同样重要的是,无需转换到迥异的编程模型,仅仅通过C++的简单扩展就可以实现程序。

*硬件配置

- 4GB RAM; Windows 7 (64位); OpenCL™ 1.1

- APU: AMD A10 4600M with Radeon™ HD Graphics

- CPU: 4核 @ 2.3 MHz (turbo 3.2 GHz)

- GPU: AMD Radeon HD 7660G, 6 CU, 685MHz;  

HSA作为工业标准

如果意图在更广泛的应用中被采纳,HSA必须超越自身,不再仅仅是某个硬件厂商的独家解决方案。软件开发者的理想一直是“一次编码,处处运行”,实现这个理想需要具备一个跨平台和跨设备的基础架构。这也是HSA的愿景。HSA基金会由此成立,作为一个开放的工业标准组织,基金会的工作是把计算产业的参与者们联合到同一面旗帜之下。HSA的五家创始会员分别是:AMD、ARM、Imagination Technologies、MediaTek, TI和Samsung。

HSA基金会的目标是协助系统设计者把CPU、GPU这样不兼容的计算单元很好地整合在一起,消除计算单元之间数据共享和任务调用的开销。透过HSA中间语言(HSAIL, HSA Intermediate Language),不同的硬件实现向上暴露出统一的软件接口。HSAIL也是所有底层软件模块、开发工具一致的目标平台。同时,HSAIL足够灵活并且接近硬件,各个硬件厂商可以高效地把它映射到自己的硬件设计上。HSAIL也解放了程序员,后者不必为不同硬件平台裁剪自己的代码,同一套代码可以顺利运行在不同CPU/GPU配置的系统上。

对应用软件透明

HSA成功的一个关键是最小化应用程序移植的代价。从过去的经验来看,要求软件供应商修改代码以适应新的硬件的这种做法充其量只能获得有限度的成功。对于厂商专有解决方案就更是如此了。要成为主流技术,必须降低使用者的门槛。这就是HSA的设计思路。HSA解决方案为应用程序员提供了硬件、接口、通用的中间语言和基本的运行时环境,封装并隐藏了内存一致性,任务调度管理等等复杂的底层细节。

如果主流的编程语言和库支持HSA,数以百万计的开发者凭着现成的代码就可以从HSA中直接获益。AMD将从目前最主流的异构编程语言OpenCL和C++AMP入手,提供相应的基于HSA的开发工具。随后,AMD将和HSA基金会的其他厂商一起拓展相关工具集,使之覆盖广泛的编程语言和实用库,适用于各个领域, 成为主流编程人员易学易用的工具和架构。

欢迎加入HSA基金会

HSA旨在依靠先进的计算架构,创造出更新、更好的用户体验。这套架构将在所有四个关键维度上表现出色:更低的功耗、更高的性能、更好的可编程性、更佳的平台兼容能力。为了达成这个愿景,HSA基金会欢迎业界所有具有相同抱负的厂商 -- IHV、OEMs/ODM、OSV、语言和工具厂商、库和中间件厂商、应用程序厂商 – 所有意图实现下一代计算架构和创新的厂商。欲了解更多关于HSA, HSA基金会、基金会会员资格,基金会联系方式等信息,请访问网站www.HSAFoundation.com

更多资源:

HSA Technical Review  Download PDF here

HSA, from a HPC Perspective  Download PDF here

异构系统架构(HSA)和软件生态系统展望  Download PDF here