KR101154923B1 - 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 - Google Patents

비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 Download PDF

Info

Publication number
KR101154923B1
KR101154923B1 KR1020100125568A KR20100125568A KR101154923B1 KR 101154923 B1 KR101154923 B1 KR 101154923B1 KR 1020100125568 A KR1020100125568 A KR 1020100125568A KR 20100125568 A KR20100125568 A KR 20100125568A KR 101154923 B1 KR101154923 B1 KR 101154923B1
Authority
KR
South Korea
Prior art keywords
error
equation
key
solver
error position
Prior art date
Application number
KR1020100125568A
Other languages
English (en)
Inventor
박인철
이영주
유호영
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020100125568A priority Critical patent/KR101154923B1/ko
Application granted granted Critical
Publication of KR101154923B1 publication Critical patent/KR101154923B1/ko

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/1072Adding 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Error Detection And Correction (AREA)

Abstract

BCH 디코더는 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다.

Description

비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법{BCH decoder, memory system having the same and BCH decoding method}
본 발명은 메모리 분야에 관한 것으로 보다 상세하게는 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의 세 단계 과정을 통해 복호화가 가능하다.
보다 큰 오류 정정능력(t)를 갖는 BCH 디코더에서는 보다 효율적인 VLSI 설계를 위하여 복잡도가 낮은 KES 블록의 설계가 요구된다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일목적은 KES 블록의 복잡도를 감소시킬수 있는 BCH 디코더를 제공하는 것이다.
본 발명의 일 목적은 KES 블록의 복잡도를 감소시킬 수 있는 BCH 디코딩 방법을 제공하는 것이다.
본 발명의 일 목적은 상기 BCH 디코더를 포함하는 메모리 시스템을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 BCH 디코더는 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다.
상기 키 방정식 솔버는 한 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신한다.
실시예에 있어서, 상기 BCH 디코더는 코드 길이(n), 메시지 길이(k), 오류 정정 능력(t)를 가지고, n=k+mt의 식을 만족하고, m은
Figure 112010081186504-pat00001
을 만족하는 가장 작은 양의 정수이고, 상기 키-방정식 솔버의 폴딩 팩터(folding factor)의 최대값(fmax)은 하기의 [수학식 1]을 만족할 수 있다.
[수학식 1]
fmax = min(2(t+1), [(n/p)/2t])
여기서 p는 상기 신드롬 생성 블록과 치엔 서치 블록의 병렬화 계수임.
실시예에 있어서, 상기 키-방정식 솔버의 폴딩 팩터(fBM)는 fmax 보다 작은 최대 짝수로 설정될 수 있다.
실시예에 있어서, 상기 한 이터레이션에 필요로 하는 사이클들은 fBM/2일 수 있다.
실시예에 있어서, 상기 키-방정식 솔버의 병렬화 계수(pBM)는 하기의 [수학식 2]를 만족할 수 있다.
[수학식 2]
pBM= [(t+1)/(fop/2)]
여기서, fop는 fBM과 동일함.
실시예에 있어서, 상기 키-방정식 솔버는 하기의 [수학식 3]의 알고리즘을 이용하여 상기 에러 위치 다항식을 생성할 수 있다.
[수학식 3]
Figure 112010081186504-pat00002
상기 본 발명의 일 목적을 달성하기 위한 코드 길이(n), 메시지 길이(k) 및 오류 정정 능력(t)을 가지는 BCH 디코딩 방법은(n=k+mt의 식을 만족하고, m은
Figure 112010081186504-pat00003
을 만족하는 가장 작은 양의 정수), 수신된 코드워드로부터 신드롬 값들을 생성하는 단계, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 단계, 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 단계 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 단계를 포함한다. 상기 에러 위치 다항식을 생성하는 하나의 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신한다.
상기 본 발명의 일 목적을 달성하기 위한 본 발명의 일 실시예에 따른 메모리 시스템은 메모리 장치 및 상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더 및 상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함한다. 상기 ECC 디코더는 상기 메모리 장치로부터 출력되는 데이터로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 데이터를 출력하는 에러 정정 블록을 포함하고, 상기 키-방정식 솔버는 한 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신한다.
본 발명의 실시예들에 따르면 높은 오류 정정 능력과 높은 병렬화 계수를 갖는 요구하는 BCH 디코더의 KES 블록에서 면적을 효율적으로 이용하는 BM 알고리즘을 적용하여 하드웨어 복잡도를 낮출수 있다.
도 1은 본 발명의 일 실시예에 따른 BCH 디코더를 나타내는 블록도이다.
도 2는 종래의 비반전 BM 알고리즘 방식으로 구현되는 키-방정식 솔버를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 도 1의 키-방정식 솔버를 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 코드 길이(n), 메시지 길이(k) 및 오류 정정 능력(t)을 가지는 BCH 디코딩 방법을 나타내는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 BCH 디코더를 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 BCH 디코더(10)는 신드롬 연산 블록(110), 키-방정식 솔버(Key-Equatiion Solver, 200), 치엔 서치 블록(120), 에러 정정 블록(130) 및 데이터 버퍼(140)를 포함한다.
신드롬 연산 블록(110)은 수신된 코드워드(R(z))에 기초하여 신드롬 값들(S(z))을 생성한다. 신드롬 값들(S(z))이 모두 "0"인 경우, 즉 수신된 코드워드(R(z))에 에러가 하나도 포함되지 않는 경우 데이터 버퍼(140)에 저장된 코드워드(R(z))는 에러 정정 없이 바로 출력된다.
하지만 신드롬 값들(S(z))이 모두 "0"이 아닌 경우, Berlekamp-Massey(BM) 알고리즘 또는 유클리디언 알고리즘을 이용하는 키-방정식 솔버(200)는 키-방정식을 풀기 위하여 신드롬 값들(S(z))에 기초하여 에러 위치 다항식(Error Location(or Locator) Polynomial;Λ(z))을 생성한다.
치엔 서치 블록(120)은 치엔 서치(Chien Search)를 이용하여 에러 위치 다항식(Λ(z))으로부터 에러 위치들을 계산하여 에러 다항식(E(z))을 생성한다. 에러 다항식(E(z))의 계수들이 에러 위치들을 나타낸다.
에러 정정 블록(130)은 에러 위치에 기초하여 데이터 버퍼(140)로부터 출력되는 코드워드(R(z))의 에러를 정정하고, 에러 정정된 코드워드(C(z))를 출력한다.
데이터 버퍼(140)는 BCH 디코더(10)가 신드롬 값들(S(z))을 계산하고 키-방정식을 푸는 동안 코드워드(R(z))를 수신하고 저장한다.
본 발명의 실시예에서, 키-방정식 솔버(200)는 도 3을 참조하여 후술되는 바와 같이 한 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신하여 하드웨어 복잡도를 대폭적으로 감소시킬 수 있다.
일반적으로 BCH 부호는 (n, k, t)로 표현되며, 여기서 n은 전체 부호의 길이, k는 실제정보의 길이, t는 정정 가능한 오류의 개수를 나타낸다. 여기서 n=k+mt의 식을 만족하고, m은
Figure 112010081186504-pat00004
을 만족하는 가장 작은 양의 정수이다. m은 갈로아 필드(Galois Field)의 계수를 나타낸다.
일반적으로 에러 위치 다항식(Λ(z))은 하기의 [수학식 1]과 같이 표현된다.
[수학식 1]
Figure 112010081186504-pat00005
일반적으로 λ0는 1로 가정되며, 에러의 위치는 Y(z)의 값이 1인지 아닌지를 판별함으로써 이루어진다.
S(z)가 하기의 [수학식 2]로 주어지는 경우,
[수학식 2]
Figure 112010081186504-pat00006
키-방정식은 하기의 [수학식 3]에 의하여 구할수 있다.
[수학식 3]
Figure 112010081186504-pat00007
[수학식 3]에서 Ω(z)는 에러값 다항식을 나타낸다.
종래의 이터러티브(iterative) 방식의 BM 알고리즘이 하기의 [수학식 4]에 나타난다.
[수학식 4]
Figure 112010081186504-pat00008
[수학식 4]의 알고리즘은 비반전 BM 알고리즘으로서 크게 3개의 단계를 갖고 있다. 우선 입력된 syndrome의 값들과 현재 계산중인 error-locator polynomial의 계수들을 이용하여 현재 스텝에서의 discrepancy 값을 계산한다 (Step iBM.1). 다음으로 계산된 discrepancy값을 바탕으로 error-locator polynomial의 계수들을 갱신한다 (Step iBM.2). 마지막으로 다음 스텝에서 사용될 값들을 갱신한다 (Step iBM3).
[수학식 4]를 실제의 하드웨어로 구현하면 도 2와 같다.
도 2는 종래의 비반전 BM 알고리즘 방식으로 구현되는 키-방정식 솔버를 나타낸다.
도 2를 참조하면, 종래의 키-방정식 솔버에 의하면, 신드롬 연산 블록에서 2t개의 신드롬 값들이 구해지며, t차 다항식으로 표현되는 에러 위치 다항식을 구하는 과정에서 2t cycle이 소요된다. 또한, 도 2의 구조는 기본적으로 3t+2개의 m-bit Galois-Field(GF) 곱셈기(22) , 3t개의 m-bit 레지스터(21), 3t개의 2-입력 m-bit 덧셈기(23), 1개의 (m+1)-입력 m-bit 덧셈기(24) 및 (t+1) 개의 멀티플렉서(25)를 필요로 한다. 따라서 매우 큰 t를 필요로 하는 강력한 BCH 부호를 사용하는 경우 KES 하드웨어의 복잡도는 매우 크게 증가하게 된다.
도 3은 본 발명의 일 실시예에 따른 도 1의 키-방정식 솔버를 나타내는 블록도이다.
도 3은 (8752, 8192, 40) BCH 복호기에서의 키-방정식 솔버를 나타낸다.
도 3을 참조하면, 키-방정식 솔버(200)는 복수의 레지스터들(211), 복수의 멀티플렉서들(212), 복수의 덧셈기들(213) 및 복수의 GF 곱셈기들(214)로 구현될 수 있다.
도 2의 구조와 비교하여 볼 때 14개의 GF 곱셈기들(214), 10 개의 GF 합산기들(213)을 포함한다. GF 곱셈기들의 수만을 비교할 때 도 3의 구조가 14개의 곱셈기들이 필요한 반면 도 2의 구조는 t가 40이므로 122개의 GF 곱셈기들이 필요하다. 따라서 도 3의 구조가 키-방정식 솔버의 하드웨어 복잡도를 더욱 감소시킬 수 있다.
하기의 [수학식 5]는 도 3의 키-방정식 솔버에 적용되는 BM 알고리즘을 나타낸다.
[수학식 5]
Figure 112010081186504-pat00009
[수학식 5]와 도 3을 참조하면, 본 발명의 일 실시예에 따른 키-방정식 솔버(200)는 한 이터레이션에 필요로 하는 사이클들의 절반동안(제1 페이즈)에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안(제2 페이즈)에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신한다. 여기서 키-방정식 솔버(200)의 폴딩 팩터(folding factor)의 최대값(fmax)은 하기의 [수학식 6]을 만족한다.
[수학식 6]
fmax = min(2(t+1), [(n/p)/2t]) ,여기서 p는 신드롬 연산 블록(110)과 치엔 서치 블록(120)의 병렬화 계수이다.
또한 키-방정식 솔버(200)의 폴딩 팩터(fBM)는 fmax 보다 작은 최대 짝수로 설정될 수 있다. 상기 한 이터레이션에 필요로 하는 사이클들은 fBM/2일 수 있다.
또한 키-방정식 솔버(200)의 병렬화 계수(pBM)는 하기의 [수학식 7]을 만족할 수 있다.
[수학식 7]
pBM= [(t+1)/(fop/2)]
여기서, fop는 fBM과 동일함.
[수학식 5]에서 pop는 pBM과 동일하다.
도 3에서 멀티플렉서들(212)은 제어신호들(M1, M2, M3)에 의하여 제어되는데 제1 페이즈에서 [수학식 5]의 δ(r)을 계산하는 동안에 M1과 M2는 각각 0과 1로 설정된다. 제2 페이즈를 수행하기 위하여 M2는 0으로 변하고 M1는 0으로 유지된다. 제2 페이즈 동안에 λi와 bi는 새로운 값으로 갱신된다. 현재 이터레이션에서 신드롬값들과γ(r) 값을 변환하기 위하여 M2는 이터레이션의 마지막 사이클에서 1로 변경된다.
fBM과 pBM이 주어지면 키-방정식 솔버(200)의 하드웨어 복잡도가 매우 많이 감소될 수 있다. 즉 본 발명의 실시예에 따른 BCH 디코더에서는 신드롬 연산 블록(110)과 치엔 서치 블록(120)의 병렬화 계수(p)를 고려하여 키-방정식 솔버(200)의 폴딩 팩터(fBM)를 설정하여 키-방정식 솔버(200)의 하드웨어 복잡도를 감소시킬 수 있다.
도 4는 본 발명의 일 실시예에 따른 코드 길이(n), 메시지 길이(k) 및 오류 정정 능력(t)을 가지는 BCH 디코딩 방법을 나타내는 흐름도이다.
여기서 n=k+mt의 식을 만족하고, m은
Figure 112010081186504-pat00010
을 만족하는 가장 작은 양의 정수이다.
이하 도 1, 도 3 및 도 4를 참조하여 본 발명의 실시예에 따른 BCH 디코딩 방법을 설명한다.
도 1, 도 3 및 도 4를 참조하면, 디코딩 방법에서는 수신된 코드워드(R(z))로부터 신드롬 값들(S(z))을 생성한다(S310). 신드롬 값들(S(z))에 기초하여 에러 위치를 계산하여 에러 위치 다항식(Λ(z))을 생성한다(S320). 에러 위치 다항식(Λ(z))에 기초하여 에러 위치를 계산한다(S330). 에러 위치에 기초하여 코드워드(R(z))의 에러를 정정하여 에러 정정된 코드워드(C(z))를 출력한다. 여기서 에러 위치 다항식을 생성하는 하나의 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신한다.
또한 본 발명의 실시예에 따른 BCH 디코딩 방법에서도 상기의 [수학식 5] 내지 [수학식 7]을 만족할 수 있다.
하기의 [표 1]은 본 발명의 실시예에 따라서 구현된 (8752, 8192, 40) BCH 복호기의 성능을 나타내는 표이다. 0.13um 공정을 통하여 이루어졌으며, 모든 수치는 2-input nand gate count로 normalize 되어있다. 표 1은 주변 블록들의 병렬화 계수의 변화에 따른 하드웨어 복잡도를 나타내고 있으며, 기존의 iBM의 구현 결과에 비하여 제안하는 구조가 최대 80%의 복잡도 감소를 보이는 것을 알 수 있다.
[표 1]
Figure 112010081186504-pat00011
하기의 [표 2]는 본 발명의 실시예에 따른 BHC 디코더의 성능을 종래의 BCH 디코더와 비교하기 위한 표이다.
[표 2]
Figure 112010081186504-pat00012
도 5는 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 5를 참조하면, 메모리 시스템(200)은 메모리 컨트롤러(210) 및 메모리 장치(220)를 구비한다.
메모리 컨트롤러(210)는 호스트(미도시)와 메모리 장치(220) 사이의 데이터 전송을 제어한다. 메모리 컨트롤러(210)는 호스트 인터페이스(211), 인코더(212) 및 ECC 디코더(213)를 포함할 수 있다. 인코더(212)는 상기 호스트로부터 수신되는 데이터를 인코딩하여 메모리 장치(220)로 출력한다. ECC 디코더(213)는 메모리 장치로부터 출력되는 데이터(R(z))의 오류를 검사하고 정정하여 오류 정정된 데이터(C(z))로서 호스트에 제공한다. ECC 디코더(213)는 도 1의 BCH 디코더(10)로 구현될 수 있다. 따라서 ECC 디코더(213)는 메모리 장치로부터 출력되는 데이터(R(z))로부터 신드롬 값들을 생성하는 신드롬 연산 블록, 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록 및 상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 데이터(C(z))를 출력하는 에러 정정 블록을 포함할 수 있다. 여기서 키 방정식 솔버는 한 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신할 수 있다.
ECC 디코더(213)가 도 1의 BCH 디코더(10)로 구현될 수 있으므로 디코더(413)는 상기의 [수학식 5] 내지 [수학식 7]을 만족할 수 있다.
메모리 장치(220)는 플래시 메모리 장치일 수 있고, 메모리 장치(220)에 포함되는 메모리 셀 어레이(221)는 복수의 메모리 셀들을 구비하는데 이 메모리 셀들 각각에는 복수 비트의 데이터가 저장될 수 있다. 즉 메모리 셀들은 MLC이다.
따라서 본 발명의 실시예들에 따르면 높은 병렬화 계수를 갖는 요구하는 BCH 디코더의 높은 오류 정정 능력과 높은 병렬화 계수를 갖는 요구하는 BCH 디코더의 KES 블록에서 면적을 효율적으로 이용하는 BM 알고리즘을 적용하여 하드웨어 복잡도를 낮출 수 있다.
본 발명의 실시예들은 멀티 비트 셀을 구비하는 플래시 메모리 장치 또는 시스템에 폭넓게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (18)

  1. 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록;
    상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver);
    상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록; 및
    상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함하고,
    상기 키 방정식 솔버는 한 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신하는 비씨에이치(BCH) 디코더.
  2. 제1항에 있어서,
    상기 BCH 디코더는 코드 길이(n), 메시지 길이(k), 오류 정정 능력(t)를 가지고, n=k+mt의 식을 만족하고, m은
    Figure 112010081186504-pat00013
    을 만족하는 가장 작은 양의 정수이고,
    상기 키-방정식 솔버의 폴딩 팩터(folding factor)의 최대값(fmax)은 하기의 [수학식 1]을 만족하는 것을 특징으로 하는 BCH 디코더.
    [수학식 1]
    fmax = min(2(t+1), [(n/p)/2t])
    여기서 p는 상기 신드롬 생성 블록과 치엔 서치 블록의 병렬화 계수임.
  3. 제2항에 있어서, 상기 키-방정식 솔버의 폴딩 팩터(fBM)는 fmax 보다 작은 최대 짝수로 설정되는 것을 특징으로 하는 BCH 디코더.
  4. 제3항에 있어서, 상기 한 이터레이션에 필요로 하는 사이클들은 fBM/2인 것을 특징으로 하는 BCH 디코더.
  5. 제3항에 있어서, 상기 키-방정식 솔버의 병렬화 계수(pBM)는 하기의 [수학식 2]를 만족하는 것을 특징으로 하는 BCH 디코더.
    [수학식 2]
    pBM= [(t+1)/(fop/2)]
    여기서, fop는 fBM과 동일함
  6. 제3항에 있어서, 상기 키-방정식 솔버는 하기의 [수학식 3]의 알고리즘을 이용하여 상기 에러 위치 다항식을 생성하는 것을 특징으로 하는 BCH 디코더.
    [수학식 3]
    Figure 112010081186504-pat00014
  7. 코드 길이(n), 메시지 길이(k) 및 오류 정정 능력(t)을 가지는 BCH 디코딩 방법에서(n=k+mt의 식을 만족하고, m은
    Figure 112010081186504-pat00015
    을 만족하는 가장 작은 양의 정수),
    수신된 코드워드로부터 신드롬 값들을 생성하는 단계;
    상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 단계;
    상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 단계; 및
    상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 단계를 포함하고,
    상기 에러 위치 다항식을 생성하는 하나의 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신하는 BCH 디코딩 방법.
  8. 제7항에 있어서, 상기 에러 위치 다항식을 계산하는 단계의 폴딩 팩터(folding factor)의 최대값(fmax)은 하기의 [수학식 4]을 만족하는 것을 특징으로 하는 BCH 디코딩 방법.
    [수학식 4]
    fmax = min(2(t+1), [(n/p)/2t])
  9. 제8항에 있어서, 상기 에러 위치 다항식을 계산하는 단계의 폴딩 팩터(fBM)는 fmax 보다 작은 최대 짝수로 설정되는 것을 특징으로 하는 BCH 디코딩 방법.
  10. 제9항에 있어서, 상기 한 이터레이션에 필요로 하는 사이클들은 fBM/2인 것을 특징으로 하는 BCH 디코딩 방법.
  11. 제9항에 있어서, 상기 에러 위치 다항식을 계산하는 단계의 병렬화 계수는 하기의 [수학식 5]를 만족하는 것을 특징으로 하는 BCH 디코딩 방법.
    [수학식 5]
    pBM= [(t+1)/(fop/2)]
    여기서, fop는 fBM과 동일함.
  12. 제9항에 있어서, 상기 에러 위치 다항식을 계산하는 단계는 하기의 [수학식 6]의 알고리즘을 이용하는 것을 특징으로 하는 BCH 디코딩 방법.
    [수학식 6]
    Figure 112010081186504-pat00016
  13. 메모리 장치; 및
    상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함하며,
    상기 메모리 컨트롤러는,
    상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더; 및
    상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함하며,
    상기 ECC 디코더는,
    상기 메모리 장치로부터 출력되는 데이터로부터 신드롬 값들을 생성하는 신드롬 연산 블록;
    상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver);
    상기 에러 위치 다항식에 기초하여 에러 위치를 계산하는 치엔 서치 블록; 및
    상기 에러 위치에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 데이터를 출력하는 에러 정정 블록을 포함하고,
    상기 키-방정식 솔버는 한 이터레이션에 필요로 하는 사이클들의 절반동안에 상기 에러 위치 다항식의 계수들의 차이값을 계산하고, 상기 한 이터레이션에 필요로 하는 사이클들의 나머지 절반 동안에 상기 계산된 차이값에 기초하여 다음 이터레이션에서의 차이값을 계산하기 위한 변수들을 갱신하는 메모리 시스템.
  14. 제13항에 있어서, 상기 메모리 장치는 플래시 메모리 장치인 것을 특징으로 하는 메모리 시스템.
  15. 제14항에 있어서, 상기 플래시 메모리 장치는 각각이 복수 비트의 데이터를 저장하는 멀티비트 셀들을 구비하는 메모리 셀 어레이를 구비하는 것을 특징으로 하는 메모리 시스템.
  16. 제13항에 있어서, 상기 ECC 디코더는 코드 길이(n), 메시지 길이(k), 오류 정정 능력(t)를 가지고, n=k+mt의 식을 만족하고, m은
    Figure 112011097399711-pat00017
    을 만족하는 가장 작은 양의 정수이고,
    상기 키-방정식 솔버의 폴딩 팩터(folding factor)의 최대값(fmax)은 하기의 [수학식 7]을 만족하는 것을 특징으로 하는 메모리 시스템.
    [수학식 7]
    fmax = min(2(t+1), [(n/p)/2t])
  17. 제16항에 있어서, 상기 키-방정식 솔버의 폴딩 팩터(fBM)는 fmax 보다 작은 최대 짝수로 설정되고,
    상기 한 이터레이션에 필요로 하는 사이클들은 fBM/2인 것을 특징으로 하는 메모리 시스템.
  18. 제16항에 있어서,
    상기 키-방정식 솔버의 병렬화 계수(pBM)는 하기의 [수학식 8]를 만족하고,
    [수학식 8]
    pBM= [(t+1)/(fop/2)]
    (여기서, fop는 상fBM과 동일함),
    상기 키-방정식 솔버는 하기의 [수학식 9]의 알고리즘을 이용하여 상기 에러 위치 다항식을 생성하는 것을 특징으로 하는 메모리 시스템.
    [수학식 9]
    Figure 112010081186504-pat00018
KR1020100125568A 2010-12-09 2010-12-09 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 KR101154923B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100125568A KR101154923B1 (ko) 2010-12-09 2010-12-09 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100125568A KR101154923B1 (ko) 2010-12-09 2010-12-09 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법

Publications (1)

Publication Number Publication Date
KR101154923B1 true KR101154923B1 (ko) 2012-06-14

Family

ID=46607385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100125568A KR101154923B1 (ko) 2010-12-09 2010-12-09 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법

Country Status (1)

Country Link
KR (1) KR101154923B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170003743A (ko) * 2015-06-30 2017-01-10 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
CN108845890A (zh) * 2018-05-07 2018-11-20 西安电子科技大学 基于Nand Flash存储器阵列的数据校验方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040075952A (ko) * 2002-01-23 2004-08-30 톰슨 라이센싱 에스.에이. 인트라-디코더 컴포넌트 블록 메시징
US7058876B1 (en) 2002-02-21 2006-06-06 Ciena Corporation Method and apparatus for use in a decoder of a forward error correction (FEC) system for locating bit errors in a error locator polynomial
KR20090018252A (ko) * 2007-08-17 2009-02-20 삼성전자주식회사 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
KR20100032102A (ko) * 2008-09-17 2010-03-25 인하대학교 산학협력단 고속 저복잡 BCH 복호기의 불합도 계산이 필요 없는 RiBM 알고리즘을 이용한 오류위치 연산 방법 및 오류위치 연산 회로

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040075952A (ko) * 2002-01-23 2004-08-30 톰슨 라이센싱 에스.에이. 인트라-디코더 컴포넌트 블록 메시징
US7058876B1 (en) 2002-02-21 2006-06-06 Ciena Corporation Method and apparatus for use in a decoder of a forward error correction (FEC) system for locating bit errors in a error locator polynomial
KR20090018252A (ko) * 2007-08-17 2009-02-20 삼성전자주식회사 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
KR20100032102A (ko) * 2008-09-17 2010-03-25 인하대학교 산학협력단 고속 저복잡 BCH 복호기의 불합도 계산이 필요 없는 RiBM 알고리즘을 이용한 오류위치 연산 방법 및 오류위치 연산 회로

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170003743A (ko) * 2015-06-30 2017-01-10 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
KR102286193B1 (ko) 2015-06-30 2021-08-09 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
CN108845890A (zh) * 2018-05-07 2018-11-20 西安电子科技大学 基于Nand Flash存储器阵列的数据校验方法

Similar Documents

Publication Publication Date Title
US9998148B2 (en) Techniques for low complexity turbo product code decoding
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US10243589B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
US10187085B2 (en) Decoding method, decoding apparatus and decoder
US20120233521A1 (en) Apparatus, system, and method for decoding linear block codes in a memory controller
JP2008165808A (ja) 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
JP2010237822A (ja) メモリコントローラおよび半導体記憶装置
US20090276680A1 (en) Error correction circuit and method thereof
US10404283B2 (en) Method and associated decoding circuit for decoding an error correction code
JP2011514743A (ja) 受信したシンボル列におけるフェーズドバーストエラー、消失、シンボルエラー、及び、ビットエラーを検出及び訂正するための方法及びシステム
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US9015548B2 (en) Error detection correction method and semiconductor memory apparatus
US10333555B2 (en) Apparatuses and methods for interleaved BCH codes
US10700708B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
Spinner et al. Soft input decoder for high‐rate generalised concatenated codes
KR101154923B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
KR101157516B1 (ko) 데이터 처리 효율을 향상시킨 bch 코덱
CN107688506B (zh) 一种流水结构的bch译码系统
US10404282B2 (en) Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding
KR101190522B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
KR101267958B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
WO2021135426A1 (zh) 译码方法、译码器和译码装置
US9236890B1 (en) Decoding a super-code using joint decoding of underlying component codes
KR101496052B1 (ko) 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로
KR101226439B1 (ko) 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법

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: 20150526

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee