CN112363960A - 一种新型基于影子页表机制的内存虚拟化方法与系统 - Google Patents
一种新型基于影子页表机制的内存虚拟化方法与系统 Download PDFInfo
- Publication number
- CN112363960A CN112363960A CN202011085016.9A CN202011085016A CN112363960A CN 112363960 A CN112363960 A CN 112363960A CN 202011085016 A CN202011085016 A CN 202011085016A CN 112363960 A CN112363960 A CN 112363960A
- Authority
- CN
- China
- Prior art keywords
- page table
- shadow page
- shadow
- tlb
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种新型基于影子页表机制的内存虚拟化方法与系统。该方法的步骤包括:捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,以相同的粒度使相应的影子页表项无效;当CPU访问TLB发生TLB未命中时,内存管理单元查询影子页表,在发现相应的影子页表项无效后,进行缺页处理来修正影子页表;利用缺页处理后的影子页表完成客户机虚拟地址到宿主机物理地址的地址转换。本发明利用TLB与影子页表同时刷新的方式来同步影子页表与客户机进程页表,从根本上消除了传统影子页表的写保护同步开销大的弊端,同时相较于硬件辅助虚拟化技术,无需引入额外的页表查询开销,显著提高了内存虚拟化效率。
Description
技术领域
本发明涉及服务器内存虚拟化优化领域,尤其涉及一种基于影子页表机制的内存虚拟化方法与系统。
背景技术
虚拟化是支持云服务的关键技术。减少虚拟化开销以接近本机性能一直是虚拟化工作的优化目标。内存虚拟化是系统虚拟化技术的主要组成部分,其效率会严重影响虚拟机的性能。在虚拟化环境中,每个虚拟机都有自己的虚拟硬件(例如CPU,内存等)即拥有单独且完整的执行环境。虚拟化引入了新的系统软件层,称为虚拟机监控程序(或虚拟机监视器),它控制客户机操作系对物理资源的访问。虚拟机监控程序(如KVM)介于宿主机和客户机之间,客户机运行在虚拟机监控程序之上。客户机用户感知到自己运行在原生环境(宿主机环境),虚拟机监控程序需要“欺骗”客户机以达到这种目标,这种“欺骗”叫做虚拟化。
在计算机系统中,程序操作的是虚拟地址,所以CPU访问内存需要首先进行将虚拟地址转化成物理地址,这称之为地址转换。在地址转换中,CPU首先访问旁路转换缓存(translation lookaside buffer,TLB)。TLB是存储容量较小的硬件设备,直接保存从虚拟地址到物理地址的映射关系。因为TLB是硬件设备,所以CPU访问TLB效率很高,大约2~5个CPU周期。如果TLB中不存在需要的映射即产生TLB缺失,那么CPU开始访问进程页表进一步查询映射关系。进程页表是在内存中的保存虚实地址转换关系的页面。进程页表一般有多级,比如64位机器的进程页表有4级,这意味着每一次页表访问至少需要访存4次。一次内存访问的效率较低,一般需要数百个CPU周期。如果页表中也不存在所需的映射关系,系统就会进入页表缺页处理函数。该函数负责建立虚实地址映射关系并填充进程页表。
操作系统具有两个典型的内存管理原则。首先是内存从物理地址零开始,另一个是内存是连续的或至少以大粒度连续的。为了满足上述原则,虚拟机监控程序引入了一个称为客户机物理地址空间的新地址空间。因此,内存虚拟化主要解决了两个问题。一种是维护从客户机物理地址到宿主机物理地址的映射。另一种是拦截客户机对客户机物理地址的访问并将其转换为宿主机物理地址。在虚拟化环境中,地址转换包括两层,即从客户机虚拟地址到客户机物理地址的转换和从客户机物理地址到宿主机物理地址的转换。
现有的内存虚拟化技术有两种不同的方案:以传统影子页表为代表的软件内存虚拟化和以英特尔拓展页表为代表的硬件辅助虚拟化。传统影子页表机制利用影子页表直接存储客户机虚拟地址到宿主机物理地址的映射。对于虚拟机进程而言,实际加载到物理内存管理单元中的是进程影子页表而不是进程页表。通过这种方式,虚拟机进程只需要一层地址转换就可完成从客户机虚拟地址到宿主机物理地址的地址转换。由此,虚拟机进程页表查询的成本和原生环境相同。然而为了保持客户机进程页表和影子页表之间的一致性,传统影子页表采用写保护的机制进行同步。所谓写保护,就是将客户机进程页表页设置为只读,进程页表的任何修改都将导致写错误,虚拟机监控程序可以拦截客户机进程页表的更新,然后进行同步。传统影子页表机制的缺点就是因为写保护同步带来了大量额外的缺页处理开销。
传统影子页表的实现有两种类型即异步模式和同步模式。在异步模式下,客户机操作系统尝试修改页表的操作将首先导致一次虚拟机退出解锁写保护,然后在CPU访问被修改的映射时,触发另一次虚拟机退出来修正影子页表。一次虚拟机退出意味着CPU进行上下文切换,由虚拟机上下文切换至宿主机上下文。这种操作的周期很长,开销巨大。特别是在客户机进程页表建立过程中,异步模式的开销非常大。在同步模式下,由于写保护,客户机操作系统尝试修改页表仍会导致虚拟机退出。在影子页表缺页处理程序中,虚拟机监控程序会首先模拟客户机操作系统的页表修改操作,然后同步影子页表。相较于异步模式,同步模式仅发生一次虚拟机退出。实际上,只有在最近一段时间内CPU会访问影子页面表条目时,才有必要通过虚拟机退出纠正影子页面表的映射。例如,如果客户机操作系统销毁了访客页面表的一部分,则对应的映射无效,并且CPU将不再访问它们。在这种情况下,系统仅需要置无效相应的影子页表条目,而不必使用开销巨大的虚拟机退出。
为了解决这一弊端,开发者研究出硬件辅助虚拟化技术。简单来讲,就算利用硬件辅助手段加速两维地址转换(客户机虚拟地址到客户机物理地址再到宿主机物理地址)。客户机进程页表被加载到硬件内存管理单元,用于完成客户机虚拟地址到客户机物理地址的转换。然后,虚拟机需要访问扩展页表将客户机物理地址转化成宿主机物理地址。也就是说,每一级的进程页表的正常查询都需要访问扩展页表,因此拓展页表模型增加了页表查询的开销。在4级页表中,一次页表查询最坏需要高达24次的内存访问,这种开销也是十分巨大的。因此,尽管硬件辅助虚拟化技术消除了传统影子页表模型在缺页处理中的巨大开销,但是也引入了新的额外开销即页表查询开销。
影子页表地址转换流程:
在虚拟化环境中,CPU访问TLB以获取从客户机虚拟地址到宿主机物理地址的映射。如果TLB未命中,则内存管理单元加载当前进程的影子页表基址以查询影子页表。如果影子页表命中,则系统会将映射填充到TLB。如果未命中,则系统开始影子页表缺页处理,这将导致一次虚拟机退出。CPU陷入虚拟机监控程序进行缺页处理。系统首先查询客户机进程页表,以尝试获取从客户机虚拟地址到客户机物理地址的映射。如果进程页面表中的映射不存在,发生一次虚拟机进入。这意味着CPU进行上下文切换,由宿主机上下文切换至虚拟机上下文。虚拟机系统执行缺页处理函数完善客户机进程页表。然后,CPU再度执行导致TLB未命中的指令,并再次陷入影子页表缺页处理。客户机物理地址和宿主机虚拟地址都是连续的,具有直接映射关系。在获得客户机虚拟地址到物理地址的映射之后,系统查询宿主机页表将宿主机虚拟地址转化成宿主机物理地址。最后,系统建立了影子页表结构,并填充客户机虚拟地址到宿主机物理地址的映射。至此,影子页表缺页处理已完成。最后,CPU再次执行产生TLB未命中的指令,进行影子页表查询,填充TLB,地址转换完成。
发明内容
本发明的目的是从根本上消除了传统影子页表的写保护同步开销大的弊端,同时相较于硬件辅助虚拟化技术,无需引入额外的页表查询开销,显著提高了内存虚拟化效率。具体来说,本发明利用TLB与影子页表同时刷新的方式来同步影子页表与客户机进程页表,消除了写保护同步的弊端。
本发明采用的技术方案如下:
一种新型基于影子页表机制的内存虚拟化方法,包括以下步骤:
捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,以相同的粒度使相应的影子页表项无效;
当CPU访问TLB发生TLB未命中时,内存管理单元查询影子页表,在发现相应的影子页表项无效后,进行缺页处理来修正影子页表;
利用缺页处理后的影子页表完成客户机虚拟地址到宿主机物理地址的地址转换。
进一步地,采用影子页表刷新器从TLB刷新接口中捕获客户机操作系统发出的TLB刷新指令;所述影子页表刷新器捕获到来自客户机操作系统对TLB项的刷新指令,解析该指令中的待刷新的粒度、待刷新项的虚拟处理器号、进程编号、虚拟地址,然后以相同的粒度刷新相同的虚拟处理器号、进程编号、虚拟地址的影子页表项。
进一步地,虚拟机监控程序直接复制客户机进程页表的权限位来填充影子页表,以维护影子页表中权限位的正确性。
进一步地,所述缺页处理包括三个步骤:查询客户机进程页表,查询宿主机页表,以及构建填充影子页表。
进一步地,使用地址转换快表存储从客户机物理页帧号到宿主机物理页帧号的映射;在缺页处理的查询客户机进程页表的步骤中,虚拟机监控程序通过查询客户进程机页表获得客户机物理页帧号,以客户机物理页帧号为索引直接访问地址转换快表以查询宿主机物理页帧号。
进一步地,所述的以客户机物理页帧号为索引直接访问地址转换快表以查询宿主机物理页帧号,如果命中,则直接进入构建填充影子页表的步骤,否则进入查询宿主机页表的步骤,并将查询到的映射填充到地址转换快表。
进一步地,采用懒惰同步模式进行影子页表的同步,当客户机操作系统修改进程页表后,仅通过捕获TLB的刷新来置无效影子页表项,不产生虚拟机退出,直到CPU访问无效影子页表项时,再触发虚拟机退出进行同步。
进一步地,采用影子页表项预取的方式减少缺页中断次数,即在每次缺页处理中预填充多个映射关系到影子页表。
一种采用上述方法的基于影子页表机制的内存虚拟化系统,其包括:
TLB刷新捕获模块,用于从TLB刷新接口捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,以相同的粒度使相应的影子页表项无效;
影子页表缺页处理模块,用于当发生TLB未命中时,通过内存管理单元查询影子页表,在发现相应的影子页表项无效后,进行缺页处理来修正影子页表,以便利用修正的影子页表完成客户机虚拟地址到宿主机物理地址的地址转换。
一种虚拟机,所述虚拟机采用本发明的上述方法进行内存虚拟化。
本发明相较于传统影子页表的两种实现有着显著优势和创新性。从本质上讲,本发明是采用了新的同步机制来改善影子页表机制的性能。同步客户机进程页表和影子页表是主要的性能开销。在虚拟化性能上的不同设计可能会造成很大差异。与传统影子页表异步模式相比,本发明不需要额外的虚拟机退出来解锁写保护,这也加快了客户机操作系统修改进程页表的过程。与同步模式相比,本发明继承了异步模式的延迟同步,从而避免了不必要的虚拟机退出来修正影子页表。同时,本发明还避免了模拟客户机进程页表修改指令的执行开销。
附图说明
图1是访存特征提取原理图。
图2是新型影子页表模型和英特尔拓展页表模型地址转换开销分布对比图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。
本发明所述的“TLB刷新”是指操作系统修改自身页表时,为了保证系统的正确性,需要刷新相应的存在于TLB中的旧的映射。TLB是最接近CPU的存放虚实地址转换关系的部件。在地址转换中,CPU首先访问TLB获取映射关系,如果TLB不命中,则会访问页表填充TLB。
本发明所述的“影子页表”是指虚拟化环境下用于保存客户机虚拟地址到宿主机物理地址映射关系的页表,它在地址转换中被直接装载到内存管理单元进行访问,这是用来提高虚拟化环境下地址转换效率的重要方法。
本发明所述的“影子页表同步”是指为了保证系统的正确性,当客户机操作系统修改了进程页表的映射关系,虚拟化系统必须同步影子页表相应映射关系。否则,系统访问到旧的映射关系可能产生错误。影子页表需要和客户机进程页表保持一致从而保障CPU正确访问物理地址。影子页表被虚拟机监控程序管理,在虚拟机运行过程中,虚拟机监控程序需要捕获虚拟机操作系统对进程页表的修改操作来维护影子页表,这就是影子页表的同步。然而,进程页表的修改如果不施加外部机制的条件下,难以被底层的虚拟机监控程序所感知。本发明利用操作系统修改进程页表必须刷新对应的TLB条目的特点,捕获TLB刷新的操作,进而置位(使无效)影子页表。同时,本发明采用了懒惰同步模式,将影子页表同步的条目修正工作推迟到CPU真正访问该条目的时刻,进一步提升系统的整体性能。与懒惰模式相对应的称为饥饿同步模式,在该模式下,一旦客户机操作系统修改客户机进程页表,就立即触发影子页表的同步,也就是通过虚拟机退出来修正影子页表。实际上,在程序运行过程中,存在大量无需立即同步的影子页表,这是因为这部分页表CPU不再访问,而虚拟机退出操作开销巨大。典型的例子如进程销毁中的进程页表回收。本发明采用懒惰同步模式。当客户机操作系统修改进程页表后,仅通过捕获TLB的刷新来置无效影子页表项,不产生虚拟机退出。直到CPU访问该无效影子页表项时,再触发虚拟机退出进行必要的同步。
1.新型影子页表同步原理:
如图1所示,影子页表刷新器从TLB刷新接口中捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,然后以相同的粒度使相应的影子页表条目无效。然后当发生TLB未命中时,内存管理单元将查询影子页表,并发现相应的页表项无效,系统陷入缺页处理来修正影子页表。操作系统的页表中包含大量页表项,每一个页表项保存着一个物理页面的页面号和权限位。其中,页面号用于定位物理页面在内存中的位置,权限位用于确定系统的访问权限。在虚拟化环境中,我们仍需要在影子页表中维护权限位的正确性,这被称为语义同步。对于语义同步,本发明不需要处理传统影子页表由于写保护带来的复杂结果。就像TLB填充一样,虚拟机监控程序仅需要直接复制该映射的客户机进程页表的权限位填充影子页表即可维护语义正确性。
其中,影子页表刷新器是在内嵌在TLB刷新接口中的功能模块,用于捕获客户机操作系统的TLB刷新操作,并实现对相应影子页表的刷新工作。具体来讲,影子页表刷新器捕获到来自客户机操作系统对TLB项的刷新指令,解析该指令(待刷新的粒度,待刷新项的虚拟处理器号,进程编号,虚拟地址等),然后以相同的粒度刷新相同虚拟处理器号,进程号,虚拟地址的影子页表项。
2.新型影子页表缺页处理优化方法:
基于影子页表的内存虚拟化模型的缺点在于缺页处理需要产生虚拟机退出/进入,这种操作的开销巨大。尽管本发明从根本上消除了传统影子页表的写保护同步开销,但是影子页表缺页处理仍然有一定的开销。为了进一步提升虚拟化性能,本发明采用了两种优化方法:地址转换快表和影子页表项预取。在缺页处理过程中,虚拟机监控程序需要正确构建影子页表的结构并填充正确的映射关系。总体流程分为三步:查询客户机进程页表,查询宿主机页表和构建填充影子页表。
首先,本发明使用地址转换快表来存储从客户机物理页帧号到宿主机物理页帧号的映射。这一优化加速查询宿主机页表的效率。该表的映射范围受限于虚拟机的物理内存大小,因为虚拟机的物理内存大小有限,所以快表可以使用一个一维数组实现。就查询效率而言,查询一次映射仅需要一次地址访问,而64位机器中,访问宿主机页表至少需要4次访存。在缺页处理中,当虚拟机监控程序查询客户机页表之后获取了客户机物理页帧号,就以该号为索引直接访问地址转换快表查询宿主机物理页帧号。如果命中,则直接进入第三步构建填充影子页表,否则就会查询宿主机页表查询,并将查询到的映射填充到地址转换快表。这一优化提高了缺页中断处理的效率。
其次,本发明使用影子页表项预取方法来减少缺页中断次数。所谓预取,就是指猜测性地填充多个映射到影子页表中。根据程序局部性理论,程序在最近一段时间内会访问相同的以及临近的内存页面。根据这一理论,本发明在每次缺页处理中,预填充多个映射关系到影子页表,从而达到减少潜在的缺页中断的次数的目标。根据访存局部性原理,程序在最近一段时间内会频繁访问当前虚拟地址临近范围内的其他地址。因此,预填充的多个映射关系根据当前缺页的虚拟地址(虚页号)来确定。比如当前缺页的虚页号为10,那么预取6,7,8,9,11,12,13,14。
3.实验测评:
现有的两种内存虚拟化方案(传统影子页表和英特尔拓展页表)各有利弊。虚拟化环境下的地址转换可以大致分为三部分:TLB访问,页表查询以及缺页处理。TLB访问主要受程序局部性影响,不受虚拟化模型的影响。传统影子页表的优势在于页表查询效率高,基本等同于原生环境,但缺页处理因为写保护机制的弊端所以开销较大;英特尔拓展页表机制中CPU查询客户机进程页表,每一级的查询都需要访问扩展页表获取宿主机物理地址,因此页表查询效率较低。但是,缺页处理不需要发生虚拟机退出/进入,效率较高。根据已有实验结果表明,英特尔拓展页表模型的效率整体高于传统影子页表10%左右,因此,本发明通过功能性模拟器的实验方法对比英特尔拓展页表模型和本发明的地址转换效率。
本发明构建了一个功能性模拟器来模拟使用两种模型的虚拟化环境下的地址转换过程。该模拟器构建通用架构下的存储体系结构和地址转换部件。这包括:三级CPU缓存,内存,内存管理单元,两级TLB,页表(影子页表/拓展页表)等。模拟器的基本工作原理是:通过输入一个程序的访存地址流,再现该程序运行过程中的地址转换过程,通过统计每个部件的访问次数和访问延迟来计算地址转换的开销。首先,本发明利用Intel-PIN工具收集了SPEC CPU2006测试集(29个)每个测试程序的虚地址访存序列,并结合Linux pagemap机制获取实地址访存序列。然后,分别在新型影子页表模模型和英特尔拓展页表模型下,模拟所有测试程序的地址转换过程。最后,统计TLB访问,页表查询以及缺页处理三种开销。
图2展示了两种模型的地址转换开销对比。由图可知,每个测试程序上,本发明的新模型的地址转换开销均低于英特尔拓展页表模型的地址转换开销。大多数程序显示良好的内存访问局部性。TLB访问实际上占地址转换时间的最大比例。每条指令的平均CPU周期数接近一级TLB的访问延迟。结果说明,对于良好的本地化程序,两种之间的性能差距可以忽略不计。但是,局部性较差的内存密集型基准测试(例如mcf)会导致大量的TLB未命中,这会导致拓展页表模型因为大量页面查询而开销巨大。由于新型影子页表模型继承了传统影子页表模型的优点,因此它的页面查询开销要小得多。此外,对于诸如gcc,milc和libquantum的程序,传统影子页表模型由于写保护同步导致巨量额外的开销,因此性能比拓展页表模型差。然而,模拟器结果表明,新型影子页表模型的缺页处理开销可以达到和英特尔拓展页表模型开销相当的水准。
基于同一发明构思,本发明的另一实施例提供一种采用上述方法的基于影子页表机制的内存虚拟化系统,其包括:
TLB刷新捕获模块,用于从TLB刷新接口捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,以相同的粒度使相应的影子页表项无效;
影子页表缺页处理模块,用于当发生TLB未命中时,通过内存管理单元查询影子页表,在发现相应的影子页表项无效后,进行缺页处理来修正影子页表,以便利用修正的影子页表完成客户机虚拟地址到宿主机物理地址的地址转换。
基于同一发明构思,本发明的另一实施例提供一种虚拟机,所述虚拟机采用本发明的上述方法进行内存虚拟化。
以上公开的本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例和附图所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
Claims (10)
1.一种新型基于影子页表机制的内存虚拟化方法,其特征在于,包括以下步骤:
捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,以相同的粒度使相应的影子页表项无效;
当CPU访问TLB发生TLB未命中时,内存管理单元查询影子页表,在发现相应的影子页表项无效后,进行缺页处理来修正影子页表;
利用缺页处理后的影子页表完成客户机虚拟地址到宿主机物理地址的地址转换。
2.根据权利要求1所述的方法,其特征在于,采用影子页表刷新器从TLB刷新接口中捕获客户机操作系统发出的TLB刷新指令;所述影子页表刷新器捕获到来自客户机操作系统对TLB项的刷新指令,解析该指令中的待刷新的粒度、待刷新项的虚拟处理器号、进程编号、虚拟地址,然后以相同的粒度刷新相同的虚拟处理器号、进程编号、虚拟地址的影子页表项。
3.根据权利要求1所述的方法,其特征在于,虚拟机监控程序直接复制客户机进程页表的权限位来填充影子页表,以维护影子页表中权限位的正确性。
4.根据权利要求1所述的方法,其特征在于,所述缺页处理包括三个步骤:查询客户机进程页表,查询宿主机页表,以及构建填充影子页表。
5.根据权利要求4所述的方法,其特征在于,使用地址转换快表存储从客户机物理页帧号到宿主机物理页帧号的映射;在缺页处理的查询客户机进程页表的步骤中,虚拟机监控程序通过查询客户进程机页表获得客户机物理页帧号,以客户机物理页帧号为索引直接访问地址转换快表以查询宿主机物理页帧号。
6.根据权利要求5所述的方法,其特征在于,所述的以客户机物理页帧号为索引直接访问地址转换快表以查询宿主机物理页帧号,如果命中,则直接进入构建填充影子页表的步骤,否则进入查询宿主机页表的步骤,并将查询到的映射填充到地址转换快表。
7.根据权利要求1所述的方法,其特征在于,采用懒惰同步模式进行影子页表的同步,当客户机操作系统修改进程页表后,仅通过捕获TLB的刷新来置无效影子页表项,不产生虚拟机退出,直到CPU访问无效影子页表项时,再触发虚拟机退出进行同步。
8.根据权利要求1所述的方法,其特征在于,采用影子页表项预取的方式减少缺页中断次数,即在每次缺页处理中预填充多个映射关系到影子页表。
9.一种采用权利要求1~8中任一权利要求所述方法的基于影子页表机制的内存虚拟化系统,其特征在于,包括:
TLB刷新捕获模块,用于从TLB刷新接口捕获客户机操作系统发出的TLB刷新指令,并解码TLB刷新指令,以相同的粒度使相应的影子页表项无效;
影子页表缺页处理模块,用于当发生TLB未命中时,通过内存管理单元查询影子页表,在发现相应的影子页表项无效后,进行缺页处理来修正影子页表,以便利用修正的影子页表完成客户机虚拟地址到宿主机物理地址的地址转换。
10.一种虚拟机,其特征在于,所述虚拟机采用权利要求1~8中任一权利要求所述的方法进行内存虚拟化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011085016.9A CN112363960B (zh) | 2020-10-12 | 2020-10-12 | 一种新型基于影子页表机制的内存虚拟化方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011085016.9A CN112363960B (zh) | 2020-10-12 | 2020-10-12 | 一种新型基于影子页表机制的内存虚拟化方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112363960A true CN112363960A (zh) | 2021-02-12 |
CN112363960B CN112363960B (zh) | 2022-07-22 |
Family
ID=74507644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011085016.9A Active CN112363960B (zh) | 2020-10-12 | 2020-10-12 | 一种新型基于影子页表机制的内存虚拟化方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363960B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297104A (zh) * | 2021-06-16 | 2021-08-24 | 无锡江南计算技术研究所 | 一种面向消息传递机制的地址转换装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259734A1 (en) * | 2005-05-13 | 2006-11-16 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
CN103955438A (zh) * | 2014-05-21 | 2014-07-30 | 南京大学 | 基于硬件辅助虚拟化技术的进程内存保护方法 |
CN106250329A (zh) * | 2016-08-23 | 2016-12-21 | 成都卡莱博尔信息技术股份有限公司 | 一种基于虚拟传输后备缓冲器的对客户页表写保护的方法 |
-
2020
- 2020-10-12 CN CN202011085016.9A patent/CN112363960B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259734A1 (en) * | 2005-05-13 | 2006-11-16 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
CN103955438A (zh) * | 2014-05-21 | 2014-07-30 | 南京大学 | 基于硬件辅助虚拟化技术的进程内存保护方法 |
CN106250329A (zh) * | 2016-08-23 | 2016-12-21 | 成都卡莱博尔信息技术股份有限公司 | 一种基于虚拟传输后备缓冲器的对客户页表写保护的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297104A (zh) * | 2021-06-16 | 2021-08-24 | 无锡江南计算技术研究所 | 一种面向消息传递机制的地址转换装置及方法 |
CN113297104B (zh) * | 2021-06-16 | 2022-11-15 | 无锡江南计算技术研究所 | 一种面向消息传递机制的地址转换装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112363960B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11074191B2 (en) | Linear to physical address translation with support for page attributes | |
US9928180B2 (en) | Synchronizing a translation lookaside buffer with page tables | |
Alam et al. | Do-it-yourself virtual memory translation | |
KR100928353B1 (ko) | 가상 머신 환경에서의 주소 변환 지원 방법 및 장치 | |
JP5214670B2 (ja) | マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置 | |
US7363463B2 (en) | Method and system for caching address translations from multiple address spaces in virtual machines | |
Barr et al. | SpecTLB: A mechanism for speculative address translation | |
Basu et al. | Reducing memory reference energy with opportunistic virtual caching | |
US9104594B2 (en) | Operational efficiency of virtual TLBs | |
US8296547B2 (en) | Loading entries into a TLB in hardware via indirect TLB entries | |
CN112363824B (zh) | 一种申威架构下的内存虚拟化方法与系统 | |
JP2020525905A (ja) | アドレス変換データの無効化 | |
CN111367831A (zh) | 翻译页表的深度预取方法、部件、微处理器及计算机设备 | |
Pham et al. | Using tlb speculation to overcome page splintering in virtual machines | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
CN112363960B (zh) | 一种新型基于影子页表机制的内存虚拟化方法与系统 | |
Wang et al. | Memento: architectural support for ephemeral memory management in serverless environments | |
Bhattacharjee | Breaking the address translation wall by accelerating memory replays | |
Sha et al. | Accelerating address translation for virtualization by leveraging hardware mode | |
Hong et al. | Optimizing control transfer and memory virtualization in full system emulators | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
Maas et al. | Grail quest: A new proposal for hardware-assisted garbage collection | |
CN115061955A (zh) | 处理器、电子设备、地址翻译方法以及缓存页表项方法 | |
Sha et al. | Swift shadow paging (SSP): No write-protection but following TLB flushing | |
Guo et al. | Fast TLB simulation for RISC-V systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |