KR20190003315A - 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 - Google Patents

일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 Download PDF

Info

Publication number
KR20190003315A
KR20190003315A KR1020180017172A KR20180017172A KR20190003315A KR 20190003315 A KR20190003315 A KR 20190003315A KR 1020180017172 A KR1020180017172 A KR 1020180017172A KR 20180017172 A KR20180017172 A KR 20180017172A KR 20190003315 A KR20190003315 A KR 20190003315A
Authority
KR
South Korea
Prior art keywords
rti
bch
stage
codeword
matrix
Prior art date
Application number
KR1020180017172A
Other languages
English (en)
Other versions
KR102519667B1 (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 KR20190003315A publication Critical patent/KR20190003315A/ko
Application granted granted Critical
Publication of KR102519667B1 publication Critical patent/KR102519667B1/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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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
    • 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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • 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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product 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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • 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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/617Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials
    • 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

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명에 따른, N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드워드(BCH codeword)로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하는 방법은, 길이 m 비트의 Δt 신드롬들을 포함하는 필드 GF(2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터(
Figure pat00292
)를 수신하는 단계- 여기서, 상기 신드롬 벡터(
Figure pat00293
)는 Δt 리드-솔로몬(RS) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬임-; 및 상기
Figure pat00294
를 행렬 U의 우측 부분 행렬
Figure pat00295
(submatrix)에 의해 곱하는 단계-상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 새로운 이진 BCH 코드 워드는
Figure pat00296
임-를 포함한다.

Description

일반화된 텐서곱(GTP) 코드의 효율적인 인코딩 방법 및 그 장치{ENCODING METHOD OF EFFICIENT GENERALIZED TENSOR PRODUCT CODES, AND APPARATUS THERE-OF}
본 발명의 개념에 따른 실시 예는 오류 정정 코드들(error correcting codes(ECC))을 생성하는 방법에 관한 것이다.
코딩 이론에서, BCH 코드들(bose-chaudhuri-hocquenghem(BCH) codes)은 유한체들(finite fields)을 사용하여 구성된 순환 오류 정정 코드들(cyclic error-correcting codes (ECCs))의 클래스를 형성한다. BCH 코드들은 발명가 Raj Bose, D. K. Ray-Chaudhuri 와 Alexis Hocquenghem의 이름을 따서 명명되었다. BCH 코드들은 다음과 같이 정의할 수 있다. GF(q)는 유한 필드이고, q는 소수력(prime power)이고, 2≤d≤n, gcd(n, q) = 1, 및 m은 q 모듈로 n의 차수(multiplicative order)가 되도록 양의 정수 m, n, d, c를 선택한다. 또한,
Figure pat00001
를 GF(qm)에서 n 번째 원시 단위 근(primitive nth root of unity)으로 하고 mi(x)를 모든 i에 대해 ai의 GF(q)에 대한 최소 다항식(minimal polynomial)이라 하자. BCH 코드의 생성 다항식(generator polynomial)은 최소 공배수 g(x) = lcm(mc(x), ... , mc+d-2(x))이다.
BCH 코드는 코드 설계 중에 코드로 수정할 수 있는 심볼 오류들(symbol errors) 의 수를 정밀하게 제어할 수 있다. 특히, 다중 비트 오류를 정정할 수 있는 2진 BCH 코드를 설계하는 것이 가능하다. BCH 코드는 또한 신드롬 디코딩(syndrome decoding)이라고 알려진 대수적(algebraic) 방법을 사용하여 쉽게 디코딩될 수 있다. 이렇게 하면 소형의 저전력 전자 하드웨어를 사용하여 이러한 코드들에 대한 디코더 설계를 단순화할 수 있다.
수신된 코드 워드(codeword) y = x + e (x는 송신된 코드 워드, e는 에러 패턴)의 신드롬은 패리티 행렬(parity matrix) H의 관점에서 정의된다. 선형(linear) 코드 C의 패리티 검사 행렬(parity check matrix)은 이중 코드(dual code)
Figure pat00002
의 생성 행렬(generator matrix)이다. 이는 코드 워드 c가 C에 포함된다는 것과 행렬 - 벡터 곱(matrix-vector product) Hc = 0이 필요 충분 조건(if and only if(iff))임을 의미한다. 그러면 수신된 워드 y = x + e 의 신드롬은 S = Hy = H(x + e) = Hx + He = 0 + He = He 로 정의된다. 신드롬은 메시지 다항식이 제거되고, 길이 S, 추정된 오류 수 L이 코드 워드 x 자체의 길이보다 훨씬 작다는 점에서 유용하다.
예시적인 인코딩/디코딩이 도 1에 도시된다. 도 1에서, 약한 BCH 코드(weak BCH code)가
Figure pat00003
에 의해 주어지고, kw 정보 비트는
Figure pat00004
이고 약한 BCH의 패리티 검사 행렬은
Figure pat00005
이다.
더 강한 BCH
Figure pat00006
는 다음과 같은 수학식 1에 의해 주어지는 패리티 검사 행렬
Figure pat00007
을 가진다.
Figure pat00008
여기서, 행렬
Figure pat00009
의 행(row) 수는 (n-ks) - (n-kw) = kw-ks 이고, 첨자 s, w, d는 각각 강함(strong), 약함(weak) 및 델타(delta)를 나타낸다. 간략하게, 정보 데이터
Figure pat00010
는 약한 코드
Figure pat00011
로 인코딩 및 디코딩될 수 있고, 이하에서 설명되는 바와 같이, 강한 코드
Figure pat00012
을 사용하여 인코딩 및 디코딩될 수 있다.
정보 데이터
Figure pat00013
는 도 2에 도시된 바와 같이 코드 워드(
Figure pat00014
)를 얻기 위해 BCH 코드(
Figure pat00015
)를 사용하여 인코딩될 수 있다. 강한 코드의 오버헤드(overhead)는 도 2에 도시된 바와 같이
Figure pat00016
에 의해 주어진다. 이 추가 오버헤드는 다른 페이지에 있을 수 있다. 일 실시 예에 따른 강한 코드에 대해 저장된 오버 헤드는 종래의 BCH 오버 헤드가 아니라 대신에
Figure pat00017
임을 유의한다. 그러나, 전체 코드는 아래에 기술된 바와 같이 BCH 코드와 동일하다. 이 오버 헤드는 추가 ECC로 보호되므로
Figure pat00018
는 오류가 발생하지 않는다.
오류를 가진 Cw 의 읽기(read)는 다음의 수학식과 같다.
Figure pat00019
y로부터 약한 BCH의 신드롬을 계산할 수 있다.
Figure pat00020
정보(information)가 신드롬으로부터 디코딩될 수 있으면, 디코딩은 완료되고, 그렇지 않으면, 다음과 같이 계산된다.
Figure pat00021
Figure pat00022
은 보호된 형식으로 저장되므로, 따라서
Figure pat00023
Figure pat00024
가 모두 존재하고, 이에 따라, 수학식 1로부터 아래 수학식이 도출된다.
Figure pat00025
따라서, 패리티 검사 행렬 Hs를 갖는 더 강한 BCH Cs 를 사용하여 디코딩이 수행될 수 있다.
약한 BCH가 에러 용량(error capability) tw를 갖고 강한 BCH가 에러 용량 ts를 갖는다고 가정한다. 그런 다음 약한 코드는 신드롬
Figure pat00026
를 사용하고 강한 BCH는 약한 BCH 의 신드롬
Figure pat00027
과 추가적인 신드롬
Figure pat00028
를 필요로 한다. Berlekamp-Massey (BM) 디코더는 신드롬들 즉, 하나의 신드롬 후에 다른 신드롬에 대해 순차적으로 작동한다. 따라서, 약한 BCH가 실패하면, 강한 BCH의 디코딩 절차는 동일한 지점으로부터 재개될 수 있다. 시작부터 강한 BCH의 디코딩을 시작할 필요가 없으므로 더 효율적이다. 대조적으로, 유클리드 디코딩(Euclidian decoding)과 같은 다른 디코딩 알고리즘은 모든 신드롬에서 동시에 작동한다. 따라서, 약한 BCH 및 강한 BCH 코드의 디코딩은 개별적으로 수행되고, 결과적으로 더 많은 시간이 소요될 것이다.
오류 정정 코드를 구성하데 있어서 또 다른 관심은 단순하게 디코딩할 수 있고 효율적으로 만드는 방법이다. BCH (Bose-Chaudhuri-Hocquenguem) 코드는 효율적이지만 단순하게 디코딩할 수 있는(simply decodable) 코드는 아니다.
반면, 다수 논리 디코딩 가능 코드(majority-logic decodable codes)는 단순하게 디코딩 가능하지만 일반적으로 효율적이지 않다.
일반화된 텐서 곱(GTP: Generalized tensor product) 코드로 알려진 좀 더 일반적인 클래스의 에러 정정 코드는, 다양한 필드에서 다수의 코드를 더 짧은 이진 코드(binary codes)와 결합하여 형성될 수 있는데, 동등하거나 우수한 품질의 다른 코드용 디코더 보다 훨씬 더 간단한 바운드 거리 디코딩(bounded distance decoding)용 디코더를 갖는다.
GTP 코드는 Imai, et al., "Generalized Tensor Product Codes", IEEE Transactions on Information Theory, Vol. IT-27, No. 2, March 1981, pgs. 181 - 187에 기재되어 있으며, 이의 내용은 그 전체가 참고 문헌으로 여기에 포함되며, 관련 내용은 다음과 같이 요약된다.
GTP 코드를 구성하려면 먼저 행렬 Hi, i = 1,2, ..., μ 및 H i , i = 1,2, ..., μ를 정의한다. Hi는 (r1 + r2+ ... +ri) × n 행렬이 되도록 GF(2)에 대한 ri × n 행렬이다.
Figure pat00029
는 최소 거리(minimum distance) di의 이진 (n, n-r1 - r2 - ...- ri) 코드의 검사 행렬이다. H i 는 최소 거리 δi
Figure pat00030
에 대한 (v, v- λi) 코드의 검사 행렬인
Figure pat00031
에 대한 λi × v 행렬이다.
Figure pat00032
Figure pat00033
GF(
Figure pat00034
) 를 H i , k = 1, 2, ..., i, l = 1, 2, ..., v의 (k, l) 번째 요소라고 하자. GF(2)에 대한
Figure pat00035
의 고정된 기저(basis)에 따른
Figure pat00036
에 의한 곱셈을 나타내는 행렬을
Figure pat00037
로 표시하면 행렬들 H i 와 Hi 의 텐서 곱(tensor product)은 다음과 같이 주어진다.
Figure pat00038
이 식에서
Figure pat00039
는 GF(2)로부터 요소의 ri × n 행렬이므로
Figure pat00040
는 GF(2)의 요소의 ri λi × n v 행렬이다.
GTP 코드는 다음과 같은 형태의 검사 행렬을 갖는 선형 코드로 정의된다.
Figure pat00041
GTP 코드의 코드 길이 N과 검사 비트 수 N-K는 다음과 같다.
N = nv
N - K =
Figure pat00042
. 후술되는 바와 같이 배경기술에서의 GTP 표현 및 본 실시 예에 따른 GTP 표현은 수학적으로 동일하고 동일한 코드 구조를 유도한다는 것을 알 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 이진의 일반화된 텐서곱(binary Generalized Tensor Product) 코드워드를 생성하는 방법 및 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 인코딩 방법은 단일 클록 완전 병렬 곱셈(single clock full parallel multiplication) 대신 다중 클럭 부분 병렬 곱셈(multi clock partial parallel multiplications)이 뒤 따르는 더 작은 행렬 곱셈을 사용한다. 또한, 일 실시 예에 따른 방법은 다항식 표현을 사용하고 BCH 코드 특성을 이용함으로써 단일 이진 행렬 곱셈(single binary matrix multiplication)을 몇몇의 작은 행렬 곱셈들로 분리한다.
본 발명의 실시 예에 따른, N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드워드(BCH codeword)로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하기 위한 컴퓨터로 구현되는 방법에 있어서, 상기 컴퓨터에 의해 실행되는 방법은, 길이 m 비트의 Δt 신드롬들을 포함하는 필드 GF(2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터(
Figure pat00043
)를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드 워드(
Figure pat00044
)가 부가될 스테이지 n BCH 코드 워드의 에러 정정 능력이고, 상기 신드롬 벡터(
Figure pat00045
)는 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼(information symbols)은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬이며, l은
Figure pat00046
가 부가될 BCH 코드 워드의 인덱스임-; 및 상기
Figure pat00047
를 행렬 U의 우측 부분 행렬
Figure pat00048
(submatrix)에 의해 곱하는 단계를 포함한다.
상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬
Figure pat00049
Figure pat00050
를 가지며, 상기 새로운 이진 BCH 코드 워드는
Figure pat00051
이다.
실시예에 따라, 상기
Figure pat00052
를 행렬 U의 우측 부분 행렬
Figure pat00053
(submatrix)에 의해 곱하는 단계는, 단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터
Figure pat00054
의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및 새로운 이진 BCH 코드 워드
Figure pat00055
를 나타내는 단일 출력으로 상기 구성 요소 곱을 다중화하는 단계를 포함하며, 상기 부분 행렬
Figure pat00056
는 새로운 이진 BCH 코드 워드
Figure pat00057
의 신드롬 벡터
Figure pat00058
를 수신하기 전에 계산될 수 있다.
실시예에 따라, 상기 신드롬 벡터
Figure pat00059
는 분리된
Figure pat00060
행렬들로 역 다중화(demultiplexing)될 수 있다.
실시예에 따라, 상기
Figure pat00061
를 행렬 U의 우측 부분 행렬
Figure pat00062
(submatrix)에 의해 곱하는 단계는, 단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수에 의해, 감소된 서브 매트릭스
Figure pat00063
의 성분으로 상기 신드롬 벡터
Figure pat00064
의 각 성분을 곱하여, 성분 곱(component product)을 산출하는 단계-여기서, 상기 감소된 서브 매트릭스
Figure pat00065
Figure pat00066
로 정의되고, 부분 행렬들
Figure pat00067
Figure pat00068
의 칼럼들(columns)은 다항식으로 표현되고,
Figure pat00069
Figure pat00070
로 나눈 칼럼인
Figure pat00071
의 각 칼럼은, 새로운 이진 BCH 코드 워드
Figure pat00072
의 신드롬 벡터
Figure pat00073
를 수신하기 전에 계산됨-; 상기 성분 곱(component product)을 임시 출력으로 멀티플렉싱하는 단계; 및 새로운 이진 BCH 코드 워드
Figure pat00074
를 나타내는 단일 출력을 생성하기 위해 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계-여기서, g0(x)는 다항식으로 표현된 부분 행렬
Figure pat00075
의 모든 칼럼의 공통 승수(common multiplier)이고, 새로운 이진 BCH 코드 워드
Figure pat00076
의 신드롬 벡터를 수신하기 전에 계산됨 -를 포함할 수 있다.
실시예에 따라, 상기 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계는, 다수의 클록 사이클에 걸쳐 수행될 수 있다.
실시예에 따라, 상기
Figure pat00077
를 행렬 U의 우측 부분 행렬
Figure pat00078
(submatrix)에 의해 곱하는 단계는, 상기 m 개의 다항식들
Figure pat00079
을 칼럼(column)으로서 연결(concatenation)하여 형성된 행렬 Hj 로 상기 신드롬 벡터
Figure pat00080
를 곱함으로써 다항식 hj(x) 를 계산하는 단계- 여기서, 다항식
Figure pat00081
이고,
Figure pat00082
이며,
Figure pat00083
는 t1의 정정 능력을 갖는 BCH 코드 C1의 i 번째 최소 다항식이며, 새로운 이진 BCH 코드 워드
Figure pat00084
의 신드롬 벡터
Figure pat00085
를 수신하기 전에 계산됨-; hj(x)에 Mj(x) 를 곱하고, j = 0 내지 Δt-1에 대해 합산하는 단계; 상기 곱 hj(x)×Mj(x)의 합을 임시 출력으로 멀티플렉싱하는 단계; 및 새로운 이진 BCH 코드 워드
Figure pat00086
를 나타내는 단일 출력을 생성하기 위해 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계-여기서, g0(x)는 다항식으로 표현된 부분 행렬
Figure pat00087
의 모든 칼럼의 공통 승수이고, 새로운 이진 BCH 코드 워드
Figure pat00088
의 신드롬 벡터를 수신하기 전에 계산됨-를 포함할 수 있다.
본 발명의 실시 예에 따른, N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드 워드로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하는 방법 단계들을 수행하기 위한 명령들의 프로그램을 실행하도록 구성된 컴퓨터 프로세서에 있어서, 상기 방법은, 길이 m 비트의 Δt 신드롬을 포함하는 필드 GF (2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터(
Figure pat00089
)를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드 워드 (
Figure pat00090
)가 부가될 스테이지 n BCH 코드 워드의 에러 정정 능력이고, 상기 신드롬 벡터(
Figure pat00091
)는 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼(information symbols)은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬이며, l은
Figure pat00092
가 부가될 BCH 코드 워드의 인덱스임-; 및 상기
Figure pat00093
를 행렬 U의 우측 부분 행렬
Figure pat00094
(submatrix)에 의해 곱하는 단계를 포함한다.
상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬
Figure pat00095
Figure pat00096
를 가지며, 상기 새로운 이진 BCH 코드 워드는
Figure pat00097
이다.
실시예에 따라, 상기
Figure pat00098
를 행렬 U의 우측 부분 행렬
Figure pat00099
(submatrix)에 의해 곱하는 단계는, 단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터
Figure pat00100
의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및 새로운 이진 BCH 코드 워드
Figure pat00101
를 나타내는 단일 출력으로 상기 구성 요소 곱을 다중화하는 단계를 포함하며, 상기 부분 행렬
Figure pat00102
는 새로운 이진 BCH 코드 워드
Figure pat00103
의 신드롬 벡터
Figure pat00104
를 수신하기 전에 계산될 수 있다.
실시예에 따라, 상기 신드롬 벡터
Figure pat00105
는 분리된
Figure pat00106
행렬들로 역 다중화될 수 있다.
본 발명의 실시 예에 따르면, 단일 클록 완전 병렬 곱셈(single clock fullparallel multiplication) 대신 다중 클럭 부분 병렬 곱셈(multi clock partial parallel multiplications)이 뒤 따르는 더 작은 행렬 곱셈을 사용하고 또한, 다항식 표현을 사용하고 BCH 코드 특성을 이용함으로써 단일 이진 행렬 곱셈(single binary matrix multiplication)을 몇몇의 작은 행렬 곱셈들로 분리할 수 있다.
이에 따라, 계산을 복잡성을 줄임으로써, 하드웨어 면적(게이트 수) 및 전력을 줄일 수 있는 효과가 있다.
도 1은 본 발명의 실시 예에 따른 예시적인 인코딩 / 디코딩을 나타낸다.
도 2는 본 발명의 실시 예들에 따라 코드워드(codeword)를 얻기 위해 BCH 코드를 사용하여 인코딩된 정보 데이터를 나타낸다.
도 3은 본 발명의 실시 예들에 따른 예시적인 GTP 워드 및 델타 신드롬 (DS: delta syndromes) 테이블들을 도시한다.
도 4는 본 발명의 실시 예들에 따른, y_vec 계산의 예시적인 하드웨어 구현을 도시한다.
도 5는 본 발명의 실시 예들에 따른, 2 개의 단계들(phases)로 분할된 y_vec 계산의 예시적인 하드웨어 구현을 도시한다.
도 6은 본 발명의 실시 예들에 따른, 3 개의 단계들(phases)로 분할된 y_vec 계산의 예시적인 하드웨어 구현 예를 도시한다.
도 7은 본 발명의 일 실시 예에 따른, 일반화 된 텐서 곱 코드(generalized tensor product codes)를 효율적으로 인코딩하기 위한 시스템의 블록도이다.
본 발명의 실시 예들은 다양한 수정들 및 대안적인 형태들에 영향을 받기 쉽지만, 그 특정 실시 예들은 도면들에서 예로서 도시되고 여기에서 상세히 설명될 것이다. 그러나, 본 발명을 개시된 특정 형태로 제한하고자 하는 의도는 없지만 반대로, 본 발명은 본 발명의 사상 및 범위 내에 있는 모든 변형, 등가물 및 대안을 포함하는 것으로 이해되어야 한다.
GTP 코드를 인코딩하기 위한 본 발명의 일 실시 예에 따른 스킴은 몇몇 상이한 정정 성능(correction capabilities)을 갖는 여러 BCH 코드 워드들("프레임")을 본 명세서에서 GTP 코드 워드로 지칭되는 단일 코드 워드로 연결하고, 프레임들은 리드 솔로몬 코드 워드(Reed Solomon code words)를 사용하여 연결되어 상호 정정 성능을 달성한다. 상술한 BCH 코드 워드들 사이의 연결을 형성하기 위해, 각 프레임, 즉 BCH 단일 코드 워드에 부가된 이진 시퀀스(binary sequence)는 본 명세서에서 y_vec로 지칭된다. GF(2)에서 이진 시퀀스는 각 프레임에 대해 XOR 될 수 있다.
유한체 F에 대한 길이 n과 차원(dimension) k의 선형 코드 C에 대해
Figure pat00107
가 C의 패리티 검사 행렬이고
Figure pat00108
이 어떤 벡터인 경우, 신드롬 H에 관한 y의 신드롬은
Figure pat00109
로 정의된다.
길이가
Figure pat00110
이고 설계된(designed) 보정 반경(correction radius)이 t인 원시 이진(primitive binary) BCH 코드를 BCH(m, t)라 한다. C가 BCH(m, t) 또는 단축된(shortened) BCH(m, t)이면 일반적으로 n-k = mt 이므로, 신드롬은 일반적으로 mt 이다. 사실, BCH 코드의 경우 매우 특정한 패리티 검사 행렬에 대한 신드롬을 계산하는 것이 유용하다.
Figure pat00111
를 원시 요소(primitive element)라 하자. C를 위와 같이하고, n을 C의 길이라고 하자. 벡터
Figure pat00112
에 대해,
Figure pat00113
는 연관된 다항식(associated polynomial)이라 하자.
홀수
Figure pat00114
에 대해
Figure pat00115
를 정의한다. y의 신드롬은
Figure pat00116
로 정의된다. S = 0 인 경우에만 y∈C 임에 유의한다.
두 개의 보정 반경
Figure pat00117
이 있다고 가정한다. 그러면 임의의 y에 대해서,
Figure pat00118
Figure pat00119
Figure pat00120
Figure pat00121
의 첫 번째 t1 엔트리로 나타난다.
Figure pat00122
의 나머지 t2 - t1 엔트리는 델타 신드롬 벡터(delta syndrome vector)라 지칭된다. 델타 신드롬 벡터의 각 엔트리는 (단일) 델타 신드롬으로 지칭된다.
Figure pat00123
일 때,
Figure pat00124
의 첫 번째 t1 엔트리는 0이다. 또한 GF(2m)의 각 원소(element)는, 특히 신드롬의 각 엔트리에서, GF(2)에 대한 GF(2m)의 기저(basis)가 고정되면 m 비트 이진 벡터로 나타낼 수 있다.
각각의 GTP 프레임은 BCH 프레임이며, 각각은 상이한 정정 능력(correction capability)을 가질 수 있다. 실시 예에 따르면, ti는 스테이지 번호 i에 속하는 BCH 프레임의 정정 능력이며, 여기서 스테이지는 동일한 정정 능력을 갖는 연속적인 BCH 프레임의 수를 정의한다.
본 발명의 일 실시예에 따른 GTP 프로젝티드 인코딩(GTP projected encoding) 방식은 본 명세서에서 프로젝티드 데이터(projected data)로도 지칭되는 추가 데이터가, 정보 및 패리티 데이터와 함께 BCH 프레임 내에서 인코딩될 것을 요구할 수 있다. 이는 델타 신드롬 벡터에 대해 이진 벡터(여기서는 'y_vec'라고 함)를 계산하고 이를 해당 BCH 프레임과 XOR(배타적 논리합)함으로써 수행된다.
y_vec 계산 y= Uㆍs 에 사용되는 사소한 행렬(trivial matrices)은 크고, 따라서, 큰 하드웨어 영역이 필요하다. 여기서 U는 아래에 정의된다. 각각의 내부 't'는 더 많은 코드 레이트와 코딩 스테이지를 필요로 하는 자체 행렬을 필요로 하며, 이는 인코더의 복잡성을 증가시킨다.
실시예들에 따르면, 추가된 y_vec는 3 개의 조건들을 충족시킨다: (1) 그것은 제 1 스테이지의 BCH 코드 내의 BCH 코드 워드이고; (2) y_vec의 델타 신드롬의 계산은 하위 스테이지 프레임들에서 계산된 리드 - 솔로몬 (RS) 코드 워드의 패리티 심볼을 산출하고; (3) y_vec는 BCH 프레임의 체계적인 구조를 유지하기 위해 첫 번째 ki 비트에서 모두 0이며, ki는 i 번째 BCH 프레임의 정보 비트 수이다.
도 3은 본 발명의 실시 예들에 따른 예시적인 GTP 워드 및 델타 신드롬 (DS: delta syndromes) 테이블들을 도시한다. 특히, 왼쪽 테이블은 4 스테이지에 걸쳐 11 개의 프레임을 가지는 GTP 코드 워드의 예를 나타낸다. 테이블의 최상부로부터 시작하여, 처음 3 개의 프레임은 스테이지 0에 속하므로, 각 프레임은 t0 비트의 정정 능력을 갖는 n 비트 BCH 코드 워드이다. 이 스테이지에서 각 BCH 코드워드는 K0 정보 비트(information bits)(11) 및 L0 = mt0 패리티 비트(parity bits)(12)를 포함한다. 더 높은 단계의 경우, 정정 능력이 높아지므로 프레임 당 패리티 비트가 많고 정보 비트 수가 적다. 따라서, 테이블에 도시된 바와 같이, 스테이지 1은 K1 정보 비트 및 L1 패리티 비트를 가지며, 스테이지 2는 K2 정보 비트 및 L2 패리티 비트를 가지며, 스테이지 3은 K3 정보 비트 및 L3 패리티 비트를 갖는다. K0> K1> K2> K3, L0 <L1 <L2 <L3이며 i = 0에서 3까지에 대해서, Ki + Li = n이다.
오른쪽 테이블은 11 개의 프레임에 대한 델타 신드롬(DS) 테이블이다. 이 예에서 각 프레임에 대해 4 개의 델타 신드롬 ΔSji가 있다. 여기서 j는 프레임 번호이고 i는 델타 신드롬 번호이다(인덱스는 0부터 시작함). DS들(13)은 프레임에 대해 계산되고, DS들(14)는 리드 솔로몬(RS: Reed Solomon) 인코딩에 의해 계산된 "강제(forced)" DS들이다. 예를 들어, 첫 번째 DS의 경우 처음 3 개 프레임에서 계산된 3 개의 DS가 있으며, 이들은 8 개의 패리티 심볼 (다음 프레임에 대한 강제 DS로 사용됨)을 가진 RS 코드의 정보로 사용된다.
실시예에 따르면, 상술한 바와 같이, 프레임 당 y_vec 계산기 모듈로의 입력은 복수의 DS들이다. 일 실시 예에 따른 y_vec는 그것이 부가된 프레임을 t0 정정 능력을 갖는 코드 C0의 코드 워드로 하고 그 DS가 RS 코드의 대응하는 패리티 심볼에 부합하도록 할 수 있다.
단지 2 개의 스테이지들, 즉, 보정 능력 t0을 갖는 코드 C0의 프레임들 및 보정 능력 t1을 갖는 코드 C1의 프레임들이 있는 간단한 구조에 대해, Δt1 = t1-t0 은 다음과 같을 수 있다.
[수학식 1]
Figure pat00125
여기서, H0의 행(row) 수는
Figure pat00126
,
Figure pat00127
의 행 수는
Figure pat00128
,
Figure pat00129
는 강제 델타 신드롬(forced delta syndromes)의 벡터, 즉 RS 패리티 심볼이며, 각
Figure pat00130
는 m 비트이다.
Figure pat00131
는 C1의 코드 워드이므로 전체 H 행렬에 대해 제로(0) 신드롬을 가지며
Figure pat00132
는 C0에만 있으므로 H0에 대해 0 신드롬을 갖지만
Figure pat00133
에 대해서는 0이 아닌(non-zero) 델타 신드롬을 갖는다. 또한,
Figure pat00134
Figure pat00135
에 추가해도
Figure pat00136
의 체계적인 특성(systematic nature)은 변하지 않는다. 즉,
Figure pat00137
는 마지막
Figure pat00138
비트들을 제외하고 모두 0:
Figure pat00139
이어야 한다.
본 발명의 실시 예들은 위의 공식을 따르는
Figure pat00140
를 찾을 수 있다.
Figure pat00141
를 계산하는 방법은 다음을 충족시키는 행렬 U를 찾을 수 있다.
[수학식 2]
Figure pat00142
일 실시예에 따르면, 행렬 U는 다음과 같이 발견될 수 있다. 첫째, 일 실시 예에 따른 코드는 주기적(cyclic)이기 때문에, 다음과 같은 행렬 U가 존재한다.
[수학식 3]
Figure pat00143
여기서, I는 크기
Figure pat00144
의 항등 행렬(identity matrix)이고, A는 크기
Figure pat00145
의 행렬이고, 기호 ";" 는 연접(concatenation)을 나타낸다.
수학식 1의 왼쪽과 오른쪽 모두에 U를 곱하여 다음 식을 생성할 수 있다.
Figure pat00146
.
따라서,
Figure pat00147
, 및
Figure pat00148
이다.
A는 단지 0을 곱하므로, 따라서 실제 값은 중요하지 않으며, 이 방정식은 다음과 같이 된다.
[수학식 4]
Figure pat00149
이는 원하는 결과이다. 수학식 3으로 돌아가서, A가 부적합하다는 것을 알면 방정식은 다음과 같이 공식화될 수 있다.
Figure pat00150
여기서,
Figure pat00151
은 H1의 가장 오른쪽의
Figure pat00152
부분 행렬(submatrix)이다. 따라서, 실시 예들에 따르면, U는 행렬
Figure pat00153
을 반전시킴으로써 발견될 수 있다.
이 때 행렬 U는
Figure pat00154
이진 행렬(binary matrix)이다. 실시 예들에 따르면, U는 오프라인으로 계산될 수 있고, XOR 게이트들의 네트워크에 의해 하드웨어로 구현될 수 있다. 즉, 벡터
Figure pat00155
의 각 비트는
Figure pat00156
의 몇 비트를 XOR함으로써 생성될 수 있다. 그러나 U는 매우 클 수 있다.
수학식 2를 다시 살펴보면, U가 mt0 개의 0을 곱하고 있으므로, 완전한 U 행렬을 유지할 필요가 없고, U의 오른쪽인 크기
Figure pat00157
의 행렬
Figure pat00158
만을 유지하는 것으로도 충분하다는 것을 알 수 있다. 하드웨어(HW) 관점에서 보았을 때 이것은 복잡성을 줄이거나 명시적으로 하드웨어 면적(게이트 수) 및 전력을 줄이는 것이다.
[수학식 5]
Figure pat00159
도 4는 y_vec 계산
Figure pat00160
의 하드웨어 구현 예를 도시한다. 예를 들어, 도 3에서 첫 번째 y_vec는 네 번째 프레임에 대해 계산되고,
Figure pat00161
이다. 도 4는 y_vec 계산 블록의 개략도이다.
입력은 현재 스테이지에 따라 디멀티플렉서(22)에 의해 상이한 곱셈 모듈(23a, ..., 23n)로 디멀티플렉싱되는 S_vec로 표시된 강제 DS(forced DS)이며, 곱셈 모듈로부터의 출력은 멀티플렉서(24)에 의해 단일 출력으로 다시 멀티플렉싱된다. S_vec는 크기와 데이터에 따라 프레임마다 다르다. 각각의 곱셈 모듈(23a, ..., 23n)은 행렬 곱셈의 하나의 성분을 실현하는 논리 함수(logic function)이다.
실시예들에 따르면, 수학식 5의 복잡성을 더 줄일 수 있다. 따라서, 수학식 4,
Figure pat00162
로부터, 다음 수학식도 유효하다는 것을 알 수 있다.
Figure pat00163
H1은 신드롬 행렬이므로 U의 (제로 패딩된) 열(zero-padded columns)을 코드 C1의 코드 워드로 "확인(checking)"하는 것으로 볼 수 있다. 다항식의 계수로서 U의 단일 열을 살펴보면, 그러한 다항식은 이 코드를 생성하는 모든 최소 다항식의 배수인 BCH 코드 C1의 코드 워드가 된다. 그러나 곱셈
Figure pat00164
는 0 행렬이 아니므로 (각 결과 열(result column)에 '1'이 하나씩 있음), U의 어떠한 열(column)도 C1의 코드 워드가 아니다. 그럼에도 불구하고, H1의 모든 m 행(row)은 다항식이 특정 최소 다항식으로 나눌 수 있는지를 검사하기 때문에, 다항식으로 취급되는 U의 모든 열은 단일 최소 다항식을 제외한 코드를 생성하는 모든 최소 다항식으로 나눌 수 있음을 의미한다.
U에 의한
Figure pat00165
의 곱셈을 볼 때, 결과는 다음과 같은 형태의 행렬이라는 점을 제외하고는 동일한 효과가 있다.
Figure pat00166
제로 행렬은 크기가
Figure pat00167
이며, 이는 다항식으로 취급되는
Figure pat00168
의 모든 열이 t0까지의 모든 최소 다항식의 배수(multiples)이고, 하나를 제외한 모든 상위 다항식의 배수임을 의미한다. 실시예에 따르면, t0까지의 모든 최소 다항식의 승수(multiplier)는
Figure pat00169
로 지칭될 것이고, 이것은
Figure pat00170
의 모든 열의 공통 승수이다.
수학식 5로부터, 다음 수학식이 도출된다.
Figure pat00171
여기서,
Figure pat00172
Figure pat00173
의 k 번째 열 또는 다음과 같은 다항식 표현이다.
[수학식 6]
Figure pat00174
여기서,
Figure pat00175
는 다음식과 같이 표현되고,
Figure pat00176
Figure pat00177
로 나눌 수 있다.
[수학식 7]
Figure pat00178
따라서, 실시예들에 따르면, 행렬
Figure pat00179
Figure pat00180
는 크기
Figure pat00181
의 새로운 행렬 U'로 대체될 수 있으며, 이 행렬의 행들(columns)은 수학식 7을 사용하여 오프라인으로 계산될 수 있다. 이 행렬은 U'에 비하여 복잡성이 훨씬 줄어든다.
Figure pat00182
를 계산하기 위해, 다른 곱셈, 즉 다항식 계수 컨볼루션(polynomial coefficients convolution)이 곱셈 후에 수행된다:
Figure pat00183
부가적인 컨볼루션은 다중 사이클 구현에 의해 매우 낮은 복잡도로 수행될 수 있으며, 따라서 추가된 복잡성은 무시할 수 있다.
따라서, 실시 예들에 따르면, 결과
Figure pat00184
는 다음의 2 단계로 달성될 수 있다: (1)
Figure pat00185
; 및 (2)
Figure pat00186
. 이 결과는 다음과 같은 특성을 갖는다: (1) U' 행렬은 원래의 U 행렬보다 상당히 작다. (2)
Figure pat00187
는 모든 U' 행렬에 공통인 다항식이다. (3)
Figure pat00188
에 의한 곱셈 또한 행렬, 즉 XOR 게이트 네트워크로서 구현될 수 있다. 더욱이,
Figure pat00189
에 의한 곱셈은 다중 사이클 포맷으로 구현될 수 있으며, 이는 다중 클락 주기(multipleclock periods)에 걸쳐 작은 HW의 재사용을 가능하게 하여 매트릭스 크기를 더욱 감소시킨다.
도 5는 전술 한 바와 같이 2 단계(phase)으로 분할된 y_vec 계산의 실시 예의 예시적인 하드웨어 구현을 도시한다. 도 5의 하드웨어 구성은, 도 4의 하드웨어 구성과 실질적으로 유사하다. 따라서, 구성 간의 차이점만을 설명한다. 디멀티플렉서(24)의 출력은 tmp이고, 일 실시예에 따른 컨볼루션
Figure pat00190
는 블록(35)에 의해 구현된다. 일 실시예에 따른 컨볼루션은 유한 임펄스 응답(FIR: finite impulse response) 필터이며, 따라서, 단일 클럭 사이클 대신에 상태(메모리) 레지스터를 사용하여 수 클록 사이클(several clock cycles)에서 수행될 수 있다. 이는 더 작은 논리 함수를 사용할 수 있게 한다.
본 발명의 실시예들은
Figure pat00191
의 0 부분만을 이용한다. 그러나, 상술한 바와 같이, 결과는
Figure pat00192
형식이므로 결과 열들(result columns)의 더 일반적인 특성이 있다: m 열의 모든 배치(batch)는, 위와 같이,
Figure pat00193
의 승수이지만 하나를 제외하고 다른 모든 최소 다항식의 승수이다.
실시예에 따르면, 이는 다음과 같이 수식화될 수 있다:
Figure pat00194
,
Figure pat00195
여기서,
Figure pat00196
Figure pat00197
로 정의되고, j 번째 델타 신드롬의 m 번째 비트는 다음과 같다.
Figure pat00198
Figure pat00199
는 i 번째 최소 다항식이며
Figure pat00200
이다. 앞에서와 같이 다항식
Figure pat00201
Figure pat00202
는 모두 오프라인으로 계산할 수 있다.
실시 예들에 따라,
Figure pat00203
행렬 Hj를, 열(columns)로서 m 개의 다항식
Figure pat00204
의 연접(연결, concatenation)로 정의함으로써, 다음과 같이 될 수 있다.
Figure pat00205
,
그리고, 실시 예에 따른 최종 공식이 얻어진다:
Figure pat00206
.
본 발명의 다른 실시 예에 따르면, 계산은 3 개의 단계로 분할된다:
1.
Figure pat00207
를 계산하기,
2.
Figure pat00208
로 곱하고 합산하기,
3.
Figure pat00209
로 곱하기.
제 1 섹션에서, 각각의 델타 신드롬(delta syndrome)은 자신의 오프라인 계산된 행렬 Hj에 의해 곱해진다. 제 3 섹션은 도 5에 도시된 실시예에서 설명된 것과 동일하다. 다른 실시 예에 따른 제 2 섹션은 곱셈(multiplication) 및 합산(summation)을 결합한다. 이 스테이지에 참여하는 모든 델타 신드롬에 대해 각 하드웨어 단계에는 고유한 H 및 M 행렬이 필요하다.
즉, 스테이지 i와 j에서 DS1을 사용할 때 DS1에 대해 다른 하드웨어가 있다. 계수 벡터(coefficient vectors)에 의해 표현되는 2 개의 다항식의 곱셈은 다음과 같이 다중 사이클 연산으로 구현될 수 있다:
Figure pat00210
,
Figure pat00211
.
이진 다항식의 경우, xj 에 의한 곱셈은 j 만큼 왼쪽으로의 시프트(shift left)이므로, 2 개의 다항식의 곱셈은 하나의 다항식의 각 비트에 대응하는 시프트를 갖는 다른 다항식을 가산함으로써 구현될 수 있다. 따라서 첫 번째 사이클에서
Figure pat00212
Figure pat00213
(MSB)의 계수에
Figure pat00214
가 곱해지고, 두 번째 사이클에서
Figure pat00215
에 의한
Figure pat00216
Figure pat00217
계수의 곱셈에서 1 비트만큼 우측으로 시프트된 비트에 가산된다. 이와 같은 식으로,
Figure pat00218
의 결과를 얻는다.
j에 대한 합(sum)이 필요하기 때문에, 행렬 형식으로도 동일하게 수행할 수 있다. 즉, 모든 Mj를 열(columns)로 연결(concatenation)한 행렬 G를 정의하고, m 사이클 동안 각 사이클 i에서 G에 벡터
Figure pat00219
를 곱하고, 그것을 i 비트만큼 오른쪽으로 시프트된 결과에 더한다. 여기서,
Figure pat00220
Figure pat00221
의 xi의 계수로 정의된다.
도 6은 전술 한 바와 같이 3 단계로 분할 된 y_vec 계산의 일 실시 예의 하드웨어 구현 예를 도시한다. 그러나, 본 발명의 실시 예는 임의의 수의 단계를 포함할 수 있다. 도면에서 N은 스테이지 수, m은 GF(2m)에 대한 이진 BCH 코드이며 dtn = tn - t0 이다. 또한, 명확성을 위해, 좌측의 블록들만이 참조 번호를 갖는다.
이 도면은 G에 의한 곱셈이 m 사이클들에서 수행되는 하드웨어 구성을 보여주는데, 여기서 각 사이클에 대한 입력은 각 레지스터로부터의 1(one) 비트이고, 비트들은 사이클 번호에 따라 선택된다. 각 사이클에 대해 출력 비트는 이전 사이클과 관련된 하나의 시프트와 합산된다.
도면을 참조하면, 블록(41)은 dtN-1 신드롬 벡터의 각각의 구성(components)을 나타내며, 블록 (42)은 합산
Figure pat00222
을 나타내며, 그 출력은 레지스터들(43)에 저장되고, 블록들(44)은 m 개의 시프트들을 갖는 합산
Figure pat00223
을 나타내고, 전술한 바와 같이, 그 결과가 합산되어 레지스터(46)에 저장되고, 블록(47)은 멀티플렉서이고, 블록(48)은 전술한 바와 같이 멀티 사이클 동작에서 수행될 수 있는
Figure pat00224
에 의한 최종 곱셈을 나타낸다.
시스템 구현들
본 발명은 하드웨어, 소프트웨어, 펌웨어, 특수 목적 처리 또는 이들의 조합의 다양한 형태로 구현될 수 있음을 이해해야 한다. 일 실시 예에서, 본 발명은 application-specific integrated circuit(ASIC) 또는 field programmable gate array(FPGA)와 같은 하드웨어로 구현될 수 있다. 다른 실시 예에서, 본 발명은 컴퓨터 판독 가능한 프로그램 저장 장치 상에 유형적으로 구현된 애플리케이션 프로그램과 같은 소프트웨어로 구현될 수 있다. 상기 애플리케이션은 임의의 적절한 구조를 포함하는 기계로 업로드되고 실행될 수 있다.
도 7은 본 발명의 일 실시 예에 따른, 일반화된 텐서 곱 코드(GTP codes: generalized tensor product codes)를 효율적으로 부호화하기 위한 시스템의 블록도이다.
도 7을 참조하면, 본 발명의 일 실시 예를 구현하기 위한 컴퓨터 시스템(51)은 중앙 처리 장치(CPU: central processing unit)(52), 메모리(53) 및 입출력(I/O: input/output) 인터페이스(54)를 포함할 수 있다. 컴퓨터 시스템(51)은 일반적으로 I/O 인터페이스(54)를 통해 디스플레이 (55) 및 마우스와 키보드 같은 다양한 입력 장치(56)에 연결된다.
지원 회로(supportcircuits)는 캐시(cache), 전원 공급 장치, 클락 회로 및 통신 버스와 같은 회로를 포함할 수 있다. 메모리(53)는 RAM(random access memory), ROM(read only memory), 디스크 드라이브(disk drive), 테이프 드라이브(tape drive) 등, 또는 이들의 조합을 포함할 수 있다. 본 발명은 신호 소스(58)로부터 출력되는 신호를 처리하기 위해 메모리(53)에 저장되고 CPU(52)에 의해 실행되는 루틴(57)으로서 구현될 수 있다.
이와 같이, 컴퓨터 시스템(51)은 본 발명의 루틴(routine, 57)을 실행할 때 특정 목적의 컴퓨터 시스템이 되는 범용 컴퓨터 시스템이다. 대안적으로, 전술한 바와 같이, 본 발명의 실시예는 신호 소스(58)로부터 출력되는 신호를 처리하기 위해 CPU(52)와 신호 통신하는 ASIC 또는 FPGA(51)로서 구현될 수 있다.
컴퓨터 시스템(51)은 운영 체제 및 마이크로 명령 코드를 포함한다. 본 명세서에서 설명된 다양한 프로세스 및 기능은 운영 체제를 통해 실행되는 마이크로 명령어 코드의 일부 또는 애플리케이션 프로그램의 일부(또는 이들의 조합)일 수 있다. 또한, 추가적으로 데이터 저장 장치 및 인쇄 장치와 같은 다양한 다른 주변 장치가 컴퓨터 플랫폼에 연결될 수 있다.
첨부 도면들에 도시된 구성 시스템 요소들과 방법 단계들의 일부는 소프트웨어로 구현될 수 있기 때문에, 시스템 구성요소들 (또는 프로세스 단계들) 사이의 실제 연결들은 본 발명이 프로그램되는 방식에 따라 다를 수 있음이 추가로 이해되어야 한다. 여기에 제공된 본 발명의 개시가 주어지면, 당업자는 이들 및 유사한 구현 또는 본 발명의 구성들을 고려할 수 있을 것이다.
본 발명은 실시 예들을 참조하여 상세히 설명하였지만, 당업자는 다양한 변형과 대체가 첨부된 청구범위에 기재된 본 발명의 사상 및 범위를 벗어나지 않고 이루어질 수 있다는 것을 이해할 것이다.
11; 정보 비트(information bits)
12; 패리티 비트(parity bits)
13, 14; 델타 신드롬(DS)
22; 디멀티플렉서
23a, ..., 23n; 곱셈 모듈
24; 멀티플렉서
51; 컴퓨터 시스템
52; 중앙 처리 장치(CPU: central processing unit)
53: 메모리
54; 입출력(I/O: input/output) 인터페이스
55; 디스플레이
56; 입력 장치

Claims (10)

  1. N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드워드(BCH codeword)로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하기 위한 컴퓨터로 구현되는 방법에 있어서,
    상기 컴퓨터에 의해 실행되는 방법은,
    길이 m 비트의 Δt 신드롬들을 포함하는 필드 GF(2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터(
    Figure pat00225
    )를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드 워드 (
    Figure pat00226
    )가 부가될 스테이지 n BCH 코드 워드의 에러 정정 능력이고, 상기 신드롬 벡터(
    Figure pat00227
    )는 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼(information symbols)은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬이며, l은
    Figure pat00228
    가 부가될 BCH 코드 워드의 인덱스임-; 및
    상기
    Figure pat00229
    를 행렬 U의 우측 부분 행렬
    Figure pat00230
    (submatrix)에 의해 곱하는 단계를 포함하며,
    상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬
    Figure pat00231
    Figure pat00232
    를 가지며, 상기 새로운 이진 BCH 코드 워드는
    Figure pat00233
    인 방법.
  2. 제1항에 있어서, 상기
    Figure pat00234
    를 행렬 U의 우측 부분 행렬
    Figure pat00235
    (submatrix)에 의해 곱하는 단계는,
    단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터
    Figure pat00236
    의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및
    새로운 이진 BCH 코드 워드
    Figure pat00237
    를 나타내는 단일 출력으로 상기 구성 요소 곱을 다중화하는 단계를 포함하며,
    상기 부분 행렬
    Figure pat00238
    는 새로운 이진 BCH 코드 워드
    Figure pat00239
    의 신드롬 벡터
    Figure pat00240
    를 수신하기 전에 계산되는 방법.
  3. 제1항에 있어서,
    상기 신드롬 벡터
    Figure pat00241
    는 분리된
    Figure pat00242
    행렬들로 역 다중화되는 방법.
  4. 제1항에 있어서, 상기
    Figure pat00243
    를 행렬 U의 우측 부분 행렬
    Figure pat00244
    (submatrix)에 의해 곱하는 단계는,
    단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수에 의해, 감소된 서브 매트릭스
    Figure pat00245
    의 성분으로 상기 신드롬 벡터
    Figure pat00246
    의 각 성분을 곱하여, 성분 곱(component product)을 산출하는 단계-여기서, 상기 감소된 서브 매트릭스
    Figure pat00247
    Figure pat00248
    로 정의되고, 부분 행렬들
    Figure pat00249
    Figure pat00250
    의 칼럼들(columns)은 다항식으로 표현되고,
    Figure pat00251
    Figure pat00252
    로 나눈 칼럼인
    Figure pat00253
    의 각 칼럼은, 새로운 이진 BCH 코드 워드
    Figure pat00254
    의 신드롬 벡터
    Figure pat00255
    를 수신하기 전에 계산됨-;
    상기 성분 곱(component product)을 임시 출력으로 멀티플렉싱하는 단계; 및
    새로운 이진 BCH 코드 워드
    Figure pat00256
    를 나타내는 단일 출력을 생성하기 위해 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계-여기서, g0(x)는 다항식으로 표현된 부분 행렬
    Figure pat00257
    의 모든 칼럼의 공통 승수(common multiplier)이고, 새로운 이진 BCH 코드 워드
    Figure pat00258
    의 신드롬 벡터를 수신하기 전에 계산됨 -를 포함하는 방법.
  5. 제4항에 있어서,
    상기 신드롬 벡터
    Figure pat00259
    는 분리된
    Figure pat00260
    행렬들로 역 다중화되는 방법.
  6. 제4항에 있어서, 상기 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계는
    다수의 클록 사이클에 걸쳐 수행되는 방법.
  7. 제1항에 있어서, 상기
    Figure pat00261
    를 행렬 U의 우측 부분 행렬
    Figure pat00262
    (submatrix)에 의해 곱하는 단계는,
    상기 m 개의 다항식들
    Figure pat00263
    을 칼럼(column)으로서 연결(concatenation)하여 형성된 행렬 Hj 로 상기 신드롬 벡터
    Figure pat00264
    를 곱함으로써 다항식 hj(x) 를 계산하는 단계- 여기서, 다항식
    Figure pat00265
    이고,
    Figure pat00266
    이며,
    Figure pat00267
    Figure pat00268
    는 t1의 정정 능력을 갖는 BCH 코드 C1의 i 번째 최소 다항식이며, 새로운 이진 BCH 코드 워드
    Figure pat00269
    의 신드롬 벡터
    Figure pat00270
    를 수신하기 전에 계산됨-;
    hj(x)에 Mj(x) 를 곱하고, j = 0 내지 Δt-1 에 대해 합산하는 단계;
    상기 곱 hj(x)×Mj(x) 의 합을 임시 출력으로 멀티플렉싱하는 단계; 및
    새로운 이진 BCH 코드 워드
    Figure pat00271
    를 나타내는 단일 출력을 생성하기 위해 공통 승수 g0(x) 로 임시 출력을 컨벌루션하는 단계-여기서, g0(x)는 다항식으로 표현된 부분 행렬
    Figure pat00272
    의 모든 칼럼의 공통 승수이고, 새로운 이진 BCH 코드 워드
    Figure pat00273
    의 신드롬 벡터를 수신하기 전에 계산됨 -를 포함하는 방법.
  8. N 개의 구조 스테이지들(structure stages)로 구성되고, N은 1보다 큰 정수이고, 각 스테이지는 이전 스테이지(prior stage)보다 크고 다음 스테이지(next stage)보다 작은 에러 정정 능력(error correction capability)을 갖는 적어도 하나의 BCH 코드 워드로 구성되는 이진(binary) GTP(Generalized Tensor Product) 코드 워드를 생성하는 방법 단계들을 수행하기 위한 명령들의 프로그램을 실행하도록 구성된 컴퓨터 프로세서에 있어서,
    상기 방법은,
    길이 m 비트의 Δt 신드롬을 포함하는 필드 GF (2m)에 대한 새로운 스테이지 0(stage 0) 이진 BCH 코드워드의 신드롬 벡터(
    Figure pat00274
    )를 수신하는 단계- 여기서, Δt = tn - t0 이고, t0 는 상기 스테이지 0 BCH 코드워드의 에러 정정 능력이고, tn은 새로운 이진 BCH 코드 워드 (
    Figure pat00275
    )가 부가될 스테이지 n BCH 코드 워드의 에러 정정 능력이고, 상기 신드롬 벡터(
    Figure pat00276
    )는 Δt 리드-솔로몬(RS: Reed-Solomon) 코드워드의 l번째 RS 심볼을 포함하며, 상기 정보 심볼(information symbols)은 스테이지 0 내지 스테이지 n-1까지의 모든 BCH 코드 워드의 델타 신드롬이며, l은
    Figure pat00277
    가 부가될 BCH 코드 워드의 인덱스임-; 및
    상기
    Figure pat00278
    를 행렬 U의 우측 부분 행렬
    Figure pat00279
    (submatrix)에 의해 곱하는 단계를 포함하며,
    상기 행렬 U는 tn에 의해 정의된 BCH 코드의 패리티 행렬(parity matrix)의 역(inverse)이며, 상기 부분 행렬
    Figure pat00280
    Figure pat00281
    를 가지며, 상기 새로운 이진 BCH 코드 워드는
    Figure pat00282
    인 컴퓨터 프로세서.
  9. 제8항에 있어서, 상기
    Figure pat00283
    를 행렬 U의 우측 부분 행렬
    Figure pat00284
    (submatrix)에 의해 곱하는 단계는,
    단일 하드웨어 사이클(single hardware cycle)에서 이진 논리 함수(binary logic function)에 의해 부분 행렬 U의 성분(component)으로 상기 신드롬 벡터
    Figure pat00285
    의 각 성분을 곱하여 성분 곱(component product)을 산출하는 단계; 및
    새로운 이진 BCH 코드 워드
    Figure pat00286
    를 나타내는 단일 출력으로 상기 구성 요소 곱을 다중화하는 단계를 포함하며,
    상기 부분 행렬
    Figure pat00287
    는 새로운 이진 BCH 코드 워드
    Figure pat00288
    의 신드롬 벡터
    Figure pat00289
    를 수신하기 전에 계산되는 컴퓨터 프로세서.
  10. 제9항에 있어서,
    상기 신드롬 벡터
    Figure pat00290
    는 분리된
    Figure pat00291
    행렬들로 역 다중화되는 컴퓨터 프로세서.
KR1020180017172A 2017-06-30 2018-02-12 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치 KR102519667B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/639,475 2017-06-30
US15/639,475 US10333554B2 (en) 2017-06-30 2017-06-30 Efficient generalized tensor product codes encoding schemes

Publications (2)

Publication Number Publication Date
KR20190003315A true KR20190003315A (ko) 2019-01-09
KR102519667B1 KR102519667B1 (ko) 2023-04-07

Family

ID=64738399

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180017172A KR102519667B1 (ko) 2017-06-30 2018-02-12 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치

Country Status (2)

Country Link
US (1) US10333554B2 (ko)
KR (1) KR102519667B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860419B2 (en) * 2018-12-28 2020-12-08 Intel Corporation Minimal aliasing bit-error correction code
US11742879B2 (en) 2019-03-13 2023-08-29 Samsung Electronics Co., Ltd. Machine-learning error-correcting code controller
US11184026B2 (en) 2019-03-13 2021-11-23 Samsung Electronics Co., Ltd. Super-HPC error correction code

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150107862A (ko) * 2013-01-21 2015-09-23 마이크론 테크놀로지, 인크. 분류 코드를 사용한 소프트 데이터의 결정

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150107862A (ko) * 2013-01-21 2015-09-23 마이크론 테크놀로지, 인크. 분류 코드를 사용한 소프트 데이터의 결정

Also Published As

Publication number Publication date
US10333554B2 (en) 2019-06-25
US20190007062A1 (en) 2019-01-03
KR102519667B1 (ko) 2023-04-07

Similar Documents

Publication Publication Date Title
US7543212B2 (en) Low-density parity-check (LDPC) encoder
US8352847B2 (en) Matrix vector multiplication for error-correction encoding and the like
EP2031759B1 (en) Coding method and device for Quasi-Cyclic LDPC codes
US7870468B1 (en) Reed-solomon decoder using a configurable arithmetic processor
KR102519667B1 (ko) 일반화된 텐서곱(gtp) 코드의 효율적인 인코딩 방법 및 그 장치
EP0793351A1 (en) Apparatus for computing error correction syndromes
US20060090119A1 (en) System and method for implementing a Reed Solomon multiplication section from exclusive-OR logic
Tang et al. Fast en/decoding of Reed-Solomon codes for failure recovery
Xie et al. Reduced-complexity key equation solvers for generalized integrated interleaved BCH decoders
US9337869B2 (en) Encoding and syndrome computing co-design circuit for BCH code and method for deciding the same
US9065482B1 (en) Circuit for forward error correction encoding of data blocks
EP2309650B1 (en) A systematic encoder with arbitrary parity positions
Zhang VLSI architectures for Reed–Solomon codes: Classic, nested, coupled, and beyond
Li et al. Modified GII-BCH codes for low-complexity and low-latency encoders
KR102532623B1 (ko) Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치
US9467173B2 (en) Multi-code Chien&#39;s search circuit for BCH codes with various values of m in GF(2m)
JPH0476540B2 (ko)
Ji An optimized processor for fast Reed-Solomon encoding and decoding
KR101636406B1 (ko) 저지연 신드롬 계산을 위한 bch 디코더의 전처리 장치 및 방법
Mondal et al. Efficient hardware design architectures for BCH product codes in the frequency domain
Tang et al. An efficient parallel architecture for resource-shareable Reed-Solomon encoder
JP6336547B2 (ja) 訂正信号を決定する回路構成及びその方法
Hu et al. Low complexity parallel Chien search architecture for RS decoder
EP3529900B1 (en) Construction of ldpc convolutional turbo codes
TWI538414B (zh) 用於多模式bch碼編碼的方法及使用該方法的編碼器

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant