多平面nvm处理编程出错的方法与存储设备

文档序号:828772 发布日期:2021-03-30 浏览:3次 >En<

阅读说明:本技术 多平面nvm处理编程出错的方法与存储设备 (Method for processing programming error of multi-plane NVM and storage device ) 是由 于松海 李德领 袁戎 于 2019-09-27 设计创作,主要内容包括:提供了多平面NVM处理编程出错的方法与存储设备。所提供的用于存储设的方法,包括:获取待回收的存储块,若存储块被标记为伪坏块,擦除所述存储块;以及若擦除所述存储块成功,将所述存储块标记为好块。(Methods and memory devices for handling programming errors for multi-plane NVM are provided. A method for a storage device is provided, comprising: acquiring a storage block to be recovered, and erasing the storage block if the storage block is marked as a false bad block; and if the memory block is successfully erased, marking the memory block as a good block.)

多平面NVM处理编程出错的方法与存储设备

技术领域

本申请涉及存储技术,尤其涉及在存储设备中具有多平面(Plane)的NVM

(Non-Volatile Memory,非易失存储器)指示处理编程命令出错后的处理方法及其存储设备。

背景技术

图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small ComputerSystem Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、 NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。

NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Random AccessMemory,阻变存储器)、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也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件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闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。

NVM上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。

在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。

存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。

一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的处理器执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。

大块包括来自多个逻辑单元(LUN)的每个的物理块。为大块提供物理块的多个逻辑单元被称为逻辑单元组。逻辑单元组的每个逻辑单元可以为大块提供一个物理块。例如,在图2所示出的大块的示意图中,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个分别来自16个逻辑单元(LUN)的物理块。在图2的例子中,大块0包括来自16个逻辑单元(LUN)中的每个逻辑单元的物理块0,而大块2包括来自每个逻辑单元(LUN)的物理块2。也可以以多种其他方式来构造大块。图2中,用形如Ba-b的附图标记指示物理块,其中a指示该物理块由逻辑单元(LUN a)提供,而b指示该物理块在逻辑单元中的块号为b。大块存储用户数据与校验数据。根据大块存储的用户数据计算得到大块的校验数据。作为举例,在大块的最后一个物理块中存储校验数据。也可以选择大块的其他物理块来存储校验数据。作为又一个例子,在申请号为201710752321.0 的中国专利申请的图3A及其说明书中对图3A的相关描述中,提供了大块的又一种构造方式。

图3展示了逻辑单元与平面(Plane)的示意图。每个逻辑单元(LUN)包括多个平面(Plane)。参看图3,在16个逻辑单元(LUN0、LUN1、……、LUN15)的逻辑单元组上构造大块。以LUN 2为例,LUN 2包括4个平面(平面0、平面1、平面2与平面3,其中示出了平面0与平面3)。LUN内的各个平面可以同时进行读写操作,从而提升了 NVM操作的并行性。

图3中,LUN0-LUN15的块B0构成了大块0,其中LUN0到LUN14的各个平面中的物理块B0用于存储用户数据,而LUN15的4个平面的物理块B0用于存储根据大块0 的用户数据计算得到的校验数据。LUN0-LUN15的块B1构成了大块1。在图3的LUN2 中,展示了LUN2中的平面0与平面3。NVM中有时会存在坏块,并导致各大块包括不同数量的物理块。

发明内容

根据本申请的第一方面,提供了根据本申请第一方面的第一用于存储设备设的方法,包括:获取待回收的存储块,若存储块被标记为伪坏块,擦除所述存储块;以及若擦除所述存储块成功,将所述存储块标记为好块。

根据本申请第一方面的第一用于存储设备的方法,提供了根据本申请第一方面的第二用于存储设备的方法,还包括:若擦除所述存储块失败,将所述存储块标记为坏块。

根据本申请第一方面的第一或第二用于存储设的方法,提供了根据本申请第一方面的第三用于存储设的方法,其中若获取的待回收的所述存储块被标记为坏块,不回收所述存储块。

根据本申请第一方面的第一至第三用于存储设备的方法之一,提供了根据本申请第一方面的第四用于存储设备的方法,其中若所述存储块被标记为伪坏块,在擦除所述存储块之前,还将所述存储块上存储的有效数据搬移到其他存储块。

根据本申请第一方面的第一至第四用于存储设备的方法之一,提供了根据本申请第一方面的第五用于存储设备的方法,还包括:获取指示NVM芯片处理完成编程命令的消息,所述编程命令操作第一存储块;若所述消息指示编程命令执行失败,将所述第一存储块标记为坏块,以及将同所述第一存储块属于相同平面的一个或多个存储块标记为伪坏块。

根据本申请第一方面的第五用于存储设备的方法,提供了根据本申请第一方面的第六用于存储设备的方法,其中:响应于所述消息指示编程命令执行失败:将所述存储设备中的打开的大块中的同所述第一存储块属于相同平面的存储块标记为伪坏块;将所述存储设备中的同所述第一存储块属于相同平面的所有其他存储块标记为伪坏块;或者将所述存储设备中的同所述第一存储块属于相同平面的所有其他尚未被写入数据的存储块标记为伪坏块。

根据本申请第一方面的第五或第六用于存储设备的方法,提供了根据本申请第一方面的第七用于存储设备的方法,其中:响应于所述消息指示编程命令执行失败,将所述存储设备中同所述第一存储块处于相同LUN且具有相同块地址的存储块标记为伪坏块。

根据本申请第一方面的第五用于存储设备的方法,提供了根据本申请第一方面的第八用于存储设备的方法,其中:响应于所述消息指示编程命令执行失败,以及将同所述第一存储块属于相同平面的一个或多个未被标记为坏块的存储块标记为伪坏块。

根据本申请第一方面的第六用于存储备的方法,提供了根据本申请第一方面的第九用于存储设备的方法,其中响应于所述消息指示编程命令执行失败:将所述存储设备中的打开的大块中的同所述第一存储块属于相同平面且未被标记为坏块的存储块标记为伪坏块;将所述存储设备中的同所述第一存储块属于相同平面的所有其他未被标记为坏块的存储块标记为伪坏块;或者将所述存储设备中的同所述第一存储块属于相同平面的所有其他尚未被写入数据且未被标记为坏块的存储块标记为伪坏块。

根据本申请第一方面的第五至第九用于存储设备的方法之一,提供了根据本申请第一方面的第十用于存储设备的方法,还包括:为所述第一存储块所在的LUN设置坏块标记。

根据本申请第一方面的第五至第十用于存储设备的方法之一,提供了根据本申请第一方面的第十一用于存储设备的方法,还包括:响应于所述消息指示编程命令执行成功,若所述第一存储块被标记为坏块或伪坏块,将所述消息指示的编程命令要写入的数据写入其他存储块。

根据本申请第一方面的第五至第十一用于存储设备的方法之一,提供了根据本申请第一方面的第十二用于存储设备的方法,还包括:响应于所述消息指示编程命令执行成功,若所述第一存储块既未被标记为坏块也未被标记为伪坏块,释放为所述编程命令分配的资源。

根据本申请第一方面的第五至第十二用于存储设备的方法之一,提供了根据本申请第一方面的第十三用于存储设备的方法,还包括:响应于所述消息指示编程命令执行成功,识别所述第一存储块所在的LUN是否被设置了坏块标记;若所述第一存储块所在的 LUN被设置了坏块标记,再识别所述第一存储块是否被标记为坏块或伪坏块。

根据本申请第一方面的第五至第十三用于存储设备的方法之一,提供了根据本申请第一方面的第十四用于存储设备的方法,还包括:响应于所述消息指示编程命令执行成功,识别所述第一存储块所在的LUN是否被设置了坏块标记;若所述第一存储块所在的 LUN未被设置了坏块标记,释放为所述编程命令分配的资源。

根据本申请第一方面的第十二或第十三用于存储设备的方法,提供了根据本申请第一方面的第十五用于存储设备的方法,还包括:若所述第一存储块既未被标记为坏块也未被标记为伪坏块,清除所述第一存储块所在的LUN的坏块标记。

根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括控制部件与NVM芯片,所述控制部件执行根据本申请第一方面的用于存储设备的方法之一。

根据本申请的第三方面,提供了根据本申请第三方面的第一用于存储设的系统,包括:擦除模块,用于获取待回收的存储块,若存储块被标记为伪坏块,擦除所述存储块;以及标记模块,用于若擦除所述存储块成功,将所述存储块标记为好块。。

附图说明

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

图1展示了存储设备的框图;

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

图3展示了逻辑单元与平面(Plane)的示意图;

图4展示了根据本申请实施例的存储设备的大块与平面的坏块的示意图;

图5A展示了根据本申请实施例的存储设备的框图;

图5B展示了根据本申请实施例的处理命令的流程图;

图6展示了根据本申请实施例的数据回收过程的流程图;

图7为根据本申请又一实施例的控制部件的框图;

图8展示了根据本申请又一实施例的处理命令的流程图;以及

图9展示了根据本申请再一实施例的处理命令的流程图。

具体实施方式

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

图4展示了根据本申请实施例的存储设备的大块与平面的坏块的示意图。

图4展示了在16个LUN构成的LUN组中构造的大块(例如大块0、大块2、大块 410以及大块420)。大块410的由LUN2的平面0提供的物理块412是坏块。NVM芯片出厂时,其中的坏块已被标注。在存储设备使用NVM芯片时,识别并标注新出现的坏块。被标注为坏块的物理块不再被存储设备的控制部件使用,被标注为坏块的物理块,其上被写入的数据,将被控制部件搬移到其他物理块。例如,在垃圾回收过程中,将坏块中被写入的数据搬移到其他物理块。

现有技术中,依据NVM芯片供应商在NVM芯片中设置的标注来识别坏块,以及依据NVM芯片在影响读、编程、擦除命令中的响应来识别坏块。例如,若对块施加的擦除或编程命令处理失败,将该块识别为坏块。

本申请的发明人在研发、实验中发现,在同一个管芯(DIE)中,不同平面(Plane)的坏块具有相关性。在使用中,若在平面0的编号为B1的物理块成为了坏块,那么在该平面内的其他物理块也是坏块或即将变为坏块的几率明显大于其他物理块。进一步地,若这种块尚未被标识为坏块,控制部件会向其写入数据,而响应于数据的编程操作,这些块又因其已经是坏块或将变为坏块而有较大几率表现出编程操作执行失败,并触发错误处理操作。错误处理操作打断了控制部件的正常处理流程,极大地影响了存储设备的性能。

依然进一步地,在一些实施方式中,控制部件向两个或多个大块(将这些大块称为打开的大块)写入数据。若一个打开的大块的物理块B1的编程操作执行失败,在另一打开的大块或其他打开的大块的同该物理块B1属于相同平面的物理块的编程操作也有更大几率失败,从而可能引起连续的多次错误处理操作,这进一步恶化了存储设备的性能,例如降低了读/写带宽,增加了读/写延迟,并引起性能的抖动。

继续参看图4,大块410与大块420都是打开的大块,要承载写入的数据。大块410的物理块412是坏块,根据本申请的实施例,大块420的物理块422由于同物理块412 属于相同管芯的相同平面,因而物理块422称为坏块的几率较大。特别是在物理块412 与物理块422本是正常的物理块的情况下,当物理块412出现编程错误而被识别为坏块后,物理块422即将变为坏块的几率较大。

为此,根据本申请的实施例,响应于向物理块412写入数据时出现编程错误而将物理块412识别为坏块,虽然在物理块422上尚未出现编程错误,也将物理块422标记为“伪坏块”。对于被标记的“伪坏块”,不再向其写入数据,从而减少编程操作失败的几率,也减少触发错误处理操作的几率,以减少存储设备的性能抖动。

可选地,响应于物理块422被识别为坏块,仅将当前属于打开的大块的大块420的对应物理块422标记为“伪坏块”。在又一种实施方式中,响应于物理块422被识别为坏块,将同物理块422属于相同平面的(平面0)的所有尚未被写入数据的物理块标记为“伪坏块”。作为再一种实施方式,响应于物理块422被识别为坏块,将同物理块422属于相同平面的(平面0)的所有物理块标记为“伪坏块”,并且对于已被写入数据且又被标记为“伪坏块”的物理块,还优先对其实施数据搬移,将其上已被写入的数据搬移到其他物理块。

图5A展示了根据本申请实施例的存储设备的框图。

图5A中示出的控制部件包括主机接口510、命令处理单元530、命令完成处理单元540和用于访问NVM芯片105的介质接口520。多个NVM芯片105耦合到控制部件。

主机接口510用于同主机交换命令与数据。命令是例如访问存储设备的IO命令。在一个例子中,主机与存储设备通过NVMe/PCIe协议通信,主机接口210处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。

命令处理单元530耦合到主机接口510,接收主机发送给存储设备的命令,并将命令提供给介质接口520。命令处理单元530根据主机提供的读命令,指示介质接口520 从NVM芯片读出数据,或根据主机提供的写命令,指示介质接口520向NVM芯片发送编程命令以写入数据。命令处理单元530由CPU或专用硬件实现。

介质接口520将NVM芯片处理命令的结果提供给命令完成处理单元540。若命令被处理成功,命令完成处理单元540释放该命令所占用的资源(例如,临时存储该命令要写入的数据的缓存),或向主机返回命令处理结果。若命令处理失败,命令完成处理单元 540可发起错误处理过程(例如将缓存的该命令要写入的数据重新写入NVM芯片),以尝试消除命令处理失败所产生的影响,和/或向主机返回命令处理结果。

NVM芯片处理命令可能出错。例如,写物理块B的页X的命令被NVM芯片处理时出错,介质接口520作为响应向命令完成处理单元540指示写物理块B的页X的命令处理出错。命令处理单元540据以将页X所在的块(称为块B)识别为坏块。坏块不再被写入数据,并且,已被写入坏块的数据将被搬移到其他块。命令完成处理单元540向命令处理单元530指示物理块B是坏块。从而命令处理单元530不再向块B写入数据。以及命令处理单元530在随后的时间产生多个命令,以将已写入块B的数据搬移到其他块。命令完成处理单元540还将同物理块B所在平面的其他物理块标记为伪坏块,并向命令处理单元530指示这些其他物理块是伪坏块。从而命令处理单元530不再向这些其他物理块写入数据。若这些其他物理块的一个或多个已被写入数据,命令处理单元530在随后的时间还产生多个命令,以将已写入这些其他物理块的数据搬移到其他块。

图5B展示了根据本申请实施例的处理命令的流程图。

命令处理530单元提供命令给介质接口520以访问NVM芯片105。介质接口520将NVM芯片处理命令的结果提供给命令完成处理单元540。命令完成处理单元540识别命令的处理结果。若识别出对块B的页X的编程命令处理失败(550),指示命令处理单元 530生成新的写命令来将要写入页X的数据重新写入其他块(560)。以及将块B标记为坏块(570),还将同物理块B属于相同平面的其他物理块标记为伪坏块(570)。命令处理单元530不再向标记为坏块或伪坏块的块写入数据。可选地,控制部件使用两个或多个打开的大块,响应于物理块B被识别为坏块,命令完成处理单元540仅将当前打开的大块中同物理块B属于相同平面的物理块标记为伪坏块。依然可选地,命令完成处理单元540将同物理块B属于相同平面的所有物理块标记为伪坏块。这些被标记为伪坏块的物理块的一些已被写入数据而另一些尚未被写入数据。命令处理单元530还生成多个命令将已写入块B的数据以及已写入伪物理块的数据搬移到其他块(580)。依然可选地,命令完成处理单元540将同物理块B属于相同平面的尚未被写入数据的物理块标记为伪坏块。

可选地,命令完成处理单元540标记伪坏块时,还检查要被标记的物理块是否为坏块。若要被标记的物理块已被标记为坏块(在出厂时被标记或者在使用中被标记),则不改变该坏块标记,也不再将其标记为伪坏块。而若要被标记的物理块尚未被标记为坏块,则将其标记为伪坏块。

需要指出的,坏块标记与伪坏块标记是不同的标记。作为举例,对于坏块与伪坏块,命令处理单元530都不再向其写入数据。但是对于伪坏块,接下来,例如在垃圾回收操作中,命令处理单元530会通过介质接口520向其施加擦除命令,若伪坏块被擦除成功,命令完成处理单元540基于伪坏块被擦除成功而清除其伪坏块标记,从而命令处理单元 530再次打开这些物理块并向其写入数据。而对于坏块,命令处理单元530不再向其施加擦除命令。

图6展示了根据本申请实施例的数据回收过程的流程图。

控制部件的例如命令处理单元(例如,图5A的命令处理单元530)适时发起数据回收,以将被回收的物理块中的有效数据搬移到其他物理块,并擦除被回收的物理块。命令处理单元选择要被回收的物理块(记为物理块B2)(610)。识别物理块B2是否被标记为坏块(620)。对于坏块,无须进行数据回收(670)。若物理块B2未被标记为坏块,还识别其是否被标记为“伪坏块”(630)。若物理块B2未被标记为伪坏块,回收其上存储的有效数据(640),并擦除物理块B2(650)。若步骤630识别出物理块B2已被标记为伪坏块,直接擦除该物理块(650),而无须回收其数据。

控制部件的命令完成处理单元(例如,图5A的命令完成处理单元540)识别物理块B执行擦除命令是否成功(660)。若物理块B执行擦除命令成功,意味着其并非坏块,而清除其上的伪坏块标记(将物理块B2记录为可用的好块)(680),若物理块B执行擦除命令失败,确定其为坏块,将物理块B2标记为坏块(可选地也清除其伪坏块标记)(690)。被清除了伪坏块标记的物理块(可用的好块),将来可被分配来承载写入的数据。从而根据本申请的实施例,通过将一些物理块在尚未发生实际的损坏时预测性的标记为伪坏块而减少了向其写入数据的编程操作的失败几率,特别是对多个大块的来自相同平面的物理块的连续的写入数据的编程操作的失败几率,降低了错误处理操作发生的几率,减少了存储设备的性能抖动。同时,又在数据回收(或垃圾回收、存储块回收)操作中识别伪坏块是否真实存在故障,并将不存在故障的伪坏块重新标记为好块,以使其将来可用于承载写入的数据,避免了对存储块资源的浪费。

图7为根据本申请又一实施例的控制部件的框图。图7中示出的控制部件包括主机接口710、命令处理单元730、命令完成处理单元740和用于访问NVM芯片105的介质接口720。多个NVM芯片105耦合到控制部件。NVM芯片包括一个或多个逻辑单元 (LUN),例如,LUN 0、LUN 1、LUN 2与LUN 3。

控制部件提供多个命令队列(例如命令队列0、命令队列1、命令队列2与命令队列3),每个命令队列同NVM芯片的逻辑单元之一对应。命令处理单元730将访问例如LUN 1的命令填充到同LUN 1对应的命令队列1。

介质接口720将NVM芯片处理命令的结果提供给命令完成处理单元740。

命令队列是先进先出队列。命令处理单元730将命令填充到命令队列的队尾。从命令队列的队头获取命令,并由介质接口720根据命令访问NVM芯片。

命令队列包括多个条目,每个条目容纳一个命令。从而命令队列能容纳访问同其对应的逻辑单元的多个命令。并且,各命令队列中的命令被顺序的处理。作为举例,参看图7,对应于LUN 1的命令队列1被按顺序填充了写(也称为编程)页X的命令、写页 X+1的命令、读页Y的命令以及写页X+1的命令。

NVM芯片处理命令可能出错。例如,命令队列1的写页X的命令被NVM芯片处理时出错,介质接口720作为响应向命令完成处理单元740指示写页X的命令处理出错。命令处理单元740据以将页X所在的物理块(称为物理块B)识别为坏块。坏块不再被写入数据,并且,已被写入坏块的数据将被搬移到其他块。命令完成处理单元740向命令处理单元730指示块B是坏块。从而命令处理单元730不再向块B写入数据。以及命令处理单元730在随后的时间产生多个命令,以将已写入块B的数据搬移到其他块。

命令完成处理单元740还将同物理块B所在平面的其他物理块标记为伪坏块,并向命令处理单元730指示这些其他物理块是伪坏块。从而命令处理单元730不再向这些其他物理块写入数据。若这些其他物理块的一个或多个已被写入数据,命令处理单元730 在随后的时间还产生多个命令,以将已写入这些其他物理块的数据搬移到其他块。

然而,参看命令队列1,在写页X的命令之后(此时尚未识别出块B是坏块),写页 X+1的命令与写页X+2的命令也被填充到队列。命令完成处理单元740获知写页X的命令处理出错时,写页X+1的命令与写页X+2的命令已被添加到命令队列1或者被提交给 LUN 1。因而写页X+1的命令与写页X+2的命令无法被撤销。这导致事实上向坏块B提交了写命令(例如,写页X+1的命令与写页X+2的命令)。

若NVM芯片处理写页X+1的命令或写页X+2的命令失败,命令完成处理单元740 响应于对写页X+1的命令或写页X+2的命令处理出错的指示,有机会通知命令处理单元730重新生成写命令,以将写页X+1的命令或写页X+2的命令对应的数据重新写入其他块,从而保证这些数据被可靠地记录的NVM芯片中。

但是,若NVM芯片处理写页X+1的命令或写页X+2的命令成功,命令完成处理单元740会接收到对写页X+1的命令或写页X+2的命令处理成功的指示。这种情况下,用于写页X+1的命令或写页X+2的命令的资源被释放,并且写入页X+1或页X+1的数据被不可靠地存储在块B,直到命令处理单元响应于识别出块B是坏块,而将块B的数据搬移到其他块,这些数据才被可靠地存储在NVM芯片。由于块B已被识别为坏块,从块B读出数据存在风险,块B上的数据可能已经损坏,这为存储设备的数据可靠性产生了风险。

图8展示了根据本申请又一实施例的处理命令的流程图。

命令完成处理单元810(也参看图7)获取指示NVM对命令处理完成的消息(810),并识别消息指示的命令处理结果。若对块B的页X的编程失败(815),指示命令处理单元730生成新的写命令来将要写入页X的数据重新写入其他块(840)。以及将块B标记为坏块(845)。命令处理单元730不再向标记为坏块的块写入数据。

响应于将物理块B标记为坏块,还获取将同物理块B属于相同平面的一个或多个其他物理块(记为物理块B1)(850)。进一步识别物理块B1是否已被标记为坏块(855)。若物理块B1未被标记为坏块(855),将物理块B1标记为伪坏块(860)。若物理块B1 已被标记为坏块,则无须修改其坏块标记。命令处理单元730不再向标记为坏块或伪坏块的块写入数据。

可选地,控制部件使用两个或多个打开的大块,响应于物理块B被识别为坏块,7仅将当前打开的大块中同物理块B属于相同平面的物理块标记为伪坏块。依然可选地,7 将同物理块B属于相同平面的所有物理块标记为伪坏块。这些被标记为伪坏块的物理块的一些已被写入数据而另一些尚未被写入数据。依然可选地,命令完成处理单元540将同物理块B属于相同平面的尚未被写入数据的物理块标记为伪坏块。

命令处理单元730还生成多个命令将已写入块B的数据以及可选地已写入伪物理块的数据搬移到其他块(865)(将该过程称为数据回收)。数据回收操作未必立即被执行,而是在适当的时候(例如,存储设备空闲、存储设备的可用块数据小于阈值等)被执行。

若命令完成处理单元740识别出写块B的页X的命令处理成功(815),进一步检查块B是否被标记为坏块或伪坏块(820)。若块B被标记为坏块或伪坏块,虽然当前写块 B的页X的命令处理成功,也按照写块B的页X的命令处理失败来应对,例如指示命令处理单元730生成新的写命令来将要写入页X的数据重新写入其他块(830)。

基于之前的记录,命令处理单元740知晓块B已被标记为坏块或伪坏块,从而命令处理单元740知晓写写块B的页的命令的处理存在风险或不可靠,并且按照写命令处理失败来应对,例如立即将要写入这些页的数据重写到其他块,而不是等到数据回收操作时才进行数据搬移,从而无须坏块或伪坏块的页来存储数据(即使得其存储数据的时间较短),保障了存储设备的数据存储的可靠性。

若块B未被标记为坏块或伪坏块(820),命令完成处理单元740释放该命令所占用的资源(例如,临时存储该命令要写入的数据的缓存),或向主机返回命令处理结果。

图9展示了根据本申请再一实施例的处理命令的流程图。

存储设备中可能存在几万甚至更多的块。在承载写命令的块可能有十几到百余个。每个块所承载的写命令又有数百个(块中页的数量)。

对收到的每个NVM芯片的写命令处理结果,查询其访问的块是否曾出现命令处理失败,将引入额外开销,增加存储设备的工作负担。

对此,根据图9的实施例,命令完成处理单元740(也参看图7)获取指示NVM对命令处理完成的消息(910),并识别消息指示的命令处理结果(915)。若对物理块B的页X 的编程失败(915),指示命令处理单元730生成新的写命令来将要写入页X的数据重新写入其他块(950)。以及将块B标记为坏块,还为块B所在的LUN设置坏块标记(955)。

响应于将物理块B标记为坏块,还获取将同物理块B属于相同平面的一个或多个其他物理块(记为物理块B1)(960)。进一步识别物理块B1是否已被标记为坏块(965)。若物理块B1未被标记为坏块(965),将物理块B1标记为伪坏块(970)。若物理块B1 已被标记为坏块,则无须修改其坏块标记。命令处理单元730不再向标记为坏块或伪坏块的块写入数据。

命令处理单元730还生成多个命令将已写入块B的数据以及可选地已写入伪物理块的数据搬移到其他块(975)(将该过程称为数据回收)。

若命令完成处理单元740识别出写块B的页X的命令处理成功(915),进一步检查块B所在的LUN(记为LUN L)是否被设置了坏块标记(920)。若LUN L未被设置坏块标记(920),对写块B的页X的命令处理完成,命令完成处理单元240释放该命令所占用的资源(例如,临时存储该命令要写入的数据的缓存),或向主机返回命令处理结果 (940)。若LUN L被设置了坏块标记(920),进一步检查块B是否被标记为坏块或伪坏块(925)。若块B被标记为坏块或伪坏块(925),虽然当前写块B的页X的命令处理成功,也按照写块B的页X的命令处理失败来应对,例如指示命令处理单元730生成新的写命令来将要写入页X的数据重新写入其他块(930)。若块B未被标记为坏块或伪坏块 (925),清除块B所在的LUN L的坏块标记(935),对写块B的页X的命令处理完成,命令完成处理单元740释放该命令所占用的资源(例如,临时存储该命令要写入的数据的缓存),或向主机返回命令处理结果(940)。

例如,参看图7,命令队列1被填入了写页X的命令、写页X+1的命令与写页X+2 的命令。根据图9展示的实施例,命令处理完成单元240响应于发现写页X的命令处理失败,除了重写该命令对应的数据,还记录页X所在的块B是坏块,同块B属于相同平面的块为伪坏块,以及为块B所在的LUN L设置坏块标记。接下来,作为举例,NVM 芯片处理写页X+1的命令与写页X+2的命令成功,并且命令完成处理单元740接收到这样的指示。虽然命令完成处理单元740知晓写页X+1的命令与写页X+2的命令处理成功,它还进一步检查这些命令访问的LUNL是否被设置了坏块标记。基于之前的记录,LUN L被设置了坏块标记,从而命令处理单元继续检查块B是否被标记为坏块或伪坏块。基于之前的记录,命令完成处理单元740知晓块B已被标记为坏块,从而命令完成处理单元740知晓写页X+1的命令与写页X+2的命令的处理存在风险或不可靠,并且按照页 X+1的命令与写页X+2的命令处理失败来应对。

接下来,命令处理完成单元740发现写块B2(块B2不同于块B,同块B位于不同的平面,也位于LUN L)的页P的命令处理成功,命令处理完成单元740还进一步检查得到该命令访问的LUN L被设置了坏块标记。从而命令处理单元继续检查块B2是否被标记为坏块。基于之前的记录,命令处理单元740知晓块B2未被标记为坏块或伪坏块,从而清除LUN L上设置的坏块标记。接下来,命令完成处理单元740发现写块B7的页 P+1的命令处理成功,命令完成处理单元740还进一步检查得到该命令访问的LUN L未设置了坏块标记,从而对写块B2的页P+1的命令处理完成,而省去了对块B2是否为坏块的检查。

对于这些实施例中的数据回收操作,也根据图6展示的流程来实施。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于扩充硬盘扩充单元的丛集式储存系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类