CN111338975A - 面向多流的垃圾回收方法及其存储设备 - Google Patents

面向多流的垃圾回收方法及其存储设备 Download PDF

Info

Publication number
CN111338975A
CN111338975A CN201811566457.3A CN201811566457A CN111338975A CN 111338975 A CN111338975 A CN 111338975A CN 201811566457 A CN201811566457 A CN 201811566457A CN 111338975 A CN111338975 A CN 111338975A
Authority
CN
China
Prior art keywords
chunk
data
stream
active
free
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.)
Pending
Application number
CN201811566457.3A
Other languages
English (en)
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.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201811566457.3A priority Critical patent/CN111338975A/zh
Publication of CN111338975A publication Critical patent/CN111338975A/zh
Pending legal-status Critical Current

Links

Images

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/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本申请涉及面向多流的垃圾回收方法及其存储设备。本申请提供的垃圾回收方法,包括:获取一个或多个流,建立流与活动大块的绑定关系;根据绑定关系,将流中的数据写入同流对应的活动大块。

Description

面向多流的垃圾回收方法及其存储设备
技术领域
本申请涉及存储设备,尤其涉及在支持多流的存储设备中的垃圾回收方法及其存储设备。
背景技术
图1展示了存储设备的框图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small ComputerSystem Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备100。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口110、控制部件120、一个或多个NVM芯片130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)140。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口110可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件120用于控制在接口110、NVM芯片130以及DRAM 140之间的数据传输,还用于存储管理、主机逻辑地址到NVM芯片的物理地址映射、擦除均衡、坏块管理等。控制部件120可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件120可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件120也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件120的硬件来处理IO(Input/Output)命令。控制部件120还可以耦合到DRAM 140,并可访问DRAM 140的数据。在DRAM存储FTL表和/或缓存的IO命令的数据。
控制部件120包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.as hx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。
NVM存储介质上通常按页来存储和读取数据。而按块来擦除数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。可选地,访问存储设备的主机提供FTL。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。通常FTL表的数据项记录了存储设备中以数据页为单位的地址映射关系。
图2示出了大块的示意图。大块包括来自多个逻辑单元(称为逻辑单元组)的每个的物理块。优选的,每个逻辑单元为大块提供一个物理块。作为举例,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个物理块,来自16个逻辑单元(LUN)的每一个。在图2的例子中,大块0包括来自16个逻辑单元(LUN)的每个的物理块0,大块1包括来自每个逻辑单元(LUN)的物理块1。也可以有多种其他方式来构造大块。
作为一种可选的方式,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。图2中,物理页P0-0、物理页P0-1……与物理页P0-x构成了页条带0,其中物理页P0-0、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。
当逻辑页被重复写入数据,FTL表条目中记录逻辑页地址与最新的物理页地址的对应关系,而曾经被写入数据但不再被引用(例如,FTL表中没有记录)的物理页地址中记录的数据成为“垃圾”(数据)。将已经被写入数据,且被引用(例如,在FTL表中有记录)的数据称为有效数据,而将“垃圾”称为脏数据。将含有脏数据的物理块称为“脏物理块”,将未被写入数据的物理块称为“空闲物理块”。
存储设备执行垃圾回收(GC)过程以回收无效数据。
图3展示了垃圾回收过程的示意图。物理块0与物理块1被写入了数据。物理块0的物理页310、312、314和316等由网格框所指示的物理页在FTL表中没有记录,其上的数据是脏数据。物理块0的物理页330、332、334与336等由空白方框指示的物理页在FTL表中有记录,其上的数据是有效数据。物理块1的物理页320、322、324与326等由网格框所指示的物理页上的数据是脏数据。物理块1的物理页344、342、346与348等由空白框所指示的物理页上的数据是有效数据。图3中,用网格指示的物理页所容纳的数据是脏数据,而用空白方框指示的物理页所容纳的数据是有效数据。
为进行垃圾回收,扫描脏物理块(例如,物理块0与物理块1),将其中的有效数据读出并写入空闲物理块2,以及在FTL表中记录有效数据的物理页地址的变化。在物理块的所有的有效数据都搬移到物理块2后,擦除被扫描的物理块0与物理块1,从而使物理块0与物理块1变为空闲物理块。
图4展示了垃圾回收方法的示意图。
脏物理块集合410包括存储设备的部分或所有NVM芯片的脏物理块。空闲物理块集合420包括固态存储设备的部分或所有NVM芯片的空闲物理块。
为实施垃圾回收,“垃圾回收”模块430(例如,实现于控制部件120或其中的CPU或控制器)从脏物理块集合410中获取脏物理块,从空闲物理块集合420中获取空闲物理块。扫描脏物理块,将其中的有效数据写入空闲物理块。在获取的脏物理块中的有效数据都被搬移到空闲物理块后,将脏物理块擦除,并在空闲物理块集合中记录擦除后的物理块。
脏物理块集合410和空闲物理块集合420可以是链表、线性表或其他用于表示集合的数据结构。在集合中记录物理块的地址,以访问物理块。
可选地,以大块为单位(替代以物理块为单位)实施垃圾回收。
存储设备还进行磨损均衡操作以使得存储设备在使用过程中各个物理块经历大体上相同的被擦除次数,从而降低个别物理块的寿命耗尽对存储设备的寿命产生不利影响。
发明内容
由于实施了垃圾回收与磨损均衡过程,数据被反复写入NVM芯片,增加了数据写入量,降低了存储设备的寿命。以及向NVM写入数据的过程占用了存储设备的读写带宽,并会影响用户体验到的性能。需要进一步改进垃圾回收与磨损均衡过程,降低垃圾回收与磨损均衡过程产生的额外写入量。
为达到上述目的,根据本申请的第一方面,提供了根据本申请第一方面的第一垃圾回收方法,包括:获取一个或多个流,建立流与活动大块的绑定关系;根据绑定关系,将流中的数据写入同流对应的活动大块中。
根据本申请的第一方面的第一垃圾回收方法,其中,流包括一个或多个用户数据流和一个或多个GC流,其中,用户数据流来自提供给存储设备的IO命令要写入的数据,GC流来自从脏大块回收的数据。
根据本申请的第一方面的第二垃圾回收方法,其中,根据IO命令访问的地址空间或IO命令的特征,为IO命令要写入的数据分配流。
根据本申请的第一方面的第二垃圾回收方法,其中,当活动大块的存储空间被写满后,设置活动大块为关闭状态,以及获取空闲大块作为活动大块。
根据本申请的第一方面的第一至第四垃圾回收方法之一,其中,在流与活动大块之间维护静态和/或动态的绑定关系。
根据本申请的第一方面的第一至第五垃圾回收方法之一,其中,依据流与活动大块的绑定关系,从指定的流获取数据,并根据获取的数据所属的流选择指定的大块,将获取的数据写入该指定的活动大块。
根据本申请的第一方面的第一至第五垃圾回收方法之一,其中,获取指定的活动大块,以及依据流与活动大块的绑定关系选择同该活动大块对应的流,从该被选择的流获取数据写入该指定的活动大块。
根据本申请的第一方面的第一至第七垃圾回收方法之一,其中,还包括根据脏大块的特征或选择脏大块的策略而将从该脏大块回收的数据分配到不同的流。
根据本申请的第一方面的第八垃圾回收方法,其中,为从具有最小擦除次数的脏大块、具有最大年龄的脏大块、存在可靠性预警的脏大块回收的数据分配第一GC流。
根据本申请的第一方面的第八垃圾回收方法,其中,为从具有最高优先级的脏大块回收的数据分配第二GC流。
根据本申请的第一方面的第八垃圾回收方法,其中,擦除次数是组成脏大块的所有物理块的平均擦除次数或总擦除次数。
根据本申请的第一方面的第九垃圾回收方法,其中,脏大块的年龄指其被写入数据时间与当前时间的间隔,或者指其上记录的每份数据被写入的时间与当前时间的间隔的平均值。
根据本申请的第一方面的第十垃圾回收方法,其中,脏大块的优先级是脏大块的擦除次数或脏大块的擦除次数与脏大块集合中所有脏大块的平均擦除次数的差与脏大块有效数据量的函数。
根据本申请的第一方面的第八垃圾回收方法,其中,选择脏大块的策略包括,若空闲大块的数据大于阈值,选择回收优先级最高的脏大块。
根据本申请的第一方面的第八垃圾回收方法,其中,选择脏大块的策略包括,若存储设备中各大块的最大擦写次数与平均擦写次数的差大于阈值、最大擦写次数与最小擦写次数的差大于阈值和/或平均擦写次数与最小擦写次数的差大于阈值,选择擦除次数最小的脏大块或选择最大年龄的脏大块。
根据本申请的第一方面的第一至第十五垃圾回收方法之一,其中,响应于活动大块被写满,选择空闲大块作为备选大块或活动大块。
根据本申请的第一方面的第一至第十六垃圾回收方法之一,其中,响应于有新的空闲大块被释放到空闲大块集合,若空闲大块集合中存在其擦写次数远离平均擦写次数的空闲大块,则用该空闲大块替换备用大块,或者用该空闲大块替换尚未被写入数据的活动大块。
根据本申请的第一方面的第一至第十七垃圾回收方法之一,其中,响应于有新的空闲大块被释放到空闲大块集合,若该新的空闲大块的擦写次数远离平均擦写次数的空闲大块,则用该新的空闲大块替换备用大块,或者用该新的空闲大块替换尚未被写入数据的活动大块。
根据本申请的第一方面的第十八垃圾回收方法,其中,若该新的空闲大块的擦写次数远大于平均擦写次数,则用该新的空闲大块替换尚未被写入数据的用于承载用户数据流的活动大块或备用大块;或者,若该新的空闲大块的擦写次数远小于平均擦写次数,则用该新的空闲大块替换尚未被写入数据的用于承载GC流的活动大块或备用大块。
根据本申请的第一方面的第一至第十九垃圾回收方法之一,其中,响应于备用大块作为备用大块的时间超过阈值,则选择空闲大块替换备用大块。
根据本申请的第一方面的第十六至第二十垃圾回收方法之一,其中,选择擦写次数最小的空闲大块作为用于承载用户数据流的第一活动大块。
根据本申请的第一方面的第十六至第二十一垃圾回收方法之一,其中,选择擦写次数最接近平均擦写次数的空闲大块作为用于承载用户数据流的第二活动大块。
根据本申请的第一方面的第二十一或第二十二垃圾回收方法,其中,用于承载用户数据流的第一活动大块用于承载相对热的用户数据流;和/或用于承载用户数据流的第二活动大块用于承载相对冷的用户数据流。
根据本申请的第一方面的第十六至第二十垃圾回收方法之一,其中,选择擦写次数最大的空闲大块作为用于承载GC流的第一活动大块或用于承载GC流的第二活动大块。
根据本申请的第一方面的第十六至第二十垃圾回收方法之一,其中,选择擦写次数最大的空闲大块作为用于承载GC流的第一活动大块。
根据本申请的第一方面的第二十五垃圾回收方法,其中,选择擦写次数最接近平均擦写次数的空闲大块作为用于承载GC流的第二活动大块。
根据本申请的第一方面的第十六至第二十六垃圾回收方法之一,其中,还包括若活动大块作为活动大块的时间过长,则将一个或多个用户数据流映射到该活动大块。
根据本申请的第一方面的第十六至第二十七垃圾回收方法之一,其中,还包括若用于承载GC流的第一活动大块或用于承载GC流的第二活动大块作为活动大块的时间过长,则将一个或多个用户数据流映射到该活动大块。
根据本申请的第一方面的第一至第二十八垃圾回收方法之一,其中,还包括:控制各个流的数据写入NVM芯片的比例;或控制在指定时间或单位时间内各个流的数据被写入NVM芯片的比例;或控制在指定时间或单位时间内GC流与用户数据流写入NVM芯片的数据量之比不超过指定范围。
根据本申请的第一方面的第二十九垃圾回收方法,其中,依据空闲大块集合中空闲大块的数量小于阈值,允许GC流的数据被写入NVM芯片或提高GC流的数据占写入NVM芯片的数据量的占比。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述垃圾回收方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。
图1为存储设备的框图;
图2为大块的示意图;
图3为现有技术的垃圾回收过程的示意图;
图4为现有技术的垃圾回收方法的示意图;
图5是根据本申请实施例的垃圾数据回收过程的示意图;
图6是根据本申请又一实施例的垃圾数据回收的示意图;
图7是根据本申请再一实施例的垃圾数据回收的示意图;
图8展示了根据本申请依然再一实施例的垃圾数据回收的示意图;
图9展示了根据本申请依然另一实施例的垃圾数据回收的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图5是根据本申请实施例的垃圾数据回收的示意图。
根据本申请的实施例,待写入存储设备的数据被标注为一个或多个流。作为举例,图5中展示了4个流,分别是用户数据流(S1)、用户数据流(S2)、GC流(Sg1)与GC流(Sg2),其中用户数据流是提供给存储设备的IO命令要写入的数据,GC流是来自垃圾回收过程中从脏大块回收的数据。
数据被标注为不同的流。例如,主机提供给存储设备的IO命令指示了流,根据IO命令访问的地址空间或命令空间而为IO命令绑定到流,根据IO命令的特征将IO命令绑定到流等。在申请号为201811154584.2、发明名称为“用于多流、开放通道存储设备的演进的自动流跟踪”的中国专利申请提供了将IO命令绑定到流的技术方案,在申请号为201811123110.1、发明名称为“存储设备的智能数据分流与流跟踪”的中国专利申请中也提供了将IO命令绑定到流的技术,将上述两件中国专利申请的全文通过引用合并于此。
待写入存储设备的属于一个或多个流的数据被写入多个大块(称为活动大块)。图5展示了4个活动大块,大块(U1)、大块(U2)、大块(GU1)与大块(GU2)。活动大块的存储空间被写满后,活动大块被设置为关闭状态,以及获取新的空闲大块来作为活动大块。例如,大块(U1)与大块(U2)是用于承载用户数据流的大块,而大块(GU1)与大块(GU2)是用于承载GC流的大块。
<流-大块>映射单元510将流与活动大块绑定。<流-大块>映射单元510在流与活动大块之间维护静态和/或动态的绑定关系。
作为举例,<流-大块>映射单元510将用户数据流绑定到大块(U1)和/或大块(U2),将GC流绑定到大块(GU1)和/或大块(GU2)。依然作为举例,<流-大块>映射单元510将代表热数据的用户数据流(S1)绑定到大块(U1),而将代表冷数据的用户数据流(S2)绑定到大块(U2)。作为又一个例子,<流-大块>映射单元510将来自存储冷数据的脏大块回收的数据(GC流(Sg1))绑定到大块(GU1),而将从其他脏大块回收的数据(GC流(Sg2))绑定到大块(GU2)。依然可选地,流的数量不同于活动大块的数量,一个或多个流被绑定到相同的大块,和/或一个流被绑定到多个大块。
写入管理单元520依据从<流-大块>映射单元510获取的流与数据的绑定关系,从指定的流获取数据,并根据获取的数据所属的流选择指定的大块,将指示介质接口530将获取的数据写入该指定的活动大块。或者写入管理单元520获取指定的活动大块,以及依据从<流-大块>映射单元510获取的流与数据的绑定关系选择同该活动大块对应的流,从该流获取数据写入该活动大块。
完成了有效数据回收的脏大块被擦除,并作为空闲大块被释放。经释放的空闲大块被记录在例如空闲大块集合。
响应于例如活动大块的存储空间被写满,活动大块被设置为关闭状态,并从空闲大块集合中获取空闲大块,作为活动大块(大块(U1)、大块(U2)、大块(GU1)和/或与大块(GU2))。
图6是根据本申请又一实施例的垃圾数据回收的示意图。
脏大块集合中有多个脏大块。以多种策略选择垃圾回收过程要回收的脏大块(640)。例如,策略642指示选择具有最小擦除次数的脏大块,策略644指示选择具有最大年龄的脏大块,策略646指示选择存在可靠性预警的脏大块,而策略648指示选择具有最高优先级的脏大块。
可靠性预警指示脏大块中存储的数据可能将出现错误,而需要被回收,例如,在对大块的一个或多个物理页读出数据时出现了不可纠正错误,大块中的数据被读取的次数超出阈值,大块中的数据被存储在大块中的时间超出阈值等。
对于脏大块,其擦除次数是组成脏大块的所有物理块的平均擦除次数或总擦除次数。脏大块的年龄指其被写入数据时间与当前时间的间隔,或者指其上记录的每份数据被写入的时间与当前时间的间隔的平均值。
可选地,拥有擦除次数低且有效数据量低(或有效数据量占比低)的脏大块具有高的优先级。例如,优先级是脏大块的有效数据量和脏大块的擦除次数的函数。根据脏大块的擦除次数(或擦除次数与平均擦除次数的差)和有效数据量,得到优先级P。可选地,脏大块的优先级(P)是脏大块的擦除次数或脏大块的擦除次数与脏大块集合中所有脏大块的平均擦除次数的差(记为ΔPE)与脏大块有效数据量(记为V)的函数,即P=f(ΔPE,V)。在另一个例子中,P=f(PE,V)+r,其中r为随机数。
选择策略之一以选择待回收的脏大块。根据选择脏大块的策略为从脏大块读出的有效数据设置流。例如,将从根据策略648获取的具有最高优先级的脏大块读出的数据设置为GC流(Sg2),将从根据其他策略获取的脏大块读出的数据设置为GC流(Sg1)。
例如,从策略642、策略644与策略646中轮流选择,作为选择待回收块的策略。作为另一个例子,每种策略具有不同的权重,以加权轮转方式,选择策略642、策略644与策略646之一。
图7是根据本申请再一实施例的垃圾数据回收的示意图。
根据图7的实施例,对于用户IO命令写入的数据,根据IO命令的特征将IO命令绑定到流。例如,访问被访问频率高的地址空间的IO命令要写入的数据被绑定到用户数据流(S1),访问被访问频率低的地址空间的IO命令要写入的数据被绑定到用户数据流(S2)(740)。而对于从多种脏大块回收的有效数据,根据有效数据所来自的脏大块的特征或被选择的策略而被绑定到不同的GC流(Sg1和/或Sg2)。
选择策略之一以选择待回收的脏大块。策略的选择还同指定条件的发生相关。例如,响应于存储设备(空闲大块集合)中空闲大块的数量小于阈值(741),而通过策略742选择回收优先级最高的脏大块。又例如,响应于存储设备中各大块的最大擦写次数与平均擦写次数的差大于阈值、最大擦写次数与最小擦写次数的差大于阈值和/或平均擦写次数与最小擦写次数的差大于阈值(743),而通过策略744选择擦除次数最小的脏大块和/或策略745选择最大年龄的脏大块。再例如,通过策略746选择数据可靠性预警的脏大块。
以及可以理解的,同一时刻,选择脏大块的策略可能是一种或多种,从而GC流(Sg1)与GC流(Sg2)未必总是有待写入的数据。类似地,用户数据流(S1)与用户数据流(S2)也未必总是存在。
图8展示了根据本申请依然再一实施例的垃圾数据回收的示意图。
完成了有效数据回收的脏大块被擦除,并作为空闲大块被释放。经释放的空闲大块被记录在例如空闲大块集合840。
从空闲大块集合840选择空闲大块842,作为备用空闲大块或活动大块。备用空闲大块或活动大块被设置了不同的用途,例如大块(U1)与大块(U2)是用于承载用户数据流的大块,而大块(GU1)与大块(GU2)是用于承载GC流的大块。选取空闲大块时,根据用途的不同,而采用不同的选取标准。例如,为了得到活动大块(U1),而选择擦写次数最低的空闲大块,为了得到活动大块(U2)而选择擦写次数接近平均值的空闲大块,为了得到活动大块(GU1)而选择擦写次数最高的空闲大块,为了得到活动大块(GU2)而选择擦写次数接近平均值的空闲大块。作为又一个例子,为了得到活动大块(U1、U2)而选择擦写次数最低的空闲大块,而为了得到活动大块(GU1、GU2)而选择擦写次数最高的空闲大块。
采用同选择空闲大块相同的策略而选择备用大块。备用大块分为不同的类型,例如,一种类型的备用空闲大块用作活动大块(U1、U2)的备用大块,而另一种类型的备用空闲大块用作活动大块(GU1、GU2)的备用大块。
在活动大块被写满后,备用大块作为活动大块得以立即被写入数据,而无须等待再次选择空闲大块。
响应于活动大块被写满,而选择空闲大块作为备用大块或活动大块(842)。进一步地,响应于有新的空闲大块被释放到空闲大块集合,而启动对备用大块和/或活动大块的检查(由从835指向842的箭头指示)。在对备用大块和/或活动大块的检查中,若空闲大块集合中存在其擦写次数远离平均擦写次数的空闲大块,则用该空闲大块替换备用大块(由从846指向840的箭头指示),或者用该空闲大块替换尚未被写入数据的活动大块。可选地,响应于有新的空闲大块被释放到空闲大块集合,若该新的空闲大块的擦写次数远离平均擦写次数的空闲大块,则用该空闲大块替换备用大块,或者用该空闲大块替换尚未被写入数据的活动大块。可以理解地,若该新的空闲大块的擦写次数远大于平均擦写次数(例如差值大于阈值),则用该空闲大块替换尚未被写入数据的用于承载用户数据流的活动大块(U1和/或U2)或备用大块;若该新的空闲大块的擦写次数远小于平均擦写次数(例如差值小于阈值),则用该空闲大块替换尚未被写入数据的用于承载GC流的活动大块(GU1和/或GU2)或备用大块。
<流-大块>映射单元810还检查活动大块作为活动大块的时间是否过长。例如,大块(GU2)因长期得不到来自GC流的数据而存在时间超过了阈值,则<流-大块>映射单元810改变映射规则,将一个或多个用户数据流映射到大块(GU2),以将大块(GU2)尽快写满。将活动大块被写满,称为“关闭”活动大块(850)。
图9展示了根据本申请依然另一实施例的垃圾数据回收的示意图。
从空闲大块集合940选择空闲大块(950),作为备用空闲大块或活动大块。备用空闲大块或活动大块被设置了不同的用途,例如大块(U1)与大块(U2)是用于承载用户数据流的大块,而大块(GU1)与大块(GU2)是用于承载GC流的大块。
根据图9展示的实施例,在多种时机(951、952、953与954)与采用多种策略(955、956与957)选择空闲大块。
选择空闲大块的时机包括,例如,活动大块的一个或多个被写满,例如活动大块(U1或U2)被写满(951)或活动大块(GU1或2)被写满(952),而选择新的空闲大块作为活动大块,或者用备用大块作为活动大块,而选择新的空闲大块作为备用大块。选择空闲大块的时机还包括,响应于有新的空闲大块被释放(953)(添加到空闲大块集合)而选择空闲大块用于替换备用大块或尚未被写入数据的活动大块。选择空闲大块的时机还包括,备用大块作为备用大块的时间过长(954),例如超出阈值,而选择空闲大块用于替换该备用大块,以有机会根据更新的状态选择备用大块或活动大块。
选择空闲大块的策略包括,例如,为用于热数据的流或者为提供活动大块(U1)而选择擦写次数最小的空闲大块(955),为用于冷数据的流或者为提供活动大块(U2)而选择擦写次数最大的空闲大块,为GC流或者为提供活动大块(GU1)/活动大块(GU2)而选择擦写次数最大的空闲大块(956),和/或选择擦写次数远离(过大或过小)平均擦写次数的空闲大块(957)以促进磨损均衡。
<流-大块>映射单元910还检查活动大块作为活动大块的时间是否过长(912)。例如,活动大块(GU2)因长期得不到来自GC流的数据而存在时间超过了阈值,则<流-大块>映射单元910改变映射规则,将一个或多个用户数据流映射到大块(GU2),以将大块(GU2)尽快写满。将活动大块被写满,称为“关闭”活动大块。
写入管理单元920还控制各个流的数据被写入到NVM芯片的情况是否发生和/或数量的比例(921)。例如,在指定时间或单位时间内GC流写入NVM芯片的数据量占总写入NVM芯片数据量的比例不超过10%;或者,控制在指定时间或单位时间内GC流与用户数据流写入NVM芯片的数据量之比不超过指定范围(922)。可选地,写入管理单元920还依据空闲大块集合中空闲大块的数量小于阈值(923),而允许GC流的数据被写入NVM芯片或提高GC流的数据占写入NVM芯片的数据量的占比。可选地,写入管理单元还控制在指定时间或单位时间内各个流的数据被写入NVM芯片的比例,例如,限制GC流(Sg1)与GC流(Sg2)写入NVM芯片的数据量之比不超过指定范围。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种垃圾回收方法,其特征在于,包括:
获取一个或多个流,建立流与活动大块的绑定关系;
根据绑定关系,将流中的数据写入同流对应的活动大块中。
2.如权利要求1所述的垃圾回收方法,其特征在于,流包括一个或多个用户数据流和一个或多个GC流,其中,用户数据流来自提供给存储设备的IO命令要写入的数据,GC流来自从脏大块回收的数据。
3.如权利要求2所述的垃圾回收方法,其特征在于,当活动大块的存储空间被写满后,设置活动大块为关闭状态,以及获取空闲大块作为活动大块。
4.如权利要求1所述的垃圾回收方法,其特征在于,在流与活动大块之间维护静态和/或动态的绑定关系。
5.如权利要求4所述的垃圾回收方法,其特征在于,依据流与活动大块的绑定关系,从指定的流获取数据,并根据获取的数据所属的流选择指定的大块,将获取的数据写入该指定的活动大块。
6.如权利要求1所述的垃圾回收方法,其特征在于,响应于活动大块被写满,选择空闲大块作为备选大块或活动大块。
7.如权利要求1所述的垃圾回收方法,其特征在于,响应于有新的空闲大块被释放到空闲大块集合,若空闲大块集合中存在其擦写次数远离平均擦写次数的空闲大块,则用该空闲大块替换备用大块,或者用该空闲大块替换尚未被写入数据的活动大块。
8.如权利要求1所述的垃圾回收方法,其特征在于,响应于备用大块作为备用大块的时间超过阈值,则选择空闲大块替换备用大块。
9.如权利要求1所述的垃圾回收方法,其特征在于,还包括:控制各个流的数据写入NVM芯片的比例;或控制在指定时间或单位时间内各个流的数据被写入NVM芯片的比例;或控制在指定时间或单位时间内GC流与用户数据流写入NVM芯片的数据量之比不超过指定范围。
10.一种存储设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1-9之一所述的垃圾回收方法。
CN201811566457.3A 2018-12-19 2018-12-19 面向多流的垃圾回收方法及其存储设备 Pending CN111338975A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811566457.3A CN111338975A (zh) 2018-12-19 2018-12-19 面向多流的垃圾回收方法及其存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811566457.3A CN111338975A (zh) 2018-12-19 2018-12-19 面向多流的垃圾回收方法及其存储设备

Publications (1)

Publication Number Publication Date
CN111338975A true CN111338975A (zh) 2020-06-26

Family

ID=71183232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811566457.3A Pending CN111338975A (zh) 2018-12-19 2018-12-19 面向多流的垃圾回收方法及其存储设备

Country Status (1)

Country Link
CN (1) CN111338975A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817879A (zh) * 2021-01-11 2021-05-18 成都佰维存储科技有限公司 垃圾回收方法、装置、可读存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975878A (zh) * 2016-05-30 2016-09-28 中国科学院信息工程研究所 基于Nand Flash闪存的安全存储方法及系统
CN106201906A (zh) * 2016-07-11 2016-12-07 浪潮(北京)电子信息产业有限公司 一种用于闪存的冷热数据分离方法及系统
CN107665156A (zh) * 2016-07-27 2018-02-06 西部数据技术公司 多流日志重播

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975878A (zh) * 2016-05-30 2016-09-28 中国科学院信息工程研究所 基于Nand Flash闪存的安全存储方法及系统
CN106201906A (zh) * 2016-07-11 2016-12-07 浪潮(北京)电子信息产业有限公司 一种用于闪存的冷热数据分离方法及系统
CN107665156A (zh) * 2016-07-27 2018-02-06 西部数据技术公司 多流日志重播

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817879A (zh) * 2021-01-11 2021-05-18 成都佰维存储科技有限公司 垃圾回收方法、装置、可读存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN106448737B (zh) 读取闪存数据的方法、装置以及固态驱动器
US10282286B2 (en) Address mapping using a data unit type that is variable
US8046526B2 (en) Wear leveling method and controller using the same
US20220326872A1 (en) Method for selecting a data block to be collected in gc and storage device thereof
CN109558334B (zh) 垃圾数据回收方法及固态存储设备
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
CN109144885B (zh) 固态存储设备的垃圾回收方法与固态存储设备
CN109558333B (zh) 具有可变额外存储空间的固态存储设备命名空间
KR20210028729A (ko) 논리적 대 물리적 테이블 프래그먼트들
US20170090782A1 (en) Writing management method and writing management system for solid state drive
US11966618B2 (en) Purposeful super device imbalance for ZNS SSD efficiency
US11960753B2 (en) Solution for super device imbalance in ZNS SSD
US11537293B2 (en) Wear leveling methods for zoned namespace solid state drive
KR101146082B1 (ko) 비휘발성 메모리 저장 장치 및 비휘발성 메모리 저장 장치의 성능 향상 방법
CN112181274B (zh) 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN111338975A (zh) 面向多流的垃圾回收方法及其存储设备
CN110096452B (zh) 非易失随机访问存储器及其提供方法
US11853565B2 (en) Support higher number of active zones in ZNS SSD
CN107688435B (zh) Io流调节方法与装置
CN111290974A (zh) 用于存储设备的缓存淘汰方法与存储设备
US20230075329A1 (en) Super Block Allocation Across Super Device In ZNS SSD
CN112181276B (zh) 提升存储设备服务质量的大块构造、分配方法及其存储设备
KR20160119607A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN109840219B (zh) 大容量固态存储设备的地址转换系统与方法
CN110554970A (zh) 显著降低写放大的垃圾回收方法及存储设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination