ToB企服应用市场:ToB评测及商务社交产业平台

标题: 虚拟化中的虚拟地址与物理地址的映射——EPT机制 [打印本页]

作者: 熊熊出没    时间: 2024-4-24 01:18
标题: 虚拟化中的虚拟地址与物理地址的映射——EPT机制
虚拟化中的虚拟地址与物理地址的映射——EPT机制

​        当 secondary processor-based VM-execution control 字段 “enable EPT” 为 1 时,启用 EPT ( Extended Page Table,扩展页表)机制
​        开启 EPT 机制后 VMM 需要建立 EPT 页表结构,通过在 EPTP ( Extende Page Table Pointer ) 中提供 EPT 页表结构的指针值,为每个 VM 准备不同的 EPT 页表结构或在同一个 EPT 页表结构中准备不同的页表项
1. GPA (guest-physical address) 64位宽

​        guest 软件使用的物理地址,不是真正的物理地址。启用 EPT 机制后,VM 有自己独立的 guest-physical address 空间,每个 VM 之间的 GPA 空间互不干扰。
​        启用分页时,guest 软件的线性地址首先转换为 GPA,最后 GPA 必须通过 EPT 转换为最终的 HPA
1)有效的GPA值

​          当前 VMX 架构实现了最高48位有效的GPA值 (bits47:0)。x86/x64 体系下最高可实现 52 位的物理地址。实际 GPA 值宽度与 MAXPHYADDR 值相关
2)GPA的产生

2. HPA (host-physical address)

​        物理平台上的地址。未启用 EPT 机制时,guest 软件的物理地址是 HPA。启用 EPT 机制时,guest 软件的物理地址是 GPA,而 host 软件的物理地址是 HPA。VMM 软件使用的是 HPA
与这两种物理地址相对应的页转换表结构如下:
3. guest paging-structure

​        存在于 guest 端,是 x86/x64 体系开启分页机制下的产物,用来将线性地址转换为物理地址。但在 guest 中,线性地址通过 guest paging-structure 转换为 guest-physical address,而不是真正的平台物理地址
1)guest 的分页模式

x64(CRO.PG=1 时):
​        guest 的线性地址根据上面的分页模式转换 guest-physical address;当 guest 使用 PAE 分页模式,并且启用 EPT 机制时,在 VM-entry 时会加载 4 个 PDPTE 字段
2)引发 GPA 转换 HPA

3)guest分页机制下GPA的转换

​        分页机制下,完成整个 guest 访问内存操作会引发一系列的 GPA 转换 HPA 过程。假设 guest 使用 IA-32e 分页模式 (IA32_EFER.LMA = 1,CR4.PAE = 1,CRO.PG =1 ),并且使用 4K 页面
​        完成这个内存访问操作一共需要进行 5 次 GPA 到 HPA 的转换(N=MAXPHYADDR)

​        在这一系列的 GPA 转换过程中,任何一个环节都可能会产生 EPT violation 或者 EPT misconfiguration 而导致 VM-exit 发生;也可能由于 guest paging structure 而引发 guest 产生 #PF 异常,从而使得 guest 处理 #PF 异常处理例程或者由于 #PF 异常直接或者间接导致 VM-exit
总结:
4. EPT paging-structure

​        这个页表结构只能由 VMM 进行设置,将 GPA 转换为 HPA。guest 软件不知道它的存在,即 guest 软件不能设置 EPT paging-structure
​        查询 IA32_VMX_EPT_VPID_CAP 寄存器的 bit 6 来确定是否支持 4 级页表结构,为 1 时指示 EPT 支持 4 级页表结构。每个 EPT 页表大小为 4K,每个 EPT 页表项为 64 位宽

EPT支持三种页面:
5. EPTP(Extended Page Table Pointer 扩展页表指针)

​        提供 EPT 页表结构顶层的 PML4T 物理地址,即 EPT4TA (EPTP[N-1:12]),这个物理地址属于 HPA

6. 4K页面下的EPT页表结构

4K 页面下,GPA 分为:
GPA 转换到 HPA 需要经过 4 级 EPT 页表结构 (walk 次数为 4)

GPA->HPA 的查表转换过程:

7. 参考


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4