- UID
- 1029342
- 性别
- 男
|
===========ARM虚拟化调研报告=================================================
调研报告,总的来说调研结果如下:
1) 当前ARM虚拟化背景:
a) 商用背景:虚拟化很早就有解决方案了,其中著名的是OKL4 Microvisor by OKL4, MVP by VMware,Red Bend Software, Trango,VLX for ARM by VirtualLogic, INTEGRITY secure virtualization by Green Hills Software。 除了Green Hill外,其他都是半虚拟化,但都不开源。。 只有OKL4可以看到性能测试数据。
b) 研究背景:xen on arm是开源解决方案的先驱,性能很差但是至少有类似解决方案了;KVM for ARM 写的是技术报告但是也算紧随其后;NICTA和OKL的几个哥们重新做了一个微内核支持ARM全虚拟化拓展的hypervisor,只能跑在模拟器上。
c) 新思路:2011年SOSP论文中有人在Android上实现了操作系统虚拟化(相比于系统虚拟化,OS虚拟化运行一个内核下运行多个独立的用户空间,而不是之前的一个,chroot就是一种常见的OS虚拟化)。实现了多个Android相互切换,性能非常理想,而且非常适合Android虚拟化需求,是一种非常好的虚拟化思路。
2) ARM虚拟化架构及发展:ARM是虚拟化不友好的结构,主要体现在如下几个方面:
i. 具有非特权的敏感指令
ii. 特权级不够,保护地址比较麻烦
iii. 有些没ASID的TLB造成的TLB flush比较多~
另外ARM虚拟化硬件支持发展大概分为两个部分:
iv. ARM TRUEZONE提供了简要的硬件支持,最主要的是具有了两个模式secure和non-secure模式,应该修改了非特权的敏感指令bug,Green Hill公司在其上实现了全虚拟化
v. ARM在2010年又提出了硬件拓展虚拟化,在non-secure之中上又增加了一个hyp模式。具体内容详见第三篇分析
3) ARM虚拟化趋势:类似微内核的独立hypervisor在兴起(个人感觉主要还是OKL在支持,商用方面占据绝对优势)。Xen on ARM 和xen on KVM会随着ARM硬件虚拟化提出实现做改变。OS虚拟化的发展也是一种非常好的方向,目前OS虚拟化的商业化进程感觉会远超一般的虚拟化发展。
4) 测试方法:lmbench居然成了默认方式,模拟器上大概估算的也就是各个操作的延时~
=============ARM虚拟化相关论文===============================================
1. Xen on ARM: System Virtualization using Xen Hypervisor for ARM-based Secure Mobile Phones
内容提要:
1) 主题讲述如何针对arm架构做虚拟化
2) 指出了ARM虚拟化的三个难点:拥有非特权的敏感指令;只有一个操作模式;TLB没有ASID导致切换时的高刷新率
3) ARM在此之前的现状:1.某人硕士论文提到arm虚拟化但是没说全,提到了分离内核和用户页表但是没实现。2. L4内核采用单一地址机制,内核与进程线程地址空间不重复,避免了刷新。其FCSE机制动态划分地址空间给进程,但每个进程限制在32M。适用性不强,但这个方向值得考虑。3.Trango 和 VirtualLogic提供了ARM虚拟化的产品但是闭源。
4) ARM的CPU虚拟化:为保护kernel地址,将用户模式分为两种模式,xen控制guest OS在这两种模式切换;异常处理主要是异常如何通过VMM转到guest内核以及;敏感指令就是简单的用hypercal替代。
5) ARM的内存虚拟化:为保证guest地址安全性,必须让xen捕获器页表写,这样可以保护xen VMM的地址与guest OS和guest 进程地址区分。通过开发ARM的Domain机制保护guestOS地址。还有一些cache flush优化等内容
6) 实验结果:LMbench 测试物理机与虚拟机的效率;虚拟机增加效果如何;常用操作效果如何。
2. KVM for ARM
内容提要:
1) 主题思想:本文主要讲述如何在KVM上支持ARM,采用轻量级的半虚拟化方式避免ARM体系架构中的不可虚拟化的部分。
2) KVM现状:目前支持x86,POWERPC;实验性支持ia64,s390。
3) ARM最大挑战在于架构有虚拟化缺陷:具有非特权的敏感指令
4) KVM for ARM使用轻量级半虚拟化修改非特权的敏感指令使之陷入模拟。使用的轻量级半虚拟化是不依赖于操作系统的源码的。自动修改操作系统中的非敏感的特权指令而不是像普通半虚拟化那样显示修改操作系统中源码。
5) 相关工作:x86-VMware-Xen-Hardware Support。商务ARM虚拟化系统:VLX for ARM(Virtual Logic);OKL4 Microvisor by OK Labs; MVP by VMware; INTERGRITY secure virtualization by Green Hills-------这些都没开源。Xen on ARM使用普通的半虚拟化受限而且繁琐。相比之下KVM for ARM使用的半虚拟化改动较小。
6) CPU 虚拟化:详细介绍了ARM架构中的一系列非特权的敏感指令。由于敏感指令不存在与标准的c编译器,因此只会存在于汇编文件和内联汇编,因此可以使用一个脚本来批量修改内核中的敏感指令。通过使用陷入指令替代敏感指令方式实现。
7) 异常处理:略
8) 内存虚拟化:ARM体系架构有地址转换经过MMU的,有地址转换不经过MMU的,由于不经过MMU的一般性能不行,故虚拟化针对的一般是地址转换经过MMU的。内存虚拟化使用的是影子页表而不是xen中的半虚拟化页表,实现细节略。内存共享和状态切换略。内存保护使用的还是ARM中的Domain机制。
9) 实现状态:实现了最基本的系统,性能很差,工作集中于正确性。目前正在增加ARMv6 v7支持。ARMv6的ASID支持可以减少TLB invalidation从而提高性能。ARM true zone接近硬件虚拟化解决方案,但是没实现类似EPT之类的东西。
3. Hardware Support Virtualization on ARM
内容提要:
1) 主题思想:设计和实现了第一个使用ARM在2010年提出的硬件拓展的VMM,并且在模拟的硬件上测量了其性能。
2) 背景:虚拟化蔓延到嵌入式,ARM结构不可虚拟化,因此需要用二进制翻译或半虚拟化。二进制翻译需要居多资源,故商用和实验室使用较多,而半虚拟化则需要逐个修改操作系统。2010年ARM发布了硬件虚拟化规范,因此本文提供了第一个VMM用于运行全虚拟化的操作系统。因为没有硬件支持,因此实验结果只能通过模拟获得。
3) 相关工作:商用的ARM解决方案提供的厂商有:OKL, VMware, Red Bend Software,这些都是使用半虚拟化。Green Hills Software 使用True Zone特性提供了能跑单个未修改操作系统的VMM。三星公司移植了Xen,但是性能很差:只有原先的一半。商用的OKL4系统,性能比原先低一个数量级。 NOVA(干啥的?)。。 Adams和Agesen比较了不含MMU支持的硬件虚拟化和二级制翻译,但是只有又有报告研究了MMU支持可以很大程度上体高性能。ARM的虚拟化规范中提到了MMU虚拟化的支持。
4) ARM虚拟化硬件支持:
a) 操作模式:增加了一个non-secure模式,并在non-secure模式中增加了一个hyp模式,形成non-secure下user,kernel,hyp三种操作模式。
b) TLB中增加了一个VMID以减少切换时的TLB flush
c) 诸多异常可配置是否陷入kernel态或直接陷入hyp态
d) Hyp模式下新增内容避免load and decode敏感指令
e) 双地址翻译:有两个TLB.
f) 虚拟中断注入模式,基本没新内容。
g) 与x86不同之处在于:新多了hyp模式;需要VMM保存guest现场而不是类似x86中的自动保存;ARM当VMM允许中断直接注入guest时,guest可以清中断等操作而不陷入,x86则不行;ARM同样新增了特性避免解析敏感指令,而CISC的消耗很大。
h) 于x86相同之处在于:双地址映射,VMID。
5) VMM设计
a) 实现一个微内核VMM: 不使用动态VMM,即可以动态创建和销毁VMM,同时VMM不使用虚拟内存。与OKL类似不同于NOVA等微内核VMM,并没有把hypervisor分为kernel和用户程序两个部分
b) 虚拟机交互:略
c) 模拟平台:ARM Fast Model
d) 实现细节:模式切换;指令模拟;设备pass through;设备分享;略
e) 局限性:虚拟机调度缺乏数据;没有多核支持;不支持动态VMM;
6) 性能:由于使用模拟器,因此无法获得真实数据,只能估算下各个操作的消耗的时钟周期。
7) 感悟:硬件拓展简化了hypervisor设计。
===========支持ARM的独特hypervisor设计====================================
4. The OKL4 Microvisor: Convergence Point of Microkernels and Hypervisors
内容提要:
1) 主题思想:微内核和hypervisor有很多相似之处,OKL4的设计可以很容易看到这些地方。
2) 背景:微内核的争议持久不断,第一代微内核因为性能缺陷得不到认可但是有人发现第二代微内核作为hypervisor可以取得很好的效果。商用微内核包括:支持高可靠性的QNX;高安全性的Green Hills Integrity;高性能的OKL4 micro kernel。为了摒弃人们因为15年轻微内核研究造成的误解,为了证明微内核和hypervisor有相同可取之处,因此OKL4开发了Microvisor。
3) 微内核主要是为了提供一个更简单的特权软件层,而hypervisor为了复制当前硬件提供给更多虚拟机执行,两者目的并不冲突。微内核与hypervisor在指令,内存上区别有,但并不是不可调和,但是在I/O上,hypervisor发展越来越向微内核靠近。
4) 实现方式
a) 执行抽象是一个虚拟机运行多个VCPU,各个vcpu可以调度
b) 内存抽象是一个虚拟的MMU,用于guest映射虚拟地址到物理地址
c) i/o抽象一堆内存映射的设备寄存器和虚拟中断
d) 通讯抽象是虚拟中断和频道(管道?)
5) 性能分析:
a) 能比较的不多,xen on arm 是一个,同样用lmbench测试了数据,相比于xen on arm有优势
b) 文中提到了目前在嵌入式系统上没有标准化的hypervisor benchmark,常用的是lmbench分数比较虚拟机和主机
c) Netperf测网络效果很好,折扣甚少
6) 相关工作
a) NOVA:同样是简化hypervisor设计,但是需要硬件架构支持科虚拟化。
b) NOVA的规模要大于OKL4,目的并不是精简硬件。 |
|