一种内存页管理方法及计算设备与流程

文档序号:25543413发布日期:2021-06-18 20:40
一种内存页管理方法及计算设备与流程

本发明涉及计算设备技术领域,尤其涉及一种内存页管理方法及计算设备。



背景技术:

随着计算设备技术的不断发展,人们对于计算设备性能的要求不断增高。为了提高计算设备的性能,计算设备中可以提供一个或多个内存空间,每个内存空间中都可以具有至少一个内存区域,每个内存区域中都可以包括至少一个内存页,其中,内存数据可以以内存页为单位进行管理。

在拥有单一内存空间的单一内存架构中,可以利用内存页着色技术(pagecoloring)来管理内存页,并根据各个内存区域的通过末级缓存(lastlevelcache,llc)便可获得数据的次数,对每个内存页进行着色,也就是将内存页分配到对应的内存区域,以减小计算设备的处理器的各个内核之间对llc的访问冲突,提高通过llc便可获得数据的次数,也即提高缓存命中率。

然而,上述利用内存页着色技术实现的减少处理器之间各个内核的访问冲突,是面向基于单一内存空间的内存架构,例如只存在图1所示的动态随机存储器(dynamicrandomaccessmemory,dram)内存空间的内存架构,或者只存在图1所示的新型非易失性存储介质(non-volatilememory,nvm)内存空间的内存架构。而对于拥有至少两个内存空间的混合内存架构,例如如图1所示的同时存在dram以及nvm两种内存空间的内存架构,上述方式没有考虑到内存空间的特性(例如一些内存空间的写寿命有限性),导致直接利用上述方式管理内存页时,没有利用异构存储介质的存储特性,导致异构存储介质中的一种存储介质提前损坏。



技术实现要素:

本申请所要解决的技术问题在于存在异构存储器提供的多个内存空间时,如何有效利用异构存储器的同时保证内存页的高效访问。

第一方面,本申请提供了一种内存页管理方法,异构的两个存储器对应提供第一内存空间和第二内存空间,该第一内存空间具有至少一个内存区域,该第一内存空间中的每个内存区域包括至少一个内存页;该第二内存空间具有至少一个内存区域,该第二内存空间中的每个内存区域包括至少一个内存页;该方法包括:在该第二内存空间中的目标内存页满足第一预设条件时,确定该目标内存页当前所属的内存区域,其中,该第一预设条件为该目标内存页的缓存冲突数值达到缓存冲突阈值,或者该目标内存页的写次数达到写阈值;若该目标内存页属于脏页,则将该目标内存页从该目标内存页当前所属的内存区域更改存储至目标内存区域,该目标内存区域为该第一内存空间中缓存冲突数值最小的内存区域。

可见,通过实施第一方面所提供的方法,可以根据第二内存空间中的目标内存页为脏页,将目标内存页当前所属的内存区域,调整为第一内存空间中缓存冲突数值最小的内存区域,充分考虑了第二内存空间中的内存页在写次数或者缓存冲突数值较高时第二内存空间对应的存储器可能负荷过重导致使用寿命减少的问题,在提高了第二内存空间对应的存储器的使用寿命同时,也保证了内存页的高效访问。

作为一种可选的实施方式,该将该目标内存页从该目标内存页当前所属的内存区域更改存储至目标内存区域之前,该方法还包括:获取该目标内存页的第一开销值,该第一开销值为该目标内存页由于缓存冲突导致的开销值;获取该目标内存页的第二开销值,该第二开销值为更改该目标内存页的内存区域导致的开销值;确定该第一开销值大于该第二开销值。

可见,通过实施上述可选的实施方式,可以利用第一开销值和第二开销值决定调整内存区域的时机,从而实现调整内存区域所产生的性能开销与调整该内存区域后减小对末级缓存访问的缓存冲突的最大平衡。

作为一种可选的实施方式,该方法还包括:若该目标内存页不属于脏页,则将该目标内存页从该当前所属的内存区域更改存储至该第二内存空间中的缓存冲突数值最小的内存区域。

可见,通过实施上述可选的实施方式,可以根据将不为脏页的目标内存页更改存储至相同内存空间(第二内存空间)中缓存冲突数值最小的内存区域,避免了第二空间对目标内存页的频繁写操作的同时,还避免了因增加写次数带来的对第一内存空间的存储器的损耗,以及避免跨内存空间迁移内存页带来的工作量。

作为一种可选的实施方式,该缓存冲突阈值是根据以下公式确定的:

其中,thrmiss表示该缓存冲突阈值,lr表示该第二内存空间的读内存延迟,β表示更改该目标内存页的内存区域后该目标内存页的缓存冲突数值下降的比例,tcost表示该目标内存页的第二开销值。

可见,通过实施上述可选的实施方式,可以根据上述参数确定缓存冲突阈值,并利用缓存冲突阈值决定调整内存区域的时机,从而实现调整内存区域所产生的性能开销与调整该内存区域后减小对末级缓存访问的缓存冲突的最大平衡,提高第二内存空间对应的存储器的使用寿命。

作为一种可选的实施方式,该写阈值是根据以下公式确定的:

其中,thrw-nvm表示该写阈值,lw-nvm表示该第二内存空间的写内存延迟,lw-dram表示该第一内存空间的写内存延迟,α表示可以牺牲部分该第二内存空间对应的存储器的使用寿命来提高性能的数值,β表示更改该目标内存页的内存区域后该目标内存页的缓存冲突数值下降的比例,tcost表示该目标内存页的第二开销值。

可见,通过实施上述可选的实施方式,可以根据上述参数确定写阈值,使计算设备可以利用写阈值决定调整目标内存页的内存区域的时机,提高第二内存空间的写寿命。

作为一种可选的实施方式,该方法还包括:接收写请求;从该第一内存空间中缓存冲突数值最小的内存区域中分配第一内存页,该第一内存页用于存储该写请求指定的待写入的数据。

可见,通过实施上述可选的实施方式,可以根据内存访问请求类型为写请求,选择适合写请求的内存空间为第一内存空间,避免了放入第二内存空间导致第二内存空间对应的存储器的写寿命下降的问题,从而平衡各个内存空间的读写性能能耗,提高整个计算设备的性能。

作为一种可选的实施方式,该方法还包括:接收读请求;从该第二内存空间中缓存冲突数值最小的内存区域中分配第二内存页,该第二内存页用于存储该读请求指定的数据。

可见,通过实施上述可选的实施方式,可以根据内存访问请求类型为读请求,选择适合读请求的内存空间为第二内存空间,充分利用了第二空间对应的存储器的读性能,从而平衡各个内存空间对应的存储器的读写性能能耗,提高整个计算设备的性能。

作为一种可选的实施方式,在该第一内存空间中的第三内存页满足第二预设条件时,确定该第三内存页当前所属的内存区域,其中,该第二预设条件为该目标内存页的缓存冲突数值达到缓存冲突阈值;若该第三内存页属于脏页,则将该第三内存页从该第三内存页当前所属的内存区域更改存储至该第一内存空间中缓存冲突数值最小的内存区域;或者,若该第三内存页不属于脏页,则将该第三内存页从该第三内存页当前所属的内存区域更改存储至该第二内存空间中缓存冲突数值最小的内存区域。

可见,通过实施上述可选的实施方式,可以向第三内存页优先分配缓存冲突数值最小的内存区域,并且,根据内存页的类型来确定分配的内存空间,可以避免其中一些内存空间的读写性能/能耗的不对称性导致的计算设备性能不佳的问题,从而获得最优的处理性能。

第二方面,提供了一种计算设备,该计算设备具有实现上述第一方面或第一方面可能的实现方式中计算设备行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。该模块可以是软件和/或硬件。基于同一发明构思,由于该计算设备解决问题的原理以及有益效果可以参见上述第一方面和第一方面的各可能的方法实施方式以及所带来的有益效果,因此该计算设备的实施可以参见上述第一方面和第一方面的各可能的方法实施方式,重复之处不再赘述。

第三方面,提供了一种计算设备,该计算设备包括:存储器,用于存储一个或多个程序;处理器,用于调用存储在该存储器中的程序以实现上述第一方面的方法设计中的方案,该计算设备解决问题的实施方式以及有益效果可以参见上述第一方面和第一方面的各可能的方法的实施方式以及有益效果,重复之处不再赘述。

第四方面,提供了一种计算设备可读存储介质,所述计算设备存储介质存储有程序,所述程序被处理器执行时使所述处理器执行上述第一方面的方法和第一方面的各可能的方法的实施方式,重复之处不再赘述。

第五方面,提供了一种计算设备程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面的方法和第一方面的各可能的方法的实施方式。

附图说明

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

图1是本发明实施例提供的一种用于内存页管理的整体架构图;

图2是本发明实施例提供的另一种用于内存页管理的整体架构图;

图3是本发明实施例提供的一种内存页管理方法的流程示意图;

图4是本发明实施例提供的一种内存空间的结构示意图;

图5是本发明实施例提供的另一种内存页管理方法的流程示意图;

图6是本发明实施例提供的又一种内存页管理方法的流程示意图;

图7是本发明实施例提供的一种内存页管理方法的情景示意图;

图8是本发明实施例提供的一种计算设备的结构示意图;

图9是本发明实施例提供的另一种计算设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例进行说明。

访问延迟,是指处理器对内存中存储的数据的访问过程所引起的延期。为了减小访问延迟对处理器的影响,在多核处理器的设计中,常常利用末级缓存llc这一缓存机制。

由于处理器的各个内核在访问数据时,首先需要访问自己的私有缓存(如图2所示的l1级缓存,还可以包括图2未示出的l2、l3级缓存等),如果私有缓存没有访问到就可以去访问llc,如果llc没有访问到就需要访问内存空间,并且将访问的内存空间的数据加载到llc中,用于该处理器再次访问该数据时,可以直接通过llc访问到该数据。因此,利用llc可以通过减少对内存空间的访问次数,增加直接通过缓存便可获得数据的次数,也即提高缓存命中率。

内存数据可以以内存页为单位进行管理。其中,在拥有单一内存空间的单一内存架构中,可以利用内存页着色技术来管理内存页,并根据各个内存区域的缓存命中率对每个内存页进行着色,以减小各个内核之间对llc的访问冲突,提高缓存命中率。

然而,以单一内存架构为仅有dram的内存空间为例,单一的基于dram的内存架构不但由于频繁的刷新操作造成大量的系统能耗,而且由于dram制造工艺的约束也严重限制了对dram扩展的可能性。又以单一内存架构为仅有nvm的内存空间为例,nvm的内存空间相比于dram的内存空间,具有更高的存储密度、更低的静态能耗以及非易失性。然而,由于nvm的固有特性,其同样存在写内存延迟高、写寿命有限、写操作能耗高的缺点。

因此,为了充分利用各个内存空间的优点,避免各个内存空间的缺点,混合内存架构成为研究的热门方向。由于在单一内存架构中使用的页面内存色技术,是为了最大化提高缓存命中率,保证内存页的高效访问,而在混合内存架构中,由于其中一些内存空间(例如nvm的内存空间和dram的内存空间)的读写性能/能耗的不对称性以及写寿命有限性,一味的提高缓存命中率来保证内存页的高效访问,而不考虑异构存储介质的存储特性,不能够获得最优的处理器性能。

为了解决上述技术问题,本发明实施例提供了一种内存页管理方法及计算设备,可以充分考虑内存空间的特性来管理内存页,有效利用异构存储器的同时保证内存页的高效访问,获得最优的计算设备性能。以下分别进行详细说明。

为了更好理解本发明实施例提供的一种内存页管理方法,下面先描述本发明实施例的架构。

请参阅图1,是本发明实施例提供的一种用于末级缓存管理的整体架构图。可以看出,如图1所示的整体架构中包括处理器101,末级缓存llc102,第一内存空间103以及第二内存空间104。

需要说明的是,该整体架构可以设置在任意一个计算设备中,该计算设备可以是笔记本电脑、平板电脑、台式电脑、服务器、终端设备(例如智能手机、可穿戴设备等)等等,本发明对此不作任何限制。

为了更好的说明,图1中,第一内存空间103和第二内存空间104为异构的两个存储器各自对应的存储空间,其中,两个存储器异构是指两个存储器的存储介质不同。例如两个异构存储器为dram和nvm,第一内存空间103可以是dram的内存空间,第二内存空间104可以是nvm的内存空间;应知,在其它实施例中,提供该第一内存空间的存储器或者提供该第二内存空间的存储器还可以是静态随机存储器(staticrandomaccessmemory,sram),可变电阻式内存(resistiverandom-accessmemory,reram)、自旋转移力矩磁性存储器(spin-transfertorqueram,stt-ram)、相变存储器(phase-changememory,pcm),非易失性内存(apachepass)等,本发明对此不作限制。

具体的,该处理器101可设置在该计算设备中,并可以获取末级缓存llc102中关于各个内存空间的内存区域的缓存冲突数值,其中,每个内存空间都具有至少一个内存区域,每一个内存区域都可以包括至少一个内存页。换句话说,该第一内存空间具有至少一个内存区域,该第一内存空间中的每个内存区域包括至少一个内存页;该第二内存空间具有至少一个内存区域,该第二内存空间中的每个内存区域包括至少一个内存页。

其中,内存区域的缓存冲突数值可以由该内存区域中的内存页各自对应的缓存冲突数值来确定。可选地,内存区域的缓存冲突数值为该内存区域中的每个内存页的缓存冲突数值之和。例如,内存区域a包括了三个内存页,分别为内存页1、内存页2以及内存页3,该内存页1对应的缓存冲突数值为40,该内存页2对应的缓存冲突数值为50,该内存页3对应的缓存冲突数值为60,那么,该内存区域a的缓存冲突数值就可以为40+50+60=150。

具体的,在该第二内存空间中的目标内存页满足第一预设条件时,确定该目标内存页当前所属的内存区域,然后,处理器101可以再判断该目标内存页的类型,如果该目标内存页属于脏页,就可以将该目标内存页从该目标内存页当前所属的内存区域更改存储至该第一内存空间中缓存冲突数值最小的内存区域。

可知,在目标内存页的缓存冲突数值其写次数较高时,对目标内存页的访问效率就会大大降低,将该目标内存页从当前所属的内存区域更改至目标内存区域,可以保证对目标内存页的高效访问,同时,利用第一预设条件来掌握更改内存区域的时机,避免了第二内存空间对应的存储器可能负荷过重导致的使用寿命减少的问题,提高了第二内存空间对应的存储器的使用寿命。

为了更详细的说明,请参阅图2,为本发明实施例提供的另一种用于内存页管理的整体架构图。可以看出,如图2所示的整体架构,包括处理器201,多个l1缓存202,末级缓存llc203,第一内存空间204、第二内存空间205、缓存访问监控模块206、内存区域管理模块207。

其中,该处理器201为多核处理器,本发明实施例中以包括内核1,内核2以及内核3为例进行说明,但在其它实施例中,该处理器的内核数量可以为任意数量,本发明对此不作限制。

其中,内核1对应着该内核1私有的l1缓存,内核2对应着该内核2私有的l1缓存,内核3对应着该内核3私有的l1缓存。该内核1、内核2以及内核3可以共享该末级缓存llc203。

需要说明的是,该l1缓存的下级缓存还可以依次包括l2缓存、l3缓存甚至l4缓存等等,虽然在图2中没有示意出l2缓存、l3缓存甚至l4缓存,但如果具有四级缓存,则l4缓存为末级缓存llc,本发明对缓存级数不作任何限制。

其中,该缓存访问监控模块206,可以实现任何对该末级缓存llc的程序访问行为记录。具体的,该缓存访问监控模块206可以记录该第一内存空间204对应的每个内存区域的缓存冲突数值,该第二内存空间205对应的每个内存区域的缓存冲突数值,该第一内存空间204的内存区域所对应的内存页缓存冲突数值,以及该第二内存空间207的内存区域所对应的内存页缓存冲突数值、该第二内存空间205的内存页的写数值等数值。

其中,该内存区域管理模块207,可以调用页面重着色算法来实现对内存页当前所属的内存区域的更改,以及可以确定内存页的缓存冲突阈值和第二内存空间207的内存页的写阈值。

在一个可行的实施方式中,末级缓存llc203可以记录各个内存空间中的内存页的缓存冲突数值。当该处理器201访问的数据或指令不存在于该末级缓存llc203中时,该末级缓存llc203可以产生一缓存冲突信号,并将该缓存冲突信号发送至该缓存访问监控模块206。

在一个可行的实施方式中,该缓存访问监控模块206在接收到该缓存冲突信号后,可以对该缓存冲突信号所对应的内存页的缓存冲突数值进行加一操作,当某个内存页(此处假设为第二内存空间207中的内存页1)的缓存冲突数值达到缓存冲突阈值时,该缓存访问监控模块206可以产生一缓存中断信号,并发送给处理器201。

需要说明的是,尽管未示出,但在一些可行的实施方式中,该缓存访问监控模块206可以设置在该末级缓存llc203中。

在一个可行的实施方式中,该处理器201在接收到该缓存中断信号后,可以调用该内存区域管理模块207对该内存页1进行调整,具体的,可以是调整到缓存冲突数值最小的内存区域。

在一个可行的实施方式中,该处理器201可以根据该内存页1的对应的页面状态对该内存区域的位置进行选择,如果该页面状态为脏页(表示被修改过的页),则将该内存页放入第一内存空间204的缓存冲突数值最小的内存区域中。

其中,如果该页面状态不为脏页,例如干净页(表示未被修改过的页),则将该内存页放入第二内存空间207的缓存冲突数值最小的内存区域中。

在一个可行的实施方式中,该末级缓存llc203还可以记录第二内存空间207中的各个内存页的写次数。当该处理器201访问的数据或指令时,如果缓存已满,就会将相应的缓存块替换出去,为需要访问的数据或指令提供缓存空间。若果被替换的缓存块为脏,即缓存块空间中的数据被修改过,该缓存块空间中的数据就会被写入内存,实现数据的一致性,该过程记为一次内存写回操作。当产生一次该内存写回操作时,该末级缓存llc203就可以产生一写回信号,并将该写回信号发送至该缓存访问监控模块206。

在一个可行的实施方式中,该缓存访问监控模块206在接收到该写回信号后,可以对该写回信号所对应的内存页的写次数进行加一操作,当某个第二内存空间207的内存页(即目标内存页,此处可以假设为内存页2)的写次数达到写阈值时,该缓存访问监控模块206可以产生一写回中断信号,并发送给处理器201。

在一个可行的实施方式中,该处理器201在接收到该写回中断信号后,可以调用该内存区域管理模块207对该内存页2当前所属的内存区域进行更改,具体的,该内存页2可以为脏页,处理器201可以是将该内存页2的内存区域调整为第一内存空间204的缓存冲突数值最小的内存区域。

需要说明的是,该写阈值以及该缓存冲突阈值,可以根据该缓存访问监控模块206记录的对该末级缓存llc的程序访问行为,得到的一系列参数所确定,以根据这些参数自适应的调整该写阈值以及该缓存冲突阈值,提高系统性能。

下面为本发明实施例所提供的方法实施例。需要说明的是,本发明实施例所提供的方法实施例可以由任意一个计算设备执行,例如笔记本电脑、平板电脑、台式电脑、服务器、终端设备(例如智能手机、可穿戴设备等)等等,具体的,该计算设备可以通过处理器控制其它结构设备执行,本发明实施例对此不作任何限制。

请参阅图3,图3为本发明实施例提供的一种内存页管理方法的流程示意图。如图3所示的方法,可以包括:

301、在所述第二内存空间中的目标内存页满足第一预设条件时,确定所述目标内存页当前所属的内存区域。

需要说明的是,本发明实施例所提供的方法的执行主体可以为各类计算设备,具体的,可以由计算设备中的处理器配合其他结构(例如存储器等)来执行。

其中,异构的两个存储器对应提供第一内存空间和第二内存空间,该第一内存空间具有至少一个内存区域,该第一内存空间中的每个内存区域包括至少一个内存页;该第二内存空间具有至少一个内存区域,该第二内存空间中的每个内存区域包括至少一个内存页。

需要说明的是,该第一内存空间例如为dram的内存空间,该第二内存空间例如为nvm的内存空间等,本发明实施例对此不作任何限制。

在一些可行的实施方式中,末级缓存可以记录各个内存空间中(其中包括第二内存空间)的内存页的缓存冲突数值,举例来说,如果对第二内存空间的内存页的访问产生冲突时,该末级缓存就可以将该第二内存空间的内存区域的缓存冲突数值进行加一操作。

其中,该末级缓存还可以实时记录并更新各个内存空间的内存区域的缓存冲突数值。

在一些可行的实施方式中,该末级缓存可以为每一个内存区域添加一个计数器,用于记录该内存区域的缓存冲突数值。例如,当数据或指令映射在一个内存区域,但在末级缓存没有访问成功,也即产生缓存冲突时,该末级缓存可以产生一缓存冲突信号。如果该缓存冲突信号与该数据或指令映射的内存区域中的匹配信号进行匹配、且匹配成功,那么该映射的内存区域中的计数器可以对该映射的内存区域进行相应的加一操作。

还需要说明的是,该第一内存空间和第二内存空间可以包括相应存储介质的空闲内存空间,且可以将具有相同内存色的页框(一个页框可以对应表示一个内存页)连接成一个链表。

举例来说,如图4所示,内存空间包括第一内存空间以及第二内存空间。该第一内存空间中,可以包括多个颜色0的页框,多个颜色1的页框,一直到多个颜色n(n可以为任意整数)的页框。各个颜色相同的页框可以连接成一个链表,组成该颜色的内存区域。例如,颜色0的页框可以连接成一个链表,组成颜色0的内存区域,颜色1的页框可以连接成一个链表,组成颜色1的内存区域。类似的,该第二内存空间也可以以链表的形式组成内存区域的方式,在此不作赘述。

在一些可行的实施方式中,第一内存空间的大小和第二内存空间的大小可以由计算设备的处理器进行分配。其中,该处理器可以根据各个内存空间与内存管理系统的交互次数来分配大小。举例来说,该处理器可以根据第一内存空间与第二内存空间各自与内存管理系统的交互次数,来将该第一内存空间与该第二内存空间的大小比值设置为1:3。当然,上述方式只是举例,而非穷举,对内存空间的大小的分配包含但不限于上述可选方式。

在一些可行的实施方式中,内存页的缓存冲突数值可以通过页表缓冲机制(translationlooksidebuffer,tlb)来记录。例如,在tlb的每个记录项中添加一个计数器,用于记录每一个内存页的缓存冲突信息。当处理器访问的数据或指令在末级缓存中不命中时,末级缓存就可以产生一个缓存冲突信号,并发送到tlb中,tlb就可以通过计数器对相应的内存页记录项进行加一操作。当某个内存页的缓存冲突数值达到缓存冲突阈值时,就可以产生一缓存中断信号,并发送给计算设备的处理器。

其中,该第一预设条件为该目标内存页的缓存冲突数值达到缓存冲突阈值,或者该目标内存页的写次数达到写阈值。

还需要说明的是,该第二内存空间的目标内存页可以是指该第二内存空间的任意一个其缓存冲突数值达到缓存冲突阈值,或者其写次数达到写阈值的内存页。

可选的,该缓存冲突阈值,可以由以下公式确定:

其中,thrmiss表示该缓存冲突阈值,lr表示该第二内存空间的读内存延迟,β表示更改该目标内存页的内存区域后该目标内存页的缓存冲突数值下降的比例,tcost表示该目标内存页的第二开销值,该第二开销值为更改该目标内存页的内存区域导致的开销值。

需要说明的是,上述lr、β、tcost等参数可以是由于程序访问行为所产生的参数。

其中,该第二开销值,具体可以表示在对该内存页进行内存区域的调整之前,预先估计的可能产生的处理器的性能开销。

其中,该第二内存空间的读内存延迟,可以表示读第二内存空间时所产生的延期。

其中,该更改该目标内存页的内存区域后该目标内存页的缓存冲突数值下降的比例,可以表示对内存页对应的内存区域进行调整之前,所预先估计的调整后能够达到的该目标内存页的缓存冲突数值下降的值与当前的缓存冲突数值的百分比。

在一个可行的实施方式中,当计算设备的处理器接收到该缓存中断信号之后,可以确定该缓存中断信号对应的目标内存页当前所属的内存区域。例如,如果该缓存中断信号对应的是该第二内存空间上的颜色1的目标内存页,那么该处理器就可以确定该缓存中断信号对应的内存区域为第二内存空间的颜色1的内存区域。如果该缓存中断信号对应的是该第二内存空间上的颜色2的目标内存页,那么该处理器就可以确定该缓存中断信号对应的内存区域为第二内存空间的颜色2的目标内存区域。

可选的,该写阈值,可以是根据以下公式确定的:

其中,thrw-nvm表示该写阈值,lw-nvm表示该第二内存空间的写内存延迟,lw-dram表示该第一内存空间的写内存延迟,α表示可以牺牲部分该第二内存空间对应的存储器的使用寿命来提高性能的数值,β表示更改该目标内存页的内存区域后该目标内存页的缓存冲突数值下降的比例,tcost表示该目标内存页的第二开销值。

需要说明的是,上述lw-nvm、β、lw-dram、tcost等参数可以是由于程序访问行为所产生的参数。

其中,第一内存空间的写内存延迟,可以表示向该第一内存空间写入数据时所产生的延期。类似的,该第二内存空间的写内存延迟,可以表示向该第二内存空间写入数据时所产生的延期。

在一些可行的实施方式中,该将该目标内存页从该目标内存页当前所属的内存区域更改存储至目标内存区域之前,该方法还可以包括:获取该目标内存页的第一开销值,该第一开销值为该目标内存页由于缓存冲突导致的开销值;获取该目标内存页的第二开销值,该第二开销值为更改该目标内存页的内存区域导致的开销值;确定该第一开销值大于该第二开销值。

需要说明的是,该处理器可以利用内存页重着色算法更改目标内存页的当前所属内存区域,然而,更改目标内存页的当前所述内存区域会产生性能开销,即产生第二开销值,不更改目标内存页的当前所述内存区域,则会产生该目标内存页由于缓存冲突导致的开销,即第一开销值。因此,当确定了该第一开销值要大于第二开销值时,更改目标内存页的当前所属内存区域与减小缓存冲突可以达到一个平衡,可以提升整个计算设备的性能。

还需要说明的是,当确定该第一开销值小于第二开销值,说明更改目标内存页的当前所属内存区域可能会增加系统能耗,可能不利于提升整个计算设备的性能。

302、若所述目标内存页属于脏页,则将所述目标内存页从所述目标内存页当前所属的内存区域更改存储至目标内存区域。

需要说明的是,处理器在确定该目标内存页当前所属的内存区域时,还可以确定该内存页对应的页面状态。

其中,该页面状态可以包括脏页以及不属于脏页。脏页,可以表示该目标内存页曾经被修改过,那么根据程序的访问局部性原理,可以认为该目标内存页在今后一段时间内也会被再次修改。不属于脏页,例如可以是干净页,可以表示该目标内存页未被修改过,那么可以认为该目标内存页在今后一段时间内也不会被修改。

需要说明的是,202步骤以及203步骤为并列的步骤。如果该目标内存页为脏页,处理器则可以执行该302步骤;如果该目标内存页不属于脏页,该处理器则可以执行该303步骤。

其中,该目标内存区域为该第一内存空间中缓存冲突数值最小的内存区域。

在一些可行的实施方式中,该目标内存页的页面状态为脏页时,将该目标内存页放入第一内存空间中的方式可以是:通过内存页重着色算法将该目标内存页当前所属的内存区域更改至第一内存空间中缓存冲突数值最小的内存区域。

举例来说,如图4所示,如果目标内存页当前所属区域为第二内存空间的颜色1的内存区域,且第一内存空间中缓存冲突数值最小的内存区域为第一内存空间中的颜色2的内存区域,那么,该处理器就可以将目标内存页从第二内存空间的颜色1的内存区域,更改至第一内存空间中的颜色2的内存区域。

303、若目标内存页不属于脏页,则将目标内存页从当前所属的内存区域更改存储至所述第二内存空间中的缓存冲突数值最小的内存区域。

需要说明的是,该目标内存页的页面状态不属于脏页,例如为干净页时,将该内存页放入第二内存空间中的方式可以是:通过内存页重着色算法将该目标内存页当前所属的内存区域更改至第二内存空间中缓存冲突数值最小的内存区域。

在一些可行的实施方式中,处理器还可以在该第一内存空间中的第三内存页满足第二预设条件时,确定该第三内存页当前所属的内存区域,其中,该第二预设条件为该目标内存页的缓存冲突数值达到缓存冲突阈值;若该第三内存页属于脏页,则将该第三内存页从该第三内存页当前所属的内存区域更改存储至该第一内存空间中缓存冲突数值最小的内存区域;或者,若该第三内存页不属于脏页,则将该第三内存页从该第三内存页当前所属的内存区域更改存储至该第二内存空间中缓存冲突数值最小的内存区域。

需要说明的是,该第三内存页可以是第一内存空间中任意一个其缓存冲突数值达到缓存冲突阈值的内存页。

具体实现中,该第一内存空间中的第三内存页的缓存冲突数值在达到缓存冲突阈值时,处理器可以根据第三内存页的页面状态来确定更改第三内存页的内存区域的具体位置。

其中,如果该第三内存页为脏页,那么就可以将该第三内存页从该第三内存页当前所属的内存区域更改存储至该第一内存空间中缓存冲突数值最小的内存区域。

举例来说,如果末级缓存所记录的该第一内存空间的缓存冲突数值最小的内存区域为颜色2的内存区域,该第三内存页所对应的内存区域为第一内存空间中的颜色1的内存区域,那么,该处理器可以将该目标内存页的内存区域从第一内存空间中的颜色1的内存区域调整为第一内存空间中的颜色2的内存区域。

其中,如果该第三内存页不属于脏页,例如为干净页,那么就可以将该第三内存页从该第三内存页当前所属的内存区域更改存储至该第二内存空间中缓存冲突数值最小的内存区域。

为了更好的说明,下面以表1为例来对内存页的内存区域更改进行阐述,表1为本发明实施例所提供的一种内存区域调整的示意图。在表1中,该第一内存空间可以为dram的内存空间,该第二内存空间可以为nvm的内存空间,但在其它实施例中对此不作限制。

其中,在表1中,当该当前的内存页位置为dram的内存空间时,如果该内存页的页面状态为脏页,那么对该内存页的内存区域调整后的内存区域的颜色,可以为缓存冲突数值最小颜色,且调整后的内存页的位置仍然可以是该dram的内存空间。

当该当前的内存页位置为dram的内存空间时,如果该内存页的页面状态为干净页,那么对该内存页的内存区域调整后的内存区域的颜色,可以为缓存冲突数值最小颜色,且调整后的内存页的位置可以为该nvm的内存空间。

当该当前的内存页位置为nvm的内存空间时,如果该内存页的页面状态为脏页,那么对该内存页的内存区域调整后的内存区域的颜色,可以为缓存冲突数值最小颜色,且调整后的内存页的位置可以为该dram的内存空间。

当该当前的内存页位置为nvm的内存空间时,如果该内存页的页面状态为干净页,那么对该内存页的内存区域调整后的内存区域的颜色,可以为缓存冲突数值最小颜色,且调整后的内存页的位置仍然可以是该nvm的内存空间。

表1:内存区域调整示意图

可以看出,在本发明实施例中,处理器可以在第二内存空间中的目标内存页的缓存冲突数值达到缓存冲突阈值,或者该目标内存页的写次数达到写阈值时,根据第二内存空间中的目标内存页为脏页,将目标内存页当前所属的内存区域,调整为第一内存空间中缓存冲突数值最小的内存区域,充分考虑了第二内存空间对应的存储器可能负荷过重导致使用寿命减少的问题,可以在充分利用各个内存空间的同时,也提高第二内存空间对应的存储器的使用寿命。

请参阅图5,为本发明实施例提供的另一种内存页管理方法的流程示意图。如图7所示的内存管理方法可包括:

501、接收写请求。

需要说明的是,该写请求可以为内存访问请求,该内存访问请求可以是在任意一个进程或者系统需要申请内存来加载相应的数据时,所发出的请求。

具体的,该写请求可以用于请求在内存页中写入数据。其中,该数据可以是进程中需要加载的数据等。

502、从第一内存空间中缓存冲突数值最小的内存区域中分配第一内存页。

具体实现中,该处理器可以在接收到该写请求后,可以根据该末级缓存中记录的第一内存空间的内存区域的缓存冲突数值,从第一内存空间中选择出缓存冲突数值最小的内存区域,例如为图4所示的第一内存空间中的颜色1的内存区域。

可以看出,在本发明实施例中,处理器首先接收写请求,然后从第一内存空间缓存冲突数值最小的内存区域中分配第二内存页,实现了选择适合写请求的内存空间为第一内存空间,避免了放入第二内存空间导致第二内存空间对应的存储器的写寿命下降的问题,从而平衡各个内存空间的读写性能能耗,提高整个计算设备的性能。

请参阅图6,为本发明实施例提供的又一种内存页管理方法的流程示意图。如图6所示的内存管理方法可包括:

601、接收读请求。

需要说明的是,该读请求可以为内存访问请求。

具体的,该读请求可以用于请求读取在内存页中的数据。其中,该数据可以是从底层存储介质(例如硬盘或磁盘)首先读取到内存的数据。

其中,该内存访问请求还可以包括读请求。

602、从第二内存空间中缓存冲突数值最小的内存区域中分配第二内存页。

其中,该第二内存页用于存储该读请求指定的数据。

需要说明的是,该数据可以是从底层存储介质(例如磁盘或者硬盘)读取的数据。

举例来说,该第一内存空间可以为dram的内存空间,该第二内存空间可以为nvm的内存空间。如果该申请请求的类型为写请求,由于该nvm的内存空间的写寿命有限,因此可以分配该dram的内存空间的缓存冲突数值最小的内存区域。如果该申请请求的类型为读请求,为了达到合理分配内存空间的目的,可以分配该nvm的内存空间的缓存冲突数值最小的内存区域。

在一个可行的实施方式中,若该第一内存空间或第二内存空间中的缓存冲突数值最小的内存区域中,不存在空闲的区域,则可以从内存管理系统中申请内存空间;将申请的内存空间加入该目标内存空间的缓存冲突数值最小的内存区域;从该目标内存空间的缓存冲突数值最小的内存区域中分配该申请的内存空间,以执行该读请求或写请求。

需要说明的是,该空闲的区域可以是未被占用的区域。如果该第一内存空间或第二内存空间中的缓存冲突数值最小的内存区域中,不存在空闲的区域,则说明当前该缓存冲突数值最小的内存区域均被占用。

还需要说明的是,该内存管理系统可以是linux、windows等操作系统的内存管理模块,本发明实施例对此不作限制。

举例来说,如图7所示,为本发明实施例提供的一种内存页管理方法的情景示意图。在图7所示的701中,如果接收到内存访问请求,则在702中获取末级缓存记录的缓存冲突数值最小的内存区域。如果在703中,该内存访问请求的类型为读请求,则执行704中的步骤:从第一内存空间中申请内存,并分配该第一内存空间中的该缓存冲突数值最小的内存区域。如果在703中,该内存访问请求的类型为写请求,则执行705中的步骤:从第二内存空间中申请内存,并分配该第二内存空间中的该缓存冲突数值最小的内存区域。

在706中,该处理器在执行了701至705之后,可以判断是否申请内存申请成功,如果申请成功,则结束本次流程。如果没有申请成功,则执行705中的步骤:从内存管理系统申请内存放入内存空间,并可以再次判断该内存申请的类型,以决定将该申请的内存放入哪一个内存空间的缓存冲突数值最小的内存区域中。最后,可以通过分配该申请的内存空间,再次执行该内存访问请求。

在一些可行的实施方式中,该处理器还可以接收内存释放请求,并判断该释放内存请求对应的内存空间的内存区域是否存在空闲的区域。如果存在,则可以放入该空闲的区域,如果不存在,则可以放入该内存管理系统中。

举例来说,如图7所示,在701中,如果接收到内存释放请求,则在708中确定内存释放请求对应的内存空间。在709中,该处理器可以确定对应的内存空间中是否有空闲的区域。如果有空闲的区域,则执行710步骤:将该释放的内存放入对应的内存空间的空闲的区域中,以执行该内存释放请求。如果没有空闲的区域,则执行711步骤:将该释放的内存放入内存管理系统中,以执行该内存释放请求。

可以看出,在本发明实施例中,处理器首先接收读请求,然后从第二内存空间缓存冲突数值最小的内存区域中分配第二内存页,实现了选择适合读请求的内存空间为第二内存空间,充分利用了第二空间对应的存储器的读性能,从而平衡各个内存空间对应的存储器的读写性能能耗,提高整个计算设备的性能。

上述详细阐述了本发明实施例的方法,下面为了便于更好地实施本发明实施例的上述方案,相应地,下面描述对应的装置实施例,具体如图8所示,为本发明实施例提供的一种计算设备的结构示意图,其中,异构的两个存储器对应提供第一内存空间和第二内存空间,所述第一内存空间具有至少一个内存区域,所述第一内存空间中的每个内存区域包括至少一个内存页;所述第二内存空间具有至少一个内存区域,所述第二内存空间中的每个内存区域包括至少一个内存页,包括:

第一确定模块801,用于在所述第二内存空间中的目标内存页满足第一预设条件时,确定所述目标内存页当前所属的内存区域。

其中,所述第一预设条件为所述目标内存页的缓存冲突数值达到缓存冲突阈值,或者所述目标内存页的写次数达到写阈值。

更改模块802,用于若所述目标内存页属于脏页,则将所述目标内存页从所述目标内存页当前所属的内存区域更改存储至目标内存区域。

其中,所述目标内存区域为所述第一内存空间中缓存冲突数值最小的内存区域。

在一个实施例中,该计算设备还包括:获取模块803,用于获取所述目标内存页的第一开销值,以及获取所述目标内存页的第二开销值。

其中,所述第一开销值为所述目标内存页由于缓存冲突导致的开销值。

其中,所述第二开销值为更改所述目标内存页的内存区域导致的开销值。

第二确定模块804,用于确定所述第一开销值大于所述第二开销值。

在一个实施例中,所述更改模块802,还用于若所述目标内存页不属于脏页,则将所述目标内存页从所述当前所属的内存区域更改存储至所述第二内存空间中的缓存冲突数值最小的内存区域。

在一个实施例中,所述缓存冲突阈值是根据以下公式确定的:

其中,thrmiss表示所述缓存冲突阈值,lr表示所述第二内存空间的读内存延迟,β表示更改所述目标内存页的内存区域后所述目标内存页的缓存冲突数值下降的比例,tcost表示所述目标内存页的第二开销值。

在一个实施例中,所述写阈值是根据以下公式确定的:

其中,thrw-nvm表示所述写阈值,lw-nvm表示所述第二内存空间的写内存延迟,lw-dram表示所述第一内存空间的写内存延迟,α表示可以牺牲部分所述第二内存空间对应的存储器的使用寿命来提高性能的数值,β表示更改所述目标内存页的内存区域后所述目标内存页的缓存冲突数值下降的比例,tcost表示所述目标内存页的第二开销值。

在一个实施例中,所述计算设备还可以包括:接收模块806,用于接收写请求。

分配模块807,用于从所述第一内存空间中缓存冲突数值最小的内存区域中分配第一内存页。

其中,所述第一内存页用于存储所述写请求指定的待写入的数据。

在一个实施例中,所述接收模块806,还用于接收读请求。

所述分配模块807,还用于从所述第二内存空间中缓存冲突数值最小的内存区域中分配第二内存页。

其中,所述第二内存页用于存储所述读请求指定的数据。

在一个实施例中,所述计算设备还可以包括:第三确定模块805,用于在所述第一内存空间中的第三内存页满足第二预设条件时,确定所述第三内存页当前所属的内存区域。

其中,所述第二预设条件为所述目标内存页的缓存冲突数值达到缓存冲突阈值。

所述更改模块802,还用于若所述第三内存页属于脏页,则将所述第三内存页从所述第三内存页当前所属的内存区域更改存储至所述第一内存空间中缓存冲突数值最小的内存区域;或者,

所述更改模块802,还用于若所述第三内存页不属于脏页,则将所述第三内存页从所述第三内存页当前所属的内存区域更改存储至所述第二内存空间中缓存冲突数值最小的内存区域。

请参阅图9,为本发明实施例提供的另一种计算设备的结构示意图。本实施例中所描述的计算设备,包括:存储器120、其他输入设备130、显示屏140、输入/输出子系统170、处理器180、以及电源190等部件。本领域技术人员可以理解,图9中示出的计算设备结构并不构成对计算设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。本领域技术人员可以理解显示屏140属于用户界面(ui,userinterface),且计算设备可以包括比图示或者更少的用户界面。

下面结合图9对终端的各个构成部件进行具体的介绍:

存储器120可用于存储软件程序以及模块,其中,存储器120可以具有至少两个,且为异构存储器,其中,异构是指存储介质不相同。处理器180通过运行存储在存储器120的软件程序以及模块,从而执行计算设备的各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。

其他输入设备130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键信号输入。具体地,其他输入设备130可包括但不限于物理键盘、鼠标、操作杆、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)等中的一种或多种。其他输入设备130与输入/输出子系统170的其他输入设备控制器171相连接,在其他设备输入控制器171的控制下与处理器180进行信号交互。

显示屏140可包括显示面板141,以及触控面板142。其中显示面板141可以采用lcd(liquidcrystaldisplay,液晶显示器)、oled(organiclight-emittingdiode,有机发光二极管)等形式来配置显示面板141。触控面板142,也称为触摸屏、触敏屏等。可选的,触控面板142可包括触摸检测装置和触摸控制器两个部分。触摸控制器从触摸检测装置上接收触摸信息,并将它转换成处理器能够处理的信息,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板142,也可以采用未来发展的任何技术实现触控面板142。虽然在图9中,触控面板142与显示面板141是作为两个独立的部件来实现终端的输入和输入功能,但是在某些实施例中,可以将触控面板142与显示面板141集成而实现终端的输入和输出功能。

输入/输出子系统170用来控制输入输出的外部设备,可以包括其他设备输入控制器171、传感器控制器172、显示控制器173。可选的,一个或多个其他输入控制设备控制器171从其他输入设备130接收信号和/或者向其他输入设备130发送信号,其他输入设备130可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)。值得说明的是,其他输入控制设备控制器171可以与任一个或者多个上述设备连接。所述输入/输出子系统170中的显示控制器173从显示屏140接收信号和/或者向显示屏140发送信号。

处理器180是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行计算设备的各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器180可包括一个或多个处理单元;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。

终端还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。

具体的,上述处理器180可以调用上述存储器120存储的程序指令,实现如本发明实施例所示的方法。

具体的,异构的两个存储器对应提供第一内存空间和第二内存空间,所述第一内存空间具有至少一个内存区域,所述第一内存空间中的每个内存区域包括至少一个内存页;所述第二内存空间具有至少一个内存区域,所述第二内存空间中的每个内存区域包括至少一个内存页,上述处理器180调用存储在上述存储器170存储的程序指令执行以下步骤:

在所述第二内存空间中的目标内存页满足第一预设条件时,确定所述目标内存页当前所属的内存区域,其中,所述第一预设条件为所述目标内存页的缓存冲突数值达到缓存冲突阈值,或者所述目标内存页的写次数达到写阈值;

若所述目标内存页属于脏页,则将所述目标内存页从所述目标内存页当前所属的内存区域更改存储至目标内存区域,所述目标内存区域为所述第一内存空间中缓存冲突数值最小的内存区域。

本发明实施例中处理器执行的方法均从处理器的角度来描述,可以理解的是,本发明实施例中处理器要执行上述方法需要其他硬件结构的配合。例如,上述终端与其他设备或服务器的交互,确定目标内存页当前所属的内存区域,更改当前所属的内存区域至目标内存区域,均可以由上述处理器803控制上述存储器807中的存储程序进行实现。本发明实施例对具体的实现过程不作详细描述和限制。

可选的,该终端可通过上述处理器2000以及其他设备实现上述方法实施例中的内存页管理方法中计算设备执行的相应步骤。应理解,本发明实施例是对应方法实施例的实体装置实施例,对方法实施例的描述,也适用于本发明实施例。

在本发明的另一实施例中提供一种计算设备可读存储介质,该计算设备可读存储介质存储有程序,该程序被处理器执行时,可以实现:在所述第二内存空间中的目标内存页满足第一预设条件时,确定所述目标内存页当前所属的内存区域,其中,所述第一预设条件为所述目标内存页的缓存冲突数值达到缓存冲突阈值,或者所述目标内存页的写次数达到写阈值;若所述目标内存页属于脏页,则将所述目标内存页从所述目标内存页当前所属的内存区域更改存储至目标内存区域,所述目标内存区域为所述第一内存空间中缓存冲突数值最小的内存区域。

需要说明的是,该计算设备可读存储介质被处理器执行的具体过程可参见上述方法实施例中所描述的方法,在此不再赘述。

在本发明的又一实施例还提供了一种包含指令的计算设备程序产品,当其在计算设备上运行时,使得计算设备执行上述方法实施例所述的方法。

所述计算设备可读存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算设备可读存储介质也可以是所述计算设备的外部存储设备,例如所述计算设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述计算设备可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算设备可读存储介质用于存储所述程序以及所述终端所需的其他程序和数据。所述计算设备可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

基于同一发明构思,本发明实施例中提供的计算设备解决问题的原理与本发明方法实施例相似,因此该计算设备的实施可以参见方法的实施,为简洁描述,在这里不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过程序来指令相关的硬件来完成,上述的程序可存储于一计算设备可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

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