智能网联汽车计算平台虚拟化技术研究*

2020-03-18 04:51褚文博
汽车工程 2020年1期
关键词:客户机分区智能网

严 刚,肖 堃,褚文博

(1.合肥工业大学,合肥 230009; 2.电子科技大学,成都 610054;3.国汽(北京)智能网联汽车研究院有限公司,国家智能网联汽车创新中心,北京 100176)

前言

在汽车行业“智能化、网联化、电动化和出行方式共享化”背景下,自动驾驶成为产业竞争的焦点,汽车电子的产业链和技术链面临重构。尤其是在当前复杂多变的国际产业竞争形势下,加强智能网联汽车计算平台的研究,具有十分重要的战略意义和现实意义[1]。

计算平台在硬件层实现多处理器整合的同时打破了传统汽车电子架构中基于总线和网关的物理保护屏障,使得不同安全级别的应用共享计算能力;在软件层基于自动驾驶操作系统系统软件运行具有不同功能安全及信息安全等级和实时性要求的应用软件。保证差异化功能安全和信息安全要求的同时满足性能要求是自动驾驶操作系统系统软件设计的关键[1]。其中,虚拟化软件层(Hypervisor)作为支持多个操作系统内核和应用系统同时运行的基础模块被提出,成为自动驾驶操作系统系统软件中保护系统安全的核心组件[2]。

当前,Hypervisor已经在部分零部件中得到了应用,但其研究都是针对特定的硬件平台和具体的应用场景,缺乏针对计算平台虚拟化技术的普适性研究。本文中提出一种能适应多种硬件平台和多种应用场景的虚拟化软件层架构,该架构能实现虚拟机之间的资源共享与分区隔离,提供多种容错和保护机制,建立虚拟机间的高效通信机制和虚拟化性能优化机制,满足功能安全和信息安全的设计需求;并对该架构进行了原型开发与验证。

1 Hypervisor总体架构

计算平台需要强大的硬件运算资源,能基于摄像头、毫米波雷达、激光雷达、导航定位系统、高精度地图和V2X通信等多信息融合实现环境感知定位、智能决策规划和车辆运动控制等,满足智能网联汽车驾驶系统高性能和高安全性的控制要求。图1为典型的智能网联汽车计算平台基础软件架构。安全MCU运行符合ISO 26262规范的Safety OS,实现高安全级别的车辆控制和车内通信等。高性能片上系统(SoC)芯片借助虚拟化技术实现支持以Linux为代表的全功能量级操作系统和Safety OS在多个虚拟机上同时运行[3],实现环境感知定位、路径决策规划等核心算法及人机接口处理算法。

图1 计算平台系统架构

Hypervisor需求支持多种异构处理器和多种操作系统类型,因此计算平台选择使用直接运行于硬件系统之上的Type 1型Hypervisor,采用全虚拟化和硬件辅助虚拟化技术,突出高安全性、高实时性和高可靠性。全虚拟化可支持客户机操作系统无须修改而在Hypervisor上运行,兼容性更好。但使用全虚拟化技术可能导致系统的I/O性能下降,因此须通过硬件辅助虚拟化技术对外设进行硬件加速,以满足系统性能要求。

本文中遵循简洁、高内聚和低耦合的原则完成了Hypervisor架构设计。主要模块包含设备驱动与模拟、CPU与中断虚拟化、设备虚拟化、内存管理、调度管理和客户机操作系统管理等。Hypervisor的总体架构如图2所示。

2 Hypervisor的实现

依据ISO26262标准对自动驾驶功能安全需求进行分解[4],表明 Hypervisor须满足 ASIL-D的要求。本文中从安全性保障、可靠性保障和实时性保障3个方面对Hypervisor的实现进行阐述,全开发流程遵循了ISO26262过程管理要求。

2.1 安全性保障机制

Hypervisor在不同分区之间实现了处理器资源、内存资源和外设资源的隔离与共享,并通过访问控制机制进一步保证了使用共享资源时不会对其他客户机操作系统或其他任务造成影响。

图2 Hypervisor总体架构

2.1.1 处理器资源分区隔离和共享

Hypervisor支持多个客户机操作系统共享同一个处理器核心。在共享核上,Hypervisor通过时间分区对各客户机操作系统进行调度,确保分区的时间隔离。每个分区占用固定的运行时间,在分区内的客户机操作系统可按照自己的调度方式进行调度;时间额度满后Hypervisor会强制切换到下一个客户机操作系统上运行。

计算平台硬件系统中高性能CPU一般为对称多处理器架构,Hypervisor调度器可根据处理器的亲和性绑定设置让客户机操作系统在指定的处理器核心上运行,通过这种方式实现处理器资源的分区隔离,如图3所示。

图3 Hypervisor CPU资源分区隔离

2.1.2 内存资源分区隔离和共享

由Hypervisor对系统的所有可用内存实施统一管理,将其内存资源划分为静态可配置的池子集,在启动时将其分配到不同资源分区中。此机制确保了分区之间的严格隔离,因为一个资源分区中的任务出现故障,只能耗尽分配给它的内存,且无法访问其他资源分区的内存池。在系统启动期间,Hypervisor将创建包含相应内存页的地址空间并将其分配给每个分区,分区中的程序只能访问和管理它拥有的地址空间,可避免某个客户机操作系统非法访问或篡改其他客户机操作系统的关键数据或流程,也避免客户机操作系统间故障相互波及影响。

Hypervisor还支持细粒度的内存管理方式,不仅可以把多个内存段分配给一个资源分区,也可以将一个内存段按区域分配给多个资源分区。

2.1.3 外设资源分区隔离和共享

Hypervisor支持外设被客户机操作系统独占的技术方案,例如将外设直接透传给某个客户机操作系统使用,此时其他客户机操作系统无法访问其资源。也支持通过设备仿真的方式实现外设资源的共享,以存储资源为例其技术方案如图4所示。

图4 Hypervisor存储资源共享

在Hypervisor中运行物理磁盘的驱动程序,在每个客户机操作系统运行虚拟磁盘驱动。它可挂载为物理磁盘的一个分区,这样不同客户机操作系统可使用相同的物理磁盘,通过Hypervisor保证客户机操作系统的磁盘空间相互隔离,不会出现越界访问。基于相同的思想,Hypervisor还可以支持网络、SPI、I2C、UART等外设的资源分区的隔离和共享。

2.1.4 访问控制

如前所述,Hypervisor保证客户机操作系统之间互相隔离。客户机操作系统须通过使用Hypercall(Hypervisor提供给客户机操作系统的编程接口,与系统调用类似)来请求Hypervisor提供服务[5]。Hypervisor会为每个客户机操作系统分配访问权限和通信权限,以限制和监视其对Hypercall的访问。

每个权限都允许客户机操作系统访问特定的一个或多个Hypercall,同时Hypervisor还会检查客户机操作系统的每个Hypercall,以确保它不会占用过多的内核资源或修改系统设置。客户机操作系统的权限存储在相应的描述符表中,且不能在客户机操作系统的生命周期内进行更改或扩展。

2.2 可靠性保障机制

2.2.1 健康监控

在计算平台中运行多个客户机操作系统,当客户机操作系统发生异常时,应被实时监控并在最小影响范围内恢复正常,Hypervisor通过健康监控技术实现系统状态实时监控。

Hypervisor提供看门狗服务,各客户机操作系统的监控组件注册到看门狗服务中,当监控组件发生异常时可主动通过看门狗发送异常信息和处理方法。当监控组件无法响应看门狗服务时,Hypervisor也能强制对组件执行错误处理操作使系统恢复正常运行。

Hypervisor健康监控支持对任务的正常状态监控,包括周期性的定时保活监控。当应用程序正确运行时,Hypervisor会收到应用程序周期性的保活信息,当应用程序异常或无法响应时,周期性的保活信息被中断,Hypervisor可发送消息获取任务当前状态和控制流程,如果应用程序还无法响应,Hypervisor将会执行异常处理程序。

Hypervisor架构还通过定义明确的服务边界来有效地隔离故障。由于服务之间互相依赖,所以任何组件都可能出错导致用户不能访问。为尽可能减少局部异常带来的影响,还须构建容错能力强的异常处理技术,以从容应对发生的某些异常。

Hypervisor提供多级异常处理技术,包括任务级、分区级、系统级和硬件级等。当任意一级出现异常时,Hypervisor能获取到当前系统整体健康状态,并在最小影响范围内进行错误处理,保障系统持续可用。例如,当客户机操作系统某个应用异常时选择只重启应用,当客户机操作系统内核异常时选择重启客户机操作系统。

2.2.2 系统冗余备份

Hypervisor支持系统冗余备份功能。如前所述,在计算平台中客户机操作系统可能是全功能操作系统,运行着非常关键的自动驾驶业务,但是全功能操作系统往往存在着隐藏且难以发现的故障,一旦业务出现异常可能会导致严重的事故。

Hypervisor支持运行2或3个相同的客户机操作系统镜像和业务模型,并实时监控所有系统的健康状态。配合运行业务决策程序选择使用其中一个客户机操作系统作为用户系统。这样既能防止某个客户机操作系统异常导致不可预计的后果,也能在多个客户机操作系统中对比选择最优的结果进行业务决策。

2.3 实时性保障机制

2.3.1 高效客户机操作系统的通信机制

Hypervisor支持客户机操作系统间多种通信方式,包括虚拟以太网、共享内存和远程消息机制等。客户机操作系统可根据需要选择合适的通信方法与其他客户机操作系统通信。

根据计算平台的典型架构,环境感知算法和决策规划算法可能部署在不同的处理器上,因此Hypervisor支持在一个SoC上运行的客户机操作系统通过以太网与其他SoC通信;通过虚拟以太网通信技术,可让Hypervisor作为一个虚拟交换机,支持多个客户机操作系统之间的以太网通信,以及实现客户机操作系统与外界网络的通信。

Hypervisor还支持通过共享内存方式在客户机操作系统间共享数据,避免了多个客户机操作系统间通信时的内存拷贝操作,比以太网通信具有较好的通信性能。但共享内存只提供数据共享的通道,多个客户机操作系统间需要有控制消息来保证对共享内存的互斥访问。因此Hypervisor还支持基于Virtio(通用I/O设备虚拟化程序)远程消息方式进行控制消息(RPMSG)的通信;当客户机操作系统之间不需要进行大容量数据通信时也可直接使用RPMSG进行通信,如图5所示。

2.3.2 虚拟化性能优化

决定虚拟化性能的因素主要包括CPU处理性能、中断处理性能、内存访问性能和设备模拟性能等。其中CPU处理性能、中断处理性能和内存访问性能是决定虚拟化性能的关键[6]。

图5 Hypervisor远程消息通信

借助于硬件虚拟化技术,Hypervisor为客户机操作系统提供了一套完整的硬件系统环境,在客户机操作系统看来其所拥有的CPU即是vCPU(virtual CPU)。Hypervisor支持vCPU和中断亲和性设置,可将其中一个vCPU设置为客户机操作系统或后台进程独占。物理机中断也可设置到一个指定的CPU上,通过中断亲和性设置能提高客户机操作系统透传设备驱动的I/O性能。为获得更好的客户机操作系统性能,Hypervisor还优化了中断和异常处理时间,将其尽快分发到客户机操作系统上运行。

在内存访问性能优化方面,Hypervisor在内存分配中实现页面着色优化,通过为每个客户机操作系统分配不同颜色,同时配合性能监控单元对内存的分配和使用策略进行调整,如图6所示。

图6 Hypervisor内存访问性能优化

3 测试

基于上述架构和关键技术在NXP IMX8QM MEK开发板实现了Hypervisor原型,可同时运行Linux 4.19与FreeRTOS两种客户机操作系统。为验证Hypervisor原型的性能,分别进行了CPU和I/O的性能测试。其中CPU性能测试的方法是分别在虚拟机和物理硬件上的Linux系统的单核中运行排序、傅里叶变换、浮点运算和霍夫曼编码等测试程序,通过测试程序在固定时间内的运行次数(Iterations/sec)来综合对比CPU性能。测试结果如表1所示。

表1 CPU性能测试结果

使用FIO工具对磁盘的I/O性能进行对比测试,磁盘的每秒读写次数(IOPS)和平均 IO带宽(BW)的测试结果如表2所示。

表2 I/O性能测试结果

由表可见,在虚拟机中运行的Linux的性能比在物理硬件上运行的Linux稍显逊色,但基本相当;其I/O性能的下降比CPU性能的下降略为明显,但仍在可接受的范围内。

4 结论

(1)针对智能网联汽车计算平台,本文中提出了一种能适应多种硬件架构和多种应用场景的虚拟化软件层架构。

(2)完成了Hypervisor原型系统开发,从安全性、可靠性和实时性3个方面提供了保障机制。

(3)试验表明,该系统原型未导致性能的明显下降,能满足智能网联汽车计算平台高性能、高安全性和高实时性的要求,为智能网联汽车自主可控自动驾驶操作系统关键核心技术的研发奠定了基础。

猜你喜欢
客户机分区智能网
交通运输部:扩大新能源智能网联汽车应用
贵州省地质灾害易发分区图
上海实施“分区封控”
《智能网联汽车城市发展指南》即将发布
智能网联汽车管理政策研究
智能网联汽车前方防碰撞辅助系统的设计
隔山亦能打牛,本本巧变远控利器
大型数据库分区表研究
神探出手,巧破分区离奇失踪案
升腾瘦客户机借神码翱翔“云端”