提升存储设备性能稳定性的大块的组织方法及其存储设备与流程

文档序号:23553617发布日期:2021-01-05 21:14阅读:62来源:国知局
提升存储设备性能稳定性的大块的组织方法及其存储设备与流程

本申请涉及存储设备,具体地,涉及在存储设备中通过更好的构造大块来提升存储设备性能的稳定性,并减少存储设备性能的抖动。



背景技术:

图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。

nand闪存、相变存储器、feram(ferroelectricram,铁电存储器)、mram(magneticrandomaccessmemory,磁阻存储器)、rram(resistiverandomaccessmemory,阻变存储器)、xpoint存储器等是常见的nvm。

接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。

控制部件104用于控制在接口103、nvm芯片105以及dram110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器(cpu)或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令。控制部件104还可以耦合到dram110,并可访问dram110的数据。在dram可存储ftl表和/或缓存的io命令的数据。

控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。已知的nvm芯片接口协议包括“toggle”、“onfi”等。

存储器目标(target)是nand闪存封装内的共享ce(,chipenable,芯片使能)信号的一个或多个逻辑单元(lun,logicunit)。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的物理块构造大块后,大块的坏块数量,也呈现出高斯分布的统计特性而非均匀的。并导致在向各大块写入数据的过程中,存储设备的写性能发生波动。

根据本申请的实施例,使用了大块的组成方式,使用改进的方法来构造大块,使各大块的坏块数量尽量一致,以使存储设备的性能具有较高的稳定性,并减少性能的波动。

根据本申请的第一方面,提供了根据本申请第一方面的第一构造大块的方法,包括:从多个逻辑单元的每个获取物理块来构造大块,其中每个逻辑单元为所构造大块提供的物理块位于逻辑单元的不同的位置。

根据本申请第一方面的第一构造大块的方法,提供了根据本申请第一方面的第二构造大块的方法,其中要构造的大块具有编号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的物理块不是坏块。

根据本申请第一方面的第八至第十一构造大块的方法之一,提供了根据本申请第一方面的第十二构造大块的方法,其中所述阈值是大块的平均坏块数。

根据本申请的第二方面,提供了根据本申请第二方面的存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据本申请第一方面的第一至第十二构造大块的方法之一。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是相关技术中固态存储设备的框图;

图2展示了大块的示意图;

图3展示了大块的坏块分布的示意图;

图4展示了根据本申请的实施例的大块的组织的示意图;

图5展示了根据本申请的又一实施例的大块的组织的示意图;

图6展示了根据本申请实施例的寻找偏移值表的流程图;

图7展示了根据本申请实施例的应用偏移值表的流程图;以及

图8展示了根据本申请的依然再一实施例的构造大块的流程图。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图3展示了大块的坏块分布的示意图。

根据图3的例子,在16个lun上构造大块。每个lun向编号为i的大块提供编号为i的物理块以构造大块。例如,大块0包括来自lun0-lun15的每个的编号为0的物理块。大块2包括来自lun0-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,lun0为其提供的物理块的编号是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获取物理块。

根据本申请的实施例还提供了一种存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。

根据本申请的实施例还提供了一种存储在可读介质上的程序,当被存储设备的控制器运行时,使得存储设备执行根据本申请实施例提供的任意一种处理方法。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1