CN102272731A - 用于预测固态存储装置中的故障的设备、系统和方法 - Google Patents
用于预测固态存储装置中的故障的设备、系统和方法 Download PDFInfo
- Publication number
- CN102272731A CN102272731A CN2009801541492A CN200980154149A CN102272731A CN 102272731 A CN102272731 A CN 102272731A CN 2009801541492 A CN2009801541492 A CN 2009801541492A CN 200980154149 A CN200980154149 A CN 200980154149A CN 102272731 A CN102272731 A CN 102272731A
- Authority
- CN
- China
- Prior art keywords
- memory block
- error
- module
- resignation
- data
- 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
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3422—Circuits or methods to evaluate read or write disturbance in nonvolatile memory, without steps to mitigate the problem
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- 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
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/83—Masking faults in memories by using spares or by reconfiguring using programmable devices with reduced power consumption
- G11C29/832—Masking faults in memories by using spares or by reconfiguring using programmable devices with reduced power consumption with disconnection of faulty elements
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/88—Masking faults in memories by using spares or by reconfiguring with partially good memories
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- 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
- G11C2029/0411—Online error correction
-
- 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
- G11C2029/1208—Error catch memory
Abstract
本发明揭示一种用于预测固态存储装置中的故障的设备、系统和方法,且其包含确定模块(302)、阈值模块(304)、存储区错误模块(306)和引退模块(308)。所述确定模块(302)确定存储在ECC组块中的数据含有错误校正码(“ECC”)可校正错误,且进一步确定所述ECC组块的位错误计数。所述ECC组块源自非易失性固态存储媒体(110)。所述阈值模块(304)确定所述位错误计数满足ECC组块错误阈值。所述存储区错误模块(306)确定含有所述ECC组块的至少一部分的存储区满足区引退准则。所述引退模块(310)使含有所述ECC组块的至少一部分的所述存储区引退,其中所述存储区满足所述区引退准则。
Description
技术领域
本发明涉及处置数据错误,且更特定来说,涉及确定何时使固态存储装置中的存储区引退以及何时存储区引退率达到不可接受的水平。
背景技术
固态存储装置和其它数据存储媒体可能具有数据错误,数据错误可致使数据损坏。为了克服数据错误且避免数据损失,可使用错误校正码(“ECC”)技术来保护数据。ECC算法对数据操作且用以产生ECC,ECC通常存储且链接到用以产生ECC的数据。制造常常将使用存储器地址中的额外位来存储ECC。举例来说,存储器总线可为72位宽,其中64位专用于数据且8位专用于从所述64位数据产生的ECC。通常,72位将共同存储在存储器内的一行中。每一行则将通常具有8位用于ECC。
ECC技术可不仅检测位错误,而且也可校正位错误。当读取数据时,与数据一起存储的ECC由ECC算法使用以检测且校正位错误。对数据读取使用的ECC算法与用以产生ECC的ECC算法互补。通常,ECC算法可校正的位少于同一ECC算法可检测的位错误。在数据位集合内检测到的位错误数目通常称为位错误计数。
某些非易失性固态存储装置容易发生错误。当前的错误检测技术无法在存储元件经历不可校正的错误之前识别所述存储元件且使其引退或不再使用。
发明内容
从上述论述应明了,需要一种克服现有技术的缺陷且提供确定何时使存储区引退且何时存储区引退率达到不可接受水平的方式的设备、系统和方法。有益地,此设备、系统和方法将增加存储装置可靠性且防止不希望的出故障和数据损失。另外,所述设备、系统和方法将允许在存入较高的位错误计数时容许低位错误计数。
已鉴于此项技术的当前状态且特定来说,鉴于此项技术中尚未由当前可用的错误预测方案完全解决的问题和需要而开发本发明。因此,已开发本发明以提供克服此项技术中的许多或所有上文论述的缺点的用于确定固态存储装置状态的设备、系统和方法。
用以确定固态存储装置状态的设备具备多个模块,所述模块经配置以在功能上执行确定存储区何时将引退(即,退出服务)的必要步骤。在所描述的实施例中,这些模块包含确定模块、阈值模块、存储区错误模块和引退模块。
确定模块确定存储在ECC组块中的数据含有错误校正码(“ECC”)可校正错误,且进一步确定所述ECC组块的位错误计数。所述ECC组块源自非易失性固态存储媒体。阈值模块确定所述位错误计数满足ECC组块错误阈值。存储区错误模块确定含有所述ECC组块的至少一部分的存储区满足区引退准则。引退模块使含有所述ECC组块的至少一部分的所述存储区引退,所述存储区满足所述区引退准则。
在一个实施例中,所述ECC组块错误阈值包含位错误计数,所述位错误计数满足可接受的错误阈值且低于所述ECC组块的ECC可校正错误的最大数目。在另一实施例中,ECC组块的大小独立于固态存储媒体架构。在另一实施例中,所述设备包含错误存入模块,所述错误存入模块记录与含有具有满足所述ECC组块错误阈值的所述位错误计数的ECC组块的存储区的全部或一部分的识别符和与确定所述位错误计数相关联的时间指示符。
在一个实施例中,所述设备包含媒体错误预测模块,其监视存储区引退率;以及引退界限模块,其确定所述存储区引退率满足存储区引退阈值且在所述存储区引退率满足所述存储区引退阈值时发送通知。在另一实施例中,由所述引退模块引退的所述存储区跨越固态存储元件阵列的媒体元件,使得每一元件包含所述存储区的一部分且所述存储区的所述部分是并行存取的。
在一个配置中,所述固态存储媒体包括以二维阵列布置的若干固态存储器元件。每一元件包含若干物理擦除块(“PEB”),且PEB群组包含逻辑擦除块(“LEB”),其中每一LEB包含来自每一固态存储器元件的至少一个PEB。在所述配置中,数据存储在逻辑页中。所述逻辑页包含在LEB内的每一PEB中的物理页。同样在所述配置中,ECC组块包含来自逻辑页中的每一物理页的数据的至少一部分。
在一个实施例中,所述存储区包含ECC组块、多个ECC组块、页、跨越多个固态存储芯片的逻辑页、PEB、LEB、芯片、一行芯片、一列芯片和/或芯片上的裸片。在另一实施例中,区引退准则进一步包含基于与存储区相关联的一个或一个以上数据错误来确定所述存储区满足区引退准则,其中所述一个或一个以上数据错误是在读取操作、擦除操作和/或编程操作中的一者或一者以上期间检测。在另一实施例中,所述设备包含验证模块,所述验证模块验证由所述引退模块引退的所述被引退的存储区对于存储数据来说是不可靠的。在相关实施例中,所述验证模块响应于确定存储区满足被引退数据存储装置的容限阈值而使所引退的存储区可用于数据存储。在又一实施例中,所述验证模块允许在所述存储区错误模块确定所述存储区满足所述区引退准则之后在所述存储区中的数据存储。
在一个实施例中,所述设备包含干扰计数器,所述干扰计数器确定所述存储区的读取计数和/或编程计数。所述存储区错误模块响应于读取计数和/或写入计数满足干扰阈值而确定所述存储区未能满足所述区引退准则。在又一实施例中,所述存储区错误模块对具有满足所述干扰阈值的读取计数和/或编程计数的所述存储区进行标记。在另一实施例中,所述设备是包括包含所述非易失性固态媒体的固态存储装置的系统。在又一实施例中,所述系统包含经由总线和/或计算机网络与所述固态存储装置通信的计算机。
还呈现用于确定固态存储装置状态的本发明方法。在所揭示实施例中,所述方法大体上包含实施上文相对于所描述的设备和系统的操作而呈现的功能所必要的步骤。所述方法包含确定存储在ECC组块中的数据含有ECC可校正错误且确定所述ECC组块的位错误计数。所述ECC组块源自非易失性固态存储媒体。所述方法包含确定所述位错误计数满足ECC组块错误阈值;确定含有所述ECC组块的至少一部分的存储区满足区引退准则;以及使含有所述ECC组块的至少一部分的所述存储区引退,所述存储区满足所述区引退准则。
在一个实施例中,所述ECC组块错误阈值包含位错误计数,所述位错误计数满足可接受的错误阈值且低于所述ECC组块的ECC可校正错误的最大数目。在另一实施例中,所述方法包含记录与确定所述位错误计数相关联的时间指示符以及记录与含有具有满足所述ECC组块错误阈值的所述位错误计数的所述ECC组块的存储区的至少一部分的识别符。在另一实施例中,所述方法包含确定存储区引退率满足存储区引退阈值,所述存储区引退率是根据与存储区的每一引退相关联的所记录时间指示符来确定。在又一实施例中,所述方法包含针对存储区的每一读取操作和每一编程操作中的一者或一者以上而递增用于所述存储区的干扰计数器,其中响应于用于所述存储区的所述干扰计数器满足干扰阈值而不使满足区引退准则的引退区引退。
包含另一设备,其具有错误模块、存储区错误模块和引退模块。错误模块确定存储区具有一个或一个以上数据错误。所述存储区包含非易失性固态存储装置。所述错误模块包含ECC错误模块、阈值模块、擦除错误模块和编程错误模块。ECC错误模块确定存储在ECC组块中的数据含有可用ECC和相关联的ECC算法校正的错误,且进一步确定所述ECC组块的位错误计数,其中所述ECC组块源自非易失性固态存储媒体中的存储区。阈值模块通过确定所述位错误计数满足ECC组块错误阈值而确定所述ECC组块具有数据错误。擦除错误模块在擦除操作期间检测所述存储区中的数据错误,且编程错误模块在编程操作期间检测所述存储区中的数据错误。
存储区错误模块确定由所述错误模块确定为具有一个或一个以上数据错误的存储区满足区引退准则。引退模块使所述存储区引退,所述存储区满足所述区引退准则。在一个实施例中,所述设备包含重试模块,所述重试模块验证被引退的存储区具有一个或一个以上数据错误。最初由引退模块引退的所述存储区是基于所述存储区的所报告硬件错误。在另一实施例中,所述重试模块通过使用无用单元收集操作确定存储区是否具有一个或一个以上数据错误。所述无用单元收集操作至少包括对所述存储区执行擦除操作和在所述擦除操作期间检测一个或一个以上数据错误。
包含另一设备,其具有校正确定模块、校正阈值模块、存储区错误模块和块引退模块。校正确定模块确定存储在ECC组块中且含有错误的数据包含可使用块错误校正码(“ECC”)校正的若干错误。ECC组块位于包含非易失性固态存储装置的固态存储装置上。在另一实施例中,所述设备包含校正阈值模块,其响应于校正确定模块确定存储在ECC组块中的数据中的所述若干错误可校正而确定存储在ECC组块中的数据的错误数目是否超过ECC组块错误阈值。
在另一实施例中,所述设备包含存储区错误模块,其响应于校正阈值模块确定存储在ECC组块中的数据的错误数目超过ECC组块错误阈值而确定存储区内的数据错误是否满足区引退准则。所述存储区包含ECC组块的至少一部分且所述部分包含错误。在另一实施例中,所述设备包含块引退模块,其响应于存储区错误模块确定存储区内的错误满足区引退准则而将包含ECC组块的存储区置于被引退状态。被引退状态是其中存储区不用以存储数据的状态。
在一个实施例中,所述设备包含错误存入模块,其响应于存储区错误模块确定存储区内的错误满足区引退准则而记录与存储区错误模块确定存储区内的错误何时满足区引退准则相关联的时间指示符。在一个实例中,时间指示符包含时间戳、固态存储装置操作的时间、计数器、所完成命令的数目的指示符,或所执行操作的数目的指示符。在另一实例中,错误存入模块进一步记录引退存储区的位置。
在一个实施例中,所述设备包含装置错误预测模块,其确定何时存储区引退率已达到不可接受的水平。存储区引退率是根据由错误存入模块记录的时间指示符来确定。在又一实施例中,装置错误预测模块包含引退界限模块,其通过确定存储区被置于引退状态的比率已超过存储区引退阈值而确定存储区被置于引退状态的比率何时达到不可接受的水平。
在又一实施例中,装置错误预测模块包含引退曲线拟合模块,其使用曲线拟合算法和由错误存入模块记录的时间指示符来预测存储区被置于被引退状态的比率已达到不可接受的水平的时间。在又一实施例中,装置错误预测模块使用规则和试探法的组合来确定存储区引退率何时已达到不可接受的水平。
在一个实施例中,固态存储装置以物理擦除块(“PEB”)布置,其中PEB包含多个物理页且ECC组块包含物理页的至少一部分。在另一实施例中,固态存储装置包含以阵列布置的多个固态存储器芯片。每一芯片包含多个PEB,其中PEB群组包含逻辑擦除块(“LEB)且每一LEB包含来自每一芯片的至少一个PEB。在所述实施例中,数据以虚拟或逻辑页存储,且逻辑页包含包括LEB的每一PEB中的物理页,且ECC组块包含来自逻辑页中的每一物理页的数据的至少一部分。(术语虚拟页和逻辑页在本文中可互换使用。)在又一实施例中,存储区包含LEB内的PEB中的每一者的至少一部分。在又一实施例中,存储区包含至少一PEB。
在一个实施例中,区引退准则包含引退阈值,其包含存储区内的所允许错误数目。在另一实施例中,存储区错误模块通过确定存储在ECC组块中的数据中的错误数目超过ECC组块错误阈值来确定存储区内的数据错误是否满足区引退准则。在另一实施例中,存储区包含与邻近于ECC组块的存储装置组合的ECC组块,且存储区错误模块通过确定邻近于ECC组块的存储装置内的错误和ECC组块内的错误满足区引退准则来确定存储区内的数据错误是否满足区引退准则。
在又一实施例中,设备包含ECC测试模块,其对邻近于ECC组块的一个或一个以上ECC组块运行ECC分析以确定邻近的存储装置具有错误。在另一实施例中,错误存入模块进一步记录被引退存储区的位置,且设备包含错误分析模块,所述错误分析模块通过检查被引退存储区的位置以确定是否存在任何被引退存储区邻近于ECC组块来确定邻近的存储装置是否具有错误。
在另一实施例中,区引退准则可包含以下各项中的一者或一者以上:存储装置的一列内的错误的阈值数目,其中ECC组块和邻近的存储装置包括存储装置的所述列;存储装置的一行内的错误的阈值数目,其中ECC组块和邻近的存储装置包括存储装置的所述行;以及ECC组块和邻近的存储装置中的一者或一者以上内群集在一起的错误的阈值数目。
在一个实施例中,设备包含干扰计数器模块,其跟踪每一读取操作和写入/编程操作中的一者或一者以上的存储位置和存储位置中的每一者处的读取和写入的数目。(“写入”和“编程”在本文中可互换使用,然而给定上下文所需的术语可依据存储媒体所支持的操作而变化。)在所述实施例中,区引退准则的部分包含干扰准则,其中用于存储区错误模块确定存储区内的数据错误不满足区引退准则的因素是确定邻近于ECC组块的至少一个存储位置中的读取和写入的数目已超过干扰准则。
在另一实施例中,存储区可包含以下各项中的一者或一者以上:ECC组块、多个ECC组块、物理页、跨越多个固态存储芯片的虚拟页、PEB、LEB、芯片、一行芯片、一列芯片和芯片上的裸片。在另一实施例中,存储区包含芯片且设备包含芯片更换模块,其响应于芯片的引退而更换芯片。在又一实施例中,更换芯片包含正被更换的芯片上的数据的副本。在又一实施例中,更换芯片包含作为写入到布置于阵列中的每一芯片的数据的异或(“XOR”)的数据,其中来自阵列中的每一芯片的数据经并行存取。在又一实施例中,更换芯片包含从奇偶性条带导出的数据,其中固态存储装置包括呈独立驱动冗余阵列(“RAID”)的存储装置。
在一个实施例中,区引退准则进一步包括硬错误准则且设备包含硬错误检测模块,其分析存储区内的错误的位置以确定错误位置是否指示满足硬错误准则的硬件故障。在又一实施例中,硬错误检测模块通过确定存储区中的错误的位置包含具有超过预定错误数目的错误数目的一行、一列和/或一存储子区来确定存储区包含硬错误。在又一实施例中,存储区包含芯片且设备包含芯片更换模块,其用更换芯片来更换包括由硬错误检测模块确定为满足硬度错误准则的存储区的芯片。
在一个实施例中,区引退准则包含擦除错误准则,且确定存储区内的数据错误是否满足区引退阈值包含对包括存储区的擦除块进行标记以用于无用单元收集。在所述实施例中,设备包含无用单元收集恢复模块,其将有效数据从擦除块复制到固态存储装置中当前正写入数据的位置,擦除擦除块,且确定经擦除块内的至少存储区中的任何错误是否满足擦除错误准则。
在所述实施例中,设备包含擦除错误引退模块,其响应于无用单元收集恢复模块确定擦除块内的至少存储区中的错误满足擦除错误准则而使擦除块内的至少存储区引退,记录被引退的存储装置的位置,和与引退存储装置相关联的时间指示符。
在另一实施例中,区引退准则包含编程错误准则,且设备包含写入错误模块,其确定由对固态存储装置内的存储装置进行编程产生的错误是否满足编程错误准则。在所述实施例中,所述设备包含写入错误引退模块,其响应于写入错误模块确定由对存储装置进行编程产生的错误满足编程错误准则而使经编程存储装置内的至少一存储区引退,且记录被引退存储装置的位置和与引退存储装置相关联的时间指示符。
还呈现本发明的系统以确定固态存储装置状态。系统可由一个或一个以上固态存储装置体现,其中每一固态存储装置包含非易失性固态存储装置。特定来说,在一个实施例中,所述系统包含校正确定模块、校正阈值模块、存储区错误模块和引退模块,其大体上类似于上文描述的模块。
系统可进一步包含经由总线和计算机网络中的一者与固态存储装置中的一者或一者以上通信的计算机。在又一实施例中,固态存储装置中的一者或一者以上驻存在计算机内。
还呈现用于确定固态存储装置状态的本发明的另一方法。所揭示的实施例中的方法大体上包含实施上文相对于所描述的设备和系统的操作而呈现的功能所必要的步骤。在一个实施例中,所述方法包含确定存储在ECC组块中且含有错误的数据是否包括可使用块ECC来校正的若干错误,其中ECC组块位于包括非易失性固态存储装置的固态存储装置上。响应于确定存储在ECC组块中的数据中的所述若干错误可校正,所述方法包含确定存储在ECC组块中的数据中的错误数目是否超过ECC组块错误阈值。
所述方法包含响应于确定存储在ECC组块中的数据中的错误数目超过ECC组块错误阈值而确定存储区内的数据错误是否满足区引退准则。存储区包含ECC组块的至少一部分且所述部分包含错误。所述方法包含响应于确定存储区内的错误满足区引退准则而将包括ECC组块的存储区置于被引退状态。被引退状态是其中存储区不用以存储数据的状态。
在又一实施例中,所述方法包含响应于确定存储区内的错误满足区引退准则而记录与确定存储区中的错误满足区引退准则相关联的时间指示符。在另一实施例中,所述方法包含确定存储区引退率何时已达到不可接受的水平。存储区引退率是根据所记录的时间指示符来确定。在另一实施例中,所述方法包含通过确定存储在ECC组块中的数据中的错误数目超过ECC组块错误阈值来确定存储区内的数据错误是否满足区引退准则。在另一实施例中,存储区包含与邻近于ECC组块的存储装置组合的ECC组块,且所述方法进一步包含通过确定邻近于ECC组块的存储装置内的错误和ECC组块内的错误满足区引退准则而确定存储区内的数据错误是否满足区引退准则。
整个本说明书中对特征、优点或类似语言的参考不暗示用本发明可实现的所有特征和优点均应为本发明的任一单个实施例或在任一单个实施例中。事实上,提到所述特征和优点的语言应理解为是指结合实施例而描述的特定特征、优点或特性包含在本发明的至少一个实施例中。因此,整个本说明书中对特征和优点的论述以及类似语言可但不一定指代同一实施例。
此外,本发明的所描述特征、优点和特性可在一个或一个以上实施例中以任何合适方式组合。相关领域的技术人员将认识到,可在没有特定实施例的具体特征或优点中的一者或一者以上的情况下实践本发明。在其它情况下,可在某些实施例中辨识出可能不存在于本发明的所有实施例中的额外特征和优点。
本发明的这些特征和优点可从以下描述和所附权利要求书中更完全地明白,或可通过下文陈述的本发明的实践而习得。
附图说明
为了将容易理解本发明的优点,将通过参考附图中所说明的具体实施例来再现上文简要描述的本发明的较特定描述。通过理解这些图仅描绘本发明的典型实施例且因此不应视为限制本发明的范围,将通过使用附图用额外特殊性和细节来描述和阐释本发明,附图中:
图1是说明根据本发明的用于预测固态存储装置中的故障的系统的一个实施例的示意性框图;
图2是说明根据本发明的固态存储装置的一个实施例的示意性框图;
图3A是说明根据本发明的用于预测固态存储装置中的故障的设备的一个实施例的示意性框图;
图3B是说明根据本发明的ECC组块的一个实施例的示意性框图;
图3C是说明根据本发明的ECC组块的另一实施例的示意性框图;
图4是说明根据本发明的用于预测固态存储装置中的故障的设备的替代实施例的示意性框图;
图5是说明根据本发明的用于预测固态存储装置中的故障的方法的一个实施例的示意性流程图;
图6是说明根据本发明的用于使用无用单元收集来预测固态存储装置中的故障的方法的替代实施例的示意性流程图;
图7是说明根据本发明的无用单元收集方法的一个实施例的示意性流程图;
图8是说明根据本发明的编程操作方法的一个实施例的示意性流程图;以及
图9是说明根据本发明的用于预测固态存储装置中的故障的方法的另一替代实施例的示意性流程图。
具体实施方式
本说明书中所描述的功能单元中的许多已经标记为模块,以便更特定地强调其实施独立性。举例来说,模块可实施为硬件电路,包括定制VLSI电路或门阵列、例如逻辑芯片、晶体管等现有半导体,或其它离散组件。模块也可以可编程硬件装置来实施,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑装置或类似装置。
模块也可以软件来实施以供各种类型的处理器执行。可执行代码的经识别模块可例如包括计算机指令的一个或一个以上物理或逻辑块,所述物理或逻辑块可例如组织为对象、过程或函数。然而,经识别模块的可执行件无需物理上定位在一起,而是可包括存储在不同位置中的完全不同的指令,所述指令在逻辑上联合在一起时构成模块且实现所述模块的既定目的。
事实上,可执行代码的模块可为单个指令或许多指令,且可甚至分布于若干不同代码段上、不同程序之间和若干存储器装置上。类似地,操作数据可在本文中在模块内识别和说明,且可以任何合适形式体现且在任何合适类型的数据结构内组织。操作数据可经收集为单个数据集合,或可分布于不同位置上,包含不同存储装置上。在模块或模块的若干部分以软件实施的情况下,软件部分存储在一个或一个以上计算机可读媒体上。
整个本说明书中对“一个实施例”、“一实施例”或类似语言的参考是指结合实施例而描述的特定特征、结构或特性包含在本发明的至少一个实施例中。因此,整个本说明书中短语“在一个实施例中”、“在一实施例中”或类似语言的出现可(但不一定)全部指代同一实施例。
对计算机可读媒体的参考可采取能够在数字处理设备上存储机器可读指令的任何形式。计算机可读媒体可由传输线、压缩盘、数字视频盘、磁带、伯努利驱动器、磁盘、打孔卡、快闪存储器、集成电路或其它数字处理设备存储器装置体现。
此外,所描述的本发明的特征、结构或特性可在一个或一个以上实施例中以任何合适方式组合。在以下描述中,提供众多具体细节,例如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的实例,以提供对本发明实施例的彻底理解。然而,所属领域的技术人员将认识到,本发明可在没有所述具体细节中的一者或一者以上的情况下实践,或用其它方法、组件、材料等等来实践。在其它情况下,未详细展示或描述众所周知的结构、材料或操作以避免混淆本发明的各方面。
本文包含的示意性流程图一般陈述为逻辑流程图。由此,所描绘的次序和所标记的步骤指示所呈现方法的一个实施例。可想到在功能、逻辑或效果上等效于所说明方法的一个或一个以上步骤或其部分的其它步骤和方法。另外,提供所采用的格式和符号以阐释方法的逻辑步骤,且应理解为不限制方法的范围。虽然在流程图中可能采用各种箭头类型和线条类型,但其应理解为不限制对应方法的范围。事实上,可使用一些箭头或其它连接符来仅指示方法的逻辑流程。举例来说,箭头可指示所描绘方法的所列举步骤之间的未指定持续瞬间的等待或监视周期。另外,特定方法发生的次序可严格遵从或可不严格遵从所展示的对应步骤的次序。
固态存储系统
图1是说明根据本发明的用于预测固态存储装置中的故障的系统100的一个实施例的示意性框图。系统100包含固态存储装置102、固态存储控制器104、固态存储媒体110、计算机112、一个或一个以上客户端114,以及计算机网络116,其在下文描述。
系统100包含至少一个固态存储装置102。在另一实施例中,系统100包含两个或两个以上固态存储装置102。每一固态存储装置102可包含非易失性固态存储媒体110,例如快闪存储器、纳米随机存取存储器(“纳米RAM或NRAM”)、磁阻RAM(“MRAM”)、动态RAM(“DRAM”)、相变RAM(“PRAM”)等。相对于图2更详细地描述固态存储装置102。固态存储装置102经描绘为在计算机112中通过计算机网络116连接到客户端114。在一个实施例中,计算机112包含至少一个客户端114。计算机112中的客户端114可为应用程序、服务器(例如文件服务器)或在计算机112的操作系统上运行的其它程序。
在一个实施例中,固态存储装置102在计算机112的内部且使用系统总线来连接,所述系统总线例如为外围组件互连扩充(“PCI-e”)总线、串行高级技术附件(“串行ATA”)总线等。在另一实施例中,固态存储装置102在计算机112的外部且使用通用串行总线(“USB”)连接、电气电子工程师协会(“IEEE”)1394总线(“FireWire”)等来连接。在其它实施例中,固态存储装置102使用外围组件互连(“PCI”)扩充总线连接到计算机112,所述PCI扩充总线使用外部电或光总线扩展或总线联网解决方案,例如Infiniband或PCI扩充高级切换(“PCIe-AS”)等。
在各种实施例中,固态存储装置102可呈双列直插存储器模块(“DIMM”)、子卡或微型模块的形式。在另一实施例中,固态存储装置102是机架安装的刀片内的元件。在另一实施例中,固态存储装置102包含在直接集成到较高级组合件(例如,母板、膝上型计算机、图形处理器)上的封装内。在另一实施例中,包括固态存储装置102的个别组件在无需中间封装的情况下直接集成到较高级组合件上。固态存储装置102包含一个或一个以上固态存储控制器104且各自包含固态存储媒体110,其在下文相对于图2更详细地描述。
系统100包含连接到固态存储装置102的一个或一个以上计算机112。计算机112可为主机、服务器、刀片、存储区域网络(“SAN”)的存储控制器、工作站、个人计算机、膝上型计算机、手持式计算机、超级计算机、计算机群集、网络交换机、路由器、或器具、数据库或存储器具、数据采集或数据俘获系统、诊断系统、测试系统、机器人、便携式电子装置、无线装置等。在另一实施例中,计算机112可为客户端,且固态存储装置102自主操作以服务从计算机112发送的数据请求。在此实施例中,计算机112和固态存储装置102可使用适合于计算机112与自主固态存储装置102之间的连接的计算机网络、系统总线或其它通信构件来连接。
在一个实施例中,系统100包含一个或一个以上客户端114,其通过一个或一个以上计算机网络116连接到一个或一个以上计算机112。客户端114可为主机、服务器、SAN的存储控制器、工作站、个人计算机、膝上型计算机、手持式计算机、超级计算机、计算机群集、网络交换机、路由器、或器具、数据库或存储器具、数据采集或数据俘获系统、诊断系统、测试系统、机器人、便携式电子装置、无线装置等。计算机网络116可包含因特网、广域网(“WAN”)、城域网(“MAN”)、局域网(“LAN”)、权标环、无线网络、光纤通道网络、SAN、网络附接存储装置(“NAS”)、ESCON等,或网络的任何组合。计算机网络116也可包含来自IEEE 802网络技术家族的网络,例如以太网、权标环、WiFi、WiMax等。
计算机网络116可包含服务器、交换机、路由器、电缆连接、无线电和其它设备,用以促进将计算机112和客户端114联网。在一个实施例中,系统100包含经由计算机网络116作为同级通信的多个计算机112。在另一实施例中,系统100包含经由计算机网络116作为同级通信的多个固态存储装置102。所属领域的技术人员将认识到其它计算机网络116,包括在一个或一个以上客户端114之间具有单个或冗余连接的一个或一个以上计算机网络116和相关设备,或具有一个或一个以上固态存储装置102的其它计算机或连接到一个或一个以上计算机112的一个或一个以上固态存储装置102。在一个实施例中,系统100包含两个或两个以上固态存储装置102,其在无计算机112的情况下通过计算机网络116连接到客户端114。
固态存储装置
图2是说明根据本发明的在固态存储装置102中的固态存储装置控制器202的一个实施例201的示意性框图。固态存储装置控制器202可包含若干固态存储控制器0-N104a-n,其各自控制固态存储媒体110。在所描绘的实施例中,展示两个固态控制器:固态存储控制器0104a和固态存储控制器N 104n,且其各自控制固态存储媒体110a-n。在所描绘的实施例中,固态存储控制器0104a控制数据通道,使得附接的固态存储媒体110a存储数据。固态存储控制器N 104n控制与所存储的数据相关联的索引元数据通道,且相关联的固态存储媒体110n存储索引元数据。在替代实施例中,固态存储装置控制器202包含具有单个固态存储媒体110a的单个固态存储控制器104a。在另一实施例中,存在多个固态存储控制器104a-n和相关联的固态存储媒体110a-n。在一个实施例中,耦合到其相关联的固态存储媒体110a-110n-1的一个或一个以上固态存储控制器104a-104n-1控制数据,同时耦合到其相关联的固态存储媒体110n的至少一个固态存储控制器104n控制索引元数据。
在一个实施例中,至少一个固态存储控制器104是现场可编程门阵列(“FPGA”)且控制器功能被编程到FPGA中。在特定实施例中,FPGA是XilinxFPGA。在另一实施例中,固态存储控制器104包括特定设计为固态存储控制器104的组件,例如专用集成电路(“ASIC”)或定制逻辑解决方案。每一固态存储控制器104通常包含写入数据管线和读取数据管线,其在大卫·弗林(David Flynn)等人在2007年12月6日申请的题目为“用于使用数据管线管理数据的设备、系统和方法(Apparatus,System,and Methodfor Managing Data Using a Data Pipeline)”的第11/952,091号美国专利申请案中进一步描述,所述美国专利申请案以引用的方式并入本文。在另一实施例中,至少一个固态存储控制器104由组合FPGA、ASIC和定制逻辑组件构成。
固态存储装置
在一个实施例中,固态存储媒体110是非易失性固态存储元件216、218、220的二维阵列,所述存储元件布置在库214中且通过存储输入/输出(“I/O”)总线210并行存取。在另一实施例中,固态存储媒体110是例如芯片等单个固态存储元件(例如214a)。在一个实施例中,存储I/O总线210能够在任何一个时间进行单向通信。在另一实施例中,数据可同时在两个方向上流动。
固态存储元件(例如SSS 0.0 216a)通常经配置为电路板上的芯片(一个或一个以上裸片的封装)或裸片。如所描绘,即使这些若干存储元件216、218、220一起封装在芯片封装、芯片封装堆叠或某一其它封装元件中,固态存储元件(例如,216a)也独立或半独立于其它固态存储元件(例如218a)而操作。如所描绘,库214包括一列固态存储元件216、218、220。如所描绘,在固态存储媒体110中的n x m固态存储元件216、218、220的阵列中,可存在“n”个库214a-n且每个库可存在“m”个固态存储元件216a-m、218a-m、220a-m。在一个实施例中,固态存储媒体110a包含每库二十个固态存储元件(例如,库214a中的216a-m、库214b中的218a-m、库214n中的220a-m,其中m=22),且有八个库(例如,214a-n,其中n=8),且固态存储媒体110n包含每库214 2个固态存储元件(例如,216a-m,其中m=2),且有一个库214a。在一个实施例中,每一固态存储元件216a-m、218a-m、220a-m包含单电平单元(“SLC”)存储装置。在另一实施例中,每一固态存储元件216a-m、218a-m、220a-m包含多电平单元(“MLC”)存储装置。
在一个实施例中,用于共享一共同存储I/O总线210a行(例如,216b、218b、220b)的多个库214的固态存储元件封装在一起。在一个实施例中,固态存储元件216、218、220可每芯片具有一个或一个以上裸片,其中一个或一个以上芯片垂直堆叠且每一裸片可被独立存取。在另一实施例中,固态存储元件(例如,SSS 0.0 216a)可每裸片具有一个或一个以上虚拟裸片和每芯片一个或一个以上裸片,且一个或一个以上芯片垂直堆叠,且每一虚拟裸片可被独立存取。在另一实施例中,固态存储元件SSS 0.0 216a可每裸片具有一个或一个以上虚拟裸片和每芯片一个或一个以上裸片,其中所述一个或一个以上裸片中的一些或全部垂直堆叠且每一虚拟裸片可被独立存取。存储控制总线212上的启用、芯片选择或其它选择线可经选择以启用向单个虚拟裸片、裸片、堆叠芯片等的数据传送。
在一个实施例中,两个裸片垂直堆叠,其中每群组四个堆叠,从而形成八个固态存储元件(例如,SSS 0.0-SSS 0.8)216a-220a,其各自在单独的库214a-n中。在另一实施例中,20个存储元件(例如,SSS 0.0-SSS 20.0)216形成虚拟库214a,使得八个虚拟组中的每一者具有20个固态存储元件(例如,SSS 0.0-SSS 20.8)216、218、220。经由到特定群组的固态存储元件(SSS 0.0-SSS 0.8)216a、218a、220a的所有存储元件的存储I/O总线210将数据发送到固态存储媒体110。存储控制总线212a用以选择特定库(例如,库-0 214a),使得经由连接到所有库214的存储I/O总线210接收的数据仅写入到选定的库214a。
在一个实施例中,存储I/O总线210包含一个或一个以上独立I/O总线(“IIOBa-m”,包括210a.a-m、210n.a-m),其中每一行内的固态存储元件共享独立I/O总线中的一者,并行地存取每一固态存储元件216、218、220以使得所有库214被同时存取。举例来说,存储I/O总线210的一个通道可同时存取每一库214a-n的第一固态存储元件216a、218a、220a。存储I/O总线210的第二通道可同时存取每一库214a-n的第二固态存储元件216b、218b、220b。每一行固态存储元件216、218、220被同时存取。在一个实施例中,在固态存储元件216、218、220为多电平(物理堆叠)的情况下,固态存储元件216、218、220的所有物理层级被同时存取。如本文所使用,“同时”还包含几乎同时的存取,其中以稍微不同的间隔存取装置以避免切换噪声。在此上下文中使用的“同时”区别于其中命令和/或数据是相继地个别发送的连续或串行存取。
通常,使用存储控制总线212独立地选择库214a-n。在一个实施例中,使用芯片启用或芯片选择来选择库214。在芯片选择和芯片启用可用的情况下,存储控制总线212可使用芯片选择和/或芯片启用的组合来选择多电平固态存储元件216、218、220的一个电平。在其它实施例中,存储控制总线212使用其它命令来个别地选择多电平固态存储元件216、218、220的一个电平。也可通过在存储I/O总线210和存储控制总线212上传输的控制和地址信息的组合来选择固态存储元件216、218、220。
在一个实施例中,每一固态存储元件216、218、220经分割为若干擦除块且每一擦除块经分割为若干页。典型的物理页(或简称为“页”)是2000字节(“2kB”)。在一个实例中,固态存储元件(例如,SSS 0.0216a)包含两个寄存器且可编程两页,使得二寄存器固态存储元件216、218、220具有4kB的容量。20个固态存储元件216、218、220的库214则将具有用退出存储I/O总线210的通道的同一地址而存取的80kB的页容量。
80kB的固态存储元件216、218、220的库214中的此页群组可称为虚拟页。类似地,库214a的每一存储元件216a-m的擦除块可经分组以形成虚拟擦除块。在一个实施例中,当在固态存储元件216、218、220内接收到擦除命令时,擦除固态存储元件216、218、220内的页的擦除块。虽然固态存储元件216、218、220内的擦除块、页、平面或其它逻辑和物理分区的大小和数目预期随着技术进步而随着时间改变,但预期与新配置一致的许多实施例是可能的且与本文的一般描述一致。
通常,当将包写入到固态存储元件216、218、220内的特定位置时,其中所述包既定写入到特定库214的特定元件的特定擦除块专有的特定页内的位置,物理地址在存储I/O总线210上发送且后面为所述包。所述物理地址含有足够信息用于固态存储元件216、218、220将包引导到页内的指定位置。由于一行固态存储元件(例如,SSS 0.0-SSS 0.N216a、218a、220a)中的所有存储元件是通过存储I/O总线210a.a内的适当总线被同时存取以到达适当页,且避免将数据包写入到所述行固态存储元件(例如,SSS 0.0-SSS 0.N216a、218a、220a)中经类似寻址的页,所以包含具有将写入数据包的正确页的固态存储元件SSS 0.0 216a的库214a是由存储控制总线212同时选择的。
类似地,在存储I/O总线210上行进的读取命令需要存储控制总线212上的同时命令来选择单个库214a和所述库214a内的适当页。在一个实施例中,读取命令读取整个页,且因为在库214中存在并联的多个固态存储元件216、218、220,所以用读取命令读取整个虚拟页。然而,读取命令可分解为若干子命令。也可在写入/编程操作中存取虚拟页。
擦除块擦除命令可经由存储I/O总线210发送出以擦除擦除块,其具有特定擦除块地址以擦除特定擦除块。通常,擦除块擦除命令可经由存储I/O总线210的并行路径发送以擦除虚拟擦除块,每一者具有特定擦除块地址以擦除特定擦除块。同时,经由存储控制总线212选择特定库(例如,库-0214a)以防止擦除所有库(库1-N 214b-n)中经类似寻址的擦除块。也可使用存储I/O总线210与存储控制总线212的组合来将其它命令发送到特定位置。所属领域的技术人员将认识到使用双向存储I/O总线210与存储控制总线212来选择特定存储位置的其它方式。
在一个实施例中,包被循序写入到固态存储媒体110。举例来说,包被串流到存储元件216的库214a的存储写入缓冲器且当缓冲器充满时,将包编程到指定虚拟页。包随后再填充存储写入缓冲器且当充满时,将包写入到下一虚拟页。下一虚拟页可在同一库214a或另一库(例如214b)中。此过程逐个虚拟页地继续,通常直到填满虚拟擦除块为止。在另一实施例中,串流可随着过程继续而跨越虚拟擦除块边界逐个虚拟擦除块地继续。
对象索引维持逻辑识别符之间的映射,逻辑识别符例如为文件名、对象识别符、逻辑块地址或其它逻辑结构,和数据在固态存储媒体110中存储的物理地址。在一个实施例中,对象索引不映射对象,而是映射其它逻辑结构。一个或一个以上物理地址被映射到与从客户端114或其它请求装置接收的数据相关联的逻辑识别符。对象存储和映射在大卫·弗林(David Flynn)等人在2007年12月12日申请的题目为“用于服务存储控制器内的对象请求的设备、系统和方法(Apparatus,System,and Method for ServicingObject Requests Within A Storage Controller)”的第11/952,098号美国申请案和大卫·弗林等人在2008年4月6日申请的题目为“用于将存储请求转换为附加数据存储命令的设备、系统和方法(Apparatus,System,and Method for Converting a Storage Request into anAppend Data Storage Command)”的第12/098,433号美国申请案和大卫·弗林等人同样在2008年4月6日申请的题目为“用于虚拟和物理地址的有效映射的设备、系统和方法(Apparatus,System,and Method for Efficient Mapping of Virtual and PhysicalAddresses)”的第12/098,434号美国申请案中更详细地论述,所述美国申请案全部以引用的方式并入本文。
在读取、修改、写入操作中,与对象或其它逻辑结构相关联的数据包经定位且在读取操作中读取。经修改对象或已经修改的逻辑结构的数据段不写入到其被读取的位置。而是经修改数据段再次转换为数据包且随后写入到当前正被写入的虚拟页中的下一可用位置。用于相应数据包的对象索引条目经修改以指向含有经修改数据段的包。用于与尚未经修改的同一对象或逻辑结构相关联的数据包的对象索引中的条目将包含指向未经修改数据包的原始位置的指针。因此,如果维持原始对象(或逻辑结构)(例如)以维持对象的先前版本,那么原始对象将在对象索引中具有指向原始写入的所有数据包的指针。新对象将在对象索引中具有指向原始数据包中的一些的指针和指向当前正被写入的虚拟页中的经修改数据包的指针。
在复制操作中,对象索引包含用于映射到存储在固态存储媒体110中的若干包的原始对象或其它逻辑结构的条目。当进行复制时,产生新逻辑结构且在对象索引中产生将新逻辑结构映射到原始包的新条目。新逻辑结构也被写入到固态存储媒体110,其中其位置映射到对象索引中的新条目。新逻辑结构包可用以识别原始逻辑结构内的在原始逻辑结构中已做出改变且所述改变尚未传播到副本且对象索引未被丢弃或被破坏的情况下所参考的包。在另一实施例中,对象索引包含用于逻辑块的逻辑条目。
循序地写入包有利地促进固态存储媒体110的较均匀的使用,且允许固态存储装置控制器202监视固态存储媒体110中的各种虚拟页的存储热点和电平使用。循序地写入包还促进了强大、有效的无用单元收集系统。
系统100可包括类似于日志结构文件系统的所谓的日志结构存储系统或日志结构阵列,且数据存储的次序可用以重新产生索引。通常,包含逻辑到物理映射的索引存储在易失性存储器中。如果索引被破坏或丢失,那么可通过以数据曾被写入的次序遍历固态存储媒体110来重构索引。在逻辑擦除块(“LEB”)内,通常通过填充第一逻辑页、接着第二逻辑页等来循序地存储数据,直到LEB填满为止。固态存储控制器104随后选择另一LEB且过程重复。通过维持LEB曾被写入的次序且通过知晓每一LEB是循序写入的,可通过以从开始到末尾的次序遍历固态存储媒体110来重建索引。在其它实施例中,如果索引的一部分存储在非易失性存储器中,例如固态存储媒体110上,那么固态存储控制器104可仅需要重放固态存储媒体110的一部分以重建索引的未存储在非易失性存储器中的一部分。所属领域的技术人员将认识到数据包的连续存储的其它益处。
固态存储装置控制器
在各种实施例中,固态存储装置控制器202还包含数据总线204、局部总线206、缓冲器控制器208、缓冲器0-N 222a-n、主装置控制器224、直接存储器存取(“DMA”)控制器226、存储器控制器228、动态存储器阵列230、静态随机存储器阵列232、管理控制器234、管理总线236、到系统总线240的桥接器238,和杂项逻辑242,其在下文描述。在其它实施例中,系统总线240耦合到一个或一个以上网络接口卡(“NIC”)244,其中一些可包含远程DMA(“RDMA”)控制器246、一个或一个以上中央处理单元(“CUP”)248、一个或一个以上外部存储器控制器250和相关联的外部存储器阵列252、一个或一个以上存储控制器254、对等控制器256以及专用处理器258,其在下文描述。连接到系统总线240的组件244-258可位于计算机112中或可为其它装置。
通常,固态存储控制器104经由存储I/O总线210将数据传送到固态存储媒体110。在其中固态存储装置布置在库214中且每一库214包含并行存取的多个固态存储元件216、218、220的典型实施例中,存储I/O总线210是总线阵列,跨越库214的每一行固态存储元件216、218、220对应一条总线。如本文所使用,术语“存储I/O总线”可指代一个存储I/O总线210或数据无关总线204的阵列。在一个实施例中,存取一行固态存储元件(例如,216a、218a、220a)的每一存储I/O总线210可包含用于在一行固态存储元件216a、218a、220a中进行存取的存储分区(例如,擦除块)的逻辑到物理映射。此映射允许在第一存储分区出故障、部分出故障、不可存取或具有某一其它问题的情况下将映射到存储分区的物理地址的逻辑地址重新映射到不同的存储分区。
数据也可从请求装置155通过系统总线240、桥接器238、局部总线206、缓冲器22且最终经由数据总线204传送到固态存储控制器104。数据总线204通常连接到用缓冲器控制器208控制的一个或一个以上缓冲器222a-n。缓冲器控制器208通常控制数据从局部总线206向缓冲器222且通过数据总线204到管线输入缓冲器和输出缓冲器的传送。缓冲器控制器208通常控制来自请求装置的数据如何可临时存储在缓冲器222中且随后传送到数据总线204上(或反之亦然)以考虑不同时钟域、防止数据冲突等。缓冲器控制器208通常结合主装置控制器224工作以协调数据流。在数据到达时,数据将到达系统总线240上,通过桥接器238传送到局部总线206。
通常,数据在主装置控制器224和缓冲器控制器208的引导下从局部总线206传送到一个或一个以上数据缓冲器222。数据随后通过固态存储控制器104流出缓冲器222到数据总线204,且到达例如NAND快闪或其它存储媒体等固态存储媒体110。在一个实施例中,数据和随数据一起到达的相关联的带外元数据(例如对象元数据)是使用一个或一个以上数据通道来传送,所述数据通道包括一个或一个以上固态存储控制器104a-104n-1和相关联的固态存储媒体110a-110n-1,同时至少一个通道(固态存储控制器104n、固态存储媒体110n)专用于带内元数据,例如索引信息和在固态存储装置102内部产生的其它元数据。
局部总线206通常为双向总线或总线集合,其允许在固态存储装置控制器202内部的装置之间以及固态存储装置102内部的装置与连接到系统总线240的装置244-258之间传送数据和命令。桥接器238促进了局部总线206与系统总线240之间的通信。所属领域的技术人员将认识到总线240、206、204、210和桥接器238的其它实施例,例如环形结构或切换式星形配置和功能。
系统总线240通常是计算机112或其中安装或连接了固态存储装置102的其它装置的总线。在一个实施例中,系统总线240可为PCI-e总线、串行高级技术附件(“串行ATA”)总线、并行ATA等。在另一实施例中,系统总线240是外部总线,例如小计算机系统接口(“SCSI”)、FireWire、光纤通道、USB、PCIe-AS等。固态存储装置102可经封装以在内部配合到装置或作为外部连接的装置而配合。
固态存储装置控制器202包含主装置控制器224,其控制固态存储装置102内的较高级功能。在各种实施例中,主装置控制器224通过解译对象请求和其它请求来控制数据流,引导索引的产生以将对象识别符或与数据相关联的其它逻辑识别符映射到相关联数据的物理位置,协调DMA请求等。本文描述的功能中的许多功能由主装置控制器224完全或部分控制。
在一个实施例中,主装置控制器224使用嵌入式控制器。在另一实施例中,主装置控制器224使用局部存储器,例如动态存储器阵列230(动态随机存取存储器“DRAM”)、静态存储器阵列232(静态随机存取存储器“SRAM”)等。在一个实施例中,使用主装置控制器224来控制局部存储器。在另一实施例中,主装置控制器224经由存储器控制器228存取局部存储器。在另一实施例中,主装置控制器224运行哩纳克斯(Linux)服务器,且可支持各种常见服务器接口,例如万维网、超文本标记语言(“HTML”)等。在另一实施例中,主装置控制器224使用纳米处理器。主装置控制器224可使用可编程或标准逻辑或上文列出的控制器类型的任何组合来构造。所属领域的技术人员将认识到主装置控制器224的许多实施例。
在一个实施例中,在固态存储装置控制器202管理多个固态存储媒体110a-n的情况下,主装置控制器224在例如固态存储控制器104a-n等内部控制器之间划分工作负载。举例来说,主装置控制器224可划分待写入到数据存储装置(例如固态存储媒体110a-n)的对象(或其它逻辑结构),使得对象的一部分存储在所附接的数据存储装置中的每一者上。此特征是性能增强,其允许对象的更快存储和存取。在一个实施例中,主装置控制器224是使用FPGA来实施。在另一实施例中,主装置控制器224内的固件可通过管理总线236、经由网络连接到NIC 244的系统总线240或连接到系统总线240的其它装置来更新。
在一个实施例中,管理对象或其它逻辑结构的主装置控制器224仿真块存储以使得计算机112或连接到固态存储装置102的其它装置将固态存储装置102视为块存储装置,且将数据发送到固态存储装置102中的特定物理地址。主装置控制器224随后划分块且将数据块存储为对象或其它逻辑结构。主装置控制器224随后将块和随块一起发送的物理地址映射到由主装置控制器224确定的实际位置。所述映射存储在索引中。通常,为了块仿真,在计算机112、客户端114或希望将固态存储装置102用作块存储装置的其它装置中的驱动程序中提供块装置应用编程接口(“API”)。
在另一实施例中,主装置控制器224与NIC控制器244和嵌入式RDMA控制器246协调以准时地递送数据和命令集合的RDMA传送。NIC控制器244可隐藏在非透明端口之后以使得能够使用定制驱动程序。而且,客户端114上的驱动程序可通过使用标准堆栈API且结合NIC 244操作的I/O存储器驱动程序来接入计算机网络118。
在一个实施例中,主装置控制器224还是独立驱动冗余阵列(“RAID”)控制器。在数据存储装置/固态存储装置102与一个或一个以上其它数据存储装置/固态存储装置102联网的情况下,主装置控制器224可为用于单层RAID、多层RAID、渐进式RAID等的RAID控制器。主装置控制器224还允许在RAID阵列中存储一些对象、文件或其它逻辑结构且在无RAID的情况下存储其它对象或逻辑结构。在另一实施例中,主装置控制器224可为分布式RAID控制器元件。在另一实施例中,主装置控制器224可包括许多RAID、分布式RAID和如其它地方描述的其它功能。
在一个实施例中,主装置控制器224与单个或冗余网络管理器(例如,交换机)协调以建立路由、平衡带宽利用、故障转移等。在另一实施例中,主装置控制器224与集成的专用逻辑(经由局部总线206)和相关联的驱动程序软件协调。在另一实施例中,主装置控制器224与附接的专用处理器258或逻辑(经由外部系统总线240)和相关联的驱动程序软件协调。在另一实施例中,主装置控制器224与远程专用逻辑(经由计算机网络118)和相关联的驱动程序软件协调。在另一实施例中,主装置控制器224与局部总线206或外部总线附接的硬盘驱动器(“HDD”)存储控制器协调。
在一个实施例中,主装置控制器224与一个或一个以上存储控制器254通信,其中存储装置/固态存储装置102可表现为通过SCSI总线、因特网SCSI(“iSCSI”)、光纤通道等而连接的存储装置。同时,存储装置/固态存储装置102可自主地管理对象、文件等,且可表现为对象文件系统或分布式对象文件系统。主装置控制器224也可由对等控制器256和/或专用处理器258存取。
在另一实施例中,主装置控制器224与自主集成管理控制器协调以周期性证实FPGA代码和/或控制器软件、在运行(复位)期间证实FPGA代码和/或在加电(复位)期间证实控制器软件、支持外部复位请求、支持由于看门狗超时而引起的复位请求,且支持电压、电流、功率、温度和其它环境测量和阈值中断的设定。在另一实施例中,主装置控制器224管理无用单元收集以释放擦除块供再使用。在另一实施例中,主装置控制器224管理损耗均衡。在另一实施例中,主装置控制器224允许将数据存储装置/固态存储装置102分割为多个虚拟装置,且允许基于分区的媒体加密。在又一实施例中,主装置控制器224支持具有高级多位ECC校正的固态存储控制器104。所属领域的技术人员将认识到固态存储控制器104中或更具体来说固态存储装置102中的主装置控制器224的其它特征和功能。
在一个实施例中,固态存储装置控制器202包含存储器控制器228,其控制动态随机存储器阵列230和/或静态随机存储器阵列232。如上文陈述,存储器控制器228可为独立的或与主装置控制器224集成。存储器控制器228通常控制某种类型的易失性存储器,例如DRAM(动态随机存储器阵列230)和SRAM(静态随机存储器阵列232)。在其它实例中,存储器控制器228还控制其它存储器类型,例如电可擦除可编程只读存储器(“EEPROM”)等。在其它实施例中,存储器控制器228控制两个或两个以上存储器类型,且存储器控制器228可包含一个以上控制器。通常,存储器控制器228控制可行的尽可能多的SRAM 232并通过DRAM 230来补充SRAM 232。
在一个实施例中,索引存储在存储器230、232中且随后周期性卸载到固态存储媒体110n或其它非易失性存储器的通道。所属领域的技术人员将认识到存储器控制器228、动态存储器阵列230和静态存储器阵列232的其它使用和配置。
在一个实施例中,固态存储装置控制器202包含DMA控制器226,其控制存储装置/固态存储装置102与一个或一个以上外部存储器控制器250和相关联的外部存储器阵列252和CPU 248之间的DMA操作。应注意,外部存储器控制器250和外部存储器阵列252之所以称为外部是因为其在存储装置/固态存储装置102的外部。另外,DMA控制器226还可通过NIC 244和相关联的RDMA控制器246控制请求装置的RDMA操作。下文更详细地阐释DMA和RDMA。
在一个实施例中,固态存储装置控制器202包含连接到管理总线236的管理控制器234。通常,管理控制器234管理存储装置/固态存储装置102的环境度量和状态。管理控制器234可经由管理总线236监视装置温度、风扇速度、电源设定等。管理控制器234可支持对用于存储FPGA代码和控制器软件的可擦除可编程只读存储器(“EEPROM”)的读取和编程。通常,管理总线236连接到存储装置/固态存储装置102内的各种组件。管理控制器234可经由局部总线206传送警报、中断等,或可包含到系统总线240或其它总线的单独连接。在一个实施例中,管理总线236是集成电路间(“I2C”)总线。所属领域的技术人员将认识到通过管理总线236连接到存储装置/固态存储装置102的组件的管理控制器234的其它相关功能和使用。
在一个实施例中,固态存储装置控制器202包含杂项逻辑242,其可针对具体应用而定制。通常,在固态存储装置控制器202或主装置控制器224是使用FPGA或其它可配置控制器来配置的情况下,可基于特定应用、客户要求、存储要求等而包含定制逻辑。
故障预测设备
图3A是说明根据本发明的用于预测固态存储装置中的故障的设备300的一个实施例的示意性框图。设备300包含具有固态存储控制器104的固态存储装置102,固态存储控制器104具有下文描述的确定模块302、阈值模块304、存储区错误模块306、引退模块308和ECC模块310。
固态存储装置102和固态存储控制器104大体上类似于上文所述的固态存储装置和固态存储控制器。虽然在固态存储控制器104中描述模块302-308,但每一模块302-308的全部或一部分可位于不在固态存储控制器104中的其它地方,例如服务器、客户端114、计算机112、驱动器等中。
在一个实施例中,设备300包含确定模块302,其确定存储在ECC组块中的数据含有可使用与数据一起存储的错误校正码(“ECC”)和ECC算法来校正的错误。ECC算法可由ECC模块310使用以由ECC组块的数据产生ECC,且随后使用ECC组块的数据以及同样存储在ECC组块中的ECC来检测并校正ECC组块中的错误的位。在一个实施例中,ECC是块码。在另一实施例中,ECC不是块码,但能够对数据集合进行错误检测和校正。在一个实施例中,ECC可包括卷积码。所属领域的技术人员将认识到能够检测数据错误并校正错误且适用于本发明的其它形式的ECC。
ECC组块位于非易失性固态存储媒体110上且可为固态存储装置102的部分,如关于图1中的系统100所描述。固态存储媒体110可为NAND快闪存储装置。在其它实施例中,ECC组块位于高速缓冲存储器、存储卡或其它类型存储装置中的非易失性固态存储媒体上。通常,ECC组块是经读取的存储装置的单位,且ECC模块310使用ECC算法以及由对应ECC算法产生的ECC数据来校正数据中的错误的位,所述ECC算法由存储在ECC组块内的用户数据而产生ECC数据。在一个实施例中,ECC组块是固态存储媒体110内的芯片上的存储媒体的一部分。在另一实施例中,ECC组块包含来自固态存储媒体110a-n阵列的数据的若干部分。在另一实施例中,数据是从逻辑页读取且包含多个ECC组块。
在特定实施例中,ECC组块跨越固态存储元件(例如,216a-m)且包含逻辑页中的每一物理页的至少一部分。ECC数据保护技术允许ECC组块包含相对大量的数据以使得ECC组块可包含逻辑页的每一物理页的多行数据。在一个实施例中,ECC组块包含由ECC数据保护的数据以及ECC数据。在一个实施例中,ECC数据可在ECC组块中的用户数据之后存储。图3B和3C描述ECC组块的特定实施例。
图3B是说明根据本发明的N+P个存储元件312的阵列311的一个实施例的示意性框图。在一个实施例中,存储元件312的阵列311包含N个存储元件312a、312b、…312n和P个存储元件312p,其存储由存储在N个存储元件312a…312n上的数据而产生的奇偶性数据。存储奇偶性数据的存储元件312(312p)可为可仅存储奇偶性数据的专用奇偶性存储元件312。另外,奇偶性数据可如上所述在存储元件312之间旋转。虽然描绘单个奇偶性存储元件312p,但所属领域的技术人员认识到,可使用多个奇偶性存储元件312p。每一存储元件312可包括装置、芯片、芯片的一部分、裸片等。
此外,在一个实施例中,每一存储元件312包含物理擦除块(“PEB”)314。举例来说,存储元件一312a包含PEB一314a。物理擦除块通常是位于一个裸片、芯片或其它存储元件312上的擦除块。每一PEB 314包含m个物理页316。举例来说,PEB一314a包含页0 316a、页1 320a、…页m 322a。每一物理页316a存储数据的一部分和与数据(“D”)318一起分布的错误校正码(“ECC”)。而且,奇偶性存储元件312p上的物理页316p、320p、…322p存储奇偶性数据318p。
在一个实施例中,PEB群组形成逻辑擦除块(“LEB”)。LEB 324跨越包含奇偶性存储元件312p的N+P个存储元件的阵列311。此外,在一实施例中,逻辑页(“LP”)326跨越一行中的多个物理页320,包含奇偶性存储元件312p上的物理页320p。在另一实施例中,逻辑页326跨越N个存储元件312a-n而不跨越奇偶性存储元件312p,使得奇偶性数据在数据存储在N个存储元件312a-n中之外的单独步骤中以奇偶性数据存储在存储元件312p上。
在一个实施例中,ECC是与数据一起分布的块码。此外,数据和ECC可能未对准到任何特定物理硬件边界。因此,用ECC进行的错误校正不取决于特定的硬件配置。因此,ECC和对应数据可形成ECC组块且ECC组块可经划分且存储在N个存储元件312a-n中的一者或一者以上上。ECC组块328通常跨越逻辑页326的多个物理页316的至少一部分,其中数据和由数据318a、318b、…318m产生的ECC散布在N个存储元件312a-n上,不包含奇偶性存储元件312p上的奇偶性数据318p。含有奇偶性数据的存储元件312p可在构成存储元件312的阵列311的存储元件之间动态旋转。在一个实施例中,LP 326包含多个ECC组块328。物理页316可含有ECC组块328的一个或一个以上数据字节。ECC组块328可跨越物理页316内的多行,且物理页316可包含多个ECC组块328。
图3C是说明根据本发明的具有分布式奇偶性的N+P个存储元件350的阵列的另一实施例的示意性框图。在所描绘的实施例中,分布奇偶性数据318p。因此,逻辑页354的存储奇偶性数据318p的存储元件312是交替的。举例来说,LP 354包含用于特定行数据的存储元件3 312c上的奇偶性数据318p、用于另一行数据的存储元件2 312b上的奇偶性数据318p。在此实施例中,ECC组块356仍独立于奇偶性数据。在另一实施例中,奇偶性信息存储在用于LP 354内的所有ECC组块356的同一存储元件312内,且仅在LP 354边界上改变。在另一实施例中,奇偶性的位置存储在LEB 352内的同一存储元件312内,且仅在LEB 352边界上改变。所属领域的技术人员将认识到可读取的ECC组块和用以检测并校正错误的ECC算法的其它形式。
现在参看图3A,确定模块302还确定ECC组块的位错误计数。如本文所使用,位错误计数包括ECC组块的数据中的位错误的数目。位错误计数是使用存储在ECC组块中的ECC导出的。在一个实施例中,确定模块302通过确定ECC组块的位错误计数低于可使用对应于用以产生存储在ECC组块中的特定ECC的ECC算法的ECC校正算法来校正的最大位错误数目,来确定ECC组块中的错误可校正。举例来说,ECC校正算法可能能够校正ECC组块的数据内的11个位错误。
通常,确定模块302结合读取操作和ECC模块310而工作,ECC模块310使用ECC来检测并校正所读取的数据中的错误。如果确定模块302确定数据包含足够大的位错误计数且错误不可校正,那么可给所述错误加旗标且可采取校正动作。下文在图4所示的设备400的描述中描述可能的校正动作的实例。
在另一实施例中,设备300包含阈值模块304。如果确定模块302确定存储在ECC组块中的数据中的一定数目的位错误可校正,那么阈值模块304确定存储在ECC组块中的数据中的错误数目是否满足ECC组块错误阈值。
ECC组块错误阈值包含位错误计数,其满足最小可接受错误阈值且低于ECC组块的ECC可校正错误的最大数目。在一个实施例中,可接受错误阈值是在维持数据的高度可靠性的同时可容许的位错误的最大数目。可接受错误阈值可为可假定为由于基于用以确定位错误计数的ECC组块的大小的软错误而自然发生的错误的数目。举例来说,测试可能揭露,对于可校正11个位中的错误的ECC组块,可接受错误阈值可为3个错误的位。在此实例中,ECC可校正错误的数目是11且可接受错误阈值是3,因此ECC组块错误阈值可为从4到10的任一位计数错误。
可选择可接受错误阈值以允许一些软错误,使得ECC组块错误阈值无法得到满足,直到位错误计数满足可接受错误阈值和ECC可校正错误的最大数目为止。ECC组块错误阈值低于ECC可校正错误的最大数目;大于ECC可校正错误的最大数目的位错误计数可触发复位、不可恢复的数据错误或与高于将可使用与ECC组块一起存储的ECC数据来校正的位计数的位计数相关联的其它动作。
举例来说,ECC和ECC算法可由ECC模块310使用以校正多达八个错误的位,但ECC组块错误阈值可设定为四个错误的位。ECC组块中的数据可含有6个错误的位。确定模块302可确定ECC组块中的错误可校正,且随后阈值模块304可接着确定六个错误已满足设定为四个错误的ECC组块错误阈值。在一个实施例中,阈值模块304可在位错误计数匹配或超过ECC组块错误阈值时确定ECC组块的位错误计数满足ECC组块错误阈值。
在一个实施例中,阈值模块304可包含多个阈值,且可对ECC组块中的错误是否满足多个阈值做出多次确定。举例来说,阈值模块304可具有总体ECC组块错误阈值,和芯片、裸片、PEB、物理页等中的ECC组块的每一部分的较低错误阈值。阈值模块304可单独评估每一阈值,或可能要求在评估ECC组块的较小部分内的错误的位之前满足总体ECC组块错误阈值。
在一个实例中,如果ECC组块错误阈值为五且位错误计数为五或更大,那么阈值模块304可随后评估每一错误的位的位置,且可确定芯片、裸片等的位错误计数是否满足ECC组块的所述部分的位错误阈值。在另一实施例中,阈值模块304在位错误计数满足ECC组块错误阈值时确定位错误计数满足位错误计数,且独立地确定ECC组块的每一部分的位错误计数是否满足所述部分的错误阈值。
有益的是,阈值模块304允许一些位错误。通常,预期容许由于软错误而引起的少数位错误。软错误是不指示硬件故障的错误。举例来说,软错误可为由随机α粒子、电压瞬变、读取或编程干扰等引起的位反转。由软错误引起的位反转在定义上是可校正的,且当对例如LEB 324、352等存储区进行无用单元收集时,擦除所述存储区且恢复单元电压。通过跟踪高于ECC组块错误阈值的位错误计数,可忽略自然发生的软错误,且可跟踪可能引起较高位错误计数的较严重硬错误。
另外,在使用相对便宜的媒体时,可能预期存在较多的错误的位。使用相对大的ECC组块和能够校正相对大量ECC可校正错误的稳健的ECC算法可补偿所述增加的错误。然而,使用标准错误确定技术将通常触发较大量的错误,且可导致即使媒体的较大部分仍可用也使存储媒体引退。具有结合相对大ECC组块和相对大量ECC可校正错误而允许少数错误的位的ECC组块错误阈值可延长存储媒体的可用寿命和存储媒体的可靠性。
在一个实施例中,阈值模块304进一步确定ECC组块的一部分的位错误计数(例如存储元件(例如216a)的位错误计数)是否满足存储元件错误阈值。此进一步确定可用以确定ECC组块中的特定存储元件(例如,216a)是否具有大量位错误。如果位错误集中于固态存储元件216、218、220中,那么固态存储元件216、218、220可能具有硬错误、可能出故障等。所属领域的技术人员将认识到阈值模块304可确定ECC组块中的错误是否满足一个或一个以上ECC组块错误阈值的其它方式。
在一个实施例中,设备300包含存储区错误模块306,其确定含有ECC组块的至少一部分的存储区满足区引退准则。存储区可包含以下各项中的一者或一者以上:ECC组块、多个ECC组块、页、跨越多个固态存储芯片的逻辑页、PEB 314、LEB 324、352、跨越多个固态存储芯片的逻辑擦除块352、芯片、存储器阵列内的一行裸片、一行芯片、一列芯片、存储器阵列内的一列裸片、芯片上的裸片等。在一个实施例中,如果阈值模块304确定ECC组块的位错误计数满足ECC组块错误阈值,那么存储区错误模块306确定存储区内的数据错误的数目是否满足区引退准则。存储区包含ECC组块的至少一部分,其中所述部分包含错误。
存储区可为固态存储媒体110的可被引退的任一部分。举例来说,存储区可为以下各项中的一者或一者以上:ECC组块、多个ECC组块、页、跨越多个固态存储芯片的逻辑页、PEB 314、LEB 324、352、芯片、一行芯片、一列芯片和芯片上的裸片。在一个实施例中,存储区可为固态存储媒体110的可经隔离以用于单次读取、编程或擦除操作或用于读取-修改-写入操作的任何物理部分。所属领域的技术人员将认识到其它存储区类型。应注意,被引退的存储区将包含至少一个物理硬件存储元件,使得存储区的引退使存储数据免于存储在所述存储元件上且接着稍后经历不可校正的数目的位错误。硬件存储元件可包括单个存储单元、存储裸片、存储芯片或这些元件中的一者或一者以上的组合。
在一个实施例中,存储区可包含ECC组块以及通过分析而确定为含有错误或展现同样含有错误的高概率的其它邻近的存储区。对邻近存储装置的分析在下文相对于关于图4描述的设备400更详细地论述。还关于图4描述分析数据错误以确定错误是否满足区引退准则的其它方式。
在一个实施例中,设备300包含引退模块308。如果存储区错误模块306确定存储区内的错误满足区引退准则,那么引退模块308使包含至少ECC组块的存储区处于被引退状态。在一个实施例中,被引退状态是其中存储区不再用以存储数据、不活动、经隔开等的状态。在另一实施例中,存储区可临时引退或可经再测试以确定错误是否是持久的。被引退状态还可包含其中存储区中的数据被临时存储直到其可在方便的时间移除为止的状态。举例来说,可对数据进行标记以用于无用单元收集。也可使处于被引退状态的存储区处于验证状态,其中测试存储区以确定数据错误是否是持久的或存储区是否可返回服务。
处于被引退状态的存储区可能具有存储区的在作用中的若干部分,所述部分可随后再用或与其它部分重组合以构成不同的逻辑存储结构。在某些实施例中,逻辑存储结构也可直接与一个或一个以上存储区相关。通常,存储区错误模块306分析ECC组块中以及可能其它邻近的存储装置中的错误,以确定错误的数目或类型是否保证使存储区引退。通过使存储区处于被引退状态,固态存储装置102通常具有比不具有关于图3A描述的设备300的装置高的数据可靠性程度。
引退模块308可通过以某种方式将存储区标记为不可用来使存储区引退。举例来说,可标记逻辑到物理映射或索引以使得存储区没有资格在所述存储区中存储数据。在另一实例中,可更新位图或表以将存储区展示为不可用。可通过使存储区处于特殊引退状态、通过从图移除存储区的地址等来使存储区引退。所属领域的技术人员将认识到使存储区引退的其它方式。
图4是说明根据本发明的用于预测固态存储装置中的故障的设备400的替代实施例的示意性框图。设备400包含具有固态存储控制器104的固态存储装置102,固态存储控制器104具有确定模块302、阈值模块304、存储区错误模块306、引退模块308和ECC模块310,以上模块大体上类似于上文关于图2和图3描述的模块。
设备400还包含错误存入模块402、具有引退界限模块406和引退曲线拟合模块408的媒体错误预测模块404、ECC测试模块410、错误分析模块412、干扰计数器模块414、硬错误检测模块416、芯片更换模块418、无用单元收集恢复模块420、擦除错误引退模块422、编程错误模块424、编程错误引退模块426以及验证模块428,其在下文中描述。如同图3A中的设备300中的模块302-308,设备400中的模块302-308、402-428的全部或一部分可位于固态存储控制器104和固态存储装置102的外部。
设备400包含错误存入模块402。在一个实施例中,错误存入模块402记录ECC组块的存储区的至少一部分的识别符以及与确定位错误计数相关联的时间指示符。具有由错误存入模块402记录的识别符的ECC组块是如阈值模块304确定具有满足ECC组块错误阈值的位错误计数的ECC组块。识别符识别与ECC组块相关联、与LEB 324、352相关联、与PEB 314相关联、与物理页相关联、与逻辑页相关联、与芯片相关联、与固态存储元件216、218、220或用以存储ECC组块的物理存储区的任何其它部分相关联的一个或一个以上存储区的一个或一个以上物理存储元件。在其它实施例中,错误存入模块402可记录多个识别符。通过在ECC组块的位错误计数满足ECC组块错误阈值时记录时间指示符,设备400可使用时间指示符来确定满足ECC组块错误阈值的位错误计数的例子的比率。用于含有ECC组块的存储区或存储区的其它部分的识别符可用以跟踪满足每一存储区或存储区的部分的ECC组块错误阈值的位错误计数。在另一实施例中,错误存入模块402记录用于例如PEB 314、页、存储元件312等存储区的一部分的识别符,且还可存储用于存储区的识别符。所记录的识别符可为位图中的位、物理地址或用以识别存储区或存储区的部分的任何其它合适方式。
在另一实施例中,错误存入模块402记录与存储区错误模块306何时确定存储区中的错误满足区引退准则相关联的时间指示符。在另一实施例中,错误存入模块402还记录具有带错误的ECC组块的存储区的位置。错误存入模块402可存储与存储区相关联的一个或一个以上位置。举例来说,错误存入模块402可存储用于具有错误或作为正被引退的存储区的部分而引退的ECC组块、页、PEB 314、LEB 324、352、芯片等中的一者或一者以上的多个识别符。
错误存入模块402可将时间指示符和位置指示符存储在元数据中、日志中、索引中或任何其它合适的存储位置或结构中。在一个实施例中,错误存入模块402将时间指示符和位置指示符存储作为索引的部分,使得给对与被引退的存储区相关联的位置的未来读取或编程请求加旗标为被引退。而且,可搜索索引以编译和/或使用由错误存入模块402存储的信息。在另一实施例中,错误存入模块402存储其它信息,例如错误类型、错误位置等。
在一个实施例中,错误存入模块402可记录被引退的PEB 314和/或LEB 324、352。在此实施例中,跟踪LEB 324、352可为比仅监视被引退的PEB 314更准确的对可用存储容量的预测器。在某些实施例中,专门在LEB 324、352被引退时跟踪被引退的PEB 314可能不准确,因为被引退的LEB 324、352中的一些PEB 314可能可使用且可由固态存储控制器104再用。举例来说,错误存入模块402可记录被引退的PEB 314以及相关联的LEB 324、352。如果第一PEB 314被引退,那么相关联的第一LEB 324、352可被引退。被引退的第一LEB 324、352内除了被引退的第一PEB 314以外的PEB 314可能可使用且随后可作为备用而用于固态存储控制器104。当第二LEB 324、352中的第二PEB314被引退时,固态存储控制器104可在第二PEB 314与第一LEB 324、352不在同一芯片(即,同一列)中的情况下将来自被引退的第一LEB 324、352的备用PEB 314替换到第二LEB 324、352中,因此保持第二LEB 324、352可用于存储。
然而,如果第二PEB 314与第一PEB 314来自同一芯片(即,同一列中),那么第二LEB 324、352可能必须被引退。因此,跟踪被引退的LEB 324、352可为丢失的存储容量的指示符,且被引退的LEB 324、352的比率可用以预测固态存储装置102何时可能出故障或应被引退。所属领域的技术人员将认识到适合于由错误存入模块402存储的其它信息。
时间指示符可为指示以下情况的任何指示符:在ECC组块中找到的错误的时间上下文、何时阈值模块304确定错误满足ECC组块错误阈值、何时存储区错误模块306确定ECC组块中的数据错误满足ECC组块错误阈值、何时存储区被引退等。时间指示符可为时间戳、固态存储装置操作的时间、计数器、完成的命令的数目的指示符、所执行的操作的数目的指示符,或适合于确定错误率或存储区被引退时的比率的任何其它指示符。所执行的操作的数目可按操作类型来分解。所属领域的技术人员将认识到其它形式的时间指示符。
在另一实施例中,设备400包含监视存储区引退率的媒体错误预测模块404,和确定存储区引退率满足存储区引退阈值且在一个实施例中发送存储区引退率满足存储区引退阈值的通知的引退界限模块406。在一个实施例中,引退界限模块406可向系统操作者通知即将发生的故障。在另一实施例中,引退界限模块406可通知固态存储控制器104,使得控制器104可停止在存储区中存储数据,可用备用固态存储元件216、218、220中的数据替换存储区中的数据,可触发修改RAID阵列结构等。在一个实施例中,存储区引退率可根据由错误存入模块402记录的时间指示符来确定。媒体错误预测模块404可使用任何合适准则来确定引退存储区率已达到存储区引退阈值。有益的是,引退界限模块406允许预测故障,使得系统管理者或固态存储控制器104可在故障之前采取防止数据损失的措施。
举例来说,可使用固态存储装置资格测试来建立特定非易失性固态存储媒体的错误的历史,使得可将存储区引退阈值选择为低于恰好在固态存储媒体110的故障之前通常发生的已知比率的存储引退率。存储区引退阈值可基于概率、测试结果、经验等来设定。
在另一实施例中,媒体错误预测模块404可包含引退曲线拟合模块408,其使用曲线拟合算法和由错误存入模块402记录的时间指示符来预测被置于被引退状态的存储区的比率何时满足存储区引退阈值的时间。引退曲线拟合模块408可使用多项式曲线拟合,可对数据点拟合曲线,可使用几何曲线拟合等。引退曲线拟合模块408可随后使用所产生的曲线来预测故障,预测在故障之前的时间或存储区引退率以使固态存储装置102的全部或一部分引退。引退曲线拟合模块408也可使用所产生的曲线来设定存储区引退阈值。在另一实施例中,所产生的曲线可用以产生随时间改变的存储区引退率界限。
在另一实施例中,媒体错误预测模块404使用规则与试探法的组合来确定存储区引退率何时已达到不可接受的水平。举例来说,芯片温度和/或非易失性固态存储媒体周围的环境温度结合高位错误计数或高位错误计数的多个例子可用以当在芯片温度较低时类似数目的错误或错误例子可能不触发引退时发出使存储区引退的信号。例如供应电压电平、操作类型、数据的临界性等其它环境因素也可用以形成或修改区引退准则。
在一个实施例中,固态存储芯片故障概率可结合来自错误存入模块402的数据使用以确定预期寿命。在另一实施例中,所需的服务长度和来自错误存入模块402的数据可用以产生固态存储装置102可能达到所需服务时长的概率。下一维护或规划的停工日期和来自错误存入模块402的数据可用以确定固态存储装置102将可操作直到下一维护或规划的停工为止的概率。所属领域的技术人员将认识到规则、试探法、曲线拟合等可用以预测不可接受的存储区引退率的其它方式。
区引退准则可为简单的阈值而非比率。举例来说,区引退准则可为当阈值模块304确定特定存储区内的ECC组块的位错误计数满足ECC组块错误阈值时的若干例子的阈值。区引退准则也可更复杂,且可使由阈值模块304报告的错误的例子与ECC组块的其中例子例如在特定物理页或PEB 314内发生的部分相关。区引退准则可具有累加性阈值、用于ECC组块或存储区的其它部分的阈值等。举例来说,存储区错误模块306可通过确定ECC组块的位错误计数包含存储元件312、芯片、裸片等中的较高数目的错误(例如高于页或PEB 314的位错误计数阈值)来确定存储区内的数据错误满足区引退准则。
在另一实例中,存储区可经界定为包含与邻近于ECC组块的存储装置组合的ECC组块。存储区错误模块306可随后通过确定邻近于含有ECC组块的存储区的存储区内的错误和ECC组块内的错误满足区引退准则来确定存储区内的数据错误是否满足区引退准则。设备400可以任何数目的方式来分析ECC组块和邻近的存储装置的错误。
举例来说,设备400可包含ECC测试模块410,其对邻近于ECC组块的一个或一个以上ECC组块运行ECC分析以确定邻近的存储区具有错误。举例来说,ECC测试模块410可从具有邻近于由确定模块302确定的物理页的物理页的ECC组块读取数据,且阈值模块304具有满足位错误阈值的位错误计数。ECC分析可为一组应力测试、重复的读取操作、编程操作、擦除操作或用以计量存储区的可靠性的操作的组合。ECC分析可为工业标准测试。在一个实施例中,ECC测试模块410在阈值模块304确定ECC组块中的错误数目满足ECC组块错误阈值之后运行分析。在另一实施例中,ECC测试模块410对具有与具有满足ECC组块错误阈值的位错误计数的ECC组块不同大小的邻近的存储装置运行ECC分析。ECC组块和具有数据错误的其它邻近的ECC组块可随后构成存储区,且存储区错误模块306可随后确定所述存储区是否满足区引退准则。
在另一实施例中,设备400包含错误分析模块412,其通过检查由错误存入模块402记录的引退存储区的位置以确定引退存储区是否邻近于ECC组块来确定邻近的存储装置是否具有错误。存储区错误模块306可随后确定ECC组块和由错误存入模块402记录的邻近的存储位置是否满足区引退准则。
在另一实施例中,区引退准则也可包含组织为二维阵列的一列存储媒体内的阈值数目的错误。存储区错误模块306可随后确定一列存储装置内的错误数目是否满足列阈值。引退模块308可随后使包含具有错误的列的适当存储区引退。举例来说,具有错误的数据列可指示硬件故障,且存储区错误模块306可识别将隔离硬件故障的存储区。举例来说,存储区可为芯片或裸片。
在另一实施例中,区引退准则也可包含一行存储装置内的阈值数目的错误,且存储区错误模块306可确定一行存储装置内的错误数目是否满足行阈值。在另一实施例中,区引退准则可包含在存储区域内群集在一起的阈值数目的错误,且存储区错误模块306可确定所述存储区域内的错误数目是否满足区域阈值。存储区错误模块306可随后识别包含错误群集的用于引退的存储区域。所属领域的技术人员将认识到可为区引退准则的部分且可用以确定存储区中的错误是否满足区引退准则的其它准则。
在典型的固态存储媒体110中,软错误可能发生且可能是可接受的。软错误在此指定为本质上为瞬时的位错误,以使得具有所述位错误的存储位置可被擦除和再用而不会遇到同一位错误。举例来说,读取干扰是描述在邻近于正被读取的位置的区域中引起的位错误的术语。举例来说,用以读取位置且行进经过邻近的存储位置的数据线可在所述数据线经激活以读取数据时引起位反转。
存储也可能被写入数据影响,写入数据也可引起邻近的存储装置中的位错误。瞬时电压、α粒子等也可引起其它软错误。如果受影响数据具有可使用ECC校正的错误数目,那么软错误可为可容许的。如果错误可校正且可归类为软错误,那么存储区错误模块306可确定错误不满足区引退准则,即使错误数目满足阈值也是如此。
在一个实施例中,设备400包含干扰计数器模块414,其跟踪每一读取和/或写入/编程操作的存储位置和存储区中的每一者处的读取和/或写入/编程的数目。在一个实例中,干扰计数器模块414包含单独地跟踪读取和写入/编程操作。在另一实例中,干扰计数器模块414以单个值一起跟踪读取和写入/编程操作。在一个实施例中,区引退准则的部分包含干扰准则,其中用于存储区错误模块306确定存储区内的数据错误不满足区引退准则的因素是确定含有ECC组块的存储区和/或邻近于所述存储区的至少一个存储位置中的读取和编程的数目已满足干扰准则。
举例来说,对于原本将满足区引退准则的存储区,如果干扰计数器模块414确定读取和/或编程操作的干扰计数满足干扰阈值,那么引退模块308可允许存储区在非被引退状态中保持服务。在另一实施例中,当干扰计数器模块414确定读取计数和/或写入计数满足干扰阈值时,存储区错误模块306确定存储区未能满足区引退准则。在又一实施例中,对存储区进行标记以用于无用单元收集,相对于无用单元收集恢复模块420而对其进行更详细地论述。
硬错误在本文中被界定为由于硬件故障引起的错误,使得错误的位置无法被校正和再用或具有不可接受的错误率。通常,硬件错误要求无论指向软错误的其它指示符如何均使存储区引退。在一个实施例中,区引退准则包含硬错误准则,且设备400包含硬错误检测模块416,其分析存储区内的错误的位置以确定错误位置是否指示满足硬错误准则的硬件故障。举例来说,硬错误检测模块416可确定一行、列或存储子区包含不可接受数目的错误且错误模式可指示固态存储媒体110中的硬件故障。
在另一实施例中,设备400可包含芯片更换模块418,其在存储区是芯片且引退模块308使芯片引退的情况下更换芯片。可通过使被引退的芯片去活且激活另一更换芯片来更换芯片。在另一实施例中,使芯片、芯片的部分、固态存储元件216、218、220等在逻辑上去活,其中通过重新映射来替换来自备用芯片或固态存储元件216、218、220的对应部分的数据。通常,更换芯片含有或加载有匹配于经更换芯片上的数据的数据。在一个实施例中,更换芯片包含正被更换的芯片上的数据的副本。在另一实施例中,更换芯片包含写入到布置于阵列中的每一芯片的数据的异或(“XOR”),其中来自阵列中的每一芯片的数据是并行存取的。
在另一实施例中,更换芯片包含从奇偶性条带导出的数据。在此实施例中,固态存储装置102包含位于独立驱动冗余阵列(“RAID”)中的存储装置,且使用奇偶性条带数据和RAID中的其它装置上的数据来产生更换数据。在另一实施例中,芯片更换模块418更换由硬错误检测模块416识别为具有硬错误的芯片。
在另一实施例中,芯片更换模块418更换芯片的一部分,例如裸片。在又一实施例中,芯片更换模块418更换一个以上芯片。在一个实施例中,芯片更换模块418更换其中以不可接受的比率出现软错误的一个或一个以上芯片。用于固态存储元件阵列的芯片更换在大卫·弗林等人在2009年5月5日申请的题目为“用于不良块重新映射的设备、系统和方法(Apparatus,System,and Method for Bad Block Remapping)”的第12/419,223号美国专利申请案中更详细地描述,所述美国专利申请案以引用的方式并入本文。所属领域的技术人员将认识到用以识别硬错误、确定何时更换芯片和更换芯片的其它方式。
在一个实施例中,设备400包含无用单元收集恢复模块420和擦除错误引退模块422。在所述实施例中,区引退准则包含擦除错误准则。而且在所述实施例中,在确定存储区中的数据错误满足区引退准则时,存储区错误模块306对包含准备好进行无用单元收集的存储区的擦除块进行标记。无用单元收集恢复模块420随后通过首先将有效数据从擦除块复制到固态存储装置102中当前正写入数据的位置来对擦除块执行无用单元收集操作。
无用单元收集恢复模块420随后擦除擦除块。擦除可以若干不同方式完成。通常,在NAND快闪固态存储装置中,将逻辑“1”写入到擦除块的每一位。在其它实施例中,擦除块可以逻辑“1”和“0”多次写入,可以一模式写入等。所属领域的技术人员将认识到用以擦除擦除块的其它方式。
无用单元收集恢复模块420随后确定经擦除块内的至少存储区中的任何错误是否满足擦除错误准则。这可通过记下擦除过程中的任何错误来完成。举例来说,如果存在其中写入逻辑“1”但位保持为逻辑“0”的位,那么可记下错误。特定来说,在一个实施例中,无用单元收集恢复模块420可确定存储区中是否存在任何错误。在另一实施例中,存储区可为擦除块,且擦除块可被引退。擦除块可包含例如PEB 314、多个PEB 314、LEB 324、352等。在一个实施例中,擦除错误准则可为阈值数目的错误。阈值数目的错误可应用于擦除块、存储区等。
在所述实施例中,如果无用单元收集恢复模块420确定擦除块内的至少存储区中的错误满足擦除错误准则,那么擦除错误引退模块422使擦除块内的至少存储区引退。举例来说,擦除错误引退模块422可仅使存储区、存储区和邻近的存储区、整个擦除块等引退。如果存储区跨越多个擦除块,那么存储区错误模块306可对包含准备好进行无用单元收集的存储区的多个擦除块进行标记,无用单元收集恢复模块420可对擦除块进行无用单元收集,且通过测试、后续数据读取或来自对擦除块的擦除操作的硬件故障来确定数据错误是否满足擦除错误准则,且擦除错误引退模块422可随后使一个或一个以上擦除块或一个或一个以上擦除块的若干部分引退。
另外,擦除错误引退模块422可随后记录与使存储区引退相关联的时间指示符,且也可记录引退存储区的位置。在一个实施例中,当擦除块经标记以用于无用单元收集时触发无用单元收集过程。在另一实施例中,无用单元收集过程与对准备好进行无用单元收集的擦除块进行标记自主地操作,且在适当时候恢复擦除块。所属领域的技术人员将认识到用以使用无用单元收集过程来确定是否应使存储区引退的其它方式。
在另一实施例中,设备400包含编程错误模块424和编程错误引退模块426。在所述实施例中,区引退准则包含编程错误准则。在一个实施例中,编程错误准则与将数据编程到存储媒体中相关联。在所述实施例中,编程错误模块424确定由对固态存储媒体110内的存储单元进行编程产生的错误是否满足编程错误准则。编程错误模块424确定编程操作期间的编程错误(例如是否发生硬件故障),使得硬件发信号通知编程操作不成功。或者,在一个实施例中,编程错误模块424在稍后时间,例如在读取经编程数据时确定编程错误。如果编程错误模块424确定由对存储媒体进行编程产生的错误满足编程错误准则,那么编程错误引退模块426使包含与经编程存储媒体相关联的硬件媒体的至少一个存储区引退。
编程错误引退模块426也可记录与使存储区引退相关联的时间指示符,且也可记录引退存储区的物理位置。所述时间指示符和位置可随后由存储区错误模块306、媒体错误预测模块404和本文论述的用以分析存储区、识别错误、确定引退的存储区的比率等的其它模块使用。在另一实施例中,对满足编程错误准则的存储区进行标记以用于无用单元收集,且无用单元收集恢复模块420可确定存储区符合引退的要求或返回到可用于数据存储的存储区池。
在一个实施例中,设备400包含验证模块428,其验证由引退模块308引退的存储区对于存储数据来说是不可靠的。在一个实施例中,验证模块428对存储区进行标记以用于无用单元收集,且无用单元收集恢复模块420对存储区执行无用单元收集操作且确定存储区是否具有数据错误。在另一实施例中,验证模块428重新读取ECC组块中的数据,且确定模块302、阈值模块304和存储区错误模块306一起工作以确定来自ECC组块的数据是否具有错误的,位且存储区是否再次满足区引退阈值。在另一实施例中,验证模块428使用其它硬件检查来确定存储区是否具有数据错误。
在一个实施例中,如果验证模块428确定存储区继续经历满足区引退准则的数据错误,那么引退模块308使存储区引退。如果验证模块428确定存储区在正常起作用、具有低于ECC组块错误阈值的位错误计数、通过硬件检查等,那么引退模块308可不使存储区引退,且可改为使存储区可用于数据存储。所属领域的技术人员将认识到供验证模块428验证满足区引退准则的存储区准备好引退或存储区是否可经再调节、再测试等且随后使其可用于数据存储的其它方式。
在又一实施例中,验证模块428允许在存储区错误模块306确定存储区满足区引退准则之后在存储区中的数据存储。举例来说,验证模块428可验证即使起初引退模块可能已使存储区引退,存储区也适合于数据存储。所属领域的技术人员认识到再用先前被引退的存储区在某些情形中可能有用。举例来说,如果一非易失性固态存储装置接近其寿命周期的结束,那么可动态地调整(通过控制器或用户)区引退准则来准许先前被引退的存储区现在无法满足新设定的区引退准则。因此,先前被引退的存储区可被带回到线上,或再次带回到现用中,或经标记为可用于现用。在另一实施例中,先前被引退的存储区可通过先前被引退的存储区先前已被引退的指示符而被带回到现用中。
在另一实施例中,验证模块428使存储区返回到未被引退状态,或在存储区具有数据错误、具有影响存储区中的一些位的部分硬件故障、具有满足ECC组块错误阈值的位错误计数等时防止存储区引退。在此实例中,即使一些错误可能再发生,也可能需要存储区。举例来说,在更换存储元件312之前、在固态存储装置102无法离线时的关键时间期间等时可能需要存储区。有益的是,使用可校正相对大量错误的位的稳健ECC算法允许在存在较高位错误计数但位错误可校正的情况下使用存储区。所属领域的技术人员将认识到验证模块428可超驰引退模块308且保持存储区可用于数据存储的其它时间。
有益的是,设备400解决了与现有技术相关联的问题,且提供了用以识别和归类存储区中的错误且在发生不可校正的错误之前使存储区引退的方式。设备400提供了用以在软错误与硬错误之间进行区别并预测固态存储装置102何时可能出故障、出故障的概率、何时使固态存储装置102引退等的方式。
流程图
图5是说明根据本发明的用于预测固态存储媒体110中的故障的方法500的一个实施例的示意性流程图。方法500开始且固态存储控制器104通过使用ECC来检测(502)ECC组块中的错误。确定模块302确定(504)存储在ECC组块中且含有错误的数据是否包含可使用ECC来校正的若干错误。如果确定模块302确定(504)错误不可校正,那么方法500结束。固态存储控制器104可随后采取措施来通知用户或主机系统,更换存储区的至少一部分且回复ECC组块、存储区等中的数据。
如果ECC模块310确定(504)ECC组块中的错误数目使得错误不可校正,那么阈值模块304确定(506)ECC组块的位错误计数是否满足ECC组块错误阈值。如果阈值模块304确定(506)ECC组块的位错误计数不满足ECC组块错误阈值,那么方法500结束。ECC模块310随后校正错误且将数据发送到请求装置。
如果阈值模块304确定(506)存储在ECC组块中的数据中的错误数目满足ECC组块错误阈值,那么存储区错误模块306评估(508)错误且确定(510)存储区内的数据错误是否满足区引退准则。存储区包含ECC组块的包含检测到的错误的至少一部分。在另一实施例中,存储区包含整个ECC组块。如果存储区错误模块306确定(510)存储区内的数据错误不满足区引退准则,那么方法500结束。区引退准则可包含简单阈值、错误率或可包含更复杂的分析。上文论述了确定ECC组块中的错误是否满足区引退准则的若干方法。
如果存储区错误模块306确定(510)存储区内的数据错误满足区引退准则,那么引退模块308使包含ECC组块的存储区引退(512),且方法500结束。被引退的存储区不再用以存储数据,但可在恢复操作中恢复。恢复操作可再测试被引退的存储区以寻找错误,且在数据错误不存在或视为可接受的情况下可使引退的存储区返回到未被引退状态以用于数据存储,或在再测试确认了硬错误、找出额外故障或位错误等的情况下将被引退的存储区维持在被引退状态。
图6是说明根据本发明的用于使用无用单元收集来预测固态存储媒体110中的故障的方法600的替代实施例的示意性流程图。方法600开始且ECC模块310通过使用与数据一起存储的ECC和ECC算法来检测(602)ECC组块中的错误。确定模块302确定(604)存储在ECC组块中且含有错误的数据是否包含不可使用ECC算法校正的若干错误。如果确定模块302确定(604)错误不可校正,那么固态存储控制器104给错误加旗标(606)。固态存储控制器104可随后使ECC组块引退,更换错误的芯片,检索存储在ECC组块和其它邻近的存储装置中的数据或其它校正性动作。
如果确定模块302确定(604)错误可校正,那么ECC模块310可校正(608)错误。阈值模块304确定(610)ECC组块的位错误计数是否满足ECC组块错误阈值。如果阈值模块304确定(610)ECC组块的位错误计数不满足ECC组块错误阈值,那么固态存储控制器104将数据发送(614)到请求装置,例如客户端114,且方法600结束。
如果阈值模块304确定(610)ECC组块的位错误计数满足ECC组块错误阈值,那么存储区错误模块306对包含准备好进行无用单元收集的ECC组块的擦除块进行标记(612),且固态存储控制器104将数据发送(614)到请求装置,且方法600结束。关于图6描述的方法600既定与关于图7描述的无用单元收集方法700耦合。如上文提到,无用单元收集方法700可与图6的方法600自主地运行,或可响应于存储区错误模块306对准备好进行无用单元收集的擦除块进行标记(612)而起始。
图7是说明根据本发明的无用单元收集方法700的一个实施例的示意性流程图。无用单元收集方法700开始,且无用单元收集恢复模块420将有效数据从经标记以用于无用单元收集的擦除块复制(702)到另一位置。在一个实施例中,将数据写入到固态存储装置102中当前正写入数据的位置。举例来说,在固态存储装置102为连续存储装置的情况下,可将数据复制(702)到当前附加点。
无用单元收集恢复模块420随后从擦除块擦除(704)数据,且随后确定(706)擦除块内的至少存储区中的错误是否满足擦除错误准则。如果无用单元收集恢复模块420确定(706)擦除块内的至少存储区中的错误不满足擦除错误准则,那么方法700结束。举例来说,如果ECC组块中检测到的错误是例如由读取干扰现象引起的软错误,那么在擦除擦除块之后可能没有足够错误或可能没有任何错误满足擦除错误准则,且擦除块中的存储区可能无需引退。
如果无用单元收集恢复模块420确定(706)擦除块内的至少存储区中的错误满足擦除错误准则,那么擦除错误引退模块422使至少由存储区错误模块306确定为满足区引退准则的存储区引退(708),且方法700结束。擦除错误引退模块422也可使具有错误的整个擦除块引退,或可仅使擦除块的一部分引退。擦除错误引退模块422也可记录被引退的存储装置的位置,且可记录与使被引退的存储装置引退相关联的时间指示符。在另一实施例中,芯片更换模块418用被引退的存储区更换芯片。
图8是说明根据本发明的编程或写入操作方法800的一个实施例的示意性流程图。编程或写入操作方法800开始,且固态存储控制器104起始(802)将数据编程或写入到固态存储媒体110中。举例来说,固态存储控制器104可将数据编程到固态存储媒体110中的擦除块内的页中或逻辑页中。
编程错误模块424确定(804)由将数据编程或写入到固态存储装置内的存储媒体产生的错误是否满足编程错误准则。如果编程错误模块424确定(804)由将数据编程或写入到固态存储装置内的存储媒体产生的错误不满足编程错误准则,那么方法800结束。如果编程错误模块424确定(804)由对固态存储装置内的存储装置进行编程产生的错误满足编程错误准则,那么编程或写入错误引退模块426使经编程的存储装置内的至少一存储区引退(806)。在另一实施例中,编程错误引退模块426使PEB 314、LEB 324、352等引退(806)。
在另一实施例中,编程错误引退模块426可记录被引退的存储装置的位置,且可记录与使存储装置引退相关联的时间指示符。在另一实施例中,芯片更换模块418用被引退的存储区更换芯片。由编程错误引退模块426引退的存储装置的位置和时间指示符可由媒体错误预测模块404使用以确定存储区引退率何时不可接受。
图9是说明根据本发明的用于预测固态存储装置中的故障的方法900的另一替代实施例的示意性流程图。方法900开始,且ECC模块310通过使用存储在ECC组块中的ECC和ECC算法来检测(902)ECC组块中的错误。确定模块302确定(904)存储在ECC组块中且含有错误的数据是否包含可使用与数据一起存储的ECC和ECC算法来校正的若干错误。如果确定模块302确定(904)错误不可校正,那么方法900结束。
如果确定模块302确定(904)ECC组块的位错误计数使得错误不可校正,那么阈值模块304确定(905)ECC组块的位错误计数是否满足ECC组块错误阈值。如果阈值模块304确定(905)ECC组块的位错误计数不满足ECC组块错误阈值,那么方法900结束。
如果阈值模块304确定(905)ECC组块的位错误计数满足ECC组块错误阈值,那么存储区错误模块306评估(908)错误。存储区包含ECC组块的至少一部分,其中ECC组块的所述部分包含错误。另外,如果编程错误模块424或无用单元收集恢复模块420或其它擦除模块确定(906、907)存储区具有数据错误,那么存储区错误模块306评估(908)所述错误。存储区错误模块306随后确定(910)存储区内的数据错误是否满足区引退准则。如果存储区错误模块306确定(910)存储区内的数据错误不满足区引退准则,那么方法900结束。
如果存储区错误模块306确定(910)存储区内的数据错误满足区引退准则,那么在一个实施例中,引退模块308将包含ECC组块的存储区置于(912)被引退状态。在另一实施例中,存储区错误模块306确定与存储区相关联的干扰计数是否满足干扰阈值,且如果满足,那么引退模块308将存储区维持在未被引退状态。错误存入模块402记录(914)与存储区错误模块306确定存储区中的错误何时满足区引退准则相关联的时间指示符,且错误存入模块402记录(914)被引退的存储区的位置。在替代实施例中,无用单元收集恢复模块420对存储区执行无用单元收集操作。如果存储区继续经历数据错误,那么引退模块308使存储区引退。如果存储区不经历数据错误,那么在一个实施例中使存储区返回到可用于数据存储的存储区池。所属领域的技术人员还将认识到再测试、回收或恢复满足区引退准则的存储区的其它方式。
媒体错误预测模块404评估(916)存储区引退率。评估(916)可在存储区的引退之后发生,可由例如无用单元收集等另一事件触发,可根据时间表而发生等。媒体错误预测模块404可使用由错误存入模块402记录(914)的信息或其它源来评估(916)存储区引退率以确定区引退率。在所述实施例中,媒体错误预测模块404确定(918)区引退率是否满足预定义阈值。如果媒体错误预测模块404确定(918)区引退率未能满足预定义阈值,例如不高于存储装置引退率阈值,那么方法900结束。
如果媒体错误预测模块404确定(918)区引退率过高,例如高于区引退率阈值,那么媒体错误预测模块404给存储区引退率加旗标(920),且方法900结束。媒体错误预测模块404可使用界限、曲线拟合、规则、试探法和/或类似方法来确定(918)错误率过高。媒体错误预测模块404可使用错误消息或类似手段来给比率加旗标(920),且因此可采取适当动作,例如使固态存储装置102引退、从固态存储装置102复制数据等。
可在不脱离本发明的精神或实质性特性的情况下以其它具体形式体现本发明。所描述的实施例在所有方面中均应仅视为说明性而不是限制性的。因此,本发明的范围由所附权利要求书而不是前述描述内容指示。在权利要求书的均等性的意义和范围内的所有改变均将包含在其范围内。
Claims (22)
1.一种用以确定非易失性固态存储媒体状态的设备,所述设备包括:
确定模块,其确定存储在ECC组块中的数据含有错误校正码(“ECC”)可校正错误,且进一步确定所述ECC组块的位错误计数,所述ECC组块源自非易失性固态存储媒体;
阈值模块,其确定所述位错误计数满足ECC组块错误阈值;
存储区错误模块,其确定含有所述ECC组块的至少一部分的存储区满足区引退准则;以及
引退模块,其使含有所述ECC组块的至少一部分的所述存储区引退,所述存储区满足所述区引退准则。
2.根据权利要求1所述的设备,其中所述ECC组块错误阈值包括满足可接受的错误阈值且低于所述ECC组块的ECC可校正错误的最大数目的位错误计数。
3.根据权利要求1所述的设备,其进一步包括错误存入模块,所述错误存入模块记录与具有满足所述ECC组块错误阈值的所述位错误计数的ECC组块相关联的识别符和与确定所述位错误计数相关联的时间指示符。
4.根据权利要求1所述的设备,其进一步包括
媒体错误预测模块,其监视存储区引退率;以及
引退界限模块,其确定所述存储区引退率满足存储区引退阈值且在所述存储区引退率满足所述存储区引退阈值时发送通知。
5.根据权利要求1所述的设备,其中由所述引退模块引退的所述存储区跨越固态存储元件阵列的媒体元件,使得每一元件包含所述存储区的一部分且所述存储区的所述部分是并行存取的。
6.根据权利要求1所述的设备,其中
所述固态存储媒体包括以二维阵列布置的多个固态存储器元件,每一元件包括多个物理擦除块(“PEB”)、包括逻辑擦除块(“LEB”)的PEB群组,其中每一LEB包括来自每一固态存储器元件的至少一个PEB;
数据存储在逻辑页中,所述逻辑页包括在LEB内的每一PEB中的物理页;且ECC组块包括来自逻辑页中的每一物理页的数据的至少一部分。
7.根据权利要求1所述的设备,其中所述存储区包括以下各项中的一者或一者以上:ECC组块、多个ECC组块、页、跨越多个固态存储芯片的逻辑页、PEB、LEB、芯片、一行芯片、一列芯片和芯片上的裸片。
8.根据权利要求1所述的设备,其中所述区引退准则进一步包括基于与存储区相关联的一个或一个以上数据错误来确定所述存储区满足区引退准则,其中所述一个或一个以上数据错误是在读取操作、擦除操作和编程操作中的一者或一者以上期间检测。
9.根据权利要求1所述的设备,其进一步包括验证模块,所述验证模块验证由所述引退模块引退的所述存储区对于存储数据来说是不可靠的。
10.根据权利要求9所述的设备,其中所述验证模块允许在所述存储区错误模块确定所述存储区满足所述区引退准则之后在所述存储区中的数据存储。
11.根据权利要求1所述的设备,其进一步包括干扰计数器,所述干扰计数器确定所述存储区的读取计数和编程计数中的一者或一者以上,所述存储区错误模块响应于读取计数和写入计数中的一者或一者以上满足干扰阈值而确定所述存储区未能满足所述区引退准则。
12.根据权利要求11所述的设备,其中所述存储区错误模块对具有满足所述干扰阈值的读取计数和编程计数中的一者的所述存储区进行标记。
13.根据权利要求1所述的设备,其进一步包括包括所述非易失性固态媒体的固态存储装置。
14.根据权利要求13所述的设备,其进一步包括经由总线和计算机网络中的一者与所述固态存储装置通信的计算机。
15.一种用于确定固态存储装置状态的方法,所述方法包括:
确定存储在ECC组块中的数据含有错误校正码(“ECC”)可校正错误;
确定所述ECC组块的位错误计数,所述ECC组块源自非易失性固态存储媒体;
确定所述位错误计数满足ECC组块错误阈值;
确定含有所述ECC组块的至少一部分的存储区满足区引退准则;以及
使含有所述ECC组块的至少一部分的所述存储区引退,所述存储区满足所述区引退准则。
16.根据权利要求15所述的方法,其中所述ECC组块错误阈值包括满足可接受的错误阈值且低于所述ECC组块的ECC可校正错误的最大数目的位错误计数。
17.根据权利要求15所述的方法,其进一步包括记录与确定所述位错误计数相关联的时间指示符并记录与具有满足所述ECC组块错误阈值的所述位错误计数的所述ECC组块的识别符。
18.根据权利要求15所述的方法,其进一步包括确定存储区引退率满足存储区引退阈值,根据与存储区的每一引退相关联的所记录时间指示符来确定所述存储区引退率。
19.根据权利要求15所述的方法,其针对存储区的每一读取操作和每一编程操作中的一者或一者以上而递增用于所述存储区的干扰计数器,其中响应于用于所述存储区的所述干扰计数器满足干扰阈值而不使满足区引退准则的引退区引退。
20.一种用于使存储区引退的设备,所述设备包括:
错误模块,其确定存储区具有一个或一个以上数据错误,所述存储区包括非易失性固态存储装置,所述错误模块包括
错误校正码(“ECC”)错误模块,其确定存储在ECC组块中的数据含有可用ECC和相关联的ECC算法校正的错误,且进一步确定所述ECC组块的位错误计数,所述ECC组块源自非易失性固态存储媒体中的存储区;
阈值模块,其通过确定所述位错误计数满足ECC组块错误阈值而确定所述ECC组块具有数据错误;
擦除错误模块,其在擦除操作期间检测所述存储区中的数据错误;以及
编程错误模块,其在编程操作期间检测所述存储区中的数据错误;
存储区错误模块,其确定由所述错误模块确定为具有一个或一个以上数据错误的存储区满足区引退准则;以及
引退模块,其使所述存储区引退,所述存储区满足所述区引退准则。
21.根据权利要求20所述的设备,其进一步包括重试模块,所述重试模块验证被引退的存储区具有一个或一个以上数据错误,所述存储区最初由引退模块基于所述存储区的所报告硬件错误而被引退。
22.根据权利要求21所述的设备,其中所述重试模块通过使用无用单元收集操作而确定存储区是否具有一个或一个以上数据错误,所述无用单元收集操作至少包括对所述存储区执行擦除操作和在所述擦除操作期间检测一个或一个以上数据错误。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11295508P | 2008-11-10 | 2008-11-10 | |
US61/112,955 | 2008-11-10 | ||
PCT/US2009/063938 WO2010054410A2 (en) | 2008-11-10 | 2009-11-10 | Apparatus, system, and method for predicting failures in solid-state storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102272731A true CN102272731A (zh) | 2011-12-07 |
Family
ID=42153659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801541492A Pending CN102272731A (zh) | 2008-11-10 | 2009-11-10 | 用于预测固态存储装置中的故障的设备、系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8516343B2 (zh) |
KR (1) | KR20110086725A (zh) |
CN (1) | CN102272731A (zh) |
WO (1) | WO2010054410A2 (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103456367A (zh) * | 2012-05-30 | 2013-12-18 | 飞思卡尔半导体公司 | 非易失性存储器阵列中检测读取失败的方法和存储器系统 |
CN103761195A (zh) * | 2014-01-09 | 2014-04-30 | 浪潮电子信息产业股份有限公司 | 一种利用分布式数据编码的存储方法 |
CN103810055A (zh) * | 2012-11-12 | 2014-05-21 | 飞思卡尔半导体公司 | 编程具有错误校正码(ecc)的非易失性存储器(nvm)系统 |
CN104220991A (zh) * | 2012-03-16 | 2014-12-17 | 马维尔国际贸易有限公司 | 用于允许数据在nand闪存上的有效存储的架构 |
WO2015027678A1 (zh) * | 2013-08-27 | 2015-03-05 | 华为技术有限公司 | 一种坏道修复方法及装置 |
CN104714896A (zh) * | 2013-12-17 | 2015-06-17 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN105097044A (zh) * | 2014-05-16 | 2015-11-25 | 爱思开海力士有限公司 | 读取干扰检测 |
CN105575434A (zh) * | 2014-10-31 | 2016-05-11 | 英飞凌科技股份有限公司 | 非易失性存储器的健康状态 |
CN106688044A (zh) * | 2014-12-22 | 2017-05-17 | 桑迪士克科技有限责任公司 | 基于单元电压分布单独测量存储器磨损和数据保持 |
CN107134294A (zh) * | 2017-05-27 | 2017-09-05 | 北京东土军悦科技有限公司 | 一种ecc信息获取方法及系统 |
CN107240418A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN109582216A (zh) * | 2017-09-28 | 2019-04-05 | 慧荣科技股份有限公司 | 数据储存装置与存储器装置的数据处理方法 |
CN109739671A (zh) * | 2019-01-08 | 2019-05-10 | 佛山赛宝信息产业技术研究院有限公司 | 一种电子设备贮存可靠度预测方法 |
WO2019127350A1 (en) * | 2017-12-29 | 2019-07-04 | Micron Technology, Inc. | Uncorrectable ecc |
CN110473581A (zh) * | 2018-05-09 | 2019-11-19 | 光宝电子(广州)有限公司 | 固态储存装置及其相关控制方法 |
CN110781027A (zh) * | 2019-10-29 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 内存ecc报错阈值的确定方法、确定装置及确定设备 |
CN111190841A (zh) * | 2018-11-14 | 2020-05-22 | 三星电子株式会社 | 存储设备及其存储器管理方法 |
CN111273857A (zh) * | 2018-12-04 | 2020-06-12 | 美光科技公司 | 基于可靠性统计分布的数据块的子组的数据的选择性重定位 |
CN111383707A (zh) * | 2018-12-31 | 2020-07-07 | 美光科技公司 | 用于检测及报告存储器装置的故障的存储器装置及方法 |
CN112997254A (zh) * | 2018-10-12 | 2021-06-18 | 美光科技公司 | 用于筛选容易出现缺陷的存储器块的基于度量的反应性读取 |
CN113094202A (zh) * | 2020-01-08 | 2021-07-09 | 西部数据技术公司 | 用于处理存储器装置中与温度有关的故障的设备和方法 |
CN113168875A (zh) * | 2018-10-30 | 2021-07-23 | 美光科技公司 | 读取干扰扫描合并 |
Families Citing this family (145)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI389122B (zh) * | 2008-10-30 | 2013-03-11 | Silicon Motion Inc | 用來存取一快閃記憶體之方法以及相關之記憶裝置及其控制器 |
US9063874B2 (en) | 2008-11-10 | 2015-06-23 | SanDisk Technologies, Inc. | Apparatus, system, and method for wear management |
CN102272731A (zh) | 2008-11-10 | 2011-12-07 | 弗森-艾奥公司 | 用于预测固态存储装置中的故障的设备、系统和方法 |
US9170897B2 (en) | 2012-05-29 | 2015-10-27 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing solid-state storage reliability |
US8473815B2 (en) * | 2008-12-22 | 2013-06-25 | Industrial Technology Research Institute | Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data |
US8438455B2 (en) * | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
KR20100102925A (ko) * | 2009-03-12 | 2010-09-27 | 삼성전자주식회사 | 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템 |
TW201037718A (en) * | 2009-04-01 | 2010-10-16 | Jmicron Technology Corp | Storage device and method for extending lifetime of storage device |
US8321639B2 (en) * | 2009-12-30 | 2012-11-27 | Lsi Corporation | Command tracking for direct access block storage devices |
US20100306451A1 (en) * | 2009-06-01 | 2010-12-02 | Joshua Johnson | Architecture for nand flash constraint enforcement |
US8555141B2 (en) * | 2009-06-04 | 2013-10-08 | Lsi Corporation | Flash memory organization |
US8166258B2 (en) * | 2009-07-24 | 2012-04-24 | Lsi Corporation | Skip operations for solid state disks |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US7975193B2 (en) * | 2009-06-01 | 2011-07-05 | Lsi Corporation | Solid state storage end of life prediction with correction history |
US8245112B2 (en) | 2009-06-04 | 2012-08-14 | Lsi Corporation | Flash memory organization |
US8868809B2 (en) * | 2009-11-30 | 2014-10-21 | Lsi Corporation | Interrupt queuing in a media controller architecture |
US8286004B2 (en) * | 2009-10-09 | 2012-10-09 | Lsi Corporation | Saving encryption keys in one-time programmable memory |
US8806144B2 (en) | 2009-05-12 | 2014-08-12 | Stec, Inc. | Flash storage device with read cache |
US8281227B2 (en) * | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8151137B2 (en) * | 2009-05-28 | 2012-04-03 | Lsi Corporation | Systems and methods for governing the life cycle of a solid state drive |
US8176367B2 (en) * | 2009-05-28 | 2012-05-08 | Agere Systems Inc. | Systems and methods for managing end of life in a solid state drive |
TWI404071B (zh) * | 2009-06-23 | 2013-08-01 | Phison Electronics Corp | 能識別快閃記憶體中錯誤資料的控制電路及儲存系統與方法 |
US9170879B2 (en) * | 2009-06-24 | 2015-10-27 | Headway Technologies, Inc. | Method and apparatus for scrubbing accumulated data errors from a memory system |
US8683456B2 (en) * | 2009-07-13 | 2014-03-25 | Apple Inc. | Test partitioning for a non-volatile memory |
TWI408688B (zh) * | 2009-10-12 | 2013-09-11 | Phison Electronics Corp | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
US8312349B2 (en) | 2009-10-27 | 2012-11-13 | Micron Technology, Inc. | Error detection/correction based memory management |
US8671265B2 (en) | 2010-03-05 | 2014-03-11 | Solidfire, Inc. | Distributed data storage system providing de-duplication of data using block identifiers |
US8645776B2 (en) * | 2010-03-24 | 2014-02-04 | Apple Inc. | Run-time testing of memory locations in a non-volatile memory |
US8650446B2 (en) * | 2010-03-24 | 2014-02-11 | Apple Inc. | Management of a non-volatile memory based on test quality |
US8407517B2 (en) * | 2010-04-08 | 2013-03-26 | Hitachi, Ltd. | Methods and apparatus for managing error codes for storage systems coupled with external storage systems |
KR101614950B1 (ko) * | 2010-04-12 | 2016-04-25 | 삼성전자주식회사 | 저장 장치에 물리적 식별자를 생성하는 방법 및 기계로 읽을 수 있는 저장 매체 |
US8627183B1 (en) * | 2010-05-11 | 2014-01-07 | Marvell International Ltd. | Systems and methods for storing variable rate product codes |
US8751903B2 (en) | 2010-07-26 | 2014-06-10 | Apple Inc. | Methods and systems for monitoring write operations of non-volatile memory |
US8713268B2 (en) | 2010-08-05 | 2014-04-29 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
US9146875B1 (en) * | 2010-08-09 | 2015-09-29 | Western Digital Technologies, Inc. | Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining |
US20130173991A1 (en) * | 2010-10-12 | 2013-07-04 | Frederick A. Ware | Facilitating Error Detection And Recovery In A Memory System |
US8438429B2 (en) * | 2010-12-01 | 2013-05-07 | Hitachi, Ltd. | Storage control apparatus and storage control method |
US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
US8966184B2 (en) | 2011-01-31 | 2015-02-24 | Intelligent Intellectual Property Holdings 2, LLC. | Apparatus, system, and method for managing eviction of data |
CN102073563B (zh) * | 2011-02-23 | 2015-09-09 | 深圳市江波龙电子有限公司 | 闪存设备、闪存设备中存储块的管理方法及系统 |
US8433681B2 (en) | 2011-05-12 | 2013-04-30 | Dell Products L.P. | System and method for managing replication in an object storage system |
US9086983B2 (en) * | 2011-05-31 | 2015-07-21 | Micron Technology, Inc. | Apparatus and methods for providing data integrity |
US9417894B1 (en) | 2011-06-15 | 2016-08-16 | Ryft Systems, Inc. | Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module |
US20120324143A1 (en) | 2011-06-15 | 2012-12-20 | Data Design Corporation | Methods and apparatus for data access by a reprogrammable circuit module |
US10678619B2 (en) | 2011-07-27 | 2020-06-09 | Pure Storage, Inc. | Unified logs and device statistics |
US8914667B2 (en) * | 2011-07-27 | 2014-12-16 | Cleversafe, Inc. | Identifying a slice error in a dispersed storage network |
US11016702B2 (en) | 2011-07-27 | 2021-05-25 | Pure Storage, Inc. | Hierarchical event tree |
JP2013054409A (ja) * | 2011-08-31 | 2013-03-21 | Toshiba Corp | 情報記憶装置および情報記憶方法 |
CN102541466A (zh) * | 2011-10-27 | 2012-07-04 | 忆正存储技术(武汉)有限公司 | 一种混合存储控制系统和方法 |
US8719668B2 (en) * | 2011-11-01 | 2014-05-06 | Hitachi, Ltd. | Non-volatile storage system compensating prior probability for low-density parity check codes |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9996501B1 (en) * | 2012-06-28 | 2018-06-12 | Amazon Technologies, Inc. | Validating document content prior to format conversion based on a calculated threshold as a function of document size |
US9037943B2 (en) * | 2012-10-26 | 2015-05-19 | Intel Corporation | Identification of non-volatile memory die for use in remedial action |
WO2014074390A1 (en) | 2012-11-06 | 2014-05-15 | Rambus Inc. | Memory repair using external tags |
GB2507961A (en) | 2012-11-14 | 2014-05-21 | Ibm | Back-up and restoration of data between volatile and flash memory |
US8930778B2 (en) | 2012-11-15 | 2015-01-06 | Seagate Technology Llc | Read disturb effect determination |
US8990641B2 (en) | 2012-11-16 | 2015-03-24 | International Business Machines Corporation | Selective posted data error detection based on history |
US8990640B2 (en) | 2012-11-16 | 2015-03-24 | International Business Machines Corporation | Selective posted data error detection based on request type |
US9384002B2 (en) | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
US9026893B1 (en) * | 2012-12-13 | 2015-05-05 | Western Digital Technologies, Inc. | Dynamically assigning inactive pages not used in Reed-Solomon code in non-volatile solid-state storage array |
US9575829B2 (en) * | 2013-03-13 | 2017-02-21 | Sandisk Technologies Llc | Probability-based remedial action for read disturb effects |
US9058260B2 (en) | 2013-04-04 | 2015-06-16 | International Business Machines Corporation | Transient condition management utilizing a posted error detection processing protocol |
GB2514354A (en) | 2013-05-20 | 2014-11-26 | Ibm | Managing storage devices having a lifetime of a finite number of operations |
GB2517435A (en) | 2013-08-19 | 2015-02-25 | Ibm | Fast data back-up and restore between volatile and flash memory |
US8996741B1 (en) * | 2013-09-25 | 2015-03-31 | International Business Machiness Corporation | Event driven remote direct memory access snapshots |
US9164828B2 (en) | 2013-09-26 | 2015-10-20 | Seagate Technology Llc | Systems and methods for enhanced data recovery in a solid state memory system |
US9424179B2 (en) | 2013-10-17 | 2016-08-23 | Seagate Technology Llc | Systems and methods for latency based data recycling in a solid state memory system |
US10019352B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for adaptive reserve storage |
US9201729B2 (en) | 2013-10-21 | 2015-12-01 | Seagate Technology, Llc | Systems and methods for soft data utilization in a solid state memory system |
US9378840B2 (en) | 2013-10-28 | 2016-06-28 | Seagate Technology Llc | Systems and methods for sub-zero threshold characterization in a memory cell |
US9286176B1 (en) * | 2013-11-08 | 2016-03-15 | Western Digital Technologies, Inc. | Selective skipping of blocks in an SSD |
US9276609B2 (en) | 2013-11-16 | 2016-03-01 | Seagate Technology Llc | Systems and methods for soft decision generation in a solid state memory system |
US9535777B2 (en) * | 2013-11-22 | 2017-01-03 | Intel Corporation | Defect management policies for NAND flash memory |
US9390003B2 (en) * | 2013-12-09 | 2016-07-12 | International Business Machines Corporation | Retirement of physical memory based on dwell time |
US9514845B1 (en) * | 2013-12-12 | 2016-12-06 | SK Hynix Inc. | Check after write for assessing wear related degradation in solid state storage |
KR20150074655A (ko) * | 2013-12-24 | 2015-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US9576683B2 (en) | 2014-02-06 | 2017-02-21 | Seagate Technology Llc | Systems and methods for hard error reduction in a solid state memory device |
US9378810B2 (en) | 2014-02-11 | 2016-06-28 | Seagate Technology Llc | Systems and methods for last written page handling in a memory device |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9471428B2 (en) | 2014-05-06 | 2016-10-18 | International Business Machines Corporation | Using spare capacity in solid state drives |
US9361182B2 (en) * | 2014-05-20 | 2016-06-07 | Transcend Information, Inc. | Method for read disturbance management in non-volatile memory devices |
US9471451B2 (en) | 2014-06-18 | 2016-10-18 | International Business Machines Corporation | Implementing enhanced wear leveling in 3D flash memories |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US10379926B2 (en) * | 2014-08-05 | 2019-08-13 | Macronix International Co., Ltd. | Method and device for monitoring data error status in a memory |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US20160078966A1 (en) * | 2014-09-14 | 2016-03-17 | Transcend Information, Inc. | Method of performing wear management in non-volatile memory devices |
US10235056B2 (en) | 2014-09-26 | 2019-03-19 | Western Digital Technologies, Inc. | Storage device health diagnosis |
US9690655B2 (en) * | 2014-09-30 | 2017-06-27 | EMC IP Holding Company LLC | Method and system for improving flash storage utilization by predicting bad m-pages |
US9519539B2 (en) * | 2014-10-24 | 2016-12-13 | Macronix International Co., Ltd. | Monitoring data error status in a memory |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9678864B2 (en) | 2014-12-03 | 2017-06-13 | Seagate Technology Llc | Data reallocation upon detection of errors |
US10949286B2 (en) | 2015-01-12 | 2021-03-16 | Hewlett Packard Enterprise Development Lp | Handling memory errors in memory modules that include volatile and non-volatile components |
US9959067B2 (en) | 2015-02-04 | 2018-05-01 | Sandisk Technologies Llc | Memory block allocation by block health |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9691505B2 (en) * | 2015-03-27 | 2017-06-27 | Intel Corporation | Dynamic application of error correction code (ECC) based on error type |
US9710317B2 (en) * | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
US9632715B2 (en) | 2015-08-10 | 2017-04-25 | International Business Machines Corporation | Back-up and restoration of data between volatile and flash memory |
US10133625B2 (en) * | 2015-08-11 | 2018-11-20 | Western Digital Technologies, Inc. | Storing parity data separate from protected data |
US10599352B2 (en) * | 2015-08-14 | 2020-03-24 | Samsung Electronics Co., Ltd. | Online flash resource allocation manager based on a TCO model |
US10665305B2 (en) * | 2015-09-09 | 2020-05-26 | Toshiba Memory Corporation | Host device connectable to memory device performing patrol read and memory device performing patrol read |
JP6158265B2 (ja) * | 2015-09-16 | 2017-07-05 | 株式会社東芝 | キャッシュメモリシステム |
US11385797B2 (en) | 2015-10-05 | 2022-07-12 | Micron Technology, Inc. | Solid state storage device with variable logical capacity based on memory lifecycle |
US9898215B2 (en) * | 2015-12-07 | 2018-02-20 | International Business Machines Corporation | Efficient management of page retirement in non-volatile memory utilizing page retirement classes |
US10048877B2 (en) * | 2015-12-21 | 2018-08-14 | Intel Corporation | Predictive memory maintenance |
US9928154B2 (en) * | 2016-01-12 | 2018-03-27 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Leveling stress factors among like components in a server |
US11169707B2 (en) | 2016-01-22 | 2021-11-09 | Netapp, Inc. | Garbage collection pacing in a storage system |
US10460825B2 (en) * | 2016-01-28 | 2019-10-29 | International Business Machines Corporation | Sorting non-volatile memories |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10180875B2 (en) | 2016-07-08 | 2019-01-15 | Toshiba Memory Corporation | Pool-level solid state drive error correction |
US9761290B1 (en) | 2016-08-25 | 2017-09-12 | Sandisk Technologies Llc | Overheat prevention for annealing non-volatile memory |
US10467134B2 (en) | 2016-08-25 | 2019-11-05 | Sandisk Technologies Llc | Dynamic anneal characteristics for annealing non-volatile memory |
US10423345B2 (en) * | 2016-09-06 | 2019-09-24 | Smart IOPS, Inc. | Devices, systems, and methods for increasing endurance on a storage system having a plurality of components using adaptive code-rates |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
KR102630116B1 (ko) * | 2016-10-18 | 2024-01-29 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20180059201A (ko) * | 2016-11-25 | 2018-06-04 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 raid 시스템 |
US10452468B2 (en) | 2016-12-30 | 2019-10-22 | Western Digital Technologies, Inc. | Method and system for managing non-volatile memory |
US11403198B2 (en) | 2017-07-27 | 2022-08-02 | EMC IP Holding Company LLC | Managing data within solid state drive storage based on recurring write quotas |
US10802911B2 (en) * | 2017-08-16 | 2020-10-13 | Western Digital Technologies, Inc. | Non-volatile storage with wear-adjusted failure prediction |
US10776202B1 (en) * | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US11354247B2 (en) | 2017-11-10 | 2022-06-07 | Smart IOPS, Inc. | Devices, systems, and methods for configuring a storage device with cache |
US11048581B2 (en) * | 2017-11-17 | 2021-06-29 | Samsung Electronics Co., Ltd. | Storage device telemetry for provisioning I/O |
US10699797B2 (en) * | 2018-04-27 | 2020-06-30 | Seagate Technology Llc | Storage area retirement in a storage device |
TWI650763B (zh) * | 2018-05-14 | 2019-02-11 | 慧榮科技股份有限公司 | 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統 |
US10838831B2 (en) * | 2018-05-14 | 2020-11-17 | Micron Technology, Inc. | Die-scope proximity disturb and defect remapping scheme for non-volatile memory |
US11055167B2 (en) * | 2018-05-14 | 2021-07-06 | Micron Technology, Inc. | Channel-scope proximity disturb and defect remapping scheme for non-volatile memory |
US10872008B2 (en) * | 2018-06-22 | 2020-12-22 | Micron Technology, Inc. | Data recovery after storage failure in a memory system |
CN111104047B (zh) * | 2018-10-25 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 管理冗余磁盘阵列的方法、设备和计算机可读存储介质 |
CN110333965B (zh) * | 2019-05-30 | 2023-05-26 | 深圳市博德越科技有限公司 | 一种固态硬盘控制器装置及固态硬盘数据校验方法 |
US11183267B2 (en) * | 2019-07-12 | 2021-11-23 | Micron Technology, Inc. | Recovery management of retired super management units |
US11907114B2 (en) | 2019-08-18 | 2024-02-20 | Smart IOPS, Inc. | Devices, systems, and methods for dynamically remapping memory addresses |
US11580030B2 (en) | 2019-08-18 | 2023-02-14 | Smart IOPS, Inc. | Devices, systems, and methods of logical-to-physical address mapping |
US11669754B2 (en) | 2020-02-25 | 2023-06-06 | Samsung Electronics Co., Ltd. | Data management, reduction and sampling schemes for storage device failure |
EP3913634A1 (en) | 2020-05-22 | 2021-11-24 | Nxp B.V. | Memory testing by reading and verifying again memory locations after read access |
US11662943B2 (en) * | 2020-06-16 | 2023-05-30 | Micron Technology, Inc. | Adjustable media management |
US11409601B1 (en) * | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
US11656940B2 (en) * | 2021-08-13 | 2023-05-23 | Micron Technology, Inc. | Techniques for managing temporarily retired blocks of a memory system |
TW202320080A (zh) * | 2021-11-02 | 2023-05-16 | 慧榮科技股份有限公司 | 資料儲存裝置及其損壞資料區塊的篩選方法 |
US20230315691A1 (en) * | 2022-03-30 | 2023-10-05 | Netapp, Inc. | Read amplification reduction in a virtual storage system when compression is enabled for a zoned checksum scheme |
US20240103949A1 (en) * | 2022-09-27 | 2024-03-28 | Hitachi, Ltd. | Failure area identification system |
CN117711473A (zh) * | 2024-02-06 | 2024-03-15 | 南京扬贺扬微电子科技有限公司 | 一种基于存储器设备的自检数据管理系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005041020A1 (en) * | 2003-10-24 | 2005-05-06 | Nokia Corporation | Method for shifting a shortcut in an electronic device, a display unit of the device, and an electronic device |
CN101213605A (zh) * | 2005-06-29 | 2008-07-02 | 皇家飞利浦电子股份有限公司 | 检测光盘内的数据恶化 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5473753A (en) * | 1992-10-30 | 1995-12-05 | Intel Corporation | Method of managing defects in flash disk memories |
US5715193A (en) * | 1996-05-23 | 1998-02-03 | Micron Quantum Devices, Inc. | Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks |
JP3545535B2 (ja) | 1996-05-29 | 2004-07-21 | 株式会社アドバンテスト | 半導体メモリ試験方法および装置 |
JP3608694B2 (ja) | 1996-09-18 | 2005-01-12 | 株式会社アドバンテスト | メモリ試験装置 |
US6034831A (en) * | 1997-05-09 | 2000-03-07 | International Business Machines Corporation | Dynamic reverse reassign apparatus and method for a data recording disk drive |
US6505305B1 (en) | 1998-07-16 | 2003-01-07 | Compaq Information Technologies Group, L.P. | Fail-over of multiple memory blocks in multiple memory modules in computer system |
KR100331542B1 (ko) | 1998-10-09 | 2002-06-20 | 윤종용 | 불량메모리셀어레이블락들을스킵할수있는어드레스디코더를구비하는반도체메모리장치및이를사용하는복합반도체장치 |
GB9903490D0 (en) * | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US6609212B1 (en) | 2000-03-09 | 2003-08-19 | International Business Machines Corporation | Apparatus and method for sharing predictive failure information on a computer network |
JP4601119B2 (ja) | 2000-05-02 | 2010-12-22 | 株式会社アドバンテスト | メモリ試験方法・メモリ試験装置 |
US20020108016A1 (en) | 2000-12-13 | 2002-08-08 | Seagate Technology Llc | System for characterizing performance of data handling systems under particular stimuli |
US6948102B2 (en) | 2002-04-29 | 2005-09-20 | International Business Machines Corporation | Predictive failure analysis for storage networks |
US7380198B2 (en) | 2003-06-11 | 2008-05-27 | International Business Machines Corporation | System and method for detecting write errors in a storage device |
US20050091452A1 (en) | 2003-10-28 | 2005-04-28 | Ying Chen | System and method for reducing data loss in disk arrays by establishing data redundancy on demand |
US7308603B2 (en) | 2004-10-18 | 2007-12-11 | International Business Machines Corporation | Method and system for reducing memory faults while running an operating system |
US20070006048A1 (en) | 2005-06-29 | 2007-01-04 | Intel Corporation | Method and apparatus for predicting memory failure in a memory system |
US7877554B2 (en) | 2005-11-04 | 2011-01-25 | Oracle America, Inc. | Method and system for block reallocation |
US7739472B2 (en) | 2005-11-22 | 2010-06-15 | Sandisk Corporation | Memory system for legacy hosts |
US20070255889A1 (en) * | 2006-03-22 | 2007-11-01 | Yoav Yogev | Non-volatile memory device and method of operating the device |
US7567472B2 (en) | 2006-04-12 | 2009-07-28 | Micron Technology, Inc. | Memory block testing |
US7451264B2 (en) * | 2006-04-13 | 2008-11-11 | Sandisk Corporation | Cycle count storage methods |
US7349254B2 (en) * | 2006-05-31 | 2008-03-25 | Qimonda Flash Gmbh & Co. Kg | Charge-trapping memory device and methods for its manufacturing and operation |
US20080010566A1 (en) * | 2006-06-21 | 2008-01-10 | Chang Tsung-Yung Jonathan | Disabling portions of memory with non-deterministic errors |
US7877358B2 (en) | 2006-11-21 | 2011-01-25 | Microsoft Corporation | Replacing system hardware |
WO2008070814A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a scalable, composite, reconfigurable backplane |
US7971127B2 (en) | 2007-03-31 | 2011-06-28 | Sandisk Technologies Inc. | Guided simulated annealing in non-volatile memory error correction control |
US7765426B2 (en) * | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
US7623365B2 (en) * | 2007-08-29 | 2009-11-24 | Micron Technology, Inc. | Memory device interface methods, apparatus, and systems |
US8635491B2 (en) * | 2007-09-28 | 2014-01-21 | Seagate Technology Llc | Storage device maintenance in a portable device based on a power event |
US8321625B2 (en) * | 2007-12-05 | 2012-11-27 | Densbits Technologies Ltd. | Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith |
US8195978B2 (en) * | 2008-05-16 | 2012-06-05 | Fusion-IO. Inc. | Apparatus, system, and method for detecting and replacing failed data storage |
CN102272731A (zh) | 2008-11-10 | 2011-12-07 | 弗森-艾奥公司 | 用于预测固态存储装置中的故障的设备、系统和方法 |
-
2009
- 2009-11-10 CN CN2009801541492A patent/CN102272731A/zh active Pending
- 2009-11-10 KR KR1020117013131A patent/KR20110086725A/ko active IP Right Grant
- 2009-11-10 US US12/616,124 patent/US8516343B2/en not_active Expired - Fee Related
- 2009-11-10 WO PCT/US2009/063938 patent/WO2010054410A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005041020A1 (en) * | 2003-10-24 | 2005-05-06 | Nokia Corporation | Method for shifting a shortcut in an electronic device, a display unit of the device, and an electronic device |
CN101213605A (zh) * | 2005-06-29 | 2008-07-02 | 皇家飞利浦电子股份有限公司 | 检测光盘内的数据恶化 |
Cited By (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104220991B (zh) * | 2012-03-16 | 2017-08-29 | 马维尔国际贸易有限公司 | 用于允许数据在nand闪存上的有效存储的架构 |
CN104220991A (zh) * | 2012-03-16 | 2014-12-17 | 马维尔国际贸易有限公司 | 用于允许数据在nand闪存上的有效存储的架构 |
CN104246708A (zh) * | 2012-03-16 | 2014-12-24 | 马维尔国际贸易有限公司 | 针对nand闪存上数据的存储的架构 |
CN103456367A (zh) * | 2012-05-30 | 2013-12-18 | 飞思卡尔半导体公司 | 非易失性存储器阵列中检测读取失败的方法和存储器系统 |
CN103456367B (zh) * | 2012-05-30 | 2018-06-29 | 恩智浦美国有限公司 | 非易失性存储器阵列中检测读取失败的方法和存储器系统 |
CN103810055A (zh) * | 2012-11-12 | 2014-05-21 | 飞思卡尔半导体公司 | 编程具有错误校正码(ecc)的非易失性存储器(nvm)系统 |
CN103810055B (zh) * | 2012-11-12 | 2018-06-26 | 恩智浦美国有限公司 | 编程具有错误校正码(ecc)的非易失性存储器(nvm)系统 |
WO2015027678A1 (zh) * | 2013-08-27 | 2015-03-05 | 华为技术有限公司 | 一种坏道修复方法及装置 |
US10127099B2 (en) | 2013-08-27 | 2018-11-13 | Huawei Technologies Co., Ltd. | Bad sector repair method and apparatus |
CN104714896A (zh) * | 2013-12-17 | 2015-06-17 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
US10379924B2 (en) | 2013-12-17 | 2019-08-13 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
CN104714896B (zh) * | 2013-12-17 | 2018-03-16 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN103761195A (zh) * | 2014-01-09 | 2014-04-30 | 浪潮电子信息产业股份有限公司 | 一种利用分布式数据编码的存储方法 |
CN103761195B (zh) * | 2014-01-09 | 2017-05-10 | 浪潮电子信息产业股份有限公司 | 一种利用分布式数据编码的存储方法 |
CN105097044A (zh) * | 2014-05-16 | 2015-11-25 | 爱思开海力士有限公司 | 读取干扰检测 |
CN105097044B (zh) * | 2014-05-16 | 2018-07-27 | 爱思开海力士有限公司 | 读取干扰检测 |
CN105575434A (zh) * | 2014-10-31 | 2016-05-11 | 英飞凌科技股份有限公司 | 非易失性存储器的健康状态 |
CN106688044A (zh) * | 2014-12-22 | 2017-05-17 | 桑迪士克科技有限责任公司 | 基于单元电压分布单独测量存储器磨损和数据保持 |
CN107240418A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN107240418B (zh) * | 2016-03-28 | 2020-09-11 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN107134294B (zh) * | 2017-05-27 | 2020-04-24 | 北京东土军悦科技有限公司 | 一种ecc信息获取方法及系统 |
CN107134294A (zh) * | 2017-05-27 | 2017-09-05 | 北京东土军悦科技有限公司 | 一种ecc信息获取方法及系统 |
CN109582216A (zh) * | 2017-09-28 | 2019-04-05 | 慧荣科技股份有限公司 | 数据储存装置与存储器装置的数据处理方法 |
CN109582216B (zh) * | 2017-09-28 | 2022-02-01 | 慧荣科技股份有限公司 | 数据储存装置与存储器装置的数据处理方法 |
US11074989B2 (en) | 2017-12-29 | 2021-07-27 | Micron Technology, Inc. | Uncorrectable ECC |
WO2019127350A1 (en) * | 2017-12-29 | 2019-07-04 | Micron Technology, Inc. | Uncorrectable ecc |
KR20220025189A (ko) * | 2017-12-29 | 2022-03-03 | 마이크론 테크놀로지, 인크. | 정정 불가능 ecc |
KR102362767B1 (ko) * | 2017-12-29 | 2022-02-15 | 마이크론 테크놀로지, 인크. | 정정 불가능 ecc |
KR102420955B1 (ko) | 2017-12-29 | 2022-07-15 | 마이크론 테크놀로지, 인크. | 정정 불가능 ecc |
KR20200100167A (ko) * | 2017-12-29 | 2020-08-25 | 마이크론 테크놀로지, 인크. | 정정 불가능 ecc |
CN111656329A (zh) * | 2017-12-29 | 2020-09-11 | 美光科技公司 | 不可校正ecc |
US11694760B2 (en) | 2017-12-29 | 2023-07-04 | Micron Technology, Inc. | Uncorrectable ECC |
CN110473581A (zh) * | 2018-05-09 | 2019-11-19 | 光宝电子(广州)有限公司 | 固态储存装置及其相关控制方法 |
CN110473581B (zh) * | 2018-05-09 | 2020-12-29 | 建兴储存科技(广州)有限公司 | 固态储存装置及其相关控制方法 |
US11914490B2 (en) | 2018-10-12 | 2024-02-27 | Micron Technology, Inc. | Reactive read based on metrics to screen defect prone memory blocks |
CN112997254A (zh) * | 2018-10-12 | 2021-06-18 | 美光科技公司 | 用于筛选容易出现缺陷的存储器块的基于度量的反应性读取 |
CN112997254B (zh) * | 2018-10-12 | 2024-04-02 | 美光科技公司 | 用于筛选容易出现缺陷的存储器块的基于度量的反应性读取 |
CN113168875A (zh) * | 2018-10-30 | 2021-07-23 | 美光科技公司 | 读取干扰扫描合并 |
CN113168875B (zh) * | 2018-10-30 | 2024-01-12 | 美光科技公司 | 读取干扰扫描合并 |
CN111190841A (zh) * | 2018-11-14 | 2020-05-22 | 三星电子株式会社 | 存储设备及其存储器管理方法 |
US11740805B2 (en) | 2018-12-04 | 2023-08-29 | Micron Technology, Inc. | Selective relocation of data of a subset of a data block based on distribution of reliability statistics |
CN111273857A (zh) * | 2018-12-04 | 2020-06-12 | 美光科技公司 | 基于可靠性统计分布的数据块的子组的数据的选择性重定位 |
CN111383707A (zh) * | 2018-12-31 | 2020-07-07 | 美光科技公司 | 用于检测及报告存储器装置的故障的存储器装置及方法 |
CN111383707B (zh) * | 2018-12-31 | 2024-03-19 | 美光科技公司 | 用于检测及报告存储器装置的故障的存储器装置及方法 |
CN109739671A (zh) * | 2019-01-08 | 2019-05-10 | 佛山赛宝信息产业技术研究院有限公司 | 一种电子设备贮存可靠度预测方法 |
CN110781027B (zh) * | 2019-10-29 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 内存ecc报错阈值的确定方法、确定装置及确定设备 |
CN110781027A (zh) * | 2019-10-29 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 内存ecc报错阈值的确定方法、确定装置及确定设备 |
CN113094202B (zh) * | 2020-01-08 | 2023-12-19 | 西部数据技术公司 | 用于处理存储器装置中与温度有关的故障的设备和方法 |
CN113094202A (zh) * | 2020-01-08 | 2021-07-09 | 西部数据技术公司 | 用于处理存储器装置中与温度有关的故障的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
US8516343B2 (en) | 2013-08-20 |
US20100122148A1 (en) | 2010-05-13 |
WO2010054410A3 (en) | 2010-08-19 |
KR20110086725A (ko) | 2011-07-29 |
WO2010054410A2 (en) | 2010-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102272731A (zh) | 用于预测固态存储装置中的故障的设备、系统和方法 | |
US10656993B2 (en) | Apparatus, system, and method to increase data integrity in a redundant storage system | |
US10372558B2 (en) | Storage device, an operating method of the storage device and an operating method of a computing system including the storage device and a host device | |
CN104978281B (zh) | 数据存储设备中的数据完整性管理 | |
US8700951B1 (en) | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata | |
EP2297742B1 (en) | Apparatus, system, and method for detecting and replacing failed data storage | |
US8239714B2 (en) | Apparatus, system, and method for bad block remapping | |
US9306599B2 (en) | Apparatus, system, and method for reconfiguring an array of storage elements | |
CN102194527B (zh) | 半导体存储器装置 | |
US9411717B2 (en) | Metadata journaling with error correction redundancy | |
CN103562888B (zh) | 用于提供数据完整性的设备及方法 | |
CN104064217A (zh) | 非易失性半导体存储器的检查方法及存储检查程序的记录介质 | |
CN102890621A (zh) | 确定固态存储介质配置参数的装置、系统和方法 | |
CN110389906A (zh) | 存储器元件中重新编排数据的方法、及其控制器与系统 | |
CN110737539B (zh) | 裸片级错误恢复方案 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111207 |