CN109196479B - 存储器中的错误校正码(ecc)操作 - Google Patents
存储器中的错误校正码(ecc)操作 Download PDFInfo
- Publication number
- CN109196479B CN109196479B CN201780032735.4A CN201780032735A CN109196479B CN 109196479 B CN109196479 B CN 109196479B CN 201780032735 A CN201780032735 A CN 201780032735A CN 109196479 B CN109196479 B CN 109196479B
- Authority
- CN
- China
- Prior art keywords
- ecc
- codeword
- encoding matrix
- bits
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/618—Shortening and extension of codes
-
- 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
-
- 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明包含用于与存储器相关联的错误校正码ECC操作的设备及方法。一个实例性设备包括控制器,所述控制器经配置以对所述存储器中所存储的码字执行错误校正码ECC操作,其中所述码字包含第一数目个ECC位,且所述第一数目个ECC位是基于编码矩阵而产生,其中所述编码矩阵的每一行具有奇数数目个具有二进制值1的位。
Description
技术领域
本发明一般来说涉及半导体存储器设备及方法,且更特定来说涉及与存储器相关联的错误校正码(ECC)操作。
背景技术
存储器装置通常经提供作为计算机或其它电子装置中的内部半导体集成电路及/或外部可装卸式装置。存在许多不同类型的存储器,包含易失性及非易失性存储器。易失性存储器可需要电力来维持其数据,且可包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM),以及其它。非易失性存储器可在未供电时保留所存储数据,且可包含NAND快闪存储器、NOR快闪存储器、相变随机存取存储器(PCRAM)、电阻式随机存取存储器(RRAM)及磁性随机存取存储器(MRAM),以及其它。
可将存储器装置组合在一起以形成固态驱动器(SSD)。SSD可包含非易失性存储器(例如,NAND快闪存储器及/或NOR快闪存储器)及/或可包含易失性存储器(例如,DRAM及/或SRAM)以及各种其它类型的非易失性及易失性存储器。举例来说,快闪存储器装置可包含将数据存储于电荷存储结构(例如浮动栅极)中的存储器单元且可用作用于宽广范围的电子应用的非易失性存储器。相对于各种其它存储器装置,快闪存储器装置通常使用允许高存储器密度、高可靠性及低电力消耗的单晶体管存储器单元。
存储器作为易失性及非易失性数据存储装置而用于宽广范围的电子应用。举例来说,非易失性存储器可用于个人计算机、便携式存储器棒、数码相机、蜂窝式电话、例如MP3播放器等便携式音乐播放器、电影播放器及其它电子装置中。存储器单元可被布置成若干阵列,其中所述阵列用于存储器装置中。
存储器单元的状态可通过感测所述单元的电荷存储结构上的所存储电荷(例如,Vt)而确定。然而,举例来说,例如读取扰动、程序扰动、单元间干扰及/或电荷损失(例如,电荷泄漏)等若干个机制可导致存储器单元的Vt改变。已使用例如汉明(Hamming)码等错误校正码(ECC)方案来校正位错误。具有汉明距离H的汉明码可校正及/或检测特定数目个错误。举例来说,可以汉明距离H校正及/或检测的错误的特定数目可由以下方程式定义:
H-1≥2C+D
其中H表示汉明距离,且C及D分别表示可校正及检测的错误的数目。举例来说,具有包含9个ECC位及为3的汉明距离的265位码字的汉明码(265,9,3)可仅校正一个错误或仅检测两个错误而不进行任何校正。
附图说明
图1是根据本发明的若干个实施例的呈包含存储器系统的计算系统的形式的设备的框图。
图2是包括可根据本发明的若干个实施例操作的存储器单元阵列的存储器的一部分的示意图。
图3A及3B图解说明根据本发明的若干个实施例的与编码二进制数据字相关联的若干数据模式。
图4图解说明根据本发明的若干个实施例的用于执行错误校正码(ECC)操作的流程图。
具体实施方式
本发明包含用于与存储器相关联的ECC操作的设备及方法。一个实例性设备包括控制器,所述控制器经配置以对存储器中所存储的码字执行错误校正码(ECC)操作,其中所述码字包含第一数目个ECC位,且所述第一数目个ECC位是基于编码矩阵而产生,其中所述编码矩阵的每一行具有奇数数目个具有二进制值1的位。
本发明的实施例可包含以与现有汉明码方案相同的数目个校验位来保护ECC位及用户数据两者。作为一实例,若干个汉明码具有额外校验位,所述额外校验位的检测及校正能力限于其中受保护位置(例如,ECC位或二进制数据字)中发生单个位错误或两个位错误的特定情况。在不受保护位置中发生单个位错误或两个位错误中的任一者时,此受限能力可产生错误的错误校正操作。举例来说,先前方法使用用以校正单个位错误而不具有检测两个位错误的能力的汉明码(265,256,3),以及具有用以检测两个位错误的额外校验位及用以校正单个位错误的能力的扩展汉明码(266,256,3)。然而,此些先前方法具有有限错误校正能力。举例来说,如果在产生ECC位之前将额外校验位添加到数据,那么ECC位不受校验位保护,且如果在产生ECC位之后添加额外校验,那么校验位不受保护。举例来说,不受保护位置处的单个位错误可产生错误的错误校正操作,这可导致数据的损失。
本发明的若干个实施例可保护ECC位及数据(例如,从主机读取的用户数据)两者,使得可校正或检测ECC位或数据内的任何位置中的任何单个位错误或两个位错误。举例来说,通过将一个额外ECC位添加到汉明码(265,9,3)以能够具有为4的汉明距离而从汉明码(265,9,3)导出汉明码(266,10,4)。汉明码(266,10,4)可检测并校正单个位错误,且检测额外错误或检测三个错误而不进行校正。保护ECC位及数据两者可提供例如增加存储器的性能、可靠性及/或寿命等益处以及其它益处。举例来说,当不受保护位置中的单个位错误或两个位错误导致额外不正确的错误校正操作时,存储器的若干部分(例如,页、块等)的位错误率(BER)可增加。然而,本发明的实施例可通过正确地确定关于单个位错误或两个位错误该做什么而增加可靠性,这可在不引入更多错误的情况下产生错误校正操作。本发明的若干个实施例也可通过减小因不正确的错误校正操作而引入更多错误的可能性而延长存储器的寿命。
在本发明的以下详细说明中,参考形成本发明的一部分且其中以图解说明方式展示可如何实践本发明的一或多个实施例的附图。充分详细地描述这些实施例以使得所属领域的技术人员能够实践本发明的实施例,且应理解,可利用其它实施例且可在不背离本发明的范围的情况下做出过程、电及/或结构改变。如本文中所使用,特定来说关于图式中的参考编号的指定符“M”及“N”指示可包含如此指定的若干特定特征。如本文中所使用,“若干个”特定事物可指此类事物中的一或多者(例如,若干个存储器装置可指一或多个存储器装置)。
本文中的各图遵循其中第一个数字或前几个数字对应于图式的图编号且其余数字识别图式中的元件或组件的编号惯例。可通过使用类似的数字来识别不同图之间的类似元件或组件。举例来说,在图1中,110可指代元件“10”,且在图2中,类似元件可称为210。如将了解,可添加、交换及/或消除本文中的各种实施例中所展示的元件以便提供本发明的若干个额外实施例。另外,如将了解,各图中所提供的元件的比例及相对尺度打算图解说明本发明的特定实施例且不应视为具限制意义。
图1是根据本发明的若干个实施例的呈包含存储器系统104的计算系统100的形式的设备的框图。
如本文中所使用,存储器系统104、控制器108或存储器装置110也可被单独地视为“设备”。存储器系统104可为固态驱动器(SSD)(举例来说)且可包含主机接口106、控制器108(例如,定序器及/或其它控制电路)及若干存储器装置110(其可称为存储器110)。举例来说,存储器110可包括为存储器系统104提供存储卷的若干个固态存储器装置,例如NAND快闪装置。
控制器108可经由多个通道耦合到主机接口106及存储器110且可用于在存储器系统104与主机102之间传送数据。接口106可呈标准化接口形式。举例来说,当存储器系统104用于计算系统100中的数据存储时,接口106可为串行先进技术附接(SATA)、高速外围组件互连(PCIe)或通用串行总线(USB)以及其它连接器及接口。然而,一般来说,接口106可提供用于在存储器系统104与主机102之间传递控制、地址、数据及其它信号的接口,主机102具有用于接口106的可兼容接受器。
主机102可为主机系统,例如个人膝上型计算机、桌上型计算机、数码相机、移动电话或存储器卡读取器以及各种其它类型的主机。主机102可包含系统母板及/或底板,且可包含若干个存储器存取装置(例如,若干个处理器)。主机102也可为存储器控制器,例如其中存储器系统104是存储器装置(例如,具有裸片上控制器的存储器装置)。
控制器108可与存储器110(在一些实施例中,其可为单个裸片上的若干个存储器阵列)进行通信以控制数据读取、写入及擦除操作以及其它操作。作为一实例,控制器108可在与对应于存储器110的一或若干裸片相同的裸片上或不同的裸片上。
尽管未具体图解说明,但控制器108针对将控制器108耦合到存储器110的每一通道可包含离散存储器通道控制器。控制器108可包含(举例来说)用于控制对存储器110的存取及/或用于促进主机102与存储器110之间的数据传送的呈硬件及/或固件(例如,一或多个集成电路)及/或软件形式的若干个组件。
如图1中所图解说明,控制器108可包含错误校正组件112。错误校正组件112可包含汉明码错误校正电路以校正单个位错误且检测两个位错误。错误校正组件112不限于电路(例如,硬件)实施方案。举例来说,错误校正组件112可以硬件、固件及/或软件实施。尽管称为错误校正组件,但错误校正组件112可用于检测并且校正数据错误。另外,错误校正组件112可包含错误编码与解码功能性,如下文进一步所描述。举例来说,在若干个实施例中,错误校正组件112可编码将要写入到存储器110的一定量的经组合的用户数据与ECC数据。
错误校正组件112可为离散组件,例如专用集成电路(ASIC),或所述组件可反映功能上由控制器108内的电路提供,所述电路不一定具有独立于控制器108的其它部分的离散物理形式。尽管在图1中图解说明为控制器108内的组件,但错误校正组件112可处于控制器108外部或可具有位于控制器108内的若干个组件及位于控制器108外部的若干个组件。在若干个实施例中,错误校正组件112可包含单独编码与解码组件。
存储器110可包含若干个存储器单元(例如,非易失性存储器单元)阵列。举例来说,所述阵列可为具有NAND架构的快闪阵列。然而,实施例并不限于特定类型的存储器阵列或阵列架构。尽管本文中通常参考NAND架构中的浮动栅极类型快闪存储器单元,但实施例并不限制于此。举例来说,可将存储器单元分组成包含若干个物理页的若干个块。存储器单元平面中可包含若干个块,且阵列可包含若干个平面。作为一个实例,存储器装置可经配置以存储每页8KB(千字节)用户数据、每块128页用户数据、每平面2048个块及每装置16个平面。
在操作中,举例来说,数据可作为数据页写入到存储器110及/或从存储器110读取。举例来说,数据页可称为存储器系统的数据传送大小。数据可以称为扇区(例如,主机扇区)的数据分段发送到主机(例如,主机102)/从主机发送。举例来说,数据扇区可称为主机的数据传送大小。
图2是包括可根据本发明的若干个实施例操作的存储器单元阵列的存储器210的一部分的示意图。图2的实施例图解说明NAND架构非易失性存储器阵列;然而,本文中所描述的实施例不限于此实例。举例来说,若干个实施例可实施为NOR架构非易失性存储器阵列。如图2中所展示,存储器阵列包含存取线(例如,字线205-1、…、205-N)及相交的数据线(例如,局部位线207-1、207-2、207-3、…、207-M)。为易于在数字环境中寻址,字线205-1、…、205-N的数目及局部位线207-1、207-2、207-3、…、207-M的数目可为2的某一幂(例如,256个字线×4,096个位线)。
存储器阵列包含NAND串209-1、209-2、209-3、…、209-M。每一NAND串包含非易失性存储器单元211-1、…、211-N,其每一者通信地耦合到相应字线205-1、…、205N。每一NAND串(及其组成存储器单元)也与一局部位线207-1、207-2、207-3、…、207-M相关联。每一NAND串209-1、209-2、209-3、…、209-M的存储器单元211-1、…、211-N在选择栅极源极(例如,场效应晶体管(FET)213)与选择栅极漏极(例如,FET 219)之间源极到漏极串联耦合。每一选择栅极源极213经配置以响应于源极选择线217上的信号而将相应NAND串选择性地耦合到共同源极223,而每一选择栅极漏极219经配置以响应于漏极选择线215上的信号而将相应NAND串选择性地耦合到相应位线。
如图2中所图解说明的实施例中所展示,选择栅极源极213的源极耦合到共同源极线223。选择栅极源极213的漏极耦合到对应NAND串209-1的存储器单元211-1的源极。选择栅极漏极219的漏极在漏极触点221-1处耦合到对应NAND串209-1的位线207-1。选择栅极漏极219的源极耦合到对应NAND串209-1的最后一个存储器单元211-N(例如,浮动栅极晶体管)的漏极。
在若干实施例中,非易失性存储器单元211-1、…、211-N的构造包含源极、漏极、浮动栅极或另一电荷存储结构,及控制栅极。存储器单元211-1、…、211-N使其控制栅极分别耦合到字线205-1、…、205-N。NOR阵列架构将类似地布局,除了存储器单元串将并联耦合于选择栅极之间。举例来说,每一存储器单元(例如,如图2中所图解说明的存储器单元211-N)的一端可耦合到位线,且同一存储器单元的另一端可耦合到可与位线平行地对准的源极线。此外,NOR架构可提供对阵列中的存储器单元的随机存取(例如,而非如同NAND架构的基于页的存取)。
在操作中,耦合到选定字线(例如,205-1、…、205-N)的若干个存储器单元可作为群组一起来写入及/或读取。一起写入及/或读取的存储器单元群组可称为单元页(例如,物理页)且可存储若干数据页(例如,逻辑页)。耦合到特定字线且一起编程到相应数据状态的若干个存储器单元可称为目标页。编程操作可包含将若干个编程脉冲(例如,16V到20V)施加到选定字线以便将耦合到所述选定字线的选定单元的阈值电压(Vt)增加到对应于目标数据状态的所要电压电平。
读取操作可包含感测耦合到选定单元的位线的电压及/或电流改变以便确定所述选定单元的状态。所述读取操作可包含将位线预充电并在选定单元开始导通时感测放电。一种类型的读取操作包括将斜升读取信号施加到选定字线,且另一类型的读取操作包括将多个离散读取信号施加到选定字线以确定单元的状态。
图3A到3B图解说明根据本发明的若干个实施例的用于错误校正码(ECC)操作的若干个数据模式。以矩阵形式图解说明图3A到3B中的若干个数据模式,其中矩阵的每一行表示特定数据模式,且矩阵的每一列表示数据模式中的位置。尽管实施例不限于确定若干个特定预定数据模式,但图3A到3B仅图解说明可经包含为若干个预定数据模式的若干个数据模式的一部分。图3A到3B中所图解说明的矩阵中所包含的若干个预定数据模式经包含以便于在矩阵的每一列内进行平衡及通过限制矩阵中的具有二进制值1的位的数目而加快存储器操作。下文中将进一步描述与确定若干个预定数据模式相关联的若干种方法。
在若干个实施例中,编码矩阵中将包含的若干个预定数据模式可基于各种准则从图3A到3B中所列的若干个数据模式进行选择。举例来说,可确定若干个预定数据模式中的每一者仅具有奇数权重(例如,具有二进制值1的奇数数目个位)。当若干个预定数据模式包含奇数权重时,控制器可基于校正子(例如,对所存储ECC模式及所计算ECC模式进行的XOR运算的结果)是具有奇数权重还是具有偶数权重而确定所存储码字是包含单个位错误还是包含两个位错误。举例来说,如果校正子具有奇数权重(例如,奇数校正子),那么控制器可推断码字中存在单个位错误,并校正错误位。举例来说,如果校正子具有偶数权重(例如,偶数校正子),那么控制器可经配置以不进行校正,而是警告存在两个位错误。下文将结合图4进一步描述基于奇数或偶数校正子的与ECC相关联的若干个实施例。
在若干个实施例中,将额外ECC位添加到若干个ECC位(例如,检测及校正单个位错误所需的最小数目个ECC位)会允许用户使用各自仅具有奇数权重的那些预定数据模式。在先前方法中,用于确定汉明码需要多少ECC位的众所周知的公式如下:
d≤2p-1-p
其中,d表示正编码的数据字中的位的数目,且p表示ECC位(例如,校验位)的数目。举例来说,当256位数据字将使用汉明码来编码时,需要至少9个ECC位,因为根据以上述方程式,9个ECC位可保护至多502个位,而8个ECC位可保护至多247个位。仅使用具有奇数权重的那些数据模式可使可用的数据模式的数目减半,因为具有偶数权重的那些数据模式不可用。在此情况中,可修改上述公式以如下适当地反映本发明的若干个实施例:
其可经进一步简化如下:
d≤2p-1-p
其中d指示数据模式的数目,其中奇数权重大于1。由于经编码字中的每一数据位使用这些可用模式中的一者,因此d也是可使用此方案编码的位的最大数目。因此,对于本文中所描述的具有汉明距离4的经修改汉明码,10个ECC位可编码至多502个数据位,而9个ECC位可保护最大247个数据位。
图3A图解说明具有奇数权重的若干个数据模式。举例来说,每一数据模式可包含为1、3、5、7或9的权重,其中图3A中未图解说明具有为7或9的权重的数据模式。在每一数据模式中具有奇数权重可确保所得码字(例如,包含数据字及若干个ECC位,如图4中所图解说明)的总权重将为偶数,而不管正编码的数据字是具有奇数权重还是具有偶数权重。通过确保所得码字始终具有偶数权重,可基于校正子(例如,错误校正操作的结果)是奇数还是偶数而区分单个位错误或两个位错误。尽管实施例不限于此,但使用各自具有偶数权重的若干个数据模式可不确保所得码字始终具有偶数权重或奇数权重。下文将结合图4进一步描述基于奇数或偶数校正子的与ECC操作相关联的若干个实施例。为根据本发明的若干个实施例对由256个位组成的用户数据执行ECC操作,可确定266个数据模式,其中每一数据模式对应于码字的特定位,所述码字包含用户数据的256个位及ECC模式的10个位。
在若干个实施例中,当创建编码矩阵(或在解码码字时,解码矩阵,如图4中所图解说明)以执行ECC操作时,若干个预定数据模式可包含具有为3或5的权重的数据模式以及具有奇数权重的那些数据模式。通过进行此,若干个预定数据模式的总权重可被减小以加快ECC操作。举例来说,若干个预定数据模式可依据具有为3的权重的所有数据模式及具有为5的权重的数据模式的一部分而确定。由于存在将与ECC位相关联的具有为1的权重的10个不同数据模式以及符合为3的权重的120个不同数据模式,因此可依据具有为5的权重的252个不同数据模式而确定其余136个预定数据模式。尽管使用全部权重3项及利用权重5项而完成码字会产生具有最小总权重的码,但实施例不限于确定若干个预定数据模式的特定准则。举例来说,码字可使用较高权重模式(例如,权重7及/或权重9数据模式)而创建。减小总权重可提供例如提高所得电路(例如,执行逻辑XOR树的若干个XOR运算所需的电路)的速度及减小所得电路的大小等益处。编码或解码矩阵中具有二进制值1的每一位表示逻辑XOR树中的输入。通过减小逻辑XOR树中的输入的数目,所得电路(或在解码码字时,解码矩阵,如图4中所图解说明)的速度及大小可得以提高及减小。
在若干个实施例中,可选择若干个预定数据模式以实现(举例来说)特定所要操作特性。举例来说,选择可经做出以平衡若干个预定数据模式的矩阵的每一列内的权重(例如,所得矩阵包含对应列,所述对应列的具有二进制值1的位的数目的变化不超过特定量)。为便于平衡,图3A中的若干个数据模式基于对特定数据模式执行的若干个旋转操作而布置。考虑包含如图3A中所图解说明的前10个数据模式的若干个数据模式351,其中若干个数据模式351中的每一者包含具有二进制值1的一个位。在此实例中,数据模式0表示十进制值“1”,且可对数据模式0执行向左循环移位操作。所述操作将具有二进制值1的位向左移位一个,且将最高有效位移位到最右位置。此所得数据模式可设定为数据模式1,且图3A中所图解说明的若干个数据模式351的以下八个数据模式2到9可通过对数据模式0执行八次相同的操作而产生,这将使权重在数据模式0到9内的每一列内均匀地分布。如本文中所描述而产生的若干个数据模式351可称为第一族。
图3A进一步图解说明各自具有为3的权重的若干个数据模式353。若干个数据模式353也可如上文所描述而布置。举例来说,由数据模式10到19组成的第二族可基于数据模式10而产生,在各自具有具二进制值1的位作为最低有效位的若干个数据模式当中,数据模式10表示第二最小十进制值。举例来说,数据模式10表示在数据模式0之后的第二最小十进制值,其中数据模式0及数据模式10两者均具有具二进制值1的位作为最低有效位。在产生第二族后,可即刻基于对数据模式20执行的若干个旋转操作而产生第三族,在各自具有具二进制值1的位作为最低有效位的若干个数据模式当中,数据模式20表示第三最小十进制值。由于执行若干个旋转操作可使具有二进制值1的位在每一族内均匀地分布,因此确定若干个预定数据模式可为基于族进行的以平衡矩阵的每一列内的权重。
各自具有为5的权重的若干个数据模式355-1也可如上文所描述而布置。若干个数据模式355的族355-2仅由两个数据模式组成,因为(举例来说)对数据模式380执行两次向左循环移位操作仍将与数据模式381产生相同数据模式组合。
图3B图解说明确定若干个预定数据模式以平衡矩阵的每一列内的权重的实例。当通过使用编码矩阵或解码矩阵(例如,图3B中所展示的编码矩阵及解码矩阵)来编码数据字或解码码字时,具有二进制值1的每一位表示逻辑XOR树中的一项。平衡矩阵的每一列内的权重可提供提高对每一列的所有位执行若干个XOR运算的电路的速度的优点。举例来说,平衡每一列内的权重可减小每一列的权重之间的间隙,且减小所述间隙可避免其中特定列具有比其它列大得多的权重的情况。避免此种情况可提高电路的速度,因为电路的总体速度将通过所有列当中具有最大权重的特定列而确定。下文将进一步描述根据本发明的若干个实施例的使用编码矩阵(例如,如图3B中所图解说明的编码矩阵)来编码数据字及使用解码矩阵来解码码字以执行错误校正操作(例如,如图3B中所图解说明的解码矩阵)。
在若干个实施例中,平衡每一列内的具有二进制值1的若干个位可通过在族基础上确定若干个预定数据模式而实现。举例来说,确定以上实例中的整个第二族会自动平衡每一列内的具有二进制值1的若干个位。在于族基础上确定若干个预定数据模式之后,用户可选择若干个不同机制来确定若干个其余预定数据模式。举例来说,当需要确定256个预定数据模式时,用户可首先在族基础上确定250个预定数据模式,且可自由地取消选择所确定数据模式或选择额外数据模式以平衡每一列内的具有二进制值1的若干个位。下文中将进一步描述与确定若干个其余预定数据模式相关联的若干种方法。
在一些实施例中,具有3及5权重的前256个数据模式可确定为形成编码矩阵的若干个预定数据模式的完全集合。然而,进行此将产生如下的每一列的权重的和:
其中权重并非规律地分布于每一列内。如图3B中所图解说明,每一列的权重可通过确定若干个预定数据模式中将包含的若干个数据模式354而平衡。举例来说,如图3B中所图解说明,若干个预定数据模式354可由第一组若干个数据模式10到130(其包含基于数据模式130而产生的族内的数据模式中的一些数据模式)、第二组若干个数据模式140到269及数据模式380组成。如图3B中所图解说明,不选择基于数据模式130而产生的族内的若干个数据模式357,而仅选择同一族内的5个数据模式作为若干个预定数据模式354的一部分。然而,实施例不限于此些数据模式。在此情形中,每一列中的权重如下:
其中权重规律地分布于每一列内。编码矩阵在每一列内交替地具有为103及105的权重可具有减小在每一列内具有为105的权重的编码矩阵内的电路(例如,执行若干个XOR运算所需的电路)的大小的益处。选择数据模式380而非数据模式381,如图3B中所图解说明。虽然使用数据模式381将产生与具有为104的权重的所有列的完美平衡,但仍选择数据模式380,因为进行此,各自对应于用户数据的特定位的若干个预定数据模式10到265的每一列可具有奇数权重。在若干个实施例中,在每一列内具有奇数权重可确保经完全擦除数据字(例如,其中所有位均具有二进制值1的数据字)具有所有位均具有二进制值1的对应ECC模式,其中所有位均具有二进制值1的码字(例如,包含数据字及ECC位的字)是NOR架构中的有效字。尽管实施例不限于此,但具有在每一列内具有偶数权重的编码矩阵的经完全擦除数据字可不产生所有位均具有二进制值1的对应ECC模式,其中对应码字可并非有效码字。图3B中所图解说明的若干个预定数据模式354的完全集合如下:
然而,本发明的若干个实施例不限于平衡矩阵的每一列内的若干个1的特定方法。
若干个预定数据模式354的上述集合可构成可用于编码256位数据字的编码矩阵。在编码时,10个额外ECC位可通过使用编码矩阵基于256位数据字而产生,且被存储于存储器(例如,如图1中所图解说明的存储器110)中。在执行根据本发明的若干个实施例的错误校正操作时,266位码字可通过使用解码矩阵而解码,所述解码矩阵可包含以下10个额外数据模式:
因此,如图3B中所图解说明,解码矩阵可包含266个数据模式,所述266个数据模式除构成编码矩阵的若干个数据模式354之外也包含若干个数据模式352。(以下称“段落A”)
在若干个实施例中,若干个预定数据模式中的每一者可被指派给码字的每一对应位。举例来说,如上文中所图解说明的第一族可被指派给ECC模式的每一对应位,其中第一族的每一数据模式仅包含权重为1的项。举例来说,数据模式0可被指派给ECC模式的位0。然后,若干个其余预定数据模式可被指派给二进制数据字的每一对应位(例如,数据模式10到265各自被指派给数据字的256个位),其中每一数据模式包含为3或5的权重。
在若干个实施例中,控制器可基于若干个预定数据模式而产生ECC模式。举例来说,控制器可确定对应于具有二进制值1的数据字的每一位的若干个预定数据模式。在确定若干个预定数据模式后,控制器然后可即刻对若干个预定数据模式中的每一者执行若干个XOR运算以产生ECC模式。
以下是根据本发明的若干个实施例的使用若干个预定数据模式来产生ECC模式的实例。尽管若干个预定数据模式中的每一者不限于特定模式,但若干个预定数据模式可类似于图3B中所图解说明的若干个预定数据模式。
在一些实施例中,用户数据可呈二进制数据字形式且可包含具有二进制值1的前三个位,且其余253个位可具有二进制值0。因此,实例性二进制数据字可为:
111000000....000
其中仅实例性二进制数据字的前三个位具有二进制值1。在确定具有二进制值1的数据字的位的数目及位置后,控制器可即刻确定对应于具有二进制值1的每一位的若干个预定数据模式。在此实例中,根据图3B,实例性二进制数据字的位0、位1及位2的预定数据模式为:
数据位0:0 0 0 0 0 0 0 1 1 1
数据位1:0 0 0 0 0 0 1 1 1 0
数据位2:0 0 0 0 0 1 1 1 0 0
在确定对应于实例性二进制数据字的位的若干个预定数据模式后,控制器可即刻执行若干个XOR运算。在此实例中,控制器首先对位0及位1执行XOR运算,且对XOR运算(对位0及位1执行)的结果及位2执行另一XOR运算。校正子为
数据位0:0 0 0 0 0 0 0 1 1 1
XOR数据位1:0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 1 0 0 1
在执行第一XOR运算后,控制器也可执行如下的另一XOR运算:
XOR(数据位0及数据位1):0 0 0 0 0 0 1 0 0 1
数据位2:0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 0 1 0 1
当控制器完成对具有二进制值1的每一位执行若干个XOR运算时,控制器可将若干个XOR运算的结果确定为ECC模式。因此,根据所述实例,控制器可确定ECC模式如下:
0 0 0 0 0 1 0 1 0 1
在产生ECC模式后,控制器可利用ECC模式将实例性二进制数据字编码为码字,且将所述码字写入到存储器。下文将结合图4进一步描述根据本发明的若干个实施例使用码字中的ECC模式来检测及校正单个位错误及两个位错误。
图4图解说明根据本发明的若干个实施例的用于执行错误校正码(ECC)操作的流程图。在若干个实施例中,在步骤460处,可基于用户数据及编码矩阵而产生包含第一数目个ECC位的ECC模式。第一数目个ECC位可如上文结合图3B所描述而产生且与用户数据一起被存储为码字。在步骤462处,可基于从存储器读取的码字及编码矩阵而产生包含第二数目个ECC位的ECC模式。在步骤464处,一旦从存储器读取码字,便可对所存储ECC模式及所计算ECC模式执行XOR运算,所述所计算ECC模式是基于从存储器读取的数据字而产生。
在若干个实施例中,控制器(例如,图1中所描述的控制器108)可基于对所存储ECC模式及所计算ECC模式进行的XOR运算的结果(其称作校正子)而确定从存储器读取的二进制码字不具有错误位(例如,错误)。举例来说,如果校正子为零,那么控制器可确定所存储码字中不存在错误,如步骤466中所图解说明。此外,控制器可基于校正子是否对应于特定预定数据模式而确定二进制码字是具有单个位错误还是具有两个位错误。举例来说,当若干个预定数据模式各自仅具有奇数权重时,二进制码字中的单个位错误产生奇数校正子。相比来说,二进制码字中的两个位错误可产生偶数校正子。下文将进一步详细描述关于校正单个位错误及检测两个位错误的若干个实施例。
以下段落描述基于从存储器读取的码字而产生所计算ECC模式及检测并校正单个位错误或检测两个位错误的实例。尽管若干个预定数据模式中的每一者不限于特定模式,但若干个预定数据模式可类似于图3B中所图解说明的若干个预定数据模式。此外,ECC模式及数据字可类似于结合图3B所描述的先前实例中所图解说明的ECC模式及数据字。
在某一实施例中,存储器中所存储的数据字可为错误的(例如,由于但不限于读取或程序扰动)且具有单个位错误。举例来说,结合图3B先前所描述的实例性二进制数据字可具有如下在数据位1上的单个位错误:
1 1 1 0 0 0 0 0 0....0 0 0
1 0 1 0 0 0 0 0 0....0 0 0
这产生错误数据字,其中两个位具有二进制值1且其余位具有二进制值0。在步骤462处,控制器可基于错误数据字而产生包含第二数目个ECC位的所计算ECC模式,其中控制器可首先确定错误数据的每一对应位的若干个预定数据模式,且基于所确定若干个预定数据模式而产生所计算ECC模式。在此实例中,控制器如下对每一对应数据的若干个预定数据模式执行XOR运算:
数据位0:0 0 0 0 0 0 0 1 1 1
XOR数据位2:0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 0 1 1
XOR运算将产生为“0 0 0 0 0 1 1 0 1 1”的所计算ECC模式,如上文所图解说明。在步骤464处,在产生所计算ECC模式后,控制器可即刻对从存储器读取的所存储ECC模式及所计算ECC模式执行XOR运算。在此实例中,控制器读取先前写入到存储器的所存储ECC模式且如下对所存储ECC模式执行XOR运算:
所存储ECC模式:0 0 0 0 0 1 0 1 0 1
XOR所计算ECC模式:0 0 0 0 0 1 1 0 1 1
0 0 0 0 0 0 1 1 1 0
在步骤465处,控制器可确定从存储器读取的二进制码字是错误的,因为校正子并非为零。进一步在步骤467处,控制器可确定二进制码字内存在单个位错误,因为校正子为奇数(例如,具有奇数权重)。由于以上所产生的校正子对应于二进制数据字的数据位1的预定数据模式,因此控制器可确定二进制数据字1的数据位1是错误的。由于此实例图解说明数据位1是错误的,因此校正子正确地确定了码字的错误位。在步骤470处,在确认校正子对应于若干个预定数据模式中的一者后,控制器可即刻通过转换数据位1(从“0”到“1”)而校正错误。
在一些实施例中,存储器中所存储的ECC模式而非数据字可为错误的(例如,由于但不限于读取或程序扰动)且具有单个位错误。在此实例中,结合图3B先前所描述的实例性ECC模式具有如下在数据位1上的单个位错误:
0 0 0 0 0 1 0 1 0 1
0 1 0 0 0 1 0 1 0 1
在步骤462处,控制器可基于数据字而产生所计算ECC模式,所述所计算ECC模式无错误。因此,在不具有单个位错误的情况下,所计算ECC模式将与所存储ECC模式相同,其中所计算ECC模式将为“0 0 0 0 0 1 0 1 0 1”。在步骤464处,在产生所计算ECC模式后,控制器可即刻对所计算ECC模式及错误的所存储ECC模式执行XOR运算。在此实例中,校正子为:
所存储ECC模式:0 1 0 0 0 1 0 1 0 1
XOR所计算ECC模式:0 0 0 0 0 1 0 1 0 1
0 1 0 0 0 0 0 0 0 0
在步骤467处,控制器可确定存在单个位错误,因为所得校正子是奇数校正子。控制器可依照图3B中所图解说明的若干个预定数据模式而确定校正子对应于ECC模式的位1。在步骤470处,控制器可基于以上所产生的校正子而校正错误位。
在一些实施例中,存储器中所存储的数据字可为错误的(例如,由于但不限于读取或程序扰动)且具有两个位错误。在此实例中,段落A处所图解说明的实例性二进制数据字具有如下在数据位1及数据位3上的两个位错误:
1 1 1 0 0 0 0 0 0....0 0 0
1 0 1 1 0 0 0 0 0....0 0 0
这产生错误数据字。在步骤462处,控制器可基于错误数据字而产生所计算ECC模式。在此实例中,控制器首先经配置以确定如下对应于具有二进制值1的错误数据字的每一位的若干个预定数据模式:
数据位0:0 0 0 0 0 0 0 1 1 1
数据位2:0 0 0 0 0 1 1 1 0 0
数据位3:0 0 0 0 1 1 1 0 0 0
在步骤464处,在确定若干个预定数据模式后,控制器可即刻对每一所确定预定数据模式执行若干个XOR运算。在此实例中,控制器首先如下对对应于位0及位2的预定数据模式执行XOR运算:
数据位0:0 0 0 0 0 0 0 1 1 1
XOR数据位2:0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 0 1 1
在执行XOR运算后,控制器也可即刻经配置以如下对先前XOR运算的结果及对应于错误数据字的位3的预定数据模式执行XOR运算:
XOR(数据位0及数据位2):0 0 0 0 0 1 1 0 1 1
XOR数据位3:0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 1 1
在执行若干个XOR运算后,控制器可即刻将若干个XOR运算的结果确定为所计算ECC模式。因此,在此实例中,控制器将所计算ECC模式确定为“0 0 0 0 1 0 0 0 1 1”。在步骤464处,控制器可读取所存储ECC模式且如下对所存储ECC模式及所计算ECC模式执行另一XOR运算:
所存储ECC模式:0 0 0 0 0 1 0 1 0 1
所计算ECC模式:0 0 0 0 1 0 0 0 1 1
0 0 0 0 1 1 0 1 1 0
在步骤467处,控制器可确定码字具有两个位错误,因为校正子是偶数校正子。控制器可经配置以不进行校正,而是警告存在两个位错误,如步骤468处所图解说明。
在一些实施例中,所存储ECC模式可具有两个位错误。在此实例中,段落A处所图解说明的实例性二进制数据字具有如下在数据位1及数据位5上的两个位错误:
0 0 0 0 0 1 0 1 0 1
0 1 0 0 0 0 0 1 0 1
在步骤462处,控制器可基于数据字而产生所计算ECC模式,所述所计算ECC模式无错误。因此,所计算ECC模式将与所存储ECC模式相同,其中所计算ECC模式将为:0 0 0 0 01 0 1 0 1。在步骤464处,在产生所计算ECC模式后,控制器可即刻对所计算ECC模式及错误的所存储ECC模式执行XOR运算。校正子可为:
所存储ECC模式:0 1 0 0 0 0 0 1 0 1
XOR所计算ECC模式:0 0 0 0 0 1 0 1 0 1
0 1 0 0 0 1 0 0 0 0
在步骤467处,控制器可确定码字具有两个位错误,因为校正子是偶数校正子(例如,具有偶数权重)。在确定所述结果不对应于任何预定数据模式后,控制器可即刻经配置以不进行校正,而是警告存在两个位错误,如步骤468处所图解说明。
在一些实施例中,所存储ECC模式及所存储数据字各自可具有单个位错误。在此实例中,段落A处所图解说明的实例性二进制数据字具有如下在数据位1上的单个位错误:
1 1 1 0 0 0 0 0 0....0 0 0
1 0 1 0 0 0 0 0 0....0 0 0
此外,段落A处所图解说明的实例性所存储ECC模式可具有如下在数据位1上的单个位错误:
0 0 0 0 0 1 0 1 0 1
0 1 0 0 0 1 0 1 0 1
如先前实例中所图解说明,在步骤462处由控制器产生的所计算ECC模式可为:
数据位0:0 0 0 0 0 0 0 1 1 1
XOR数据位2:0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 0 1 1
在步骤464处,在产生所计算ECC模式后,控制器可对错误的所存储ECC模式及基于错误的所存储数据字而产生的所计算ECC模式执行XOR运算。在此实例中,校正子为:
所存储ECC模式:0 1 0 0 0 1 0 1 0 1
所计算ECC模式:0 0 0 0 1 1 0 0 1 1
0 1 0 0 1 0 0 1 1 0
在步骤467处,控制器可确定二进制码字具有两个位错误,因为校正子是偶数校正子。在确定所述结果不对应于任何预定数据模式后,控制器可即刻经配置以不进行校正,而是警告存在两个位错误。
尽管本文中已图解说明及描述了特定实施例,但所属领域的技术人员将了解,旨在实现相同结果的布置可替代所展示的特定实施例。本发明打算涵盖本发明的各种实施例的变更或变化形式。应理解,已以说明性方式而非限制性方式做出以上说明。在审阅以上说明后,所属领域的技术人员将即刻明了以上实施例的组合及本文中未具体描述的其它实施例。本发明的各种实施例的范围包含其中使用以上结构及方法的其它应用。因此,本发明的各种实施例的范围应参考所附权利要求书连同此权利要求书被授权的等效内容的全部范围来确定。
在前述实施方式中,出于简化本发明的目的,将各种特征一起分组于单个实施例中。本发明的此方法不应解释为反映本发明的所揭示实施例必须使用比明确陈述于每一权利要求中更多的特征的意图。而是,如所附权利要求书所反映,发明性标的物在于少于单个所揭示实施例的所有特征。因此,特此将所附权利要求书并入到实施方式中,其中每一权利要求独立地作为单独实施例。
Claims (16)
1.一种用于执行错误校正码ECC操作的设备,其包括:
存储器(110、210);及
控制器(108),其经配置以对所述存储器(110、210)中所存储的码字执行ECC操作,其中:
所述码字包含第一数目个ECC位,且所述第一数目个ECC位是基于编码矩阵而产生,所述编码矩阵包括选自若干个可用数据模式(351、353、355-1、355-2)的若干个预定数据模式(352、354);且
所述编码矩阵的每一行具有奇数权重;以及
所述编码矩阵的以第一列开始的每隔一列具有第一奇数权重且所述编码矩阵的以第二列开始的每隔一列具有不同于所述第一奇数权重的第二奇数权重,其中权重是具有二进制值1的位的数目;
所述控制器进一步经配置以对所述第一数目个ECC位和第二数目个ECC位执行XOR运算以:
检测所述码字中的单个错误且指示所述控制器(108)校正所述码字中的所述单个错误;或
检测所述码字中的两个错误,其中所述第二数目个ECC位是基于从所述存储器(110、210)读取的所述码字及所述编码矩阵而产生。
2.根据权利要求1所述的设备,其中所述第一数目个ECC位比汉明距离为3的汉明码多包含一个位,使得所述编码矩阵的每一行包含奇数权重。
3.根据权利要求1所述的设备,其中所述控制器(108)经配置以基于确定对所述第一数目个ECC位及所述第二数目个ECC位执行的XOR运算是包含奇数权重还是包含偶数权重而确定从所述存储器(110、210)读取的所述码字是包含单个错误还是包含两个错误。
4.一种用于执行错误校正码ECC操作的设备,其包括:
存储器(110、210);及
控制器(108),其经配置以:
基于用户数据及编码矩阵而产生第一数目个ECC位,其中:
所述编码矩阵的每一行具有奇数权重,其中权重是具有二进制值1的位的数目;
所述编码矩阵的以第一列开始的每隔一列具有第一奇数权重且所述编码矩阵的以第二列开始的每隔一列具有不同于所述第一奇数权重的第二奇数权重;且
将包含所述用户数据及所述第一数目个ECC位的码字写入到所述存储器(110、210);及
基于从所述存储器(110、210)读取的所述码字及所述编码矩阵而产生第二数目个ECC位;
其中所述控制器(108)进一步经配置以基于对所述第一数目个ECC位及所述第二数目个ECC位执行的XOR运算而进行以下操作:
响应于以下各项而检测并校正所述码字中的单个位错误:所述XOR运算的结果为非零、具有奇数权重、且对应于形成解码矩阵的若干个预定数据模式(352、354)中的一者;及
响应于以下各项而检测所述码字中的两个错误:XOR运算的结果为非零且具有偶数权重。
5.根据权利要求4所述的设备,其中所述控制器(108)经配置以响应于XOR运算的结果为零而确定所述码字中不存在错误,其中对所述第一数目个ECC位及所述第二数目个ECC位执行所述XOR运算。
6.一种用于执行错误校正码ECC操作的设备,其包括:
存储器(110、210);及
控制器(108),其经配置以:
使用编码矩阵来进行ECC操作,其中所述编码矩阵包含:
若干个预定数据模式(352、354),所述若干个预定数据模式(352、354)中的每一者对应于所述编码矩阵的相应行且包含奇数权重,其中权重是具有二进制值1的位的数目;且
所述编码矩阵的每一列具有奇数权重,其中若干个不同奇数权重在所述编码矩阵的所述列内交替地重复;
基于所述编码矩阵中的所述若干个预定数据模式(352、354)及用户数据而产生第一数目个ECC位;
所述控制器进一步经配置以对所述第一数目个ECC位和第二数目个ECC位执行XOR运算以:
检测码字中的单个错误且指示所述控制器(108)校正所述码字中的所述单个错误;
或
检测所述码字中的两个错误,其中所述第二数目个ECC位是基于从所述存储器(110、210)读取的所述码字及所述编码矩阵而产生。
7.根据权利要求6所述的设备,其中所述第一数目个ECC位比汉明距离为3的汉明码多包含一个位,使得所述预定数据模式(352、354)中的每一者包含奇数权重。
8.根据权利要求6到7中任一权利要求所述的设备,其中所述若干个预定数据模式(352、354)是基于与所述存储器(110、210)的存储器单元阵列相关联的至少一个操作特性而确定。
9.根据权利要求6到7中任一权利要求所述的设备,其中所述编码矩阵中的权重在所述预定数据模式(352、354)的每一位置中得以平衡,使得所述编码矩阵包括所述预定数据模式(352、354)的对应位置,所述预定数据模式(352、354)的权重的变化不超过一个量。
10.一种编码用户数据的方法,其包括:
基于用户数据及编码矩阵而产生第一数目个错误校正码ECC位,其中:
所述编码矩阵的每一列包含奇数权重,其中权重是具有二进制值1的位的数目;且
若干个不同奇数权重在所述编码矩阵的所述列内交替地重复;及
将包含所述用户数据及所述第一数目个ECC位的码字存储于存储器(110、210)中;及
对所述码字执行ECC操作,其中所述ECC操作用于响应于以下各项而检测所述码字中的两个错误:所述ECC操作的结果为非零且具有偶数权重;
其中执行所述错误校正码操作包含对所述第一数目个ECC位及第二数目个ECC位执行XOR运算以:
检测单个错误且指示控制器(108)校正所述码字中的所述单个错误;或
检测所述码字中的两个错误;
其中:
所述第一数目个ECC位是从所述存储器(110、210)读取;且
所述第二数目个ECC位是基于所述存储器(110、210)中所存储的所述码字及所述编码矩阵而产生。
11.根据权利要求10所述的方法,其中产生所述第一数目个ECC位包含对形成所述编码矩阵的第一组预定数据模式(352、354)中的每一者执行若干个XOR运算,所述第一组预定数据模式(352、354)对应于所述用户数据的具有二进制值1的每一位。
12.根据权利要求10到11中任一权利要求所述的方法,其中所述方法包含:
响应于以下各项而检测所述码字中的单个位错误并指示所述控制器(108)校正所述单个位错误:所述XOR运算的结果为非零、具有奇数权重、且对应于形成解码矩阵的第二组预定数据模式中的一者;及
响应于以下各项而检测所述码字中的两个位错误:所述XOR运算的结果为非零且具有偶数权重。
13.一种执行错误校正码ECC操作的方法,其包括:
产生编码矩阵以供在基于用户数据及编码矩阵进行的错误校正码ECC操作期间使用,其中所述编码矩阵包含:
若干个预定数据模式(352、354),所述若干个预定数据模式(352、354)中的每一者具有奇数权重,其中权重是具有二进制值1的位的数目且对应于所述编码矩阵的相应行;及
若干个列,其中若干个不同奇数权重在所述编码矩阵的所述若干个列内交替地重复;
将若干个预定数据模式(352、354)中的每一者指派给码字的每个相应位,其中所述码字包含用户数据及第一数目个ECC位;及
基于所述若干个预定数据模式(352、354)而产生所述第一数目个ECC位,其中所述若干个预定数据模式(352、354)中的每一者具有奇数权重;
其中执行所述错误校正码操作包含对所述第一数目个ECC位及第二数目个ECC位执行XOR运算以:
检测单个错误且指示控制器(108)校正所述码字中的所述单个错误;或
检测所述码字中的两个错误;
其中所述第二数目个ECC位是基于存储器(110、210)中所存储的所述码字及所述编码矩阵而产生。
14.根据权利要求13所述的方法,其中所述方法包含将具有二进制值1的单个位的所述若干个预定数据模式(352、354)中的每一者指派给所述第一数目个ECC位中的每一对应位。
15.根据权利要求13所述的方法,其中产生所述编码矩阵包含:从若干个可用数据模式(351、353、355-1、355-2)选择数据模式(352、354),及先选择具有较少具有二进制值1的位的数据模式,之后选择具有较多具有二进制值1的位的数据模式。
16.根据权利要求13所述的方法,其中产生所述编码矩阵包含选择数据模式以使所述编码矩阵中的每一位置的权重最小化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/091,112 | 2016-04-05 | ||
US15/091,112 US10176040B2 (en) | 2016-04-05 | 2016-04-05 | Error correction code (ECC) operations in memory |
PCT/US2017/025688 WO2017176613A1 (en) | 2016-04-05 | 2017-04-03 | Error correction code (ecc) operations in memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109196479A CN109196479A (zh) | 2019-01-11 |
CN109196479B true CN109196479B (zh) | 2022-05-10 |
Family
ID=59961691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780032735.4A Active CN109196479B (zh) | 2016-04-05 | 2017-04-03 | 存储器中的错误校正码(ecc)操作 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10176040B2 (zh) |
KR (1) | KR102102828B1 (zh) |
CN (1) | CN109196479B (zh) |
TW (1) | TWI627634B (zh) |
WO (1) | WO2017176613A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10567006B2 (en) * | 2016-08-05 | 2020-02-18 | Sandisk Technologies Llc | Data relocation |
CN107077402B (zh) * | 2017-01-18 | 2020-09-18 | 深圳市汇顶科技股份有限公司 | 码字生成方法、错误位确定方法及其电路 |
JP2019109806A (ja) * | 2017-12-20 | 2019-07-04 | ルネサスエレクトロニクス株式会社 | データ処理装置及びデータ処理方法 |
US20190243566A1 (en) * | 2018-02-05 | 2019-08-08 | Infineon Technologies Ag | Memory controller, memory system, and method of using a memory device |
DE102018126685B3 (de) | 2018-10-25 | 2019-10-10 | Infineon Technologies Ag | Verarbeitung von Daten |
US11016844B2 (en) * | 2019-03-15 | 2021-05-25 | Toshiba Memory Corporation | Error correction code structure |
US20200313694A1 (en) * | 2019-03-28 | 2020-10-01 | Intel Corporation | Detection of adjacent two bit errors in a codeword |
US11537464B2 (en) * | 2019-06-14 | 2022-12-27 | Micron Technology, Inc. | Host-based error correction |
US11068336B2 (en) * | 2019-07-12 | 2021-07-20 | Micron Technology, Inc. | Generating error checking data for error detection during modification of data in a memory sub-system |
TWI714248B (zh) * | 2019-09-09 | 2020-12-21 | 新唐科技股份有限公司 | 記憶體控制器與資料保護方法 |
US11210167B2 (en) | 2019-10-28 | 2021-12-28 | Intel Corporation | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) |
US11237906B1 (en) * | 2020-07-28 | 2022-02-01 | Micron Technology, Inc. | Generating a balanced codeword protected by an error correction code |
US11494264B2 (en) | 2020-07-28 | 2022-11-08 | Micron Technology, Inc. | Generating a protected and balanced codeword |
KR20220057087A (ko) * | 2020-10-29 | 2022-05-09 | 에스케이하이닉스 주식회사 | 리드-솔로몬 코드의 소프트-디시젼 디코딩 방법 및 장치 |
KR20230021949A (ko) * | 2021-08-06 | 2023-02-14 | 삼성전자주식회사 | 메모리 장치 및 이의 동작 방법 |
CN114138203B (zh) * | 2021-12-06 | 2024-02-06 | 武汉新芯集成电路制造有限公司 | 数据存取方法、数据存储方法及数据存取控制器 |
US20240120947A1 (en) * | 2022-10-07 | 2024-04-11 | Micron Technology, Inc. | Error detection and classification at a host device |
TWI835381B (zh) * | 2022-11-02 | 2024-03-11 | 慧榮科技股份有限公司 | 資料加密的錯誤偵測裝置 |
US20240291505A1 (en) * | 2023-02-23 | 2024-08-29 | Micron Technology, Inc. | Perfectly balanced error code correction without correction power increase |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431335A (zh) * | 2007-11-07 | 2009-05-13 | 国际商业机器公司 | 用于调制编码和解码的方法、装置和系统 |
CN102378967A (zh) * | 2009-04-02 | 2012-03-14 | 美光科技公司 | 扩展式单位错误校正及多位错误检测 |
CN104900271A (zh) * | 2014-01-28 | 2015-09-09 | 英飞凌科技股份有限公司 | 用于通过数据反演来提高数据存储的设备和方法 |
CN104937669A (zh) * | 2013-01-21 | 2015-09-23 | 美光科技公司 | 使用分类码来确定软数据 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3648239A (en) | 1970-06-30 | 1972-03-07 | Ibm | System for translating to and from single error correction-double error detection hamming code and byte parity code |
US4241446A (en) | 1978-10-16 | 1980-12-23 | Honeywell Information Systems Inc. | Apparatus for performing single error correction and double error detection |
US5917838A (en) * | 1998-01-05 | 1999-06-29 | General Dynamics Information Systems, Inc. | Fault tolerant memory system |
KR20030059914A (ko) * | 2002-01-03 | 2003-07-12 | 삼성전자주식회사 | 에러 정정 코드 블럭 생성 방법 및 장치와 그것이 적용된광 저장매체 |
US7100097B2 (en) * | 2002-07-16 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Detection of bit errors in maskable content addressable memories |
US7069494B2 (en) * | 2003-04-17 | 2006-06-27 | International Business Machines Corporation | Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism |
JP2005228039A (ja) * | 2004-02-13 | 2005-08-25 | Toshiba Corp | 半導体装置及びそのメモリテスト方法 |
US7171603B2 (en) * | 2004-05-06 | 2007-01-30 | Motorola, Inc. | Method and apparatus for encoding and decoding data |
US7325183B2 (en) | 2004-07-21 | 2008-01-29 | Hewlett-Packard Development Company, L.P. | Error correction code generation method and apparatus |
US7992066B2 (en) * | 2004-08-09 | 2011-08-02 | Lg Electronics Inc. | Method of encoding and decoding using low density parity check matrix |
US7193798B2 (en) | 2005-01-12 | 2007-03-20 | Agere Systems, Inc. | Method and apparatus for encoding and decoding a runout correction bit pattern of servo field |
US7653862B2 (en) * | 2005-06-15 | 2010-01-26 | Hitachi Global Storage Technologies Netherlands B.V. | Error detection and correction for encoded data |
KR101119111B1 (ko) * | 2006-05-04 | 2012-03-16 | 엘지전자 주식회사 | Ldpc 부호를 이용한 데이터 재전송 방법 |
US7721178B2 (en) * | 2006-06-01 | 2010-05-18 | International Business Machines Corporation | Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code |
US8065598B1 (en) * | 2007-02-08 | 2011-11-22 | Marvell International Ltd. | Low latency programmable encoder with outer systematic code and low-density parity-check code |
US8468416B2 (en) | 2007-06-26 | 2013-06-18 | International Business Machines Corporation | Combined group ECC protection and subgroup parity protection |
US8560927B1 (en) | 2010-08-26 | 2013-10-15 | Altera Corporation | Memory error detection circuitry |
US8612832B2 (en) * | 2011-04-01 | 2013-12-17 | Intel Corporation | Mechanisms and techniques for providing cache tags in dynamic random access memory |
JP5117593B2 (ja) | 2011-04-26 | 2013-01-16 | 株式会社東芝 | 符号化・復号化装置、データ記憶装置、及び方法 |
US8745472B2 (en) * | 2012-09-01 | 2014-06-03 | Texas Instruments Incorporated | Memory with segmented error correction codes |
US9311181B2 (en) * | 2012-11-15 | 2016-04-12 | Samsung Electronics Co., Ltd. | Memory controller changing partial data in memory device and method for changing partial data thereof |
WO2015041475A1 (ko) * | 2013-09-17 | 2015-03-26 | 삼성전자 주식회사 | 송신 장치 및 그의 펑처링 방법 |
US10396822B2 (en) * | 2013-09-26 | 2019-08-27 | Samsung Electronics Co., Ltd. | Transmitting apparatus and signal processing method thereof |
TWI536749B (zh) * | 2013-12-09 | 2016-06-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 |
US9571231B2 (en) * | 2014-08-21 | 2017-02-14 | Rambus Inc. | In-band status encoding and decoding using error correction symbols |
US10425106B2 (en) * | 2016-11-28 | 2019-09-24 | California Institute Of Technology | Balanced Reed-Solomon codes |
-
2016
- 2016-04-05 US US15/091,112 patent/US10176040B2/en active Active
-
2017
- 2017-04-03 WO PCT/US2017/025688 patent/WO2017176613A1/en active Application Filing
- 2017-04-03 CN CN201780032735.4A patent/CN109196479B/zh active Active
- 2017-04-03 KR KR1020187031675A patent/KR102102828B1/ko active IP Right Grant
- 2017-04-05 TW TW106111421A patent/TWI627634B/zh active
-
2018
- 2018-12-13 US US16/219,143 patent/US10901837B2/en active Active
-
2021
- 2021-01-25 US US17/157,001 patent/US11442807B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431335A (zh) * | 2007-11-07 | 2009-05-13 | 国际商业机器公司 | 用于调制编码和解码的方法、装置和系统 |
CN102378967A (zh) * | 2009-04-02 | 2012-03-14 | 美光科技公司 | 扩展式单位错误校正及多位错误检测 |
CN104937669A (zh) * | 2013-01-21 | 2015-09-23 | 美光科技公司 | 使用分类码来确定软数据 |
CN104900271A (zh) * | 2014-01-28 | 2015-09-09 | 英飞凌科技股份有限公司 | 用于通过数据反演来提高数据存储的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102102828B1 (ko) | 2020-06-01 |
KR20180121797A (ko) | 2018-11-08 |
CN109196479A (zh) | 2019-01-11 |
TWI627634B (zh) | 2018-06-21 |
US20210141690A1 (en) | 2021-05-13 |
US20170286217A1 (en) | 2017-10-05 |
US10901837B2 (en) | 2021-01-26 |
TW201738896A (zh) | 2017-11-01 |
US20190129791A1 (en) | 2019-05-02 |
US11442807B2 (en) | 2022-09-13 |
WO2017176613A1 (en) | 2017-10-12 |
US10176040B2 (en) | 2019-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109196479B (zh) | 存储器中的错误校正码(ecc)操作 | |
US11422885B2 (en) | Tiered error correction code (ECC) operations in memory | |
US9405622B2 (en) | Shaping codes for memory | |
US10691538B2 (en) | Methods and apparatuses for error correction | |
US11431355B2 (en) | Error correction code (ECC) operations in memory for providing redundant error correction | |
CN108701491B (zh) | 用于错误率降低的方法和设备 | |
US10084487B2 (en) | Apparatuses and methods for erasure-assisted ECC decoding | |
US10855316B2 (en) | Error correction code (ECC) operations in memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |