KR101226439B1 - 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 - Google Patents

리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 Download PDF

Info

Publication number
KR101226439B1
KR101226439B1 KR1020110143038A KR20110143038A KR101226439B1 KR 101226439 B1 KR101226439 B1 KR 101226439B1 KR 1020110143038 A KR1020110143038 A KR 1020110143038A KR 20110143038 A KR20110143038 A KR 20110143038A KR 101226439 B1 KR101226439 B1 KR 101226439B1
Authority
KR
South Korea
Prior art keywords
error
syndrome
matrix
polynomial
values
Prior art date
Application number
KR1020110143038A
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 KR1020110143038A priority Critical patent/KR101226439B1/ko
Application granted granted Critical
Publication of KR101226439B1 publication Critical patent/KR101226439B1/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

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

Abstract

리드-솔로몬 디코더는 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록; 상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 키-방정식 솔버(Key-Equation Solver); 상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 치엔 서치 및 포니 블록; 및 상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다. 상기 신드롬 연산 블록은 하나의 행렬 곱을 이용하여 상기 신드롬 값들을 생성한다

Description

리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법{RS decoder, memory system having the same and decoding method}
본 발명은 디코딩 분야에 관한 것으로, 보다 상세하게는 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법에 관한 것이다.
최근 하나의 셀에 여러 비트를 저장하여 비트 당 비용을 줄일 수 있는 멀티 레벨 셀(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/Forney Algorithm의 세 단계 과정을 통해 복호화가 가능하다. Folding 기법과 하위구조 공유 기법이 KES와 Chien Search 단계에 대하여 하드웨어 복잡도를 낮추기 위한 최적화 기법으로 적용되었다.
신드롬 연산 단계는 다른 단계에 비해 상대적으로 하드웨어 복잡도가 낮은 것으로 간주되었지만, 이러한 최적화 알고리즘을 통하여 다른 단계와 거의 유사한 복잡도를 가지게 되었다. 2t 만큼의 신드롬이 복호화 과정에서 필수적으로 요구되기 때문에, 신드롬 연산의 복잡도는 높은 오류 정정 능력을 요구하는 리드-솔로몬 복호기에서 상당한 비중을 차지하게 된다.
상기와 같은 문제점을 해결하기 위한 본 발명의 신드롬 연산에 필요한 하드웨어의 복잡도를 감소시킬 수 있는 리드-솔로몬 디코더를 제공하는 것이다.
본 발명의 일 목적은 신드롬 연산에 필요한 하드웨어의 복잡도를 감소시킬 수 있는 디코딩 방법을 제공하는 것이다.
본 발명의 일 목적은 상기 디코더를 포함하는 메모리 시스템을 제공하는 것이다.
상기한 본 발명의 일 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 리드-솔로몬 디코더는 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록; 상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 키-방정식 솔버(Key-Equation Solver); 상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 치엔 서치 및 포니 블록; 및 상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다. 상기 신드롬 연산 블록은 하나의 행렬 곱을 이용하여 상기 신드롬 값들을 생성한다.
실시예에 있어서, 상기 신드롬 연산 블록은 상기 신드롬 값들을 생성할 때 사용되는 표현식들 중 적어도 한 번 이상 중복되는 하위 표현식들을 공유할 수 있다.
실시예에 있어서, 상기 신드롬 연산 블록에 포함되는 하나의 상수 GF 곱셈기는 하기의 [수학식 1]과 같이 나타날 수 있다.
[수학식 1]
Figure 112011103742698-pat00001
여기서, rj는 상기 수신된 m 개의 코드워드를 나타내고, a는 갈로아 필드의 프리미티드 엘리먼트를 나타냄.
상기 신드롬 연산 블록에 포함되는 복수의 신드롬 연산부들 중 하나의 신드롬 연산부는 [수학식 2]와 같이 나타날 수 있다.
[수학식 2]
Figure 112011103742698-pat00002
상기 신드롬 연산 블록은 하기의 [수학식 3]과 같이 나타날 수 있다.
[수학식 3]
Figure 112011103742698-pat00003
상기 행렬 [R j Ω(j)]는 j에 종속적이며, 상기 행렬 A는 j에 독립적일 수 있다.
상기 행렬 Ω(j+1)은 배타적 오어(OR)게이트의 조합으로 구현될 수 있다.
상기한 본 발명의 일 목적을 달성하기 위한 본 발명의 일 실시예에 따른 디코딩 방법은 수신된 코드워드로부터 신드롬 값들을 생성하는 단계; 상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 단계; 상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 단계; 및 상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 단계를 포함한다. 상기 신드롬 값들은 하나의 행렬 곱을 이용하여 생성된다.
실시예에 있어서, 상기 하나의 행렬 곱은 상기 신드롬 값들을 생성할 때 사용되는 표현식들 중 적어도 한 번 이상 중복되는 하위 표현식들을 공유할 수 있다.
상기 하나의 중복되는 하위 표현식들을 공유하기 위하여, (a)상기 신드롬 값들을 생성할 때 사용되는 표현식들의 계수로서 표현되는 행렬의 적어도 두 행 사이에 비트 단위로 일치하는 비트 수를 카운팅하는 단계; (b)상기 비트 수가 최대인 행을 선택하는 단계; (c)상기 행렬에서 상기 선택된 행을 제거하고 상기 행렬의 하단에 상기 선택된 행을 추가하여 상기 행렬을 업데이트하는 단계; 및 (d) 상기 업데이트된 행렬에서 상기 비트수가 최대인 행이 1 보다 클 때까지 상기 (a) 내지 (c) 단계를 반복하는 단계를 포함할 수 있다.
상기 (a) 내지 (d) 단계에 의하여 상기 신드롬 값들을 생성하기 위하여 필요로 하는 배타적 논리 연산의 횟수가 감소될 수 있다.
상기한 본 발명의 일 목적을 달성하기 위한 본 발명의 일 실시예에 따른 메모리 시스템은 메모리 장치 및 상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함한다. 상기 메모리 컨트롤러는 기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더; 및 상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함한다. 상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더; 및 상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함한다. 상기 ECC 디코더는 상기 메모리 장치로부터 출력되는 데이터로부터 신드롬 값들을 생성하는 신드롬 연산 블록; 상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver); 상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 치엔 서치 및 포니 블록; 및 상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함한다. 상기 신드롬 연산 블록은 하나의 행렬 곱을 이용하여 상기 신드롬 값들을 생성한다.
실시예에 있어서, 상기 메모리 장치는 플래시 메모리 장치일 수 있다.
실시예에 있어서, 상기 플래시 메모리 장치는 각각이 복수 비트의 데이터를 저장하는 멀티비트 셀들을 구비하는 메모리 셀 어레이를 구비할 수 있다.
따라서 본 발명의 실시예들에 따르면 하드웨어의 복잡도가 높은 리드-솔로몬 디코더에서 불필요하게 중복되는 하위구조들을 공유함으로써 하드웨어 복잡도를 더욱 낮출 수 있다.
도 1은 본 발명의 일 실시예에 따른 리드-솔로몬 디코더를 나타내는 블록도이다.
도 2는 종래의 기술에 따른 순차식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 3은 종래의 기술에 따른 병렬식으로 신드롬 값들을 연산하는 하드웨어 구조를 나타낸다.
도 4는 본 발명이 일 실시예에 따른 도 1의 신드롬 연산 블록을 나타낸다.
도 5는 본 발명의 일 실시예에 따라 신드롬 연산 블록에서 공유 가능한 하위 구조를 찾기 위한 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 디코딩 방법을 나타내는 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 리드-솔로몬 디코더를 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 리드-솔로몬 디코더는 신드롬 연산 블록(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))과 에러 값 다항식(Y(x))을 생성한다.
치엔 서치 및 포니 블록(220)은 치엔 서치(Chien Search)를 이용하여 에러 위치 다항식(Λ(x))으로부터 에러 위치들을 계산하고 포니 알고리즘을 이용하여 에러 값 다항식(Y(x))으로부터 에러 값을 계산하고, 계산된 에러 위치와 에러 값을 나타내는 에러 다항식(E(x))을 생성한다.
에러 정정 블록(230)은 에러 위치 및 에러 값에 기초하여 데이터 버퍼(240)로부터 출력되는 코드워드(R(x))의 에러를 정정하고, 에러 정정된 코드워드(C(x))를 출력한다.
데이터 버퍼(240)는 디코더(10)가 신드롬 값들(S(x))을 계산하고 키-방정식을 푸는 동안 코드워드(R(x))를 수신하고 저장한다.
본 발명의 실시예에서 신드롬 연산 블록(100)은 도 4 및 도 5를 참조하여 후술되는 바와 같이 신드롬 값들(S(x))을 연산하는데 있어, 하나의 행렬 곱을 이용하여 상기 신드롬 값들(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를 위한 리드-솔로몬 디코더에서 높은 처리량을 만족하기 위해 병렬화 계수를 현재 플래시 메모리의 워드 사이즈인 8로 대부분 지정한다. 병렬화에 관계없이 2t개의 신드롬을 연산하기 위해 2t개의 도 2 및 도 3의 구조가 리드-솔로몬 디코딩을 위해 필요하게 되고 통상적으로 이를 신드롬 연산 블록이라고 한다.
코드 길이(n), 메시지 길이(k), 오류 정정 능력(t)울 가지는 RS (n, k, t) 코드에 대하여 신드롬 연산을 수식적으로 살펴보도록 하자. 더 정확하게 n, k, t는 n=k+mt의 식을 만족하고, m은
Figure 112011103742698-pat00004
을 만족하는 가장 작은 양의 정수이다. RS 디코딩에서 수신된 n비트 코드 워드 (r0, r1, ..., rn -1)는
Figure 112011103742698-pat00005
와 같이 다항식으로 표현이 가능하다. 여기서 r i 심볼은 m bit-width를 가지는 GF(2 m )의 엘러먼트이다. 수신된 코드워드(R(x))에 오류가 존재하는지 확인하기 위하여 2t개의 신드롬을 하기의 [수학식 1]을 이용하여 계산한다. 수신된 코드워드(R(x))에 오류가 존재하지 않는다면 계산된 2t개의 신드롬이 모두 0 일 것이다.
[수학식 1]
Figure 112011103742698-pat00006
신드롬을 계산하기 위하여 [수학식 1]을 따를 경우 n 클락 사이클이 요구되게 된다. 복호 처리 시간을 줄이기 위하여 한 사이클에 여러 개의 심볼을 처리하게 되는데, 이때 처리되는 클락 당 심볼 수를 병렬화 계수 p라고하며 [수학식 2]와 같이 변형이 가능하다.
[수학식 2]
Figure 112011103742698-pat00007
도 3을 참조하여 설명한 바와 같이 도 3의 병렬 구조가 n/p 만큼 처리 시간이 빠르지만, 트레이드 오프로 약 p 만큼의 하드웨어 복잡도가 증가하게 된다.
병렬화와 관계없이 2t개의 신드롬을 연산하기 위해 도 3과 같은 SC 유닛 2t 개가 RS 디코딩을 위해 필요하게 되고 2t개의 SC 유닛을 포함하는 전체 구조를 신드롬 연산 블록이라고 한다.
앞서 설명하였듯이 기존에는 RS 디코더내의 신드롬 연산 구조의 상대적인 복잡도가 낮은 것으로 고려되었기 때문에, 그림3과 같은 신드롬 연산 구조가 보편적으로 사용되었다. KES, Chien Search, Forney processing 단계를 위한 최적화 알고리즘의 발달로 신드롬 연산 구조의 상대적인 복잡도가 상승하였다. 본 발명에서는 신드롬 연산 구조의 복잡성을 최소화하는 알고리즘을 제시한다.
본 발명에 따르는 알고리즘의 핵심은 한번 이상 나타나는 하위 표현식을 한번만 계산하고, 이후 나타나는 동일한 표현식에 대해 불필요하게 반복되는 계산을 하지 않고 계산된 결과 값을 그대로 사용하는 것이다. 중복된 하위 표현식이 많으면 많을수록 하드웨어 복잡도를 효과적으로 줄일 수 있으므로 하위 표현식을 찾는 영역을 최대한 넓히도록 한다. 일반적으로 상수 GF 곱셈기(도 3의 31, 33, 34)는 아래의 [수학식 3]과 같이 이진 행렬의 곱으로 표현이 가능하다.
[수학식 3]
Figure 112011103742698-pat00008
이진 덧셈과 곱셈은 XOR 게이트로 쉽게 구현이 가능하기 때문에 이진 행렬 곱의 복잡도는 일반적으로 XOR 게이트의 수로 표현이 가능하다. 복잡도를 줄이기 위해 하위 구조 공유 기법을 각각의 상수 GF 곱셈기에 적용함으로써 RS 신드롬 연산 구조의 복잡도를 낮출 수 있다.
하지만 검색 영역이 하나의 상수 GF 곱셈기에 국한되어있다는 점에서 하드웨어 복잡도 감소에 제한이 있다. 더 많은 동일한 하위 표현식을 찾기 위하여 검색 영역을 하나의 GF 곱셈기에서 신드롬 유닛 내의 p개의 GF 곱셈기로 확장시킨다. 이는 하기의 [수학식 4]와 같이 표현이 가능하다.
[수학식 4]
Figure 112011103742698-pat00009
1ㅧm 행렬로 표현되는 Ω i (j)는 j번째 iteration에서의 i번째 중간 연산단계의 신드롬을 나타내면 마지막 iteration에서 유효한 S i 의 값을 가지게 된다.
마지막으로 주어진 신드롬 연산 구조에서 검색 영역을 최적으로 확장시키기 위해, 2t개의 신드롬 유닛을 하나의 이진 행렬 곱으로 결합시킨다. 이는 하기의 [수학식 5] 같이 하나의 행렬 곱으로 표현가능하다.
[수학식 5]
Figure 112011103742698-pat00010
[R j Ω(j)]는 iteration index j에 종속적인 값을 가지며 행렬 A는 j에 독립적이다. 결과적으로 2t개의 신드롬 연산이 [R j Ω(j)]와 A의 행렬 곱으로 표현되었다. 보편적인 신드롬 연산 구조는 그림 1과 같이 2tp개의 GF 곱셈기와 (p+1) 값을 더하는 2t개의 덧셈기가 필요하다. 하지만 본 발명에서는 하나의 행렬 곱 내에 GF 곱셈기를 결합시켰고, 행렬 곱에 GF 덧셈이 내재되어있으므로 전체 GF 덧셈기를 제거하였다.
도 4는 본 발명이 일 실시예에 따른 도 1의 신드롬 연산 블록을 나타낸다.
도 4를 참조하면, 신드롬 연산 블록(100)은 하나의 매트릭스(110)와 복수의 플립플롭들(121~122t)을 포함할 수 있다. 도 4에 나타난 것처럼 본 발명의 실시예에 따른 신드롬 연산 블록(100) 검색 영역을 최대화하도록 고안되었으며 Ω(j+1)을 계산하는 하나의 행렬 곱이 필요하며, 이는 XOR 게이트 조합으로 구현할 수 있다. 도 4의 매트릭스(100)는 [수학식 5]에서 행렬A에 해당한다.
도 5는 본 발명의 일 실시예에 따라 신드롬 연산 블록에서 공유 가능한 하위 구조를 찾기 위한 방법을 설명하기 위한 도면이다.
도 5에서는 primitive 함수 p(X)=x 4+x+1을 가지는 GF(24) 내의 상수 α12 GF 곱셈기에 대한 예를 도시한다.
도 5를 참조하면, 신드롬 값들을 생성하는데 있어 중복되는 하위 표현식들을 공유하기 위하여 상기 신드롬 값들을 생성할 때 사용되는 표현식들의 계수로서 표현되는 행렬의 적어도 두 행 사이에 비트 단위로 일치하는 비트 수를 카운팅한다(a). 비트 수가 최대인 행을 선택하고, 상기 행렬에서 상기 선택된 행을 제거하고 상기 행렬의 하단에 상기 선택된 행을 추가하여 상기 행렬을 업데이트한다(b). 상기 업데이트된 행렬에서 상기 비트수가 최대인 행이 1 보다 클 때까지 상기 (a) 및지 (b) 단계를 반복한다(c).
도 5에서 알 수 있듯이, 2번의 반복된 처리를 통해 6개의 XOR 게이트가 3개의 XOR 게이트로 줄어들게 되었다.
도 6은 본 발명의 일 실시예에 따른 디코딩 방법을 나타내는 흐름도이다.
이하 도 1, 도 4 내지 도 6을 참조하여 본 발명의 실시예에 따른 디코딩 방법을 설명한다.
도 1, 도 4 내지 도 6을 참조하면, 디코딩 방법에서는 수신된 코드워드(R(x))로부터 신드롬 값들(S(x))을 생성한다(S310). 신드롬 값들(S(x))에 기초하여 에러 위치 다항식(Λ(x))을 생성하고 에러 값 다항식(Y(x))을 생성한다(S320). 에러 위치 다항식(Λ(x)) 및 에러 값 다항식(Y(x))에 기초하여 에러 위치 및 에러 값을 계산한다(S330). 에러 위치 및 에러 값에 기초하여 코드워드(R(x))의 에러를 정정하여 에러 정정된 코드워드(C(x))를 출력한다. 여기서 신드롬 값들(S(x))을 연산하는데 있어, 도 5를 참조하여 설명한 바와 같이 중복되는 하위 표현식들을 공유하여 하나의 행렬 곱을 이용할 수 있다.
또한 본 발명의 실시예에 따른 디코딩 방법에서도 상기의 [수학식 3] 내지 [수학식 5]를 만족할 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 7을 참조하면, 메모리 시스템(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]를 만족할 수 있다.
메모리 장치(420)는 플래시 메모리 장치일 수 있고, 메모리 장치(420)에 포함되는 메모리 셀 어레이(421)는 복수의 메모리 셀들을 구비하는데 이 메모리 셀들 각각에는 복수 비트의 데이터가 저장될 수 있다. 즉 메모리 셀들은 MLC이다.
아래의 [표 1]은 본 발명의 실시예에 따른 신드롬 연산 블록의 성능을 나타내는 표이다.
[표 1]
Figure 112011103742698-pat00011
[표 1]에서는 코드 길이가 255 심볼인 RS(255, 255-2t) 부호에 대하여 본 발명에 따른 신드롬 블록과 도 3의 신드롬 블록의 구조에 대하여 게이트 수를 비교하였다. 병렬화 계수는 1 부터 8까지 변화 시켰고, 오류 정정 능력은 4, 8을 가지는 RS 복호기를 구현하였다. 전체 시스템은 200MHz의 동작 주파수를 가지며 0.13um 공정 기술을 이용하여 합성을 하였다. 심볼 당 비트 수 m, 병렬화 계수 p, 오류 정정 능력 t가 클 경우 제안한 알고리즘은 복잡도를 효율적으로 최적화할 수 있다. 예를 들어 [표 1]에서 보는 바와 같이 병렬화 계수가 8인 경우 게이트 카운트를 절반가량으로 줄이는 것을 알 수 있다.
따라서 본 발명의 실시예들에 따르면 하드웨어의 복잡도가 높은 리드-솔로몬 디코더에서 불필요하게 중복되는 하위구조들을 공유함으로써 하드웨어 복잡도를 더욱 낮출 수 있다.
본 발명의 실시예들은 멀티 비트 셀을 구비하는 플래시 메모리 장치 또는 시스템에 폭넓게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (14)

  1. 수신된 코드워드로부터 신드롬 값들을 생성하는 신드롬 연산 블록;
    상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver);
    상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 치엔 서치 및 포니 블록; 및
    상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함하고,
    상기 신드롬 연산 블록은 하나의 행렬 곱을 이용하여 상기 신드롬 값들을 생성하는 것을 특징으로 하는 리드-솔로몬 디코더.
  2. 제1항에 있어서,
    상기 신드롬 연산 블록은 상기 신드롬 값들을 생성할 때 사용되는 표현식들 중 적어도 한 번 이상 중복되는 하위 표현식들을 공유하는 것을 특징으로 하는 리드-솔로몬 디코더.
  3. 제1항에 있어서,
    상기 신드롬 연산 블록에 포함되는 하나의 상수 GF 곱셈기는 하기의 [수학식 1]과 같이 나타나는 것을 특징으로 하는 리드-솔로몬 디코더.
    [수학식 1]
    Figure 112011103742698-pat00012

    여기서, rj는 상기 수신된 m 개의 코드워드를 나타내고, a는 갈로아 필드의 프리미티드 엘리먼트를 나타냄.
  4. 제3항에 있어서,
    상기 신드롬 연산 블록에 포함되는 복수의 신드롬 연산부들 중 하나의 신드롬 연산부는 [수학식 2]와 같이 나타나는 것을 특징으로 하는 리드-솔로몬 디코더.
    [수학식 2]
    Figure 112011103742698-pat00013
  5. 제4항에 있어서,
    상기 신드롬 연산 블록은 하기의 [수학식 3]과 같이 나타나는 것을 특징으로 하는 리드-솔로몬 디코더.
    [수학식 3]
    Figure 112011103742698-pat00014
  6. 제5항에 있어서,
    상기 행렬 [R j Ω(j)]는 j에 종속적이며, 상기 행렬 A는 j에 독립적인 것을 특징으로 하는 리드-솔로몬 디코더.
  7. 제5항에 있어서,
    상기 행렬 Ω(j+1)은 배타적 오어(OR)게이트의 조합으로 구현되는 것을 특징으로 하는 리드-솔로몬 디코더.
  8. 수신된 코드워드로부터 신드롬 값들을 생성하는 단계;
    상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 단계;
    상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 단계; 및
    상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 단계를 포함하고,
    상기 신드롬 값들은 하나의 행렬 곱을 이용하여 생성되는 것을 특징으로 하는 디코딩 방법.
  9. 제8항에 있어서,
    상기 하나의 행렬 곱은 상기 신드롬 값들을 생성할 때 사용되는 표현식들 중 적어도 한 번 이상 중복되는 하위 표현식들을 공유하는 것을 특징으로 하는 디코딩 방법.
  10. 제9항에 있어서,
    상기 하나의 중복되는 하위 표현식들을 공유하기 위하여
    (a)상기 신드롬 값들을 생성할 때 사용되는 표현식들의 계수로서 표현되는 행렬의 적어도 두 행 사이에 비트 단위로 일치하는 비트 수를 카운팅하는 단계;
    (b)상기 비트 수가 최대인 행을 선택하는 단계;
    (c)상기 행렬에서 상기 선택된 행을 제거하고 상기 행렬의 하단에 상기 선택된 행을 추가하여 상기 행렬을 업데이트하는 단계; 및
    (d) 상기 업데이트된 행렬에서 상기 비트수가 최대인 행이 1 보다 클 때까지 상기 (a) 내지 (c) 단계를 반복하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  11. 제10항에 있어서,
    상기 (a) 내지 (d) 단계에 의하여 상기 신드롬 값들을 생성하기 위하여 필요로 하는 배타적 논리 연산의 횟수가 감소되는 것을 특징으로 하는 디코딩 방법.
  12. 메모리 장치; 및
    상기 메모리 장치와 호스트 간에 데이터의 전송을 제어하기 위한 메모리 컨트롤러를 포함하며,
    상기 메모리 컨트롤러는,
    상기 호스트로부터 수신되는 데이터를 인코딩하여 상기 메모리 장치로 출력하는 인코더; 및
    상기 메모리 장치로부터 출력되는 데이터의 오류를 검사하고 정정하기 위한 ECC 디코더를 포함하며,
    상기 ECC 디코더는,
    상기 메모리 장치로부터 출력되는 데이터로부터 신드롬 값들을 생성하는 신드롬 연산 블록;
    상기 신드롬 값들에 기초하여 에러 위치 다항식과 에러 값 다항식을 생성하는 키-방정식 솔버(Key-Equatiion Solver);
    상기 에러 위치 다항식과 상기 에러 값 다항식에 기초하여 에러 위치와 에러 값을 계산하는 치엔 서치 및 포니 블록; 및
    상기 에러 위치 및 상기 에러 값에 기초하여 상기 수신된 코드워드의 에러를 정정하여 정정된 코드워드를 출력하는 에러 정정 블록을 포함하고,
    상기 신드롬 연산 블록은 하나의 행렬 곱을 이용하여 상기 신드롬 값들을 생성하는 것을 특징으로 하는 메모리 시스템.
  13. 제12항에 있어서,
    상기 메모리 장치는 플래시 메모리 장치인 것을 특징으로 하는 메모리 시스템.
  14. 제13항에 있어서,
    상기 플래시 메모리 장치는 각각이 복수 비트의 데이터를 저장하는 멀티비트 셀들을 구비하는 메모리 셀 어레이를 구비하는 것을 특징으로 하는 메모리 시스템.
KR1020110143038A 2011-12-27 2011-12-27 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 KR101226439B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110143038A KR101226439B1 (ko) 2011-12-27 2011-12-27 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110143038A KR101226439B1 (ko) 2011-12-27 2011-12-27 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법

Publications (1)

Publication Number Publication Date
KR101226439B1 true KR101226439B1 (ko) 2013-01-25

Family

ID=47842613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110143038A KR101226439B1 (ko) 2011-12-27 2011-12-27 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법

Country Status (1)

Country Link
KR (1) KR101226439B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190120690A (ko) * 2018-04-16 2019-10-24 에스케이하이닉스 주식회사 리드 솔로몬 디코더 및 이를 포함하는 반도체 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08139612A (ja) * 1994-11-08 1996-05-31 Asahi Kasei Micro Syst Kk リード・ソロモン誤り訂正符号復号化回路
KR19980030311A (ko) * 1996-10-29 1998-07-25 배순훈 리드 솔로몬 디코더의 에러 정정 시스템
KR100848614B1 (ko) 2006-03-30 2008-07-28 후지쯔 가부시끼가이샤 오류 정정 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08139612A (ja) * 1994-11-08 1996-05-31 Asahi Kasei Micro Syst Kk リード・ソロモン誤り訂正符号復号化回路
KR19980030311A (ko) * 1996-10-29 1998-07-25 배순훈 리드 솔로몬 디코더의 에러 정정 시스템
KR100848614B1 (ko) 2006-03-30 2008-07-28 후지쯔 가부시끼가이샤 오류 정정 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190120690A (ko) * 2018-04-16 2019-10-24 에스케이하이닉스 주식회사 리드 솔로몬 디코더 및 이를 포함하는 반도체 장치
KR102635135B1 (ko) * 2018-04-16 2024-02-08 에스케이하이닉스 주식회사 리드 솔로몬 디코더 및 이를 포함하는 반도체 장치

Similar Documents

Publication Publication Date Title
US9998148B2 (en) Techniques for low complexity turbo product code decoding
Chen et al. Error correction for multi-level NAND flash memory using Reed-Solomon codes
US9088300B1 (en) Cyclic redundancy check for out-of-order codewords
KR101264061B1 (ko) 플래시 메모리를 위한 오류 정정 메커니즘
US7543212B2 (en) Low-density parity-check (LDPC) encoder
US7657816B2 (en) Low-complexity hybrid LDPC code encoder
US9136871B2 (en) High-performance ECC decoder
Spinner et al. Decoder architecture for generalised concatenated codes
JP2004032737A (ja) リード−ソロモン復号器
US7810015B2 (en) Decoding with a concatenated error correcting code
Xie et al. Reduced-complexity key equation solvers for generalized integrated interleaved BCH decoders
US10333555B2 (en) Apparatuses and methods for interleaved BCH codes
CN102045073B (zh) 一种bch码译码方法和装置
Wang Hierarchical decoding of double error correcting codes for high speed reliable memories
KR101267958B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
Hwang et al. Energy-efficient symmetric BC-BCH decoder architecture for mobile storages
Spinner et al. Design and implementation of a pipelined decoder for generalized concatenated codes format
CN107688506B (zh) 一种流水结构的bch译码系统
US11750219B2 (en) Decoding method, decoder, and decoding apparatus
KR101226439B1 (ko) 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
Zhang VLSI architectures for Reed–Solomon codes: Classic, nested, coupled, and beyond
KR101190522B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
Yoo et al. Area-efficient syndrome calculation for strong BCH decoding
Zhang et al. A novel optimization algorithm for Chien search of BCH Codes in NAND flash memory devices
KR101154923B1 (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
FPAY Annual fee payment

Payment date: 20151229

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee