[go: up one dir, main page]

CN117827417A - 一种内存管理方法和相关设备 - Google Patents

一种内存管理方法和相关设备 Download PDF

Info

Publication number
CN117827417A
CN117827417A CN202211187534.0A CN202211187534A CN117827417A CN 117827417 A CN117827417 A CN 117827417A CN 202211187534 A CN202211187534 A CN 202211187534A CN 117827417 A CN117827417 A CN 117827417A
Authority
CN
China
Prior art keywords
address
processes
permission
authority
physical
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
Application number
CN202211187534.0A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211187534.0A priority Critical patent/CN117827417A/zh
Priority to PCT/CN2023/117661 priority patent/WO2024067018A1/zh
Priority to EP23870257.5A priority patent/EP4575784A4/en
Publication of CN117827417A publication Critical patent/CN117827417A/zh
Priority to US19/092,226 priority patent/US20250225075A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

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)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种内存管理方法和相关设备,该方法可包括:确定N个进程,其中,所述N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,所述每个进程的权限不同,N为大于或等于2的整数;针对所述N个进程建立地址映射表和N个权限表,所述每个进程对应所述N个权限表中的一个权限表;所述地址映射表包括所述虚拟地址与所述物理地址的映射关系;所述N个权限表中的每个权限表包括对应进程在所述物理地址的权限信息;当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,i取1、2、……、N。本申请可以减少内存开销。

Description

一种内存管理方法和相关设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存管理方法和相关设备。
背景技术
在使用计算机的早期,想要运行一个程序(或线程),需要将这个程序(或线程)全部都装入内存中,即程序(或线程)都是直接在内存上运行,程序(或线程)访问的内存地址都是实际的物理内存地址。早期的这种地址访问方式存在着地址空间不隔离、内存使用效率低、运行地址不确定等问题,为了解决这些问题,一种通过间接的地址访问物理内存的方法应运而生,程序(或线程)运行时访问的内存地址不再是实际的物理内存地址,而是一个虚拟地址,然后再基于该虚拟地址映射到适当的物理内存地址上,以此实现内存管理,常见的内存管理方式一般包括分段、分页或者段页式管理方式。
但是,随着芯片规模的不断发展,内存也越来越大,用于进行内存管理的数据大小也随之增大,这些数据通常是存储了内存中的,因而这些数据对于内存的消耗也变大了。例如,现有的进阶精简指令集机器(Advanced RISC Machine,ARM)架构和X86架构的内存管理机制,它们一般使用的是基于分页的内存页表管理机制,有很好的通用性,但是也存在着内存开销较大的问题。而物理内存不足可能会严重影响计算机的性能,在内存大小上限受限时,减少内存开销则成为保证计算机性能的重要途径。因此,如何提供一种可以减少内存开销的内存管理方法,是亟待解决的问题。
发明内容
本申请实施例提供一种内存管理方法和相关设备,在进行内存管理时,能够减少内存开销。
第一方面,本申请实施例提供了一种内存管理方法,可包括:确定N个进程,其中,所述N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,N为大于或等于2的整数;针对所述N个进程建立地址映射表和N个权限表,所述每个进程对应所述N个权限表中的一个权限表;所述地址映射表包括所述虚拟地址与所述物理地址的映射关系;所述N个权限表中的每个权限表包括对应进程在所述物理地址的权限信息;当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,i取1、2、……、N。
本申请实施例中,内存管理单元或者系统内存管理单元通过上述内存管理方法可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,建立一个地址映射表,并为每个进程分别建立对应的权限表,得到N个权限表,使得这N个进程在运行时,可以共享该地址映射表。区别于现有技术中,虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,需要建立N个页表,其中这N个页表中的地址信息相同(即虚拟地址相同、虚拟地址对应的物理地址也相同),仅权限信息不一样,但是,包括地址映射关系的地址信息部分在数据结构中占用的资源要比权限信息部分占用的资源更多。因此,本申请实施例提供的内存管理方法,将地址信息部分和权限信息部分分离,使得多个进程可以共享地址信息,从而可以减少内存管理对于内存的开销,为计算机性能提供保障。
在一种可能的实现方式中,所述根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,包括:根据所述地址映射表确定所述第i个进程可访问的物理地址;根据所述第i个进程对应的权限表确定所述第i个进程的权限;通过所述第i个进程对所述物理地址对应的数据进行与所述权限相应的处理。
本申请实施例中,当多个进程中的任意一个进程运行时,内存管理单元或者系统内存管理单元可以通过地址映射表确定出该进程可访问的物理地址,以及通过该进程对应的权限表确定出该进程的权限,从而能够通过该进程对可访问的物理地址上的数据进行相应处理,处理权限与权限表表征的权限相同,即多个进程中的每个进程在运行时,都可以共享该地址映射表,从而可以减少内存管理对于内存的开销,为计算机性能提供保障。
在一种可能的实现方式中,所述确定N个进程,包括:获取M个进程中每个进程的虚拟地址,M为大于或等于N的整数;确定所述M个进程中每个进程的虚拟地址对应的物理地址;从所述M个进程中确定出虚拟地址相同,且所述虚拟地址对应的物理地址也相同的N个进程。
本申请实施例中,内存管理单元或者系统内存管理单元可以从M个进程中确定出虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,但权限不同的N个进程,保证内存管理方法的可行性和准确性,为减少内存开销提供保障。
在一种可能的实现方式中,所述针对所述N个进程建立地址映射表和N个权限表,包括:根据所述N个进程的虚拟地址以及对应的物理地址,建立所述地址映射表;根据所述N个进程中的每个进程的权限信息分别建立权限表,得到所述N个权限表。
本申请实施例中,内存管理单元或者系统内存管理单元在确定了N个进程的虚拟地址、虚拟地址对应的物理地址以及每个进程的权限后,可以根据虚拟地址和对应的物理地址建立地址映射表,并根据N个进程中的每个进程对应的权限分别建立权限表,得到N个权限表,使得该N个进程在运行时可以共享该地址映射表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
在一种可能的实现方式中,所述N个权限表中的每个权限表包括权限起始地址信息和权限结束地址信息,所述第i个进程对应的权限表的所述权限起始地址信息和所述权限结束地址信息对应的地址范围包括所述第i个进程可访问的物理地址对应的地址范围。
本申请实施例中,内存管理单元或者系统内存管理单元在建立权限表时,可以基于区间表对权限表进行设计,令每个权限表包括权限起始地址信息和权限结束地址信息,使得权限表可以灵活指定一段或多段地址范围的权限,从而可以满足更多复杂场景的需求。其中,第i个进程对应的权限表的权限起始地址信息和权限结束地址信息对应的地址范围,包括了该第i个进程可访问的物理地址对应的地址范围。
在一种可能的实现方式中,所述地址映射表还包括通用权限信息,所述通用权限信息包括所述N个进程中的每个进程的权限信息。
本申请实施例中,内存管理单元或者系统内存管理单元在建立地址映射表时,可以将地址映射表中通用权限信息设置为包括多个共享此地址映射表的进程的权限信息,即该通用权限信息表征的权限范围大于或等于上述N个进程中每个进程的权限范围的总和,进程在运行时可以以权限表表征的权限进程数据处理,避免出现地址映射表权限不开放,而进程对应的权限表却开放了权限的冲突情况,为地址映射表和权限表可以正常工作提供保障。
第二方面,本申请实施例提供了一种内存管理装置,可包括:确定模块,用于确定N个进程,其中,所述N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,所述每个进程的权限不同,N为大于或等于2的整数;第一处理模块,用于针对所述N个进程建立地址映射表和N个权限表,所述每个进程对应所述N个权限表中的一个权限表;所述地址映射表包括所述虚拟地址与所述物理地址的映射关系;所述N个权限表中的每个权限表包括对应进程在所述物理地址的权限信息;第二处理模块,用于当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,i取1、2、……、N。
本申请实施例中,内存管理装置可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,建立一个地址映射表,并为每个进程分别建立对应的权限表,得到N个权限表,使得这N个进程在运行时,可以共享该地址映射表。区别于现有技术中,虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,需要建立N个页表,其中这N个页表中的地址信息相同(即虚拟地址相同、虚拟地址对应的物理地址也相同),仅权限信息不一样,但是,包括地址映射关系的地址信息部分在数据结构中占用的资源要比权限信息部分占用的资源更多。因此,本申请实施例提供的内存管理装置,将地址信息部分和权限信息部分分离,使得多个进程可以共享地址信息,从而可以减少内存管理对于内存的开销,为计算机性能提供保障。
在一种可能的实现方式中,所述第二处理模块,具体用于:根据所述地址映射表确定所述第i个进程可访问的物理地址;根据所述第i个进程对应的权限表确定所述第i个进程的权限;通过所述第i个进程对所述物理地址对应的数据进行与所述权限相应的处理。
在一种可能的实现方式中,所述确定模块,具体用于:获取M个进程中每个进程的虚拟地址,M为大于或等于N的整数;确定所述M个进程中每个进程的虚拟地址对应的物理地址;从所述M个进程中确定出虚拟地址相同,且所述虚拟地址对应的物理地址也相同的N个进程。
在一种可能的实现方式中,所述第一处理模块,具体用于:根据所述N个进程的虚拟地址以及对应的物理地址,建立所述地址映射表;根据所述N个进程中的每个进程的权限信息分别建立权限表,得到所述N个权限表。
在一种可能的实现方式中,所述N个权限表中的每个权限表包括权限起始地址信息和权限结束地址信息,所述第i个进程对应的权限表的所述权限起始地址信息和所述权限结束地址信息对应的地址范围包括所述第i个进程可访问的物理地址对应的地址范围。
在一种可能的实现方式中,所述地址映射表还包括通用权限信息,所述通用权限信息包括所述N个进程中的每个进程的权限信息。
第三方面,本申请实施例提供了一种计算机可读存储介质,用于存储上述第二方面中的一种或多种所提供的一种用于实现内存管理方法的设备装置所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
第四方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面中的一种或多种所提供的一种用于实现内存管理方法的装置所执行的流程。
第五方面,本申请实施例提供了一种终端设备,该终端设备中包括处理器,处理器被配置为支持该终端设备实现第一方面所提供的内存管理方法中相应的功能。该终端设备还可以包括存储器,存储器用于与处理器耦合,其保存该终端设备必要的程序指令和数据。该终端设备还可以包括通信接口,用于该终端设备与其他设备或通信网络通信。
第六方面,本申请实施例提供了一种芯片系统,该芯片系统包括处理器,用于支持设备实现上述第一方面所涉及的功能,例如,生成或处理上述内存管理方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种内存管理方法应用的系统架构示意图。
图2是本申请实施例提供的一种内存管理方法的流程示意图。
图3是本申请实施例提供的一种地址映射表的结构示意图。
图4a是本申请实施例提供的一种权限表的结构示意图。
图4b是本申请实施例提供的一种权限表划分权限的示意图。
图5是本申请实施例提供的一种权限分配示意图。
图6是本申请实施例提供的一种页表查找的流程示意图。
图7a是本申请实施例提供的一种页表结构的示意图。
图7b是本申请实施例提供的另一种页表结构的示意图。
图7c是本申请实施例提供的一种权限分配的结构示意图。
图8是本申请实施例提供的一种内存管理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的一个或多个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)内存管理单元(Memory Manage Unit,MMU)、系统内存管理单元(SystemMemory Manage Unit,SMMU)、输入/输出内存管理单元(Input/Output Memory ManagementUnit,IOMMU),是围绕着虚拟内存管理(Virtual Memory Management,VMM)技术发展的几种相关技术,其中,MMU主要用于在各种处理器(例如中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU))与物理内存之间进行虚拟地址(Virtual Address,VA)和物理地址(Physical Address,VA)的转化;SMMU与IOMMU的功能基本相同,是不同厂商的叫法,主要用于为直接内存访问(Direct Memory Access,DMA)技术进行地址转换,本申请在描述SMMU时,可包括IOMMU的含义。MMU、SMMU以及IOMMU通过本申请实施例提供的内存管理方法,可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的几个进程,建立一个地址映射表,并针对每个进程分别建立对应的权限表,使得这几个进程运行时,可以共享该地址映射表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
(2)页表(Page Table),页表是一种特殊的数据结构,一般保存在系统空间的页表区,包括多个页表项(Page Table Entry),存放逻辑(虚拟)页(虚拟地址)与物理页(物理地址)的对应关系。一般地,每一个进程都拥有一个自己的页表,而当多个进程的虚拟地址相同,且虚拟地址对应的物理地址也相同,以及该多个进程在对应的物理地址上的权限也相同时,可以使该多个进程进行页表共享。本申请实施例中,可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的几个进程,建立一个地址映射表,并分别建立对应的权限表,使得这几个进程运行时,可以共享该地址映射表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
(3)直接内存访问(Direct Memory Access,DMA)技术,在将数据从一个地址空间复制到另一个地址空间时,在外设和物理内存之间或者在存储器和物理内存之间提供高速数据传输的通道,不需要CPU参与转移数据的过程,因而可以解决大量数据转移造成过度消耗CPU资源的问题。本申请实施例提供的内存管理方法,也可以适用于DMA场景中,多个外设或者多个存储器通过地址转换访问物理内存的情况,以此减少内存管理对于内存的开销,为计算机性能提供保障。
(4)在本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
首先,分析并提出本申请所具体要解决的技术问题。在现有技术中,以ARM架构和X86架构的内存管理机制为例,基于分页的内存页表管理机制的方案包括方案一:
方案一:ARM架构和X86架构的页表管理机制一般可以支持4K/16K/64K等多种粒度(Grandule)的页表,以4K粒度页表为例,地址转换的过程通常是使用基数树(radix tree)机制划分4级页表进行页表查找(Page Table Walk),其中,level 1可以支持1G粒度的块(Block)类型页表,level 2可以支持2M粒度的Block粒度页表,level 3可以支持4K粒度的页(Page)类型页表,另外level 0,level1和level 2中还有表(table)类型的页表,提供指向下一级radix tree的地址指针。在页表查找的过程中,如果遇到Block类型和Page类型,则表示完成一次地址转换,同时获得地址信息和权限信息。
该方案一存在以下缺点:
缺点1:页表的内存开销较大。现有技术中,进程运行所需的权限信息和地址信息存放在同一张页表中,如果有N个进程共享物理地址,但各个进程之间互相需要进行权限隔离(即各个进程之间的权限不同时)时,就需要复制与上述N个进程对应的N份页表,这N份页表中的地址信息相同(即虚拟地址相同、虚拟地址对应的物理地址也相同),仅权限信息不一样。综上,现有技术的方案中,多个进程需要共享页表的条件较为苛刻,需要保证多个进程的地址信息、权限信息均相同。然而,对于地址信息相同,但权限信息不同的多个进程而言,地址信息具备了被多个进程共享的条件,但由于权限信息不同,用于内存管理的页表的内存开销仍然与进程数量成正比,即需要共享页表的进程数量越多,页表的内存开销仍会越大。
缺点2:进程在虚拟地址对应的物理地址上的权限的分配必须和页表边界是对齐的,即权限只能按照页表粒度(例如4K/2M/1G的粒度)进行分配,权限的分配粒度固定,不够灵活,不能满足更多复杂场景的需求。
为了解决现有技术中进行内存管理存在的内存开销较大、权限分配不够灵活的问题,综合考虑现有技术存在的缺点,本申请实际要解决的技术问题包括如下:
地址映射表和权限表分离。本申请实施例中,可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,建立一个地址映射表,并分别建立对应的权限表,得到N个权限表,使得这N个进程在运行时,可以共享该地址映射表。区别于现有技术中,虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,需要建立N个页表,其中这N个页表中的地址信息相同(即虚拟地址相同、虚拟地址对应的物理地址也相同),仅权限信息不一样,本申请实施例提供的内存管理方法,可以减少内存管理对于内存的开销,为计算机性能提供保障。
基于区间(Range)表设计的权限表。本申请实施例中,权限表中可以包括权限起始(Base)地址信息以及权限结束(Limit)地址信息,权限起始地址信息和权限结束地址信息可以表征一个或多个区间(Range)范围的地址空间,权限表中可以另有信息表征该一个或多个区间的权限,权限的分配可以不必与页表边界对齐,更加灵活,能够满足更多复杂场景的需求。
综上所述,现有技术中的内存管理方案存在着内存开销较大的问题,可能会严重影响计算机的性能。因此,本申请提供的内存管理方法用于解决上述部分或全部技术问题,减少内存管理对于内存的开销,为计算机性能提供保障。
为更好地理解本申请实施例提供的内存管理方法,下面将对本申请实施例提供的内存管理方法的系统架构和/或应用场景进行说明。可理解的,本申请实施例描述的系统架构以及应用场景是为了可以更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定。
本申请实施例提供的内存管理方法可应用的系统架构,可参见图1,图1是本申请实施例提供的一种内存管理方法应用的系统架构示意图,可以包括一个或多个处理器101、一个或多个内存管理单元102、一个或多个设备103、一个或多个系统内存管理单元104以及一个或多个内存105。
其中,处理器101,可以是CPU,也可以是GPU,还可以是其它类型的处理器(例如,ARM处理器),其中,CPU主要是解释计算机指令以及处理计算机软件中的数据,计算机中的操作可以由CPU负责读取指令,对指令译码并执行指令,将进程放入内存105中运行;GPU是在计算机上进行图像运算工作的微处理器,主要执行复杂的数学和几何计算,用以完成图形渲染。进程需要在内存上运行,处理器101可以通过内存管理单元102进行查表后找到进程虚拟地址对应的物理地址。本申请实施例中,针对虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的几个进程,内存管理单元102可以建立一个地址映射表,并分别建立对应的权限表,使得处理器101在运行这几个进程时,可以共享该地址映射表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
内存管理单元102,是介于处理器101和内存105之间的中间层,主要完成虚拟地址向物理地址的转换,同时提供读写权限、属性信息等。一般地,内存管理单元102可以封装于处理器(如CPU)芯片内部,因此,虚拟地址一般只存在于处理器内部。进程运行时,背后的数据/指令地址等用的都是虚拟地址,虚拟地址由处理器101的执行单元发出,被内存管理单元102拦截并转换为物理地址,从虚拟地址到物理地址这一过程被称为地址转换(或映射)。本申请实施例中,内存管理单元102可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的几个进程,建立一个地址映射表,并分别建立对应的权限表,使得处理器101在运行这几个进程时,可以共享该地址映射表,即这几个进程运行时,均可以通过该地址映射表完成虚拟地址到物理地址的转换,不需单独为每个进程建立一个对应的地址表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
设备103,主要是包括各种功能的外部设备,例如定时器(TIM)、通用收发器(USART)、模数转换器(ADC)等,设备103可以通过DMA技术,绕过处理器101直接访问内存105,在设备103访问内存105的过程中,也涉及到虚拟地址到物理地址的转换,依赖的主要是系统内存管理单元104。本申请实施例中,当多个设备103的虚拟地址相同,虚拟地址对应的物理地址也相同,但是它们的权限不同时,系统内存管理单元104可以为这多个设备103建立一个地址映射表,并分别建立对应的权限表,使得这多个设备分别对应的进程在运行时,可以共享该地址映射表,即这多个设备对应的进程在运行时,均可以通过该地址映射表完成虚拟地址到物理地址的转换,不需单独为每个设备的进程建立一个对应的地址表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
系统内存管理单元104,是介于设备103和内存105之间的中间层,其功能与内存管理单元相同,主要完成虚拟地址向物理地址的转换,同时提供读写权限、属性信息等,服务对象为设备103,而内存管理单元102的服务对象为处理器101。本申请实施例中,当多个设备103的虚拟地址相同,虚拟地址对应的物理地址也相同,但是它们的权限不同时,系统内存管理单元104可以为这多个设备103建立一个地址映射表,并分别建立对应的权限表,使得这多个设备分别对应的进程在运行时,可以共享该地址映射表,即这多个设备对应的进程在运行时,均可以通过该地址映射表完成虚拟地址到物理地址的转换,不需单独为每个设备的进程建立一个对应的地址表,从而减少内存管理对于内存的开销,为计算机性能提供保障。需要说明的是,后续本申请中提到的系统内存管理单元104包括了输入/输出内存管理单元(IOMMU)的含义。
内存105,是暂时存储进程以及数据的地方,一般又称主存,是处理器101或者设备103能够直接寻址的存储空间,由半导体器件制成。一般地,内存的特点是容量小,存取速度快,只能临时保存信息(经处理器处理后的数据),断电后信息就会消失。由于内存的容量较小,而内存不足又可能会严重影响计算机的性能,减少内存开销成为保证计算机性能的重要途径。本申请实施例中,当多个进程(包括处理器访问内存的进程、设备访问内存对应的进程)的虚拟地址对应的物理地址相同时,意味着这多个进程最终会访问相同的物理内存,若这多个进程的虚拟地址也相同,但是权限不同,可以为这多个进程建立一个地址映射表,并分别建立对应的权限表,使得这多个进程在运行时,可以共享该地址映射表,即这多个进程在运行时,均可以通过该地址映射表完成虚拟地址到物理地址的转换,不需单独为每个进程建立一个对应的地址表,从而减少内存管理对于内存的开销,为计算机性能提供保障。
需要说明的是,本申请实施例可以应用于各种计算机系统架构中,上述图中的计算机架构只是本申请实施例中的一种示例性的实施方式,本申请实施例可应用的架构包括但不仅限于以上架构。应该理解的是,计算机架构可以具有比图中所示的更多的或者更少的单元/模块,可以组合两个或多个的单元/模块,或者可以具有不同的单元/模块配置。图中所示出的各种单元/模块可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面基于上述图1提供的架构示意图,结合本申请提供的内存管理方法,对本申请中提出的技术问题进行具体分析和解决。
请参见图2,图2是本申请实施例提供的一种内存管理方法的流程示意图,该方法可应用于上述图1中所述的内存管理单元102和/或系统内存管理单元104中,也即是说上述内存管理单元102和/或系统内存管理单元104可以用于支持并执行图2中所示的方法流程步骤S200-步骤S202,其中,步骤S200-步骤S202包括以下:
步骤S200:确定N个进程。
具体地,内存管理单元102或者系统内存管理单元104可以确定出N个进程,该N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,N为大于或等于2的整数,这N个进程的各个进程之间的权限各不相同。为方便理解,本申请实施例以N的取值为10作为示例,可理解地,虚拟地址相同,且虚拟地址对应的物理地址也相同,仅权限不同的进程的数量N也可以取其它值,在此不作具体限定。需要说明的是,内存管理单元102或者系统内存管理单元104可以一次同时确定出N个进程,也可以逐步确定出一个或多个进程,直到确定出N个进程,在此不作具体限定。
在一种可能的实现方式中,内存管理单元102或者系统内存管理单元104可以从M个进程中确定出虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,但权限不同的N个进程,其中,M为大于或等于N的整数。可选地,内存管理单元102或者系统内存管理单元104可以先获取M个进程中每个进程的虚拟地址;然后确定该M个进程中每个进程的虚拟地址对应的物理地址;最后,从该M个进程中确定出虚拟地址相同,且虚拟地址对应的物理地址也相同的N个进程,为方便理解,本申请实施例以M的取值为20作为示例,可理解地,M也可以取大于或等于N的其它值,在此不作具体限定。可理解地,系统在基于某种原因(例如系统初始化、或者系统调用)决定创建一个进程的过程中,内存管理单元102或者系统内存管理单元104可以获取到进程的虚拟地址,并且可以根据内存的实际情况为进程分配物理地址(对应具体的物理内存块,其大小可以是4K、2M、1G等),以M取20,N取10为例,系统可以创建20个进程,内存管理单元102或者系统内存管理单元104可以获取这20个进程的虚拟地址,并分别为它们分配物理地址,并提供权限,因此,若这20个进程中存在虚拟地址相同,且虚拟地址对应的物理地址相同,但权限不同的10个进程,内存管理单元102或者系统内存管理单元104能够在建立地址映射表和权限表之前确定出这10个进程。需要说明的是,内存管理单元102或者系统内存管理单元104可以同时获取到M个进程的虚拟地址,然后确定出虚拟地址对应的物理地址,也可以逐步获取一个或多个进程的虚拟地址,然后确定出虚拟地址对应的物理地址,直到明确出M个进程的虚拟地址和虚拟地址对应的物理地址,在此不作具体限定。
步骤S201:针对所述N个进程建立地址映射表和N个权限表。
具体地,内存管理单元102或者系统内存管理单元104可以针对虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,但权限不同的N个进程,建立地址映射表以及建立与N个进程中的每个进程对应的权限表,共N个权限表,其中,N个进程中的每个进程对应该N个权限表中的一个权限表,地址映射表包括虚拟地址与物理地址的映射关系,N个权限表中的每个权限表包括对应进程在物理地址上的权限信息。为方便理解,仍以N取10为例,即虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,但权限不同的进程数量为10个,内存管理单元102或者系统内存管理单元104针对这10个进程建立1个地址映射表和10个权限表,10个进程中的每个进程对应该10个权限表中的一个权限表。可选地,内存管理单元102或者系统内存管理单元104可以在确定出N个进程后,同时为这N个进程建立地址映射表和对应的N个权限表;也可以先为第一个进程建立地址映射表和权限表,后续逐步确定出一个或多个与该第一个进程虚拟地址相同,且虚拟地址对应的物理地址也相同,但权限不同的进程时,再建立对应的权限表,直到建立N个权限表,以此对应虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,但权限不同的N个进程,在此不作具体限定。
在一种可能的实现方式中,内存管理单元102或者系统内存管理单元104在确定了上述N个进程的虚拟地址、虚拟地址对应的物理地址以及权限后,可以根据虚拟地址和对应的物理地址建立地址映射表,并根据N个进程中的每个进程对应的权限分别建立权限表,得到N个权限表,即地址映射表中包括了N个进程的虚拟地址信息和虚拟地址对应的物理地址信息,权限表包括了对应进程的权限,系统在运行进程时,基于虚拟地址发起访问,再由内存管理单元102或者系统内存管理单元104通过查找地址映射表和权限表,确定虚拟地址对应的物理地址和进程对应的权限。
可选地,上述地址映射表还可以包括通用权限信息,该通用权限信息包括上述N个进程中的每个进程的权限信息,即该通用权限信息表征的权限范围大于或等于上述N个进程中每个进程的权限范围的总和,例如进程1的权限为读、进程2的权限为写,地址映射表中的通用权限信息应该至少开放读和写的权限,若其它共享地址映射表的进程还有其它不同的权限,则地址映射表中通用权限信息应该相应地开放更多权限。可理解地,进程在运行时,实际的处理权限与其对应的权限表表征的权限相同,而不是上述地址映射表中通用权限信息表征的权限。
在一种可能的实现方式中,在系统创建的众多进程中,还可以包括K个进程,K为大于或等于1的整数,其中,这K个进程与上述N个进程中的某一个进程(例如进程n)的虚拟地址相同,且该虚拟地址对应的物理地址也相同,权限也相同。可选地,这K个进程可以与上述N个进程共用地址映射表,并且这K个进程可以与进程n共用权限表(即与进程n对应的权限表),不需再为这K个进程单独建立地址映射表和权限表,能够进一步减少内存开销。以K取2,N取10作为示例,这2个进程与10个进程中的某个进程(如进程8)的虚拟地址相同,且该虚拟地址对应的物理地址也相同,权限也相同,则这2个进程与进程8共享地址映射表和权限表,即总共12个进程,可以仅建立1个地址映射表和10个权限表,可理解地,K和N也可以取其它值,在此不作具体限定。
步骤S202:当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理。
具体地,在内存管理单元102或者系统内存管理单元104为上述N个进程建立好地址映射表和对应的权限表之后,当系统运行该N个进程中的第i个进程时,可以根据地址映射表和该第i个进程对应的权限表,对物理地址上对应的数据进行处理,处理的权限与权限表中表征的权限相同,其中,i取1、2、……、N,也即是说,系统在运行该N个进程中任意一个进程时,可以根据该地址映射表和该进程对应的权限表,控制进程对物理地址对应的数据进行与权限表表征的权限相对应的处理。需要说明的是,地址映射表和权限表可以保存在内存中,系统在运行进程时,可以根据该进程的进程描述符中保存的地址映射表和权限表的物理地址进行查找。
可选地,在系统运行该N个进程中的第i个进程时,内存管理单元102或者系统内存管理单元104可以先根据上述地址映射表确定该第i个进程可访问的物理地址;然后再根据该第i个进程对应的权限表确定出该第i个进程的权限;最后可通过该第i个进程对该物理地址对应的数据进行处理,处理的权限与权限表表征的权限相同。
以上,是对本申请实施例提供的内存管理方法流程进行的描述说明。至于,用于本申请的内存管理方法的地址映射表和权限表的结构如何,以及使用本申请实施例提供的内存管理方法进行内存管理的效果如何,以下将进行描述说明。
以SMMU场景的内存管理为例进行简单描述,下面先对地址映射表的结构进行简单说明,可参见图3,图3是本申请实施例提供的一种地址映射表的结构示意图,其中,系统为64位系统,页表粒度为4K,页表为4级页表,[47:0]表示的是虚拟地址的宽度,也可以是[42:0]、[39:0]、[36:0],即64bit的虚拟地址并不是所有bit都要被用上(对于64位的系统而言,若是32位系统,虚拟地址宽度可设置为其它值),地址转换可以基于页表基地址和偏移量完成,每一级的地址转换可以有9bit(即可以有512个项(entry)),VA[47:39]是level 0页表的索引,level 0中的每一个entry可以对应一个512GB的地址范围,并指向level 1页表(对应VA[38:30]);level 1页表中也可以有512个entry,每一个entry指向level 2页表(对应VA[29:21])或1GB Block;level 2页表的entry可以指向level 3页表(对应VA[20:12])或2M的Block;level 3页表的entry可以指向4KB的Page的基地址;VA[11:0]可以包括偏移量信息。可理解地,地址映射表中VA[63:48]还可以包括通用权限信息、属性信息等,可选地,通用权限信息表征的权限可以包括多个共用该地址映射表的进程的权限。需要说明的是,本申请实施例中提供的地址映射表也可以应用于32位系统,页表粒度也可以支持其它粒度大小(如16K、64K、2M、1G等),也可以支持多种不同粒度大小共存的设计,页表级数也可以为2级页表、3级页表或者更多或更少的级数,在此不作具体限定。此外,上述内存管理方法用到的地址映射表为支持分页的页表,可理解地,本申请实施例用到的地址映射表也可以是支持分段管理的段表、或者分段分页结合的段页表,即本申请实施例用到的地址映射表只要能够完成地址转换即可,至于地址映射表基于何种地址空间划分思想得到,在此不作具体限定。
至于,本申请实施例的权限表可以包括该权限表对应的进程的权限信息,使得内存管理单元(MMU)或者系统内存管理单元(SMMU)在查权限表时可以确定出该权限表对应的进程的权限。
在一种可能的实现方式中,权限表可以基于区间(Range)表设计得到,即权限表中可以包括权限起始地址(Base)信息和权限结束地址(Limit)信息(起始地址和权限地址可以均为虚拟地址),使得权限表能够灵活指定任意一段或者任意多段地址范围的权限信息,同时也能提供指向下一级基数树(radix tree)的地址指针。基于区间表设计的权限表的数据结构可参考图4a,图4a是本申请实施例提供的一种权限表的结构示意图,权限表为2级表,由于权限表要达到灵活表征任意一段或任意多段地址范围的目的,表项中的信息往往需要比传统页表对应更多的页(Page)和块(Block),以传统页表支持8Byte为例,为表征更多信息,本申请实施例提供的权限表可以扩充到16Byte(也可以更多,一般为传统页表的倍数),考虑到可以灵活兼容Page和Block,本申请实施例可以将相邻两个8Byte的页表合并成一个16Byte的页表,每一级页表的总大小可以保持不变。权限表中可以设置标记位,由于MMU或者SMMU在对每一级基数树(radix tree)进行查找之前,并不能确定将会获取到的页表是基于区间表设计的权限表,还是传统页表,所以可以通过软件配置使得MMU或者SMMU需要每次至少按照16Byte(也可以更多,可基于权限表大小配置)的粒度去获取页表,使得MMU或者SMMU在按照16Byte的粒度查表时可以根据标记位确定读到的页表是基于区间表设计的1个16Byte的权限表,还是两个8Byte的传统页表。此外,权限表数据结构中,还可以包括以下字段:
V:有效位,同传统页表;
Type:忽略,但需要兼容传统页表数据结构;
Lower Attribute:低位的权限属性信息;
Next_level_addr:下一级页表查找(page table walk)基地址,同传统页表;
Base:区间(range)权限分配区间(range)范围的起始地址;
Limit:区间(range)权限分配区间(range)范围的结束地址;
Upper Attribute:高位的权限属性信息;
Table Attribute:表(Table)的权限属性信息。
需要说明的是,权限表基于区间(Range)表设计得到时,权限表中可以能够灵活指定任意一段或者任意多段地址范围的权限信息,其中,第i个进程对应的权限表的权限起始地址信息和权限结束地址信息对应的地址范围一般可以包括该第i个进程可访问的物理地址对应的地址范围。可参见图4b,图4b是本申请实施例提供的一种权限表划分权限的示意图,其中,权限表指定出的一段或多段地址范围中,可以有一段地址范围与进程可访问的地址范围相同(如图4b中的方式(1));权限表指定出的一段或多段地址范围中,有一段地址范围小于进程可访问的地址范围,但与其它指定的地址范围连续,使得进程在该可访问的地址范围上拥有多种不同的权限(如图4b中的方式(2));权限表指定出的一段或多段地址范围中,有一段地址范围大于进程可访问的地址范围(如图4b中的方式(3))。通过权限地址范围和进程可访问的地址范围的设置,在保证进程可以正常工作的同时,也使得权限的分配更加灵活,从而可以满足更多复杂场景的需求。
在此,也对上述权限表的查找流程进行简单说明,当虚拟地址(VA)命中了基于区间表(range table)设计的权限表中的Base以及Limit表征的范围时,则表示命中该rangetable,可以直接获取到range table中的权限信息;若没有命中Base,Limit表征的范围,则表示未命中(Miss)该range table,则可以使用range table中的next_level_address继续对下一级的基数树(radix tree)进行查找,直到命中或触发中断。
以2级页表为例,基于区间表(Range table)设计的权限表的查找比对流程如下:
当命中level 0的range table时:
表现为Base[39:12]<=VA[39:12]<=Limit[39:12]成立,此时直接返回权限表中的权限信息;
当命中level 1的range table时:
(1)若按照4K粒度划分权限,表现为Base[30:12]<=VA[30:12]<=Limit[30:12]成立,此时直接返回权限表中的权限信息;
(2)若按照1Byte粒度划分权限,表现为Base[30:0]<=VA[30:0]<=Limit[30:0]成立,此时直接返回权限表中的权限信息。
为方便理解,再以4级页表为例,对本申请实施例提供的权限表进行简单说明,可参见图5,图5是本申请实施例提供的一种权限分配示意图,以4K粒度为例,假设系统为一个进程分配了5G虚拟地址空间,其中,该进程在0-3.5G地址空间的权限为RWX0,在3.5-4G地址空间的权限为RWX1,而在4-5G地址空间的权限为RWX2,要完成这个权限分配,只需要在权限表的level 0中分配一个3.5G权限为RWX0的权限区间(或者权限块),然后在权限表的level1中分配1个0.5G权限为RWX1的权限区间(或者权限块)和一个1G权限为RWX2的权限区间(或者权限块),即可通过权限表完成对于该进程在5G虚拟地址空间内的权限分配。可理解地,如果权限分配的粒度更小(如2M、1M、64K、16K、4K等),可以通过level2、level 3中页表项进行分配。
综上,对比于现有技术的内存管理机制,本申请实施例将进程运行所需的权限信息和地址信息进行分离,得到地址映射表和权限表,区别于现有技术将权限信息和地址信息存放在同一张页表中,使得多个进程在虚拟地址相同、虚拟地址对应的物理地址也相同,但是权限不相同的情况下,也可以共享一个地址映射表,以此减少内存管理方法对于内存的开销。
基于本申请实施例的内存管理方法提供的地址映射表和权限表,其具体页表查找流程可以参考图6,图6是本申请实施例提供的一种页表查找的流程示意图,其中,以SMMU场景为例,首先是页表配置(Configuration)的查找,该步骤是为了获取地址映射表和权限表的入口信息,具体可以是通过流ID(StreamID)和流表条目(Stream Table Entry,STE)基址寄存器(即Register STE ptr)获取到STE,在拿到STE之后就获得了下一级Configuration查找的入口信息(包括TCD ptr和PCD ptr);然后再通过子流ID(SubStreamID)和STE中下一级configuration入口信息的基地址可以获取到地址上下文描述符(Translation ContextDescriptor,TCD)和权限上下文描述符(Protection Context Descriptor,PCD),进而可以拿到地址转换和权限转换所需的页表基地址(Translation Table Base,TTB)和权限基地址(Protection Table Base,PTB),至此,Configuration查找完毕。接下来,可以根据虚拟地址、页表基地址和权限基地址分别对地址映射表和权限表进行查找,从而可以基于地址映射表确定出物理地址(PA),基于权限表确定出权限(RWX),其中,地址映射表和权限表的查找可以是并行进行,也可以先后进行,在此不作具体限定。
下面再对本申请实施例提供的内存管理方法的效果进行简单说明,以4K页表粒度为例,假设有10个进程的虚拟地址(如对应一个1G地址空间)相同,虚拟地址对应的物理地址也相同,但是它们的权限不相同,即这10个进程想要共享一段1G的内存空间,并且这10个进程之间需要进行权限隔离。但如果此时物理内存中没有一段连续的1G物理空间时,按照现有技术中的内存页表管理机制,需要为这10个进程分别建立1个页表,所建立的页表结构可参考图7a,图7a是本申请实施例提供的一种页表结构的示意图,其中,level 0未示出,要满足进程的1G物理空间需求,至少需要在level 2中建立512个对应2M大小的页表项,一个进程的内存开销最少需要约512个页表项,同时考虑到10个进程要做权限隔离,因此,需要建立约5120个页表项才能满足要求。如果内存碎片化更严重时,即内存中没有连续的2M粒度的内存时,则会需要更多更小粒度的页来承载,页表项随之大幅增加,页表对于内存的开销将会更大,可参考图7b,图7b是本申请实施例提供的另一种页表结构的示意图,其中,level 0未示出,如果内存中只有510个2M的Block,而进程需要的是1G空间,那么剩下2个2M的空间指向了level3,需要在level3中建立512*2个对应4K大小的页表项才能满足要求,此时页表项已经达到了15360个,对于内存的开销也更大了。
然而,如果在该场景下采用本申请实施例提供的内存管理方法,在将地址信息和权限信息分离在地址映射表和权限表后,上述10个进程中所有进程可以共享上述在level2中包括了512个对应2M大小页表项的地址映射表,同时,基于每个进程的不同权限,可以针对每一个进程分别建立一个包括上述1G空间的基于区间(range)表设计权限表即可,可参考图7c,图7c是本申请实施例提供的一种权限分配的结构示意图,可以在level 0中划分出一段大于或等于1G空间的地址范围,或者多段大于或等于1G空间的地址范围,并分配与进程相应的权限。此时,如果在level 0中划分出一段大于或等于1G空间的地址范围,那么页表项对于内存的开销变成1*512+10*1=522个,现有技术的内存管理方案和本申请实施例提供的内存管理方法的内存开销比约为10:1。可理解地,在需要进行页表共享的进程数量增多,或者物理内存空间碎片化更加严重的情况下,如果采用本申请实施例提供的内存管理方法,所能带来的内存收益将会更多。
上述详细阐述了本申请实施例的方法,下面提供本申请实施例的几种相关装置。
请参见图8,图8是本申请实施例提供的一种内存管理装置的结构示意图,该内存管理装置8,可以包括确定模块81,第一处理模块82,第二处理模块83。其中,各个单元的详细描述如下:
确定模块81,用于确定N个进程,其中,所述N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,所述每个进程的权限不同,N为大于或等于2的整数;
第一处理模块82,用于针对所述N个进程建立地址映射表和N个权限表,所述每个进程对应所述N个权限表中的一个权限表;所述地址映射表包括所述虚拟地址与所述物理地址的映射关系;所述N个权限表中的每个权限表包括对应进程在所述物理地址的权限信息;
第二处理模块83,用于当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,i取1、2、……、N。
本申请实施例中,内存管理装置可以为虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,建立一个地址映射表,并为每个进程分别建立对应的权限表,得到N个权限表,使得这N个进程在运行时,可以共享该地址映射表。区别于现有技术中,虚拟地址相同,虚拟地址对应的物理地址也相同,但是权限不同的N个进程,需要建立N个页表,其中这N个页表中的地址信息相同(即虚拟地址相同、虚拟地址对应的物理地址也相同),仅权限信息不一样,但是,包括地址映射关系的地址信息部分在数据结构中占用的资源要比权限信息部分占用的资源更多。因此,本申请实施例提供的内存管理装置,将地址信息部分和权限信息部分分离,使得多个进程可以共享地址信息,从而可以减少内存管理对于内存的开销,为计算机性能提供保障。
在一种可能的实现方式中,所述第二处理模块83,具体用于:
根据所述地址映射表确定所述第i个进程可访问的物理地址;
根据所述第i个进程对应的权限表确定所述第i个进程的权限;
通过所述第i个进程对所述物理地址对应的数据进行与所述权限相应的处理。
在一种可能的实现方式中,所述确定模块81,具体用于:
获取M个进程中每个进程的虚拟地址,M为大于或等于N的整数;
确定所述M个进程中每个进程的虚拟地址对应的物理地址;
从所述M个进程中确定出虚拟地址相同,且所述虚拟地址对应的物理地址也相同的N个进程。
在一种可能的实现方式中,所述第一处理模块82,具体用于:
根据所述N个进程的虚拟地址以及对应的物理地址,建立所述地址映射表;
根据所述N个进程中的每个进程的权限信息分别建立权限表,得到所述N个权限表。
在一种可能的实现方式中,所述N个权限表中的每个权限表包括权限起始地址信息和权限结束地址信息,所述第i个进程对应的权限表的所述权限起始地址信息和所述权限结束地址信息对应的地址范围包括所述第i个进程可访问的物理地址对应的地址范围。
在一种可能的实现方式中,所述地址映射表还包括通用权限信息,所述通用权限信息包括所述N个进程中的每个进程的权限信息。
需要说明的是,本申请实施例中所描述的内存管理装置8中各功能单元/模块的功能可参见上述方法实施例中的相关描述,此处不再赘述。
需要说明的是,本申请中描述的内存管理装置并不限于此,该内存管理装置可以位于任意一个电子设备中,如电脑、计算机、手机、平板、服务器等各类设备中。内存管理装置具体可以是芯片或芯片组或搭载有芯片或者芯片组的电路板。该芯片或芯片组或搭载有芯片或芯片组的电路板可在必要的软件驱动下工作。例如,所述GPU可以是:
(1)独立的集成电路IC,或芯片,或,芯片系统或子系统;
(2)具有一个或多个IC的集合,可选的,该IC集合也可以包括用于存储数据,计算机程序的存储部件;
(3)可嵌入在其他设备内的模块;
(4)其他等等。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序代码,当上述处理器执行该计算机程序代码时,电子设备执行前述任一实施例中的方法。
本申请实施例还提供一种终端设备,该终端设备可以以芯片的产品形态存在,该终端设备中包括处理器,处理器被配置为支持该终端设备实现前述任一实施例中的方法中相应的功能。该终端设备还可以包括存储器,存储器用于与处理器耦合,其保存该终端设备必要的程序指令和数据。该终端设备还可以包括通信接口,用于该终端设备与其他设备或通信网络通信。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行前述任一实施例中的方法。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,用于支持设备实现上述第一方面所涉及的功能,例如,生成或处理上述内存管理方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务端或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-OnlyMemory,缩写:ROM)或者随机存取存储器(RandomAccessMemory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (16)

1.一种内存管理方法,其特征在于,包括:
确定N个进程,其中,所述N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,所述每个进程的权限不同,N为大于或等于2的整数;
针对所述N个进程建立地址映射表和N个权限表,所述每个进程对应所述N个权限表中的一个权限表;所述地址映射表包括所述虚拟地址与所述物理地址的映射关系;所述N个权限表中的每个权限表包括对应进程在所述物理地址的权限信息;
当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,i取1、2、……、N。
2.如权利要求1所述的方法,其特征在于,所述根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,包括:
根据所述地址映射表确定所述第i个进程可访问的物理地址;
根据所述第i个进程对应的权限表确定所述第i个进程的权限;
通过所述第i个进程对所述物理地址对应的数据进行与所述权限相应的处理。
3.如权利要求1-2中任一项所述的方法,其特征在于,所述确定N个进程,包括:
获取M个进程中每个进程的虚拟地址,M为大于或等于N的整数;
确定所述M个进程中每个进程的虚拟地址对应的物理地址;
从所述M个进程中确定出虚拟地址相同,且所述虚拟地址对应的物理地址也相同的N个进程。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述针对所述N个进程建立地址映射表和N个权限表,包括:
根据所述N个进程的虚拟地址以及对应的物理地址,建立所述地址映射表;
根据所述N个进程中的每个进程的权限信息分别建立权限表,得到所述N个权限表。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述N个权限表中的每个权限表包括权限起始地址信息和权限结束地址信息,所述第i个进程对应的权限表的所述权限起始地址信息和所述权限结束地址信息对应的地址范围包括所述第i个进程可访问的物理地址对应的地址范围。
6.如权利要求1-5中任一项所述的方法,其特征在于,所述地址映射表还包括通用权限信息,所述通用权限信息包括所述N个进程中的每个进程的权限信息。
7.一种内存管理装置,其特征在于,包括:
确定模块,用于确定N个进程,其中,所述N个进程中的每个进程的虚拟地址相同,且所述每个进程的虚拟地址对应的物理地址也相同,所述每个进程的权限不同,N为大于或等于2的整数;
第一处理模块,用于针对所述N个进程建立地址映射表和N个权限表,所述每个进程对应所述N个权限表中的一个权限表;所述地址映射表包括所述虚拟地址与所述物理地址的映射关系;所述N个权限表中的每个权限表包括对应进程在所述物理地址的权限信息;
第二处理模块,用于当运行所述N个进程中的第i个进程时,根据所述地址映射表和所述第i个进程对应的权限表,对所述物理地址对应的数据进行处理,i取1、2、……、N。
8.如权利要求7所述的装置,其特征在于,所述第二处理模块,具体用于:
根据所述地址映射表确定所述第i个进程可访问的物理地址;
根据所述第i个进程对应的权限表确定所述第i个进程的权限;
通过所述第i个进程对所述物理地址对应的数据进行与所述权限相应的处理。
9.如权利要求7-8中任一项所述的装置,其特征在于,所述确定模块,具体用于:
获取M个进程中每个进程的虚拟地址,M为大于或等于N的整数;
确定所述M个进程中每个进程的虚拟地址对应的物理地址;
从所述M个进程中确定出虚拟地址相同,且所述虚拟地址对应的物理地址也相同的N个进程。
10.如权利要求7-9中任一项所述的装置,其特征在于,所述第一处理模块,具体用于:
根据所述N个进程的虚拟地址以及对应的物理地址,建立所述地址映射表;
根据所述N个进程中的每个进程的权限信息分别建立权限表,得到所述N个权限表。
11.如权利要求7-10中任一项所述的装置,其特征在于,所述N个权限表中的每个权限表包括权限起始地址信息和权限结束地址信息,所述第i个进程对应的权限表的所述权限起始地址信息和所述权限结束地址信息对应的地址范围包括所述第i个进程可访问的物理地址对应的地址范围。
12.如权利要求7-11中任一项所述的装置,其特征在于,所述地址映射表还包括通用权限信息,所述通用权限信息包括所述N个进程中的每个进程的权限信息。
13.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
14.一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行如权利要求1-6中任一项所述的方法。
15.一种终端设备,其特征在于,包括处理器和存储器,其中,所述存储器用于存储程序代码,所述程序代码被所述处理器执行时,所述终端设备实现如权利要求1-6中任一项所述的方法。
16.一种芯片系统,其特征在于,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述处理器执行时,权利要求1-6中任意一项所述的方法得以实现。
CN202211187534.0A 2022-09-28 2022-09-28 一种内存管理方法和相关设备 Pending CN117827417A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202211187534.0A CN117827417A (zh) 2022-09-28 2022-09-28 一种内存管理方法和相关设备
PCT/CN2023/117661 WO2024067018A1 (zh) 2022-09-28 2023-09-08 一种内存管理方法和相关设备
EP23870257.5A EP4575784A4 (en) 2022-09-28 2023-09-08 MEMORY MANAGEMENT METHOD AND ASSOCIATED DEVICE
US19/092,226 US20250225075A1 (en) 2022-09-28 2025-03-27 Memory Management Method and Related Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211187534.0A CN117827417A (zh) 2022-09-28 2022-09-28 一种内存管理方法和相关设备

Publications (1)

Publication Number Publication Date
CN117827417A true CN117827417A (zh) 2024-04-05

Family

ID=90476025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211187534.0A Pending CN117827417A (zh) 2022-09-28 2022-09-28 一种内存管理方法和相关设备

Country Status (4)

Country Link
US (1) US20250225075A1 (zh)
EP (1) EP4575784A4 (zh)
CN (1) CN117827417A (zh)
WO (1) WO2024067018A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119645670A (zh) * 2025-02-18 2025-03-18 北京开源芯片研究院 系统内存管理单元的配置方法、装置、设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119248423B (zh) * 2024-09-23 2025-06-10 奕行智能科技(广州)有限公司 一种内存的虚拟化方法、深度学习系统及其任务切换方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10915465B2 (en) * 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11392511B2 (en) * 2019-09-25 2022-07-19 Intel Corporation Secure address translation services using a permission table
CN113010452B (zh) * 2021-03-17 2023-11-28 中国科学技术大学 一种高效且支持QoS的虚拟内存架构
CN113064697B (zh) * 2021-04-01 2022-09-23 上海交通大学 利用多硬件特性加速微内核进程间通信的方法
CN114691552A (zh) * 2022-04-13 2022-07-01 山东浪潮科学研究院有限公司 一种应用于risc_v架构的低资源内存保护装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119645670A (zh) * 2025-02-18 2025-03-18 北京开源芯片研究院 系统内存管理单元的配置方法、装置、设备及存储介质
CN119645670B (zh) * 2025-02-18 2025-06-06 北京开源芯片研究院 系统内存管理单元的配置方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20250225075A1 (en) 2025-07-10
EP4575784A4 (en) 2025-12-10
WO2024067018A1 (zh) 2024-04-04
EP4575784A1 (en) 2025-06-25

Similar Documents

Publication Publication Date Title
US20210374069A1 (en) Method, system, and apparatus for page sizing extension
US8799621B2 (en) Translation table control
EP2994837B1 (en) Multi-core page table sets of attribute fields
US11216385B2 (en) Application processor, system-on chip and method of operating memory management unit
KR101179341B1 (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
EP4407470A1 (en) Request processing method, apparatus and system
US9146879B1 (en) Virtual memory management for real-time embedded devices
US20250225075A1 (en) Memory Management Method and Related Device
US10073644B2 (en) Electronic apparatus including memory modules that can operate in either memory mode or storage mode
CN114816666B (zh) 虚拟机管理器的配置方法、tlb管理方法及嵌入式实时操作系统
US20060069878A1 (en) System and method for virtualization of processor resources
JP2024512087A (ja) 階層型メモリ管理をオフロードするための方法及び装置
US20240281381A1 (en) Data storage apparatus and data processing method
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
WO2008031678A1 (en) Dmac address translation miss handling mechanism
US20250315377A1 (en) Hybrid-paging
CN111949562A (zh) 应用处理器、系统级芯片及操作存储器管理单元的方法
JP2001051958A (ja) 多重プロセッサ多成分アーキテクチャのための統一メモリ管理システム
CN111344686A (zh) 用于聚类物理存储器页面的子页面的系统和方法
EP4004743A1 (en) Unified kernel virtual address space for heterogeneous computing
US11106587B2 (en) Memory cache-line bounce reduction for shared I/O ring structures
CN113168380B (zh) 电子设备和地址访问方法
KR102544401B1 (ko) 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템

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