CN109426436A - 基于可变长大块的垃圾回收方法与装置 - Google Patents
基于可变长大块的垃圾回收方法与装置 Download PDFInfo
- Publication number
- CN109426436A CN109426436A CN201710752321.0A CN201710752321A CN109426436A CN 109426436 A CN109426436 A CN 109426436A CN 201710752321 A CN201710752321 A CN 201710752321A CN 109426436 A CN109426436 A CN 109426436A
- Authority
- CN
- China
- Prior art keywords
- bulk
- physical block
- physical
- blocks
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 113
- 239000010813 municipal solid waste Substances 0.000 title claims abstract description 100
- 238000004064 recycling Methods 0.000 claims abstract description 41
- 238000012795 verification Methods 0.000 claims description 37
- 239000007787 solid Substances 0.000 claims description 31
- 230000004044 response Effects 0.000 claims description 13
- 238000011084 recovery Methods 0.000 claims description 2
- 238000012360 testing method Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 14
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 241001269238 Data Species 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 238000005299 abrasion Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本申请提供了一种基于可变长大块的垃圾回收方法与装置,用以解决相关技术中大块中的物理块不能合理被回收利用的问题。所公开的垃圾回收方法包括:获取待回收大块;确定是否要完整回收大块;在确定不完整回收大块的情况下,保留大块的一个或多个第一物理块,回收除一个或多个第一物理块之外的大块的一个或多个第二物理块。
Description
技术领域
本申请涉及固态存储设备,具体地,涉及基于可变长大块的垃圾回收方法与装置。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享CE(,Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
FTL表包括多个FTL表条目(或称表项)。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。固态存储设备中包括多个NVM芯片。每个NVM芯片包括一个或多个管芯(DIE)或逻辑单元(LUN)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行。
大块包括来自多个逻辑单元(LUN),也称为逻辑单元组,的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图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表中有记录)的数据称为有效数据,而将“垃圾”称为脏数据。将含有脏数据的物理块称为“脏物理块”(或者,将被写满了数据的物理块也称为“脏物理块”),将未被写入数据的物理块称为“空闲物理块”。
发明内容
在固态存储设备的垃圾回收过程中以大块作为垃圾回收过程的基本处理单元,在这种情况下,大块或者被整体回收,或者不被回收。这样,在大块中仅有部分物理块有必要回收的情况下,对大块的整体回收造成了额外的资源开销。
根据本申请的第一方面,提供了根据本申请第一方面的第一垃圾回收方法,包括:获取待回收大块;确定是否要完整回收所述大块;在确定不完整回收所述大块的情况下,保留所述大块的一个或多个第一物理块,回收除所述一个或多个第一物理块之外的所述大块的一个或多个第二物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二垃圾回收方法,其中,获取待回收大块包括:根据以下至少一项参数确定大块的优先级,并根据所述优先级从脏大块集合中选择待回收大块:大块的有效数据量、大块的有效数据占比、大块的擦除次数、大块被记录到脏大块集合的顺序和/或数据被记录到大块的时间。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第三垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中的有效数据量低于第一阈值或所述大块的物理块中的有效数据占比低于第二阈值的情况下,确定完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第四垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的每个物理块中的有效数据量都低于第一阈值或所述大块的每个物理块中的有效数据占比都低于第二阈值的情况下,确定完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第五垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的有效数据量高于第三阈值的物理块的数量低于第一指定值或所述大块的有效数据占比高于第四阈值的物理块数量高于第二指定值的情况下,确定完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第六垃圾回收方法,其中,若无法确定完整回收所述大块,则确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第七垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中的有效数据量不低于第五阈值,所述大块的物理块中的有效数据占比不低于第六阈值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第八垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中的有效数据占比低于第七阈值的物理块的数量占所述大块物理块总数量的比值低于第三指定值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第九垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的物理块中有效数据量低于第八阈值的物理块的数量占所述大块物理块总数量的比值低于第四指定值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十垃圾回收方法,其中,确定是否要完整回收所述大块,包括:在所述大块的待回收数据量大于第九阈值的情况下,确定不完整回收所述大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十一垃圾回收方法,其中,在确定不完整回收所述大块的情况下,将所述第二物理块的有效数据写入空闲大块;擦除所述第二物理块;将擦除后的第二物理块添加到空闲物理块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十二垃圾回收方法,所述方法还包括:将所述大块中存储校验数据的物理块擦除;将所述存储校验数据的物理块添加到空闲物理块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十三垃圾回收方法,所述方法还包括:从空闲物理块集合中获取一个或多个第三物理块;根据从所述大块的所述一个或多个第一物理块读出的数据生成新校验数据,将该新校验数据写入获取的一个或多个第三物理块;更新在脏大块集合中指示所述大块的第一元素,在该第一元素中记录属于所述大块的所述一个或多个第一物理块的地址,以及所述一个或多个第三物理块的地址。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十四垃圾回收方法,所述方法还包括:在所述第一元素中还记录所述一个或多个第三物理块存储所述大块的校验数据。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十五垃圾回收方法,所述方法还包括:响应于第一大块的一个或多个第四物理块故障,从空闲物理块集合中获取m+n个空闲物理块,其中,m为所述一个或多个第四物理块中存储用户数据的物理块的数量,n为所述第一大块中存储校验数的物理块的数量;从属于所述第一大块的物理块中读取数据,根据所述第一大块的RAID配置计算所述一个或多个第四物理块的数据,将计算得到的数据写入所述m+n个空闲物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十六垃圾回收方法,所述方法还包括:更新在脏大块集合中指示所述第一大块的第二元素;在所述第二元素中记录所述第一大块的所有物理块地址、擦除次数和/或大块创建时间。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十七垃圾回收方法,所述方法还包括:从空闲物理块集合中获取空闲物理块;使用获取到的空闲物理块构建大块并生成该大块的元数据;根据构建的大块的元数据生成空闲大块集合的元素,将该元素添加到空闲大块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十八垃圾回收方法,所述空闲物理块集合包括多个子集合,各个子集合分别记录源于同一LUN的空闲物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第十九垃圾回收方法,所述子集合记录物理块的地址、或描述LUN的物理块是否处于空闲状态。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十垃圾回收方法,所述空闲物理块集合或所述子集合中的空闲物理块按照擦除次数排序。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十一垃圾回收方法,所述方法还包括:为向空闲大块集合中的空闲大块写入数据,从所述空闲大块集合中获取空闲大块,向获取到的空闲大块的物理块地址列表所指向的物理块写入数据,更新指示该空闲大块的元素的时间戳;响应于从所述空闲大块集合中获取空闲大块,将指示该空闲大块的元素从所述空闲大块集合中移除,响应于该元素所指示的空闲大块被写满数据,将该元素或根据该元素的内容生成的指示脏大块的元素添加到脏大块集合中。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十二垃圾回收方法,其中,在确定完整回收所述大块的情况下,将所述大块的有效数据写入空闲大块;擦除所述大块的所有物理块;将所述大块添加到空闲大块集合。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十三垃圾回收方法,所述方法还包括:响应于重建脏大块表,扫描固态存储设备的物理块;根据被扫描的第一物理块中记录的元数据,获得与第一物理块属于同一大块的所有物理块;获取被扫描的所述第一物理块以及与该第一物理块属于同一大块的其余物理块的元数据中的序号,在所述其余物理块的序号均不大于所述第一物的物理块的序号的情况下,根据所述第一物理块的元数据创建脏大块表的元素。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十四垃圾回收方法,其中,在所述其余物理块中存在序号大于第一物理块序号的物理块时,取具有最大的序号的物理块的元数据中记录的所有物理块构建大块,并更新脏大块表的元素。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十五垃圾回收方法,其中,所述大块包括多个物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十六垃圾回收方法,所述方法还包括:在存储设备初始化或被格式化时,将多个逻辑单元(LUN)的物理块组织为具有相同数量物理块、各物理块具有相同LUN内块号的多个大块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十七垃圾回收方法,其中,所述大块具有不同数量的物理块和/或所述大块的各物理块具有不同的LUN内块号。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十八垃圾回收方法,其中,所述大块的每个物理块中记录有所述大块的元数据,该元数据包括:所述大块的所有物理块地址、所述大块的RAID配置以及存储所述大块校验数据的物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第二十九垃圾回收方法,其中,所述大块的元数据还包括以下至少一项:所述大块的擦除次数、所述大块被写入数据的时间或所述大块被创建的时间。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第三十垃圾回收方法,其中,所述脏大块集合的元素指示大块之一;脏大块集合的元素记录其所指示的大块的所有物理块地址、大块的RAID配置以及存储大块校验数据的物理块。
根据本申请的第一方面的第一垃圾回收方法,提供了根据本申请第一方面的第三十一垃圾回收方法,其中,所述空闲大块集合的元素指示大块之一;空闲大块集合的元素记录其所指示的大块的所有物理块地址、大块的RAID配置以及存储大块校验数据的物理块。
根据本申请的第二方面,提供了根据本申请第二方面的垃圾回收装置,包括:获取模块,用于获取待回收大块;确定模块,用于确定是否要完整回收所述大块;回收模块,用于在确定不完整回收所述大块的情况下,保留所述大块的一个或多个第一物理块,回收除所述一个或多个第一物理块之外的所述大块的一个或多个第二物理块。
根据本申请的第三方面,提供了根据本申请第三方面的固态存储设备,包括控制器与非易失存储器芯片,所述控制器执行根据本申请提供的任一种垃圾回收方法。
根据本申请的第四方面,提供了根据本申请第四方面的存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得所述固态存储设备执行根据本申请提供的任意一种垃圾回收方法。
本申请实施例提供的方案,在固态存储设备垃圾回收的过程中,在确定不完整回收大块的情况下,回收大块中部分物理块,避免了仅能完整回收或不回收大块导致的大块中的部分需被回收的物理块无法被回收的问题,使得大块中的物理块得以被合理的回收,提高了资源的利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是相关技术中固态存储设备的框图;
图2是相关技术中大块的示意图;
图3A是根据本申请实施例的大块的数据组织的示意图;
图3B是根据本申请的实施例的大块的元数据示意图;
图4A是根据本申请一示例性实施例示出的脏大块集合的示意图;
图4B是根据本申请一示例性实施例示出的空闲大块结合的示意图;
图5是垃圾回收过程的示意图;
图6是根据本申请实施例的垃圾回收方法的流程图;
图7是根据本申请一实施例的垃圾回收过程的流程图;
图8是根据本申请实施例的大块被不完整回收的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3A是根据本申请实施例的大块的数据组织的示意图。如图3A所示,固态存储设备的NVM芯片提供了N+1个LUN。将LUN的物理块组织为大块310、大块320与大块330。根据图3A的实施例中,大块310、大块320与大块330各自包括不同数量的物理块。相应地,大块310、大块320与大块330各自具有不同的RAID配置,例如,大块310是N+1 RAID配置,其中,N个物理块存储数据,而一个物理块存储校验信息;大块320是(N-1)+1 RAID配置,其中,N-1个物理块存储数据,而一个物理块存储校验信息;大块330是N+1 RAID配置,其中,N个物理块存储数据,而一个物理块存储校验信息。大块310的包括N+1个物理块,图3A中的每个LUN为大块310提供一个物理块,以及每个物理块在各自的LUN内具有相同的块号。大块320包括N个物理块,图3A中,LUN 0到LUN(N-1)的每个为大块320提供1个物理块,以及每个物理块在各自的LUN内具有相同的块号。大块330包括N+1个物理块,图3A中的每个LUN为大块310提供一个物理块,以及每个物理块在各自的LUN内具有不同的块号。
在本申请的一个实施例中,固态存储设备初始化时,或者被格式化时,将LUN的物理块组织为相同规格的大块(例如,具有相同数量的物理块,各个物理块具有相同的LUN内块号)。随着大块被使用,部分大块被重构为具有不同规格的大块(例如,具有不同数量的物理块,和/或各个物理块具有不同的LUN内块号)。在本实施例中,由于大块可以具有相同或不同数量的物理块,大块中的各个物理块可具有相同或不同的块号,使得大块的组织更加灵活。
图3B是根据本申请的实施例的大块的元数据示意图。如图3B所示,物理块B0-0、物理块B0-1、物理块B0-2、物理块B0-3、……物理块B0-(N-1)与物理块B0-N是构成大块310(参见图3A)的N+1个物理块。在构成大块310的每个物理块中,还在物理块内指定的存储空间记录用于大块310的元数据(M 0)。元数据(M 0)记录了构成大块310的所有物理块的地址(包括物理块所处的LUN,以及LUN内的块号)、大块的RAID配置与存储大块的RAID校验数据的物理块。可选地,元数据(M 0)还可以记录大块310的擦除次数、大块被写入数据的时间与大块被创建的时间。
在一种实施方式中,构成大块的所有物理块记录相同的元数据。在又一种实施方式中,构成大块的所有物理块记录不同的元数据(例如,物理块所属大块的所有物理块地址、大块的RAID配置、存储大块的RAID校验数据的物理块、大块被创建的时间、物理块的擦除次数与物理块被写入数据的时间)。
图4A展示了根据本申请实施例的脏大块集合。脏大块集合包括多个元素,每个元素记录了固态存储设备的脏大块之一。脏大块是已经被写入数据的大块。图4A的实施例中,脏大块集合元素410与脏大块集合元素412各自指示脏大块之一。元素410与元素412中,各自记录所指示的大块的所有物理块地址列表、大块的RAID配置信息(可选地,包括校验数据的存储位置)、大块被擦除的次数(和/或大块的每个物理块被擦除的次数)、大块被创建时的时间戳等。
固态存储设备工作时,脏大块集合被记录在DRAM 110或控制部件104内部的存储器中(参见图1)。响应于固态存储设备停止工作(例如,关机或断电),将脏大块集合存储到固态存储设备的NVM芯片中。
通过脏大块集合的元素(例如元素410)的物理块地址列表,可访问构成该元素所指示大块的所有物理块。在通过大块进行数据重构时,需要使用构成大块的物理块地址,从大块的有效物理块中读取数据,以恢复出故障物理块存储的数据。其中,元素的RAID配置信息用于指示大块的容错能力,并识别出现部分物理块故障的大块是否有机会进行数据恢复。元素中的大块被擦除次数用于指示大块的寿命。在进行垃圾回收(GC)时,使用元素中的大块被擦除次数选择待回收的大块。元素的时戳指示大块被创建的先后顺序,还指示大块中的数据被保存的时间,并可用于垃圾回收(GC)过程。
构成大块的多个物理块,可能具有不同数量的有效数据。回收有效数据量低的物理块是有利的,以少量的数据搬移为代价,获得了可用于写入数据的空闲物理块。回收有效数据量高的物理块是不利的,会导致垃圾回收过程中写入数据量的增加。
图4B展示了根据本申请实施例的空闲大块集合。空闲大块集合包括多个元素,每个元素记录了固态存储设备的空闲大块之一。空闲大块是尚未被写入数据的大块。图4B的实施例中,空闲大块集合元素420与空闲大块集合元素422各自指示空闲大块之一。元素420与元素422中各自记录所指示大块的所有物理块的地址列表、大块的RAID配置信息(可选地,包括校验数据的存储位置)、大块被擦除的次数(和/或大块的每个物理块被擦除的次数)以及大块被创建时的时间戳等。
根据本申请的实施例,为向空闲大块集合中的空闲大块写入数据,从空闲大块集合中获取空闲大块(例如,由元素420所指示),向获取到的空闲大块的物理块地址列表所指向的各个物理块写入数据,以及更新元素420的时戳,以记录大块被最早写入数据的时间。
响应于从空闲大块集合中获取的空闲大块(例如,由元素420所指示),将指示该空闲大块的元素420从空闲大块集合中移除。以及响应于元素420所指示的空闲大块被被写满数据,将元素420或根据元素420的内容生成的指示脏大块的元素添加到脏大块集合中。
本申请的实施例还包括空闲物理块集合。作为举例,空闲物理块集合中记录可用于构成大块但尚未用于构成大块的固态存储设备的物理块。例如,空闲物理块集合包括多个子集合,每个子集合记录源于一个LUN的空闲物理块。可选地,子集合记录物理块的地址,或用位图描述LUN的物理块是否处于空闲状态。可选地或进一步地,空闲物理块集合或子集合中的空闲物理块按擦除次数排序,使得在从空闲物理块集合或子集合中获取空闲物理块时,可指定取出擦除次数最大、最小或具有平均擦除次数的物理块。可以理解地,平均擦除次数可以指擦除次数范围,例如,距离空闲物理块的擦除次数的平均值在指定阈值内的擦除次数范围。
固态存储设备执行垃圾回收(GC)过程以回收无效数据。图5展示了垃圾回收过程的示意图。大块0与大块1被写入了数据。大块0的物理页510、512、514和516等由网格框所指示的物理页在FTL表中没有记录,其上的数据是脏数据。大块0的物理页530、532、534与536等由空白方框指示的物理页在FTL表中有记录,其上的数据是有效数据。大块1的物理页520、522、524与526等由网格框所指示的物理页上的数据是脏数据。大块1的物理页544、542、546与548等由空白框所指示的物理页上的数据是有效数据。图5中,用网格指示的物理页所容纳的数据是脏数据,而用空白方框指示的物理页所容纳的数据是有效数据。
为进行垃圾回收,扫描脏大块(例如,大块0与大块1),将其中的有效数据读出并写入空闲大块2,以及在FTL表中记录有效数据的物理页地址的变化。在所有的有效数据都搬移到大块2后,擦除被扫描的大块0与大块1,从而使大块0与大块1变为空闲大块。
固态存储设备还进行磨损均衡过程,以使固态存储设备的多个NVM芯片的多个物理块经历大体上相同的擦除次数。为实施垃圾回收,“GC模块”(例如,实现于控制部件120或其中的CPU或控制器)从脏大块集合中获取脏大块之一,从空闲大块集合中获取空闲大块之一。扫描脏大块,将其中的有效数据写入空闲大块。将获取的脏大块擦除,并在空闲大块集合中记录擦除后的大块。
图6展示了根据本申请实施例的垃圾回收方法的流程图,该方法用于固态存储设备的垃圾回收。如图6所示,该方法包括如下步骤:
步骤601:获取待回收大块;步骤602:确定是否要完整回收大块;步骤603:在确定不完整回收大块的情况下,保留大块的一个或多个物理块,回收除一个或多个第一物理块之外的大块的一个或多个物理块。
在一个示例性实施例中,步骤601中根据优先级从脏大块集合中选择待回收大块。作为举例,根据大块的有效数据量、大块的有效数据占比、大块的擦除次数、大块被记录到脏大块集合的顺序和/或数据被记录到大块的时间中至少一项参数确定脏大块集合中的待回收大块的优先级。
在步骤602中,依据垃圾回收的收益与代价确定是否要完整回收大块。垃圾回收的收益是被回收的物理块,而代价是垃圾回收过程中搬移有效数据带来的数据写入量。依据收益与代价的关系,从完整回收大块与不完整回收大块之中进行选择。例如,根据大块中有效数据量和/或有效数据占比来判断是否完整回收大块,以确保回收有效数据量高的物理块,保留有效数据量低的物理块。保留的物理块可以是有效数据量高于阈值的物理块,或者是有效数据占比高于阈值的物理块;回收的物理块则可以是有效数据量不高于阈值的物理块或有效数据占比不高于阈值物理块。在一个例子中,在大块的物理块中的有效数据量低于阈值或大块的物理块中的有效数据占比低于阈值的情况下,确定完整回收大块。在大块的物理块中的有效数据量不低于阈值,大块的物理块中的有效数据占比不低于阈值的情况下,确定不完整回收大块。在又一个例子中,在大块的每个物理块中的有效数据量都低于阈值或大块的每个物理块中的有效数据占比都低于阈值的情况下,确定完整回收大块。
在另一个例子中,在大块的有效数据量高于阈值的物理块的数量低于阈值或大块的有效数据占比高于阈值的物理块数量高于阈值的情况下,确定完整回收大块。在大块的物理块中的有效数据占比低于阈值的物理块的数量占大块物理块总数量的比值低于阈值的情况下,确定不完整回收大块。或者,在大块的物理块中有效数据量低于阈值的物理块的数量占大块物理块总数量的比值低于阈值的情况下,确定不完整回收大块。
在依然又一个例子中,在大块的待回收数据量大于阈值的情况下,确定不完整回收大块。
需要说明的是,在与设定阈值进行比较时,比较对象不同,设定阈值也不同,阈值可以根据实际需求进行设置。
进一步地,在确定不完整回收大块的情况下,将回收的物理块的有效数据写入空闲大块;擦除被回收的物理块;将擦除后的物理块添加到空闲物理块集合。
进一步地,响应于大块被不完整回收,还更新脏大块集合中指示被不完整回收的大块的元素,例如,从元素中删除被回收的一个或多个物理块的地址,以及在元素中记录更新后的存储校验数据的物理块的地址。
进一步地,由于大块的部分物理块被回收,大块原有的存储校验数据的物理块失效,擦除该物理块。可选地,还将被擦除的物理块添加到空闲物理块集合。
空闲物理块集合中的物理块被用于构建大块。根据本申请的实施例还提供了构建大块的操作(例如,由get_xblock()所指示)。通过构建大块的操作,从空闲物理块集合中获取指定数量的物理块以构建大块,生成大块的元数据。元数据中指示大块的RAID配置(包括校验数据的存储位置)、记录各物理块的地址、记录各物理块的擦除次数或记录大块的擦除次数。可选地,还根据大块的元数据,生成空闲大块集合的元素,并将元素添加到空闲大块集合中。依然可选地,根据大块的元数据,向大块写入数据,在大块被写满后,生成脏大块集合的元素,并将元素添加到脏大块集合中。依然可选地,为构建大块,从指定数量的空闲物理块的子集合的每个中获取物理块,用获取的物理块构建大块。进一步地,执行构建大块的操作时,指定所创建大块的寿命或擦除次数,作为响应,从空闲物理块集合中获取具有所指定的寿命或擦除次数(或擦除次数范围)的物理块构建大块。
根据本申请的实施例,还提供向空闲物理块集合释放大块的操作。通过释放大块的操作,将指定大块的所有物理块添加到空闲物理块集合。可选地,释放大块的操作还擦除所释放的物理块。可选地,指定的大块是来自脏大块集合或空闲大块集合的大块。
根据本申请的实施例,提供向空闲物理块集合释放物理块的操作。通过释放物理块的操作,将指定物理块添加到空闲物理块集合。可选地,释放物理块的操作还包括擦除所释放的物理块。
根据本申请的实施例,还提供重构大块的操作(例如,由rebuild_xblock()所指示)。为实施重构大块的操作,需指示待重构的大块。作为举例,待重构的大块中,部分物理块因发生故障或被执行垃圾回收操作而不再属于待重构的大块。在这种情况下,在重构大块的操作中,识别属于大块的物理块和/或不再属于大块的物理块。在一个例子中,大块X1的存储校验数据的m个(m是正整数)物理块不再属于大块X1。从空闲物理块集合中获取m个空闲物理块,从大块X1的其他物理块中读出数据,按大块X1的RAID配置生成校验数据,并写入所获取的m个空闲物理块,以及更新在脏大块集合中的指示大块X1的元素,在该元素中记录属于大块X1的所有物理块(用获取的m个物理块的地址替换不再属于大块X1的m个物理块的地址),以及更新存储校验数据的物理块的地址。可选地,还更新大块X1的擦除次数和/或大块创建时间。
在另一个例子中,大块X2的存储用户数据的n个(n是正整数)物理块不再属于大块X2。为实施重构大块的操作,从空闲物理块集合中获取n+m(m是正整数)个空闲物理块,大块X2中的m个物理块存储校验数据。由于n个物理块不再数据大块X2,也需更新大块X2的校验数据。从大块X2的除了n个不再属于大块X2的物理块中读取数据,利用RAID技术恢复n个物理块的数据,将恢复得到的数据写入获取的n个物理块。以及将大块X2的存储校验数据的物理块读取校验数据,并写入获取的m个物理块。以及更新在脏大块集合的指示大块X2的元素,在该元素中记录属于大块X2的所有物理块(用获取的n+m个物理块的地址替换不再属于大块X2的n个物理块的地址与大块X2原来的m个存储校验数据的物理块的地址),以及更新的存储校验数据的物理块的地址。可选地,还更新大块X2的擦除次数和/或大块创建时间。
根据本申请的实施例,还提供删除物理块的操作。为实施删除物理块的操作,需指示待删除的物理块,并响应于删除物理块的操作的执行,从空闲物理块集合中移除待删除的物理块。作为举例,在识别出物理块故障时,从空闲物理块集合中删除故障的物理块。
图7是根据本申请又一实施例的垃圾回收过程的流程图,以下结合该流程图对垃圾回收过程中所涉及到的操作进行描述。
步骤710:为进行垃圾回收,从脏大块集合中选择待回收的大块。脏大块集合中的大块在垃圾回收过程中具有不同的优先级。例如,根据大块的有效数据量、有效数据占比、擦除次数和/或数据被记录的时间等确定优先级。并根据优先级从脏大块集合中选择待回收的大块。
步骤720:扫描大块,确定是否要完整回收大块。作为举例,扫描大块的各个物理块的有效数据量,回收有效数据占比低于阈值的物理块。作为一个例子,若大块中的所有物理块的有效数据量或有效数据占比均低于阈值,则完整回收该大块;若大块中的部分物理块的有效数据量或有效数据占比不低于阈值,则保留这部分有效数据量大或有效数据占比较高的物理块,而不完整回收大块。作为又一个例子,由于部分回收(不完整回收)大块时,要重新生成校验数据,因而,仅在大块中有效数据量小或有效数据占比较低的物理块的数量占大块的物理块的总数的比例较低时(例如,小于10%,或者,对于N+1的RAID配置,小于1-1/(N*p),其中p是大块的有效数据占比或平均有效数据占比),才不完整回收大块;若大块中有效数据量小或有效数据占比较低的物理块的数量占大块的物理块的总数的比例较高,则即使存在若干有效数据量大或有效数据占比较高的物理块,也依然完整回收该大块。
需要指出的,大块中的记录校验数据的物理块无须被回收,也不利用记录校验数据的物理块识别是否需要完整回收大块。
步骤730:若判断要完整回收大块,扫描待回收的大块,将待回收大块的有效数据写入空闲大块,以及将待回收大块的有效数据都写入空闲大块;以及步骤735:擦除待回收大块的所有物理块,并将擦除后的大块记录在空闲大块集合中。
步骤740:若判断要不完整回收大块,获取待回收大块中待回收的一个或多个物理块。例如,获取待回收大块中,有效数据量或有效数据占低于阈值的物理块。
步骤742:将待回收物理块中的有效数据写入空闲大块;步骤744:擦除待回收的物理块,并将擦除的物理块记录在空闲物理块集合中。
由于大块中的部分物理块被擦除,破坏了大块的RAID配置,需要为大块重新生成校验数据。
步骤746:从待回收大块的剩余物理块(未在步骤644被擦除的物理块)(包括大块的用于记录校验数据的物理块)中读出数据,根据RAID配置对应的校验数据生成规则(例如,计算异或),重新生成校验数据,并将校验数据写入从空闲物理块集合获取的空闲物理块。
步骤748:以及更新待回收大块在脏大块集合中的对应元素,将获取的被写入了校验数据的物理块的地址记录在该对应元素中,从而该物理块称为待回收大块的组成部分。以及还擦除待回收大块原来的用于记录校验数据的物理块,将擦除后的物理块添加到空闲物理块集合。
更新后的脏大块集合元素指示待回收的大块包括的物理块为,待回收大块的剩余物理块,去除待回收大块的原来用于记录校验数据的物理块,添加了用于记录重新生成的校验数据的物理块。
可选地,在用于记录重新生成的校验数据的物理块中记录更新后的大块元数据(例如,该物理块所属大块的所有物理块地址、大块的RAID配置、存储大块的RAID校验数据的物理块、大块被创建的时间、物理块的擦除次数与物理块被写入数据的时间)。
图8是根据本申请实施例的大块被不完整回收的示意图。根据图8的实施例,大块包括物理块B0-0、B0-1、B0-2、……B0-(N-1)与B0-N,这些物理块的每个中记录相同的大块元数据M 0。大块的RAID配置为N+1。在垃圾回收过程中,仅物理块B0-2的有效数据量少于阈值,物理块B0-2被回收。由于物理块B0-2被回收,记录大块的校验数据的物理块B0-N失效,从大块的除被回收的物理块B0-2之外的其他所有物理块(包括物理块B0-N)读出数据,利用读出的数据根据大块的RAID配置生成校验数据,并写入新获取的空闲物理块B0-N’。以及生成大块的新校验数据M0’,将校验数据M0’写入新获取的空闲物理块B0-N’。可以理解地,大块中记录元数据M0以及更新元数据,不是必须的。
在元数据M0’中记录大块包括物理块B0-0、B0-1、……B0-(N-1)与B0-N’,大块的RAID配置为(N-1)+1。可选地,元数据M0’中保留元数据M0的大块擦除次数与大块创建时间(或被写入数据的时间)。依然可选地,元数据M0’中记录大块的每个物理块的擦除次数与被写入数据的时间。进一步地,在元数据M0’中还记录时间戳,以指示M0’被写入物理块的时间。以及在元数据M0中也记录有指示其被写入物理块时间的时间戳。可选地,采用单调递增的值替代时间戳。依然可选地,在元数据M0’中记录序号,并使得元数据M0’的序号大于物理块B0-0、B0-1……B0-(N-1)的任务一个的元数据M0中的序号。以及也更新脏大块集合中同该大块对应的元素。
在本申请的实施例中,脏大块表被记录在NVM芯片中。固态存储设备上电或启动时,读出脏大块表,依据表中的元素,获得同元素对应的大块所包括的所有物理块。在一些情况下,NVM芯片中记录的脏大块表不完整或被破坏,需要扫描NVM芯片的物理块以重构脏大块表。
在一个实施例中,为重构脏大块表,对于被扫描的一个物理块B,依据其中记录的元数据(例如M0),获得同物理块B属于相同大块的所有物理块(例如,B1、B2、……BN),元数据M0记录了序号S0。从物理块(B1、B2、……BN)的每一个的元数据中获取序号,若获取的任何序号都不大于S0,则物理块B的元数据M0有最新的有效元数据,依据M0创建脏大块表的元素。若从物理块(B1、B2、……BN)获取的任何序号大于S0,则提取物理块(B1、B2、……BN)的每一个的元数据中值最大的序号(例如,Si),用序号Si所在的元数据Mi中记录的所有物理块构建大块,并更新脏大块表的元素。
进一步地,寻找值最大的序号的过程可以是递归的。例如从元数据Mi中记录的所有物理块中再次寻找值最大的序号(例如,Sj),用序号Sj所在的元数据Mi中记录的所有物理块构建大块,并更新脏大块表的元素。
进一步地,若元数据Mi或Mj中记录的部分物理块已损坏,则从扫描的物理块中提取值次大的序号(例如,Si-1或Sj-1),用序号Si-1所在的元数据Mi-1(或序号Sj-1所在的元数据Mj-1)中记录的所有物理块构建大块,并更新脏大块表的元素。
根据本申请的实施例还提供了一种固态存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种垃圾回收方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种垃圾回收方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种垃圾回收方法,其特征在于,包括:
获取待回收大块;
确定是否要完整回收所述大块;
在确定不完整回收所述大块的情况下,保留所述大块的一个或多个第一物理块,回收除所述一个或多个第一物理块之外的所述大块的一个或多个第二物理块。
2.根据权利要求1所述的方法,其特征在于,获取待回收大块包括:
根据以下至少一项参数确定大块的优先级,并根据所述优先级从脏大块集合中选择待回收大块:
大块的有效数据量、大块的有效数据占比、大块的擦除次数、大块被记录到脏大块集合的顺序和/或数据被记录到大块的时间。
3.根据权利要求1或2所述的方法,其特征在于,确定是否要完整回收所述大块,包括:
在所述大块的物理块中的有效数据量低于第一阈值或所述大块的物理块中的有效数据占比低于第二阈值的情况下,确定完整回收所述大块。
4.根据权利要求1-3任意一项所述的方法,其中,在确定不完整回收所述大块的情况下,
将所述第二物理块的有效数据写入空闲大块;
擦除所述第二物理块;
将擦除后的第二物理块添加到空闲物理块集合。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括:
将所述大块中存储校验数据的物理块擦除;
将所述存储校验数据的物理块添加到空闲物理块集合。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
从空闲物理块集合中获取一个或多个第三物理块;
根据从所述大块的所述一个或多个第一物理块读出的数据生成新校验数据,将该新校验数据写入获取的一个或多个第三物理块;
更新在脏大块集合中指示所述大块的第一元素,在该第一元素中记录属于所述大块的所述一个或多个第一物理块的地址,以及所述一个或多个第三物理块的地址。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:
响应于第一大块的一个或多个第四物理块故障,从空闲物理块集合中获取m+n个空闲物理块,其中,m为所述一个或多个第四物理块中存储用户数据的物理块的数量,n为所述第一大块中存储校验数的物理块的数量;
从属于所述第一大块的物理块中读取数据,根据所述第一大块的RAID配置计算所述一个或多个第四物理块的数据,将计算得到的数据写入所述m+n个空闲物理块。
8.根据权利要求1-7任意一项所述的方法,其特征在于,所述方法还包括:
为向空闲大块集合中的空闲大块写入数据,从所述空闲大块集合中获取空闲大块,向获取到的空闲大块的物理块地址列表所指向的物理块写入数据,更新指示该空闲大块的元素的时间戳;
响应于从所述空闲大块集合中获取空闲大块,将指示该空闲大块的元素从所述空闲大块集合中移除,响应于该元素所指示的空闲大块被写满数据,将该元素或根据该元素的内容生成的指示脏大块的元素添加到脏大块集合中。
9.一种垃圾回收装置,其特征在于,包括:
获取模块,用于获取待回收大块;
确定模块,用于确定是否要完整回收所述大块;
回收模块,用于在确定不完整回收所述大块的情况下,保留所述大块的一个或多个第一物理块,回收除所述一个或多个第一物理块之外的所述大块的一个或多个第二物理块。
10.一种固态存储设备,包括控制器与非易失存储器芯片,其特征在于,所述控制器执行根据权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710752321.0A CN109426436B (zh) | 2017-08-28 | 2017-08-28 | 基于可变长大块的垃圾回收方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710752321.0A CN109426436B (zh) | 2017-08-28 | 2017-08-28 | 基于可变长大块的垃圾回收方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109426436A true CN109426436A (zh) | 2019-03-05 |
CN109426436B CN109426436B (zh) | 2024-04-12 |
Family
ID=65501828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710752321.0A Active CN109426436B (zh) | 2017-08-28 | 2017-08-28 | 基于可变长大块的垃圾回收方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109426436B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181274A (zh) * | 2019-07-01 | 2021-01-05 | 北京忆恒创源科技有限公司 | 提升存储设备性能稳定性的大块的组织方法及其存储设备 |
CN112612722A (zh) * | 2020-12-28 | 2021-04-06 | 深圳忆联信息系统有限公司 | 变长的数据管理方法、装置、计算机设备及存储介质 |
US11397672B2 (en) | 2017-11-29 | 2022-07-26 | Beijing Memblaze Technology Co., Ltd | Deallocating command processing method and storage device having multiple CPUs thereof |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799534A (zh) * | 2012-07-18 | 2012-11-28 | 上海宝存信息科技有限公司 | 基于固态存储介质的存储系统及方法、冷热数据识别方法 |
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN105701024A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种存储设备及其垃圾数据回收的方法 |
US20160179386A1 (en) * | 2014-12-17 | 2016-06-23 | Violin Memory, Inc. | Adaptive garbage collection |
US9489296B1 (en) * | 2012-10-17 | 2016-11-08 | Western Digital Technologies, Inc. | Methods, devices and systems for hardware-based garbage collection in solid state drives |
CN106681934A (zh) * | 2014-03-19 | 2017-05-17 | 华为技术有限公司 | 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器 |
-
2017
- 2017-08-28 CN CN201710752321.0A patent/CN109426436B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799534A (zh) * | 2012-07-18 | 2012-11-28 | 上海宝存信息科技有限公司 | 基于固态存储介质的存储系统及方法、冷热数据识别方法 |
US9489296B1 (en) * | 2012-10-17 | 2016-11-08 | Western Digital Technologies, Inc. | Methods, devices and systems for hardware-based garbage collection in solid state drives |
CN106681934A (zh) * | 2014-03-19 | 2017-05-17 | 华为技术有限公司 | 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器 |
US20160179386A1 (en) * | 2014-12-17 | 2016-06-23 | Violin Memory, Inc. | Adaptive garbage collection |
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN105701024A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种存储设备及其垃圾数据回收的方法 |
Non-Patent Citations (2)
Title |
---|
AYUMI SOGA等: "NAND flash aware data management system for high-speed SSDs by garbage collection overhead suppression" * |
岳丽华;刘沾沾;金培权;向小岩;: "高效的闪存空间分配与回收方法" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11397672B2 (en) | 2017-11-29 | 2022-07-26 | Beijing Memblaze Technology Co., Ltd | Deallocating command processing method and storage device having multiple CPUs thereof |
CN112181274A (zh) * | 2019-07-01 | 2021-01-05 | 北京忆恒创源科技有限公司 | 提升存储设备性能稳定性的大块的组织方法及其存储设备 |
CN112612722A (zh) * | 2020-12-28 | 2021-04-06 | 深圳忆联信息系统有限公司 | 变长的数据管理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109426436B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105573681B (zh) | 一种ssd盘片内部raid组建方法及系统 | |
CN109558333A (zh) | 具有可变额外存储空间(op)的固态存储设备命名空间 | |
CN106469122B (zh) | 有效数据合并方法、存储器控制器与存储器储存装置 | |
CN106448737A (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
CN109086219B (zh) | 去分配命令处理方法及其存储设备 | |
CN106557432B (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
CN109558334B (zh) | 垃圾数据回收方法及固态存储设备 | |
CN109144885A (zh) | 固态存储设备的垃圾回收方法与固态存储设备 | |
CN109976664B (zh) | 固态存储设备的日志数据组织 | |
CN109164976A (zh) | 利用写缓存优化存储设备性能 | |
CN110389709A (zh) | 顺序流检测与数据预读 | |
CN109977032A (zh) | 垃圾数据回收控制方法及其装置 | |
CN109426436A (zh) | 基于可变长大块的垃圾回收方法与装置 | |
CN107797938A (zh) | 加快去分配命令处理的方法与存储设备 | |
CN110275757A (zh) | 利用系统抽象层提供多协议存储设备 | |
CN109840048A (zh) | 存储命令处理方法及其存储设备 | |
CN107229580A (zh) | 顺序流检测方法与装置 | |
CN109815157A (zh) | 编程命令处理方法与装置 | |
CN108877862A (zh) | 页条带的数据组织以及向页条带写入数据的方法与装置 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
CN106205707A (zh) | 存储器装置 | |
CN110515861A (zh) | 处理刷写命令的存储设备及其方法 | |
CN110096452A (zh) | 非易失随机访问存储器及其提供方法 | |
CN108984108A (zh) | 用于调度io命令的方法与固态存储设备 | |
CN114968849A (zh) | 提高编程缓存利用率的方法及其设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |