CN116541156A - 一种内存管理方法及相关装置 - Google Patents

一种内存管理方法及相关装置 Download PDF

Info

Publication number
CN116541156A
CN116541156A CN202210089685.6A CN202210089685A CN116541156A CN 116541156 A CN116541156 A CN 116541156A CN 202210089685 A CN202210089685 A CN 202210089685A CN 116541156 A CN116541156 A CN 116541156A
Authority
CN
China
Prior art keywords
page
memory
target
recycled
pages
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
CN202210089685.6A
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 CN202210089685.6A priority Critical patent/CN116541156A/zh
Publication of CN116541156A publication Critical patent/CN116541156A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/5022Mechanisms to release resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例公开了一种内存管理方法及相关装置,其特征在于,应用于电子设备,所述电子设备包括N个处理器CPU,和与所述N个CPU耦合的内存;所述方法包括:将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;判断所述目标待回收页是否为热页,所述热页为与目标CPU内部的高速缓存具有映射关系的内存页,所述目标CPU为所述N个CPU中的任意一个;若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。采用本申请实施例能够提高内存分配效率。

Description

一种内存管理方法及相关装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存管理方法及相关装置。
背景技术
随着计算机技术的发展以及人们对工作、生活的追求不断提高,终端设备上安装的应用程序(Application,APP)越来越丰富。内存管理作为操作系统的核心子系统之一,内存分配效率直接影响整个产品的性能及其用户体验。匿名页内存是应用程序使用内存的主要形态,匿名页具有以下特点,匿名页必须是单页;匿名页初始必须是清零状态。即在发生缺页的时候,内核为其分配的内存页必须要是清零状态。对一个4K的内存进行清零,其开销是比较大的,显著增加缺页的时延开销。
因此,如何提供一种内存管理方法,以提高内存分配效率是亟待解决的问题。
发明内容
本申请实施例所要解决的技术问题在于,提供一种内存管理方法及相关装置,以提高内存分配效率。
第一方面,本申请实施案例提供一种内存管理方法,其特征在于,应用于电子设备,所述电子设备包括N个处理器CPU,和与所述N个CPU耦合的内存;所述方法包括:将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;判断所述目标待回收页是否为热页,所述热页为与目标CPU内部的高速缓存具有映射关系的内存页,所述目标CPU为所述N个CPU中的任意一个;若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。
在本申请实施例中,当电子设备中的内存中的内存页需要回收(也可称为内存释放)时,即将待回收的内存页上记录的数据进行清零,进行清零之后再进一步判断该内存页是否与目标CPU的高速缓存建立了映射关系,也即是判断该内存页是否为热页,若是,则可以将该页的页标识添加至目标CPU的内存页链表的头部,以便目标CPU发生缺页中断(即目标CPU申请使用内存页)时,将清零回收后的内存页直接分配给该目标CPU使用,从而提升内存分配效率。而现有技术中,在进行内存页回收时,将获取到的待回收内存页的页标识直接添加至待分配内存页链表中,当目标CPU发生缺页中断时,需要将链表中的内存页进行清零处理,然后再分配给目标CPU使用。与现有技术相比,在内存页回收过程中,本申请实施例增加了对内存页进行清零的过程,以实现将内存清零的时间开销从内存分配时转移到内存回收时(即在分配内存页时无需进行清零步骤),避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的分配效率。同时,由于将与目标CPU的高速缓存建立了映射关系的目标待回收页的页标识添加至内存页链表的头部,因此基于内存页链表为目标CPU分配内存页时,可为目标CPU优先分配清零后的热页(已与目标CPU的高速缓存建立映射关系的内存页),因此目标CPU可以直接对该页进行读或写等操作,避免了需与高速缓存建立映射关系而增加时间开销的问题,从而能够提升访问内存页的效率。
在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
在本申请实施例中,匿名页,是没有文件背景的页面,如堆,栈,数据段等,无法与磁盘(即外部存储器)进行文件交换;匿名页可为应用程序动态分配的堆内存,可用于临时存储应用程序运行过程中产生的数据。单页可以指内存中的一个物理页(如可以为4K大小的物理页)。因此,将应用程序刚使用完的匿名页,或是系统中待回收的单页,进行清零后回收,以便处理器发生缺页中断时,将清零回收后的内存页分配给处理器使用,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的利用率及内存的分配效率。
在一种可能的实现方式中,所述将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页,包括:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
在本申请实施例中,将目标内存页进行清零时,可以先判断该目标内存页是否为直接映射内存(即物理地址已经与逻辑地址建立了映射关系的内存页),若是,则可以直接基于该目标内存页的逻辑地址进行数据清零(即擦除数据),以得到能够重新使用的内存页(即清零后的目标待回收页)。若否,则代表当前目标内存页没有逻辑地址,操作系统内核不能直接对该目标内存页进行操作,因此可先获取一段未使用的逻辑地址与该目标内存页的物理地址建立映射关系,进而可以对该目标内存页进行操作,然后通过该逻辑地址对目标内存页进行数据清零处理,以得到能够重新使用的内存页。进一步地,当处理器发生缺页中断时,可将清零回收后的内存页分配给处理器使用,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的利用率及内存的分配效率。
在一种可能的实现方式中,所述方法还包括:若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。
在本申请实施例中,若目标待回收页不为热页(即为冷页),则可以将该目标待回收页添加至内存页链表的尾部,以便在进行内存分配时,优先分配在高速缓存中(即热页)的清零空闲页,然后再分配冷页(即不在高速缓存中的清零空闲页),从而提升内存分配效率。
在一种可能的实现方式中,所述方法还包括:当所述目标CPU申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
在本申请实施例中,当目标CPU申请使用内存时,可先从目标CPU对应的内存页链表的头部开始分配目标待回收页,即优先分配清零后的热页,由于数据清零是在内存页回收时进行的,即将内存清零的时间开销转移到释放内存时,当处理器发生缺页中断时,可以直接分配清零后的内存页,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升分配内存页的效率。同时,由于优先分配清零后的热页,因此目标CPU可以直接对该目标待回收页进行读或写等操作,避免了需与高速缓存建立映射关系而增加时间开销的问题,提升了访问内存页的效率。
在一种可能的实现方式中,所述方法还包括:当所述目标CPU对应的所述内存页链表为空时,获取所述内存中的空闲内存页;将所述空闲内存页进行清零,并分配给所述目标CPU。
在本申请实施例中,当目标CPU申请使用内存页时,若目标CPU对应的内存页链表中没有清零后的内存页,为了避免目标CPU出现异常(即由于目标CPU没有清零内存页使用而导致的异常)的问题,可从Buddy系统中获取一个可用内存页(即空闲页),然后将该空闲页进行清零后,再分配给该目标CPU使用,从而提升内存的利用率。
在一种可能的实现方式中,所述方法还包括:判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
在本申请实施例中,每个内存页链表中能够记录的目标待回收页的数量是有限的,可以为一个预设值,因此可判断内存页链表中所记录的目标待回收页的数量是否超过预设值。若超过,则可以将一定数量的目标待回收页的页标识添加至内存管理链表,该内存管理链表可以为Buddy系统中的链表,用于管理电子设备中多个CPU所使用的空闲物理内存页,从而提升内存利用率。
第二方面,本申请提供了一种内存管理装置,其特征在于,所述内存管理装置包括N个处理器CPU,和与所述N个CPU耦合的内存;所述N个处理器CPU中的目标CPU用于,将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;所述目标CPU为所述N个CPU中的任意一个;判断所述目标待回收页是否为热页,所述热页为与所述目标CPU内部的高速缓存具有映射关系的内存页,若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。
在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
在一种可能的实现方式中,所述目标CPU具体用于:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
在一种可能的实现方式中,所述目标CPU还用于:若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。
在一种可能的实现方式中,所述目标CPU还用于:当所述目标CPU申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
在一种可能的实现方式中,所述目标CPU还用于:当所述目标CPU对应的所述内存页链表为空时,获取所述内存中的空闲内存页;将所述空闲内存页进行清零,并分配给所述目标CPU。
在一种可能的实现方式中,所述目标CPU还用于:判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
第三方面,本申请实施例提供的一种内存管理装置,应用于电子设备,所述电子设备包括N个处理器CPU,和所述N个CPU耦合的内存。第一处理单元,用于将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;第一判断单元,用于判断所述目标待回收页是否为热页,所述热页为与目标CPU内部的高速缓存具有映射关系的内存页,所述目标CPU为所述N个CPU中的任意一个;第一添加单元,用于若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。
在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
在一种可能的实现方式中,所述第一处理单元具体用于:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
在一种可能的实现方式中,所述装置还包括:第二添加单元用于,若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。
在一种可能的实现方式中,所述装置还包括:第二处理单元用于,当所述目标CPU申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
在一种可能的实现方式中,所述装置还包括:第三处理单元用于,当所述目标CPU对应的所述内存页链表为空时,获取所述内存中的空闲内存页的页标识;将所述页标识对应的空闲内存页进行清零,并分配给所述目标CPU。
在一种可能的实现方式中,所述装置还包括:第四处理单元,用于判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
第四方面,本申请提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面任意一项所述的方法。
第五方面,本申请实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现第一方面提供的一种内存管理方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能,例如,生成或处理上述内存管理方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述第一方面中任意一项所述的方法。
附图说明
图1为本申请实施例提供的一种电子设备的结构示意图。
图2为本申请实施例中的一种内存管理方法的流程示意图。
图3为本申请实施例提供的另一种电子设备的示意图。
图4为本申请实施例提供的一种内存回收示意图。
图5为本申请实施例提供的一种内存回收的流程示意图。
图6为本申请实施例提供的一种内存页分配流程示意图。
图7是本申请实施例提供的一种内存管理装置的结构示意图。
图8是本申请实施例提供的一种内存管理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先,对本申请实施例涉及的一些术语进行简单介绍。
(1)伙伴系统(Buddy System)。在实际应用中,经常需要分配一组连续的页框,而频繁地申请和释放不同大小的连续页框,必然导致在已分配页框的内存块中分散了许多小块的空闲页框。这样,即使这些页框是空闲的,其他需要分配连续页框的应用也很难得到满足。为了避免出现这种情况,Linux内核中引入了伙伴系统算法(buddy system)。把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512和1024个连续页框的页框块。最大可以申请1024个连续页框,对应4MB大小的连续内存。每个页框块的第一个页框的物理地址是该块大小的整数倍。假设,需要申请一个256个页框的块,可先从256个页框的链表中查找空闲块,如果没有,就去512个页框的链表中找,找到了则将页框块分为2个256个页框的块,一个分配给应用,另外一个移到256个页框的链表中。如果512个页框的链表中仍没有空闲块,继续向1024个页框的链表查找,如果仍然没有,则返回错误。页框块在释放时,会主动将两个连续的页框块合并为一个较大的页框块。
(2)直接映射区(Direct Memory Region),从内核空间起始地址开始,最大896M的内核空间地址区间,为直接内存映射区。直接映射区的896MB的线性地址直接与物理地址的前896MB进行映射,也即是线性地址和分配的物理地址都是连续的。内核地址空间的线性地址0xC0000001所对应的物理地址为0x00000001,它们之间相差一个偏移量PAGE_OFFSET=0xC0000000。该区域的线性地址和物理地址存在线性转换关系,即线性地址=PAGE_OFFSET+物理地址。也可以用virt_to_phys()函数将内核虚拟空间中的线性地址转化为物理地址。
(3)高端内存线性地址空间,内核空间线性地址从896M到1G的区间,容量128MB的地址区间是高端内存线性地址空间。
(4)缺页中断,即进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现它要访问的页没有在内存中(即存在位为0),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过从外存加载该页的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。
基于上述,本申请实施例提供一种电子设备。请参见图1,图1为本申请实施例提供的一种电子设备的结构示意图,该电子设备10可以为任何产生数据的计算设备,如服务器、个人计算机、平板电脑、手机、个人数字助理、智能穿戴设备等各类设备。电子设备10中可包括本申请实施例提供的内存管理装置,具体可以是芯片或芯片组或搭载有芯片或者芯片组的电路板,该芯片或芯片组或搭载有芯片或芯片组的电路板可在必要的软件驱动下工作。具体地,
电子设备10,可包括处理器(central processing unit,CPU)100、内存储器101。可选的,还可以包括主机控制器102,进一步地,还可以包括图1中未示出的电源、其他输入输出控制器和接口等应用处理侧的所有物理器件。其中,
处理器100:可运行操作系统、内存管理系统(如Linux内存管理系统)或应用程序等,以控制连接到处理器100的多个硬件或软件元件,并且可处理各种数据并执行操作。处理器100可将外部存储设备(如磁盘)中存储的指令或数据加载到内存储器101中,并把需要运算的指令或数据调到处理器100中进行运算,当运算完成后处理器100再将结果临时存储在内存储器101中,并将需要长期存储的指令或数据通过主机控制器102存储至外部存储器中。处理器100可以包括一个或多个处理单元(也可称处理核),例如:处理器100可以包括中央处理单元(CPU)、应用处理单元(application processor,AP)、调制解调处理单元、图形处理单元(graphics processing unit,GPU)、图像信号处理单元(image signalprocessor,ISP)、视频编解码单元、数字信号处理单元(digital signal processor,DSP)、基带处理单元和神经网络处理单元(neural-network processing unit,NPU)等中的一个或多个。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个器件中。可选的,处理器100中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器100中的存储器为高速缓冲存储器(Cache)。所述Cache可以保存处理器100刚用过或循环使用的指令或数据。如果处理器100需要再次使用该指令或数据,可从所述Cache中直接调用。避免了重复存取,减少了处理器100的等待时间,因而提高了系统的效率。进一步地,处理器100还可被实现为片上系统(System on Chip,SoC)。需要说明的是,L1Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般服务器CPU的L1缓存的容量通常在32—256KB。L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,现在家庭用CPU容量最大的是4MB,而服务器和工作站上用CPU的L2高速缓存普遍大于4MB,有的高达8MB或者19MB。L3 Cache为三级缓存是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。
内存储器101,通常为掉电易失性存储器,断电时会丢失其上存储的内容,也可称为内存(Memory)或主存储器。本申请中的内存储器101可包括可读可写的运行内存,其作用是用于暂时存放处理器100中的运算数据,可作为操作系统或其他正在运行中的程序的临时数据的存储媒介。例如,运行于处理器100上的操作系统把需要运算的数据从内存储器101调到处理器100中进行运算,当运算完成后处理器100再将结果传送出来。
内存储器101可以包括,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)等中的一种或多种。其中,DRAM又包括双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM)简称DDR、二代双倍速率同步动态随机存储器(DDR2)、三代双倍速率同步动态随机存储器(DDR3)、四代低功耗双倍数据率同步动态随机存储器(Low Power Double DataRate 4,LPDDR4)和五代低功耗双倍数据率同步动态随机存储器(Low Power Double DataRate 5,LPDDR5)等。
主机控制器102,用于管理并控制电子设备10与外部存储设备(如磁盘)之间的通信,并为电子设备10和外部存储器之间的通信提供标准化(例如通用闪存存储UFS标准)的接口。具体地,主机控制器102可以根据处理器100发出的读/写等请求,向外部存储器传递命令(例如,写入、读取、擦除等命令)及数据,以及根据外部存储器读/写数据等结果向电子设备10反馈事件(如命令完成事件、命令状态事件、硬件出错事件等)。可选的,该主机控制器102的功能也可以集成在处理器100中,即由处理器100完成主机控制器102的上述功能,此处不作具体限定。
可以理解的是,图1中的一种电子设备只是本申请实施例中的一种示例性的实施方式,本申请实施例中的电子设备包括但不仅限于以上架构。
下面对本申请实施例所基于的具体方法架构进行描述。
参见图2,图2为本申请实施例中的一种内存管理方法的流程示意图,下面将结合附图2并基于上述图1中的电子设备对本申请实施例中的内存管理方法进行描述。需要说明的是,该内存管理方法应用于电子设备(该内存管理方法的执行主体可以为运行在电子设备上的操作系统,或是相关软件),如图3所示,图3为本申请实施例提供的另一种电子设备的示意图,所述电子设备包括N个处理器CPU,和与所述N个CPU耦合的内存,内存可由多个存储块(Block)组成,且每个存储块由多个内存页组成。其中,该电子设备中N个处理器CPU中的每个CPU可以为上述图1中的处理器100;内存可以为上述图1中的内存储器101。因此,为了更详细的描述本申请实施例中的内存管理方法,本申请在各个流程步骤中描述了相应的执行主体为电子设备,但不代表本申请实施例只能通过所描述的执行主体进行对应的方法流程。
步骤S201:电子设备将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页。
具体地,内存通常为掉电易失性存储器,断电时会丢失其上存储的内容。本申请中的内存可包括可读可写的运行内存,其作用是暂时存放处理器中的运算数据,可作为操作系统或其他正在运行中的应用程序的临时数据的存储媒介。例如,运行于处理器上的应用程序把需要运算的数据从内存调到处理器中进行运算,当运算完成后处理器再将结果传送出来。待回收的目标内存页可以理解为程序完成了对该内存页的访问计算,进而该内存页的内容可以丢弃,从而该内存页可以回收,进一步可通过操作系统回收管理,用于后续新的内存分配使用。但由于处理器并不能直接使用这些目标内存页,进而可在内存回收前,将这些目标内存页进行清零,即将内存页上记录的数据擦除。
在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。具体地,匿名页(Anonymous page),是没有文件背景的页面,如堆,栈,数据段等,无法与磁盘(即外部存储器)进行文件交换;匿名页为应用程序动态分配的堆内存,可用于临时存储应用程序运行过程中产生的数据。单页可以指内存中的一个物理页(如可以为4K大小的物理页)。因此,将应用程序刚使用完的匿名页,或是系统中待回收的单页,以便处理器发生缺页中断时,将清零回收后的内存页分配给处理器使用,避免因内存不足导致前台运行的应用无法正常运行或者运行卡顿的情况,从而提升内存的利用率及内存的分配效率。
在一种可能的实现方式中,所述电子设备将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页,包括:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。具体地,处理器是通过寻址来访问内存页的。32位CPU的寻址范围是0~0xFFFFFFFF,可支持的物理内存最大是4G。但在实践过程中发现,多个应用程序同时需要占用的内存总量大于4G或者程序需要使用4G内存,但是可用物理内存小于4G。为了解决内存不够用的问题,CPU引入内存管理单元(Memory Management Unit,MMU),MMU的核心思想是利用虚拟地址(也可以称之为逻辑地址)替代物理地址,即CPU寻址时使用虚拟地址,由MMU负责将虚拟地址映射为物理地址。MMU的引入,解决了对物理内存的限制,对程序来说,就像自己在使用4G内存一样。从数据结构上,保证了访问内存的高效,并使操作系统能支持非连续性的内存分配。因此,在电子设备(可以为电子设备上运行的操作系统)将目标内存页进行清零前,可以先判断该目标内存页是否为直接映射内存(即物理地址已经与逻辑地址建立了映射关系的内存页),若是,则可以直接基于该目标内存页的逻辑地址进行数据清零(即擦除数据),以得到能够重新使用的内存页(即清零后的目标待回收页);若否,则代表当前目标内存页没有逻辑地址,操作系统不能直接对该目标内存页进行操作,因此可先获取一段未使用的逻辑地址与该目标内存页的物理地址建立映射关系,进而目标CPU可以对该目标内存页进行操作,然后通过该逻辑地址对目标内存页进行数据清零处理,以得到能够重新使用的内存页。
步骤S202:电子设备判断所述目标待回收页是否为热页。
具体地,所述热页为与目标CPU内部的高速缓存具有映射关系的内存页,所述目标CPU为所述N个CPU中的任意一个。如图3所示,内存管理装置中的每个处理器中都可包括一个高速缓存(Cache),所述每个Cache都可以保存对应的处理器刚用过或循环使用的指令或数据。如果处理器需要再次使用该指令或数据,可从所述Cache中直接调用,避免了重复存取,减少了处理器的等待时间,因而提高了系统的效率。在Linux的物理内存管理的伙伴系统(Buddy System)中,引入了冷页和热页的概念。冷页表示该空闲页已经不再高速缓存中了(一般是指L2 Cache),热页表示该空闲页仍然在高速缓存中(即内存页与高速缓存之间具有映射关系)。在分配空闲页时,如果分配一个热页,由于该页已经存在于L2缓存中,即内存页无需重新与高速缓存建立映射关系,就可以直接对清零后的热页进行读或写操作。如果分配一个冷页,说明该页不在L2 Cache中,还需访问内存,以建立内存页和高速缓存之间的映射关系,然后再进行读或写操作。一般情况下,尽可能分配热页。
步骤S203:若所述目标待回收页为所述热页,则电子设备将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部。
具体地,所述内存页链表用于从所述内存中为所述目标CPU分配内存页。页标识,为用于标记内存页的标识,不同内存页的页标识不同。若目标待回收页为热页,则可以将该目标待回收页的页标识添加至内存页链表的头部,以便在进行内存分配时,优先分配在高速缓存中(即热页)的清零空闲页。需要说明的是,中央处理器具有多级cache机制,最近访问过的页,在L1/L2/L3 cache中都有该页的cache,即L1/L2/L3 cache和该页有cache映射关系。由于将目标CPU的高速缓存建立了映射关系的目标待回收页的页标识添加至内存页链表的头部,因此基于内存页链表为目标CPU分配内存页时,可为目标CPU优先分配清零后的热页(已与目标CPU的高速缓存建立映射关系的内存页),因此目标CPU可以直接对该页进行读或写等操作,避免了需与高速缓存建立映射关系而增加时间开销的问题,从而能够提升访问内存页的效率。还需要说明的是,内存页链表可以为双向添加的链表。
在一种可能的实现方式中,所述方法还包括:若所述目标待回收页不为所述热页,则电子设备将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。具体地,若目标待回收页不为热页(即为冷页),则可以将该目标待回收页添加至内存页链表的尾部,以便在进行内存分配时,优先分配在高速缓存中(即热页)的清零空闲页,然后再分配冷页,从而提升内存分配效率。例如,如图4所示,图4为本申请实施例提供的一种内存回收示意图,对于电子设备中包括的多个CPU来说,可由操作系统软件负责给每个CPU对应的内存页链表(如prezerod_list链表)分配内存页和进行内存页的回收。需要说明的是,可在现有的每个CPU的PCP(per cpu pages)链表的基础上添加该内存页链表。针对一个目标CPU(如图4中的CPU0)来说,在进行内存回收时,可以先将目标内存页进行清零处理得到目标待回收页,然后在判断该目标待回收页是否为热页,若是热页则将该目标待回收页的页标识添加至内存页链表的头部,以使得在分配内存时,优先分配清零后的热页,由于数据清零是在内存页回收时进行的,即将内存清零的时间开销转移到释放内存时,当处理器发生缺页中断时,可以直接分配清零后的内存页,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升分配内存页的效率。同时,由于优先分配清零后的热页,因此目标CPU可以直接对该页进行读或写等操作,提升了访问内存页的效率。
例如,如图5所示,图5为本申请实施例提供的一种内存回收的流程示意图,图中包括步骤S301-步骤S309,详细描述如下。需要说明的是,步骤S301-步骤S309的执行主体可以为电子设备中包括的多个CPU中的目标CPU。在内存页回收过程中,当获取到目标内存页后,可判断目标内存页是否为高端内存(即非直接映射内存),也可以理解为判断目标内存页是否为直接映射内存,若是,则获取固定映射的内核态地址,并将其和该目标内存页建立映射,然后获取该目标内存页的内核态地址。进一步地,通过内核态地址将该目标内存页进行清零,得到目标待回收页。接下来,可判断当前目标待回收页是否为热页,若是,则将该目标待回收页的页标识添加至内存页链表的头部;若否,则将该目标待回收页的页标识添加至内存页链表的尾部。此外,还可判断该内存页链表中的页面数量是否超出预设值,若内存页链表中的页面数量超出预设值,则可将一定数量的内存页返回至Buddy系统中。
在一种可能的实现方式中,所述方法还包括:当所述目标CPU申请使用内存页时,电子设备从对应的所述内存页链表的头部开始分配所述目标待回收页。具体地,当发生缺页中断时,即所述目标CPU申请使用内存时,可先从目标CPU对应的内存页链表的头部开始分配目标待回收页即已完成清零后的空闲页。例如,如图6所示,图6为本申请实施例提供的一种内存页分配流程示意图,图中当目标CPU(如图6中的CPU0)发生缺页中断时,可先从目标CPU对应的内存页链表的头部开始分配目标待回收页,即优先分配清零后的热页,由于数据清零是在内存页回收时进行的,当处理器发生缺页中断时,可以直接分配清零后的内存页,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升分配内存页的效率。同时由于优先分配在高速缓存中(即热页)的清零空闲页,因此目标CPU可以直接对该页进行读或写等操作,提升了访问内存页的效率及内存分配效率。
需要说明的是,缺页中断,即进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现它要访问的页没有在内存中(即没有映射到物理页内存时),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过从外存加载该页的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。
在一种可能的实现方式中,所述方法还包括:当所述目标CPU对应的所述内存页链表为空时,电子设备获取所述内存中的空闲内存页的页标识;将所述页标识对应的空闲内存页进行清零,并分配给所述目标CPU。具体地,当发生缺页中断时,即所述目标CPU申请使用内存页时,若目标CPU对应的内存页链表中没有清零后的空闲页,为了避免目标CPU出现异常(即由于目标CPU没有清零内存页使用而导致的异常)的问题,可从Buddy系统中获取空闲页,然后将该空闲页进行清零后,再分配给该目标CPU使用,从而提升内存的利用率。
在一种可能的实现方式中,所述方法还包括:电子设备判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。具体地,若电子设备中包括了N个CPU,则每个CPU都会对应一个内存页链表,且每个内存页链表中能够记录的目标待回收页数量是有限的,可以为一个预设值,因此可判断内存页链表中所记录的目标待回收页的数量是否超过预设值,若超过可以将一定数量目标待回收页的页标识添加至内存管理链表。优选的,可从内存页链表尾部取出一定数量目标待回收页的页标识添加至内存管理链表。该内存管理链表可以为Buddy系统中的链表,用于管理电子设备中N个CPU所使用的空闲物理内存页(即内存管理链表可用于管理系统所有的可用内存),从而提升内存利用率。例如,假设目标CPU对应的内存页链表中仅能记录100个目标待回收页的页标识,当内存页链表中记录的页标识数量超过100后,可以将一定数量的目标待回收的页标识添加至Buddy系统中。
在本申请实施例中,当电子设备中的内存中的内存页需要回收(也可称为内存释放)时,即将待回收的内存页上记录的数据进行清零,进行清零之后再进一步判断该内存页是否与目标CPU的高速缓存建立了映射关系,也即是判断该内存页是否为热页,若是,则可以将该页的页标识添加至目标CPU的内存页链表的头部,以便目标CPU发生缺页中断(即目标CPU申请使用内存页)时,将清零回收后的内存页直接分配给该目标CPU使用,从而提升内存分配效率。而现有技术中,在进行内存页回收时,将获取到的待回收内存页的页标识直接添加至待分配内存页链表中,当目标CPU发生缺页中断时,需要将链表中的内存页进行清零处理,然后再分配给目标CPU使用。与现有技术相比,在内存页回收过程中,本申请实施例增加了对内存页进行清零的过程,以实现将内存清零的时间开销从内存分配时转移到内存回收时,避免了在分配内存页过程中进行内存清零导致时间开销增加的问题,从而提升内存的分配效率。同时,由于将与目标CPU的高速缓存建立了映射关系的目标待回收页的页标识添加至内存页链表的头部,因此基于内存页链表为目标CPU分配内存页时,可为目标CPU优先分配清零后的热页(已与目标CPU的高速缓存建立映射关系的内存页),因此目标CPU可以直接对该页进行读或写等操作,避免了需与高速缓存建立映射关系而增加时间开销的问题,从而能够提升访问内存页的效率。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的相关装置。
请参见图7,图7是本申请实施例提供的一种内存管理装置的结构示意图,该内存管理装置70可以包括N个处理器CPU701,和所述N个CPU耦合的内存702。其中,各个单元的详细描述如下。
所述N个处理器CPU中的目标CPU701用于,将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;所述目标CPU701为所述N个CPU中的任意一个;
判断所述目标待回收页是否为热页,所述热页为与所述目标CPU701内部的高速缓存具有映射关系的内存页;
若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU701对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU701分配内存页。
在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
在一种可能的实现方式中,所述目标CPU701具体用于:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
在一种可能的实现方式中,所述目标CPU701还用于:若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU701对应的所述内存页链表的尾部。
在一种可能的实现方式中,所述目标CPU701还用于:当所述目标CPU701申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
在一种可能的实现方式中,所述目标CPU701还用于:当所述目标CPU701对应的所述内存页链表为空时,获取所述内存中的空闲内存页的页标识;将所述页标识对应的空闲内存页进行清零,并分配给所述目标CPU701。
在一种可能的实现方式中,所述目标CPU701还用于:判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
需要说明的是,本申请实施例中所描述的内存管理装置70中各功能模块能参见上述图2所述的方法实施例中步骤S201-步骤S203的相关描述,此处不再赘述。
请参见图8,图8是本申请实施例提供的一种内存管理装置的结构示意图,该内存管理装置80应用于电子设备,所述电子设备包括N个处理器CPU,和所述N个CPU耦合的内存。内存管理装置80包括第一处理单元801,第一判断单元802,第一添加单元803,第二添加单元804,第二处理单元805,第三处理单元806,第四处理单元807。其中,各个单元的详细描述如下。
第一处理单元801,用于将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;
第一判断单元802,用于判断所述目标待回收页是否为热页,所述热页为与目标CPU内部的高速缓存具有映射关系的内存页,所述目标CPU为所述N个CPU中的任意一个;
第一添加单元803,用于若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。
在一种可能的实现方式中,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
在一种可能的实现方式中,所述第一处理单元801具体用于:判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
在一种可能的实现方式中,所述装置还包括:第二添加单元804用于,若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。
在一种可能的实现方式中,所述装置还包括:第二处理单元805用于,当所述目标CPU申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
在一种可能的实现方式中,所述装置还包括:第三处理单元806用于,当所述目标CPU对应的所述内存页链表为空时,获取所述内存中的空闲内存页的页标识;将所述页标识对应的空闲内存页进行清零,并分配给所述目标CPU。
在一种可能的实现方式中,所述装置还包括:第四处理单元807,用于判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
需要说明的是,本申请实施例中所描述的内存管理装置80中各功能模块能参见上述图2所述的方法实施例中步骤S201-步骤S203的相关描述,此处不再赘述。
本申请提供了一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种内存管理方法。
本申请实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现上述任意一种内存管理方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述所涉及的功能,例如,生成或处理上述一种内存管理方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请提供一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述一种内存管理方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (17)

1.一种内存管理方法,其特征在于,应用于电子设备,所述电子设备包括N个处理器CPU,和与所述N个CPU耦合的内存,所述方法包括:
将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;
判断所述目标待回收页是否为热页,所述热页为与目标CPU内部的高速缓存具有映射关系的内存页,所述目标CPU为所述N个CPU中的任意一个;
若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。
2.如权利要求1所述的方法,其特征在于,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
3.如权利要求1或2所述的方法,其特征在于,所述将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页,包括:
判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;
若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;
若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
4.如权利要求1-3任意一项所述的方法,其特征在于,所述方法还包括:
若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。
5.如权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括:
当所述目标CPU申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当所述目标CPU对应的所述内存页链表为空时,获取所述内存中的空闲内存页;
将所述空闲内存页进行清零,并分配给所述目标CPU。
7.如权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:
判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;
若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
8.一种内存管理装置,其特征在于,所述内存管理装置包括N个处理器CPU,和与所述N个CPU耦合的内存;
所述N个处理器CPU中的目标CPU用于,将所述内存中待回收的目标内存页进行清零,得到清零后的目标待回收页;所述目标CPU为所述N个CPU中的任意一个;判断所述目标待回收页是否为热页,所述热页为与所述目标CPU内部的高速缓存具有映射关系的内存页,若所述目标待回收页为所述热页,则将所述目标待回收页的页标识添加至所述目标CPU对应的内存页链表的头部;所述内存页链表用于从所述内存中为所述目标CPU分配内存页。
9.如权利要求8所述的装置,其特征在于,所述目标内存页为所述内存中应用程序使用完且待回收的匿名内存页,或是所述目标内存页为操作系统中待回收的单页。
10.如权利要求8或9所述的装置,其特征在于,所述目标CPU具体用于:
判断所述目标内存页是否为直接映射内存页,所述直接映射内存页为物理地址已经与逻辑地址建立了映射关系的内存页;
若是,则基于所述目标内存页对应的逻辑地址进行清零,得到所述目标待回收页;
若否,则获取未使用的逻辑地址与所述目标内存页的物理地址建立映射关系,并基于所述未使用的逻辑地址进行清零,得到所述目标待回收页。
11.如权利要求8-10任意一项所述的装置,其特征在于,所述目标CPU还用于:
若所述目标待回收页不为所述热页,则将清零后的所述目标待回收页的页标识添加至所述目标CPU对应的所述内存页链表的尾部。
12.如权利要求8-11任意一项所述的装置,其特征在于,所述目标CPU还用于:
当所述目标CPU申请使用内存页时,从对应的所述内存页链表的头部开始分配所述目标待回收页。
13.如权利要求12所述的装置,其特征在于,所述目标CPU还用于:
当所述目标CPU对应的所述内存页链表为空时,获取所述内存中的空闲内存页;
将所述空闲内存页进行清零,并分配给所述目标CPU。
14.如权利要求8-13任意一项所述的装置,其特征在于,所述目标CPU还用于:
判断所述内存页链表中所包括的所述目标待回收页的数量是否大于预设值;
若所述目标待回收页的数量大于所述预设值,则将预设数量的所述目标待回收页的页标识添加至内存管理链表;所述内存管理链表用于管理所述N个CPU所使用的空闲物理内存页。
15.一种芯片系统,其特征在于,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述处理器执行时,权利要求1-7任意一项所述的方法得以实现。
16.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求1-7任意一项所述的方法。
17.一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行如权利要求1-7任意一项所述的方法。
CN202210089685.6A 2022-01-25 2022-01-25 一种内存管理方法及相关装置 Pending CN116541156A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210089685.6A CN116541156A (zh) 2022-01-25 2022-01-25 一种内存管理方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210089685.6A CN116541156A (zh) 2022-01-25 2022-01-25 一种内存管理方法及相关装置

Publications (1)

Publication Number Publication Date
CN116541156A true CN116541156A (zh) 2023-08-04

Family

ID=87447630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210089685.6A Pending CN116541156A (zh) 2022-01-25 2022-01-25 一种内存管理方法及相关装置

Country Status (1)

Country Link
CN (1) CN116541156A (zh)

Similar Documents

Publication Publication Date Title
US11636038B2 (en) Method and apparatus for controlling cache line storage in cache memory
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US11768632B2 (en) Memory system and method of controlling nonvolatile memory
US10379746B2 (en) Information processing apparatus, storage device, and computer program product
CN108804350B (zh) 一种内存访问方法及计算机系统
US11150962B2 (en) Applying an allocation policy to capture memory calls using a memory allocation capture library
US20160026406A1 (en) Methods, systems, and computer readable media for providing flexible host memory buffer
KR101442091B1 (ko) 가상화 시스템에서의 메모리 관리 방법
CN110955495B (zh) 虚拟化内存的管理方法、装置和存储介质
US11907129B2 (en) Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor
CN111679914B (zh) 一种内存管理方法、系统、计算机设备及存储介质
CN113039531B (zh) 用于分配缓存资源的方法、系统和存储介质
WO2016138785A1 (zh) 一种运行进程的方法及装置
US20230244394A1 (en) Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive
JP2021034052A (ja) 異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US9552295B2 (en) Performance and energy efficiency while using large pages
US10331570B2 (en) Real time memory address translation device
US11972110B2 (en) Storage device and storage system
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
CN116541156A (zh) 一种内存管理方法及相关装置
WO2022262345A1 (zh) 一种数据管理方法、存储空间管理方法及装置
CN108536619B (zh) 快速恢复ftl表的方法与装置
US20240095179A1 (en) Data processing system and memory management method of data processing system
WO2022021337A1 (zh) 闪存控制方法和装置

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