前言:
前一段时间特斯拉可付费在线激活后排座椅加热功能又叒叕上了全网热搜,许多人都称之为软件定义汽车的又一次科普。软件定义汽车这个论断已经开始深入人心!
那么未来汽车真的会由软件来定义吗?或者说未来汽车真的只由软件来定义就够了么?
1、硬件与软件---皮之不存毛将焉附?
软件与硬件从来都是唇齿相依的共生关系,硬件是软件的载体,软件是硬件的表达,软件决定了硬件的操控水平,硬件决定了软件的功能边界。
以消费电子的头部网红美国苹果公司为例,这家以手机操作系统为核心竞争力的软件生态公司,却出人意外地在每场新品发布会上用大篇幅时间介绍其产品在硬件方面的黑科技。其实在我们的生活中也有这种感受,用一台老电脑玩最新的大型游戏完全带不动,用老手机装新系统卡顿得让人怀疑人生。所以软件在前面大放异彩,少不了硬件在背后默默地支持。
苹果公司2020年的秋季发布会上介绍A14苹果芯片
2、自动驾驶落地需要硬件(AI芯片)的算力支持
自动驾驶的实现,需要依赖感知传感器对道路环境的信息进行采集,包括超声波、摄像头、毫米波雷达、激光雷达等,采集的数据需要传送到汽车中央处理器进行处理,用来识别障碍物、可行道路等,最后依据识别的结果,规划路径、制定速度,自动驱使汽车行驶。整个过程需要在瞬时完成,延时必须要控制在毫秒甚至微秒级别,才能保证自动驾驶的行驶安全。要完成瞬时处理、反馈、决策规划、执行的效果,对中央处理器的算力要求非常高。最直观的体现,便是用于感知道路环境的摄像头,通常密布车身,数量在12个左右,为了识别障碍物,处理器需要对多路摄像头实时拍摄的数据进行解析,而单颗1080P的高清摄像头每秒可以产生超过1G的数据,数据量不可谓不大。而为了准确识别图像、视频中的有效信息,业内多采用深度学习神经网络。
深度学习由训练和推理两个部分组成
深度学习的根本思想就是把任何事物转化成高维空间的向量,而强大无比的神经网络则是无数的矩阵运算和简单的非线性变换的结合。深度学习神经网络的实质就是将分析过程抽象成乘法的乘积结果和累加器的值相加,再存入累加器的乘法累积计算。深度学习的关键理论是线性代数和概率论,剩下的就是蛮力计算,因此深度学习神经网络尤其是几百上千层的神经网络对高性能计算要求非常高!因为算力越高在一定时间内就可以处理更多的信息,决策的准确性就会越高!研究表明自动驾驶等级每提高一级,算力就得增加一个数量级,L2 级别只需2TOPS(TOPS:万亿次浮点指令每秒)算力,但L5则需4000多TOPS算力。
如果说传统燃油车的性能好坏很大一部分由发动机功来决定,那么未来自动驾驶汽车的好坏很大一部分由AI芯片这个数字引擎的来决定!
3、自动驾驶硬件(AI芯片)的架构分类
由于自动驾驶高算力和低功耗的强烈需求,传统单独依靠CPU控制芯片已不能满足该领域的应用需求。CPU最大的优势是灵活性。通过冯诺依曼架构,我们可以为数百万的不同应用加载任何软件。但是由于CPU非常灵活,硬件无法一直了解下一个计算是什么,直到它读取了软件的下一个指令。CPU必须在内部将每次计算的结果保存到内存中(也被称为寄存器或 L1 缓存)。内存访问成为CPU架构的短板,被称为冯诺依曼瓶颈。虽然神经网络的大规模运算中的每一步都是完全可预测的,每一个CPU的算术逻辑单元(ALU,控制乘法器和加法器的组件)都只能一个接一个地执行它们,每一次都需要访问内存,限制了总体吞吐量,并需要大量的能耗。总而言之CPU虽然能够非常高效地处理各种计算任务,但CPU的局限是一次只能处理相对来说很少量的任务,因此其计算速度要求无法满足深度学习这种需要出色的并行矩阵计算能力的应用场景需求!
CPU已经不能满足未来自动驾驶芯片的要求
目前,应用于L3 以上自动驾驶领域的主控制芯片按照技术架构主要分为三大类:
一、以英伟达公司的DRIVE PX平台为代表的图像处理单元GPU(Graphics Processing Unit)。GPU在执行单个任务时效率较低,而且所能处理的任务范围更小。不过GPU 的强大之处在于它们能够同时执行许多任务,因此GPU对处理复杂运算拥有天然的优势。例如,如果你需要乘3个浮点数,CPU会强过GPU;但如果你需要做100万次3个浮点数的乘法,那么GPU会碾压CPU。实践证明GPU对于神经网络的训练和分类都可以提供显著的加速效果。
但是GPU在应用于深度学习算法时仍然有四个方面的局限性:
1,应用过程中无法充分发挥并行计算优势。深度学习包含训练和推断两个计算环节,GPU 在深度学习算法训练上非常高效,但对于单一输入进行推断的场合,并行度的优势不能完全发挥;
2,无法灵活配置硬件结构。GPU 采用 SIMT 计算模式,硬件结构相对固定。目前深度学习算法还未完全稳定,若深度学习算法发生大的变化,GPU 无法灵活的配置硬件结构;
3,GPU仍然是一种通用的处理器,这又把我们带回到了基础的问题-冯诺依曼瓶颈。在每次几千个ALU的计算中,GPU 都需要访问寄存器或共享内存来读取和保存中间计算结果。因此GPU若想在其 ALU上执行更多的并行计算,它也会成比例地耗费更多的能量来访问内存,同时也因为复杂的线路而增加 GPU 的物理空间占用。因此为了提升运行速度,GPU选择堆砌内核,导致尺寸不具有优势;
4,GPU功耗巨大。NVIDIA 的 Drive PX 以及 Xavier 性能虽强,但整体功耗达到了250w,这会对汽车的电力系统造成一定压力。一般状态下的汽油车是只有引擎发动时才能发电带动功耗较大的设备功能,比如说冷气,如果自动驾驶的控制核心就必须消耗上百瓦的功耗,虽然理论上可以在怠速时关闭大部分针对自动驾驶的计算功能来节省功耗,但对于燃油汽车的传统电池仍会造成相当大的压力。就算是电动车,如果非马达部件需要消耗这么大的电力,那对于行驶里程也将有一定的减损。且如果开启自动驾驶,这些控制核心为了对外围环境进行计算、掌握变化,并随时针对驾驶情境进行反应,理论上都是要不间断、满负荷工作,根本没有机会进入可以降低功耗的休息模式。
自动驾驶的芯片需要实时统合庞大的数据,从而判断出驾驶环境并决定驾驶策略
二、以地平线公司的征程系列为代表专用集成电ASIC(Application Specific Integrated Circuit)。ASIC芯片的计算能力和计算效率都直接根据特定的算法的需要进行定制的,所以其可以实现体积小、功耗低、高可靠性、保密性强、计算性能高、计算效率高等优势。所以,在其所针对的特定的应用领域,ASIC芯片的能效表现要远超CPU、GPU等通用型芯片以及半定制的FPGA。
地平线征程3芯片算力达到5TOPS,功耗仅有2.5W
以蔚来ES8上使用的Mobileye EyeQ4芯片为例,其最高运算速率为2.5TOPS,功耗仅为3W。奥迪A8、沃尔沃XC90、特斯拉Model S等自动驾驶车型上搭载了Mobileye EyeQ3芯片,最高运算速率为0.256TOPS,功耗为2.5W,也可满足自动驾驶L2~L3级所需的计算能力。
除了地平线征程系列、Mobileye的EyeQ系列以外,谷歌的TPU系列、寒武纪的Cambricon1M系列也都属于ASIC芯片。
当然,ASIC芯片的缺点也很明显,因为其是针对特定算法设计的,一旦芯片设计完毕,其所适应的算法就是固定的,所以一旦算法发生变化就可能将会无法使用。但是,随着自动驾驶软件、算法越来越成熟和稳定,车企们都将会选择自主开发匹配自己技术方案的自动驾驶专用芯片ASIC。
不同体系结构性能和灵活性的比较
三、以Xilinx公司的ZYNQ 系列为代表的现场可编程门阵列FPGA(Field-Pro⁃grammable Gate Array)。FPGA 是在 PAL、GAL、CPLD 等可编程器件基础上进一步发展的产物,可以通过烧入 FPGA 配置文件来定义这些门电路以及存储器之间的连线从而实现功能。FPGA可同时进行数据并行和任务并行计算,可以实现比 GPU 更高的并发处理。在密集处理和高并发上能力上占优,而且功耗比 CPU、GPU低。尽管FPGA备受看好,但其毕竟不是专门为了深度学习算法而研发,在实际应用中也存在诸多局限:
1、基本单元的计算能力有限。为了实现可重构特性,FPGA 内部有大量极细粒度的基本单元,但是每个单元的计算能力(主要依靠 LUT 查找表)都远远低于 CPU 和 GPU 中的 ALU模块;
2、计算资源占比相对较低。为实现可重构特性,FPGA 内部大量资源被用于可配置的片上路由与连线;
3、速度和功耗相对专用定制芯片(ASIC)仍然存在不小差距;
4、FPGA 价格比起 ASIC 较为昂贵,在规模放量的情况下单块 FPGA 的成本要远高于专用定制芯片ASIC。
赛林思ZYNQ系列自动驾驶芯片
4、硬件与软件---躯体与灵魂
如果把软件比作未来汽车的灵魂,那么搭载软件的硬件则是灵魂所依靠的躯体。
灵魂与躯体之间是是密不可分,软件与硬件同样是一种融合共生的关系。
没有高性能的硬件,软件无法发挥自己的优势,软件不够优化,再强大的硬件也无处施展自己的性能,聪明的软件配合强大的硬件才能让自动驾驶技术最终落地为人类服务。
而未来汽车必将是一个拥有强健体魄和聪明大脑的有机体!
聪明的汽车是软件与硬件的有机体
现在回到开头的问题:
未来汽车会由软件来定义吗?
- 答案是肯定的,因为软件是未来汽车非常重要的一部分!
- 答案显然是否定的,因为未来汽车由软件来定义,它同样也由硬件来定义!
软件定义汽车,硬件决定软件!