
智能网联汽车计算平台虚拟化技术
计算平台作为智能网联汽车的大脑,多采用多元异构的硬件架构,并通过多种操作系统运行具有不 同功能安全和信息安全等级的环境感知、路径规划和车辆控制算法;本文中提出一种能适应多种硬件平台和多种应 用场景的虚拟化软件层架构。该架构能够实现虚拟机之间的资源共享与分区隔离,并且提供多种容错和保护机制, 能同时满足功能安全与信息安全的需求;此外,本文中还提出了虚拟机间的高效通信机制和虚拟化性能优化机制, 经测试验证,可满足智能网联汽车计算平台的要求。
前言
在汽车行业“智能化、网联化、电动化和出行方式共享化冶背景下,自动驾驶成为产业竞争的焦点, 汽车电子的产业链和技术链面临重构。尤其是在当前复杂多变的国际产业竞争形势下,加强智能网联汽车计算平台的研究,具有十分重要的战略意义和现实意义。
计算平台在硬件层实现多处理器整合的同时打破了传统汽车电子架构中基于总线和网关的物理保护屏障,使得不同安全级别的应用共享计算能力;在软件层基于自动驾驶操作系统系统软件运行具有不同功能安全及信息安全等级和实时性要求的应用软件。保证差异化功能安全和信息安全要求的同时满 足性能要求是自动驾驶操作系统系统软件设计的关键。其中,虚拟化软件层(Hypervisor)作为支持多个操作系统内核和应用系统同时运行的基础模块被提出,成为自动驾驶操作系统系统软件中保护系统 安全的核心组件。
当前, Hypervisor 已经在部分零部件中得到了应用,但其研究都是针对特定的硬件平台和具体的应用场景,缺乏针对计算平台虚拟化技术的普适性研究。本文中提出一种能适应多种硬件平台和多种应用场景的虚拟化软件层架构,该架构能实现虚拟机之间的资源共享与分区隔离,提供多种容错和保护机制,建立虚拟机间的高效通信机制和虚拟化性能 优化机制,满足功能安全和信息安全的设计需求;并对该架构进行了原型开发与验证。
1 Hypervisor 总体架构
计算平台需要强大的硬件运算资源,能基于摄像头、毫米波雷达、激光雷达、导航定位系统、高精度 地图和 V2X 通信等多信息融合实现环境感知定位、 智能决策规划和车辆运动控制等,满足智能网联汽 车驾驶系统高性能和高安全性的控制要求。
图 1 计算平台系统架构
图 1 为典型的智能网联汽车计算平台基础软件架构。安全 MCU 运行符合 ISO 26262 规范的 Safety OS,实现高安全级别的车辆控制和车内通信等。高性能片上系统(SoC)芯片借助虚拟化技术实现支持以 Linux 为代表的全功能量级操作系统和 Safety OS 在多个虚拟机上同时运行 ,实现环境感知定位、路径决策规划等核心算法及人机接口处理算法。
Hypervisor 需求支持多种异构处理器和多种操作系统类型,因此计算平台选择使用直接运行于硬件系统之上的 Type 1 型 Hypervisor,采用全虚拟化和硬件辅助虚拟化技术,突出高安全性、高实时性和高可靠性。全虚拟化可支持客户机操作系统无须修改而在 Hypervisor 上运行,兼容性更好。但使用全虚拟化技术可能导致系统的 I/O 性能下降,因此须通过硬件辅助虚拟化技术对外设进行硬件加速,以满足系统性能要求。
本文中遵循简洁、高内聚和低耦合的原则完成了 Hypervisor 架构设计。主要模块包含设备驱动与模拟、CPU 与中断虚拟化、设备虚拟化、内存管理、调度管理和客户机操作系统管理等。Hypervisor 的总体架构如图 2 所示。
图 2 Hypervisor 总体架构
2 Hypervisor 的实现
依据 ISO26262 标准对自动驾驶功能安全需求进行分解,表明 Hypervisor 须满足 ASIL-D 的要求。本文中从安全性保障、可靠性保障和实时性保障3个方面对 Hypervisor 的实现进行阐述,全开发流程遵循了 ISO26262 过程管理要求。
2.1 安全性保障机制
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 保证客户机操作系统之间互相隔离。客户机操作系统须通过使用 Hyper-call(Hypervisor 提供给客户机操作系统的编程接口,与系统调用类似)来请求 Hypervisor 提供服务。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 支持客户机操作系统间多种通信方式,包括虚拟以太网、共享内存和远程消息机制等。客户机操作系统可根据需要选择合适的通信方法与其他客户机操作系统通信。
根据计算平台的典型架构,环境感知算法和决策规划算法可能部署在不同的处理器上,因此 Hy-pervisor 支持在一个 SoC 上运行的客户机操作系统通过以太网与其他 SoC 通信;通过虚拟以太网通信技术,可让 Hypervisor 作为一个虚拟交换机,支持多 个客户机操作系统之间的以太网通信,以及实现客户机操作系统与外界网络的通信。
Hypervisor 还支持通过共享内存方式在客户机操作系统间共享数据,避免了多个客户机操作系统间通信时的内存拷贝操作,比以太网通信具有较好的通信性能。但共享内存只提供数据共享的通道, 多个客户机操作系统间需要有控制消息来保证对共 享内存的互斥访问。因此 Hypervisor 还支持基于 Virtio(通用 I/ O 设备虚拟化程序)远程消息方式进行控制消息(RPMSG)的通信;当客户机操作系统之间不需要进行大容量数据通信时也可直接使用 RPMSG 进行通信,如图 5 所示。
图 5 Hypervisor 远程消息通信
2.3.2 虚拟化性能优化
决定虚拟化性能的因素主要包括 CPU 处理性能、中断处理性能、内存访问性能和设备模拟性能等。其中 CPU 处理性能、中断处理性能和内存访问性能是决定虚拟化性能的关键。
借助于硬件虚拟化技术,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 两种客户机操作系统。为验证 Hy-pervisor 原型的性能,分别进行了 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) 以转向盘转速为聚类特征参数,基于 K-means++ 算法对转向行为进行了聚类分析,得出正常转向与紧急避撞转向的聚类中心点,实现了紧急避撞转向行为与正常转向行为的有效区分。
(3) 实车试验验证结果表明,所提出的基于转向盘转速的 K-means++ 聚类方法聚类精度可达 96.7% ,能够实现紧急避撞转向行为的有效识别。
参考文献
[1] PENG J, GUO Y,FU R, et al. Multi-parameter prediction of drivers'lane-changing behavior with neural net-work model[J]. Applied Ergonomics,2015,50:207-217.
[2] 李亚秋,吴超仲,马晓凤,等. 基于 EKF 学习方法的 BP 神经网 络汽车换道意图识别模型研究[J]. 武汉理工大学学报(交通科学与工程版),2013(4):843-847.
[3] KUMAR P, PERROLLAZ M, LEFEVER S, et al. Learning-based approach for online lane change intention prediction[C]. Intelli-gent Vehicles Symposium. IEEE,2013:797-802.
[4] 杨殿阁,何长伟,李满,等. 基于支持向量机的汽车转向与换道 行为识别[J]. 清华大学学报(自然科学版),2015(10):1093 - 1097.
[5] DING J, DANG R, WANG J, et al. Driver intention recognition method based on comprehensive lane change environment assess-ment [C]. Intelligent Vehicles Symposium. IEEE, 2014: 214 - 220.
[6] 范菁,阮体洪,吴佳敏,等. 基于二次谱聚类和 HMM鄄RF 混合模 型的车辆行为识别方法研究[J]. 计算机科学,2016(5):288 - 293.
[7] SCHLECHTRIEMEN J, WIRTHMUELLER F, WEDEL A, et al. When will it change the lane? a probabilistic regression approach for rarely occurring events[C]. Intelligent Vehicles Symposium. IEEE,2015:1373-1379.
[8] 邱小平,刘亚龙,马丽娜,等. 基于贝叶斯网络的换道模型[J]. 交通运输系统工程与信息,2015,15(5):67-73.
[9] LETHAUS F, BAUMANN M R K, STER F, et al. A comparison of selected simple supervised learning algorithms to predict driver intent based on gaze data[ J]. Neurocomputing,2013,121 (18): 108-130.
[10] 孙纯. 基于驾驶人视觉特性的换道意图识别[D]. 西安:长安 大学,2012.
[11] SALEHINIA S, GHAFFARI A, KHODAYARI A, et al. Model-ling and controlling of car-following behavior in real traffic flow u-sing ARMAX identification and model predictive control[J]. In-ternational Journal of Automotive Technology,2016,17(3):535- 547.
[12] 孟琳,朱西产,孙晓宇. 真实交通危险工况下驾驶员转向避撞 相关因素分析[J]. 汽车技术,2016(6):59-62
[13] 郭璘,周继彪,董升,等. 基于改进 K-means 算法的城市道路交 通事故分析[J]. 中国公路学报,2018,31(4).
文章转载自公众号:智能汽车开发者平台
