前几天看到一则新闻AMD发新Carrizo处理器http://digi.tech.qq.com/a/20150603/009450.htm 。这是第一个完整支持HSA1.0标准的产品。因为当时HSA是新生标准,没有进入市场的产品,因此对于这个标准以前只知道是关于异构计算的,没有过多的探究。这次借这个机会深入了解一下。
在异构系统架构(Heterogeneous System Architecture,简称HSA)上进行并行运算的异构计算(Heterogeneous Computing)技术从上世纪80年代产生,是并行/分布计算领域里的热点之一。
常见的计算单元有很多,例如CPU(中央处理器)、GPU(图形处理器)、协处理器、DSP(信号处理器)、ASIC(专用集成电路)、FPGA(现场可编程门阵列)。我们都知道诸如CPU主要应对的是逻辑密集运算,而GPU则是用于复杂数学运算,今天数量越来越多的主流应用要求兼具高性能和低功耗的素质,并行计算是达成目标的唯一途径。但是,当前的CPU和GPU是分立设计的处理器,不能高效率地协同工作,编写同时运行于CPU和GPU的程序也是相当麻烦。由于CPU和GPU拥有独立的地址空间,应用程序不得不明确地控制数据在CPU和GPU之间的流动, CPU代码通过系统调用向GPU发送任务,此类系统调用一般由GPU驱动程序管理,而驱动程序本身又受到其他调度程序管理。这么多的环节造成了很大的调用开销,以至于,只有在任务所需处理的数据规模足够大,任务的并行计算量足够大时,这样的调用开销才是划算的,因此很容易遇到计算瓶颈。HSA的提出就是为了应对如今日益复杂的计算要求,把同一个平台上分立的处理单元紧密整合成为不断演进单颗处理器(SOC)。下图就是HSA基金会的成员,可以看到其中有许多重量级的参与者,有软件供应商(ORACLE)、IP核供应商(ARM),也有半导体制造公司(TI),还有电子自动化设计一类的公司(Synopsys、Cadence),以及一些著名高校。
1.0标准对HSA架构的系统的特征进行了描述,其中包含一些必须有的特征,也有一部分可以由厂商自己决定是否加入的,下面是对于HSA系统最基本特征的描述:
下面只对其中小部分Requirement具体描述。
下图是HSA架构的一个简单示例,只有一个节点,包含核心和存储资源。
如果是一个更复杂的HSA系统,其中有一系列的主CPU、核心以及分布在多个系统组件的五个HSA存储节点,那么它的整体拓扑结构就如下图所示。
对于复杂的HSA系统,为了随机的添加或者移除部件,系统必须提供一种识别和通知机制,使得HSA运行环境和软件可以不断枚举各个部件,以更新整个拓扑结构,同时也为了能在部件被识别的同时,得到各个部件的特性。HSA需要如下图一样的结构,用以描述整个系统中的Agent队列。
一个遵循HSA标准的系统应该为核心调度提供命令接口。这个命令接口就是AQL(Architected Queuing Language)。AQL使各个核心得以建立自己的命令数据包,并将其加入队列。AQL也支持核心依照AQL格式输入命令。AQL定义了一下几种数据包类型。
当整个队列初始化或read_index在增加时,数据包格式会被设置为无效。
这个数据包可以被代理加入队列中,用以延迟处理后面的数据包。
这个数据包可以被代理加入队列中,用以延迟处理后面的数据包。
发送的数据包类型在AQL数据头描述。
遵循标准的平台应该视情况为HSA软件提供定义和使用图像对象的能力(支持一维至三维图像)。图像的格式只能从预先定义的格式里面选择。核心可以通过一个不透明的“指针”对图像的值进行操作。这个指针被HSA运行环境建立且只针对某一个核心。一个图像对象可以被设置为只读/只写/可读可写。除此之外,图像还有以下额外的要求。
为了达到上面提到的融合加速的目的,AMD公司提出了APU概念。从最初宣布到最终发布,APU花了足足四年半的光阴,看似简单的CPU、GPU整合为何如此费力?原因就是这不简单。如果只是做另一种集成显卡,那是再容易不过了,但是要把CPU、GPU两种不同的计算单元有机地融合到一颗芯片中,还要发挥二者各自的最高效率,出色地完成串行和并行计算任务,就需要在方方面面保证它们俩的和谐共处,包括各自适当的规模、超高的晶体管集成度、先进的芯片制造工艺、高速的互联总线架构、共享低延迟的内存模式、适当的成本、足够的编程与软件支持,等等。正是在这些方面经历了深入的探索之后,AMD才最终完成了APU,绘就了一张宏伟蓝图。
为了达到这个目标,AMD将整个计划分为了四步:第一步,物理整合,CPU、GPU集成到单独一颗芯片上;第二步,平台优化,融合互连增强CPU、GPU之间的交互能力;第三步,架构整合,实现CPU、GPU内存统一寻址;第四步,架构和系统整合,从硬件到软件完全实现异构计算支持。
2011年的Llano就代表着第一步,2012年的Trinity则是第二步,第三步则是2013年底的Kaveri,而如今的第四步将由Carrizo迈出。
参考资料:
AMD 和异构系统架构(HSA),http://mt.sohu.com/20150326/n410358764.shtml
http://www.amd.com/Documents/ISSCC-presentation-CN.pdf
CPU和GPU真融合 APU异构系统架构解析,http://www.pcpop.com/doc/0/911/911103_all.shtml
HSA-SysArch-1.01,http://download.csdn.net/detail/u010945683/8780611
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。