嵌入式虚拟化技术的起源源于创建实时操作系统 (RTOS) 可以与 Microsoft Windows 等通用操作系统 (GPOS) 一起工作的环境的想法。嵌入式虚拟化创建了一个分区环境,其中两个操作系统及其上的应用程序运行在一个平台上,就好像它们运行在两个独立的平台上一样。这样做的好处是显而易见的:如果需要更少的处理平台来满足应用程序的计算需求,则可以降低系统成本和复杂性。如果系统可以用更少的硬件元件构建,那么产品的可靠性也可以得到提高。
早在 80 年代初期,机器制造商就看到了利用 PC 平台为其机器构建控制系统的机会。第一个此类应用程序相对简单,重点主要是利用成本大大低于专用控制硬件的可用硬件。
随着 PC 随着 Windows 的加入而发展,大量应用软件包被引入,推动了具有支持图形引擎和软件工具的人机界面 (HMI) 的新标准。机器制造商看到了使用 Windows 创建可以简化机器设置、操作和维护的高级 HMI 的机会。但是,基于 Windows 的 PC 不能用于涉及时间关键控制的应用程序的某些部分,因为 Windows 本身不是 RTOS,并且不能确定性地执行控制功能。因此,除了 PC 之外,嵌入式系统设计人员通常会在机器上添加一个实时计算机子系统,以提供一整套产品功能。
另一方面,RTOS 供应商没有资源来构建可用于 Windows 的那种图形软件工具和支持。一些人看到了将他们的操作系统与 Windows 耦合的机会,以便在单个计算平台上将 RTOS 功能添加到基于 Windows 的系统中。
对于嵌入式系统 OEM 而言,将 RTOS 与 Windows 结合在一台机器上的好处是显而易见的,但与此相关的技术问题非常复杂。在一台计算机上运行两个操作系统并不是一个新概念。10 年前,它已在采用虚拟化技术的大型机上完成。该技术虚拟化了整个计算机平台,本质上在操作系统和硬件之间创建了一个接口层,就像今天的现代服务器虚拟化技术一样。
这样做的根本问题是,当应用软件需要与其 I/O 交互时,将操作系统和应用软件与硬件的直接访问隔离开会导致不确定的时间延迟。然而,实时应用程序必须直接访问(有时称为裸机访问)应用程序需要控制的设备,以便软件可以及时向 I/O 设备写入或读取数据,确定性的方式。
嵌入式虚拟化解决了多操作系统的确定性问题
必须设计一种方法来划分平台资源,以便 RTOS 可以直接访问 I/O 和确定性运行应用程序所必需的中断。像 Windows 这样的 GPOS 不允许共同驻留的 RTOS 控制其 I/O 设备。
相反,GPOS 通常在安装期间控制平台上所有可用的 I/O。除非修改 Windows 的选项会带来全新的问题,否则必须设计一种从 Windows 保留 I/O 的方法。由于这最初是在单核处理器时代完成的,因此必须开发技术让处理器以最小的开销将上下文从 RTOS 切换到 GPOS。这些是嵌入式虚拟化的原则,这些原则已在数千个成功的嵌入式系统产品中得到验证。
进程间通信使任务协调成为可能
在共享但独立的环境中运行应用程序的多个操作系统需要应用程序相互传递数据。这可以通过简单的保留内存块轻松执行,但需要应用程序进行一定程度的内务管理,并且在需要在特定时间传递和读取消息的实时系统中管理起来很麻烦。
通信过程需要以这样一种方式构建,即在预期保持确定性时发生消息传递。通信必须考虑消息的优先级相对于当时正在运行的其他实时任务的优先级,以便消息将在正确的时间或以正确的顺序传递。当在非实时 GPOS 环境中运行的应用程序与在实时环境中在 RTOS 上运行的应用程序之间进行通信时,这一点尤其重要。不得允许未确定优先级的事件中断已确定优先级的任务。
多核处理器有助于功能分区
多核处理器的引入导致一些规则发生了变化。原则上,处理器不再需要共享。每个操作系统都可以有自己的处理器内核(或者多个内核可以专用于一个操作系统);但是,实际上,Windows 等操作系统在安装时假定所有处理器内核都属于它们。
设置多核系统以使 GPOS 控制某些内核而不控制其他内核需要一种方法来告诉 GPOS 哪些内核对其不可用。通过适当的解决方法,四核处理器可以支持多种 GPOS:RTOS 配置,包括 3:1;2:2 和 1:3(参见图 2)。这种灵活性允许用户根据应用程序的要求优化平台的计算资源。虽然具有复杂 Windows 部分和轻实时要求的应用程序可以配置为运行 GPOS 应用程序的三个内核和一个运行 RTOS 的内核,但具有同时运行多个实时控制功能并与简单 HMI 通信的应用程序可能具有一个专用于 Windows 的内核和三个到多个 RTOS 实例。
图 2:嵌入式虚拟化支持多核处理器上的不同功能分区策略。
由于可以在多核处理器上同时运行多个 RTOS,最初开发用于在单个共享处理器上的 GPOS 和 RTOS 之间进行通信的通信系统可以扩展为支持 RTOS 和 GPOS 的多个实例之间的通信。 从理论上讲,系统架构可以扩展为创建一个相互通信的操作系统网络,每个操作系统都运行特别适合其自身环境的应用程序元素。与系统的 I/O 需求一样,通信结构需要维护和支持实时子系统的实时确定性要求。
虚拟化支持跨平台的确定性通信
TenAsys 公司的 INtime RTOS 系列是一种已在关键任务应用程序中证明自己的嵌入式虚拟化环境。银泰嵌入式虚拟化技术封装了PC平台分区的原理,使Windows和RTOS并行运行。INtime 通过称为 GOBSnet 的全球对象网络系统促进 RTOS 和 Windows 实例之间的确定性通信。这包括一个内置的通信网络,允许不同操作系统上的多个应用程序以确定的方式在进程级别进行通信。
使用具有类似于 URL 的寻址方案的以太网,GOBSnet 被扩展以使单独的系统功能块(称为节点)能够在同一多核处理器上或跨物理不同的平台进行确定性通信。通过这种方式,大型和复杂的应用程序可以分布在多个节点上(参见图 3),从而在利用多核处理器的并行处理能力的同时简化它们的创建、调试和优化。这使得 OEM 可以通过扩展所使用的处理器或处理器内核的数量来以不同的成本点或功能级别生产一系列产品。
图 3:全球对象网络促进了复杂嵌入式应用(例如汽车测试系统)中内核之间和跨计算平台的通信。
嵌入式虚拟化技术已经在实时应用程序中使用了十多年,但是随着包括越来越多 CPU 内核的处理器的出现,这些方法彻底改变嵌入式系统设计的全部潜力现在才变得清晰起来。随着全球对象网络支持,嵌入式虚拟化已准备好成为构建大型多操作系统系统的标准方式。
审核编辑:郭婷
-
处理器
+关注
关注
68文章
19183浏览量
229226 -
嵌入式
+关注
关注
5073文章
19038浏览量
303596 -
cpu
+关注
关注
68文章
10832浏览量
211229
发布评论请先 登录
相关推荐
评论