首页> 中国专利> 一种基于闪存的内存系统缓存机制

一种基于闪存的内存系统缓存机制

摘要

本发明涉及一种基于闪存的内存系统缓存机制。它提出在基于闪存的内存系统的DRAM中构建两个缓存区:页缓存区和cache line缓存区。一方面通过历史感知热点识别机制,鉴别并保存每个数据页内热的cache line,提升DRAM缓存的命中率。另一方面,采用延迟刷下机制,在缓存区满时优先剔除干净的数据块,从而减少对闪存的写。同时,采用弱变异系数算法,增加历史访问记录和脏标记位等方式,该缓存机制在时间、空间开销等方面都不大。该机制充分利用闪存的特性,能够有效改善基于闪存的内存系统的读写延迟和使用寿命。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-29

    授权

    授权

  • 2017-04-19

    实质审查的生效 IPC(主分类):G06F12/0882 申请日:20161104

    实质审查的生效

  • 2017-03-22

    公开

    公开

说明书

技术领域

本发明适用于基于闪存的内存系统技术领域,提供了一种基于闪存的内存系统缓存机制,通过对缓存的设计,缓解数据访问闪存时的负载瓶颈,改善基于闪存的内存系统的读写延迟和使用寿命。

背景技术

随着信息技术革命的飞速发展,大数据和云计算已经成为当今时代的主流,数据的爆炸性增长以及计算机性能的不断提高对存储系统提出了越来越高的要求,存储系统面临着容量和性能的挑战。

传统内存DRAM的集成度越来越高,其容量越来越大,虽然其访问延迟并没有显著的改善,但是容量的提升在性能、成本上也给计算机系统的发展带来了很大的益处。由于DRAM为充电型器件,其电容需要一定的大小才能保存足够的电荷而被感知,并且其上的半导体器件也只有达到一定的大小才能产生有效的通道控制信号,由于目前预测理论上的最小值为40nm,而当前工艺已经接近极限。另一方面,DRAM功耗方面都存在瓶颈,由于DRAM为非易失存储介质,存在电荷流失现象,需要不断进行刷新操作才能保证数据正确性。当容量增大后,刷新操作的功耗很大。

近年来,以闪存为代表的新型存储介质发展迅速,集成度不断增加,价格不断降低,缓解了存储系统的性能压力。闪存具有很多优良特性,如高随机访问性能,低功耗,体积小,抗震动等,具有广阔的发展前景。基于闪存的闪存固态盘由于其高性能,被广泛用于云计算的数据中心中。但是,闪存的擦写次数有限,使得其寿命有限,这是阻碍闪存的发展一大因素。因此,在可靠性敏感的环境中,闪存固态盘并不适用。对于云计算数据中心产生的写密集型负载,闪存固态盘无法胜任存储工作。之前,闪存相关产品都用作外存使用,为了进一步降低延迟,学术界以及工业界的研究者尝试用闪存构建内存。目前,市场上出现了基于闪存的内存系统产品,如Ultra-DIMM,使得将闪存用于构建内存系统成为可能。

以闪存构建内存系统,能有效地解决传统DRAM的扩展性和功耗问题。但是,该系统存在两个关键问题:性能和使用寿命。一方面,闪存的性能比传统DRAM低几个数量级。尽管我们可以有效地利用闪存阵列内部的并行性,但还是难以弥补和DRAM之间的性能差距。另一方面,有限的擦写次数导致闪存的使用寿命有限。虽然可以采用损耗均衡等技术延长闪存的寿命,但是作为内存系统时,数据访问非常频繁,使用寿命还是一个严峻的问题。鉴于这两个方面的瓶颈,通常,我们倾向于在闪存阵列中增加一个DRAM作为数据缓存。这样一来,DRAM缓存可以吸收主机到来的很多请求,从而弥补闪存内存系统在性能和寿命上的不足。也就是说,DRAM缓存中的缓存替换机制是该系统的关键。

然而,这样的混合架构存在两个问题。第一,闪存的访问粒度是页(通常是4KB数据),而主机和内存之间的访问粒度是cache line(通常是64B),这两者访问粒度的不一致会使得DRAM缓存管理变得复杂。虽然有些闪存的接口协议支持子页访问模式(访问粒度为512B),还是比cache line大。当一个cache line的请求到来时,如果DRAM缓存中缺失,闪存的控制器会从闪存阵列中读取一页到DRAM中。这样一来,DRAM缓存的命中率就至关重要。当一个cache line的请求命中DRAM缓存的话,就不需要去访问闪存了。然而,如果我们采用简单的缓存机制,将闪存中的页缓存到DRAM中,传统的缓存替换算法,如LRU(Least Recently Used),只能识别出热页并将其保存在缓存中,并不能识别出每页中热的cache line。第二,现有的通用缓存替换机制,只关注于更高的请求命中率,并没有考虑到闪存的相关特性。比如LRU算法,利用请求访问的时间局部性,能识别出一段时间内热的数据块并将其保存在缓存中,冷的数据块则剔除出去,以提高命中率。但是,闪存读写速度不一致,读快写慢,并且寿命有限,因此对写请求很敏感。传统的缓存替换机制若一味追求高的命中率,而导致刷下更多的写请求到闪存中,就会影响增加闪存的读写延迟,降低使用寿命,进而降低整体系统的性能和寿命。现有的其他缓存替换机制,如ARC,是在LRU的基础上改进而来,是至今为止公认的最好替换算法之一,能根据应用特性进行自我调节,实现非常高的命中率,但还是存在相同的问题,这使得通用的缓存替换机制并不能完全适用于闪存内存系统。

综上所述,基于闪存的内存系统中,DRAM缓存对整体系统的性能和使用寿命至关重要。闪存的页和cache line的大小不一致,使得DRAM缓存并不能够识别出每页内热的cache line。同时,传统的通用缓存替换算法并不完全适用于闪存内存系统,简单地使用,可能会降低整体系统的性能和使用寿命。

发明内容

本发明所要解决的技术问题是在基于闪存的内存系统中设计实现有效的缓存机制,利用适合闪存特性的缓存机制,在DRAM中构建页的缓存区之外,又构建了一个cache line的缓存区,分别缓存热页和每页内的热cache line。采用传统LRU鉴别热的页,并采用历史感知的热点识别机制鉴别当前应用下每页中热的cache line,分别将其保存在DRAM的页缓存区和cache line缓存区中。进而,采用延迟刷下机制,优先剔除DRAM缓存中未被修改过的数据(即干净的数据),减少对闪存的写。通过这两种方式,能够改善闪存内存系统的读写延迟和使用寿命。

DRAM缓存机制的原理包括两方面的创新。一方面,是历史感知的热点识别机制。将DRAM缓存分为页缓存区和cache line缓存区。页缓存区存放热的页,而cache line缓存区存放热的cache line。两个缓存区都采用基本的LRU策略进行数据管理,在页缓存区中,每个页内的各个cache line后需增加一个字节的空间记录数据的访问次数。经过实验发现,在大部分应用的访问模式下,页内各个cache line的访问是不均衡的,为提高DRAM缓存的命中率,需要识别出页内的热cache line,尽早剔除缓存中冷的cache line。历史感知的热点识别机制就是仿照了数学上的变异系数的方法。由于传统的变异系数涉及到开平方根等复杂运算,为减少计算和硬件开销,我们设计了一种弱变异系数(Weak CV)的方法,采用平均差(mean deviation)除以平均数(average)的方式,通过计算弱变异系数的值来判断页内是否存在热的cache line。其具体公式如下:

该公式中,Xi为页内记录的弟i个cache>

另一方面,是延迟刷下机制。在DRAM的页缓存区和cache line缓存区中,每个数据块都增加一个标志位,标识数据块是否被修改过,即是否为脏数据。当任意一个缓存区满后,传统的LRU替换策略会剔除最近最少使用(LRU)的数据块,将其刷到闪存中。若该数据块为脏数据,则会产生一个写请求,更新在闪存中的副本数据。延迟刷下机制,则是在LRU策略的基础上,根据闪存对写请求敏感的特点,做出调整。在缓存区满需要剔除数据块的时候,先判断LRU数据块是否为脏,若不为脏,则剔除LRU数据块;否则,从与LRU数据块相邻的几个数据块中,按照访问频率从少到多的顺序选一个干净的数据块进行剔除。由于这些数据块相对于各自缓存区中的数据块而言是较冷的数据,因此,剔除其中一个数据块并不会严重影响命中率。若这些数据块都为脏数据,则出于提高命中率的考虑,还是剔除LRU数据块。延迟刷下机制通过延迟刷下脏数据块,能够减少对闪存的写,从而提升系统性能和寿命。

本发明设计的基于闪存的内存系统缓存机制在DRAM中构建了两个缓存区:页缓存区和cache line缓存区。一方面通过历史感知热点识别机制,鉴别并保存每个数据页内热的cache line,提升DRAM缓存的命中率。另一方面,采用延迟刷下机制,在缓存区满时优先剔除干净的数据块,从而减少对闪存的写。综合两个方面的策略,该机制能够有效地改善闪存内存系统的读写延迟和使用寿命。

使用本发明能达到以下有益效果:

1、提升闪存内存系统的性能。本发明提出的历史感知的热点识别机制基于每个数据页内各个cache line访问的不均衡性,构建cache line缓存区,鉴别并保存页内热的cache line,从而提升DRAM缓存的命中率,吸收了很多读写请求,有效地减少了对闪存的访问,提升了性能;

2、提升闪存内存系统的使用寿命。写请求会消耗闪存的使用寿命,本发明提出的延迟刷下机制,通过延迟刷下脏数据,减少了闪存的写请求数量,从而提升了整体系统的使用寿命。

实现本发明的开销很小,包括以下三点:

1、时间开销:本发明的缓存机制是基于传统的LRU替换策略,设计的历史感知的热点识别机制和延迟刷下机制并不涉及复杂的计算开销,时间开销小;

2、空间开销:本发明的缓存机制将传统的页缓存区空间划分为两个缓存区:页缓存区和cacheline缓存区,总空间大小不变。除此之外,历史感知热点识别机制中对每个页中的cache line增加了一个字节的空间用于记录访问信息,延迟刷下机制增加了1位的脏位标记,这两处空间开销不到DRAM缓存空间的2%,空间开销小。

附图说明

图1是每页内各个cache line访问不均衡示意图;

图2是基于闪存的内存系统缓存机制的体系结构图以及工作流程示意图;

图3是历史感知的热点识别机制原理示意图;

图4是延迟刷下机制的原理示意图。

具体实施方式

图1是每页内各个cache line访问不均衡示意图,该例子中每个页大小为512B,包括8个cache line。

图2是本发明采用的基于闪存的内存系统缓存机制的体系结构图以及工作流程示意图,DRAM缓存中包括页缓存区和cache line缓存区。

图3是历史感知的热点识别机制原理示意图,cache line的访问信息记录在页写回闪存时可以存放在闪存的带外区域(Out-of-Band)。

图4是延迟刷下机制的原理示意图,为每个数据页以及cache line都设置了脏标识位。具体的执行过程为:

第一步,将DRAM缓存空间划分为页缓存区和cache line缓存区,按照闪存的子页访问协议,设定页缓存区的数据块大小为512B,cache line缓存区的数据块大小为64B;

第二步,接收从主机到来的cache line请求,先判断cache line缓存区是否命中,若cache line缓存区命中,则立即服务请求,执行第十步;否则,判断页缓存区是否命中,执行第三步;

第三步,若页缓冲区命中,服务请求,执行第十步;否则,闪存控制器根据请求地址,从闪存中读取一页到页缓存区中,执行第四步;

第四步,若页缓存区不满,则服务请求,执行第十步;否则,根据延迟刷下策略,在LRU数据块及其相邻的两个数据块中选择一个数据块进行剔除,执行第五步;

第五步,若剔除的数据块为干净的,则不产生对闪存的写,执行第十步;否则产生对闪存的写请求,执行第六步;

第六步,针对剔除的数据页,根据页内各个cache line的访问记录,计算该页的弱变异系数,若该值大于设定的阈值(以1.5为例),则说明该页内各个cache line访问非常不均衡,将访问次数大于平均值以上的cache line取出,准备存入cache line缓存区,执行第七步;否则说明该页内访问较均衡,不需要进一步处理,执行第十步;

第七步,若cache line缓存区不满,则将第六步中选出的一个cache line存入,执行第九步;否则,根据延迟刷下策略,在LRU数据块及其相邻的两个个数据块中选择一个数据块进行剔除,执行第八步;

第八步,若剔除的数据块为干净的,则不需要多余操作,执行第九步;否则,对闪存产生一个读和一个写,先将该cache line存在的页读出,再将cache line更新到对应的位置,最后将更新后的页写回到闪存中,执行第九步;

第九步,若第六步选择的cache line处理完,则执行第十步;否则,执行第七步;

第十步,结束。

在基于闪存的内存系统中,DRAM缓存对整体系统的性能和使用寿命至关重要。闪存的页和cache line的大小不一致,采用传统的缓存替换算法只能识别出热的页,并不能够识别出每页内热的cache line。同时,传统的通用缓存替换算法并不完全适用于闪存内存系统,简单地使用,可能会降低整体系统的性能和使用寿命。

本发明针对以上两种情况,提出在基于闪存的内存系统的DRAM中构建两个缓存区:页缓存区和cache line缓存区。一方面通过历史感知热点识别机制,鉴别并保存每个数据页内热的cache line,提升DRAM缓存的命中率。另一方面,采用延迟刷下机制,在缓存区满时优先剔除干净的数据块,从而减少对闪存的写。同时,采用弱变异系数算法,增加历史访问记录和脏标记位等方式,该缓存机制在时间、空间开销等方面都不大。基于本发明的实验测试表明,该机制在特定应用下能最大提升缓存命中率12%,平均降低访问延迟19.7%,并且提升16.6%的使用寿命。这个结果表明,该机制能够有效地改善闪存内存系统的读写延迟和使用寿命。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号