毕设翻译39061231师斌hardware-supported virtualization on arm_第1页
毕设翻译39061231师斌hardware-supported virtualization on arm_第2页
毕设翻译39061231师斌hardware-supported virtualization on arm_第3页
毕设翻译39061231师斌hardware-supported virtualization on arm_第4页
毕设翻译39061231师斌hardware-supported virtualization on arm_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单位代码 10006学号 39061231类 TP393.1级 分密毕业设计(翻译)ARM 平台下的硬件支持虚拟化院(系) 名称计算机学院专业名称计算机科学与技术学生名称师斌指导教师李博2013 年 5 月ARM平台下的硬件支持虚拟化师斌北京航空航天大学 京航空航天大学毕业设计(论文)第1页 ARM 平台下的硬件支持虚拟化作者:Prashant Varanas,Gernot Heiser摘要ARM 是用在移动设备和多种高端嵌入式系统的上的处理器体系结构。去年年底 ARM 发布了支持硬件虚拟化的架构,这使得在客户机上运行未经修改的操作系统二进制文件成为可能。为此,我们已经设计实现了一个虚拟机监控

2、器,我们认为这个虚拟机监控器是是第一个运用了ARM 硬件虚拟化扩展的全虚拟化虚拟机监控器。并且,我们在虚拟硬件上对其做了评估。本文中,我们将描述我们的设计方法并报告我们对该体系结构的一些经验。类别和主题描述:D.4.7(操作系统):组织和设计一般条款:设计关键词:虚拟机监控器,虚拟机,体系结构,硬件支持,ARM 京航空航天大学毕业设计(论文)第2页 1引言虚拟化技术,以前主要应用于数据中心和企业计算基础设施中,而现在受到成本和安全需要的驱使,已经蔓延到了嵌入式系统。ARM,这种高端移动设备的主流体系结构并不是虚拟化友好架构。这意味着 ARM 架构下的虚拟化技术需要二进制翻译或者半虚拟化改造。二

3、进制翻译技术对于移动设备来说需要耗费太多资源。而半虚拟化技术需要使每个受支持的操作系统适应特定的虚拟机监控程序的接口,这将付出很大的工程代价。在服务器的世界,x86 架构占领着绝对统治的地位(x86 也不是虚拟化友好架构)。虚拟化的繁荣发展使得其架构有了硬件支持虚拟化扩展。这使得在虚拟机上运行未经更改的本机操作系统二进制文件有了最小限度的性能损耗,大大简化了实现虚拟机监控程序并减小了性能开销。上面所说的有关硬件虚拟化的一切都正在嵌入式处理器世界发生。因为,去年,ARM 沿着相似于 x86 处理器制造商的路线,发布了在其架构上的虚拟化硬件扩展。在本文中,我们提出了第一个使用 ARM 硬件虚拟化扩

4、展支持的完全虚拟化的虚拟机监控器,它能够同时运行多个未经修改的 Linux 客户机。同时,我们总结了使用这一新的硬件扩展的经验。不幸的是,只有非常有限的性能评估,因为缺乏真正的硬件,现在的虚拟化硬件扩展只在时间不精确的模拟器上。本文接下来的的结构如下:第二节,概述当前已有的相关工作。第三节,介绍 ARM 架构的概况;ARM 虚拟化硬件扩展;以及和 x86 架构的对比。第四节,概述我们的设计。第五节,提出虚拟机监控器的实现;第六节,展示我们的虚拟机监控器的 TCB 大小和指示性的性能数据。第七节,讨论我们对于 ARM 架构虚拟化硬件扩展的经验。第八节,得出本文的结论。 京航空航天大学毕业设计(论

5、文)第3页 2相关工作Open Kernel Labs, VMware 和 Red Bend Software 都提供了商用的 ARM 平台虚拟化解决方案,这些都使用半虚拟化。Green Hills Software 使用 ARM 架构特有的 True Zone 特性提供了能够运行未修改操作系统的虚拟机监控器。但架构限制了使他只能运行单个虚拟机。三星公司把 Xen 移植到了 ARM 平台,但是性能非常差,一个 Linux 客户机只有大约一半的相对于宿主机的性能。唯一能够看到性能数据的商用产品 OKL4 microvisor 性能也比原先低约一个数量级。X86 平台的虚拟机监控器 NOVA,类似

6、于 OKL4 microvisor 和我们的设计,使用微核结构来减小虚拟机的 TCB。Fisher-Ogden 在 Intel 和 AMD 处理器上深入分析了 x86 的虚拟化硬件扩展。Adams 和 Agesen 发现二进制翻译性能优于完全虚拟化,但这是在硬件虚拟化扩展不包括内存管理单元虚拟化时的实验结论。后来的一个实验发现内存管理单元虚拟化显著降低了性能开销,尤其是使用大页表的时候。而 ARM 虚拟化扩展已经包括了内存管理单元虚拟化。 京航空航天大学毕业设计(论文)第4页 3ARM 体系结构ARM 体系机构已经发展了几十年。这里,我们的重点在最新的版本 v7 中,这是一个支持硬件虚拟化扩展

7、的版本。3.1概述ARM 是一个 32 位精简指令集体系结构,包括 16 个通用(GP)寄存器(包进入的不同异常、运行时允许使用的异常和堆积的寄存器的数量。ARM 架构支持一种叫做 TrustZone 的特性,它提供了一个正交处理器模式,叫做安全模式。硬件资源(内存和芯片设备)被配置为总是可用或只能在安全模式使用。而安全模式和非安全模式的转换则是在一个叫做管理者模式的超级权限的模式下。在启动时,处理器首先进入安全模式下的内核模式。TrustZone 可以在其他本地代码之外运行一个未经修改的本地操作系统,类似于虚拟化。其原理是通过在非安全模式运行客户操作系统而在安全模式运行其他的代码。这不是真正

8、的虚拟化,而起只支持单个客户机。标准的 ARM 指令集使用 32 位指令。其显著的功能是指令预测及支持复杂索引和地址寄存器更新的桶移位器。一个系统协处理器包括内存管理单元,缓存控制和性能检测单元。更高级的协处理器(cp15)可以用来实现可选功能,如 FPU。ARM 还有两个其他的指令集:Thumb-2,使用变长指令集(16 位和 32 位),是可以达到更高的代码密度的性能能接近 ARM 指令集的。第三个指令集是 Jazelle, 是为更有效执行 Java 字节码设计的。ARM 有两个级别的芯片级缓存:一个虚索引实标签的一级缓存 和一个二级物理缓存。TLB 项则是硬件从二级页表中读取的 32 位

9、物理地址。TLB 项都有一个 8 位的地址空间标签。支持页面大小为 4KB,64KB 和 1MB。IO 则是通过内存映射。ARM 架构定义了一个通用的中断控制器(GIC),它包括两部分。每个 Cpu 京航空航天大学毕业设计(论文)第5页 的 GIC CPU 接口执行中断和抢占优先处理;而全局分配器则负责接收中断,控制中断优先级,启用和将被送往的 CPU 接口。软件对接口确认中断。ARM 架构有大量的非指令显示信息,从而避免了陷入并模拟的虚拟化方式。比如,协处理器指令在用户模式被悄悄的忽略了。此外,虽然 ARM的陷入成本相对低廉(内 ARM 核模式进入和退出花费大约 12 个指令周期,而x86

10、则需要上百个),完全虚拟化还是有很大的开销。因为现代操作系统往往频繁的操作状态,比如处理器状态和页表。3.2虚拟化硬件扩展ARM 架构的虚拟化硬件扩展表面上类似于 x86。他们提供了一个新的处理器模式和一些特性来提高性能。ARM 架构虚拟化扩展仅适用于非安全模式。他们引入了一个新的处理器模式,监控器模式(hyp mode),它是比现有的非安全内核模式拥有更高权限的模式。这便把现存的内核模式和用户模式留给了客户操作系统和程序,如图3.1所示:图 3.1ARM 处理器模式监控器模式的进入可以通过内核模式的一个新的指令(hvc)或者用户模式和内核模式的可配置异常。监控器模式具有分组寄存器以及额外的模

11、式寄存器,它们用来存储导致监控器模式进入的配置和信息。该模式还有一个专有的虚 京航空航天大学毕业设计(论文)第6页 拟机标示符(VMID)寄存器。TLB 项都标有 VMID 来支持多客户机共存的映射,从而消除了多个客户机切换时需要刷新 TLB 的缺点。监控器自身的页表(翻译客户机物理地址和监控器虚拟地址的页表)使用了一个新的,更广泛的的格式来支持 64 位物理地址(未来有可能支持 64 位虚拟地址)。他使最大页面大小从 1MB 增加到了 2MB。这种新的格式也可以选择性的用在客户机。此外,ARM 还支持了许多机制,减少了完全虚拟化的成本,我们现在讨论一下。3.2.1可配置陷阱许多异常都可以配置

12、为陷阱陷入到监控器或者客户机内核。这样可以大大减小监控器陷入的频率,例如通过配置系统调用陷阱直接令客户机处理。中断陷阱则的配置则是全局的,所以,要么所有终端都唤醒监控器程序,要么所有中断都被送到当前活动的虚拟机。3.2.2仿真支持载入和存储指令并不是天生的虚拟化敏感指令,但是当操作敏感数据(如设备寄存器)时则会变得敏感。虚拟机监控器程序必须解码这样的指令并模拟他。模拟的开销不仅包括额外的指令执行(包括客户物理地址到真实物理地址的转换)还包括装载该指令造成的D-cache未命中(尽管事实上,他已经被装入指令寄存器和I-cache)。ARM的仿真支持通过在监控器寄存器中保存相关信息(源或目标寄存器

13、,无论是一个读取或存储指令,数据大小将被转移),在大多数情况下消除了读取和软件解码负载。3.2.3二级地址转换类似于 x86 的扩展页表,ARM 支持两阶段的地址转换:客户虚拟机制到客户物理地址(在 ARM 中被称为中间物理地址),其次是客户物理地址到真正物理地址。非宿主机模式下 TLB 未命中后,硬件页表先经过客户机页表,然后再 京航空航天大学毕业设计(论文)第7页 遍历监控器页表,并构建一个 TLB 项代表客户虚拟地址到真实物理地址的转换。这原本需要访问四个级别的页表,但如果监控器使用 2MB 的大页表则可以减少到 3 个,显然,当运行在监控器模式时,只有一级地址转换。3.2.4虚拟中断为

14、了避免对中断控制器的仿真(这将增加明显的的复杂度,并且需要频繁的陷阱监控器模式),ARM 引入了虚拟中断的概念。它是由一个的新硬件组件,虚拟 CPU(VCPU)接口。它可以被映射到客户机作为中断控制器的 CPU 接口,他可以被客户机用来在不陷入虚拟机监控器程序的情况下获取并清除中断信息。但虚拟机监控程序仍必须模拟中断分配器,所有的客户机都可以访问它的陷阱。这不会导致性能问题,因为分配器通常只在启动时访问(或模块加载时)来给驱动程序注册特定的中断和将要发送到的具体的(虚拟)cpu。如果中断是配置为被虚拟机监控器处理,监控器可以准确地将中断送到当前客户机,通过提高适当的客户机虚拟中断的 VCPU

15、接口的电平。一个虚拟中断可以连接到物理中断,这种情况下,当客户机清除其虚拟中断时,物理中断将在没有监控器的干预下被清除。图 3.2 显示了上述的顺序。硬件在虚拟中断处理时放弃当前中断优先权,这是为了支持之后的同优先级的可能注入的其他 vm的中断。 京航空航天大学毕业设计(论文)第8页 图 3.2 中断处理流程 3.3与 x86 的对比与 x86 不同的是,x86 的 root 模式与已有的安全级是正交的,而 ARM 的监控器模式则有严格的高于现有内核模式的权限。ARM 需要虚拟机监控器程序保存客户机现场,而 x86 则是由硬件自动完成的。ARM 与x86 二级地址转换和 TLB标签技术是相似的

16、。两种架构都支持虚拟机监控器程序向运行中的客户机注入中断。ARM 允许客户机在不陷入监控器的情况下感知,清除,这些都需要陷入监控器程序。中断,而 x86ARM 的仿真支持很大程度上解放了虚拟机监控器程序载入并模拟敏感指令的负载。相反,x86 的复杂指令集的特点决定它不支持这样一个简单的,优雅的解决方案,它需要监控器程序完全模拟指令集架构,这增加了显著地运行开销及成千上万的代码量。ARM 将通过系统内存管理单元支持了 IO 虚拟化,就像 x86 中的 IOMMU,但这是平台的功能,ARM 必须把他们的扩展释放到核心 ISA。 京航空航天大学毕业设计(论文)第9页 4虚拟机监控器设计4.1概述我们

17、的虚拟机监控器程序支持静态配置固定数量的虚拟机。动态创建和销毁虚拟机非常复杂并且这些工作和架构无关,所以对我们的原型系统没有什么好处。此外,嵌入式虚拟化的用例通常不需要动态的虚拟机,这也是为什么商用的OKL4 microvisor 都不支持它。因此我们这个原型系统的产品化实现它。人也不一定我们也决定不使用监控器模式内的虚拟内存,因为它并不会提供任何好处(尤其是不支持动态虚拟机实上,不使用虚拟内存有性能优势,因为它避免访问监控器页表并且防止了监控器竞争 TLB 项。当然,虚拟内存可以用于客户操作系统,这并不受任何限制。而且,在虚拟机监控器中使用物理地址并不消除翻译客户物理地址时对页表的需要。依照

18、 OKL4 microvisor,而不像其他的微内核虚拟机监控器(比如 NOVA,我们不把虚拟机监控器分为模式和用户模式两个部分。NOVA,就像其他 x86虚拟机监控器程序,需要大量的指令模拟,设备模拟,BIOS 模拟代码。将这些分离这些代码进入用户模块可以增强程序的健壮性。相比之下,指令仿真在 ARM上几乎是微不足道的(这都归功于精简指令集架构和虚拟化扩展支持),并且ARM 也没有用来模拟的 BIOS。此外,由于虚拟中断,设备模拟所需的大量功能变成了模拟 GIC 上的分配器组件,这需要在监控器模式进行。因此,虽然几乎没有功能可以明显可以移植到用户模式,虚拟机监控器还是可以保持一个较小的代码量

19、。这些设计决策帮助保持虚拟机监控器程序的简单(没有限制其在嵌入式系统中的使用)。除此之外我们还做了一个生产系统所不能接受的简化的设计:不支持多核。当然这对于原型系统来说是可接受的,因为它减少了完成我们评估目标的的不必要的复杂性,因为多和支持将主要是正交的使用虚拟化体系结构。我们内核的结构应该被设计为相对容易添加多核支持的形式。 京航空航天大学毕业设计(论文)第10页 4.2虚拟机间通信出了标准的虚拟机监控器程序的功能,我们的原型系统还提供了一个高性能的虚拟机间通讯机制(IVC)和建立共享缓冲区的能力。这是非常重要的,对于支持共享封装在其虚拟机内的设备驱动,以及紧密集成典型嵌入式系统的各子系统,

20、OKL4 microvisor 也提供了这样的机制。依照 OKL4 microvisor,而不是其他大多数微核,我们的虚拟机间通信是完全异步的:首先,短信息(三个字)存放在接收虚拟机的虚拟寄存器中,接着,一个虚拟中断将被送到接收虚拟机。其他的送往接收虚拟机的送信息将失败知道接收虚拟机获得该中断。原型系统中,我们并没有实现对虚拟机间通讯的访问控制,除了要求发送方知道接收方的 VMID。广播发送到所有虚拟机也是允许的。我们需要在系统配置时为虚拟机间创建一个共享的缓冲区。一个虚拟机将有只读或读写该缓冲区的权限。在这个受限的形式的保护范围内,虚拟机完全负责管理访问共享缓冲区。他们可以使用虚拟终端同步缓

21、冲区。请记住这个简单的虚拟机间通讯模型是专为我们的评估设计的。对于一个商用系统,将需要一个更复杂的访问控制,最有可能是像 OKL4 microvisor 的基于能力的保护系统的变形。此外,这个消息专递的语义需要提炼,以避免创建隐蔽的通道。 京航空航天大学毕业设计(论文)第11页 5实现上面的设计选择允许我们将系统实现立基于现有代码:OKL 的“pico”产品, 用来执行没有内存管理单元的微控制器。因为目前 ARM 还没有支持虚拟化扩展的硬件,所以我们用 ARM 的 FastModels 模拟器,它能模拟仿真开发板并且包括虚拟化扩展。这个模拟器非常高效并且功能非常准确,但它的时钟不准确。还有,他

22、没有模拟复杂的外部设备如以太网,所以我们只支持简单的设备如 UART 控制台,LCD 控制器,以及嵌入式计时器。下面,我们将着重介绍一些实现细节。5.1虚拟环境切换(world switch)操作系统的上下文切换需要切换通用寄存器外加页表指针和地址空间 ID 寄存器,总共 18 个寄存器。浮点运算单元状态(16 或 32 位双字寄存器)通常延迟切换。而虚拟环境切换则更复杂,因为它需要处理更多的状态:所有内和模式的分组寄存器(21 个),系统协处理器的寄存器,包括内存管理单元状态寄存器(22 个)、所有的虚拟 cpu 接口(中断控制)状态(加上 3 个虚拟中断寄存器, 共 96 个)、所有的定时

23、器状态(20 个)和第二级地址转换页表指针和虚拟机 id 寄存器。共计 164 个额外的寄存器。此外,协处理器寄存器和设备寄存器比 GP 寄存器访问代价更大。计时器响应(虚拟机运行的时间片的结束)和优先级高于当前运行虚拟机的中断会导致虚拟环境切换。虚拟化扩展引入了一个新的定时器供监控器使用,而不干扰客户及使用计时器。在我们的原型系统中,我们没有实现虚拟机优先级,所以,只有在时间片用完时才会执行虚拟环境切换。5.2指令模拟对于大多数陷入到虚拟机监控器的指令,监控器模式寄存器提供的信息是足以模拟他们的。唯一的例外便是,ARM 的叫做回写(write-back)的特点。它允许在 load 指令时给地

24、址寄存器添加一个立即数。比如,指令ldr rd, rs, #imm 京航空航天大学毕业设计(论文)第12页 等价于ldr rd, rs add rs, #imm除了这一点,它是原子的,并且和普通的载入指令一样快的指令。回写并不包含在 ARM 的仿真支持中。同时,提前获取的指令是不会提供给虚拟机监控器程序的。因此,它必须准确的从客户内存中载入,解码然后模拟,客户机指令指针必须在返回客户机前增加。对于回写指令一个简单地模拟器(50 行代码)将足以支持虚拟机中运行的所有 Linux 代码。请注意加载错误的指令将导致一个 L1 缓存未命中,因为在取指令是,指令已经被放置在 I 缓存中。5.3硬件直连硬

25、件直连将允许一个客户机抢占式的使用设备,这种情况在很多设备都归各个子系统所有的嵌入式系统中很常见。这不需要招致任何的虚拟化开销,通常它只需要映射正确的内存区域,并保证设备中断将送往客户机。我们对一些设备使用该技术,包括 SMC flash 芯片,网络控制器和音频控制器。某些情况下需要更多的工作,比如 LCD 控制器,它需要物理上连续的缓冲区并且将客户物理地址转换为真实物理地址。我们的实现很简单,我们将所有的客户物理内存(除了共享缓冲区)映射到连续的内存区域并截获控制器对缓冲区指针寄存器的写操作。5.4设备共享目前为止,我们只添加了一些非常简单的共享设备:一个控制台(UART0),中断控制器的分

26、配组建,SP804 双重定时器和 PL031 PrimeCell 实时时钟。虚拟控制台设备运行在实时操作系统(我们的微监控器就在这里)的顶层的虚拟机的用户模式。他可以通过虚拟机间通信机制访问其他的虚拟机,该机制使用共享缓冲区传递数据,使用虚拟中断驱动程序数据已经准备好。最后,返回给客户端的虚拟中断表示通信已经结束。 京航空航天大学毕业设计(论文)第13页 我们在虚拟环境切换时切换时钟状态,这意味着客户机看到的是虚拟时间而不是真实时间。这在许多情况下甚至是嵌入式系统(一个简单的例子是 linux 下的 BogoMIPS 计算循环)中是合适的。我们通过包装硬件 RTC 产生每秒一下的节拍来提供第二

27、个分辨率的真实时钟,然后给每个启动 RTC 设备的虚拟机发送虚拟中断。需要真实时间的虚拟机将被分配一个直连的始终设备,但我们并没有实现它。5.5局限性我们选型系统的主要局限性是缺乏虚拟机优先级(虚拟机调度是通过大循环)和不支持多核。这些缺陷都将在新版本的监控器程序中弥补。其他的局限并不影响预期的嵌入式系统用例(至少在不远的将来)。第一是缺乏对动态创建及销毁虚拟机的支持;大多数嵌入式系统用例中,至少在固件升级间,虚拟机的数量是固定的。同样的,重复数据删除页几乎没有预期效益,因为嵌入式系统的用例大多是异构的,不同虚拟机运行不同的客户操作系统(比如linux 和 RTOS)。 京航空航天大学毕业设计

28、(论文)第14页 6系统评测6.1虚拟机监控器大小我们的原型系统包括 5730 行代码。我们估计虚拟机优先级的添加将增加大约 500 行代码,多核支持大约需要增加 1000 行代码。这些抵消了删除 1600 行我们刚开始实现该虚拟机监控器程序是用到的没用的代码,所以,一个完善的虚拟机监控器程序将仍然低于 6k 行代码,比 x86 上的 NOVA 的 9k 行内核代码及 27k行用户代码少了很多。6.2性能由于缺乏硬件架构,并且没有时钟精准的模拟器,做到真正的性能评估是不可能的。然而,我们可以通过收集痕迹或者通过已知的或估计出的大型命令的时延来粗略预测它的性能。我们估测的时延如图 6.1 所见,

29、它适用于 ARM A9 处理器和普通的内存系统。 图 6.1 预计指令时延 其中最不确定的是进入监控器模式的时延,估计需要 50 个周期。这对于虚拟机退出成本相对大不止一个数量级的 x86 来说简直好的难以置信。请记住, ARM 是精简指令集架构,内核的进入与退出将花费 10 个顺序的指令周期,而x86 需要几百个。同时,ARM 指令集避免了开销很大的复杂指令,比如自动存 京航空航天大学毕业设计(论文)第15页 储客户机状态指令(详见 3.3 节)。对于大量的微基测试,在上述假设下,我们测量了他们的指令数并将其转换成近似的周期数。结果在表 2 中,其中 instr 表示从模拟器中提取出的指令数

30、,cycles 表示周期中执行时间的估计结果。注意,即使我们监控器陷入性能比我们估计的差了 4 倍(根据我们的经验看,这情况很个周期,这对我们的结论没有什么大影响。),也只是加了额外的 150图 6.2 各操作预计负载虚拟机监控器进入退出的开销是估测出的模式转换开销和存取足够监控器平台的数据(NOVA)是 4000 周期。Page fault 是处理客户机内存没有被虚拟机监控器映射时的开销。 Device emulation 指的是截获并模拟对设备寄存器的访问。acc 是指使用硬件支持加速后的设备模拟。结果表明,使用了仿真支持后的设备模拟还是有很大开销,所以商用系统很有可能继续使用半虚拟化的设

31、备驱动。 World switch 指的是虚拟机上下文切换,使用 ARM 的多寄存器操作可以使存取现场变得更高效。多数现场状态都保存在协处理器中(内存管理单元)或者处理器外部控制器中(虚拟中断控制器,设备)的寄存器中,他们的存取成本比芯片内寄存器还高。Lazy FPU switch 指的是之后客户机应用程序尝试访问浮点运 京航空航天大学毕业设计(论文)第16页 算单元时的切换开销。 京航空航天大学毕业设计(论文)第17页 7经验我们发现 ARM 虚拟化扩展显著减少了虚拟机监控器程序的复杂性(和半虚拟化相比)和虚拟化开销。和 x86 相比,ARM 增加了一些复杂性,比如需要软件来存取虚拟机上下文

32、, 但这都是微不足道的(只有约 200 行代码)。该虚拟化模型的好处就是,虚拟机监控器程序可以充分利用对虚拟机状态的处理。比如,如果一个中断的将被注入当前运行的虚拟机中,除了运行虚拟机监控器程序所用到的状态,其他状态都不需要被切换。X86 架构这种情况下也会对剩余状态进行存取。而该模型的缺点是, 一个完整的上下文切换会比 x86 开销更大。然而,如果有一个单一的指令流水线来负责存取完整的 MMU(cp15)上下文,其开销将约为 1000 多个周期。ARM 虚拟化的中断处理也是简单高效的,因为虚拟机监控器程序可以注入中断而不打断虚拟机运行,x86 中虚拟机监控器则需要检查中断信息和客户机优先级,

33、然后通过客户机陷入来修改信息。ARM 的该模型有一个缺点就是中断处理的配置是孤注一掷的。除非所有的中断都可以被客户机处理(这看起来是不太常见的情形),要么中断来时还是要唤醒虚拟机监控器然后将他分配给对应客户机。配置每一个中断都将是一个重要的改进(减少了约 700 个周期的中断程序)尽管他将稍稍增加上下文切换时的成本(保存恢复 IRQ 位图)。指令仿真支持是是 ARM 虚拟化模型的一大优势,这大大降低了虚拟机监控程序的复杂性并显著提升了性能。回写指令是个例外,目前还没有可用的支持。鉴于指令已经加载到核心,具有可以将它保存到一个专用监控器中的寄存器的硬件可以减少约 250 个周期的仿真成本。然而,

34、这对于总体性能是没什么提升的,因为回写指令是一个比较不常用的。事实上,对于全部的处理器虚拟化,包括内存虚拟化等,主要是设备虚拟化比较需要指令仿真。然而,设备寄存器访问的纯虚拟化通常是非常昂贵的,即使在具有完全仿真支持的架构上。所以我们预计,对于大多数共享设备驱动来说,将继续使用半虚拟化来减少没有写回指令模拟支持的损失。 京航空航天大学毕业设计(论文)第18页 8结论和未来的工作在这个项目的过程中我们遇到了许多模拟器 Bug,对于 ARM 来说它们是未被发现的(但我们已确认它们是 Bug)。这些强烈的迹象表明我们对该模拟器用的最熟,也表明我们是第一个使用 ARM 虚拟化硬件扩展来开发功能齐全的可

35、以运行未经修改的 Linux 客户操作系统的虚拟机监控器。我们发现,虽然表面上看来,ARM 的虚拟化扩展和 x86 非常相似,但 ARM的精简指令集架构的特点使得它的实现更加简单。尤其是得益于精简指令集的指令仿真支持,它使得所有的需要的指令都可以用非常少量的代码模拟。虽然我们的原型系统还是缺乏很多功能,其中最重要的是虚拟机优先级和多和支持,但很明显一个功能齐全的 ARM 虚拟机监控器可以用大约 6000 行代码实现,大大小于 x86。我们将来的工作便是将这个原型系统改进为一个商用产品。8.1致谢我们要感谢 OK Labs 工程团队对我们的支持,尤其是 Carl van Schaik,他为我们分

36、享了他对于 ARM 架构渊博的知识。NICTA 是由澳大利亚政府作为宽带部门,通讯和数济部门的代表和澳大利亚研究理事会通过卓越项目技术中心建立的。8.2参考文献1Adair RJ, Bayles RU, Comeau LW, Creasey RJ. A Virtual Machine System for the 360/40J. IBM Corp. Cambridge Scientific Center 320-2007, May 1966. VMware Inc. VMware ServerEB/OL. /products/server/.AMD I

37、nc. AMD-VEB/DK./assets/NPT-WP-1%201-final-TM.pdfJY Hwang. Xen on ARM: System Virtualization Using Xen Hypervisor for ARM-Based Secure Mobile Phones. CCNC2008234 京航空航天大学毕业设计(论文)第19页 56Christoffer Dall & Jason Nieh. KVM for ARM . OLS2010Prashant Varanasi and Gernot Heiser. Hardware-Supported Virtualization onARM.Apsys20117K. Adams and O. Agesen. A comparison of software and hardware techniques for x86 virtualization. In 12th ASPLOS, San Jose, California, USA, Oct 2006.ARM Architecture Group. Virtualization Extensions Architecture Specification, 2010. URLhttp:/infocenter.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论