多核虚拟化多操作系统的软件趋势
2010-03-08迎九
迎 九
摘要:本文介绍了时下关于多核的最新话题,包括多核和虚拟化之间的关系,以解多处理器和多核的不同之处,乃至当今多操作系统下的supervisor和HyPcrvisor之间的关系,最后简要介绍了风河公司在多核和多操作系统方面的技术战略。
关键词:多核;虚拟化;多操作系统;supervisor;Hypervisor
多核和虚拟化的关系充满诡辩
多核和虚拟化如何帮助客户快速、低成本地进行开发?据风河公司CTO(首席技术官)Tomas Evensen介绍,其实这是充满诡辩的问题,如果你要想用多核来提高效率,可能就需要多功能处理,因此复杂性提高,需要承担更多的风险,所以这是机遇与风险并存的状况。过去人们只是通过多任务处理或者并行处理,然而在开放资源系统中,可能就会遇到像风河VxWorks、Moblinf注:Intel力推的开源组织等体系,更加复杂,这时可以采用虚拟化和中间软件等。当然,这样运行时对于客户可能更加高效,但也更加复杂化。
在未来三到五年中,多核虚拟化在嵌入式方面的应用主要还是面向计算量比较高的多核客户。是否采用多核虚拟化关乎整合还是分开的问题,如果你不想用单核,你当然可以不用,但多核也更加复杂,即便说用两核也可能会涉及到整合问题。所以你可以选用单CPU JHypervisor(如图1,是由少量代码组成特种OS,是在现有操作系统之下称为hypervisor的一层,这层实现对多操作系统和虚拟化的支持。例如对于风河来说,这层可以是Vxworks或风河Linux)或多核的Supervisor(在多核和多操作系统中间有虚拟化的一层配置Supervisor,它比Hypervisor的功能低一些,因为它不需要虚拟CPU),也可以两者兼用,用的时候你可以把它们整合在一起,也可以把两者分开。
从多处理器到多核
为了更清楚地理解多操作系统、多核与虚拟化趋势,需回到多处理器系统和多核的关系上。多处理器离多核的应用只有一步之遥。不过,多核与多处理器也有不少区别,其中有一些挑战你必须面对。首先,多处理器系统中的软件并不能直接拿到多核系统中运行。
将原本分散的多处理器系统整合为单一多核系统并不能通过简单地将多个系统简单地压缩在一个多核系统中来实现。系统架构的变化使多个系统之间的并行运行和通信协调方式发生了不小的变化。
在采用多核技术的时候,操作系统管理内核的基本方式有两种:第一种是对称多处理(SMP),这是由一个操作系统来控制多个内核。只要有一个内核空闲可用,操作系统就在线程等待队列中分配下一个线程给这个空闲内核来运行。第二种是非对称多处理(AMP),每个内核上都运行各自的操作系统。
因此,多核系统并不是直接把多个芯片的多处理器浓缩到单一芯片之中这么简单。实际上,多核系统和多处理器系统之间存在着许多重要的区别,导致不能把多处理器系统上的软件直接移植到多核系统上来。
多处理器系统和多核系统的主要区别之一就是,在多处理器系统中,CPU之间的界线是比较清晰的。在典型的多处理器情况下,多个CPU通过总线连接起来,即便是共享外部存储器,这些CPu基本上都是独立运行的。在多核系统中,情况就有所不同。不论采用何种架构,在多核系统中,被共享的东西非常多,例如中断控制器、外设以及Cache(高速缓存)等。
多操作系统下的SuperviSor或Hypervisor
当你希望运行SMP(同构核)环境时,多核系统的这种特征通常表现为一种优势,因为所有的内核都由同一个操作系统来管理。但是,当你要在多核系统中同时运行两种以上的操作系统时,例如同时运行一套RTOS(嵌入式实时操作系统)和一套通用操作系统,就会遇到较多的困难。在这种情况下,会有两种选择:第一,在两个操作系统之间进行频繁的沟通,例如在它们之间建立主、从关系:第二,更简便的方法是采用Supervisor或者Hypervisor,这是一些少量的代码,负责管理协调多个操作系统。显然,第二种方式是更彻底、灵活、具有扩展性的多核软件架构。
Hypervisor之所以能够有效地管理运行在其上的多个操作系统,得益于分区和虚拟化的方法。总的来说,系统中有三类资源可以被虚拟化:执行单元(CPU)、内存和设备。执行单元虚拟化是基于时间片来进行。内存虚拟化是把物理内存划分成许多区域。设备虚拟化则是通过给设备定义接口和API调用来提高使用灵活性和利用率。
Hypervisor并不是一个全新的概念,在服务器中早已得到广泛而且成功的应用。不过,嵌入式系统中经常用到的Hypervisor主要是对内存和设备进行虚拟化,以便在操作系统之间的资源共享得到完全的保证,而不是对执行单元进行虚拟化。这种专用的Hypervisor比较小,而且直接运行在硬件上,不像服务器中用到的Hypervisor主要运行在完整的操作系统之上并且使用宿主操作系统的资源。
在嵌入式Hypervisor中,性能和独立性是两大最重要的需求,而后向兼容性(可以让从属操作系统不经修改即可运行在宿主操作系统之上)是服务器Hypervisor中非常重要的需求。为了满足嵌入式系统的特殊需求,这类Hypervisor应当采用以下特殊设计:
·设备尽可能直接映射给从属操作系统,以便获得最高的性能,以及实现最佳的隔离性。
·应当具有更强的可伸缩性,可以自主选择对哪些部分进行虚拟化,也可以自主选择虚拟化的目的是提高性能还是提高隔离性。
因此,嵌入式Hypervisore的实现会依照硬件支持的程度存在非常大的差异。即便是在没有任何硬件支持的情况下,Hypervisor也可以运行得非常快,关键是要做到适当水平的准虚拟化(Paravirtualization)。
多核与多操作系统的组合配置
综上所述,多核与多操作系统的组合配置非常多样,这就会给软件工程方法带来很多变化和挑战。不过,我们还是可以总结归纳出几种最典型、最常见的情形,并针对这些情形找到最适当的解决方案。
与多处理器系统的软件开发一样,你首先会面临的挑战是对软件代码进行分隔以便可以并行运行。除此之外,在多核系统中,还会遇到另外一些挑战,例如:1)获得适当的操作系统配置、资源共享和系统引导的Run-time支持;2)处理好内核以及资源分区之间的通信;3)拥有能够支持多核产品配置、原型化、分析、诊断和测试的开发工具。对于上述每个方面的问题与挑战,用户都必须得到适当的答案,才能在市场允许的时间范
围内开发出像样的产品。
值得注意的是,虽然开放源码社区也有多核开发工具,但是多核软件开放所遇到的挑战显然更为复杂,仅仅靠自己去探索未必有效。更重要的是,当你在高度竞争的商业环境中从事设备软件开发,必然会在时间、成本和产品可靠性等诸多方面受到更严苛的要求。因此,用户不仅需要拥有高效率的工具,而且需要有专业人员在最短的时间内指导和帮助你解决问题,这些相关的技术支持与服务都是商业化开发工具的组成部分。可见,不仅包括软件开发工具,而且包括配套的技术支持与服务,这样的商业化解决方案才是整体效率最高、整体成本最低的方法。
嵌入式软件的制高点:平台
嵌入式软件的制高点是在操作系统之上的平台,并非操作系统本身。过去的用户可能会先选硬件,再选操作系统,选桌面软件,最后选工具,对平台软件考虑得还不太多。但是随着用户对平台的进一步认识,以及平台的进一步发展、用户在做决定的时候可能会考虑平台方面来做出最终的决定。
风河的发展方向是平台化,并满足不同的芯片制造商。风河方案可支持市场上所有的主流芯片架构和多样化的操作系统平台,已经预先置入了虚拟化机制,并且针对SMP、AMP和supervised AMp等多种多核配置的硬件平台和应用领域做了优化。客户可以在三个层次上自由地选择:(1)自由选择操作系统;(2)自由选择sMp、AMP、supervlsed AMP和虚拟化等多核配置;(3)在基于风河Workbench开发环境中选择自己需要的配置。相应地,风河Hypervtsor可以针对航空航天国防、汽车、消费电子、工业控制和网络通信等多种应用领域实现设备的虚拟化。风河下一步的重点是工业领域和医疗领域应用。
在操作系统层面,风河Linux正蓬勃发展,但风河Linux不会完全取代vxworks,一些传统的应用例如国防、航空航天和一些工业领域,VxWorks的销售额还在稳步上升。
TI 6核DSP阵列C6472
DSP群列的意义
芯片的运行频率越来越接近硬件的物理极限。多核技术最初的初衷是可以实现信息处理负载的分散均衡,为完成设备性能的提高找到新的出路,实际上,多核技术的意义远不止此,一方面,即便是对性能要求不高的应用。如果将原本由多个处理器系统承担的负栽整合为单一多核系统,也可以降低设备成本和功耗,使电子产品获得更高的性价比。
以DSP为倒,DSP阵列的方式也有多种,一种是在高效DSP的基础上增加高速接口,变成一个分列的DSP阵列(编者按:多处理器架构),但这又碰到另外一个瓶颈一系统的功耗和尺寸有限。因此TI就诞生了多核DSP(编者按:多核架构)概念,目的之一是要实现最佳的电源效率。
多核技术在客户应用中有哪些方向呢?比如通讯基站,需要能够有更多的通道和容量;在工业应用中,他们需要有更强大的扩展的功能;医疗方面,性能还需要进一步地提高。
C6472
TI于2009年11月推出了新平台一TMS320C6472。一年前TI曾推出了三核TMS320C6474,每个核是1GHz的DSP;此次的C6472并不是c6474的一个缩减版,特色在于芯片内部有6个C64+核。在功耗方面。TI达到了一个新的极限一即每个MIPS的功耗为0.15mw(每核主频500MHz的产品),同时实现3GHz的性能。具体来说,c6472每核的主频最低是500MHz,最高700MHz,中间有625MHz。
该多核500MHz解决方案比6颗500MHzC6415 DSP的功耗降低4()%,DSP成本降低2/3。板极的空间可节省80%。
C6472内部有6个DSP的核。每个C64x+核配备L1数据和L1程序高速缓存(图1),这样每个核就可以并行运算。除此之外,还有一一对应的L2存储器。为了使它们协调工作,特别在C6472的架构中加了一个共享的L2存储器。另外对DsP和处理器来说,外设之间的交换数据也是很重要的,EDMA3.0是TI特别的一个数据交换的方式。
再有就是配备了一些接口。诸如HPI(主机接口),如果有复杂的控制就要由高性能的cPu来管理这颗DSp。还有Utopia II光口、TSIP电信串口、存储器用DDK-2接口等,尤其sK/O(串行Rapid(o)是一个高速的、可以做级联的接口。通过sRlo可以把多个DSP集合成DsP阵列,如果有更高的这种需求时,可以把多片C6472集联在一起,由此可以想象这是多高的运算速度。