CN112181276A - 提升存储设备服务质量的大块构造、分配方法及其存储设备 - Google Patents

提升存储设备服务质量的大块构造、分配方法及其存储设备 Download PDF

Info

Publication number
CN112181276A
CN112181276A CN201910595250.7A CN201910595250A CN112181276A CN 112181276 A CN112181276 A CN 112181276A CN 201910595250 A CN201910595250 A CN 201910595250A CN 112181276 A CN112181276 A CN 112181276A
Authority
CN
China
Prior art keywords
blocks
block
large block
bad blocks
storage device
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
Application number
CN201910595250.7A
Other languages
English (en)
Other versions
CN112181276B (zh
Inventor
路向峰
徐凯
张志青
秦汉张
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201910595250.7A priority Critical patent/CN112181276B/zh
Publication of CN112181276A publication Critical patent/CN112181276A/zh
Application granted granted Critical
Publication of CN112181276B publication Critical patent/CN112181276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

提供了提升存储设备服务质量的大块构造、分配方法及其存储设备。所提供的为待写入存储设备的数据分配存储介质资源的方法,包括获取在被用来承载写入数据的一个或多个大块的坏块数量;根据所述坏块数量与预期坏块数量的差距,选择第一大块用来承载写入数据,使得包括了所述第一大块的用来承载写入数据的多个大块的坏块数量与预期坏块数量的差距减小。

Description

提升存储设备服务质量的大块构造、分配方法及其存储设备
技术领域
本申请涉及存储设备,具体地,涉及在存储设备中通过为写入数据分配大块存储资源,以及更好的构造大块来提升存储设备性能的稳定性,减少存储设备性能的抖动,以提升服务质量(QoS,Quality of Service)。
背景技术
图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,阻变存储器)、XPoint存储器等是常见的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也可以包括处理器(CPU)或者控制器,在处理器或控制器中执行软件来操纵控制部件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字节。物理页也可以具有其他的尺寸。
大块包括来自多个逻辑单元(LUN),也称为逻辑单元组的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图2所示出的大块的示意图中,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个分别来自16个逻辑单元(LUN)的物理块。在图2的例子中,大块0包括来自16个逻辑单元(LUN)中的每个逻辑单元的物理块0,而大块2包括来自每个逻辑单元(LUN)的物理块2。也可以以多种其他方式来构造大块。图2中,用形如Ba-b的附图标记指示物理块,其中a指示该物理块由逻辑单元(LUNa)提供,而b指示该物理块在逻辑单元中的块号为b。大块存储用户数据与校验数据。根据大块存储的用户数据计算得到大块的校验数据。作为举例,在大块的最后一个物理块中存储校验数据。也可以选择大块的其他物理块来存储校验数据。作为又一个例子,在申请号为201710752321.0的中国专利申请的图3A及其说明书中对图3A的相关描述中,提供了大块的又一种构造方式。
发明内容
期待存储设备的性能是稳定的。但当存储设备的工作状态发生变化,性能波动在所难免。发明人发现,一个引起存储设备写性能波动的原因在于,大块之间的不一致。NVM芯片存在随机的故障物理块(简称“坏块”)是NVM芯片的固有属性。坏块的存在,导致各大块之间的可用物理块的数量存在差异。例如,一些大块上没有坏块或者仅有较少的坏块,而另一写大块上的坏块数量则较多。其上坏块的数量直接影响了大块的可用存储空间与可写入的数据量。并且大块需要预留指定大小的存储空间(例如,1个物理块)来存储校验数据,这使得大块之间,校验数据占大块的可用存储空间的比例也存在波动。没有坏块或者仅有较少的坏块的大块,其校验数据占大块可用存储空间的比例低,而有较多坏块的大块,其校验数据占大块的可用存储空间的比例高。
存储设备将数据写入NVM芯片时,以大块为单位分配存储空间。存储设备每次分配一个或指定数量的大块,向其写入数据,在分配的大块被写满数据后,再分配其他的大块来承载待写入的数据。分配大块引起额外的性能开销,并引起存储设备的写性能波动。大块的可用存储空间变化,使得分配大块的周期存在波动,也引起存储设备的写性能波动。向大块写入的用户数据与校验数据的比例发生变化,也引起存储设备写入用户数据的性能发生波动,校验数据的占比变高,导致用户数据的占比相对变低,即使存储设备的整体写入带宽恒定,用于写入用户数据的写带宽也相对变低(因为要写入相对更多的校验数据)。以及识别坏块并避免分配坏块来承载写入数据也消耗了存储设备的性能,并引起性能抖动。
NVM芯片的坏块分布的非均衡性进一步劣化了由于坏块所引起的性能波动。一些坏块是由于制造NVM芯片的掩模或使用掩模的光刻设备的缺陷所引入的。当相同的掩模被用于制造(光刻)多个NVM芯片时,掩模或制造相关的缺陷,使得NVM芯片的指定物理区域(例如对应于掩模边缘的区域)具有更高的坏块率,这些区域的物理块又具有相同的物理块号。这使得大块中的坏块数量的分布缺乏随机性。作为举例,制造过程引入的缺陷,导致位于特定位置的编号为700的物理块具有相对其他编号的物理块更高的错误率,这导致编号为700的大块,由于使用了来自各个LUN的编号为700的物理块,该编号为700的大块所拥有的坏块数量,大概率明显大于其他大块。进而,在向编号为700的大块写入数据之前、之中与之后的存储设备的写性能,发生较明显的抖动。
即使忽略掩模或制造相关的缺陷,假设NVM芯片上坏块的分布是均匀的。在由来自多个LUN的物理块构造大块后,大块的坏块数量,也呈现出高斯分布的统计特性而非均匀的。并导致在向各大块写入数据的过程中,存储设备的写性能发生波动。
根据本申请的实施例,使用改进的方法来构造大块,使各大块的坏块数量尽量一致,以使存储设备的性能具有较高的稳定性,并减少性能的波动。根据本申请的实施例,还改进了为待写入数据分配大块的方式,使得被同时使用de大块的坏块数量彼此协调,来抑制各大块的坏块数量波动对性能的影响。
根据本申请的第一方面,提供了根据本申请第一方面的第一构造大块的方法,包括:从多个逻辑单元的每个获取物理块来构造大块,其中每个逻辑单元为所构造大块提供的物理块位于逻辑单元的不同的位置。
根据本申请第一方面的第一构造大块的方法,提供了根据本申请第一方面的第二构造大块的方法,其中要构造的大块具有编号i,为从编号为LN的逻辑单元为要构造的大块提供物理块,所述方法还包括:根据逻辑单元的编号LN获得偏移值off_LN;根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
根据本申请第一方面的第二构造大块的方法,提供了根据本申请第一方面的第三构造大块的方法,其中所述偏移值是编号LN的函数,并且LN同所述偏移值是一一映射。
根据本申请第一方面的第二构造大块的方法,提供了根据本申请第四方面的第二构造大块的方法,其中使用编号LN查询偏移值表得到同编号LN对应的偏移值。
根据本申请第一方面的第四构造大块的方法,提供了根据本申请第一方面的第五构造大块的方法,还包括:在存储设备的生产过程中生成所述偏移值表,并将所述偏移值表记录在所述存储设备的非易失存储介质中。
根据本申请第一方面的第一至第三或第五构造大块的方法之一,提供了根据本申请第一方面的第六构造大块的方法,还包括:在存储设备的使用过程中,更新所述偏移值表。
根据本申请第一方面的第四至第六五构造大块的方法之一,提供了根据本申请第一方面的第七构造大块的方法,还包括:遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值最小,或使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值的方差最小。
根据本申请第一方面的第四至第六构造大块的方法之一,提供了根据本申请第一方面的第八构造大块的方法,还包括:遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值不超过阈值。
根据本申请第一方面的第七或第八构造大块的方法,提供了根据本申请第一方面的第九构造大块的方法,其中遍历偏移值表的各偏移值的多个或所有可能取值的次数不超过次数阈值。
根据本申请第一方面的第二构造大块的方法,提供了根据本申请第一方面的第十构造大块的方法,还包括:获取编号LN的逻辑单元提供给大块i的物理块的坏块数量;若累积的已被提供来用于构造大块i的物理块的坏块数量大于阈值,改变编号LN的逻辑单元的偏移值off_LN,根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
根据本申请第一方面的第十构造大块的方法,提供了根据本申请第一方面的第十一构造大块的方法,其中改变编号LN的逻辑单元的偏移值off_LN,使得编号LN的逻辑单元提供给大块i的物理块不是坏块。
根据本申请第一方面的第八至第十一构造大块的方法之一,提供了根据本申请第一方面的第十二构造大块的方法,其中所述阈值是大块的平均坏块数。
根据本申请第二方面,提供了根据本申请第二方面的第一为待写入存储设备的数据分配存储介质资源的方法,包括获取在被用来承载写入数据的一个或多个大块的坏块数量;根据所述坏块数量与预期坏块数量的差距,选择第一大块用来承载写入数据,使得包括了所述第一大块的用来承载写入数据的多个大块的坏块数量与预期坏块数量的差距减小。
根据本申请第二方面的第一为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第二为待写入存储设备的数据分配存储介质资源的方法,其中所述第一大块来自第一逻辑单元组,而被用来承载写入数据的所述一个或多个大块来自不同于第一逻辑单元组的一个或多个逻辑单元组。
根据本申请第二方面的第一或第二为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第三为待写入存储设备的数据分配存储介质资源的方法,其中所述预期坏块数量是存储设备的所有大块的坏块数量平均值,或者所述平均值加/减指定值得到的值或区间。
根据本申请第二方面的第三为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第四为待写入存储设备的数据分配存储介质资源的方法,其中所述预期坏块数量随所述存储设备的使用而持续增加。
根据本申请第二方面的第一至第四为待写入存储设备的数据分配存储介质资源的方法之一,提供了根据本申请第二方面的第五为待写入存储设备的数据分配存储介质资源的方法,其中从逻辑单元组的每个获取物理块来构造大块,其中逻辑单元组的每个逻辑单元为所构造大块提供的物理块位于逻辑单元的不同的位置。
根据本申请第二方面的第五为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第六为待写入存储设备的数据分配存储介质资源的方法,其中要构造的大块具有编号i,为从编号为LN的逻辑单元为要构造的大块提供物理块,所述方法还包括:根据逻辑单元的编号LN获得偏移值off_LN;根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
根据本申请第二方面的第六为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第七为待写入存储设备的数据分配存储介质资源的方法,其中所述偏移值是编号LN的函数,并且LN同所述偏移值是一一映射。
根据本申请第二方面的第六为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第八为待写入存储设备的数据分配存储介质资源的方法,其中使用编号LN查询偏移值表得到同编号LN对应的偏移值。
根据本申请第二方面的第八为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第九为待写入存储设备的数据分配存储介质资源的方法,还包括:遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值最小,或使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值的方差最小。
根据本申请第二方面的第八为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第十为待写入存储设备的数据分配存储介质资源的方法,还包括:遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值不超过阈值。
根据本申请第二方面的第六为待写入存储设备的数据分配存储介质资源的方法,提供了根据本申请第二方面的第十一为待写入存储设备的数据分配存储介质资源的方法,还包括:获取编号LN的逻辑单元提供给大块i的物理块的坏块数量;若累积的已被提供来用于构造大块i的物理块的坏块数量大于阈值,改变编号LN的逻辑单元的偏移值off_LN,根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
根据本申请第三方面,提供了根据本申请第三方面的第一垃圾回收方法,包括:获取一个或多个流;将流中的数据写入同流对应的一个或多个活动大块;其中为分配大块作为活动大块,获取一个或多个活动大块的坏块数量,根据所述坏块数量与预期坏块数量的差距,选择第一大块作为活动大块,使得包括了所述第一大块的多个活动大块的坏块数量与预期坏块数量的差距减小。
根据本申请第三方面的第一垃圾回收方法,提供了根据本申请第三方面的第二垃圾回收方法,其中所述一个或多个流同一个或多个活动大块具有绑定关系;根据绑定关系,将流中的数据写入同流对应的活动大块。
根据本申请第三方面的第一或第二垃圾回收方法,提供了根据本申请第三方面的第三垃圾回收方法,还包括:若根据所述坏块数量与预期坏块数量的差距小于阈值,选择擦写次数最大的空闲大块作为活动大块、选择擦写次数最小的空闲大块作为活动大块或者选择擦写次数接近存储设备的所有大块的平均擦写次数的空闲大块作为活动大块。
根据本申请第三方面的第三垃圾回收方法,提供了根据本申请第三方面的第四垃圾回收方法,还包括:若根据所述坏块数量与预期坏块数量的差距大于阈值,选择所述第一大块作为活动大块。
根据本申请第三方面的第一至第四垃圾回收方法之一,提供了根据本申请第三方面的第五垃圾回收方法,其中流包括一个或多个用户数据流和一个或多个GC流,其中,用户数据流来自提供给存储设备的IO命令要写入的数据,GC流来自从脏大块回收的数据。
根据本申请第三方面的第五垃圾回收方法,提供了根据本申请第三方面的第六垃圾回收方法,其中为分配大块作为承载用户数据流的活动大块,选择所述第一大块作为活动大块。
根据本申请第三方面的第六垃圾回收方法,提供了根据本申请第三方面的第七垃圾回收方法,其中为分配大块作为承载相对于其他用户数据流具有高优先级的用户数据流的活动大块,选择所述第一大块作为活动大块。
根据本申请第三方面的第一至第七垃圾回收方法之一,提供了根据本申请第三方面的第八垃圾回收方法,其中所述第一大块来自第一逻辑单元组,而被用来承载写入数据的所述一个或多个大块来自不同于第一逻辑单元组的一个或多个逻辑单元组。
根据本申请第三方面的第一至第八垃圾回收方法之一,提供了根据本申请第三方面的第九垃圾回收方法,其中所述预期坏块数量是存储设备的所有大块的坏块数量平均值,或者所述平均值加/减指定值得到的值或区间。
根据本申请第三方面的第九垃圾回收方法,提供了根据本申请第三方面的第十垃圾回收方法,其中所述预期坏块数量随所述存储设备的使用而持续增加。
根据本申请第三方面的第一至第十垃圾回收方法之一,提供了根据本申请第三方面的第十一垃圾回收方法,其中从逻辑单元组的每个获取物理块来构造大块,其中逻辑单元组的每个逻辑单元为所构造大块提供的物理块位于逻辑单元的不同的位置。
根据本申请第三方面的第十一垃圾回收方法,提供了根据本申请第三方面的第十二垃圾回收方法,其中要构造的大块具有编号i,为从编号为LN的逻辑单元为要构造的大块提供物理块,所述方法还包括:根据逻辑单元的编号LN获得偏移值off_LN;根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
根据本申请第三方面的第十二垃圾回收方法,提供了根据本申请第三方面的第十三垃圾回收方法,其中所述偏移值是编号LN的函数,并且LN同所述偏移值是一一映射。
根据本申请第三方面的第十二垃圾回收方法,提供了根据本申请第三方面的第十四垃圾回收方法,其中使用编号LN查询偏移值表得到同编号LN对应的偏移值。
根据本申请第三方面的第十四垃圾回收方法,提供了根据本申请第三方面的第十五垃圾回收方法,还包括:遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值最小,或使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值的方差最小。
根据本申请第三方面的第十四垃圾回收方法,提供了根据本申请第三方面的第十六垃圾回收方法,还包括:遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值不超过阈值。
根据本申请第三方面的第十二垃圾回收方法,提供了根据本申请第三方面的第十七垃圾回收方法,还包括:获取编号LN的逻辑单元提供给大块i的物理块的坏块数量;若累积的已被提供来用于构造大块i的物理块的坏块数量大于阈值,改变编号LN的逻辑单元的偏移值off_LN,根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
根据本申请的第四方面,提供了根据本申请第四方面的第一为待写入存储设备的数据分配存储介质资源的方法,包括:从存储设备的第一逻辑单元组获取被用来承载写入数据的第一大块的坏块数量;响应于所述第一大块的坏块数量大于阈值,从存储设备的第二逻辑单元组选择第二大块来承载写入数据,使得存储设备中包括了所述第二大块的用来承载写入数据的多个大块的坏块数量与预期坏块数量的差距减小。
根据本申请的第五方面,提供了根据本申请第五方面的存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据本申请第一方面至第四方面的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是相关技术中固态存储设备的框图;
图2展示了大块的示意图;
图3展示了大块的坏块分布的示意图;
图4展示了根据本申请的实施例的大块的组织的示意图;
图5展示了根据本申请的又一实施例的大块的组织的示意图;
图6展示了根据本申请实施例的寻找偏移值表的流程图;
图7展示了根据本申请实施例的应用偏移值表的流程图;
图8展示了根据本申请的依然再一实施例的构造大块的流程图;
图9展示了根据本申请又一实施例的存储设备的示意图;
图10A与图10B展示了根据本申请实施例的从LUN组选取大块的流程图;
图11A与图11B展示了根据本申请可选实施例的从LUN组选取大块的流程图;
图12展示了大块中的页条带的示意图;
图13A展示了垃圾回收过程的示意图;
图13B展示了垃圾回收方法的示意图;
图14是根据本申请又一实施例的垃圾数据回收的示意图;以及
图15展示了根据本申请依然再一实施例的垃圾数据回收的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3展示了大块的坏块分布的示意图。
根据图3的例子,在16个LUN上构造大块。每个LUN向编号为i的大块提供编号为i的物理块以构造大块。例如,大块0包括来自LUN 0-LUN15的每个的编号为0的物理块。大块2包括来自LUN 0-LUN15的每个的编号为2的物理块。由阴影指示的物理块是坏块。从而大块0有3个坏块,有13个可用的物理块;大块2有1个坏块,有15个可用的物理块。其他的大块也有各自的坏块数量。从而向大块0写入数据时,用于写入用户数据的带宽是总写入带宽的12/13;而向大块2写入数据时,用于写入用户数据的带宽是总写入带宽的14/15。这使得用户体验到的写入带宽存在抖动。
图4展示了根据本申请的实施例的大块的组织的示意图。
申请人意识到,各LUN的相同编号的物理块可能位于各LUN的相似或相同位置。例如,编号为0的物理块与编号最大的物理块可能各自位于芯片的边缘位置。从而各LUN的相同编号的物理块具有相似的成为坏块的几率。例如,位于边缘位置的物理块是坏块的几率高于位于中央位置的物理块。
根据本申请的实施例,在从各LUN选取构成大块的物理块时,避免各LUN向同一大块提供的物理块具有相同的编号。作为举例,为构造大块i(i为大块的编号),从各LUN选取的物理块是i以及提供物理块的LUN的编号(LN)的函数。作为举例,图4中,对于大块i,LUN 0为其提供的物理块的编号是i+0+1,LUN1为其提供的物理块的编号是i+1+1,一般地,编号为LN的LUN为大块i提供的物理块编号是i+f(LN)。在图4的例子中,f(LN)=LN+1。
根据图4展示的大块的组织方式,各LUN为大块i提供的各物理块不再具有相同的物理块号,而是具有不同的物理块号,从而消除了相同大块号具有相似的称为坏块的几率给大块带来的坏块数量分布不均匀的问题。
在可选的实施方式中,f(LN)有其他的解析式,例如,f(LN)=LN<<2。选取f(LN)为一一映射,以避免将相同的物理块提供给多个大块。
图5展示了根据本申请的又一实施例的大块的组织的示意图。
根据图5的实施例,在从各LUN选取构成大块的物理块时,避免各LUN向同一大块提供的物理块具有相同的编号。为用于构造大块的各LUN设置偏移值(记为off_LN)。为大块提供物理块的LUN的数量一般是十几到几十个。使用例如偏移值表来记录用于各LUN的偏移值,根据LUN的编号LN查询偏移值表,得到为每个LUN设置的偏移值。
参看图5,用于编号为LN的LUN的偏移值记为off_LN。对于大块i,编号为LN的LUN为大块i提供的物理块编号为i+off_LN。从而当偏移值表中用于各LUN的偏移值彼此不同或不完全相同时,实现了避免将相同的物理块提供给多个大块的目的。
根据又一种实施方式,还寻找适当的偏移值表,以使得存储设备的多个或所有大块的最大坏块数量最小。例如,偏移值表的一个实例记为Toff_i,而偏移值表的实例最多有M种(Toff_i,i取1-M的整数),遍历偏移值表的所有可能取值,得到偏移值表的实例Toff_g,该实例相对于偏移值表的所有其他取值,使得存储设备的多个或所有大块的最大坏块数量最小。存储设备多个或所有大块的最大坏块数量,是这些大块的坏块数量的最大值。以及为减少寻找适当的偏移值表的复杂度,搜索偏移值表的多种可能取值,得到偏移值表的实例Toff_g1,该实例使得存储设备的多个或所有大块的最大坏块数量小于阈值。
根据再一种实施方式,还寻找适当的偏移值表,以使得存储设备的多个或所有大块的坏块数量的分布足够均匀,例如具有最小的方差或标准差。例如,遍历偏移值表的所有可能取值,得到偏移值表的实例Toff_g,该实例相对于偏移值表的所有其他取值,使得存储设备的多个或所有大块的坏块数量的方差或标准差最小。可选地,以及为减少寻找适当的偏移值表的复杂度,搜索偏移值表的多种可能取值,得到偏移值表的实例Toff_g1,该实例使得存储设备的多个或所有大块的坏块数量的方差或标准差小于阈值。
根据依然另一种实施方式,偏移值表被用随机数填充。
图6展示了根据本申请实施例的寻找偏移值表的流程图。
获取各LUN的坏块表(610)。坏块是NVM芯片的固有属性。存储设备记录其NVM芯片的各LUN的坏块表。可选地,通过遍历NVM芯片的各物理块,通过物理块中记录的标记来识别坏块,并在坏块表中记录各LUN的坏块的位置。依然可选地,存储设备还在运行中识别产生的坏块,并记录在坏块表。
设置用于构造大块的各LUN的偏移值(Off_LN)(620),得到偏移值表的一个实例。该实例是待搜索且未被搜索过的。
根据偏移值表的各LUN的偏移值构造大块(630)。并查询坏块表获得步骤630所构造的各大块的坏块数量(640)。步骤630中构造大块,可以是“虚拟”而非真实的构造大块。通过各LUN的偏移值,得到在根据偏移值表的当前实例下,如果构造大块,所得到的各大块的坏块数量。
根据步骤640中获得的各大块的坏块数量,得到根据偏移值表的当前实例,所有生成的大块的坏块数量的最大值(650)。
识别当前搜索偏移值表的次数是否达到阈值所指示的上限(670)。若搜索次数尚未达到上限,回到步骤620,重新设置用于构造大块的各LUN的偏移值(Off_LN)(620),得到偏移值表的待搜索且未被搜索过的另一个实例。
在步骤670,若搜索偏移值表的次数已达到阈值所指示的上限,获取在步骤650中已经得到的对应经搜索的各个偏移值表的所生成大块的坏块数量的最大值。选取使得对应经搜索的各个偏移值表的所生成大块的坏块数量的最大值取最小值的偏移值表(670),作为搜索出的适当的偏移值表。并根据该偏移值表来构造大块。
在另一种实施方式中,在步骤650,根据偏移值表的当前实例,计算所有生成的大块的坏块数量的方差或标准差。以搜索使得大块的坏块数量的方差或标准差最小或小于阈值的偏移值表。
图7展示了根据本申请实施例的应用偏移值表的流程图。
搜索适当的偏移值表是耗时的过程,会带来不利的用户体验。根据本申请的一种实施方式,在存储设备的制造工厂制造存储设备的过程中,将存储设备的各部件组装完成后,实施根据图6所示的对偏移值表的搜索过程,并将找到的偏移值表记录在存储设备的非易失存储介质中(710)。
用户首次使用存储设备时,或者对存储设备格式化后,为构造大块,存储设备获取记录在非易失存储介质中的在步骤710所找到的偏移值表,被使用该偏移值表来构造大块(720),例如,用根据图5的实施例的方式来使用偏移值表构造大块。
步骤710的操作可以在存储设备之外实施。例如在连接到存储设备的存储设备的生产线上的计算机或服务器中实施根据图6所示的对偏移值表的搜索过程。通过在存储设备之外生成存储设备要使用的偏移值表,无需在存储设备中实现复杂的偏移值表搜索,减轻了存储设备的工作负担,降低了存储设备的成本,降低了存储设备的固件开发的复杂度。
可选地,在存储设备的使用过程中,由于新产生了坏块等原因,使得步骤720所使用的偏移值表不再是最优,还重新搜索最佳的偏移值表,并使用新的偏移值表来构造大块。
图8展示了根据本申请的依然再一实施例的构造大块的流程图。
存储设备的NVM芯片的坏块数量是已知的,代表了NVM芯片的质量。从而存储设备的大块的坏块的平均值是可预期的。例如,NVM芯片包括5%的坏块,从而在每个大块包括31个物理块的情况下,大块的坏块数量的预期为1-2个(平均值1.55个)。根据大块的预期坏块数量,提出如图8展示的实施例。
为构建一个大块(大块i),依次从各个LUN选取物理块提供给大块i,对于编号为LN的LUN,还获取该LUN的偏移值off_LN(810)。作为举例,偏移值off_LN为固定值0,或者采用本申请中结合图4描述的多种实施方式中的计算偏移值off_LN的方式(f(LN))。依然作为举例,编号为LUN的LUN提供给大块i的物理块的编号为i+f(LN)。
对于编号为LN的LUN,还获取其坏块表,从而知晓其提供给大块i的编号为i+f(LN)的物理块是否为坏块(820)。可选地,一些情况下,各LUN提供给大块的物理块数量大于1,还识别编号为LN的LUN提供给大块i的物理块中坏块的数量。依然可选地,通过扫描物理块来识别该物理块是否为坏块。
对于大块i,累积各LUN为大块i提供的坏块数量,以识别大块i的坏块数量是否超出阈值(830)。作为举例,由于大块的坏块数量阈值为1-2个,将阈值设置为2。若大块i的累积的坏块数量未超出阈值(830),返回步骤810,以获取为大块i提供物理块的下一LUN及其偏移值。在步骤830,若识别出大块i累积的坏块数量超出了阈值,则从当前LUN(编号为LN)选择其他的物理块(具有不同的偏移值)提供给大块i(840)。例如,使偏移值off_LN更新为f(LN)+1。以及返回步骤820,以重新获取新的偏移值对应的当前LUN提供给大块i的坏块数量,并继续图8展示的流程。
依然作为举例,在步骤840所重新选择的物理块为当前LUN的非坏块,并记录其偏移值,用来替代之前的偏移值off_LN。以及返回步骤810,来从下一个LUN为大块i获取物理块。
图9展示了根据本申请又一实施例的存储设备的示意图。
存储设备包括控制部件以及耦合到控制部件的多个LUN,多个LUN被分为多组(称为LUN组),例如4组。图9的例子中,每个LUN组包括8个LUN。从LUN组的各个LUN选取物理块来构造大块(例如,大块910、912、914与916),大块的各物理块来自相同的LUN组。采用根据本申请图4到图8的实施例来构造大块,或者采用现有技术的方式构造大块。
作为举例,控制部件并行地向来自各LUN组的大块写入数据。控制部件还记录各大块的可用物理块数量和/或坏块数量。每个LUN组向控制部件提供例如一个大块来承载写入数据,以最大化存储设备的写入带宽。
根据本申请的实施例,当控制部件从LUN组之一选取新的大块用以承载写入数据时,还获取所选取的新大块的坏块数量。若所选取的新大块的坏块数量显著高于阈值,或者大块的坏块数量的期望值,控制部件在从其他LUN组选取另一新的大块时,根据坏块数量作为选取条件,优先选取坏块数量较少或者坏块数量低于平均值的大块,从而使得存储设备的控制部件所并行使用的多个大块的坏块数量的均值的变化较小,进而降低用户感知到的写性能的波动。
依然作为举例,控制部件维护其正在使用来承载写数据的各大块的坏块数量的和或平均值,当其大于或小于阈值时,控制部件在选取新的大块来承载写入数据时,根据大块的坏块数量来选取大块,以使得选取了新大块后,所有正在使用来承载写数据的各大块的坏块数量的和或平均值将接近阈值。阈值根据例如大块的坏块数量的期望值或存储设备的各大块的坏块数量平均值来设置。
图10A与图10B展示了根据本申请实施例的从LUN组选取大块的流程图。
参看图10A,为承载写入存储设备的数据,从耦合到控制部件的多个LUN组之一选取可用的大块以及获取该大块的坏块数量(1010)。比较所选取的大块的坏块数量与阈值(1020)。阈值是例如存储设备的各大块的坏块数量的平均值,或者比平均值大(例如大10%)的指定值。若所选取的大块的坏块数量大于阈值(1020),则预期存储设备的写大块将明显下降,为了消除或减弱存储设备的写性能抖动,在下次从其他LUN组选择可用的大块来承载写数据时,选择满足例如第一条件的可用大块(1030)。第一条件是例如大块的坏块数量小于存储设备的各大块得坏块数量的平均值或者比平均值小10%以上。依然作为举例,第一条件是使得选取了某大块后,使得存储设备的正在用于承载写数据的大块的坏块总量或平均值更接近存储设备的各大块的坏块数量的平均值或期望值。
若所选取的大块的坏块数量不大于阈值(1020),则在下次从其他LUN组选择可用的大块来承载写数据时,选择满足例如第二条件的可用大块(1040)。第二条件可以是例如没有设置额外的条件,而随机或顺序的方式从该其他LUN组选取可用大块。依然作为举例,第二条件是例如大块的坏块数量大于存储设备的各大块的坏块数量的平均值或者比平均值大10%以内。
参看图10B,为承载写入存储设备的数据,从耦合到控制部件的多个LUN组之一选取可用的大块以及获取该大块的坏块数量(1050)。计算存储设备正在使用来写入数据的所有大块的坏块数量(总数或平均值)(1060)。在从多个LUN组的另一LUN组选取可用大块时,选取满足第一条件的可用大块(1070)。第一条件是例如选取这样的大块,使得选取后存储设备正在使用的用来写入数据的所有大块的坏块数量(例如总值或平均值)属于指定区间。指定区间是例如存储设备的各大块的坏块数量的平均值正负10%以内。
图11A与图11B展示了根据本申请可选实施例的从LUN组选取大块的流程图。
参看图11A,为存储设备的LUN组的各LUN设置优选的偏移值(1110)。例如,根据本申请结合图4-图8所描述的实施例,而获得LUN组内的各LUN为大块提供物理块时所用的偏移值。根据LUN组的各LUN的优选偏移值构造大块(1115)。
为承载写入存储设备的数据,从耦合到控制部件的多个LUN组之一选取可用的大块以及获取该大块的坏块数量(1120)。比较所选取的大块的坏块数量与阈值(1125)。若所选取的大块的坏块数量大于阈值(1125),在下次从其他LUN组选择可用的大块来承载写数据时,选择满足例如第一条件的可用大块(1130)。第一条件是例如大块的坏块数量小于存储设备的各大块得坏块数量的平均值或者比平均值小10%以上。
若所选取的大块的坏块数量不大于阈值(1125),则在下次从其他LUN组选择可用的大块来承载写数据时,选择满足例如同第一条件不同的第二条件的可用大块(1135)。
参看图11B,为存储设备的LUN组的各LUN设置优选的偏移值(1140)。例如,根据本申请结合图4-图8所描述的实施例,而获得LUN组内的各LUN为大块提供物理块时所用的偏移值。根据LUN组的各LUN的优选偏移值构造大块(1145)。获取存储设备正在使用来写入数据的所有大块的坏块数量(总数或平均值),以及存储设备的大块的预期坏块数量,并计算二者的差值(1150)。存储设备的大块的预期坏块数量是例如存储设备的所有大块的坏块数量平均值。可以理解地,随着存储设备被使用,其上坏块逐步增加,作为存储设备的大块的预期坏块数量的存储设备的所有大块的坏块数量平均值也随之改变。
根据存储设备的正在使用来写入数据的所有大块的坏块数量与存储设备的大块的预期坏块数量的差值来选取承载待写入数据的可用大块(1155)。例如,若当前正在使用来写入数据的所有大块的坏块数量同预期坏块数量的差距较大(大于或小于),则选取这样的大块,使得选取后当前正在使用来写入数据的所有大块的坏块数量同预期坏块数量的差值变小或者趋近于0,或者使得存储设备正在使用的用来写入数据的所有大块的坏块数量(例如总值或平均值)属于指定区间。指定区间是例如存储设备的各大块的坏块数量的平均值正负10%以内。
图12展示了大块中的页条带的示意图。
在大块中构造页条带,每个逻辑单元(LUN)内例如相同物理地址的物理页构成了“页条带”。图12中,物理页P0-0、物理页P0-1……与物理页P0-x构成了页条带0,其中物理页P0-0、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,
图12中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。
当逻辑页被重复写入数据,FTL表条目中记录逻辑页地址与最新的物理页地址的对应关系,而曾经被写入数据但不再被引用(例如,FTL表中没有记录)的物理页地址中记录的数据成为“垃圾”(数据)。将已经被写入数据,且被引用(例如,在FTL表中有记录)的数据称为有效数据,而将“垃圾”称为脏数据。将含有脏数据的物理块称为“脏物理块”,将未被写入数据的物理块称为“空闲物理块”。
存储设备执行垃圾回收(GC)过程以回收脏数据。
图13A展示了垃圾回收过程的示意图。物理块0与物理块1被写入了数据。物理块0的物理页1310、1312、1314和1316等由网格框所指示的物理页在FTL表中没有记录,其上的数据是脏数据。物理块0的物理页1330、1332、1334与1336等由空白方框指示的物理页在FTL表中有记录,其上的数据是有效数据。物理块1的物理页1320、1322、1324与1326等由网格框所指示的物理页上的数据是脏数据。物理块1的物理页1344、1342、1346与1348等由空白框所指示的物理页上的数据是有效数据。
为进行垃圾回收,扫描脏物理块(例如,物理块0与物理块1),将其中的有效数据读出并写入空闲物理块2,以及在FTL表中记录有效数据的物理页地址的变化。在物理块的所有的有效数据都搬移到物理块2后,擦除被扫描的物理块0与物理块1,从而使物理块0与物理块1变为空闲物理块。
图13B展示了垃圾回收方法的示意图。
脏物理块集合1360包括存储设备的部分或所有NVM芯片的脏物理块。空闲物理块集合1370包括固态存储设备的部分或所有NVM芯片的空闲物理块。
为实施垃圾回收,“垃圾回收”模块1380(例如,实现于控制部件120或其中的CPU或控制器,也参看图1)从脏物理块集合1360中获取脏物理块,从空闲物理块集合1370中获取空闲物理块。扫描脏物理块,将其中的有效数据写入空闲物理块。在获取的脏物理块中的有效数据都被搬移到空闲物理块后,将脏物理块擦除,并在空闲物理块集合中记录擦除后的物理块。
可选地,以大块为单位(替代以物理块为单位)实施垃圾回收。
图14是根据本申请又一实施例的垃圾数据回收的示意图。
根据本申请的实施例,待写入存储设备的数据被标注为数据流(S)。数据流(S)来自提供给存储设备的IO命令要写入的数据,和/或来自垃圾回收过程中从脏大块回收的数据。可选地,数据流有多个。
为存储设备的LUN组的各LUN设置优选的偏移值(1410)。例如,根据本申请结合图4-图8所描述的实施例,而获得LUN组内的各LUN为大块提供物理块时所用的偏移值。根据LUN组的各LUN的优选偏移值构造大块(1420)。
待写入存储设备的属于数据流的数据被写入多个大块(称为活动大块)。图14展示了4个活动大块,大块(U1)、大块(U2)、大块(U3)与大块(U4)。活动大块的存储空间被写满后,活动大块被设置为关闭状态,以及获取新的空闲大块来作为活动大块。
写入管理单元1470从数据流(S)获取数据,并选择活动大块大块(大块(U1)、大块(U2)、大块(U3)或大块(U4)),将指示介质接口控制器1475将获取的数据写入该选择的活动大块。或者写入管理单元1470获取指定的活动大块,以及从数据流(S)获取数据写入该活动大块。介质接口控制器1475向提供大块的NVM芯片发送编程命令以将从数据流(S)获取的数据写入获取的活动大块。
完成了有效数据回收的脏大块被擦除,并作为空闲大块被释放。经释放的空闲大块被记录在例如空闲大块集合。
响应于例如活动大块的存储空间被写满,活动大块被设置为关闭状态,并从空闲大块集合中获取空闲大块,作为活动大块(大块(U1)、大块(U2)、大块(U3)或大块(U4))。
为从空闲大块集合中获取空闲大块,获取存储设备正在使用来写入数据的所有大块的坏块数量(总数或平均值),以及存储设备的大块的预期坏块数量,并计算二者的差值(1430)。
若步骤1430计算的差值同阈值的差距较大(1440),根据该差值来选取承载待写入数据的可用大块(1450)作为活动大块。例如,若当前正在使用来写入数据的所有大块的坏块数量同预期坏块数量的差距较大(大于或小于指定阈值),则选取这样的大块,使得选取后当前正在使用来写入数据的所有大块的坏块数量同预期坏块数量的差值变小或者趋近于0,或者使得存储设备正在使用的用来写入数据的所有大块的坏块数量(例如总值或平均值)属于指定区间。指定区间是例如存储设备的各大块的坏块数量的平均值正负10%以内。
若步骤1430计算的差值同阈值的差距不大(1440),例如二者差的绝对值小于指定阈值,则根据垃圾回收的需求而选取大块(1460)作为活动大块。例如,随机选取大块,选择其擦写次数最小或较小的大块(以实现磨损均衡),或者选择其擦写次数最大或较大的大块(用于存储例如冷数据)。
图15展示了根据本申请依然再一实施例的垃圾数据回收的示意图。
根据本申请的实施例,待写入存储设备的数据被标注为一个或多个流。作为举例,图15中展示了4个流,分别是用户数据流(S1)、用户数据流(S2)、GC流(Sg1)与GC流(Sg2),其中用户数据流是提供给存储设备的IO命令要写入的数据,GC流是来自垃圾回收过程中从脏大块回收的数据。
数据被标注为不同的流。例如,主机提供给存储设备的IO命令指示了流,根据IO命令访问的地址空间或命令空间而为IO命令绑定到流,根据IO命令的特征将IO命令绑定到流等。在申请号为201811154584.2、发明名称为“用于多流、开放通道存储设备的演进的自动流跟踪”的中国专利申请提供了将IO命令绑定到流的技术方案,在申请号为201811123110.1、发明名称为“存储设备的智能数据分流与流跟踪”的中国专利申请中也提供了将IO命令绑定到流的技术,将上述两件中国专利申请的全文通过引用合并于此。
待写入存储设备的属于一个或多个流的数据被写入多个大块(称为活动大块)。图15展示了4个活动大块,大块(U1)、大块(U2)、大块(GU1)与大块(GU2)。活动大块的存储空间被写满后,活动大块被设置为关闭状态,以及获取新的空闲大块来作为活动大块。例如,大块(U1)与大块(U2)是用于承载用户数据流的大块,而大块(GU1)与大块(GU2)是用于承载GC流的大块。
<流-大块>映射单元1510将流与活动大块绑定。<流-大块>映射单元1510在流与活动大块之间维护静态和/或动态的绑定关系。
作为举例,<流-大块>映射单元1510将用户数据流绑定到大块(U1)和/或大块(U2),将GC流绑定到大块(GU1)和/或大块(GU2)。依然作为举例,<流-大块>映射单元1510将代表热数据的用户数据流(S1)绑定到大块(U1),而将代表冷数据的用户数据流(S2)绑定到大块(U2)。作为又一个例子,<流-大块>映射单元1510将来自存储冷数据的脏大块回收的数据(GC流(Sg1))绑定到大块(GU1),而将从其他脏大块回收的数据(GC流(Sg2))绑定到大块(GU2)。依然可选地,流的数量不同于活动大块的数量,一个或多个流被绑定到相同的大块,和/或一个流被绑定到多个大块。
写入管理单元1520依据从<流-大块>映射单元1510获取的流与数据的绑定关系,从指定的流获取数据,并根据获取的数据所属的流选择指定的大块,将指示介质接口控制器1530将获取的数据写入该指定的活动大块。
从空闲大块集合1540选择空闲大块(1550),作为备用空闲大块或活动大块。备用空闲大块或活动大块被设置了不同的用途,例如大块(U1)与大块(U2)是用于承载用户数据流的大块,而大块(GU1)与大块(GU2)是用于承载GC流的大块。
根据图15展示的实施例,在多种时机(1551、1552、1553与1554)与采用多种策略(1555、1556、1557与1558)选择空闲大块。
选择空闲大块的时机包括,例如,活动大块的一个或多个被写满,例如活动大块(U1或U2)被写满(1551)或活动大块(GU1或2)被写满(1552),而选择新的空闲大块作为活动大块,或者用备用大块作为活动大块而选择新的空闲大块作为备用大块。选择空闲大块的时机还包括,响应于有新的空闲大块被释放(1553)(添加到空闲大块集合)而选择空闲大块用于替换备用大块或尚未被写入数据的活动大块。选择空闲大块的时机还包括,备用大块作为备用大块的时间过长(1554),例如超出阈值,而选择空闲大块用于替换该备用大块,以有机会根据更新的状态选择备用大块或活动大块。
选择空闲大块的策略包括,例如,为用于热数据的流或者为提供活动大块(U1)而选择擦写次数最小的空闲大块(1555);为用于冷数据的流或者为提供活动大块(U2)而选择擦写次数最大的空闲大块;为GC流或者为提供活动大块(GU1)/活动大块(GU2)而选择擦写次数最大的空闲大块(1556);选择擦写次数远离(过大或过小)平均擦写次数的空闲大块(1557)以促进磨损均衡,和/或根据存储设备的所有活动大块的坏块数量与存储设备的大块的预期坏块数量的差值来选取空闲大块(1558)。例如,若当前所有活动大块的坏块数量同预期坏块数量的差距较大(大于或小于),则选取这样的大块,使得选取后所有活动大块的坏块数量同预期坏块数量的差值变小或者趋近于0,或者使得选取后所有活动大块的坏块数量(例如总值或平均值)属于指定区间。
可选地,<流-大块>映射单元1510还检查活动大块作为活动大块的时间是否过长(1512)。例如,活动大块(GU2)因长期得不到来自GC流的数据而存在时间超过了阈值,则<流-大块>映射单元1510改变映射规则,将一个或多个用户数据流映射到大块(GU2),以将大块(GU2)尽快写满。将活动大块被写满,称为“关闭”活动大块。
根据本申请的实施例还提供了一种存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被存储设备的控制器运行时,使得存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种为待写入存储设备的数据分配存储介质资源的方法,包括获取在被用来承载写入数据的一个或多个大块的坏块数量;
根据所述坏块数量与预期坏块数量的差距,选择第一大块用来承载写入数据,使得包括了所述第一大块的用来承载写入数据的多个大块的坏块数量与预期坏块数量的差距减小。
2.根据权利要求1所述的方法,其中
所述第一大块来自第一逻辑单元组,而被用来承载写入数据的所述一个或多个大块来自不同于第一逻辑单元组的一个或多个逻辑单元组。
3.根据权利要求1或2所述的方法,其中
所述预期坏块数量是存储设备的所有大块的坏块数量平均值,或者所述平均值加/减指定值得到的值或区间。
4.根据权利要求1-3之一所述的方法,其中
从逻辑单元组的每个获取物理块来构造大块,其中逻辑单元组的每个逻辑单元为所构造大块提供的物理块位于逻辑单元的不同的位置。
5.根据权利要求4所述的方法,其中要构造的大块具有编号i,为从编号为LN的逻辑单元为要构造的大块提供物理块,所述方法还包括:
根据逻辑单元的编号LN获得偏移值off_LN;
根据大块编号i与偏移值off_LN获得编号LN的逻辑单元提供给大块i的物理块的编号。
6.根据权利要求5所述的方法,其中
使用编号LN查询偏移值表得到同编号LN对应的偏移值;
遍历偏移值表的各偏移值的多个或所有可能取值,选择偏移值表的各偏移值的取值,使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值最小,或使得根据所选择的偏移值表构造的多个或所有大块的各个大块的坏块数的最大值的方差最小。
7.一种垃圾回收方法,包括:
获取一个或多个流;
将流中的数据写入同流对应的一个或多个活动大块;其中为分配大块作为活动大块,获取一个或多个活动大块的坏块数量,根据所述坏块数量与预期坏块数量的差距,选择第一大块作为活动大块,使得包括了所述第一大块的多个活动大块的坏块数量与预期坏块数量的差距减小。
8.根据权利要求7所述的方法,还包括:
若根据所述坏块数量与预期坏块数量的差距小于阈值,选择擦写次数最大的空闲大块作为活动大块、选择擦写次数最小的空闲大块作为活动大块或者选择擦写次数接近存储设备的所有大块的平均擦写次数的空闲大块作为活动大块。
9.根据权利要求7或8所述的方法,其中
所述第一大块来自第一逻辑单元组,而被用来承载写入数据的所述一个或多个大块来自不同于第一逻辑单元组的一个或多个逻辑单元组。
10.一种存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据权利要求1-9之一所述的构造大块的方法。
CN201910595250.7A 2019-07-03 2019-07-03 提升存储设备服务质量的大块构造、分配方法及其存储设备 Active CN112181276B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910595250.7A CN112181276B (zh) 2019-07-03 2019-07-03 提升存储设备服务质量的大块构造、分配方法及其存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910595250.7A CN112181276B (zh) 2019-07-03 2019-07-03 提升存储设备服务质量的大块构造、分配方法及其存储设备

Publications (2)

Publication Number Publication Date
CN112181276A true CN112181276A (zh) 2021-01-05
CN112181276B CN112181276B (zh) 2023-06-20

Family

ID=73915489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910595250.7A Active CN112181276B (zh) 2019-07-03 2019-07-03 提升存储设备服务质量的大块构造、分配方法及其存储设备

Country Status (1)

Country Link
CN (1) CN112181276B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485948A (zh) * 2021-06-29 2021-10-08 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1745433A (zh) * 2002-12-09 2006-03-08 桑迪士克股份有限公司 对非易失性存储器中缺陷的区界调整
US20070081385A1 (en) * 2005-10-06 2007-04-12 Phison Electronics Corp. [method for managing memory blocks in flash memory]
US20090240873A1 (en) * 2003-12-02 2009-09-24 Super Talent Electronics Inc. Multi-Level Striping and Truncation Channel-Equalization for Flash-Memory System
CN104778127A (zh) * 2015-03-25 2015-07-15 合肥格易集成电路有限公司 一种nand flash写数据的方法和装置
CN107807788A (zh) * 2016-09-09 2018-03-16 北京忆恒创源科技有限公司 多平面闪存的数据组织方法与装置
US20180081797A1 (en) * 2016-09-21 2018-03-22 Institute of Geology and Geophysics, Chinese Academy of Sciences. Wear-leveling nandflash memory reading/writing method
US20180247696A1 (en) * 2017-02-28 2018-08-30 Toshiba Memory Corporation Memory system comprising nonvolatile memory
CN108475232A (zh) * 2016-02-23 2018-08-31 桑迪士克科技有限责任公司 使用xcopy和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式
CN108897492A (zh) * 2018-05-30 2018-11-27 新华三技术有限公司 一种数据写入方法和装置
US20190087328A1 (en) * 2017-09-21 2019-03-21 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
CN109521969A (zh) * 2018-11-20 2019-03-26 郑州云海信息技术有限公司 一种固态硬盘数据回收方法、装置和计算机可读存储介质
CN109558334A (zh) * 2017-09-27 2019-04-02 北京忆恒创源科技有限公司 垃圾数据回收方法及固态存储设备
CN109614052A (zh) * 2018-12-13 2019-04-12 郑州云海信息技术有限公司 一种数据巡检方法、装置和计算机可读存储介质
CN112181274A (zh) * 2019-07-01 2021-01-05 北京忆恒创源科技有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1745433A (zh) * 2002-12-09 2006-03-08 桑迪士克股份有限公司 对非易失性存储器中缺陷的区界调整
US20090240873A1 (en) * 2003-12-02 2009-09-24 Super Talent Electronics Inc. Multi-Level Striping and Truncation Channel-Equalization for Flash-Memory System
US20070081385A1 (en) * 2005-10-06 2007-04-12 Phison Electronics Corp. [method for managing memory blocks in flash memory]
CN104778127A (zh) * 2015-03-25 2015-07-15 合肥格易集成电路有限公司 一种nand flash写数据的方法和装置
CN108475232A (zh) * 2016-02-23 2018-08-31 桑迪士克科技有限责任公司 使用xcopy和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式
CN107807788A (zh) * 2016-09-09 2018-03-16 北京忆恒创源科技有限公司 多平面闪存的数据组织方法与装置
US20180081797A1 (en) * 2016-09-21 2018-03-22 Institute of Geology and Geophysics, Chinese Academy of Sciences. Wear-leveling nandflash memory reading/writing method
US20180247696A1 (en) * 2017-02-28 2018-08-30 Toshiba Memory Corporation Memory system comprising nonvolatile memory
US20190087328A1 (en) * 2017-09-21 2019-03-21 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
CN109558334A (zh) * 2017-09-27 2019-04-02 北京忆恒创源科技有限公司 垃圾数据回收方法及固态存储设备
CN108897492A (zh) * 2018-05-30 2018-11-27 新华三技术有限公司 一种数据写入方法和装置
CN109521969A (zh) * 2018-11-20 2019-03-26 郑州云海信息技术有限公司 一种固态硬盘数据回收方法、装置和计算机可读存储介质
CN109614052A (zh) * 2018-12-13 2019-04-12 郑州云海信息技术有限公司 一种数据巡检方法、装置和计算机可读存储介质
CN112181274A (zh) * 2019-07-01 2021-01-05 北京忆恒创源科技有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485948A (zh) * 2021-06-29 2021-10-08 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件
CN113485948B (zh) * 2021-06-29 2023-11-14 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件

Also Published As

Publication number Publication date
CN112181276B (zh) 2023-06-20

Similar Documents

Publication Publication Date Title
CN106448737B (zh) 读取闪存数据的方法、装置以及固态驱动器
KR101324688B1 (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
CN109144885B (zh) 固态存储设备的垃圾回收方法与固态存储设备
US11416162B2 (en) Garbage collection method and storage device
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
JPWO2016135955A1 (ja) 不揮発性メモリデバイス
CN109558334B (zh) 垃圾数据回收方法及固态存储设备
CN109558333B (zh) 具有可变额外存储空间的固态存储设备命名空间
EP3752905A1 (en) Append only streams for storing data on a solid state device
CN104503703A (zh) 缓存的处理方法和装置
WO2018024214A1 (zh) Io流调节方法与装置
KR20150142583A (ko) 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
CN109976664B (zh) 固态存储设备的日志数据组织
CN112181274B (zh) 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN113590505A (zh) 地址映射方法、固态硬盘控制器及固态硬盘
CN107229580A (zh) 顺序流检测方法与装置
CN110554833A (zh) 存储设备中并行处理io命令
CN112181276B (zh) 提升存储设备服务质量的大块构造、分配方法及其存储设备
CN109426436A (zh) 基于可变长大块的垃圾回收方法与装置
US20190034121A1 (en) Information processing apparatus, method and non-transitory computer-readable storage medium
US20230075329A1 (en) Super Block Allocation Across Super Device In ZNS SSD
WO2015118623A1 (ja) 情報処理装置
CN111338975A (zh) 面向多流的垃圾回收方法及其存储设备
CN110968520B (zh) 基于统一缓存架构的多流存储设备

Legal Events

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

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

Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd.

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

Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant