ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

内存虚拟化:EPT

内存虚拟化:EPT 内存虚拟化EPT概述EPTExtended Page Tables扩展页表是Intel VT-x技术中一项关键的硬件辅助内存虚拟化特性。它通过硬件直接支持客户机物理地址GPA到宿主机物理地址HPA 的转换从而解决了传统软件内存虚拟化效率低下的问题。简单来说EPT在CPU的内存管理单元MMU 中为虚拟机内存访问增加了一层硬件地址转换使得虚拟机内的内存访问可以完全由硬件自动完成无需VMM虚拟机监视器介入。EPT原理地址转换过程当TLB未命中时CPU从客户机CR3寄存器存的是GPA开始每往下查一级客户机页表都立即原地触发一次完整的EPT四级遍历。第1层读PML4ECPU拿着客户机CR3里的GPA基址 GVA的bit39-47偏移算出PML4E所在的GPA。为了去物理内存读出这个PML4E的内容CPU立即执行一次完整的EPT四级遍历GPA→HPA拿到HPA后读出PML4E。这个PML4E里存的是下一级PDPT的GPA基址。第2层读PDPTECPU拿着上一步读出的GPA基址 GVA的bit30-38偏移算出PDPTE所在的GPA。为了读出它CPU再次立即执行一次完整的EPT四级遍历拿到HPA后读出PDPTE。这个PDPTE里存的是下一级PD的GPA基址。第3层读PDECPU拿着上一步读出的GPA基址 GVA的bit21-29偏移算出PDE所在的GPA。为了读出它CPU又一次立即执行一次完整的EPT四级遍历拿到HPA后读出PDE。这个PDE里存的是下一级PT的GPA基址。第4层读PTECPU拿着上一步读出的GPA基址 GVA的bit12-20偏移算出PTE所在的GPA。为了读出它CPU再一次立即执行一次完整的EPT四级遍历拿到HPA后读出PTE。这个PTE里存的是最终目标数据页的GPA基址。第5次最终读写数据CPU拿着上一步读出的GPA基址 GVA的bit0-11页内偏移算出最终数据的GPA。为了真正读写这个数据CPU最后一次立即执行一次完整的EPT四级遍历拿到最终的HPA然后对物理内存完成读/写操作。硬件支持为了支持EPTVMCS的VM-Execution控制域中提供了Enable EPT字段如果在VM-Entry的时候该位被置上EPT功能就会被启用。EPT页表的基址是由VMCS的VM-Execution控制域中的Extended page table pointer字段指定的它包含了EPT页表的宿主机物理地址。EPT页表是一个多级页表每级页表的表项格式是相同的
返回列表