CN114968833A - 提高企业级固态存储设备顺序写性能的方法与存储设备 - Google Patents

提高企业级固态存储设备顺序写性能的方法与存储设备 Download PDF

Info

Publication number
CN114968833A
CN114968833A CN202111553503.8A CN202111553503A CN114968833A CN 114968833 A CN114968833 A CN 114968833A CN 202111553503 A CN202111553503 A CN 202111553503A CN 114968833 A CN114968833 A CN 114968833A
Authority
CN
China
Prior art keywords
data
chunk
blocks
storage device
dirty
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
CN202111553503.8A
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.)
Suzhou Qiheng Rongzhi Information Technology Co ltd
Original Assignee
Suzhou Qiheng Rongzhi Information 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 Suzhou Qiheng Rongzhi Information Technology Co ltd filed Critical Suzhou Qiheng Rongzhi Information Technology Co ltd
Priority to CN202111553503.8A priority Critical patent/CN114968833A/zh
Publication of CN114968833A publication Critical patent/CN114968833A/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/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

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可以是链表、线性表或其他用于表示集合的数据结构。在集合中记录物理块的地址,以访问物理块。
可选地,以大块为单位(替代以物理块为单位)实施垃圾回收。
存储设备还进行磨损均衡操作以使得存储设备在使用过程中各个物理块经历大体上相同的被擦除次数,从而降低个别物理块的寿命耗尽对存储设备的寿命产生不利影响。为了获得磨损均衡的效果,并且降低垃圾回收过程中引入的写放大,通常选择待回收的脏物理块的策略是选择脏物理块集合中寿命较小(被擦除次数较小)的脏物理块或脏大块,以及进一步还选择其上有效数据量小的脏物理块或脏大块。
在申请号为2018115664573、发明名称为“面向多流的垃圾回收方法及其存储设备”的中国专利申请中,提供的垃圾回收方法,将来自垃圾回收的数据与用户写入的数据区分为不同的流,不同的流可被写入相同或不同的物理块、大块或逻辑单元组。在申请号为2019104502264、发明名称为“用于存储设备的垃圾回收强度预测及补偿”的中国专利申请中,提供的垃圾回收方法预测未来的垃圾回收操作的强度,并根据预测结果提前补偿垃圾回收操作以降低垃圾回收操作对存储设备性能的影响。
发明内容
由于实施了垃圾回收与磨损均衡过程,数据被反复写入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芯片的数据量的占比。
根据本申请的第二方面,提供了根据本申请第二方面的第一用于存储设备的垃圾回收方法,包括:根据一种或多种策略选择待回收的一个或多个第一块;据第一块所记录的数据的年龄排除一个或多个第二块作为待回收块;对所述一个或多个第一块种排除了一个或多个第二块后余下的块进行垃圾回收。
根据本申请第二方面的第一用于存储设备的垃圾回收方法,提供了根据本申请第二方面的第二用于存储设备的垃圾回收方法,其中第二块所记录的数据的年龄小于指定阈值。
根据本申请第二方面的第一或第二用于存储设备的垃圾回收方法,提供了根据本申请第二方面的第三用于存储设备的垃圾回收方法,还包括:响应于识别出存储设备当前处于指定的场景下,和/或所述一个或多个第一块记录的信息指示了指定的场景,才根据第一块所记录的数据的年龄排除一个或多个第二块作为待回收块。
根据本申请第二方面的第三用于存储设备的垃圾回收方法,提供了根据本申请第二方面的第四用于存储设备的垃圾回收方法,其中所述指定的场景包括,所述存储设备正在处理多个并发的写入顺序流,所述多个并发的写入顺序流各自访问相同或邻近的存储空间,所述存储设备正在处理单一的顺序流,所述存储设备正在处理一个或多个随机流,所述一个或多个随机流各自访问的地址空间小于指定阈值,和/或由外部指示的场景。
根据本申请第二方面的第一至第四用于存储设备的垃圾回收方法之一,提供了根据本申请第二方面的第五用于存储设备的垃圾回收方法,其中所述一种或多种策略包括选择具有最少有效数据量的块或者有效数据量小于指定阈值的块作为所述一个或多个第一块。
根据本申请第二方面的第一至第五用于存储设备的垃圾回收方法之一,提供了根据本申请第二方面的第六用于存储设备的垃圾回收方法,还包括:根据脏块对应的信息确定所述一种或多种策略的各自权重,以及根据权重综合所述一种或多种策略选择待回收的一个或多个第一块。
根据本申请第二方面的第一至第六用于存储设备的垃圾回收方法之一,提供了根据本申请第二方面的第七用于存储设备的垃圾回收方法,还包括:获取一个或多个流,建立流与活动大块的绑定关系;根据绑定关系,将流中的数据写入同流对应的活动大块中;其中,流包括一个或多个用户数据流和一个或多个GC流,其中,用户数据流来自提供给存储设备的IO命令要写入的数据,GC流来自从所述余下的块回收的数据。
根据本申请第二方面的第一至第七用于存储设备的垃圾回收方法之一,提供了根据本申请第二方面的第八用于存储设备的垃圾回收方法,还包括:响应于活动大块的存储空间被写满,在被写满的活动大块上记录同所写入的数据对应的所述指定的场景,以及设置活动大块为关闭状态。
根据本申请第二方面的第一至第八用于存储设备的垃圾回收方法之一,提供了根据本申请第二方面的第九用于存储设备的垃圾回收方法,其中,所述一种或多种策略包括,依据无效数据量选择块、依据擦写次数选择块和/或依据年龄选择块;以及根据所述余下的块的特征和所述一种或多种策略而将从所述余下的块回收的数据分配到不同的流。
根据本申请的第三方面,提供了根据本申请第三方面的第一计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述垃圾回收方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。
图1为存储设备的框图;
图2为大块的示意图;
图3为现有技术的垃圾回收过程的示意图;
图4为现有技术的垃圾回收方法的示意图;
图5A是根据本申请实施例的垃圾数据回收过程的示意图;
图5B展示了根据本申请实施例的数据写入的示意图;
图5C是根据本申请另一实施例的垃圾数据回收过程的示意图;
图6是根据本申请又一实施例的垃圾数据回收的示意图;
图7是根据本申请再一实施例的垃圾数据回收的示意图;
图8展示了根据本申请依然再一实施例的垃圾数据回收的示意图;
图9展示了根据本申请依然另一实施例的垃圾数据回收的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图5A是根据本申请实施例的垃圾数据回收的示意图。
根据本申请的实施例,待写入存储设备的数据被标注为一个或多个流。作为举例,图5A中展示了2个流,分别是用户数据流(S1)与GC流(Sg1),其中用户数据流是主机提供给存储设备的IO命令要写入的数据,GC流是来自垃圾回收过程中从脏大块回收的数据。
数据被标注为不同的流。例如,主机提供给存储设备的IO命令指示了流,根据IO命令访问的地址空间或命令空间而为IO命令绑定到流,和/或根据IO命令的特征将IO命令绑定到流等。在申请号为201811154584.2、发明名称为“用于多流、开放通道存储设备的演进的自动流跟踪”的中国专利申请提供了将IO命令绑定到流的技术方案,在申请号为201811123110.1、发明名称为“存储设备的智能数据分流与流跟踪”的中国专利申请中也提供了将IO命令绑定到流的技术,将上述两件中国专利申请的全文通过引用合并于此。
可以理解地,流具有数据访问模式的属性,例如,顺序流、随机流、冷数据流、热数据流等。例如,顺序流中的数据整体上倾向于随访问时间流逝而访问的地址在地址空间中具有局部性和/或单向延申。
待写入存储设备的属于一个或多个流的数据被写入多个大块(称为活动大块)。图5A展示了1个活动大块,大块(U1)。活动大块的存储空间被写满后,活动大块被设置为关闭状态,以及获取新的空闲大块来作为活动大块。例如,大块(U1)是用于承载用户数据流与承载GC流的大块。
写入管理单元从指定的流获取数据,并通过介质接口将获取的数据写入活动大块(U1)(物理上,大块位于一个或多个NVM芯片中)。完成了有效数据回收的脏大块被介质接口擦除,并作为空闲大块被释放。经释放的空闲大块被记录在例如空闲大块集合。
响应于例如活动大块的存储空间被写满,活动大块被设置为关闭状态,并从空闲大块集合中获取空闲大块,作为新的活动大块来承载要写入的数据。
关闭状态的大块被放入脏大块集合。GC流的写入数据来自从脏大块集合中选择的要被回收的脏大块。通常为了磨损均衡的目的,选择要被回收的脏大块时,优先选择擦写次数小的大块,以使得擦写次数小的大块被更多的使用,从而减少擦写次数大的大块被使用的机率。可选地或进一步地,依据脏大块上数据被写入后迄今的时间(年龄)作为选择脏大块的依据。在一个例子中,选择年龄最大的脏大块或者年龄超过阈值的脏大块,以避免这些脏大块上的数据发生错误。在一个例子中,选择无效数据量最大或较大的脏大块,从而以较小的数据搬移为代价换取更多的空闲大块。在又一个例子中,综合考虑擦写次数与年龄因素,例如为擦写次数与年龄各自设置权重,来确定所选择的脏大块。在另一个例子中,年龄除了作为选择脏大块的因素,还作为排除所选择的脏大块的因素。例如,除了根据一种或多种因素选出待回收的脏大块,若选出的脏大块的年龄小于阈值,还排除对该年龄过少的脏大块的回收,而重新选择其他脏大块。排除回收年龄过小的脏大块,目的在于多个方面。一方面,一些NVM芯片对两次被擦写的时间间隔有要求,即两次的擦写操作不能在较短时间内连续发生,从而将该时间间隔作为对年龄的阈值,所选择的待回收大块的年龄需要大于或不小于该阈值。另一方面,随着时间的流逝,大块上被写入的数据倾向于变为无效,而在垃圾回收时仅需回收有效数据,从而推迟对大块的垃圾回收将在统计意义上减少垃圾回收过程中引入的写入数据量。
可以理解的,选择脏大块的各个因素之间可能存在冲突。例如,无效数据量(或其占比)大的脏大块,其年龄可能年轻;年龄轻的脏大块的擦写次数又可能较小,从而需要全面地选择脏大块。
根据本申请的实施例,在识别出脏大块所承载的数据属于顺序流的情况下,要格外考虑年龄因素来选择脏大块,并且避免选择年龄较小又承载了属于顺序流的数据的脏大块来进行垃圾回收。下面阐述其原因。
图5B展示了根据本申请实施例的数据写入的示意图。
图5B展示了大块x与大块y,写入数据来自多个(例如n个)任务,每个任务顺序地向逻辑地址LBA 0到LBA(m-1)写入数据,从而每个任务写入的数据形成顺序流(用SSi标记顺序流,其中i为认为编号,从而SSi表示任务i产生的顺序流,i为整数)。主机的多个任务可能同时向存储设备写入数据,但存储设备处理来自多个任务的写命令可能存在处理时间不同步(例如,先处理SS0的一份数据,再处理SS1的一份数据)。
在图5B的例子中,虽然从流SS1到流SSn的数据都要被写入逻辑地址LBA 0到LBA(m-1),但是在大块x作为活动大块被存储设备用于承载写入数据期间,各个流被写入到大块x的数据对应的逻辑地址范围各不相同。流SS1的从LBAm到LBA 2m-1范围的数据被写入大块x,流SS2的从LBAk到LBAm+k-1范围的数据被写入大块x,流SSn的从LBA 0到LBAm-1范围的数据被写入大块x。此时在大块x上的有效数据对应的逻辑地址范围是从LBA0到LBA 2m-1,有效数据量是2m份。并且,由于流SS1到流SSn的数据都访问逻辑地址LBA 0到LBA(m-1),从而使得大块x上被流SS1到流SSn所写入的数据大部分是无效数据(接近2/n)。在此情况下,在垃圾回收时,若根据有效数据占比来选择待回收的脏大块,则大块x将大概率被选择回收;而若根据年龄选择脏大块,大块x由于刚被写入,年龄较低,因而被选中的机率则较低,这导致两种矛盾的脏大块选择结果。需要解决这种矛盾,并提高垃圾回收的效率。
依然参看图5,在大块x被写入数据后,n个任务可能依然向存储设备写入数据,从而流SS1到流SSn的数据接下来要被写入另一大块y。流SSn向大块y写入了从LBAm到LBA 2m-1范围的数据,流SS2向大块y写入了从LBAm+k到LBA 2m+k-1范围的数据,流SSn向大块y写入了从LBA 2m到LBA 3m-1范围的数据。随着流SS1到流SSn的一个或多个向大块y写入了逻辑地址范围从LBAm到LBA 2m的数据,在大块x中的逻辑地址范围从LBAm到LBA 2m的数据变为无效,大块x的有效数据对应的逻辑地址范围变为从LBA0到LBA 2m-1,有效数据量是m份。在此情况下若对大块x进行垃圾回收,同之前有效数据量是2m份相比,更少的有效数据量意味着更高的垃圾回收效率,而所付出的额外代价只是将对大块x的垃圾回收的开始时间推迟了少许,例如推迟了向大块y写满数据所需的时间。从而根据本申请的实施例,对年龄较小的大块拒绝选为垃圾回收的大块,并且这种选则待回收块的策略在存储设备正在处理多个并发且访问相同或邻近的存储空间的顺序流的场景中将特别有效。在此类场景中,根据大块的有效数据量选择有效数据量低且年龄大于指定阈值的大块作为待回收大块。用于年龄的指定阈值的例子是例如写满一个或几个大块所需的时间。存储空间邻近的例子包括顺序流访问的存储空间范围彼此重叠,或者各自访问的存储空间的差异小于指定阈值。
可选地或进一步地,在图5B的例子中所展示的场景可以被扩展。图5B的场景中,同时存在多个顺序流,这些顺序流访问的逻辑地址范围相同,而这些顺序流各自写入大块x的逻辑地址范围可能存在区别。可选地,在多个任务到存储设备之间,可以有存储系统的其他部件,这些部件可能对IO命令实施调度或对写入数据进行缓存,从而存储设备所观察到的可能并非理想的顺序流,而是例如混合了图5B的流SS1到SSn的数据的单一的混合流,由于其访问的逻辑地址空间邻近,顺序流检测算法可能将该混合流识别为单一的顺序流,而对该单一的顺序流的场景,应用根据本申请实施例的待回收大块选择策略(根据大块的有效数据量选择有效数据量低且年龄大于指定阈值的大块作为待回收大块),将得到同应用于图5B的场景相同或接近的效果。
在又一个例子中,任务产生的数据流所访问的逻辑地址空间可能不是单调递增的(例如,不是从LBA 0递增到LBAm-1),而是存在扰动(例如,在向LBAk写入数据后,又向LBA 0写入数据,再向LBAk+2写入数据),顺序流检测算法通常能容忍这种扰动而识别顺序流。并且这种带有扰动的(单一或多个)顺序流,也适用于根据本申请实施例提出的待回收大块选择策略(根据大块的有效数据量选择有效数据量低且年龄大于指定阈值的大块作为待回收大块)。
在依然又一个例子中,向存储设备写入的数据是单一且严格单调递增的顺序流(例如,从LBA 0递增到LBAm-1),或者写入大块x的多个顺序流访问的逻辑地址范围相同,根据大块的有效数据量选择有效数据量低且年龄大于指定阈值的大块作为待回收大块的策略并不能收到比仅根据大块的有效数据量选择有效数据量低的大块作为待回收大块的策略更好的效果(但也不会变坏)。
可以理解地,选择有效数据量低且年龄大于指定阈值的大块作为待回收大块的策略,也适用于在小的逻辑地址空间范围内的单一或多个随机流。小的逻辑地址空间范围的例子包括接近于大块的存储容量的逻辑地址空间范围,或者小于大块的存储容量的A倍的逻辑地址空间范围,A取例如1到10。
从而,在上面列举的场景下,特别适用选择有效数据量低且年龄大于指定阈值的大块作为待回收大块的策略。可以显著降低垃圾回收过程中产生的要搬移的数据,进而减少垃圾回收过程的数据搬移对用户数据写入的性能/稳定性的影响,特别是在用户写入的数据是顺序写的情况下,由于减少了垃圾回收过程对用户写入数据的影响,因而提高了企业级固态存储设备顺序写性能。
依然可选地,用户或访问存储设备的主机向存储设备指示当前的工作场景,作为响应,存储设备在确定待回收大块的选择策略时,额外考虑大块上所存储数据的年龄。
根据本申请的实施例,为了协助对待回收大块的选择,向大块写入数据时,或大块被写满时,还记录向该大块写入数据的场景,例如,同时存在多个顺序流,这些顺序流访问的逻辑地址范围相同或邻近(有区别),而这些顺序流各自写入大块x的逻辑地址范围可能存在区别,顺序流是严格单调递增(递减)的,随机流但访问的地址空间小。依然可选地,在大块上标记其上所承载的数据所属的一个或多个流的属性或信息,例如,大块x上承载的数据来自n个流,其中流SS1是顺序流,地址范围从LBA 0到LBAm,严格单调;SS2是随机流,地址范围从LBAk到LBAk+m。而在选取待回收块时,根据大块上的记载的属性或信息,识别向该大块写入数据的场景,并用于确定选择该块作为待回收块的策略(或拒绝该块作为待回收块的策略)。
图5C是根据本申请另一实施例的垃圾数据回收的示意图。
作为举例,图5C中展示了4个流,分别是用户数据流(S1)、用户数据流(S2)、GC流(Sg1)与GC流(Sg2),其中用户数据流是提供给存储设备的IO命令要写入的数据,GC流是来自垃圾回收过程中从脏大块回收的数据。
图5C展示了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指示选择存在可靠性预警的脏大块,策略647指示依据无效数据量选择脏大块,而策略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之一。
可选地,组合使用多种策略来选择脏大块。例如,根据策略647选择出无效数据量多的脏大块作为候选,再根据策略646排除年龄小的脏大块,而将余下的脏大块选为待回收大块。依然可选地或进一步地,还依据脏大块上记录的信息来选择策略,或为各策略设置权重。例如,脏大块上记录了其上承载的数据的特征,或数据被写入脏大块时的场景。响应于例如识别出脏大块上的数据来自访问访问相同或相近地址空间的多个数据流,而提升策略644的权重,或应用策略644来排除脏大块(使其暂时不用于垃圾回收)。
图7是根据本申请再一实施例的垃圾数据回收的示意图。
根据图7的实施例,对于用户IO命令写入的数据,根据IO命令的特征将IO命令绑定到流。例如,访问被访问频率高的地址空间的IO命令要写入的数据被绑定到用户数据流(S1),访问被访问频率低的地址空间的IO命令要写入的数据被绑定到用户数据流(S2)(740)。又例如,识别出用户数据形成顺序流或随机流而将要写入的数据绑定到用户数据流(S1)或用户数据流(S2)。而对于从多种脏大块回收的有效数据,根据有效数据所来自的脏大块的特征或被选择的策略而被绑定到不同的GC流(Sg1和/或Sg2)。
选择策略之一以选择待回收的脏大块。策略的选择还同指定条件的发生相关。例如,响应于存储设备(空闲大块集合)中空闲大块的数量小于阈值(741),而通过策略742选择回收优先级最高的脏大块。又例如,响应于存储设备中各大块的最大擦写次数与平均擦写次数的差大于阈值、最大擦写次数与最小擦写次数的差大于阈值和/或平均擦写次数与最小擦写次数的差大于阈值(743),而通过策略744选择擦除次数最小的脏大块和/或策略745根据大块上存储数据的年龄选择脏大块。又例如,响应于根据一种或多种策略选出的待回收脏大块中记载的数据特征(747),而进一步根据策略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所述的方法,其中
第二块所记录的数据的年龄小于指定阈值。
3.根据权利要求1或2所述的方法,还包括:
响应于识别出存储设备当前处于指定的场景下,和/或所述一个或多个第一块记录的信息指示了指定的场景,才根据第一块所记录的数据的年龄排除一个或多个第二块作为待回收块。
4.根据权利要求3所述的方法,其中
所述指定的场景包括,所述存储设备正在处理多个并发的写入顺序流,所述多个并发的写入顺序流各自访问相同或邻近的存储空间,所述存储设备正在处理单一的顺序流,
所述存储设备正在处理一个或多个随机流,所述一个或多个随机流各自访问的地址空间小于指定阈值,和/或由外部指示的场景。
5.根据权利要求1-4之一所述的方法,其中
所述一种或多种策略包括选择具有最少有效数据量的块或者有效数据量小于指定阈值的块作为所述一个或多个第一块。
6.根据权利要求1-5之一所述的方法,还包括:
根据脏块对应的信息确定所述一种或多种策略的各自权重,以及根据权重综合所述一种或多种策略选择待回收的一个或多个第一块。
7.根据权利要求1-6之一所述的方法,还包括:
获取一个或多个流,建立流与活动大块的绑定关系;
根据绑定关系,将流中的数据写入同流对应的活动大块中;
其中,流包括一个或多个用户数据流和一个或多个GC流,其中,用户数据流来自提供给存储设备的IO命令要写入的数据,GC流来自从所述余下的块回收的数据。
8.根据权利要求1-7之一所述的方法,还包括:
响应于活动大块的存储空间被写满,在被写满的活动大块上记录同所写入的数据对应的所述指定的场景,以及设置活动大块为关闭状态。
9.根据权利要求1-8之一所述的方法,其中,
所述一种或多种策略包括,依据无效数据量选择块、依据擦写次数选择块和/或依据年龄选择块;以及
根据所述余下的块的特征和所述一种或多种策略而将从所述余下的块回收的数据分配到不同的流。
10.一种存储设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1-9之一所述的垃圾回收方法。
CN202111553503.8A 2021-12-17 2021-12-17 提高企业级固态存储设备顺序写性能的方法与存储设备 Pending CN114968833A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111553503.8A CN114968833A (zh) 2021-12-17 2021-12-17 提高企业级固态存储设备顺序写性能的方法与存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111553503.8A CN114968833A (zh) 2021-12-17 2021-12-17 提高企业级固态存储设备顺序写性能的方法与存储设备

Publications (1)

Publication Number Publication Date
CN114968833A true CN114968833A (zh) 2022-08-30

Family

ID=82974852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111553503.8A Pending CN114968833A (zh) 2021-12-17 2021-12-17 提高企业级固态存储设备顺序写性能的方法与存储设备

Country Status (1)

Country Link
CN (1) CN114968833A (zh)

Similar Documents

Publication Publication Date Title
US11868247B1 (en) Storage system with multiplane segments and cooperative flash management
US10996863B1 (en) Nonvolatile memory with configurable zone/namespace parameters and host-directed copying of data across zones/namespaces
US11544183B1 (en) Nonvolatile memory controller host-issued address delimited erasure and memory controller remapping of host-address space for bad blocks
US10838859B2 (en) Recency based victim block selection for garbage collection in a solid state device (SSD)
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
KR101894625B1 (ko) 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집
CN109496300B (zh) 一种存储介质垃圾回收方法、存储介质和程序产品
US11740801B1 (en) Cooperative flash management of storage device subdivisions
JP6459644B2 (ja) ストレージ制御装置、制御システム及び制御プログラム
US11249903B2 (en) Memory system for garbage collection operation and operating method thereof
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
CN109144885B (zh) 固态存储设备的垃圾回收方法与固态存储设备
CN109558333B (zh) 具有可变额外存储空间的固态存储设备命名空间
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
CN112445720A (zh) 对存储器子系统部件的存取频率进行分类
KR20090107098A (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20200123683A (ko) 데이터를 저장할 수 있는 복수의 영역을 포함하는 메모리 시스템 및 메모리 시스템의 동작방법
CN112181274B (zh) 提升存储设备性能稳定性的大块的组织方法及其存储设备
KR20110109418A (ko) 비휘발성 메모리 저장 장치 및 비휘발성 메모리 저장 장치의 성능 향상 방법
CN107688435B (zh) Io流调节方法与装置
CN111338975A (zh) 面向多流的垃圾回收方法及其存储设备
CN112181276B (zh) 提升存储设备服务质量的大块构造、分配方法及其存储设备
CN114968833A (zh) 提高企业级固态存储设备顺序写性能的方法与存储设备
TWI724550B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
CN110688056A (zh) Nvm组的存储介质替换

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