一种面向NAND闪存的页面置换方法与流程

文档序号:12363551阅读:686来源:国知局
一种面向NAND闪存的页面置换方法与流程

本发明属于数据存储领域,更具体地,涉及一种面向NAND闪存的页面置换方法。



背景技术:

NAND闪存(flash memory)是由东芝公司于1989年提出的一种非易失性存储介质,具有高性能,高密度,抗震性好,低功耗等优点。因此,NAND闪存被广泛应用于嵌入式设备,便携式电脑。随着NAND闪存技术的飞速发展,其在企业级存储系统中也得到广泛的应用。简便起见,本文后面提到的闪存如无特别说明都默认代表NAND闪存。

缓存在存储系统中扮演着极为重要的作用,通过将热点数据保存在小容量的高速缓存中,存储系统性能可以得到明显的改善。几十年来,研究人员针对存储系统缓存管理提出各种各样的页面置换算法,例如先进先出算法(FIFO)、最久未使用算法(LRU)、最少使用置换算法(LFU)等等。这些算法都是基于存储介质为传统磁盘的假设。然而,相比传统磁盘,闪存有着一些非常独特的性质。闪存有三种基本操作,读、写、擦除。读/写是以页为单位执行的,而擦除操作是按块为单位执行的。每个块包含若干个页。闪存不支持对页的覆盖写操作,而必须先执行擦除才能写入新的数据。另外,闪存的三种基本操作的时延也不同。通常闪存的读时延最短,写时延其次,而擦除操作最慢。传统的面向磁盘的页面置换算法主要致力于提升缓存命中率,而没有考虑到闪存的这些特性。例如,传统的算法假设读写开销是相同的。然而在闪存的写时延通常比读时延慢,而且随着写操作的不断增加,当闪存空闲页数量不足时,还会触发更慢的擦除操作。如果不考虑这些因素而仅仅关注命中率,就无法充分发挥基于闪存的存储I/O性能。

考虑到闪存的读写不对称性,研究人员在最久未使用置换算法(LRU)的基础上,提出了一系列面向闪存的页面置换算法,如干净页优先置换算法(CFLRU),冷干净页优先置换算法(CCFLRU),以及基于概率的三链表置换算法(PTLRU)等等。这些算法的核心思想在于尽可能减少开销较大的闪存写操作,同时尽量保证不会造成命中率的过度下降。然而这些算法仍然存在各自的问题。例如CFLRU没有充分考虑缓存页的访问频度,可能会造成冷的干净页无法被及时置换出缓存而造成缓存污染。CCFLRU和PTLRU采用较为激进的方式置换干净页,然而它们容易造成热的干净页无法被识别并保存在缓存,因此可能导致命中率的显著下降,从而使得最终的I/O性能受损。综上,现有的各种缓存页面置换算法有着如上所述的缺陷,不能很好地提升基于闪存的存储系统I/O性能。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种面向NAND闪存的页面置换方法,该方法使用冷的干净页链表和其他混合页链表分别管理冷干净页和其它缓存页,还使用预留的幽灵页链表记录近期被淘汰的缓存页的元数据信息;处理页访问时先初始化,若该页在其他混合页链表或冷的干净页链表中命中,则将该页标记为热页并移动到其他混合页链表的最近访问端;如果该页在幽灵页链表命中,则删除幽灵页链表中该页的记录,为该页分配一个新的缓存页并标记为热页,在将该页移动到其他混合页链表的最近访问端;最后判断该页如果是读/写请求,则将数据读出/写入缓存页并返回。

为实现上述目的,提供了一种面向NAND闪存的页面置换方法,该方法包括如下步骤:

(1)当一个I/O请求P到达时,首先初始化变量第一标志位和第二标志位为0,之后在缓存中的CL(冷的干净页链表)、ML(其他混合页链表)和GL(幽灵页链表)中查询P;

(2)若没有在ML和CL中命中P则进入步骤(3),否则跳转到步骤(9);

(3)判断是否在GL中有P的元数据信息,若有则进入步骤(4),否则跳转到步骤(5);

(4)删除GL中包含P的元数据信息的节点,并且将变量第一标志位置为1;

(5)为请求P执行缓存分配过程,为其分配缓存页;

(6)若第一标志位等于0并且该请求是读操作,则跳入到步骤(12),否则进入步骤(7);

(7)将新分配的缓存页P移动到ML的MRU(最近访问)端;

(8)若第一标志位等于1,进入步骤(10)否则跳入步骤(11);

(9)将缓存页P移动到ML的MRU端,并将第二标志位赋值为1;

(10)将缓存页P标记为热页;

(11)若是读请求,则进入步骤(13),否则跳转到步骤(16);

(12)将缓存页P加入到CL的MRU端;

(13)若第二标志位等于0,则进入到步骤(14),否则跳入步骤(15);

(14)将数据从闪存读入到新分配的缓存页P;

(15)将缓存页P中的数据返回给上层,请求结束;

(16)将数据写入到新分配的缓存页P,并将缓存页P标记为脏页,请求结束。

进一步地,所述步骤(5)中分配缓存页包括以下子步骤:

(21)判断是否有空闲的缓存页,若有则跳转到步骤(211),否则进入步骤(22);

(22)初始化将要被回收的缓存页标记为牺牲页,使之为空;

(23)判断链表CL是否为空,如果为空则进入步骤(24),否则跳转到步骤(27);

(24)从链表ML的LRU(最久未访问)端向MRU(最近访问端)端扫描,依次判断LRU端的缓存页P是否为冷页,如果不是冷页,则转入步骤(25),否则跳转到步骤(28);

(25)将缓存页P标记为冷页,若缓存页P为干净页,则将其移动到CL的MRU端;否则将缓存页P移动到ML的MRU端;

(26)若ML中的页还没有扫描完毕,则跳转到步骤(24),否则跳转到步骤(23);

(27)将CL链表中的LRU端缓存页作为牺牲页,跳转到步骤(29);

(28)将缓存页P作为牺牲页;

(29)若GL链表已满,则将其LRU端的节点释放;将牺牲页的元数据信息加入到GL的MRU端;

(210)若牺牲页是脏页,则将该页的数据写回到闪存;将牺牲页设为空闲页;

(211)选取一个空闲页返回,请求结束。

进一步地,所述CL链表,用于管理冷的干净页;所述ML链表,用于管理热的干净页、热的脏页和冷的脏页;所述GL链表,用于记录近期被淘汰的缓存页的元数据信息。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:

(1)本发明减少了NAND闪存的高开销操作:由于本发明优先替换冷的干净页,而尽量推迟热的脏页的返回,因此可以在缓存中产生更多的脏页写命中,从而减少了对闪存的写入次数,进而也可以减少闪存的擦除操作;

(2)本发明维持了较好的缓存命中率:由于本发明细分了缓存页的状态,并且借助于Ghost缓存有效的识别被潜在的热页,从而避免造成缓存命中率的过分下降。

附图说明

图1是本发明一种面向NAND闪存的页面置换方法读写操作流程图;

图2是本发明一种面向NAND闪存的页面置换方法缓存页分配流程图;

图3是本发明采用的数据结构以及缓存页状态示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

首先给出本发明相关概念的定义:

缓存页:缓存的基本读写单位,一般与闪存的物理页大小一致;

如图1所示,本发明的读写操作流程分为如下步骤:

(1)当一个I/O请求P到达时,首先初始化变量glflag=0、realhit=0,之后在缓存中的CL、ML和GL中查询P;

(2)若没有在ML和CL中命中P则进入步骤(3),否则跳转到步骤(9);

(3)判断是否在GL中有P的元数据信息,若有则进入步骤(4),否则跳转到步骤(5);

(4)删除GL中包含P元数据信息的节点,并且使变量glflag=1;

(5)为请求P执行缓存分配过程,为其分配缓存页;

(6)若glflag==0并且该请求是读操作,则跳转到步骤(12),否则进入步骤(7);

(7)将新分配的缓存页P移动到ML的MRU端;

(8)若glflag==1,进入步骤(10)否则跳入步骤(11);

(9)将缓存页P移动到ML的MRU端,并使realhit=1;

(10)将缓存页P标记为热页;

(11)若是读请求,则进入步骤(13),否则跳转到步骤(16);

(12)将缓存页P加入到CL的MRU端;

(13)若realhit==0,则进入到步骤(14),否则跳入步骤(15);

(14)将数据从闪存读入到新分配的缓存页P;

(15)将缓存页P中的数据返回给上层,请求结束;

(16)将数据写入到新分配的缓存页P,并将缓存页P标记为脏页,请求结束。

如图2所示,本发明分配缓存页流程分为如下步骤:

(21)判断是否有空闲的缓存页,若有则跳转到步骤(211),否则进入步骤(22);

(22)初始化将要被回收的缓存页,标记为victim,使之为空;

(23)判断链表CL是否为空,如果为空则进入步骤(24),否则跳转到步骤(27);

(24)从链表ML的LRU端向MRU端扫描,依次判断LRU端的缓存页P是否为冷页,如果不是冷页,则转入步骤(25),否则跳转到步骤(28);

(25)将缓存页P标记为冷页,若缓存页P为干净页,则将其移动到CL的MRU端;否则将缓存页P移动到ML的MRU端;

(26)若ML中的页还没有扫描完毕,则跳转到步骤(24),否则跳转到步骤(23);

(27)将CL链表中的LRU端缓存页作为victim页,跳转到步骤(29);

(28)将缓存页P作为victim页;

(29)如果GL链表已满,则将其LRU端的节点释放;将victim页的元数据信息加入到GL的MRU端;

(210)如果victim页是脏页,则将该页的数据写回到闪存;将victim页设为空闲页;

(211)选取一个空闲页返回,请求结束。

图3是本发明采用的数据结构以及缓存页状态的示意图,CL,用于管理冷的干净页;ML,用于管理热的干净页、热的脏页和冷的脏页;GL,用于记录近期被淘汰的缓存页的元数据信息。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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