KR101791637B1 - 디코더 및 이를 포함하는 메모리 컨트롤러 - Google Patents

디코더 및 이를 포함하는 메모리 컨트롤러 Download PDF

Info

Publication number
KR101791637B1
KR101791637B1 KR1020160066044A KR20160066044A KR101791637B1 KR 101791637 B1 KR101791637 B1 KR 101791637B1 KR 1020160066044 A KR1020160066044 A KR 1020160066044A KR 20160066044 A KR20160066044 A KR 20160066044A KR 101791637 B1 KR101791637 B1 KR 101791637B1
Authority
KR
South Korea
Prior art keywords
syndrome
completed
adders
multipliers
decoder
Prior art date
Application number
KR1020160066044A
Other languages
English (en)
Other versions
KR20160140512A (ko
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 주식회사 쏠리드
Publication of KR20160140512A publication Critical patent/KR20160140512A/ko
Application granted granted Critical
Publication of KR101791637B1 publication Critical patent/KR101791637B1/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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M9/00Parallel/series conversion or vice versa

Abstract

본 발명의 실시 예에 따른 디코더(decoder)는 수신된 코드워드 (codeword)로부터 신드롬(syndrome) 값들을 생성하는 신드롬 계산기를 포함하고, 상기 신드롬 계산기는 상기 코드워드를 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성하는 곱셈기들과 덧셈기들을 포함한다.

Description

디코더 및 이를 포함하는 메모리 컨트롤러{DECODER AND MEMORY CONTROLLER INCLUDING THE SAME}
본 발명의 기술적 사상은 디코더 및 이를 포함하는 메모리 컨트롤러에 관한 것으로, 보다 상세하게는 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성할 수 있는 신드롬 계산기를 포함하는 디코더 및 이를 포함하는 메모리 컨트롤러에 관한 것이다.
일반적으로 디코더를 설계함에 있어서 복잡도를 최소로 하기를 원하는 경우, 곱셈기가 덧셈기 같은 하나의 리소스를 매 클럭마다 반복적으로 사용하는 구조로 설계되었다. 또한, 디코더를 설계함에 있어서 고속 처리가 필요한 경우, 여러 개의 곱셈기와 덧셈기를 사용하여 한 클럭에 필요한 연산을 동시에 처리할 수 있는 구조로 설계되었다.
하지만, 복잡도 최소화 및 고속 처리가 모두 필요한 경우에 대해서는 체계화된 방법이나 구조가 제안되지 않아, 경우에 따라 각 서브블록들을 직렬화하거나 병렬화하는 방식으로 설계되어 왔다.
BCH(Bose-Chaudhuri-Hoquenbhem) 디코더와 관련하여서도, 직렬/병렬 정도를 자유롭게 조절할 수 있는 체계화된 구조가 없어 확장성(scalability)이 제한되며 효율성이 떨어지고 해당 목적에 맞는 최적의 구조를 보장해 주기 어려운 문제가 있었다. 특히, 다항식 나눗셈을 수행하여야 하는 BCH 코드의 특성상 유연한 직렬화나 병렬화가 쉽지 않은 신드롬 연산 단계와 관련하여 문제되고 있다.
본 발명의 기술적 사상에 따른 디코더 및 이를 포함하는 메모리 컨트롤러가 이루고자 하는 기술적 과제는, 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성할 수 있는 신드롬 계산기를 포함하는 디코더 및 이를 포함하는 메모리 컨트롤러를 제공하는 것이다.
본 발명의 기술적 사상에 의한 일 양태에 따른 디코더(decoder)는 수신된 코드워드(codeword)로부터 신드롬(syndrome) 값들을 생성하는 신드롬 계산기를 포함하고, 상기 신드롬 계산기는 상기 코드워드를 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성하는 곱셈기들과 덧셈기들을 포함한다.
일부 실시 예에서, 상기 코드워드에 포함된 상기 비트 그룹들 각각에 포함된 상기 복수의 비트들은, 상기 덧셈기들을 통하여 입력될 수 있다.
일부 실시 예에서, 상기 비트 그룹들 각각은 적어도 3이상의 비트들을 포함하며, 상기 곱셈기들은 각각이 상기 덧셈기들 사이에 배치되는 누적 곱셈기들을 포함할 수 있다.
일부 실시 예에서, 상기 누적 곱셈기들은 서로 동일한 값을 가지는 갈로이스 필드 엘리먼트(Galois Field element)를 누적적으로 곱할 수 있다.
일부 실시 예에서, 상기 신드롬 계산기는 상기 비트 그룹들 중에서 어느 하나의 비트 그룹에 대한 직렬 연산이 완료되면, 직렬 연산이 완료된 비트 그룹에 대한 처리 데이터를 임시 저장하기 위한 레지스터(register)를 더 포함할 수 있다.
일부 실시 예에서, 상기 곱셈기들은 직렬 연산이 완료된 상기 비트 그룹에 대하여 단위 갈로이스 필드 엘리먼트를 곱하는 단위 곱셈기를 포함할 수 있다.
일부 실시 예에서, 상기 신드롬 계산기는 상기 레지스터와 상기 단위 곱셈기 사이에 제1스위치를 더 포함하고, 상기 제1스위치는 상기 비트 그룹들 중에서 첫번째 비트 그룹의 직렬 연산이 완료되기 이전에는 턴-오프(turn-off)되고, 상기 첫번째 비트 그룹의 직렬 연산이 완료된 이후에는 턴-온(turn-on)되도록 제어될 수 있다.
일부 실시 예에서, 상기 신드롬 계산기는 상기 신드롬 계산기의 출력단에 위치한 제2스위치를 더 포함하고, 상기 제2스위치는 상기 비트 그룹들 모두에 대한 직렬 연산이 완료되기 이전에는 턴-오프되고, 상기 비트 그룹들 모두에 대한 직렬 연산이 완료된 이후에는 턴-온되도록 제어될 수 있다.
일부 실시 예에서, 상기 디코더는 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키 방정식 솔버(key equation solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 구하는 치엔 서치 블록(chien search block) 및 상기 에러 위치에 기초하여 상기 수신 데이터의 에러를 수정하고, 수정된 수신 데이터를 출력하는 에러 수정 블록을 더 포함할 수 있다.
본 발명의 기술적 사상에 의한 일 양태에 따른 메모리 컨트롤러(memory controller)는 상기 디코더를 포함할 수 있다.
본 발명의 기술적 사상에 의한 실시 예에 따른 방법과 장치는, 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행하여 상기 신드롬 값들을 생성함으로써 디코딩 처리 과정을 고속화하면서도 디코더 구조의 복잡도를 최소화 할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 디코더의 블록도이다.
도 2는 도 1에 도시된 신드롬 계산기의 일 실시 예를 나타낸 도면이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 시스템의 블록도이다.
본 발명의 기술적 사상은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명의 기술적 사상을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 기술적 사상의 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명의 기술적 사상을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에 기재된 "~부(유닛)", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
이하, 본 발명의 기술적 사상에 따른 실시예들을 차례로 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 디코더의 블록도이다.
도 1을 참조하면, 실시 예에 따라, 디코더(decoder, 100)는 BCH(Bose-Chaudhuri-Hoquenbhem) 디코더로 구현될 수 있다.
디코더(100)는 데이터 버퍼(data buffer, 110), 신드롬 계산기(syndrome calculator, 120), 키 방정식 솔버(key equation solver, 130), 치엔 서치 블록(chien search block, 140), 및 에러 정정 블록(error correcting block, 150)을 포함할 수 있다.
데이터 버퍼(110)는 수신된 코드워드(R(x))를 임시로 저장하였다가 에러 정정 블록(150)으로 제공할 수 있다.
신드롬 계산기(120)는 수신된 코드워드(R(x))에 기초하여 신드롬 값들(S(x))을 생성한다. 수신된 코드워드(R(x))에 에러가 없는 경우 신드롬 값들(S(x))은 모두 "0"의 값을 가지며, 수신된 코드워드(R(x))에 에러가 있는 경우 신드롬 값들(S(x))은 "0"이 아닌 값을 포함한다.
신드롬 값들(S(x))이 모두 "0"의 값을 가지는 경우, 데이터 버퍼(110)에 저장된 코드워드(R(x))는 별도의 에러 정정없이 디코더(100)로부터 출력될 수 있다.
신드롬 값들(S(x))이 "0"이 아닌 값을 포함하는 경우, 에러 정정을 위하여 신드롬 값들(S(x))이 키 방정식 솔버(130)로 전달된다.
본 발명의 실시 예에 따른 신드롬 계산기(120)의 구체적인 구조에 대해서는 도 2를 참조하여 상세히 설명된다.
키 방정식 솔버(130)는 수신된 신드롬 값들(S(x))에 기초하여 에러 위치 다항식(∧(x))을 생성하여 치엔 서치 블록(140)으로 전달할 수 있다.
실시 예에 따라, 키 방정식 솔버(130)는 벌러캠프-매시(Berlekamp-Massey) 알고리즘, 스텝-바이-스텝(Step-By-Step(SBS)) 알고리즘, 유클리드(Euclidean) 알고리즘, 또는 수정 유클리드(modified Euclidean) 알고리즘 등을 이용하여 에러 위치 다항식(∧(x))을 생성할 수 있다.
치엔 서치 블록(140)은 키 방정식 솔버(130)로부터 전달된 에러 위치 다항식(∧(x))에 기초하여, 에러 위치들을 계산하고 계산 결과에 따라 에러 다항식(E(x))을 생성할 수 있다. 치엔 서치 블록(140)은 생성된 에러 다항식(E(x))을 에러 정정 블록(150)으로 전달할 수 있다.
에러 정정 블록(150)은 치엔 서치 블록(140)으로부터 전달된 에러 다항식(E(x))에 기초하여 데이터 버퍼(110)로부터 버퍼링되어 수신된 코드워드(R(x))의 에러를 정정하고, 에러가 정정된 코드워드(C(x))를 출력할 수 있다.
도 2는 도 1에 도시된 신드롬 계산기의 일 실시 예를 나타낸 도면이다.
도 1과 도 2를 참조하면, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 신드롬 값들(Si)을 생성하는 곱셈기들(122-1~122-4)과 덧셈기들(124-1~124-4)을 포함할 수 있다.
도 2에서는 수신된 코드워드(R(x))를 4비트의 비트 그룹 단위로 병렬로 입력받는 경우를 설명하지만 이에 한정되지 않으며, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 적어도 2이상의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받을 수 있다.
실시 예에 따라, 수신된 코드워드(R(x))가 비트 그룹의 비트 수로 나누어 떨어지지 않는 경우(예컨대, 3비트의 비트 그룹으로 구성되는 경우), 마지막 비트 그룹에 "0" 값이 삽입되는 형태로 비트 그룹이 구성될 수도 있다.
이하에서는 코드워드(R(x))의 비트 그룹의 개념 이해를 위하여 신드롬 값들(Si)의 연산 과정을 함께 설명한다.
신드롬 값들(Si)은 기본적으로 아래의 [수식 1]에 따라 구해질 수 있다.
[수식 1]
Si=
Figure 112016051491236-pat00001
= R0 + R1αi + R2α2i +… + RN-1αi(N-1)
신드롬 값들(Si)의 병렬 처리를 위하여, 신드롬 값들(Si)을 구하기 위한 [수식 1]은 [수식 2]와 같이 변형될 수 있다.
[수식 2]
Si=(((RN- 1α3i + RN- 2α2i+ RN- 3αi+ RN- 44i+(RN- 5α3i + RN- 6α2i+ RN- 7αi+ RN-8)) α4i+...)α4i+ R3α3i + R2α2i+ R1αi+ R0
즉, 코드워드(R(x))는 복수의 비트들을 포함하는 비트 그룹 단위로 구분되어 병렬로 입력될 수 있다. 예컨대, 코드워드(R(x))가 4비트의 비트 그룹으로 구분되는 경우, 첫번째 비트 그룹은 RN-4, RN-3, RN-2, RN-1을 포함하고, 두번째 비트 그룹은 RN-8, RN-7, RN-6, RN- 5을 포함하고, 마지막 비트 그룹은 R0, R1, R2, R3을 포함할 수 있다.
[수식 2]에 따라 신드롬 값들(Si)을 구하는 경우, 본 발명의 실시 예에 따른 도 2의 신드롬 계산기(120)의 구조가 활용될 수 있다.
신드롬 계산기(120)는 복수의 덧셈기들(124-1~124-4), 복수의 곱셈기들(122-1~122-4), 레지스터(register, 126), 및 스위치들(SW1, SW2)을 포함할 수 있다.
코드워드(R(x))에 포함된 비트 그룹들 각각에 포함된 비트들 각각은 복수의 덧셈기들(124-1~124-4)을 통하여 입력될 수 있다.
첫번째 비트 그룹의 RN-4, RN-3, RN-2, RN-1 각각이 덧셈기들(124-1~124-4) 각각으로 입력되면, 첫번째 비트 그룹의 RN-4, RN-3, RN-2, RN-1에 대한 직렬 연산이 수행될 수 있다.
제1스위치(SW1)는 첫번째 비트 그룹의 직렬 연산이 완료되기 이전에는 턴-오프(turn-off) 상태로 제어될 수 있다.
첫번째 비트 그룹의 RN-1은 제1덧셈기(124-1)로 입력되며, 제1누적 곱셈기(122-2)에 의해 갈로이스 필드 엘리먼트(Galois Field element) αi가 곱해져서, RN-1αi가 출력될 수 있다.
제1누적 곱셈기(122-2)의 출력인 RN- 1αi에는 제2덧셈기(124-2)로 입력된 첫번째 비트 그룹의 RN-2가 더해져서, RN-1αi+ RN-2가 출력 될 수 있다.
제2누적 곱셈기(122-3)에 의해, 제2덧셈기(124-2)의 출력인 RN- 1αi+ RN-2에 갈로이스 필드 엘리먼트αi가 곱해져서, RN-1α2i+ RN-2αi가 출력될 수 있다.
제2누적 곱셈기(122-3)의 출력인 RN- 1α2i+ RN- 2αi에는 제3덧셈기 (124-3)로 입력된 첫번째 비트 그룹의 RN-3가 더해져서, RN- 1α2i+ RN- 2αi+ RN-3 가 출력될 수 있다.
제3누적 곱셈기(122-4)에 의해, 제3덧셈기(124-3)의 출력인 RN- 1α2i+ RN- 2αi+ RN-3에 갈로이스 필드 엘리먼트αi가 곱해져서, RN- 1α3i+ RN- 2α2i+ RN-3 αi 가 출력 될 수 있다.
제3누적 곱셈기(122-4)의 출력인 RN- 1α3i+ RN- 2α2i+ RN-3 αi에는 제4덧셈기 (124-4)로 입력된 첫번째 비트 그룹의 RN-4가 더해져서, RN- 1α3i+ RN- 2α2i+ RN-3 αi+ RN-4가 출력 될 수 있다.
제2스위치(SW2)는 비트 그룹들 모두에 대한 직렬 연산이 완료되기 이전에는 턴-오프 상태로 제어되기 때문에, 제4덧셈기(124-4)의 출력인 RN - 1α3i+ RN- 2α2i+ RN-3 αi+ RN- 4은 루프(loop)를 통하여 레지스터(126)로 입력되어 저장될 수 있다. 레지스터(126)로 입력된 데이터는 두번째 비트 그룹이 입력되는 타이밍에 맞추어 다시 출력될 수 있다.
첫번째 비트 그룹의 직렬 연산이 완료되면, 제1스위치(SW1)는 턴-온 상태로 제어될 수 있다.
두번째 비트 그룹의 RN-8, RN-7, RN-6, RN-5 각각이 덧셈기들(124-1 ~124-4) 각각으로 입력되면, 첫번째 비트 그룹에 대한 직렬 연산결과를 활용하여 두번째 비트 그룹의 RN-8, RN-7, RN-6, RN-5에 대한 직렬 연산이 수행될 수 있다.
레지스터(126)로 저장되어 있던 첫번째 비트 그룹에 대한 직렬 연산결과인 RN-1α3i+ RN- 2α2i+ RN-3 αi+ RN-4에는 단위 곱셈기(122-1)에 의해 갈로이스 필드 엘리먼트α4i가 곱해져서, (RN-1α3i+ RN-2α2i+ RN-3 αi+ RN-44i가 출력될 수 있다.
이후, 첫번째 비트 그룹과 마찬가지로 병렬로 입력되는 두번째 비트 그룹 및 나머지 비트 그룹들에 대해서도 곱셈기들(122-2~122-4)과 덧셈기들(124-1~124-4)에 의해 직렬 연산을 수행하게 되면, 최종적으로 제4덧셈기(124-4)로부터 (((RN- 1α3i + RN-2α2i+ RN- 3αi+ RN- 44i+(RN- 5α3i + RN- 6α2i+ RN- 7αi+ RN-8))α4i +?)α4i+ R3α3i + R2α2i+ R1αi+ R0값이 출력되며, 이 때 제2스위치(SW1)가 턴-온 되면서 제4덧셈기(124-4)의 출력이 신드롬 계산기(120)의 출력 값으로서 출력될 수 있다.
즉, 누적 곱셈기들(122-2~122-4)은 덧셈기들(124-1~124-4) 사이에 배치되며, 누적 곱셈기들(122-2~122-4)과 덧셈기들(124-1~124-4)은 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행할 수 있으며, 비트 그룹은 병렬로 입력받은 이후에 직렬 연산을 통해 처리하기 위해 구분되는 코드워드(R(x))의 비트들의 단위를 의미할 수 있다.
비트 그룹이 2비트로 구성되면, 누적 곱셈기의 개수가 1개로 구성될 수 있기 때문에, 비트 그룹이 4이상의 비트로 구성될 때 누적 곱셈기들(122-2~122-4)는 누적적으로 갈로이스 필드 엘리먼트를 곱하여 신드롬 계산기(120)의 구조를 단순화시키는 효과를 가진다.
실시 예에 따라, 누적 곱셈기들(122-2~122-4)은 서로 동일한 값을 가지는 갈로이스 필드 엘리멘트, 예컨대, αi를 누적적(cumulative)으로 곱할 수 있다.
실시 예에 따라, 단위 곱셈기(122-1)는 직렬 연산이 완료된 비트 그룹에 대하여 일정한 값을 가지는 갈로이스 필드 엘리먼트를 곱하며, 단위 곱셈기(122-1)에서 곱해지는 갈로이스 필드 엘리먼트의 크기는 비트 그룹의 크기에 따라 결정될 수 있다. 예컨대, 비트 그룹이 4비트로 구성되는 경우, 단위 곱셈기(122-1)는 α4i를 곱하고, 비트 그룹이 8비트로 구성되는 경우, 단위 곱셈기(122-1)는 α8i를 곱할 수 있다.
실시 예에 따라, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 적어도 3이상의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받는 경우, 2 이상의 누적 곱셈기들을 포함하여 더욱 효율적인 구조로 구현될 수 있다.
다른 실시 예에 따라, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 2^n(n은 2이상의 자연수) 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받는 경우, 2 이상의 누적 곱셈기들을 포함하면서도 코드워드(R(x))가 비트 그룹 단위로 나누어 떨어지므로 더욱 효율적인 구조로 구현될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 메모리 시스템의 블록도이다.
도 1 내지 도 3을 참조하면, 메모리 시스템(200)은 호스트(host, 210), 메모리 장치(memory device, 220), 및 메모리 컨트롤러(memory controller, 230)를 포함할 수 있다.
실시 예에 따라, 메모리 시스템(200)은 전자 장치 또는 휴대용 장치(portable device)로 구현될 수 있다. 상기 휴대용 장치는 이동 전화기 (cellular phone), 스마트폰(smart phone), 또는 태블릿(tablet) PC 등으로 구현될 수 있다.
호스트(210)는 내부의 프로세스 처리에 필요한 데이터를 읽기 위한 요청 또는 프로세스 처리 결과에 따른 데이터를 저장하기 위한 요청을 메모리 컨트롤러(230)로 전송할 수 있다.
메모리 장치(220)는 호스트(210)에 의해 관리되는 데이터를 저장할 수 있으며, 불휘발성 메모리인 EEPROM(electrically erasable programmable read-only Memory), 플래시 메모리(flash memory), MRAM (magnetic RAM), 스핀전달토크 MRAM(spin-transfer torque MRAM), Conductive bridging RAM(CBRAM), FeRAM (ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(resistive RAM (RRAM)), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM (polymer RAM: PoRAM), 나노 부유 게이트 메모리(nano floating gate memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자 (molecular electronics memory device), 또는 절연 저항 변화 메모리(insulator resistance change memory), 휘발성 메모리인 RAM(random access memory), 예컨대 DRAM(dynamic RAM) 또는 SRAM(static RAM) 등으로 구현될 수 있으나 본 발명의 범위가 이에 한정되는 것은 아니다.
메모리 컨트롤러(230)는 호스트(210)와 메모리 장치(220) 사이의 데이터 송수신을 제어할 수 있다. 메모리 컨트롤러(230)는 인터페이스(interface, 232), 인코더(encoder, 234), 및 디코더(decoder, 236)를 포함할 수 있다.
인터페이스(232)는 호스트(210)와 메모리 컨트롤러(230) 간의 신호 송수신을 인터페이싱할 수 있다.
인코더(234)는 호스트(210)로부터 수신된 데이터를 인코딩하여 메모리 장치(220)로 출력할 수 있다.
실시 예에 따라, 도 3의 디코더(236)는 도 1의 디코더(100)와 같은 형태로 구현될 수 있다. 디코더(236)는 메모리 장치로부터 출력되는 데이터(R(x))의 오류를 검사하고 오류를 정정하여 정정된 데이터(C(x))를 인터페이스(232)를 통하여 호스트(210)로 전송할 수 있다.
이상, 본 발명의 기술적 사상을 다양한 실시예들을 들어 상세하게 설명하였으나, 본 발명의 기술적 사상은 상기 실시예들에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.
100, 236 : 디코더
110 : 데이터 버퍼
120 : 신드롬 계산기
130 : 키 방정식 솔버
140 : 치엔 서치 블록
150 : 에러 정정 블록
200 : 메모리 시스템
210 : 호스트
220 : 메모리 장치
230 : 메모리 컨트롤러

Claims (10)

  1. 수신된 코드워드(codeword)로부터 신드롬(syndrome) 값들을 생성하는 신드롬 계산기를 포함하고,
    상기 신드롬 계산기는,
    상기 코드워드를 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받는 덧셈기들과, 각각이 상기 덧셈기들 각각과 직렬로 배치되어 곱셈 연산을 수행하는 곱셈기들을 포함하며,
    상기 덧셈기들과 상기 곱셈기들은,
    상기 덧셈기들을 통하여 병렬로 입력된 비트 그룹들 각각에 대하여, 상기 덧셈기들과 상기 곱셈기들의 직렬 연결 구조에 따라 순차적으로 덧셈 연산 및 곱셈 연산을 수행하는 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성하며,
    상기 곱셈기들은, 상기 덧셈기들 사이에 배치되어 서로 동일한 값을 가지는 갈로이스 필드 엘리먼트(Galois Field element)를 누적적으로 곱하는 누적 곱셈기를 포함하는, 디코더(decoder).
  2. 제1항에 있어서,
    상기 비트 그룹들 각각에 포함된 상기 복수의 비트들은, 상기 덧셈기들을 통하여 입력되는, 디코더.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 신드롬 계산기는,
    상기 비트 그룹들 중에서 어느 하나의 비트 그룹에 대한 직렬 연산이 완료되면, 직렬 연산이 완료된 비트 그룹에 대한 처리 데이터를 임시 저장하기 위한 레지스터(register)를 더 포함하는, 디코더.
  6. 제5항에 있어서,
    상기 곱셈기들은,
    직렬 연산이 완료된 상기 비트 그룹에 대하여 단위 갈로이스 필드 엘리먼트를 곱하는 단위 곱셈기를 포함하는, 디코더.
  7. 제6항에 있어서,
    상기 신드롬 계산기는,
    상기 레지스터와 상기 단위 곱셈기 사이에 제1스위치를 더 포함하고,
    상기 제1스위치는 상기 비트 그룹들 중에서 첫번째 비트 그룹의 직렬 연산이 완료되기 이전에는 턴-오프(turn-off)되고, 상기 첫번째 비트 그룹의 직렬 연산이 완료된 이후에는 턴-온(turn-on)되도록 제어되는, 디코더.
  8. 제7항에 있어서,
    상기 신드롬 계산기는,
    상기 신드롬 계산기의 출력단에 위치한 제2스위치를 더 포함하고,
    상기 제2스위치는 상기 비트 그룹들 모두에 대한 직렬 연산이 완료되기 이전에는 턴-오프되고, 상기 비트 그룹들 모두에 대한 직렬 연산이 완료된 이후에는 턴-온되도록 제어되는, 디코더.
  9. 제1항에 있어서,
    상기 디코더는,
    상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키 방정식 솔버(key equation solver);
    상기 에러 위치 다항식에 기초하여 에러 위치를 구하는 치엔 서치 블록(chien search block); 및
    상기 에러 위치에 기초하여 상기 코드워드의 에러를 수정하고, 수정된 코드워드를 출력하는 에러 수정 블록을 더 포함하는, 디코더.
  10. 제1항의 상기 디코더를 포함하는 메모리 컨트롤러(memory controller).
KR1020160066044A 2015-05-29 2016-05-29 디코더 및 이를 포함하는 메모리 컨트롤러 KR101791637B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150076192 2015-05-29
KR20150076192 2015-05-29

Publications (2)

Publication Number Publication Date
KR20160140512A KR20160140512A (ko) 2016-12-07
KR101791637B1 true KR101791637B1 (ko) 2017-10-30

Family

ID=57572969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160066044A KR101791637B1 (ko) 2015-05-29 2016-05-29 디코더 및 이를 포함하는 메모리 컨트롤러

Country Status (1)

Country Link
KR (1) KR101791637B1 (ko)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Design of parallel BCH decoder for MLC memory (SoC design conference, 2008)

Also Published As

Publication number Publication date
KR20160140512A (ko) 2016-12-07

Similar Documents

Publication Publication Date Title
JP5768022B2 (ja) メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法
US8739007B2 (en) Chien search using multiple basis representation
KR101264061B1 (ko) 플래시 메모리를 위한 오류 정정 메커니즘
JP5913560B2 (ja) 低密度パリティチェック符号を使用する符号化および復号技法
US20120054586A1 (en) Reconfigurable bch decoder
US10291258B2 (en) Error correcting code for correcting single symbol errors and detecting double bit errors
US8332731B1 (en) Error-correcting code and process for fast read-error correction
CN114389752A (zh) 循环冗余校验码生成方法、装置、设备、介质和程序产品
US10236915B2 (en) Variable T BCH encoding
US10193574B1 (en) Efficient syndrome calculation in processing a GLDPC code
US9281844B2 (en) Configurable and low power encoder for cyclic error correction codes
KR101791637B1 (ko) 디코더 및 이를 포함하는 메모리 컨트롤러
US10236913B2 (en) Error checking and correcting decoder
WO2016181978A1 (ja) 行列作用装置、行列作用方法、およびプログラム
KR101619049B1 (ko) 병렬 bch 디코더
US20170288700A1 (en) Bch decorder in which folded multiplier is equipped
JP2023045450A (ja) シンドローム計算回路、誤り訂正回路およびメモリシステム
US10171109B2 (en) Fast encoding method and device for Reed-Solomon codes with a small number of redundancies
US10389387B2 (en) Coding device and coding method for a DVB-like LDPC code and a LDPC code in an ETRI format
Subbiah et al. Fast BCH syndrome generator using parallel polynomial division algorithm for GPGPUs
US20230104186A1 (en) Verifying data integrity in a receiver
US8775893B2 (en) Variable parity encoder
KR20120064377A (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
US11438013B2 (en) Low-power error correction code computation in GF (2R)
US8381080B2 (en) Reducing a degree of a polynomial in a polynomial division calculation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant