虚拟化:使软件尽早插手系统设计
软件开发是一个令人着迷的产业。在过去这些年来,随着开发商不断的采用新的编程语言(从Fortran到Pascal再到C++及其他更高级的语言),它也在不断的改变着。但是,尽管开发商很容易注意到软件本身可以推动创新,但是很少考虑他们基础设施应对变化的可能手段。在虚拟化发展过程中 ,这将有所改变。
当第一个嵌入式设备出现时,众所周知,软件根本不存在;所有的功能建立在硬件中。随着微处理器的引入,软件内容出现了,但是仍然在整体系统中只占一小部分。在过去二十年,随着软件规模和复杂性的爆炸性增长,嵌入式行业经历了一个整体的迁移。今天,软件是嵌入式系统中提高功能和创新的主要推动力。
虽然硬件设计在工具和工艺开发方面得到了重要的投资,但是软件的开发流程基本上从二十世纪八十年代就保持基本静态。硬件产业得益于良好的标准和流程,但是软件开发的方法并没有跟上,使得程序员从事软件开发完全是临时性的。
这种缺乏基本的软件开发基础设施的后果太常见了:成本超支、跟不上日程和质量差的软件。软件开发目前的办法可以看出约有三分之二的项目迟于上市,三分之一超过预算,并且,将近一半的嵌入式设计被取消。即使为工作或者产品的性能增拨资源,也不能使得软件开发者脱离一贯的碰壁情况。
为什么在嵌入式程序世界存在如此惊人的断开?为什么软件在设计越来越复杂时仍停滞不前?这既不是人也不是设备的问题。相反,它是没有为辅助软件发展设计出精密战略发展基础设施而造成的。
一个嵌入式设备通常是重新开始的,始于硬件且终于软件。这个过程是顺序的,由硬件开始设计围绕一定的期望,考虑存储、MIPS、界面、连接性等等。多种器件放到一块建立起一个硬件系统,它才是软件开发最重要的。这种以硬件为中心,自下而上的方法涉及到许多步骤和多重依赖关系,而且只有经过系统整合阶段,当软件实际在平台运行时,这个系统才能从性能的角度去理解。(相比之下,面向服务的体系结构(Service-Oriented Architecture,SOA),这种方法规在设计一个基础架构(以支持必要的服务)之前已经规划好了必要的服务)。
自下而上开发方法的主要弱点是,在软件设计过程中,它把软件作为一种后添加的事物,尽管有越来越多的系统功能依赖于软件,而不是硬件。整合在这个过程中发生的非常晚,从而难以发现由硬件、设计或者架构引入的错误。在许多情况下,开发商不得不重新考虑他们的设计以降低时间成本和预算。
![](../img/eep/emb/emb-50652euvxcufih41.jpg)
随着软件的复杂度达到了新的高度,并且固定程序被证明是付运的主要障碍,以硬件为中心方法的低效和不实用正在变得越来越明显。开发商如何才能战略性重新思考自己的发展方法以至于使得他们不再受到硬件的摆布?软件开发商在系统阶段如何能够较早的进入系统设计?这就是虚拟化出现的原因。
虚拟化的先驱
虚拟化技术用于嵌入式设备开发已经好几年,既作为实际硬件的替代,也作为复杂系统的设计和调试平台。在硬件设计产业,仿真已经用于插口和PCB 阶段。无论是设计处理器,PCB或者SOC,硬件开发商可以使用仿真工具,像Mentor、Cadence和Synposys,以建立模型和预测他们系统的行为,而无需等候真实物理系统开发出来。
嵌入式设备之外,我们看到了许多产业在使用传统方法碰壁后运用虚拟化方法取得成功。在过去两年里,服务器虚拟化已经通过提高数据中心效率和降低总体成本方面取得了很大的进展。虚拟化已经解决了这种持续的挑战,包括服务器扩散、CPU利用不充分和应用分离。
仿真同时被引入了许多产业,如航空航天和国防,应用在他们自己的软件开发中。通常,这些行业需要如此复杂的设计,以至于等待了一年或者更多年后才知道硬件是行不通的。随着点解决方案、设计复杂度基本上授权给这些公司投入资源在国内开发虚拟化软件解决方案,仿真已经在国内发展起来了。
嵌入式软件开发行业正处在一个既不是传统的、以硬件为中心的开发方法,也不是内部的点上,一次过的虚拟软件开发解决方案在这个竞争激烈的市场,必须能够提供快速的产品上市时间、节约成本和质量保证。嵌入式设备中软件内容的角色没有任何下降的趋势,多核器件的增长将前所未有的复杂性加入到了硬件和软件中。必然走向多核设计,只需强调对软件开发解决方案需求,从而能够充分利用多核设备的潜在性能。
当前的嵌入式软件开发已经使公司战略地重新审视和反思自己的过程是必要的,不仅仅在设备阶段,还要在过程设计阶段 。我们可以从中知道硬件产业确实需要仿真,但是我们也需要虚拟化,更进一步说,作为一个基础的、根本的设施引
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)