存储设备的可靠性测试方法及其存储设备与流程

文档序号:24049101发布日期:2021-02-23 20:15阅读:284来源:国知局
存储设备的可靠性测试方法及其存储设备与流程

[0001]
本申请涉及存储技术领域,尤其涉及在存储设备中实施可靠性测试(reliability demonstration test,rdt)方法及其存储设备。


背景技术:

[0002]
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serial advanced technology attachment,串行高级技术附件)、scsi(small computer system 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。
[0003]
nand闪存、相变存储器、feram(ferroelectric ram,铁电存储器)、mram(magnetic random access memory,磁阻存储器)、rram(resistive random access memory,阻变存储器)等是常见的nvm。
[0004]
接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。
[0005]
控制部件104用于控制在接口103、nvm芯片105以及dram 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field-programmable gate array,现场可编程门阵列)、asic(application specific integrated circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令。控制部件104还可以耦合到dram 110,并可访问dram 110的数据。在dram可存储ftl表和/或缓存的io命令的数据。
[0006]
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。已知的nvm芯片接口协议包括“toggle”、“onfi”等。
[0007]
存储器目标(target)是nand闪存封装内的共享ce(,chip enable,芯片使能)信号的一个或多个逻辑单元(lun,logic unit)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元包括一个或多个平面(plane)。逻辑单元内
的多个平面可以并行存取,而nand闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
[0008]
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
[0009]
nand闪存读写速度快,写入数据前必须先擦除数据,且擦除是以块(block)为单位进行的。nand闪存的寿命是有限的。一般来说,nand闪存的寿命以擦写循环次数(program and erase cycle,pe cycle)来定义的。常见的3d tlc nand闪存的寿命一般在3000次左右,这意味着nand闪存的块在经历了大约3000次擦写后,其寿命将耗尽,该块将不能再被使用。随着寿命将近,nand闪存块存储数据的可靠性逐渐降低。包括nand闪存的存储设备的控制部件记录其nand闪存的各块是否可用。
[0010]
作为nand闪存的nvm芯片,即使是全新的,也可能包括不可使用的坏块(称为原始坏块)。由于其他原因,诸如存放时间、环境等因素,nand闪存中的坏块会发生变化(例如,逐渐增多)。在固态存储设备的生产过程中,要识别出其上的nvm芯片的所有坏块,并建立标识了固态存储设备的所有nvm芯片的所有坏块的坏块表,并记录在nvm芯片的指定区域。例如,采用集中的方式,将存储设备的所有nvm芯片的所有坏块的坏块表记录到例如存储设备的nor闪存上,或者采用分布的方式,在各个逻辑单元(lun)的第一个块上记录用于该lun的坏块表。可选地还为坏块表记录多个副本,以提高坏块表的可靠性。
[0011]
可靠性测试(rdt)在存储设备的生产过程中被实施,以识别出存储设备的坏块,并在存储设备上记录坏块表。通过的做法,向nand闪存的各块实施擦除、编程再读出的操作。将编程或擦除中出现错误的块标记为坏块,而将读出数据中错误率过大的块也标记为坏块。


技术实现要素:

[0012]
交付给客户的存储设备运行产品固件,使得存储设备的控制部件使用复杂的数据恢复技术来提高其存储的数据的可靠性。例如对写入nvm芯片的数据实施错误校正编码,而对从nvm芯片读出数据实施错误校正译码,以纠正读出数据中存在的数据。还实施例如重读(read-retry)或基于raid的数据重建来以相对于通常的读操作不同的方式从nvm芯片读出数据。重读操作通过调整例如读取数据时的判决电压来适应nvm芯片或环境在使用过程中的变化。而在可靠性测试中运行的可靠性测试固件使用相对简单的数据恢复技术。这导致可靠性测试过程中,控制部件的数据恢复能力明显弱于交付给客户的存储设备。进而,在可靠性测试中,由于数据恢复能力相对较若,从而倾向于将更多的块识别为坏块(因为无法对从这些块读出的数据成功实施错误校正),而如果使用产品固件,那么从这些坏块中的至少部分(将其称为弱块)读出的数据有机会被成功实施错误校正。希望至少部分利用弱块,以使用相同的nvm芯片为存储设备提供更多的存储空间,从而降低存储设备的制造成本,同时对弱块的选取应当是谨慎的,以保证存储设备的可靠性。对弱块的选取过程还需要是简单的,以使其能在可靠性测试过程中完成。
[0013]
根据本申请的第一方面,提供了根据本申请第一方面的第一存储设备的可靠性测试方法,包括:使用第一读命令从存储设备的物理块读取第一数据;响应于第一数据的错误
比特数大于第一阈值,使用第二读命令从存储设备的所述物理块读取第二数据;若第二数据的错误比特数大于第二阈值,将所述物理块识别为坏块;其中所述第二读命令是具有指定参数的读重做命令。
[0014]
根据本申请第一方面的第一存储设备的可靠性测试方法,提供了根据本申请第一方面的第二存储设备的可靠性测试方法,还包括:若第一数据的错误比特数不大于第一阈值,或者若第二数据的错误比特数不大于第二阈值,将所述物理块识别为好快。
[0015]
根据本申请第一方面的第一或第二存储设备的可靠性测试方法,提供了根据本申请第一方面的第三存储设备的可靠性测试方法,其中第一阈值和/或第二阈值小于存储设备的错误校正单元能校正的数据的错误比特数。
[0016]
根据本申请第一方面的第三存储设备的可靠性测试方法,提供了根据本申请第一方面的第四存储设备的可靠性测试方法,其中第一阈值和/或第二阈值小于存储设备的错误校正单元通过硬比特译码所能校正的数据的错误比特数。
[0017]
根据本申请第一方面的第一至第四存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第五存储设备的可靠性测试方法,其中响应于第一数据的错误比特数大于第一阈值,使用多个第二读命令从存储设备的所述物理块读取多个第二数据;若任何第二数据的错误比特数不大于第二阈值,将所述物理块识别为通过好块。
[0018]
根据本申请第一方面的第一至第五存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第六存储设备的可靠性测试方法,其中所述读重做命令,是所述存储设备在产品固件的控制下,发生读出数据错误校正失败时,将首先使用的一种或多种读重做命令。
[0019]
根据本申请第一方面的第一至第六存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第七存储设备的可靠性测试方法,还包括:响应于所述存储设备未通过第一可靠性测试,执行所述使用第一读命令从存储设备的物理块读取第一数据的步骤及其后续步骤。
[0020]
根据本申请第一方面的第七存储设备的可靠性测试方法,提供了根据本申请第一方面的第八存储设备的可靠性测试方法,其中所述第一可靠性测试包括:使用第一读命令从存储设备的多个或所有物理块的多个物理页读取第三数据;响应于第三数据的错误比特数大于第三阈值,将从中读取第三数据的物理块识别为坏块;将存储设备的被识别为坏块的物理块数量作为所述存储设备是否通过第一可靠性测试的依据。
[0021]
根据本申请第一方面的第七或第八存储设备的可靠性测试方法,提供了根据本申请第一方面的第九存储设备的可靠性测试方法,其中第三阈值大于或等于第一阈值,并且小于存储设备的错误校正单元能校正的数据的错误比特数。
[0022]
根据本申请第一方面的第七至第九存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第十存储设备的可靠性测试方法,其中响应于所述存储设备未通过第一可靠性测试,执行对所述存储设备的第二可靠性测试;所述第二可靠性测试包括:使用第一读命令从存储设备的多个或所有物理块的多个物理页读取第三数据;响应于从相同的物理页读取的第三数据的错误比特数大于第三阈值的次数超出阈值,将所述相同的物理页所在的物理块识别为坏块;将存储设备的被识别为坏块的物理块数量作为所述存储设备是否通过第一可靠性测试的依据。
[0023]
根据本申请第一方面的第十存储设备的可靠性测试方法,提供了根据本申请第一方面的第十一存储设备的可靠性测试方法,其中响应于所述存储设备未通过第二可靠性测试,执行所述使用第一读命令从存储设备的物理块读取第一数据的步骤及其后续步骤。
[0024]
根据本申请第一方面的第一至第十一存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第十二存储设备的可靠性测试方法,还包括:响应于存储设备上电,加载并运行可靠性测试固件;从存储设备的lun的指定物理块的指定物理页获取可靠性测试信息;根据可靠性测试信息获取所述lun的所有待测试物理块,以及可靠性测试要进行的轮数;以及执行所述使用第一读命令从存储设备的物理块读取第一数据的步骤及其后续步骤。
[0025]
根据本申请第一方面的第十二存储设备的可靠性测试方法,提供了根据本申请第一方面的第十三存储设备的可靠性测试方法,其中可靠性测试信息包括rdt元数据与rdt扫描日志,rdt元数据存储在指定物理块的地址为0的物理页,而rdt扫描日志存储在指定物理块的地址为0的物理页之后的一个或多个连续的物理页;存储rdt扫描日志的每个物理页存储了可靠性测试的每轮产生的rdt日志;rdt元数据存储所述lun的所有待测试物理块与可靠性测试需要进行的轮数,以及通过rdt扫描日志的数量识别出可靠性测试已经进行的轮数以及无须被施加可靠性测试的物理块。
[0026]
根据本申请第一方面的第十三存储设备的可靠性测试方法,提供了根据本申请第一方面的第十四存储设备的可靠性测试方法,还包括:向存储设备的物理块施加擦除命令与编程命令;响应于擦除命令和/或编程命令执行失败,在忽略表中记录失败的编程命令或擦除命令所针对的物理块;响应于第一数据的错误比特数大于第一阈值在忽略表中记录从中读出第一数据的物理块,或者响应于第二数据的错误比特数大于第二阈值在忽略表中记录从中读出第二数据的物理块;响应于完成了可靠性测试的一轮,根据忽略表生成rdt扫描日志,将rdt扫描日志写入指定物理块的从地址1开始的空白物理页。
[0027]
根据本申请第一方面的第十二至第十四存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第十五存储设备的可靠性测试方法,还包括:根据rdt元数据获取lun的所有待测试物理块,以及根据rdt扫描日志获取可靠性测试的每轮产生的忽略表,从lun的所有待测试物理块中去除忽略表中记录的物理块,得到可靠性测试的当前轮待测试的物理块。
[0028]
根据本申请第一方面的第十五存储设备的可靠性测试方法,提供了根据本申请第一方面的第十六存储设备的可靠性测试方法,其中根据rdt元数据获取lun的所有待测试物理块,以及若待测试物理块存在于忽略表中,则当前轮无须对该物理块施加可靠性测试。
[0029]
根据本申请第一方面的第十二至第十六存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第十七存储设备的可靠性测试方法,其中可靠性测试信息还指示了实施可靠性测试的策略。
[0030]
根据本申请第一方面的第一至第十七存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第十八存储设备的可靠性测试方法,还包括:若rdt元数据存储的可靠性测试需要进行的轮数同通过rdt扫描日志的数量识别出可靠性测试已经进行的轮数相同,则擦除存储了可靠性测试信息的物理块;以及根据忽略表生成坏块表,并将坏块表写入该被擦除的物理块。
[0031]
根据本申请第一方面的第一至第十七存储设备的可靠性测试方法之一,提供了根据本申请第一方面的第十九存储设备的可靠性测试方法,还包括:响应于完成了可靠性测试的所有轮,擦除存储了可靠性测试信息的物理块;以及根据忽略表生成坏块表,并将坏块表写入该被擦除的物理块。
[0032]
根据本申请的第二方面,提供了一种存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据本申请第一方面的第一至第十九存储设备的可靠性测试方法之一。
[0033]
本申请的第三方面提供一种计算机程序,当被载入存储设备并在存储设备的控制部件上执行时,计算机程序包括的计算机程序代码使控制部件执行根据本申请第一方面的第一至第十九存储设备的可靠性测试方法之一。
附图说明
[0034]
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0035]
图1为现有技术的存储设备的框图;
[0036]
图2a-2b展示了根据本申请实施例的存储设备实施可靠性测试的示意图;
[0037]
图3展示了根据本实施例实施rdt测试的流程图。
[0038]
图4a-4c展示了根据本申请实施例的rdt测试中采用的多种策略。
具体实施方式
[0039]
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0040]
图2a-2b展示了根据本申请实施例的存储设备实施可靠性测试的示意图。
[0041]
在生产线上,存储设备的电子系统被组装,诸如控制部件、nvm芯片、dram等关键部件被安置的电路版上。向控制部件提供可靠性测试固件(简称rdt固件)(参看图2a,可靠性测试固件210)。控制部件运行rdt固件来实施可靠性测试。
[0042]
可靠性测试过程中,识别被组装到固态硬盘的各个nvm芯片的质量或可靠性,筛选出不合格产品,还生成坏块表,作为可靠性测试的结果的至少部分,坏块表被写入nvm芯片的指定位置。在可靠性测试完成后,通过测试的存储设备被提供产品固件。控制部件运行产品固件来提供存储设备的功能。产品固件从nvm芯片的指定位置获取rdt固件写入的坏块表,并避免将数据存储在坏块表标识的坏块。产品固件还更新坏块表。控制部件按照各逻辑单元(lun)使用nvm芯片。图2a中展示了lun0、lun1、lun2与lun3。rdt固件通过向nvm芯片写入数据并读出所写入的数据来实施rdt测试。rdt固件使用控制部件的ldpc(low density parity code,低密度奇偶校验码)单元(包括ldpc译码器与ldpc编码器)来编码向nvm芯片写入的数据,并译码从nvm芯片读出的数据,ldpc单元还提供从nvm芯片读出数据的错误比特数来指示可靠性。
[0043]
可靠性测试期间,rdt固件维护rdt信息,rdt信息被记录在各lun的指定位置(例如,参看图2a,各lun的物理块0)。rdt信息包括rdt元数和/或一个或多个rdt扫描日志。rdt元数据与rdt日志各自占据一个或多个物理页的大小,从而每次更新rdt扫描日志时,将rdt扫描日志写入新的物理页。rdt元数据位于指定的位置,例如,参看图2a,各lun的物理块0的物理页p0,从而访问该指定位置(物理页p0),能读取到rdt元数据,或者基于在物理页p0,rdt元数据不存在而识别出尚未进行rdt测试。rdt扫描日志被依次写入lun的指定位置(例如,各lun的物理块0的第1页到第m页,m为正整数,图2a中,lun 0的物理块0的物理页p1与p2被写入了rdt扫描日志,lun 1的物理块0的物理页p1被写入了rdt扫描日志,而lun 2的物理块n的物理块0的物理页p1被写入了rdt扫描日志(其物理块0是坏块)),从而访问该指定位置,依据读出的rdt扫描日志的数量而识别出rdt测试进展的阶段。例如,rdt测试要进行100个周期,而物理块0中存在50个rdt扫描日志,则识别出有rdt测试的50个周期已完成,还有50个周期待实施。
[0044]
参看图2b,rdt测试完成后,rdt固件删除已被写入的rdt信息,并将rdt测试中生成的各lun的坏块表写入各lun的指定位置。参看图2b,在lun0、lun1与lun3的物理块0的物理页p0写入该lun的坏块表,而lun2由于其物理块0是坏块,在其物理块n写入了坏块表。rdt测试完成后,还将产品固件写入存储设备。产品固件被写入存储设备的nvm芯片的指定部件。存储设备被使用时,产品固件被加载到控制部件的存储器,控制部件执行产品固件来提供存储设备的功能。
[0045]
图3展示了根据本实施例实施rdt测试的流程图。
[0046]
在存储设备的生产线上,向生产出的存储设备提供rdt固件,并实施rdt测试。
[0047]
使存储设备上电(310),运行rdt固件。在rdt固件的控制下,等待一段时间(例如1分钟)以确保存储设备的各部件完成初始化。随后扫描耦合到控制部件的各nvm芯片的各lun的例如物理块0以获取rdt元数据(315)。可选地,若物理块0是坏块,访问指定的替代存储块,例如,各lun的编号最大的物理块。
[0048]
若从各lun的物理块0的地址为0的物理页(记为p0)获取了rdt元数据,则还读取物理块0后续的物理页,以获取其记录的所有rdt扫描日志(320)。rdt扫描日志按物理页地址递增的顺序被写入物理块0,从而若读到空白页(处于擦除状态的物理页),则指示已读取了所有的rdt扫描日志。
[0049]
可选地,rdt测试过程可能被打断,而已实施的rdt测试过程所写入各lun的rdt扫描日志可能是0个、1个或多个。若从物理块0读到了rdt元数据,而其页地址为1的物理页为空白页(尚未被写入数据),则意味着对该物理块0所在的lun的rdt测试开始后,第一个测试周期尚未被完成时测试即被打断。
[0050]
依然可选地,物理块0的物理页0也可能是空白页。这意味着对该物理块所在的lun的rdt测试尚未开始。
[0051]
继续参看图3,若从某lun的物理块0读出的rdt元数据占用的最后的物理页是地址为0的物理页(325),意味着对该lun的rdt测试的第一个测试周期尚未完成,则扫描该lun的各个物理块,获取该lun的初始坏块表,用初始坏块表创建忽略表(330),忽略表中记录了在rdt测试中要被略过的物理块。在rdt测试过程中,不再访问忽略表中有记录的物理块。还根据rdt元数据获取rdt测试参数(335)。rdt测试参数记录了例如rdt测试要进行的周期数量,
rdt测试所使用的策略,rdt测试中的坏块筛选标准、rdt测试要访问的物理块等。根据rdt参数的指示,开始rdt测试过程(370)。
[0052]
可选地,若lun中没有记录rdt元数据,则创建元数据参数并写入物理块0的地址为0的物理页。
[0053]
返回步骤325,若从某lun的物理块0读出的rdt元数据占用的最后的物理页不是地址为0的物理页(325),意味着对该lun的rdt测试的至少一个测试周期已经完成。获取用于该lun的rdt元数据中的最后一份rdt扫描日志(340)。通常,最后一份rdt扫描日志位于该lun的物理块0的最后一个已被写入数据的物理页中。
[0054]
根据获取的最后一份rdt扫描日志,识别对该lun的rdt测试是否已完成(345)。例如,rdt元数据中记录了rdt测试要实施100个周期,而获取的最后一份rdt扫描日志是该物理块0中记录的第100分rdt扫描日志,以意味着该100周期的rdt测试已完成。类似地,若rdt元数据记录要实施50周期rdt测试,而获取的最后一份rdt扫描日志是第10份rdt扫描日志,则意味着该50周期的rdt测试尚未完成(仅实施了10个周期)。
[0055]
若从最后一份rdt扫描日志识别出对该lun的rdt测试尚未完成(345),则使用rdt扫描日志中记录的rdt测试过程中识别出的坏块与该lun的初始坏块表,创建新的忽略表(330)。
[0056]
可选地,每份rdt扫描日志记录了对该lun的rdt测试的每轮中累积识别出的所有坏块,从而用初始坏块表叠加最后一份rdt扫描日志记录的坏块,得到该lun的所有坏块,用以生成忽略表。依然可选地,若每份rdt扫描日志记录了对该lun的rdt测试的对应轮中识别出的坏块,则通过累积该lun的所有rdt扫描日志以得到对该lun的rdt测试中识别出的所有坏块,再叠加初始坏块表,得到该lun的所有坏块。依然可选地,每份rdt扫描日志记录了对该lun的rdt测试的每轮中累积识别出的所有坏块以及初始坏块表中记录的坏块,从而仅用最后一份rdt扫描日志记录的坏块即得到该lun的所有坏块。
[0057]
返回步骤345,若根据获取的最后一份rdt扫描日志,识别对该lun的rdt测试已完成,则识别出rdt测试后识别的该lun的所有坏块(包括初始坏块),以识别该lun的可用的块的信息(360)。例如该lun的1%的物理块是坏块,而99%的物理块是可用块。根据lun的可用的块的信息,判断该lun是否通过了rdt测试(365)。例如,可用块大于95%的lun通过rdt测试。以及依然作为举例,存储设备的所有lun中未通过rdt测试的lun不能超过1个,否则视为存储设备未通过rdt测试。
[0058]
若存储设备通过了rdt测试(365),还记录和/或展示rdt测试的结果(398),以及rdt测试过程结束。
[0059]
根据本申请的实施例,若在步骤365,识别出存储设备未通过rdt测试,还调整所使用的rdt测试参数(368),例如调整rdt测试所使用的策略,和/或rdt测试中的坏块筛选标准等,并重新开始rdt测试。为了重新开始rdt测试,可选地,还删除lun中已经记录的rdt元数据与rdt扫描日志(擦除物理块0),并向lun的例如物理块0的地址为0的物理页写入新的rdt元数据,新写入的rdt元数据记录了步骤368调整后的rdt测试参数。
[0060]
由于存储设备的产品固件使用更强的错误校正/数据保护算法,其校正错误的能力优于rdt固件,因而在rdt测试中出现的一些不可纠正的错误,在产品固件中可被纠正。从而导致rdt测试过程中不当地淘汰了一些有可能连同产品固件正常使用的存储设备。因此,
在步骤368,通过调整rdt测试参数,例如调整后续的rdt测试中使用的重读(read retry)参数,调整用于筛选坏块的错误比特数阈值,使得rdt测试所使用的筛选标准更接近产品固件的纠错能力。
[0061]
并且,在通常的rdt测试中采用未经调整的rdt测试参数是有利的,因为大多数存储设备能通过采用未经调整的rdt参数所实施的rdt测试。使用未经调整的rdt参数所指示的rdt测试更简单也更高效。仅对未通过采用未经调整的rdt测试参数的rdt测试的部分存储设备,通过调整rdt测试参数,并重新实施rdt测试。这些需要二次甚至多次rdt测试的存储设备是相对少数的,从而不会对整体rdt测试的时间、复杂度带来明显增加。
[0062]
进一步地,rdt参数的调整空间是有限的。例如,提供3-5种作为替代的rdt参数,并且重新实施的rdt测试不超过3-5次。如果穷尽了可替代的rdt参数,被测试的存储设备依然无法通过rdt测试(步骤365),则将此类存储设备识别为不合格,并从生产线上剔除,或者通过返工等工序更换未通过rdt测试的一个或多个组件。
[0063]
回到步骤370,rdt固件开始操作控制部件实施rdt测试。
[0064]
根据从获取的rdt信息得到的忽略表,得到正在进行rdt测试的lun在当前轮测试中要被访问的物理块与不应被访问的物理块。lun的所有物理块是已知的,而忽略表记录了不应被访问的物理块,从而lun的所有物理块中除外忽略表中记录的物理块,余下的物理块是在当前轮的rdt测试中要被访问的物理块。可选地,除外存储了rdt信息的物理块,即使这样的物理块并非坏块。
[0065]
向在当前轮的rdt测试中要被访问的物理块施加测试激励,例如擦除这些物理块,并向其写入指定的数据。写入的数据还包括经ldpc单元编码产生的校验数据。rdt测试参数指示了例如作为测试激励的要写入的数据。还从在当前轮的rdt测试中被写入指定数据的(且未被记录在忽略表中的)物理块的各物理页读出数据(375)。操作ldpc单元对读出的数据解码,ldpc单元输出解码后的数据,关于解码是否成功的指示,以及读出数据中的错误比特数。
[0066]
擦除物理块若失败,或者向物理块写入指定数据失败,则对应的物理块被识别为坏块。以及更新忽略表,在忽略表中记录被识别出的坏块(380)。rdt测试参数指示了识别坏块的条件,例如,一旦物理块发生擦除失败,将该物理块识别为坏块,而一旦向物理块写入数据失败,则将该物理块识别为坏块。可选地,在物理块的多个物理页发生写入数据失败时,才将该物理块识别为坏块。
[0067]
rdt测试参数指示了用于筛选坏块的错误比特数阈值,用于识别坏块的读出数据的错误比特数超出阈值的次数,和/或重读(read retry)参数。例如,在指定读操作下,当对同一物理块的各物理页,发生了超过3次的读出数据的错误比特数大于阈值,将该物理块识别为坏块。以及更新忽略表,在忽略表中记录被识别出的坏块(380)。
[0068]
对于各lun,在rdt测试的一轮中,对所有未被除外的物理块施加测试激励并从中获取响应。可选地,在rdt测试的一轮中对所有未被除外的物理块施加测试激励(写入数据)(375)后,还更新忽略表,以将一些非坏块记录在忽略表中,以在接下来的数据读取操作中除外这些非坏块;和/或,在步骤375之后更新忽略表,以将忽略表中的一些记录删除,以在接下来的数据读取操作中从这些非坏块读取数据。从而使得rdt测试中向物理块写入数据到从物理块读出数据的时间间隔被加大,以更有效测试物理块的数据保持能力。可选地,
rdt测试参数指示了例如从数据被写入物理块到被读出所需的时间间隔。可选地,rdt测试参数还指示了在各轮测试中,哪些非坏块被加入忽略表,而哪些非坏块被从忽略表排除。
[0069]
rdt测试的一轮完成后,还识别rdt测试是否完成(385)。rdt测试参数指示了rdt测试所需的轮数。根据已实施的rdt测试的轮数与rdt测试参数中指示的轮数识别rdt测试是否完成。
[0070]
若rdt测试未完成(未完成指定的轮数)(385),返回步骤370开始rdt测试的下一轮。若rdt测试已完成(完成了指定的论述)(385),根据rdt测试结果创建坏块表(390)。坏块表记录了各lun的初始以及在rdt测试中识别出的坏块。将创建的坏块表写入nvm(395)。可选地,擦除存储了rdt信息的物理块(例如,物理块0),以及在该物理块的指定位置(例如,物理页0)写入坏块表,该坏块表是产品固件可访问的。
[0071]
根据坏块表获得lun的可用的块的信息,判断该lun是否通过了rdt测试(365)。若存储设备通过了rdt测试(365),还记录和/或展示rdt测试的结果(398),以及rdt测试过程结束。若在步骤365,识别出存储设备未通过rdt测试,还调整所使用的rdt测试参数(368),并重新开始rdt测试。可选地,在步骤365,若存储设备具有太多的坏块(坏块数量大于指定阈值),则不再尝试使用其他的rdt测试参数实施rdt测试,而是将该存储设备筛选为不合格。
[0072]
图4a-4c展示了根据本申请实施例的rdt测试中采用的多种策略。这些策略被用于例如图3展示的步骤380。
[0073]
rdt测试采用的多种策略适合不同的产品类型。例如一些产品类型具有更好的性能,而一些产品为了获得更好的性价比而在性能上做出让步。
[0074]
在rdt测试中,通过设置rdt测试参数而指定所采用的策略。可选地,在rdt测试中,响应于使用一种测试策略的测试失败,而通过调整rdt测试参数而继续采用另一种测试策略,直到找到使得测试通过的策略。
[0075]
策略a适用于筛选具有更好性能的产品。参看图4a,也参看图3,在向lun的物理块施加了擦除与编程操作后,还从物理块读出数据。记录在擦除与编程操作中失败的物理块(414),这些物理块将被标记为坏块,并添加到忽略表。还记录从中读出数据的错误比特数超出阈值的物理块(410)。可选地,在策略a中,从物理块的多个物理页中的任何页读出数据的错误比特数超出阈值一次,即将该物理块识别为坏块。
[0076]
将步骤412与414中记录的信息作为rdt扫描日志,并写入lun的例如物理块0(418)。将步骤414中记录的物理块作为坏块更新忽略表(422)。
[0077]
在策略a中,测试参数还指示忽略轮(通过例如轮编号)。rdt测试包括多轮,其中一些轮是忽略轮。在步骤426,若当前轮是忽略轮,则不再根据步骤410记录的物理块更新忽略表,也不将步骤410识别出的块作为坏块。在步骤426,若当前轮不是忽略轮,则将步骤410记录的超出阈值的物理块添加到忽略表(430),从而在rdt测试的后续轮中不再访问这些物理块。
[0078]
以及有关策略a的处理结束。
[0079]
策略b适用于筛选性能与性价比折衷的产品。参看图4b,也参看图3,在向lun的物理块施加了擦除与编程操作后,还从物理块读出数据。记录在擦除与编程操作中失败的物理块(445),这些物理块将被标记为坏块,并添加到忽略表。还记录从中读出数据的错误比
特数超出阈值的物理块(440)。在策略b中,若从物理块的多个物理页中读出数据的错误比特数超出阈值仅一次,尚不将该物理块识别为坏块,也不添加到忽略表。从而为实施策略b,还记录从物理块中读出数据的错误比特数超出阈值的次数,以及具有次数阈值,当从物理块中读出数据的错误比特数超出阈值的次数超出次数阈值后,才将该物理块识别为坏块。
[0080]
将步骤440与445中记录的信息作为rdt扫描日志,并写入lun的例如物理块0(450)。将步骤445中记录的物理块作为坏块更新忽略表(454)。
[0081]
在策略b中,测试参数还指示忽略轮。在步骤458,若当前轮是忽略轮,则不再根据步骤440记录的物理块更新忽略表,也不将步骤450识别出的块作为坏块,以及有关策略b的处理结束。在步骤458,若当前轮不是忽略轮,则根据步骤440记录的超出阈值的物理块,更新该物理块对应的次数(460),该次数指示从该物理块中读出数据的错误比特数超出阈值的次数。以及根据从该物理块中读出数据的错误比特数超出阈值的次数是否超出次数阈值来更新忽略表(465)。若从该物理块中读出数据的错误比特数超出阈值的次数不超出次数阈值,则不更新忽略表,也不将该物理块识别为坏块。若从该物理块中读出数据的错误比特数超出阈值的次数超出次数阈值,则更新忽略表,以将该物理块识别为坏块。可选地,将物理块以及从该物理块中读出数据的错误比特数超出阈值的次数也写入rdt扫描日志。从而在下次上电继续进行rdt测试时,也得以知晓从该物理块中读出数据的错误比特数超出阈值的次数。
[0082]
以及有关策略b的处理结束。
[0083]
策略c适用于筛选侧重性价比的产品。参看图4c,也参看图3,在向lun的物理块施加了擦除与编程操作后,还从物理块读出数据。记录在擦除与编程操作中失败的物理块(470),这些物理块将被标记为坏块,并添加到忽略表。
[0084]
对于从中读出数据的错误比特数超出阈值的物理块(472)。在策略c中,对这些物理块,或者从中读出数据的错误比特数超出阈值的物理页,施加读重做(476)。所施加的读重做是例如产品固件将在读数据失败时优选的一种或多种读重做。可选地,步骤476所施加的读重做数量少于产品固件中将实施的读重做数量,也少于所访问的物理页所支持的读重做种类的数量。所施加的读重做也可以是同步骤375(也参看图3)所实施的相同类型的读操作。
[0085]
若响应于步骤476所实施的读重做,从物理块读出的数据的错误比特数依然超出阈值(478),记录该物理块(482)。若响应于步骤476所实施的读重做,从物理块读出的数据的错误比特数依然未超出阈值,可选地还同该物理块相关联地记录所实施的读重做类型(480),从而有机会指示产品固件在读取该物理块是直接使用所记录的读重做类型,而不使用普通的读操作。
[0086]
将步骤470与482中记录的信息作为rdt扫描日志,并写入lun的例如物理块0(484)。可选地,还将步骤480记录的同该物理块相关联的所实施的读重做类型写入rdt扫描日志。将步骤470中记录的物理块作为坏块更新忽略表(486)。
[0087]
在策略c中,测试参数还指示忽略轮。在步骤488,若当前轮是忽略轮,则不再根据步骤482记录的物理块更新忽略表,以及有关策略b的处理结束。在步骤488,若当前轮不是忽略轮,则将步骤482记录的超出阈值的物理块添加到忽略表(490),从而在rdt测试的后续轮中不再访问这些物理块。以及有关策略c的处理结束。
[0088]
可选地,在步骤488,若当前轮不是忽略轮,则根据步骤482记录的超出阈值的物理块,更新该物理块对应的次数,该次数指示使用读重做操作从该物理块中读出数据的错误比特数超出阈值的次数。可选地,该次数指示步骤482被执行的次数。以及根据使用读重做操作从该物理块中读出数据的错误比特数超出阈值的次数是否超出次数阈值来更新忽略表。若使用读重做操作从该物理块中读出数据的错误比特数超出阈值的次数不超出次数阈值,则不更新忽略表,也不将该物理块识别为坏块。若使用读重做操作从该物理块中读出数据的错误比特数超出阈值的次数超出次数阈值,则更新忽略表,以将该物理块识别为坏块。可选地,将物理块以及从该物理块中使用读重做操作读出数据的错误比特数超出阈值的次数也写入rdt扫描日志。
[0089]
可选地,rdt测试参数不指示忽略轮。从而在rdt测试的每一轮,都识别从物理块读出数据的错误比特数是否超出阈值(图4a的步骤430、图4b的步骤460与465以及图4c的步骤490不会被跳过)。
[0090]
根据本申请的实施例,根据向物理块实施擦除、编程或读出操作的结果而识别坏块。其中,根据从物理块读出数据的错误比特数超出阈值来识别坏块。作为举例,若ldpc单元能纠正读出数据中的n(n为正整数)比特错误,则在rdt测试中选取的阈值小于n,从而使得通过rdt测试的存储设备所包括的物理块具有足够的品质,使得ldpc单元大概率能纠正从物理块读出的数据。可选地,在rdt测试中,不使用ldpc单元,而比较从物理块读出的数据与已知的向物理块写入的数据,并获得读出数据的错误比特数。
[0091]
产品固件使用的包括读重做在内的错误校正技术,实质上提升了控制部件对读出数据的错误校正能力。因而在rdt测试中,使用少量读重做来替代从物理块的读出操作,或者在用读出操作读出的数据的错误比特数高于用于筛选坏块的阈值的情况下,使用少量的读重做来替代读出操作,有机会使得一些在读出操作的筛选条件下将被识别为坏块的物理块,得以被保留(识别为非坏块)。这些被保留的块,在被产品固件控制的控制部件访问时,即使出现不可纠正错误,也大概率能在产品固件所使用少量读重做情况下得到正确数据,从而不影响存储设备的存储功能,并且对读数据的性能(延迟)影响也较小。可以理解地,在rdt测试中使用较多的读重做是不可取的。较多的读重做,虽然更大概率获得正确的读出数据,但既较多影响读操作的性能,也使得一些质量不足的物理块被通过筛选而要在产品固件中被使用,并降低存储设备的品质。优选地,在rdt测试中所使用的读重做次数不超过3次,或者不超过实施ldpc软译码所需的重读次数。通过在rdt测试中使用读重做,使得存储设备上更多的物理块在rdt测试中被保留,从而为获得存储设备所需要提供的总的物理块数量得以降低,存储设备的成本得以降低。一些情况下,nvm芯片的可靠性存在波动时,其中具有较高错误比特数但不影响存储功能的物理块得以在存储设备中使用,从而提升了存储设备所使用的nvm芯片的适应性,更多的nvm芯片(即使其可靠性存在波动)得以在存储设备中使用。
[0092]
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1