@FadeTrack
2016-05-31T14:06:34.000000Z
字数 2349
阅读 2161
虚拟化
EPT is used when the “enable EPT” VM-execution control is 1.
通过 Vm-entry 事件注入的方式 翻译非根模式下的 客户机物理地址。
这个翻译过程通过设置 EPT paging structures 确定。
这个结构类似于,处理器在 IA-32 模式下翻译线性地址。
在 28.2.2 给出了 EPT paging structures 细节。
如果 CR0.PG = 1, 线性地址翻译的方式是,通过页表结构去引用CR3寄存器。 While the “enable EPT” VM-execution control is 1 ,这个被称为 客户端分页结构(guest paging structures)。
如果 CR0.PG = 0,此时没有 guest paging structures。
When the “enable EPT” VM-execution control is 1, the identity of guest-physical addresses depends on the value
of CR0.PG:
当为1时,特性取决于 CR0.PG:
如果 CR0.PG = 1,那么翻译一个线性地址到物理地址需要多次通过 客户端物理地址使用EPT来翻译。假设,举个例子,CR4.PAE = CR4.PSE = 0。 翻译一个 32 位线性地址的过程如下:
- 线性地址的 Bits 31:22 用于选择一个 客户分页目录 的入口,这个入口位于 客户端物理地址(CR3内)。这个被称为客户机的 分页目录入口(PDE)的地址 是 客户机物理地址,这个物理地址是通过 EPT 确定的,也就是说 这个地址也是 EPT 翻译出来的。
- 线性地址通过 Bits 21:12 选择页表入口,这个入口位于客户的 PDE 内部,也是一个客户机物理地址.同样也要 EPT 进一步翻译.
- Bits 11:0 是 线性的 offset 在页框架位于客户机物理地址的客户机 PTE。客户机物理地址 由 这个 通过 EPT 被翻译的 offset 决定,而这个 EPT 又是通过 原始的线性地址转换的物理地址决定的。
除了翻译一个 GPA(客户机物理地址) 到 HPA(真实的线性的物理地址),EPT指定了软件被允许的访问地址的权限。
尝试访问一个不允许的权限地址时,会触发 EPT-violations 并 Vm-Exit. 看 28.2.3.
一个逻辑处理器使用 EPT 去 翻译 GPA 仅仅当这些地址被用于内存访问的时候。以下是这个原则的说明:
if the requested address is not in the TLB, it is a miss, and the translation proceeds by looking up the page table in a process called a page walk
EPT 翻译机制仅仅使用 GPA 的 47:0位.它使用的 page-walk(页步?)长为 4。意味着翻译一个 GPA 最多 (能访问)4(个) EPT paging-stucture 入口.
这 48 位被区分是通过逻辑处理器 遍历 EPT pagin structures:
因为 一个 EPT PML4E 是标记使用 GPA 的 bits 47:39, 它控制访问一个 512-GByte 区域,这个区域位于 GPA. 表 28-1 是 EPT PML4E 的格式.