ARM CPU虚拟化的关键技术点:
- CPU支持多个特权等级,这样才可以比较好的对于敏感特权指令进行在高优先级受控, ARM支持EL0~EL3,其中虚拟化(Hypervisor运行在EL2,OS Kernel运行在EL1,用户态运行在EL0)
- VM执行敏感指令/操作受控 - 在更高级别的特权级受控执行,避免对别的VM产生影响
- 每个VM的每个vCPU运行在物理CPU上时进行context switch,即将之前运行的(host或者其他vCPU)各种相关寄存器保存到内存中,需要运行的vCPU必须的寄存器恢复到硬件寄存器中,然后运行 (和Linux的task switch类似的思想,只不过需要保存恢复的寄存器更多一些)
总之,虚拟化的关键就在于拆分硬件资源并进行资源及操作的隔离。资源的拆分可以是直接拆分,也可以是分时复用。如果每个VM运行时所需要的资源完全可以在自己的特权级专用,而不需要被高特权级的Hypervisor进行运行时管理(没有Trap)性能是最高的
VM发生Tracp到Hypervisor的场景:
1). 敏感指令执行
HCR_EL2, Hypervisor Configuration Register
Provides configuration controls for virtualization, including defining whether various operations are
trapped to EL2.