KR20140088423A - Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof - Google Patents

Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof Download PDF

Info

Publication number
KR20140088423A
KR20140088423A KR1020130000283A KR20130000283A KR20140088423A KR 20140088423 A KR20140088423 A KR 20140088423A KR 1020130000283 A KR1020130000283 A KR 1020130000283A KR 20130000283 A KR20130000283 A KR 20130000283A KR 20140088423 A KR20140088423 A KR 20140088423A
Authority
KR
South Korea
Prior art keywords
matrix
row
parity check
sub
data
Prior art date
Application number
KR1020130000283A
Other languages
Korean (ko)
Other versions
KR102058499B1 (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 KR1020130000283A priority Critical patent/KR102058499B1/en
Priority to US13/755,222 priority patent/US9141467B2/en
Publication of KR20140088423A publication Critical patent/KR20140088423A/en
Application granted granted Critical
Publication of KR102058499B1 publication Critical patent/KR102058499B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

The present invention relates to a semiconductor memory system including an RS-LDPC decoder and a read method thereof. The semiconductor memory system according to an embodiment of the present invention includes: a read data management unit which stores the data read from a memory device; a likelihood value mapping unit which maps likelihood ratio values onto the data output from the read data management unit and outputs the mapped data; and a decoding unit which executes a low-density parity check operation by using a parity check matrix.

Description

리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법{SEMICONDUCTOR MEMORY SYSTEM INCLUDING REED-SOLOMON LOW DENSITY PARITY CHECK DECODER AND READ METHOD THEREOF}TECHNICAL FIELD [0001] The present invention relates to a semiconductor memory system including a Reed-Solomon low density parity check decoder and a method of reading the same.

본 발명은 반도체 메모리 시스템에 관한 것으로서, 더욱 상세하게는 저장된 데이터를 읽어낼 때 읽어낸 데이터의 에러를 정정하기 위한 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법에 관한 것이다.The present invention relates to a semiconductor memory system, and more particularly, to a semiconductor memory system including a Reed-Solomon low density parity check decoder for correcting errors in data read when reading stored data, and a reading method thereof .

반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.A semiconductor memory device is a memory device implemented using semiconductors such as silicon (Si), germanium (Ge), gallium arsenide (GaAs), indium phosphide (InP) to be. Semiconductor memory devices are classified into a volatile memory device and a nonvolatile memory device.

반도체 메모리 장치에 프로그램된 데이터를 읽어낼 때, 읽어낸 데이터에는 다양한 이유로 에러가 포함될 수 있다. 읽어낸 데이터의 에러를 정정하기 위하여, BCH(Bose-Chaudhuri-Hocquenghem) 부호, LDPC(Low Density Parity Check) 부호, 터보(Tutbo) 부호 등과 같은 에러 정정 부호들이 연구되고 있다.When reading data programmed into a semiconductor memory device, the read data may contain errors for various reasons. Error correction codes such as a Bose-Chaudhuri-Hocquenghem (BCH) code, a Low Density Parity Check (LDPC) code, and a Turbo code have been studied to correct errors in the read data.

특히 LDPC 부호 중에서 리드-솔로몬(Reed-Solomon, 이하 RS) 부호를 LDPC 부호로 확장시킨 RS-LDPC 부호는 최소 거리와 거스(girth)의 길이가 길기 때문에 상대적으로 에러 정정 능력이 뛰어난 특성을 가진다. 그러나, RS-LDPC 부호는 뛰어는 에러 정정 성능에도 불구하고 패리티 검사 행렬의 구조가 매우 랜덤하다. 이러한, 랜덤 구조의 패리티 검사 행렬은 RS-LDPC 디코더의 연산 처리량 및 하드웨어 복잡도를 증가시키는 단점이 있다.In particular, an RS-LDPC code in which a Reed-Solomon (RS) code is extended to an LDPC code among the LDPC codes has a relatively long error correction capability because the minimum distance and the length of the Gaussian are long. However, the structure of the parity check matrix is very random despite the error correction performance of RS-LDPC code. The parity check matrix of the random structure increases the computational throughput and hardware complexity of the RS-LDPC decoder.

본 발명의 목적은 RS-LDPC 디코더를 위한 단순 구조의 패리티 검사 행렬을 제안하고, 제안된 패리티 검사 행렬을 이용하여 효율적으로 데이터를 디코딩하는 RS-LDPC 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법을 제공하는 데 있다.An object of the present invention is to provide a simple structure parity check matrix for an RS-LDPC decoder, and a RS-LDPC decoder for efficiently decoding data using the proposed parity check matrix, .

본 발명의 다른 목적은 연산 처리량 및 하드웨어 복잡도가 감소된 RS-LDPC 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법을 제공하는 데 있다.It is another object of the present invention to provide a semiconductor memory system including an RS-LDPC decoder with reduced computational throughput and hardware complexity and a method of reading the same.

본 발명에 따른 반도체 메모리 시스템은 메모리 장치로부터 읽어낸 데이터를 저장하는 읽기 데이터 관리부; 상기 읽기 데이터 관리부로부터 출력되는 상기 데이터에 우도(Likelihood Ratio)값들을 사상하여 사상 데이터를 출력하는 우도값 사상부; 및 상기 사상 데이터에 대해, 패리티 검사 행렬(Parity Check Matrix)를 사용하여 저밀도 패리티 검사(Low Density Parity Check) 디코딩을 수행하는 디코딩 부를 포함하되, 상기 패리티 검사 행렬은 k 개의 N×M 서브 행렬을 포함하는 k*N×M 행렬이고(단, k, N, M은 2 이상의 정수), 상기 k 개의 N×M 서브 행렬은 N×M 크기를 갖는 제 1 서브 행렬; 및 N×M 크기를 갖고, 상기 제 1 서브 행렬과 인접하여 위치하며, 상기 제 1 서브 행렬을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖는 제 2 서브 행렬을 포함하고, 상기 제 1 서브 행렬은 리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 부호어(code word)를 심볼 위치 벡터로 변환한 이진(binary) 순열인 제 1 행; 상기 제 1 행과 인접하여 위치하고, 상기 제 1 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖는 제 2 행; 및 상기 제 2 행과 인접하여 위치하고, 상기 제 2 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖되, 상기 제 1 행과는 다른 제 3 행을 포함한다.A semiconductor memory system according to the present invention includes a read data management unit for storing data read from a memory device; A likelihood value mapping unit for mapping likelihood ratio values to the data output from the read data management unit to output mapped data; And a decoding unit for performing low density parity check decoding on the mapped data using a parity check matrix, wherein the parity check matrix includes k N × M submatrices (K, N, M is an integer equal to or greater than 2), the k N × M submatrix is a first submatrix having an N × M size; And a second sub-matrix having an N × M size and located adjacent to the first sub-matrix and having the same element arrangement as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to the circulation period M Wherein the first sub-matrix comprises a first row that is a binary permutation obtained by converting a code word generated according to a Reed-Solomon code into a symbol position vector; A second row positioned adjacent to the first row and having the same elemental arrangement as a row in which the first row is cyclically shifted by one according to the circulation period N; And a third row which is located adjacent to the second row and has the same elemental arrangement as the row in which the second row is cyclically shifted by one according to the circulation period N, and which is different from the first row.

실시 예로서, 상기 디코딩 부는 우도값 또는 검사 노드 메시지를 참조하여 변수 노드들 및 검사 노드들의 값들을 갱신하고, 상기 갱신된 변수 노드들 및 검사 노드들의 값들에 따라 상기 데이터의 디코딩을 수행하는 변수 노드 연산부; 상기 갱신된 변수 노드들의 값들을 변수 노드 메시지로서 수신하고, 상기 수신된 변수 노드 메시지를 참조하여 상기 검사 노드 메시지를 제공하는 검사 노드 연산부; 상기 변수 노드 블록으로부터 상기 검사 노드 블록으로의 변수 노드 메시지 전송을 중계하는 제 1 네트워크 부; 및 상기 검사 노드 블록으로부터 상기 변수 노드 블록으로의 검사 노드 메시지 전송을 중계하는 제 2 네트워크 부를 포함한다.The decoding unit may update the values of the variable nodes and the check nodes by referring to the likelihood value or the check node message, and may update the value of the variable nodes and the check nodes according to the values of the updated variable nodes and the check nodes. An operation unit; A check node operation unit receiving the updated variable node values as a variable node message and providing the check node message with reference to the received variable node message; A first network unit for relaying variable node message transmission from the variable node block to the check node block; And a second network unit for relaying a check node message transmission from the check node block to the variable node block.

실시 예로서, 상기 제 1 네트워크 부 또는 상기 제 2 네트워크 부는 상기 변수 노드 블록으로부터 입력된 변수 노드 메시지의 적어도 일부를 복수의 채널들 중 어느 하나에 할당하는 스위치 제어부; 및 상기 어느 하나의 채널과 연결된 복수의 입력 단자를 복수의 출력 단자에 고정 배선하는 고정 배선 블록을 포함하는 연결부를 포함한다.In an exemplary embodiment, the first network unit or the second network unit may include: a switch control unit that allocates at least a part of a variable node message input from the variable node block to one of a plurality of channels; And a connection part including a fixed wiring block for fixing and wiring a plurality of input terminals connected to any one of the channels to a plurality of output terminals.

실시 예로서, 상기 스위치 제어부는 클럭 신호에 따라 상기 변수 노드 메시지의 적어도 일부를 대신하여, 상기 변수 노드 메시지의 다른 일부를 상기 어느 하나의 채널에 할당한다.In an embodiment, the switch control unit assigns a different part of the variable node message to the one of the channels in place of at least a part of the variable node message in accordance with a clock signal.

실시 예로서, 상기 제 1 네트워크 부 또는 상기 제 2 네트워크 부는 상기 패리티 검사 행렬에 따라 상기 변수 노드 메시지를 상기 검사 노드들에 나누어 할당하는 병렬 시프터; 및 상기 병렬 시프터의 동작을 제어하는 시프터 제어부를 포함한다.In an exemplary embodiment, the first network unit or the second network unit may include: a parallel shifter for dividing the variable node message into the check nodes according to the parity check matrix; And a shifter control unit for controlling operations of the parallel shifter.

실시 예로서, 상기 N은 리드-솔로몬(Reed-Solomon) 부호에 따라 상기 부호어(code word)를 생성하기 위해 사용되는 갈루아 필드의 원소의 개수이다.In an embodiment, N is the number of Galois field elements used to generate the code word according to the Reed-Solomon code.

실시 예로서, 상기 저밀도 패리티 검사 디코딩에 의한 에러 정정 상태를 판정하는 신드롬 검사부를 더 포함한다.As an embodiment, the apparatus further includes a syndrome checking unit for determining an error correction state by the low density parity check decoding.

실시 예로서, 상기 에러 정정 상태의 판정 결과에 따라 상기 디코딩 부는 페일 메시지를 출력하고, 상기 읽기 데이터 관리부는 상기 페일 메시지에 응답하여 상기 메모리 장치로부터 읽어낸 추가 데이터를 저장하고, 상기 우도값 사상부는 상기 추가 데이터에 우도값들을 사상하여 추가 사상 데이터를 출력하고, 상기 디코딩부는 상기 추가 사상 데이터에 대해 상기 패리티 검사 행렬을 사용하여 저밀도 패리티 검사를 수행한다.In one embodiment, the decoding unit outputs a fail message according to the determination result of the error correction state, the read data management unit stores the additional data read from the memory device in response to the fail message, and the likelihood value mapping unit Maps the likelihood values to the additional data to output additional mapping data, and the decoding unit performs low density parity check on the additional mapping data using the parity check matrix.

실시 예로서, 상기 데이터를 읽어내기 위한 읽기 전압과 상기 추가 데이터를 읽어내기 위한 읽기 전압은 서로 다른 전압 레벨을 갖는다.As an embodiment, the read voltage for reading the data and the read voltage for reading the additional data have different voltage levels.

실시 예로서, 상기 패리티 검사 행렬을 저장하는 저장부를 더 포함한다.As an embodiment, the apparatus further includes a storage unit for storing the parity check matrix.

실시 예로서, 상기 메모리 장치는 낸드 플래시 메모리(NAND Flash Memory)를 포함한다.In an embodiment, the memory device includes a NAND flash memory.

본 발명에 따른 반도체 메모리 시스템의 데이터 읽기 방법은 제 1 읽기 전압들을 이용하여 상기 반도체 메모리 시스템에 저장된 데이터를 읽는 단계; 상기 읽혀진 데이터에 대해 패리티 검사 행렬(Parity Check Matrix)을 사용하여 저밀도 패리티 검사(Low Density Parity Check) 디코딩을 수행하는 단계; 및 상기 디코딩 결과에 따라, 상기 읽혀진 데이터의 에러를 정정한 결과를 출력하는 단계를 포함하되, 상기 패리티 검사 행렬은 k 개의 N×M 서브 행렬을 포함하는 k*N×M 행렬이고(단, k는 2 이상의 정수), 상기 k 개의 N×M 서브 행렬은 N×M 크기를 갖는 제 1 서브 행렬; 및 N×M 크기를 갖고, 상기 제 1 서브 행렬과 인접하여 위치하며, 상기 제 1 서브 행렬을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖는 제 2 서브 행렬을 포함하고, 상기 제 1 서브 행렬은 리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 코드 워드를 심볼 위치 벡터로 변환한 이진(binary) 순열인 제 1 행; 상기 제 1 행과 인접하여 위치하고, 상기 제 1 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖는 제 2 행; 및 상기 제 2 행과 인접하여 위치하고, 상기 제 2 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖되, 상기 제 1 행과는 다른 제 3 행을 포함한다.According to another aspect of the present invention, there is provided a method of reading data from a semiconductor memory system, comprising: reading data stored in the semiconductor memory system using first read voltages; Performing Low Density Parity Check (LDPC) decoding on the read data using a parity check matrix; And outputting a result of correcting the error of the read data according to the decoding result, wherein the parity check matrix is a k * N x M matrix including k N × M submatrices, where k The k submulti-by-N submatrix is a first submatrix having an N × M size; And a second sub-matrix having an N × M size and located adjacent to the first sub-matrix and having the same element arrangement as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to the circulation period M Wherein the first sub-matrix comprises a first row that is a binary permutation obtained by converting a code word generated according to a Reed-Solomon code into a symbol position vector; A second row positioned adjacent to the first row and having the same elemental arrangement as a row in which the first row is cyclically shifted by one according to the circulation period N; And a third row which is located adjacent to the second row and has the same elemental arrangement as the row in which the second row is cyclically shifted by one according to the circulation period N, and which is different from the first row.

실시 예로서, 상기 디코딩 결과에 따라, 상기 제 1 읽기 전압과는 다른 제 2 읽기 전압을 이용하여 상기 저장된 데이터를 다시 읽는 단계; 상기 다시 읽혀진 데이터에 대해 상기 패리티 검사 행렬(Parity Check Matrix)을 사용하여 저밀도 패리티 검사 디코딩을 수행하는 단계를 포함한다.The method may further include reading the stored data again using a second read voltage different from the first read voltage according to the decoding result. And performing low density parity check decoding on the re-read data using the parity check matrix.

본 발명이 다른 실시 예에 다른 반도체 메모리 시스템의 데이터 읽기 방법은 정상 읽기 전압들을 이용하여 상기 반도체 메모리 시스템에 저장된 데이터를 읽는 단계; 상기 읽혀진 데이터의 에러 정정을 위한 패리티 검사 행렬(Parity Check Matrix)을 복원하는 단계; 상기 복원된 패리티 검사 행렬(Parity Check Matrix)을 사용하여, 상기 읽혀진 데이터에 대한 저밀도 패리티 검사(Low Density Parity Check) 디코딩을 수행하는 단계; 및 상기 디코딩 결과에 따라, 상기 읽혀진 데이터의 에러를 정정한 결과를 출력하는 단계를 포함하되, 상기 저밀도 패리티 검사 행렬을 복원하는 단계는 상기 저밀도 패리티 검사 행렬의 저장된 적어도 하나의 행을 읽는 단계; 및 상기 저밀도 패리티 검사 행렬의 나머지 행들이 각각 상기 읽은 적어도 하나의 행을 행 방향으로 1 이상의 크기만큼 순환 시프트시킨 형태의 원소 배열을 갖도록, 상기 저밀도 패리티 검사 행렬을 복원하는 단계를 포함하되, 상기 적어도 하나의 행은 리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 코드 워드를 심볼 위치 벡터로 변환한 이진(binary) 순열이다.According to another embodiment of the present invention, there is provided a method of reading data from a semiconductor memory system, comprising: reading data stored in the semiconductor memory system using normal read voltages; Restoring a parity check matrix for error correction of the read data; Performing Low Density Parity Check (LDPC) decoding on the read data using the recovered parity check matrix; And outputting a result of correcting the error of the read data according to the decoding result, wherein the step of reconstructing the low density parity check matrix comprises: reading at least one row stored in the low density parity check matrix; And restoring the low density parity check matrix so that the remaining rows of the low density parity check matrix each have an array of elements in the form of a cyclic shift of at least one row read in the row direction by at least one size, One row is a binary permutation that converts a code word generated according to the Reed-Solomon code to a symbol position vector.

실시 예로서, 상기 복원된 패리티 검사 행렬은 N×M 크기를 갖고 병렬로 배열된 제 1 및 제 2 서브 행렬을 포함하고(단, N, M은 2 이상의 정수), 상기 제 1 서브 행렬은 상기 적어도 하나의 행; 상기 적어도 하나의 행과 인접하여 위치하고, 상기 적어도 하나의 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖는 제 1 시프트 행; 및 상기 제 1 시프트 행과 인접하여 위치하고, 상기 제 1 시프트 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖되, 상기 적어도 하나의 행과는 다른 제 2 시프트 행을 포함하고, 상기 제 2 서브 행렬은 상기 제 1 서브 행렬과 인접하여 위치하며, 상기 제 1 서브 행렬을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖는다.The restored parity check matrix may include first and second sub-matrices having N × M sizes and arranged in parallel (where N and M are integers greater than or equal to 2), the first sub- At least one row; A first shift row positioned adjacent to the at least one row and having the same elemental arrangement as the row cyclically shifted by one according to the cyclic period N; And a second shift row, which is located adjacent to the first shift row and has the same elemental arrangement as the row in which the first shift row is cyclically shifted by one according to the rotation cycle N, but which is different from the at least one row The second sub-matrix is located adjacent to the first sub-matrix, and has the same element arrangement as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to the circulation period M.

본 발명에 따르면, RS-LDPC 디코더를 위한 단순 구조의 패리티 검사 행렬이 제안되고, 제안된 패리티 검사 행렬을 이용하여 반도체 메모리 시스템이 효율적으로 RS-LDPC 디코딩을 수행할 수 있다.According to the present invention, a simple structure parity check matrix for an RS-LDPC decoder is proposed, and the semiconductor memory system can efficiently perform RS-LDPC decoding using the proposed parity check matrix.

또한, 반도체 메모리 시스템의 RS-LDPC 디코더가 낮은 하드웨어 복잡도로 구현될 수 있다.In addition, the RS-LDPC decoder of the semiconductor memory system can be implemented with low hardware complexity.

또한, 데이터 디코딩시 반도체 메모리 시스템의 RS-LDPC 디코더에 요구되는 연산 처리량이 감소될 수 있다. In addition, the amount of computation required for the RS-LDPC decoder of the semiconductor memory system during data decoding can be reduced.

도 1은 본 발명의 실시 예에 따른 반도체 메모리 시스템(1000)을 보여주는 블록도이다.
도 2는 본 발명에 따른 반도체 메모리 시스템이 데이터를 디코딩하는 방법을 나타내는 블록도이다.
도 3은 도 1 에 도시된 ECC 디코더(300)를 보여주는 블록도이다.
도 4는 도 1에 도시된 반도체 메모리 장치의 읽기 방법을 나타내는 순서도이다.
도 5는 LDPC 부호의 패리티 검사 행렬 구조를 나타내는 위한 도면이다.
도 6은 도 5에 도시된 패리티 검사 행렬에 따른 변수 노드들과 검사 노드들 간의 연결 관계를 나타내는 태너 그래프이다.
도 7은 RS-LDPC 부호에 따른 일반적인 패리티 검사 행렬을 나타내는 도면이다.
도 8은 도 7에 도시된 패리티 검사 행렬의 복수의 서브 행렬 중 제 1 서브 행렬(410)을 구체적으로 나타내는 도면이다.
도 9 내지 도 11은 본 발명에 따라 제안된 패리티 검사 행렬을 나타내는 도면이다.
도 12는 본 발명에 의해 제안된 패리티 검사 행렬(500)의 생성 방법을 나타내는 순서도이다.
도 13은 본 발명에 따른 패리티 검사 행렬을 예시적으로 나타내는 도면이다.
도 14는 본 발명의 실시 예에 따른 도 3의 디코더를 나타내는 블록도이다.
도 15는 도 14에 도시된 스위치 네트워크를 예시적으로 나타내는 블록도이다.
도 16 및 도 17은 본 발명에 따른 스위치 네트워크의 고정 배선 블록을 예시적으로 나타내는 도면이다.
도 18은 도 1에 도시된 반도체 메모리 시스템(1000)의 응용 예를 보여주는 블록도이다.
도 19는 본 발명의 실시 예에 따른 메모리 카드(3000)를 보여준다.
도 20은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(Solid State Drive)를 나타내는 블록도이다.
도 21은 본 발명의 실시 예에 따른 반도체 메모리 시스템 및 그것을 포함하는 컴퓨팅 시스템의 개략적인 구성을 나타내는 도면이다.
1 is a block diagram showing a semiconductor memory system 1000 according to an embodiment of the present invention.
2 is a block diagram illustrating a method for decoding data in a semiconductor memory system in accordance with the present invention.
3 is a block diagram showing the ECC decoder 300 shown in FIG.
4 is a flowchart showing a reading method of the semiconductor memory device shown in FIG.
5 is a diagram illustrating a parity check matrix structure of an LDPC code.
FIG. 6 is a tanner graph showing connection relationships between variable nodes and check nodes according to the parity check matrix shown in FIG. 5. FIG.
7 is a diagram illustrating a general parity check matrix according to an RS-LDPC code.
FIG. 8 is a diagram specifically illustrating a first sub-matrix 410 among a plurality of sub-matrices of the parity check matrix shown in FIG.
9 to 11 are diagrams illustrating a parity check matrix proposed according to the present invention.
12 is a flowchart showing a method of generating the parity check matrix 500 proposed by the present invention.
13 is a diagram illustrating a parity check matrix according to an embodiment of the present invention.
Figure 14 is a block diagram illustrating the decoder of Figure 3 in accordance with an embodiment of the present invention.
15 is a block diagram exemplarily showing the switch network shown in Fig.
Figs. 16 and 17 are diagrams illustrating a fixed wiring block of a switch network according to the present invention.
18 is a block diagram showing an application example of the semiconductor memory system 1000 shown in FIG.
19 shows a memory card 3000 according to an embodiment of the present invention.
20 is a block diagram showing a solid state drive according to an embodiment of the present invention.
21 is a diagram showing a schematic configuration of a semiconductor memory system and a computing system including the semiconductor memory system according to an embodiment of the present invention.

앞의 일반적인 설명 및 다음의 상세한 설명들은 모두 청구된 발명의 부가적인 설명을 제공하기 위한 예시적인 것이다. 그러므로 본 발명은 여기서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 여기서 소개되는 실시 예는 개시된 내용이 철저하고 완전해 질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. The foregoing general description and the following detailed description are exemplary and are intended to provide further explanation of the claimed invention. Therefore, the present invention is not limited to the embodiments described herein but may be embodied in other forms. The embodiments disclosed herein are provided so that the disclosure can be thorough and complete, and will fully convey the scope of the invention to those skilled in the art.

본 명세서에서, 어떤 부분이 어떤 구성요소를 포함한다고 언급되는 경우에, 이는 그 외의 다른 구성요소를 더 포함할 수도 있다는 것을 의미한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.In this specification, when it is mentioned that a certain element includes an element, it means that it may further include other elements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른 반도체 메모리 시스템(1000)을 보여주는 블록도이다. 도 1을 참조하면, 반도체 메모리 시스템(1000)은 저장 장치(100) 및 컨트롤러(200)를 포함한다. 실시 예로서, 저장 장치(100)는 불휘발성 메모리 장치(예를 들어, 플래시 메모리 장치)를 포함할 수 있다. 이러한 경우, 저장 장치(100)는 메모리 셀들의 문턱 전압을 조절함으로써 데이터를 저장한다.1 is a block diagram showing a semiconductor memory system 1000 according to an embodiment of the present invention. Referring to FIG. 1, a semiconductor memory system 1000 includes a storage device 100 and a controller 200. As an example, the storage device 100 may include a non-volatile memory device (e.g., a flash memory device). In this case, the storage device 100 stores data by adjusting the threshold voltages of the memory cells.

컨트롤러(200)는 호스트(Host) 및 저장 장치(100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(200)는 저장 장치(100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(200)는 저장 장치(100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(200)는 저장 장치(100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(200)는 저장 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.The controller 200 is connected to a host and a storage device 100. In response to a request from a host (Host), the controller 200 is configured to access the storage device 100. For example, the controller 200 is configured to control the read, write, erase, and background operations of the storage device 100. The controller 200 is configured to provide an interface between the storage device 100 and a host. The controller 200 is configured to drive firmware for controlling the storage device 100.

예시적으로, 컨트롤러(200)는 저장 장치(100)에 제어 신호 및 어드레스를 제공하도록 구성된다. 그리고, 컨트롤러(200)는 저장 장치(100)와 데이터를 교환하도록 구성된다.Illustratively, the controller 200 is configured to provide a control signal and address to the storage device 100. The controller 200 is configured to exchange data with the storage device 100.

컨트롤러(200)는 에러 정정 코드 디코더(Error Correction Code decoder, 이하 ECC 디코더, 300)를 포함한다. ECC 디코더(300)는 저장 장치(100)로부터 읽어낸 데이터에 대해 에러 정정 코드(Error Correcting Code, 이하 ECC)를 이용한 디코딩을 수행한다. ECC 디코더(300)는 디코딩을 수행하여, 읽어낸 데이터의 에러를 정정한다. ECC 디코더(300)는 RS-LDPC (Reed Solomon-Low Density Parity Check) 부호를 이용하여 디코딩을 수행한다.The controller 200 includes an error correction code decoder (ECC decoder) 300. The ECC decoder 300 performs decoding using an error correcting code (ECC) on the data read from the storage device 100. The ECC decoder 300 performs decoding to correct errors in the read data. The ECC decoder 300 performs decoding using an RS-LDPC (Reed Solomon-Low Density Parity Check) code.

컨트롤러(200)는 특정한 통신 규격에 따라 호스트(Host)와 통신한다. 예를 들어, 컨트롤러(200)는 USB (Universal Serial Bus), MMC (multimedia card), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 그리고 파이어와이어(Firewire) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 호스트(Host)와 통신한다.The controller 200 communicates with a host according to a specific communication standard. For example, the controller 200 may be a universal serial bus (USB), a multimedia card (MMC), a peripheral component interconnection (PCI), a PCI-Express (PCI-E), an Advanced Technology Attachment Communicates with a host through at least one of various communication standards such as ATA, small computer small interface (SCSI), enhanced small disk interface (ESDI), integrated drive electronics (IDE), and firewire .

본 발명에서는 일반적인 패리티 검사 행렬보다 훨씬 단순화된 구조를 갖는 패리티 검사 행렬이 제안된다. 본 발명에서 제안하는 패리티 검사 행렬은 RS-LDPC 부호에 따라 생성되므로, 에러 정정 능력이 뛰어난 RS-LDPC 부호의 특징을 그대로 유지한다. 또한, 본 발명에서는 RS-LDPC 부호의 특징인 랜덤한 패리티 검사 행렬 구조를 개선하여, 제안된 패리티 검사 행렬이 규칙적이고 단순한 구조를 갖도록 한다. In the present invention, a parity check matrix having a much simpler structure than a general parity check matrix is proposed. Since the parity check matrix proposed in the present invention is generated according to the RS-LDPC code, it maintains the characteristics of the RS-LDPC code with excellent error correction capability. In addition, the present invention improves the random parity check matrix structure, which is a feature of the RS-LDPC code, so that the proposed parity check matrix has a regular and simple structure.

제안된 패리티 검사 행렬은 ECC 디코더(300)에 적용되어, LDPC 디코딩을 수행하기 위해 사용된다. 이때, ECC 디코더(300)는 RS-LDPC 부호의 뛰어난 에러 정정 성능을 유지하면서도, 패리티 검사 행렬의 단순화된 구조 덕분에 디코딩시 필요한 연산량을 최소화할 수 있다. 따라서, 메모리 반도체 시스템(1000)의 디코딩 효율이 향상될 수 있다. The proposed parity check matrix is applied to the ECC decoder 300 and used to perform LDPC decoding. At this time, the ECC decoder 300 can minimize the amount of calculation required for decoding due to the simplified structure of the parity check matrix, while maintaining excellent error correction performance of the RS-LDPC code. Thus, the decoding efficiency of the memory semiconductor system 1000 can be improved.

또한, ECC 디코더(300)는 패리티 검사 행렬의 단순화된 구조 덕분에 변수 노드와 검사 노드를 연결하는 스위치 네트워크를 낮은 하드웨어 복잡도로 구현할 수 있다. 따라서, 메모리 반도체 시스템(1000)의 전체적인 하드웨어 복잡도가 감소하고, ECC 디코더(300)를 구현하기 위해 필요한 칩 면적이 감소될 수 있다.Also, because of the simplified structure of the parity check matrix, the ECC decoder 300 can implement the switch network connecting the variable node and the check node with low hardware complexity. Thus, the overall hardware complexity of the memory semiconductor system 1000 is reduced, and the chip area required to implement the ECC decoder 300 can be reduced.

도 2는 본 발명에 따른 반도체 메모리 시스템이 데이터를 디코딩하는 방법을 나타내는 블록도이다. 도 2를 참조하면, 메모리 반도체 시스템은 도 1에 도시된 저장 장치(100), ECC 디코더(300) 외에도 인코더(400)를 더 포함할 수 있다. 실시 예로서, 인코더(400)는 컨트롤러(200, 도 1 참조)에 포함될 수 있다.2 is a block diagram illustrating a method for decoding data in a semiconductor memory system in accordance with the present invention. Referring to FIG. 2, the memory semiconductor system may further include an encoder 400 in addition to the storage device 100, ECC decoder 300 shown in FIG. As an example, the encoder 400 may be included in the controller 200 (see FIG. 1).

먼저 호스트(Host, 도 1 참조)로부터 데이터가 입력되면, 입력된 데이터는 인코더(400)에 의해 인코딩된다. 이때, 인코더(400)는 패리티 검사 행렬을 사용하여, 입력된 데이터에 대해 LDPC 인코딩을 수행한다. 그리고, 부호화된 데이터는 쓰기 데이터(WD)로서 저장 장치(100)에 프로그램된다. 이때, 쓰기 데이터에는 디코딩을 위한 패리티 비트들이 포함될 수 있다. First, when data is input from the host (see FIG. 1), the input data is encoded by the encoder 400. FIG. At this time, the encoder 400 performs LDPC encoding on the input data using the parity check matrix. Then, the encoded data is programmed into the storage device 100 as write data WD. At this time, parity bits for decoding may be included in the write data.

그리고, 읽기 명령이 수신되면, 반도체 메모리 시스템(1000)은 저장 장치(100)에 저장된 데이터를 읽기 데이터(RD)로서 읽어낸다. 이때, 읽기 데이터(RD)에는 다양한 이유로 발생된 에러(E)가 포함될 수 있다. 예를 들어, 쓰기 데이터(WD)가 프로그램될 때의 오동작 또는 쓰기 데이터(WD)가 저장 장치(100)에 저장되는 동안의 데이터 손실에 의해 에러(E)가 발생할 수 있다. 또는, 읽기 데이터(RD)를 읽어내는 읽기 동작에서의 오동작에 의해 에러(E)가 발생할 수 있다. When the read command is received, the semiconductor memory system 1000 reads the data stored in the storage device 100 as read data RD. At this time, the read data RD may include an error E generated for various reasons. For example, an error E may occur due to a malfunction occurring when the write data WD is programmed or a data loss while the write data WD is stored in the storage device 100. [ Alternatively, an error E may occur due to a malfunction in the read operation of reading the read data RD.

디코더(300)는 이러한 에러(E)를 제거하기 위해, 패리티 검사 행렬을 사용하여, 읽기 데이터(RD)에 LDPC 디코딩을 수행한다. 이때, 사용되는 패리티 검사 행렬은 인코딩에서 사용된 것과 동일하다. 디코딩된 결과는 디코딩된 데이터(Data’)로서 출력된다.The decoder 300 performs LDPC decoding on the read data RD using a parity check matrix to eliminate such error E. At this time, the parity check matrix used is the same as that used in the encoding. The decoded result is output as decoded data Data '.

이때, 디코터(300)의 디코딩 성능은 패리티 검사 행렬의 구조에 의해 크게 영향을 받는다. 앞서 설명한 바와 같이, RS-LDPC 부호를 사용하여 만들어진 패리티 검사 행렬은 일반적인 LDPC 부호에 의한 패리티 검사 행렬보다 에러 정정 능력이 뛰어나지만, 행렬 구조가 복잡한 단점이 있다. 패리티 검사 행렬의 구조가 복잡하면, 디코더(300)는 읽기 데이터(RD)의 디코딩을 위해 보다 많은 연산을 필요로 한다. 또한, LDPC 디코딩에 있어서, 복잡한 패리티 검사 행렬의 구조는 변수 노드와 검사 노드 사이의 네트워크 연결에 있어서 하드웨어 복잡도를 증가시킨다. At this time, the decoding performance of the decoder 300 is greatly affected by the structure of the parity check matrix. As described above, the parity check matrix created using the RS-LDPC code is superior to the parity check matrix using the general LDPC code, but has a complicated matrix structure. If the structure of the parity check matrix is complicated, the decoder 300 requires more operations for decoding the read data RD. Also, in LDPC decoding, the complexity of the parity check matrix structure increases the hardware complexity in the network connection between the variable node and the check node.

본 발명에서는 RS-LDPC 부호의 특징을 유지하면서도, 서브 행렬 단위로 블록 순환(Block Circulation) 구조를 갖고, 각각의 서브 행렬은 준 순환하는(Quasi-Cyclic) 구조를 갖는 패리티 검사 행렬을 제안한다. 이러한 패리티 검사 행렬은 매우 단순한 행렬 구조를 가진다. 따라서, 본 발명의 디코더(300는 제안된 패리티 검사 행렬을 사용하여 RS-LDPC 디코딩을 수행함으로서, 필요한 연산량 및 하드웨어 복잡도를 크게 감소시킬 수 있다. 본 발명에서 제안하는 패리티 검사 행렬에 대해서는 도 5내지 도 13에서 상세히 후술될 것이다.The present invention proposes a parity check matrix having a block circulation structure in units of sub-matrices and each sub-matrix having a quasi-cyclic structure while maintaining the characteristics of the RS-LDPC code. The parity check matrix has a very simple matrix structure. Therefore, the decoder 300 of the present invention can greatly reduce the required computational complexity and hardware complexity by performing RS-LDPC decoding using the proposed parity check matrix. The parity check matrix proposed in the present invention is shown in FIGS. Will be described later in detail in Fig.

도 3은 도 1 에 도시된 ECC 디코더(300)를 보여주는 블록도이다. 도 3을 참조하면, ECC 디코더(300)는 읽기 데이터 관리자(310), 우도값(Log Likelihood Value) 사상기(320), 디코더(330)를 포함한다.3 is a block diagram showing the ECC decoder 300 shown in FIG. Referring to FIG. 3, the ECC decoder 300 includes a read data manager 310, a log likelihood value mapper 320, and a decoder 330.

읽기 데이터 관리자(310)는 저장 장치(100)로부터 읽어낸 읽기 데이터(RD, 도 1 참조)를 수신하여 저장한다. 읽기 데이터(RD)는 제 1 읽기 데이터(RD1) 및 제 2 읽기 데이터(RD2)를 포함할 수 있다. The read data manager 310 receives and stores the read data RD (see FIG. 1) read from the storage device 100. The read data RD may include first read data RD1 and second read data RD2.

경판정(Hard Decision)이 수행될 때, 읽기 데이터 관리자(310)는 정상 읽기 전압을 사용하여 읽어낸 데이터(RD1)를 저장 장치(100)로부터 수신하여 제 1 읽기 데이터(RD1)로서 저장한다. 저장된 제 1 읽기 데이터(RD1)는 경판정 또는 연판정(Soft Decision) 시에 우도값 사상기(320)에 제공될 수 있다. When Hard Decision is performed, the read data manager 310 receives the data RD1 read using the normal read voltage from the storage device 100 and stores it as the first read data RD1. The stored first read data RD1 may be provided to the likelihood value mapper 320 at the time of hard decision or soft decision.

또한, 연판정이 수행될 때, 읽기 데이터 관리자(310)는 부분 읽기 전압을 통해 읽어낸 데이터를 저장 장치(100)로부터 수신하여 제 2 읽기 데이터(RD2)로서 저장한다. 여기서, 부분 읽기 전압은 정상 읽기 전압과 인접하되 정상 읽기 전압과는 다른 전압 레벨을 갖는 전압을 의미한다. 연판정이 수행될 때, 읽기 데이터 관리자(310)는 제 2 읽기 데이터(RD2)를 우도값 사상기(320)에 제공한다.Further, when the soft decision is performed, the read data manager 310 receives the data read through the partial read voltage from the storage device 100 and stores it as the second read data RD2. Here, the partial read voltage means a voltage which is adjacent to the normal read voltage but has a voltage level different from the normal read voltage. When the soft decision is performed, the read data manager 310 provides the second read data RD2 to the likelihood value mapper 320. [

우도값 사상기(320)는 제공된 읽기 데이터(RD1, RD2)에 우도값들을 사상하도록 구성된다. 실시 예로서, 우도값 사상기(320)는 경판정 시에 사상될 우도값들을 저장하는 경판정 우도값 레지스터(미도시) 및 연판정 시에 사상될 우도값들을 저장하는 연판정 우도값 레지스터(미도시)를 포함할 수 있다.The likelihood value mapper 320 is configured to map the likelihood values to the provided read data RD1 and RD2. As an embodiment, the likelihood value mapper 320 includes a lightness decision likelihood value register (not shown) for storing likelihood values to be mapped at the time of hard decision, and a soft decision value register (not shown) for storing likelihood values to be mapped at the time of soft decision Not shown).

실시 예로서, 경판정 시에, 우도값 사상기(320)는 읽기 데이터 관리자(310)로부터 제 1 읽기 데이터(RD1)를 수신한다. 우도값 사상기(320)는 제 1 읽기 데이터(RD1)의 각 비트의 값에 따라, 제 1 읽기 데이터(RD1)를 대응되는 우도값들로 사상한다. As an embodiment, at the time of the hard decision, the likelihood value mapper 320 receives the first read data RD1 from the read data manager 310. [ The likelihood value mapper 320 maps the first read data RD1 to corresponding likelihood values according to the value of each bit of the first read data RD1.

연판정 시에, 우도값 사상기(320)는 읽기 데이터 관리자(310)로부터 제 2 읽기 데이터(RD2)를 수신한다. 우도값 사상기(320)는 제 2 읽기 데이터(RD2)의 각 비트의 값에 따라, 제 2 읽기 데이터(RD2)를 대응되는 우도값들로 사상한다. In the soft decision, the likelihood value mapper 320 receives the second read data RD2 from the read data manager 310. [ The likelihood value mapper 320 maps the second read data RD2 to corresponding likelihood values according to the value of each bit of the second read data RD2.

경판정 또는 연판정 시에, 우도값 사상기(320)에 의해 사상된 결과는 디코더(330)에 우도값 데이터(LLR)로서 출력된다.The result mapped by the likelihood value mapper 320 is output to the decoder 330 as likelihood value data LLR.

디코더(330)는 경판정 또는 연판정 시에 우도값 사상기(320)로부터 우도값 데이터(LLR)를 수신한다. 판정부(330)는 수신된 우도값 데이터(LLR)를 LDPC 디코딩한다. 경판정 및 연판정 시에 각각의 우도값 데이터(LLR)는 동일한 방법 및 장치를 이용하여 LDPC 디코딩된다.The decoder 330 receives the likelihood value data LLR from the likelihood value mapper 320 at the time of hard decision or soft decision. The determining section 330 performs LDPC decoding on the received likelihood value data (LLR). In the hard decision and soft decision, each likelihood value data (LLR) is LDPC decoded using the same method and apparatus.

판정부(330)는 LDPC 디코딩 시에, 패리티 검사 행렬에 따라 검사 노드들(check nodes) 및 변수 노드들(variable nodes)의 갱신을 수행한다. 판정부(330)는 갱신 결과(예를 들어, 사후 확률(posteriori probability))에 따라, 잠정 디코딩을 수행하고, 잠정 디코딩된 데이터와 패리티 검사 행렬을 연산하여 연산 결과에 따라 디코딩이 올바르게 수행되었는지 판단한다. The determining unit 330 performs update of check nodes and variable nodes according to a parity check matrix at the time of LDPC decoding. The determining unit 330 performs the tentative decoding according to the update result (for example, the posteriori probability), calculates the tentatively decoded data and the parity check matrix, and determines whether the decoding is correctly performed do.

실시 예로서, 패리티 검사 행렬과의 연산 결과가 영행렬이면, 디코딩이 올바르게 수행된 것으로 판단한다. 그렇지 않으면, 디코딩이 올바르게 수행되지 않은 것으로 판단한다. As an embodiment, if the operation result with the parity check matrix is a zero matrix, it is determined that the decoding is correctly performed. Otherwise, it is determined that decoding is not performed correctly.

디코딩이 올바르게 수행되면, 디코더(330)는 디코딩된 데이터를 디코딩된 데이터(CD)로서 출력한다. 올바른 디코딩이 수행되지 않았으면(즉, 읽기 데이터(RD)의 에러가 모두 정정되지 않았으면), 디코더(330)는 검사 노드들 및 변수 노드들의 갱신을 다시 수행한다.If the decoding is performed correctly, the decoder 330 outputs the decoded data as decoded data (CD). If correct decoding has not been performed (i.e., all errors in the read data RD have not been corrected), the decoder 330 again performs updates of the check nodes and variable nodes.

위와 같은 검사 노드들 및 변수 노드들의 갱신과 잠정 디코딩은 반복적으로(iteratively) 수행된다. 검사 노드들 및 변수 노드들의 갱신과 잠정 디코딩은 하나의 디코딩 루프를 구성할 수 있다.The update and provisional decoding of the above check nodes and variable nodes are performed iteratively. The update and tentative decoding of check nodes and variable nodes can constitute one decoding loop.

디코더(330)에서 경판정이 수행되고, 경판정에 따른 패리티 검사가 실패할 때, 디코더(330)는 페일 메시지(Fail)를 읽기 데이터 관리자(310)에 전송한다. 읽기 데이터 관리자(310)는 페일 메시지(Fail)에 응답하여 컨트롤러(200, 도 1 참조)에 연판정을 위한 읽기 요청을 전송한다. 또는, 디코더(330)에서 경판정이 수행되고, 경판정에 따른 패리티 검사가 실패할 때, 디코더(330)는 페일 메시지(Fail)를 컨트롤러(200)에 직접 전송한다. 컨트롤러(200)는 페일 메시지(Fail) 또는 읽기 요청에 응답하여 연판정을 위한 읽기 동작을 준비할 것이다.When the hard decision is performed in the decoder 330 and the parity check in accordance with the hard decision is failed, the decoder 330 transmits a fail message (Fail) to the read data manager 310. The read data manager 310 sends a read request for soft decision to the controller 200 (see FIG. 1) in response to the fail message (Fail). Alternatively, when the hard decision is performed in the decoder 330 and the parity check according to the hard decision is failed, the decoder 330 directly transmits the fail message (Fail) to the controller 200. The controller 200 will prepare a read operation for a soft decision in response to a fail message (Fail) or a read request.

연판정이 수행될 때, 제 2 읽기 데이터(RD2)가 읽기 데이터 관리자(310)에 저장된다. 저장된 제 2 읽기 데이터(RD2)는 우도값 사상기(320)에 제공되어, 대응되는 우도값들을 사상하기 위해 사용된다. 실시 예로서, 연판정이 수행될 때, 제 1 읽기 데이터(RD1)가 제 2 읽기 데이터(RD2)와 함께 제공될 수 있다. When the soft decision is performed, the second read data RD2 is stored in the read data manager 310. [ The stored second read data RD2 is provided to the likelihood value mapper 320 and used to map the corresponding likelihood values. As an embodiment, when the soft decision is performed, the first read data RD1 may be provided together with the second read data RD2.

제 2 읽기 데이터(RD2)는 메모리 셀들의 문턱 전압들에 대한 정보를 추가적으로 얻기 위해 부분 읽기 전압을 사용하여 읽어낸 데이터이다. 연판정에서는 제 2 읽기 데이터(RD2)에 따른 추가 정보에 기반하여, 다양한 우도값들이 사상된다. 예를 들어, 하나의 메모리 셀이 정상 읽기 전압에 의해 '1'로 읽어졌지만, 부분 읽기 전압에 의해 '0'에 가까운 문턱 전압을 갖는 '1'인 것으로 읽어지면, 이러한 메모리 셀은 상대적으로 낮은 우도값을 갖도록 사상된다. 반면에, 하나의 메모리 셀이 정상 읽기 전압에 의해 '1'로 읽어지고, 부분 읽기 전압에 의해 '0'과 큰 차이가 있는 문턱 전압을 갖는 것으로 읽어지면, 이러한 메모리 셀은 상대적으로 높은 우도값을 갖도록 사상된다. 메모리 셀들의 문턱 전압들에 대한 추가 정보를 이용하므로, 연판정의 디코딩 정확도는 경판정의 디코딩 정확도보다 높다.The second read data RD2 is data read using the partial read voltage to additionally obtain information on the threshold voltages of the memory cells. In the soft decision, various likelihood values are mapped based on the additional information according to the second read data RD2. For example, if one memory cell is read as '1' by a normal read voltage but read as a '1' with a threshold voltage close to '0' by a partial read voltage, And is mapped to have a likelihood value. On the other hand, if one memory cell is read as '1' by the normal read voltage and read as having a threshold voltage that is significantly different from '0' by the partial read voltage, then this memory cell has a relatively high likelihood value Respectively. As additional information on the threshold voltages of the memory cells is used, the decoding accuracy of the soft decision is higher than the hard decision definition decoding accuracy.

본 발명에서, 디코더(330)은 RS-LDPC 부호에 따르면서도 단순한 행렬 구조를 갖는 패리티 검사 행렬을 이용한다. 따라서, 디코더(330)는 높은 에러 정정 능력을 유지하면서, 필요한 연산량을 감소시킬 수 있다. 후술하겠지만, 특히, 변수 노드들과 검사 노드들 간의 스위칭 네트워크를 매우 단순한 구조로 구현될 수 있으므로, 디코더(330)를 구현하기 위한 하드웨어 구성이 단순해지고, 필요한 하드웨어 면적이 감소될 수 있다.In the present invention, the decoder 330 uses a parity check matrix having a simple matrix structure according to an RS-LDPC code. Thus, the decoder 330 can reduce the required amount of computation while maintaining high error correction capability. In particular, since the switching network between the variable nodes and the check nodes can be implemented with a very simple structure, the hardware configuration for implementing the decoder 330 can be simplified, and the required hardware area can be reduced.

여기서 설명되지 않은 디코더(330)의 일반적인 구성 및 RS-LDPC 디코딩의 일반적인 방법은 당해 기술 분야에 널리 알려져 있으므로, 그에 대한 설명은 생략한다.The general configuration of the decoder 330 not described here and the general method of RS-LDPC decoding are well known in the art, and a description thereof will be omitted.

도 4는 도 1에 도시된 반도체 메모리 장치의 읽기 방법을 나타내는 순서도이다. 도 4를 참조하면, 반도체 메모리 장치(1000)의 읽기 방법은 S110 단계 내지 S180 단계를 포함한다. 4 is a flowchart showing a reading method of the semiconductor memory device shown in FIG. Referring to FIG. 4, the method of reading the semiconductor memory device 1000 includes steps S110 to S180.

S110 단계에서, 반도체 메모리 장치(1000)는 제 1 읽기 전압을 사용하여 저장 장치(100, 도 1 참조)에 저장된 데이터를 제 1 읽기 데이터로서 읽어낸다. 여기서 제 1 읽기 전압은 앞에서 설명한 정상 읽기 전압일 수 있다.In step S110, the semiconductor memory device 1000 reads the data stored in the storage device 100 (see FIG. 1) using the first read voltage as the first read data. Here, the first read voltage may be the normal read voltage described above.

S120 단계에서, 반도체 메모리 장치(1000)는 제 1 읽기 데이터에 대해 제안된 패리티 검사 행렬을 이용하여 경판정을 수행한다. 이때, 제안된 패리티 검사 행렬은 단순한 행렬 구조를 가지므로, 경판정에 필요한 연산량이 감소하고 디코더(330, 도 3 참조)의 하드웨어 복잡도가 감소된다. 제안된 패리티 검사 행렬에 대한 구체적인 설명은 후술될 것이다.In step S120, the semiconductor memory device 1000 performs hard decision using the proposed parity check matrix for the first read data. At this time, since the proposed parity check matrix has a simple matrix structure, the amount of computation required for hard decision is reduced and the hardware complexity of the decoder 330 (see FIG. 3) is reduced. A detailed description of the proposed parity check matrix will be described later.

S130 단계에서, 반도체 메모리 장치(1000)는 경판정 결과 제 1 읽기 데이터에 대한 디코딩이 오류없이 수행되었는지 판단한다. 디코딩된 데이터에 오류가 없으면 읽기 방법은 S180 단계로 진행한다. 디코딩된 데이터에 오류가 있으면 읽기 방법은 S140 단계로 진행한다. In step S130, the semiconductor memory device 1000 determines whether decoding of the first read data is performed without error, as a result of the hard decision. If there is no error in the decoded data, the method proceeds to step S180. If there is an error in the decoded data, the reading method proceeds to step S140.

S140 단계에서, 반도체 메모리 장치(1000)는 제 2 읽기 전압을 사용하여, 저장 장치(100)에 저장된 데이터를 제 2 읽기 데이터로서 읽어낸다. 여기서, 제 2 읽기 전압은 앞에서 설명한 부분 읽기 전압일 수 있다.In step S140, the semiconductor memory device 1000 reads the data stored in the storage device 100 as the second read data, using the second read voltage. Here, the second read voltage may be the partial read voltage described above.

S150 단계에서, 반도체 메모리 장치(1000)는 제 2 읽기 데이터에 대해 제안된 패리티 검사 행렬을 이용하여 연판정을 수행한다.In step S150, the semiconductor memory device 1000 performs soft decision using the proposed parity check matrix for the second read data.

S160 단계에서, 반도체 메모리 장치(1000)는 연판정 결과 제 1 및 제 2 읽기 데이터에 대한 디코딩이 오류없이 수행되었는지 판단한다. 디코딩된 데이터에 오류가 없으면 읽기 방법은 S180 단계로 진행한다. 디코딩된 데이터에 오류가 있으면 읽기 방법은 S170 단계로 진행한다. In step S160, the semiconductor memory device 1000 determines whether the decoding of the first and second read data is performed without error, as a result of the soft decision. If there is no error in the decoded data, the method proceeds to step S180. If there is an error in the decoded data, the method proceeds to step S170.

S170 단계에서, 반도체 메모리 장치(1000)는 데이터 읽기가 실패한 것으로 판단하고, 읽기 에러 메시지를 출력한다. S170 단계가 종료되면, 읽기 방법은 종료된다.In step S170, the semiconductor memory device 1000 determines that data reading has failed and outputs a read error message. When step S170 is finished, the reading method ends.

다시 S140 단계 또는 S160 단계로 돌아가서, 읽기 방법이 S180 단계로 진행하면, 반도체 메모리 장치(1000)는 디코딩된 데이터를 출력하고, 읽기 방법은 종료된다.Returning to step S140 or step S160, if the reading method proceeds to step S180, the semiconductor memory device 1000 outputs the decoded data, and the reading method ends.

상기와 같은 구성에 따르면, 본 발명의 실시 예에 따른 반도체 메모리 장치(1000)의 읽기 방법이 제공된다. 이때, 읽기 방법은 제안된 패리티 검사 행렬을 사용하여, RS-LDPC 디코딩을 수행한다. 그리고, 제안된 패리티 검사 행렬은 단순화된 행렬 구조를 가지므로, 본 발명에 따른 읽기 방법은 RS-LDPC에 필요한 연산량을 감소시키고 디코더(330)의 하드웨어 복잡도도 크게 감소시킬 수 있다.According to the above configuration, a reading method of the semiconductor memory device 1000 according to the embodiment of the present invention is provided. At this time, the reading method performs RS-LDPC decoding using the proposed parity check matrix. In addition, since the proposed parity check matrix has a simplified matrix structure, the reading method according to the present invention can reduce the amount of computation required for RS-LDPC and greatly reduce the hardware complexity of the decoder 330. [

도 5는 LDPC 부호의 패리티 검사 행렬 구조를 나타내는 위한 도면이다. 도 5를 참조하면, 패리티 검사 행렬(H)과 검사 노드들(C1, C2, C3) 및 변수 노드들(V1, V2, V3, V4, V5)이 도시되어 있다.5 is a diagram illustrating a parity check matrix structure of an LDPC code. Referring to FIG. 5, a parity check matrix H, check nodes C1, C2, and C3, and variable nodes V1, V2, V3, V4, and V5 are illustrated.

패리티 검사 행렬(H)의 원소들 중 제 1 행의 원소들, 제 2 행의 원소들, 그리고 제 3 행의 원소들은 각각 제 1 내지 제 3 검사 노드들(C1, C2, C3)을 형성한다. 패리티 검사 행렬(H)의 원소들 중 제 1 내지 제 5 열의 원소들은 각각 제 1 내지 제 5 변수 노드들(V1, V2, V3, V4, V5)을 형성한다.Elements of the first row, the elements of the second row, and the elements of the third row among the elements of the parity check matrix H form first to third check nodes C1, C2, and C3, respectively . Elements of the first through fifth columns among the elements of the parity check matrix H form first through fifth variable nodes V1, V2, V3, V4, and V5, respectively.

도 5에 도시된 바와 같이, 패리티 검사 행렬(H)의 각 원소들은 검사 노드에 속하는 동시에 변수 노드에 속한다. 이때, 패리티 검사 행렬(H)의 어떤 원소가 '1'이면, 해당 원소가 속하는 검사 노드와 변수 노드는 서로 연결되는 것을 의미한다. 예를 들어, 패리티 검사 행렬(H)의 제 1 행 제 1 열의 원소(H11)가 '1'일 때, 원소(H11)가 속하는 제 1 검사 노드(C1) 및 제 1 변수 노드(V1)은 서로 연결된다.As shown in FIG. 5, each element of the parity check matrix H belongs to the check node and belongs to the variable node. At this time, if an element of the parity check matrix H is '1', it means that the check node and the variable node to which the corresponding element belongs are connected to each other. For example, when the element H 11 of the first row and first column of the parity check matrix H is '1', the first check node C1 to which the element H 11 belongs and the first variable node V 1 Are connected to each other.

한편, ECC 디코더(300)에서 사용되는 패리티 검사 행렬(H)은 도 5에 도시된 행렬로 한정되지 않는다. 예를 들어, 도 5의 패리티 검사 행렬(H)보다 더 낮은 밀도의 "1"을 갖는 패리티 검사 행렬이 ECC 디코더(300)에서 사용될 수 있다. ECC 디코더(300)에서 사용되는 패리티 검사 행렬의 크기도 도 5에 도시된 바와 같이 3×5 인 것으로 한정되지 않는다.Meanwhile, the parity check matrix H used in the ECC decoder 300 is not limited to the matrix shown in FIG. For example, a parity check matrix having a density of " 1 " which is lower than the parity check matrix H of FIG. 5 may be used in the ECC decoder 300. The size of the parity check matrix used in the ECC decoder 300 is not limited to 3 × 5 as shown in FIG.

도 6은 도 5에 도시된 패리티 검사 행렬에 따른 변수 노드들과 검사 노드들 간의 연결 관계를 나타내는 태너 그래프이다. 도 5 및 도 6을 참조하면 도시된 태너 그래프는 제 1 내지 제 3 검사 노드들(C1, C2, C3)과 제 1 내지 제 5 변수 노드들(V1, V2, V3, V4, V5) 사이의 연결 관계를 나타낸다. FIG. 6 is a tanner graph showing connection relationships between variable nodes and check nodes according to the parity check matrix shown in FIG. 5. FIG. Referring to FIGS. 5 and 6, the tanner graph shown in FIG. 5 is a graph showing the relationship between the first through third check nodes C1, C2, C3 and the first through fifth variable nodes V1, V2, V3, V4, It represents the connection relationship.

패리티 검사 행렬(H)의 어떤 원소(Hij)가 '1'이면, 태너 그래프에서 해당 원소(Hij)가 속하는 검사 노드(Ci)와 변수 노드(Vj)는 선으로 연결된다. LDPC 디코딩(RS-LDPC 디코딩을 포함)에서 변수 노드들은 데이터를 처리하여 연결된 검사 노드들로 처리된 데이터를 전송한다. 마찬가지로, LDPC 디코딩(RS-LDPC 디코딩을 포함)에서 검사 노드들은 검사 노드에서 처리된 데이터를 연결된 변수 노드들로 전송한다. 이처럼, LDPC 디코딩 과정에서, 검사 노드들과 변수 노드들은 연결 관계에 따라 반복적으로 데이터를 교환한다.If any element H ij of the parity check matrix H is '1', the check node C i to which the corresponding element H ij belongs in the tangent graph is connected to the variable node V j by a line. In LDPC decoding (including RS-LDPC decoding), the variable nodes process the data and transmit the processed data to the connected check nodes. Likewise, in LDPC decoding (including RS-LDPC decoding), check nodes transmit data processed by check nodes to connected variable nodes. As described above, in the LDPC decoding process, the check nodes and the variable nodes repeatedly exchange data according to the connection relationship.

다시 도 4 및 5를 참조하면, 제 1 검사 노드(C1)의 원소들 중 제 1 열, 제 3열 및 제 5 열의 원소 '1'이다. 따라서, 제 1 검사 노드(C1)는 제 1 변수 노드(V1), 제 3 변수 노드(V3) 및 제 5 변수 노드(V5)와 각각 연결된다. 마찬가지로, 제 2 검사 노드(C2)의 제 3 열 및 제 4 열의 원소가 '1'이므로, 제 2 검사 노드(C2)는 제 3 변수 노드(V3) 및 제 4 변수 노드(V4)와 각각 연결된다. 그리고, 제 3 검사 노드(C3)의 제 1 열, 제 3 열 및 제 4 열의 원소가 '1'이므로, 제 3 검사 노드(C3)는 제 1 변수 노드(V1), 제 3 변수 노드(V3) 및 제 4 변수 노드(V4)와 연결된다.Referring again to FIGS. 4 and 5, it is the element '1' in the first column, the third column and the fifth column among the elements of the first check node C1. Accordingly, the first check node C1 is connected to the first variable node V1, the third variable node V3, and the fifth variable node V5, respectively. Similarly, since the elements of the third and fourth columns of the second check node C2 are '1', the second check node C2 is connected to the third variable node V3 and the fourth variable node V4, respectively do. Since the elements of the first, third and fourth columns of the third check node C3 are '1', the third check node C3 includes the first variable node V1, the third variable node V3 And the fourth variable node V4.

실시 예로서, 검사 노드들(C1, C2, C3)와 변수 노드들(V1, V2, V3, V4, V5)의 연결은 별도의 스위치 네트워크를 통해 구현될 수 있다. 이때, 앞서 설명한 바와 같이 노드들 간의 연결 관계는 패리티 검사 행렬(H)의 원소들의 값 및 행렬 구조에 의존한다. 따라서, 패리티 검사 행렬(H)의 구조가 불규칙하고 복잡할수록, 스위치 네트워크의 하드웨어 구성 역시 복잡해지게 된다. As an embodiment, the connection of the check nodes C1, C2, C3 and the variable nodes V1, V2, V3, V4, V5 may be implemented through a separate switch network. At this time, as described above, the connection relation between the nodes depends on the values of the elements of the parity check matrix H and the matrix structure. Therefore, as the structure of the parity check matrix H becomes irregular and complex, the hardware configuration of the switch network becomes complicated.

도 7은 RS-LDPC 부호에 따른 일반적인 패리티 검사 행렬을 나타내는 도면이다. 도 7을 참조하면, 패리티 검사 행렬(400)은 복수의 서브 행렬(410, 420, 430)을 포함할 수 있다. 7 is a diagram illustrating a general parity check matrix according to an RS-LDPC code. Referring to FIG. 7, the parity check matrix 400 may include a plurality of sub-matrices 410, 420, and 430.

복수의 서브 행렬(410, 420, 430)의 각 행들은 리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 부호어(code word)를 심볼 위치 벡터로 변환한 이진(binary) 순열을 원소로서 갖는다.Each row of the plurality of submatrices 410, 420, and 430 has a binary permutation obtained by converting a code word generated according to a Reed-Solomon code into a symbol position vector as an element .

또한, 복수의 서브 행렬(410, 420, 430) 각각은 복수의 N×N 정사각 행렬을 포함한다. 여기서 N은 리드-솔로몬(Reed-Solomon, RS) 부호에 따라 부호어를 생성하기 위해 사용되는 갈루아 필드(Galois-field)의 원소의 개수를 의미한다.Each of the plurality of sub-matrices 410, 420, and 430 includes a plurality of N x N square matrices. Where N is the number of Galois-field elements used to generate codewords according to the Reed-Solomon (RS) code.

다시 도 7을 참조하면, 복수의 N×N 정사각 행렬 중 A 행렬을 구체화한 행렬(411)이 도시된다. 여기서는 예시적으로 N=8로 가정한다. 도 7에서 A 행렬(411)은 8개의 행과 8개의 열을 가진 격자 형태를 구성하는 복수의 사각형에 의해 표현된다. 이때, 검은색 사각형(a)은 대응되는 원소가 '1'인 것을 의미한다. 반대로, 하얀색 사각형(b)은 대응되는 원소가 '0'인 것을 의미한다. Referring again to FIG. 7, a matrix 411 embodying an A matrix among a plurality of N × N square matrixes is shown. Here, it is assumed that N = 8 as an example. In Fig. 7, the A matrix 411 is represented by a plurality of squares constituting a lattice form having 8 rows and 8 columns. In this case, the black square (a) means that the corresponding element is '1'. Conversely, a white square (b) means that the corresponding element is '0'.

예를 들면, 검은색 사각형(a)이 A 행렬(411)의 4번째 행 및 8번째 열에 위치하면, A 행렬(A)의 제 4 행 제 8 열의 원소는 '1'이다. 반대로, 하얀색 사각형(b)이 A 행렬(411)의 5번째 행 및 8번째 열에 위치하면, A 행렬(A)의 제 5 행 제 8 열의 원소는 '0'이다. For example, when the black square a is located in the 4th row and the 8th column of the A matrix 411, the elements in the 4th row and the 8th column of the A matrix A are '1'. Conversely, when the white square b is located in the fifth row and the eighth column of the A matrix 411, the elements of the fifth row and the eighth column of the A matrix A are '0'.

도 7의 A 행렬(411)에서 보듯이, RS-LDPC 부호에 따른 일반적인 패리티 검사 행렬(400)은 랜덤한 행렬 구조를 갖는다. 즉, 패리티 검사 행렬(400)은 원소들의 배열(원소들 각각이 '0'인지 또는 '1'인지)에 있어서 특정한 규칙성을 가지지 않는다. 패리티 검사 행렬(400)의 모든 N×N 정사각 행렬들이 A 행렬(411)과 동일하게 랜덤한 행렬 구조를 가지므로, 패리티 검사 행렬(400)을 사용하는 디코더는 매우 복잡한 하드웨어 구성을 가지며, 그에 따라 요구되는 연산량도 증가한다.As shown in A matrix 411 in FIG. 7, a general parity check matrix 400 according to an RS-LDPC code has a random matrix structure. That is, the parity check matrix 400 does not have a certain regularity in the arrangement of the elements (whether each element is '0' or '1'). Since all the N x N square matrices of the parity check matrix 400 have the same random matrix structure as the A matrix 411, the decoder using the parity check matrix 400 has a very complicated hardware configuration, The required amount of computation also increases.

도 8은 도 7에 도시된 패리티 검사 행렬의 복수의 서브 행렬 중 제 1 서브 행렬(410)을 구체적으로 나타내는 도면이다. 도 7을 참조하면, 제 1 서브 행렬(410)은 예시적으로 직렬로 배열된 6개의 N×N 정사각 행렬들을 포함한다. FIG. 8 is a diagram specifically illustrating a first sub-matrix 410 among a plurality of sub-matrices of the parity check matrix shown in FIG. Referring to FIG. 7, the first sub-matrix 410 includes six N x N square matrices, which are arranged in an illustrative manner.

도 8에 따르면, 제 1 서브 행렬(410)의 제 1 행(411)은 6개의 N×N 정사각 행렬들의 제 1 행들을 직렬로 배열한 것과 동일한 행렬 구조(또는, 원소 배열)를 갖는다. 마찬가지로, 제 1 서브 행렬(410)의 제 2 행(412)은 6개의 N×N 정사각 행렬들의 제 2 행들을 직렬로 배열한 것과 동일한 행렬 구조(또는, 원소 배열)를 갖는다. 즉, 제 1 서브 행렬(410)의 제 p 행은 6개의 N×N 정사각 행렬들의 제 p 행들을 직렬로 배열한 것과 동일한 행렬 구조(또는, 원소 배열)를 갖는다. Referring to FIG. 8, the first row 411 of the first sub-matrix 410 has the same matrix structure (or array of elements) as the first rows of six N by N square matrices are arranged in series. Similarly, the second row 412 of the first sub-matrix 410 has the same matrix structure (or array of elements) as the second rows of six N x N square matrices arranged in series. That is, the p-th row of the first sub-matrix 410 has the same matrix structure (or an array of elements) as the p-th rows of six N x N square matrices are arranged in series.

도 7에서 설명한 바와 같이, 제 1 서브 행렬(410)의 각 행들은 리드-솔로몬(Reed-Solomon, RS) 부호에 따라 생성된 부호어(code word)를 심볼 위치 벡터로 변환한 이진(binary) 순열을 원소로서 갖는다. 7, each row of the first sub-matrix 410 is a binary code obtained by converting a code word generated according to a Reed-Solomon (RS) code into a symbol position vector, It has a permutation as an element.

RS 부호에 따라 부호어를 생성하고, 생성된 부호어를 심볼 위치 벡터로 변환하는 방법은 당해 기술 분야에 널리 알려져 있으므로, 여기서는 그러한 과정에 대해 간략하게 설명한다.A method of generating a codeword according to an RS code and converting the generated codeword into a symbol position vector is well known in the art, and a brief description of such a process will be given here.

먼저, 갈루아 필드(Galois Field)를 이용하여 RS 부호의 생성 다항식을 생성한다. 갈루아 필드는 사칙연산이 정의되는 유한개의 원소를 갖는 필드이다. 리드-솔로몬 부호의 생성 다항식은 수학식 1과 같이 나타낼 수 있다.First, a generator polynomial of the RS code is generated using a Galois field. The Galois field is a field with a finite number of elements for which arithmetic operations are defined. The generation polynomial of the Reed-Solomon code can be expressed by Equation (1).

Figure pat00001
Figure pat00001

여기서, 생성 다항식 g(X)의 각 항들의 계수 gi는 갈루아 필드 내의 원소이다. 그리고, 생성 다항식 g(X)는 최소 무게 부호 다항식이므로, 각 계수 gi는 0이 아니다.Here, the coefficient gi of each term of the generator polynomial g (X) is an element in the Galois field. And, since the generating polynomial g (X) is a least-squares polynomial, each coefficient gi is not zero.

그리고, 생성 다항식 g(X)로부터 부호어 집합(coset)을 생성한다. 이를 위해, 먼저 생성 다항식 g(X)의 계수들로부터 생성 행렬(Gb)을 만든다. 생성 행렬(Gb)을 만드는 구체적인 방법은 당해 기술 분야에 널리 알려져 있으므로, 그에 대한 설명은 생략한다.Then, a codeword set (coset) is generated from the generator polynomial g (X). To do this, we first construct a generator matrix Gb from the coefficients of the generator polynomial g (X). A specific method of generating the generation matrix Gb is well known in the art, and a description thereof will be omitted.

생성 행렬의 첫 번째 행을 r1, 두 번째 행을 r2라 하면, 두 행 r1, r2의 선형 조합은 부호어 집합을 형성할 수 있다. 여기서, 두 행 r1, r2의 선형 조합에 의해 생성되는 부호어 집합은 수학식 2와 같이 정의될 수 있다.If the first row of the generator matrix is r 1 and the second row is r 2, a linear combination of the two rows r 1 and r 2 can form a codeword aggregate. Here, the codeword set generated by the linear combination of the two rows r 1 and r 2 can be defined as Equation (2).

Figure pat00002
Figure pat00002

여기서, GF(Ps)는 Ps개의 원소를 갖는 갈루아 필드이고, P는 소수, s는 양의 정수를 나타낸다. 그리고, α, β는 각각 갈루아 필드의 원시 원소(primitive element)이다. Here, GF (P s ) is a Galois field having P s elements, P is a prime number, and s is a positive integer. And, α and β are primitive elements of Galois field respectively.

수학식 2에 나타난 부호어 집합(Cb (i))를 코셋(coset)이라고 하고, 하나의 코셋을 이루는 모든 부호어(code word)들은 독립적인 관계를 갖는다. The codeword set C b (i) shown in Equation (2) is referred to as a coset, and all codewords constituting one codet have an independent relationship.

그리고, 부호어 집합의 부호어들을 심볼 위치 벡터로 변환하여 이진 순열을 생성한다. 생성된 이진 순열들 각각은 RS-LDPC 부호에 따른 패리티 검사 행렬의 각 행을 구성한다. RS-LDPC 부호에 따라 패리티 검사 행렬의 각 행을 생성하는 방법은 당해 기술 분야에 널리 알려져 있으므로, 그에 대한 더욱 구체적인 설명은 생략한다.Then, the codeword of the codeword set is converted into the symbol position vector to generate the binary permutation. Each of the generated binary permutations constitutes each row of the parity check matrix according to the RS-LDPC code. The method of generating each row of the parity check matrix according to the RS-LDPC code is well known in the art, and a more detailed description thereof will be omitted.

이렇게 생성된 패리티 검사 행렬(H)의 두 행은 최대 하나의 위치에서만 동시에 1이 되므로, 길이 4의 순환을 가지지 않게 되고, 거스(girth)의 크기는 적어도 6 이상이 된다. 따라서, 일반적인 LDPC 부호에 비해 RS-LDPC 부호는 에러 정정 성능이 뛰어나다. 반면에, RS 부호에 따라 생성되는 패리티 검사 행렬(H)의 각 행은 원소 구조가 서로 독립적이고 임의적이므로, 패리티 검사 행렬(H)의 행렬 구조는 매우 복잡해지게 된다.Since the two rows of the generated parity check matrix H are simultaneously 1 at a maximum of one position, they do not have a cycle of length 4, and the size of the Gauss is at least 6 or more. Therefore, the RS-LDPC code has better error correction performance than a general LDPC code. On the other hand, each row of the parity check matrix H generated according to the RS code has a complicated matrix structure of the parity check matrix H since the element structures are independent of each other and arbitrary.

도 8을 참조하면, 제 1 서브 행렬(410)의 행렬 구조가 도시되어 있다. 제 1 서브 행렬(410)의 각 행들은 서로 독립적인 원소 구조(예를 들어, 각 행의 '0'원소와 '1'원소의 배열 순서)를 가지므로, 제 1 서브 행렬(410)의 전체적인 행렬 구조도 복잡하고 임의적인 형태를 가진다. Referring to FIG. 8, a matrix structure of the first sub-matrix 410 is shown. Since each row of the first sub-matrix 410 has an independent element structure (for example, the order of '0' and '1' elements of each row) The matrix structure is also complex and arbitrary.

도 9 내지 도 11은 본 발명에 따라 제안된 패리티 검사 행렬을 나타내는 도면이다. 도 9에는 제안된 패리티 검사 행렬(500)의 첫 번째 서브 행렬(510)을 생성하는 방법이 도시된다. 도 10에는 제안된 패리티 검사 행렬(500)의 첫 번째 서브 행렬(510)의 행렬 구조가 예시적으로 도시된다. 도 11에는 첫 번째 서브 행렬(510)을 이용하여, 패리티 검사 행렬(500)의 나머지 서브 행렬들을 생성하는 방법이 도시된다.9 to 11 are diagrams illustrating a parity check matrix proposed according to the present invention. In FIG. 9, a method of generating a first sub-matrix 510 of the proposed parity check matrix 500 is shown. In FIG. 10, the matrix structure of the first sub-matrix 510 of the proposed parity check matrix 500 is illustratively shown. 11 shows a method of generating the remaining submatrices of the parity check matrix 500 using the first submatrix 510. [

도 9를 참조하면, 먼저 첫 번째 서브 행렬(510)의 제 1 행(511)이 RS 부호에 따라 생성된다. 즉, RS 부호에 따라 생성된 부호어(code word)들 중 어느 하나를 심볼 위치 벡터로 변환한 이진(binary) 순열을 첫 번째 서브 행렬(510)의 제 1 행(511)으로서 결정한다. RS 부호에 따라 제 1 행(511)을 생성하는 구체적인 방법은 위에서 설명한 바와 동일하다.Referring to FIG. 9, a first row 511 of a first sub-matrix 510 is generated according to an RS code. That is, a binary permutation obtained by converting any one of codewords generated according to the RS code into a symbol position vector is determined as the first row 511 of the first sub-matrix 510. The specific method of generating the first row 511 according to the RS code is the same as described above.

그리고, 제 1 행(511)이 생성되면, 본 발명에서 제안된 패리티 검사 행렬을 생성하기 위해 제 1 행(511)을 순차적으로 순환 시프트(cicular shift)시켜 첫 번째 서브 행렬(510)의 나머지 행들을 생성한다. 이때, 제 1 행(511)은 1씩 순차적으로 N을 주기로 순환 시프트되어 제 2 행(512) 내지 제 N 행(514)을 형성한다. 이때, N은 RS 부호에 따라 부호어를 생성하기 위해 사용된 갈루아 필드의 원소의 개수이다.When the first row 511 is generated, the first row 511 is sequentially cicularly shifted in order to generate the parity check matrix proposed in the present invention, Lt; / RTI > At this time, the first row 511 is cyclically shifted one by one with a period of N sequentially to form the second row 512 to the N th row 514. Where N is the number of elements of the Galois field used to generate the codeword according to the RS code.

구체적으로, 제 1 행(511)을 행방향으로 1만큼 순환 시프트시켜 제 2 행(512)를 생성한다. 그리고, 제 2 행(512)을 행방향으로 1만큼 순환 시프트시켜 제 3 행(513)을 생성한다. Specifically, the second row 512 is generated by cyclically shifting the first row 511 by 1 in the row direction. Then, the third row 513 is generated by cyclically shifting the second row 512 by 1 in the row direction.

이와 같은 방법으로, 제 k 행을 행방향으로 1만큼 순환 시프트시켜 제 k+1 행을 생성한다(단, k는 1이상 N-1 이하의 정수). 이때, 각각의 행은 N을 주기로 하여 순환 시프트되므로, 제 k 행의 N번째 열, 2N번째 열, … , p·N번째 열의 원소는 각각 제 k+1 행의 1번째 열, N+1번째 열, … , (p-1)·N+1번째 열의 원소가 된다. In this manner, the (k + 1) th row is generated by cyclically shifting the k-th row in the row direction by 1 (where k is an integer of 1 or more and N-1 or less). At this time, since each row is cyclically shifted with N being a cycle, the Nth column, the 2Nth column, , the elements of the p-Nth column are the first column of the (k + 1) th row, the (N + 1) th column, , (p-1) N + 1 th column.

한편, 도 9와 같이 제 1 서브 행렬(510)이 직렬로 배열된 6개의 N×N 정사각 행렬들을 포함하고, 제 1 서브 행렬(510)이 6·N개의 열을 갖는다고 가정한다. 단, 제 1 서브 행렬(510)은 RS 부호에 따라 부호어를 변환하여 생성한 행렬이므로, 제 1 서브 행렬(510)의 각각의 N×N 정사각 행렬은 하나의 행에 오직 하나의 원소만이 '1'의 값을 갖는다.As shown in FIG. 9, it is assumed that the first sub-matrix 510 includes six N × N square matrixes arranged in series, and the first sub-matrix 510 has 6 · N columns. However, since the first sub-matrix 510 is a matrix generated by transforming codewords according to the RS code, each N × N square matrix of the first sub-matrix 510 includes only one element in one row 1 ".

이때, 제 1 서브 행렬(510)의 각 행들은 N을 순환 주기로 서로 순환 시프트되므로, N×N 정사각 행렬들 각각은 하나의 순환 마디를 구성한다. 따라서, N×N 정사각 행렬의 k번째 행의 마지막 원소(또는, N번째 원소)는 N×N 정사각 행렬의 k+1번째 행의 첫 번째 원소가 된다. At this time, since each row of the first sub-matrix 510 is cyclically shifted with respect to each other by N cycles, each of the N x N square matrixes constitutes one circulation node. Therefore, the last element (or Nth element) of the kth row of the N × N square matrix is the first element of the (k + 1) th row of the N × N square matrix.

즉, 각각의 N×N 정사각 행렬들에 있어서, k번째 행의 첫 번째 내지 N-1번째 원소는 각각 k+1번째 행의 두 번째 내지 N번째 원소로 시프트되고, 순환 마디의 끝인 k 번째 행의 N번째 원소는 순환 시프트되어 다음행(즉, k+1번째 행)의 첫 번째 원소가 된다.That is, in each NxN square matrix, the first through N-1th elements of the kth row are shifted to the second through Nth elements of the (k + 1) th row, and the kth row Is cyclically shifted to become the first element of the next row (i.e., the (k + 1) th row).

예를 들어, 제 1 서브 행렬(510)의 세 번째 N×N 정사각 행렬(510a)의 첫 번째 행은 N-1번째 원소가 '1'이다. 그리고, 두 번째 행은 첫 번째 행을 순환 시프트한 행이므로, 첫 번째 행의 N-1번째 원소는 두 번째 행에서 N번째 원소가 된다. 따라서, 두 번째 행은 N번째 원소가 '1'이다. 그리고, 세 번째 행은 두 번째 행을 순환 시프트한 행이고 순환 주기는 N이므로, 두 번째 행의 N번째 원소는 세 번째 행에서 1번째 원소가 된다. 따라서, 세 번째 행은 1번째 원소가 '1'이다.For example, in the first row of the third N × N square matrix 510a of the first sub-matrix 510, the (N-1) th element is '1'. Since the second row is a row in which the first row is cyclically shifted, the N-1th element in the first row is the N-th element in the second row. Therefore, the Nth element is '1' in the second row. The third row is a row in which the second row is cyclically shifted and the cycle period is N, so that the Nth element of the second row is the first element in the third row. Therefore, in the third row, the first element is '1'.

유사하게, 제 1 서브 행렬(510)의 여섯 번째 N×N 정사각 행렬(510b)의 첫 번째 행은 N번째 원소가 '1'이다. 그리고, 두 번째 행은 첫 번째 행을 순환 시프트한 행이므로, 첫 번째 행의 N번째 원소는 두 번째 행에서 1번째 원소가 된다. 따라서, 두 번째 행은 1번째 원소가 '1'이다. Similarly, in the first row of the sixth N × N square matrix 510b of the first sub-matrix 510, the Nth element is '1'. Since the second row is a row in which the first row is cyclically shifted, the Nth element of the first row is the first element in the second row. Thus, in the second row, the first element is '1'.

위와 같은 방법으로, 제 1 서브 행렬(510)의 각 행을 순차적으로 1씩 순환 시프트시켜(순환 주기는 N) 제 1 서브 행렬(510) 두 번째 내지 N번째 행을 생성한다. 그리고, 생성된 N개의 행을 병렬로 배열하면 제 1 서브 행렬(510)이 완성된다. 이때, 완성된 제 1 서브 행렬(510)의 N×N 정사각 행렬들은 각각 행단위로 순환하는 순환 구조를 가지고, 제 1 서브 행렬(510)은 순환하는 복수의 N×N 정사각 행렬들을 포함하는 준 순환(Quasi-Cyclic) 행렬 구조를 가진다.In this manner, each row of the first sub-matrix 510 is sequentially cyclically shifted by 1 (the cycle period is N) to generate the second through N-th rows of the first sub-matrix 510. If the generated N rows are arranged in parallel, the first sub-matrix 510 is completed. At this time, the N × N square matrixes of the completed first sub-matrix 510 have a circulation structure circulating on the respective stages, and the first sub-matrix 510 includes a plurality of N × N square matrixes (Quasi-Cyclic) matrix structure.

도 10은 도 9에서 설명한 방법에 따라 생성된 제 1 서브 행렬을 나타내는 도면이다. 도 10을 참조하면, 제 1 서브 행렬(510)의 각 행은 인접한 행이 1씩 순환 시프트(순환 주기 N)되어 생성된다. 즉, 제 1 서브 행렬(510)의 제 2 행(512)은 제 1 행(512)이 순환 시프트된 결과이고, 제 3 행(513)은 제 2 행(512)이 순환 시프트된 결과이다. 이와 같은 방법으로, 제 8 행(514)까지 순차적으로 각 행을 순환 시프트하여 제 1 서브 행렬(510)이 완성된다.FIG. 10 is a diagram illustrating a first sub-matrix generated according to the method described in FIG. Referring to FIG. 10, each row of the first sub-matrix 510 is generated by cyclically shifting adjacent rows one by one (circulation cycle N). That is, the second row 512 of the first sub-matrix 510 is the result that the first row 512 is cyclically shifted, and the third row 513 is the result that the second row 512 is cyclically shifted. In this manner, the first sub-matrix 510 is completed by cyclically shifting each row sequentially up to the eighth row 514.

도 10을 참조하면, 위와 같은 방법으로 생성된 제 1 서브 행렬(510)은 전체적으로 준 순환(Quasi-Cyclic)의 행렬 구조를 가진다. 따라서, 도 8의 제 1 서브 행렬(410)의 구조와 비교할 때, 본 발명에 따른 제 1 서브 행렬(510)은 상당히 단순화되고 정렬된 행렬 구조를 갖는다. Referring to FIG. 10, the first sub-matrix 510 generated in the above manner has a quasi-cyclic matrix structure as a whole. Thus, when compared to the structure of the first sub-matrix 410 of FIG. 8, the first sub-matrix 510 according to the present invention has a significantly simplified and ordered matrix structure.

한편, 여기서는 제 1 서브 행렬(510)을 생성하기 위해 각각의 행을 1만큼 순환 시프트시켜 인접하는 행을 생성하는 예를 설명하였으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 제 1 서브 행렬(510)의 각각의 행을 1보다 큰 소정의 크기만큼 순환 시프트시켜 인접하는 행을 생성할 수 있다. 이 경우, 제 1 서브 행렬(510)의 행렬 구조는 앞서 설명한 실시 예와 달라질 수 있으나, 제 1 서브 행렬(510)의 인접하는 행들 간의 '1'의 위치 변화는 여전히 일정한 규칙성을 가진다. 따라서,패리티 검사 행렬이 단순화된 구조를 가지므로, ECC 디코더(300, 도 1 참조)의 하드웨어 복잡도 및 연산량이 감소될 수 있다.. Meanwhile, although an example has been described in which adjacent rows are generated by cyclically shifting each row by 1 in order to generate the first sub-matrix 510, the present invention is not limited thereto. For example, each row of the first sub-matrix 510 may be cyclically shifted by a predetermined magnitude greater than one to create adjacent rows. In this case, the matrix structure of the first sub-matrix 510 may be different from the previously described embodiment, but the positional change of '1' between adjacent rows of the first sub-matrix 510 still has a certain regularity. Therefore, since the parity check matrix has a simplified structure, the hardware complexity and the amount of computation of the ECC decoder 300 (see FIG. 1) can be reduced.

도 11에는 제 1 서브 행렬(510)을 이용하여, 패리티 검사 행렬(500)을 완성하는 방법이 도시된다. 도 11을 참조하면, 패리티 검사 행렬(500)은 제 1 내지 제 3 서브 행렬(510, 520, 530)을 포함한 복수의 서브 행렬들로 구성된다.11, a method of completing the parity check matrix 500 using the first sub-matrix 510 is shown. Referring to FIG. 11, the parity check matrix 500 includes a plurality of sub-matrices including first through third sub-matrices 510, 520, and 530.

도 11에서는 제 1 서브 행렬(510)은 도 9 내지 도 10에서 설명한 방법으로 생성된다. 즉, 제 1 서브 행렬(510)의 하나의 행을 순환 시프트시켜 다음 행을 생성하는 방법을 순차적으로 수행함으로써, 제 1 서브 행렬(510)은 생성될 수 있다.In FIG. 11, the first sub-matrix 510 is generated by the method described in FIGS. That is, the first sub-matrix 510 can be generated by sequentially performing a method of cyclically shifting one row of the first sub-matrix 510 to generate the next row.

그리고, 본 실시 예에서는, 도 11에 도시된 바와 같이, 제 1 서브 행렬(510)을 블록 단위로 순환 시프트시켜 제 1 서브 행렬(510)에 인접한 제 2 서브 행렬(520)을 생성한다. 그리고, 제 2 서브 행렬(520)을 블록 단위로 순환 시프트시켜 제 2 서브 행렬(520)에 인접한 제 3 서브 행렬(530)을 생성한다. 마찬가지로, k 번째 서브 행렬를 블록 단위로 순환 시프트시켜 k+1 번째 서브 행렬을 생성한다(단, k는 1 이상의 정수). 이처럼, 블록 단위의 순환 시프트를 통해 패리티 검사 행렬(500)의 모든 서브 행렬들이 생성되면, 생성된 서브 행렬들을 병렬 결합시켜 패리티 검사 행렬(500)을 완성한다. 이때, 순환 시프트 단위로서의 블록은 도 9 내지 도 10에서 설명한 N×N 정사각 행렬일 수 있다. In this embodiment, as shown in FIG. 11, the first sub-matrix 510 is cyclically shifted on a block-by-block basis to generate a second sub-matrix 520 adjacent to the first sub-matrix 510. Then, the second sub-matrix 520 is cyclically shifted on a block-by-block basis to generate a third sub-matrix 530 adjacent to the second sub-matrix 520. Similarly, the k < th > sub-matrix is cyclically shifted on a block-by-block basis (k is an integer of 1 or more). When all the sub-matrices of the parity check matrix 500 are generated through the block-by-block cyclic shift, the generated sub-matrices are coupled in parallel to complete the parity check matrix 500. In this case, the block as a cyclic shift unit may be the N x N square matrix described in Figs. 9 to 10.

예를 들어, 도 11과 같이 패리티 검사 행렬(500)의 제 1 서브 행렬(510)이 6개의 블록(또는, N×N 정사각 행렬)을 포함하는 N×M 행렬이라고 가정한다. 이때, 6개의 블록들(A, B, C, D, E, F)은 순차적으로 직렬 배열되어 제 1 서브 행렬(510)을 구성한다. 제 1 서브 행렬(510)을 생성하는 구체적인 방법은 도 9 내지 도 10에서 설명한 바와 동일하다. 그리고, 제 1 서브 행렬(510)을 블록 단위로 순환 시프트시켜 제 2 서브 행렬(520)이 생성된다. 이때, 제 1 서브 행렬(510)의 순환 주기는 6 블록(또는, M 개의 열)이다.For example, it is assumed that the first sub-matrix 510 of the parity check matrix 500 is an NxM matrix including six blocks (or an NxN square matrix) as shown in FIG. At this time, the six blocks A, B, C, D, E and F are sequentially arranged in series to constitute a first sub-matrix 510. The specific method of generating the first sub-matrix 510 is the same as that described in Figs. 9 to 10. The second sub-matrix 520 is generated by cyclically shifting the first sub-matrix 510 on a block-by-block basis. At this time, the circulation period of the first sub-matrix 510 is six blocks (or M columns).

구체적으로, 블록 단위의 순환 시프트에 의해 제 1 서브 행렬(510)의 첫 번째 블록(A)은 시프트되어 제 2 서브 행렬(520)의 두 번째 블록(A)이 된다. 그리고, 제 1 서브 행렬(510)의 두 번째 블록(B)은 시프트되어 제 2 서브 행렬(520)의 세 번째 블록(B)이 된다. 마찬가지로, 제 1 서브 행렬(510)의 n 번째 블록은 시프트되어 제 2 서브 행렬(520)의 n+1 번째 블록이 된다(단, n은 1 이상 5 이하의 정수). 그리고, 제 1 서브 행렬(510)의 마지막 블록(F)은 시프트되어 제 2 서브 행렬(520)의 첫 번째 블록(F)이 된다. 즉, 순환 주기의 끝에 위치하는 블록(F)은 블록 단위의 순환 시프트에 의해 순환 주기의 처음으로 시프트된다. 위와 같이, 제 1 서브 행렬(510)이 블록 단위로 순환 시프트되어 생성된 제 2 서브 행렬(520)은 제 1 서브 행렬(510)을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖게 된다. 즉, 제 1 서브 행렬(510)이 N×M 행렬일 때, 1개의 블록 시프트는 N개의 열 시프트와 실질적으로 동일하다.Specifically, the first block A of the first sub-matrix 510 is shifted and becomes the second block A of the second sub-matrix 520 by cyclic shift on a block-by-block basis. Then, the second block B of the first sub-matrix 510 is shifted to become the third block B of the second sub-matrix 520. Similarly, the n-th block of the first sub-matrix 510 is shifted to become the (n + 1) -th block of the second sub-matrix 520 (n is an integer of 1 to 5). Then, the last block F of the first sub-matrix 510 is shifted to become the first block F of the second sub-matrix 520. That is, the block F located at the end of the cycle period is shifted to the beginning of the cycle period by the cyclic shift of the block unit. As described above, the second sub-matrix 520 generated by cyclically shifting the first sub-matrix 510 on a block-by-block basis includes a matrix in which the first sub-matrix 510 is cyclically shifted by N in the row direction according to the circulation period M And have the same element arrangement. That is, when the first sub-matrix 510 is an NxM matrix, one block shift is substantially equal to N column shifts.

동일하게, 제 2 서브 행렬(520)을 블록 단위로 순환 시프트시켜 제 3 서브 행렬(530)이 생성된다. 이처럼, k 번째 서브 행렬을 블록 단위로 순환 시프트시켜 k+1 번째 서브 행렬을 생성하고, 생성된 서브 행렬들을 병렬로 배열하여 패리티 검사 행렬(500)이 완성된다. 실시 예로서, 패리티 검사 행렬(500)은 반도체 메모리 시스템(1000, 도 1 참조)의 저장 장치(100, 도 1 참조)에 저장될 수 있다. 또는, 패리티 검사 행렬(500)은 컨트롤러(200, 도 1 참조)에 포함된 별도의 저장부(미도시)에 저장될 수 있다. 저장된 패리티 검사 행렬(500)은 읽기 데이터(RD, 도 1 참조)의 디코딩을 위해 호출되어 사용될 수 있다.Similarly, the third sub-matrix 530 is generated by cyclically shifting the second sub-matrix 520 on a block-by-block basis. The k th sub-matrix is cyclically shifted on a block-by-block basis to generate a k + 1 th sub-matrix, and the generated sub-matrices are arranged in parallel to complete the parity check matrix 500. As an example, the parity check matrix 500 may be stored in the storage device 100 (see FIG. 1) of the semiconductor memory system 1000 (see FIG. 1). Alternatively, the parity check matrix 500 may be stored in a separate storage unit (not shown) included in the controller 200 (see FIG. 1). The stored parity check matrix 500 may be called and used to decode the read data RD (see FIG. 1).

상기와 같은 구성에 따르면, 패리티 검사 행렬(500)은 서브 행렬 단위로 블록 순환(Block Circulation)하고, 각각의 블록은 준 순환(Quasi-Cyclic)하는 행렬 구조를 갖는다. 따라서, 종래의 랜덤하고 복잡한 패리티 검사 행렬에 비해, 본 발명에서 제안하는 패리티 검사 행렬(500)은 매우 단순화된 행렬 구조를 갖는다. 따라서, RS-LDPC 디코딩에 필요한 연산량이 감소하고, 검사 노드와 변수 노드를 연결하는 네트워크 구성을 비롯한 전체적인 하드웨어 복잡도가 크게 감소할 수 있다.According to the above configuration, the parity check matrix 500 is block circulated in units of sub-matrices, and each block has a quasi-cyclic matrix structure. Therefore, compared to the conventional random complex parity check matrix, the parity check matrix 500 proposed in the present invention has a very simplified matrix structure. Therefore, the amount of computation required for RS-LDPC decoding is reduced, and the overall hardware complexity including the network configuration connecting the check node and the variable node can be greatly reduced.

도 12는 본 발명에 의해 제안된 패리티 검사 행렬(500)의 생성 방법을 나타내는 순서도이다. 도 12를 참조하면, 패리티 검사 행렬(500)의 생성 방법은 S210 단계 내지 S250 단계를 포함한다.12 is a flowchart showing a method of generating the parity check matrix 500 proposed by the present invention. Referring to FIG. 12, a method of generating the parity check matrix 500 includes steps S210 to S250.

S210 단계에서, RS 부호의 코드어를 심볼 위치 벡터로 변환하여 제 1 서브 행렬(510, 도 9 참조)의 제 1 행(511, 도 9 참조)을 생성한다. RS 부호의 코드어로부터 제 1 행(511)을 생성하는 구체적인 방법은 위에서 설명한 바와 같다. In step S210, the code word of the RS code is converted into a symbol position vector to generate a first row 511 (see FIG. 9) of the first sub-matrix 510 (see FIG. 9). A specific method of generating the first row 511 from the code word of the RS code is as described above.

S220 단계에서, 제 1 행(511)을 1만큼 순환 시프트시켜 제 2 행(512)을 생성한다. 그리고, 제 2 행(512)을 1만큼 순환 시프트시켜 제 3 행(513)을 생성한다. 동일한 방법으로, N개의 행이 생성될 때까지, 생성된 행을 1씩 순환 시프트시켜 다음 행을 생성한다. 각 행을 순환 시프트시키는 구체적인 방법은 도 9 내지 10에서 설명한 바와 동일하다.In step S220, the second row 512 is generated by cyclically shifting the first row 511 by one. Then, the third row 513 is generated by cyclically shifting the second row 512 by one. In the same way, until the N rows are generated, the generated rows are cyclically shifted by one to generate the next row. A specific method of cyclically shifting each row is the same as that described in Figs.

S230 단계에서, 생성된 행들을 병렬로 배열하여, 제 1 서브 행렬(510)을 생성한다. In step S230, the generated rows are arranged in parallel to generate a first sub-matrix 510. [

S240 단계에서, 제 1 서브 행렬(510)을 1블록 만큼 블록 단위로 순환 시프트시켜 제 2 서브 행렬(520)을 생성한다. 그리고, 제 2 서브 행렬(520)을 1블록 만큼 블록 단위로 순환 시프트시켜 제 3 서브 행렬(530)을 생성한다. 동일한 방법으로, 패리티 검사 행렬(500)을 완성하기 위해 필요한 서브 행렬들이 모두 생성될 때까지, 생성된 서브 행렬을 1블록 만큼 블록 단위로 순환 시프트시켜 다음 서브 행렬을 생성한다.In step S240, the second sub-matrix 520 is generated by cyclically shifting the first sub-matrix 510 by one block on a block-by-block basis. Then, the third sub-matrix 530 is generated by cyclically shifting the second sub-matrix 520 by one block on a block-by-block basis. In the same manner, until the submatrices required to complete the parity check matrix 500 are all generated, the generated submatrix is cyclically shifted by one block on a block basis to generate the next submatrix.

S250 단계에서, 생성된 서브 행렬들을 병렬로 배열하여, 패리티 검사 행렬(500)을 완성한다.In step S250, the generated sub-matrices are arranged in parallel to complete the parity check matrix 500. FIG.

한편, 여기서는 RS 부호의 코드어로부터 제 1 행(511)을 생성하는 것을 예시하였으나, 본 발명은 여기에 한정되지 않는다. 예를 들어, RS 부호의 코드어로부터 제 3 행(513)을 생성하고, 제 3 행(513)을 순차적으로 순환 시프트시켜 제 1 서브 행렬(511)의 나머지 행들을 생성할 수 있다. 이러한 경우에도, 제 1 서브 행렬(511)이 준 순환(Quasi-Cyclic)하는 행렬 구조를 갖는 것은 변하지 않는다.On the other hand, here, the generation of the first row 511 from the code word of the RS code is illustrated, but the present invention is not limited thereto. For example, a third row 513 may be generated from the code word of the RS code, and the third row 513 may be cyclically shifted sequentially to generate the remaining rows of the first sub-matrix 511. Even in this case, the first sub-matrix 511 has a quasi-cyclic matrix structure.

또한, 여기서는 제 1 서브 행렬(511)의 각 행은 인접한 행을 1씩 순환 시프트시켜 생성되는 것으로 예시하였으나, 본 발명에 따른 제 1 서브 행렬(511)의 각 행은 인접한 행을 2 이상의 소정의 크기만큼 순환 시프트시켜 생성될 수 있다. 예를 들어, p 번째 행을 2씩 순환 시프트시켜 p+1 번째 행을 생성하고(단, p는 1 이상 N-1 이하의 정수), 생성된 행들을 병렬로 배열하여 제 1 서브 행렬(511)을 생성할 수 있다.Although each row of the first sub-matrix 511 is illustrated as being generated by cyclically shifting adjacent rows one by one, each row of the first sub-matrix 511 according to the present invention includes two or more predetermined By a predetermined number of cycles. For example, the p + 1th row is generated by cyclically shifting the pth row by 2 (where p is an integer equal to or greater than 1 and equal to or smaller than N-1), and the generated rows are arranged in parallel to form a first sub- Can be generated.

또한, 여기서는 서브 행렬을 1 블록의 크기만큼 순환 시프트시켜 인접한 서브 행렬을 생성하는 것으로 예시하였으나, 본 발명에 따른 패리티 검사 행렬(500)의 각 서브 행렬은 인접한 서브 행렬을 2 블록 이상의 크기만큼 블록 순환시켜 생성될 수 있다. 예를 들어, q 번째 서브 행렬을 2 블록만큼 블록 순환시켜 q+1 번째 행을 생성하고(단, q는 1 이상의 정수), 생성된 서브 행렬들을 병렬로 배열하여 패리티 검사 행렬(500)을 생성할 수 있다.In this example, the sub-matrix is cyclically shifted by one block to generate an adjacent sub-matrix. However, each sub-matrix of the parity check matrix 500 according to the present invention may include an adjacent sub- . For example, the (q + 1) th row is generated by block-circulating the q-th sub-matrix by two blocks (where q is an integer of 1 or more), and the generated sub-matrices are arranged in parallel to generate a parity check matrix 500 can do.

상기와 같은 구성에 따르면, 도 9 내지 도 11에서 설명한 패리티 검사 행렬(500)이 생성될 수 있다. According to the above configuration, the parity check matrix 500 described with reference to FIGS. 9 to 11 can be generated.

도 13은 본 발명에 따른 패리티 검사 행렬을 예시적으로 나타내는 도면이다. 도 13을 참조하면, 복수의 블록으로 구성된 복수의 서브 행렬을 포함하는 패리티 검사 행렬(600) 및 블록(610)의 행렬 구조가 예시적으로 도시된다.13 is a diagram illustrating a parity check matrix according to an embodiment of the present invention. Referring to FIG. 13, a matrix structure of a parity check matrix 600 and a block 610 including a plurality of sub-matrices composed of a plurality of blocks is exemplarily shown.

도 13을 참조하면, 패리티 검사 행렬(600)은 열방향을 따라 병렬로 배열된 6 개의 서브 행렬을 포함한다. 그리고, 각각의 서브 행렬은 행방향을 따라 직렬로 배열된 28 개의 블록을 포함한다. 패리티 검사 행렬(600)의 서브 행렬들은 순차적으로 서로 블록 순환된다. 예를 들어, 패리티 검사 행렬(600)의 p 번째 서브 행렬의 k 번째 블록은 p+1 번째 서브 행렬의 k+1 번째 블록과 동일하다(단, p는 1 이상 6 이하의 정수, k는 1 이상 27이하의 정수). 다만, 패리티 검사 행렬(600)의 서브 행렬들은 하나의 서브 행렬에 포함된 블록 수를 순환 주기로 하여 서로 블록 순환하므로, p 번째 서브 행렬의 28 번째 블록은 p+1 번째 서브 행렬의 첫 번째 행렬과 동일하다. 이처럼, 패리티 검사 행렬(600)은 동일한 블록들이 일정한 규칙성을 갖고 배열되는 단순한 행렬 구조를 갖는다. 따라서, 패리티 검사 행렬(600)은 하나의 서브 행렬의 행렬 구조로부터 전체 패리티 검사 행렬(600)의 행렬 구조가 용이하게 도출될 수 있다.Referring to FIG. 13, the parity check matrix 600 includes six sub-matrices arranged in parallel along the column direction. Each sub-matrix includes 28 blocks arranged in series along the row direction. The sub-matrices of the parity check matrix 600 are sequentially block-circulated with respect to each other. For example, the kth block of the pth sub-matrix of the parity check matrix 600 is the same as the k + 1th block of the (p + 1) th sub-matrix (where p is an integer of 1 to 6, An integer of not less than 27). However, since the sub-matrices of the parity check matrix 600 are block-circulated to each other with the number of blocks included in one sub-matrix as a cyclic period, the 28th block of the p < th > sub- same. As described above, the parity check matrix 600 has a simple matrix structure in which the same blocks are arranged with a certain regularity. Therefore, the matrix structure of the entire parity check matrix 600 can be easily derived from the matrix structure of one sub-matrix in the parity check matrix 600. [

다시, 도 13을 참조하면, 패리티 검사 행렬(600)에 포함된 블록의 행렬 구조가 예시적으로 도시된다. 패리티 검사 행렬(600)의 각 행들은 RS 부호의 부호어를 기초로 생성되므로, 패리티 검사 행렬(600)의 각 블록들은 하나의 행에 하나의 '1'을 원소로서 가진다. 즉, 블록의 어떤 행의 5 번째 열의 원소가 '1'이면, 그 행의 5 번째 열의 원소를 제외한 나머지 원소들은 모두 '0'이다. 그리고, 도 9 내지 도 10에서 설명한 바와 같이, 패리티 검사 행렬(600)의 각 블록들은 행단위로 순환하는 행렬 구조를 갖는다. 한편, 패리티 검사 행렬(600)의 각 블록들 안에 쓰여진 숫자는 각 블록들의 제 1 행의 몇 번째 원소가 '1'인지를 나타낸다. 예를 들어, 블록안에 쓰여진 숫자가 40이면, 그 블록의 제 1 행은 40 번째 원소가 '1'이고 나머지 원소는 '0'인 것을 의미한다.Referring again to FIG. 13, a matrix structure of blocks included in the parity check matrix 600 is illustratively shown. Since each row of the parity check matrix 600 is generated based on the codeword of the RS code, each block of the parity check matrix 600 has one '1' as an element in one row. That is, if the element of the fifth column of a certain row of the block is '1', the remaining elements except for the element of the fifth column of the row are all '0'. 9 to 10, each block of the parity check matrix 600 has a matrix structure that circulates on the row. On the other hand, the number written in each block of the parity check matrix 600 indicates which element of the first row of each block is '1'. For example, if the number written in the block is 40, the first row of the block means that the 40th element is '1' and the remaining elements are '0'.

구체적으로, 패리티 검사 행렬(600)의 첫 번째 서브 행렬의 9 번째 블록(610)을 예로 들어 설명한다. 도 13의 하단에는 블록(610)의 행렬 구조가 구체적으로 도시된다. 블록(610)에는 11의 숫자가 쓰여져 있다. 따라서, 블록(610)의 제 1 행은 11번째 원소가 '1'이고 나머지 원소는 '0'이다. 그리고, 블록(610)은 행단위로 1씩 순환하는 구조를 갖는다. 즉, 블록(610)의 i 번째 행의 j 번째 원소와 i+1 번째 행의 j+1 번째 원소는 서로 동일하다. 다만, 블록(610)의 i 번째 행의 마지막 원소는 i+1 번째 행의 첫 번째 원소와 서로 동일하게 됨은 앞에서 살펴본 바와 같다. Specifically, the ninth block 610 of the first sub-matrix of the parity check matrix 600 will be described as an example. 13, the matrix structure of the block 610 is specifically shown. In block 610, a number 11 is written. Thus, in the first row of block 610, the eleventh element is '1' and the remaining element is '0'. Then, the block 610 has a structure of circulating 1 by 1 on the row. That is, the j-th element in the i-th row of the block 610 and the (j + 1) -th element in the i + 1-th row are equal to each other. However, the last element of the i-th row of the block 610 is the same as the first element of the (i + 1) -th row, as described above.

이와 같은 블록(610)의 구체적인 행렬 구조가 도 13에 도시되어 있다. 도 13을 참조하면, 블록(610)의 제 1 행의 11 번째 원소는 '1'이고 제 1 행의 나머지 원소들은 '0'이다. 그리고, 블록(610)의 제 2 행은 제 1 행이 1씩 행방향으로 순환 시프트된다. 따라서, 제 2 행의 12 번째 원소가 '1'이고 제 2 행의 나머지 원소들은 '0'이다. 이와 동일한 방식으로, 블록(610)의 모든 행들이 구성된다.A concrete matrix structure of such a block 610 is shown in FIG. Referring to FIG. 13, the 11th element of the first row of the block 610 is '1', and the remaining elements of the first row are '0'. Then, the second row of the block 610 is cyclically shifted in the row direction by 1 in the first row. Therefore, the 12th element of the second row is '1' and the remaining elements of the second row are '0'. In the same manner, all the rows of block 610 are constructed.

도 14는 본 발명의 실시 예에 따른 도 3의 디코더를 나타내는 블록도이다. 도 14를 참조하면, 디코더(330)는 변수 노드 블록(331), 검사 노드 블록(333), 정정 데이터 관리자(335), 신드롬 검사기(336) 및 스위치 네트워크들(332, 334)을 포함한다. 본 실시 예에서, 디코더(330)는 도 9 내지 도 13에서 제안된 패리티 검사 행렬(500, 도 11 참조)을 사용하여 RS-LDPC 디코딩을 수행한다. Figure 14 is a block diagram illustrating the decoder of Figure 3 in accordance with an embodiment of the present invention. Referring to FIG. 14, the decoder 330 includes a variable node block 331, a check node block 333, a correction data manager 335, a syndrome checker 336, and switch networks 332 and 334. In this embodiment, the decoder 330 performs RS-LDPC decoding using the parity check matrix 500 (see FIG. 11) proposed in FIGS. 9 to 13.

RS-LDPC 디코딩에서 패리티 검사 행렬(500)의 0이 아닌(nonzero) 원소는 대응되는 변수 노드와 검사 노드가 서로 연결되는 것을 의미한다. 그리고, 이러한 변수 노드와 검사 노드의 연결에 따라 전달되는 데이터를 통해 디코딩이 수행된다.In the RS-LDPC decoding, a nonzero element of the parity check matrix 500 means that a corresponding variable node and a check node are connected to each other. The decoding is performed through the data transmitted according to the connection between the variable node and the check node.

먼저, 읽기 데이터 관리자(310)가 수신한 읽기 데이터(RD)를 우도값 사상기(320)에 전송하면, 우도값 사상기(320)는 전송된 읽기 데이터(RD)에 대응되는 우도값을 디코더(330)에 제공한다. First, when the read data manager 310 sends the received read data RD to the likelihood value mapper 320, the likelihood value mapper 320 outputs a likelihood value corresponding to the transmitted read data RD to a decoder (330).

변수 노드 블록(331)은 제공된 우도값을 저장하고, 저장한 우도값을 변수 노드 메시지로서 제 1 스위치 네트워크(332)를 통해 검사 노드 블록(333)에 제공한다. The variable node block 331 stores the provided likelihood value and provides the stored likelihood value to the check node block 333 through the first switch network 332 as a variable node message.

검사 노드 블록(331)은 제공된 변수 노드 메시지를 참조하여, 각 검사 노드에 대해 변수 노드들의 값을 비교하여, 제 1 및 제 2 최소값을 검사 노드 메시지(CHK)로서 제공한다. 여기서, 제 1 최소값은 비교된 변수 노드 값들 중 가장 작은 값을 의미하고, 제 2 최소값은 비교된 변수 노드 값들 중 두 번째로 작은 값을 의미한다. 검사 노드 메시지(CHK)는 제 2 스위치 네트워크(334)를 통해 변수 노드 블록(331)으로 제공된다.The check node block 331 refers to the provided variable node message, compares the value of the variable nodes with respect to each check node, and provides the first and second minimum values as a check node message (CHK). Here, the first minimum value refers to the smallest value among the compared variable node values, and the second minimum value refers to the second lowest value among the compared variable node values. The check node message (CHK) is provided to the variable node block 331 via the second switch network 334.

변수 노드 블록(331)은 수신된 검사 노드 메시지(CHK)를 참조하여, 변수 노드 및 검사 노드 값들을 갱신한다. 그리고, 갱신된 변수 노드 및 검사 노드 값들에 따라 디코딩을 수행한다. 디코딩된 결과는 디코딩 데이터로서 정정 데이터 관리자(335)에 제공된다. The variable node block 331 refers to the received check node message CHK and updates the variable node and the check node values. Then, decoding is performed according to the updated variable node and check node values. The decoded result is provided to the correction data manager 335 as decoded data.

정정 데이터 관리자(335)는 변수 노드 블록(331)에서 수행된 디코딩 결과를 저장하고, 신드롬 검사기(336)의 디코딩 성공 여부 판단에 따라 외부로 디코딩 데이터(CD) 또는 읽기 에러 메시지(Err)를 출력한다.The correction data manager 335 stores the decoding result performed in the variable node block 331 and outputs decoded data CD or a read error message Err in accordance with the decoding success or failure of the syndrome checker 336 do.

신드롬 검사기(336)은 정정 데이터 관리자(335)에 저장된 디코딩 데이터에 따라, 디코딩 성공 여부를 판단한다. 예를 들어, 신드롬 검사기(336)은 디코딩 데이터와 패리티 검사 행렬(500)의 전치 행렬을 곱하고, 곱한 결과가 영행렬인지 아닌지에 따라 디코딩 성공 여부(또는, 에러가 모두 정정되었는지 여부)를 판단한다. 그리고, 디코딩 성공 여부의 판단 결과를 정정 데이터 관리(335)에 제공한다. The syndrome checker 336 determines whether or not the decoding is successful based on the decoding data stored in the correction data manager 335. For example, the syndrome checker 336 multiplies the decoded data by the transpose matrix of the parity check matrix 500, and determines whether the decoding is successful (or whether all errors are corrected) according to whether the multiplication result is a zero matrix or not . Then, the determination result of the decoding success or failure is supplied to the correction data management unit 335.

실시 예로서, 신드롬 검사기(336)은 디코딩이 실패한 경우, 새로운 디코딩 루프의 실행을 위한 제어 메시지를 변수 노드 블록(331) 또는 제 1 스위치 네트워크(332)에 제공할 수 있다. 이때, 새로운 디코딩 루프에서, 변수 노드 블록(331)은 제어 메시지에 응답하여, 갱신된 변수 노드 값들을 변수 노드 메시지로서 검사 노드 블록(331)으로 제공한다. 그리고, 검사 노드 블록(331)은 제공된 변수 노드 메시지를 참조하여, 새로운 검사 노드 메시지를 변수 노드 블록(331)에 제공한다. 그리고, 변수 노드 블록(331)은 새로운 검사 노드 메시지를 참조하여, 변수 노드 및 검사 노드 값들을 갱신하고, 갱신된 변수 노드 및 검사 노드 값들에 따라 디코딩을 수행한다. 그리고, 디코딩 결과에 따라 신드롬 검사기(336)가 디코딩 성공 여부를 판단하고, 신드롬 검사기(336)의 판단 결과에 따라, 디코딩이 종료되거나 새로운 디코딩 루프가 반복적으로 실행된다.As an example, the syndrome checker 336 may provide a control message to the variable node block 331 or the first switch network 332 for execution of a new decoding loop if decoding fails. At this time, in the new decoding loop, the variable node block 331, in response to the control message, provides the updated variable node values to the check node block 331 as a variable node message. The check node block 331 refers to the provided variable node message and provides a new check node message to the variable node block 331. The variable node block 331 refers to the new check node message, updates the variable node and check node values, and performs decoding according to the updated variable node and check node values. Depending on the decoding result, the syndrome tester 336 determines whether or not decoding is successful, and the decoding is ended or a new decoding loop is repeatedly executed according to the determination result of the syndrome tester 336. [

제 1 및 제 2 스위치 네트워크(332, 334)는 변수 노드 블록(331)과 검사 노드 블록(333) 사이의 데이터 교환을 중계한다. 구체적으로 제 1 스위치 네트워크(332)는 변수 노드 블록(331)으로부터 제공되는 변수 노드 메시지를 검사 노드 블록(333)에 전달한다. 제 2 스위치 네트워크(334)는 검사 노드 블록(333)으로부터 제공되는 검사 노드 메시지를 변수 노드 블록(331)에 전달한다.The first and second switch networks 332 and 334 relay data exchange between the variable node block 331 and the check node block 333. Specifically, the first switch network 332 transfers the variable node message provided from the variable node block 331 to the check node block 333. The second switch network 334 passes the check node message provided from the check node block 333 to the variable node block 331.

본 발명에 따른 디코더(330)에서, 패리티 검사 행렬(500)은 매우 규칙적이고 단순한 구조를 갖는다. 따라서, 변수 노드들과 검사 노드들의 연결 관계도 매우 단순하고 규칙적이다. 따라서, 제 1 및 제 2 스위치 네트워크(332, 334)는 복수의 고정 배선 스위치(hard-wired 스위치) 또는 병렬 시프터를 통해 쉽게 구현될 수 있다. 제 1 및 제 2 스위치 네트워크(332, 334)에 대한 구체적인 내용은 도 15 및 도 16과 함께 후술될 것이다.In the decoder 330 according to the present invention, the parity check matrix 500 has a very regular and simple structure. Therefore, the connection between the variable nodes and the check nodes is very simple and regular. Thus, the first and second switch networks 332 and 334 can be easily implemented through a plurality of hard-wired switches or parallel shifters. The details of the first and second switch networks 332 and 334 will be described later with FIGS. 15 and 16. FIG.

상기와 같은 구성에 따르면, 단순한 구조의 패리티 검사 행렬(500)을 사용함으로써 변수 노드들 및 검사 노드들 간의 연결 관계가 단순화된다. 따라서, 변수 노드들 및 검사 노드들 사이의 데이터 교환을 위한 연산량 및 필요 메모리가 감소된다. 또한, 변수 노드 블록(331) 및 검사 노드 블록(333)을 중계하는 스위치 네트워크(332, 334)들이 단순한 하드웨어 구조로 구현될 수 있으므로, 디코더(330)의 하드웨어 복잡도 및 하드웨어 면적이 감소될 수 있다.According to the above configuration, the connection relation between the variable nodes and the check nodes is simplified by using the parity check matrix 500 of a simple structure. Thus, the amount of computation and the memory required for exchanging data between variable nodes and check nodes is reduced. In addition, since the switch networks 332 and 334 relaying the variable node block 331 and the check node block 333 can be implemented in a simple hardware structure, the hardware complexity and hardware area of the decoder 330 can be reduced .

한편, 여기서 설명되지 않은 디코더(330) 및 RS-LDPC 디코딩의 일반적인 내용은 당해 기술 분야에 널리 알려져 있으므로, 그에 대한 설명은 생략한다.Meanwhile, the general contents of the decoder 330 and the RS-LDPC decoding not described here are well known in the art, and a description thereof will be omitted.

도 15는 도 14에 도시된 스위치 네트워크를 예시적으로 나타내는 블록도이다. 도 15에서는 제 1 스위치 네트워크(332, 도 14 참조)의 구체적인 블록도가 도시된다. 한편, 제 2 스위치 네트워크(334, 도 14 참조)는 제 1 스위치 네트워크(332)와 실질적으로 동일한 구성을 가지므로, 본 실시 예에서 제 2 스위치 네트워크(334)에 대한 설명은 생략된다.15 is a block diagram exemplarily showing the switch network shown in Fig. In Fig. 15, a specific block diagram of the first switch network 332 (see Fig. 14) is shown. On the other hand, since the second switch network 334 (see FIG. 14) has substantially the same configuration as the first switch network 332, the description of the second switch network 334 in this embodiment is omitted.

도 15를 참조하면, 제 1 스위치 네트워크(332)는 스위치 제어부(332a) 및 연결부(332b)를 포함한다.Referring to FIG. 15, the first switch network 332 includes a switch control section 332a and a connection section 332b.

스위치 제어부(332a)는 변수 노드 블록(331)로부터 변수 노드 메시지를 수신하고, 클럭 신호에 응답하여 변수 노드 메시지를 복수의 채널 중 대응되는 채널에 할당한다. 변수 노드 메시지가 할당되는 채널은 클럭 신호에 따라 달라질 수 있다. 실시 예로서, 스위치 제어부(310)는 클럭 신호를 발생하는 클럭 카운터(332c)를 포함할 수 있다.The switch control unit 332a receives the variable node message from the variable node block 331 and allocates the variable node message to the corresponding channel among the plurality of channels in response to the clock signal. The channel to which the variable node message is assigned may vary depending on the clock signal. As an embodiment, the switch control unit 310 may include a clock counter 332c for generating a clock signal.

연결부(332b)는 복수의 고정 배선 블록들(10, 20, 30, 40, 50)을 포함한다. 그리고, 고정 배선 블록들(10, 20, 30, 40, 50) 각각은 스위치 제어부(332a)와 연결된 채널을 통해 변수 노드 메시지를 수신한다. 그리고, 고정 배선 블록들(10, 20, 30, 40, 50)은 수신된 변수 노드 메시지를 고정 배선을 통해 미리 정해진 출력 경로로 출력한다. The connection portion 332b includes a plurality of fixed wiring blocks 10, 20, 30, 40, and 50. Each of the fixed wiring blocks 10, 20, 30, 40, and 50 receives a variable node message through a channel connected to the switch control unit 332a. The fixed wiring blocks 10, 20, 30, 40, and 50 output the received variable node message through a fixed wiring to a predetermined output path.

이때, 고정 배선 블록들(10, 20, 30, 40, 50) 각각은 제 1 서브 행렬(510, 도 10 참조)에 포함된 N×N 정사각 행렬들 중 어느 하나에 대응되도록 입력 단자들과 출력 단자들이 연결된다. 예를 들어, 제 1 고정 배선 블록(10)은 N×N 정사각 행렬(A, 도 10 참조)에 대응되도록 입력 단자들과 출력 단자들이 연결될 수 있다. 또는, 제 2 고정 배선 블록(30)은 N×N 정사각 행렬(C, 도 10 참조)에 대응되도록 입력 단자들과 출력 단자들이 연결될 수 있다. 고정 배선 블록들(10, 30)의 구체적인 구성 및 N×N 정사각 행렬들(A, C)과의 대응 관계는 도 16 및 도 17에서 후술될 것이다.At this time, each of the fixed wiring blocks 10, 20, 30, 40, and 50 is connected to the input terminals and the output terminal (not shown) so as to correspond to any one of the N x N square matrices included in the first sub- Terminals are connected. For example, input terminals and output terminals may be connected such that the first fixed wiring block 10 corresponds to an N x N square matrix A (see Fig. 10). Alternatively, the input terminals and the output terminals may be connected so that the second fixed wiring block 30 corresponds to the N × N square matrix C (see FIG. 10). The specific configuration of the fixed wiring blocks 10 and 30 and the corresponding relationship with the NxN square matrixes A and C will be described later with reference to FIG. 16 and FIG.

한편, 제 1 스위치 네트워크(332)는 연결부(332b)에 제 1 서브 행렬(510)에 대응되는 고정 배선 블록들만을 구비하고, 패리티 검사 행렬(500) 전체에 대응되는 데이터 전송을 중계할 수 있다. The first switch network 332 may include only the fixed wiring blocks corresponding to the first sub-matrix 510 in the connection unit 332b and may relay the data transmission corresponding to the entire parity check matrix 500 .

예를 들어, 클럭 신호가 제 1 서브 행렬(510)를 나타내는 경우, 스위치 제어부(332b)는 제 1 서브 행렬(510)에 대응되는 변수 노드 메시지를 고정 배선 블록들(10, 20, 30, 40, 50)에 차례로 할당한다. 그리고, 클럭 신호가 제 2 서브 행렬(520, 도 10 참조)를 나타내는 경우, 스위치 제어부(332b)는 변수 노드 메시지가 할당되는 채널을 한 블록씩 시프트시켜, 제 2 고정 배선 블록(20)부터 차례로 변수 노드 메시지를 할당한다. 제 1 고정 배선 블록(10)에는 변수 노드 메시지의 마지막 부분이 할당된다. 패리티 검사 행렬(500)의 각각의 서브 행렬은 서로 블록 순환되는 행렬 구조를 가진다. 따라서, 이와 같이 클럭 신호에 따라 변수 노드 메시지를 할당하는 채널을 단순히 시프트시키는 매우 단순한 연산을 통해, 전체 변수 노드들을 검사 노드들에 연결할 수 있다. 따라서, 변수 노드들과 검사 노드들을 연결하는데 필요한 연산량 및 필요 메모리가 감소한다. 그리고, 최소한의 고정 배선 블록들을 이용하여 스위치 네트워크가 구현되므로, 디코더(330, 도 14 참조)의 하드웨어 복잡도 및 하드웨어 면적이 최소화될 수 있다. For example, when the clock signal represents the first sub-matrix 510, the switch control unit 332b transmits the variable node message corresponding to the first sub-matrix 510 to the fixed wiring blocks 10, 20, 30, 40 , 50, respectively. When the clock signal indicates the second sub-matrix 520 (see FIG. 10), the switch control unit 332b shifts the channel to which the variable node message is allocated by one block, Assign a variable node message. The first fixed wiring block 10 is assigned the last part of the variable node message. Each sub-matrix of the parity check matrix 500 has a matrix structure that is block-circulated to each other. Thus, the entire variable nodes can be connected to the check nodes through a very simple operation that simply shifts the channel to which the variable node message is allocated according to the clock signal. Therefore, the amount of computation and the memory required to connect the variable nodes and the check nodes are reduced. Since the switch network is implemented using the minimum fixed wiring blocks, the hardware complexity and the hardware area of the decoder 330 (see FIG. 14) can be minimized.

도 16 및 도 17은 본 발명에 따른 스위치 네트워크의 고정 배선 블록을 예시적으로 나타내는 도면이다.Figs. 16 and 17 are diagrams illustrating a fixed wiring block of a switch network according to the present invention.

도 16은 제 1 고정 배선 블록(10, 도 15 참조)의 입력-출력 연결 관계를 나타낸다. 도 17은 제 3 고정 배선 블록(30, 도 15 참조)의 입력-출력 연결 관계를 나타낸다. 제 1 및 제 3 고정 배선 블록(10, 30)은 각각 N×N 정사각 행렬(A, C, 도 10 참조)에 대응되는 입력-출력 연결 관계를 갖는 것으로 가정한다. 16 shows the input-output connection relationship of the first fixed wiring block 10 (see Fig. 15). 17 shows the input-output connection relationship of the third fixed wiring block 30 (see Fig. 15). It is assumed that the first and third fixed wiring blocks 10 and 30 have an input-output connection relationship corresponding to the N × N square matrixes A and C, respectively, see FIG. 10.

도 16을 참조하면, N×N 정사각 행렬(A) 및 제 1 고정 배선 블록(10)의 연결 관계가 나타난다. N×N 정사각 행렬(A)은 제 1 행 제 1 열의 원소가 '1'이고 제 1 행의 나머지 원소는 '0'이다. 그리고, 본 발명에 따른 패리티 검사 행렬(500, 도 10 참조)에서 N×N 정사각 행렬(A)은 행단위로 순환하는 행렬 구조를 갖는다. 따라서, N×N 정사각 행렬(A)은 제 i 행 제 i 열의 원소가 '1'이고(단, i는 N 이하의 정수), 나머지 원소는 '0'이다.Referring to FIG. 16, a connection relationship between the N × N square matrix A and the first fixed wiring block 10 is shown. In the N × N square matrix A, the elements of the first row and the first column are '1' and the remaining elements of the first row are '0'. In the parity check matrix 500 (see FIG. 10) according to the present invention, the N × N square matrix A has a matrix structure that circulates on the row. Therefore, in the N × N square matrix A, the elements of the i-th row and the i-th column are '1' (i is an integer equal to or less than N) and the remaining elements are '0'.

패리티 검사 행렬(500)에서 원소 '1'은 대응되는 변수 노드 및 검사 노드가 서로 연결되는 것을 의미한다. 반면에, 패리티 검사 행렬(500)에서 원소 '0'은 대응되는 변수 노드 및 검사 노드가 서로 연결되지 않는 것을 의미한다. 따라서, N×N 정사각 행렬(A)에 따라, 제 1 고정 배선 블록(10)의 변수 노드 단자들(A1, A2, A3, A4, A5, A6, A7, A8)은 검사 노드 단자들(B1, B2, B3, B4, B5, B6, B7, B8)에 차례로 고정 배선된다.The element '1' in the parity check matrix 500 means that the corresponding variable node and the check node are connected to each other. On the other hand, the element '0' in the parity check matrix 500 means that the corresponding variable node and the check node are not connected to each other. Accordingly, the variable node terminals A1, A2, A3, A4, A5, A6, A7, A8 of the first fixed wiring block 10 are connected to the check node terminals B1 , B2, B3, B4, B5, B6, B7, and B8.

이때, 클럭 신호가 제 1 서브 행렬(510, 도 10 참조)을 나타내면, 스위치 제어부(332a)는 입력되는 변수 노드 메시지의 첫 번째 부분을 제 1 고정 배선 블록(10)과 연결될 채널에 할당할 것이다. 여기서, 변수 노드 메시지의 첫 번째 부분은 제 1 서브 행렬(510)의 첫 번째 N×N 정사각 행렬(A)에 대응되는 변수 노드들로부터 발생한 변수 노드 값들을 의미한다.At this time, if the clock signal represents the first sub-matrix 510 (see FIG. 10), the switch control unit 332a allocates the first part of the input variable node message to the channel to be connected to the first fixed wiring block 10 . Here, the first part of the variable node message refers to variable node values generated from variable nodes corresponding to the first N × N square matrix A of the first sub-matrix 510.

그리고, 이때, 클럭 신호가 제 2 서브 행렬(520, 도 10 참조)을 나타내면, 스위치 제어부(332a)는 입력되는 변수 노드 메시지의 두 번째 부분을 제 1 고정 배선 블록(10)과 연결될 채널에 할당할 것이다. 여기서, 변수 노드 메시지의 두 번째 부분은 제 2 서브 행렬(520)의 두 번째 N×N 정사각 행렬(A)에 대응되는 변수 노드들로부터 발생한 변수 노드 값들을 의미한다. 제 2 서브 행렬(520)의 두 번째 N×N 정사각 행렬(A)의 변수 노드-검사 노드 연결 관계는 제 1 서브 행렬(510)의 첫 번째 N×N 정사각 행렬(A)의 변수 노드-검사 노드 연결 관계와 동일한 규칙성을 갖는다. 따라서, 위와 같은 채널 시프트를 통해, 입력되는 변수 노드 메시지에 대응되는 서브 행렬이 바뀌어도, 변수 노드 메시지는 대응되는 검사 노드에 올바르게 할당된다.When the clock signal indicates the second sub-matrix 520 (see FIG. 10), the switch control unit 332a assigns the second part of the input variable node message to the channel to be connected to the first fixed wiring block 10 something to do. Here, the second part of the variable node message means variable node values generated from the variable nodes corresponding to the second N × N square matrix A of the second sub-matrix 520. The variable node-check node connection relationship of the second N × N square matrix A of the second sub-matrix 520 is determined by checking the variable node-check of the first N × N square matrix A of the first sub- And has the same regularity as the node connection relation. Therefore, even if the sub-matrix corresponding to the input variable node message is changed through the channel shift, the variable node message is correctly assigned to the corresponding check node.

도 17을 참조하면, N×N 정사각 행렬(C) 및 제 1 고정 배선 블록(30)의 연결 관계가 나타난다. N×N 정사각 행렬(C)은 제 1 행 제 7 열의 원소가 '1'이고 제 1 행의 나머지 원소는 '0'이다. 그리고, 본 발명에 따른 패리티 검사 행렬(500, 도 10 참조)에서 N×N 정사각 행렬(C)은 행단위로 순환하는 행렬 구조를 갖는다. 따라서, N×N 정사각 행렬(C)은 N×N 정사각 행렬(A)와 마찬가지로 행단위로 1씩 순환 시프트된다.Referring to FIG. 17, the connection relationship between the N × N square matrix C and the first fixed wiring block 30 is shown. In the N × N square matrix C, the elements in the first row and the seventh column are '1' and the remaining elements in the first row are '0'. In the parity check matrix 500 (see FIG. 10) according to the present invention, the N × N square matrix C has a matrix structure that circulates on the row. Accordingly, the N × N square matrix C is cyclically shifted one by one on the row as in the N × N square matrix A.

따라서, N×N 정사각 행렬(C)에 따라, 제 3 고정 배선 블록(30)의 변수 노드 단자들(A1, A2, A3, A4, A5, A6, A7, A8)은 검사 노드 단자들(B3, B4, B5, B6, B7, B8, B1, B2)에 차례로 고정 배선된다.Accordingly, the variable node terminals A1, A2, A3, A4, A5, A6, A7, and A8 of the third fixed wiring block 30 are connected to the check node terminals B3 , B4, B5, B6, B7, B8, B1, B2).

이때, 클럭 신호가 제 1 서브 행렬(510, 도 10 참조)을 나타내면, 스위치 제어부(332a)는 입력되는 변수 노드 메시지의 세 번째 부분을 제 3 고정 배선 블록(30)과 연결될 채널에 할당할 것이다. 여기서, 변수 노드 메시지의 세 번째 부분은 제 1 서브 행렬(510)의 세 번째 N×N 정사각 행렬(C)에 대응되는 변수 노드들로부터 발생한 변수 노드 값들을 의미한다.At this time, if the clock signal indicates the first sub-matrix 510 (see FIG. 10), the switch control unit 332a will allocate the third part of the input variable node message to the channel to be connected to the third fixed wiring block 30 . Here, the third part of the variable node message refers to variable node values generated from variable nodes corresponding to the third N × N square matrix C of the first sub-matrix 510.

그리고, 이때, 클럭 신호가 제 2 서브 행렬(520, 도 10 참조)을 나타내면, 스위치 제어부(332a)는 입력되는 변수 노드 메시지의 네 번째 부분을 제 3 고정 배선 블록(30)과 연결될 채널에 할당할 것이다. 여기서, 변수 노드 메시지의 네 번째 부분은 제 2 서브 행렬(520)의 네 번째 N×N 정사각 행렬(C)에 대응되는 변수 노드들로부터 발생한 변수 노드 값들을 의미한다. 이처럼, 제 1 스위치 네트워크(15)는 고정 배선 블록과 연결되는 채널을 시프트함으로써, 변수 노드 메시지를 대응되는 검사 노드에 올바르게 할당할 수 있다.When the clock signal indicates the second sub-matrix 520 (see FIG. 10), the switch control unit 332a assigns the fourth part of the input variable node message to the channel to be connected to the third fixed wiring block 30 something to do. Here, the fourth part of the variable node message means variable node values generated from the variable nodes corresponding to the fourth N × N square matrix C of the second sub-matrix 520. As such, the first switch network 15 can correctly assign the variable node message to the corresponding check node by shifting the channel connected to the fixed wiring block.

패리티 검사 행렬(500)의 인접하는 서브 행렬들은 한 블록만큼 블록 순환하는 관계에 있다. 따라서, 위와 같이 단순한 채널 시프트를 수행함으로써, 동일한 고정 배선 블록들(10, 20, 30, 40, 50, 도 15 참조)을 통해 패리티 검사 행렬(500)의 모든 변수 노드들 및 검사 노드들 사이의 연결을 수행할 수 있다.Adjacent sub-matrices of the parity check matrix 500 are in a block-circulating relationship by one block. Thus, by performing the simple channel shift as described above, all the variable nodes and check nodes of the parity check matrix 500 through the same fixed wiring blocks 10, 20, 30, 40, 50 Connection can be performed.

한편, 여기서는 제 1 스위치 네트워크(332)의 구성 및 동작에 대해서만 설명하였다. 그러나, 제 2 스위치 네트워크(334)도 실질적으로 제 1 스위치 네트워크(332)와 동일하게 동작한다. 다만, 제 2 스위치 네트워크(334)는 검사 노드 블록(333)으로부터 검사 노드 메시지를 입력받아 변수 노드 블록(331)에 출력하는 것이 다르다. Here, only the configuration and operation of the first switch network 332 have been described. However, the second switch network 334 also operates substantially the same as the first switch network 332. However, the second switch network 334 receives the check node message from the check node block 333 and outputs the check node message to the variable node block 331.

한편, 여기서는 제 1 및 제 2 스위치 네트워크(332)를 고정 배선 블록들을 사용하여 구현하는 예만 설명되었으나, 앞서 설명한 바와 같이 제 1 및 제 2 스위치 네트워크(332)는 병렬 시프터(미도시)를 사용하여 구현될 수 있다.However, as described above, the first and second switch networks 332 may be implemented by using a parallel shifter (not shown), for example, Can be implemented.

본 발명의 패리티 검사 행렬(500)은 서브 행렬마다 블록 순환하는 행렬 구조를 가진다. 따라서, 병렬 시프터는 제 1 서브 블록(510)에 따른 변수 노드-검사 노드 연결 관계를 기초로 입출력 경로를 병렬 시프트시킴으로써, 전체 패리티 검사 행렬(500)에 대한 변수 노드-검사 노드 간 데이터 전송을 중계할 수 있다. The parity check matrix 500 of the present invention has a matrix structure that is block-circulated for each sub-matrix. Accordingly, the parallel shifter performs parallel shift of the input / output path based on the variable node-check node connection relation according to the first sub-block 510, thereby relaying the variable node-check node data transmission to the entire parity check matrix 500 can do.

실시 예로서, 제 1 및 제 2 스위치 네트워크는 병렬 시프터 및 병렬 시프터를 제어하는 제어부를 포함할 수 있다. 병렬 시프터를 포함하는 스위치 네트워크의 구체적인 구성 및 동작은 당해 기술 분야에 널리 알려져 있으므로 그에 대한 설명은 생략한다.As an embodiment, the first and second switch networks may include a controller for controlling the parallel shifter and the parallel shifter. The specific configuration and operation of the switch network including the parallel shifter are well known in the art, and a description thereof will be omitted.

도 18은 도 1에 도시된 반도체 메모리 시스템(1000)의 응용 예를 보여주는 블록도이다. 도 18을를 참조하면, 반도체 메모리 시스템(2000)은 저장 장치(2100) 및 컨트롤러(2200)를 포함한다. 저장 장치(2100)는 복수의 저장 칩들을 포함한다. 복수의 저장 칩들은 복수의 그룹들(2100a, 2100b, 2100c)로 분할된다. 18 is a block diagram showing an application example of the semiconductor memory system 1000 shown in FIG. 18, the semiconductor memory system 2000 includes a storage device 2100 and a controller 2200. [ Storage device 2100 includes a plurality of storage chips. A plurality of storage chips are divided into a plurality of groups 2100a, 2100b, and 2100c.

복수의 저장 칩들은 각 그룹마다 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 예시적으로, 복수의 저장 칩들은 복수의 그룹에 각각 할당된 복수의 채널들을 통해 컨트롤러(2200)와 통신할 수 있다.The plurality of storage chips are configured to communicate with the controller 2200 via one common channel for each group. Illustratively, a plurality of storage chips may communicate with the controller 2200 through a plurality of channels each assigned to a plurality of groups.

컨트롤러(2200)는 도 3에서 설명된 EEC 디코더(300, 도 3 참조)와 동일한 구성을 갖는 복수의 ECC 디코더들(ECC1, ECC2, ECCn)을 포함한다. ECC 디코더들(ECC1, ECC2, ECCn)은 저장 장치(2100)로부터 읽어지는 데이터의 에러를 정정한다.The controller 2200 includes a plurality of ECC decoders ECC1, ECC2, ECCn having the same configuration as the EEC decoder 300 (see Fig. 3) described in Fig. The ECC decoders ECC1, ECC2, and ECCn correct errors in data read from the storage device 2100. [

ECC 디코더들(ECC1, ECC2, ECCn)은 컨트롤러(2200)와 저장 장치(2100)를 연결하는 채널들의 수에 해당하는 만큼 제공된다. 하나의 ECC 디코더는 하나의 채널에 연결된 저장 칩들의 에러를 정정한다.ECC decoders ECC1, ECC2 and ECCn are provided corresponding to the number of channels connecting the controller 2200 and the storage device 2100. [ One ECC decoder corrects errors of storage chips connected to one channel.

본 실시 예에서 ECC 디코더들(ECC1, ECC2, ECCn)은 저장 장치(2100)로부터 읽어낸 데이터에 대해 RS-LDPC 디코딩을 수행한다. 그리고, ECC 디코더들(ECC1, ECC2, ECCn)은 도 9 내지 도 13에서 설명한 패리티 검사 행렬(500, 도 10 참조)을 사용하여, 변수 노드들과 검사 노드들간에 데이터를 전송하고, 읽어낸 데이터를 디코딩한다. 본 발명에 따른 패리티 검사 행렬(500)은 RS-LDPC 부호의 에러 정정 성능을 유지하면서도, 간단한 행렬 구조를 갖는다. 따라서, 본 실시 예에 따른 메모리 시스템(2000)은 높은 에러 정정 성능을 가지면서, 동시에 ECC 디코더(300)의 하드웨어 복잡도를 감소시킬 수 있다. 또한, ECC 디코더(300)의 연산 처리량도 감소될 수 있다.In the present embodiment, the ECC decoders ECC1, ECC2, and ECCn perform RS-LDPC decoding on data read from the storage device 2100. [ The ECC decoders ECC1, ECC2 and ECCn transmit data between the variable nodes and the check nodes using the parity check matrix 500 (see Fig. 10) described in Figs. 9 to 13, / RTI > The parity check matrix 500 according to the present invention has a simple matrix structure while maintaining the error correction performance of the RS-LDPC code. Therefore, the memory system 2000 according to the present embodiment can reduce the hardware complexity of the ECC decoder 300 while having a high error correction capability. Also, the computational throughput of the ECC decoder 300 can be reduced.

도 18에서는, 하나의 채널에 복수의 저장 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 저장 칩이 연결되도록 저장 시스템(2000)은 변형될 수 있다.In FIG. 18, a plurality of storage chips are connected to one channel. However, the storage system 2000 can be modified such that one storage chip is connected to one channel.

도 19는 본 발명의 실시 예에 따른 메모리 카드(3000)를 보여준다. 도 19를 참조하면, 메모리 카드(3000)는 저장 장치(3100), 컨트롤러(3200)를 포함한다. 여기서, 저장 장치(3100)는 플래시 메모리를 비롯한 불휘발성 메모리 장치일 수 있다.19 shows a memory card 3000 according to an embodiment of the present invention. Referring to Fig. 19, the memory card 3000 includes a storage device 3100 and a controller 3200. Fig. Here, the storage device 3100 may be a nonvolatile memory device including a flash memory.

컨트롤러(3200)는 도 3에서 설명된 바와 동일한 ECC 디코더(3300)를 포함한다. ECC 디코더(3300)는 저장 장치(3100)로부터 읽어지는 데이터의 에러를 정정한다.The controller 3200 includes the same ECC decoder 3300 as described in FIG. The ECC decoder 3300 corrects the error of the data read from the storage device 3100.

앞서 설명한 바와 같이 ECC 디코더(3300)는 단순화된 구조를 갖는 패리티 검사 행렬(500, 도 10 참조)을 사용하여, 변수 노드들과 검사 노드들간에 데이터를 전송하고, 읽어낸 데이터를 디코딩한다. 본 발명에 따른 패리티 검사 행렬(500)은 RS-LDPC 부호의 에러 정정 성능을 유지하면서도, 간단한 행렬 구조를 갖는다. 따라서, 본 실시 예에 따른 메모리 카드(3000)는 높은 에러 정정 성능을 가지면서, 동시에 ECC 디코더(3300)의 하드웨어 복잡도를 감소시킬 수 있다. 또한, ECC 디코더(3300)의 연산 처리량도 감소될 수 있다.As described above, the ECC decoder 3300 transmits data between the variable nodes and the check nodes using the parity check matrix 500 (see FIG. 10) having a simplified structure, and decodes the read data. The parity check matrix 500 according to the present invention has a simple matrix structure while maintaining the error correction performance of the RS-LDPC code. Therefore, the memory card 3000 according to the present embodiment can reduce the hardware complexity of the ECC decoder 3300 while having a high error correction capability. Also, the computational throughput of the ECC decoder 3300 can be reduced.

메모리 카드(3000)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드들을 구성한다.The memory card 3000 may be a personal computer memory card (PCMCIA), a compact flash card CF, a smart media card SM, a memory stick, a multimedia card (MMC, RS-MMC, MMCmicro) SD cards (SD, miniSD, microSD, SDHC), universal flash memory (UFS), and the like.

도 20은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(Solid State Drive, 이하 SSD)를 나타내는 블록도이다. 도 20을 참조하면, 사용자 장치(4000)는 SSD(4100) 및 호스트(4200)를 포함한다. SSD(4100)는 불휘발성 메모리 장치(4130), SSD 컨트롤러(4110), ECC 디코더(4120) 및 그리고 버퍼 메모리(4140)를 포함한다.20 is a block diagram showing a solid state drive (SSD) according to an embodiment of the present invention. Referring to FIG. 20, a user device 4000 includes an SSD 4100 and a host 4200. The SSD 4100 includes a nonvolatile memory device 4130, an SSD controller 4110, an ECC decoder 4120, and a buffer memory 4140.

SSD 컨트롤러(4110)는 호스트(4200)와 SSD(4100)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(4110)는 호스트(4200)의 버스 포맷(Bus format)에 대응하여 SSD(4100)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(4110)는 호스트(4200)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(4110)는 불휘발성 메모리 장치(4130)를 액세스한다. 호스트(4200)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.The SSD controller 4110 provides a physical connection between the host 4200 and the SSD 4100. That is, the SSD controller 4110 provides interfacing with the SSD 4100 corresponding to the bus format of the host 4200. In particular, the SSD controller 4110 decodes the instructions provided by the host 4200. [ Depending on the decoded result, the SSD controller 4110 accesses the non-volatile memory device 4130. (PCI) express, ATA, PATA (Parallel ATA), SATA (Serial ATA), SAS (Serial Attached SCSI), and the like are used as the bus format of the host 4200. [ And the like.

버퍼 메모리(4140)에는 호스트(4200)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(4130)로부터 읽혀진 데이터가 일시 저장된다. 호스트(4200)의 읽기 요청시에 불휘발성 메모리 장치(4130)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(4140)는 캐시된 데이터를 직접 호스트(4200)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(4200)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(4100)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(4200)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(4140)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다. The buffer memory 4140 temporarily stores write data provided from the host 4200 or data read from the nonvolatile memory device 4130. When data existing in the nonvolatile memory device 4130 is cached at the time of the read request of the host 4200, the buffer memory 4140 supports a cache function of directly providing the cached data to the host 4200 . In general, the data transfer rate by the bus format (e.g., SATA or SAS) of the host 4200 is much faster than the transfer rate of the memory channel of the SSD 4100. That is, when the interface speed of the host 4200 is much higher, performance degradation caused by speed difference can be minimized by providing a buffer memory 4140 of a large capacity.

버퍼 메모리(4140)는 대용량의 보조 기억 장치로 사용되는 SSD(4100)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(4140)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. The buffer memory 4140 may be provided to a synchronous DRAM (DRAM) to provide sufficient buffering in the SSD 4100 used as a large capacity auxiliary storage device. However, it will be apparent to those skilled in the art that the buffer memory 4140 is not limited to the initiation thereof.

불휘발성 메모리 장치(4130)는 SSD(4100)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(4130)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리 장치로 제공될 수 있다. 불휘발성 메모리 장치(4130)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(4110)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(4130)가 낸드 플래시 메모리 장치인 경우를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, ReRAM, FRAM, MRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. The nonvolatile memory device 4130 is provided as a storage medium of the SSD 4100. For example, the non-volatile memory device 4130 may be provided as a NAND flash memory device having a large storage capacity. The non-volatile memory device 4130 may be comprised of a plurality of memory devices. In this case, each memory device is connected to the SSD controller 4110 on a channel-by-channel basis. Although the nonvolatile memory device 4130 is a NAND flash memory device as a storage medium, the nonvolatile memory device 4130 may be composed of other nonvolatile memory devices. For example, PRAM, ReRAM, FRAM, MRAM, NOR flash memory, or the like may be used as a storage medium, or a memory system in which heterogeneous memory devices are mixed can be applied.

상술한 SSD(4100)에서, SSD 컨트롤러(4110)는 도 3에서 설명된 ECC 디코더와 동일한 ECC 디코더(4120)를 포함한다. ECC 디코더(4120)는 불휘발성 메모리 장치(4130)로부터 읽어지는 데이터의 에러를 정정한다. In the above-described SSD 4100, the SSD controller 4110 includes the same ECC decoder 4120 as the ECC decoder described in FIG. The ECC decoder 4120 corrects errors in the data read from the nonvolatile memory device 4130.

앞서 설명한 바와 같이 ECC 디코더(4120)는 단순화된 구조를 갖는 패리티 검사 행렬(500, 도 10 참조)을 사용하여, 변수 노드들과 검사 노드들간에 데이터를 전송하고, 읽어낸 데이터를 디코딩한다. 본 발명에 따른 패리티 검사 행렬(500)은 RS-LDPC 부호의 에러 정정 성능을 유지하면서도, 간단한 행렬 구조를 갖는다. 따라서, 본 실시 예에 따른 SSD(4100)는 높은 에러 정정 성능을 가지면서, 동시에 ECC 디코더(4120)의 하드웨어 복잡도를 감소시킬 수 있다. 또한, ECC 디코더(4120)의 연산 처리량도 감소될 수 있다.As described above, the ECC decoder 4120 transmits data between the variable nodes and the check nodes using the parity check matrix 500 (see FIG. 10) having a simplified structure, and decodes the read data. The parity check matrix 500 according to the present invention has a simple matrix structure while maintaining the error correction performance of the RS-LDPC code. Therefore, the SSD 4100 according to the present embodiment can reduce the hardware complexity of the ECC decoder 4120 while having a high error correction performance. Also, the computational throughput of the ECC decoder 4120 can be reduced.

도 21은 본 발명의 실시 예에 따른 반도체 메모리 시스템 및 그것을 포함하는 컴퓨팅 시스템의 개략적인 구성을 나타내는 도면이다. 도 21을 참조하면, 본 발명에 따른 컴퓨팅 시스템(5000)은 버스(5600)에 전기적으로 연결된 불휘발성 메모리 장치(5510), 메모리 컨트롤러(5520), 마이크로프로세서(5100), 랜덤 액세스 메모리(5200, RAM) 및 사용자 인터페이스(5300)를 포함할 수 있다. 21 is a diagram showing a schematic configuration of a semiconductor memory system and a computing system including the semiconductor memory system according to an embodiment of the present invention. 21, a computing system 5000 in accordance with the present invention includes a non-volatile memory device 5510 electrically coupled to a bus 5600, a memory controller 5520, a microprocessor 5100, a random access memory 5200, RAM) and a user interface 5300.

도 21의 컴퓨팅 시스템(5000)에서, 불휘발성 메모리 장치(5510)는 도 20에서 설명한 불휘발성 메모리 장치(4130, 도 20 참조)와 실질적으로 동일한 장치일 수 있다. 불휘발성 메모리 장치(5510)는 낸드 플래시 메모리 장치일 수 있다.In the computing system 5000 of FIG. 21, the non-volatile memory device 5510 may be substantially the same device as the non-volatile memory device 4130 (see FIG. 20) described in FIG. The non-volatile memory device 5510 may be a NAND flash memory device.

메모리 컨트롤러(5520)는 도 3에서 설명한 ECC 디코더(300, 도 3 참조)와 동일한 ECC 디코더(5530)를 포함할 수 있다. ECC 디코더(5530)는 불휘발성 메모리 장치(5510)로부터 읽어낸 에러를 정정한다. 앞서 설명한 바와 같이 ECC 디코더(5530)는 단순화된 구조를 갖는 패리티 검사 행렬(500, 도 10 참조)을 사용하여, 변수 노드들과 검사 노드들간에 데이터를 전송하고, 읽어낸 데이터를 디코딩한다. 본 발명에 따른 패리티 검사 행렬(500)은 RS-LDPC 부호의 에러 정정 성능을 유지하면서도, 간단한 행렬 구조를 갖는다. 따라서, 본 실시 예에 따른 반도체 메모리 시스템 장치(5500) 및 그것을 포함하는 컴퓨팅 시스템(5000)은 높은 에러 정정 성능을 가지면서, 동시에 ECC 디코더(5530)의 하드웨어 복잡도를 감소시킬 수 있다. 또한, ECC 디코더(5530)의 연산 처리량도 감소될 수 있다.The memory controller 5520 may include the same ECC decoder 5530 as the ECC decoder 300 (see FIG. 3) described in FIG. The ECC decoder 5530 corrects the error read from the nonvolatile memory device 5510. As described above, the ECC decoder 5530 transmits data between the variable nodes and the check nodes using the parity check matrix 500 (see FIG. 10) having a simplified structure, and decodes the read data. The parity check matrix 500 according to the present invention has a simple matrix structure while maintaining the error correction performance of the RS-LDPC code. Therefore, the semiconductor memory system device 5500 and the computing system 5000 including the same according to the present embodiment can reduce the hardware complexity of the ECC decoder 5530 while having high error correction performance. Also, the processing throughput of the ECC decoder 5530 can be reduced.

본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(5400)가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. 메모리 컨트롤러(6200)와 불휘발성 메모리 장치(6100)는, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.If the computing system according to the present invention is a mobile device, a battery 5400 for supplying the operating voltage of the computing system may additionally be provided. Although not shown in the drawing, an application chipset, a camera image processor (CIS), a mobile DRAM, and the like may be further provided in the computing system according to the present invention. The memory controller 6200 and the nonvolatile memory device 6100 can constitute, for example, a solid state drive / disk (SSD) using nonvolatile memory for storing data.

본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.The nonvolatile memory device and / or memory controller according to the present invention may be implemented using various types of packages. For example, the flash memory device and / or the memory controller according to the present invention can be implemented as a package on package (PoP), ball grid arrays (BGAs), chip scale packages (CSPs), plastic leaded chip carriers (PLCC) Linear Package (PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flatpack Outline (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline (TSOP), System In Package (SIP), Multi Chip Package (MCP), Wafer-Level Fabricated Package (WFP) WSP), and the like.

본 발명의 상세한 설명에서는 구체적인 실시 예를 들어 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한 각 실시 예는 여러 가지 형태로 변형될 수 있다. 또한, 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허 청구범위와 균등한 것들에 의해 정해져야 한다.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. In addition, although specific terms are used herein, they are used for the purpose of describing the present invention only and are not used to limit the scope of the present invention described in the claims or the claims. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by the equivalents of the claims of the present invention as well as the claims of the following.

Claims (10)

메모리 장치로부터 읽어낸 데이터를 저장하는 읽기 데이터 관리부;
상기 읽기 데이터 관리부로부터 출력되는 상기 데이터에 우도(Likelihood Ratio)값들을 사상하여 사상 데이터를 출력하는 우도값 사상부; 및
상기 사상 데이터에 대해, 패리티 검사 행렬(Parity Check Matrix)를 사용하여 저밀도 패리티 검사(Low Density Parity Check) 디코딩을 수행하는 디코딩 부를 포함하되,
상기 패리티 검사 행렬은 k 개의 N×M 서브 행렬을 포함하는 (k*N)×M 행렬이고(단, k, N, M은 2 이상의 정수),
상기 k 개의 N×M 서브 행렬은,
N×M 크기를 갖는 제 1 서브 행렬; 및
N×M 크기를 갖고, 상기 제 1 서브 행렬과 인접하여 위치하며, 상기 제 1 서브 행렬을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖는 제 2 서브 행렬을 포함하고,
상기 제 1 서브 행렬은,
리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 부호어(code word)를 심볼 위치 벡터로 변환한 이진(binary) 순열인 제 1 행;
상기 제 1 행과 인접하여 위치하고, 상기 제 1 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖는 제 2 행; 및
상기 제 2 행과 인접하여 위치하고, 상기 제 2 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖되, 상기 제 1 행과는 다른 제 3 행을 포함하는 반도체 메모리 시스템.
A read data management unit for storing data read from the memory device;
A likelihood value mapping unit for mapping likelihood ratio values to the data output from the read data management unit to output mapped data; And
And a decoding unit for performing low density parity check decoding on the mapped data using a parity check matrix,
Wherein the parity check matrix is a (k * N) x M matrix (k, N, M is an integer of 2 or more) including k N × M submatrices,
Wherein the k < RTI ID = 0.0 > NxM <
A first sub-matrix having an N x M size; And
And a second sub-matrix having an N × M size and located adjacent to the first sub-matrix and having the same element arrangement as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to the circulation period M and,
The first sub-
A first row that is a binary permutation obtained by converting a code word generated according to a Reed-Solomon code into a symbol position vector;
A second row positioned adjacent to the first row and having the same elemental arrangement as a row in which the first row is cyclically shifted by one according to the circulation period N; And
And a third row which is located adjacent to the second row and has the same element arrangement as the row in which the second row is cyclically shifted by one according to the circulation period N, and which is different from the first row.
제 1 항에 있어서,
상기 디코딩 부는,
우도값 또는 검사 노드 메시지를 참조하여 변수 노드들 및 검사 노드들의 값들을 갱신하고, 상기 갱신된 변수 노드들 및 검사 노드들의 값들에 따라 상기 데이터의 디코딩을 수행하는 변수 노드 연산부;
상기 갱신된 변수 노드들의 값들을 변수 노드 메시지로서 수신하고, 상기 수신된 변수 노드 메시지를 참조하여 상기 검사 노드 메시지를 제공하는 검사 노드 연산부;
상기 변수 노드 블록으로부터 상기 검사 노드 블록으로의 변수 노드 메시지 전송을 중계하는 제 1 네트워크 부; 및
상기 검사 노드 블록으로부터 상기 변수 노드 블록으로의 검사 노드 메시지 전송을 중계하는 제 2 네트워크 부를 포함하는 반도체 메모리 시스템.
The method according to claim 1,
The decoding unit,
A variable node operator for updating values of variable nodes and check nodes by referring to a likelihood value or a check node message and decoding the data according to the updated variable nodes and the values of the check nodes;
A check node operation unit receiving the updated variable node values as a variable node message and providing the check node message with reference to the received variable node message;
A first network unit for relaying variable node message transmission from the variable node block to the check node block; And
And a second network unit for relaying the transmission of the check node message from the check node block to the variable node block.
제 2 항에 있어서,
상기 제 1 네트워크 부 또는 상기 제 2 네트워크 부는
상기 변수 노드 블록으로부터 입력된 변수 노드 메시지의 적어도 일부를 복수의 채널들 중 어느 하나에 할당하는 스위치 제어부; 및
상기 어느 하나의 채널과 연결된 복수의 입력 단자를 복수의 출력 단자에 고정 배선하는 고정 배선 블록을 포함하는 연결부를 포함하는 반도체 메모리 시스템.
3. The method of claim 2,
The first network unit or the second network unit
A switch controller for assigning at least a part of the variable node message input from the variable node block to one of the plurality of channels; And
And a fixed wiring block for fixedly connecting a plurality of input terminals connected to any one of the channels to a plurality of output terminals.
제 3 항에 있어서,
상기 스위치 제어부는 클럭 신호에 따라 상기 변수 노드 메시지의 적어도 일부를 대신하여 상기 변수 노드 메시지의 다른 일부를 상기 어느 하나의 채널에 할당하는 반도체 메모리 시스템.
The method of claim 3,
Wherein the switch control unit allocates a different part of the variable node message to the one of the channels in place of at least a part of the variable node message according to a clock signal.
제 2 항에 있어서,
상기 제 1 네트워크 부 또는 상기 제 2 네트워크 부는
상기 패리티 검사 행렬에 따라 상기 변수 노드 메시지를 상기 검사 노드들에 나누어 할당하는 병렬 시프터; 및
상기 병렬 시프터의 동작을 제어하는 시프터 제어부를 포함하는 반도체 메모리 시스템.
3. The method of claim 2,
The first network unit or the second network unit
A parallel shifter dividing the variable node message into the check nodes according to the parity check matrix; And
And a shifter control unit for controlling the operation of the parallel shifter.
제 1 항에 있어서,
상기 N은 리드-솔로몬(Reed-Solomon) 부호에 따라 상기 부호어(code word)를 생성하기 위해 사용되는 갈루아 필드의 원소의 개수인 메모리 시스템.
The method according to claim 1,
Wherein N is the number of elements of a Galois field used to generate the code word according to a Reed-Solomon code.
제 1 항에 있어서,
상기 에러 정정 상태의 판정 결과에 따라,
상기 디코딩부는 페일 메시지를 출력하고,
상기 읽기 데이터 관리부는 상기 페일 메시지에 응답하여 상기 메모리 장치로부터 읽어낸 추가 데이터를 저장하고,
상기 우도값 사상부는 상기 추가 데이터에 우도값들을 사상하여 추가 사상 데이터를 출력하고,
상기 디코딩부는 상기 추가 사상 데이터에 대해 상기 패리티 검사 행렬을 사용하여 저밀도 패리티 검사를 수행하는 반도체 메모리 시스템.
The method according to claim 1,
According to the determination result of the error correction state,
The decoding unit outputs a fail message,
Wherein the read data management unit stores the additional data read from the memory device in response to the fail message,
Wherein the likelihood value mapping unit maps the likelihood values to the additional data to output additional mapping data,
Wherein the decoding unit performs a low density parity check on the additional mapping data using the parity check matrix.
제 1 항에 있어서,
상기 메모리 장치는 낸드 플래시 메모리(NAND Flash Memory)를 포함하는 반도체 메모리 시스템.
The method according to claim 1,
Wherein the memory device comprises a NAND flash memory.
반도체 메모리 시스템의 데이터 읽기 방법에 있어서,
정상 읽기 전압들을 이용하여 상기 반도체 메모리 시스템에 저장된 데이터를 읽는 단계;
상기 읽혀진 데이터의 에러 정정을 위한 패리티 검사 행렬(Parity Check Matrix)을 복원하는 단계;
상기 복원된 패리티 검사 행렬(Parity Check Matrix)을 사용하여, 상기 읽혀진 데이터에 대한 저밀도 패리티 검사(Low Density Parity Check) 디코딩을 수행하는 단계; 및
상기 디코딩 결과에 따라, 상기 읽혀진 데이터의 에러를 정정한 결과를 출력하는 단계를 포함하되,
상기 저밀도 패리티 검사 행렬을 복원하는 단계는,
상기 저밀도 패리티 검사 행렬의 저장된 적어도 하나의 행을 읽는 단계; 및
상기 저밀도 패리티 검사 행렬의 나머지 행들이 각각 상기 읽은 적어도 하나의 행을 행 방향으로 1 이상의 크기만큼 순환 시프트시킨 형태의 원소 배열을 갖도록, 상기 저밀도 패리티 검사 행렬을 복원하는 단계를 포함하되,
상기 적어도 하나의 행은 리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 코드 워드를 심볼 위치 벡터로 변환한 이진(binary) 순열인 읽기 방법.
A method for reading data in a semiconductor memory system,
Reading data stored in the semiconductor memory system using normal read voltages;
Restoring a parity check matrix for error correction of the read data;
Performing Low Density Parity Check (LDPC) decoding on the read data using the recovered parity check matrix; And
And outputting a result of correcting the error of the read data according to the decoding result,
Wherein the step of restoring the low density parity check matrix comprises:
Reading at least one stored row of the low density parity check matrix; And
And restoring the low density parity check matrix so that the remaining rows of the low density parity check matrix each have an element array of a type in which at least one row read is circularly shifted by one or more in the row direction,
Wherein the at least one row is a binary permutation obtained by converting a codeword generated according to a Reed-Solomon code to a symbol position vector.
상기 제 9 항에 있어서,
상기 복원된 패리티 검사 행렬은 N×M 크기를 갖고 병렬로 배열된 제 1 및 제 2 서브 행렬을 포함하고(단, N, M은 2 이상의 정수),
상기 제 1 서브 행렬은,
상기 적어도 하나의 행;
상기 적어도 하나의 행과 인접하여 위치하고, 상기 적어도 하나의 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖는 제 1 시프트 행; 및
상기 제 1 시프트 행과 인접하여 위치하고, 상기 제 1 시프트 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖되, 상기 적어도 하나의 행과는 다른 제 2 시프트 행을 포함하고,
상기 제 2 서브 행렬은 상기 제 1 서브 행렬과 인접하여 위치하며, 상기 제 1 서브 행렬을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖는 읽기 방법.
10. The method of claim 9,
The restored parity check matrix includes first and second sub-matrices having N × M sizes (N and M are integers of 2 or more) arranged in parallel,
The first sub-
The at least one row;
A first shift row positioned adjacent to the at least one row and having the same elemental arrangement as the row cyclically shifted by one according to the cyclic period N; And
And a second shift row which is located adjacent to the first shift row and has the same element arrangement as the row in which the first shift row is cyclically shifted by 1 according to the circulation period N but is different from the at least one row,
Wherein the second sub-matrix is located adjacent to the first sub-matrix and has the same element array as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to the circulation period M.
KR1020130000283A 2012-03-23 2013-01-02 Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof KR102058499B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130000283A KR102058499B1 (en) 2013-01-02 2013-01-02 Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof
US13/755,222 US9141467B2 (en) 2012-03-23 2013-01-31 Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130000283A KR102058499B1 (en) 2013-01-02 2013-01-02 Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof

Publications (2)

Publication Number Publication Date
KR20140088423A true KR20140088423A (en) 2014-07-10
KR102058499B1 KR102058499B1 (en) 2020-01-22

Family

ID=51736987

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130000283A KR102058499B1 (en) 2012-03-23 2013-01-02 Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof

Country Status (1)

Country Link
KR (1) KR102058499B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160113001A (en) * 2015-03-20 2016-09-28 에스케이하이닉스 주식회사 Ldpc decoder, semiconductor memory system and operating method thereof
KR20170070933A (en) * 2015-12-14 2017-06-23 삼성전자주식회사 Generating method for low density parity check code and generating circuit for low density parity check code
US11323138B1 (en) 2020-10-29 2022-05-03 SK Hynix Inc. Reed-Solomon code soft-decision decoding method and device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102656075B1 (en) 2023-06-20 2024-04-08 성균관대학교산학협력단 Method and apparatus for generating code for single symbol error correction and double bit error correction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005302079A (en) * 2004-04-06 2005-10-27 Samsung Electronics Co Ltd Hologram medium recording/reproducing device and hologram medium reproducing device
KR20110006666A (en) * 2008-03-28 2011-01-20 톰슨 라이센싱 Apparatus and method for decoding signals

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005302079A (en) * 2004-04-06 2005-10-27 Samsung Electronics Co Ltd Hologram medium recording/reproducing device and hologram medium reproducing device
KR20110006666A (en) * 2008-03-28 2011-01-20 톰슨 라이센싱 Apparatus and method for decoding signals

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160113001A (en) * 2015-03-20 2016-09-28 에스케이하이닉스 주식회사 Ldpc decoder, semiconductor memory system and operating method thereof
KR20170070933A (en) * 2015-12-14 2017-06-23 삼성전자주식회사 Generating method for low density parity check code and generating circuit for low density parity check code
US11323138B1 (en) 2020-10-29 2022-05-03 SK Hynix Inc. Reed-Solomon code soft-decision decoding method and device
KR20220057087A (en) 2020-10-29 2022-05-09 에스케이하이닉스 주식회사 Reed-solomon code soft-decision decoding method and device

Also Published As

Publication number Publication date
KR102058499B1 (en) 2020-01-22

Similar Documents

Publication Publication Date Title
US9141467B2 (en) Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
US9996420B2 (en) Error-correction encoding and decoding
US9792176B2 (en) Method and apparatus for encoding and decoding data in memory system
KR101753498B1 (en) Updating Reliability Data
KR101892319B1 (en) Encoding and decoding techniques using low-density parity check codes
US10445175B2 (en) Controller and operating method thereof
US10707902B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
KR102068030B1 (en) Memory controller and operating method of the same
US20160210190A1 (en) Flash memory system and operating method thereof
KR102528972B1 (en) Method and system for soft-decision decoding
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
WO2019246527A1 (en) Method and apparatus for improved data recovery in data storage systems
KR102058499B1 (en) Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof
US9858994B2 (en) Memory system with MLC memory cells and partial page compression or reduction
US10326473B2 (en) Symbol-based coding for NAND flash devices
US10700708B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
CN112134573B (en) Method for storing data in a memory device and method for retrieving data
CN110971240B (en) Decoder design method and memory controller
CN113904690A (en) Decoding device, apparatus, method and computer program
US11115055B2 (en) Method and apparatus for encoding and decoding data in memory system
RU2743784C1 (en) Data coding method based on ldpc code
US11394403B1 (en) Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices
CN116648860A (en) Decoding method of LDPC (Low Density parity check) code and decoder of LDPC code
KR20230132697A (en) Device for decoding a generalized concatenated code codeword, storage system and method for controlling the system
CN117792405A (en) G-LDPC decoder and G-LDPC decoding method

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant