CN104572483B - 动态内存管理装置及方法 - Google Patents
动态内存管理装置及方法 Download PDFInfo
- Publication number
- CN104572483B CN104572483B CN201510003751.3A CN201510003751A CN104572483B CN 104572483 B CN104572483 B CN 104572483B CN 201510003751 A CN201510003751 A CN 201510003751A CN 104572483 B CN104572483 B CN 104572483B
- Authority
- CN
- China
- Prior art keywords
- memory block
- memory
- resource pool
- dynamic memory
- management unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 725
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000007726 management method Methods 0.000 claims abstract description 354
- 238000005192 partition Methods 0.000 claims abstract description 151
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 4
- 101100445488 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ptr-2 gene Proteins 0.000 description 3
- 101150059273 PTR1 gene Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 101100215778 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) ptr-1 gene Proteins 0.000 description 2
- 101100235787 Schizosaccharomyces pombe (strain 972 / ATCC 24843) pim1 gene Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101150114015 ptr-2 gene Proteins 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Landscapes
- Dram (AREA)
Abstract
本发明实施例公开了动态内存管理装置及方法,涉及计算机领域,以至少解决现有技术中的动态内存管理方法无法保证异构多核非一致分级内存体系正常运行、无法在异构多核非一致分级内存体系下进行远端动态内存分配管理或效率低下的问题。具体方案为:动态内存管理装置部署在具有主‑从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。本发明适用于内存管理中。
Description
技术领域
本发明涉及计算机领域,尤其涉及动态内存管理装置及方法。
背景技术
异构多核,是指将不同类型的核集成在一起。为了满足异构多核处理器架构中不同内存的需求、以及提高内存利用效率,目前很多异构多核处理器都采用了非一致分级内存体系架构。
异构多核非一致分级内存体系架构如图1所示。对于该异构多核非一致分级内存体系,如何在软件层面合理有效利用不同层级内存,尽可能减少整体内存访问时延,是构建相关嵌入式***性能竞争力的关键。目前,最常用的方法是采用主-从核软件架构,将其中一个核作为主核,负责全局任务的分配管理;并将其它核作为从核,负责从主核接收并执行任务。其中,主核在给从核分配任务的同时,将该任务的输入数据通过直接内存访问(Direct Memory Access,简称:DMA)搬移到从核近端动态内存。由于从核近端动态内存一般较小,当从核计算完成之后,一般需要再将输出数据通过DMA搬移到主核近端动态内存或高层级远端动态内存。这样,减少了从核在任务处理过程中的内存访问时延。然而,由于整个过程需要非常高的内存周转率,因此,主核对从核近端动态内存或高层级远端动态内存区的动态内存管理往往会成为整个***的性能关键。
现有技术中,存在如下两种动态内存管理方法:
第一,如图2所示,将***内所有动态数据分配区的内存块通过动态内存管理区统一管理。用户在申请动态内存时,只需指定需要申请的内存块大小,由内存管理算法选择某一个动态数据分配区进行分配即可。然而,由于用户无法指定(甚至不感知)内存块的具体分配位置,并且不同时刻分配的内存块所在的动态数据分配区不确定,因此该方法无法保证分配的内存块为从核的近端动态内存中的内存块。进而,由于异构多核非一致分级内存体系架构中,不同的核之间可能无法进行内存访问,因此将可能导致内存分配或者访问失败,从而无法保证***的正常运行。
第二,如图3所示,将***内不同的动态内存区作为一个单独的分区来管理,该分区包括管理区以及动态数据分配区。用户在申请动态内存时,通过指定分区号来指定从哪个对应动态内存区上进行申请。然而,一方面,由于异构多核非一致分级内存体系架构中,不同的核之间可能无法进行内存访问,因此对于主核不能直接访问的内存,将导致无法进行远端动态内存分配管理(如左侧的核1无法在分区2上申请内存);另一方面,由于内存分区的管理区与动态数据分配区位于同一个动态内存区,因此当分区位于三级(Level 3,简称:L3)内存或L4内存时,其申请和释放时延非常大。
发明内容
本发明的实施例提供动态内存管理装置及方法,以至少解决现有技术中的动态内存管理方法无法保证异构多核非一致分级内存体系正常运行、无法在异构多核非一致分级内存体系下进行远端动态内存分配管理或效率低下的问题,能够在保证异构多核非一致分级内存体系正常运行的前提下,提高远端动态内存管理的效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种动态内存管理装置,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,
所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。
在第一方面第一种可能的实现方式中,结合第一方面,所述主核的远端动态内存的管理信息包含:至少一个资源池的管理信息;
其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上。
在第一方面第二种可能的实现方式中,结合第一方面第一种可能的实现方式,所述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个资源池中每个资源池的首地址与该资源池标识的对应关系。
在第一方面第三种可能的实现方式中,结合第一方面第一种可能的实现方式或第一方面第二种可能的实现方式,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态。
在第一方面第四种可能的实现方式中,结合第一方面第一种可能的实现方式至第一方面第三种可能的实现方式,所述至少一个资源池中每个资源池关联的动态内存的大小=该资源池中的内存块的总数×该资源池中每个内存块的大小。
在第一方面第五种可能的实现方式中,结合第一方面至第一方面第四种可能的实现方式,所述动态内存管理装置还包括:第二分区管理单元;
所述第二分区管理单元中存储所述主核的近端动态内存的管理信息,所述主核的近端动态内存的管理信息用于对所述主核的近端动态内存进行申请与释放管理。
第二方面,提供一种动态内存管理方法,所述动态内存管理方法应用于动态内存管理装置,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理;所述方法包括;
获取第一内存块申请信息,所述第一内存块申请信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的大小;
根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元;
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小,从所述第一内存块所在的动态内存中分配所述第一内存块。
在第二方面第一种可能的实现方式中,结合第二方面,所述主核的远端动态内存的管理信息包含:至少一个资源池的管理信息;
其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上;
所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小,从所述第一内存块所在的动态内存中分配所述第一内存块,包括:
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息,查找满足预设条件的资源池,所述预设条件包括:该资源池中内存块的大小不小于所述第一内存块的大小,并且该资源池中内存块的大小在第一资源池集合包含的资源池中内存块的大小中最小,所述第一资源池集合为所述至少一个资源池中内存块的大小不小于所述第一内存块的大小的资源池的集合;
若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分配所述第一内存块。
在第二方面第二种可能的实现方式中,结合第二方面第一种可能的实现方式,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态;
所述若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分配所述第一内存块,包括:
若存在满足所述预设条件的资源池,根据所述比特位表确定所述满足预设条件的资源池中的至少一个内存块中是否存在空闲内存块;
若所述满足预设条件的资源池中的至少一个内存块中存在空闲内存块,将所述空闲内存块对应的比特位置为占用状态。
在第二方面第三种可能的实现方式中,结合第二方面第二种可能的实现方式,在所述若存在满足所述预设条件的资源池,根据所述比特位表确定所述满足预设条件的资源池中的至少一个内存块中是否存在空闲内存块之后,还包括:
若所述满足预设条件的资源池中的至少一个内存块中不存在空闲内存块,将第一资源池中的至少一个内存块中的空闲内存块对应的比特位置为占用状态,其中,所述第一资源池中内存块的大小在第二资源池集合包含的资源池中内存块的大小中最小,所述第二资源池集合为所述至少一个资源池中内存块的大小大于所述满足预设条件的资源池中内存块的大小的资源池的集合。
第三方面,提供一种动态内存管理方法,所述动态内存管理方法应用于动态内存管理装置,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理;所述方法包括:
获取第一内存块释放信息,所述第一内存块释放信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的首地址;
根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元;
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。
在第三方面第一种可能的实现方式中,结合第三方面,所述主核的远端动态内存的管理信息包含:至少一个资源池的管理信息;
其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上;
所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块,包括:
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。
在第三方面第二种可能的实现方式中,结合第三方面第一种可能的实现方式,所述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个资源池中每个资源池的首地址与该资源池标识的对应关系;
所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块,包括:
根据所述第一内存块的首地址以及所述第一对应关系,确定所述第一内存块对应的资源池;
在所述第一内存块对应的资源池中释放所述第一内存块的首地址起始的内存块。
在第三方面第三种可能的实现方式中,结合第三方面第二种可能的实现方式,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态;
所述在所述第一内存块对应的资源池中释放所述第一内存块的首地址起始的内存块,包括:
将所述第一内存块对应的资源池中所述第一内存块的首地址起始的内存块对应的比特位置为空闲状态。
本发明实施例提供动态内存管理装置及方法,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元。其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。基于本发明实施例提供的动态内存管理装置,一方面,由于本发明实施例中,不同远端动态内存的管理信息存储在不同的第一分区管理单元中,动态内存管理装置统一管理不同的第一分区管理单元,避免了现有技术中***内不同的动态内存区作为一个单独的分区来管理所导致的异构多核非一致分级内存体系中无法进行远端动态内存分配管理、或虽然能够进行远端动态内存分配管理,但其申请和释放时延非常大的问题,提升了远端动态内存管理的效率。另一方面,由于本发明实施例中,远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。即,在用户申请或释放动态内存时,动态内存管理装置可以根据远端动态内存的管理信息进行申请或释放管理,避免了现有技术中用户无法指定(甚至不感知)内存块的具体分配位置,并且不同时刻分配的内存块所在的动态数据分配区不确定,最终无法保证异构多核非一致分级内存体系正常运行的问题,保证了异构多核非一致分级内存体系的正常运行。最后,由于本发明实施例提供的动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,因此可以避免内存访问时通过核子***外部的控制总线进行内存访问所导致的***性能低下的问题,有效减少***整体内存访问的时延,提升了***的整体性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为非一致分级内存体系架构示意图;
图2为现有技术中动态内存管理的结构示意图一;
图3为现有技术中动态内存管理的结构示意图二;
图4为OpenCL执行模型示意图;
图5为OpenEM执行模型示意图;
图6为本发明实施例提供的动态内存管理装置结构及部署示意图一;
图7为本发明实施例提供的第一分区管理单元的存储信息示意图;
图8为本发明实施例提供的比特位表表征示意图;
图9为本发明实施例提供的动态内存管理装置结构及部署示意图二;
图10为本发明实施例提供的动态内存管理方法流程示意图一;
图11为本发明实施例提供的动态内存管理方法流程示意图二;
图12为本发明实施例提供的动态内存管理方法流程示意图三;
图13为本发明实施例提供的动态内存管理方法流程示意图四;
图14为本发明实施例提供的动态内存管理方法流程示意图五;
图15为本发明实施例提供的动态内存管理方法流程示意图六;
图16为本发明实施例提供的动态内存管理方法流程示意图七;
图17为本发明实施例提供的动态内存管理方法流程示意图八;
图18为本发明实施例提供的动态内存管理方法流程示意图九;
图19为本发明实施例提供的OpenCL应用中动态内存管理示意图;
图20为本发明实施例提供的基于图19的任务执行流程示意图。
具体实施方式
为了下述各实施例的描述清楚简洁,首先给出几个简要介绍:
第一,异构多核非一致分级内存体系架构:
图1为异构多核非一致分级内存体系架构示意图。由图1可知,异构多核非一致分级内存体系中,每个核有私有的静态随机存取存储器(Static Random Access Memory,简称:SRAM):L2内存,并且不能访问其它核的L2内存。在每个核子***外,有公用的动态随机存取存储器(dynamic random access memory,简称:DRAM):L3内存,和双倍速率同步动态随机存储器(Double Data Random access memory,简称:DDR):L4内存。对于每个核来说,内存访问时延随内存层级的增加而增加。即:L4>L3>L2>高速缓冲寄存器(Data Cache,简称:DCache)。比如:L4内存读时延为86-112个核时钟周期,L3内存读时延为70-88个核时钟周期,L2内存读时延为16个核时钟周期,DCache内存读时延为1个核时钟周期。
该异构多核非一致分级内存体系架构的性价比优势为:越低层级的内存,读写性能越高,但其单位成本越高,越高层级的内存,读写性能越差,但其单位成本越低。该异构多核非一致分级内存体系架构在嵌入式设备中的可行性在于:对于嵌入式软件***来说,不同的指令或数据通常具有不同的性能要求。如正常运行过程中频繁使用的指令和数据,需要放在近端动态内存;如***初始化指令和相关数据,可以放在远端动态内存。通过对指令和数据进行合理排布,即可最大化内存利用率。
第二,核子***:
核子***一般包含一个处理核、以及该处理核私有的硬件功能单元,比如图1中的DCache、SRAM内存等。
第三,近端动态内存及远端动态内存:
对于异构多核非一致分级内存体系中的其中一个核来说,该核私有的L2内存为该核的近端动态内存;该核的子***外的内存为该核的远端动态内存,包括体系中其它核的近端动态内存、以及体系中的高层级远端动态内存。示例性的,图1中,核1的近端动态内存为核1子***中的L2内存,核2子***的L2内存、公用的L3内存、以及公用的L4内存均为核1的远端动态内存。
第四,OpenCL执行模型与OpenEM执行模型:
应用程序(Application,简称:APP)开发人员在做异构多核软件开发时,为了屏蔽硬件环境的复杂性,并提升软件可重用性,通常会引入独立的异构编程技术辅助开发。这些异构编程技术协助用户完成诸如任务多核分发执行、内存动态搬移复用等基础功能。为了提升管理效率,这些编程模型通常采用主-从模式,如背景技术中所述,一个主核负责全局任务的分配管理、任务参数准备等,若干个从核负责从主核接收并执行任务。下面以OpenCL和OpenEM为例来简要介绍这些技术。
OpenCL执行模型如图4所示,其具有主-从结构。Host核为主核,Device核为从核。APP部署在Host核上,APP代码通过直接调用OpenCL应用程序编程接口(ApplicationProgramming Interface,简称:API)动态创建并发起任务(kernel)。发起的任务被写入命令队列。Device核从命令队列取任务,然后执行任务。
在任务执行前后,一般都会有数据的输入输出。由于近端动态内存的低延迟优势,这些数据一般需要通过直接内存访问(Direct Memory Access,简称:DMA)在host核和Device核的近端动态内存之间动态搬移。即在任务执行前,将在host核近端动态内存的输入数据动态拷贝到device核近端动态内存中;任务执行后,将输出数据从device核近端动态内存拷贝回host核近端动态内存。此时,需要一个高效的内存管理机制使得host核可以直接管理Device核的近端动态内存(也即host核远端动态内存)。
OpenEM执行模型如图5所示,其具有主-从结构,调度核为主核,分发核为从核。所有动态产生的任务放在队列中,调度核负责从队列中取最高优先级任务并发往空闲分发核处理。分发核负责从调度核接收和执行任务,在执行过程中可能会产生新的任务并放入队列。
由于近端动态内存的延迟优势,调度核在向分发核发送任务之前,会把其输入数据搬移至对应的分发核,当任务在分发核执行完成后,调度核会把其输出数据从该分发核拷贝回调度核,该过程与OpenCL执行模型中的数据搬移过程类似,通过DMA完成调度核与分发核之间的数据搬移,此处不再赘述。此时,同样需要一个高效的内存管理机制使得调度核可以直接管理分发核的近端动态内存(也即调度核远端动态内存)。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
实施例一、
本发明实施例提供一种动态内存管理装置60,具体如图6所示,所述动态内存管理装置60部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元601。
其中,所述至少一个第一分区管理单元601中的每个第一分区管理单元601中存储该第一分区管理单元601对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。
需要说明的是,本发明实施例提供的动态内存管理装置60部署在具有主-从结构的异构多核的主核子***中,这样可以避免内存访问时通过核子***外部的控制总线进行内存访问所导致的***性能低下的问题,提升了***的性能。
进一步的,所述主核的远端动态内存的管理信息包含:
至少一个资源池的管理信息,其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元601对应的所述主核的远端动态内存的连续内存区上。
示例性的,如图7所示,第一分区管理单元601存储的该第一分区管理单元601对应的所述主核的远端动态内存的管理信息中可以包含32个资源池(pool)的管理信息,每个pool的管理信息用于管理一片连续的、等大小的内存块,其内存块大小为2^n字节,其中,n为pool的编号,内存块的个数可软件配置。
具体的,结合图7可知,所述至少一个资源池中每个资源池关联的动态内存的大小=该资源池中的内存块的总数×该资源池中每个内存块的大小。
示例性的,在pool 2中,每个内存块的大小为4字节,假设pool 2中内存块的总数为4,则pool 2关联的动态内存的大小=4字节×4=16字节。
进一步的,所述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个资源池中每个资源池的首地址与该资源池标识的对应关系。
示例性的,假设如图7所示,第一分区管理单元601存储的该第一分区管理单元601对应的所述主核的远端动态内存的管理信息中包含32个资源池(pool)的管理信息,则该第一对应关系可以如表一所示:
表一
Pool标识 | 首地址 |
0 | Ox00 |
1 | Ox2E |
… | |
31 | OxA3 |
需要说明的是,上述仅是示例性的给出第一对应关系列表,当然,第一分区管理单元601中pool的个数、标识、以及标识对应的首地址还可能是其它数值,本发明实施例对此不作具体限定。
进一步的,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态。
示例性的,假设某一pool中内存块的大小为32字节,内存块个数为5,则该比特位表可以如图8所示。
需要说明的是,在图8中,若比特位表中的某一比特位为1,表征该比特位对应的内存块被占用;若比特位表中的某一比特位为0,表征该比特位对应的内存块空闲。当然,也可以用1表示该比特位对应的内存块空闲,用0表示该比特位对应的内存块被占用,本发明实施例对此不作具体限定。
进一步的,如图9所示,所述动态内存管理装置60还包括:第二分区管理单元602。
所述第二分区管理单元602中存储所述主核的近端动态内存的管理信息,所述主核的近端动态内存的管理信息用于对所述主核的近端动态内存进行申请与释放管理。
即,动态内存管理装置60不仅可以用于远端动态内存管理,还可以用于近端动态内存管理,本发明实施例对此不作具体限定。
需要说明的是,本发明实施例中,第二分区管理单元602的存储信息示意图可以参考第一分区管理单元601的存储信息示意图,本发明实施例在此不再赘述。
下面以上述提供的内存管理装置为例,给出该内存管理装置与DMA结合的两种主要场景描述如下:
第一,具体的,可通过该内存管理装置管理远端DDR(L4)内存区,当主核的近端动态内存中某些数据在一段时间内不被访问,可以在DDR(L4)内存区申请等大小的内存块,然后通过DMA将这些数据从该主核的近端动态内存搬移至DDR(L4)内存区。当下次再使用这些数据时,再通过DMA将这些数据从DDR(L4)内存区搬移至该主核的近端动态内存,这样可以提高远端动态内存的利用率。
需要说明的是,在通过DMA将这些数据搬移至DDR(L4)内存区之后,该主核的近端动态内存可暂做其它用途,本发明实施例对此不作具体限定。
第二,具体的,当核1需要给核2传输数据时,可以通过该内存管理装置直接在核2的近端动态内存申请内存块,然后通过DMA将数据从核1的内存块搬移至核2的内存块,有效提升了核之间数据交互的效率。
本发明实施例提供一种动态内存管理装置,部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元。其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。基于本发明实施例提供的动态内存管理装置,一方面,由于本发明实施例中,不同远端动态内存的管理信息存储在不同的第一分区管理单元中,动态内存管理装置统一管理不同的第一分区管理单元,避免了现有技术中***内不同的动态内存区作为一个单独的分区来管理所导致的异构多核非一致分级内存体系中无法进行远端动态内存分配管理、或虽然能够进行远端动态内存分配管理,但其申请和释放时延非常大的问题,提升了远端动态内存管理的效率。另一方面,由于本发明实施例中,远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。即,在用户申请或释放动态内存时,动态内存管理装置可以根据远端动态内存的管理信息进行申请或释放管理,避免了现有技术中用户无法指定(甚至不感知)内存块的具体分配位置,并且不同时刻分配的内存块所在的动态数据分配区不确定,最终无法保证异构多核非一致分级内存体系正常运行的问题,保证了异构多核非一致分级内存体系的正常运行。最后,由于本发明实施例提供的动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,因此可以避免内存访问时通过核子***外部的控制总线进行内存访问所导致的***性能低下的问题,有效减少***整体内存访问的时延,提升了***的整体性能。
实施例二、
本发明实施例提供一种动态内存管理方法,具体应用在如图6所示的动态内存管理装置60中,如图10所示,方法包括:
S1001、获取第一内存块申请信息,所述第一内存块申请信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的大小。
S1002、根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元。
S1003、根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小,从所述第一内存块所在的动态内存中分配所述第一内存块。
进一步的,所述主核的远端动态内存的管理信息包含:
至少一个资源池的管理信息,其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上。
则,如图11所示,步骤S1003具体包括:
S1003a、根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息,查找满足预设条件的资源池。
所述预设条件包括:该资源池中内存块的大小不小于所述第一内存块的大小,并且该资源池中内存块的大小在第一资源池集合包含的资源池中内存块的大小中最小,所述第一资源池集合为所述至少一个资源池中内存块的大小不小于所述第一内存块的大小的资源池的集合。
S1003b、若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分配所述第一内存块。
其中,第一分区管理单元的存储信息示意图可参考图7所示的示例,本发明实施例在此不再赘述。
进一步的,所述至少一个内存块的信息包括比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包括:占用状态、或空闲状态。
则,如图12所示,步骤S1003b具体包括:
S1003b1、若存在满足所述预设条件的资源池,根据比特位表确定所述满足预设条件的资源池中的至少一个内存块中是否存在空闲内存块。
S1003b2、若所述满足预设条件的资源池中的至少一个内存块中存在空闲内存块,将所述空闲内存块对应的比特位置为占用状态。
具体的,比特位表的示意图可参考图8所示的示例,本发明实施例在此不再赘述。
进一步的,如图13所示,在S1003b1之后,所述方法还包括:
S1003b3、若所述满足预设条件的资源池中的至少一个内存块中不存在空闲内存块,将第一资源池中的至少一个内存块中的空闲内存块对应的比特位置为占用状态。
其中,所述第一资源池中内存块的大小在第二资源池集合包含的资源池中内存块的大小中最小,所述第二资源池集合为所述至少一个资源池中内存块的大小大于所述满足预设条件的资源池中内存块的大小的资源池的集合。
下面以上述提供的动态内存管理方法为例,给出动态内存申请的具体示例如图14所示:
S1401、获取第一内存块申请信息为pt=分区号,Size=申请大小。
S1402、根据pt,确定第一内存块所在的动态内存对应的第一分区管理单元。
S1403、在第一分区管理单元中查找满足预设条件的资源池,预设条件依次满足:1、内存块大小≥Size;2、内存块大小最小。
S1404、判断资源池是否查找成功。
若是,执行步骤S1405;
若否,执行步骤。
S1405、判断该资源池中的至少一个内存块中是否存在空闲内存块。
若存在,执行步骤S1407;
若不存在,执行步骤S1406;
S1406、令Size=内存块大小+1,循环执行步骤S1403。
S1407、将空闲内存块对应的比特位置为占用状态,并返回该空闲内存块首地址。
至此,整个内存申请过程结束。
需要说明的是,本发明实施例中,动态内存管理装置还可以如图9所示,这样该动态内存管理装置还可以对主核的近端动态内存进行申请管理,方法可参考上述对主核的远端动态内存进行申请管理的方法,本发明实施例在此不再赘述。
本发明实施例提供一种动态内存管理方法,应用于实施例一所述的动态内存管理装置60中。方法包括:获取第一内存块申请信息,所述第一内存块申请信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的大小;根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元;根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小,从所述第一内存块所在的动态内存中分配所述第一内存块。基于本发明实施例提供的内存管理方法,可以通过实施例一所述的动态内存管理装置60对主核的远端动态内存进行申请管理。
实施例三、
本发明实施例提供一种动态内存管理方法,具体应用在如图6所示的动态内存管理装置60中,如图15所示,方法包括:
S1501、获取第一内存块释放信息,所述第一内存块释放信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的首地址。
S1502、根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元。
S1503、根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。
进一步的,所述主核的远端动态内存的管理信息包含:
至少一个资源池的管理信息,其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上。
则,如图16所示,步骤S1503具体包括:
S1503a、根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。
其中,第一分区管理单元的存储信息示意图可参考图7所示的示例,本发明实施例在此不再赘述。
进一步的,所述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个资源池中每个资源池的首地址与该资源池标识的对应关系。
则,如图17所示,步骤S1503a具体包括:
S1503a1、根据所述第一内存块的首地址以及第一对应关系,确定所述第一内存块对应的资源池。
S1503a2、在所述第一内存块对应的资源池中释放所述第一内存块的首地址起始的内存块。
示例性的,假设第一对应关系如表一所示,第一内存块首地址为Ox13,此时可以确定第一内存块对应的资源池为pool 0,进而在pool 0中释放Ox13起始的内存块。
进一步的,所述至少一个内存块的信息包括比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包括:占用状态、或空闲状态。
则,步骤S1503a2具体包括:
将所述第一内存块对应的资源池中所述第一内存块的首地址起始的内存块对应的比特位置为空闲状态。
具体的,比特位表的示意图可参考图8所示的示例,本发明实施例在此不再赘述。
下面以上述提供的动态内存管理方法为例,给出动态内存释放的具体示例如图18所示:
S1801、获取第一内存块释放信息为pt=分区号,addr=首地址。
S1802、根据pt,确定第一内存块所在的动态内存对应的第一分区管理单元。
S1803、根据addr、以及第一对应关系,确定第一内存块对应的资源池。
S1804、在第一内存块对应的资源池中释放addr起始的内存块。
至此,整个内存释放过程结束。
需要说明的是,本发明实施例中,动态内存管理装置还可以如图9所示,这样该动态内存管理装置还可以对主核的近端动态内存进行释放管理,方法可参考上述对主核的远端动态内存进行释放管理的方法,本发明实施例在此不再赘述。
本发明实施例提供一种动态内存管理方法,应用于实施例一所述的动态内存管理装置60中。方法包括:获取第一内存块释放信息,所述第一内存块释放信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的首地址;根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元;根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。基于本发明实施例提供的内存管理方法,可以通过实施例一所述的动态内存管理装置60对主核的远端动态内存进行释放管理。
实施例四、
下面结合上述提供的动态内存管理装置与动态内存管理方法,以在异构多核上的OpenCL应用为例,给出本发明的具体应用。
如图19所示,本示例中包括一个Host核。负责执行用户APP;一个Device核,负责执行用户APP发起的任务。任务执行的具体流程如图20所示,包括:
S2001、Host核通过Host APP向Host OpenCL发起任务:携带ker_id+ker_input+ker_output。
其中,ker_id为任务标识,ker_input为近端入参内存,ker_output为近端出参内存。
S2002、Host核通过Host OpenCL向动态内存管理装置申请远端入参内存:分区=2,Size=sizeof(ker_input)。
S2003、动态内存管理装置返回申请结果给Host核的Host OpenCL:内存块地址=ptr1。
S2004、Host核通过Host OpenCL向动态内存管理装置申请远端出参内存:分区=2,Size=sizeof(ker_output)。
S2005、动态内存管理装置返回申请结果给Host核的Host OpenCL:内存块地址=ptr2。
S2006、Host核通过Host OpenCL向DMA发起入参搬移:源地址=ker_input,目的地址=ptr1。
S2007、Host核通过Host OpenCL向Device核的Device OpenCL发起任务入队等待执行:携带ker_id+ptr1+ptr2。
S2008、当任务出队后,Device核通过Device OpenCL执行任务,其中,入参内存地址为ptr1,出参内存地址为ptr2。
S2009、任务结束后,Host核通过Host OpenCL向DMA发起出参搬移:源地址=ptr2,目的地址=ker_output。
S2010、Host核通过Host OpenCL释放ptr1和ptr2。
S2011、Host核通过Host OpenCL向Host APP返回任务。
至此,整个任务执行过程结束。
由图20可以看出,本示例中,在Host核侧的APP发起任务执行命令,Host核侧的Host OpenCL通过动态内存管理装置申请位于Device核侧的远端动态内存,分别用于任务的入参和出参。然后,通过DMA搬移入参至Device核的近端动态内存。任务执行完成后,通过DMA搬移出参至Host核的近端动态内存。整个过程中,由于对远端动态内存的申请与释放完全在Host核子***中,因此整体执行效率非常高。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种动态内存管理装置,其特征在于,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,
所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理。
2.根据权利要求1所述的动态内存管理装置,其特征在于,所述主核的远端动态内存的管理信息包含:至少一个资源池的管理信息;
其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上。
3.根据权利要求2所述的动态内存管理装置,其特征在于,所述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个资源池中每个资源池的首地址与该资源池标识的对应关系。
4.根据权利要求2所述的动态内存管理装置,其特征在于,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态。
5.根据权利要求2所述的动态内存管理装置,其特征在于,所述至少一个资源池中每个资源池关联的动态内存的大小=该资源池中的内存块的总数×该资源池中每个内存块的大小。
6.根据权利要求1-5任一项所述的动态内存管理装置,其特征在于,所述动态内存管理装置还包括:第二分区管理单元;
所述第二分区管理单元中存储所述主核的近端动态内存的管理信息,所述主核的近端动态内存的管理信息用于对所述主核的近端动态内存进行申请与释放管理。
7.一种动态内存管理方法,其特征在于,所述动态内存管理方法应用于动态内存管理装置,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理;所述方法包括:
获取第一内存块申请信息,所述第一内存块申请信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的大小;
根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元;
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小,从所述第一内存块所在的动态内存中分配所述第一内存块。
8.根据权利要求7所述的方法,其特征在于,所述主核的远端动态内存的管理信息包含:至少一个资源池的管理信息;
其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上;
所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小,从所述第一内存块所在的动态内存中分配所述第一内存块,包括:
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息,查找满足预设条件的资源池,所述预设条件包括:该资源池中内存块的大小不小于所述第一内存块的大小,并且该资源池中内存块的大小在第一资源池集合包含的资源池中内存块的大小中最小,所述第一资源池集合为所述至少一个资源池中内存块的大小不小于所述第一内存块的大小的资源池的集合;
若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分配所述第一内存块。
9.根据权利要求8所述的方法,其特征在于,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态;
所述若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分配所述第一内存块,包括:
若存在满足所述预设条件的资源池,根据所述比特位表确定所述满足预设条件的资源池中的至少一个内存块中是否存在空闲内存块;
若所述满足预设条件的资源池中的至少一个内存块中存在空闲内存块,将所述空闲内存块对应的比特位置为占用状态。
10.根据权利要求9所述的方法,其特征在于,在所述若存在满足所述预设条件的资源池,根据所述比特位表确定所述满足预设条件的资源池中的至少一个内存块中是否存在空闲内存块之后,还包括:
若所述满足预设条件的资源池中的至少一个内存块中不存在空闲内存块,将第一资源池中的至少一个内存块中的空闲内存块对应的比特位置为占用状态,其中,所述第一资源池中内存块的大小在第二资源池集合包含的资源池中内存块的大小中最小,所述第二资源池集合为所述至少一个资源池中内存块的大小大于所述满足预设条件的资源池中内存块的大小的资源池的集合。
11.一种动态内存管理方法,其特征在于,所述动态内存管理方法应用于动态内存管理装置,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子***中,包括:至少一个第一分区管理单元;其中,所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理;所述方法包括:
获取第一内存块释放信息,所述第一内存块释放信息包括:所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的首地址;
根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定所述第一内存块所在的动态内存对应的第一分区管理单元;
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。
12.根据权利要求11所述的方法,其特征在于,所述主核的远端动态内存的管理信息包含:至少一个资源池的管理信息;
其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上;
所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块,包括:
根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块。
13.根据权利要求12所述的方法,其特征在于,所述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个资源池中每个资源池的首地址与该资源池标识的对应关系;
所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一个资源池的管理信息、以及所述第一内存块的首地址,从所述第一内存块所在的动态内存中释放所述第一内存块的首地址起始的内存块,包括:
根据所述第一内存块的首地址以及所述第一对应关系,确定所述第一内存块对应的资源池;
在所述第一内存块对应的资源池中释放所述第一内存块的首地址起始的内存块。
14.根据权利要求13所述的方法,其特征在于,所述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状态;
所述在所述第一内存块对应的资源池中释放所述第一内存块的首地址起始的内存块,包括:
将所述第一内存块对应的资源池中所述第一内存块的首地址起始的内存块对应的比特位置为空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510003751.3A CN104572483B (zh) | 2015-01-04 | 2015-01-04 | 动态内存管理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510003751.3A CN104572483B (zh) | 2015-01-04 | 2015-01-04 | 动态内存管理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572483A CN104572483A (zh) | 2015-04-29 |
CN104572483B true CN104572483B (zh) | 2018-01-16 |
Family
ID=53088612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510003751.3A Active CN104572483B (zh) | 2015-01-04 | 2015-01-04 | 动态内存管理装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572483B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045658B (zh) * | 2015-07-02 | 2018-10-23 | 西安电子科技大学 | 一种利用多核嵌入式dsp实现动态任务调度分发的方法 |
CN106339325B (zh) * | 2016-08-30 | 2020-05-05 | 广东美的制冷设备有限公司 | WiFi模块的内存分配方法及装置 |
CN110471759B (zh) * | 2019-07-04 | 2023-09-01 | 中科晶上(苏州)信息技术有限公司 | 一种多核嵌入式处理器内存实时动态管理方法 |
CN111338998B (zh) * | 2020-02-20 | 2021-07-02 | 深圳震有科技股份有限公司 | 基于amp***的flash访问处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理***及方法 |
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的***和装置及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130031327A1 (en) * | 2011-07-28 | 2013-01-31 | Yung Chang | System and method for allocating cache memory |
US10042750B2 (en) * | 2013-03-15 | 2018-08-07 | Micron Technology, Inc. | Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor |
-
2015
- 2015-01-04 CN CN201510003751.3A patent/CN104572483B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理***及方法 |
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的***和装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104572483A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI531974B (zh) | 管理巢狀執行串流的方法和系統 | |
US11720993B2 (en) | Dynamic kernel memory space allocation | |
CN107113341B (zh) | 用于数据划分的分布式关系数据库管理***中事务的高吞吐量处理的*** | |
CN106527967A (zh) | 减小存储设备中的读命令时延 | |
TWI488118B (zh) | 處理系統中動態產生任務的傳訊、排序和執行 | |
TW201413456A (zh) | 處理巢狀串流事件的方法和系統 | |
US9454481B2 (en) | Affinity group access to global data | |
CN104572483B (zh) | 动态内存管理装置及方法 | |
US10013264B2 (en) | Affinity of virtual processor dispatching | |
US20170344398A1 (en) | Accelerator control device, accelerator control method, and program storage medium | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
CN110825690B (zh) | 多核处理器的核间通信方法及装置 | |
CN107562685B (zh) | 一种基于延时补偿的多核处理器核心间数据交互的方法 | |
US8566532B2 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
US9104496B2 (en) | Submitting operations to a shared resource based on busy-to-success ratios | |
US9606923B2 (en) | Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program | |
US11385900B2 (en) | Accessing queue data | |
KR20210094629A (ko) | 정보 처리 방법, 장치, 전자 디바이스 및 기록 매체 | |
CN108958903A (zh) | 嵌入式多核中央处理器任务调度方法与装置 | |
JPWO2008149657A1 (ja) | 入出力制御システム、入出力制御方法、及び、入出力制御プログラム | |
CN105988871B (zh) | 一种远端内存分配方法、装置和*** | |
CN108563507A (zh) | 一种内存管理方法、装置、设备及可读存储介质 | |
KR20180082560A (ko) | 태스크의 시간-기반 스케줄링을 위한 방법 및 장치 | |
US9251101B2 (en) | Bitmap locking using a nodal lock | |
CN113312522B (zh) | 内核对象的管理方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |