KR20120064377A - 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 - Google Patents
비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 Download PDFInfo
- Publication number
- KR20120064377A KR20120064377A KR1020100125575A KR20100125575A KR20120064377A KR 20120064377 A KR20120064377 A KR 20120064377A KR 1020100125575 A KR1020100125575 A KR 1020100125575A KR 20100125575 A KR20100125575 A KR 20100125575A KR 20120064377 A KR20120064377 A KR 20120064377A
- Authority
- KR
- South Korea
- Prior art keywords
- syndrome
- error
- equation
- quot
- values
- Prior art date
Links
Images
Classifications
-
- 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
-
- 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/1072—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 in multilevel memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/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/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
디코더는 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다. 상기 신드롬 연산 블록은 상기 신드롬 값들 중 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 적어도 두 개의 홀수 신드롬 값들을 생성한다.
Description
본 발명은 메모리 분야에 관한 것으로 보다 상세하게는 BCH 디코더, 이를 포함하는 메모리 시스템 및 BCH 디코딩 방법에 관한 것이다.
최근 하나의 셀에 여러 비트를 저장하여 비트 당 비용을 줄일 수 있는 멀티 레벨 셀(Multi Level Cell, MLC) 플래시 메모리가 반도체 드라이브 (Solid State Drive, SSD)에서 선호되고 있다. 그러나 단일 레벨 셀(Single Level Cell, SLC) 플래시 메모리와 비교하였을 때, 동일한 셀 내에 저장된 정보 사이의 노이즈 마진이 줄어들기 때문에 MLC의 데이터 안정성은 악화되며 비트 오류 확률은 높아지게 된다. BCH 부호는 최대 오류 정정 능력(t) 만큼의 비트 오류의 정정이 보장되는 특징을 가지고 있으며 이러한 특징 때문에 BCH 부호는 차세대 저장 매체인 반도체 드라이브(SSD)에 널리 사용되고 있다. MLC의 하나의 셀에 저장하는 비트 수가 증가할수록 비트 오류 확률이 높아지게 되고 그에 비례하여 높은 오류 정정 능력의 BCH 부호를 사용하는 추세이다. 현재 오류 정정 능력이 40인 BCH 부호가 고려되고 있다. BCH 부호는 일반적으로 신드롬 연산, Key-equation Solver(KES), Chien Search의 세 단계 과정을 통해 복호화가 가능하다. Folding 기법과 하위구조 공유 기법이 KES와 Chien Search 단계에 대하여 하드웨어 복잡도를 낮추기 위한 최적화 기법으로 적용되었다.
신드롬 연산 단계는 다른 단계에 비해 상대적으로 하드웨어 복잡도가 낮은 것으로 간주되었지만, 이러한 최적화 알고리즘을 통하여 다른 단계와 거의 유사한 복잡도를 가지게 되었다. 2t 만큼의 신드롬이 복호화 과정에서 필수적으로 요구되기 때문에, 신드롬 연산의 복잡도는 높은 오류 정정 능력을 요구하는 BCH 복호기에서 상당한 비중을 차지하게 된다.
상기와 같은 문제점을 해결하기 위한 본 발명의 신드롬 연산에 필요한 게이트 수를 감소시킬 수 있는 디코더를 제공하는 것이다.
본 발명의 일 목적은 신드롬 연산에 필요한 시간을 감소시킬 수 있는 디코딩 방법을 제공하는 것이다.
본 발명의 일 목적은 상기 디코더를 포함하는 메모리 시스템을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 BCH 디코더는 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다. 상기 신드롬 연산 블록은 상기 신드롬 값들 중 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 적어도 두 개의 홀수 신드롬 값들을 생성한다.
실시예에 있어서, 상기 신드롬 연산 블록은 상기 적어도 하나의 홀수 신드롬 값을 거듭 제곱 연산하여 상기 적어도 두 개의 홀수 신드롬 값들을 동시에 생성할 수 있다.
실시예에 있어서, 상기 적어도 하나의 홀수 신드롬 값(S1)이 하기의 [수학식 1]과 같은 경우에 2r 번째 신드롬 값은 하기의 [수학식 2]와 같을 수 있다.
[수학식 1]
[수학식 2]
여기서, S1은 (b0, b1, ..., bm-1)을 계수로 가지는 GF(Galois Field) 엘리먼트 αj임(j는 0에서부터 m-1까지 0은 2이상의 자연수).
실시예에 있어서, 상기 S1으로부터 파생되는 2의 거듭제곱으로 표현되는 짝수 신드롬 값들은 하기의 [수학식 3]으로부터 연산될 수 있다.
[수학식 3]
실시예에 있어서, 상기 BCH 디코더의 병렬화 계수가 8인 경우에 상기 신드롬 연산 블록은 8개의 GF 곱셈기와 하나의 레지스터를 이용하여 상기 S1을 생성하고 상기 생성된 S1에 대하여 거듭제곱 연산을 병렬적으로 적용하여 S2, S4, S8을 얻을 수 있다.
실시예에 있어서, 상기 8개의 GF 곱셈기중 상수 곱셈기와 상기 거듭 제곱 연산이 병렬적으로 적용되는 거듭 제곱기들에는 상기 S1이 공통으로 인가될 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 BCH 디코딩 방법은 수신된 코드워드로부터 신드롬 값들을 생성하는 단계, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 단계, 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 단계 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 단계를 포함한다. 상기 신드롬 값들 중 짝수 신드롬 값들은 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 생성된다.
실시예에 있어서, 상기 짝수 신드롬 값들은 상기 적어도 하나의 홀수 신드롬 값을 거듭 제곱 연산하여 생성될 수 있다.
실시예에 있어서, 상기 적어도 하나의 홀수 신드롬 값(S1)이 하기의 [수학식 4]와 같은 경우에 2r 번째 신드롬 값은 하기의 [수학식 5]와 같을 수 있다.
[수학식 4]
[수학식 5]
여기서, S1은 (b0, b1, ..., bm-1)을 계수로 가지는 GF(Galois Field) 엘리먼트 αj임(j는 0에서부터 m-1까지 0은 2이상의 자연수).
실시예에 있어서, 상기 S1으로부터 파생되는 2의 거듭제곱으로 표현되는 짝수 신드롬 값들은 하기의 [수학식 6]으로부터 연산될 수 있다.
[수학식 6]
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 메모리 시스템은 메모리 장치 및 상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더 및 상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함한다. 상기 ECC 디코더는 상기 메모리 장치로부터 출력되는 데이터로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 데이터를 출력하는 에러 정정 블록을 포함한다. 상기 신드롬 연산 블록은 상기 신드롬 값들 중 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 적어도 두 개의 홀수 신드롬 값들을 생성한다.
실시예에 있어서, 상기 메모리 장치는 플래시 메모리 장치일 수 있다.
실시예에 있어서, 상기 플래시 메모리 장치는 각각이 복수 비트의 데이터를 저장트 멀티비트 셀들을 구비하는 메모리 셀 어레이를 구비할 수 있다.
실시예에 있어서, 상기 적어도 하나의 홀수 신드롬 값(S1)이 하기의 [수학식 7]과 같은 경우에 2r 번째 신드롬 값은 하기의 [수학식 8]과 같을 수 있다.
[수학식 7]
[수학식 8]
여기서, S1은 (b0, b1, ..., bm-1)을 계수로 가지는 GF(Galois Field) 엘리먼트 αj임(j는 0에서부터 m-1까지 0은 2이상의 자연수).
실시예에 있어서, 상기 S1으로부터 파생되는 2의 거듭제곱으로 표현되는 짝수 신드롬 값들은 하기의 [수학식 9]로부터 연산될 수 있다.
[수학식 9]
본 발명의 실시예들에 따르면 높은 오류 정정 능력을 요구하는 BCH 인코더에서 홀수 신드롬 값들을 우선적으로 계산한 후에 홀수 번째 신드롬 값들의 거듭 제곱 연산을 통하여 짝수 번째 신드롬 값들을 병렬적으로 연산하여 하드웨어 복잡도를 낮출 수 있다.
도 1은 본 발명의 일 실시예에 따른 BCH 디코더를 나타내는 블록도이다.
도 2는 종래의 기술에 따른 순차식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 3은 종래의 기술에 따른 병렬식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 4는 [수학식 3]을 이용하여 짝수 신드롬 값들을 순차적으로 구하는 것을 나타낸다.
도 5는 [수학식 4]를 이용하여 짝수 신드롬 값들을 병렬적인 구조로 구하는 것을 나타낸다.
도 6은 본 발명의 일 실시예에 따른 도 1의 신드롬 연산 블록의 구성을 나타낸다.
도 7은 본 발명의 실시예에 따른 BCH 디코더의 성능을 나타내는 표이다.
도 8은 본 발명의 일 실시예에 따른 BCH 디코딩 방법을 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 종래의 기술에 따른 순차식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 3은 종래의 기술에 따른 병렬식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 4는 [수학식 3]을 이용하여 짝수 신드롬 값들을 순차적으로 구하는 것을 나타낸다.
도 5는 [수학식 4]를 이용하여 짝수 신드롬 값들을 병렬적인 구조로 구하는 것을 나타낸다.
도 6은 본 발명의 일 실시예에 따른 도 1의 신드롬 연산 블록의 구성을 나타낸다.
도 7은 본 발명의 실시예에 따른 BCH 디코더의 성능을 나타내는 표이다.
도 8은 본 발명의 일 실시예에 따른 BCH 디코딩 방법을 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 디코더를 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 디코더(보다 상세하게는 BCH 디코더, 10)는 신드롬 연산 블록(100), 키-방정식 솔버(Key-Equatiion Solver, 210), 치엔 서치 블록(220), 에러 정정 블록(230) 및 데이터 버퍼(240)를 포함한다.
신드롬 연산 블록(100)은 수신된 코드워드(R(x))에 기초하여 신드롬 값들(S(x))을 생성한다. 신드롬 값들(S(x))이 모두 "0"인 경우, 즉 수신된 코드워드(R(x))에 에러가 하나도 포함되지 않는 경우 데이터 버퍼(240)에 저장된 코드워드(R(x))는 에러 정정 없이 바로 출력된다.
하지만 신드롬 값들(S(x))이 모두 "0"이 아닌 경우, Berlekamp-Massey 알고리즘 또는 유클리디언 알고리즘을 이용하는 키-방정식 솔버(210)는 키-방정식을 풀기 위하여 신드롬 값들(S(x))에 기초하여 에러 위치 다항식(Error Location(or Locator) Polynomial;Λ(x))을 생성한다.
치엔 서치 블록(220)은 치엔 서치(Chien Search)를 이용하여 에러 위치 다항식(Λ(x))으로부터 에러 위치들을 계산하여 에러 다항식(E(x))을 생성한다. 에러 다항식(E(x))의 계수들이 에러 위치들을 나타낸다.
에러 정정 블록(230)은 에러 위치에 기초하여 데이터 버퍼(240)로부터 출력되는 코드워드(R(x))의 에러를 정정하고, 에러 정정된 코드워드(C(x))를 출력한다.
데이터 버퍼(240)는 디코더(10)가 신드롬 값들(S(x))을 계산하고 키-방정식을 푸는 동안 코드워드(R(x))를 수신하고 저장한다.
본 발명의 실시예에서 신드롬 연산 블록(100)은 도 4 및 도 6을 참조하여 후술되는 바와 같이 신드롬 값들(S(x))을 연산하는데 있어, 홀수 신드롬 값들을 먼저 연산하고, 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 짝수 신드롬 값들을 연산할 수 있다.
도 2는 종래의 기술에 따른 순차식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 3은 종래의 기술에 따른 병렬식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 2를 참조하면, 종래의 신드롬 연산 하드웨어 구조(20)는 합산기(21), 플립플롭(또는 레지스터, 23) 및 곱셈기(22)를 포함하여 구성될 수 있다.
도 2에서 rj는 수신된 코드워드(R(x))의 각 비트를 나타내고, ai는 GF(Galois Field)의 각 엘리먼트를 나타내고 Si는 각 신드롬 값을 나타낸다.
도 2의 하드웨어 구조에서는 수신된 코드워드(R(x))의 각 비트가 차례대로 처리된다.
도 3을 참조하면, 종래의 신드롬 연산 하드웨어 구조(30)는 복수의 곱셈기들(31, 32, 34), 합산기(33) 및 플립플롭(35)를 포함하여 구성될 수 있다.
도 3의 하드웨어 구조에서는 코드워드들(rpj, rjpj+1 ,,,rpj+(p-1))에 대하여 병렬화 계수(p) 만큼의 비트를 한 번에 처리하는 병렬 구조이다. 도 2의 순차구조에 비하여 도 3의 병렬 구조가 n/p 만큼 처리 시간이 빠르지만, 트레이드 오프로 약 p 만큼의 하드웨어 복잡도가 증가하게 된다. MLC를 위한 BCH 디코더에서 높은 처리량을 만족하기 위해 병렬화 계수를 현재 플래시 메모리의 워드 사이즈인 8로 대부분 지정한다. 병렬화에 관계없이 2t개의 신드롬을 연산하기 위해 2t개의 도 2 및 도 3의 구조가 BCH 디코딩을 위해 필요하게 되고 통상적으로 이를 신드롬 연산 블록이라고 한다.
코드 길이(n), 메시지 길이(k), 오류 정정 능력(t)를 가지는 BCH (n, k, t)에 대하여 신드롬 연산을 수식적으로 살펴보도록 하자. 더 정확하게 n, k, t는 n=k+mt의 식을 만족하고, m은 을 만족하는 가장 작은 양의 정수이다. BCH 디코딩에서 수신된 n비트 코드 워드 (r0, r1, ..., rn -1)는 와 같이 다항식으로 표현이 가능하다. 수신된 코드워드(R(x))에 오류가 존재하는지 확인하기 위하여 2t개의 신드롬을 하기의 [수학식 1]을 이용하여 계산한다. 수신된 코드워드(R(x))에 오류가 존재하지 않는다면 계산된 2t개의 신드롬이 모두 0 일 것이다.
[수학식 1]
앞서 설명하였듯이 BCH 디코더에서 신드롬 연산 구조의 상대적인 복잡도가 낮은 것으로 고려되었기 때문에, 도 1이나 도 2와 같은 신드롬 연산 구조가 보편적으로 사용되었다. KES, Chien Search 단계를 위한 최적화 알고리즘의 발달로 신드롬 연산 구조의 상대적인 복잡도가 상승하였고 신드롬 연산 구조의 복잡성을 최소화하는 알고리즘을 본 발명에서 제시한다.
본 발명에서는 연산의 복잡도를 완하시키기 위하여 하기의 [수학식 2]에 나타난 이진 갈로아 필드(Galois Field)의 특성을 이용한다.
[수학식 2]
[수학식 2]를 [수학식 1]에 적용하면 하기의 [수하식 3]과 같이 짝수 신드롬 값(S2i)과 홀수 신드롬 값(Si) 사이의 관계를 유도할 수 있다.
[수학식 3]
[수학식 3]을 이용하여 홀수 신드롬 값(Si)으로부터 2배에 해당하는 짝수 신드롬 값(S2i)을 구할 수 있고, 구해진 짝수 신드롬 값(S2i)에 [수학식 3]을 반복적으로 적용하여 나머지 짝수 신드롬 값들 또한 구할 수 있다.
도 4는 [수학식 3]을 이용하여 짝수 신드롬 값들을 순차적으로 구하는 것을 나타낸다.
도 4에서는 오류 정정 능력(t)이 4인 경우를 고려한 것이다.
도 4를 참조하면, 먼저 홀수 신드롬 값들(S1, S3, S5, S7)을 먼저 구하고, 제곱 연산기들(41, 42, 43)을 이용하여 짝수 신드롬 값들(S2, S4, S8)을 홀수 신드롬 값(S1)으로부터 순차적으로 구한다. 또한 제곱 연산기(44)를 이용하여 홀수 신드롬 값(S3)으로부터 짝수 신드롬 값(S6)을 구한다. 도 4에서 짝수 신드롬 값들에(S2, S4, S6, S8) 대한 직접적인 연산이 제거되었으므로 하드웨어의 복잡도는 상당히 줄어들 수 있다. 하지만 도 4의 구조에서는 짝수 신드롬 값들(S2, S4, S8)이 순차적으로 생성되기 때문에 처리 시간이 증가하게 된다.
이러한 문제점을 해결하기 위하여 본 발명의 실시예들에서는 병렬화된 구조로 짝수 신드롬 값들을 계산하며 이는 하기의 [수학식 4]를 이용한다.
[수학식 4]
[수학식 4]는 [수학식 3]을 재귀적으로 적용함으로써 유도할 수 있다.
도 5는 [수학식 4]를 이용하여 짝수 신드롬 값들을 병렬적인 구조로 구하는 것을 나타낸다.
도 5를 참조하면, 먼저 홀수 신드롬 값들(S1, S3, S5, S7)을 먼저 구하고, 제곱 연산기(51)와 거듭 제곱 연산기들(52, 53)을 이용하여 짝수 신드롬 값들(S2, S4, S8)을 홀수 신드롬 값(S1)으로부터 병렬적으로 동시에 구한다. 또한 제곱 연산기(54)를 이용하여 홀수 신드롬 값(S3)으로부터 짝수 신드롬 값(S6)을 구한다.
도 5의 구조를 사용하면 도 4와 동일한 하드웨어 복잡도를 가지면서 처리 시간을 더 단축시킬 수 있다.
이하에서는 [수학식 4]의 거듭 제곱 연산에 대하여 좀더 상세히 살펴본다.
갈로아 필드(Galois Field) 엘리먼트는 첫 번째 신드롬값(S1)을 (b0, b1, ..., bm-1)을 계수로 가지는 GF element αj라고 하면, αj는 하기의 [수학식 5]와 같이 표현가능하다.
[수학식 5]
2r번째 신드롬값은 αj에 2r 번째 거듭 제곱연산을 적용하여 식 (6)과 같이 계산할 수 있다.
[수학식 6]
첫 번째 신드롬값(S1)으로부터 파생된 짝수 신드롬 값들은 하기의 [수학식 7]과 같이 행렬 형태로 표현이 가능하다.
[수학식 7]
일반적으로 행렬 연산은 하드웨어 관점에서는 XOR 게이트의 조합으로 구현 될 수 있다. 도 5에서와 같이 본 발명의 실시예에 따르면 거듭제곱 연산을 기반으로 하여 도 1의 신드롬 연산 블록(100)은 다음과 같이 구성될 수 있다.
도 6은 본 발명의 일 실시예에 따른 도 1의 신드롬 연산 블록의 구성을 나타낸다.
도 6에서는 병렬화 계수(p)가 8인 경우를 나타낸다. 또한 도 6에서는 홀수 신드롬 값(S1)과 짝수 신드롬 값들(S2, S4, S8)만을 나타내었다. 나머지 신드롬 값들도 도 6과 유사한 구조를 통하여 연산될 수 있다.
도 6을 참조하면, 신드롬 연산 블록(110)은 8개의 GF 곱셈기들(121, 127, 128)과 하나의 레지스터(132)를 이용하여 S1을 생성하고, 거듭 제곱 연산기들(141, 142, 143)을 이용하여 S1에 대한 거듭제곱 연산을 병렬하게 적용함으로 해서 S2, S4, S8을 각각 얻게 된다. 물론 신드롬 연산 블록(110)은 합산기(131)를 포함한다.
[수학식 7]에 나타난 바와 같이 거듭 제곱 연산기들(141, 142, 143)에 인가되는 S1이 상수 GF 곱셈기(128)의 입력으로 사용된다. 따라서 본 발명의 실시예에 따른 신드롬 연산 블록(110)에서는 거듭 제곱 연산기들(141, 142, 143)의 연산과 상수 GF 곱셈기(128)의 연산에서 하위 구조를 공유함으로서 추가적인 하드웨어를 감소시킬 수 있다. 공유될 수 있는 하위 구조는 도 6에서 참조번호(140)로 나타나 있다. 이는 동일한 연산을 한 번 이상 계산하는 구조에 대하여 처음 계산 후 반복적인 계산 없이 그 결과 값을 사용할 수 있으므로 추가적인 하드웨어를 감소시킬 수 있다. 이러한 공유될 수 있는 하위 구조를 찾아내기 위하여 [수학식 7]의 a)행렬의 행과 행 사이에 비트 단위로 일치하는 비트 수를 카운트하고, b)가장 많은 일치가 일어난 매칭을 선택하고 c)현재 행렬에서 선택된 매칭을 제거하고 행렬의 하단에 선택된 매칭을 추가하고 d)갱신된 행렬의 최상의 매치가 1보다 클 때가지 a) 내지 c)를 반복하는 알고리즘을 수행할 수 있다.
도 7은 본 발명의 실시예에 따른 디코더의 성능을 나타내는 표이다.
도 7에서는 본 발명의 실시예에 따른 디코더(10)의 성능을 나타내기 위하여 도 2의 구조로 구현된 종래의 디코더와 오류 정정 능력에 따른 게이트의 수를 나타낸 것이다.
또한 도 7에서는 메시지 길이가 1024 바이트이며 오류 정정 능력이 20, 30, 40을 가지는 BCH 복호기를 구현하였다. 병렬 계수는 현재 플래시 메모리 워드 사이즈인 8을 이용하였다. 200MHz의 동작 주파수를 가지며 0.13um 공정 기술을 이용하여 합성을 하였다. 각 BCH 신드롬 연산 구조에 대한 게이트 카운트를 표 1에서 요약하고 있다. BCH (8752, 8192, 40)코드에 대하여 제안된 알고리즘은 종래의 구조에 비해 53.3 % 신드롬 연산 블록의 하드웨어 복잡도를 감소시켰다. 짝수 번째 신드롬 연산을 홀수 번째 신드롬의 거듭제곱 연산으로 교체함으로써(case 1) 43.3%가 감소되었고, 거듭제곱 연산 시 하위구조의 공유(case 2)를 통하여 약 10.0%의 추가적인 개선이 발생하였다.
이하 도 1과 도 8을 참조하여 본 발명의 실시예에 따른 디코딩 방법을 설명한다.도 8은 본 발명의 일 실시예에 따른 디코딩 방법을 나타내는 흐름도이다. '
도 1과 도 8을 참조하면, BCH 디코딩 방법에서는 수신된 코드워드(R(x))로부터 신드롬 값들(S(x))을 생성한다(S310). 신드롬 값들(S(x))에 기초하여 에러 위치를 계산하여 에러 위치 다항식(Λ(x))을 생성한다(S320). 에러 위치 다항식(Λ(x))에 기초하여 에러 위치를 계산한다(S330). 에러 위치에 기초하여 코드워드(R(x))의 에러를 정정하여 에러 정정된 코드워드(C(x))를 출력한다. 여기서 신드롬 값들(S(x))을 연산하는데 있어, 홀수 신드롬 값들을 먼저 연산하고, 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 짝수 신드롬 값들을 연산할 수 있다.
또한 본 발명의 실시예에 따른 디코딩 방법에서도 상기의 [수학식 5] 내지 [수학식 7]을 만족할 수 있다.
도 9는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 5를 참조하면, 메모리 시스템(400)은 메모리 컨트롤러(410) 및 메모리 장치(420)를 구비한다.
메모리 컨트롤러(410)는 호스트(미도시)와 메모리 장치(420) 사이의 데이터 전송을 제어한다. 메모리 컨트롤러(410)는 호스트 인터페이스(411), 인코더(412) 및 디코더(413)를 포함할 수 있다. 인코더(412)는 상기 호스트로부터 수신되는 데이터를 인코딩하여 메모리 장치(420)로 출력한다. 디코더(413)는 메모리 장치로부터 출력되는 데이터(R(x))의 오류를 검사하고 정정하여 오류 정정된 데이터(C(x))로서 호스트에 제공한다. 디코더(413)는 도 1의 디코더(10)로 구현될 수 있다. 따라서 디코더(413)는 메모리 장치로부터 출력되는 데이터(R(x))로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록; 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 데이터(C(x))를 출력하는 에러 정정 블록을 포함할 수 있다. 여기서 신드롬 연산 블록은 상기 신드롬 값들 중 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 적어도 두 개의 홀수 신드롬 값들을 생성할 수 있다.
디코더(413)가 도 1의 디코더(10)로 구현될 수 있으므로 디코더(413)는 상기의 [수학식 5] 내지 [수학식 7]을 만족할 수 있다.
메모리 장치(420)는 플래시 메모리 장치일 수 있고, 메모리 장치(420)에 포함되는 메모리 셀 어레이(421)는 복수의 메모리 셀들을 구비하는데 이 메모리 셀들 각각에는 복수 비트의 데이터가 저장될 수 있다. 즉 메모리 셀들은 MLC이다.
따라서 본 발명의 실시예들에 따르면 높은 오류 정정 능력을 요구하는 BCH 인코더에서 홀수 신드롬 값들을 우선적으로 계산한 후에 홀수 번째 신드롬 값들의 거듭 제곱 연산을 통하여 짝수 번째 신드롬 값들을 병렬적으로 연산하여 하드웨어 복잡도를 낮출 수 있다. 또한 불필요하게 중복되는 하위구조들을 공유함으로써 하드웨어 복잡도를 더욱 낮출 수 있다.
본 발명의 실시예들은 멀티 비트 셀을 구비하는 플래시 메모리 장치 또는 시스템에 폭넓게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
Claims (15)
- 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록;
상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver);
상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록; 및
상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함하고,
상기 신드롬 연산 블록은,
상기 신드롬 값들 중 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 적어도 두 개의 홀수 신드롬 값들을 생성하는 비씨에이치(BCH) 디코더. - 제1항에 있어서, 상기 신드롬 연산 블록은
상기 적어도 하나의 홀수 신드롬 값을 거듭 제곱 연산하여 상기 적어도 두 개의 홀수 신드롬 값들을 동시에 생성하는 BCH 디코더. - 제4항에 있어서, 상기 디코더의 병렬화 계수가 8인 경우에,
상기 신드롬 연산 블록은 8개의 GF 곱셈기와 하나의 레지스터를 이용하여 상기 S1을 생성하고,
상기 생성된 S1에 대하여 거듭제곱 연산을 병렬적으로 적용하여 S2, S4, S8을 얻는 것을 특징으로 하는 BCH 디코더. - 제5항에 있어서, 상기 8개의 GF 곱셈기중 상수 곱셈기와 상기 거듭 제곱 연산이 병렬적으로 적용되는 거듭 제곱기들에는 상기 S1이 공통으로 인가되는 것을 특징으로 하는 BCH 디코더.
- 수신된 코드워드로부터 신드롬 값들을 생성하는 단계;
상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 단계;
상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 단계; 및
상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 단계를 포함하고,
상기 신드롬 값들 중 짝수 신드롬 값들은 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 생성되는 비씨에이치(BCH) 디코딩 방법. - 제7항에 있어서, 상기 짝수 신드롬 값들은 상기 적어도 하나의 홀수 신드롬 값을 거듭 제곱 연산하여 생성되는 것을 특징으로 하는 BCH 디코딩 방법.
- 메모리 장치; 및
상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함하며,
상기 메모리 컨트롤러는,
상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더; 및
상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함하며,
상기 ECC 디코더는,
상기 메모리 장치로부터 출력되는 데이터로부터 신드롬 값들을 생성하는 신드롬 연산 블록;
상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver);
상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록; 및
상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 데이터를 출력하는 에러 정정 블록을 포함하고,
상기 신드롬 연산 블록은
상기 신드롬 값들 중 적어도 하나의 홀수 신드롬 값을 병렬로 연산하여 적어도 두 개의 홀수 신드롬 값들을 생성하는 메모리 시스템. - 제11항에 있어서, 상기 메모리 장치는 플래시 메모리 장치인 것을 특징으로 하는 메모리 시스템.
- 제11항에 있어서, 상기 플래시 메모리 장치는 각각이 복수 비트의 데이터를 저장트 멀티비트 셀들을 구비하는 메모리 셀 어레이를 구비하는 것을 특징으로 하는 메모리 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100125575A KR101190522B1 (ko) | 2010-12-09 | 2010-12-09 | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100125575A KR101190522B1 (ko) | 2010-12-09 | 2010-12-09 | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120064377A true KR20120064377A (ko) | 2012-06-19 |
KR101190522B1 KR101190522B1 (ko) | 2012-10-16 |
Family
ID=46684500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100125575A KR101190522B1 (ko) | 2010-12-09 | 2010-12-09 | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101190522B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9438274B2 (en) | 2014-03-27 | 2016-09-06 | SK Hynix Inc. | Data processing block and data storage device including the same |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101512361B1 (ko) * | 2013-10-16 | 2015-04-15 | 한국과학기술원 | 연접 비씨에이치 디코더 및 연접 비씨에이치 디코딩 방법 |
-
2010
- 2010-12-09 KR KR1020100125575A patent/KR101190522B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9438274B2 (en) | 2014-03-27 | 2016-09-06 | SK Hynix Inc. | Data processing block and data storage device including the same |
Also Published As
Publication number | Publication date |
---|---|
KR101190522B1 (ko) | 2012-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9998148B2 (en) | Techniques for low complexity turbo product code decoding | |
US8954828B2 (en) | Memory controller | |
KR101264061B1 (ko) | 플래시 메모리를 위한 오류 정정 메커니즘 | |
US8448050B2 (en) | Memory system and control method for the same | |
US9450615B2 (en) | Multi-bit error correction method and apparatus based on a BCH code and memory system | |
US11748192B2 (en) | System and method of reducing logic for multi-bit error correcting codes | |
US20170077962A1 (en) | Method and associated decoding circuit for decoding an error correction code | |
US9960788B2 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
US10236913B2 (en) | Error checking and correcting decoder | |
US10200066B2 (en) | Code reconstruction scheme for multiple code rate TPC decoder | |
US10333555B2 (en) | Apparatuses and methods for interleaved BCH codes | |
US20120054580A1 (en) | Error detection correction method and semiconductor memory apparatus | |
KR101190522B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 | |
US10193574B1 (en) | Efficient syndrome calculation in processing a GLDPC code | |
Yoo et al. | Area-efficient syndrome calculation for strong BCH decoding | |
KR101267958B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
CN107688506B (zh) | 一种流水结构的bch译码系统 | |
KR101154923B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 | |
KR20130055095A (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
KR101355988B1 (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
US10404282B2 (en) | Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding | |
US20060227017A1 (en) | Information encoding by shortened reed-solomon codes | |
KR101226439B1 (ko) | 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
KR101619049B1 (ko) | 병렬 bch 디코더 | |
KR20140074600A (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |