KR20210125294A - 에러 정정 회로 및 이의 동작 방법 - Google Patents
에러 정정 회로 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20210125294A KR20210125294A KR1020200042829A KR20200042829A KR20210125294A KR 20210125294 A KR20210125294 A KR 20210125294A KR 1020200042829 A KR1020200042829 A KR 1020200042829A KR 20200042829 A KR20200042829 A KR 20200042829A KR 20210125294 A KR20210125294 A KR 20210125294A
- Authority
- KR
- South Korea
- Prior art keywords
- error correction
- bit symbols
- read
- decoding
- column
- Prior art date
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/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/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
- G06F11/1032—Simple parity
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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/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
- G06F11/1028—Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- 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/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/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- 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/21—Non-linear codes, e.g. m-bit data word to n-bit code word [mBnB] conversion with error detection or error correction
-
- 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
-
- 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
- H03M13/293—Decoding strategies with erasure setting
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/451—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1171—Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Error Detection And Correction (AREA)
Abstract
본 기술은, 에러 정정 회로에 관한 것이다. 본 기술에 따른 에러 정정 회로는, 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 제 1 에러 정정 인코더; 상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하고, 상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 제 2 에러 정정 인코더; 상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하고, 상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하여 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 출력하는 제 1 에러 정정 디코더; 및 상기 p-비트 심볼들 각각에 대응하는 상기 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하고, 상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 제 2 에러 정정 디코더를 포함한다.
Description
본 발명은, 데이터의 에러를 정정할 수 있는 에러 정정 회로에 관한 것으로, 보다 구체적으로는 에러 정정 능력을 개선시킨 에러 정정 회로 및 이의 동작 방법에 관한 것이다.
메모리 시스템(memory system)은 데이터를 저장할 수 있는 메모리 장치와, 호스트의 요청에 따라 메모리 장치를 제어할 수 있는 컨트롤러를 포함할 수 있다. 컨트롤러는 호스트로부터 제공된 데이터를 메모리 장치에 프로그램하고, 메모리 장치에 저장된 데이터를 리드하여 호스트에게 출력할 수 있다.
컨트롤러가 데이터를 전송하거나, 메모리 장치에 저장된 데이터를 호스트에게 출력할 때, 데이터에 에러가 발생할 수 있으므로, 컨트롤러는 에러를 정정할 수 있는 에러 정정 회로(error correction circuit)를 포함할 수 있다.
에러 정정 회로는, 에러 정정 코드(error correction code)를 이용하여 인코딩 및 디코딩을 수행할 수 있다. 예를 들면, 에러 정정 코드는 호스트로부터 제공된 데이터를 인코딩하는 에러 정정 인코더와, 메모리 장치로부터 리드(read)된 데이터를 디코딩하는 에러 정정 디코더를 포함할 수 있다. 호스트로부터 제공된 데이터는 메시지(massage)일 수 있으며, 메모리 장치로부터 리드된 데이터는 코드워드(codeword)일 수 있다.
본 발명의 실시 예들은, 향상된 에러 정정 능력을 갖는 에러 정정 회로 및 이의 동작 방법을 제공한다.
본 발명의 일 실시 예에 따른 에러 정정 회로는, 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 제 1 에러 정정 인코더; 상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하고, 상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 제 2 에러 정정 인코더; 상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하고, 상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하여 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 출력하는 제 1 에러 정정 디코더; 및 상기 p-비트 심볼들 각각에 대응하는 상기 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하고, 상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 제 2 에러 정정 디코더를 포함할 수 있다.
본 발명의 일 실시 예에 따른 에러 정정 회로의 동작 방법은, 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 단계; 상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하는 단계; 상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 단계; 상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하는 단계; 상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하는 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하는 단계; 및 상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 단계를 포함할 수 있다.
본 기술에 따르면, 에러 정정 회로의 에러 정정 능력이 향상될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 에러 정정 인코딩을 설명하기 위한 예시도이다.
도 2a 내지 도 2c는 본 발명의 일 실시 예에 따른 에러 정정 디코딩을 설명하기 위한 예시도이다.
도 3은 본 발명의 일 실시 예에 따른 에러 정정 인코딩을 설명하기 위한 예시도이다.
도 4a 내지 도 4c는 본 발명의 일 실시 예에 따른 에러 정정 디코딩을 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시 예에 따른 에러 정정 회로를 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시 예에 따른 에러 정정 인코더의 동작 방법을 설명하기 위한 흐름도이다.
도 7은 본 발명의 일 실시 예에 따른 에러 정정 디코더의 동작 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시 예에 따른 메모리 장치를 설명하기 위한 도면이다.
도 10은 메모리 블록을 설명하기 위한 예시도이다.
도 11은 도 8에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 12는 도 8에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 2a 내지 도 2c는 본 발명의 일 실시 예에 따른 에러 정정 디코딩을 설명하기 위한 예시도이다.
도 3은 본 발명의 일 실시 예에 따른 에러 정정 인코딩을 설명하기 위한 예시도이다.
도 4a 내지 도 4c는 본 발명의 일 실시 예에 따른 에러 정정 디코딩을 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시 예에 따른 에러 정정 회로를 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시 예에 따른 에러 정정 인코더의 동작 방법을 설명하기 위한 흐름도이다.
도 7은 본 발명의 일 실시 예에 따른 에러 정정 디코더의 동작 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시 예에 따른 메모리 장치를 설명하기 위한 도면이다.
도 10은 메모리 블록을 설명하기 위한 예시도이다.
도 11은 도 8에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 12는 도 8에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 1은 본 발명의 일 실시 예에 따른 에러 정정 인코딩을 설명하기 위한 예시도이다.
복수의 메시지들(messages) 각각에 대하여 제 1 에러 정정 인코딩(first error correction encoding)이 수행되어 복수의 코드워드들(codewords)이 생성될 수 있다. 메시지를 제 1 에러 정정 인코딩하여 생성된 코드워드를 로우-코드워드(row-codeword; Cr)라 할 수 있다. 제 1 에러 정정 인코딩은, 다양한 에러 정정 코드(error correction code)를 이용하여 수행될 수 있다. 도 1에는, 일 예로서 이진(binary) 또는 비이진 LDPC(low density parity check) 코드를 이용하여 제 1 에러 정정 디코딩이 수행된 경우의 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 제 1 에러 정정 디코딩이 수행되는 경우, n 개의 심볼들(symbols)을 포함하는 로우-코드워드(Cr)가 생성될 수 있다. 여기서, n은 자연수일 수 있다.
복수의 로우-코드워드들(Cr)에 포함된 심볼들 중 동일한 컬럼 레이어(column layer)에 속하는 심볼들로 이루어진 심볼 그룹(symbol group; SG)들 각각에 대하여 제 2 에러 정정 인코딩이 수행되어 복수의 코드워드들이 생성될 수 있다. 여기서, 컬럼 레이어는 복수의 컬럼들을 포함할 수 있다. 도 1에는 컬럼 레이어당 4개의 비트 컬럼(bit column)이 포함된 예가 도시 되지만, 이에 제한되지 않는다.
동일한 컬럼 레이어에 속하는 심볼 그룹(SG)들 각각을 제 2 에러 정정 인코딩하여 생성된 코드워드를 컬럼-코드워드(column-codeword; Cc)라 할 수 있다. 제 2 에러 정정 인코딩은, 다양한 에러 정정 코드를 이용하여 수행될 수 있다. 예를 들어, 제 2 에러 정정 인코딩은, MDS(maximum distance separable) 코드를 이용하여 수행될 수 있다. MDS 코드는 예를 들어, RS(reed-solomon) 코드, 확장된(extended) RS 코드 또는 이중 확장된(doubly extended) RS 코드 중 적어도 하나를 포함할 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 제 2 에러 정정 인코딩 결과 a 개의 추가적인 로우(Ar)들이 생성될 수 있다. 여기서, a는 2 이상의 자연수일 수 있다. 하나의 컬럼-코드워드(Cc)는 하나의 심볼 그룹(SG)과 하나의 패리티 그룹(PG)을 포함할 수 있고, 하나의 패리티 그룹(PG)은 a 개의 m-비트 심볼들을 포함할 수 있다. 여기서, m은 2 이상 n 미만의 자연수일 수 있다. 복수의 로우-코드워드(Cr)들과 추가적인 로우(Ar)들을 모두 포함하여 코드워드 그룹(CG)이라 할 수 있다. 즉, 코드워드 그룹(CG)은 복수의 로우-코드워드(Cr)들과 복수의 컬럼-코드워드(Cc)들을 포함할 수 있다.
도 2a 내지 도 2c는 본 발명의 일 실시 예에 따른 에러 정정 디코딩을 설명하기 위한 예시도이다.
도 2a에는 도 1을 참조하여 설명된 복수의 로우-코드워드들(Cr)에 대응하는 판독 로우-벡터들(read row-vectors; 120a, 120b, 120c) 및 복수의 컬럼-코드워드들(Cc)에 대응하는 판독 컬럼-벡터(read column-vectors; 220a, 220b, 220c)들이 도시되었다. 판독 로우-벡터들(120a, 120b, 120c) 각각은, n 개의 심볼들을 포함할 수 있다.
로우-코드워드들(Cr) 중 타겟 로우-코드워드에 대응하는 타겟 판독 로우-벡터(120a)에 대하여 제 1 에러 정정 디코딩이 수행될 수 있다. 예를 들어, 제 1 에러 정정 디코딩(first error correction decoding)은, 이진 LDPC 코드 또는 비 이진 LDPC 코드를 이용하여 수행될 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
타겟 판독 로우-벡터(120a)에 대한 제 1 에러 정정 디코딩이 실패한 경우, 타겟 판독 로우-벡터(120a)에 포함된 모든 심볼들은 신뢰할 수 없는 심볼들(unreliable symbols)로 판단될 수 있다.
코드워드 그룹(도 1의 CG)에 포함된 로우-코드워드들(도 1의 Cr) 중 타겟 로우-코드워드를 제외한 나머지 로우-코드워드들에 대응하는 판독 로우-벡터들에 대하여 제 1 에러 정정 디코딩이 수행될 수 있다. 이하 설명에서는 설명의 편의를 위하여, 타겟 로우-코드워드를 제외한 나머지 로우-코드워드들은 참조 로우-코드워드들로 기재되고, 참조 로우-코드워드들에 대응하는 판독 로우-벡터들은 참조 판독 로우-벡터들(120b, 120c)로 기재된다.
참조 판독 로우-벡터들(120b, 120c) 중 참조 판독 로우-벡터(120b)에 대한 제 1 에러 정정 디코딩은 실패하고, 참조 판독 로우-벡터들(120c)에 대한 제 1 에러 정정 디코딩은 성공한 것으로 가정한다. 참조 판독 로우-벡터들(120b, 120c) 중 제 1 에러 정정 디코딩에 실패한 참조 판독 로우-벡터(120b)에 포함된 모든 심볼들은 신뢰할 수 없는 심볼들로 판단될 수 있고, 제 1 에러 정정 디코딩에 성공한 참조 판독 로우-벡터들(120c)에 포함된 모든 심볼들은 신뢰할 수 있는 심볼들로 판단될 수 있다.
따라서, 판독 컬럼-벡터들(220a, 220b, 220c)에 포함된 m-비트 심볼들 각각의 신뢰성 유무가 판단될 수 있다. m-비트 심볼들 각각의 신뢰도는, 제 1 에러 정정 디코딩의 소프트 아웃풋(soft output) 또는 소프트 판독(soft read) 데이터를 기반으로 판단될 수 있다. 이하에서는 소프트 아웃풋을 기반으로 신뢰도를 판단하는 것으로 설명되지만, 이에 제한되지는 않는다.
일 실시 예에서, 제 1 에러 정정 디코딩이 비트 플립핑(bit flipping) 알고리즘을 기반으로 이루어지는 경우, 소프트 아웃풋은 심볼들 각각에 대응하는 변수 노드들(variable nodes)의 반전 함수 값들(flipping function values)을 포함할 수 있다. 예를 들어, 반전 함수 값이 제 1 설정 값 이하(양수 또는 음수 포함)일 때 심볼은 신뢰성을 가질 수 있다.
일 실시 예에서, 제 1 에러 정정 디코딩이 최소-합(min-sum) 알고리즘을 기반으로 이루어지는 경우, 소프트 아웃풋은 심볼들 각각에 대응하는 변수 노드의 사후 확률(a posteriori probability; APP)을 포함할 수 있다. 예를 들어, 사후 확률이 제 2 설정 값 이상인 변수 노드에 대응하는 심볼은 신뢰성이 있다고 판단될 수 있다.
판독 컬럼-벡터들(220a, 220b)에 포함된 m-비트 심볼들 중 신뢰성 있는 m-비트 심볼들이 판단될 수 있다. 예를 들어, m-비트 심볼들에 포함된 m개의 심볼들 중 설정된 개수 이상의 심볼들이 신뢰성 있다고 판단된 경우, m-비트 심볼은 신뢰성이 있다고 판단될 수 있다. 예를 들어, m-비트 심볼들에 포함된 심볼들 중 모든 심볼들이 신뢰성이 있다고 판단된 경우 또는 m-비트 심볼들에 포함된 심볼들 중 과반수의 심볼들이 신뢰성 있다고 판단된 경우 m-비트 심볼은 신뢰성이 있다고 판단될 수 있다.
신뢰성 유무 판단에 따라, 도 2b에 도시된 바와 같이, 판독 컬럼-벡터들(220a, 220b, 220c) 각각에 포함된 m-비트 심볼들 중 신뢰할 수 없는 m-비트 심볼들의 개수가 줄어들 수 있다.
판독 컬럼-벡터들(220a, 220b, 220c) 각각에 대하여 제 2 에러 정정 디코딩이 수행될 수 있다. 예를 들어, 제 2 에러 정정 디코딩(second error correction decoding)은 MDS 코드를 이용하여 수행될 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
제 2 에러 정정 디코딩은 에러 디코딩(error decoding) 또는 소거 디코딩(erasure decoding)을 포함할 수 있다.
일 실시 예에서, 판독 컬럼-벡터들(220a, 220b, 220c) 각각에 대하여, m-비트 심볼들 중 신뢰성이 없다고 판단된 심볼들의 개수가 MDS 코드의 소거 정정 능력(erasure correction capability)의 개수 보다 작은 경우, 소거 디코딩이 수행될 수 있다. MDS 코드의 소거 정정 능력을 A개로 정의하면, 도 1에서 설명된 추가적인 로우(Ar)들의 개수가 A개일 수 있다. 일 실시 예에서, 판독 컬럼-벡터들(220a, 220b, 220c) 각각에 대하여, m-비트 심볼들 중 신뢰성이 없다고 판단된 심볼들의 개수가 MDS 코드의 에러 정정 능력(error correction capability)의 개수인 B 이하인 경우, 에러 디코딩(error decoding)이 수행될 수 있다. 여기서, B는 A의 절반(A/2)일 수 있다.
판독 컬럼-벡터(220a)에 대하여는 제 2 에러 정정 디코딩이 실패한 것으로 가정하고, 판독 컬럼-벡터들(220b, 220c)에 대하여는 제 2 에러 정정 디코딩이 성공한 것으로 가정한다.
판독 컬럼-벡터들(220b, 220c)에 대하여 제 2 에러 정정 디코딩이 성공한 경우, 도 2c에 도시된 바와 같이, 판독 컬럼-벡터들(220b, 220c)에 포함된 모든 m-비트 심볼들 중 신뢰할 수 없는 심볼은 존재하지 않을 것이다. 따라서, 도 2c에 도시된 바와 같이, 판독 로우-벡터들(120a, 120b)에 포함된 심볼들 중 신뢰할 수 없는 심볼의 개수가 감소할 수 있다. 이후, 타겟 판독 로우-벡터(120a)에 대한 제 1 에러 정정 디코딩이 수행될 수 있다. 타겟 판독 로우-벡터(120a)에 포함된 심볼들 중 신뢰할 수 없는 심볼의 개수가 감소하므로 제 1 에러 정정 디코딩이 성공할 확률이 높아질 수 있다.
도 3은 본 발명의 일 실시 예에 따른 에러 정정 인코딩을 설명하기 위한 예시도이다.
복수의 메시지들(messages) 각각에 대하여 제 1 에러 정정 인코딩(first error correction encoding)이 수행되어 복수의 코드워드들(codewords)이 생성될 수 있다. 메시지를 제 1 에러 정정 인코딩하여 생성된 코드워드를 로우-코드워드(row-codeword; Cr)라 할 수 있다. 제 1 에러 정정 인코딩은, 다양한 에러 정정 코드(error correction code)를 이용하여 수행될 수 있다. 도 3에는, 일 예로서, 비이진(non-binary) LDPC(low density parity check) 코드를 이용하여 제 1 에러 정정 디코딩이 수행된 경우의 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 비이진 LDPC 코드를 이용하여 제 1 에러 정정 디코딩이 수행되는 경우, n/q 개의 q-비트 심볼들(symbols)을 포함하는 로우-코드워드(Cr)가 생성될 수 있다. 여기서, n은 자연수이고, q는 2 이상 n 미만의 자연수일 수 있다.
복수의 로우-코드워드(Cr)들에 포함된 q-비트 심볼들 중 동일한 컬럼 레이어(column layer)에 속하는 q-비트 심볼들로 이루어진 심볼 그룹(symbol group; SG)들 각각에 대하여 제 2 에러 정정 인코딩이 수행되어 복수의 코드워드들이 생성될 수 있다. 여기서, 컬럼 레이어는 복수의 컬럼들을 포함할 수 있으며, 도 3에는 일 예로서 하나의 컬럼 레이어당 2 개의 컬럼들이 포함된 예가 도시되었다. 동일한 컬럼 레이어에 속하는 q-비트 심볼들로 이루어진 심볼 그룹(SG)들 각각을 제 2 에러 정정 인코딩하여 생성된 코드워드를 컬럼-코드워드(column-codeword; Cc)라 할 수 있다. 제 2 에러 정정 인코딩은, 다양한 에러 정정 코드를 이용하여 수행될 수 있다. 예를 들어, 제 2 에러 정정 인코딩은, MDS(maximum distance separable) 코드를 이용하여 수행될 수 있다. 제 2 에러 정정 인코딩 결과 A개의 추가적인 로우(Ar)들이 생성될 수 있다. 여기서, A는 2 이상의 자연수일 수 있다. 하나의 컬럼-코드워드(Cc)는 하나의 심볼 그룹(SG)과 하나의 패리티 그룹(PG)을 포함할 수 있고, 하나의 패리티 그룹(PG)은 A개의 m-비트 심볼들을 포함할 수 있다. 여기서, m은 q의 배수일 수 있다. 복수의 로우-코드워드(Cr)들과 추가적인 로우(Ar)들을 모두 포함하여 코드워드 그룹(CG)이라 할 수 있다. 즉, 코드워드 그룹(CG)은 복수의 로우-코드워드(Cr)들과 복수의 컬럼-코드워드(Cc)들을 포함할 수 있다.
도 4a 내지 도 4c는 본 발명의 일 실시 예에 따른 에러 정정 디코딩을 설명하기 위한 예시도이다.
도 4a에는 도 3에서 설명된 복수의 로우-코드워드(Cr)들에 대응하는 판독 로우-벡터들(read row-vectors; 320a, 320b, 320c) 및 복수의 컬럼-코드워드(Cc)들에 대응하는 판독 컬럼-벡터(read column-vectors; 420a, 420b, 420c)들이 도시된다. 판독 로우-벡터들(420a, 420b, 420c) 각각은, n/q 개의 q-비트 심볼들을 포함할 수 있다. 여기서, n은 자연수이고, q는 2 이상 n 미만의 자연수일 수 있다.
로우-코드워드들 중 타겟 로우-코드워드에 대응하는 타겟 판독 로우-벡터(320a)에 대하여 제 1 에러 정정 디코딩이 수행될 수 있다. 예를 들어, 제 1 에러 정정 디코딩(first error correction decoding)은, 비이진 LDPC 코드를 이용하여 수행될 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
제 1 에러 정정 디코딩은, q-비트의 심볼 단위로 이루어질 수 있다. 여기서, q는 m의 약수 중 1 이외의 약수일 수 있다.
타겟 판독 로우-벡터(320a)에 대한 제 1 에러 정정 디코딩이 실패하는 경우, 타겟 판독 로우-벡터(320a)에 포함된 모든 q-비트 심볼들은 신뢰할 수 없는 심볼들로 판단될 수 있다.
코드워드 그룹에 포함된 로우-코드워드들 중 타겟 로우-코드워드를 제외한 나머지 참조 로우-코드워드들에 대응하는 참조 판독 로우-벡터들(320b, 320c)에 대하여 제 1 에러 정정 디코딩이 수행될 수 있다. 참조 판독 로우-벡터들(320b, 320c) 중 참조 판독 로우-벡터(320b)에 대한 제 1 에러 정정 디코딩은 실패하고, 참조 판독 로우-벡터들(120c)에 대한 제 1 에러 정정 디코딩은 성공한 것으로 가정한다. 참조 판독 로우-벡터들(320b, 320c) 중 제 1 에러 정정 디코딩에 실패한 참조 판독 로우-벡터(320b)에 포함된 모든 q-비트 심볼들은 신뢰할 수 없는 심볼들로 판단될 수 있고, 제 1 에러 정정 디코딩에 성공한 참조 판독 로우-벡터들(320c)에 포함된 모든 q-비트 심볼들은 신뢰할 수 있는 심볼들로 판단될 수 있다.
판독 컬럼-벡터들(420a, 420b, 420c)에 포함된 m-비트 심볼들 각각의 신뢰성 유무가 판단될 수 있다. m-비트 심볼들 각각의 신뢰도는, 제 1 에러 정정 디코딩의 소프트 아웃풋(soft output)을 기반으로 판단될 수 있다.
일 실시 예에서, 제 1 에러 정정 디코딩이 심볼 플립핑(symbol flipping) 알고리즘을 기반으로 이루어지는 경우, 소프트 아웃풋은 q-비트 심볼들 각각에 대응하는 변수 노드들의 반전 함수 값을 포함할 수 있다. 예를 들어, 반전 함수 값이 제 1 설정 값 이상인 변수 노드에 대응하는 q-비트 심볼은 신뢰성이 있다고 판단될 수 있다.
일 실시 예에서, 제 1 에러 정정 디코딩이 최소-합 알고리즘을 기반으로 이루어지는 경우, 소프트 아웃풋은 q-비트 심볼들 각각에 대응하는 변수 노드의 사후 확률을 포함할 수 있다. 예를 들어, 사후 확률이 제 2 설정 값 이상인 변수 노드에 대응하는 q-비트 심볼은 신뢰성이 있다고 판단될 수 있다.
판독 컬럼-벡터들(420a, 420b, 420c)에 포함된 m-비트 심볼들 중 신뢰성 있는 m-비트 심볼들이 판단될 수 있다. 예를 들어, m-비트 심볼에 포함된 m/q 개의 q-비트 심볼들 중 설정된 개수 이상의 q-비트 심볼들이 신뢰성이 있다고 판단된 경우, m-비트 심볼은 신뢰성이 있다고 판단될 수 있다. 예를 들어, m-비트 심볼들에 포함된 q-비트 심볼들 중 모든 q-비트 심볼들이 신뢰성이 있다고 판단된 경우 또는 m-비트 심볼들에 포함된 q-비트 심볼들 중 과반수 이상의 q-비트 심볼들이 신뢰성 있다고 판단된 경우 m-비트 심볼은 신뢰성이 있다고 판단될 수 있다.
신뢰성 유무 판단에 따라, 도 4b에 도시된 바와 같이, 판독 컬럼-벡터들(420a, 420b, 420c) 각각에 포함된 m-비트 심볼들 중 신뢰할 수 없는 m-비트 심볼들의 개수가 줄어들 수 있다.
판독 컬럼-벡터들(420a, 420b, 420c) 각각에 대하여 제 2 에러 정정 디코딩이 수행될 수 있다. 예를 들어, 제 2 에러 정정 디코딩(second error correction decoding)은 MDS 코드를 이용하여 수행될 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
제 2 에러 정정 디코딩은 에러 디코딩(error decoding) 또는 소거 디코딩(erasure decoding)을 포함할 수 있다. 일 실시 예에서, 판독 컬럼-벡터들(420a, 420b, 420c) 각각에 대하여, m-비트 심볼들 중 신뢰성이 없다고 판단된 심볼들의 개수가 MDS 코드의 소거 정정 능력(erasure correction capability)의 개수 보다 작은 경우, 소거 디코딩이 수행될 수 있다. MDS 코드의 소거 정정 능력을 A개로 정의하면, 도 3에서 설명된 추가적인 로우(Ar)들의 개수가 A개라는 것을 의미할 수 있다. 일 실시 예에서, 판독 컬럼-벡터들(420a, 420b, 420c) 각각에 대하여, m-비트 심볼들 중 신뢰성이 없다고 판단된 심볼들의 개수가 MDS 코드의 에러 정정 능력(error correction capability)의 개수인 B 이하인 경우, 에러의 위치에 관계없이 에러 디코딩(error decoding)이 수행될 수 있다. 여기서, B는 A의 절반(A/2)일 수 있다.
판독 컬럼-벡터(420a)에 대하여는 제 2 에러 정정 디코딩이 실패한 것으로 가정하고, 판독 컬럼-벡터(420b)에 대하여는 제 2 에러 정정 디코딩이 성공한 것으로 가정한다.
판독 컬럼-벡터들(420a, 420b, 420c)에 대하여 제 2 에러 정정 디코딩이 성공한 경우, 도 4c에 도시된 바와 같이, 판독 컬럼-벡터들(420b, 420c)에 포함된 모든 m-비트 심볼들은 신뢰할 수 있는 심볼들이 될 수 있다. 따라서, 도 4c에 도시된 바와 같이 판독 로우-벡터들(320a, 320b)에 포함된 m-비트 심볼들 중 신뢰할 수 없는 심볼의 개수가 감소할 수 있다. 이후, 타겟 판독 로우-벡터(320a)에 대한 제 1 에러 정정 디코딩이 수행될 수 있다. 타겟 판독 로우-벡터(320a)에 포함된 m-비트 심볼들 중 신뢰할 수 없는 심볼의 개수가 감소하였으므로 제 1 에러 정정 디코딩이 성공할 확률이 높아질 수 있다.
도 5는 본 발명의 일 실시 예에 따른 에러 정정 회로를 설명하기 위한 예시도이다.
도 5를 참조하면, 에러 정정 회로(error correction circuit; 100)는, 에러 정정 인코더(error correction encoder; 110) 및 에러 정정 디코더(error correction decoder; 120)를 포함할 수 있다.
에러 정정 인코더(110)는, 원본 데이터(original data)를 에러 정정 인코딩하여 코드워드를 생성하고, 생성된 코드워드를 채널로 출력할 수 있다. 에러 정정 인코더(110)는, 제 1 에러 정정 인코더(112) 및 제 2 에러 정정 인코더(114)를 포함할 수 있다.
제 1 에러 정정 인코더(112)는, 복수의 메시지들을 제 1 에러 정정 인코딩할 수 있다. 예를 들어, 제 1 에러 정정 인코더(112)는, 복수의 메시지들과 에러 정정 코드의 생성 행렬(generator matrix)을 이용하여 복수의 로우-코드워드들을 생성할 수 있다. 실시 예에 따라, 제 1 에러 정정 인코더(112)는, 복수의 메시지들과 에러 정정 코드의 패리티 체크 행렬(parity check matrix)을 이용하여 복수의 로우-코드워드들을 생성할 수도 있다. 제 1 에러 정정 인코딩 시, 이진 LDPC 코드 또는 비이진 LDPC 코드가 이용될 수 있다. 이진 LDPC 코드가 이용되는 경우 로우-코드워드들 각각은 n개의 심볼들을 포함할 수 있고, 비이진 LDPC 코드가 이용되는 경우 로우-코드워드들 각각은 n/q개의 q-비트 심볼들을 포함할 수 있다. 여기서, n은 자연수이고, q는 2 이상 n 미만의 자연수일 수 있다.
제 2 에러 정정 인코더(114)는, 복수의 로우-코드워드들에 포함된 심볼들을 심볼 그룹들로 그룹핑할 수 있다.
제 1 에러 정정 인코딩 시 이진 LDPC 코드가 이용된 경우, 제 2 에러 정정 인코더(114)는 복수의 로우-코드워드들 각각에 대하여 심볼들을 m 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성할 수 있다. 여기서, m은 자연수일 수 있다. 제 2 에러 정정 인코더(114)는, 복수의 로우-코드워드들에 포함된 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들을 그룹핑하여 복수의 심볼 그룹들을 구성할 수 있다. 로우-코드워드들 각각이 n개의 비트들을 포함하는 경우, n/m개의 심볼 그룹들이 생성될 수 있다.
제 1 에러 정정 인코딩 시 비이진 LDPC 코드가 이용된 경우, 제 2 에러 정정 인코더(114)는, 복수의 로우-코드워드들 각각에 대하여, q-비트 심볼들을 m 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성할 수 있다. 제 2 에러 정정 인코더(114)는, 복수의 로우-코드워드들에 포함된 q-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들을 그룹핑하여 복수의 심볼 그룹들을 구성할 수 있다. 로우-코드워드들 각각이 n/q 개의 q-비트 심볼들을 포함하는 경우, n/m 개의 심볼 그룹들이 생성될 수 있다.
제 2 에러 정정 인코더(114)는, n/m 개의 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성할 수 있다. 컬럼 코드워드들 각각은 하나의 심볼 그룹과 하나의 패리티 그룹을 포함할 수 있고, 하나의 패리티 그룹은 A개의 m-비트 심볼들을 포함할 수 있다. 복수의 로우-코드워드들과 복수의 컬럼-코드워드들을 모두 포함하여 코드워드 그룹이라 할 수 있다. 제 2 에러 정정 인코더(114)는, 코드워드 그룹을 채널로 출력할 수 있다.
에러 정정 디코더(120)는, 채널로부터 수신된 판독 벡터에 대하여 에러 정정 디코딩을 수행할 수 있다. 에러 정정 디코더(120)는, 제 1 에러 정정 디코더(122) 및 제 2 에러 정정 디코더(124)를 포함할 수 있다.
제 1 에러 정정 디코더(122)는, 복수의 로우-코드워드들 중 타겟 로우-코드워드)에 대응하는 타겟 판독 로우-벡터를 채널로부터 수신하고, 수신된 타겟 판독 로우-벡터에 대하여 제 1 에러 정정 디코딩을 수행할 수 있다. 제 1 에러 정정 인코딩이 이진 LDPC 코드를 이용하여 수행된 경우 제 1 에러 정정 디코딩은 이진 LDPC 코드를 이용하여 수행될 수 있고, 제 1 에러 정정 인코딩이 비이진 LDPC 코드를 이용하여 수행된 경우 제 1 에러 정정 디코딩은 비이진 LDPC 코드를 이용하여 수행될 수 있다.
제 1 에러 정정 디코더(122)는, 타겟 판독 로우-벡터에 대한 제 1 에러 정정 디코딩이 실패하는 경우, 코드워드 그룹에 속하는 로우-코드워드들 중 타겟 로우-코드워드를 제외한 나머지 로우-코드워드들인 참조 로우-코드워드들에 대응하는 참조 판독 로우-벡터들을 채널로부터 수신하고, 수신된 참조 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행할 수 있다.
제 1 에러 정정 디코더(122)는, 타겟 판독 로우-벡터에 대응하는 제 1 에러 정정 디코딩의 소프트 아웃풋과, 참조 판독 로우-벡터들 중 제 1 에러 정정 디코딩이 실패한 참조 판독 로우-벡터들 각각에 대응하는 제 1 에러 정정 디코딩의 소프트 아웃풋을 제 2 에러 정정 디코더(124)에게 제공할 수 있다. 예를 들어, 제 1 에러 정정 인코딩이 이진 LDPC 코드를 이용하여 수행된 경우, 제 1 에러 정정 디코더(122)는, 타겟 판독 로우-벡터에 포함된 심볼들 각각에 대응하는 제 1 에러 정정 디코딩의 소프트 아웃풋과 제 1 에러 정정 디코딩이 실패한 참조 판독 로우-벡터에 포함된 심볼들 각각에 대응하는 제 1 에러 정정 디코딩의 소프트 아웃풋을 제 2 에러 정정 디코더(124)에게 제공할 수 있다. 예를 들어, 제 1 에러 정정 인코딩이 비이진 LDPC 코드를 이용하여 수행된 경우, 제 1 에러 정정 디코더(122)는, 타겟 판독 로우-벡터에 포함된 q-비트 심볼들 각각에 대응하는 제 1 에러 정정 디코딩의 소프트 아웃풋과, 제 1 에러 정정 디코딩이 실패한 참조 판독 로우-벡터에 포함된 q-비트 심볼들 각각에 대응하는 제 1 에러 정정 디코딩의 소프트 아웃풋을 제 2 에러 정정 디코더(124)에게 제공할 수 있다.
제 2 에러 정정 디코더(124)는, 제 1 에러 정정 디코더(122)로부터 수신되는 소프트 아웃풋을 기반으로 코드워드 그룹에 속하는 컬럼-코드워드들 각각에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단할 수 있다.
예를 들어, 제 1 에러 정정 디코딩이 이진 LDPC 코드를 이용하여 수행된 경우, 제 2 에러 정정 디코더(124)는, 심볼들 각각에 대응하는 소프트 아웃풋을 기반으로 판독 컬럼-벡터에 포함된 m-비트 심볼들의 신뢰성 유무를 판단할 수 있다. 예를 들어, m-비트 심볼에 포함된 심볼들 중 모든 심볼들이 신뢰성이 있다고 판단된 경우 또는 m-비트 심볼에 포함된 심볼들 중 과반수의 심볼들이 신뢰성 있다고 판단된 경우 m-비트 심볼은 신뢰성이 있다고 판단될 수 있다.
예를 들어, 제 1 에러 정정 디코딩이 비이진 LDPC 코드를 이용하여 수행된 경우, 제 2 에러 정정 디코더(124)는, q-비트 심볼들 각각에 대응하는 소프트 아웃풋을 기반으로 판독 컬럼-벡터에 포함된 m-비트 심볼들의 신뢰성 유무를 판단할 수 있다. 예를 들어, m-비트 심볼에 포함된 m/q 개의 q-비트 심볼들 중 설정된 개수 이상의 q-비트 심볼들이 신뢰성이 있다고 판단된 경우, m-비트 심볼은 신뢰성이 있다고 판단될 수 있다. 예를 들어, m-비트 심볼들에 포함된 q-비트 심볼들 중 모든 q-비트 심볼들이 신뢰성이 있다고 판단된 경우 또는 m-비트 심볼들에 포함된 q-비트 심볼들 중 과반수 이상의 q-비트 심볼들이 신뢰성 있다고 판단된 경우 m-비트 심볼은 신뢰성이 있다고 판단될 수 있다.
제 2 에러 정정 디코더(124)는, 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 신뢰성이 있다고 판단된 m-비트 심볼은 에러 심볼이 아닌 것으로 설정한 후, 판독 컬럼-벡터에 대한 제 2 에러 정정 디코딩을 수행할 수 있다.
제 2 에러 정정 디코딩은, 에러 디코딩(error decoding) 및 소거 디코딩(erasure decoding) 중 적어도 하나를 포함할 수 있다.
제 2 에러 정정 디코더(124)는, 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가 MDS 코드의 소거 정정 능력(erasure correction capability)의 개수보다 작은, 판독 컬럼-벡터에 대하여 소거 디코딩(erasure decoding)을 수행할 수 있다. MDS 코드의 소거 정정 능력을 A개로 정의하면 A는 자연수일 수 있다.
제 2 에러 정정 디코더(124)는, 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가 MDS 코드의 에러 정정 능력(error correction capability) b 이하인 경우, 판독 컬럼-벡터에 대하여 에러 디코딩(error decoding)을 수행할 수 있다.
제 2 에러 정정 디코더(124)는, 제 2 에러 정정 디코딩 결과 정정된 심볼에 대한 정보를 제 1 에러 정정 디코더(122)에게 제공할 수 있다.
제 1 에러 정정 디코더(122)는, 타겟 판독 로우-벡터들에 포함된 심볼들 중 일부를 제 2 에러 정정 디코딩 결과에 따라 정정하고, 정정된 심볼을 포함하는 타겟 판독 로우-벡터에 대하여 제 1 에러 정정 디코딩을 수행할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 에러 정정 인코더의 동작 방법을 설명하기 위한 흐름도이다.
도 6을 참조하면, 단계(601)에서, 에러 정정 인코더(110)는, 복수의 메시지들 각각을 제 1 에러 정정 인코딩 하여 복수의 로우-코드워드들을 생성할 수 있다.
단계(603)에서, 에러 정정 인코더(110)는, 복수의 로우-코드워드들 각각에 포함된 심볼들을 컬럼 레이어 단위로 그룹핑하여 복수의 심볼 그룹들을 생성할 수 있다.
단계(605)에서, 에러 정정 인코더(110)는, 복수의 심볼 그룹들 각각을 제 2 에러 정정 인코딩 하여 복수의 컬럼-코드워드들을 생성할 수 있다.
단계(607)에서, 에러 정정 인코더(110)는, 로우-코드워드들과 컬럼-코드워드들을 포함하는 코드워드 그룹을 채널로 출력할 수 있다.
도 7은 본 발명의 일 실시 예에 따른 에러 정정 디코더의 동작 방법을 설명하기 위한 흐름도이다.
도 7을 참조하면, 단계(701)에서, 에러 정정 디코더(120)는, 코드워드 그룹에 속하는 로우-코드워드들 중 타겟 로우-코드워드에 대응하는 타겟 판독 로우-벡터에 대하여 제 1 에러 정정 디코딩을 수행할 수 있다.
단계(703)에서, 에러 정정 디코더(120)는, 제 1 에러 정정 디코딩이 성공했는지 여부를 판단할 수 있다. 단계(703)의 판단 결과, 제 1 에러 정정 디코딩이 성공한 경우(Y) 단계(705)에서, 디코딩된 타겟 로우-코드워드가 출력될 수 있다.
단계(703)의 판단 결과, 제 1 에러 정정 디코딩이 실패한 경우(N) 단계(711)가 수행될 수 있다.
단계(711)에서, 에러 정정 디코더(120)는, 코드워드 그룹에 속하는 로우-코드워드들 중 타겟 로우-코드워드를 제외한 나머지 로우-코드워드들, 즉 참조 로우-코드워드들에 대응하는 참조 판독 로우-벡터들에 대하여 제 1 에러 정정 디코딩을 수행할 수 있다.
단계(713)에서, 에러 정정 디코더(120)는, 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들(타겟 판독 로우-벡터 및 참조 판독 로우-벡터를 포함함)에 대응하는 소프트 아웃풋을 기반으로, 판독 컬럼-벡터들에 포함된 심볼들 각각의 신뢰성 유무를 판단할 수 있다.
단계(715)에서, 에러 정정 디코더(120)는, 판독 컬럼-벡터들에 포함된 심볼들 중 신뢰성 있는 것으로 판단된 심볼들은 에러 심볼이 아닌 것으로 설정하고, 판독 컬럼-벡터들에 대하여 제 2 에러 정정 디코딩을 수행할 수 있다.
단계(717)에서, 에러 정정 디코더(120)는, 타겟 판독 로우-벡터에 포함된 심볼들 중 일부를 제 2 에러 정정 디코딩 결과에 따라 정정하고, 타겟 판독 로우-벡터에 대하여 제 1 에러 정정 디코딩을 수행할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 예시도이다.
도 8을 참조하면, 메모리 시스템(memory system; 2000)은, 데이터가 저장되는 메모리 장치(memory device; 2200) 및 호스트(host; 1000)의 요청(request)에 따라 메모리 장치(2200)를 제어하는 메모리 컨트롤러(memory controller; 2100)를 포함할 수 있다.
호스트(1000)는, 메모리 시스템(2000)에 데이터를 저장하거나 메모리 시스템(2000)으로부터 데이터를 회수(retrieve)하는 장치 또는 시스템일 수 있다. 예를 들어, 호스트(1000)는, 컴퓨터(computer), 휴대용 디지털 장치(portable digital device), 태블릿(tablet), 디지털 카메라(digital camera), 디지털 오디오 플레이어(digital audio player), 텔레비전(television), 무선 통신 장치(wireless communication device) 또는 이동 전화기(cellular phone) 중 적어도 하나를 포함할 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
메모리 컨트롤러(2100)는, 메모리 시스템(2000)의 동작을 전반적으로 제어할 수 있다. 메모리 컨트롤러(2100)는, 호스트(1000)로부터의 요청(request)에 따라 다양한 동작(operation)을 수행할 수 있다. 메모리 컨트롤러(2100)는, 메모리 장치(2200)에 데이터를 저장하는 프로그램(program) 동작, 메모리 장치(2200)에 저장된 데이터를 리드(read)하는 리드 동작 또는 메모리 장치(2200)에 저장된 데이터를 소거(erase)하는 소거 동작 중 적어도 하나의 동작을 수행할 수 있다.
메모리 컨트롤러(2100)는, 호스트 인터페이스(host interface; 2110), 중앙 처리 장치(central processing unit; 2120), 메모리 인터페이스(memory interface; 2130), 버퍼 메모리(buffer memory; 2140), 에러 정정 회로(error correction circuit; 2150) 및 내부 메모리(internal memory; 2160)를 포함할 수 있다. 호스트 인터페이스(2110), 메모리 인터페이스(2130), 버퍼 메모리(2140), 에러 정정 회로(2150) 및 내부 메모리(2160)는, 중앙 처리 장치(2120)에 의해 제어될 수 있다.
호스트 인터페이스(2110)는, 다양한 인터페이스 프로토콜을 이용하여 호스트(1000)와 통신을 수행할 수 있다. 예를 들어, 호스트 인터페이스(2110)는, NVMe(Non-Volatile Memory express), PCI-E(Peripheral Component Interconnect-Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface), UFS(Universal Flash Storage), SCSI(Small Computer Small Interface) 및 SAS(serial attached SCSI) 중 적어도 하나의 인터페이스 프로토콜을 이용하여 호스트(1000)와 통신할 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
중앙 처리 장치(2120)는, 메모리 장치(2200)를 제어하기 위하여, 각종 연산을 수행하거나 커맨드 및 어드레스를 생성할 수 있다. 예를 들어, 중앙 처리 장치(2120)는, 호스트(1000)로부터 수신되는 요청에 따라, 프로그램 동작, 리드 동작 및 소거 동작 등에 필요한 다양한 커맨드들 및 어드레스들을 생성하여 메모리 장치(2200)에게 전송할 수 있다.
중앙 처리 장치(2120)는, 메모리 장치(2200)의 동작을 제어하기 위하여, 호스트(1000)로부터 수신되는 요청에 포함된 논리 어드레스를 물리 어드레스로 변환할 수 있다. 중앙 처리 장치(2120)는, 내부 메모리(2160)에 저장된 어드레스 맵핑 테이블을 사용하여 논리 어드레스를 물리 어드레스로 변환하거나, 물리 어드레스를 논리 어드레스로 변환할 수 있다. 중앙 처리 장치(2120)는, 메모리 장치(2200)에 새로운 데이터가 프로그램되거나, 메모리 장치(2200)에 저장되어 있는 데이터가 소거되는 경우 어드레스 맵핑 테이블을 갱신할 수 있다.
중앙 처리 장치(2120)는, 프로그램 동작 시 데이터를 랜덤화(randomizing)할 수 있고, 리드 동작 시 데이터를 디랜덤화(de-randomizing) 할 수 있다.
메모리 인터페이스(2130)는, 다양한 인터페이스 프로토콜을 이용하여 메모리 장치(2200)와 통신을 수행할 수 있다.
버퍼 메모리(2140)는, 메모리 컨트롤러(2100)가 메모리 장치(2200)를 제어하는 동안 데이터를 임시로 저장할 수 있다. 예를 들어, 호스트(1000)로부터 수신된 프로그램 데이터는, 프로그램 동작이 완료될 때까지 버퍼 메모리(2140)에 임시로 저장될 수 있다. 또한, 리드 동작 시 메모리 장치(2200)로부터 리드된 데이터가 버퍼 메모리(2140)에 임시로 저장될 수도 있다.
에러 정정 회로(2150)는, 프로그램 데이터에 대하여 에러 정정 인코딩을 수행하고, 리드 데이터에 대하여 에러 정정 디코딩을 수행할 수 있다. 에러 정정 회로(2150)는, 도 5에 도시된 에러 정정 회로(100)일 수 있다.
내부 메모리(2160)는, 메모리 컨트롤러(2100)의 동작에 필요한 다양한 정보들을 저장하는 저장부(storage)로서 사용될 수 있다. 내부 메모리(2160)는, 다수의 테이블들을 저장할 수 있다. 예를 들어, 내부 메모리(2160)는, 논리적 어드레스(logical address)와 물리적 어드레스(physical address)가 맵핑된 어드레스 맵핑 테이블을 저장할 수 있다.
메모리 장치(2200)는, 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성(volatile) 메모리 장치, 또는 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성(non-volatile) 메모리 장치로 이루어질 수 있다. 메모리 장치(2200)는, 메모리 컨트롤러(2100)의 제어에 따라 프로그램 동작, 리드 동작 및 소거 동작 등을 수행할 수 있다.
메모리 장치(2200)는, 데이터를 저장하는 적어도 하나의 저장 영역(storage area)을 포함할 수 있다. 저장 영역은, 복수의 메모리 셀들을 포함하는 하나의 페이지(page), 복수의 페이지들을 포함하는 하나의 메모리 블록(memory block), 복수의 메모리 블록들을 포함하는 하나의 플래인(plane) 또는 복수의 플래인들을 포함하는 하나의 다이(die)에 대응할 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
도 9는 본 발명의 일 실시 예에 따른 메모리 장치를 설명하기 위한 도면이다.
도 9를 참조하면, 메모리 장치(2200)는, 제어 로직(2210), 주변 회로들(2220) 및 메모리 셀 어레이(2240)를 포함할 수 있다. 주변 회로들(2220)은, 전압 생성 회로(voltage generation circuit; 2222), 로우 디코더(row decoder; 2224), 입출력 회로(input/output circuit; 2226), 칼럼 디코더(column decoder; 2228), 페이지 버퍼 그룹(page buffer group; 2232) 및 전류 센싱 회로(current sensing circuit; 2234)를 포함할 수 있다.
제어 로직(2210)은, 도 8에 도시된 메모리 컨트롤러(2100)의 제어 하에 주변 회로들(2220)을 제어할 수 있다.
제어 로직(2210)은, 입출력 회로(2226)를 통하여 메모리 컨트롤러(2100)로부터 수신되는 커맨드(CMD) 및 어드레스(ADD)에 응답하여 주변 회로들(2220)을 제어할 수 있다. 예를 들어, 제어 로직(2210)은, 커맨드(CMD) 및 어드레스(ADD)에 응답하여 동작 신호(OP_CMD), 로우 어드레스(RADD), 컬럼 어드레스(CADD), 페이지 버퍼 제어 신호들(PBSIGNALS) 및 허용 비트(VRY_BIT<#>)를 출력할 수 있다. 제어 로직(2210)은, 전류 센싱 회로(2234)로부터 수신되는 패스 신호(PASS) 또는 페일 신호(FAIL)에 응답하여 검증 동작이 패스되었는지 또는 페일되었는지 여부를 판단할 수 있다.
주변 회로들(2220)은 메모리 셀 어레이(2240)에 데이터를 저장하기 위한 프로그램 동작(program operation), 메모리 셀 어레이(2240)에 저장된 데이터를 출력하기 위한 리드 동작(read operation), 메모리 셀 어레이(2240)에 저장된 데이터를 소거하기 위한 소거 동작(erase operation)을 수행할 수 있다.
전압 생성 회로(2222)는, 제어 로직(2210)으로부터 수신되는 동작 신호(OP_CMD)에 응답하여 프로그램 동작, 리드 동작 및 소거 동작에 이용되는 다양한 동작 전압들(Vop)을 생성할 수 있다. 예를 들어, 전압 생성 회로(2222)는, 프로그램 전압, 검증 전압, 패스 전압, 리드 전압, 소거 전압 및 턴-온 전압 등을 로우 디코더(2224)로 전달할 수 있다.
로우 디코더(2224)는, 제어 로직(2210)으로부터 수신되는 로우 어드레스(RADD)에 응답하여 메모리 셀 어레이(2240)에 포함된 메모리 블록들 중 선택된 메모리 블록에 연결된 로컬 라인들(Local Lines; LL)에 동작 전압들(Vop)을 전달할 수 있다. 로컬 라인들(LL)은, 로컬 워드 라인들(local word lines), 로컬 드레인 셀렉트 라인들(local drain select lines) 및 로컬 소스 셀렉트 라인들(local source select lines)을 포함할 수 있다. 이 외에도, 로컬 라인들(LL)은 소스 라인(source line) 등 메모리 블록에 연결된 다양한 라인들을 포함할 수 있다.
입출력 회로(2226)는, 입출력 라인들(IO)을 통해 메모리 컨트롤러로부터 수신되는 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(2210)에 전달하거나, 칼럼 디코더(2228)와 데이터(DATA)를 주고 받을 수 있다.
칼럼 디코더(2228)는, 제어 로직(2210)으로부터 수신되는 칼럼 어드레스(CADD)에 응답하여 입출력 회로(2226)와 페이지 버퍼 그룹(2232) 사이에서 데이터를 전달할 수 있다. 예를 들어, 칼럼 디코더(2228)는, 데이터 라인들(DL)을 통해 페이지 버퍼들(PB1~PBm)과 데이터를 주고 받거나, 칼럼 라인들(CL)을 통해 입출력 회로(2226)와 데이터를 주고 받을 수 있다.
페이지 버퍼 그룹(2232)은, 메모리 블록들(BLK1~BLKi)에 공통으로 연결된 비트 라인들(BL1~BLm)에 연결될 수 있다. 페이지 버퍼 그룹(2232)은, 비트 라인들(BL1~BLm)에 연결된 복수의 페이지 버퍼들(PB1~PBm)을 포함할 수 있다. 예를 들어, 각각의 비트 라인마다 하나의 페이지 버퍼가 연결될 수 있다. 페이지 버퍼들(PB1~PBm)은, 제어 로직(2210)으로부터 수신되는 페이지 버퍼 제어 신호들(PBSIGNALS)에 응답하여 동작할 수 있다. 예를 들어, 페이지 버퍼들(PB1~PBm)은, 프로그램 동작 시 메모리 컨트롤러로부터 수신된 프로그램 데이터를 임시로 저장하고, 프로그램 데이터에 따라 비트 라인들(BL1~BLm)에 인가되는 전압을 조절할 수 있다. 또한, 페이지 버퍼들(PB1~PBm)은, 리드 동작 시 비트 라인들(BL1~BLm)을 통하여 수신되는 데이터를 임시로 저장하거나, 비트 라인들(BL1~BLm)의 전압 또는 전류를 센싱할 수 있다.
전류 센싱 회로(2234)는, 리드 동작 또는 검증 동작 시 제어 로직(2210)으로부터 수신되는 허용 비트(VRY_BTI<#>)에 응답하여 기준 전류를 생성하고, 기준 전류에 의하여 생성된 기준 전압과 페이지 버퍼 그룹(2232)으로부터 수신되는 센싱 전압(VPB)을 비교하여 패스 신호(PASS) 또는 페일 신호(FAIL)를 출력할 수 있다.
메모리 셀 어레이(2240)는, 데이터가 저장되는 복수의 메모리 블록들(BLK1~BLKi)을 포함할 수 있다. 메모리 블록들(BLK1~BLKi)에는 사용자 데이터(user data) 및 메모리 장치(2200)의 동작에 필요한 다양한 정보가 저장될 수 있다. 메모리 블록들(BLK1~BLKi)은, 2차원 구조로 구현되거나 3차원 구조로 구현될 수 있으며, 서로 동일하게 구성될 수 있다.
도 10은 메모리 블록을 설명하기 위한 예시도이다.
도 10을 참조하면, 메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있으며, 도 10에는 설명의 편의를 위하여 복수의 메모리 블록들 중 어느 하나의 메모리 블록(BLKi)이 도시되었다.
메모리 블록(BLKi)은 제 1 셀렉트 라인과 제 2 셀렉트 라인 사이에 서로 평행하게 배열된 복수의 워드 라인들이 연결될 수 있다. 여기서, 제 1 셀렉트 라인은 소스 셀렉트 라인(SSL)일 수 있고, 제 2 셀렉트 라인은 드레인 셀렉트 라인(DSL)일 수 있다. 구체적으로, 메모리 블록(BLKi)은, 비트 라인들(BL1~BLm)과 소스 라인(SL) 사이에 연결된 복수의 스트링들(strings; ST)을 포함할 수 있다. 비트 라인들(BL1~BLm)은 스트링들(ST)에 각각 연결될 수 있고, 소스 라인(SL)은 스트링들(ST)에 공통으로 연결될 수 있다. 스트링들(ST)은 서로 동일하게 구성될 수 있으므로, 제 1 비트 라인(BL1)에 연결된 스트링(ST)을 예를 들어 구체적으로 설명하도록 한다.
스트링(ST)은 소스 라인(SL)과 제 1 비트 라인(BL1) 사이에서 서로 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 복수의 메모리 셀들(F1~F16) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다. 하나의 스트링(ST)에는 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST)가 적어도 하나 이상씩 포함될 수 있으며, 메모리 셀들(F1~F16) 또한 도면에 도시된 개수보다 더 많이 포함될 수 있다.
소스 셀렉트 트랜지스터(SST)의 소스(source)는 소스 라인(SL)에 연결될 수 있고, 드레인 셀렉트 트랜지스터(DST)의 드레인(drain)은 제 1 비트 라인(BL1)에 연결될 수 있다. 메모리 셀들(F1~F16)은 소스 셀렉트 트랜지스터(SST)와 드레인 셀렉트 트랜지스터(DST) 사이에서 직렬로 연결될 수 있다. 서로 다른 스트링들(ST)에 포함된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결될 수 있고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있고, 메모리 셀들(F1~F16)의 게이트들은 복수의 워드 라인들(WL1~WL16)에 연결될 수 있다. 서로 다른 스트링들(ST)에 포함된 메모리 셀들 중에서 동일한 워드 라인에 연결된 메모리 셀들의 그룹을 물리 페이지(physical page; PPG)라 할 수 있다. 따라서, 메모리 블록(BLKi)에는 워드 라인들(WL1~WL16)의 개수만큼의 물리 페이지들(PPG)이 포함될 수 있다.
도 11은 도 8에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 11을 참조하면, 메모리 시스템(memory system; 30000)은, 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet), PC(personal computer), PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은, 메모리 장치(2200)와 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함할 수 있다.
메모리 컨트롤러(2100)는, 프로세서(processor; 3100)의 제어에 따라 메모리 장치(2200)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
메모리 장치(2200)에 프로그램된 데이터는 메모리 컨트롤러(2100)의 제어에 따라 디스플레이(display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(radio transceiver; 3300)는, 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는, 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는, 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(2100) 또는 디스플레이(3200)로 전송할 수 있다. 메모리 컨트롤러(2100)는, 프로세서(3100)에 의하여 처리(process)된 신호를 메모리 장치(2200)에 전송할 수 있다. 또한, 무선 송수신기(3300)는, 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(input device; 3400)는, 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad) 또는 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 키보드 또는 이미지 센서(image sensor)로 구현될 수 있다.
프로세서(3100)는, 메모리 컨트롤러(2100)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(3100)의 일부로서 구현될 수도 있고, 프로세서(3100)와는 별도의 칩으로 구현될 수 있다.
도 12는 도 8에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 12를 참조하면, 메모리 시스템(memory system; 70000)은, 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 메모리 장치(2200), 메모리 컨트롤러(2100) 및 카드 인터페이스(card interface; 7100)를 포함할 수 있다.
메모리 컨트롤러(2100)는, 메모리 장치(2200)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는, SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는, 호스트(host; 60000)의 프로토콜에 따라 호스트(60000)와 메모리 컨트롤러(2100) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는, USB(universal serial bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는, 호스트(60000)가 이용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; 6100)의 제어에 따라 카드 인터페이스(7100)와 메모리 컨트롤러(2100)를 통하여 메모리 장치(2200)와 데이터 통신을 수행할 수 있다.
Cr: 로우-코드워드
Cc: 컬럼-코드워드
CG: 코드워드 그룹 SG: 심볼 그룹
PG: 패리티 그룹 Ar: 로우
100: 에러 정정 회로 110: 에러 정정 인코더
112: 제 1 에러 정정 인코더 114: 제 2 에러 정정 인코더
120: 에러 정정 디코더 122: 제 1 에러 정정 디코더
124: 제 2 에러 정정 디코더
CG: 코드워드 그룹 SG: 심볼 그룹
PG: 패리티 그룹 Ar: 로우
100: 에러 정정 회로 110: 에러 정정 인코더
112: 제 1 에러 정정 인코더 114: 제 2 에러 정정 인코더
120: 에러 정정 디코더 122: 제 1 에러 정정 디코더
124: 제 2 에러 정정 디코더
Claims (21)
- 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 제 1 에러 정정 인코더;
상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하고, 상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 제 2 에러 정정 인코더;
상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하고, 상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하여 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 출력하는 제 1 에러 정정 디코더; 및
상기 p-비트 심볼들 각각에 대응하는 상기 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하고, 상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 제 2 에러 정정 디코더를 포함하는 에러 정정 회로.
- 제 1 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 반전 함수 값(flipping function value)을 포함하는 에러 정정 회로.
- 제 1 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 사후 확률(a posteriori probability)을 포함하는 에러 정정 회로.
- 제 1 항에 있어서,
상기 제 1 에러 정정 디코더에서 수행된 상기 제 1 에러 정정 디코딩이 성공하면,
상기 제 1 에러 정정 디코더에서 디코딩된 타겟 로우-코드워드가 출력되는 에러 정정 회로.
- 제 1 항에 있어서, 상기 제 2 에러 정정 디코더는,
상기 m-비트 심볼들 중 상기 신뢰성이 있다고 판단된 m-비트 심볼은 에러 심볼이 아닌 것으로 설정하여, 상기 제 2 에러 정정 디코딩을 수행하는 에러 정정 회로.
- 제 1 항에 있어서, 상기 제 2 에러 정정 디코더는,
상기 m-비트 심볼에 포함된 p-비트 판독 심볼들 중 설정된 개수 이상의 p-비트 심볼들의 신뢰도가 설정 값 이상인 경우, 상기 m-비트 심볼을 상기 신뢰성이 있다고 판단하는 에러 정정 회로.
- 제 1 항에 있어서, 상기 제 1 에러 정정 디코더는,
상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 중 상기 제 2 에러 정정 디코딩에 의하여 정정된 m-비트 심볼에 포함된 p-비트 심볼들을 포함하는 판독 로우-벡터에 대하여 상기 제 1 에러 정정 디코딩을 수행하는 에러 정정 회로.
- 제 1 항에 있어서, 상기 컬럼-코드워드들 각각은,
MDS(maximum distance separable) 코드의 코드워드인 에러 정정 회로.
- 제 8 항에 있어서, 상기 제 2 에러 정정 디코딩은,
에러 디코딩(error decoding) 또는 소거 디코딩(erasure decoding) 중 적어도 하나를 포함하는 에러 정정 회로.
- 제 9 항에 있어서, 상기 제 2 에러 정정 디코더는,
상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 소거 정정 능력(erasure correction capability) A(A는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 소거 디코딩(erasure decoding)을 수행하는 에러 정정 회로.
- 제 9 항에 있어서, 상기 제 2 에러 정정 디코더는,
상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 에러 정정 능력(error correction capability) B(B는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 에러 디코딩(error decoding)을 수행하는 에러 정정 회로.
- 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 단계;
상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하는 단계;
상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 단계;
상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하는 단계;
상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하는 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하는 단계; 및
상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
- 제 12 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 반전 함수 값(flipping function value)을 포함하는 에러 정정 회로의 동작 방법.
- 제 12 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 사후 확률(a posteriori probability)을 포함하는 에러 정정 회로의 동작 방법.
- 제 12 항에 있어서, 상기 제 2 에러 정정 디코딩을 수행하는 단계는,
상기 m-비트 심볼들 중 상기 신뢰성이 있다고 판단된 m-비트 심볼은 에러 심볼이 아닌 것으로 설정하여, 상기 제 2 에러 정정 디코딩을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
- 제 12 항에 있어서, 상기 신뢰성 유무를 판단하는 단계는,
상기 m-비트 심볼에 포함된 p-비트 심볼들 중 설정된 개수 이상의 p-비트 심볼들의 신뢰도가 설정 값 이상인 경우, 상기 m-비트 심볼을 상기 신뢰성이 있다고 판단하는 단계를 포함하는 에러 정정 회로의 동작 방법.
- 제 12 항에 있어서,
상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 중 상기 제 2 에러 정정 디코딩에 의하여 정정된 m-비트 심볼에 포함된 q-비트 심볼들을 포함하는 판독 로우-벡터에 대하여 상기 제 1 에러 정정 디코딩을 수행하는 단계를 더 포함하는 에러 정정 회로의 동작 방법.
- 제 12 항에 있어서, 상기 컬럼-코드워드들 각각은,
MDS(maximum distance separable) 코드의 코드워드인 에러 정정 회로의 동작 방법.
- 제 18 항에 있어서, 상기 제 2 에러 정정 디코딩은,
에러 디코딩(error decoding) 또는 소거 디코딩(erasure decoding) 중 적어도 하나를 포함하는 에러 정정 회로의 동작 방법.
- 제 19 항에 있어서, 상기 제 2 에러 정정 디코딩을 수행하는 단계는,
상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 소거 정정 능력(erasure correction capability) A(A는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 소거 디코딩(erasure decoding)을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
- 제 19 항에 있어서, 상기 제 2 에러 정정 디코딩을 수행하는 단계는,
상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 에러 정정 능력(error correction capability) B(B는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 에러 디코딩(error decoding)을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200042829A KR20210125294A (ko) | 2020-04-08 | 2020-04-08 | 에러 정정 회로 및 이의 동작 방법 |
US17/024,880 US11251811B2 (en) | 2020-04-08 | 2020-09-18 | Error correction circuit and operating method thereof |
CN202011081430.2A CN113495803A (zh) | 2020-04-08 | 2020-10-12 | 错误校正电路及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200042829A KR20210125294A (ko) | 2020-04-08 | 2020-04-08 | 에러 정정 회로 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210125294A true KR20210125294A (ko) | 2021-10-18 |
Family
ID=77994898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200042829A KR20210125294A (ko) | 2020-04-08 | 2020-04-08 | 에러 정정 회로 및 이의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11251811B2 (ko) |
KR (1) | KR20210125294A (ko) |
CN (1) | CN113495803A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117650870A (zh) * | 2023-12-06 | 2024-03-05 | 北京荷智科技有限公司 | 一种基于纵向编码纠错的通信方法、系统、设备及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7516389B2 (en) * | 2004-11-04 | 2009-04-07 | Agere Systems Inc. | Concatenated iterative and algebraic coding |
KR101253187B1 (ko) * | 2007-04-05 | 2013-04-10 | 엘지전자 주식회사 | 디지털 방송 시스템 및 데이터 처리 방법 |
US7907512B1 (en) * | 2009-03-03 | 2011-03-15 | Urbain A. von der Embse | OFDM and SC-OFDM QLM |
US8325850B2 (en) * | 2010-01-25 | 2012-12-04 | Futurewei Technologies, Inc. | System and method for digital communications with unbalanced codebooks |
US9118350B2 (en) * | 2010-09-10 | 2015-08-25 | Trellis Phase Communications, Lp | Methods, apparatus, and systems for coding with constrained interleaving |
US9362955B2 (en) * | 2010-09-10 | 2016-06-07 | Trellis Phase Communications, Lp | Encoding and decoding using constrained interleaving |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9191256B2 (en) * | 2012-12-03 | 2015-11-17 | Digital PowerRadio, LLC | Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems |
KR20170075065A (ko) | 2015-12-22 | 2017-07-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 동작 방법 |
US10707996B2 (en) * | 2018-04-06 | 2020-07-07 | International Business Machines Corporation | Error correcting codes with bayes decoder and optimized codebook |
-
2020
- 2020-04-08 KR KR1020200042829A patent/KR20210125294A/ko unknown
- 2020-09-18 US US17/024,880 patent/US11251811B2/en active Active
- 2020-10-12 CN CN202011081430.2A patent/CN113495803A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US11251811B2 (en) | 2022-02-15 |
US20210320673A1 (en) | 2021-10-14 |
CN113495803A (zh) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11050438B2 (en) | Memory controller | |
US11031952B2 (en) | Error correction decoder and memory system having the same | |
US10985780B2 (en) | Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller | |
US10522234B2 (en) | Bit tagging method, memory control circuit unit and memory storage device | |
US11115064B2 (en) | Error correction decoder and memory system having the same | |
KR20200114151A (ko) | 오류 정정 디코더 | |
TWI691962B (zh) | 解碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
KR102582326B1 (ko) | 에러 정정 회로 및 이의 동작 방법 | |
US11082068B2 (en) | Error correction circuit, memory controller having error correction circuit, and memory system having memory controller | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
US10826531B2 (en) | Error correction circuit and operating method thereof | |
US11251811B2 (en) | Error correction circuit and operating method thereof | |
US11418217B2 (en) | Error correction circuit and error correction encoding method | |
US11145372B2 (en) | Decoding method, memory controlling circuit unit, and memory storage device | |
CN109960603B (zh) | 比特标记方法、存储器控制电路单元以及存储器存储装置 | |
US10978163B2 (en) | Voltage identifying method, memory controlling circuit unit and memory storage device | |
CN111508546B (zh) | 解码方法、存储器控制电路单元与存储器存储装置 | |
TWI742509B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN111435604B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
US10628259B2 (en) | Bit determining method, memory control circuit unit and memory storage device |