一种面向多核系统的内存管理装置及方法制造方法及图纸

技术编号:19121692 阅读:25 留言:0更新日期:2018-10-10 05:00
本发明专利技术提供了一种面向多核系统的内存管理装置及方法,包括私有内存管理模块、公平同步控制模块和全局内存管理模块;私有内存管理模块,管理私有内存区,主要用于小块内存的申请,每个核对应一个私有内存区,采用无锁化设计,避免锁的开销;公平同步控制模块,保证多个核在向全局内存管理模块索取内存时,能够做到公平同步;全局内存管理模块,管理全局内存区,为私有内存管理模块服务,负责大块内存的申请,在内存不够时,向系统进行内存获取。本发明专利技术采用私有无锁化以及内存块缓冲技术,配合使用公平同步互斥算法,保证内存访问的效率以及资源争夺的公平性。加入公平同步机制,避免了核之间内存资源竞争的不公,同时保证内存访问效率。

【技术实现步骤摘要】
一种面向多核系统的内存管理装置及方法
本专利技术涉及多核处理器内存管理
,尤其涉及一种面向多核系统的内存管理装置及方法。
技术介绍
多核处理器可以看作是将多个通用的CPU以及一些功能部件集成在一块芯片中形成的一个片上系统。内存管理子系统是保证整个系统正常工作的基础,为其他模块的正常工作提供了基础保障。在单核系统内存管理中,需要关注内存碎片,分配效率等问题,而在多核内存管理中,还涉及到一些不同于单核内存管理的问题,如共享缓存失效、互斥访问、核间碎片等。现有的成熟内存管理方法,如Jemalloc、Ptmalloc、Tcmalloc,他们所考虑的更多是通用性。在多核多任务系统中使用这些管理方法时,随着任务数的增多,管理方法的效率就会相应降低。虽然Tcmalloc在这方面有所改进,但不可避免的会出现另一个问题:多任务之间争夺资源的公平性。现有的内存管理装置都可以用图1所示的简化形式来表示。内存作为公共资源,为了保证资源访问的正确性,多个任务对资源的访问应该互斥的进行,无论是Ptmalloc还是Tcmalloc,最后都要保证互斥操作。由于阻塞任务的唤醒具有随机性,在极端情况下,如果某个任务频繁的进行内存操作,而操作系统只对这个任务进行响应,那其他等待内存分配的任务就会一直阻塞。这就形成了一种“饥饿”现象,多任务工作演变成单任务工作,多核系统的效率就降低了。
技术实现思路
本专利技术的目的还在于提供一种面向多核系统的高效内存分配以及核间内存公平竞争的内存管理方法。为解决上述技术问题,本专利技术提供了一种面向多核系统的内存管理装置,包括私有内存管理模块、公平同步控制模块和全局内存管理模块;所述的私有内存管理模块,管理私有内存区,主要用于小块内存的申请,每个核对应一个私有内存区,采用无锁化设计,避免锁的开销;所述的公平同步控制模块,保证多个核在向全局内存管理模块索取内存时,能够做到公平同步;所述的全局内存管理模块,管理全局内存区,为私有内存管理模块服务,负责大块内存的申请,在内存不够时,向系统进行内存获取。本专利技术所述的一种面向多核系统的内存管理方法,包括如下步骤:S1、每个核上分配一个私有内存区,核上任务分配内存时,先从私有内存分配内存,如果需要的内存块大于2K或私有内存区的空闲块不够,则转向全局内存管理区申请内存分配,否则,到步骤S4;S2、所有核共用一个全局内存区,在全局内存区上加入公平同步保护,保证任务竞争资源公平;S3、如果全局内存区内存足够,则将合适的内存空间批发给私有内存区,否则,向系统进行内存空间索取;S4、返回申请到的内存地址;内存释放过程:在每块内存上都会加入相应的Tag标记,表示当前内存的来源,如果来自私有内存区,则将内存块返还到私有内存区,否则,归还到全局内存区,交由全局内存区的内存空间,再决定其是否归还到系统中。本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:在多核内存管理方法上,提高内存访问效率,是众多内存管理方法共同追求的一个目标。目前主要从三个方面对多核系统内存管理方案进行优化:第一,尽量采用私有化设计,减少处理器各个核心的共享数据量或减少共享数据的访问;第二,在对共享数据进行操作时,尽量避免使用锁,这样可以降低锁对系统性能的影响;第三,从改善多核系统整体性能的角度出发,要提高整体性能,就需要对每个处理器核心的单核性能进行优化,对于单核而言,应该尽量提高对自己私有数据的访问能力。通过私有无锁化设计,可以降低内存竞争开销,再加上一定的内存块缓存策略,可以使锁的竞争开销降低。本专利技术对内存进行分级管理,采用私有无锁化以及内存块缓冲技术,配合使用公平同步互斥算法,保证内存访问的效率以及资源争夺的公平性。在小内存申请时,尽量避免锁的使用;在大内存申请时,以低粒度锁进行同步控制,同时加入公平同步机制,避免了核之间内存资源竞争的不公,同时保证内存访问效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为面向多核系统的内存管理装置模型图。图2是全局内存区组织结构图。图3是公平同步互斥算法流程图。图4是私有内存区组织结构图。具体实施方式为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。如图1-图4所示,本实施例所述的一种面向多核系统的内存管理装置,包括私有内存管理模块、公平同步控制模块和全局内存管理模块;所述的私有内存管理模块,管理私有内存区,主要用于小块内存的申请,每个核对应一个私有内存区,采用无锁化设计,避免锁的开销;所述的公平同步控制模块,保证多个核在向全局内存管理模块索取内存时,能够做到公平同步;所述的全局内存管理模块,管理全局内存区,为私有内存管理模块服务,负责大块内存的申请,在内存不够时,向系统进行内存获取。本实施例所述的一种面向多核系统的内存管理方法,包括如下步骤:S1、每个核上分配一个私有内存区,核上任务分配内存时,先从私有内存分配内存,如果需要的内存块大于2K或私有内存区的空闲块不够,则转向全局内存管理区申请内存分配,否则,到步骤S4;S2、所有核共用一个全局内存区,在全局内存区上加入公平同步保护,保证任务竞争资源公平;S3、如果全局内存区内存足够,则将合适的内存空间批发给私有内存区,否则,向系统进行内存空间索取;S4、返回申请到的内存地址;内存释放过程:在每块内存上都会加入相应的Tag标记,表示当前内存的来源,如果来自私有内存区,则将内存块返还到私有内存区,否则,归还到全局内存区,交由全局内存区的内存空间,再决定其是否归还到系统中。更为具体的:(1)全局内存管理模块全局内存管理模块主要用于管理全局内存区,附图3是全局内存区的组织结构图。全局内存区以伙伴算法为基础,每次分配和释放内存块都以2的幂次为单位,可以加快内存的合并和分离速度。单个区段的可用伙伴内存块可能无法满足用户当前申请需要,因此在全局内存区设置多个区段,同时设立一个区段范围标志Range,代表当前可分配内存的最大区段索引下标。在内存分配时按照如下步骤进行多次尝试分配,只有都尝试失败后,才调用系统接口,减少与系统交互的开销,内存分配步骤如下:1)先从Range指示的区段进行内存分配,分配成功,返回内存地址,不成功,执行步骤2)。2)从[0,Range)的区段中查找是否有可用的内存块,查找到,返回内存地址,否则,执行步骤3)。3)扩展一个新的区段,Range加一,从新的区段中进行内存分配,如果分配不成功,则到步骤4)。4)调用系统接口,进行内存分配。全局内存区内存分配算法的具体实现如下:全局内存区在回收内存时,主要从内存块标记Tag中获取相关释放信息,根据这些信息,决定内存块归还给系统还是释放到对应区段中,如果将内存块归还到对应区段中,主要采用伙伴算法的释放过程,如回收大小为的空闲块时,若阶次记录链表中存在的伙伴空闲块,则应将其与伙伴块合并为大小为的空闲块,若阶次记录链表中还存在的伙伴空闲块,又继续与其伙伴块合并为的空闲块,依此类推,直到不能本文档来自技高网...
一种面向多核系统的内存管理装置及方法

【技术保护点】
1.一种面向多核系统的内存管理装置,其特征在于,包括私有内存管理模块、公平同步控制模块和全局内存管理模块;所述的私有内存管理模块,管理私有内存区,主要用于小块内存的申请,每个核对应一个私有内存区,采用无锁化设计,避免锁的开销;所述的公平同步控制模块,保证多个核在向全局内存管理模块索取内存时,能够做到公平同步;所述的全局内存管理模块,管理全局内存区,为私有内存管理模块服务,负责大块内存的申请,在内存不够时,向系统进行内存获取。

【技术特征摘要】
1.一种面向多核系统的内存管理装置,其特征在于,包括私有内存管理模块、公平同步控制模块和全局内存管理模块;所述的私有内存管理模块,管理私有内存区,主要用于小块内存的申请,每个核对应一个私有内存区,采用无锁化设计,避免锁的开销;所述的公平同步控制模块,保证多个核在向全局内存管理模块索取内存时,能够做到公平同步;所述的全局内存管理模块,管理全局内存区,为私有内存管理模块服务,负责大块内存的申请,在内存不够时,向系统进行内存获取。2.一种面向多核系统的内存管理方法,其特征在于,包括如下步骤:S1、每个核上分配一个私有内存区,核上任务分配...

【专利技术属性】
技术研发人员:王志刚
申请(专利权)人:哈尔滨英赛克信息技术有限公司
类型:发明
国别省市:黑龙江,23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1