CN116954918A - 一种内存管理方法、内存装置、计算机设备和存储介质 - Google Patents
一种内存管理方法、内存装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116954918A CN116954918A CN202310959793.9A CN202310959793A CN116954918A CN 116954918 A CN116954918 A CN 116954918A CN 202310959793 A CN202310959793 A CN 202310959793A CN 116954918 A CN116954918 A CN 116954918A
- Authority
- CN
- China
- Prior art keywords
- memory
- physical
- pool
- page
- processor
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 491
- 238000007726 management method Methods 0.000 title claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000005055 memory storage Effects 0.000 claims abstract description 19
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000005056 compaction Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 abstract description 9
- 230000001133 acceleration Effects 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 239000013589 supplement Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
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
本发明提供一种内存管理方法、内存装置、计算机设备和存储介质,所述方法包括:根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器;本发明同时满足了传统物理存储和存内计算的需求,降低了处理器和内存之间的数据传输瓶颈,提高了处理器的计算能力,避免了程序无需PIM参与或从PIM加速中收益较低的情况下资源被闲置浪费的情况。
Description
技术领域
本发明涉及内存管理技术领域,具体涉及一种内存管理方法、内存装置、计算机设备和存储介质。
背景技术
在传统计算机体系架构(冯诺依曼架构)中,处理器需要从内存中读取数据,进行计算后再将结果存回内存,这样的过程存在频繁的内存读写,会造成较大的延迟和能耗,使处理器在等待内存读取和写入数据的时间比数据计算的时长要长得多,从而使处理器与内存之间存在数据传输瓶颈。一方面,随着大数据、物联网等应用的普及和数据规模的不断增大,处理器和内存之间的数据传输瓶颈导致处理器的数据计算效率低下;另一方面,随着深度学习的发展,深度神经网络模型的参数量飞速增长,对处理器的计算能力和功耗开销的要求也越来越高;因此,现有技术中的内存管理方法使处理器和内存之间存在的数据传输瓶颈,不能满足数据计算需求。
发明内容
针对相关技术中所存在的不足,本发明提供的一种内存管理方法、内存装置、计算机设备和存储介质,其解决现有技术中的内存管理方法使处理器和内存之间存在的数据传输瓶颈。
第一方面,本发明提供一种内存管理方法,应用于支持存内计算的内存装置,所述内存装置包括与至少一个处理器相连的内存控制器、多个支持内存读写操作的第一物理内存组件,以及多个支持内存读写操作和存内计算的第二物理内存组件,每个物理内存组件包括若干个存储数据的物理页,所述方法包括:根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
可选地,所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,包括:当所述物理内存分配请求中的操作类型为读写操作型时,所述内存控制器从全局内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用;当所述物理内存分配请求中的操作类型为存内计算型时,所述内存控制器从存内计算内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为存内占用。
可选地,当所述物理内存分配请求中的操作类型为读写操作型时,且从全局内存池中未获取到可用的物理页时,所述方法还包括:所述内存控制器从所述存内计算内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用。
可选地,当所述物理内存分配请求中的操作类型为存内计算型时,且从存内计算内存池中未获取到可用的物理页时,所述方法还包括:根据所述目标物理页的状态属性判断所述存内计算内存池中是否存在被读写操作型数据占用;当所述存内计算内存池中存在被读写操作型数据占用的第一物理页时,从所述全局内存池中获取第二物理页;将所述第一物理页中存储的数据迁移到所述第二物理页中,将所述第一物理页作为所述目标物理页。
可选地,所述内存控制器从所述全局内存池或所述存内计算内存池中获取目标物理页,包括:建立与所述全局内存池和存内计算内存池相匹配的虚拟内存链表,所述虚拟内存链表包括物理页号、存储地址、内存存储属性和状态属性;根据所述物理内存分配请求中的存储容量需求,计算出物理页的当前分配量;根据所述物理内存分配请求中的操作类型,判断在所述虚拟内存链表中是否存在与所述当前分配量相匹配且存储地址连续的至少两个空闲物理页;若在所述虚拟内存链表中存在所述至少两个空闲物理页时,将所述至少两个空闲物理页作为所述目标物理页。
可选地,若在所述虚拟内存链表中不存在所述至少两个空闲物理页时,所述方法还包括:对所述全局内存池或存内计算内存池中的物理页进行内存回收或内存紧缩后,再判断在所述虚拟内存链表中是否存在与所述当前分配量相匹配且存储地址连续的至少两个空闲物理页。
可选地,对所述全局内存池中的物理页进行内存紧缩,包括:对所述全局内存池的起始位置开始遍历已占用物理页,建立已分配页面链表,同时从所述全局内存池的尾部位置开始遍历空闲物理页,建立空闲页面链表;当两个遍历算法的遍历节点相同时,将已分配页面链表中记录的物理页的存储数据迁移到所述空闲页面链表中记录的物理页中
第二方面,本发明提供一种内存装置,所述内存装置包括:与至少一个处理器相连的内存控制器、多个支持内存读写操作的第一物理内存组件,以及多个支持内存读写操作和存内计算的第二物理内存组件,每个物理内存组件包括若干个存储数据的物理页;所述内存控制器用于根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器还用于根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
第三方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
第四方面,本发明提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
相比于相关技术,本发明具有如下有益效果:
本发明通过内存控制器对支持存内计算技术的物理内存和传统物理内存进行虚拟内存池的分类管理,根据接收到的物理内存分配请求中的操作类型从相对应的内存池中快速查找空闲的物理页,使处理器对找到到的空闲物理页进行读写操作或存内计算;因此,本发明同时满足了传统物理存储和存内计算的需求,降低了处理器和内存之间的数据传输瓶颈,提高了处理器的计算能力;进一步地,本发明中将支持存内计算技术的物理内存作为传统物理内存的补充,也就是当传统物理存储空间不够时支持存内计算技术的物理内存可以进行普通的读写存储,提高了计算机系统整体内存资源的利用率,避免了程序无需PIM参与或从PIM加速中收益较低的情况下资源被闲置浪费的情况。
附图说明
图1所示为本实施例提供的一种内存管理方法的流程示意图;
图2所示为本实施例提供的一种内存装置的结构示意图;
图3所示为本实施例提供的一种现有技术与本方案的对比示意图;
图4所示为本实施例提供的一种传统内存分配流程示意图;
图5所示为本实施例提供的一种PIM内存分配流程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,本发明提供一种内存管理方法,具体包括以下实施例:
图1所示为本实施例提供的一种内存管理方法的流程示意图;本实施例的内存管理方法应用于支持存内计算的内存装置,如图2所示,所述内存装置包括与至少一个处理器相连的内存控制器、多个支持内存读写操作的第一物理内存组件,以及多个支持内存读写操作和存内计算的第二物理内存组件,每个物理内存组件包括若干个存储数据的物理页;其中,一个或多个处理器(CPU)通过内存控制器(Memory controller)链接到多个物理内存组件,物理内存组件的实现为常见的计算机内存,介质并无具体限制如SRAM、DRAM等;物理内存组件分为两种:①第一物理内存组件即为传统内存(Traditional Memory),支持传统的内存读写等操作;②第二物理内存组件即为存内计算内存(PIM Memory),既支持传统内存读写,也支持本地计算逻辑如乘累加,具体PIM计算逻辑单元的硬件实现包括数字PIM和模拟PIM等。每个物理内存组件又包括若干个物理页,并未每个物理页分配唯一的存储地址,通过内存控制器,CPU对目标地址的物理页发出相应的读写操作指令,物理页与存储地址之间无特殊的约定关系,即任意地址都可能对应传统内存或PIM内存,具体地址的内存属性将在主板上电后由操作系统进行管理。如图1所示,本实施例提供的内存管理方法具体包括以下步骤:
步骤S101,根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池。
在本实施例中,每个单独的物理页中都包括数据存储区和多个不同属性的指示位,其中内存存储属性表示该物理页是否拥有存内计算能力,第一物理内存组件下的所有物理页的内存存储属性都是设置为第一数值,表示没有存内计算能力;反之,第二物理内存组件下的所有物理页的内存存储属性都是设置为第二数值,表示拥有存内计算能力。将所述第一物理内存组件和所述第二物理内存组件中的所有物理页进行统一管理,形成虚拟内存池;而虚拟内存池有根据每个物理页的内存存储属性,分为全局内存池和存内计算内存池;其中,全局内存池包含第一物理内存组件中的所有物理内存页,存内计算内存池指向第二物理内存组件中的所有物理内存页。
步骤S102,所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
在本实施例中,所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,包括:当所述物理内存分配请求中的操作类型为读写操作型时,所述内存控制器从全局内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用;当所述物理内存分配请求中的操作类型为存内计算型时,所述内存控制器从存内计算内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为存内占用。
需要说明的是,当内存控制器接收到一个或多个处理器发送的物理内存分配请求时,根据物理内存分配请求中包括的操作类型判定是从全局内存池还是存内计算内存池中查找空闲物理页;当所述物理内存分配请求中的操作类型为读写操作型时,所述内存控制器从全局内存池中通过寻找空闲页表或内存页轮换方法获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用;当所述物理内存分配请求中的操作类型为存内计算型时,所述内存控制器从存内计算内存池中通过寻找空闲页表或内存页轮换方法获取所述目标物理页,且将所述目标物理页的状态属性设置为存内占用以实现一般物理内存资源的有效分配和利用。
进一步地,存内计算是当前计算机领域的一个热门研究方向和发展趋势,通过在内存中实现计算操作,消除了内存和处理单元之间的界限,无需从存储器重新加载数据,提供更快的计算速度和更低的能量消耗。但是目前存内计算主要以加速器的形式挂载于系统上,例如CPU-GPU异构系统,如图3所示,3a表示现有技术中的异构系统,存储器和PIM加速器都挂接在系统总线上,若进行普通读写操作时处理器直接从存储器中进行读写数据,若进行PIM计算时处理器通过存储器从PIM加速器中读写数据;由于其计算单元和读写目标位于不同的硬件设备上,需要通过内存(存储器)作为中介来传输数据,因此现有技术中这种数据传输的过程不可避免地会引入计算逻辑单元和存储单元之间的数据搬运开销,其中包括数据复制、数据传输、数据格式转换等操作,从而导致额外的计算时间和能耗消耗。3b表示本实施例的系统架构,处理器通过内存控制器直接链接到普通存储器和PIM内存,避免了计算逻辑单元和存储单元之间的数据搬运,提高了数据处理效率。
相比于相关技术,本发明具有如下有益效果:
本发明通过内存控制器对支持存内计算技术的物理内存和传统物理内存进行虚拟内存池的分类管理,根据接收到的物理内存分配请求中的操作类型从相对应的内存池中快速查找空闲的物理页,使处理器对找到到的空闲物理页进行读写操作或存内计算;因此,本发明同时满足了传统物理存储和存内计算的需求,降低了处理器和内存之间的数据传输瓶颈,提高了处理器的计算能力;进一步地,本发明中将支持存内计算技术的物理内存作为传统物理内存的补充,也就是当传统物理存储空间不够时支持存内计算技术的物理内存可以进行普通的读写存储,提高了计算机系统整体内存资源的利用率,避免了程序无需PIM参与或从PIM加速中收益较低的情况下资源被闲置浪费的情况。
在本发明的一个实施例中,当所述物理内存分配请求中的操作类型为读写操作型时,且从全局内存池中未获取到可用的物理页时,所述方法还包括:所述内存控制器从所述存内计算内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用。
在本发明的另一个实施例中,当所述物理内存分配请求中的操作类型为存内计算型时,且从存内计算内存池中未获取到可用的物理页时,所述方法还包括:根据所述目标物理页的状态属性判断所述存内计算内存池中是否存在被读写操作型数据占用;当所述存内计算内存池中存在被读写操作型数据占用的第一物理页时,从所述全局内存池中获取第二物理页;将所述第一物理页中存储的数据迁移到所述第二物理页中,将所述第一物理页作为所述目标物理页。
需要说明的是,当系统被要求分配一般的物理内存资源时,如图4所示,在全局内存池中通过算法获取,如寻找空闲页表或内存页轮换算法,按照当前一般的内存分配方法执行,以实现内存资源的有效分配和利用。可选的,PIM内存的分配优先级被设置为低于传统内存,即当传统内存和PIM内存都可作为被分配对象时,总是分配传统内存,如当传统内存回收后仍无法分配足够的内存资源时,再申请PIM内存。举例说明,具体分配步骤为:(1)进程A通过系统调用申请了容量为L1KB的传统内存资源;(2)系统尝试在全局内存池中扫描搜索L1KB空闲内存;(3)没有足够的空闲内存,系统通过内存回收机制再次尝试分配;(4)资源后检查是否申请来源属于PIM内存回收,若分配目的是PIM内存回收则分配失败;(5)若分配目的非PIM内存回收,则向PIM内存池申请分配L1KB空间。(6)根据PIM内存申请结果,若申请失败则报出系统异常内存不足,若返回PIM内存地址指针Addr1,则将该地址的指示位修改为传统内存使用并作为传统内存地址返回进程。
当系统被要求分配PIM内存资源时,如图5所示,在存内计算内存池中执行内存分配算法。两种资源的映射范围不同,但执行的算法是一致。当遍历搜索的空闲PIM内存资源不满足分配要求,通过PIM内存内部的紧缩和重排来尝试再次分配;PIM内存池内部分配失败后,检查指示位当前资源占用是否为PIM计算,若是资源在传统内存分配时抢占,以进程内存分配相同优先级申请传统内存并复制迁移PIM内存页的数据;迁移完成后再次尝试内存紧缩与分配,分配成功返回对应的物理内存地址。举例说明,具体分配步骤为:(1)进程B通过系统调用申请了容量为L2KB的PIM内存资源;(2)系统尝试在PIM内存池中扫描搜索L2KB空闲资源;(3)没有足够的空闲PIM内存,系统通过内存紧缩和重排机制再次尝试分配;(4)再次分配失败,查看当前PIM内存的指示位,资源是否为PIM计算使用中;(5)若当前资源已经分配给PIM计算,则返回PIM内存不足的异常。(6)若当前资源在传统内存分配中被抢占,则申请L2KB的传统内存;(7)若申请失败,则返回PIM内存不足异常;若成功返回内存地址Addr2,则通过系统调用将搬运地址Addr3处L2KB的非PIM计算内存数据到Addr2;(8)修改空闲的Addr3内存指示位为PIM计算,将Addr3返回进程控制。
在本发明的又一个实施例中,所述内存控制器从所述全局内存池或所述存内计算内存池中获取目标物理页,包括:建立与所述全局内存池和存内计算内存池相匹配的虚拟内存链表,所述虚拟内存链表包括物理页号、存储地址、内存存储属性和状态属性;根据所述物理内存分配请求中的存储容量需求,计算出物理页的当前分配量;根据所述物理内存分配请求中的操作类型,判断在所述虚拟内存链表中是否存在与所述当前分配量相匹配且存储地址连续的至少两个空闲物理页;若在所述虚拟内存链表中存在所述至少两个空闲物理页时,将所述至少两个空闲物理页作为所述目标物理页。
其中,若在所述虚拟内存链表中不存在所述至少两个空闲物理页时,所述方法还包括:对所述全局内存池或存内计算内存池中的物理页进行回收和紧缩后,再判断在所述虚拟内存链表中是否存在与所述当前分配量相匹配且存储地址连续的至少两个空闲物理页。
可选地,对所述全局内存池中的物理页进行内存紧缩,包括:对所述全局内存池的起始位置开始遍历已占用物理页,建立已分配页面链表,同时从所述全局内存池的尾部位置开始遍历空闲物理页,建立空闲页面链表;当两个遍历算法的遍历节点相同时,将已分配页面链表中记录的物理页的存储数据迁移到所述空闲页面链表中记录的物理页中。
需要说明的是,操作系统中提供多个支持PIM内存专用操作的接口,接口的功能分类可以表现为:申请PIM内存资源对目标地址数据进行PIM计算向目标地址写回PIM计算结果。进一步的,接口的具体实现可以包含复数类别,例如“完成PIM计算并向特定地址写入结果”。
以上的描述指代系统对内存资源的分配和操作,仅仅是为了说明本发明的原理和实现方式,并不限定实现本发明的具体方式,涵盖所有等同于上述实现方式的变体和修改;当前的存内计算技术利用方式主要是在系统中集成PIM加速器,但这样的架构无法避免内存存储器和加速器专用存储器之间大量的数据搬运开销;另一方面,由于纯粹PIM技术的计算逻辑单一,能通过使用PIM获得巨大加速收益的场景较为有限。
通过将传统内存和存内计算内存并入同一个虚拟内存架构,提高了计算机系统整体内存资源的利用率,避免了程序无需PIM参与或从PIM加速中收益较低的情况下资源被闲置浪费的情况。本发明提出的内存管理架构与通常使用的计算机系统软件和硬件基本一致,有可扩展性和兼容性强的特点,能充分发挥存内计算技术的优势,对于提高PIM技术通用性,促进PIM技术的实际应用具有很大的应用潜力;支持存内计算技术的物理内存作为传统物理主存的补充,可在计算机架构中并存PIM内存作为物理内存的组成部分,等同地被虚拟内存映射向系统申请内存时,根据内存资源情况和申请目的,分配不同的内存地址当PIM内存被传统内存分配抢占,可通过相应算法释放并再分配PIM内存中的数据既作为PIM计算的参与者,也可被普通内存操作读写访问;PIM内存和传统内存可以作为同一个内存池的资源管理,也可分别属于两个内存池管理。核心是当PIM内存可作为传统内存的补充部分参与内存分配,这个过程可以是系统透明的,也可以是显示地抢占PIM内存。
第二方面,本发明提供一种内存装置,所述内存装置包括:与至少一个处理器相连的内存控制器、多个支持内存读写操作的第一物理内存组件,以及多个支持内存读写操作和存内计算的第二物理内存组件,每个物理内存组件包括若干个存储数据的物理页;所述内存控制器用于根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器还用于根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
第三方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
第四方面,本发明提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种内存管理方法,其特征在于,应用于支持存内计算的内存装置,所述内存装置包括与至少一个处理器相连的内存控制器、多个支持内存读写操作的第一物理内存组件,以及多个支持内存读写操作和存内计算的第二物理内存组件,每个物理内存组件包括若干个存储数据的物理页,所述方法包括:
根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;
所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
2.如权利要求1所述的内存管理方法,其特征在于,所述内存控制器根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,包括:
当所述物理内存分配请求中的操作类型为读写操作型时,所述内存控制器从全局内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用;
当所述物理内存分配请求中的操作类型为存内计算型时,所述内存控制器从存内计算内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为存内占用。
3.如权利要求2所述的拟内存管理方法,其特征在于,当所述物理内存分配请求中的操作类型为读写操作型时,且从全局内存池中未获取到可用的物理页时,所述方法还包括:所述内存控制器从所述存内计算内存池中获取所述目标物理页,且将所述目标物理页的状态属性设置为普通占用。
4.如权利要求2所述的内存管理方法,其特征在于,当所述物理内存分配请求中的操作类型为存内计算型时,且从存内计算内存池中未获取到可用的物理页时,所述方法还包括:
根据所述目标物理页的状态属性判断所述存内计算内存池中是否存在被读写操作型数据占用;
当所述存内计算内存池中存在被读写操作型数据占用的第一物理页时,从所述全局内存池中获取第二物理页;
将所述第一物理页中存储的数据迁移到所述第二物理页中,将所述第一物理页作为所述目标物理页。
5.如权利要求1所述的内存管理方法,其特征在于,所述内存控制器从所述全局内存池或所述存内计算内存池中获取目标物理页,包括:
建立与所述全局内存池和存内计算内存池相匹配的虚拟内存链表,所述虚拟内存链表包括物理页号、存储地址、内存存储属性和状态属性;
根据所述物理内存分配请求中的存储容量需求,计算出物理页的当前分配量;
根据所述物理内存分配请求中的操作类型,判断在所述虚拟内存链表中是否存在与所述当前分配量相匹配且存储地址连续的至少两个空闲物理页;
若在所述虚拟内存链表中存在所述至少两个空闲物理页时,将所述至少两个空闲物理页作为所述目标物理页。
6.如权利要求5所述的内存管理方法,其特征在于,若在所述虚拟内存链表中不存在所述至少两个空闲物理页时,所述方法还包括:对所述全局内存池或存内计算内存池中的物理页进行内存回收或内存紧缩后,再判断在所述虚拟内存链表中是否存在与所述当前分配量相匹配且存储地址连续的至少两个空闲物理页。
7.如权利要求6所述的内存管理方法,其特征在于,对所述全局内存池中的物理页进行内存紧缩,包括:
对所述全局内存池的起始位置开始遍历已占用物理页,建立已分配页面链表,同时从所述全局内存池的尾部位置开始遍历空闲物理页,建立空闲页面链表;
当两个遍历算法的遍历节点相同时,将已分配页面链表中记录的物理页的存储数据迁移到所述空闲页面链表中记录的物理页中。
8.一种内存装置,其特征在于,所述内存装置包括:
与至少一个处理器相连的内存控制器、多个支持内存读写操作的第一物理内存组件,以及多个支持内存读写操作和存内计算的第二物理内存组件,每个物理内存组件包括若干个存储数据的物理页;
所述内存控制器用于根据每个物理页的内存存储属性,将所述第一物理内存组件和所述第二物理内存组件中的所有物理页分成虚拟的全局内存池和存内计算内存池;
所述内存控制器还用于根据所述至少一个处理器发送的物理内存分配请求,从所述全局内存池或/和所述存内计算内存池中获取目标物理页,并将所述目标物理页对应的目标存储地址发送到对应处理器。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项方法的步骤。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310959793.9A CN116954918A (zh) | 2023-07-28 | 2023-07-28 | 一种内存管理方法、内存装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310959793.9A CN116954918A (zh) | 2023-07-28 | 2023-07-28 | 一种内存管理方法、内存装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116954918A true CN116954918A (zh) | 2023-10-27 |
Family
ID=88449008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310959793.9A Pending CN116954918A (zh) | 2023-07-28 | 2023-07-28 | 一种内存管理方法、内存装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954918A (zh) |
-
2023
- 2023-07-28 CN CN202310959793.9A patent/CN116954918A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697016B (zh) | 用于改进容器的存储性能的方法和装置 | |
US9229878B2 (en) | Memory page offloading in multi-node computer systems | |
US10747673B2 (en) | System and method for facilitating cluster-level cache and memory space | |
US8478931B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
WO2021254135A1 (zh) | 任务执行方法及存储设备 | |
CN111309649B (zh) | 一种数据传输和任务处理方法、装置及设备 | |
KR102236419B1 (ko) | 액세스 요청을 관리하기 위한 방법, 장치, 기기 및 저장 매체 | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
US10073648B2 (en) | Repartitioning data in a distributed computing system | |
CN113590508B (zh) | 动态可重构的内存地址映射方法及装置 | |
US20230367637A1 (en) | Shared memory management method and device | |
CN114968588A (zh) | 一种面向多并发深度学习训练任务的数据缓存方法和装置 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN115525417A (zh) | 数据通信方法、通信系统及计算机可读存储介质 | |
EP3602309B1 (en) | A memory allocation manager and method performed thereby for managing memory allocation | |
CN116954918A (zh) | 一种内存管理方法、内存装置、计算机设备和存储介质 | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
CN1333346C (zh) | 一种访问文件的方法 | |
CN115712581A (zh) | 数据访问方法、存储系统及存储节点 | |
CN116450055B (zh) | 一种多处理卡间的存储区域分配方法和系统 | |
CN113448897B (zh) | 适用于纯用户态远端直接内存访问的优化方法 | |
US20210373790A1 (en) | Inference in memory | |
CN115237605B (zh) | Cpu与gpu间的数据传输方法及计算机设备 | |
CN116820333B (zh) | 一种基于多线程的ssdraid-5持续写入方法 | |
WO2024061344A1 (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 |