CN103038830A - 借助元数据标签的非规则奇偶校验分布检测 - Google Patents
借助元数据标签的非规则奇偶校验分布检测 Download PDFInfo
- Publication number
- CN103038830A CN103038830A CN2011800219371A CN201180021937A CN103038830A CN 103038830 A CN103038830 A CN 103038830A CN 2011800219371 A CN2011800219371 A CN 2011800219371A CN 201180021937 A CN201180021937 A CN 201180021937A CN 103038830 A CN103038830 A CN 103038830A
- Authority
- CN
- China
- Prior art keywords
- page
- leaf
- parity checking
- nvm
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及借助元数据标签的非规则奇偶校验分布检测。本发明涉及非易失性存储器(“NVM”),比如闪速存储器的非规则奇偶校验分布,和借助元数据标记的非规则奇偶校验的检测。例如,NVM的每个代码字可包括可能随机分布在NVM内的一个或多个奇偶校验页。为了识别作为奇偶校验页的页,可在该页的元数据中包含奇偶校验页标记。在NVM的加电期间,可以创建包括各页的逻辑-物理地址映射的地址表。不过,在所述地址表的创建期间,可以跳过包括奇偶校验页标记的各页。另外,通过具有与代码字相关的两个或者更多的奇偶校验页,能够提供另一层保护,以修复该代码字中的错误。
Description
技术领域
本发明涉及非易失性存储器,比如闪速存储器的非规则奇偶校验分布,和借助元数据标签的非规则奇偶校验的检测。
背景技术
NAND闪速存储器,以及其它类型的非易失性存储器(“NVM”)通常用于大容量存储。例如,诸如便携式媒体播放器或者蜂窝电话之类的消费电子设备通常包括原闪速存储器(raw flash memory)或闪卡,以保存音乐、视频和其它媒体。
一些非易失性存储器,比如NAND闪速存储器,可具有包括初始缺陷,或者会在使用中形成缺陷的存储单元。另外,保存在可用的存储单元中的数据可能遭受其它引起错误的现象,比如读取扰动或者电荷保持问题。因此,为了确保能够正确地取回保存在这些存储单元中的数据,可以计算并连同数据一起保存“奇偶校验数据”。例如,可把纠错码应用于数据,以生成这样的奇偶校验数据。
此外,目前的消费电子设备通常可包括控制设备的操作并且执行对NVM的访问请求(例如,读取、写入或者擦除命令)的嵌入式系统。当最初向电子设备供电时,电子设备可扫描NVM,以确定NVM(例如,NVM的每一页)的内容。例如,在扫描期间,电子设备可识别与每一页相关的逻辑地址。
发明内容
公开了非易失性存储器(“NVM”),比如闪速存储器(例如,NAND闪速存储器)中的非规则奇偶校验分布的系统和方法。此外,公开了借助元数据标签,检测这样的非规则奇偶校验分布的系统和方法。
在一些实施例中,可以提供可包括片上系统和NVM的电子设备。NVM可包括闪速存储器,比如NAND闪速存储器,或者任何其它适当类型的非易失性存储器。片上系统包括用于访问NVM的NVM接口。在一些实施例中,NVM接口可以从文件系统接收把用户数据保存在NVM中的写入请求和/或取回(例如,读取或者以其它方式访问)保存在NVM中的数据的取回请求。
在一些实施例中,数据可被保存在NVM的一起构成一个“代码字”的两个或者更多的相连页(例如,物理地址)中。代码字的每一页可包括用于校正该页的错误的ECC数据(例如,“内部ECC”)。此外,在代码字中可包括一个或多个“奇偶校验页”,其中每个奇偶校验页可提供与整体代码字相关的ECC数据(例如,“外部ECC”)。每个奇偶校验页可提供用于校正代码字的错误的另一层保护。例如,当代码字包括“m”个奇偶校验页时,即使当该代码字包括多达“m”个不可校正页时,也可适当地校正该代码字中的错误(例如,这里“不可校正页”可以指的是其内部ECC数据不足以校正其错误的页)。
在一些实施例中,奇偶校验页可具有跨NVM的非规则分布。例如,奇偶校验页的“规则分布”可包括总是位于NVM的超级块的相同芯片(die)编号的奇偶校验页。相反,具有奇偶校验页的非规则分布的NVM可包括不一定位于相同芯片编号,相反可位于NVM的任何适当位置的奇偶校验页。类似地,代码字可包括开始位置和结束位置的非规则分布,和长度的非规则分布,而不是局限于开始和终止于相同位置(例如,超级块的相同芯片编号)。
这样,奇偶校验页的非规则分布可帮助为某些数据提供更大量的保护。例如,可以使用数目更多的奇偶校验页来保护更重要的信息,以及可以使用数目较少的奇偶校验页来保护不太重要的信息。再例如,在一些实施例中,可以使用数目更多的奇偶校验页来保护对错误更敏感的页,以及可以使用数目较少的奇偶校验页来保护对错误不太敏感的页。
由于NVM存储器的奇偶校验页可具有非规则分布,因此不能立即知道NVM的哪些页(例如,物理地址)是奇偶校验页。为了确定哪些页是奇偶校验页,可以在例如每一页的元数据信息中包括“奇偶校验页标记”。NVM接口或电子设备的其它适当组件可以读取该元数据标签,以确定特定页是否是奇偶校验页。
在一些实施例中,在电子设备的加电期间,可以生成映射NVM的各页的逻辑-物理地址的表格。例如,通过在加电时,扫描各页并读取各页的物理地址,随后把被读取页的这些逻辑地址和相关的物理地址保存在逻辑-物理地址表中,可以生成该表格。不过,由于不必把外部ECC数据包括在这样的表格中,因此在该扫描期间,可以读取每一页的奇偶校验页标记。当奇偶校验页标记指示某页是奇偶校验页时,该页可被跳过,其信息不被包括在逻辑-物理地址表中。
在一些实施例中,奇偶校验页的非规则分布会影响从NVM取回数据。例如,在从NVM取回代码字的时候,可能遇到不可校正页。不过,由于奇偶校验页的非规则分布,不能立即知道有多少奇偶校验页与该代码字关联,从而不能立即知道该不可校正页是否能够被修复。因而,在一些实施例中,在取回代码字的时候,可以缓存该代码字的数据。当到达代码字的结尾时,NVM接口(例如,或者其它适当的组件)可确定该代码字中包括多少奇偶校验页,于是,能够确定该代码字的不可校正页(如果有的话)是否能够被修复。如果不可校正页能够被修复,那么缓存的数据和奇偶校验可被用于修复不可校正页。
在一些实施例中,只有当在代码字中遇到第一个不可校正页时,NVM接口才开始缓存代码字。在这种情况下,如果遇到不可校正页,那么NVM接口可跨代码字“向左扫描”,以缓存代码字的所有在前页以及当前页。NVM接口随后可继续取回代码字,并在取回代码字的剩余部分时,缓存代码字的其余部分。当到达代码字的结尾时,可确定奇偶校验页的数目,以及如果存在适当数目的奇偶校验页,那么不可校正页可被修复。
在一些实施例中,代替缓存数据,可以“动态(on the fly)”计算为修复不可校正代码字而必需的计算。例如,NVM接口可“假定”存在与正在取回的代码字相关的2个奇偶校验页(例如,或者任何其它适当数目的奇偶校验页)。当取回代码字的时候,NVM接口可利用已取回各页的数据更新两个计算,其中每个计算可以与假定的奇偶校验页中的一个不同奇偶校验页关联。当到达代码字的结尾时,可以确定奇偶校验页的实际数目和不可校正页的数目。如果第二个计算不是必需的(例如,只有一个或者没有不可校正页,或者只有一个实际的奇偶校验页),那么第二个计算可被丢弃。当两个计算都是必需的时(例如,存在两个实际的奇偶校验页,并且存在两个不可校正页),那么可以利用这两个计算来修复不可校正页。
附图说明
当考虑结合附图的以下详细说明时,本发明的上述和其它方面和优点将变得明显,附图中,相同的附图标记表示相同的部分,其中:
图1和2是按照本发明的一些实施例构造的电子设备的示意图;
图3和4是按照本发明的一些实施例的非易失性存储器的功能图;
图5是图解说明按照本发明的一些实施例的非规则奇偶校验分布的超级块的功能图;
图6表示按照本发明的一些实施例,在加电时建立非易失性存储器的地址表的处理。
图7A、7B和8表示按照本发明的一些实施例,从非易失性存储器取回数据的处理。
具体实施方式
图1是电子设备100的示意图。在一些实施例中,电子设备100可以是,或者可以包括便携式媒体播放器(例如,由Cupertino,CA的苹果公司供给的iPodTM),蜂窝电话(例如,由苹果公司供给的iPhoneTM),袖珍个人计算机,个人数字助手(PDA),桌上型计算机,膝上型计算机,便携式游戏机,遥控器,和任何其它适当类型的电子设备。
电子设备100可包括片上系统(“SoC”)110和非易失性存储器(“NVM”)120。SoC 110可包括控制电路112、存储器114、纠错码(“ECC”)模块116和NVM接口118。虽然NVM接口118、ECC模块116和控制电路112被表示成包括在片上系统中的独立模块,不过这仅仅用于简化本发明的实施例的说明。例如,在一些实施例中,这些模块都可以是独立的物理实体和/或形成为它们自己的微电子芯片。再例如,在一些实施例中,可在单个微电子芯片中形成所有这些模块,从而所有这些模块可共用相同的基板和/或硬件。又例如,在一些实施例中,这些模块可以共用硬件组件的一些部分和/或软件组件的一些部分。因而,控制电路112和NVM接口118的集成部分有时可被共同称为“控制电路”。
非易失性存储器120可用于保存当电子设备100被断电时,可被保持的信息。如这里使用的那样,并且取决于上下文,“非易失性存储器”可以指的是其中能够保存数据的NVM集成电路,或者可以指的是包括这种NVM集成电路(例如,NVM 120)的NVM封装。
非易失性存储器120可包括基于浮栅或电荷俘获技术的NAND闪速存储器,NOR闪速存储器,EPROM,EEPROM,铁电RAM(“FRAM”),磁阻RAM(“MRAM”),任何其它已知或者未来类型的非易失性存储器技术,或者它们的任意组合。在一些实施例中,NVM 120可包括作为外部电子设备100的可拆卸存储装置。这种情况下,NVM 120可包括例如通用串行总线(“USB”)存储装置,存储卡(例如,闪存卡),或者任何其它适当的可拆卸存储装置。在一些实施例中,NVM 120可被集成到电子设备100中。在这种情况下,NVM封装120可以是例如电子设备的集成存储器。
NVM 120可包括多个芯片(即,集成电路),每个芯片可被组织成一个或多个“块”,每个块是可一次擦除的。每个块可被进一步组织成“多页”,每一页是可编程和一次读取的。例如,每一页可对应于NVM的特定“物理地址”,其中数据可被写入所述物理地址和/或从所述物理地址读取。源于NVM 120的对应芯片的块(例如,每个芯片的在该芯片中具有相同位置或“块编号”的一个块)可形成称为“超级块”的逻辑存储单元。此外,NVM 120的芯片可包括任何适当数目的块和页。除了页之外,NVM 120的每个存储单元(例如,块等)可利用物理地址(例如,物理块地址)来寻址。
图1以及后面的各个附图和各个公开的实施例有时可以通过利用闪存技术来说明。不过,这并不意图对本发明的限制,可改为实现任何其它类型的非易失性存储器。此外,电子设备100可包括为了避免使图1过于复杂,而未在图1中描述的任何其它适当组件,比如电源或任何用户输入或输出组件。
如上所述,片上系统110可包括控制电路112、存储器114、纠错码(“ECC”)模块116和NVM接口150。控制电路112可控制SoC 110的一般操作和功能,和SoC 112和/或电子设备100的其它组件。例如,响应于用户输入和/或应用的指令,控制电路112可向NVM接口118发出读取或写入命令,以从NVM 120获得数据,或者把数据保存在NVM 120中。为清楚起见,控制电路112请求保存或取回的数据可被称为“用户数据”,即使该数据可能并不直接与用户或用户应用相关。更确切地,用户数据可包括控制电路112(例如,借助应用)生成或获得的任何适当序列的数字信息。
控制电路112可包括硬件、软件和固件的任意组合,以及可驱动电子设备100的功能的任何组件、电路或逻辑。例如,控制电路112可包括在保存在NVM 120和/或存储器114中的软件/固件的控制下工作的一个或多个处理器。
存储器14可包括任何适当类型的易失性或非易失性存储器,比如动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率(DDR)RAM、高速缓冲存储器、只读存储器(ROM)、任何其它适当的存储器、或者它们的组合。存储器140可包括能够临时保存用于编写到非易失性存储器120中,或者从非易失性存储器120读取的用户数据的数据源。在一些实施例中,存储器140可以充当实现成控制电路112的一部分的任何处理器的主存储器。
ECC模块116可以采用一个或多个纠错码或检错码,比如Reed-Solomon(“RS”)码,Bose,Chaudhuri和Hocquenghem(“BCH”)码,循环冗余检验(“CRC”)码,或者任何其它适当的纠错或检错码来生成ECC数据。这里使用的术语“ECC数据”可以指的是通过对用户数据应用纠错和/或检错码而生成的任何适当数据,这种情况下,ECC数据可用于核实用户数据和/或校正用户数据。
在一些实施例中,ECC模块可把纠错码应用于单页的用户数据,从而生成“内部ECC数据”。内部ECC数据随后可被用于校正和/或核实所述单页的用户数据。此外,如下更详细所述,在一些实施例中,ECC模块可把纠错码应用于整个代码字(例如,两个或者更多的相连页)的用户数据。这种情况下,ECC模块可生成可用于校正整个代码字的用户数据的“外部ECC数据”。外部ECC数据可被保存在一个或多个“奇偶校验页”中,奇偶校验页可以是专用于保存该外部ECC数据的页。奇偶校验页和外部ECC数据将在下面更详细地说明。
ECC模块116可具有一定的“强度”,这里,ECC的“强度”可指示利用ECC模块116生成的内部ECC可校正的错误(例如,翻转比特)的最大数目。例如,ECC模块可以采用能够在一页中校正多达“t”个错误,并且能够在一页中检测多达“n”个错误的纠错码(这里,n是比t大的错误数)。这里使用的术语“t个错误”指的是ECC代码能够校正一页中的错误的最大数目,以及“n个错误”指的是ECC代码能够检测一页中的错误的最大数目。例如,如果一页包含不止t个错误,那么该页是不能用内部ECC数据校正的。类似地,如果该页包含不止n个错误,那么内部ECC数据可能不能适当地确定在该页中存在多少个错误。
ECC模块116可以用硬件,比如一个或多个线性反馈移位寄存器(LFSR)来实现,或者可以用处理器执行的软件来实现。对于软件实现来说,对应的程序代码可被保存在例如NVM 120或存储器114中。
NVM接口118可以包括配置成充当控制电路112和NVM 120之间的接口或驱动器的硬件和软件的任何适当组合。对包括在NVM接口118中的任何软件模块来说,对应的程序代码可被保存在NVM120或存储器114中。
NVM接口118可以实现允许控制电路112访问NVM 120,和管理NVM 120的存储单元(例如,页、块、超级块、芯片等)和保存在其中的数据(例如,用户数据)的各种功能。例如,NVM接口118可解释来自控制电路112的读取或写入命令,指令ECC模块116编码将被保存在NVM 12中的用户数据,指令ECC模块116解码从NVM 120读取的用户数据,进行垃圾回收,进行耗损均衡,生成与NVM 120的总线协议兼容的读取和程序指令,等等。
图2是电子设备200的示意图,该示意图详细地举例说明按照各个实施例的电子设备100(图1)的一些软件和硬件组件。于是,电子设备200可以具有上面结合图1说明的任何特征和功能,反之亦然。电子设备200可包括文件系统210、NVM接口218和NVM 220。例如,NVM接口218可以对应于图1的NVM接口118,并且可包括NVM驱动器232和NVM总线控制器234。文件系统210和NVM驱动器232可以是软件模块,而NVM总线控制器234和NVM 220可以是硬件模块。因而,NVM驱动器232可代表NVM接口218的软件方面,而NVM总线控制器234可代表NVM接口218的硬件方面。
文件系统210可包括任何适当类型的文件系统,比如文件分配表(“FAT”)文件系统,并且可以是电子设备200的操作系统的一部分(例如,图1的SoC控制电路的一部分)。在一些实施例中,文件系统210可包括闪速文件系统,比如另一个闪存文件系统(Yet Another FlashFile System,“YAFFS”)。在这些实施例中,文件系统210可以实现下面讨论的NVM驱动器232的一些或者全部功能,于是文件系统210和NVM驱动器232可以是或者可以不是独立的模块。
文件系统210可以为应用和操作系统管理文件和文件夹结构。文件系统210可在运行于电子设备200上的应用或操作系统的控制下工作,并且当所述应用或操作系统请求从NVM 220读取信息,或者把信息保存在NVM 220中时,可分别向NVM驱动器232提供读取和写入命令。连同每个读取或写入命令一起,文件系统210可提供指示用户数据应从何处读取或者被写入何处的逻辑地址,比如逻辑页地址,或者具有页偏移的逻辑块地址。
文件系统210可向NVM驱动器232提供并不直接兼容NVM 220的读取和写入请求。例如,逻辑地址可以利用基于硬盘驱动器的系统特有的约定或协议。不同于闪速存储器,基于硬盘驱动器的系统可在不首先进行块擦除的情况下重写存储单元。此外,硬盘驱动器不需要耗损均衡来提高设备的寿命。于是,NVM接口218可实现存储器特有的和/或厂家特有的处理文件系统请求的任何功能,并按照适合于NVM 220的方式执行其它管理功能。
NVM驱动器232可包括转换层236。在一些实施例中,转换层236可以是闪存转换层(“FTL”)。在写入操作时,转换层236可把逻辑地址映射到NVM 220上的空闲的已擦除物理地址。在读取操作时,转换层236能够利用逻辑地址确定所请求的数据被保存在的物理地址。由于每个NVM可具有随NVM的大小或厂家而定的不同布局,因此该映射操作可能是特定于存储器和/或厂家的。除了逻辑-物理地址映射之外,转换层236还可实现任何其它适当的功能。例如,转换层236可以实现闪存转换层特有的任何其它功能,比如垃圾回收和耗损均衡。
NVM驱动器232可以与NVM总线控制器234对接,以完成NVM访问请求(例如,写入、读取、擦除请求等)。例如,NVM驱动器232可向NVM总线控制器234提供保存或取回数据的物理地址,和对写入请求来说,待写的对应数据矢量(data vector)。NVM总线控制器216可充当相对于NVM 220的硬件接口,并且通过利用NVM 220的总线协议、数据速率和其它规范,能够与NVM 220通信。
NVM 218可根据存储器管理数据(这里有时称为“元数据”),管理NVM 220。元数据可以由NVM驱动器232生成,或者可以由在NVM驱动器232控制下工作的模块生成。元数据可包括例如用于管理逻辑地址和物理地址之间的映射的任何信息(例如,文件系统210提供的“逻辑地址”),坏块管理信息,耗损均衡信息,垃圾回收信息,纠错码(“ECC”)数据,或者它们的任意组合。从而,一般而言,这里使用的术语“元数据”指的是通常可用于管理非易失性存储器的操作和存储单元的关于或者涉及用户数据(从而不是用户数据)的任何信息。
NVM接口218可被配置成把元数据保存在NVM 220中。在一些实施例中,NVM接口218可把与用户数据相关的元数据保存在保存用户数据的相同存储单元(例如,页)。例如,NVM接口218可把用户数据、相关的逻辑地址、用户数据的ECC数据、和任何其它适当的元数据保存在NVM 220的一个存储单元。再例如,元数据可被保存在NVM 220的任何适当的存储单元。
如上所述,非易失性存储器(例如,图1的NVM 120)可被组织成芯片、块、页、超级块等。例如,图3和4表示NVM 320的示意布局。图3和4仅仅意图图解说明NVM 320的组织布局,并不指示非易失性存储器的实际的物理布局。例如,尽管在图3和4中,芯片0被图示成与芯片1邻接,不过这仅仅用于图解说明这些芯片的功能关系,以及在NVM 320的实际的物理布局中,这些芯片可以位于彼此相邻的位置,或者可不位于彼此相邻的位置。此外,虽然在图3和4中示出了一定数目的芯片、块和页,不过这仅仅用于举例说明,本领域的技术人员可理解NVM 320可包括任何适当数目的芯片、块和页。例如,NVM 320的每个芯片可包括4096个块,根据块是SLC块、2比特MLC块还是3比特MLC块,每个块可包括64、128或192个页,以及每个页可包括512字节。
如图3图解所示,NVM 320可包括一个或多个芯片(即,集成电路),比如芯片0、芯片1、芯片2和芯片3。每个芯片随后可被组织成一个或多个“块”。例如,芯片0被图示成被组织成块0-3。在NVM320的擦除命令期间,存储器的整个块可被一次擦除。芯片的每个块随后可被组织成一个或多个页。例如,芯片2的块0(例如,块302)被图示成被组织成页0-3。在NVM 320的读取或写入命令期间,整页可分别被一次读取或写入。NVM 320还可包括一个或多个超级块,所述超级块包括每个芯片的在该芯片中具有相同位置或“块编号”的一个块。例如,NVM 320的超级块0可包括每个芯片0-3的块0。类似地,NVM 320的超级块1可包括每个芯片0-3的块1,NVM 320的超级块2可包括每个芯片0-3的块2,等等。
NVM 320的每个超级块可包括通过包括该超级块的源于每个芯片的一页而形成的一个或多个“条带”,其中每个页在该芯片中具有相同的页编号。例如,图4表示NVM 320的条带310。条带310可包括超级块0的每个芯片1-3的相同页编号。在NVM 320的操作期间,条带和/或超级块的各页可被顺序处理。例如,在条带310的读取或写入操作期间,可以首先处理页320,接着是页330的处理,然后是页340的处理,以及最后是页350的处理。按照这种方式,包括在条带312中的数据可被视为信息的“代码字”。特别地,这里使用的术语“代码字”可以指的是包括在非易失性存储器的一个或多个相连页中,一起形成一条信息的数据。如下更详细所述,代码字并不局限于单个条带,而是可以包括来自一个或多个条带的相连页的数据。
NVM 320的每一页可包括任何适当的信息。例如,所述页可包括用户数据和/或元数据。在一些实施例中,诸如ECC数据之类的元数据可被包括在页中,以提供保存在NVM 320中的信息的检错和/或纠错。例如,ECC模块(例如,图1的ECC模块116)可把纠错码应用于单个页的用户数据,从而生成“内部ECC数据”。内部ECC数据随后可用于校正和/或核实所述单个页的用户数据。作为这一点的例示,图4表示条带312可包括页322、332、342和352。页322、332、342和352中的数据可一起形成代码字390。例如,页322可包括用户数据324的第一部分,和内部ECC数据326的第二部分。尽管为了简明起见而没有示出,不过页322还可包括用于NVM 320的管理或操作的任何其它适当数据或元数据(例如,位置数据,世代数据(generation data)等)。如上所述,通过使适当的ECC模块对页322的用户数据运行纠错码,以生成ECC数据,能够生成ECC数据326。
在页322的取回(例如,读取保存的数据,或者以其它方式访问该数据)过程中,页322的内部ECC数据可用于保持页322的用户数据的完整性。例如,如果在页322的用户数据中,存在“t”个错误或更少的错误,那么页322的内部ECC数据可被用于校正这些错误。类似地,如果在页322的用户数据中存在n个错误或更少的错误,那么页322的内部ECC数据可识别在页322中存在多少错误(例如,其中n可大于t)。类似地,诸如页332和342之类的页可包括用户数据和它们的相关内部ECC数据。
在一些实施例中,可为一页或多页的用户数据另外提供ECC数据。例如,ECC模块(例如,图1的ECC模块116)可对整个代码字的用户数据应用纠错码,以生成“外部ECC数据”。该外部ECC数据可用于校正整个代码字的用户数据。作为这一点的例示,图4示出可包括外部ECC数据356的条带312的页352,所述外部ECC数据356可以与页322、332和342的用户数据关联。换句话说,页352的外部ECC数据356可用于校正和/或检测整个代码字390中的错误。为了生成外部ECC数据356,如上所述,可对整个代码字390运行适当的纠错。
由于页352可包括整个代码字390的外部ECC数据(而不是例如关于仅仅单个页的内部ECC数据),因此页352可被称为“奇偶校验页”352。这里使用的术语“奇偶校验页”指的是NVM的能够包括用于校正和/或检测两页或者更多页数据的用户数据中的错误的外部ECC数据的页。在一些实施例中,奇偶校验页可以专用于外部ECC数据,从而可不包括它自己的任何用户数据。此外,虽然图4中图解说明了充满整个奇偶校验页352(例如,当使用奇偶校验页352中的所有字节的信息时)的外部ECC数据356,不过另一方面,外部ECC数据356可以只填充页352的一部分。特别地,外部ECC数据可以只使用和保持该外部ECC数据所必需的空间一样多的奇偶校验页的空间。例如,如果代码字390的外部ECC数据包括400字节的信息,而奇偶校验页352可保存512字节,那么该外部ECC数据可以只占据奇偶校验页352的512字节中的400字节。
按照这种方式,代码字390的每一页中的数据可受到两次保护。首先,利用每一页的内部ECC数据保护该页(例如,可用内部ECC数据326保护用户数据324)。例如,当用户数据324具有t个错误或者更少的错误时,内部ECC数据326可用于校正这些错误。随后通过奇偶校验页352的外部ECC数据356,能够为用户数据322提供第二层的保护。例如,如果用户数据322具有不止t个错误,那么页322的内部ECC数据326独自不足以校正用户数据322。在这种情况下,奇偶校验页352的外部ECC数据356可用于校正用户数据322。例如,可以生成涉及代码字的各页的用户数据,和奇偶校验页的外部ECC数据的方程式。为了简明起见,下面举例给出简单的加法方程式:
X=A+B+C (1)
其中X可以与奇偶校验页352的外部ECC数据有关,A可以与页322的用户数据有关,B可以与页332的用户数据有关,而C可以与页342的用户数据有关。为了简化例示,以加法方程式的形式提供了方程式(1),不过另一方面,可以使用涉及X、A、B和C的任何其它适当方程式。假定B和C都包括不到t个错误,从而能够正确地知道B和C的用户数据。如果A具有不止t个错误,那么A可以是其内部ECC数据不足以校正A的“不可校正”页。在这种情况下,通过关于A求解方程式(1),可以确定A的正确用户数据:
A=X-B-E (2)
按照这种方式,奇偶校验页352的外部ECC数据可用于确定一页的正确用户数据,从而能够为NVM 320的用户数据提供第二层保护。此外,即使当某页包含不止t个错误时(例如,即使当某页是“不可校正”时),这也可使该页的用户数据能够被校正。
在一些实施例中,NVM 320可包括例如与非易失性存储器中的其它数据相比,更重要或者更易于出错的用户数据。在这种情况下,理想的是为这样的数据提供额外的保护。例如,当为代码字提供一个奇偶校验页时,如果一页或者不到一页具有不止t个错误,那么该页中的用户数据仍然可被校正。不过,如果代码字包括具有不止t个错误的2页或者更多页,那么单个外部ECC数据独自不能校正这两页(例如,因为不能求解诸如方程式(1)之类的单个方程式,求出两个未知量)。从而,在一些实施例中,可以为一个代码字提供两组或者更多组的ECC数据(例如,两个或者更多的奇偶校验页),以便为该代码字的用户数据提供额外的保护。例如,ECC模块可以对整个代码字的用户数据运行两个纠错码,这种情况下,每个纠错码能够生成单个一组ECC数据。这两组ECC数据随后可被保存在代码字的两个奇偶校验页中。
在一些实施例中,代码字可以横跨超级块的两个或者更多的条带,而不是被局限于单个条带。例如,图5表示非易失性存储器的超级块500。例如,超级块500可对应于图3的NVM 320的任意超级块0-3。虽然在图5中,超级块500被图解表示成包括源于4个芯片(即,芯片0-3)每一个的一个块,并且这些块都被图示成具有4页(即,页0-4),不过这仅仅用于举例说明。另一方面,超级块500可包括任何适当数目的芯片和/或页。
如图5中所示,页Al、Bl和Yl可以形成单个代码字(“Codeword1”),其中Yl可以是“代码字1”的奇偶校验页。类似地,Al、B2、C2、XI和X2可以形成单个代码字(“Codeword 2”),其中XI和X2都可以是“代码字2”的奇偶校验页。虽然“代码字1”和“代码字2”分别被举例说明成具有3页和4页,不过这只是用于举例说明,另一方面,“代码字1”和“代码字2”可以包括任何适当数目的页。因而,图5图解说明代码字可以开始或结束于超级块500的任意适当位置,并不局限于开始和结束于某个位置(例如,局限于开始于条带的起点,或者结束于条带的终点)。按照这种方式,非易失性存储器的奇偶校验页在超级块内具有非规则分布。
图5还图解说明单个代码字可包括两个或者更多的奇偶校验页,以保护该代码字的用户数据。在一些实施例中,可以使用数目更多的奇偶校验页来保护更重要的信息,以及可以使用数目较少的奇偶校验页来保护不太重要的信息。再比如,在一些实施例中,可以使用数目更多的奇偶校验页来保护对错误更敏感的页,以及可以使用数目较少的奇偶校验页来保护对错误不太敏感的页。
因而,由于一个代码字可以具有与之相关的多个奇偶校验页,因此当多个页具有不止t个错误时(例如,当多个页是“不可校正”时),代码字是可以校正的。例如,图5的“代码字2”具有2个奇偶校验页X1和X2。从而,由于可获得2个奇偶校验页,因此能够生成涉及代码字的各页的用户数据,和奇偶校验页的ECC数据的2个适当方程式。例如,下面给出2个例证方程式:
X1=A2+B2+C2 (3)
X2=A2*B2*C2 (4)方程式(3)和(4)只是出于举例说明的目的给出的,可以使用足以支持两个不可校正页的恢复的任何其它两个方程式。例如,在一些实施例中,第一个方程式可以是简单的XOR方程式(例如,GF(2)加法方程式),以及第二个方程式可以是基于GF(2X)的Reed-Solomon方程式,其中x可以等于8或者任何其它适当的数字。
因而,如果多达2页的“代码字2”具有不止t个错误(例如,是“不可校正的”),那么可以同时求解方程式(3)和(4),以确定这些页的正确用户数据(例如,由于能够求解两个方程式,求出两个未知量)。从而,通过为代码字生成另外一组外部ECC数据,能够提供另外一层保护,以保护代码字免于数据错误。类似地,可以包括任何适当数目的奇偶校验页和外部ECC数据集,以保护代码字。例如,可以为一个代码字生成“n”组外部ECC数据,从而在存在n个或者更少的“不可校正”页(例如,具有t个或者更多的错误)的时候,可以校正该代码字。
这里使用的术语“不可校正”或“不可校正页”可以指的是具有不止t个错误,从而不能利用其中的内部ECC数据校正的页。不过,当包括不可校正页的代码字具有适当数目的奇偶校验页(例如,具有适当组数的外部ECC数据)时,不可校正页仍然可被修复。因而,这里使用的术语“不可校正页”并不意图意味该页决不能被校正,因为通过使用一个或多个奇偶校验页,这样的页仍然是可以修复的。
由于图5的奇偶校验页具有非规则分布,因此不易知道超级块的奇偶校验页位于何处(例如,由于代码字可开始和结束于任何位置)。因而,在一些实施例中,可在各页的元数据中包括标记,以指示各页中的哪些页是奇偶校验页。例如,可以包括“奇偶校验页标记”,作为每一页中的元数据标签。通常,单个比特可被用作该元数据标签。例如,如果该页是奇偶校验页,那么所述比特可以为“1”,以及如果该页不是奇偶校验页,那么所述比特可以为“0”,或者反过来。另一方面,任何其它适当数目的比特可用于奇偶校验页标记。
保存在每一页的元数据标签中的奇偶校验页标记可以提供系统的存储器中的空间节省。例如,如果不包括奇偶校验页标记,那么必须保存记录非易失性存储器的每一页,和该页是否是奇偶校验页的独立的表格(例如,保存在图1的NVM 120或存储器114中)。不过,如果每一页都包括奇偶校验页标记,而不是保持独立的表格,那么当取回某页以便处理(例如,读取,或者以其它方式使其数据被访问)时,系统能够确定该页是否是奇偶校验页。
为了帮助把各页正确地识别成奇偶校验页或非奇偶校验页,可以冗余保存包括奇偶校验页标记的元数据标签。例如,响应于写入请求,NVM接口(例如,图1的NVM接口118)可把数据及其相关的奇偶校验页标记保存在第一存储单元(例如,页)中,并且可把奇偶校验页标记的冗余副本保存在第二存储单元中。这样,即使第一存储单元变得不可访问,存储接口仍然能够从保存在第二存储单元中的备份副本恢复奇偶校验页标记。从而,系统仍然能够准确地确定该页是否是奇偶校验页。除了奇偶校验页标记之外,如在2009年9月18日提交的同时待审,并且共同转让的美国专利申请No.12/562,860,“METADATAREDUNDANCY SCHEMES FOR NON-VOLATILE MEMORIES”中所述,可以冗余地保存任何其它适当的元数据,该专利申请因此整体包含于此。
由于NVM的每一页都可包括奇偶校验页标记,因此能够确定该代码字内的任何代码字的大小。例如,再次参见图5,NVM接口(例如,或者电子设备的任何其它适当组件)可能正在扫描(例如,读取)超级块500的数据。举例来说,NVM接口当前正在扫描“代码字2”的页A2。为了确定“代码字2”的大小,NVM接口可以“向左扫描”,直到遇到奇偶校验页为止。
这里使用的术语“向左扫描”指的是沿着与当前的处理方向相反的方向,扫描NVM的各页。例如,在图5中,为了“向左扫描”,可以按照…A2,Yl,Bl,Al…等的顺序,扫描超级块500的各页。同样地,由于图5只表示NVM的功能描述,并不意图指示NVM的物理布局,因此“向左扫描”并不指示各页的物理布局,而仅仅意图指示处理各页的顺序。此外,当向左扫描时,扫描可以绕回各页,从而从一个条带进入另一个条带。例如,当向左扫描时,可以按照…C1,B2,A2…等的顺序处理各页。类似地,这里使用的术语“向右扫描”指的是沿着当前处理方向的方向,扫描NVM的各页。例如,在图5中,为了“向右扫描”,可以按照…Y1,A2,B2,C1,X1…等的顺序,扫描超级块500的各页。
因而,为了确定代码字的大小,例如,NVM接口(例如,或者电子设备的其它适当组件)可从页A2向左扫描。NVM接口可继续向左扫描,直到遇到奇偶校验页(即,页Y1)为止。例如,通过读取该页的奇偶校验页标记,NVM接口可确定该页是奇偶校验页。由于页Y1可指示前一个代码字的结尾,因此NVM接口可确定“代码字2”开始于在页Y1右侧的页(即,页A2)。为了定位“代码字2”的结尾,NVM接口可向右扫描,直到遇到奇偶校验页(例如页X1)为止。NVM接口随后可继续向右扫描,直到遇到非奇偶校验页(即,页A3),从而指示新的代码字已开始为止。NVM接口随后可根据这两次扫描,确定“代码字2”具有2个奇偶校验页(例如,由于在向右扫描中,遇到2个奇偶校验页),并且就长度来说,代码字的大小为5页(例如,页A2、B2、C2、X1和X2)。
在一些实施例中,除了奇偶校验页标记之外,或者代替奇偶校验页标记,各页可包括“第一页”标记。例如,在某页的元数据中可以包括指示该页是代码字中的第一页的元数据标签(例如,页A2可包括第一页元数据标签)。从而,在这种情况下,为了确定代码字的起点,NVM接口可向左扫描,直到遇到第一页元数据标签为止。
在一些实施例中,包括奇偶校验页的非规则分布会影响电子设备的各种操作。例如,奇偶校验页的非规则分布会影响电子设备的加电序列。如上所述,NVM接口可保存NVM的用户数据的逻辑-物理地址映射。特别地,可以创建独立的表格(即,“地址表”),以保持该逻辑-物理地址映射。不过,地址表可能变得过时(例如,用户数据可能被移动,而未更新地址表),或者归因于来自相邻位置的扰动影响、缺陷、失败的读取操作,或者归因于某些其它的引起错误的现象,而形成错误或者变得不可读。因而,为了帮助保持地址表的完整性,在NVM加电时,可以重建该地址表。例如,当加电时,可以扫描NVM的每一页,以及可以(例如,从该页的元数据中)读取每一页的逻辑地址。随后可以使所述逻辑地址与该页的物理地址关联,并保存在地址表中。
不过,由于奇偶校验页可能不包括用户数据,因此通常不需要把奇偶校验页的逻辑地址保存在地址表中。因而,当在电子设备的加电期间创建地址表的时候,这些页可被“跳过”。然而,由于奇偶校验页的非规则分布,系统不易知道奇偶校验页的位置。因而,在加电期间,可读取每一页的奇偶校验页标记。如果奇偶校验页标记指示该页是非奇偶校验页,那么该页的逻辑地址和相关的物理地址可被保存在地址表中。不过,如果奇偶校验页标记指示该页是奇偶校验页,那么该页可被跳过,其逻辑地址不被保存在地址表中。
现在参见图6,按照本发明的一些实施例,示出了例证处理600的流程图。当电子设备(例如,图1的电子设备100)加电时,可以执行处理600,以建立地址表。特别地,可以执行处理600,以建立与具有奇偶校验页的非规则分布的非易失性存储器相关的地址表。任何适当的存储接口,比如图1和2的NVM接口118或218可分别执行处理600,从而有时可像这样地说明处理600。不过,应明白存储系统或电子设备中的任何其它适当组件可被配置成执行这些步骤。
处理600可始于步骤602。例如,当电子设备加电时,可发生步骤602。在步骤604,处理600通过读取当前页的奇偶校验页标记,正在扫描NVM的各页。在步骤606,可以分析所述奇偶校验页标记,以确定该页是否是奇偶校验页。例如,为“1”的奇偶校验页标记可指示该页是奇偶校验页,而为“0”的奇偶校验页标记可指示该页不是奇偶校验页。另一方面,可以利用任何其它适当的标记或比特序列来指示该页是否是奇偶校验页。
响应于确定该页不是奇偶校验页,处理600可进入步骤608,把该页加入地址表中。特别地,在步骤608,可读取该页的逻辑地址。在步骤608,可以使读取的逻辑地址与该页的物理地址关联,然后保存在地址表中。
在步骤612,处理600可确定在NVM中是否存在还未被扫描的其它页(例如,物理位置)。响应于存在还未被扫描的其它页,在步骤616,处理600可进入NVM中的下一页。随后适当地循环和重复步骤604、606、608、610、612和616,直到扫描了整个NVM,并且完成了地址表为止。响应于在NVM中不存在待扫描的其它页,处理600可从步骤612进入步骤614,然后可结束该处理。
返回步骤606,响应于奇偶校验页标记指示当前页是奇偶校验页,处理600可直接进入步骤612。按照这种方式,通过绕过步骤608和610,奇偶校验页的逻辑地址可被跳过,从而不被保存在地址表中。因而,通过执行处理600,NVM接口能够建立包括包含用户数据的各页(例如,非奇偶校验页)的逻辑-物理地址的地址表,同时绕过只包括外部ECC数据的任何页(例如,奇偶校验页)。特别地,当确定该页是奇偶校验页时,处理300可忽视该奇偶校验页(例如,忽视奇偶校验页的元数据的逻辑地址区),改为继续扫描NVM的页,直到找到非奇偶校验页为止。
会受奇偶校验页的非规则分布影响的系统操作的另一个例子是从NVM取回数据的操作。例如,数据的取回可包括奇偶校验页被读取、处理或以其它方式使其保存的数据被访问的时候。当取回数据时,可能遇到一个或多个不可校正页(例如,具有不止t个错误的页)。在只具有单个奇偶校验页和/或规则分布的奇偶校验页的系统中,系统可自动知道在该代码字中,能够修复多少个不可校正页。不过,在具有奇偶校验页的非规则分布的系统中,在确定代码字是否能够被修复之前,系统首先需要确定与该代码字相关的奇偶校验页的数目。例如,如果在代码字的取回过程中,遇到两个不可校正页,那么系统需要确定该代码字是否具有两组(或者更多组)的外部ECC数据。如果该代码字与两组或者更多组的外部ECC数据关联,那么这两个不可校正页可以用无错误的页替换,从而能够复原代码字的正确性。
如上所述,系统可以应用方程式,比如方程式(1)(例如,当代码字具有一组外部ECC数据时)或者方程式(3)和(4)(例如,当代码字具有2组外部ECC数据时),或者任何其它适当的方程式,来修复代码字中的具有不止t个错误的不可校正页。从而,在一些实施例中,当正在取回代码字的时候,该代码字的数据可被缓存。随后,当整个代码字被取回时,系统可确定存在多少不可校正页,和多少个奇偶校验页可供该代码字利用。根据该信息,系统能够确定不可校正页是否能够被修复,如果是,那么可应用缓存的数据来求解适当的方程式,从而确定不可校正页的正确值。
在一些实施例中,可以在检测到不可校正页之后开始缓存,而不是从开始取回代码字时就缓存代码字。这例如可在系统中提供存储空间节省,因为没有任何不可校正页的代码字不需要被缓存。
例如,系统正在取回图5的代码字2,并且可以确定页B2是不可校正的。当遇到不可校正页时,系统随后可向左扫描,直到遇到代码字的起点(例如页A2)为止。系统随后可缓存在页B2左侧的一页或多页,以及缓存页B2本身。系统随后可继续取回和缓存代码字的在页B2之后的各页。响应于遇到另外的不可校正页,系统可继续取回和缓存代码字的各页,因为可能存在适当数目的修复这些不可校正页的奇偶校验页。换句话说,当遇到不可校正页时,系统可不自动假定代码字不可修复,因为在代码字的结尾,可能存在修复这些页的适当组数的外部ECC数据。当遇到代码字的结尾时,系统可以确定有多少个奇偶校验页可用(例如,通过读取各页的奇偶校验页标记),以及如果存在适当数目的奇偶校验页,那么修复不可校正页(例如,通过应用方程式(1)、(3)、(4)或者与任意适当组数的外部ECC数据相关的任何其它适当的方程式)。
在一些实施例中,可在取回代码字的时候,“动态”计算用于校正各页的一个或多个适当方程式,而不是缓存代码字。例如,在取回代码字的时候,系统可以好似该代码字与2个奇偶校验页(例如,或者任何其它适当数目的奇偶校验页)关联地处理各页。因而,在取回各页的时候,各页的数据可被用于动态更新诸如方程式(3)和(4)(例如,或者任何其它适当方程式)之类的方程式的计算。当到达代码字的结尾,并确定实际存在多少奇偶校验页时,系统可以例如应用这两个方程式、只应用方程式之一、不应用任何方程式、或者丢弃该代码字。例如,当确定存在2个不可校正页和2个奇偶校验页时,可以应用这两个方程式以修复这些页。再例如,当确定存在1个不可校正页和1个奇偶校验页时,可以使用计算的方程式之一来校正该页(而另一个计算的方程式可被丢弃)。又比如,当确定没有不可校正页时,可不使用任何计算的方程式,因为不需要任何修复。又比如,当确定不存在修复不可校正页的足够奇偶校验页时,代码字可被丢弃,因为它具有不准确的数据。类似地,可以使用在取回代码字的时候,计算3个或者更多的方程式的“动态”方法。
图7A、7B和8分别表示从非易失性存储器的代码字取回数据的处理700、750和800。任何适当的存储接口,例如图1和2的NVM接口118或218分别能够执行处理700、750和800,从而有时可如此说明这些处理。不过应明白存储系统或电子设备中的任何其它适当组件可被配置成执行这些步骤。
当取回代码字的各页的数据时,处理700和750可以例如缓存所述数据。缓存的数据随后可用于修复代码字的不可校正页。
处理700可从步骤702开始。在步骤704,可接收从NVM取回特定一组数据的请求。例如,可接收读取该数据、处理该数据、或者以其它方式访问该数据的请求。在步骤706,所述请求可被转换成相关的一组物理地址。例如,可以确定其中保存所述特定一组数据的各页的物理地址。
在步骤708,可以取回保存在步骤706的物理地址的数据。在取回该数据的时候,处理700可在步骤710,确定是否遇到了不可校正页。响应于未遇到不可校正页,可继续“正常”进行该物理地址的数据的取回。换句话说,可在不执行与外部ECC数据相关或者与修复不可校正页相关的额外步骤的情况下取回数据。
不过,响应于遇到不可校正页,处理700可进入步骤716。在步骤716,请求取回的数据可被缓存。例如,从不可校正页开始,NVM可向左扫描和向右扫描,以缓存保存于在步骤706确定的物理地址中的数据。该缓存数据随后可被用于修复一个或多个不可校正页。例如,缓存数据可以连同与该缓存数据相关的一个或多个外部ECC数据一起用于修复不可校正页。随后可在步骤714,结束处理700。
进入图7B,在取回该数据的时候,处理750可以例如缓存代码字的各页的数据。处理750的一些步骤可对应于图7A的处理700的一个或多个步骤。例如,处理750的各步骤可更详细地举例说明处理700的步骤708、710、712和714。
处理750可以从步骤752开始。在步骤754,可以取回代码字的第一页(例如,物理地址)。例如,“代码字”可对应于在处理700的步骤706确定的一组物理地址。为了取回一页的数据,该页可被读取、处理或者以其它方式使其保存的数据被访问。在步骤756,处理750可确定在步骤754取回的页是否是不可校正的。例如,如果该页具有不止t个错误,以致该页的任何内部ECC数据不能校正该页的错误,那么该页是不可校正的。响应于该页不是不可校正的,在步骤758,处理750可确定是否到达了代码字的结尾。如果还未到达代码字的结尾,那么处理750可返回步骤754,从而可取回下一页(例如,物理地址)。另一方面,如果已经到达了代码字的结尾,那么在步骤760可结束处理750。按照这种方式,当代码字的各页都不是不可校正的时候,可以取回整个代码字(即,通过循环步骤754、756和758),从而可在不使任何页被缓存的情况下结束处理750。
返回步骤756,响应于代码字的一页是不可校正的,在步骤762,NVM接口可“向左扫描”到代码字的起点。例如,通过向左扫描,直到到达其奇偶校验页标记(例如,元数据标签)指示它是奇偶校验页的一页为止,NVM接口能够识别代码字的起点。这种情况下,直接继续该奇偶校验页的页可被确定为代码字的起点。再例如,NVM接口可以向左扫描,直到遇到第一页元数据标签,从而指示该页是代码字的第一页为止。NVM接口可以缓存在步骤754取回的页的左侧的这些页,以及在步骤754取回的页本身。随后在步骤764和766,处理750可继续取回和缓存代码字的剩余各页。
响应于到达代码字的结尾并且整个代码字被缓存,在步骤768可确定奇偶校验页和不可校正页的数目。例如,在取回各页的时候,NVM接口可能已记录了不可校正页的数目。为了确定奇偶校验页的数目,NVM接口可跨越奇偶校验页“向右扫描”,直到到达其奇偶校验页标记指示它不是奇偶校验页(例如,从而指示代码字的所有奇偶校验页都已被扫描)为止。
可能存在各页不能通过利用一个或多个奇偶校验页来修复的情况。在这些情况下,NVM控制器可调用许多不可校正错误处理策略中的任意一种。例如,如果用户数据页是不可校正的,那么NVM控制器可通过访问易失性存储器中的数据结构,获得该页的元数据来恢复该页。恢复不可校正错误使系统能够继续工作,并维持数据一致性。恢复不可校正错误的另外细节可在例如与本申请同时提交的Post等人的美国专利申请No._______,名称为“Uncorrectable Error HandlingSchemes for Non-Volatile Memories”(代理人案号P8905US1)中找到,该申请的公开内容在此整体引为参考。再例如,如果索引页(即,NVM中保存逻辑扇区到物理地址的映射的页)是不可校正的,那么在调用复原操作之前,NVM可通过访问易失性存储器中的数据结构,来尝试重构该页。处理具有不可校正错误的索引页的另外细节可在例如2009年7月24日提交的Wakrat等人的美国专利申请No.12/509,071,和与本申请同时提交的Post等人的美国专利申请No.______,名称为“Garbage Collection Schemes for Index Block”(代理人案号P8907US1)中找到,这两件申请的公开内容都在此整体引为参考。
在步骤770,处理750可确定代码字是否可修复。例如,当奇偶校验页的数目等于或大于不可校正页的数目时,该代码字是可修复的。再例如,当奇偶校验页的数目小于不可校正页的数目时,该代码字是不可修复的。响应于代码字是可修复的,可在步骤772修复该代码字。例如,可以计算诸如方程式(1)(例如,当代码字具有一组外部ECC数据时),或者方程式(3)和(4)(例如,当代码字具有两组外部ECC数据时),或者任何其它适当的方程式之类的方程式,以修复不可校正页。随后可在步骤760结束处理750。不过,当代码字不可修复时,可在步骤774丢弃该代码字,因为它具有不准确的数据。
在一些实施例中,另一方面,处理750可开始于步骤764,前面的步骤可被省略。例如,这样做能够提供一种总是缓存代码字的数据,而不首先确定是否存在至少一个不可校正页的系统。
图8表示从非易失性存储器的一个代码字取回数据的处理800。例如,当取回该数据时,处理800可“动态”计算方程式,以便修复代码字的不可校正页。换句话说,处理800可以在不必缓存不可校正页的数据的情况下,修改这些不可校正页。尽管为简明起见而没有示出,不过处理800可另外包括诸如处理700的步骤704和706之类的预先步骤,其中接收对代码字的取回请求,然后该取回请求被转换成一组物理地址。
处理800可始于步骤802。在步骤804,处理可假定代码字将具有“m”个奇偶校验页(例如,“m”组外部ECC数据),并且将存在与这些奇偶校验页相关的“m”个方程式(例如,“m”可以是1、2、3、4或者任何其它适当的数目)。例如,当m等于1时,处理800可假定方程式(1)。再例如,当m等于2时,处理800可假定方程式(3)和(4)。
在步骤806,可以取回该代码字中的第一页。例如,该页可被读取、处理或者以其它方式使其保存的数据被访问。在步骤808,可利用取回页的数据更新在步骤804确定的一个或多个方程式的计算。在步骤810,处理800可确定是否到达了代码字的结尾。响应于未到达所述结尾,处理800可返回步骤806,然后可重复步骤808和810。按照这种方式,通过循环步骤806、808和810,直到到达了代码字的结尾为止,能够通过在代码字中从头到尾地不断前进、取回各页、并利用取回的各页的数据更新计算,来“动态地”计算步骤804的方程式。
响应于到达代码字的结尾,处理800可在步骤812,确定与该代码字相关的奇偶校验页的实际数目。例如,当到达代码字的奇偶校验页时,通过跨越奇偶校验页“向右扫描”,直到到达其奇偶校验页标记指示它不是奇偶校验页(例如,从而指示该代码字的所有奇偶校验页都已被扫描)的一页为止,NVM接口可确定奇偶校验页的数目。在步骤812确定的奇偶校验页的实际数目可以等于或者可不等于在步骤804假定的奇偶校验页的“m”数。在步骤812,NVM接口还能够确定代码字中的不可校正页的数目。例如,当取回代码字的时候,NVM接口可能已记录具有不止t个错误的页的数目。
在步骤814,可从“m”个方程式中丢弃“虚假”方程式(如果有的话)。虚假方程式可包括在处理800中计算的假定存在,但是对其来说,不存在创建该方程式的适当外部ECC数据的任何方程式。例如,在步骤804,NVM接口可能已假定存在2个奇偶校验页,从而在代码字被取回的时候,动态计算了方程式(3)和(4)。不过,在步骤812,NVM接口可能确定只存在与该代码字相关的一个实际奇偶校验页。因而,在步骤814,方程式(4)可作为虚假方程式被丢弃。
在步骤816,处理800可确定代码字是否可修复。例如,如果在步骤814未被丢弃的方程式的数目(例如,或者在步骤812确定的实际奇偶校验页的数目)等于或大于不可校正页的数目,那么该代码字是可修复的。响应于该代码字是可修复的,随后可在步骤818修复该代码字,之后可在步骤820结束处理。例如,在步骤814未被丢弃的“m”个方程式中的一个或多个方程式可被用于求解不可校正页的正确值。不过当代码字不可修复时,该代码字例如可在步骤822被丢弃,因为具有不准确的数据。
应明白上面说明的处理仅仅是例证性的。可以消除、修改或组合任意步骤,或者可以增加任何另外的步骤,而不脱离本发明的范围。
本发明的所述实施例是出于举例说明的目的给出的,而不是对本发明的限制。
Claims (24)
1.一种在非易失性存储器(“NVM”)中保存数据的方法,其中所述NVM包括多个页,所述方法包括:
选择将对数据采用的编码技术,其中所述数据的大小大于所述多个页之一的大小;
把所述编码技术应用于所述数据,从而生成具有奇偶校验元数据的至少一个页;
把所述数据编排到所述多个页的第一部分中;和
把所述奇偶校验元数据保存在所述多个页的第二部分中,其中所述保存包括在所述第二部分的每一页中标记元数据字段,以指示所述第二部分保存奇偶校验元数据。
2.按照权利要求1所述的方法,其中所述第二部分包含至少两页。
3.按照权利要求1所述的方法,还包括:
在所述NVM的第二存储单元,冗余保存指示所述第二部分保存奇偶校验元数据的元数据字段。
4.按照权利要求1所述的方法,其中所述第二部分包括跨NVM的非规则分布。
5.按照权利要求1所述的方法,还包括:
确定所述第一部分包含至少一个不可校正页;和
利用所述奇偶校验元数据修复所述至少一个不可校正页。
6.按照权利要求1所述的方法,其中所述非易失性存储器包括闪速存储器。
7.一种建立非易失性存储器(“NVM”)的逻辑-物理映射地址表的方法,其中所述NVM包括多个页,以及其中每一页与唯一物理地址关联,所述方法包括:
利用以下操作处理所述多个页中的第一页:
读取第一页的第一元数据标签,其中所述第一元数据标签指示所述第一页是否是奇偶校验页;
响应于确定所述第一元数据标签指示所述第一页不是奇偶校验页:
确定所述第一页的第一逻辑地址;和
把所述第一逻辑地址连同所述第一页的唯一物理地址保存在所述逻辑-物理映射地址表中;和
响应于确定所述第一元数据标签指示所述第一页是奇偶校验页,跳过所述第一页,以致所述第一逻辑地址不被保存在地址表中。
8.按照权利要求7所述的方法,还包括:
确定NVM已被通电;和
其中响应于确定NVM已被通电,读取所述第一元数据标签。
9.按照权利要求7所述的方法,还包括:
通过进入所述多个页中的下一页并对所述下一页进行处理,直到处理了所述多个页中的最后一页为止,顺序处理所述多个页中的每一页。
10.按照权利要求7所述的方法,其中确定第一逻辑地址包括:
从所述第一页的元数据读取第一逻辑地址。
11.一种电子设备,包括:
包含多个页的非易失性存储器(“NVM”),其中:
所述多个页的子集是奇偶校验页;和
所述多个页被分组成多个代码字,所述多个代码字中的每个代码字包括所述多个页中的至少两个相连页,并且包含至少一个奇偶校验页,以及其中所述多个代码字的至少第一子集包含至少两个奇偶校验页;和
控制对所述NVM的各个页的访问的处理器,其中所述处理器被配置成:
在每个奇偶校验页中标记元数据字段,以指示该页是奇偶校验页。
12.按照权利要求11所述的电子设备,还包括:
纠错码模块,所述纠错码模块被配置成:
把编码技术应用于所述多个代码字中的特定代码字的用户数据,以生成与所述特定代码字相关的奇偶校验元数据;和
其中所述处理器还被配置成:
把所述奇偶校验元数据保存在所述特定代码字的至少一个奇偶校验页中。
13.按照权利要求11所述的电子设备,其中所述处理器还被配置成:
取回特定代码字的每一页;
在取回过程中,识别所述特定代码字的不可校正页;
响应于遇到不可校正页,向左扫描以缓存所述特定代码字中,在所述不可校正页之前的每一页的数据;
响应于遇到不可校正页,向右扫描以确定所述特定代码字的结尾;和
当取回在不可校正页之后的每一页时,缓存不可校正页的数据,和代码字中在不可校正页之后的每一页的数据。
14.按照权利要求13所述的电子设备,其中所述处理器还被配置成:
通过向左扫描直到遇到奇偶校验页标记为止,来确定特定代码字的起点。
15.按照权利要求13所述的电子设备,其中所述处理器还被配置成:
通过向左扫描直到遇到第一页元数据标签为止,来确定特定代码字的起点。
16.按照权利要求13所述的电子设备,其中所述处理器还被配置成:
通过向右扫描直到遇到在奇偶校验页标记后的非奇偶校验页标记为止,来确定特定代码字的结尾。
17.按照权利要求13所述的电子设备,其中所述处理器还被配置成:
通过向右扫描直到遇到第一页元数据标签为止,来确定特定代码字的结尾。
18.按照权利要求13所述的电子设备,其中所述处理器还被配置成:
根据缓存的数据和包含在特定代码字中的至少一个奇偶校验页,来修复不可校正页。
19.按照权利要求11所述的电子设备,其中所述处理器还被配置成:
根据特定代码字包含第一数目的假定奇偶校验页的预先假设,生成至少两个奇偶校验方程式;
取回所述特定代码字;和
当取回每一页时,利用特定代码字的每一页的数据更新所述至少两个奇偶校验方程式的计算。
20.按照权利要求19所述的电子设备,其中所述处理器还被配置成:
当取回特定代码字的结尾时,通过读取每个实际奇偶校验页的元数据标签,来确定与所述特定代码字相关的第二数目的实际奇偶校验页;
确定第二数目小于第一数目;和
丢弃所述至少两个奇偶校验方程式的除第二数目以外的所有的更新计算。
21.按照权利要求19所述的电子设备,其中所述处理器还被配置成:
当取回特定代码字的结尾时,通过读取每个实际奇偶校验页的元数据标签,来确定与所述特定代码字相关的第二数目的实际奇偶校验页;
确定第二数目等于第一数目;和
利用所述至少两个奇偶校验方程式的更新计算,来修复所述特定代码字的至少一个不可校正页。
22.按照权利要求11所述的电子设备,还包括:
集成电路封装,其中所述NVM和处理器被包括在所述集成电路封装中。
23.按照权利要求11所述的电子设备,还包括:
集成电路封装,其中所述NVM被包含在所述集成电路封装中,以及其中所述处理器被实现在所述集成电路封装外部的片上系统中。
24.按照权利要求11所述的电子设备,其中所述非易失性存储器包括闪速存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/729,564 US8726126B2 (en) | 2010-03-23 | 2010-03-23 | Non-regular parity distribution detection via metadata tag |
US12/729,564 | 2010-03-23 | ||
PCT/US2011/023197 WO2011119255A2 (en) | 2010-03-23 | 2011-01-31 | Non-regular parity distribution detection via metadata tag |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103038830A true CN103038830A (zh) | 2013-04-10 |
CN103038830B CN103038830B (zh) | 2016-03-09 |
Family
ID=44509772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180021937.1A Expired - Fee Related CN103038830B (zh) | 2010-03-23 | 2011-01-31 | 借助元数据标签的非规则奇偶校验分布检测 |
Country Status (9)
Country | Link |
---|---|
US (2) | US8726126B2 (zh) |
EP (1) | EP2550745B1 (zh) |
JP (1) | JP5675954B2 (zh) |
KR (2) | KR101730510B1 (zh) |
CN (1) | CN103038830B (zh) |
AU (1) | AU2011229938B2 (zh) |
BR (1) | BR112012023932A2 (zh) |
MX (1) | MX2012010944A (zh) |
WO (1) | WO2011119255A2 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105122215A (zh) * | 2013-06-03 | 2015-12-02 | 桑迪士克科技股份有限公司 | 三维存储器的适应性操作 |
CN106326028A (zh) * | 2015-07-03 | 2017-01-11 | 爱思开海力士有限公司 | 具有不同奇偶校验区的存储器件 |
CN107403646A (zh) * | 2016-04-27 | 2017-11-28 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
CN107430671A (zh) * | 2015-03-31 | 2017-12-01 | 西门子公司 | 用于在缓存中保护对安全重要的数据的方法 |
CN110389724A (zh) * | 2019-07-23 | 2019-10-29 | 深圳忆联信息系统有限公司 | 基于固态硬盘的parity page识别方法和装置 |
US10510430B2 (en) | 2016-04-27 | 2019-12-17 | Silicon Motion, Inc. | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
CN111081308A (zh) * | 2018-10-19 | 2020-04-28 | 奈奎斯特半导体有限公司 | 用于混合非易失性存储系统的系统和方法 |
WO2020107301A1 (zh) * | 2018-11-29 | 2020-06-04 | 华为技术有限公司 | 一种编码方法、译码方法以及存储控制器 |
US10713115B2 (en) | 2016-04-27 | 2020-07-14 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
CN111538618A (zh) * | 2018-12-28 | 2020-08-14 | 美光科技公司 | 用于一次性奇偶校验的装置和技术 |
US10771091B2 (en) | 2016-04-27 | 2020-09-08 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10846173B2 (en) | 2016-04-27 | 2020-11-24 | Silicon Motion, Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US11323133B2 (en) | 2016-04-27 | 2022-05-03 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438455B2 (en) * | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
KR20120029239A (ko) * | 2010-09-16 | 2012-03-26 | 삼성전자주식회사 | Pram을 이용하는 데이터 기록 시스템 및 그 방법 |
KR101732030B1 (ko) * | 2010-12-22 | 2017-05-04 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI444825B (zh) * | 2011-03-29 | 2014-07-11 | Phison Electronics Corp | 記憶體儲存裝置、記憶體控制器與資料寫入方法 |
US20120297256A1 (en) * | 2011-05-20 | 2012-11-22 | Qualcomm Incorporated | Large Ram Cache |
JP5364807B2 (ja) * | 2011-06-08 | 2013-12-11 | パナソニック株式会社 | メモリコントローラ及び不揮発性記憶装置 |
US9098399B2 (en) | 2011-08-31 | 2015-08-04 | SMART Storage Systems, Inc. | Electronic system with storage management mechanism and method of operation thereof |
US9021231B2 (en) | 2011-09-02 | 2015-04-28 | SMART Storage Systems, Inc. | Storage control system with write amplification control mechanism and method of operation thereof |
US9021319B2 (en) | 2011-09-02 | 2015-04-28 | SMART Storage Systems, Inc. | Non-volatile memory management system with load leveling and method of operation thereof |
US9063844B2 (en) | 2011-09-02 | 2015-06-23 | SMART Storage Systems, Inc. | Non-volatile memory management system with time measure mechanism and method of operation thereof |
US8756458B2 (en) | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
WO2013089715A1 (en) * | 2011-12-14 | 2013-06-20 | Intel Corporation | Storage of codeword portions |
US9239781B2 (en) * | 2012-02-07 | 2016-01-19 | SMART Storage Systems, Inc. | Storage control system with erase block mechanism and method of operation thereof |
WO2013138552A1 (en) * | 2012-03-16 | 2013-09-19 | Marvell World Trade Ltd. | Architecture for storage of data on nand flash memory |
US9146856B2 (en) | 2012-04-10 | 2015-09-29 | Micron Technology, Inc. | Remapping and compacting in a memory device |
JP5874525B2 (ja) * | 2012-05-11 | 2016-03-02 | ソニー株式会社 | 制御装置、記憶装置、記憶制御方法 |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
CN104025056B (zh) | 2012-11-23 | 2015-08-19 | 华为技术有限公司 | 一种数据恢复的方法及设备 |
US9021339B2 (en) * | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9671962B2 (en) * | 2012-11-30 | 2017-06-06 | Sandisk Technologies Llc | Storage control system with data management mechanism of parity and method of operation thereof |
US9059736B2 (en) * | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9214963B1 (en) | 2012-12-21 | 2015-12-15 | Western Digital Technologies, Inc. | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
US9123445B2 (en) | 2013-01-22 | 2015-09-01 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US9146808B1 (en) * | 2013-01-24 | 2015-09-29 | Emulex Corporation | Soft error protection for content addressable memory |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9183137B2 (en) | 2013-02-27 | 2015-11-10 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US9043780B2 (en) | 2013-03-27 | 2015-05-26 | SMART Storage Systems, Inc. | Electronic system with system modification control mechanism and method of operation thereof |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9543025B2 (en) | 2013-04-11 | 2017-01-10 | Sandisk Technologies Llc | Storage control system with power-off time estimation mechanism and method of operation thereof |
US10546648B2 (en) | 2013-04-12 | 2020-01-28 | Sandisk Technologies Llc | Storage control system with data management mechanism and method of operation thereof |
US9898056B2 (en) | 2013-06-19 | 2018-02-20 | Sandisk Technologies Llc | Electronic assembly with thermal channel and method of manufacture thereof |
US9244519B1 (en) | 2013-06-25 | 2016-01-26 | Smart Storage Systems. Inc. | Storage system with data transfer rate adjustment for power throttling |
US9367353B1 (en) | 2013-06-25 | 2016-06-14 | Sandisk Technologies Inc. | Storage control system with power throttling mechanism and method of operation thereof |
US9146850B2 (en) | 2013-08-01 | 2015-09-29 | SMART Storage Systems, Inc. | Data storage system with dynamic read threshold mechanism and method of operation thereof |
US9448946B2 (en) | 2013-08-07 | 2016-09-20 | Sandisk Technologies Llc | Data storage system with stale data mechanism and method of operation thereof |
US9431113B2 (en) | 2013-08-07 | 2016-08-30 | Sandisk Technologies Llc | Data storage system with dynamic erase block grouping mechanism and method of operation thereof |
US9361222B2 (en) | 2013-08-07 | 2016-06-07 | SMART Storage Systems, Inc. | Electronic system with storage drive life estimation mechanism and method of operation thereof |
US9880926B1 (en) * | 2013-08-20 | 2018-01-30 | Seagate Technology Llc | Log structured reserved zone for a data storage device |
CN104424107B (zh) * | 2013-09-03 | 2020-02-04 | 北京谊安医疗系统股份有限公司 | 麻醉机标校数据的可靠存储方法及装置 |
CN105706059B (zh) | 2013-09-27 | 2019-09-06 | 英特尔公司 | 非易失性存储器中的错误校正 |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9588882B2 (en) | 2013-12-02 | 2017-03-07 | Intel Corporation | Non-volatile memory sector rotation |
US9612908B2 (en) | 2015-02-20 | 2017-04-04 | Qualcomm Incorporated | Performing memory data scrubbing operations in processor-based memory in response to periodic memory controller wake-up periods |
US9921909B2 (en) | 2015-07-03 | 2018-03-20 | Qualcomm Incorporated | Systems and methods for providing error code detection using non-power-of-two flash cell mapping |
US9552163B1 (en) | 2015-07-03 | 2017-01-24 | Qualcomm Incorporated | Systems and methods for providing non-power-of-two flash cell mapping |
US10133625B2 (en) * | 2015-08-11 | 2018-11-20 | Western Digital Technologies, Inc. | Storing parity data separate from protected data |
US9946594B2 (en) | 2015-08-19 | 2018-04-17 | International Business Machines Corporation | Validation bits and offsets to represent logical pages split between data containers |
US9929750B2 (en) | 2015-09-08 | 2018-03-27 | Toshiba Memory Corporation | Memory system |
US10459793B2 (en) | 2016-03-17 | 2019-10-29 | Western Digital Technologies, Inc. | Data reliability information in a non-volatile memory device |
US10554334B2 (en) * | 2017-10-17 | 2020-02-04 | Hewlett Packard Enterprise Development Lp | Nominally unguaranteed error-detection codes for sub-data packets |
JP7030636B2 (ja) * | 2018-07-12 | 2022-03-07 | キオクシア株式会社 | メモリシステムおよびその制御方法 |
US12007886B2 (en) * | 2018-09-12 | 2024-06-11 | International Business Machines Corporation | Addressing page-correlated read issues using intra-block parity |
US10929069B2 (en) | 2018-09-12 | 2021-02-23 | International Business Machines Corporation | Addressing page-correlated read issues using intra-block parity |
US11301325B2 (en) | 2020-05-29 | 2022-04-12 | Intel Corporation | Memory in integrity performance enhancement systems and methods |
WO2022205332A1 (en) | 2021-04-01 | 2022-10-06 | Micron Technology, Inc. | Recording and decoding of information related to memory errors identified by microprocessors |
US11726873B2 (en) * | 2021-12-20 | 2023-08-15 | Micron Technology, Inc. | Handling memory errors identified by microprocessors |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157950A1 (en) * | 2007-12-14 | 2009-06-18 | Robert David Selinger | NAND flash module replacement for DRAM module |
US20090158085A1 (en) * | 2007-12-13 | 2009-06-18 | Spansion Llc | Power safe translation table operation in flash memory |
US20090172335A1 (en) * | 2007-12-31 | 2009-07-02 | Anand Krishnamurthi Kulkarni | Flash devices with raid |
US20100131697A1 (en) * | 2008-11-23 | 2010-05-27 | Sandisk Il Ltd. | Methods for tag-grouping of blocks in storage devices |
US20100281341A1 (en) * | 2009-05-04 | 2010-11-04 | National Tsing Hua University | Non-volatile memory management method |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5009A (en) * | 1847-03-13 | Ratchet-wrench | ||
US4785452A (en) | 1986-04-25 | 1988-11-15 | International Business Machines Corporation | Error detection using variable field parity checking |
US6529997B1 (en) | 2000-08-11 | 2003-03-04 | Storage Technology Corporation | Apparatus and method for writing and reading data to and from a virtual volume of redundant storage devices |
JP4256600B2 (ja) | 2001-06-19 | 2009-04-22 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
JP2004152196A (ja) | 2002-10-31 | 2004-05-27 | Lexer Research Inc | 機能オブジェクト表象装置 |
JP2004152194A (ja) * | 2002-10-31 | 2004-05-27 | Ricoh Co Ltd | メモリデータ保護方法 |
US20050028067A1 (en) | 2003-07-31 | 2005-02-03 | Weirauch Charles R. | Data with multiple sets of error correction codes |
US7139863B1 (en) | 2003-09-26 | 2006-11-21 | Storage Technology Corporation | Method and system for improving usable life of memory devices using vector processing |
TWI309776B (en) * | 2003-10-24 | 2009-05-11 | Hon Hai Prec Ind Co Ltd | Secure storage system and method for solid memory |
US7328305B2 (en) | 2003-11-03 | 2008-02-05 | Network Appliance, Inc. | Dynamic parity distribution technique |
US7136973B2 (en) | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
US7549089B1 (en) * | 2004-09-27 | 2009-06-16 | Network Appliance, Inc. | Lost write detection in a storage redundancy layer of a storage server |
US7366825B2 (en) | 2005-04-26 | 2008-04-29 | Microsoft Corporation | NAND flash memory management |
US7389397B2 (en) | 2005-06-01 | 2008-06-17 | Sandisk Il Ltd | Method of storing control information in a large-page flash memory device |
US7533330B2 (en) | 2005-06-27 | 2009-05-12 | Seagate Technology Llc | Redundancy for storage data structures |
US20070083697A1 (en) | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
US20070268905A1 (en) | 2006-05-18 | 2007-11-22 | Sigmatel, Inc. | Non-volatile memory error correction system and method |
JP2008077783A (ja) | 2006-09-22 | 2008-04-03 | Fujitsu Ltd | 記憶データ処理装置、記憶装置、記憶データ処理プログラム |
US7694091B2 (en) | 2006-10-23 | 2010-04-06 | Hewlett-Packard Development Company, L.P. | Non-volatile storage for backing up volatile storage |
US20080288712A1 (en) | 2007-04-25 | 2008-11-20 | Cornwell Michael J | Accessing metadata with an external host |
US8332574B2 (en) | 2007-04-30 | 2012-12-11 | Sandisk Il Ltd. | Method for efficient storage of metadata in flash memory |
KR100852193B1 (ko) | 2007-05-02 | 2008-08-13 | 삼성전자주식회사 | 오류 제어 코드 장치 및 그 방법 |
KR101433859B1 (ko) | 2007-10-12 | 2014-08-27 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법 |
US8751755B2 (en) * | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US7941692B2 (en) * | 2007-12-31 | 2011-05-10 | Intel Corporation | NAND power fail recovery |
US9542431B2 (en) * | 2008-10-24 | 2017-01-10 | Microsoft Technology Licensing, Llc | Cyclic commit transaction protocol |
KR101014040B1 (ko) * | 2009-03-19 | 2011-02-14 | (주)인디링스 | 디램 버퍼 관리 장치 및 방법 |
US8468293B2 (en) | 2009-07-24 | 2013-06-18 | Apple Inc. | Restore index page |
US8281065B2 (en) * | 2009-09-01 | 2012-10-02 | Apple Inc. | Systems and methods for determining the status of memory locations in a non-volatile memory |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
US8316175B2 (en) * | 2009-11-03 | 2012-11-20 | Inphi Corporation | High throughput flash memory system |
JP5525605B2 (ja) * | 2009-11-04 | 2014-06-18 | 株式会社日立製作所 | フラッシュメモリモジュール |
US8364886B2 (en) * | 2010-01-26 | 2013-01-29 | Seagate Technology Llc | Verifying whether metadata identifies a most current version of stored data in a memory space |
KR101678868B1 (ko) * | 2010-02-11 | 2016-11-23 | 삼성전자주식회사 | 플래시 주소 변환 장치 및 그 방법 |
US8478796B2 (en) | 2010-03-23 | 2013-07-02 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
US8812816B2 (en) | 2010-03-23 | 2014-08-19 | Apple Inc. | Garbage collection schemes for index block |
-
2010
- 2010-03-23 US US12/729,564 patent/US8726126B2/en not_active Expired - Fee Related
-
2011
- 2011-01-31 CN CN201180021937.1A patent/CN103038830B/zh not_active Expired - Fee Related
- 2011-01-31 WO PCT/US2011/023197 patent/WO2011119255A2/en active Search and Examination
- 2011-01-31 BR BR112012023932A patent/BR112012023932A2/pt not_active IP Right Cessation
- 2011-01-31 AU AU2011229938A patent/AU2011229938B2/en not_active Ceased
- 2011-01-31 MX MX2012010944A patent/MX2012010944A/es active IP Right Grant
- 2011-01-31 KR KR1020127027758A patent/KR101730510B1/ko active IP Right Grant
- 2011-01-31 EP EP11703102.1A patent/EP2550745B1/en not_active Not-in-force
- 2011-01-31 KR KR1020127027498A patent/KR101417561B1/ko active IP Right Grant
- 2011-01-31 JP JP2013501263A patent/JP5675954B2/ja not_active Expired - Fee Related
-
2014
- 2014-01-28 US US14/166,174 patent/US9274887B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090158085A1 (en) * | 2007-12-13 | 2009-06-18 | Spansion Llc | Power safe translation table operation in flash memory |
US20090157950A1 (en) * | 2007-12-14 | 2009-06-18 | Robert David Selinger | NAND flash module replacement for DRAM module |
US20090172335A1 (en) * | 2007-12-31 | 2009-07-02 | Anand Krishnamurthi Kulkarni | Flash devices with raid |
US20100131697A1 (en) * | 2008-11-23 | 2010-05-27 | Sandisk Il Ltd. | Methods for tag-grouping of blocks in storage devices |
US20100281341A1 (en) * | 2009-05-04 | 2010-11-04 | National Tsing Hua University | Non-volatile memory management method |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105122215A (zh) * | 2013-06-03 | 2015-12-02 | 桑迪士克科技股份有限公司 | 三维存储器的适应性操作 |
CN105122215B (zh) * | 2013-06-03 | 2018-03-20 | 桑迪士克科技有限责任公司 | 三维存储器的适应性操作 |
CN107430671A (zh) * | 2015-03-31 | 2017-12-01 | 西门子公司 | 用于在缓存中保护对安全重要的数据的方法 |
US11003594B2 (en) | 2015-03-31 | 2021-05-11 | Siemens Aktiengesellschaft | Method for protecting security-relevant data in a cache memory |
CN106326028B (zh) * | 2015-07-03 | 2021-02-02 | 爱思开海力士有限公司 | 具有不同奇偶校验区的存储器件 |
CN106326028A (zh) * | 2015-07-03 | 2017-01-11 | 爱思开海力士有限公司 | 具有不同奇偶校验区的存储器件 |
US11916569B2 (en) | 2016-04-27 | 2024-02-27 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
US10771091B2 (en) | 2016-04-27 | 2020-09-08 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10643733B2 (en) | 2016-04-27 | 2020-05-05 | Silicon Motion, Inc. | Method, flashing memory controller, memory device for accessing 3D flash memory having multiple memory chips |
US11847023B2 (en) | 2016-04-27 | 2023-12-19 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
CN107403646B (zh) * | 2016-04-27 | 2020-06-09 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US10713115B2 (en) | 2016-04-27 | 2020-07-14 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
US11500722B2 (en) | 2016-04-27 | 2022-11-15 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
CN107403646A (zh) * | 2016-04-27 | 2017-11-28 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US10846173B2 (en) | 2016-04-27 | 2020-11-24 | Silicon Motion, Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10510430B2 (en) | 2016-04-27 | 2019-12-17 | Silicon Motion, Inc. | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
US11323133B2 (en) | 2016-04-27 | 2022-05-03 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
US11030042B2 (en) | 2016-04-27 | 2021-06-08 | Silicon Motion, Inc. | Flash memory apparatus and storage management method for flash memory |
CN111081308A (zh) * | 2018-10-19 | 2020-04-28 | 奈奎斯特半导体有限公司 | 用于混合非易失性存储系统的系统和方法 |
CN111081308B (zh) * | 2018-10-19 | 2023-08-15 | 英韧科技(上海)有限公司 | 用于混合非易失性存储系统的系统和方法 |
CN113168882A (zh) * | 2018-11-29 | 2021-07-23 | 华为技术有限公司 | 一种编码方法、译码方法以及存储控制器 |
WO2020107301A1 (zh) * | 2018-11-29 | 2020-06-04 | 华为技术有限公司 | 一种编码方法、译码方法以及存储控制器 |
US11467901B2 (en) | 2018-12-28 | 2022-10-11 | Micron Technology, Inc. | Disposable parity |
CN111538618B (zh) * | 2018-12-28 | 2021-09-17 | 美光科技公司 | 用于一次性奇偶校验的装置和技术 |
CN111538618A (zh) * | 2018-12-28 | 2020-08-14 | 美光科技公司 | 用于一次性奇偶校验的装置和技术 |
CN110389724A (zh) * | 2019-07-23 | 2019-10-29 | 深圳忆联信息系统有限公司 | 基于固态硬盘的parity page识别方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103038830B (zh) | 2016-03-09 |
BR112012023932A2 (pt) | 2016-08-02 |
JP5675954B2 (ja) | 2015-02-25 |
EP2550745B1 (en) | 2014-08-27 |
US8726126B2 (en) | 2014-05-13 |
KR101417561B1 (ko) | 2014-07-08 |
WO2011119255A3 (en) | 2012-10-11 |
AU2011229938A1 (en) | 2012-11-08 |
US9274887B2 (en) | 2016-03-01 |
KR101730510B1 (ko) | 2017-04-26 |
AU2011229938B2 (en) | 2014-07-31 |
US20110239088A1 (en) | 2011-09-29 |
WO2011119255A2 (en) | 2011-09-29 |
KR20120139830A (ko) | 2012-12-27 |
MX2012010944A (es) | 2013-03-05 |
US20140143634A1 (en) | 2014-05-22 |
EP2550745A2 (en) | 2013-01-30 |
KR20120134144A (ko) | 2012-12-11 |
JP2013522792A (ja) | 2013-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103038830B (zh) | 借助元数据标签的非规则奇偶校验分布检测 | |
US11113149B2 (en) | Storage device for processing corrupted metadata and method of operating the same | |
US8402217B2 (en) | Implementing RAID in solid state memory | |
US8904261B2 (en) | Data management in solid state storage devices | |
CN101937374B (zh) | 存储存储器重映射信息的非易失性存储器 | |
US8832507B2 (en) | Systems and methods for generating dynamic super blocks | |
US8892981B2 (en) | Data recovery using outer codewords stored in volatile memory | |
US8756398B2 (en) | Partitioning pages of an electronic memory | |
KR20100082710A (ko) | 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 | |
CN103119569A (zh) | 基于存储条的非易失性多级存储器操作 | |
US20130254463A1 (en) | Memory system | |
US20120254694A1 (en) | Redundant storage in non-volatile memory by storing redundancy information in volatile memory | |
US20150046772A1 (en) | Method and device for error correcting code (ecc) error handling | |
CN111338990B (zh) | 一种数据存储装置及数据存储方法与存储系统 | |
CN104252317A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
CN104252600A (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
JP2022144469A (ja) | メモリシステム | |
TW202101221A (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
JP2006127441A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160309 Termination date: 20220131 |
|
CF01 | Termination of patent right due to non-payment of annual fee |