CN102099793B - 根据固态存储器的擦除计数进行误差校正的方法和装置 - Google Patents
根据固态存储器的擦除计数进行误差校正的方法和装置 Download PDFInfo
- Publication number
- CN102099793B CN102099793B CN2009801283838A CN200980128383A CN102099793B CN 102099793 B CN102099793 B CN 102099793B CN 2009801283838 A CN2009801283838 A CN 2009801283838A CN 200980128383 A CN200980128383 A CN 200980128383A CN 102099793 B CN102099793 B CN 102099793B
- Authority
- CN
- China
- Prior art keywords
- error
- demoder
- data
- erase count
- decoder
- 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.)
- Active
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/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
- 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/16—Error detection or correction of the data by redundancy in hardware
-
- 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/14—Implementation of control logic, e.g. test mode decoders
Abstract
本发明的实施例涉及维持固态存储器的至少一个块的擦除计数的方法和设备。根据存储器块的相关联的擦除计数来校正在从固态存储器读取的数据中的误差。在一些实施例中,可以根据从其读取数据的存储器块的相关联的擦除计数来实现以下误差校正操作中的一个或多个:(i)选择解码器和/或解码器模式;(ii)决定尝试使用较轻权重的权重解码器(模式)和/或较重权重解码器(模式)和/或较快解码器(模式)和/或较慢解码器(模式)校正误差;(iii)确定模式转换和/或误差校正尝试资源预算;(iv)确定软比特的数量;以及(v)选择解码总线宽度大小。
Description
相关申请的交叉引用
本专利申请要求由本发明人于2008年6月24日提交的美国临时专利申请No.61/075065的权益。
技术领域
本发明涉及用于校正在从诸如闪存的存储器读取的数据中的误差的装置、方法和计算机介质。
背景技术
非易失性存储器是可以保持它所存储的数据而无需电源的存储器类型。存在具有不同的读/写和擦除能力、访问时间、数据保持(retention)、数据持续周期(endurance cycle)等的几种类型的非易失性存储器。电可擦除可编程只读存储器(EEPROM)能够在每字节的级别上执行读写操作,这意味着可以单独读和写每个存储器位置。
由快闪型浮置栅极晶体管或单元组成的闪存是在功能上和性能上与EPROM存储器相似的非易失性存储器;闪存具有相对不昂贵的优势,虽然它工作在某些限制下。不能向在闪存上之前写过的位置重写而不首先擦除整个存储器部分,即,必须在可以再次编程闪存单元之前擦除它们(例如编程到“1”)。闪存可以仅仅擦除相对大的单元组,其通常被称为擦除块(例如,对于许多当前的商业设备,大小为16KB至2MB——预期随着具有更高容量的设备变得商业可用时,擦除块的大小将在未来增加)。
闪存器件中的误差校正
闪存以及其他存储器(例如磁存储器、光存储和易失性存储器)的一个显著特征是这些存储器是“破坏的(corrupting)介质”——一个或多个误差有时被引入到被写到存储器的原始数据中,使得当从存储器读回数据时,可能在“被翻转(flipped)”状态中读取一个或多个信息比特。
为了克服该现象并使NAND型存储器可由实际的应用使用,结合这些存储器使用纠错码(ECC)是常用的技术。
正存在对于处理闪存器件中以及包括除了闪存之外的固态存储器的存储器件中的误差校正的改善的技术和装置的需要。
器件架构的讨论
图1A(现有技术)是闪存存储器件260(现有技术)的框图。闪存存储器件包括闪存270以及可操作来读取数据并将数据写到闪存270的快闪控制器280。在这里使用术语“编程(program)”、“编程(programming)”、“被编程”和“可编程”可分别与术语“写(write)”、“写(writing)”、“被写”和“可写”互换,以表示将数据存储在闪存中。
闪存存储器件的一个例子是“外围快闪存储器件”。在计算领域中公知的是诸如USB闪存驱动器(UFD)、PC卡以及与数字相机、音乐播放器、手持和掌上计算机以及蜂窝电话一起使用的小存储卡的形式的外围闪存器件。
图1B(现有技术)是与主机设备310(例如,膝上型或台式或手持计算机、数字相机、移动电话、音乐播放器和视频游戏控制台)“耦接”或者被配置为经由器件侧接口250与主机设备310交换数据的外围闪存存储器件260*(星号表示闪存存储器件是外围闪存存储器件)的框图。外围闪存存储器件260*和主机设备310使用主机侧接口350和器件侧接口250(例如,分别是USB或SD接口)经由通信链路300相互通信。
虽然在附图中将外围闪存存储器件260*图示为与主机设备310相分离的器件,但是要认识到,在一些实现方式中,可以将闪存存储器件260*部署在主机设备310的框架内。
在一个例子中,闪存存储器件260*向主机设备310提供数据读和数据写服务。通过快闪控制器280将闪存存储器件260*从主机设备310接收的数据写到闪存270。此外,响应于由闪存存储器接收的“数据读”请求,快闪控制器280从闪存270读取数据。
可以在“读取时间”或任何稍后的时间校正所读数据中的误差。可以至少部分地由快闪控制器280、至少部分地由主机设备310(例如,通过主机侧处理器320执行RAM 330中的可执行代码340或以任何其他方式)、以及任何其他位置并以任何其他方式来执行误差校正。
技术人员将认识到,“外围闪存器件”不是唯一一类闪存存储器件。例如,某些移动电话、台式或膝上型计算机、PDA设备或其他电子设备也可以包括闪存和快闪控制器,并且可能不是一定要被配置为与主机设备耦接和/或为主机设备提供数据读服务和/或数据写服务。
技术人员将认识到,在图1A-1B中描述的闪存器件仅仅是一类外围非易失性存储存储器器件,并且其他存储器器件可以包括其他类型的固态存储器,比如光存储器和磁阻(magnetoresistive)随机存取存储器(MRAM)。
发明内容
各种实施例解决了这些和相关问题,在这里提供了包括方法和系统的那些实施例的例子。
现在第一次公开一种用于处理误差校正的方法,该方法包括:a)维持固态存储器的至少一个块的擦除计数;b)从具有相关联的擦除计数的存储器块之一读取数据;c)根据所述存储器块的相关联擦除计数,实现以下的至少之一:i)选择第一解码器和第二解码器之一;以及ii)选择第一解码器模式和第二解码器模式之一;d)仅使用所选择的解码器或所选择的模式来校正所读取的数据中的误差。
在一些实施例中,固态存储器是闪存。
在一些实施例中,由固态存储器所驻留的存储器件的器件控制器来执行维持、读取、影响和校正中的至少一个。
在一些实施例中,存储器件经由设备间接口操作地与主机设备耦接,以及其中该方法还包括:e)从存储器件向主机设备发送误差校正过的数据。
现在第一次公开一种用于处理误差校正的方法,该方法包括:a)维持固态存储器的至少一个块的擦除计数;b)从具有相关联的擦除计数的存储器块之一读取数据;c)根据所述相关联的擦除计数,实现以下的至少一个:i)决定:A)尝试使用较轻权重解码器来校正误差,还是B)尝试仅使用比所述较轻权重解码器更重的较重权重解码器来校正误差;ii)决定:A)尝试使用较快解码器来校正误差,还是B)尝试仅使用比所述较快解码器更慢的较慢解码器来校正误差;iii)决定:A)尝试使用具体解码器的较轻权重模式来校正误差,还是B)尝试仅使用所述具体解码器的比所述较轻权重模式更重的较重权重模式来校正误差;以及iv)决定:A)尝试使用具体解码器的较快模式来校正误差,还是B)尝试仅使用所述具体解码器的比所述较快模式更慢的较慢模式来校正误差;以及d)根据所述决定中的至少一个,校正在读取的数据中的误差。
在一些实施例中,由固态存储器所驻留的存储器件的器件控制器来执行维持、读取、一个或多个决定以及校正中的至少一个。
现在第一次公开一种用于处理误差校正的方法,该方法包括:a)维持固态存储器的至少一个块的擦除计数;b)从具有相关联的擦除计数的存储器块之一读取数据;c)根据所述相关联的擦除计数,确定以下的至少一个:i)模式转换条件;以及ii)误差校正尝试资源预算;d)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及e)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据如下至少之一而定:i)所述第一尝试对所述模式转换条件的触发;以及ii)所述第一尝试对所述资源预算的耗尽。
在一些实施例中,i)该方法包括确定模式转换条件;以及ii)第二尝试根据至少第一尝试对模式转换条件的触发而定。
在一些实施例中,i)该方法包括确定资源预算;以及ii)第二尝试根据至少第一尝试对资源预算的耗尽而定。
在一些实施例中,从由以下构成的组中选择至少一个误差校正参数:i)用于从多个解码器中选择解码器的选择参数(例如,描述解码器“重度(heaviness)”或“解码器速度”的参数);ii)用于从多个解码器模式中选择给定解码器的解码器模式的解码器模式参数(例如,描述解码器模式“重度”或解码器模式“速度”的参数);iii)所读取的数据的比特概率值;iv)软比特的数量;以及v)解码器总线宽度。
在一些实施例中,从由以下构成的组中选择模式转换条件:i)超时条件;ii)迭代数量条件;以及iii)CPU周期量数条件。
在一些实施例中,从由以下构成的组中选择误差校正尝试资源预算:i)时间预算;ii)CPU周期预算;以及iii)迭代预算。
在一些实施例中,由固态存储器所驻留的存储器件的器件控制器来执行维持、读取、确定以及一个或多个尝试中的至少一个。
现在第一次公开一种用于处理误差校正的方法,该方法包括:a)维持存储器的至少一个块的擦除计数;b)从具有相关联的擦除计数的存储器块之一读取数据;c)根据所述相关联的擦除计数,实现以下的至少一个:i)确定针对所述数据要读取的软比特的数量;以及ii)选择解码总线宽度大小;以及d)在确定所述软比特的数量的情况下,读取针对所述数据的所述数量的软比特;以及e)尝试使用以下的至少一个来校正所述数据中的误差:i)所选择的解码总线宽度大小;以及ii)读取的软比特。
在一些实施例中,i)该方法包括确定针对数据要读取的软比特数量,并读取针对该数据的该数量的软比特;以及ii)尝试包括尝试使用至少所读取的软比特来校正数据中的误差。
在一些实施例中,i)该方法包括选择解码总线宽度大小;以及ii)尝试包括尝试使用所读取的解码总线宽度大小来校正数据中的误差。
在一些实施例中,由固态存储器所驻留的存储器件的器件控制器来执行维持、一个或多个读取、确定、选择和尝试中的至少一个。
现在第一次公开一种数据存储器件,包括:a)固态存储器;以及b)器件控制器,工作来:i)维持所述固态存储器的至少一个块的擦除计数;ii)从具有相关联的擦除计数的存储器块之一读取数据;iii)根据该存储器块的相关联的擦除计数,实现以下的至少一个:A)选择第一解码器和第二解码器之一;以及B)选择第一解码器模式和第二解码器模式之一;以及iv)仅使用所选择的解码器或所选择的模式来校正在读取的数据中的误差。
现在第一次公开一种数据存储器件,包括:a)固态存储器;以及b)控制器,工作来:i)维持所述固态存储器的至少一个块的擦除计数;ii)从具有相关联的擦除计数的存储器块之一读取数据;iii)根据所述相关联的擦除计数,实现以下的至少一个:A)决定:I)尝试使用较轻权重解码器来校正误差,还是II)尝试仅使用比所述较轻权重解码器更重的较重权重解码器来校正误差;B)决定:I)尝试使用较快解码器来校正误差,还是II)尝试仅使用比所述较快解码器更慢的较慢解码器来校正误差;C)决定:I)尝试使用具体解码器的较轻权重模式来校正误差,还是II)尝试仅使用所述具体解码器的比所述较轻权重模式更重的较重权重模式来校正误差;以及D)决定:I)尝试使用具体解码器的较快模式来校正误差,还是II)尝试仅使用所述具体解码器的比所述较快模式更慢的较慢模式来校正误差;以及iv)根据所述决定中的至少一个,校正在读取的数据中的误差。
现在第一次公开一种数据存储器件,包括:一种数据存储器件,包括a)固态存储器;以及b)器件控制器,工作来:i)维持所述固态存储器的至少一个块的擦除计数;ii)从具有相关联的擦除计数的存储器块之一读取数据;iii)根据所述相关联的擦除计数,确定以下的至少一个:A)模式转换条件;以及B)误差校正尝试资源预算;iv)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及v)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据以下的至少一个而定:A)所述第一尝试对所述模式转换条件的触发;以及B)所述第一尝试对所述资源预算的耗尽。
现在第一次公开一种数据存储器件,包括:a)固态存储器;以及b)器件控制器,工作来:i)维持所述固态存储器的至少一个块的擦除计数;ii)从具有相关联的擦除计数的存储器块之一读取数据;iii)根据所述相关联的擦除计数,实现以下的至少一个:A)确定针对所述数据要读取的软比特的数量;以及B)选择解码总线宽度大小;以及iv)在确定所述软比特的数量情况下,读取针对所述数据的所述数量的软比特;以及v)尝试使用以下的至少一个来校正所述数据中的误差:A)所选择的解码总线宽度大小;以及B)所读取的软比特。
要注意的是,与某些实施例有关的上述特征还可以被包括在其他实施例中,除非在下面指出与这里描述的相反。
附图说明
图1A是闪存存储器件的框图。
图1B是与主机设备耦接的外围闪存存储器件的框图。
图2A是使用根据一个或多个存储器块的擦除计数而选择的解码器来校正误差的一个例程的流程图。
图2B是使用根据一个或多个存储器块而选择的解码器模式来校正误差的一个例程的流程图。
图3A是误差校正的一个例程的流程图,其中视一个或多个存储器块的擦除计数而定,使用较轻权重解码器来尝试校正误差。
图3B是误差校正的一个例程的流程图,其中视一个或多个存储器块的擦除计数而定,使用较快的解码器来尝试校正误差。
图3C是误差校正的一个例程的流程图,其中视一个或多个存储器块的擦除计数而定,使用较轻权重解码器模式来尝试校正误差。
图3D是误差校正的一个例程的流程图,其中视一个或多个存储器块的擦除计数而定,使用较快解码器模式来尝试校正误差。
图4A是误差校正的一个例程的流程图,其中根据一个或多个存储器块的擦除计数来确定模式转换触发条件。
图4B是误差校正的一个例程的流程图,其中根据一个或多个存储器块的擦除计数来确定误差校正尝试的资源预算。
图5A-5B是如下例程的流程图,其中根据一个或多个存储器块的擦除计数来确定针对误差校正尝试而要读取的软比特数。
图6A-6B是误差校正的例程的流程图,其中根据一个或多个存储器块的擦除计数来确定解码器总线宽度。
具体实施方式
参考附图,通过参考示例实施例给出的详细描述,将更好地理解下面的权利要求。描述、实施例和附图将不被认为限制权利要求的范围。应该理解,当前公开的处理误差校正的方法和装置的每个特征在每个实现方式中并不都是一定需要的。还应该理解,贯穿于示出或描述过程或方法的本公开,可以按任何顺序或同时执行该方法的各步骤,除非上下文清楚地表明一个步骤取决于首先执行的另一步骤。如贯穿本申请所使用的,词“可以”用于允许的意思(即,意味“具有......的可能性”),而不是强制的意思。
本发明人现在公开其中根据从其读取数据的一个或多个存储器块的擦除计数来执行对从固态存储器读取的数据的ECC解码的几种技术。
不希望被任何特定理论所界定,要注意,当多次擦除固态存储器(例如,闪存、MRAM或任何其他类型的固态存储器)时,这可能降低作为存储介质的存储器的质量。同样,已经被擦除了数据达相对“大”次数的固态存储器(或其一部分)可能是相比于已经被擦除了数据达相对“小”次数的固态存储器(或其一部分)“更差”或“更不可靠”或“更破坏的”存储介质。
现在描述其中根据从其读取数据的一个或多个块的擦除计数来执行对从存储器读取的数据的ECC解码的几种技术。在从具有“高擦除计数”的一个或多个块读取数据的情况下,这可能指示该一个或多个存储器块作为存储介质相对“更不可靠”——同样,从“更不可靠”的一个或多个存储器块读回的数据可能包括相对“大”数量的误差。在该情况下,可以使用适合于校正在具有相对“大数量”误差的数据中的误差的“悲观(pessimistic)”技术。相反,在从具有“低擦除计数”的一个或多个块读取数据的情况下,这可能指示该一个或多个块作为存储介质“更可靠”,并且可以使用适合于校正在具有相对“小数量”误差的数据中的误差的“乐观(optimistic)”技术。
第一技术(参见参考图2A的讨论)涉及如下情形,其中当校正从一个或多个存储器块读取的数据中的误差时,可以使用“较轻权重解码器”或“较重权重”解码器。在从其读取数据的一个或多个存储器块的擦试计数相对“高”(指示该一个或多个存储器块经受了相对大量的磨损)的情况下,这可能指示从其读取了数据的一个或多个存储器块的“质量”可能相对“低”。在该情况下,“高”擦除计数因而可以指示在校正误差时利用更“悲观”技术并利用“较重权重”解码器是有益的,即便较重权重解码器可能较慢和/或需要更多计算资源(例如CPU周期、电力和/或存储器资源)。相反,在擦除计数相对“低”的情况下,这可能指示从其读取了数据的一个或多个存储器块的“质量”可能相对“高”,并且利用“较低权重”解码器可能是有益的。
第二技术(参见参考图3A-3D的讨论)涉及“试错(trial-and-error)”解码例程。“试错解码例程”工作如下:首先,尝试使用相对“轻权重”或“快”解码器(或解码器模式)来校正误差。在该尝试成功的情况下,能够“享受”相对快的解码和/或消耗相对少的计算资源的解码。否则,如果该尝试失败,则使用较慢和/或消耗更多计算资源、但更不太可能使校正误差失败的“较重权重”(或较慢)解码器(或解码器模式)来校正数据中的误差。
根据该第二技术,现在公开了如果从具有相对“高”擦除计数的一个块或多个块读取数据,则应该采用悲观方法,并且“悲观地”跳过尝试使用较轻权重或较快(但较不可靠)解码器(或模式)来解码误差的步骤是有益的。在该情况下,其中不尝试使用无论如何可能失败的低权重和/或快解码器的该“悲观”方法可能对于节约时间和/或节省计算资源是有用的。相反,如果从具有相对“低”擦除计数的一个块或多个块读取数据,则可以假设轻权重和/或快解码器更不太可能失败。从而,在从与该“较低”擦除计数相关联的(一个或多个)块读取数据的情况下,对较轻权重和/或较快解码器可能失败的“冒险”可能是有益的。从而,在从与该“较低”擦除计数相关联的一个或多个块读取数据的情况下,在尝试“较可靠”的较重权重和/或较慢解码器(或模式)之前尝试使用较轻权重和/或较快解码器(或模式)来解码数据可能是有益的。
第三技术(例如参见参考图4A-4B的讨论)也涉及“试错”解码例程。根据与该第三技术相关的一些实施例,首先尝试使用适合于处理“较少”数量误差的较轻权重解码器和/或较快解码器和/或解码器模式(或解码器)来校正误差。如果该第一尝试失败(例如,如果该第一尝试在给定时间量内没有成功,从而触发一些“超时”条件),则进行第二尝试以使用适合于处理“较大”数量误差的较重权重和/或较慢解码器和/或模式(或解码器)来校正误差。
现在公开在从具有“高”擦除计数的固态存储器的一个或多个块读取数据(即,期望针对其校正误差的数据)的情况下,则仅以“悲观”方式——即通过投入相对“少”的资源来执行尝试使用较轻权重或较快(但较不可靠)解码器(或模式)来解码误差的步骤可能是有益的。从而,在一个例子中,如果使用“较轻权重”或“较快解码器”来校正误差的尝试没有相对“快”地(在“小的超时值”内)成功,则(i)相对“快”地丢弃该尝试(即认为“失败”),并且(ii)然后使用较慢和/或较重权重和/或更适合于处理“较大”数量误差的不同解码器和/或解码器模式来执行校正误差的“新”的尝试。
相反,在从具有“高”擦除计数的固态存储器的一个或多个块读取将被校正的数据的情况下,则以更“乐观”方式——即通过在轻权重和/或较快解码器(或解码模式)中投入“更多”资源来执行尝试使用较轻权重或较快(但较不可靠)解码器(或模式)来解码误差的步骤可能是有益的。从而,在一个例子中,如果使用“较轻权重”或“较快解码器”来校正误差的尝试没有相对“快”地成功,则仍然可以假设还是存在该尝试将最终成功的某些可能性。因而,在该例子中,在“前进”到使用“较重权重”和/或“较慢”的解码器或模式来校正误差的尝试之前,对使用“较重权重”和/或“较慢”的解码器或模式来校正误差的初始尝试“给予机会”——例如,允许其在被指定为失败之前工作更长时间段(或更多CPU周期)。
第四技术(例如参见参考图5A-5B的讨论)涉及决定将被读取来校正误差的软比特(soft bit)的数量。在美国专利申请11/642,708和11/651,483中讨论了将软比特用来改善存储器中的误差校正能力,通过全部引用将这两者中的每个合并于此。因为读取软比特导致在时间和功率上的花费,所以存在其中ECC解码器首先尝试解码数据而根本不读取软比特(或者仅读取“低”数量的软比特)的许多情形。如果失败,则可以读取一个或多个软比特,并且可以进行另一解码尝试。如果该第二尝试也失败,则读取更多软比特,并且进行另一解码尝试。该过程可以继续迭代(iterate),直到解码成功或者达到了可用软比特的最大数量。
现在公开可以根据从其读取数据的一个或多个存储器块的擦除计数来决定多少软比特将被读取并用于初始尝试(例如参见图5A的步骤S419)、和/或决定在初始尝试失败之后要读取多少另外的软比特(参见例如图5B的步骤S473)。
从而,在该擦除计数相对“高”的情况下,可以采用“悲观”方法,并且在使用零或“小”数量软比特的迭代不太可能成功(即,因为数据可能包含许多误差,从而可能要求较大数量软比特来校正“有噪声的”数据中的误差)的假设下,可以跳过这些迭代(或者在失败之后,可以读取相对“大”数量的软比特)。
相反,在该擦除计数(即,从其读取数据的存储器的一个或多个块的擦除计数)相对“低”的情况下,可以采用“乐观”方法,并且在该情形下,在有可能数据是相对“高”质量的、以及不使用软比特或使用相对“小”数量的软比特具有合理的成功机会的假设下,尝试使用零或“小”数量软比特来校正误差可能是有益的。
第五技术(例如参见图6A)涉及解码器总线的宽度。现在公开在从具有相对“高”擦除计数的一个或多个存储器块读取数据的情况下,这指示数据可能是低质量的,并且可能优选相对“悲观”方法以校正误差。从而,在该情形下,使用较大的解码器总线来校正误差可能是有益的,即使较大的解码器总线可能较慢和/或要求更多的计算资源。
相反,在从具有相对“低”擦除计数的一个或多个存储器块读取数据的情况下,这指示数据可能是高质量的,并且可能优选尝试用较小的解码器总线来校正误差的相对“乐观”方法以校正误差。
贯穿本公开,当在“闪存”方面解释某些教导时,要认识到,这些教导也可以应用到除了闪存之外的其他固态存储器——例如光存储器或MRAM。
技术人员将认识到,可以将当前公开的用于校正误差的技术与用于校正在从存储器读取的数据中的误差的任何其他技术相结合。
在描述附图之前,给出了在闪存中使用ECC的一般概况,并且提供了各个术语的定义(在接下来的两部分中)。
闪存器件中的误差校正
在下面给出了在闪存中使用ECC的一般概况,包括如下步骤:
(1)在将数据写到存储器之前,将ECC算法应用到数据以便计算之后用于误差检测和校正的另外的(即冗余)比特。这些冗余比特通常被称为“奇偶比特”或“奇偶位”。被输入到ECC模块中的数据和由该模块输出的奇偶位的组合被称为码字。到ECC模块的输入数据的每个不同的值得到不同的码字。
(2)将整个码字(即原始数据和奇偶位)记录到闪存。应该注意,NAND型闪存的实际大小大于原始数据的大小,并且存储器被设计为也容纳奇偶位。
(3)当从存储器获取(retrieve)数据时,再次读取整个码字,并且将ECC算法应用于该数据和奇偶位,以便检测并校正可能的“比特翻转”(即误差)。
应该注意,可以通过硬件、软件或者硬件和软件的组合来进行ECC的实现。此外,可以在存储器器件内、存储器器件控制器内、主机计算机内实现ECC,或者可以在系统的这些部件之间“分布”ECC。
常用的算法包括里德-所罗门(Reed-Solomon)、BCH、汉明(Hamming)和许多其他算法。每个ECC算法由两部分组成——接收数据比特并生成奇偶比特(或者等效地,生成码字)的部分,以及接收码字并生成校正过的数据比特的部分。第一部分被称为“编码器”并在写期间使用,而第二部分被称为“解码器”并在读期间使用。这两部分的每个可以以硬件或软件实现,并且也能够一部分以硬件实现而另一部分以软件实现。对于每个部分,也能够以硬件和软件的组合来实现。
接收数据比特并生成相应码字被称为“编码”。接收码字并生成校正过的数据比特被称为“解码”。
应该注意,实际上有两种ECC。在码字中保留数据比特的身份(identity)的上述种类ECC被称为“系统性(systematic)”ECC。在“非系统性”ECC中,将数据比特转换为其中不保留原始数据比特的身份的码字。
选择如像BCH的算法作为将在闪存系统中使用的ECC算法不唯一地限定所选方案。任何这样的ECC算法实际上不是单一的算法,而是算法族。在相同族内的算法本身之间在它们能够保护的数据比特量方面不同。需要保护100个数据比特的算法不同于需要保护10000个数据比特的算法,即使这两个算法通常非常相似、并工作在相同的原理下。
但是,甚至都保护相同数量的数据比特的相同家族的两个算法也不是一定相同。各算法可能在所提供的可靠性等级方面,或者等效地——在算法能够校正的数据中的比特误差数量方面不同。例如,一个系统可能需要针对多达3个比特误差的任何组合(而不是针对4个或更多比特误差的发生)而保护1000个数据比特的组块(chunk),而在另一系统中,期望高得多的可靠性,因此需要针对多达10个比特误差的任何组合而保护1000个数据比特的组块。通常,针对更多误差的保护需要使用更多的奇偶比特(或更长的码字),使得ECC方案不太“有效”,其中通过码字中数据比特的数量与码字中比特的总数量(在对称ECC中,包括数据比特和奇偶比特)的比率来测量效率。该测量通常被称为ECC编码的“速率”。
不同的ECC算法和实现方式在其他方面——编码过程的速度、解码过程的速度、编码过程的复杂性、解码过程的复杂性、到解码器的输入中可接受的误差率(根据存储单元的质量来定义)等等也不同。编码和解码的复杂性很重要,不仅因为它影响操作的速度,而且因为它影响ECC方案的硬件实现方式的功耗和硅面积(silicon area)。
从而,显然,为存储器系统选择ECC解决方案涉及多个考虑之间的复杂的折衷方案。通常在ECC设计领域中的一些非限制的经验法则(rules-of-thumb)是:
a.对于给定的存储器可靠性,输出可靠性越好(或者等效地,可校正的误差数量越多),码速率越低(或者等效地,对于系统性ECC,需要的奇偶比特越多)
b.对于给定的存储器可靠性,输出可靠性越好,解码器越复杂。
c.对于输出可靠性的给定等级,码速率越高,解码器越复杂。
d.对于输出可靠性的给定等级,码速率越高,解码越慢。
当设计ECC解决方案时,通常从解码器的输入处的误差率(由存储单元的质量规定)和期望的输出可靠性(由应用的要求规定)开始。基于这些数字,通常选择特定的ECC族,计算所需要的奇偶比特数,然后估算编码器和解码器的速度和复杂度。
在一些情况下,对于系统的设计者最重要的考虑是解码的速度,因为这可能对从存储器读出数据的速度进行限制。在这样的情况下,设计者可能遇到进退两难的情形——达到输出可靠性要求所需要的ECC方案可能却得到具有慢操作的相当复杂的解码器,不满足系统的速度目标。但是,另一方面,选择相对简单并得到快解码的ECC方案不提供所需要的输出可靠性等级。
定义
为了方便,在这里的描述的上下文中,在此给出各个术语。到明示地或暗示地、在本申请中的此处或其他地方提供定义的程度,这样的定义被理解为与由相关领域中技术人员定义的术语的使用相一致。此外,将以与这样的使用相一致的最宽泛的可能含义来解释这样的定义。
因为某些类型的固态存储器(例如闪存、光存储器或MRAM)是“破坏的介质”,所以有时一个或多个误差被引入到被写到存储器的“原始”数据中,使得当从存储器读回数据(即,原始数据的表示)时,一个或多个信息比特被“翻转”。
本发明的实施例涉及“存储器块”的“擦除计数”。存储器“块”是用于擦除的存储器的最小“组块(chunk)”或量。在与闪存有关的一个例子中,块包括一些数量的闪存单元,例如,至少几十或几百或几千或更多闪存单元。对于其他类型的存储器,例如RAM,“块”可以是单个存储器单元或者多个存储器单元。
对于存储器的给定块的“擦除计数”是指示到目前为止固态存储器的块已被擦除了多少次的计数器。无论何时擦除存储器的块时,该擦除计数可以递增。如前所述,如果块具有相对“大”的擦除计数,则这可能指示该块是易有误差的相对“差”的存储介质。
本发明的实施例涉及“维持闪存的至少一个块的擦除计数”。可以在主机侧和/或器件侧维持擦除计数,并且可以将擦除计数存储在易失性(例如RAM或寄存器)和/或非易失性存储器(例如,闪存)的任何组合中。在一个例子中,擦除计数被存储在控制器的晶片(die)上。在另一例子中,擦除计数被存储在闪存晶片之一中。可以将擦除计数存储在单个位置中和/或在多个位置之间分布擦除计数。在一个非限制的例子中,可以将擦除计数存储在用于实现在闪存块之间的磨损校平(wear leveling)的数据结构中。
在一些非限制的例子(但不是所有实施例)中,无论何时向固态存储器写入时,必须首先擦除固态存储器,作为写过程的一部分。在这样的系统中,“擦除计数”可以至少部分地描述给定块已被写入的次数。
可以使用维持擦除计数的任何技术,包括但不限于在如下中公开的技术:Logfren等人的美国专利No.6230233,Wells的美国专利No.5341339,Jou等人的美国专利No.5568423,Assar等人的美国专利No.5388083,Harari的美国专利No.5712819,Harari的美国专利No.6570790,Harari的美国专利No.5963480,Chang等人的美国专利No.6831865,通过全部引用将其的每个合并于此。
根据从存储器读回的数据来重建原始的、没有误差的数据的过程是“校正误差”。虽然以复数使用术语“校正误差”,但是要认识到“校正误差”也指校正单个误差。要认识到在一些实施例中,误差的“校正”也可以包括校正误差的一个或多个失败的尝试。
如前所述,为了校正误差,可以使用“解码器”,以便从码字的表示中恢复原始数据。一些实施例涉及多个解码器,包括“较轻权重”解码器和“较重权重解码器”。
术语“较重权重”和“较轻权重”用于比较两个解码器和/或单个解码器的两个模式。“较重权重”解码器(或单个解码器的较重权重模式)(i)消耗比“较轻权重”对应方更多的电流,和/或(ii)需要比“较轻权重”对应方更多的存储器(用于解码器自身的计算机可执行代码,和/或用于存储在校正误差时计算的“中间结果”的更多存储器),和/或(iii)需要比“较轻权重”对应方更多的计算操作。
一些实施例涉及根据从其读取数据的一个或多个存储器块的擦除计数来确定要读取和/或在误差校正中使用的“软比特”的数量。“软比特”是与估算的可靠性测量相组合的比特值的估算。通常,相同的数字充当比特值的估算和可靠性测量两者。例如,对数似然比(LLR)的符号(sign)是由LLR表示的比特值的估算,以及LLR的量值是该估算的可靠性的量度。
在一些实施例中,可以通过使用比将数据写入单元中的分辨率“更高的分辨率”从存储器读取来计算和/或确定“软比特”。使用“更高分辨率”读取的另外的比特可以给出数据比特值的任何估算的“可靠性”的一定指示。在一个例子中,可以使用区分电压带的界限的不同“参考电压”来将数据写到存储器,并且可以通过使用位于电压带内的参考电压或者“一部分的(fractional)参考电压”读回数据来生成软比特。技术人员参考例如Ban的美国专利7023735,其通过全部引用被合并于此。当根据一个或多个软比特校正数据时,这对于改善误差校正例程可能是有用的——然而,存在与确定(一个或多个)软比特相关联的在时间和/或计算资源方面的花费。
初步讨论:维持擦除计数以及从固态存储器读取数据(图2A-2B、3A-3D、
4A-4B、5A-5B、6A-6D的步骤S411和S423的讨论)
在步骤S411中,对至少一个存储器块维持擦除计数。如前所述,可以在任何位置中和/或以任何方式维持擦除计数。在一个非限制的例子中,由快闪控制器280维持擦除计数。在一个非限制的例子中,擦除计数被维持在数据结构中(例如,存储在非易失性存储器中)——例如,还用于磨损校平目的的数据结构。
在步骤S423中,从一个或多个存储器块读回数据。可以确定从其读取数据的一个或多个存储器块的擦除计数——例如,通过在适当的数据结构中实现(effect)“查找表(look-up)”来确定。
图2A-2B、3A-3D的讨论
考虑具有如下特征的两个解码器(或者能够以两个不同模式工作的一个解码器):
a.第一解码器(或解码器模式)较快和/或“较轻权重”,但是另一方面,不保证在产生解码处理的结果中成功。
b.第二解码器(或解码器模式)较慢和/或“较重权重”,但是保证总是产生解码过程的正确结果(或者至少更可能产生解码处理的正确结果)。
通常,数据中的误差数量越多,第一解码器越频繁地失败。不幸的是,当从存储器读回数据时,不总是先验地(a-priori)知道在所读回的数据中有多少误差。从而,不总是知道是否需要“较重权重”解码器(或单个解码器的较重权重模式),或者“较轻权重”解码器是否将足够。
本发明人现在公开在从其读取数据的一个或多个存储器块的擦除计数的数量相对“低”的情况下,这可能指示读回的数据可能具有好的“质量”,并且可以选择用于校正误差的相对“乐观”技术来校正在步骤S615或S625中所读取的数据中的误差。从而,在该情况下,“冒险”使用“较轻权重”解码器(或单个解码器的较轻权重模式)来校正误差可能是有益的。否则,使用“较重权重”解码器或单个解码器的较重权重模式来校正误差可能是优选的。
现在参考图2A。在步骤S615中,根据从其读取数据的一个或多个块的擦除计数,从多个候选解码器中选择解码器。
在步骤S619中,仅使用所选择的解码器而不使用未选择的“被拒绝的”解码器来校正误差。
现在参考图2B。在步骤S625中,根据从其读取数据的一个或多个块的擦除计数,从多个候选解码器模式中选择给定解码器的模式。
在步骤S629中,仅使用所选择的解码器模式而不使用未选择的“被拒绝的”解码器模式来校正误差。
现在参考图3A。
在步骤S651中,根据从其读取数据的一个或多个块的擦除计数,决定是否尝试使用较轻权重解码器(即多个候选解码器中的较轻权重解码器)来校正误差。
在从其读取数据的固态存储器的一个或多个块的擦除计数相对“低”的情况下,这可能指示所读回的数据可能具有好的“质量”,并且可以采用相对“乐观”的误差校正策略。从而,在该情景下,在步骤S655中尝试使用较轻权重解码器来校正误差。如果较轻权重解码器成功(参见步骤S659),则不需要尝试使用较重权重解码器来校正误差(参见步骤S667)。如果较轻权重解码器校正误差失败,则S663尝试使用较重权重解码器来校正误差。
此外,要注意的是,参考步骤S651,在从其读取数据的一个或多个块的擦除计数相对“高”的情况下,这可能指示所读回的数据可能具有“差”的质量,并且可以采用相对“悲观”的误差校正策略。在该情景下,能够跳过步骤S665,并尝试使用较重权重解码器而不是较轻权重解码器来校正误差(步骤S663中)。
现在参考图3B。
在步骤S851中,根据擦除计数,决定是否尝试使用较快解码器(即多个候选解码器中的较快的解码器)来校正误差。
在擦除计数“低”、并且采用相对“乐观”的误差校正策略的情况下,可以在步骤S855中尝试使用较快解码器来校正误差。如果较快解码器成功(参见步骤S859),则不需要尝试使用较慢解码器来校正误差(参见步骤S867)。如果较快解码器校正误差失败,则S863尝试使用较慢解码器来校正误差。
此外,要注意的是,参考步骤S851,擦除计数“高”并且采用相对“悲观”的误差校正策略,能够跳过步骤S865,并尝试使用较慢解码器而不是较快解码器来校正误差(在步骤S863中)。
现在参考图3C。
在步骤S671中,根据一个或多个块的擦除计数,决定是否尝试使用较轻权重模式(即给定解码器的多个候选解码器模式中的较轻权重模式)来校正误差。
在擦除计数“低”并且采用相对“乐观”的误差校正策略的情况下,在步骤S675中可以尝试使用较轻权重模式来校正误差。如果较轻权重模式成功(参见步骤S679),则不需要尝试使用较重权重模式来校正误差(参见步骤S687)。如果较轻权重模式校正误差失败,则S683尝试使用较重权重模式来校正误差。
此外,要注意的是,参考步骤S671,在擦除计数“高”并且采用相对“悲观”的误差校正策略的情况下,能够跳过步骤S675,并尝试使用较重权重模式而不是较轻权重模式来校正误差(在步骤S683中)。
现在参考图3D。
在步骤S871中,根据(一个或多个)存储器块的擦除计数,决定是否尝试使用较快解码器模式(即多个候选解码器模式中的较快解码器模式)来校正误差。
在擦除计数“低”并且采用相对“乐观”的误差校正策略的情况下,在步骤S875中可以尝试使用较快解码器模式来校正误差。如果较快解码器模式成功(参见步骤S879),则不需要尝试使用较慢解码器模式来校正误差(参见步骤S887)。如果较快解码器模式校正误差失败,则S883尝试使用较慢解码器模式来校正误差。
此外,要注意的是,参考步骤S871,在擦除计数“高”并且采用相对“悲观”的误差校正策略的情况下,可能优选跳过步骤S865,并尝试使用较慢解码器模式而不是较快解码器模式来校正误差(在步骤S863中)。
图4A-4B的讨论
图4A-4B是如下技术的框图,其中(i)进行校正误差的第一尝试(在步骤S519);(ii)在某个时间点,如果第一尝试没有成功地校正误差,则中止第一尝试,并进行校正误差的第二尝试(在步骤S539中)。图4A-4B涉及建立并实施确定何时认为第一尝试失败并中止的策略。该决定并非微不足道——在校正误差的第一尝试(在步骤S519中)“过早地”被认为失败的情况下,这可能导致不必要地慢和/或耗费资源的误差校正过程,因为在第一尝试如果被允许来运行其过程而将已经成功/足够时,进行了一个或多个“额外的/不必要的”校正误差的尝试。另一方面,在到第二尝试的转换被不必要地延迟、并且花费了“太多”时间/资源来执行第一尝试的情况下,这也可能导致不必要地慢的和/或耗费资源的误差校正过程。
在图4A-4B中,公开了可以根据从其读取将被校正误差的数据的一个或多个存储器块的一个或多个擦除计数来建立并实行用于确定何时第一尝试被认为失败(因而被中止)的策略。
在图4A-4B中,在步骤S519中,使用在步骤S515中建立的一个或多个误差校正参数的“第一集合”来进行第一尝试,并在步骤S539中,使用在步骤S535中建立的一个或多个误差校正参数的“第二集合”来进行第二尝试。在图4A和4B两者中,在如在步骤S523确定的第一尝试成功的情况下,不需要在步骤S539中进行另外的尝试(参见步骤S527)。
图4A涉及用于决定何时从步骤S519中的校正误差的第一尝试“转换(transition)”(从而中止第一尝试)到步骤S539中的校正误差的第二尝试的标准。
在一个或多个存储器块的擦除计数“低”的情况下,则根据第一尝试将成功具有相对“高”的机会的假设,可以采用乐观方法。从而,在该情况下,在步骤S511中确定的“模式转换条件”可以是对于相对“快”或“轻权重”的初始误差校正尝试而言相对“慷慨(generous)”的条件(可以至少部分地在步骤S515和/或步骤S535中如何“快”或“慢”或“重权重”或“轻权重”地建立尝试)。相反,在擦除计数“高”的情况下,则可以采用悲观方法,并且在步骤S511中确定的“模式转换条件”可以是对于相对“快”或“轻权重”的初试误差校正尝试而言“更吝啬(stingy)”的条件,因为假设了这些初始尝试无论如何将失败具有高可能性。
“模式转换条件”是确定第一尝试已经失败并且到不同的“模式”的转换被准许、以便进行校正误差的“第二”或“不同的”尝试的条件。如图4A所示,如果在步骤S531中触发模式转换条件,则在步骤S535和S539中进行校正误差的新的尝试;如果在第一尝试期间的任何给定时间没有触发该条件,则在步骤S525中第一尝试继续。
在一个例子中,“转换条件”与“超时条件”有关——即,在步骤S531中确定允许步骤S519和S534的第一尝试“运行”多少时间,而不“中止”该尝试并开始具有不同的误差校正参数的“新尝试”。在另一例子中,第一尝试本身利用迭代例程,并且“转换条件”与“迭代数量条件”有关——即,在“所利用的迭代例程”被认为失败并为了“新的”或第二尝试而将其中止之前允许运行多少个步骤的“所利用的迭代例程”而没有成功校正误差。在另一例子中,“转换条件”与可以在中止第一尝试之前由该第一尝试“消耗”或使用的CPU周期的数量有关。
图4A(和4B)的教导可应用到任何“迭代例程”,其中在步骤S519中进行“第一尝试”,然后,如果该第一尝试“不成功”,则在之后进行“第二尝试”。
从而,在不同例子中,“模式转换”涉及(i)从给定解码器的较轻模式移动到较重模式,或者(ii)从使用由多个解码器中选择的第一解码器的第一“模式”移动到使用从多个解码器中选择的第二解码器的第二“模式”,或者(iii)对于软解码器,从与比特概率值的第一集合相关联的第一模式移动到与比特概率值的第二集合相关联的第二模式,或者(iv)从使用第一数量(即非负整数)的软比特的第一模式移动到使用第二数量的软比特的第二模式,以及(v)从具有第一解码器总线宽度的第一模式移动到具有第二解码器总线宽度的第二模式(参见图6B)。
要认识到,所提供的此列表是例示性的而不是穷尽的列表。
在图4B中,根据从其读取数据(即,针对其尝试误差校正)的存储器块的一个或多个擦除计数,为第一尝试提供“预算”。该预算可以是时间预算或CPU周期数量预算或迭代数量预算,或者是可以由第一尝试“消耗”的任何其他类型的“资源”预算。在另一例子中,该预算可以是被允许分配来存储在第一尝试中使用的“中间结果”的易失性存储器的最大量。
在擦除计数相对“低”的情况下,在步骤S561中可以分配“较大”的预算;在擦除计数相对“高”的情况下,可以分配“较小”的预算。在步骤S561中,确定该迭代步骤误差校正资源预算,并在步骤S565中,确定该资源预算是否已耗尽。如果该预算已耗尽,则在步骤S535和S539中进行校正误差的新尝试;如果在第一尝试期间该预算还没有耗尽,则在步骤S525中校正误差的第一尝试继续。
图5A-5B的讨论
图5A-5B涉及确定将被读取来校正误差的软比特数量的技术(同样参见上面参考图5A-5B的讨论)。在图5A的步骤S419中,确定将被读取来用于校正误差的初始尝试的软比特数量。根据与(在步骤S423中)从其读取将被校正误差的数据的一个或多个目标存储器块相关联的(在步骤S415中确定的)擦除计数来确定该软比特数量。
在步骤S427中,读取所确定的数量的软比特,并在步骤S431中,尝试使用这些软比特来校正数据(即步骤S423中所读取的数据)中的误差。在该尝试成功的情况下(参见步骤S439),不需要(参见步骤S443)继续误差校正过程。如果该尝试不成功,则可以在步骤S435中读取一个或多个另外的软比特。
要注意的是,图5A(以及本公开提供的所有附图)中的步骤的顺序不是限制性的——例如,可以在步骤S419的确定之前执行步骤S423中从固态存储器的(一个或多个)目标块中读取数据。
现在参考图5B。在可选的步骤S461中,读取某个数量N的软比特,其中N是非负整数(如果N是零,则跳过步骤S461,并且步骤S431中校正误差的第一尝试不利用软比特)。在步骤S431中,尝试校正误差(如果软比特可用,则使用软比特)。如果该尝试成功(参见步骤S665),则不需要(参见步骤S469)继续误差校正过程。如果该尝试不成功,则在步骤S473中确定将读取多少软比特(即,用于校正误差的后续尝试中)——根据与步骤S415和S423的一个或多个目标存储器块相关联的擦除计数来确定该数量。
在步骤S477中,读取该数量(即在步骤S473中确定的数量)的软比特——在步骤S431中使用这些软比特。
图6A的讨论
图6是根据从其读取数据的存储器的一个或多个块的擦除计数来校正误差的技术的流程图。
软解码器通过向码字的每个比特分配概率(例如,比特值是1而不是0的概率)并运行多个迭代而工作,其中在每次迭代中,每个比特的概率根据其他比特的当前概率而改变。
不是软解码器的任何解码器在这里被称为“代数解码器”。
该类型的计算被表达为利用“消息传递(passing)”技术,因为每个比特向其对等方“传递消息”。在实现这样的解码器时的主要设计决定是消息传递的总线宽度。使用宽总线(例如10比特)保证如果算法可以应对误差,则该算法确实将收敛到正确的数据。但是另一方面,在这样的设计中解码器的功耗高。使用窄总线(例如3比特)提供低得多的功耗,但是在具有相对大数量误差的情况下,解码器可能不能收敛到正确的数据(即使在相应的宽总线解码器中正确地解码相同样式(pattern)的数据和误差)。用于消息传递的比特数量对解码过程的功耗具有显著影响——比特数量越多,功耗越高。
该现象的原因之一是在解码操作期间将软解码器的消息和信道输入(软值)存储在大功耗RAM中。例如,当例如对每个消息使用3比特而不是10比特时,可以关闭70%的RAM。节省功耗的另一来源是处理这些传递消息的处理单元。很明显对3比特而不是10比特执行计算需要更小且更低功耗的单元。
能够实现其中可以在解码开始时设置“消息传递”中的比特数量的软解码器。从而,在一些实施例中,根据从其读取数据的一个或多个块的擦除计数来选择解码总线宽度大小。在指示“乐观情形”的擦除计数“低”的情况下,能够选择较小的解码总线宽度大小,从而校正误差。否则,可能优选选择较大的解码总线宽度大小。
这在图6A中图示地示出。在步骤S751中,根据从其读取数据的一个或多个块的擦除计数来选择解码器总线宽度。在步骤S755中,根据所选择的解码器总线宽度值来校正误差。
图6B的讨论
在图6B中,步骤S411、S423和S751与图6A中的相同。
在步骤S775中,尝试使用在步骤S751中选择的所选解码器总线宽度来校正误差。如果该尝试成功(参见步骤S779),则不需要(参见步骤S787)继续误差校正过程。否则,如果该尝试没有成功(参见步骤S783),则选择新的解码器总线宽度,并进行校正误差的新尝试。
另外的讨论
要注意,可以在“器件侧”或“主机侧”实现这里公开的任何技术。在一个具体例子中,这里公开的任何步骤或步骤的组合(包括但不限于如下步骤:维持擦除计数、读取数据或软比特、校正误差、进行校正误差的尝试、选择解码器或模式或软比特数、确定是否利用给定解码器或解码器模式、选择解码器总线宽度、确定或实行转换条件或资源预算等等)可以由快闪器件260的器件控制器280(或包括固态存储器的任何其他数据存储器件)——例如,外围存储器件260*的器件控制器来实现。
在一些实施例中,在“器件侧”校正数据中的误差之后,可以将被校正误差的数据从存储器件260*经由各自的设备间接口发送给主机设备310。这(与步骤S425的数据读取和任何误差校正一起)可以响应于由主机310发送给外围存储器件260*以读取存储在固态非易失性存储器(例如闪存270)内的数据的请求而执行。
器件控制器280可以包括任何一个或多个软件和/或固件和/或硬件元件,包括但不限于一个或多个现场可编程逻辑阵列(FPLA)元件、一个或多个硬连线的逻辑元件、一个或多个现场可编程门阵列(FPGA)元件以及一个或多个专用集成电路(ASIC)元件。可以在控制器280中使用任何指令集架构,包括但不限于精简指令集计算机(RISC)架构和/或复杂指令集计算机(CISC)架构。
可以以硬件、由硬件执行的计算机可读代码模块和固件的任何组合来实现任何所公开的技术。
本发明的实施例提供了用于实现任何公开的技术的装置和计算机介质。
在这里引用的所有参考文件通过全部引用而被合并。参考文件的引用不构成该参考文件是现有技术的认可。
还要注意的是,上述任何实施例还可以包括在计算机可读介质之上接收、发送或存储实现上面结合附图描述的操作的指令和/或数据。一般来说,计算机可读介质可以包括:诸如磁介质或快闪介质或光介质、例如盘或CD-ROM的存储介质或存储器介质、诸如RAM、ROM等的易失性或非易失性介质、以及诸如经由诸如网络和/或无线链路的通信介质传送的电、电磁或数字信号的传输介质或信号。
因而描述了上述示例实施例,对于本领域技术人员将明显的是,不脱离如在下文中陈述的权利要求的范围和精神,各种等效物、变更、修改及其改进是可能的。特别是,不同的实施例可以包括不同于在此所述的特征的组合。从而,权利要求不限于前述讨论。
Claims (18)
1.一种用于处理误差校正的方法,所述方法包括:
a)维持固态存储器的至少一个块的擦除计数;
b)从具有相关联的擦除计数的存储器块之一读取数据;
c)基于擦除计数建立并实施策略,其中该策略标识转换条件和用于校正读取的数据中的误差的误差校正参数,
d)根据所述相关联的擦除计数,实现以下的至少一个:
ⅰ)决定:
A)尝试使用较轻权重解码器来校正误差,还是
B)尝试仅使用比所述较轻权重解码器更重的较重权重解码器来校正误差;
ⅱ)决定:
A)尝试使用较快解码器来校正误差,还是
B)尝试仅使用比所述较快解码器更慢的较慢解码器来校正误差;
ⅲ)决定:
A)尝试使用具体解码器的较轻权重模式来校正误差,还是
B)尝试仅使用所述具体解码器的比所述较轻权重模式更重的较重权重模式来校正误差;以及
ⅳ)决定:
A)尝试使用具体解码器的较快模式来校正误差,还是
B)尝试仅使用所述具体解码器的比所述较快模式更慢的较慢模式来校正误差;以及
e)根据ⅰ、ⅱ、ⅲ或ⅳ的决定中的至少一个,基于所述策略中指定的转换条件和误差校正参数来实现解码器或者解码器模式的至少一个,校正在读取的数据中的误差,
其中从由以下构成的组中选择所述误差校正参数:
(i)用于选择较轻权重解码器、较重权重解码器、较快解码器或者较慢解码器中的一个的选择参数;以及
(ii)用于选择所选的解码器的较轻权重解码器模式、较重权重解码器模式、较快解码器模式或者较慢解码器模式中的一个的解码器模式参数,
其中所述存储器件经由设备间接口操作性地耦接到主机设备,以及其中所述方法还包括,
f)从所述存储器件向所述主机设备发送误差校正过的数据。
2.根据权利要求1所述的方法,其中所述固态存储器所驻留的存储器件的器件控制器来执行所述维持、所述读取、一个或多个所述决定以及所述校正中的至少一个。
3.根据权利要求1所述的方法,其中所述固态存储器是闪存。
4.一种用于处理误差校正的方法,所述方法包括:
a)维持固态存储器的至少一个块的擦除计数;
b)从具有相关联的擦除计数的存储器块之一读取数据;
c)根据所述相关联的擦除计数,确定以下的至少一个:
ⅰ)模式转换条件;以及
ⅱ)误差校正尝试资源预算;
d)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及
e)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据如下至少之一而定:
ⅰ)所述第一尝试对所述模式转换条件的触发;以及
ⅱ)所述第一尝试对所述资源预算的耗尽,
其中所述误差校正参数的第二集合不同于所述误差校正参数的第一集合,并且从由以下构成的组中选择所述第一集合和所述第二集合的误差校正参数:
i)用于从多个解码器中选择解码器的选择参数;
ii)用于从多个解码器模式中选择对于给定解码器的解码器模式的解码器模式参数。
5.根据权利要求4所述的方法,其中:
ⅰ)所述方法包括确定所述模式转换条件;以及
ⅱ)所述第二尝试根据至少所述第一尝试对所述模式转换条件的触发而定。
6.根据权利要求4所述的方法,其中:
ⅰ)所述方法包括确定所述资源预算;以及
ⅱ)所述第二尝试根据至少所述第一尝试对所述资源预算的耗尽而定。
7.一种用于处理误差校正的方法,所述方法包括:
a)维持固态存储器的至少一个块的擦除计数;
b)从具有相关联的擦除计数的存储器块之一读取数据;
c)根据所述相关联的擦除计数,确定以下的至少一个:
ⅰ)模式转换条件;以及
ⅱ)误差校正尝试资源预算;
d)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及
e)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据如下至少之一而定:
ⅰ)所述第一尝试对所述模式转换条件的触发;以及
ⅱ)所述第一尝试对所述资源预算的耗尽,
其中从由以下构成的组中选择至少一个误差校正参数:
ⅰ)用于从多个解码器中选择解码器的选择参数;
ⅱ)用于从多个解码器模式中选择给定解码器的解码器模式的解码器模式参数;
ⅲ)所读取的数据的比特概率值;
ⅳ)软比特数量;以及
ⅴ)解码器总线宽度。
8.一种用于处理误差校正的方法,所述方法包括:
a)维持固态存储器的至少一个块的擦除计数;
b)从具有相关联的擦除计数的存储器块之一读取数据;
c)根据所述相关联的擦除计数,确定以下的至少一个:
ⅰ)模式转换条件;以及
ⅱ)误差校正尝试资源预算;
d)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及
e)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据如下至少之一而定:
ⅰ)所述第一尝试对所述模式转换条件的触发;以及
ⅱ)所述第一尝试对所述资源预算的耗尽,
其中从由以下构成的组中选择所述模式转换条件:
ⅰ)超时条件;
ⅱ)迭代数量条件;以及
ⅲ)CPU周期数量条件。
9.一种用于处理误差校正的方法,所述方法包括:
a)维持固态存储器的至少一个块的擦除计数;
b)从具有相关联的擦除计数的存储器块之一读取数据;
c)根据所述相关联的擦除计数,确定以下的至少一个:
ⅰ)模式转换条件;以及
ⅱ)误差校正尝试资源预算;
d)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及
e)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据如下至少之一而定:
ⅰ)所述第一尝试对所述模式转换条件的触发;以及
ⅱ)所述第一尝试对所述资源预算的耗尽,
其中从由以下构成的组中选择所述误差校正尝试资源预算:
ⅰ)时间预算;
ⅱ)CPU周期预算;以及
ⅲ)迭代预算。
10.根据权利要求4所述的方法,其中由所述固态存储器所驻留的存储器件的器件控制器来执行所述维持、所述读取、所述确定以及一个或多个所述尝试中的至少一个。
11.一种用于处理误差校正的方法,所述方法包括:
a)维持存储器的至少一个块的擦除计数;
b)从具有相关联的擦除计数的存储器块之一读取数据;
c)基于擦除计数建立并实施策略,其中该策略标识转换条件和用于校正读取的数据中的误差的误差校正参数;
d)根据所述相关联的擦除计数,实现以下的至少一个:
ⅰ)确定针对所述数据要读取的软比特的数量;以及
ⅱ)选择解码总线宽度大小;以及
e)在确定所述软比特的数量的情况下,读取针对所述数据的所述数量的软比特;以及
f)尝试使用以下的至少一个来校正所述数据中的误差:
ⅰ)所选择的解码总线宽度大小;以及;
ⅱ)读取的软比特,
其中从由以下构成的组中选择所述误差校正参数:
i)用于从多个解码器中选择解码器的选择参数;
ii)用于从多个解码器模式中选择对于给定解码器的解码器模式的解码器模式参数。
12.根据权利要求11所述的方法,其中:
ⅰ)所述方法包括确定针对所述数据要读取的软比特的数量,并读取针对所述数据的所述数量的软比特;以及
ⅱ)所述尝试包括尝试至少使用所读取的软比特来校正所述数据中的误差。
13.根据权利要求11所述的方法,其中:
ⅰ)所述方法包括选择所述解码总线宽度大小;以及
ⅱ)所述尝试包括尝试使用所选择的解码总线宽度大小来校正所述数据中的误差。
14.根据权利要求11所述的方法,其中由固态存储器所驻留的存储器件的器件控制器来执行所述维持、一个或多个所述读取、所述确定、所述选择和所述尝试中的至少一个。
15.一种数据存储器件,包括:
a)固态存储器;以及
b)器件控制器,工作来:
ⅰ)维持所述固态存储器的至少一个块的擦除计数;
ⅱ)从具有相关联的擦除计数的存储器块之一读取数据;
ⅲ)基于擦除计数建立并实施策略,其中该策略标识转换条件和用于校正读取的数据中的误差的误差校正参数;
iv)根据该存储器块的相关联的擦除计数,实现以下的至少一个:
A)选择第一解码器和第二解码器之一;以及
B)选择第一解码器模式和第二解码器模式之一;以及
v)仅使用所选择的解码器或所选择的模式来校正在读取的数据中的误差,
其中从由以下构成的组中选择所述误差校正参数:
i)用于选择第一解码器或者第二解码器的选择参数;以及
ii)用于选择所选解码器的第一解码器模式或者第二解码器模式的解码器模式参数。
16.一种数据存储器件,包括:
a)固态存储器;以及
b)控制器,工作来:
ⅰ)维持所述固态存储器的至少一个块的擦除计数;
ⅱ)从具有相关联的擦除计数的存储器块之一读取数据;
ⅲ)基于擦除计数建立并实施策略,其中该策略标识转换条件和用于校正读取的数据中的误差的误差校正参数;
iv)根据所述相关联的擦除计数,实现以下的至少一个:
A)决定:
Ⅰ)尝试使用较轻权重解码器来校正误差,还是
Ⅱ)尝试仅使用比所述较轻权重解码器更重的较重权重解码器来校正误差;
B)决定:
Ⅰ)尝试使用较快解码器来校正误差,还是
Ⅱ)尝试仅使用比所述较快解码器更慢的较慢解码器来校正误差;
C)决定:
Ⅰ)尝试使用具体解码器的较轻权重模式来校正误差,还是
Ⅱ)尝试仅使用所述具体解码器的比所述较轻权重模式更重的较重权重模式来校正误差;以及
D)决定:
Ⅰ)尝试使用具体解码器的较快模式来校正误差,还是
Ⅱ)尝试仅使用所述具体解码器的比所述较快模式更慢的较慢模式来校正误差;以及
v)根据所述决定中的至少一个,基于所述策略中指定的转换条件和误差校正参数实现解码器或者解码器模式的至少一个,校正在读取的数据中的误差,
其中从由以下构成的组中选择所述误差校正参数:
(i)用于选择较轻权重解码器、较重权重解码器、较快解码器或者较慢解码器中的一个的选择参数;以及
(ii)用于选择所选的解码器的较轻权重解码器模式、较重权重解码器模式、较快解码器模式或者较慢解码器模式中的一个的解码器模式参数。
17.一种数据存储器件,包括:
a)固态存储器;以及
b)器件控制器,工作来:
ⅰ)维持所述固态存储器的至少一个块的擦除计数;
ⅱ)从具有相关联的擦除计数的存储器块之一读取数据;
ⅲ)根据所述相关联的擦除计数,确定以下的至少一个:
A)模式转换条件;以及
B)误差校正尝试资源预算;
ⅳ)使用误差校正参数的第一集合进行校正在读取的数据中的误差的第一尝试;以及
ⅴ)在校正误差的所述第一尝试不成功的情况下,使用误差校正参数的第二集合进行校正在读取的数据中的误差的第二尝试,所述第二尝试根据以下的至少一个而定:
A)所述第一尝试对所述模式转换条件的触发;以及
B)所述第一尝试对所述资源预算的耗尽,
其中从由以下构成的组中选择所述第一集合和所述第二集合的误差校正参数:
i)用于从多个解码器中选择解码器的选择参数;
ii)用于从多个解码器模式中选择对于给定解码器的解码器模式的解码器模式参数。
18.一种数据存储器件,包括:
a)固态存储器;以及
b)器件控制器,工作来:
ⅰ)维持所述固态存储器的至少一个块的擦除计数;
ⅱ)从具有相关联的擦除计数的存储器块之一读取数据;
ⅲ)根据所述相关联的擦除计数,实现以下的至少一个:
A)确定针对所述数据要读取的软比特的数量;以及
B)选择解码总线宽度大小;以及
ⅳ)在确定所述软比特的数量情况下,读取针对所述数据的所述数量的软比特;以及
ⅴ)尝试使用以下的至少一个来校正所述数据中的误差:
A)所选择的解码总线宽度大小;以及
B)所读取的软比特,
其中从由以下构成的组中选择所述误差校正参数:
i)用于从多个解码器中选择解码器的选择参数;
ii)用于从多个解码器模式中选择对于给定解码器的解码器模式的解码器模式参数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7506508P | 2008-06-24 | 2008-06-24 | |
US61/075,065 | 2008-06-24 | ||
PCT/IB2009/051856 WO2009156877A1 (en) | 2008-06-24 | 2009-05-06 | Method and apparatus for error correction according to erase counts of a solid-state memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102099793A CN102099793A (zh) | 2011-06-15 |
CN102099793B true CN102099793B (zh) | 2013-10-16 |
Family
ID=40908957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801283838A Active CN102099793B (zh) | 2008-06-24 | 2009-05-06 | 根据固态存储器的擦除计数进行误差校正的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8464134B2 (zh) |
EP (1) | EP2294510B1 (zh) |
JP (1) | JP5887589B2 (zh) |
KR (1) | KR20110036816A (zh) |
CN (1) | CN102099793B (zh) |
AT (1) | ATE539403T1 (zh) |
TW (1) | TW201001426A (zh) |
WO (1) | WO2009156877A1 (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131912B2 (en) * | 2007-09-27 | 2012-03-06 | Kabushiki Kaisha Toshiba | Memory system |
US8386868B2 (en) * | 2008-04-16 | 2013-02-26 | Sandisk Il, Ltd. | Using programming-time information to support error correction |
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US8527840B2 (en) * | 2010-04-06 | 2013-09-03 | Densbits Technologies Ltd. | System and method for restoring damaged data programmed on a flash device |
TWI455132B (zh) * | 2010-06-23 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、控制電路與記憶體控制器 |
US8650437B2 (en) * | 2010-06-29 | 2014-02-11 | International Business Machines Corporation | Computer system and method of protection for the system's marking store |
US8446786B2 (en) | 2011-01-20 | 2013-05-21 | Micron Technology, Inc. | Outputting a particular data quantization from memory |
US8862902B2 (en) * | 2011-04-29 | 2014-10-14 | Seagate Technology Llc | Cascaded data encryption dependent on attributes of physical memory |
US8719531B2 (en) * | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
EP2549482B1 (en) * | 2011-07-22 | 2018-05-23 | SanDisk Technologies LLC | Apparatus, system and method for determining a configuration parameter for solid-state storage media |
KR101830808B1 (ko) | 2011-11-04 | 2018-02-22 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 저장 방법 |
US8924815B2 (en) * | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8787079B2 (en) * | 2012-05-07 | 2014-07-22 | Sandisk Technologies Inc. | Reading data from multi-level cell memory |
KR102123946B1 (ko) | 2012-12-28 | 2020-06-17 | 삼성전자주식회사 | 멀티 레벨 셀 메모리 장치 및 그것의 동작방법 |
US9117533B2 (en) | 2013-03-13 | 2015-08-25 | Sandisk Technologies Inc. | Tracking erase operations to regions of non-volatile memory |
KR102168096B1 (ko) | 2013-03-15 | 2020-10-20 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법 |
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 |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9419655B2 (en) * | 2014-04-04 | 2016-08-16 | Seagate Technology Llc | Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes |
KR102149668B1 (ko) * | 2014-04-22 | 2020-08-31 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 디코딩 방법 |
US9082512B1 (en) * | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9595979B2 (en) | 2015-01-20 | 2017-03-14 | International Business Machines Corporation | Multiple erasure codes for distributed storage |
JP6486723B2 (ja) * | 2015-01-21 | 2019-03-20 | 東芝メモリ株式会社 | メモリシステムおよび処理装置 |
CN104810056A (zh) * | 2015-03-05 | 2015-07-29 | 华南理工大学 | 一种基于自适应ldpc码的nand闪存差错控制器 |
KR102285940B1 (ko) | 2015-05-29 | 2021-08-05 | 에스케이하이닉스 주식회사 | 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법 |
US11611359B2 (en) | 2015-05-29 | 2023-03-21 | SK Hynix Inc. | Data storage device |
US11515897B2 (en) | 2015-05-29 | 2022-11-29 | SK Hynix Inc. | Data storage device |
KR102347418B1 (ko) * | 2015-09-25 | 2022-01-06 | 에스케이하이닉스 주식회사 | 데이터 처리 장치 및 그것의 동작 방법 |
US9904594B2 (en) * | 2016-04-15 | 2018-02-27 | Micron Technology, Inc. | Monitoring error correction operations performed in memory |
CN107452421B (zh) * | 2016-05-31 | 2020-06-16 | 建兴储存科技(广州)有限公司 | 固态储存装置及其状态预测方法 |
US10055159B2 (en) * | 2016-06-20 | 2018-08-21 | Samsung Electronics Co., Ltd. | Morphic storage device |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10338983B2 (en) * | 2016-12-30 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for online program/erase count estimation |
JP2018147231A (ja) | 2017-03-06 | 2018-09-20 | 東芝メモリ株式会社 | メモリコントローラ、メモリシステムおよびメモリシステムの制御方法 |
KR20190022987A (ko) | 2017-08-25 | 2019-03-07 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10936205B2 (en) | 2017-10-05 | 2021-03-02 | International Business Machines Corporation | Techniques for retention and read-disturb aware health binning |
US10824352B2 (en) | 2017-12-06 | 2020-11-03 | International Business Machines Corporation | Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded |
KR102623234B1 (ko) * | 2018-08-14 | 2024-01-11 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
US10699791B2 (en) | 2018-08-24 | 2020-06-30 | International Business Machines Corporation | Adaptive read voltage threshold calibration in non-volatile memory |
KR102559549B1 (ko) | 2018-09-12 | 2023-07-26 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치 |
JP2020149123A (ja) * | 2019-03-11 | 2020-09-17 | キオクシア株式会社 | メモリシステム、及びメモリシステムの制御方法 |
US11088711B2 (en) | 2019-07-08 | 2021-08-10 | Winbond Electronics Corp. | Memory apparatus and data accessing method thereof |
TWI723515B (zh) * | 2019-08-29 | 2021-04-01 | 華邦電子股份有限公司 | 記憶體裝置及其資料存取方法 |
US11157179B2 (en) | 2019-12-03 | 2021-10-26 | Pure Storage, Inc. | Dynamic allocation of blocks of a storage device based on power loss protection |
KR20220092021A (ko) * | 2020-12-24 | 2022-07-01 | 삼성전자주식회사 | 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 |
CN116591623B (zh) * | 2023-07-14 | 2023-09-15 | 西南石油大学 | 基于图像识别的钻井用防跑浆预警系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5533035A (en) * | 1993-06-16 | 1996-07-02 | Hal Computer Systems, Inc. | Error detection and correction method and apparatus |
CN1499532A (zh) * | 2002-10-28 | 2004-05-26 | 非易失性存储器系统内纠错码的混合实现 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5268319A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Highly compact EPROM and flash EEPROM devices |
US6166650A (en) * | 1991-05-29 | 2000-12-26 | Microchip Technology, Inc. | Secure self learning system |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
JP3641280B2 (ja) | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
US5388083A (en) | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
JPH07264077A (ja) * | 1994-03-18 | 1995-10-13 | Canon Inc | 誤り検出訂正回路 |
US5568423A (en) | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
US6941505B2 (en) * | 2000-09-12 | 2005-09-06 | Hitachi, Ltd. | Data processing system and data processing method |
US6831865B2 (en) | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
US7900125B1 (en) * | 2004-05-24 | 2011-03-01 | Seagate Technology Llc | Majority detection in error recovery |
EP1776699A1 (en) * | 2004-08-02 | 2007-04-25 | Koninklijke Philips Electronics N.V. | Data storage and replay apparatus |
KR100688549B1 (ko) * | 2005-05-24 | 2007-03-02 | 삼성전자주식회사 | 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법 |
US7844877B2 (en) * | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
US8156403B2 (en) | 2006-05-12 | 2012-04-10 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
US8042029B2 (en) * | 2006-05-21 | 2011-10-18 | Ramot At Tel Aviv University Ltd. | Error correction decoding by trial and error |
US8069397B2 (en) * | 2006-07-10 | 2011-11-29 | Broadcom Corporation | Use of ECC with iterative decoding for iterative and non-iterative decoding in a read channel for a disk drive |
US7975192B2 (en) | 2006-10-30 | 2011-07-05 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US8151163B2 (en) | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US8095851B2 (en) * | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8429492B2 (en) * | 2007-11-30 | 2013-04-23 | Marvell World Trade Ltd. | Error correcting code predication system and method |
US9152496B2 (en) * | 2007-12-21 | 2015-10-06 | Cypress Semiconductor Corporation | High performance flash channel interface |
US8386868B2 (en) * | 2008-04-16 | 2013-02-26 | Sandisk Il, Ltd. | Using programming-time information to support error correction |
US8407559B2 (en) * | 2008-06-20 | 2013-03-26 | Marvell World Trade Ltd. | Monitoring memory |
-
2009
- 2009-05-06 AT AT09769687T patent/ATE539403T1/de active
- 2009-05-06 WO PCT/IB2009/051856 patent/WO2009156877A1/en active Application Filing
- 2009-05-06 KR KR1020117001643A patent/KR20110036816A/ko not_active Application Discontinuation
- 2009-05-06 JP JP2011514152A patent/JP5887589B2/ja active Active
- 2009-05-06 CN CN2009801283838A patent/CN102099793B/zh active Active
- 2009-05-06 US US12/436,155 patent/US8464134B2/en active Active
- 2009-05-06 EP EP09769687A patent/EP2294510B1/en not_active Not-in-force
- 2009-05-20 TW TW098116755A patent/TW201001426A/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5533035A (en) * | 1993-06-16 | 1996-07-02 | Hal Computer Systems, Inc. | Error detection and correction method and apparatus |
CN1499532A (zh) * | 2002-10-28 | 2004-05-26 | 非易失性存储器系统内纠错码的混合实现 |
Also Published As
Publication number | Publication date |
---|---|
EP2294510B1 (en) | 2011-12-28 |
JP5887589B2 (ja) | 2016-03-16 |
ATE539403T1 (de) | 2012-01-15 |
CN102099793A (zh) | 2011-06-15 |
JP2011525655A (ja) | 2011-09-22 |
KR20110036816A (ko) | 2011-04-11 |
US20090319859A1 (en) | 2009-12-24 |
WO2009156877A1 (en) | 2009-12-30 |
EP2294510A1 (en) | 2011-03-16 |
TW201001426A (en) | 2010-01-01 |
US8464134B2 (en) | 2013-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102099793B (zh) | 根据固态存储器的擦除计数进行误差校正的方法和装置 | |
KR101623119B1 (ko) | 솔리드 스테이트 드라이브의 에러 제어 방법 | |
US11782627B2 (en) | Read count scaling factor for data integrity scan | |
US11056198B2 (en) | Read disturb scan consolidation | |
US8175012B2 (en) | Decoding/encoding method for booting from a NAND flash and system thereof | |
US9583217B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US11275525B2 (en) | Apparatus and method for improving write throughput of memory system | |
WO2021026036A1 (en) | Read disturb scan consolidation | |
TWI545432B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN114651241A (zh) | 专用块的动态预留空间分配 | |
US11740957B2 (en) | Prioritization of error control operations at a memory sub-system | |
US10372377B2 (en) | Memory controller, memory system, and control method | |
US20210382787A1 (en) | Memory system for accessing data in stripe form and operating method thereof | |
KR20220077041A (ko) | 메모리 시스템 내 저장된 데이터를 유지하는 장치 및 방법 | |
US20220164143A1 (en) | Memory device and memory system | |
CN102915277A (zh) | 提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器 | |
CN113721832A (zh) | 数据储存装置与数据处理方法 | |
CN117632579B (zh) | 存储器控制方法和存储器存储装置 | |
US20230185667A1 (en) | Memory controller and data processing method | |
US20210004170A1 (en) | Changing of memory components to be used for a stripe based on an endurance condition | |
CN117174132A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN114822664A (zh) | 基于数据优先级的风险评估方法、存储装置及控制电路 | |
CN117632579A (zh) | 存储器控制方法和存储器存储装置 | |
CN116149571A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151230 Address after: texas Patentee after: Sandisk Corp. Address before: Israel saaba Patentee before: Sandisk Il Ltd. |
|
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: texas Patentee after: DELPHI INT OPERATIONS LUX SRL Address before: texas Patentee before: Sandisk Corp. |