摘要:内存虚拟化作为虚拟化技术的核心组成部分, 直接影响虚拟机的整体性能. 目前, 主流的内存虚拟化方法在两维地址翻译开销与页表同步开销之间面临权衡. 传统的影子页表模型通过一套由软件维护的页表, 实现了与原生(native)环境相当的地址翻译性能. 然而, 由于影子页表的同步依赖于基于写保护的机制, 频繁的虚拟机退出(VM-exit)会严重影响系统性能. 相对而言, 嵌套页表模型依靠硬件辅助虚拟化, 允许虚拟机的客户页表直接加载到内存管理单元中, 从而避免了页表同步的开销. 然而, 这种方法的两维页表遍历却显著降低了地址翻译效率. 基于RISC-V架构下的特权级模型和虚拟化硬件特性, 提出了一种懒惰影子页表模型LSP (lazy shadow paging), 在保留影子页表的地址翻译高效性的同时降低了页表同步开销. 懒惰影子页表模型深入分析了客户机对页表页的访问模式, 将页表同步与转址旁路缓存(translation lookaside buffer, TLB)刷新操作绑定以降低虚拟机退出的数量. 然后, 利用RISC-V架构中对TLB的细粒度刷新且可拦截的特性, 无效化需同步的影子页表项, 将页表同步的软件开销推迟到了首次访问该页面的时刻. 此外, 懒惰影子页表模型利用RISC-V架构中全新的特权级模型, 设计了TLB拦截的快速路径, 进一步减少了虚拟机退出带来的软件开销. 实验结果表明, 在基础RISC-V架构下, 懒惰影子页表相对于传统影子页表在微基准测试中降低了最多50%的虚拟机退出数量. 在支持RISC-V的虚拟化扩展架构下, 懒惰影子页表对SPEC2006基准测试中的典型应用相较于传统影子页表降低了最多25%的虚拟机退出数量, 相较于嵌套页表每次TLB缺失降低了12次访存.