自动驾驶控制器芯片选型设计方案详解(一)
a)Core:内核通常是空间中心。一方面便于自动驾驶控制器和外围传感器、执行器通讯,同时也用外围来保护它。core强调运行态,通常出现的core-down,是指cpu计算上出现问题了,core强调的是自动驾驶控制器整体对外功能中的核心功能。
b)DMIPS:主要用于测整数计算能力。包含每秒钟能够执行的指令集数量,以及其这些指令集在实现我的测试程序的时候,每秒钟能够实现的工作数量,这个能力由cpu的架构,内存memory的访问速度等硬件特性来决定。它是一个测量CPU运行相应测试程序时表现出来的相对性能高低的一个单位(很多自动驾驶芯片评估场合,人们习惯用MIPS作为这个性能指标的单位)。
c)Memory:存储器管理单元的主要功能包括:虚拟地址到物理地址映射、存储器访问权限控制、高速缓存支持等;
d)DataFlash:DataFlash是美国ATMEL公司推出的大容量串行Flash存储器产品,采用Nor技术制造,可用于存储数据和程序代码。与并行Flash存储器相比,所需引脚少,体积小,易于扩展,与单片机或控制器连接简单,工作可靠,所以类似DataFlash的串行Flash控制器越来越多的用在自动驾驶控制器产品和测控系统评估中。
e)ISP:ISP作为视觉处理芯片核心,其主要功能包括 AE(自动曝光)、AF(自动对焦)、AWB(自动白平衡)、去除图像噪声、LSC(Lens Shading Correction)、BPC(Bad PixelCorrection),最后把 Raw Data 保存起来,传给 videocodec 或 CV 等。通过 ISP 可以得到更好的图像效果,因此在自动驾驶汽车上对ISP的要求很高,比如开始集成双通道甚至三通道的 ISP。一般来说 ISP 是集成在 AP 里面(对很多 AP 芯片厂商来说,这是差异化竞争的关键部分),但是随着需求的变化也出现了独立的 ISP,主要原因是可以更灵活的配置,同时弥补及配合 AP 芯片内 ISP 功能的不足。
f)算力:自动驾驶的实现,需要依赖环境感知传感器对道路环境的信息进行采集,将采集到的数据传送到汽车中央处理器进行处理,用来识别障碍物、可行道路等,依据识别结果,规划路径、制定车速,自动控制汽车行驶。整个过程需要在一瞬间完成,延时必须要控制在毫秒甚至微秒级别,才能保证自动驾驶的行驶安全。要完成瞬时处理、反馈、决策规划、执行的效果,对中央处理器的算力要求非常高。在自动驾驶中,最耗费算力的当属视觉处理,占到全部算力需求的一半以上,且自动驾驶级别每升高一级,对计算力的需求至少增加十倍。L2级别需要2个TOPS的算力,L3需要24个TOPS的算力,L4为320TOPS,L5为4000+TOPS。
光有算力还不够,考虑汽车应用的复杂性,汽车处理器还需要同时考虑算力利用率、是否通过车规和安全标准等。算力理论值取决于运算精度、MAC的数量和运行频率。如下表示了一种典型的单帧算力计算方式:
理论算力是根据Net卷积层的乘法运算累加得出,卷积层中的每次乘加(MAC)算成两个OPS,卷积运算量占DL NET的90%以上,其它辅助运算或其它层的运算忽略不计,SSD所有卷积层乘法运算总数是40G MACs,所以理论算力是80GOPS。
其中,
真实值和理论值差异极大,考虑其它运算层,硬件实际利用率要高一些。决定算力真实值最主要因素是内存( SRAM和DRAM)带宽,还有实际运行频率(即供电电压或温度),还有算法的batch尺寸。
g)功耗:在最高性能模式下,如果自动驾驶控制器的芯片功耗级别较高,即便其自身性能强劲,但也会引发某些未可预知的隐患,如发热量成倍增加,耗电率成倍增加,这些结果尤其对于新能源车型来说也毫无疑问是颗“核弹”。因此,我们在前期自动驾驶芯片设计中需要充分考虑其功耗指标。
h)CSI:CSI作为前端-配置逻辑接口,可以支持大多数通用的可用的CMOS摄像头接口,支持方便YCC,YUV,Bayer或者是RGB的数据格式输入,完全可控的8-bit或16-bit数据到32-bit的FIFO进行打包,32*32大小的FIFO存储接受到的的图像像素数据,该FIFO可以通过可编程的IO或者是DMA进行读取。后端-提供了直接到eMMA的预处理PrP块接口(PrP和PP组成了MX27图形加速器eM MA,PrP和PP能够用来给视频做预处理和后期处理,例如,放大,缩小,颜色转换)。提供sensor的可屏蔽中断源,该中断源也是中断可控的,提供给外部sensor用的,可配置的主时钟频率,由统计数据产生的自动曝光(AE)和自动白平衡(AWB)控制。
i)3D GPU:GPU是基于大的吞吐量设计,用来处理大规模的并行计算。GPU的控制单元可以把多个的访问合并成少的访问。GPU将更多的晶体管用于执行单元,而非像CPU那样用作复杂的数据cache和指令控制。由于GPU具有超强的浮点计算能力,可用于在智能汽车前端的图像或视频处理领域的应用,也越来越多地应用在中央控制器高性能计算的主流设计中。
j)ETH和CAN:中央控制器芯片设计中需要充分考虑其连接接口是否支持以太网和CANFD等高级数据连接传输方式,这是接收并有效处理数据的前提。
k)PCIe:作为CPU的局部总线,最大的特点在于数据传输吞吐量大和延迟低。
l)SaftyGoal:功能安全目标是整个自动驾驶中央控制器的核心设计需求,由于其影响对整个自动驾驶功能设计中的单点失效分析结果,因此,在前期硬件设计中就需要充分考虑其是否能够完全满足系统对于硬件的功能安全设计需求。
m)OTA:远程升级为用户修复软件故障,大幅度缩短中间步骤的时间,使软件快速到达用户,同时可以为车辆增加新功能,拓宽 “服务”和“运营”的范畴。因此,中央控制器芯片是否支持OTA对于减少汽车制造产商和用户的成本,包括汽车制造产商的召回成本,用户的时间成本,增加用户的新鲜感,增加车辆的附加价值显得不可或缺。
n)封装类型:控制器封装尺寸的大小、引脚定义等影响整体驾驶控制器对安装形式的影响,同时影响对外围部件的连接情况分布。
o)温度/电压:控制器的温度控制范围包括其存储、使用环境温度,且后期若实际车辆确认前毫米波控制器总成布置区域存储、使用环境温度高于该值,需要在该基础上进行一定程度的整改上调范围,并满足OEM要求,且供应商需要保证不因为硬件设计缺陷导致召回。
p)其他前沿技术:如控制器是否支持MCU+MPU的集成控制方式,还是只支持单芯片控制的形式。
由如上对于自动驾驶域控制器选型过程中比较重要的几个因素,我们对市场主流的控制器芯片进行了统计分析得出如下分析结果对比表:
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
自动驾驶控制器的整个ECU资源需要在其具体的算法控制中得到算力分配,其中关键的AD处理过程包括如下主要的几个部分。道路运动目标检测、道路结构检测(基于前视摄像头)、目标形态检测、预测分析、道路结构检测(基于侧视摄像头)、道路运动目标检测(基于侧视摄像头)。各部分参数主要包括了对CPU运行资源、算力、运行带宽、运行时间等,如下表表示了一种典型的各个算法对于算力运行占用的资源统计分析,其中两个不同的芯片分别暂用不同计算需求。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
由于芯片算力的有效利用率影响着整个算法效率,因此对算力的计算和分析是提前。
如上软件模块算法的算力效率牵涉到MAC计算效率问题。如果相应的自动驾驶模块算法或者说CNN卷积需要的算力是1TOPS,而运算平台的算力是4TOPS,那么利用效率只有25%,运算单元大部分时候都在等待数据传送,特别是批量待处理的尺寸较小时候,存储带宽不足会严重限制性能。但如果超出平台的运算能力,延迟会大幅度增加,存储瓶颈一样很要命。效率在90-95%情况下,存储瓶颈影响最小,但这并不意味着不影响了,影响依然存在。然而平台不会只运算一种算法,运算利用效率很难稳定在90-95%。
因此,我们需要对系统算法存储及运行带宽等参数进行详细分析。
1)算法内存管理
算法内存估计涉及对软件模块(包含车辆运动估计VED、潜在风险评估、纵向控制功能、横向控制功能、附加控制功能、环境建模EM)的闪存Flash、内存SRAM的评估影响,一般各软件模块占用的内存资源池如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
一般的,芯片带宽包含DDR带宽和总线带宽两种评估单位,其中DDR带宽一般为25.6GB(Byte),针对图像/视频处理的有效利用带宽为70%-80%。总线带宽的计算是基于路游的多层拓扑架构,且总线同各个处理系统和DDR控制器以多端口进行连接,大小一般为128bit,800MHz。总线带宽设计采用多端口超适配的方式,保证连接任何端口的处理系统可以单独使用全部DDR带宽,各处理系统间通过QOS机制,保障实时数据流的带宽。如下表示了摄像头及ISP的带宽及配置受的资源约束:
• 摄像头精度、帧率、像素精度和HDR曝光数
• 单组MIPI的接口带宽
• 单组MIPI的接口虚拟通道数
• 单ISP流水线的数据处理率
• Inline或离线模式
• 输出格式及后处理需求
而实际的网络带宽取决于如下几种因素:
• 图像精度
• 网络的模型架构和拓扑
• 网络的剪枝、量化和压缩
• 网络图的分割是否需要中间结果写回到DDR
对于各个软件处理端而言,需要进行准确的带宽分析才能实现较好的软件控制。因此,设计较好的带宽分析算法是实现有效的带宽利用的前提。其中最简单有效的解决方法还是提高内存带宽。提高内存带宽有三种方法,一是缩短运算单元与存储器之间的物理距离,二是使用高带宽内存即HBM,三加大内存容量。此外,也可以设计一些软件改善内存瓶颈的方法,比如修改算法指令集,让权重值快速加载,提高数据复用率,减少频繁读取。
总结
随着自动驾驶系统开发的不断深入,对于其域控制器芯片的相关运行状态提出了较高的需求,该需求不仅能够实现在驾驶辅助阶段的基本运算能力,还会因为高级自动驾驶系统的搭载新增不少传感器信息处理,其最具典型性的特征就是数据量的成倍增加,这使得对于自动驾驶控制器的设计选型而言提出了更高的要求。本文详细梳理了自动驾驶控制器的评估方法,特别是对于其中的各个参数选择,分析等方面从实例方面提出了运算指标。在工程开发前端就需要根据选型过程中所要求的部分提前进行参数预估,这也将深刻的影响到后续自动驾驶设计和开发的成效。