KR102058499B1 - 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
KR102058499B1
KR102058499B1 KR1020130000283A KR20130000283A KR102058499B1 KR 102058499 B1 KR102058499 B1 KR 102058499B1 KR 1020130000283 A KR1020130000283 A KR 1020130000283A KR 20130000283 A KR20130000283 A KR 20130000283A KR 102058499 B1 KR102058499 B1 KR 102058499B1
Authority
KR
South Korea
Prior art keywords
matrix
sub
row
parity check
data
Prior art date
Application number
KR1020130000283A
Other languages
Korean (ko)
Other versions
KR20140088423A (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

Abstract

본 발명에서는 연산량 및 하드웨어 복잡도가 감소된 RS-LDPC 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법을 제공한다. 본 발명에 따른 반도체 메모리 시스템은 메모리 장치로부터 읽어낸 데이터를 저장하는 읽기 데이터 관리부, 읽기 데이터 관리부로부터 출력되는 데이터에 우도(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 행을 포함한다.The present invention provides a semiconductor memory system including an RS-LDPC decoder with reduced computation and hardware complexity, and a read method thereof. The 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 the likelihood ratio values to data output from the read data management unit, and outputting mapping data. And a decoding unit for performing a low density parity check decoding using a parity check matrix, wherein the parity check matrix comprises k * N × containing k N × M submatrices. Where k, N, and M are two or more integers, the k N × M submatrices have a first submatrix having an N × M size and an N × M size and are adjacent to the first submatrix. And a second sub-matrix having 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 cyclic period M, and the first sub-matrix is a reed-sol The first row, which is a binary permutation of converting a code word generated according to a Reed-Solomon code into a symbol position vector, is located adjacent to the first row, and the first row is placed in the cycle N. According to the second and second rows having the same element array as the row cyclically shifted by 1, and having the same element array as the row in which the second row is cyclically shifted by 1 according to the cyclic period N, but having the same And a third row different from.

Description

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

본 발명은 반도체 메모리 시스템에 관한 것으로서, 더욱 상세하게는 저장된 데이터를 읽어낼 때 읽어낸 데이터의 에러를 정정하기 위한 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법에 관한 것이다.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 an error of read data when reading stored data. .

반도체 메모리 장치(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 a semiconductor such as silicon (Si), germanium (Ge, Germanium), gallium arsenide (GaAs), or indium phospide (InP). to be. Semiconductor memory devices are largely classified into volatile memory devices and nonvolatile memory devices.

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

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

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

본 발명의 다른 목적은 연산 처리량 및 하드웨어 복잡도가 감소된 RS-LDPC 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법을 제공하는 데 있다.Another object of the present invention is to provide a semiconductor memory system including an RS-LDPC decoder having 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 행을 포함한다.According to another aspect of the present invention, there is provided a semiconductor memory system including a read data manager configured to store data read from a memory device; A likelihood value mapping unit for outputting mapping data by mapping likelihood ratio values to the data output from the read data management unit; And a decoding unit configured to perform a low density parity check decoding on the mapping data using a parity check matrix, wherein the parity check matrix includes k N × M submatrices. A k * N × M matrix (where k, N, and M are integers of 2 or more), and the k N × M sub-matrixes comprise a first sub-matrix having an N × M size; And a second sub-matrix having an N × M size and positioned adjacent to the first sub-matrix, the second sub-matrix having the same element array as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to a cyclic period M. The first sub-matrix includes: a first row which is a binary permutation of converting a code word generated according to a Reed-Solomon code into a symbol position vector; A second row adjacent to the first row and having the same elemental arrangement as the row in which the first row is cyclically shifted by one in accordance with a cyclic period N; And a third row positioned adjacent to the second row and having the same element array as the row in which the second row is cyclically shifted by one in accordance with a cyclic period N, but different from the first row.

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

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

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

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

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

실시 예로서, 상기 저밀도 패리티 검사 디코딩에 의한 에러 정정 상태를 판정하는 신드롬 검사부를 더 포함한다.The apparatus may further include a syndrome checker configured to determine an error correction state by the low density parity check decoding.

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

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

실시 예로서, 상기 패리티 검사 행렬을 저장하는 저장부를 더 포함한다.In example embodiments, the apparatus may further include a storage configured to store the parity check matrix.

실시 예로서, 상기 메모리 장치는 낸드 플래시 메모리(NAND Flash Memory)를 포함한다.In example embodiments, the memory device may include 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 행을 포함한다.A data reading method of a semiconductor memory system according to the present invention includes reading data stored in the semiconductor memory system using first read voltages; Performing a low density parity check decoding on the read data using a parity check matrix; And outputting a result of correcting an error of the read data according to the decoding result, wherein the parity check matrix is a k * N × M matrix including k N × M sub-matrices (where k Is an integer of 2 or more), wherein the k N × M sub-matrixes have a first sub-matrix having an N × M size; And a second sub-matrix having an N × M size and positioned adjacent to the first sub-matrix, the second sub-matrix having the same element array as the matrix in which the first sub-matrix is cyclically shifted by N in the row direction according to a cyclic period M. Wherein the first sub-matrix comprises: a first row which is a binary permutation of converting a code word generated according to a Reed-Solomon code into a symbol position vector; A second row located adjacent to the first row and having the same elemental arrangement as the row in which the first row is cyclically shifted by one in accordance with a cyclic period N; And a third row positioned adjacent to the second row and having the same element array as the row in which the second row is cyclically shifted by one in accordance with a cyclic period N, but different from the first row.

실시 예로서, 상기 디코딩 결과에 따라, 상기 제 1 읽기 전압과는 다른 제 2 읽기 전압을 이용하여 상기 저장된 데이터를 다시 읽는 단계; 상기 다시 읽혀진 데이터에 대해 상기 패리티 검사 행렬(Parity Check Matrix)을 사용하여 저밀도 패리티 검사 디코딩을 수행하는 단계를 포함한다.The method may further include reading back the stored data using a second read voltage different from the first read voltage according to the decoding result. Performing low density parity check decoding on the read data again 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, a data reading method of a semiconductor memory system may include 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 decoding on the read data using the reconstructed Parity Check Matrix; And outputting a result of correcting an error of the read data according to the decoding result, wherein reconstructing the low density parity check matrix comprises: reading at least one stored row of the low density parity check matrix; And restoring the low density parity check matrix such that the remaining rows of the low density parity check matrix each have an element array in the form of a cyclic shift of the read at least one row in the row direction by at least one size. One row is a binary permutation of code words generated according to Reed-Solomon codes converted to symbol position vectors.

실시 예로서, 상기 복원된 패리티 검사 행렬은 N×M 크기를 갖고 병렬로 배열된 제 1 및 제 2 서브 행렬을 포함하고(단, N, M은 2 이상의 정수), 상기 제 1 서브 행렬은 상기 적어도 하나의 행; 상기 적어도 하나의 행과 인접하여 위치하고, 상기 적어도 하나의 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖는 제 1 시프트 행; 및 상기 제 1 시프트 행과 인접하여 위치하고, 상기 제 1 시프트 행을 순환 주기 N에 따라 1만큼 순환 시프트시킨 행과 동일한 원소 배열을 갖되, 상기 적어도 하나의 행과는 다른 제 2 시프트 행을 포함하고, 상기 제 2 서브 행렬은 상기 제 1 서브 행렬과 인접하여 위치하며, 상기 제 1 서브 행렬을 순환 주기 M에 따라 행방향으로 N만큼 순환 시프트시킨 행렬과 동일한 원소 배열을 갖는다.In an embodiment, the reconstructed parity check matrix includes first and second sub-matrices having an N × M size and arranged in parallel (where N and M are integers of 2 or more), and the first sub-matrix is 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 in which the at least one row is cyclically shifted by one in accordance with a cyclic period N; And a second shift row positioned adjacent to the first shift row and having the same element array as the row in which the first shift row is cyclically shifted by one in accordance with a cyclic period N, wherein the second shift row is different from the at least one row. The second sub-matrix is positioned 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 cyclic 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 computational throughput required for the RS-LDPC decoder of the semiconductor memory system in 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 illustrating a semiconductor memory system 1000 according to an exemplary embodiment of the inventive concept.
2 is a block diagram illustrating a method of decoding data by a semiconductor memory system according to the present invention.
3 is a block diagram illustrating an ECC decoder 300 illustrated in FIG. 1.
4 is a flowchart illustrating a reading method of the semiconductor memory device shown in FIG. 1.
5 is a diagram for illustrating a parity check matrix structure of an LDPC code.
FIG. 6 is a Tanner graph illustrating a connection relationship between variable nodes and check nodes according to the parity check matrix illustrated in FIG. 5.
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 of a plurality of sub-matrix of the parity check matrix illustrated in FIG. 7.
9 to 11 illustrate a parity check matrix proposed according to the present invention.
12 is a flowchart illustrating a method of generating the parity check matrix 500 proposed by the present invention.
13 is a diagram exemplarily illustrating a parity check matrix according to the present invention.
14 is a block diagram illustrating the decoder of FIG. 3 according to an embodiment of the present invention.
FIG. 15 is a block diagram illustrating an exemplary switch network shown in FIG. 14.
16 and 17 exemplarily illustrate fixed wiring blocks of a switch network according to the present invention.
18 is a block diagram illustrating an application example of the semiconductor memory system 1000 shown in FIG. 1.
19 illustrates a memory card 3000 according to an embodiment of the present invention.
20 is a block diagram illustrating a solid state drive according to an exemplary embodiment of the present invention.
21 is a diagram illustrating a schematic configuration of a semiconductor memory system and a computing system including the same according to an embodiment of the present disclosure.

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

본 명세서에서, 어떤 부분이 어떤 구성요소를 포함한다고 언급되는 경우에, 이는 그 외의 다른 구성요소를 더 포함할 수도 있다는 것을 의미한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.In the present specification, when a part is mentioned to include a certain component, it means that it may further include other components. Hereinafter, exemplary 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 illustrating a semiconductor memory system 1000 according to an exemplary embodiment of the inventive concept. Referring to FIG. 1, the semiconductor memory system 1000 includes a storage device 100 and a controller 200. In an embodiment, the storage device 100 may include a nonvolatile memory device (eg, 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 the host and the storage device 100. In response to a request from a host, the controller 200 is configured to access the storage device 100. For example, the controller 200 is configured to control 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)와 데이터를 교환하도록 구성된다.In exemplary embodiments, the controller 200 is configured to provide a control signal and an 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 300. The ECC decoder 300 performs decoding using an error correction code (ECC) on the data read from the storage device 100. The ECC decoder 300 performs decoding to correct an error of the read data. The ECC decoder 300 performs decoding by using a Reed Solomon-Low Density Parity Check (RS-LDPC) 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 include a universal serial bus (USB), a multimedia card (MMC), a peripheral component interconnection (PCI), a PCI-express (PCI-express), an advanced technology attachment (ATA), a serial-ATA, parallel Communicate with the 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 structure much simpler 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, the feature of the RS-LDPC code with excellent error correction capability is maintained as it is. 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 computation required during decoding due to the simplified structure of the parity check matrix while maintaining excellent error correction performance of the RS-LDPC code. Therefore, the decoding efficiency of the memory semiconductor system 1000 may be improved.

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

도 2는 본 발명에 따른 반도체 메모리 시스템이 데이터를 디코딩하는 방법을 나타내는 블록도이다. 도 2를 참조하면, 메모리 반도체 시스템은 도 1에 도시된 저장 장치(100), ECC 디코더(300) 외에도 인코더(400)를 더 포함할 수 있다. 실시 예로서, 인코더(400)는 컨트롤러(200, 도 1 참조)에 포함될 수 있다.2 is a block diagram illustrating a method of decoding data by a semiconductor memory system according to the present invention. Referring to FIG. 2, the memory semiconductor system may further include an encoder 400 in addition to the storage device 100 and the ECC decoder 300 illustrated in FIG. 1. In an embodiment, 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 a host (see FIG. 1), the input data is encoded by the encoder 400. At this time, the encoder 400 performs LDPC encoding on the input data using the parity check matrix. The encoded data is programmed into the storage device 100 as write data WD. In this case, the 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 data stored in the storage device 100 as read data RD. In this case, the read data RD may include an error E generated for various reasons. For example, an error E may occur due to a malfunction when the write data WD is programmed or data loss while the write data WD is being stored in the storage device 100. Alternatively, an error E may occur due to a malfunction in the read operation for reading the read data RD.

디코더(300)는 이러한 에러(E)를 제거하기 위해, 패리티 검사 행렬을 사용하여, 읽기 데이터(RD)에 LDPC 디코딩을 수행한다. 이때, 사용되는 패리티 검사 행렬은 인코딩에서 사용된 것과 동일하다. 디코딩된 결과는 디코딩된 데이터(Data’)로서 출력된다.The decoder 300 performs LDPC decoding on the read data RD by using a parity check matrix to eliminate this error E. FIG. In this case, the parity check matrix used is the same as that used in 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 generated using the RS-LDPC code has better error correction capability than the parity check matrix based on the normal LDPC code, but has a disadvantage in that the matrix structure is complicated. If the structure of the parity check matrix is complicated, the decoder 300 needs more operations for decoding the read data RD. In addition, in LDPC decoding, the structure of the complex parity check matrix 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 sub-matrix units and each sub-matrix having a quasi-cyclic structure while maintaining the characteristics of the RS-LDPC code. This parity check matrix has a very simple matrix structure. Therefore, the decoder 300 of the present invention can greatly reduce the amount of computation and hardware complexity required by performing RS-LDPC decoding using the proposed parity check matrix. It 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 illustrating an ECC decoder 300 illustrated in FIG. 1. 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 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 the 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 the data RD1 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)에 제공한다.In addition, 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 the data read as the second read data RD2. Here, the partial read voltage means a voltage adjacent to the normal read voltage but having a different voltage level 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 read data RD1 and RD2 provided. In an embodiment, the likelihood value mapper 320 may include a hard decision likelihood value register (not shown) for storing likelihood values to be mapped at the hard decision and a soft decision likelihood value register (s) for storing likelihood values to be mapped at the soft decision ( Not shown).

실시 예로서, 경판정 시에, 우도값 사상기(320)는 읽기 데이터 관리자(310)로부터 제 1 읽기 데이터(RD1)를 수신한다. 우도값 사상기(320)는 제 1 읽기 데이터(RD1)의 각 비트의 값에 따라, 제 1 읽기 데이터(RD1)를 대응되는 우도값들로 사상한다. In an exemplary embodiment, when the hard decision is made, 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)를 대응되는 우도값들로 사상한다. At 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)로서 출력된다.In hard decision or soft decision, 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 when the hard decision or the soft decision is made. The determination unit 330 LDPC decodes the received likelihood value data LLR. In the hard decision and the 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 determiner 330 updates the check nodes and variable nodes according to the parity check matrix at the time of LDPC decoding. The determination unit 330 performs a provisional decoding according to the update result (for example, posterior probability), calculates the decoded data and the parity check matrix, and determines whether the decoding is correctly performed according to the operation result. do.

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

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

위와 같은 검사 노드들 및 변수 노드들의 갱신과 잠정 디코딩은 반복적으로(iteratively) 수행된다. 검사 노드들 및 변수 노드들의 갱신과 잠정 디코딩은 하나의 디코딩 루프를 구성할 수 있다.Update and tentative decoding of the check nodes and variable nodes as described above are performed iteratively. Update and provisional decoding of check nodes and variable nodes may 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 according to the hard decision fails, the decoder 330 transmits a fail message to the read data manager 310. The read data manager 310 transmits a read request for soft decision to the controller 200 (see FIG. 1) in response to a fail message. Alternatively, when the hard decision is performed in the decoder 330 and the parity check according to the hard decision fails, the decoder 330 directly transmits a fail message to the controller 200. The controller 200 may prepare a read operation for soft decision in response to a fail message 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 corresponding likelihood values. In 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 about 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 a memory cell is read as '1' by the normal read voltage but read as '1' with a threshold voltage close to '0' by the partial read voltage, then this memory cell is relatively low. It 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 has a threshold voltage that is significantly different from '0' by the partial read voltage, such a memory cell has a relatively high likelihood value. Is thought to have. By using additional information on the threshold voltages of the memory cells, the decoding accuracy of the soft decision is higher than the decoding accuracy of the hard decision.

본 발명에서, 디코더(330)은 RS-LDPC 부호에 따르면서도 단순한 행렬 구조를 갖는 패리티 검사 행렬을 이용한다. 따라서, 디코더(330)는 높은 에러 정정 능력을 유지하면서, 필요한 연산량을 감소시킬 수 있다. 후술하겠지만, 특히, 변수 노드들과 검사 노드들 간의 스위칭 네트워크를 매우 단순한 구조로 구현될 수 있으므로, 디코더(330)를 구현하기 위한 하드웨어 구성이 단순해지고, 필요한 하드웨어 면적이 감소될 수 있다.In the present invention, the decoder 330 uses a parity check matrix having a simple matrix structure according to the RS-LDPC code. Thus, the decoder 330 can reduce the amount of computation required while maintaining high error correction capability. As will be described later, 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 디코딩의 일반적인 방법은 당해 기술 분야에 널리 알려져 있으므로, 그에 대한 설명은 생략한다.Since the general configuration of the decoder 330 and the general method of RS-LDPC decoding, which are not described herein, are well known in the art, a description thereof will be omitted.

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

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

S120 단계에서, 반도체 메모리 장치(1000)는 제 1 읽기 데이터에 대해 제안된 패리티 검사 행렬을 이용하여 경판정을 수행한다. 이때, 제안된 패리티 검사 행렬은 단순한 행렬 구조를 가지므로, 경판정에 필요한 연산량이 감소하고 디코더(330, 도 3 참조)의 하드웨어 복잡도가 감소된다. 제안된 패리티 검사 행렬에 대한 구체적인 설명은 후술될 것이다.In operation 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 operation 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 read method proceeds to step S180. If there is an error in the decoded data, the read method proceeds to step S140.

S140 단계에서, 반도체 메모리 장치(1000)는 제 2 읽기 전압을 사용하여, 저장 장치(100)에 저장된 데이터를 제 2 읽기 데이터로서 읽어낸다. 여기서, 제 2 읽기 전압은 앞에서 설명한 부분 읽기 전압일 수 있다.In operation S140, the semiconductor memory device 1000 reads data stored in the storage device 100 as 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 operation 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 operation S160, the semiconductor memory device 1000 determines whether 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 read method proceeds to step S180. If there is an error in the decoded data, the read method proceeds to step S170.

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

다시 S140 단계 또는 S160 단계로 돌아가서, 읽기 방법이 S180 단계로 진행하면, 반도체 메모리 장치(1000)는 디코딩된 데이터를 출력하고, 읽기 방법은 종료된다.Returning to step S140 or step S160, when 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 read method of the semiconductor memory device 1000 according to an exemplary embodiment of the inventive concept is provided. At this time, the read 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 read 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 for 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 shown.

패리티 검사 행렬(H)의 원소들 중 제 1 행의 원소들, 제 2 행의 원소들, 그리고 제 3 행의 원소들은 각각 제 1 내지 제 3 검사 노드들(C1, C2, C3)을 형성한다. 패리티 검사 행렬(H)의 원소들 중 제 1 내지 제 5 열의 원소들은 각각 제 1 내지 제 5 변수 노드들(V1, V2, V3, V4, V5)을 형성한다.The elements of the first row, the elements of the second row, and the elements of the third row of the elements of the parity check matrix H form the first to third check nodes C1, C2, and C3, respectively. . The elements of the first to fifth columns of the elements of the parity check matrix H form the first to 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 a check node and a variable node at the same time. In this case, when any element of the parity check matrix H is '1', it means that the check node to which the element belongs and the variable node are connected to each other. For example, when the element H 11 of the first row and the first column of the parity check matrix H is '1', the first check node C1 and the first variable node V1 to which the element H 11 belongs. ) 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. 5. For example, a parity check matrix having a lower density "1" 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 also not limited to being 3 × 5 as shown in FIG. 5.

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

패리티 검사 행렬(H)의 어떤 원소(Hij)가 '1'이면, 태너 그래프에서 해당 원소(Hij)가 속하는 검사 노드(Ci)와 변수 노드(Vj)는 선으로 연결된다. LDPC 디코딩(RS-LDPC 디코딩을 포함)에서 변수 노드들은 데이터를 처리하여 연결된 검사 노드들로 처리된 데이터를 전송한다. 마찬가지로, LDPC 디코딩(RS-LDPC 디코딩을 포함)에서 검사 노드들은 검사 노드에서 처리된 데이터를 연결된 변수 노드들로 전송한다. 이처럼, LDPC 디코딩 과정에서, 검사 노드들과 변수 노드들은 연결 관계에 따라 반복적으로 데이터를 교환한다.When an element H ij of the parity check matrix H is '1', the check node C i to which the element H ij belongs in the tanner graph is connected to the variable node V j by a line. In LDPC decoding (including RS-LDPC decoding), variable nodes process the data and send the processed data to connected check nodes. Likewise, in LDPC decoding (including RS-LDPC decoding), check nodes transmit the data processed at the check node to the connected variable nodes. As such, in the LDPC decoding process, check nodes and variable nodes repeatedly exchange data according to a 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, elements '1' of the first column, the third column, and the fifth column of the elements of the first test node C1. Accordingly, the first test 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. In addition, since the elements of the first, third and fourth columns of the third test node C3 are '1', the third test node C3 is the first variable node V1 and the third variable node V3. ) And the fourth variable node V4.

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

도 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 sub-matrices 410, 420, and 430 has a binary permutation that converts 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)의 원소의 개수를 의미한다.In addition, each of the plurality of sub-matrices 410, 420, and 430 includes a plurality of N × N square matrices. Here, N denotes the number of elements of the Galois-field used to generate codewords according to Reed-Solomon (RS) codes.

다시 도 7을 참조하면, 복수의 N×N 정사각 행렬 중 A 행렬을 구체화한 행렬(411)이 도시된다. 여기서는 예시적으로 N=8로 가정한다. 도 7에서 A 행렬(411)은 8개의 행과 8개의 열을 가진 격자 형태를 구성하는 복수의 사각형에 의해 표현된다. 이때, 검은색 사각형(a)은 대응되는 원소가 '1'인 것을 의미한다. 반대로, 하얀색 사각형(b)은 대응되는 원소가 '0'인 것을 의미한다. Referring again to FIG. 7, a matrix 411 incorporating an A matrix among a plurality of N × N square matrices is shown. In this example, it is assumed that N = 8. In FIG. 7, the matrix A 411 is represented by a plurality of quadrangles constituting a grid having eight rows and eight columns. In this case, the black square (a) means that the corresponding element is '1'. In contrast, the 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, if the black square a is located in the fourth row and eighth column of the A matrix 411, the element of the fourth row and eighth column of the A matrix A is '1'. Conversely, if the white square b is located in the fifth row and the eighth column of the A matrix 411, the element of the fifth row and eighth column of the A matrix A is '0'.

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

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

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

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

RS 부호에 따라 부호어를 생성하고, 생성된 부호어를 심볼 위치 벡터로 변환하는 방법은 당해 기술 분야에 널리 알려져 있으므로, 여기서는 그러한 과정에 대해 간략하게 설명한다.Since 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, such a process will be briefly described.

먼저, 갈루아 필드(Galois Field)를 이용하여 RS 부호의 생성 다항식을 생성한다. 갈루아 필드는 사칙연산이 정의되는 유한개의 원소를 갖는 필드이다. 리드-솔로몬 부호의 생성 다항식은 수학식 1과 같이 나타낼 수 있다.First, a generation 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 may be represented by Equation 1 below.

Figure 112013000272199-pat00001
Figure 112013000272199-pat00001

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

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

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

Figure 112013000272199-pat00002
Figure 112013000272199-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 the Galois field, respectively.

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

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

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

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

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

도 9를 참조하면, 먼저 첫 번째 서브 행렬(510)의 제 1 행(511)이 RS 부호에 따라 생성된다. 즉, RS 부호에 따라 생성된 부호어(code word)들 중 어느 하나를 심볼 위치 벡터로 변환한 이진(binary) 순열을 첫 번째 서브 행렬(510)의 제 1 행(511)으로서 결정한다. RS 부호에 따라 제 1 행(511)을 생성하는 구체적인 방법은 위에서 설명한 바와 동일하다.Referring to FIG. 9, first, a first row 511 of the first sub-matrix 510 is generated according to an RS code. That is, a binary permutation obtained by converting one of code words generated according to an 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 cyclically shifted to generate the parity check matrix proposed in the present invention, and the remaining rows of the first sub-matrix 510 are generated. Create them. At this time, the first row 511 is cyclically shifted by a period of N sequentially by 1 to form the second row 512 to the Nth row 514. In this case, 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 one in the row direction. Then, the second row 512 is cyclically shifted by one in the row direction to generate the third row 513.

이와 같은 방법으로, 제 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, a k + 1th row is generated by cyclically shifting the kth row by 1 in the row direction (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 as a period, the Nth column, the 2Nth column,... , the elements of the p · Nth column are each the first column of the k + 1th row, the N + 1th column,. , (p-1) -N + 1th column.

한편, 도 9와 같이 제 1 서브 행렬(510)이 직렬로 배열된 6개의 N×N 정사각 행렬들을 포함하고, 제 1 서브 행렬(510)이 6·N개의 열을 갖는다고 가정한다. 단, 제 1 서브 행렬(510)은 RS 부호에 따라 부호어를 변환하여 생성한 행렬이므로, 제 1 서브 행렬(510)의 각각의 N×N 정사각 행렬은 하나의 행에 오직 하나의 원소만이 '1'의 값을 갖는다.Meanwhile, as shown in FIG. 9, it is assumed that the first sub-matrix 510 includes six N × N square matrices 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 converting codewords according to RS codes, each N × N square matrix of the first sub-matrix 510 has only one element in one row. It has a value of '1'.

이때, 제 1 서브 행렬(510)의 각 행들은 N을 순환 주기로 서로 순환 시프트되므로, N×N 정사각 행렬들 각각은 하나의 순환 마디를 구성한다. 따라서, N×N 정사각 행렬의 k번째 행의 마지막 원소(또는, N번째 원소)는 N×N 정사각 행렬의 k+1번째 행의 첫 번째 원소가 된다. In this case, since each row of the first sub-matrix 510 is cyclically shifted from each other in a cyclic period, each of the N × N square matrices constitutes one circular node. Thus, the last element (or Nth element) of the kth row of the N × N square matrix becomes the first element of the k + 1st row of the N × N square matrix.

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

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

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

위와 같은 방법으로, 제 1 서브 행렬(510)의 각 행을 순차적으로 1씩 순환 시프트시켜(순환 주기는 N) 제 1 서브 행렬(510) 두 번째 내지 N번째 행을 생성한다. 그리고, 생성된 N개의 행을 병렬로 배열하면 제 1 서브 행렬(510)이 완성된다. 이때, 완성된 제 1 서브 행렬(510)의 N×N 정사각 행렬들은 각각 행단위로 순환하는 순환 구조를 가지고, 제 1 서브 행렬(510)은 순환하는 복수의 N×N 정사각 행렬들을 포함하는 준 순환(Quasi-Cyclic) 행렬 구조를 가진다.In the same manner as above, each row of the first sub-matrix 510 is sequentially cyclically shifted by 1 (the cycle period is N) to generate the second to Nth rows of the first sub-matrix 510. When the generated N rows are arranged in parallel, the first sub-matrix 510 is completed. In this case, the N × N square matrices of the completed first sub-matrix 510 each have a circular structure that circulates row by row, and the first sub-matrix 510 has a quasi-cyclic cycle that includes a plurality of circulating N × N square matrices. It has a (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 with reference to FIG. 9. Referring to FIG. 10, each row of the first sub-matrix 510 is generated by cyclically shifting adjacent rows by one (circulation period N). That is, the second row 512 of the first sub-matrix 510 is the result of the cyclic shift of the first row 512, and the third row 513 is the result of the cyclic shift of the second row 512. In this manner, the first sub-matrix 510 is completed by cyclically shifting each row 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 as described above has a quasi-cyclic matrix structure. Thus, when compared with the structure of the first sub-matrix 410 of FIG. 8, the first sub-matrix 510 according to the present invention has a considerably simplified and aligned matrix structure.

한편, 여기서는 제 1 서브 행렬(510)을 생성하기 위해 각각의 행을 1만큼 순환 시프트시켜 인접하는 행을 생성하는 예를 설명하였으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 제 1 서브 행렬(510)의 각각의 행을 1보다 큰 소정의 크기만큼 순환 시프트시켜 인접하는 행을 생성할 수 있다. 이 경우, 제 1 서브 행렬(510)의 행렬 구조는 앞서 설명한 실시 예와 달라질 수 있으나, 제 1 서브 행렬(510)의 인접하는 행들 간의 '1'의 위치 변화는 여전히 일정한 규칙성을 가진다. 따라서,패리티 검사 행렬이 단순화된 구조를 가지므로, ECC 디코더(300, 도 1 참조)의 하드웨어 복잡도 및 연산량이 감소될 수 있다.. Meanwhile, although an example in which adjacent rows are generated by cyclically shifting each row by one to generate the first sub-matrix 510 has been described, the present invention is not limited thereto. For example, adjacent rows may be generated by cyclically shifting each row of the first sub-matrix 510 by a predetermined size greater than one. In this case, the matrix structure of the first sub-matrix 510 may be different from the above-described embodiment, but the position change of '1' between adjacent rows of the first sub-matrix 510 still has a 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 illustrates a method of completing the parity check matrix 500 using the first sub-matrix 510. Referring to FIG. 11, the parity check matrix 500 includes a plurality of sub matrices including first to 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 with reference to FIGS. 9 to 10. That is, the first sub-matrix 510 may 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 second sub-matrix 520 adjacent to the first sub-matrix 510 is generated by cyclically shifting the first sub-matrix 510 in block units. The second sub-matrix 520 is cyclically shifted in block units to generate a third sub-matrix 530 adjacent to the second sub-matrix 520. Similarly, the k-th sub-matrix is cyclically shifted block by block to generate a k + 1-th sub-matrix (where k is an integer of 1 or more). As such, when all sub-matrixes of the parity check matrix 500 are generated through a cyclic shift in blocks, the parity check matrix 500 is completed by combining the generated sub-matrixes in parallel. In this case, the block as the cyclic shift unit may be an N × N square matrix described with reference to 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 N × M matrix including six blocks (or N × N square matrices) as shown in FIG. 11. In this case, the six blocks A, B, C, D, E, and F are sequentially arranged in series to form the first sub matrix 510. A detailed method of generating the first sub matrix 510 is the same as described with reference to FIGS. 9 to 10. The second sub-matrix 520 is generated by cyclically shifting the first sub-matrix 510 in block units. In this case, the cycle period of the first sub-matrix 510 is 6 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 to become the second block A of the second sub-matrix 520 by the cyclic shift in block units. 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 (where n is an integer of 1 or more and 5 or less). 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 cyclic period is shifted to the beginning of the cyclic period by a cyclic shift in blocks. As described above, the second sub-matrix 520 generated by the cyclic shift of the first sub-matrix 510 in block units may include a matrix in which the first sub-matrix 510 is cyclically shifted by N in the row direction according to the cyclic period M; You will have the same array of elements. That is, when the first sub-matrix 510 is an N × M 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 참조)의 디코딩을 위해 호출되어 사용될 수 있다.Likewise, the third sub-matrix 530 is generated by cyclically shifting the second sub-matrix 520 in units of blocks. In this way, the k-th sub-matrix is cyclically shifted in block units to generate a k + 1-th sub-matrix, and the parity check matrix 500 is completed by arranging the generated sub-matrices in parallel. In an embodiment, 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 for decoding 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 has a block circulation in sub-matrix units, and each block has a quasi-cyclic matrix structure. Therefore, the parity check matrix 500 proposed in the present invention has a very simplified matrix structure, compared to the conventional random and complicated parity check matrix. 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 illustrating a method of generating the parity check matrix 500 proposed by the present invention. Referring to FIG. 12, the 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 operation S210, the codeword 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). The specific method of generating the first row 511 from the codeword 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 first row 511 is cyclically shifted by one to generate a second row 512. Then, the second row 512 is cyclically shifted by one to generate a third row 513. In the same way, until the N rows are generated, the generated rows are cyclically shifted by one to produce the next row. Specific methods for cyclically shifting each row are the same as described with reference to FIGS. 9 to 10.

S230 단계에서, 생성된 행들을 병렬로 배열하여, 제 1 서브 행렬(510)을 생성한다. In operation 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 operation S240, the first sub-matrix 510 is cyclically shifted by one block in block units to generate the second sub-matrix 520. The second sub-matrix 520 is cyclically shifted by one block in block units to generate the third sub-matrix 530. In the same manner, the next sub-matrix is generated by cyclically shifting the generated sub-matrix by one block until all the sub-matrixes necessary to complete the parity check matrix 500 are generated.

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

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

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

또한, 여기서는 서브 행렬을 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 blocks the adjacent sub-matrix by two or more blocks. Can be generated. For example, the q-th sub-matrix is circulated by 2 blocks to generate a q + 1-th row (where q is an integer of 1 or more), and the parity check matrix 500 is generated by arranging the generated sub-matrices in parallel. can do.

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

도 13은 본 발명에 따른 패리티 검사 행렬을 예시적으로 나타내는 도면이다. 도 13을 참조하면, 복수의 블록으로 구성된 복수의 서브 행렬을 포함하는 패리티 검사 행렬(600) 및 블록(610)의 행렬 구조가 예시적으로 도시된다.13 is a diagram exemplarily illustrating a parity check matrix according to 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 illustrated.

도 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-blocked with each other. For example, the kth block of the pth submatrix of the parity check matrix 600 is the same as the k + 1th block of the p + 1th submatrix, where p is an integer of 1 or more and 6 or less, and k is 1 An integer greater than or equal to 27). However, since the sub-matrices of the parity check matrix 600 block circulate with each other using the number of blocks included in one sub-matrix as a cyclic period, the 28th block of the p-th submatrix is the first matrix of the p + 1th sub-matrix. same. As such, the parity check matrix 600 has a simple matrix structure in which the same blocks are arranged with constant regularity. Therefore, the parity check matrix 600 can be easily derived from the matrix structure of one sub-matrix.

다시, 도 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 illustrated by way of example. Since each row of the parity check matrix 600 is generated based on a codeword of an RS code, each block of the parity check matrix 600 has one '1' as one element in one row. That is, if the element of the fifth column of a row of a block is '1', all elements except the element of the fifth column of the row are '0'. 9 to 10, each block of the parity check matrix 600 has a matrix structure that circulates row by row. On the other hand, the number written in each block of the parity check matrix 600 indicates the number of elements 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. At the bottom of FIG. 13, the matrix structure of block 610 is specifically illustrated. In block 610, the number 11 is written. Thus, the first row of block 610 has an eleventh element '1' and the remaining elements are '0'. In addition, the block 610 has a structure of circulating one by one in units of rows. That is, the j th element of the i th row of the block 610 and the j + 1 th element of the i + 1 th row are the same. However, as described above, the last element of the i th row of the block 610 becomes identical to the first element of the i + 1 th row.

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

도 14는 본 발명의 실시 예에 따른 도 3의 디코더를 나타내는 블록도이다. 도 14를 참조하면, 디코더(330)는 변수 노드 블록(331), 검사 노드 블록(333), 정정 데이터 관리자(335), 신드롬 검사기(336) 및 스위치 네트워크들(332, 334)을 포함한다. 본 실시 예에서, 디코더(330)는 도 9 내지 도 13에서 제안된 패리티 검사 행렬(500, 도 11 참조)을 사용하여 RS-LDPC 디코딩을 수행한다. 14 is a block diagram illustrating the decoder of FIG. 3 according to 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 the present 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. Then, decoding is performed through data transmitted according to the connection of the variable node and the check node.

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

변수 노드 블록(331)은 제공된 우도값을 저장하고, 저장한 우도값을 변수 노드 메시지로서 제 1 스위치 네트워크(332)를 통해 검사 노드 블록(333)에 제공한다. The variable node block 331 stores the provided likelihood value and provides the stored likelihood value to the test 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 compares the values of the variable nodes for each check node with reference to the provided variable node message, and provides the first and second minimum values as check node messages CHK. Here, the first minimum value means the smallest value among the compared variable node values, and the second minimum value means the second smallest 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 updates the variable node and check node values with reference to the received check node message CHK. 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 the decoded data (CD) or the read error message (Err) to the outside according to the determination of whether the syndrome checker 336 succeeds in decoding. do.

신드롬 검사기(336)은 정정 데이터 관리자(335)에 저장된 디코딩 데이터에 따라, 디코딩 성공 여부를 판단한다. 예를 들어, 신드롬 검사기(336)은 디코딩 데이터와 패리티 검사 행렬(500)의 전치 행렬을 곱하고, 곱한 결과가 영행렬인지 아닌지에 따라 디코딩 성공 여부(또는, 에러가 모두 정정되었는지 여부)를 판단한다. 그리고, 디코딩 성공 여부의 판단 결과를 정정 데이터 관리(335)에 제공한다. The syndrome checker 336 determines whether the decoding is successful according to the decoded 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 zero or not. . The determination result of whether the decoding succeeded or not is provided to the correction data management 335.

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

제 1 및 제 2 스위치 네트워크(332, 334)는 변수 노드 블록(331)과 검사 노드 블록(333) 사이의 데이터 교환을 중계한다. 구체적으로 제 1 스위치 네트워크(332)는 변수 노드 블록(331)으로부터 제공되는 변수 노드 메시지를 검사 노드 블록(333)에 전달한다. 제 2 스위치 네트워크(334)는 검사 노드 블록(333)으로부터 제공되는 검사 노드 메시지를 변수 노드 블록(331)에 전달한다.The first and second switch networks 332, 334 relay the 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 forwards 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 variable nodes and check nodes is also very simple and regular. Accordingly, the first and second switch networks 332 and 334 can be easily implemented through a plurality of hard-wired switches or parallel shifters. Details of the first and second switch networks 332 and 334 will be described later in conjunction with FIGS. 15 and 16.

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

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

도 15는 도 14에 도시된 스위치 네트워크를 예시적으로 나타내는 블록도이다. 도 15에서는 제 1 스위치 네트워크(332, 도 14 참조)의 구체적인 블록도가 도시된다. 한편, 제 2 스위치 네트워크(334, 도 14 참조)는 제 1 스위치 네트워크(332)와 실질적으로 동일한 구성을 가지므로, 본 실시 예에서 제 2 스위치 네트워크(334)에 대한 설명은 생략된다.FIG. 15 is a block diagram illustrating an exemplary switch network shown in FIG. 14. In FIG. 15, a detailed block diagram of the first switch network 332 (see FIG. 14) is shown. Meanwhile, 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 is omitted in this embodiment.

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

스위치 제어부(332a)는 변수 노드 블록(331)로부터 변수 노드 메시지를 수신하고, 클럭 신호에 응답하여 변수 노드 메시지를 복수의 채널 중 대응되는 채널에 할당한다. 변수 노드 메시지가 할당되는 채널은 클럭 신호에 따라 달라질 수 있다. 실시 예로서, 스위치 제어부(310)는 클럭 신호를 발생하는 클럭 카운터(332c)를 포함할 수 있다.The switch controller 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 allocated may vary depending on the clock signal. In an embodiment, the switch controller 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 part 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 controller 332a. The fixed wiring blocks 10, 20, 30, 40, and 50 output the received variable node message to a predetermined output path through the fixed wiring.

이때, 고정 배선 블록들(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에서 후술될 것이다.In this case, each of the fixed wiring blocks 10, 20, 30, 40, and 50 may correspond to any one of the N × N square matrices included in the first sub-matrix 510 (see FIG. 10). The terminals are connected. For example, in the first fixed wiring block 10, input terminals and output terminals may be connected to correspond to an N × N square matrix A (see FIG. 10). Alternatively, input terminals and output terminals may be connected to the second fixed wiring block 30 so as to correspond to an 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 N × N square matrices A and C will be described later with reference to FIGS. 16 and 17.

한편, 제 1 스위치 네트워크(332)는 연결부(332b)에 제 1 서브 행렬(510)에 대응되는 고정 배선 블록들만을 구비하고, 패리티 검사 행렬(500) 전체에 대응되는 데이터 전송을 중계할 수 있다. Meanwhile, the first switch network 332 may include only the fixed wiring blocks corresponding to the first sub-matrix 510 at the connection unit 332b and may relay 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 controller 332b outputs the variable node message corresponding to the first sub-matrix 510 to the fixed wiring blocks 10, 20, 30, and 40. , Then 50). When the clock signal represents 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, starting from the second fixed wiring block 20 in order. Allocate a variable node message. The first fixed wiring block 10 is assigned the last portion of the variable node message. Each sub-matrix of the parity check matrix 500 has a matrix structure that is block-circulated with each other. Thus, through this very simple operation of simply shifting the channel that allocates the variable node message in accordance with the clock signal, the entire variable nodes can be connected to the check nodes. Thus, the amount of computation and the memory required to connect the variable nodes and the check nodes are reduced. In addition, since the switch network is implemented using the minimum fixed wiring blocks, the hardware complexity and hardware area of the decoder 330 (see FIG. 14) may be minimized.

도 16 및 도 17은 본 발명에 따른 스위치 네트워크의 고정 배선 블록을 예시적으로 나타내는 도면이다.16 and 17 exemplarily illustrate fixed wiring blocks 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 참조)에 대응되는 입력-출력 연결 관계를 갖는 것으로 가정한다. FIG. 16 shows the input-output connection relationship of the first fixed wiring block 10 (see FIG. 15). FIG. 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 each have an input-output connection relationship corresponding to an N × N square matrix (A, C, 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, the 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 circulating in units of rows. Therefore, in the N × N square matrix A, the element of the i th row i column is '1' (where i is an integer less than or equal to 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, according to the N × N square matrix A, the variable node terminals A1, A2, A3, A4, A5, A6, A7, and A8 of the first fixed wiring block 10 are connected to the test node terminals B1. , B2, B3, B4, B5, B6, B7, and B8 are fixedly connected in order.

이때, 클럭 신호가 제 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 controller 332a will allocate the first portion of the input variable node message to the channel to be connected to the first fixed wiring block 10. . Here, the first portion 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)의 변수 노드-검사 노드 연결 관계와 동일한 규칙성을 갖는다. 따라서, 위와 같은 채널 시프트를 통해, 입력되는 변수 노드 메시지에 대응되는 서브 행렬이 바뀌어도, 변수 노드 메시지는 대응되는 검사 노드에 올바르게 할당된다.In this case, when the clock signal represents the second sub-matrix 520 (see FIG. 10), the switch controller 332a allocates the second portion 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 portion of the variable node message refers to variable node values generated from variable nodes corresponding to the second N × N square matrix A of the second sub-matrix 520. The variable node-check node concatenation of the second N × N square matrix A of the second sub-matrix 520 is the variable node-check of the first N × N square matrix A of the first sub-matrix 510. It has the same regularity as the node connection relationship. Therefore, even if the sub-matrix corresponding to the input variable node message is changed through the channel shift as described above, 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 of the first row and the seventh 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 C has a matrix structure circulating in units of rows. Accordingly, the N × N square matrix C is cyclically shifted by one in units of rows similarly to the N × N square matrix A. FIG.

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

이때, 클럭 신호가 제 1 서브 행렬(510, 도 10 참조)을 나타내면, 스위치 제어부(332a)는 입력되는 변수 노드 메시지의 세 번째 부분을 제 3 고정 배선 블록(30)과 연결될 채널에 할당할 것이다. 여기서, 변수 노드 메시지의 세 번째 부분은 제 1 서브 행렬(510)의 세 번째 N×N 정사각 행렬(C)에 대응되는 변수 노드들로부터 발생한 변수 노드 값들을 의미한다.At this time, if the clock signal represents the first sub-matrix 510 (see FIG. 10), the switch controller 332a will allocate a third portion of the input variable node message to the channel to be connected to the third fixed wiring block 30. . Here, the third portion 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)는 고정 배선 블록과 연결되는 채널을 시프트함으로써, 변수 노드 메시지를 대응되는 검사 노드에 올바르게 할당할 수 있다.In this case, when the clock signal represents the second sub-matrix 520 (see FIG. 10), the switch controller 332a allocates the fourth portion 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 refers to variable node values generated from 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-cyclic relationship by one block. Thus, by performing the simple channel shift as above, between all the variable nodes and the check nodes of the parity check matrix 500 through the same fixed wiring blocks 10, 20, 30, 40, 50, see FIG. You can perform the connection.

한편, 여기서는 제 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 a 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)는 병렬 시프터(미도시)를 사용하여 구현될 수 있다.Meanwhile, only an example of implementing the first and second switch networks 332 using fixed wiring blocks has been described. However, as described above, the first and second switch networks 332 may use a parallel shifter (not shown). Can be implemented.

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

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

도 18은 도 1에 도시된 반도체 메모리 시스템(1000)의 응용 예를 보여주는 블록도이다. 도 18을를 참조하면, 반도체 메모리 시스템(2000)은 저장 장치(2100) 및 컨트롤러(2200)를 포함한다. 저장 장치(2100)는 복수의 저장 칩들을 포함한다. 복수의 저장 칩들은 복수의 그룹들(2100a, 2100b, 2100c)로 분할된다. 18 is a block diagram illustrating an application example of the semiconductor memory system 1000 shown in FIG. 1. Referring to FIG. 18, the semiconductor memory system 2000 may include a storage device 2100 and a controller 2200. The storage device 2100 includes a plurality of storage chips. The 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 through one common channel for each group. In exemplary embodiments, the plurality of storage chips may communicate with the controller 2200 through a plurality of channels respectively assigned to the 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, and ECCn having the same configuration as the EEC decoder 300 described in FIG. 3. The ECC decoders ECC1, ECC2, and ECCn correct errors of data read from the storage device 2100.

ECC 디코더들(ECC1, ECC2, ECCn)은 컨트롤러(2200)와 저장 장치(2100)를 연결하는 채널들의 수에 해당하는 만큼 제공된다. 하나의 ECC 디코더는 하나의 채널에 연결된 저장 칩들의 에러를 정정한다.The ECC decoders ECC1, ECC2, and ECCn are provided to correspond 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 with reference to FIGS. 9 to 13, and read the data. Decode 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 exemplary embodiment may have high error correction performance and simultaneously reduce hardware complexity of the ECC decoder 300. In addition, the computational throughput of the ECC decoder 300 may be reduced.

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

도 19는 본 발명의 실시 예에 따른 메모리 카드(3000)를 보여준다. 도 19를 참조하면, 메모리 카드(3000)는 저장 장치(3100), 컨트롤러(3200)를 포함한다. 여기서, 저장 장치(3100)는 플래시 메모리를 비롯한 불휘발성 메모리 장치일 수 있다.19 illustrates a memory card 3000 according to an embodiment of the present invention. Referring to FIG. 19, the memory card 3000 may include a storage device 3100 and a controller 3200. 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. 3. The ECC decoder 3300 corrects an error of 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 and decodes the read data using the parity check matrix 500 (see FIG. 10) having a simplified structure. 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 exemplary embodiment may have high error correction performance and simultaneously reduce hardware complexity of the ECC decoder 3300. In addition, the computational throughput of the ECC decoder 3300 may also 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 include a personal computer memory card international association (PCMCIA), a compact flash card (CF), a smart media card (SM, SMC), a memory stick, a multimedia card (MMC, RS-MMC, MMCmicro), Memory cards such as SD cards (SD, miniSD, microSD, SDHC), universal flash storage (UFS), and the like are constituted.

도 20은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(Solid State Drive, 이하 SSD)를 나타내는 블록도이다. 도 20을 참조하면, 사용자 장치(4000)는 SSD(4100) 및 호스트(4200)를 포함한다. SSD(4100)는 불휘발성 메모리 장치(4130), SSD 컨트롤러(4110), ECC 디코더(4120) 및 그리고 버퍼 메모리(4140)를 포함한다.20 is a block diagram illustrating a solid state drive (SSD) according to an embodiment of the present invention. Referring to FIG. 20, the 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 in response to the bus format of the host 4200. In particular, the SSD controller 4110 decodes an instruction provided from the host 4200. According to the decoded result, the SSD controller 4110 accesses the nonvolatile memory device 4130. The bus format of the host 4200 is Universal Serial Bus (USB), Small Computer System Interface (SCSI), PCI express, ATA, Parallel ATA (PATA), Serial ATA (SATA), and Serial Attached SCSI (SAS). Etc. may be included.

버퍼 메모리(4140)에는 호스트(4200)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(4130)로부터 읽혀진 데이터가 일시 저장된다. 호스트(4200)의 읽기 요청시에 불휘발성 메모리 장치(4130)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(4140)는 캐시된 데이터를 직접 호스트(4200)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(4200)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(4100)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(4200)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(4140)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다. In the buffer memory 4140, write data provided from the host 4200 or data read from the nonvolatile memory device 4130 are temporarily stored. When data present in the nonvolatile memory device 4130 is cached at 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 (eg, 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 extremely high, the performance degradation caused by the speed difference may be minimized by providing a large buffer memory 4140.

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

불휘발성 메모리 장치(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 nonvolatile memory device 4130 may be provided as a NAND flash memory device having a large storage capacity. The nonvolatile memory device 4130 may be configured of a plurality of memory devices. In this case, each of the memory devices is connected to the SSD controller 4110 in units of channels. Although the case in which the nonvolatile memory device 4130 is a NAND flash memory device has been described as an example, the nonvolatile memory device 4130 may be configured as other nonvolatile memory devices. For example, PRAM, ReRAM, FRAM, MRAM, NOR flash memory, or the like may be used as the storage medium, and a memory system in which heterogeneous memory devices are mixed may be applied.

상술한 SSD(4100)에서, SSD 컨트롤러(4110)는 도 3에서 설명된 ECC 디코더와 동일한 ECC 디코더(4120)를 포함한다. ECC 디코더(4120)는 불휘발성 메모리 장치(4130)로부터 읽어지는 데이터의 에러를 정정한다. In the SSD 4100 described above, the SSD controller 4110 includes the same ECC decoder 4120 as the ECC decoder described in FIG. 3. The ECC decoder 4120 corrects an error of 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. Accordingly, the SSD 4100 according to the present embodiment may have high error correction performance and simultaneously reduce hardware complexity of the ECC decoder 4120. In addition, the computational throughput of the ECC decoder 4120 may also be reduced.

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

도 21의 컴퓨팅 시스템(5000)에서, 불휘발성 메모리 장치(5510)는 도 20에서 설명한 불휘발성 메모리 장치(4130, 도 20 참조)와 실질적으로 동일한 장치일 수 있다. 불휘발성 메모리 장치(5510)는 낸드 플래시 메모리 장치일 수 있다.In the computing system 5000 of FIG. 21, the nonvolatile memory device 5510 may be substantially the same device as the nonvolatile memory device 4130 (see FIG. 20) described with reference to FIG. 20. The nonvolatile 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 described with reference to FIG. 3. The ECC decoder 5530 corrects an error read from the nonvolatile memory device 5510. As described above, the ECC decoder 5530 uses the parity check matrix 500 (see FIG. 10) having a simplified structure to transmit data between the variable nodes and the check nodes, and decode 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 apparatus 5500 and the computing system 5000 including the same according to the present exemplary embodiment may have high error correction performance and simultaneously reduce hardware complexity of the ECC decoder 5530. In addition, the computational throughput of the ECC decoder 5530 can also be reduced.

본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(5400)가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. 메모리 컨트롤러(6200)와 불휘발성 메모리 장치(6100)는, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.When the computing system according to the present invention is a mobile device, a battery 5400 for supplying an operating voltage of the computing system may be additionally provided. Although not shown in the drawings, the computing system according to the present invention may further be provided with an application chipset, a camera image processor (CIS), a mobile DRAM, or the like. The memory controller 6200 and the nonvolatile memory device 6100 may configure, for example, an SSD (Solid State Drive / Disk) that uses a nonvolatile memory to store 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 mounted using various types of packages. For example, the flash memory device and / or the memory controller according to the present invention may be a package on package (PoP), 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 ( It can be implemented using packages such as WSP).

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

Claims (15)

메모리 장치로부터 읽어낸 데이터를 저장하도록 구성된 읽기 데이터 관리부;
상기 읽기 데이터 관리부로부터 출력되는 상기 데이터에 우도(Likelihood Ratio)값들을 사상하여 사상 데이터를 출력하도록 구성된 우도값 사상부;
상기 사상 데이터에 대해, 패리티 검사 행렬(Parity Check Matrix)를 사용하여 저밀도 패리티 검사(Low Density Parity Check) 디코딩을 수행하도록 구성되는 디코딩 부를 포함하고,
상기 패리티 검사 행렬은 k개의 N×M 서브 행렬을 포함하는 (k*N)×M 행렬이고(단, k는 2보다 크거나 같은 정수이고, N 및 M은 각각 3보다 크거나 같은 정수),
상기 k개의 N×M 서브 행렬 중 하나는 N×M 크기를 갖는 제1 서브 행렬이고, 상기 k개의 N×M 서브 행렬 중 다른 하나는 N×M 크기를 갖는 제2 서브 행렬이고,
상기 제2 서브 행렬은 상기 제1 서브 행렬과 인접하여 위치하고, 순환 주기 M에 따라 행 방향으로 N만큼 상기 제1 서브 행렬을 순환 시프트시킴으로써 획득된 행렬과 동일한 원소 배열을 포함하고,
상기 제1 서브 행렬은:
리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 부호어(code word)를 심볼 위치 벡터로 변환한 이진 순열인 제1 행; 및
상기 제1 행과 연속으로 인접하여 위치한 제2 내지 제N 행들을 포함하고,
상기 제2 내지 제N 행들 각각은 순환 주기 N에 따라 1만큼씩 이전 행을 순차적으로 시프팅시킴으로써 획득된 행과 동일한 원소 배열을 포함하는 반도체 메모리 시스템.
A read data manager configured to store data read from the memory device;
A likelihood value mapping unit configured to output likelihood data by mapping likelihood ratio values to the data output from the read data management unit;
A decoding unit configured to perform low density parity check decoding on the mapping data using a parity check matrix;
The parity check matrix is a (k * N) × M matrix containing k N × M submatrices, where k is an integer greater than or equal to 2, and N and M are each an integer greater than or equal to 3,
One of the k N × M sub-matrixes is a first sub-matrix having an N × M size, and the other of the k N × M sub-matrixes is a second sub-matrix having an N × M size,
The second sub-matrix is located adjacent to the first sub-matrix, and includes an element array identical to the matrix obtained by cyclically shifting the first sub-matrix by N in a row direction according to a cyclic period M,
The first sub-matrix is:
A first row which is a binary permutation of converting a code word generated according to a Reed-Solomon code into a symbol position vector; And
Second to Nth rows consecutively adjacent to the first row;
Each of the second to Nth rows includes an element array identical to a row obtained by sequentially shifting the previous row by one in accordance with a cyclic period N;
제 1 항에 있어서,
상기 디코딩 부는
우도값 또는 검사 노드 메시지를 참조하여 변수 노드들 및 검사 노드들의 값들을 갱신하고, 상기 변수 노드들 및 상기 검사 노드들의 상기 갱신된 값들에 따라 상기 데이터를 디코딩하도록 구성된 변수 노드 연산부;
상기 변수 노드들의 상기 갱신된 값들을 변수 노드 메시지로서 수신하고, 상기 수신된 변수 노드 메시지를 참조하여 상기 검사 노드 메시지를 제공하는 검사 노드 연산부;
변수 노드 블록으로부터 검사 노드 블록으로 상기 변수 노드 메시지의 전송을 중계하도록 구성된 제1 네트워크 부;
상기 검사 노드 블록으로부터 상기 변수 노드 블록으로 상기 검사 노드 메시지의 전송을 중계하도록 구성된 제2 네트워크 부를 포함하는 반도체 메모리 시스템.
The method of claim 1,
The decoding unit
A variable node calculator configured to update values of variable nodes and check nodes with reference to a likelihood value or check node message and to decode the data according to the updated values of the variable nodes and check nodes;
A check node calculator which receives the updated values of the variable nodes as a variable node message and provides the check node message with reference to the received variable node message;
A first network portion configured to relay transmission of the variable node message from a variable node block to a check node block;
And a second network portion configured to relay transmission of the check node message from the check node block to the variable node block.
제 2 항에 있어서,
상기 제1 네트워크 부 또는 상기 제2 네트워크 부는:
상기 변수 노드 블록으로부터 입력된 상기 변수 노드 메시지의 적어도 일부를 복수의 채널들 중 어느 하나에 할당하도록 구성된 스위치 제어부; 및
상기 어느 하나의 채널에 연결된 복수의 입력 단자들을 복수의 출력 단자들에 고정하는 고정 배선 블록을 포함하는 연결부를 포함하는 반도체 메모리 시스템.
The method of claim 2,
The first or second network portion is:
A switch controller configured to assign at least a portion of the variable node message input from the variable node block to any one of a plurality of channels; And
And a connection unit including a fixed wiring block to fix the plurality of input terminals connected to the one channel to the plurality of output terminals.
제 3 항에 있어서,
상기 스위치 제어부는 클럭 신호에 따라 상기 변수 노드 메시지의 적어도 일부를 대신하여 상기 변수 노드 메시지의 다른 일부를 상기 어느 하나의 채널에 할당하는 반도체 메모리 시스템.
The method of claim 3, wherein
And the switch controller is configured to allocate another portion of the variable node message to the one channel in place of at least a portion of the variable node message according to a clock signal.
제 2 항에 있어서,
상기 제1 네트워크 부 또는 상기 제2 네트워크 부는
상기 패리티 검사 행렬에 따라 상기 변수 노드 메시지를 상기 검사 노드들에 나누어 할당하도록 구성된 병렬 시프터; 및
상기 병렬 시프터의 동작을 제어하도록 구성된 시프터 제어부를 포함하는 반도체 메모리 시스템.
The method of claim 2,
The first network portion or the second network portion
A parallel shifter configured to divide and assign the variable node message to the check nodes according to the parity check matrix; And
And a shifter controller configured to control an operation of the parallel shifter.
제 1 항에 있어서,
상기 N은 리드-솔로몬(Reed-Solomon) 부호에 따라 상기 부호어(code word)를 생성하기 위해 사용되는 갈루아 필드의 원소의 개수인 반도체 메모리 시스템.
The method of 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 of claim 1,
And a syndrome check unit configured to determine an error correction state based on the low density parity check decoding.
제 7 항에 있어서,
상기 에러 정정 상태의 판정 결과에 따라,
상기 디코딩 부는 페일 메시지를 출력하고,
상기 읽기 데이터 관리부는 상기 페일 메시지에 응답하여 상기 메모리 장치로부터 읽어낸 추가 데이터를 저장하고,
상기 우도값 사상부는 상기 추가 데이터에 우도값들을 사상하여 추가 사상 데이터를 출력하고,
상기 디코딩 부는 상기 추가 사상 데이터에 대해 상기 패리티 검사 행렬을 사용하여 저밀도 패리티 검사를 수행하는 반도체 메모리 시스템.
The method of claim 7, wherein
According to the determination result of the error correction state,
The decoding unit outputs a fail message,
The read data management unit stores additional data read from the memory device in response to the fail message,
The likelihood value mapping unit maps the likelihood values to the additional data to output additional mapping data,
And the decoding unit performs a low density parity check on the additional mapping data using the parity check matrix.
제 8 항에 있어서,
상기 데이터를 읽어내기 위한 읽기 전압 및 상기 추가 데이터를 읽어내기 위한 읽기 전압은 서로 다른 반도체 메모리 시스템.
The method of claim 8,
And a read voltage for reading the data and a read voltage for reading the additional data are different.
제 1 항에 있어서,
상기 패리티 검사 행렬을 저장하도록 구성된 저장부를 더 포함하는 반도체 메모리 시스템.
The method of claim 1,
And a storage configured to store the parity check matrix.
제 1 항에 있어서,
상기 메모리 장치는 낸드 플래시 메모리를 포함하는 반도체 메모리 시스템.
The method of claim 1,
The memory device includes a NAND flash memory.
제 1 항에 있어서,
상기 메모리 장치는 불휘발성 메모리를 포함하고,
상기 읽기 데이터 관리부, 상기 우도값 사상부, 및 상기 디코딩 부는 상기 반도체 메모리 시스템의 메모리 컨트롤러의 에러 정정 부호(ECC; Error correction code) 디코더를 구성하는 반도체 메모리 시스템.
The method of claim 1,
The memory device includes a nonvolatile memory,
And the read data management unit, the likelihood value mapping unit, and the decoding unit constitute an error correction code (ECC) decoder of a memory controller of the semiconductor memory system.
반도체 메모리 시스템의 데이터 읽기 방법에 있어서,
제1 읽기 전압들을 사용하여 상기 반도체 메모리 시스템에 저장된 데이터를 읽는 단계;
패리티 검사 행렬을 사용하여 상기 읽은 데이터에 대한 저밀도 패리티 검사 디코딩을 수행하는 단계; 및
상기 저밀도 패리티 검사 디코딩 의 결과에 따라 상기 읽은 데이터의 에러를 정정한 결과를 출력하는 단계를 포함하고,
상기 패리티 검사 행렬은 k개의 N×M 서브 행렬을 포함하는 (k*N)×M 행렬이고(단, k는 2보다 크거나 같은 정수이고, N 및 M은 각각 3보다 크거나 같은 정수),
상기 k개의 N×M 서브 행렬 중 하나는 N×M 크기를 갖는 제1 서브 행렬이고, 상기 k개의 N×M 서브 행렬 중 다른 하나는 N×M 크기를 갖는 제2 서브 행렬이고,
상기 제2 서브 행렬은 상기 제1 서브 행렬과 인접하여 위치하고, 순환 주기 M에 따라 행 방향으로 N만큼 상기 제1 서브 행렬을 순환 시프트시킴으로써 획득된 행렬과 동일한 원소 배열을 포함하고,
상기 제1 서브 행렬은:
리드-솔로몬(Reed-Solomon) 부호에 따라 생성된 부호어(code word)를 심볼 위치 벡터로 변환한 이진 순열인 제1 행; 및
상기 제1 행과 연속으로 인접하여 위치한 제2 내지 제N 행들을 포함하고,
상기 제2 내지 제N 행들 각각은 순환 주기 N에 따라 1만큼씩 이전 행을 순차적으로 시프팅시킴으로써 획득된 행과 동일한 원소 배열을 포함하는 읽기 방법.
In the data reading method of a semiconductor memory system,
Reading data stored in the semiconductor memory system using first read voltages;
Performing low density parity check decoding on the read data using a parity check matrix; And
Outputting a result of correcting an error of the read data according to a result of the low density parity check decoding;
The parity check matrix is a (k * N) × M matrix containing k N × M submatrices, where k is an integer greater than or equal to 2, and N and M are each an integer greater than or equal to 3,
One of the k N × M sub-matrixes is a first sub-matrix having an N × M size, and the other of the k N × M sub-matrixes is a second sub-matrix having an N × M size,
The second sub-matrix is located adjacent to the first sub-matrix, and includes an element array identical to the matrix obtained by cyclically shifting the first sub-matrix by N in a row direction according to a cyclic period M,
The first sub-matrix is:
A first row which is a binary permutation of converting a code word generated according to a Reed-Solomon code into a symbol position vector; And
Second to Nth rows consecutively adjacent to the first row;
Each of the second to Nth rows includes the same element array as the row obtained by sequentially shifting the previous row by one according to a cyclic period N.
제 13 항에 있어서,
상기 저밀도 패리티 검사 디코딩의 결과에 따라 제1 읽기 전압과 다른 제2 읽기 전압을 사용하여 상기 저장된 데이터를 다시 읽는 단계; 및
상기 패리티 검사 행렬을 사용하여 상기 다시 읽은 데이터에 대한 저밀도 패리티 검사 디코딩을 수행하는 단계를 더 포함하는 읽기 방법.
The method of claim 13,
Rereading the stored data using a second read voltage different from a first read voltage according to a result of the low density parity check decoding; And
And performing low density parity check decoding on the read back data using the parity check matrix.
제 13 항에 있어서,
상기 데이터는 상기 반도체 메모리 시스템의 낸드 플래시 메모리로부터 읽어지는 읽기 방법.

The method of claim 13,
And said data is read from a NAND flash memory of said semiconductor memory system.

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 KR20140088423A (en) 2014-07-10
KR102058499B1 true 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 (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

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102556479B1 (en) * 2015-03-20 2023-07-17 에스케이하이닉스 주식회사 Ldpc decoder, semiconductor memory system and operating method thereof
KR102466325B1 (en) * 2015-12-14 2022-11-15 삼성전자주식회사 Generating method for low density parity check code and generating circuit for low density parity check code
KR20220057087A (en) 2020-10-29 2022-05-09 에스케이하이닉스 주식회사 Reed-solomon code soft-decision decoding method and device

Citations (1)

* 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

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0908963A2 (en) * 2008-03-28 2015-07-28 Thomson Licensing Signal Decoding Apparatus and Method

Patent Citations (1)

* 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

Cited By (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

Also Published As

Publication number Publication date
KR20140088423A (en) 2014-07-10

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
RU2395902C2 (en) Ldpc coding device and methods
KR101753498B1 (en) Updating Reliability Data
US9070453B2 (en) Multiple programming of flash memory without erase
US10707902B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
KR102275717B1 (en) Flash memory system and operating method thereof
KR20100081551A (en) Decoding method and memory system device for using the method
KR20140031895A (en) Encoding and decoding techniques using low-density parity check codes
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
US9116825B2 (en) Memory controller
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
KR102058499B1 (en) Semiconductor memory system including reed-solomon low density parity check decoder and read method thereof
US10606697B2 (en) Method and apparatus for improved data recovery in data storage systems
KR20170028160A (en) Memory system including error corrector and operating method thereof
US9858994B2 (en) Memory system with MLC memory cells and partial page compression or reduction
US10700708B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
KR20050063660A (en) An apparatus for encoding and decoding of low-density parity-check codes, and methods thereof
JP5488472B2 (en) Decoding device, data communication device and data storage device having the decoding device
KR20210001927A (en) Generalized concatenated error correction coding scheme with locality
KR101722798B1 (en) Compact decoding of punctured codes
CN113904690A (en) Decoding device, apparatus, method and computer program
CN110971240A (en) Decoder design method and memory controller
RU2743784C1 (en) Data coding method based on ldpc code

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