ARM服务器支持虚拟化吗?ARM是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器,因其体积小、低功耗、低成本、高性能的特点,拥有众多合作伙伴。而虚拟化通常是在软件中创建一个环境来模拟物理环境,虚拟化不需要硬件支持,可以完全在软件中执行。那么ARM服务器支持虚拟化吗?
 

ARM服务器支持虚拟化吗?

 

ARM架构和虚拟化

标准的ARM架构是不符合可虚拟化模型的,有很多敏感指令在非特权模式下执行却不会产生trap。比如CPS指令,这条指令的作用是改变处理器状态,当这条指令在用户态执行时不会产生trap,甚至没有任何效果,可以认为是简单的跳过。即使所有的敏感指令都会产生trap,在ARM架构上用上述的trap-and-emulate技术也是很困难的。比如,arm-v7架构不支持页表访问的虚拟化,那么就需要影子页表,每次访问guest pa都需要trap,同样地,中断控制器也需要被仿真,当中断很频繁的时候(timer tick),这种仿真的开销也是非常大的,为了克服这种种弊端,ARM推出了virtualization extension,也就是一个虚拟化扩展。
 

ARM的virtualization extension

ARM的virtualization extension让ARM的虚拟化模型得以呈现,但它需要处理器支持TrustZone extension。TrustZone将处理器的执行状态分为两个世界:secure world:用于运行可信软件;non-secure world:用于运行不可信软件。这里的两个世界和处理器模式是重叠的,软件可以在任何模式、任何世界上运行。secure world有自己独有的内存和外设,这部分内容只有运行在secure world的软件可以访问,运行在non-secure world的软件是不可以访问的。接下来还要提到一个新的处理器模式,monitor mode,它运行在secure world,被用于做双系统(secure and non-secure world)之间的切换。
我们可以基于TrustZone去做虚拟化,因为它能够隔离内存、中断并且确保non-secure world的特权软件也不可能访问或者修改运行在secure world的软件的配置信息。
 

GIC也支持virtualization extension

GIC(generic interrupt controller)是ARM里的中断控制器,它也支持virtualization extension。GIC可以分为两部分,分别是Distributor(分发器)和CPU interface(中断接口)。分发器负责接收中断,设置这个中断是否enable和它的优先级,之后把它送到对应的cpu interface上去。中断接口负责屏蔽低优先级中断(相对于正在处理的中断的优先级),让高优先级的中断抢占cpu。当外设产生中断的时候,这个中断首先发送给Distributor,Distributor将这个中断发送给对应的cpu interface。当cpu interface接受到这个中断的时候,它会检查这个中断是否enable,如果enable再去比较这个中断的优先级和当前正在处理的中断的优先级,进而决定处理器是否立即处理这个中断。

ARM服务器支持虚拟化吗?这么看来,通过一些扩展程序,ARM也是可以支持虚拟化的。

小编送福利时间,CCNA、CCNP、CCIE课程免费试听名额~~立即抢占: