动态内存管理装置及方法

文档序号:8258363阅读:332来源:国知局
动态内存管理装置及方法
【技术领域】
[0001] 本发明涉及计算机领域,尤其涉及动态内存管理装置及方法。
【背景技术】
[0002] 异构多核,是指将不同类型的核集成在一起。为了满足异构多核处理器架构中不 同内存的需求、以及提高内存利用效率,目前很多异构多核处理器都采用了非一致分级内 存体系架构。
[0003] 异构多核非一致分级内存体系架构如图1所示。对于该异构多核非一致分级内 存体系,如何在软件层面合理有效利用不同层级内存,尽可能减少整体内存访问时延,是构 建相关嵌入式系统性能竞争力的关键。目前,最常用的方法是采用主-从核软件架构,将 其中一个核作为主核,负责全局任务的分配管理;并将其它核作为从核,负责从主核接收并 执行任务。其中,主核在给从核分配任务的同时,将该任务的输入数据通过直接内存访问 (Direct Memory Access,简称:DMA)搬移到从核近端动态内存。由于从核近端动态内存一 般较小,当从核计算完成之后,一般需要再将输出数据通过DMA搬移到主核近端动态内存 或高层级远端动态内存。这样,减少了从核在任务处理过程中的内存访问时延。然而,由于 整个过程需要非常高的内存周转率,因此,主核对从核近端动态内存或高层级远端动态内 存区的动态内存管理往往会成为整个系统的性能关键。
[0004] 现有技术中,存在如下两种动态内存管理方法:
[0005] 第一,如图2所示,将系统内所有动态数据分配区的内存块通过动态内存管理区 统一管理。用户在申请动态内存时,只需指定需要申请的内存块大小,由内存管理算法选择 某一个动态数据分配区进行分配即可。然而,由于用户无法指定(甚至不感知)内存块的 具体分配位置,并且不同时刻分配的内存块所在的动态数据分配区不确定,因此该方法无 法保证分配的内存块为从核的近端动态内存中的内存块。进而,由于异构多核非一致分级 内存体系架构中,不同的核之间可能无法进行内存访问,因此将可能导致内存分配或者访 问失败,从而无法保证系统的正常运行。
[0006] 第二,如图3所示,将系统内不同的动态内存区作为一个单独的分区来管理,该分 区包括管理区以及动态数据分配区。用户在申请动态内存时,通过指定分区号来指定从哪 个对应动态内存区上进行申请。然而,一方面,由于异构多核非一致分级内存体系架构中, 不同的核之间可能无法进行内存访问,因此对于主核不能直接访问的内存,将导致无法进 行远端动态内存分配管理(如左侧的核1无法在分区2上申请内存);另一方面,由于内存 分区的管理区与动态数据分配区位于同一个动态内存区,因此当分区位于三级(Level 3, 简称:L3)内存或L4内存时,其申请和释放时延非常大。

【发明内容】

[0007] 本发明的实施例提供动态内存管理装置及方法,以至少解决现有技术中的动态内 存管理方法无法保证异构多核非一致分级内存体系正常运行、无法在异构多核非一致分级 内存体系下进行远端动态内存分配管理或效率低下的问题,能够在保证异构多核非一致分 级内存体系正常运行的前提下,提高远端动态内存管理的效率。
[0008]为达到上述目的,本发明的实施例采用如下技术方案:
[0009]第一方面,提供一种动态内存管理装置,所述动态内存管理装置部署在具有 主-从结构的异构多核的主核子系统中,包括:至少一个第一分区管理单元;其中,
[0010] 所述至少一个第一分区管理单元中的每个第一分区管理单元中存储该第一分区 管理单元对应的所述主核的远端动态内存的管理信息,所述主核的远端动态内存的管理信 息用于对所述主核的远端动态内存进行申请与释放管理。
[0011] 在第一方面第一种可能的实现方式中,结合第一方面,所述主核的远端动态内存 的管理信息包含:至少一个资源池的管理信息;
[0012] 其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中 至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于 该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上。
[0013] 在第一方面第二种可能的实现方式中,结合第一方面第一种可能的实现方式,所 述至少一个资源池的管理信息还包含:第一对应关系,所述第一对应关系为所述至少一个 资源池中每个资源池的首地址与该资源池标识的对应关系。
[0014] 在第一方面第三种可能的实现方式中,结合第一方面第一种可能的实现方式或第 一方面第二种可能的实现方式,所述至少一个内存块的信息包含比特位表,所述比特位表 中的每个比特位分别用于表征所述至少一个内存块中每个内存块的使用状态,其中,所述 使用状态包含:占用状态、或空闲状态。
[0015] 在第一方面第四种可能的实现方式中,结合第一方面第一种可能的实现方式至第 一方面第三种可能的实现方式,所述至少一个资源池中每个资源池关联的动态内存的大小 =该资源池中的内存块的总数X该资源池中每个内存块的大小。
[0016] 在第一方面第五种可能的实现方式中,结合第一方面至第一方面第四种可能的实 现方式,所述动态内存管理装置还包括:第二分区管理单元;
[0017] 所述第二分区管理单元中存储所述主核的近端动态内存的管理信息,所述主核的 近端动态内存的管理信息用于对所述主核的近端动态内存进行申请与释放管理。
[0018] 第二方面,提供一种动态内存管理方法,所述动态内存管理方法应用于动态内存 管理装置,所述动态内存管理装置部署在具有主-从结构的异构多核的主核子系统中,包 括:至少一个第一分区管理单元;其中,所述至少一个第一分区管理单元中的每个第一分 区管理单元中存储该第一分区管理单元对应的所述主核的远端动态内存的管理信息,所述 主核的远端动态内存的管理信息用于对所述主核的远端动态内存进行申请与释放管理;所 述方法包括;
[0019] 获取第一内存块申请信息,所述第一内存块申请信息包括:所述第一内存块所在 的动态内存对应的第一分区管理单元的分区标识、以及所述第一内存块的大小;
[0020] 根据所述第一内存块所在的动态内存对应的第一分区管理单元的分区标识,确定 所述第一内存块所在的动态内存对应的第一分区管理单元;
[0021] 根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该第一 分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大小, 从所述第一内存块所在的动态内存中分配所述第一内存块。
[0022] 在第二方面第一种可能的实现方式中,结合第二方面,所述主核的远端动态内存 的管理信息包含:至少一个资源池的管理信息;
[0023] 其中,所述至少一个资源池的管理信息中每个资源池的管理信息包含该资源池中 至少一个内存块的信息,所述至少一个内存块的大小相等,并且所述至少一个内存块位于 该第一分区管理单元对应的所述主核的远端动态内存的连续内存区上;
[0024] 所述根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的该 第一分区管理单元对应的所述主核的远端动态内存的管理信息、以及所述第一内存块的大 小,从所述第一内存块所在的动态内存中分配所述第一内存块,包括:
[0025] 根据所述第一内存块所在的动态内存对应的第一分区管理单元中存储的至少一 个资源池的管理信息,查找满足预设条件的资源池,所述预设条件包括:该资源池中内存块 的大小不小于所述第一内存块的大小,并且该资源池中内存块的大小在第一资源池集合包 含的资源池中内存块的大小中最小,所述第一资源池集合为所述至少一个资源池中内存块 的大小不小于所述第一内存块的大小的资源池的集合;
[0026] 若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分配所 述第一内存块。
[0027] 在第二方面第二种可能的实现方式中,结合第二方面第一种可能的实现方式,所 述至少一个内存块的信息包含比特位表,所述比特位表中的每个比特位分别用于表征所述 至少一个内存块中每个内存块的使用状态,其中,所述使用状态包含:占用状态、或空闲状 态;
[0028] 所述若存在满足所述预设条件的资源池,在所述满足所述预设条件的资源池上分 配所述第一内存块,包括:
[0029] 若存在满足所述预设条件的资源池,根据所述比特位表确定所述满足预设条件的 资源池中的至少一个内存块中是否存在空闲内存块;
[0030] 若所述满足预设条件的资源池中的至少一个内存块中存在空闲内存块,将所述空 闲内存块对应的比特位置为占用状态。
[0031] 在第二方面第
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1