1引言由于在自动驾驶领域,需要对传感器数据进行大量基于深度神经网络的复杂计算,因此GPU和FPGA不约而同。用作一对CPU。使用加速器。这样做不仅可以提高计算性能,还可以大大降低能耗。基于FPGA+CPU的自动驾驶平台以其灵活、高效、低能耗的特点,越来越多地被一大批具有技术实力的企业采用,如Waymo、百度、福特、通用等。在此,本文试图探讨如何评估FPGA+CPU自动驾驶平台的性能,旨在帮助开发者在选择FPGA+CPU自动驾驶系统平台时初步掌握系统性能评估方法。本文将以Xilinx推出的ZynqUltraScale+MPSoC(Part#=ZU19EG)为例,说明其方法。由于作者知识水平和写作方法所限,如有读者能指出错误和疏漏之处,将不胜感激。2基于FPGA+CPU的自动驾驶平台系统设计图首先是典型的基于FPGA+CPU的自动驾驶系统原理图。一般来说,一个多核应用处理器单元——应用处理器单元(ApplicationProcessorUnit,简称AP)用于运行一个或多个操作系统,主要用于任务调度、管理等,以及大数据的处理:如图像的特征值提取、目标类别识别、多目标跟踪、运动预测等复杂操作大多由FPGA的可编程逻辑模块ProgrammableLogic(简称PL)处理。衡量自动驾驶平台的性能,重点在于以下几个方面:1.系统处理大数据的能力,这里是了解FPGA的PL模块的计算能力。2、复杂的多任务处理能力,即应用处理器CPU的计算能力。3、高速海量数据传输,即传感器数据接收,以及PL与AP之间的数据通信能力。由于篇幅原因,本文仅对第一点进行详细描述,而对第二点和第三点仅作简要描述。图1:基于FPGA+CPU的自动驾驶平台示意图3如何计算FPGAPL性能3.1FPGA性能难以计算在介绍如何计算FPGA性能之前,我们先来了解一下目前主流的FPGA硬件。以Xilinx的ZynqUltraScale+MPSoC为例,其PL包括可编程资源Logicblocks、RAM、DSPslices等。然而,由于以下原因,获得最终的FPGA性能值变得困难。要知道构建一个加法器需要多少逻辑单元和DSPslice并不容易。这个数字由FPGAIP内核的供应商决定。用户很难知道FPGA用来与Applicationprocessor通信的I/O设备需要占用一定数量的逻辑单元,这样就不可能使用所有的FPGA资源来构造浮点数加法器。计算会导致设计时钟达不到设计指标的100%。与设计的时钟频率指标相比,只能达到80%左右。温度影响也需要调整系统时钟,不能用固定值计算。目前常用的一种PFGA性能计算方法是参考系统每秒的浮点运算次数(floating-pointoperationspersecond),简称FLOPS。因为浮点运算中用到的所有高阶函数,如除法、平方、三角函数等,都可以归结为加法、乘法,以及常用的傅里叶变换,矩阵运算也可以使用加法器(adder)它是由乘法器和乘法器组合实现的,因此FLOPS和加法器/乘法器的数量直接关系到衡量其运行性能。为了计算FPGA的最大计算能力,我们可以通过使用单精度(Single-Precision)数据加法器的个数来计算一个系统的FLOPS。与乘法器相比,加法器占用的系统资源更少,得到的系统FLOPS值会接近最大值。假设所有运算并行执行,可得到如下FLOPS计算公式:FPGAPLFLOPS=(Clock1xLCbasedAdder#)+(Clock2xDSP48basedAdder#)根据以上公式,我们使用Xilinx的ZynqUltraScale+以MPSoC的ZU19EG为例,求其FLOPS。3.3FPGA总资源从图2ZynqUltraScale+(Part=ZU19EG)拥有的资源列表可以看出,它有1,143,450个Logiccells和1,968个DSPslice。图2:XilinxZynqUltraScale+资源列表3.4PL加法器个数的计算IPCore的实现由算法供应商决定。这里仅以Xilinx提供的基于Kintex-7的加法器IPCore使用的资源作为参考。误差应该在可接受的范围内。如图3所示,可知一个基于DSP48E的加法器需要2个DSPslice和289LUT-FF对组成一个基于Logiccell的加法器需要517个LogicCells。图3支持单精度FPGA特性是因为实现相关的I/O设备必须占用一定数量的LogicCell。这里我们假设使用了14,000个逻辑单元。尽可能利用所有的资源,所以我们可以得到:DSP48basedadderamount=1968/2=984(units)LCbasedAdderamount=(1129450-984*289)/517=1634(units)3.5Clockoftheadder我们可以知道,基于DSP48的加法器的时钟范围是:600Mhz(慢)-891Mhz(最快)基于逻辑单元的加法器的时钟范围是:667Mhz(慢)-891Mhz(最快)图4DSPslicefrequencyParametercharacteristics图5Globalclockparametercharacteristics根据不同的温度条件,需要相应调整Fmax的值。例如:当温度条件为0-100度时,加法器的时钟设置最高可达891Mhz;当温度条件为-40-100度时,为加法器设置的时钟需要调整为600Mhz/667Mhz,以便计算最大计算能力,我们使用0-100度条件下的时钟值,即为891MHz。图6显示了每个模块的计算能力。由此,我们可以得出ZynqUltraScale+MPSoC的ZU19EG的PL计算能力为:2332GFLPOS(~2TFLOPS)总结:~2TFLOPS在一定程度上反映了FPGAZynqUltraScale+ZU19EGPL的处理能力。对于车规级产品,-40度到100度的温度限制,整体PL的FLOPS值应该在1FLPOS-1.5TFLPOS之间比较合适。4如何计算FPGAAP的性能如图7所示,Xilinx的MPSoc+FPGA系列产品可以称为SoC,不仅包括多个ARMCPU内核,还有面向安全领域的R5内核,以及Mali400等GPU.从下图我们可以知道FPGAZynqUltraScale+ZU19EG有CPU#1:Quad-coreARM?Cortex?-A53MPCore?upto1.5GHzCPU#2:Dual-coreARMCortex-R5MPCore?upto600MHzGPU:Mali?-400MP2高达667MHz图7XilinxFPGAZynqUltraScale+ZU19EG框图估计:CPU#1&CPU2总计算能力:2.24x1.5x1000x4+2.0x600x2~=15840DMIPSGPU计算能力:2GFLPOS注:Cortex-R5:1.67/2.02/2.45DMIPS/MHzCorte-A53:2.24DMIPS/MHz5FPGA架构的灵活性目前普遍的理解是Level3自动驾驶需要系统具备~350,000DMIPS的计算能力才能实现如雷达/videoprocessing,Activeavoidance,automaticparking等。以上章节提到的MPSoc+FPGA,算力足以支持Level3自动驾驶在一般场景下的应用。但是,为了支持更多的自动驾驶Level4/Level5场景,由于FPGA接口的灵活性,很容易在FPGA的基础上增加额外的子计算模块,整个系统的计算能力会增加突飞猛进,极大地促进了计算能力向不同计算单元的平衡。例如,激光雷达的数据处理可以单独在某个IntelXeon子计算模块中进行,而FPGA主板只需要控制逻辑,激光雷达数据通过一个高性能的子计算模块传输到子计算模块。高速接口(PCIe或10G以太网)让它执行大量数据处理。FPGA的灵活性让开发者可以扩展越来越多的可能性。
