自动驾驶芯片,本质上是一种包含处理器和控制器的高算力功能芯片,目前已量产商用的自动驾驶芯片基本处于高级驾驶辅助系统阶段,可实现L1-L2级辅助驾驶,通常这类自动驾驶域控制器所采用的芯片不需要太高的AI算力,更多的是应用逻辑算力进行相应的逻辑运算。Np0ednc
为了满足当前和未来的系统架构发展和整车功能需求的爆发式增长,IT技术的渗透结合逐渐加快了多核大算力处理器的发展,本文将对有关智能驾驶芯片内部结构做较为详细的剖析,旨在为智能驾驶中央域控制器设计过程中需要考虑的问题提供支撑。Np0ednc
Np0ednc
CPU逻辑运算核Np0ednc
未来智能汽车电子电器架构和整车功能越来越复杂,需要计算能力更强大的硬件来支持越来越复杂的软件功能,这些软件功能需要更多并行计算能力,相同时间片内支持运行多个任务的串行计算,系统优化响应能力,协调资源调配。Np0ednc
这一系列功能性能需求就越来越需要多核处理器的支持,多核处理器从内核架构上主要分为:同构和异构处理器两类。在对功耗要求很严格的车载域控制器中,通常采用的多核SoC是由CPU内核和其它内核集成的异构多核架构。Np0ednc
Np0ednc
一般地,对于未来智能汽车域控单元的芯片SoC而言,要求适配下一代智能网联汽车架构设计,需要更多适用于生成多个线程的应用,或是执行流媒体数据处理的应用。并且由于在处理流媒体数据时,必须实现流水线的并行处理,处理独立数据时,必须利用多个线程执行。以上这些需求就必然发展为集成多个同类型CPU内核和其它加速器内核的架构。由于GPU内核擅长浮点运算,可以用于图形渲染处理,不仅可用作的矢量处理器,也可以采用GPU内核来弥补CPU内核的缺陷,用它来处理CPU内核所不擅长的那些工作。但GPU的缺陷也很明显,即无法单独工作,必须由CPU进行控制调用才能工作。严格意义上说,GPU是一种高性能的CPU运算单元。Np0ednc
对于车载芯片选型而言,需要重点关注与CPU逻辑运算相关的几个指标。Np0ednc
1、逻辑算力Np0ednc
CPU的逻辑算力与CPU的核心的个数,核心的频率,核心单时钟周期的能力三个因素有直接关系。对于多核异构CPU而言,其整体算力可看成是多个核算力的总和。Np0ednc
CPU的逻辑算力将直接影响SOC芯片的感知处理能力,总体表现为对于前端感知的原始目标(图像、激光点云等)的前融合处理(这里不包含AI感知运算)。而整体来讲,前融合所消耗的逻辑算力可以占据整个逻辑算力的50%以上。因此,确保前端AI芯片有具备足够算力的CPU内核是极为重要的。因为对于后端MCU进行的规控来说,基本上都是采用的比较少的逻辑算力的芯片进行规划控制、决策执行的处理过程。这里需要指出一点,很多tier1提供的解决方案是针对逻辑或AI算力不充足的情况下是不断增加同类型的AI芯片来实现算力扩充,实则完全没有必要,这里不仅成本增加,且功耗也会随着增加的芯片而增大。因此,我们在进行域控制器设计中不仅需要考虑到前端SOC的AI算力是否足够,也需要充分考虑其逻辑算力是否满足需求,判定在当前架构下AI算力已满足性能需求,但是逻辑算力不够,可通过单独扩展相应的逻辑算力加速芯片作为补充。Np0ednc
2、主频Np0ednc
也叫时钟频率,单位是MHz(或GHz),用来表示CPU的运算、处理数据的速度。基本上可以认为主频就很大程度上决定着CPU的运行速度,进一步地决定着对于逻辑运算单元的处理效率。在芯片选型中,我们需要充分考虑到对于CPU运算效率的需求,尽量选择主频较高的CPU。Np0ednc
3、缓存(CACHE)大小及速度Np0ednc
缓存是用来存储一些常用或即将用到的数据或指令,其结构和大小对CPU速度的影响非常大,就当需要这些数据或指令的时候直接从缓存中读取,这样比到内存甚至硬盘中读取要快得多,能够大幅度提升CPU的处理速度。Np0ednc
4、工作电压Np0ednc
CPU的工作电压直接影响着其运行时的功耗大小,CPU所分担的功耗直接影响着整个SOC的功耗大小。Np0ednc
TPU/NPU/BPU AI运算核Np0ednc
对于域控制器AI运算而言,实际更多的涉及计算机视觉中的神经网络、深度学习等相关的运算机制。这里我们需要指出的是AI运算核是没有统一叫法的,不同的公司开发的AI运算单元名字叫法是不一致的。大体上可以分为如下三种主流的叫法。Np0ednc
Np0ednc
Np0ednc
BPU算法训练一旦形成,就不支持在线编程,且必须由CPU进行调用和控制下才能高效运行。Np0ednc
下面将以其中一种AI运算核BPU进行详细的原理说明。Np0ednc
Np0ednc
Np0ednc
Np0ednc
地平线的BPU内承载了进行神经网络运算的积累加运算(英语:Multiply Accumulate, MAC)单元。通过应用MAC 指令,可以使 的乘加运算用一个指令完成。而许多运算(例如卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算)都可以分解为数个MAC 指令,因此可以提高上述运算的效率。Np0ednc
同时,地平线的BPU采用双核的结构,同时在其控制单元里跑两套相同的程序,并对对方运算结果进行相互校验,由检查器模块对比两个BPU应用程序的执行输出,在输出结果一致的情况下,由检查器模块产生中断,将两个BPU当前状态以检查点文件的形式保存到存储器上,在输出结果不一致的情况下,由检查器模块产生中断,两个CPU处理器调取最近一次保存的检查点文件实施回卷以恢复系统进行重新计算。这一过程类似于实现了BPU内的锁步功能,这样可以很大程度上提升其运算结果的准确性,确保其SOC的功能安全性能。Np0ednc
功能安全岛Np0ednc
高性能自动驾驶芯片需要在多核架构上承载功能安全拆解的功能目标值,其中包括在软错误发生后,可以及时的进行错误纠正,将系统恢复到安全状态。这就要求在多核系统上实现一定的软硬件的功能安全设计目标。通常情况下,各个芯片厂家会倾向于纳入功能安全岛来作为实现芯片功能安全的机制。从原理上分析,功能安全岛可划分为硬件锁步,软件分区的方式来进行功能安全目标提升。如下将分别进行介绍。Np0ednc
Np0ednc
所谓硬件锁步,就是在芯片设计中同时搭载两套硬件内核,每个内核分别承载两套相同的软件模型,当输入源相同时,则实现了两个硬件内核的相同运算机制,同时该过程需要保持两个运算核的独立性,其运算的结果将会在每个周期都进行一次比较,当出现差异时,生成一个trap,该trap触发一个中断,将两个锁步核中运行状态以文件行驶保存在存储器上,并调用最近一次保存的文件回卷以恢复系统重新进行计算。整个过程相当于不断进行自检与互检的过程。Np0ednc
Np0ednc
Np0ednc
Np0ednc
所谓软件分区,其目的是确保程序的并行运行和安全计算能力。其过程是根据软件的可并行性核相关安全架构,将上层软件模块分配给Auosar中定义的操作系统应用程序执行相应的作业Task,且该过程需要确保ECU在运行时不会引起内部区域之间的相互干扰。Np0ednc
片上网络Np0ednc
由于SOC中的处理器采用了多MIPS 处理核心,每个核心拥有私有的指令缓存(I-Cache)和数据缓存(D-Cache)。片上网络,本质上是为了解决片上多核系统中不同的核心之间,核心与非核心(Un-Core)硬件单元之间数据传输问题的一种“片上通信”方案。Np0ednc
Np0ednc
Np0ednc
图像/视频处理单元Np0ednc
SOC芯片上的图像处理单元主要包括几个部分功能:数字图像信号处理、图像分割(Pyramid)、图像拼接(Stitch)、图像渲染(GDC)以及视频编解码功能。Np0ednc
ISP模块接收感光元件(Sensor)的原始信号数据,并处理图像传感器输出的图像信号,对图像质量起着非常重要的作用。ISP内部包含多个图像算法处理模块,其中主要包含如下几种:Np0ednc
-通过扣暗电流去掉底电流噪声;Np0ednc
-通过线性化解决数据非线性问题;Np0ednc
-解决镜头带来的亮度衰减与颜色变化;Np0ednc
-通过去坏点,剔除sensor中坏点数据);Np0ednc
-通过数字图像滤波进行图像去噪;Np0ednc
-通过感光半导体处理将原始环境光源数据转为RGB数据;Np0ednc
-自动白平衡,自动对焦,自动曝光;Np0ednc
-亮度映射曲线,优化局部与整体对比度;Np0ednc
Np0ednc
Np0ednc
Np0ednc
此外,ISP的处理过程还包括如下几个部分:即旋转(角度变化),锐化(调整锐度),缩放(放大缩小),色彩空间转换(转换到不同色彩空间进处理),颜色增强(可选,调整颜色),肤色增强(可选,优化肤色表现)等。Np0ednc
图像分割实在神经网络处理逻辑之前进行简单的场景分割,将环境中明显可表达的语义进行分别输出。图像拼接是针对有一定overlap的图像进行全场景范围拼接,拼接的结果主要用于流媒体显示。Np0ednc
Np0ednc
Np0ednc
Np0ednc
此外,图像处理单元一版还会额外搭载一些视频编解码核,一般可应用HEVC的方式进行编解码。更为强大的图像/视频处理单元会有能力进行3D图像渲染。这一部分可能会用到GPU的相关计算能力。这里需要说明一下的是,在我们设计域控制器的时候,很多情况下,我们选择的SOC芯片是不具备足够的3D渲染能力的,这时,从整个先进的显示方案需求出发,我们就需要采用额外的处理器进行渲染。Np0ednc
这里有两种方案:Np0ednc
其一,是采用驾驶域控制器的芯片扩充方案,即在自动驾驶域控制器AI芯片外围在增加相应的GPU芯片进行集成,两者可通过PCIe进行图像传输。Np0ednc
其二,是采用座舱域控制器芯片扩充方案,即在智能座舱控制器芯片中集成GPU处理能力的芯片直接做渲染和显示。Np0ednc
总结Np0ednc
自动驾驶芯片除了如上一些关键设计要素会影响域控制器的设计选型外,还包括了如下一些非关建要素,但是却还是比较重要的方面。Np0ednc
其一,是接口外设。对于自动驾驶芯片来讲,足够多且有效的接口外设是必不可少的,因为对于下一代智能网联域控制器来说,其架构所带来的传感器数据量的变化是成指数级增加,因此,芯片内部预设足够的接口是非常必要的。基本上,我们需要SOC具备多路CANFD、PCIe、ethernet、GPIO、MIPI、UART、I2C、I2S等接口。具体情况需要根据架构来指定选用哪几路。Np0ednc
其二,是附加存储控制。选择合适的存储器解决方案是满足目标系统对车载控制器芯片的功能和性能要求的关键,帮助设计人员解决其目标片上系统 (SoC) 的功耗、性能和面积要求。同时,附加存储控制主要可以扩充SOC芯片由于内部存储资源不充足所产生的存储数据溢出。通常附件存储可作为临时作为操作系统、数据驱动的资源池,大大降低了程序调用的难度,提升了运行效率。Np0ednc
其三,是信息安全监控。主要包含数字身份认证、看门狗程序、底层安全驱动、加密引擎等几个方面。其目的是在系统运行期间实现系统的安全、认证启动或主机监测。Np0ednc
已发送Np0ednc
发送中Np0ednc
微信扫一扫Np0ednc
关注该公众号Np0ednc