布谷鸟产业研究-智能座舱虚拟机研究
智能座舱系统让驾驶及汽车成为一体,通过不同的视觉模式,掌控行车环境及车内信息。随着高性能多核处理器在座舱电子领域的广泛应用,面对复杂的环境和控制要求,虚拟机能够更好的发挥芯片性能和节约成本,已经成为座舱电子不可或缺的软件系统,为了更好的应用这一技术在我们公司的智能座舱域控制器上,布谷鸟科技对座舱电子虚拟机技术进行了专业的产业研究。
新一代座舱电子SOC平台主要有:瑞萨R-CAR 3、德州仪器的Jacinto 7、英特尔Apollo Lake系列、NXP的i.mx8系列、联发科MT27xx系列、三星Exynos Auto 88xx系列与V系列、高通的SA系列。
虚拟机Hypervisor,有些地方也把它称为VMM(virtual machine monitor),这个概念来自PC界,随着座舱处理器的性能越来越强,座舱屏幕越来越多,座舱电子涵盖的功能越来越多,虚拟机已经成为座舱电子不可或缺的软件系统,ARM V8-A架构芯片的大量应用也使得虚拟化很容易实现,多核高性能处理器不用虚拟机也难发挥全部性能,虚拟机已经是高性能多核处理器的标配。单处理器可以节约大量成本,无需仪表MCU,无需仪表的10层PCB,无需仪表ECU盒子,无需存储器,无需CAN收发器和大量线束。
在虚拟化环境下,物理服务器的CPU、内存和I/O等硬件资源被虚拟化并受Hypervisor的调度,多个操作系统在Hypervisor的协调下可以共享这些虚拟化后的硬件资源,同时每个操作系统又可以保存彼此的独立性。对座舱电子来说通常是三个OS,一个是强调实时性的仪表OS,一般是ASIL B。一个是丰富功能的娱乐OS,一般是ASIL A,还有一个弱ADAS功能,如360环视,DMS驾驶者行为监控,面部识别等,一般是ASIL C。通常都称之为Guest OS。
根据Hypervisor所处层次的不同和Guest OS对硬件资源的不同使用方式,Hypervisor虚拟化被分为两种类型:Bare-metal虚拟化方式(“裸机”虚拟化)和Host OS虚拟化方式(基于操作系统的虚拟化,宿主型虚拟化)。车载系统基本上都是裸机虚拟机,一般称之为Type-1型。除了基于软件的虚拟化之外,还有一类基于硬件的虚拟化,德州仪器和NXP更看好硬件虚拟化,他们首推硬件虚拟化。
Hypervisor直接给物理外设打交道,那它当然需要运行在特权privilege模式了,在过去没有virtualization extesion的情况下,guest os和guest application只能都运行在de-privileged模式,如下图所示。
特权模式下执行的指令分成了两类:sensitive instructions(敏感指令):这些指令试图去更改系统资源的配置信息,或者它的执行结果依赖于系统的状态。privilegedinstructions(特权指令):这些指令在非特权模式下会trap(产生异常,陷入中断向量表),在特权模式下可以正常执行。
敏感指令是特权指令的子集。这种标准现在被称为classically virtualized(经典可虚拟化模型), 不满足这个要求的情况下也可以做虚拟化(二进制翻译技术)。
ARMV7架构中包含8种处理器模式,其中包含1种非特权模式和7种特权模式:V8取而代之的是4个固定的Exception level,分別为EL0到EL3, 其中数字越大代表特权(privilege)越大。类似地,可以将EL0归属于non-privilegelevel,EL1/2/3属于privilege level。如下图所示。
EL0: 无特权模式(unprivileged),EL1:操作系統核心模式(OS kernel mode),EL2: 虚拟机监视器模式(Hypervisor mode),EL3:TrustZone® monitor mode。只有在异常(如:中断、page faults等)发生时(或者异常处理返回时),才能切换Exceptionlevel(这也是Exception level的命名原因,为了处理异常)。当异常发生时,有两种选择,停留在当前的EL,或者跳转到更高的EL,EL不能降级。对于ARMv8, Hypervisor运行在EL2异常级别。只有运行在EL2或更高异常级别的软件才可以访问并配置各项虚拟化功能。在EL2中实现额外的存储器转换层,称为“Stage 2转换”。hypervisor将为每个虚拟机创建和管理Stage 2的页表;提供3种虚拟异常的支持,Virtual SError, Virtual IRQ, 和Virtual FIQ。物理异常被配置为hypervisor捕获,虚拟异常将会被注入到Guest OS,针对Guest OS中dma设备,提供smmu硬件以支持dma重映射。
对于x86架构,运行在X86架构上的操作系统(Operating System,OS)被设计为具有直接访问和控制硬件资源的权限。X86架构使用0、1、2和3四个权限Ring来控制管理硬件访问权限,其中用户应用程序运行在Ring3权限中。OS因为需要直接访问物理硬件资源而在Ring0中执行。X86架构下的这种层级授权机制也会被应用到虚拟机中。虚拟化上,x86架构要比ARM V8难得多。
虚拟机分全虚拟和半虚拟两种,全虚拟是应用在虚拟操作系统上,半虚拟是API应用在虚拟操作系统上。
目前常见的虚拟机包括黑莓的QNX、英特尔主导的ACRN、Mobica为代表的XEN、松下收购的Open Synergy的COQOS、德国大陆汽车的L4RE,法国VOSyS的VOSySmonitor,其余还有很多,包括Green Hills的Integrity,日本的eSOL,SYSGO 的Pike,Mentor的Nucleus,三星哈曼的Redbend,EPAM的Xen。
QNX公认是最成熟安全程度最高的座舱虚拟机操作系统,不过收费较高,包括入门费、席位费、服务费和授权费(按屏幕数量收费)。QNX虚拟机采用虚拟CPU模式。
QNX使用基于优先级的虚拟CPU共享模式,每个虚拟CPU拥有自己的优先级和时间任务安排序列(scheduling),确保高安全优先级OS能够从低优先级OS那里抢占更多的物理CPU资源。虚拟CPU拥有估计资源预算能力,进而在物理CPU上实现自适应分区。能够最大化利用硬件资源。
各OS之间可以共享设备I/O界面,有助减低成本,减少开发周期。
在GPU虚拟方面,QNX引入仲裁机制,优先为高安全等级OS提供GPU资源。
在2018年的Linux嵌入式大会上发布的ACRN,是一款灵活的、轻量级的参考hypervisor,以实时性和关键的安全性为设计出发点,并且通过开源平台为精简嵌入式开发进行优化。ACRN的最大优势之一是尺寸小,发布时大约只有25K行代码。英特尔开源技术中心为项目贡献了源代码,ACRN的早期支持者包括英特尔、ADLink凌华科技、Aptiv、LG电子和东软。后续则有三星哈曼加入。ACRN不是缩写,发音为“acorn”,(acorn英文意思为橡子)寓意虽然开始很小,但最终可以长的很大,ACRN有两个关键组成:hypervisor和ACRN设备模块。ACRN Hypervisor是一个Type 1的hypervior,可以直接运行于裸机上。ACRN设备模块是针对虚拟设备仿真的参考框架实现,它提供丰富的I/O虚拟化支持,目前计划支持音频、视频、图形和USB。随着社区发展,预计会有更多设备虚拟化功能加入。
ACRN Hypervisor运行在裸机上,然后在其上可以运行一个基于Linux 的服务操作系统(SOS),然后可以同时运行多个客户操作系统,以便整合工作负载。ACRN hypervisor为Service OS创造了第一个虚拟环境,然后启动GuestOS。Service OS运行本地设备驱动程序来管理硬件,向Guest OS提供I/Omediation。Service OS以系统最高优先级的虚拟机运行,以满足时间对敏感需求和系统服务质量(QoS)的要求。Service OS目前可以运行Clear Linux,但是ACRN也支持其它Linux 的发行版或者专有RTOS作为Service OS或Guest OS。为了保持ACRN hypervisor代码库尽可能小且高效,大部分设备模块的实现驻留在Service OS,用来提供设备共享和其它功能。目的是保证在资源受限的设备上实现小尺寸,低延迟的代码库的优化。
ACRN的典型用例是奇瑞星途VX,这是奇瑞有史以来最高等级的车,也是奇瑞尺寸最大的车。配备了双12.3英寸液晶显示屏,仪表使用Clear Linux,仪表盘显示刷新频率达60Hz,中控采用最新的安卓9.0系统,这是转为车载系统开发的,包括一些专用功能,比如AI语音助手,空调灯光音量语音控制,导航AR增强等。同时配备面部识别系统,根据面部识别系统可以个性化设置内饰,同时导航是增强现实AR导航。使用Slim Boot Loader (SBL)技术让仪表盘冷启动低于2秒。
ACRN也有对ADAS的对应。
L4微内核系统由德国国家信息技术研究院JochenLiedtke设计(此人已在2001年过世),1995年公开。众所周知,基于消息传递(Message Passing )IPC 机制是微内核系统的基本特点之一。这一设计理念有助于提高系统的灵活性,模块化,安全性,以及可扩展性。IPC 的性能表现是决定微内核系统性能的关键因素,因为绝大多数系统调用和很多应用程序的服务都需要两个IPC, 一个服务请求,一个结果返回。消息传递IPC 机制现在已经大量用于多种计算机系统中,但是很多IPC 实现的性能并不太好。根据CPU 性能和消息长短不同,一个IPC 大概需要50到500 µs。L4内核支持三种抽象概念:地址空间,线程,和IPC。他只提供7 个系统调用,只有12K 字节代码。在486-DX50 机器上,一个地址空间切换IPC,8 字节参数传递,只需要5 µs 。1998年德国德累斯顿大学开发了基于L4的开源操作系统Fiasco.OC,采用基于对象的C++语言。同时也开发了L4运行环境,即L4Re。德国和法国的虚拟机系统推测有不少都是基于L4Re的。
Fiasco.OC里有专为虚拟机开发的部分,称之为NOVA,这也是德累斯顿大学的作品。
上图为NOVA架构,和虚拟化有关的主要是三个Microhypervisor,VMM(Virtual MachineMonitor)和Root Partition Manager。可以看出hypervisor是对硬件的一种抽象,而且提供一种硬件的并发访问和隔离机制(多个guest+os同时运行,共享硬件,但是又互相不影响),这些功能与操作系统的功能十分类似, 能不能把hypervisor和os+kernel结合起来?答案是肯定的,这就构成 microhypervisor,微内核与hypervisor有许多共性,使得它们的结合巧妙而自然。
VMM在这里的功能是负责管理Virtual+Machine(VM)和host+os(microkernel)之间物理资源的交互。每一个VMM都向它的VM提供一组类似于物理硬件的接口,让所有的guest+os觉得自己好像运行在真实的物理机器上一样,同时microhypervisor保证它们之间的隔离性。需要强调的是,在NOVA里面,hypervisor和VMM不是同义词。一般情况下,我们认为hypervisor和VMM都可以译为虚拟机管理器,都是为了实现对硬件资源的抽象和复用以便支持多个os,但是在NOVA中,hypervisor是代表的privileged+kernel(microhypervisor)而VMM是代表一个deprivileged+user+component(从NOVA的架构图上很容易得出)。
微内核是不包含policy的,所以关于资源分配的策略也应该放在用户空间单独实现。其实这里的Root+Partition+Manager我认为就是Sigma0,Sigma0是L4/fiasco微内核的第一个用户进程,除了内核自己使用的内存之外,所有的内存、外设端口都交给Sigma0进程来管理,Sigma0负责向其他用户进程分配内存和外设资源。这也正体现了L4微内核的递归内存分配,而且所有的分配策略都在用户层决定。对于guest+os来说,它使用的是virtual+cpu(后文简写为vcpu),vcpu在guest+os看来是一个硬件,类似于真实的cpu,但是对于microhypervisor来说就是一个thread。microhypervisor采用的是基于优先级的、可抢占的、时间片轮转调度策略,每个物理cpu都保存一个runqueue。每一次调度的时候,调度器都会在就绪队列里选择出当前优先级最高的线程进行执行,把当前上下文切换到要调度的线程的上下文(context+switch)。对于调度器来说,它并不区分调度的线程是native+thread还是vcpu+thread。
大众下一代(最新的迈腾可能已经使用)中级车采用瑞萨的R-CAR M3(W或N)平台,它采用6核设计,两个A57四个A53,德国厂家的L4RE一般都基于M3或H3平台研究,一般都使用两个A53做仪表,每一个A57运行一个虚拟机VM。L4Re也通常和AGL(车规级Linux)连在一起使用。下图为L4的虚拟SOCKS和虚拟CONSOLE。
2016年7月,松下收购了Opensynergy,该公司有一套名为COQOS的虚拟机系统。不仅可用于座舱,也可以用于自动驾驶系统,对自适应Autosar也有对应。并且也通过了2018版的ASIL B级认证。下一代日产、福特有可能采用这套系统(基于瑞萨R-CAR 3)。
2019年9月ARM在IAA展会上展出了由Mobica与联发科MT2712合作的三屏座舱电子系统,包括中控导航、仪表和副驾(360度环视),集成了TomTom的导航系统,该解决方案是使用 Google 的 Android 开放源代码项目(AOSP)开发的,可让 OEM 保留数据 IP,以用于未来的获利策略。Mobica的虚拟机主要基于Xen Project。
法国Virtual Open System公司在几乎在同时推出了基于MT2712的虚拟机样品,即VOSYSmonitor,并称通过了ASIL C级认证。它不是严格意义上的虚拟机,更像是一个虚拟分区系统。它利用ARM的TrustZone,支持多个并行不同类型不同安全等级的操作系统。
由于不是类似小型操作系统的虚拟机,这种轻量级系统性能比较好,但需要硬件配合,硬件必须像两个芯片那样设计。
全软件虚拟机的优点是软件灵活度很高,可以达到软件定义座舱的程度,也可以减少整体软件开发成本,缺点一是硬件资源消耗必然不低,因此也多在高通和英特尔平台上见到。缺点二,虚拟机对软件技术不足的企业来说,第三方的支持费用会非常高,如果出货量低的话,远不如使用两套独立的系统。硬件虚拟化的优点恰恰是针对这两个缺点的。像德州仪器J6这样的性能不足的芯片都可以虚拟化,第三方支持费用会很低,适合出货量不高的系统。缺点是灵活度不足。至于可靠性,硬件虚拟化有物理区域隔离,似乎更可靠,但全软件虚拟机也主打高可靠性,两者应该相差无几。
上图是NXP i.mx8qm的虚拟机图。
上图是德州仪器最新的J7即TDA4VM,整体达到ASIL B级,MCU岛达到ASIL C级。使用多达6个Cortex R5F来保证实时性和可靠性。
产业研究助力布谷鸟科技更好的掌握并应用这一技术到我们的智能座舱产品上,基于恩智浦i.MX8QM的智能座舱域控制器ACU202采用软硬件分区虚拟机技术,单SOC驱动双屏或多屏多系统,实现中控多媒体系统、液晶仪表信息系统、后排娱乐系统、HUD系统等功能,产品已经获得主机厂量产订单,处在项目量产落地阶段,布谷鸟科技重视技术创新和应用,为主机厂提供专业的智能座舱产品和解决方案助力行业发展。
布谷鸟ACU202 · 智能座舱域控制器