《软硬件融合:超大规模云计算架构创新之路》之四:算法加速、任务卸载、异构计算

314 阅读6分钟

本节通过介绍算法加速和任务卸载的概念,以及算法加速与任务卸载、异构计算之间的区别,使读者,在理解硬件加速的原理之上,建立对硬件加速实现形态等方面的理解。下一节会举出具体的例子。

1.算法加速概念

算法加速通过将系统里比较消耗CPU资源的算法放在硬件中去处理,压缩算法的执行时间,并且实现CPU和加速器的并行,来实现整体的性能加速。算法加速是硬件加速的初级形态,我们把一个特定的算法实现到硬件,通过软件显式的控制加速器运行。软件控制加速器运行的一般流程如下:

(1)加速器初始化,完成加速器运行所需的相关配置。

(2)软件准备好数据。如果加速器没有内置DMA,则由软件或其他硬件把数据写入加速器FIFO;如果加速器具有内置DMA可以自己主动读取数据,则软件把数据位置信息告诉加速器DMA,由加速器DMA主动搬运数据到加速器内部;为了尽量减少CPU交互的频次,还可以通过队列的方式交互数据。

(3)软件控制加速器开始运行,执行数据处理。

(4)处理完成后,硬件把数据写到输出FIFO、直接输出到其他硬件或者输出到约定好的内存中。

(5)如果需要,硬件发中断给到软件,由软件完成后续的处理。

2.任务卸载概念

任务卸载(Workload Offload),通常指的是计算能力有限的设备将自身的一部分工作转移到其他地方进行计算。例如手机、物联网设备等移动终端节点,受限于自身计算性能的限制,于是将一部分消耗大量计算资源的工作转移到边缘端或者云端处理。

在云计算数据中心里,也存在类似的问题。云计算通过虚拟化技术把用于业务的VM和管理Hypervisor以及其他一些后台的工作任务混合在主机CPU来运行。一方面,随着技术发展,业务对主机性能的要求越来越高,但CPU的性能提升却越来越有限;另一方面网络、存储等IO的性能提升,也需要大量的计算资源,管理和后台工作任务反而抢占了大量CPU资源。两方面因素的共同影响,使得本来想获取更多计算资源的用户业务,所得到的计算资源反而减少。

因此,我们希望把管理和后台任务从主机CPU侧尽可能的剥离,把主机CPU交给用户业务。这样,我们就需要把管理任务和其他后台任务卸载到特定的硬件设备,并且这个硬件设备依然能像虚拟化环境一样,能够为用户业务环境提供足够的支持。

需要说明的是,本章讲的任务卸载指的是板级的把任务从一个芯片卸载到另一个芯片,不涉及通过网络把任务卸载到其他服务器的任务卸载。

3.算法加速和任务卸载的区别

任务卸载和算法加速本质上是相同的,都是通过把部分工作放到硬件中去执行,以此达到整体加速的目的。但在实现上,通常所理解的算法加速实现是最基本的一种形式,而任务卸载则是一种更高级的形式。

如图 5.3(a),算法加速跟CPU处于同一个地址空间,CPU可以“看到”算法加速模块,可以直接和算法加速模块进行控制面和数据面的交互。而任务卸载则要复杂一些,它有一些新的特点:

  • 任务卸载是以算法加速模块为核心的,本质上依然是通过算法的硬件处理模块来实现加速的目的。
  • 如图 5.3(b),任务卸载通常指的是把任务转移到另外一个系统中去,两个系统需要一定的系统之间的接口来通信,比如两个芯片间是通过PCIe等总线。与算法加速架构相比,任务卸载中的卸载部分并不处于主机CPU的“控制”之下,主机CPU“看不到”他们。
  • 任务卸载,无法像算法加速那样只考虑硬件处理模块的设计实现(算法加速的软硬件交互比较简单),还要考虑跟其他软件或硬件之间的数据及控制接口交互。
  • 工作任务需要站在系统分层的角度来考虑交互。对某个工作任务来说,使用谁给我提供的服务,以及我为谁提供服务。反映在硬件上就是各个模块(包括运行软件的CPU加内存模块)之间数据面的数据传输以及控制面的配置以及状态信息交互,需要通过一定的HAL层,实现对硬件操作的软件抽象。

5.3.png

(a) 算法加速                                           (b) 任务卸载

图 5.3 算法加速和任务卸载比较

4.算法加速和异构计算区别

如果我们把GPU当作一个加速器,是完成特定的图形算法加速,那么GPU也可以当作一个算法加速器。从这个角度来说,异构计算和算法加速,在本质上也是一致的。异构计算跟基本的算法加速相比,还是有一些不同点的,并且这些不同点会显著的影响到两者的应用场合。两者的不同点体现在:

  • 算法加速是低级形态,异构计算是高级形态。算法加速针对的是特定算法场景;异构加速不是针对某一个具体的特定场景,而是针对某一类特定场景。需要在这一类特定场景中提炼出一定的程度的通用特征,针对通用性特征进行优化,以此来进行加速。
  • 算法加速是定制加速,异构计算设备是处理器。算法加速是是完全硬件实现的特定算法,软件参与控制面的处理,但算法加速的硬件处理模块不支持指令编程;而异构计算设备统称是处理器,支持软件指令编程,具有一定通用性。
  • 算法加速一般是定制开发硬件和软件,而异构计算是以平台化为目标。算法加速一般实现算法硬件处理模块的驱动,剩下的工作就交给后续的软件开发者。而异构计算,不仅仅是实现硬件处理的设备驱动,要实现异构平台的混合编程,还要支持运行时程序,甚至要支持两个系统间的数据一致性处理。
  • 算法加速开发门槛较低,可以面向很多大大小小的场合。而异构计算则是面向一些大规模的典型场景,它的开发是需要大规模人力的、长期的、迭代的一个过程。

云计算的软件和硬件如何融合更高效?

未来的数据中心如何搭建?一起来学习《软硬件融合》吧。

ruan.png