CN103827833B - 存储数据的系统和方法 - Google Patents
存储数据的系统和方法 Download PDFInfo
- Publication number
- CN103827833B CN103827833B CN201280045360.2A CN201280045360A CN103827833B CN 103827833 B CN103827833 B CN 103827833B CN 201280045360 A CN201280045360 A CN 201280045360A CN 103827833 B CN103827833 B CN 103827833B
- Authority
- CN
- China
- Prior art keywords
- data
- page
- coding
- memory
- physical page
- 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
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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/1072—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 multilevel memories
-
- 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
- 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了存储数据的系统和方法。
Description
技术领域
本公开一般涉及在存储器处存储数据。
背景技术
诸如通用串行总线(USB)闪存器件或者可移除存储卡的非易失性存储器器件已经考虑到数据和软件应用的增长的便携性。闪存器件可以通过在每个闪存单元中存储多位来提高成本效率。例如,多级单元(MLC)闪存器件通过每单元存储3位或更多而提供增加的存储密度。
在单个闪存单元中存储多位信息通常包括将位的序列映射到闪存单元的状态。例如,位“110”的第一序列可以对应于闪存单元的第一状态,并且位“010”的第二序列可以对应于闪存单元的第二状态。在确定位的序列将被存储到特定闪存单元中之后,可以将该闪存单元编程到与该位的序列对应的状态。
位的序列到由闪存器件使用的状态的特定映射影响存储在闪存单元处的位的相对可靠性。为了例示,如果闪存单元被编程到第一状态(对应于模拟阈值电压V并且与数据“110”相关联)但是被不正确地读取位第二状态(对应于模拟阈值电压V+ΔV并且与数据“010”相关联),则在最高有效位发生位错误(即“1”变为“0”),但是在中间位或者最低有效位处没有发生错误。换句话说,存在最高有效位(MSB)在两个状态之间的转变,但是其他位不存在转变。可以基于多个输出单元中的公共位位置存储数据的逻辑页。相邻状态之间的读取错误(即模拟阈值是V的状态被错误地读取为模拟阈值是V+ΔV的状态)可能具有概率p。不相邻的状态(即模拟阈值电压差大于ΔV的状态)之间的读取错误可能具有与p相比非常小的并且可以近似为0的概率。逻辑页中的数据错误的数量因此可以近似为与逻辑页中的对应位在两个状态之间改变的相邻状态对的数量成比例。只要存在在一个状态和相邻状态之间的要号(sign)的转变,这样的对就出现。因此,具有许多这样的对(即具有从1到0以及从0到1的许多转变)的逻辑页将具有比其转变的数量更少的页具有更多的错误。一些逻辑页可能比其他逻辑页更可靠。逻辑页的不相等的可靠性可能影响某些闪存访问方法和性能。
发明内容
可以根据其中存储码字的页的可靠性来提供在码字中提供的保护的量。对于具有较低可靠性的页,在码字中提供的另外的冗余信息可能导致码字长度超过单个页。码字可以可靠地存储在多个物理页中而不影响主机设备可能经历的编程延时。
例如,编码的数据页可以被分割为两个物理页,其中第二个物理页仅包括奇偶校验位。在完成写入第一物理页之后可以向主机提供数据页的安全存储的知识,尽管还未写入第二物理页。可以提供该知识因为在功率损耗的情况下可以不适用第二物理页的奇偶校验位而重构编码的数据页的数据部分。
可以在将数据存储到MLC闪存之前关于该数据的指定部分进行位操纵,以致使该数据的每个逻辑页具有基本相等的可靠性。要存储到MLC闪存的数据可以被写到存储器裸片处的锁存器,并且可以使用锁存器中的位到目的地MLC存储元件的状态的默认映射来存储该数据。在应用默认映射之前,可以操纵锁存器中的数据的指定部分以便当应用默认映射时,根据第二映射存储被操纵的部分。对于数据的部分使用默认映射并且对于其余的数据使用第二映射可以得到基本相等的逻辑页可靠性。
可以根据其中存储码字的页的可靠性来提供在码字中提供的保护的量。对于具有较高可靠性的页,被保留用于奇偶校验的页的部分可以用于数据修整(shaping)。例如,可以产生修整奇偶校验以得到在得到的修正的数据中的“1”值和“0”值的不均匀分布。不均匀分布可以通过减少到存储器元件的最高状态和/或最低状态的写操作的数量而降低对存储器的磨损。
响应于读取存储器的单个逻辑页的请求,可以提供软位信息。可以分开地读取MLC字线的每个逻辑页以减少在单个逻辑页的读取期间感测操作的数量。软位信息可以指示从每个单元读取的页数据的可靠性而不提供关于单元的阈值电压所存在于的单元的电压窗内的准确电压带的信息。除了感测时间节省之外,可以避免由于想存储器控制器传送一组或多组感测的数据引起的延迟。因此,在随机读取(与顺序的存储器地址的连续读取相对)期间,与交错方案相比可以减少读取延时。
附图说明
图1是将串接的码字映射到字线的页中的第一实施例的总图,其中单个串接的码字的子码数据和奇偶校验跨过多个页存储;
图2是将串接的码字映射到字线的页中的第二实施例的总图,其中串接的码字的子码数据和奇偶校验存储在单个页处;
图3是将串接的码字映射到具有不相等的可靠性的字线的页中的第三实施例的总图,其中横跨较不可靠的页的串接的码字具有比存储在更可靠的页处的串接的码字更多的奇偶校验并且跨越多个页延伸;
图4是将串接的码字映射到具有不相等的可靠性的字线的页中的第四实施例的总图,其中每个串接的码字横跨多个页并且包括对于存储在较不可靠的页处的子码数据的比存储在更可靠的页处的子码数据更多的字码奇偶校验;
图5是将串接的码字映射到具有不相等的可靠性的字线的页中的第五实施例的总图,其中存储在较不可靠的页处的串接的码字具有与存储在更可靠的页处的串接的码字相同数量的子码;
图6是将串接的码字映射到具有不相等的可靠性的字线的页中的第六实施例的总图,其中存储在较不可靠的页处的串接的码字具有与存储在更可靠的页处的串接的码字更少的子码;
图7是操纵位以使用具有位到状态的第一内置映射的存储器件实现位到状态的第二映射的图解例示;
图8是包括使用位到状态的多个映射来存储数据的存储器件的系统的特定实施例的框图;
图9是可以由图8的存储器件应用于指定的数据位的逻辑运算的序列的图;
图10是例示使用位到状态的多个映射写入数据的方法的特定实施例的流程图;
图11是将码字存储在闪存的SLC部分处并将码字传送到MLC字线的特定实施例的图;
图12是包括配置为通过将长码字编程为多个物理页来写入数据的数据存储器件的系统的特定实施例的框图;
图13是在将存储的数据复制到存储器的第二部分之前使用穿孔的(punctured)码字将数据存储在存储器的第一部分中的系统的特定实施例的框图;
图14是将数据存储在存储器的第一部分中并且在将该数据存储到存储器的第二部分之前产生另外的冗余数据的系统的特定实施例的框图;
图15是使用不同的ECC方案存储数据以将数据编码为缓存在存储器的第一部分中并且将该数据编码为存储在存储器的第二部分处;
图16是例示包括写入编码的数据的多个部分并从该多个部分中的单个部分恢复数据的方法的特定实施例的流程图;
图17是例示包括在存储器裸片内产生另外的冗余数据的方法的特定实施例的流程图;
图18是例示向存储器写入数据的方法的特定实施例的流程图;
图19是例示使用基于页可靠性的修整冗余存储数据的特定实施例的总图;
图20是使用基于页可靠性的修整冗余来存储数据的系统的特定实施例的框图;
图21是取回包括基于页可靠性的修整冗余的数据的系统的特定实施例的框图;
图22是包括开始修整编码操作的写入数据的方法的特定实施例的流程图;
图23是包括开始修整解码操作的读取数据的方法的特定实施例的流程图;
图24是例示其中为每个状态定义三个可靠性间隔的较高逻辑页映射的特定实施例的总图;
图25是例示逐页的两软位读取可靠性设置的特定实施例的总图;
图26是例示包括单元状态分布的图形描绘以及硬位和另外的感测的位阈值读取电压的感测方案的特定实施例的总图;
图27是例示根据图26所示的阈值读取电压的可靠性电压区域的特定实施例的总图;
图28是例示提供单个软位的感测方案的特定实施例的总图;
图29是例示根据图28所示的阈值读取电压使用单个软位的可靠性电压区域的特定实施例的总图;
图30是包括配置为根据图24-29中的一个或多个进行数据读取操作的数据存储器件的系统的框图;以及
图31是可以由图30的数据存储器件进行的读取数据的特定实施例的流程图。
具体实施方式
通过使用多阶段解码串接码构建,可以在闪存处实现提供在可靠性、访问时间和复杂性之间的良好折衷的有效编码方案。这样的码构建使能够通过使用在闪存中被存储为短的子字(sub-word)的字码单独地保护每个小量的数据而有效访问小量的数据。子码可以包括数据以及提供冗余以保护该数据的奇偶校验位。稍后可以从闪存读取子字、将其传送到闪存控制器并解码以便取回该子码的数据。与读取并解码整个码字以访问数据相比,单独读取子字并解码子码使能够实现闪存的随机读取请求的更快读取性能。如果因为在子字中出现太多错误而解码子码失败,则可以从闪存读取更长的码字,将其传送到控制器并解码以恢复数据。
为了进一步改进读取时间,子码的数据以及子码的奇偶校验位中的一些或者优选地其全部可以存储在闪存的字线的单个页内。例如,闪存可以包括被布置为可经由字线访问的存储元件。可以通过将闪存单元的阈值电压调整为在M个定义的电压范围中的特定电压范围内而将每个存储元件编程为处于M个可能的状态之一。这使得每个存储元件能够存储log2(M)位,并设置M个电压范围的集合与M个串的集合之间的对应性,其中每个串包含log2(M)位。每个特定的电压范围对应于具体的串。字线也被认为是用于写入多个串的页,每个串的长度是log2(M),并且字线可以被划分为逻辑页,其中每个逻辑页是具体位的地点。例如,具有M=8个状态的MLC闪存每单元可以存储3位。这三位的每位可以对应于存储在字线处的数据的不同的逻辑页。例如,存储在字线处的数据的逻辑页可以称为较高页、中间页和较低页。可以通过标识其中较高为具有转变的状态(即较高位在一个状态中是1并且在相邻状态中是1)的集合并通过在这些状态之前应用读取电压进行感测操作来读取较高页。利用此读取电压集的读取的结果用于确定字线中的每个存储元件的最高有效位的值。可以以类似的方式读取中间页用于确定字线中的每个存储元件的中间位的值,并且可以以类似的方式读取较低页用于确定字线中的每个存储元件的最低有效位的值。
假设逻辑页的错误率足够低,则可以通过读取单个页、需要仅(M-1)/log2(M)个感测操作的平均值并提供短的读取延时而取回在子码内编码的数据。在优于在子码中出现的超过子码的错误校正能力的多个错误而导致的解码失败的情况下,可以采取几个动作。这些动作可以包括以下的任意组合:
1)调整读取阈值并且用调整的阈值重新读取单个页的数据;
2)增加相同页的读取分辨率;
3)激活某个“噪声”减轻技术,比如交叉耦合效应或者编程干扰效应的减轻—这些技术可以包括进行相邻字线或页或单元的另外的读取;
4)读取子码的另外的奇偶校验位(可能从其中可以存储该另外的奇偶校验位的另一页读取);
5)读取整个串接的码字,即该串接的码字的其他子码以及联合奇偶校验(可能从其中可以存储该其他子码以及联合奇偶校验的另一页或多页读取)。
进行上述动作中的一个或多个增加了在初始子码解码失败之后可以取回数据的概率。
图1-6示出将串接的码字映射到MLC字线的页中的例子。在这些例子中,假设具有M=8个状态的MLC闪存(即每单元3位),使得字线包括表示为较高、中间和较低的三个页。尽管示出了示例的具有每单元3位的MLC闪存,但是可以使用其他映射例子。
图1示出将串接的码字映射到字线的页中的例子100,其中子码横跨多个页而非限于单个页。MLC字线102被例示为存储第一码字(码字1)104、第二码字(码字2)106以及第三码字(码字3)108。例示了存储第二码字106的MLC字线102的一部分的较高页110、中间页112和较低页114。第二码字106包括八个子码131-138。每个子码131-138包括数据部分并且还包括与该数据部分对应的奇偶校验部分。例如,第一子码131包括第一数据(数据1)124和第一奇偶校验(奇偶校验1)126。第二码字106还包括联合奇偶校验128。联合奇偶校验128包括可以用于辅助解码可能使用子码奇偶校验不可解码的各个子码131-138的奇偶校验数据。
例如,可以使用对称ECC方案来编码每个子码131-138的每个(例如第一数据124)以产生包括该数据并且还包括奇偶校验位的码字。该码字可以被穿孔以移除奇偶校验位的一部分,并且被穿孔的码字(例如第一数据124以及第一奇偶校验位126)可以存储为子码(例如第一子码131)。已经从每个码字移除的奇偶校验位可以被组合并且添加为联合奇偶校验128。例如,从每个码字移除的奇偶校验位可以经由按位异或(XOR)运算而组合。当因为子码中的位错误的数量超过子码的ECC方案的校正能力,子码131-138之一不可校正时,可以读取并解码其他子码131-138中的一个或多个以恢复其他子码131-138中的一个或多个的原始的被穿孔的奇偶校验位。恢复的被穿孔的奇偶校验位可以与联合奇偶校验位128组合以重构与不可校正的字码对应的完整码字。
例如,当仅使用第一奇偶校验126不可校正第一子码131(即第一数据124和第一奇偶校验位126)时,可以解码每个其余的子码132-138以产生从每个子码132-138移除了的奇偶校验位。重新产生的奇偶校验位可以与联合奇偶校验128异或(XOR)以恢复从第一子码131移除了的奇偶校验位。可以通过添加恢复的奇偶校验位将第一子码131解除穿孔(un-puncture)。由于已经从联合奇偶校验128恢复的另外的奇偶校验,可以用更大的错误校正能力进行对解除穿孔的第一子码的ECC解码。
可以通过将MLC字线102中的每个闪存单元编程到来自M=8个状态的集合中的特定物理状态、即通过将闪存单元的阈值电压调整为在M=8个定义的电压范围中的特定电压范围内,将该单元编程为存储三位数据的串,并且整个字线与用于存储多个串的页(表示为物理页)相关联,每个串包括三维数据。每个物理状态被划分为三个页(表示为逻辑页),其中每个逻辑页在不同的位置中存储一位。较高页110可以对应于闪存单元的最高有效位,中间页112可以对应于中间位,较低页114可以对应于闪存单元的最低有效位。
从MLC字线102读取数据可以包括进行一个或多个感测操作。例如,可以使用M-1=7个读取阈值(即7个感测操作)来定义M=8个电压范围。感测操作可以包括将MLC字线102中的每个闪存单元的阈值电压与所选的读取阈值相比较以确定哪些闪存单元具有超过所选的读取阈值的阈值电压以及哪些闪存单元具有不超过所选的读取阈值的阈值电压。为了读取每个闪存单元的所有三位(即MLC字线102的所有三个页110、112和114),需要总共M-1=7个感测操作(在每个读取阈值处一个感测操作)来标识每个闪存单元的具体状态。但是,可以使用比M-1个更少的感测操作从MLC字线102读取单个页110、112或114,并且在某些情况下,可以使用单个感测操作读取单个页110、112或114。
在图1的例子中,每个子码131-138编辑所有页110-114而交错,因此所有的子码131-138可能呈现类似的错误率。例如,如果较高页110具有比中间页112和较低页114更高的预期的错误率,则每个子码131-138将同等地受影响,因为每个子码131-138跨过所有的页110-114均匀地分布。但是,读取子码131-138的任意一个需要读取所有三个页110-114,因此需要进行M-1=7个感测操作。读取子码131-138中的单个一个可能导致比其中子码仅存储在页110-114中的一个或两个页处并因此可以使用更少的感测操作来读取的其他配置更长的延时。
图2-3示出将串接的码字映射到字线的页中使得子码的数据以及该子码的一些或所有奇偶校验限于单个页的不同例子。图2-3的映射可以允许利用减少数量的感测操作对数据的有效读取。
图2示出在MLC字线2020处存储三个串接的码字204、206、208使得每个码字204-208被映射到MLC字线202的单独的页的例子200。第一码字204完全存储在MLC字线202的较高页中,第二码字206完全存储在MLC字线202的中间页212中,并且第三码字208完全存储在MLC字线202的较低页214中。每个码字204-208包括八个子码。例如,第一码字204包括具有第一数据220和第一奇偶校验222的第一子码,并且第二码字206包括具有第一数据224和第一奇偶校验226的第一子码。每个码字204-208还包括联合奇偶校验,比如第二码字206的联合奇偶校验230。联合奇偶校验包括可以用于辅助解码使用诸如关于图1所述的子码的奇偶校验可能不可解码的各个子码的奇偶校验数据。码字204-208使用共同的串接编码方案,其导致在每个码字204-208中的相同数量和配置的子码。例如,在图2中,每个码字204、206、208具有八个子码,它们具有共同的大小并且包括等同量的数据。
当平衡MLC字线202的不同页210-214的可靠性时,图2所示的方案可以具有增加的效率。而且,每个子码存储在单个页210、212或者214中,并且可以比横跨所有三个页110-114的图1的子码更快地被读取(需要更少的感测操作)。但是,如果MLC字线202的不同页210-214具有不同的可靠性(即错误率),则图2的映射方案可能具有降低的可实现的错误校正能力。关于表1-4以及图7-10更详细描述用于控制字线的不同页的可靠性的方法。
图3示出当较高页比较低页和中间页(它们可能具有基本相等的可靠性)更不可靠时可能合适的映射例子300。MLC字线302被例示为存储第一码字304、第二码字306和第三码字308。第一码字304具有存储在MLC字线302的较高页310、中间页312和较低页314中的部分。第二码字306完全存储在中间页312中,第三码字308完全存储在较低页314中。每个码字304-308包括八个子码。例如,第一码字304包括具有第一数据320和第一奇偶校验322的第一子码,并且第二码字306包括具有第一数据324和第一奇偶校验326的第一子码。每个码字304-308还包括联合奇偶校验,比如第二码字306的联合奇偶校验330。
在图3的例子中,使用较低速率码(即使用更多奇偶校验来提供较多冗余的码)来保护在较高页310处的数据并且使用较高速率码(即使用更少奇偶校验来提供较少冗余的码)来保护在较低页314和中间页312处的数据。第一码字304的每个子码具有与第二码字306以及第三码字308的每个子码基本相同的数据量(例如第一数据320与第一数据324大小相同)。但是,因为第一码字304的子码具有比其他码字306-308的子码更多的冗余,所以较高页310中的每个奇偶校验块大于中间页312和较低页314的奇偶校验块(例如第一奇偶校验322大于第一奇偶校验326)。
保护较高页310的数据的冗余中的一些被存储在较低和中间页312-314上。例如,中间页312包括用于第一码字304的子码1-4的另外的奇偶校验332,并且还包括用于第一码字304的联合奇偶校验334的第一部分。较低页314包括用于第一码字304的子码5-8的另外的奇偶校验以及用于第一码字304的联合奇偶校验的第二部分。
为了其他页可靠性,可以设计与图3的映射300类似的映射。关于表1-4以及图7-10描述控制字线的不同页的可靠性的方法。
图4示出当较高页比较低页和中间页更不可靠并且较低页和中间页具有基本相同的可靠性时可能合适的另一映射例子400。MLC字线402被例示为存储第一码字404、第二码字406和第三码字408。每个码字404-408包括八个子码和联合奇偶校验。每个码字404-408具有在MLC字线402的较高页410、中间页412和较低页414中的部分。
在图4的例子中,码字404-408是对称的(即,所有码字404-408属于相同的码)并且每个码字404、406、408横跨遍及MLC字线402的所有页410-414.但是,每个串接的码字404、406、408内的子码是不对称的。例如,使用较低速率子码(即更多奇偶校验)保护较不可靠的较高页410并且使用较高速率子码(即更少奇偶校验)保护更可靠的较低页412和中间页414。为了例示,第一码字404具有在较高页410中的第一子码(数据1和奇偶校验1)以及第二子码(数据2和奇偶校验2)。第一码字404还具有在中间页412中的第三子码(数据3和奇偶校验3)、第四子码(数据4和奇偶校验4)以及联合奇偶校验的第一部分(联合奇偶校验A)。因为中间页412比较高页410更可靠,所以中间页412中的每个子码具有比较高页410中的每个子码更少的奇偶校验以保护相同量的数据。中间页412中的较少的子码奇偶校验量使能够在与较高页410中的前两个子码所占据的相同量的空间中存储第三和第四子码以及联合奇偶校验的第一部分。
图5和6示出当较高页比具有相等的可靠性的较低页和中间页更不可靠时可能适合的另外的映射例子。图5例示包括存储第一码字504、第二码字506和第三码字508的MLC字线502的映射例子500。第一码字504完全存储在较高页510中,第二码字506完全存储在中间页512中,第三码字508完全存储在较低页514中。每个码字504、506、508包括八个子码和联合奇偶校验。但是,第一码字504的每个子码包括比第二码字506和第三码字508的每个子码更少的数据。
图6例示包括存储第一码字604、第二码字606和第三码字608的MLC字线602的映射例子600。第一码字604完全存储在较高页610中,并且包括六个子码和联合奇偶校验。第二码字606完全存储在中间页中并且包括九个子码和联合奇偶校验。第三码字608完全存储在较低页614中并且包括九个子码和联合奇偶校验。
与其中每个页存储相同量的数据的图3和图4的映射相对比,图5和图6的映射在较不可靠的较高页510、610上存储与更可靠的较低页514、614以及中间页512、612相比更少的数据。在图5中,较高页510的子码保护比较低页和中间页512、514更少的数据,而在图6中,所有的子码保护相同量的数据,但是较高页码字604具有比较低页和中间页码字606、608更少的子码。
在图2-6所示的所有例子中,子码(或者子码的主要部分)被限于字线的单个页中以便允许快速读取子码。但是,由于字线的不同页的可能不相等的可靠性,将子码(或者子码的主要部分)限制到字线的单个页中有可能引起子码呈现比遍及真各个字线的平均错误率更高的错误率。较高的字码错误率可能导致字线的非最佳利用于及字线的每单元的降低的信息密度,因为可以基于较不可靠的页的错误率而不是遍及所有页的平均错误率确定ECC冗余。
在此所述的为了更好地利用字线的各种技术可以分类为以下几组中的一个或多个:
1)包括改进字线的所有页的可靠性的平衡的技术;
2)包括将数据的保护级别与其中存储该数据的页的可靠性更紧密地匹配(即,将错误校正能力与预期的错误率匹配,在码字伙子吗之间具有不相等的冗余分配)的技术;
3)包括将页上的存储的数据量与该页的可靠性更紧密地匹配的技术;
4)利用更可靠的页中的一些冗余位来修整遍及被编程的电平的概率分布(为了耐用性提高和/或错误率降低以及“噪声”减轻)的技术。
这些技术的任意组合(例如来自两个或多个不同组的技术的组合)也是可能的。
平衡页可靠性
当字线的所有页具有相等的可靠性(即相等的错误率)时,图2所示的编码方案可能是合适的。可能存在可以采取以便完全或者部分地平衡字线的不同页的可靠性的几种方法。
一种方法是调整不同状态的验证电平使得遍及字线的不同页引入相等的(或者更平衡的)错误率。例如,表1例示对于具有M=4个状态的MLC闪存的从位到状态的映射。
表1:对于M=4的示例映射
当设置验证电平使得从每个状态到相邻状态的错误概率相等时,遍及不同页的错误率不相等。例如,可以设置验证电平使得状态Er和A之间的错误(即放置在Er状态的单元被读取为A状态或者放置在A状态的单元被读取为Er状态)的概率基本等于状态A和B之间的错误的概率以及基本等于状态B和C之间的错误的概率。当状态之间的错误同等地可能发生时,较高页的错误率是较低页的错误率的两倍,因为较高页包含从1到0(或反之亦然)的两个转变。
如果从一个状态到另一状态的移位不改变页的位值,则该移位将不引起错误。为了例示,发生在表1的状态Er和A之间或者状态B和C之间的错误将导致将在较高页处读取错误的位,但是不将导致在较低页处读取错误的位。状态A和B之间的错误不将导致在读取较高页时的位错误,但是将导致将在较低页处读取错误的位。当从每个状态到相邻状态的错误概率相等时,可以基于与页的位值的改变对应的状态转变的数量确定页可靠性。在表1中,较高页具有两个这样的转变(Er和A、B以及C),而较低页具有单个这样的转变(A和B)。因此,如果错误状态转变同等地可能发生时,与较低页相比,在较高页中可能发生的错误位值是两倍。因此,当验证电平导致状态之间的错误概率相等时,页可靠性不平衡。
可以通过以这样的方式设置验证电平来平衡页可靠性:状态A和B被放置得彼此更靠近并且更远离状态Er和C。因此,可以引入与状态Er和A之间或者B和C之间的错误概率相比是两倍大的状态A和B之间的错误概率,对于较高和较低页引入相等的错误率。但是,在状态之间引起不相等的错误率的验证电平设置在引入的存储容量方面可能是次最佳的。为了例示,满足给定的错误校正能力所需的ECC冗余将大于对于具有遍及状态将引入相等的错误率的验证电平的交错编码方案的ECC冗余。另外,遍及状态引入不相等的错误率的验证电平对于从裸片到裸片、从块到块、从页到页等等的变化效应可能较不稳图。
用于部分地平衡页可靠性的另一方法包括使用从位到状态的适当映射。表2绘出对于具有M=8个状态的MLC闪存的示例映射。
表2:对于M=8的示例映射
根据表2的映射,如果较低页的错误率给出为值“p”,则中间页的错误率是2*p,并且较高页的错误率是4*p(因为较低页具有从1到0的一个转变,中间也具有两个转变,并且较高页具有四个转变)。
另一方面,如果使用表3的映射,则遍及字线的页实现更平衡的错误率。
表3:对于M=8的另一映射
使用表3的映射,如果较低页的位错误率是p,则中间页的位错误率也是p。如果单元状态被确定为遍及电压带不均匀地分布的阈值电压范围,则较高页的位错误率是(3/2)*p,因为较低和中间页两者具有从0到1的两个转变,而较高页具有三个转变。因此,较低页和中间页具有相同的可靠性,并且较高也具有较低的可靠性。根据表3的映射,图2-6所示的编码方案适合于页的可靠性分配。
表2和表3中所示的映射对应于每页相同平均数量的感测操作。在表2的映射中,可以使用单个感测操作读取较低页(在状态C和D之间),可以使用两个感测操作读取中间页(在状态A和B之间以及状态E和F之间),并且可以使用四个感测操作读取较高页(在状态Er和A之间、状态B和C之间、状态D和E之间以及状态F和G之间)。总体上,每个页读取的感测操作的平均数量可以给出为(1+2+4)/3=2.333。类似地,在表3的映射中,可以使用两个感测操作读取较低页(在状态B和C之间以及状态F和G之间),可以使用两个感测操作读取中间页(在状态Er和A之间以及状态D和E之间),并且可以使用三个感测操作读取较高页(在状态A和B之间、状态C和D之间以及状态E和F之间)。总体上,每个页读取的感测操作的平均数量是(2+2+3)/3=2.333。
格雷(Grey)映射是其中在任意两个相邻的状态的位映射之间改变单个位的映射。格雷映射可以降低平均位错误率以及每个页的感测操作的平均数量。对于遍及M个状态的格雷映射,每个页读取的感测操作的平均数量是(M-1)/log2(M)。
表2和表3中所述的映射仅仅是例子。可以使用不同的映射来实现不同级别的可靠性平衡。但是,当状态的数量是2的幂(例如2、4、8、16)时对于格雷映射可能不可达到完全的平衡,因为从0到1的转变的数量(即M-1)不可被页的数量(即log2(M))整除。
可以用于改进可靠性平衡的第三方法是每个字线使用多于一个映射。例如,可以使用一个映射编程字线的一些存储元件,并且可以使用不同的映射编程该字线的其他存储元件。
每个字线使用多个映射的这种可靠性平衡的一个例子在表4中示出。
表4:每个字线多个映射的例子
当根据表4向状态分配位时,使用左侧映射编程2/3的单元(例如MLC字线中的闪存单元)。根据左侧映射,如果这些单元的较低位和中间位呈现2*p的错误率,则较高位呈现3*p的错误率(即,较高页比中间页和较低页更不可靠)。剩余1/3的单元根据右侧编程被编程,其中这些单元的较低位和中间位呈现3*p的错误率,并且较高位呈现p的错误率(即较高页比中间页和较低页更可靠)。这样,较低页和中间页的整体错误率是(2/3)*2*p+(1/3)*3*p=2.33*p,并且较高页的整体位错误率是(2/3)*3*p+(1/3)*p=2.33*p。因此,较高页、中间也和较低页具有相等的整体可靠性。
在多平面闪存器件中可以使用对每字线使用多个位到状态映射的替换。代替在一个字线中混合两个或多个映射方案,多平面存储器器件的每个平面可以具有不同的映射(或者不通电读取阈值的设置)。码字可以存储在多平面存储器器件中以在一个平面中具有一部分并且在另一平面中的相应位置中具有另一部分以平衡存储的码字的整体位错误率。
支持闪存中的多个映射
在诸如闪存器件的存储设备中可以支持从位到状态的多个映射。例如,可以支持从位到状态的多个映射用于平衡页可靠性或者用于实现新的映射,而仍支持现有用于与其他闪存控制器的向后兼容性。为了例示,一些现有的闪存器件可以具有实现位到状态的单个映射的数据编程序列。这样的闪存器件可以通过将位写到内部闪存锁存器中然后对锁存器中的位应用内置映射以确定MLC字线的编程状态来将数据编程到快闪阵列。可以通过使用以下操作序列在这样的现有闪存器件中实现从位到状态的多个映射:
1)将数据写到内部闪存锁存器中。
2)对闪存锁存器中的所选位进行逻辑运算的序列以便将位的映射从第二映射(位到状态的期望的映射)转换为第一映射,闪存根据该第一映射将位转换到状态。
3)将数据从内部闪存锁存器编程到MLC字线。
图7绘出操纵位以使用具有位到状态的内置第一映射730的存储器件实现位到状态的第二映射的特定实施例700。数据位被加载到存储器中的P个锁存器的集合,例示为包括第一锁存器702、第二锁存器704和第p锁存器706。每个锁存器702、704、706存储m个数据位,标记为第一锁存器702中的位a1……am、第二锁存器704中的位b1……bm以及第p锁存器706中的位p1……pm。
将指定的数据位710指定为在锁存器702-706内被操纵并且不再锁存器702-706内操纵未指定的数据位708。使用一个或多个逻辑运算720在锁存器702-706中操纵指定的数据位710(索引从n+1到m的位)以在锁存器702-706中产生操纵的数据位722。根据内置第一映射730将操纵的数据位722和未指定的数据位708(索引从1到n的位)的集合存储到一组存储元件740(例如MLC字线)的各个存储元件。组740的每个存储元件可以被编程到状态s0、s1、……sM。例如,状态s0、s1、……sM可以对应于表4所示的状态Er、A、B、……G。
根据第一映射将未指定的数据位708映射到状态,而根据第二映射将指定的数据位710映射到状态。为了例示,第一位a1、b1、……p1根据第一映射被映射到第一元件c1的状态s1。第二位a2、b2、……p2根据第一映射被映射到第二元件c2的状态s2,并且第n位被映射到第n元件cn的状态sn。通过首先操纵锁存器702-706中的位然后应用内置第一映射730,根据第二映射将第(n+1)到第m位映射到元件c(n+1)。
通过在锁存器702-706中操纵指定的位710而不是为指定的位708,当将数据存储到存储元件组740时可以应用两个(或多个)不同的映射。通过使用多个映射,由一个映射引起的较低可靠性可被由另一映射引起的较高可靠性至少部分地平衡,比如关于表4所描述的。另外,可以在闪存裸片内部而非在闪存控制器处实现两个映射的应用。
图8描绘系统800的特定实施例,系统800包括可以操作地耦接至主机设备830的数据存储设备802。数据存储设备802包括耦接至控制器806的存储器804,比如NAND闪存。存储器804包括存储元件820、写入电路808、锁存器810及映射电路812。映射电路812使数据存储器件802能够应用锁存器810内的位到存储器804中的存储元件的状态的多个映射。
数据存储器件802可以是存储卡,比如安全数字 miniSD.TM卡(特拉华州威尔明顿市的SD-3C LLC的商标)、MultiMediaCard.TM(MMC.TM)卡(维吉尼亚州阿林顿市的JEDEC图态技术协会的商标)或(CF)卡(加利福尼亚州米尔皮塔斯市的SanDisk公司的商标)。作为另一例子,数据存储设备802可以是主机设备830中的嵌入式存储器,比如(维吉尼亚州阿林顿市的JEDEC图态技术协会的商标)以及eSD,作为例示性例子。
存储器804包括多个存储元件820,包括存储元件820的组822。例如,存储元件820可以包括MLC单元。为了例示,存储器804可以包括多级单元(MLC)闪存,且存储元件820的组822可以是MLC字线。
锁存器810可操作以锁存要存储在诸如MLC字线的存储元件820的组822处的数据842。可以在锁存器810处接收来自控制器806的数据842,且该数据842可以对应于由控制器806响应于自主机设备830所接收的用户数据832而产生的码字。锁存器810中的每一锁存器可以存储与要存储在存储元件的组822处的数据的逻辑页对应的位。例如,锁存器810可以对应于图7锁存器702-706。
映射电路812可操作以通过使用一个或多个逻辑运算来操纵锁存器810中的指定数据位而在锁存器810中产生操纵的数据位。例如,映射电路812可以响应于来自控制器806的控制信息840以将图7的逻辑运算720应用于指定数据位710。映射电路812可以配置为在已经从控制器806接收数据842之后在存储器804处产生操纵的数据位。
写入电路808可操作以从锁存器810接收数据且根据位序列到存储元件820的状态的第一映射将第一数目的位存储在存储元件820的组822中的每一存储元件中。写入电路808可操作以将操纵的数据位的集合存储到存储元件820的组822中的各个存储元件。根据位序列到状态的第二映射,指定数据位对应于各个存储元件的状态,其中该第二映射不同于该第一映射。
存储器804可以配置为将第一映射应用为内置映射。可以通过将数据842加载至锁存器810中且通过逻辑寄存器运算来操纵指定数据位而建立第二映射。第一映射可以与对应于MLC字线的第一逻辑页的第一错误率相关联。第二映射可以与对应于MLC字线的第一逻辑页的第二错误率相关联,其中该第二错误率低于该第一错误率。
例如,映射电路812可以配置为对位于锁存器810中的第一锁存器处的第一组数据位中的每一数据位进行逻辑非(NOT)运算。作为另一例子,映射电路812可以配置为进行第一锁存器处的第一组数据位以及锁存器810中的第二锁存器处的第二组数据位的按位逻辑运算。为了例示,按位逻辑运算可以包括与(AND)运算或者或(OR)运算。作为另一例示,按位逻辑运算可以包括否定异或(NOT-XOR)运算。作为另一例示,按位逻辑运算可以包括交换(SWAP)运算。关于图9来描述逻辑运算的例子。
存储器804可以配置为选择性地应用第二映射。例如,控制信息840可以指示要被应用第二映射的指定数据位。指定数据位可以位于每个锁存器的第二部分处,且未指定数据位可以位于每个锁存器的第一部分处,比如图7的未指定数据位708及指定数据位710。映射电路812可以配置为在每个锁存器810的第二部分处产生操纵的数据位且在每个锁存器810的第一部分处不操纵未指定数据位。
可以将第二映射应用于要存储在存储元件820的组822的第二部分处的指定数据位,且可以将第一映射应用于要存储在存储元件820的组822的第一部分处的未指定数据位。例如,存储元件820的组822的第一部分及存储元件820的组822的第二部分可以位于MLC闪存的单个字线中。作为另一例子,存储器804可以包括多平面闪存的第一平面850及第二平面852,且存储元件820的组822的第一部分可以位于第一平面850处且存储元件820的组822的第二部分可以位于第二平面852处。
在操作期间,数据存储器件802可以从主机设备830接收用户数据832。数据存储器件802可以编码用户数据832,比如在控制器806处的ECC引擎处,以产生数据842(例如,编码用户数据832的码字)。控制器806可以将数据842传送至存储器804,存储器804可以将数据842存储到锁存器810。
控制器806还可以将控制信息840发送至存储器804。映射电路812可以响应于控制信息840以选择锁存器810内的指定数据位用于操纵。映射电路812可以操纵锁存器810内的指定数据位,且操纵的数据位(及未操纵的数据位,如果有的话)由写入电路808根据第一映射而写入存储元件820的组822。在将第一映射应用于未指定数据位且将第二映射应用于指定数据位之后,可以将与存储元件820的组822的每个逻辑页(例如,单个字线的每一逻辑页)相关联的错误率实质上相等化(即,存储元件820的组822的每一逻辑页具有实质上等于存储元件820的组822的其它逻辑页中的每个的错误率的错误率)。
图9例示可由图8的映射电路812应用于指定数据位的逻辑运算的序列900。可以进行图9的逻辑运算序列以在两个格雷映射之间进行转换,比如将第二格雷映射转换至在编程MLC闪存时所应用的内置第一格雷映射。初始映射902将状态(Er、A、B、C、D、E、F和G)映射至第一数据锁存器(ADL)、第二数据锁存器(BDL)和第三数据锁存器(CDL)处的数据位。数据锁存器ADL、BDL和CDL可以是闪存中的内部锁存器,比如图8的锁存器810。
第一运算904将NOT-XOR运算(~^)应用于ADL和BDL且将结果存储到ADL,得到映射906。第二运算908应用AND运算(&)、NOT运算(~)及NOT-XOR运算以产生~(~ADL&CDL)~^BDL,且将结果存储到BDL。映射910从第二运算908得到。
第三运算912应用NOT-XOR运算以产生CDL~^BDL且将结果存储到CDL。映射914从第三运算912得到。第四运算916将交换运算()应用于ADL和CDL以产生最终映射918。从将运算904、908、912及916应用于存储在锁存器ADL、BDL及CDL中的初始数据得到的最终映射918可以对应于应用于锁存器ADL、BDL及CDL的内容的内置第一映射。
图9的多运算方法可以对应于图7的逻辑运算720。例如,最终映射918可以对应于位到状态的内置第一映射730,且第一映射902可以是要应用于指定数据位710的位到状态的第二映射。通过在内置第一映射730之后对指定数据位710进行逻辑运算904、908、912及916,可以根据第二映射来存储指定数据位。
例如,第二映射(例如,映射902)可以将位序列“101”映射至状态A。应用逻辑运算904、908、912及916将位序列“101”改变为位序列“011”。可以根据内置第一映射(例如,映射918)将位序列“011”存储为状态“A”。因此,根据内置第一映射,图7的具有状态s1(例如,状态“A”)的存储元件cl可以表示位序列“011”,且根据第二映射,图7的具有相同状态s1的存储元件cm可以表示位序列“101”。将逻辑运算904、908、912及916应用于存储在图8的锁存器810的指定部分中的位可以由映射电路812进行。
图10描绘例示写入数据的方法的实施例的流程图。该方法可在具有控制器和存储器的数据存储设备中进行,其中存储器包括锁存器及多个存储元件,且其中存储器可操作以根据位序列道存储元件的状态的第一映射将第一数目的位存储在每一存储元件中。例如,该方法可在图8的数据存储器件802中进行。
在1002处,将数据位加载至数据存储设备的存储器内的锁存器中。在1004处,通过使用一或多个逻辑运算来操纵锁存器中的指定数据位而在锁存器中产生操纵的数据位。在1006处,根据第一映射将操纵的数据位的集合存储到存储元件组中的各个存储元件。根据位序列至状态的第二映射,指定数据位对应于该各个存储元件的状态,且该第二映射不同于该第一映射。例如,指定数据位可以包括数据位的要根据第二映射而存储的部分,以便通过将第二映射应用于字线的存储器单元中的1/3而根据表4的例子来相等化页可靠性。然而,在其它实施例中,指定数据位可以是所有的数据位,以便使用第二映射来有效地替换第一映射。
锁存器和存储元件可以位于配置为将第一映射应用为内置映射的存储器裸片内,比如图8的存储器804内。可以通过将数据位加载至锁存器中且通过在存储操纵的数据位的集合之前进行逻辑寄存器运算来操纵这些数据位而建立第二映射。例如,逻辑寄存器运算可以是图9的运算904、908、912及916以在格雷码(Grey code)之间映射指定数据位。
存储器裸片(die)可以包括诸如图8的映射电路812的电路,以进行通过将一个或多个逻辑寄存器运算应用于指定数据位而存储的指定数据位的状态变换。
存储器可以包括快闪多级存储器单元(MLC)存储器,且存储元件组可以是MLC字线。第一映射可与对应于MLC字线的第一逻辑页的第一错误率相关联,且第二映射可与对应于MLC字线的第一逻辑页的第二错误率相关联。该第二错误率可以低于该第一错误率。
例如,可以将数据位的第一组加载至第一锁存器中,且可以通过对第一数据位组中的每一数据位进行逻辑NOT运算来操纵指定数据位。作为另一例子,可以将数据位的第一组加载至第一锁存器中且可以将数据位的第二组加载至第二锁存器中。操纵指定数据位可以包括进行第一组和第二组的按位逻辑运算。例如,按位逻辑运算可以包括AND运算和OR运算中的至少一个或可以包括否定异或(NOT-XOR)运算。作为另一例子,按位逻辑运算可以包括交换运算。
存储器可以配置为选择性地应用第二映射,诸如响应于图8的控制信息840。例如,存储器可以配置为将第二映射应用于锁存器的指定部分且不应用于锁存器的未指定部分,如图7所示。每个锁存器的第一部分可以包含未指定数据位,且每个锁存器的第二部分可以包含指定数据位。可以在每个锁存器中的第二部分处产生操纵的数据位以将第二映射应用于要存储在存储元件组的第二部分处的指定数据位,而将第一映射应用于要存储在存储元件组的第一部分处的未指定数据位。
作为另一例子,存储器可以配置为从可以通过操纵锁存器内的位而应用的几个可用映射选择第二映射。例如,图8的映射电路812可操作以支持多个映射且可响应于控制信息840以进行实现特定映射的运算。例如,图8的控制器806可以选择特定映射且可以将控制信息840发送至映射电路812,该控制信息840指示所选映射以及要操纵以实现该所选映射的指定位。控制信息840可以规定要应用于指定数据位的逻辑运算的顺序,诸如图9的运算904、908、912及916。作为另一例子,存储器可以配置为不应用第二映射,使得根据第一映射将所有位映射至状态。
在一个实施例中,存储元件组的第一部分和存储元件组的第二部分可位于多级存储器单元(MLC)闪存的单个字线中。在将第一映射应用于未指定数据位且将第二映射应用于指定数据位之后,与单个字线的每一逻辑页相关联的错误率可被实质上相等化。例如,表4的左侧映射可以是应用于字线的存储元件的2/3(例如,对应于未指定位)的第一映射,且表4的右侧映射可以是应用于字线的存储元件的1/3(例如,对应于指定位)的第二映射,使得所有页具有总体上相等的错误率。在另一实施例中,存储元件组的第一部分位于多平面闪存的第一平面处,且存储元件组的第二部分位于多平面闪存的第二平面处,诸如图8的平面850及852。
将保护等级匹配于页可靠性
用于适应不相等的页可靠性的另一技术是将数据保护等级匹配于其中存储了数据的页的可靠性。例如,根据存储不同码字或子码的页的错误率,可以将不同的ECC冗余分配给这些码字或子码。图3中示出每个串接码字的不同冗余分配的例子。图4中示出每个子码的不同冗余分配的例子。
图4所示的方案由于子码之间的不对称性而可能具有较复杂的编码方案。为了例示,较不可靠的较高页410中的子码比更可靠的页412、414中的子码具有更多奇偶校验。图3所示的方案使用不同长度的码字,且一个码字可横跨遍及字线的多于一个页。例如,图3的第一码字304长于单个页(且因此横跨遍及字线302的多于一个页)。
对于具有每个存储器单元的大数目的状态(例如,M=4、8或16)的MLC闪存,可首先将数据编程至充当“二进制高速缓存”的单级存储器单元(SLC)分区中。可以使用后台处理将存储在SLC分区中的数据复制至MLC分区中。最初将数据存储到SLC分区中然后将数据复制至MLC分区可以提供几个优点:
1)因为MLC编程可相对缓慢,所以如果编程脉冲串(burst)大小足够小且二进制高速缓存未被填充,则二进制高速缓存的使用可使能够增加编程处理量且改善用户体验。
2)一些闪存协议(例如,安全数字(SD))规定存储器控制器确认在发送下一数据块之前将先前发送的数据块编程至存储器中。数据块通常小MLC字线的容量,该容量通常大(例如,16KB、24KB或32KB)。因此,可首先将数据块编程至SLC分区中,且在收集了足够的数据(例如,将足够的数据存储在SLC二进制高速缓存中以填充MLC区块)之后,将存储在SLC二进制高速缓存中的数据复制至MLC分区中。
3)可以在可以包含许多字线的大块(例如,由大小为每字线32KB的64个字线组成的2兆字节(MB)的块)中进行将数据编程至MLC分区中。可以使用可能涉及每一字线的几个非连续的编程阶段的操作序列来进行将数据编程至MLC分区。多个非连续的编程阶段可以抵消某些交叉耦合效应且可引起使数据存储设备能够维持小错误率的窄电压分布。可首先将数据编程至SLC分区(例如,二进制高速缓存)中。将数据编程至SLC分区中相比于将数据编程至MLC分区中可以更简单且可以一次一个字线地进行。在将数据编程至SLC分区中之后,可以将数据复制至MLC分区中。因此,SLC分区可以充当数据的临时存储器,而不使用RAM用于临时存储数据。
公开了几个实施例以使能够在将长码字(即,长于SLC页的码字)从SLC分区复制至MLC分区之前将该码字编程至SLC分区中。
一个实施例包括使用数目大于MLC字线中的逻辑页的数目的SLC页以存储用于单个MLC字线的数据。可以将长码字编程至SLC页中,使得数据在SLC页内的相对位置与数据在该数据将被复制到的MLC字线的页内的相对位置相同。将码字编程至SLC页中的与意图用于MLC页的相对位置相同的相对位置中使能够使用内部闪存锁存器进行从SLC分区至MLC分区中的内部复制。可以在锁存器处进行简单操作以将较大数目的SLC页中的数据组合到较小数目的MLC页中。图11中针对图3所示的MLC字线例示了此编程过程的例子。
图11描绘将第一码字(码字1)1130、第二码字(码字2)1132和第三码字(码字3)1134存储在闪存的SLC部分处且将码字1130至1134传送至MLC字线1120的特定实施例1100。第一码字1130具有超过SLC部分中的页的大小的长度。第一SLC页(SLC较高1)1104存储第一码字1130的要存储在MLC字线1120的较高页1122内的部分1136。第二SLC页(SLC较高2)1106存储第一码字1130的要存储在MLC字线1120的中间页1124内的第二部分1138。第二SLC页1106还存储第一码字1130的要存储在MLC字线1120的较低页1126中的第三部分1140。第三SLC页1108存储第二码字1132且第四SLC页1110存储第三码字1134。
第一码字1130的第一部分1136具有实质上等于SLC页大小的长度且实质上填充第一SLC页1104。第二SLC页1106中第一码字1130的第二部分1138占据未由第三SLC页1108中的第二码字1132占据的页位置(例如,占据SLC页1106的相对于字线的最后存储器单元)。结果,可以将第二码字1132和第一码字1130的第二部分1138一起写入单个锁存器中而不将位移位至较高或较低的位位置。例如,该单个锁存器可以是图8的锁存器810中的一个。类似地,第二SLC页1106中的第一码字1130的第三部分1140占据未由第四SLC页1110中的第三码字1134占据的页位置(例如,占据SLC页1106的相对于字线的第一存储器单元)。结果,可以将第三码字1134和第一码字1130的第三部分1140一起写入单个锁存器中而不进行位移位。
可以将每一SLC页1104、1106、1108、1110复制至各个内部闪存锁存器中。在将SLC页载入至锁存器中之后,第一码字1130的第一部分1136可以保留在第一锁存器中,第一码字1130的第二部分1138可以与第二码字1132组合至第二锁存器中,且第一码字1130的第三部分1140可以与第三码字1134组合至第三锁存器中。可以将第一锁存器、第二锁存器和第三锁存器的位值映射到MLC字线1120的状态以将较高页1122、中间页1124及较低页1126编程至MLC字线1120。
因此,图11例示将存储的内容从第一数目的SLC物理页(例如,四个SLC页1104至1110)复制至单个MLC物理页处的第二数目的逻辑页(例如,三个逻辑页1122至1126)的例子,其中该第二数目小于该第一数目。当在每单元B个位的多级单元(MLC)闪存中使用二进制高速缓存时,其中B为正数(例如,如图11所示的每单元3个位),可以使用多于B个SLC页用于高速缓存MLC闪存的单个字线的数据,将至少一数据页分割为多于一个单级单元(SLC)页。为了例示,四个SLC页1104-1110可以高速缓存单个MLC字线1120的数据。数据存储设备可以接收要存储在数据存储设备中的数据页且可产生对应于接收的数据页的码字,诸如码字1130、1132和1134。可以将这些码字存储到数据存储设备的诸如SLC部分或二进制高速缓存的第一存储器部分的物理页(例如,SLC页1104至1110)。可以将对应于特定数据页的特定码字的第一部分、比如第一码字1130的第一部分1136存储在第一物理页1104处。可以将该特定码字的第二部分、比如第一码字1130的第二部分1138存储在第二物理页1106处。可以将码字1130、1132和1134从物理页1104-1110复制至数据存储设备的第二存储器部分的物理页,诸如存储器的MLC部分中的MLC字线1120。
如图11所示,可以在二进制高速缓存中使用四个SLC页1104、1106、1108、1110,以便将仅三个数据页1122、1124、1126存储在MLC字线1120中。结果,相比于使用MLC字线1120的每页相同数目的SLC页,可以使用相对较大的二进制高速缓存。使用较多SLC页可以引起二进制高速缓存的较高磨损,因为对于每一MLC字线编程更多SLC页。然而,SLC较高2页1106仅存储第一码字1130的溢出(spillover)冗余,其不适合于SLC较高1页1104。如所示,当溢出冗余占据SLC较高2页1106的小部分时,SLC较高2页1106的大多数单元可保持被擦除。结果,相比于编程SLC较高2页1106的所有存储器单元,由于重复的编程/擦除循环引起的磨损可以减少。控制二进制高速缓存以使得每一SLC页1104、1106、1108、1110具有要用第一码字1130的第一部分1136、用第一码字1130的第二部分1138和第三部分1140、用第二码字1132或用第三码字1134编程的1/4概率可以降低对SLC分区的磨损和耐久性的影响。
用于将数据编程至二进制高速缓存的四个页中的时间量可能超过用于将数据编程至三个SLC页的时间量。然而,可以通过设计用于写入数据的适当流水线操作来“隐藏”任何增加的编程时间。在编程SLC较高1页1104之后,且在用“溢出”冗余来编程SLC较高2页1106之前,存储器控制器可向发送数据的主机通知较高页数据安全地存储在闪存中,使得主机可递送下一页的数据。然后,在主机传送下一页的数据且下一页的数据被编码的同时,可以将较高页的“溢出”冗余(例如,第二和第三部分1138-1140)编程至下一SLC页(例如,SLC较高2页1106)中。
以防在SLC较高2页1106的数据被编程至二进制高速缓存之前发生断电事件,控制器可以恢复第一码字1130的数据,因为第一码字1130的第二部分1138和第三部分1140可以仅包含“溢出”冗余。校正从SLC物理页预期的错误率不需要此溢出冗余。例如,SLC位错误率可以比MLC较高页1122页的位错误率小得多。结果,数据存储设备可以合理地向主机通知在仅SLC较高1页1104的编程之后较高页数据是安全的,因为用SLC较高1页1104中的数据字编码的冗余信息足以使能够恢复较高页数据。关于图12进一步详细地描述一个例子。
用于使能够在将长码字复制至MLC分区之前将长码字编程到SLC分区的第二实施例包括仅编程码字的适合于单个SLC页的一部分而不将码字的溢出部分编程至第二SLC页。结果,将“穿孔的”码字存储到SLC分区而不将该码字的一些位存储到SLC分区。在将数据自SLC分区复制至MLC分区之前(即,当要写到MLC分区的所有数据在SLC分区处可用时),可以从SLC分区请取穿孔的码字且解码。解码穿孔的码字可以校正可能在SLC分区中引入的错误且可以重新构建该码字的丢失的穿孔的部分。在解码穿孔的码字以校正错误且重新构建完整的码字之后,可以将完整的码字编程至MLC字线的逻辑页内的适当位置。可以设计编码方案以确保存储在SLC分区中的穿孔的码字的成功解码的高概率,因为SLC分区中的页相比于MLC分区的页可能展现低得多的错误率。当将数据存储在MLC页中时,可以仅需要码字的穿孔的部分用于解码该数据,但当将数据存储在SLC页上时,可以省略该穿孔的部分。关于图13进一步详细地描述一个例子。
因此,将数据从SLC分区的穿孔的码字复制至MLC分区中可以包括控制器动作,因为可以从SLC页读取穿孔的码字且将穿孔的码字提供至控制器,且控制器可解码穿孔的码字以重新构建该码字的穿孔的部分。将数据传送至控制器且解码传送的数据可以对在将该数据存储到MLC分区时的延时有贡献。
通过经由编码过程而在闪存内部产生码字的部分而不是在控制器处重新构建穿孔的部分,可以在将数据从闪存的SLC分区复制至闪存的MLC分区时避免控制器涉及。在可能不能在快闪存储器内有效率地实现复杂逻辑的实施例中,编码过程可以包括相对不复杂的逻辑运算。相对简单的编码的例子是重复码,其中可以通过重复码字位中的一些来产生码字的部分(例如,所产生的部分可以是该码字的某一区段(section)的复制本)。关于图14进一步详细地描述一个例子。
还可以通过将码字的溢出区段存储在RAM中直至溢出区段被复制至MLC分区来减少SLC至MLC复制过程中的控制器涉及。码字的溢出区段可以小且因此可能无需大的RAM大小。在断电的情况下,存储在RAM中的溢出区段可能会丢失。在电力恢复之后,可以通过从SLC分区读取穿孔的码字且解码穿孔的码字来重新构建码字的丢失的溢出区段。
用于使能够在将长码字复制至MLC分区之前将长码字编程至SLC分区的第三实施例可以包括使用不同于用于MLC分区的ECC码的ECC码将数据编程至SLC分区中。用于SLC分区的ECC码可以产生适合于SLC页的码字(即,存储在SLC分区中的数据页的码字具有比存储在MLC分区中的相同数据页的码字更少的奇偶校验)。为了将数据从SLC分区复制至MLC分区中,将相关SLC页读取至控制器中,使用SLC ECC来解码数据,使用MLC ECC来编码数据,且组合MLC码字并将其编程至MLC字线中。关于图15进一步详细地描述一个例子。
MLC编程可以包括对正被编程的MLC的每一字线的几个非顺序的编程阶段。结果,由存储器控制器所使用的RAM可能不具有足够的空间来存储完成MLC编程(其可能涉及存储要写入许多字线中的数据)所需要的所有数据。在一个例子中,可以通过重复“读取SLC——解码SLC——编码MLC——编程MLC”序列达几次(即,对MLC字线的每一编程阶段进行该序列一次)来进行通过减少使用RAM的MLC编程。在另一例子中,可以通过读取SLC页、根据SLCECC方案来解码从SLC页所读取的数据、使用MLC ECC方案来编码解码的数据且将MLC码字编程回到SLC来进行通过减少使用RAM的MLC编程,使得以MLC格式在SLC页中编码该数据。
图12描绘系统1200的一个特定实施例,系统1200包括配置为通过将长码字编程至多个物理页中来写入数据的数据存储设备1202。系统1200包括可以操作地耦接至主机设备1230的数据存储设备1202。数据存储设备1202包括耦接至控制器1206的存储器1204。存储器1204包括第一部分1210,第一部分1210包括第一物理页1212和第二物理页1214。存储器1204还包括具有第三物理页1222的第二部分1220。数据存储设备1202配置为将长码字编程至第一部分1210的多个物理页且稍后将存储的数据复制至第二部分1220。
数据存储设备1202可以是存储卡,诸如安全数字 miniSD.TM卡(特拉华州威尔明顿市的SD-3C LLC的商标)、MultiMediaCard.TM(MMC.TM)卡(维吉尼亚州阿林顿市的JEDEC固态技术协会的商标)或CF)卡(加利福尼亚州米尔皮塔斯市的SanDisk公司的商标)。作为另一例子,数据存储设备1202可以是主机设备1230中的嵌入式存储器,诸如(维吉尼亚州阿林顿市的JEDEC固态技术协会的商标)和eSD,作为例示性例子。
主机设备1230可以配置为提供要存储在数据存储设备1202处的诸如数据页1232的数据或请求要从数据存储设备1202读取的数据。例如,主机设备1230可以包括移动电话、音乐或视频播放器、游戏控制台、电子书阅读器、个人数字助理(PDA)、诸如膝上型计算机或笔记本型计算机的计算机、任何其它电子设备或其任何组合。主机设备1230可以根据一个或多个协议而与数据存储设备1202通信,该一个或多个协议规定在主机设备1230将数据发送至数据存储设备1202之后,主机设备1230抑制将下一数据发送至数据存储设备1202,直至主机设备1230接收到先前数据已存储在存储器1204处的确认。
存储器1204可以包括具有SLC部分或分区(例如,第一部分1210)和MLC部分或分区(例如,第二部分1220)的快闪存储器。第一物理页1212和第二物理页1214每个可以包括每SLC单元存储单个位的诸如SLC单元的存储元件。第三物理页1222可以包括每单元存储多个位的诸如MLC单元的存储元件。每一MLC单元可以包括与诸如第三物理页1222内的第一逻辑页1224和第二逻辑页1226的多个逻辑页对应的位值。
控制器1206配置为在数据存储设备1202操作地耦接至主机设备1230时从主机设备1230接收数据页1232。控制器1206配置为开始编码操作来编码数据页1232。编码操作产生具有第一部分1240和第二部分1242的第一编码的数据。
数据存储设备1202配置为将第一编码的数据的第一部分1240存储到第一物理页1212。在将第一部分1240存储到第一物理页1212之后,数据存储设备1202开始将第一编码的数据的第二部分1242存储到第二物理页1214。例如,第一编码的数据的第一部分1240可以对应于图11的第一码字1130的第一部分1136,且第一编码的数据的第二部分1242可以对应于第一码字1130的第二部分1138和第三部分1140。
在将第一编码的数据存储到第一部分1210之后,数据存储设备1202配置为将第一编码的数据的第一部分1240的表示1262从第一物理页1212复制至第三物理页1222内的第一逻辑页1224。数据存储设备1202还配置为将表示1264从第二物理页1214复制至第三物理页1222内的第二逻辑页1226。例如,可以将要复制至存储器1204的第二部分1220的数据从存储器1204的第一部分1210写入存储器1204内部的锁存器集合,诸如图8的锁存器810。可以根据位至状态的一个或多个映射将存储在锁存器处的数据写入第三物理页1222,如关于图8-10所描述的。由于可能发生于存储器1204的第一部分1210中的一个或多个位错误,诸如代表性位错误1252,表示1262、1264可以分别不同于第一编码的数据的部分1240、1242。
控制器1206可以配置为在将第一部分1240存储到第一物理页1212之后但在将第二部分1242存储到第二物理页1214之前将指示出数据页1232已成功地存储在数据存储设备1202处的消息1248发送至主机设备1230。例如,控制器1206可配置为响应于存储第一编码的数据的第一部分1240而将消息1248发送至主机设备1230。存储器1204可以流水线式方式来存储第一编码的数据的第一部分1240和第一编码的数据的第二部分1242,响应于在第一流水线阶段中写入第一物理页1212但在随后的流水线阶段中写入第二物理页1214前发送消息1248。在需要在发送较多数据之前确认成功的数据存储的系统中,在存储第一部分1240之后发送消息1248使数据存储设备1202能够维持存储数据处理量,就像每一编码的数据字被存储到存储器1204的第一部分1210的单个页一样。
在操作期间,数据存储设备1202可以从主机设备1230接收数据页1232。控制器1206可以将数据页1232提供至ECC引擎1208的输入以产生第一编码的数据。控制器1206可以发送第一编码的数据的第一部分1240以写到第一物理页1212。在将第一编码的数据的第一部分1240写到第一物理页1212之后,控制器1206可以将消息1248发送至主机设备1230且开始将第一编码的数据的第二部分1242存储至第二物理页1214。
在将第一编码的数据的第一部分1240写入第一物理页1212之后但在完成将第一编码的数据的第二部分1242写入第二物理页1214之前可潜在地发生断电事件。响应于在此断电事件之后的电力恢复,控制器1206可以通过从第一物理页1212读取第一编码的数据的第一部分1240的表示1262且在ECC引擎1208处解码第一部分1240的表示1262来恢复原始数据页1232。为了例示,第一编码的数据的第一部分1240可以包括足够的冗余信息以使能够相比于在第三物理页1222处的相对较高的预期错误率以在第一物理页1212处的较低预期错误率来恢复数据页1232。当(第一编码的数据的第二部分1242的)丢失位的数目和在第一编码的数据的第一部分1240中出现的位错误的数目一起不超过ECC编码方案的错误校正能力时,控制器1206可以解码所取回的第一部分1240以恢复数据页1232。
图13描绘用于在将存储的数据复制至存储器1304的第二部分1320之前使用穿孔的码字将该数据存储在存储器1304的第一部分1310中的系统1300的实施例。系统1300包括配置为操作地耦接至主机设备1330的数据存储设备1302。例如,主机设备1330可以对应于图12的主机设备1230。
数据存储设备1302包括具有ECC引擎1308的控制器1306且还包括存储器1304(例如,NAND闪存)。存储器1304的第一部分1310(例如,充当二进制高速缓存的SLC部分)包括第一物理页1312,且存储器1304的第二部分1320(例如,MLC部分)包括第二物理页1322。第二物理页1322包括第一逻辑页1324且还包括相比于第一逻辑页1324具有较高可靠性的第二逻辑页1326。
控制器1306配置为开始第一编码操作来编码从主机设备1330所接收的数据页1332。例如,当控制器1306确定数据页1332要存储在第一逻辑页1362处时,控制器1306配置ECC引擎1308以编码数据页1332来产生第一编码的数据(例如,长码字),第一编码的数据具有足够的冗余以适应第一逻辑页1324的相对较低的可靠性。否则,当控制器1306确定数据页要存储在较高可靠性的页(例如,第二逻辑页1326)处时,控制器1306可以配置ECC引擎1308以产生具有较少冗余位的较短码字。例如,长码字可以是图11的第一码字1130,且较短码字可以是图11的第二码字1132。
第一编码的数据(即,长码字)可能超过第一逻辑页1362的长度且还可能超过第一物理页1312的长度(即,第一编码的数据将横跨遍及存储器1304的第一部分1310的多于一个页)。第一编码的数据还可以包括比校正第一物理页1312的预期错误率所需要的冗余位更多的冗余位。控制器1306可以穿孔第一编码的数据且将第一编码的数据的第一部分1340写到第一物理页1312'同时舍弃第一编码的数据的第二部分1342。例如,第一编码的数据的第一部分1340可以包括用户数据和奇偶校验位,且第一编码的数据的第二部分1342可以不包括用户数据,而是可以包括“溢出”奇偶校验位。
控制器1306配置为通过从第一物理页1312读取第一编码的数据的表示1350而从存储器1304的第一部分1310重新产生第一编码的数据。在ECC引擎1308处解码表示1350以校正可能已发生于第一物理页1312处的错误,诸如代表性位错误1352。控制器1306配置为在ECC引擎1308处开始第二编码操作来编码恢复的数据页。第二编码操作产生第二编码的数据1360。
使用与第一编码的数据(即,第一部分1340和第二部分1342)相同ECC方案产生第二编码的数据1360,且第二编码的数据1360具有实质上填充第一逻辑页1324的第一部分1362以及填充第二逻辑页1326的至少一部分的第二部分1364。因此,第二编码的数据1360比横跨遍及单个物理页1312的第一编码的数据的第一部分1340横跨遍及更多页(即,第一逻辑页1324和第二逻辑页1326的部分)。
与图12的系统对比,可以将数据临时存储在存储器1304的第一部分1310处而无需第一部分1310的多个页来存储长码字。而是,超过页长度的长码字被穿孔以存储在存储器1304的第一部分1310中,且重新产生1322以用于稍后存储在第二物理页1322处。
图14描绘用于将数据存储在存储器1404的第一部分1410中且在将数据存储到存储器1404的第二部分1420之前在存储器1404处产生另外的冗余数据系统1400的实施例。系统1400包括配置为操作地耦接至主机设备1430的数据存储设备1402。例如,主机设备1430可以对应于图12的主机设备1230。
数据存储设备1402包括具有ECC引擎1408的控制器1406,且还包括存储器1404(例如,NAND闪存)。存储器1404的第一部分1410(例如,充当二进制高速缓存的SLC部分)包括第一物理页1412,且存储器1404的第二部分1420(例如,MLC部分)包括第二物理页1422。第二物理页1422包括第一逻辑页1424且还包括具有比第一逻辑页1424更高的可靠性的第二逻辑页1426。
控制器1406配置为开始编码操作来编码从主机设备1430所接收的数据页1432。编码操作产生第一编码的数据1440且将第一编码的数据1440存储到第一物理页1412。第一编码的数据1440具有不超过第一物理页1412的大小的大小。在其它实施例中,第一编码的数据1440可以具有超过第一物理页的大小的大小,且控制器1406可以以与图13的控制器1306类似的方式来穿孔第一编码的数据1440以符合在单个页内。
存储器1404包括冗余数据产生器电路1472,冗余数据产生器电路1472配置为接收第一编码的数据1440的表示1450(表示1450可以包括一个或多个错误,诸如代表性位错误1452)且产生冗余数据1474。例如,冗余数据产生器电路1472可以包括重复编码电路,该重复编码电路配置为通过复制第一编码的数据1440的表示1450的至少一部分来产生冗余数据1474。或者,或另外,冗余数据产生器电路1472可以配置为实施一个或多个复杂编码技术(与重复编码相比)以产生冗余数据1474。将冗余数据1474与表示1450相加、串接或以其它方式组合以产生存储到第二物理页1422的第二编码的数据1460。
第二编码的数据1460具有实质上填充第一逻辑页1424的第一部分1462及填充第二逻辑页1426的至少一部分的第二部分1464。因此,第二编码的数据1460比横跨遍及单个第一物理页1412的第一编码的数据1440横跨遍及更多页(即,第一逻辑页1424和第二逻辑页1426的部分)。
与图12的系统对比,系统1400使用单个物理页(即,第一物理页1412)以高速缓存第一编码的数据1440。例如,ECC引擎1408可以编码接收的数据页1432以具有不超过第一物理页1412的页大小的码字长度。或者,ECC引擎1408可以编码接收的数据页1432以具有超过第一物理页1412的页大小的码字长度(亦即,长码字),且可以以与图13的系统类似的方式来穿孔该码字,使得仅第一部分存储在第一物理页1412处,而穿孔的部分被丢弃。
然而,与图13的系统对比,将信息从存储器1404的第一部分1410(例如,SLC二进制高速缓存)复制至存储器1404的第二部分1420(例如,MLC分区)完全在存储器1404内进行而不涉及控制器1406。结果,避免了将由从存储器1404至控制器1406以及从控制器1406回到存储器1404的数据传送引起的延时。
图15描绘用于使用不同ECC方案以编码要缓存在存储器1504的第一部分1510(例如,SLC部分)处的数据以及编码要存储在存储器1504的第二部分1520(例如,MLC部分)处的数据来存储数据的系统1500的实施例。系统1500包括配置为操作地耦接至主机设备1530的数据存储设备1502。例如,主机设备1530可以对应于图12的主机设备1230。
数据存储设备1502包括具有ECC引擎1508的控制器1506,且还包括存储器1504(例如,NAND闪存)。存储器1504的第一部分1510(例如,充当二进制高速缓存的SLC部分)包括第一物理页1512,且存储器1504的第二部分1520(例如,MLC部分)包括第二物理页1522。第二物理页1522包括第一逻辑页1524且还包括具有比第一逻辑页1524更高的可靠性的第二逻辑页1526。
控制器1506配置为开始第一编码操作来编码从主机设备1530所接收的数据页1532以写到存储器1504的第一部分1510。第一编码操作包括配置ECC引擎1508以根据第一ECC方案来产生第一编码的数据1540。第一编码的数据1540可以包括足够的冗余以使能够基于第一物理页1512的可靠性来恢复数据页1532。第一编码的数据1540可以调整大小(size)以横跨存储器1504的第一部分1510的单个页(即,第一编码的数据1540的部分不存储到除了第一物理页1512以外的页)。
在将第一编码的数据1540存储到第一物理页1512之后,可以从第一物理页1512读取第一编码的数据1540的表示1550,且将表示1550提供至控制器1506。由于一个或多个位错误(诸如代表性位错误1552)的存在,表示1550可能不同于第一编码的数据1540。控制器1506配置为致使ECC引擎1508解码表示1550来恢复数据页1532。
控制器1506配置为在ECC引擎1508处根据第二ECC方案来编码已恢复的数据页1532。例如,当控制器1506确定数据页1532要存储在第一逻辑页1524处时,控制器1506配置ECC引擎1508以编码数据页1532来产生第二编码的数据1560(例如,长码字),第二编码的数据1560具有足够的冗余以适应第一逻辑页1524的相对较低的可靠性。
第二编码的数据1560(即,长码字)可以超过第一逻辑页1524的长度。第二编码的数据1560的第一部分1562可以实质上填充第一逻辑页1524,且第二编码的数据的第二部分1564可以填充第二逻辑页1526的至少一部分。因此,第二编码的数据1560比横跨遍及单个物理页1512的第一编码的数据1540横跨遍及更多页(即,第一逻辑页1524和第二逻辑页1526的部分)。
图16例示包括写入编码的数据的多个部分及从该多个部分中的单个部分恢复数据的方法的一个实施例。该方法可以在具有包括第一物理页和第二物理页的多个物理页的数据存储设备中进行。例如,该方法可以在图12的数据存储设备1202中进行。
在1602处,接收要存储在数据存储设备中的数据页。当数据存储设备操作地耦接至主机设备时,可以从主机设备接收数据页。例如,数据存储设备1202可以物理地或无线地耦接至主机设备1230。数据存储设备1202可以从主机设备1230接收数据页1232。
在1604处,开始编码操作以编码数据页。编码操作产生第一编码的数据。例如,第一编码的数据可以对应于图11的第一码字1130。
在1606处,将第一编码的数据的第一部分存储到第一物理页。在1608处,开始将第一编码的数据的第二部分存储到第二物理页。第一编码的数据的第二部分可以仅包括奇偶校验位。例如,数据存储设备可以包括具有单级单元(SLC)部分和多级单元(MLC)部分的快闪存储器。第一物理页和第二物理页可以位于SLC部分(例如,二进制高速缓存)中用于存储接收的数据,直至接收的数据被复制至闪存的多级单元(MLC)部分中的第三物理页。
可以响应于存储第一编码的数据的第一部分而将诸如图12的消息1248的消息发送至主机设备。该消息可以指示出数据页已成功地存储在数据存储设备处。可以在完成存储第一编码的数据的第二部分之前发送该信息。可在存储第二部分之前发送该消息,因为数据页的存储的第一部分具有足够的冗余以根据第一物理页的可靠性来恢复数据页。
在1610处,开始解码操作以恢复数据页。例如,可以响应于在完成写入第一编码的数据的第二部分之前的断电事件之后的电力恢复而开始解码操作。解码操作使用从第一物理页所读取的第一编码的数据的第一部分的表示而不使用来自第二物理页的任何数据。
在经由解码操作恢复数据页之后,可以开始第二编码操作以编码该数据页。第二编码操作可以产生第二编码的数据,并且第二编码的数据的第一部分可以存储到第三物理页。例如,第二编码的数据的第一部分可以是存储在图12的第三物理页1222内的第一逻辑页1224中的第一部分1240的表示1262。可以将第二编码的数据的第二部分存储到第三物理页内的第二逻辑页,诸如存储在图12的第二逻辑页1226中的第二部分1242的表示1264。
第一编码的数据可以具有超过第一物理页的大小的长度,且第二编码的数据可以具有超过第一逻辑页的大小的长度。如关于图11-12所描述的,因为第一逻辑页可能具有比第二逻辑页更低的可靠性,所以可以使用另外的奇偶校验位以编码数据页,致使码字具有超过第一逻辑页及第一物理页的大小的长度。
图17例示包括在存储器裸片内产生另外的冗余数据的方法的一个实施例。该方法可以在具有控制器及存储器裸片的数据存储设备中进行,其中控制器包括错误校正编码(ECC)引擎且存储器裸片包括多个物理页,这些物理页包括第一物理页和第二物理页。例如,该方法可以在图14的数据存储设备1402中进行。
在1702处,接收要存储在数据存储设备中的数据页。当数据存储设备操作地耦接至主机设备时,从主机设备接收数据页。例如,数据存储设备1402可以物理第或无线地耦接至主机设备1430。数据存储设备1402可以从主机设备1430接收数据页1432。
在1704处,可以在ECC引擎处开始编码操作以编码数据页。编码操作产生第一编码的数据,诸如图14的第一编码的数据1440。在1706处,在存储器裸片处将第一编码的数据的至少一部分存储到第一物理页。
在1708处,可以在存储器裸片处产生第二编码的数据。可以通过从第一物理页读取第一编码的数据的部分的表示(诸如图14的表示1450)且基于第一编码的数据的部分的表示在存储器裸片处产生冗余数据来产生第二编码的数据。
例如,可以在图14的冗余数据产生器电路1472处产生冗余数据。可以通过复制第一编码的数据的部分的表示的至少一部分而在存储器裸片处产生冗余数据。在1710处,将第二编码的数据存储到第二物理页。
例如,可以使用SLC二进制高速缓存来临时存储码字。为了例示,可以将第一编码的数据存储到快闪单级单元(SLC)页处的第一物理页,且可以将第二编码的数据存储到多个快闪多级单元(MLC)逻辑页处的第二物理页。因为冗余数据在存储器裸片处产生,所以可以避免控制器涉及(和由于从存储器裸片至控制器并回到存储器裸片的数据传送引起的相应延迟)。
图18例示将数据写到存储器的方法的一个实施例。该方法可以在具有多个物理页(例如,第一物理页和第二物理页)的数据存储设备中进行。
在1802处,接收要存储在数据存储设备中的数据页。当数据存储设备操作地耦接至主机设备时,从主机设备接收数据页。例如,数据页可以是从图13的主机设备1330接收的数据页1332。作为另一例子,数据页可以是从图15的主机设备1530接收的数据页1532。
在1804处,开始第一编码操作以编码数据页。第一编码操作产生第一编码的数据。例如,可以在图13的ECC引擎1308处进行第一编码操作。作为另一例子,可以在图15的ECC引擎1508处进行第一编码操作。
在1806处,将第一编码的数据的至少一部分存储到第一物理页。可以将所有第一编码的数据存储到第一物理页,诸如图15的第一编码的数据1540。或者,第一编码的数据可以包括第一部分和第二部分,诸如图12的部分1240-1242或图13的部分1340-1342。可以将第一部分存储到第一物理页且可以丢弃第二部分。
在1808处,解码从第一物理页读取的第一编码的数据的部分的表示以恢复数据页。例如,可在图13的ECC引擎1308处解码表示1350。作为另一例子,可在图15的ECC引擎1508处解码表示1550。
在1810处,开始第二编码操作以编码数据页。第二编码操作产生第二编码的数据。例如,可在图3的ECC引擎1308处进行第二编码操作以产生第二编码的数据1360。作为另一例子,可在图15的ECC引擎1508处进行第二编码操作以产生第二编码的数据1560。
在1812处,将第二编码的数据存储到第二物理页。第二编码的数据比第一编码的数据的该部分横跨遍及更多页。可以将第一编码的数据的该部分存储到比第二物理页更可靠的快闪页处的第一物理页。例如,在二进制高速缓存实施中,可以将第一编码的数据的该部分存储到快闪单级单元(SLC)页处的第一物理页,且可以将第二编码的数据存储到多个快闪多级单元(MLC)逻辑页处的第二物理页。
在一些实施例中,第一编码操作使用与第二编码操作相同的错误校正编码(ECC)方案。例如,图13的数据存储设备1302使用相同的ECC方案编码第一编码的数据1340和第二编码的数据1360。在其它实施例中,第一编码操作使用第一错误校正编码(ECC)方案且第二编码操作使用不同于第一ECC方案的第二ECC方案。例如,图15的数据存储设备1502使用不同的ECC方案以编码第一编码的数据1540以及编码第二编码的数据1560。
将存储容量匹配于页可靠性
用于适应不相等的页可靠性的另一技术包括将较多信息存储在较可靠的页上和将较少信息存储在较不可靠的页上。可以将不同码具有相同码长度但可能具有不同码率的多级编码(MLC)方案用于字线的不同页。图5和图6中示出此MLC方案的串接码字至字线的页中的两个可能的映射。可以针对这些方案来修改闪存管理,因为不同的页存储不同量的信息。
在一个替代技术中,每页可以存储相同量的用户数据(例如,8KB),但是可以存储不同量的管理数据、控制数据或任何其它侧(side)信息。可以存储在字线的较可靠页(其由于将较少冗余用于用户数据而将具有较高存储容量)上的侧信息的例子是统计信息,诸如关于存储的数据或关于字线的单元电压分布的统计信息。可以将此侧信息用于调整读取电平、改进错误校正能力、管理数据的目的、一个或多个其它目的或其任何组合。管理数据、控制数据或侧信息可以与用户信息分离地被编码且无需与同一码字内的用户信息一起被编码。
利用可靠的页中的一些冗余单元进行修整
可以通过将较可靠的页的增加的存储容量(由于用于编码用户数据的较少奇偶校验位引起的增加的存储容量)用于修整遍及编程的状态的概率分布来处理不相等的页可靠性。可以将概率分布的适当修整用于耐久性增强、错误率极低、“噪声”减轻或其任何组合。因为MLC字线的较可靠的页需要较少的ECC冗余以便提供与MLC字线的较不可靠的页相同的可靠性,所以可以将较可靠页中的未使用的冗余用作“修整”冗余。“修整”冗余可以使能够引起遍及编程的状态的指定的非均匀概率分布。例如,可以较不频繁地编程高状态和低状态,这又将减少单元的磨损且减轻某些编程干扰效应。
图19例示使用基于页可靠性的修整冗余来存储数据的例子1900。可以在诸如闪存的存储器处接收包括表示第一数据(数据1)的位的第一组1902和表示第二数据(数据2)的位的第二组1904的数据。第一组1902和第二组1904的每个可以包括要存储在MLC存储器的单个字线处的N个位。
对位的第二组1904进行修整编码操作1910以产生位的第三组1916。位的第二组1904可能已被编码成使得“0”位值出现于一位位置处的概率(p0)实质上等于“1”位值的概率(p1),例示为位的第二组1904的位值的均匀概率分布1912。均匀概率分布1912被描绘为条形图,该条形图将“0”位值的概率例示为被标记为“p0”的条的高度,且将“1”的概率例示为被标记为“p1”的条的高度。变换1913在位的第三组1916中产生位值的非均匀概率分布1914。非均匀概率分布例示位的第三组1916中“0”位的概率大于“1”位的概率。
位的第三组1916具有M个位(M>N)且例示为附加至位的第二组1904的另外的位(修整奇偶校验)1918。然而,应理解,位的第三组1916无需包括具有附加的修整奇偶校验1918的位的第二组1904,而是可以由变换的数据位形成。
对位的第一组1902进行第一ECC编码操作1920,且对位的第三组1916进行第二ECC编码操作1922。经由存储操作1924将从第一ECC编码操作1920得到的被例示为具有附加的第一ECC奇偶校验位(ECC奇偶校验1)的第一数据(数据1)的数据存储到第一逻辑页1932。经由存储操作1924将从第二ECC编码操作1922得到的例示为第二数据(数据2)、修整奇偶校验1918和第二ECC奇偶校验位(ECC奇偶校验2)的数据存储到第二逻辑页1936。
因为第一逻辑页1932具有比第二逻辑页1936的第二错误率1938大的第一错误率1934,所以可用比保护第二数据更多的ECC奇偶校验来保护第一数据。第一ECC奇偶校验位的位数目(P1)可以等于第二ECC奇偶校验的位数目(P2)和修整奇偶校验1918的位数目的总和。第二ECC奇偶校验可以基于第二错误率1938将与第一ECC奇偶校验基于第一错误率1934提供至第一数据的错误保护实质上相同的错误保护提供至第二数据。
第一逻辑页1932和第二逻辑页1936在诸如MLC存储器的物理页的存储元件组1930内。存储元件组1930包括M个存储元件,诸如闪存单元(例示为具有索引cl......cm的单元)。每一存储元件存储表示多个位的状态(s0、sl等等)。例如,第一存储元件c1具有表示用于第一逻辑页的第一位和用于第二逻辑页的第二位的状态s1。
通过增加“0”位的概率且降低“1”位的概率,修整编码操作1910影响存储元件组1930的状态的分布。虽然图19例示了两个逻辑页1932、1936,但其它实施可以包括三个或三个以上逻辑页。例如,具有M=8个状态存单元的闪存可以使用表5的格雷映射。
表5:对于具有类型2-2-3页可靠性的M=8的映射
每页可以存储8KB的用户数据,且具有1KB的冗余(即,字线包含8KB+lKB=9KB单元,1KB=1024字节)。关于图19和图20来描述可以如何将用户数据编码至字线的页中(例如,每页8KB)和如何分配冗余的例子。在图19的所示的例子中,对于较高页(即,比第二逻辑页1936较不可靠的第一逻辑页1932),将整个冗余区域用于ECC冗余。对于较可靠的较低页和/或中间页,将冗余区域用于ECC冗余和修整冗余两者,如关于图20所述。信息论分析示出为了对于所有页实现相同的可靠性,展现出仅是较高页的错误率的2/3的错误率的较低页和中间页仅需要(可用的1KB中的)约683B的冗余。结果,约341B的冗余可用于修整。
可如下利用可用冗余:首先用修整码来编码存储在较低页或中间页上的8KB的用户数据,该修整码将该用户数据映射到大小为8533B(=8KB+341B)的“修整的”字中,相比于原始用户数据,该字具有减小的“1”的占有比(或者,修整可以用于减小“0”的占有比)。然后,使用ECC编码器将“修整的”字编码为9KB的码字(8533B+683B)。如果用户数据是随机的(即,对于“0”和“1”的相等概率),则遍及8192B的用户数据的341B的修整冗余可以使能够将码字中“1”的占有比p平均地从50%减小至约38%(p=Hb -1(8192/8533)≌0.38,其中Hb(p)=-p·log2(p)-(1-p)·log2(1-p))。得到的遍及“修整的”单元的编程的状态的概率分布可以通过以下给出:P=[0.5·p20.5·(1-p)·p0.5·(1-p)·p0.5·(1-p)·(l-p)0.5·(1-p)·(l-p)0.5·(1-p)·p0.5·(1-p)·p0.5·p2]
=[0.07220.11780.11780.19220.19220.11780.11780.0722]
因为在此例子中ECC冗余单元未“被修整”,所以遍及这些单元的编程的状态的分布可以是实质上均匀的(U=[1/81/81/81/81/81/81/81/8])。因此,沿着字线的遍及编程的状态的总体分布可以是:
(8532/9216)·P+(684/9216)·U=[0.07610.11830.11830.18720.18720.11830.11830.0761]
因此,可以显著地降低对于两个极端状态(例如,表5的状态“Er”和“G”)的概率。最极端状态的降低的概率使能够减少单元磨损(且因此实现较高循环和数据保留性能)且减少编程干扰效应(且因此减小错误率)。
图20例示用于使用基于页可靠性的修整冗余来存储数据的系统。系统2000包括配置为操作地耦接至主机设备2030的数据存储设备2002。例如,主机设备2030可以对应于图12的主机设备1230。
数据存储设备2002包括具有修整编码器2008和ECC引擎2010的控制器2006。数据存储设备2002还包括存储器2004,诸如快闪多级单元(MLC)存储器。存储器2004包括诸如快闪MLC单元的存储元件2020和诸如代表性组2022的一个或多个存储元件组。为了例示,组2022可以是MLC字线,诸如代表性3位MLC字线2040。
修整编码器2008配置为接收具有“1”值和“0”值的第一分布的输入数据且产生具“1”值和“0”的修改的分布的输出数据。修整编码器2008可以配置为应用修整操作,该修整操作产生修整奇偶校验位,使得得到的输出数据(例如,附加了修整奇偶校验的输入数据)具有位值的非均匀概率分布。修整编码操作可以增加MLC存储器2004的物理页的各个单元将被编程至中间状态的可能性且可以降低MLC存储器2004的物理页的各个单元将被编程到最低状态或最高状态或其两者的可能性。例如,修整编码器2008可以配置为进行图19的修整编码操作1910。
控制器2006配置为从主机设备2030接收用户数据2032。用户数据2032包括将存储在MLC字线(WL)的较高页中的位的第一组2050(数据1)、将存储在MLC字线的中间页中的位的第二组2052(数据2)和将存储在MLC字线的较低页中的位的第三组2054(数据3)。较高页具有比中间页和较低页更高的错误率。
控制器2006配置为对第二组2052且对第三组2054但不对第一组2050进行修整编码操作。将第二组2052和第三组2054提供至修整编码器2008以分别产生修整的第二数据2056和修整的第三数据2058。修整的第二数据2056包括比第二组2052更多的位,且修整的第三数据2058包括比第三组2054更多的位。
控制器2006配置为将第一组2050提供至ECC引擎2010,略过修整编码器2008。ECC引擎2010应用第一ECC编码操作2012,第一ECC编码操作2012基于数据位的第一组2050来产生第一ECC奇偶校验(ECC奇偶校验1)以形成ECC编码的第一数据2060。控制器2006配置为将修整的第二组2056提供至ECC引擎2010以应用第二ECC编码操作2014,第二ECC编码操作2014产生第二ECC奇偶校验(ECC奇偶校验2)以形成ECC编码的修整的第二数据2062。类似地,将修整的第三组2058提供至ECC引擎2010以产生第三ECC奇偶校验(ECC奇偶校验3)以形成ECC编码的修整的第三数据2064。
ECC编码的第一数据2060的第一ECC奇偶校验位包括比ECC编码的修整的第二数据2062的第二ECC奇偶校验位更多的位以提供用于MLC字线2040的较不可靠的较高页的较大错误校正能力。例如,第一ECC奇偶校验位可以使能够校正极高逻辑页中的高达第一数目的错误,且第二ECC奇偶校验位可以使能够校正中间逻辑页中的高达第二数目的错误。较高逻辑页中错误的数目超过该第一数目的第一概率可以实质上等于中间逻辑页中错误的数目超过该第二数目的第二概率。因为中间页和较低页对于与较高页相同的量的错误校正能力需要更少的奇偶校验,所以由修整编码器2008所产生的修整奇偶校验可以被包括在MLC字线2040的奇偶校验部分中。
控制器2006配置为将第一ECC编码的数据2060(即,第一组2050和对应于第一组2050的第一错误校正编码(ECC)奇偶校验位)发送至MLC存储器2004以存储在MLC存储器2004的物理页内所包含的第一逻辑页(例如,较高页)处。控制器2006配置为将ECC编码的修整的第二数据2062和ECC编码的修整的第三数据2064发送至MLC存储器2004以分别存储在MLC存储器2004的物理页内所包含的第二逻辑页(例如中间页)和第三逻辑页(例如较低页)处。
图21例示用于恢复已使用基于页可靠性的修整冗余而修整的数据(诸如用于读取和解码已由图20的系统编码和存储的数据)的系统。系统2100包括配置为操作地耦接至主机设备2130的数据存储设备2102。数据存储设备2102包括耦接至控制器2106的存储器2104,诸如快闪MLC存储器。存储器2104包括诸如快闪MLC单元的存储元件2120和诸如代表性组2122(例如,MLC字线)的一个或多个存储元件组。控制器2106包括ECC引擎2110和修整解码器2108。数据存储设备2102和主机设备2130可以分别对应于图20的数据存储设备2002和主机设备2030。
MLC存储器2104的代表性3位MLC字线2140被例示为具有可由控制器2106读取的较高页、中间页和较低页。控制器2106配置为从MLC存储器2104的物理页内的第一逻辑页、诸如3位MLC字线2140的较高页取回第一数据(数据1)和第一ECC奇偶校验位(ECC奇偶校验1)的第一表示2160。控制器2106配置为从MLC存储器的物理页内的第二逻辑页、诸如3位MLC字线2140的中间页取回修整的第二数据(数据2和修整奇偶校2)和第二ECC奇偶校验位(ECC奇偶校验2)的第二表示2162。控制器2106配置为从MLC存储器的物理页内的第三逻辑页、诸如3位MLC字线2140的较低页取回修整的第三数据(数据3和修整奇偶校验3)和第三ECC奇偶校验位(ECC奇偶校验3)的第三表示2164。
表示2160-2164可以包括一个或多个位错误,出于说明性目的该一个或多个位错误被指示为3位MLC字线2140的逻辑页的阴影线部分。控制器2106配置为在ECC引擎2110处开始第一表示2160的第一ECC解码操作2112以恢复第一数据2150。控制器2106配置为开始第二表示2162的第二ECC解码操作2114以恢复修整的第二数据2156且开始第三表示2164的第二ECC解码操作2114以恢复经修整的第三数据2158。
控制器2106配置为对修整的第二数据2156开始修整解码操作以产生第二数据2152且对第三修整的数据2158开始修整解码操作以产生第三数据2154。第二数据2152具有比修整的第二数据2156更少的位,且第三数据2154具有比修整的第三数据2154更少的位。修整解码操作在修整解码器2108处进行且配置为在第二数据2152中产生位值的均匀概率分布并在第三数据2154中产生位值的均匀概率分布。控制器2106可以配置为将第一数据2150、第二数据2152和第三数据2154作为用户数据2132提供至主机设备2130。
因为较高页具有比中间页和较低页更高的错误率,所以第一ECC奇偶校验包括比第二ECC奇偶校验更多的位且比第三ECC奇偶校验更多的位。例如,第一ECC奇偶校验可以使能够校正第一表示2160中的高达第一数目的错误,且第二ECC奇偶校验可以使能够校正第二表示2162中的高达第二数目的错误,其中该第一数目大于该第二数目。通过为较不可靠的较高页提供较多奇偶校验且为较可靠的中间页提供较少奇偶校验,第一表示2160中错误的数目超过该第一数目的第一概率可以实质上等于第二表示2162中错误的数目超过该第二数目的第二概率。结果,中间逻辑页和较低逻辑页中的每个可以具有与较高逻辑页相同的具有不可校正的错误的机会,而字线中的由于减少的奇偶校验引起的额外的空间可以用于修整数据以降低MLC存储器2104处的磨损和/或编程干扰效应。
图22例示用于使用基于页可靠性的修整冗余来写入数据的方法的特定实施例。写入数据的方法可在具有快闪多级单元(MLC)存储器的数据存储设备中进行。例如,该方法可以由图20的控制器2006进行。
在2202处,接收包括位的第一组及位的第二组的数据。例如,位的第一组可以是第一数据2050且位的第二组可以是图20的第二数据2052。
在2204处,对位的第二组开始修整编码操作以产生位的第三组。例如,位的第三组可以是修整的图20的第二数据2056。位的第三组具有比位的第二组更多的位。修整编码操作配置为产生位的第三组中的位值的非均匀概率分布。
在2206处,将位的第一组及对应于位的第一组的第一错误校正编码(ECC)奇偶校验位(例如,图20的ECC编码的第一数据2060)存储到MLC存储器的物理页内的第一逻辑页,且将位的第三组及对应于位的第三组的第二ECC奇偶校验位(例如,ECC编码的修整的图20的第二数据2062)存储到MLC存储器的物理页内的第二逻辑页。
第一逻辑页可以与第一错误率相关联,且第二逻辑页可以与小于第一错误率的第二错误率相关联。第一ECC奇偶校验位包括比第二ECC奇偶校验位更多的位。例如,图20的3位MLC字线2040的较高逻辑页中的ECC奇偶校验1包括比中间逻辑页中的ECC奇偶校验2更多的位。
可以确定ECC奇偶校验位,使得每一逻辑页具有不可校正错误的近似相等的可能性。例如,第一ECC奇偶校验位可以使能够校正第一逻辑页中的高达第一数目的错误,且第二ECC奇偶校验位可以使能够校正第二逻辑页中的高达第二数目的错误。第一逻辑页中错误的数目超过该第一数目的第一概率可以实质上等于第二逻辑页中错误的数目超过该第二数目的第二概率。
在一些实施例中,修整编码操作增加了MLC存储器的物理页的各个单元将被编程至中间状态的可能性,且减低了MLC存储器的物理页的各个单元将被编程至最低状态的可能性。在一些实施例中,修整编码操作增加了MLC存储器的物理页的各个单元将被编程至中间状态的可能性,且减低了MLC存储器的物理页的各个单元将被编程至最高状态的可能性。通过减小MLC单元被编程至最低状态(例如,表5中的“Er”)和/或最高状态(例如,表5中的“G”)的可能性,可以减小对MLC单元的单元磨损量且可以延长MLC单元的可用寿命。
图23例示用于读取已使用基于页可靠性的修整冗余而修整的数据的方法的特定实施例。读取数据的方法可以在具有快闪多级单元(MLC)存储器的数据存储设备中进行。例如,该方法可以由图21的控制器2106进行。
在2302处,读取存储元件组以取回在MLC存储器的物理页内的第一逻辑页处的位的第一组和第一ECC奇偶校验位的第一表示,并取回位的第三组和第二ECC奇偶校验位的第二表示。所取回的第二表示位于MLC存储器的物理页内的第二逻辑页处。例如,可从图21的MLC存储器2104读取第一表示2160和第二表示2162。
在2304处,开始第一表示的第一ECC解码操作以恢复位的第一组。例如,第一ECC解码操作可以是图21的第一解码操作2112。
在2306处,开始第二表示的第二ECC解码操作以恢复位的第三组。例如,第二ECC解码操作可以是图21的第二解码操作2114,第二解码操作2114比使用ECC奇偶校验1来解码数据1的第一解码操作2112使用更少的奇偶校验位(例如,ECC奇偶校验2)来解码更长的字(例如,数据2和修整奇偶校验2)。
在2308处,开始对位的第三组的修整解码操作以产生位的第二组。位的第三组具有比位的第二组更多的位。修整解码操作配置为在位的第二组中产生位值的均匀概率分布。
第一逻辑页可以与第一错误率相关联,且第二逻辑页可以与小于第一错误率的第二错误率相关联。因此,第一ECC奇偶校验位可以包括比第二ECC奇偶校验位更多的位。第一ECC奇偶校验位可以使能够校正第一表示中的高达第一数目的错误,且第二ECC奇偶校验位可以使能够校正第二表示中的高达第二数目的错误。因此,第一表示中错误的数目超过该第一数目的第一概率可以实质上等于第二表示中错误的数目超过该第二数目的第二概率。
软位
公开用于分离地读取MLC字线的每一页以减少在单个页的读取期间的感测操作的数目的方法。作为副产品,相比于将数据从若干锁存器传送至控制器,比如在一个码字的数据位于若干锁存器中的交错存储方案中,可以将来自单个锁存器的数据从闪存发送至控制器。除了节约感测时间以外,还可以避免由控制器将“改变列”命令发送至闪存导致的延迟和由闪存进行改变列命令导致的延迟。因此,在随机读取(相对于顺序的存储器地址的串行读取)期间,相比于交错方案,可以减少读取延时。
可以通过减少感测时间来实现减少读取延时。即使在快闪存储器的可靠性由于磨损而退化的情况下,仍可以维持读取单个逻辑页以取回数据(相对于读取MLC物理页处的所有逻辑页)的能力。
如果以较高分辨率来读取闪存,则可以改进软输入解码器的校正能力。从每一闪存单元上的阵列读取较高分辨率数据,其被表示为软位(SB)信息。因为电压分辨率(resolution)改进(例如,以较大精确度来估计读取阈值电压),所以表示读取分辨率所需要的软位的数目增加。因此,可以进行更多感测操作且可以将更多数据字节从闪存锁存器传送至控制器,以便使用高读取分辨率以增加解码器的校正能力。较多感测操作和传送至控制器的数据可以导致随机读取被延迟以及闪存的读取处理量降低。
然而,当将使用软位来进行随机读取而不显著地影响校正能力时,可以减少感测操作的数目和传送时间。仍可经由逐页读取来操作闪存,而对于每一页分离地获得软位。例如,使用以上在表5中所描绘的映射,可以彼此独立地读取每个逻辑页(较低/中间/较高)且可以使用增加的读取分辨率,这又得到软输入解码器的相应较高校正能力。
如果应用在随机读取之间请求顺序的读取操作集合(例如,在读取占据至少一个完整字线的大文件时的固态驱动器(SSD)应用中),则在假定对顺序的读取保持逐页读取的相同校正能力的情况下,可以将每读取单元减少数目的软位从闪存发送至控制器。当软位表示不均匀的电压区域/间隔时,用于减少软位的数目的方法可能特别有用。在一个特定实施例中,对于顺序读取和逐页读取两者保持用于软位的相同位样式,使能够简化软输入解码器初始化表,且使包括这两种此模式的系统的实施能够比对于顺序读取使用与对于逐页读取不同的软位样式较不复杂。
从MLC阵列的闪存单元读取较高分辨率的传统系统常常获取所有阵列页上的数据。例如,对于具有每单元三个位(3-BPC)的读取的MLC闪存,可以对七个读取阈值中的每个采取另外两个感测操作以获得两个软位。用稍微低于读取阈值的读取电压来进行第一感测操作(用于七个读取阈值中的每个),且用稍微高于读取阈值的读取电压来进行第二感测操作。可以使用21个感测操作的集合,以便对控制器获得较高分辨率信息。在3-BPC例子中,可以将总共五个页从闪存发送至控制器,以便解码数据。这五个页包括用于硬位(HB)的三个页和用于软位的两个页。因为21个阈值定义22个电压间隔且在22个不同的间隔之间区分需要多于4位,所以使用五个页。22个选项(即,图28所示的由21个阈值定义的22个电压间隔)中的每个表示关联于每一单元的电压带。在数据被存储使得每一码字驻留于仅一个逻辑页中的情况下,即使需要这些逻辑页中的仅一个,发送至控制器的数据仍包括足以解码所有三个逻辑页的位。
在一个特定实施例中,可以忽视关于在电压窗内每一单元所驻留的确切电压带的信息,且保留关于读取阈值仅在其所驻留的状态内的位置的信息。读取状态的电压带可以被划分为电压区域,其中用在“状态的中间”附近的电压阈值所读取的单元被视为高度可靠而在较更靠近相邻状态之间的重叠部分的区域中所读取的存储器单元较不可靠。电压间隔(其可以包括若干电压带)越靠近单元的相邻状态之间的重叠区域,与该单元相关联的所有位的可靠性的恶化越大。
图24描绘具有如表5所描述的映射的较高页的实施例2400,其中对每一状态定义三个可靠性间隔。第一表2402例示逻辑页的状态(Er-G)、与每一状态相关联的硬位(HB)和另外的感测的位(S1-S4)。用稍微低于用于产生硬位的读取电压的读取电压来进行感测Sl。因此,从0至1和从1至0的转变为硬位的转变中的稍低的转变(向在)。用稍微高于用于产生硬位的读取电压的读取电压来进行感测S2。因此,从0至1和从1至0的转变为硬位的转变中的稍高的转变(向右)。用稍微低于S1的读取电压来进行感测S3。因此,从0至1和从1至0的转变为S1的转变中的稍低的转变(向左)。用稍微高于S2的读取电压来进行感测S4。因此,从0至1和从1至0的转变为S2的转变中的稍高的转变(向右)。第二表2404例示使用感测的位S1-S4产生的软位SB1-SB2。注意,两个软位SB1、SB2包含相关的可靠性信息,且相对于使用4个感测Sl-S4,仅使用这两个软位不会影响软低密度奇偶校验检验(LDPC)解码器的性能。还应注意,围绕每一转变点的五个感测将完整的电压范围划分为16个区段,因此,原则上可以将五个感测映射至四个页而非第一表2402所描绘的五个页。第三表2406示出响应于读取较高页而发送至控制器的得到的数据(HB、SBl、SB2)。
在图24中,仅读取较高页,且在闪存锁存器中产生用于较高页的两个软位并将这些软位传送至控制器以由解码器处理。三个页(HB、SBl、SB2)从闪存传送至控制器,而非从单元所读取的五个位(HB、S1、S2、S3、S4)。应注意,关于读取的单元的确切电压带的信息丢失。然而,相比于关于确切电压带的信息被保留的方案,仅驻留于较高页中的码字的校正能力稍微受到影响。相比于读取具有软位的所有逻辑页(例如,较高、中间和较低)的传统系统,当读取具有软位的单个逻辑页时,可以将感测操作的数目从35减少到15。例如,可以使用三个感测操作(在状态A和B之间的转变时的一个感测操作、在状态C和D之间的转变时的一个感测操作以及在状态E和F之间的转变时的一个感测操作)而非七个感测操作(在八个状态Er、A、......、G中的每个之间的一个感测操作)来读取硬位。
传送仅仅两个软位页SBl和SB2而非四个页S1-S4的错误校正能力影响非常小。例如,如果分配至较高页中的码字的奇偶校验为大约10%,则相比于传统方案,错误校正能力在单元错误率(CER)方面可以降低达少于0.2%。在BICM解码器下的理论校正能力(香侬界限(Shannon Bound))在CER方面可以在4%以上。应注意,在由于感测操作和数据传送引起的总延迟的减少方面的增益相对大,而系统的校正能力的可能损失相对小。由于总延迟的降低而出现的性能增益包括:感测操作增益,其在此特定实施例中达到约2的因子;以及在从闪存传送至控制器的较低数目的数据页方面的增益,其在此特定实施例中为40%。考虑设计为对随机存取是主要操作模式的应用进行操作的闪存,这样的增益是显著的。
图24所示的方案的检验揭示由软位样式“10”指示的中等可靠性由电压区域(或电压间隔组)组成,该电压区域由6个不同的电压带组成,因此得到特定单元的中等可靠性软位样式“10”不会公开该单元所驻留的确切电压带。然而,电压区域(或电压间隔组)信息足以使软输入解码器仅以微小的校正能力损失来解码置放置在较高页中的码字。
诸如图24所示的其中实际状态信息丢失的软位方案的另一优点是操作闪存阵列内部的加扰器/解扰器的能力,只要将解扰器仅应用于从逻辑页所读取的硬位而将软位在被读取时发送至控制器(例如,不对软位进行解扰)即可。在图30中例示配置为根据图24的软位方案来读取数据的数据存储设备的例子。
对于图25中的一个软位的情况提供与在图24中的对于两个软位所呈现的方案类似的方案。图25描绘用于较高页的逐页2-SB读取可靠性设置的实施例。第一表2502例示状态、感测的硬位(HB)和另外的感测的位(S1、S2)。第二表2504例示通过逻辑运算NOT(S1XORS2)产生的软位值。第三表2506描绘要发送至控制器的硬位值和软位值的映射。
对于一些应用命令,可以读取整个字线。为了获得与在逐页读取中的分辨率相同的分辨率,可以使用35个感测操作,如图26进一步详细描述的。然而,因为读取整个字线,所以在七个感测操作的集合而不是如图24中对于较高页所描绘的三个感测操作(和来自控制器的每单个命令的用于较低页和中间页的两个感测操作)中以移位操作35个感测操作。
因为每一感测操作集合中的第一感测操作比归因于相同命令使用每命令七个感测操作的连续感测操作可能需要更多时间,所以可以实现总感测时刻的减少。每一命令中的第一感测操作比随后的感测操作可能需要更多时间,因为感测电路内的电容器被充电以设置施加至单元的控制栅极的电压,且感测放大器电路被启动。
图26示出感测方案的实施例2600,该感测方案包括对于状态(Er、A、......、G)的单元分布和对于硬位的阈值读取电压(例如,电压AR、BR、......、GR)与用于另外的感测的位的阈值读取电压(例如,电压AR-ΔR、AR+ΔR)的图形描绘2602。第一表2604例示相邻阈值读取电压之间的每一电压间隔到六个位的集合的映射,该六个位包括三个硬位(HB1、HB2、HB3)和三个感测的软位(S1、S2、S3)。第二表2606例示在对感测的软位进行逻辑运算之后要发送到控制器的每一电压间隔到五个位的集合的映射。
图26所描绘的感测方案包括每单元六个位的样式,该样式表示单元所驻留的电压带。代替将每单元此六个位从存储器中的锁存器传送至控制器,可以在闪存锁存器内部使用NOT{XOR(S2,S3)}逐单元运算(如图27所示)然后将结果传送至控制器而将在表2604中被描绘为S2和S3的最后两个行统一成一个软位数据页。如图27所示,图26的表2604的位S1、S2、S3的第一表2702经由NOT{XOR(S2,S3)}运算2704被映射以产生在第二表2706所示的且对应于图26的表2606的软位SB1和SB2的软位SB1和SB2。
如图26所描绘的软位产生可以独立于硬位产生。因此,可以在与用于提供硬位的锁存器的数目相同或更少的锁存器中产生软位。例如,图26的软位产生可以使用与传统快闪存储器的数目相同的锁存器。图27例示具有11、10和00的对应代表性位样式的高可靠性电压区域、中等可靠性电压区域和低可靠性电压区域(每一电压区域由多个电压带组成)。应注意,这些样式(图27中)匹配于与在图24所描绘的逐页读取中所获得的系统的位样式。图27所提及的S2和S3对应于图26所呈现的S2和S3。即使图24对应于逐页读取且图27对应于顺序读取,图27中的SB1和SB2仍表示与图24中的位相同的可靠性。
即使图26中的(较高页的)硬位映射不同于图24中对于较高页硬位所呈现的映射,软位的表示仍保持相同,因为软位页独立于硬位页被读取。因此,可以独立于所选的映射方案而读取软位。
比较图27所描绘的方案与传统读取方案,相对于六个页,图27所描绘的方案引起将五个页从控制器传送至闪存,这对应于16%的传送时间减少。然而,如果对于在需要整个字线数据时的状况而选择逐页过程,则代替传送九个页(例如,进行35个感测操作,对于每一逻辑页传送三个页(即,一个HB和两个SB)且总共传送3x3=9个页),仅计算五个页,得到约44%的传送时间减少。
另外,在使用软位样式与软输入可靠性之间的相同变换来激活控制器中的解码器后,两个软位的同一集合可以服务所有三个逻辑页(较高、中间和较低)。因此,可以简化设置为独立地解码每个逻辑页中的软输入解码器的设计和实施。
当提供仅一个软位时,可以使用实质上类似的方法(例如,闪存的使能够用单个软位而不是两个软位进行操作的更可靠的条件)。图28例示提供单个软位的实施例2800。电压间隔v1至v22的图形描绘2802对应于存储元件的状态(例如,Er、A、......、G)和这些状态之间的区域。第一表2804例示感测的硬位(HB1、HB2、HB3)和软位(S1、S2)的映射。第二表2806例示这些硬位和要发送至控制器的单个软位(SB)的映射。图29描绘从两个感测的软位2902产生单个软位2906、比如通过NOT{XOR(S1,S2)}运算2904产生的图28的SB的实施例2900。
图28-29例示用于以与图26-27的两个软位的方式所读取的一个软位的方案。图28-29的方案提供与逐页读取相同的软位映射(例如,图25和图29中的软位具有相同的映射),以及还提供硬位读取和产生与软位读取和产生之间的独立性。例如,可以以对于每一硬位一致的方式来读取和产生软位。
具有一个和两个软位的关于图24-29所描绘和描述的例子并非限制性的,并且为了易于说明而提供。当每重叠区域的感测操作的数目是奇数时,可以将相同或类似的方法应用于每单元任何数目的位和软位。例如,在每单元两个位的实施中,9个感测操作使能够产生一个硬位和一个软位,15个感测操作使能够产生一个硬位和两个软位,且21个感测操作使能够产生一个硬位和三个软位。对于每单元四个位,45个感测操作使能够产生一个硬位和一个软位,且75个感测操作使能够产生一个硬位和两个软位。在使用作为偶数或奇数、均匀或非均匀的任何SB阈值感测的一般状况下,逐页软位读取的所公开的实施例仍然可行;然而,可能不能保证可以对逐页读取和顺序读取使用共同的软位样式表示。或者,单独地读取逐页软位可以独立于多个所选的感测操作。
图30描绘系统3000的一个特定实施例,系统3000包括可以操作地耦接到主机设备3030的数据存储设备3002。数据储存设备3002包括耦接到控制器3006的存储器3004,比如NAND闪存。控制器3006可以包括软输入错误校正编码(ECC)解码器3028。存储器3004包括存储元件3020、读取电路3008、锁存器3010和软位电路3012。软位电路3012使数据存储设备3002能够应用图24-29所描绘的方案中的任何一个或多个。
数据存储设备3002可以是存储卡,诸如安全数字 miniSD.TM卡(特拉华州威尔明顿市的SD-3C LLC的商标)、MultiMediaCard.TM(MMC.TM)卡(维吉尼亚州阿林顿市的JEDEC图态技术协会的商标)或(CF)卡(加利福尼亚州米尔皮塔斯市的SanDisk公司的商标)。作为另一例子,数据存储设备3002可以是主机设备3030中的嵌入式存储器,诸如(维吉尼亚州阿林顿市的JEDEC固态技术协会的商标)和eSD,作为例示性例子。
存储器3004包括多个存储元件3020,包括存储元件3020的组3022。例如,存储元件3020可以包括MLC单元。例如,存储器3004可以包括多级单元(MLC)闪存,且存储元件3020的组3022可以是MLC字线。
锁存器3010操作以锁存从存储元件3020的组3022、比如MLC字线读取的数据。例如,数据存储设备3002可以实施图26的软位方案,其中一个锁存器2010存储用于HBl的数据,第二锁存器2010存储用于HB2的数据,第三锁存器2010存储用于HB3的数据,第四锁存器2010储存用于S1的数据,第五锁存器2010存储用于S2的数据,且第六锁存器存储用于S3的数据。
软位电路3012操作以使用一或多个逻辑运算来操纵锁存器3010中的软数据位以减少用于作为数据3042而传送至控制器3006的软位的总数。例如,软位电路3012可以将XOR运算应用于来自两个锁存器的数据以产生软位数据,诸如应用NOT{XOR(S0,S1)}运算以产生软位SB1且应用NOT{XOR(S2,S3)}运算以产生软位SB2。软位电路3012可以对来自控制器3006的控制信息3040做出响应以将一或多个另外的逻辑运算应用于锁存器3010中的数据且将得到的数据提供至控制器3006。为了例示,响应于对来自组3022的第一逻辑页的数据的第一请求,读取电路3008可以用读取数据来填入锁存器3010,软位电路3012可以产生SB1数据,且HB数据和SBl数据被发送至控制器3006。响应于对组3022的同一逻辑页的另外的软位数据的第二请求(例如,当ECC解码使用HB数据和SB1数据而失败时),软位电路3012可以产生SB2数据且将SB2数据发送至控制器3006。
读取电路3008可操作以将读取阈值电压施加至组3022以从组3022的存储元件感测硬位数据和软位数据。例如,读取电路3008可以确定读取电压集合,将每个读取电压施加至组3022的存储元件,并确定硬位值或软位值(例如,通过将读取电压施加至NAND闪存单元的栅极以确定读取阈值是否超过NAND闪存单元的阈值电压)。
作为一个例子,可以使用可以以已知速率充电的电容器来施加读取电压。当电容器达到诸如图26中的电压AR的初始电压时,可以对电容器充电且可以感测组3022,此后,可以根据充电时间来进行另外的感测操作。为了例示,可以在已知充电时间之后将电容器从电压AR充电至电压BR,且可以在相同的已知充电时间之后将电容器从电压BR充电至电压CR。可以在第一感测操作集合期间产生硬位,在该第一感测操作集合期间,电容器从初始感测值(例如,电压AR)充电至最终感测值(例如,电压GR)。可以在一个或多个其它感测操作集合、比如从电压AR-ΔR至电压GR-ΔR的感测操作集合以及从电压AR+ΔR至电压GR+ΔR的另一感测操作集合期间感测软位。
当进行需要读取组3022中的所有硬位的顺序读取时,读取电路3008可操作以在图26所示的所有参考电压下、例如在电压AR、BR、CR、DR、ER、FR、GR下、在电压AR-ΔR、BR-ΔR、CR-ΔR、......、GR-ΔR下、在电压AR+ΔR、BR+ΔR、CR+ΔR、......、GR+Δ下、在电压AR-2ΔR、BR-2ΔR、CR-2ΔR、......、GR-2ΔR下和在电压AR+2ΔR、BR+2ΔR、CR+2ΔR、......、GR+2ΔR下进行感测。然而,当在存储器3004处接收到读取诸如对应于HB2的逻辑页的单个逻辑页的请求时,读取电路3008可以操作以在少于所有参考电压的电压下进行感测。例如,可以使用感测电压BR和FR而不使用感测电压AR、CR、DR、ER和GR来读取HB2。
注意,通常,硬位读取电压(AR、BR、CR、DR、ER、FR、GR)相等地间隔,但软位读取电压未均匀地分布,而是以硬位读取电压为中心。可以确定定义软位读取电压的放置的差异电压Δ的值以改进软位解码器的解码能力。
存储器3004还可以包括加扰器/解扰器3050。加扰器/解扰器3050可以包括配置为修改要存储于存储元件3020中的数据值的电路,比如通过应用这些数据值与线性回馈移位寄存器的输出XOR运算。加扰器/解扰器3050还可以配置为修改从存储元件3020读取的数据值以对在储存之前被加扰的数据进行解扰。
在操作期间,存储器3004可以接收对于存储在组3022中的数据的请求。在存储器3004中产生对应于诸如快闪MLC字线的代表性存储器单元的组3022的特定存储元件3024的位的集合3026。可以将位的集合3026作为一位而储存于锁存器3010中的一个或多个的中每一个中,该位对应于存储在该特定存储元件3024中的值。
位集合3026指示阈值电压间隔组。例如,位集合3026可以对应于图28的较高页的硬位(HB1)和软位SB。为了例示,位集合“11”可以对应于图28的电压间隔组v1、v4、v7和v10,且位集合“10”可以对应于电压间隔组v2、v3、v5、v6、v8、v9和v11。
特定存储元件3024的阈值电压对应于阈值电压间隔组内的阈值电压间隔中的一个。例如,如果特定储存组件3024具有在图28的电压间隔v4(即,状态A)内的阈值电压,则位集合3026指示阈值电压间隔组v1、v4、v7和v10。该阈值电压间隔组内的至少一个阈值电压间隔通过不在该阈值电压间隔组内的介入(intervening)阈值电压间隔而与该阈值电压间隔组内的另一阈值电压间隔分离。为了例示,阈值电压间隔组中的间隔v1和v4通过不在阈值电压间隔组内的区间v2和v3而分离。
作为由读取请求引起的锁存器3010中的数据传送的部分,将位集合3026作为数据3042发送至控制器3006。位集合3026可以包括对应于存储于特定存储元件中的值的第一硬位(例如,图28的HB1)和对应于该存储的值正确的可靠性的第一软位(例如,图28的SB)。
特定存储元件3024可以位于存储器3004的物理页内,该物理页包括第一逻辑页和第二逻辑页,比如存储图28的HB1的逻辑页和存储图28的HB2的逻辑页。特定存储元件3024的状态对应于多个硬位,多个硬位包括对应于第一逻辑页的第一硬位和对应于第二逻辑页的第二硬位。例如,特定存储元件3024可以具有图28所示的状态“A”,状态“A”对应于具有值“1”的第一硬位HB1和具有值“1”的第二硬位HB2。
可以响应于对读取第一逻辑页(例如,对读取图28的HB1)的请求而产生位集合3026。为了例示,当存储器3004接收对读取第一逻辑页的请求时,位集合3026包括第一硬位(例如,HB1),但不包括第二硬位(例如,HB2)。
作为从存储器3004所读取的数据的ECC解码操作的部分,将第一硬位和第一软位提供给软输入ECC解码器3028。第一软位可以指示阈值电压是否在阈值电压间隔组的阈值电压间隔中的任意一个的中心区域内。例如,在图28中,“1”的SB值指示阈值电压在电压范园v1、v4、v7、v10、v13、v16、v19和v22中的一个内,即分别在定义的状态Er、A、B、C、D、E、F和G中的一个的中心区域中,而不在相邻状态之间的重叠区域内。
可以响应于从控制器3006接收对于第一存储的数据的第一请求而将位的第一集合3026发送至控制器3006。在将位的第一集合3026发送至控制器3006之后,可以在存储器3004处从控制器3006接收对于与第一存储的数据对应的另外的信息的第二请求。可以在存储器3004处确定对应于特定存储元件3024的第二软位。例如,如果位的第一集合3026对应于硬位(HB)和图24的最终映射软位(SB1),则可以通过进行NOT{XOR(S3,S4)}运算来产生图24的第二软位SB2。
第二软位指示阈值电压是否在阈值电压间隔组的电压间隔中的任意一个的第二区域内。为了例示,图24所示的硬位(HB)对于状态Er-A具有“1”值、对于状态B-C具有“0”值且对于状态D-E具有“1”值。图24的软位SB1在最接近于状态A和B之间、状态C和D之间以及状态E和F之间的转变的电压间隔中具有“0”值。每一特定电压间隔的第二区域实质上以该特定电压区域间隔的中点为中心且不同于第一区域。例如,第二软位SB2指示一个阈值电压为位于与第一软位SB2相比更远离于状态A和B之间的转变、与第一软位SB2相比更远离于状态C和D之间的转变、且与第一软位SB2相比更远离于状态E和F之间的转变的电压间隔内。可以将第二软位值发送至控制器3006以提供用于辅助解码的另外的可靠性信息。
存储器3004可以配置为在逐页读取操作期间提供与在顺序读取操作期间提供的软位样式相同的软位样式以指示可靠性。例如,图25所示的软位样式包括第一软位SB1,第一软位SB1在与对应于页的硬位的每一转变相邻的电压间隔中具有“0”值(即,低可靠性),且在别处具有“1”值(即,高可靠性)。作为另一例子,图27所示的软位样式包括位集合SB1、SB2,其具有指示高可靠性的“11”值、指示中等可靠性的“10”值和指示低可靠性的“00”值。软位样式可以独立于位到状态的所选映射的方案。例如,基于与状态之间的转变的近接性而非取决于位到状态的具体映射来确定图25和图27的软位样式的软位值。
可以在存储器3004处通过将加扰器/解扰器3050应用于第一硬位而不将加扰器/解扰器3050应用于第一软位来对位集合进行解扰。例如,硬位可以指示特定存储元件3024的状态(或状态组),而软位可以指示硬位的可靠性(例如,存储元件3024与硬位值之间的转变的接近程度)。
图31例示使用软位来读取数据的方法的实施例。该方法可以在图30的数据存储设备3002中进行。在3102处,在存储器中产生对应于特定存储元件的位集合。位集合指示阈值电压间隔组。特定存储元件的阈值电压对应于该组内的阈值电压间隔中的一个。该组内的至少一个阈值电压间隔通过不在该组内的介入阈值电压间隔而与该组内的另一阈值电压间隔分离。
在3104处,将位集合发送至控制器。位集合包括对应于存储于特定存储元件中的值的第一硬位和对应于存储的值正确的可靠性的第一软位。
特定存储元件可以位于存储器的物理页内。该物理页包括第一逻辑页和第二逻辑页。特定存储元件的状态对应于多个硬位,多个硬位包括对应于第一逻辑页的第一硬位和对应于第二逻辑页的第二硬位。可以响应于读取第一逻辑页的请求而产生位集合。例如,当存储器接收读取第一逻辑页的请求时,位集合包括第一硬位,但不包括第二硬位。
控制器可以包括软输入错误校正编码(ECC)解码器,且作为从存储器所读取的数据的ECC解码操作的部分,可以将第一硬位和第一软位提供至软输入ECC解码器。第一软位可以指示阈值电压是否在阈值电压间隔组的阈值电压间隔中的任意一个的中心区域内。可以响应于来自控制器的对于第一存储的数据的第一请求而将位的第一集合发送至控制器。在将位的第一集合发送至控制器之后,可以在存储器处从控制器接收对于与第一存储的数据对应的另外的信息的第二请求。
响应于第二请求,可以在存储器处确定对应于特定存储元件的第二软位。第二软位可以指示阈值电压是否在阈值电压间隔组的电压间隔中的任意一个的第二区域内。每一特定电压间隔的第二区域实质上可以以该特定电压间隔的中点为中心,且第二区域不同于第一区域。将第二软位值发送至控制器以提供用于软输入ECC解码的另外信息。
虽然本文所描绘的各种被例示为块组件且以一般术语进行描述,但这些组件可以包括一或多个微处理器、状态机,或配置为使诸如图8的数据储存设备802的数据存储设备能够进行属于这些组件的特定功能的其它电路或其任何组合。例如,图8的控制器806可以表示物理组件,诸如控制器、状态机、逻辑电路,或用于指示映射电路812对锁存器810中的数据进行逻辑运算以修改或实质上均等化组件的组822处的页可靠性的其它结构。
可以使用被编程为产生用于指示映射电路812的控制信息840的微处理器或微控制器来实施控制器806。在一个特定实施例中,控制器806包括执行存储在存储器804处的指令的处理器。或者,或另外,可以将由处理器执行的可执行指令存储在不是存储器804的部分的分离的存储器位置处,诸如在只读存储器(ROM)(未示出)处。
在一个特定实施例中,数据存储设备802可以是配置为选择性地耦接至一个或多个外部设备的便携式设备。然而,在其它实施例中,数据存储设备802可以附接或嵌入于一个或多个主机设备内,诸如在便携式通信设备的外壳内。例如,数据存储设备802可以位于诸如无线电话、个人数字助理(PDA)、游戏设备或控制台、便携式导航设备或使用内部非易失性存储器的其它设备的封装的装置内。在一个特定实施例中,数据存储设备802包括非易失性存储器,诸如闪存(例如,NAND、NOR、多级单元(MLC)、划分的位线NOR(DINOR)、AND、高电容耦合比率(RiCR)、不对称无接触式晶体管(ACT)、或其他闪存)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、一次可编程存储器(OTP)或任何其它类型的存储器。
本文所描述的实施例的例示意图提供对各种实施例的一般理解。可以利用其它实施例且可以从本公开得到其它实施例,使得可以不脱离本发明的范围进行结构上和逻辑上的替代和改变。本公开意图覆盖各种实施例的任何和所有后续调整或变型。因此,公开内容和附图应被视为是例示性的而非限定性的。
上文所公开的主题应被视为例示性的而非限定性的,且所附权利要求意图覆盖落在本发明的范围内的所有这样的修改、增强和其它实施例。因此,在法律允许的最大程度上,本发明的范围应通过以下权利要求及其等效物的最宽许可解释来确定,而不应受到以上具体实施方式限定或限制。
Claims (28)
1.一种写入数据的方法,该方法包括:
在具有包括第一物理页和第二物理页的多个物理页的数据存储设备中进行:
接收要存储在数据存储设备中的数据页;
开始编码该数据页的编码操作,其中该编码操作产生第一编码的数据;
将该第一编码的数据的第一部分存储到第一物理页;
开始将该第一编码的数据的第二部分存储到第二物理页;以及
开始恢复该数据页的解码操作,其中该解码操作使用从第一物理页读取的第一编码的数据的第一部分的表示而不使用来自第二物理页的任何数据。
2.如权利要求1的方法,其中在数据存储设备操作地耦接到主机设备时,从主机设备接收该数据页。
3.如权利要求2的方法,还包括:响应于存储该第一编码的数据的第一部分,向主机设备发送消息,该消息指示该数据页已经成功地存储在该数据存储设备处,以及其中在完成该第一编码的数据的第二部分的存储之前发送该消息。
4.如权利要求1的方法,其中该第一编码的数据的第二部分仅包括奇偶校验位。
5.如权利要求1的方法,其中,响应于在完成写入该第一编码的数据的第二部分之前的断电事件之后恢复电力,开始该解码操作。
6.如权利要求5的方法,还包括:在经由解码操作恢复数据页之后:
开始第二编码操作以编码该数据页,其中该第二编码操作产生第二编码的数据;以及
将该第二编码的数据的第一部分存储到第三物理页。
7.如权利要求6的方法,其中该第二编码的数据的第一部分被存储到该第三物理页内的第一逻辑页,并且该方法还包括:将该第二编码的数据的第二部分存储到该第三物理页内的第二逻辑页。
8.如权利要求7的方法,其中该第一编码的数据具有超过第一物理页的大小的长度,以及其中该第二编码的数据具有超过该第一逻辑页的大小的长度。
9.如权利要求6的方法,其中该数据存储设备包括具有单级单元(SLC)部分和多级单元(MLC)部分的闪存,其中该第一物理页和该第二物理页在该闪存的单级单元(SLC)部分中。
10.如权利要求9的方法,其中该第三物理页在该闪存的多级单元(MLC)部分中。
11.如权利要求1所述的方法,其中,所述表示匹配所述第一编码数据的第一部分,或由于一个或多个位错误的存在而不同于第一编码数据的第一部分。
12.如权利要求1的方法,其中,所述第一编码数据的第一部分包括足够的冗余,使得能够通过使用第一编码数据的第一部分而不使用第一编码数据的第二部分来恢复所述数据页。
13.如权利要求1的方法,其中所述编码操作是单个编码操作。
14.如权利要求1或13的方法,其中所述编码操作生成包括所述第一部分和所述第二部分的单个错误校正码(ECC)码字。
15.一种数据存储设备,包括:
控制器;以及
存储器,包括第一物理页和第二物理页,
其中该控制器配置为开始编码操作以编码接收的数据页,并且配置为开始存储由该编码操作产生的第一编码的数据,其中由该编码操作产生的该第一编码的数据的第一部分将被存储到第一物理页,以及其中该第一编码的数据的第二部分将被存储到第二物理页,以及
其中该控制器能够操作以开始解码操作以恢复该数据页,其中该解码操作使用从该第一物理页读取的该第一编码的数据的一部分的表示,而不使用来自第二物理页的任何数据。
16.如权利要求15的数据存储设备,其中在该数据存储设备操作地耦接到主机设备时,从主机设备接收该数据页。
17.如权利要求16的数据存储设备,其中该控制器还配置为响应于存储该第一编码的数据的第一部分,向主机设备发送消息,该消息指示该数据页已经成功地存储在该数据存储设备处,以及该控制器配置为在完成该第一编码的数据的第二部分的存储之前发送该消息。
18.如权利要求15的数据存储设备,其中该第一编码的数据的第二部分仅包括奇偶校验位。
19.如权利要求15的数据存储设备,其中该控制器配置为响应于在完成写入该第一编码的数据的第二部分之前的断电事件之后恢复电力,开始该解码操作。
20.如权利要求19的数据存储设备,其中在经由解码操作恢复数据页之后,该控制器操作以开始第二编码操作以编码该数据页,其中该第二编码操作产生第二编码的数据;以及操作以将该第二编码的数据的第一部分存储到第三物理页。
21.如权利要求20的数据存储设备,其中该第二编码的数据的第一部分被存储到该第三物理页内的第一逻辑页,以及其中该第二编码的数据的第二部分被存储到该第三物理页内的第二逻辑页。
22.如权利要求21的数据存储设备,其中该第一编码的数据具有超过第一物理页的大小的长度,以及其中该第二编码的数据具有超过该第一逻辑页的大小的长度。
23.如权利要求20的数据存储设备,其中该存储器包括具有单级单元(SLC)部分和多级单元(MLC)部分的闪存,其中该第一物理页和该第二物理页在该闪存的单级单元(SLC)部分中。
24.如权利要求23的数据存储设备,其中该第三物理页在该闪存的多级单元(MLC)部分中。
25.如权利要求15所述的数据存储设备,其中,所述表示匹配所述第一编码数据的第一部分,或由于一个或多个位错误的存在而不同于第一编码数据的第一部分。
26.如权利要求15的数据存储设备,其中,所述第一编码数据的第一部分包括足够的冗余,使得能够通过使用第一编码数据的第一部分而不使用第一编码数据的第二部分来恢复所述数据页。
27.如权利要求15的数据存储设备,其中,所述编码操作是单个编码操作。
28.如权利要求15或27的数据存储设备,其中所述编码操作被配置为生成包括所述第一部分和所述第二部分的单个错误校正码(ECC)码字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710575985.4A CN107357678A (zh) | 2011-07-22 | 2012-07-20 | 存储数据的系统和方法 |
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161510892P | 2011-07-22 | 2011-07-22 | |
US61/510,892 | 2011-07-22 | ||
US13/329,732 US9311969B2 (en) | 2011-07-22 | 2011-12-19 | Systems and methods of storing data |
US13/329,732 | 2011-12-19 | ||
US13/329,819 US9032269B2 (en) | 2011-07-22 | 2011-12-19 | Systems and methods of storing data |
US13/329,819 | 2011-12-19 | ||
US13/329,788 US9318166B2 (en) | 2011-07-22 | 2011-12-19 | Systems and methods of storing data |
US13/329,788 | 2011-12-19 | ||
US13/329,684 US8880977B2 (en) | 2011-07-22 | 2011-12-19 | Systems and methods of storing data |
US13/329,684 | 2011-12-19 | ||
US13/329,757 | 2011-12-19 | ||
US13/329,757 US8874994B2 (en) | 2011-07-22 | 2011-12-19 | Systems and methods of storing data |
PCT/US2012/047545 WO2013016168A2 (en) | 2011-07-22 | 2012-07-20 | Systems and methods of storing data |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710575985.4A Division CN107357678A (zh) | 2011-07-22 | 2012-07-20 | 存储数据的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103827833A CN103827833A (zh) | 2014-05-28 |
CN103827833B true CN103827833B (zh) | 2017-08-08 |
Family
ID=47556618
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710575985.4A Pending CN107357678A (zh) | 2011-07-22 | 2012-07-20 | 存储数据的系统和方法 |
CN201280045360.2A Active CN103827833B (zh) | 2011-07-22 | 2012-07-20 | 存储数据的系统和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710575985.4A Pending CN107357678A (zh) | 2011-07-22 | 2012-07-20 | 存储数据的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (7) | US8874994B2 (zh) |
EP (1) | EP2734925B1 (zh) |
JP (1) | JP6025844B2 (zh) |
KR (1) | KR20140060285A (zh) |
CN (2) | CN107357678A (zh) |
TW (1) | TW201314449A (zh) |
WO (1) | WO2013016168A2 (zh) |
Families Citing this family (341)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874994B2 (en) | 2011-07-22 | 2014-10-28 | Sandisk Technologies Inc. | Systems and methods of storing data |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
JP5547154B2 (ja) * | 2011-09-21 | 2014-07-09 | 株式会社東芝 | メモリ・デバイス |
US8661320B2 (en) * | 2011-10-07 | 2014-02-25 | Aeroflex Colorado Springs Inc. | Independent orthogonal error correction and detection |
KR101893145B1 (ko) | 2011-12-06 | 2018-10-05 | 삼성전자주식회사 | 메모리 시스템들 및 그것들의 블록 복사 방법들 |
US9026887B2 (en) * | 2012-03-15 | 2015-05-05 | Micron Technology, Inc. | Physical page, logical page, and codeword correspondence |
US8943384B2 (en) * | 2012-04-12 | 2015-01-27 | Seagate Technology Llc | Using a soft decoder with hard data |
US11452153B2 (en) | 2012-05-01 | 2022-09-20 | Lisnr, Inc. | Pairing and gateway connection using sonic tones |
EP3358811A1 (en) | 2012-05-01 | 2018-08-08 | Lisnr, Inc. | Systems and methods for content delivery and management |
US8787079B2 (en) * | 2012-05-07 | 2014-07-22 | Sandisk Technologies Inc. | Reading data from multi-level cell memory |
US9417958B2 (en) * | 2012-06-06 | 2016-08-16 | Silicon Motion Inc. | Flash memory control method, controller and electronic apparatus |
KR20140002179A (ko) * | 2012-06-28 | 2014-01-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US8924820B2 (en) * | 2012-07-27 | 2014-12-30 | Kabushiki Kaisha Toshiba | Memory controller, semiconductor memory system, and memory control method |
US10013203B2 (en) * | 2013-01-04 | 2018-07-03 | International Business Machines Corporation | Achieving storage compliance in a dispersed storage network |
US9311187B2 (en) * | 2013-01-04 | 2016-04-12 | Cleversafe, Inc. | Achieving storage compliance in a dispersed storage network |
JP2014134843A (ja) * | 2013-01-08 | 2014-07-24 | Toshiba Corp | メモリシステム |
US8913438B2 (en) | 2013-02-20 | 2014-12-16 | Seagate Technology Llc | Adaptive architecture in a channel detector for NAND flash channels |
US9124300B2 (en) * | 2013-02-28 | 2015-09-01 | Sandisk Technologies Inc. | Error correction coding in non-volatile memory |
US9088303B2 (en) * | 2013-02-28 | 2015-07-21 | Micron Technology, Inc. | Codewords that span pages of memory |
US9367389B2 (en) | 2013-03-14 | 2016-06-14 | Seagate Technology Llc | Recovery strategy that reduces errors misidentified as reliable |
US8656255B1 (en) * | 2013-03-15 | 2014-02-18 | Avalanche Technology, Inc. | Method for reducing effective raw bit error rate in multi-level cell NAND flash memory |
KR102007163B1 (ko) * | 2013-04-22 | 2019-10-01 | 에스케이하이닉스 주식회사 | 인코더, 디코더 및 이를 포함하는 반도체 장치 |
CN104217762B (zh) * | 2013-05-31 | 2017-11-24 | 慧荣科技股份有限公司 | 数据储存装置及其错误校正方法以及数据读取方法 |
US9489300B2 (en) | 2013-06-19 | 2016-11-08 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US9117514B2 (en) | 2013-06-19 | 2015-08-25 | Sandisk Technologies Inc. | Data encoding for non-volatile memory |
US9489299B2 (en) | 2013-06-19 | 2016-11-08 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US9489294B2 (en) * | 2013-06-19 | 2016-11-08 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US9117520B2 (en) | 2013-06-19 | 2015-08-25 | Sandisk Technologies Inc. | Data encoding for non-volatile memory |
US20150006784A1 (en) | 2013-06-27 | 2015-01-01 | Sandisk Technologies Inc. | Efficient Post Write Read in Three Dimensional Nonvolatile Memory |
US9063671B2 (en) | 2013-07-02 | 2015-06-23 | Sandisk Technologies Inc. | Write operations with full sequence programming for defect management in nonvolatile memory |
US9218242B2 (en) | 2013-07-02 | 2015-12-22 | Sandisk Technologies Inc. | Write operations for defect management in nonvolatile memory |
KR102149770B1 (ko) * | 2013-08-26 | 2020-08-31 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
US20150074490A1 (en) * | 2013-09-06 | 2015-03-12 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device |
US9213599B2 (en) | 2013-09-18 | 2015-12-15 | Seagate Technology Llc | Method of erase state handling in flash channel tracking |
US9229801B2 (en) * | 2013-09-24 | 2016-01-05 | Sandisk Technologies Inc. | Method and device for write abort protection |
KR101845382B1 (ko) * | 2013-09-25 | 2018-05-18 | 인텔 코포레이션 | 분배 변환기를 갖는 메모리 제어기 |
US9135113B2 (en) * | 2013-10-08 | 2015-09-15 | Apple Inc. | Recovery from programming failure in non-volatile memory |
US20150098271A1 (en) * | 2013-10-09 | 2015-04-09 | Sandisk Technologies Inc. | System and method of storing data in a data storage device |
US9213595B2 (en) * | 2013-10-15 | 2015-12-15 | International Business Machines Corporation | Handling errors in ternary content addressable memories |
US9043537B1 (en) | 2013-11-21 | 2015-05-26 | Sandisk Technologies Inc. | Update block programming order |
US9058881B1 (en) | 2013-12-05 | 2015-06-16 | Sandisk Technologies Inc. | Systems and methods for partial page programming of multi level cells |
US9244631B2 (en) | 2013-12-06 | 2016-01-26 | Sandisk Technologies Inc. | Lower page only host burst writes |
US9390008B2 (en) | 2013-12-11 | 2016-07-12 | Sandisk Technologies Llc | Data encoding for non-volatile memory |
US10067829B2 (en) * | 2013-12-13 | 2018-09-04 | Intel Corporation | Managing redundancy information in a non-volatile memory |
US9129701B2 (en) * | 2013-12-19 | 2015-09-08 | Sandisk Technologies Inc. | Asymmetric state detection for non-volatile storage |
US9165649B2 (en) | 2013-12-20 | 2015-10-20 | Sandisk Technologies Inc. | Systems and methods of shaping data |
US9798613B2 (en) * | 2013-12-27 | 2017-10-24 | Toshiba Memory Corporation | Controller of nonvolatile semiconductor memory |
CN106959822B (zh) * | 2013-12-27 | 2020-02-07 | 威盛电子股份有限公司 | 数据储存装置及其数据写入方法 |
US9389956B2 (en) | 2014-01-10 | 2016-07-12 | International Business Machines Corporation | Implementing ECC control for enhanced endurance and data retention of flash memories |
US20150205664A1 (en) * | 2014-01-17 | 2015-07-23 | Fusion-Io, Inc. | Determining a configuration parameter using a soft read command |
US8902652B1 (en) | 2014-05-13 | 2014-12-02 | Sandisk Technologies Inc. | Systems and methods for lower page writes |
US8886877B1 (en) | 2014-05-15 | 2014-11-11 | Sandisk Technologies Inc. | In-situ block folding for nonvolatile memory |
US9460783B2 (en) * | 2014-06-03 | 2016-10-04 | Micron Technology, Inc. | Determining soft data |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9405624B2 (en) * | 2014-06-19 | 2016-08-02 | Seagate Technology Llc | On-die error detection and correction during multi-step programming |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
KR102247087B1 (ko) | 2014-07-08 | 2021-05-03 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9443617B2 (en) | 2014-07-18 | 2016-09-13 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
TWI512750B (zh) * | 2014-07-30 | 2015-12-11 | Phison Electronics Corp | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 |
US9436549B2 (en) * | 2014-07-31 | 2016-09-06 | Sandisk Technologies Llc | Storage module and method for improved error correction by detection of grown bad bit lines |
US9396080B2 (en) * | 2014-08-07 | 2016-07-19 | Sandisk Technologies Llc | Storage module and method for analysis and disposition of dynamically tracked read error events |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
KR102189780B1 (ko) * | 2014-08-11 | 2020-12-11 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN105335299B (zh) * | 2014-08-12 | 2018-10-02 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
TWI550615B (zh) * | 2014-08-28 | 2016-09-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體儲存裝置及記憶體控制電路單元 |
US20160062829A1 (en) * | 2014-08-29 | 2016-03-03 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US9817751B2 (en) * | 2014-09-03 | 2017-11-14 | Apple Inc. | Multi-phase programming schemes for nonvolatile memories |
US10114562B2 (en) * | 2014-09-16 | 2018-10-30 | Sandisk Technologies Llc | Adaptive block allocation in nonvolatile memory |
US9678832B2 (en) * | 2014-09-18 | 2017-06-13 | Sandisk Technologies Llc | Storage module and method for on-chip copy gather |
US9588841B2 (en) * | 2014-09-26 | 2017-03-07 | Intel Corporation | Using reliability information from multiple storage units and a parity storage unit to recover data for a failed one of the storage units |
CN104464821B (zh) * | 2014-10-10 | 2017-07-28 | 记忆科技(深圳)有限公司 | 一种防止MLC Nand Flash出现UECC问题的方法 |
KR102452183B1 (ko) | 2014-10-15 | 2022-10-07 | 엘아이에스엔알, 인크. | 불가청 신호음 |
US9484089B2 (en) * | 2014-10-20 | 2016-11-01 | Sandisk Technologies Llc | Dual polarity read operation |
US9984768B2 (en) | 2014-10-20 | 2018-05-29 | Sandisk Technologies Llc | Distributing storage of ECC code words |
US10074427B2 (en) | 2014-11-12 | 2018-09-11 | Sandisk Technologies Llc | Shaped data associated with an erase operation |
US9406377B2 (en) | 2014-12-08 | 2016-08-02 | Sandisk Technologies Llc | Rewritable multibit non-volatile memory with soft decode optimization |
US9558064B2 (en) | 2015-01-28 | 2017-01-31 | Micron Technology, Inc. | Estimating an error rate associated with memory |
TWI557560B (zh) | 2015-02-12 | 2016-11-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及資料讀取方法 |
US9786386B2 (en) | 2015-02-27 | 2017-10-10 | Microsoft Technology Licensing, Llc | Dynamic approximate storage for custom applications |
US9690656B2 (en) | 2015-02-27 | 2017-06-27 | Microsoft Technology Licensing, Llc | Data encoding on single-level and variable multi-level cell storage |
US9524210B1 (en) * | 2015-03-02 | 2016-12-20 | Crossbar, Inc. | Separating bits represented by a MLC in connection with ECC |
TWI573143B (zh) * | 2015-03-04 | 2017-03-01 | 慧榮科技股份有限公司 | 資料重新寫入方法以及使用該方法的裝置 |
KR102392821B1 (ko) * | 2015-03-16 | 2022-05-02 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US9811420B2 (en) * | 2015-03-27 | 2017-11-07 | Intel Corporation | Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC) |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US11403173B2 (en) | 2015-04-30 | 2022-08-02 | Marvell Israel (M.I.S.L) Ltd. | Multiple read and write port memory |
US10387322B2 (en) * | 2015-04-30 | 2019-08-20 | Marvell Israel (M.I.S.L.) Ltd. | Multiple read and write port memory |
KR102370292B1 (ko) * | 2015-05-07 | 2022-03-07 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US9766976B2 (en) * | 2015-06-08 | 2017-09-19 | Sandisk Technologies Llc | Data storage device and method for storing multiple codewords and redundancy information at a word line |
US10141072B2 (en) * | 2015-06-11 | 2018-11-27 | SK Hynix Inc. | Efficient encoder based on modified RU algorithm |
US9996299B2 (en) * | 2015-06-25 | 2018-06-12 | Western Digital Technologies, Inc | Memory health monitoring |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
KR20170004693A (ko) * | 2015-07-03 | 2017-01-11 | 에스케이하이닉스 주식회사 | 메모리 장치의 컨트롤러 및 그 동작 방법 |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US9524794B1 (en) * | 2015-08-10 | 2016-12-20 | Sandisk Technologies Llc | Constrained data shaping |
US10133625B2 (en) * | 2015-08-11 | 2018-11-20 | Western Digital Technologies, Inc. | Storing parity data separate from protected data |
US10474525B2 (en) | 2015-08-11 | 2019-11-12 | Sandisk Technologies Llc | Soft bit techniques for a data storage device |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
JP2017055254A (ja) | 2015-09-09 | 2017-03-16 | 株式会社東芝 | データ復元回路、半導体記憶装置およびデータ復元方法 |
TWI566096B (zh) | 2015-09-11 | 2017-01-11 | 慧榮科技股份有限公司 | 資料儲存系統與其相關方法 |
US9836350B2 (en) * | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Joint decoding of rewriting NVM error sectors |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9875156B2 (en) | 2015-10-01 | 2018-01-23 | Sandisk Technologies Llc | Data storage device with a memory die that includes an interleaver |
US9734009B2 (en) | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US9858009B2 (en) | 2015-10-26 | 2018-01-02 | Sandisk Technologies Llc | Data folding in 3D nonvolatile memory |
US10204006B2 (en) | 2015-10-28 | 2019-02-12 | Avago Technologies International Sales Pte. Limited | Systems and methods for side data based soft data flash memory access |
US9886342B2 (en) * | 2015-10-28 | 2018-02-06 | Sandisk Technologies Llc | Storage device operations based on bit error rate (BER) estimate |
US10180874B2 (en) | 2015-10-28 | 2019-01-15 | Western Digital Technologies, Inc. | Storage device operations based on bit error rate (BER) estimate |
US10049007B2 (en) * | 2015-10-28 | 2018-08-14 | Via Technologies, Inc. | Non-volatile memory device and read method thereof |
US10108489B2 (en) * | 2015-10-28 | 2018-10-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for efficient soft data based flash memory data recovery |
US9978462B2 (en) | 2015-10-29 | 2018-05-22 | Sandisk Technologies Llc | Partial soft bit read |
US9792176B2 (en) * | 2015-11-13 | 2017-10-17 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding data in memory system |
TWI578222B (zh) * | 2015-11-18 | 2017-04-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
CN105426526B (zh) * | 2015-12-10 | 2019-02-15 | 魅族科技(中国)有限公司 | 一种页面信息选取的方法及装置 |
KR102473209B1 (ko) * | 2015-12-14 | 2022-12-02 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10055288B2 (en) * | 2016-01-21 | 2018-08-21 | Via Technologies, Inc. | Controller device and operation method for non-volatile memory with 3-dimensional architecture |
CN106935271B (zh) * | 2016-01-21 | 2020-09-15 | 威盛电子股份有限公司 | 三维架构非依电性存储器的控制器装置与操作方法 |
US10389389B2 (en) | 2016-03-04 | 2019-08-20 | Western Digital Technologies, Inc. | Method and data storage device using convolutional low-density parity-check coding with a long page write and a short page read granularity |
DE102016104012A1 (de) * | 2016-03-04 | 2017-09-07 | Infineon Technologies Ag | Verarbeitung eines Datenworts |
US10367528B2 (en) | 2016-03-04 | 2019-07-30 | Sandisk Technologies Llc | Convolutional low-density parity-check coding |
US10063258B2 (en) | 2016-03-04 | 2018-08-28 | Sandisk Technologies Llc | Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding |
US10198313B2 (en) * | 2016-03-11 | 2019-02-05 | Western Digital Technologies, Inc. | Redundancy of error correction encoded data in a storage system |
US9996280B2 (en) | 2016-03-15 | 2018-06-12 | Sandisk Technologies Llc | Data register copying for non-volatile storage array operations |
US10114549B2 (en) | 2016-03-17 | 2018-10-30 | Sandisk Technologies Llc | Error correction code processing and data shaping for reducing wear to a memory |
US11233582B2 (en) | 2016-03-25 | 2022-01-25 | Lisnr, Inc. | Local tone generation |
CN107239224B (zh) * | 2016-03-29 | 2020-05-12 | 群联电子股份有限公司 | 数据保护方法、存储器控制电路单元与存储器存储装置 |
TWI575533B (zh) * | 2016-04-18 | 2017-03-21 | 群聯電子股份有限公司 | 資料校正方法、記憶體控制電路單元與記憶體儲存裝置 |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US10169142B2 (en) * | 2016-07-12 | 2019-01-01 | Futurewei Technologies, Inc. | Generating parity for storage device |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US9892793B1 (en) | 2016-07-25 | 2018-02-13 | Western Digital Technologies, Inc. | Systems and methods for programming data to storage devices |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
DE102016115272A1 (de) | 2016-08-17 | 2018-02-22 | Infineon Technologies Ag | Speicher mit unterschiedlichen zuverlässigkeiten |
KR20180027808A (ko) * | 2016-09-07 | 2018-03-15 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
TWI640868B (zh) * | 2016-10-07 | 2018-11-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
TWI607312B (zh) * | 2016-10-07 | 2017-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10360973B2 (en) * | 2016-12-23 | 2019-07-23 | Western Digital Technologies, Inc. | Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
JP2018147231A (ja) | 2017-03-06 | 2018-09-20 | 東芝メモリ株式会社 | メモリコントローラ、メモリシステムおよびメモリシステムの制御方法 |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10552256B2 (en) * | 2017-05-08 | 2020-02-04 | Samsung Electronics Co., Ltd. | Morphable ECC encoder/decoder for NVDIMM over DDR channel |
US10402272B2 (en) | 2017-05-25 | 2019-09-03 | Micron Technology, Inc. | Memory device with dynamic programming calibration |
US10140040B1 (en) * | 2017-05-25 | 2018-11-27 | Micron Technology, Inc. | Memory device with dynamic program-verify voltage calibration |
US10452480B2 (en) | 2017-05-25 | 2019-10-22 | Micron Technology, Inc. | Memory device with dynamic processing level calibration |
KR102384706B1 (ko) * | 2017-06-09 | 2022-04-08 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
US20180358989A1 (en) * | 2017-06-09 | 2018-12-13 | Western Digital Technologies, Inc. | Non-volatile Storage Systems With Application-Aware Error-Correcting Codes |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10354723B2 (en) * | 2017-06-29 | 2019-07-16 | SK Hynix Inc. | Memory device and method for programming the same |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
KR20190005447A (ko) * | 2017-07-06 | 2019-01-16 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치의 동작 방법 및 메모리 시스템 |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10388351B2 (en) | 2017-08-30 | 2019-08-20 | Micron Technology, Inc. | Wear leveling for random access and ferroelectric memory |
US10062441B1 (en) * | 2017-08-31 | 2018-08-28 | Micron Technology, Inc. | Determining data states of memory cells |
JP2019050071A (ja) * | 2017-09-11 | 2019-03-28 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
US11189295B2 (en) | 2017-09-28 | 2021-11-30 | Lisnr, Inc. | High bandwidth sonic tone generation |
TWI649759B (zh) * | 2017-09-28 | 2019-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置與將資料寫入記憶體裝置之方法 |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
TWI653538B (zh) * | 2017-11-13 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10372539B2 (en) | 2017-11-20 | 2019-08-06 | Western Digital Technologies, Inc. | Variable length CLDPC encoder and method of operation in an autonomous vehicle |
US10817373B2 (en) * | 2017-11-21 | 2020-10-27 | SK Hynix Inc. | Soft chip-kill recovery using concatenated codes |
US10929226B1 (en) * | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
KR102545167B1 (ko) * | 2017-11-23 | 2023-06-19 | 삼성전자주식회사 | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 |
KR102449346B1 (ko) * | 2017-12-12 | 2022-10-04 | 삼성전자주식회사 | 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
JP6960877B2 (ja) | 2018-03-22 | 2021-11-05 | キオクシア株式会社 | メモリシステム |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10877697B2 (en) * | 2018-04-30 | 2020-12-29 | SK Hynix Inc. | Data storage device and operating method thereof |
US10664194B2 (en) | 2018-05-16 | 2020-05-26 | Micron Technology, Inc. | Memory system with dynamic calibration using a variable adjustment mechanism |
US10566063B2 (en) | 2018-05-16 | 2020-02-18 | Micron Technology, Inc. | Memory system with dynamic calibration using a trim management mechanism |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US10990466B2 (en) | 2018-06-20 | 2021-04-27 | Micron Technology, Inc. | Memory sub-system with dynamic calibration using component-based function(s) |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10762967B2 (en) | 2018-06-28 | 2020-09-01 | Apple Inc. | Recovering from failure in programming a nonvolatile memory |
US10755787B2 (en) | 2018-06-28 | 2020-08-25 | Apple Inc. | Efficient post programming verification in a nonvolatile memory |
US11188416B2 (en) | 2018-07-12 | 2021-11-30 | Micron Technology, Inc. | Enhanced block management for a memory sub-system |
US11113129B2 (en) | 2018-07-13 | 2021-09-07 | Micron Technology, Inc. | Real time block failure analysis for a memory sub-system |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US10679708B2 (en) * | 2018-09-17 | 2020-06-09 | Western Digital Technologies, Inc. | Pre-program read to counter wordline failures |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10936246B2 (en) | 2018-10-10 | 2021-03-02 | Micron Technology, Inc. | Dynamic background scan optimization in a memory sub-system |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10740231B2 (en) | 2018-11-20 | 2020-08-11 | Western Digital Technologies, Inc. | Data access in data storage device including storage class memory |
CN111276175B (zh) * | 2018-12-05 | 2022-03-15 | 华邦电子股份有限公司 | 一种内存装置以及虚拟静态随机存取内存的刷新方法 |
US11132253B2 (en) | 2018-12-06 | 2021-09-28 | Micron Technology, Inc. | Direct-input redundancy scheme with dedicated error correction code circuit |
KR20200069892A (ko) * | 2018-12-07 | 2020-06-17 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US10734071B2 (en) | 2018-12-13 | 2020-08-04 | Western Digital Technologies, Inc. | Multi-level cell programming using optimized multiphase mapping with balanced Gray code |
CN109582248B (zh) * | 2018-12-14 | 2022-02-22 | 深圳市硅格半导体有限公司 | 闪存数据的写入方法、装置及计算机可读存储介质 |
US10705966B1 (en) * | 2018-12-14 | 2020-07-07 | Western Digital Technologies, Inc. | Mapping for multi-state programming of memory devices |
US10942809B2 (en) * | 2018-12-20 | 2021-03-09 | Micron Technology, Inc. | Changing of error correction codes based on the wear of a memory sub-system |
US10977122B2 (en) * | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US10936455B2 (en) | 2019-02-11 | 2021-03-02 | Apple Inc. | Recovery of data failing due to impairment whose severity depends on bit-significance value |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
KR102178340B1 (ko) * | 2019-02-15 | 2020-11-12 | 성균관대학교산학협력단 | 멀티 레벨 셀의 데이터 입출력 장치와 그의 방법 |
CN109920462B (zh) * | 2019-03-01 | 2021-01-22 | 中国科学院微电子研究所 | 一种数据写入控制电路和控制方法 |
US11133067B2 (en) * | 2019-03-08 | 2021-09-28 | Western Digital Technologies, Inc. | Multi-phased programming with balanced gray coding |
JP2020155174A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
CN111984458B (zh) * | 2019-05-23 | 2023-07-07 | 建兴储存科技(广州)有限公司 | 使用预测方程式的固态储存装置 |
US11379398B2 (en) * | 2019-06-04 | 2022-07-05 | Microchip Technology Incorporated | Virtual ports for connecting core independent peripherals |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
KR20210013397A (ko) | 2019-07-24 | 2021-02-04 | 삼성전자주식회사 | 스토리지 장치 |
US10825542B1 (en) * | 2019-09-12 | 2020-11-03 | Silicon Motion, Inc. | Method for efficiently checking storage units of flash memory of flash memory device and corresponding electronic device executing the method |
CN110648713B (zh) * | 2019-09-20 | 2021-09-10 | 长江存储科技有限责任公司 | 一种闪存存储器及其编程方法、编程系统和存储器系统 |
US10915394B1 (en) | 2019-09-22 | 2021-02-09 | Apple Inc. | Schemes for protecting data in NVM device using small storage footprint |
US11036582B2 (en) | 2019-09-27 | 2021-06-15 | Western Digital Technologies, Inc. | Uncorrectable error correction code (UECC) recovery time improvement |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
KR102388458B1 (ko) * | 2019-10-31 | 2022-04-21 | 울산과학기술원 | 데이터 키 값 변환 방법 및 장치 |
US11081203B2 (en) * | 2019-11-14 | 2021-08-03 | Micron Technology, Inc. | Leakage source detection by scanning access lines |
KR20210062845A (ko) | 2019-11-22 | 2021-06-01 | 삼성전자주식회사 | 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터 |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11258466B1 (en) * | 2020-03-13 | 2022-02-22 | Kioxia Corporation | System and method for high reliability fast raid soft decoding for NAND flash memories |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11288011B2 (en) * | 2020-03-26 | 2022-03-29 | Western Digital Technologies, Inc. | Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes |
US11169881B2 (en) | 2020-03-30 | 2021-11-09 | Alibaba Group Holding Limited | System and method for facilitating reduction of complexity and data movement in erasure coding merging on journal and data storage drive |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11249921B2 (en) * | 2020-05-06 | 2022-02-15 | Western Digital Technologies, Inc. | Page modification encoding and caching |
US11321167B2 (en) | 2020-05-09 | 2022-05-03 | Western Digital Technologies, Inc. | Adaptive folding for integrated memory assembly |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11250913B2 (en) | 2020-05-21 | 2022-02-15 | Western Digital Technologies, Inc. | Scrambling using different scrambling seeds for defect reduction and improved programming efficiency |
US11301321B2 (en) * | 2020-05-28 | 2022-04-12 | Western Digital Technologies, Inc. | Data shaping for integrated memory assembly |
US11170870B1 (en) | 2020-05-28 | 2021-11-09 | Western Digital Technologies, Inc. | On-chip-copy for integrated memory assembly |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11488682B2 (en) | 2020-06-24 | 2022-11-01 | Sandisk Technologies Llc | Calibration for integrated memory assembly |
US11231997B2 (en) * | 2020-06-29 | 2022-01-25 | Western Digital Technologies, Inc. | Storage system and method for balanced quad-level cell (QLC) coding with margin for an internal data load (IDL) read |
US11144392B1 (en) | 2020-07-17 | 2021-10-12 | Toshiba Memory Corporation | Payload distribution in solid state drives |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11340981B2 (en) | 2020-08-13 | 2022-05-24 | Micron Technology, Inc. | Modifying conditions for memory device error connection operations |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11527300B2 (en) | 2020-08-26 | 2022-12-13 | Western Digital Technologies, Inc. | Level dependent error correction code protection in multi-level non-volatile memory |
US11436083B2 (en) * | 2020-09-04 | 2022-09-06 | Western Digital Technologies, Inc. | Data address management in non-volatile memory |
US11392327B2 (en) | 2020-09-09 | 2022-07-19 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US11456754B2 (en) | 2020-10-13 | 2022-09-27 | Western Digital Technologies, Inc. | Fixed size soft bit lossy compression in flash memory |
KR20220054096A (ko) | 2020-10-23 | 2022-05-02 | 삼성전자주식회사 | 패리티를 저장하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
US11650932B2 (en) | 2020-10-25 | 2023-05-16 | Western Digital Technologies, Inc. | Integrated non-volatile memory assembly with address translation |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
CN112486853B (zh) * | 2020-12-15 | 2022-11-01 | 长江存储科技有限责任公司 | Nand闪存的页映射解码方法及系统、存储介质及终端 |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11650756B2 (en) * | 2020-12-28 | 2023-05-16 | Western Digital Technologies, Inc. | Nonvolatile memory with encoding for foggy-fine programming with soft bits |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
KR20220103227A (ko) * | 2021-01-14 | 2022-07-22 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법 |
US11481154B2 (en) | 2021-01-15 | 2022-10-25 | Sandisk Technologies Llc | Non-volatile memory with memory array between circuits |
US11481271B2 (en) * | 2021-03-16 | 2022-10-25 | Western Digital Technologies, Inc. | Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11456758B1 (en) | 2021-04-23 | 2022-09-27 | Western Digital Technologies, Inc. | Adaptive soft-bit compression in flash memory |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US20220399072A1 (en) * | 2021-06-15 | 2022-12-15 | Sandisk Technologies Llc | Nonvolatile memory with latch scramble |
US11689219B1 (en) * | 2021-08-12 | 2023-06-27 | Kioxia Corporation | Method and system for error correction in memory devices using irregular error correction code components |
US11550657B1 (en) | 2021-09-01 | 2023-01-10 | Apple Inc. | Efficient programming schemes in a nonvolatile memory |
US11776589B2 (en) | 2021-09-16 | 2023-10-03 | Sandisk Technologies Llc | Vertical compression scheme for compressed soft bit data in non-volatile memories with data latch groups |
US11901019B2 (en) | 2021-09-16 | 2024-02-13 | Sandisk Technologies Llc | Use of data latches for compression of soft bit data in non-volatile memories |
US11894068B2 (en) | 2021-09-16 | 2024-02-06 | Sandisk Technologies Llc | Efficient sensing of soft bit data for non-volatile memory |
US11907545B2 (en) | 2021-09-16 | 2024-02-20 | Sandisk Technologies Llc | On-the-fly multiplexing scheme for compressed soft bit data in non-volatile memories |
US11971829B2 (en) | 2021-09-16 | 2024-04-30 | Sandisk Technologies Llc | On-the-fly compression scheme for soft bit data in non-volatile memory |
US11971826B2 (en) | 2021-09-16 | 2024-04-30 | Sandisk Technologies Llc | Architecture and data path options for compression of soft bit data in non-volatile memories |
US11694761B2 (en) * | 2021-09-17 | 2023-07-04 | Nxp B.V. | Method to increase the usable word width of a memory providing an error correction scheme |
CN114047880B (zh) * | 2021-11-16 | 2023-07-04 | 深圳忆联信息系统有限公司 | 多Pass编程的NAND写入功耗优化方法、装置及计算机设备 |
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 |
US11934263B2 (en) * | 2022-03-29 | 2024-03-19 | Ampere Computing Llc | Parity protected memory blocks merged with error correction code (ECC) protected blocks in a codeword for increased memory utilization |
US11994985B2 (en) | 2022-10-04 | 2024-05-28 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding |
US11995349B2 (en) | 2022-10-04 | 2024-05-28 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding |
US11916570B1 (en) * | 2022-11-11 | 2024-02-27 | Texas Instruments Incorporated | Codeword format for data storage |
TWI826161B (zh) * | 2022-12-02 | 2023-12-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009053962A2 (en) * | 2007-10-22 | 2009-04-30 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
CN101512661A (zh) * | 2006-05-12 | 2009-08-19 | 爱诺彼得技术有限责任公司 | 用于存储设备的失真估计与纠错编码的组合 |
CN101558452A (zh) * | 2006-12-07 | 2009-10-14 | Nxp股份有限公司 | 用于在闪速eeprom存储页中重构可靠性数据的方法和装置 |
JP2009282923A (ja) * | 2008-05-26 | 2009-12-03 | Toshiba Corp | 半導体記憶装置及び不揮発性メモリ |
CN101999116A (zh) * | 2008-03-11 | 2011-03-30 | 艾格瑞系统有限公司 | 通过交叉页面扇区、多页面编码以及每一页面编码将数据存储在多级单元闪速存储器装置中的方法和设备 |
CN102024497A (zh) * | 2009-09-22 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种存储数据的方法及存储装置 |
Family Cites Families (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228496A (en) | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
KR900002664B1 (ko) * | 1985-08-16 | 1990-04-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 시리얼 데이터 기억 반도체 메모리 |
US5367383A (en) | 1992-11-27 | 1994-11-22 | Eastman Kodak Company | Method and apparatus for maximizing data storage in a processor of image data |
KR0168896B1 (ko) | 1993-09-20 | 1999-02-01 | 세키자와 다다시 | 패리티에 의해 에러를 수정할 수 있는 반도체 메모리장치 |
DE4335305A1 (de) | 1993-10-16 | 1995-04-20 | Philips Patentverwaltung | Verfahren und Schaltungsanordnung zur Übertragung von Sprachsignalen |
DE69635105D1 (de) | 1996-01-31 | 2005-09-29 | St Microelectronics Srl | Mehrstufige Speicherschaltungen und entsprechende Lese- und Schreibverfahren |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
JP2000122935A (ja) | 1998-10-20 | 2000-04-28 | Sanyo Electric Co Ltd | 不揮発性メモリのアドレス変換装置 |
US20080071973A1 (en) * | 2000-01-06 | 2008-03-20 | Chow David Q | Electronic data flash card with various flash memory cells |
US7660941B2 (en) | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
US6418059B1 (en) | 2000-06-26 | 2002-07-09 | Intel Corporation | Method and apparatus for non-volatile memory bit sequence program controller |
EP1211812B1 (en) | 2000-10-31 | 2006-11-15 | STMicroelectronics S.r.l. | A/D conversion method in high density multilevel non-volatile memory devices and corresponding converter device |
US7036068B2 (en) | 2001-07-25 | 2006-04-25 | Hewlett-Packard Development Company, L.P. | Error correction coding and decoding in a solid-state storage device |
US6778479B2 (en) | 2002-07-11 | 2004-08-17 | Mediatek Incorporation | Media recognition control method for optical types |
US6966024B2 (en) | 2002-12-31 | 2005-11-15 | Motorola, Inc. | Method and device for adaptive quantization of soft bits |
US6914823B2 (en) | 2003-07-29 | 2005-07-05 | Sandisk Corporation | Detecting over programmed memory after further programming |
US20050213393A1 (en) * | 2004-03-14 | 2005-09-29 | M-Systems Flash Disk Pioneers, Ltd. | States encoding in multi-bit flash cells for optimizing error rate |
US7493457B2 (en) | 2004-11-08 | 2009-02-17 | Sandisk Il. Ltd | States encoding in multi-bit flash cells for optimizing error rate |
US7752381B2 (en) * | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
US20100082878A1 (en) | 2005-06-24 | 2010-04-01 | Matsushita Electric Industrial Co., Ltd. | Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method |
US8055833B2 (en) | 2006-10-05 | 2011-11-08 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US8521945B2 (en) * | 2005-09-29 | 2013-08-27 | Trek 2000 International Ltd. | Portable data storage using SLC and MLC flash memory |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US7526715B2 (en) | 2005-10-17 | 2009-04-28 | Ramot At Tel Aviv University Ltd. | Probabilistic error correction in multi-bit-per-cell flash memory |
US7844877B2 (en) * | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
US7366013B2 (en) | 2005-12-09 | 2008-04-29 | Micron Technology, Inc. | Single level cell programming in a multiple level cell non-volatile memory device |
JP4152410B2 (ja) | 2005-12-20 | 2008-09-17 | Necエレクトロニクス株式会社 | 演算回路 |
US7436733B2 (en) | 2006-03-03 | 2008-10-14 | Sandisk Corporation | System for performing read operation on non-volatile storage with compensation for coupling |
US7388781B2 (en) | 2006-03-06 | 2008-06-17 | Sandisk Il Ltd. | Multi-bit-per-cell flash memory device with non-bijective mapping |
US7502254B2 (en) | 2006-04-11 | 2009-03-10 | Sandisk Il Ltd | Method for generating soft bits in flash memories |
US7823043B2 (en) * | 2006-05-10 | 2010-10-26 | Sandisk Il Ltd. | Corruption-resistant data porting with multiple error correction schemes |
KR101202537B1 (ko) * | 2006-05-12 | 2012-11-19 | 애플 인크. | 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩 |
US20070266296A1 (en) | 2006-05-15 | 2007-11-15 | Conley Kevin M | Nonvolatile Memory with Convolutional Coding |
US8042029B2 (en) | 2006-05-21 | 2011-10-18 | Ramot At Tel Aviv University Ltd. | Error correction decoding by trial and error |
US7304893B1 (en) * | 2006-06-30 | 2007-12-04 | Sandisk Corporation | Method of partial page fail bit detection in flash memory devices |
US7616483B2 (en) | 2006-07-03 | 2009-11-10 | Sandisk Corporation | Multi-bit-per-cell flash memory device with an extended set of commands |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7904780B2 (en) * | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of modulating error correction coding |
KR100766042B1 (ko) | 2006-12-06 | 2007-10-12 | 삼성전자주식회사 | 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치 |
US8074011B2 (en) | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
KR100785925B1 (ko) | 2006-12-06 | 2007-12-17 | 삼성전자주식회사 | Tcm을 이용한 멀티 레벨 셀 메모리 장치 |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
WO2008070191A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a reconfigurable baseboard management controller |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US7814401B2 (en) | 2006-12-21 | 2010-10-12 | Ramot At Tel Aviv University Ltd. | Soft decoding of hard and soft bits read from a flash memory |
US8019959B2 (en) | 2007-02-09 | 2011-09-13 | Marvell World Trade Ltd. | Nonvolatile memory system |
US20080192544A1 (en) | 2007-02-13 | 2008-08-14 | Amit Berman | Error correction coding techniques for non-volatile memory |
US7966546B2 (en) | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Non-volatile memory with soft bit data transmission for error correction control |
KR101492595B1 (ko) | 2007-05-21 | 2015-02-11 | 라모트 앳 텔-아비브 유니버시티 리미티드 | 메모리 효율적인 ldpc 디코딩 |
US8060798B2 (en) | 2007-07-19 | 2011-11-15 | Micron Technology, Inc. | Refresh of non-volatile memory cells based on fatigue conditions |
JP4564520B2 (ja) * | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
US7545673B2 (en) | 2007-09-25 | 2009-06-09 | Sandisk Il Ltd. | Using MLC flash as SLC by writing dummy data |
WO2009051917A1 (en) | 2007-10-15 | 2009-04-23 | Joseph Schweiray Lee | Providing error correction to unwritten pages and for identifying unwritten pages in flash memory |
US8832408B2 (en) | 2007-10-30 | 2014-09-09 | Spansion Llc | Non-volatile memory array partitioning architecture and method to utilize single level cells and multi-level cells within the same memory |
US7924628B2 (en) | 2007-11-14 | 2011-04-12 | Spansion Israel Ltd | Operation of a non-volatile memory array |
US8316277B2 (en) | 2007-12-06 | 2012-11-20 | Fusion-Io, Inc. | Apparatus, system, and method for ensuring data validity in a data storage process |
US8327246B2 (en) | 2007-12-18 | 2012-12-04 | Densbits Technologies Ltd. | Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith |
US8775717B2 (en) | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
US8159874B2 (en) | 2008-01-22 | 2012-04-17 | Micron Technology, Inc. | Cell operation monitoring |
US8156398B2 (en) * | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US8832518B2 (en) | 2008-02-21 | 2014-09-09 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
KR101398212B1 (ko) | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
KR101412690B1 (ko) | 2008-05-28 | 2014-06-27 | 삼성전자주식회사 | 메모리 장치 및 메모리 프로그래밍 방법 |
US8843691B2 (en) | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
KR101436506B1 (ko) | 2008-07-23 | 2014-09-02 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 프로그래밍 방법 |
KR20100013485A (ko) | 2008-07-31 | 2010-02-10 | 삼성전자주식회사 | 메모리 장치 및 웨어 레벨링 방법 |
KR101528167B1 (ko) | 2008-08-01 | 2015-06-12 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 판정 방법 |
US7864587B2 (en) | 2008-09-22 | 2011-01-04 | Micron Technology, Inc. | Programming a memory device to increase data reliability |
WO2010035241A1 (en) * | 2008-09-28 | 2010-04-01 | Ramot At Tel Aviv University Ltd. | Method and system for adaptive coding in flash memories |
JP4746658B2 (ja) * | 2008-09-29 | 2011-08-10 | 株式会社東芝 | 半導体記憶システム |
JP2010165400A (ja) | 2009-01-14 | 2010-07-29 | Toshiba Corp | 不揮発性半導体記憶装置及びそのシステム |
TWI385527B (zh) | 2009-02-10 | 2013-02-11 | Phison Electronics Corp | Mlc nand型快閃記憶體儲存系統及其控制器與存取方法 |
EP2396791B1 (en) | 2009-02-12 | 2014-08-06 | Ramot at Tel-Aviv University Ltd. | Apparatus and method for enhancing flash endurance by encoding data |
US8261158B2 (en) * | 2009-03-13 | 2012-09-04 | Fusion-Io, Inc. | Apparatus, system, and method for using multi-level cell solid-state storage as single level cell solid-state storage |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8175012B2 (en) * | 2009-03-26 | 2012-05-08 | Mediatek Inc. | Decoding/encoding method for booting from a NAND flash and system thereof |
US8418021B2 (en) | 2009-03-27 | 2013-04-09 | Mediatek Inc. | Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof |
US20130047056A1 (en) | 2009-05-05 | 2013-02-21 | Lite-On It Corporation | Flash memory device with rectifiable redundancy and method of controlling the same |
US8464123B2 (en) | 2009-05-07 | 2013-06-11 | Ramot At Tel Aviv University Ltd. | Matrix structure for block encoding |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
KR101572830B1 (ko) | 2009-06-22 | 2015-11-30 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법, 비휘발성 메모리 장치 및 비휘발성 메모리 시스템 |
US7941696B2 (en) | 2009-08-11 | 2011-05-10 | Texas Memory Systems, Inc. | Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes |
US8255620B2 (en) | 2009-08-11 | 2012-08-28 | Texas Memory Systems, Inc. | Secure Flash-based memory system with fast wipe feature |
KR101717644B1 (ko) | 2009-09-08 | 2017-03-27 | 샌디스크 테크놀로지스 엘엘씨 | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 |
US8190974B2 (en) * | 2009-09-28 | 2012-05-29 | Nvidia Corporation | Error detection and correction for external DRAM |
US8730729B2 (en) | 2009-10-15 | 2014-05-20 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
US8724387B2 (en) * | 2009-10-22 | 2014-05-13 | Densbits Technologies Ltd. | Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages |
US9244836B2 (en) | 2009-11-23 | 2016-01-26 | Agiga Tech Inc. | Flash memory organization for reduced failure rate |
US20110161560A1 (en) | 2009-12-31 | 2011-06-30 | Hutchison Neil D | Erase command caching to improve erase performance on flash memory |
US8429468B2 (en) | 2010-01-27 | 2013-04-23 | Sandisk Technologies Inc. | System and method to correct data errors using a stored count of bit values |
US8631304B2 (en) | 2010-01-28 | 2014-01-14 | Sandisk Il Ltd. | Overlapping error correction operations |
JP5631750B2 (ja) | 2010-03-19 | 2014-11-26 | 株式会社東芝 | 複合メモリ |
JP5815212B2 (ja) | 2010-04-19 | 2015-11-17 | スパンション エルエルシー | データ書き込み方法およびシステム |
KR101734204B1 (ko) * | 2010-06-01 | 2017-05-12 | 삼성전자주식회사 | 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법 |
US8301828B2 (en) | 2010-06-02 | 2012-10-30 | Conexant Systems, Inc. | Systems and methods for reliable multi-level cell flash storage |
US20110307758A1 (en) | 2010-06-15 | 2011-12-15 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
KR20120001405A (ko) | 2010-06-29 | 2012-01-04 | 삼성전자주식회사 | 메모리 시스템 및 그것의 웨어 레벨링 방법 |
KR101686590B1 (ko) * | 2010-09-20 | 2016-12-14 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 워드 라인 인터리빙 방법 |
JP5143203B2 (ja) | 2010-09-24 | 2013-02-13 | 株式会社東芝 | メモリシステム |
US9105305B2 (en) * | 2010-12-01 | 2015-08-11 | Seagate Technology Llc | Dynamic higher-level redundancy mode management with independent silicon elements |
US8099652B1 (en) | 2010-12-23 | 2012-01-17 | Sandisk Corporation | Non-volatile memory and methods with reading soft bits in non uniform schemes |
US8612834B2 (en) | 2011-03-08 | 2013-12-17 | Intel Corporation | Apparatus, system, and method for decoding linear block codes in a memory controller |
US8942035B2 (en) * | 2011-03-23 | 2015-01-27 | Seagate Technology Llc | Non-sequential encoding scheme for multi-level cell (MLC) memory cells |
KR20120119779A (ko) * | 2011-04-22 | 2012-10-31 | 삼성전자주식회사 | 불휘발성 메모리 장치 |
US9176810B2 (en) * | 2011-05-27 | 2015-11-03 | SanDisk Technologies, Inc. | Bit error reduction through varied data positioning |
US8732557B2 (en) * | 2011-05-31 | 2014-05-20 | Micron Technology, Inc. | Data protection across multiple memory blocks |
US8886911B2 (en) | 2011-05-31 | 2014-11-11 | Micron Technology, Inc. | Dynamic memory cache size adjustment in a memory device |
US8874994B2 (en) | 2011-07-22 | 2014-10-28 | Sandisk Technologies Inc. | Systems and methods of storing data |
KR101824068B1 (ko) | 2011-07-28 | 2018-03-15 | 삼성전자주식회사 | 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치 |
US9047210B2 (en) * | 2011-09-15 | 2015-06-02 | Sandisk Technologies Inc. | Data storage device and method to correct bit values using multiple read voltages |
US8760932B2 (en) * | 2011-10-18 | 2014-06-24 | Seagate Technology Llc | Determination of memory read reference and programming voltages |
US8737133B2 (en) * | 2011-10-18 | 2014-05-27 | Seagate Technology Llc | Shifting cell voltage based on grouping of solid-state, non-volatile memory cells |
KR20130052811A (ko) | 2011-11-14 | 2013-05-23 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치 |
KR101832934B1 (ko) * | 2012-01-27 | 2018-02-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그것의 블록 관리 방법, 프로그램 방법 및 소거 방법 |
-
2011
- 2011-12-19 US US13/329,757 patent/US8874994B2/en active Active
- 2011-12-19 US US13/329,788 patent/US9318166B2/en not_active Expired - Fee Related
- 2011-12-19 US US13/329,732 patent/US9311969B2/en active Active
- 2011-12-19 US US13/329,819 patent/US9032269B2/en not_active Expired - Fee Related
- 2011-12-19 US US13/329,684 patent/US8880977B2/en active Active
-
2012
- 2012-07-20 KR KR20147003473A patent/KR20140060285A/ko not_active Application Discontinuation
- 2012-07-20 WO PCT/US2012/047545 patent/WO2013016168A2/en active Application Filing
- 2012-07-20 CN CN201710575985.4A patent/CN107357678A/zh active Pending
- 2012-07-20 CN CN201280045360.2A patent/CN103827833B/zh active Active
- 2012-07-20 TW TW101126359A patent/TW201314449A/zh unknown
- 2012-07-20 JP JP2014521815A patent/JP6025844B2/ja not_active Expired - Fee Related
- 2012-07-20 EP EP12741218.7A patent/EP2734925B1/en not_active Not-in-force
-
2014
- 2014-09-24 US US14/495,425 patent/US9311970B2/en not_active Expired - Fee Related
- 2014-10-22 US US14/521,001 patent/US9390774B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101512661A (zh) * | 2006-05-12 | 2009-08-19 | 爱诺彼得技术有限责任公司 | 用于存储设备的失真估计与纠错编码的组合 |
CN101558452A (zh) * | 2006-12-07 | 2009-10-14 | Nxp股份有限公司 | 用于在闪速eeprom存储页中重构可靠性数据的方法和装置 |
WO2009053962A2 (en) * | 2007-10-22 | 2009-04-30 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
CN101999116A (zh) * | 2008-03-11 | 2011-03-30 | 艾格瑞系统有限公司 | 通过交叉页面扇区、多页面编码以及每一页面编码将数据存储在多级单元闪速存储器装置中的方法和设备 |
JP2009282923A (ja) * | 2008-05-26 | 2009-12-03 | Toshiba Corp | 半導体記憶装置及び不揮発性メモリ |
CN102024497A (zh) * | 2009-09-22 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种存储数据的方法及存储装置 |
Also Published As
Publication number | Publication date |
---|---|
US20130024743A1 (en) | 2013-01-24 |
TW201314449A (zh) | 2013-04-01 |
US20130024748A1 (en) | 2013-01-24 |
US9032269B2 (en) | 2015-05-12 |
US20150043276A1 (en) | 2015-02-12 |
US9390774B2 (en) | 2016-07-12 |
US20130024605A1 (en) | 2013-01-24 |
WO2013016168A2 (en) | 2013-01-31 |
US20130024747A1 (en) | 2013-01-24 |
US8874994B2 (en) | 2014-10-28 |
US9311969B2 (en) | 2016-04-12 |
US9318166B2 (en) | 2016-04-19 |
US20130024746A1 (en) | 2013-01-24 |
US20150039970A1 (en) | 2015-02-05 |
CN103827833A (zh) | 2014-05-28 |
JP2014523595A (ja) | 2014-09-11 |
US8880977B2 (en) | 2014-11-04 |
CN107357678A (zh) | 2017-11-17 |
WO2013016168A3 (en) | 2013-06-06 |
US9311970B2 (en) | 2016-04-12 |
KR20140060285A (ko) | 2014-05-19 |
JP6025844B2 (ja) | 2016-11-16 |
EP2734925B1 (en) | 2015-07-01 |
EP2734925A2 (en) | 2014-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103827833B (zh) | 存储数据的系统和方法 | |
CN103544073B (zh) | 读取闪存中区块的数据的方法及相关的记忆装置 | |
CN104937555B (zh) | 用于控制存储器装置的方法和控制器及存储器系统 | |
CN103151069B (zh) | 存储器系统及其块复制方法 | |
CN103119569B (zh) | 基于存储条的非易失性多级存储器操作 | |
TWI533304B (zh) | 用於儲存資料於具有跨頁區段、多頁編碼及每頁編碼之多位準單元快閃記憶體器件中之方法及裝置 | |
CN107678695B (zh) | 基于可用存储器空间选择冗余存储配置 | |
CN104541249B (zh) | 用于非易失性存储器的耐久性感知纠错码(ecc)保护 | |
KR101027202B1 (ko) | 작은 데이터 구조의 ecc 보호 장치, 방법 및 시스템 | |
CN110097913A (zh) | 存储器控制器及其操作方法 | |
CN104272392B (zh) | 从多级单元存储器读取数据 | |
CN106409344A (zh) | 数据储存设备及其操作方法 | |
CN109542675A (zh) | 存储器系统及其操作方法 | |
CN106575516A (zh) | 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据 | |
CN108694097A (zh) | 存储设备的不同存储器区域中编程数据的多码本的使用 | |
CN105793927A (zh) | 每单元使用非整数数量位的模拟存储器单元中数据存储的管理 | |
CN101256521B (zh) | 提高闪存资料存取可靠性的方法 | |
CN109753230A (zh) | 控制数据存储装置运作的方法及数据存储装置及其控制器 | |
JP2007179480A (ja) | メモリコントローラおよびフラッシュメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: texas Applicant after: DELPHI INT OPERATIONS LUX SRL Address before: texas Applicant before: Sandisk Corp. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |