KR20240035026A - 의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템 - Google Patents

의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템 Download PDF

Info

Publication number
KR20240035026A
KR20240035026A KR1020220113963A KR20220113963A KR20240035026A KR 20240035026 A KR20240035026 A KR 20240035026A KR 1020220113963 A KR1020220113963 A KR 1020220113963A KR 20220113963 A KR20220113963 A KR 20220113963A KR 20240035026 A KR20240035026 A KR 20240035026A
Authority
KR
South Korea
Prior art keywords
data
memory
parity check
ecc
syndrome
Prior art date
Application number
KR1020220113963A
Other languages
English (en)
Inventor
현지환
김찬기
김재화
노종선
최정환
Original Assignee
삼성전자주식회사
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 서울대학교산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020220113963A priority Critical patent/KR20240035026A/ko
Priority to US18/132,415 priority patent/US20240097709A1/en
Priority to CN202310771337.1A priority patent/CN117667499A/zh
Publication of KR20240035026A publication Critical patent/KR20240035026A/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/159Remainder calculation, e.g. for encoding and syndrome calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/033Theoretical methods to calculate these checking 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/17Burst error correction, e.g. error trapping, Fire 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

ECC 디코더는 신드롬 생성기 및 버스트 에러 정정기를 포함한다. 신드롬 생성기는 입력 데이터 및 의사순환 코드 기반의 패리티 검사 행렬을 이용하여, 글로벌 신드롬 데이터 및 로컬 신드롬 데이터를 생성한다. 버스트 에러 정정기는 글로벌 신드롬 데이터 및 로컬 신드롬 데이터를 이용하여 입력 데이터에 포함된 에러를 정정한다. 입력 데이터는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함한다. 입력 데이터에서 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러 및 입력 데이터에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러를 동시에 정정 가능하도록 구현된다.

Description

의사순환 코드를 이용한 ECC 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템{ERROR CORRECTION CODE DECODER USING CONSTACYCLIC CODE, AND MEMORY DEVICE AND MEMORY SYSTEM INCLUDING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 의사순환 코드(constacyclic code)를 이용한 ECC(error correction code) 디코더, 및 상기 ECC 디코더를 포함하는 메모리 장치 및 메모리 시스템에 관한 것이다.
반도체 메모리 장치는 플래시 메모리(flash memory)와 같은 비휘발성 메모리 장치 및 DRAM(dynamic random access memory)과 같은 휘발성 메모리 장치로 구분될 수 있다. 예를 들어, 휘발성 메모리 장치는 가격이 비교적 저렴하기 때문에 시스템 메모리와 같은 대용량 데이터를 저장하는데 사용되고 있다. 또한, 최근에는 휘발성 메모리 장치의 집적도를 높이기 위하여 공정 스케일을 축소시키고 있으며, 공정 스케일의 축소에 따라 비트 에러율(bit error rate)을 급격하게 증가하고 수율이 낮아질 것으로 예상된다. 한편, 대용량을 구현하기 위하여 복수의 휘발성 메모리 장치들이 메모리 모듈의 형태로 제공된다. 따라서, 반도체 메모리 장치 및 메모리 모듈의 비트 에러율을 감소시키고 신뢰성을 높일 수 있는 방안이 필요하다.
본 발명의 일 목적은 멀티 비트 에러와 버스트(burst) 에러를 동시에 고려하여 신뢰성을 높이면서 효율적인 ECC 디코딩을 수행할 수 있는 ECC 디코더를 제공하는 것이다.
본 발명의 일 목적은 상기 ECC 디코더를 포함하는 메모리 장치 및 메모리 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 ECC(error correction code) 디코더는 신드롬 생성기 및 버스트 에러 정정기를 포함한다. 상기 신드롬 생성기는 입력 데이터 및 의사순환 코드(constacyclic code) 기반의 패리티 검사 행렬을 이용하여, 글로벌 신드롬 데이터 및 로컬 신드롬 데이터를 생성한다. 상기 버스트 에러 정정기는 상기 글로벌 신드롬 데이터 및 상기 로컬 신드롬 데이터를 이용하여 상기 입력 데이터에 포함된 정정 가능한 에러를 정정한다. 상기 입력 데이터는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함한다. 상기 입력 데이터에서 상기 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러(burst error) 및 상기 입력 데이터에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(multi-bit error)를 동시에 정정 가능하도록 구현된다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 시스템은 메모리 모듈 및 메모리 컨트롤러를 포함한다. 상기 메모리 모듈은 복수의 메모리 장치들을 포함한다. 상기 메모리 컨트롤러는 상기 메모리 모듈을 제어하고, 시스템 ECC(error correction code) 엔진을 포함한다. 상기 시스템 ECC 엔진은 ECC 디코딩을 수행하는 시스템 ECC 디코더를 포함한다. 상기 시스템 ECC 디코더는 제1 신드롬 생성기 및 제1 버스트 에러 정정기를 포함한다. 상기 제1 신드롬 생성기는 상기 메모리 모듈로부터 제공되는 코드워드 세트 및 의사순환 코드(constacyclic code) 기반의 제1 패리티 검사 행렬을 이용하여, 제1 글로벌 신드롬 데이터 및 제1 로컬 신드롬 데이터를 생성한다. 상기 제1 버스트 에러 정정기는 상기 제1 글로벌 신드롬 데이터 및 상기 제1 로컬 신드롬 데이터를 이용하여 상기 코드워드 세트에 포함된 정정 가능한 에러를 정정한다. 상기 코드워드 세트는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함한다. 상기 코드워드 세트에서 상기 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러(burst error)를 정정하거나 상기 코드워드 세트에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(multi-bit error)를 검출 가능하도록 구현된다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 장치는 메모리 셀 어레이 및 ECC(error correction code) 디코더를 포함한다. 상기 ECC 디코더는 상기 메모리 셀 어레이로부터 제공되는 독출 데이터에 대한 ECC(error correction code) 디코딩을 수행한다. 상기 ECC 디코더는 신드롬 생성기 및 버스트 에러 정정기를 포함한다. 상기 신드롬 생성기는 상기 독출 데이터 및 의사순환 코드(constacyclic code) 기반의 패리티 검사 행렬을 이용하여, 글로벌 신드롬 데이터 및 로컬 신드롬 데이터를 생성한다. 상기 버스트 에러 정정기는 상기 글로벌 신드롬 데이터 및 상기 로컬 신드롬 데이터를 이용하여 상기 독출 데이터에 포함된 정정 가능한 에러를 정정한다. 상기 독출 데이터는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함한다. 상기 독출 데이터에서 상기 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러(burst error) 및 상기 독출 데이터에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(multi-bit error)를 동시에 검출 가능하도록 구현된다.
상기와 같은 본 발명의 실시예들에 따른 ECC 디코더, 메모리 장치 및 메모리 시스템에서는, 의사순환 코드 기반의 패리티 검사 행렬을 이용함으로써, 단일의 버스트 에러 및 멀티 비트 에러를 동시에 검출 및/또는 정정 가능하도록 ECC 디코더를 구현할 수 있다. 이에 따라, 기존에 고려하지 않았던 멀티 비트 에러 관점에서도 더욱 강인한 구조로 구현될 수 있다. 따라서, 성능 손실을 최소화하고 신뢰성을 높이면서 효율적인 ECC 디코딩을 수행할 수 있다.
도 1은 본 발명의 실시예들에 따른 ECC 디코더를 나타내는 블록도이다.
도 2는 도 1의 ECC 디코더에 제공되는 입력 데이터를 설명하기 위한 도면이다.
도 3은 도 1의 ECC 디코더의 구체적인 일 예를 나타내는 블록도이다.
도 4는 도 3의 ECC 디코더에 포함되는 버스트 에러 정정기의 동작을 설명하기 위한 도면이다.
도 5, 6a, 6b 및 6c는 도 3의 ECC 디코더에서 이용되는 의사순환 코드 기반의 패리티 검사 행렬을 설명하기 위한 도면들이다.
도 7은 본 발명의 실시예들에 따른 메모리 장치 및 메모리 시스템을 나타내는 블록도이다.
도 8은 도 7의 메모리 시스템에 포함되는 메모리 컨트롤러의 일 예를 나타내는 블록도이다.
도 9a 및 9b는 도 7의 메모리 시스템에서 메모리 칩들에 제공되거나 메모리 칩들로부터 출력되는 복수의 버스트 길이들에 대응되는 데이터 세트들의 예를 나타내는 도면들이다.
도 10은 도 8의 메모리 컨트롤러에 포함되는 시스템 ECC 엔진의 일 예를 나타내는 블록도이다.
도 11은 도 7의 메모리 시스템의 메모리 모듈에 포함되는 데이터 칩의 일 예를 나타내는 블록도이다.
도 12는 도 11의 데이터 칩에 포함되는 뱅크 어레이의 일 예를 나타내는 도면이다.
도 13은 도 7의 메모리 시스템의 메모리 모듈에 포함되는 온-다이 ECC 엔진의 일 예를 나타내는 블록도이다.
도 14 및 15는 본 발명의 실시예들에 따른 메모리 장치 및 메모리 시스템을 나타내는 블록도들이다.
도 16은 본 발명의 실시예들에 따른 ECC 디코딩 방법을 나타내는 순서도이다.
도 17은 본 발명의 실시예들에 따른 메모리 시스템에 적용될 수 있는 메모리 모듈의 일 예를 나타내는 블록도이다.
도 18은 본 발명의 실시예들에 따른 메모리 시스템의 일 예를 나타내는 블록도이다.
도 19는 본 발명의 실시예에 따른 메모리 모듈을 전자 시스템에 응용한 예를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 ECC 디코더를 나타내는 블록도이다.
도 1을 참조하면, ECC(error correction code) 디코더(50)는 신드롬 생성기(syndrome generator, SG)(60) 및 버스트 에러 정정기(burst error corrector, BC)(70)를 포함한다. ECC 디코더(50)는 버스트 디코더(burst decoder, BD) 또는 저지연(low-latency) 버스트 디코더로 지칭될 수도 있다.
신드롬 생성기(60)는 입력 데이터(rT) 및 의사순환 코드(constacyclic code) 기반의 패리티 검사 행렬(H)을 이용하여, 글로벌 신드롬 데이터(sG) 및 로컬 신드롬 데이터(sL)를 생성한다.
일 실시예에서, ECC 디코더(50)는 메모리 장치(또는 메모리 칩) 및 상기 메모리 장치를 포함하는 메모리 시스템에 포함될 수 있다. 예를 들어, 상기 메모리 시스템은 상기 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, ECC 디코더(50)는 상기 메모리 컨트롤러 및 상기 메모리 장치 중 적어도 하나에 포함될 수 있다. 이 때, 입력 데이터(rT)는 상기 메모리 장치로부터 출력(또는 독출)되어 ECC 디코딩을 수행하고자 하는 코드워드(codeword) 또는 데이터일 수 있다. 입력 데이터(rT)에 대해서는 도 2를 참조하여 후술하도록 한다.
일 실시예에서, 기존의 순환 코드(cyclic code)를 기반으로 설계된 파이어(Fire) 코드의 구조를 의사순환 코드로 변형하여, 패리티 행렬(H)을 획득할 수 있다. 의사순환 코드 및 패리티 검사 행렬(H)에 대해서는 도 5, 6a, 6b 및 6c를 참조하여 후술하도록 한다.
버스트 에러 정정기(70)는 글로벌 신드롬 데이터(sG) 및 로컬 신드롬 데이터(sL)를 이용하여 입력 데이터(rT)에 포함된 정정 가능한 에러를 정정하고, 입력 데이터(rT)에 대응하는 출력 데이터(c)를 생성 및 출력한다. 예를 들어, 입력 데이터(rT)에 상기 정정 가능한 에러가 포함되어 에러 정정이 수행된 경우에, 출력 데이터(c)는 에러 정정 데이터일 수 있다. 입력 데이터(rT)에 상기 정정 가능한 에러가 포함되어 있지 않거나 정정 불가능한 에러가 포함되어 에러 정정이 수행되지 않은 경우에, 출력 데이터(c)는 입력 데이터(rT)와 실질적으로 동일한 비정정 데이터일 수 있다.
신드롬 생성기(60) 및 버스트 에러 정정기(70)의 예시적인 구조에 대해서는 도 3 및 4를 참조하여 후술하도록 한다.
도 2는 도 1의 ECC 디코더에 제공되는 입력 데이터를 설명하기 위한 도면이다.
도 1 및 2를 참조하면, 입력 데이터(rT)에 대한 데이터 패턴 및 입력 데이터(rT)에서 발생할 수 있는 에러 패턴(또는 에러 모델)을 예시하고 있다.
입력 데이터(rT)는 제1 방향(DL) 및 제2 방향(DR)을 따라 배열되는 복수의 데이터 비트들을 포함할 수 있다. 도 2에서, 실선으로 도시된 하나의 사각형이 하나의 데이터 비트(또는 비트)를 나타낸다.
구체적으로, 각각 양의 정수인 f, v 및 u에 대해서, 입력 데이터(rT)는 fv*u인 2차원 비트 단위(bit-wise) 어레이로 나타낼 수 있다.
u는 입력 데이터(rT)의 하나의 행(row, RW)에 포함되는 데이터 비트들의 개수를 나타내며, 입력 데이터(rT)를 제공하는 메모리 장치(또는 메모리 칩)의 데이터 입출력 핀들의 개수에 대응할 수 있다. 도 2는 u=6인 경우를 나타낸다.
fv는 입력 데이터(rT)의 하나의 열(column)에 포함되는 데이터 비트들의 개수를 나타내며, 입력 데이터(rT)를 제공하는 메모리 장치(또는 메모리 칩)의 하나의 데이터 입출력 핀에서 출력되는 데이터 비트들의 개수에 대응할 수 있다. 입력 데이터(rT)의 열을 레인(lane, LN)으로 지칭할 수 있고, 하나의 레인(LN)에 포함되고 연속하는 2개 이상의 데이터 비트들을 하나의 심볼(symbol, SB)로 정의할 수 있다. 이 때, f는 하나의 심볼(SB)에 포함되는 데이터 비트들의 개수를 나타내고, v는 하나의 레인(LN)에 포함되는 심볼(SB)들의 개수를 나타낼 수 있다. 도 2는 v=3 및 f=2인 경우를 나타낸다.
제1 방향(DL)은 레인(LN)의 형성 또는 배열 방향, 즉 레인 방향을 나타내며, 제2 방향(DR)은 행(RW)의 형성 또는 배열 방향, 즉 행 방향을 나타낼 수 있다. 입력 데이터(rT)는 제2 방향(DR)을 따라 배치되는 총 u개의 레인들을 포함하고, 제1 방향(DL)을 따라 배치되는 총 fv개의 행들을 포함할 수 있다.
입력 데이터(rT) 상에서 발생할 수 있는 에러는 버스트 에러(burst error) 및 랜덤 비트 에러(random bit error)를 포함할 수 있다.
버스트 에러는 하나의 레인(LN)에서 인접한 심볼(SB)들에 대해 발생할 수 있고, 레인(LN)들에서 버스트 에러들은 독립적으로 발생할 수 있다. 즉, 버스트 에러는 레인(LN) 방향으로의 심볼 레벨에서의 후속 심볼 에러 패턴(subsequent symbol error pattern)을 나타내며, 주로 고속 인터커넥션에서 이퀄라이저 문제로 인해 발생할 수 있다. 도 2는 입력 데이터(rT)에서 2개의 심볼(SB)들에 대해 단일의(single) 버스트 에러(SBST_ERR)가 발생한 경우를 나타낸다.
랜덤 비트 에러는 임의의 레인(LN) 및 임의의 행(RW) 위치에서 발생할 수 있고, 이 때 2개 이상의 데이터 비트들에 대해 랜덤하게 에러가 발생하는 것을 멀티 비트 에러(multi-bit error)로 지칭할 수 있다. 즉, 멀티 비트 에러는 랜덤화된 에러 패턴(randomized error pattern)을 나타내며, 메모리 장치의 성능 저하에 의해 널리 퍼질 수 있다. 도 2는 입력 데이터(rT)에서 발생한 멀티 비트 에러(MB_ERR)의 일 예로서 2개의 데이터 비트들에 대해 에러가 발생한 경우, 즉 2비트 에러를 나타낸다.
본 발명의 실시예들에 따른 ECC 디코더(50)는, 의사순환 코드 기반의 패리티 검사 행렬(H)을 이용함으로써, 입력 데이터(rT)에서 제1 방향(DL)을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼(SB)들에 대해 발생하는 단일의 버스트 에러(SBST_ERR)를 정정할 수 있을 뿐 아니라, 입력 데이터(rT)에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(MB_ERR) 또한 정정할 수 있다. 즉, ECC 디코더(50)는 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR)를 동시에 정정 가능하도록 구현될 수 있다. 따라서, 성능 손실을 최소화하고 신뢰성을 높이면서 효율적인 ECC 디코딩을 수행할 수 있다.
다만 본 발명은 이에 한정되지 않으며, 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR)를 동시에 검출할 수 있고, 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR) 중 적어도 하나를 정정하도록 구현될 수 있다. 예를 들어, 단일의 버스트 에러(SBST_ERR)를 검출 및 정정할 수 있고, 멀티 비트 에러(MB_ERR)를 검출할 수 있다.
일 실시예에서, 입력 데이터(rT)는 하나의 커맨드에 기초하여 상기 복수의 데이터 비트들이 복수의 데이터 입출력 핀들을 통해 출력되는 버스트(burst) 동작에 의해 메모리 장치(또는 메모리 칩)로부터 제공되며, 이 때 제1 방향(DL)은 상기 버스트 동작의 기본 단위인 버스트 길이에 대응할 수 있다. 상기 버스트 동작에 대해서는 도 9a 및 9b를 참조하여 후술하도록 한다.
한편, 입력 데이터(rT)에 기초하여 생성되는 출력 데이터(c)는 fuv 길이의 코드워드 로 나타낼 수 있다.
도 3은 도 1의 ECC 디코더의 구체적인 일 예를 나타내는 블록도이다.
도 3을 참조하면, ECC 디코더(50a)는 신드롬 생성기(60a) 및 버스트 에러 정정기(70a)를 포함할 수 있다.
신드롬 생성기(60a)는 글로벌 신드롬 연산기(61) 및 로컬 신드롬 연산기(63)를 포함할 수 있다. 글로벌 신드롬 연산기(61)는 입력 데이터(rT) 및 패리티 검사 행렬(H)에 포함되는 글로벌 패리티 검사 행렬(HG)에 기초하여 글로벌 신드롬 데이터(sG)를 생성할 수 있다. 로컬 신드롬 연산기(63)는 입력 데이터(rT) 및 패리티 검사 행렬(H)에 포함되는 로컬 패리티 검사 행렬(HL)에 기초하여 로컬 신드롬 데이터(sL)를 생성할 수 있다. 예를 들어, 글로벌 신드롬 데이터(sG) 및 로컬 신드롬 데이터(sL)는 하기의 [수학식 1] 및 [수학식 2]에 기초하여 획득될 수 있다. (T는 전치 행렬을 나타낸다)
[수학식 1]
[수학식 2]
버스트 에러 정정기(70a)는 에러 생성기(71), 에러 확인기(73) 및 데이터 정정기(75)를 포함할 수 있다. 에러 생성기(71)는 로컬 신드롬 데이터(sL)에 기초하여 에러 데이터(eT)를 생성할 수 있다. 에러 확인기(73)는 글로벌 신드롬 데이터(sG) 및 에러 데이터(eT)에 기초하여 에러 발생 여부를 확인하고, 에러 발생 여부를 나타내는 에러 확인 신호(ECS)를 생성할 수 있다. 데이터 정정기(75)는 에러 확인 신호(ECS), 입력 데이터(rT) 및 에러 데이터(eT)에 기초하여 에러 정정 데이터(cc) 또는 비정정 데이터(nc)를 생성할 수 있다. 예를 들어, 에러 확인 신호(ECS)에 기초하여 입력 데이터(rT)에서 에러 발생이 확인된 경우에, 데이터 정정기(75)는 입력 데이터(rT) 및 에러 데이터(eT)에 기초하여 에러 정정 데이터(cc)를 생성할 수 있다. 에러 확인 신호(ECS)에 기초하여 입력 데이터(rT)에서 에러 미발생이 확인된 경우에, 데이터 정정기(75)는 입력 데이터(rT)를 비정정 데이터(nc)로서 출력할 수 있다.
일 실시예에서, 신드롬 생성기(60a) 및 버스트 에러 정정기(70a)에 포함되는 구성요소들의 일부 또는 전부는 하드웨어의 형태로 구현될 수 있다. 예를 들어, 신드롬 생성기(60a) 및 버스트 에러 정정기(70a)에 포함되는 구성요소들의 일부 또는 전부는 컴퓨터 기반의 전자 시스템에 포함될 수 있다. 다른 실시예에서, 신드롬 생성기(60a) 및 버스트 에러 정정기(70a)에 포함되는 구성요소들의 일부 또는 전부는 소프트웨어, 예를 들어 명령어 코드들 또는 프로그램 루틴들의 형태로 구현될 수도 있다. 예를 들어, 상기 명령어 코드들 또는 프로그램 루틴들은 컴퓨터 기반의 전자 시스템에 의해 실행되며 컴퓨터 기반의 전자 시스템의 내부 또는 외부에 배치되는 임의의 저장부에 저장될 수 있다.
도 4는 도 3의 ECC 디코더에 포함되는 버스트 에러 정정기의 동작을 설명하기 위한 도면이다.
도 3 및 4를 참조하면, 버스트 에러 정정기(70a)에 포함되는 에러 생성기(71a), 에러 확인기(73a) 및 데이터 정정기(75a)의 에러 정정 동작을 예시하고 있다.
에러 생성기(71a)는 로컬 신드롬 데이터(sL) 및 로컬 패리티 검사 행렬(HL)에 기초하여 에러 데이터(eT)에 포함되는 복수의 서브 에러 데이터들(e1 T, e2 T, ..., eu T)를 생성할 수 있다. 예를 들어, 서브 에러 데이터(ei T)(i는 1 이상 u 이하의 정수)는 제i 레인에서 발생한 버스트 에러를 나타내며, 하기의 [수학식 3]에 기초하여 획득될 수 있다.
[수학식 3]
상기의 [수학식 3]에서, HL,i는 로컬 패리티 검사 행렬(HL)에 포함되는 복수의 서브 로컬 패리티 검사 행렬들 중 제i 서브 로컬 패리티 검사 행렬을 나타낼 수 있다. 상기의 [수학식 3]에 기초하여, e1 T=(HL,1)-1(sL)T, e2 T=(HL,2)-1(sL)T, 및 eu T=(HL,u)-1(sL)T와 같이 획득될 수 있다.
에러 확인기(73a)는 글로벌 신드롬 데이터(sG)와 글로벌 패리티 검사 행렬(HG) 및 에러 데이터(eT)의 곱을 비교하여, 에러 발생 여부를 확인하고 에러 확인 신호(ECS)를 생성할 수 있다. 예를 들어, 글로벌 신드롬 데이터(sG)와 글로벌 패리티 검사 행렬(HG) 및 서브 에러 데이터들(e1 T, e2 T, ..., eu T)의 곱을 비교하여, 에러 발생 여부를 확인하고 복수의 에러 확인 신호들(ECS1, ECS2, ..., ECSu)을 생성할 수 있다. 예를 들어, 하기의 [수학식 4]를 만족하는 고유의(unique) i()가 존재하는 경우에, 에러 발생을 확인하고 에러 정정을 수행할 수 있다.
[수학식 4]
상기의 [수학식 4]에서, HG,i는 글로벌 패리티 검사 행렬(HG)에 포함되는 복수의 서브 글로벌 패리티 검사 행렬들 중 제i 서브 글로벌 패리티 검사 행렬을 나타낼 수 있다. 상기의 [수학식 4]에 기초하여, sG=HG,1e1 T를 만족하는 경우에 제1 레인에서의 에러 발생을 나타내는 제1 에러 확인 신호(ECS1)를 생성하고, sG=HG,2e2 T를 만족하는 경우에 제2 레인에서의 에러 발생을 나타내는 제2 에러 확인 신호(ECS2)를 생성하며, sG=HG,ueu T를 만족하는 경우에 제u 레인에서의 에러 발생을 나타내는 제u 에러 확인 신호(ECSu)를 생성할 수 있다.
데이터 정정기(75a)는 상기의 [수학식 4]를 만족하는 고유의 i가 존재하는 경우에, 하기의 [수학식 5]에 기초하여 에러 정정을 수행할 수 있다.
[수학식 5]
도 5, 6a, 6b 및 6c는 도 3의 ECC 디코더에서 이용되는 의사순환 코드 기반의 패리티 검사 행렬을 설명하기 위한 도면들이다.
도 5를 참조하면, 도 2에 도시된 입력 데이터에 대해 적용되는 2m(l+v)*2muv 패리티 검사 행렬(H)을 예시하고 있다. 심볼 크기 f=2m이고, m은 양의 정수이고, l은 짝수인 정수이며, l과 m은 서로소(relatively prime)일 수 있다. 패리티 검사 행렬(H)은 2ml*2muv 글로벌 패리티 검사 행렬(HG) 및 2mv*2muv 로컬 패리티 검사 행렬(HL)을 포함할 수 있다.
도 6a를 참조하면, 글로벌 패리티 검사 행렬(HG)은 복수의 서브 글로벌 패리티 검사 행렬들(HG,1, HG,2, ..., HG,u)을 포함할 수 있다. 서브 글로벌 패리티 검사 행렬들(HG,1, HG,2, ..., HG,u)의 개수는 u이며, 하나의 서브 글로벌 패리티 검사 행렬의 크기는 2ml*2mv일 수 있다. 도 6b를 참조하여 후술하는 것처럼, 서브 글로벌 패리티 검사 행렬들(HG,1, HG,2, ..., HG,u)은 서로 다른 형태로 구현될 수 있다.
로컬 패리티 검사 행렬(HL)은 복수의 서브 로컬 패리티 검사 행렬들(HL,1, HL,2, ..., HL,u)을 포함할 수 있다. 서브 글로벌 패리티 검사 행렬들(HG,1, HG,2, ..., HG,u)과 유사하게, 서브 로컬 패리티 검사 행렬들(HL,1, HL,2, ..., HL,u)의 개수는 u이며, 하나의 서브 로컬 패리티 검사 행렬의 크기는 2ml*2mv일 수 있다. 도 6c를 참조하여 후술하는 것처럼, 서브 로컬 패리티 검사 행렬들(HL,1, HL,2, ..., HL,u)은 서로 유사한 형태로 구현될 수 있다.
도 6b를 참조하면, 글로벌 패리티 검사 행렬(HG)은 2ml*2mu 비트의 제1 서브 행렬(SM1)이 v개 반복 배열되는 구조를 가질 수 있다. 제1 서브 행렬(SM1)은 제2 서브 행렬(SM2)을 복수 개 포함하고, 제1 서브 행렬(SM1) 내에서 복수의 제2 서브 행렬(SM2)들은 도 6b에 도시된 것처럼 배열되며, 각각의 제2 서브 행렬(SM2)은 실선 사각형으로 도시된 요소(element)들을 포함할 수 있다. 글로벌 패리티 검사 행렬(HG) 내에서, 실선 사각형으로 도시된 요소들이 배치되지 않은 영역은 0(zero)인 요소들이 배치될 수 있다. 요소들을 획득하는 과정에 대해서는 후술하도록 한다.
v개의 제1 서브 행렬(SM1)들이 반복 배열되는 글로벌 패리티 검사 행렬(HG) 내에서, 도 6a에 도시된 것처럼 2ml*2mv의 크기로 u개의 서브 글로벌 패리티 검사 행렬들(HG,1, HG,2, ..., HG,u)을 정의할 수 있다. 예를 들어, 가장 앞단의 제1 서브 행렬(SM1) 내에서 가장 앞단의 2ml*2mv의 크기에 대응하는 행렬을 제1 서브 글로벌 패리티 검사 행렬(HG,1)로 정의할 수 있다. 또한, 도시하지는 않았으나, 제1 서브 글로벌 패리티 검사 행렬(HG,1)과 인접하고 2ml*2mv의 크기에 대응하는 행렬을 제2 서브 글로벌 패리티 검사 행렬(HG,2)로 정의할 수 있다. 이에 따라, 제1 서브 글로벌 패리티 검사 행렬(HG,1)과 제2 서브 글로벌 패리티 검사 행렬(HG,2)은 서로 다른 형태를 가질 수 있다.
도 6c를 참조하면, 로컬 패리티 검사 행렬(HL)에 포함되는 제1 서브 로컬 패리티 검사 행렬(HL,1)은 실선 사각형으로 도시된 요소들을 포함하고, 제2 서브 로컬 패리티 검사 행렬(HL,2)은 실선 사각형으로 도시된 요소들을 포함하며, 제u 서브 로컬 패리티 검사 행렬(HL,u)은 실선 사각형으로 도시된 요소들을 포함할 수 있다. 요소들을 획득하는 과정에 대해서는 후술하도록 한다. 각 서브 로컬 패리티 검사 행렬 내에서, 실선 사각형으로 도시된 요소들이 배치되지 않은 영역은 0(zero)인 요소들이 배치될 수 있다. 이에 따라, 서브 로컬 패리티 검사 행렬들(HL,1, HL,2, ..., HL,u)은 서로 유사한 형태(예를 들어, 대각 행렬과 유사한 구조)를 가질 수 있다.
이하에서는, 본 발명의 실시예들에서 이용되는 의사순환 코드 기반의 패리티 검사 행렬(H)을 획득하는 방법을 상세하게 설명하도록 한다.
먼저, 본 발명과 관련된 수학적 표현들을 정리하도록 한다.
코드 연산(code operations)은 양의 정수인 m과 짝수인 정수 l에 대해 이진 유한 체(binary finite field)인 또는 그 확장 체들인 , , 에 대한 a*b 행렬인 A에 기초하여 수행될 수 있다. 또한, α, β, ξ 및 γ 는 각각 , , 의 원시 요소(primitive element)일 수 있다. 의 부분체(subfield)이며, 의 부분체일 수 있다. 이 때, 대응하는 원시 요소들은 하기의 [수학식 6]을 만족하여야 한다.
[수학식 6]
으로 변환하는 선형 사상(linear map)을 나타낼 수 있다. 즉, , 이고 일 수 있다.
B는 에 대한 A의 근접 행렬(incidence matrix)을 나타내고 B=M(A)로 표현될 수 있다. 즉, ai,j 및 bi,j를 각각 A 및 B의 제(i,j) 요소라고 할 때, ai,j가 0이 아니면 bi,j=1이고 그렇지 않다면 bi,j=0일 수 있다.
또한, Ti는 하기의 [수학식 7]과 같이 표현되는 동반 행렬(companion matrix)일 수 있다.
[수학식 7]
상기의 [수학식 7]에서, 는 임의의 정수 i에 대해 기저(basis) 를 가지는 유한 체의 2m개 원소의 가산 표현 (additive 2m-tuple representation)으로부터 유도된 2m*1 열 벡터를 나타내고, 일 수 있다. 이 때, 로 변환하는 체-동형 사상(field-isomorphic map) 이 존재하며, O는 모든 요소들이 0인 행렬(all-zero matrix)을 나타낼 수 있다.
상기와 같은 수학적 표현들에 기초하여 본 발명의 실시예들에 따른 의사순환 코드 기반의 패리티 검사 행렬(H)을 설명하도록 한다.
본 발명의 실시예들에 따른 의사순환 코드 기반의 패리티 검사 행렬(H)은 기존의 순환 코드 구조(예를 들어, 파이어 코드)를 의사순환 코드 구조로 변형 및/또는 확장하여 획득될 수 있다.
이와 관련하여, 코드 길이(codelength) n=2l-1인 순환 코드에 대해, 인코딩 및 디코딩 연산들은 주 아이디얼 환(principal ring) 에 대해 대수 연산(algebraic operation)으로부터의 동형 사상에 대해 정의되며, 여기서 <.>는 생성자(generator)일 수 있다. 를 만족하는 원시 요소로서 를 나타낼 수 있다. 근의 지수(root exponents)의 집합(set)인 에 대해, , 는 coset이고 C의 일부일 수 있다. 이 때, 하기의 [수학식 8]을 획득할 수 있으며, I는 최소 집합 크기(minimum cardinality)를 가지고 를 만족하는 [0,2l-2]의 부분집합(subset)일 수 있다.
[수학식 8]
상기와 같은 순환 코드의 일반화(generalization)로서, 비이진(non-binary) 의사순환 코드를 하기와 같이 정의할 수 있다.
<정의>
각각 정수인 m, l과 요소 에 대해, 모든 에 대해 인 경우에, 코드 길이 n=2l-1인 2m-ary 선형 코드(linear code) 는 λ-의사순환(λ-constacyclic)일 수 있다.
순환 코드와 유사하게, 의사순환 코드는 주 아이디얼 환 에 대한 동형 사상에 대해 정의될 수 있다. 임의의 l 및 m에 대해 적용할 수 있으며, λ=1인 경우에 의사순환 코드는 순환 코드가 될 수 있다.
다음에, 상기와 같이 정의된 의사순환 코드를 이용하여 패리티 검사 행렬(H)을 구성할 수 있다.
l<v 및 를 만족하는 에 대한 원시근(primitive root) β 및 ξ를 가정하고, 이 때 l과 m은 서로소일 수 있다. <xuvv>의 주 아이디얼 환에 대해, b=2m+1 및 를 u=2l-1 및 정수 e에 대해 에 대한 xu+λ의 근(root)이라고 할 수 있다. (n,k)=(uv,uv-l-v) 의사순환 코드 로부터, 심볼 크기 f=2m에 대한 (n,k)=(fuv,f(uv-l-v))를 가지는 선형 이진 버스트 디코더 는 2m(l+v)*2muv 패리티 검사 행렬 를 가지며, HG=[HG,1, ..., HG,u] 및 HL=[HL,1, ..., HL,u]는 하기의 절차에 따라 구성될 수 있다.
i) 에 대한 의사순환 코드라고 하고 패리티 검사 다항식(parity check polynomial) h(x)를 하기의 [수학식 9]와 같이 유도할 수 있다.
[수학식 9]
즉, 의사순환 코드를 정의하는 방법론으로서 xu+λ=0의 해인 에 속하는 δ를 찾을 수 있고, 이에 대해 상기의 [수학식 9]의 패리티 검사 다항식을 유도할 수 있다. 여기서, pi(x)는 xu+1의 최소 다항식(minimal polynomial)일 수 있다.
ii) l*uv인 PG 및 l*uv인 P'U를 하기의 [수학식 10] 및 [수학식 11]과 같이 구성할 수 있다.
[수학식 10]
[수학식 11]
즉, 다항식의 각 계수(coefficient)에 대해, PG를 상기의 [수학식 10]과 같이 설정하며, P'U를 앞서 정의한 h(x)의 계수를 이용하여 상기의 [수학식 11]과 같이 구성할 수 있다.
iii) v*uv인 PL을 하기의 [수학식 12] 및 [수학식 13]과 같이 구성할 수 있다.
[수학식 12]
[수학식 13]
앞서의 두 행렬 PG 및 PL을 연접하여, (l+v)*uv인 행렬 를 생성할 수 있다. P는 에 대한 generator polynomial 을 가지는 의사순환 코드 의 패리티 검사 행렬이고, P의 요소들은 에 속할 수 있다.
iv) 의사순환 코드 로부터, P의 모든 요소들을 2개의 순차 사상들인 에 의해 이진 요소들로 변환할 수 있다. 먼저 선형 사상인 는 βi를 ξbi로 변환하고 δiei를 ξbei로 변환할 수 있다. 다음에 ξi의 요소들은 상기의 [수학식 7] 및 체-동형 사상 에 의해, 즉 에 의해 2m*2m 동반 행렬들로 대응할 수 있다. 이에 따라, 최종적으로 2m(l+v)*2muv 패리티 검사 행렬 이 구성되며, 이는 도 5, 6a, 6b 및 6c를 참조하여 상술한 의사순환 코드 기반의 패리티 검사 행렬(H)에 대응할 수 있다.
정리하면, 패리티 검사 행렬(H)은 상기의 [수학식 9]의 패리티 검사 다항식 h(x)에 기초하여 획득될 수 있고, 이 때 패리티 검사 행렬(H)에 포함되는 글로벌 패리티 검사 행렬(HG)은 상기의 [수학식 10] 및 [수학식 11]에 기초하여 구성되고 패리티 검사 행렬(H)에 포함되는 로컬 패리티 검사 행렬(HL)은 상기의 [수학식 12] 및 [수학식 13]에 기초하여 구성될 수 있으며, 특히 상기의 [수학식 7]로 정의된 동반 행렬을 이용하여 상기의 [수학식 10]의 PG 및 상기의 [수학식 12]의 PL의 모든 요소(element)들을 이진 요소(binary element)들로 변환하여 글로벌 패리티 검사 행렬(HG) 및 로컬 패리티 검사 행렬(HL)이 획득될 수 있다.
본 발명의 실시예들에 따르면, 의사순환 코드 기반의 패리티 검사 행렬(H)을 이용함으로써, 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR)를 동시에 검출 및/또는 정정 가능하도록 ECC 디코더(50)를 구현할 수 있다. 이에 따라, 기존에 고려하지 않았던 멀티 비트 에러 관점에서도 더욱 강인한 구조로 구현될 수 있다. 따라서, 성능 손실을 최소화하고 신뢰성을 높이면서 효율적인 ECC 디코딩을 수행할 수 있다.
한편, ECC 디코더(50)는 최대 우도 신드롬 디코더(혹은 최대 우도 디코더)(maximum likelihood syndrome decoder, MLSD) 방식으로 구현될 수 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아닐 수 있다.
도 7은 본 발명의 실시예들에 따른 메모리 장치 및 메모리 시스템을 나타내는 블록도이다.
도 7을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(100) 및 메모리 모듈(MM)을 포함할 수 있다. 메모리 모듈(MM)은 복수의 메모리 칩들(200a ..., 200k, 200p)을 포함할 수 있다. 복수의 메모리 칩들(200a~200k, 200p)은 복수의 데이터 칩들(200a~200k) 및 적어도 하나의 패리티 칩(200p)을 포함할 수 있다. 복수의 메모리 칩들(200a~200k, 200p) 각각은 반도체 메모리 장치 또는 메모리 장치로 지칭될 수 있다.
메모리 컨트롤러(100)는 메모리 시스템(10)의 동작을 전반적으로 제어하며, 외부의 호스트와 메모리 칩들(또는 메모리 장치들)(200a~200k, 200p) 사이의 전반적인 데이터 교환을 제어한다. 예를 들어, 메모리 컨트롤러(100)는 상기 호스트의 요청에 따라 메모리 칩들(200a~200k, 200p)을 제어하여 데이터를 기입하거나(write) 데이터를 독출할 수 있다(read). 또한, 메모리 컨트롤러(100)는 메모리 칩들(200a~200k, 200p)을 제어하기 위한 동작 커맨드(command)들을 인가하여, 메모리 칩들(200a~200k, 200p)의 동작을 제어할 수 있다.
일 실시예에서, 메모리 칩들(200a~200k, 200p) 각각은 동적 메모리 셀들을 구비하는 DRAM(dynamic random access memory)일 수 있다.
일 실시예에서, 데이터 칩들(200a~200k)의 수는 8 또는 16일 수 있으나 이에 한정되는 것은 아니다. 데이터 칩들(200a~200k) 각각은 데이터 메모리 장치로 지칭될 수 있고, 패리티 칩(200p)은 패리티 메모리 장치, ECC 메모리 장치 또는 리던던트 메모리 장치로 지칭될 수 있다.
메모리 컨트롤러(100)는 메모리 모듈(MM)에 커맨드(CMD) 및 어드레스(ADDR)를 인가하고, 메모리 모듈(MM)과 코드워드 세트(SCW)를 주고받을 수 있다.
메모리 컨트롤러(100)는 시스템(system, SYS) ECC 엔진(또는 제1 ECC 엔진)(130)을 포함할 수 있다. 메모리 칩들(200a~200k, 200p)은 온-다이(on-die, OD) ECC 엔진들(또는 제2 ECC 엔진들)(400a, ..., 400k, 400p)을 포함할 수 있다.
시스템 ECC 엔진(130)은 ECC 디코딩을 수행하는 시스템 ECC 디코더(또는 제1 ECC 디코더)(SYS_DEC)를 포함할 수 있다. 온-다이 ECC 엔진들(400a~400k, 400p) 각각은 ECC 디코딩을 수행하는 온-다이 ECC 디코더(또는 제2 ECC 디코더)(OD_DEC)를 포함할 수 있다. 시스템 ECC 디코더(SYS_DEC) 및 온-다이 ECC 디코더(OD_DEC)는 도 1 내지 6을 참조하여 상술한 본 발명의 실시예들에 따른 ECC 디코더일 수 있고, 의사순환 코드 기반의 패리티 검사 행렬(H)을 이용하여 동작함으로써, 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR)를 동시에 검출 및/또는 정정 가능하도록 구현될 수 있다.
도 8은 도 7의 메모리 시스템에 포함되는 메모리 컨트롤러의 일 예를 나타내는 블록도이다.
도 8을 참조하면, 메모리 컨트롤러(100)는 프로세서(110), 호스트 인터페이스(120), 데이터 레지스터(125), 시스템 ECC 엔진(130), 커맨드 버퍼(190) 및 어드레스 버퍼(195)를 포함할 수 있다. 시스템 ECC 엔진(130)은 ECC 인코더(140), ECC 디코더(150) 및 메모리(180)를 포함할 수 있다.
호스트 인터페이스(120)는 외부의 호스트로부터 제공되는 리퀘스트(REQ) 및 사용자 데이터 세트(또는 메인 데이터)(SDQ)를 수신하고, 사용자 데이터 세트(SDQ)와 관련된 메타 데이터(MDT)를 생성하고, 사용자 데이터 세트(SDQ)를 데이터 레지스터(125)에 제공하며, 메타 데이터(MDT)를 ECC 인코더(140)에 제공할 수 있다. 데이터 레지스터(125)는 사용자 데이터 세트(SDQ)를 ECC 인코더(140)에 제공할 수 있다.
ECC 인코더(140)는 기입 동작에서 패리티 생성 행렬을 이용하여 사용자 데이터 세트(SDQ) 및 메타 데이터(MDT)에 대한 ECC 인코딩을 수행하여 코드워드 세트(또는 코드워드)(SCW1)를 생성할 수 있다. 코드워드 세트(SCW1)는 메모리 모듈(MM)로 제공되어 메모리 모듈(MM)에 저장되는 기입 데이터에 대응할 수 있다.
ECC 디코더(150)는 도 7의 시스템 ECC 디코더(SYS_DEC)에 대응할 수 있다. ECC 디코더(150)는 독출 동작에서 패리티 검사 행렬을 이용하여 메모리 모듈(MM)로부터 수신되는 코드워드 세트(SCW2)에 대한 ECC 디코딩을 수행하여 사용자 데이터 세트(SDQ) 또는 정정된 사용자 데이터 세트(C_SDQ)를 생성하고, 사용자 데이터 세트(SDQ) 또는 정정된 사용자 데이터 세트(C_SDQ)를 프로세서(110)에 제공할 수 있다. 코드워드 세트(SCW2)는 메모리 모듈(MM)로부터 수신되는 독출 데이터에 대응하고, 도 1의 입력 데이터(rT)에 대응할 수 있다.
메모리(180)는 상기 패리티 생성 행렬 및 상기 패리티 검사 행렬을 저장할 수 있다. 예를 들어, 상기 패리티 검사 행렬은 본 발명의 실시예들에 따른 의사순환 코드 기반의 패리티 검사 행렬(H)일 수 있다.
프로세서(110)는 사용자 데이터 세트(SDQ) 또는 정정된 사용자 데이터 세트(C_SDQ)를 수신하고, 시스템 ECC 엔진(130), 커맨드 버퍼(190) 및 어드레스 버퍼(195)를 제어할 수 있다. 예를 들어, 프로세서는 CPU(central processing unit)를 포함할 수 있다.
커맨드 버퍼(190)는 리퀘스트(REQ)에 상응하는 커맨드(CMD)를 저장하고, 프로세서(110)의 제어에 따라 메모리 모듈(MM)에 커맨드(CMD)를 전송할 수 있다. 어드레스 버퍼(195)는 어드레스(ADDR)를 저장하고, 프로세서(110)의 제어에 따라 메모리 모듈(MM)에 어드레스(ADDR)를 전송할 수 있다.
도 9a 및 9b는 도 7의 메모리 시스템에서 메모리 칩들에 제공되거나 메모리 칩들로부터 출력되는 복수의 버스트 길이들에 대응되는 데이터 세트들의 예를 나타내는 도면들이다.
도 9a를 참조하면, 메모리 모듈(MM)은 복수의 메모리 칩들(201a, ..., 201k, 201pa, 201pb)을 포함할 수 있다. 복수의 메모리 칩들(201a~201k, 201pa, 201pb)은 복수의 데이터 칩들(201a, ..., 201k), 제1 패리티 칩(201pa) 및 제2 패리티 칩(201pb)을 포함할 수 있다. 예를 들어, 복수의 데이터 칩들(201a~201k)은 제1 내지 제N(N은 2 이상의 자연수) 데이터 칩들을 포함할 수 있다. 도 9a의 예에서, 하나의 메모리 칩은 4개의 데이터 입출력 핀들과 연결되고, 하나의 메모리 칩에는/에로부터는 4개의 데이터 신호들(DQ1, DQ2, DQ3, DQ4)이 입력/출력되며, x4 구조라고 지칭될 수 있다.
도 9a에 도시된 것처럼, 데이터 칩들(201a~201k) 및 패리티 칩들(201pa, 201pb) 각각은 버스트 동작(burst operation)을 수행할 수 있다.
버스트 동작은 데이터 칩들(201a~201k) 및 패리티 칩들(201pa, 201pb)이 메모리 컨트롤러(100)로부터 수신한 초기 어드레스로부터 어드레스를 순차적으로 감소 혹은 증가함으로써 다량의 데이터를 기입하거나 독출하는 동작을 의미한다. 버스트 동작의 기본 단위를 버스트 길이(burst length; BL)라고 한다.
데이터 칩들(201a~201k) 각각에는/각각으로부터는 복수의 버스트 길이들에 대응되는 데이터 세트들(DQ_BL1, ..., DQ_BLk) 각각이 입력/출력될 수 있다. 데이터 세트들(DQ_BL1~DQ_BLk) 각각은 복수의 버스트 길이들 중 각각의 버스트 길이에 대응되는 데이터 세그먼트들(DQ_BL_SG1, DQ_BL_SG2, DQ_BL_SG3, DQ_BL_SG4, DQ_BL_SG5, DQ_BL_SG6, DQ_BL_SG7, DQ_BL_SG8)을 포함할 수 있다. 데이터 세트들(DQ_BL1~DQ_BLk)은 사용자 데이터 세트(SDQ)에 해당할 수 있다. 도 9a는 버스트 길이(BL)가 8인 경우를 나타낸다.
데이터 칩들(201a~201k) 각각에서 버스트 동작이 수행되는 동안, 제1 패리티 칩(201pa)에는/에로부터는 복수의 버스트 길이들에 대응되는 메타 데이터(MDT)와 제1 패리티 데이터(PRTL)가 입력/출력되고, 제2 패리티 칩(201pa)에는/에로부터는 복수의 버스트 길이들에 대응되는 제2 패리티 데이터(PRTM)가 입력/출력될 수 있다. 제2 패리티 데이터(PRTM)는 제1 서브 패리티 데이터(PRTM1)와 제2 서브 패리티 데이터(PRTM2)를 포함할 수 있다.
제1 패리티 데이터(PRTL)는 에러 로케이터 패리티(error locator parity) 데이터로서 사용자 데이터 세트(SDQ)에 포함되는 에러 비트들의 위치에 관련될 수 있고, 제2 패리티 데이터(PRTM)는 에러 크기 패리티(error magnitude parity) 데이터로서 사용자 데이터 세트(SDQ)에 포함되는 에러 비트들의 크기(수)에 관련될 수 있다. 도 9a는 에러 로케이터 패리티 데이터와 에러 크기 패리티 데이터가 다른 패리티 칩에 저장되는 경우를 나타낸다. 예를 들어, 제1 패리티 데이터(PRTL), 즉 에러 로케이터 패리티 데이터는 글로벌 패리티 검사 행렬 및 이에 기초하여 생성되는 글로벌 패리티 데이터에 대응할 수 있고, 제2 패리티 데이터(PRTM), 즉 에러 크기 패리티 데이터는 로컬 패리티 검사 행렬 및 이에 기초하여 생성되는 로컬 패리티 데이터에 대응할 수 있다.
도 9b를 참조하면, 메모리 모듈(MM)은 복수의 메모리 칩들(202a, ..., 202p)을 포함할 수 있다. 이하 도 9a와 중복되는 설명은 생략한다.
복수의 메모리 칩들(202a~202p)은 복수의 데이터 칩들(202a) 및 제1 패리티 칩(202p)을 포함할 수 있다. 예를 들어, 복수의 데이터 칩들(202a)은 제1 내지 제M(M은 2 이상의 자연수) 데이터 칩들을 포함할 수 있다. 도 9b의 예에서, 하나의 메모리 칩은 8개의 데이터 입출력 핀들과 연결되고, 하나의 메모리 칩에는/에로부터는 8개의 데이터 신호들(DQ1, DQ2, DQ3, DQ4, DQ5, DQ6, DQ7, DQ8)이 입력/출력되며, x8 구조라고 지칭될 수 있다.
도 9b에서 하나의 메모리 칩에는/으로부터 입력/출력되는 데이터 세트들(DQ_BL1a, DQ_BL1b)의 크기는 도 9a에서 하나의 메모리 칩에는/으로부터 입력/출력되는 데이터 세트(DQ_BL1)의 크기의 2배일 수 있다. 도 9a 및 도9b의 메모리 모듈(MM)이 동일한 개수의 데이터 입출력 핀들을 포함하는 경우에, 도 9b의 데이터 칩들(202a)의 개수는 도 9a의 데이터 칩들(201a~201k)의 개수의 절반일 수 있다(즉, M=N/2). 예를 들어, N=16이고 M=8일 수 있다. 또한, 도 9b는 에러 로케이터 패리티 데이터와 에러 크기 패리티 데이터가 하나의 패리티 칩에 저장되는 경우를 나타낸다.
도 10은 도 8의 메모리 컨트롤러에 포함되는 시스템 ECC 엔진의 일 예를 나타내는 블록도이다.
도 10을 참조하면, 시스템 ECC 엔진(130)은 ECC 인코더(140), ECC 디코더(150) 및 메모리(180)를 포함할 수 있다. 메모리(180)는 ECC 인코더(140) 및 ECC 디코더(150)에 연결되고, 패리티 생성 행렬(PGM)과 패리티 검사 행렬(PCM)을 포함할 수 있다.
ECC 인코더(140)는 기입 동작에서 패리티 생성 행렬(PGM)을 이용하여 사용자 데이터 세트(SDQ)와 메타 데이터(MDT)에 대한 ECC 인코딩을 수행하여, 제1 패리티 데이터(PRTL) 및 제2 패리티 데이터(PRTM)를 포함하는 패리티 데이터 세트(SPRT)를 생성하고, 사용자 데이터 세트(SDQ), 메타 데이터(MDT) 및 패리티 데이터 세트(SPRT)를 포함하는 코드워드 세트(SCW1)를 출력할 수 있다. 사용자 데이터 세트(SDQ)는 데이터 칩들(예를 들어, 도 9a의 201a~201k)에 저장되고, 메타 데이터(MDT) 및 패리티 데이터 세트(SPRT)는 패리티 칩(예를 들어, 도 9a의 201pa, 201pb)에 저장될 수 있다.
ECC 디코더(150)는 독출 동작에서 패리티 검사 행렬(PCM) 및 선택된 디코딩 방식을 이용하여 사용자 데이터 세트(SDQ), 메타 데이터(MDT) 및 패리티 데이터 세트(SPRT)를 포함하는 코드워드 세트(SCW2)에 대한 ECC 디코딩을 수행하여, 사용자 데이터 세트(SDQ) 또는 정정된 사용자 데이터 세트(C_SDQ)를 출력할 수 있다. 패리티 검사 행렬(PCM)은 본 발명의 실시예들에 따른 의사순환 코드 기반의 패리티 검사 행렬(H)일 수 있고, 도 5, 6a, 6b 및 6c를 참조하여 상술한 것처럼 구현될 수 있다.
도 11은 도 7의 메모리 시스템의 메모리 모듈에 포함되는 데이터 칩의 일 예를 나타내는 블록도이다.
도 11을 참조하면, 데이터 칩(200a)은 제어 로직 회로(210), 어드레스 레지스터(220), 뱅크 제어 로직(230), 로우 어드레스 멀티플렉서(240), 컬럼 어드레스 래치(250), 로우 디코더(260), 컬럼 디코더(270), 메모리 셀 어레이(300), 센스 앰프부(285), 입출력 게이팅 회로(290), 데이터 입출력 버퍼(295), 온-다이 ECC 엔진(400a) 및 리프레쉬 카운터(245)를 포함할 수 있다.
메모리 셀 어레이(300)는 제1 내지 제8 뱅크 어레이들(310~380)을 포함할 수 있다. 또한, 로우 디코더(260)는 제1 내지 제8 뱅크 어레이들(310~380)에 각각 연결된 제1 내지 제8 뱅크 로우 디코더들(260a~260h)을 포함하고, 컬럼 디코더(270)는 제1 내지 제8 뱅크 어레이들(310~380)에 각각 연결된 제1 내지 제8 뱅크 컬럼 디코더들(270a~270h)을 포함하며, 센스 앰프부(285)는 제1 내지 제8 뱅크 어레이들(310~380)에 각각 연결된 제1 내지 제8 뱅크 센스 앰프들(285a~285h)을 포함할 수 있다.
제1 내지 제8 뱅크 어레이들(310~380), 제1 내지 제8 뱅크 센스 앰프들(285a~285h), 제1 내지 제8 뱅크 칼럼 디코더들(270a~270h) 및 제1 내지 제8 뱅크 로우 디코더들(260a~260h)은 제1 내지 제8 뱅크들을 각각 구성할 수 있다. 제1 내지 제8 뱅크 어레이들(310~380) 각각은 복수의 워드 라인들(WL), 복수의 비트 라인들(BTL), 및 워드 라인들(WL)과 비트 라인들(BTL)이 교차하는 지점에 형성되는 복수의 메모리 셀들(MC)을 포함할 수 있다.
도 11에는 8개의 뱅크들을 포함하는 데이터 칩(200a)의 예가 도시되어 있으나, 실시예에 따라서 데이터 칩(200a)은 임의의 수의 뱅크들을 포함할 수 있다.
어드레스 레지스터(220)는 메모리 컨트롤러(100)로부터 뱅크 어드레스(BANK_ADDR), 로우 어드레스(ROW_ADDR) 및 컬럼 어드레스(COL_ADDR)를 포함하는 어드레스(ADDR)를 수신할 수 있다. 어드레스 레지스터(220)는 수신된 뱅크 어드레스(BANK_ADDR)를 뱅크 제어 로직(230)에 제공하고, 수신된 로우 어드레스(ROW_ADDR)를 로우 어드레스 멀티플렉서(240)에 제공하며, 수신된 컬럼 어드레스(COL_ADDR)를 컬럼 어드레스 래치(250)에 제공할 수 있다.
뱅크 제어 로직(230)은 뱅크 어드레스(BANK_ADDR)에 응답하여 뱅크 제어 신호들을 생성할 수 있다. 상기 뱅크 제어 신호들에 응답하여, 제1 내지 제8 뱅크 로우 디코더들(260a~260h) 중 뱅크 어드레스(BANK_ADDR)에 상응하는 뱅크 로우 디코더가 활성화되고, 제1 내지 제8 뱅크 컬럼 디코더들(270a~270h) 중 뱅크 어드레스(BANK_ADDR)에 상응하는 뱅크 컬럼 디코더가 활성화될 수 있다.
로우 어드레스 멀티플렉서(240)는 어드레스 레지스터(220)로부터 로우 어드레스(ROW_ADDR)를 수신하고, 리프레쉬 카운터(245)로부터 리프레쉬 로우 어드레스(REF_ADDR)를 수신할 수 있다. 로우 어드레스 멀티플렉서(240)는 로우 어드레스(ROW_ADDR) 또는 리프레쉬 로우 어드레스(REF_ADDR)를 로우 어드레스(RA)로서 선택적으로 출력할 수 있다. 로우 어드레스 멀티플렉서(240)로부터 출력된 로우 어드레스(RA)는 제1 내지 제8 뱅크 로우 디코더들(260a~260h)에 각각 인가될 수 있다.
제1 내지 제8 뱅크 로우 디코더들(260a~260h) 중 뱅크 제어 로직(230)에 의해 활성화된 뱅크 로우 디코더는 로우 어드레스 멀티플렉서(240)로부터 출력된 로우 어드레스(RA)를 디코딩하여 상기 로우 어드레스에 상응하는 워드 라인을 활성화할 수 있다. 예를 들어, 상기 활성화된 뱅크 로우 디코더는 로우 어드레스(RA)에 상응하는 워드 라인에 워드 라인 구동 전압을 인가할 수 있다.
컬럼 어드레스 래치(250)는 어드레스 레지스터(220)로부터 컬럼 어드레스(COL_ADDR)를 수신하고, 수신된 컬럼 어드레스(COL_ADDR)를 일시적으로 저장할 수 있다. 또한, 컬럼 어드레스 래치(250)는, 버스트 모드에서, 수신된 컬럼 어드레스(COL_ADDR)를 점진적으로 증가시킬 수 있다. 컬럼 어드레스 래치(250)는 일시적으로 저장된 또는 점진적으로 증가된 컬럼 어드레스(COL_ADDR)를 제1 내지 제8 뱅크 컬럼 디코더들(270a~270h)에 각각 인가할 수 있다.
제1 내지 제8 뱅크 컬럼 디코더들(270a~270h) 중 뱅크 제어 로직(230)에 의해 활성화된 뱅크 컬럼 디코더는 입출력 게이팅 회로(290)를 통하여 뱅크 어드레스(BANK_ADDR) 및 컬럼 어드레스(COL_ADDR)에 상응하는 센스 앰프를 활성화시킬 수 있다.
입출력 게이팅 회로(290)는 입출력 데이터를 게이팅하는 회로들과 함께, 입력 데이터 마스크 로직, 제1 내지 제8 뱅크 어레이들(310~380)로부터 출력된 데이터를 저장하기 위한 독출 데이터 래치들, 및 제1 내지 제8 뱅크 어레이들(310~380)에 데이터를 기입하기 위한 기입 드라이버들을 포함할 수 있다.
제1 내지 제8 뱅크 어레이들(310~380) 중 하나의 뱅크 어레이에서 독출된 코드워드(CW)는 상기 하나의 뱅크 어레이에 상응하는 센스 앰프에 의해 감지되고, 상기 독출 데이터 래치들에 저장될 수 있다. 상기 독출 데이터 래치들에 저장된 코드워드(CW)는 온-다이 ECC 엔진(400a)에 의하여 ECC 디코딩이 수행된 후에 데이터 입출력 버퍼(295)를 통하여 데이터 세트(또는 사용자 데이터 또는 메인 데이터)(DQ_BL)로서 메모리 컨트롤러(100)에 제공될 수 있다.
제1 내지 제8 뱅크 어레이들(310~380) 중 하나의 뱅크 어레이에 기입될 데이터 세트(DQ_BL)는 온-다이 ECC 엔진(400a)에 제공되고, 온-다이 ECC 엔진(400a)은 사용자 데이터(DQ_BL)에 기초하여 패리티 데이터를 생성하고, 데이터 세트(DQ_BL)와 상기 패리티 데이터를 포함하는 코드워드(CW)를 입출력 게이팅 회로(290)에 제공하고, 입출력 게이팅 회로(290)는 상기 기입 드라이버들을 통하여 코드워드(CW)를 상기 하나의 뱅크 어레이의 서브 페이지에 기입할 수 있다.
데이터 입출력 버퍼(295)는 기입 동작에서는 데이터 세트(DQ_BL)를 온-다이 ECC 엔진(400a)에 제공하고, 독출 동작에서는 온-다이 ECC 엔진(400a)으로부터 제공되는 데이터 세트(DQ_BL)를 메모리 컨트롤러(100)에 제공할 수 있다.
제어 로직 회로(210)는 메모리 칩(200a)의 동작을 제어할 수 있다. 예를 들어, 제어 로직 회로(210)는 메모리 칩(200a)이 기입 동작 또는 독출 동작을 수행하도록 제어 신호들을 생성할 수 있다. 제어 로직 회로(210)는 메모리 컨트롤러(100)로부터 수신되는 커맨드(CMD)를 디코딩하는 커맨드 디코더(211) 및 메모리 칩(200a)의 동작 모드를 설정하기 위한 모드 레지스터(212)를 포함할 수 있다.
예를 들어, 커맨드 디코더(211)는 기입 인에이블 신호, 로우 어드레스 스트로브 신호, 컬럼 어드레스 스트로브 신호, 칩 선택 신호 등을 디코딩하여 커맨드(CMD)에 상응하는 상기 제어 신호들을 생성할 수 있다. 제어 로직 회로(210)는 입출력 게이팅 회로(290)를 제어하는 제1 제어 신호(CTL1) 및 온-다이 ECC 엔진(400a)을 제어하는 제2 제어 신호(CTL2)를 생성할 수 있다.
한편, 도 7의 패리티 칩(200p)도 데이터 칩(200a)과 실질적으로 동일한 구성을 가질 수 있다. 패리티 칩(200p)은 패리티 데이터를 입출력할 수 있다.
도 12는 도 11의 데이터 칩에 포함되는 뱅크 어레이의 일 예를 나타내는 도면이다.
도 12를 참조하면, 제1 뱅크 어레이(310)는 복수의 워드 라인들(WL1, WL2, ..., WL2m-1, WL2m), 복수의 비트 라인들(BTL1, BTL2, ..., BTL2n-1, BTL2n), 및 워드 라인들(WL1~WL2m)과 비트 라인들(BTL1~BTL2n) 사이의 교차점에 배치되는 복수개의 메모리 셀들(MC)을 포함한다. 예를 들어, 각 메모리 셀(MC)은 DRAM 셀 구조를 가질 수 있다. 메모리 셀들(MC)이 연결되는 워드 라인들을 제1 뱅크 어레이(310)의 로우들(rows)이라고 정의하고, 메모리 셀들(MC)이 연결되는 비트 라인들을 제1 뱅크 어레이(310)의 칼럼들(columns)이라고 정의할 수 있다.
도 13은 도 7의 메모리 시스템의 메모리 모듈에 포함되는 온-다이 ECC 엔진의 일 예를 나타내는 블록도이다.
도 13을 참조하면, 온-다이 ECC 엔진(400a)은 ECC 인코더(410), 메모리(415), 및 ECC 디코더(430)를 포함할 수 있다.
메모리(415)는 ECC 수행과 관련된 행렬(420)을 저장할 수 있다. 예를 들어, 메모리(415)는 패리티 생성 행렬 및 패리티 검사 행렬을 포함할 수 있다.
ECC 인코더(410)는 기입 동작에서 상기 패리티 생성 행렬을 이용하여 제1 뱅크 어레이(310)의 노멀 셀 어레이(NCA)에 저장될 기입 데이터(WMD)와 관련된 패리티 데이터(PRT)를 생성할 수 있다. 패리티 데이터(PRT)는 제1 뱅크 어레이(310)의 리던던시 셀 어레이(RCA)에 저장될 수 있다.
ECC 디코더(430)는 도 7의 온-다이 ECC 디코더(OD_DEC)에 대응할 수 있다. ECC 디코더(430)는 독출 동작에서 상기 패리티 검사 행렬을 이용하여 제1 뱅크 어레이(310)로부터 패리티 데이터(PRT)에 기초하여 독출 데이터(RMD)에 대하여 ECC 디코딩을 수행할 수 있다. ECC 디코딩의 수행 결과, 독출 데이터(RMD)가 적어도 하나의 에러 비트를 포함하는 경우, 독출 동작에서 정정된 메인 데이터(C_MD)를 출력할 수 있다. 독출 데이터(RMD)는 도 1의 입력 데이터(rT)에 대응할 수 있다. 예를 들어, 상기 패리티 검사 행렬은 본 발명의 실시예들에 따른 의사순환 코드 기반의 패리티 검사 행렬(H)일 수 있고, 도 5, 6a, 6b 및 6c를 참조하여 상술한 것처럼 구현될 수 있다.
도 14 및 15는 본 발명의 실시예들에 따른 메모리 장치 및 메모리 시스템을 나타내는 블록도들이다. 이하 도 7과 중복되는 설명은 생략한다.
도 14를 참조하면, 메모리 시스템(10a)은 메모리 컨트롤러(100) 및 메모리 모듈(MM)을 포함할 수 있다. 메모리 모듈(MM)은 복수의 메모리 칩들(205a ..., 205k, 205p)을 포함할 수 있다.
메모리 칩들(205a~205k, 205p)에서 온-다이 ECC 엔진들이 생략된 것을 제외하면, 메모리 시스템(10a)은 도 7의 메모리 시스템(10)과 실질적으로 동일할 수 있다. 다시 말하면, 메모리 시스템(10a)은 시스템 ECC 엔진(130)에 의한 시스템 ECC 인코딩/디코딩만을 수행할 수 있다.
도 15를 참조하면, 메모리 시스템(10b)은 메모리 컨트롤러(100b) 및 메모리 모듈(MM)을 포함할 수 있다.
메모리 컨트롤러(100b)에서 시스템 ECC 엔진이 생략된 것을 제외하면, 메모리 시스템(10b)은 도 7의 메모리 시스템(10)과 실질적으로 동일할 수 있다. 다시 말하면, 메모리 시스템(10b)은 온-다이 ECC 엔진들(400a~400k, 400p)에 의한 온-다이 ECC 인코딩/디코딩만을 수행할 수 있다.
도 16은 본 발명의 실시예들에 따른 ECC 디코딩 방법을 나타내는 순서도이다.
도 1 및 16을 참조하면, 본 발명의 실시예들에 따른 ECC 디코딩 방법에서, 입력 데이터(rT) 및 의사순환 코드 기반의 패리티 검사 행렬(H)을 이용하여, 글로벌 신드롬 데이터(sG) 및 로컬 신드롬 데이터(sL)를 생성한다(단계 S100). 글로벌 신드롬 데이터(sG) 및 로컬 신드롬 데이터(sL)를 이용하여 입력 데이터(rT)에 포함된 정정 가능한 에러를 정정한다(단계 S200). 이에 따라, 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR)를 동시에 검출 및/또는 정정 가능하도록 구현될 수 있다. 예를 들어, 단계 S100은 신드롬 생성기(60)에 의해 수행되고, 단계 S200은 버스트 에러 정정기(70)에 의해 수행될 수 있다.
한편, 본 발명의 실시예들은 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다. 예를 들어, 상기 컴퓨터로 판독 가능한 매체는 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, 비일시적은 저장 매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장 매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
도 17은 본 발명의 실시예들에 따른 메모리 시스템에 적용될 수 있는 메모리 모듈의 일 예를 나타내는 블록도이다.
도 17을 참조하면, 메모리 모듈(500)은 회로 기판(501)에 배치되는(실장되는) 버퍼 칩(590)(예를 들어, registering clock driver; RCD), 복수의 메모리 장치들(601a, 601b, 601c, 601d, 601e, 602a, 602a, 602c, 602d, 602e, 603a, 603b, 603c, 603d, 604a, 604b, 604c, 604d), 모듈 저항부들(560, 570), SPD(serial presence detection) 칩(580) 및 PMIC(power management integrated circuit)(585)를 포함할 수 있다.
버퍼 칩(590)은 메모리 컨트롤러(100)의 제어에 따라 메모리 장치들(또는 메모리 칩들)과 PMIC(585)를 제어할 수 있다. 예를 들어, 버퍼 칩(590)은 메모리 컨트롤러(100)로부터 어드레스(ADDR), 커맨드(CMD), 사용자 데이터 세트(SDQ) 및 메타 데이터(MDT)를 수신할 수 있다.
SPD 칩(580)은 EEPROM(electrically erasable programmable read-only memory)을 포함할 수 있다. SPD 칩(580)은 메모리 모듈(500)의 초기 정보 또는 장치 정보(device information; DI)를 포함할 수 있다. 예를 들어, SPD 칩(580)은 메모리 모듈(500)의 모듈 형태, 모듈 구성, 저장 용량, 모듈 종류, 실행 환경 등과 같은 초기 정보 또는 장치 정보(DI)를 포함할 수 있다.
메모리 모듈(500)을 포함하는 메모리 시스템이 부팅될 때, 메모리 컨트롤러(100)는 SPD 칩(580)으로부터 장치 정보(DI)를 독출하고, 독출된 장치 정보(DI)를 기반으로 메모리 모듈(500)을 인식할 수 있다. 메모리 컨트롤러(100)는 SPD 칩(580)으로부터의 장치 정보(DI)를 기반으로 메모리 모듈(500)을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 SPD 칩(580)으로부터의 장치 정보(DI)에 따라 메모리 모듈(500)에 포함된 메모리 장치들의 타입을 식별할 수 있다.
여기서, 회로 기판(501)은 인쇄 회로 기판으로서, 제1 방향(D1)의 제1 에지부(503) 및 제2 에지부(505) 사이에서 제1 방향(D1)과 수직인 제2 방향(D2)으로 연장될 수 있다. 버퍼 칩(590)은 회로 기판(501)의 중심부에 배치되고, 반도체 메모리 장치들(601a~601e, 602a~602e, 603a~603d, 604a~604d)은 버퍼 칩(590)과 제1 에지부(503) 사이 및 버퍼 칩(590)과 제2 에지부(505) 사이에서 복수의 행들로 배치될 수 있다.
여기서, 반도체 메모리 장치들(601a~601e, 602a~602e)은 버퍼 칩(590)과 제1 에지부(503) 사이에서 복수의 행들로 배치되고, 반도체 메모리 장치들(603a~603d, 604a~604d)은 버퍼 칩(590)과 제2 에지부(505) 사이에서 복수의 행들로 배치된다. 반도체 메모리 장치들(601a~601d, 602a~602d, 603a~603d, 604a~604d)은 데이터 칩들로 지칭될 수 있고, 반도체 메모리 장치들(601e, 602e)은 패리티 칩들로 호칭될 수 있다.
버퍼 칩(590)은 사용자 데이터 세트(SDQ) 및 메타 데이터(MDT)에 기초하여 제1 패리티 데이터 및 제2 패리티 데이터를 생성하고, 사용자 데이터 세트(SDQ)를 데이터 칩들에 저장하고, 메타 데이터(MDT), 상기 제1 패리티 데이터 및 상기 제2 패리티 데이터를 패리티 칩들에 저장할 수 있다.
버퍼 칩(590)은 커맨드/어드레스 전송선(561)을 통하여 메모리 장치들(601a~601e)에 커맨드/어드레스 신호를 제공하고, 커맨드/어드레스 전송선(563)을 통하여 메모리 장치들(602a~602e)에 커맨드/어드레스 신호를 제공할 수 있다. 또한, 버퍼 칩(590)은 커맨드/어드레스 전송선(571)을 통하여 반도체 메모리 장치들(603a~603d)에 커맨드/어드레스 신호를 제공하고, 커맨드/어드레스 전송선(573)을 통하여 반도체 메모리 장치들(604a~604d)에 커맨드/어드레스 신호를 제공할 수 있다.
커맨드/어드레스 전송선들(561, 563)은 제1 에지부(503)에 인접하여 배치되는 모듈 저항부(560)에 공통으로 연결되고, 커맨드/어드레스 전송선들(571, 573)은 제2 에지부(505)에 인접하여 배치되는 모듈 저항부(570)에 공통으로 연결될 수 있다. 모듈 저항부들(560, 570)은 각각 종단 전압(Vtt)에 연결된 종단 저항(Rtt/2)을 포함할 수 있다.
예를 들어, 반도체 메모리 장치들(601a~601e, 602a~602e, 603a~603d, 604a~604e) 각각은 DRAM 장치일 수 있다.
SPD 칩(580)은 버퍼 칩(590)에 인접하게 배치될 수 있고, PMIC(585)는 메모리 장치(603d)와 제2 에지부(505) 사이에 배치될 수 있다. PMIC(585)는 입력 전압(VIN)을 기초로 전원 전압(VDD)을 생성하고, 전원 전압(VDD)을 반도체 메모리 장치들(601a~601e, 602a~602e, 603a~603d, 604a~604d)에 제공할 수 있다.
도 18은 본 발명의 실시예들에 따른 메모리 시스템의 일 예를 나타내는 블록도이다.
도 18을 참조하면, 메모리 시스템(800)은 메모리 컨트롤러(810) 및 적어도 하나의 메모리 모듈(820, 830)을 포함할 수 있다. 예를 들어, 메모리 시스템(800)은 쿼드 랭크 메모리 모듈을 가질 수 있다.
메모리 컨트롤러(810)는 프로세서나 호스트로부터 인가되는 명령을 수행하도록 메모리 모듈들을 제어할 수 있다. 메모리 컨트롤러(810)는 프로세서나 호스트의 내부에 구현될 수도 있으며, 어플리케이션 프로세서 또는 SoC로 구현될 수도 있다. 메모리 컨트롤러(810)의 버스(840)에는 신호 무결성(signal integrity)을 위해 소스 터미네이션이 저항(RTT)을 통해 구현될 수 있다. 저항(RTT)은 입출력 버퍼들(811, 813)과 연결될 수 있다. 메모리 컨트롤러(810)는 시스템 ECC 엔진(815)을 포함할 수 있다.
제1 메모리 모듈(820) 및 제2 메모리 모듈(830)은 버스(840)를 통하여 메모리 컨트롤러(810)에 연결될 수 있다. 제1 메모리 모듈(820) 및 제2 메모리 모듈(830) 각각은 도 2의 메모리 모듈(MM)에 대응할 수 있다. 제1 메모리 모듈(820)은 적어도 하나의 메모리 랭크(RK1, RK2)를 포함하고, 제2 메모리 모듈(830)은 적어도 하나의 메모리 랭크(RK3, RK4)를 포함할 수 있다.
제1 메모리 모듈(820) 및 제2 메모리 모듈(830)은 복수의 데이터 칩들 및 적어도 하나의 패리티 칩을 포함하는 복수의 메모리 칩들을 포함하며, 각 메모리 칩은 온-다이 ECC 엔진(825)을 포함할 수 있다.
시스템 ECC 엔진(815) 및 온-다이 ECC 엔진(825)은 각각 도 7의 시스템 ECC 엔진(130) 및 온-다이 ECC 엔진들(400a~400k, 400p)에 대응할 수 있다. 따라서 시스템 ECC 엔진(815) 및 온-다이 ECC 엔진(825)은 의사순환 코드 기반의 패리티 검사 행렬(H)을 이용하여 동작함으로써, 단일의 버스트 에러(SBST_ERR) 및 멀티 비트 에러(MB_ERR)를 동시에 검출 및/또는 정정 가능하도록 구현될 수 있다. 실시예에 따라서, 시스템 ECC 엔진(815) 및 온-다이 ECC 엔진(825) 중 하나는 생략될 수도 있다.
도 19는 본 발명의 실시예에 따른 메모리 모듈을 전자 시스템에 응용한 예를 나타내는 블록도이다.
도 19를 참조하면, 전자 시스템(900)은 어플리케이션 프로세서(910), 통신(Connectivity) 모듈(920), 사용자 인터페이스(930), 비휘발성 메모리 장치(940), 메모리 모듈(950) 및 파워 서플라이(960)를 포함한다. 예를 들어, 전자 시스템(900)은 모바일 시스템일 수 있다.
어플리케이션 프로세서(910)는 메모리 컨트롤러(911)를 포함할 수 있다. 메모리 컨트롤러(911)는 시스템 ECC 엔진(예를 들어, 도 7의 시스템 ECC 엔진(130))을 포함할 수 있다.
어플리케이션 프로세서(910)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신 모듈(920)은 외부 장치와 무선 통신 또는 유선 통신을 수행할 수 있다.
메모리 모듈(950)은 어플리케이션 프로세서(910)에 의해 처리되는 데이터를 저장하거나, 동작 메모리(Working Memory)로서 작동할 수 있다. 메모리 모듈(950)은 복수의 메모리 장치들(951~95q) 및 버퍼 칩(961)을 포함할 수 있다. 메모리 모듈(950)은 도 17의 메모리 모듈(500)일 수 있다.
복수의 메모리 장치들(951~95q)은 각각 온-다이 ECC 엔진(예를 들어, 도 7의 온-다이 ECC 엔진들(400a~400k, 400p))을 포함하는 복수의 메모리 칩들을 포함할 수 있다.
비휘발성 메모리 장치(940)는 전자 시스템(900)을 부팅하기 위한 부트 이미지를 저장할 수 있다. 사용자 인터페이스(920)는 키패드, 터치 스크린과 같은 하나 이상의 입력 장치, 및/또는 스피커, 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함할 수 있다. 파워 서플라이(960)는 모바일 시스템(900)의 동작 전압을 공급할 수 있다.
전자 시스템(900) 또는 전자 시스템(900)의 구성요소들은 다양한 형태들의 패키지를 이용하여 실장될 수 있다.
한편, 메모리 장치 및 메모리 시스템을 중심으로 본 발명의 실시예들을 설명하였으나, 본 발명의 실시예들은 메모리 장치 및/또는 메모리 시스템과 다른 장치들 사이의 데이터 전송 시에 발생하는 에러를 정정 및/또는 검출하는데 이용될 수도 있다. 예를 들어, ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(parallel ATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), CXL(Compute eXpress Link) 등과 같은 다양한 인터페이스 및/또는 인터커넥트를 통한 데이터 전송과 관련하여 본 발명의 실시예들이 적용될 수도 있다.
본 발명의 실시예들은 메모리 장치 및 메모리 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC(Personal Computer), 서버 컴퓨터(server computer), 클라우드 컴퓨터(cloud computer), 데이터 센터(data center), 워크스테이션(workstation), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone), 오토모티브(automotive) 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 입력 데이터 및 의사순환 코드(constacyclic code) 기반의 패리티 검사 행렬을 이용하여, 글로벌 신드롬 데이터 및 로컬 신드롬 데이터를 생성하는 신드롬 생성기; 및
    상기 글로벌 신드롬 데이터 및 상기 로컬 신드롬 데이터를 이용하여 상기 입력 데이터에 포함된 정정 가능한 에러를 정정하는 버스트 에러 정정기를 포함하고,
    상기 입력 데이터는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함하며,
    상기 입력 데이터에서 상기 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러(burst error) 및 상기 입력 데이터에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(multi-bit error)를 동시에 정정 가능한 ECC(error correction code) 디코더.
  2. 제 1 항에 있어서,
    상기 패리티 검사 행렬은 하기의 [수학식 1]의 패리티 검사 다항식(parity check polynomial) h(x)에 기초하여 획득되는 것을 특징으로 하는 ECC 디코더.
    [수학식 1]
  3. 제 2 항에 있어서,
    상기 패리티 검사 행렬은 글로벌 패리티 검사 행렬 및 로컬 패리티 검사 행렬을 포함하는 것을 특징으로 하는 ECC 디코더.
  4. 제 3 항에 있어서,
    상기 글로벌 패리티 검사 행렬은 하기의 [수학식 2] 및 [수학식 3]에 기초하여 구성되는 것을 특징으로 하는 ECC 디코더.
    [수학식 2]

    [수학식 3]
  5. 제 4 항에 있어서,
    상기 로컬 패리티 검사 행렬은 하기의 [수학식 4] 및 [수학식 5]에 기초하여 구성되는 것을 특징으로 하는 ECC 디코더.
    [수학식 4]

    [수학식 5]
  6. 제 5 항에 있어서,
    하기의 [수학식 6]으로 정의된 동반 행렬(companion matrix)을 이용하여 상기의 [수학식 2]의 PG 및 상기의 [수학식 4]의 PL의 모든 요소(element)들을 이진 요소(binary element)들로 변환하여 상기 글로벌 패리티 검사 행렬 및 상기 로컬 패리티 검사 행렬이 획득되는 것을 특징으로 하는 ECC 디코더.
    [수학식 6]
  7. 복수의 메모리 장치들을 포함하는 메모리 모듈; 및
    상기 메모리 모듈을 제어하고, 시스템 ECC(error correction code) 엔진을 포함하는 메모리 컨트롤러를 포함하고,
    상기 시스템 ECC 엔진은 ECC 디코딩을 수행하는 시스템 ECC 디코더를 포함하며, 상기 시스템 ECC 디코더는,
    상기 메모리 모듈로부터 제공되는 코드워드 세트 및 의사순환 코드(constacyclic code) 기반의 제1 패리티 검사 행렬을 이용하여, 제1 글로벌 신드롬 데이터 및 제1 로컬 신드롬 데이터를 생성하는 제1 신드롬 생성기; 및
    상기 제1 글로벌 신드롬 데이터 및 상기 제1 로컬 신드롬 데이터를 이용하여 상기 코드워드 세트에 포함된 정정 가능한 에러를 정정하는 제1 버스트 에러 정정기를 포함하고,
    상기 코드워드 세트는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함하며,
    상기 코드워드 세트에서 상기 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러(burst error)를 정정하거나 상기 코드워드 세트에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(multi-bit error)를 검출 가능한 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 코드워드 세트는, 상기 메모리 컨트롤러로부터 상기 메모리 모듈로 제공되는 하나의 독출 커맨드에 기초하여 상기 복수의 데이터 비트들이 복수의 데이터 입출력 핀들을 통해 출력되는 버스트(burst) 동작에 의해 상기 메모리 모듈로부터 제공되고,
    상기 제1 방향은 상기 버스트 동작의 기본 단위인 버스트 길이에 대응하는 것을 특징으로 하는 메모리 시스템.
  9. 제 7 항에 있어서,
    상기 복수의 메모리 장치들 각각은 메모리 셀 어레이 및 온-다이(on-die; OD) ECC 엔진을 포함하고, 상기 온-다이 ECC 엔진은 ECC 디코딩을 수행하는 온-다이 ECC 디코더를 포함하며, 상기 온-다이 ECC 디코더는,
    상기 메모리 셀 어레이로부터 제공되는 독출 데이터 및 의사순환 코드 기반의 제2 패리티 검사 행렬을 이용하여, 제2 글로벌 신드롬 데이터 및 제2 로컬 신드롬 데이터를 생성하는 제2 신드롬 생성기; 및
    상기 제2 글로벌 신드롬 데이터 및 상기 제2 로컬 신드롬 데이터를 이용하여 상기 독출 데이터에 포함된 정정 가능한 에러를 정정하는 제2 버스트 에러 정정기를 포함하는 것을 특징으로 하는 메모리 시스템.
  10. 메모리 셀 어레이; 및
    상기 메모리 셀 어레이로부터 제공되는 독출 데이터에 대한 ECC(error correction code) 디코딩을 수행하는 ECC 디코더를 포함하며, 상기 ECC 디코더는,
    상기 독출 데이터 및 의사순환 코드(constacyclic code) 기반의 패리티 검사 행렬을 이용하여, 글로벌 신드롬 데이터 및 로컬 신드롬 데이터를 생성하는 신드롬 생성기; 및
    상기 글로벌 신드롬 데이터 및 상기 로컬 신드롬 데이터를 이용하여 상기 독출 데이터에 포함된 정정 가능한 에러를 정정하는 버스트 에러 정정기를 포함하고,
    상기 독출 데이터는 제1 방향 및 제2 방향을 따라 배열되는 복수의 데이터 비트들을 포함하며,
    상기 독출 데이터에서 상기 제1 방향을 따라 배열되고 각각 2개 이상의 데이터 비트들을 포함하는 2개 이상의 심볼들에 대해 발생하는 단일의 버스트 에러(burst error) 및 상기 독출 데이터에서 2개 이상의 데이터 비트들에 대해 랜덤하게 발생하는 멀티 비트 에러(multi-bit error)를 동시에 검출 가능한 메모리 장치.
KR1020220113963A 2022-09-08 2022-09-08 의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템 KR20240035026A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220113963A KR20240035026A (ko) 2022-09-08 2022-09-08 의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템
US18/132,415 US20240097709A1 (en) 2022-09-08 2023-04-09 Error correction code decoder using constacyclic code, and memory device and memory system including the same
CN202310771337.1A CN117667499A (zh) 2022-09-08 2023-06-27 差错校正码解码器、存储器件和存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220113963A KR20240035026A (ko) 2022-09-08 2022-09-08 의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20240035026A true KR20240035026A (ko) 2024-03-15

Family

ID=90068857

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220113963A KR20240035026A (ko) 2022-09-08 2022-09-08 의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템

Country Status (3)

Country Link
US (1) US20240097709A1 (ko)
KR (1) KR20240035026A (ko)
CN (1) CN117667499A (ko)

Also Published As

Publication number Publication date
CN117667499A (zh) 2024-03-08
US20240097709A1 (en) 2024-03-21

Similar Documents

Publication Publication Date Title
US10803971B2 (en) Device for supporting error correction code and test method thereof
US20190034270A1 (en) Memory system having an error correction function and operating method of memory module and memory controller
CN112527549A (zh) 存储器控制器和包括该存储器控制器的存储器系统
US10162703B2 (en) Methods of correcting data errors and semiconductor devices used therein
KR20210089016A (ko) 메모리 컨트롤러 및 메모리 시스템
US10579472B2 (en) Semiconductor devices
US11068347B2 (en) Memory controllers, memory systems including the same and memory modules
KR20210080807A (ko) 메모리 컨트롤러 및 메모리 시스템
TWI805318B (zh) 操作記憶體控制器的方法、執行該方法的記憶體控制器和包括記憶體控制器的記憶體系統
KR20190038964A (ko) 에러 정정 코드 유닛, 그것의 인코딩 및 디코딩 방법
US20230100557A1 (en) Host-based error correction
US11456021B2 (en) Methods, semiconductor devices, and semiconductor systems
US10261860B2 (en) Semiconductor systems
US10439642B2 (en) Error correction method of data storage device
KR20240035026A (ko) 의사순환 코드를 이용한 ecc 디코더, 이를 포함하는 메모리 장치 및 메모리 시스템
EP4180960A1 (en) Error correction circuit, memory system, and error correction method
US11605441B1 (en) Memory systems having memory devices therein with enhanced error correction capability and methods of operating same
US20240178861A1 (en) Memory controllers and memory systems including the same
KR20230068265A (ko) 에러 정정 회로, 메모리 시스템 및 에러 정정 방법
US20230121163A1 (en) Routing Assignments Based on Error Correction Capabilities
CN116340049A (zh) 存储器系统及操作存储器系统的方法
CN118113210A (zh) 存储器控制器和包括存储器控制器的存储器系统
KR20230062172A (ko) 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 컨트롤러의 동작 방법
KR20230077606A (ko) 에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법