CN104008061B - 内存回收方法及装置 - Google Patents

内存回收方法及装置 Download PDF

Info

Publication number
CN104008061B
CN104008061B CN201310057351.1A CN201310057351A CN104008061B CN 104008061 B CN104008061 B CN 104008061B CN 201310057351 A CN201310057351 A CN 201310057351A CN 104008061 B CN104008061 B CN 104008061B
Authority
CN
China
Prior art keywords
inactive
nvm
memory pages
write
pages
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
CN201310057351.1A
Other languages
English (en)
Other versions
CN104008061A (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.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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 Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201310057351.1A priority Critical patent/CN104008061B/zh
Priority to KR1020157018254A priority patent/KR20150095781A/ko
Priority to JP2015552994A priority patent/JP6014925B2/ja
Priority to EP14753914.2A priority patent/EP2921963B1/en
Priority to PCT/CN2014/070515 priority patent/WO2014127684A1/zh
Publication of CN104008061A publication Critical patent/CN104008061A/zh
Priority to US14/798,094 priority patent/US20150317246A1/en
Application granted granted Critical
Publication of CN104008061B publication Critical patent/CN104008061B/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本发明实施例提供一种内存回收方法及装置,内存回收方法包括:接收内存回收请求消息,内存回收请求消息中包含回收标识,回收标识用于表示请求回收的内存页面数量;根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的页序回收NVM非活动页面,本发明实施例的内存回收方法及装置通过按照NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,实现了NVM非活动内存页面被写次数相对小的页面先被回收利用,NVM非活动内存页面被写次数相对大的页面后被回收利用,从而能够使NVM内存页面磨损均衡,提高了存储单元的稳定性和可靠性。

Description

内存回收方法及装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及内存回收方法及装置。
背景技术
构成内存单元的内存器件通常包括动态随机访问存储器(英文全称DynamicRandom Access Memory,简称DRAM)和非易失性存储器(英文全称Non-Volatile Memory,简称NVM),DRAM可以承受的写次数高,但可集成度低,可集成的存储空间有限,NVM的集成度更高,可以集成较大内存容量的内存单元,但可以承受的写次数相对较低,随着人们对存储设备的内存容量的要求越来越高,期望存储设备的内存容量越来越大,越来越稳定可靠,因此,出现了由DRAM和NVM构成的混合结构的内存单元,由DRAM和NVM混合可以提高存储设备的存储容量。
现有技术中,DRAM和NVM混合结构的存储设备的操作***在执行页面回收操作时,采用最近最少使用算法(英文全称Least Recently Used,简称LRU)从非活动的NVM页面链表的头部选择相应数量的页面进行回收,这种方法可能会导致被写次数较多的NVM页面先被回收利用,致使被写次数多的NVM被磨损严重,影响整个存储单元的稳定性和可靠性。
发明内容
本发明实施例的目的在于提供一种内存回收方法,旨在解决NVM的内存页面磨损不均衡的问题。
第一方面,本发明提供一种内存回收方法,包括:
接收内存回收请求消息,所述内存回收请求消息中包含回收标识,所述回收标识用于表示请求回收的内存页面数量;
根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还包括:
确定所述NVM非活动内存页面的被写次数;
根据所述NVM非活动内存页面的被写次数,将所述NVM非活动内存页面存储至非活动内存页面链表中的相应段中,所述非活动内存页面链表中包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在所述非活动内存页面链表中排列。
结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,包括:
在所述非活动内存页面链表中按照设定被写次数范围从小到大的顺序,回收一个或多个段中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
结合第一方面,在第一方面的第四种可能的实现方式中,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还包括:
确定所述NVM非活动内存页面的被写次数;
将所述NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,所述页面列表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述非活动内存页面链表中包括的多个页面组按照建立时间的先后页序在所述非活动内存页面链表中排列。
结合第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式中,在第一方面的第六种可能的实现方式中,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,包括:
在所述非活动内存页面链表中按照建立时间的先后顺序,回收一个或多个页面组中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
第二方面,本发明实施例提供一种内存回收装置,包括:
接收模块,用于接收内存回收请求消息,所述内存回收请求消息中包含回收标识,所述回收标识用于表示请求回收的内存页面数量;
内存回收模块,用于根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面。
结合第二方面,在第二方面的第一种可能的实现方式中,还包括:
确定模块,用于在所述内存回收模块根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,确定所述NVM非活动内存页面的被写次数;
第一***模块,用于根据所述NVM非活动内存页面的被写次数,将所述NVM非活动内存页面存储至非活动内存页面链表中的相应段中,所述非活动内存页面链表中包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在所述非活动内存页面链表中排列。
结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,
内存回收模块,具体用于在所述非活动内存页面链表中按照设定被写次数范围从小到大的顺序,回收一个或多个段中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
结合第二方面,在第二方面的第四种可能的实现方式中,还包括:
确定模块,用于在所述内存回收模块根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,确定所述NVM非活动内存页面的被写次数;
第二***模块,用于将所述NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,所述页面列表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述非活动内存页面链表中包括的多个页面组按照建立时间的先后顺序在所述非活动内存页面链表中排列。
结合第二方面的第四种可能的实现方式或第二方面的第五种可能的实现方式中,在第二方面的第六种可能的实现方式中,
内存回收模块,具体用于在所述非活动内存页面链表中按照建立时间的先后顺序,回收一个或多个页面组中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
本实施例的内存回收方法及装置,通过接收内存回收请求消息,内存回收请求消息中包含回收标识,回收标识用于表示请求回收的内存页面数量,根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,实现了NVM非活动内存页面被写次数相对小的页面先被回收利用,NVM非活动内存页面被写次数相对大的页面后被回收利用,从而能够使NVM内存页面磨损均衡,提高了存储单元的稳定性和可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明内存回收方法实施例一的流程图;
图2为本发明NVM非活动内存页面链表组织形式实施例一示意图;
图3为本发明内存回收方法实施例二的流程图;
图4为本发明NVM非活动内存页面链表组织形式实施例二示意图;
图5为本发明内存回收方法实施例三的流程图;
图6为本发明内存回收装置实施例一的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是:本发明实施例的内存回收方法可以适用于内存模块为混合型的内存回收装置,即内存回收装置的内存模块由动态随机访问存储器(英文全称DynamicRandom Access Memory,简称DRAM)和非易失性存储器(英文全称Non-Volatile Memory,简称NVM)构成,还可以适用于内存模块由NVM构成的内存回收装置。对于内存模块为混合型的内存回收装置,在执行内存回收时,可以先回收DRAM中的非活动内存页面,当DRAM中的非活动内存页面数量不能满足回收需要时,再回收NVM中内存页面,回收NVM中内存页面的方法可以采用本发明实施例的内存回收方法。
本实施例的内存回收方法可以采用内存回收装置来实现,该内存回收装置可以通过硬件或软件的方式实现,该内存回收装置通常可以为手机、计算机等终端中具有处理功能的部件,例如:CPU等,可以用于在终端中实现内存回收方法。
图1为本发明内存回收方法实施例一的流程图,如图1所示,本实施的内存回收方法包括:
S101、接收内存回收请求消息,内存回收请求消息中包含回收标识,回收标识用于表示请求回收的内存页面数量。
具体地,例如:内存回收装置在运行程序时,需要为某一进程分配内存空间,此时,如果空闲内存不足,则操作***向内存管理模块发送内存回收请求消息,内存管理模块接收该内存回收请求消息,该内存回收请求消息中包含回收标识,该回收标识可以为用于表示操作***请求的内存页面数量的标识,即操作***请求内存管理模块分配回收标识所标识的数量的内存页面,内存管理模块根据该内存回收请求消息,在NVM非活动内存页面链表中回收相应数量的内存页面满足操作***的需要。
S102、根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面。
具体地,内存管理模块根据NVM非活动内存页面链表中的非活动内存页面的被写次数的大小,按照非活动内存页面的被写次数由小到大的顺序,依次回收与回收标识相应的个数的非活动内存页面,这样NVM非活动内存页面链表中的被写次数小的非活动内存页面先被回收利用,若被回收的非活动内存页面的被写次数在下一次回收时仍然较小,则继续回收该被写次数较小的非活动内存页面,这样使得在执行内存页面回收过程中,被写次数较小的非活动内存页面总是先被回收,避免了内存回收装置的内存模块因为一些内存页面因被写次数多先被损坏,影响整个内存模块的稳定性和可靠性,提高了NVM内存页面的磨损均衡性。
本发明实施例的内存回收方法,通过接收内存回收请求消息,内存回收请求消息中包含回收标识,回收标识用于表示请求回收的内存页面数量,根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,实现了NVM非活动内存页面被写次数相对小的页面先被回收利用,NVM非活动内存页面被写次数相对大的页面后被回收利用,从而能够使NVM内存页面磨损均衡,提高了存储单元的稳定性和可靠性。
在上述实施例的基础上,进一步地,根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还包括:确定NVM非活动内存页面的被写次数;根据NVM非活动内存页面的被写次数,将NVM非活动内存页面存储至非活动内存页面链表中的相应段中,非活动内存页面链表中包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面。
具体地,内存管理模块根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还可以先确定NVM非活动内存页面的被写次数,例如:内存管理模块可以通过内存控制器缓存中记录的NVM非活动内存页面的被写次数获取非活动内存页面的被写次数,若内存控制器缓存中没有相应非活动内存页面的被写次数的记录时,则还可以从NVM的计数器中获取相应非活动内存页面的被写次数,通过在内存控制器中设置内存控制器缓存,在内存控制器缓存中记录非活动内存页面的被写次数可以减少对NVM的访问次数。内存管理模块还可以定期地将内存控制器缓存中记录的非活动内存页面的被写次数刷新到NVM的计数器中,该NVM的计数器中记录了NVM中所有内存页面的被写次数。
在上述实施例的基础上,进一步地,非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在非活动内存页面链表中排列。
具体地,图2为本发明NVM非活动内存页面链表组织形式实施例一示意图,如图2所示,NVM非活动内存页面链表包括多个NVM非活动内存页面链表段,每个NVM非活动内存页面链表段的表头包含一数值范围,该数值范围表示该段内所有内存页面的被写次数范围,如NVM非活动内存页面链表段A内的所有内存页面的被写次数范围在0到100之间,在NVM非活动内存页面链表段A内所有内存页面的被写次数范围在0到100之间的内存页面按照被写次数从小到大的顺序在链表中排列。
当有新的NVM非活动内存页面移动到NVM非活动内存页面链表中时,通过判断获知待***的NVM非活动内存页面M的被写次数为30,将该NVM非活动内存页面M***到被写次数范围在0到100之间的NVM非活动内存页面链表段A中,并具体***到链表段A的被写次数为20和50的非活动内存页面之间,使得***后链表段A内的内存页面依然按照被写次数从小到大的顺序排列,这样能够保证在页面回收时,总是能从按照被写次数从小到大的顺序回收NVM非活动内存页面链表中的页面。
在上述实施例的基础上,进一步地,根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,包括:在非活动内存页面链表中按照设定被写次数范围从小到大的顺序,回收一个或多个段中的与回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
具体地,图3为本发明内存回收方法实施例二的流程图,如图3所示,本实施例提供的内存回收方法,非活动内存页面链表可以分为包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面,非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在非活动内存页面链表中排列,内存管理模块对NVM中的非活动内存页面进行回收时可以依照下述步骤回收:
301、选择NVM非活动内存页面链表中被写次数范围最小的段。
内存管理模块在NVM非活动内存页面链表中选择NVM非活动内存页面链表中被写次数范围最小的NVM非活动内存页面链表段。
302、从选择的NVM非活动内存页面链表段的头部回收非活动页面。
从选择的非活动内存页面链表段的头部开始,按照非活动内存页面被写次数从小到大的顺序,选择指定数目的内存页面,回收选择的内存页面,使其成为空闲页面从而可以进行再次利用,所述的指定数目可以由操作***设定。
303、判断是否回收了指定数目的内存页面,若是,则执行304;若否,则执行305。
若选择的内存页面的数目能够满足操作***的需求,则此次内存回收操作完成;若选择的内存页面的数目没有满足操作***的需求,则从NVM非活动内存页面链表中的其他段中回收内存页面。
304、结束。
305、判断是否是最后一个NVM非活动内存页面链表段,若是,则执行304;若否,则执行306。
若上述301中选择的NVM非活动内存页面链表段是NVM非活动内存页面链表的最后一个链表段,则此次内存回收操作完成;若不是,则从NVM非活动内存页面链表中的其他段中回收内存页面。
306、选择NVM非活动内存页面链表中被写次数范围次小的段。
选择NVM非活动内存页面链表中被写次数范围较上述301中选择的NVM非活动内存页面链表段的写次数范围小且相邻的NVM非活动内存页面链表段,再执行302。
可选地,在内存回收方法实施例一的基础上,本实施例的内存回收方法在根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还包括:确定NVM非活动内存页面的被写次数;将NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,页面列表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
具体地,内存管理模块在根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还可以先确定NVM非活动内存页面的被写次数,确定NVM非活动内存页面的被写次数的具体过程与上述实施例相同,此处不再赘述。
内存管理模块还可以将NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,页面列表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
在上述实施例的基础上,进一步地,非活动内存页面链表中包括的多个页面组按照建立时间的先后顺序在非活动内存页面链表中排列。
具体地,图4为本发明NVM非活动内存页面链表组织形式实施例二示意图,如图4所示,NVM非活动内存页面链表包括多个页面组,每个页面组按照建立时间的先后顺序在页面链表中排列,例如:页面组O中包含的设定个数的NVM非活动内存页面***到链表中的时间比页面组P中包含的设定个数的NVM非活动内存页面***到链表中的时间相对较早;页面组P中包含的设定个数的NVM非活动内存页面***到链表中的时间比页面组Q中包含的设定个数的NVM非活动内存页面***到链表中的时间相对较早。
页面组O、页面组P和页面组Q中包含的设定个数的NVM非活动内存页面依次按照非活动内存页面的被写次数从小到大顺序排列,当有新的NVM非活动内存页面N移动到非活动内存页面链表中时,通过判断获知待***的NVM非活动内存页面N的被写次数为30,将该NVM非活动内存页面N***到NVM非活动内存页面链表尾部的页面组Q中,并具体***到页面组Q的被写次数为55和20的非活动内存页面之间,使得***后链表段A内的内存页面依然按照被写次数从小到大的顺序排列,这样能够保证在页面回收时,总是能从按照被写次数从小到大的顺序回收页面组中的页面。
在上述实施例的基础上,进一步地,根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的页序回收NVM非活动页面,包括:在非活动内存页面链表中按照建立时间的先后顺序,回收一个或多个页面组中的与回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
具体地,图5为本发明内存回收方法实施例三的流程图,如图5所示,本实施例提供的内存回收方法,页面列表中可以包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面,页面链表中包括的多个页面组按照建立时间的先后顺序在页面链表中排列,内存管理模块对NVM中的非活动内存页面进行回收时可以依照下述步骤回收:
501、从NVM非活动内存页面链表中建立时间最早的页面组开始回收非活动页面。
内存管理模块从NVM非活动内存页面链表段的头部开始,按照非活动内存页面被写次数从小到大的顺序,选择指定数目的内存页面,回收选择的内存页面,使其成为空闲页面从而可以进行再次利用,所述的指定数目可以根据操作***的需求而定。
502、判断是否回收了指定数目的内存页面。
若选择的内存页面的数目能够满足操作***的需求,则此次内存回收操作完成;若选择的内存页面的数目没有满足操作***的需求,则从NVM非活动内存页面链表中的其他页面组中回收内存页面。
503、结束。
504、判断是否到达NVM非活动内存页面链表的尾部。
若已经到达NVM非活动内存页面链表的尾部,则此次内存回收操作完成;若不是,则从NVM非活动内存页面链表中的其他页面组中回收内存页面。
505、从NVM非活动内存页面链表中建立时间的页面组开始回收非活动页面。
选择NVM非活动内存页面链表中建立时间较上述501中选择的页面组的建立时间晚且相邻的页面组,在选择的页面组中按照非活动内存页面被写次数从小到大的顺序回收内存页面,直至回收的内存页面数量满足操作***的需要。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图6为本发明内存回收装置实施例一的流程图,如图6所示,本实施的内存回收装置600包括:接收模块601和内存回收模块602,其中:
接收模块601用于接收内存回收请求消息,内存回收请求消息中包含回收标识,回收标识用于表示请求回收的内存页面数量;
内存回收模块602用于根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的页序回收NVM非活动页面。
本实施例的内存回收装置可以用于执行内存回收方法实施例一的内存回收方法,具体执行过程可以参照内存回收方法实施例一,此处不再赘述。
本实施例的内存回收装置,通过接收模块接收内存回收请求消息,内存回收请求消息中包含回收标识,回收标识用于表示请求回收的内存页面数量,内存回收模块根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,实现了NVM非活动内存页面被写次数相对小的页面先被回收利用,NVM非活动内存页面被写次数相对大的页面后被回收利用,从而能够使NVM内存页面磨损均衡,提高了存储单元的稳定性和可靠性。
在上述实施例的基础上,进一步地,内存回收装置600还可以包括:确定模块和第一***模块。
确定模块,可以用于在内存回收模块根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,确定NVM非活动内存页面的被写次数;
第一***模块,可以用于根据NVM非活动内存页面的被写次数,将NVM非活动内存页面存储至非活动内存页面链表中的相应段中,非活动内存页面链表中包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面。
在上述实施例的基础上,进一步地,非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在非活动内存页面链表中排列。
在上述实施例的基础上,进一步地,内存回收模块具体可以用于在非活动内存页面链表中按照设定被写次数范围从小到大的顺序,回收一个或多个段中的与回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
可选地,在内存回收装置实施例一的基础上,内存回收装置600还可以包括:确定模块和第二***模块,其中:
确定模块,可以用于在内存回收模块根据回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,确定NVM非活动内存页面的被写次数;
第二***模块,可以用于将NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,页面列表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
在上述实施例的基础上,进一步地,非活动内存页面链表中包括的多个页面组按照建立时间的先后顺序在非活动内存页面链表中排列。
在上述实施例的基础上,进一步地,内存回收模块具体可以用于在非活动内存页面链表中按照建立时间的先后顺序,回收一个或多个页面组中的与回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (14)

1.一种内存回收方法,其特征在于,包括:
接收内存回收请求消息,所述内存回收请求消息中包含回收标识,所述回收标识用于表示请求回收的内存页面数量;
根据所述回收标识指示的所述内存页面数量,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收所述数量的NVM非活动页面,其中,被写次数少的非活性内存页面比被写次数多的非活性内存页面先被回收。
2.根据权利要求1所述的方法,其特征在于,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还包括:
确定所述NVM非活动内存页面的被写次数;
根据所述NVM非活动内存页面的被写次数,将所述NVM非活动内存页面存储至非活动内存页面链表中的相应段中,所述非活动内存页面链表中包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面。
3.根据权利要求2所述的方法,其特征在于,所述非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在所述非活动内存页面链表中排列。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述回收标识指示的所述内存页面数量,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收所述数量的NVM非活动页面,包括:
在所述非活动内存页面链表中按照设定被写次数范围从小到大的顺序,回收一个或多个段中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
5.根据权利要求1所述的方法,其特征在于,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,还包括:
确定所述NVM非活动内存页面的被写次数;
将所述NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,所述页面链表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
6.根据权利要求5所述的方法,其特征在于,所述非活动内存页面链表中包括的多个页面组按照建立时间的先后顺序在所述非活动内存页面链表中排列。
7.根据权利要求5或6所述的方法,其特征在于,所述根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面,包括:
在所述非活动内存页面链表中按照建立时间的先后顺序,回收一个或多个页面组中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
8.一种内存回收装置,其特征在于,包括:
接收模块,用于接收内存回收请求消息,所述内存回收请求消息中包含回收标识,所述回收标识用于表示请求回收的内存页面数量;
内存回收模块,用于根据所述回收标识指示的所述内存页面数量,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收所述数量的NVM非活动页面,其中,被写次数少的非活性内存页面比被写次数多的非活性内存页面先被回收。
9.根据权利要求8所述的装置,其特征在于,还包括:
确定模块,用于在所述内存回收模块根据所述回收标识,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收NVM非活动页面之前,确定所述NVM非活动内存页面的被写次数;
第一***模块,用于根据所述NVM非活动内存页面的被写次数,将所述NVM非活动内存页面存储至非活动内存页面链表中的相应段中,所述非活动内存页面链表中包括多个段,每个段用于存储设定被写次数范围的NVM非活动内存页面。
10.根据权利要求9所述的装置,其特征在于,所述非活动内存页面链表中包括的多个段按照对应的设定被写次数范围从小到大的顺序在所述非活动内存页面链表中排列。
11.根据权利要求9或10所述的装置,其特征在于,
内存回收模块,具体用于在所述非活动内存页面链表中按照设定被写次数范围从小到大的顺序,回收一个或多个段中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
12.根据权利要求8所述的装置,其特征在于,还包括:
确定模块,用于在根据所述回收标识指示的所述内存页面数量,按照非易失性存储器NVM非活动内存页面被写次数从小到大的顺序回收所述数量的NVM非活动页面之前,确定所述NVM非活动内存页面的被写次数;
第二***模块,用于将所述NVM非活动内存页面存储至非活动内存页面链表中的最后一个页面组中,所述页面链表中包括多个页面组,每个页面组中包括按照被写次数从小到大顺序排列的设定个数的NVM非活动内存页面。
13.根据权利要求12所述的装置,其特征在于,所述非活动内存页面链表中包括的多个页面组按照建立时间的先后顺序在所述非活动内存页面链表中排列。
14.根据权利要求12或13所述的装置,其特征在于,
内存回收模块,具体用于在所述非活动内存页面链表中按照建立时间的先后顺序,回收一个或多个页面组中的与所述回收标识请求回收的内存页面数量匹配的NVM非活动内存页面。
CN201310057351.1A 2013-02-22 2013-02-22 内存回收方法及装置 Active CN104008061B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201310057351.1A CN104008061B (zh) 2013-02-22 2013-02-22 内存回收方法及装置
KR1020157018254A KR20150095781A (ko) 2013-02-22 2014-01-13 메모리 리클레임 방법 및 장치
JP2015552994A JP6014925B2 (ja) 2013-02-22 2014-01-13 メモリ回収方法および装置
EP14753914.2A EP2921963B1 (en) 2013-02-22 2014-01-13 Memory recycling method and device
PCT/CN2014/070515 WO2014127684A1 (zh) 2013-02-22 2014-01-13 内存回收方法及装置
US14/798,094 US20150317246A1 (en) 2013-02-22 2015-07-13 Memory Reclamation Method and Apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310057351.1A CN104008061B (zh) 2013-02-22 2013-02-22 内存回收方法及装置

Publications (2)

Publication Number Publication Date
CN104008061A CN104008061A (zh) 2014-08-27
CN104008061B true CN104008061B (zh) 2018-01-23

Family

ID=51368721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310057351.1A Active CN104008061B (zh) 2013-02-22 2013-02-22 内存回收方法及装置

Country Status (6)

Country Link
US (1) US20150317246A1 (zh)
EP (1) EP2921963B1 (zh)
JP (1) JP6014925B2 (zh)
KR (1) KR20150095781A (zh)
CN (1) CN104008061B (zh)
WO (1) WO2014127684A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294189B (zh) * 2015-05-25 2020-09-25 中兴通讯股份有限公司 内存碎片整理方法及装置
CN105159777B (zh) * 2015-08-03 2018-07-27 中科创达软件股份有限公司 进程的内存回收方法及装置
CN105404589B (zh) * 2015-10-29 2019-04-30 天脉聚源(北京)教育科技有限公司 一种垃圾回收方法及装置
CN107885666B (zh) 2016-09-28 2021-07-20 华为技术有限公司 一种内存管理方法和装置
KR20180059208A (ko) * 2016-11-25 2018-06-04 삼성전자주식회사 리클레임 제어부를 갖는 메모리 콘트롤러 및 그에 따른 동작 제어 방법
KR20180076765A (ko) 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN106843756B (zh) * 2017-01-13 2019-12-31 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及***
KR20180123385A (ko) * 2017-05-08 2018-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
CN109388520B (zh) * 2017-08-08 2022-02-15 深圳大心电子科技有限公司 数据备份方法、数据恢复方法以及存储控制器
CN108228343B (zh) * 2017-08-21 2020-11-17 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108228344B (zh) * 2017-08-22 2021-08-10 珠海市魅族科技有限公司 多进程内存处理方法及装置、计算机装置及可读存储介质
US11004495B2 (en) 2017-12-18 2021-05-11 SK Hynix Inc. Data storage device and operating method thereof
KR102419036B1 (ko) * 2017-12-18 2022-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN109992402B (zh) * 2017-12-29 2021-07-09 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
US11188250B2 (en) * 2018-10-25 2021-11-30 Micron Technology, Inc. Two-stage hybrid memory buffer for multiple streams
CN111324284B (zh) * 2018-12-14 2024-02-23 兆易创新科技集团股份有限公司 一种存储器
CN111324288B (zh) * 2018-12-14 2024-02-23 兆易创新科技集团股份有限公司 一种存储器
CN110532198B (zh) * 2019-09-09 2023-08-08 成都西山居互动娱乐科技有限公司 一种存储空间分配的方法及装置
CN115757193B (zh) * 2019-11-15 2023-11-03 荣耀终端有限公司 一种内存的管理方法及电子设备
CN113392037B (zh) * 2020-03-12 2024-06-18 深圳市万普拉斯科技有限公司 内存回收方法、装置、计算机设备和存储介质
CN111782559A (zh) * 2020-07-06 2020-10-16 Oppo广东移动通信有限公司 一种页面管理方法、装置及计算机可读存储介质
CN112181863B (zh) * 2020-10-19 2024-06-14 Oppo广东移动通信有限公司 页面回收方法、装置、终端及存储介质
CN113778662B (zh) * 2021-07-28 2022-12-06 荣耀终端有限公司 内存回收方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5577246A (en) * 1992-09-25 1996-11-19 Lucent Technologies Inc. Database memory compaction and reclamation method
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN102243613A (zh) * 2010-05-12 2011-11-16 西部数据技术公司 管理固态存储器中垃圾收集的***和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP3389186B2 (ja) * 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
US6654855B1 (en) * 2000-10-26 2003-11-25 Emc Corporation Method and apparatus for improving the efficiency of cache memories using chained metrics
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
CN100590609C (zh) * 2008-02-22 2010-02-17 浙江大学 一种基于非连续页的动态内存管理方法
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8447915B2 (en) * 2009-07-23 2013-05-21 Hitachi, Ltd. Flash memory device for allocating physical blocks to logical blocks based on an erase count
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN102508783B (zh) * 2011-10-18 2014-04-09 深圳市共进电子股份有限公司 一种避免数据混乱的内存回收方法
CN102880555B (zh) * 2012-07-28 2016-02-24 福州大学 面向实时***的内存算法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5577246A (en) * 1992-09-25 1996-11-19 Lucent Technologies Inc. Database memory compaction and reclamation method
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN102243613A (zh) * 2010-05-12 2011-11-16 西部数据技术公司 管理固态存储器中垃圾收集的***和方法

Also Published As

Publication number Publication date
US20150317246A1 (en) 2015-11-05
KR20150095781A (ko) 2015-08-21
JP6014925B2 (ja) 2016-10-26
EP2921963A1 (en) 2015-09-23
CN104008061A (zh) 2014-08-27
EP2921963B1 (en) 2020-12-02
JP2016507830A (ja) 2016-03-10
EP2921963A4 (en) 2015-10-28
WO2014127684A1 (zh) 2014-08-28

Similar Documents

Publication Publication Date Title
CN104008061B (zh) 内存回收方法及装置
EP2115595B1 (en) Memory device performance enhancement through pre-erase mechanism
CN101354681B (zh) 存储器***、非易失性存储器的磨损均衡方法及装置
CN102081577B (zh) 对Flash存储器的数据存储结构进行数据操作的方法
CN103425597B (zh) 数据储存装置和快闪存储器的区块管理方法
US8219764B2 (en) System and apparatus for enhancing data storage efficiency of a flash memory by reducing time for reorganizing data
US8996791B2 (en) Flash memory device, memory control device, memory control method, and storage system
CN106776362B (zh) 存储器的控制方法及装置
CN104461393A (zh) 一种闪存存储器的混合映射方法
CN103092766A (zh) 一种用于nand flash的均衡损耗实现方法
CN109582593A (zh) 一种基于计算的ftl地址映射方法及数据读、写方法
CN105893275A (zh) 缓存及读取即将写入储存单元的数据的方法以及使用该方法的装置
CN104298606A (zh) 固态存储装置中垃圾搜集动作的控制方法
US9075707B2 (en) Data writing method and data storage device
CN101650972A (zh) 智能卡的非易失性存储器数据更新方法
CN109669889B (zh) 一种轻量型Nor Flash闪存控制方法和装置
CN103310842A (zh) 烧录***及烧录方法
CN110673789A (zh) 固态硬盘的元数据存储管理方法、装置、设备及存储介质
US8954646B2 (en) Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof
CN105988950B (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
CN102763070B (zh) 磁盘缓存的管理方法及装置
CN111143238B (zh) 基于eFlash存储芯片的数据擦写方法及***
CN106951193A (zh) 改善Nand Flash存储性能的方法及其***
CN106021122A (zh) 光模块中闪存数据的写入方法及装置
CN106021124B (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