AMD-V 支持的增强特征 AMD-V提供不少增强的特征为 VMM 的实现提供优化,KVM 利用这些特征能提高系统的性能或解决特定环境的客操作系统的问题。 VMCB状态缓存及Clean 控制位 比较新的 AMD-V 处理器中存在 VMCB 状态缓存硬件, 用来在 VMEXIT 至 VMRUN 操作之间缓存虚拟机的寄存器的状态。 VMRUN 在加载虚拟机的寄存器状态时,可以选择从 VMCB 中加载,或者从状态缓存中加载,当然从状态缓存中加载寄存器要快很多。 VMCB.CONTROL的 “CleanBits” 字段,可被 VMM 用来控制寄存器的状态加载方式,当相关的 Clean Bit 为 1 时,从状态缓存加载该寄存器的状态,否则从 VMCB 加载该寄存器的状态。一般来说 VMM 软件在虚拟机 VMEXIT 到 VMRUN 之间如果修改了 VMCB 中某字段的值,则需要将 VMCB.CONTROL.CLEAN_BITS 字段相关位清除,让 VMRUN 直接从 VMCB 加载该寄存器。并不是所有的寄存器在 VMCB 状态缓存中都有位置的,具体可参考 AMD 的系统编程手册。另外,一个 CPU 的硬件中可存在多个虚拟机的 VMCB 状态缓存,VMRUN 可根据 VMCB 的物理地址来识别特定的状态缓存。
|