随着现代汽车、工业、物联网和计算机技术的快速发展,负载整合已经成为物联网嵌入式领域的趋势。所谓负载整合是指在一个通用的硬件计算平台上通过计算机技术实现不同负载的协同处理。分散独立的计算机系统被一个可扩展的高性能计算机替代。通过负载整合能有效降低成本,提升效率,增强系统灵活性。
同时伴随着计算机的发展,其单机的CPU核数不断增多,各种硬件性能不断提升,这也为负载整合创造了有利条件。嵌入式虚拟化技术在这种情形下应运而生,可用于汽车、工业或物联网边缘、端侧的各种负载整合场景。
另外,物联网和边缘侧的开发人员在他们构建的系统上面临着越来越高的需求,因为人们越来越期望连接的设备支持一系列硬件资源、操作系统以及软件工具和应用程序。虚拟化技术是满足这些需求的关键。现有的大多数虚拟机管理程序Hypervisor或VMM解决方案都无法为物联网和边缘系统提供合适的大小、启动速度、实时支持和灵活性。数据中心管理程序代码量太大,难以提供安全或硬实时功能,并且用于嵌入式开发时需要过多的性能开销。嵌入式虚拟化技术正是为满足这一需求而构建的,ACRN项目也因此应运而生。
ACRN 是由英特尔发起的Linux基金会下面的一个开源项目,于2018年3月正式发布,它是一个专门为嵌入式系统设计的轻量级虚拟机Hypervisor,具有灵活、轻量等特性,以实时性和关键安全性为出发点进行构建,是专门用来满足以上场景需求的嵌入式虚拟机参考方案。
ACRN是一种一型(Type-1)Hypervisor,可在裸机硬件上直接运行,具有快速启动功能,并可针对各种物联网、边缘和嵌入式设备解决方案进行配置。它提供了一个灵活、轻量级的管理程序,在构建时考虑了实时性和安全性,并通过开源、可扩展的参考平台进行了优化以简化嵌入式开发。它的架构可以运行多个操作系统和虚拟机,并通过有效的虚拟化确保在一个系统硬件平台上共存的异构工作负载不会相互干扰。
ACRN支持不同类型的外部设备是它的另一个优点。它可以支持嵌入式系统中常见的各种类型设备和总线,例如摄像头、音频、网络、存储、GPIO、I2C总线等。ACRN为虚拟设备仿真定义了一个参考框架实现,称为ACRN设备模型(Device Model,DM),专门支持丰富的I/O设备的共享。它也支持物理设备的直通访问,以满足实时应用程序的时间敏感要求和低延迟访问需求。为了使Hypervisor的代码库尽可能小且高效,大部分设备模型实现驻留在服务虚拟机中,以提供物理设备共享和其他功能。
ACRN具有以下关键功能和优势。
●空间占用小:ACRN专门针对资源受限的设备进行了优化,其代码行数(约40KB)明显少于以数据为中心的VMM程序(KVM超过150KB)。
●以实时为理念构建:低延迟、快速启动和响应式硬件设备通信,支持近乎裸机的性能。支持软实时或者硬实时的VM需求,包括运行实时任务期间避免产生VM Exit、配置LAPIC和PCI设备直通、静态CPU核分配等。
●为嵌入式物联网和边缘虚拟化而构建:ACRN支持超越基础设备的虚拟化,包括CPU、I/O和网络虚拟化,提供一组丰富的I/O设备中介以实现多个VM共享设备。服务虚拟机或实时VM也可以直接与系统硬件和设备通信,确保低延迟访问。ACRN由引导加载程序直接引导,以实现快速安全的引导。
●构建时充分考虑到安全型VM:安全型工作负载可以与其他VM隔离,并优先满足其设计需求。资源分区支持使用Intel VT技术,在同一个SoC上隔离出可以共存的安全关键域和非安全关键域。
●适应性强且灵活:ACRN支持多种操作系统,可根据针对各种应用程序用例的需要,对包括Linux、Zephyr和Windows在内的VM操作系统进行高效虚拟化。ACRN场景配置支持共享、分区和混合VM模型,以支持各种应用程序用例。
●真正的开源:凭借其宽松的BSD许可证和参考实现,ACRN支持硬件平台和功能的不断扩展,同时显著节省了前期研发成本,有良好的代码透明度以及与行业领导者协作的软件开发社区。
ACRN Hypervisor和ACRN设备模型软件代码是在BSD 3-Clause许可证下提供的,该许可证允许“以源代码和二进制形式重新分发和使用,无论是否修改”以及许可中注明的完整版权声明和免责声明。
ACRN项目社区的开发人员包括来自成员组织和一般社区的开发人员,他们都参与了项目内的软件开发。社区成员贡献和讨论想法,提交错误和错误修复。他们还通过邮件列表和IRC频道等社区论坛互相帮助。任何人都可以加入开发者社区,社区总是愿意帮助其成员和用户充分学习和利用ACRN项目。