CN110209603B - 地址转换方法、装置、设备及计算机可读存储介质 - Google Patents
地址转换方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110209603B CN110209603B CN201910466569.XA CN201910466569A CN110209603B CN 110209603 B CN110209603 B CN 110209603B CN 201910466569 A CN201910466569 A CN 201910466569A CN 110209603 B CN110209603 B CN 110209603B
- Authority
- CN
- China
- Prior art keywords
- address
- page
- virtual memory
- large page
- memory 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.)
- Active
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种地址转换方法、装置、设备及计算机可读存储介质,该方法包括:获取待处理的虚拟内存地址;根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。本发明实施例通过设置大页地址翻译表来代替多级页表,能够实现一级访存,简化访存流程,从而提高虚拟机的内存地址转换效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种地址转换方法、装置、设备及计算机可读存储介质。
背景技术
目前linux操作系统通常采用分页机制来管理内存,例如x86架构的处理器中一张页大小为4KB,这些称为普通页,由多级页表管理。但是如果物理内存很大,则页表的条目非常多,会使TLB(Translation Lookaside Buffer,转换检测缓冲区)的访问压力过大,影响内存访问性能。
现有技术中,采用普通页和大页(huge page)两种内存页,如对于x86架构的处理器,大页的大小为2MB。在多级页表中的第三级加入内存页的属性标记,根据属性标记在地址转换过程中分别对普通页和大页进行不同的地址转换处理。
现有技术中通过加入大页的多级页表管理方式,能够使内存页的数量减少,减少所需的地址转换,从而提高了内存访问的性能。但由于虚拟机的GPA(Guest PhysicalAddress,虚拟机的物理地址)空间较小,采用加入大页的多级页表管理方式对虚拟机的内存地址转换效率的提升很小,虚拟机的内存地址转换效率仍然较低。
发明内容
本发明实施例提供一种地址转换方法、装置、设备及计算机可读存储介质,以解决目前虚拟机的内存地址转换效率低的问题。
第一方面,本发明实施例提供一种地址转换方法,包括:
获取待处理的虚拟内存地址;
根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;
若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。
在一种可能的实施方式中,所述根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,包括:
按照所述虚拟内存地址中第一预设位段的数据对所述大页地址翻译表进行索引,得到与所述虚拟内存地址对应的目标页表项;
若所述目标页表项的数据不为空,则确定所述目标页表项的数据,为与所述虚拟内存地址相对应的大页起始地址;
若所述目标页表项的数据为空,则确定所述大页地址翻译表中不存在与所述虚拟内存地址相对应的大页起始地址。
在一种可能的实施方式中,每个大页包含多个小页,所述根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址,包括:
将所述虚拟内存地址中第二预设位段的数据作为偏移量,对所述大页起始地址对应的大页进行偏移计算,得到目标小页的起始地址;
根据所述目标小页的起始地址,确定所述虚拟内存地址对应的物理内存地址。
在一种可能的实施方式中,在所述根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址之后,还包括:
若不存在与所述虚拟内存地址相对应的大页起始地址,则进行分页处理,得到新增的大页;
将所述新增的大页的起始地址记录到所述大页地址翻译表中。
在一种可能的实施方式中,所述进行分页处理,得到新增的大页,包括:
为所述虚拟内存地址分配第一物理内存地址;
获取第一物理内存地址所属的第一小页的起始地址;
根据所述第一小页的起始地址,确定所述第一小页所属大页的起始地址;
将所述第一小页所属大页的起始地址作为所述新增的大页的起始地址,以确定出所述新增的大页。
第二方面,本发明实施例提供一种地址转换装置,包括:
获取模块,用于获取待处理的虚拟内存地址;
查找模块,用于根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;
处理模块,用于若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。
在一种可能的实施方式中,所述查找模块用于:
按照所述虚拟内存地址中第一预设位段的数据对所述大页地址翻译表进行索引,得到与所述虚拟内存地址对应的目标页表项;
若所述目标页表项的数据不为空,则确定所述目标页表项的数据,为与所述虚拟内存地址相对应的大页起始地址;
若所述目标页表项的数据为空,则确定所述大页地址翻译表中不存在与所述虚拟内存地址相对应的大页起始地址。
在一种可能的实施方式中,每个大页包含多个小页,所述处理模块用于:
将所述虚拟内存地址中第二预设位段的数据作为偏移量,对所述大页起始地址对应的大页进行偏移计算,得到目标小页的起始地址;
根据所述目标小页的起始地址,确定所述虚拟内存地址对应的物理内存地址。
在一种可能的实施方式中,还包括分页模块,所述分页模块用于:
若不存在与所述虚拟内存地址相对应的大页起始地址,则进行分页处理,得到新增的大页;
将所述新增的大页的起始地址记录到所述大页地址翻译表中。
在一种可能的实施方式中,所述分页模块用于:
为所述虚拟内存地址分配第一物理内存地址;
获取第一物理内存地址所属的第一小页的起始地址;
根据所述第一小页的起始地址,确定所述第一小页所属大页的起始地址;
将所述第一小页所属大页的起始地址作为所述新增的大页的起始地址,以确定出所述新增的大页。
第三方面,本发明实施例提供一种地址转换设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的实施方式所述的地址转换方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的实施方式所述的地址转换方法。
本实施例提供的地址转换方法、装置、设备及计算机可读存储介质,通过获取待处理的虚拟内存地址;根据虚拟内存地址,查找大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址,其中,大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;若存在与虚拟内存地址相对应的大页起始地址,则根据虚拟内存地址,在大页起始地址对应的大页中确定虚拟内存地址对应的物理内存地址,通过设置大页地址翻译表来代替多级页表,能够实现一级访存,简化访存流程,从而提高虚拟机的内存地址转换效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的地址转换方法的流程示意图;
图2为本发明又一实施例提供的地址转换方法的流程示意图;
图3为本发明另一实施例提供的地址转换方法的流程示意图;
图4为本发明再一实施例提供的地址转换方法的流程示意图;
图5为本发明实施例提供的大页地址翻译表的示意图;
图6为按照传统方法进行地址转换的示意图;
图7为按照本实施例提供的该转换方法进行地址转换的示意图;
图8为本发明一实施例提供的地址转换装置的结构示意图;
图9为本发明又一实施例提供的地址转换装置的结构示意图;
图10为本发明一实施例提供的地址转换设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相对于现有技术中的多级页表管理方式,本发明实施例提供的地址转换方法通过设置大页地址翻译表来代替多级页表,能够实现一级访存,简化访存流程,从而提高虚拟机的内存地址转换效率。该方法适用于多种架构处理器上的虚拟机访存,如MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)架构、x86架构、ARM(Advanced RISC Machine)架构等,在此不作限定。
图1为本发明一实施例提供的地址转换方法的流程示意图。如图1所示,该方法包括:
S101、获取待处理的虚拟内存地址。
在本实施例中,待处理的虚拟内存地址为需要进行地址转换的地址,例如虚拟内存地址可以为GVA(Guest Virtual Address,虚拟机的虚拟地址)、GPA或者其他需要进行地址转换的虚拟内存地址等,在此不作限定。在待处理的虚拟内存地址为GVA时,该方法可以将GVA转换为相应的GPA。在待处理的虚拟内存地址为GPA时,该方法可以将GPA转换为相应的HPA(Host Physical Address,宿主机物理地址)。在待处理的虚拟内存地址为其他需要进行地址转换的虚拟内存地址时,该方法可以将其转换为相应的物理内存地址。
S102、根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址。
在本实施例中,大页起始地址为大页的起始地址。大页为从大页起始地址开始一段指定空间大小的内存页。大页的大小可以根据实际需求确定,在此不作限定,例如,大页的大小可以为2MB、32MB等。
大页地址翻译表用于记录与物理内存地址存在映射关系的虚拟内存地址所对应的大页起始地址。如果一个虚拟内存地址已经与物理内存地址建立映射关系,那么大页地址翻译表中记录有该虚拟内存地址对应的大页起始地址;如果一个虚拟内存地址没有与物理内存地址建立映射关系,那么大页地址翻译表中没有记录该虚拟内存地址对应的大页起始地址。
其中,大页地址翻译表的具体形式可以根据实际需求确定,相应的,查找大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址的方式可以具体设置,在此不作限定。
例如,大页地址翻译表可以包括多个页表项,每个虚拟内存地址与大页地址翻译表中的一个页表项相对应,根据虚拟内存地址在大页地址翻译表中索引查找与其相对应的页表项,如果该页表项中的数据为空,则表征不存在与该虚拟内存地址相对应的大页起始地址;如果该页表项中的数据为非空,则表征存在与该虚拟内存地址相对应的大页起始地址。
或者,大页地址翻译表中可以仅包含记录大页起始地址的页表项,不包含数据为空的页表项,根据虚拟内存地址在大页地址翻译表中索引查找与其对应的页表项,如果查找到与其对应的页表项,则表征存在与该虚拟内存地址相对应的大页起始地址,并且查找到的页表项中所记录的大页起始地址就是与该虚拟内存地址相对应的大页起始地址;如果没有查找到与其对应的页表项,则表征不存在与该虚拟内存地址相对应的大页起始地址。
S103、若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。
在本实施例中,一个虚拟内存地址对应的物理内存地址,为该虚拟内存地址映射的物理内存地址。如果在大页地址翻译表中查找到与该虚拟内存地址相对应的大页起始地址,则该虚拟内存地址对应的物理内存地址在该大页起始地址对应的大页中,可以根据该虚拟内存地址和该大页起始地址确定出该虚拟内存地址对应的物理内存地址,实现地址转换。
本发明实施例通过获取待处理的虚拟内存地址;根据虚拟内存地址,查找大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址,其中,大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;若存在与虚拟内存地址相对应的大页起始地址,则根据虚拟内存地址,在大页起始地址对应的大页中确定虚拟内存地址对应的物理内存地址,通过设置大页地址翻译表来代替多级页表,能够实现一级访存,简化访存流程,从而提高虚拟机的内存地址转换效率。
图2为本发明又一实施例提供的地址转换方法的流程示意图。本实施例对查找大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址的具体实现过程进行了详细说明。如图2所示,该方法包括:
S201、获取待处理的虚拟内存地址。
本实施例中S201与图1实施例中的S101类似,此处不再赘述。
S202、按照所述虚拟内存地址中第一预设位段的数据对所述大页地址翻译表进行索引,得到与所述虚拟内存地址对应的目标页表项。
在本实施例中,大页地址翻译表包含多个页表项。目标页表项为大页地址翻译表的所有页表项中与该虚拟内存地址对应的页表项。可以按照该虚拟内存地址中第一预设位段的数据对大页地址翻译表进行索引确定目标页表项。其中,第一预设位段的长度及在虚拟内存地址中的位置可以根据实际情况设定,在此不作限定。例如,假设虚拟内存地址为48位,可以取其中[38:26]位作为第一预设位段。可以将大页地址翻译表的首地址与该虚拟内存地址中第一预设位段的数据相加,得到目标页表项的地址,从而确定出目标页表项。
S203、若所述目标页表项的数据不为空,则确定所述目标页表项的数据,为与所述虚拟内存地址相对应的大页起始地址。
S204、若所述目标页表项的数据为空,则确定所述大页地址翻译表中不存在与所述虚拟内存地址相对应的大页起始地址。
在本实施例中,如果该虚拟内存地址已经与物理内存地址建立映射关系,那么该虚拟内存地址对应的大页起始数据就记录在目标页表项中;如果该虚拟内存地址没有与物理内存地址建立映射关系,那么目标页表项中的数据就为空,如目标页表项中的数据可以为0或NULL等表征空的字符。
因此,如果目标页表项的数据不为空,则将目标页表项的数据作为虚拟内存地址相对应的大页起始地址;如果目标页表项的数据为空,则确定大页地址翻译表中不存在与虚拟内存地址相对应的大页起始地址。
S205、若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。
本实施例中S205与图1实施例中的S103类似,此处不再赘述。
本实施例通过按照虚拟内存地址中第一预设位段的数据对大页地址翻译表进行索引,能够准确快速地确定大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址。
图3为本发明另一实施例提供的地址转换方法的流程示意图。本实施例对确定虚拟内存地址对应的物理内存地址的具体实现过程进行了详细说明。如图3所示,该方法包括:
S301、获取待处理的虚拟内存地址。
本实施例中S301与图1实施例中的S101类似,此处不再赘述。
S302、根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址。
本实施例中S302与图1实施例中的S102类似,此处不再赘述。
S303、将所述虚拟内存地址中第二预设位段的数据作为偏移量,对所述大页起始地址对应的大页进行偏移计算,得到目标小页的起始地址。
在本实施例中,每个大页包含多个小页。将一个大页的内存空间划分为多个小的内存空间,每个小的内存空间就是一个小页。其中,小页的大小在此不作限定。例如,大页的大小为32M,小页的大小可以为16KB。目标小页为该虚拟内存地址在大页中所具体对应的小页,该虚拟内存地址对应的物理内存地址位于目标小页内。第二预设位段的长度及在虚拟内存地址中的位置可以根据实际情况设定,在此不作限定。例如,假设虚拟内存地址为48位,可以取其中[26:14]位作为第二预设位段。
可以取该虚拟内存地址中第二预设位段的数据作为偏移量,将该偏移量与大页起始地址相加,计算得到目标小页的起始地址,从而确定出目标小页。
S304、根据所述目标小页的起始地址,确定所述虚拟内存地址对应的物理内存地址。
在本实施例中,可以根据该虚拟内存地址和目标小页的起始地址,确定出该虚拟内存地址对应的物理内存地址,实现地址转换。例如,可以取该虚拟内存地址中第三预设位段的数据作为偏移量,将该偏移量与目标小页的起始地址相加,从而得到该虚拟内存地址对应的物理内存地址。
本实施例通过将虚拟内存地址中第二预设位段的数据作为偏移量,对大页起始地址对应的大页进行偏移计算,能够快速查找到该虚拟内存地址对应的小页,进而确定出该虚拟内存地址对应的物理内存地址。
图4为本发明再一实施例提供的地址转换方法的流程示意图。本实施例中在大页地址翻译表不存在与虚拟内存地址相对应的大页起始地址时进行分页处理。如图4所示,该方法包括:
S401、获取待处理的虚拟内存地址。
本实施例中S401与图1实施例中的S101类似,此处不再赘述。
S402、根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址。
本实施例中S402与图1实施例中的S102类似,此处不再赘述。
S403、若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。
本实施例中S404与图1实施例中的S104类似,此处不再赘述。
S404、若不存在与所述虚拟内存地址相对应的大页起始地址,则进行分页处理,得到新增的大页。
在本实施例中,如果大页翻译表中不存在与该虚拟内存地址相对应的大页起始地址,则表征没有与该虚拟内存地址建立映射的物理内存地址,此时可以进行分页处理,新分配一个大页,将新分配的大页中的一个物理内存地址与该虚拟内存地址建立映射关系。
可选地,S404可以包括:
为所述虚拟内存地址分配第一物理内存地址;
获取第一物理内存地址所属的第一小页的起始地址;
根据所述第一小页的起始地址,确定所述第一小页所属大页的起始地址;
将所述第一小页所属大页的起始地址作为所述新增的大页的起始地址,以确定出所述新增的大页。
在本实施例中,第一物理内存地址是分配给该虚拟内存地址,与该虚拟内存地址建立映射关系的物理内存地址。第一物理内存地址属于新增大页中某小页内的一个地址。可以根据第一物理内存地址确定第一物理内存地址所属的第一小页的起始地址,然后根据第一小页的起始地址,确定第一小页所属大页的起始地址,该起始地址就是新增大页的起始地址。
S405、将所述新增的大页的起始地址记录到所述大页地址翻译表中。
在本实施例中,可以将新增大页的起始地址记录到大页地址翻译表中。可选地,在大页地址翻译表包含与该虚拟内存地址相对应的页表项时,可以将新增大页的起始地址记录到该页表项中,以便对该虚拟内存地址进行访存时可以查找大页地址翻译表得到该虚拟内存地址对应的大页的起始地址,进而将该虚拟内存地址转换为相应的物理内存地址。例如,可以查找大页地址翻译表中该虚拟内存地址第一预设位段的数据指向的页表项,然后将新增大页的起始地址记录到该页表项中。
可选地,在大页地址翻译表中不包含与该虚拟内存地址相对应的页表项时,可以首先在大页地址翻译表中新建一个与该虚拟内存地址相对应的页表项,将新增大页的起始地址记录到该页表项中。
本实施例通过在大页地址翻译表中不存在与虚拟内存地址相对应的大页起始地址时进行分页处理,得到新增的大页,然后将新增大页的起始地址回填到大页地址翻译表中,能够实现对大页地址翻译表的更新。
下面以一个具体示例来说明本实施例提供的地址转换方法,该示例中将地址转换方法应用于在MIPS架构处理器上运行的KVM(Kernel-based Virtual Machine,虚拟机)的GPA->HPA的地址转换过程,但并不作为限定。
传统的地址转换技术中,对于基于硬件MMU(Memory Management Unit,内存管理单元)的KVM,如x86架构处理器上运行的KVM,可以通过硬件查找VMCS(Virtual-MachineControl Structure,虚拟机控制结构)的EPT(extendedpagetable)页表,页表中有大页的属性标记,可以通过页表第三级的大页标志直接将大页填写进TLB内,实现加入大页的多级页表管理方式。但是硬件MMU固化导致系统灵活性降低,并且GPA空间较小,因此加入大页的多级页表管理方式对于基于硬件MMU的KVM的地址转换效率提升有限。
而对于基于软件MMU的KVM,如MIPS架构处理器上运行的KVM,由于KVM每次只能处理16KB的小页,不能判断大页属性,无法使用大页特性进行查找,因此MIPS架构处理器上的KVM无法使用加入大页的多级页表管理方式。目前MIPS架构处理器上的KVM是通过普通页的四级页表管理方式进行处理,地址转换效率低下。
对于KVM来说,Linux四级页表原理并不十分适用。例如在MIPS架构上KVM内有一张GPA页目录用来存放GPA->HPA的四级翻译页表,然而开启大页后对KVM来说这样的4级索引页表会造成冗余,因为一个大页表项映射为32MB,一张16K页可存放2K个表项,也就是说只需要一张一级页表就可以映射32MB*2K=64G的GPA空间。而一般的Qemu启动参数为2~16G的RAM,所以一张页表足够映射。
本实施例提供的地址转换方法改进了GPA页表,将其缩短为一级查找+大页内偏移模式寻址。根据GPA去索引一张一级大页翻译表,并使用GPA查找到大页内偏移对应的小页,这样全程只需要一级访存。如图5所示为本发明实施例提供的大页地址翻译表的示意图。其具体转换过程如下:
在KVM启动时,除了分配一张GPA页表,还分配了一张huge_pgd保存大页转换关系,即为大页地址翻译表。并仿照页表初始化将其清空为0,这样查找时一旦发现为0则去分页处理。
在对GPA进行地址转换时,可以将GPA的高位作为偏移:offset=GPA>>HPAGE_SHIFT;
然后使用高位去索引huge_pgd,如果索引到的值不为0,则索引到的值即为大页起始地址,再加上GPA低[26:14]位即为大页内的页帧号pfn:pfn=*(huge_pgd+offset)+GPA[26:14]
将pfn转换为包含pfn的页表项。
如果索引到的值为0,则说明huge_pgd没有记录相应的大页首地址,该地址尚未分配。这时转入慢速路径分页,并将pfn所在的大页基址填入huge_pgd。伪代码示例如下:
fast:
hpfnp=huge_pgd首地址+gpa的大页号;
hpfn=*hpfnp;
if(hpfn==0)goto slow;
pfn=hpfn+gpa在大页内的页帧号;
entry=pfn转换为页表项;
goto out;
slow:
pfn=根据gfn分大页,返回一张小页的页帧;
hpfn=pfn-gpa在大页内的页帧号;
hpfnp=huge_pgd首地址+gpa的大页号;
*hpfnp=hpfn;
goto fast;
out:
填写TLB。
该伪代码实现了一级大页地址翻译表huge_pgd的填写和查找,有几个关键量:hpfnp、hpfn、pfn。其中hpfnp为指向GPA对应的huge_pgd大页翻译表的页表项地址,hpfn即为hpfnp指向的物理大页的基址,pfn即为使用hpfn和GPA进行偏移计算的小页结果。查页表的过程为fast的过程,分页处理的过程为slow的过程,分页完成后即使用页表项去查页框并填入TLB内。
如图6所示为按照传统方法进行地址转换的示意图。如图7所示为按照本实施例提供的该转换方法进行地址转换的示意图。其中,pgd指向一个目录项开始的地址,pmd指向一个中间目录开始的地址,pte指向一个页表开始的地址。
对比图6和图7可以得到,本实施例提供的地址转换方法简化了地址转换流程,可以显著提升地址转换效率。根据实验数据,相比于MIPS架构处理器传统的软件MMU的地址转换过程,本实施例提供的地址转换方法通过使用大页翻译表可以将GPA->HPA的地址翻译过程提升50%以上。
本实施例提供的地址转换方法、装置、设备及计算机可读存储介质,通过获取待处理的虚拟内存地址;根据虚拟内存地址,查找大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址,其中,大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;若存在与虚拟内存地址相对应的大页起始地址,则根据虚拟内存地址,在大页起始地址对应的大页中确定虚拟内存地址对应的物理内存地址,通过设置大页地址翻译表来代替多级页表,能够实现一级访存,简化访存流程,从而提高虚拟机的内存地址转换效率。
图8为本发明一实施例提供的地址转换装置的结构示意图。如图8所示,该地址转换装置80包括:获取模块801、查找模块802和处理模块803。
获取模块801,用于获取待处理的虚拟内存地址。
查找模块802,用于根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址。
处理模块803,用于若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址。
本发明实施例通过获取模块获取待处理的虚拟内存地址;查找模块根据虚拟内存地址,查找大页地址翻译表中是否存在与虚拟内存地址相对应的大页起始地址,其中,大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址;若存在与虚拟内存地址相对应的大页起始地址,则处理模块根据虚拟内存地址,在大页起始地址对应的大页中确定虚拟内存地址对应的物理内存地址,通过设置大页地址翻译表来代替多级页表,能够实现一级访存,简化访存流程,从而提高虚拟机的内存地址转换效率。
图9为本发明又一实施例提供的地址转换装置的结构示意图。如图9所示,本实施例提供的地址转换装置80在图8所示实施例提供的地址转换装置的基础上,还可以包括:分页模块804。
可选地,所述查找模块802用于:
按照所述虚拟内存地址中第一预设位段的数据对所述大页地址翻译表进行索引,得到与所述虚拟内存地址对应的目标页表项;
若所述目标页表项的数据不为空,则确定所述目标页表项的数据,为与所述虚拟内存地址相对应的大页起始地址;
若所述目标页表项的数据为空,则确定所述大页地址翻译表中不存在与所述虚拟内存地址相对应的大页起始地址。
可选地,每个大页包含多个小页,所述处理模块803用于:
将所述虚拟内存地址中第二预设位段的数据作为偏移量,对所述大页起始地址对应的大页进行偏移计算,得到目标小页的起始地址;
根据所述目标小页的起始地址,确定所述虚拟内存地址对应的物理内存地址。
可选地,所述分页模块804用于:
若不存在与所述虚拟内存地址相对应的大页起始地址,则进行分页处理,得到新增的大页;
将所述新增的大页的起始地址记录到所述大页地址翻译表中。
可选地,所述分页模块804用于:
为所述虚拟内存地址分配第一物理内存地址;
获取第一物理内存地址所属的第一小页的起始地址;
根据所述第一小页的起始地址,确定所述第一小页所属大页的起始地址;
将所述第一小页所属大页的起始地址作为所述新增的大页的起始地址,以确定出所述新增的大页。
本发明实施例提供的地址转换装置,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
图10为本发明一实施例提供的地址转换设备的硬件结构示意图。如图10所示,本实施例提供的地址转换设备100包括:至少一个处理器1001和存储器1002。该地址转换设备100还包括通信部件1003。其中,处理器1001、存储器1002以及通信部件1003通过总线1004连接。
在具体实现过程中,至少一个处理器1001执行所述存储器1002存储的计算机执行指令,使得至少一个处理器1001执行如上的地址转换方法。
处理器1001的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图10所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上的地址转换方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种地址转换方法,其特征在于,包括:
获取待处理的虚拟内存地址;
根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址,每个大页包含多个小页;
若存在与所述虚拟内存地址相对应的大页起始地址,则将所述虚拟内存地址中第二预设位段的数据作为偏移量,对所述大页起始地址对应的大页进行偏移计算,得到目标小页的起始地址;根据所述目标小页的起始地址,确定所述虚拟内存地址对应的物理内存地址。
2.根据权利要求1所述的方法,其特征在于,所述根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,包括:
按照所述虚拟内存地址中第一预设位段的数据对所述大页地址翻译表进行索引,得到与所述虚拟内存地址对应的目标页表项;
若所述目标页表项的数据不为空,则确定所述目标页表项的数据,为与所述虚拟内存地址相对应的大页起始地址;
若所述目标页表项的数据为空,则确定所述大页地址翻译表中不存在与所述虚拟内存地址相对应的大页起始地址。
3.根据权利要求1或2所述的方法,其特征在于,在所述根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址之后,还包括:
若不存在与所述虚拟内存地址相对应的大页起始地址,则进行分页处理,得到新增的大页;
将所述新增的大页的起始地址记录到所述大页地址翻译表中。
4.根据权利要求3所述的方法,其特征在于,所述进行分页处理,得到新增的大页,包括:
为所述虚拟内存地址分配第一物理内存地址;
获取第一物理内存地址所属的第一小页的起始地址;
根据所述第一小页的起始地址,确定所述第一小页所属大页的起始地址;
将所述第一小页所属大页的起始地址作为所述新增的大页的起始地址,以确定出所述新增的大页。
5.一种地址转换装置,其特征在于,包括:
获取模块,用于获取待处理的虚拟内存地址;
查找模块,用于根据所述虚拟内存地址,查找大页地址翻译表中是否存在与所述虚拟内存地址相对应的大页起始地址,其中,所述大页地址翻译表中包括不同的虚拟内存地址对应的各个大页起始地址,每个大页包含多个小页;
处理模块,用于若存在与所述虚拟内存地址相对应的大页起始地址,则根据所述虚拟内存地址,在所述大页起始地址对应的大页中确定所述虚拟内存地址对应的物理内存地址;
所述处理模块,具体用于:将所述虚拟内存地址中第二预设位段的数据作为偏移量,对所述大页起始地址对应的大页进行偏移计算,得到目标小页的起始地址;根据所述目标小页的起始地址,确定所述虚拟内存地址对应的物理内存地址。
6.根据权利要求5所述的装置,其特征在于,所述查找模块,具体用于:
按照所述虚拟内存地址中第一预设位段的数据对所述大页地址翻译表进行索引,得到与所述虚拟内存地址对应的目标页表项;
若所述目标页表项的数据不为空,则确定所述目标页表项的数据,为与所述虚拟内存地址相对应的大页起始地址;
若所述目标页表项的数据为空,则确定所述大页地址翻译表中不存在与所述虚拟内存地址相对应的大页起始地址。
7.根据权利要求5或6所述的装置,其特征在于,还包括分页模块,所述分页模块用于:
若不存在与所述虚拟内存地址相对应的大页起始地址,则进行分页处理,得到新增的大页;
将所述新增的大页的起始地址记录到所述大页地址翻译表中。
8.一种地址转换设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至4任一项所述的地址转换方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至4任一项所述的地址转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910466569.XA CN110209603B (zh) | 2019-05-31 | 2019-05-31 | 地址转换方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910466569.XA CN110209603B (zh) | 2019-05-31 | 2019-05-31 | 地址转换方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209603A CN110209603A (zh) | 2019-09-06 |
CN110209603B true CN110209603B (zh) | 2021-08-31 |
Family
ID=67789810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910466569.XA Active CN110209603B (zh) | 2019-05-31 | 2019-05-31 | 地址转换方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209603B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256598B (zh) * | 2020-10-27 | 2022-10-28 | 上海壁仞智能科技有限公司 | 一种内存分配的方法及装置、内存寻址的方法及装置 |
CN112905497B (zh) * | 2021-02-20 | 2022-04-22 | 迈普通信技术股份有限公司 | 内存管理方法、装置、电子设备及存储介质 |
CN116701248B (zh) * | 2022-02-24 | 2024-04-30 | 象帝先计算技术(重庆)有限公司 | 页表管理方法、单元、soc、电子设备及可读存储介质 |
CN116339916B (zh) * | 2023-03-17 | 2023-11-10 | 摩尔线程智能科技(北京)有限责任公司 | 一种内存虚拟化方法及装置、电子设备和存储介质 |
CN117472807B (zh) * | 2023-12-28 | 2024-03-29 | 北京微核芯科技有限公司 | 虚拟地址的转换方法、装置和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
CN104516826A (zh) * | 2013-09-30 | 2015-04-15 | 华为技术有限公司 | 一种虚拟大页面与物理大页面的对应方法及装置 |
CN105893269A (zh) * | 2016-03-31 | 2016-08-24 | 武汉虹信技术服务有限责任公司 | 一种Linux系统下内存管理方法 |
CN108139981A (zh) * | 2016-08-11 | 2018-06-08 | 华为技术有限公司 | 一种页表缓存tlb中表项的访问方法,及处理芯片 |
CN108628663A (zh) * | 2018-05-11 | 2018-10-09 | 浙江大学 | 一种支持新型大页框架的kvm系统 |
CN108804350A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种内存访问方法及计算机系统 |
CN109344090A (zh) * | 2018-10-30 | 2019-02-15 | 深圳润迅数据通信有限公司 | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 |
CN109508304A (zh) * | 2018-11-14 | 2019-03-22 | 郑州云海信息技术有限公司 | 一种内存管理元数据的处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100470506C (zh) * | 2007-06-08 | 2009-03-18 | 马彩艳 | 基于sector访问的flash存储器的存储管理方法 |
CN102662726B (zh) * | 2012-04-01 | 2015-07-29 | 龙芯中科技术有限公司 | 虚拟机的模拟方法和计算机设备 |
CN103488588A (zh) * | 2013-10-09 | 2014-01-01 | 中国科学院计算技术研究所 | 一种内存保护方法、系统及网络接口控制器 |
CN107025180B (zh) * | 2016-02-01 | 2020-03-13 | 龙芯中科技术有限公司 | 内存管理方法和装置 |
CN110874332B (zh) * | 2016-08-26 | 2022-05-10 | 中科寒武纪科技股份有限公司 | 内存管理单元及其管理方法 |
-
2019
- 2019-05-31 CN CN201910466569.XA patent/CN110209603B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
CN104516826A (zh) * | 2013-09-30 | 2015-04-15 | 华为技术有限公司 | 一种虚拟大页面与物理大页面的对应方法及装置 |
CN105893269A (zh) * | 2016-03-31 | 2016-08-24 | 武汉虹信技术服务有限责任公司 | 一种Linux系统下内存管理方法 |
CN108139981A (zh) * | 2016-08-11 | 2018-06-08 | 华为技术有限公司 | 一种页表缓存tlb中表项的访问方法,及处理芯片 |
CN108804350A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种内存访问方法及计算机系统 |
CN108628663A (zh) * | 2018-05-11 | 2018-10-09 | 浙江大学 | 一种支持新型大页框架的kvm系统 |
CN109344090A (zh) * | 2018-10-30 | 2019-02-15 | 深圳润迅数据通信有限公司 | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 |
CN109508304A (zh) * | 2018-11-14 | 2019-03-22 | 郑州云海信息技术有限公司 | 一种内存管理元数据的处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
面向云场景的大页性能评测及性能测试工具研究;吕颖;《中国优秀硕士学位论文全文数据库 信息科技辑》;20181215;I137-76 * |
Also Published As
Publication number | Publication date |
---|---|
CN110209603A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209603B (zh) | 地址转换方法、装置、设备及计算机可读存储介质 | |
CN108804350B (zh) | 一种内存访问方法及计算机系统 | |
US8296547B2 (en) | Loading entries into a TLB in hardware via indirect TLB entries | |
TWI661303B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
US9619401B2 (en) | Efficient memory management system for computers supporting virtual machines | |
CN106560798B (zh) | 一种内存访问方法、装置及计算机系统 | |
US11409663B2 (en) | Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes | |
US11334499B2 (en) | Method for locating metadata | |
US10740248B2 (en) | Methods and systems for predicting virtual address | |
US20200264984A1 (en) | Partial caching of media address mapping data | |
US20060259681A1 (en) | Method and apparatus for storing compressed code without an index table | |
CN115658564A (zh) | 地址变换高速缓存控制方法、装置、设备及介质 | |
CN115774683A (zh) | 用于超级用户模式中获取物理地址的方法及相应处理器 | |
US11216371B2 (en) | Cache memory and method for controlling the same | |
US11989136B2 (en) | Methods and systems for translating virtual addresses in a virtual memory based system | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及系统 | |
US8527736B1 (en) | Systems and methods for improving address translation speed | |
CN107766259B (zh) | 页表缓存的访问方法、页表缓存、处理器芯片和存储单元 | |
CN110968527A (zh) | Ftl提供的缓存 | |
US11422947B2 (en) | Determining page size via page table cache | |
US20050060515A1 (en) | Virtual memory translator for real-time operating systems | |
CN110362509B (zh) | 统一地址转换方法与统一地址空间 | |
CN114116524A (zh) | 一种创建安全页表及访问内存的方法及装置 | |
US11636045B2 (en) | Translating virtual addresses in a virtual memory based system |
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 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, 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 |