KVM 让 Linux 内核提供虚拟 CPU、内存映射和中断注入,用户态 VMM 负责设备模型与虚拟机生命周期。RISC-V H 扩展提供 VS/VU 模式和两阶段地址翻译。性能的关键不是“虚拟机里有没有执行指令”,而是它在 Guest、内核和用户态设备模型之间来回切换了多少次。
两阶段地址翻译分别解决什么
Guest 的 VS-stage 页表把应用虚拟地址翻译为 Guest 物理地址;H 扩展的 G-stage 再把它翻译为 Host 物理地址。第一阶段由 Guest 管理,第二阶段由 Host 控制,因此 Host 可以限制 Guest 能访问的内存范围。两层任一处缺失映射都可能产生 trap,排查内存问题时要先确定卡在哪一层。
减少退出比微调单条指令更重要
每次设备模拟、特权操作或页表相关 trap 都可能让 Guest 退出到 Host。频繁 VM exit 会放大用户态 VMM 调度和锁竞争成本。性能优化通常先检查是否有高频 MMIO、无效中断、过多定时器或不合理的设备模型,再考虑更底层的指令级优化。虚拟化隔离也不是自动安全保证,VMM、内核和设备后端仍属于攻击面。