CN114201265A - 支持物理地址大于虚拟地址的虚拟内存管理方法及装置 - Google Patents
支持物理地址大于虚拟地址的虚拟内存管理方法及装置 Download PDFInfo
- Publication number
- CN114201265A CN114201265A CN202111509239.8A CN202111509239A CN114201265A CN 114201265 A CN114201265 A CN 114201265A CN 202111509239 A CN202111509239 A CN 202111509239A CN 114201265 A CN114201265 A CN 114201265A
- Authority
- CN
- China
- Prior art keywords
- address
- virtual
- page
- physical
- target
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title abstract description 72
- 238000013519 translation Methods 0.000 claims abstract description 172
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000013507 mapping Methods 0.000 claims abstract description 31
- 239000000872 buffer Substances 0.000 claims description 166
- 230000002159 abnormal effect Effects 0.000 claims description 17
- 238000012423 maintenance Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种支持物理地址大于虚拟地址的虚拟内存管理方法及装置。该方法包括:确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;通过访问虚拟内存管理单元,确定目标虚拟地址对应的目标物理地址,虚拟内存管理单元内置有将虚拟地址映射至物理地址的页表条目,目标虚拟地址位宽可能小于或者等于目标物理地址位宽,尤其在众核应用领域;最终将目标物理地址返回至相应的取指单元或访存单元,并确保正确性及有效性。采用本发明实施例,可在虚拟地址位宽小于物理地址位宽的情况下完成虚拟地址至物理地址的地址转译,并可确保众核架构在用户模式、监督模式以及机器模式等多种模式下有效工作,本发明的适用性高。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种支持物理地址大于虚拟地址的虚拟内存管理方法及装置。
背景技术
任何一个具有一定复杂度的计算机系统都是依靠运行在处理器上的多个进程协同工作来完成的,由于每个指令都拥有自己的虚拟地址,因此需要完成虚拟地址到物理地址的转换。
虽然在大部分的处理器架构中,虚拟地址位宽一般不小于物理地址位宽,但是在某些情况下会存在虚拟地址位宽小于物理地址位宽的问题,如RISC-V架构中Sv39模式(为RISC-V结构的64位系统提供的39位页式内存管理架构)和Sv48模式(为RISC-V结构的64位系统提供的48位页式内存管理架构)中存在虚拟地址位宽小于物理地址位宽的问题,进而在地址转译过程中容易导致系统出错乃至崩溃。
因此,如何在虚拟地址位宽小于物理地址位宽的情况下完成地址转译成为亟需解决的问题。
发明内容
本发明提供一种支持RISC-V及众核架构的虚拟内存管理方法及装置,可在虚拟地址位宽小于物理地址位宽的情况下完成虚拟地址至物理地址的地址转译,并可确保众核架构在用户模式、监督模式以及机器模式等多种模式下有效工作,本发明的适用性高。
第一方面,本发明实施例提供一种虚拟内存管理方法,该方法包括:
确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;
通过访问虚拟内存管理单元,确定上述目标虚拟地址对应的目标物理地址,上述虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表条目,上述目标虚拟地址位宽小于或者等于上述目标物理地址位宽;
返回上述目标物理地址。
第二方面,本发明实施例提供了一种虚拟内存管理装置,该装置包括:
指令获取或访存模块,用于确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;
虚拟地址确定模块,用于通过访问虚拟内存管理单元,确定上述目标虚拟地址对应的目标物理地址,上述虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表条目,上述目标虚拟地址位宽小于或者等于上述目标物理地址位宽;
地址返回模块,用于返回上述目标物理地址。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,该处理器和存储器相互连接;
上述存储器用于存储计算机程序;
上述处理器被配置用于在调用上述计算机程序时,执行本发明实施例提供的虚拟内存管理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现本发明实施例提供的虚拟内存管理方法。
基于本发明实施例提供的虚拟内存管理方法,可在虚拟地址位宽小于物理地址位宽的情况下完成虚拟地址至物理地址的地址转译,并可确保众核架构在用户模式、监督模式以及机器模式等多种模式下有效工作,从而降低系统因此出错的风险,提升系统稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理方法的流程示意图;
图2是本发明实施例提供的确定目标物理地址的一场景示意图;
图3是本发明实施例提供的回填页表目录的场景示意图;
图4是本发明实施例提供的确定目标物理地址的另一场景示意图;
图5是本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理方法装置的结构示意图;
图6是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理方法可适用于多种中央处理器(Central Processing Unit,CPU),如A510 CPU以及S710CPU等,可在RISC-V的Sv39模式或Sv48模式下确定虚拟地址对应的物理地址。
参见图1,图1是本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理方法的流程示意图。
如图1所示,本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理方法可包括如下步骤:
步骤S11、确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址。
具体地,取指地址为取指单元(Instruction Fetch Unit,IFU)发送的取值指令所对应的取指地址,访问地址为访存单元(Load Storage Unit,LSU)发送的访存指令所对应的地址。确定指令对应的目标虚拟地址。
其中,取指指令可以为取指单元从内部随机访问存储器(Internal RandomAccess Memory,IRAM)中按需获取的指令。
其中,访存指令可以为访存单元发送用于对数据存储系统的数据进行加载或存储的指令。如用于对DCache存储系统的数据进行加载或存储的访存指令。
进一步地,可获取在用户模式、监督模式或者机器模式中任一模式下的取指地址或访存地址,并确定获取到的取指地址或访存地址对应的目标虚拟地址。
步骤S12、通过访问虚拟内存管理单元,确定目标虚拟地址对应的目标物理地址。
在一些可行的实施方式中,虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表目录,因此在确定出目标虚拟地址之后,可基于虚拟内存管理单元存储的将虚拟地址映射至物理地址的页表目录,确定目标虚拟地址对应的目标物理地址。
其中,任一页表目录用于表示一个虚拟地址的地址标识与对应的物理地址的虚拟页码(Virtual Page Number,VPN)的映射关系。
基于此,在确定目标虚拟地址对应的目标物理地址时,可确定各页表目录中与目标虚拟地址对应的地址标识相匹配的虚拟页码,进而基于该虚拟页码确定目标虚拟地址对应的目标物理地址。即将虚拟地址每个页表目标中的虚拟页面进行比较,若命中对应的虚拟页码,则基于命中的虚拟页码确定目标虚拟地址对应的目标物理地址。
在一些可行的实施方式中,虚拟内存管理单元包括至少一个第一转译后备缓冲器(Translation Lookaside Buffer,TLB)和至少一个第二转译后备缓冲器,第一转译后备缓冲器可以为micro-TLB,第二转译后备缓冲器可以为joint-TLB。
其中,第一转译后备缓冲器存储有距离当前时间的预设时间区间内的虚拟地址映射至物理地址的页表条目,即第一转译后备缓冲器中存储有在一定时间内用于确定过虚拟地址对应的物理地址的页表条目。第二转译后备缓冲器存储有所有将虚拟地址映射至物理地址的页表条目,且第一转译后备缓冲器和第二转译后备缓冲器通过物理页面存储页表条目。
具体地,在用户模式或监督模式下,即在目标虚拟地址为在用户模式或者监督模式下确定的虚拟地址时,在通过访问虚拟内存管理单元,确定目标虚拟地址对应的目标物理地址时,可先基于多级索引依次访问全相连的第一转译后备缓冲器,以基于第一转译后备缓冲器的页表条目确定目标虚拟地址对应的目标物理地址。
若基于第一转译后备缓冲器的页表条目未确定出目标虚拟地址对应的目标物理地址,则基于上述多级索引依次访问多路组相连的第二转译后备缓冲器,以基于第二转译后备缓冲器的页表条目确定目标虚拟地址对应的目标物理地址。
若基于第二转译后备缓冲器的页表条目未确定出目标虚拟地址对应的目标物理地址,则基于页表遍历(page-table walk)机制确定出目标虚拟地址对应的目标物理地址。
其中,若基于第二转译后备缓冲器的页表条目确定出目标虚拟地址对应的目标物理地址,或者基于页表遍历机制确定出目标虚拟地址对应的目标物理地址,则将目标物理地址对应的目标页表条目回填至第一转译后备缓冲器。
参见图2,图2是本发明实施例提供的确定目标物理地址的一场景示意图。其中,图2提供了一种虚拟内存管理单元,包括多个第一转译后备缓冲器(Micro TLB)以及第二转译后备缓冲器(Joint-TLB)。
在获取取指单元发送的指令对应的取指地址并确定该取值地址的虚拟地址(为方便描述,以下称为第一虚拟地址)后,可访问虚拟内存管理单元的第一转译后备缓冲器,以基于第一转译后备缓冲器的页表条目确定第一虚拟地址对应的物理地址,若命中第一虚拟地址对应的物理地址,则将确定出的物理地址返回至取指单元。
若基于第一转译后备缓冲器的页表条目未命中第一虚拟地址对应的物理地址,则访问第二转译后备缓冲器,以基于第二转译后备缓冲器的页表条目确定第一虚拟地址对应的物理地址。若命中第一虚拟地址对应的物理地址,则将确定出的物理地址对应的页表条目回填至第一转译后备缓冲器,并通过第一转译后备缓冲器将该物理地址返回至取指单元。
若基于虚拟内存管理单元未确定出第一虚拟地址对应的物理地址,则基于执行单元执行页表遍历机制,以确定出第一虚拟地址对应的物理地址。
同理,在获取访存单元发送的指令对应的访存地址并确定该访存地址对应的虚拟地址(为方便描述,以下称为第二虚拟地址)后,可访问虚拟内存管理单元的第二转译后备缓冲器,以基于第二转译后备缓冲器的页表条目确定第二虚拟地址对应的物理地址,若命中第二虚拟地址对应的物理地址,则将确定出的物理地址返回至取指单元。
若基于第二转译后备缓冲器的页表条目未命中第二虚拟地址对应的物理地址,则访问第二转译后备缓冲器,以基于第二转译后备缓冲器的页表条目确定第二虚拟地址对应的物理地址。若命中第二虚拟地址对应的物理地址,则将确定出的物理地址对应的页表条目回填至第二转译后备缓冲器,并通过第二转译后备缓冲器将该物理地址返回至取指单元。
若基于虚拟内存管理单元未确定出第二虚拟地址对应的物理地址,则基于执行单元执行页表遍历机制,以确定出第二虚拟地址对应的物理地址。
其中,图2提供的虚拟内存管理单元还包括为物理内存空间指定读写和代码执行权限的物理内存保护单元(Physical Memory Protection,PMP),用于以较低的开销实现内存访问控制。
其中,图2提供的虚拟内存管理单元还包括与外部系统协助处理器连接的虚拟内存管理单元寄存器,用于参与地址转译过程。
在一些可行的实施方式中,上述多级索引可依次包括4KiB索引、2MiB索引和1GiB索引。其中,4KiB索引包括目标虚拟地址的20位至12位所对应的地址标识,2MiB索引包括目标虚拟地址的29位至21位所对应的地址标识,1GiB索引包括目标虚拟地址的38位至30位所对应的地址标识。
其中,第一转译后备缓冲器和第二转译后备缓冲器的任一页表条目用于表示一个虚拟地址的地址标识与对应的物理地址的虚拟页码的映射关系,也即每一页表条目包括一个虚拟地址的地址标识与物理地址的虚拟页码的组合,从而建立该虚拟地址和该物理地址的映射关系。
具体地,可基于4KiB索引访问第一转译后备缓冲器,并将4KiB索引对应的地址标识与第一转译后备缓冲器的各页表条目进行匹配。若第一转译后备缓冲器的各页表条目中存在包括4KiB索引对应的地址标识的页表条目,则可确定第一转译后备缓冲器的各页表条目中包括与4KiB索引对应的地址标识相匹配的第一虚拟页码,进而基于第一虚拟页码确定目标虚拟地址对应的目标物理地址。反之,则可确定基于4KiB索引无法确定出目标虚拟地址对应的目标物理地址。
在基于4KiB索引无法确定出目标虚拟地址对应的目标物理地址的情况下,即第一转译后备缓冲器的页表条目中不包括上述第一虚拟页码的情况下,则进而可基于2MiB索引访问第一转译后备缓冲器,并将2MiB索引对应的地址标识与第一转译后备缓冲器的各页表条目进行匹配。若第一转译后备缓冲器的各页表条目中存在包括2MiB索引对应的地址标识的页表条目,则可确定第一转译后备缓冲器的各页表条目中包括与2MiB索引对应的地址标识相匹配的第二虚拟页码,进而基于第二虚拟页码确定目标虚拟地址对应的目标物理地址。反之,则可确定基于2MiB索引无法确定出目标虚拟地址对应的目标物理地址。
在基于2MiB索引无法确定出目标虚拟地址对应的目标物理地址的情况下,即第一转译后备缓冲器的页表条目中不包括上述第二虚拟页码的情况下,则进而可基于1GiB索引访问第一转译后备缓冲器,并将1GiB索引对应的地址标识与第一转译后备缓冲器的各页表条目进行匹配。若第一转译后备缓冲器的各页表条目中存在包括1GiB索引对应的地址标识的页表条目,则可确定第一转译后备缓冲器的各页表条目中包括与1GiB索引对应的地址标识相匹配的第三虚拟页码,进而基于第三虚拟页码确定目标虚拟地址对应的目标物理地址。反之,则可确定基于1GiB索引无法确定出目标虚拟地址对应的目标物理地址。
在基于上述多级索引访问第一转译后备缓冲器无法确定出上述目标物理地址的情况下,可进一步基于多级索引访问第二转译后备缓冲器。
即基于4KiB索引访问第二转译后备缓冲器,并将4KiB索引对应的地址标识与第二转译后备缓冲器的各页表条目进行匹配。若第二转译后备缓冲器的各页表条目中存在包括4KiB索引对应的地址标识的页表条目,则可确定第二转译后备缓冲器的各页表条目中包括与4KiB索引对应的地址标识相匹配的第第四虚拟页码,进而基于第四虚拟页码确定目标虚拟地址对应的目标物理地址。反之,则可确定基于4KiB索引无法确定出目标虚拟地址对应的目标物理地址。
在基于4KiB索引无法确定出目标虚拟地址对应的目标物理地址的情况下,即第二转译后备缓冲器的页表条目中不包括上述第四虚拟页码的情况下,则进而可基于2MiB索引访问第二转译后备缓冲器,并将2MiB索引对应的地址标识与第二转译后备缓冲器的各页表条目进行匹配。若第二转译后备缓冲器的各页表条目中存在包括2MiB索引对应的地址标识的页表条目,则可确定第二转译后备缓冲器的各页表条目中包括与2MiB索引对应的地址标识相匹配的第五虚拟页码,进而基于第五虚拟页码确定目标虚拟地址对应的目标物理地址。反之,则可确定基于2MiB索引无法确定出目标虚拟地址对应的目标物理地址。
在基于2MiB索引无法确定出目标虚拟地址对应的目标物理地址的情况下,即第二转译后备缓冲器的页表条目中不包括上述第五虚拟页码的情况下,则进而可基于1GiB索引访问第二转译后备缓冲器,并将1GiB索引对应的地址标识与第二转译后备缓冲器的各页表条目进行匹配。若第二转译后备缓冲器的各页表条目中存在包括1GiB索引对应的地址标识的页表条目,则可确定第二转译后备缓冲器的各页表条目中包括与1GiB索引对应的地址标识相匹配的第六虚拟页码,进而基于第六虚拟页码确定目标虚拟地址对应的目标物理地址。反之,则可确定基于1GiB索引无法确定出目标虚拟地址对应的目标物理地址。
若基于多级索引访问第二转译后备缓冲器仍无法确定出目标虚拟地址对应的目标物理地址,则可基于页表遍历机制来确定上述目标物理地址。
基于上述方式可实现软硬件协同机制来进行转译后备缓冲器的填充,从而可提升页表结构的灵活性,而且也降低了硬件的成本。
参加图3,图3是本发明实施例提供的回填页表目录的场景示意图。如图3所示,多级索引依次包括4KiB索引(Index_4KiB)、2MiB索引(Index_2MiB)和1GiB索引(Index_1GiB),4KiB索引、2MiB索引和1GiB索引分别包括8位地址标识,具体为目标虚拟地址的20位至12位所对应的地址标识、29位至21位所对应的地址标识以及38位至30位所对应的地址标识。
在基于第一转译后备缓冲器(Micro TLB)未确定出目标虚拟地址对应的目标物理地址的情况下,可基于多级索引依次访问第二转译后备缓冲器(Joint TLB)的页表目录。即基于4KiB索引访问第二转译后备缓冲器中对应于4KiB索引的有效(Valid)页表目录,假设基于4KiB索引命中虚拟页码(VPN)为A的页表目录,则基于VPN A确定目标虚拟地址对应的目标物理地址,并将包括VPN A的目标页表条目回填至第一转译后备缓冲器。在基于1GiB索引访问第二转译后备缓冲器时,可访问对应于1GiB索引的有效(Valid)页表目录,假设基于1GiB索引命中虚拟页码(VPN)为X的页表目录,则基于VPN X确定目标虚拟地址对应的目标物理地址,并将包括VPN X的目标页表条目回填至第一转译后备缓冲器。
在一些可行的实施方式中,若基于多级索引访问第一转译后备缓冲器未确定出目标虚拟地址对应的目标物理地址,则对第一转译后备缓冲器中最久未使用的用于存储页表条目的物理页面进行替换。具体可基于最近未使用算法确定第一转译后备缓冲器中最久未使用的物理页面。
在一些可行的实施方式中,通过访问虚拟内存管理单元,确定目标虚拟地址对应的目标物理地址的过程中,在读取虚拟内存管理单元中的任一页表条目时,可对该页表条目进行奇偶校验。其中,虚拟内存管理单元中的各页表条目在写入时需要进行奇偶编码。
即在读取任一命中的页表条目时,对该页表条目进行奇偶校验,若校验结果中包括错误信息,则对该错误信息进行上报,并同时将该页表条目标记为无效信息。
在此情况下,可认为未确定出命中的页表条目,此时可基于页表遍历机制确定目标虚拟地址对应的目标物理地址。
同时,还可以获取确定目标物理地址过程中发生的错误信息及其位置信息,如奇偶校验过程中产生的错误信息以及产生错误信息的相关位置,进而基于此进行错误修复。
在一些可行的实施方式中,在机器模式下,即目标虚拟地址为在机器模式下确定的虚拟地址时,可获取配置寄存器提供的47位至39位的额外物理地址位宽,并将额外物理地址位宽发送至虚拟内存管理单元,以基于额外物理地址位宽构建0位至47位的虚拟地址与0位至47位物理地址的映射关系。进而通过访问虚拟内存管理单元,基于虚拟内存管理单元存储的虚拟地址与物理地址的映射关系,确定目标虚拟地址对应的目标物理地址。
参见图4,图4是本发明实施例提供的确定目标物理地址的另一场景示意图。图4同样提供了一种虚拟内存管理单元,包括基于用户模式或监督模式接收虚拟地址的相关模块,以及基于机器模式确定物理地址的相关模块。
基于片上系统(System-on-Chip,SoC)管理单元中的配置寄存器提供额外物理地址位宽exPA[47:39]。对于取指单元发送的指令所对应的虚拟地址,其位宽为39位(IFU_VA[38:0]),将其与额外物理地址位宽进行拼接后可得到取指单元的指令的0位至47位的虚拟地址与0位至47位物理地址的映射关系IFU_PA[47:0]={exPA[47:39],IFU_VA[38:0]}。对于访存单元发送的关于DCache数据的指令所对应的虚拟地址,基于额外物理地址位宽可同样得到访存单元的指令的0位至47位的虚拟地址与DCache数据的0位至47位物理地址的映射关系:DCache_PA[47:0]=LSU_AG_VA[47:0]。
其中,图4提供的虚拟内存管理单元还包括与外部系统协助处理器连接的虚拟内存管理单元寄存器,以参与地址转译过程。
步骤S13、返回目标物理地址。
在一些可行的实施方式中,在确定目标虚拟地址对应的目标物理地址之后,若目标虚拟地址为取值地址对应的虚拟地址,则将该目标物理地址返回至取指单元。若目标虚拟地址为访存地址对应的虚拟地址,则将该目标物理地址返回至访存单元。
在一些可行的实施方式中,为满足操作系统的内存管理要求以提高虚拟内存管理单元及高速缓存的一致性,还可通过互连总线广播转译后备缓冲器维护信息,以使得互连总线上的CPU内核和其他部件基于转译后备缓冲器维护信息,对各自的转译后备缓冲器进行维护。
其中,上述转译后备缓冲器维护信息可包括指定的地址空间标识符(AddressSpace Identifier,ASID)、指定的用于存储页表条目的物理页面的基地址以及指定的虚拟地址中的至少一项。
在本发明中,可向虚拟内存管理单元发送转译后备缓冲器维护信息,以使虚拟内存管理单元基于转译后备缓冲器维护信息对转译后备缓冲器进行维护。基于上述实现方式,可在无软件干预的情况下由硬件执行,从而可使得转译后备缓冲器中的页表条目得到维护,以快速将虚拟地址转换为物理地址。
其中,本发明实施例中的虚拟内存管理单元中的任一转译后备缓冲器可支持16位的地址空间标识符,从而延长转译后备缓冲器的地址空间标识符的溢出时长,减少转译后备缓冲器的刷新次数。
在一些可行的实施方式中,虚拟内存管理单元中的各页表条目存储于物理页面之中,在读取物理页面中的数据(如页表条目)或者向物理页面中写入数据时,可进行相应的权限验证。
具体地,若所访问的物理页面为共享页面,则允许访问该物理页面。若所访问的物理页面为非共享页面,则不允许访问该物理页面,并且在访问该物理页面时触发异常提示。
其中,可获取用于表征上述物理页面共享属性的字段(或标志位),基于该字段(或标志位)来确定上述物理页面是否为共享页面。
可选地,若所访问的物理页面处于安全状态,即该物理页面属于可信世界,则允许访问该物理页面。若所访问的物理页面处于非安全状态,即该物理页面属于非可信世界,则不允许访问该物理页面,并且在访问该物理页面时触发异常提示。
其中,可获取用于表征上述物理页面属于可信世界或者非可信世界的字段(或标志位),基于该字段(或标志位)确定上述物理页面处于安全状态或者非安全状态。
可选地,若所访问的物理页面允许被改写,则允许向该物理页面写入数据。若所访问的物理页面不允许被改写,则向该物理页面写入数据时触发异常提示,如触发PageFault异常提示。
其中,可获取用于表征上述物理页面是否允许被改写的字段(或标志位),基于该字段(或标志位)确定上述物理页面是否允许被改写。
可选地,若所访问的物理页面允许被访问,则允许访问该物理页面。若所访问的物理页面不允许被访问,则不允许访问该物理页面,并在访问该物理页面时触发异常提示,如触发Page Fault异常提示。
其中,可获取用于表征上述物理页面是否可访问的标志位(或字段),基于该标志位(或字段)确定上述物理页面是否允许被访问。
作为一示例,上述标志位为0时表示物理页面不允许被访问,在此情况下无法访问上述物理页面。
可选地,可确定所访问的物理页面对应的共享进程,并确定访问该物理页面的进程是否属于该物理页面对应的共享进程。若属于该物理页面对应的共享进程,则允许访问该物理页面,若不属于该物理页面对应的共享进程,则不允许访问该物理页面,并在访问该物理页面时触发异常提示。
其中,可获取上述物理页面对应的全局页面标识字段,基于该字段确定上述物理页面对应于多个共享进程。
其中,在确定访问上述物理页面的访问进行是否属于上述物理页面对应的共享进程时,可通过各自的进程号ASID确定。
可选地,可确定所访问的物理页面所对应的第一模式和第二模式,第一模式为该物理页面不允许被访问时对应的运行模式,第二模式为该物理页面允许被访问时对应的运行模式,且第二模式为用户模式、监督模式或机器模式中除第一模式以外的其他模式,或者为用户模式、监督模式或者机器模式中指定的模式,在此不限制。
若在第一模式访问上述物理页面,则触发异常提示。若在第二模式访问上述物理页面,则允许访问上述物理页面。
作为一示例,上述第一模式为用户模式,第二模式为其他模式,若在用户模式访问上述物理页面,则触发异常提示。
其中,可获取上述物理页面对应于各运行模式的访问标识位(或字段),基于运行各模式对应的访问标识位(或字段)确定在对应的运行模式下上述物理页面是否允许被访问,从而得到上述物理页面对应的第一模式和第二模式。
可选地,若所访问的物理页面在内存中存在预设标识位,则在访问该物理页面时,触发异常提示。若不存在上述预设标识位,则允许访问该物理页面。
其中,上述预设标识位为预先在内存中为上述物理页面分配的标识位。
基于本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理方法,可在虚拟地址位宽小于物理地址位宽的情况下完成虚拟地址至物理地址的地址转译,并可确保众核架构在用户模式、监督模式以及机器模式等多种模式下有效工作,从而降低系统因此出错的风险,提升系统稳定性。同时可在访问虚拟内存管理单元中的物理页面中的数据(如页表条目)或者向物理页面中写入数据时,可进行相应的权限验证,进一步提升系统安全性。
参见图5,图5是本发明实施例提供的支持RISC-V及众核架构的虚拟内存管理装置的结构示意图。本发明实施例提供的装置包括:
指令获取或访存模块51,用于确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;
虚拟地址确定模块52,用于通过访问虚拟内存管理单元,确定上述目标虚拟地址对应的目标物理地址,上述虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表条目,上述目标虚拟地址位宽小于或者等于上述目标物理地址位宽;
地址返回模块53,用于返回上述目标物理地址。
在一些可行的实施方式中,上述虚拟内存管理单元包括第一转译后备缓冲器和第二转译后备缓冲器,上述第一转译后备缓冲器存储有将距离当前时间的预设时间区间内的虚拟地址映射至物理地址的页表条目,上述第二转译后备缓冲器存储有将所有虚拟地址映射至物理地址的页表条目;
在上述用户模式或上述监督模式下,上述虚拟地址确定模块52,用于:
基于多级索引依次访问上述第一转译后备缓冲器,以基于上述第一转译后备缓冲器的页表条目确定上述目标虚拟地址对应的目标物理地址;
若未确定出上述目标物理地址,则基于上述多级索引依次访问上述第二转译后备缓冲器,以基于上述第二转译后备缓冲器的页表条目确定上述目标物理地址;
若未确定出上述目标物理地址,则基于页表遍历机制确定上述目标物理地址。
在一些可行的实施方式中,任一上述页表条目用于表示一个虚拟地址的地址标识与对应的物理地址的虚拟页码的映射关系,上述多级索引依次包括4KiB索引、2MiB索引和1GiB索引,上述4KiB索引包括上述目标虚拟地址的20位至12位所对应的地址标识,上述2MiB索引包括上述目标虚拟地址的29位至21位所对应的地址标识,上述1GiB索引包括上述目标虚拟地址的38位至30位所对应的地址标识;
上述虚拟地址确定模块52,用于:
基于上述4KiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与上述4KiB索引对应的地址标识相匹配的第一虚拟页码,则基于上述第一虚拟页码确定上述目标物理地址;
若该转译后备缓冲器的页表条目中不包括上述第一虚拟页码,则基于上述2MiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与上述2MiB索引对应的地址标识相匹配的第二虚拟页码,则基于上述第二虚拟页码确定上述目标物理地址;
若该转译后备缓冲器的页表条目中不包括上述第二虚拟页码,则基于上述1GiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与上述1GiB索引对应的地址标识相匹配的第三虚拟页码,则基于上述第三虚拟页码确定上述目标物理地址。
在一些可行的实施方式中,上述虚拟地址确定模块52,还用于:
若基于上述第二转译后备缓冲器的页表条目或基于页表遍历机制确定出上述目标物理地址,则将上述目标物理地址对应的目标页表条目回填至上述第一转译后备缓冲器。
在一些可行的实施方式中,上述虚拟地址确定模块52,还用于:
若基于上述第一转译后备缓冲器的页表条目未确定出上述目标物理地址,则对上述第一转译后备缓冲器中最久未使用的用于存储页表条目的物理页面进行替换。
在一些可行的实施方式中,在上述机器模式下,上述虚拟地址确定模块52,还用于:
获取配置寄存器提供的47位至39位的额外物理地址位宽;
将上述额外物理地址位宽发送至虚拟内存管理单元,以基于上述额外物理地址位宽构建0位至47位的虚拟地址与0位至47位物理地址的映射关系;
通过访问虚拟内存管理单元,基于上述虚拟内存管理单元存储的虚拟地址与物理地址的映射关系,确定上述目标虚拟地址对应的目标物理地址。
在一些可行的实施方式中,上述虚拟地址确定模块52,还用于:
向上述虚拟内存管理单元发送转译后备缓冲器维护信息,以使上述虚拟内存管理单元基于上述转译后备缓冲器维护信息对转移后备缓冲器进行维护;
上述转译后备缓冲器维护信息包括指定的地址空间标识符、指定的用于存储页表条目的物理页面的基地址以及指定的虚拟地址中的至少一项。
在一些可行的实施方式中,上述第一转译后备缓冲器和上述第二转译后备缓冲器支持16位的地址空间标识符。
在一些可行的实施方式中,上述页表条目存储于上述虚拟内存管理单元中的物理页面中,上述虚拟地址确定模块52,还用于:
若上述物理页面为共享页面,则允许访问上述物理页面,若上述物理页面为非共享页面,则访问上述物理页面时触发异常提示;
若上述物理页面处于安全状态,则允许访问上述物理页面,若上述物理页面处于非安全状态,则访问上述物理页面时触发异常提示;
若上述物理页面允许被改写,则允许向上述物理页面写入数据,若上述物理页面不允许写入数据,则向上述物理页面写入数据时触发异常提示;
若上述物理页面允许被访问,则允许访问上述物理页面,若上述物理页面不允许被访问,则在访问上述物理页面时触发异常提示;
若访问上述物理页面的访问进程属于上述物理页面对应的共享进程,则允许访问上述物理页面,若不属于上述共享进程,则不允许访问上述物理页面;
若在第一模式访问上述物理页面,则触发异常提示,若在第二模式访问上述物理页面,则允许访问上述物理页面,上述第一模式为上述物理页面不允许被访问时对应的运行模式,上述第二模式为上述物理页面允许被访问时对应的运行模式;
若上述物理页面在内存中存在预设标识位,则在访问上述物理页面时,触发异常提示。
在一些可行的实施方式中,上述虚拟地址确定模块52,还用于:
在读取任一上述页表条目时,对该页表条目进行奇偶校验;
若校验结果中包括错误信息,则上报上述错误信息,并将该页表条目标记为无效信息;
基于页表遍历机制确定上述目标物理地址。
具体实现中,上述装置可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
参见图6,图6是本发明实施例提供的电子设备的结构示意图。如图6所示,本实施例中的电子设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述电子设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图6所示的电子设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;
通过访问虚拟内存管理单元,确定上述目标虚拟地址对应的目标物理地址,上述虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表条目,上述目标虚拟地址位宽小于或者等于上述目标物理地址位宽;
返回上述目标物理地址。
在一些可行的实施方式中,上述虚拟内存管理单元包括第一转译后备缓冲器和第二转译后备缓冲器,上述第一转译后备缓冲器存储有将距离当前时间的预设时间区间内的虚拟地址映射至物理地址的页表条目,上述第二转译后备缓冲器存储有将所有虚拟地址映射至物理地址的页表条目;
在上述用户模式或上述监督模式下,上述处理器1001用于:
基于多级索引依次访问上述第一转译后备缓冲器,以基于上述第一转译后备缓冲器的页表条目确定上述目标虚拟地址对应的目标物理地址;
若未确定出上述目标物理地址,则基于上述多级索引依次访问上述第二转译后备缓冲器,以基于上述第二转译后备缓冲器的页表条目确定上述目标物理地址;
若未确定出上述目标物理地址,则基于页表遍历机制确定上述目标物理地址。
在一些可行的实施方式中,任一上述页表条目用于表示一个虚拟地址的地址标识与对应的物理地址的虚拟页码的映射关系,上述多级索引依次包括4KiB索引、2MiB索引和1GiB索引,上述4KiB索引包括上述目标虚拟地址的20位至12位所对应的地址标识,上述2MiB索引包括上述目标虚拟地址的29位至21位所对应的地址标识,上述1GiB索引包括上述目标虚拟地址的38位至30位所对应的地址标识;
上述处理器1001用于:
基于上述4KiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与上述4KiB索引对应的地址标识相匹配的第一虚拟页码,则基于上述第一虚拟页码确定上述目标物理地址;
若该转译后备缓冲器的页表条目中不包括上述第一虚拟页码,则基于上述2MiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与上述2MiB索引对应的地址标识相匹配的第二虚拟页码,则基于上述第二虚拟页码确定上述目标物理地址;
若该转译后备缓冲器的页表条目中不包括上述第二虚拟页码,则基于上述1GiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与上述1GiB索引对应的地址标识相匹配的第三虚拟页码,则基于上述第三虚拟页码确定上述目标物理地址。
在一些可行的实施方式中,上述处理器1001还用于:
若基于上述第二转译后备缓冲器的页表条目或基于页表遍历机制确定出上述目标物理地址,则将上述目标物理地址对应的目标页表条目回填至上述第一转译后备缓冲器。
在一些可行的实施方式中,上述处理器1001还用于:
若基于上述第一转译后备缓冲器的页表条目未确定出上述目标物理地址,则对上述第一转译后备缓冲器中最久未使用的用于存储页表条目的物理页面进行替换。
在一些可行的实施方式中,在上述机器模式下,上述处理器1001用于:
获取配置寄存器提供的47位至39位的额外物理地址位宽;
将上述额外物理地址位宽发送至虚拟内存管理单元,以基于上述额外物理地址位宽构建0位至47位的虚拟地址与0位至47位物理地址的映射关系;
通过访问虚拟内存管理单元,基于上述虚拟内存管理单元存储的虚拟地址与物理地址的映射关系,确定上述目标虚拟地址对应的目标物理地址。
在一些可行的实施方式中,上述处理器1001还用于:
向上述虚拟内存管理单元发送转译后备缓冲器维护信息,以使上述虚拟内存管理单元基于上述转译后备缓冲器维护信息对转移后备缓冲器进行维护;
上述转译后备缓冲器维护信息包括指定的地址空间标识符、指定的用于存储页表条目的物理页面的基地址以及指定的虚拟地址中的至少一项。
在一些可行的实施方式中,上述第一转译后备缓冲器和上述第二转译后备缓冲器支持16位的地址空间标识符。
在一些可行的实施方式中,上述页表条目存储于上述虚拟内存管理单元中的物理页面中,上述处理器1001还用于:
若上述物理页面为共享页面,则允许访问上述物理页面,若上述物理页面为非共享页面,则访问上述物理页面时触发异常提示;
若上述物理页面处于安全状态,则允许访问上述物理页面,若上述物理页面处于非安全状态,则访问上述物理页面时触发异常提示;
若上述物理页面允许被改写,则允许向上述物理页面写入数据,若上述物理页面不允许写入数据,则向上述物理页面写入数据时触发异常提示;
若上述物理页面允许被访问,则允许访问上述物理页面,若上述物理页面不允许被访问,则在访问上述物理页面时触发异常提示;
若访问上述物理页面的访问进程属于上述物理页面对应的共享进程,则允许访问上述物理页面,若不属于上述共享进程,则不允许访问上述物理页面;
若在第一模式访问上述物理页面,则触发异常提示,若在第二模式访问上述物理页面,则允许访问上述物理页面,上述第一模式为上述物理页面不允许被访问时对应的运行模式,上述第二模式为上述物理页面允许被访问时对应的运行模式;
若上述物理页面在内存中存在预设标识位,则在访问上述物理页面时,触发异常提示。
在一些可行的实施方式中,上述处理器1001还用于:
在读取任一上述页表条目时,对该页表条目进行奇偶校验;
若校验结果中包括错误信息,则上报上述错误信息,并将该页表条目标记为无效信息;
基于页表遍历机制确定上述目标物理地址。
应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备1000可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图1中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一装置或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(randomaccessmemory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本发明实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图1中各个步骤所提供的方法。
本发明的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或电子设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或电子设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所揭露的仅为本发明较佳实施例而已,不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (13)
1.一种虚拟内存管理方法,其特征在于,所述方法包括:
确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;
通过访问虚拟内存管理单元,确定所述目标虚拟地址对应的目标物理地址,所述虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表条目,所述目标虚拟地址位宽小于或者等于所述目标物理地址位宽;
返回所述目标物理地址。
2.根据权利要求1所述的方法,其特征在于,所述虚拟内存管理单元包括第一转译后备缓冲器和第二转译后备缓冲器,所述第一转译后备缓冲器存储有将距离当前时间的预设时间区间内的虚拟地址映射至物理地址的页表条目,所述第二转译后备缓冲器存储有将所有虚拟地址映射至物理地址的页表条目;
在所述用户模式或所述监督模式下,所述通过访问虚拟内存管理单元,确定所述目标虚拟地址对应的目标物理地址,包括:
基于多级索引依次访问所述第一转译后备缓冲器,以基于所述第一转译后备缓冲器的页表条目确定所述目标虚拟地址对应的目标物理地址;
若未确定出所述目标物理地址,则基于所述多级索引依次访问所述第二转译后备缓冲器,以基于所述第二转译后备缓冲器的页表条目确定所述目标物理地址;
若未确定出所述目标物理地址,则基于页表遍历机制确定所述目标物理地址。
3.根据权利要求2所述的方法,其特征在于,任一所述页表条目用于表示一个虚拟地址的地址标识与对应的物理地址的虚拟页码的映射关系,所述多级索引依次包括4KiB索引、2MiB索引和1GiB索引,所述4KiB索引包括所述目标虚拟地址的20位至12位所对应的地址标识,所述2MiB索引包括所述目标虚拟地址的29位至21位所对应的地址标识,所述1GiB索引包括所述目标虚拟地址的38位至30位所对应的地址标识;
基于多级索引依次访问所述第一转译后备缓冲器或所述第二转译后备缓冲器中的任一转译后备缓冲器,以基于所述该转译后备缓冲器的页表条目确定所述目标虚拟地址对应的目标物理地址,包括:
基于所述4KiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与所述4KiB索引对应的地址标识相匹配的第一虚拟页码,则基于所述第一虚拟页码确定所述目标物理地址;
若该转译后备缓冲器的页表条目中不包括所述第一虚拟页码,则基于所述2MiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与所述2MiB索引对应的地址标识相匹配的第二虚拟页码,则基于所述第二虚拟页码确定所述目标物理地址;
若该转译后备缓冲器的页表条目中不包括所述第二虚拟页码,则基于所述1GiB索引访问该转译后备缓冲器,若该转译后备缓冲器的页表条目中包括与所述1GiB索引对应的地址标识相匹配的第三虚拟页码,则基于所述第三虚拟页码确定所述目标物理地址。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若基于所述第二转译后备缓冲器的页表条目或基于页表遍历机制确定出所述目标物理地址,则将所述目标物理地址对应的目标页表条目回填至所述第一转译后备缓冲器。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若基于所述第一转译后备缓冲器的页表条目未确定出所述目标物理地址,则对所述第一转译后备缓冲器中最久未使用的用于存储页表条目的物理页面进行替换。
6.根据权利要求2所述的方法,其特征在于,在所述机器模式下,所述通过访问虚拟内存管理单元,确定所述目标虚拟地址对应的目标物理地址,包括:
获取配置寄存器提供的47位至39位的额外物理地址位宽;
将所述额外物理地址位宽发送至虚拟内存管理单元,以基于所述额外物理地址位宽构建0位至47位的虚拟地址与0位至47位物理地址的映射关系;
通过访问虚拟内存管理单元,基于所述虚拟内存管理单元存储的虚拟地址与物理地址的映射关系,确定所述目标虚拟地址对应的目标物理地址。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
向所述虚拟内存管理单元发送转译后备缓冲器维护信息,以使所述虚拟内存管理单元基于所述转译后备缓冲器维护信息对转译后备缓冲器进行维护;
所述转译后备缓冲器维护信息包括指定的地址空间标识符、指定的用于存储页表条目的物理页面的基地址以及指定的虚拟地址中的至少一项。
8.根据权利要求2所述的方法,其特征在于,所述第一转译后备缓冲器和所述第二转译后备缓冲器支持16位的地址空间标识符。
9.根据权利要求1所述的方法,其特征在于,所述页表条目存储于所述虚拟内存管理单元中的物理页面中,所述方法还包括以下至少一项:
若所述物理页面为共享页面,则允许访问所述物理页面,若所述物理页面为非共享页面,则访问所述物理页面时触发异常提示;
若所述物理页面处于安全状态,则允许访问所述物理页面,若所述物理页面处于非安全状态,则访问所述物理页面时触发异常提示;
若所述物理页面允许被改写,则允许向所述物理页面写入数据,若所述物理页面不允许写入数据,则向所述物理页面写入数据时触发异常提示;
若所述物理页面允许被访问,则允许访问所述物理页面,若所述物理页面不允许被访问,则在访问所述物理页面时触发异常提示;
若访问所述物理页面的访问进程属于所述物理页面对应的共享进程,则允许访问所述物理页面,若不属于所述共享进程,则不允许访问所述物理页面;
若在第一模式访问所述物理页面,则触发异常提示,若在第二模式访问所述物理页面,则允许访问所述物理页面,所述第一模式为所述物理页面不允许被访问时对应的运行模式,所述第二模式为所述物理页面允许被访问时对应的运行模式;
若所述物理页面在内存中存在预设标识位,则在访问所述物理页面时,触发异常提示。
10.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在读取任一所述页表条目时,对该页表条目进行奇偶校验;
若校验结果中包括错误信息,则上报所述错误信息,并将该页表条目标记为无效信息;
基于页表遍历机制确定所述目标物理地址。
11.一种虚拟内存管理装置,其特征在于,所述装置包括:
指令获取或访存模块,确定用户模式、监督模式或机器模式中任一模式下取指地址或访存地址对应的目标虚拟地址;
虚拟地址确定模块,用于通过访问虚拟内存管理单元,确定所述目标虚拟地址对应的目标物理地址,所述虚拟内存管理单元存储有将虚拟地址映射至物理地址的页表条目,所述目标虚拟地址位宽小于或者等于所述目标物理地址位宽;
地址返回模块,用于返回所述目标物理地址。
12.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序;
所述处理器被配置用于在调用所述计算机程序时,执行如权利要求1至10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至10任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111509239.8A CN114201265A (zh) | 2021-12-10 | 2021-12-10 | 支持物理地址大于虚拟地址的虚拟内存管理方法及装置 |
US18/078,539 US20230289295A1 (en) | 2021-12-10 | 2022-12-09 | Virtual Memory Management Method and Apparatus Supporting Physical Addresses Larger Than Virtual Addresses |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111509239.8A CN114201265A (zh) | 2021-12-10 | 2021-12-10 | 支持物理地址大于虚拟地址的虚拟内存管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201265A true CN114201265A (zh) | 2022-03-18 |
Family
ID=80652360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111509239.8A Pending CN114201265A (zh) | 2021-12-10 | 2021-12-10 | 支持物理地址大于虚拟地址的虚拟内存管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230289295A1 (zh) |
CN (1) | CN114201265A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114781323A (zh) * | 2022-04-24 | 2022-07-22 | 苏州睿芯集成电路科技有限公司 | Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法 |
CN116383102A (zh) * | 2023-05-30 | 2023-07-04 | 北京微核芯科技有限公司 | 转译后备缓冲器访问方法、装置、设备及存储介质 |
CN118138559A (zh) * | 2024-03-12 | 2024-06-04 | 沐曦科技(北京)有限公司 | 一种虚拟gpu地址转换系统 |
WO2024152588A1 (zh) * | 2023-01-20 | 2024-07-25 | 华为技术有限公司 | 内存访问的页错误处理方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118095156B (zh) * | 2024-04-29 | 2024-07-05 | 北京燧原智能科技有限公司 | 一种内存管理单元mmu电路的验证方法、装置、设备及介质 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5577231A (en) * | 1994-12-06 | 1996-11-19 | International Business Machines Corporation | Storage access authorization controls in a computer system using dynamic translation of large addresses |
US6026476A (en) * | 1996-03-19 | 2000-02-15 | Intel Corporation | Fast fully associative translation lookaside buffer |
US7343469B1 (en) * | 2000-09-21 | 2008-03-11 | Intel Corporation | Remapping I/O device addresses into high memory using GART |
US7117284B2 (en) * | 2002-11-18 | 2006-10-03 | Arm Limited | Vectored interrupt control within a system having a secure domain and a non-secure domain |
US7171539B2 (en) * | 2002-11-18 | 2007-01-30 | Arm Limited | Apparatus and method for controlling access to a memory |
US20050182903A1 (en) * | 2004-02-12 | 2005-08-18 | Mips Technologies, Inc. | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer |
US7386700B2 (en) * | 2004-07-30 | 2008-06-10 | Sandisk Il Ltd | Virtual-to-physical address translation in a flash file system |
US7558939B2 (en) * | 2005-03-08 | 2009-07-07 | Mips Technologies, Inc. | Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor |
US8429378B2 (en) * | 2010-07-06 | 2013-04-23 | Qualcomm Incorporated | System and method to manage a translation lookaside buffer |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
WO2013067375A1 (en) * | 2011-11-02 | 2013-05-10 | Huawei Technologies, Co., Ltd. | Uncached static short address translation table in the cache coherent computer system |
WO2013119211A1 (en) * | 2012-02-07 | 2013-08-15 | Intel Corporation | A method and apparatus for supporting address translation in a multiprocessor virtual machine environment using tracking data to eliminate interprocessor interrupts |
US8984254B2 (en) * | 2012-09-28 | 2015-03-17 | Freescale Semiconductor, Inc. | Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance |
US9703722B2 (en) * | 2014-11-14 | 2017-07-11 | Cavium, Inc. | Method and system for compressing data for a translation look aside buffer (TLB) |
US9514061B1 (en) * | 2015-05-20 | 2016-12-06 | Qualcomm Incorporated | Method and apparatus for cache tag compression |
US10339068B2 (en) * | 2017-04-24 | 2019-07-02 | Advanced Micro Devices, Inc. | Fully virtualized TLBs |
US10592428B1 (en) * | 2017-09-27 | 2020-03-17 | Amazon Technologies, Inc. | Nested page tables |
US20190188154A1 (en) * | 2017-12-15 | 2019-06-20 | Intel Corporation | Translation pinning in translation lookaside buffers |
US10599437B2 (en) * | 2018-01-19 | 2020-03-24 | Marvell World Trade Ltd. | Managing obscured branch prediction information |
US10545877B2 (en) * | 2018-04-05 | 2020-01-28 | Arm Limited | Apparatus and method for accessing an address translation cache |
JP7056391B2 (ja) * | 2018-06-08 | 2022-04-19 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
US11847064B2 (en) * | 2018-12-07 | 2023-12-19 | International Business Machines Corporation | Buffer and methods for address translations in a processor |
US11010241B2 (en) * | 2019-01-09 | 2021-05-18 | Arm Limited | Translation protection in a data processing apparatus |
US11687466B1 (en) * | 2022-05-12 | 2023-06-27 | Ventana Micro Systems Inc. | Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions |
-
2021
- 2021-12-10 CN CN202111509239.8A patent/CN114201265A/zh active Pending
-
2022
- 2022-12-09 US US18/078,539 patent/US20230289295A1/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114781323A (zh) * | 2022-04-24 | 2022-07-22 | 苏州睿芯集成电路科技有限公司 | Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法 |
CN114781323B (zh) * | 2022-04-24 | 2023-08-18 | 苏州睿芯集成电路科技有限公司 | Cpu芯片仿真加速中针对有mmu环境的内存状态恢复方法 |
WO2024152588A1 (zh) * | 2023-01-20 | 2024-07-25 | 华为技术有限公司 | 内存访问的页错误处理方法及装置 |
CN116383102A (zh) * | 2023-05-30 | 2023-07-04 | 北京微核芯科技有限公司 | 转译后备缓冲器访问方法、装置、设备及存储介质 |
CN116383102B (zh) * | 2023-05-30 | 2023-08-29 | 北京微核芯科技有限公司 | 转译后备缓冲器访问方法、装置、设备及存储介质 |
CN118138559A (zh) * | 2024-03-12 | 2024-06-04 | 沐曦科技(北京)有限公司 | 一种虚拟gpu地址转换系统 |
CN118138559B (zh) * | 2024-03-12 | 2024-09-13 | 沐曦科技(北京)有限公司 | 一种虚拟gpu地址转换系统 |
Also Published As
Publication number | Publication date |
---|---|
US20230289295A1 (en) | 2023-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114201265A (zh) | 支持物理地址大于虚拟地址的虚拟内存管理方法及装置 | |
US11119943B2 (en) | Handling address translation requests | |
US7197585B2 (en) | Method and apparatus for managing the execution of a broadcast instruction on a guest processor | |
US11474956B2 (en) | Memory protection unit using memory protection table stored in memory system | |
US9298639B2 (en) | Controlling access to groups of memory pages in a virtualized environment | |
CN113722246B (zh) | 处理器中物理内存保护机制的实现方法及装置 | |
US20020065989A1 (en) | Master/slave processing system with shared translation lookaside buffer | |
US8190652B2 (en) | Achieving coherence between dynamically optimized code and original code | |
US7822924B2 (en) | Processing of self-modifying code in multi-address-space and multi-processor systems | |
US20110126265A1 (en) | Security for codes running in non-trusted domains in a processor core | |
US11907301B2 (en) | Binary search procedure for control table stored in memory system | |
EP3264317B1 (en) | Permission control for contingent memory access program instruction | |
US6795937B2 (en) | Multiple traps after faulty access to a resource | |
US8539209B2 (en) | Microprocessor that performs a two-pass breakpoint check for a cache line-crossing load/store operation | |
CN109690546B (zh) | 支持对客户机飞地存储器页的超额订阅 | |
US6795939B2 (en) | Processor resource access control with response faking | |
US6647468B1 (en) | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment | |
CN117573419B (zh) | 一种页面异常处理方法及装置 | |
CN117909261A (zh) | 内存管理方法、系统、处理器及电子设备 | |
JP7002455B2 (ja) | メモリアドレス変換管理 | |
JPH071489B2 (ja) | コンピュータ装置およびコンピュータ装置においてキャッシュデータアレイ内のデータの不一致を検出して修正する方法 | |
EP4026007B1 (en) | Facilitating page table entry (pte) maintenance in processor-based devices | |
CN113885943A (zh) | 处理单元、片上系统、计算装置及方法 | |
Bost | Hardware support for robust partitioning in freescale qoriq multicore socs (p4080 and derivatives) | |
US20020040451A1 (en) | Resource access control |
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 |
Address after: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Beijing Applicant after: Beijing ESWIN Computing Technology Co.,Ltd. Address before: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Beijing Applicant before: Beijing yisiwei Computing Technology Co.,Ltd. |
|
CB02 | Change of applicant information |