KR20240067786A - 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩 - Google Patents

낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩 Download PDF

Info

Publication number
KR20240067786A
KR20240067786A KR1020230089051A KR20230089051A KR20240067786A KR 20240067786 A KR20240067786 A KR 20240067786A KR 1020230089051 A KR1020230089051 A KR 1020230089051A KR 20230089051 A KR20230089051 A KR 20230089051A KR 20240067786 A KR20240067786 A KR 20240067786A
Authority
KR
South Korea
Prior art keywords
reed
error
solomon
decoding
polynomial
Prior art date
Application number
KR1020230089051A
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 삼성전자주식회사
Publication of KR20240067786A publication Critical patent/KR20240067786A/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
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • 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/1525Determination and particular use of error location 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/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/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • 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
    • 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
    • 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/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • 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

Landscapes

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

Abstract

리드 솔로몬 디코더의 동작 방법은 리드-솔로몬 코드워드의 기호(symbol)의 부분 입력 데이터(partial input data)를 수신하는 단계, 부분 입력 데이터를 기초하여 리드-솔로몬 신드롬을 업데이트하는 단계, 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트하는 단계, 리드-솔로몬 디코딩의 활성화를 시작하기 전에, 메모리에서 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 유지하는 단계, 및 리드-솔로몬 디코딩의 제1 활성화에, 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 입력하는 단계를 포함한다. 리드-솔로몬 디코딩의 제1 활성화에, 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 입력하는 단계는, 제1 오류 평가 다항식으로 초기 오류 평가 다항식을 계산하는 단계와, 제1 오류 평가 다항식에 기초하여 오류 검출을 수행하여 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하는 단계와, 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 오류 위치 다항식을 업데이트하는 단계를 포함한다. 메모리의 오류 위치 다항식 계수는 적어도 하나의 오류가 리드-솔로몬 코드워드에서 식별될 때 리드-솔로몬 디코딩의 각각의 활성화 동안 업데이트된다.

Description

낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩{LOW GATE-COUNT AND HIGH-THROUGHPUT REED-SOLOMON DECODING}
본 발명은 리드 솔로몬 디코더의 동작 방법, 리드 솔로몬 코드워드를 디코딩하기 위한 디코딩 장치 및 리드 솔로몬 디코딩을 위한 시스템에 관한 것이다.
일반화된 연결 코드(GCC; Generalized Concatenated Code)는 내부 코드에 의해 보호되는 코드 기호를 갖는 외부 코드로 구성된다. 내부 코드의 가장 흔한 형태는 리드-솔로몬 코드워드 또는 일반화된 리드-솔로몬(GRS; Generalized Reed-Solomon) 코드워드이다. 내부 코드는 BCH 코드 또는 폴라 코드와 같은 디코딩 가능한 선형 코드일 수 있다. GCC 코드 레이아웃은 GRS 코드워드와 프레임을 포함하는 것으로 시각화할 수 있다. GRS 코드워드는 기본 데이터, GCC 패리티 비트 및 기본 프레임 패리티 비트를 포함할 수 있다. 패리티 비트는 리드-솔로몬 코드워드로 보호된다. GCC 코드는 GCC 패리티 비트가 기본 데이터로 GRS 코드워드를 만들도록 구축된다. GCC 디코더에서, 프레임은 다양한 양의 패리티 비트가 있는 프레임 디코더로 디코딩된다.
GRS 코드워드는 많은 오류 수정 애플리케이션에서 사용된다. GRS 코드워드는 다수의 프레임을 포함하고, 각 프레임은 다수의 기호를 포함하며, 각 기호는 다수의 비트를 포함한다. 인코딩된 GRS 코드워드는 두 가지 유형의 노이즈, 즉 소거 E0 및 오류 E1을 도입하는 채널을 통해 전송될 수 있다. 전송되는 GRS 코드워드 C는 노이즈 없이 전송될 수 있는 반면, 수신된 GRS 코드워드 R은 소거 E0 및 오류 E1을 포함하는 노이즈와 함께 수신될 수 있다. 일부 ECC(오류 정정 코드) 체계는 소거 E0과 오류 E1을 모두 수정하기 위해 GRS 코드워드를 사용한다.
전형적인 디코더 흐름은 먼저 GRS 코드워드에 소거 E0의 수 및 위치 정보를 포함하는 GRS 코드워드에 대한 초기 소거 위치 지정자 다항식 ELP0을 구성하고, GRS 코드워드에 오류 E1의 개수와 위치 정보를 포함하는 GRS 코드워드의 신드롬 S(x)를 계산하는 단계로 구성된다. 이 단계에서, 소거의 수와 위치는 초기 ELP0부터 이미 알고 있으며, 초기 ELP0의 차수는 소거 E0의 수와 같다. 그러나 GRS 코드워드에서 오류 E1의 수와 위치는 이 단계에서 아직 알 수 없다. 둘째, 초기 ELP0와 신드롬 S(x)에 BM(Berlekamp-Massey) 알고리즘을 적용하여 초기 ELP0을 보조 ELP로 업데이트한다. 보조 ELP는 디코더 시스템 및 디코딩의 상태를 나타낸다. BM 알고리즘은 반복적으로 적용되며, BM 알고리즘에 의한 처리 동안에 보조 ELP의 차수는 소거 E0의 수에서 시작하여 오류 E1이 있으면 증가한다. BM 알고리즘의 적용 종료 시, 보조 ELP의 차수는 GRS 코드워드의 소거 E0의 수와 오류 E1의 수의 합과 같으므로, 오류 E1의 수는 이 단계 이후에 알게 된다. 보조 ELP는 오류 위치 다항식 ELP1로 지칭될 수 있고, 코드워드에서 모든 알려진 실패 또는 비 디코딩된(또는 오정확 디코딩된) 프레임을 나타내는 근을 갖는다. 세 번째로, Chien 검색(CS) 알고리즘이 보조 ELP에 적용되어 변수 x에 대한 서로 다른 값이 보조 ELP에 점진적으로 채워짐에 따라 보조 ELP에서 0을 찾아 오류 E1의 위치를 찾는다. Chien 검색 후 소거 E0 및 오류 E1의 번호와 위치가 모두 알려져 있다. 넷째, Chien 검색 후, 디코딩 실패 여부를 결정한다(코드워드가 여전히 너무 잡음이 많고 싱글톤 경계가 유지되지 않는 경우 일반적으로 발생함). 다섯째, 디코딩에 실패하지 않으면, ELP1에 따라 오류 및 소거 평가 다항식(EEP)이 업데이트된다. 여섯째, 소거 E0 및 오류 E1의 EEP, 보조 ELP, 및 알려진 수와 위치를 사용하여 포니(Forney) 알고리즘을 통해 소거 E0 값과 오류 E1 값을 추정한다. 기존의 디코더 흐름에서의 처리는 GRS 코드워드에 대해 순서대로 전체 프레임 세트에 대해 수행되며, 하드웨어 블록은 각 GRS 코드워드에 대해 순서대로 전체 프레임 세트를 처리하도록 순서대로 배열된다.
전술한 전형적인 디코더 흐름에는 다양한 비효율성이 존재한다. 예를 들어, GCC 코드의 소거 E0의 수는 종종 오류 E1의 수보다 상당히 크다. 그 결과, 코드워드 내 소거 E0의 수와 위치를 초기 ELP0부터 이미 알고 있기 때문에 BM 알고리즘의 반복적은 적용은 비효율적인 경우가 많다. 코드워드에서 소거 E0의 수와 위치가 이미 알려진 경우에도, 보조 ELP의 최종 차수는 소거 E0의 수가 상대적으로 많기 때문에 BM 알고리즘을 사용하면 상대적으로 커질 수 있다. 오류 E1의 수에 비하여 소거 E0의 수가 많은 경우, 결과는 구현하기에 비실용적으로 복잡성과 비효율성이 높아진다. 마침내, 리드-솔로몬 디코더에 의한 처리는 각 GRS 코드워드에 대해 전체 프레임 세트가 필요하다는 이해로 개발되었으며, 이로 인해 GRS 코드워드의 병렬 또는 파이프라인 처리와 같은 일부 형태의 효율적인 처리를 막을 수 있다.
본 발명이 해결하고자 하는 과제는, 성능이 향상된 리드 솔로몬 디코더의 동작 방법, 리드 솔로몬 코드워드를 디코딩하기 위한 디코딩 장치 및 리드 솔로몬 디코딩을 위한 시스템을 제공하는 것이다.
본 개시의 일 측면에 따르면, 리드 솔로몬 디코더의 동작 방법은 리드-솔로몬 코드워드의 기호(symbol)의 부분 입력 데이터(partial input data)를 수신하는 단계, 부분 입력 데이터를 기초하여 리드-솔로몬 신드롬을 업데이트하는 단계, 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트하는 단계, 리드-솔로몬 디코딩의 활성화를 시작하기 전에, 메모리에서 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 유지하는 단계, 및 리드-솔로몬 디코딩의 제1 활성화에, 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 입력하는 단계를 포함한다. 리드-솔로몬 디코딩의 제1 활성화에, 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 입력하는 단계는, 제1 오류 평가 다항식으로 초기 오류 평가 다항식을 계산하는 단계와, 제1 오류 평가 다항식에 기초하여 오류 검출을 수행하여 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하는 단계와, 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 오류 위치 다항식을 업데이트하는 단계를 포함한다. 메모리의 오류 위치 다항식 계수는 적어도 하나의 오류가 리드-솔로몬 코드워드에서 식별될 때 리드-솔로몬 디코딩의 각각의 활성화 동안 업데이트된다.
본 개시의 다른 측면에 따르면, 리드 솔로몬 코드워드를 디코딩하기 위한 디코딩 장치는, 리드-솔로몬 코드워드의 기호의 부분 입력 데이터를 수신하는 인터페이스, 메모리, 및 디코딩 회로를 포함하고, 디코딩 회로는, 부분 입력 데이터를 기반으로 리드-솔로몬 신드롬을 업데이트하고, 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트하고, 리드-솔로몬 디코딩의 활성화를 시작하기 전에 메모리에서 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 유지하고, 제1 오류 평가 다항식으로 초기 오류 평가 다항식을 계산하고, 제1 오류 평가 다항식에 기초하여 오류 검출을 수행하여 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하고, 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 오류 위치 다항식을 업데이트하여, 리드-솔로몬 디코딩의 제1 활성화에, 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 입력하도록 구성된다. 메모리의 오류 위치 다항식 계수는 적어도 하나의 오류가 리드-솔로몬 코드워드에서 식별될 때 리드-솔로몬 디코딩의 각각의 활성화 동안 업데이트된다.
본 개시의 다른 측면에 따르면, 리드 솔로몬 디코딩을 위한 시스템은 리드-솔로몬 코드워드의 기호의 부분 입력 데이터를 수신하는 인터페이스, 리드-솔로몬 코드코드의 기호의 부분 입력 데이터로 시작하는 리드-솔로몬 코드워드를 디코딩하는 프로세스를 구현하는 처리 회로를 포함하고, 처리 회로는, 부분 입력 데이터를 기반으로 리드-솔로몬 신드롬을 업데이트하고, 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트하고, 리드-솔로몬 디코딩의 활성화를 시작하기 전에 메모리에서 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 유지하고, 제1 오류 평가 다항식으로 초기 오류 평가 다항식을 계산하고, 제1 오류 평가 다항식에 기초하여 오류 검출을 수행하여 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하여, 리드-솔로몬 디코딩의 제1 활성화에, 리드-솔로몬 신드롬 및 오류 위치 다항식 계수를 입력하도록 구성되고, 메모리의 오류 위치 다항식 계수는 적어도 하나의 오류가 상기 리드-솔로몬 코드워드에서 식별될 때 리드-솔로몬 디코딩의 각각의 활성화 동안 업데이트된다.
예시적인 실시 예는 첨부된 도면과 함께 읽을 때 다음의 상세한 설명으로부터 가장 잘 이해된다. 다양한 특징은 반드시 축척에 맞게 그려지지는 않았다는 점에 유의한다. 실제로 치수는 논의의 명확성을 위해 임의로 늘리거나 줄일 수 있다. 적용 가능하고 실용적인 경우, 동일한 참조 번호는 동일한 요소를 나타낸다.
도 1a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 시스템을 도시한다.
도 1b는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩에 사용되는 예시 코드워드를 도시한다.
도 1c는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 메모리 및 디코딩 장치를 갖는 시스템을 도시한다.
도 1d는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 컨텍스트로서 GCC 코드 레이아웃을 도시한다.
도 2a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 디코더 및 관련 로직의 서브시스템을 도시한다.
도 2b는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 리드-솔로몬 디코더를 도시한다.
도 3a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 신드롬 로직을 도시한다.
도 3b는 대표적인 실시 예에 따른, 리드-솔로몬 디코딩을 위한 종래의 신드롬 로직을 도시한다.
도 3c는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 신드롬 로직을 도시한다.
도 4a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩에서 소거 있고 오류 없는 파이프라인 디코딩을 위한 리드-솔로몬 흐름을 도시한다.
도 4b는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩에서 제1 RS 코드워드에 소거 및 오류 있는 파이프라인 디코딩을 위한 리드-솔로몬 흐름을 도시한다.
도 5는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 스폴라 디코더를 도시한다.
도 6은 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 폴라 디코더 흐름을 도시한다.
도 7은 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 폴라 디코더 흐름을 도시한다.
도 8은 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 RSS의 폴라 디코더 업데이트를 도시한다.
다음의 상세한 설명에서, 제한이 아닌 설명의 목적으로, 특정 세부사항을 개시하는 대표적인 실시 예는 본 교시에 따른 실시 예의 완전한 이해를 제공하기 위해 설명된다. 알려진 시스템, 장치, 재료, 작동 방법 및 제조 방법에 대한 설명은 대표적인 실시 예의 설명을 모호하게 하는 것을 피하기 위해 생략될 수 있다. 그럼에도 불구하고, 당업자의 범위 내에 있는 시스템, 장치, 재료 및 방법은 본 교시의 범위 내에 있고 대표적인 실시 예에 따라 사용될 수 있다. 본 명세서에서 사용된 용어는 특정 실시 예를 설명하기 위한 목적일 뿐 제한하려는 의도가 아님을 이해해야 한다. 정의된 용어는 본 교시의 기술 분야에서 일반적으로 이해되고 수용되는 정의된 용어의 기술적 및 과학적 의미에 추가된다.
제1, 제2, 제3 등의 용어가 본 명세서에서 다양한 요소 또는 구성요소를 설명하기 위해 사용될 수 있지만, 이러한 요소 또는 구성 요소는 이들 용어에 의해 제한되어서는 안 된다는 것이 이해될 것이다. 이들 용어는 하나의 요소 또는 구성 요소를 다른 요소 또는 구성 요소와 구별하기 위해서만 사용된다. 따라서, 이하에서 설명되는 제1 요소 또는 구성요소는 본 개시의 권리 범위를 벗어나지 않으면서 제2 요소 또는 구성요소로 명명될 수 있다.
본 명세서에서 사용된 용어는 특정 실시 예를 설명하기 위한 목적일 뿐 제한하려는 의도가 아니다. 명세서 및 첨부된 청구범위에 사용된 바와 같이, 단수형은 문맥에서 달리 명시하지 않는 한 단수형과 복수형을 모두 포함하도록 의도된다. 추가적으로, 용어 "포함하다", 및/또는 "포함하는" 및/또는 이와 유사한 용어가 본 명세서에서 사용될 때 명시된 특징, 요소 및/또는 구성 요소의 존재를 지정하지만, 하나 이상의 다른 특징, 요소, 구성 요소 및/또는 그 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에서 사용되는 바와 같이, "및/또는"이라는 용어는 연관된 나열된 항목 중 하나 이상의 임의의 및 모든 조합을 포함한다.
달리 언급되지 않는 한, 요소나 구성 요소가 다른 요소나 구성 요소에 "연결", "결합" 또는 "인접"하다고 말할 때, 요소 또는 구성요소는 다른 요소 또는 구성요소에 직접 연결되거나 결합될 수 있거나, 중간 요소 또는 구성요소가 존재할 수도 있다는 것이 이해될 것이다. 즉, 이들 및 유사한 용어는 하나 이상의 중간 요소 또는 구성요소가 두 개의 요소 또는 구성요소를 연결하기 위해 사용될 수 있는 경우를 포함한다. 하지만, 요소 또는 구성 요소가 다른 요소 또는 구성 요소에 "직접 연결"되었다고 할 때, 이것은 두 개의 요소 또는 구성 요소가 중간 또는 개입 요소 또는 구성 요소 없이 서로 연결된 경우만을 포함한다.
따라서 본 개시는 그의 다양한 측면, 실시 예 및/또는 특정 특징 또는 하위 구성요소 중 하나 이상을 통해, 이하 구체적으로 언급된 바와 같은 이점 중 하나 이상을 도출하도록 의도된다. 제한이 아닌 설명의 목적으로, 본 교시에 따른 실시예의 완전한 이해를 제공하기 위해 특정 세부사항을 개시하는 예시적 실시예가 설명된다. 그러나, 본 명세서에 개시된 특정 세부 사항에서 벗어나는 본 개시와 일치하는 다른 실시예는 첨부된 청구 범위 내에 남아 있다.
본 명세서에서 설명된 바와 같이, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬(Reed-Solomon) 디코더는 본 명세서에서 설명된 비순차적 입력 처리에 의해 제공된다. 본 명세서의 교시는 감소된 게이트 카운트 및 비순차적 입력을 처리하는 능력을 가져온다. 결과적으로, 리드-솔로몬 디코더는 가능한 한 빨리 활성화되어 폴라(polar) 디코더 성능을 향상시킬 수 있다. 리드-솔로몬 디코딩은 디코딩된 프레임의 부분 데이터에 대해 수행될 수 있으며, 누락 날짜는 소거로 처리된다. 시스템 상태는 수신된 입력에 대해 계산된 오류 위치 다항식(ELP1) 및 리드-솔로몬 신드롬(RSS)에 대해 유지될 수 있고, 입력은 이전에 수신한 입력에 누적될 수 있다. RSS 및 ELP1이 전형적으로 각 RS 코드의 시작 부분에 적용되고 각각이 GCC 디코드 흐름에서 상당한 대기 시간을 가지는 상당한 계산을 포함하는 한, 디코딩을 통한 RSS 값 및 ELP1 값의 지속적인 유지 관리는 다수의 RS 코드워드의 파이프라인 또는 병렬 디코딩을 지원한다.
도 1a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 시스템을 도시한다.
도 1a의 시스템은 GRS 디코딩 장치(20) 및 수신기(99)와 별도로 데이터 소스(1) 및 GRS 인코딩 장치(2)가 제공되는 분산형 시스템일 수 있다. 예를 들어, GRS 인코딩 장치(2)는 광역 통신망(WAN) 또는 근거리 통신망(LAN)과 같은 통신 네트워크를 통해 GRS 디코딩 장치(20)와 통신하는데 사용될 수 있다. 데이터 링크 및 노이즈가 제공되는 통신 네트워크(들)는 유선 및/또는 무선일 수 있다.
대안적으로, 도 1a의 시스템은 GRS 디코딩 장치(20) 및 수신기(99)와 함께 데이터 소스(1) 및 GRS 인코딩 장치(2)가 함께 제공되는 통합 시스템일 수 있다. 예를 들어, GRS 인코딩 장치(2)는 예를 들어, GRS 인코딩 장치(2)가 호스트에 의해 제공되고 GRS 디코딩 장치(20)가 메모리 시스템의 메모리 컨트롤러와 같은 주변 장치에 의해 제공되는 호스트/주변 장치 관계에서와 같이, GRS 디코딩 장치(20)에 직접 연결될 수 있다. GRS 인코딩 장치(2)와 GRS 디코딩 장치(20) 사이의 다이렉트 링크는 예를 들어 하나 이상의 와이어 및/또는 하드웨어 인터페이스에 의해 제공될 수 있다. 메모리 시스템에서 주변 메모리 컨트롤러로서 제공되는 GRS 디코딩 장치(20)의 예가 도 1c를 참조하여 설명된다. GRS 디코딩 장치(20)가 제공되는 예시적인 컨텍스트는 플래시 메모리 시스템용 메모리 컨트롤러와 같은 플래시 메모리용이다. 플래시 메모리의 맥락에서, 플래시 메모리 자체는 수신기(99)에 포함되거나 포함될 수 있거나, GRS 디코딩 장치(20)는 플래시 메모리용 메모리 컨트롤러의 디코딩 회로이거나 이를 포함하거나 이에 포함될 수 있다. 본 명세서에서 설명하는 GRS 디코딩을 사용하는 플래시 메모리는 NAND 플래시 메모리일 수 있지만, GRS 디코딩은 NAND 플래시 메모리는 물론 플래시 메모리에 한정되지 않는다.
본 명세서에서 설명되는 본 개시의 실시 예는 ECC 구현 시스템의 맥락에서, 특히 GCC(일반화된 연결 코드) 구성의 맥락에서 GRS 디코딩 장치(20)에 관한 것이다. 배경에서 설명한 바와 같이, 알려진 GRS 디코딩 장치는 일반적으로 소거 E0 및 오류 E1의 총 수의 차수 다항식으로 초기 ELP0 및 신드롬 S(x)에 BM 알고리즘을 적용하고, 소거 E0 및 오류 E1의 총 수의 차수 다항식으로 보조 ELP Λ(x)에 치엔(Chien) 검색 알고리즘을 적용한다. 본 명세서의 교시에 따르면, 시스템 ELP Λ(x)는 디코더 시스템 및 디코딩의 상태를 나타내며, 디코딩 동안 1회 이상 업데이트될 수 있다. 도 1a의 GRS 디코딩 장치(20)는 비순차 입력을 포함하는 부분 코드워드 입력으로 가능한 한 빨리 리드-솔로몬 디코딩을 효율적으로 활성화함으로써, 디코더에서 시간을 절약하고 처리량을 향상시킬 수 있다.
도 1b는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩에 사용되는 예시의 코드워드를 도시한다.
도 1b를 참조하면, GRS 코드워드는 n개의 기호(symbol)를 가지며, n개의 기호 각각은 m 비트를 갖는다. GRS 코드워드는 원본 메시지 내용의 기호에 추가된 패리티 비트의 기호과 함께 GRS 인코딩 장치(2)에 의해 인코딩된 원본 메시지 내용의 기호를 포함한다. GRS 코드워드의 n개의 기호는 원본 메시지 내용의 k개의 기호 및 패리티 비트의 2t개의 기호를 포함한다.
본 명세서에서 사용되는 바와 같이, 변수 "C" 또는 "c"는 전송되는 GRS 코드워드를 나타낸다. 변수 "R" 또는 "r"은 수신된 GRS 코드워드를 나타낸다. 변수 "E0"은 노이즈의 제1 형태인 소거를 나타낸다. 변수 "E1"은 오류를 노이즈의 제2 형태로 나타낸다. 변수 "N" 또는 "n"은 코드워드 C의 기호 수 또는 코드워드 C의 길이를 나타내며, 코드워드당 기호의 수로 표시된다. 변수 "M" 또는 "m"은 기호당 비트 수를 나타낸다. 이러한 정의된 변수가 주어지면, R - C는 노이즈 코드워드를 나타내며 소거 E0 및 오류 E1을 모두 포함한다.
본 명세서의 교시에 대한 추가 컨텍스트로서, 검사 행렬 "H"는 수신된 코드워드 R을 검사하기 위해 사용된다. 수신된 코드워드 R에 검사 행렬 H를 곱한 곱 즉, HR은 수신된 코드워드 R이 노이즈를 포함하는 경우를 제외하고는 0이 되어야 한다. 수신된 코드워드 R에 노이즈가 포함된 경우, 검사 행렬 H에 수신된 코드워드 R을 곱한 결과는 HR이고, HE의 정의에 따르면, H(C + E)는 HC + HE와 같고 HC만 0이다. 따라서, 검사 행렬 H에 수신된 코드워드 R을 곱한 것(즉, 전송된 코드워드 C에 노이즈 E를 더한 것)은 HE와 같다. 코드워드 노이즈 HE는 신드롬 S로 알려져 있다. 신드롬은 수신된 코드워드 R에 검사 행렬 H를 곱한 후의 나머지로, 기본적으로 추가된 노이즈만을 반영한다.
도 1c는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 메모리 및 디코딩 장치를 갖는 시스템을 도시한다.
도 1c의 시스템은 플래시 메모리 시스템과 같은 메모리 시스템의 블록도이다. 메모리 시스템은 GRS 디코딩 장치(20) 및 메모리 블록(M)을 포함한다. GRS 디코딩 장치(20)는 예를 들어, 메모리 컨트롤러일 수 있거나, 이에 포함될 수 있거나, 또는 이를 포함할 수 있다. 도 1c의 예에서, GRS 디코딩 장치(20)는 호스트 시스템과 메모리 블록(M) 사이에서 데이터를 인코딩/디코딩하기 위한 다중 채널 오류 수정 코더(ECC) 아키텍처를 포함한다. GRS 디코딩 장치(20)는 시스템 버스(21C)에 의해 모두 함께 연결된, 호스트 인터페이스(21B), NAND 인터페이스(100) 및 프로세서(21A)를 포함한다. NAND 인터페이스(100)는 DMA 제어기(21D)(직접 메모리 액세스 제어기) 및 오류 수정 코더(ECC) 회로 블록을 포함한다. 오류 수정 코더 회로의 블록은 디코더 #1로서 제1 디코더(120), 디코더 #2로서 제2 디코더(130) 및 디코더 #3으로서 제3 디코더(140)를 포함하는 복수(N)의 ECC 모듈을 포함한다. 메모리 블록 M은 메모리 #1인 제1 낸드 메모리 M1, 메모리 #2인 제2 낸드 메모리 M2, 메모리 #3인 제3 낸드 메모리 M3을 포함하는 복수(N)의 낸드 메모리 장치를 포함한다. 각각의 ECC 모듈과 대응하는 제1 NAND 메모리 M1, 제2 NAND 메모리 M2 및 제3 NAND 메모리 M3 사이에는 각각 채널 CH1, CH2 내지 CH3이 연결되어 있다. 물론, ECC 모듈의 수, NAND 메모리의 수 및 채널의 수는 3으로 제한되지 않으며, 3보다 많거나 적을 수 있다. 추가적으로, ECC 모듈과 NAND 메모리는 1-1 관계로 도 1c에 도시되어 있지만, ECC 모듈은 본 명세서의 개시의 정신에서 벗어나지 않고 하나 이상의 NAND 메모리에 전용될 수 있다. 더욱이, 본 명세서의 개시는 NAND 플래시 메모리 배열 또는 심지어 플래시 메모리에만 국한되지 않는다. 오히려, 본 명세서의 개시는 임의의 다양한 상황에서 GRS 구현에 적용 가능하다.
도 1c의 GRS 디코딩 장치(20)의 다채널 오류 수정 부호화 구조에서 제1 디코더(120), 제2 디코더(130) 및 제3 디코더(140) 각각은 인코더와 디코더를 별도로 포함할 수 있으며, 디코더는 오류 위치 다항 로직, 신드롬 로직 및 리드-솔로몬 디코딩 로직과 같은 서브회로를 포함할 수 있다. 이 용어는 하드웨어와 관련하여 사용되므로, "로직"은 하위 회로에 대한 처리 회로 구현을 의미한다.
작동시, 컴퓨터와 같은 호스트 장치로부터의 데이터는 메모리 블록 M에 저장될 예정일 수 있다. 예를 들어, 데이터는 DMA 컨트롤러(21D)에 의해 제1 디코더(120)로 전송될 수 있다. 제1 디코더(120)에서, 데이터는 먼저 인코더에 의해 인코딩된 다음 채널 1을 통해 메모리 블록 M으로 전송된다. 메모리 블록 M에서 데이터를 읽어 호스트 장치에 제공할 때, 데이터는 제1 디코더(120)에 의해 먼저 디코딩된 후 디코딩된 데이터는 DMA 컨트롤러(21D)에 공급된다. 제1 디코더(120)에서, 검출기는 메모리 블록(M)으로부터 수신된 데이터에 오류가 있는지 여부를 검출하고, 오류가 있으면 수정기가 오류를 수정한다.
제1 디코더(120), 제2 디코더(130) 및 제3 디코더(140) 각각은 본 명세서의 교시에 따라 동작하도록 구성될 수 있고, 각각은 동일하거나 유사한 처리 회로를 개별적으로 포함할 수 있다. 본 명세서에 기술된 처리 회로는 명령을 저장하는 메모리 및 명령을 실행하는 프로세서와 같은 단순한 회로 또는 여전히 하나 이상의 메모리/프로세서 조합을 포함할 수 있는 2개 이상의 회로 요소가 있는 주문형 집적 회로(ASIC)와 같은 더 복잡한 회로일 수 있거나 이를 포함할 수 있다. 처리 회로에 의해 사용될 수 있는 프로세서의 예는 마이크로프로세서를 포함한다. 도 1c의 디코더는 각각 도 2a의 처리 회로를 포함할 수 있다.
도 1d는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 컨텍스트로서 GCC 코드 레이아웃을 도시한다.
예시적인 GCC 레이아웃이 도 1d에 도시되어 있다. 본 명세서의 교시는 높은 처리량의 GCC 디코더를 초래한다. GCC 코드는 GCC 패리티가 데이터로 리드-솔로몬 코드워드를 생성하는 방식으로 구축된다. GCC 디코더는 프레임 디코더로 디코딩되고 다양한 양의 패리티 비트를 사용하는 프레임을 갖는다. 디코딩 능력은 사용 가능한 패리티 비트의 양과 관련이 있다. 기본 패리티가 있는 프레임의 디코딩 이후에, 일부 프레임은 성공하고 일부는 실패할 수 있다. 다음 리드-솔로몬 코드워드를 디코딩하여 추가 패리티를 얻을 수 있다.
도 2a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 디코더 및 관련 로직의 서브시스템을 도시한다.
도 2a의 서브시스템 및 관련 로직은 RS-톱 또는 리드-솔로몬 톱이라고도 한다. 제2 디코더(130) 및 제3 디코더(140) 각각은 도 2a의 제1 디코더(220)의 구성과 유사하거나 동일하게 구성될 수 있지만, 도 2a의 제1 디코더(220)는 도 1c의 ECC 모듈 중 하나의 제1 디코더(120)에 대응한다. 본 명세서에서 설명된 디코더는 소거 E0 및 오류 E1이 있는 리드 솔로몬 코드를 디코딩하도록 구성된다. 디코더는 일반적으로 도 2a의 제1 디코더(220)의 처리 회로와 같은 처리 회로에 의해 구현된다.
제1 디코더(220)는 신드롬 로직(222), ELP 로직(224)(오류 위치 다항식 로직), RS 제어 블록(226)(리드-솔로몬 제어 블록) 및 RSD 회로(228)(리드-솔로몬 디코더)를 포함한다. 도 2a에 도시된 바와 같이, 입력은 RS 제어 블록(226)에 대한 청크 및 RS 제어 블록(226)에 대한 톱 정보를 포함한다. 입력은 또한 ELP 로직(224)에 대한 폴라 성공 업데이트 및 프레임 식별자 업데이트 및 신드롬 로직(222)에 대한 고정 기호 업데이트를 포함하는, 폴라 탑에서 ELP 로직(224)까지의 업데이트를 포함한다.
RS 제어 블록(226)에 대한 톱 정보는 프레임 상태, 프레임 mc 플래그, 폴라 스테이지 및 레이트 정보를 포함할 수 있다. RS 제어 블록(226)은 톱 정보에 리드-솔로몬 상태를 제공한다. 폴라 톱에서 업데이트는 상술된 폴라 성공 업데이트 및 프레임 식별자 업데이트 및 고정 기호 업데이트를 포함한다.
신드롬 로직(222)은 신드롬 계산을 수행하고 리드-솔로몬 신드롬을 메모리에 유지한다. 도 2a의 신드롬 로직(222)은 제1 디코더(220)가 청크로 수신한 리드-솔로몬 코드워드의 기호의 부분 입력 데이터를 기초로 리드-솔로몬 신드롬을 업데이트할 수 있다. 신드롬 로직(222)은 리드-솔로몬 신드롬을 RSS로서 RSD 회로(228)에 제공한다.
ELP 로직(224)은 오류 위치 다항식 분할을 수행하고 오류 위치 다항식 계수를 메모리에 유지한다. ELP 로직(224)은 청크로서 디코더에 의해 수신된 리드-솔로몬 코드워드의 기호의 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트한다. ELP 로직(224)은 또한 ELP의 정보를 RSD 회로(228)에 제공하고, MC 플래그의 정보뿐만 아니라 리드-솔로몬 코드워드의 상태를 신드롬 로직(222)에 RS 상태로서 제공한다.
RS 제어 블록(226)은 청크를 수신하고, 리드-솔로몬 코드워드의 상태를 톱 정보에 제공하고, 분할을 시작하기 위한 트리거를 ELP 로직(224)에 제공하고, 리드-솔로몬 디코딩을 시작하기 위한 트리거를 RSD 회로(228)에 제공한다. RS 제어 블록(226)은 또한 정보 D, D_BM 및 maxE1을 RSD 회로(228)에 제공한다. maxE1의 정보는 RSD 회로(228)에 의한 리드-솔로몬 디코딩에서 허용 가능한 오류의 최대 수를 나타낸다.
RSD 회로(228)는 리드-솔로몬 디코딩을 수행한다. RSD는 리드-솔로몬 디코딩 실패 정보를 rs_fail로서 제공하여 톱 정보를 업데이트한다. RSD 회로(228)는 또한 업데이트된 오류 위치 다항식 정보를 ELP 로직(224)까지 ELP로서 제공한다. RSD 회로(228)의 출력은 Rsd_out_valid로 리드-솔로몬 디코딩이 유효한지에 대한 정보, 수정된 기호, Frame idx로 프레임 식별자, Rsd_err(MC)로 리드 솔로몬 오류 및 RS_word_idx로 코드워드 식별자를 포함한다.
디코딩 시간을 줄이기 위해, 리드-솔로몬 신드롬(RSS) 및 오류 위치 다항식 ELP1은 디코딩을 통해 계산되고 유지되며, 일단 리드-솔로몬 디코딩이 호출되면 사용할 준비가 된다. 도 2a는 이러한 방식으로 디코딩 시간을 줄이기 위해 개발된 장치를 보여준다.
도 2b는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 리드-솔로몬 디코더를 도시한다.
도 2b는 RS-톱 서브 시스템에서 리드-솔로몬 디코더를 기술한다. 특히, ELP 및 RSS 계산은 도 2b의 리드-솔로몬 디코더의 RSD 로직에 없으며, 이 처리는 본 명세서의 교시에 따라 감소되거나 회피될 수 있기 때문이다. 도 2b의 리드-솔로몬 디코더(200)는 도 2a의 RSD 회로(228)에 대응한다. 리드-솔로몬 디코더(200)는 오류 평가 다항식 메모리(210), 오류 평가 다항식 서브회로(230), BM 서브회로(250), CS 서브회로(270) 및 포니 서브회로(280)를 포함한다. 도 2b의 리드-솔로몬 디코더(200)는 도 2a의 RS 제어 블록(226)으로부터 D, D_BM, maxE1 및 시작의 정보와 함께, 리드-솔로몬 신드롬 RSS를 입력으로 수신한다.
진행하기 전에, 도 1a, 도 1b 및 도 2a을 포함하는 본 명세서의 도면은 "소스" "디바이스", "수신기", "디코더", "계산기", "서브회로", "로직" 또는 "회로" 또는 "블록"과 유사한 용어와 같은 라벨을 갖는 회로이거나 회로를 포함하는 참조 요소를 보여준다는 것은 명확하다. 본 명세서에 기술된 본 개시의 개념(들)의 분야에서 통상적인 바와 같이, 예는 기술된 기능 또는 기능들을 수행하는 라벨링된 요소의 관점에서 기술되고 예시될 수 있다. 이러한 라벨링된 요소 등은 로직 게이트, 집적 회로, 마이크로프로세서, 마이크로컨트롤러, 메모리 회로, 수동 전자 부품, 능동 전자 부품, 광학 부품, 하드와이어 회로 등과 같은 아날로그 및/또는 디지털 회로에 의해 물리적으로 구현되며, 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 회로는 예를 들어 하나 이상의 반도체 칩 또는 인쇄 회로 기판 등과 같은 기판 지지대에 구현될 수 있다. 이러한 라벨링된 요소를 구성하는 회로는 전용 하드웨어에 의해, 또는 프로세서(예를 들어, 하나 이상의 프로그래밍된 마이크로프로세서 및 관련 회로)에 의해 또는 레이블이 지정된 요소의 일부 기능을 수행하는 전용 하드웨어와 레이블이 지정된 요소의 다른 기능을 수행하는 프로세서의 조합에 의해 구현될 수 있다. 예시의 각각의 라벨링된 요소는 본 개시의 범위를 벗어나지 않고 2개 이상의 상호작용하는 개별 회로로 물리적으로 분리될 수 있다.
오류 평가 다항식 메모리(210)는 오류 평가 다항식 서브회로(230)로부터 오류 평가 다항식을 저장하고 BM 서브회로(250)에 의해 출력된 ELP1로부터 오류 평가 다항식으로 업데이트한다.
오류 평가기 다항 서브회로(230)는 다항식 콘볼루션 하드웨어를 포함한다. 오류 평가 다항식 부회로(230)는 리드-솔로몬 신드롬 RSS 및 오류 위치 다항식(ELP1)을 수신하고, 오류 평가 다항식을 오류 평가 다항식 메모리(210) 및 BM 서브회로(250)로 출력한다. EEP는 BM 알고리즘이 BM 서브회로(250)에 의해 적용되거나 Chien 검색이 CS 서브회로(270)에 의해 수행되기 전에 오류 평가 다항식 서브회로(230)에 의해 계산된다. 또한, EEP는 ELP와 RSS를 기반으로 계산되며 E0의 알려진 수와 위치를 반영한다. 오류 E1의 수와 위치는 RSS에서 파생되지만 EEP가 오류 평가 다항식 하위 회로(230)에 의해 계산된 후에는 아직 알려지지 않았다. 리드-솔로몬 디코딩의 제1 활성화를 위해, 초기 EEP는 제1 오류 평가 다항식으로 계산된다. 리드-솔로몬 디코딩의 제2 활성화를 위해 제2 오류 평가 다항식이 계산된다. 리드-솔로몬 디코딩의 제3 활성화를 위해 제3 오류 평가 다항식이 계산된다. 리드-솔로몬 디코딩의 새로운 활성화 각각에 대해 신규 또는 업데이트된 EEP가 계산된다.
BM 서브회로(250)는 오류 평가 다항식 부회로(230)로부터 오류 평가 다항식 EEP를 수신하여 오류 위치 다항식 ELP1을 CS 부회로(270)로 출력하고 오류 평가 다항식 메모리(210)를 업데이트한다. BM 서브회로(250)는 BM 알고리즘을 적용하여 ELP1을 구성한다. ELP1은 오류 평가 다항식 EEP의 함수로서 BM 서브회로(250)에 의해 계산되고, 이것은 오류 평가 다항식 하위 회로(230)에 의해 수신된 리드-솔로몬 신드롬 RSS의 함수이다. BM 서브회로(250)의 출력은 ELP1을 포함한다. ELP1은 GRS 코드워드 R에 대해 수신된 프레임에서 오류 E1의 위치와 관련된 0을 갖는 최소 다항식이다. 새롭거나 업데이트된 EEP가 계산되어 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하는 결과가 나올 때마다, 오류 위치 다항식 ELP1이 업데이트된다. 오류 위치 다항식(ELP1)의 계수는 프레임이 성공적으로 디코딩될 때 일치하는 단항식을 사용하여 나눗셈으로 업데이트된다.
CS 서브회로(270)는 Chien 검색을 수행하여 ELP1을 기반으로 오류 E1의 위치를 식별한다. Chien 검색은 Singleton 경계가 충족되기 전에 허용 가능한 오류 maxE1의 수를 조건으로 하거나 제한하여 수행될 수도 있다. 예를 들어, 오류 E1의 수가 코드워드가 싱글톤 범위를 충족하지 않는 경우 Chien 검색이 수행되지 않을 수 있다. CS 서브회로(270)는 오류 식별을 Err idx로서 포니 서브회로(280)에 출력한다.
포니 서브회로(280)는 CS 서브회로(270)로부터의 오류 식별 및 오류 위치 다항식 ELP1에 기초하여 종래의 포니 처리를 수행한다. 포니 서브회로(280)는 다항식 평가 하드웨어를 포함하고, 수정된 기호, 식별 idx 및 err로 오류를 출력한다. RSD 회로(228)에서의 처리는 리드-솔로몬 코드워드의 모든 프레임 및 기호가 수신되기 전에 시작할 수 있으며, 프레임이 비순차적으로 수신될 때를 포함한다. 오류 평가 다항식 메모리(210) 및 오류 위치 다항식(ELP1)은 모든 프레임 및 기호가 수신되기 전에도 RSD 회로(228)에서 처리를 수행하기 위해 제공된다.
도 2b에서, 오류 위치 다항식 ELP1 레지스터는 리드-솔로몬 디코더(200)와 별도로 도시되어 있다. 초기 소거 위치 다항식 ELP0은 알려진 위치 또는 소거로 구성된다. 초기 ELP0 다항식의 구축은 간단하다: 각 소거 j(디코드에 성공하지 못한 프레임 "j")에 대해, ELP0에 단항식(1-αjx)을 곱한다. 이 흐름에서, 소거 위치 다항식(ELP0)은 디코딩되지 않은 프레임을 소거로 취하여, 조기에 계산될 수 있다. 디코딩된 청크마다 오류 위치 다항식 ELP1을 계산한 다음에, 다시 계산하는 것을 피하기 위해, 초기 소거 위치 다항식(ELP0)은 디코딩을 통해 유지된다. 소거 위치 다항식(ELP0)은 모든 프레임이 디코딩되기 전에 모든 소거 위치로 소거 위치 다항식(ELP0)의 초기값을 초기화하여 디코딩을 통해 유지되므로 누락된 프레임을 "소거"라고 한다. 프레임이 성공적으로 디코딩되면, 보조 ELP를 일치하는 단항으로 나누어 초기 ELP0에서 제거한다. BM 처리 및 Chien 검색이 성공적으로 수행되어 오류가 검출되고 발견되면, 초기 ELP0에 오류 위치 다항식 ELP1을 곱한다. 업데이트는 보조 ELP에도 제공된다.
도 2의 리드-솔로몬 디코더(200)를 사용하여, 리드-솔로몬 디코딩의 제2 활성화 및 제3 활성화는 리드-솔로몬 신드롬 재생성 또는 오류 위치 다항식 계수 재생성 없이 수행된다. 대신에, 언급한 바와 같이, 새롭거나 업데이트된 오류 평가 다항식이 각 활성화에 대해 계산되고, 오류가 발견되면 보조 ELP가 업데이트된다. 리드-솔로몬 디코더(200) 외부에 대한 메모리의 오류 위치 다항식 계수는 활성화 중에 적어도 하나의 오류가 식별될 때 업데이트된다.
ELP 초기 값은 j=0,...,(N-1)에 대해 모든 단항식(1- αjx)의 배수이고 N의 초기 차수를 갖는 다항식이다. 초기 값은 비율마다 행의 수가 다르기 때문에, 비율별로 설정된 매개변수가 된다. 계수 레지스터의 수는 최대 행의 수에서 파생된다.
ELP에 대한 각각의 업데이트는 몇 사이클이 걸릴 수 있다. RSD 회로(228)는 모든 단계에서 ELP와 함께 작동하기 때문에, 리드-솔로몬 디코딩 활동 동안 리드-솔로몬 디코딩으로부터의 업데이트만이 허용된다. 프레임 디코더 업데이트는 선입선출(fifo) 메모리에 누적될 수 있으며 리드-솔로몬 디코딩이 활성화되지 않은 경우에만 업데이트된다.
상술한 바와 같이, 도 2b의 리드-솔로몬 디코더는 여러 단계로 나누어진 흐름이 있다. 제1 단계는 리드-솔로몬 신드롬(RSS) 및 초기 소거 위치 다항식 ELP0에 대한 입력을 즉석에서 준비하고 유지하는 것이다. 리드-솔로몬 디코딩이 수행되며 오류 평가 다항식(EEP)을 생성하고 오류 감지를 수행하는 단계를 포함한다. 일부 실시 예에서, BM 알고리즘이 적용되며, 오류가 감지된 경우에만 조건부로 Chien 검색을 수행한다. 수정된 코드워드를 생성하기 위해 포니 처리가 수행된다. 리드-솔로몬 복호에 대한 입력은 리드-솔로몬 신드롬(RSS) 및 초기 소거 위치 다항식 ELP0을 포함하며, RSS와 ELP0는 디코딩 흐름을 통해 유지된다. 초기 ELP0 및 RSS는 각 프레임 청크가 끝난 후 여러 주기 내에서 사용할 준비가 된다. 또한 RSS 및 ELP0의 유지 관리는 RSD 코어 외부에 있으며, 메모리 및 마이크로 프로세서와 같은 다른 회로 요소를 사용하여 물리적으로 분리될 수 있다.
오류 평가 다항식(EEP) 계산은 ELP 차수로 인해 대기 시간이 발생하는 다항 컨벌루션 연산이다. 대기 시간을 줄이기 위해 EEP 계산을 위한 하드웨어를 병렬화할 수 있다. BM 알고리즘 처리에서, 신드롬 S1을 도출할 수 있고, EEP 계수로부터 오류를 검출할 수 있다. BM 알고리즘 처리 및 Chien 검색은 오류 검출 여부에 따라 조건부로 활성화될 수 있다. BM 알고리즘은 오류 위치 다항식 ELP1을 계산한다. Chien 검색은 ELP, RSS 및 EEP가 그에 따라 업데이트되도록 오류 인덱스를 찾는다. 포니 처리에서, 잘못된 기호에 대한 올바른 값은 업데이트된 ELP 및 EEP를 사용하여 계산된다. 도 3a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 신드롬 로직을 도시한다.
도 3a의 신드롬 로직(300)은 도 2a의 신드롬 로직(222)에 대응한다. 도 3a에서, 폴라는 프레임 디코더를 나타내며 폴라 성공, 프레임 식별 idx 및 고정된 기호에 대한 정보를 제공한다.
신드롬을 계산하기 위해 여러 가지 다른 하드웨어 구현이 가능한다. 전형적으로, 호너(Horner) 규칙은 신드롬을 계산하는 데 사용되며 모든 입력이 순서대로 수신될 때 유효하다. 그러나, 본 명세서 전반에 걸쳐 설명된 바와 같이, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩은 모든 입력이 수신되기 전에, 그리고 수신된 입력이 순서대로가 아닌 경우에도 구현될 수 있다. 호너 규칙의 경우, 각 신드롬 Si, (i=0,...,D-1)에 대해, 신드롬 값은 αi에서 입력 다항식의 평가이다. 입력 기호는 높은 차수부터 시작하여 다항식 계수라고 할 수 있다. 리드-솔로몬 코드워드의 모든 순차 기호에 대한 신드롬 계산은 선택적으로 병렬 처리와 함께 "호너 규칙"에 의해 구현될 수 있다.
도 3b는 대표적인 실시 예에 따른, 리드-솔로몬 디코딩을 위한 종래의 신드롬 로직을 예시한다.
도 3b는 둘의 병렬로 (모든 기호에 대해) i번째 신드롬을 계산하는 하드웨어(320)를 보여준다. 도 3a의 신드롬 로직(300)에 의해 구현되는 호너 규칙 신드롬 계산은 모든 기호가 순서대로 수신될 때 효율적이다. 종래의 신드롬 로직은 모든 기호가 순서대로 수신될 때 효율적이다.
도 3c는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 신드롬 로직을 도시한다.
도 3c는 하드웨어(330)를 신드롬의 직접 계산을 위한 제1 대안 하드웨어 구현으로 도시한다. 신드롬의 직접 계산은 위치 j에서 단일 기호에 의한 단일 신드롬 Si의 무작위 업데이트를 위해 일반적인 하드웨어를 사용할 수 있다.
도 3c의 기호 j로부터의 신드롬 Si에 대한 일반적인 하드웨어는 신드롬에 대한 각 기호 rj의 기여도를 계산하고 기여도를 누적한다. 신드롬 Si의 경우, j번째 프레임의 기여도는 Rj*αij이다.
도 3c의 직접적인 구현은 일반적인 GF 승수를 사용하기 때문에 더 많은 면적이 필요할 수 있지만, 도 3b의 호너 구현은 상수 승수를 사용한다. 직접 구현에는 i*j mod (2m-1)의 예비적인 계산이 필요할 수 있다. 반면 직접 구현은 호너 구현에 비해 장점이 있다. 예를 들어, 기호가 순서 없이 도착하면, 직접 구현을 사용하는 것이 더 쉽고 빠르다. 이것은 폴라 MC가 감지될 때, 행이 몇 "라운드"에서 디코딩될 수 있다는 사실에 유용할 수 있다.
이하 설명되는 바와 같이, 리드-솔로몬 디코딩은 파이프라인에서 활성화되는 2개의 주요 단계로 분할될 수 있다. 입력이 소거만 포함하는지 또는 소거와 오류 둘다 포함하는지에 따라 두 가지 경로가 달라질 수 있다.
도 4a는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩에서 소거 있고 오류 없는 파이프라인 디코딩을 위한 리드-솔로몬 흐름을 도시한다.
입력이 소거(삭제)만을 포함하는 경우, 도 4a에 도시된 전체 파이프라인에서 여러 리드-솔로몬 코드워드가 계산될 수 있다. 도시된 바와 같이, 제2 리드-솔로몬 코드워드(RS2)에 대한 EEP는 제1 리드-솔로몬 코드워드(RS1)에 대한 포니와 동시에 계산될 수 있다. 제3 리드-솔로몬 코드워드(RS3)에 대한 EEP의 계산은 제2 리드-솔로몬 코드워드(RS2)의 계산이 끝나면 시작되고, 제1 리드-솔로몬 코드워드(RS1)의 계산이 종료되면 제2 리드-솔로몬 코드워드(RS2)의 계산이 시작된다. 유사하게, 제1 리드-솔로몬 코드워드(RS1), 제2 리드-솔로몬 코드워드(RS2) 및 제3 리드-솔로몬 코드워드(RS3)에 대한 포니 프로세스는 순차적이다.
도 4b는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩에서 제1 RS 코드워드의 소거 및 오류가 있는 파이프라인 디코딩을 위한 리드-솔로몬 흐름을 도시한다.
도 4b는 소거와 함께 오류가 존재할 때 파이프라인을 예시한다. 도시된 바와 같이, 제2 리드-솔로몬 코드워드 RS2에 대한 EEP 이후 오류가 감지되면, EEP 컨볼루션 하드웨어를 재사용하여 BM이 시작되고, 이는 제3 리드-솔로몬 코드워드 RS3에 대한 EEP의 시작을 지연시킨다. 추가적으로, 제2 리드-솔로몬 코드워드 RS2에 대한 Chien 검색은 Chien 검색이 포니 하드웨어를 재사용하기 때문에 이 실시 예에서 종료하기 위해 제1 리드-솔로몬 코드워드 RS1에 대한 포니 처리를 기다린다. EEP 및 ELP 업데이트는 EEP 컨볼루션 하드웨어를 재사용하는 BM 알고리즘 및 Chien 검색에 사용된다. 제3 리드-솔로몬 코드워드(RS3)의 처리는 제2 리드-솔로몬 코드워드(RS2)를 기반으로 ELP 및 RSS가 업데이트되면 시작될 수 있다.
도 4b에서, BM 알고리즘과 Chien 검색 업데이트로 구성된 오류 계산 단계에 들어가면 파이프라인이 중지되는데, 이는 두 가지 이유 때문이다. 오류 계산은 확률이 낮은 이벤트이므로, EEP 및 포니의 하드웨어가 재사용된다. 또한 오류 계산 단계 동안, ELP가 변경되고 신드롬이 업데이트되므로, 다음 리드-솔로몬 코드워드는 업데이트된 RSS/ELP로 처리된다.
도 5는 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 폴라 디코더를 도시한다.
도 5의 처리 회로(500)는 폴라 제어(522) 서브회로(폴라 제어 서브회로), 스폴라(Spolar) 제어 및 상태 변수(524) 서브회로 및 RS 제어(526)(리드-솔로몬 제어 서브회로)을 갖는, 디코더 코어(520)를 포함한다. 도 5의 처리 회로(500)는 초기 레지스터 전송 레벨(RTL)에 대한 폴라 디코더에서의 구현을 위해 제공될 수 있다. 본 명세서에서 사용된 바와 같이, "스폴라"라는 용어는 폴러 행 및 RS 열을 갖는 GCC를 나타내므로, 폴러는 스폴라의 빌딩 블록으로 행 디코더를 제공한다.
도 5의 처리 회로(500)에 대한 디코드 흐름은 도 6를 통해 다음에 설명된다.
도 6은 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 폴라 디코더 흐름을 도시한다.
디코드 흐름은 공통 제어 변수를 공유하고 "폴라 제어" 흐름에 따라 동기화되는, 2개의 개별 흐름, 폴라 제어 및 RS 제어로 분할될 수 있다. 폴라 제어는 모든 프레임이 성공하거나 현재 디코딩 레벨에서 디코딩되고 리드-솔로몬 디코딩이 선택 사항이 아닐 때까지(디코드 실패), 주기적인 디코딩을 위해 프레임 스캔을 포함할 수 있다. 코드 계획(알고리즘 성능용) 및 디코딩 TP를 최적화하기 위해 유지되는 개별 "단계"를 최적화할 수 있다. RS 제어는 예를 들어 정의된 안전 임계값을 기반으로 하지만 디코딩되지 않은 프레임과 실패한 프레임을 모두 소거로 참조하는, 모든 폴라 프레임을 기다리지 않고, 허용되는 즉시 리드-솔로몬 디코딩을 시작하는 것을 포함할 수 있다. 리드-솔로몬 디코딩이 성공함에 따라, 또 다른 "고정 청크"가 작업 가능하게 되고, 폴라 디코더는 나머지 프레임에 대해 새로 사용 가능한 청크를 사용하기 시작한다.
도 6은 예시적인 디코드 흐름을 도시한다. 도시된 바와 같이 디코딩 흐름이 시작되기 전에, 폴라 프레임 청크는 진행 가능하기에 충분할 때까지 디코딩된다. 단계 1(S610)에서는 폴라 프레임을 청크 단위로 디코딩한다. 단계 2(S620)에서, 청크가 끝나면 새로운 프레임 청크가 전체 파이프라인으로 시작된다. 단계 3(S630)에서, 폴라 결과에 따라 RSS와 ELP를 업데이트한다. 단계 4(S640)에서, 제1 RSS 열과 ELP(제1 계수)가 준비되면, 리드-솔로몬 디코딩을 시작할 수 있다. 단계 5(S650)에서, 리드-솔로몬 디코딩은 오류 검출시 ELP를 업데이트하는 결과를 가져온다. 단계 6(S660)에서, 파이프라인 내 또 다른 리드 솔로몬 코드워드가 리드 솔로몬 디코딩을 진행한다. 단계 7(S670)에서, 청크 처리가 끝나기 전에 마지막 리드-솔로몬 코드워드가 끝난다.
도 7은 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩을 위한 폴라 디코더 흐름을 도시한다.
신드롬을 유지하기 위한 가이드라인으로서, 리드-솔로몬 신드롬 버퍼는 각 열의 모든 고정 기호에 대해 계산된 신드롬을 포함할 수 있다. 구현을 위해 모든 디코딩된 프레임에 대한 모든 실패 또는 성공은 OB의 고정 기호에 기록되고 신드롬 열을 업데이트하는 데 사용될 수 있다. 실패한 프레임의 경우, 업데이트는 0이 된다. 고정되고 초기화되지 않은 디코딩되지 않은 프레임은 플래그 지정될 수 있으며 고정 기호는 신드롬 계산을 위해 0으로 간주된다. 폴라 프레임이 다시 디코딩되면, 신드롬에 대한 이전 디코드의 기여는 신드롬 계산을 위해 "오래된" 고정된 기호를 새 기호에 추가함으로써 취소된다. 폴라 및 리드-솔로몬 디코딩 중 신드롬 유지는 다른 시간 프레임에서 발생할 수 있다. 리드-솔로몬 디코딩은 안정적인 신드롬을 필요로 할 수 있다.
단계 1(S705), 단계 3(S715), 단계 7(S735) 및 단계 23(765)에서는 폴라 프레임 청크 단위로 디코딩된다. 청크가 끝나면 새로운 프레임 청크가 전체 파이프라인으로 시작된다. 단계 2(S710)와 단계 8(S740)에서, 폴라 결과에 따라 RSS와 ELP를 업데이트한다. 단계 4(S720)와 단계 9(S745)에서, 오류 검출이 수행되고, 단계 5(S725)와 단계 12(S760)에서는 포니 처리가 수행된다. 단계 6(S730)에서 고정된 기호는 고정된 메모리에서 업데이트된다.
단계 10(S750)에서, S745에서 오류가 검출되면 BM 처리가 수행되고 Chien 검색이 수행된다. 단계 11(S755)에서, 단계 12(S760)의 포니 처리 이전에 EEP 업데이트와 ELP 업데이트를 수행한다. S755에서의 ELP1 값의 업데이트 및 ELP 업데이트를 통한 RSS 값 및 ELP1 값의 지속적인 유지는 다중 RS 코드워드의 파이프라인 또는 병렬 디코딩을 지원한다. 또한, 오류 검출에 기반한 이 프로세스의 조건은 S715에서 S730까지의 처리에서와 같이 오류가 검출되지 않은 경우에 대한 처리의 감소를 가능하게 한다. 도 7의 사용 예에 대해, 모든 청크 프레임의 폴라 업데이트의 결과는 성공, 실패 또는 MC의 표시로서 청크의 끝에 도달하게 된다. 업데이트는 업데이트할 열의 수 및 하드웨어 병렬 처리 사용 여부에 따라 여러 주기가 걸릴 수 있다. 신드롬 계산은 제1 리드-솔로몬 디코딩이 가능한 한 빨리 시작될 수 있도록 하기 위해, 제1 신드롬 열 업데이트에 우선순위를 둘 수 있다. 리드-솔로몬 코드워드 i의 리드-솔로몬 디코딩은 코드워드 i에 대한 신드롬 업데이트가 완료될 때까지 기다린다. 수정된 코드워드 i의 경우, 고정된 기호가 고정된 메모리에서 업데이트되고, 리드-솔로몬 디코딩이 올바른 리드-솔로몬 코드워드를 출력하므로 코드워드 i에 대한 신드롬은 0이 된다. 폴라 디코딩이 성공하고 디코딩된 단어의 고정 값이 일치하지 않는 경우, 폴라 디코딩은 "오정확"인 것으로 간주된다.
고정 업데이트는 청크가 끝나기 전에 리드-솔로몬 디코딩에 의해 완료될 수 있다. 소거를 포함하여 모든 프레임에 대해 기호가 수신됨에 따라 리드-솔로몬 디코딩에 의한 고정된 값의 업데이트는 메모리 콘텐츠(xor)에 대해 상대적이며, 제1 라운드에서 디코딩되지 않은 모든 프레임에 플래그 지정되고, 고정된 메모리의 데이터는 초기화되지 않고 대신 0으로 처리된다는 예외가 있다.
제1 라운드를 제외하고, 고정 업데이트는 읽기-수정-쓰기 절차에 의해 폴라에 의해 완료될 수 있으므로, 다음 단계 기호만이 오버런되도록 한다. 제1 라운드에서는, 읽기 대신 0이 사용된다. 신드롬의 경우, 다음 신드롬 열은 기존 폴라 고정 기호와 새 기호 사이의 델타로 업데이트된다. 폴라 프레임 실패 경우, 다음 고정 기호만이 업데이트되고, 리드-솔로몬 디코딩으로 이미 계산된 고정 기호는 변경되지 않는다. 성공적인 프레임에 대해, 기호의 값이 일치해야 한다. 리드-솔로몬 디코딩에 의해 감지된 오정확은 특수 핸들을 필요로 하지 않는다.
도 8은 대표적인 실시 예에 따른, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩을 위한 RSS의 폴라 디코더 업데이트를 도시한다.
도 8은 고정된 기호 및 신드롬에 대한 하드웨어 블록 폴라 업데이트를 도시한다. 프레임 디코드가 완료되면, 해당 고정 라인이 업데이트되고 상위 스테이지의 다음 고정 기호가 업데이트된다. 업데이트된 각 고정 기호에 대해, 신드롬은 "이전" 및 "신규"로 계산되어 이전 항목을 취소하고 새 항목을 추가한다. 초기화되지 않은 오래된 고정 기호는 0이 된다. 디코딩되지 않은 리드-솔로몬 코드워드의 신드롬만 업데이트된다. 신드롬 업데이트 인터페이스는 병렬이므로 주기당 몇 가지 신드롬이 업데이트된다.
리드-솔로몬 스테이지와 폴라 스테이지의 경우, 스테이지의 수는 선택적인 고정 기호의 최대 수이며, 이는 도 8에서 "n"으로 표시된 신드롬 열의 수이기도 하다. 리드-솔로몬 디코딩은 1부터 시작하는 신드롬 열을 사용하여 코드워드를 하나씩 디코딩한다. 단어 i의 리드-솔로몬 디코딩이 성공하면, i에 대한 신드롬 열이 표시되고 이후 상위 열만 업데이트된다.
폴라 디코드 "스테이지"는 청크마다 정의되며, 최신 리드-솔로몬 디코딩 코드워드까지이다. 예를 들어, 리드-솔로몬 디코딩이 방금 코드워드 RS2를 디코딩했다면, 다음 청크에서 폴라 디코드 스테이지는 최대 2일 수 있다. 신드롬 추가 계산을 위한 로직 블록, 즉 "신드롬 추가 계산" 로직은 "RS_status" 정보를 참조하여 스테이지를 결정한다. 폴라 디코드 스테이지는 폴라 디코더에서 고정 기호로의 업데이트로 참조된다. 폴라 결과를 고정 메모리(OB)로 업데이트할 때, 폴라 디코드 단계까지 고정된 기호가 입력으로 사용되고, 따라서 메모리에서 고정된 기호를 일치시키는 것이 보장된다. 폴라 디코드 스테이지 이후의 고정 기호는 이미 리드-솔로몬 디코딩에 의해 수정되었을 수 있다. 프레임이 정확하면, 값이 일치해야 한다. 프레임이 정확하지 않으면, 리드-솔로몬 스테이지 보다 상위의 기호만 쓴다. 프레임이 정확하고 고정된 기호가 리드 솔로몬 디코딩 결과와 일치하지 않는 경우, 디코딩된 프레임은 오정확인 것으로 가정되고, 예를 들어 리드-솔로몬 디코딩이 오정확할 확률이 훨씬 낮기 때문에 실패한 프레임으로 처리된다.
따라서, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코더는 본 명세서에서 설명된 비순차적 입력 처리에 의해 제공된다. 본 명세서의 교시는 감소된 게이트 카운트 및 비순차적 입력을 처리하는 능력을 가져온다. 결과적으로 리드-솔로몬 디코더는 가능한 한 빨리 활성화되어 폴라 디코더 성능을 향상시킬 수 있다. 리드-솔로몬 디코딩은 디코딩된 프레임의 부분 데이터에 대해 수행될 수 있으며 누락된 날짜는 소거로 처리된다. 수신된 입력에 대해 계산된 오류 위치 다항식(ELP) 및 리드-솔로몬 신드롬(RSS)에 대해 시스템 상태를 유지하고 입력을 이전에 수신한 입력에 누적할 수 있다.
상기 교시는 오류의 부재를 조기에 검출하는 것에 기초하여 적절할 때 처리 집약적 단계를 우회함으로써, 효율적으로 수행되는 개선된 일반화된 GRS 디코딩을 사용하는 능력을 참조한다. 단계를 우회한다는 것은 동적 결정에 기초하여 기능이 수행될 때 기능이 수행되지 않음을 의미할 수 있다. 추가적으로, 처리 집약적 단계는 적절한 경우 소거 E0의 고려를 제거하고 오류 E1의 수가 코드워드가 싱글톤 경계를 벗어나는 결과를 초래할 것이라는 사전 결정에 기초하여 Chien 검색을 제거하여, 보다 효율적으로 수행될 수 있다. 구현 복잡성을 줄이기 위해서, BM 알고리즘 및 Chien 검색의 적용은 (하드웨어에서 구현될 때) 이러한 블록의 면적 및 전력 소비를 줄이기 위해 제한될 수 있다. 단순화는 주로 최대 ELP 차수의 감소와 이러한 단계의 불필요한 활성화의 건너뛰기로 인해, BM 알고리즘 및 Chien 검색 단계의 적용에서 발생할 수 있다.
전술한 바와 같이, 각 RS 코드의 시작 부분에 RSS 및 ELP0를 적용하고 GCC 디코딩 흐름에서 상당한 대기 시간으로 상당한 계산을 부과하는 대신, 본 명세서에서 교시는 다수의 RS 코드워드의 파이프라인 또는 병렬 디코딩을 지원하는 방식으로 디코딩을 통해 RSS 값 및 ELP0 값의 연속적인 유지를 제공한다.
낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩이 여러 예시적인 실시 예를 참조하여 설명되었지만, 사용된 단어는 제한하고자하는 단어가 아니라 설명 및 예시를 위한 단어인 것으로 이해된다. 그 측면에서 낮은 게이트 카운트와 높은 처리량의 리드 솔로몬 디코딩의 범위와 정신에서 벗어나지 않고, 현재 설명되고 수정된 첨부된 청구 범위 내에서 변경이 이루어질 수 있다. 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩이 특정 수단, 재료 및 실시 예를 참조하여 설명되었지만, 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩은 개시된 세부 사항에 제한되지 않고; 오히려 낮은 게이트 카운트 및 높은 처리량의 리드 솔로몬 디코딩은 기능적으로 동등한 모든 구조, 방법 및 첨부된 청구 범위 내에 있는 용도로 확장된다.
본 명세서에 기술된 실시 예의 예시는 다양한 실시 예의 구조에 대한 일반적인 이해를 제공하기 위한 것이다. 예시는 본 명세서에서 설명된 개시 내용의 모든 요소 및 특징에 대한 완전한 설명의 역할을 하는 것은 아니다. 많은 다른 실시 예들이 개시내용을 검토할 때 당업자에게 명백할 수 있다. 다른 실시 예들이 활용되고 본 개시로부터 도출될 수 있으므로 본 개시의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 한다. 추가적으로, 도면은 단지 표현일 뿐이며 축척에 맞게 그려지지 않을 수 있다. 도면 내의 특정 비율은 과장될 수 있으며 다른 비율로 최소화될 수 있다. 따라서, 개시 및 도면은 제한적이라기보다는 예시적인 것으로 간주되어야 한다.
본 개시내용의 하나 이상의 실시 예는 임의의 특정 발명 또는 발명적 개념에 대한 본 출원의 범위를 자발적으로 제한하려는 의도 없이 단지 편의상 "발명"이라는 용어에 의해 본원에서 개별적으로 및/또는 집합적으로 언급될 수 있다. 더욱이, 특정한 실시 예들이 본 명세서에서 도시되고 설명되었지만, 동일하거나 유사한 목적을 달성하도록 설계된 임의의 후속 배열이 도시된 특정 실시 예를 대체할 수 있음을 이해해야 한다. 본 개시는 다양한 실시 예의 임의의 및 모든 후속 적응 또는 변형을 커버하도록 의도된다. 상기 실시 예의 조합 및 여기에 구체적으로 설명되지 않은 다른 실시 예는 설명을 검토할 때 당업자에게 명백할 것이다.
개시의 요약은 청구 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않는다는 이해와 함께 제출된다. 또한, 전술한 상세한 설명에서, 개시를 간소화할 목적으로 다양한 특징들이 함께 그룹화되거나 하나의 실시 예로 설명될 수 있다. 본 개시는 청구된 실시 예가 각각의 청구범위에 명시적으로 인용된 것보다 더 많은 특징을 요구한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음의 청구범위가 반영하는 바와 같이, 본 개시의 주제는 임의의 개시된 실시 예의 특징 모두 보다 적은 것에 관한 것일 수 있다. 따라서, 다음의 청구범위는 상세한 설명에 포함되며, 각각의 청구범위는 개별적으로 청구된 주제를 정의하는 것으로 자체적으로 서 있다.
개시된 실시 예의 앞선 설명은 당업자가 본 개시에 설명된 개념을 실시할 수 있도록 제공된다. 이와 같이, 살숭된 주제는 예시적이며 제한적이지 않은 것으로 이해되어야 하며, 첨부된 청구범위는 본 개시의 진정한 사상 및 범위 내에 속하는 이러한 모든 수정, 개선 및 기타 실시 예를 포함하도록 의도된다. 따라서, 법이 허용하는 최대 범위 내에서, 본 개시의 범위는 다음 청구범위 및 그 등가물의 가장 넓은 허용 가능한 해석에 의해 결정되어야 하며, 전술한 상세한 설명에 의해 제한되거나 한정되어서는 안 된다.
220: 제1 디코더
222: 신드롬 로직
224: ELP 로직
226: RS 제어 블록
228: RSD 회로

Claims (10)

  1. 리드 솔로몬 디코더의 동작 방법으로,
    리드-솔로몬 코드워드의 기호(symbol)의 부분 입력 데이터(partial input data)를 수신하는 단계;
    상기 부분 입력 데이터를 기초하여 리드-솔로몬 신드롬을 업데이트하는 단계;
    상기 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트하는 단계;
    리드-솔로몬 디코딩의 활성화를 시작하기 전에, 메모리에서 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 유지하는 단계; 및
    리드-솔로몬 디코딩의 제1 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하는 단계를 포함하되,
    상기 리드-솔로몬 디코딩의 제1 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하는 단계는,
    제1 오류 평가 다항식으로 초기 오류 평가 다항식을 계산하는 단계와,
    상기 제1 오류 평가 다항식에 기초하여 오류 검출을 수행하여 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하는 단계와,
    상기 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 상기 오류 위치 다항식을 업데이트하는 단계를 포함하고,
    상기 메모리의 상기 오류 위치 다항식 계수는 적어도 하나의 오류가 상기 리드-솔로몬 코드워드에서 식별될 때 리드-솔로몬 디코딩의 각각의 활성화 동안 업데이트되는, 방법.
  2. 제1항에 있어서,
    제2 오류 평가 다항식을 계산하고, 상기 제2 오류 평가기 다항식에 기초하여 오류 검출을 수행하여 상기 입력 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하고, 상기 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 상기 오류 위치 다항식을 업데이트하는 단계를 포함하는 리드-솔로몬 디코딩의 제2 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하는 단계; 및
    제3 오류 평가 다항식을 계산하고, 상기 제3 오류 평가 다항식에 기초하여 오류 검출을 수행하여 상기 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하고, 상기 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 상기 오류 위치 다항식을 업데이트하는 단계를 포함하는 리드-솔로몬 디코딩의 제3 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    리드-솔로몬 디코딩의 상기 제2 활성화 및 상기 제3 활성화는 상기 리드-솔로몬 신드롬의 재생성 또는 오류 위치 다항식 계수의 재생성 없이 수행되는, 방법.
  4. 제2항에 있어서,
    상기 제1 오류 평가 다항식에 기초하는 상기 오류 검출에서 오류가 검출되면, 상기 오류 위치 다항식에서 오류 위치 다항식 계수를 업데이트하는 단계; 및
    상기 제2 오류 평가 다항식에 기초하는 상기 오류 검출에서 오류가 검출되면, 상기 오류 위치 다항식에서 오류 위치 다항식 계수를 업데이트하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 오류 위치 다항식에 기초하여 리드-솔로몬 디코딩의 상기 제1 활성화에서 상기 제1 오류 평가 다항식을 계산하는 단계; 및
    상기 오류 위치 다항식에 기초하여 리드-솔로몬 디코딩의 상기 제2 활성화에서 상기 제2 오류 평가 다항식을 계산하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 리드-솔로몬 디코딩의 제1 활성화는 상기 리드-솔로몬 코드워드의 모든 기호가 수신되기 전에 리드-솔로몬 코드워드에 대해 수행되는, 방법.
  7. 제1항에 있어서,
    상기 메모리의 상기 오류 위치 다항식 계수는 프레임이 성공적으로 디코딩되면 일치하는 단항식을 사용하여 나눔으로써 업데이트되는, 방법.
  8. 리드 솔로몬 코드워드를 디코딩하기 위한 디코딩 장치로,
    리드-솔로몬 코드워드의 기호의 부분 입력 데이터를 수신하는 인터페이스;
    메모리; 및
    디코딩 회로를 포함하고,
    상기 디코딩 회로는,
    상기 부분 입력 데이터를 기반으로 리드-솔로몬 신드롬을 업데이트하고,
    상기 부분 입력 데이터에 기초하여 오류 위치 다항식 계수를 업데이트하고,
    리드-솔로몬 디코딩의 활성화를 시작하기 전에 메모리에서 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 유지하고,
    제1 오류 평가 다항식으로 초기 오류 평가 다항식을 계산하고, 상기 제1 오류 평가 다항식에 기초하여 오류 검출을 수행하여 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하고, 상기 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 상기 오류 위치 다항식을 업데이트하여, 리드-솔로몬 디코딩의 제1 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하도록 구성되고,
    상기 메모리의 상기 오류 위치 다항식 계수는 적어도 하나의 오류가 상기 리드-솔로몬 코드워드에서 식별될 때 리드-솔로몬 디코딩의 각각의 활성화 동안 업데이트되는, 장치.
  9. 제8항에 있어서,
    상기 디코딩 회로는,
    제2 오류 평가 다항식을 계산하고, 상기 제2 오류 평가기 다항식에 기초하여 오류 검출을 수행하여 상기 입력 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하고, 상기 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 상기 오류 위치 다항식을 업데이트하여, 리드-솔로몬 디코딩의 제2 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하고,
    제3 오류 평가 다항식을 계산하고, 상기 제3 오류 평가 다항식에 기초하여 오류 검출을 수행하여 상기 입력된 리드-솔로몬 코드워드에서 오류의 존재 및 위치를 결정하고, 상기 입력된 리드-솔로몬 코드워드에서 오류가 발견되면 상기 오류 위치 다항식을 업데이트하여, 리드-솔로몬 디코딩의 제3 활성화에, 상기 리드-솔로몬 신드롬 및 상기 오류 위치 다항식 계수를 입력하도록 더욱 구성되는, 장치.
  10. 제9항에 있어서,
    리드-솔로몬 디코딩의 상기 제2 활성화 및 상기 제3 활성화는 상기 리드-솔로몬 신드롬의 재생성 또는 오류 위치 다항식 계수의 재생성 없이 수행되는, 장치.
KR1020230089051A 2022-11-09 2023-07-10 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩 KR20240067786A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/983,646 US20240154627A1 (en) 2022-11-09 2022-11-09 Low gate-count and high throughput reed-solomon decoding
US17/983,646 2022-11-09

Publications (1)

Publication Number Publication Date
KR20240067786A true KR20240067786A (ko) 2024-05-17

Family

ID=90928352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230089051A KR20240067786A (ko) 2022-11-09 2023-07-10 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩

Country Status (3)

Country Link
US (1) US20240154627A1 (ko)
KR (1) KR20240067786A (ko)
CN (1) CN118018041A (ko)

Also Published As

Publication number Publication date
CN118018041A (zh) 2024-05-10
US20240154627A1 (en) 2024-05-09

Similar Documents

Publication Publication Date Title
US9998148B2 (en) Techniques for low complexity turbo product code decoding
TWI754670B (zh) 極化碼之並列連續消除解碼與連續消除清單解碼的裝置和方法、製造方法及建立方法
Chen et al. Error correction for multi-level NAND flash memory using Reed-Solomon codes
US7958427B1 (en) ECC with out of order completion
US10484020B2 (en) System and method for parallel decoding of codewords sharing common data
US9391641B2 (en) Syndrome tables for decoding turbo-product codes
US10439649B2 (en) Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US8640010B2 (en) Decoding apparatus and decoding method
US10498366B2 (en) Data dependency mitigation in parallel decoders for flash storage
US8196006B2 (en) Modified branch metric calculator to reduce interleaver memory and improve performance in a fixed-point turbo decoder
CN103514061A (zh) 用于打破陷阱集的装置和方法
US10200066B2 (en) Code reconstruction scheme for multiple code rate TPC decoder
US11750219B2 (en) Decoding method, decoder, and decoding apparatus
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
KR20240067786A (ko) 낮은 게이트 카운트 및 높은 처리량의 리드-솔로몬 디코딩
KR101569637B1 (ko) 테스트 신드롬을 이용한 반복 복호 과정이 없는 연판정 bch 복호 방법 및 장치
KR100594002B1 (ko) 가변 처리가 가능한 파이프라인 구조의 리드 솔로몬 복호기
US9236890B1 (en) Decoding a super-code using joint decoding of underlying component codes
KR101974301B1 (ko) 플래시 메모리의 오류 정정을 위한 대칭형 연접 비씨에이치 복호화기와 이를 이용한 오류 정정 방법 및 시스템
US11855658B1 (en) Efficient hard decision decoding of generalized Reed-Solomon codes in presence of erasures and errors within the singleton bound
KR101267958B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
Zhang Decoding of generalized three-layer integrated interleaved codes
KR101226439B1 (ko) 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법
RU2811072C1 (ru) Способ декодирования, декодер и устройство декодирования
CN113014267B (zh) 译码方法、设备、可读存储介质、芯片及计算机程序产品