CN116661694A - 智能识别非易失存储介质不可靠块的方法与装置 - Google Patents
智能识别非易失存储介质不可靠块的方法与装置 Download PDFInfo
- Publication number
- CN116661694A CN116661694A CN202310644632.0A CN202310644632A CN116661694A CN 116661694 A CN116661694 A CN 116661694A CN 202310644632 A CN202310644632 A CN 202310644632A CN 116661694 A CN116661694 A CN 116661694A
- Authority
- CN
- China
- Prior art keywords
- block
- programming
- blocks
- command
- bad
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及存储技术领域,尤其涉及智能识别不可靠块的方法,包括:根据处理编程命令的时间与编程命令所操作的块的擦写次数,查询寿命预测表获得寿命预测值;若寿命预测值达到或超过寿命阈值,则将编程命令所操作的块识别为坏块,并将坏块的标识记录于坏块表中;以及将识别出的坏块上已被写入的数据搬移到其他块。本申请有效的识别或预测存储介质的块的寿命将尽,以避免向寿命将尽的块写入数据,从而减少因擦除操作、编程操作或读操作失败而对存储设备的影响。
Description
技术领域
本申请涉及存储技术领域,尤其涉及识别非易失存储介质不可靠块的方法与装置。
背景技术
图1展示了现有技术中的存储设备的框图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如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,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备100。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口110、控制部件120、一个或多个NVM芯片130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)140。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access 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 SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件120也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件120的硬件来处理IO(Input/Output)命令。控制部件120还可以耦合到DRAM 140,并可访问DRAM 140的数据。在DRAM存储FTL表和/或缓存的IO命令的数据。
控制部件120包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从
http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.as hx获得的“Open NAND Flash Interface Specification(Revision3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。
NVM存储介质上通常按页来存储和读取数据。而按块来擦除数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。可选地,访问存储设备的主机提供FTL。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。通常FTL表的数据项记录了存储设备中以数据页为单位的地址映射关系。
图2展示了现有技术中的存储设备的控制部件的框图。存储设备的控制部件104包括主机接口210、前端处理模块220、闪存管理模块230以及一个或多个介质接口控制器240。
主机接口210用于同主机交换命令与数据。闪存管理模块230提供逻辑地址到物理地址映射、磨损均衡、垃圾回收等功能,并生成IO命令发送给介质接口控制器240。介质接口控制器240耦合到NVM芯片105。可选地,介质接口控制器有一个或多个,每个接口控制器耦合到各自的NVM芯片105。介质接口控制器240接收IO命令,并根据IO命令向NVM芯片发出操作NVM芯片的命令(读、编程、擦除等命令)。
介质接口控制器240包括入港队列242与出港队列244。入港队列242与出港队列244用于耦合闪存管理模块230与介质接口控制器240。介质接口控制器240通过入港队列242接收IO命令,还通过出港队列244输出IO命令处理结果。闪存管理模块230通过入港队列242向介质接口控制器240提交IO命令,并从出港队列244获取IO命令的处理结果。
NAND闪存读写速度快,写入数据前必须先擦除数据,且擦除是以块(Block)为单位进行的。然而NAND闪存的寿命是有限的,一般来说,NAND闪存的寿命以擦写循环次数(Program and Erase cycle,PE cycle)来定义的。常见的3D TLC NAND闪存的寿命一般在3000次左右,这意味着NAND闪存的块在经历了大约3000次擦写后,其寿命将耗尽,该块将不能再被使用。随着寿命将近,NAND闪存块存储数据的可靠性逐渐降低。包括NAND闪存的存储设备的控制部件记录其NAND闪存的各块是否可用。
发明内容
现有技术对坏块的识别主要基于事后的策略——基于NAND闪存执行操作失败,而将被操作的块标记为坏块,这导致对一部分寿命已经耗尽的块依然发出读、编程和/或擦除的命令。
NAND闪存需要先被擦除才能向其写入数据。因而,若在擦除NAND闪存块时发生失败,存储设备的控制部件将发生擦除失败的块标记为坏块,而对存储设备的影响较小。若在向NAND闪存块执行编程操作时发生失败,编程操作所要写入的数据可能丢失,存储设备的控制部件需要执行复杂的数据恢复操作(例如,用RAID技术从冗余数据中重建丢失数据),既耗时又增加了复杂度。类似地,若在从NAND闪存块执行读操作时发生失败,也需要执行复杂的数据恢复操作重建要读出的数据,并且使用户体验到更长的延迟,这是不利的。
需要更有效的识别或预测存储介质的块的寿命将尽,以避免向寿命将尽的块写入数据。从而减少因擦除操作、编程操作或读操作失败而对存储设备的影响。也希望对寿命将近的块的识别,不会对存储设备的设计与实现带来较大影响。
根据本申请的第一方面,提供了根据本申请第一方面的第一识别不可靠块的方法,包括如下步骤:根据处理编程命令的时间与编程命令所操作的块的擦写次数,查询寿命预测表获得寿命预测值;若寿命预测值达到或超过寿命阈值,则将编程命令所操作的块识别为坏块,并将坏块的标识记录于坏块表中。
根据本申请的第一方面的第一识别不可靠块的方法,提供了根据本申请第一方面的第二识别不可靠块的方法,其中,处理编程命令的时间为每个编程命令被处理的时间,或者挑选的一个或多个编程命令被处理的时间。
根据本申请的第一方面的第一或第二识别不可靠块的方法,提供了根据本申请第一方面的第三识别不可靠块的方法,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。
根据本申请的第一方面的第三识别不可靠块的方法,提供了根据本申请第一方面的第四识别不可靠块的方法,其中,寿命预测表的数据区记录的寿命是非易失存储介质的块的已被消耗的寿命预测值。
根据本申请的第一方面的第三或第四识别不可靠块的方法,提供了根据本申请第一方面的第五识别不可靠块的方法,其中,将处理编程命令的时间和/或编程命令所操作的块的擦写次数量化为同寿命预测表的行表头/列表头的项对应的值,以便于查询寿命预测表。
根据本申请的第一方面的第一至第五识别不可靠块的方法之一,提供了根据本申请第一方面的第六识别不可靠块的方法,其中,仅当编程命令所操作的块的擦写次数大于擦写阈值,才查询寿命预测表获得寿命预测值。
根据本申请的第一方面的第一至第六识别不可靠块的方法之一,提供了根据本申请第一方面的第七识别不可靠块的方法,其中,响应于识别出坏块,生成填充数据和一个或多个编程命令,用生成的一个或多个编程命令将生成的填充数据写入识别出的所述坏块。
根据本申请的第一方面的第一至第七识别不可靠块的方法之一,提供了根据本申请第一方面的第八识别不可靠块的方法,,其中,响应于识别出坏块,将识别出的坏块上已被写入的数据搬移到其他块。
根据本申请的第一方面的第一至第八识别不可靠块的方法之一,提供了根据本申请第一方面的第九识别不可靠块的方法,其中,响应于要获取承载待写入数据的块,查询坏块表以获得可用块;向获得的可用块发出编程命令以写入数据,并记录处理编程命令的时间和编程命令所操作的块的擦写次数。
根据本申请的第一方面的第一至第九识别不可靠块的方法之一,提供了根据本申请第一方面的第十识别不可靠块的方法,其中,记录存储设备的所有块的每个所经历的擦写循环次数,以对每个块查询寿命预测表获得寿命预测值。
根据本申请的第一方面的第一至第九识别不可靠块的方法之一,提供了根据本申请第一方面的第十一识别不可靠块的方法,其中,记录存储设备中以块组为单位的每一块组所经历的擦写循环次数,以对每个块组查询寿命预测表获得寿命预测值,其中,块组中的各块经历了相同的擦写循环次数。
根据本申请的第一方面的第一至第十一识别不可靠块的方法之一,提供了根据本申请第一方面的第十二识别不可靠块的方法,其中,在实验室或存储设备的使用过程中生成寿命预测表。
根据本申请的第一方面的第十二识别不可靠块的方法,提供了根据本申请第一方面的第十三识别不可靠块的方法,其中,对非易失存储介质的参考块反复实施擦除与编程操作,并记录具有指定擦写循环次数区间的参考块处理编程命令时间的区间,以生成寿命预测表。
根据本申请的第一方面的第十二识别不可靠块的方法,提供了根据本申请第一方面的第十四识别不可靠块的方法,其中,对于具有指定擦写循环次数区间的参考块,以编程时间为横轴,以参考块的实际编程时间出现的次数为纵轴绘制曲线,将所述曲线同横轴围成的面积作为1,将所述曲线上指定点所代表的曲线位置同横轴所围成的区域面积,作为寿命预测值生成寿命预测表。
根据本申请的第一方面的第十三或第十四识别不可靠块的方法,提供了根据本申请第一方面的第十五识别不可靠块的方法,其中,参考块为非易失存储介质中选取的一个或多个块。
根据本申请的第一方面的第一至第十五识别不可靠块的方法之一,提供了根据本申请第一方面的第十六识别不可靠块的方法,其中,响应于编程命令执行失败,根据坏块编程时间表的数据区的值的大小,使寿命预测表的数据区的对应位置的值相应增加,以更新寿命预测表,其中,坏块编程时间表同寿命预测表具有相同的表结构。
根据本申请的第一方面的第十六识别不可靠块的方法,提供了根据本申请第一方面的第十七识别不可靠块的方法,其中,坏块编程时间表的行表头记录了擦写循环次数区间,坏块编程时间表的列表头记录了处理编程命令时间的区间;或者坏块编程时间表同寿命预测表的数据区一一对应。
根据本申请的第一方面的第十六或第十七识别不可靠块的方法,提供了根据本申请第一方面的第十八识别不可靠块的方法,其中,根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的表头确定对应的行/列;依据执行失败的编程命令所访问的块,查询记录了最近的编程命令的执行时间的编程时间表,以获得该块最近的执行成功的编程命令的执行时间;用最近的执行成功的编程命令的执行时间在坏块编程时间表的表头确定对应的列/行;根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录执行失败次数,以更新坏块编程时间表。
根据本申请的第一方面的第十八识别不可靠块的方法,提供了根据本申请第一方面的第十九识别不可靠块的方法,其中,响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更新寿命预测表。
根据本申请的第一方面的第十七至第十九识别不可靠块的方法之一,提供了根据本申请第一方面的第二十识别不可靠块的方法,其中,将寿命预测表的对应A值的位置的值递增A/(A+LN),并记录LN=LN+A,以使用坏块编程时间表更新寿命预测表;其中,A为坏块编程时间表的数据区的某值,LN为用于构建寿命预测表的对应A值的位置所在的列的数据所使用的编程次数。
根据本申请的第一方面的第二十识别不可靠块的方法,提供了根据本申请第一方面的第二十一识别不可靠块的方法,其中,降低寿命预测表的对应A值的位置所在列的在对应A值的位置之上的其他值,和/或增加寿命预测表的对应A值的位置所在列的在对应A值的位置之下的其他值。
根据本申请的第一方面的第二十识别不可靠块的方法,提供了根据本申请第一方面的第二十二识别不可靠块的方法,其中,递减寿命预测表的对应A值的位置所在列的其他值。
根据本申请的第一方面的第二十至第二十二识别不可靠块的方法之一,提供了根据本申请第一方面的第二十三识别不可靠块的方法,其中,将寿命预测表的对应Ai值的位置的值递增并将LAN更新为/>其中,Ai为坏块编程时间表的数据区的A列第i个值,i为正整数;n为坏块编程时间表的数据区的A列的数据个数;LAN为构建寿命预测表的LA列所使用的编程次数,寿命预测表的LA列与坏块编程时间表的A列相对应。
根据本申请的第一方面的第一至第十五识别不可靠块的方法之一,提供了根据本申请第一方面的第二十四识别不可靠块的方法,其中,其中,响应于编程命令被成功执行完成,根据编程命令操作的块与编程命令的执行时间更新编程时间表,以在编程时间表中记录该块的最近编程命令的执行时间。
根据本申请的第一方面的第十八至第二十四识别不可靠块的方法之一,提供了根据本申请第一方面的第二十五识别不可靠块的方法,其中,编程时间表包括多行,每行记录了块及其最近的编程命令的执行时间。
根据本申请的第一方面的第十八至第二十五识别不可靠块的方法之一,提供了根据本申请第一方面的第十八识别不可靠块的方法,其中,块最近编程命令的执行时间是该块最近一次编程命令的执行时间,或最近多次编程命令的执行时间的统计值。
根据本申请的第一方面的第十八至第二十六识别不可靠块的方法之一,提供了根据本申请第一方面的第二十七识别不可靠块的方法,其中,在块被擦除后,到该块的所有物理页被写满数据的过程中,在编程时间表中仅记录一次其编程命令的执行时间。
根据本申请的第一方面的第十八至第二十七识别不可靠块的方法之一,提供了根据本申请第一方面的第二十八识别不可靠块的方法,其中,编程时间表中记录对同一块的多个编程命令的执行时间的范围。
根据本申请的第一方面的第二十八识别不可靠块的方法,提供了根据本申请第一方面的第二十九识别不可靠块的方法,其中,以最大值与最小值代表多个编程命令的执行时间的范围。
根据本申请的第一方面的第十八至第二十九识别不可靠块的方法之一,提供了根据本申请第一方面的第三十识别不可靠块的方法,其中,当块被擦除,或者块被擦除的次数所在的区间相对于寿命预测表所指示的区间发生变化,清空编程时间表中同该块对应的记录,并在编程时间表重新为该块记录编程命令的执行时间或时间范围。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括:控制部件、DRAM和NVM芯片;控制部件根据NVM芯片处理编程命令的时间与编程命令所操作的块的擦写次数,查询存储于DRAM或控制部件内部的存储器中的寿命预测表,以获得寿命预测值;若寿命预测值达到或超过寿命阈值,控制部件则将编程命令所操作的块识别为坏块,并将坏块的标识记录于存储于DRAM中的坏块表中。
根据本申请的第二方面的第一存储设备,提供了根据本申请第二方面的第二存储设备,其中,响应于要获取承载待写入数据的块,控制部件查询坏块表以获得可用的块;控制部件向获得的NVM芯片中的可用块发出编程命令以写入数据,并记录处理编程命令的时间和编程命令所操作的块的擦写次数。
根据本申请的第二方面的第一或第二存储设备,提供了根据本申请第二方面的第三存储设备,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。
根据本申请的第二方面的第一至第三存储设备,提供了根据本申请第二方面的第四存储设备,其中,响应于识别出坏块,控制部件生成填充数据和一个或多个编程命令,用生成的一个或多个编程命令将填充数据写入识别出的尚未被写满数据的所述坏块。
根据本申请的第二方面的第一至第四存储设备之一,提供了根据本申请第二方面的第五存储设备,响应于识别出坏块,控制部件将识别出的坏块上已被写入的数据搬移到NVM芯片的其他块。
根据本申请的第二方面的第一至第五存储设备之一,提供了根据本申请第二方面的第六存储设备,其中,控制部件包括:处理器、存储器和介质接口控制器;处理器耦合至介质接口控制器,以获得NVM芯片处理编程命令的时间和编程命令所操作的块的擦写次数,并且通过查询存储于存储器中的寿命预测表获得寿命预测值;处理器根据寿命预测值和寿命阈值识别坏块,并将坏块的标识记录于存储于DRAM中的坏块表中。
根据本申请的第二方面的第六存储设备,提供了根据本申请第二方面的第七存储设备,其中,响应于介质接口控制器产生中断,处理器获取处理编程命令的时间和编程命令所操作的块的擦写次数。
根据本申请的第二方面的第六存储设备,提供了根据本申请第二方面的第八存储设备,其中,介质接口控制器包括:接收IO命令的入港队列和输出IO命令处理结果的出港队列;处理器从出港队列获取被处理完成的编程命令,以获取处理编程命令的时间和编程命令所操作的块的擦写次数。
根据本申请的第二方面的第六至第八存储设备之一,提供了根据本申请第二方面的第九存储设备,其中,控制部件还包括生成IO命令的闪存管理模块,闪存管理模块识别坏块,并将识别出的坏块填入坏块表。
根据本申请的第二方面的第九存储设备,提供了根据本申请第二方面的第十存储设备,其中,闪存管理模块根据擦除命令的执行结果、块的擦除次数和/或从块中读出数据的错误率识别坏块。
根据本申请的第二方面的第九或第十存储设备,提供了根据本申请第二方面的第十一存储设备,其中,闪存管理模块向处理器提供记录了闪存管理模块识别出的疑似坏块的监视块表,响应于被访问的块位于监视块表,处理器访问寿命预测表获取该块的寿命预测值。
根据本申请的第二方面的第十一存储设备,提供了根据本申请第二方面的第十二存储设备,其中,闪存管理模块将擦除次数高于阈值,和/或读出数据的错误率高于阈值的块作为疑似坏块,并填入监视块表。
根据本申请的第二方面的第九至第十二存储设备之一,提供了根据本申请第二方面的第十三存储设备,其中,闪存管理模块访问DRAM中的坏块表,以获得可用的块写入数据。
根据本申请的第二方面的第六至第十三存储设备之一,提供了根据本申请第二方面的第十四存储设备,其中,处理器具有专用的指令存储器,以独立于控制器的前端处理模块和/或闪存管理模块。
根据本申请的第二方面的第六至第十四存储设备之一,提供了根据本申请第二方面的第十五存储设备,其中,处理器和/或记录寿命预测表的存储器被设置于介质接口控制器内部。
根据本申请的第二方面的第六至第十五存储设备之一,提供了根据本申请第二方面的第十六存储设备,其中,控制部件还包括第一数据搬移模块和第二数据搬移模块;第一数据搬移模块将DRAM中的编程命令待写入的数据搬移到介质接口控制器,以处理编程命令;第二数据搬移模块将介质接口控制器从NVM芯片读出的数据搬移到DRAM,以处理读命令。
根据本申请的第二方面的第十六存储设备,提供了根据本申请第二方面的第十七存储设备,其中,第一数据搬移模块的纠错编码器对搬移的数据进行纠错编码,并将编码后的数据提供给介质接口控制器。
根据本申请的第二方面的第十六存储设备,提供了根据本申请第二方面的第十八存储设备,其中,第二数据搬移模块的纠错解码器对从NVM芯片读出的数据进行纠错解码,并将解码后的数据搬移到DRAM。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1展示了现有技术中的存储设备的框图;
图2展示了现有技术中的存储设备的控制部件的框图;
图3展示了根据本申请实施例的寿命预测表;
图4A展示了根据本申请实施例的存储设备的框图;
图4B展示了根据本申请实施例的坏块识别的流程图;
图5展示了根据本申请又一实施例的存储设备的框图;
图6展示了根据本申请又一实施例的存储设备的框图;
图7A展示了根据本申请又一实施例的编程时间表;
图7B展示了根据本申请又一实施例的坏块编程时间表;
图7C展示了根据本申请实施例的更新寿命预测表的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
NAND闪存的编程操作通常是通过ISPP(Incremental-step-pulse programming,增量步长脉冲编程)算法实现的。在NAND闪存的编程操作中,向被编程的页施加多个编程脉冲(逐渐增加编程的电压),并在每次编程脉冲后验证数据是否被成功写入。如果某一编程脉冲后经验证发现数据已被成功写入NAND闪存,则完成编程过程。
每次施加编程脉冲和验证的时间是相似的,因此,NAND闪存处理编程命令的速度和编程脉冲/验证的次数有关。在NAND闪存的块寿命前期,处理编程命令的速度通常是比较接近的。但是对于寿命将尽的块,其中的部分或全部页的性能变差,需要更多次施加编程脉冲与更多次验证过程,因此处理编程命令的时间也就越大(速度变慢)。因此,NAND闪存处理编程命令的时间可以作为衡量NAND闪存的块的寿命的依据。根据本申请的实施例,旨在利用NAND闪存处理编程命令的时间估计NAND闪存块的寿命是否将尽,减少寿命将尽的块对存储设备的数据读写的影响。
图3展示了根据本申请实施例的寿命预测表。
参看图3,寿命预测表的第1列(称为列表头)的各行记录了处理编程命令的时间区间,例如,小于1ms(毫秒)的时间区间、1~1.5ms的时间区间、1.5~2ms的时间区间……寿命预测表的第1行(称为行表头)的各列,记录了擦写循环次数区间,例如,0-499次、500-999次、1000-1499次……
图3的寿命预测表的数据区,记录了同行表头指示的擦写循环次数区间与列表头指示的编程时间区间对应的寿命。寿命预测表的数据区记录的寿命是NAND闪存的块的已被消耗的寿命预测值,用百分比表示,作为举例,“1%”(由附图标记310指示)代表闪存块的寿命已被消耗1%(还有99%的寿命尚未消耗),“21%”(由附图标记320指示)代表闪存块的寿命已被消耗21%(还有79%的寿命尚未消耗),“100%”(由附图标记340指示)代表闪存块的寿命已被耗尽(不可再被使用)。
依然作为举例,由附图标记310指示的“1%”在行表头对应位置指示擦写循环次数区间为0-499次,而在列表头对应位置指示处理编程命令的时间区间为小于1ms,其代表NAND闪存的擦写循环次数为0-499次的块,若其处理编程命令的时间区间为小于1ms,则该块的预测的寿命为1%;由附图标记320指示的“21%”在行表头对应位置指示擦写循环次数区间为0-499次,而在列表头对应位置指示处理编程命令的时间区间为3~4ms,其代表NAND闪存的擦写循环次数为0-499次的块,若其处理编程命令的时间区间为3~4ms,则该块的预测的寿命为21%;由附图标记340指示的“100%”在行表头对应位置指示擦写循环次数区间为1500-1999次,而在列表头对应位置指示处理编程命令的时间区间为4~5ms,其代表NAND闪存的擦写循环次数为1500-1999次的块,若其处理编程命令的时间区间为4~5ms,则该块的预测的寿命为100%(预测其寿命已耗尽)。
从而,根据本申请的实施例,根据NAND闪存的块的擦写循环次数与处理编程命令的时间,通过查询图3所展示的寿命预测表,得以知晓对该块的寿命预测。进一步地,设置寿命阈值(例如,95%),若查询得到的块的寿命预测值达到或超过了寿命阈值,则将该块标记为坏块,而不再向该块写入数据(不再对该块执行编程操作)。从而减少使用不可靠块过程中出现编程失败或者读失败的几率,进而降低需要执行数据恢复的次数。
可以理解地,寿命预测表的行表头的各列所代表的擦写循环次数的区间和/或列表头的各行所代表的处理编程操作的时间的区间可以取其他值。更小的区间粒度有助于提高预测精度,但增加了寿命预测表的大小与查表开销,更大的区间粒度有助于缩小寿命预测表的大小并降低查表开销,但相应地预测精度可能降低。
为使用寿命预测表,存储设备的控制部件还记录其NAND闪存每个块已经经历的擦写循环次数。例如,控制部件记录存储设备的所有块的每个所经历的擦写循环次数。作为又一个例子,控制部件以块组(包括多个块)为单位实施擦除操作,块组中的各块经历了相同的擦写循环次数,从而控制部件仅为各块组记录其所经历的擦写循环次数。将块或块组所经历的擦写循环次数简称为块或块组的擦写次数。
在实验室或存储设备的使用过程中生成寿命预测表。例如,选取NAND闪存的一个或多个块作为参考块,对参考块反复实施擦除与编程操作,并记录具有指定擦写次数(区间)的参考块的编程时间分布,用于预测具有指定擦写次数(区间)的块,在其编程时间落入指定时间区间时,该块的预测寿命。
例如,对于具有指定擦写次数(区间)的参考块,以编程时间为横轴,以参考块的实际编程时间出现的次数为纵轴绘制曲线,将该曲线同横轴围成的面积作为1,而曲线上的指定点所代表的曲线位置同横轴所围成的区域面积,作为寿命预测值。
虽然以NAND闪存为例描述了根据本申请实施例的坏块预测方法,可以理解地,根据本申请实施例的坏块预测方法也适用于其他非易失存储介质。
图4A展示了根据本申请实施例的存储设备的框图。
存储设备400包括接口430、控制部件450、一个或多个NVM芯片420以及DRAM410。
DRAM 410存储了坏块表412与寿命预测表414。坏块表412记录了NVM芯片420中的所有坏块的标识(例如其地址)。在获取要承载待写入数据的块时,控制部件查询坏块表412,以确保不向坏块写入数据。
控制部件450向NVM芯片发出编程命令以向NVM芯片写入数据,并记录NVM芯片420处理编程命令的时间。根据编程命令所操作的块的擦写次数与其处理编程命令的时间,控制部件450还查询寿命预测表414,以获取该块的寿命预测值。若获取的寿命预测值大于指定的阈值(例如,95%),控制部件450还在坏块表412中记录该块的标识。一些情况下,该块已被写入了数据并且尚未被写满数据(还有未被写入数据的空白页),控制部件450还生成填充数据(例如,用随机数作为填充数据),并将填充数据写入该块,以写满其所有空白页,以提高该块上的有效数据的可靠性。依然可选地,响应于根据寿命预测表414识别出块的寿命将尽,控制部件450尽快地将该块上已存储的有效数据搬移到其他块。
图4B展示了根据本申请实施例的坏块识别的流程图。
存储设备的控制部件获取存储设备NVM芯片处理编程命令的时间(460)。可选地,控制部件获取每个编程命令被处理的时间,或者挑选一个或多个编程命令被处理的时间。例如,对被擦除后的块,获取一次其处理编程命令的时间。依然可选地,用被擦除后的某块处理多个编程命令的平均时间代表该块处理编程命令的时间。
控制部件还获取该编程命令所访问的块的擦写次数。用该块的擦写次数与其处理编程命令的时间查询寿命预测表414(也参看图4A)(470),以得到对该块的寿命预测。可选地,将该块的擦写次数和/或处理编程命令的时间量化为同如图3的寿命预测表的行表头/列表头的项对应的值,以便于查询寿命预测表。
可选地,控制部件并非对所有块预测寿命。例如,返回参看图3的寿命预测表,擦写次数在0-499次的块,即使其处理编程命令的时间较长(例如,大于10ms),预测的寿命也不会超过指定阈值。从而,控制部件对擦写次数小于阈值(例如,500次)的块,不查询寿命预测表,也不尝试预测其寿命。
控制部件比较从寿命预测表中查询出的预测寿命是否超过指定的阈值(例如,95%)(480)。若预测寿命不超过指定阈值,控制部件无须做进一步处理。若预测寿命超过了指定阈值,控制部件将该块识别为寿命将尽的坏块,并在坏块表412(也参看图4A)中记录该块的标识(490)。可选地,对于识别出的坏块,还生成一个或多个编程命令以及填充数据,用编程命令将生成的填充数据写入识别出的坏块(495)。依然可选地或进一步地,对于识别出的坏块,控制部件将其上已被写入的数据尽快搬移到其他块。
图5展示了根据本申请又一实施例的存储设备的框图。
存储设备的控制部件500包括主机接口510、前端处理模块520、闪存管理模块530以及一个或多个介质接口控制器540。介质接口控制器540耦合到NVM芯片105。
介质接口控制器540包括入港队列542与出港队列544。介质接口控制器540通过入港队列542接收IO命令,还通过出港队列544输出IO命令处理结果。
控制部件500还包括处理器550。处理器550耦合介质接口控制器540。控制部件500还包括存储了寿命预测表514的存储器。可选地,处理器550具有专用的指令存储器(未示出),处理器550独立于前端处理模块520和/或闪存管理模块530,以降低对控制部件500的既有部分的影响。
寿命预测表514的尺寸较小,例如,几KB或更小,从而被存储在控制部件500内部的存储器。
控制部件500还耦合到外部存储器(DRAM),外部存储器中存储坏块表512。闪存管理模块530可访问外部存储器中的坏块表512,以避免分配坏块来承载待写入数据。
处理器550监控NVM 105上的一个、多个或所有处理完成的编程命令,以获得NVM105处理编程命令的时间,并进一步通过查询寿命预测表514来获得NVM 105的块的寿命预测。
作为举例,存储设上电后,处理器550处于待机状态。如果有编程命令被处理完成,介质接口控制器540产生中断,处理器550响应中断并获取该编程命令的执行时间,以及也获取该编程命令所操作的块的擦写次数。处理器550查询寿命预测表514,以获得对该编程命令所操作的块的寿命预测,并响应于寿命预测超过了指定阈值,在坏块表512中记录该块,以使得闪存管理模块530将来不会再使用该块。
作为另一个例子,处理器550从出港队列544获取被处理完成的编程命令,进而获取该编程命令的执行时间与该编程命令所操作的块的擦写次数。
可选地,处理器550根据编程命令的执行时间识别坏块,并将识别出的坏块填入坏块表512,而闪存管理模块530也识别坏块,并将识别出的坏块填入坏块表512。例如,闪存管理模块530根据擦除命令的执行结果、块的擦写次数和/或从块中读出数据的错误率等因素识别坏块,并将识别出的坏块也填入坏块表512。
依然可选地,闪存管理模块530还向处理器550提供监视块表。监视块表中记录了闪存管理模块530识别出的“疑似”坏块。例如,闪存管理模块330将擦写次数高于阈值,和/或数据错误率高于阈值的块作为“疑似”坏块,并填入监视块表。处理器550根据监视块表,而获取“疑似”坏块的寿命预测。从而,处理器550无须对所有块获取寿命预测,降低了处理器550的工作负载。
图6展示了根据本申请又一实施例的存储设备的框图。
存储设备的控制部件600包括主机接口610、前端处理模块620、闪存管理模块330以及一个或多个介质接口控制器640。介质接口控制器640耦合到NVM芯片105。
介质接口控制器640包括入港队列642与出港队列644。闪存管理模块630通过入港队列642向介质接口控制器640提交IO命令,并从出港队列644获取介质接口控制器640提供的IO命令的处理结果。
控制部件600还包括耦合介质接口控制器640的处理器650。控制部件600还包括存储了寿命预测表614的存储器。控制部件600还耦合到外部存储器(DRAM),外部存储器中存储坏块表612。
控制部件600还包括数据搬移模块660与数据搬移模块662。为处理编程命令,数据搬移模块660将DRAM中的编程命令待写入数据搬移到介质接口控制器。为处理读命令,数据搬移模块662将介质接口控制器640从NVM 105读出的数据搬移到DRAM。可选地,数据搬移模块660还包括纠错编码器,对搬移的数据进行纠错编码,并将编码后的数据提供给介质接口控制器640。数据搬移模块662还包括纠错解码器,对从NVM 105读出的数据进行纠错解码,并将解码后的数据搬移到DRAM。
处理器650监控NVM 105上的一个、多个或所有处理完成的编程命令,以获得处理编程命令的时间,并进一步通过查询寿命预测表614来获得NVM 105的块的寿命预测。处理器650通过查询寿命预测表614,获得对该编程命令所操作的块的寿命预测,并响应于寿命预测超过了指定阈值,在坏块表612中记录该块,以使得闪存管理模块630将来不会再使用该块。
可选地,处理器650和/或记录寿命预测表614的存储器被设置于介质接口控制器640内部。
图7A展示了根据本申请又一实施例的编程时间表。
根据本申请的实施例,在存储设备工作期间,更新寿命预测表,以使寿命预测表所代表的块的寿命更加准确。
图7A的编程时间表包括多行,每行记录了块及其最近的编程命令的执行时间。编程时间表中,用块号或块的地址代表一个块。
响应于编程命令被成功执行完成,根据编程命令操作的块与编程命令的执行时间,更新编程时间表,以在编程时间表中记录该块的最近编程命令的执行时间。可选地,块的最近编程命令的执行时间是该块最近一次的编程命令的执行时间,或最近多次的编程命令的执行时间的统计值。依然可选地,在块被擦除后,到该块的所有物理页被写满数据的过程中,在编程时间表中仅记录一次其编程命令的执行时间,以降低更新编程时间表的任务负载。
依然可选地,编程时间表中记录对同一块的多个编程命令的执行时间的范围,例如以最大值与最小值代表多个编程命令的执行时间的范围。
进一步地,当块被擦除,或者块被擦除的次数所在的区间相对于寿命预测表所指示的区间发生变化,例如从被擦除1499次变为被擦除1500次,清空编程时间表中同该块对应的记录,并在编程时间表重新为该块记录编程命令的执行时间或时间范围。
图7B展示了根据本申请又一实施例的坏块编程时间表。
参看图7B,坏块编程时间表同寿命预测表具有相同或相近的表结构。行表头的各列指示了擦写次数的多个范围,列表头指示了编程命令执行时间的多个范围。
响应于识别出编程命令的执行失败,更新坏块编程时间表。根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的行表头确定对应的列。依据执行失败的编程命令所访问的块,查询图7A所展示的编程时间表,以获得该块最近的执行成功的编程命令的执行时间,并用该执行时间在图7B的坏块编程时间表的列表头确定对应的行。以及根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录次数(例如,使坏块编程时间表的该位置的值递增)。
例如,识别出编程命令的执行失败,该编程命令的擦写次数为1200,通过编程时间表查询到该块最近被成功编程时,编程命令的执行时间为12ms。根据该块的擦写次数得到坏块编程时间表的行表头中指示擦写次数为1000-1499区间的列。根据该块的最近被成功编程的编程命令执行时间,得到坏块编程时间表的列表头中指示“>10ms”的行,并将坏块编程时间表的对应位置(由附图标记710指示)的值递增。
响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更新寿命预测表。作为举例,坏块编程时间表同寿命预测表的数据区一一对应。根据坏块编程时间表的数据区的值的大小,使寿命预测表的数据区的对应位置的值相应增加。例如,坏块编程时间表的数据区的某值为A,而用于构建寿命预测表的每列数据所使用的编程次数为LN,则将寿命预测表的对应A值的位置的值递增A/(A+LN),以及更新LN的值为LN=LN+A。可选地或进一步地,还递减寿命预测表的对应A值的位置所在列的其他值。依然可选地,降低寿命预测表的对应A值的位置所在列的在对应A值的位置之上(之前)的其他值,和/或增加寿命预测表的对应A值的位置所在列的在对应A值的位置之下(之后)的其他值。
依然可选地,坏块编程时间表的数据区的A列的值依次为A1、A2……Ai、……An,其中i为正整数,则将寿命预测表对应A列的LA列相应更新。例如,为获得寿命预测表的LA列所使用的编程次数为LAN,则将寿命预测表的对应Ai值的位置的值递增以及将LAN更新为/>
在可选的实施方式中,不使用坏块编程时间表,而响应于编程命令的执行失败,获取该编程命令所访问的擦写次数,以及通过图7A的编程时间表获得该块最近成功执行编程命令的执行时间,并且增加寿命预测表中对应于该擦写次数与该执行时间的位置的值。可选地,还增加寿命预测表中对应于该擦写次数与该执行时间的位置所在列之下(之后)的其他值。
图7C展示了根据本申请实施例的更新寿命预测表的流程图。
存储设备的控制部件发出编程命令(710),以向NVM芯片中写入数据,或者从NVM芯片中读出数据。响应于控制部件识别出编程命令被成功执行完成(720),更新编程时间表(730)。
控制部件获取存储设备NVM芯片处理编程命令的时间,根据编程命令操作的块与编程命令执行的时间,更新编程时间表,以在编程时间表中记录该块的最近编程命令的执行时间。
响应于控制部件识别出编程命令的执行失败(720),更新坏块编程时间表(740)。根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的行表头确定对应的列。依据执行失败的编程命令所访问的块最近的执行成功的编程命令的执行时间,在坏块编程时间表的列表头确定对应的行。以及根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录次数(例如,使坏块编程时间表的该位置的值递增)。
响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更新寿命预测表(750)。
本申请的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、专用继承电路(ASIC)等等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现本申请所述的方法。
本申请的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备进行上面所述的方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种识别不可靠块的方法,包括如下步骤:
根据处理编程命令的时间与编程命令所操作的块的擦写次数,查询寿命预测表获得寿命预测值;
若寿命预测值达到或超过寿命阈值,则将编程命令所操作的块识别为坏块,并将坏块的标识记录于坏块表中;以及将识别出的坏块上已被写入的数据搬移到其他块。
2.根据权利要求1所述的识别不可靠块的方法,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。
3.根据权利要求1或2所述的识别不可靠块的方法,其中,响应于要获取承载待写入数据的块,查询坏块表以获得可用块;向获得的可用块发出编程命令以写入数据,并记录处理编程命令的时间和编程命令所操作的块的擦写次数。
4.根据权利要求1-3之一所述的识别不可靠块的方法,其中,对非易失存储介质的参考块反复实施擦除与编程操作,并记录具有指定擦写循环次数区间的参考块处理编程命令时间的区间,以生成寿命预测表。
5.根据权利要求1-4之一所述的识别不可靠块的方法,其中,根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的表头确定对应的行/列;
依据执行失败的编程命令所访问的块,查询记录了最近的编程命令的执行时间的编程时间表,以获得该块最近的执行成功的编程命令的执行时间;
用最近的执行成功的编程命令的执行时间在坏块编程时间表的表头确定对应的列/行;
根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录执行失败次数,以更新坏块编程时间表。
6.根据权利要求5所述的识别不可靠块的方法,其中,响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更新寿命预测表;坏块编程时间表同寿命预测表的数据区一一对应。
7.一种存储设备,包括:控制部件、DRAM和NVM芯片;
控制部件根据NVM芯片处理编程命令的时间与编程命令所操作的块的擦写次数,查询存储于DRAM或控制部件内部的存储器中的寿命预测表,以获得寿命预测值;
若寿命预测值达到或超过寿命阈值,控制部件则将编程命令所操作的块识别为坏块,并将坏块的标识记录于存储于DRAM中的坏块表中;以及将识别出的坏块上已被写入的数据搬移到其他块。
8.根据权利要求7所述的存储设备,其特征在于,其中,控制部件包括:处理器、存储器和介质接口控制器;处理器耦合至介质接口控制器,以获得NVM芯片处理编程命令的时间和编程命令所操作的块的擦写次数,并且通过查询存储于存储器中的寿命预测表获得寿命预测值;处理器根据寿命预测值和寿命阈值识别坏块,并将坏块的标识记录于存储于DRAM中的坏块表中;以及将识别出的坏块上已被写入的数据搬移到其他块。
9.根据权利要求8所述的存储设备,其特征在于,其中,介质接口控制器包括:接收IO命令的入港队列和输出IO命令处理结果的出港队列;处理器从出港队列获取被处理完成的编程命令,以获取处理编程命令的时间和编程命令所操作的块的擦写次数。
10.根据权利要求7-9之一所述的存储设备,其特征在于,其中,控制部件还包括生成IO命令的闪存管理模块,闪存管理模块识别坏块,并将识别出的坏块填入坏块表;
闪存管理模块向处理器提供记录了闪存管理模块识别出的疑似坏块的监视块表,响应于被访问的块位于监视块表,处理器访问寿命预测表获取该块的寿命预测值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644632.0A CN116661694A (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644632.0A CN116661694A (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
CN201910514471.7A CN112083873B (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910514471.7A Division CN112083873B (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116661694A true CN116661694A (zh) | 2023-08-29 |
Family
ID=73733948
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310644632.0A Pending CN116661694A (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
CN201910514471.7A Active CN112083873B (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910514471.7A Active CN112083873B (zh) | 2019-06-14 | 2019-06-14 | 智能识别非易失存储介质不可靠块的方法与装置 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN116661694A (zh) |
WO (1) | WO2020248798A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113707206B (zh) * | 2021-05-17 | 2024-03-22 | 深圳市国微电子有限公司 | Flash存储器的数据保护方法、装置、电子设备及存储介质 |
US11748300B2 (en) * | 2021-11-18 | 2023-09-05 | Vmware, Inc. | Reverse deletion of a chain of snapshots |
CN116700602B (zh) * | 2022-12-08 | 2024-04-12 | 荣耀终端有限公司 | 一种查询扩展内存寿命的方法及设备 |
CN115952113B (zh) * | 2023-03-15 | 2023-06-13 | 力高(山东)新能源技术股份有限公司 | 一种eeprom存储保护的方法 |
CN118173153B (zh) * | 2024-05-16 | 2024-07-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种坏块管理程序验证方法、产品及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510445B (zh) * | 2009-03-19 | 2012-11-21 | 无锡中星微电子有限公司 | 存储器坏块表的保存方法以及装置 |
US8806106B2 (en) * | 2010-11-12 | 2014-08-12 | Seagate Technology Llc | Estimating wear of non-volatile, solid state memory |
CN103559115A (zh) * | 2013-09-29 | 2014-02-05 | 记忆科技(深圳)有限公司 | 基于smart的ssd智能监控系统 |
CN104376875B (zh) * | 2014-11-19 | 2017-09-05 | 华为数字技术(苏州)有限公司 | 存储设备寿命预测、确定方法及装置 |
US10235057B2 (en) * | 2015-09-04 | 2019-03-19 | Western Digital Technologies, Inc. | Operating parameters for flash memory devices |
CN109637576B (zh) * | 2018-12-17 | 2021-06-11 | 华中科技大学 | 一种基于支持向量回归的闪存寿命预测方法 |
-
2019
- 2019-06-14 CN CN202310644632.0A patent/CN116661694A/zh active Pending
- 2019-06-14 CN CN201910514471.7A patent/CN112083873B/zh active Active
-
2020
- 2020-05-22 WO PCT/CN2020/091803 patent/WO2020248798A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2020248798A1 (zh) | 2020-12-17 |
CN112083873B (zh) | 2023-06-20 |
CN112083873A (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112083873B (zh) | 智能识别非易失存储介质不可靠块的方法与装置 | |
CN108628777B (zh) | 动态和自适应中断合并的系统和方法 | |
CN106448737B (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
US10540115B2 (en) | Controller adaptation to memory program suspend-resume | |
US9778878B2 (en) | Method and system for limiting write command execution | |
US8438361B2 (en) | Logical block storage in a storage device | |
US9472244B2 (en) | Apparatus power control | |
KR101447786B1 (ko) | 파워 인터럽트 관리 | |
US11249897B2 (en) | Data storage device and operating method thereof | |
US20200241795A1 (en) | Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device | |
CN109558334B (zh) | 垃圾数据回收方法及固态存储设备 | |
US11698734B2 (en) | Collision reduction through just-in-time resource allocation | |
US9032261B2 (en) | System and method of enhancing data reliability | |
US11693596B2 (en) | Pre-emptive storage strategies to reduce host command collisions | |
US20230195324A1 (en) | Storage device | |
US11698754B2 (en) | Coalescing read commands by location from a host queue | |
CN111445939A (zh) | 存储装置及其操作方法 | |
US11106390B1 (en) | Combining in-process reads to reduce die collisions | |
US9652172B2 (en) | Data storage device performing merging process on groups of memory blocks and operation method thereof | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
KR20200121068A (ko) | 데이터 저장 장치 및 이의 동작 방법, 이를 위한 컨트롤러 | |
KR20200110862A (ko) | 데이터 저장 장치 및 동작 방법, 이를 위한 컨트롤러 | |
US11822817B2 (en) | Ordering reads to limit collisions in a non-volatile memory (NVM) | |
US11263127B2 (en) | Data storage device, method of operating the same, and controller for the same | |
CN112578993B (zh) | 多平面nvm处理编程出错的方法与存储设备 |
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 |