CN103329103A - 用于基于闪存的数据存储的自适应ecc技术 - Google Patents
用于基于闪存的数据存储的自适应ecc技术 Download PDFInfo
- Publication number
- CN103329103A CN103329103A CN2011800631605A CN201180063160A CN103329103A CN 103329103 A CN103329103 A CN 103329103A CN 2011800631605 A CN2011800631605 A CN 2011800631605A CN 201180063160 A CN201180063160 A CN 201180063160A CN 103329103 A CN103329103 A CN 103329103A
- Authority
- CN
- China
- Prior art keywords
- error correcting
- correcting code
- code
- flash memory
- error
- 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.)
- Granted
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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- 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/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
Abstract
供闪存使用的自适应ECC技术能提高闪存的寿命、可靠度、性能和/或存储容量。该技术包括一组ECC方案,其具有各种码率和/或各种码长度(提供不同的纠错能力)并进行错误统计收集/跟踪(诸如经由专用硬件逻辑块)。该技术还包括根据一个或多个ECC方案进行编码/解码,并至少部分基于来自错误统计收集/跟踪(诸如经由从专用错误统计收集/跟踪硬件逻辑块接收输入的硬件逻辑自适应编解码器)的信息,在一个或多个ECC方案中进行动态转换编码/解码。该技术还包括随时间在各种操作模式下选择性操作闪存的一部分(例如,页面、块)(例如,作为MLC页面或SLC页面)。
Description
相关申请的交叉引用
在所附的申请数据表、请求或传递单(如适用,若有的话)中列出了对该申请的优先权要求。在即时申请的类型所允许的范围内,为了所有目的,本申请结合在做出本申请时所有由即时申请的所有者共同拥有的下列申请供参考:
于2010年10月27日提交的第一发明人为Yan Li且题为AdaptiveECC Techniques for Flash Memory Based Data Storage的美国临时申请(案号SF-10-03和序号61/407,178)。
技术领域
领域:需要改进闪存存储技术以提供性能、效率以及使用实用性的提高。
背景技术
现有技术:除非明确确定为大众所知或众所周知,否则本文中提及的技术和概念(包括用于上下文、定义或比较的目的)不应被理解为承认大众预先知晓这种技术和概念或者这种技术和概念为现有技术的一部分。无论是否明确结合,为了所有目的,本文中所引用的所有参考文献(若有的话)(包括专利、专利申请以及出版物)整体结合于此供参考。
发明内容
本发明可以多种方式实现,这些方式包括过程、制品、设备、系统、物质组分和计算机可读介质(诸如计算机可读存储介质(例如,光学和/或磁性大容量存储装置中的介质(诸如盘),或具有诸如闪存存储的非易失性存储器的集成电路))或计算机网络,其中,通过光学或电子通信链路发送程序指令。在本说明书中,这些实施或本发明可采取的任何其他形式可被称为技术。具体实施方式提供了能实现在上文认定的领域中的性能、效率和使用实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分更迅速理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的实例性实施方式。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
附图说明
图1示出了使用用于基于闪存的数据存储的自适应ECC技术的系统的一种实施方式的所选细节。
图2A示出了使用用于基于闪存的数据存储的自适应ECC技术的包括SSD控制器的SSD的一种实施方式的所选细节。
图2B示出了包括图2A的SSD的系统的一种实施方式的所选细节。
图2C示出了包括图2A的SSD的系统的另一实施方式的所选细节。
附图中的附图标记列表
附图标记 | 元件名称 |
100 | 系统 |
110 | 写入存储数据路径 |
120 | 通用编码器 |
130 | 控制/接口 |
140 | 闪存单元 |
150 | 读取存储数据路径 |
160 | 通用解码器 |
170 | 码库 |
180 | 错误统计收集/跟踪 |
200 | SSD控制器 |
201 | SSD |
202 | 主机 |
203 | 中间控制器 |
204 | 中间接口 |
210 | 外部接口 |
211 | 主机接口 |
213 | 标签跟踪 |
221 | 数据处理 |
223 | 引擎 |
231 | 缓冲器 |
233 | DMA |
237 | 存储器 |
241 | 映射 |
243 | 表格 |
251 | 再循环器 |
261 | ECC |
271 | CPU |
273 | 命令管理 |
275 | 缓冲管理 |
277 | 转换管理 |
279 | 相干性管理 |
281 | CPU核 |
282 | 装置管理 |
290 | 装置接口 |
291 | 装置接口逻辑 |
292 | 闪存装置 |
293 | 调度 |
294 | 闪存芯片 |
299 | 非易失性存储器 |
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是实例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可被应用于独立的实施方式组;如本文所使用,这些标签并不明确地意指传达质量、或任何形式的偏爱或偏见,而仅是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施方式用于描述过程、方法和/或程序指令特征的变化,其他实施方式均被设想为根据预定的或动态确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。许多具体细节被列于以下描述中,以提供对本发明的透彻理解。为实例的目的而提供细节,且本发明可根据未列出的一些或所有细节的权利要求来实践。为清楚的目的,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要模糊。
引言
仅包括该引言,以便于更迅速理解具体实施方式;本发明不限于在引言中提出的概念(包括明确的实例,若有的话),因为任何引言的段落均必须是整个主题的缩略图,且不意味着是详尽或限制的描述。例如,以下介绍仅对某些实施方式提供由空间和组织限定的概述信息。有许多其他实施方式,包括最终将针对其描绘权利要求的那些实施方式,在整个说明书的其余部分中讨论。
缩略语
本文中其他地方的各种速记缩写或首字母缩写词是指某些元件。以下是对这些首字母缩写词的至少一些的描述。
NAND闪存使用浮置栅极晶体管阵列来存储信息。在SLC技术中,每个位单元(例如,浮置栅极晶体管)能存储一比特信息。在MLC技术中,每个位单元能存储多比特信息。随着制造技术(例如,CMOS技术)尺寸缩小,每个浮置栅极存储更少电子。此外,随着存储容量和密度增大,每个位单元存储更多比特。因此,位单元内存储的值由更小的电压范围表示。检测过程中的不确定因素和/或所存储的电子量随时间的变化增大了错误存储或读取数据的可能性。使用一种或多种ECC技术能实现正确检索其他损坏的数据。
某些SSD使用闪存来提供非易失性存储(例如,无需加电即保留信息)。某些SSD与形状因数、电接口和/或由磁性和/或光学非易失性存储器使用的协议兼容,诸如HDD、CD驱动器和DVD驱动器。在各种实施方式中,SSD使用零或更多个RS码、零或更多个BCH码、零或更多个维特比或其他格子码、以及零或更多个LDPC码的各种组合。
原始BER的一个实例是从闪存中读取的数据的BER,没有ECC的优点。某些因数有助于原始BER(诸如写入错误、保留错误以及读取干扰错误),且原始BER可随时间变化。在闪存内存储数据分为两部分处理:首先,擦除闪存的块,以及随后写入该块。这两部分处理为PE周期的一个实例。在各种使用场景和/或实施方式中,闪存的错误的所有或者一个或多个部分为闪存内的一个特定块已经历的PE周期数量的函数。在某些使用场景和/或实施方式中,随着一个特定块进行PE循环(例如,擦除并随后写入),该特定块的原始BER增大。
在某些方法中,闪存的整个寿命中使用固定的ECC。例如,从第一次操作闪存到最后一次操作闪存,使用单个ECC方案。单个ECC方案被设计成具有充足的错误校正能力,以便在闪存的整个生命周期中校正可能最差的原始BER(例如,能在闪存的后期寿命期间进行校正)。该错误校正能力足以在闪存的早期和中期寿命期间校正源于相对较低的原始BER的错误,从而减小有效存储容量(因为用于ECC的存储容量比校正错误时所需的存储容量更多)。
在各种实施方式和/或使用场景中,用于闪存的自适应ECC技术能实现闪存寿命、可靠度、性能和/或存储容量的提高。所述技术包括一组ECC方案,其具有各种码类型、码率和/或各种码长度(提供不同的错误校正能力)并进行错误统计收集/跟踪(诸如经由专用硬件逻辑块)。所述技术还包括根据一个或多个ECC方案进行编码/解码,且至少部分基于来自错误统计收集/跟踪(诸如经由从专用错误统计收集/跟踪硬件逻辑块接收输入的硬件逻辑自适应编解码器)的信息,在相应的一个或多个ECC方案中,对闪存的所有或任何部分进行动态转换编码/解码。所述技术还包括随时间在各种操作模式下选择性操作闪存的一部分(例如,页面或块)(例如,作为MLC页面或SLC页面)。例如,在闪存寿命的早期部分期间,使用更短的长度码,并在寿命的后期部分期间,使用更长的长度码。对于另一实例,在闪存的页面的操作周期期间,该页面被作为MLC页面操作,且随后,在后续操作周期期间,该页面被作为SLC页面操作。根据例如加电的时间、程序/擦除周期的数量、读取周期的数量、所测量和/或评估的BER、程序时间、擦除时间、读取时间、温度和/或闪存的存储单元的阈值电压,可测量寿命或操作周期。
实例性实施方式
在结束对具体实施方式的介绍时,如下是实例性实施方式的集合,包括明确列举为“EC”(实例性组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些实施方式并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些实例性实施方式,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
EC1)一种系统,包括:
错误统计收集和跟踪硬件逻辑块,能实现确定对闪存的一部分的访问的原始比特误码率(BER);以及
自适应编码器硬件块,能实现根据多个纠错码中选择的一个进行编码,且还能实现至少部分基于所述原始BER来动态确定选择的纠错码。
EC2)根据EC1所述的系统,其中,根据一个所述纠错码进行编码使多个纠错比特存储在比根据另一个所述纠错码进行编码的更少的所述部分内。
EC3)根据EC1所述的系统,其中,根据一个所述纠错码进行编码使多个纠错比特存储在比根据另一个所述纠错码进行编码的更多的所述部分内。
EC4)根据EC1所述的系统,其中,在所选择的纠错码为第一个纠错码时,与第二个纠错码相比,由所述自适应编码器输出相对较多的数据信息和相对较少的纠错信息。
EC5)根据EC4所述的系统,其中,在所选择的纠错码为第一纠错码时的数据信息量大于在所选择的纠错码为第二纠错码时的数据信息量。
EC6)根据EC4所述的系统,其中,在所选择的纠错码为所述第二纠错码时的数据信息的量为2的幂。
EC7)根据EC4所述的系统,其中,在所选择的纠错码为所述第二纠错码时的数据信息的量为2的幂,且其中,在所选择的纠错码为所述第一纠错码时的数据信息的量大于在所选择的纠错码为所述第二纠错码时的数据信息的量。
EC8)根据EC1所述的系统,还包括自适应解码器,能实现根据任何所述纠错码进行解码。
EC9)根据EC1所述的系统,其中,所述纠错码仅包括里德-所罗门(RS)码。
EC10)根据EC1所述的系统,其中,所述纠错码仅包括博斯-乔赫里-霍克文黑姆(BCH)码。
EC11)根据EC1所述的系统,其中,所述纠错码仅包括低密度奇偶校验(LDPC)码。
EC12)根据EC1所述的系统,其中,所述纠错码包括至少两种类型的纠错码,所述纠错码的类型包括里德-所罗门(RS)型码、博斯-乔赫里-霍克文黑姆(BCH)型码、以及低密度奇偶校验(LDPC)型码。
EC13)根据EC1所述的系统,其中,至少两个所述纠错码具有不同码率。
EC14)根据EC1所述的系统,其中,至少两个所述纠错码具有不同码长度。
EC15)根据EC1所述的系统,其中,所述部分为所述闪存的一个或多个块,每个所述块是单独可擦除的。
EC16)根据EC1所述的系统,其中,所述部分为所述闪存的一个或多个页面,每个所述页面是单独可写入的。
EC17)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块还能实现确定对所述闪存的相应部分的访问的相应原始BER。
EC18)根据EC1所述的系统,其中,所述闪存包括一个或多个闪存芯片。
EC19)根据EC1所述的系统,其中,所述原始BER为所估计的原始BER。
EC20)根据EC19所述的系统,其中,至少部分通过计数在所述部分上执行程序/擦除周期的数量来确定所估计的原始BER。
EC21)根据EC19所述的系统,其中,至少部分通过计数在所述部分上执行读取周期的数量来确定所估计的原始BER。
EC22)根据EC19所述的系统,其中,至少部分通过确定与所述部分的至少一个单元相关联的阈值电压来确定所估计的原始BER。
EC23)根据EC19所述的系统,其中,至少部分基于一个或多个预定阈值来确定所估计的原始BER。
EC24)根据EC19所述的系统,其中,至少部分基于一个或多个统计模型来确定所估计的原始BER。
EC25)根据EC1所述的系统,其中,所述原始BER为所测量的原始BER。
EC26)根据EC25所述的系统,其中,定期确定所测量的原始BER。
EC27)根据EC25所述的系统,其中,至少部分通过将预定模式写入所述部分并随后读取所述部分来确定所测量的原始BER。
EC28)根据EC25所述的系统,其中,至少部分通过观察与所述部分的至少某些读数相关联的BER来确定所测量的原始BER。
EC29)根据EC25所述的系统,其中,至少部分通过比较来自所述闪存的原始读取数据与纠错版本的原始读取数据来确定所测量的原始BER。
EC30)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块为不同的硬件逻辑块。
EC31)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块为专用硬件逻辑块。
EC32)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块为分布式硬件逻辑块。
EC33)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块至少部分被实施在自适应解码器硬件逻辑块内,所述自适应解码器硬件逻辑块能实现根据任何所述纠错码进行解码。
EC34)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块至少部分被实施在自适应解码器硬件逻辑块内,所述自适应解码器硬件逻辑块能实现比较来自所述闪存的原始读取数据与纠错版本的原始读取数据,以便至少部分确定所述原始BER。
EC35)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块至少部分被实施在闪存接口硬件逻辑块内,所述闪存接口硬件逻辑块与所述闪存兼容且能实现计数在所述部分上执行程序/擦除周期的数量,且自适应编码器还能实现至少部分基于所述计数来动态确定所选择的纠错码。
EC36)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块至少部分被实施在闪存接口硬件逻辑块内,所述闪存接口硬件逻辑块与所述闪存兼容且能实现计数在所述部分上执行读取周期的数量,且自适应编码器还能实现至少部分基于所述计数来动态确定所选择的纠错码。
EC37)根据EC1所述的系统,其中,所述错误统计收集和跟踪硬件逻辑块至少部分被实施在闪存接口硬件逻辑块内,所述闪存接口硬件逻辑块与所述闪存兼容且能实现确定与所述部分的至少一个单元相关联的阈值电压,且自适应编码器还能实现至少部分基于所述阈值电压来动态确定所选择的纠错码。
EC38)根据EC1所述的系统,其中,所述部分包括多个子部分,且自适应编码器还能实现进行编码,使得纠错信息可存储在一个或多个子部分内,且数据信息可存储在仅一个子部分内。
EC39)根据EC1所述的系统,其中,所述硬件块被包括在固态盘(SSD)控制器内。
EC40)根据EC1所述的系统,其中,所述硬件块被包括在固态盘(SSD)内。
EC41)根据EC1所述的系统,其中,所述硬件块被包括在非易失性存储元件控制器内。
EC42)根据EC1所述的系统,其中,所述硬件块被包括在非易失性存储元件内。
EC43)根据EC42所述的系统,其中,所述非易失性存储元件包括通用串行总线(USB)存储元件、紧凑式闪存(CF)存储元件、多媒体卡(MMC)存储元件、安全数字(SD)存储元件、记忆棒存储元件、以及xD存储元件中的一个或多个。
EC44)一种系统,包括:
错误统计收集和跟踪硬件逻辑块,能实现确定对闪存的一部分的访问的原始比特误码率(BER);以及
自适应编解码器,包括自适应编码器和自适应解码器,所述自适应编码器能实现根据多个纠错码中第一选择的一个进行编码,所述自适应解码器能实现根据所述纠错码中第二选择的一个进行解码,且所述自适应编解码器还包括控制硬件逻辑块,所述控制硬件逻辑块能实现至少部分基于从所述错误统计收集和跟踪硬件逻辑块接收的信息来确定所述纠错码中的所述第一选择的一个。
EC45)根据EC44所述的系统,其中,所述自适应编解码器还包括码库,所述码库能实现描述每个所述纠错码。
EC46)根据EC44所述的系统,其中,所述自适应编码器为通用编码器,所述通用编码器能实现根据任何所述纠错码进行编码。
EC47)根据EC44所述的系统,其中,所述自适应解码器为通用解码器,所述通用解码器能实现根据任何所述纠错码进行解码。
EC48)一种系统,包括:
码率选择块,能实现确定与闪存的多个部分中的每一个相关联的相应码率;
编码器,可根据相应确定的码率来操作;
解码器,可根据所述相应确定的码率来操作;以及
其中,利用由所述编码器根据所述相应确定的码率中的特定一个编码的数据写入所述闪存的所述部分中的特定一个,且随后,从该特定部分中读取并由所述解码器解码所述闪存的所述部分中的特定一个。
EC49)根据EC48所述的系统,其中,所述码率选择块由硬件逻辑电路组成。
EC50)根据EC48所述的系统,其中,所述码率选择块能实现至少部分基于每一个或多个所述部分的一个或多个参数、或者一个或多个所述参数的一个或多个历史来确定所述相应码率,所述参数包括:
校正的错误的数量,
检测的错误的数量,
程序/擦除周期的数量,
读取周期的数量,
程序时间,
擦除时间,
读取时间,
温度,以及
阈值电压。
系统和操作
图1示出了使用用于基于闪存的数据存储的自适应ECC技术的系统100的一种实施方式的所选细节。写入存储数据路径110包括各种硬件块:通用编码器120,其与控制/接口130耦接,该控制/接口130反过来与闪存单元140耦接(包括例如一个或多个闪存芯片)。读取存储数据路径150包括各种硬件块:闪存单元以及与通用解码器160耦接的控制/接口。码库170硬件块与通用编码器和通用解码器硬件块耦接。错误统计收集/跟踪180硬件块与通用编码器、码库、通用解码器以及控制/接口硬件块耦接。
在操作中,写为存储数据的“来自主机的用户数据”由通用编码器接收并根据纠错码进行编码。纠错码由来自码库中的信息描述,且部分基于诸如由错误统计收集/跟踪块提供的信息进行选择。通用编码器随后将数据信息和纠错信息提供给将信息写入闪存单元的控制/接口。
读取存储数据开始于由控制/接口从闪存单元的一个或多个部分(例如,页面或块)中读取原始信息,并将原始信息提供给通用解码器。通用解码器随后使用原始信息内所包括的纠错信息,根据纠错码将原始信息(包括纠错)解码成数据信息。纠错码由来自码库中的信息描述,且部分基于诸如由错误统计收集/跟踪块和/或原始信息的一个或多个部分提供的信息进行选择。随后,将数据信息传递给主机。在各种替代性实施方式中,执行一个或多个交替的处理顺序。例如,在某些实施方式中,通过读取码库,随后由控制/接口读取原始信息来开始读取存储数据。
从一组纠错码中选择用于进行编码(以及解码)的纠错码。在各种实施方式中,该组包括仅RS码、仅BCH码、仅格子码、或仅LDPC码。在各种实施方式中,该组包括多于一种类型的码,诸如RS、BCH、格子和/或LDPC码类型的各种组合,且各个码类型包括相应类型的一个或多个特定码。在各种实施方式中,该组包括各种速率和/或长度的码。在其他实施方式中,一种码类型(诸如BCH码类型)的码被用于更高速率的码,且另一码类型(诸如LDPC码类型)的码被用于更低速率的码。
错误统计收集/跟踪硬件块被实施为独立功能性硬件块或者可选地被实施为分布在一个或多个硬件块内的功能块。例如,错误统计收集/跟踪硬件块部分在通用解码器硬件块内实施,且通过比较从闪存单元中读取的原始信息与通过将原始信息进行解码产生的纠错数据信息,能实现计算所测量的原始BER。对于另一实例,错误统计收集/跟踪硬件块部分在控制/接口硬件块内实施,且通过计数PE周期和/或读取周期(例如,每个存储单元,诸如闪存的页面或块)的数量并将该数量用作对于反过来提供所估计的原始BER的预定统计模型的参数,能实现计算所估计的原始BER。对于另一实例,错误统计收集/跟踪硬件块部分在控制/接口硬件块内实施,且通过获得从一部分闪存(诸如闪存的页面或块)中读取的一个或多个单元的阈值电压(或其代理),并将该电压用作对于反过来提供所估计的原始BER的预定统计模型的参数,能实现计算所估计的原始BER。对于再一实例,错误统计收集/跟踪硬件块能够提供一个或多个预定模式来写入闪存中(诸如通过旁路通用编码器),且能够验证从闪存中返回的原始比特错误的数量(诸如通过旁路通用解码器),以便确定所测量的原始BER。预定模式包括全零模式、全一模式或者一个或多个PRBS模式。再如另一实例,错误统计收集/跟踪硬件块能够定期确定(诸如每100个PE周期进行一次)闪存的一个或多个部分的当前原始(所测量的)BER,例如,通过提供并验证一个或多个预定模式。作为其他实例,任何一个或多个上述实例被实施在各种组合中。
在各种实施方式中,经由一个或多个软件技术,完全或部分实施由上述错误统计收集/跟踪硬件块执行的一个或多个功能。例如,可编程硬件定时器为处理器提供中断。作为响应,处理器执行软件中断处理例程,该例程引导一部分通用解码器硬件块来向处理器提供一个或多个所测量的原始BER值。该处理器将这些值累积成移动平均数。至少部分使用该移动平均数来确定所选择的纠错码,诸如通过向能够选择纠错码的软件功能的输入,或者可选地作为向能够选择纠错码的硬件单元的输入。对于另一实例,处理器执行一个或多个软件例程来计数每个存储单元的PE和/或读取周期。通过从由处理器可寻址的存储器中读取前一计数器值、递增计数器值、并随后将递增的计数器值存储回存储器中的例程来进行计数。可预想具有在硬件和软件的各种组合中执行的各种错误统计收集和跟踪功能的其他实施方式。
在某些实施方式中,错误统计收集/跟踪块能够随时间保留历史信息,并根据历史计算知晓历史的原始BER。例如,错误统计收集/跟踪块能够保留所测量的(或所估计的)原始BER(诸如每个块或每个页面对每个访问或每个操作时间)的历史,并根据历史来确定知晓历史的所测量的(或所估计的)原始BER。
根据各种标准、使用场景以及实施方式来动态确定用于进行编码所选择的纠错码。例如,所测量的(或所估计的)原始BER动态影响为了进行编码而选择哪个纠错码。对于另一实例,知晓历史的所测量的(或所估计的)原始BER影响为了进行编码而选择哪个纠错码。动态确定用于将闪存的特定部分进行解码而选择的纠错码,以便与在最后写入该特定部分时使用的编码相匹配。
各种实施方式执行纠错码选择以进行编码,未明确计算原始BER(所测量的或所估计的),而是基于一个或多个参数或一个或多个参数的历史来直接动态选择纠错码。这些参数包括校正和/或检测的错误的数量、PE周期的数量、读取周期的数量、程序时间、擦除时间、读取时间、温度以及阈值电压。在各种实施方式中,这些参数(和/或其历史)基于每个闪存部分(诸如闪存的每个页面或每个块)。
在某些实施方式中,闪存(诸如包括在闪存单元内)被组织在部分(诸如页面或块)内,且每个部分能够存储预定信息量(诸如2K或4K字节的信息)。该信息包括数据信息和纠错信息。在某些实施方式中,每个部分能够存储相同的特定数量的字节,作为纠错信息,且在其他实施方式中,某些部分能够存储不同数量的字节的纠错信息。各种纠错码(诸如由码库描述)产生出不同数量的字节(或比特)的纠错信息。
例如,与第二纠错码(诸如在后续寿命中使用)相比,经由第一纠错码(诸如在闪存寿命中的相对早期使用)进行编码会产生相对较少字节的纠错信息(例如,用于进行纠错的冗余信息)。在某些实施方式中,闪存(和/或其使用)能够存储足以经由每个部分内的第二纠错码进行编码的纠错信息,使得在使用第一纠错码时未使用纠错信息存储。在其他实施方式中,闪存(和/或其使用)能够存储足以经由每个部分内的第一纠错码进行编码的纠错信息,且该闪存不能(在每个部分内)存储足以经由第二纠错码进行编码的纠错信息。某些其他实施方式包括额外的闪存存储器(诸如专用于存储额外的纠错信息的闪存的区域),该额外的闪存存储器结合每部分纠错信息存储器足以存储经由第二纠错码编码的纠错信息。
在某些实施方式中,闪存被作为部分(诸如页面或块或其倍数)来操作,且将每个部分组织为数据子部分和各相应的纠错子部分。闪存(和/或其使用)能够根据多个纠错码中动态选择的特定一个将特定量的存储数据进行编码,产生与特定量的存储数据相对应的纠错信息。该存储数据与纠错信息结合被存储在数据子部分中的特定一个和纠错子部分中相应的特定一个的组合内。这些部分均具有相同大小或者可选地具有不同大小。
例如,闪存(和/或其使用)能够将纠错信息完全存储在纠错子部分内,该纠错信息足够大以便经由相对较小的纠错码进行编码,使得所有相应的数据子部分可用于将存储数据(从该存储数据中产生纠错信息)进行存储。然而,纠错子部分不够大,不足以存储经由相对较大的纠错码编码的纠错信息。相反,“借用”数据存储子部分的量以便存储在纠错子部分内不适合的纠错信息的剩余部分,因此减小可用于将存储数据存储在数据存储子部分内的空间(减小了所借用的量)。因此,与在使用相对较小的纠错码时的存储数据的量相比,在使用相对较大的纠错码时,存储数据的量更小,因为可使用相对较小的数据存储子部分。因此,在使用相对较大的纠错码时,由闪存(和/或其使用)提供相对较小的可用总空间。
对于另一实例,闪存(和/或其使用)能够将纠错信息完全存储在纠错子部分内,该纠错信息足够大以经由相对较大的纠错码进行编码,使得所有相应的数据子部分可用于将存储数据(从该存储数据中产生纠错信息)进行存储。纠错子部分足够大以存储经由相对较小的纠错码编码的纠错信息。“借用”纠错子部分的量以用于存储额外的存储数据,在解释经由相对较小的纠错码编码的纠错信息之后,该纠错子部分的量高达且包括纠错子部分内剩余的所有空间。因此,与在使用相对较大的纠错码时的存储数据的量相比,在使用相对较小的纠错码时,存储数据的量更大,因为可使用相对较多的数据存储子部分。因此,在使用相对较小的纠错码时,由闪存(和/或其使用)提供相对较大的可用总空间。
在各种实施方式和/或使用场景中,根据从数据子部分的上述借用(例如,如在根据使纠错子部分“溢出”的纠错码进行编码时所需)来操作闪存的某些部分,而根据从纠错子部分的上述借用(例如,如在根据使空间可用于数据子部分的纠错码进行编码时可能)来操作闪存的其他部分。在各种实施方式和/或使用场景中,通过从数据或纠错子部分中借用(例如,如根据用于进行编码的纠错码所需)来操作闪存的某些部分。这些部分具有相同大小或不同大小,且利用数据(或纠错)子部分的相同分配或不同分配(例如,所有数据子部分具有特定大小,或者所有数据子部分具有多个大小中的任一个)来组织这些部分。
在各种实施方式中,基于一个或多个原始BER和/或被用于动态选择纠错码以便将数据信息进行编码的上述参数来改变一部分闪存的使用模式。例如,在原始BER超过阈值时,预先用作MLC页面的一部分(诸如页面)闪存随后被用作SLC页面(诸如通过将页面用作“仅更低的”页面)。对于另一实例,在一部分闪存寿命的早期部分期间,该部分被用作MLC部分,且在寿命后期部分期间,该部分被用作SLC部分。在该部分被用作SLC部分时(与MLC部分相比),减小可用于存储数据的空间,但若在寿命后期部分期间,将该部分标记为不可使用,则该可用空间更大。
在各种实施方式中,用于进行编码的纠错码的动态选择与闪存部分操作模式的动态选择一起使用。例如,在闪存的页面的最初操作周期期间,该页面被用作MLC页面,并用第一短码长度ECC进行编码。在随后的操作周期期间,该页面仍被用作MLC页面,但根据第一长码长度ECC进行编码。在另一随后的操作周期期间,该页面被用作SLC页面,并用第二短码长度ECC进行编码。在另一随后的操作周期期间,该页面仍被用作SLC页面,但根据第二长码长度ECC进行编码。在操作周期内减小可用于存储数据的空间(因为该页面采用第一短码长度ECC进行编码,随后采用第一长码长度ECC进行编码,随后通过第二短码长度ECC被用作SLC页面,以及随后通过第二长码长度ECC进行操作),但若将该页面标记为不可使用,则该可用空间更大。
可替代地,尽管闪存的页面的原始BER小于第一阈值,但该页面被用作MLC页面,并采用第一短码长度ECC进行编码。若/当原始BER超过第一阈值(但仍小于第二阈值)时,则该页面采用第一更长的码长度ECC进行编码(同时仍被用作MLC页面)。若/在原始BER超过第二阈值(但仍小于第三阈值)时,则该页面采用甚至更长的码长度ECC进行编码。若/在原始BER超过第三阈值(但仍小于第四阈值)时,则该页面被用作SLC页面,并采用第二短码长度ECC进行编码。若/在原始BER超过第四阈值时,则该页面继续被用作SLC页面,并采用第二更长的码长度ECC进行编码。
在某些实施方式中,在第一操作模式下操作页面(诸如MLC页面),并动态选择被用于为页面编码数据的纠错码(诸如根据任何上述参数)。若根据动态选择的纠错码使用的纠错码信息超过阈值,则在第二操作模式下操作该页面(诸如SLC页面)。
在各种实施方式和/或使用场景中,在特定情况下,页面被用作SLC页面,而不考虑纠错码选择。特定情况的实例包括被用于经常是可访问的数据、经常被写入的数据、和/或受益于更高吞吐量的数据的页面。
在各种实施方式和/或使用场景中,与寿命后期更长的纠错码相比,在闪存寿命的早期,采用更短的纠错码操作闪存的一部分(例如,页面、块或其倍数)。因此,闪存的更大有效量可用于用户数据,且因此,通过有效过度供应,增大闪存的寿命。例如,闪存装置具有的页面大小略微大于2的幂,诸如8936(744+213)字节。与在整个寿命中使用相同比例相比,改变预留给用户数据的页面的比例以在闪存装置寿命的早期为大于2的幂,并在寿命后期为小于2的幂,从而延长寿命。
SSD控制器的实施
图2A示出了使用用于基于闪存的数据存储的自适应ECC技术的包括SSD控制器的SSD的一种实施方式的所选细节。SSD控制器200经由一个或多个外部接口210与主机(未示出)通信式耦接。根据各种实施方式,外部接口210为以下中的一个或多个:SATA接口、SAS接口、PCIe接口、光纤信道接口、以太网接口(诸如10千兆比特的以太网)、非标准版本的任何上述接口、自定义接口、或用于将存储和/或通信和/或计算装置互连的任何其他类型的接口。例如,在某些实施方式中,SSD控制器200包括SATA接口和PCIe接口。
SSD控制器200还经由一个或多个装置接口290与包括一个或多个存储装置(诸如闪存装置292)的非易失性存储器299通信式耦接。根据各种实施方式,装置接口290为以下中的一个或多个:异步接口、同步接口、DDR同步接口、ONFI兼容接口(诸如ONFI2.2兼容接口)、切换模式兼容闪存接口、非标准版本的任何上述接口、自定义接口、或用于与存储装置连接的任何其他类型的接口。
在某些实施方式中,闪存装置292具有一个或多个单独的闪存芯片294。根据特定的一个闪存装置292的类型,可选地和/或选择性地可并行访问特定闪存装置292内的多个闪存芯片294。闪存装置292仅表示一种类型的存储装置,其能够与SSD控制器200通信式耦接。在各种实施方式中,可使用任何类型的存储装置,诸如SLC NAND闪存、MLC NAND闪存、NOR闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁存储器、相变存储器、赛道存储器、或任何其他类型的存储器装置或存储介质。
根据各种实施方式,将装置接口290组织为:每个总线具有一个或多个闪存装置292的一个或多个总线;每个总线具有一个或多个闪存装置292的一组或多组总线,其中,通常并行访问组内的总线;或者装置接口290上的闪存装置292的任何其他组织。
在图2A中继续,SSD控制器200具有一个或多个模块,诸如主机接口211、数据处理221、缓冲器231、映射241、再循环器251、ECC261、装置接口逻辑291以及CPU271。图2A中所示的特定模块和互连仅表示一种实施方式,并考虑某些或所有模块的多个设置和互连以及未示出的额外模块。在第一实例中,在某些实施方式中,具有两个或多个主机接口211,以便提供双端口。在第二实例中,在某些实施方式中,数据处理221和/或ECC261与缓冲器231相结合。在第三实例中,在某些实施方式中,主机接口211与缓冲器231直接耦接,且数据处理221可选地和/或选择性地对缓冲器231内存储的数据进行操作。在第四实例中,在某些实施方式中,装置接口逻辑291与缓冲器231直接耦接,且ECC261可选地和/或选择性地对缓冲器231内存储的数据进行操作。
主机接口211经由外部接口210发送和接收命令和/或数据,并在某些实施方式中,经由标签跟踪213跟踪单个命令的进程。例如,这些命令包括指定地址(诸如LBA)的读取命令和要读取的数据量(诸如多个LBA量,例如,部);作为响应,SSD提供读取状态和/或读取数据。对于另一实例,这些命令包括指定地址(诸如LBA)的写入命令和要写入的数据量(诸如多个LBA量,例如,部);作为响应,SSD提供写入状态和/或请求写入数据,且可选地随后提供写入状态。对于另一实例,这些命令包括指定不再需要分配的地址(诸如LBA)的解分配命令;作为响应,SSD相应修改映射,且可选地提供解分配状态。对于另一实例,这些命令包括超级电容器测试命令或数据硬化成功查询;作为响应,SSD提供适当状态。在某些实施方式中,主机接口211与SATA协议兼容,并使用NCQ命令,能够具有高达32个未决命令,每个命令具有由从0到31的数字表示的唯一标签。在某些实施方式中,标签跟踪213能够使用于经由外部接口210接收的命令的外部标签与用于在由SSD控制器200进行处理期间跟踪命令的内部标签相关联。
根据各种实施方式,具有以下中的一个或多个:数据处理221可选地和/或选择性地处理在缓冲器231与外部接口210之间发送的某些或所有数据;以及数据处理221可选地和/或选择性地处理在缓冲器231内存储的数据。在某些实施方式中,数据处理221使用一个或多个引擎223来执行以下中的一个或多个:格式化、重新格式化、转码以及任何其他数据处理和/或操纵任务。
缓冲器231存储从装置接口290发送给外部接口210或者从外部接口210发送给装置接口290的数据。在某些实施方式中,缓冲器231另外存储由SSD控制器200使用来管理闪存装置292的系统数据(诸如某些或所有映射表)。在各种实施方式中,缓冲器231具有以下中的一个或多个:用于临时存储数据的存储器237;用于控制数据移动到缓冲器231和/或从该缓冲器231移动数据的DMA233;以及其他数据移动和/或操纵功能。
根据各种实施方式,具有以下中的一个或多个:ECC261可选地和/或选择性地处理在缓冲器231和装置接口290之间发送的某些或所有数据;且ECC261可选地和/或选择性地处理在缓冲器231内存储的数据。
装置接口逻辑291经由装置接口290控制闪存装置292。装置接口逻辑291能够根据闪存装置292的协议将数据发送给闪存装置292或者从闪存装置292发送数据。装置接口逻辑291包括调度293,以经由装置接口290选择性地顺序控制闪存装置292。例如,在某些实施方式中,调度293能够使闪存装置292的操作排队,并能够选择性地将这些操作发送给单独的闪存装置292(或闪存芯片294)中的一个,因为可使用单独的闪存装置292(或闪存芯片294)。
映射241使用表格243在外部接口210上使用的数据寻址与装置接口290上使用的数据寻址之间进行转换,以便将外部数据地址映射在非易失性存储器299内的位置。例如,在某些实施方式中,映射241经由由表格243提供的映射,将外部接口210上使用的LBA转换为以一个或多个闪存芯片294为目标的块和/或页面地址。对于自驱动制造或解分配起未写入的LBA而言,若读取该LBA,则该映射指向默认值以便返回。例如,在处理解分配命令时,修改该映射,从而与解分配的LBA相对应的条目指向一个默认值。在各种实施方式中,具有多个默认值,每个默认值具有相应的指示器。多个默认值能够读取某些解分配的LBA(诸如在第一范围内),作为一个默认值,同时读取其他解分配的LBA(诸如在第二范围内),作为另一默认值。在各种实施方式中,由闪存、硬件、固件、命令/原始论证/参数、可编程寄存器、或其各种组合限定这些默认值。
在某些实施方式中,再循环器251进行垃圾收集。例如,在某些实施方式中,闪存装置292包括在可重写块之前必须擦除的块。再循环器251能够确定闪存装置292中的哪些部分在有效使用(例如,分配而非解分配),诸如通过扫描由映射241保持的映射,并通过擦除它们,能够使闪存装置292中未使用的(例如,解分配的)部分可用于写入。在其他实施方式中,再循环器251能够移动在闪存装置292内存储的数据,以便使闪存装置292中更大的连续部分可用于写入。
CPU271控制SSD控制器200的各种部分。CPU271包括CPU核281。根据各种实施方式,CPU核281为一个或多个单核或多核处理器。在某些实施方式中,CPU核281内单独的处理器核具有多线程。CPU核281包括指令和/或数据高速缓存器和/或存储器。例如,指令存储器包括的指令能使CPU核281执行软件(有时称为固件),以控制SSD控制器200。在某些实施方式中,将由CPU核281执行的某些或所有固件存储在闪存装置292上。
在各种实施方式中,CPU271还包括:命令管理273,用于跟踪和控制经由外部接口210接收的命令,同时这些命令处于进行中;缓冲管理275,用于控制缓冲器231的分配和使用;转换管理277,用于控制映射241;相干性管理279,用于控制数据寻址的一致性并避免诸如在外部数据存取和再循环数据存取之间发生冲突;装置管理282,用于控制装置接口逻辑291;以及可选的其他管理单元。根据各种实施方式,由硬件、软件(诸如在CPU核281上或者在经由外部接口210连接的主机上执行的软件)或其任意组合不控制和/或管理由CPU271执行的任何管理功能,或者控制和/或管理任何或所有这些管理功能。
在某些实施方式中,CPU271能够执行其他管理任务,诸如以下中的一个或多个:聚集和/或报告性能统计;实施SMART;控制功率顺序、控制和/或监测和/或调节功耗;对电源故障做出响应;控制和/或监测和/或调节时钟频率;以及其他管理任务。
各种实施方式包括计算主机闪存控制器,其与SSD控制器200相似并与各种计算主机的操作兼容,诸如经由调整主机接口211和/或外部接口210。各种计算主机包括计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上型计算机、笔记本计算机、上网本、PDA、媒体播放机、媒体记录机、数码相机、蜂窝手机、无绳电话手机、以及电子游戏中的一个或任意组合。
在各种实施方式中,SSD控制器200(或计算主机闪存控制器)的所有或任何部分在单个IC、多芯片IC的单个芯片、多芯片IC的多个芯片、或者多个IC上实施。例如,缓冲器231在与SSD控制器200的其他部件相同的芯片上实施。对于另一实例,缓冲器231在与SSD控制器200的其他部件不同的芯片上实施。
在各种实施方式中,SSD控制器200的部件全部或部分地实施图1的各种硬件块(或由硬件块执行的功能)。例如,ECC261实施由图1的错误统计收集/跟踪、通用编码器、通用解码器、和/或码库硬件块执行的一个或多个功能。对于另一实例,装置接口逻辑291实施由图1的控制/接口硬件块执行的一个或多个功能,且非易失性存储器299实施图1的闪存单元。
图2B示出了包括图2A的SSD的系统的另一实施方式的所选细节。SSD201包括SSD控制器200,该控制器200经由装置接口290与非易失性存储器299耦接。SSD经由外部接口210与主机202耦接。在某些实施方式中,SSD201(或其变形)与SAS驱动器或SATA驱动器相对应,SAS驱动器或SATA驱动器与用作主机202的启动器耦接。
图2C示出了包括图2A的SSD的系统的另一实施方式的所选细节。如图2B中所示,SSD201包括SSD控制器200,该控制器200经由装置接口290与非易失性存储器299耦接。SSD经由外部接口210与主机202耦接,该外部接口210反过来经由中间接口204与中间控制器203耦接,并随后与主机202耦接。在各种实施方式中,SSD控制器200经由一个或多个中间级的其他控制器(诸如RAID控制器)与主机耦接。在某些实施方式中,SSD201(或其变形)与SAS驱动器或SATA驱动器相对应,且中间控制器203与扩展器相对应,该扩展器反过来与启动器耦接,或者可选地,中间控制器203与经由扩展器与启动器间接耦接的桥接器相对应。
在各种实施方式中,SSD控制器和/或计算主机闪存控制器与一个或多个非易失性存储器结合,被实施为非易失性存储元件,诸如USB存储元件、CF存储元件、MMC存储元件、SD存储元件、记忆棒存储元件、以及xD图卡存储元件。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能在主机内被实施,该控制器与该主机耦接(例如,图2C的主机202)。在各种实施方式中,经由硬件(例如,逻辑电路)、软件(例如,驱动器程序)或其任意组合实施SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能。例如,部分经由主机上的软件且部分经由SSD控制器上的硬件实施ECC单元(诸如与图2A的ECC261相似)的功能或与该单元相关联的功能。对于另一实例,部分经由主机上的软件且部分经由计算主机闪存控制器上的硬件来实施再循环器单元(诸如与图2A的再循环器251相似)的功能或与该单元相关联的功能。
实例性实施技术
在一些实施方式中,通过与由计算机系统的处理兼容的规范来指定由实施用于基于闪存的数据存储的自适应ECC技术的系统执行的所有或部分操作的各种组合,例如,图1的硬件块、计算主机闪存控制器、和/或SSD控制器(诸如图2A的SSD控制器200)、以及处理器、微处理器、片上系统、专用集成电路、硬件加速器或提供所有或部分上述操作的其他电路中的一部分。该规范根据各种描述,诸如硬件描述语言、电路描述、网表描述、掩膜(mask)描述或布局描述。实例性描述包括:Verilog、VHDL、SPICE、诸如PSpice的SPICE变形、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任何组合,以产生、验证或指定适用于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路可根据各种技术设计和/或制造。所述技术包括可编程技术(诸如字段或掩模可编程门阵列集成电路)、半定制技术(诸如全部或部分基于单元的集成电路)和全定制技术(诸如实质上特定的集成电路)、它们的任何组合、或与集成电路的设计和/或制造兼容的任何其他技术。
在一些实施方式中,如由具有存储在其中的一组指令的计算机可读介质描述的操作的所有或部分的各种组合可通过以下来执行:执行和/或解释一个或多个程序指令、解释和/或编译一个或多个源和/或脚本语言语句、或执行通过编译、转换和/或解释在编程和/或脚本语言语句中表达的信息而产生的二进制指令。语句可与任何标准的编程或脚本语言(诸如C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。程序指令、语言语句或二进制指令中的一个或多个可选地被存储在一个或多个计算机可读存储介质元件中。在各种实施方式中,程序指令中的一些、所有或各个部分被实现为功能、例程、子例程、在线例程、程序、宏或其部分中的一个或多个。
结论
在准备文本和附图中,仅为了方便,在描述中已做了某些选择,且除非有相反的指示,否则选择本身不应被解释为传达了有关所描述的实施方式的结构或操作的额外信息。选择的实例包括:用于附图标记指定的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如标注或数字标识符)的特定组织或分配。
词语“包括”或“包含”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不意味着传达物理包含物,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是实例性的,而不是限制性的。
应理解构造、布置和使用的许多变化可能与本描述一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速度和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是实例性的,且不应被解释为限定所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变化。另外,除非特别说明与此相反,否则指定的值范围、使用的最大值和最小值或其他特定的规范(诸如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述的那些实施方式,期望跟踪实施技术的改进和变化,且不应被解释为限定。
可采用本领域公知的功能相当的技术,而不是用于实施各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某种方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形式因素和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议、或通信链路;以及当根据特定应用的独特工程和商业限制实施在本文中描述的概念时预期的其他变化。
已通过超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或特征,且无需改变剩余元素之间的基本合作。因此,应理解许多公开的细节不需要实施所描述的实施方式的各个方面。在剩余元素可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计中的所有这些变化是在由所描述的实施方式传达的教导上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的适用性,且并不限于所描述的实施方式的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (19)
1.一种系统,包括:
用于错误统计收集和跟踪的装置,能实现动态确定对闪存的一部分的访问的原始比特误码率(BER);以及
用于自适应编码的装置,能实现根据多个纠错码中动态选择的一个进行编码,且还能实现至少部分基于所述原始BER来动态确定动态选择的纠错码。
2.根据权利要求1所述的系统,其中,根据所述纠错码中的第一纠错码进行编码使多个纠错比特存储在比在根据所述纠错码中的第二纠错码进行编码时更少的部分内。
3.根据权利要求2所述的系统,其中,在根据第一纠错码进行编码时,被用作用户数据的所述部分的比特数量增大的幅度高达由所述第二纠错码使用的纠错比特的数量减去由所述第一纠错码使用的纠错比特的数量的差值。
4.根据权利要求2所述的系统,其中,在根据第二纠错码进行编码时,被用作用户数据的所述部分的比特数量减小的幅度高达由所述第二纠错码使用的纠错比特的数量减去由所述第一纠错码使用的纠错比特的数量的差值。
5.根据权利要求2所述的系统,其中,所述用于自适应编码的装置还能实现在所述部分的寿命的第一部分期间选择所述第一纠错码,并在所述寿命的第二部分期间选择所述第二纠错码;且所述第二部分在所述第一部分之后。
6.根据权利要求2所述的系统,其中,至少部分经由硬件逻辑电路和/或一个或多个软件例程来实施所述用于错误统计收集和跟踪的装置和所述用于自适应编码的装置中的一个或多个。
7.一种系统,包括:
用于错误统计收集和跟踪的装置,能实现动态确定对闪存的一部分的访问的原始比特误码率(BER);以及
用于自适应编码/解码的装置,包括用于自适应编码的装置和用于自适应解码的装置,所述用于自适应编码的装置能实现根据多个纠错码中的第一选择的纠错码进行编码,所述用于自适应解码的装置能实现根据所述纠错码中的第二选择的纠错码进行解码,且所述用于自适应编码/解码的装置还包括用于控制的装置,所述用于控制的装置能实现至少部分基于从所述用于错误统计收集和跟踪的装置接收的信息来确定所述第一选择的纠错码。
8.根据权利要求7所述的系统,其中,所述用于自适应编码的装置为用于通用编码的装置,所述用于通用编码的装置能实现根据任何所述纠错码进行编码。
9.根据权利要求7所述的系统,其中,所述用于自适应解码的装置为用于通用解码的装置,所述用于通用解码的装置能实现根据任何所述纠错码进行解码。
10.根据权利要求7所述的系统,其中,根据所述第一选择的纠错码进行编码使多个纠错比特存储在比在根据所述第二选择的纠错码进行编码时更少的部分内。
11.根据权利要求10所述的系统,其中,在根据所述第一选择的纠错码进行编码时,被用作用户数据的所述部分的比特数量增大的幅度高达在根据所述第二选择的纠错码进行编码时使用的纠错比特的数量减去在根据所述第一选择的纠错码进行编码时使用的纠错比特的数量的差值。
12.根据权利要求10所述的系统,其中,在根据所述第二选择的纠错码进行编码时,被用作用户数据的所述部分的比特数量减小的幅度高达在根据所述第二选择的纠错码进行编码时使用的纠错比特的数量减去在根据所述第一选择的纠错码进行编码时使用的纠错比特的数量的差值。
13.根据权利要求10所述的系统,其中,所述用于自适应编码的装置还能实现在所述部分的寿命的第一部分期间选择所述第一选择的纠错码,并在所述寿命的第二部分期间选择所述第二选择的纠错码;且所述第二部分在所述第一部分之后。
14.根据权利要求7所述的系统,其中,至少部分经由硬件逻辑电路和/或一个或多个软件例程来实施所述用于错误统计收集和跟踪的装置和所述用于自适应编码/解码的装置中的一个或多个。
15.一种系统,包括:
用于动态码率选择的装置,能实现动态确定与闪存的多个部分中的每一个相关联的相应码率;
用于编码的装置,可根据相应确定的码率来操作;
用于解码的装置,可根据所述相应确定的码率来操作;以及
其中,利用由所述用于编码的装置根据所述相应确定的码率中的特定一个编码的数据写入所述部分中的特定一个,且随后,从该特定部分中读取并由所述用于解码的装置解码所述部分中的特定一个。
16.根据权利要求15所述的系统,其中,所述用于动态码率选择的装置能实现至少部分基于每一个或多个所述部分的一个或多个参数、或者一个或多个所述参数的一个或多个历史来动态确定所述相应码率,所述参数包括:
校正的错误的数量,
检测的错误的数量,
程序/擦除周期的数量,
读取周期的数量,
程序时间,
擦除时间,
读取时间,
温度,以及
阈值电压。
17.根据权利要求15所述的系统,其中,所述动态确定包括确定相对较低的码率,以便在第一部分的寿命内相对较早地与第一个所述部分相关联,且包括确定相对较高的码率,以便在所述寿命内相对较晚地与所述第一部分相关联。
18.根据权利要求17所述的系统,其中,在根据所述相对较低的码率进行编码时,被用作用户数据的所述第一部分的比特数量比在根据所述相对较高的码率进行编码时更大。
19.根据权利要求15所述的系统,其中,至少部分经由硬件逻辑电路和/或一个或多个软件例程来实施所述用于动态码率选择的装置、所述用于编码的装置、以及所述用于解码的装置中的一个或多个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US40717810P | 2010-10-27 | 2010-10-27 | |
US61/407,178 | 2010-10-27 | ||
PCT/US2011/057914 WO2012058328A1 (en) | 2010-10-27 | 2011-10-26 | Adaptive ecc techniques for flash memory based data storage |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103329103A true CN103329103A (zh) | 2013-09-25 |
CN103329103B CN103329103B (zh) | 2017-04-05 |
Family
ID=45994376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180063160.5A Active CN103329103B (zh) | 2010-10-27 | 2011-10-26 | 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (2) | US20140136927A1 (zh) |
EP (1) | EP2633409A4 (zh) |
JP (1) | JP2013542533A (zh) |
KR (1) | KR101606718B1 (zh) |
CN (1) | CN103329103B (zh) |
TW (1) | TWI512452B (zh) |
WO (1) | WO2012058328A1 (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714893A (zh) * | 2013-12-16 | 2015-06-17 | 国际商业机器公司 | 用于缩放垃圾收集的方法和系统 |
CN105005450A (zh) * | 2014-04-25 | 2015-10-28 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置及存储器控制电路单元 |
CN105528178A (zh) * | 2014-10-21 | 2016-04-27 | 华为技术有限公司 | 数据存储方法及固态硬盘 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
CN105929723A (zh) * | 2015-02-26 | 2016-09-07 | 发那科株式会社 | 通过纠错功能进行寿命预测的控制装置 |
CN106155830A (zh) * | 2015-02-12 | 2016-11-23 | 慧荣科技股份有限公司 | 数据储存装置以及错误校正方法 |
CN106297895A (zh) * | 2015-06-29 | 2017-01-04 | 三星电子株式会社 | 纠错电路、半导体存储器装置及其控制方法 |
CN106970853A (zh) * | 2016-01-14 | 2017-07-21 | 钰创科技股份有限公司 | 闪存存取方法与应用此方法的闪存 |
CN107003938A (zh) * | 2014-09-02 | 2017-08-01 | 桑迪士克科技有限责任公司 | 触发用于减小多存储设备存储系统中的存储设备的声明容量的过程 |
CN107003939A (zh) * | 2014-09-02 | 2017-08-01 | 桑迪士克科技有限责任公司 | 用于通过有条件地修整而减小存储设备的声明容量的过程和装置 |
CN107526543A (zh) * | 2016-06-20 | 2017-12-29 | 三星电子株式会社 | 形性存储设备 |
CN107656831A (zh) * | 2017-08-21 | 2018-02-02 | 深圳市致存微电子企业(有限合伙) | 闪存纠错方法以及纠错装置 |
CN108255633A (zh) * | 2016-12-28 | 2018-07-06 | 旺宏电子股份有限公司 | 存储控制方法、存储装置 |
CN108287794A (zh) * | 2018-01-26 | 2018-07-17 | 国科美国研究实验室 | Nand闪存的动态管理方法 |
CN108363639A (zh) * | 2018-02-07 | 2018-08-03 | 武汉忆数存储技术有限公司 | 一种参数可配置的动态bch纠错方法及装置 |
CN108463807A (zh) * | 2015-10-30 | 2018-08-28 | 英特尔公司 | 温度相关的多模式错误校正 |
CN109872764A (zh) * | 2019-01-18 | 2019-06-11 | 南京大学 | 一种多级存储单元闪存的ecc多码率编解码系统及方法 |
CN109961817A (zh) * | 2017-12-26 | 2019-07-02 | 南亚科技股份有限公司 | 动态随机存取存储器及其操作方法 |
CN110310692A (zh) * | 2019-06-28 | 2019-10-08 | 上海华虹集成电路有限责任公司 | 一种增强使用寿命的非易失性存储器擦除控制方法 |
CN111863080A (zh) * | 2020-07-08 | 2020-10-30 | 上海威固信息技术股份有限公司 | 一种基于层间差异的3d闪存读性能优化方法 |
CN112840324A (zh) * | 2018-09-07 | 2021-05-25 | 铠侠股份有限公司 | 存储器系统中的汇集式前线ecc解码器 |
CN113051100A (zh) * | 2020-06-01 | 2021-06-29 | 长江存储科技有限责任公司 | 一种闪存存储器及其错误比特计数检测系统 |
CN114637712A (zh) * | 2022-03-18 | 2022-06-17 | 无锡众星微系统技术有限公司 | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 |
CN113051100B (zh) * | 2020-06-01 | 2024-05-17 | 长江存储科技有限责任公司 | 一种闪存存储器及其错误比特计数检测系统 |
Families Citing this family (171)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US8241425B2 (en) * | 2009-01-23 | 2012-08-14 | Axcelis Technologies, Inc. | Non-condensing thermos chuck |
US8954821B2 (en) * | 2009-12-29 | 2015-02-10 | Microntechnology, Inc. | Memory device having address and command selectable capabilities |
EP2545554A4 (en) | 2010-03-12 | 2015-03-11 | Lsi Corp | LDPC CLEARANCE DECODING FOR FLASH MEMORY |
US9105305B2 (en) | 2010-12-01 | 2015-08-11 | Seagate Technology Llc | Dynamic higher-level redundancy mode management with independent silicon elements |
JP5720210B2 (ja) | 2010-12-02 | 2015-05-20 | 富士通株式会社 | アクセス制御装置、誤り訂正制御方法およびストレージ装置 |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
EP2666091A2 (en) | 2011-01-18 | 2013-11-27 | LSI Corporation | Higher-level redundancy information computation |
US9130596B2 (en) * | 2011-06-29 | 2015-09-08 | Seagate Technology Llc | Multiuse data channel |
US9189329B1 (en) * | 2011-10-13 | 2015-11-17 | Marvell International Ltd. | Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level |
US8793543B2 (en) | 2011-11-07 | 2014-07-29 | Sandisk Enterprise Ip Llc | Adaptive read comparison signal generation for memory systems |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9183085B1 (en) | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
US9176812B1 (en) | 2012-05-22 | 2015-11-03 | Pmc-Sierra, Inc. | Systems and methods for storing data in page stripes of a flash drive |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
JP2014035673A (ja) * | 2012-08-09 | 2014-02-24 | Renesas Electronics Corp | 半導体記憶装置及び方法 |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
EP2915045B1 (en) | 2012-11-02 | 2019-01-02 | Hewlett-Packard Enterprise Development LP | Selective error correcting code and memory access granularity switching |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9257203B2 (en) | 2012-12-06 | 2016-02-09 | Micron Technology, Inc. | Setting a default read signal based on error correction |
US9214963B1 (en) | 2012-12-21 | 2015-12-15 | Western Digital Technologies, Inc. | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9208018B1 (en) * | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
KR102102171B1 (ko) * | 2013-04-05 | 2020-05-29 | 삼성전자 주식회사 | 멀티 레벨 셀 메모리 시스템 |
CN103269230B (zh) * | 2013-05-28 | 2017-02-22 | 中国科学院自动化研究所 | 一种自适应调整纠错码的容错系统及方法 |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9152488B2 (en) * | 2013-06-25 | 2015-10-06 | Sandisk Technologies Inc. | Storage module and low-complexity methods for assessing the health of a flash memory device |
CN105340017A (zh) * | 2013-07-09 | 2016-02-17 | 惠普发展公司,有限责任合伙企业 | 对包括非兼容性存储器技术或与其接合的存储器模块的写入流控制 |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US20150058697A1 (en) * | 2013-08-22 | 2015-02-26 | Kabushiki Kaisha Toshiba | Storage device, controller and memory controlling method |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
WO2015029230A1 (ja) * | 2013-08-30 | 2015-03-05 | 株式会社日立製作所 | 記憶装置及びデータ制御方法 |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9280419B2 (en) | 2013-12-16 | 2016-03-08 | International Business Machines Corporation | Dynamic adjustment of data protection schemes in flash storage systems based on temperature, power off duration and flash age |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9417960B2 (en) * | 2013-12-20 | 2016-08-16 | Seagate Technology Llc | Preventing programming errors from occurring when programming flash memory cells |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
JP2015138498A (ja) * | 2014-01-24 | 2015-07-30 | 三菱電機株式会社 | フラッシュメモリの誤り訂正符号化装置および方法 |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
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 |
TWI545581B (zh) * | 2014-04-15 | 2016-08-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 |
US9244764B2 (en) * | 2014-05-08 | 2016-01-26 | Sandisk Technologies Inc. | Error correcting code techniques for a memory having a three-dimensional memory configuration |
US9257186B2 (en) | 2014-05-08 | 2016-02-09 | Sandisk Technologies Inc. | Memory access techniques for a memory having a three-dimensional memory configuration |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10116336B2 (en) | 2014-06-13 | 2018-10-30 | Sandisk Technologies Llc | Error correcting code adjustment for a data storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
TWI550615B (zh) * | 2014-08-28 | 2016-09-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體儲存裝置及記憶體控制電路單元 |
GB2529670A (en) * | 2014-08-28 | 2016-03-02 | Ibm | Storage system |
GB2529669B8 (en) | 2014-08-28 | 2017-03-15 | Ibm | Storage system |
US9652153B2 (en) | 2014-09-02 | 2017-05-16 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses |
US9582203B2 (en) * | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
US9563362B2 (en) | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Host system and process to reduce declared capacity of a storage device by trimming |
US9552166B2 (en) | 2014-09-02 | 2017-01-24 | Sandisk Technologies Llc. | Process and apparatus to reduce declared capacity of a storage device by deleting data |
US9582220B2 (en) * | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system |
US9524105B2 (en) | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by altering an encoding format |
US9582212B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device |
US9563370B2 (en) | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device |
US9519427B2 (en) | 2014-09-02 | 2016-12-13 | Sandisk Technologies Llc | Triggering, at a host system, a process to reduce declared capacity of a storage device |
US9665311B2 (en) | 2014-09-02 | 2017-05-30 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable |
US9582202B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by moving data |
US9524112B2 (en) | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by trimming |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
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 |
US10365859B2 (en) * | 2014-10-21 | 2019-07-30 | International Business Machines Corporation | Storage array management employing a merged background management process |
JP6486647B2 (ja) * | 2014-10-28 | 2019-03-20 | 株式会社メガチップス | エラー訂正装置 |
TWI520140B (zh) * | 2014-11-03 | 2016-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
US10067823B2 (en) * | 2014-12-04 | 2018-09-04 | Western Digital Technologies, Inc. | Systems and methods for adaptive error corrective code mechanisms |
US10691531B2 (en) * | 2014-12-04 | 2020-06-23 | Western Digital Technologies, Inc. | Systems and methods for multi-zone data tiering for endurance extension in solid state drives |
US10430112B2 (en) * | 2014-12-22 | 2019-10-01 | Sandisk Technologies Llc | Memory block cycling based on memory wear or data retention |
US10339048B2 (en) | 2014-12-23 | 2019-07-02 | International Business Machines Corporation | Endurance enhancement scheme using memory re-evaluation |
US9990279B2 (en) | 2014-12-23 | 2018-06-05 | International Business Machines Corporation | Page-level health equalization |
US9595979B2 (en) * | 2015-01-20 | 2017-03-14 | International Business Machines Corporation | Multiple erasure codes for distributed storage |
US9768808B2 (en) | 2015-04-08 | 2017-09-19 | Sandisk Technologies Llc | Method for modifying device-specific variable error correction settings |
US9792053B2 (en) | 2015-04-30 | 2017-10-17 | Toshiba Memory Corporation | Controller for nonvolatile semiconductor memory |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US10439650B2 (en) * | 2015-05-27 | 2019-10-08 | Quantum Corporation | Cloud-based solid state device (SSD) with dynamically variable error correcting code (ECC) system |
US9727416B2 (en) * | 2015-07-01 | 2017-08-08 | Xilinx, Inc. | Variable code rate solid-state drive |
JP6657634B2 (ja) | 2015-07-24 | 2020-03-04 | ソニー株式会社 | 符号化装置、メモリシステム、通信システムおよび符号化方法 |
US10133625B2 (en) | 2015-08-11 | 2018-11-20 | Western Digital Technologies, Inc. | Storing parity data separate from protected data |
FR3040523B1 (fr) | 2015-08-28 | 2018-07-13 | Continental Automotive France | Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur |
US9830084B2 (en) | 2015-12-03 | 2017-11-28 | Sandisk Technologies Llc | Writing logical groups of data to physical locations in memory using headers |
US9946483B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US10013179B2 (en) | 2015-12-03 | 2018-07-03 | Sandisk Technologies Llc | Reading logical groups of data from physical locations in memory using headers |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
JP6605359B2 (ja) * | 2016-03-02 | 2019-11-13 | ルネサスエレクトロニクス株式会社 | 半導体装置及びメモリアクセス制御方法 |
US9761325B1 (en) * | 2016-03-14 | 2017-09-12 | Toshiba Memory Corporation | Memory system |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
JP6725375B2 (ja) | 2016-09-14 | 2020-07-15 | キオクシア株式会社 | メモリシステムおよび方法 |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
KR20180086816A (ko) | 2017-01-23 | 2018-08-01 | 에스케이하이닉스 주식회사 | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 |
WO2018185800A1 (ja) | 2017-04-03 | 2018-10-11 | 株式会社日立製作所 | ストレージ装置 |
US10346232B2 (en) | 2017-08-16 | 2019-07-09 | Western Digital Technologies, Inc. | Non-volatile storage with failure prediction |
US10949113B2 (en) * | 2018-01-10 | 2021-03-16 | SK Hynix Inc. | Retention aware block mapping in flash-based solid state drives |
JP6482690B1 (ja) * | 2018-01-11 | 2019-03-13 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
US10644727B2 (en) | 2018-01-11 | 2020-05-05 | Western Digital Technologies, Inc. | Code rate switching mechanism for flash memory |
US10656847B2 (en) * | 2018-05-10 | 2020-05-19 | International Business Machines Corporation | Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation |
KR20200034420A (ko) * | 2018-09-21 | 2020-03-31 | 삼성전자주식회사 | 복수의 에러 정정 기능을 갖는 메모리 장치 및 메모리 시스템과 그 동작 방법 |
US11163886B2 (en) | 2018-09-28 | 2021-11-02 | Dell Products L.P. | Information handling system firmware bit error detection and correction |
US10783024B2 (en) | 2018-10-12 | 2020-09-22 | International Business Machines Corporation | Reducing block calibration overhead using read error triage |
TWI673613B (zh) * | 2018-10-17 | 2019-10-01 | 財團法人工業技術研究院 | 伺服器及其資源調控方法 |
TWI668699B (zh) * | 2018-10-25 | 2019-08-11 | 群聯電子股份有限公司 | 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置 |
KR102076624B1 (ko) | 2018-12-06 | 2020-02-12 | 한국외국어대학교 연구산학협력단 | 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법 |
US11137910B2 (en) * | 2019-03-04 | 2021-10-05 | Advantest Corporation | Fast address to sector number/offset translation to support odd sector size testing |
KR102601152B1 (ko) * | 2019-05-10 | 2023-11-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11088711B2 (en) | 2019-07-08 | 2021-08-10 | Winbond Electronics Corp. | Memory apparatus and data accessing method thereof |
KR20210025249A (ko) * | 2019-08-27 | 2021-03-09 | 삼성전자주식회사 | 메모리 시스템 및 그 동작 방법 |
US10963336B2 (en) | 2019-08-29 | 2021-03-30 | Micron Technology, Inc. | Semiconductor device with user defined operations and associated methods and systems |
TWI723515B (zh) * | 2019-08-29 | 2021-04-01 | 華邦電子股份有限公司 | 記憶體裝置及其資料存取方法 |
US11042436B2 (en) | 2019-08-29 | 2021-06-22 | Micron Technology, Inc. | Semiconductor device with modified access and associated methods and systems |
US11200118B2 (en) * | 2019-08-29 | 2021-12-14 | Micron Technology, Inc. | Semiconductor device with modified command and associated methods and systems |
KR20210085284A (ko) | 2019-12-30 | 2021-07-08 | 삼성전자주식회사 | Pim 메모리 디바이스, pim 메모리 디바이스를 포함하는 컴퓨팅 시스템 및 pim 메모리 디바이스의 동작 방법 |
JP2021141369A (ja) * | 2020-03-02 | 2021-09-16 | キオクシア株式会社 | メモリシステム |
KR20210147686A (ko) | 2020-05-29 | 2021-12-07 | 에스케이하이닉스 주식회사 | 오류 정정 회로 및 오류 정정 인코딩 방법 |
CN113094296B (zh) * | 2021-04-29 | 2023-10-10 | 深圳忆联信息系统有限公司 | Ssd读加速的实现方法、装置、计算机设备及存储介质 |
WO2023047149A1 (en) * | 2021-09-23 | 2023-03-30 | Micron Technology, Inc. | Improved ecc configuration in memories |
US11704027B2 (en) * | 2021-11-12 | 2023-07-18 | Western Digital Technologies, Inc. | Optimizing recovery of recurrent blocks using bloom filter |
US11853607B2 (en) | 2021-12-22 | 2023-12-26 | Western Digital Technologies, Inc. | Optimizing flash memory utilization for NVMe KV pair storage |
US11817883B2 (en) | 2021-12-27 | 2023-11-14 | Western Digital Technologies, Inc. | Variable length ECC code according to value length in NVMe key value pair devices |
US11733876B2 (en) | 2022-01-05 | 2023-08-22 | Western Digital Technologies, Inc. | Content aware decoding in KV devices |
US20230393932A1 (en) * | 2022-06-02 | 2023-12-07 | Micron Technology, Inc. | Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred |
CN117762820A (zh) * | 2022-09-19 | 2024-03-26 | 慧荣科技股份有限公司 | 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037299A1 (en) * | 2001-08-16 | 2003-02-20 | Smith Kenneth Kay | Dynamic variable-length error correction code |
CN101000569A (zh) * | 2006-12-29 | 2007-07-18 | 福昭科技(深圳)有限公司 | 一种对多重扇区进行错误修正编码的方法 |
WO2008045893A1 (en) * | 2006-10-10 | 2008-04-17 | Marvell World Trade Ltd. | Adaptive systems and methods for storing and retrieving data to and from memory cells |
CN101256521A (zh) * | 2007-03-01 | 2008-09-03 | 创惟科技股份有限公司 | 提高闪存资料存取可靠性的方法 |
WO2008109586A1 (en) * | 2007-03-08 | 2008-09-12 | Intel Corporation | A method, apparatus, and system for dynamic ecc code rate adjustment |
WO2009070182A1 (en) * | 2007-11-30 | 2009-06-04 | Marvell World Trade Ltd. | Error correcting code predication system and method |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1235189A (en) * | 1985-01-14 | 1988-04-12 | Haruhiko Akiyama | Error correction encoding system |
US5644312A (en) * | 1994-11-30 | 1997-07-01 | Analog Devices, Inc. | Rom encoder circuit for flash ADC'S with transistor sizing to prevent sparkle errors |
US5699365A (en) * | 1996-03-27 | 1997-12-16 | Motorola, Inc. | Apparatus and method for adaptive forward error correction in data communications |
JP2000510989A (ja) * | 1996-05-15 | 2000-08-22 | シーゲート テクノロジー,インコーポレイテッド | Eccおよび読出しチヤンネル品質指示器を用いた読出しエラー回復 |
US6931009B1 (en) * | 1997-07-15 | 2005-08-16 | Viasat, Inc. | Frame format and frame assembling/disassembling method for the frame format |
US6477669B1 (en) * | 1997-07-15 | 2002-11-05 | Comsat Corporation | Method and apparatus for adaptive control of forward error correction codes |
US6182264B1 (en) * | 1998-05-22 | 2001-01-30 | Vlsi Technology, Inc. | Smart dynamic selection of error correction methods for DECT based data services |
US6957379B1 (en) * | 1999-01-04 | 2005-10-18 | Maxtor Corporation | Method and apparatus for selecting storage capacity of data storage media |
JP3699863B2 (ja) * | 1999-07-12 | 2005-09-28 | 株式会社日立コミュニケーションテクノロジー | エラー訂正符号装置、エラー訂正符号復号装置および伝送装置 |
CA2324574A1 (en) * | 2000-10-26 | 2002-04-26 | Bin Li | An optimal bit allocation algorithm for reed-solomon coded data for adsl |
US7290184B2 (en) * | 2001-08-23 | 2007-10-30 | Seagate Technology Llc | Emulation system for evaluating digital data channel configurations |
US8412879B2 (en) * | 2002-10-28 | 2013-04-02 | Sandisk Technologies Inc. | Hybrid implementation for error correction codes within a non-volatile memory system |
JP4459960B2 (ja) * | 2003-09-15 | 2010-04-28 | インテル・コーポレーション | 高スループットの空間−周波数ブロック・コードを使用するマルチアンテナ・システムおよび方法 |
US7210077B2 (en) * | 2004-01-29 | 2007-04-24 | Hewlett-Packard Development Company, L.P. | System and method for configuring a solid-state storage device with error correction coding |
JP2008508632A (ja) * | 2004-08-02 | 2008-03-21 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ記憶及び再生装置 |
KR100732628B1 (ko) * | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치 |
US7526715B2 (en) * | 2005-10-17 | 2009-04-28 | Ramot At Tel Aviv University Ltd. | Probabilistic error correction in multi-bit-per-cell flash memory |
US8055979B2 (en) * | 2006-01-20 | 2011-11-08 | Marvell World Trade Ltd. | Flash memory with coding and signal processing |
US7809994B2 (en) * | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
JP2007316779A (ja) * | 2006-05-23 | 2007-12-06 | Sharp Corp | 不揮発性メモリシステム |
US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US9116823B2 (en) * | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US7984360B2 (en) * | 2006-12-31 | 2011-07-19 | Ramot At Tel Aviv University Ltd. | Avoiding errors in a flash memory by using substitution transformations |
JP5453268B2 (ja) * | 2007-09-14 | 2014-03-26 | エージェンシー フォー サイエンス, テクノロジー アンド リサーチ | ビット列の符号化方式および符号化回路 |
JP4538034B2 (ja) * | 2007-09-26 | 2010-09-08 | 株式会社東芝 | 半導体記憶装置、及びその制御方法 |
US8335977B2 (en) * | 2007-12-05 | 2012-12-18 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells |
WO2009078006A2 (en) * | 2007-12-18 | 2009-06-25 | Densbits Technologies Ltd. | Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith |
KR101398212B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
JP2010092574A (ja) * | 2008-10-12 | 2010-04-22 | Kyoto Software Research Inc | フラッシュファイルシステムの誤り訂正機能 |
US8442398B2 (en) * | 2008-10-21 | 2013-05-14 | Broadcom Corporation | Performance monitoring in passive optical networks |
US8407400B2 (en) * | 2008-11-12 | 2013-03-26 | Micron Technology, Inc. | Dynamic SLC/MLC blocks allocations for non-volatile memory |
KR101059673B1 (ko) * | 2008-12-26 | 2011-08-25 | 서울대학교산학협력단 | 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법 |
US8370702B2 (en) * | 2009-06-10 | 2013-02-05 | Micron Technology, Inc. | Error correcting codes for increased storage capacity in multilevel memory devices |
US8495467B1 (en) * | 2009-06-30 | 2013-07-23 | Micron Technology, Inc. | Switchable on-die memory error correcting engine |
CN102098130A (zh) * | 2009-12-15 | 2011-06-15 | 意法半导体研发(深圳)有限公司 | 具有高速度和高可靠性的高效动态传输 |
US8954821B2 (en) * | 2009-12-29 | 2015-02-10 | Microntechnology, Inc. | Memory device having address and command selectable capabilities |
US8327226B2 (en) * | 2010-02-03 | 2012-12-04 | Seagate Technology Llc | Adjustable error correction code length in an electrical storage device |
US8533550B2 (en) * | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
US8656256B2 (en) * | 2010-07-07 | 2014-02-18 | Stec, Inc. | Apparatus and method for multi-mode operation of a flash memory device |
US8832507B2 (en) * | 2010-08-23 | 2014-09-09 | Apple Inc. | Systems and methods for generating dynamic super blocks |
US8560922B2 (en) * | 2011-03-04 | 2013-10-15 | International Business Machines Corporation | Bad block management for flash memory |
KR101991911B1 (ko) * | 2012-05-22 | 2019-06-24 | 삼성전자주식회사 | 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템 |
US8898549B2 (en) * | 2013-02-12 | 2014-11-25 | Seagate Technology Llc | Statistical adaptive error correction for a flash memory |
US9026867B1 (en) * | 2013-03-15 | 2015-05-05 | Pmc-Sierra, Inc. | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory |
-
2011
- 2011-10-26 CN CN201180063160.5A patent/CN103329103B/zh active Active
- 2011-10-26 KR KR1020137013372A patent/KR101606718B1/ko active IP Right Grant
- 2011-10-26 US US13/879,383 patent/US20140136927A1/en not_active Abandoned
- 2011-10-26 WO PCT/US2011/057914 patent/WO2012058328A1/en active Application Filing
- 2011-10-26 JP JP2013536786A patent/JP2013542533A/ja active Pending
- 2011-10-26 EP EP11837032.9A patent/EP2633409A4/en not_active Withdrawn
- 2011-10-27 TW TW100139204A patent/TWI512452B/zh active
-
2015
- 2015-11-18 US US14/945,276 patent/US20160188405A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037299A1 (en) * | 2001-08-16 | 2003-02-20 | Smith Kenneth Kay | Dynamic variable-length error correction code |
WO2008045893A1 (en) * | 2006-10-10 | 2008-04-17 | Marvell World Trade Ltd. | Adaptive systems and methods for storing and retrieving data to and from memory cells |
CN101000569A (zh) * | 2006-12-29 | 2007-07-18 | 福昭科技(深圳)有限公司 | 一种对多重扇区进行错误修正编码的方法 |
CN101256521A (zh) * | 2007-03-01 | 2008-09-03 | 创惟科技股份有限公司 | 提高闪存资料存取可靠性的方法 |
WO2008109586A1 (en) * | 2007-03-08 | 2008-09-12 | Intel Corporation | A method, apparatus, and system for dynamic ecc code rate adjustment |
WO2009070182A1 (en) * | 2007-11-30 | 2009-06-04 | Marvell World Trade Ltd. | Error correcting code predication system and method |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714893A (zh) * | 2013-12-16 | 2015-06-17 | 国际商业机器公司 | 用于缩放垃圾收集的方法和系统 |
CN104714893B (zh) * | 2013-12-16 | 2018-05-22 | 国际商业机器公司 | 用于缩放垃圾收集的方法和系统 |
CN105005450A (zh) * | 2014-04-25 | 2015-10-28 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置及存储器控制电路单元 |
CN105005450B (zh) * | 2014-04-25 | 2018-11-02 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置及存储器控制电路单元 |
CN107003938A (zh) * | 2014-09-02 | 2017-08-01 | 桑迪士克科技有限责任公司 | 触发用于减小多存储设备存储系统中的存储设备的声明容量的过程 |
CN107003939B (zh) * | 2014-09-02 | 2020-04-28 | 桑迪士克科技有限责任公司 | 用于通过有条件地修整而减小存储设备的声明容量的过程和装置 |
CN107003939A (zh) * | 2014-09-02 | 2017-08-01 | 桑迪士克科技有限责任公司 | 用于通过有条件地修整而减小存储设备的声明容量的过程和装置 |
CN107003938B (zh) * | 2014-09-02 | 2020-09-29 | 桑迪士克科技有限责任公司 | 触发用于减小多存储设备存储系统中的存储设备的声明容量的过程 |
CN105528178B (zh) * | 2014-10-21 | 2018-09-21 | 华为技术有限公司 | 数据存储方法及固态硬盘 |
CN105528178A (zh) * | 2014-10-21 | 2016-04-27 | 华为技术有限公司 | 数据存储方法及固态硬盘 |
CN106415502A (zh) * | 2014-12-12 | 2017-02-15 | 华为技术有限公司 | 数据存储的方法和装置 |
CN106415502B (zh) * | 2014-12-12 | 2019-07-12 | 华为技术有限公司 | 数据存储的方法和装置 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
CN106155830A (zh) * | 2015-02-12 | 2016-11-23 | 慧荣科技股份有限公司 | 数据储存装置以及错误校正方法 |
CN106155830B (zh) * | 2015-02-12 | 2019-07-23 | 慧荣科技股份有限公司 | 数据储存装置以及错误校正方法 |
CN105929723B (zh) * | 2015-02-26 | 2019-05-07 | 发那科株式会社 | 通过纠错功能进行寿命预测的控制装置 |
CN105929723A (zh) * | 2015-02-26 | 2016-09-07 | 发那科株式会社 | 通过纠错功能进行寿命预测的控制装置 |
CN106297895A (zh) * | 2015-06-29 | 2017-01-04 | 三星电子株式会社 | 纠错电路、半导体存储器装置及其控制方法 |
US10855412B2 (en) | 2015-06-29 | 2020-12-01 | Samsung Electronics Co., Ltd. | Characterization of in-chip error correction circuits and related semiconductor memory devices/memory systems |
CN106297895B (zh) * | 2015-06-29 | 2021-06-22 | 三星电子株式会社 | 纠错电路、半导体存储器装置及其控制方法 |
US11239960B2 (en) | 2015-06-29 | 2022-02-01 | Samsung Electronics Co., Ltd. | Characterization of in-chip error correction circuits and related semiconductor memory devices/memory systems |
CN108463807A (zh) * | 2015-10-30 | 2018-08-28 | 英特尔公司 | 温度相关的多模式错误校正 |
CN108463807B (zh) * | 2015-10-30 | 2021-11-23 | 英特尔公司 | 温度相关的多模式错误校正 |
CN106970853A (zh) * | 2016-01-14 | 2017-07-21 | 钰创科技股份有限公司 | 闪存存取方法与应用此方法的闪存 |
CN107526543B (zh) * | 2016-06-20 | 2022-02-01 | 三星电子株式会社 | 形性存储设备 |
CN107526543A (zh) * | 2016-06-20 | 2017-12-29 | 三星电子株式会社 | 形性存储设备 |
CN108255633A (zh) * | 2016-12-28 | 2018-07-06 | 旺宏电子股份有限公司 | 存储控制方法、存储装置 |
CN108255633B (zh) * | 2016-12-28 | 2021-07-30 | 旺宏电子股份有限公司 | 存储控制方法、存储装置 |
CN107656831A (zh) * | 2017-08-21 | 2018-02-02 | 深圳市致存微电子企业(有限合伙) | 闪存纠错方法以及纠错装置 |
CN109961817A (zh) * | 2017-12-26 | 2019-07-02 | 南亚科技股份有限公司 | 动态随机存取存储器及其操作方法 |
CN108287794A (zh) * | 2018-01-26 | 2018-07-17 | 国科美国研究实验室 | Nand闪存的动态管理方法 |
CN108363639A (zh) * | 2018-02-07 | 2018-08-03 | 武汉忆数存储技术有限公司 | 一种参数可配置的动态bch纠错方法及装置 |
CN108363639B (zh) * | 2018-02-07 | 2022-04-05 | 置富科技(深圳)股份有限公司 | 一种参数可配置的动态bch纠错方法及装置 |
CN112840324A (zh) * | 2018-09-07 | 2021-05-25 | 铠侠股份有限公司 | 存储器系统中的汇集式前线ecc解码器 |
CN112840324B (zh) * | 2018-09-07 | 2024-03-15 | 铠侠股份有限公司 | 存储器系统中的汇集式前线ecc解码器 |
CN109872764A (zh) * | 2019-01-18 | 2019-06-11 | 南京大学 | 一种多级存储单元闪存的ecc多码率编解码系统及方法 |
CN110310692A (zh) * | 2019-06-28 | 2019-10-08 | 上海华虹集成电路有限责任公司 | 一种增强使用寿命的非易失性存储器擦除控制方法 |
CN113051100A (zh) * | 2020-06-01 | 2021-06-29 | 长江存储科技有限责任公司 | 一种闪存存储器及其错误比特计数检测系统 |
CN113051100B (zh) * | 2020-06-01 | 2024-05-17 | 长江存储科技有限责任公司 | 一种闪存存储器及其错误比特计数检测系统 |
CN111863080A (zh) * | 2020-07-08 | 2020-10-30 | 上海威固信息技术股份有限公司 | 一种基于层间差异的3d闪存读性能优化方法 |
CN114637712A (zh) * | 2022-03-18 | 2022-06-17 | 无锡众星微系统技术有限公司 | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 |
CN114637712B (zh) * | 2022-03-18 | 2023-03-10 | 无锡众星微系统技术有限公司 | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20130096753A (ko) | 2013-08-30 |
EP2633409A1 (en) | 2013-09-04 |
CN103329103B (zh) | 2017-04-05 |
US20160188405A1 (en) | 2016-06-30 |
US20140136927A1 (en) | 2014-05-15 |
TWI512452B (zh) | 2015-12-11 |
JP2013542533A (ja) | 2013-11-21 |
KR101606718B1 (ko) | 2016-03-28 |
TW201234170A (en) | 2012-08-16 |
EP2633409A4 (en) | 2014-07-23 |
WO2012058328A1 (en) | 2012-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103329103A (zh) | 用于基于闪存的数据存储的自适应ecc技术 | |
US10734087B2 (en) | Retention-drift-history-based non-volatile memory read threshold optimization | |
US9971547B2 (en) | Storage system with application to NVM address, span, and length | |
KR101466555B1 (ko) | 플래시 메모리들을 위한 ldpc 소거 디코딩 | |
CN103678146B (zh) | 为了非易失性存储器中的耗损均衡测量单元损伤 | |
CN103348330B (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
CN103415844B (zh) | 用于高级冗余信息计算的系统和方法 | |
CN103942010A (zh) | 用于写入非易失性存储器的管理及区域选择 | |
CN106681856A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN103295634B (zh) | 读取快闪存储器中所储存的数据的方法、存储器控制器与系统 | |
CN103295631B (zh) | 读取快闪存储器中所储存的数据的方法、存储器控制器与系统 | |
US9396104B1 (en) | Accessing compressed data of varying-sized quanta in non-volatile memory | |
CN111221676A (zh) | 用于nand装置混合奇偶校验管理的设备和方法 | |
CN110277129A (zh) | 用于包括qlc单元的存储器装置的编码方法和系统 | |
US20220129154A1 (en) | Managing bin placement for block families of a memory device using trigger metric scores | |
CN102985975B (zh) | 闪存的低密度奇偶校验擦除译码 | |
CN118051182A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN118034603A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN113434331A (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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160223 Address after: California, USA Applicant after: Seagate Technology LLC Address before: California, USA Applicant before: LSI Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |