【转】ARM虚拟化调研

Direct quoted from http://blog.csdn.net/wy16223864/article/details/8259146

 

===========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,目的并不是精简硬件。

 

================特殊的虚拟化项目==============================================

5.       NOVA: AMicrohypervisor-Based Secure Virtualization Architecture

内容提要:

1)  主题思想:当前hypervisor大而且易于被攻击,为了克服这个缺点,本文设计了一个能提高整个系统安全性的hypervisor,可以用来运行多个未修改的操作系统,而且要比当前的虚拟化系统小一个数量级。

2)  论文贡献:极大的减少了特权级下代码;减少了虚拟机可行计算部分一个数量级;虚拟机通讯开销可以减少,同时NOVA取得了全虚拟化很好的性能。

3)  背景:虚拟机追述到19世纪60年代中期,在沉寂了一段时间后,90年代末期以Disco和VMware商业上的成功为代表,虚拟机开始了复兴阶段。随着x86的全虚拟化硬件支持的提出,新的虚拟机环境开始浮现。虚拟机又分为全虚拟化和半虚拟化。虚拟机对安全性影响有正面的和负面的,主要是根据实现方式。

4)  TCB相比:实验正面NOVA的TCB要远远小于其他的虚拟机系统。

5)  NOVA架构:

a)         两大原则:其一是功能分解为:微hypervisor;root划分管理器;多虚拟机管理器;设备驱动和其他系统服务。其二是所有组件中执行最小权限原则。

b)         具体架构:见图2

c)         攻击模型:略

d)         Microhypervisor:提供了保护域,执行上下文,调度上下文,通讯门,信号系统。

e)         内存管理:尽量使用EPT等,否则使用vTLB算法

f)          Root 划分管理器:负责初始化分配资源

g)         VMM:指令模拟;设备模拟;设备通讯;BIOS模拟;多核模拟

6)  性能测试:

a)         内核编译:分别测试含VPID, 不含VPID等方式。。。

b)         硬盘性能:硬盘顺序读不同块大小。额外开销增加在三方面:设备虚拟,中断虚拟,数据传输。

c)         网络性能:Netperf测试

d)         User和Kernel模式转换:设计了一系列实验用于测量转换时间。

e)         虚拟机退出频率:略

=============一种新的嵌入式虚拟化思想==========================================

6.       Cells: A Virtual Mobile Smartphone Architecture

内容提要:

1)  提出了一种名为Cells的可以安全独立的运行多个系统的嵌入式系统。主要思想使用单一的linux内核和多个文件系统,linux内核提供虚拟的各个设备,多个文件系统之间可以切换。现实中比较类似chroot程序的应用,但是做的安全性和隔离线要比chroot好的多估计。

2)  背景:网上轻易的下载应用程序极易导致安全性问题,以及一些工作,娱乐等冲突问题。ARM虽然可以实现虚拟化但是需要类虚拟化

3)  CELL虚拟化架构:支持在一个操作系统上跑多个虚拟机的架构,操作系统又分前端和后端。后端不显示,前端可以直接访问所有的硬件,后端只能共享硬件当前端不需要独享硬件的时候。前端可以获得物理机速度。Cells可以为每个虚拟机使用VoIP 技术为不同的VP提供不同的phone number而不需要不同的SIM卡。

4)  Cell使用特点:支持多个操作系统切换,多个系统由外部生成好拷贝至手机中。对设备分别有no access;shared access;exclusive access三种权限控制模式。

5)  Cell 设计特点:利用device namespace区分不同的虚拟机内核和用户程序。虚拟化很奇特。其实主要是文件系统之前切换而不是内核切换,因此涉及不到cpu虚拟化内存虚拟化等标准的虚拟化解决方案。因此其主要内容是外设和资源的共享。

6)  Cell 测试结果:测试标准:CPU性能:linpack;文件I/O:Quandrant Advanced Edition v1.1.1;3D图形:Neocore by Qualcomm;网络浏览:SunSpider v0.9.1 JavaScript benchmark;网络性能:wget下包;能耗:播放音乐,每10分钟计算电池剩余量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值