KR101550762B1 - 연접 오류 정정 장치 - Google Patents
연접 오류 정정 장치 Download PDFInfo
- Publication number
- KR101550762B1 KR101550762B1 KR1020130146976A KR20130146976A KR101550762B1 KR 101550762 B1 KR101550762 B1 KR 101550762B1 KR 1020130146976 A KR1020130146976 A KR 1020130146976A KR 20130146976 A KR20130146976 A KR 20130146976A KR 101550762 B1 KR101550762 B1 KR 101550762B1
- Authority
- KR
- South Korea
- Prior art keywords
- code
- error correction
- decoder
- column
- decoding
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product codes
- H03M13/2912—Product codes omitting parity on parity
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
- H03M13/293—Decoding strategies with erasure setting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
본 발명의 연접 오류 정정 장치는 열방향과 행방향으로 배열된 복수의 블록에 대해서 상기 열방향과 상기 행방향 각각에 대해서 제1오류 정정 코드를 적용하여 열코드와 행코드로 구성된 블록단위 프로덕트 코드로 인코딩하는 제1인코더; 및 K개의 소스 심볼을 입력받아 제2오류 정정 코드를 적용하여 N-K개의 패러티 심볼을 포함하는 N개의 심볼로 인코딩하는 제2인코더를 포함하며,상기 N개의 심볼은 상기 복수의 블록을 구성하고, 여기서, K 및 N은 자연수이다.
Description
본 발명은 연접 오류 정정 장치에 관한 것으로, 보다 구체적으로 메모리(MEMORY)의 페이지(page) 단위의 오류를 정정하기 위한 두 개의 오류 정정 코드를 사용하는 연접 오류 정정 기법에 관한 것이다.
싱글 레벨 셀(Single-Level Cell, SLC) 메모리는 하나의 메모리 셀에 1비트의 데이터를 저장하는 메모리이다. 싱글 레벨 셀 메모리는 싱글 비트 셀(Single-Bit Cell, SBC) 메모리로도 불린다. 싱글 레벨 셀 메모리의 메모리 셀(싱글 레벨 셀)에 데이터를 저장하는 과정은 프로그램 과정이라고도 불리며, 메모리 셀의 문턱 전압(threshold voltage)을 변화시킬 수 있다. 예를 들어, 싱글 레벨 셀에 논리 "1"의 데이터가 저장된 경우에는 싱글 레벨 셀은 1.0V의 문턱 전압을 가질 수 있으며, 논리 "0"의 데이터가 저장된 경우에는 싱글 레벨 셀은 3.0V의 문턱 전압을 가질 수 있다.
싱글 레벨 셀들 사이의 미세한 전기적 특성의 차이로 인해 동일한 데이터가 프로그램된 싱글 레벨 셀들 각각에 형성된 문턱전압은 일정한 범위의 산포 (distribution)를 갖게 된다. 예를 들어, 메모리 셀로부터 판독된 전압이 0.5~1.5V인 경우에는 메모리 셀에 저장된 데이터가 논리 "1"이고, 메모리 셀로부터 판독된 전압이 2.5~3.5V인 경우에는 메모리 셀에 저장된 데이터는 논리 "0"으로 판정될 수 있다. 메모리 셀에 저장된 데이터는 판독시 메모리 셀의 전류 및 전압의 차이에 의해 구분된다.
한편, 메모리의 고집적화 요구에 응답하여 하나의 메모리 셀에 2비트 이상의 데이터를 프로그램할 수 있는 멀티 레벨 셀(Multi-Level Cell, MLC) 메모리가 제안된 바 있다. 멀티 레벨 셀 메모리는 멀티 비트 셀(Multi-Bit Cell, MBC) 메모리로도 불린다. 그러나, 하나의 메모리 셀에 프로그램되는 비트의 수가 증가할수록 신뢰성은 떨어지고, 판독 실패율(read failure rate)은 증가하게 된다. 하나의 메모리 셀에 m개의 비트를 프로그램하려면, 2m개의 문턱전압 중 어느 하나가 메모리 셀에 형성되어야 한다. 메모리 셀 사이의 미세한 전기적 특성의 차이로 인해, 동일한 데이터가 프로그램된 메모리 셀의 문턱전압들은 일정한 범위의 산포를 형성할 수 있다. 이때, m개의 비트에 의해 생성될 수 있는 2m개의 데이터 값 각각에 하나씩의 문턱전압의 산포가 대응할 수 있다. 그러나, 메모리의 전압 윈도우(voltage window)는 제한되어 있기 때문에, m이 증가함에 따라 인접한 비트들 사이의 문턱 전압의 2m개의 산포들 사이의 거리는 줄어들고, 산포들 사이의 거리가 더욱 줄어들면 산포들끼리 겹칠 수 있다. 산포들끼리 겹치면 판독 실패율이 증가할 수 있다
이러한 판독 실패율을 줄이기 위해, 오류 정정 코드(Error Control Codes or Error Control Coding or Error Correction Codes, ECC)의 이용과 오류를 줄이기 위한 효과적인 프로그램 방법에 대한 연구 등이 활발해지고 있다. 메모리 제어기(Memory Controller)는 호스트(host)가 메모리에 접근하는 것을 관리하는 장치인데, 가상 메모리 주소를 실제 메모리 주소로 변환하며 메모리 보호, 캐시(cache) 관리, 버스 중재 등의 역할을 담당한다. 일반적으로 하나의 주소에 하나의 페이지가 매핑이 되며 하나의 페이지는 4~8개의 워드(word)로 이루어져 있다. 각 워드는 오류 정정 코드에 의해 보호될 수 있다.
오류 정정 코드로서 해밍모드(Hamming code) 또는 BCH 부호(Bose-Chadhuri-Hocquenghem)가 널리 이용되고 있으나 판독 실패율이 증가함에 따라 더욱 강력한 오류 정정 능력을 갖는 오류 정정 코드의 필요성이 대두되고 있다.
LDPC(Low Density Parity Check) 코드와 터보(Turbo) 코드 등이 차세대 플래시 메모리(flash memory)의 오류 정정 코드로서 거론되고 있지만, 이들 코드의 뛰어난 오류 정정 능력은 채널로부터 연판정(soft output) 정보가 주어졌을 때 보장이될 수 있다. 플래시 메모리의 특성상 연판정 정보를 획득하기 위해서는 다중 판독을 실행해야 하지만 이는 시스템의 데이터 판독 속도를 크게 저하하는 문제점을 야기한다.
강력한 오류 정정 능력을 갖는 BCH 코드의 사용이 제안될 수 있지만, BCH 디코더의 경우 오류 정정 능력이 커짐에 따라 디코딩 복잡도가 급격하게 증가하는 문제점이 존재한다.
연판정 정보를 요구하지 않고 오류 정정 능력을 크게 향상시키면서도 디코딩의 복잡도가 커지는 것이 방지될 수 있는 인코딩 및 디코딩 기법에 대한 필요성이 대두되고 있다.
본 발명의 목적은 전술한 종래기술의 필요성을 충족시키기 위해서 안출된 것으로 연판정 정보를 요구하지 않고 경판정 정보만으로 오류 정정 능력을 크게 향상시킬 수 있는 연접 오류 정정 장치를 제공하는데 있다.
또한, 본 발명의 목적은 디코딩 회로의 복잡도를 높이지 않으면서 높은 오류 정정 능력을 가질 수 있는 연접 오류 정정 장치를 제공하는데 있다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
본 발명의 실시형태에 따른 연접 오류 정정 장치는 열방향과 행방향으로 배열된 복수의 블록에 대해서 상기 열방향과 상기 행방향 각각에 대해서 제1오류 정정 코드를 적용하여 열코드와 행코드로 구성된 블록단위 프로덕트 코드로 인코딩하는 제1인코더; 및 K개의 소스 심볼을 입력받아 제2오류 정정 코드를 적용하여 N-K개의 패러티 심볼을 포함하는 N개의 심볼로 인코딩하는 제2인코더를 포함하며, 상기 N개의 심볼은 상기 복수의 블록을 구성하고, 여기서, K 및 N은 자연수이다.
본 발명의 실시예에 따른 연접 오류 정정 장치는 채널 검출기로부터 수신된 상기 블록단위 프로덕트 코드에 대해서 상기 제1오류 정정 코드를 적용하여 디코딩을 수행하는 제1디코더; 및 상기 제1디코더에서 디코딩이 실패한 블록에 대해서 상기 제2오류 정정 코드를 적용하여 디코딩을 수행하는 제2디코더를 더 포함할 수 있다.
본 발명에 따르면 연판정 정보를 요구하지 않고 경판정 정보만으로 오류 정정 능력을 크게 향상시킬 수 있는 연접 오류 정정 기법을 제공할 수 있다.
또한, 본 발명에 따르면 디코딩 회로의 복잡도를 높이지 않으면서 높은 오류 정정 능력을 가질 수 있는 연접 오류 정정 기법을 제공할 수 있다.
도1은 본 발명의 실시예에 따른 연접 오류 정정 장치의 구성도이다.
도2a는 본 발명의 실시예에 따른 연접 오류 정정 장치의 제1인코더에서 인코딩 후의 블록단위 프로덕트 코드의 구조를 예시한다.
도2b는 본 발명의 실시예에 따른 연접 오류 정정 장치의 제2인코더에서 인코딩 후의 코드의 구조를 예시한다.
도3a은 본 발명의 실시예에 따른 연접 오류 정정 기법과 종래의 오류 정정 기법의 성능을 시뮬레이션한 그래프이다.
도3b는 종래 오류 정정 기법의 성능을 시뮬레이션한 그래프이다.
도2a는 본 발명의 실시예에 따른 연접 오류 정정 장치의 제1인코더에서 인코딩 후의 블록단위 프로덕트 코드의 구조를 예시한다.
도2b는 본 발명의 실시예에 따른 연접 오류 정정 장치의 제2인코더에서 인코딩 후의 코드의 구조를 예시한다.
도3a은 본 발명의 실시예에 따른 연접 오류 정정 기법과 종래의 오류 정정 기법의 성능을 시뮬레이션한 그래프이다.
도3b는 종래 오류 정정 기법의 성능을 시뮬레이션한 그래프이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시 예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명되는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙여 설명하기로 한다.
본 발명의 실시예에서는 연접 코드를 사용하여 메모리 페이지의 오류 정정 능력을 증가시키고자 한다.
BCH 코드를 이용하여 페이지의 오류 정정 능력을 크게 증가시킬 수 있는 방법 중 하나는 두 개의 상대적으로 짧은 BCH 코드를 프러덕트(product) 방식으로 연접 코드를 사용하는 것이다. 전체 데이터를 2차원으로 배열하고, 열(row) 방향과 행(column) 방향으로 BCH 코드를 사용하여 각각의 방향에 대해서 패러티 비트(parity bit)를 생성하는 방법이다. 여기서, 상대적으로 짧은 BCH 코드라함은 연접 코드를 사용하지 않고 동일한 오류 정정 능력을 갖기 위해서 필요한 BCH 코드의 길이에 대한 상대적인 길이가 짧은 것을 의미한다.
특히, 하나의 열방향 코드와 하나의 행방향 코드의 교차 부분에 1비트(bit)가 아니라 다수의 비트가 위치된 경우 블록단위 프러덕트 코드(BW-PC:block-wise product codes)라고 지칭될 수 있다. 이러한 BW-PC는 1비트가 교차하는 프러덕트 코드에 비해 더욱 강력한 요소 코드(component code)를 열방향과 행방향으로 적용할 수 있을뿐 아니라 오류가 발생한 위치를 열방향 코드와 행방향 코드를 통해서 알 수 있다.
본 발명의 실시예에서는 BW-PC에서 열방향과 행방향의 교차 블록에서 발생한 삭제(erasure) 정보에 대응하여 별개의 오류 정정 코드를 적용할 수 있다. 여기서, 삭제 정보로부터 디코딩 결과 틀린 값인지 옳은 값인지는 알 수 없으나 오류를 포함하고 있다는 정보를 알 수 있다.
이하, 본 발명에서 실시하고자 하는 구체적인 기술내용에 대해 첨부도면을 참조하여 상세하게 설명하기로 한다.
도1은 본 발명의 실시예에 따른 연접 오류 정정 장치의 구성도이다. 본 발명의 실시예에 따른 연접 오류 정정 장치(100)는 송신단에서 제1인코더(110)와 제2인코더(120)를 포함할 수 있다.
도2a는 본 발명의 실시예에 따른 연접 오류 정정 장치의 제1인코더에서 인코딩 후의 블록단위 프로덕트 코드의 구조를 예시한다. 도2b는 본 발명의 실시예에 따른 연접 오류 정정 장치의 제2인코더에서 인코딩 후의 코드의 구조를 예시한다.
본 발명의 실시예에 따른 제1인코더(110)는, 도2a에 도시된 바와 같은, 열방향과 행방향으로 배열된 복수의 블록(B)에 대해서 상기 열방향과 상기 행방향 각각에 대해서 제1오류 정정 코드를 적용하여 열코드와 행코드로 구성된 블록단위 프로덕트 코드로 인코딩할 수 있다. 열코드와 행코드는 각각 하나의 블록(B)을 공유한다. 이때, 각각의 블록은 추후 설명되는 제2인코더(120)를 통해 부호화된 다수의 비트(bits)를 포함할 수 있다.
본 발명의 실시예에서 제1인코더(110)를 통해서 인코딩된 BW-PC는 열코드와 행코드가 1개의 비트를 공유하는 프러덕트 코드의 일반화된 형태로 볼 수 있다. 단일 비트가 아닌 블록을 공유하는 기법의 장점은 단순 프로덕트 코드를 사용할 때보다 더 길고 오류 정정 능력이 뛰어난 요소 코드를 사용할 수 있다는 점이다. 반면, 추후 제1디코더(140)에서 디코딩에 실패할 때 오류가 발생한 위치 정보만을 이용할 수 있다.
이하에서, 제1인코더(110)에서 열방향 요소 코드와 행방향 요소 코드는 제1오류 정정 코드로서 BCH 코드가 적용된 경우에 대해서 예를 들어 설명한다. 제1오류 정정 코드로는 BCH(Bose-Chadhuri-Hocquenghem) 코드, 해밍(Hamming) 코드, 리드 솔로몬(Reed-Solomon) 코드 등 오류 정정 및 오류 검출이 가능한 모든 코드가 이용될 수 있다.도2a에서, 열코드와 행코드의 코드길이, 메시지 길이 및 오류 정정력은 각각 (nr, kr, tr)로 가정한다. Bi,j는 i번째 열코드와 j번째 행코드에 의해 공유되는 블록을 나타내고, nB는 하나의 블록이 갖는 비트의 수로 정의한다. 도2a에서 Rr i와 Rr j는 각각 i번째 열코드와 j번재 행코드의 패러티를 구성하는 블록이다. 이때, 도2a에 도시된 하나의 블록(B)은 제2인코더(120)에서 제2오류 정정 코드를 통해 부호화된 하나의 심볼(symbol)이 되거나 다수개(Ni)개의 심볼일 수 있다.
추후, 제1디코더(140)와 같은 디코더에서 일반적으로 BW-PC를 행방향과 열방향으로 반복적인 디코딩을 수행하는 경우 낮은 raw BER(raw bit error rate) 영역에서 오류 마루(error floor)가 발생하고 이는 특정의 우세한(dominant) 오류 패턴에 의해서 발생된다. 이러한 오류 패턴은 하나 또는 두 개의 행코드와 열코드가 쌍으로 디코딩에 실패하는 경우에 나타난다.
일반적으로 이러한 오류 마루를 낮추기 위해서 삭제(erasure) 정보가 발생한 블록의 데이터를 반복읽기 프로세스를 통해서 연판정 정보를 얻고 이를 이용하여 신뢰성 기반 디코딩(reliability based decoding)이 수행되었다. 이와 같이 연판정 정보를 획득하기 위해서는 다중 판독을 실행해야 하나 이는 시스템의 데이터 판독 속도를 크게 저하하는 문제점을 야기한다.
따라서, 본 발명의 실시예에서는 BW-PC에서 열코드와 행코드가 공유하는 블록에 삭제 정정 코드로서 제2오류 정정 코드를 적용함으로서 경판정 정보만으로 보다 효율적으로 오류 마루를 낮출 수 있는 기법을 제안하고자 한다. 본 발명의 실시예에 따른 삭제 정정 코드, 즉 제2오류 정정 코드로는 체계적(systematic)이면서도 선형성을 갖는 선형 블록 코드(linear block code)로서 하나의 패러티 심볼(paraty symbol)은 복수개 소스 심볼(source symbol)의 선형 결합(linear combination)으로 이루어지게 되고, 마찬가지로 제1디코더(140)에서 삭제된 심볼의 경우에도 나머지 심볼들의 선형 결합으로 이루어질 수 있다. 이때, 어느 위치 또는 몇 번째의 심볼들에 대한 정보가 필요한지는 미리 습득하고 있을 수 있다.
제2오류 정정 코드로는 예컨대 LDPC(Low Density Parity Check) 코드, 리드-솔로몬(Reed-Solomon) 코드, 토네이도(Tornado) 코드, 파운틴(Fountain) 코드 그리고 랩터(Raptor) 코드 등의 삭제 정정(erasure correction) 코드가 이용될 수 있다.
이하에서는 삭제 정정 코드로서 랩터 코드가 적용된 경우를 예로서 설명한다.
도2a에 도시된 하나의 블록(B)이 하나의 랩터 심볼(symbol)이 되는 경우, 즉, Ni=1인 경우를 가정하면 아래와 같다. 제2인코더(120)는 K개의 소스 심볼을 입력받아 제2오류 정정 코드를 적용하여 N-K개의 패러티 심볼을 포함하는 N개의 심볼로 인코딩할 수 있다. 여기서, K개의 소스 심볼는 KnB 개의 소스 비트들을 포함한다. 이러한 발생한 N개의 심볼들은 도2b에 도시된 바와 같이, kr B개의 열과 kc B개의 행으로 구성된 행렬로 배치될 수 있다. 즉, 제2오류 정정 코드를 통해 인코딩된 N개의 심볼은 도2b에 도시된 바와 같은 복수의 블록(B)을 구성한다. 여기서, N 및 K는 양의 정수, 즉 자연수의 값을 가질 수 있다.
만약, 하나의 블록(Bi,j)이 다수의 랩터 심볼에 의해 구성될 수도 있다. 이 경우, 제2인코더(120)에 입력되는 소스 심볼의 개수는 NiK개가 되고 패러티 심볼의 개수는 Ni(N-K)개가 된다. 전체 랩터 심볼의 개수는 NiN개이고 도2a 및 도2b에서 각각의 블록(Bi,j)는 Ni개의 랩터 심볼로 구성될 수 있다.
이해의 편의를 위해서 제1인코더(110)의 인코딩 기법에 대해서 제2인코더(120)의 그것에 비해 먼저 설명하였지만, 제1인코더(110)는 도2b와 같이 제2인코더(120)에 의해 생성되어 배치된 복수의 블록으로 배치된 랩터 심볼에 대해서 BW-PC로 인코딩을 수행한다. 즉, 제1인코더(110)는 도2b에 배치된 바와 같은 복수의 블록에 대해서 kr B개의 열 인코딩과 kc B개의 행 인코딩을 수행하여 도2a와 같은 제1인코더(110)의 출력인 블록단위 프러덕트 코드를 생성할 수 있다.
본 발명의 실시예에 따른 연접 오류 정정 장치(100)는 제1디코더(140)와 제2디코더(150)를 더 포함한다. 도1에서 제1 및 제2인코더(110, 120)에 의해 인코딩된 데이터는 데이터 채널(130)을 통해서 제1디코더(140)와 제2디코더(150)로 전달된다. 데이터 채널(130)은 디지털 저장 매체(storage) 또는 무선 및 유선 네트워크에서 정보 전달을 위한 데이터 채널(130)일 수 있다.
본 발명의 실시예에 따른 제1디코더(140)는 예컨대 채널 검출기(미도시)로부터 수신된 블록단위 프로덕트 코드에 대해서 제1오류 정정 코드를 이용하여 디코딩을 수행한다. 제1디코더(140)는 열디코더와 행디코더를 포함할 수 있다.
제1디코더(140)는 우선 열디코더와 행디코더를 이용해 반복적으로 디코딩을 수행할 수 있다. 열디코더에서 각각의 열코드에 대해서 일반적인 경판정 정보를 이용해 BCH 디코딩을 수행(예컨대, Berlekamp-Masseay decoding)한 후, 행디코더가 열디코더의 결과를 이용하여 각각의 행코드에 대해서 순차적인 디코딩을 수행한다. 이로서 1회 디코딩이 완료된다. 제1디코더(140)는 이상에서 설명한 바와 같은 디코딩 절차를 반복적으로 수행할 수 있다. 이때, 반복 디코딩은 디코딩 결과 수신된 BW-PC에서 모든 오류가 정정되거나, 추가적인 오류 정정이 발생하지 않을때까지 지속될 수 있다. 또는 최대 반복 횟수에 도달할 때까지 디코딩이 반복될 수 있다. 제1디코더(140)의 디코딩 완료시, 오류 정정에 실패한 블록은 삭제로 처리되며 해당 블록에 속해있는 심볼들은 삭제 심볼로 분류된다.
제2디코더(150)에서는 상기 삭제 심볼을 복구하도록 제2오류 정정 코드를 적용하여 디코딩을 수행할 수 있다. 즉, 제2디코더는 삭제 심볼의 위치를 제1디코더(140)로부터 획득할 수 있으며, 해당 삭제 심볼의 오류를 정정하기 위해서 몇 번째 심볼들에 대한 정보가 필요한지는 미리 알고 있을 수 있다. 따라서, 제2디코더는 삭제 심볼에 대해서 선형 결합된 심볼들의 정보를 이용하여 해당 삭제 심볼을 복구할 수 있다.
이때, 발생할 수 있는 문제점은, 전체 코드 길이가 작은 경우 각각의 열코드와 행코드의 길이가 작아지고 이에 따라 각각의 요소 코드가 실제 전송된 코드워드(codeword)가 아닌 다른 코드워드로 디코딩되는 오정정(misscorrection)이 발생할 확률이 높아질 수 있다는 점이다. 이를 해결하기 위해서 본 발명의 실시예에서는 열코드와 행코드가 갖는 오류 정정 능력 값(t)을 0 초과 및 상기 오류 정정 능력 값의 최대값 사이에서 임의로 설정할 수 있도록 한다. 즉, 본 발명의 실시예에서는 요소 코드가 갖는 오류 정정 능력 값(tr, tr)을 디코딩하는 과정에서 임의적으로 낮추어 축소된 디코딩 스피어(decoding sphere)를 갖도록 하는 것이다. 이러한 경우 코드워드들 사이 자체가 줄어들진 않지만, 디코더가 감소된 오류 정정 능력 값(t) 내에서만 유효한 코드워드를 검출해 내고 그렇지 않은 경우 디코딩 실패로 간주하기 때문에 오정정이 발생하는 확률이 현저히 경감될 수 있다.
이해를 위해 오류 정정 능력값(t)에 대해서 설명하면 아래와 같다. 제1오류 정정 코드의 오류 정정 능력값(t)은 BCH 코드, 리드 솔로몬 코드, 해밍 코드 등에서 코드 길이(n)과 정보 길이(k)에 의해서 결정론(deterministic)적으로 결정되는 값이다. 일반적으로 디코딩 과정은 오류가 발생한 위치를 판단하고 해당 위치에서 유효값을 찾는 과정으로 나뉠 수 있다. 이때, 전단에서 오류 정정 능력값(t) 보다 작은 오류가 발생되면 디코딩이 이루어지고 오류 정정 능력값(t)보다 큰 오류 개수가 발생되면 디코딩이 실패하고 디코딩 과정이 종료된다. 따라서, 예컨대 5개의 오류를 정정할 수 있는 코드에 대해서 오류 정정 능력값(t)을 3개로 낮추어 설정하면, 4개의 오류가 발생한 경우 비록 해당 코드로 오류를 정정할 수 있지만 디코딩이 실패한 것으로 판단하여 디코딩 과정을 종료하는 것이다.
도3a은 본 발명의 실시예에 따른 연접 오류 정정 기법과 종래의 오류 정정 기법의 성능을 시뮬레이션한 그래프이다. 도3a에서 본 발명의 실시예에 따른 연접 오류 정정 기법으로서 0.93 부호율(coderate)을 갖는 8K바이트 BW-PC를 이너코드(inner code)로 이용하고 랩터 코드를 아우터 코드(outer code)로 이용한 경우(Praptor)가 마름모로 마크된 그래프로 표시된다. 종래의 오류 정정 기법으로서는 단순히 BW-PC만을 이용한 경우(Sim)가 사각형으로 마크된 그래프로 표시된다. 도3a를 살펴보면 raw BER 전 구간에 대해서 PER(Page Error Rate)의 관점에서 본 발명의 실시예에 따른 연접 오류 정정 기법의 경우에 종래 기법의 경우보다 성능이 월등히 좋음을 알 수 있다. 여기서, Pi,j는 i개의 열디코더와 j개의 행디코가 실패하는 우세한 사건(dominant event)의 확률을 나타낸다.
도3b는 종래 오류 정정 기법의 성능을 시뮬레이션한 그래프이다. 도3b에서는 도3a의 본 발명의 실시예에 따른 연접 오류 정정 기법의 성능과 비교하기 위한 0.93 부호율 8K바이트의 BCH와 LDPC의 성능을 나타낸다. 도3b에서 서로 다른 코드워드 사이즈를 갖는 상대적으로 긴 BCH 코드에 대한 성능이 삼각형으로 마크된 그래프로 표시된다. 또한, 도3b에서 경판정 정보를 이용한 LDPC 코드에 대한 성능이 점선과 실선으로 표시된다. 여기서 점선은 1비트 양자화된 경판정 정보를 이용하는 LDPC 코드에 대한 성능이고 실선은 2비트 양자화된 경판정 정보를 이용하는 LDPC 코드에 대한 성능을 나타낸다.
도3a에서 본 발명의 실시예에 따른 연접 오류 정정 기법을 통한 성능은 도3b에 도시된 긴 BCH 코드나 1비트 양자화된 경판정 정보를 이용하는 LDPC 코드보다 좋은 성능을 나타내며 2비트 양자화된 경판정 정보를 이용하는 LDPC 코드보다 좋거나 유사한 성능을 나타냄을 알 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 연접 오류 정정 기법은 경판정 정보만을 가지고 BW-PC를 이용하여 임의의 삭제 채널(erasure channel)을 생성시키고, 발생한 삭제 심볼을 삭제 정정 코드로 복구시킬 수 있다. 본 발명의 실시예에 따르면 경판정 정보만을 이용하면서도 뛰어나 오류 정정 능력을 나타낼 수 있다. 또한, 본 발명의 실시예에 따르면, 예컨대, 짧은 BCH 코드를 BW-PC에 사용함으로써 전체 코드워드 길이가 같은 BCH 코드에 비해 더 나은 오류 정정 능력을 보이면서도 디코딩의 복잡도를 현저히 낮출 수 있다. 또한, 본 발명의 실시예에 따르면 3번의 판독 과정을 통해서 2비트 양자화된 정보(2bit quantization information)을 이용하는 LDPC 오류 정정 기법과 견줄만한 오류 정정 능력을 나타낼 수 있다.
또한, 본 발명의 실시예에 따른 연접 오류 정정 기법은 두 개의 상대적으로 짧은 오류 정정 코드(ECC)를 프러덕트 방식으로 사용하여 전체 데이터를 2차원으로 배열하여 열방향과 행방향으로 ECC(예컨대, BCH 코드)를 적용하여 이너 코드(inner code)를 구성하고, 이를 이용하여 삭제 채널을 생성하여 생성된 삭제 심볼을 삭제 정정 코드(예컨대, non-binary low-density generator matrix code(NB-LDGM), 랩터 코드)를 아우터 코드(outer code)를 사용하여 효과적으로 복구함으로써, 효과적으로 오류 정정 능력을 향상시킬 수 있다.
이상에서 설명한 본 발명의 바람직한 실시 예들은 기술적 과제를 해결하기 위해 개시된 것으로, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자(당업자)라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가 등이 가능할 것이며, 이러한 수정 변경 등은 이하의 특허청구범위에 속하는 것으로 보아야 할 것이다.
100: 연접 오류 정정 장치
110: 제1인코더
120: 제2인코더
130: 채널
140: 제1디코더
150: 제2디코더
110: 제1인코더
120: 제2인코더
130: 채널
140: 제1디코더
150: 제2디코더
Claims (8)
- 열방향과 행방향으로 배열된 복수의 블록에 대해서 상기 열방향과 상기 행방향 각각에 대해서 제1오류 정정 코드를 적용하여 열코드와 행코드로 구성된 블록단위 프로덕트 코드로 인코딩하는 제1인코더; 및
K개의 소스 심볼을 입력받아 제2오류 정정 코드를 적용하여 N-K개의 패러티 심볼을 포함하는 N개의 심볼로 인코딩하는 제2인코더를 포함하며,
상기 N개의 심볼은 상기 복수의 블록을 구성하고,
상기 제2오류 정정 코드의 상기 심볼은 상기 복수의 블록 중 하나의 블록 전체 또는 일부일 수 있으며,
여기서, K 및 N은 자연수인,
연접 오류 정정 장치. - 제1항에 있어서,
상기 제1오류 정정 코드는 BCH(Bose-Chadhuri-Hocquenghem) 코드, 해밍(Hamming) 코드, 리드 솔로몬(Reed-Solomon) 코드 중 어느 하나인,
연접 오류 정정 장치. - 제1항에 있어서,
상기 제2오류 정정 코드는 LDPC(Low Density Parity Check) 코드, 리드-솔로몬(Reed-Solomon) 코드, 토네이도(Tornado) 코드, 파운틴(Fountain) 코드 그리고 랩터(Raptor) 코드 중 어느 하나인,
연접 오류 정정 장치. - 삭제
- 제1항 내지 제3항 중 어느 한 항에 있어서,
채널 검출기로부터 수신된 상기 블록단위 프로덕트 코드에 대해서 상기 제1오류 정정 코드를 적용하여 디코딩을 수행하는 제1디코더; 및
상기 제1디코더에서 디코딩이 실패한 블록에 대해서 상기 제2오류 정정 코드를 적용하여 디코딩을 수행하는 제2디코더를 더 포함하는,
연접 오류 정정 장치. - 제5항에 있어서,
상기 제1디코더는 열디코더와 행디코더를 포함하며,
상기 제1디코더에서 디코딩이 실패한 블록은 디코딩이 실패한 상기 열디코더와 디코딩이 실패한 상기 행디코더가 공유하는 블록인,
연접 오류 정정 장치. - 제6항에 있어서,
상기 제1디코더는 상기 열디코더와 상기 행디코더를 통해 반복 디코딩을 수행하는,
연접 오류 정정 장치. - 제6항에 있어서,
상기 열코드와 상기 행코드의 오류 정정 능력 값(t)을 0 초과 및 상기 오류 정정 능력 값의 최대값 사이에서 임의로 설정할 수 있는,
연접 오류 정정 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130146976A KR101550762B1 (ko) | 2013-11-29 | 2013-11-29 | 연접 오류 정정 장치 |
US14/555,656 US9654147B2 (en) | 2013-11-29 | 2014-11-27 | Concatenated error correction device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130146976A KR101550762B1 (ko) | 2013-11-29 | 2013-11-29 | 연접 오류 정정 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150062384A KR20150062384A (ko) | 2015-06-08 |
KR101550762B1 true KR101550762B1 (ko) | 2015-09-08 |
Family
ID=53266181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130146976A KR101550762B1 (ko) | 2013-11-29 | 2013-11-29 | 연접 오류 정정 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9654147B2 (ko) |
KR (1) | KR101550762B1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017193305A1 (zh) * | 2016-05-11 | 2017-11-16 | 华为技术有限公司 | 数据传输方法、设备及系统 |
EP3531561B1 (en) * | 2016-12-27 | 2023-07-12 | Huawei Technologies Co., Ltd. | Layered min-sum decoding for qc-ldpc codes according to increasing row weights |
US10331514B2 (en) | 2017-03-17 | 2019-06-25 | Micron Technology, Inc. | Tiered error correction code (ECC) operations in memory |
US10312944B2 (en) * | 2017-03-17 | 2019-06-04 | Micron Technology, Inc. | Error correction code (ECC) operations in memory for providing redundant error correction |
US11070314B2 (en) * | 2017-08-18 | 2021-07-20 | Nokia Solutions And Networks Oy | Use of LDPC base graphs for NR |
KR102511903B1 (ko) * | 2018-02-26 | 2023-03-21 | 에스케이하이닉스 주식회사 | 고정된 에러정정능력의 에러정정코드 엔진을 이용하여 재구성할 수 있는 에러정정동작을 수행하는 메모리 시스템 |
CN109039532B (zh) * | 2018-05-28 | 2021-02-09 | 重庆邮电大学 | 一种基于Raptor码的联合纠错保密方法 |
CN109088701A (zh) * | 2018-09-26 | 2018-12-25 | 北京理工大学 | 一种基于在线喷泉码的ldpc码串行传输方法 |
US10853167B2 (en) * | 2019-01-28 | 2020-12-01 | Winbond Electronics Corp. | Memory apparatus having hierarchical error correction code layer |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381425A (en) | 1992-03-27 | 1995-01-10 | North Carolina State University | System for encoding and decoding of convolutionally encoded data |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107505B2 (en) * | 2001-03-27 | 2006-09-12 | Comtech Aha Corporation | Concatenated turbo product codes for high performance satellite and terrestrial communications |
US6986092B2 (en) * | 2001-12-04 | 2006-01-10 | Qualcomm Inc. | Erasure-and-single-error correction decoder for linear block codes |
JP4141964B2 (ja) * | 2002-04-05 | 2008-08-27 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | エラー訂正コードに追加のエラー訂正レイヤを埋め込む方法及び装置 |
KR20080076613A (ko) | 2007-02-16 | 2008-08-20 | 삼성전자주식회사 | 연접코드를 이용한 인코더/디코더 및 그의 인코딩/디코딩방법 |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
GB2488462B (en) * | 2009-12-17 | 2018-01-17 | Ibm | Data management in solid state storage systems |
US20140006897A1 (en) * | 2012-06-29 | 2014-01-02 | International Business Machines Corporation | Correction of structured burst errors in data |
-
2013
- 2013-11-29 KR KR1020130146976A patent/KR101550762B1/ko active IP Right Grant
-
2014
- 2014-11-27 US US14/555,656 patent/US9654147B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381425A (en) | 1992-03-27 | 1995-01-10 | North Carolina State University | System for encoding and decoding of convolutionally encoded data |
Also Published As
Publication number | Publication date |
---|---|
KR20150062384A (ko) | 2015-06-08 |
US20150155888A1 (en) | 2015-06-04 |
US9654147B2 (en) | 2017-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101550762B1 (ko) | 연접 오류 정정 장치 | |
US10135465B2 (en) | Error correction methods and apparatuses using first and second decoders | |
KR100845529B1 (ko) | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 | |
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
KR102057371B1 (ko) | 저장 시스템에서 오류 정정 인코딩된 데이터의 리던던시 | |
US20160164543A1 (en) | Turbo product codes for nand flash | |
KR102275717B1 (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US9405624B2 (en) | On-die error detection and correction during multi-step programming | |
KR20150073717A (ko) | 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들 | |
Ankolekar et al. | Multibit error-correction methods for latency-constrained flash memory systems | |
US10423484B2 (en) | Memory controller, memory system, and control method | |
US9960788B2 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
US11025281B2 (en) | Memory system | |
KR102314481B1 (ko) | Siso 복호 방법, 디코더 및 반도체 메모리 시스템 | |
US10200066B2 (en) | Code reconstruction scheme for multiple code rate TPC decoder | |
JP2020155861A (ja) | メモリシステム | |
JP2020046823A (ja) | メモリシステム | |
US9350390B2 (en) | Encoder, decoder and semiconductor device including the same | |
US20160179616A1 (en) | Operating method of flash memory system | |
CN107402860B (zh) | 用于执行内建式自我测试的独立磁盘冗余数组译码系统 | |
JP2020135391A (ja) | メモリシステム | |
KR101355988B1 (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
US10951238B1 (en) | Memory system and method for controlling non-volatile memory | |
KR101357544B1 (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
JP2021048525A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20200103 Year of fee payment: 5 |