KR20230077606A - 에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법 - Google Patents

에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법 Download PDF

Info

Publication number
KR20230077606A
KR20230077606A KR1020220049463A KR20220049463A KR20230077606A KR 20230077606 A KR20230077606 A KR 20230077606A KR 1020220049463 A KR1020220049463 A KR 1020220049463A KR 20220049463 A KR20220049463 A KR 20220049463A KR 20230077606 A KR20230077606 A KR 20230077606A
Authority
KR
South Korea
Prior art keywords
data
error
parity
syndrome
decoding
Prior art date
Application number
KR1020220049463A
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 US17/988,140 priority Critical patent/US20230163786A1/en
Priority to TW111144487A priority patent/TW202329147A/zh
Priority to CN202211471281.XA priority patent/CN116168754A/zh
Publication of KR20230077606A publication Critical patent/KR20230077606A/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
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명에 따른 메모리 장치는 제1 데이터 및 제1 패리티 데이터를 저장하도록 구성된 메모리 셀 어레이, 제1 데이터 및 제1 패리티 데이터를 기반으로 에러 정정 코드(Error Correction Code) 디코딩을 수행하여, 에러 정정된 데이터 및 디코딩 상태 플래그를 출력하도록 구성된 ECC 회로, 및 에러 정정된 데이터 및 디코딩 플래그를 메모리 컨트롤러로 제공하도록 구성된 입출력 회로를 포함한다. ECC 회로는 제1 데이터 및 제1 패리티 데이터를 기반으로 신드롬을 생성하도록 구성된 신드롬 생성기, 신드롬을 디코딩하여 에러 벡터를 생성하도록 구성된 신드롬 디코딩 회로, 에러 벡터 및 제1 데이터를 기반으로, 에러 정정된 데이터를 생성하도록 구성된 정정 로직 회로, 및 에러 벡터 없이, 신드롬을 기반으로 디코딩 상태 플래그를 생성하도록 구성된 고속 디코딩 상태 플래그(DSF; decoding status flag) 생성기를 포함한다.

Description

에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법{ERROR CORRECTION CODE CIRCUIT, MEMORY DEVICE INCLUDING ERROR CORRECTION CODE, AND OPERATION METHOD OF ERROR CORRECTION CODE}
본 발명은 반도체 메모리에 관한 것으로 좀 더 상세하게는, 메모리 장치 및 메모리 장치의 에러 정정 코드 디코딩 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
DRAM은 모바일 장치 또는 컴퓨터 장치의 시스템 메모리로서 널리 사용된다. 최근에, DRAM 장치는 저장된 데이터의 신뢰성을 향상시키기 위한 ECC(Error Correction Code) 회로를 포함한다. ECC 회로는 DRAM 장치에 저장된 데이터의 에러를 정정할 수 있다. 데이터의 에러가 ECC 회로의 에러 정정 능력을 초과하는 경우, 에러가 정상적으로 정정될 수 없다. 이 경우, ECC 회로의 디코딩 결과를 외부 장치(예를 들어, 메모리 컨트롤러)로 알리기 위한 수단이 필요하다. 이를 위해, ECC 회로는 ECC 디코딩 결과에 대한 정보를 포함하는 디코딩 상태 플래그(DSF)를 메모리 컨트롤러로 제공할 수 있다.
본 발명의 목적은 향상된 신뢰성 및 향상된 성능을 갖는 메모리 장치, 메모리 장치의 에러 정정 코드 디코딩 방법을 제공하는데 있다.
본 발명의 일 실시 예에 따르면, 메모리 장치는 제1 데이터 및 제1 패리티 데이터를 저장하도록 구성된 메모리 셀 어레이; 상기 제1 데이터 및 제1 패리티 데이터를 기반으로 에러 정정 코드(Error Correction Code) 디코딩을 수행하여, 에러 정정된 데이터 및 디코딩 상태 플래그를 출력하도록 구성된 ECC 회로; 및 상기 에러 정정된 데이터 및 상기 디코딩 플래그를 메모리 컨트롤러로 제공하도록 구성된 입출력 회로를 포함하고, 상기 ECC 회로는: 상기 제1 데이터 및 제1 패리티 데이터를 기반으로 신드롬을 생성하도록 구성된 신드롬 생성기; 상기 신드롬을 디코딩하여 에러 벡터를 생성하도록 구성된 신드롬 디코딩 회로; 상기 에러 벡터 및 상기 제1 데이터를 기반으로, 상기 에러 정정된 데이터를 생성하도록 구성된 정정 로직 회로; 및 상기 에러 벡터 없이, 상기 신드롬을 기반으로 상기 디코딩 상태 플래그를 생성하도록 구성된 고속 디코딩 상태 플래그(DSF; decoding status flag) 생성기를 포함한다.
본 발명의 일 실시 예에 따르면, 메모리 장치에 저장된 제1 데이터 및 제1 패리티 데이터를 기반으로 상기 제1 데이터를 정정하도록 구성된 에러 정정 코드(ECC; error correction code) 회로는: 상기 메모리 장치로부터의 상기 제1 데이터 및 상기 제1 패리티 데이터를 기반으로 신드롬을 생성하도록 구성된 신드롬 생성기; 상기 신드롬을 패리티-체크 행렬의 각 열과 비교하여 에러 벡터를 생성하도록 구성된 신드롬 디코딩 회로; 상기 에러 벡터 및 상기 제1 데이터를 기반으로, 상기 에러 정정된 데이터를 생성하도록 구성된 정정 로직 회로; 및 상기 신드롬 및 축약된 패리티-체크 행렬을 기반으로 상기 에러 정정된 데이터에 대한 디코딩 상태를 가리키는 디코딩 상태 플래그를 생성하도록 구성된 고속 디코딩 상태 플래그(DSF; decoding status flag) 생성기를 포함하고, 상기 축약된 패리티-체크 행렬은 상기 패리티-체크 행렬의 일부 정보만 포함한다.
본 발명의 일 실시 예에 따르면, 메모리 장치에 저장된 제1 데이터 및 제1 패리티 데이터를 기반으로 상기 제1 데이터를 정정하도록 구성된 에러 정정 코드(ECC; error correction code) 회로의 동작 방법은: 상기 제1 데이터 및 상기 제1 패리티 데이터를 기반으로, 신드롬을 생성하는 단계; 상기 신드롬 및 패리티-체크 행렬을 기반으로 에러 벡터를 생성하는 단계; 상기 에러 벡터 및 상기 제1 데이터에 대한 로직 연산을 수행하여, 에러 정정된 데이터를 생성하는 단계; 상기 신드롬 및 축약된 패리티-체크 행렬을 기반으로 디코딩 상태 플래그를 생성하는 단계; 및 상기 에러 정정된 데이터 및 상기 디코딩 상태 플래그를 메모리 컨트롤러로 전송하는 단계를 포함하고, 상기 에러 벡터를 생성하는 단계 및 상기 디코딩 상태 플래그를 생성하는 단계는 병렬적으로 수행된다.
본 발명의 일 실시 예에 따르면, 에러 정정 코드(ECC; error correction code) 회로의 구성 방법은: 상기 ECC 회로의 신드롬 디코딩을 위해 사용되는 패리티-체크 행렬을 결정하는 단계; 상기 패리티-체크 행렬의 반복 특성을 기반으로, 축약된 패리티-체크 행렬을 생성하는 단계; 및 상기 축약된 패리티-체크 행렬의 각 열에 대한 정보를 기반으로 상기 신드롬의 일부 정보에 대한 로직 연산이 수행되도록 상기 ECC 회로의 고속 디코딩 상태 플래그 생성기를 구성하는 단계를 포함하고, 상기 축약된 패리티-체크 행렬은 상기 패리티-체크 행렬의 일부 정보만 포함한다.
본 발명에 따르면, 메모리 장치에 포함된 ECC 회로는 신드롬 정보만을 사용하여, 디코딩 상태 플래그를 생성할 수 있다. 이 경우, 신드롬 디코딩 동작과 함께, 디코딩 상태 플래그가 생성될 수 있기 때문에, ECC 디코딩을 위한 전체 지연 시간이 감소될 수 있다. 따라서, 향상된 성능 및 향상된 신뢰성을 갖는 메모리 장치 및 메모리 장치의 에러 정정 코드 디코딩 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 장치를 보여주는 블록도이다.
도 3은 도 2의 ECC 회로의 동작을 설명하기 위한 블록도이다.
도 4a는 도 3의 ECC 디코더의 동작을 보여주는 순서도이다.
도 4b는 도 4a의 순서도에 따른 동작을 수행하도록 구성된 ECC 디코더를 보여주는 블록도이다.
도 4c는 도 4b의 DSF 생성기를 보여주는 블록도이다.
도 5a는 도 3의 ECC 디코더의 동작을 보여주는 순서도이다.
도 5b는 도 5a의 순서도에 동작을 수행하도록 구성된 ECC 디코더를 보여주는 블록도이다.
도 5c는 도 5b의 고속 DSF 생성기를 보여주는 블록도이다.
도 6, 도 7a, 도 7b, 및 도 7c는 도 5a의 신드롬 디코딩 회로에 의해 사용되는 H-행렬의 일부 예를 보여주는 도면이다.
도 8은 도 6 내지 도 7c의 H-행렬을 기반으로 생성된 축약된 H-행렬의 일부 예를 보여주는 도면이다.
도 9는 5c의 고속 DSF 생성기의 신드롬 체크 회로의 일부 예를 보여주는 도면이다.
도 10은 5c의 고속 DSF 생성기의 패리티 에러 체크 회로의 일부 예를 보여주는 도면이다.
도 11은 5c의 고속 DSF 생성기의 고속 데이터 에러 체크 회로의 일부 예를 보여주는 도면이다.
도 12는 5c의 고속 DSF 생성기의 DST 검출 회로의 일부 예를 보여주는 도면이다.
도 13은 도 5c의 고속 DSF 생성기의 DSF 검출 회로의 일부 예를 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 축약된 H-행렬의 일부 예를 보여주는 도면이다.
도 15는 도 14의 UE 판정용 축약된 H-행렬을 사용하는 고속 데이터 에러 체크 회로의 일부 예를 보여주는 도면이다.
도 16은 도 15의 고속 데이터 에러 체크 회로로부터의 데이터 에러 정보를 사용하는 DSF 검출 회로의 일부 예를 보여주는 도면이다.
도 17은 도 15의 고속 데이터 에러 체크 회로로부터의 데이터 에러 정보를 사용하는 DSF 검출 회로의 일부 예를 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 축약된 H-행렬을 생성하는 방법을 설명하기 위한 순서도이다.
도 19는 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 20은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 21은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 22는 본 발명의 실시 예에 따른 메모리 패키지의 일부 예를 보여주는 도면이다.
도 23은 본 발명의 실시 예에 따른 메모리 패키지의 일부 예를 보여주는 도면이다.
도 24는 본 발명에 따른 메모리 장치가 적용된 메모리 모듈(6000)을 예시적으로 보여주는 블록도이다.
도 25은 본 발명의 일 실시예에 따른 스토리지(storage) 장치가 적용된 시스템(7000)을 도시한 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(11) 및 메모리 장치(100)를 포함할 수 있다. 일 실시 예에서, 메모리 시스템(10)은 개인용 컴퓨터, 랩탑, 서버, 워크스테이션, 스마트폰, 태블릿 PC, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하고, 처리된 정보를 저장하도록 구성된 정보 처리 장치들 중 하나일 수 있다.
메모리 컨트롤러(11)는 메모리 장치(100)에 데이터를 저장하거나 또는 메모리 장치(100)에 저장된 데이터를 독출할 수 있다. 예를 들어, 메모리 컨트롤러(11)는 메모리 장치(100)로 클럭 신호(CK) 및 커맨드/어드레스 신호(CA)를 전송하고, 메모리 장치(100)와 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 주고 받을 수 있다. 일 실시 예에서, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 데이터(DATA)가 메모리 컨트롤러(11)로부터 메모리 장치(100)로 전송되거나, 또는 메모리 장치(100)로부터 메모리 컨트롤러(11)로 전송될 수 있다. 일 실시 예에서, 메모리 컨트롤러(11) 및 메모리 장치(100)는 DDR 인터페이스 또는 LPDDR 인터페이스 등을 기반으로 서로 통신할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
메모리 장치(100)는 메모리 컨트롤러(11)의 제어에 따라 동작할 수 있다. 일 실시 예에서, 메모리 장치(100)는 DRAM(dynamic random access memory) 장치일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 메모리 장치(100)는 SRAM 등과 같은 휘발성 메모리 또는 플래시 메모리, PRAM 및/또는 RRAM 등의 불휘발성 메모리를 포함할 수 있다.
일 실시 예에서, 메모리 장치(100)는 에러 정정 코드(ECC; Error Correction Code) 회로(110)를 포함할 수 있다. ECC 회로(110)는 메모리 장치(100)에 저장된 데이터의 에러를 검출하고 정정하도록 구성될 수 있다. 예를 들어, ECC 회로(110)는 메모리 컨트롤러(11)로부터 수신된 제1 데이터에 대한 ECC 인코딩을 수행하여, 패리티 데이터를 생성할 수 있다. 메모리 장치(100)는 메모리 컨트롤러(11)로부터 수신된 제1 데이터 및 ECC 회로(110)에 의해 생성된 패리티 데이터를 함께 저장할 수 있다. 메모리 장치(100)가 구동하는 도중에, 다양한 요인에 의해 메모리 장치(100)에 저장된 제1 데이터에서 에러가 발생할 수 있다. 메모리 컨트롤러(110)에 의해 제1 데이터에 대한 읽기 요청이 발생한 경우, ECC 회로(110)는 제1 데이터 및 대응하는 패리티 데이터를 기반으로, ECC 디코딩을 수행하여, 제1 데이터에서 발생한 에러를 정정할 수 있다. 메모리 장치(100)는 정정된 제1 데이터를 메모리 컨트롤러(11)로 전송할 수 있다.
일 실시 예에서, ECC 회로(110)는 미리 정해진 에러 정정 능력 이내의 에러를 정정할 수 있다. 데이터에서 발생한 에러가 ECC 회로(110)의 에러 정정 능력을 초과하는 경우, 데이터에서 발생한 에러가 정상적으로 정정되지 않는다.
메모리 컨트롤러(11)는 메모리 장치(100)로부터 수신된 읽기 데이터가 정정 불가능한 에러를 포함하는지 또는 정상 데이터(예를 들어, 에러가 발생하지 않은 데이터, 또는 에러가 정상적으로 정정된 데이터)인지를 판별하기 위한 정보를 필요로 한다. 이를 위해, ECC 회로(110)는 디코딩 상태 플래그(DSF; decoding status flag)를 메모리 컨트롤러(11)로 전송할 수 있다. 디코딩 상태 플래그(DSF)는 메모리 컨트롤러(11)로 전송되는 데이터가 UE 데이터인지 또는 정상 데이터인지를 가리키는 정보이다. ECC 디코딩 상태 플래그(DSF)는 ECC 회로(110)의 ECC 디코딩 과정에서 생성될 수 있다.
일 실시 예에서, ECC 회로(110)는 ECC 디코딩 과정 중 생성되는 신드롬만 사용하여, 디코딩 상태 플래그(DSF)를 생성할 수 있다. 이 경우, 디코딩 상태 플래그(DSF)를 생성하는데 요구되는 시간이 단축될 수 있다. 본 발명에 따른 ECC 회로(110)의 구성 및 디코딩 상태 플래그(DSF) 생성 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 메모리 장치를 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 메모리 장치(100)는 ECC 회로(110), 메모리 셀 어레이(120), CA 버퍼(130), 어드레스 디코더(140), 커맨드 디코더(150), 감지 증폭기 및 쓰기 드라이버(160), 및 입출력 회로(170)를 포함할 수 있다.
ECC 회로(110)는 메모리 셀 어레이(120)에 저장될 데이터에 대한 ECC 인코딩을 수행하여, 패리티 데이터를 생성할 수 있다. 또는 ECC 회로(110)는 메모리 셀 어레이(120)로부터 독출된 데이터 및 패리티 데이터를 기반으로 ECC 디코딩을 수행하여, 데이터의 에러를 정정할 수 있다. ECC 회로(110)의 구성 및 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
메모리 셀 어레이(120)는 복수의 메모리 셀들을 포함할 수 있다. 복수의 메모리 셀들 각각은 복수의 워드라인들 및 복수의 비트라인들과 연결될 수 있다. 일 실시 예에서, 복수의 워드라인들은 X-디코더(또는 행 디코더)(X-DED)에 의해 구동될 수 있고, 복수의 비트라인들은 Y-디코더(또는 열 디코더)(Y-DEC)에 의해 구동될 수 있다.
CA 버퍼(130)는 커맨드/어드레스 신호들(CA)을 수신하고, 수신된 신호들을 임시 저장 또는 버퍼링하도록 구성될 수 있다.
어드레스 디코더(140)는 CA 버퍼(130)에 저장된 어드레스 신호들(ADDR)을 디코딩할 수 있다. 어드레스 디코더(140)는 디코딩 결과를 기반으로, X-디코더 및 Y-디코더를 제어할 수 있다.
커맨드 디코더(150)는 CA 버퍼(130)에 저장된 커맨드(CMD)를 디코딩할 수 있다. 커맨드 디코더(150)는 디코딩된 결과를 기반으로, 메모리 장치(100)의 구성 요소들을 제어할 수 있다. 예를 들어, CA 버퍼(130)에 저장된 커맨드 신호가 쓰기 커맨드인 경우(즉, 메모리 컨트롤러(11)로부터 수신된 커맨드가 쓰기 커맨드인 경우), 커맨드 디코더(150)는 입출력 회로(116)를 통해 수신된 데이터(DATA)가 메모리 셀 어레이(120)에 기입되도록 ECC 회로(110)를 제어(즉, ECC 인코딩을 수행)하고, 감지 증폭기 및 쓰기 드라이버(160)의 동작을 제어(즉, 쓰기 드라이버를 활성화시킴)할 수 있다.
또는, CA 버퍼(130)에 저장된 커맨드 신호가 읽기 커맨드인 경우(즉, 메모리 컨트롤러(11)로부터 수신된 커맨드가 읽기 커맨드인 경우), 커맨드 디코더(150)는 메모리 셀 어레이(120)에 저장된 데이터가 독출되도록, ECC 회로(110)를 제어(즉, ECC 디코딩을 수행)하고, 감지 증폭기 및 쓰기 드라이버(160)의 동작을 제어(즉, 감지 증폭기를 활성화시킴)할 수 있다.
감지 증폭기 및 쓰기 드라이버(160)는 커맨드 디코더(150)의 제어에 따라, 복수의 비트라인들을 통해 메모리 셀 어레이(120)로부터 데이터를 독출하거나 또는 메모리 셀 어레이(120)에 데이터를 기입할 수 있다.
입출력 회로(170)는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 기반으로, 메모리 컨트롤러(11)로부터 데이터(DATA)를 수신하거나 또는 메모리 컨트롤러(11)로 데이터(DATA)를 전송할 수 있다. 일 실시 예에서, 입출력 회로(170)는 ECC 회로(110)로부터 디코딩 상태 플래그(DSF)를 수신하고, 디코딩 상태 플래그(DSF)를 메모리 컨트롤러(11)로 전송할 수 있다. 일 실시 예에서, 디코딩 상태 플래그(DSF)는 데이터 신호(DQ)를 통해 메모리 컨트롤러(11)로 전송될 수 있다. 또는 디코딩 상태 플래그(DSF)는 다양한 제어 신호들(예를 들어, DBI, DMI 등) 또는 다른 전용 신호를 통해 메모리 컨트롤러(11)로 전송될 수 있다.
도 3은 도 2의 ECC 회로의 동작을 설명하기 위한 블록도이다. 도면의 간결성 및 설명의 편의를 위해, ECC 회로(110)의 동작을 설명하는데 불필요한 구성 요소들은 생략된다.
도 2 및 도 3을 참조하면, ECC 회로(110)는 ECC 인코더(ECC-ENC) 및 ECC 디코더(ECC-DEC)를 포함할 수 있다. ECC 인코더(ECC-ENC)는 메모리 셀 어레이(120)에 저장될 쓰기 데이터(WDT)에 대한 ECC 인코딩을 수행하여, 패리티 데이터(PRT)를 생성할 수 있다. 예를 들어, 128b의 쓰기 데이터(WDT)에 대하여, ECC 인코더(ECC-ENC)는 8b의 베이시스 비트(BB)를 사용하여, 8b의 패리티 데이터(PRT)를 생성할 수 있다. 쓰기 데이터(WDT) 및 패리티 데이터(PRT)는 감지 증폭기 및 쓰기 드라이버(160)를 통해 메모리 셀 어레이(120)에 저장될 수 있다.
ECC 디코더(ECC-DEC)는 메모리 셀 어레이(120)로부터 읽은 읽기 데이터(RDT) 및 패리티 데이터(PRT)를 기반으로 ECC 디코딩을 수행하여, 에러 정정된 읽기 데이터(RDT_cor)를 출력할 수 있다. 예를 들어, 128b의 읽기 데이터(RDT)에 대하여, ECC 디코더(ECC-DEC)는 및 8b의 패리티 데이터(PRT)를 사용하여, 128b의 에러 정정된 읽기 데이터(RDT_cor)를 생성할 수 있다. ECC 디코더(ECC-DEC)는 ECC 디코딩 결과 또는 에러 정정된 읽기 데이터(RDT_cor)의 상태를 가리키는 디코딩 상태 플래그(DSF)를 생성할 수 있다.
도 4a는 도 3의 ECC 디코더의 동작을 보여주는 순서도이다. 도 4b는 도 4a의 순서도에 따른 동작을 수행하도록 구성된 ECC 디코더를 보여주는 블록도이다. 도 4c는 도 4b의 DSF 생성기를 보여주는 블록도이다.
이하에서, 본 발명의 실시 예들을 간결하고 명확하게 설명하기 위해, 일부 데이터 값 또는 비트 값들이 특정 레벨 또는 특정 비트 레벨(예를 들어, "1" 또는 "0")인 것으로 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명을 위해 사용되는 다양한 데이터 값 또는 비트 값들은 구현 방식에 따라 다양하게 변형될 수 있음이 이해될 것이다.
도 3, 도 4a, 도 4b, 및 도 4c를 참조하면, S10 단계에서, ECC 디코더(ECC-DEC)는 읽기 데이터(RDT) 및 패리티 데이터(PRT)를 기반으로 신드롬(SYD)를 생성할 수 있다. 예를 들어, 메모리 장치(100)의 읽기 동작시, 감지 증폭기 및 쓰기 드라이버(160)는 메모리 셀 어레이(120)에 저장된 읽기 데이터(RDT) 및 패리티 데이터(PRT)를 읽고, 읽기 데이터(RDT) 및 패리티 데이터(PRT)를 ECC 디코더(ECC-DEC)로 전달할 수 있다. 도 4b에 도시된 바와 같이, ECC 디코더(ECC-DEC)는 신드롬 생성기(111)를 포함할 수 있다. 신드롬 생성기(111)는 128b의 읽기 데이터(RDT) 및 8b의 패리티 데이터(PRT)를 기반으로 신드롬(SYD)을 생성할 수 있다. 일 실시 예에서, 신드롬 생성기(111)는 128b의 읽기 데이터(RDT)를 기반으로 8b의 체크 비트를 생성하고, 8b의 체크 비트 및 8b의 패리터 데이터(PRT)에 대한 논리 연산을 통해, 8b의 신드롬(SYD)을 생성할 수 있다.
S20 단계에서, ECC 디코더(ECC-DEC)는 신드롬(SYD)에 대한 디코딩을 수행하여 에러 벡터(ERV)를 생성할 수 있다. 예를 들어, 도 4b에 도시된 바와 같이, ECC 디코더(ECC-DEC)는 신드롬 디코딩 회로(112)를 포함할 수 있다. 신드롬 디코딩 회로(112)는 신드롬 발생기(111)로부터 신드롬(SYD)을 수신하고, 수신된 신드롬(SYD)을 디코딩하여, 에러 벡터(ERV)를 생성할 수 있다.
일 실시 예에서, 신드롬 디코딩 회로(112)는 패리티-체크 행렬(parity-check matrix)(이하에서, "H-행렬"이라 칭함.) 및 신드롬(SYD)을 비교함으로써, 읽기 데이터(RDT)에서 에러가 발생한 위치를 검출할 수 있다. 에러 벡터(ERV)는 128b의 크기(즉, 읽기 데이터(RDT)와 동일한 크기)를 가질 수 있으며, 읽기 데이터(RDT)에서 에러가 발생한 위치에 대한 정보를 포함할 수 있다.
S31 단계에서, ECC 디코더(ECC-DEC)는 에러 벡터(ERV)를 사용하여, 읽기 데이터(RDT)의 에러를 정정할 수 있다. 예를 들어, 도 4b에 도시된 바와 같이, ECC 디코더(ECC-DEC)는 정정 로직 회로(113)를 포함할 수 있다. 정정 로직 회로(113)는 감지 증폭기 및 쓰기 드라이버(160)로부터 읽어진 읽기 데이터(RDT) 및 에러 벡터(ERV)에 대한 비트와이즈 XOR 연산을 수행하여, 에러가 정정된 읽기 데이터(RDT_cor)를 출력할 수 있다.
S32 단계에서, ECC 디코더(ECC-DEC)는 에러 벡터(ERV) 및 신드롬(SYD)을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다. 예를 들어, 도 4b에 도시된 바와 같이, ECC 디코더(ECC-DEC)는 DSF 생성기(114)를 포함할 수 있다. DSF 생성기(114)는 신드롬 디코딩 회로(112)로부터 8b의 신드롬(SYD) 및 128b의 에러 벡터(ERV)를 수신하고, 수신된 정보를 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다.
좀 더 상세한 예로서, 도 4c에 도시된 바와 같이, DSF 생성기(114)는 데이터 에러 체크 회로(114a), 신드롬 체크 회로(114b), 패리티 에러 체크 회로(114c), 및 디코딩 상태 플래그 검출 회로(114d)를 포함할 수 있다.
데이터 에러 체크 회로(114a)는 에러 벡터(ERV)를 기반으로 읽기 데이터(RDT)에 에러가 포함되었는지를 가리키는 에러 정보(err)를 생성할 수 있다. 일 실시 예에서, 데이터 에러 체크 회로(114a)는 에러 벡터(EVR)의 각 비트들 중 적어도 하나가 "1"인지를 판별함으로써, 에러 정보(err)를 생성할 수 있다. 일 실시 예에서, 에러 정보(err)의 값이 "0"인 것은 읽기 데이터(RDT)에 에러가 없음을 가리키고, 에러 정보(err)의 값이 "1"인 것은 읽기 데이터(RDT)에 에러가 있음을 가리킬 수 있다.
신드롬 체크 회로(114b)는 신드롬(SYD)의 각 비트가 모두 "0"인지를 기반으로, 신드롬 정보(SYD_0)를 생성할 수 있다. 신드롬(SYD)의 각 비트가 모두 "0"인 경우(즉, 신드롬(SYD)이 all-zero인 경우), 읽기 데이터(RDT) 및 패리티 데이터(PRT)에 에러가 없음을 가리키고, 신드롬(SYD)의 적어도 하나의 비트가 모두 "0"이 아닌 경우(즉, 신드롬(SYD)이 non-zero인 경우), 읽기 데이터(RDT) 또는 패리티 데이터(PRT)에 에러가 있음을 가리킬 수 있다. 본 발명의 실시 예에서, 설명의 편의를 위해, 신드롬(SYD)의 각 비트가 모두 "0"인 경우(즉, 신드롬(SYD)이 all-zero인 경우), 신드롬 정보(SYD_0)는 "1"이고, 신드롬(SYD)의 적어도 하나의 비트가 모두 "0"이 아닌 경우(즉, 신드롬(SYD)이 non-zero인 경우), 신드롬 정보(SYD_0)는 "0"인 것으로 가정한다.
패리티 에러 체크 회로(114c)는 패리티 데이터(PRT)에 에러가 포함되었는지를 기반으로 패리티 에러 정보(PRT_ERR)를 출력할 수 있다. 일 실시 예에서, 패리티 에러 체크 회로(114c)는 n × n의 단위 행렬(identity matrix) 및 신드롬(SYD)을 기반으로 패리티 에러 정보(PRT_ERR)를 생성할 수 있다. 단, n은 신드롬(SYD)의 크기(즉, 비트 수)와 같음.
디코딩 상태 플래그 검출 회로(114d)는 에러 정보(err), 신드롬 정보(SYD_0), 및 패리티 에러 정보(PRT_ERR)를 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다. 예를 들어, 디코딩 상태 플래그(DSF)는 ECC 디코딩 결과에 대한 디코딩 상태를 가리킬 수 있다. 디코딩 상태는 ECC 디코더(ECC-DEC)에 의해 출력되는 최종 데이터(즉, 에러 정정된 읽기 데이터(RDT_cor))가 정상적인 데이터인지(즉, 읽기 데이터(RDT)에 에러가 없는 경우 또는 읽기 데이터(RDT)에 정정 가능한 에러가 포함된 경우), 또는 정정 불가능한 에러가 포함되었는지를 가리킬 수 있다. 이하에서, 설명의 편의를 위해, 읽기 데이터(RDT)에 정정 불가능한 에러가 포함된 경우에서의 디코딩 결과 또는 디코딩 상태는 UE(Uncorrectable Error)라 칭하고, 읽기 데이터(RDT)에 정정 가능한 에러가 포함된 경우에서의 디코딩 결과 또는 디코딩 상태는 CE(Correctable Error)라 칭하고, 읽기 데이터(RDT)에 에러가 포함되지 않은 경우에서의 디코딩 결과 또는 디코딩 상태는 NE(Non-Error)라 칭한다.
좀 더 상세한 예로서, 에러 정보(err)가 "0"(즉, 읽기 데이터(RDT)에 에러가 없음)이고, 신드롬 정보(SYD_0)가 "0"(즉, 읽기 데이터(RDT) 또는 패리티 데이터(PRT)에 에러가 있음)이고, 그리고, 패리티 에러 정보(PRT_ERR)가 "0"(즉, 패리티 데이터(PRT)에 에러가 없음)인 경우, 디코딩 상태는 UE일 것이다. 이 경우, 디코딩 상태 플래그(DSF)는 "1"로 설정될 수 있다. 상술된 경우와 다른 정보의 조합에서는, ECC 디코더(ECC-DEC)로부터 출력된 에러 정정된 읽기 데이터(RDT_cor)는 정상 데이터(즉, 에러가 없었거나 또는 에러가 정상적으로 정정됨.)인 상태일 수 있다. 이 경우(즉, NE 또는 CE), 디코딩 상태 플래그(DSF)는 "0"으로 설정될 수 있다.
다시, 도 4a에 도시된 바와 같이, S40 단계에서, ECC 디코더(ECC-DEC)는 에러 정정된 읽기 데이터(RDT_cor) 및 디코딩 상태 플래그(DSF)를 출력할 수 있다. 일 실시 예에서, 에러 정정된 읽기 데이터(RDT_cor) 및 디코딩 상태 플래그(DSF)는 입출력 회로(170, 도 2 참조)를 통해, 메모리 컨트롤러(11)로 제공될 수 있다. 일 실시 예에서, 메모리 컨트롤러(11)는 디코딩 상태 플래그(DSF)를 기반으로 수신된 데이터의 디코딩 상태를 판별할 수 있고, 판별 결과에 따라 다양한 동작을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(11)는 UE에 대하여, 리드 리트라이 또는 리셋 또는 다른 다양한 유지 관리 동작을 수행할 수 있다.
일 실시 예에서, 도 4a 내지 도 4c를 참조하여 설명된 ECC 디코더(ECC-DEC)의 동작은 다양한 논리 연산 회로들을 통해 구현될 수 있다. 예를 들어, S10 단계의 동작(즉, 신드롬 생성 동작)은 6단의 XOR 연산 회로를 통해 수행되고, S20 단계의 동작(즉, 신드롬 디코딩 동작)은 3단의 AND 연산 회로를 통해 수행되고, S31 단계의 동작(즉, 에러 정정 동작)은 1단의 XOR 연산 회로를 통해 수행된다. S32 단계의 동작(즉, 디코딩 상태 플래그(DSF)를 생성하는 동작)에서, 데이터 에러 체크 회로(114a)는 7단의 XOR 연산 회로를 통해 구현되고, 신드롬 체크 회로(114b)는 4단의 AND 연산 회로를 통해 구현되고, 패리티 에러 체크 회로(114c)는 3단의 AND 연산 회로 및 3단의 OR 연산 회로를 통해 구현되고, 디코딩 상태 플래그 검출 회로(114d)는 1단의 OR 연산 회로, 1단의 INV(invert) 연산 회로, 및 1단의 AND 연산 회로를 통해 구현될 수 있다.
S32 단계의 동작은 에러 벡터(ERV)를 사용하기 때문에, S20 단계의 동작이 완료된 이후에 수행된다. 이 경우, 신드롬 디코딩 동작이 완료된 시점으로부터, S32 단계의 동작이 완료되는데 요구되는 지연 시간(Latency)은 총 7단의 OR 연산 회로, 1단의 INV 연산 회로, 및 1단의 AND 연산 회로에 대응하는 지연 시간일 수 있다.
S32 단계의 동작 S31 단계의 동작과 병렬적으로 수행된다. 이 경우, S32 단계의 동작에 대한 지연 시간이 S31 단계의 동작에 대한 지연 시간보다 상대적으로 길기 때문에, S32 단계의 동작(즉, 디코딩 상태 플래그를 생성하는 동작)에 따른 성능 저하가 발생한다.
도 5a는 도 3의 ECC 디코더의 동작을 보여주는 순서도이다. 도 5b는 도 5a의 순서도에 동작을 수행하도록 구성된 ECC 디코더를 보여주는 블록도이다. 도 5c는 도 5b의 고속 DSF 생성기를 보여주는 블록도이다. 이하에서, 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 3, 도 5a, 도 5b, 및 도 5c를 참조하면, S110 단계에서, ECC 디코더(ECC-DEC-1)는 읽기 데이터(RDT) 및 패리티 데이터(PRT)를 기반으로 신드롬(SYD)를 생성할 수 있다. 예를 들어, 도 5b에 도시된 바와 같이, ECC 디코더(ECC-DEC)는 신드롬 생성기(111)를 포함할 수 있다. 도 5a의 S110 단계의 동작은 도 4a의 S10 단계의 동작과 유사할 수 있고, 도 5b의 신드롬 생성기(111)는 도 4b의 신드롬 생성기(111)와 유사한 동작을 수행할 수 있다.
S120 단계에서, ECC 디코더(ECC-DEC-1)는 신드롬(SYD)을 디코딩하여, 에러 벡터(ERV)를 생성할 수 있다. 예를 들어, 도 5b에 도시된 바와 같이, ECC 디코더(ECC-DEC-1)는 신드롬 디코딩 회로(112)를 포함할 수 있다. 도 5a의 S120 단계의 동작은 도 4a의 S20 단계의 동작과 유사할 수 있고, 도 5b의 신드롬 디코딩 회로(112)는 도 4b의 신드롬 디코딩 회로(112)와 유사한 동작을 수행할 수 있다.
S130 단계에서, ECC 디코더(ECC-DEC-1)는 에러 벡터(ERV)를 기반으로 읽기 데이터(RDT)의 에러를 정정할 수 있다. 예를 들어, 도 5b에 도시된 바와 같이, ECC 디코더(ECC-DEC-1)는 정정 로직 회로(113)를 포함할 수 있다. 도 5a의 S130 단계의 동작은 도 4a의 S31 단계의 동작과 유사할 수 있고, 도 5b의 정정 로직 회로(113)는 도 4b의 정정 로직 회로(113)와 유사한 동작을 수행할 수 있다.
S140 단계에서, ECC 디코더(ECC-DEC-1)는 신드롬 및 축약된 H-행렬(simplified H-matrix)을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다.
S150 단계에서, ECC 디코더(ECC-DEC-1)는 에러 정정된 읽기 데이터(RDT_cor) 및 디코딩 상태 플래그(DSF)를 출력할 수 있다. 도 5a의 S150 단계의 동작은 도 4a의 S40 단계의 동작과 유사할 수 있다.
일 실시 예에서, 도 5a 내지 도 5c의 실시 예에 따르면, 고속 DSF 생성기(150)는 에러 벡터(ERV) 없이, 신드롬(SYD)만 사용하여 디코딩 상태 플래그(DSF)를 생성할 수 있다. 즉, 고속 DSF 생성기(150)는 디코딩 상태 플래그(DSF)를 생성하는데 에러 벡터(ERV)를 사용하지 않기 때문에, 신드롬 디코딩 동작(예를 들어, S120 단계의 동작)과 병렬적으로 또는 함께 동작할 수 있다.
예를 들어, 도 5b에 도시된 바와 같이, ECC 디코더(ECC-DEC-1)는 고속 DSF 생성기(116)를 포함할 수 있다. 고속 DSF 생성기(116)는 신드롬 디코딩 회로(112)로부터 신드롬(SYD)을 수신하고, 수신된 신드롬(SYD)을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다. 좀 더 상세한 예로서, 도 5c에 도시된 바와 같이, 고속 DSF 생성기(115)는 신드롬 체크 회로(115b), 패리티 에러 체크 회로(115c), DSF 검출 회로(115d), 및 고속 데이터 에러 체크 회로(115e)를 포함할 수 있다. 도 5c의 신드롬 체크 회로(115b), 패리티 에러 체크 회로(115c), DSF 검출 회로(115d)는 도 4c의 신드롬 체크 회로(114b), 패리티 에러 체크 회로(114c), DSF 검출 회로(114d)와 유사한 동작을 수행할 수 있다.
일 실시 예에서, 도 4c의 DSF 생성기(114)는 에러 벡터(ERV)를 사용하여, 읽기 데이터(RDT)에 대한 에러 정보(err)를 생성한다. 반면에, 도 5c의 고속 데이터 에러 체크 회로(115e)는 신드롬(SYD)를 사용하여, 읽기 데이터(RDT)에 대한 에러 정보(DT_ERR)를 생성할 수 있다. 좀 더 상세한 예로서, 고속 데이터 에러 체크 회로(115e)는 신드롬(SYD)의 적어도 일부 비트들을 축약된 H-행렬과 비교함으로써, 읽기 데이터(RDT)에 대한 에러 정보(DT_ERR)를 생성할 수 있다. 축약된 H-행렬은 신드롬 디코딩 회로(112)에 의해 사용되는 H-행렬 또는 H-행렬의 부분 정보를 기반으로 생성될 수 있다. 축약된 H-행렬의 구성은 이하의 도 6 내지 도 8을 참조하여 더욱 상세하게 설명된다.
상술된 바와 같이, 본 발명의 실시 예에 따른 고속 DSF 생성기(115)는 에러 벡터(ERV) 없이, 신드롬(SYD)만 사용하여, 디코딩 상태 플래그(DSF)를 생성할 수 있다. 따라서, 디코딩 상태 플래그(DSF)를 생성하는 동작이, 신드롬 디코딩 동작과 병렬적으로 수행됨으로써, ECC 디코더(ECC-DEC-1)의 전체적인 지연시간이 감소될 수 있다.
예를 들어, 도 4a 내지 도 4c를 참조하여 설명된 바와 같이, 신드롬 디코딩 동작이 완료된 시점으로부터 디코딩 상태 플래그(DSF)를 생성하는데 요구되는 지연 시간은 총 7단의 OR 연산 회로, 1단의 INV 연산 회로, 및 1단의 AND 연산 회로에 대응하는 지연 시간이다.
반면에, 도 5a 내지 도 5c를 참조하여 설명된 바와 같이, 고속 DSF 생성기(115)에 의해, 신드롬 디코딩 동작이 완료된 시점으로부터 디코딩 상태 플래그(DSF)를 생성하는데 요구되는 지연 시간은, 총 4단의 OR 연산 회로, 1단의 INV 연산 회로, 및 1단의 AND 연산 회로에 대응하는 지연 시간이다. 즉, 에러 벡터(ERV)없이, 신드롬(SYD)만 사용하여, 디코딩 상태 플래그(DSF)가 생성됨으로써, ECC 디코더(ECC-DEC-1)의 전체적인 지연 시간이 감소될 수 있다.
도 6, 도 7a, 도 7b, 및 도 7c는 도 5a의 신드롬 디코딩 회로에 의해 사용되는 H-행렬의 일부 예를 보여주는 도면이다. 도 8은 도 6 내지 도 7c의 H-행렬을 기반으로 생성된 축약된 H-행렬의 일부 예를 보여주는 도면이다. 일 실시 예에서, 축약된 H-행렬(sim-H-mat)은 고속 DSF 생성기(115e)에 의해 사용될 수 있다.
일 실시 예에서, 도 6 내지 도 8을 참조하여 설명되는 H-행렬(H-mat)은 단일 비트 에러 정정(SEC; single bit error correction)을 위한 H-행렬의 일부 예이다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명에 따른 H-행렬 및 축약된 H-행렬은 메모리 장치(100) 또는 ECC 회로(110)의 구현 방식에 따라 다양하게 변형될 수 있음이 이해될 것이다.
먼저, 도 6 내지 도 7c를 참조하면, H-행렬(H-mat)은 복수의 부분 행렬들(SM00~SM15) 및 패리티 행렬(PR)를 포함할 수 있다. 패리티 행렬(PR)는 8 × 8의 크기를 갖는 단위 행렬(IM; identity matrix)일 수 있다. 예를 들어, 도 7a에 도시된 바와 같이, 패리티 행렬(PR)은 8 × 8의 크기를 갖는 단위 행렬(IM; identity matrix)을 가질 수 있다. 패리티 행렬(PR)의 각 행은 신드롬(SYD)의 각 비트(예를 들어, S0, S1, S2, S3, S4, S5, S6, 및 S7)와 대응될 수 있다.
복수의 부분 행렬들(SM00~SM15) 각각은 8 × 8의 크기를 가질 수 있다. 일 실시 예에서, 복수의 부분 행렬들(SM00~SM15)은 일정 규칙을 갖도록 배치될 수 있다. 예를 들어, 복수의 부분 행렬들(SM00~SM15) 각각의 3개의 행들은 제A0 부분 행렬(A0)일 수 있다. 즉, 복수의 부분 행렬들(SM00~SM15) 각각의 3개의 행들은 동일한 반복 패턴을 가질 수 있다. 복수의 부분 행렬들(SM00~SM15)의 나머지 5개의 행들은 각각 제B00 내지 제B15 부분 행렬들(B00~B15)일 수 있다. 제B00 내지 제15 부분 행렬들(B00~B15) 각각은 동일한 열을 갖도록 구성될 수 있다.
좀 더 상세한 예로서, 도 7b에 도시된 바와 같이, H-행렬(H-mat)의 각 행은 신드롬(SYD)의 각 비트들(예를 들어, S0, S1, S2, S3, S4, S5, S6, S7)과 대응될 수 있다. H-행렬(H-mat)의 제00 부분 행렬(SM00) 중 제1 부분 행들(1st sub-Rows)(예를 들어, S0, S1, 및 S2에 대응하는 행들)에, 제A0 부분 행렬(A0)이 배치될 수 있고, 제01 부분 행렬(SM01) 중 제1 부분 행들(1st sub-Rows)(예를 들어, S0, S1, 및 S2에 대응하는 행들)에, 제A0 부분 행렬(A0)이 배치될 수 있다. 마찬가지로, 제15 부분 행렬(SM15) 중 제1 부분 행들(1st sub-Rows)(예를 들어, S0, S1, 및 S2에 대응하는 행들)에, 제A0 부분 행렬(A0)이 배치될 수 있다. H-행렬(H-mat)의 제00 부분 행렬(SM00) 중 제2 부분 행들(2nd sub-Rows)(예를 들어, S3, S4, S5, S6, 및 S7에 대응하는 행들)에, 제B00 부분 행렬(B00)이 배치될 수 있고, 제01 부분 행렬(SM01) 중 제2 부분 행들(2nd sub-Rows)(예를 들어, S3, S4, S5, S6, 및 S7에 대응하는 행들)에, 제B01 부분 행렬(B01)이 배치될 수 있다. 마찬가지로, 제15 부분 행렬(SM15)의 제2 부분 행들(2nd sub-Rows)(예를 들어, S3, S4, S5, S6, 및 S7에 대응하는 행들)에, 제B15 부분 행렬(B15)이 배치될 수 있다.
즉, H-행렬(H-mat)의 제1 부분 행들(1st sub-Rows)(예를 들어, S0, S1, 및 S3에 대응하는 행들)에서는, 부분 행렬 단위(즉, 8개의 열 단위)로 동일한 행렬이 반복적으로 배치되는 패턴을 갖고, H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)(예를 들어, S3, S4, S5, S6, 및 S7에 대응하는 행들)에서는, 부분 행렬 단위(즉, 8개의 열 단위)로 서로 다른 부분 행렬이 배치되는 패턴을 가질 수 있다. 이 때, H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)(예를 들어, S3, S4, S5, S6, 및 S7에 대응하는 행들)의 동일한 부분 행렬에서는, 각 열이 서로 동일할 수 있다.
도 7a 및 도 7b를 참조하여 설명된 패리티 행렬(PR) 및 부분 행렬들(SM00~SM15)을 조합하면, H-행렬(H-mat)은 도 7c와 같이 구현될 수 있다. 신드롬 디코딩 회로(112)는 신드롬(SYN)의 각 비트를 도 7c의 H-행렬(H-mat)의 각 열과 비교함으로써, 128b의 에러 벡터(ERV)를 생성할 수 있다. 예를 들어, 신드롬 디코딩 회로(112)는 H-행렬(H-mat)의 복수의 열들 중 신드롬(SYD)과 동일한 열을 검색하고, 검색된 결과를 기반으로 에러 벡터(ERV)를 생성할 수 있다. H-행렬(H-mat)의 복수의 열들 중 신드롬(SYD)과 동일한 열에 대응하는 위치의 비트가 읽기 데이터(RDT)에서 발생한 에러를 가리킬 수 있다.
일 실시 예에서, 신드롬(SYN)의 모든 비트들이 "0"이 아니지만(즉, non-zero), H-행렬(H-mat)의 복수의 열들 중 신드롬(SYD)과 동일한 열이 없다는 것은, 읽기 데이터(RDT)에 정정할 수 없는 에러가 포함되어 있음을 가리킬 수 있다.
일 실시 예에서, 도 7c에 도시된 H-행렬(H-mat)은 단일 비트 에러 정정(SEC)을 위한 H-행렬의 일부 예시이며, 본 발명의 범위가 이에 제한되지 않음이 이해될 것이다.
H-행렬(H-mat)이 도 7c와 같이 구현된 경우, 축약된 H-행렬(sim-H-mat)(simplified H-matrix)은 도 8과 같이 생성 또는 결정될 수 있다. 예를 들어, 도 8을 참조하면, 축약된 H-행렬(sim-H-mat)은 H-행렬(H-mat)의 일부 행들(예를 들어, 제2 부분 행들(2nd sub-Rows))의 정보를 기반으로 생성될 수 있다.
좀 더 상세한 예로서, 앞서 설명된 바와 같이, H-행렬(H-mat)은 복수의 부분 행렬들(SM00~SM15)로 구분될 수 있다. 복수의 부분 행렬들(SM00~SM15) 각각은 8 × 8의 크기를 가질 수 있다. 즉, H-행렬(H-mat)은 8개의 열들 단위(즉, 8b 단위)로 구분될 수 있다. 이 때, 복수의 부분 행렬들(SM00~SM15) 각각에서, 제1 부분 행들(1st sub-Rows)(S0, S1, 및 S2에 대응하는 행들)은 서로 동일한 제A0 부분 행렬(A0)로 구성되며, 제A0 부분 행렬(A0)의 각 열은 3개의 비트들로 표현 가능한 모든 조합을 나타낸다. 이는, 다시 말해서, H-행렬(H-mat)의 제1 부분 행들(1st sub-Rows)(S0, S1, 및 S2에 대응하는 행들)은 신드롬(SYD)의 S0, S1, 및 S2와 비교됨으로써, 에러의 정확한 위치를 특정하는 기능을 가지며, 에러의 발생 유무를 결정하지는 않는다.
반면에, H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)(S3, S4, S5, S6, 및 S7에 대응하는 행들)은 제B00 내지 제B15 부분 행렬들(B00~B15)로 구성된다. 이 때, 제B00 내지 제B15 부분 행렬들(B00~B15) 각각은 서로 다른 비트 열을 가지나, 동일한 부분 행렬에서, 모든 열들은 서로 동일한 값을 갖는다. 이 경우, H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)(S3, S4, S5, S6, 및 S7에 대응하는 행들)에 대한 비트 열들은 16개로 표현될 수 있다. 이 때, 5개의 비트들을 통해 조합 가능한 비트 열들은 32개이다. 즉, H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)(S3, S4, S5, S6, 및 S7에 대응하는 행들)에서, 각 열들을 신드롬(SYD)의 S3, S4, S5, S6, 및 S7과 비교함으로써, 에러의 검출 유무가 결정될 수 있다.
본 발명의 실시 예에 따르면, 축약된 H-행렬(sim-H-mat)은 상술된 바와 같이, H-행렬(H-mat)에서 에러 위치를 특정하는데 필요한 행들은 제외하고, 나머지 일부 정보를 사용하여, 축약된 H-행렬(sim-H-mat)을 생성할 수 있다. 이 경우, 도 8에 도시된 바와 같이, 축약된 H-행렬(sim-H-mat)은 제B00 내지 제B15 부분 행렬들(B00~B15) 및 패리티 행렬(PR)을 포함할 수 있다. 제B00 내지 제B15 부분 행렬들(B00~B15)은 [11000]T, [00111]T, [10100]T, [01011]T, [01100]T, [10011]T, [11100]T, [00011]T, [100111]T, [01101]T, [01010]T, [10101]T, [11010]T, [00101]T, [00110]T, 및 [11001]T의 비트 열들이 각각 8개씩 반복(즉, 8b로 반복)되는 구조를 가질 수 있다. 패리티 행렬(PR)은 8 × 8의 단위 행렬(IM)일 수 있다.
일 실시 예에서, 도 6 내지 도 7c를 참조하여 설명된 H-행렬(H-mat)에 대하여, 도 8에 도시된 바와 같은 축약된 H-행렬(sim-H-mat)이 생성될 수 있고, 신드롬(SYD)의 일부 비트들(S3, S4, S5, S6, S7)이 축약된 H-행렬(sim-H-mat)의 각 열과 비교됨으로써, 읽기 데이터(RDT)에 대한 에러 유무가 체크될 수 있다.
일 실시 예에서, 도 8에 도시된 바와 같은 축약된 H-행렬(sim-H-mat)은 일부 예시이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 8에 도시된 바와 같은 축약된 H-행렬(sim-H-mat)은 H-행렬(H-mat)을 8b 단위로 구분하여 복수의 부분 행렬들을 구성하였으나, H-행렬(mat)의 구현 방식에 따라, 4b 단위 또는 16 비트 단위 또는 N비트 단위(단, N은 자연수)로 구분될 수 있다. 이 경우, 축약된 H-행렬의 크기가 다양하게 가변될 수 있다.
이하의 도 9 내지 도 13에서, 도 8의 축약된 H-행렬(sim-H-mat)을기반으로, 디코딩 상태 플래그(DSF)를 생성하도록 구성된 고속 DSF 생성기의 구성 요소들(예를 들어, 신드롬 체크 회로(115b), 패리티 에러 체크 회로(115c), 고속 데이터 에러 체크 회로(115e), 및 DSF 검출 회로(115d))에 대한 일부 예들이 도시되고 설명된다.
그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 고속 DSF 생성기의 구성 요소들에 대한 논리 연산 회로의 구성은 구현 방식 또는 H-행렬 또는 축약된 H-행렬에 따라 다양하게 가변될 수 있다.
또한, 도면의 간결성 및 설명의 편의를 위해, 이하의 도면들에서, 신드롬(SYD)은 8b의 크기를 가질 수 있으며, 신드롬(SYD)의 각 비트는 S0, S1, S2, S3, S4, S5, S6, 및 S7으로 표기되고, 신드롬(SYD)의 각 비트가 반전된 것은 S0B, S1B, S2B, S3B, S4B, S5B, S6B, 및 S7B로 표기된다.
도 9는 5c의 고속 DSF 생성기의 신드롬 체크 회로의 일부 예를 보여주는 도면이다. 신드롬 체크 회로(115b)는 신드롬(SYD)의 모든 비트(S0~S7)가 "0"인지(즉, all-zero인지)를 체크할 수 있다. 예를 들어, 신드롬 체크 회로(115b)는 신드롬(SYD)의 각 비트(예를 들어, S0~S7 각각)이 반전된 값인 S0B, S1B, S2B, S3B, S4B, S5B, S6B, 및 S7B에 대한 AND 연산을 수행하도록 구성될 수 있다. 이 경우, 2개의 입력 단자를 갖는 AND 게이트들 7개가 3단 구조로 연결됨으로써, 신드롬(SYD)의 모든 비트(S0~S7)가 "0"인지(즉, all-zero인지) 체크될 수 있다.
신드롬(SYD)의 모든 비트들(S0~S7)가 "0"인 경우, 도 9의 신드롬 체크 회로(115b)에 의해, 신드롬 정보(SYD_0)는 "1"로 출력되고, 신드롬(SYD)의 적어도 하나의 비트(S0~S7 중 적어도 하나)가 "1"인 경우, 도 9의 신드롬 체크 회로(115b)에 의해, 신드롬 정보(SYD_0)는 "0"로 출력될 것이다.
다시 말해서, 도 9의 신드롬 체크 회로(115b)에 의해, 신드롬 정보(SYD_0)가 "1"로 출력된 것은 신드롬(SYD)에 대응하는 읽기 데이터(RDT) 및 패리티 데이터(PRT)에 에러가 없음을 의미하고, 도 9의 신드롬 체크 회로(115b)에 의해, 신드롬 정보(SYD_0)가 "0"으로 출력된 것은 신드롬(SYD)에 대응하는 읽기 데이터(RDT) 및 패리티 데이터(PRT)에 에러가 존재함을 의미한다.
도 10은 5c의 고속 DSF 생성기의 패리티 에러 체크 회로의 일부 예를 보여주는 도면이다. 도 5c 및 도 10을 참조하면, 패리티 에러 체크 회로(115c)는 신드롬(SYD)을 기반으로 패리티 데이터(PRT)에 에러가 있는지 검출할 수 있다.
일 실시 예에서, 패리티 데이터(PRT)에 에러가 존재하는지 여부는 도 8를 참조하여 설명된 축약된 H-행렬(sim-H-mat)의 패리티 행렬(PR) 또는 도 7a를 참조하여 설명된 패리티 행렬(PR)을 기반으로 검출될 수 있다. 예를 들어, 패리티 에러 체크 회로(115b)는 복수의 AND 연산 회로들(AS10~AS17)을 포함할 수 있다. 복수의 AND 연산 회로들(AS10~AS17)각각은 도 8를 참조하여 설명된 축약된 H-행렬(sim-H-mat)의 패리티 행렬(PR) 또는 도 7a를 참조하여 설명된 패리티 행렬(PR)을 기반으로 신드롬(SYD)의 각 비트(S0~S7)와 연결될 수 있다.
좀 더 상세한 예로서, 제10 AND 연산 회로(AS10)는 패리티 행렬(PR)의 제0열(즉, [1, 0, 0, 0, 0, 0, 0, 0]T)과 대응되도록, 신드롬(SYD)의 각 비트들과 연결될 수 있다. 즉, 제10 AND 연산 회로(AS10)는 S0, S1B, S2B, S3B, S4B, S5B, S6B, 및 S7B를 입력들로서 수신하고, 수신된 입력들이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(즉, 적어도 하나가 0인 경우), "0"을 출력한다. 제11 AND 연산 회로(AS11)는 패리티 행렬(PR)의 제1 열(즉, [0, 1, 0, 0, 0, 0, 0, 0]T)과 대응되도록, 신드롬(SYD)의 각 비트들과 연결될 수 있다. 즉, 제10 AND 연산 회로(AS10)는 S0B, S1, S2B, S3B, S4B, S5B, S6B, 및 S7B를 입력들로서 수신하고, 수신된 입력들이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(즉, 적어도 하나가 0인 경우), "0"을 출력한다. 마찬가지로, 제12 내지 제17 AND 연산 회로들(A12~AS17)은 각각 패리티 행렬(PR)의 제2 내지 제7 열들과 대응되도록, 신드롬(SYD)의 각 비트들과 연결되며, 각각의 입력이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(즉, 적어도 하나가 0인 경우), "0"을 출력한다.
즉, 복수의 AND 연산 회로들(AS10~AS17)을 통해, 신드롬(SYD)이 패리티 행렬(PR)의 각 열과 비교되고, 신드롬(SYD)과 동일한 비트들의 열이 존재하는지 판별될 수 있다. 패리티 행렬(PR)의 열들 중 신드롬(SYD)과 동일한 열이 존재하는 것은, 패리티 데이터(PRT)에 에러가 존재함을 의미할 수 있다.
패리티 에러 체크 회로(115c)는 복수의 OR 게이트들을 포함하고, 복수의 OR 게이트들을 통해, 복수의 AND 연산 회로들(AS10~AS17)의 출력들에 대한 OR 연산을 수행하여, 패리티 에러 정보(PRT_ERR)를 출력할 수 있다. 일 실시 예에서, 복수의 AND 연산 회로들(AS10~AS17)의 출력들 중 적어도 하나가 "1"인 경우, 패리티 에러 정보(PRT_ERR)는 "1"이고, 복수의 AND 연산 회로들(AS10~AS17)의 출력들 모두가 "0"인 경우, 패리티 에러 정보(PRT_ERR)는 "0"이다.
일 실시 예에서, 패리티 에러 정보(PRT_ERR)가 "1"인 것은 신드롬(SYD)과 대응하는 패리티 데이터(PRT)에 에러가 존재함을 가리키고, 패리티 에러 정보(PRT_ERR)가 "0"인 것은 신드롬(SYD)과 대응하는 패리티 데이터(PRT)에 에러가 없음을 가리킨다.
도 11은 5c의 고속 DSF 생성기의 고속 데이터 에러 체크 회로의 일부 예를 보여주는 도면이다. 도 5c 및 도 11을 참조하면, 고속 데이터 에러 체크 회로(115e)는 신드롬(SYD)을 기반으로 데이터에 에러가 존재하는지 판별할 수 있다.
일 실시 예에서, 데이터에 에러가 존재하는지 여부는 도 8를 참조하여 설명된 축약된 H-행렬(sim-H-mat)을 기반으로 검출될 수 있다. 예를 들어, 고속 데이터 에러 체크 회로(115e)는 복수의 AND 연산 회로들(AS20~AS2f)을 포함할 수 있다. 복수의 AND 연산 회로들(AS20~AS2f) 각각은 도 8를 참조하여 설명된 축약된 H-행렬(sim-H-mat)을 기반으로 신드롬(SYD)의 일부 비트들(S3~S7)과 연결될 수 있다.
좀 더 상세한 예로서, 제20 AND 연산 회로(AS20)는 도 8의 축약된 H-행렬(sim-H-mat)의 제B00 부분 행렬(B00)의 열들(즉, [1, 1, 0, 0, 0]T)에 대응하도록, 신드롬(SYD)의 일부 비트들(S3~S7)과 연결될 수 있다. 즉, 제20 AND 연산 회로(AS20)는 S3, S4, S5B, S6B, 및 S7B를 입력들로서 수신하고, 수신된 입력들이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(즉, 적어도 하나가 0인 경우), "0"을 출력한다. 제21 AND 연산 회로(AS21)는 도 8의 축약된 H-행렬(sim-H-mat)의 제B01 부분 행렬(B01)의 열들(즉, [0, 0, 1, 1, 1]T)에 대응하도록, 신드롬(SYD)의 일부 비트들(S3~S7)과 연결될 수 있다. 즉, 제21 AND 연산 회로(AS20)는 S3B, S4B, S5, S6, 및 S7를 입력들로서 수신하고, 수신된 입력들이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(즉, 적어도 하나가 0인 경우), "0"을 출력한다. 마찬가지로, 제22 내지 제22f AND 연산 회로들(AS22~AS2f)은 각각 도 8의 축약된 H-행렬(sim-H-mat)의 제B02 내지 제B15 부분 행렬들(B00~B15)의 열들에 대응하도록 신드롬(SYN)의 일부 비트들(S3~S7)과 연결된다. 제22 내지 제22f AND 연산 회로들(AS22~AS2f) 각각은, 수신된 입력들이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(즉, 적어도 하나가 0인 경우), "0"을 출력한다.
즉, 복수의 AND 연산 회로들(AS20~AS2f)을 통해, 신드롬(SYD)의 일부 비트들(예를 들어, S3~S7)이 축약된 H-행렬(sim-H-mat)의 각 열 또는 각 부분 행렬과 비교되고, 신드롬(SYD)의 일부 비트들(S3~S7)과 동일한 열이 존재하는지 판별될 수 있다. 축약된 H-행렬(sim-H-mat)에서, 신드롬(SYD)의 일부 비트들(S3~S7)과 동일한 열이 존재하는 것은 읽기 데이터(RDT)에 에러가 존재함을 의미할 수 있다. 단, 축약된 H-행렬(sim-H-mat)을 통해, 신드롬(SYD)의 일부 비트들만 비교되기 때문에, 에러의 발생 위치는 검출되지 않는다.
고속 데이터 에러 체크 회로(115e)는 복수의 OR 게이트들을 더 포함할 수 있다. 고속 데이터 에러 체크 회로(115e)는 복수의 OR 게이트들을 통해, 복수의 AND 연산 회로들(AS20~AS2f)의 출력들에 대한 OR 연산을 수행하여, 데이터 에러 정보(DT_ERR)를 출력할 수 있다. 일 실시 예에서, 복수의 AND 연산 회로들(AS20~AS2f)의 출력들 중 적어도 하나가 "1"인 경우, 데이터 에러 정보(DT_ERR)는 "1"로 출력되고, 복수의 AND 연산 회로들(AS20~AS2f)의 출력들 모두가 "0"인 경우, 데이터 에러 정보(DT_ERR)는 "0"으로 출력된다.
일 실시 예에서, 데이터 에러 정보(DT_ERR)가 "1"인 것은 읽기 데이터(RDT)에 에러가 있음을 가리키고, 데이터 에러 정보(DT_ERR)가 "0"인 것은 읽기 데이터(RDT)에 에러가 없음을 가리킨다.
도 12는 5c의 고속 DSF 생성기의 DST 검출 회로의 일부 예를 보여주는 도면이다. 도 5c 및 도 12를 참조하면, DST 검출 회로(115d)는 신드롬 체크 회로(115b)로부터 신드롬 정보(SYD_0)를 수신하고, 패리티 에러 체크 회로(115c)로부터 패리티 에러 정보(PRT_ERR)를 수신하고, 고속 데이터 에러 체크 회로(115e)로부터 데이터 에러 정보(DT_ERR)를 수신할 수 있다.
DST 검출 회로(115d)는 OR 게이트, INV 게이트들, 및 AND 게이트들을 포함할 수 있다. DST 검출 회로(115d)는 OR 게이트, INV 게이트들, 및 AND 게이트를 통해, 신드롬 정보(SYD_0) 및 패리티 에러 정보(PR_ERR)에 대한 OR 연산을 수행하고, OR 연산의 결과의 반전 값 및 데이터 에러 정보(DT_ERR)의 반전 값에 대한 AND 연산을 수행함으로써, 디코딩 상태 플래그(DSF)를 생성할 수 있다.
생성된 디코딩 상태 플래그(DSF)가 "1"인 것은 디코딩 상태가 UE임을 가리키고, 디코딩 상태 플래그(DSF)가 "0"인 것은 디코딩 상태가 CE 또는 NE임을 가리킨다.
예를 들어, 도 12에 도시된 DST 검출 회로(115d)에 따르면, 신드롬 정보(SYN_0)가 "0"이고, 패리티 에러 정보(PRT_ERR)가 "0"이고, 데이터 에러 정보(DR_ERR)가 "0"인 경우, 디코딩 상태 플래그(DSF)가 "1"일 것이다. 다시 말해서, "0"의 신드롬 정보(SYN_0)에 의해, 읽기 데이터(RDT) 또는 패리티 데이터(PRT)에 에러가 존재함이 확인되고, "0"의 패리티 에러 정보(PRT_ERR)에 의해, 패리티 데이터(PRT)에 에러가 없음이 확인되고, "0"의 데이터 에러 정보(DT_ERR)에 의해, 데이터에 에러가 없는 것으로 확인된 경우, 각 정보에 대한 조건이 서로 부합되지 않기 때문에, 최종 출력되는 에러 정정된 읽기 데이터(RDT_cor)는 정정할 수 없는 에러를 포함하는 것(즉, 디코딩 상태가 UE임)으로 판별될 수 있다. 상술된 경우 이외의 나머지 경우들에서, 디코딩 상태 플래그(DSF)는 "0"으로 출력되며, 이 때 최종 출력되는 에러 정정된 읽기 데이터(RDT_cor)가 정상 데이터이거나 또는 에러가 정상적으로 정정된 데이터(즉, 디코딩 상태가 CE 또는 NE)인 것으로 판별될 수 있다.
상술된 바와 같이, 본 발명에 따르면 고속 DSF 생성기(115)는 신드롬 디코딩 회로(112)에 의해 생성되는 에러 벡터(ERV) 없이, 신드롬(SYD)을 사용하여, 디코딩 상태 플래그(DSF)를 생성할 수 있다. 이 경우, 고속 DSF 생성기(115)는 신드롬 디코딩 회로(112)와 병렬적으로 동작하기 때문에, ECC 디코더(ECC-DEC-1)를 위한 전체적인 지연 시간이 단축될 수 있다. 또한, 고속 DSF 생성기(115)의 고속 데이터 에러 체크 회로(115e)는 신드롬(SYD)의 일부 비트들을 축약된 H-행렬(sim-H-mat)과 비교하기 때문에, 신드롬(SYD)의 각 비트에 대한 배선 복잡도가 감소될 수 있다.
도 13은 도 5c의 고속 DSF 생성기의 DSF 검출 회로의 일부 예를 보여주는 블록도이다. 설명의 편의를 위해, 도 12를 참조하여 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 5c 및 도 13을 참조하여, DSF 검출 회로(115d-1)는 도 12를 참조하여 설명된 바와 유사한 방법을 통해, 1b의 디코딩 상태 플래그(DSF)를 생성할 수 있다. 이 때, 생성된 제1 디코딩 상태 플래그(DSF1)는 도 12를 참조하여 설명된 디코딩 상태 플래그(DSF)와 유사할 수 있다. 즉, 제1 디코딩 상태 플래그(DSF1)가 "1"인 것은 디코딩 상태가 UE인 것을 가리키고, 제1 디코딩 상태 플래그(DSF1)가 "0"인 것은 디코딩 상태가 NE 또는 CE인 것을 가리킨다.
도 13의 DSF 검출 회로(115d-1)는 신드롬 정보(SYD_0)를 반전하여, 1b의 제2 디코딩 상태 플래그(DSF2)를 생성할 수 있다. 즉, 제2 디코딩 상태 플래그(DSF2)가 "1"인 것은 읽기 데이터(RDT) 또는 패리티 데이터(PRT)에 에러가 포함되었음을 가리키고, 제2 디코딩 상태 플래그(DSF2)가 "0"인 것은 읽기 데이터(RDT) 및 패리티 데이터(PRT)에 에러가 없음을 가리킬 수 있다. 이는, 다시 말하면, 제2 디코딩 상태 플래그(DSF2)가 "1"인 것은 디코딩 상태가 CE 또는 UE임을 가리키고, 제2 디코딩 상태 플래그(DSF2)가 "0"인 것은 디코딩 상태가 NE임을 가리킨다.
도 13의 DSF 검출 회로(115d-1)는 제1 및 제2 디코딩 상태 플래그들(DSF1, DSF2)을 조합하여, 2b의 디코딩 상태 플래그(DSF)를 출력할 수 있다. 예를 들어, 디코딩 상태 플래그(DSF)의 LSB(least significant bit)는 제1 디코딩 상태 플래그(DSF1)DP 대응하고, MSB(most significant bit)는 제2 디코딩 상태 플래그(DSF2)에 대응할 수 있다. 이 경우, 2b의 디코딩 상태 플래그(DSF)가 "00"인 것은 디코딩 결과가 NE임을 의미하고, "10"인 것은 디코딩 결과가 CE임을 의미하고, "11"인 것은 디코딩 결과가 UE임을 의미할 수 있다. 상술된 비트 조합 및 비트 값들은 단순 예시이며, ECC 디코더의 구현 방식에 따라 다양하게 변형될 수 있음이 이해될 것이다.
상술된 바와 같이, DSF 검출 회로(115d-1)는 2b의 디코딩 상태 플래그(DSF)를 생성함으로써, 디코딩 결과(예를 들어, UE, CE, 및 NE)를 메모리 컨트롤러(11)로 알릴 수 있다.
도 14는 본 발명의 실시 예에 따른 축약된 H-행렬의 일부 예를 보여주는 도면이다. 일 실시 예에서, 도 8을 참조하여 설명된 축약된 H-행렬(sim-H-mat)은 신드롬 디코딩 회로(112)에 의해 사용되는 H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)의 정보를 기반으로 생성된다. 반면에, 도 14에 도시된 UE 판정용 축약된 H-행렬(sim-H-mat-UE)은 H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)의 정보에 포함되지 않는 정보를 기반으로 생성될 수 있다. 예를 들어, 도 8을 참조하여 설명된 바와 같이, 축약된 H-행렬(sim-H-mat)에 포함된 제B00 내지 제B15 부분 행렬들(B00~B15)은 각각 [11000]T, [00111]T, [10100]T, [01011]T, [01100]T, [10011]T, [11100]T, [00011]T, [100111]T, [01101]T, [01010]T, [10101]T, [11010]T, [00101]T, [00110]T, 및 [11001]T의 열로 구현될 수 있으며, 제B00 내지 제B15 부분 행렬들(B00~B15)은 H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)를 구성할 수 있다.
반면에, 도 14에 도시된 바와 같이, UE 판정용 축약된 H-행렬(sim-H-Mat-UE)은 [01001]T, [01110]T, [10001]T, [10110]T, [10000]T, [01000]T, [00100]T, [00010]T, [00001]T, [01111]T, [10111]T, [11011]T, [11101]T, [11110]T, 및 [11111]T 과 같은 부분 행렬들로 구현될 수 있다. UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 부분 행렬들은 H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)에 포함된 부분 행렬들(즉, B00~B15)과 다른 열들로 구현될 수 있다. 좀 더 상세한 예로서, 도 7a 내지 도 7c를 참조하여 설명된 H-행렬(H-mat)의 제2 부분 행들(2nd sub-Rows)에 포함된 각 열은 총 16개(패리티 행렬(PR) 제외)로 구분된다. 이 때, 5개의 비트들을 통한 비트열의 조합은 총 25=32개이므로, 부분 행렬들(즉, B00~B15)에 대응되지 않는 비트 열들은 32-16 = 16개의 열들로 정리된다. 이 때, [00000]T의 열은 신드롬(SYD)이 all-zero인 경우(즉, 에러가 없는 경우)와 대응될 수 있으므로, UE 판정용 축약된 H-행렬(sim-H-mat-UE)에서 제외된다. 따라서, UE 판정용 축약된 H-행렬(sim-H-mat-UE)은 상술된 10개의 열들로 각각 구성된 부분 행렬들 및 패리티 행렬(PR)를 포함할 수 있다.
이 경우, 신드롬(SYD)의 제3 내지 제7 비트들(S3~S7)의 열이 UE 검출용 축약된 H-행렬(sim-H-mat-UE)의 열들 중 적어도 하나와 일치하는 것은, 신드롬(SYD)이 H-행렬(H-mat)의 열들 모두와 일치하지 않음(즉, 에러 위치가 판별되지 않음)을 의미한다. 따라서, 신드롬(SYD)의 제3 내지 제7 비트들(S3~S7)의 열과 UE 검출용 축약된 H-행렬(sim-H-mat-UE)의 열들이 비교됨으로써, 데이터의 에러 발생 유무가 판별될 수 있다. 또는, 일부 경우에서, 신드롬(SYD)의 제3 내지 제7 비트들(S3~S7)의 열과 UE 검출용 축약된 H-행렬(sim-H-mat-UE)의 열들이 비교됨으로써, 데이터에 정정 불가능한 에러가 포함되었는지, 즉, 디코딩 결과가 UE인지 판별될 수 있다.
도 15는 도 14의 UE 판정용 축약된 H-행렬을 사용하는 고속 데이터 에러 체크 회로의 일부 예를 보여주는 도면이다. 도 15를 참조하면, 고속 데이터 에러 체크 회로(115e-2)는 복수의 AND 연산 회로들(AS30~AS3e)을 포함할 수 있다. 복수의 AND 연산 회로들(AS30~AS3e) 각각은 도 14를 참조하여 설명된 UE 판정용 축약된 H-행렬(sim-H-mat-UE)을 기반으로, 신드롬(SYD)의 일부 비트들(S3~S7)과 연결될 수 있다.
예를 들어, 제30 AND 연산 회로(AS30)는 도 14의 UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 [01001]T에 대응하도록 신드롬(SYD)의 일부 비트들(S3~S7)과 연결될 수 있다. 즉, 제30 AND 연산 회로(AS30)는 S3B, S4, S5B, S6B, 및 S7을 입력들로서 수신하고, 수신된 입력들이 모두 "1"인 경우, "1"을 출력하고, 그렇지 않은 경우(적어도 하나가 "0"인 경우), "0"을 출력한다. 나머지 AND 연산 회로들(AS31~AS3e)은 도 14를 참조하여 설명된 UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 열들과 각각 대응하도록, 일부 비트들(S3~S7)과 연결되고, 입력 신호들이 모두 "1"인 경우, "1을 출력하고, 그렇지 않은 경우(적어도 하나가 "0"인 경우), "0"을 출력한다.
고속 데이터 에러 체크 회로(115e-2)는 복수의 OR 게이트들을 포함할 수 있다. 고속 데이터 에러 체크 회로(115e-2)는 복수의 OR 게이트들을 통해 복수의 AND 연산 회로들(AS30~AS3a)의 출력에 대한 OR 연산을 수행하여, 데이터 에러 정보(DT_ERR-2)를 출력할 수 있다. 일 실시 예에서, 복수의 AND 연산 회로들(AS30~AS3a)의 출력들 중 적어도 하나가 "1"인 경우, 데이터 에러 정보(DT_ERR-2)는 "1"이고, 그렇지 않은 경우(즉, 모든 출력들이 "0"인 경우), 데이터 에러 정보(DT_ERR-2)는 "0"이다.
일 실시 예에서, 데이터 에러 정보(DT_ERR-2)가 "1"인 것은 읽기 데이터(RDT)에 에러가 존재하거나 또는 패리티 데이터(PRT)에 에러가 존재함을 가리킬 수 있다. 데이터 에러 정보(DT_ERR-2)가 "0"인 것은 읽기 데이터(RDT)에 에러가 존재하지 않거나 또는 정정 가능한 에러가 존재함을 가리킬 수 있다.
도 16은 도 15의 고속 데이터 에러 체크 회로로부터의 데이터 에러 정보를 사용하는 DSF 검출 회로의 일부 예를 보여주는 도면이다. 도 14, 도 15, 및 도 16을 참조하면, DSF 검출 회로(115d-2)는 INV 게이트들 및 AND 게이트들을 포함할 수 있다. DSF 검출 회로(115d-2)는제1 INV 게이트를 통해, 신드롬 정보(SYN_0)의 반전시킬 수 있다. DSF 검출 회로(115d-2)는 제1 AND 게이트를 통해, 제1 INV 게이트의 출력(즉, 반전된 신드롬 정보) 및 데이터 에러 정보(DT_ERR-2)에 대한 AND 연산을 수행할 수 있다. DSF 검출 회로(115d-2)는, 제2 INV 게이트를 통해, 패리티 에러 정보(PRT_ERR)를 반전시킬 수 있다. 일 실시 예에서, 패리티 에러 정보(PRT_ERR)는 도 10을 참조하여 설명된 패리티 에러 체크 회로(115c)에 의해 연산될 수 있으며, 패리티 데이터(PRT)에 대한 1-비트 에러 유무를 가리키는 정보이다.
DSF 검출 회로(115d-2)는 제2 AND 게이트를 통해, 제1 AND 게이트의 출력 및 제2 INV 게이트의 출력에 대한 AND 연산을 수행하여, 디코딩 상태 정보(DSF)를 생성할 수 있다. 디코딩 상태 정보(DSF)가 "1"인 것은, 디코딩 상태가 UE임을 가리키고, 디코딩 상태 정보(DSF)가 "0"인 것은 디코딩 상태가 NE 또는 CE 임을 가리킬 수 있다.
예를 들어, 디코딩 상태 정보(DSF)가 "1"인 것은, 신드롬 정보(SYD_0)가 "0"이고, 데이터 에러 정보(DT_ERR-2)가 "1"이고, 패리티 에러 정보(PR_ERR)가 "0"인 경우이다. 이는, 신드롬 정보(SYD_0)에 의해, 데이터 및 패리터 데이터에 에러가 있음이 검출되고, 데이터 에러 정보(DT_ERR-2)에 데이터 또는 패리터 데이터에 정정 불가능한 에러가 존재함이 검출되고, 패리티 에러 정보(PR_ERR)에 의해 패리티 데이터(PRT)에 에러가 없음이 검출된 것을 의미한다. 이 경우, ECC 디코딩 결과는 UE일 것이다. 반면에, 상술된 경우를 제외한 나머지 경우들에서는, ECC 디코딩 결과는 NE 또는 CE일 것이다.
일 실시 예에서, 신드롬 정보(SYD_0)에 의해, 데이터 및 패리터 데이터에 에러가 있음이 검출되고, 데이터 에러 정보(DT_ERR-2)에 데이터 또는 패리터 데이터에 정정 불가능한 에러가 존재함이 검출되고, 패리티 에러 정보(PR_ERR)에 의해 패리티 데이터(PRT)가 에러가 존재함이 검출된 경우, 디코딩 상태 플래그(DSF)는 "0"(즉, NE 또는 CE)일 것이다. 이 때, 패리티 데이터(PRT)에 포함된 에러는 1-비트 에러를 가리킬 수 있다. 만약, 패리티 데이터(PRT)에 포함된 에러가 2-비트를 초과하거나 또는 ECC 엔진의 에러 정정 능력을 초과하는 경우, 디코딩 상태 플래그(DSF)는 "1"(즉, UE)로 결정될 수 있다.
도 17은 도 15의 고속 데이터 에러 체크 회로로부터의 데이터 에러 정보를 사용하는 DSF 검출 회로의 일부 예를 보여주는 도면이다. 도 15 및 도 17을 참조하면, DSF 검출 회로(115d-3)는 도 16을 참조하여 설명된 바와 유사한 연산(즉,/SYD_0*DT_ERR-2)*/PR_ERR)을 통해 제1 디코딩 상태 플래그(DSF1)를 생성할 수 있다. DSF 검출 회로(115d-3)는 신드롬 정보(SYD_0)를 반전하여, 제2 디코딩 상태 플래그(DSF2)를 생성할 수 있다. DSF 검출 회로(115d-3)는 제1 및 제2 디코딩 상태 플래그들(DSF1, DSF2)을 조합하여, 2b의 디코딩 상태 플래그(DSF)를 생성할 수 있다. 1b의 제1 디코딩 상태 플래그(DSF1), 1b의 제2 디코딩 상태 플래그(DSF2), 및 2b의 디코딩 상태 플래그(DSF)는 각 값에 대한 의미는 도 13을 참조하여 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.
상술된 바와 같이, 본 발명에 따른 ECC 디코더(ECC-DEC)는 H-행렬의 일부 행들에 포함되지 않은 정보를 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다. 일 실시 예에서, 도 14 및 도 15을 참조하여 설명된 고속 데이터 에러 체크 회로(115e-2)는 UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 각 열을 신드롬(SYD)의 일부 비트들과 비교함으로써, 읽기 데이터(RDT)에 대한 에러 발생 유무를 판별할 수 있다. 이 때, UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 각 열은 H-행렬(H-mat)에 포함되지 않은 정보에 기반되므로, 신드롬(SYD)의 일부 비트들이 UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 열들 중 어느 하나와 동일하다는 것(즉, DT_ERR-2가 "1"로 출력됨)은 읽기 데이터(RDT)에 정정할 수 없는 에러가 포함되었음(즉, 디코딩 상태가 UE임)을 의미할 수 있고, 신드롬(SYD)의 일부 비트들이 UE 판정용 축약된 H-행렬(sim-H-mat-UE)의 열들 모두와 다르다는 것(즉, DT_ERR-2가 "0"로 출력됨)은 읽기 데이터(RDT)에 에러가 포함되어 있지 않거나 또는 정정할 수 있는 에러가 포함되었음(즉, 디코딩 상태가 NE 또는 CE임)을 의미할 수 있다. 즉, 도 14 및 도 15을 참조하여 설명된 고속 데이터 에러 체크 회로(115e-2)에 의해 생성된 데이터 에러 정보(DT_ERR-2)는 도 16 및 도 17을 참조하여 설명된 DSF 검출 회로(115d-2, 115d-3)를 경유하지 않고, 디코딩 상태 플래그(DSF)로서 사용될 수 있다.
일 실시 예에서, 상술된 ECC 디코더의 구성은 특정 H-행렬을 기반으로 구현된 것이며, H-행렬의 구조 및 특징에 따라, 본 발명에 따른 ECC 디코더(특히, 디코딩 상태 플래그 생성기)의 구성은 다양하게 변형될 수 있다.
도 18은 본 발명의 실시 예에 따른 축약된 H-행렬을 생성하는 방법을 설명하기 위한 순서도이다. 일 실시 예에서, 도 18의 순서도는, 메모리 장치(100)의 제조 단계에서, ECC 회로에 대한 설계 툴에 의해 수행될 수 있다.
도 18을 참조하면, S210 단계에서, H-행렬이 결정될 수 있다. 예를 들어, 메모리 장치(100)의 신뢰성 또는 성능에 따라, ECC 회로(110)(특히, ECC 디코더)에서 사용되는 H-행렬이 결정될 수 있다. 일 실시 예에서, H-행렬은 ECC 회로(110)의 구현 방식, 에러 정정 알고리즘, 또는 에러 정정 능력 등과 같은 다양한 요인들을 고려하여 다양한 방식으로 결정될 수 있다.
S220 단계에서, H-행렬의 특성 또는 부분 정보를 기반으로, 축약된 H-행렬(sim-H-mat)이 추출될 수 있다. 예를 들어, H-행렬이 도 6, 도 7a, 도 7b, 및 도 7c를 참조하여 설명된 H-행렬(H-mat)인 것으로 가정한다. 이 경우, H-행렬은 8개의 열들 단위로, 제1 부분 행들(S0~S3에 대응하는 행들)은 반복되는 동일한 부분 행렬들로 구현되고, 제2 부분 행들(S4~S7에 대응하는 행들)은 동일한 열들을 포함하는 복수의 부분 행렬들로 구현된다. 이 경우, 신드롬(SYD)을 H-행렬(H-mat) 전체 열을 신드롬(SYD)과 비교하는 대신에, 일부 정보(즉, 제2 부분 행들(S4~S7에 대응하는 행들))만 신드롬(SYD)의 일부 비트들(S4~S7)과 비교함으로써, 신드롬(SYD)이 H-행렬(H-mat)의 열들 중 적어도 하나와 매칭되는지(즉, 읽기 데이터(RDT) 또는 패리티 데이터(PRT)에 에러가 존재하는지) 판별될 수 있다. 즉, 신드롬(SYD)의 일부 비트 및 H-행렬(H-mat)의 일부 정보만 비교함으로써, 읽기 데이터(RDT) 또는 패리티 데이터(PRT)에 에러가 존재하는지 판별될 수 있다.
상술된 바와 같은 H-행렬(H-mat)의 특성은 H-행렬(H-mat)의 구현 방식에 따라 달라질 수 있으며, 특정 행 단위 또는 특정 열 단위로 구분되지 않을 수 있다. 예를 들어, 일부 H-행렬(H-mat)을 기반으로 생성된 축약된 H-행렬(sim-H-mat)에서, 제0 열에 대하여, 신드롬(SYD)의 S0, S1, S2, S3, 및 S4에 대응하는 값들이 비교될 수 있고, 제1 열에 대하여, 신드롬(SYD)의 S0, S2, S4, S6, 및 S7에 대응하는 값들이 비교될 수 있다. 일 실시 예에서, 읽기 데이터(RDT)의 크기가 128b인 경우, H-행렬의 크기는 8 × 128 + 8 × 8(패리티 행렬)의 크기를 가질 수 있다. 이 때, H-행렬을 8b 단위로 구분하는 경우, 축약된 H-행렬(sim-H-mat)은 (8-log28) × (128/8)의 크기를 가질 수 있다. 또는 H-행렬을 16b 단위로 구분하는 경우, 축약된 H-행렬(sim-H-mat)은 (8-log216) × (128/16)의 크기를 가질 수 있다.
일 실시 예에서, 축약된 H-행렬(sim-H-mat)은 H-행렬에 포함된 부분 정보를 기반으로 생성될 수 있다. 또는 축약된 H-행렬(sim-H-mat)은 H-행렬에 포함된 부분 정보와 다른 정보(즉, H-행렬에 포함되지 않은 부분 정보)를 기반으로 생성될 수 있다. 이 경우, 축약된 H-행렬(sim-H-mat)은 도 14 및 도 15를 참조하여 설명된 바와 같이 추출 또는 생성될 수 있으며, 이 경우, 축약된 H-행렬을 통해 디코딩 상태가 UE임이 판별될 수 있다.
일 실시 예에서, 축약된 H-행렬(sim-H-mat)은 H-행렬의 특정 열들에 대한 다양한 로직 연산(OR, AND, XOR 등)을 통해 생성될 수 있다.
S330 단계에서, 축약된 H-행렬(sim-H-mat)을 기반으로, 고속 DSF 생성기가 구성될 수 있다. 예를 들어, 도 1 내지 도 17을 참조하여 설명된 바와 같이, 축약된 H-행렬(sim-H-mat)을 기반으로, 고속 데이터 에러 체크 회로가 구현될 수 있고, 고속 DSF 생성기는 고속 데이터 에러 체크 회로의 출력(즉, 데이터 에러 정보), 신드롬 체크 회로의 출력(즉, 신드롬 정보), 및 패리티 에러 체크 회로의 출력(즉, 패리티 에러 정보)를 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다.
일 실시 예에서, ECC 회로의 구현 방식 또는 성능에 따라 H-행렬은 다양하게 가변될 수 있으며, H-행렬의 변형에 따라, 축약된 H-행렬의 구현 방식 또한 다양하게 변형될 수 있음이 이해될 것이다.
도 19는 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 19를 참조하면, 메모리 시스템(1000)은 메모리 컨트롤러(1100), ECC 회로(1200), 및 메모리 장치(1300)를 포함할 수 있다. 메모리 컨트롤러(1100)는 메모리 장치(1300)에 데이터를 저장하거나 또는 메모리 장치(1200)에 저장된 데이터를 읽을 수 있다.
일 실시 예에서, 메모리 컨트롤러(1100) 및 메모리 장치(1300) 사이의 데이터 경로에, ECC 회로(1200)가 위치할 수 있다. ECC 회로(1200)는 메모리 컨트롤러(110) 및 메모리 장치(1300) 사이에서 송수신되는 데이터의 에러를 정정하도록 구성될 수 있다. 일 실시 예에서, ECC 회로(1200)는 도 1 내지 도 18을 참조하여 설명된 동작 방법을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다.
도 20은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 20을 참조하면, 메모리 시스템(2000)은 메모리 컨트롤러(2100) 및 메모리 장치(2200)를 포함할 수 있다. 메모리 컨트롤러(2100)는 ECC 회로(2110)를 포함할 수 있다. ECC 회로(2110)는 메모리 장치(2200)로 저장될 데이터에 대한 패리티 데이터를 생성하거나 또는 메모리 장치(2200)로부터 읽은 데이터 및 패리티 데이터를 기반으로 읽은 데이터의 에러를 정정하도록 구성될 수 있다. ECC 회로(2110)는 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다.
도 21은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 21을 참조하면, 메모리 시스템(3000)은 메모리 컨트롤러(3100) 및 메모리 장치(3200)를 포함할 수 있다. 메모리 컨트롤러(3100)는 컨트롤러 ECC 회로(3110)를 포함할 수 있다. 컨트롤러 ECC 회로(3110)는 메모리 장치(3200)에 저장될 쓰기 데이터에 대한 제1 패리티를 생성하고, 메모리 장치(3200)로부터 수신된 읽기 데이터 및 제1 패리티를 기반으로 읽기 데이터의 에러를 정정할 수 있다.
메모리 장치(3200)는 메모리 ECC 회로(3210)를 포함할 수 있다. 메모리 ECC 회로(3210)는 메모리 컨트롤러(3100)로부터 수신된 쓰기 데이터 및 제1 패리티에 대한 제2 패리티를 생성하고, 메모리 장치(3200)에 저장된 읽기 데이터 및 제1 패리티, 및 제2 패리티를 기반으로 읽기 데이터 및 제1 패리티의 에러를 정정할 수 있다.
일 실시 예에서, 컨트롤러 ECC 회로(3110) 및 메모리 ECC 회로(3210) 각각은 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 디코딩 상태 필드(DSF)를 생성할 수 있다.
일 실시 예에서, 도 1 내지 도 18을 참조하여 설명된 실시 예들에서, ECC 회로(110)는 메모리 장치(100) 내에 포함된 OD-ECC(on-die ECC) 회로인 것으로 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 19 내지 도 21을 참조하여 설명된 바와 같이, ECC 회로는 메모리 장치 내부 또는 외부에 위치하거나 또는 메모리 컨트롤러 내에 위치할 수 있다.
도 22는 본 발명의 실시 예에 따른 메모리 패키지의 일부 예를 보여주는 도면이다. 도 22를 참조하면, 메모리 패키지(4000)는 복수의 메모리 다이들(4110~4140) 및 버퍼 다이(4200)를 포함할 수 있다. 복수의 메모리 다이들(4110~4140) 각각은 DRAM 장치일 수 있다. 복수의 메모리 다이들(4110~4140) 및 버퍼 다이(4200)는 적층 구조로 구현될 수 있으며, TSV(through silicon via)를 통해 서로 전기적으로 연결되고, 서로 통신할 수 있다.
일 실시 예에서, 메모리 패키지(4000)는 Package on Package(PoP), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 하나의 반도체 패키지로 제공될 수 있다
버퍼 다이(4200)는 외부 호스트 장치(또는 메모리 컨트롤러)와 통신할 수 있다. 버퍼 다??(4200)는 복수의 메모리 다이들(4110~4140)에 저장될 데이터를 임시 저장하거나 또는 복수의 메모리 다이들(4110~4140)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. 일 실시 예에서, 버퍼 다이(4200)는 ECC 회로(4210)를 포함할 수 있다. ECC 회로(4210)는 메모리 다이들(4110~4140)에 저장될 데이터에 대한 패리티를 생성하거나 또는 메모리 다이들(4110~4140)로부터 읽어진 데이터의 에러를 정정할 수 있다. 일 실시 예에서, ECC 회로(4210)는 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 구현되거나 또는 디코딩 상태 플래그(DSF)를 생성할 수 있다.
도 23은 본 발명의 실시 예에 따른 메모리 패키지의 일부 예를 보여주는 도면이다. 도 23을 참조하면, 메모리 패키지(5000)는 복수의 메모리 다이들(5110~5140) 및 호스트 다이(5200)를 포함할 수 있다. 복수의 메모리 다이들(5110~5140)은 마이크로 범프(MCB)를 통해 서로 전기적으로 연결되고, 적층 구조를 가질 수 있고, 호스트 다이(5200) 상부에 직접 적층될 수 있다. 호스트 다이(5200)는 SoC, CPU, 또는 GPU일 수 있다. 일 실시 예에서, 복수의 메모리 다이들(5110~5140) 각각 또는 호스트 다이(5200)는 도 1 내지 도 18을 참조하여 설명된 ECC 회로를 포함할 수 있다.
도 24는 본 발명에 따른 메모리 장치가 적용된 메모리 모듈(6000)을 예시적으로 보여주는 블록도이다. 도 24를 참조하면, 메모리 모듈(6000)은 RCD(6100)(Register Clock Driver), 복수의 메모리 장치들(6210~6290), 및 복수의 데이터 버퍼들(DB)을 포함할 수 있다.
RCD(6100)는 외부 장치(예를 들어, 호스트 또는 메모리 컨트롤러))로부터 커맨드/어드레스(CA) 및 클럭 신호(CK)를 수신할 수 있다. RCD(6100)는 수신된 신호들을 기반으로, 커맨드/어드레스(CA)를 복수의 메모리 장치들(6210~6290)로 전달하고, 복수의 데이터 버퍼들(DB)을 제어할 수 있다.
복수의 메모리 장치들(6210~6290) 각각은 메모리 데이터 라인들(MDQ)을 통해 복수의 데이터 버퍼들(DB)과 각각 연결될 수 있다.
일 실시 예에서, 복수의 메모리 장치들(6210~6290) 각각은 도 1 내지 도 18을 참조하여 설명된 ECC 회로를 포함하고, 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다. 복수의 데이터 버퍼들(DB)은 복수의 데이터 라인들(DQ)을 통해 외부 장치(예를 들어, 호스트 또는 메모리 컨트롤러)와 데이터를 송수신할 수 있다.
일 실시 예에서, 도 24에 도시된 메모리 모듈(6000)은 LR-DIMM(Load Reduced Dual In-line Memory Module)의 폼 팩터일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 메모리 모듈(6000)은 복수의 데이터 버퍼들(DB)이 생략된 RDIMM(Registered DIMM)의 폼 팩터를 가질 수 있다.
일 실시 예에서, 메모리 모듈(6000)은 복수의 메모리 장치들(6210~6290) 외부에 위치한 ECC 회로를 더 포함할 수 있고, 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 디코딩 상태 플래그(DSF)를 생성하도록 구성될 수 있다.
일 실시 예에서, 복수의 메모리 장치들(6210~6290) 중 어느 하나는 패리티 데이터를 저장하도록 구성될 수 있다. 패리티 데이터는 외부 장치(예를 들어, 호스트 또는 메모리 컨트롤러)로부터 제공될 수 있으며, 이 경우, 외부 장치는 도 1 내지 도 18을 참조하여 설명된 ECC 회로를 포함하거나 또는 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 디코딩 상태 플래그(DSF)를 생성할 수 있다.
도 25은 본 발명의 일 실시예에 따른 스토리지(storage) 장치가 적용된 시스템(7000)을 도시한 도면이다. 도 25의 시스템(7000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 25의 시스템(7000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 25을 참조하면, 시스템(7000)은 메인 프로세서(main processor)(7100), 메모리(7200a, 7200b) 및 스토리지 장치(7300a, 7300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(7410), 사용자 입력 장치(user input device)(7420), 센서(7430), 통신 장치(7440), 디스플레이(7450), 스피커(7460), 전력 공급 장치(power supplying device)(7470) 및 연결 인터페이스(connecting interface)(7480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(7100)는 시스템(7000)의 전반적인 동작, 보다 구체적으로는 시스템(7000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(7100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(7100)는 하나 이상의 CPU 코어(7110)를 포함할 수 있으며, 메모리(7200a, 7200b) 및/또는 스토리지 장치(7300a, 7300b)를 제어하기 위한 컨트롤러(7120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(7100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(7130)를 더 포함할 수 있다. 이와 같은 가속기(7130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(7100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(7200a, 7200b)는 시스템(7000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(7200a, 7200b)는 메인 프로세서(7100)와 동일한 패키지 내에 구현되는 것도 가능하다.
일 실시 예에서, 메모리(7200a, 7200b)는 도 1 내지 도 18을 참조하여 설명된 ECC 회로를 포함하는 메모리 장치일 수 있으며, 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로, 디코딩 상태 플래그(DSF)를 생성할 수 있다.
스토리지 장치(7300a, 7300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(7200a, 7200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(7300a, 7300b)는 스토리지 컨트롤러(7310a, 7310b)와, 스토리지 컨트롤러(7310a, 7310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(7320a, 7320b)를 포함할 수 있다. 비휘발성 메모리(7320a, 7320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(7300a, 7300b)는 메인 프로세서(7100)와는 물리적으로 분리된 상태로 시스템(7000)에 포함될 수도 있고, 메인 프로세서(7100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(7300a, 7300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(7480)와 같은 인터페이스를 통해 시스템(7000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(7300a, 7300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(7410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(7420)는 시스템(7000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(7430)는 시스템(7000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(7430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(7440)는 다양한 통신 규약에 따라 시스템(7000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(7440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(7450) 및 스피커(7460)는 시스템(7000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(7470)는 시스템(7000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(7000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(7480)는 시스템(7000)과, 시스템(7000)에 연결되어 시스템(7000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(7480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 메모리 장치에 있어서,
    제1 데이터 및 제1 패리티 데이터를 저장하도록 구성된 메모리 셀 어레이;
    상기 제1 데이터 및 제1 패리티 데이터를 기반으로 에러 정정 코드(Error Correction Code) 디코딩을 수행하여, 에러 정정된 데이터 및 디코딩 상태 플래그를 출력하도록 구성된 ECC 회로; 및
    상기 에러 정정된 데이터 및 상기 디코딩 플래그를 메모리 컨트롤러로 제공하도록 구성된 입출력 회로를 포함하고,
    상기 ECC 회로는:
    상기 제1 데이터 및 제1 패리티 데이터를 기반으로 신드롬을 생성하도록 구성된 신드롬 생성기;
    상기 신드롬을 디코딩하여 에러 벡터를 생성하도록 구성된 신드롬 디코딩 회로;
    상기 에러 벡터 및 상기 제1 데이터를 기반으로, 상기 에러 정정된 데이터를 생성하도록 구성된 정정 로직 회로; 및
    상기 에러 벡터 없이, 상기 신드롬을 기반으로 상기 디코딩 상태 플래그를 생성하도록 구성된 고속 디코딩 상태 플래그(DSF; decoding status flag) 생성기를 포함하는 메모리 장치.
  2. 제 1 항에 있어서,
    상기 신드롬 디코딩 회로 및 상기 고속 디코딩 상태 플래그 생성기는 병렬적으로 동작하는 메모리 장치.
  3. 제 1 항에 있어서,
    상기 신드롬 디코딩 회로는 상기 신드롬을 패리티-체크 행렬의 각 열과 비교함으로써, 상기 에러 벡터를 생성하는 메모리 장치.
  4. 제 3 항에 있어서,
    상기 고속 디코딩 상태 플래그 생성기는:
    상기 신드롬이 all-zero인지 판별하여 신드롬 정보를 출력하도록 구성된 신드롬 체크 회로;
    상기 신드롬을 패리티 행렬의 각 열과 비교함으로써, 제1 패리티 데이터의 에러를 판별하여 패리티 에러 정보를 출력하도록 구성된 패리티 에러 체크 회로;
    상기 신드롬의 일부를 축약된-패리티 체크 행렬의 각 열과 비교함으로써, 상기 제1 데이터 또는 제1 패리티 데이터의 에러를 판별하여 데이터 에러 정보를 출력하도록 구성된 고속 데이터 에러 체크 회로; 및
    상기 신드롬 정보, 상기 패리티 에러 정보, 및 상기 데이터 에러 정보를 기반으로 상기 디코딩 상태 플래그를 출력하도록 구성된 디코딩 상태 플래그 검출 회로를 포함하는 메모리 장치.
  5. 제 4 항에 있어서,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키고, 상기 패리티 에러 정보가 제1 패리티 데이터에 에러가 없음을 가리키고, 상기 데이터 에러 정보가 상기 제1 데이터 또는 제1 패리티 데이터의 에러가 없음을 가리키는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 정정할 수 없는 에러(uncorrectable error)가 있음을 가리키는 메모리 장치.
  6. 제 4 항에 있어서,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키고, 상기 패리티 에러 정보가 제1 패리티 데이터에 에러가 없음을 가리키고, 상기 데이터 에러 정보가 상기 제1 데이터 또는 제1 패리티 데이터의 에러가 없음을 가리키는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 정정할 수 없는 에러(uncorrectable error)가 있음을 가리키고,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키고, 상기 패리티 에러 정보가 제1 패리티 데이터에 에러가 없음을 가리키지 않거나 또는 상기 데이터 에러 정보가 상기 제1 데이터 또는 제1 패리티 데이터의 에러가 없음을 가리키지 않는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 정정할 수 있는 에러(correctable error)가 있음을 가리키고,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키지 않고, 상기 패리티 에러 정보가 제1 패리티 데이터에 에러가 없음을 가리키지 않거나 또는 상기 데이터 에러 정보가 상기 제1 데이터 또는 제1 패리티 데이터의 에러가 없음을 가리키지 않는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 에러가 포함되지 않음(non-error)을 가리키는 메모리 장치.
  7. 제 4 항에 있어서,
    상기 패리티 행렬은 n × n의 단위 행렬이고, 단 상기 n은 상기 신드롬에 포함된 비트들의 개수이고,
    상기 축약된 패리티-체크 행렬은 상기 신드롬 디코딩 회로에 의해 사용되는 상기 패리티-체크 행렬의 일부 행들의 정보만 포함하는 메모리 장치.
  8. 제 7 항에 있어서,
    상기 제1 데이터는 128b이고, 제1 패리티 데이터는 8b이고, 상기 신드롬은 8b이고, 상기 패리티-체크 행렬은 8×128의 크기를 갖고, 상기 축약된 패리티 체크 행렬은 (8-log2m)×(128×m)의 크기를 갖고, 상기 m은 1보다 큰 정수인 메모리 장치.
  9. 제 4 항에 있어서,
    상기 패리티 행렬은 n × n의 단위 행렬이고, 단 상기 n은 상기 신드롬에 포함된 비트들의 개수이고,
    상기 축약된 패리티-체크 행렬은 상기 신드롬 디코딩 회로에 의해 사용되는 상기 패리티-체크 행렬의 일부 행들에 포함되지 않는 정보만 포함하는 메모리 장치.
  10. 제 9 항에 있어서,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키고, 상기 패리티 에러 정보가 상기 신드롬이 상기 패리티 행렬의 모든 열과 다름을 가리키고, 상기 데이터 에러 정보가 상기 신드롬의 일부가 상기 축약된 패리티-체크 행렬의 적어도 하나의 열과 대응됨을 가리키는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 정정할 수 없는 에러(uncorrectable error)가 있음을 가리키고,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키고, 상기 패리티 에러 정보가 상기 신드롬이 상기 패리티 행렬의 적어도 하나의 열과 대응됨을 가리키고, 상기 데이터 에러 정보가 상기 신드롬의 일부가 상기 축약된 패리티-체크 행렬의 적어도 하나의 열과 대응됨을 가리키는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 정정할 수 있는 에러(correctable error)가 있거나 또는 상기 제1 데이터에 에러가 포함되지 않음(non-error)을 가리키는 메모리 장치.
  11. 제 1 항에 있어서,
    상기 ECC 회로는:
    베이시스 비트를 기반으로 상기 제1 데이터에 대한 상기 제1 패리티 데이터를 생성하도록 구성된 ECC 인코더를 더 포함하는 메모리 장치.
  12. 제 1 항에 있어서,
    상기 메모리 컨트롤러로부터 커맨드 및 어드레스 신호들(CA; command/address)을 수신하고 버퍼링하도록 구성된 커맨드 및 어드레스 버퍼;
    상기 커맨드 및 어드레스 버퍼로부터 어드레스 신호를 수신하고, 상기 어드레스 신호를 디코딩하도록 구성된 어드레스 디코더;
    상기 커맨드 및 어드레스 디코더로부터 커맨드 신호를 수신하고, 상기 커맨드 신호를 디코딩하도록 구성된 커맨드 디코더;
    상기 어드레스 디코더의 상기 어드레스 디코딩 결과에 따라, 상기 메모리 셀 어레이와 연결된 복수의 워드라인들을 제어하도록 구성된 행 디코더;
    상기 어드레스 디코더의 상기 어드레스 디코딩 결과에 따라, 상기 메모리 셀 어레이와 연결된 복수의 비트라인들을 제어하도록 구성된 열 디코더; 및
    상기 커맨드 디코더의 제어에 따라, 상기 메모리 셀 어레이에 상기 제1 데이터 및 상기 제1 패리티 데이터를 저장하거나, 또는 상기 상기 메모리 셀 에러이에 저장된 상기 제1 데이터 및 상기 제1 패리티 데이터를 독출하도록 구성된 감지 증폭기 및 쓰기 드라이버를 더 포함하는 메모리 장치.
  13. 메모리 장치에 저장된 제1 데이터 및 제1 패리티 데이터를 기반으로 상기 제1 데이터를 정정하도록 구성된 에러 정정 코드(ECC; error correction code) 회로에 있어서,
    상기 메모리 장치로부터의 상기 제1 데이터 및 상기 제1 패리티 데이터를 기반으로 신드롬을 생성하도록 구성된 신드롬 생성기;
    상기 신드롬을 패리티-체크 행렬의 각 열과 비교하여 에러 벡터를 생성하도록 구성된 신드롬 디코딩 회로;
    상기 에러 벡터 및 상기 제1 데이터를 기반으로, 상기 에러 정정된 데이터를 생성하도록 구성된 정정 로직 회로; 및
    상기 신드롬 및 축약된 패리티-체크 행렬을 기반으로 상기 에러 정정된 데이터에 대한 디코딩 상태를 가리키는 디코딩 상태 플래그를 생성하도록 구성된 고속 디코딩 상태 플래그(DSF; decoding status flag) 생성기를 포함하고,
    상기 축약된 패리티-체크 행렬은 상기 패리티-체크 행렬의 일부 정보만 포함하는 ECC 회로.
  14. 제 13 항에 있어서,
    상기 고속 디코딩 상태 플래그 생성기는 상기 신드롬 디코딩 회로 및 상기 정정 로직 회로와 병렬적으로 동작하는 ECC 회로.
  15. 제 13 항에 있어서,
    상기 패리티-체크 행렬은 a × b의 크기를 갖고, 단, 상기 a 및 b 각각은 자연수이고,
    상기 축약된 패리티-체크 행렬은 c × d의 크기를 갖고, 단, 상기 c는 상기 a보다 작은 자연수이고, 상기 d는 상기 d보다 작은 자연수이고,
    상기 축약된 패리티-체크 행렬의 상기 c개의 행들은, 상기 패리티-체크 행렬의 상기 a개의 행들 중 제1 부분 행들에 대한 정보를 포함하고, 상기 제1 부분 행들의 개수는 상기 c개인 ECC 회로.
  16. 제 13 항에 있어서,
    상기 고속 디코딩 상태 플래그 생성기는:
    상기 신드롬이 all-zero인지 판별하여 신드롬 정보를 출력하도록 구성된 신드롬 체크 회로;
    상기 신드롬을 패리티 행렬의 각 열과 비교함으로써, 제1 패리티 데이터의 에러를 판별하여 패리티 에러 정보를 출력하도록 구성된 패리티 에러 체크 회로;
    상기 신드롬의 일부를 상기 축약된-패리티 체크 행렬의 각 열과 비교함으로써, 상기 제1 데이터 또는 제1 패리티 데이터의 에러를 판별하여 데이터 에러 정보를 출력하도록 구성된 고속 데이터 에러 체크 회로; 및
    상기 신드롬 정보, 상기 패리티 에러 정보, 및 상기 데이터 에러 정보를 기반으로 상기 디코딩 상태 플래그를 출력하도록 구성된 디코딩 상태 플래그 검출 회로를 포함하는 메모리 장치.
  17. 제 13 항에 있어서,
    상기 제1 데이터가 상기 메모리 장치에 저장되기 전에, 베이시스 비트를 기반으로 상기 제1 데이터에 대한 상기 제1 패리티 데이터를 생성하도록 구성된 ECC 인코더를 더 포함하는 ECC 회로.
  18. 제 13 항에 있어서,
    상기 ECC 회로는 상기 메모리 장치 내에 포함된 OD-ECC(on-die ECC) 회로인 ECC 회로.
  19. 메모리 장치에 저장된 제1 데이터 및 제1 패리티 데이터를 기반으로 상기 제1 데이터를 정정하도록 구성된 에러 정정 코드(ECC; error correction code) 회로의 동작 방법에 있어서,
    상기 제1 데이터 및 상기 제1 패리티 데이터를 기반으로, 신드롬을 생성하는 단계;
    상기 신드롬 및 패리티-체크 행렬을 기반으로 에러 벡터를 생성하는 단계;
    상기 에러 벡터 및 상기 제1 데이터에 대한 로직 연산을 수행하여, 에러 정정된 데이터를 생성하는 단계;
    상기 신드롬 및 축약된 패리티-체크 행렬을 기반으로 디코딩 상태 플래그를 생성하는 단계; 및
    상기 에러 정정된 데이터 및 상기 디코딩 상태 플래그를 메모리 컨트롤러로 전송하는 단계를 포함하고,
    상기 에러 벡터를 생성하는 단계 및 상기 디코딩 상태 플래그를 생성하는 단계는 병렬적으로 수행되는 동작 방법.
  20. 제 19 항에 있어서,
    상기 신드롬 및 축약된 패리티-체크 행렬을 기반으로 디코딩 상태 플래그를 생성하는 단계는:
    상기 신드롬이 all-zero인지 판별하여, 신드롬 정보를 생성하는 단계;
    상기 신드롬을 패리티 행렬의 각 열과 비교하여, 상기 제1 패리티 데이터의 에러에 대한 정보를 포함하는 패리티 에러 정보를 생성하는 단계;
    상기 신드롬의 일부를 상기 축약된 패리티-체크 행렬의 각 열과 비교하여, 상기 제1 데이터의 에러 또는 상기 제1 패리티 데이터의 에러에 대한 정보를 포함하는 데이터 에러 정보를 생성하는 단계; 및
    상기 신드롬 정보, 상기 패리티 에러 정보, 및 상기 데이터 에러 정보를 기반으로, 상기 디코딩 상태 플래그를 생성하는 단계를 포함하고,
    상기 신드롬 정보가 상기 신드롬이 all-zero가 아님을 가리키고, 상기 패리티 에러 정보가 제1 패리티 데이터에 에러가 없음을 가리키고, 상기 데이터 에러 정보가 상기 제1 데이터 또는 제1 패리티 데이터의 에러가 없음을 가리키는 경우, 상기 디코딩 상태 플래그는 상기 제1 데이터에 정정할 수 없는 에러(uncorrectable error)가 있음을 가리키는 동작 방법.



KR1020220049463A 2021-11-25 2022-04-21 에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법 KR20230077606A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/988,140 US20230163786A1 (en) 2021-11-25 2022-11-16 Error correction code circuit, memory device including error correction code circuit, and operation method of error correction code circuit
TW111144487A TW202329147A (zh) 2021-11-25 2022-11-22 記憶體裝置、錯誤校正碼電路及其操作方法
CN202211471281.XA CN116168754A (zh) 2021-11-25 2022-11-23 纠错码电路、包括纠错码电路的存储设备以及纠错码电路的操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210164956 2021-11-25
KR1020210164956 2021-11-25

Publications (1)

Publication Number Publication Date
KR20230077606A true KR20230077606A (ko) 2023-06-01

Family

ID=86770676

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220049463A KR20230077606A (ko) 2021-11-25 2022-04-21 에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법

Country Status (1)

Country Link
KR (1) KR20230077606A (ko)

Similar Documents

Publication Publication Date Title
CN107133122B (zh) 存储器控制方法
US8934301B2 (en) Memory controller for multi-level memory device and error correcting method
US20160357630A1 (en) Semiconductor memory device providing analysis and correcting of soft data fail in stacked chips
US10803971B2 (en) Device for supporting error correction code and test method thereof
US11550659B2 (en) Controller and memory system
CN106648954B (zh) 包括片上错误校正码电路的存储器件和***
JP5541792B2 (ja) 半導体メモリ装置及びそれのデータ処理方法
US9904491B2 (en) Memory device, memory system, and method of operating the device
US10162703B2 (en) Methods of correcting data errors and semiconductor devices used therein
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US20180211696A1 (en) Semiconductor systems performing double-write operations and methods of operating the same
US11726665B1 (en) Memory extension with error correction
US20230163786A1 (en) Error correction code circuit, memory device including error correction code circuit, and operation method of error correction code circuit
US11101822B1 (en) Data writing method, memory control circuit unit and memory storage apparatus
CN108665940B (zh) Ecc编码电路、解码电路以及存储器控制器
KR20230077606A (ko) 에러 정정 코드 회로, 에러 정정 코드 회로를 포함하는 메모리 장치, 및 에러 정정 코드 회로의 동작 방법
CN115732016A (zh) 存储器装置、存储器控制器和纠正数据错误的方法
KR20160050961A (ko) 에러를 보정하는 메모리 장치 및 그의 에러 보정 방법
CN111796774B (zh) 存储器控制方法、存储器存储装置及存储器控制器
US20240185942A1 (en) Error correction code circuit, memory device including error correction code circuit, and operation method of error correction code
EP4379555A1 (en) Error correction code circuit, memory device including error correction code circuit, and operation method of error correction code
EP4202939A1 (en) Memory system and method of operating the same
US20240097709A1 (en) Error correction code decoder using constacyclic code, and memory device and memory system including the same
KR20230052346A (ko) 메모리 모듈, 메모리 시스템, 및 메모리 컨트롤러의 동작 방법