KR20210001927A - Generalized concatenated error correction coding scheme with locality - Google Patents
Generalized concatenated error correction coding scheme with locality Download PDFInfo
- Publication number
- KR20210001927A KR20210001927A KR1020200065186A KR20200065186A KR20210001927A KR 20210001927 A KR20210001927 A KR 20210001927A KR 1020200065186 A KR1020200065186 A KR 1020200065186A KR 20200065186 A KR20200065186 A KR 20200065186A KR 20210001927 A KR20210001927 A KR 20210001927A
- Authority
- KR
- South Korea
- Prior art keywords
- codewords
- codeword
- sub
- data
- encoding
- Prior art date
Links
- 238000012937 correction Methods 0.000 title description 18
- 238000000034 method Methods 0.000 claims abstract description 59
- 239000011159 matrix material Substances 0.000 claims description 19
- 208000011580 syndromic disease Diseases 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000007423 decrease Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000004026 adhesive bonding Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product codes
- H03M13/2915—Product codes with an error detection code in one dimension
-
- 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/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/1515—Reed-Solomon 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/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
본 개시는 에러 정정 코딩, 구체적으로, 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법에 관한 것이다.The present disclosure relates to error correction coding, in particular, to a generalized concatenation error correction coding method using locality.
에러 정정 코딩은 잡음 채널에서 정확한 디지털 통신을 보장하기 위한 방법으로서 개발되었다. 데이터가 전송되는 동안 잡음 채널에 의해 데이터가 소실되거나 변형될 수 있기 때문에, 일부 데이터가 소실되거나 변형된 경우에도 정확한 디코딩을 보장하기 위해 에러 정정 코딩이 사용될 수 있다.Error correction coding has been developed as a method to ensure accurate digital communication in a noisy channel. Since data may be lost or transformed by a noise channel while data is being transmitted, error correction coding may be used to ensure accurate decoding even when some data is lost or transformed.
최근, 에러 정정 코딩은 메모리 장치 내에서 데이터를 저장하기 위해 사용되고 있다. 메모리 셀에 저장된 데이터가 리드되기 전에 소실되거나 변형될 가능성이 있으므로, 메모리 장치 내에 정확한 데이터를 저장하는 것을 보장하기 위해 에러 정정 코딩이 사용될 수 있다.Recently, error correction coding has been used to store data in memory devices. Since data stored in the memory cell is likely to be lost or deformed before being read, error correction coding may be used to ensure that the correct data is stored in the memory device.
에러 정정 코딩의 일반적인 방식은 리드-솔로몬(Reed-Solomon, RS) 코드이다. 이 방식에 따르면, 데이터 블록은 심볼로 지칭되는 원소들(elements)의 세트로 표현될 수 있다. 데이터 디코딩 시 부정확하거나 누락된 심볼들이 정정될 수 있도록, 일정 개수의 체크 심볼이 데이터에 더해질 수 있다.A common method of error correction coding is Reed-Solomon (RS) code. According to this method, a data block may be represented as a set of elements referred to as symbols. A certain number of check symbols may be added to the data so that incorrect or missing symbols may be corrected during data decoding.
에러 정정 코딩의 또 다른 일반적인 방식은 저-밀도 패리티-체크(Low-Density Parity-Check, LDPC) 코드이다. 이 방식에 따르면, 패리티 체크 심볼들이 데이터에 더해질 수 있다. 패리티 체크 심볼들은 희소 이분 그래프(sparse bipartite graph)를 사용하여 생성될 수 있다.Another common method of error correction coding is a Low-Density Parity-Check (LDPC) code. According to this scheme, parity check symbols can be added to the data. Parity check symbols can be generated using a sparse bipartite graph.
상술한 에러 정정 코드 방식들에서, 데이터와 체크 심볼들은, 코드워드로 지칭되는 스트링들로 그룹화된다. 디코딩 시, 코드워드에 포함된 데이터가 디코딩되기 전에 일반적으로 전체 코드워드가 수신되어야 한다. 이로 인해 두 가지 트레이드 오프(trade-off)가 발생할 수 있다. 첫 번째 트레이드 오프에 따르면, 체크 심볼의 개수가 증가하는 경우 에러가 많이 발생하더라도 정확한 디코딩이 가능하고, 체크 심볼의 개수가 적어지는 경우 오버헤드가 낮아지므로 고정된 사이즈를 갖는 메모리 장치 내에 인코딩된 데이터가 더 많이 저장될 수 있고 더 빠른 디코딩이 가능하다. 두 번째 트레이드 오프에 따르면, 코드워드의 길이가 길어지는 경우 오버헤드가 낮아지므로 인코딩된 데이터가 메모리 장치 내에 더 많이 저장될 수 있고, 데이터가 디코딩되기 전에 더 많은 데이터가 수신되어야 하므로 메모리 장치에서 데이터를 리드하기 위한 레이턴시가 증가할 수 있다. 반대로, 코드워드의 길이가 짧아지는 경우 레이턴시는 감소할 수 있으나, 오버헤드가 증가하므로 메모리 장치에 저장되는 데이터가 적어지고 디코딩 시 더 많은 계산 자원이 필요할 수 있다.In the above-described error correction code schemes, data and check symbols are grouped into strings referred to as codewords. During decoding, the entire codeword should generally be received before the data contained in the codeword is decoded. This can lead to two trade-offs. According to the first trade-off, if the number of check symbols increases, accurate decoding is possible even if a large number of errors occur, and if the number of check symbols decreases, the overhead decreases, so the encoded data in a memory device having a fixed size Can be stored more and faster decoding is possible. According to the second tradeoff, if the length of the codeword is longer, the overhead is lower, so the encoded data can be stored more in the memory device, and more data must be received before the data is decoded. The latency to lead can be increased. Conversely, if the length of the codeword is shortened, the latency may be reduced, but since the overhead increases, the amount of data stored in the memory device decreases, and more computational resources may be required during decoding.
본 개시의 기술적 사상이 해결하려는 과제는 상이한 길이의 코드워드들을 단계적으로 디코딩함으로써, 디코딩의 정확성과 레이턴시 간의 트레이프 오프를 최적화하는 데 있다.A problem to be solved by the technical idea of the present disclosure is to optimize the trade-off between decoding accuracy and latency by stepwise decoding codewords of different lengths.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일 측면에 따른 메모리 장치에 데이터를 저장하는 메모리 컨트롤러의 동작 방법은, 외부로부터 수신된 데이터를 인코딩하는 단계 및 인코딩된 데이터를 메모리 장치에 저장하는 단계를 포함하고, 인코딩하는 단계는, 수신된 데이터를 둘 이상의 서브-코드워드들로 인코딩하는 단계를 포함하고, 둘 이상의 서브-코드워드들은, 적어도 하나의 서브-코드워드보다 비트 사이즈가 큰 외곽 코드워드(outer codeword)를 구성하고, 둘 이상의 외곽 코드워드들은, 적어도 하나의 외곽 코드워드들보다 비트 사이즈가 큰 대형 코드워드(larger coderword)를 구성하고, 대형 코드워드는 외곽 코드워드에 의해 정정 불가한 에러를 정정한다.In order to achieve the above object, a method of operating a memory controller for storing data in a memory device according to an aspect of the present disclosure includes encoding data received from the outside and storing the encoded data in the memory device. Including, and the encoding step includes the step of encoding the received data into two or more sub-codewords, wherein the two or more sub-codewords are an outer code having a bit size larger than that of at least one sub-codeword A word (outer codeword) is formed, and two or more outer codewords constitute a larger codeword having a bit size larger than at least one outer codeword, and the large codeword cannot be corrected by the outer codeword. One error is corrected.
메모리 장치에 저장된 데이터를 복구하는 메모리 컨트롤러의 동작 방법은, 메모리 장치에 저장된 데이터를 리드하는 단계, 리드된 데이터의 서브-코드워드들을 디코딩하는 단계 및 리드된 데이터의 서브 코드워드들이 디코딩 불가한 경우, 복수의 외곽 코드워드들을 디코딩하는 단계를 포함하고, 복수의 외곽 코드워드들 각각은 디코딩 불가한 서브-코드워드들을 둘 이상 포함한다.A method of operating a memory controller for recovering data stored in a memory device includes: reading data stored in the memory device, decoding sub-codewords of the read data, and when sub-codewords of the read data are not decodeable. , Decoding a plurality of outer codewords, and each of the plurality of outer codewords includes two or more non-decodeable sub-codewords.
본 개시의 다른 측면에 따른 메모리 장치에 데이터를 저장하는 메모리 컨트롤러의 동작 방법은, 데이터를 인코딩하는 단계 및 인코딩된 데이터를 메모리 장치에 저장하는 단계를 포함하고, 인코딩하는 단계는, 제1 계층에서 데이터를 복수의 서브-코드워드들로 인코딩하는 단계, 제2 계층에서 복수의 서브-코드워드들을 복수의 외곽 코드워드들로 그룹화하는 단계 및 제3 계층에서 복수의 외곽 코드워드들을, 복수의 외곽 코드워드들 중 어느 하나의 외곽 코드워드보다 비트 사이즈가 큰 적어도 하나의 대형 코드워드(larger codeword)로 그룹화하는 단계를 포함한다.A method of operating a memory controller for storing data in a memory device according to another aspect of the present disclosure includes encoding data and storing the encoded data in a memory device, wherein the encoding step includes: in a first layer Encoding data into a plurality of sub-codewords, grouping a plurality of sub-codewords into a plurality of outer codewords in a second layer, and a plurality of outer codewords in a third layer, a plurality of outer codewords And grouping the codewords into at least one larger codeword having a bit size larger than that of an outer codeword of any one of the codewords.
본 개시의 예시적 실시 예에 따른 데이터 저장 방법 및 데이터 복구 방법은, 본 개시의 기술적 사상이 해결하려는 과제는 상이한 길이의 코드워드들을 단계적으로 디코딩함으로써, 디코딩의 정확성과 레이턴시 간의 트레이프 오프를 최적화할 수 있다.In the data storage method and data recovery method according to an exemplary embodiment of the present disclosure, a problem to be solved by the technical idea of the present disclosure is to optimize the trade-off between decoding accuracy and latency by stepwise decoding codewords of different lengths. can do.
도 1은 본 발명의 예시적인 실시 예들에 따른 데이터 그룹화를 설명하는 도면이다.
도 2는 본 발명의 예시적인 실시 예들에 따른 데이터 그룹화 방법을 설명하는 도면이다.
도 3은 본 발명의 예시적인 실시 예들에 따른 데이터 인코딩 및 디코딩 방법을 설명하는 흐름도이다.
도 4는 본 발명의 실시 예들에 따른 메모리를 포함하는 메모리 시스템을 설명하는 블록도이다.
도 5는 본 개시에 따른 방법 및 시스템을 구현하는 예시적인 컴퓨팅 시스템이다.1 is a diagram illustrating data grouping according to exemplary embodiments of the present invention.
2 is a diagram illustrating a method of grouping data according to exemplary embodiments of the present invention.
3 is a flowchart illustrating a data encoding and decoding method according to exemplary embodiments of the present invention.
4 is a block diagram illustrating a memory system including a memory according to example embodiments.
5 is an exemplary computing system implementing a method and system in accordance with the present disclosure.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다.Hereinafter, various embodiments of the present invention will be described with reference to the accompanying drawings.
본 발명의 예시적인 실시 예들은 잡음 채널을 통한 전송 시 데이터를 인코딩하는 방법들을 제공할 수 있다. 본 발명의 예시적인 실시 예들은 메모리 장치에 데이터를 저장하고, 메모리 장치에서 데이터를 복구하는 방법들을 제공할 수 있다. 본 발명의 예시적인 실시 예들은, 레이턴시를 낮추기 위해 더 적은 체크 심볼들을 사용하여 짧은 코드워드를 인코딩할 수 있을 뿐만 아니라, 데이터 정확성을 높이고 더 많은 에러를 정정하기 위해 더 많은 체크 심볼들을 사용하여 긴 코드워드를 인코딩할 수도 있다. 본 발명의 예시적인 실시 예들에 따르면, 데이터는 상대적으로 적은 체크 코드워드들을 갖는 짧은 코드워드들(shorter-codeword) 또는 서브-코드워드(sub-codeword)로 인코딩될 수 있다. 짧은 코드워드들 또는 서브-코드워드들은 추가적인 체크 심볼들을 포함하는 긴 코드워드(longer codeword) 또는 코드워드 그룹(codeword group)으로 결합될 수 있다. 코드워드 그룹(codeword group)은 외곽 코드워드(outer codeword)로 지칭될 수 있다. 디코딩은 적은 체크 심볼들을 갖는 짧은 코드워드들 또는 서브-코드워드들에 대해 최대한 많이 수행될 수 있다. 불충분한 체크 심볼들로 인해 초과 에러가 발생하고, 초과 에러로 인해 디코딩이 실패하는 경우, 디코딩은 긴 코드워드 또는 코드워드 그룹에 대해 다시 수행될 수 있다.Exemplary embodiments of the present invention may provide methods of encoding data when transmitted through a noise channel. Exemplary embodiments of the present disclosure may provide methods of storing data in a memory device and recovering data in a memory device. Exemplary embodiments of the present invention not only can encode a short codeword using fewer check symbols to lower latency, but also increase data accuracy and use more check symbols to correct more errors. You can also encode codewords. According to exemplary embodiments of the present invention, data may be encoded into short codewords or sub-codewords having relatively few check codewords. Short codewords or sub-codewords can be combined into a longer codeword or codeword group containing additional check symbols. The codeword group may be referred to as an outer codeword. Decoding can be performed as much as possible for short codewords or sub-codewords with few check symbols. If an excess error occurs due to insufficient check symbols and decoding fails due to an excess error, decoding may be performed again for a long codeword or codeword group.
짧은 코드워드들에 포함된 심볼들의 그룹은 서브-코드워드(sub-codeword)라고 지칭되고, 긴 코드워드에 포함된 심볼들의 그룹은 그룹-코드워드(grouped-codeword)라고 지칭될 수 있다. 그룹-코드워드(grouped-codeword)는 외곽 코드워드(outer codeword)로 지칭될 수 있다. 데이터는 서브-코드워드들로 인코딩될 수 있고, 서브-코드워드들은 서브-코드워드들이 모두 수신되면 국부적으로 디코딩될 수 있다. 서브-코드워드들은 그룹-코드워드로 결합될 수 있다. 서브-코드워드 내에 너무 많은 에러들이 있는 경우 그룹-코드워드들이 수신되므로, 그룹-코드워드들이 모두 수신된 이후에 디코딩되는 데이터는 서브-코드워드들을 기반으로 디코딩되더라도 정확한 디코딩이 될 수 없다. 레이턴시를 감소시키기 위해, 데이터는 서브-코드워드가 모두 수신되었을 때 디코딩될 수도 있다. 그러나, 특정한 서브-코드워드의 데이터가 디코딩될 수 없는 경우, 데이터 정확성을 높이기 위하여, 데이터는 그룹-코드워드가 모두 수신되었을 때 디코딩될 수 있다.A group of symbols included in short codewords may be referred to as a sub-codeword, and a group of symbols included in long codewords may be referred to as grouped-codewords. The grouped-codeword may be referred to as an outer codeword. Data can be encoded into sub-codewords, and sub-codewords can be decoded locally once all of the sub-codewords are received. Sub-codewords can be combined into a group-codeword. Since group-codewords are received when there are too many errors in a sub-codeword, data to be decoded after all of the group-codewords have been received cannot be accurately decoded even if they are decoded based on the sub-codewords. To reduce latency, data may be decoded when all sub-codewords have been received. However, if the data of a specific sub-codeword cannot be decoded, in order to increase the data accuracy, the data can be decoded when all the group-codewords have been received.
나아가, 본 발명의 예시적인 실시예들은 그룹-코드워드들의 세트를 코드워드 슈퍼-그룹(codeword super-group)으로 그룹화할 수 있다. 코드워드 슈퍼-그룹(codeword super-group)은 대형 코드워드(large codeword)라고 지칭될 수 있다. 따라서, 데이터가 서브-코드워드 또는 그룹-코드워드로부터 정확하게 디코딩될 수 없는 경우, 코드워드 슈퍼-그룹이 모두 수신된 후에 데이터가 디코딩될 수 있다. 각 단계마다 데이터가 정확하게 디코딩될 가능성을 높이기 위하여, 더 많은 체크 심볼들이 존재할 수 있다. 코드워드 슈퍼-그룹은 추가 체크 심볼들과 그룹화됨으로써 다음 단계의 그룹이 될 수 있다. 코드워드 슈퍼-그룹에 의해 데이터가 정확하게 디코딩될 수 없는 경우, 다음 단계의 그룹으로부터 데이터가 디코딩될 수 있다. 그룹화하는 단계의 개수는 제한되지 않을 수 있다. 예를 들어, 2, 3, 4, 5, 6개 또는 그 이상 개수의 그룹화 단계가 사용될 수 있다. 그러나, 설명의 명확성을 위하여, 본 발명의 예시적인 실시예들은 데이터가 서브-코드워드로 인코딩되는 그룹화 단계, 서브-코드워드가 그룹-코드워드로 인코딩되는 그룹화 단계 및 그룹-코드워드가 코드워드 슈퍼-그룹으로 인코딩되는 그룹화 단계에 대해, 각 그룹화 단계에서 하나 이상의 체크 심볼들이 더해지는 것으로 설명할 수 있다.Furthermore, exemplary embodiments of the present invention may group a set of group-codewords into a codeword super-group. The codeword super-group may be referred to as a large codeword. Thus, if data cannot be correctly decoded from a sub-codeword or group-codeword, the data can be decoded after all of the codeword super-groups have been received. In order to increase the likelihood that data is correctly decoded in each step, more check symbols may exist. The codeword super-group can be grouped into the next level by grouping with additional check symbols. If the data cannot be correctly decoded by the codeword super-group, the data can be decoded from the next step group. The number of grouping steps may not be limited. For example, 2, 3, 4, 5, 6 or more grouping steps may be used. However, for clarity of explanation, exemplary embodiments of the present invention include a grouping step in which data is encoded into a sub-codeword, a grouping step in which a sub-codeword is encoded into a group-codeword, and a group-codeword is a codeword. For the grouping step encoded as a super-group, it may be described as adding one or more check symbols in each grouping step.
도 1은 본 발명의 예시적인 실시 예들에 따른 데이터 그룹화를 설명하는 도면이다.1 is a diagram illustrating data grouping according to exemplary embodiments of the present invention.
도 1을 참조하면, 데이터는 데이터 심볼들(11)로 인코딩될 수 있고, 복수의 데이터 심볼들(11)은 체크 심볼들(12)과 함께 서브-코드워드(13) 내에 포함될 수 있다. 서브-코드워드들(13)은 체크 심볼들(12)과 함께 그룹-코드워드(14)에 포함될 수 있다. 따라서, 각 서브-코드워드(13)는 그룹-코드워드(14) 내에 포함된 심볼일 수 있다.Referring to FIG. 1, data may be encoded into
그룹-코드워드들(14)은 체크 심볼들(12)과 함께 코드워드 슈퍼-그룹(15)에 포함될 수 있다. 따라서, 각 그룹-코드워드(14)는 코드워드 슈퍼-그룹(15)에 포함된 심볼일 수 있다. 임의의 개수의 코드워드 슈퍼그룹들(15)도 동일한 방식으로 구성될 수 있다.The group-
적절한 코딩 방식을 사용하여 데이터를 데이터 심볼로 인코딩할 수 있다. 예를 들어, 리드-솔로몬(Reed-Solomon, RS) 또는 BCH(Bose-Chaudhuri-Hocquenghem)가 사용될 수 있다. 즉, BCH 인코딩을 사용하여 데이터를 서브-코드워드들로 인코딩하는 경우, BCH 인코딩은 서브-코드워드들을 그룹-코드워드들로 인코딩하고, 그룹-코드워드들을 코드워드 슈퍼-그룹으로 인코딩하기 위해 반복해서 사용될 수 있다.Data can be encoded into data symbols using an appropriate coding scheme. For example, Reed-Solomon (RS) or Bose-Chaudhuri-Hocquenghem (BCH) may be used. That is, when using BCH encoding to encode data into sub-codewords, BCH encoding encodes sub-codewords into group-codewords, and encodes group-codewords into codeword super-groups. Can be used repeatedly.
본 발명의 다른 실시예에 따르면, 상술한 바와 같이 국부적(locally) 또는 전체적(generally)인 디코딩 방식을 통해, 데이터는 리드-솔로몬(Reed-Solomon, RS) 코딩 또는 유사한 인코딩 기술에 따라 인코딩될 수 있다. 또한, 데이터는, 복수의 데이터 RS 코드들을 하나 이상의 리던던시 RS 코드와 함께 그룹화하고, 데이터 RS 코드와 리던던시 RS 코드의 한 세트에 대해 싱글 패리티 체크 매트릭스를 생성함으로써, 인코딩될 수 있다.According to another embodiment of the present invention, data may be encoded according to Reed-Solomon (RS) coding or similar encoding technology through a locally or generically decoding method as described above. have. Further, data may be encoded by grouping a plurality of data RS codes together with one or more redundant RS codes and generating a single parity check matrix for a set of data RS codes and redundancy RS codes.
도 2는 본 발명의 예시적인 실시 예들에 따른 데이터 그룹화 방법을 설명하는 도면이다.2 is a diagram illustrating a method of grouping data according to exemplary embodiments of the present invention.
도 2를 참조하면, 데이터는 기본(primary) 데이터 RS 코드들(21)의 집합으로 인코딩되고, 하나 이상의 리던던시 RS 코드들(22)은 기본 데이터 RS 코드들(21)과 함께 그룹화되고, 싱글 패리티 체크 매트릭스(23)는 기본 데이터 RS 코드들(21) 및 리던던시 RS 코드들(22)로부터 생성될 수 있다. 이러한 방법으로, 데이터는 국부 레벨(local level)인 RS 코드 레벨에서 디코딩될 수 있고, 데이터가 정확하게 디코딩될 수 없으면 패리티 체크 매트릭스와 함께 RS 코드들의 전체 집합(기본 데이터 및 리던던시 데이터)가 수신될 때, 국부 레벨에서 디코딩될 수 없는 데이터는 리던던시 데이터 RS 코드들과 패리티 체크 매트릭스를 사용하여 디코딩될 수 있다.2, data is encoded into a set of primary
도 3은 본 발명의 예시적인 실시 예들에 따른 데이터 인코딩 및 디코딩 방법을 설명하는 흐름도이다.3 is a flowchart illustrating a data encoding and decoding method according to exemplary embodiments of the present invention.
도 3을 참조하면, S31에서, 데이터가 수신될 수 있다. S32에서, 수신된 데이터는 상술한 단계적 방법들(nested fashions)에 따라 인코딩될 수 있다. S33에서, 인코딩된 데이터는 메모리 장치에 저장될 수 있다. 이후, 메모리 장치에 저장된 데이터의 복구가 시작될 수 있다. 복구의 한 부분으로서, S34에서, 심볼들의 제1 세트(a first set of symbols)가 복구될 수 있다. S35에서, 국부적 디코딩(local decoding)이 성공적인지 여부가 판달될 수 있다. 심볼들의 제1 세트가 오로지 심볼들의 제1 세트에 대한 정보만을 기반으로 디코딩될 수 있으면, S36로 이동하고, 심볼들의 제1 세트가 심볼들의 제1 세트에 대한 정보만을 기반으로 디코딩될 수 없으면, S37로 이동한다.Referring to FIG. 3, in S31, data may be received. In S32, the received data may be encoded according to the above-described nested fashions. In S33, the encoded data may be stored in the memory device. Thereafter, data stored in the memory device may be recovered. As part of the recovery, in S34, a first set of symbols may be recovered. In S35, it may be determined whether or not local decoding is successful. If the first set of symbols can only be decoded based on information about the first set of symbols, go to S36, and if the first set of symbols cannot be decoded based only on information about the first set of symbols, Go to S37.
S36에서, 데이터는 복구될 심볼 세트들의 전체 그룹(entire group of sets of symbols)을 기다리지 않고 디코딩될 수 있고, 다음 심볼들의 세트(next set of symbols)도 같은 방식으로 복구되고 디코딩될 수 있다.In S36, data may be decoded without waiting for an entire group of sets of symbols to be recovered, and a next set of symbols may be recovered and decoded in the same manner.
S37에서, 심볼들의 제1 세트를 포함하는 심볼 세트들의 그룹(a group of symbol sets)이 복구될 수 있다. S38에서, 심볼들의 전체 그룹(the entire group of symbols)이 복구된 이후, 심볼 그룹에 대한 정보를 기초로 심볼들의 제1 세트 및 심볼 그룹에 포함된 다른 심볼 세트들(other sets of symbols of the group of symbols)이 복구될 수 있다. 그 후, 추가적인 데이터가 같은 방식으로 복구되고 디코딩될 수 있다.In S37, a group of symbol sets including the first set of symbols may be recovered. In S38, after the entire group of symbols is recovered, the first set of symbols and other sets of symbols of the group based on the information on the symbol group of symbols) can be restored. Thereafter, additional data can be recovered and decoded in the same way.
상술한 바와 같이, 본 개시의 예시적인 실시 예들은 메모리 시스템에 저장될 데이터를 인코딩하고, 메모리 시스템으로부터 복구된 데이터를 디코딩할 수 있다.As described above, exemplary embodiments of the present disclosure may encode data to be stored in a memory system and decode data recovered from the memory system.
도 4는 본 발명의 실시 예들에 따른 메모리를 포함하는 메모리 시스템을 설명하는 블록도이다.4 is a block diagram illustrating a memory system including a memory according to example embodiments.
도 4를 참조하면, 메모리 시스템(300)은 메모리 컨트롤러(400) 및 비휘발성 메모리 장치(410)를 포함할 수 있다.Referring to FIG. 4, the
비휘발성 메모리 장치(410)는 플래시 메모리 장치, NAND 플래시 메모리 장치, 상 변화식 RAM(phase change RAM, PRAM), 강유전체 RAM(ferroelectric RAM, FRAM), 자기저항식 RAM(magnetic RAM, MRAM) 등일 수 있으나 이에 제한되지 않는다. 본 발명의 예시적인 실시 예에 따르면, 비휘발성 메모리 장치(410)는 복수의 NAND 플래시 메모리 장치들을 포함할 수 있다. 비휘발성 메모리 장치(410)는 평면 구조 또는 메모리 셀의 스택을 갖는 3차원(3D) 메모리 셀 구조일 수 있다.The
비휘발성 메모리 장치(410)는 메모리 셀 어레이(415), X 디코더(420), 전압 생성기(414), I/O 버퍼(417), 페이지 버퍼(416) 및 제어 로직(412)을 포함할 수 있다. 또한, 비휘발성 메모리 장치(410)는 입력/출력(I/O) 패드(411)를 포함할 수 있다.The
메모리 셀 어레이(415)는 복수의 워드라인들 및 복수의 비트라인들을 포함할 수 있다. 메모리 셀 어레이(415)에 포함된 각 메모리 셀은 비휘발성 메모리 셀로 구현될 수 있다. 예를 들어, 메모리 셀 어레이(415)에 포함된 각 메모리 셀은 플로팅 게이트 또는 전하 트랩 계층(charge trapping layer)와 같은 전하 저장 계층(charge storage layer)을 포함할 수 있다.The memory cell array 415 may include a plurality of word lines and a plurality of bit lines. Each memory cell included in the memory cell array 415 may be implemented as a nonvolatile memory cell. For example, each memory cell included in the memory cell array 415 may include a charge storage layer such as a floating gate or a charge trapping layer.
메모리 셀 어레이(415)는 복수의 블록들 및 복수의 페이지들을 포함할 수 있다. 각 블록은 복수의 페이지들을 포함할 수 있다. 예를 들어, 제1 블록(418)은 N-1개의 페이지들인 제1 그룹을 포함하고, 제2 블록(419)은 N-1개의 페이지들인 제2 그룹을 포함할 수 있고, N은 1 이상의 정수일 수 있다. 페이지는 프로그램 동작과 리드 동작의 단위이고, 블록은 소거 동작의 단위일 수 있다.The memory cell array 415 may include a plurality of blocks and a plurality of pages. Each block may include a plurality of pages. For example, the
제어 로직(412)는 비휘발성 메모리 장치(410)의 전체적인 동작을 제어할 수 있다. 메모리 컨트롤러(400)로부터 커맨드 CMD를 수신하면, 제어 로직(412)는 커맨드 CMD를 해석하고, 해석된 커맨드 CMD에 따라 동작(예를 들어, 프로그램 동작, 리드 동작, 리드 리트라이 동작 또는 소거 동작)이 수행되도록 비휘발성 메모리 장치(410)를 제어할 수 있다.The
X 디코더(420)는 제어 로직(412)에 의해 제어되고, 로우 어드레스에 따라 메모리 셀 어레이(415)에 포함된 워드라인들 중 적어도 하나를 구동할 수 있다.The
전압 생성기(414)는 제어 로직(412)에 의해 제어되고, 프로그램 동작, 리드 동작 또는 소거 동작에 필요한 하나 이상의 전압들을 생성하고, 생성된 전압들을 X 디코더(420)에 의해 선택된 하나 이상의 열에 제공할 수 있다.The
페이지 버퍼(416)는 제어 로직(412)에 의해 제어되고, 동작 모드(예를 들어, 리드 동작 또는 프로그램 동작)에 따라 감지 증폭기(sense amplifier) 또는 쓰기 드라이버(write driver)로서 동작할 수 있다.The
I/O 패드(411) 및 I/O 버퍼(417)는 외부 장치(예를 들어, 메모리 컨트롤러(400) 또는 호스트)와 비휘발성 메모리 장치(410) 간에 교환되는 데이터의 I/O 경로로서 동작할 수 있다.The I/
메모리 컨트롤러(400)는 마이크로프로세서(401), 리드-전용 메모리(read-only memory, ROM)(403), 랜덤 액세스 메모리(random access memory, RAM)(402), 인코더(404), 디코더(405), 메모리 인터페이스(406) 및 버스(407)를 포함할 수 있다. 메모리 컨트롤러(400)에 포함된 구성요소들(401 내지 406)은 버스(407)를 통해 서로 전기적으로 연결될 수 있다.The
마이크로프로세서(401)는 메모리 컨트롤러(400)를 포함하는 메모리 시스템(300)의 전체적인 동작를 제어할 수 있다. 마이크로프로세서(401)는 제어 신호를 생성함으로써 다른 구성요소들을 제어하는 회로일 수 있다. 메모리 시스템(300)에 전원이 공급되면, 마이크로프로세서(401)는 메모리 시스템(300)을 동작시키기 위하여 ROM(403)에 저장된 펌웨어를 RAM(402) 상에서 구동하고, 메모리 시스템(300)의 전체적인 동작을 제어할 수 있다. 적어도 예시적인 일 실시 예에 따르면, 마이크로프로세서(401)는 메모리 컨트롤러(400)의 다른 구성요소들, 예를 들어, ROM(403), RAM(402), 인코더(404), 디코더(405), 메모리 인터페이스(406) 및 버스(407) 중 적어도 하나의 동작을 제어하기 위해 명령어를 생성(issue)할 수 있다. 적어도 예시적인 일 실시 예에 따르면, 메모리 컨트롤러(400)에서 수행되는 동작들은 마이크로프로세서(401)에 의해 수행되거나 마이크로프로세서(401)의 제어에 따라 수행될 수 있다. 적어도 예시적인 일 실시 예에 따르면, 메모리 컨트롤러(410)에 의해 수행되는 동작들은, ROM(403)에 저장된 프로그램 코드에 포함되고, 동작들에 대응되는 명령어들을 실행하는 마이크로프로세서(401)에 의해 수행되거나 마이크로프로세서(401)의 제어에 따라 수행될 수 있다.The
메모리 시스템(300)의 구동 펌웨어 코드는 ROM(403)에 저장될 수 있으나, 이에 제한되지 않는다. 퍼무에어 코드는 비휘발성 메모리 장치(410)의 일 부분에 저장될 수 있다. 따라서, 마이크로프로세서(401)의 제어 또는 개입은 마이크로프로세서(401)의 직접적인 제어 뿐만 아니라 마이크로프로세서(401)에 의해 구동되는 소프트웨어인 펌웨어의 개입도 포함할 수 있다.The driving firmware code of the
버퍼로 동작하는 메모리인 RAM(402)은 호스트 또는 마이크로프로세서(401)에서 수신되는 초기 커맨드(initial command), 데이터 및 다양한 변수들 또는 비휘발성 메모리 장치(410)에서 출력되는 데이터를 저장할 수 있다. RAM(402)은 데이터, 다양한 파라미터 및 비휘발성 메모리 장치(410)로 출력되거나 메모리 장치(410)에서 수신되는 변수들을 저장할 수 있다.The
메모리 인터페이스(406)는 메모리 컨트롤러(400) 및 비휘발성 메모리 장치(410) 간의 인터페이스로서 동작할 수 있다. 메모리 인터페이스(406)는 비휘발성 메모리 장치(410)의 I/O 패드(411)에 연결되고, I/O 패드(411)와 데이터를 교환할 수 있다. 나아가, 메모리 인터페이스(406)는 비휘발성 메모리 장치(410)에 적합한 커맨드를 생성하고, 생성된 커맨드를 비휘발성 메모리 장치(410)의 I/O 패드(411)에 제공할 수 있다. 메모리 인터페이스(406)는 비휘발성 메모리 장치(410)에 의해 실행될 커맨드 및 비휘발성 메모리 장치(410)의 어드레스(address, ADD)를 제공할 수 있다.The
적어도 예시적인 일 실시 예에 따르면, 디코더(405)는 상술한 방법에 따라 데이터를 디코딩하는 에러 정정 코드(error correcting code, ECC) 디코더이고, 인코더(404)는 상술한 방법에 따라 데이터를 인코딩하는 ECC 인코더일 수 있다. 적어도 예시적인 일 실시 예에 따르면, 디코더(405) 및 인코더(404)는 상술한 방법에 따라 에러 비트 정정을 수행할 수 있다. 인코더(404)는 데이터가 비휘발성 메모리 장치(410)에 제공되기 전에 데이터에 대해 에러 정정 인코딩을 수행함으로써 하나 이상의 패리티 비트 또는 리던던시 비트가 더해진 데이터를 생성할 수 있다. 하나 이상의 패리티 비트 또는 리던던시 비트는 비휘발성 메모리 장치(410)에 저장될 수 있다.According to at least one exemplary embodiment, the
디코더(405)는 출력 데이터에 대해 에러 정정 디코딩을 수행하고, 에러 정정 디코딩의 결과를 기초로 에러 정정 디코딩이 성공적으로 수행되었는지 여부를 결정하고, 결정 결과를 기초로 명령어 신호를 출력할 수 있다. 리드 데이터는 디코더(405)에 전달되고, 디코더(405)는 하나 이상의 패리티 비트 또는 리던던시 비트를 사용하여 데이터의 에러 비트들을 정정할 수 있다. 에러 비트의 개수가 정정 가능한 한계 에러 비트 수를 초과하면, 디코더(405)는 상술한 바와 같이, 더 높은 레벨의 데이터 구조화(data organization)에 따라 디코딩할 수 있다. 예시적인 일 실시예에서, 인코더(404) 및 디코더(405)는 상술한 바와 같이 동작하도록 조정된 BCH(Bose-Chaudhuri-Hocquenghem)의 변형 방법를 사용하여 에러 정정을 수행할 수 있다.The
본 발명의 예시적인 실시 예들은 Super Bose-Chaudhuri-Hocquenghem(SBCH)라고 지칭되는 BCH의 변형 방법을 사용할 수 있다. SBCH는 짧은 이진 코드인 BCH 코드들과 이진 코드가 아닌 리드-솔로몬(Reed-Solomon, RS) 코드들로 구성된 다중 레벨의 대수 코드(algebraic code)일 수 있다. 저-밀도 패리티 체크(low density parity check, LDPC) 코드들의 메시지-전달(message-passing) 디코딩 알고리즘에서, 변수와 체크 노드들 간에 많은 양의 소프트 정보가 반복적으로 교환될 필요가 있는 반면, SBCH 코드들의 디코딩 알고리즘에서는, 짧은 BCH 및 RS 코드들에 대한 표준 대수 디코딩 모드들을 사용함으로써 전체적으로 대수적(algebraic)이다. 따라서, SBCH 디코더의 전력 소모량은 LDPC 디코더의 전력 소모량과 비교할 때 굉장히 적다.Exemplary embodiments of the present invention may use a method of modifying BCH called Super Bose-Chaudhuri-Hocquenghem (SBCH). The SBCH may be a multilevel algebraic code composed of BCH codes, which are short binary codes, and Reed-Solomon (RS) codes instead of binary codes. In the message-passing decoding algorithm of low density parity check (LDPC) codes, a large amount of soft information needs to be repeatedly exchanged between variables and check nodes, whereas SBCH code In its decoding algorithm, it is entirely algebraic by using standard algebraic decoding modes for short BCH and RS codes. Therefore, the power consumption of the SBCH decoder is very small compared to the power consumption of the LDPC decoder.
SBCH 방식에 따르면, 길이가 n인 이진 코드들은 이고, 길이가 인 리드-솔로몬(Reed-Solomon, RS) 코드들은 일 수 있다. 위 코드들과 관련된 SBCH 코드는 모든 이진 매트릭스 일 수 있다. 여기서, 모든 i에 대해 이고, 모든 j=1,...,L에 대해 일 수 있다. 여기서, 는 소위 델타 신드롬(delta syndromes)으로 지칭될 수 있다.According to the SBCH scheme, binary codes of length n are And the length is In Reed-Solomon (RS) codes Can be SBCH codes related to the above codes are all binary matrices Can be Where, for all i And for all j=1,...,L Can be here, Can be referred to as so-called delta syndromes.
본 개시의 예시적인 실시 예들에 따르면, RS 코드들은 코드워드의 행들을 접착(glue)할 수 있다. 디코딩 과정에서 RS 코드들을 적절하게 사용하기 위하여, 수신된 전체 워드들에 액세스할 수 있다. 그러나, 상술한 바와 같이, 본 발명의 예시적인 실시 예들은 파셜 디코딩(partial decoding)을 수행할 수 있다. 수신된 워드의 더 큰 청크에 액세스될수록 프레임 에러율(Frame Error Rate, FER)은 감소될 수 있다.According to exemplary embodiments of the present disclosure, RS codes may glue rows of codewords. In order to properly use RS codes in the decoding process, it is possible to access all of the received words. However, as described above, exemplary embodiments of the present invention may perform partial decoding. The frame error rate (FER) may decrease as larger chunks of received words are accessed.
본 개시의 예시적인 실시예들에 따르면, 파셜 디코딩은 국부성(locality)을 통해 수행될 수 있다. 예를 들어, 블록 길이가 4KB라면, 1KB("1/4 블록")이 FER10-3로 디코딩되고, 완전한 4KB 블록은 FER10-11로 디코딩될 수 있다. 1/4 블록의 디코딩이 실패하는 경우, 완전한 4KB 블록이 리드될 수 있다.According to example embodiments of the present disclosure, partial decoding may be performed through locality. For example, if the block length is 4 KB, 1 KB ("1/4 block") is decoded as FER10 -3 , and a complete 4 KB block is FER It can be decoded as 10 -11 . If the decoding of the 1/4 block fails, a complete 4KB block can be read.
이 방법에서, 레이턴시는 실질적으로 높은 확률로 감소될 수 있다. 상술한 바와 같이, 이러한 방법은 SBCH 워드의 행들을 외부(external) RS 코드와 접착(gluing)함으로써 구현될 수 있다. 국부성(locality)을 얻기 위해, RS 코드들은 국부성을 갖는 코드들과 교체될 수 있다. 국부성으로 인해, 행들의 그룹들 각각(each group of rows)은 국부적으로 접착(glued locally)될 수 있다. 따라서, 행 그룹(group of rows) 내에 포함된 다양한 워드들은 그룹에 포함되지 않은 행들을 사용하지 않고, RS 코드를 대체하는 국부 코드들(local codes)의 국부성을 사용하여 서로 도울 수 있다. 그러나, 특정한 행 그룹들(distinct groups of rows)은 국부 코드들의 전역 의존성(global dependencies)에 의해 여전히 연결되어 있을 수 있다. 따라서, 국부 그룹(local group)에 대한 디코딩이 페일되는 경우, 모든 행들에 접근함으로써 성공적인 디코딩이 수행될 수 있다.In this way, the latency can be reduced with a substantially high probability. As described above, this method can be implemented by gluing the rows of SBCH words with an external RS code. In order to obtain locality, RS codes can be replaced with codes having locality. Due to locality, each group of rows may be glued locally. Thus, various words included in a group of rows can help each other by using the locality of local codes replacing the RS code, without using rows not included in the group. However, certain groups of rows may still be linked by global dependencies of local codes. Thus, when decoding for a local group fails, successful decoding can be performed by accessing all rows.
상술한 바와 같이, 본 발명의 예시적인 실시 예는 몇가지 실시 예들로 구분될 수 있다. 예를 들어, 실시 예 1(A1) 및 실시 예 2(A2)가 제공될 수 있다. 이 두 가지 실시 예는 본 발명을 구현하기 위해 사용될 수 있는 두 가지 선택적 알고리즘을 설명할 수 있다.As described above, exemplary embodiments of the present invention can be classified into several embodiments. For example, Example 1 (A1) and Example 2 (A2) may be provided. These two embodiments can describe two optional algorithms that can be used to implement the present invention.
실시 예 1(A1)에 따르면, q는 소수(prime)의 거듭제곱(power)이고, 은 의 서로 다른 0이 아닌 구성요소들(distinct nonzero 디드순)이고, 은 K의 구별될 필요가 없는 0이 아닌 구성요소들이다. F에 대한 일반화된 리드-솔로몬(Generalized Reed-Solomon, GRS) 코드는 패리티-체크 매트릭스 를 갖는 선형 코드 C이다.According to Example 1 (A1), q is the power of a prime, silver Are different non-zero components of (distinct nonzero order), Are non-zero components of K that need not be distinguished. The generalized Reed-Solomon (GRS) code for F is the parity-check matrix. Linear with Code C.
여기서, 이고, H는 RS에서 [수학식 1]과 같이 정의될 수 있다.here, And H may be defined as in [Equation 1] in RS.
최종적인 코드는 최소 거리(minimal distance) 을 갖는 MDS일 수 있다. r이 정수이고, 일 때, 최종적인 GRS 코드는 로 표현될 수 있다. 체크 매트릭스 는 [수학식 2]와 같이 정의될 수 있다.The final code is the minimum distance It may be an MDS having. r is an integer, When, the final GRS code is It can be expressed as Check matrix Can be defined as in [Equation 2].
코드 정의. 선형 코드 는, 및 F의 0이 아닌 서로 다른 구성요소들인 을 만족하도록, 양의 정수 파라미터들인 q, , , b, c를 결정함으로써 정의될 수 있다. 이고, 인 i에 대해 일 수 있다. 따라서, 이다. 의 구성요소들은 에 포함된다. 인 i에 대해 [수학식 3] 내지 [수학식 6]과 같이 정의될 수 있다. Code definition. Linear code Is, And the non-zero components of F To satisfy, positive integer parameters q, , It can be defined by determining, b, c. ego, About i Can be therefore, to be. The components of Included in For i, it may be defined as [Equation 3] to [Equation 6].
여기서, 는 a+b 에러를 정정할 수 있는 에 대한 RS의 체크 매트릭스일 수 있다.here, A+b error can be corrected It may be a check matrix of RS for.
다음으로, 에 대하여, [수학식 7]과 같이 정의될 수 있다.to the next, With respect to, it can be defined as [Equation 7].
여기서, 는 에 대하여, 또는 인 경우 에 대하여, 이고, 일 수 있다.here, Is Against, or If about, ego, Can be
에 대하여, [수학식 8]과 같이 정의될 수 있다. With respect to, it can be defined as in [Equation 8].
즉, 이면 이고, 이므로, 일 수 있다.In other words, Back side ego, Because of, Can be
디코딩. 전송 워드(transmitted word)는 이고, 수신 워드(received word)는 일 수 있다. 디코더는 각 서브-간격(sub-interval) 마다 표준 RS 디코딩 방식(standard RS decoding method)을 적용할 수 있다. 디코더는 각 서브-간격(sub-interval) 마다 를 만족하는 i개의 에러와 j개의 소거(erasure)의 조합을 정정할 수 있다. 정정이 수행될 때, 서브-간격들 중 일부에서 모든 에러들을 초기화(clear)될 수 있다. 결과 워드(resulting word)는 일 수 있다. 이므로, RS 디코더는 를 만족하는 i개의 잔여 에러(remaining errors)와 j개의 잔여 소거(remaining erasures)의 조합을 정정하기 위해 z를 적용할 수 있다. 이는 하나의 서브-워드 이외의 모든 서브-워드들이 제1 단계(first round)에 디코딩되고, 디코딩되지 않은 하나의 서브-워드에 포함된 에러의 개수가 b+c를 초과하지 않는 경우 효과적일 수 있다. decoding. The transmitted word is And the received word is Can be Decoder each sub-interval Each standard RS decoding method can be applied. Decoder each sub-interval each It is possible to correct a combination of i errors and j erasures satisfying the. When correction is performed, all errors can be cleared in some of the sub-intervals. The resulting word is Can be So, the RS decoder Z can be applied to correct the combination of i remaining errors and j remaining erasures satisfying. This may be effective when all sub-words other than one sub-word are decoded in a first round, and the number of errors included in one undecoded sub-word does not exceed b+c. have.
상술한 바와 같이, 실시 예 2(A2)에서, 의 그룹은 코드워드가 될 수 있다. 코드의 계열(family)에 대한 설명은 후술된다. 계열에서, RS는 내부 코드(inner code)와 외곽 코드(outer code) 모두에서 사용될 수 있다.As described above, in Example 2 (A2), Group of It can be a codeword. Of code A description of the family will be described later. In the series, RS can be used in both an inner code and an outer code.
는 에 대한 선형 코드 C일 수 있다. 는 소수 거듭제곱인 q, 양의 정수들인 T, J, m, 정수열(integer sequence) , 체크 매트릭스들인 에 의해 결정될 수 있다. C는 내부 코드(internal codes)인 를 포함하고, 여기서, 이고, 이다. Is May be a linear code C for Is a decimal power q, positive integers T, J, m, integer sequence , Check matrices Can be determined by C is the internal codes Including, where, ego, to be.
에 관한 x의 첫 t개의 신드롬들이 0이 되는 것은 에 대한 조건일 수 있다. 실질적으로, 는 t개의 에러를 정정할 수 있는 BCH 또는 t/2개의 에러를 정정할 수 있는 RS일 수 있다. 코드워드 는 일 수 있다. 여기서, 이고, 는 에 포함될 수 있다. 즉, 는 확장 필드 에 대한 RS 워드이고, 길이가 J이고 차원이 J-R(t)일 수 있다. 이 RS 코드는 를 만족하는 i개의 에러과 j개의 소거의 조합을 정정할 수 있다. 는 리던던시를 위해 R(t) K-심볼을 갖고, 이는 일반적으로 일반적으로 코드 C의 리던던시를 위해 개의 심볼을 필요로 한다. 따라서, 전체적인 리던던시는 F에 대해 개의 심볼들일 수 있다. The first t syndromes of x about become 0 May be a condition for realistically, May be a BCH capable of correcting t errors or an RS capable of correcting t/2 errors. Codeword Is Can be here, ego, Is Can be included in In other words, Is an extended field Is an RS word for, length J and dimension JR(t). This RS code is It is possible to correct a combination of i errors and j erasures satisfying. Has an R(t) K-symbol for redundancy, which is generally used for redundancy in code C. It requires two symbols. Therefore, the overall redundancy is It may be a number of symbols.
따라서, 본 발명의 예시적인 실시 예들은, 워드인 각각이 높은 확률로 자립형 방식(standalone manner)으로 디코딩되도록 를 함께 그룹화할 수 있다. 그러나, 전체 그룹에 추가적인 리던던시를 부가함으로써, 를 포함하는 더 큰 코드워드가 형성될 수 있고, 디코딩 성공 확률이 더 높아질 수 있다. 추가된 리던던시는 코드워드들의 일부 정보 심볼들을 대체할 수 있다.Thus, exemplary embodiments of the present invention, Word Inn So that each is decoded in a standalone manner with a high probability Can be grouped together. However, by adding additional redundancy to the entire group, A larger codeword including a may be formed, and a decoding success probability may be higher. The added redundancy can replace some information symbols of codewords.
본 디코딩 방식은 개별적인 GCC 코드워드 각각을 분리 디코딩(separate decoding)할 수 있다. 그룹 내 디코딩될 수 없는 에 대한 일부 GCC 워드들의 경우, 표준 RS 디코더가 에 대한 t개의 RS-코드워드, 즉 (로 상술됨)에 적용될 수 있다. 에 대한 임의의 에 대한 디코딩이 실패하는 경우, 국부적(local) RS에 의해 보조되는 디코딩 방식이 사용될 수 있다. 예를 들어, RS 워드의 그룹인 에 대한 디코딩을 완료하기 위하여 상술한 두 가지 방식 중 어느 하나가 사용될 수 있다.This decoding method is an individual GCC codeword Each can be separately decoded. Cannot be decoded within the group For some GCC words for, the standard RS decoder T RS-codewords for ( Can be applied to). For random If the decoding for is failed, a decoding scheme assisted by a local RS may be used. For example, a group of RS words Any one of the above two methods may be used to complete the decoding for.
다른 실시 예에서, 컴포넌트 GCC 워드들의 일부가 제1 단계(the first round)에서 디코딩이 실패되면, 상술한 바와 같이, 디코딩된 워드들은, 제1 단계에서 디코딩되지 않은 그룹 의 각 컴포넌트 코드워드를 개별적으로(separate) 디코딩하는 제2 단계(second round)에 추가되는 리던던시로서 기여할 수 있다.In another embodiment, when some of the component GCC words fail to be decoded in the first round, as described above, the decoded words are a group that is not decoded in the first round. It may contribute as a redundancy added to a second round of decoding each component codeword of'separately'.
본 발명은 에러 정정 코드(Error Correction Code, ECC)에 기반할 수 있다. ECC 기술에서, 유한한 정수 r=2, 3?? 및 유한 대수체(algebraic field) F가 존재하고, F의 각 심볼은 r 비트를 포함할 수 있다. [n k] 선형 코드 C는 성분들(entries)이 F 내에 있는 k'n 패리티 체크 매트릭스와 관련된다. 여기서, n 및 k는 양의 정수이고, n은 k보다 크고, n은 심볼의 코드 길이이고, k는 코드 차원(code dimension)일 수 있다. C의 코드워드는 F에 관한 n개의 심볼에 대한 벡터이고, 패리티 체크 행렬과 벡터의 곱은 0일 수 있다.The present invention may be based on an Error Correction Code (ECC). In ECC technology, finite integer r=2, 3?? And a finite algebraic field F, and each symbol of F may include r bits. The [n k] linear code C is associated with a k'n parity check matrix whose entries are within F. Here, n and k may be positive integers, n may be greater than k, n may be a code length of a symbol, and k may be a code dimension. The codeword of C is a vector for n symbols for F, and the product of the parity check matrix and the vector may be 0.
용이한 설명을 위하여, 워드는 F에 관한 n개의 심볼들에 대한 임의의 벡터를 의미할 수 있다. 특정 워드에 대한 신드롬은 패리티 체크 매트릭스의 행과 워드의 스칼라 곱을 의미할 수 있다. 특정 워드에 대한 제1 신드롬은 패리티 체크 매트릭스의 제1 행과 워드의 스칼라 곱일 수 있다. 특정 워드에 대한 제2 신드롬은 패리티 체크 매트릭스의 제2 행과 워드의 스칼라 곱일 수 있다. 디코더가 더 많은 신드롬을 획득하는 경우, 더 많은 에러를 정정할 수 있다.For ease of explanation, a word may mean any vector of n symbols for F. The syndrome for a specific word may mean a scalar product of a row of a parity check matrix and a word. The first syndrome for a specific word may be a scalar product of the first row of the parity check matrix and the word. The second syndrome for a specific word may be a scalar product of the second row of the parity check matrix and the word. If the decoder acquires more syndromes, more errors can be corrected.
GCC 코드의 핵심적인 특징은 동일한 패리티 체크 매트릭스를 공유하는 몇 가지 작은(small) 코드워드들(예를 들어, BCH 코드)이 함께 그룹화되는 것이고, 각 그룹은 서브-워드로 지칭될 수 있다. 각 서브-워드로부터 제1 신드롬이 수집될 때 RS로 코드워드가 형성되는 방식으로 몇 가지 코드워드들이 그룹화될 수 있다. 이 코드워드는 이라고 지칭될 수 있다. 각 서브-워드로부터 제2 신드롬이 수집될 때 동일한 방식이 적용될 수 있고, 수집된 코드워드는 일 수 있다. 실제적으로, 은 보통 제로 워드(zero word)이고, 이러한 RS 워드들의 코드 레이트는 증가할 수 있다.A key feature of the GCC code is that several small codewords (eg, BCH codes) sharing the same parity check matrix are grouped together, and each group may be referred to as a sub-word. Several codewords may be grouped in such a way that a codeword is formed in RS when the first syndrome is collected from each sub-word. This codeword is May be referred to as. The same method can be applied when the second syndrome is collected from each sub-word, and the collected codeword is Can be Practically, Is usually a zero word, and the code rate of these RS words can increase.
(i) GCC 인코딩 과정은 모든 작은 워드에 대한 모든 신드롬이 임의의 전술한 심볼과 동일한 경우 리던던시 r 비트를 추가함으로써 시작될 수 있다. (i) The GCC encoding process can be started by adding redundancy r bits when all syndromes for all small words are the same as any of the aforementioned symbols.
(ii) 나아가 일부 GCC 워드들은 함께 그룹화되고, 더 큰 코드워드를 생성하기 위하여 GCC 코드워드 각각으로부터 t=1, 2, 3??에 대해 워드들을 케스케이딩(cascading)하는 추가적인 구조가 형성되도록 (i)을 사용할 수 있다. 이 방법은 디코딩될 수 없는 개별적인 GCC 워드가 발생하는 상황에서 유리하고, 디코딩될 수 없는 개별적인 GCC 워드가 그룹 내의 다른 GCC 워드와 협력함으로써 제2 단계(the second round)에서 대부분의 경우 성공적으로 디코딩될 수 있다.(ii) Further, some GCC words are grouped together and for t=1, 2, 3?? from each GCC codeword to generate a larger codeword. (I) can be used to form an additional structure for cascading words. This method is advantageous in situations in which individual GCC words that cannot be decoded occur, and individual GCC words that cannot be decoded will in most cases be successfully decoded in the second round by cooperating with other GCC words in the group. I can.
(ii)의 예시. 다음의 간략화된 예시에서, GCC 워드들은 2개이고, 각 GCC 워드는 3개의 작은 서브-코드워드들과 3개의 신드롬 계층을 포함할 수 있다.Example of (ii). In the following simplified example, there are two GCC words, and each GCC word may include three small sub-codewords and three syndrome layers.
제1 GCC 워드(GCC_word_1)와 연관된 신드롬들은 다음과 같다.Syndromes associated with the first GCC word GCC_word_1 are as follows.
제2 GCC 워드(GCC_word_2)와 연관된 신드롬들은 다음과 같다.Syndromes associated with the second GCC word (GCC_word_2) are as follows.
위와 같은 예시에서, 이고, 이고, 은 RS 워드인 이고, 은 RS 워드인 일 수 있다. 나아가, 위 2개의 RS 워드들이 케스케이드되는 경우, 결과는 다음과 같다.In the example above, ego, ego, Is the RS word ego, Is the RS word Can be Furthermore, when the above two RS words are cascaded, the result is as follows.
위 결과 또한 코드워드일 수 있다. 마찬가지로, 은 RS 워드인 이고, 은 RS 워드인 일 수 있다. 위 2개의 RS 워드들이 케스케이드되는 경우, 결과는 다음과 같다.The above result may also be a codeword. Likewise, Is the RS word ego, Is the RS word Can be When the above two RS words are cascaded, the result is as follows.
위 결과 또한 코드워드일 수 있다.The above result may also be a codeword.
기술적으로 구현 시, 일반적으로 GCC 워드는 더 많은 서브-코드워드들 및 신드롬들을 포함할 수도 있다. 따라서, 모든 파라미터에 대하여, 위의 간략한 예시는 단지 일 예일 뿐이다.Technically implemented, in general a GCC word may contain more sub-codewords and syndromes. Thus, for all parameters, the simplified example above is just an example.
(ii) 부분은 본 발명의 주된 특징을 포함할 수 있다. 실시 예1(A1) 및 실시 예2(A2)는 다음과 같이 설명될 수 있다.Part (ii) may contain the main features of the present invention. Embodiment 1 (A1) and Embodiment 2 (A2) can be described as follows.
(iii) 실시 예1(A1)에서, 의 그룹은 더 큰 RS 워드가 될 수 있고, 실시 예2(A2)에서, 의 그룹은 코드워드가 될 수 있다.(iii) In Example 1 (A1), The group of can be a larger RS word, and in embodiment 2 (A2), Group of It can be a codeword.
도 5는 본 개시에 따른 방법 및 시스템을 구현하는 예시적인 컴퓨터 시스템이다.5 is an exemplary computer system implementing a method and system according to the present disclosure.
본 개시에 따른 방법 및 시스템은 메인 프레임, 개인 컴퓨터(PC), 소형 컴퓨터(handheld computer), 서버 등의 컴퓨터 시스템에서 구동되는 소프트웨어 어플리케이션의 형태로 구현될 수 있다. 소프트웨어 어플리케이션은 컴퓨터 시스템에 의해 국부적으로 접근할 수 있고, 로컬 영역 네트워크(Local Area Network) 또는 인터넷과 같은 네트워크에 하드 와이어 또는 무선 연결을 통해 접근할 수 있는 기록 매체에 저장될 수 있다.The method and system according to the present disclosure may be implemented in the form of a software application running on a computer system such as a main frame, a personal computer (PC), a handheld computer, and a server. The software application can be locally accessed by a computer system and stored on a recording medium that can be accessed via a hard wire or wireless connection to a network such as a local area network or the Internet.
시스템(1000)으로 지칭되는 컴퓨터 시스템은, 예를 들어 중앙 처리 장치(Central Processing Unit, CPU)(1001), 랜덤 액세스 메모리(Random Access Memory, RAM)(1004), 프린터 인터페이스(1010), 디스플레이부(1011), 로컬 영역 네트워크(Local Area Network, LAN) 데이터 전송 컨트롤러(1005), LAN 인터페이스(1006), 네트워크 컨트롤러(1003), 내부 버스(internal bus)(1002) 및 키보드, 마우스와 같은 하나 이상의 입력 장치들(1009)을 포함할 수 있다. 도시된 바와 같이, 시스템(1000)은 링크(1007)를 통해 하드 디스크(1008)와 같은 데이터 저장 장치와 연결될 수 있다.The computer system referred to as the system 1000 includes, for example, a central processing unit (CPU) 1001, a random access memory (RAM) 1004, a
예시적인 실시 예들은 설명을 위한 것이고, 첨부된 청구항들의 범위에서 다양한 변형이 가능할 수 있다. 예를 들어, 다양한 예시적인 실시 예들에 대한 요소들 및 특징들은 본 개시 및 첨부된 청구항들에 범위 내에서 서로 대체되거나 서로 조합될 수 있다. The exemplary embodiments are provided for explanation, and various modifications may be made within the scope of the appended claims. For example, elements and features for the various exemplary embodiments may be replaced with or combined with each other within the scope of the disclosure and appended claims.
Claims (20)
외부로부터 수신된 데이터를 인코딩하는 단계; 및
인코딩된 데이터를 상기 메모리 장치에 저장하는 단계;를 포함하고,
상기 인코딩하는 단계는,
상기 수신된 데이터를 둘 이상의 서브-코드워드들로 인코딩하는 단계;를 포함하고,
상기 둘 이상의 서브-코드워드들은, 적어도 하나의 서브-코드워드보다 비트 사이즈가 큰 외곽 코드워드(outer codeword)를 구성하고,
둘 이상의 상기 외곽 코드워드들은, 적어도 하나의 외곽 코드워드들보다 비트 사이즈가 큰 대형 코드워드(larger coderword)를 구성하고,
상기 대형 코드워드는 상기 외곽 코드워드에 의해 정정 불가한 에러를 정정하는 것을 특징으로 하는 방법.A method of operating a memory controller for storing data in a memory device, comprising:
Encoding data received from the outside; And
Storing the encoded data in the memory device; Including,
The encoding step,
Encoding the received data into two or more sub-codewords; Including,
The two or more sub-codewords constitute an outer codeword having a bit size larger than that of at least one sub-codeword,
Two or more of the outer codewords constitute a larger codeword having a bit size larger than that of at least one outer codeword,
The large codeword, characterized in that for correcting an error that cannot be corrected by the outer codeword.
상기 외곽 코드워드보다 더 많은 리던던시 데이터를 포함하는 것을 특징으로 하는 방법.The method of claim 1, wherein the large codeword,
A method comprising more redundancy data than the outer codeword.
일반화된 연접 코드(Generalized Concatenated Code, GCC) 코드워드인 것을 특징으로 하는 방법.The method of claim 1, wherein the large codeword,
A method, characterized in that it is a Generalized Concatenated Code (GCC) codeword.
상기 둘 이상의 서브-코드워드들 각각은,
일반화된 연접 코드(Generalized Concatenated Code, GCC) 코드워드이고,
상기 외곽 코드워드 및 상기 대형 코드워드는,
리드-솔로몬(Reed-Solomon, RS) 코드워드인 것을 특징으로 하는 방법.The method of claim 1,
Each of the two or more sub-codewords,
It is a Generalized Concatenated Code (GCC) codeword,
The outer codeword and the large codeword,
Reed-Solomon (Reed-Solomon, RS) method, characterized in that the codeword.
상기 둘 이상의 서브-코드워드들은, 인코딩의 제1 계층(a first layer)을 나타내고,
상기 외곽 코드워드는, 상기 인코딩의 제2 계층(a second layer)을 나타내고,
상기 대형 코드워드는, 상기인코딩의 제3 계층(a third layer)을 나타내고,
상기 제1 계층 내지 제3 계층은, 서로 다른 비트 사이즈의 코드워드들인 것을 특징으로 하는 방법.The method of claim 1,
The two or more sub-codewords represent a first layer of encoding,
The outer codeword represents a second layer of the encoding,
The large codeword represents a third layer of the encoding,
The first to third layers are codewords having different bit sizes.
상기 대형 코드워드의 패리티-체크 매트릭스의 행들 중 제1 그룹의 행들을 포함하는 매트릭스는,
상기 복수의 외곽 코드워드들의 캐스캐이드된 패리티-체크 매트릭스들을 포함하는 것을 특징으로 하는 방법.The method of claim 5,
A matrix including rows of a first group among the rows of the parity-check matrix of the large codeword,
And cascaded parity-check matrices of the plurality of outer codewords.
상기 둘 이상의 서브-코드워드들이 서로 다른 비트 사이즈의 외곽 코드워드들로 구성됨으로써 복수의 계층들이 형성되고,
상기 복수의 계층들 중 각 계층에 대응되는 외곽 코드워드들은 일반화된 연접 코드(generalized concatenated code, GCC) 코드워드인 것을 특징으로 하는 방법.The method of claim 1,
A plurality of layers are formed by the two or more sub-codewords being composed of outer codewords of different bit sizes,
Outer codewords corresponding to each layer among the plurality of layers are generalized concatenated code (GCC) codewords.
상기 메모리 장치에 저장된 데이터를 리드하는 단계;
상기 리드된 데이터의 서브-코드워드들을 디코딩하는 단계; 및
상기 리드된 데이터의 상기 서브 코드워드들이 디코딩 불가한 경우, 복수의 외곽 코드워드들을 디코딩하는 단계;를 포함하고,
상기 복수의 외곽 코드워드들 각각은 디코딩 불가한 상기 서브-코드워드들을 둘 이상 포함하는 것을 특징으로 하는 방법.A method of operating a memory controller for recovering data stored in a memory device, comprising:
Reading data stored in the memory device;
Decoding sub-codewords of the read data; And
If the sub-codewords of the read data cannot be decoded, decoding a plurality of outer codewords; Including,
Wherein each of the plurality of outer codewords includes two or more of the sub-codewords that cannot be decoded.
상기 복수의 외곽 코드워드들 중 어느 하나의 외곽 코드워드보다 비트 사이즈가 큰 대형 코드워드(larger codeword)를 구성하는 것을 특징으로 하는 방법.The method of claim 8, wherein the plurality of outer codewords,
And constructing a larger codeword having a bit size larger than one of the plurality of outer codewords.
상기 복수의 외곽 코드워드들보다 많은 리던던시 데이터를 포함하는 것을 특징으로 하는 방법.The method of claim 9, wherein the large codeword,
And more redundancy data than the plurality of outer codewords.
일반화된 연접 코드(Generalized Concatenated Code, GCC) 코드워드인 것을 특징으로 하는 방법.The method of claim 9, wherein the large codeword,
A method, characterized in that it is a Generalized Concatenated Code (GCC) codeword.
일반화된 연접 코드(Generalized Concatenated Code, GCC) 코드워드이고,
상기 복수의 외곽 코드워드들 및 상기 대형 코드워드는,
리드-솔로몬(Reed-Solomon, RS) 코드워드인 것을 특징으로 하는 방법.The method of claim 9, wherein the two or more sub-codewords,
It is a Generalized Concatenated Code (GCC) codeword,
The plurality of outer codewords and the large codeword,
Reed-Solomon (Reed-Solomon, RS) method, characterized in that the codeword.
상기 둘 이상의 서브-코드워드들은, 인코딩의 제1 계층을 나타내고,
상기 복수의 외곽 코드워드들은, 상기 인코딩의 제2 계층을 나타내고,
상기 제1 계층 내지 제3 계층은, 서로 다른 비트 사이즈의 코드워드들인 것을 특징으로 하는 방법.The method of claim 9,
The two or more sub-codewords represent a first layer of encoding,
The plurality of outer codewords represent a second layer of the encoding,
The first to third layers are codewords having different bit sizes.
상기 대형 코드워드의 패리티-체크 매트릭스의 행들 중 제1 그룹의 행들을 포함하는 매트릭스는,
상기 복수의 코드워드들의 캐스캐이드된 패리티-체크 매트릭스들을 포함하는 것을 특징으로 하는 방법.The method of claim 13,
A matrix including rows of a first group among the rows of the parity-check matrix of the large codeword,
And a cascaded parity-check matrices of the plurality of codewords.
상기 둘 이상의 서브-코드워드들이 서로 다른 비트 사이즈의 외곽 코드워드들로 구성됨으로써 복수의 계층들이 형성되고,
상기 복수의 계층들 중 각 계층에 대응되는 외곽 코드워드들은 일반화된 연접 코드(generalized concatenated code, GCC) 코드워드인 것을 특징으로 하는 방법.The method of claim 9,
A plurality of layers are formed by the two or more sub-codewords being composed of outer codewords of different bit sizes,
Outer codewords corresponding to each layer among the plurality of layers are generalized concatenated code (GCC) codewords.
데이터를 인코딩하는 단계; 및
인코딩된 데이터를 상기 메모리 장치에 저장하는 단계;를 포함하고,
상기 인코딩하는 단계는,
제1 계층에서 상기 데이터를 복수의 서브-코드워드들로 인코딩하는 단계;
제2 계층에서 상기 복수의 서브-코드워드들을, 상기 복수의 서브-코드워드들 중 어느 하나의 서브-코드워드보다 비트 사이즈가 큰 복수의 외곽 코드워드들로 그룹화하는 단계; 및
제3 계층에서 상기 복수의 외곽 코드워드들을, 상기 복수의 외곽 코드워드들 중 어느 하나의 외곽 코드워드보다 비트 사이즈가 큰 적어도 하나의 대형 코드워드(larger codeword)로 그룹화하는 단계를 포함하는 것을 특징으로 하는 방법.A method of operating a memory controller for storing data in a memory device, comprising:
Encoding the data; And
Storing the encoded data in the memory device; Including,
The encoding step,
Encoding the data into a plurality of sub-codewords in a first layer;
Grouping the plurality of sub-codewords into a plurality of outer codewords having a bit size larger than that of any one of the plurality of sub-codewords in a second layer; And
And grouping the plurality of outer codewords into at least one larger codeword having a bit size larger than that of any one of the plurality of outer codewords in a third layer. How to do it.
상기 복수의 외곽 코드워드들보다 많은 리던던시 데이터를 포함하는 것을 특징으로 하는 방법.The method of claim 16, wherein the at least one large codeword,
And more redundancy data than the plurality of outer codewords.
상기 복수의 코드워드들의 캐스캐이드된 패리티-체크 매트릭스들을 포함하는 것을 특징으로 하는 방법.The method of claim 16, wherein the matrix including the rows of the first group among the rows of the parity-check matrix of the large codeword,
And a cascaded parity-check matrices of the plurality of codewords.
상기 둘 이상의 서브-코드워드들이 서로 다른 비트 사이즈의 외곽 코드워드들로 구성됨으로써 복수의 계층들이 형성되고,
상기 복수의 계층들 중 각 계층에 대응되는 외곽 코드워드들은 일반화된 연접 코드(generalized concatenated code, GCC) 코드워드인 것을 특징으로 하는 방법.The method of claim 16,
A plurality of layers are formed by the two or more sub-codewords being composed of outer codewords of different bit sizes,
Outer codewords corresponding to each layer among the plurality of layers are generalized concatenated code (GCC) codewords.
상기 메모리 장치에 저장된 데이터를 리드하는 단계;
리드된 데이터의 상기 서브-코드워드들을 개별적으로 디코딩하는 단계; 및
상기 서브-코드워드들 중 어느 하나의 서브-코드워드가 디코딩 불가한 경우, 개별적으로 디코딩이 불가한 상기 서브-코드워드들을 포함하는 상기 복수의 외곽 코드워드들을 디코딩하는 것을 특징으로 하는 방법.The method of claim 16,
Reading data stored in the memory device;
Individually decoding the sub-codewords of read data; And
And decoding the plurality of outer codewords including the sub-codewords, which cannot be individually decoded, if any one of the sub-codewords is non-decodeable.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,240 US11031956B2 (en) | 2019-06-25 | 2019-06-25 | Generalized concatenated error correction coding scheme with locality |
US16/452,240 | 2019-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210001927A true KR20210001927A (en) | 2021-01-06 |
Family
ID=73747190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200065186A KR20210001927A (en) | 2019-06-25 | 2020-05-29 | Generalized concatenated error correction coding scheme with locality |
Country Status (4)
Country | Link |
---|---|
US (1) | US11031956B2 (en) |
KR (1) | KR20210001927A (en) |
CN (1) | CN112134573B (en) |
DE (1) | DE102019119753A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11387848B1 (en) * | 2021-03-11 | 2022-07-12 | Samsung Electronics Co., Ltd. | Hierarchical error correction code |
CN114142871B (en) * | 2021-12-03 | 2022-06-24 | 北京得瑞领新科技有限公司 | LDPC (Low Density parity check) verification method and device capable of terminating iteration in advance for incremental calculation |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1500200B1 (en) * | 2002-04-05 | 2008-09-17 | Koninklijke Philips Electronics N.V. | Method and apparatus for embedding an additional layer of error correction into an error correcting code |
US7177658B2 (en) * | 2002-05-06 | 2007-02-13 | Qualcomm, Incorporated | Multi-media broadcast and multicast service (MBMS) in a wireless communications system |
US9270414B2 (en) * | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US8605905B2 (en) * | 2010-08-30 | 2013-12-10 | Futurewei Technologies, Inc. | System and method for securing wireless transmissions |
US8862960B2 (en) * | 2011-10-10 | 2014-10-14 | Lsi Corporation | Systems and methods for parity shared data encoding |
US8954822B2 (en) * | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9405624B2 (en) * | 2014-06-19 | 2016-08-02 | Seagate Technology Llc | On-die error detection and correction during multi-step programming |
US9734009B2 (en) * | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
US10404280B2 (en) * | 2015-11-19 | 2019-09-03 | Westhold Corporation | Error correction using cyclic code-based LDPC codes |
US10340950B2 (en) * | 2017-08-21 | 2019-07-02 | Qualcomm Incorporated | Reducing the search space of maximum-likelihood decoding for polar codes |
-
2019
- 2019-06-25 US US16/452,240 patent/US11031956B2/en active Active
- 2019-07-22 DE DE102019119753.8A patent/DE102019119753A1/en active Pending
-
2020
- 2020-05-29 KR KR1020200065186A patent/KR20210001927A/en not_active Application Discontinuation
- 2020-06-12 CN CN202010533531.2A patent/CN112134573B/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200412386A1 (en) | 2020-12-31 |
DE102019119753A9 (en) | 2021-09-09 |
CN112134573A (en) | 2020-12-25 |
DE102019119753A1 (en) | 2020-12-31 |
US11031956B2 (en) | 2021-06-08 |
CN112134573B (en) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9673840B2 (en) | Turbo product codes for NAND flash | |
KR102108386B1 (en) | Storage device and data encoding and decoding methods thereof | |
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
US9141467B2 (en) | Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof | |
KR102706994B1 (en) | Memory controller, semiconductor memory system and operating method thereof | |
US9710327B2 (en) | Flash memory system and operating method thereof | |
US11184026B2 (en) | Super-HPC error correction code | |
KR20090099757A (en) | Memory device and encoding and/or decoding method | |
KR102556479B1 (en) | Ldpc decoder, semiconductor memory system and operating method thereof | |
US11632135B2 (en) | Apparatuses and methods for interleaved BCH codes | |
KR20210001927A (en) | Generalized concatenated error correction coding scheme with locality | |
US10855314B2 (en) | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords | |
US10649841B2 (en) | Supporting multiple page lengths with unique error correction coding via galois field dimension folding | |
JP2020046823A (en) | Memory system | |
CN116743188A (en) | Storage system and method of controlling the same | |
CN110971240A (en) | Decoder design method and memory controller | |
CN117707833A (en) | Dynamic scaling factor modification of irregular LDPC codes | |
US11204834B1 (en) | Implementation of keeping data integrity in multiple dimensions | |
KR102513782B1 (en) | Controller and operating method thereof | |
US11394403B1 (en) | Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices | |
KR102532611B1 (en) | Controller and operating method thereof | |
US20240264903A1 (en) | Selective decoding for super chip-kill recovery and method of operating such memory system | |
US20240338146A1 (en) | Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism | |
US20240289028A1 (en) | Data recovery with enhanced super chip-kill recovery and method of operating such memory system | |
KR20170067656A (en) | Turbo product codes for nand flash |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |