CN110196757A - 虚拟机的tlb填写方法、装置及存储介质 - Google Patents

虚拟机的tlb填写方法、装置及存储介质 Download PDF

Info

Publication number
CN110196757A
CN110196757A CN201910473311.2A CN201910473311A CN110196757A CN 110196757 A CN110196757 A CN 110196757A CN 201910473311 A CN201910473311 A CN 201910473311A CN 110196757 A CN110196757 A CN 110196757A
Authority
CN
China
Prior art keywords
target
address
virtual address
mark
page table
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
Application number
CN201910473311.2A
Other languages
English (en)
Other versions
CN110196757B (zh
Inventor
王俊儒
毛碧波
高翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201910473311.2A priority Critical patent/CN110196757B/zh
Publication of CN110196757A publication Critical patent/CN110196757A/zh
Application granted granted Critical
Publication of CN110196757B publication Critical patent/CN110196757B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

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的目标虚拟地址,以及,访问目标虚拟地址的目标进程的标识;根据目标虚拟地址和目标进程的标识,从虚拟机的影子页表中获取与目标虚拟地址和目标进程的标识对应的目标机器地址,影子页表包括至少一个虚拟地址的至少一个映射关系,虚拟地址的每个映射关系用于指示虚拟地址对应的一种组合,组合包括:机器地址和进程的标识;将目标进程的标识、目标虚拟地址、目标机器地址之间的映射关系填入TLB中。本发明能够解决现有技术中如何在不支持页表基址寄存器的计算机架构上实现虚拟机的TLB填写的技术问题。

Description

虚拟机的TLB填写方法、装置及存储介质
技术领域
本发明涉及计算机技术,尤其涉及一种虚拟机的TLB填写方法、装置及存储介质。
背景技术
Xen是一个开放源代码虚拟机监视器。为了让物理存在的计算机(HOST)的内存可以为HOST上运行不同的虚拟机共享,Xen在虚拟地址到物理地址之间引入了一层中间地址,称为虚拟机的“物理”地址。这样,运行在虚拟机上的操作系统Guest OS可以看到虚拟机的“物理”地址,但看不到HOST的机器地址。
在Guest OS中维护有每个进程的GVA(虚拟地址)与GPA(虚拟机的“物理”地址)之间的映射关系的Guest页表,在HOST中维护有每个进程的GPA(虚拟机的“物理”地址)与HPA(HOST的机器地址)之间的映射关系的HOST页表。因此,MMU通过页表查找,获取虚拟地址对应的机器地址。为了提高数据访存效率、减少重复的页表查找,引入了转换检测缓冲区(Translation Lookaside Buffer,TLB)缓存最近使用过的页表项(即,GVA到HPA的映射关系)。这样,当需要访问内存中的一个数据,CPU可以基于访问这个数据的GVA,查询TLB。若在TLB中发现有该GVA(即TLB hit),则可以基于TLB中所保存的该GVA对应的HPA,访问内存以访存该数据。若在TLB中没有查找到该GVA(即TLB miss),则由MMU查找页表,获取该GVA对应的HPA。
为了提高TLB miss时TLB填写的效率,在x86的虚拟化环境中,在VMM(VirtualMachine Monitor,虚拟机监控器)中创建一个虚拟机页表的影子页表,用于维护GVA至HPA之间的映射关系。这样,当发生TLB miss时,页表基址寄存器已经不指向进程本身的GVA->GPA的页表,而是被替换为影子页表的pgd。由于影子页表自身即保存了GVA->HVA的关系,因此,可以在不退出虚拟机的情况下自身即可完成地址翻译,并完成TLB的填写。
上述影子页表,需要在支持页表基址寄存器寄存器的架构上使用,无法应用在不支持页表基址寄存器寄存器的计算机架构上。因此,如何在不支持页表基址寄存器的计算机架构上实现TLB填写,是一个亟待解决的问题。
发明内容
本发明提供一种虚拟机的TLB填写方法、装置及存储介质,用于解决现有技术中如何在不支持页表基址寄存器的计算机架构上实现虚拟机的TLB填写的技术问题。
本发明第一方面提供一种虚拟机的TLB填写方法,所述方法包括:
获取待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识;
根据所述目标虚拟地址和所述目标进程的标识,从虚拟机的影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,所述影子页表包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识;
将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中。
在一种可能的实施方式中,所述根据所述目标虚拟地址和所述目标进程的标识,从影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,包括:
根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址的至少一个目标映射关系,每个所述目标映射关系用于指示所述目标虚拟地址对应的一种目标组合;
根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程的标识对应的目标机器地址。
在一种可能的实施方式中,所述根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址对应的至少一个目标映射关系,包括:
使用所述目标虚拟地址的第一比特段,从所述影子页表中索引出至少一个所述目标映射关系。
在一种可能的实施方式中,所述组合中还包括:标签,所述标签为所述组合对应的虚拟地址的第二比特段;所述根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程和所述目标虚拟地址对应的目标机器地址,包括:
A:从第i个目标映射关系中获取目标组合的标签,所述i为大于或等于1的整数;
B:将所述目标虚拟地址的第二比特段,与所述目标组合的标签进行比较;若相同,则执行C,若不同,则执行E;
C:判断所述目标组合中的进程的标识与所述目标进程的标识是否相同;若相同,执行D,若不同,执行E;
D:将所述目标组合中的机器地址作为所述目标机器地址;
E、判断所述i是否小于所述至少一个目标映射关系的数量,若是,执行F;
F、将i加1,并返回执行A。
在一种可能的实施方式中,所述将所述目标进程、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中之前,所述方法包括:
确定所述目标机器地址有效。
在一种可能的实施方式中,所述方法还包括:
获取访存指令异常消息,所述访存指令异常消息用于指示所述目标虚拟地址访存异常,所述访存指令异常消息包括:所述目标进程的标识;
根据所述目标虚拟地址和所述目标进程的标识,获取所述目标虚拟地址和所述目标进程的标识对应的所述目标机器地址;
将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
在一种可能的实施方式中,所述影子页表中同一虚拟地址的映射关系的数量小于或等于预设阈值;
所述将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中,包括:
若所述影子页表中当前所包括的所述目标虚拟地址的映射关系的数量等于所述预设阈值,则将访存频率低的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;
将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
本发明第二方面提供一种虚拟机的TLB填写装置,所述装置包括:
第一获取模块,用于获取待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识;
第二获取模块,用于根据所述目标虚拟地址和所述目标进程的标识,从虚拟机的影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,所述影子页表包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识;
第一填写模块,用于将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中。
在一种可能的实施方式中,所述第二获取模块,具体用于根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址的至少一个目标映射关系;根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程的标识对应的目标机器地址;其中,每个所述目标映射关系用于指示所述目标虚拟地址对应的一种目标组合。
在一种可能的实施方式中,所述第二获取模块,具体用于使用所述目标虚拟地址的第一比特段,从所述影子页表中索引出至少一个所述目标映射关系。
在一种可能的实施方式中,所述组合中还包括:标签,所述标签为所述组合对应的虚拟地址的第二比特段;
所述第二获取模块,具体用于:
A:从第i个目标映射关系中获取目标组合的标签,所述i为大于或等于1的整数;
B:将所述目标虚拟地址的第二比特段,与所述目标组合的标签进行比较;若相同,则执行C,若不同,则执行E;
C:判断所述目标组合中的进程的标识与所述目标进程的标识是否相同;若相同,执行D,若不同,执行E;
D:将所述目标组合中的机器地址作为所述目标机器地址;
E、判断所述i是否小于所述至少一个目标映射关系的数量,若是,执行F;
F、将i加1,并返回执行A。
在一种可能的实施方式中,所述装置,还包括:
确定模块,用于在所述第一填写模块将所述目标进程、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中之前,确定所述目标机器地址有效。
在一种可能的实施方式中,所述装置还包括:
第三获取模块,用于获取访存指令异常消息,所述访存指令异常消息用于指示所述目标虚拟地址访存异常,所述访存指令异常消息包括:所述目标进程的标识;
第四获取模块,用于根据所述目标虚拟地址和所述目标进程的标识,获取所述目标虚拟地址和所述目标进程的标识对应的所述目标机器地址;
第二填入模块,用于将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
在一种可能的实施方式中,所述影子页表中同一虚拟地址的映射关系的数量小于或等于预设阈值;
所述第二填入模块,具体用于在所述影子页表中当前所包括的所述目标虚拟地址的映射关系的数量等于所述预设阈值时,将访存频率低的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
本发明第三方面提供一种电子设备,包括:存储器,用于存储程序指令;处理器,用于调用并执行所述存储器中的程序指令,执行第一方面任一项所述的方法。
本发明第四方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令被处理器执行时实现第一方面任一项所述的方法。
本发明提供的虚拟机的TLB填写方法、装置及存储介质,通过为虚拟机建立包括至少一个虚拟地址的至少一个映射关系的影子页表,由于该映射关系可以反映虚拟地址对应的机器地址和进程的标识,因此,通过该影子页表可以直接获取到目标虚拟地址和目标进程对应的目标机器地址,从而可以将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中,从而可以在TLB miss时快速填写TLB。该方法无需通过页表基址寄存器即可实现快速填写TLB,因此,该方法可以适用于任一计算机架构。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种虚拟机的TLB填写方法的流程示意图;
图2为本发明提供的另一种虚拟机的TLB填写方法的流程示意图;
图3为本发明提供的又一种虚拟机的TLB填写方法的流程示意图;
图4为本发明提供的又一种虚拟机的TLB填写方法的流程示意图;
图5为本发明提供的一种虚拟机的TLB填写装置的结构示意图;
图6为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于对本发明实施例的理解,下面先对本发明实施例所涉及的概念进行说明和介绍:
1、虚拟机(Virtual Machine,简称:VM):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。即,虚拟机是模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机。
2、HOST:指物理存在的计算机。HOST上运行的操作系统(Operating System,简称:OS),简称Host′s OS。通过在Host′s OS上安装虚拟机软件(例如VirtualBox、Vmware),可以建立VM。在一些实施例中,上述HOST也可以称为宿主机,VM可以称为客户机(Guest)。
3、Guest OS:指运行在VM上的操作系统。
示例性的,假定在一台安装了Windows NT的计算机上安装了Vmware,则安装Windows NT的这台计算机即为HOST,Windows NT即为Host′s OS。若由Vmware建立的虚拟机上运行有Linux操作系统,则Linux操作系统即为Guest OS。
4、虚拟地址:是虚拟机访问内存时所使用的地址。在本申请文件中,虚拟地址也可以称为客户机虚拟地址(Guest virtual address,简称:GVA)。
5、机器地址:是HOST上内存的实际地址,虚拟机的每个虚拟地址对应一个机器地址。在本申请文件中,机器地址也可以称为宿主机物理地址(Host physical address,简称:HPA)。
Xen是一个开放源代码虚拟机监视器。为了让HOST的内存可以为不同的虚拟机共享,Xen在虚拟地址到物理地址之间引入了一层中间地址,称为虚拟机的“物理”地址。这样,Guest OS可以看到虚拟机的“物理”地址,但看不到HOST的机器地址。因此,从Guest OS侧来看,Guest OS的物理地址是从0开始的、且“连续”的地址。但是,这层中间地址真正的在映射到HOST的机器地址上时,却可以是映射到不连续的机器地址上。通过这种方式,可以保证HOST的所有的物理内存可以被任意分配给不同的Guest OS。在本申请文件中,虚拟机的“物理”地址也可以称为客户机物理地址(Guest physical address,简称:GPA)。
内存管理单元(Memory Management Unit,简称:MMU)是HOST的中央处理器(Central Processing Unit,CPU)中的硬件电路,用于把虚拟地址映射为机器地址。具体地,在Guest OS中维护有每个进程的GVA(虚拟地址)与GPA(虚拟机的“物理”地址)之间的映射关系的Guest页表,在HOST中维护有每个进程的GPA(虚拟机的“物理”地址)与HPA(HOST的机器地址)之间的映射关系的HOST页表。因此,MMU通过页表查找,获取虚拟地址对应的机器地址。也就是说,对于Guest OS上的进程来说,访问一个具体的机器地址需要Guest页表和HOST页表转换,即GVA到GPA和GPA到HPA。其中,上述Guest页表和HOST页表均为多级页表。
为了提高数据访存效率、减少重复的页表查找,引入了转换检测缓冲区(Translation Lookaside Buffer,TLB)。TLB是一个内存管理单元,用于缓存最近使用过的页表项(即,GVA到HPA的映射关系)。这样,当需要访问内存中的一个数据,CPU可以基于访问这个数据的GVA,查询TLB。若在TLB中发现有该发现有该GVA(即TLB hit),则可以基于TLB中所保存的该GVA对应的HPA,访问内存以访存该数据。若在TLB中没有查找到该GVA(即TLBmiss),则由MMU查找页表,获取该GVA对应的HPA。
在x86的虚拟化环境中,当HOST的硬件不支持内存虚拟化(例如EPT)的扩展时,MMU只有一个页表基址寄存器(例如x86下的CR3或者ARM的TTBR寄存器组),MMU无法感知此时是做GVA到GPA的转换还是GPA到HPA的转换。由于MMU只能完成一级页表转换,因此,在x86的虚拟化环境中,在VMM(Virtual Machine Monitor,虚拟机监控器)中创建一个虚拟机页表的影子页表,用于维护GVA至HPA之间的映射关系。通过该方式,能够一步完成从GVA到HPA的转换,减少虚拟机的访存异常处理流程开销。即,减少TLB miss时,获取GVA对应的HPA的开销。
在引入影子页表之前,当发生TLB miss时,由MMU根据页表基址寄存器和虚地址索引自动索引页表并填入TLB(即TLB填写)。在引入影子页表后,当发生TLB miss时,页表基址寄存器寄存器已经不指向进程本身的GVA->GPA的页表,而是被替换为影子页表的pgd。由于影子页表自身即保存了GVA->HVA的关系,相当于在不退出虚拟机的情况下自身即可完成地址翻译,并完成TLB的填写。
下面对在x86的虚拟化环境中的影子页表进行说明:
具体地,Guest OS创建之后,VMM创建该虚拟机中每个进程对应的影子页表,该影子页表初始是空表,因此,CPU处理任何Guest OS的一个进程访存操作时,从该进程的影子页表中获取该访存操作的GVA对应的HPA时,都会发生缺页中断。即,无法从该进程的影子页表中获取到该GVA对应的HPA。这时,MMU可以采用页表查找的方式,获取到该GVA对应的HPA,并将该GVA与HPA的映射关系写入该进程的影子页表中。
如前所述,每个进程对应一个多级guest页表,每级guest页表对应一级影子页表,该影子页表中记录着guest页表项中下一级页表的HPA地址。若下一级页表是最后一级,则该HPA地址为实际机器页的HPA,MMU遍历影子页表即可完成TLB miss的填写。
通过上述描述可以看出,影子页表和guest的页表一一对应。因此,影子页表一方面具有普通页表的特性:多级索引、页表基址寄存器支持,每个进程一套。另一方面,影子页表能让Guest穿透内存:即由VMM管理,MMU访问该页表,完成GVA->HPA的转换工作。
但是,通过上述实现GVA->HPA的转换工作时,需要为每个进程分配一套影子页表,空间占用较大;另外,在进行TLB填写时,需要频繁退出虚拟机切换页表基址寄存器,并且需要维护影子页表和guest、host页表的同步关系,开销严重。再者,在不支持页表基址寄存器寄存器的架构上无法使用该影子页表。这里所说的不支持页表基址寄存器寄存器的架构例如可以为无内部互锁流水级的微处理器(Microprocessor without interlocked pipedstages,简称MIPS)架构。
因此,如何在不支持页表基址寄存器的计算机架构上实现TLB填写,是一个亟待解决的问题。
考虑到上述问题,本发明提供了一种虚拟机的TLB填写方法,能够应用在不支持页表基址寄存器的计算机架构,实现虚拟机的TLB的快速填写。应理解,本发明实施例提供的虚拟机的TLB填写方法包括但不限于应用于不支持页表基址寄存器的计算机架构,还可以适用于支持页表基址寄存器的计算机架构,对此不再赘述。
另外,本发明所提供的虚拟机的TLB填写方法的执行主体可以为虚拟机的TLB填写装置,该虚拟机的TLB填写装置可以为驱动程序、程序代码软件,也可以为存储有相关执行代码的介质,例如,U盘等;或者,该虚拟机的TLB填写装置还可以为集成或安装有相关执行代码的实体装置,例如,芯片、微控制单元(Microcontroller Unit,简称MCU)、电脑、计算机等。
举例来说,该方案可应用于运行有任一操作系统,以及,虚拟机操作系统的电子设备,例如,嵌入式操作系统的计算机。作为示例说明,运行嵌入式实时操作系统的计算机可以安装有MIPS,该处理器具有高性能低功耗的特点,可应用于服务器、高性能计算机、低能耗数据中心、个人高性能计算机、高端桌面应用、高吞吐计算应用、工业控制、数字信号处理、高端嵌入式应用等产品。
下面以集成或安装有相关执行代码的电子设备(即HOST)的处理器为例,以MIPS架构的电子设备为例,结合具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明提供的一种虚拟机的TLB填写方法的流程示意图。本实施例涉及的是如何根据影子列表实现TLB填写。如图1所示,该方法包括:
S101、获取待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识。
S102、根据所述目标虚拟地址和所述目标进程的标识,从虚拟机的影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,所述影子页表包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识。
S103、将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中。
在本实施例中,为电子设备上的每个虚拟机创建一个影子页表,不再单独为每个进程设置单级索引的影子页表。在该影子页表中,将第一级的页目录pgd(GVA)直接哈希映射到物理地址(HPA)。也就是说,不管原生MIPS架构上是否是将GVA->GPA和GPA->HPA进行了区分,但是在该影子页表中,将GVA->GPA和GPA->HPA合并为一项GVA->HPA。也就是说,在该影子页表中,每一项为一个GPA->HPA的映射关系,即虚拟地址的映射关系。相比x86虚拟化环境中的影子页表,该影子页表空间占用较小。因此,该影子页表也可以称为轻量级影子页表、或者,软件TLB。
应理解,本发明不限定上述影子页表的大小。作为一种可能的实现方式,可以根据该影子页表需要保存的项数和每项虚拟地址的映射关系(GVA->HPA)的大小的乘积,确定该影子页表的大小。其中,所保存的项数具体可以根据虚拟机上所要运行的程序的数量确定。
示例性的,假定该影子页表需要保存215项GVA->HPA的映射关系,每项虚拟地址的映射关系映射两页(一共32K)。每页为一个HPA。即,每个虚拟地址的映射关系需要映射2个连续的HPA。其中,一个HPA为GVA对应的HPA,另一个HPA为与GVA对应的HPA相邻的HPA。
则在该实例下,需要为该影子页表分配215×25的内存空间,约1GB空间。该影子页表所占用的空间,相对于x86中所示的使用4级影子页表保存完整64位地址空间的映射关系来说,是一段很小的内存。
在本实施例中,对于不同的ASID号的进程来说,可能会使用相同的GVA,该GVA在对应不同ASID号的进程时,对应的HPA不同。以2个ASID号的进程会使相同的GVA为例,则在该场景下,上述影子页表需要保存216项(即215×2)。应理解,上述可能使用相同GVA的进程的数量,可以根据用户的需求确定。因此,上述影子页表中包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识。
应理解,在通过上述方式确定影子页表的大小后,可以为影子页表在内存中分配一段连续的物理内存,也可以分配不连续的物理内存,对此不进行限定。作为一种可能的实现方式,可以使用kernel的API函数kmalloc分配该影子页表的内存。
本实施例不限定上述映射关系在影子页表中的描述方式。例如,可以通过结构体来实现上述映射关系,即,将映射关系中所指示的组合使用结构体实现。
由于该影子页表记录的是GVA->HPA的映射关系,因此,在TLB miss的地址翻译过程中,在获取到待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识后,可以使用GVA,以及,目标进程的标识进行一次时间复杂度为O(1)的哈希索引,找出GVA对应的HPA地址,填入硬件TLB表项内即可。这里所说的进程的标识可以为任一能够标识该进程的标识,例如,进程的ASID。
本发明提供的虚拟机的TLB填写方法,通过为虚拟机建立包括至少一个虚拟地址的至少一个映射关系的影子页表,由于该映射关系可以反映虚拟地址对应的机器地址和进程的标识,因此,通过该影子页表可以直接获取到目标虚拟地址和目标进程对应的目标机器地址,从而可以将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入虚拟机的TLB中,从而可以在TLB miss时快速填写虚拟机的TLB。该方法无需通过页表基址寄存器即可实现快速填写虚拟机的TLB,因此,该方法可以适用于任一计算机架构。
图2为本发明提供的另一种虚拟机的TLB填写方法的流程示意图。本实施例涉及的是如何从影子列表中获取目标机器地址,如图2所示,上述步骤S102可以包括:
S201、根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址的至少一个目标映射关系,每个所述目标映射关系用于指示所述目标虚拟地址对应的一种目标组合。
S202、根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程的标识对应的目标机器地址。
在本实施例中,可以使用哈希映射将目标虚拟地址作为索引,再根据索引对影子页表进行随机访存,便省去了保存目标虚拟地址比较键的内容。然后,可以进一步结合目标进程标识,从所述至少一个目标映射关系中确定出与所述目标进程的标识对应的目标机器地址。
可选的,作为一种可能的实现方式,为了简化计算,还可以将哈希映射退化为由目标虚拟地址的第一比特段作为索引,从影子页表中索引目标虚拟地址的至少一个目标映射关系。以影子页表包括215项映射关系为例,则可以设置该虚拟机各虚拟地址的第一比特段从0至215排列。例如,第1个虚拟地址的第一比特段为0对应的二进制,第2个虚拟地址的第一比特段为1对应的二进制,第3个虚拟地址的第一比特段为2对应的二进制,以此类推,第215个虚拟地址的第一比特段为(215-1)对应的二进制。在该场景下,第一比特段可以为虚拟地址的[29:15]比特,即位置29至15的比特,共15个比特。即,第一比特段的长度具体可以根据影子页表的项数确定。因影子页表的项数和虚拟机所使用的虚拟地址数量一一对应,因此,也可以说,第一比特段的长度可以根据虚拟机所使用的虚拟地址数量确定。
相应地,在该实现方式下,上述影子页表中的每项虚拟地址的映射关系所示的组合中还可以包括标签。该标签为所述组合对应的虚拟地址的第二比特段。例如,该第二比特段为虚拟地址的[61:30]共32位。需要说明的是,上述第一比特段和第二比特段包括虚拟地址不同的比特,以通过第一比特段和第二比特段能够索引出虚拟地址。应理解,第二比特段应包括除第一比特段之外所有的高位比特,除非某一位比特在任何情况下的取值都为0。
应理解,电子设备上运行的操作系统内核需要保证在影子列表中,可以用ASID区分所有进程,否则需要刷新所有的映射关系。
下面对如何从所述至少一个目标映射关系中确定出与所述目标进程和所述目标虚拟地址对应的目标机器地址进行说明:
图3为本发明提供的又一种虚拟机的TLB填写方法的流程示意图。如图3所示,上述步骤S202可以包括:
S301、从第i个目标映射关系中获取目标组合的标签。
其中,所述i为大于或等于1的整数。
S302、比较所述目标虚拟地址的第二比特段,与所述目标组合的标签是否相同。若相同,则执行S303,若不同,则执行S305;
S303、判断所述目标组合中的进程的标识与所述目标进程的标识是否相同。若相同,执行S304,若不同,执行S305。
S304、将所述目标组合中的机器地址作为所述目标机器地址。
执行完步骤S304之后,流程结束。
S305、判断所述i是否小于所述至少一个目标映射关系的数量。
若是,说明还未遍历完所有的目标映射关系,则继续执行S306。若否,说明已遍历完所有的目标映射关系,但是未找到与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址。也就是说,该影子页表中没有所述目标虚拟地址、所述目标进程的标识与所述目标机器地址的映射关系。在该场景下,可以退出遍历目标映射关系的流程,采用现有的填写TLB的方式,获取所述目标虚拟地址和所述目标进程的标识对应的目标机器地址。这里所说的现有的填写TLB的方式,例如可以是通过Guest页表和HOST页表,查找所述目标虚拟地址和所述目标进程的标识对应的目标机器地址。
S306、将i加1,并返回执行S301。
可选的,在将所述目标进程、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中之前,还可以确定所述目标机器地址有效。具体实现时,可以通过判断目标机器地址是否为0,来判断该目标机器地址是否有效。若目标机器地址为0,说明该机器地址无效。若目标机器地址不为0,则说明该机器地址有效。若机器地址无效,则可以采用现有的TLB miss的处理方式,即查找页表的方式,通过Guest页表和HOST页表转换,获取目标虚拟地址的目标机器地址,对此不再赘述。通过该方式,可以确保所得到的目标机器地址的准确性。
前述描述的是,在发生TLB miss时,如何根据影子页表,进行TLB填写。但是,对于上述影子页表,在为虚拟机初始创建该影子页表时,该影子页表也是空的影子页表。因此,下面对如何将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系写入影子页表进行说明。
图4为本发明提供的又一种虚拟机的TLB填写方法的流程示意图。如图4所示,在上述步骤S102之前,该方法可以包括:
S401、获取访存指令异常消息,所述访存指令异常消息用于指示所述目标虚拟地址访存异常,所述访存指令异常消息包括:所述目标进程的标识。
S402、根据所述目标虚拟地址和所述目标进程的标识,获取所述目标虚拟地址和所述目标进程的标识对应的所述目标机器地址。
S403、将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
在本实施例中,CPU可以运行KVM获取到虚拟机触发的访存指令异常消息,以指示所述目标虚拟地址访存异常。CPU在确定该目标虚拟地址需要进行地址映射时,可以返回该虚拟机,并在虚拟机的核心态下,通过查找Guest页表,根据所述目标虚拟地址和所述目标进程的标识获取该目标虚拟地址的虚拟机的物理地址GPA。然后,CPU退出虚拟机,运行在KVM下,根据该GPA,查找HOST页表,获取该GPA对应的HPA。此时,该HPA即为目标机器地址。该查找页表获取目标机器地址的过程具体可以参见现有技术,本申请对此不再赘述。
在获取所述目标虚拟地址和所述目标进程的标识对应的所述目标机器地址之后,可以将该所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
如前述所说,对于不同的ASID号的进程来说,可能会使用相同的GVA,该GVA在对应不同ASID号的进程时,对应的HPA不同。因此,在将上述映射关系写入影子页表时,需要判断该目标虚拟地址在该影子页表中所包括的项数是否已经超出影子页表中对同一虚拟地址的映射关系的数量的要求。即,该目标虚拟地址的映射关系的数量是否等于预设阈值。若是,则需要根据相应的规则进行处理:
1、将访存频率低的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;然后,将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
即,在本实施例中,需要维护一个访存频率表,该访存频率表可以记录每个进程的访存频率。访存频率越高,说明该进程查找HPA的频率越高,因此,可以将该进程对应的映射关系加入影子页表中。访存频率越低,说明该进程查找HPA的频率越低,即便将该映射关系不添加到影子页表中,对访存效率的影响也不大,因此,可以将该进程对应的映射关系不加入影子页表中。
具体实现时,可以统计每个进程在一个ASID周期内TLB miss的次数,来判断该进程的访存频率。这样,虽然会将只用很少TLB项的访存进程漏掉,但是这种进程因为本身执行时TLB miss数较低,不会有太大开销。因此,这种方式可以保证高TLB miss的进程有良好的性能表现。
2、将存储时间较长的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;然后,将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
3、将优先级较低的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;然后,将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
4、不将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
通过上述方式,可以实现在影子页表中添加每个虚拟地址的映射关系。
应理解,通过本实施例提供的影子页表,在发生TLB miss时,可以先在影子页表中采用上述图1-图3所示的方法,查找是否存在该目标虚拟地址和该目标进程的标识对应的目标机器地址。若查找不到,则可以采用图4所示的方式,采用现有的查找页表的方式,获取到目标机器地址后,先把该所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填写入影子页表中,填写时如果该目标虚拟地址的映射关系已填满,则对照访存频率表将本次地址翻译的结果(即映射关系)替换出TLB miss较低的进程对应的映射关系,然后再填写入TLB中,完成TLB的填写,对此不再赘述。
本发明提供的虚拟机的TLB填写方法,通过为虚拟机建立包括至少一个虚拟地址的至少一个映射关系的影子页表,由于该映射关系可以反映虚拟地址对应的机器地址和进程的标识,因此,通过该影子页表可以直接获取到目标虚拟地址和目标进程对应的目标机器地址,从而可以将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入虚拟机的TLB中,从而可以在TLB miss时快速填写虚拟机的TLB。该方法无需通过页表基址寄存器即可实现快速填写虚拟机的TLB,因此,该方法可以适用于任一计算机架构。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本发明提供的一种虚拟机的TLB填写装置的结构示意图。该虚拟机的TLB填写装置可以通过软件、硬件或者两者的结合实现电子设备的部分或者全部。如图5所示,该虚拟机的TLB填写装置可以包括:第一获取模块11、第二获取模块12和第一填写模块13。其中,
第一获取模块11,用于获取待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识;
第二获取模块12,用于根据所述目标虚拟地址和所述目标进程的标识,从虚拟机的影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,所述影子页表包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识;
第一填写模块13,用于将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中。
可选的,所述第二获取模块12,具体用于根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址的至少一个目标映射关系;根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程的标识对应的目标机器地址;其中,每个所述目标映射关系用于指示所述目标虚拟地址对应的一种目标组合。
例如,所述第二获取模块12,具体用于使用所述目标虚拟地址的第一比特段,从所述影子页表中索引出至少一个所述目标映射关系。
若所述组合中还包括:标签,所述标签为所述组合对应的虚拟地址的第二比特段,则所述第二获取模块12,具体用于:
A:从第i个目标映射关系中获取目标组合的标签,所述i为大于或等于1的整数;
B:将所述目标虚拟地址的第二比特段,与所述目标组合的标签进行比较;若相同,则执行C,若不同,则执行E;
C:判断所述目标组合中的进程的标识与所述目标进程的标识是否相同;若相同,执行D,若不同,执行E;
D:将所述目标组合中的机器地址作为所述目标机器地址;
E、判断所述i是否小于所述至少一个目标映射关系的数量,若是,执行F;
F、将i加1,并返回执行A。
继续参照图5,可选的,所述装置还可以包括:确定模块14,用于在所述第一填写模块13将所述目标进程、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中之前,确定所述目标机器地址有效。
继续参照图5,可选的,所述装置还包括:
第三获取模块15,用于获取访存指令异常消息,所述访存指令异常消息用于指示所述目标虚拟地址访存异常,所述访存指令异常消息包括:所述目标进程的标识;
第四获取模块16,用于根据所述目标虚拟地址和所述目标进程的标识,获取所述目标虚拟地址和所述目标进程的标识对应的所述目标机器地址;
第二填入模块17,用于将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
作为一种可能的实现方式,所述影子页表中同一虚拟地址的映射关系的数量小于或等于预设阈值;则所述第二填入模块17,具体用于在所述影子页表中当前所包括的所述目标虚拟地址的映射关系的数量等于所述预设阈值时,将访存频率低的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
本发明提供的虚拟机的TLB填写装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图6为本发明提供的电子设备的结构示意图。如图6所示,该电子设备可以包括:至少一个处理器21和存储器22。图6示出的是以一个处理器为例的电子设备,其中,
存储器22,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器22可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器21用于执行所述存储器22存储的计算机执行指令,以实现上述实施例中的虚拟机的TLB填写方法,其实现原理和技术效果类似,在此不再赘述。
其中,处理器21可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选的,在具体实现上,如果通信接口、存储器22和处理器21独立实现,则通信接口、存储器22和处理器21可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口、存储器22和处理器21集成在一块芯片上实现,则通信接口、存储器22和处理器21可以通过内部接口完成相同间的通信。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质。具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种虚拟机的TLB填写方法,其特征在于,所述方法包括:
获取待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识;
根据所述目标虚拟地址和所述目标进程的标识,从虚拟机的影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,所述影子页表包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识;
将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标虚拟地址和所述目标进程的标识,从影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,包括:
根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址的至少一个目标映射关系,每个所述目标映射关系用于指示所述目标虚拟地址对应的一种目标组合;
根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程的标识对应的目标机器地址。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标虚拟地址,从所述影子页表中查询所述目标虚拟地址对应的至少一个目标映射关系,包括:
使用所述目标虚拟地址的第一比特段,从所述影子页表中索引出至少一个所述目标映射关系。
4.根据权利要求3所述的方法,其特征在于,所述组合中还包括:标签,所述标签为所述组合对应的虚拟地址的第二比特段;所述根据所述目标进程的标识,从所述至少一个目标映射关系中确定出与所述目标进程和所述目标虚拟地址对应的目标机器地址,包括:
A:从第i个目标映射关系中获取目标组合的标签,所述i为大于或等于1的整数;
B:将所述目标虚拟地址的第二比特段,与所述目标组合的标签进行比较;若相同,则执行C,若不同,则执行E;
C:判断所述目标组合中的进程的标识与所述目标进程的标识是否相同;若相同,执行D,若不同,执行E;
D:将所述目标组合中的机器地址作为所述目标机器地址;
E、判断所述i是否小于所述至少一个目标映射关系的数量,若是,执行F;
F、将i加1,并返回执行A。
5.根据权利要求1所述的方法,其特征在于,所述将所述目标进程、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中之前,所述方法包括:
确定所述目标机器地址有效。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
获取访存指令异常消息,所述访存指令异常消息用于指示所述目标虚拟地址访存异常,所述访存指令异常消息包括:所述目标进程的标识;
根据所述目标虚拟地址和所述目标进程的标识,获取所述目标虚拟地址和所述目标进程的标识对应的所述目标机器地址;
将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
7.根据权利要求6所述的方法,其特征在于,所述影子页表中同一虚拟地址的映射关系的数量小于或等于预设阈值;
所述将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中,包括:
若所述影子页表中当前所包括的所述目标虚拟地址的映射关系的数量等于所述预设阈值,则将访存频率低的进程对应的所述目标虚拟地址的映射关系从所述影子页表中删除;
将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入所述影子页表中。
8.一种虚拟机的TLB填写装置,其特征在于,所述装置包括:
第一获取模块,用于获取待填入转换检测缓冲区TLB的目标虚拟地址,以及,访问所述目标虚拟地址的目标进程的标识;
第二获取模块,用于根据所述目标虚拟地址和所述目标进程的标识,从虚拟机的影子页表中获取与所述目标虚拟地址和所述目标进程的标识对应的目标机器地址,所述影子页表包括至少一个虚拟地址的至少一个映射关系,所述虚拟地址的每个映射关系用于指示所述虚拟地址对应的一种组合,所述组合包括:机器地址和进程的标识;
第一填写模块,用于将所述目标进程的标识、所述目标虚拟地址、所述目标机器地址之间的映射关系填入TLB中。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行权利要求1-7任一项所述的方法步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行权利要求1-7任一项所述的方法。
CN201910473311.2A 2019-05-31 2019-05-31 虚拟机的tlb填写方法、装置及存储介质 Active CN110196757B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910473311.2A CN110196757B (zh) 2019-05-31 2019-05-31 虚拟机的tlb填写方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910473311.2A CN110196757B (zh) 2019-05-31 2019-05-31 虚拟机的tlb填写方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110196757A true CN110196757A (zh) 2019-09-03
CN110196757B CN110196757B (zh) 2021-08-03

Family

ID=67753812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910473311.2A Active CN110196757B (zh) 2019-05-31 2019-05-31 虚拟机的tlb填写方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110196757B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955493A (zh) * 2019-11-13 2020-04-03 东软集团股份有限公司 一种实现安全运行环境切换的方法、系统及相关设备
CN112363824A (zh) * 2020-10-12 2021-02-12 北京大学 一种申威架构下的内存虚拟化方法与系统
CN113674133A (zh) * 2021-07-27 2021-11-19 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
CN114595164A (zh) * 2022-05-09 2022-06-07 支付宝(杭州)信息技术有限公司 在虚拟化平台中管理tlb高速缓存的方法和装置
CN116701248A (zh) * 2022-02-24 2023-09-05 象帝先计算技术(重庆)有限公司 页表管理方法、单元、soc、电子设备及可读存储介质
CN117472806A (zh) * 2023-12-26 2024-01-30 芯瞳半导体技术(山东)有限公司 一种地址翻译方法、装置及计算机存储介质
US11947992B2 (en) 2022-05-09 2024-04-02 Alipay (Hangzhou) Information Technology Co., Ltd. Methods and apparatuses for managing TLB cache in virtualization platform

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110010483A1 (en) * 2007-06-28 2011-01-13 Nokia Corporation Memory protection unit in a virtual processing environment
CN102567217A (zh) * 2012-01-04 2012-07-11 北京航空航天大学 一种面向mips平台的内存虚拟化方法
CN102662869A (zh) * 2012-04-01 2012-09-12 龙芯中科技术有限公司 虚拟机中的内存访问方法和装置及查找器
US8275971B2 (en) * 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
CN102880426A (zh) * 2012-08-01 2013-01-16 龙芯中科技术有限公司 一种系统虚拟机减少tlb刷新的方法及系统虚拟机
CN104239238A (zh) * 2013-06-21 2014-12-24 国际商业机器公司 用于管理转换旁视缓冲的方法和装置
CN105579977A (zh) * 2014-09-01 2016-05-11 华为技术有限公司 访问文件的方法、装置及存储系统
US20180307622A1 (en) * 2017-04-24 2018-10-25 Advanced Micro Devices, Inc. Fully virtualized tlbs

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110010483A1 (en) * 2007-06-28 2011-01-13 Nokia Corporation Memory protection unit in a virtual processing environment
US8275971B2 (en) * 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
CN102567217A (zh) * 2012-01-04 2012-07-11 北京航空航天大学 一种面向mips平台的内存虚拟化方法
CN102662869A (zh) * 2012-04-01 2012-09-12 龙芯中科技术有限公司 虚拟机中的内存访问方法和装置及查找器
CN102880426A (zh) * 2012-08-01 2013-01-16 龙芯中科技术有限公司 一种系统虚拟机减少tlb刷新的方法及系统虚拟机
CN104239238A (zh) * 2013-06-21 2014-12-24 国际商业机器公司 用于管理转换旁视缓冲的方法和装置
CN105579977A (zh) * 2014-09-01 2016-05-11 华为技术有限公司 访问文件的方法、装置及存储系统
US20180307622A1 (en) * 2017-04-24 2018-10-25 Advanced Micro Devices, Inc. Fully virtualized tlbs

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955493A (zh) * 2019-11-13 2020-04-03 东软集团股份有限公司 一种实现安全运行环境切换的方法、系统及相关设备
CN112363824A (zh) * 2020-10-12 2021-02-12 北京大学 一种申威架构下的内存虚拟化方法与系统
CN112363824B (zh) * 2020-10-12 2022-07-22 北京大学 一种申威架构下的内存虚拟化方法与系统
CN113674133A (zh) * 2021-07-27 2021-11-19 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
CN113674133B (zh) * 2021-07-27 2023-09-05 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
CN116701248A (zh) * 2022-02-24 2023-09-05 象帝先计算技术(重庆)有限公司 页表管理方法、单元、soc、电子设备及可读存储介质
CN116701248B (zh) * 2022-02-24 2024-04-30 象帝先计算技术(重庆)有限公司 页表管理方法、单元、soc、电子设备及可读存储介质
CN114595164A (zh) * 2022-05-09 2022-06-07 支付宝(杭州)信息技术有限公司 在虚拟化平台中管理tlb高速缓存的方法和装置
WO2023216450A1 (zh) * 2022-05-09 2023-11-16 支付宝(杭州)信息技术有限公司 在虚拟化平台中管理tlb高速缓存的方法和装置
US11947992B2 (en) 2022-05-09 2024-04-02 Alipay (Hangzhou) Information Technology Co., Ltd. Methods and apparatuses for managing TLB cache in virtualization platform
CN117472806A (zh) * 2023-12-26 2024-01-30 芯瞳半导体技术(山东)有限公司 一种地址翻译方法、装置及计算机存储介质
CN117472806B (zh) * 2023-12-26 2024-04-02 芯瞳半导体技术(山东)有限公司 一种地址翻译方法、装置及计算机存储介质

Also Published As

Publication number Publication date
CN110196757B (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
CN110196757A (zh) 虚拟机的tlb填写方法、装置及存储介质
US8954959B2 (en) Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US9152570B2 (en) System and method for supporting finer-grained copy-on-write page sizes
US8996814B2 (en) System and method for providing stealth memory
US8296547B2 (en) Loading entries into a TLB in hardware via indirect TLB entries
US9086987B2 (en) Detection of conflicts between transactions and page shootdowns
US7734892B1 (en) Memory protection and address translation hardware support for virtual machines
US8631170B2 (en) Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU
US9286101B2 (en) Free page hinting
US20130262816A1 (en) Translation lookaside buffer for multiple context compute engine
US9280486B2 (en) Managing memory pages based on free page hints
US10528476B2 (en) Embedded page size hint for page fault resolution
KR101708142B1 (ko) 속성 필드의 멀티-코어 페이지 테이블 세트
US20140108701A1 (en) Memory protection unit in a virtual processing environment
US20100223432A1 (en) Memory sharing among computer programs
EP2278463A1 (en) A method and apparatus for supporting address translation in a multiprocessor virtual machine environment
US9892060B2 (en) Identifying stale entries in address translation cache
US20140006681A1 (en) Memory management in a virtualization environment
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US8954707B2 (en) Automatic use of large pages
WO2018027839A1 (zh) 一种页表缓存tlb中表项的访问方法,及处理芯片
US10459852B1 (en) Memory utilization analysis for memory management systems
WO2021061466A1 (en) Memory management unit, address translation method, and processor
EP3789881A1 (en) Method and device for monitoring memory access behavior of sample process
US9086986B2 (en) Detection of conflicts between transactions and page shootdowns

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100095 101, 1st floor, building 4, yard 7, Dijin Road, Haidian District, Beijing

Applicant after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd.

GR01 Patent grant
GR01 Patent grant