CN116974481A - 一种空闲物理块水位线的调整方法和存储设备 - Google Patents

一种空闲物理块水位线的调整方法和存储设备 Download PDF

Info

Publication number
CN116974481A
CN116974481A CN202310953508.2A CN202310953508A CN116974481A CN 116974481 A CN116974481 A CN 116974481A CN 202310953508 A CN202310953508 A CN 202310953508A CN 116974481 A CN116974481 A CN 116974481A
Authority
CN
China
Prior art keywords
physical block
water line
physical
effective data
recovered
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
CN202310953508.2A
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 CN202310953508.2A priority Critical patent/CN116974481A/zh
Publication of CN116974481A publication Critical patent/CN116974481A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及空闲物理块水位线的调整方法和存储设备。本公开实施例中,通过获取至少一个待回收物理块,扫描每个待回收物理块中是否存在有效数据;进而,基于扫描结果识别当前写模式;若识别当前写模式为顺序写模式,则提升空闲物理块水位线为第一水位线,高于随机写模式下预设的第二水位线,能够提供更多的空闲物理块用于GC任务和/或SWL任务,由于GC任务回收的是不存在有效数据的脏物理块,无需占用空闲物理块,因此提供的空闲物理块用于SWL任务回收冷数据物理块,而GC任务会产生空闲物理块,使得消耗空闲物理块和产生空闲物理块均衡,对写任务没有影响,提高写性能稳定性。

Description

一种空闲物理块水位线的调整方法和存储设备
技术领域
本公开实施例涉及固态硬盘技术领域,具体涉及一种空闲物理块水位线的调整方法和存储设备。
背景技术
随着硬盘技术的发展,固态硬盘(Solid State Disk,SSD)逐渐替代机械硬盘(HardDiskDrive,HDD),以提升数据存储稳定性和数据读取效率。
由于SSD存储介质NAND独有的特性,先擦再写,按块擦除,按页顺序写,因此,需要维持一定量的、可立即使用的空闲物理块(Free Block)用于回收写有数据的物理块,得到空闲物理块,其中,回收方式包括垃圾回收(Gargebe Collection,GC)、静态磨损均衡(StaticWear Leveling,SWL)回收冷数据物理块。
为了提升随机写性能,提高预留空间(Over-Provisioning,OP),通常会将可立即使用的空闲物理块的数量保持在一个较低的阈值(也称为空闲物理块水位线),以降低GC任务对写性能的影响。在SSD中小范围空间顺序写热数据时会将某些物理块编程/擦除次数(Program/Erase Count,PE)写得很大,为了均衡磨损介质,会将冷数据所在物理块回收释放出来,即静态磨损均衡(SWL)。冷数据所在物理块中的有效数据比例较高,为了减少对主机(Host)写性能的冲击,传统的做法,SSD中的控制部件会尽可能以允许的最低的速率来回收冷数据物理块,这样能保证主机写速率仍然较高。静态磨损均衡前,空闲物理块水位线决定了冷数据回收的最小速率,水位线越高,回收的最小速率越快,也即决定了主机写性能会下降幅度。因此,亟需提供一种空闲物理块水位线的调整方法,以提高写性能稳定性。
发明内容
本公开的至少一个实施例提供了一种空闲物理块水位线的调整方法、存储设备及存储介质,以提高写性能稳定性。
第一方面,本公开实施例提出一种空闲物理块水位线的调整方法,包括:
获取至少一个待回收物理块;
扫描每个待回收物理块中是否存在有效数据;
基于扫描结果识别当前写模式;
若识别当前写模式为顺序写模式,则调整空闲物理块水位线为第一水位线,第一水位线高于随机写模式下预设的第二水位线。
在一些实施例中,基于扫描结果识别当前写模式,包括:
若连续扫描预设数量个待回收物理块中均不存在有效数据,则确定当前写模式为顺序写模式。
在一些实施例中,空闲物理块水位线的调整方法还包括:
若扫描到任一待回收物理块中存在有效数据,则确定当前写模式为随机写模式;
在随机写模式下,调整空闲物理块水位线为第二水位线。
在一些实施例中,扫描每个待回收物理块中是否存在有效数据,包括:
扫描待回收物理块中记录有数据的物理页;
在FTL表中查找是否记录有物理页,其中,FTL表用于记录从逻辑地址到物理地址的映射信息;
若记录有物理页,则确定物理页中记录的数据为有效数据。
在一些实施例中,扫描每个待回收物理块中是否存在有效数据之后,空闲物理块水位线的调整方法还包括:
基于扫描结果,维护顺序写模式对应的计数参数的值,其中,计数参数表征连续扫描的、不存在有效数据的待回收物理块的数量;
若连续扫描预设数量个待回收物理块中均不存在有效数据,则确定当前写模式为顺序写模式,包括:
若计数参数的值大于或等于预设数量,则确定当前写模式为顺序写模式。
在一些实施例中,基于扫描结果,维护顺序写模式对应的计数参数的值,包括:
针对任一待回收物理块,若扫描结果为待回收物理块中不存在有效数据,则将计数参数的值加一;若扫描结果为待回收物理块中存在有效数据,则将计数参数的值清零。
在一些实施例中,空闲物理块水位线的调整方法还包括:
若计数参数的值小于预设数量,则确定当前写模式为随机写模式。
在一些实施例中,第一水位线为固定值或动态值;
若第一水位线为动态值,则确定有效数据比例,其中,有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;
基于有效数据比例,确定第一水位线,其中,第一水位线与有效数据比例呈反相关关系;或者,基于有效数据比例、预设的最低水位线、历史有效数据比例,确定第一水位线,其中,第一水位线与有效数据比例呈正相关关系。
在一些实施例中,第一水位线与第二水位线的差值为调整值,调整值为固定值或动态值;
若调整值为动态值,则确定有效数据比例,其中,有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;
基于有效数据比例,确定调整值,其中,调整值与有效数据比例呈反相关关系;或者,
基于有效数据比例、预设的最低水位线、历史有效数据比例,确定调整值,其中,调整值与有效数据比例呈正相关关系。
在一些实施例中,基于有效数据比例、预设的最低水位线、历史有效数据比例,确定第一水位线,包括:
至少一次调整第一水位线,直至有效数据比例与目标差值之间的比值收敛于或者等于历史有效数据比例;其中,目标差值为第一水位线与最低水位线之差。
在一些实施例中,基于有效数据比例、预设的最低水位线、历史有效数据比例,确定调整值,包括:
以第二水位线或历史最低水位线为初始值按照调整值进行至少一次调整得到第一水位线,直至有效数据比例与目标差值之间的比值收敛于或者等于历史有效数据比例;其中,目标差值为第一水位线与最低水位线之差。
在一些实施例中,若第一水位线为动态值,则确定第一水位线小于或等于预设的OP空间。
在一些实施例中,若调整值为动态值,则确定第一水位线小于或等于预设的OP空间。
在一些实施例中,扫描每个待回收物理块中是否存在有效数据之后,空闲物理块水位线的调整方法还包括:
读取存在有效数据的待回收物理块中的有效数据;
将有效数据写入空闲物理块;
完成写入后,擦除存在有效数据的待回收物理块中的所有数据,得到对应的空闲物理块。
在一些实施例中,空闲物理块水位线的调整方法还包括:
若调整空闲物理块水位线为第一水位线,则在擦除存在有效数据的待回收物理块中的所有数据,得到对应的空闲物理块后,将空闲物理块作为候选资源池中的物理块,其中,候选资源池用于在空闲物理块水位线提升后,向空闲物理块水位线对应的资源池提供空闲物理块。
在一些实施例中,待回收物理块来源于以下至少一种物理块:垃圾回收任务针对的脏物理块,编程错误回收任务针对的产生编程错误的物理块,静态磨损均衡任务针对的冷数据物理块。
在一些实施例中,空闲物理块水位线的调整方法还包括:
若任一物理块产生编程错误,需要关闭物理块并将物理块中的数据回收到空闲物理块时,则在调整空闲物理块水位线为第一水位线后,执行编程错误回收任务;
和/或,
若发起静态磨损均衡任务时,历史回收的脏物理块的有效数据比例不为零且小于静态磨损均衡任务回收的冷数据物理块的有效数据比例,则在调整空闲物理块水位线为第一水位线,执行静态磨损均衡任务。
第二方面,本公开实施例还提出一种空闲物理块水位线的调整装置,包括:
获取单元,用于获取至少一个待回收物理块;
扫描单元,用于扫描每个待回收物理块中是否存在有效数据;
识别单元,用于基于扫描结果识别当前写模式;
调整单元,用于识别单元识别当前写模式为顺序写模式后,调整空闲物理块水位线为第一水位线,第一水位线高于随机写模式下预设的第二水位线。
第三方面,本公开实施例还提出一种电子设备,其中,包括存储器、处理器以及存储在所述存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如第一方面任一实施例所述空闲物理块水位线的调整方法的步骤。
第四方面,本公开实施例还提出一种存储设备,其中,控制部件与NVM芯片,所述控制部件执行如第一方面任一实施例所述空闲物理块水位线的调整方法的步骤。
第五方面,本公开实施例还提出一种计算机可读存储介质,其中,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如第一方面任一实施例所述空闲物理块水位线的调整方法的步骤。
第六方面,本公开实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,计算机的至少一个处理器从所述计算机可读存储介质中读取并执行该计算机程序,使得所述计算机执行如第一方面任一实施例所述空闲物理块水位线的调整方法的步骤。
可见,本公开的至少一个实施例中,通过获取至少一个待回收物理块,可以扫描每个待回收物理块中是否存在有效数据;进而,基于扫描结果识别当前写模式,例如,在连续扫描预设数量个待回收物理块中均不存在有效数据时,可以确定当前写模式为顺序写模式,实现主机写行为的模式识别。若识别当前写模式为顺序写模式,写入数据会覆盖连续多个逻辑块,导致这些逻辑块映射的旧物理块变为不存在有效数据的脏物理块,因此,GC任务回收这些不存在有效数据的脏物理块时,无需占用空闲物理块来保存这些脏物理块中的有效数据(有效数据为零)。因此,在顺序写模式下,提升空闲物理块水位线为第一水位线,高于随机写模式下预设的第二水位线,能够提供更多的空闲物理块用于GC任务和/或SWL任务,由于GC任务实际不会占用这些空闲物理块,对顺序写任务没有影响,且这些空闲物理块可以用于SWL任务回收冷数据物理块,而GC任务会产生空闲物理块,使得消耗空闲物理块和产生空闲物理块能够均衡,总体上对顺序写任务没有影响,提高写性能稳定性。甚至由于GC任务直接擦除脏物理块,相比SWL任务回收冷数据物理块需要先转移冷数据物理块中的有效数据,再擦除冷数据物理块,GC任务能够更快地产生空闲物理块,参与写命令的处理,提升写命令的处理性能。此外,由于SWL任务回收冷数据物理块也能够产生空闲物理块,因此,可以提供更多的空闲物理块参与写命令的处理,提升写命令的处理性能,从而提高写性能稳定性。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种存储设备的示意图;
图2为本公开实施例提供的一种大块的示意图;
图3为本公开实施例提供的一种垃圾回收的示意图;
图4为本公开实施例提供的一种垃圾回收的流程图;
图5为本公开实施例提供的一种空闲物理块水位线的调整方法的流程示意图;
图6为本公开实施例提供的一种写模式识别的流程示意图;
图7为本公开实施例提供的一种顺序写性能分布示意图;
图8为本公开实施例提供的另一种顺序写性能分布示意图;
图9为本公开实施例提供的一种空闲物理块水位线的调整装置的示意图;
图10为本公开实施例提供的一种电子设备的示例性框图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不受限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样被改变。此外,为了增加的清楚和简明,可省略在理解本申请的公开之后已知的特征的描述。
在此描述的特征可以以不同的形式来实现,而不应被解释为受限于在此描述的示例。相反,已提供在此描述的示例,以仅示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。
贯穿说明书,当组件被描述为“连接到”或“结合到”另一组件时,所述组件可直接“连接到”或“结合到”所述另一组件,或者可存在一个或多个介于它们之间的其它组件。相反,当元件被描述为“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其它元件。同样地,相似的表述(例如,“在……之间”与“紧接在……之间”以及“与……邻近”与“与……紧邻”)也应以相同的方式来解释。如在此使用的,术语“和/或”包括相关所列项中的任意一个或相关所列项中的任意两个或更多个的任意组合。
尽管诸如“第一”、“第二”和“第三”的术语在此可用于描述各种构件、组件、区域、层或者部分,但是这些构件、组件、区域、层或者部分不受这些术语所限制。相反,这些术语仅用于将一个构件、组件、区域、层或者部分与另一构件、组件、区域、层或者部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或者第一部分也可被称为第二构件、第二组件、第二区域、第二层或者第二部分。
在此使用的术语仅用于描述各种示例,并将不用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其它特征、数量、操作、构件、元件和/或它们的组合。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与基于本申请的公开的理解和本公开所属领域的普通技术人员通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且不应被理想化或过于形式化地解释。在此关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
固态硬盘(Solid State Disk,SSD)的性能一致性指的是固态硬盘性能的稳定性,也即,IOPS(每秒执行的IO次数)/BW(带宽)等性能指标的变化幅度不能太大。性能一致性越好,用户业务性能也会越稳定,用户体验感才会更好。不同的用户数据模型对读写压力不同,这就要求性能一致性能够满足各种读写压力场景。影响固态硬盘性能一致性的因素很多,比如固态硬盘内部写仲裁策略,后端NAND带宽分配,路径控制资源配比等,其中,最重要的还是固态硬盘的固件内部通过调节写任务与垃圾回收(Gargebe Collection,GC)任务的比例,达到SSD性能动态平衡。GC是固态硬盘为了回收出空闲物理块而一直存在的后台操作。低压力混合读写场景下,用户数据压力小,如果此时GC全速执行的话,GC写速度远大于主机(Host)写速度,也就是提供空闲物理块的速度大于消耗空闲物理块的速度,空闲物理块会维持在高位附近,临界于开启GC与不开启GC的动荡点。在这种情况下,GC写与Host写的比例失调,固态硬盘的性能一致性不佳。
图1为本公开实施例提供的一种存储设备的示意图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(SerialAttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备100。主机可以是能够通过上述方式同存储设备100相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口110、控制部件120、一个或多个NVM(Non-volatile Memory,非易失存储器)芯片130以及DRAM(Dynamic RandomAccessMemory,动态随机访问存储器)140。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandomAccess Memory,磁阻存储器)、RRAM(Resistive RandomAccess 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 SpecificIntegratedCircuit,应用专用集成电路)或者其组合的形式。控制部件120也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件120的硬件来处理IO(Input/Output)命令。控制部件120还可以耦合到DRAM 140,并可访问DRAM 140的数据。在DRAM存储FTL(Flash Translation Layer,闪存转换层)表和/或缓存的IO命令的数据。
控制部件120包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(Chip Enable,CE)信号的一个或多个逻辑单元(Logic UNit,LUN)。NAND闪存封装内包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
NVM存储介质上通常按页来存储和读取数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备100中,利用FTL表来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备100的存储空间。物理地址是用于访问存储设备100的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。可选地,访问存储设备100的主机提供FTL。存储有从逻辑地址到物理地址的映射信息的表结构被称为FTL表。通常FTL表的数据项记录了存储设备中以数据页为单位的地址映射关系。FTL表由控制部件120存储到DRAM 140中。
图2为本公开实施例提供的一种大块的示意图。大块包括来自多个逻辑单元(称为逻辑单元组)的物理块。优选的,每个逻辑单元为大块提供一个物理块。作为举例,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个物理块,分别来自16个逻辑单元(LUN)。在图2的例子中,大块0包括来自每个逻辑单元(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)过程以回收脏数据。
SSD中的存储器(例如图1中的NVM芯片130)以物理块(Block)的形式组织。每个物理块包含多个物理页(Page),物理页是一个相对较小的存储单元。在SSD中,读取和写入操作可以在物理页级别上执行,但是,擦除操作只能在物理块级别上执行。擦除操作可能比读取或写入操作需要更长的时间。为了覆盖存储在物理块中的数据(即用更新的数据替换旧数据),必须执行整个物理块的擦除操作。为了在SSD中覆盖数据,其中更新的数据被写入SSD存储器中的一个空闲(free)页面,而不是写入包含旧数据的同一页面。包含旧数据的页面被标记为无效页。无效页保持无效状态,直到包含该无效页面的整个物理块被擦除。
在SSD的操作过程中,进行垃圾回收(Gargebe Collection,GC)以维护一个空闲物理块池(Free Block Pool)。空闲物理块池包含可用于写入新数据的空闲页面的物理块。空闲物理块(Free Block)从可能包含有效和无效数据的物理块中回收。垃圾回收过程首先选择一个目标物理块进行回收。位于目标物理块的任何有效页面(即包含有效数据的页面)中的数据都会被复制到另一个空闲物理块中,然后目标物理块被整体擦除,从而成为空闲物理块池中的一个空闲物理块。
图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可以是链表、线性表或其他用于表示集合的数据结构。在集合中记录物理块的地址,以访问物理块。
可选地,以大块为单位(替代以物理块为单位)实施垃圾回收。
存储设备还进行磨损均衡操作以使得存储设备在使用过程中各个物理块经历大体上相同的被擦除次数,从而降低个别物理块的寿命耗尽对存储设备的寿命产生不利影响。
SSD通常提供预留空间(Over-Provisioning,OP),也即,SSD中的存储介质实际的物理存储空间(Physical Capacity)大于SSD提供给主机的标称逻辑地址空间(LogicalCapacity),则OP空间的计算式为(Physical Capacity-Logical Capacity)/LogicalCapacity。垃圾回收任务将OP所提供的额外的物理存储空间作为临时的工作空间。
图5为本公开实施例提供的一种空闲物理块水位线的调整方法的流程示意图,该空闲物理块水位线的调整方法的执行主体为电子设备,电子设备包括但不限于存储设备(例如固态硬盘、闪存设备等)、智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、台式机、笔记本电脑、一体机、智能家居设备、服务器等,其中,服务器可以是独立的服务器,也可以是多个服务器的集群,可以包括搭建在本地的服务器和架设在云端的服务器。该空闲物理块水位线的调整方法的执行主体还可以为存储设备的控制部件。
如图5所示,空闲物理块水位线的调整方法可以包括但不限于步骤501至步骤504:
在步骤501中,获取至少一个待回收物理块。
本实施例中,待回收物理块为脏物理块,脏物理块为含有脏数据的物理块,脏数据为被写入数据但不再被引用(例如,FTL表中没有记录)的物理页地址中记录的数据,其中,FTL表维护从逻辑地址到物理地址的映射信息,若FTL表中没有记录某个物理页地址,表明该物理页地址没有映射逻辑页地址,由于逻辑页地址是操作系统等上层软件感知到的存储空间,因此,该物理页地址中记录的数据是用户无法感知到的、应当被擦除的脏数据。
本实施例中,待回收物理块可以是SSD执行垃圾回收(Garbage Collection,GC)任务时从脏物理块集合中获取的脏物理块,其中,脏物理块集合可以是链表、线性表或其他用于表示集合的数据结构。在集合中记录物理块的地址,以访问物理块。
在步骤502中,扫描每个待回收物理块中是否存在有效数据。
本实施例中,针对任一待回收物理块,扫描待回收物理块中记录有数据的物理页;进而,在FTL表中查找是否记录有该物理页;若FTL表中记录有该物理页,则确定该物理页中记录的数据为有效数据,说明该待回收物理块中存在有效数据;若FTL表中没有记录该物理页地址,则确定该物理页中记录的数据为脏数据。
例如,图3所示的物理块0为待回收物理块。物理块0的物理页310、312、314和316等由网格框所指示的物理页在FTL表中没有记录,其上的数据是脏数据。物理块0的物理页330、332、334与336等由空白方框指示的物理页在FTL表中有记录,其上的数据是有效数据。因此,扫描物理块0,可以确定记录有数据的物理页为310、312、314和316,以及330、332、334与336;进而,在FTL表中查找是否记录有这些物理页,由于物理页330、332、334与336在FTL表中有记录,则确定物理页330、332、334与336中记录的数据为有效数据,说明物理块0中存在有效数据。
在步骤503中,基于扫描结果识别当前写模式。
本实施例中,SSD的写模式包括顺序写模式和随机写模式,基于扫描每个待回收物理块中是否存在有效数据的扫描结果,可以识别当前写模式是顺序写模式还是随机写模式。
在一些实施例中,基于扫描结果识别当前写模式的一种实施方式为:若连续扫描预设数量个待回收物理块中均不存在有效数据,则确定当前写模式为顺序写模式。
本实施例中,考虑到SSD的写模式包括顺序写模式和随机写模式,而顺序写模式下,写入数据会覆盖连续多个逻辑块地址(Logical BlockAddress,LBA),导致这些逻辑块映射的旧物理块变为不存在有效数据的脏物理块。例如,在顺序写模式下,SSD通常进行大容量文件写入,例如大容量文件拷贝、视频编辑等任务,会覆盖连续多个逻辑块地址中的数据(即用更新的数据替换旧数据),导致这些逻辑块映射的旧物理块中的数据成为脏数据,不存在有效数据。因此,设置数量阈值为预设数量,用以判断当前写模式是否为顺序写模式,若连续扫描预设数量个待回收物理块中均不存在有效数据,这些待回收物理块中存储的数据都是脏数据,说明当前写模式为顺序写模式。若扫描到任一待回收物理块中存在有效数据,则确定当前写模式为随机写模式。
例如,连续预设数量为10,若连续扫描10个待回收物理块中均不存在有效数据,说明当前写模式为顺序写模式;若连续扫描3个待回收物理块中均不存在有效数据,但是扫描的第4个待回收物理块中存在有效数据,说明当前写模式不是顺序写模式(也即当前写模式为随机写模式)。
需要说明的是,在本公开其他实施例中还可以采用其他方式识别写模式为随机写模式还是顺序写模式,而本实施例中根据顺序写计数的方式更加简单直接,容易实现。
在步骤504中,若识别当前写模式为顺序写模式,则调整空闲物理块水位线为第一水位线,第一水位线高于随机写模式下预设的第二水位线。
本实施例中,在顺序写模式下,由于写入数据会覆盖连续多个逻辑块,导致这些逻辑块映射的旧物理块变为不存在有效数据的脏物理块,因此,GC任务回收这些不存在有效数据的脏物理块时,无需占用空闲物理块来保存这些脏物理块中的有效数据(有效数据为零)。因此,在顺序写模式下,提升空闲物理块水位线为第一水位线,高于随机写模式下预设的第二水位线,能够提供更多的空闲物理块用于GC任务和/或SWL任务,由于GC任务实际不会占用这些空闲物理块,对顺序写任务没有影响,且这些空闲物理块可以用于SWL任务回收冷数据物理块,而GC任务会产生空闲物理块,使得消耗空闲物理块和产生空闲物理块能够均衡,总体上对顺序写任务没有影响,提高写性能稳定性。
需要说明的是,其中空闲物理块水位线为固态存储设备的预留空间(即OP空间)中可使用的空闲物理块的数量阈值。
但是,当确定写模式不是顺序写模式(也即当前写模式为随机写模式)时,由于GC任务回收的物理块中可能包含有效数据,回收过程需要占用空闲物理块来承载待回收物理块中的有效数据,一旦将更多空闲物理块用于GC任务,会影响写任务,例如GC任务占用系统带宽,导致实际写带宽降低,从而影响写性能稳定性。因此,在随机写模式下,降低空闲物理块水位线为第二水位线,使更多空闲物理块用于写任务,提升写命令的处理性能,从而提高写性能稳定性。
可见,本公开实施例,能够实现主机写行为的模式识别,进而自动调整空闲物理块水位线,以提高写性能稳定性。具体地,通过获取至少一个待回收物理块,可以扫描每个待回收物理块中是否存在有效数据;进而,基于扫描结果识别当前写模式,例如,在连续扫描预设数量个待回收物理块中均不存在有效数据时,可以确定当前写模式为顺序写模式,实现主机写行为的模式识别。若识别当前写模式为顺序写模式,则提升空闲物理块水位线为第一水位线,高于随机写模式下预设的第二水位线,能够提供更多的空闲物理块用于GC任务和/或SWL任务,由于GC任务回收的是不存在有效数据的脏物理块,无需占用空闲物理块,因此提供的空闲物理块用于SWL任务回收冷数据物理块,而GC任务会产生空闲物理块,使得消耗空闲物理块和产生空闲物理块均衡,对写任务没有影响,提高写性能稳定性。甚至由于GC任务直接擦除脏物理块,相比SWL任务回收冷数据物理块需要先转移冷数据物理块中的有效数据,再擦除冷数据物理块,GC任务能够更快地产生空闲物理块,参与写任务,提升写命令的处理性能。此外,由于SWL任务回收冷数据物理块也能够产生空闲物理块,因此,可以提供更多的空闲物理块参与写命令的处理,提升写命令的处理性能,从而提高写性能稳定性。
在上述实施例的基础上,在步骤502扫描每个待回收物理块中是否存在有效数据之后,可以执行GC任务,GC过程描述如下:
读取存在有效数据的待回收物理块中的有效数据;将有效数据写入空闲物理块;完成写入后,擦除存在有效数据的待回收物理块中的所有数据,得到对应的空闲物理块。
本实施例中,将有效数据写入空闲物理块,该空闲物理块处于SSD提供的预留空间(OP),由于操作系统等上层软件无法感知到OP空间,因此,用户不会感知到该空闲物理块被用于GC任务。需要说明的是,OP空间包含的空闲物理块可以是固定物理块,也可以是动态划分的物理块。
在一些实施例中,在步骤504调整空闲物理块水位线为第一水位线后,也即提升了空闲物理块水位线后,则在GC过程中擦除存在有效数据的待回收物理块中的所有数据,得到对应的空闲物理块后,将该空闲物理块作为候选资源池中的物理块,其中,候选资源池用于在空闲物理块水位线提升后,向空闲物理块水位线对应的资源池提供空闲物理块。
本实施例中,由于在顺序写模式下,GC任务回收的是不存在有效数据的脏物理块,无需占用空闲物理块来保存这些脏物理块中的有效数据(有效数据为零),因此,GC任务的回收效率相比SWL任务回收冷数据物理块的效率更高,进而将GC任务擦除脏物理得到的空闲物理块作为提升空闲物理块水位线而引入的空闲物理块,高效地实现空闲物理块水位线的提升。
在上述实施例的基础上,在步骤502扫描每个待回收物理块中是否存在有效数据之后,基于扫描结果,维护顺序写模式对应的计数参数的值,其中,计数参数表征连续扫描的、不存在有效数据的待回收物理块的数量。基于顺序写模式对应的计数参数的值,图6为本公开实施例提供的一种写模式识别的流程示意图,如图6所示,包括但不限于如下步骤601至步骤606:
在步骤601中,针对任一待回收物理块,扫描该待回收物理块中是否存在有效数据;若扫描结果为该待回收物理块中不存在有效数据,则执行步骤602;若扫描结果为该待回收物理块中存在有效数据,则执行步骤603。
在步骤602中,将计数参数的值加一,并执行步骤604。
在步骤603中,将计数参数的值清零,并执行步骤604。
在步骤604中,判断计数参数的值是否大于或等于预设数量;若是,则执行步骤605;否则,执行步骤606。
在步骤605中,确定当前写模式为顺序写模式。
在步骤606中,确定当前写模式为随机写模式。
本实施例中,由于计数参数表征连续扫描的、不存在有效数据的待回收物理块的数量,因此,当计数参数的值累积到预设数量时,说明SSD的写模式由随机写模式进入顺序写模式,在顺序写模式下,会持续扫描待回收物理块,若待回收物理块中仍然不存在有效数据,则计数参数的值会继续累积,也即,计数参数的值大于预设数量,但是,只要扫描到一个待回收物理块中存在有效数据,则退出顺序写模式,SSD进入随机写模式,为了监控是否重新进入顺序写模式,需要重新进行计数,因此,将计数参数的值清零,从零开始重新累积计数参数的值,直至计数参数的值累积到预设数量时,再次进入顺序写模式。
需要说明的是,在顺序写模式下通过持续、按预设间隔或根据通过响应需求来监控是否退出或重新进入顺序写模式,以便能及时响应写模式的变化来自适应调整水位线的水平,提高写性能稳定性。
在上述实施例的基础上,步骤504中,若识别当前写模式为顺序写模式,则调整空闲物理块水位线为第一水位线,第一水位线为固定值或动态值。
若第一水位线为固定值,则本领域技术人员可以基于实际需要配置固定值的具体取值,以使第一水位线高于随机写模式下预设的第二水位线,本实施例不限定固定值的具体取值。
若第一水位线为动态值,则确定有效数据比例,其中,有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;进而,采用如下两种方式确定第一水位线:
方式一:基于有效数据比例,确定第一水位线,其中,第一水位线与有效数据比例呈反相关关系。
本实施例中,有效数据比例越低,则确定的第一水位线越高;相反地,有效数据比例越高,则确定的第一水位线越低。本实施例不限定第一水位线与有效数据比例之间具体的反相关关系,本领域技术人员可以根据实际需要配置具体的反相关关系。
方式二:基于有效数据比例、预设的最低水位线、历史有效数据比例,确定第一水位线,其中,第一水位线与有效数据比例呈正相关关系。
本实施例中,预设的最低水位线可以为随机写模式下的第二水位线,也可以低于随机写模式下的第二水位线。本实施例中,至少一次调整第一水位线,直至有效数据比例与目标差值之间的比值收敛于或者等于历史有效数据比例;其中,目标差值为第一水位线与最低水位线之差。
也即,基于条件:(有效数据比例/目标差值)等于或者收敛于历史有效数据比例,确定第一水位线。
需要说明的是,若第一水位线为动态值,则第一水位线需要小于或等于预设的OP空间,否则,一旦第一水位线高于OP空间,则用户会感知到有些物理块被占用(这些物理块被用于GC任务或SWL任务,所以显示被占用),更严重的是,超出OP空间的物理块本应该用于写任务,但是被GC任务使用,反而降低写任务处理效率,降低写性能,从而降低写性能稳定性。
在上述实施例的基础上,步骤504中,若识别当前写模式为顺序写模式,则调整空闲物理块水位线为第一水位线,第一水位线与随机写模式下的第二水位线的差值为调整值,其中,调整值为固定值或动态值。
若调整值为固定值,则本领域技术人员可以基于实际需要配置固定值的具体取值,以使第一水位线高于随机写模式下预设的第二水位线,本实施例不限定固定值的具体取值。
若调整值为动态值,则确定有效数据比例,其中,有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;进而,采用如下两种方式确定调整值:
方式一:基于有效数据比例,确定调整值,其中,调整值与有效数据比例呈反相关关系。
本实施例中,有效数据比例越低,则确定的调整值越高;相反地,有效数据比例越高,则确定的调整值越低。本实施例不限定调整值与有效数据比例之间具体的反相关关系,本领域技术人员可以根据实际需要配置具体的反相关关系。
方式二:基于有效数据比例、预设的最低水位线、历史有效数据比例,确定调整值,其中,调整值与有效数据比例呈正相关关系。
本实施例中,预设的最低水位线可以为随机写模式下的第二水位线,也可以低于随机写模式下的第二水位线。本实施例中,以第二水位线或历史最低水位线为初始值按照调整值进行至少一次调整得到第一水位线,直至有效数据比例与目标差值之间的比值收敛于或者等于历史有效数据比例;其中,目标差值为第一水位线与最低水位线之差。
需要说明的是,若调整值为动态值,则第一水位线(即第二水位线按照调整值进行调整后得到的水位线)需要小于或等于预设的OP空间,否则,一旦第一水位线高于OP空间,则用户会感知到有些物理块被占用(这些物理块被用于GC任务或SWL任务,所以显示被占用),更严重的是,超出OP空间的物理块本应该用于写任务,但是被GC任务使用,反而降低写任务处理效率,降低写性能,从而降低写性能稳定性。
在上述实施例的基础上,待回收物理块来源于以下至少一种物理块:垃圾回收任务针对的脏物理块,编程错误回收任务针对的产生编程错误(program error)的物理块,静态磨损均衡(Static Wear Leveling,SWL)任务针对的冷数据物理块。
若任一物理块产生编程错误,需要关闭物理块并将物理块中的数据回收到空闲物理块时,则直接调整空闲物理块水位线为第一水位线,然后执行编程错误回收任务。由于提升空闲物理块水位线为第一水位线,能够提升更多的空闲物理块用于编程错误回收任务,提升回收产生编程错误的物理块的效率,更快地得到由编程错误回收任务产出的空闲物理块,以便用于写任务,提升写命令的处理性能,进而提升写命令的处理性能稳定性。
若发起静态磨损均衡任务时,历史回收的脏物理块的有效数据比例不为零且小于静态磨损均衡任务回收的冷数据物理块的有效数据比例,则直接调整空闲物理块水位线为第一水位线,然后执行静态磨损均衡任务。由于提升空闲物理块水位线为第一水位线,能够提供更多的空闲物理块用于静态磨损均衡任务,提升静态磨损均衡的效率,更快地得到由静态磨损均衡任务产出的空闲物理块,以便用于写任务,提升写命令的处理性能,进而提升写命令的处理性能稳定性。
基于以上实施例公开的空闲物理块水位线的调整方法,可以有效提高长时间小范围顺序写场景下的主机写性能稳定性,其中,小范围是相对于SSD容量而言,例如,容量为7.68T、3.84T或1.92T的SSD,小范围为10G,其他容量的SSD,本领域技术人员可以基于SSD容量确定小范围的数值。以触发静态磨损均衡(Static Wear Leveling,SWL)时,顺序写性能的稳定性测试为例,向10G的逻辑块地址(Logical BlockAddress,LBA)范围进行顺序写,实施本公开实施例提供的空闲物理块水位线的调整方法之前,顺序写性能分布如图7所示,图7中的横坐标是时间,纵坐标是顺序写性能(或者带宽),单位是Byte/S,横线代表顺序写性能的平均值(该平均值经过统计为最优写性能的85%),可见,图7中,顺序写性能会低于平均值。实施本公开实施例提供的空闲物理块水位线的调整方法之后,顺序写性能分布如图8所示,顺序写性能基本高于平均值,因此,写性能稳定性得到提升。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员能够理解,本公开实施例并不受所描述的动作顺序的限制,因为依据本公开实施例,某些步骤可以采用其他顺序或者同时进行。另外,本领域技术人员能够理解,说明书中所描述的实施例均属于可选实施例。
图9为本公开实施例提供的一种空闲物理块水位线的调整装置的示意图,该空闲物理块水位线的调整装置可以应用于电子设备,电子设备包括但不限于固态硬盘、智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、台式机、笔记本电脑、一体机、智能家居设备、服务器等,其中,服务器可以是独立的服务器,也可以是多个服务器的集群,可以包括搭建在本地的服务器和架设在云端的服务器。本公开实施例提供的空闲物理块水位线的调整装置可以执行空闲物理块水位线的调整方法各实施例提供的处理流程,如图9所示,空闲物理块水位线的调整装置包括但不限于:获取单元91、扫描单元92、识别单元93和调整单元94。各单元功能说明如下:
获取单元91,用于获取至少一个待回收物理块;
扫描单元92,用于扫描每个待回收物理块中是否存在有效数据;
识别单元93,用于基于扫描结果识别当前写模式;
调整单元94,用于识别单元93识别当前写模式为顺序写模式后,调整空闲物理块水位线为第一水位线,第一水位线高于随机写模式下预设的第二水位线。
在一些实施例中,识别单元93,用于扫描单元92连续扫描预设数量个待回收物理块中均不存在有效数据后,确定当前写模式为顺序写模式。
在一些实施例中,识别单元93,还用于扫描单元扫描到任一待回收物理块中存在有效数据后,确定当前写模式为随机写模式;
调整单元94,还用于在随机写模式下,调整空闲物理块水位线为第二水位线。
在一些实施例中,扫描单元92,用于:
扫描待回收物理块中记录有数据的物理页;
在FTL表中查找是否记录有物理页,其中,FTL表用于记录从逻辑地址到物理地址的映射信息;
若记录有物理页,则确定物理页中记录的数据为有效数据。
在一些实施例中,空闲物理块水位线的调整装置还包括计数单元,用于基于扫描单元92的扫描结果,维护顺序写模式对应的计数参数的值,其中,计数参数表征连续扫描的、不存在有效数据的待回收物理块的数量;
识别单元93,用于在计数单元维护的计数参数的值大于或等于预设数量后,确定当前写模式为顺序写模式。
在一些实施例中,计数单元,用于:
针对任一待回收物理块,若扫描单元92的扫描结果为待回收物理块中不存在有效数据,则将计数参数的值加一;若扫描单元92的扫描结果为待回收物理块中存在有效数据,则将计数参数的值清零。
在一些实施例中,识别单元93,还用于在计数单元维护的计数参数的值小于预设数量后,确定当前写模式为随机写模式。
在一些实施例中,第一水位线为固定值或动态值;
若第一水位线为动态值,则空闲物理块水位线的调整装置还包括水位线确定单元,用于:
确定有效数据比例,其中,有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;
基于有效数据比例,确定第一水位线,其中,第一水位线与有效数据比例呈反相关关系;或者,基于有效数据比例、预设的最低水位线、历史有效数据比例,确定第一水位线,其中,第一水位线与有效数据比例呈正相关关系。
在一些实施例中,水位线确定单元基于有效数据比例、预设的最低水位线、历史有效数据比例,确定第一水位线,包括:
至少一次调整第一水位线,直至有效数据比例与目标差值之间的比值收敛于或者等于历史有效数据比例;其中,目标差值为第一水位线与最低水位线之差。
在一些实施例中,若第一水位线为动态值,则确定第一水位线小于或等于预设的OP空间。
在一些实施例中,第一水位线与第二水位线的差值为调整值,调整值为固定值或动态值。
若调整值为动态值,则空闲物理块水位线的调整装置还包括调整值确定单元,用于:
确定有效数据比例,其中,有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;
基于有效数据比例,确定调整值,其中,调整值与有效数据比例呈反相关关系;或者,基于有效数据比例、预设的最低水位线、历史有效数据比例,确定调整值,其中,调整值与有效数据比例呈正相关关系。
在一些实施例中,调整值确定单元基于有效数据比例、预设的最低水位线、历史有效数据比例,确定调整值,包括:
以第二水位线或历史最低水位线为初始值按照调整值进行至少一次调整得到第一水位线,直至有效数据比例与目标差值之间的比值收敛于或者等于历史有效数据比例;其中,目标差值为第一水位线与最低水位线之差。
在一些实施例中,若调整值为动态值,则确定第一水位线小于或等于预设的OP空间。
在一些实施例中,空闲物理块水位线的调整装置还包括回收单元,用于:
在扫描单元92扫描每个待回收物理块中是否存在有效数据之后,读取存在有效数据的待回收物理块中的有效数据;
将有效数据写入空闲物理块;
完成写入后,擦除存在有效数据的待回收物理块中的所有数据,得到对应的空闲物理块。
在一些实施例中,调整单元94,还用于调整空闲物理块水位线为第一水位线后,在回收单元擦除存在有效数据的待回收物理块中的所有数据,得到对应的空闲物理块后,将空闲物理块作为候选资源池中的物理块,其中,候选资源池用于在空闲物理块水位线提升后,向空闲物理块水位线对应的资源池提供空闲物理块。
在一些实施例中,待回收物理块来源于以下至少一种物理块:垃圾回收任务针对的脏物理块,编程错误回收任务针对的产生编程错误的物理块,静态磨损均衡任务针对的冷数据物理块。
在一些实施例中,空闲物理块水位线的调整装置还包括执行单元,用于:
若任一物理块产生编程错误,需要关闭物理块并将物理块中的数据回收到空闲物理块时,则在调整单元94调整空闲物理块水位线为第一水位线后,执行编程错误回收任务;
和/或,
若发起静态磨损均衡任务时,历史回收的脏物理块的有效数据比例不为零且小于静态磨损均衡任务回收的冷数据物理块的有效数据比例,则在调整单元94调整空闲物理块水位线为第一水位线,执行静态磨损均衡任务。
可见,本公开的至少一个空闲物理块水位线的调整装置实施例中,能够实现主机写行为的模式识别,进而自动调整空闲物理块水位线,以提高写性能稳定性。具体地,通过获取至少一个待回收物理块,可以扫描每个待回收物理块中是否存在有效数据;进而,基于扫描结果识别当前写模式,例如,在连续扫描预设数量个待回收物理块中均不存在有效数据时,可以确定当前写模式为顺序写模式,实现主机写行为的模式识别。若识别当前写模式为顺序写模式,则提升空闲物理块水位线为第一水位线,高于随机写模式下预设的第二水位线,能够提供更多的空闲物理块用于GC任务和/或SWL任务,由于GC任务回收的是不存在有效数据的脏物理块,无需占用空闲物理块,因此提供的空闲物理块用于SWL任务回收冷数据物理块,而GC任务会产生空闲物理块,使得消耗空闲物理块和产生空闲物理块均衡,对写任务没有影响,提高写性能稳定性。甚至由于GC任务直接擦除脏物理块,相比SWL任务回收冷数据物理块需要先转移冷数据物理块中的有效数据,再擦除冷数据物理块,GC任务能够更快地产生空闲物理块,参与写任务,提升写命令的处理性能。此外,由于SWL任务回收冷数据物理块也能够产生空闲物理块,因此,可以提供更多的空闲物理块参与写命令的处理,提升写命令的处理性能,从而提高写性能稳定性。
在本公开实施例中,通过提供一种存储设备(或固态存储设备等),包括:存储器和控制器,控制器执行上述任意方法实施例中的一种空闲物理块水位线的调整方法,其中存储器可以是NVM(Non-Volatile Memory,非易失性存储器)芯片。
图10是本公开实施例提供的一种电子设备的示例性框图。如图10所示,该电子设备包括:存储器1001、处理器1002以及存储在所述存储器1001上的计算机程序。可以理解,本实施例中的存储器1001可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
在一些实施方式中,存储器1001存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。
其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础任务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用任务。实现本公开实施例提供的空闲物理块水位线的调整方法的程序可以包含在应用程序中。
在本公开实施例中,至少一个处理器1002通过调用至少一个存储器1001存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,至少一个处理器1002用于执行本公开实施例提供的空闲物理块水位线的调整方法各实施例的步骤。
本公开实施例提供的空闲物理块水位线的调整方法可以应用于处理器1002中,或者由处理器1002实现。处理器1002可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1002中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1002可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本公开实施例提供的空闲物理块水位线的调整方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1001,处理器1002读取存储器1001中的信息,结合其硬件完成方法的步骤。
本公开实施例还提出一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如空闲物理块水位线的调整方法各实施例的步骤,为避免重复描述,在此不再赘述。其中,计算机可读存储介质可以为非暂态计算机可读存储介质。
本公开实施例还提出一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,计算机可读存储介质可以为非暂态计算机可读存储介质。计算机的至少一个处理器从计算机可读存储介质中读取并执行该计算机程序,使得计算机执行如空闲物理块水位线的调整方法各实施例的步骤,为避免重复描述,在此不再赘述。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种空闲物理块水位线的调整方法,包括:
获取至少一个待回收物理块;
扫描每个所述待回收物理块中是否存在有效数据;
基于扫描结果识别当前写模式;
若识别当前写模式为顺序写模式,则调整空闲物理块水位线为第一水位线,所述第一水位线高于随机写模式下预设的第二水位线。
2.根据权利要求1所述的方法,其中,所述基于扫描结果识别当前写模式,包括:
若连续扫描预设数量个待回收物理块中均不存在有效数据,则确定当前写模式为顺序写模式。
3.根据权利要求1所述的方法,其中,所述方法还包括:
若扫描到任一所述待回收物理块中存在有效数据,则确定当前写模式为随机写模式;
在所述随机写模式下,调整所述空闲物理块水位线为所述第二水位线。
4.根据权利要求1至3任一项所述的方法,其中,所述扫描每个所述待回收物理块中是否存在有效数据,包括:
扫描所述待回收物理块中记录有数据的物理页;
在FTL表中查找是否记录有所述物理页,其中,所述FTL表用于记录从逻辑地址到物理地址的映射信息;
若记录有所述物理页,则确定所述物理页中记录的数据为有效数据。
5.根据权利要求1所述的方法,其中,所述扫描每个所述待回收物理块中是否存在有效数据之后,所述方法还包括:
基于扫描结果,维护顺序写模式对应的计数参数的值,其中,所述计数参数表征连续扫描的、不存在有效数据的待回收物理块的数量;
所述若连续扫描预设数量个待回收物理块中均不存在有效数据,则确定当前写模式为顺序写模式,包括:
若所述计数参数的值大于或等于所述预设数量,则确定当前写模式为顺序写模式。
6.根据权利要求5所述的方法,其中,所述基于扫描结果,维护顺序写模式对应的计数参数的值,包括:
针对任一所述待回收物理块,若扫描结果为所述待回收物理块中不存在有效数据,则将所述计数参数的值加一;若扫描结果为所述待回收物理块中存在有效数据,则将所述计数参数的值清零。
7.根据权利要求5所述的方法,其中,所述方法还包括:
若所述计数参数的值小于所述预设数量,则确定当前写模式为随机写模式。
8.根据权利要求1所述的方法,其中,所述第一水位线为固定值或动态值;
若所述第一水位线为动态值,则确定有效数据比例,其中,所述有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;
基于所述有效数据比例,确定所述第一水位线,其中,所述第一水位线与所述有效数据比例呈反相关关系;或者,
基于所述有效数据比例、预设的最低水位线、历史有效数据比例,确定所述第一水位线,其中,所述第一水位线与所述有效数据比例呈正相关关系。
9.根据权利要求1所述的方法,其中,所述第一水位线与所述第二水位线的差值为调整值,所述调整值为固定值或动态值;
若所述调整值为动态值,则确定有效数据比例,其中,所述有效数据比例为存在有效数据的待回收物理块的数量占待回收物理块的总数量的比例;
基于所述有效数据比例,确定所述调整值,其中,所述调整值与所述有效数据比例呈反相关关系;或者,
基于所述有效数据比例、预设的最低水位线、历史有效数据比例,确定所述调整值,其中,所述调整值与所述有效数据比例呈正相关关系。
10.一种存储设备,其中,包括:控制部件与NVM芯片,所述控制部件执行如权利要求1至9中任一项所述空闲物理块水位线的调整方法的步骤。
CN202310953508.2A 2023-07-31 2023-07-31 一种空闲物理块水位线的调整方法和存储设备 Pending CN116974481A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310953508.2A CN116974481A (zh) 2023-07-31 2023-07-31 一种空闲物理块水位线的调整方法和存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310953508.2A CN116974481A (zh) 2023-07-31 2023-07-31 一种空闲物理块水位线的调整方法和存储设备

Publications (1)

Publication Number Publication Date
CN116974481A true CN116974481A (zh) 2023-10-31

Family

ID=88479224

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310953508.2A Pending CN116974481A (zh) 2023-07-31 2023-07-31 一种空闲物理块水位线的调整方法和存储设备

Country Status (1)

Country Link
CN (1) CN116974481A (zh)

Similar Documents

Publication Publication Date Title
US10275162B2 (en) Methods and systems for managing data migration in solid state non-volatile memory
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
US8046526B2 (en) Wear leveling method and controller using the same
US8332576B2 (en) Data reading method for flash memory and controller and storage system using the same
US8103820B2 (en) Wear leveling method and controller using the same
US11429284B2 (en) Data categorization based on invalidation velocities
US9772797B2 (en) Buffer memory management method, memory control circuit unit and memory storage device
US20130073798A1 (en) Flash memory device and data management method
US8909895B2 (en) Memory apparatus
CN109086219B (zh) 去分配命令处理方法及其存储设备
US9274943B2 (en) Storage unit management method, memory controller and memory storage device using the same
KR20150020385A (ko) 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
CN107797934B (zh) 处理去分配命令的方法与存储设备
US11334272B2 (en) Memory system and operating method thereof
CN109558334B (zh) 垃圾数据回收方法及固态存储设备
CN109558333B (zh) 具有可变额外存储空间的固态存储设备命名空间
CN107797938B (zh) 加快去分配命令处理的方法与存储设备
KR20210028729A (ko) 논리적 대 물리적 테이블 프래그먼트들
US20170090782A1 (en) Writing management method and writing management system for solid state drive
CN109426436B (zh) 基于可变长大块的垃圾回收方法与装置
TWI748410B (zh) 用來針對非揮發性記憶體進行區塊管理的方法以及設備
CN106055488B (zh) 数据储存设备及其操作方法
US11687447B1 (en) Method and apparatus for performing access control of memory device with aid of additional physical address information
US11392310B2 (en) Memory system and controller
CN116974481A (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