CN101473308A - 非易失性存储器纠错系统和方法 - Google Patents
非易失性存储器纠错系统和方法 Download PDFInfo
- Publication number
- CN101473308A CN101473308A CNA2007800171821A CN200780017182A CN101473308A CN 101473308 A CN101473308 A CN 101473308A CN A2007800171821 A CNA2007800171821 A CN A2007800171821A CN 200780017182 A CN200780017182 A CN 200780017182A CN 101473308 A CN101473308 A CN 101473308A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- ecc
- nonvolatile memory
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0052—Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Abstract
一种非易失性存储器,具有第一载荷数据区和与第一载荷数据区相关联的第一冗余存储区。第一冗余存储区包括第一部分、第二部分和第三部分。第一部分包括与第一载荷数据区相关联的第一载荷纠错码(ECC)数据。第二部分包括与第一载荷数据区域相关的第一元数据。第三部分包括与第一元数据相关联的第一元数据ECC数据。
Description
技术领域
本发明一般涉及存储器系统,尤其涉及带有纠错的非易失性存储系统。
背景技术
用户电子设备,诸如蜂窝电话、数字音乐播放器、拇指(thumb)驱动器以及其他手持设备,执行日益复杂的算法,例如用于解码压缩数字音频和视频数据的算法和显示用户界面的算法。随着这些算法复杂度的增加,存储这些算法的存储器的大小也增加了。
越来越多地,制造商开始转向非易失性存储器设备,诸如包括NAND和NOR闪存设备的闪存设备。典型地,非易失性存储器设备在逻辑单元中存储数据,例如内存页和内存块。通常,数据被写入一个特定的页并可在该页中从各个位置读出。一般地,块是可被擦除的数据的最小单位。
在一个典型的闪存设备中,每个页具有一个载荷数据区和一个冗余存储区,有时被称为开销区或者元数据区。该页的冗余存储区存储了有关该页的信息,有关该页内数据的信息,和与该页纠错程序有关的数据。
在诸如闪存的非易失性存储设备上访问和存储数据典型地使用了虚拟地址。非易失性存储设备趋向于随使用而损耗,这样,固态的非易失性存储器设备中的扇区可能会失去存储无错数据的容量。通过读数据扇区和检查系统数据中的特定编码值来执行坏扇区的编目和扇区映射的生成。一般地,与数据扇区的数据相关联的纠错码(ECC)被包括在冗余数据区中以用于数据中的噪音纠正。例如,当数据将被写入存储器时,基于被写入的数据计算出ECC,并且该ECC与数据(例如,冗余数据区中)一起存入存储器。当数据被访问时,从被访问的数据中计算新的ECC,并且该计算出的ECC和与数据一起存储的ECC进行比较。如果在计算的ECC和存储的ECC间存在差异,则数据很有可能被损坏了且该扇区可能是坏的。在一些例子中,在数据发送到后续的存储系统或者处理器之前,可使用多个ECC来纠正数据。
尽管ECC方法可以处理存储器错误,但是在非易失性存储器中读ECC和对损害的数据执行纠错的过程是一个耗时的过程。因此,需要为非易失性存储器改善纠错的系统和方法。
发明内容
在一个实施例中,非易失性存储器具有第一载荷数据区域和与第一载荷数据区域相关的第一冗余存储区域。第一冗余存储区具有第一部分,第二部分和第三部分。第一部分包括与第一载荷数据区域相关联的第一载荷纠错码(ECC)数据。第二部分包括与第一载荷数据区域相关联的第一元数据。第三部分包括与第一元数据相关联的第一元数据ECC数据。
在另一个实施例中,系统具有非易失性存储器和纠错模块。该非易失性存储器具有与第一载荷数据区域相关联的载荷纠错码(ECC)数据和与载荷数据区域相关联的元数据ECC数据。该纠错模块包括响应于接收到元数据ECC数据而执行纠错的逻辑。
在另一个实施例中,生成与数据载荷相关联的数据保护码。生成与数据保护码相关的元数据保护码。该数据载荷存储于非易失性的载荷数据区域中,数据保护码和元数据保护码存储于非易失性存储器的冗余数据区域中。
附图说明
通过参考以下附图,本发明可被更好的理解,并且其众多特征和优点对于本领域技术人员将变得明显。
图1是处理系统的具体示例性实施例的一部分的框图。
图2是用于诸如图1所示的处理系统的分区非易失性存储器的框图。
图3是说明图2非易失性存储器的冗余存储区部分的选择内容的一般框图。
图4是用于诸如图1所示的系统的处理系统的纠错模块的具体实施例的框图。
图5是用于诸如图1所示的系统的处理系统的纠错模块和通用存储器接口模块的具体实施例的框图。
图6是将数据写入非易失性存储器的方法的流程图。
图7是从非易失性存储器中读取数据的方法的流程图。
在不同图中的相同参考符号指示相似或者相同的项。
具体实施方式
图1是具体示例性的处理系统100的一部分的框图。该系统100包括中央处理单元(CPU)102,非易失性存储器104,通用存储器接口(GPMI)106,错误检测/纠正模块108,和易失性存储器,例如缓存或者随机存取存储器(RAM)110。来自非易失性存储器104的传输数据114和纠错数据112可被存储在RAM 110中。CPU 102、非易失性存储器104、GPMI 106、错误检测/纠正模块108和RAM 110通过通信总线116通信地耦合。
通常,CPU 102处理计算机可读指令,例如软件程序。在操作时,CPU 102生成到RAM 110和非易失性存储器104的存储器访问请求以请求访问特定数据。GPMI 106可接收该存储器访问请求,获取请求的载荷数据,并向错误检测/纠正模块108提供载荷数据、相关联的错误检测码以及纠错码(ECC)数据。错误检测/纠正模块108可处理该载荷数据以识别载荷数据中错误的位置和值。错误检测/纠正模块108可基于所识别的位置和值来纠正错误,并可在RAM 110中存储纠错数据112。根据该方式,GPMI 106可通过总线116传输被请求的数据以存储在RAM 110中。错误检测/纠正模块108可从RAM 110加载所传输的数据114,以基于由GPMI 106提供的错误检测和ECC数据进行处理。
通常,非易失性存储器104可被分区为数据载荷区和冗余数据区。载荷数据可被存储在数据载荷区,而与载荷数据相关联的错误检测和错误纠正数据可存储于冗余数据区。此外,根据特定的实施方式,与错误检测和错误纠正数据相关的元数据错误纠正数据可被存储于冗余数据区或者可被存储于元数据冗余数据区。
图2说明了用于处理系统(诸如图1的处理系统)的分区的非易失性存储器104。非易失性存储器104被分区以形成载荷数据区204和冗余数据区206。载荷数据区204包括代表性的载荷区208,210,212和214。在具体实施例中,载荷区208-214中的每一个可包括多达512字节的载荷数据。
冗余数据区206包括与每个单个载荷数据区208,210,212和214相关联的冗余数据。所示的冗余数据区206包括奇偶校验区216,220,224,228和232及校正子区218,222,226和230。在一个特定的实施例中,奇偶校验区216,220,224,228和232中的每一个以及校正子区218,222,226以及230中的每一个包括多达12字节的信息,该信息与载荷区208,210,212和214中的其中一个的载荷数据相关。
例如,载荷区208包括512字节的载荷数据。奇偶校验区216和校正子区218的每一个分别包括12字节的奇偶校验数据和12字节的校正子数据。12字节的奇偶校验数据和12字节的校正子数据与载荷区208的512字节的载荷数据相关联。在特定的例子中,奇偶校验区域216,220,224,228,232中的每一个包括8个9比特的符号,具有3个附加字节的对齐填充。校正子区218,222,226,230及234中的每一个包括8个9比特的符号,具有3个附加字节的对齐填充。
通常,存储于奇偶校验区232的元数据奇偶校验数据和存储于校正子区234中的计算出来的元数据校正子数据分别与奇偶校验区216,220,224及228中的奇偶校验数据和校正子区218,222,226及230中的校正子数据相关联。此外,冗余数据区206包括20字节的辅助存储区236。元数据奇偶校验数据和元数据校正子数据代表存储于奇偶校验区216,220,224和228以及校正子区218,222,226和230中的数据的奇偶校验数据和校正子数据。在一个实施例中,奇偶校验数据和校正子数据代表载荷数据的元数据。存储于奇偶校验区232和校正子区234中的数据代表元数据的元数据。
通常,图2中的非易失性存储器104的分区及载荷区204和206说明了一个代表性的2K内存页的系统存储覆盖区。来自错误检测/纠正模块108的校正子生成模块(图4中所示)的数据包括32比特的信息,该信息存储于校正子区234和辅助存储区236中。
在一个可选实施例中,分区及载荷区可被调整为4K内存页的大小。例如,数据载荷区204可被扩展为包括8个载荷区,每个载荷区具有大约512字节的信息。冗余数据区206中的每一个奇偶校验区216,220,224及228以及每一个校正子区218,222,226及230可类似地扩展为存储20字节的奇偶校验数据和20字节的校正子数据。在这种情况下,奇偶校验数据区232和校正子数据区234可包括与奇偶校验区216,220,224和228以及校正子区218,222,226及230相关联的12个字节的奇偶校验和校正子数据,但辅助数据区236中的辅助数据可能会增加。在一种情况下,辅助数据增加到大约68个字节的信息。因此载荷奇偶校验/校正子区可由16个9比特的符号组成,具有2字节的对齐填充,并且辅助奇偶校验/校正子区236可包含8个9比特的符号,具有3字节的对齐填充。在另一个实施例中,元数据ECC数据可存储在分离的数据区中。
在另一个实施例中,冗余数据区206和载荷数据区204可以是分布的。在这种情况下,奇偶校验区216,220,224及228和校正子区218,222,226及230会位于非连续的存储地址位置。例如,载荷数据区204的载荷数据可存储于不同存储地址的分离的载荷分区,其分布于冗余数据区206的冗余数据分区。例如,载荷区208,相关联的奇偶校验区216和校正子区218可被存储于非易失性存储器104内的相邻的存储分区。
通常,奇偶校验及校正子数据提供可被错误检测/纠正模块108用来检测和纠正载荷数据中的错误的信息。此外,如果奇偶校验/校正子数据包含错误,则错误检测/纠正模块108可使用元数据ECC数据来检测和纠正这样的错误。
图3说明了非易失性存储器104的冗余存储区206的一部分的选择内容。通常,冗余存储区206包括纠错数据302,该数据可包括载荷奇偶校验数据和载荷校正子数据,如图2所示。此外,冗余存储区206包括纠错码(ECC)数据304,该数据可括元数据奇偶校验数据和元数据校正子数据。此外,冗余存储区206可包括逻辑地址信息306,数据块状态信息308,循环冗余校正(CRC)数据310,以及与元数据相关的其他数据312。
通常,载荷数据存储于非易失性存储器的载荷数据区,与载荷数据相关联的冗余数据存储于该非易失性存储器的冗余数据区。冗余数据包括与第一载荷数据区相关联的第一载荷纠错码(ECC),以及与该第一载荷数据区相关联的第一元数据。与第一元数据相关联的元数据ECC数据也可被存储在冗余数据区。元数据ECC数据可被获取并被用于纠正冗余数据中的错误,而无需从存储器中获取载荷数据。第一元数据可包括循环冗余校验(CRC)码,或者其它类型的错误检测数据。可选地,第一元数据可包括错误校正子,其可被纠错模块用来纠正载荷数据或者与该载荷数据相关联的元数据中的错误。
图4是与诸如图1中系统100的处理系统一起使用的错误检测/纠正模块的一个具体实施例的框图。错误检测/纠正模块108包括校正子生成模块402,错误方程解算和估算器406,纠错单元407,以及AHB总线主仲裁器和控制器408。AHB总线主仲裁器和控制器408为获取校正子和纠正错误的访问请求执行加权的等级仲裁。
通常,AHB总线主仲裁器和控制器408将错误检测/纠正模块108耦合到总线116,以便与系统100的其他模块以及组件进行通信。通常,通过执行猝发操作、固定优先级仲裁等,AHB总线主仲裁器和控制器408为数据业务提供了高带宽和低延时。此外,AHB总线主仲裁器和控制器408限制了来自NAND接口(GPMI 106)的迟延。
通常,校正子生成模块402通过通用存储器接口(GPMI)106接收来自非易失性存储器104的数据块。所述数据块可包括固定数量的载荷数据以及与该固定数量的载荷数据相关联的奇偶校验数据。校正子生成模块402还可接收与数据块相关联的控制信息。该校正子生成模块402根据载荷和奇偶校验数据计算校正子信息。该校正子生成模块402向AHB总线主仲裁器和控制器408提供载荷数据、奇偶校验数据及计算出的校正子。
总线主仲裁器和控制器408可包括异步先入先出(FIFO)寄存器(如图5所示)以用于接收载荷数据、奇偶校验数据、计算出的校正子信息以及控制信息。此外,当FIFO寄存器满了时,总线主仲裁器408可向校正子生成模块402提供流控制信号。
可选地,校正子生成模块402可在系统存储器或其他存储位置,诸如图1中的RAM 110中,存储载荷数据、奇偶校验数据,校正子信息和控制信息,直至总线主仲裁器和控制器408以及错误方程解算和估算器406可用于错误处理。
错误方程解算和估算器406从总线主仲裁器和控制器408接收载荷数据的校正子410。错误方程解算和估算器406处理校正子410以生成符号索引412和符号掩码414。符号索引412标识包含一个或多个错误的符号,而符号掩码414指示该符号中的哪些特定比特需要被执行补操作(complement)以纠正错误。当处理完成时,错误方程解算和估算器406通知总线主仲裁器和控制器408,以使总线主仲裁器和控制器408能提出下一组校正子410。错误方程解算和估算器406将一对错误索引412和掩码414提供给纠错单元407,使其通过总线主仲裁器和控制器408对特定的比特错误进行补操作。错误方程解算和估算器406还可向总线主仲裁器和控制器408提供需要纠正多少错误的指示或载荷数据无法纠正的指示。
通常,如果校正子模块402将一个数据块标记为包含错误,则总线主仲裁器和控制器408通过关键方程解算器安排一个错误纠正。从而,校正子生成模块402对数据块执行错误检测,并且仅仅当检测到错误时,错误方程解算和估算器406才执行错误纠正过程。
总线主仲裁器和控制器408可适于使用错误索引和错误掩码在存储器的块中对数据比特进行补操作。被纠正的数据可存储在系统存储器、诸如缓存器或者RAM存储器110的临时存储器、诸如非易失性存储器104的非易失性存储器,和/或其任意组合中。
通常,错误方程解算和估算器406可为数据的可纠错块提供错误索引412和错误掩码414,其中一个数据块包括n个符号减去2t个奇偶校验符号。n个符号是指符号中的块的大小(例如,如图2中的载荷数据区中的512个符号),符号(t)是指可被纠正的错误的数量。在一个实施例中,在512字节块中的可被纠正的错误的数量可为8个。根据所使用的错误纠正计算,或多或少可以纠正错误。
校正子生成模块402计算2t个校正子。错误方程解算和估算器406生成一组2t个线性方程,包括2t个未知数。错误方程解算和估算器406使用Euclidean算法解算这组方程,用次数为2*t(例如,x8或者x16)的特殊多项式除以根据2t个校正子形成的校正子多项式。一旦该除法产生小于或等于可被纠正错误(t)数量的次数的余数,则错误方程解算和估算器406终止该算法,并产生错误估算多项式和错误定位多项式,以用来确定错误索引412和错误掩码414。
图5是纠错系统500的一个实施例的框图,纠错系统500包括纠错模块和通用存储接口(GPMI)模块以用于诸如图1的系统100的处理系统。系统500包括通用存储接口(GPMI)并行输入/输出502,校正子生成器402,纠错模块108,总线主仲裁器和控制器408,通用存储器接口及计数器504,异步先入先出(FIFO)寄存器506和总线116。GPMI并行输入/输出502可通信地耦合到GPMI和计数器504以及校正子生成器402。此外,GPMI并行输入/输出502可被耦合到非易失性存储器104。
校正子生成器402被耦合到异步FIFO 506、GPMI和计数器504。异步FIFO 506还被连接到GPMI和计数器504和总线主仲裁器和控制器408。GPMI和计数器504被连接到总线主仲裁器和控制器408和纠错模块108。
纠错模块108包括关键方程解算(KES)接口512,关键方程解算器514,Chein搜索和Forney估算器516,符号至地址转换器518,一个或多个寄存器520,以及纠错模块522。KES接口512耦合到总线主仲裁器和控制器408、关键方程解算器514以及纠错模块522。Chein搜索/Forney估算器516被连接到符号至地址转换器518,该转换器可被连接到一个或多个寄存器520和纠错模块522。纠错模块522被连接到总线主仲裁器和控制器408。
总线主仲裁器和控制器408包括总线主接口508以及仲裁器和控制器510。总线主接口508连接到总线116,仲裁器和控制器510连接到GPMI和计数器504、异步FIFO 506,KES接口512和纠错模块522。
通常,GPMI并行输入/输出502向GPMI和计数器504提供地址信息。校正子生成模块402向GPMI和计数器504提供块的数量。此外,校正子生成模块402将载荷数据块和计算出的校正子数据、奇偶校验数据及控制信息一起提供给异步FIFO 506。在读操作中,载荷数据块被校正子生成模块402处理并被传送到异步FIFO 506。在一个特定实施方式中,除了最后的写操作,校正子生成模块402的输出字由32个比特的数据(意指载荷,奇偶校验或校正子比特)和4个标志位组成。载荷数据块的最后一个输出字可以是一个状态字,其标识在块中是否检测到能节省处理时间的特定条件。例如,如果符号生成模块402并未检测到错误,可以避免进行错误纠正。异步FIFO 506可向校正子生成模块402提供流控制信号以控制数据块和校正子信息的传输。数据块以及相关联的奇偶校验及校正子信息可被写到异步FIFO 506。
此外,还有多个从GPMI和计数器504以及从校正子生成模块402传输到总线主仲裁器和控制器408的控制信号,例如模式比特,存储器地址,信道数量等等。典型地,控制信息可被包括在载荷数据块的开始。
异步FIFO 506向GPMI和计数器504提供数据、校正子信息、奇偶校正数据及控制信息。通常,控制信息可包括比特标志,其指示新数据块的第一个字、数据块传输的开始和结束以及状态字标志。异步FIFO 506的控制逻辑可监视FIFO的状态,并当FIFO没有足够的空间给新数据时,向校正子生成模块402报告一个满状态。
GPMI和计数器504向KES接口512传输数据及校正子信息。KES接口512向关键方程解算器514提供计算出的校正子数据以便进行错误检测。如果数据块被标记为无错误,则GPMI和计数器504可将该数据块传送到仲裁器和控制器510,绕过KES接口512。关键方程解算器514向Chein搜索和Forney估算器单元516提供错误检测信息。
一旦关键方程解算器514完成错误检测,KES接口512向纠错模块522提供块信息。Chein搜索和Forney估算器(CF)单元516为数据块计算错误掩码和错误索引,并将其提供给纠错单元522。符号至地址转换器518将符号索引转换为系统字对齐(word-aligned)的地址,并将符号掩码转换为字对齐(word-aligned)的掩码。
纠错模块522执行字读-改-写操作以便完成错误纠正。根据系统的操作模式,读-写-改纠正的次数可以变化。例如,对于8比特模式,可能有高达16次的读-改-写的纠正,对于4比特模式,可能有高达8次的读-改-写的纠正。
应当理解到,尽管以上的讨论集中于一般的读操作,但是可以以多种方式应用错误纠正。例如,载荷数据的改变还可能需要存储于非易失性存储器的冗余数据区中的元数据ECC数据和元数据的改变。可使用元数据纠正载荷数据中检测到的错误。恢复过程可被应用到载荷数据、载荷错误检测数据(例如奇偶校验数据)、元数据、元数据ECC数据等等。通过单独存储元数据、奇偶校验数据、元数据纠错码(ECC)数据和载荷数据,纠错模块108可访问一个或多个数据元以便有效地纠正数据错误。
图6是向非易失性存储器写入数据的方法流程图。初始化存储器写操作以将数据块写入非易失性存储器(方框602)。计算该数据块的奇偶校验数据及校正子数据(方框604)。为奇偶校验数据及校正子数据计算元数据纠错码(ECC)数据(方框606)。该数据块被写入非易失性存储器的载荷数据区(方框608)。奇偶校验数据、校正子数据以及元数据ECC数据被写入非易失性存储器的冗余数据区(方框610)。
通常,每个写操作导致纠错模块基于载荷数据(例如,元数据)生成校正子数据,并基于校正子数据生成元数据ECC数据。在错误纠正过程中,元数据ECC数据可被纠错模块用于纠正校正子数据,校正子数据可被用于纠正载荷数据。这些纠错过程可被顺序执行或者彼此独立地执行。
图7是从非易失性存储器读取载荷数据的方法流程图。初始化存储器读操作以从非易失性存储器读取载荷数据(方框702)。校正子生成模块接收载荷数据(方框704)。校正子生成模块计算与载荷数据相关联的多个校正子(方框706)。校正子生成模块向错误计算器提供计算出的校正子(方框708)。错误计算器的关键方程解算器根据校正子计算载荷数据错误(方框710)。错误计算器的Chein搜索和Forney计算器基于载荷数据错误生成错误掩码和错误索引(方框712)。错误计算器的纠错模块基于错误掩码和错误索引在数据块中校正比特(方框714)。
通常,从非易失性存储器中读取载荷数据可按照图7所描述的进行。可选地,如果在非易失性存储器的冗余数据区中存储的载荷奇偶校验数据或者载荷元数据中检测到错误,则纠错模块获取与载荷元数据相关联的元数据纠错码(ECC)。随后元数据ECC码被用于计算上述与载荷元数据相关的多个校正子(如方框706)。关键方程解算器根据校正子计算载荷元数据错误。Chein搜索和Forney计算器基于该载荷元数据错误生成错误掩码和错误索引。错误校正模块基于该错误掩码和错误索引在载荷元数据内校正比特。从而,载荷数据的元数据可根据存储于冗余数据区中的元数据ECC数据而被恢复,也无需加载载荷数据,这样节省了时间和计算资源。
通过在非易失性存储器的冗余数据区中存储元数据和错误检测数据,并将与元数据相关联的元数据纠错码(ECC)数据和错误检测数据在冗余数据区中分开存储,纠错模块中的逻辑可校正在载荷数据和载荷数据的元数据中的比特错误,也无需加载载荷数据。
元数据ECC数据可包括与载荷数据的元数据相关联的校正子。非易失性存储器可包括载荷ECC数据以及元数据ECC数据。数据载荷区中的每个数据载荷可在冗余数据区中具有相应的奇偶校验数据区和校正子数据区。每一对相应的奇偶校验数据区和校正子数据区可在冗余数据区中存储相应的元数据ECC数据。因此,第一数据载荷可具有第一奇偶校验数据和第一元数据,它们存储在冗余数据区中。第一奇偶校验数据和第一元数据可具有相应的第一元数据ECC数据。第二数据载荷可具有第二奇偶校验数据和第二元数据,它们存储在冗余数据区中。在一个实施例中,第一元数据ECC数据包括第一和第二元数据以及第一和第二奇偶校验数据的元数据ECC数据。在第二实施例中,第二元数据ECC数据包括第二元数据和第二奇偶校验数据的元数据ECC数据。
以上描述的主题应被认为是说明性的,而不是限制性的,所附的权利要求用于覆盖所有这类改变、改进,以及其他的落入本发明的实质精神和范围以内的实施例。因此,为了达到法律允许的最大范围,本发明的范围将由随后的权利要求及其等价物的最广泛的可允许的解释所确定,而不被前述的具体描述所限定或限制。
Claims (23)
1、一种非易失性存储器,包括:
第一载荷数据区;
与第一载荷数据区相关联的第一冗余存储区,所述第一冗余存储区包括:
第一部分,所述第一部分包括与第一载荷数据区相关联的第一载荷纠错码(ECC)数据;
第二部分,所述第二部分包括与第一载荷数据区相关联的第一元数据;以及
第三部分,所述第三部分包括与第一元数据相关联的第一元数据ECC数据。
2、如权利要求1所述的非易失性存储器,进一步包括:
第二载荷数据区;并且
其中,第一元数据与第一载荷数据区以及第二载荷数据区相关联。
3、如权利要求2所述的非易失性存储器,其中第一冗余存储区包括与第二载荷数据区相关联的第二载荷纠错码(ECC)数据。
4、如权利要求1所述的非易失性存储器,其中第一载荷纠错码(ECC)数据包括奇偶校验数据和校正子数据。
5、如权利要求1所述的非易失性存储器,其中第一载荷数据区包括512字节的存储空间。
6、如权利要求1所述的非易失性存储器,其中第一元数据包括循环冗余校验(CRC)数据。
7、如权利要求1所述的非易失性存储器,其中第一元数据包括块状态数据。
8、如权利要求1所述的非易失性存储器,其中第一元数据包括与第一载荷数据区相关联的逻辑地址数据。
9、如权利要求1所述的非易失性存储器,进一步包括:
第二载荷区;
与第二载荷数据区相关联的第二冗余存储区,第二冗余存储区包括:
第一部分,所述第一部分具有与第二载荷区相关联的第二载荷纠错码(ECC)数据;
第二部分,所述第二部分具有与第二载荷区相关联的第二元数据;以及,
第三部分,所述第三部分包括与第二元数据相关联的第二元数据ECC数据。
10、一种系统,包括:
非易失性存储器,所述非易失性存储器包括与载荷数据区相关联的载荷纠错码(ECC)数据,以及与载荷数据区相关联的元数据ECC数据;
纠错模块,包括响应于接收到元数据ECC数据而执行纠错的逻辑。
11、如权利要求10所述的系统,其中元数据ECC数据包括错误校正子,并且其中所述纠错模块包括用于生成错误校正子的校正子生成模块。
12、如权利要求10所述的系统,其中所述纠错模块包括关键生成模块,用于基于错误校正子来生成纠错信息,以纠正从非易失性存储器存取的元数据中的错误。
13、如权利要求12所述的系统,其中所述纠错信息包括错误索引和错误掩码。
14、如权利要求10所述的系统,其中所述非易失性存储器包括载荷ECC数据和元数据ECC数据,每个都与第二载荷数据区相关联。
15、如权利要求12所述的系统,其中所述纠错模块对元数据执行Reed-Solomon纠错。
16、一种方法,包括:
生成与数据载荷相关的数据保护码;
生成与该数据保护码相关的元数据保护码;以及
将所述数据载荷存储在非易失性存储器的载荷数据区中,并将所述数据保护码和所述元数据保护码存储在非易失性存储器的冗余数据区中。
17、如权利要求16所述的方法,其中所述数据保护码包括错误检测数据和错误纠正数据。
18、如权利要求17所述的方法,其中所述错误检测数据包括奇偶校验数据。
19、如权利要求16所述的方法,其中所述数据保护码包括循环冗余校验(CRC)数据和纠错码(ECC)数据。
20、如权利要求16所述的方法,其中所述元数据保护码包括与所述数据保护码相关的纠错码(ECC)数据。
21、如权利要求16所述的方法,其中所述生成数据保护码包括为数据载荷计算至少一个奇偶校验数据和纠错码(ECC)数据。
22、如权利要求16所述的方法,其中所述生成元数据保护码包括计算元数据纠错码(ECC)数据。
23、一种系统,包括:
访问非易失性存储器的纠错模块,所述纠错模块包括用于生成与能够从非易失性存储器获取的数据块相关联的多个校正子的逻辑,所述纠错模块进一步包括用于在数据块中校正比特错误的逻辑,和用于使用元数据纠错码(ECC)数据来纠正从非易失性存储器中获取的元数据中的比特错误的逻辑。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/436,937 US20070268905A1 (en) | 2006-05-18 | 2006-05-18 | Non-volatile memory error correction system and method |
US11/436,937 | 2006-05-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101473308A true CN101473308A (zh) | 2009-07-01 |
Family
ID=38711911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800171821A Pending CN101473308A (zh) | 2006-05-18 | 2007-03-14 | 非易失性存储器纠错系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070268905A1 (zh) |
KR (1) | KR20090028507A (zh) |
CN (1) | CN101473308A (zh) |
WO (1) | WO2007136447A2 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092727A (zh) * | 2013-01-18 | 2013-05-08 | 大唐移动通信设备有限公司 | Flash存储介质上的数据纠错方法和装置 |
CN103098378A (zh) * | 2010-09-15 | 2013-05-08 | 桑迪士克科技股份有限公司 | 分布式ecc处理的系统和方法 |
CN103389920A (zh) * | 2012-05-09 | 2013-11-13 | 深圳市腾讯计算机系统有限公司 | 一种磁盘坏块的自检测方法和装置 |
CN105335299A (zh) * | 2014-08-12 | 2016-02-17 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
CN105808151A (zh) * | 2014-12-29 | 2016-07-27 | 华为技术有限公司 | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 |
CN106663045A (zh) * | 2014-09-26 | 2017-05-10 | 英特尔公司 | 在存储器与主机系统之间交换ecc元数据 |
CN106663472A (zh) * | 2014-09-23 | 2017-05-10 | 英特尔公司 | 非易失性存储器中的恢复算法 |
CN111221746A (zh) * | 2015-09-11 | 2020-06-02 | 慧荣科技股份有限公司 | 数据储存系统与其相关方法 |
CN115297071A (zh) * | 2022-07-15 | 2022-11-04 | 中国航空无线电电子研究所 | 一种arinc664交换机交换引擎对seu和mbu容错设计方法 |
Families Citing this family (167)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122322B2 (en) * | 2007-07-31 | 2012-02-21 | Seagate Technology Llc | System and method of storing reliability data |
JP4564520B2 (ja) | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
US8185706B2 (en) * | 2008-04-30 | 2012-05-22 | Apple Inc. | Copyback optimization for memory system |
US8495454B2 (en) * | 2008-07-14 | 2013-07-23 | Marvell World Trade Ltd. | Methods, apparatuses, systems, and architectures for quickly and reliably encoding and/or decoding system data |
WO2010013437A1 (ja) * | 2008-07-30 | 2010-02-04 | パナソニック株式会社 | 誤り訂正機能付きコントローラ、誤り訂正機能付き記憶装置、及び誤り訂正機能付きシステム |
US8255774B2 (en) | 2009-02-17 | 2012-08-28 | Seagate Technology | Data storage system with non-volatile memory for error correction |
US9063886B2 (en) * | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
US8726126B2 (en) * | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8954647B2 (en) | 2011-01-28 | 2015-02-10 | Apple Inc. | Systems and methods for redundantly storing metadata for non-volatile memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) * | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
KR101678919B1 (ko) | 2011-05-02 | 2016-11-24 | 삼성전자주식회사 | 메모리 시스템 및 에러 정정 방법 |
US20120324148A1 (en) * | 2011-06-19 | 2012-12-20 | Paul Roger Stonelake | System and method of protecting metadata from nand flash failures |
JP5770026B2 (ja) * | 2011-06-20 | 2015-08-26 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US8954809B2 (en) * | 2012-07-25 | 2015-02-10 | Texas Instruments Incorporated | Method for generating descriptive trace gaps |
US8938656B2 (en) | 2012-09-14 | 2015-01-20 | Sandisk Technologies Inc. | Data storage device with intermediate ECC stage |
US8996951B2 (en) | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
US9075960B2 (en) * | 2013-03-15 | 2015-07-07 | Now Technologies (Ip) Limited | Digital media content management apparatus and method |
JP5657079B1 (ja) | 2013-10-24 | 2015-01-21 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
CN103594120B (zh) * | 2013-10-31 | 2018-08-21 | 西安紫光国芯半导体有限公司 | 以读代写的存储器纠错方法 |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9317357B2 (en) * | 2014-03-20 | 2016-04-19 | International Business Machines Corporation | Management of microcode errors in a storage operation |
JP6318769B2 (ja) * | 2014-03-28 | 2018-05-09 | 富士通株式会社 | ストレージ制御装置、制御プログラム、および制御方法 |
DE112015001607T5 (de) * | 2014-04-01 | 2017-01-05 | Lattice Semiconductor Corporation | Orthogonale Datenorganisation für Fehlerdetektion und -korrektur in seriellen Videoschnittstellen |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9612952B2 (en) | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
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 |
TWI512750B (zh) * | 2014-07-30 | 2015-12-11 | Phison Electronics Corp | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
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 |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
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 |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
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 |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | 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 |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
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 |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
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 |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
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 |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
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 |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
CN112181866B (zh) * | 2020-08-27 | 2024-03-26 | 航天东方红卫星有限公司 | 一种基于卫星在轨有效载荷数据处理的数据传输分系统 |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11409608B2 (en) * | 2020-12-29 | 2022-08-09 | Advanced Micro Devices, Inc. | Providing host-based error detection capabilities in a remote execution device |
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 |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11740822B2 (en) * | 2021-04-29 | 2023-08-29 | EMC IP Holding Company LLC | Methods and systems for error detection and correction in a distributed storage system |
US11892983B2 (en) | 2021-04-29 | 2024-02-06 | EMC IP Holding Company LLC | Methods and systems for seamless tiering in a distributed storage system |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4584686A (en) * | 1983-12-22 | 1986-04-22 | Optical Storage International | Reed-Solomon error correction apparatus |
US6119262A (en) * | 1997-08-19 | 2000-09-12 | Chuen-Shen Bernard Shung | Method and apparatus for solving key equation polynomials in decoding error correction codes |
US5956743A (en) * | 1997-08-25 | 1999-09-21 | Bit Microsystems, Inc. | Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations |
US6636901B2 (en) * | 1998-01-30 | 2003-10-21 | Object Technology Licensing Corp. | Object-oriented resource lock and entry register |
JP3975245B2 (ja) * | 1999-12-16 | 2007-09-12 | 株式会社ルネサステクノロジ | 記録再生装置および半導体メモリ |
US7398451B2 (en) * | 2001-08-09 | 2008-07-08 | Adaptive Networks, Inc. | Error correction process and mechanism |
US6920581B2 (en) * | 2002-01-02 | 2005-07-19 | Intel Corporation | Method and apparatus for functional redundancy check mode recovery |
TW567411B (en) * | 2002-09-09 | 2003-12-21 | Hon Hai Prec Ind Co Ltd | The method and apparatus of CRC code allocation in flash ROM |
US20040078747A1 (en) * | 2002-10-21 | 2004-04-22 | Miller David H. | Generalized forney algorithm circuit |
US7203828B2 (en) * | 2002-11-29 | 2007-04-10 | Sigmatel, Inc. | Use of NAND flash for hidden memory blocks to store an operating system program |
US20040153902A1 (en) * | 2003-01-21 | 2004-08-05 | Nexflash Technologies, Inc. | Serial flash integrated circuit having error detection and correction |
US6912610B2 (en) * | 2003-03-28 | 2005-06-28 | Emulex Design & Manufacturing Corporation | Hardware assisted firmware task scheduling and management |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
-
2006
- 2006-05-18 US US11/436,937 patent/US20070268905A1/en not_active Abandoned
-
2007
- 2007-03-14 KR KR1020087027702A patent/KR20090028507A/ko not_active Application Discontinuation
- 2007-03-14 WO PCT/US2007/006386 patent/WO2007136447A2/en active Application Filing
- 2007-03-14 CN CNA2007800171821A patent/CN101473308A/zh active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103098378A (zh) * | 2010-09-15 | 2013-05-08 | 桑迪士克科技股份有限公司 | 分布式ecc处理的系统和方法 |
CN103098378B (zh) * | 2010-09-15 | 2014-08-20 | 桑迪士克科技股份有限公司 | 分布式ecc处理的系统和方法 |
CN103389920A (zh) * | 2012-05-09 | 2013-11-13 | 深圳市腾讯计算机系统有限公司 | 一种磁盘坏块的自检测方法和装置 |
CN103389920B (zh) * | 2012-05-09 | 2016-06-15 | 深圳市腾讯计算机系统有限公司 | 一种磁盘坏块的自检测方法和装置 |
CN103092727B (zh) * | 2013-01-18 | 2015-08-26 | 大唐移动通信设备有限公司 | Flash存储介质上的数据纠错方法和装置 |
CN103092727A (zh) * | 2013-01-18 | 2013-05-08 | 大唐移动通信设备有限公司 | Flash存储介质上的数据纠错方法和装置 |
CN105335299B (zh) * | 2014-08-12 | 2018-10-02 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
CN105335299A (zh) * | 2014-08-12 | 2016-02-17 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
CN106663472B (zh) * | 2014-09-23 | 2021-08-27 | 英特尔公司 | 非易失性存储器中的恢复算法 |
CN106663472A (zh) * | 2014-09-23 | 2017-05-10 | 英特尔公司 | 非易失性存储器中的恢复算法 |
CN106663045A (zh) * | 2014-09-26 | 2017-05-10 | 英特尔公司 | 在存储器与主机系统之间交换ecc元数据 |
CN105808151B (zh) * | 2014-12-29 | 2019-09-27 | 华为技术有限公司 | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 |
US10572340B2 (en) | 2014-12-29 | 2020-02-25 | Huawei Technologies Co., Ltd. | Solid state disk storage device and method for accessing data in solid state disk storage device |
CN105808151A (zh) * | 2014-12-29 | 2016-07-27 | 华为技术有限公司 | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 |
CN111221746A (zh) * | 2015-09-11 | 2020-06-02 | 慧荣科技股份有限公司 | 数据储存系统与其相关方法 |
CN111221746B (zh) * | 2015-09-11 | 2021-11-26 | 慧荣科技股份有限公司 | 数据储存系统与其相关方法 |
CN115297071A (zh) * | 2022-07-15 | 2022-11-04 | 中国航空无线电电子研究所 | 一种arinc664交换机交换引擎对seu和mbu容错设计方法 |
CN115297071B (zh) * | 2022-07-15 | 2023-10-27 | 中国航空无线电电子研究所 | 一种arinc664交换机交换引擎对seu和mbu容错设计方法 |
Also Published As
Publication number | Publication date |
---|---|
US20070268905A1 (en) | 2007-11-22 |
WO2007136447A3 (en) | 2008-11-20 |
WO2007136447A2 (en) | 2007-11-29 |
KR20090028507A (ko) | 2009-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101473308A (zh) | 非易失性存储器纠错系统和方法 | |
US11500723B2 (en) | Using parity data for concurrent data authentication, correction, compression, and encryption | |
US8010875B2 (en) | Error correcting code with chip kill capability and power saving enhancement | |
US9836348B2 (en) | Memory repair method and apparatus based on error code tracking | |
TWI514139B (zh) | 實體頁、邏輯頁及碼字對應 | |
US20080282128A1 (en) | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance | |
CN102017425B (zh) | 用于执行级联纠错的方法和系统 | |
US20100241932A1 (en) | Error detector/corrector, memory controller, and semiconductor memory device | |
CN110781022B (zh) | 错误校正资源的数据相关分配 | |
CN113297001B (zh) | 一种raid编解码方法及编解码电路 | |
US20130117632A1 (en) | Storage control apparatus | |
US20040225944A1 (en) | Systems and methods for processing an error correction code word for storage in memory components | |
CN114328316A (zh) | Dma控制器、soc系统及基于dma控制器的数据搬运方法 | |
CN101488369B (zh) | Bch码控制器接口电路 | |
US20120124450A1 (en) | Method for enhancing error correction capability, and associated memory device and controller thereof | |
US8732554B2 (en) | Data storage device and method for checking and correcting errors | |
US20140281681A1 (en) | Error correction for memory systems | |
US7665009B2 (en) | Device, data sector, method of processing data, and signal-bearing medium embodying program of device | |
US9400715B1 (en) | System and method for interconnecting storage elements | |
CN103092727B (zh) | Flash存储介质上的数据纠错方法和装置 | |
TWI785918B (zh) | 記憶體系統 | |
CN108574495B (zh) | 错误定位多项式解码器及方法 | |
JP2012038226A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5570252B2 (ja) | エラーチェック装置、エラーチェック方法およびエラーチェックプログラム | |
CN112311403A (zh) | 具有低延时的错误校正码ecc解码器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090701 |