CPU和GPU真融合 APU异构系统架构解析
计算机从诞生之日起就配有中央处理器,即执行通用计算任务的CPU。但在过去的二、三十年中,主流的计算系统同时配置了其他计算处理单元,其中最常见的是图形处理器(GPU)。最初,GPU应用于并行化的特殊的图形计算。随着时间推移,GPU的绝对计算能力越来越强,而专用芯片的特点则逐渐淡化,此消彼长的结果是,GPU可以较好的性能-功耗比完成通用并行计算的任务。
今天数量越来越多的主流应用要求兼具高性能和低功耗的素质,并行计算是达成目标的唯一途径。但是,当前的CPU和GPU是分立设计的处理器,不能高效率地协同工作,编写同时运行于CPU和GPU的程序也是相当麻烦。由于CPU和GPU拥有独立的地址空间,应用程序不得不明确地控制数据在CPU和GPU之间的流动。
CPU代码通过系统调用向GPU发送任务,此类系统调用一般由GPU驱动程序管理,而驱动程序本身又受到其他调度程序管理。这么多的环节造成了很大的调用开销,以至于,只有在任务所需处理的数据规模足够大,任务的并行计算量足够大时,这样的调用开销才是划算的。而其他的调用形式,比如由GPU向CPU发送任务,或者GPU向自己发送任务,在今天则根本不被支持!
为了充分释放并行处理器的计算能力,架构设计者必须打破既有格局,采用新的思路。设计者必须重塑计算系统,把同一个平台上分立的处理单元紧密整合成为不断演进单颗处理器,同时无需软件开发者的编程方式发生重大的改变,这是HSA设计中的首要目标。
为此,异构系统架构(HSA,Heterogeneous System Architecture)创造了一种更佳的处理器设计,展示了CPU和GPU被无缝集成后所带来的益处和潜能。通过HSA,程序可以在统一的地址空间中建立数据结构,在最合适的处理器上创建任务。处理器之间的数据交互不过是传递一个指针。多个计算任务之间通过coherent memory,barrier,和atomic等操作来保证数据的同步(和多核CPU的方式相同)。