本节通过介绍算法加速和任务卸载的概念,以及算法加速与任务卸载、异构计算之间的区别,使读者,在理解硬件加速的原理之上,建立对硬件加速实现形态等方面的理解。下一节会举出具体的例子。
1.算法加速概念
算法加速通过将系统里比较消耗CPU资源的算法放在硬件中去处理,压缩算法的执行时间,并且实现CPU和加速器的并行,来实现整体的性能加速。算法加速是硬件加速的初级形态,我们把一个特定的算法实现到硬件,通过软件显式的控制加速器运行。软件控制加速器运行的一般流程如下:
(1)加速器初始化,完成加速器运行所需的相关配置。
(2)软件准备好数据。如果加速器没有内置DMA,则由软件或其他硬件把数据写入加速器FIFO;如果加速器具有内置DMA可以自己主动读取数据,则软件把数据位置信息告诉加速器DMA,由加速器DMA主动搬运数据到加速器内部;为了尽量减少CPU交互的频次,还可以通过队列的方式交互数据。
(3)软件控制加速器开始运行,执行数据处理。
(4)处理完成后,硬件把数据写到输出FIFO、直接输出到其他硬件或者输出到约定好的内存中。
(5)如果需要,硬件发中断给到软件,由软件完成后续的处理。