内存分配方法、内存分配装置及服务器与流程

文档序号:12363544阅读:171来源:国知局
内存分配方法、内存分配装置及服务器与流程

本发明涉及微处理器设计领域,尤其涉及一种内存分配方法、内存分配装置及服务器。



背景技术:

存储系统是指计算机中由存放程序和数据的各种存储设备、控制部件以及管理信息调度的硬件和软件所组成的系统。现代计算机采用由多级存储设备组成的存储体系,包括高速缓冲存储器cache、主存储器、外存储器三级,其中,主存储器又称主存、内存,普遍采用动态随机存取存储器(Dynamic Random Access Memory,简称DRAM)。计算机中,存储系统的存储容量应确保各种应用程序的需要,存储系统的存储速度应尽量与中央处理器(Central Processing Unit,简称CPU)的处理速度相匹配。但是,由于CPU性能提升的速度远大于DRAM性能提升的速度,因此,形成了CPU计算性能和存储性能之间的速度差,称为存储墙问题。

为了提高存储系统的存储性能,提出了各种各样的管理策略,例如预取策略。所谓预取策略,是指存储系统根据CPU发出的地址历史信息,预测CPU将要访问的地址,提前将该预测的地址从下级存储设备中取到上级存储设备中(比如,从内存预取到cache中),加快了应用程序的执行速度。图1为现有的存储系统的结构示意图,如图1所示,内存空间配置统一的管理策略,当应用程序发出页面请求时,操作系统将页面请求分配到配置了管理策略的内存空间中。

但是,随着处理器性能的提升,处理器可以同时执行多个线程,不同的线程具有不同的访存需求和访存特点,例如:计算密集型的应用对访存延迟比较敏感,而图像和视频应用则对访存带宽比较敏感。由于应用程序不同的访存需求和访存特点,对存储系统的管理策略提出了不同的要求,尤其是当这些线程交织在一起,内存控制器面对的访存请求具有非常大的不规则性和 不可预测性,从而使得存储系统的存储性能受到了严重影响。而且,随着多核处理器的发展,多线程访存行为更加复杂。图2为多核处理器的结构示意图,如图2所示,多核处理器一般包含几个对称的处理器核,它们各自拥有私有的一级/二级缓存,通过互连总线访问共享的最后一级缓存和内存控制器。由于多个处理器核同时访问共享的内存控制器,更加加剧了对内存资源的竞争,使得多线程访存多样性问题和存储墙问题变得更为突出。

现有技术中,针对多线程的访存多样性问题,可以采用线程分簇的内存调度,将线程分为延迟敏感型和带宽敏感型两类,内存控制器在进行命令调度时,优先调度延迟敏感型的线程,对于带宽敏感型的线程,通过周期性地重排线程的优先级来保证线程间的公平性。但是,线程分簇调度可以平衡存储系统的吞吐率和公平性问题,却不能发挥DRAM的最大性能,影响了存储系统的存储效率,加剧了存储墙问题。



技术实现要素:

本发明提供一种内存分配方法、内存分配装置及服务器,可以针对应用程序的访存特征采取差异化的管理策略,解决了多线程访存多样性问题,并提升了存储系统的存储效率,缓解了存储墙问题。

第一方面,本发明提供一种内存分配方法,包括:

接收应用程序的页面请求,所述页面请求中携带所述应用程序的标识;

确定所述应用程序的标识对应的访存特征;

根据所述应用程序的访存特征确定管理策略,并将所述应用程序的页面请求分配至所述管理策略对应的地址空间中。

结合第一方面,在第一方面的第一种可能的实现方式中,所述确定所述应用程序的标识对应的访存特征,包括:

在应用程序特征表中查询是否存在所述应用程序的标识,所述应用程序特征表中包括多个应用程序的标识及对应的访存特征;

若存在,则获得所述应用程序的标识对应的访存特征;

若不存在,则通过自学习过程或者调用所述应用程序的预设应用程序编程接口API,获得所述应用程序的访存特征,并将所述应用程序的标识及对应的访存特征存储在所述应用程序特征表中。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述通过自学习过程获得所述应用程序的访存特征,包括:

将所述应用程序的连续N次页面请求分配至一个管理策略对应的地址空间中,统计所述管理策略对应的地址空间与所述应用程序之间的亲和度;N为大于等于1的整数;

判断所述亲和度是否大于预设阈值;

若是,则根据所述亲和度获得所述应用程序的访存特征;

若否,则重新分配一个管理策略对应的地址空间,直至管理策略对应的地址空间与所述应用程序之间的亲和度大于预设阈值;或者,直至不存在其他管理策略对应的地址空间,则学习过程结束,根据亲和度获得所述应用程序的访存特征。

结合第一方面、第一方面的第一或第二种任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述管理策略包括:流式预取策略、基于内容的预取策略,以及不预取策略。

结合第一方面、第一方面的第一或第二种任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述应用程序的访存特征包括:应用程序的空间局部性和应用程序的时间局部性。

第二方面,本发明提供一种内存分配装置,包括:

接收模块,用于接收应用程序的页面请求,所述页面请求中携带所述应用程序的标识;

处理模块,用于确定所述应用程序的标识对应的访存特征;

分配模块,用于根据所述应用程序的访存特征确定管理策略,并将所述应用程序的页面请求分配至所述管理策略对应的地址空间中。

结合第二方面,在第二方面的第一种可能的实现方式中,所述处理模块还包括查询模块、第一获取模块、第二获取模块和第三获取模块;

所述查询模块用于,在应用程序特征表中查询是否存在所述应用程序的标识,所述应用程序特征表中包括多个应用程序的标识及对应的访存特征;

所述第一获取模块用于,若所述应用程序特征表中存在所述应用程序的标识,则获得所述应用程序的标识对应的访存特征;

所述第二获取模块用于,若所述应用程序特征表中不存在所述应用程序 的标识,则通过自学习过程获得所述应用程序的访存特征,并将所述应用程序的标识及对应的访存特征存储在所述应用程序特征表中;

所述第三获取模块用于,若所述应用程序特征表中不存在所述应用程序的标识,则调用所述应用程序的预设API,获得所述应用程序的访存特征,并将所述应用程序的标识及对应的访存特征存储在所述应用程序特征表中。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第二获取模块具体用于:

将所述应用程序的连续N次页面请求分配至一个管理策略对应的地址空间中,统计所述管理策略对应的地址空间与所述应用程序之间的亲和度;N为大于等于1的整数;

判断所述亲和度是否大于预设阈值;

若是,则根据所述亲和度获得所述应用程序的访存特征;

若否,则重新分配一个管理策略对应的地址空间,直至管理策略对应的地址空间与所述应用程序之间的亲和度大于预设阈值;或者,直至不存在其他管理策略对应的地址空间,则学习过程结束,根据亲和度获得所述应用程序的访存特征。

结合第二方面、第二方面的第一或第二种任一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述管理策略包括:流式预取策略、基于内容的预取策略,以及不预取策略。

结合第二方面、第二方面的第一或第二种任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述应用程序的访存特征包括:应用程序的空间局部性和应用程序的时间局部性。

第三方面,本发明提供一种服务器,包括:内存控制器,内存,外存储器,处理器;

所述内存控制器用于将所述内存划分为多个地址空间,并为所述地址空间配置管理策略;

所述处理器,用于运行所述外存储器存储的程序用以执行如第一方面、第一方面的第一至第四种任一种可能的实现方法。

本发明提供一种内存分配方法、内存分配装置及服务器。本发明提供的内存分配方法,包括:接收应用程序的页面请求,所述页面请求中携带所述 应用程序的标识;确定所述应用程序的标识对应的访存特征;根据所述应用程序的访存特征确定管理策略,并将所述应用程序的页面请求分配至所述管理策略对应的地址空间中。本发明提供的内存分配方法,内存空间被划分为多个地址空间,并对每个地址空间配置管理策略,可以针对应用程序的访存特征采取差异化的管理策略,将应用程序的页面请求分配到适合该应用程序访存特征的管理策略对应的地址空间中,解决了多线程访存多样性问题,提升了存储系统的存储效率,缓解了存储墙问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有的存储系统的结构示意图;

图2为多核处理器的结构示意图;

图3为本发明实施例一提供的内存分配方法的流程图;

图4为本发明实施例一提供的内存分配方法所应用的存储系统的结构示意图;

图5为本发明实施例二提供的内存分配方法的流程图;

图6为本发明实施例三提供的内存分配方法的流程图;

图7为本发明实施例一提供的内存分配装置的结构示意图;

图8为本发明实施例二提供的内存分配装置的结构示意图;

图9为本发明实施例一提供的服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图3为本发明实施例一提供的内存分配方法的流程图,图4为本发明实施例一提供的内存分配方法所应用的存储系统的结构示意图。本实施例提供的内存分配方法,执行主体可以是内存分配装置,例如:芯片、单片机等,该内存分配装置可以集成在计算机或者服务器上。该内存分配方法中的内存为广义的内存,可以为cache,也可以为主存。而且,该内存分配方法所应用的存储系统的结构如图4所示,内存空间可以被划分为多个地址空间,并且,每个地址空间配置一个管理策略,相应的,内存分配装置、计算机或者服务器支持将内存空间划分为多个地址空间,以及为每个地址空间配置一个管理策略。如图3所示,该内存分配方法可以包括:

步骤101、接收应用程序的页面请求,页面请求中携带应用程序的标识。

其中,应用程序的标识可以唯一区分不用的应用程序,应用程序标识可以有多种实现方式,例如:应用程序的名称,本实施例对此不加以限制。

步骤103、确定应用程序的标识对应的访存特征。

应用程序运行时,在一段时间里,应用程序与存储器件之间的交互会体现出一定的特点和规律性,这些特点和规律即为应用程序的访存特征。例如,有些应用程序基于顺序访问方式,有些应用程序基于链表型访问方式,有些应用程序中某些程序段不能同时运行或者根本不运行,有些应用程序中经常运行相同的指令和数据等等。

可选的,应用程序的访存特征可以包括:应用程序的空间局部性和应用程序的时间局部性。

所谓应用程序的空间局部性,反映了与应用程序当前引用数据地址相近地址中的数据被使用的趋势,即,在空间上,与当前被访问数据的地址相近地址中的数据,可能在最近的一段时间内也会被访问使用。

所谓应用程序的时间局部性,反映了应用程序中对相同地址的数据重新引用的趋势,即,在时间上,当前地址中的数据被访问,那么在最近的一段时间内,该地址中的数据会被再次访问使用。

步骤105、根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。

在本步骤中,由于获取了应用程序的访存特征,则根据该访存特征确定与该访存特征相匹配的管理策略,并将应用程序的页面请求分配至配置了该 管理策略的地址空间中。从而,基于内存资源划分以及配置不同的管理策略,针对不同应用程序的访存特征,采用针对性的管理策略来优化应用程序页面请求的内存分配,从而可以解决多线程访存多样性问题,而且,由于针对应用程序的访存特征采取适合的管理策略,最大化地发挥了内存的存储效率,缓解了存储墙问题。

可选的,管理策略可以包括:流式预取策略、基于内容的预取策略,以及不预取策略。

流式预取策略、基于内容的预取策略,以及不预取策略,是基于应用程序空间局部性的管理策略。流式预取策略是指顺序访问时预取连续地址的预取策略;基于内容的预取策略是指在链表型访问密集时根据数据内容进行预取的预取策略;不预取策略是指不采用任何预取技术。所以,根据应用程序的空间局部性,可以确定不同的管理策略,例如:若应用程序的空间局部性好,即,与应用程序当前引用数据地址相近的地址中的数据被访问使用的概率很大,则说明该应用程序可能采用了顺序访问,则该应用程序适合流式预取策略。若应用程序的空间局部性不好,即,与应用程序当前引用数据地址相近的地址中的数据被访问使用的概率很小,则说明该应用程序可能采用了链表型访问,则该应用程序适合基于内容的预取策略或者不预取策略。

可选的,管理策略还可以包括:最近最少使用(Least Recently Used,简称LRU)替换策略,以及不缓存策略。

LRU替换策略以及不替换策略是基于应用程序时间局部性的管理策略,尤其应用于cache。LRU替换策略是指在每次替换内存块时,都选择内存组中最近最长时间未被访问的内存块的替换策略;不缓存策略是指不在内存中缓存该应用程序的数据。所以,根据应用程序的时间局部性,可以确定不同的管理策略,例如:若应用程序的时间局部性好,即,应用程序中对相同地址的数据重新引用的概率很大,则该应用程序适合LRU替换策略,将该应用程序的页面请求分配至配置了LRU替换策略的地址空间中,使该应用程序的数据尽可能的保存在内存中。若应用程序的时间局部性不好,即,应用程序中对相同地址的数据重新引用的概率很小,则该应用程序适合不缓存策略,使该应用程序的数据不进入内存中,以减少对内存的污染。

可选的,管理策略还可以包括:页面交织地址映射策略和基于排列的页 面交织地址映射策略。

页面交织地址映射策略和基于排列的页面交织地址映射策略,属于地址映射技术。地址映射是指将处理器等访存部件发送来的线性物理地址翻译为对应于内存颗粒的片选、bank地址、行地址和列地址。其中,页面交织地址映射策略属于传统的地址映射策略,基于排列的页面交织地址映射策略,能够降低最后一级缓存冲突缺失导致的DRAM行冲突的比例。

可选的,管理策略还可以包括:DRAM开页策略和DRAM关页策略。

DRAM开页策略和DRAM关页策略,属于DRAM的页面管理策略。DRAM开页策略保持DRAM行处于激活态,适用于空间局部性好的应用程序。DRAM关页策略保持DRAM行处于空闲态,适用于空间局部性不好的应用程序。

本实施例提供了一种内存分配方法,包括:接收应用程序的页面请求,确定应用程序的标识对应的访存特征,根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。本实施例提供的内存分配方法,基于内存空间被划分为多个地址空间,并对每个地址空间配置管理策略,可以针对应用程序的访存特征采取差异化的管理策略,将应用程序的页面请求分配到适合该应用程序访存特征的管理策略对应的地址空间中,解决了多线程访存多样性问题,提升了存储系统的存储效率,缓解了存储墙问题。

图5为本发明实施例二提供的内存分配方法的流程图,本实施例在实施例一的基础上,提供了实施例一中步骤103的一种具体实施方式。如图5所示,本实施例提供的内存分配方法,可以包括:

步骤201、接收应用程序的页面请求,页面请求中携带应用程序的标识。

步骤203、在应用程序特征表中查询是否存在应用程序的标识。

其中,应用程序特征表中包括多个应用程序的标识及对应的访存特征。在本实施例中,对于应用程序特征表的存储位置不做限定,可以存储在内存中,也可以存储在外部存储器中。

若在应用程序特征表中存在应用程序的标识,则执行步骤205;若在应用程序特征表中不存在应用程序的标识,则执行步骤207。

步骤205、获得应用程序的标识对应的访存特征。

如果在应用程序特征表中存在应用程序的标识,则直接在应用程序特征表中查询获得应用程序的标识对应的访存特征,之后执行步骤209。

步骤207、通过自学习过程或者调用应用程序的预设应用程序编程接口(Application Programming Interface,简称API),获得应用程序的访存特征,并将应用程序的标识及对应的访存特征存储在应用程序特征表中。

若在应用程序特征表中不存在应用程序的标识,在本步骤中,可以通过自学习过程或者调用应用程序的预设API获得应用程序的访存特征,之后执行步骤209。

所谓自学习过程,就是在将应用程序的页面请求分配到不同管理策略对应的地址空间的过程中,获得应用程序的访存特征。通过自学习过程可以获得应用程序的准确的访存特征,在确定应用程序相匹配的管理策略时提高了准确性。

通过调用应用程序的预设API获得应用程序的访存特征,是指程序员将应用程序的访存特征作为已知信息编写在应用程序中,并设置预设API,当在应用程序特征表中不存在应用程序的标识时,内存分配装置将判断应用程序是否具有预设API,如果应用程序具有预设API,则内存分配装置调用该预设API直接获得应用程序的访存特征。需要说明的是,调用预设API获得应用程序的访存特征,可以在查询应用程序特征表之前执行,也可以在查询应用程序特征表之后执行。

步骤209、根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。

本实施例提供了一种内存分配方法,包括:接收应用程序的页面请求,确定应用程序的标识对应的访存特征,根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。其中,确定应用程序的标识对应的访存特征,包括:在应用程序特征表中查询是否存在应用程序的标识,若存在,则获得应用程序的标识对应的访存特征,若不存在,则通过自学习过程或者调用预设API获得应用程序的访存特征。本实施例提供的内存分配方法,基于内存空间被划分为多个地址空间,并对每个地址空间配置管理策略,可以针对应用程序的访存特征采取差异化的管理策略,将应用程序的页面请求分配到适合该应用程序访存特征的管理策略对应 的地址空间中,解决了多线程访存多样性问题,提升了存储系统的存储效率,缓解了存储墙问题。

图6为本发明实施例三提供的内存分配方法的流程图,本实施例在实施例一和实施例二的基础上,提供了通过自学习过程获取应用程序访存特征的具体实施方式。如图6所示,本实施例提供的内存分配方法,可以包括:

步骤301、接收应用程序的页面请求,页面请求中携带应用程序的标识。

步骤303、在应用程序特征表中查询是否存在应用程序的标识。

步骤305、若在应用程序特征表中不存在应用程序的标识,将应用程序的连续N次页面请求分配至一个管理策略对应的地址空间中,统计管理策略对应的地址空间与应用程序之间的亲和度。

其中,N为大于等于1的整数。

其中,统计管理策略对应的地址空间与应用程序之间的亲和度可以采用多种实现方式,例如:可以采用性能计数器的方式,其中,性能计数器需要区分出不同的应用程序,可以通过区分应用程序的标识实现,也可以通过分时段统计不同的应用程序实现,而且,性能计数器的数目可以根据实际需要进行设置,可以在整个内存空间中设置一个,也可以在每个地址空间中设置一个。

其中,管理策略对应的地址空间与应用程序之间的亲和度反映了应用程序对管理策略的适应程度,即,亲和度反映了应用程序的存储特征,例如:流式预取对应的地址空间与应用程序之间的亲和度很高,则说明该应用程序的空间局部性好。

步骤307、判断亲和度是否大于预设阈值。

若亲和度大于预设阈值,则执行步骤309;若亲和度不大于预设阈值,则执行步骤311。

步骤309、根据亲和度获得应用程序的访存特征。

若亲和度大于预设阈值,则说明该管理策略适合于该应用程序,根据该亲和度可以获得应用程序的访存特征,之后执行步骤313。

步骤311、重新分配一个管理策略对应的地址空间,直至管理策略对应的地址空间与应用程序之间的亲和度大于预设阈值;或者,直至不存在其他管理策略对应的地址空间,则学习过程结束,根据亲和度获得应用程序的访 存特征。

若亲和度不大于预设阈值,则说明该管理策略不适合该应用程序,需要匹配下一个管理策略,即,重新分配一个管理策略对应的地址空间给该应用程序,重新统计新分配的管理策略对应的地址空间与该应用程序之间的亲和度,并判断亲和度是否大于预设阈值。所以,最终执行结果有两种,一种是存在管理策略对应的地址空间与应用程序之间的亲和度大于预设阈值,另外一种是不存在管理策略对应的地址空间与应用程序之间的亲和度大于预设阈值。无论是否存在,都根据亲和度获得应用程序的访存特征,之后执行步骤313。

其中,预设阈值可以根据实际需要进行设置,针对不同的管理策略可以设置统一的预设阈值,也可以设置不同的预设阈值。

其中,根据亲和度获得应用程序的访存特征,可以包括:

若存在管理策略对应的地址空间与应用程序之间的亲和度大于预设值,则根据该管理策略对应的地址空间与应用程序之间的亲和度,获得应用程序的访存特征;或者,

若不存在管理策略对应的地址空间与应用程序之间的亲和度大于预设值,则根据最后一个管理策略对应的地址空间与应用程序之间的亲和度,获得应用程序的访存特征;或者,

若不存在管理策略对应的地址空间与应用程序之间的亲和度大于预设值,则根据任意一个管理策略对应的地址空间与应用程序之间的亲和度,获得应用程序的访存特征。

下面以一个包括具体参数的实例来详细说明步骤305~步骤311的执行过程,参数具体为:内存空间被划分为3个地址空间,地址空间0配置流式预取策略A,流式预取策略A对应预设阈值a,地址空间1配置基于内容的预取策略B,基于内容的预取策略B对应预设阈值b,地址空间2配置不预取策略C,不预取策略C对应预设阈值c,通过性能技术器的方式统计管理策略对应的地址空间与应用程序之间的亲和度,地址空间0配置性能计数器0,地址空间1配置性能计数器1,地址空间2配置性能计数器2,N取值为2,则步骤305~步骤311的执行过程如下:

将应用程序的第1次页面请求分配至地址空间0中,启动性能计数器0, 配置性能计数器0监测该页面的访存情况,经过预设时间T0后,读取性能计数器0的统计结果。当应用程序第2次进行页面请求时,继续将应用程序的第2次页面请求分配至地址空间0中,启动性能计数器0,配置性能计数器0监测该页面的访存情况,经过预设时间T0后,读取性能计数器0的统计结果。计算这两次性能计数器统计结果的平均值,作为流式预取策略A对应的地址空间0与应用程序之间的亲和度P[A,0]。判断P[A,0]是否大于预设阈值a,判断结果为P[A,0]不大于预设阈值a,说明流式预取策略A不适合该应用程序。

将应用程序的第3次页面请求分配至地址空间1中,启动性能计数器1,配置性能计数器1监测该页面的访存情况,经过预设时间T1后,读取性能计数器1的统计结果。当应用程序第4次进行页面请求时,继续将应用程序的第4次页面请求分配至地址空间1中,启动性能计数器1,配置性能计数器1监测该页面的访存情况,经过预设时间T1后,读取性能计数器1的统计结果。计算这两次性能计数器统计结果的平均值,作为基于内容的预取策略B对应的地址空间1与应用程序之间的亲和度P[B,1]。判断P[B,1]是否大于预设阈值b,判断结果为P[B,1]大于预设阈值b,说明基于内容的预取策略B适合该应用程序,根据亲和度P[B,1]获得该应用程序的访存特征,则根据该应用程序的访存特征,后续该应用程序的页面请求都会被分配到配置了基于内容的预取策略B对应的地址空间1中。

步骤313、将应用程序的标识及对应的访存特征存储在应用程序特征表中。

步骤315、根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。

本实施例提供了一种内存分配方法,包括:接收应用程序的页面请求,确定应用程序的标识对应的访存特征,根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。本实施例提供的内存分配方法,基于内存空间被划分为多个地址空间,并对每个地址空间配置管理策略,通过自学习方式获取应用程序的准确的访存特征,针对应用程序的访存特征采取差异化的管理策略,将应用程序的页面请求分配到适合该应用程序访存特征的管理策略对应的地址空间中,解决了多线程访存 多样性问题,提升了存储系统的存储效率,缓解了存储墙问题。

图7为本发明实施例一提供的内存分配装置的结构示意图。如图7所示,本实施例提供的内存分配装置,可以包括:

接收模块11,用于接收应用程序的页面请求,页面请求中携带应用程序的标识。

处理模块13,用于确定应用程序的标识对应的访存特征。

分配模块15,用于根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。

可选的,管理策略可以包括:流式预取策略、基于内容的预取策略,以及不预取策略。

可选的,应用程序的访存特征包括:应用程序的空间局部性和应用程序的时间局部性。

本实施例提供的内存分配装置,基于内存空间被划分为多个地址空间,并对每个地址空间配置管理策略,可以针对应用程序的访存特征采取差异化的管理策略,将应用程序的页面请求分配到适合该应用程序访存特征的管理策略对应的地址空间中,解决了多线程访存多样性问题,提升了存储系统的存储效率,缓解了存储墙问题。

图8为本发明实施例二提供的内存分配装置的结构示意图,本实施例在图7所示实施例一的基础上,提供了处理模块13的另一种实现方式。如图8所示,本实施例提供的内存分配装置,可以包括:

接收模块11,用于接收应用程序的页面请求,页面请求中携带应用程序的标识。

处理模块13,用于确定应用程序的标识对应的访存特征。

分配模块15,用于根据应用程序的访存特征确定管理策略,并将应用程序的页面请求分配至管理策略对应的地址空间中。

其中,处理模块13还可以包括查询模块131、第一获取模块133、第二获取模块135和第三获取模块137。

其中,查询模块131用于,在应用程序特征表中查询是否存在应用程序的标识,应用程序特征表中包括多个应用程序的标识及对应的访存特征。

所述第一获取模块133用于,若应用程序特征表中存在应用程序的标识, 则获得应用程序的标识对应的访存特征。

所述第二获取模块135用于,若应用程序特征表中不存在应用程序的标识,则通过自学习过程获得应用程序的访存特征,并将应用程序的标识及对应的访存特征存储在应用程序特征表中。

所述第三获取模块137用于,若应用程序特征表中不存在应用程序的标识,则调用应用程序的预设API,获得应用程序的访存特征,并将应用程序的标识及对应的访存特征存储在应用程序特征表中。

可选的,第二获取模块135具体用于:

将应用程序的连续N次页面请求分配至一个管理策略对应的地址空间中,统计管理策略对应的地址空间与应用程序之间的亲和度,N为大于等于1的整数。

判断亲和度是否大于预设阈值;若是,则根据亲和度获得应用程序的访存特征;若否,则重新分配一个管理策略对应的地址空间,直至管理策略对应的地址空间与应用程序之间的亲和度大于预设阈值;或者,直至不存在其他管理策略对应的地址空间,则学习过程结束,根据亲和度获得应用程序的访存特征。

本实施例提供的内存分配装置,基于内存空间被划分为多个地址空间,并对每个地址空间配置管理策略,可以针对应用程序的访存特征采取差异化的管理策略,将应用程序的页面请求分配到适合该应用程序访存特征的管理策略对应的地址空间中,解决了多线程访存多样性问题,提升了存储系统的存储效率,缓解了存储墙问题。

图9为本发明实施例一提供的服务器的结构示意图。如图9所示,该服务器100可以包括:内存控制器23,内存25,外存储器27,处理器21。

其中,内存控制器23用于将内存划分为多个地址空间,并为地址空间配置管理策略。

处理器21,用于运行外存储器27存储的程序用以执行图3所示实施例一至图6所示实施例三中的内存分配方法。

该处理器21的具体结构可以参照图7或图8所示实施例中的内存分配装置。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对 其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1