许多嵌入式系统设计者都已经意识到多核处理器所带来的好处,例如,可以把原本由多个不同的硬件线路板实现的功能集中到一个处理器芯片上,也可以提高每瓦特功耗所获得的性能,还可以把原有的功能移植到多核芯片中的部分内核,而用其他内核实现产品的新功能,以实现产品升级换代。
不过,开发设计这样的系统会遇到一些特殊的挑战,因为要把高安全性的功能和一般的功能整合在单一的多核处理器芯片上。一套完整的高安全性系统常常由两大部分组成,一部分是通过来安全性认证的部分,例如基于VxWorks的机器人动作控制子系统,另一部分是不必经过安全认证的通用子系统,例如基于Linux或者Windows系统的人机界面。在这种情况下,如果要让整个系统通过高安全性认证,就会遇到一些值得特别考虑的问题。
除了与安全性相关以外,基于多核处理器的系统本身也有很多挑战,如中断处理、总线竞争、代码量以及调试复杂度的增加。
为确保安全性,有些部件是不允许被高安全性子系统和通用子系统所共享的,这就使得隔离性和分区功能格外重要。通过把某些内核和部件指定给一些特定功能的子系统,并实现严格的分区隔离,就可以在充分利用多核处理优势的同时确保系统安全性。风河(Wind River)公司的解决方案就能提供这种严格的隔离分区能力。
软件代码量直接关系到安全认证的费用。选择适当的嵌入式虚拟化解决方案,就可以把代码量控制在最小的范围内,因而也就节省了安全认证费用。
本文探讨了多核和嵌入式虚拟化给高安全性系统设计所带来的好处以及如何克服系统开发中所遇到的挑战。
应对嵌入式多核软件的挑战
多核系统并不是直接把多个芯片的多处理器制作到单一芯片之中这么简单。实际上,多核系统和多处理器系统之间存在着许多重要的区别,导致不能把多处理器系统上的软件直接移植到多核系统上来。
多处理器系统和多核系统的主要区别之一就是,在多处理器系统中,CPU之间的界线是比较清晰的。在典型的多处理器情况下,多个CPU通过总线连接起来,即便是共享外部存储器,这些CPU基本上都是独立运行的。在多核系统中,情况就有所不同。不论采用何种架构,在多核系统中,被共享的东西非常多,例如中断控制器、外设以及缓存等。
当你希望运行SMP环境时,多核系统的这种特征通常表现为一种优势,因为所有的内核都由同一个操作系统来管理。但是,当你要在多核系统中同时运行两种以上的操作系统时,例如同时运行一套RTOS和一套通用操作系统,就会遇到比较多的困难(有许多产品现在都同时运行Wind River VxWorks和Wind River Linux两种操作系统)。在这种情况下,你有两种选择:第一,在两个操作系统之间进行频繁的互相沟通,例如在它们之间建立主、从(master/slave)关系;第二,更简便的方法是采用Supervisor或者Hypervisor,这是一些少量的代码,负责管理协调多个操作系统。显然,第二种方式是更彻底、更灵活、更具有扩展性的多核软件架构。
Hypervisor 之所以能够有效地管理运行在其上的多个操作系统,是得益于分区和虚拟化的方法。总的来说,系统中有三类资源可以被虚拟化:执行单元(CPU)、内存和设备。执行单元虚拟化是基于时间片来进行。内存虚拟化是把物理内存划分成许多区域。设备虚拟化则是通过给设备定义接口和API调用来提高使用灵活性和利用率。
Hypervisor并不是一个全新的概念,在服务器中早已得到广泛而且成功的应用。不过,嵌入式系统中经常用到的Hypervisor主要是对内存和设备进行虚拟化,以便在操作系统之间的资源共享得到完全的保证,而不是对执行单元进行虚拟化。这种专用的hypervisor比较小,而且直接运行在硬件上,不像服务器中用到的Hypervisor主要运行在完整的操作系统之上并且使用宿主操作系统的资源。
嵌入式hypervisor(例如Wind River Hypervisor)与服务器Hypervisor(例如Vmware或 Kernel-Based Virtual Machine)的区别主要是由其不同的需求造成的。在嵌入式hypervisor中,性能和独立性是两大最重要的需求,而后向兼容性(可以让从属操作系统不经修改即可运行在宿主操作系统之上)是服务器Hypervisor中非常重要的需求。
为满足嵌入式系统的特殊需求,这类Hypervisor应当采用以下特殊设计:
第一,设备尽可能直接映射给从属操作系统,以便获得最高的性能以及实现最佳的隔离性。第二,应当具有更强的可伸缩性,可以自主选择对那些部分进行虚拟化,也可以自主选择虚拟化的目的是提高性能还是提高隔离性。第三,与服务器Hypervisor相比,嵌入式Hypervisor应该更加小巧、简单,以便获得相关行业标准的认证,同时拥有更高的性能。第四,从属操作系统一般都是准虚拟化的,通常都经过特别的修改,以便能够非常高效地运行在Hypervisor之上。
因此,嵌入式Hypervisore的实现会根据硬件支持的程度出现非常大的差异。即使是在没有任何硬件支持的情况下,Hypervisor也可以运行得非常快,关键是要做到适当水平的准虚拟化(Paravirtualization)。
克服安全性认证方面的挑战
从安全性的角度来看,以下部分都必须通过认证:硬件;虚拟化层;运行在虚拟板上的操作系统(例如VxWorks CERT);安全应用软件本身。
理论上,上述所有的部件都必须获得安全性认证,这是一个非常耗费金钱和劳动力的过程。但是,当你采用了隔离分区确有保证的虚拟化解决方案,情况就有所不同了。
如图所示,提供安全性功能的子系统和提供图形用户界面的Linux 或 MS Windows 系统被严格地区分开来,由Cert Hypervisor虚拟化层来确保其隔离性,让两部分都绝对不会使用到对方的资源,例如处理器内核、内存等。
可见,虚拟化层的隔离性起到了关键性的作用,而它本身必须是经过安全性认证的,例如Wind River的Cert Hypervisor。这样,你就不必连同设备中的非高安全性功能代码也提交认证,从而节省了时间和金钱。因此,慎重选择虚拟化层的供应商至关重要。
商业化的开发工具是应对挑战的利器
可见,多核处理系统设计本身会遇到许多挑战,如果再加上安全性的考量,其中的挑战就更加复杂。
与多处理器系统的软件开发一样,你首先会面临的挑战是对软件代码进行分隔以便可以并行运行。除此之外,在多核系统中,还会遇到另外一些挑战,例如:获得适当的操作系统配置、资源共享和系统引导的Run-time支持;处理好内核以及资源分区之间的通信;拥有能够支持多核产品配置、原型化、分析、诊断和测试的开发工具。对于上述每个方面的问题与挑战,你都必须得到适当的答案,才能在市场允许的时间范围内开发出像样的产品。
更重要的是,当你在高度竞争的商业环境中从事设备软件开发,必然会在时间和成本和产品可靠性等诸多方面受到更严苛的要求。因此,你不仅需要拥有高效率的工具,而且需要有专业人员在最短的时间内指导和帮助你解决问题,这些相关的技术支持与服务都是商业化开发工具的组成部分。可见,不仅包括软件开发工具,而且包括配套的技术支持与服务,这样的商业化解决方案才是整体效率最高、整体成本最低的方法。
Wind River长期致力于为嵌入式软件开发者提供速度更快、功能更强、适应环境更广泛的解决方案,最近更是在多核软件开发方面取得了领先的优势,可以有效地帮助嵌入式软件开发者应对工作中的挑战。Wind River的解决方案可支持市场上所有的主流芯片架构和多样化的操作系统平台,已经预先置入了虚拟化机制,并且针对SMP、AMP和Supervised AMP等多种多核配置的硬件平台和应用领域做了优化。
在Wind River的商业化嵌入式多核软件解决方案中,你可以在三个层次上自由地选择:第一,自由选择操作系统;第二,自由选择SMP、AMP、supervised AMP和虚拟化等多核配置;第三,在基于Wind River Workbench开发环境中选择自己需要的配置。相应地,Wind River Hypervisor可以针对航空航天国防、汽车、消费电子、工业控制和网络通信等多种应用领域实现设备的虚拟化。这样的商业化解决方案所提供的价值不仅体现在软件的开发阶段,而且体现在产品的调试、测试和售后服务的全部生命周期之中。
多核时代已经来临,这是一个无可争辩的现实。为了最大限度地利用多核技术所带来的好处,而不是在商业竞争中落后于对手,你最好的办法就是采用商业化的多核软件开发解决方案。切莫在别人都开着跑车的时候,你还在自己独自从一个轮子开始闭门造车。多核软件开发中遇到的挑战不可能用一劳永逸的方法去解决,但你可以为自己配备更具综合能力的工具,以备不时之需。