CN114860500A - Nvm的故障注入方法及其存储设备 - Google Patents
Nvm的故障注入方法及其存储设备 Download PDFInfo
- Publication number
- CN114860500A CN114860500A CN202110149640.9A CN202110149640A CN114860500A CN 114860500 A CN114860500 A CN 114860500A CN 202110149640 A CN202110149640 A CN 202110149640A CN 114860500 A CN114860500 A CN 114860500A
- Authority
- CN
- China
- Prior art keywords
- fault
- command
- media interface
- address
- fault injection
- 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
Images
Classifications
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了NVM的故障注入方法及其存储设备。所提供的非易失存储器的故障注入方法,包括:获取访问非易失存储器的第一介质接口命令的处理结果;若所述处理结果指示第一介质接口命令执行成功,且所述第一介质接口命令同一个或多个触发故障注入的条件匹配,则修改所述处理结果,使所述处理结果指示所述第一介质接口命令的执行出现错误;执行同所述第一介质接口命令的执行出现的错误相对应的故障处理过程。
Description
技术领域
本申请涉及存储技术,尤其涉及对为模拟存储设备的NVM出现故障的注入故障方法及其存储设备。
背景技术
图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(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe(NVMExpress)、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”等。
以NAND闪存为例,逻辑单元(LUN,Logic UNit)是NVM芯片独立执行命令并报告状态的最小单元。存储器目标(Target)是NMV芯片封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。
逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取数据。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3 0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有指定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。FTL由例如运行在控制部件的CPU中的软件、固件和/或作为ASIC的部分的硬件实现。
图2是FTL的示意图。
存储设备向主机提供逻辑地址空间。主机使用逻辑地址访问存储设备。FTL将主机提供的逻辑地址映射为物理地址。
逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。逻辑地址可寻址的最小单元,被称为例如逻辑块(LogicalBlock)或扇区(sector)(为了简便,如非特别指出,下文中逻辑块与扇区的使用可互换),将寻址了逻辑块的逻辑地址也称为逻辑块地址(LBA,LogicalBlockAddress)。逻辑块具有指定的大小,例如,512B(字节)、2KB、4KB或16KB等。物理地址是用于访问存储设备的NVM的物理存储单元(例如,物理页)的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
用例如L2P表记录逻辑地址到物理地址的映射关系。L2P表是存储设备中的重要元数据。通常L2P表的条目记录了存储设备中以逻辑块为单位的地址映射关系。可选地,L2P表的每个条目代表多个逻辑块,以在L2P表的尺寸与存储空间的管理粒度之前权衡,例如,8个逻辑地址连续的逻辑块。
L2P表包括例如多个L2P表条目,每个L2P表条目对应一个或多个连续的逻辑块,L2P表条目的值记录了为该一个或多个连续的逻辑块提供的存储空间的地址(为了清楚,将该存储空间称为NVM数据帧,将该存储空间的地址称为NVM数据帧地址)。
L2P表被存储在例如DRAM 110(也参看图1)或SRAM中。根据访问的逻辑地址,获得对应的FTL条目的索引,并从L2P表条目中得到为逻辑块提供存储空间的NVM数据帧。
NVM数据帧地址,是例如访问NVM芯片的物理页的物理地址、访问NVM芯片的多个组合的物理页的物理地址(组合的物理页是例如,位于相同或不同逻辑单元(LUN)的多个平面(Plane)上的物理页)、访问NVM芯片的物理页内的部分数据单元的物理地址。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储L2P表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。
图3展示了存储设备的控制部件的详细的框图。
主机以遵循存储协议的IO命令访问存储设备。控制部件根据来自主机的IO命令,生成一个或多个存储命令并提供给介质接口控制器。介质接口控制器根据存储命令生成遵循NVM芯片的接口协议的存储介质访问命令(例如,编程命令、读命令、擦除命令)。控制部件还跟踪从一个IO命令生成的所有存储命令都被执行完成,并向主机指示IO命令的处理结果。
参看图3,控制部件包括例如主机接口、主机命令处理单元、存储命令处理单元、介质接口控制器与存储介质管理单元。主机接口获取主机提供的IO命令,并生成存储命令提供给存储命令处理单元。存储命令例如访问相同大小的存储空间,例如4KB。存储命令访问的存储空间大小同例如L2P表的条目对应。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为NVM数据帧(也简称为数据帧)。物理页记录一个或多个NVM数据帧。例如,物理页的大小17664字节,而NVM数据帧大小为4KB,则一个物理页能存储4个NVM数据帧。
将经数据校正码保护的最小数据单元称为ECC块。ECC块包括用户数据与校验数据,并具有不同的大小。在一个例子中,ECC块内的用户数据大小为一个数据帧大小,而校验数据大小为15字节。在又一个例子中,ECC块内的用户数据大小为512字节,而校验数据大小为8字节,从而一个数据帧能容纳多个ECC块。
存储介质管理单元提供FTL,为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元包括L2P表。对于读命令,存储介质管理单元输出存储命令所访问的逻辑地址对应的物理地址,对于写命令,存储介质管理单元为其分配可用的物理地址,并记录其访问的逻辑地址与分配的物理地址的映射关系。存储介质管理单元还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元根据存储介质管理单元提供的物理地址,操作介质接口控制器向NVM芯片发出存储介质访问命令。为了清楚的目的,将存储命令处理单元发送给介质接口控制器的命令称为介质接口命令,而将介质接口控制器发送给NVM芯片的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。以存储介质访问读命令为例,NVM芯片支持的读命令按读取的数据大小分为多种类型,例如读完整物理页的读命令,读例如一个、两个或更多数据帧的读命令,读多个平面的读命令,读字线的多个物理页的读命令等。
介质接口命令同存储介质访问命令对应,从而介质接口控制器根据介质接口命令的类型,确定生成的存储介质访问命令的类型。
大块包括来自多个逻辑单元(LUN)的每个的物理块。为大块提供物理块的多个逻辑单元被称为逻辑单元组。逻辑单元组的每个逻辑单元可以为大块提供一个物理块。
图4展示了大块的示意图。在例如16个逻辑单元(LUN0、LUN1、……、LUN15)的逻辑单元组上构造大块。图4中,LUN0-LUN15的块0构成了大块0,其中LUN0到LUN14的各个平面中的物理块0用于存储用户数据,而LUN15的物理块0用于存储根据大块0的用户数据计算得到的校验数据。LUN0-LUN15的块1构成了大块1。
图4还展示了页条带。在大块上构造页条带,大块内的每个物理块的相同物理地址的物理页构成了“页条带”。图4中,物理页P0-0、物理页P0-1......与物理页P0-X构成了页条带0,其中物理页P0-0、物理页P0-1......物理页P0-14用于存储用户数据,而物理页P0-X用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,物理页P2-0、物理页P2-1......与物理页P2-X构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。
存储设备提供了多种数据保护技术。例如,通过ECC块来识别和校正NVM数据帧中出现的数据错误,通过页条带来在单一或少数物理页的数据无法通过错误校正时来重建物理页的数据,NVM芯片也提供例如读重做技术,通过调节读出数据时使用的阈值电压来提高读出数据通过错误校正的几率。错误校正还包括例如硬译码与软译码,在软译码中通过用不同的阈值电压读出的多份数据来进一步提升错误校正的成功率。
然而,由于多种数据保护技术的存在,使得存储设备中数据错误的发生的几率极低,这有效保护的用户的数据,但为存储设备的数据保护措施的开发带来了极大的困难。由于数据错误难以发生,导致存储设备的数据保护措施难以被触发进而难以被验证。已经提出了故障注入的方式向存储设备的数据引入人为的错误,用于触发数据保护措施。例如,在专利申请号为201610814329.0,名称为“读出错测试方法与装置”的中国专利中,提供了向NVM的物理页注入数据错误的技术。
图5展示了现有技术的用于向存储设备注入数据错误的示意图。
介质接口控制器包括ECC(错误校正码,ErrorCorrectionCode)编码单元与ECC解码单元。存储设备的控制部件的存储命令处理单元向介质接口控制器提供介质接口命令以向NVM芯片写入数据时,ECC编码单元对存储器中的数据进行ECC编码,以生成ECC块。在从NVM芯片读出数据时,介质接口控制器将读出的ECC块搬移到存储器的数据缓存,ECC译码单元对ECC块译码,并得到错误校正后的数据。一些情况下,ECC块中的错误比特过多,导致ECC译码单元无法得到正确的数据。为了进行故障注入,故障注入单元修改数据缓存中的数据(ECC块),向数据中引入更多的错误。当数据中的错误比特超出了ECC译码单元的译码能力时,ECC译码单元无法对ECC块争取地译码。
发明内容
然而,向数据缓存中的ECC块引入适当的错误也是复杂的。一方面,ECC译码单元有较强的错误校正能力,例如,能校正ECC块中的1000比特错误。这需要向ECC块注入的错误比特的数量较多。而注入过多的错误(例如,全0或者全1)又会引起ECC译码失败之外的其他类型错误(例如,访问未经写入的页)而得不到所需的错误类型。并且,ECC块中的各比特的取值具有随机性,向其中写入具有指定值的数据未必能引起ECC译码失败。以及对于读重做、页条带、软译码等进一步的数据保护机制,所注入的数据错误也未必能发挥作用。
依然进一步地,上述错误故障手段仅适用于从NVM芯片中读出数据的过程,向读出的数据注入故障,而无法应用于向NVM芯片写入数据和/或向NVM芯片施加擦除命令时注入故障。
希望改进故障注入技术,以解决现有技术中存在的一种或多种技术问题。
根据本申请的第一方面,提供了根据本申请第一方面的第一非易失存储器的故障注入方法,包括:获取访问非易失存储器的第一介质接口命令的处理结果;若所述处理结果指示第一介质接口命令执行成功,且所述第一介质接口命令同一个或多个触发故障注入的条件匹配,则修改所述处理结果,使所述处理结果指示所述第一介质接口命令的执行出现错误;执行同所述第一介质接口命令的执行出现的错误相对应的故障处理过程。
根据本申请第一方面的第一非易失存储器的故障注入方法,提供了根据本申请第一方面的第二非易失存储器的故障注入方法,还包括:截获所述第一介质接口命令的完成消息,通过所述第一介质接口命令的完成消息获取所述处理结果;以及通过修改所述第一介质接口命令的完成消息来修改所述处理结果。
根据本申请第一方面的第一或第二非易失存储器的故障注入方法,提供了根据本申请第一方面的第三非易失存储器的故障注入方法,还包括:获取所述第一介质接口命令所访问的非易失存储器的地址;若所述第一介质接口命令所访问的非易失存储器的地址,同记录的一个或多个触发故障注入的第一条件的地址匹配,则识别出所述第一介质接口命令同一个或多个触发故障注入的条件匹配。
根据本申请第一方面的第一至第三非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第四非易失存储器的故障注入方法,还包括:获取访问非易失存储器的第二介质接口命令的处理结果;根据第二介质接口命令所访问的非易失存储器的地址同所述第一介质接口命令所访问的非易失存储器的地址匹配,识别同所述第一介质接口命令的执行出现的错误相对应的故障处理过程完成。
根据本申请第一方面的第一至第四非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第五非易失存储器的故障注入方法,还包括:获取第一用户定制命令,第一用户定制命令指示第一地址;根据第一地址获取非易失存储器的第一物理地址;记录第一物理地址作为触发故障注入的条件。
根据本申请第一方面的第五非易失存储器的故障注入方法,提供了根据本申请第一方面的第六非易失存储器的故障注入方法,其中在获取第一用户定制命令之前,还执行一个或多个IO命令;其中为执行所述一个或多个IO命令,分配访问非易失存储器的一个或多个物理地址,所述一个或多个物理地址包括所述第一物理地址。
根据本申请第一方面的第五或第六非易失存储器的故障注入方法,提供了根据本申请第一方面的第七非易失存储器的故障注入方法,其中提供故障表,故障表的每个条目记录触发故障注入的条件之一;所述方法还包括:根据第一用户定制命令,在故障表的第一条目的故障地址字段中记录所述第一物理地址。
根据本申请第一方面的第七非易失存储器的故障注入方法,提供了根据本申请第一方面的第八非易失存储器的故障注入方法,其中根据第一用户定制命令,还更新所述第一条目的地址掩码字段、故障计数字段、故障使能字段、故障计时字段和/或可重入标记字段;其中故障表的条目的地址掩码字段指示所在条目的故障地址字段的一个或多个比特被用于匹配要触发故障的地址;故障表的条目的故障使能字段指示所在条目是否被用于触发故障注入;故障表的条目的故障计时字段指示所在条目被用于触发故障注入后,该所在条目能用于触发故障注入的持续时间;故障表的条目的故障计数字段指示所在条目触发的故障注入的次数;和/或故障表的可重入标记字段指示在已经触发了故障注入,且对应所实施的故障注入的故障处理过程尚未结束前,所在条目是否可再被用于触发故障注入。
根据本申请第一方面的第八非易失存储器的故障注入方法,提供了根据本申请第一方面的第九非易失存储器的故障注入方法,还包括:响应于所述第一介质接口命令所访问的非易失存储器的地址,同所述第一条目记录的第一条件匹配,还更新所述第一条目,以反映根据第一条目所触发的故障注入的次数。
根据本申请第一方面的第九非易失存储器的故障注入方法,提供了根据本申请第一方面的第十非易失存储器的故障注入方法,还包括:响应于所述第一介质接口命令所访问的非易失存储器的地址,同所述第一条目记录的第一条件匹配,还定时更新所述第一条目,以反映第一条目被用于触发故障注入后,所经过的时间。
根据本申请第一方面的第七至第十非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十一非易失存储器的故障注入方法,其中,由内容关联存储器(CAM)记录所述故障表,内容关联存储器的一行记录所述故障表的条目之一;所述方法还包括:将所述第一介质接口命令所访问的非易失存储器的地址同时提供给所述内容关联存储器的每行,以并行识别所述第一介质接口命令所访问的非易失存储器的地址同所述内容关联存储器的一行或多行是否匹配。
根据本申请第一方面的第五至第十一非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十二非易失存储器的故障注入方法,其中获取第二用户定制命令,第二用户定制命令指示第二地址与第二次数;根据第二地址获取非易失存储器的第二物理地址;记录第二物理地址作为触发故障注入的第二条件,以及由第二条件触发的故障注入的次数不多于所述第二次数。
根据本申请第一方面的第五至第十二非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十三非易失存储器的故障注入方法,其中获取第三用户定制命令,第三用户定制命令指示第三地址;根据第三地址获取非易失存储器的多个第三物理地址;记录多个第三物理地址作为触发故障注入的多个第三条件,其中所述多个第三物理地址属于相同的页条带。
根据本申请第一方面的第五至第十三非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十四非易失存储器的故障注入方法,其中获取第四用户定制命令,第四用户定制命令指示第四地址;根据第四地址获取访问存储器的多个第四存储器地址;记录所述多个第四存储器地址作为触发故障注入的多个第四条件,其中所述多个第四存储器地址用于存储同所述第四地址对应的软译码数据。
根据本申请第一方面的第五至第十四非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十五非易失存储器的故障注入方法,其中获取第五用户定制命令,第五用户定制命令指示开启触发故障注入的多个条件。
根据本申请第一方面的第五至第十五非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十六非易失存储器的故障注入方法,其中所述第一介质接口命令指示的操作类型为读操作、编程操作和/或擦除操作。
根据本申请第一方面的第五至第十六非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十七非易失存储器的故障注入方法,其中所述第一介质接口命令指示的操作类型为读ID、设置读阈值、获取读阈值和/或设置工作模式;所述方法还包括:获取所述第一介质接口命令指示的操作类型;若所述第一介质接口命令指示的操作类型,同记录的一个或多个触发故障注入的第一条件的操作条件匹配,则识别出所述第一介质接口命令同一个或多个触发故障注入的条件匹配。
根据本申请第一方面的第五至第十七非易失存储器的故障注入方法之一,提供了根据本申请第一方面的第十八非易失存储器的故障注入方法,还包括:若所述处理结果指示第一介质接口命令执行失败,则不检查所述第一介质接口命令同一个或多个触发故障注入的条件是否匹配。
根据本申请的第二方面,提供了根据本申请第二方面的第一用于非易失存储器的控制部件的故障注入装置,包括故障注入单元与故障触发单元;所述故障注入单元同所述控制部件的介质接口控制器耦合,并获取所述介质接口控制器提供的介质接口访问命令的完成消息;所述故障触发单元同所述故障注入单元耦合,并获取所述故障注入单元提供的介质接口访问命令的完成消息对应的第一信息,所述故障触发单元根据所述第一信息识别是否触发故障;响应于所述故障触发单元根据所述第一信息识别触发故障,所述故障注入单元更新介质接口访问命令的完成消息以实施故障注入。
根据本申请第二方面的第一用于非易失存储器的控制部件的故障注入装置,提供了根据本申请第二方面的第二用于非易失存储器的控制部件的故障注入装置,其中所述故障触发单元同所述控制部件的存储命令处理单元耦合;响应于所述故障注入单元向所述介质接口访问命令的完成消息实施了故障注入,所述存储命令处理单元执行同所注入的故障相对应的故障处理过程。
根据本申请第二方面的第二用于非易失存储器的控制部件的故障注入装置,提供了根据本申请第二方面的第三用于非易失存储器的控制部件的故障注入装置,其中所述故障触发单元包括故障表,故障表包括多个条目,故障表的条目记录了触发故障注入的条件之一。
根据本申请第二方面的第三用于非易失存储器的控制部件的故障注入装置,提供了根据本申请第二方面的第四用于非易失存储器的控制部件的故障注入装置,其中故障表是内容关联存储器,所述内容关联存储器的一行记录触发故障注入的条件之一;所述故障注入单元将所述第一信息同时提供给所述内容关联存储器的每行,所述内容关联存储器并行识别所述信息同所述内容关联存储器的行是否匹配。
根据本申请第二方面的第四用于非易失存储器的控制部件的故障注入装置,提供了根据本申请第二方面的第五用于非易失存储器的控制部件的故障注入装置,其中所述故障表的条目包括地址掩码字段、故障计数字段、故障使能字段、故障计时字段和/或可重入标记字段;其中故障表的条目的地址掩码字段指示所在条目的故障地址字段的一个或多个比特被用于匹配要触发故障的地址;故障表的条目的故障使能字段指示所在条目是否被用于触发故障注入;故障表的条目的故障计时字段指示所在条目被用于触发故障注入后,该所在条目能用于触发故障注入的持续时间;故障表的条目的故障计数字段指示所在条目触发的故障注入的次数;和/或故障表的可重入标记字段指示在已经触发了故障注入,且对应所实施的故障注入的故障处理过程尚未结束前,所在条目是否可再被用于触发故障注入。
根据本申请第二方面的第五用于非易失存储器的控制部件的故障注入装置,提供了根据本申请第二方面的第六用于非易失存储器的控制部件的故障注入装置,其中响应于所述故障触发单元识别所述第一信息同所述故障表的第一条目匹配,还更新所述第一条目,以反映根据第一条目所触发的故障注入的次数。
根据本申请第二方面的第一至第六用于非易失存储器的控制部件的故障注入装置之一,提供了根据本申请第二方面的第七用于非易失存储器的控制部件的故障注入装置,其中所述第一信息是所述介质接口命令所访问的非易失存储器的地址。
根据本申请第二方面的第一至第七用于非易失存储器的控制部件的故障注入装置之一,提供了根据本申请第二方面的第八用于非易失存储器的控制部件的故障注入装置,其中所述控制部件的主机命令处理单元响应于收到用户定制命令而配置所述故障触发单元。
根据本申请第二方面的第一至第八用于非易失存储器的控制部件的故障注入装置之一,提供了根据本申请第二方面的第九用于非易失存储器的控制部件的故障注入装置,其中响应于所述介质接口控制器提供的介质接口访问命令的完成消息指示介质接口访问命令执行成功,所述故障注入单元将所述第一消息提供给所述故障触发单元;响应于所述介质接口控制器提供的介质接口访问命令的完成消息指示介质接口访问命令执行失败,所述故障注入单元将所述第一消息提供给所述控制部件的存储命令处理单元。
根据本申请的第三方面,提供了一种信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现根据本申请第一方面提供的非易失存储器的故障注入方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了现有技术的存储设备的框图。
图2是FTL的示意图。
图3展示了存储设备的控制部件的详细的框图。
图4展示了大块的示意图。
图5展示了现有技术的用于向存储设备注入数据错误的示意图。
图6展示了根据本申请实施例的故障注入方式的框图。
图7是根据本申请又一实施例的故障注入方式的框图。
图8A展示了存储设备的控制器进行错误处理的流程图。
图8B展示了根据本申请实施例的故障注入过程的流程图。
图9展示了根据本申请再一实施例的故障注入方式的框图。
图10展示了根据本申请实施例实施故障注入的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图6是根据本申请实施例的故障注入方式的框图。
根据本申请实施例的控制部件,还包括故障注入单元与故障触发单元。故障注入单元截获介质接口控制器提供给存储命令处理单元的介质接口命令的完成消息。存储命令处理单元向介质接口控制器提供介质接口命令,响应于一个或多个介质接口命令被介质接口控制器处理完成,介质接口控制器向存储命令处理单元提供同该一个或多个介质接口命令对应的完成消息。故障触发单元根据介质接口命令的完成消息识别是否要注入故障。故障注入单元根据故障出发单元的指示,通过修改介质接口命令的完成消息来将故障注入到介质接口命令的完成消息中。将被注入了故障的介质接口命令的完成消息或未注入故障的介质接口命令的完成消息提供给命令处理单元。
图6中,介质接口控制器是例如现有技术的介质接口控制器。
作为举例,存储命令处理单元提供给介质接口控制器的介质接口命令指示对NVM芯片的读操作。介质接口读出的数据被搬移到存储器。ECC译码单元对NVM芯片读出的数据进行错误校正译码,以及响应于错误校正译码完成,介质接口控制器在介质接口命令的完成消息中记录译码的结果(成功或失败)、经译码数据的地址以及从中读出该数据的NVM芯片的地址(简称为物理地址)。介质接口命令的完成消息被故障注入单元截获(图6中由标记(1)指示)。
故障注入单元识别介质接口命令的完成消息中指示的译码结果,若译码失败,代表介质接口命令的完成消息中已经存在错误,无需再注入进一步的故障,故障注入单元将这样的介质接口命令的完成消息直接提供给存储命令处理单元。若介质接口命令的完成消息中指示的译码结果指示译码成功,故障注入单元将介质接口命令的完成消息中指示的例如物理地址提供给故障触发单元(图6中由标记(2)指示)。故障触发单元确定对该物理地址是否要进行故障注入(也由图6的标记(2)指示)。
若故障触发单元根据物理地址确定要对该介质接口命令的完成消息实施故障注入,作为响应,故障注入单元例如修改介质接口命令的完成消息中指示的译码结果,以指示例如译码失败,并将修改后的介质接口命令的完成消息提供给存储命令处理单元。以此方式,故障注入单元向所截获的一些介质接口命令的完成消息注入故障,以触发存储命令处理单元的故障处理过程。进而得以观察存储命令处理单元的故障处理过程,评估其正确性和/或性能。
依然作为举例,故障触发单元根据物理地址、介质接口命令的完成消息指示的操作类型、介质接口命令的完成消息指示的存储器地址、和/或介质接口命令的完成消息对应的介质接口命令的标识(例如ID)来确定是否触发故障注入。
依然作为举例,故障触发单元维护例如故障表。故障表包括多个条目。故障表的条目记录了物理地址、物理地址部分或物理地址范围,其中物理地址部分指物理地址的全部比特中的部分比特。若介质接口命令的完成消息指示的物理地址同故障表的条目之一的物理地址匹配,则故障触发单元确定要针对该介质接口命令的完成消息触发故障。可选地,故障表的条目记录介质接口命令的操作类型、存储器地址、和/或介质接口命令的标识(例如ID),以做出确定是否触发故障注入的依据。
可选地,故障触发单元的故障表可以被配置,以添加、调整或删除触发故障注入的条件的一个或多个。例如,控制部件通过向故障表添加记录了新物理地址的条目,来使故障触发单元监视新物理地址,并在通过介质接口命令的完成消息指示新物理地址被访问时指示触发故障注入。
可选地或进一步地,响应于根据例如第一物理地址触发了故障注入,故障触发单元还确定是否对该第一物理地址继续触发下一次故障注入。例如,故障触发单元通过清除故障表中记录了该第一物理地址的条目而在下一次收到指示了该第一物理地址的介质接口命令的完成消息时不再触发故障注入。
响应于故障注入单元提供的介质接口命令的完成消息指示存在故障,存储命令处理单元对实施针对所指示故障的错误处理。例如,通过读重做来尝试从NVM芯片读出正确的数据。
图7是根据本申请又一实施例的故障注入方式的框图。
根据本申请的实施例,主机通过用户定制命令向存储设备指示实施故障注入,并设置触发故障注入的一个或多个条件。主机向存储设备提供至少2种命中,用户定制命令与IO命令。IO命令是例如指示向存储设备写入数据的写命令或从存储设备读出数据的读命令。用户定制命令包括多种,各自指示特定的操作。例如,用户定制命令指示从地址L1读出数据作为触发故障注入的条件。主机命令处理单元作为响应,在故障触发单元的故障表的条目中记录地址L1。若从介质接口控制器接收的介质接口命令的完成消息中指示了地址L1,并且对应的介质接口命令是读命令,故障触发单元触发故障注入。作为又一个例子,用户定制命令指示的地址L1是存储设备的逻辑地址,主机命令处理单元作为响应,还访问L2P表以获取同地址L1对应的物理地址P1,并将物理地址P1记录在故障触发单元的地址表中。
为了确保L2P表中记录了对应于地址L1的物理地址,以有效执行该用户定制命令,主机在向存储设备提交该用户定制命令之前,还向主机设备提供一个或多个写命令,以确保逻辑地址L1被写命令写入数据。当逻辑地址L1被写入数据,控制部件能确保在L2P表中已经为地址L1分配了对应的写命令。从而,根据本申请的实施例,为将读地址L1作为故障触发条件,同存储设备耦合的主机要确保已通过IO命令向地址L1写入了数据。
可选地或进一步地,若故障触发单元已经记录了地址P1,主机通过写命令向地址L1写入数据,而存储命令处理单元为执行写命令,在L2P表记录将同地址L1对应的物理地址P1更新为P1’,以及还从故障触发单元获知故障表中记录了地址P1,进而在故障表中还记录地址P1’,以跟踪L2P表的变更。可选地,在故障表中将地址P1修改为地址P1’。可选地,在故障表中添加新的条目以记录地址P1’,而记录了地址P1的条目依然存在于地址表中。
依然作为举例,用户定制命令还指示要作为触发故障注入的条件的地址范围,例如,从地址L1到地址L2的范围,或者地址的前部分比特为L3的所有地址。
依然作为举例,用户定制命令还指示要作为触发故障注入的地址对应的命令类型,例如,对指定地址的读操作触发故障,对指定地址的写操作和/或擦除操作触发故障。指示要作为触发故障注入的地址对应的命令类型的用户定制命令中,也指示地址,例如地址L1。
依然作为举例,用户定制命令还指示故障注入单元开启故障注入,和/或指示一个或多个触发故障注入的条件生效。响应于用户定制命令开启故障注入,故障注入单元截获介质接口命令的完成消息,并识别是否要对介质接口命令完成消息实施故障注入。响应于用户定制命令未开启或关闭故障注入,介质接口控制器提供的介质接口命令完成消息被直接提供或由故障注入单元直接转发给存储命令处理单元。响应于用户定制命令指示一个或多个触发故障注入的条件生效,设置故障触发单元的故障表的一个或多个条目,以记录该条目生效。可选地,指示一个或多个触发故障注入的条件生效的用户定制命令也指示例如地址L1,而主机命令处理单元通过访问L2P表获得对应的物理地址P1,并通过物理地址P1查询故障触发单元的故障表,以获取要生效的一个或多个条目。
依然作为举例,用户定制命令还指示故障注入单元停止故障注入,和/或指示一个或多个触发故障注入的条件不再生效。响应于用户定制命令指示停止故障注入,介质接口控制器提供的介质接口命令完成消息被直接提供或由故障注入单元直接转发给存储命令处理单元。响应于用户定制命令指示一个或多个触发故障注入的条件不再生效,设置故障触发单元的故障表的一个或多个条目,以记录该条目不再生效。可选地,指示一个或多个触发故障注入的条件不再生效的用户定制命令也指示例如地址L1,而主机命令处理单元通过访问L2P表获得对应的物理地址P1,并通过物理地址P1查询故障触发单元的故障表,以获取要不再生效的一个或多个条目。
图8A展示了存储设备的控制器进行错误处理的流程图。
响应于出现错误,控制部件的例如存储命令处理单元执行一种或多种错误处理过程,以尝试解决错误。作为举例,对从NVM芯片读出数据的命令,可能出现UECC错误(含义为ECC译码单元对读出数据进行错误校正译码后无法得到正确的数据)。介质接口控制器在介质接口命令的完成消息中指示出现UECC错误。作为举例,响应于识别出现了UECC错误(810),存储命令处理单元尝试对该出现UECC的物理地址(记为P)进行1次或多次读重做(812)。读重做指改变从NVM芯片读出数据的阈值电压,通过使用不同的阈值电压,来降低从NVM芯片读出数据中的错误率。存储命令处理单元尝试例如多种阈值电压,并对物理地址P实施同阈值电压对应的多次读重做,直到某次读重做得到的读出数据被正确的错误校正译码。若尝试了所有可选的读重做,依然无法得到正确的读出数据,接下来可选地,存储命令处理单元对物理地址P实施软译码(814)。诸如LDPC(低密度奇偶校验码)等错误校正码支持软译码。软译码指使用多种阈值电压从相同的物理地址P读出多份数据,对这多份数据联合实施错误校正译码,以利用多种数据的对应比特提供的错误概率信息来提升错误校正译码成功的几率。一些情况下,为实施软译码,需要将从物理地址P读出的多份数据都搬移到存储器(也参看图6的存储器)中。可选地,这多份数据在存储器中的地址是关联的,根据其中一份数据得以知晓其他数据在存储器中的位置。
若通过软译码依然无法得到正确的读出数据,接下来依然可选地,用诸如RAID技术重建物理地址P的数据(816)。也参看图4,大块与其上的页条带为物理地址P的数据提供了基于RAID技术的数据保护。在物理地址P的数据无法读出时,通过读出物理地址P所在页条带的所有其他页的数据,通过RAID技术重建物理地址P的数据(816)。为了使用RAID技术,需要通过物理地址P确定物理地址P所属页条带的所有其他物理页的地址。
图8B展示了根据本申请实施例的故障注入过程的流程图。
为进行故障注入,主机向存储设备提供指示故障注入的用户定制命令(用户定制命令记为VU)。存储设备的主机命令处理单元获取主机提供的指示故障注入的用户定制命令(820)。图8B中,步骤820获取的用户定制命令指示故障注入的触发故障注入的条件。可以理解的,主机还通过IO命令来确保要向其注入读数据存在UECC错误的地址已被写入数据,以及通过其他用户定制命令来开启故障注入。开启故障注入的用户定制命令与指示触发故障注入的条件的用户定制命令被提供给存储设备的顺序可以没有限制。
返回参看图8B,作为举例,步骤820获取的用户定制命令指示的触发故障注入的条件是故障地址(记为Ae)(822)。该条件指示例如对从物理地址Ae读出的数据触发UECC错误,和/或在向物理地址Ae写入数据时触发编程失败错误。作为响应,在故障触发单元的故障表的条目中记录物理地址Ae。可选地,步骤822获取的用户定制命令指示的地址是逻辑地址Le,主机命令处理单元还用逻辑地址Le访问L2P表以获取同逻辑地址L而对应的物理地址Ae。可选地,若L2P表中没有记录逻辑地址L2的条目,主机命令处理单元向主机指示该用户定制命令存在错误。
根据本申请的实施例,步骤822获取的用户定制命令,还指示同地址Ae对应的操作类型,操作类型是读操作、写操作和/或编程操作。可选地,主机通过不同于步骤822获取的用户定制命令的附加的用户定制命令来指示或更改同地址Ae对应的操作类型。
可选地,主机向存储设备提供一个或多个用户定制命令指示的触发故障注入的一个或多个条件。
例如,步骤824获取的用户定制命令,指示对例如地址Ae触发故障的次数。作为举例,在故障触发单元的故障表的条目中提供计数值,计数值指示该条目可用于触发的故障的次数。例如,步骤824获取的用户定制命令设置地址Ae的故障触发次数为3,在记录了地址Ae的故障条目中记录该次数3。而故障触发单元响应于根据该记录了地址Ae的条目触发故障注入,将该条目的故障触发次数计数值递减。可选地,若故障表的条目的故障触发次数计数值为0,则故障触发单元不再依据该条目触发故障注入。
在例如发生了读重做的场景中,故障触发次数特别有用。例如,根据故障表的条目针对地址Ae的读操作触发了故障注入,存储命令处理单元可能通过一系列的读重做来尝试处理该故障。此时,还希望测试或验证在一个或多个读重做过程中,从地址Ae获取到正确数据或未获取到正确数据的情况。例如,设置地址Ae的故障触发次数为3,则在第一次从地址Ae读出数据以及接下来2次对地址Ae施加读重做时,触发故障注入,而在第3次对地址Ae施加读重做时,不再触发故障注入,从而模拟了地址Ae出现UECC错误,而错误处理过程的前2次读重做依然出现UECC错误,而第三次读重做从地址Ae得到了正确数据的场景。以及通过用户定制命令调整地址Ae的故障触发次数,得以测试或模拟其他次数的读重做后得到正确数据的场景。
依然作为举例,步骤826获取的用户定制命令,指示所注入的并发故障的数量。作为举例,在故障触发单元中提供并发故障计数值,计数值指示故障触发单元并发触发的多个故障注入的数量。根据本申请的实施例,存储设备中可能并发出现多个故障,而故障处理过程需要能处理同时存在的多个故障。以及存储设备的故障处理过程可能重入,即在处理一个故障的过程中,又因再一个故障而再次进入相同或不同故障处理过程。为了测试存储设备的这种能力,根据本申请的实施例,支持在故障注入被触发后的故障处理期间,再次触发一个或多个故障注入。作为举例,并发故障计数值为2,故障触发单元的故障表中记录了故障条件包括对地址Ae1的读操作与对地址Ae2的读操作。若截获了对地址Ae1的读操作的介质接口命令的完成消息,并发故障计数值递减(为1)。接下来,在对地址Ae1的读操作触发的故障处理未完全前,又截获了对地址Ae1的读操作的介质接口命令的完成消息,由于并发故障计数值(为1)大于0,因而再次触发对地址Ae2的读操作的故障注入,以及发故障计数值递减(为0)。此后,由于并发故障计数值为0,不再触发故障注入。以及响应于对地址Ae1或Ae2的读操作的故障处理完成,还将并发故障计数值递增,以允许故障触发单元继续触发故障注入。
依然作为举例,步骤828获取的用户定制命令,指示对地址Ae触发软译码故障(828)。作为举例,软译码发生时,从物理地址Ae有例如2份数据被搬移到存储器,作为对比,在常规的读操作或读重做中,从地址Ae仅有1份数据被搬移到存储器,虽然读重做可能发生多次,但每次读重做仅得到一份数据,存储器中仅需保留这一份数据。为指示对地址Ae触发软译码故障,作为举例,在故障表中记录相关联的两个或更多用于存储器的地址,并根据要读取这些相关联的两个或更多用于存储器的地址对应的数据的一份或多份而识别出发生了软译码,并响应地触发故障注入。可选地,指示对地址Ae触发软译码故障,在地址表中记录软译码标记以及相关联的地址Ae,而介质接口命令的完成消息中也携带软译码标记,从而识别是否发生了软译码,以及是否就软译码触发故障注入。
依然作为举例,步骤830获取的用户定制命令,指示对地址Ae的利用页条带的数据重建触发重建失败故障(830)。作为举例,根据地址Ae,确定地址Ae所在页条带的其他页或数据的物理地址。从而指示对地址Ae的利用页条带的数据重建触发重建失败故障的用户定制命令直接或间接(例如通过L2P表)指示地址Ae,以及在故障触发单元的地址表中记录地址Ae,也记录地址Ae所在页条带的其他页或其他数据的物理地址,从而在读出这些同地址Ae属于相同页条带的其他页或其他数据时,触发故障注入,从而使得地址Ae所属的页条带的多份数据出现UECC,来进一步触发利用页条带的数据重建触发重建失败故障。可选地,响应于指示对地址Ae的利用页条带的数据重建触发重建失败故障的用户定制命令,在故障表中添加2个或多个条目,每个记录地址Ae或同Ae属于相同页条带的地址,其中当页条带的至少2份数据存在UECC时,能引起利用该页条带的数据重建失败。
在故障注入被开启后,故障注入单元截获介质接口命令的完成消息,并利用故障触发单元判断对一个或多个介质接口命令的完成消息是否触发故障注入。若故障触发单元指示对介质接口命令的完成消息触发故障注入(例如,介质接口命令的完成消息携带或指示的地址Ae同故障表的条目匹配),故障注入单元生成故障(832)。故障注入单元通过例如修改介质接口命令的完成消息来生成故障。例如,通过修改介质接口命令的完成消息中指示介质接口命令的执行成功与否的字段,来指示该介质接口命令的执行失败,以此来注入故障。可选地,还在介质接口命令的完成消息中指示故障类型或原因,例如,是由于错误校正译码失败产生了UECC错误。可选地,响应于修改了介质接口命令的完成消息,还更新故障表中触发了该故障的被匹配的条目,例如递减该条目的故障触发次数值。
依然作为举例,步骤834获取的用户定制命令,指示更新或取消故障表中记录的一个或多个触发故障注入的条件。例如,指示取消具有指定地址(例如Ae)的一个或多个条目,或者将这些条目的故障触发次数更新为0。又例如,指示将具有指定地址(例如Ae)的一个或多个条目的指定地址修改为其他值。
依然作为举例,用户定制命令,指示故障表中记录的一个或多个触发故障注入的条件的生效时间。例如,在该故障注入条件被触发后的指定时间段内,该条件有效,而在超时后,该条件自动失效。
可以理解地,主机提供的用户定制命令(参看820、822、824、826、828、830、834)可以多种不同的顺序提供给存储设备。可选地,向存储设备提供这些用户定制命令的顺序没有限制,从而得以通过灵活地组合这些用户定制命令,实现多样化的故障注入过程,以验证存储设备的错误处理能力。
图9展示了根据本申请再一实施例的故障注入方式的框图。
同图7展示的故障注入方式相比,图9还展示了故障触发单元的故障表。故障表包括多个条目。故障表的条目包括多个字段,各自记录了例如地址掩码、故障地址、故障计数、故障使能标记、故障计时与可重入标记。条目的地址掩码字段,指示该条目的故障地址字段的一个或多个比特在用于匹配要触发故障的地址时被使用或忽略。条目的故障地址字段,用于匹配要触发故障的地址。例如,条目的故障地址字段指示地址Ae,在介质接口命令的完成消息指示了地址Ae时,条目的故障地址字段同介质接口命令的完成消息指示的地址匹配。作为又一个例子,条目的故障地址字段指示地址Ae,而地址掩码字段指示地址的前20比特用于匹配,则在介质接口命令的完成消息指示的地址的前20比特同地址Ae的前20比特对应相同时,地址匹配。条目的故障计数字段指示该条目要触发的故障注入的次数。响应于该条目每次被用于触发故障注入,该条目的故障计数字段的值递减,若故障计数字段的值为0或小于0,则该条目所指示的条目不再用于触发故障注入。可选地,条目的故障计数字段指示由该条目已触发的故障注入的次数。条目的故障使能字段指示该条目是否被用于触发故障注入。条目的故障计时字段指示例如该条目被用于触发故障注入后,该条目的有效时间。例如,条目的故障计时值为1s,在该条目被用于触发故障注入后,1秒钟时间后,该条目的故障使能字段被设置为关闭,从而该字段不再被用于触发故障注入。可选地,条目的故障计时保持启动,而无需被用于触发故障注入后启动。条目的可重入标记指示在已经触发了故障注入,且对应所实施的故障注入的故障处理过程尚未结束前,该条目是否可再被用于触发故障注入。可选地,故障表的条目还记录了要注入的故障。
根据主机提供的用户定制命令的一种或多种,在故障表中添加条目或更新既有的条目,以记录由用户定制命令所指示的用于触发故障注入的条件。
故障触发单元根据故障表,识别介质接口命令的完成消息同故障表的条目之一是否匹配。若介质接口命令的完成消息同故障表的条目之一匹配,则故障触发单元向故障注入单元指示要触发故障注入,可选地,还向故障注入单元指示要注入的故障的类型或故障值。故障注入单元作为响应,用故障注入单元指示要注入的故障的类型或故障值修改介质接口命令的完成消息,以向介质接口命令的完成消息中注入故障。经修改的介质接口命令的完成消息被提供给存储命令处理单元。
可选地,故障触发单元和/或故障注入单元还包括全局的故障注入开启标记,可通过用户定制命令设置或修改全局的故障注入开启标记。
依然可选地,故障表的条目还包括操作类型掩码字段,以匹配介质接口命令的完成消息所对应的操作类型(例如,读、写、擦除)。
可选地,为了避免故障注入单元与故障触发单元处理介质接口命令的完成消息引入的延迟对控制部件的IO命令处理过程的影响,以硬件实现故障注入单元和/或故障触发单元。故障注入单元提供寄存器记录介质接口命令的完成消息指示的物理地址和/或操作类型。故障表由例如CAM(ContentAssociationMemory,内容关联存储器)实现。使用故障注入单元的寄存器提供的物理地址和/或操作类型,查询故障表的CAM,如果有故障表的条目被匹配,则CAM输出被匹配的条目,可选地,CAM输出被匹配的条目指示的要被注入的故障,从而故障注入单元响应于CAM指示匹配,根据该被注入的故障修改介质接口命令的完成消息,这些操作得以在一个时钟周期内完成,从而使存储命令处理单元几乎察觉不到介质接口命令的完成消息被截获并修改。依然可选地,如果有故障表的条目被匹配,还更新被匹配的条目的一个或多个字段,例如,使故障计数字段递减。依然可选地,响应于时间的流逝,更新故障表的一个或多个条目的故障计时字段的值。
依然可选地,故障注入单元自主地识别其所触发的故障被例如存储命令处理单元处理完成,而无需存储命令处理单元在故障处理完成后再告知故障注入单元,以进一步降低故障注入单元对存储命令处理单元的影响。例如,响应于地址Ae匹配,故障注入单元向介质接口命令C的完成消息注入了故障F。接下来,故障注入单元响应于又截获了该介质接口命令C的完成消息,并且介质接口命令C的完成消息指示对地址Ae的操作成功(例如,可能是通过读重做从地址Ae获得了正确的数据),故障注入单元识别出对其注入的故障F的处理已完成,相应地,故障注入单元记录故障F的处理已完成,并可用于识别是否需要判断故障表的条目的可重入标记。例如,在当前所有注入的故障的处理都已完成后,则无法判断故障表的条目的可重入标记。从而,故障注入单元根据存储命令处理单元对所注入的故障的预期响应来识别所注入的故障是否被处理完成。作为又一个例子,响应于地址Ae匹配,故障注入单元向介质接口命令C的完成消息注入了故障F1,故障F1指示发生页条带重建,且页条带重建依然失败。接下来,故障注入单元响应于又截获了访问同地址Ae属于相同页条带的多个或所有地址的介质接口命令的完成消息,并且这些多个或所有介质接口命令的完成消息指示对地址Ae所属页条带的访问结果无法完成重建(例如,有至少2个完成消息指示存在UECC错误),故障注入单元识别出对其注入的故障F1的处理已完成。依然可选地,由存储命令处理单元指示故障处理完成。存储命令处理单元对故障处理完成的指示可以是专门提供给故障注入单元,或者是控制部件自身的对故障处理完成的状态指示。
图10展示了根据本申请实施例实施故障注入的流程图。
由例如故障注入单元获取介质接口命令的处理结果。例如通过截获介质接口控制器提供给存储命令处理单元的介质接口命令的完成消息,获得介质接口命令的处理结果。从介质接口命令的处理结果识别介质接口命令的处理是否成功。若截获的介质接口命令的处理结果已指示存在错误,则无需进行故障注入,而是将此类介质接口命令的处理结果直接转发,例如提供给存储命令单元。
若截获的介质接口命令的处理结果指示处理成功,则进一步识别若截获的介质接口命令的处理结果同一个或多个预先指定的触发故障注入的条件是否匹配。通过例如故障触发单元和/或故障表来记录一个或多个触发故障注入的条件。若截获的介质接口命令的处理结果同一个或多个预先指定的触发故障注入的条件匹配,则触发故障注入。通过修改截获的介质接口命令的处理结果,以在其中指示存在错误来实施故障注入。响应于被注入了故障,由例如存储命令处理单元根据介质接口命令的处理结果对注入的故障进行处理。
根据本申请的实施例,除了对指示从NVM芯片读出数据的介质接口命令的处理结果(完成消息)注入故障,还对向NVM芯片写入数据和/或擦除NVM芯片的介质接口命令的处理结果(完成消息)注入故障。进一步地,对操作NVM芯片的其他类型的介质接口命令,诸如读ID、设置读阈值、设置工作模式(例如频率)等介质接口命令,也能对其完成消息注入故障。例如,通过故障表,在故障表的条目中记录介质接口命令的类型,和/或所访问的地址,作为触发故障注入的条件。相比于诸如图5展示的故障注入方式,通过修改存储器中的数据注入故障的方式仅适用于对指示从NVM芯片读出数据的介质接口命令的处理结果(完成消息)注入故障,而不适用于向其他类型的介质接口命令的处理结果注入故障。从而根据本申请的实施例,还丰富了故障注入所支持的介质接口命令的类型,使得几乎所有类型的介质接口命令的处理都可被注入故障(通过修改介质接口命令对应的完成消息)。从而使注入的故障更加全面,提升了对故障处理过程的测试/验证的能力。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种非易失存储器的故障注入方法,包括:
获取访问非易失存储器的第一介质接口命令的处理结果;
若所述处理结果指示第一介质接口命令执行成功,且所述第一介质接口命令同一个或多个触发故障注入的条件匹配,则修改所述处理结果,使所述处理结果指示所述第一介质接口命令的执行出现错误;执行同所述第一介质接口命令的执行出现的错误相对应的故障处理过程。
2.根据权利要求1所述的方法,还包括:
获取所述第一介质接口命令所访问的非易失存储器的地址;
若所述第一介质接口命令所访问的非易失存储器的地址,同记录的一个或多个触发故障注入的第一条件的地址匹配,则识别出所述第一介质接口命令同一个或多个触发故障注入的条件匹配。
3.根据权利要求1或2所述的方法,还包括:
获取访问非易失存储器的第二介质接口命令的处理结果;
根据第二介质接口命令所访问的非易失存储器的地址同所述第一介质接口命令所访问的非易失存储器的地址匹配,识别同所述第一介质接口命令的执行出现的错误相对应的故障处理过程完成。
4.根据权利要求1-3之一所述的方法,还包括:
获取第一用户定制命令,第一用户定制命令指示第一地址;
根据第一地址获取非易失存储器的第一物理地址;
记录第一物理地址作为触发故障注入的条件。
5.根据权利要求4所述的方法,其中
在获取第一用户定制命令之前,还执行一个或多个IO命令;
其中为执行所述一个或多个IO命令,分配访问非易失存储器的一个或多个物理地址,所述一个或多个物理地址包括所述第一物理地址。
6.根据权利要求4或5所述的方法,其中
提供故障表,故障表的每个条目记录触发故障注入的条件之一;所述方法还包括:
根据第一用户定制命令,在故障表的第一条目的故障地址字段中记录所述第一物理地址。
7.根据权利要求6所述的方法,其中
根据第一用户定制命令,还更新所述第一条目的地址掩码字段、故障计数字段、故障使能字段、故障计时字段和/或可重入标记字段;其中故障表的条目的地址掩码字段指示所在条目的故障地址字段的一个或多个比特被用于匹配要触发故障的地址;
故障表的条目的故障使能字段指示所在条目是否被用于触发故障注入;
故障表的条目的故障计时字段指示所在条目被用于触发故障注入后,该所在条目能用于触发故障注入的持续时间;
故障表的条目的故障计数字段指示所在条目触发的故障注入的次数;和/或
故障表的可重入标记字段指示在已经触发了故障注入,且对应所实施的故障注入的故障处理过程尚未结束前,所在条目是否可再被用于触发故障注入。
8.根据权利要求1-7之一所述的方法,其中
所述第一介质接口命令指示的操作类型为读ID、设置读阈值、获取读阈值和/或设置工作模式;
所述方法还包括:
获取所述第一介质接口命令指示的操作类型;
若所述第一介质接口命令指示的操作类型,同记录的一个或多个触发故障注入的第一条件的操作条件匹配,则识别出所述第一介质接口命令同一个或多个触发故障注入的条件匹配。
9.一种用于非易失存储器的控制部件的故障注入装置,包括故障注入单元与故障触发单元;
所述故障注入单元同所述控制部件的介质接口控制器耦合,并获取所述介质接口控制器提供的介质接口访问命令的完成消息;
所述故障触发单元同所述故障注入单元耦合,并获取所述故障注入单元提供的介质接口访问命令的完成消息对应的第一信息,所述故障触发单元根据所述第一信息识别是否触发故障;
响应于所述故障触发单元根据所述第一信息识别触发故障,所述故障注入单元更新介质接口访问命令的完成消息以实施故障注入。
10.一种存储设备,包括处理器和存储器和处理器,其中所述存储器存储有程序,所述程序被处理器执行时根据权利要求1-8之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110149640.9A CN114860500A (zh) | 2021-02-03 | 2021-02-03 | Nvm的故障注入方法及其存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110149640.9A CN114860500A (zh) | 2021-02-03 | 2021-02-03 | Nvm的故障注入方法及其存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860500A true CN114860500A (zh) | 2022-08-05 |
Family
ID=82622715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110149640.9A Pending CN114860500A (zh) | 2021-02-03 | 2021-02-03 | Nvm的故障注入方法及其存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860500A (zh) |
-
2021
- 2021-02-03 CN CN202110149640.9A patent/CN114860500A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210073120A1 (en) | Directed sanitization of memory | |
Birrell et al. | A design for high-performance flash disks | |
JP6855102B2 (ja) | 不揮発性メモリ・システムにおけるマルチページ障害の回復 | |
US9552290B2 (en) | Partial R-block recycling | |
TWI594120B (zh) | 用於記錄非揮發性記憶體系統中之停滯時間之系統、方法及程式產品 | |
KR101459861B1 (ko) | 스트라이프 기반 메모리 작동 | |
TWI645404B (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
US10621051B2 (en) | Logical to physical table restoration from stored journal entries | |
US11681472B2 (en) | Unmap data pattern for coarse mapping memory sub-system | |
US20150161036A1 (en) | Programming non-volatile memory using a relaxed dwell time | |
CN109976938B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
US9390003B2 (en) | Retirement of physical memory based on dwell time | |
US20180173438A1 (en) | Efficient data consistency verification for flash storage | |
CN113590503B (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 | |
CN113590502B (zh) | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统 | |
CN107808686B (zh) | 读出错测试方法与装置 | |
CN115602214A (zh) | 存储器装置中的命令快照产生 | |
CN114860500A (zh) | Nvm的故障注入方法及其存储设备 | |
CN115421964A (zh) | 一种非对齐数据错误处理方法、控制部件及存储设备 | |
CN112578993A (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 |