KR20210125294A - 에러 정정 회로 및 이의 동작 방법 - Google Patents

에러 정정 회로 및 이의 동작 방법 Download PDF

Info

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
Application number
KR1020200042829A
Other languages
English (en)
Inventor
김대성
이현준
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020200042829A priority Critical patent/KR20210125294A/ko
Priority to US17/024,880 priority patent/US11251811B2/en
Priority to CN202011081430.2A priority patent/CN113495803A/zh
Publication of KR20210125294A publication Critical patent/KR20210125294A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/1032Simple parity
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/21Non-linear codes, e.g. m-bit data word to n-bit code word [mBnB] conversion with error detection or error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2906Coding, 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/2909Product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2906Coding, 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/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-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

에러 정정 회로 및 이의 동작 방법{Error correction circuit and operating method thereof}
본 발명은, 데이터의 에러를 정정할 수 있는 에러 정정 회로에 관한 것으로, 보다 구체적으로는 에러 정정 능력을 개선시킨 에러 정정 회로 및 이의 동작 방법에 관한 것이다.
메모리 시스템(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에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 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 에러 정정 디코더

Claims (21)

  1. 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 제 1 에러 정정 인코더;
    상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하고, 상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 제 2 에러 정정 인코더;
    상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하고, 상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하여 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 출력하는 제 1 에러 정정 디코더; 및
    상기 p-비트 심볼들 각각에 대응하는 상기 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하고, 상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 제 2 에러 정정 디코더를 포함하는 에러 정정 회로.
  2. 제 1 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
    상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 반전 함수 값(flipping function value)을 포함하는 에러 정정 회로.
  3. 제 1 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
    상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 사후 확률(a posteriori probability)을 포함하는 에러 정정 회로.
  4. 제 1 항에 있어서,
    상기 제 1 에러 정정 디코더에서 수행된 상기 제 1 에러 정정 디코딩이 성공하면,
    상기 제 1 에러 정정 디코더에서 디코딩된 타겟 로우-코드워드가 출력되는 에러 정정 회로.
  5. 제 1 항에 있어서, 상기 제 2 에러 정정 디코더는,
    상기 m-비트 심볼들 중 상기 신뢰성이 있다고 판단된 m-비트 심볼은 에러 심볼이 아닌 것으로 설정하여, 상기 제 2 에러 정정 디코딩을 수행하는 에러 정정 회로.
  6. 제 1 항에 있어서, 상기 제 2 에러 정정 디코더는,
    상기 m-비트 심볼에 포함된 p-비트 판독 심볼들 중 설정된 개수 이상의 p-비트 심볼들의 신뢰도가 설정 값 이상인 경우, 상기 m-비트 심볼을 상기 신뢰성이 있다고 판단하는 에러 정정 회로.
  7. 제 1 항에 있어서, 상기 제 1 에러 정정 디코더는,
    상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 중 상기 제 2 에러 정정 디코딩에 의하여 정정된 m-비트 심볼에 포함된 p-비트 심볼들을 포함하는 판독 로우-벡터에 대하여 상기 제 1 에러 정정 디코딩을 수행하는 에러 정정 회로.
  8. 제 1 항에 있어서, 상기 컬럼-코드워드들 각각은,
    MDS(maximum distance separable) 코드의 코드워드인 에러 정정 회로.
  9. 제 8 항에 있어서, 상기 제 2 에러 정정 디코딩은,
    에러 디코딩(error decoding) 또는 소거 디코딩(erasure decoding) 중 적어도 하나를 포함하는 에러 정정 회로.
  10. 제 9 항에 있어서, 상기 제 2 에러 정정 디코더는,
    상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 소거 정정 능력(erasure correction capability) A(A는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 소거 디코딩(erasure decoding)을 수행하는 에러 정정 회로.
  11. 제 9 항에 있어서, 상기 제 2 에러 정정 디코더는,
    상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 에러 정정 능력(error correction capability) B(B는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 에러 디코딩(error decoding)을 수행하는 에러 정정 회로.
  12. 복수의 메시지들 각각을 제 1 에러 정정 인코딩하여 복수의 로우-코드워드들을 생성하는 단계;
    상기 로우-코드워드들 각각에 포함된 p(p는 자연수)-비트 심볼들을 m(m은 자연수) 개의 컬럼을 포함하는 컬럼 레이어 단위로 그룹핑하여 m-비트 심볼들을 구성하는 단계;
    상기 m-비트 심볼들 중 동일한 컬럼 레이어에 속하는 m-비트 심볼들로 이루어진 심볼 그룹들 각각을 제 2 에러 정정 인코딩하여 복수의 컬럼-코드워드들을 생성하는 단계;
    상기 복수의 로우-코드워드들에 대응하는 판독 로우-벡터들 각각에 대하여 제 1 에러 정정 디코딩을 수행하는 단계;
    상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 각각에 포함된 p-비트 심볼들 각각에 대응하는 상기 제 1 에러 정정 디코딩의 소프트 아웃풋을 기반으로, 상기 컬럼-코드워드들에 대응하는 판독 컬럼-벡터들에 포함된 m-비트 심볼들 각각의 신뢰성 유무를 판단하는 단계; 및
    상기 판단된 신뢰성 유무를 기반으로 상기 판독 컬럼-벡터들에 대한 제 2 에러 정정 디코딩을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
  13. 제 12 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
    상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 반전 함수 값(flipping function value)을 포함하는 에러 정정 회로의 동작 방법.
  14. 제 12 항에 있어서, 상기 제 1 에러 정정 디코딩의 소프트 아웃풋은,
    상기 판독 로우-벡터들에 포함된 p-비트 심볼들 각각에 대응하는 변수 노드(variable node)의 사후 확률(a posteriori probability)을 포함하는 에러 정정 회로의 동작 방법.
  15. 제 12 항에 있어서, 상기 제 2 에러 정정 디코딩을 수행하는 단계는,
    상기 m-비트 심볼들 중 상기 신뢰성이 있다고 판단된 m-비트 심볼은 에러 심볼이 아닌 것으로 설정하여, 상기 제 2 에러 정정 디코딩을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
  16. 제 12 항에 있어서, 상기 신뢰성 유무를 판단하는 단계는,
    상기 m-비트 심볼에 포함된 p-비트 심볼들 중 설정된 개수 이상의 p-비트 심볼들의 신뢰도가 설정 값 이상인 경우, 상기 m-비트 심볼을 상기 신뢰성이 있다고 판단하는 단계를 포함하는 에러 정정 회로의 동작 방법.
  17. 제 12 항에 있어서,
    상기 제 1 에러 정정 디코딩에 실패한 판독 로우-벡터들 중 상기 제 2 에러 정정 디코딩에 의하여 정정된 m-비트 심볼에 포함된 q-비트 심볼들을 포함하는 판독 로우-벡터에 대하여 상기 제 1 에러 정정 디코딩을 수행하는 단계를 더 포함하는 에러 정정 회로의 동작 방법.
  18. 제 12 항에 있어서, 상기 컬럼-코드워드들 각각은,
    MDS(maximum distance separable) 코드의 코드워드인 에러 정정 회로의 동작 방법.
  19. 제 18 항에 있어서, 상기 제 2 에러 정정 디코딩은,
    에러 디코딩(error decoding) 또는 소거 디코딩(erasure decoding) 중 적어도 하나를 포함하는 에러 정정 회로의 동작 방법.
  20. 제 19 항에 있어서, 상기 제 2 에러 정정 디코딩을 수행하는 단계는,
    상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 소거 정정 능력(erasure correction capability) A(A는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 소거 디코딩(erasure decoding)을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
  21. 제 19 항에 있어서, 상기 제 2 에러 정정 디코딩을 수행하는 단계는,
    상기 판독 컬럼-벡터들 각각에 대하여, 상기 판독 컬럼-벡터에 포함된 m-비트 심볼들 중 상기 신뢰성이 없다고 판단된 m-비트 심볼들의 개수가, 상기 MDS 코드의 에러 정정 능력(error correction capability) B(B는 자연수) 이하인 경우, 상기 판독 컬럼-벡터에 대하여 상기 에러 디코딩(error decoding)을 수행하는 단계를 포함하는 에러 정정 회로의 동작 방법.
KR1020200042829A 2020-04-08 2020-04-08 에러 정정 회로 및 이의 동작 방법 KR20210125294A (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117650870A (zh) * 2023-12-06 2024-03-05 北京荷智科技有限公司 一种基于纵向编码纠错的通信方法、系统、设备及介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
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

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