KR20190118027A - 메모리 시스템 및 메모리 시스템의 동작 방법 - Google Patents

메모리 시스템 및 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR20190118027A
KR20190118027A KR1020180041138A KR20180041138A KR20190118027A KR 20190118027 A KR20190118027 A KR 20190118027A KR 1020180041138 A KR1020180041138 A KR 1020180041138A KR 20180041138 A KR20180041138 A KR 20180041138A KR 20190118027 A KR20190118027 A KR 20190118027A
Authority
KR
South Korea
Prior art keywords
parity
data
error
flag
bits
Prior art date
Application number
KR1020180041138A
Other languages
English (en)
Other versions
KR102583797B1 (ko
Inventor
곽강섭
김기업
윤영준
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180041138A priority Critical patent/KR102583797B1/ko
Priority to US16/199,333 priority patent/US10936409B2/en
Priority to CN201811634890.6A priority patent/CN110362420B/zh
Publication of KR20190118027A publication Critical patent/KR20190118027A/ko
Application granted granted Critical
Publication of KR102583797B1 publication Critical patent/KR102583797B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1174Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC 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/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/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/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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Abstract

본 발명의 일 실시 예에 따르면, 제1 데이터 및 상기 제1 데이터에 대한 에러 정정 패리티인 제1 패리티가 저장된 메모리 셀 어레이; 및 상기 제1 패리티를 기초로 상기 제1 데이터를 정정하여 제2 데이터를 생성하고, 상기 제2 데이터를 기초로 상기 제2 데이터의 채널 전송을 위한 에러 정정 패리티인 제2 패리티를 생성하는 통합 ECC부를 포함하는 메모리 시스템이 개시된다.

Description

메모리 시스템 및 메모리 시스템의 동작 방법{MEMORY SYSTEM AND OPERATING METHOD OF MEMORY SYSTEM}
본 발명은 메모리 시스템에 관한 것으로, 보다 구체적으로는 에러를 정정하는 ECC부 및 소비 전력을 감소시키는 DBI부를 포함하는 메모리 시스템 및 메모리 시스템의 동작방법에 관한 것이다.
고성능 전자 시스템에 널리 사용되고 있는 반도체 장치는 그 용량 및 속도가 모두 증가하고 있다. 반도체 장치인 DRAM은 휘발성 메모리(volatile-memory)로서, 커패시터에 저장되어 있는 전하(charge)에 의해 데이터를 판정하는 메모리이다.
DRAM의 동작 속도가 가속화되고 저장 용량이 증가함에 따라, 데이터 전송의 높은 신뢰도 및 적은 소비 전력이 점차 요구되고 있다.
이를 위해, DRAM에 저장된 데이터를 정정하는데 필요한 코어 ECC부, 채널을 통해 전송되는 데이터를 정정하는데 필요한 링크 ECC부 및 메모리 시스템의 소비 전력을 감소시키는데 필요한 DBI부를 포함하는 메모리 시스템에 대한 필요성이 증대되고 있다.
본 발명의 실시 예들은 코어 ECC부 및 링크 ECC부를 모두 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법을 제공한다.
본 발명의 실시 예들은 코어 ECC 동작과 링크 ECC 동작을 동시에 수행할 수 있는 통합 ECC부를 포함하는 메모리 시스템 및 메모리 시스템의 동작방법을 제공한다.
본 발명의 실시 예들은 코어 ECC부, 링크 ECC부 및 DBI부를 모두 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법을 제공한다.
본 발명의 실시 예들은 코어 ECC 동작과 링크 ECC 동작을 동시에 수행할 수 있는 통합 ECC부 및 DBI부를 모두 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법을 제공한다.
본 발명의 실시 예에 따르면, 제1 데이터 및 상기 제1 데이터에 대한 에러 정정 패리티인 제1 패리티가 저장된 메모리 셀 어레이; 및 상기 제1 패리티를 기초로 상기 제1 데이터를 정정하여 제2 데이터를 생성하고, 상기 제2 데이터를 기초로 상기 제2 데이터의 채널 전송을 위한 에러 정정 패리티인 제2 패리티를 생성하는 통합 ECC부를 포함하는 메모리 시스템이 제공될 수 있다.
상기 통합 ECC부는 상기 제1 데이터를 기반으로 상기 제1 데이터의 SECDED(싱글 에러 정정 및 더블 에러 감지)에 대한 패리티인 제2 사전 패리티를 생성하는 SECDED 패리티 생성기를 포함할 수 있다.
상기 제2 사전 패리티는 상기 제1 데이터의 SEC(싱글 에러 정정)에 대한 패리티인 제1 서브 패리티; 및 상기 제1 데이터의 DED(더블 에러 감지)에 대한 패리티인 제2 서브 패리티로 구성될 수 있다.
상기 통합 ECC부는 상기 SECDED 패리티 생성기가 상기 제2 서브 패리티를 생성하기 위해 사용한 제1 데이터의 비트들에, 에러가 존재하는지 여부를 확인하여, 상기 제2 서브 패리티에 에러가 존재하는지 여부를 감지하는 DED 패리티 에러 감지기; 및 상기 제2 서브 패리티의 에러를 정정하는 DED 패리티 정정기를 더 포함할 수 있다.
상기 통합 ECC부는 상기 제1 데이터, 상기 제1 패리티 및 상기 제1 서브 패리티를 기초로, 해밍 코드(Hamming Code)에 정의된 규칙에 의해 신드롬을 생성하는 신드롬 생성기를 더 포함할 수 있다.
상기 통합 ECC부는 상기 신드롬을 기초로, 상기 제1 데이터의 에러 발생 여부 정보를 나타내는 제1 데이터 에러 플래그 및 상기 제1 패리티의 에러 발생 여부 정보를 나타내는 제1 패리티 에러 플래그를 생성하는 신드롬 디코더를 더 포함할 수 있다.
상기 DED 패리티 에러 감지기는, 제2 서브 패리티 에러 감지 플래그를 기초로, 제2 서브 패리티의 에러 발생 여부 정보를 나타내는 제2 서브 패리티 에러 플래그를 생성하되, 상기 제2 서브 패리티 에러 감지 플래그는, 상기 SECDED 패리티 생성기가 상기 제2 서브 패리티를 생성하기 위해 사용한 제1 데이터의 비트들에 상응하는 제1 데이터 에러 플래그의 비트들일 수 있다.
상기 DED 패리티 정정기는 상기 제2 서브 패리티 에러 플래그를 기초로 상기 제2 서브 패리티를 정정할 수 있다.
상기 DED 패리티 정정기는 상기 제2 서브 패리티 에러 플래그가 로우 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 그대로 출력하고, 상기 제2 서브 패리티 에러 플래그가 하이 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 반전하여 출력할 수 있다.
상기 통합 ECC부는 상기 제1 데이터 에러 플래그를 기반으로, 상기 제1 데이터의 에러를 정정하는 데이터 정정기를 더 포함할 수 있다.
상기 데이터 정정기는 상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 로우 로직을 갖는 경우, 상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 그대로 출력하고, 상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 하이 로직을 갖는 경우, 상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 반전하여 출력할 수 있다.
상기 통합 ECC부는 상기 제1 패리티 에러 플래그를 기반으로, 상기 제1 패리티의 에러를 정정하는 SEC 패리티 정정기를 더 포함할 수 있다.
상기 SEC 패리티 정정기는 상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 로우 로직을 갖는 경우, 상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 그대로 출력하고, 상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 하이 로직을 갖는 경우, 상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 반전하여 출력할 수 있다.
상기 제2 패리티는 상기 SEC 패리티 정정기가 상기 제1 패리티의 에러를 정정한 비트들; 및 상기 DED 패리티 정정기가 상기 제2 서브 패리티의 에러를 정정한 비트로 구성된 패리티일 수 있다.
본 발명의 실시 예에 따르면, 상기 제2 데이터에 대해 DBI 스킴을 적용한 제3 데이터 및 상기 제3 데이터에 대한 반전 정보인 DBI 플래그를 생성하는 DBI부; 및 상기 제2 패리티 및 상기 DBI 플래그를 기반으로, 복수의 DBI 플래그 비트들과 상기 복수의 DBI 플래그 비트들 각각에 상응하는 복수의 데이터 비트들의 홀수/짝수 정보에 따라, 상기 제3 데이터와 상기 DBI 플래그에 대한 에러 정정 패리티인 제3 패리티를 생성하는 패리티 재생성기를 더 포함하는 메모리 시스템이 제공될 수 있다.
상기 홀수/짝수 정보는, 상기 제2 패리티를 구성하는 제2 패리티 비트들의 로직 가변 여부를 결정할 수 있는 DBI 플래그 비트에 대한 정보일 수 있다.
상기 홀수/짝수 정보는, 상기 제3 패리티 생성에 관련된 DBI 플래그 비트들과, 상기 제3 패리티 생성에 관련된 데이터 비트들의, 각 그룹 별 개수에 대한 정보일 수 있다.
상기 패리티 재생성기는, 상기 홀수/짝수 정보가 홀수일 때, 상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트를 상기 제3 패리티를 생성하기 위해 사용할 수 있다.
상기 패리티 재생성기는, 상기 제2 패리티; 및 상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트들에 대해 배타적 논리합(XOR) 연산을 수행하여, 제3 패리티를 생성할 수 있다.
상기 통합 ECC부; 및 상기 패리티 재생성기는, 해밍 코드(Hamming Code) 로직에 따라 구동될 수 있다.
본 발명의 실시 예에 따르면, 메모리 셀 어레이에 저장된 제1 데이터에 대한 에러 정정 패리티인 제1 패리티를 기초로 상기 제1 데이터를 정정하여 제2 데이터를 생성하는 단계; 및 상기 제2 데이터를 기초로 상기 제2 데이터의 채널 전송을 위한 에러 정정 패리티인 제2 패리티를 생성하는 단계를 포함하는 메모리 시스템의 동작 방법이 제공될 수 있다.
상기 제1 데이터를 기반으로 상기 제1 데이터의 SECDED(싱글 에러 정정 및 더블 에러 감지)에 대한 패리티인 제2 사전 패리티를 생성하는 단계를 더 포함할 수 있다.
상기 제2 사전 패리티는 상기 제1 데이터의 SEC(싱글 에러 정정)에 대한 패리티인 제1 서브 패리티; 및 상기 제1 데이터의 DED(더블 에러 감지)에 대한 패리티인 제2 서브 패리티로 구성될 수 있다.
상기 SECDED 패리티 생성기가 상기 제2 서브 패리티를 생성하기 위해 사용한 제1 데이터의 비트들에, 에러가 존재하는지 여부를 확인하여, 상기 제2 서브 패리티에 에러가 존재하는지 여부를 감지하는 단계; 및 상기 제2 서브 패리티의 에러를 정정하는 단계를 더 포함할 수 있다.
상기 제1 데이터, 상기 제1 패리티 및 상기 제1 서브 패리티를 기초로, 해밍 코드(Hamming Code)에 정의된 규칙에 의해 신드롬을 생성하는 단계를 더 포함할 수 있다.
상기 신드롬을 기초로, 상기 제1 데이터의 에러 발생 여부 정보를 나타내는 제1 데이터 에러 플래그 및 상기 제1 패리티의 에러 발생 여부 정보를 나타내는 제1 패리티 에러 플래그를 생성하는 단계를 더 포함할 수 있다.
상기 제2 서브 패리티에 에러가 존재하는지 여부를 감지하는 단계는 제2 서브 패리티 에러 감지 플래그를 기초로, 제2 서브 패리티의 에러 발생 여부 정보를 나타내는 제2 서브 패리티 에러 플래그를 생성하는 단계이되, 상기 제2 서브 패리티 에러 감지 플래그는, 상기 제2 서브 패리티를 생성하기 위해 사용된 제1 데이터의 비트들에 상응하는 제1 데이터 에러 플래그의 비트들일 수 있다.
상기 제2 서브 패리티의 에러를 정정하는 단계는 상기 제2 서브 패리티 에러 플래그를 기초로 상기 제2 서브 패리티를 정정하는 단계일 수 있다.
상기 제2 서브 패리티의 에러를 정정하는 단계는 상기 제2 서브 패리티 에러 플래그가 로우 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 그대로 출력하고, 상기 제2 서브 패리티 에러 플래그가 하이 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 반전하여 출력하는 단계일 수 있다.
상기 제1 데이터 에러 플래그를 기반으로, 상기 제1 데이터의 에러를 정정하는 단계를 더 포함할 수 있다.
상기 제1 데이터의 에러를 정정하는 단계는 상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 로우 로직을 갖는 경우, 상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 그대로 출력하고, 상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 하이 로직을 갖는 경우, 상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 반전하여 출력하는 단계일 수 있다.
상기 제1 패리티 에러 플래그를 기반으로, 상기 제1 패리티의 에러를 정정하는 단계를 더 포함할 수 있다.
상기 제1 패리티의 에러를 정정하는 단계는 상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 로우 로직을 갖는 경우, 상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 그대로 출력하고, 상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 하이 로직을 갖는 경우, 상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 반전하여 출력하는 단계일 수 있다.
상기 제2 패리티는 상기 SEC 패리티 정정기가 상기 제1 패리티의 에러를 정정한 비트들; 및 상기 DED 패리티 정정기가 상기 제2 서브 패리티의 에러를 정정한 비트로 구성된 패리티일 수 있다.
상기 제2 데이터에 대해 DBI 스킴을 적용한 제3 데이터 및 상기 제3 데이터에 대한 반전 정보인 DBI 플래그를 생성하는 단계; 및 상기 제2 패리티 및 상기 DBI 플래그를 기반으로, 복수의 DBI 플래그 비트들과 상기 복수의 DBI 플래그 비트들 각각에 상응하는 복수의 데이터 비트들의 홀수/짝수 정보에 따라, 상기 제3 데이터와 상기 DBI 플래그에 대한 에러 정정 패리티인 제3 패리티를 생성하는 단계를 더 포함할 수 있다.
상기 홀수/짝수 정보는, 상기 제2 패리티를 구성하는 제2 패리티 비트들의 로직 가변 여부를 결정할 수 있는 DBI 플래그 비트에 대한 정보일 수 있다.
상기 홀수/짝수 정보는, 상기 제3 패리티 생성에 관련된 DBI 플래그 비트들과, 상기 제3 패리티 생성에 관련된 데이터 비트들의, 각 그룹 별 개수에 대한 정보일 수 있다.
상기 제3 패리티를 생성하는 단계는 상기 홀수/짝수 정보가 홀수일 때, 상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트를 상기 제3 패리티를 생성하기 위해 사용하는 단계일 수 있다.
상기 제3 패리티를 생성하는 단계는 상기 제2 패리티; 및 상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트들에 대해 배타적 논리합(XOR) 연산을 수행하여, 제3 패리티를 생성하는 단계일 수 있다.
상기 제2 데이터를 생성하는 단계; 상기 제3 패리티를 생성하는 단계; 및 상기 제2 패리티를 생성하는 단계는 해밍 코드(Hamming Code) 로직에 따라 구동되는 단계일 수 있다.
본 발명의 실시 예들에 따라 제공되는 메모리 시스템은, 코어 ECC부와 링크 ECC부를 함께 구비하여, 메모리 셀의 에러를 정정하면서 동시에 채널에서 발생하는 에러에 대해서도 향상된 ECC 성능을 제공할 수 있다.
본 발명의 실시 예들에 따라 제공되는 메모리 시스템은, 코어 ECC부의 동작과 링크 ECC부의 동작을 함께 수행할 수 있는 통합 ECC부를 구비하여, ECC 동작의 래이턴시를 감소시킬 수 있고, 소비되는 전력을 감소시킬 수 있다.
본 발명의 실시 예들에 따라 제공되는 메모리 시스템은, 코어 ECC부, 링크 ECC부 및 DBI부를 함께 구비하여, 상기 코어 ECC부 및 링크 ECC부를 통해 향상된 ECC 성능을 제공함과 동시에, 상기 DBI부를 통해 메모리 시스템에서 소비되는 전력을 감소시킬 수 있다.
본 발명의 실시 예들에 따라 제공되는 메모리 시스템은, 단일의 패리티 생성기를 구비하는 통합 ECC부를 통해, 메모리 시스템의 면적을 감소시킬 수 있다.
도 1a 및 도 1b는 본 발명의 실시 예에 따른 코어 ECC부 및 링크 ECC부를 모두 포함하는 메모리 시스템을 개략적으로 도시한 도면.
도 2a 및 도 2b는 본 발명의 실시 예에 따른 통합 ECC부를 포함하는 메모리 시스템을 개략적으로 도시한 도면.
도 3a 및 도 3b는 본 발명의 실시 예에 따른 코어 ECC부, 링크 ECC부 및 DBI부를 모두 포함하는 메모리 시스템을 개략적으로 도시한 도면.
도 4a 및 도 4b는 본 발명의 실시 예에 따른 통합 ECC부 및 DBI부를 포함하는 메모리 시스템을 개략적으로 도시한 도면.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1a 내지 도 2b를 참조하여, 본 발명의 실시 예에 따른 메모리 시스템에 있어서, 코어 ECC부의 기능과 링크 ECC 기능을 함께 포함하는 메모리 시스템에 대해서 설명한다.
도 1a 및 도 1b는 코어 ECC(110) 및 링크 ECC(130)를 개별적으로 구비하여, 메모리 셀 어레이(150)에 저장된 데이터의 오류를 정정하고, 메모리 컨트롤러(102)에 데이터를 전송하는 메모리 시스템(10)의 구성을 도시한 것이다.
도 1a는 코어 ECC부(110) 및 링크 ECC부(130)를 모두 포함하는 메모리(100)을 도시한 것이다.
메모리 컨트롤러(Memory Controller, 102)는 메모리(100)을 제어하기 위한 각종 신호들, 예컨대 커맨드/어드레스 신호(CMD/ADD), 클록 신호(CLK), 데이터 신호(DQ)를, 채널(Channel, 105)을 통해 제공할 수 있다.
상기 메모리 컨트롤러(102)와 상기 메모리(100)은 서로 채널(105)을 통해 데이터를 송수신할 수 있다.
상기 메모리(100)에 포함된 메모리 셀 어레이(Memory Cell Array, 150)는 DRAM(Dynamic Random Access Memory)과 SRAM(Static Random Access Memory) 등의 휘발성(Volatile) 메모리를 포함할 수 있다.
상기 메모리 셀 어레이(150)는 데이터를 저장하는 복수의 메모리 셀들(미도스)를 포함할 수 있다.
상기 메모리 셀 어레이(150)는, 본 명세서에서는 단일의 메모리 셀 어레이로서 설명되지만, 이는 설명의 편의를 위한 것이며, 복수의 메모리 셀 어레이들을 포함하는 메모리(100)에서도 본 명세서의 설명이 동일하게 적용될 수 있다.
상기 메모리 셀 어레이(150)에 제1 데이터(DATA_A<0:127>)가 저장된다. 상기 메모리 셀에 저장된 제1 데이터(DATA_A<0:127>)는, 상기 메모리 셀의 열화 등의 문제에 따라 에러가 발생할 수 있다.
상기 메모리 셀에 저장된 제1 데이터(DATA_A<0:127>)의 에러를 정정하기 위해, 제1 패리티(PARITY_A<0:7>)가 메모리 셀 어레이에 저장된다. 상기 제1 패리티(PARITY_A<0:7>)는 상기 메모리 셀에 저장된 제1 데이터(DATA_A<0:127>)의 싱글 에러 정정(Single Error Correction, SEC)에 관련된 패리티일 수 있다. 이러한 에러 정정 기법은 해밍코드(Hamming Code)에 기반하여 동작할 수 있다.
메모리(100)에 포함된 코어 ECC(110)는 상기 제1 패리티(PARITY_A<0:7>)를 기반으로, 상기 제1 데이터(DATA_A<0:127>)에 대해 싱글 에러 정정(SEC)을 수행하여, 에러가 정정된 제2 데이터(DATA_B<0:127>)를 생성한다.
구체적으로, 도 1b를 참조하면, 상기 코어 ECC(110)는 SEC 패리티 생성기(SEC Parity Generator, 111), 신드롬 생성기(Syndrome Generator, 113), 신드롬 디코더(Syndrome Decoder, 115) 및 데이터 정정기(Data Corrector, 117)로 구성된다.
상기 SEC 패리티 생성기(111)는 상기 제1 데이터(DATA_A<0:127>)를 기반으로, 제2 패리티(PARITY_AA<0:7>)를 생성한다. 상기 SEC 패리티 생성기(111)는 상기 제2 패리티(PARITY_AA<0:7>)를 해밍코드(Hamming Code)에서 정해진 규칙에 따라 생성한다.
예를 들어, 하기 표 1을 참조하여 설명된 바와 같은 원리로, 상기 제2 패리티(PARITY_AA<0:7>)의 첫 번째 비트인 PARITY_AA0에는, 상기 제1 데이터(DATA_A<0:127>)의 128개의 비트들 중 상기 해밍코드에 따라 선택된 데이터 비트들을 XOR 하여 생성된 결과 값이 저장된다.
같은 방식으로, 상기 제2 패리티(PARITY_AA<0:7>)의 두 번째 비트인 PARITY_AA1 내지 상기 제2 패리티(PARITY_AA<0:7>)의 여덟 번째 비트인 PARITY_AA7 값들이 각각 상기 SEC 패리티 생성기(111)를 통해 결정되어, 상기 제2 패리티(PARITY_AA<0:7>)가 생성된다.
상기 신드롬 생성기(113)는 상기 제1 데이터(DATA_A<0:127>), 제1 패리티(PARITY_A<0:7>) 및 제2 패리티(PARITY_AA<0:7>)를 수신하여, 신드롬(SYND<0:7>)을 생성한다. 상기 신드롬 생성기(113)는, 상기 제1 데이터(DATA_A<0:127>) 및 제1 패리티(PARITY_A<0:7>)를, 해밍코드(Hamming Code)에 의해 정의된 신드롬 생성 규칙에 따라, 상기 제2 패리티(PARITY_AA<0:7>)의 비트들과 XOR(배타적 논리합) 동작을 수행하여, 에러 위치 정보를 인코딩한 정보인 신드롬(SYND<0:7>)을 생성한다.
상기 신드롬 디코더(115)는, 상기 신드롬(SYND<0:7>)를 디코딩하여, 상기 제1 데이터(DATA_A<0:127>)의 에러 위치 정보를 나타내는 제1 데이터 에러 플래그(EF_DATA_A<0:127>)를 생성한다. 상기 제1 데이터 에러 플래그(EF_DATA_A<0:127>)는 상기 제1 데이터(DATA_A<0:127>)의 어떤 비트에 에러가 존재하는지 나타낸다. 예를 들어, EF_DATA_A0 비트가 1인 경우, DATA_A0 비트는 에러를 갖는다. EF_DATA_A0 비트가 0인 경우, EF_DATA_A0 비트는 에러를 갖지 않는다.
상기 데이터 정정기(117)은 상기 제1 데이터(DATA_A<0:127>) 및 제1 데이터 에러 플래그(EF_DATA_A<0:127>)를 수신하여, 상기 제1 데이터(DATA_A<0:127>)의 에러 비트를 정정한 결과인 제2 데이터(DATA_B<0:127>)을 생성한다.
다시 도 1a로 돌아와서, 상기 링크 ECC(130)는 상기 제2 데이터(DATA_B<0:127>)을 수신하여, 링크 데이터(DATA_B<0:127>) 및 상기 링크 데이터(DATA_B<0:127>)의 SECDED에 대한 패리티인 제2 패리티(PARITY_B<0:8>)를 생성한다. 상기 제2 패리티(PARITY_B<0:8>)는, 상기 링크 데이터(DATA_B<0:127>)의 싱글 에러 정정(Single Error Correction, SEC)을 위한 8개의 비트(PARITY_B<0:7>) 외에, 상기 링크 데이터(DATA_B<0:127>)의 더블 에러 감지(Double Error Detection, DED)를 위한 PARITY_B8을 포함하여, 총 9개의 비트를 갖는다.
구체적으로, 도 1b를 참조하면, 상기 링크 ECC(130)에 포함된 SECDED 패리티 생성기(SECDED Parity Generator, 131)는, 상기 제2 데이터(DATA_B<0:127>)를 수신하여, 해밍코드(Hamming Code)에 따라 정의된 패리티 비트 생성 규칙에 따라, 상기 제2 패리티(PARITY_B<0:8>)를 생성한다. 상기 링크 데이터(DATA_B<0:127>)는 상기 제2 데이터(DATA_B<0:127>)와 동일하다.
이와 같이, 상술한 본 발명의 실시 예에 따른 메모리 시스템의 구성에 따르면, 상기 제1 데이터(DATA_A<0:127>) 및 상기 제1 패리티(PARITY_A<0:7>)로부터, 상기 제2 패리티(PARITY_B<0:8>)를 생성하기 위해서는, SEC 패리티 생성기(111)를 포함하는 코어 ECC(110) 및 SECDED 패리티 생성기(131)를 포함하는 링크 ECC(130)를 모두 구비하여야 한다.
즉, 상술한 메모리 시스템의 구성에 따르면, 상기 SEC 패리티 생성기(111) 및 상기 SECDED 패리티 생성기(131)를 동시에 구비함에 따라, ECC 동작의 래이턴시 증가, 소비되는 파워의 증가 및 ECC 장치의 면적 증가 등의 문제점이 존재한다. 이는, ECC부에서 가장 큰 면적을 차지하는 구성요소가 패리티 생성기이기 때문이다.
이에 따라, 본 발명의 또 다른 실시 예에서는, 메모리 셀에 저장된 패리티 비트의 비트 수를 8개로 유지하고, SECDED 동작을 수행하는 패리티 생성기를 하나만 구비하면서, 8개의 비트를 갖는 제1 패리티(PARITY_A<0:7>)로부터, 상기 제1 패리티(PARITY_A<0:7>)보다 1개의 비트가 추가된, 즉 9개의 비트를 갖는 SECDED에 대한 패리티인 제2 패리티(PARITY_B<0:8>)를 생성하는 방법을 제안한다.
도 2a 및 도 2b는, 본 발명의 일 실시 예에 따라, 한 개의 패리티 생성기만을 구비하는 통합 ECC(210)를 통해, 상기 코어 ECC(110) 및 상기 링크 ECC(130)의 동작을 모두 수행하여, 데이터의 에러를 정정하고, 상기 데이터에 대한 패리티를 생성하는 메모리 시스템을 도시한 것이다.
상기 메모리 셀 어레이(150)에 제1 데이터(DATA_A<0:127>)가 저장될 수 있다. 상기 제1 데이터(DATA_A<0:127>)는, 상기 메모리 셀의 열화 등의 문제에 따라 에러가 발생할 수 있다. 상기 제1 데이터(DATA_A<0:127>)의 에러를 정정하기 위해, 제1 패리티(PARITY_A<0:7>)가 메모리 셀 어레이에 저장될 수 있다. 상기 제1 패리티(PARITY_A<0:7>)는 상기 제1 데이터(DATA_A<0:127>)의 싱글 에러를 정정하기 위해 사용될 수 있다. 이러한 에러 정정 기법은 해밍코드(Hamming Code)에 기반하여 동작할 수 있다.
메모리(100)에 포함된 통합 ECC(210)는, 상기 제1 패리티(PARITY_A<0:7>)를 기초로, 상기 제1 데이터(DATA_A<0:127>)의 싱글 에러가 정정된 링크 데이터(DATA_B<0:127>)를 생성할 수 있다.
또한, 통합 ECC(210)는, 상기 링크 데이터(DATA_B<0:127>)에 대해 싱글 에러 정정 및 더블 에러 감지(SECDED)에 대한 패리티인 9비트의 제2 패리티(PARITY_B<0:8>)를 생성할 수 있다.
구체적으로, 도 2b를 참조하면, 상기 통합 ECC(210)는 SECDED 패리티 생성기(SECDED Parity Generator, 211), 신드롬 생성기(Syndrome Generator, 213), 신드롬 디코더(Syndrome Decoder, 215), SEC 패리티 정정기(SEC Parity Corrector, 216), 데이터 정정기(Data Corrector, 217), DED 패리티 에러 감지기(DED Parity Error Detector, 218) 및 DED 패리티 정정기(DED Parity Corrector, 219)로 구성될 수 있다.
상기 SECDED 패리티 생성기(211)는 상기 제1 데이터(DATA_A<0:127>)를 수신하여, 9비트의 제2 사전 패리티(PARITY_AA<0:8>)를 생성할 수 있다. 상기 SECDED 패리티 생성기(211)는, 상기 표 1을 참조하여 설명된 바와 같이, 해밍코드(Hamming Code)에 의해 정해진 규칙에 따라 상기 제2 사전 패리티(PARITY_AA<0:8>)를 생성할 수 있다. 예를 들어, 상기 제2 사전 패리티(PARITY_AA<0:8>)의 첫 번째 비트인 PARITY_AA0에는, 상기 제1 데이터(DATA_A<0:127>)의 128개의 비트들 중 상기 해밍코드에 따라 선택된 데이터 비트들에 대해 XOR(배타적 논리합)을 수행한 결과 값이 저장될 수 있다. 같은 방식으로, 상기 SECDED 패리티 생성기(211)는, 상기 제2 사전 패리티(PARITY_AA<0:8>)의 두 번째 비트인 PARITY_AA1 내지 상기 제2 사전 패리티(PARITY_AA<0:8>)의 아홉 번째 비트인 제2 서브 패리티(PARITY_AA8) 값들을 결정할 수 있고, 이에 따라 상기 제2 사전 패리티(PARITY_AA<0:8>)가 생성될 수 있다.
상기 신드롬 생성기(213)는 상기 제1 데이터(DATA_A<0:127>), 제1 패리티(PARITY_A<0:7>) 및 8비트의 제1 서브 패리티(PARITY_AA<0:7>)를 수신하여, 신드롬(SYND<0:7>)을 생성할 수 있다.
상기 8비트의 제1 서브 패리티(PARITY_AA<0:7>)는, 상기 9비트의 제2 사전 패리티(PARITY_AA<0:8>)에서 9번째 패리티 비트인 제2 서브 패리티(PARITY_AA8)가 제외된 패리티일 수 있다.
상기 제2 서브 패리티(PARITY_AA8)는 상기 제1 패리티(PARITY_A<0:7>)의 8개의 비트들에 대응하지 않는 비트이고, 상기 제2 서브 패리티(PARITY_AA8)는 에러가 존재할 수 있는 제1 데이터(DATA_A<0:127>)에 의해 생성된 비트이기 때문에, 상기 신드롬 생성기(213) 및 신드롬 디코더(215)는, 상기 제2 서브 패리티(PARITY_AA8)에 대한 에러 정보(에러 플래그)를 생성할 수 없다.
따라서, 본 발명의 실시 예에 따른 통합 ECC부(210)는 상기 제2 서브 패리티(PARITY_AA8)에 에러가 존재하는지 확인할 수 있는 DED 패리티 에러 감지기(218) 및 상기 제2 서브 패리티(PARITY_AA8)의 에러를 정정할 수 있는 DED 패리티 정정기(219)를 포함할 수 있다.
상기 신드롬 생성기(213)는 상기 제1 데이터(DATA_A<0:127>) 및 제1 서브 패리티(PARITY_AA<0:7>)를, 해밍코드(Hamming Code)에 의해 정의된 신드롬 생성 규칙에 따라, 상기 제1 패리티(PARITY_A<0:7>)의 비트들과 XOR 하여, 에러 위치 정보를 인코딩한 정보인 신드롬(SYND<0:7>)을 생성할 수 있다.
상기 신드롬 디코더(215)는, 상기 신드롬(SYND<0:7>)을 디코딩하여, 상기 제1 패리티(PARITY_A<0:7>)의 에러 위치 정보를 나타내는 제1 패리티 에러 플래그(EF_PARITY_A<0:7>) 및 상기 제1 데이터(DATA_A<0:127>)의 에러 위치 정보를 나타내는 제1 데이터 에러 플래그(EF_DATA_A<0:127>)를 생성할 수 있다.
상기 제1 패리티 에러 플래그(EF_PARITY_A<0:7>)는 상기 제1 패리티(PARITY_A<0:7>)의 어떤 비트에 에러가 존재하는지 나타낼 수 있다. 예를 들어, EF_PARITY_A0 비트가 1인 경우, PARITY_A0 비트는 에러가 존재하는 비트일 수 있다. EF_PARITY_A0 비트가 0인 경우, PARITY_A0 비트는 에러가 존재하지 않는 비트일 수 있다.
또한, 상기 제1 데이터 에러 플래그(EF_DATA_A<0:127>)는 상기 제1 데이터(DATA_A<0:127>)의 어떤 비트에 에러가 존재하는지 나타낼 수 있다. 예를 들어, EF_DATA_A0 비트가 1인 경우, DATA_A0 비트는 에러가 존재하는 비트일 수 있다. EF_DATA_A0 비트가 0인 경우, DATA_A0 비트는 에러가 존재하지 않는 비트일 수 있다.
상기 SEC 패리티 정정기(216)는 상기 제1 패리티(PARITY_A<0:7>) 및 상기 제1 패리티 에러 플래그(EF_PARITY_A<0:7>)를 수신하여, 상기 제1 패리티(PARITY_A<0:7>)의 에러 비트를 정정한 결과인 PARITY_B<0:7>를 생성할 수 있다.
상기 데이터 정정기(217)는 상기 제1 데이터(DATA_A<0:127>) 및 상기 제1 데이터 에러 플래그(EF_DATA_A<0:127>)를 수신하여, 상기 제1 데이터(DATA_A<0:127>)의 에러 비트를 정정한 결과인 링크 데이터(DATA_B<0:127>)를 생성할 수 있다.
상기 DED 패리티 에러 감지기(218)는, 상기 신드롬 디코더(215)가 생성한 제1 데이터 에러 플래그(EF_DATA_A<0:127>) 중, 상기 SECDED 패리티 생성기(211)가 '제2 서브 패리티(PARITY_AA8)를 생성하기 위해 사용하였던 제1 데이터(DATA_A<0:127>)의 비트들'에 대한 에러 정보인 제2 서브 패리티 에러 감지 플래그(EF_DATA_AA8)를 수신할 수 있다.
상기 '제2 서브 패리티(PARITY_AA8)을 생성하기 위해 사용하였던 제1 데이터(DATA_A<0:127>)의 비트들'에 에러가 존재하는 경우, 상기 제2 서브 패리티(PARITY_AA8)에도 반드시 에러가 존재한다.
따라서, 상기 DED 패리티 에러 감지기(218)는, 상기 '제2 서브 패리티(PARITY_AA8)을 생성하기 위해 사용하였던 제1 데이터(DATA_A<0:127>)의 비트들'에 에러가 존재하는지 여부를 확인하여, 상기 제2 서브 패리티(PARITY_AA8)의 에러를 감지할 수 있다.
상기 DED 패리티 에러 감지기(218)는, 상기 '제2 서브 패리티(PARITY_AA8)을 생성하기 위해 사용하였던 제1 데이터(DATA_A<0:127>)의 비트들'에 대해 OR 게이팅 동작을 수행하여, 상기 제2 서브 패리티(PARITY_AA8)에 에러가 존재하는지 감지할 수 있다.
상기 '제2 서브 패리티(PARITY_AA8)을 생성하기 위해 사용하였던 제1 데이터(DATA_A<0:127>)의 비트들'에 에러가 존재하지 않는다면, 상기 제2 서브 패리티(PARITY_AA8)에도 에러가 존재하지 않기 때문에, 상기 제2 서브 패리티 에러 감지 플래그(EF_DATA_AA8)는 로우 로직을 가질 수 있다. 이에 따라, 상기 DED 패리티 에러 감지기(218)는 상기 제2 서브 패리티 에러 플래그(EF_PARITY_AA8)에 로우 로직을 입력하여 생성할 수 있다.
상기 '제2 서브 패리티(PARITY_AA8)을 생성하기 위해 사용하였던 제1 데이터(DATA_A<0:127>)의 비트들'에 싱글 에러가 존재한다면, 상기 제2 서브 패리티(PARITY_AA8)에도 싱글 에러가 존재하기 때문에, 상기 제2 서브 패리티 에러 감지 플래그(EF_DATA_AA8)는 하이 로직을 가질 수 있다. 이에 따라, 상기 DED 패리티 에러 감지기(218)는 상기 제2 서브 패리티 에러 플래그(EF_PARITY_AA8)에 하이 로직을 입력하여 생성할 수 있다.
상기 DED 패리티 정정기(219)는, 제2 서브 패리티 에러 플래그(EF_PARITY_AA8) 및 제2 서브 패리티(PARITY_AA8)를 수신하여, 상기 제2 서브 패리티 에러 플래그(EF_PARITY_AA8)이 로우 로직인 경우, 제2 서브 패리티(PARITY_AA8)의 로직과 동일한 PARITY_B8을 생성할 수 있다.
또한, 상기 DED 패리티 정정기(219)는, 상기 제2 서브 패리티 에러 플래그(EF_PARITY_AA8)이 하이 로직인 경우, 제2 서브 패리티(PARITY_AA8)의 로직을 반전한 PARITY_B8을 생성할 수 있다.
결과적으로, 제2 패리티(PARITY_B<0:8>)는 상기 PARITY_B<0:7> 및 상기 PARITY_B8로 구성된 비트들일 수 있다. 상기 제2 패리티(PARITY_B<0:8>)는, 상기 링크 데이터(DATA_B<0:127>)의 싱글 에러 정정(Single Error Correction)을 위한 8개의 비트들인 PARITY_B<0:7>과 상기 링크 데이터(DATA_B<0:127>)의 더블 에러 감지(Double Error Detection)를 위한 PARITY_B8을 포함하여 총 9개의 비트들로 구성될 수 있다.
즉, 상술한 바와 같이, 본 발명의 일 실시 예에 따르면, 한 개의 패리티 생성기, 즉 SECDED 패리티 생성기(211)만을 구비하면서도, DED 패리티 에러 감지기(218) 및 DED 패리티 정정기(219)를 통해, 상기 링크 데이터(DATA_B<0:127>)의 SECDED에 대한 제2 패리티(PARITY_B<0:8>)를 생성할 수 있다.
상술한 본 발명의 실시 예에 따른 메모리 시스템에서는 가장 넓은 면적을 차지하는 패리티 생성기가 2개가 필요했지만, 본 발명의 다른 실시 예에 따르면 1개의 패리티 생성기를 통해 코어 ECC 기능과 링크 ECC 기능을 모두 수행할 수 있다. 상기 DED 패리티 에러 감지기(218) 및 DED 패리티 정정기(219)는 패리티 생성기에 비해 매우 작은 면적을 차지하기 때문에, 메모리(100)의 전체적인 면적은 크게 감소할 수 있다.
결과적으로, 상기 복수의 패리티 생성기들(111 및 131)을 동작시켰을 때 보다, 본 발명의 실시 예에 따른 메모리(100)는 ECC 동작의 래이턴시 감소, 소비되는 파워의 감소, ECC 장치의 면적 감소 등의 향상된 효과가 존재할 수 있다.
도 3a 내지 도 4b는, ECC부 및 DBI부를 포함하는 본 발명의 또 다른 실시 예에 따른 메모리 시스템에 대해 도시한 것이다.
도 3a는 메모리(100)의 리드 동작에 있어서, 코어 ECC부(110), DBI부(320) 및 링크 ECC부(130)를 모두 포함하는 메모리(100)을 도시한 것이다.
메모리 컨트롤러(Memory Controller, 102)는 메모리(100)을 제어하기 위한 각종 신호들, 예컨대 커맨드/어드레스 신호(CMD/ADD), 클록 신호(CLK), 데이터 신호(DQ)를, 채널(Channel, 105)을 통해 제공할 수 있다.
상기 메모리 컨트롤러(102)와 상기 메모리(100)은 서로 채널(105)을 통해 데이터를 송수신할 수 있다.
상기 메모리(100)에 포함된 메모리 셀 어레이(Memory Cell Array, 150)는 DRAM(Dynamic Random Access Memory)과 SRAM(Static Random Access Memory) 등의 휘발성(Volatile) 메모리를 포함할 수 있다.
상기 메모리 셀 어레이(150)는 데이터를 저장하는 복수의 메모리 셀들(미도스)를 포함할 수 있다.
상기 메모리 셀 어레이(150)는, 본 명세서에서는 단일의 메모리 셀 어레이로서 설명되지만, 이는 설명의 편의를 위한 것이며, 복수의 메모리 셀 어레이들을 포함하는 메모리(100)에서도 본 명세서의 설명이 동일하게 적용될 수 있다.
상기 메모리 셀 어레이(150)에 제1 데이터(DATA_A<0:127)가 저장된다. 상기 제1 데이터(DATA_A<0:127>)는, 상기 메모리 셀의 열화 등의 문제에 따라 에러가 발생할 수 있다.
상기 제1 데이터(DATA_A<0:127>)의 에러를 정정하기 위해, 제1 패리티(PARITY_A<0:8>)가 메모리 셀 어레이에 저장된다.
상기 제1 패리티(PARITY_A<0:8>)는 상기 메모리 셀에 저장된 제1 데이터(DATA_A<0:127>)의 싱글 에러 정정 및 더블 에러 감지(Single Error Correction Double Error Detection, SECDED)를 위한 패리티이다.
이러한 에러 정정 기법은 해밍코드(Hamming Code)에 기반하여 동작한다.
메모리(100)에 포함된 코어 ECC부(110)는 상기 제1 패리티(PARITY_A<0:8>)를 기반으로, 상기 제1 데이터(DATA_A<0:127>)의 에러를 정정하여 제2 데이터(DATA_B<0:127>)를 생성한다.
메모리(100)에 포함된 DBI부(320)는 상기 제2 데이터(DATA_B<0:127>)를 구성하는 비트들의 로직의 개수에 따라 상기 제2 데이터(DATA_B<0:127>)를 구성하는 비트들에 대한 반전 여부를 결정하여 제3 데이터(DATA_C<0:127>)를 생성할 수 있고, 상기 제3 데이터(DATA_C<0:127>)의 반전 정보를 나타내는 DBI 플래그(DBI_C<0:15>)를 생성할 수 있다.
DQ0 DQ1 DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 DBI_C
BL0 0 16 32 48 64 80 96 112 0
BL1 1 17 33 49 65 81 97 113 1
BL2 2 18 34 50 66 82 98 114 2
BL3 3 19 35 51 67 83 99 115 3
BL4 4 20 36 52 68 84 100 116 4
BL5 5 21 37 53 69 85 101 117 5
BL6 6 22 38 54 70 86 102 118 6
BL7 7 23 39 55 71 87 103 119 7
BL8 8 24 40 56 72 88 104 120 8
BL9 9 25 41 57 73 89 105 121 9
BL10 10 26 42 58 74 90 106 122 10
BL11 11 27 43 59 75 91 107 123 11
BL12 12 28 44 60 76 92 108 124 12
BL13 13 29 45 61 77 93 109 125 13
BL14 14 30 46 62 78 94 110 126 14
BL15 15 31 47 63 79 95 111 127 15
표 1은 제2 데이터(DATA_B<0:127>)를 구성하는 128개의 비트들을, 16개의 집합(BL0 내지 BL15)으로 구성한 것을 나타낸 것이다. 제2 데이터(DATA_B<0:127>) 중 0번째 비트부터 15번째 비트, 즉 총 16개의 비트들은 DQ0에 대응한다. 같은 방식으로, 제2 데이터(DATA_B<0:127>) 중 112번째 비트부터 127번째 비트, 즉 총 16개 비트들은 DQ7에 대응한다. 단, 상기 표 1과 같이 데이터의 집합을 나누는 방법은, 설명의 편의를 위해 임의로 설정한 것임에 유의하여야 한다.
DBI 플래그(DBI_C<0:15>)의 총 16개의 비트들은 제2 데이터(DATA_B<0:127>)의 16개의 집합(BL0 내지 BL15)에 각각 대응한다. DBI 플래그(DBI_C<0:15>)의 첫 번째 비트인 DBI_C0은 제2 데이터(DATA_B<0:127>)의 BL0 집합에 대응하는 비트들, 즉 DATA_B0, DATA_B16, DATA_B32, DATA_B48, DATA_B64, DATA_B80, DATA_B96, DATA_B112에 대한 반전 정보를 나타낸다. 같은 방식으로, DBI 플래그(DBI_C<0:15>)의 열여섯 번째 비트인 DBI_C15는 제2 데이터(DATA_B<0:127>)의 BL15 집합에 대응하는 비트들, 즉 DATA_B15, DATA_B31, DATA_B47, DATA_B63, DATA_B79, DATA_B95, DATA_B111, DATA_B127에 대한 반전 정보를 나타낸다.
DBI 플래그(DBI_C<0:15>)의 각 비트의 로직은, DBI 플래그(DBI_C<0:15>)의 각 비트에 상응하는 제2 데이터(DATA_B<0:127>)의 각 집합에 대응하는 비트들의 로직에 따라 결정된다.
예를 들어, 제2 데이터(DATA_B<0:127>)의 BL0 집합에 대응하는 비트들, 즉 DATA_B0, DATA_B16, DATA_B32, DATA_B48, DATA_B64, DATA_B80, DATA_B96, DATA_B112 중 하이 로직인 비트가 5개 이상인 경우, 제2 데이터(DATA_B<0:127>)의 BL0 집합에 대응하는 비트들에 반전 동작을 수행했다는 뜻으로써 DBI_C0은 하이 로직을 갖는다.
반면, 제2 데이터(DATA_B<0:127>)의 BL0 집합에 대응하는 비트들, 즉 DATA_B0, DATA_B16, DATA_B32, DATA_B48, DATA_B64, DATA_B80, DATA_B96, DATA_B112 중 하이 로직인 비트가 5개 미만인 경우, 제2 데이터(DATA_B<0:127>)의 BL0 집합에 대응하는 비트들에 반전 동작을 수행하지 않았다는 뜻으로써 DBI_C0은 로우 로직을 갖는다.
상기 DBI부(320)는, 제2 데이터(DATA_B<0:127>)의 비트들의 로직을 확인한 후, BL0 내지 BL15 집합 각각의 비트들의 로직에 따라, 상응하는 제2 데이터(DATA_B<0:127>)의 비트들을 반전 여부를 결정하고, 반전 정보를 나타내는 DBI 플래그(DBI_C<0:15>)를 생성한다.
예를 들어, 제2 데이터(DATA_B<0:127>)의 BL0 집합에 대응하는 비트들, 즉 DATA_B0, DATA_B16, DATA_B32, DATA_B48, DATA_B64, DATA_B80, DATA_B96, DATA_B112 중 하이 로직인 비트가 5개 이상인 경우, 상기 DBI부(320)는, DATA_B0, DATA_B16, DATA_B32, DATA_B48, DATA_B64, DATA_B80, DATA_B96, DATA_B112의 각각의 로직을 모두 반전시키고, DBI_C0에 하이 로직을 입력한다.
같은 방식으로, 제2 데이터(DATA_B<0:127>)의 BL15 집합에 대응하는 비트들, 즉 DATA_B15, DATA_B31, DATA_B47, DATA_B63, DATA_B79, DATA_B95, DATA_B111, DATA_B127 중 하이 로직인 비트가 5개 미만인 경우, 상기 DBI부(320)는, DATA_B15, DATA_B31, DATA_B47, DATA_B63, DATA_B79, DATA_B95, DATA_B111, DATA_B127의 각각의 로직을 반전하지 않고, DBI_C15에 로우 로직을 입력한다.
이러한 원리에 따라, DBI부(320)는 제2 데이터(DATA_B<0:127>)의 비트들에 반전 여부를 결정하여 제3 데이터(DATA_C<0:127>) 및 DBI 플래그(DBI_C<0:15>)를 생성한다.
상기 링크 ECC부(130)는, 상기 제3 데이터(DATA_C<0:127>) 및 DBI 플래그(DBI_C<0:15>)를 수신하여, 상기 제3 데이터(DATA_C<0:127>) 및 DBI 플래그(DBI_C<0:15>)의 SECDED에 대한 패리티인 제3 패리티(PARITY_C<0:8>)를 생성한다. 상기 제3 패리티(PARITY_C<0:8>)는 해밍코드(Hamming Code)에 정의된 규칙에 의해 생성된다.
P_C0 DQ0 DQ1 DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 DBI_C
BL0 0 32 48 0
BL1 1 17 65 81 97 113
BL2 34 50 2
BL3 3 19 67 83 99 115
BL4 4 36 52 4
BL5 21 69 85 101 117
BL6 6 38 54 6
BL7 23 71 87 103 119
BL8 8 40 56 120 8
BL9 25 57 73 89 105
BL10 10 26 42 122 10
BL11 11 59 75 91 107
BL12 28 44 124 12
BL13 13 61 77 93 109
BL14 30 46 126 14
BL15 15 63 79 95 111
표 2는 해밍코드에 의해 정의된 규칙에 따라, PARITY_C0을 생성하기 위해 필요한 제3 데이터(DATA_C<0:127>)의 비트들 및 DBI 플래그(DBI_C<0:15>)의 비트들만을 나타낸 것이다. PARITY_C0에는, 상기 표 2에 표시된 비트들에 대해서 XOR 동작을 수행한 로직이 입력된다. 같은 원리로, 상기 링크 ECC부(130)는 PARITY_C1 내지 PARITY_C8 또한 결정할 수 있고, 제3 패리티(PARITY_C<0:8>)을 생성한다.
도 3b는 메모리(100)의 라이트 동작에 있어서, 코어 ECC부(110), DBI부(320) 및 링크 ECC부(130)를 모두 포함하는 메모리(100)을 도시한 것이다.
메모리 컨트롤러(102)는 메모리(100)에 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)를 전송한다. 상기 메모리 컨트롤러(102)가 메모리(100)에 상기 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)를 전송하는 과정에서, 상기 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)에는 에러가 발생했을 수 있다.
상기 링크 ECC부(130)는 상기 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)을 수신하여, 상기 제1 데이터(DATA_D<0:127>) 및 제1 DBI 플래그(DBI_D<0:15>)의 SECDED에 대한 패리티인 제1 패리티(PARITY_D<0:8>)을 통해, 상기 제1 데이터(DATA_D<0:127>) 및 제1 DBI 플래그(DBI_D<0:15>)의 에러를 정정하여, 제2 데이터(DATA_E<0:127>) 및 제2 DBI 플래그(DBI_E<0:15>)를 생성한다.
상기 DBI부(320)는, 제2 데이터(DATA_E<0:127>) 및 제2 DBI 플래그(DBI_E<0:15>)를 수신하여, 제2 데이터(DATA_E<0:127>)의 반전 정보를 가지고 있는 제2 DBI 플래그(DBI_E<0:15>)를 통해, 상기 제2 데이터(DATA_E<0:127>)의 비트들의 반전 여부를 결정하여, 제3 데이터(DATA_F<0:127>)을 생성한다.
상기 코어 ECC부(110)는, 상기 제3 데이터(DATA_F<0:127>)를 수신하여, 상기 제3 데이터(DATA_F<0:127>)의 SECDED에 대한 패리티인 제3 패리티(PARITY_F<0:8>)을 생성한다. 이는, 추후 리드 동작 시 메모리 셀에 저장된 제3 데이터(DATA_F<0:127>)에 발생할 수 있을 에러를 정정하기 위함이다.
따라서, 도 3a 및 도 3b를 참조하여 설명된 본 발명의 실시 예에 따르면, 상기 코어 ECC부(110) 및 상기 링크 ECC부(130)를 통해 메모리 셀 에러이(150)에 저장된 데이터를 정정할 수 있고, 채널(105)에서 발생될 수 있는 에러에 대한 에러 정정 패리티도 생성할 수 있다. 또한, 상기 DBI부(320)를 통해 채널(105)을 통과하는 데이터 비트들의 하이 로직의 개수를 감소시켜, 소비 전력을 감소시킬 수 있다.
다만, 메모리(100)의 리드 동작에 있어서, DBI부(320)가 구비되어 있을 때, 제3 데이터(DATA_C<0:127>)의 SECDED에 대한 패리티인 제3 패리티(PARITY_C<0:8>)를 생성하기 위해서는, 먼저 DBI부(320)를 통해 반전 동작을 수행하여 제3 데이터(DATA_C<0:127>)를 생성하고, 링크 ECC부(130)를 나중에 수행하여 제3 패리티(PARITY_C<0:8>)를 생성하여야 한다.
또한, 메모리(100)의 라이트 동작에 있어서, DBI부(320)가 구비되어 있을 때, 제3 데이터(DATA_F<0:127>)의 SECDED에 대한 패리티인 제3 패리티(PARITY_F<0:8>)를 생성하기 위해서는, 먼저 DBI부(320)를 통해 반전 동작을 수행하여 제3 데이터(DATA_F<0:127>)을 생성하고, 코어 ECC부(110)를 나중에 수행하여 제3 패리티(PARITY_F<0:8>)를 생성하여야 한다.
도 4a는, 본 발명의 또 다른 실시 예에 따른 메모리 시스템의 리드 동작에 있어서, 통합 ECC부(410), DBI부(420) 및 패리티 재생성기(450, Parity Regenerator)를 포함하는 메모리 시스템을 도시한 것이다.
상기 메모리 셀 어레이(150)에 제1 데이터(DATA_A<0:127>)가 저장될 수 있다. 상기 제1 데이터(DATA_A<0:127>)는, 상기 메모리 셀의 열화 등의 문제에 따라 에러가 발생할 수 있다. 상기 제1 데이터(DATA_A<0:127>)의 에러를 정정하기 위해, 제1 패리티(PARITY_A<0:8>)가 메모리 셀 어레이(150)에 저장될 수 있다. 상기 제1 패리티(PARITY_A<0:8>)는 상기 제1 데이터(DATA_A<0:127>)의 싱글 에러 정정 및 더블 에러 감지(Single Error Correction Double Error Detection, SECDED)를 위한 패리티일 수 있다. 이러한 에러 정정 기법은 해밍코드(Hamming Code)에 기반하여 동작할 수 있다.
메모리(100)에 포함된 통합 ECC부(410)는, 상기 제1 패리티(PARITY_A<0:8>)를 통해, 상기 제1 데이터(DATA_A<0:127>)의 에러를 정정하여, 에러가 정정된 제2 데이터(DATA_B<0:127>)를 생성할 수 있다.
상기 통합 ECC부(410)는 상기 제2 데이터(DATA_B<0:127>)의 SECDED에 대한 패리티인 제2 패리티(PARITY_B<0:8>)를 생성할 수 있다.
상기 통합 ECC부(410)가 상기 제2 패리티(PARITY_B<0:8>)를 생성하는데 있어서는, 상기 표 2를 참조하여 설명된 원리가 동일하게 적용될 수 있다.
특히, 상기 통합 ECC부(410)는 상기 제2 데이터(DATA_B<0:127>)를 구성하는 128개의 비트에 16개의 DBI 플래그 비트들까지 포함한 총 144개의 비트를 대상으로 제2 패리티(PARITY_B<0:8>)를 생성할 수 있다.
본 발명의 실시 예로써, 상기 통합 ECC부(410)는, 제2 패리티(PARITY_B<0:8>)를 생성하는데 필요한 DBI 플래그 비트들이 임의로 로우 로직을 갖는다고 가정한 상태에서, 상기 제2 패리티(PARITY_B<0:8>)를 생성할 수 있다.
본 발명의 또 다른 실시 예로써, 상기 통합 ECC부(410)는, 모두 로우 로직을 갖는 가상의 DBI 플래그 비트들을 입력 받아 상기 제2 패리티(PARITY_B<0:8>)를 생성할 수도 있을 것이다.
메모리(100)에 포함된 DBI부(420)는, 상기 제2 데이터(DATA_B<0:127>)를 구성하는 비트들의 로직의 개수에 따라 상기 제2 데이터(DATA_B<0:127>)를 구성하는 비트들에 대한 반전 여부를 결정하여 제3 데이터(DATA_C<0:127>)를 생성할 수 있고, 상기 제3 데이터(DATA_C<0:127>)의 반전 정보를 나타내는 DBI 플래그(DBI_C<0:15>)를 생성할 수 있다.
메모리(100)에 포함된 패리티 재생성기(450)는, 상기 제2 패리티(PARITY_B<0:8>) 및 상기 DBI 플래그(DBI_C<0:15>)를 기반으로, 상기 제3 데이터(DATA_C<0:127>)의 SECDED에 대한 패리티인 제3 패리티(PARITY_C<0:8>)를 생성할 수 있다.
구체적으로, 상기 패리티 재생성기(450)는, 상기 DBI 플래그(DBI_C<0:15>)를 이용하여, 상기 제2 패리티(PARITY_B<0:8>)를 상기 제3 패리티(PARITY_C<0:8>)로 변환할 수 있다.
P_C0 DQ0 DQ1 DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 DBI_C #
BL0 0 32 48 0 4
BL1 1 17 65 81 97 113 6
BL2 34 50 2 3
BL3 3 19 67 83 99 115 6
BL4 4 36 52 4 4
BL5 21 69 85 101 117 5
BL6 6 38 54 6 4
BL7 23 71 87 103 119 5
BL8 8 40 56 120 8 5
BL9 25 57 73 89 105 5
BL10 10 26 42 122 10 5
BL11 11 59 75 91 107 5
BL12 28 44 124 12 4
BL13 13 61 77 93 109 5
BL14 30 46 126 14 4
BL15 15 63 79 95 111 5
표 3은, 상기 표 2를 참조하여 설명된 바와 같이, 해밍코드에 의해 정의된 규칙에 따라, PARITY_C0을 생성하기 위해 필요한 제2 데이터(DATA_B<0:127>)의 비트들 및 DBI 플래그(DBI_C<0:15>)의 비트들만을 나타낸 것이다.
단, 'PARITY_C0을 생성하기 위해 필요한 제2 데이터(DATA_B<0:127>)'라는 말의 뜻은, 여기서 반드시 제2 데이터(DATA_B<0:127>)가 사용된다는 뜻이 아니며, 단순히 데이터 구조를 설명하기 위한 수단으로써 이해하여야 할 것이다.
상기 패리티 재생성기(450)가, DBI가 적용되지 않은 데이터인 제2 데이터(DATA_B<0:127>)을 통해 생성된 제2 패리티(PARITY_B<0:8>)로부터, DBI가 적용된 데이터인 제3 데이터(DATA_C<0:127>)에 대한 제3 패리티(PARITY_C<0:8>)를 생성하기 위해서는, DBI가 적용됨에 따라, PARITY_C0을 생성하기 위해 필요한 제2 데이터(DATA_B<0:127>)의 비트들 및 DBI 플래그(DBI_C<0:15>)의 비트들의 1(하이 로직)의 홀수/짝수 정보가 필요하다.
상기 홀수/짝수 정보는, 상기 제3 패리티(PARITY_C0)를 생성하는데 있어서 사용될 DBI 플래그 비트(DBI_C#)와, 복수의 DBI 플래그 비트들에 각각 상응하는 데이터 비트들 중 상기 제3 패리티(PARITY_C0)를 생성하는데 있어서 사용될 비트들의, 개수에 대한 정보일 수 있다.
표 2를 참조하여 설명한 바와 같이, DBI가 적용되기 전은 DBI_C0의 로직을 로우 로직으로 가정할 수 있다.
구체적으로, BL0을 참조하여 설명하면, BL0에 대응하는 비트들은 DATA_B0, DATA_B32, DATA_B48, DBI_C0에 해당한다. 즉 BL0에 대응하는 비트들의 개수가 짝수이다. DBI 신호가 적용되기 전은 DBI_C0의 로직을 로우 로직으로 가정하기 때문에, DATA_B0, DATA_B32, DATA_B48이 모두 1인 경우, BL0에 대응하는 비트들의 1의 개수는 홀수이다.
이때 DBI가 적용되어 DBI_C0가 1일 때, DATA_B0, DATA_B32, DATA_B48는 모두 0으로 반전된다. 즉, DATA_B0, DATA_B32, DATA_B48는 0이고, DBI_C0는 1에 해당하여 BL0에 대응하는 비트들의 1의 개수는 여전히 홀수이다.
상기 BL0에 대한 또 다른 예로써, DBI가 적용되기 전에 DATA_B0, DATA_B32는 1이고, DATA_B48이 0인 경우, BL0에 대응하는 비트들의 1의 개수는 짝수이다.
이때 DBI가 적용되어 DBI_C0가 1인 경우 DATA_B0, DATA_B32, DATA_B48는 모두 반전된다. 즉, DATA_B0, DATA_B32는 0이고, DATA_B48는 1이고, DBI_C0는 1에 해당하여 BL0에 대응하는 비트들의 1의 개수는 여전히 짝수이다.
또한, BL2를 참조하여 설명하면, BL2에 대응하는 비트들은 DATA_B34, DATA_B50, DBI_C2에 해당한다. 즉 BL0에 대응하는 비트들의 개수가 홀수이다.
DBI가 적용되기 전에 DATA_B34, DATA_B50가 모두 1인 경우, BL2에 대응하는 비트들의 1의 개수는 짝수이다.
이때 DBI가 적용되어 DBI_C2가 1일 때, DATA_B34, DATA_B50는 모두 0으로 반전된다. 즉, DATA_B34, DATA_B50는 0이고, DBI_C0는 1에 해당하여 BL0에 대응하는 비트들의 1의 개수는 홀수로 바뀐다.
상기 BL2에 대한 또 다른 예로써, DBI가 적용되기 전에 DATA_B34는 1이고, DATA_B50이 0인 경우, BL2에 대응하는 비트들의 1의 개수는 홀수이다.
이때 DBI가 적용되어 DBI_C2가 1일 때, DATA_B34, DATA_B50는 모두 반전된다. 즉, DATA_B34는 0이고, DATA_B50는 1이고, DBI_C2는 1에 해당하여 BL0에 대응하는 비트들의 1의 개수는 홀수로 바뀐다.
따라서, 표 3을 참조하면, BL0 내지 BL15 각각에 상응하는 비트들의 개수가 홀수 개일 때, BL0 내지 BL15 각각에 상응하는 DBI 플래그(DBI_C<0:15>)의 비트가 1인 경우, DBI 플래그(DBI_C<0:15>)에 대응하는 BL의 비트들의 1의 개수의 홀수/짝수 정보가 바뀐다. 즉, BL2에 상응하는 비트들의 개수는 3개로 홀수 개이므로, DBI_C2가 1이라면 BL2에 상응하는 비트들의 1의 개수의 홀수/짝수 정보가 바뀔 수 있다. 반면, BL0에 상응하는 비트들의 개수는 4개로 짝수 개이므로, DBI_C0이 1이라고 하더라도, BL0에 상응하는 비트들의 1의 개수의 홀수/짝수 정보는 바뀌지 않는다.
따라서, PARITY_C0에는, PARITY_B0, DBI_C2, DBI_C5, DBI_C7, DBI_C8, DBI_C9, DBI_C10, DBI_C11, DBI_C13 및 DBI_C15에 대해 XOR 동작을 수행한 결과 값이 저장될 수 있다. 즉, PARITY_C0을 생성하기 위해서, 상술한 메모리 시스템에서는 DATA_C0, DATA_C1, DATA_C3, ? ,DATA_C126, DBI_C0, ?, DATA_C14 총 76개의 데이터에 대해 XOR 동작을 수행하여야 했지만, 본 발명의 일 실시 예에 다른 패리티 재생성기(450)는, PARITY_B0, DBI_C2, DBI_C5, DBI_C7, DBI_C8, DBI_C9, DBI_C10, DBI_C11, DBI_C13 및 DBI_C15 총 10개의 데이터에 XOR 동작을 수행할 수 있다. 같은 원리로, PARITY_C1 내지 PARITY_C7 또한 생성될 수 있다.
즉, PARITY_C#를 생성하기 위해 사용되는 DATA_B#와 DBI_C#에 있어서, 각 BL#에 대응하는 DATA_B#와 DBI_C#을 합한 개수가 홀수개인 조건을 만족하는 BL#에 대응하는 DBI_C#들은, PARITY_C#들을 생성할 수 있는 압축된 정보라고 할 수 있다.
이에 따라, 본 발명의 일 실시 예에 따르면, 메모리(100)의 리드 동작에 있어서, 제3 패리티(PARITY_C<0:8>)을 보다 적은 데이터를 통해 생성할 수 있고, 제3 패리티(PARITY_C<0:8>)을 병렬적인 처리 동작을 통해 생성할 수 있어서, 전반적인 동작의 처리 속도가 향상될 수 있다.
도 4b는, 본 발명의 일 실시 예에 따른 메모리 시스템의 라이트 동작에 있어서, DBI부(420), 통합 ECC부(410) 및 패리티 재생성기(450, Parity Regenerator)를 포함하는 메모리 시스템을 도시한 것이다.
메모리 컨트롤러(102)는 메모리 시스템의 메모리(100)에 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)를 전송할 수 있다. 상기 메모리 컨트롤러(102)가 메모리(100)에 상기 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)를 채널(105)을 통해 전송하는 과정에서, 상기 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>) 및 제1 패리티(PARITY_D<0:8>)에는 에러가 발생했을 수 있다.
상기 통합 ECC부(410)는, 상기 제1 데이터(DATA_D<0:127>) 및 제1 DBI 플래그(DBI_D<0:15>)의 SECDED에 대한 패리티인 제1 패리티(PARITY_D<0:8>)을 통해, 상기 제1 데이터(DATA_D<0:127>), 제1 DBI 플래그(DBI_D<0:15>)의 에러를 정정하여, 제2 데이터(DATA_E<0:127>) 및 제2 DBI 플래그(DBI_E<0:15>)을 생성할 수 있다.
또한, 상기 통합 ECC부(410)는, 상기 제2 데이터(DATA_E<0:127>) 및 제2 DBI 플래그(DBI_E<0:15>)의 SECDED에 대한 패리티인 제2 패리티(PARITY_E<0:8>)를 생성할 수 있다.
상기 DBI부(320)는, 제2 데이터(DATA_E<0:127>) 및 제2 DBI 플래그(DBI_E<0:15>)를 수신하여, 제2 데이터(DATA_E<0:127>)의 반전 정보를 가지고 있는 제2 DBI 플래그(DBI_E<0:15>)를 통해, 상기 제2 데이터(DATA_E<0:127>)의 비트들의 반전 여부를 결정하여, 제3 데이터(DATA_F<0:127>)를 생성할 수 있다.
상기 패리티 재생성기(450)는, 상기 제2 패리티(PARITY_E<0:8>) 및 제2 DBI 플래그(DBI_E<0:15>)를 수신하여, 상기 제3 데이터(DATA_F<0:127>)에 대한 패리티인 제3 패리티(PARITY_F<0:8>)를 생성할 수 있다. 상기 패리티 재생성기(450)가 상기 제3 패리티(PARITY_F<0:8>)를 생성하는 방법은, 상기 도 4a 및 표 3을 참조하여 설명된 바와 동일하다.
이에 따라, 본 발명의 일 실시 예에 따르면, 메모리(100)의 라이트 동작에 있어서, 제3 패리티(PARITY_F<0:8>)를 보다 적은 데이터를 통해 생성할 수 있고, 제3 패리티(PARITY_F<0:8>)를 병렬적인 처리 동작을 통해 생성할 수 있어서, 전반적인 동작의 처리 속도가 향상될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
10 : 메모리 시스템
102 : 메모리 컨트롤러
100 : 메모리
110 : 코어 EEC부
130 : 링크 ECC부

Claims (40)

  1. 제1 데이터 및 상기 제1 데이터에 대한 에러 정정 패리티인 제1 패리티가 저장된 메모리 셀 어레이; 및
    상기 제1 패리티를 기초로 상기 제1 데이터를 정정하여 제2 데이터를 생성하고, 상기 제2 데이터를 기초로 상기 제2 데이터의 채널 전송을 위한 에러 정정 패리티인 제2 패리티를 생성하는 통합 ECC부를 포함하는
    메모리 시스템.
  2. 제1 항에 있어서,
    상기 통합 ECC부는
    상기 제1 데이터를 기반으로 상기 제1 데이터의 SECDED(싱글 에러 정정 및 더블 에러 감지)에 대한 패리티인 제2 사전 패리티를 생성하는 SECDED 패리티 생성기를 포함하는
    메모리 시스템.
  3. 제2 항에 있어서,
    상기 제2 사전 패리티는
    상기 제1 데이터의 SEC(싱글 에러 정정)에 대한 패리티인 제1 서브 패리티; 및
    상기 제1 데이터의 DED(더블 에러 감지)에 대한 패리티인 제2 서브 패리티로 구성되는
    메모리 시스템.
  4. 제3 항에 있어서,
    상기 통합 ECC부는
    상기 SECDED 패리티 생성기가 상기 제2 서브 패리티를 생성하기 위해 사용한 제1 데이터의 비트들에, 에러가 존재하는지 여부를 확인하여, 상기 제2 서브 패리티에 에러가 존재하는지 여부를 감지하는 DED 패리티 에러 감지기; 및
    상기 제2 서브 패리티의 에러를 정정하는 DED 패리티 정정기를 더 포함하는
    메모리 시스템.
  5. 제4 항에 있어서,
    상기 통합 ECC부는
    상기 제1 데이터, 상기 제1 패리티 및 상기 제1 서브 패리티를 기초로,
    해밍 코드(Hamming Code)에 정의된 규칙에 의해 신드롬을 생성하는 신드롬 생성기를 더 포함하는
    메모리 시스템.
  6. 제5 항에 있어서,
    상기 통합 ECC부는
    상기 신드롬을 기초로, 상기 제1 데이터의 에러 발생 여부 정보를 나타내는 제1 데이터 에러 플래그 및 상기 제1 패리티의 에러 발생 여부 정보를 나타내는 제1 패리티 에러 플래그를 생성하는 신드롬 디코더를 더 포함하는
    메모리 시스템.
  7. 제6 항에 있어서,
    상기 DED 패리티 에러 감지기는,
    제2 서브 패리티 에러 감지 플래그를 기초로, 제2 서브 패리티의 에러 발생 여부 정보를 나타내는 제2 서브 패리티 에러 플래그를 생성하되,
    상기 제2 서브 패리티 에러 감지 플래그는,
    상기 SECDED 패리티 생성기가 상기 제2 서브 패리티를 생성하기 위해 사용한 제1 데이터의 비트들에 상응하는 제1 데이터 에러 플래그의 비트들인
    메모리 시스템.
  8. 제7 항에 있어서,
    상기 DED 패리티 정정기는
    상기 제2 서브 패리티 에러 플래그를 기초로 상기 제2 서브 패리티를 정정하는
    메모리 시스템.
  9. 제8 항에 있어서,
    상기 DED 패리티 정정기는
    상기 제2 서브 패리티 에러 플래그가 로우 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 그대로 출력하고,
    상기 제2 서브 패리티 에러 플래그가 하이 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 반전하여 출력하는
    메모리 시스템.
  10. 제9 항에 있어서,
    상기 통합 ECC부는
    상기 제1 데이터 에러 플래그를 기반으로, 상기 제1 데이터의 에러를 정정하는 데이터 정정기
    를 더 포함하는 메모리 시스템.
  11. 제10 항에 있어서,
    상기 데이터 정정기는
    상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 로우 로직을 갖는 경우,
    상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 그대로 출력하고,
    상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 하이 로직을 갖는 경우,
    상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 반전하여 출력하는
    메모리 시스템.
  12. 제9 항에 있어서,
    상기 통합 ECC부는
    상기 제1 패리티 에러 플래그를 기반으로, 상기 제1 패리티의 에러를 정정하는 SEC 패리티 정정기
    를 더 포함하는 메모리 시스템.
  13. 제12 항에 있어서,
    상기 SEC 패리티 정정기는
    상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 로우 로직을 갖는 경우,
    상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 그대로 출력하고,
    상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 하이 로직을 갖는 경우,
    상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 반전하여 출력하는
    메모리 시스템.
  14. 제13 항에 있어서,
    상기 제2 패리티는
    상기 SEC 패리티 정정기가 상기 제1 패리티의 에러를 정정한 비트들; 및
    상기 DED 패리티 정정기가 상기 제2 서브 패리티의 에러를 정정한 비트로 구성된 패리티인,
    메모리 시스템.
  15. 제1 항에 있어서,
    상기 제2 데이터에 대해 DBI 스킴을 적용한 제3 데이터 및 상기 제3 데이터에 대한 반전 정보인 DBI 플래그를 생성하는 DBI부; 및
    상기 제2 패리티 및 상기 DBI 플래그를 기반으로, 복수의 DBI 플래그 비트들과 상기 복수의 DBI 플래그 비트들 각각에 상응하는 복수의 데이터 비트들의 홀수/짝수 정보에 따라, 상기 제3 데이터와 상기 DBI 플래그에 대한 에러 정정 패리티인 제3 패리티를 생성하는 패리티 재생성기를 더 포함하는
    메모리 시스템.
  16. 제15 항에 있어서,
    상기 홀수/짝수 정보는,
    상기 제2 패리티를 구성하는 제2 패리티 비트들의 로직 가변 여부를 결정할 수 있는 DBI 플래그 비트에 대한 정보인,
    메모리 시스템.
  17. 제16 항에 있어서,
    상기 홀수/짝수 정보는,
    상기 제3 패리티 생성에 관련된 DBI 플래그 비트들과,
    상기 제3 패리티 생성에 관련된 데이터 비트들의,
    각 그룹 별 개수에 대한 정보인,
    메모리 시스템.
  18. 제17 항에 있어서,
    상기 패리티 재생성기는,
    상기 홀수/짝수 정보가 홀수일 때,
    상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트를 상기 제3 패리티를 생성하기 위해 사용하는
    메모리 시스템.
  19. 제18 항에 있어서,
    상기 패리티 재생성기는,
    상기 제2 패리티; 및
    상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트들에 대해 배타적 논리합(XOR) 연산을 수행하여,
    제3 패리티를 생성하는
    메모리 시스템.
  20. 제15 항에 있어서,
    상기 통합 ECC부; 및
    상기 패리티 재생성기는,
    해밍 코드(Hamming Code) 로직에 따라 구동되는
    메모리 시스템.
  21. 메모리 셀 어레이에 저장된 제1 데이터에 대한 에러 정정 패리티인 제1 패리티를 기초로 상기 제1 데이터를 정정하여 제2 데이터를 생성하는 단계; 및
    상기 제2 데이터를 기초로 상기 제2 데이터의 채널 전송을 위한 에러 정정 패리티인 제2 패리티를 생성하는 단계를 포함하는
    메모리 시스템의 동작 방법.
  22. 제21 항에 있어서,
    상기 제1 데이터를 기반으로 상기 제1 데이터의 SECDED(싱글 에러 정정 및 더블 에러 감지)에 대한 패리티인 제2 사전 패리티를 생성하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  23. 제 22항에 있어서,
    상기 제2 사전 패리티는
    상기 제1 데이터의 SEC(싱글 에러 정정)에 대한 패리티인 제1 서브 패리티; 및
    상기 제1 데이터의 DED(더블 에러 감지)에 대한 패리티인 제2 서브 패리티로 구성되는
    메모리 시스템의 동작 방법.
  24. 제23 항에 있어서,
    상기 SECDED 패리티 생성기가 상기 제2 서브 패리티를 생성하기 위해 사용한 제1 데이터의 비트들에, 에러가 존재하는지 여부를 확인하여, 상기 제2 서브 패리티에 에러가 존재하는지 여부를 감지하는 단계; 및
    상기 제2 서브 패리티의 에러를 정정하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  25. 제24 항에 있어서,
    상기 제1 데이터, 상기 제1 패리티 및 상기 제1 서브 패리티를 기초로,
    해밍 코드(Hamming Code)에 정의된 규칙에 의해 신드롬을 생성하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  26. 제25 항에 있어서,
    상기 신드롬을 기초로, 상기 제1 데이터의 에러 발생 여부 정보를 나타내는 제1 데이터 에러 플래그 및 상기 제1 패리티의 에러 발생 여부 정보를 나타내는 제1 패리티 에러 플래그를 생성하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  27. 제26 항에 있어서,
    상기 제2 서브 패리티에 에러가 존재하는지 여부를 감지하는 단계는
    제2 서브 패리티 에러 감지 플래그를 기초로, 제2 서브 패리티의 에러 발생 여부 정보를 나타내는 제2 서브 패리티 에러 플래그를 생성하는 단계이되,
    상기 제2 서브 패리티 에러 감지 플래그는,
    상기 제2 서브 패리티를 생성하기 위해 사용된 제1 데이터의 비트들에 상응하는 제1 데이터 에러 플래그의 비트들인
    메모리 시스템의 동작 방법.
  28. 제27 항에 있어서,
    상기 제2 서브 패리티의 에러를 정정하는 단계는
    상기 제2 서브 패리티 에러 플래그를 기초로 상기 제2 서브 패리티를 정정하는 단계인
    메모리 시스템의 동작 방법.
  29. 제28 항에 있어서,
    상기 제2 서브 패리티의 에러를 정정하는 단계는
    상기 제2 서브 패리티 에러 플래그가 로우 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 그대로 출력하고,
    상기 제2 서브 패리티 에러 플래그가 하이 로직을 갖는 경우, 상기 제2 서브 패리티 비트를 반전하여 출력하는 단계인
    메모리 시스템의 동작 방법.
  30. 제29 항에 있어서,
    상기 제1 데이터 에러 플래그를 기반으로, 상기 제1 데이터의 에러를 정정하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  31. 제30 항에 있어서,
    상기 제1 데이터의 에러를 정정하는 단계는
    상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 로우 로직을 갖는 경우,
    상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 그대로 출력하고,
    상기 제1 데이터 에러 플래그를 구성하는 비트들 중 제1 데이터 에러 플래그비트가 하이 로직을 갖는 경우,
    상기 제1 데이터를 구성하는 비트들 중, 상기 제1 데이터 에러 플래그 비트에 대응하는 제1 데이터 비트를 반전하여 출력하는 단계인
    메모리 시스템의 동작 방법.
  32. 제29 항에 있어서,
    상기 제1 패리티 에러 플래그를 기반으로, 상기 제1 패리티의 에러를 정정하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  33. 제32 항에 있어서,
    상기 제1 패리티의 에러를 정정하는 단계는
    상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 로우 로직을 갖는 경우,
    상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 그대로 출력하고,
    상기 제1 패리티 에러 플래그를 구성하는 비트들 중 제1 패리티 에러 플래그비트가 하이 로직을 갖는 경우,
    상기 제1 패리티를 구성하는 비트들 중, 상기 제1 패리티 에러 플래그 비트에 대응하는 제1 패리티 비트를 반전하여 출력하는 단계인
    메모리 시스템의 동작 방법.
  34. 제33 항에 있어서,
    상기 제2 패리티는
    상기 SEC 패리티 정정기가 상기 제1 패리티의 에러를 정정한 비트들; 및
    상기 DED 패리티 정정기가 상기 제2 서브 패리티의 에러를 정정한 비트로 구성된 패리티인,
    메모리 시스템의 동작 방법.
  35. 제21 항에 있어서,
    상기 제2 데이터에 대해 DBI 스킴을 적용한 제3 데이터 및 상기 제3 데이터에 대한 반전 정보인 DBI 플래그를 생성하는 단계; 및
    상기 제2 패리티 및 상기 DBI 플래그를 기반으로, 복수의 DBI 플래그 비트들과 상기 복수의 DBI 플래그 비트들 각각에 상응하는 복수의 데이터 비트들의 홀수/짝수 정보에 따라, 상기 제3 데이터와 상기 DBI 플래그에 대한 에러 정정 패리티인 제3 패리티를 생성하는 단계를 더 포함하는
    메모리 시스템의 동작 방법.
  36. 제35 항에 있어서,
    상기 홀수/짝수 정보는,
    상기 제2 패리티를 구성하는 제2 패리티 비트들의 로직 가변 여부를 결정할 수 있는 DBI 플래그 비트에 대한 정보인,
    메모리 시스템의 동작 방법.
  37. 제 35항에 있어서,
    상기 홀수/짝수 정보는,
    상기 제3 패리티 생성에 관련된 DBI 플래그 비트들과,
    상기 제3 패리티 생성에 관련된 데이터 비트들의,
    각 그룹 별 개수에 대한 정보인,
    메모리 시스템의 동작 방법.
  38. 제37 항에 있어서,
    상기 제3 패리티를 생성하는 단계는
    상기 홀수/짝수 정보가 홀수일 때,
    상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트를 상기 제3 패리티를 생성하기 위해 사용하는 단계인
    메모리 시스템의 동작 방법.
  39. 제38 항에 있어서,
    상기 제3 패리티를 생성하는 단계는
    상기 제2 패리티; 및
    상기 홀수/짝수 정보에 대응하는 DBI 플래그 비트들에 대해 배타적 논리합(XOR) 연산을 수행하여,
    제3 패리티를 생성하는 단계인
    메모리 시스템의 동작 방법.
  40. 제35 항에 있어서,
    상기 제2 데이터를 생성하는 단계;
    상기 제3 패리티를 생성하는 단계; 및
    상기 제2 패리티를 생성하는 단계는
    해밍 코드(Hamming Code) 로직에 따라 구동되는 단계인
    메모리 시스템의 동작 방법.
KR1020180041138A 2018-04-09 2018-04-09 메모리 시스템 및 메모리 시스템의 동작 방법 KR102583797B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180041138A KR102583797B1 (ko) 2018-04-09 2018-04-09 메모리 시스템 및 메모리 시스템의 동작 방법
US16/199,333 US10936409B2 (en) 2018-04-09 2018-11-26 Memory system and operating method of the memory system
CN201811634890.6A CN110362420B (zh) 2018-04-09 2018-12-29 存储系统和存储系统的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180041138A KR102583797B1 (ko) 2018-04-09 2018-04-09 메모리 시스템 및 메모리 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190118027A true KR20190118027A (ko) 2019-10-17
KR102583797B1 KR102583797B1 (ko) 2023-10-05

Family

ID=68095992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180041138A KR102583797B1 (ko) 2018-04-09 2018-04-09 메모리 시스템 및 메모리 시스템의 동작 방법

Country Status (3)

Country Link
US (1) US10936409B2 (ko)
KR (1) KR102583797B1 (ko)
CN (1) CN110362420B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762736B2 (en) 2021-05-18 2023-09-19 Samsung Electronics Co., Ltd. Semiconductor memory devices

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977119B2 (en) * 2018-09-28 2021-04-13 Apple Inc. Techniques for utilizing volatile memory buffers to reduce parity information stored on a storage device
KR20220139199A (ko) * 2021-04-07 2022-10-14 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US11636008B2 (en) * 2021-09-01 2023-04-25 Micron Technology, Inc. Tracking host-provided metadata in a memory sub-system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044483A (en) * 1998-01-29 2000-03-28 International Business Machines Corporation Error propagation operating mode for error correcting code retrofit apparatus
US20060156214A1 (en) * 2004-12-21 2006-07-13 Fujitsu Limited Semiconductor memory
US20170109231A1 (en) * 2015-10-20 2017-04-20 Samsung Electronics Co., Ltd. Semiconductor memory devices and memory systems including the same
US20170324425A1 (en) * 2016-05-06 2017-11-09 Infineon Technologies Ag Embedded parity matrix generator
US20180053545A1 (en) * 2016-08-17 2018-02-22 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems including the same and methods of operating the same

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234099B2 (en) 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
JP4469783B2 (ja) * 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
JP4643479B2 (ja) * 2006-03-22 2011-03-02 株式会社東芝 アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法およびメモリアクセス制御方法
KR100902051B1 (ko) * 2007-07-12 2009-06-15 주식회사 하이닉스반도체 오류 검사 코드 생성장치 및 방법
US8381083B2 (en) * 2009-10-22 2013-02-19 Arm Limited Error control coding for single error correction and double error detection
KR101873526B1 (ko) 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
WO2014205590A1 (en) * 2013-06-24 2014-12-31 Micron Technology, Inc. Circuits, apparatuses, and methods for correcting data errors
JP6212396B2 (ja) * 2014-01-08 2017-10-11 ルネサスエレクトロニクス株式会社 データ処理装置
US20150311920A1 (en) * 2014-04-25 2015-10-29 Agency For Science, Technology And Research Decoder for a memory device, memory device and method of decoding a memory device
US9800271B2 (en) * 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
KR101860809B1 (ko) 2015-09-30 2018-07-06 서울대학교산학협력단 메모리 시스템 및 메모리 에러 정정 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044483A (en) * 1998-01-29 2000-03-28 International Business Machines Corporation Error propagation operating mode for error correcting code retrofit apparatus
US20060156214A1 (en) * 2004-12-21 2006-07-13 Fujitsu Limited Semiconductor memory
US20170109231A1 (en) * 2015-10-20 2017-04-20 Samsung Electronics Co., Ltd. Semiconductor memory devices and memory systems including the same
US20170324425A1 (en) * 2016-05-06 2017-11-09 Infineon Technologies Ag Embedded parity matrix generator
US20180053545A1 (en) * 2016-08-17 2018-02-22 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems including the same and methods of operating the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762736B2 (en) 2021-05-18 2023-09-19 Samsung Electronics Co., Ltd. Semiconductor memory devices

Also Published As

Publication number Publication date
CN110362420A (zh) 2019-10-22
US20190310910A1 (en) 2019-10-10
KR102583797B1 (ko) 2023-10-05
CN110362420B (zh) 2023-06-16
US10936409B2 (en) 2021-03-02

Similar Documents

Publication Publication Date Title
US11734106B2 (en) Memory repair method and apparatus based on error code tracking
US6996766B2 (en) Error detection/correction code which detects and corrects a first failing component and optionally a second failing component
US6976194B2 (en) Memory/Transmission medium failure handling controller and method
KR102583797B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US6973613B2 (en) Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US11070232B2 (en) Multi channel memory with flexible code-length ECC
US11216331B2 (en) Memory system and operating method thereof
US20200394102A1 (en) Semiconductor memory devices having enhanced error correction circuits therein
US8966338B2 (en) Cyclic redundancy check code generating circuit, semiconductor memory device, and method of driving semiconductor memory device
US11762736B2 (en) Semiconductor memory devices
CN112749040A (zh) 存储器控制器以及包括该存储器控制器的存储器系统
US10606689B2 (en) Memory system and operating method thereof
US20210083690A1 (en) Memory system and operating method thereof
US9239755B2 (en) Semiconductor device and semiconductor system including the same
US20190012231A1 (en) Memory device, memory system including the same, and operating method of memory system
US20240022263A1 (en) Memory, memory module, memory system, and operation method of memory system

Legal Events

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