CN117785055A - 垃圾回收方法、闪存设备控制器及闪存设备 - Google Patents

垃圾回收方法、闪存设备控制器及闪存设备 Download PDF

Info

Publication number
CN117785055A
CN117785055A CN202311842134.3A CN202311842134A CN117785055A CN 117785055 A CN117785055 A CN 117785055A CN 202311842134 A CN202311842134 A CN 202311842134A CN 117785055 A CN117785055 A CN 117785055A
Authority
CN
China
Prior art keywords
command
group
block address
trimming
time
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
CN202311842134.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.)
Chengdu Dapu Weiju Technology Co ltd
Original Assignee
Chengdu Dapu Weiju 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 Chengdu Dapu Weiju Technology Co ltd filed Critical Chengdu Dapu Weiju Technology Co ltd
Priority to CN202311842134.3A priority Critical patent/CN117785055A/zh
Publication of CN117785055A publication Critical patent/CN117785055A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System (AREA)

Abstract

本申请涉及存储设备应用技术领域,公开了一种垃圾回收方法、闪存设备控制器及闪存设备,该垃圾回收方法,通过构建第一命令列表和第二命令列表,该第二命令列表包括至少一个逻辑块地址组,通过利用每一个逻辑块地址组的权重来确定第一逻辑块地址组,进一步通过确定第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中,以确定第二超级块为即将失效的数据所在的超级块,从而不对第二超级块进行数据搬移,本申请能够减少对即将失效的数据的搬移,从而减小写放大,进而延长闪存设备的使用寿命。

Description

垃圾回收方法、闪存设备控制器及闪存设备
技术领域
本申请实施方式涉及存储设备应用技术领域,特别是涉及一种垃圾回收方法、闪存设备控制器及闪存设备。
背景技术
应用程序在对存储端下发业务时,通常包含删除某些数据的业务,比如客户需要定期淘汰一些数据,写入更新的数据或者其他数据。对于存储端由SSD组成或者包含SSD时,由于NAND的特性,通常会将相同LBA的数据写入到不同的位置。SSD在进行垃圾回收(Garbage Collection,GC)的时候,搬移物理块(block)上的有效数据到其他block,然后擦除原block,从而回收NAND资源。
目前,现有技术的方案是在由SSD组成或者包含SSD的存储系统中,在支持Trim环境中,当删除某些LBA对应的数据时,主机会给SSD下发相应的Trim命令,SSD就能够在相同LBA范围未下发写其它数据之前,判定该Trim命令对应的数据是无效的,GC时无需搬移无效数据,从而减小写放大、增加SSD寿命。
但是该方案存在的缺陷为:当主机分批次下发Trim命令,若固态硬盘没有全部接收到物理块对应的所有Trim命令就对物理块进行搬移,此时容易导致垃圾回收会搬移即将失效的数据,从而导致加大固态硬盘的写放大。
发明内容
本申请实施例提供一种垃圾回收方法、闪存设备控制器及闪存设备,以减少对即将失效数据的搬移,从而减小写放大,延长固态硬盘的使用寿命。
本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种垃圾回收方法,应用于闪存设备,闪存设备包括至少两个超级块,该垃圾回收方法包括:
构建第一命令列表,其中,第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间;
根据每一个修剪命令的命令下发时间,构建第二命令列表,其中,第二命令列表包括至少一个逻辑块地址组,每一个逻辑块地址组包括至少两个修剪命令,每一个逻辑块地址组一一对应一个权重;
获取第一超级块组,其中,第一超级块组包括至少两个第一超级块;
根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,其中,第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中;
根据第一超级块组以及若干个第二超级块,确定第三超级块,对第三超级块进行垃圾回收操作。
在一些实施例中,根据每一个修剪命令的命令下发时间,构建第二命令列表,包括:
每间隔固定时间扫描第一命令列表,获取每一个修剪命令的命令下发时间;
若第一命令列表中存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值,则获取修剪命令对应的地址范围;
将修剪命令对应的地址范围存储至逻辑块地址组,以构建第二命令列表,其中,每一个逻辑块地址组中的任意两个修剪命令的命令下发时间的差值小于时间阈值。
在一些实施例中,在将修剪命令对应的地址范围存储至逻辑块地址组之后,方法还包括:
将修剪命令对应的地址范围和所述修剪命令的下发时间从第一命令列表中删除,得到空闲位置,其中,空闲位置用于存储下一个修剪指令对应的地址范围和下一个修剪命令的命令下发时间。
在一些实施例中,方法还包括:
若修剪命令对应的地址范围已存在于第二命令列表,则获取逻辑块地址组的删除频度和逻辑块地址组中每一地址范围对应的命令下发时间,其中,删除频度为逻辑块地址组中的数据被删除的次数;
根据逻辑块地址组中每一地址范围对应的命令下发时间,计算间隔时间;
根据间隔时间的平均值和时间间隔阈值,确定间隔时间的等级值;
根据预设规则更新逻辑块地址组的权重,得到更新后的权重,其中,更新后的权重=(逻辑块地址组的删除频度+频度粒度)*第一系数+间隔时间的等级值*第二系数。
在一些实施例中,根据间隔时间的平均值和时间间隔阈值,确定间隔时间的等级值,包括:
若间隔时间的平均值小于或等于时间间隔阈值的第一比例时,则将间隔时间的等级值确定为第一等级值;
若间隔时间的平均值大于时间间隔阈值的第一比例,并且,小于或等于时间间隔阈值的第二比例时,则将间隔时间的等级值确定为第二等级值,其中,第二等级值小于第一等级值;
若间隔时间的平均值大于时间间隔阈值的第二比例时,则将间隔时间的等级值确定为第三等级值,其中,第三等级值小于第二等级值。
在一些实施例中,获取第一超级块组,包括:
获取有效数据页的个数最小的超级块,将有效数据页的个数最小的超级块确定为最小超级块;
根据最小超级块,确定若干个第一超级块,进而获取第一超级块组,其中,第一超级块组中的任意一个第一超级块的有效数据页的个数与最小超级块的有效数据页的个数之差小于个数阈值,其中,个数阈值=有效数据页的个数的比例阈值*最小超级块的有效数据页的个数。
在一些实施例中,根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,包括:
获取每一逻辑块地址组的权重;
若逻辑块地址组的权重大于权重阈值,则获取逻辑块地址组中的修剪命令对应的地址范围;
根据逻辑块地址组中的修剪命令对应的地址范围,确定第一逻辑块地址组,其中,第一逻辑块地址组包括至少一个修剪命令对应的地址范围;
根据第一逻辑块地址组中的地址范围,获取地址范围对应的第一数据;
若地址范围对应的第一数据存储于第一超级块组中的第一超级块,则确定第一超级块为第二超级块。
在一些实施例中,根据第一超级块组以及若干个第二超级块,确定第三超级块,包括:
将第一超级块组以及若干个第二超级块进行比对,若第二超级块为第一超级块组中的超级块,则将第二超级块从第一超级块组中删除,得到处理后的第一超级块组;
根据处理后的第一超级块组,确定第三超级块。
第二方面,本申请实施例提供一种闪存设备控制器,包括:
至少一个处理器;和
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面的垃圾回收方法。
第三方面,本申请实施例提供一种闪存设备,包括:
如第二方面的闪存设备控制器;
与闪存设备控制器通信连接的至少一个闪存介质。
第四方面,本申请实施例提供一种非易失性计算机可读存储介质,非易失性计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使闪存设备执行如第一方面的垃圾回收方法。
本申请实施方式的有益效果是:区别于现有技术的情况,本申请实施方式提供一种垃圾回收方法,应用于闪存设备,该闪存设备包括至少两个超级块,该垃圾回收方法,包括:构建第一命令列表,其中,第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间;根据每一个修剪命令的命令下发时间,构建第二命令列表,其中,第二命令列表包括至少一个逻辑块地址组,每一个逻辑块地址组包括至少两个修剪命令,每一个逻辑块地址组一一对应一个权重;获取第一超级块组,其中,第一超级块组包括至少两个第一超级块;根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,其中,第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中;根据第一超级块组以及若干个第二超级块,确定第三超级块,对第三超级块进行垃圾回收操作。
通过构建第一命令列表和第二命令列表,该第二命令列表包括至少一个逻辑块地址组,通过利用每一个逻辑块地址组的权重来确定第一逻辑块地址组,进一步通过确定第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中,以确定第二超级块为即将失效的数据所在的超级块,从而不对第二超级块进行数据搬移,本申请能够减少对即将失效的数据的搬移,从而减小写放大,进而延长闪存设备的使用寿命。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种闪存设备控制器的示意图;
图3是本申请实施例提供的一种垃圾回收方法的流程示意图;
图4是图3中的步骤S302的细化流程示意图;
图5是本申请实施例提供的一种第一命令列表和第二命令列表的示意图;
图6是本申请实施例提供的一种得到第一命令列表的空闲位置的流程示意图;
图7是本申请实施例提供的一种得到更新后的权重的流程示意图;
图8是图7中的步骤S705的细化流程示意图;
图9是图3中的步骤S303的细化流程示意图;
图10是图3中的步骤S304的细化流程示意图;
图11是图3中的步骤S305的细化流程示意图;
图12是本申请实施例提供的另一种闪存设备的结构示意图。
附图标号说明:
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本说明书中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
下面结合说明书附图具体阐述本申请的技术方案:
在本申请实施例中,闪存设备包括固态硬盘或者其他以闪存介质为存储介质的存储设备,闪存设备控制器包括固态硬盘或者其他以闪存介质为存储介质的存储设备的控制器。
具体的,请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图。
如图1所示,闪存设备100包括闪存介质110以及与闪存介质110连接的闪存设备控制器120。其中,闪存设备100通过有线或无线的方式与主机200通信连接,用以实现数据交互。
闪存介质110,作为闪存设备100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。
其中,闪存介质110可以为Nand Flash,Nand Flash以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于Nand Flash的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合,当负电子在控制栅的作用下被注入到浮动栅中,Nand Flash的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即Nand Flash的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关。一个Nand Flash包括至少一个Chip芯片,每一个Chip芯片由若干个物理块(Block)组成,每一个物理块包括若干个物理页(Page)。其中,Block是Nand Flash执行擦除操作的最小单位,Page为Nand Flash执行读写操作的最小单位,一个Nand Flash的容量等于其Block的数量*一个Block包含的Page的数量*一个Page的容量。具体的,闪存介质110按照存储单元的电压的不同层次,可分为单层单元闪存(Single-Level Cell,SLC)、多层单元闪存(Multi-Level Cell,MLC)、三层单元闪存(Triple-Level Cell,TLC)以及四层单元闪存(Quad-Level Cell,QLC)。
闪存设备控制器120,包括数据转换器121、处理器122、存储器123、闪存控制器124以及接口125。
数据转换器121,分别与处理器122和闪存控制器124连接,所述数据转换器121用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当闪存控制器124向闪存介质110写入数据时,通过数据转换器121将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质110。当闪存控制器124从闪存介质110读取数据时,通过数据转换器121将闪存介质110中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,数据转换器121可以包括二进制数据寄存器和十六进制数据寄存器。二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
处理器122,分别与数据转换器121、存储器123、闪存控制器124以及接口125连接,其中,处理器122与数据转换器121、存储器123、闪存控制器124以及接口125可以通过总线或者其他方式连接,处理器用于运行存储在存储器123中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例,例如:执行本申请实施例中的垃圾回收方法。
存储器123,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。存储器123作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器123可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,存储器123可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
在一些实施例中,存储器123可选包括相对于处理器124远程设置的存储器。远程设置的网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。存储器123可以为静态随机存取存储器(Static Random Access Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRateSynchronous Dynamic Random Access Memory,DDR SRAM)。
闪存控制器124,与闪存介质110、数据转换器121、处理器122以及存储器123连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O。
接口125,连接主机200以及数据转换器121、处理器122以及存储器123,用于接收主机200发送的数据,或者,接收处理器122发送的数据,实现主机200与处理器122之间的数据传输,接口125可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。
请再参阅图2,图2是本申请实施例提供的一种闪存设备控制器的结构示意图;其中,该闪存设备控制器属于上述的闪存设备。
如图2所示,该闪存设备控制器120,包括:PCIe接口控制器126、DDR控制器127、NVMe接口控制器128、处理器122、外设模块129、数据通路模块1210以及闪存控制器124。
具体的,闪存控制器124用于闪存的数据处理,例如:将数据写入闪存介质,或者,从闪存介质中读取数据。
PCIe接口控制器126,用于PCIe通信协议的控制。
DDR控制器127,用于动态随机存储器的控制。
NVMe接口控制器128,用于NVMe通信协议的控制。
外设模块129,用于其他相关通信协议的控制。
数据通路模块1210,用于数据通路的控制,例如:写缓存的管理。
目前,在支持Trim的环境中,当用户删除某些LBA对应的数据时,主机会给SSD下发相应的Trim命令,但是,当主机分批次下发Trim命令,且这些Trim命令对应的数据存放在固态硬盘的相同block时,此时若在SSD未全部收到某一block对应的全部批次Trim命令的情况下,就刚好已经启动对该block的GC,例如:当Trim命令下发到固态硬盘时,该Trim命令对应某一逻辑块地址,而垃圾回收已经将逻辑块地址对应的数据搬移,此时会导致垃圾回收搬移即将失效的数据,从而导致加大固态硬盘的写放大。
基于此,本申请实施例提供一种垃圾回收方法,通过确定即将失效的数据所在的超级块,不对该超级块进行数据搬移,以减少对即将失效的数据的搬移,从而减小写放大。
具体的,请参阅图3,图3是本申请实施例提供的一种垃圾回收方法的流程示意图;
其中,该垃圾回收方法,应用于闪存设备,该垃圾回收方法的执行主体为闪存设备的一个或至少两个处理器。可以理解的是,本申请实施例中的闪存设备包括固态硬盘、磁盘阵列等包含闪存介质的存储设备。
如图3所示,该垃圾回收方法,包括:
步骤S301:构建第一命令列表,其中,第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间;
具体的,当主机向闪存设备下发修剪命令时,闪存设备获取该修剪命令,并将修剪命令逐一存储至第一命令列表,以构建第一命令列表,其中,第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间,该地址范围包括修剪命令对应的起始逻辑区块地址和终止逻辑区块地址,该修剪命令对应的命令下发时间指的是主机向闪存设备下发修剪命令的时间。
在本申请实施例中,该修剪命令对应的地址范围通过起始逻辑区块地址(StartLogicalBlockAddress,SLBA)以及偏移量(offset)进行表征,该修剪命令包括Trim命令,通过该Trim命令,能够使主机通知闪存设备哪些物理块已不再考虑使用,可以被内部擦除,使闪存设备能更有效地处理垃圾回收。
步骤S302:根据每一个修剪命令的命令下发时间,构建第二命令列表;
具体的,请再参阅图4,图4是图3中的步骤S302的细化流程示意图;
如图4所示,步骤S302:根据每一个修剪命令的命令下发时间,构建第二命令列表,包括:
步骤S321:每间隔固定时间扫描第一命令列表,获取每一个修剪命令的命令下发时间;
具体的,采用周期性扫描的方式,每间隔固定时间以从表头至表尾的方式扫描第一命令列表,以获取当前第一命令列表中每一个修剪命令的命令下发时间,其中,该固定时间可以根据实际情况进行设置,例如,将固定时间设置为1分钟。
步骤S322:判断第一命令列表中是否存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值;
具体的,在获取第一命令列表中所有修剪命令的命令下发时间之后,判断第一命令列表中是否存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值,其中,该时间阈值可以根据实际情况进行设置,例如将时间阈值设置为2秒,若第一命令列表中存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值,则进入步骤S323;若第一命令列表中不存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值,则返回步骤S321,以等待下一次扫描。
步骤S323:获取修剪命令对应的地址范围;
具体的,若第一命令列表中存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值,则获取修剪命令对应的地址范围,例如,若存在三个修剪命令的命令下发时间的差值小于时间阈值,则从第一命令列表中获取这三个修剪命令对应的地址范围。
步骤S324:将修剪命令对应的地址范围存储至逻辑块地址组,以构建第二命令列表;
具体的,第二命令列表包括至少一个逻辑块地址组,每一个逻辑块地址组包括至少两个逻辑块地址以及逻辑块地址对应的偏移量,其中,逻辑块地址包括逻辑块地址的起始地址,该逻辑块地址的起始地址与逻辑块地址对应的偏移量用于表征逻辑块地址的地址范围,即,修剪命令对应的地址范围,将修剪命令对应的地址范围存储至逻辑块地址组,以构建第二命令列表,其中,每一个逻辑块地址组中的任意两个修剪命令的命令下发时间的差值小于时间阈值。
在本申请实施例中,第一命令列表由多个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间组成,其中,每一个修剪命令一一对应一个逻辑块地址(LBA)的起始地址,即SLBA,以及偏移量(Offset)以及下发时间(Time),根据上述方法步骤,当检测到第一命令列表中存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值时,则将这些符合条件的修剪命令存储至第二命令列表的逻辑块地址组,该第二命令列表由至少一个逻辑块地址组(LBAGroup)组成,其中,每个逻辑块地址组对应一个权重(Weight),逻辑块地址组包括修剪命令对应的地址范围,其中,修剪命令对应的地址范围由逻辑块地址的起始地址(LBA)以及偏移量(Offset)进行表征。
具体的,请再参阅图5,图5是本申请实施例提供的一种第一命令列表和第二命令列表的示意图;
如图5所示,第一命令列表包括多个修剪命令,每一个修剪命令对应一个逻辑块地址的起始地址(LBA)、偏移量(Offset)以及修剪命令的下发时间(Time),其中,第一命令列表还包括元数据(Metadata)。
第二命令列表包括至少一个逻辑块地址组(LBA Group),其中,每一个逻辑块地址组(LBA Group)一一对应一个权重(Weight),每一个逻辑块地址组(LBA Group)包括至少两个修剪命令,每一个修剪命令一一对应一个地址范围,其中,修剪命令对应的地址范围由逻辑块地址的起始地址(LBA)以及偏移量(Offset)进行表征。
在本申请实施例中,逻辑块地址组(LBA Group)包括逻辑块地址的起始地址(LBA)以及偏移量(Offset),逻辑块地址组(LBA Group)还包括权重(Weight),其中,第二命令列表还包括元数据(Meta data)。
通过构建第一命令列表和第二命令列表,利用两层的层级数据结构,结合逻辑块地址组来存储和管理应用程序删除数据的行为,并协同闪存设备的垃圾回收操作,本申请能够减少闪存设备的写放大。
可以理解的是,写放大以写放大系数(Write Amplification,WA)进行表征,其中,写放大系数=写入闪存的数据量/用户写的数据量,其中,用户写的数据量即主机写入的数据量。写放大系数越大,则意味着写入闪存的额外数据越多,从而一方面会导致内存的磨损,减少闪存设备的使用寿命,另一方面,写入额外数据会占用底层闪存带宽,影响闪存设备的性能。
可以理解的是,当第一命令列表中的某一修剪命令被记录到第二命令列表之后,则需要清除第一命令列表中的该修剪命令,以得到第一命令列表的空闲位置。
具体的,请参阅图6,图6是本申请实施例提供的一种得到第一命令列表的空闲位置的流程示意图;
如图6所示,得到第一命令列表的空闲位置的流程,包括:
步骤S601:将修剪命令对应的地址范围和修剪命令的下发时间从第一命令列表中删除,得到空闲位置;
具体的,在将修剪命令对应的地址范围存储至逻辑块地址组之后,则对第一命令列表进行清除操作,该清除操作包括将修剪命令对应的地址范围和修剪命令的下发时间从第一命令列表中删除,得到空闲位置,其中,该空闲位置用于存储下一个修剪指令对应的地址范围和所述下一个修剪命令的命令下发时间,也就是说,当下一次主机向闪存设备发送修剪命令时,闪存设备优先将该修剪命令存储至空闲位置,以提高闪存设备的存储效率,节约存储空间。
在本申请实施例中,每一个逻辑块地址组一一对应一个权重。该逻辑块地址组对应的权重=逻辑块地址组的删除频度*第一系数+逻辑块地址组中的不同地址范围对应的命令下发时间的间隔时间。其中,逻辑块地址组中的不同地址范围对应的命令下发时间的间隔时间以平均间隔时间进行表征,即,不同地址范围对应的命令下发时间的间隔时间的平均间隔时间。
具体的,第一系数和第二系数根据具体需要进行设置,例如:第一系数+第二系数=1,第一系数设置为0.9,第二系数设置为0.1。优选地,第一系数大于第二系数,使得删除频度对应的权重高于间隔时间对应的权重。
可以理解的是,随着修剪命令对应的逻辑块地址被不断加入到逻辑块地址组中,则逻辑块地址组对应的权重也会不断被更新。
具体的,请再参阅图7,图7是本申请实施例提供的一种得到更新后的权重的流程示意图;
如图7所示,得到更新后的权重的流程,包括:
步骤S701:获取修剪命令对应的地址范围;
具体的,根据上述步骤S321至步骤S323提到的方法步骤,获取修剪命令对应的地址范围,其中,该修剪命令指的是第一命令列表中命令下发时间之差小于时间阈值的至少两个修剪命令。
步骤S702:判断修剪命令对应的地址范围是否已存在于第二命令列表;
具体的,判断修剪命令对应的地址范围是否已存在于第二命令列表,即判断当前获取到修剪命令对应的地址范围与第二命令列表中的地址范围是否相同,若当前获取到修剪命令对应的地址范围与第二命令列表中的地址范围相同,则进入步骤S703;若当前获取到修剪命令对应的地址范围与第二命令列表中的地址范围不相同,则进入步骤S707。
步骤S703:获取逻辑块地址组的删除频度和逻辑块地址组中每一地址范围对应的命令下发时间;
具体的,获取逻辑块地址组的删除频度和逻辑块地址组中每一地址范围对应的命令下发时间,该删除频度(Deletion frequency,DF)指的是该逻辑块地址组被删除的频度,例如:逻辑块地址组中的全部逻辑块地址对应的物理块被主机删除的次数,即主机删除该逻辑块地址组中的数据的次数,可以理解的是,第一次创建某个逻辑块地址组的时候是主机第一次删除这个逻辑块地址组中的数据的时候,在此之后,如果这个逻辑块地址组的数据再次被删除,会更新该逻辑块地址组对应的删除频度,例如,将删除频度增加1次。
步骤S704:根据逻辑块地址组中每一地址范围对应的命令下发时间,计算间隔时间;
具体的,根据逻辑块地址组中每一地址范围对应的命令下发时间,计算间隔时间,即在同一个逻辑块地址组内,计算不同地址范围对应的命令下发时间之间的间隔时间。
步骤S705:根据间隔时间的平均值和时间间隔阈值,确定间隔时间的等级值;
具体的,请再参阅图8,图8是图7中的步骤S705的细化流程示意图;
如图8所示,步骤S705:根据间隔时间的平均值和时间间隔阈值,确定间隔时间的等级值,包括:
步骤S751:获取间隔时间的平均值和时间间隔阈值;
具体的,计算间隔时间的平均值,其中,平均值=(所有间隔时间之和)/间隔时间的个数,以及,获取时间间隔阈值,该时间间隔阈值可以根据实际情况进行设置,例如,将时间间隔阈值设置为1秒。
步骤S752:判断间隔时间的平均值是否小于或等于时间间隔阈值的第一比例;
具体的,判断间隔时间的平均值是否小于或等于时间间隔阈值的第一比例,若间隔时间的平均值小于或等于时间间隔阈值的第一比例,则进入步骤S753;若间隔时间的平均值不是小于或等于时间间隔阈值的第一比例(即大于时间间隔阈值的第一比例),则进入步骤S754。
步骤S753:将间隔时间的等级值确定为第一等级值;
具体的,若间隔时间的平均值小于或等于时间间隔阈值的第一比例,其中,该第一比例是第一比例和第二比例中的较小值,说明主机每次删除该逻辑块地址组对应的数据的时间间隔短,则将间隔时间的等级值确定为第一等级值,其中,该第一比例和第一等级值可以根据实际需要进行设置,例如,将第一比例设置为三分之一,将第一等级值设置为3。
步骤S754:判断间隔时间的平均值是否大于时间间隔阈值的第一比例,并且,小于或等于时间间隔阈值的第二比例;
具体的,若间隔时间的平均值不是小于或等于时间间隔阈值的第一比例,则进一步判断间隔时间的平均值是否大于时间间隔阈值的第一比例,并且,小于或等于时间间隔阈值的第二比例,其中,该第二比例可以根据实际需要进行设置,例如,将第二比例设置为三分之二,若间隔时间的平均值大于时间间隔阈值的第一比例,并且,小于或等于时间间隔阈值的第二比例,则进入步骤S755;若间隔时间的平均值不是大于时间间隔阈值的第一比例,并且,小于或等于时间间隔阈值的第二比例,则进入步骤S756。
步骤S755:将间隔时间的等级值确定为第二等级值;
具体的,若间隔时间的平均值大于时间间隔阈值的第一比例,并且,小于或等于时间间隔阈值的第二比例,则将间隔时间的等级值确定为第二等级值,其中,第二等级值小于第一等级值,需要注意的是,该第二等级值可以根据实际需要进行设置,例如,将第二等级值设置为2。
步骤S756:将间隔时间的等级值确定为第三等级值;
具体的,若间隔时间的平均值是大于时间间隔阈值的第一比例,并且,不是小于或等于时间间隔阈值的第二比例(即大于时间间隔阈值的第二比例),则将间隔时间的等级值确定为第三等级值,其中,第三等级值小于第二等级值,需要注意的是,该第三等级值可以根据实际需要进行设置,例如,将第三等级值设置为1。
步骤S706:根据预设规则更新逻辑块地址组的权重,得到更新后的权重;
具体的,由于当前扫描到的修剪命令对应的地址范围已存在于第二命令列表,根据预设规则更新逻辑块地址组的权重,得到更新后的权重,其中,预设规则包括:更新后的权重=(逻辑块地址组的删除频度+频度粒度)*第一系数+间隔时间的等级值*第二系数,其中,第一系数和第二系数根据具体需要进行设置,例如:第一系数+第二系数=1,第一系数设置为0.9,第二系数设置为0.1。优选地,第一系数大于第二系数,使得删除频度对应的权重高于间隔时间对应的权重。
需要注意的是,频度粒度指的是删除频度的最小单元或删除频度的最小变化量,在本申请实施例中,该频度粒度为1次。
在本申请实施例中,通过LBA Group出现在主机下发Tr im命令的次数,以及LBAGroup中各LBA range的时间差来共同确定LBA Group的权重,能够更好地确定每一个LBAGroup的权重,有利于确定包含即将失效的数据的超级块,从而有利于减小写放大。
步骤S707:将修剪命令对应的地址范围存储至第二命令列表;
具体的,若修剪命令对应的地址范围不存在于第二命令列表,则将修剪命令对应的地址范围存储至第二命令列表。
步骤S303:获取第一超级块组,其中,第一超级块组包括至少两个第一超级块;
具体的,请再参阅图9,图9是图3中的步骤S303的细化流程示意图;
如图9所示,步骤S303:获取第一超级块组,其中,第一超级块组包括至少两个第一超级块,包括:
步骤S331:获取有效数据页的个数最小的超级块,将有效数据页的个数最小的超级块确定为最小超级块;
具体的,有效数据页的个数(Valid Page Count,VPC)用于记录每个超级块上的有效页个数,在进行垃圾回收的过程中,根据VPC对每个超级块上的有效页个数进行排序,以获取有效数据页的个数最小的超级块,将有效数据页的个数最小的超级块确定为最小超级块。
步骤S332:根据最小超级块,确定若干个第一超级块,进而获取第一超级块组;
其中,第一超级块组中的任意一个第一超级块的有效数据页的个数与最小超级块的有效数据页的个数之差小于个数阈值,其中,个数阈值=有效数据页的个数的比例阈值*最小超级块的有效数据页的个数。
具体的,根据有效数据页的个数最小的超级块,确定若干个第一超级块,其中,有效数据页的个数最小的超级块被确定为最小超级块,最小超级块也被确定为第一超级块,第一超级块组包括最小超级块以及若干个其他第一超级块,其中,确定其他的第一超级块的方式,包括如下步骤:
(1)确定最小超级块,并将该超级块的有效数据页的个数确定为第一数值,其中,该第一数值为有效数据页的最小值;
(2)基于个数阈值,确定其他的第一超级块,其中,其他的第一超级块的有效数据页的个数小于(1+有效数据页的个数的比例阈值)*第一数值。
即,其他的第一超级块的有效数据页的个数与第一数值的差值的比例不大于有效数据页的个数的比例阈值,其中,其他的第一超级块的有效数据页的个数与第一数值的差值的比例=(第一超级块的有效数据页的个数-最小有效数据页的个数)/最小有效数据页的个数。需要说明的是,该有效数据页的个数的比例阈值可以根据实际需要进行设置,例如,将有效数据页的个数的比例阈值设置为1%。
在得到最小超级块以及若干个其他第一超级块之后,将全部的第一超级块进行组合,即,将第一超级块全部添加至第一超级块组,从而得到第一超级块组。
步骤S304:根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块;
具体的,请再参阅图10,图10是图3中的步骤S304的细化流程示意图;
如图10所示,步骤S304:根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,其中,第一超级块组包括至少两个第一超级块,包括:
步骤S341:获取每一逻辑块地址组的权重;
具体的,遍历第二命令列表,以获取每一逻辑块地址组的权重。
步骤S342:判断逻辑块地址组的权重是否大于权重阈值;
具体的,获取全部逻辑块地址组中的最大权重,将权重阈值确定为最大权重与权重比例值的乘积,其中,权重比例值可以根据实际情况进行设置,例如,将权重比例值设置为0.95,判断逻辑块地址组的权重是否大于权重阈值,若逻辑块地址组的权重大于权重阈值,则进入步骤S343;若逻辑块地址组的权重小于或等于权重阈值,则进入步骤S348。
步骤S343:获取逻辑块地址组中的修剪命令对应的地址范围;
具体的,若逻辑块地址组的权重大于权重阈值,则获取逻辑块地址组中的修剪命令对应的地址范围。
步骤S344:根据逻辑块地址组中的修剪命令对应的地址范围,确定第一逻辑块地址组;
具体的,根据逻辑块地址组中的修剪命令对应的地址范围,确定第一逻辑块地址组,其中,该第一逻辑块地址组包括至少两个修剪命令对应的地址范围。
步骤S345:根据第一逻辑块地址组中的地址范围,获取地址范围对应的第一数据;
具体的,根据第一逻辑块地址组中的地址范围,查询L2P表(逻辑地址到物理地址的映射表),获取该地址范围对应的物理地址,再根据该物理地址获取该物理地址对应的第一数据。
步骤S346:判断地址范围对应的第一数据是否存储于第一超级块组中的第一超级块;
具体的,判断地址范围对应的第一数据是否存储于第一超级块组中的第一超级块,其中,第一逻辑块地址组中的地址范围包括第一逻辑块地址组中的全部逻辑块地址的地址范围,例如:第一逻辑块地址组包括两个逻辑块地址的地址范围,分别为(LBA1,Offset1)和(LBA2,Offset 2),则第一逻辑块地址组中的地址范围为(LBA 1,Offset 1)+(LBA2,Offset 2),第一逻辑块地址组中的地址范围对应的第一数据指的是第一逻辑块地址组中的全部逻辑块地址的地址范围所对应的数据,例如:地址范围为(LBA 1,Offset 1)+(LBA2,Offset 2)所对应的数据。
若地址范围对应的第一数据存储于第一超级块组中的第一超级块,则进入步骤S347;若地址范围对应的第一数据不存储于第一超级块组中的第一超级块,则进入步骤S348。
步骤S347:确定第一超级块为第二超级块;
具体的,若地址范围对应的第一数据存储于第一超级块组中的第一超级块,则进一步判断第一超级块是否被置为无效状态,并将没有被置为无效状态的第一超级块确定为第二超级块。
步骤S348:确定第一超级块不为第二超级块;
具体的,若地址范围对应的第一数据不存储于第一超级块组中的第一超级块,确定第一超级块不为第二超级块。
步骤S305:根据第一超级块组以及若干个第二超级块,确定第三超级块,对第三超级块进行垃圾回收操作;
具体的,请再参阅图11,图11是图3中的步骤S305的细化流程示意图;
如图11所示,步骤S305:根据第一超级块组以及若干个第二超级块,确定第三超级块,对第三超级块进行垃圾回收操作,包括:
步骤S351:获取第一超级块组以及若干个第二超级块;
具体的,根据上述步骤获取第一超级块组以及若干个第二超级块。
步骤S352:将第一超级块组以及若干个第二超级块进行比对,判断第二超级块是否为第一超级块组中的超级块;
具体的,将第一超级块组以及若干个第二超级块进行比对,判断第二超级块是否为第一超级块组中的超级块,即判断第二超级块是否与第一超级块组中的超级块相同,若第二超级块为第一超级块组中的超级块,则进入步骤S353;若第二超级块不为第一超级块组中的超级块,则进入步骤S355。
步骤S353:将第二超级块从第一超级块组中删除,得到处理后的第一超级块组;
具体的,由于第二超级块是存储有第一数据并且没有被置为无效状态的超级块,因此,不能对第二超级块进行垃圾回收操作,将第二超级块从第一超级块组中删除,得到处理后的第一超级块组。
通过确定第二超级块,其中,第二超级块为尚未置为无效的数据对应的超级块,并将第二超级块从第一超级块组中删除,使得垃圾回收不选择尚未置为无效的数据对应的超级块,从而减少了对即将失效的数据的搬移,有利于减少写放大。
步骤S354:根据处理后的第一超级块组,确定第三超级块;
具体的,根据处理后的第一超级块组,该处理后的第一超级块组已被去除第二超级块,将第一超级块组中剩余的超级块中的至少一个超级块确定为第三超级块。
步骤S355:不对第一超级块组进行处理;
具体的,若地址范围对应的第一数据不存储于第一超级块组中的第一超级块,说明该地址范围对应的第一数据没有存储在即将进行垃圾回收的超级块中,则不对第一超级块组进行处理。
在本申请实施例中,通过在垃圾回收的启动中加入对用户删除数据行为的分析,即,加入修剪命令的判断,从而能够减少对即将失效的数据的搬移,从而减少写放大,进而延长了闪存设备的使用寿命。
在本申请实施例中,通过提供一种垃圾回收方法,应用于闪存设备,该闪存设备包括至少两个超级块,该垃圾回收方法,包括:构建第一命令列表,其中,第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间;根据每一个修剪命令的命令下发时间,构建第二命令列表,其中,第二命令列表包括至少一个逻辑块地址组,每一个逻辑块地址组包括至少两个修剪命令,每一个逻辑块地址组一一对应一个权重;获取第一超级块组,其中,第一超级块组包括至少两个第一超级块;根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,其中,第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中;根据第一超级块组以及若干个第二超级块,确定第三超级块,对第三超级块进行垃圾回收操作。
通过构建第一命令列表和第二命令列表,该第二命令列表包括至少一个逻辑块地址组,通过利用每一个逻辑块地址组的权重来确定第一逻辑块地址组,进一步通过确定第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中,以确定第二超级块为即将失效的数据所在的超级块,从而不对第二超级块进行数据搬移,本申请能够减少对即将失效的数据的搬移,从而减小写放大,进而延长闪存设备的寿命。
请再参阅图12,图12是本申请实施例提供的另一种闪存设备的结构示意图;
如图12所示,该闪存设备100包括一个或多个处理器122以及存储器123。其中,图12中以一个处理器122为例。
处理器122和存储器123可以通过总线或者其他方式连接,图10中以通过总线连接为例。
处理器122,用于提供计算和控制能力,以控制闪存设备100执行相应任务,例如,控制闪存设备100执行上述任一方法实施例中的垃圾回收方法,该垃圾回收方法,应用于闪存设备,该闪存设备包括至少两个超级块,该垃圾回收方法,包括:构建第一命令列表,其中,第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间;根据每一个修剪命令的命令下发时间,构建第二命令列表,其中,第二命令列表包括至少一个逻辑块地址组,每一个逻辑块地址组包括至少两个修剪命令,每一个逻辑块地址组一一对应一个权重;获取第一超级块组,其中,第一超级块组包括至少两个第一超级块;根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,其中,第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中;根据第一超级块组以及若干个第二超级块,确定第三超级块,对第三超级块进行垃圾回收操作。
通过构建第一命令列表和第二命令列表,该第二命令列表包括至少一个逻辑块地址组,通过利用每一个逻辑块地址组的权重来确定第一逻辑块地址组,进一步通过确定第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中,以确定第二超级块为即将失效的数据所在的超级块,从而不对第二超级块进行数据搬移,本申请能够减少对即将失效的数据的搬移,从而减小写放大,进而延长闪存设备的使用寿命。
处理器122可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、硬件芯片或者其任意组合;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。
存储器123作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及模块,如本申请实施例中的垃圾回收方法对应的程序指令/模块。处理器122通过运行存储在存储器123中的非暂态软件程序、指令以及模块,可以实现上述任一方法实施例中的垃圾回收方法。具体地,存储器123可以包括易失性存储器(volatile memory,VM),例如随机存取存储器(random access memory,RAM);存储器123也可以包括非易失性存储器(non-volatile memory,NVM),例如只读存储器(read-onlymemory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)或其他非暂态固态存储器件;存储器123还可以包括上述种类的存储器的组合。
存储器123可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器123可选包括相对于处理器122远程设置的存储器,这些远程存储器可以通过网络连接至处理器122。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器123中,当被一个或者多个处理器122执行时,执行上述任意方法实施例中的垃圾回收方法,例如,执行以上描述的图3所示的各个步骤。
本申请实施例还提供了一种非易失性计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的垃圾回收方法。例如,该非易失性计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CDROM)、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括一条或多条程序代码,该程序代码存储在非易失性计算机可读存储介质中。闪存设备的处理器从非易失性计算机可读存储介质读取该程序代码,处理器执行该程序代码,以完成上述实施例中提供的垃圾回收方法的方法步骤。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种非易失性计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,程序可存储于非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种垃圾回收方法,其特征在于,应用于闪存设备,所述闪存设备包括至少两个超级块,所述方法包括:
构建第一命令列表,其中,所述第一命令列表包括至少一个修剪命令以及每一个修剪命令一一对应的地址范围、命令下发时间;
根据每一个修剪命令的命令下发时间,构建第二命令列表,其中,所述第二命令列表包括至少一个逻辑块地址组,每一个逻辑块地址组包括至少两个修剪命令,每一个逻辑块地址组一一对应一个权重;
获取第一超级块组,其中,所述第一超级块组包括至少两个第一超级块;
根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,其中,所述第一逻辑块地址组包含的地址范围对应的数据至少部分存在于第二超级块中;
根据所述第一超级块组以及若干个所述第二超级块,确定第三超级块,对所述第三超级块进行垃圾回收操作。
2.根据权利要求1所述的方法,其特征在于,所述根据每一个修剪命令的命令下发时间,构建第二命令列表,包括:
每间隔固定时间扫描所述第一命令列表,获取每一个所述修剪命令的命令下发时间;
若所述第一命令列表中存在两个或两个以上的修剪命令的命令下发时间之差小于时间阈值,则获取所述修剪命令对应的地址范围;
将所述修剪命令对应的地址范围存储至逻辑块地址组,以构建所述第二命令列表,其中,每一个逻辑块地址组中的任意两个修剪命令的命令下发时间的差值小于时间阈值。
3.根据权利要求2所述的方法,其特征在于,在将所述修剪命令对应的地址范围存储至逻辑块地址组之后,所述方法还包括:
将所述修剪命令对应的地址范围和所述修剪命令的下发时间从所述第一命令列表中删除,得到空闲位置,其中,所述空闲位置用于存储下一个修剪指令对应的地址范围和所述下一个修剪命令的命令下发时间。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述修剪命令对应的地址范围已存在于所述第二命令列表,则获取所述逻辑块地址组的删除频度和所述逻辑块地址组中每一地址范围对应的命令下发时间,其中,所述删除频度为所述逻辑块地址组中的数据被删除的次数;
根据所述逻辑块地址组中每一地址范围对应的命令下发时间,计算间隔时间;
根据所述间隔时间的平均值和时间间隔阈值,确定所述间隔时间的等级值;
根据预设规则更新所述逻辑块地址组的权重,得到更新后的权重,其中,更新后的权重=(所述逻辑块地址组的删除频度+频度粒度)*第一系数+所述间隔时间的等级值*第二系数。
5.根据权利要求4所述的方法,其特征在于,所述根据所述间隔时间的平均值和时间间隔阈值,确定所述间隔时间的等级值,包括:
若所述间隔时间的平均值小于或等于所述时间间隔阈值的第一比例时,则将所述间隔时间的等级值确定为第一等级值;
若所述间隔时间的平均值大于所述时间间隔阈值的第一比例,并且,小于或等于所述时间间隔阈值的第二比例时,则将所述间隔时间的等级值确定为第二等级值,其中,所述第二等级值小于所述第一等级值;
若所述间隔时间的平均值大于所述时间间隔阈值的第二比例时,则将所述间隔时间的等级值确定为第三等级值,其中,所述第三等级值小于所述第二等级值。
6.根据权利要求1所述的方法,其特征在于,所述获取第一超级块组,包括:
获取有效数据页的个数最小的超级块,将有效数据页的个数最小的超级块确定为最小超级块;
根据所述最小超级块,确定若干个所述第一超级块,进而获取所述第一超级块组,其中,所述第一超级块组中的任意一个所述第一超级块的有效数据页的个数与最小超级块的有效数据页的个数之差小于个数阈值,其中,个数阈值=有效数据页的个数的比例阈值*最小超级块的有效数据页的个数。
7.根据权利要求1所述的方法,其特征在于,所述根据每一逻辑块地址组的权重,确定第一逻辑块地址组,以确定若干个第二超级块,包括:
获取每一逻辑块地址组的权重;
若所述逻辑块地址组的权重大于权重阈值,则获取所述逻辑块地址组中的修剪命令对应的地址范围;
根据所述逻辑块地址组中的修剪命令对应的地址范围,确定所述第一逻辑块地址组,其中,所述第一逻辑块地址组包括至少一个修剪命令对应的地址范围;
根据所述第一逻辑块地址组中的地址范围,获取所述地址范围对应的第一数据;
若所述地址范围对应的第一数据存储于所述第一超级块组中的第一超级块,则确定所述第一超级块为第二超级块。
8.根据权利要求1所述的方法,其特征在于,所述根据所述第一超级块组以及若干个所述第二超级块,确定第三超级块,包括:
将所述第一超级块组以及若干个所述第二超级块进行比对,若所述第二超级块为第一超级块组中的超级块,则将所述第二超级块从所述第一超级块组中删除,得到处理后的第一超级块组;
根据所述处理后的第一超级块组,确定第三超级块。
9.一种闪存设备控制器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8任一项所述的垃圾回收方法。
10.一种闪存设备,其特征在于,包括:
如权利要求9所述的闪存设备控制器;
与所述闪存设备控制器通信连接的至少一个闪存介质。
CN202311842134.3A 2023-12-27 2023-12-27 垃圾回收方法、闪存设备控制器及闪存设备 Pending CN117785055A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311842134.3A CN117785055A (zh) 2023-12-27 2023-12-27 垃圾回收方法、闪存设备控制器及闪存设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311842134.3A CN117785055A (zh) 2023-12-27 2023-12-27 垃圾回收方法、闪存设备控制器及闪存设备

Publications (1)

Publication Number Publication Date
CN117785055A true CN117785055A (zh) 2024-03-29

Family

ID=90396060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311842134.3A Pending CN117785055A (zh) 2023-12-27 2023-12-27 垃圾回收方法、闪存设备控制器及闪存设备

Country Status (1)

Country Link
CN (1) CN117785055A (zh)

Similar Documents

Publication Publication Date Title
US11579773B2 (en) Memory system and method of controlling memory system
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
KR101173775B1 (ko) 메모리 맵핑 기술
CA3012236C (en) Method and apparatus for accessing flash memory device
KR101663667B1 (ko) 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
CN110968253B (zh) 一种数据存储方法、装置及系统
CN103294604A (zh) 闪存器件和使用闪存器件的电子设备
JP2015001908A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
WO2016086411A1 (zh) 一种控制器、闪存装置、识别数据块稳定性的方法以及在闪存装置中存储数据的方法
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
KR20210099870A (ko) 메모리 시스템 및 그것의 동작방법
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
KR20090107098A (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20140109689A (ko) 하이브리드 플래시 메모리의 성능과 수명 최적화 장치 및 방법
TW202242664A (zh) 以局部清理操作來進行垃圾回收的方法與相關控制器和儲存系統
CN117785055A (zh) 垃圾回收方法、闪存设备控制器及闪存设备
JP5452735B2 (ja) メモリコントローラ及びメモリアクセス方法
CN116560906A (zh) 元数据重建方法、数据存储装置控制器及数据存储装置
CN117908761A (zh) 数据储存装置与写入缓存器管理方法
CN116382598A (zh) 数据搬移方法、闪存设备控制器及闪存设备
CN117950573A (zh) 数据储存装置与写入缓存器管理方法
CN115904800A (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