域控制器的兴起对传统的汽车MCU厂商造成了极大的挑战,“因为MCU使用量将大大减少,传统的MCU产品其演进路线将不复存在”。
在分布式ECU时代,计算和控制的核心是MCU芯片,传输的基础核心是基于传统的CAN、LIN和FlexRay等低速总线。但在域控制器时代,高性能、高集成度的异构SoC芯片作为域的主控处理器,将成为域控制器的计算与控制的核心芯片。而汽车TSN(Time-Sensitive Network)以太网因为具有高带宽、实时和可靠的数据通信能力等特点,必将成为整车通信的核心基础设施,尤其是域主控处理器之间的通信主干网。
下面我们来简单分析一下域控制器以及核心的主控处理器的一些关键技术和趋势。
3.1 高性能总的来说,对算力的需求提升一直是域控制器核心芯片发展的主要推动力。一方面原本由多个ECU完成的功能,现在需要依靠单一的域主控处理器来完成,并且还需要管理和控制所连接的各种传感器与执行器等。比如:底盘、动力传动系统和车身舒适电子系统的域主控处理器,其算力需求大约在10000DMIPS-15000DMIPS左右。
图2-5 汽车域控制器对CPU DMIPS算力的需求预测
新的智能汽车,除了要更多的与人交互外,更需要大量的对环境进行感知,这就需要计算和处理海量的非结构化数据,因此座舱域和自动驾驶域都要求高性能的CPU,比如就座舱仪表的CPU算力而言,它其实跟一部高端智能手机的CPU算力差不多,约为50000DMIPS左右。此外,为了支持L2辅助驾驶功能或者更高级别的自动驾驶功能,需要运行很多视觉DNN模型算法,这就又额外需要上百TOPS的AI算力。
所以,各芯片厂商总是会尽量使用更先进的制程工艺、更先进的CPU核于与NPU核来尽量提高域主控芯片的CPU核心性能与NPU性能。
3.2 高异构性伴随着AI技术在视觉领域的应用,基于视觉的自动驾驶方案逐渐兴起,这就需要在CPU的基础上加装擅长视觉算法的GPU芯片,从而形成“CPU GPU”的解决方案。
不过,“CPU GPU”组合也并非最优解决方案,因为 GPU 虽然具备较强的计算能力,但成本高、功耗大,由此又逐步引入了FPGA和 ASIC 芯片。
总体来看,单一类型的微处理器,无论是 CPU、GPU、FPGA还是ASIC,都无法满足更高阶的自动驾驶需求,域控制器中的主控芯片会走向集成“CPU xPU”的异构式 SoC(xPU 包括 GPU/FPGA/ASIC等),从而能较好的支撑各种场景的硬件加速需求。
3.3 高集成度从功能层面上,域控制器会整合集成越来越多的功能。比如动力系统域可能把发动机的控制、电机控制、BMS、车载充电机的控制组合在一起。有些主机厂甚至直接一步到位,将底盘、动力传动以及车身三大功能域直接整合成一个“整车控制域(Vehicle Domain Controller,VDC)”。
要支持这些功能的整合,作为域控制器的大脑,域主控处理器SoC就需要集成尽可能多的接口类型,比如:USB、Ethernet、I2C、SPI、CAN、LIN以及FlexRay等等,从而能连接和管理各种各样的ECU、传感器和执行器。
3.4 硬件虚拟化对硬件虚拟化技术的需要主要来自两方面:(1)硬件资源的分区与隔离;(2)支持混合安全等级。
原本需要多个ECU实现的多个功能都整合到域控制器上后,势必会导致域控制器的软件更为复杂,这势必会导致整个软件系统的出错概率增加、可靠性下降。而且多个应用混合运行在同一个操作系统上,经常会出现故障传播(Failure Propagation),也就是一个应用出现问题后,会使得整个系统底层软件和硬件都处于紊乱状态,从而导致其它原本正常的应用也会开始出现故障。因此通过硬件虚拟化技术对硬件资源进行分区(Partition),使得各个功能对应的软硬件之间互相隔离(Isolation),以此保证整个系统的可靠性。
另一方面,在汽车电子系统中,通常不同的应用其对实时性要求和功能安全等级要求都不同。例如,根据ISO 26262标准,汽车仪表系统与娱乐信息系统属于不同的安全等级,具有不同的处理优先级。汽车仪表系统与动力系统密切相关,要求具有高实时性、高可靠性和强安全性,要求运行在底层实时操作系统上(比如QNX)。而信息娱乐系统主要为车内人机交互提供控制平台,追求多样化的应用与服务,以Linux和Android为主。为了实现混合安全等级的应用,实现不同的操作系统运行在同一个系统上,这就需要虚拟化技术的支持。
车载硬件虚拟化技术的核心是Hypervisor,它是一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个不同虚机上的操作系统和应用共享一套基础物理硬件。当系统启动时,首先运行Hypervisor,由它来负责给每一台虚拟机分配适量的内存、CPU、网络、存储以及其它硬件资源等等(也就是对硬件资源进行分区),最后加载并启动所有虚拟机的客户操作系统。
一句话总结一下基于Hypervisor的优点:它提供了在同一硬件平台上承载异构操作系统的灵活性,同时实现了良好的高可靠性和故障控制机制, 以保证关键任务、硬实时应用程序和一般用途、不受信任的应用程序之间的安全隔离,实现了车载计算单元整合与算力共享。
3.5 ISO 26262功能安全功能安全是汽车研发流程中非常关键的要素之一。随着系统复杂性的提高,来自系统失效和随机硬件失效的风险日益增加。ISO 26262标准制定的目的就是更好的规范和标准化汽车全生命周期中的功能安全管理和要求,包括:概念阶段、系统研发、硬件研发、软件研发、生产和操作过程、售后等环节,尤其重点在产品设计阶段如何定义和实现功能安全的目标。
载汽车功能安全标准ISO26262-5 2018 “产品开发:硬件层面附录D”中对处理器单元的诊断覆盖率推荐的安全技术措施中,双核锁步(dual-core lockstep)、非对称冗余和编码计算是三种典型的硬件冗余技术措施。除此之外,硬件BIST、软硬件Self-Test技术、ECC等也是常见的提高处理器安全特性的设计措施。
图2-6 ISO26262标准中的功能安全芯片设计技术
双核锁步CPU是一种CPU冗余技术,在一个芯片中包含两个相同的处理器,一个作为master core,一个作为slave core,它们执行相同的代码并严格同步,master可以访问系统内存并输出指令,而slave不断执行在总线上的指令(即由主处理器获取的指令)。slave产生的输出,包括地址位和数据位,发送到比较逻辑模块,由master和slave总线接口的比较器电路组成,检查它们之间的数据、地址和控制线的一致性。检测到任何总线的值不一致时,就会发现其中一个CPU 上存在故障,但不会确定是哪个CPU故障。
这种CPU架构使得CPU自检独立于应用软件,不需要执行专门的指令集自检,实际运行的软件指令在每个时钟都进行比较,只需要测试软件用到的CPU资源,但这种架构不会对内存和总线进行检测,需要增加单独的检测方法以避免两个CPU的共模故障。
3.6 网络卸载引擎汽车网络会存在多种通信总线。骨干网未来势必会基于TSN以太网来构建,但是从域主控处理器到ECU或者传感器之间的通信则仍然是基于传统的车载低速总线,比如:CAN、FlexRay等。域主控处理器作为域控制器的核心,是所有ECU和传感器通信的汇聚中心。因此如果要依靠CPU的算力来完成不同总线间的协议转换,以及跨域通信的网络包处理的话,势必会占用宝贵的CPU算力资源。
因此基于硬件来实现网络协议转换处理的网络卸载引擎,对于各个域(包括中央网关)的域主控处理器是非常重要的技术。
3.7 Security引擎连接性(Connectivity)是汽车智能化发展的一个很重要的趋势,未来的汽车一定会像今天的手机一样随时保持连接到互联网中。因此如何阻止未经授权的网络访问,以保护汽车免于受到黑客的攻击,对未来的智能汽车而言就会变得极为重要。下一代硬件安全模块(Hardware Security Module,HSM)正在成为下一代车载网络通信的重要基础设施之一。
HSM对于完全的安全车载通信(Secure Onboard Communication,SecOC)是必不可少的。HSM能确保所接收到的数据的真实性,防止攻击者绕过相关的安全接口,入侵车载网络。
基于硬件的安全模块主要解决两个问题:
- 密钥泄漏问题:如果密钥存储在应用程序的代码或数据中,很容易被泄漏。所以有必要增加一个硬件模块,专门存储密钥。
- Crypto算法加速:通过内核来直接进行加密或解密运算会占用大量CPU算力资源。因此,有必要通过硬件模块来进行加密解密算法的加速。
SHE(Secure Hardware Extension)标准是由奥迪和宝马公司合作制定的、针对硬件安全模块HSM的规范,它主要包括密码模块的硬件、硬件软件接口。这个规范已被广泛接受,很多针对汽车行业的微处理器都支持这个规范。
3.8 面向服务的软件架构SOAECU原先运行的软件大多数是按照Classic AutoSAR规范开发的软件系统,其中的应用软件一般都是静态调度(Static Scheduling)模式的,也即在系统运行时,程序中不同功能的函数按照事先定义好的排序文件依次调用、逐个运行。静态调度的优点是资源分配问题都是事先安排好的,车辆量产后就不会再改变,每个功能对应的函数代码具体运行时间也被提前锁定,是确定性的。因此这种设计对于汽车上很多对功能安全要求苛刻的场景是非常适合的。比如:决定安全气囊是否打开的功能函数就是固定地每隔几毫秒运行一次,以便紧急情况下可以及时打开。
承载计算和控制的底层硬件从分散的多个ECU集中到多核、异构的高性能域主控处理器后,相应的软件也会从分散向集中、从简单向复杂、从静态向动态进化。下图2-7显示了以后汽车域控制器上的典型软件架构:
图2-7 域控制器上基于空分虚拟化技术的典型软件架构
- 操作系统层:最底层利用Hypervisor虚拟化技术对硬件资源进行分区(partition),从而可以在每个虚机运行不同的操作系统。比如在上图中,虚机VM1中运行兼容POSIX实时操作系统标准(比如PSE 52)的RTOS,RTOS上通常要承载功能安全相关的应用和服务;虚机VM2中运行Linux这种完全POSIX标准的分时操作系统,上面通常运行管理相关的功能和服务;虚机VM3中运行的可能是原来在ECU上运行的Legacy应用。
- 中间件层:操作系统是不做任何与“车”特定相关工作的。为了让域主控处理器在汽车场景下使用,需要有很多软件或者中间件用于让域控制器满足汽车的电源管理标准、网络管理标准以及诊断标准等;车载域控制器需要比一般工业嵌入式系统有更高的可靠性要求,这样就需要在计算机OS基础上再附加对存储和通讯等各方面的安全保护和容错机制;同时,位了让车载域控制器能够在整车EE架构下运行,还需要提供时钟同步、日志跟踪以及服务管理和发现等功能。Adaptive AutoSAR规范定义了运行在Linux或者完全兼容POSIX 1003.1标准RTOS上的这一层与“车”相关的中间件标准;而传统运行在POSIX子集的RTOS或者BareMetal模式的中间件规范则由Classic AutoSAR标准定义。
- 应用层:上层应用基于AutoSAR标准的中间件来进行开发。随着汽车智能化和网联化相关的功能越来多,上层应用软件也越来越复杂。位了降低单个应用的整体复杂性,我们可以借鉴互联网的面向服务架构(SOA)的软件设计思想,将一个复杂应用拆分多个服务。每个服务实现得尽可能小,尽量实现成无状态方式的服务,以利于整个系统的开发、测试和软件重用。服务与服务之间通过事件或者消息总线(发布/订阅工作模式)来进行通信,并降低互相之间的耦合度。通过服务配置来管理服务之间的依赖性、服务的部署和启动,以及服务的健康状态检测等。
汽车以太网给车载系统通信带来一个革命性的变化,在中央计算式汽车EE架构下,整个车载系统可以被看作是一个分布式网络系统:中央计算平台是一个小型服务器集群,区域计算平台是边缘计算节点。在互联网或者大型分布式系统中,SOA架构设计理念已经被广泛使用了。因此当IP网络技术被广泛应用于汽车后,很多在互联网或者分布式计算中已经很成熟的软件技术,自然会被借鉴到新的汽车软件架构设计中来,比如:RPC技术、事件/消息总线、RESTful API设计等。
大型互联网数据中心中的服务器集群动辄几百、上千台服务器,每秒百万、千万级别的并发。车载系统尽管可以被看作是一个分布式网络系统,但是它却没有互联网大型服务器系统的高并发特征,相反,它更注重通信的实时性和可靠性。
车载系统在物理上是向集中式发展的,也就是原来通过多个分散ECU来实现的功能,渐渐集中到几个主要的高性能域控制器上。因此,尽管在软件设计上,我们会尽量按照SOA的思路拆分成一个一个小的服务,但是这些服务在部署上其实是集中式的。鉴于这种物理部署上的“集中”与运行时的“分布式”并存的特点,因此我们可以通过一系列技术手段来优化服务与服务之间的通信延迟(比如:通过共享内存技术)。这是车载分布式系统与互联网强调高并发特性的分布式系统之间另一个显著的差别。