二级地址转换

二级地址转换(SLAT),也称为嵌套分页,是一种硬件辅助虚拟化技术,可以避免与软件管理的影子页表相关的开销。

自推出第三代Opteron处理器(代号Barcelona)以来,AMD一直通过快速虚拟化索引(RVI)技术支持二级地址转换。英特尔的二级地址转换实现,称为扩展页表(EPT),是在某些Corei7、Corei5和Corei3处理器中的Nehalem微架构中引入的。

ARM的虚拟化扩展支持二级地址转换,即由Stage-2MMU提供的Stage-2页表。来宾使用Stage-1MMU。支持在ARMv7ve体系结构中作为可选添加,并且在ARMv8(32位和64位)体系结构中也受支持。

二级地址转换的实现

扩展

基于模式的执行控制

基于模式的执行控制(MBE)是x86SLAT实现的扩展,首先在IntelKabyLake和AMDZen2CPU中可用。扩展将扩展页表(来宾页表)中的执行位扩展为2位-一位用于用户执行,一位用于主管执行。

引入MBE是为了通过内核模式代码完整性强制来加速访客用户模式未签名代码的执行。在这种配置下,未签名的代码页可以在usermode下标记为execute,但必须标记为no-execute在内核模式下。为了通过确保所有来宾内核模式可执行代码即使在来宾内核受到损害时也都经过签名来保持完整性,来宾内核无权修改任何内存页面的执行位。执行位的修改或包含执行位的访客页表的切换被委托给更高特权的实体,在这种情况下是主机管理程序。在没有MBE的情况下,从未签名的用户模式执行到签名的内核模式执行的每个入口都必须伴随VM出口到管理程序以执行到内核模式页表的切换。在反向操作中,从签名内核模式退出到未签名用户模式必须伴随VM退出才能执行另一个页表切换。VM退出会显着影响代码执行性能。使用MBE,可以在未签名的用户模式代码和已签名的内核模式代码之间共享相同的页表,根据执行上下文具有两组执行权限。当执行上下文在未签名用户模式和已签名内核模式之间切换时,不再需要VM退出。

0

点评

点赞

相关文章