一种基于异构混合内存系统的页面分配方法与流程

专利2022-06-29  79


本发明属于计算机存储领域,特别是基于nvm的混合内存架构能耗优化方面,提出一种混合内存页面分配的能耗优化方法。



背景技术:

随着大数据、云计算,人工智能和机器学习等技术的快速发展,高并发海量数据的处理对现有内存系统提出了更高的要求,由于动态随机存储器(dynamicaccessrandommemory,dram)的制造工艺,导致dram的容量越来越不能满足现代海量数据的访问,而且dram动态和刷新功耗突出,导致访问内存的功耗占了整个内存的功耗的大部分,高并发海量的数据访问内存带来的能耗问题越来越明显,提高内存容量且降低内存能耗成为解决问题的关键。

新型非易失性存储器(none-volatilememory,nvm);具有的非易失性,可字节寻址,静态功耗低,存储密度大,且访问nvm的时延和访问dram的时延接近,容量大,可以作为以dram易失性存储器构成的内存系统的补充,近年来,有大量研究关于dram和nvm构成的混合的内存系统并取得了研究成果,随着当前内存系统对大容量,易扩展性和低功耗的高性能的内存系统的需求不断攀升,目前存在的静态功耗高、dram的容量小、扩展性不高等问题,新型非易失性存储器出现为解决这些限制提供可能,虽然新型非易失存储器具有的低静态功耗、非易失性、扩展性高等特点,但是存储单元的写次数有限且耐受性差,访问时延大,访问性能也逊色dram,所以,nvm还无法完完全全取代dram作为主存,通常采用统一编址,利用各自具有的优势,形成混合内存是目前比较常用的架构。

一般的内存页面分配算法主要采用页面置换策略(leastrecentlyusedreplacement,简称lru),例如中国专利cn109189592a中提出的基于混合式内存结构的共享缓存替换算法及装置中采用了该策略,但由于lru策略只考虑了内存页面访问的频繁程度(冷热程度)而没有考虑内存页面被访问的读写特性,因此将导致混合内存的能耗开销较高。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于nvm/dram混合内存的页面分配能耗优化方法,不仅对dram中内存页进行更细致的分类,也考虑了nvm页面特点,对于nvm已经释放的空闲页面,进行再次分配使用,从而优化了nvm页面的写入,减少了混合内存能耗开销,从而延长存储寿命。

未达到上述目的,本发明提供了如下技术方案:

一种基于异构混合内存系统的页面分配方法,包括以下步骤:

s1、根据异构混合内存系统页面的访问模式和存储特性,在页面分配过程中对页面进行分类存储;

s2、优先将所有页面都存放于dram中,当dram存储空间不足时,优先将具有读特性的页面置换至nvm中存储;

s3、采用蓄水池抽样算法对置换的页面即请求页面进行页面抽样,提取出样品,记录并确定样品位置;

s4、选择nvm空闲页面链表中的部分空闲页面,根据请求页面记录的样品位置提取出nvm空闲页面的样品,并更新到nvm样品集;

s5、计算请求页面样品和nvm样品集中样品的相似度,选择样品集中相似度最高的样品所代表的nvm的空闲页面,并将其分配给请求页面。

进一步的,所述进行分类存储包括根据混合内存页面的活跃标识和读写标识,将页面划分为最近被的页面、最近少量被写的页面以及最近频繁被写的页面三个分类类别;并在异构混合内存系统中采用二级页面链表进行维护。

进一步的,所述二级页面链表包括第一级页面链表和第二级页面链表,所述第一级页面链表为采用lru页面置换策略管理的链表,所述第二级页面链表包括与页面分类类别对应的最近读链表、最近少量写链表以及最近频繁写链表。

进一步的,所述在异构混合内存系统中采用二级页面链表进行维护具体包括第一级页面链表采用lru页面置换策略管理dram中的所有内存页面,若第一级链表空间不足,则将淘汰的页面保存到第二级页面链表中;第二级页面链表根据页面标识,分别将淘汰的页面存储在管理最近读链表、最近少量写链表以及最近频繁写链表中;其中,如果最近读链表的页面发生了写操作,则将其迁移到最近少量写链表中,如果最近少量写链表的页面发生了写操作,则将其迁移到最近频繁写入链表中,如果最近少量写链表上的页面发生读取操作,则将其迁移到最近读链表中,而如果最近频繁写链表上的页面发生了两次读取操作,则将其迁移到最近读链表中。

进一步的,所述步骤s2还包括若当dram存储空间不足时,优先将管理读特性链表的页面拷贝到nvm中,若拷贝后dram存储空间仍然不足,则将管理最近少量写链表的页面拷贝到nvm。

进一步的,所述采用蓄水池抽样算法对请求页面进行抽样包括构造一个容纳大小为k字节的样品窗口,将前k个位置的页面数据位直接放入样品窗口中;从第k 1的位置开始,以k/n的概率来决定该k 1位置的页面数据位是否进入样品窗口,如果被选中进入样品窗口,则记录提取样品的位置;循环遍历完所有页面位置,将样品窗口中的数据作为抽样出的样品,将提取出的样品位置作为提取nvm空闲页面样品的固定位置;其中,n为页面规模。

进一步的,所述计算请求页面样品和nvm样品集中样品的相似度包括采用基于杰卡德改进的页面相似度算法,为请求页面的样品计算其对于nvm样品集中空闲页面样品的相似度。

进一步的,所述基于杰卡德改进的页面相似度算法具体包括将请求页面记录的样品和nvm空闲页面样品进行异或得到page,计算得到样品位为0的数量m;计算出page的总位数bn,将m与bn的比值作为请求页面和nvm样品集中样品的相似度。

本发明的有益效果:

1)本发明对dram内存页进行了更细致的分类,考虑了nvm的读写特性,从nvm空闲页面的分配出发提出优化,采用这种方法的混合内存具有能耗低,nvm使用寿命长等特点;

2)本发明采用dram内存页面的改进lru替换算法,能够根据内存页面的冷热程度和页面被访问的读写特性,对页面分类存储,当dram空间不足时优先将具有读倾向性的页写入nvm;

3)本发明中置换到nvm中的请求页面考虑了nvm页面结构,重复利用已经释放的空闲页面,再找到最相似的页面再次分配,为了减少页面的比较开销,采用抽样方法,避免了整个页面的比较,进一步减少了能耗。

附图说明

图1为本发明采用的异构混合内存系统的结构图;

图2为本发明一种基于异构混合内存系统的页面分配方法的流程图;

图3为本发明中分类存储的二级页面链表结构图;

图4为本发明请求页面选择最佳的nvm空闲页面抽样示例图;

图5为本发明中基于杰卡德改进的页面相似度算法结构图;

图6为本发明中一种基于异构混合内存系统的页面分配管理方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

如图1所示,本发明中的异构混合内存系统基于dram和nvm统一编址,挂载在同一内存总线上,共享内存地址空间,形成混合异构混合内存的混合内存系统。

如图2所示,在一个实施例中,一种基于异构混合内存系统的页面分配方法,包括以下步骤:

s1、根据异构混合内存系统页面的访问模式和存储特性,在页面分配过程中对页面进行分类存储;

s2、优先将所有页面都存放于dram中,当dram存储空间不足时,优先将具有读特性的页面置换至nvm中存储;

s3、采用蓄水池抽样算法对置换的页面即请求页面进行页面抽样,提取出样品,记录并确定样品位置;

s4、选择nvm空闲页面链表中的部分空闲页面,根据请求页面记录的样品位置提取出nvm空闲页面的样品,并更新到nvm样品集;

s5、计算请求页面样品和nvm样品集中样品的相似度,选择样品集中相似度最高的样品所代表的nvm的空闲页面,并将其分配给请求页面。

在本发明中,若未明确说明,其中的内存页面为异构混合内存系统中的内存页面,即混合内存系统的内存页面为dram存储器中的内存页面和nvm存储器中的内存页面,而对内存页面的操作有读操作和写操作,由于nvm具有读写不均衡且写次数性有限,但读延迟低等特点,一般情况下将最近读被的页面置换到nvm,同时由于nvm具有比特可变换特点,在更新nvm页面时,并不需要先擦除整个页面,然后再进行页面更新操作,只需要更新与请求页面不一致的比特位,不需要更新与请求页面一样的比特位,在需要为请求页分配nvm页面时,找一个请求页面内容相似nvm空闲页面作为待写页,如果两个页面内容具有较高的相似度,那么请求页面写入到nvm空闲页上时需要更新的比特位将会较少,为了加速选择与请求页相似的空闲页面过程,本发明引入了页面抽样机制,即分别从空闲页面和请求页面中取出部分样品,然后对样品进行比较分析,得到一个最相似的nvm空闲页面作为请求页的待写页面。

可以理解的是,本发明中的页面指的是内存数据页面,一旦需要把内存数据页面置换到nvm,则将页面称为请求数据页面,即请求页面;为了方便后续描述,数据页也即数据页面,请求页也即请求页面。

在一个实施例中,所述根据异构混合内存系统页面的访问模式和存储特性,在页面分配过程中对页面进行分类存储包括:

根据混合内存页面的活跃标识(pg_active)和读写标识(pg_write),将页面划分为三个类别:最近被读的页面、最近少量被写的页面以及最近频繁被写的页面,这三个分类类别将在异构混合内存系统中使用二级页面链表维护。

最近被读的页面、最近少量被写的页面以及最近频繁被写的页面是根据页面标识来决定的。

当读写标识pg_write=1,则表示该内存数据页最近一次发生的访问是写操作;

当读写标识pg_write=0,则表示该内存数据页最近一次发生的访问是读操作。

而活跃标识pg_active=0,则表示该内存数据页近期只被读(或写)过一次;

当活跃标识pg_active=1,则表示该内存数据页近期被读(或写)过至少两次。

在一些可行的实施方式中,在一个周期内,pg_active=1,pg_write=1,表明标识活跃且最近发生过至少两次写操作,记为最近频繁被写的页。

在一些可行的实施方式中,在一个周期内,pg_active=0,pg_write=1,表明标识不活跃且最近发生过一次写操作,记为最近少量被写的页面。

在一些可行的实施方式中,在一个周期内,pg_active=1,pg_write=0,表明标识活跃且最近发生过至少两次读操作,pg_active=0,pg_write=0,表明标识不活跃且最近发生过一次读操作,这两种统一为最近被读的页面。

在一些可行的实施方式中,所述二级页面链表包括第一级页面链表和第二级页面链表,所述第一级页面链表为采用lru页面置换策略管理的链表,所述第二级页面链表包括与页面分类类别对应的最近读链表、最近少量写链表以及最近频繁写链表。

在一些可实现的方式中,如图3所示,所述二级页面链表,维护的过程还可以采取如下过程:

1)第一级页面链表采用lru页面置换策略(lru算法管理保存数据页面)管理dram中的所有内存页面,将最近最频繁访问的内存页面设置在第一级页面链表的前端位置,而将最近最少使用的内存页面存放在第一级页面链表的末端位置,第一级页面链表结构被作为缓存结构,当第一级页面链表空间不足时,将淘汰的页面,保存到第二级页面链表结构中;

具体的,第一级页面链表作为缓存,第二级页面链表保存第一级淘汰的内存页到具有写倾向性的链表lru_dirty和cold_write中、具有读倾向性的链表lru_read中,其中lru_dirty链表管理最近频繁被写的页面,cold_writr管理最近少量被写的页面,对于具有读特性的页面则直接维护到lru_read中,其包含最近频繁被读和最近少量被读的页面;

当dram空间不足时,由于nvm的读写特性,首先选择具有读特性的链表lru_read页面置换到nvm,若依然不足,则置换cold_write中的内存页到nvm,可以允许对nvm中的内存页面进行少量的写入操作来减少迁移。

2)第二级页面链表维护从第一级页面链表淘汰的页面,本实施例中,第二级页面链表根据页面标识,对基于linux系统的lru算法实现双链表进行改进,本发明使用三个链表,即最近读链表、最近少量写链表以及最近频繁写链表中;如果最近读链表的页面发生了写操作,则将其迁移到最近少量写链表中,如果最近少量写链表的页面发生了写操作,则将其迁移到最近频繁写链表中,如果最近少量写入链表上的页面发生读操作,则将其迁移到最近读链表中,而如果最近频繁写链表上的页面发生了两次读操作,则将其迁移到最近读链表中。

具体的,将页面标识pg_active=1且pg_write=1时的最近频繁被写的页面维护在链表lru_dirty中,将页面标识pg_active=0且pg_write=1的最近少量被写的页面维护在链表cold_write中,将页面标识pg_active=0且pg_write=0或者pg_active=1且pg_write=0的最近被读的页面维护在链表lru_read中;

3)如果在一段时间内,维护最近读链表的页面发生了写操作,则迁移到最近少写的链表上,维护最近少写的链表的页发生了写操作,会被迁移到维护最近频繁写的链表上,同理在一段时间内维护最近少量写链表上的页面发生了读操作,会被迁移到最近读链表上,而维护最近频繁写的链表上的内存页面在最近一段时间发生了两次读操作,也会被迁移到最近读链表上。

其中,管理最近读的lru_read链表上的内存页面,发生了写操作,在页面算法扫描后,会被置换到管理最近少量写的链表cold_write上,而管理最近少量写链表cold_write的页面,发生了写操作,会被置换到管理最近频繁写的链表上lru_dirty上,同理在一段时间内维护最近少量写的链表cold_write上的页面,发生了读操作,被置换到管理最近读链表lru_read上,而维护最近频繁写链表lru_dirty上的页面最近一段时间发生了连续读操作,也会被迁移到读链表lru_read上。

对于需要置换到nvm的内存页面,如图4所示,对nvm的优化操作包括以下步骤:

1)为了减少大量的页面比较,分别从请求页面和nvm空闲页面通过抽样一部分样品位,页面抽样分为请求页面的样品位,nvm空闲页面的样品位,通过样品位来代替来整个页面;

2)为了均匀平等的抽样页面,采用蓄水池抽样算法从请求页面中提取64字节的数据作为样品,同时在提取样品的时候记录提取位置,同时从所有nvm空闲页面中选择部分页面,同时采用提取请求页样品时的位置去提取空闲nvm页面的样品,更新到样品集;

其中,蓄水池抽样算法包括构造一个容纳大小为k字节的样品窗口,将前k个位置的页面数据位直接放入样品窗口中;从第k 1的位置开始,以k/n的概率来决定该k 1位置的页面数据位是否进入样品窗口,如果被选中进入样品窗口,则记录提取样品的位置;循环遍历完所有页面位置,将样品窗口中的数据作为抽样出的样品,将提取出的样品位置作为提取nvm空闲页面样品的固定位置;其中,n为页面规模。。

该过程中需要设置样品窗口的大小64字节,初始化样品窗口为请求页面page前面顺序的64字节的数据位,位置窗口为请求页面前64字节的数据位对应的位置,而输出为样品窗口和位置窗口记录的数据,即样品窗口就是挑选出的样品,而其中位置窗口就是提取nvm空闲页样品的固定位置,具体流程为通过从请求页面page的位置窗口之后开始,依次遍历请求页面所有剩余位置pos(i),再随机获取一个位置r,如果随机获取的位置r在位置窗口中,就交换位置r对应的数据位和pos(i)对应的数据位,同时更新位置,否则不进行任何操作。

3)将请求页面样品位与nvm样品集中样品位采用基于杰卡德的改进的相似度算法比较得到相似度,选择相似度最高的nvm空闲页面作为请求页的待写页面。

如图5所示,将请求页面记录的样品即数据页面样品位和nvm空闲页面样品进行异或得到page,计算得到样品位为0的数量m;计算出page的总位数bn,将m与bn的比值作为请求页面和nvm样品集中样品的相似度。

优选的,基于杰卡德改进的页面相似度算法中计算相似度的公式可以表示为:

其中,sample_data和sample_nvm分别代表抽样的请求页面和nvm空闲页面;getzero获取样品0的个数,getbits获取位数;表示异或。

在一个优选的实施例中,本实施例在上述实施例的基础上,还提供了一种基于异构混合内存系统的页面分配管理方法,所述管理方法还可以包括以下步骤:

k1:流程的开始;

k2:初始化样品集中nvm空闲页面数量以及每个页面提取的样品大小(现在为64字节),设置样品窗口大小为64字节用于记录请求页面样品和位置窗口记录样品提取的位置;

k3:对dram中的内存页采用二级链表进行管理,第一级页面链表采用lru页面置换策略管理dram中的所有内存页面,第一级页面链表结构被作为缓存结构,当第一级页面链表空间不足时,将淘汰的页面,保存到第二级页面链表结构中,第二级页面链表包括与页面分类类别对应的最近读链表、最近少量写链表以及最近频繁写链表;

k4:当dram空间不足,由于nvm的读写特性,通过页面算法扫描具有读特性的内存页面到nvm,若置换后dram存储空间仍然不足,则将最近少量被写的页面置换到nvm;

k5:根据蓄水池页面抽样算法提取请求页样品,同时记录提取页面样品的位置;

k6:首先从nvm空闲页面选择部分空闲页面并根据请求页面记录的样品位置提取样品,设置样品条目保存到nvm样品集,样品条目包含样品,物理地址,该页的有效性;

k7:通过基于杰卡德改进的页面相似度算法计算得到请求页面样品和nvm样品集样品的相似度,然后进行排序;

k8:选择相似度最高的nvm空闲页样品所代表的nvm空闲页面作为请求页面的最佳写入页面;

k9:将选择的相似度最高的空闲页面作为请求页的写入,设置当前空闲页面无效,同时记录逻辑地址和物理地址的映射关系到nvm转换层,便于快速定位页面,从而对页面进行管理;空闲页面就不能再作为备选页面,即样品集中的该样品也无效,样品代表的页面需要设置为无效,下次需要从nvm空闲页面再次更新新的页面样品到nvm样品集中。

k10:结束流程。

在一个较佳的实施例中,本实施例基于上述实施例,对于需要从dram中置换到nvm中的页面即请求页面一般都会先暂存到缓存区进行处理;在完成步骤k9时,判断缓存区是否还有需要进行处理的请求页面,即判断缓存区是否为空;若缓存区不为空,则返回至步骤k5,继续对页面进行处理,否则进入步骤k10结束在一个管理周期内的流程。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:

1.一种基于异构混合内存系统的页面分配方法,其特征在于,包括以下步骤:

s1、根据异构混合内存系统页面的访问模式和存储特性,在页面分配过程中对页面进行分类存储;

s2、优先将所有页面都存放于dram中,当dram存储空间不足时,优先将具有读特性的页面置换至nvm中存储;

s3、采用蓄水池抽样算法对置换的页面即请求页面进行页面抽样,提取出样品,记录并确定样品位置;

s4、选择nvm空闲页面链表中的部分空闲页面,根据请求页面记录的样品位置提取出nvm空闲页面的样品,并更新到nvm样品集;

s5、计算请求页面样品和nvm样品集中样品的相似度,选择样品集中相似度最高的样品所代表的nvm的空闲页面,并将其分配给请求页面。

2.根据权利要求1所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述进行分类存储包括根据混合内存页面的活跃标识和读写标识,将页面划分为最近被读的页面、最近少量被写的页面以及最近频繁被写的页面三个分类类别;并在异构混合内存系统中采用二级页面链表进行维护。

3.根据权利要求2所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述二级页面链表包括第一级页面链表和第二级页面链表,所述第一级页面链表为采用lru页面置换策略管理的链表,所述第二级页面链表包括与页面分类类别对应的最近读链表、最近少量写链表以及最近频繁写链表。

4.根据权利要求3所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述在异构混合内存系统中采用二级页面链表进行维护具体包括第一级页面链表采用lru页面置换策略管理dram中的所有内存页面,若第一级链表空间不足,则将淘汰的页面保存到第二级页面链表中;第二级页面链表根据页面标识,分别将淘汰的页面存储在管理最近读链表、最近少量写链表以及最近频繁写链表中;其中,如果最近读链表的页面发生了写操作,则将其迁移到最近少量写链表中,如果最近少量写链表的页面发生了写操作,则将其迁移到最近频繁写链表中,如果最近少量写链表上的页面发生读操作,则将其迁移到最近读链表中,而如果最近频繁写链表上的页面发生了两次读操作,则将其迁移到最近读链表中。

5.根据权利要求1所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述步骤s2还包括若当dram存储空间不足时,优先将管理最近读链表的页面置换到nvm中,若置换后dram的存储空间仍然不足,则将管理最近少量写链表的页面置换到nvm。

6.根据权利要求1所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述采用蓄水池抽样算法对请求页面进行抽样包括构造一个容纳大小为k字节的样品窗口,将前k个位置的页面数据位直接放入样品窗口中;从第k 1的位置开始,以k/n的概率来决定该k 1位置的页面数据位是否进入样品窗口,如果被选中进入样品窗口,则记录提取样品的位置;循环遍历完所有页面位置,将样品窗口中的数据作为抽样出的样品,将提取出的样品位置作为提取nvm空闲页面样品的固定位置;其中,n为页面规模。

7.根据权利要求1所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述计算请求页面和nvm样品集中样品的相似度包括采用基于杰卡德改进的页面相似度算法,为请求页面的样品计算其对于nvm样品集中空闲页面样品的相似度。

8.根据权利要求7所述的一种基于异构混合内存系统的页面分配方法,其特征在于,所述基于杰卡德改进的页面相似度算法具体包括将请求页面记录的样品和nvm空闲页面样品进行异或得到page,计算得到样品位为0的数量m;计算出page的总位数bn,将m与bn的比值作为请求页面和nvm样品集中样品的相似度。

技术总结
本发明属于计算机存储领域,涉及一种基于异构混合内存系统的页面分配方法,包括根据异构混合内存系统页面的访问模式和存储特性,在页面分配过程中对页面进行分类存储;将所有页面都存放于DRAM中,当DRAM存储空间不足时,优先将具有读特性的页面置换至NVM中存储;采用蓄水池抽样算法对置换的页面即请求页面进行页面抽样,提取出样品,记录并确定样品位置;选择NVM空闲页面链表中的部分空闲页面,根据请求页面记录的样品位置提取出NVM空闲页面的样品,并更新NVM样品集;计算请求页面样品和样品集中样品的相似度,选择相似度最高的样品所代表的NVM的空闲页面,将其分配给请求页面;本发明在有限的系统开销内降低系统能耗,具有较好的实用性。

技术研发人员:熊安萍;白伟碧;龙林波;蒋溢
受保护的技术使用者:重庆邮电大学
技术研发日:2020.01.16
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-26241.html

最新回复(0)