CN106294197B - 一种面向nand闪存的页面置换方法 - Google Patents

一种面向nand闪存的页面置换方法 Download PDF

Info

Publication number
CN106294197B
CN106294197B CN201610637855.4A CN201610637855A CN106294197B CN 106294197 B CN106294197 B CN 106294197B CN 201610637855 A CN201610637855 A CN 201610637855A CN 106294197 B CN106294197 B CN 106294197B
Authority
CN
China
Prior art keywords
page
cache
jumping
pages
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610637855.4A
Other languages
English (en)
Other versions
CN106294197A (zh
Inventor
王芳
冯丹
华宇
李楚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201610637855.4A priority Critical patent/CN106294197B/zh
Publication of CN106294197A publication Critical patent/CN106294197A/zh
Application granted granted Critical
Publication of CN106294197B publication Critical patent/CN106294197B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种面向NAND闪存的页面置换方法,属于数据存储领域。本发明使用冷的干净页链表和其他混合页链表分别管理冷干净页和其它缓存页,还使用预留的幽灵页链表记录近期被淘汰的缓存页的元数据信息;处理页访问时先初始化,若该页在其他混合页链表或冷的干净页链表中命中,则将该页标记为热页并移动到其他混合页链表的最近被访问端;如果该页在幽灵页链表命中,则删除幽灵页链表中该页的记录,为该页分配一个新的缓存页并标记为热页,再将该页移动到其他混合页链表的最近被访问端;最后判断该页如果是读/写请求,则将数据读出/写入缓存页并返回。本发明的方法解决了减少闪存写操作的同时尽量维持较好的缓存命中率的技术问题。

Description

一种面向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,用于记录近期被淘汰的缓存页的元数据信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种面向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)选取一个空闲页返回,请求结束。
2.根据权利要求1所述一种面向NAND闪存的页面置换方法,其特征在于,所述CL链表,用于管理冷的干净页;所述ML链表,用于管理热的干净页、热的脏页和冷的脏页;所述GL链表,用于记录近期被淘汰的缓存页的元数据信息。
CN201610637855.4A 2016-08-05 2016-08-05 一种面向nand闪存的页面置换方法 Active CN106294197B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610637855.4A CN106294197B (zh) 2016-08-05 2016-08-05 一种面向nand闪存的页面置换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610637855.4A CN106294197B (zh) 2016-08-05 2016-08-05 一种面向nand闪存的页面置换方法

Publications (2)

Publication Number Publication Date
CN106294197A CN106294197A (zh) 2017-01-04
CN106294197B true CN106294197B (zh) 2019-12-13

Family

ID=57665522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610637855.4A Active CN106294197B (zh) 2016-08-05 2016-08-05 一种面向nand闪存的页面置换方法

Country Status (1)

Country Link
CN (1) CN106294197B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970881B (zh) * 2017-03-10 2020-04-28 浙江大学 一基于大页的冷热页追踪及压缩回收方法
CN107256235A (zh) * 2017-05-19 2017-10-17 武汉璞华大数据技术有限公司 一种缓存系统热点数据访问方法
CN107341112A (zh) * 2017-06-29 2017-11-10 西安交通大学 一种基于页面访问间隔的闪存数据缓冲区置换方法
WO2019113871A1 (en) * 2017-12-14 2019-06-20 Intel Corporation Sensor hub and memory system with reduced page swapping overhead
CN108062278A (zh) * 2018-01-12 2018-05-22 江苏华存电子科技有限公司 一种闪存冷热数据分析器及分析方法
CN108920096A (zh) * 2018-06-06 2018-11-30 深圳忆联信息系统有限公司 一种ssd的数据储存方法、装置、计算机设备及存储介质
CN109660263B (zh) * 2018-11-22 2022-07-05 华中科技大学 一种适用于mlc nand闪存的ldpc码译码方法
CN111190834B (zh) * 2019-12-24 2023-03-31 华东师范大学 一种非对称读延迟感知的数据放置方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156753A (zh) * 2011-04-29 2011-08-17 中国人民解放军国防科学技术大学 面向固态硬盘文件系统的数据页缓存方法
CN102760101A (zh) * 2012-05-22 2012-10-31 中国科学院计算技术研究所 一种基于ssd 的缓存管理方法及系统
US9104552B1 (en) * 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951239B (zh) * 2014-03-26 2018-04-10 国际商业机器公司 高速缓存驱动器、主机总线适配器及其使用的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156753A (zh) * 2011-04-29 2011-08-17 中国人民解放军国防科学技术大学 面向固态硬盘文件系统的数据页缓存方法
CN102760101A (zh) * 2012-05-22 2012-10-31 中国科学院计算技术研究所 一种基于ssd 的缓存管理方法及系统
US9104552B1 (en) * 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices

Also Published As

Publication number Publication date
CN106294197A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN106294197B (zh) 一种面向nand闪存的页面置换方法
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
CN107193646B (zh) 一种基于混合主存架构的高效动态页面调度方法
CN105930282B (zh) 一种用于nand flash的数据缓存方法
EP3121703B1 (en) Data caching method, cache and computer system
US20180121351A1 (en) Storage system, storage management apparatus, storage device, hybrid storage apparatus, and storage management method
KR101894625B1 (ko) 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집
CN103257935B (zh) 一种缓存管理方法及其应用
US20130198439A1 (en) Non-volatile storage
CN107391398B (zh) 一种闪存缓存区的管理方法及系统
CN110413537B (zh) 一种面向混合固态硬盘的闪存转换层及转换方法
CN105389135B (zh) 一种固态盘内部缓存管理方法
US20100070733A1 (en) System and method of allocating memory locations
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
CN108845957B (zh) 一种置换和回写自适应的缓冲区管理方法
TW201917581A (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器
CN110888600B (zh) 一种面向nand闪存的缓冲区管理方法
CN111984188B (zh) 混合内存数据的管理方法、装置及存储介质
US20140223072A1 (en) Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology
CN105975215A (zh) 一种基于Ondemand算法的STL映射表管理方法
CN111580754A (zh) 一种写友好的闪存固态盘缓存管理方法
CN106909323A (zh) 适用于dram/pram混合主存架构的页缓存方法及混合主存架构系统
CN108664217B (zh) 一种降低固态盘存储系统写性能抖动的缓存方法及系统
CN115048056B (zh) 基于页面替换代价的固态硬盘缓冲区管理方法
CN106205707B (zh) 存储器装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant