SoPC FPGA云平台软硬件协同交互框架①

2020-05-14 08:03常轶松刘超伟陈明宇
高技术通讯 2020年4期
关键词:加速器算子处理器

赵 然 常轶松 刘 波 刘超伟 陈明宇 张 科

(*中国科学院计算技术研究所 北京 100190) (**中国科学院大学 北京 100049) (***北京控制工程研究所 北京 100190)

0 引 言

随着云计算、大数据、物联网等概念的兴起,在特定应用场景下(如深度神经网络处理等),基于图形处理器(Graphics processinG unit,GPU)、定制专用集成电路(application specific inteGrated circuit,ASIC)、现场可编程门阵列(field-proGrammable Gate array,FPGA)等芯片的异构计算系统相比于单一的中央处理器(central processinG unit,CPU)系统通常能够达到几十倍的性能提升[1],异构计算已成为行业发展的重要趋势之一。然而对于普通用户来讲,开发与部署一个异构计算系统往往需要高成本和长周期的投入。因此,为了追求经济与效益的最优化,由大型互联网公司搭建异构计算云平台并对普通用户提供云资源的服务应运而生[2]。FPGA云平台就是常见的异构计算云平台之一[3,4]。

目前商业FPGA云平台大多由若干台x86服务器组成,x86处理器与FPGA节点板卡通过PCIe(peripheral component interconnect express)接口进行管理和数据交互[5]。受限于接口形式,FPGA节点板卡需部署在x86服务器机箱内,而由于单台x86服务器机箱尺寸及主板PCIe接口数量的限制,单台服务器内可部署的FPGA节点数量通常不会超过8个,如亚马逊的FPGA EC2实例F1[6]。因此在现有框架下,FPGA节点很难进行更高密度的部署(即较低的纵向可扩展性);如果需要更大规模的横向可扩展性,则需要大量x86服务器组成并行集群结构,这将导致更高的部署成本和占用更多的机架物理空间。

此外,普通用户使用FPGA云平台的目的通常仅使用FPGA可编程逻辑资源进行相关的逻辑设计和验证,而对x86服务器的运算能力并无过多需求。x86服务器中的CPU处理器仅作为加速逻辑资源节点管理之用,存在较大性能浪费。

综上所述,为解决FPGA云平台存在的部署密度低、管理困难、成本高及计算能效低等问题,FPGA加速节点需要具备独立管理、低功耗、低成本等特点。值得注意的是,近年来出现了面向边缘计算(edGe computinG, EC)的FPGA器件(如Intel Stratix SoC、Xilinx Zynq MPSoC等系列)。这一类型产品内部同时含有处理器硬核和FPGA可编程逻辑资源,是一种软硬件全可编程的可编程片上系统(system on proGrammable chip,SoPC)FPGA芯片。如果使用该器件作为云平台的加速节点,每个节点将由各自的处理器单独管理并脱离x86平台的限制,这将使得云平台的部署更自由且更紧密。同时,免除x86服务器也使得云平台的成本与功耗更低,计算能效更高。因此本文提出采用基于SoPC的加速节点设计并研制高密度、低部署成本、低功耗、管理灵活的SoPC FPGA云平台,并结合深度神经网络加速处理应用针对此平台中的软硬件协同交互框架进行详细介绍。

1 相关工作

2016年底,美国亚马逊公司第一次正式对外提出FPGA云平台商业概念及公测服务。在其AWS平台的FPGA云服务F1实例中,每个实例计算池上配置8个FPGA,可应用于数据分析、视频、安全、机器学习等应用[6]。国内互联网企业在2017年年初相继提供类似产品,如百度的FPGA应用主要是用于自身的机器学习,也包括语音识别、自动驾驶等应用[7]。腾讯云为开发者提供IP商店腾讯云服务市场,IP开发者和IP提供商可以通过它为客户提供IP和对应的测试程序[8]。

这些商业FPGA云平台的基本架构均为x86通过PCIe与FPGA进行交互,存在上述所提的部署密度低、管理困难、成本高、计算能效低等问题,因此本文拟基于SoPC FPGA构建下一代FPGA云平台。

2 SoPC FPGA云平台

本文提出的基于SoPC FPGA构建的云平台,其内部核心为若干个含有处理器和FPGA逻辑资源的SoPC板卡节点,且节点之间依靠标准互连网络组成集群结构。该SoPC FPGA云平台在传统FPGA云平台具有的大容量可编程硬件逻辑基础上,为FPGA加速节点提供更为灵活的软件可编程特性。首先,充分利用包含通用硬核处理器的SoPC软件编程性为大数据处理平台体系结构引入新维度的异构计算能力;其次,通过在SoPC上进行软-硬件协同的系统级设计,为FPGA可编程硬件提供灵活、安全、可控的资源管理和配置环境,有效提升云平台加速节点的通用计算及数据管理能力;再次,结合SoPC和FPGA自身的低功耗特性,提升云平台加速节点的计算能效。

如图1所示,SoPC FPGA云平台主要由若干SoPC加速节点和标准以太网交换机组成。在云平台与用户之间,由前端管理服务器为用户提供远程接入和管理等服务。用户通过前端管理服务器申请SoPC FPGA加速资源。前端服务器根据平台实时运行情况分配具体的SoPC加速节点给来自远程连接的用户,用户可以按需部署使用FPGA云加速服务和FPGA逻辑资源。

图1 SoPC FPGA云平台连接结构示意图

SoPC FPGA云平台内部按照功能可分为管理配置框架、调试框架、用户服务框架以及软硬件协同交互框架等,本文重点介绍云平台软硬件协同交互框架。该框架是SoPC FPGA的核心框架,是处理器与FPGA加速器之间沟通的桥梁,负责处理器与FPGA之间所有控制流与数据流的交互。用户在操作系统下执行应用,并将计算部分交由FPGA进行加速。处理器与FPGA之间使用高带宽的高级微控制器总线结构(advanced microcontroller bus architecture,AMBA)总线互连[9],通过该总线处理器可以快速访问FPGA逻辑,而FPGA逻辑也能快速访问处理器内存,实现软硬件协同交互。

如图2所示,该框架按照抽象层次分为4层,由高到低分别是应用框架层(支持TensorFlow、Caffe、DPDK等)、应用程序编程接口(application proGramminG interface, API)层、内核空间的设备驱动层以及FPGA硬件设备层。

图2 SoPC FPGA平台软硬件协同交互框架结构

在SoPC FPGA平台软硬件协同交互框架中,基于标准C语言的应用程序编程接口层为不同应用提供统一的API接口,使该平台可以支持多种应用;内核设备驱动层的功能是抽象不同硬件算子的通用逻辑、隐藏不同厂商芯片及板卡的差异以及对FPGA硬件资源的通用管理;FPGA硬件设备层则实现了一套通用的加速应用逻辑,该部分逻辑包含一些基本的数据传输功能,核心计算部件则需要用户自行生成添加。

2.1 硬件逻辑

本文将FPGA按逻辑功能划分为静态区域和动态区域,如图3所示。静态区域负责加速逻辑与对处理器内存进行数据搬移,包括直接存储器访问(direct memory access,DMA)引擎及双倍数据速率(double data rate,DDR)内存控制器等基本组件。动态功能区包含各类运算单元,即硬件算子。通过与FPGA开发工具(如Xilinx VIVADO)的深度融合,可支持动态区逻辑的部分可重构。

图3 SoPC FPGA平台软硬件协同交互框架硬件部分逻辑

为了使处理器端无差异地使用这些算子,本文提取了硬件算子的通用功能逻辑。首先,内存访问接口基于标准片内互连协议,负责读写FPGA卡上的DDR内存,实现不同算子间、静态区与动态区间的数据交互;其次,将硬件算子的控制/状态寄存器、中断信号等通过标准片内互连协议进行封装,并与静态区的DMA接口控制器互连,允许处理器端软件对硬件算子进行控制,如启动运算、查看状态等。此外,本文还提出并实现了基于任务队列的硬件算子工作机制,并在设备驱动层进行逻辑抽象,实现处理器端多线程或多进程应用程序并行使用FPGA计算资源。

2.2 软件接口

在软硬件协同交互框架中,软件接口用于为在FPGA云平台上做应用的开发者提供服务。其主要功能是对底层硬件逻辑进行抽象,并分为用户空间和内核空间两部分,如图4所示。

在用户空间,加速节点作为udev设备、DMA通道设备及硬件算子设备被调用,开发者可以使用基本用户态C程序接口对FPGA逻辑资源进行初始化(FPGA_InitConfiG ())、调用DMA进行节点内数据传输(FPGA_CopyBufH2D ()、FPGA_CopyBufD2H ())、以及管理算子任务的分发和执行(FPGA_CommitTask ())等,将计算部分移交给硬件加速器进行处理。内核空间包含FPGA云服务(FaaS)中的 FPGA 驱动框架。与硬件逻辑框架对应,FPGA 驱动框架分为静态区平台驱动、动态区算子驱动和 DMA 系统驱动3个部分。其中,在动态区算子驱动中包含有算子抽象数据结构的描述,记录了算子的数量及各个算子的寄存器空间;在静态区的平台驱动中包含着任务队列抽象数据结构的描述,记录了任务编号及对应任务的寄存器读写操作;DMA驱动负责给用户提供设备注册及中断处理等服务。

图4 SoPC FPGA平台软硬件协同交互框架软件栈结构

用户空间和内核空间使用通用字符设备驱动程序接口进行转换,用户程序通过该接口进入内核空间,读取相关算子的配置文件通过驱动层完成底层硬件设备上硬件模块的执行,进而完成整个计算过程。

3 平台应用部署实例

本文实现了一套基于Xilinx Zynq UltraScale+ MPSoC芯片的SoPC FPGA云平台原型,并实现神经网络加速器和NVMe存储2个应用实例来对框架性能进行评估。

3.1 环境部署

在此平台中,每个异构加速平台节点板载1.2 GHz 4核ARM Cortex-A53处理器与154K FPGA逻辑资源(LoGic Cells)。处理器配有独立的2133M DDR4内存,可运行完整的Linux内核版本操作系统,文件系统为Linaro/Debian。经过Xilinx FPGA开发工具VIVADO 2017.2的综合与实现,硬件部分静态区占用FPGA芯片整体的逻辑量(LUTs)不足5%,工作频率可达266.667 MHz,满足FPGA云平台的运行需求。

3.2 深度学习加速器实现

深度神经网络(deep neural networks, DNN)是一种计算密集型的学习模型。DNN由卷积、池化、点积、归一化、激活等多层组成[10],并包含了大量的矩阵运算(DNN中最大计算量为卷积层中卷积核与数据的矩阵乘法),因此适合使用FPGA进行加速计算[11,12]。使用SoPC FPGA云平台又可进一步降低异构计算平台搭建所需的时间与经济成本,从而实现快速部署。

本文实现了基于SoPC FPGA云平台的DNN加速器,并集成至TensorFlow的运行时环境中,支持AlexNet、VGG、LeNet、Cifar10等多种模型处理。如图 5所示,在FPGA硬件框架中的动态区加载了用户编写的计算单元(processinG element,PE)阵列,实现了卷积运算中基本的乘累加操作。

图5 部署DNN加速器逻辑的硬件结构

用户连接云平台后,前端管理服务器会给用户分配SoPC FPGA云平台中的空闲加速节点资源。在用户使用完这些资源后,由前端管理服务器释放,再次作为云平台的空闲资源供下次使用。为了比对和验证DNN加速器计算结果的正确性,在实验中首先单独使用CPU进行计算并保存每一层的计算结果作为参考。在进行DNN加速器实现时,用户的应用程序运行在基于ARM处理器的操作系统中,用户程序启动后的执行流程如图6所示。

首先由处理器配置FPGA逻辑①,将待处理数据存至内存中②,填写寄存器发起加速任务③,随后等待加速器完成④。收到加速器中断通知(C)后,调度DMA读回结果⑤,此次加速完成,可以根据情况选择是否执行下一轮加速任务②。FPGA逻辑被配置好(A)之后,加速器便开始查询队列中的任务⑥,收到任务(B)后读取内存相应位置数据至缓存⑦,随后进行处理⑧。完成后写回内存⑨,并通知处理器⑩,随后继续查询队列中是否有下一轮任务⑥。

图6 DNN加速器实例执行流程及软硬件交互示意图

本文使用LeNet作为测试用例进行实验,在加速流程结束后,读取DNN加速器每一层的计算结果与ARM处理器的计算结果分别进行比较,发现数据完全一致,并分别统计总体运行时间结果如表1所示。由此可以证明DNN加速器计算正确,SoPC FPGA异构加速方案可以顺利执行,且具有一定的加速能力。

表1 LeNet模型运行时间

3.3 NVMe-SSD存储应用及软硬件交互性能测试

随着大数据时代的到来,传统存储服务器及相应的资源服务已逐渐出现性能瓶颈。如何充分释放如固态硬盘(solid state drive,SSD)等新型存储介质以及如NVMe(non-volatile memory express)等新型存储协议和接口的性能优势,从而为云计算环境提供更低延迟、更高带宽的存储服务,受到广泛关注[13]。

本文基于云平台软硬件协同框架构建了NVMe的数据中心存储应用。通过该应用可以评估框架在真实应用下进行大量数据交互时的通路性能。因此本文在该平台下对本地读写NVMe硬盘进行了带宽测试,并与x86平台进行对比。测试所使用的硬盘为SamsunG SSD 970 EVO 500 GB,操作系统为Linux Kernel 5.0-rc4,测试工具为Fio,进行8 MB块大小的顺序读写测试,测试结果如图7所示。

图7 NVMe-SSD本地存储性能测试

可以看出,在x86平台上读写数据性能接近固态硬盘标称带宽[14],而在SoPC平台上性能稍有下降,结果表明该平台的瓶颈为处理器与FPGA之间的数据通路。该性能则代表该框架中软硬件交互的带宽,约为2 500 MB/s。相较于x86平台,SoPC平台的ARM处理器与AMBA总线处理性能略低,影响数据传输带宽,但该平台具有较高的成本效益。

搭建存储阵列可以充分利用SoPC的软件可编程能力对存储资源进行资源管理、调度和分配;同时该平台可以支持专用硬件逻辑对存储相关协议栈及处理算法进行加速,提升存储系统整体处理性能。针对上述目标,后续将进一步开展存储阵列的基础设施与加速服务工作。

4 结 论

本文分析了目前商用FPGA云平台存在的部署密度低、高成本、计算能效低等问题,提出在满足一定性能需求的前提下,实现高密度、低成本、方便管理的SoPC FPGA云平台结构,并介绍了SoPC FPGA云平台中最为关键的软硬件协同交互框架。通过部署DNN加速器及NVMe-SSD存储阵列加速实例,描述了用户应用在该框架下的执行流程和软硬件之间数据交互流程,验证了该云平台具备快速部署以及加速应用的能力。

下一步,本文将对SoPC FPGA软硬件协同交互框架和关键路径进行优化,提升数据带宽和处理速度,并开发支持更多功能以适配更多样、更复杂的加速应用;同时开展FPGA虚拟化等功能进一步提高资源使用率并降低部署成本。

猜你喜欢
加速器算子处理器
莫比斯加速器众创办公空间
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
知识快餐店 科学加速器
全民小康路上的“加速器”
拟微分算子在Hp(ω)上的有界性
Heisenberg群上与Schrödinger算子相关的Riesz变换在Hardy空间上的有界性
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
ADI推出新一代SigmaDSP处理器
火线热讯
AItera推出Nios II系列软核处理器