VMX 操作的架构包括两个支持地址转换的功能:虚拟处理器标识符 (VPID) 和扩展页表机制 (EPT)。 VPID 是一种管理线性地址转换的机制。 EPT 定义了一个地址转换层,用于增强线性地址的转换。第 29.1 节详细介绍了 VPID 的架构。第 29.3 节提供了 EPT 的详细信息。第 29.4 节解释了逻辑处理器如何缓存来自分页结构的信息、如何使用该缓存信息以及软件如何管理该缓存信息。VMX 操作的原始架构需要 VMX 转换来刷新 TLB 和分页结构缓存。这确保了为旧线性地址空间缓存的translation在转换后不会被使用。虚拟处理器标识符 (VPID) 向 VMX 操作引入了一种功能,逻辑处理器可以通过该功能缓存多个线性地址空间的信息。当使用 VPID 时,VMX 转换可能会保留缓存的信息,并且逻辑处理器会切换到不同的线性地址空间。第 29.4 节详细介绍了逻辑处理器管理为多个地址空间缓存的信息的机制。逻辑处理器可以使用 16 位 VPID 来标记某些缓存信息。本节指定如何在任何时间点确定当前 VPID:VPID 和 PCID(请参阅第 4.10.1 节)可以同时使用。完成此操作后,处理器将缓存的信息与 VPID 和 PCID 相关联。仅当当前 VPID 和 PCID 均与与缓存信息相关联的信息匹配时,才使用此类信息。虚拟机管理程序管理的线性地址转换 ( HLAT ) 是一项改变 VMX non-root operation中线性地址转换方式的功能。translation不是使用普通的分页,而是使用一种称为 HLAT 分页的修改过程。仅当“启用 HLAT”VM 执行控制为 1 时才使用 HLAT 分页。HLAT 分页仅用于分页模式 4 级分页和 5 级分页。由于HLAT寻呼是普通寻呼的修改,因此该功能的详细信息在4.5节中给出,其中描述了4级寻呼和5级寻呼的操作。扩展页表机制(EPT)是一个可用于支持物理内存虚拟化的功能。当使用 EPT 时,通常被视为物理地址(并用于访问内存)的某些地址将被视为客户物理地址。通过遍历一组 EPT 分页结构来转换guest 物理地址,以生成用于访问内存的物理地址。当“启用 EPT”VM 执行控制为 1.1 时使用 EPT。它转换 VMX non-root operation中使用的客户物理地址以及事件注入的 VM entries使用的地址。从客户物理地址到物理地址的转换由一组EPT分页结构决定。 EPT 分页结构与处理器处于 IA-32e 模式时用于转换线性地址的结构类似。第 29.3.2 节给出了 EPT 分页结构的详细信息。如果 CR0.PG = 1,则通过控制寄存器 CR3.2 引用的分页结构来转换线性地址。当“启用 EPT”VM 执行控制为 1 时,这些称为guest 分页结构。如果 CR0.PG = 0,则没有guest 分页结构。当“启用 EPT”VM 执行控制为 1 时,客户物理地址的标识取决于 CR0.PG 的值:如果 CR0.PG = 1,则线性地址到物理地址的转换需要使用 EPT 对客户物理地址进行多次转换。例如,假设 CR4.PAE = CR4.PSE = 0。32 位线性地址的转换操作如下:除了将客户物理地址转换为物理地址之外,EPT 还指定软件在访问该地址时所允许的权限。尝试不允许的访问称为 EPT 违规并导致 VM Exits。参见第 29.3.3 节。仅当这些地址用于访问内存时,处理器才使用 EPT 来转换客户物理地址。这一原则意味着以下内容:EPT 转换机制仅使用每个客户物理地址的第 47:0 位。1 它使用的页遍历长度为 4,这意味着最多访问 4 个 EPT 分页结构条目来转换客户物理地址。这 48 位由逻辑处理器划分以遍历 EPT 分页结构:4 KB 自然对齐的 EPT PML4 表位于扩展页表指针(EPTP)的位 51:12 中指定的物理地址,这是一个 VM 执行控制字段(参见第 25.6.11 节中的表 25-9) )。 EPT PML4 表包含 512 个 64 位条目 (EPT PML4E)。使用定义如下的物理地址来选择 EPT PML4E:位 63:52 均为 0。位 51:12 来自 EPTP。位 11:3 是客户物理地址的位 47:39位 2:0 均为 0。由于 EPT PML4E 是使用客户物理地址的第 47:39 位来标识的,因此它控制对客户物理地址空间的 512 GB 区域的访问。表 29-1 给出了 EPT PML4E 的格式。4 KB 自然对齐的 EPT 页目录指针表位于 EPT PML4E 的位 51:12 中指定的物理地址。 EPT页目录指针表包括512个64位条目(EPT PDPTE)。使用定义如下的物理地址来选择 EPT PDPTE:由于 EPT PDPTE 使用guest 物理地址的位 47:30 进行标识,因此它控制对guest 物理地址空间的 1 GB 区域的访问。 EPT PDPTE 的使用取决于该条目中第 7 位的值: 笔记:N 是处理器支持的物理地址宽度。软件可以通过在 EAX 中执行 CPUID 和 80000008H 来确定处理器的物理地址宽度。物理地址宽度在 EAX 的位 7:0 中返回。表 29-2 给出了映射 1 GB 页的 EPT PDPTE 格式。 笔记: 笔记:N 是逻辑处理器支持的物理地址宽度EPT 页目录包含 512 个 64 位条目 (PDE)。使用定义如下的物理地址来选择 EPT PDE:由于 EPT PDE 是使用客户物理地址的第 47:21 位来标识的,因此它控制对客户物理地址空间的 2 MB 区域的访问。 EPT PDE 的使用取决于该条目中第 7 位的值:如果 EPT PDE 的位 7 为 1,则 EPT PDE 映射 2 MB 页。最终物理地址计算如下:表 29-4 给出了映射 2 MB 页的 EPT PDE 格式。如果 EPT PDE 的位 7 为 0,则 4 KB 自然对齐的 EPT 页表位于 EPT PDE 的位 51:12 中指定的物理地址。表 29-5 给出了引用 EPT 页表的 EPT PDE 的格式。EPT 页表包含 512 个 64 位条目 (PTE)。使用如下定义的物理地址来选择 EPT PTE: 笔记:由于 EPT PTE 是使用客户物理地址的位 47:12 来标识的,因此每个 EPT PTE 映射一个 4 KB 页面。最终物理地址计算如下:位 63:52 均为 0。位 51:12 来自 EPT PTE。位 11:0 来自原始客户物理地址。EPT PTE 的格式在表 29-6 中给出。如果位 2:0 中的任何一个为 1,则存在 EPT 分页结构条目;否则,该条目不存在。处理器忽略位 62:3,并且使用该条目既不引用另一个 EPT 分页结构条目也不产生物理地址。使用客户物理地址的引用,其转换遇到不存在的 EPT 分页结构,会导致 EPT 违规(请参阅第 29.3.3.2 节)。 (如果“EPT-violation #VE”VM 执行控制为 1,则仅当位 63 为 0 时,EPT 违规才可转换为虚拟化异常;请参
...(已截断)
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-281456.htm
[翻译]Intel手册-VT部分 第29章 VMX SUPPORT FOR ADDRESS TRANSLATION
241 浏览
4 回复
感谢分享
感谢分享
THX
是刘易么