KR20230166563A - 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치 - Google Patents

작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치 Download PDF

Info

Publication number
KR20230166563A
KR20230166563A KR1020220066694A KR20220066694A KR20230166563A KR 20230166563 A KR20230166563 A KR 20230166563A KR 1020220066694 A KR1020220066694 A KR 1020220066694A KR 20220066694 A KR20220066694 A KR 20220066694A KR 20230166563 A KR20230166563 A KR 20230166563A
Authority
KR
South Korea
Prior art keywords
address
error
repair
memory
data
Prior art date
Application number
KR1020220066694A
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 KR1020220066694A priority Critical patent/KR20230166563A/ko
Priority to US18/124,733 priority patent/US20230386598A1/en
Priority to CN202310542195.1A priority patent/CN117149503A/zh
Publication of KR20230166563A publication Critical patent/KR20230166563A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 영역과 리페어 메모리 영역을 포함하는 메모리 장치의 작동을 제어하는 메모리 컨트롤러의 작동 방법은 제1리드 명령에 포함된 어드레스, 및 상기 어드레스와 관련된 상기 메모리 영역으로부터 리드된 데이터를 수신하는 단계와, 상기 데이터를 에러 정정 코드 디코딩하여 상기 데이터에 포함된 에러의 종류에 대한 에러 종류 정보를 생성하는 단계와, 상기 어드레스와 관련된 상기 데이터에 대한 상기 에러 종류 정보가 몇 번째 발생했는지를 카운트하여 카운트 값을 생성하는 단계와, 상기 카운트 값과 문턱 값을 비교하는 단계와, 상기 카운트 값이 상기 문턱 값과 같을 때 상기 메모리 영역에 저장된 상기 데이터를 상기 리페어 메모리 영역에 백업하는 단계를 포함한다.

Description

작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치{METHOD FOR REAL-TIME REPAIRING OF MEMORY FAILURE OCCURED DURING OPERATION, MEMORY SYSTEM THEREOF, AND DATA PROCESSING SYSTEM HAVING MEMORY SYSTEM}
본 발명의 개념에 따른 실시 예는 메모리 고장(memory failure or memory fault)을 실시간으로 리페어링(repairing)하는 방법에 관한 것으로, 특히 런타임 (runtime) 도중에 발생하는 상기 메모리 고장을 메모리 컨트롤러가 실시간으로 리페어링하는 방법, 상기 방법을 수행하는 메모리 시스템, 및 상기 메모리 시스템을 포함하는 데이터 처리 장치에 관한 것이다.
메모리 셀들을 포함하는 메모리 장치에 대한 공정 미세화에 따라, PVT 변동 (Pressure, Voltage, 및 Temperature Variation) 및/또는 데이터 패턴에 의해 상기 메모리 셀들 중에서 적어도 하나의 메모리 셀에 대한 고장(failure or fault)이 늘어나고 있다.
메모리 장치를 제어하는 메모리 컨트롤러가 상기 메모리 장치에 포함된 메모리 셀 어레이의 메모리 셀들 중에서 고장 메모리 셀들에 저장된 데이터를 리드 (read)할 때, 상기 메모리 컨트롤러에 포함된 에러 정정 코드 엔진(Error Correction Code(ECC) engine)은 리드된 데이터에 에러가 있는지 확인하고 상기 에러가 발견되면 상기 에러를 정정한다. 즉, ECC 엔진은 읽혀진 데이터에 포함된 정정 가능 에러(correctable error) 또는 정정 불가능 에러(uncorrectable error)를 처리한다.
일반적으로, 데이터에 포함된 에러는 정정 가능 에러로부터 정정 불가능 에러로 진행하는 경향이 있다. 따라서, 데이터에 포함된 정정 가능 에러와 정정 불가능 에러를 적절하게 처리(handling)하지 못하면, 전체 메모리 장치가 고장 상태가 될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는, 메모리 셀들을 포함하는 메모리 장치 전체의 고장을 미연에 방지하고 상기 메모리 장치의 수명을 증가시키기 위해, 상기 메모리 장치의 런타임 도중에 상기 메모리 셀들 중에서 일부 메모리 셀들에서 고장이 발생할 때 동적(dynamic)으로 그리고 실시간으로 고장이 발생된 일부 메모리 셀들을 리페어 메모리 셀들로 리페어링하는 방법, 상기 방법을 수행하는 메모리 시스템, 및 상기 메모리 시스템을 포함하는 데이터 처리 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 영역과 리페어 메모리 영역을 포함하는 메모리 장치의 작동을 제어하는 메모리 컨트롤러의 작동 방법은 제1리드 명령에 포함된 어드레스, 및 상기 어드레스와 관련된 상기 메모리 영역으로부터 리드된 데이터를 수신하는 단계와, 상기 데이터를 에러 정정 코드 디코딩하여 상기 데이터에 포함된 에러의 종류에 대한 에러 종류 정보를 생성하는 단계와, 상기 어드레스와 관련된 상기 데이터에 대한 상기 에러 종류 정보가 몇 번째 발생했는지를 카운트하여 카운트 값을 생성하는 단계와, 상기 카운트 값과 문턱 값을 비교하는 단계와, 상기 카운트 값이 상기 문턱 값과 같을 때 상기 메모리 영역에 저장된 상기 데이터를 상기 리페어 메모리 영역에 백업하는 단계를 포함한다.
본 발명의 실시 예에 따라 메모리 영역과 리페어 메모리 영역을 포함하는 메모리 장치의 작동을 제어하는 메모리 컨트롤러는 제1리드 명령에 포함된 어드레스 및 상기 어드레스와 관련된 상기 메모리 영역으로부터 리드된 데이터를 수신하고, 상기 데이터를 에러 정정 코드 디코딩하여 상기 데이터에 포함된 에러의 종류에 대한 에러 종류 정보를 생성하고, 상기 어드레스와 상기 에러 종류 정보를 출력하는 에러 정정 코드 디코더와, 상기 어드레스와 상기 에러 종류 정보를 수신하고, 상기 어드레스와 관련된 상기 데이터에 대한 상기 에러 종류 정보가 몇 번째 발생했는지를 카운트하여 카운트 값을 생성하고, 상기 어드레스와 상기 카운트 값을 출력하는 에러 로거를 포함한다.
본 발명의 실시 예에 따른 메모리 시스템은 메모리 영역과 리페어 메모리 영역을 포함하는 메모리 장치와, 상기 메모리 장치의 작동을 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 제1리드 명령에 포함된 어드레스 및 상기 어드레스와 관련된 상기 메모리 영역으로부터 읽혀진 데이터를 수신하고, 상기 데이터를 에러 정정 코드 디코딩하여 상기 데이터에 포함된 에러의 종류에 대한 에러 종류 정보를 생성하고, 상기 어드레스와 상기 에러 종류 정보를 출력하는 에러 정정 코드 디코더와, 상기 어드레스와 상기 에러 종류 정보를 수신하고, 상기 어드레스와 관련된 상기 데이터에 대한 상기 에러 종류 정보가 몇 번째 발생했는지를 카운트하여 카운트 값을 생성하고, 상기 어드레스와 상기 카운트 값을 출력하는 에러 로거를 포함한다.
상기 메모리 컨트롤러는 상기 어드레스와 상기 카운트 값을 수신하고, 상기 카운트 값과 문턱 값을 비교하고, 상기 카운트 값이 상기 문턱 값과 같을 때 상기 어드레스와 제어 신호를 출력하는 에러 체커와, 상기 제어 신호에 응답하여 상기 어드레스와 관련된 상기 메모리 영역에 저장된 상기 데이터를 상기 리페어 메모리 영역에 백업하는 동적 리페어 리매퍼를 더 포함한다.
본 발명의 실시 예에 따른 방법과 상기 방법을 수행하는 시스템은, 메모리 셀들을 포함하는 메모리 장치의 런타임 도중에 상기 메모리 셀들 중에서 일부 메모리 셀들에서 고장이 발생할 때 동적으로 그리고 실시간으로 고장이 발생된 일부 메모리 셀들을 리페어 메모리 셀들로 리페어링할 수 있는 효과가 있다.
이에 따라, 메모리 장치 전체의 고장이 미연에 방지되고 상기 메모리 장치의 수명이 증가되는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예들에 따라 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어할 수 있는 메모리 시스템의 블록도이다.
도 2는 도 1에 도시된 에러 로거에 저장된 어드레스별 정정 가능 에러 카운트 값 테이블의 실시 예이다.
도 3은 도 1에 도시된 에러 로거에 저장된 어드레스별 정정 불가능 에러 카운트 값 테이블의 실시 예이다.
도 4는 도 1의 동적 리페어 리매퍼에 저장된 리페어 어드레스 리스트의 실시 예이다.
도 5는 도 1의 동적 리페어 리매퍼에 저장된 어드레스-리페어 어드레스 매핑 테이블의 실시 예이다.
도 6은 도 1에 도시된 메모리 시스템의 작동의 실시 예를 설명하기 위한 플로우 차트이다.
도 7은 본 발명의 실시 예들에 따라 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어할 수 있는 메모리 시스템의 블록도이다.
도 8은 도 1에 도시된 메모리 시스템의 작동의 다른 실시 예를 설명하기 위한 플로우 차트이다.
도 9는 도 8에 도시된 플로우 차트에 해당하는 작동을 수행할 수 있는 메모리 시스템의 블록도이다.
도 10은 도 1, 도 7, 또는 도 9에 도시된 메모리 시스템을 포함하는 데이터 처리 시스템의 블록도이다.
도 1은 본 발명의 실시 예들에 따라 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어할 수 있는 메모리 시스템의 블록도이고, 도 6은 도 1에 도시된 메모리 시스템의 작동의 실시 예를 설명하기 위한 플로우 차트이다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(200)와 메모리 장치(300)를 포함한다. 본 명세서에서 설명될 본 발명의 기술적 사상은 메모리 장치 내부 작동인 PPR(post package repair)을 통해 고장난 로우(row) 영역을 리페어 로우(repair row) 영역으로 리페어링 하는 것이 아니라, 본 발명에 따른 메모리 컨트롤러(200)가 스스로 런타임 도중에 또는 실시간으로 메모리 장치(300)의 고장난 로우 영역을 리페어 로우 영역으로 동적으로 리페어링하는 것이다.
메모리 컨트롤러(200)는 메모리 장치(300)에 데이터를 라이트(write)하는 라이트 작동과 메모리 장치(300)로부터 데이터를 리드아웃(readout)하는 리드(read) 작동을 제어한다.
메모리 장치(300)는 동적 램(Dynamic Random Access Memory(DRAM))일 수 있다. 메모리 장치(300)는 라이트 및 리드아웃 회로(310)와 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 제1메모리 영역(320)과 제2메모리 영역(330)을 포함한다.
라이트 작동 시에 라이트 및 리드아웃 회로(310)는 적어도 하나의 데이터 전송선(101)을 통해 수신된 데이터를 적어도 하나의 어드레스 전송선(103)을 통해 수신된 어드레스(ADDi 또는 RPADD_t)와 관련된 메모리 셀들에 라이트 한다.
리드 작동 시에 라이트 및 리드아웃 회로(310)는 적어도 하나의 어드레스 전송선(103)을 통해 수신된 어드레스(ADDi 또는 RPADD_t)에 해당하는 메모리 셀들에 저장되어 있는 데이터를 리드하고, 리드된 데이터를 적어도 하나의 데이터 전송선 (101)을 통해 메모리 컨트롤러(200)로 전송한다.
즉, 라이트 및 리드아웃 회로(310)는 제1메모리 영역(320)과 제2메모리 영역 (330) 각각에 대한 라이트 작동과 리드 작동을 제어한다.
제1메모리 영역(320)은 복수 개의 로우 영역들(ROW_1~ROW_X)을 포함하고, 로우 영역들(ROW_1~ROW_X) 중에서 적어도 하나에는 데이터와 패리티(parity)가 저장된다.
에러 정정 코드(Error Correction Code(ECC))와 관련된 패리티(parity)를 저장하는 두 가지 정책이 있다. 첫 번째는 패리티를 모두 모아 스페어(spare) 영역에 저장하는 수집형이고, 두 번째는 ECC의 처리 단위에 따른 패리티를 데이터에 연달아 저장하는 분산형이다. 본 발명에서는 수집형 또는 분산형으로 패리티가 메모리 장치(300)에 저장된다. 예를 들면, 스페어 영역은 제1메모리 영역(320) 또는 제2메모리 영역(330)에 포함될 수 있다.
제2메모리 영역(330)은 복수 개의 리페어 로우 영역들(RPROW_1~RPROW_Y)을 포함하고, 리페어 로우 영역들(RPROW_1~RPROW_Y) 중에서 적어도 하나에는 제1메모리 영역(320)으로부터 백업(backup)된 데이터가 저장된다. 예를 들면, 로우 영역과 리페어 로우 영역 각각은 메모리 셀들을 포함하는 메모리 영역을 의미한다.
각 로우 영역(ROW_1~ROW_X, 및 RPROW_1~RPROW_Y)은 적어도 하나의 워드 라인 (word line)에 접속된 복수 개의 메모리 셀들을 포함한다. 여기서, X와 Y는 2이상의 자연수이고, X는 Y보다 크다.
메모리 컨트롤러(200)는 제1전송선(201), 제2전송선(202), 메모리 장치 인터페이스(205), ECC 엔진(210), 에러 로거(또는 에러 이력 기록기; error logger, 220), 에러 체커(또는 에러 검출기; error checker, 230), 동적 리페어 리매퍼(또는 동적 수리 재배치기; dynamic repair remapper, 240), 및 버스 인터페이스(250)를 포함한다.
적어도 하나의 전송선을 포함하는 제1전송선(201)은 어드레스(ADDi) 또는 리페어 어드레스(RPADD_t)를 메모리 장치 인터페이스(205)로 전송하는 기능을 수행하고, 적어도 하나의 전송선을 포함하는 제2전송선(202)는 데이터를 메모리 장치 (300)로 전송하는 기능과 메모리 장치(300)로부터 전송된 데이터를 수신하는 기능을 수행한다.
버스 인터페이스(250)는 도 10에 도시된 바와 같이 프로세서(410)와 데이터를 주고받기 위한 인터페이스일 수 있다.
ECC는 단일 비트 오류(single bit error)를 정정할 수 있다. 즉, 단일 비트 오류가 정정되면, 시스템은 중단 없이 그리고 데이터 손상 없이(without interruption and without corrupting data) 계속될 수 있다.
메모리 장치(300)가 DRAM일 때, 메모리 장치 인터페이스(205)는 DRAM 인터페이스이다. DRAM 인터페이스(205)는 어드레스(ADDi, i는 1 내지 X 중에서 어느 하나, 또는 RPADD_t, t는 1 내지 K 중에서 어느 하나)를 ECC 엔진(210)과 라이트 및 리드아웃 회로(310)로 전송한다.
정정 가능 에러(correctale error)에 대한 통계(예를 들면, 어드레스별 정정 가능 에러의 발생 회수)에 따라 고장난(또는 불량인) 로우 영역을 런타임 도중에 동적으로 리페어하는 방법은 도 1 내지 도 6을 참조하여 설명된다.
이하에서는 설명의 편의를 위해, 제1어드레스(ADDi, i=1)와 관련된 제1로우 영역(ROW1)에 저장된 제1데이터(RDATAi, i=1)에서 정정 가능 에러가 발생하는 경우가 예시적으로 설명된다.
제1리드(read) 작동 시 메모리 장치(300)는 제1어드레스(ADD1)를 포함하는 리드 명령(CMD)에 따라 제1데이터(RDATA1)를 ECC 엔진(210)으로 전송한다(S110). 예를 들면, 메모리 컨트롤러(200)는 제1어드레스(ADD1)와 관련된 제1로우 영역 (ROW1)으로부터 제1데이터(RDATA1)를 읽어온다(S110). 제1데이터(RDATA1)는 제1데이터 비트들(DATA1)과 제1ECC 패리티 비트들(PRT1)을 포함한다. 예를 들면, 제1ECC 패리티 비트들(PRT1)는 제1데이터 비트들(DATA1)을 보호(protection)하는 기능을 수행한다.
ECC 엔진(210)에 포함된 ECC 디코더(215)는 제1데이터 비트들(DATA1)에 대한 에러 정정 또는 에러 검출을 위해 제1ECC 패리티 비트들(PRT1)을 이용한다(S112). ECC 디코더(215)는 제1데이터(RDATA1)에 대해 ECC 디코딩을 수행한다(S112).
제1데이터(RDATA1)에 대한 ECC 디코딩 결과에 따라(S112) 제1데이터(RDATA1)에서 정정 가능 에러가 검출된 경우(S114의 YES), ECC 디코더(215)는 제1어드레스 (ADD1)와 함께 제1에러 종류 정보(TOEj, j=1)를 에러 로거(220)로 전송한다. 제1에러 종류 정보(TOE1)는 ECC 디코더(215)에 의해 검출된 에러가 정정 가능 에러 (correctable error)임을 나타내는 정보이다.
에러 로거(또는 에러 로깅 회로(error logging circuit); 220)는 제어 회로 (221), 제1그룹의 카운터들(222_1~222_n), 제1테이블(224)을 저장하는 제1메모리 장치(223), 제2그룹의 카운터들(226_1~226_m), 및 제2테이블(228)을 저장하는 제2메모리 장치(227)를 포함한다. 실시 예들에 따라, 제1테이블(224)과 제2테이블 (228)은 하나의 메모리 장치(예를 들면, 레지스터들)에 저장될 수 있다.
제어 회로(221)는 특정한 어드레스에 대한 제1에러 종류 정보(TOE1)에 따라 제1그룹의 카운터들(222_1~222_n) 중에서 어느 하나를 선택적으로 작동시키고, 선택된 카운터의 카운트 값을 제1테이블(224)에 저장한다.
제어 회로(221)는 특정한 어드레스에 대한 제2에러 종류 정보(TOEj, j=2)에 따라 제2그룹의 카운터들(226_1~226_m) 중에서 어느 하나를 선택적으로 작동시키고, 선택된 카운터의 카운트 값을 제2테이블(228)에 저장한다. 제2에러 종류 정보 (TOE2)는 검출된 에러가 정정 불가능 에러(uncorrectable error)임을 나타내는 정보이다.
여기서, m과 n은 자연수이고, m과 n은 같은 수이거나 다른 수 일 수 있고(즉, n=m, 또는 n≠m), n은 X보다 작고, m은 Y보다 작다. 예를 들면, 제1에러 종류 정보(TOE1)가 로직 1(또는 데이터 1)과 로직 0(또는 데이터 0) 중에서 어느 하나일 때, 제2에러 종류 정보(TOE2)는 상기 로직 1과 상기 로직 0 중에서 다른 하나일 수 있으나 이에 한정되는 것은 아니다.
도 2는 도 1에 도시된 에러 로거에 저장된 어드레스별 정정 가능 에러 카운트 값 테이블의 실시 예이다. 도 2를 참조하면, 제1테이블(224)은 어드레스 (C_ADD_1~C_ADD_n)별로 정정 가능 에러 카운트 값(CNT1_1~CNT1_n)을 저장한다.
예를 들면, 어드레스(C_ADD_1)는 어드레스들(ADD1~ADDX) 중에서 어느 하나이고, 어드레스(C_ADD_2)는 어드레스들(ADD1~ADDX) 중에서 다른 하나이고, 어드레스 (C_ADD_n)는 어드레스들(ADD1~ADDX) 중에서 또 다른 하나이다. 초기에, 각각의 정정 가능 에러 카운트 값(CNT1_1~CNT1_n)은 영(zero)으로 설정되어 있다고 가정한다.
제어 회로(221)는, 제1그룹의 카운터들(222_1~222_n)과 제2그룹의 카운터들 (226_1~226_m) 중 어느 하나가 작동한 후 또는 테이블들(224와 228) 중 어느 하나에 대한 카운트 값 업데이트가 수행된 후, 어드레스(ADDi)와 제1제어 정보(CTL1)를 에러 체커(230)로 전송한다. 예를 들면, 제1제어 정보(CTL1)는 카운트 값과 에러 종류 정보(TOE1 또는 TOE2)를 포함한다.
제어 회로(221)는 제1어드레스(ADD1)와 함께 제1에러 종류 정보(TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1그룹의 카운터들(222_1~222_n) 중에서 제1카운터(222_1)를 제1어드레스(ADD1)에 할당한다. 제1카운터(222_1)는 제1어드레스(ADD1)에 대해 제1에러 종류 정보(TOE1)가 첫 번째로 수신되었음을 카운트하고 제1카운트 값(CNT1_1=1)을 생성한다(S116). 예를 들면, 제1어드레스(ADD1)에 대한 제1에러 종류 정보(TOE1)가 수신될 때마다 제1카운터(222_1)는 수신 회수를 카운트한다.
제어 회로(221)는 제1테이블(224)에 제1어드레스(ADD1=C_ADD_1)와 제1카운트 값(CNT1_1=1)을 저장(또는 라이트)하고(S116), 제1어드레스(ADD1)와 제1제어 정보 (CTL1)를 에러 체커(230)로 전송한다. 제1제어 정보(CTL1)는 제1카운트 값 (CNT1_1=1)과 제1에러 종류 정보(TOE1)를 포함한다.
에러 체커(또는 에러 체킹 회로; 230)는 제1문턱값(threshold vaule; THV1)을 저장하는 제1메모리 장치(231), 제2문턱값(THV2)을 저장하는 제2메모리 장치 (233), 선택 회로(235), 비교기(237), 및 제어 회로(239)를 포함한다. 실시 예들에 따라 제1문턱값(THV1)과 제2문턱값(THV2)은 하나의 메모리 장치(예를 들면, SFR (Special Function Register))에 저장될 수 있다.
각 문턱값(THV1과 THV2)은 자연수이고, 제1문턱값(THV1)은 제2문턱값(THV2)보다 크다. 이하, 설명의 편의를 위해, 제1문턱값(THV1)은 5이고, 제2문턱값(THV2)은 2라고 가정한다.
에러 체커(230)의 제어 회로(239)는 제1어드레스(ADD1)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1문턱값(THV1)의 출력을 지시하는 선택 신호(SEL)를 생성하고, 이(SEL)를 선택 회로(235)로 출력한다. 선택 회로(235)는 멀티플렉서(multiplexer)일 수 있다.
비교기(237)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=1)을 수신하고 비교하여 비교 신호(COMP)를 생성하고(S118), 제1문턱값(THV1=5)과 제1카운트 (CNT1_1=1)이 같지 않을 때(S118의 NO) 제어 회로(239)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=1)이 같지 않음을 나타내는 비교 신호(COMP)에 따라 제1데이터 (RDATA1)의 백업(backup)을 지시하는 제2제어 신호(CTL2)를 생성하지 않는다.
그후 제2리드 작동 시 메모리 장치(300)는 제1어드레스(ADD1)를 포함하는 리드 명령(CMD)에 따라 제1데이터(RDATA1)를 ECC 엔진(210)으로 전송한다(S110). 제1데이터(RDATA1)에 대한 ECC 디코딩 결과에 따라(S112), 제1데이터(RDATA1)에서 정정 가능 에러가 검출된 경우(S114의 YES), ECC 디코더(215)는 제1어드레스(ADD1)와 함께 제1에러 종류 정보(TOE1)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제1어드레스(ADD1)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1그룹의 카운터들 (222_1~222_n) 중에서 제1카운터(222_1)를 제1어드레스(ADD1)에 다시 할당한다. 제1카운터(222_1)는 제1어드레스(ADD1)에 대한 제1에러 종류 정보(TOE1)가 두 번째로 수신되었음을 카운트하고 제1카운트 값(CNT1_1=2)을 생성한다(S116).
제어 회로(221)는 제1테이블(224)의 제1어드레스(ADD1=C_ADD_1)에 대한 제1카운트 값(CNT1_1=2)을 저장(또는 업데이트)하고(S116), 제1어드레스(ADD1)와 제1제어 정보(CTL1)를 에러 체커(230)로 전송한다.
에러 체커(230)의 제어 회로(239)는 제1어드레스(ADD1)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1문턱값(THV1)의 출력을 지시하는 선택 신호(SEL)를 생성하고, 이(SEL)를 선택 회로(235)로 출력한다.
비교기(237)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=2)을 수신하여 비교하고(S118), 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=2)이 같지 않을 때(S118의 NO), 제어 회로(239)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=2)이 같지 않음을 나타내는 비교 신호(COMP)에 따라 제1데이터(RDATA1)의 백업을 지시하는 제2제어 신호(CTL2)를 생성하지 않는다.
그후, 제1어드레스(ADD1)를 포함하는 리드 명령(CMD)에 따라 수행된 제3리드 작동에서 제1데이터(RDATA1)에서 정정 가능 에러가 검출되고(S114의 YES), 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=3)이 같지 않을 때(S118의 NO), 제어 회로(239)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=3)이 같지 않음을 나타내는 비교 신호(COMP)에 따라 제1데이터(RDATA1)의 백업을 지시하는 제2제어 신호(CTL2)는 생성되지 않는다.
또한, 제1어드레스(ADD1)를 포함하는 리드 명령(CMD)에 따라 수행된 제4리드 작동에서 제1데이터(RDATA1)에서 정정 가능 에러가 검출되고(S114의 YES), 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=4)이 같지 않을 때(S118의 NO), 제1데이터 (RDATA1)의 백업을 지시하는 제2제어 신호(CTL2)는 생성되지 않는다.
그후, 제1어드레스(ADD1)를 포함하는 리드 명령(CMD)에 따라 수행된 제5리드 작동에서도 제1데이터(RDATA1)에서 정정 가능 에러가 검출된 경우(S114의 YES), ECC 디코더(215)는 제1어드레스(ADD1)와 함께 제1에러 종류 정보(TOE1)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제1어드레스(ADD1)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1그룹의 카운터들 (222_1~222_n) 중에서 제1카운터(222_1)를 제1어드레스(ADD1)에 다시 할당한다. 제1카운터(222_1)는 제1에러 종류 정보(TOE1)가 다섯 번째로 수신되었음을 카운트하고 제1카운트 값(CNT1_1=5)을 생성한다(S116).
제어 회로(221)는 제1테이블(224)의 제1어드레스(ADD1=C_ADD_1)에 대한 제1카운트 값(CNT1_1=5)을 저장(또는 업데이트)하고(S116), 제1어드레스(ADD1)와 제1제어 정보(CTL1)를 에러 체커(230)로 전송한다.
이때, 제1카운터(222_1)의 제1카운트 값(CNT_1)은 제어 회로(221)에 의해 영 (zero)으로 리셋되므로, 제어 회로(221)는 특정 어드레스와 제1에러 종류 정보 (TOE1)가 수신될 때 상기 특정 어드레스에 대해 제1카운터(222_1)를 다시 할당할 수 있다.
에러 체커(230)의 제어 회로(239)는 제1어드레스(ADD1)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1문턱값(THV1)의 출력을 지시하는 선택 신호(SEL)를 생성하고, 이(SEL)를 선택 회로(235)로 출력한다.
비교기(237)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=5)을 수신하여 비교하고(S118), 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=5)이 같을 때(S118의 YES), 비로소 제어 회로(239)는 제1문턱값(THV1=5)과 제1카운트 값(CNT1_1=5)이 같음을 나타내는 비교 신호(COMP)에 따라 제1데이터(RDATA1)의 백업을 지시하는 제2제어 신호(CTL2)를 생성하고, 제1어드레스(ADD1)와 제2제어 신호(CTL2)를 동적 리페어 리매퍼(240)로 전송한다.
동적 리페어 리매퍼(240)의 제어 회로(242)는 제1어드레스(ADD1)와 제2제어 신호(CTL2)를 수신하고, 제1데이터(RDATA1)의 백업을 지시하는 제2제어 신호(CTL2)에 응답하여 제1어드레스(ADD1)와 관련된 제1로우 영역(ROW1)으로부터 제1데이터 (RDATA1)를 읽어 온다(S120). 예를 들면, 단계(S120)는 내부 리드 작동(internal read operation)에 해당한다.
도 4는 도 1의 동적 리페어 리매퍼에 저장된 리페어 어드레스 리스트의 실시 예이다. 도 1과 도 4를 참조하면, 제1메모리 장치(244)에 저장된 리페어 어드레스 리스트(LIST)는 리페어 어드레스들(RPADD_1~RPADD_K)을 포함한다.
제1리페어 어드레스(RPADD_1)는 리페어 로우 영역들(RPROW_1~RPROW_Y) 중에서 어느 하나와 관련된 어드레스이고, 제2리페어 어드레스(RPADD_2)는 리페어 로우 영역들(RPROW_1~RPROW_Y) 중에서 다른 하나와 관련된 어드레스이고, 제K리페어 어드레스(RPADD_K)는 리페어 로우 영역들(RPROW_1~RPROW_Y) 중에서 또 다른 하나와 관련된 어드레스이다. 여기서, K는 2이상의 자연수이고, K는 Y보다 작다.
동적 리페어 리매퍼(240)의 제어 회로(242)는 제1메모리 장치(244)에 저장된 리페어 어드레스 리스트(LIST)에 포함된 리페어 어드레스들(RPADD_1~RPADD_K) 중에서 제1리페어 어드레스(RPADD_1)를 읽어오고, 제1로우 영역(ROW1)으로부터 리드된 제1데이터(RDATA1)를 제1리페어 어드레스(RPADD_1)와 관련된 제1리페어 로우 영역 (RPROW_1)에 백업한다(S122). 예를 들면, 제어 회로(242)는 단계(S120)를 통해 제1데이터(RDATA1)를 저장(save)하고, 단계(S122)를 통해 제1데이터(RDATA1)를 제1리페어 로우 영역(RPROW_1)에 복원(restore)한다.
제1데이터(RDATA1)가 제1리페어 로우 영역(RPROW_1)에 백업된 후, 동적 리페어 리매퍼(240)의 제어 회로(242)는 제1어드레스(ADD1=IADD_1)와 제1리페어 어드레스(RPADD_1)를 일대일로 매핑(mapping)하고, 매핑 정보(AMP)를 제2메모리 장치 (246)에 저장한다(S124). 실시 예들에 따라 리페어 어드레스 리스트(LIST)와 매핑 정보(AMP)는 하나의 메모리 장치에 저장될 수 있다.
도 5는 도 1의 동적 리페어 리매퍼에 저장된 어드레스-리페어 어드레스 매핑 테이블의 실시 예이다.
도 5를 참조하면, 어드레스-리페어 어드레스 매핑 테이블(AMP)은 입력 어드레스(IADD_1~IADD_L)별로 일대일로 매핑된 리페어 어드레스(RPADD_1~RPADD_L)을 포함한다. 여기서, L은 2이상의 자연수이고, 입력 어드레스(IADD_1)는 어드레스들 (ADD1~ADDX) 중에서 어느 하나이고, 입력 어드레스(IADD_2)는 어드레스들 (ADD1~ADDX) 중에서 다른 하나이고, 입력 어드레스(IADD_L)는 어드레스들 (ADD1~ADDX) 중에서 또 다른 하나이다.
제1데이터(RDATA1)가 제1로우 영역(ROW_1)으로부터 제1리페어 로우 영역 (RPROW_1)에 백업(또는 실시간으로 백업)된 후, 동적 리페어 리매퍼(240)의 제어 회로(242)가 새로운 리드 작동을 위한 제1어드레스(ADD1)를 포함하는 리드 명령 (CMD)을 수신하면, 제어 회로(242)는 제2메모리 장치(246)에 저장된 매핑 정보 (AMP)로부터 제1어드레스(ADD1=IADD_1)에 매핑된 제1리페어 어드레스(RPADD_1)를 읽어와서 제1리페어 어드레스(RPADD_1)를 메모리 장치 인터페이스(205)로 전송한다.
ECC 디코더(215)는 제1리페어 어드레스(RPADD_1)와 관련된 제1리페어 로우 영역(RPROW_1)으로부터 전송된 제1데이터(RDATA1)에 대한 ECC 디코딩을 수행하고, ECC 디코드된 제1데이터(RDATA1)를 버스 인터페이스(250)로 전송한다(S126). 버스 인터페이스(250)로 전송된 제1데이터(RDATA1)는 리드 명령(CMD)을 출력한 프로세서 (예를 들면, 도 10의 410)로 전송된다.
새로운 리드 작동 시 메모리 장치(300)는, 제2어드레스(ADDi, i=2)를 포함하는 리드 명령(CMD)에 따라, 제2어드레스(ADD2)와 관련된 제2로우 영역(ROW_2)으로부터 리드된 제2데이터(RDATAi, i=2)를 ECC 엔진(210)으로 전송한다(S110). 제2데이터(RDATA2)는 제2데이터 비트들(DATA2)와 제2ECC 패리티 비트들(PRT2)를 포함한다.
ECC 엔진(210)에 포함된 ECC 디코더(215)는 제2데이터 비트들(DATA2)에 대한 에러 정정 또는 에러 검출을 위해 제2ECC 패리티 비트들(PRT2)을 이용한다.
제2데이터(RDATA2)에 대한 ECC 디코딩 결과에 따라(S112), 제2데이터 (RDATA2)에서 정정 가능 에러가 검출된 경우(S114의 YES), ECC 디코더(215)는 제2어드레스(ADD2)와 함께 제1에러 종류 정보(TOE1)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제2어드레스(ADD2)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1그룹의 카운터들 (222_1~222_n) 중에서 제2카운터(222_2)를 제2어드레스(ADD2)에 할당한다. 제2카운터(222_2)는 제2어드레스(ADD2)에 대한 제1에러 종류 정보(TOE1)가 첫 번째로 수신되었음을 카운트하고 카운트 값(CNT1_2=1)을 생성한다.
새로운 리드 작동 시 메모리 장치(300)는, 제3어드레스(ADDi, i=3)를 포함하는 리드 명령(CMD)에 따라, 제3어드레스(ADD3)와 관련된 제3로우 영역(ROW_3)으로부터 리드된 제3데이터(RDATAi, i=3)를 ECC 엔진(210)으로 전송한다(S110). 제3데이터(RDATA3)는 제3데이터 비트들(DATA3)와 제3ECC 패리티 비트들(PRT3)를 포함한다.
ECC 엔진(210)에 포함된 ECC 디코더(215)는 제3데이터 비트들(DATA3)에 대한 에러 정정 또는 에러 검출을 위해 제3ECC 패리티 비트들(PRT3)을 이용한다.
제3데이터(RDATA3)에 대한 ECC 디코딩 결과(S112), 제3데이터(RDATA3)에서 정정 가능 에러가 검출된 경우(S114의 YES), ECC 디코더(215)는 제3어드레스(ADD3)와 함께 제1에러 종류 정보(TOE1)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제3어드레스(ADD3)와 제1에러 종류 정보 (TOE1)를 수신하고, 제1에러 종류 정보(TOE1)에 따라 제1그룹의 카운터들 (222_1~222_n) 중에서 제3카운터(222_3)를 제3어드레스(ADD3)에 할당한다. 제3카운터(222_3)는 제3어드레스(ADD3)에 대한 제1에러 종류 정보(TOE1)가 첫 번째로 수신되었음을 카운트하고 카운트 값(CNT1_3=1)을 생성한다.
도 6을 참조하여 앞에서 설명한 바와 같이, 나머지 단계들(S116, S118, S120, S122, S124, 및 S126)은 이해될 수 있으므로 이에 대한 설명은 생략한다.
정정 불가능 에러에 대한 통계(예를 들면, 어드레스별로 정정 불가능 에러의 발생 회수)에 따라 고장난(또는 불량인) 로우 영역을 런타임 중에 동적으로 리페어하는 방법이 도 1 내지 도 6을 참조하여 설명된다.
이하에서는 설명의 편의를 위해, 제2어드레스(ADDi, i=2)와 관련된 제2로우 영역(ROW2)에 저장된 제2데이터(RDATAi, i=2)에서 정정 불가능 에러가 발생하는 경우가 예시적으로 설명된다.
제1리드 작동 시 메모리 장치(300)는 제2어드레스(ADD2)를 포함하는 리드 명령(CMD)에 따라 제2데이터(RDATA2)를 ECC 엔진(210)으로 전송한다(S110). 예를 들면, 메모리 컨트롤러(200)는 제2어드레스(ADD2)와 관련된 제2로우 영역(ROW2)으로부터 제2데이터(RDATA2)를 읽어온다(S110). 제2데이터(RDATA2)는 제2데이터 비트들 (DATA2)과 제2ECC 패리티 비트들(PRT2)을 포함한다.
ECC 엔진(210)에 포함된 ECC 디코더(215)는 제2데이터 비트들(DATA2)에 대한 에러 정정 또는 에러 검출을 위해 제2ECC 패리티 비트들(PRT2)을 이용한다(S112). 즉, ECC 디코더(215)는 제2데이터(RDATA2)에 대해 ECC 디코딩을 수행한다(S112).
제2데이터(RDATA2)에 대한 ECC 디코딩 결과에 따라(S112) 제2데이터(RDATA2)에서 정정 불가능 에러가 검출된 경우(S114의 NO), ECC 디코더(215)는 제2어드레스 (ADD2)와 함께 제2에러 종류 정보(TOE2)를 에러 로거(220)로 전송한다. 앞에서 설명한 바와 같이, 제2에러 종류 정보(TOE2)는 ECC 디코더(215)에서 검출된 에러가 정정 불가능 에러임을 나타내는 정보이다.
도 3은 도 1에 도시된 에러 로거에 저장된 어드레스별 정정 불가능 에러 카운트 값 테이블의 실시 예이다. 도 1과 도 3을 참조하면, 제2테이블(228)은 어드레스(UC_ADD_1~UC_ADD_m)별로 정정 불가능 에러 카운트 값(CNT2_1~CNT2_m)을 저장한다.
예를 들면, 어드레스(UC_ADD_1)는 어드레스들(ADD1~ADDX) 중에서 어느 하나이고, 어드레스(UC_ADD_2)는 어드레스들(ADD1~ADDX) 중에서 다른 하나이고, 어드레스(UC_ADD_m)는 어드레스들(ADD1~ADDX) 중에서 또 다른 하나이다. 초기에, 각각의 정정 불가능 에러 카운트 값(CNT2_1~CNT2_m)은 영(zero)로 설정되어 있다고 가정한다.
에러 로거(200)의 제어 회로(221)는 제2어드레스(ADD2)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 제2그룹의 카운터들 (226_1~226_m) 중에서 제1카운터(226_1)를 제2어드레스(ADD2)에 할당한다. 제1카운터(226_1)는 제2어드레스(ADD2)와 관련된 제2에러 종류 정보(TOE2)가 첫 번째로 수신되었음을 카운트하고 제2카운트 값(CNT2_1=1)을 생성한다(S116A).
제어 회로(221)는 제2테이블(228)에 제2어드레스(ADD2=UC_ADD_1)와 제2카운트 값(CNT2_1=1)을 저장(또는 라이트)하고(S116A), 제2어드레스(ADD2)와 제1제어 정보(CTL1)를 에러 체커(230)로 전송한다. 제1제어 정보(CTL1)는 제2카운트 값 (CNT2_1=1)과 제2에러 종류 정보(TOE2)를 포함한다.
에러 체커(130)의 제어 회로(239)는 제2어드레스(ADD2)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 제2문턱값(THV2)의 출력을 지시하는 선택 신호(SEL)를 생성하고, 이(SEL)를 선택 회로(235)로 출력한다.
비교기(237)는 제2문턱값(THV2=2)과 제2카운트 값(CNT2_1=1)을 수신하여 비교하고(S118A), 제2문턱값(THV2=2)과 제2카운트 값(CNT2_1=1)이 같지 않을 때 (S118A의 NO), 제어 회로(239)는 제2문턱값(THV2=2)과 제2카운트 값(CNT2_1=2)이 같지 않음을 나타내는 비교 신호(COMP)에 따라 제2데이터(RDATA2)의 백업을 지시하는 제2제어 신호(CTL2)를 생성하지 않는다.
그후 제2리드 작동 시 메모리 장치(300)는 제2어드레스(ADD2)를 포함하는 리드 명령(CMD)에 따라 제2데이터(RDATA2)를 ECC 엔진(210)으로 전송한다(S110). 제2데이터(RDATA2)에 대한 ECC 디코딩 결과에 따라(S112), 제2데이터(RDATA2)에서 정정 불가능 에러가 검출된 경우(S114의 NO), ECC 디코더(215)는 제2어드레스(ADD2)와 함께 제2에러 종류 정보(TOE2)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제2어드레스(ADD2)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 제2그룹의 카운터들 (226_1~226_m) 중에서 제1카운터(226_1)를 제2어드레스(ADD2)에 다시 할당한다. 제1카운터(226_1)는 제2어드레스(ADD2)에 대한 제2에러 종류 정보(TOE2)가 두 번째로 수신되었음을 카운트하고 제2카운트 값(CNT2_1=2)을 생성한다(S116A).
제어 회로(221)는 제2테이블(228)의 제1어드레스(ADD2=UC_ADD_1)에 대한 제2카운트 값(CNT2_1=2)을 저장(또는 업데이트)하고(S116A), 제2어드레스(ADD2)와 제1제어 정보(CTL1)를 에러 체커(230)로 전송한다.
이때, 제1카운터(226_1)의 제2카운트 값(CNT2_1)은 제어 회로(221)에 의해 영 (zero)으로 리셋(reset)되므로, 제어 회로(221)는 특정 어드레스와 제2에러 종류 정보(TOE2)가 수신될 때 상기 특정 어드레스에 대해 제1카운터(226_1)를 다시 할당할 수 있다.
에러 체커(230)의 제어 회로(239)는 제2어드레스(ADD2)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 제2문턱값(THV2)의 출력을 지시하는 선택 신호(SEL)를 생성하고, 이(SEL)를 선택 회로(235)로 출력한다.
비교기(237)는 제2문턱값(THV2=2)과 제2카운트 값(CNT2_1=2)을 수신하여 비교하고(S118A), 제2문턱값(THV2=2)과 제2카운트 값(CNT2_1=2)이 같을 때(S118A의 YES), 비로소 제어 회로(239)는 제2문턱값(THV2=2)과 제2카운트 값(CNT2_1=2)이 같음을 나타내는 비교 신호(COMP)에 따라 제2데이터(RDATA2)의 백업을 지시하는 제2제어 신호(CTL2)를 생성하고, 제2어드레스(ADD2)와 제2제어 신호(CTL2)를 동적 리페어 리매퍼(240)로 전송한다.
동적 리페어 리매퍼(240)의 제어 회로(242)는 제2어드레스(ADD2=UC_ADD_1)와 제2제어 신호(CTL2)를 수신하고, 제2제어 신호(CTL2)에 응답하여 제2어드레스 (ADD2)와 관련된 제2로우 영역(ROW2)으로부터 제2데이터(RDATA2)를 읽어 온다 (S120).
제어 회로(242)는 메모리 장치(244)에 저장된 리페어 어드레스 리스트(LIST)에 포함된 리페어 어드레스들(RPADD_1~RPADD_K) 중에서 제2리페어 어드레스 (RPADD_2)를 읽어오고, 제2로우 영역(ROW2)으로부터 리드된 제2데이터(RDATA2)를 제2리페어 어드레스(RPADD_2)와 관련된 제2리페어 로우 영역(RPROW_2)에 백업한다 (S122).
제2데이터(RDATA2)가 제2리페어 로우 영역(RPROW_2)에 백업된 후, 제어 회로 (242)는 제2어드레스(ADD2=IADD_2)와 제2리페어 어드레스(RPADD_2)를 일대일로 매핑하고, 매핑 정보(AMP)를 제2메모리 장치(246)에 저장한다(S124).
제2데이터(RDATA2)가 제2리페어 로우 영역(RPROW_2)에 백업된 후, 동적 리페어 리매퍼(240)의 제어 회로(242)가 새로운 리드 작동을 위한 제2어드레스(ADD2)를 포함하는 리드 명령(CMD)을 수신하면, 제어 회로(242)는 제2메모리 장치(246)에 저장된 매핑 정보(AMP)로부터 제2어드레스(ADD2=IADD_2)에 매핑된 제2리페어 어드레스(RPADD_2)를 읽어와서 제2리페어 어드레스(RPADD_2)를 메모리 장치 인터페이스 (205)로 전송한다.
ECC 디코더(215)는 제2리페어 어드레스(RPADD_2)와 관련된 제2리페어 로우 영역(RPROW_2)으로부터 전송된 제2데이터(RDATA2)에 대한 ECC 디코딩을 수행하고, ECC 디코드된 제2데이터(RDATA2)를 버스 인터페이스(250)로 전송한다(S126).
새로운 리드 작동 시 메모리 장치(300)는, 제3어드레스(ADDi, i=3)를 포함하는 리드 명령(CMD)에 따라, 제3어드레스(ADD3)와 관련된 제3로우 영역(ROW_3)으로부터 리드된 제3데이터(RDATAi, i=3)를 ECC 엔진(210)으로 전송한다(S110).
제3데이터(RDATA3)에 대한 ECC 디코딩 결과에 따라(S112), 제3데이터 (RDATA3)에서 정정 불가능 에러가 검출된 경우(S114의 NO), ECC 디코더(215)는 제3어드레스(ADD3)와 함께 제2에러 종류 정보(TOE2)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제3어드레스(ADD3)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 제2그룹의 카운터들 (226_1~226_m) 중에서 제2카운터(226_2)를 제3어드레스(ADD3)에 할당한다. 제2카운터(226_2)는 제3어드레스(ADD3)에 대한 제2에러 종류 정보(TOE2)가 첫 번째로 수신되었음을 카운트하고 카운트 값(CNT2_2=1)을 생성한다.
새로운 리드 작동 시 메모리 장치(300)는, 제4어드레스(ADDi, i=4)를 포함하는 리드 명령(CMD)에 따라, 제4어드레스(ADD4)와 관련된 제4로우 영역(ROW_4)으로부터 리드된 제4데이터(RDATAi, i=4)를 ECC 엔진(210)으로 전송한다(S110).
제4데이터(RDATA4)에 대한 ECC 디코딩 결과에 따라(S112), 제4데이터 (RDATA4)에서 정정 불가능 에러가 검출된 경우(S114의 NO), ECC 디코더(215)는 제4어드레스(ADD4)와 함께 제2에러 종류 정보(TOE2)를 에러 로거(220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제4어드레스(ADD4)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 제2그룹의 카운터들 (226_1~226_m) 중에서 제3카운터(226_3)를 제4어드레스(ADD4)에 할당한다. 제3카운터(226_3)는 제4어드레스(ADD4)에 대한 제2에러 종류 정보(TOE2)가 첫 번째로 수신되었음을 카운트하고 카운트 값(CNT2_3=1)을 생성한다.
도 7은 본 발명의 실시 예들에 따라 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어할 수 있는 메모리 시스템의 블록도이다.
도 7에 도시된 동적 리페어 리매퍼(240A)는 도 1에 도시된 동적 리페어 리매퍼(240)와 달리 제3메모리 장치(248), 예를 들면 정적 램(Static Random Access Memory(SRAM))을 더 포함한다.
도 1 내지 도 7을 참조하면, 동적 리페어 리매퍼(240A)의 제어 회로(242)는 에러 체커(230)의 제어 회로(239)로부터 제1어드레스(ADD1)와 제1데이터(RDATA1)의 백업을 지시하는 제2제어 신호(CTL2)를 수신하고, 제2제어 신호(CTL2)에 응답하여 제1어드레스(ADD1)와 관련된 제1로우 영역(ROW1)으로부터 제1데이터(RDATA1)를 읽어와서 SRAM(248)에 저장한다(S120).
동적 리페어 리매퍼(240A)의 제어 회로(242)는 메모리 장치(244)에 저장된 리페어 어드레스 리스트(LIST)에 포함된 리페어 어드레스들(RPADD_1~RPADD_K) 중에서 제1리페어 어드레스(RPADD_1)를 읽어오고, 단계(S120)에 따라 SRAM(248)에 저장된 제1데이터(RDATA1)를 제1리페어 어드레스(RPADD_1)와 관련된 제1리페어 로우 영역(RPROW_1)에 백업한다(S122).
다른 예로서, 동적 리페어 리매퍼(240A)의 제어 회로(242)는 제2어드레스 (ADD2=UC_ADD_1)와 제2데이터(RDATA2)의 백업을 지시하는 제2제어 신호(CTL2)를 수신하고, 제2제어 신호(CTL2)에 응답하여 제2어드레스(ADD2)와 관련된 제2로우 영역 (ROW2)으로부터 제2데이터(RDATA2)를 읽어와서 SRAM(248)에 저장한다(S120).
동적 리페어 리매퍼(240A)의 제어 회로(242)는 메모리 장치(244)에 저장된 리페어 어드레스 리스트(LIST)에 포함된 리페어 어드레스들(RPADD_1~RPADD_K) 중에서 제2리페어 어드레스(RPADD_2)를 읽어오고, 단계(S120)에 따라 SRAM(248)에 저장된 제2데이터(RDATA2)를 제2리페어 어드레스(RPADD_2)와 관련된 제2리페어 로우 영역(RPROW_2)에 백업한다(S122).
도 8은 도 1에 도시된 메모리 시스템의 작동의 다른 실시 예를 설명하기 위한 플로우 차트이고, 도 9는 도 8에 도시된 플로우 차트에 해당하는 작동을 수행할 수 있는 메모리 시스템의 블록도이다.
도 8과 도 9를 참조하면, 메모리 시스템(100B)의 에러 체커(230A)는 제1문턱값(THV1)을 저장하는 제1메모리 장치(231), 비교기(237), 및 제어 회로(239)를 포함한다. 도 9의 동적 리페어 리매퍼(240A)는 제어 회로(242), 제1메모리 장치 (244), 및 제2메모리 장치(246)를 포함하고, 실시 예들에 따라 동적 리페어 리매퍼 (240A)는 SRAM(248)을 더 포함할 수 있다.
정정 불가능 에러가 발생하는 즉시 고장난 로우 영역을 런타임 도중에 동적으로 리페어하는 방법이 도 2 내지 도 6, 도 8, 및 도 9를 참조하여 설명된다.
도 6에 도시된 단계들(S110~S114, S122, S124, 및 S126)은 도 8에 도시된 단계들(S110~S114, S122, S124, 및 S126)과 동일하므로 이들에 대한 설명은 생략한다.
도 8을 참조하면, 제2어드레스(ADD2)를 포함하는 리드 명령(CMD)에 따라 제2로우 영역(ROW2)으로부터 리드된 제2데이터(RDATA2)에 대한 ECC 디코딩 결과 (S112), 제2데이터 (RDATA2)에서 정정 불가능 에러가 검출된 경우(S114의 NO), ECC 디코더(215)는 제2어드레스(ADD2)와 함께 제2에러 종류 정보(TOE2)를 에러 로거 (220)로 전송한다.
에러 로거(220)의 제어 회로(221)는 제2어드레스(ADD2)와 제2에러 종류 정보 (TOE2)를 수신하고, 제2어드레스(ADD2)와 제2에러 종류 정보(TOE2)를 에러 체커 (230A)의 제어 회로(239)로 전송한다.
에러 체커(230A)의 제어 회로(239)는 제2어드레스(ADD2)와 제2에러 종류 정보(TOE2)를 수신하고, 제2에러 종류 정보(TOE2)에 따라 비교기(237)를 디스에이블시키고, 제2에러 종류 정보(TOE2)에 따라 제2데이터(RDATA2)의 백업을 지시하는 제2제어 신호(CTL2)를 곧 바로 생성하고, 제2어드레스(ADD2)와 제2제어 신호(CTL2)를 동적 리페어 리매퍼(240A)로 전송한다.
동적 리페어 리매퍼(240A)의 제어 회로(242)는 제2어드레스(ADD2=UC_ADD_2)와 제2데이터(DATA2)의 백업을 지시하는 제2제어 신호(CTL2)를 수신하고, 제2제어 신호(CTL2)에 응답하여 제2어드레스(ADD2)와 관련된 제2로우 영역(ROW2)으로부터 제2데이터(RDATA2)를 읽어 온다(S120).
도 10은 도 1, 도 7, 또는 도 9에 도시된 메모리 시스템을 포함하는 데이터 처리 시스템의 블록도이다.
도 10을 참조하면, 데이터 처리 시스템(400)은 메모리 시스템(100, 100A, 또는 100B, 이를 집합적으로 '100'이라고도 한다.)과 프로세서(410)를 포함하고, 실시 예들에 따라 불휘발성 메모리 장치(420), 디스플레이 장치(430), 및 통신 장치 (440) 중에서 적어도 하나를 더 포함할 수 있다.
메모리 시스템(100)은 동적 리페어 리매퍼(240, 또는 240A)에 의해 런타임 중에서 생성된 매핑 정보(AMP)를 실시간으로, 주기적으로, 또는 비주기적으로 불휘발성 메모리 장치(420)에 저장할 수 있다. 따라서, 메모리 시스템(100) 또는 데이터 처리 시스템(400)의 파워가 오프(off)되더라도 매핑 정보(AMP)는 불휘발성 메모리 장치(420)에 저장된다.
메모리 시스템(100) 또는 데이터 처리 시스템(400)의 파워가 온(on)되면, 메모리 시스템(100) 또는 데이터 처리 시스템(400)은 불휘발성 메모리 장치(420)로부터 매핑 정보(AMP)를 리드하고, 리드된 매핑 정보(AMP)를 동적 리페어 리매퍼(240, 또는 240A)의 제어 회로(242)를 이용하여 제2메모리 장치(246)에 저장할 수 있으므로, 제어 회로(242)는 매핑 정보(AMP)를 이용하여 어드레스에 매핑된 리페어 어드레스를 이용하여 리페어 로우 영역을 액세스할 수 있다.
예를 들면, 메모리 컨트롤러(200)는 로우 영역과 관련된 어드레스와 리페어 로우 영역과 관련된 리페어 로우 어드레스를 매핑하여 매핑 정보(AMP)를 생성하고, 메모리 컨트롤러(200)의 파워가 오프되기 이전에 매핑 정보(AMP)를 불휘발성 메모리 장치(420)로 전송하고, 파워오프된 메모리 컨트롤러(200)의 파워가 온(on)된 후 불휘발성 메모리 장치(420)에 저장된 매핑 정보(AMP)를 읽어오고, 상기 어드레스를 포함하는 리드 명령을 수신하고, 상기 리드 명령과 매핑 정보(AMP)에 따라, 상기 리페어 로우 영역에 백업된 데이터를 상기 리페어 어드레스를 이용하여 리드한다.
불휘발성 메모리 장치(420)는 솔리드 스테이트 드라이브(solid state drive (SSD))일 수 있으나 이에 한정되는 것은 아니다.
데이터 처리 시스템(400)은 PC, 서버용 데이터 저장 장치, 차량용 인포테인먼트(in-vehicle infotainment(IVI)) 시스템 또는 모바일 장치일 수 있다. 모바일 장치는 스마트폰(smartphone), 랩탑(laptop) 컴퓨터, 모바일 인터넷 장치(Mobile internet Device(MID))일 수 있다.
각 장치(100, 410, 420, 430, 및/또는 440)는 버스(401)를 통해 데이터를 주거나 받을 수 있다.
프로세서(410)는 메모리 시스템(100)의 메모리 컨트롤러(200)로 어드레스 (ADDi)를 포함하는 리드 명령(CMD)을 전송하고, 메모리 컨트롤러(200)로부터 전송된 데이터(DATAi)를 수신할 수 있다.
프로세서(410)는 어드레스(ADDi)와 데이터를 포함하는 라이트 명령(CMD)을 메모리 시스템(100)의 메모리 컨트롤러(200)로 전송하고, 메모리 장치(300)는 메모리 컨트롤러(200)의 제어에 따라 로우 영역들(ROW_1~ROW_X) 중에서 어드레스(ADDi)와 관련된 적어도 하나의 로우 영역에 상기 데이터를 라이트할 수 있다.
프로세서(410)는 메모리 시스템(100)으로부터 출력된 데이터 또는 통신 장치 (440)로부터 출력된 데이터를 불휘발성 메모리 장치(420)에 라이트하거나 디스플레이 장치(430)에 디스플레이할 수 있다.
통신 장치(440)는 인터넷, WiFi네트워크, 또는 이동 통신 네트워크에 접속할 수 있는 유선 또는 무선 통신 장치이다.
본 명세서에서 설명된 방법과 상기 방법을 수행하는 장치(200 또는 400)는 런타임 중에 고장난 로우 영역에 대해 시스템(예를 들면, 메모리 컨트롤러 또는 프로세서)의 접근을 차단하여 상기 고장난 로우 영역을 회피하는 방식이 아니라, 상기 런타임 중에 상기 고장난 로우 영역에 저장된 데이터를 리페어 로우 영역으로 백업하고, 상기 고장난 로우 영역과 관련된 어드레스를 상기 리페어 로우 영역과 관련된 리페어 어드레스를 매핑한다. 따라서, 시스템은 고장난 로우 영역의 존재 여부에도 불구하고 메모리 장치에 대한 리드 작동을 수행할 수 있다.
본 명세서에서 설명된 방법과 상기 방법을 수행하는 장치(200 또는 400)는 런타임 중에 동적으로 적용가능한 RAS(Reliability, availability and serviceability)로 사용될 수 있다.
RAS는 최대 시스템 가동 시간(maximum system uptime)을 보장(ensure)하기 위해 하드웨어의 고장들(hardware failures)을 제거하는 것을 가리키는 컴퓨터 하드웨어 엔지니어링 용어(computer hardware engineering term)이다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 100A, 100B: 메모리 시스템
200: 메모리 컨트롤러
205: 메모리 장치 인터페이스
210: ECC 엔진
215: ECC 디코더
220: 에러 로거
221: 제어 회로
222_1~225_n: 제1그룹의 카운터들
224: 제1테이블
226_1~226_m: 제2그룹의 카운터들
228: 제2테이블
230: 에러 체커
237: 비교기
239: 제어 회로
240: 동적 리페어 리매퍼
250: 버스 인터페이스

Claims (10)

  1. 메모리 영역과 리페어 메모리 영역을 포함하는 메모리 장치의 작동을 제어하는 메모리 컨트롤러의 작동 방법에 있어서,
    제1리드 명령에 포함된 어드레스, 및 상기 어드레스와 관련된 상기 메모리 영역으로부터 리드된 데이터를 수신하는 단계;
    상기 데이터를 에러 정정 코드 디코딩하여 상기 데이터에 포함된 에러의 종류에 대한 에러 종류 정보를 생성하는 단계;
    상기 어드레스와 관련된 상기 데이터에 대한 상기 에러 종류 정보가 몇 번째 발생했는지를 카운트하여 카운트 값을 생성하는 단계;
    상기 카운트 값과 문턱 값을 비교하는 단계; 및
    상기 카운트 값이 상기 문턱 값과 같을 때 상기 메모리 영역에 저장된 상기 데이터를 상기 리페어 메모리 영역에 백업하는 단계를 포함하는 메모리 컨트롤러의 작동 방법.
  2. 제1항에 있어서,
    상기 메모리 영역과 관련된 상기 어드레스와 상기 리페어 메모리 영역과 관련된 리페어 어드레스를 매핑(mapping)하는 단계;
    상기 어드레스를 포함하는 제2리드 명령을 수신하는 단계; 및
    상기 제2리드 명령에 따라, 상기 리페어 메모리 영역에 백업된 데이터를 상기 어드레스에 매핑된 상기 리페어 어드레스를 이용하여 리드하는 단계를 더 포함하는 메모리 컨트롤러의 작동 방법.
  3. 제1항에 있어서,
    상기 백업하는 단계는 실행 시간(runtime) 중에 수행되고,
    상기 메모리 컨트롤러의 작동 방법은,
    상기 메모리 영역과 관련된 상기 어드레스와 상기 리페어 메모리 영역과 관련된 리페어 어드레스를 매핑하는 단계;
    상기 메모리 컨트롤러의 파워가 오프되기 이전에, 상기 어드레스와 매핑된 상기 리페어 어드레스를 포함하는 매핑 정보를 외부 불휘발성 메모리 장치에 저장하기 위해 상기 매핑 정보를 상기 외부 불휘발성 메모리 장치로 전송하는 단계; 및
    오프된 상기 메모리 컨트롤러의 파워가 온(on)된 후, 상기 외부 불휘발성 메모리 장치에 저장된 상기 매핑 정보를 읽어오는 단계;
    상기 어드레스를 포함하는 제2리드 명령을 수신하는 단계; 및
    상기 제2리드 명령과 상기 매핑 정보를 이용하여, 상기 리페어 메모리 영역에 백업된 데이터를 상기 리페어 어드레스를 이용하여 리드하는 단계를 더 포함하는 메모리 컨트롤러의 작동 방법.
  4. 제1항에 있어서, 상기 카운트 값을 생성하는 단계는,
    상기 에러 종류 정보가 상기 에러가 정정 가능 에러임을 나타낼 때 제1그룹의 카운터들 중에서 상기 어드레스에 할당된 어느 하나를 이용하여 상기 카운트 값을 생성하고,
    상기 에러 종류 정보가 상기 에러가 정정 불가능 에러임을 나타낼 때 제2그룹의 카운터들 중에서 상기 어드레스에 할당된 어느 하나를 이용하여 상기 카운트 값을 생성하는 메모리 컨트롤러의 작동 방법.
  5. 제4항에 있어서,
    상기 메모리 장치는 동적 램(Dynamic Random Access Memory(DRAM))이고,
    상기 문턱 값은 제1문턱 값과 상기 제1문턱 값보다 작은 제2문턱 값을 포함하고,
    상기 비교하는 단계는,
    상기 에러 종류 정보가 상기 에러가 상기 정정 가능 에러임을 나타낼 때 상기 카운트 값과 상기 제1문턱 값을 비교하고,
    상기 에러 종류 정보가 상기 에러가 상기 정정 불가능 에러임을 나타낼 때 상기 카운트 값과 상기 제2문턱 값을 비교하고,
    상기 백업하는 단계는,
    상기 카운트 값이 상기 제1문턱 값과 같을 때 또는 상기 카운트 값이 상기 제2문턱 값과 같을 때 상기 메모리 영역에 저장된 상기 데이터를 상기 리페어 메모리 영역에 백업하는 메모리 컨트롤러의 작동 방법.
  6. 메모리 영역과 리페어 메모리 영역을 포함하는 메모리 장치의 작동을 제어하는 메모리 컨트롤러에 있어서,
    제1리드 명령에 포함된 어드레스 및 상기 어드레스와 관련된 상기 메모리 영역으로부터 리드된 데이터를 수신하고, 상기 데이터를 에러 정정 코드 디코딩하여 상기 데이터에 포함된 에러의 종류에 대한 에러 종류 정보를 생성하고, 상기 어드레스와 상기 에러 종류 정보를 출력하는 에러 정정 코드 디코더; 및
    상기 어드레스와 상기 에러 종류 정보를 수신하고, 상기 어드레스와 관련된 상기 데이터에 대한 상기 에러 종류 정보가 몇 번째 발생했는지를 카운트하여 카운트 값을 생성하고, 상기 어드레스와 상기 카운트 값을 출력하는 에러 로거(error logger)를 포함하는 메모리 컨트롤러.
  7. 제6항에 있어서,
    상기 어드레스와 상기 카운트 값을 수신하고, 상기 카운트 값과 문턱 값을 비교하고, 상기 카운트 값이 상기 문턱 값과 같을 때 상기 어드레스와 제어 신호를 출력하는 에러 체커(error checker); 및
    상기 제어 신호에 응답하여 상기 어드레스와 관련된 상기 메모리 영역에 저장된 상기 데이터를 상기 리페어 메모리 영역에 백업하는 동적 리페어 리매퍼(dynamic repair remapper)를 더 포함하는 메모리 컨트롤러.
  8. 제7항에 있어서, 상기 동적 리페어 리매퍼는,
    상기 메모리 영역과 관련된 상기 어드레스와 상기 리페어 메모리 영역과 관련된 리페어 어드레스를 매핑하고,
    상기 어드레스를 포함하는 제2리드 명령이 수신되면, 상기 메모리 장치로 하여금 상기 리페어 메모리 영역에 백업된 데이터를 상기 메모리 컨트롤러로 전송하도록 상기 리페어 어드레스를 상기 메모리 장치로 전송하는 메모리 컨트롤러.
  9. 제7항에 있어서, 상기 에러 로거는,
    제1그룹의 카운터들;
    제2그룹의 카운터들; 및
    상기 에러 종류 정보가 상기 에러가 정정 가능 에러임을 나타낼 때 상기 제1그룹의 카운터들 중에서 제1카운터를 상기 어드레스에 할당하고, 상기 에러 종류 정보가 상기 에러가 정정 불가능 에러임을 나타낼 때 상기 제2그룹의 카운터들 중에서 제2카운터를 상기 어드레스에 할당하고, 상기 제1카운터와 상기 제2카운터 중 어느 하나에 의해 생성된 상기 카운트 값과 상기 어드레스를 상기 에러 체커로 출력하는 메모리 컨트롤러.
  10. 제9항에 있어서,
    상기 에러 로거가 상기 카운트 값, 상기 어드레스, 및 상기 에러 종류 정보를 상기 에러 체커로 전송할 때,
    상기 에러 체커는,
    제1문턱 값과 제2문턱 값을 포함하는 상기 문턱 값을 저장하고,
    상기 에러 종류 정보가 상기 에러가 상기 정정 가능 에러임을 나타낼 때에는 상기 제1문턱 값과 상기 카운트 값을 비교하여 상기 카운트 값이 상기 제1문턱 값과 같을 때 상기 어드레스와 상기 제어 신호를 출력하고,
    상기 에러 종류 정보가 상기 에러가 상기 정정 불가능 에러임을 나타낼 때에는 상기 제2문턱 값과 상기 카운트 값을 비교하여 상기 카운트 값이 상기 제2문턱 값과 같을 때 상기 어드레스와 상기 제어 신호를 출력하는 메모리 컨트롤러.
KR1020220066694A 2022-05-31 2022-05-31 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치 KR20230166563A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220066694A KR20230166563A (ko) 2022-05-31 2022-05-31 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치
US18/124,733 US20230386598A1 (en) 2022-05-31 2023-03-22 Methods for real-time repairing of memory failures caused during operations, memory systems performing repairing methods, and data processing systems including repairing memory systems
CN202310542195.1A CN117149503A (zh) 2022-05-31 2023-05-15 存储器控制器及其操作方法、存储器系统和数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220066694A KR20230166563A (ko) 2022-05-31 2022-05-31 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치

Publications (1)

Publication Number Publication Date
KR20230166563A true KR20230166563A (ko) 2023-12-07

Family

ID=88876703

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220066694A KR20230166563A (ko) 2022-05-31 2022-05-31 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치

Country Status (3)

Country Link
US (1) US20230386598A1 (ko)
KR (1) KR20230166563A (ko)
CN (1) CN117149503A (ko)

Also Published As

Publication number Publication date
US20230386598A1 (en) 2023-11-30
CN117149503A (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
US10019312B2 (en) Error monitoring of a memory device containing embedded error correction
US20090327803A1 (en) Storage control device and storage control method
US8869007B2 (en) Three dimensional (3D) memory device sparing
US10606696B2 (en) Internally-generated data storage in spare memory locations
US9760434B2 (en) ECC method for double pattern flash memory
US8910018B2 (en) Memory with dynamic error detection and correction
US9065481B2 (en) Bad wordline/array detection in memory
US20150248322A1 (en) Memory controller and memory system
US9645904B2 (en) Dynamic cache row fail accumulation due to catastrophic failure
JP4349532B2 (ja) メモリ制御装置、メモリ制御方法、情報処理システム、そのプログラム及び記憶媒体
US11650752B2 (en) Computing system and operating method thereof
US11557366B2 (en) Memory, memory system, operation method of the memory, and operation of the memory system
CN112667445A (zh) 封装后的内存修复方法及装置、存储介质、电子设备
JP2013125513A (ja) 不揮発性半導体記憶装置及びその管理方法
US8995217B2 (en) Hybrid latch and fuse scheme for memory repair
KR20230166563A (ko) 작동 도중에 발생하는 메모리 고장을 실시간으로 리페어링하는 방법과 메모리 시스템, 및 메모리 시스템을 포함하는 데이터 처리 장치
US11182231B2 (en) Host system and computing system including the host system
JP6193112B2 (ja) メモリアクセス制御装置、メモリアクセス制御システム、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
KR20220144129A (ko) 메모리 장치 및 그것을 포함하는 반도체 시스템
KR20210062546A (ko) 메모리, 메모리 시스템, 메모리의 동작 방법 및 메모리 시스템의 동작 방법
JP2012230730A (ja) 半導体装置