二级地址转换

编辑
本词条由“匿名用户” 建档。
二级地址转换(SLAT),也称为嵌套分页,是一种硬件辅助虚拟化技术,可以避免与软件管理的影子页表相关的开销。 自推出第三代Opteron处理器(代号Barcelona)以来,AMD一直通过快速虚拟化索引(RVI)技术支持二级地址转换。英特尔的二级地址转换实现,称为扩展页表(EPT),是在某些Corei7、Corei5和Corei3处理器中的Nehalem微架构中引入的。 ARM的虚...

二级地址转换

编辑

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

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

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

概述

现代处理器使用物理内存和虚拟内存的概念;正在运行的进程使用虚拟地址,当指令请求访问内存时,处理器使用页表或转换后备缓冲区(TLB)将虚拟地址转换为物理地址。当运行一个虚拟系统时,它为客户系统分配了宿主系统的虚拟内存,作为客户系统的物理内存,同样的地址转换过程也在客户系统内部进行。这增加了内存访问的成本,因为地址转换需要执行两次——一次在来宾系统内部(使用软件模拟的影子页表)),并且一旦进入主机系统(使用硬件页表)。

为了使这种转换更有效,处理器供应商实施了通常称为SLAT的技术。通过将每个访客物理地址视为主机虚拟地址,用于遍历非虚拟化页表(现在是访客页表)的硬件的轻微扩展可以遍历主机页表。对于多级页表,主机页表可以在概念上被视为嵌套在访客页表中。硬件页表遍历器可以像对待页表添加级别一样对待额外的转换层。

使用SLAT和多级页表,当来宾物理地址与来宾虚拟地址的大小相同并且使用相同大小的页面时,查找转换所需的级别数会加倍。这增加了从主机和来宾页表的中间级别缓存值的重要性。在主机页表中使用大页来减少级别数也很有帮助(例如,在x86-64中,使用2MB页面会删除页表中的一个级别)。由于内存通常以粗粒度分配给虚拟机,因此使用大页面进行客户物理转换是一种明显的优化,减少了查找深度和主机页表所需的内存。

二级地址转换的实现

编辑

快速虚拟化索引

快速虚拟化索引(RVI),在其开发过程中称为嵌套页表(NPT),是AMD第二代用于处理器内存管理单元(MMU)的硬件辅助虚拟化技术。

一个VMware的研究报告发现,RVI提供高达性能42点%的升幅,与纯软件(影子页表)执行比较。RedHat进行的测试表明,OLTP基准测试的性能翻了一番。

RVI是在第三代Opteron处理器中引入的,代号为Barcelona。

扩展页表

扩展页表(EPT)是用于内存管理单元(MMU)的英特尔第二代x86虚拟化技术。英特尔的Corei3、Corei5、Corei7和Corei9CPU等都支持EPT。它也存在于一些较新的VIACPU中。

需要EPT才能在实模式下直接启动逻辑处理器,这一特性在英特尔的行话中称为“不受限制的访客”,并在Westmere微体系结构中引入。

根据VMware的评估论文:“EPT为MMU密集型基准测试提供高达48%的性能提升,为MMU密集型微基准测试提供高达600%的性能提升”,尽管它实际上可能导致代码在某些角落运行得比软件实现慢案例。

阶段2页表

在实现异常级别2(EL2)的ARM处理器中存在阶段2页表支持。

二级地址转换

扩展

编辑

基于模式的执行控制

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

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

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/126752/

(4)
词条目录
  1. 二级地址转换
  2. 概述
  3. 二级地址转换的实现
  4. 快速虚拟化索引
  5. 扩展页表
  6. 阶段2页表
  7. 扩展
  8. 基于模式的执行控制

轻触这里

关闭目录

目录