英特尔:用于汽车座舱的开源虚拟化平台ACRN

2018-08-09 15:05:11·  来源:佐思汽车研究  浏览:806
   
2018年6月21-22日,由布谷鸟科技、佐智汽车主办,艾拉比智能、ADI亚德诺半导体、索喜科技赞助支持的“2018第二届智能座舱与智能驾驶峰会”在深圳福田区绿景锦江酒店举办。英特尔开源研发中心的James Wu在会上做了《小身材大能耐A Big Little Hypervisor for Software Defined Cockpit》的主题演讲。
2018年6月21-22日,由布谷鸟科技、佐智汽车主办,艾拉比智能、ADI亚德诺半导体、索喜科技赞助支持的“2018第二届智能座舱与智能驾驶峰会”在深圳福田区绿景锦江酒店举办。英特尔开源研发中心的James Wu在会上做了《小身材大能耐A Big Little Hypervisor for Software Defined Cockpit》的主题演讲。



英特尔开源研发中心 James Wu

James Wu:今天我介绍的是全新开源软件项目“ACRN”,是为IOT和汽车量身订作的虚拟化软件项目,也是业界第一个开源的软件项目。

我将从四个方面进行介绍:

项目介绍

整体架构

开源模式

合作伙伴

今天上午多位嘉宾有非常精彩的演讲,特别是胡博士讲了车载领域融合的趋势,SOC的计算能力和应用的快速增长,带来了将多种应用融合在一起的问题。胡博士提到的硬件融合中,虚拟化技术很关键。

虚拟化并不新鲜,从90年代开始,在服务器、数据中心、台式机应用方面就已出现虚拟化。在开源的软件里,有KVM这样的项目正在开展,从商业层面来讲,在这个领域中有许多出色的公司。



来源:英特尔

虚拟化经过十几年的发展,目前已比较成熟,但在嵌入式车载或者IOT领域,虚拟化却遇到一些挑战。这些挑战我归纳总结为三个方面:

多种操作系统的支持。在数据中心或者云端,操作系统的支持相对比较简单,但在嵌入式方面,操作系统包括各种软件方案的支持,却是非常多样性的。

硬件资源共享的支持。在云端,传统的虚拟化所需要处理的共享主要是CPU、内存和存储,最多的是网络。车载领域我们看到有图象处理的共享,它与摄像头相关,以及音频资源的外设共享,还包括很多安全性硬件支持的共享,这是在云端想象不到的共享要求。

安全域和非安全域的融合。功能安全要求在某些应用场景里非常重要,包括一些实质性的要求,以及计算能力和处理能力的要求。而操作系统如何在同一个虚拟化的平台上完成这些不同的要求,是全新的挑战。



来源:英特尔

目前虚拟化发展的现状是,在数据中心虚拟化方面已经有了很多年的积累,不管是开源方案或是商业方案都有很多成熟的案例。但最要紧的问题是代码量非常巨大,例如KVM作为一个虚拟化方案必须依附于Linux,但却占据了Linux非常巨大的代码量。功能安全认证,从现实性和可靠性上讲都有很大的问题。

对嵌入式开发的工程师来讲,基于数据中心的虚拟化方案,的确有很多不便,因为它必须要兼顾到数据中心的应用场景,而对嵌入式场景基本没有太多的考虑。嵌入式和车载应用有很多先行者,比如QNX这样业界领先的商业虚拟化方案公司,但我们始终没有看到一个专门的开源方案。开源和闭源并不矛盾,我们希望看到合作。ACRN作为开源虚拟化方案的项目,它并不是定位在一个产品化的方案上。

ACRN项目简介

ACRN希望能提供比较成熟、稳定的基础虚拟化技术开源方案,也希望得到合作伙伴的支持,能够在真正的产品化项目中落地。那么开源有什么好处?我总结了三个优势:

开源降低开发成本。众人拾柴火焰高,集合大家的力量能降低开发成本,特别是在基础性功能方面。

开源提供合作平台。特别是在硬件厂商和方案商之间,寻求携手开发的平台,这是非常重要的。如果没有一个开源平台,芯片厂商比如英特尔,很多内部的技术资料不方便对外公开,包括芯片性能、调试方法等,商业方案厂商很难取得这些内部技术资料;同样芯片厂商也很难拿到商业方案厂商的源代码。因此很难在一个共同的平台上做到硬件支持的快速开发。所以ACRN平台提供了硬件支持,能快速加入到虚拟化平台里。

通过开源平台鼓励创新。汽车行业是快速发展的行业,进入一个新的时代后,很多应用场景可能是芯片厂商在当下想象不到的。而有了开源平台,大家可以非常方便的试用,进行尝试,做很多POC(概念验证)的工作,同时也方便芯片厂商了解新需求和行业发展方向,促进新应用场景的产生。这对芯片厂商、虚拟化方案商、一级供应商,乃至整个市场都是有利的。

ACRN是今年3月在北美的嵌入式大会上正式宣布的,英特尔希望它是真正开源且完全中立的项目。尽管ACRN由英特尔贡献,但它是属于Linux基金会的项目,并由Linux基金会管理。虽然当前ACRN还在非常早期的阶段,但是我们希望能有更多的厂商在早期介入,以产生更大的影响力。



来源:英特尔

ACRN技术开发的方向和定位

首先ACRN是为嵌入式和车载应用量身定制的虚拟化方案,追求灵活性、轻量级,我们对代码量有严格控制,差不多控制在25K,25000行代码左右。代码量小,在做实时性、稳定性和功能安全的认证时就会比较方便。ACRN从设计开始就考虑了功能安全的要求和实时性要求,在开源社区里我们也在推动符合功能安全认证的开发模式,我们会公开所有设计文档,并寻求开发模式中每行代码的可追溯性。为了优化嵌入开发,无论是开发平台的选择还是整个设计的平衡都是偏向嵌入式和IOT开发。

其次是实时性,我们在设计之初就有考虑硬件终端的实时性,包括快速启动,我相信这在车载领域非常重要。另外我们在I/O方面也有很多的考虑,因为这和云端不一样,在嵌入端I/O是多种多样的,我们采用业界标准的方式。为了实现小身材,我们把I/O的设计放在一个Service OS的概念里,它可以支持多种OS。KVM一般支持基于Linux的OS,而ACRN即可以支持Linux、Android作为它的客户端OS也可以支持Vxworks, windows等非Linux的OS。今年下半年到明年,我们就会加入对Windows的支持,ACRN将来是可以支持多种OS和多种接口的,因为它的运行模式是中立的模式。

ACRN是针对车载的技术方案。它直接跑在芯片上,有Service OS的概念,这个概念是为了把I/O设备支持单独拿出来放在OS里,现在开源的Service OS是基于Linux的。在车载领域有很多I/O资源的共享,下图是具体落实下来后可能的架构。



来源:英特尔

Service OS会把仪表盘做在里面,ADAS的显示功能做在ADAS的VM里,Android、中控和后台都有单独的虚拟机。从I/O的延迟来讲,实时性能不是最好,因为I/O访问要经过Service OS。



来源:英特尔

针对一些实时应用我们有另外一套架构,这套架构是没有Service OS的,而没有Service OS,I/O共享就受限制。I/O共享和实时性存在一定的矛盾,所以在这个架构里,我们并没有太多I/O共享,而是把I/O做分割,有些I/O资源属于其中一个OS,有些属于另外一个OS。

ACRN项目现状



来源:英特尔

ACRN是2018年3月份在嵌入式Linux北美大会上正式宣布,目前已经在GitHub上开源,英特尔也参与了该项目,但英特尔是直接在上面做开发,没有分内部和外部,外部的代码就是内部使用的代码,一模一样。

可以购买到的两个硬件平台是NUC和UP2,欢迎大家贡献更多的平台支持,我们和ARM也在讨论,希望他们加入到项目中提供ARM平台支持,当然英特尔也会提供自己的平台。我们最终的目标是全部的设计文档都放到开源社区,大家可以共享。

目前开源方面已经有了很多支持,我们集成了基于Linux的Service OS,可以使用Android或者Linux,拿到代码就可以在上面跑起来。目前对I/O的支持,包括网络、存储、I/O的共享支持都已实现,下一步还会把图形处理、对音频的支持也加在里面。我们每周都会有一次技术会议、电话会议,开放给所有的社区参与者,主要是介绍它的设计、讨论技术方案等。

ACRN项目完全是由英特尔中国来做,从架构设计到整个管理团队,工程师都是在上海和北京,这也是为了给国内的合作伙伴创造更好的合作机会。6月14日我们在上海举行了第一次社区见面会,有差不多40位非英特尔的合作伙伴和60多位英特尔的工程师参与。今年10月份在爱丁堡Linux的大会上还有一个beta版会宣布,我相信到时会有更多的功能加入进来。



来源:英特尔

关于管理方式原则

刚才提到ACRN项目是中立的开源项目,和Google的Android不一样,不会按照Google的套路走。ACRN是完全开放、完全透明的,开发完全在社区里进行,不隐藏任何东西,我们希望其他公司参与进来。英特尔中国团队在2003年就参与了KVM,我们希望采用KVM这样的开发模式。另外为了方便商业方案提供商,软件授权是非常宽松的,是BSD的,所以它并不强行要求你把代码贡献回来,但是我们希望合作伙伴能够把技术代码给贡献回来,当然你也可以有所保留。



来源:英特尔

我们希望有更多的业界合作伙伴加入之后建立Linux Foundation的结构,并不希望某个公司超过50%。投票权是基于大家在社区的代码贡献而定,这是整个项目的运行模式。

再一次的欢迎大家加入这个新的项目,特别是在车载领域,我相信融合是一个大趋势,但融合会遇到一些挑战,而我们希望通过开源项目能够降低门槛和成本,同时激发更多的创新。

提问环节

提问:我有两个问题请教,第一,我们知道英特尔在虚拟化技术方面是很擅长的,有很多在硬件上的技术,如果我们用Hypervisor,不是英特尔的硬件,是不是能够充分发挥它在虚拟化方面的优势?另外后续你们会不会基于其他的硬件进行研发?

第二,因为Hypervisor在汽车领域比较新,大家不是特别担心它能否实现,而是更担心它能否产品化,我想请问,您对开源的Hypervisor是否能产品化有什么看法?

James Wu:非常好的问题,我先回答第二个问题,因为产品化有一定的难度,所以我们才来做开源,希望能降低整个业界关于融合和Hypervisor虚拟化的门槛。英特尔内部投了很多资源在上面,我们有很多工程师在上面做开发,同时希望业界能加入进来,降低整个门槛。

我们看到服务器领域、数据中心领域刚开始做虚拟化的时候也是有比较高的门槛,但因为KVM等一些开源项目,到现在已经不再是很困难的事情了。同时这并没有消除商业化方案的空间,很多强大的公司会提供他们的增值领域,我觉得产品化就是ACRN项目的出发点。我们做的时候非常注重产品化,并且有更多的测试用例、测试控制会加入到项目中,也希望大家能贡献各自的力量,一起把这个事情做好。

关于硬件平台,ACRN是中立的,对于英特尔来说,我们的工程师不太可能直接开发针对ARM的支持,但是我们正在和ARM谈,对于ACRN团队来说,我们非常愿意看到ARM以及其他的厂商加入进来。

从设计的角度来看,我们一开始就会考虑到对ARM平台支持。不让ARM平台加进来,这不现实。从芯片功能的角度来看,英特尔以前一直做数据中心和云,虚拟化功能在芯片里面比较强大,同时ARM不断努力,也要进云端,包括AMD很多芯片厂商都有类似的技术。我相信虚拟化平台将来肯定会落在每个架构上,英特尔愿意成为社区的成员,把这个饼做大,把融合的事情做大,这是英特尔的出发点。