本节通过介绍算法加速和任务卸载的概念,以及算法加速与任务卸载、异构计算之间的区别,使读者,在理解硬件加速的原理之上,建立对硬件加速实现形态等方面的理解。下一节会举出具体的例子。
算法加速通过将系统里比较消耗CPU资源的算法放在硬件中去处理,压缩算法的执行时间,并且实现CPU和加速器的并行,来实现整体的性能加速。算法加速是硬件加速的初级形态,我们把一个特定的算法实现到硬件,通过软件显式的控制加速器运行。软件控制加速器运行的一般流程如下:
(1)加速器初始化,完成加速器运行所需的相关配置。
(2)软件准备好数据。如果加速器没有内置DMA,则由软件或其他硬件把数据写入加速器FIFO;如果加速器具有内置DMA可以自己主动读取数据,则软件把数据位置信息告诉加速器DMA,由加速器DMA主动搬运数据到加速器内部;为了尽量减少CPU交互的频次,还可以通过队列的方式交互数据。
(3)软件控制加速器开始运行,执行数据处理。
(4)处理完成后,硬件把数据写到输出FIFO、直接输出到其他硬件或者输出到约定好的内存中。
(5)如果需要,硬件发中断给到软件,由软件完成后续的处理。
任务卸载(Workload Offload),通常指的是计算能力有限的设备将自身的一部分工作转移到其他地方进行计算。例如手机、物联网设备等移动终端节点,受限于自身计算性能的限制,于是将一部分消耗大量计算资源的工作转移到边缘端或者云端处理。
在云计算数据中心里,也存在类似的问题。云计算通过虚拟化技术把用于业务的VM和管理Hypervisor以及其他一些后台的工作任务混合在主机CPU来运行。一方面,随着技术发展,业务对主机性能的要求越来越高,但CPU的性能提升却越来越有限;另一方面网络、存储等IO的性能提升,也需要大量的计算资源,管理和后台工作任务反而抢占了大量CPU资源。两方面因素的共同影响,使得本来想获取更多计算资源的用户业务,所得到的计算资源反而减少。
因此,我们希望把管理和后台任务从主机CPU侧尽可能的剥离,把主机CPU交给用户业务。这样,我们就需要把管理任务和其他后台任务卸载到特定的硬件设备,并且这个硬件设备依然能像虚拟化环境一样,能够为用户业务环境提供足够的支持。
需要说明的是,本章讲的任务卸载指的是板级的把任务从一个芯片卸载到另一个芯片,不涉及通过网络把任务卸载到其他服务器的任务卸载。
任务卸载和算法加速本质上是相同的,都是通过把部分工作放到硬件中去执行,以此达到整体加速的目的。但在实现上,通常所理解的算法加速实现是最基本的一种形式,而任务卸载则是一种更高级的形式。
如图 5.3(a),算法加速跟CPU处于同一个地址空间,CPU可以“看到”算法加速模块,可以直接和算法加速模块进行控制面和数据面的交互。而任务卸载则要复杂一些,它有一些新的特点:
(a) 算法加速 (b) 任务卸载
图 5.3 算法加速和任务卸载比较
如果我们把GPU当作一个加速器,是完成特定的图形算法加速,那么GPU也可以当作一个算法加速器。从这个角度来说,异构计算和算法加速,在本质上也是一致的。异构计算跟基本的算法加速相比,还是有一些不同点的,并且这些不同点会显著的影响到两者的应用场合。两者的不同点体现在:
云计算的软件和硬件如何融合更高效?
未来的数据中心如何搭建?一起来学习《软硬件融合》吧。
原文链接:https://www.cnblogs.com/lajiaojiang/p/14800964.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6696