KR20210088916A - 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템 - Google Patents

이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR20210088916A
KR20210088916A KR1020200001998A KR20200001998A KR20210088916A KR 20210088916 A KR20210088916 A KR 20210088916A KR 1020200001998 A KR1020200001998 A KR 1020200001998A KR 20200001998 A KR20200001998 A KR 20200001998A KR 20210088916 A KR20210088916 A KR 20210088916A
Authority
KR
South Korea
Prior art keywords
error
memory device
memory
memory devices
unit
Prior art date
Application number
KR1020200001998A
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 KR1020200001998A priority Critical patent/KR20210088916A/ko
Priority to DE102020208450.5A priority patent/DE102020208450A1/de
Priority to US16/923,819 priority patent/US11609813B2/en
Priority to JP2020130222A priority patent/JP2021111325A/ja
Priority to CN202010809375.8A priority patent/CN113157484A/zh
Publication of KR20210088916A publication Critical patent/KR20210088916A/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/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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/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/1068Adding 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 sector programmable memories, e.g. flash disk
    • 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/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • 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/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/079Root cause analysis, i.e. error or fault diagnosis
    • 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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/1202Word line control
    • 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/1204Bit line control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 기술은 이전에 발생한 에러 분석을 통해 에러대응동작을 선택할 수 있는 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템에 관한 것으로서, 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역, 및 제1에러정정부를 각각 포함하는 다수의 메모리 장치를 포함하는 메모리 시스템; 및 제2에러정정부를 포함하며, 상기 메모리 시스템으로부터 전달된 데이터의 에러를 상기 제2에러정정부가 정정하고, 상기 제2에러정정부의 에러 정정동작에 대한 에러정정정보를 생성하며, 상기 에러정정정보 및 상기 다수의 메모리 장치 각각에서 생성된 로그(log)정보를 이용하여 상기 다수의 메모리 장치 각각에 대해 에러가중치를 설정하고, 상기 에러가중치에 대응하는 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 호스트를 포함하며, 상기 다수의 메모리 장치 각각은, 상기 다수의 셀 어레이 영역에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 제1에러정정부가 정정하고, 상기 제1에러정정부의 에러 정정동작에 대한 상기 로그(log)정보를 생성한다.

Description

이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템{APPARATUS AND METHOD FOR SELECTING AN ERROR SOLUTION OPERATION OF MEMORY SYSTEM BY ANALYZING PREVIOUSLY OCCURRING ERROR AND DATA PROCESS SYSTEM INCLUDING THE SAME}
본 발명은 데이터 처리 시스템에 관한 것으로서, 구체적으로 이전에 발생한 에러 분석을 통해 에러대응동작을 선택할 수 있는 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템에 관한 것이다.
컴퓨팅 장치 혹은 유무선 전자 장치들, 예컨대, 서버, 데스크탑 컴퓨터, 랩탑 컴퓨터와 같은 컴퓨팅 장치 혹은 휴대폰, 게임기, TV, 프로젝터 등과 같은 전자장치는 동작과정에서 매우 많은 데이터를 생성하고 처리할 수 있다. 이렇게, 동작과정에서 생성되고 처리되는 데이터를 저장하기 위해 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장장치를 사용할 수 있다. 데이터 저장장치는, 컴퓨팅 장치 혹은 전자장치의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다.
한편, 메모리 시스템에는 다수의 메모리 장치가 포함될 수 있으며, 다수의 메모리 장치로부터 데이터를 라이트/리드하는 과정에서 일부 데이터가 정상적으로 라이트/리드되지 못하는 에러가 발생할 수 있다. 일반적으로 에러를 복구하는 알고리즘을 통해 에러가 발생한 대부분의 데이터를 정상적인 데이터로서 처리가 가능하긴 하다. 하지만, 에러를 복구하는 알고리즘을 통해서도 처리할 수 없는 심각한 에러가 존재할 수 있으며, 이와 같은 심각한 에러가 발생하는 경우, 메모리 시스템 전체의 신뢰성을 크게 떨어트릴 수 있다.
따라서, 심각한 에러가 어떤 시점에 어떤 영역에서 발생할지를 미리 예측하는 동작은 매우 중요할 수 있다. 하지만, 종래에는 에러의 발생 횟수를 카운팅하는 동작을 통해 통계적인 방식으로 에러의 발생을 예측했기 때문에, 그 정확도가 매우 떨어지는 문제점이 있었다.
본 발명의 실시예는 다수의 메모리 장치를 포함하는 메모리 시스템에서 이전에 발생했던 에러를 분석하여 다수의 메모리 장치 각각에 에러대응동작을 수행할 수 있는 장치 및 방법을 포함하는 데이터 처리 시스템을 제공한다.
본 발명의 실시예에 따른 데이터 처리 시스템은, 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역, 및 제1에러정정부를 각각 포함하는 다수의 메모리 장치를 포함하는 메모리 시스템; 및 제2에러정정부를 포함하며, 상기 메모리 시스템으로부터 전달된 데이터의 에러를 상기 제2에러정정부가 정정하고, 상기 제2에러정정부의 에러 정정동작에 대한 에러정정정보를 생성하며, 상기 에러정정정보 및 상기 다수의 메모리 장치 각각에서 생성된 로그(log)정보를 이용하여 상기 다수의 메모리 장치 각각에 대해 에러가중치를 설정하고, 상기 에러가중치에 대응하는 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 호스트를 포함하며, 상기 다수의 메모리 장치 각각은, 상기 다수의 셀 어레이 영역에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 제1에러정정부가 정정하고, 상기 제1에러정정부의 에러 정정동작에 대한 상기 로그(log)정보를 생성할 수 있다.
또한, 상기 다수의 메모리 장치 각각은, 리드/라이트 동작을 포함하는 액세스 동작의 수행 중 액세스 데이터에 에러가 발생하는 경우, 발생한 에러를 정정하기 위해 내부에 포함된 상기 제1에러정정부를 동작시키며, 상기 제1에러정정부에 의해 에러가 정정된 데이터의 로우데이터(raw data)를 내부의 정보저장영역에 누적-저장하여 상기 로그정보를 생성하고, 상기 호스트의 요청에 따라 상기 로그정보를 상기 메모리 시스템을 통해 상기 호스트로 출력할 수 있다.
또한, 상기 호스트는, 상기 에러정정정보를 실시간 또는 설정된 시점에서 수집하고, 상기 설정된 시점에서 상기 메모리 시스템으로부터 상기 로그정보를 수집하는 에러수집부; 상기 로그정보 및 상기 에러정정정보를 분석하여 상기 다수의 메모리 장치 각각에서 발생한 에러의 개수 및 종류를 확인하며, 확인결과에 따라 상기 다수의 메모리 장치 각각에 대한 에러등급을 결정하는 제1에러분석부; 상기 제1에러분석부에서 결정된 에러등급에 따라 상기 다수의 메모리 장치 중 일부 메모리 장치에 대해서는 상기 로그정보 및 상기 에러정정정보의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 나머지 메모리 장치에 대해서는 상기 제1에러분석부에서 결정된 에러등급에 대응하도록 에러가중치를 결정하는 제2에러분석부; 및 상기 제2에러분석부에서 결정된 에러가중치에 대응하는 상기 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 대응동작부를 포함할 수 있다.
또한, 상기 제1에러분석부는, 상기 다수의 메모리 장치 중 내부에서 발생한 에러의 개수가 제1기준개수 이상인 메모리 장치를 제1메모리 장치로 구분하고, 상기 제1메모리 장치 중 발생한 에러의 종류가 제2기준개수 이상의 워드라인에서 발생한 제1에러인 경우, 대응하는 상기 제1메모리 장치를 제1에러등급을 갖는 제2메모리 장치로 구분하고, 상기 제1메모리 장치 중 발생한 에러의 종류가 상기 제1에러가 아닌 다른 종류의 에러인 경우, 대응하는 상기 제1메모리 장치를 제2에러등급을 갖는 제3메모리 장치로 구분할 수 있다.
또한, 상기 제1 및 제2에러정정부 각각은, 상기 다수의 메모리 장치 각각에서 입/출력되는 데이터에 대한 에러 정정동작을 에러정정코드(ECC, Error Correction Code)가 포함된 코드워드(code word) 단위로 수행하며, 상기 제2에러분석부는, 상기 제2메모리 장치 중 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐지고(across) 포함된 에러 개수의 합계가 제4기준개수 이상인 경우, 대응하는 상기 제2메모리 장치를 제1에러가중치를 갖는 제4메모리 장치로 구분하며, 상기 제2메모리 장치 중 발생한 에러의 형태가, 상기 제3기준개수 이상의 코드워드에 걸쳐지고 포함된 에러 개수의 합계가 상기 제4기준개수 미만인 경우, 또는 상기 제3기준개수 미만의 코드워드에 걸쳐지는 경우, 대응하는 상기 제2메모리 장치를 제2에러가중치를 갖는 제5메모리 장치로 구분하며, 상기 제3메모리 장치에 상기 제2에러가중치를 부여하여 상기 제5메모리 장치로 구분할 수 있다.
또한, 상기 대응동작부는, 상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작과, 상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작, 및 상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작 중 어느 하나의 동작을 상기 제4메모리 장치의 상태에 따라 상기 에러대응동작으로서 선택하여 수행할 수 있다.
또한, 상기 호스트는, 상기 메모리 시스템으로 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 상기 설정된 시점으로 지정하는 동작과, 상기 메모리 시스템에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러 개수를 카운팅하여 제5기준개수를 초과할 때마다, 초과하는 시점을 상기 설정된 시점으로 지정한 뒤, 에러 개수의 카운팅을 초기화하는 동작, 및 상기 메모리 시스템에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러를 정정하기 위한 에러 정정동작에 특정시간 이상 소요되는 시점을 상기 설정된 시점으로 지정하는 동작 중 적어도 하나의 동작을 선택하여 수행할 수 있다.
본 발명의 실시예에 따른 메모리 시스템은, 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역 및 제1에러정정부를 각각 포함하며, 상기 다수의 셀 어레이 영역에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 제1에러정정부가 정정하고, 상기 제1에러정정부의 에러 정정동작에 대한 로그(log)정보를 생성하는 다수의 메모리 장치; 및 제2에러정정부를 포함하며, 상기 다수의 메모리 장치로부터 전달된 데이터의 에러를 상기 제2에러정정부가 정정하고, 상기 제2에러정정부의 에러 정정동작에 대한 에러정정정보를 생성하며, 상기 로그정보 및 상기 에러정정정보를 이용하여 상기 다수의 메모리 장치 각각에 대해 에러가중치를 설정하고, 상기 다수의 메모리 장치 각각에 대해 상기 에러가중치에 대응하는 에러대응동작을 수행하는 컨트롤러를 포함할 수 있다.
또한, 상기 다수의 메모리 장치 각각은, 리드/라이트 동작을 포함하는 액세스 동작의 수행 중 액세스 데이터에 에러가 발생하는 경우, 발생한 에러를 정정하기 위해 내부에 포함된 상기 제1에러정정부를 동작시키며, 상기 제1에러정정부에 의해 에러가 정정된 데이터의 로우데이터(raw data)를 내부의 정보저장영역에 누적-저장하여 상기 로그정보를 생성하고, 상기 컨트롤러의 요청에 따라 상기 로그정보를 상기 컨트롤러로 출력할 수 있다.
또한, 상기 컨트롤러는, 상기 에러정정정보를 실시간 또는 설정된 시점에서 수집하고, 상기 설정된 시점에서 상기 다수의 메모리 장치 각각으로부터 상기 로그정보를 수집하는 에러수집부; 상기 로그정보 및 상기 에러정정정보를 분석하여 상기 다수의 메모리 장치 각각에서 발생한 에러의 개수 및 종류를 확인하며, 확인결과에 따라 상기 다수의 메모리 장치 각각에 대한 에러등급을 결정하는 제1에러분석부; 상기 제1에러분석부에서 결정된 에러등급에 따라 상기 다수의 메모리 장치 중 일부 메모리 장치에 대해서는 상기 로그정보 및 상기 에러정정정보의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 나머지 메모리 장치에 대해서는 상기 제1에러분석부에서 결정된 에러등급에 대응하도록 에러가중치를 결정하는 제2에러분석부; 및 상기 제2에러분석부에서 결정된 에러가중치에 대응하는 상기 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 대응동작부를 포함할 수 있다.
또한, 상기 제1에러분석부는, 상기 다수의 메모리 장치 중 내부에서 발생한 에러의 개수가 제1기준개수 이상인 메모리 장치를 제1메모리 장치로 구분하고, 상기 제1메모리 장치 중 발생한 에러의 종류가 제2기준개수 이상의 워드라인에서 발생한 제1에러인 경우, 대응하는 상기 제1메모리 장치를 제1에러등급을 갖는 제2메모리 장치로 구분하고, 상기 제1메모리 장치 중 발생한 에러의 종류가 상기 제1에러가 아닌 다른 종류의 에러인 경우, 대응하는 상기 제1메모리 장치를 제2에러등급을 갖는 제3메모리 장치로 구분할 수 있다.
또한, 상기 제1 및 제2에러정정부 각각은, 상기 다수의 메모리 장치 각각에서 입/출력되는 데이터에 대한 에러 정정동작을 에러정정코드(ECC, Error Correction Code)가 포함된 코드워드(code word) 단위로 수행하며, 상기 제2에러분석부는, 상기 제2메모리 장치 중 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐지고(across) 포함된 에러 개수의 합계가 제4기준개수 이상인 경우, 대응하는 상기 제2메모리 장치를 제1에러가중치를 갖는 제4메모리 장치로 구분하며, 상기 제2메모리 장치 중 발생한 에러의 형태가, 상기 제3기준개수 이상의 코드워드에 걸쳐지고 포함된 에러 개수의 합계가 상기 제4기준개수 미만인 경우, 또는 상기 제3기준개수 미만의 코드워드에 걸쳐지는 경우, 대응하는 상기 제2메모리 장치를 제2에러가중치를 갖는 제5메모리 장치로 구분하며, 상기 제3메모리 장치에 상기 제2에러가중치를 부여하여 상기 제5메모리 장치로 구분할 수 있다.
또한, 상기 대응동작부는, 상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작과, 상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작, 및 상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작 중 어느 하나의 동작을 상기 제4메모리 장치의 상태에 따라 상기 에러대응동작으로서 선택하여 수행할 수 있다.
또한, 상기 컨트롤러는, 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 상기 설정된 시점으로 지정하는 동작과, 상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러 개수를 카운팅하여 제5기준개수를 초과할 때마다, 초과하는 시점을 상기 설정된 시점으로 지정한 뒤, 에러 개수의 카운팅을 초기화하는 동작, 및 상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러를 정정하기 위한 에러 정정동작에 특정시간 이상 소요되는 시점을 상기 설정된 시점으로 지정하는 동작 중 적어도 하나의 동작을 선택하여 수행할 수 있다.
또한, 본 발명의 실시예에 따른 메모리 시스템의 동작방법은, 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역, 및 에러정정부를 각각 포함하는 다수의 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어서, 상기 다수의 메모리 장치 각각에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 에러정정부가 정정하고, 상기 에러정정보의 에러 정정동작에 대한 로그(log)정보를 생성하는 생성단계; 상기 로그정보를 이용하여 상기 다수의 메모리 장치 각각에 대한 에러가중치를 설정하는 분석단계; 및 상기 에러가중치에 대응하는 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 대응단계를 포함할 수 있다.
또한, 상기 생성단계는, 상기 다수의 메모리 장치 각각에 대한 액세스 동작의 수행 중 액세스 데이터에 에러가 발생하는 경우, 발생한 에러를 정정하기 위해 상기 에러정정부를 동작시키는 동작단계; 및 상기 동작단계에서 상기 에러정정부에 의해 에러가 정정된 데이터에 대한 로우데이터(raw data)를 상기 다수의 메모리 장치 각각에 포함된 정보저장영역에 누적-저장하여 상기 로그정보를 생성하는 단계를 포함할 수 있다.
또한, 상기 분석단계는, 설정된 시점마다 상기 정보저장영역에 저장된 상기 로그정보를 수집하는 수집단계; 및 상기 수집단계에서 수집된 상기 로그정보를 분석하여 상기 다수의 메모리 장치 각각에서 발생한 에러의 개수 및 종류를 확인하며, 확인결과에 따라 상기 다수의 메모리 장치 각각에 대한 에러등급을 결정하는 에러분석단계를 포함할 수 있다.
또한, 상기 에러분석단계는, 상기 다수의 메모리 장치 중 내부에서 발생한 에러의 개수가 제1기준개수 이상인 메모리 장치를 제1메모리 장치로 구분하는 단계; 상기 제1메모리 장치 중 발생한 에러의 종류가 제2기준개수 이상의 워드라인에서 발생한 제1에러인 경우, 대응하는 상기 제1메모리 장치를 제1에러등급을 갖는 제2메모리 장치로 구분하는 단계; 및 상기 제1메모리 장치 중 발생한 에러의 종류가 상기 제1에러가 아닌 다른 종류의 에러인 경우, 대응하는 상기 제1메모리 장치를 제2에러등급을 갖는 제3메모리 장치로 구분하는 단계를 포함할 수 있다.
또한, 상기 대응단계는, 상기 제2메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작과, 상기 제2메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작, 및 상기 제2메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작 중 어느 하나의 동작을 상기 제2메모리 장치의 상태에 따라 선택하여 상기 에러대응동작으로서 수행할 수 있다.
또한, 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 상기 설정된 시점으로 지정하는 단계; 상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러 개수를 카운팅하여 제5기준개수를 초과할 때마다, 초과하는 시점을 상기 설정된 시점으로 지정한 뒤, 에러 개수의 카운팅을 초기화하는 단계; 및 상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러를 정정하기 위한 에러 정정동작에 특정시간 이상 소요되는 시점을 상기 설정된 시점으로 지정하는 단계 중 적어도 하나의 단계를 더 포함할 수 있다.
본 기술은 다수의 메모리 장치를 포함하는 메모리 시스템에서 다수의 메모리 장치 각각에 대한 액세스 동작 중 발생한 에러의 로그정보를 생성한 뒤, 에러의 로그정보를 에러의 개수와 종류 및 형태를 기준으로 분석하여 다수의 메모리 장치 각각에 대해 에러가중치를 설정함으로써, 다수의 메모리 장치 각각에 대해 독립적인 에러대응동작을 수행할 수 있다.
이로 인해, 다수의 메모리 장치 중 심각한 에러가 발생할 가능성이 높은 메모리 장치 또는 메모리 장치의 특정영역을 미리 예측하여 그에 맞는 에러대응동작을 수행하는 효과가 있다.
도 1a는 본 발명의 제1실시예에 따른 데이터 처리 시스템의 구성을 설명하기 위해 도시한 도면.
도 1b는 본 발명의 제2실시예에 따른 메모리 시스템의 구성을 설명하기 위해 도시한 도면.
도 1c는 본 발명의 제3실시예에 따른 메모리 시스템의 구성을 설명하기 위해 도시한 도면.
도 2 내지 도 5b는 본 발명의 실시예에 따른 로그정보 분석동작을 설명하기 위해 도시한 도면.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1a는 본 발명의 제1실시예에 따른 데이터 처리 시스템의 구성을 설명하기 위해 도시한 도면이다.
도 1a를 참조하면, 본 발명의 제1실시예에 따른 데이터 처리 시스템은, 호스트(102), 및 메모리 시스템(110)을 포함할 수 있다. 여기서, 메모리 시스템(110)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)를 포함할 수 있다. 그리고, 호스트(102)는, 에러수집부(1021)와, 제1에러분석부(1023)와, 제2에러분석부(1024)와, 대응동작부(1025), 및 호스트 ECC(1026)를 포함할 수 있다.
그리고, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 다수의 메모리 뱅크(BK<1:4>)와, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8), 및 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)를 포함할 수 있다.
참고로, 도 1a에 도시된 도면은 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각이 DRAM인 것을 가정하였으며, 메모리 장치(10)가 다른 종류의 메모리 장치일 경우, 상세구성이 변경될 수 있다. 구체적으로, 다수의 메모리 뱅크(BK<1:4>) 각각에는, 다수의 워드라인(WL1, WL2 ... WLX)과 다수의 비트라인(BL1, BL2, BL3 ... BLY)에 어레이(Array) 형태로 접속된 다수의 메모리 셀(CELL)을 포함할 수 있으며, 다수의 메모리 셀 각각은 적어도 1비트의 데이터를 저장할 수 있다. 즉, 다수의 메모리 뱅크(BK<1:4>) 각각은, 다수의 메모리 셀이 어레이 형태로 포함된 '셀 어레이 영역'이라고 볼 수 있다. 따라서, '다수의 메모리 뱅크'라는 표현은 메모리 장치(10)가 DRAM인 것을 가정한 것이며, 다른 종류의 메모리 장치일 경우 '다수의 셀 어레이 영역'이라는 표현으로 대체될 수 있을 것이다. 정리하면, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 내부 구성은 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 특성, 메모리 시스템(110)이 사용되는 목적, 혹은 호스트(102)에서 요구하는 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
그리고, 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작, 예컨대, 데이터의 리드/라이트 동작을 수행하는 과정에서 에러가 발생하여 내부에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)의 동작을 통해 에러가 복구되는 경우, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 데이터에 대한 로그정보(LOG_INFO)를 생성할 수 있다. 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작 중 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터(raw data)를 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 누적-저장하여 로그정보(LOG_INFO)를 생성할 수 있다. 이때, 로그정보(LOG_INFO)에 포함되는 에러와 관련된 로우 데이터(raw data)는, 에러의 발생과 관련하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 생성할 수 있는 모든 데이터를 의미할 수 있다. 즉, 로그정보(LOG_INFO)에 포함되는 에러와 관련된 로우 데이터는, 에러의 발생시점과, 발생위치와, 발생형태와, 종류 및 발생개수를 나타내는 데이터일 수 있다. 예컨대, 에러가 발생한 데이터의 비트 수, 에러가 발생한 데이터의 물리적인 저장위치, 절대적인 에러발생시점, 에러가 발생한 물리적인 영역의 범위, 및 발생한 에러의 종류 등을 나타내는 데이터일 수 있다. 그리고, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 레지스터(register) 형태로 포함된 저장공간일 수 있다. 또한, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 다수의 뱅크(BK<1:4>) 중 적어도 하나의 뱅크에서 적어도 일부 공간일 수 있다.
그리고, 호스트(102)는, 다음과 같은 동작을 통해 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생한 에러와 관련된 로우데이터(raw data)를 수집할 수 있다.
첫 번째 동작은, 전술한 설명과 같이 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 동작 중 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터가 로그정보(LOG_INFO)로서 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 누적되어 저장될 수 있다. 따라서, 호스트(102)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)으로부터 로그정보(LOG_INFO)를 수집할 수 있다.
두 번째 동작은, 호스트(102)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 동작, 예컨대, 데이터의 리드 동작 중 내부에 포함된 호스트 ECC(1026)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터를 에러정정정보(ERR_CO_INFO)로서 생성하여 수집할 수 있다. 이때, 호스트(102)에 포함된 호스트 ECC(1026)에 의해 에러가 복구된 액세스 동작의 경우, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에서 에러를 복구하지 못한 액세스 동작이라고 가정할 수 있다. 이때, 에러정정정보(ERR_CO_INFO)에 포함되는 에러와 관련된 로우데이터는, 에러의 발생과 관련하여 호스트 ECC(1026)에서 생성할 수 있는 모든 데이터를 의미할 수 있다. 즉, 에러정정정보(ERR_CO_INFO)에 포함되는 에러와 관련된 로우데이터는, 에러의 발생시점과, 발생위치와, 발생형태와, 종류 및 발생개수를 나타내는 데이터일 수 있다. 예컨대, 에러가 발생한 데이터의 비트 수, 에러가 발생한 데이터의 물리적인 저장위치, 절대적인 에러발생시점, 에러가 발생한 물리적인 영역의 범위, 및 발생한 에러의 종류 등을 나타내는 데이터일 수 있다.
호스트(102)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생했던 에러의 개수와 종류 및 형태를 파악하는 것이 가능하다. 따라서, 호스트(102)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 에러의 개수와 종류 및 형태를 기준으로 분석하여 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 에러가중치를 설정할 수 있다. 또한, 호스트(102)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 에러가중치에 대응하는 에러대응동작을 수행할 수 있다.
좀 더 구체적으로, 호스트(102)에 포함된 에러수집부(1021)는, 설정된 시점에서 정보수집을 위한 커맨드(미도시)를 메모리 시스템(110)으로 전달한 뒤, 정보수집을 위한 커맨드에 응답하여 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)의 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)으로부터 출력되는 로그정보(LOG_INFO)를 전달받아 수집할 수 있다. 또한, 에러수집부(1021)는, 호스트 ECC(1026)에서 생성된 에러정정정보(ERR_CO_INFO)를 실시간 또는 설정된 시점마다 수집할 수 있다.
여기서, 호스트(102)는, 설정된 시점을 다음과 같은 여러 개의 시점 중 적어도 하나 이상의 시점을 선택하여 지정할 수 있다.
첫 번째, 메모리 시스템(110)에 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 설정된 시점으로 지정할 수 있다.
두 번째, 메모리 시스템(110)에 대한 액세스 동작, 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대한 액세스 동작 중에서 발생한 에러 개수를 카운팅하되, 카운팅 개수가 미리 정해진 기준개수를 초과할 때마다, 초과하는 시점을 설정된 시점으로 지정할 수 있다. 이때, 설정된 시점이 지정될 때마다 카운팅 개수는 초기화될 수 있다. 예컨대, 에러 개수의 카운팅은 호스트 ECC(1026)에서 수행될 수 있다.
세 번째, 메모리 시스템(110)에 대한 액세스 동작, 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대한 액세스 동작 중에서 발생한 에러를 복구하기 위한 에러복구동작을 수행하되, 에러복구동작에 소요된 시간이 특정시간 이상 소요되는 시점을 설정된 시점으로 지정할 수 있다. 이때, 에러복구동작에 소요된 시간이 특정시간 이상 소요된다는 것은, 발생한 에러를 복구하는 과정에서 해밍 코드(hamming code)를 사용하는 상대적으로 간단한 에러복구동작이 실패하여 리드 솔로몬 코드를 사용하는 상대적으로 복잡한 에러복구동작이 사용되었다는 것을 의미할 수 있다. 예컨대, 에러복구동작은 호스트 ECC(1026)에서 수행될 수 있다.
그리고, 에러수집부(1021)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 호스트(102) 내부의 설정된 공간에 저장할 수 있다. 이때, 도면에 도시된 것과 같이 에러수집부(1021) 내부에 별도의 저장영역이 될 수 있다. 또한, 호스트(102) 내부의 설정된 공간은, 도면에 직접 도시되지 않았지만 호스트(102) 내부에 포함되어 호스트(102)의 동작 메모리로서 사용되는 호스트 메모리의 특정 저장공간이 될 수 있다. 그리고, 제1에러분석부(1023)는, 에러수집부(1021)에서 수집한 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생한 에러의 개수 및 종류를 확인하고, 확인된 에러의 개수 및 종류에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급을 결정할 수 있다. 이때, 제1에러분석부(1023)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 관련된 정보는, 호스트(102) 내부의 설정된 공간에 저장될 수 있다.
그리고, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 일부 메모리 장치를 선택할 수 있다. 또한, 제2에러분석부(1024)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 선택된 일부 메모리 장치에 대해서는 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 일부 메모리 장치를 제외한 나머지 메모리 장치에 대해서는 제1에러분석부(1023)에서 결정된 에러등급에 대응하도록 에러가중치를 결정할 수 있다. 이때, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치를 호스트(102) 내부의 설정된 공간에서 리드할 수 있다. 또한, 제2에러분석부(1024)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 관련된 정보는 호스트(102) 내부의 설정된 공간에 저장될 수 있다.
그리고, 대응동작부(1025)는, 제2에러분석부(1024)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 수행할 수 있다. 이때, 대응동작부(1025)는, 제2에러분석부(1024)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치를 호스트(102) 내부의 설정된 공간에서 리드할 수 있다.
그리고, 호스트 ECC(1026)는, 메모리 시스템(110)에 저장하기 위해 생성한 데이터에 대해 에러 정정 인코딩(error correction encoding) 동작을 수행하여 에러정정코드(ECC, Error Correction Code)를 생성할 수 있다. 호스트(102)는, 메모리 시스템(110)에 저장할 데이터에 에러정정코드를 포함시킨 코드워드(code word) 단위의 데이터를 메모리 시스템(110)으로 전달할 수 있다. 메모리 시스템(110)은, 호스트(102)로부터 입력된 코드워드 단위의 데이터를 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 저장할 수 있다. 또한, 호스트 ECC(1026)는, 메모리 시스템(110)으로부터 입력된 데이터에 에러가 발생하였는지 여부를 확인하는 동작, 및 입력된 데이터에 에러가 발생한 경우 에러 정정 디코딩(error correction decoding), 즉, 에러복구동작을 수행하여 에러 발생 이전의 정상 데이터를 복구할 수 있다. 이때, 호스트(102)에서 메모리 시스템(110)으로 전달한 데이터가 코드워드 단위의 데이터이므로, 메모리 시스템(110)에서 호스트(102)로 입력된 데이터도 코드워드 단위의 데이터일 수 있다. 따라서, 호스트 ECC(1026)는, 호스트(102)로 입력된 코드워드 단위의 데이터에 포함된 에러정정코드를 사용하여 에러복구동작을 수행할 수 있다. 이때, 호스트 ECC(1026)는, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러복구동작을 실패할 수 있으며 에러가 발생한 비트를 정정할 수 없다. 한편, 호스트 ECC(1026)는, 해밍 코드(hamming code), LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, 호스트 ECC(1026)는 오류 정정을 위한 코드, 회로, 모듈, 시스템, 또는 장치를 모두 포함할 수 있다.
참고로, 호스트(102)에 포함된 호스트 ECC(1026)와, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)는, 에러 정정 가능한 데이터의 크기 차이를 가질 수 있다. 예컨대, 호스트 ECC(1026)에서 에러 정정 가능한 데이터의 크기가 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에서 정정 가능한 데이터의 크기보다 더 클 수 있다. 또한, 전술한 설명에서는 호스트 ECC(1026)와 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)가 모두 에러정정동작을 수행할 수 있는 것으로 설명한 바 있는데, 이는 어디까지나 하나의 실시예일 뿐이므로, 한정되는 것은 아니다. 예컨대, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)는 에러의 발생 여부를 확인하는 동작만 수행하고, 호스트 ECC(1026)는 에러의 발생 여부 확인동작 및 에러정정동작을 모두 수행하는 실시예도 얼마든지 가능하다.
도 1b는 본 발명의 제2실시예에 따른 데이터 처리 시스템의 구성을 설명하기 위해 도시한 도면이다.
도 1b를 참조하면, 본 발명의 제2실시예에 따른 데이터 처리 시스템은, 호스트(102), 및 메모리 시스템(110)을 포함할 수 있다. 여기서, 메모리 시스템(110)은, 컨트롤러(130), 및 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)를 포함할 수 있다. 그리고, 컨트롤러(130)는, 에러수집부(1301)와, 제1에러분석부(1303)와, 제2에러분석부(1304)와, 대응동작부(1305), 및 시스템 ECC(1306)를 포함할 수 있다.
그리고, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 다수의 메모리 뱅크(BK<1:4>)와, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8), 및 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)를 포함할 수 있다.
참고로, 도 1b에 도시된 도면은 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각이 DRAM인 것을 가정하였으며, 메모리 장치(10)가 다른 종류의 메모리 장치일 경우, 상세구성이 변경될 수 있다. 구체적으로, 다수의 메모리 뱅크(BK<1:4>) 각각에는, 다수의 워드라인(WL1, WL2 ... WLX)과 다수의 비트라인(BL1, BL2, BL3 ... BLY)에 어레이(Array) 형태로 접속된 다수의 메모리 셀(CELL)을 포함할 수 있으며, 다수의 메모리 셀 각각은 적어도 1비트의 데이터를 저장할 수 있다. 즉, 다수의 메모리 뱅크(BK<1:4>) 각각은, 다수의 메모리 셀이 어레이 형태로 포함된 '셀 어레이 영역'이라고 볼 수 있다. 따라서, '다수의 메모리 뱅크'라는 표현은 메모리 장치(10)가 DRAM인 것을 가정한 것이며, 다른 종류의 메모리 장치일 경우 '다수의 셀 어레이 영역'이라는 표현으로 대체될 수 있을 것이다. 정리하면, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 내부 구성은 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 특성, 메모리 시스템(110)이 사용되는 목적, 혹은 호스트(102)에서 요구하는 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
그리고, 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작, 예컨대, 데이터의 리드/라이트 동작을 수행하는 과정에서 에러가 발생하여 내부에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)의 동작을 통해 에러가 복구되는 경우, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 데이터에 대한 로그정보(LOG_INFO)를 생성할 수 있다. 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작 중 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터(raw data)를 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 누적-저장하여 로그정보(LOG_INFO)를 생성할 수 있다. 이때, 로그정보(LOG_INFO)에 포함되는 에러와 관련된 로우 데이터(raw data)는, 에러의 발생과 관련하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 생성할 수 있는 모든 데이터를 의미할 수 있다. 즉, 로그정보(LOG_INFO)에 포함되는 에러와 관련된 로우 데이터는, 에러의 발생시점과, 발생위치와, 발생형태와, 종류 및 발생개수를 나타내는 데이터일 수 있다. 예컨대, 에러가 발생한 데이터의 비트 수, 에러가 발생한 데이터의 물리적인 저장위치, 절대적인 에러발생시점, 에러가 발생한 물리적인 영역의 범위, 및 발생한 에러의 종류 등을 나타내는 데이터일 수 있다. 그리고, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 레지스터(register) 형태로 포함된 저장공간일 수 있다. 또한, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 다수의 뱅크(BK<1:4>) 중 적어도 하나의 뱅크에서 적어도 일부 공간일 수 있다.
그리고, 컨트롤러(130)는, 다음과 같은 동작을 통해 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생한 에러와 관련된 로우데이터(raw data)를 수집할 수 있다.
첫 번째 동작은, 전술한 설명과 같이 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 동작 중 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터가 로그정보(LOG_INFO)로서 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 누적되어 저장될 수 있다. 따라서, 컨트롤러(130)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)으로부터 로그정보(LOG_INFO)를 수집할 수 있다.
두 번째 동작은, 컨트롤러(130)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 동작, 예컨대, 데이터의 리드 동작 중 내부에 포함된 시스템 ECC(1306)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터를 에러정정정보(ERR_CO_INFO)로서 생성하여 수집할 수 있다. 이때, 컨트롤러(130)에 포함된 시스템 ECC(1306)에 의해 에러가 복구된 액세스 동작의 경우, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에서 에러를 복구하지 못한 액세스 동작이라고 가정할 수 있다. 이때, 에러정정정보(ERR_CO_INFO)에 포함되는 에러와 관련된 로우데이터는, 에러의 발생과 관련하여 시스템 ECC(1306)에서 생성할 수 있는 모든 데이터를 의미할 수 있다. 즉, 에러정정정보(ERR_CO_INFO)에 포함되는 에러와 관련된 로우데이터는, 에러의 발생시점과, 발생위치와, 발생형태와, 종류 및 발생개수를 나타내는 데이터일 수 있다. 예컨대, 에러가 발생한 데이터의 비트 수, 에러가 발생한 데이터의 물리적인 저장위치, 절대적인 에러발생시점, 에러가 발생한 물리적인 영역의 범위, 및 발생한 에러의 종류 등을 나타내는 데이터일 수 있다.
컨트롤러(130)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생했던 에러의 개수와 종류 및 형태를 파악하는 것이 가능하다. 따라서, 컨트롤러(130)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 에러의 개수와 종류 및 형태를 기준으로 분석하여 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 독립적으로 에러가중치를 설정할 수 있다. 또한, 컨트롤러(130)는, 에러가중치에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 독립적으로 수행할 수 있다.
좀 더 구체적으로, 컨트롤러(130)에 포함된 에러수집부(1301)는, 설정된 시점에서 정보수집을 위한 커맨드(미도시)를 메모리 시스템(110)으로 전달한 뒤, 정보수집을 위한 커맨드에 응답하여 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)의 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)으로부터 출력되는 로그정보(LOG_INFO)를 전달받아 수집할 수 있다. 또한, 에러수집부(1301)는, 시스템 ECC(1306)에서 생성된 에러정정정보(ERR_CO_INFO)를 실시간 또는 설정된 시점마다 수집할 수 있다.
여기서, 컨트롤러(130)는, 설정된 시점을 다음과 같은 여러 개의 시점 중 적어도 하나 이상의 시점을 선택하여 지정할 수 있다.
첫 번째, 메모리 시스템(110)에 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 설정된 시점으로 지정할 수 있다.
두 번째, 메모리 시스템(110)에 대한 액세스 동작, 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대한 액세스 동작 중에서 발생한 에러 개수를 카운팅하되, 카운팅 개수가 미리 정해진 기준개수를 초과할 때마다, 초과하는 시점을 설정된 시점으로 지정할 수 있다. 이때, 설정된 시점이 지정될 때마다 카운팅 개수는 초기화될 수 있다. 예컨대, 에러 개수의 카운팅은 시스템 ECC(1306)에서 수행될 수 있다.
세 번째, 메모리 시스템(110)에 대한 액세스 동작, 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대한 액세스 동작 중에서 발생한 에러를 복구하기 위한 에러복구동작을 수행하되, 에러복구동작에 소요된 시간이 특정시간 이상 소요되는 시점을 설정된 시점으로 지정할 수 있다. 이때, 에러복구동작에 소요된 시간이 특정시간 이상 소요된다는 것은, 발생한 에러를 복구하는 과정에서 해밍 코드(hamming code)를 사용하는 상대적으로 간단한 에러복구동작이 실패하여 리드 솔로몬 코드를 사용하는 상대적으로 복잡한 에러복구동작이 사용되었다는 것을 의미할 수 있다. 예컨대, 에러복구동작은 시스템 ECC(1306)에서 수행될 수 있다.
그리고, 에러수집부(1301)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 컨트롤러(130) 내부의 설정된 공간에 저장할 수 있다. 이때, 도면에 도시된 것과 같이 에러수집부(1301) 내부에 별도의 저장영역이 될 수 있다. 또한, 컨트롤러(130) 내부의 설정된 공간은, 도면에 직접 도시되지 않았지만 컨트롤러(130) 내부에 포함되어 메모리 시스템(110)의 동작 메모리로서 사용되는 시스템 메모리의 특정 저장공간이 될 수 있다.
그리고, 제1에러분석부(1303)는, 에러수집부(1301)에서 수집한 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생한 에러의 개수 및 종류를 확인하고, 확인된 에러의 개수 및 종류에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급을 결정할 수 있다. 이때, 제1에러분석부(1303)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 관련된 정보는, 컨트롤러(130) 내부의 설정된 공간에 저장될 수 있다.
그리고, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 일부 메모리 장치를 선택할 수 있다. 또한, 제2에러분석부(1304)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 선택된 일부 메모리 장치에 대해서는 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 일부 메모리 장치를 제외한 나머지 메모리 장치에 대해서는 제1에러분석부(1303)에서 결정된 에러등급에 대응하도록 에러가중치를 결정할 수 있다. 이때, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치를 컨트롤러(130) 내부의 설정된 공간에서 리드할 수 있다. 또한, 제2에러분석부(1304)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 관련된 정보는 컨트롤러(130) 내부의 설정된 공간에 저장될 수 있다.
그리고, 대응동작부(1305)는, 제2에러분석부(1304)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 수행할 수 있다. 이때, 대응동작부(1305)는, 제2에러분석부(1304)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치를 컨트롤러(130) 내부의 설정된 공간에서 리드할 수 있다.
그리고, 시스템 ECC(1306)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 저장하기 위한 데이터에 대해 에러 정정 인코딩(error correction encoding) 동작을 수행하여 에러정정코드(ECC, Error Correction Code)를 생성할 수 있다. 컨트롤러(130)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 저장할 데이터에 에러정정코드를 포함시킨 코드워드(code word) 단위의 데이터를 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각으로 전달할 수 있다. 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 컨트롤러(130)로부터 입력된 코드워드 단위의 데이터를 저장할 수 있다. 또한, 시스템 ECC(1306)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각으로부터 리드된 데이터에 에러가 발생하였는지 여부를 확인하는 동작, 및 리드된 데이터에 에러가 발생한 경우 에러 정정 디코딩(error correction decoding), 즉, 에러복구동작을 수행하여 에러 발생 이전의 정상 데이터를 복구할 수 있다. 이때, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 저장된 데이터가 코드워드 단위의 데이터이므로, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 리드된 데이터도 코드워드 단위의 데이터일 수 있다. 따라서, 시스템 ECC(1306)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각으로부터 리드된 코드워드 단위의 데이터에 포함된 에러정정코드를 사용하여 에러복구동작을 수행할 수 있다. 이때, 시스템 ECC(1306)는, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러복구동작을 실패할 수 있으며 에러가 발생한 비트를 정정할 수 없다. 한편, 시스템 ECC(1306)는, 해밍 코드(hamming code), LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, 시스템 ECC(1306)는 오류 정정을 위한 코드, 회로, 모듈, 시스템, 또는 장치를 모두 포함할 수 있다.
참고로, 컨트롤러(130)에 포함된 시스템 ECC(1306)와, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)는, 에러 정정 가능한 데이터의 크기 차이를 가질 수 있다. 예컨대, 시스템 ECC(1306)에서 에러 정정 가능한 데이터의 크기가 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에서 정정 가능한 데이터의 크기보다 더 클 수 있다. 또한, 전술한 설명에서는 시스템 ECC(1306)와 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)가 모두 에러정정동작을 수행할 수 있는 것으로 설명한 바 있는데, 이는 어디까지나 하나의 실시예일 뿐이므로, 한정되는 것은 아니다. 예컨대, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)는 에러의 발생 여부를 확인하는 동작만 수행하고, 시스템 ECC(1306)는 에러의 발생 여부 확인동작 및 에러정정동작을 모두 수행하는 실시예도 얼마든지 가능하다.
도 1c는 본 발명의 제3실시예에 따른 메모리 시스템의 구성을 설명하기 위해 도시한 도면이다.
도 1c를 참조하면, 본 발명의 제3실시예에 따른 메모리 시스템(110)은, 메모리 시스템(110)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)를 포함할 수 있다. 그리고, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 다수의 메모리 뱅크(BK<1:4>)와, 에러수집부(1511)와, 에러분석부(1513)와, 대응동작부(1515)와, 메모리 ECC(1516), 및 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)를 포함할 수 있다.
참고로, 도 1c에 도시된 도면은 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각이 DRAM인 것을 가정하였으며, 메모리 장치(10)가 다른 종류의 메모리 장치일 경우, 상세구성이 변경될 수 있다. 구체적으로, 다수의 메모리 뱅크(BK<1:4>) 각각에는, 다수의 워드라인(WL1, WL2 ... WLX)과 다수의 비트라인(BL1, BL2, BL3 ... BLY)에 어레이(Array) 형태로 접속된 다수의 메모리 셀(CELL)을 포함할 수 있으며, 다수의 메모리 셀 각각은 적어도 1비트의 데이터를 저장할 수 있다. 즉, 다수의 메모리 뱅크(BK<1:4>) 각각은, 다수의 메모리 셀이 어레이 형태로 포함된 '셀 어레이 영역'이라고 볼 수 있다. 따라서, '다수의 메모리 뱅크'라는 표현은 메모리 장치(10)가 DRAM인 것을 가정한 것이며, 다른 종류의 메모리 장치일 경우 '다수의 셀 어레이 영역'이라는 표현으로 대체될 수 있을 것이다. 정리하면, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 내부 구성은 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각의 특성, 메모리 시스템(110)이 사용되는 목적, 혹은 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
그리고, 메모리 시스템(110)에 포함된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작, 예컨대, 다수의 메모리 뱅크(BK<1:4>) 각각에 대한 데이터의 리드/라이트 동작을 수행하는 과정에서 에러가 발생하여 내부에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)의 동작을 통해 에러가 복구되는 경우, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 데이터에 대한 로그정보(LOG_INFO)를 생성할 수 있다. 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작 중 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 액세스 동작의 에러와 관련된 로우데이터(raw data)를 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 누적-저장하여 로그정보(LOG_INFO)를 생성할 수 있다. 이때, 로그정보(LOG_INFO)에 포함되는 에러와 관련된 로우 데이터(raw data)는, 에러의 발생과 관련하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 생성할 수 있는 모든 데이터를 의미할 수 있다. 즉, 로그정보(LOG_INFO)에 포함되는 에러와 관련된 로우 데이터는, 에러의 발생시점과, 발생위치와, 발생형태와, 종류 및 발생개수를 나타내는 데이터일 수 있다. 예컨대, 에러가 발생한 데이터의 비트 수, 에러가 발생한 데이터의 물리적인 저장위치, 절대적인 에러발생시점, 에러가 발생한 물리적인 영역의 범위, 및 발생한 에러의 종류 등을 나타내는 데이터일 수 있다. 그리고, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 레지스터(register) 형태로 포함된 저장공간일 수 있다. 또한, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 포함된 다수의 뱅크(BK<1:4>) 중 적어도 하나의 뱅크에서 적어도 일부 공간일 수 있다.
구체적으로, 에러수집부(1511)는, 메모리 ECC(1516)에서 생성되어 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 저장된 로그정보(LOG_INFO)를 실시간 또는 설정된 시점마다 수집할 수 있다.
여기서, 에러수집부(1511)는, 설정된 시점을 다음과 같은 여러 개의 시점 중 적어도 하나 이상의 시점을 선택하여 지정할 수 있다.
첫 번째, 메모리 시스템(110)에 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 설정된 시점으로 지정할 수 있다.
두 번째, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대한 액세스 동작 중에서 발생한 에러 개수를 카운팅하되, 카운팅 개수가 미리 정해진 기준개수를 초과할 때마다, 초과하는 시점을 설정된 시점으로 지정할 수 있다. 이때, 설정된 시점이 지정될 때마다 카운팅 개수는 초기화될 수 있다. 예컨대, 에러 개수의 카운팅은 메모리 ECC(1516)에서 수행될 수 있다.
세 번째, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대한 액세스 동작 중에서 발생한 에러를 복구하기 위한 에러복구동작을 수행하되, 에러복구동작에 소요된 시간이 특정시간 이상 소요되는 시점을 설정된 시점으로 지정할 수 있다. 이때, 에러복구동작에 소요된 시간이 특정시간 이상 소요된다는 것은, 발생한 에러를 복구하는 과정에서 해밍 코드(hamming code)를 사용하는 상대적으로 간단한 에러복구동작이 실패하여 리드 솔로몬 코드를 사용하는 상대적으로 복잡한 에러복구동작이 사용되었다는 것을 의미할 수 있다. 예컨대, 에러복구동작은 메모리 ECC(1516)에서 수행될 수 있다.
그리고, 에러분석부(1513)는, 에러수집부(1511)에서 수집된 로그정보(LOG_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생했던 에러의 개수와 종류 및 형태를 파악하는 것이 가능하다. 구체적으로, 에러분석부(1513)는, 에러수집부(1511)에서 수집한 로그정보(LOG_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 발생한 에러의 개수 및 종류를 확인하고, 확인된 에러의 개수 및 종류에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급을 결정할 수 있다. 이때, 에러분석부(1513)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 관련된 정보는, 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에 저장될 수 있다.
그리고 대응동작부(1515)는, 에러분석부(1513)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 에러대응동작을 수행할 수 있다. 이때, 대응동작부(1515)는, 에러분석부(1513)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급을 정보저장영역(PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8)에서 리드할 수 있다.
그리고, 메모리 ECC(1516)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 저장하기 위한 데이터에 대해 에러 정정 인코딩(error correction encoding) 동작을 수행하여 에러정정코드(ECC, Error Correction Code)를 생성할 수 있다. 메모리 ECC(1516)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 저장할 데이터에 에러정정코드를 포함시킨 코드워드(code word) 단위의 데이터를 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)에 저장할 수 있다. 또한, 메모리 ECC(1516)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각으로부터 리드된 데이터에 에러가 발생하였는지 여부를 확인하는 동작, 및 리드된 데이터에 에러가 발생한 경우 에러 정정 디코딩(error correction decoding), 즉, 에러복구동작을 수행하여 에러 발생 이전의 정상 데이터를 복구할 수 있다. 이때, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 저장된 데이터가 코드워드 단위의 데이터이므로, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에서 리드된 데이터도 코드워드 단위의 데이터일 수 있다. 따라서, 메모리 ECC(1516)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각으로부터 리드된 코드워드 단위의 데이터에 포함된 에러정정코드를 사용하여 에러복구동작을 수행할 수 있다. 이때, 메모리 ECC(1516)는, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러복구동작을 실패할 수 있으며 에러가 발생한 비트를 정정할 수 없다. 한편, 메모리 ECC(1516)는, 패리티 코드(parity code), 해밍 코드(hamming code), LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, 메모리 ECC(1516)는 오류 정정을 위한 코드, 회로, 모듈, 시스템, 또는 장치를 모두 포함할 수 있다.
도 2 내지 도 5b는 본 발명의 실시예에 따른 데이터 처리 시스템의 로그정보 분석동작을 설명하기 위해 도시한 도면이다.
먼저, 도 1a 및 도 2를 참조하면, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급이 어떤 방식으로 결정되는지 알 수 있다.
구체적으로, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작, 예컨대, 데이터의 리드/라이트 동작을 수행하는 과정에서 에러가 발생하여 내부에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)의 동작을 통해 에러가 복구되는 경우, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 데이터에 대한 로그정보(LOG_INFO)를 생성할 수 있다.
그리고, 호스트(102)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 동작, 예컨대, 데이터의 리드 동작 중 내부에 포함된 호스트 ECC(1026)의 동작을 통해 에러가 복구되는 경우, 호스트 ECC(1026)에 의해 에러가 복구된 데이터에 대한 에러정정정보(ERR_CO_INFO)를 생성할 수 있다.
그리고, 호스트(102)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 수집하여 분석할 수 있다. 즉, 호스트(102)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급 및 에러가중치를 결정할 수 있다.
참고로, 도면에 구체적으로 도시되지 않았지만, 메모리 시스템(110)은, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)와 호스트(102) 사이에서 신호를 전달하기 위한 호스트 인터페이스(미도시)를 더 포함할 수 있다. 즉, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 내부에서 생성된 로그정보(LOG_INFO)를 호스트 인터페이스를 통해 호스트(102)로 출력할 수 있다.
마찬가지로, 도면에 구체적으로 도시되지 않았지만, 호스트(102)는, 메모리 시스템(110)과 호스트(102) 내부의 다른 구성요소(1021, 1023, 1024, 1025, 1026) 사이에서 신호를 전달하기 위한 메모리 인터페이스(미도시)를 더 포함할 수 있다. 즉, 호스트(102)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)가 메모리 시스템(110)을 통해 출력한 로그정보(LOG_INFO)를 메모리 인터페이스를 통해 전달받을 수 있다.
한편, 호스트(102)에 포함된 제1에러분석부(1023)는, 에러수집부(1021)에서 수집된 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 에러발생 개수가 제1기준개수 이상인 메모리 장치를 확인하여, 해당하는 메모리 장치를 ‘제1메모리 장치’로 구분할 수 있다(S10).
예컨대, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 첫 번째 메모리 장치(1501)에 대한 액세스 과정에서 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8) 또는 호스트 ECC(1026)에 의해 복구된 에러의 개수가 12개이고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 과정에서 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8) 또는 호스트 ECC(1026)에 의해 각각 복구된 에러의 개수가 10개 미만이라고 가정할 수 있다. 그리고, 제1기준개수는 10개라고 가정할 수 있다. 이와 같은 경우, 제1에러분석부(1023)는, 첫 번째 메모리 장치(1501)를 ‘제1메모리 장치’로 구분하고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해서는 에러등급을 결정하지 않을 수 있다.
구체적으로, 제1에러분석부(1023)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인할 수 있다(S10의 YES). 이때, 제1에러분석부(1023)는, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 워드라인 단위에서 발생한 에러(S20)와, 싱글비트 단위에서 발생한 에러(S30)와, 비트라인 단위에서 발생한 에러(S40), 및 기타 에러(S50)로 구분할 수 있다.
여기서, 워드라인 단위에서 발생한 에러(S20)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 같은 뱅크 내 같은 워드 라인에서 발생하는 경우를 의미할 수 있다. 그리고, 싱글비트 단위에서 발생한 에러(S30)가 의미하는 것은, 같은 워드, 같은 비트 라인에서 1개 이하의 에러가 발생한 경우를 의미할 수 있다. 그리고, 비트라인 단위에서 발생한 에러(S40)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 같은 비트라인에서 발생하는 경우를 의미할 수 있다. 그리고, 기타 에러(S50)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 특정한 분포를 갖지 않는 경우, 예컨대, 워드라인 단위와, 싱글비트 단위, 및 비트라인 단위에서 발생한 것으로 판단되지 않는 경우를 의미할 수 있다.
그리고, 제1에러분석부(1023)에서 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인한 결과, 워드라인 단위에서 발생한 에러(S20)인 경우, ‘제1메모리 장치’로 구분된 메모리 장치에서 같은 워드라인에서 발생한 에러의 개수를 카운팅할 수 있다(S60). 카운팅 결과 에러의 개수가 제2기준개수 이상인 경우(S70의 YES), 해당 메모리 장치를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분할 수 있다(S90). 카운팅 결과 에러의 개수가 제2기준개수 미만인 경우(S70의 NO), 해당 메모리 장치를 제2에러등급으로 결정하여 ‘제3메모리 장치’로 구분할 수 있다(S80).
그리고, 제1에러분석부(1023)에서 ‘제1메모리 장치’로 구분된 메모리 장치(1501)에서 발생한 에러의 종류를 확인한 결과, 싱글비트 단위에서 발생한 에러(S30의 YES)와, 비트라인 단위에서 발생한 에러(S40의 YES), 및 기타 에러(S50의 YES)만 존재하는 메모리 장치의 경우, 해당 메모리 장치를 제2에러등급으로 결정하여 ‘제3메모리 장치’로 구분할 수 있다(S80).
예를 들어 정리하면, ‘제1메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 발생한 에러가 워드라인 단위에서 발생한 에러이고, 같은 워드라인에서 발생한 에러의 개수가 제2기준개수 이상인 것으로 가정할 수 있다. 따라서, 제1에러분석부(1023)는, ‘제1메모리 장치’로 구분된 첫 번째 메모리 장치(1501)를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분할 수 있다.
도 1a와 도 2 및 도 3을 참조하면, 호스트(102)에 포함된 제2에러분석부(1024)는, 제1에러분석부(1023)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 일부 메모리 장치를 선택할 수 있다. 또한, 제2에러분석부(1024)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 선택된 일부 메모리 장치에 대해서는 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 일부 메모리 장치를 제외한 나머지 메모리 장치에 대해서는 제1에러분석부(1023)에서 결정된 에러등급에 대응하도록 에러가중치를 결정할 수 있다.
구체적으로, 제1에러분석부(1023)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)를 에러등급이 결정되지 않은 메모리 장치와, 제1에러등급으로 결정된 ‘제2메모리 장치’, 및 제2에러등급으로 결정된 ‘제3메모리 장치’로 구분한 바 있다.
그리고, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 결정된 에러등급이 제1에러등급인지 여부를 확인(K10)할 수 있다.
K10동작의 확인결과, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 제1에러등급으로 결정되지 않은 메모리 장치의 경우(K10의 NO), 즉, 에러등급이 결정되지 않은 메모리 장치, 및 제2에러등급으로 결정된 ‘제3메모리 장치’에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70). 이때, 제2에러가중치가 부가되어 ‘제5메모리 장치’로 구분된 메모리 장치에 대해서는 대응동작부(1025)에서 제2에러대응동작을 수행할 수 있다(K80).
K10동작의 확인결과, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 제1에러등급으로 결정된 메모리 장치의 경우(K10의 YES), 즉, 제1에러등급으로 결정된 ‘제2메모리 장치’의 경우, 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태 및 개수를 확인한 뒤, 에러가중치를 결정할 수 있다. 구체적으로, 제2에러분석부(1024)는, 제1에러등급으로 결정된 ‘제2메모리 장치’에 대한 로그정보(LOG_INFO) 및 에러정정정보(ERRO_CO_INFO)를 추가로 분석하여 ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐(across)있는지 여부를 확인할 수 있다(K30).
여기서, 코드워드 단위에 ‘걸쳐(across)’있는 에러를 확인하는 동작이 어떠한 의미를 갖는지를 설명하기 위해 도 4 내지 도 5b를 참조하여 다음과 같다.
먼저, 도 4를 참조하면, 코드워드 단위의 기본적인 의미는, 호스트(102)에 포함된 호스트 ECC(1026)에서 에러를 정정하는 동작을 수행할 때, 동작의 기준이 되는 데이터의 양을 나타내는 단위를 의미할 수 있다. 예컨대, 호스트(102)에서 메모리 시스템(110)에 저장하기 위해 512비트의 데이터를 생성한 경우(401), 호스트 ECC(1026)는 512비트의 데이터에 대해 에러 정정 인코딩 동작(402)을 수행하여 64비트의 에러정정코드를 생성(403)할 수 있다. 이때, 호스트(102)는, 내부에서 생성된 512비트의 데이터와 64비트의 에러정정코드를 합친 총 572비트의 데이터를 2개의 코드워드 단위로 나눠서 관리(404)할 수 있다. 즉, 하나의 코드워드 단위에는 호스트(102) 내부에서 생성된 256비트의 데이터와 32비트의 에러정정코드를 합친 288비트의 데이터가 포함될 수 있다. 호스트(102)는, 572비트의 데이터를 메모리 시스템(110)으로 출력할 수 있다(405). 참고로, 도면에서는 572비트의 데이터를 2개의 코드워드 단위로 관리하는 것을 예시하였지만, 실제로는 더 적은 개수의 코드워드 단위로 관리하거나 더 많은 개수의 코드워드 단위로 관리하는 것도 얼마든지 가능하다.
그리고, 도 4에서 메모리 시스템(110)은, 도 1의 실시예와 다르게 총 18개의 메모리 장치(18 devices)를 포함하는 것을 가정하도록 한다. 이때, 메모리 시스템(110)은, 호스트(102)로부터 입력된 572비트의 데이터(405)를 18개의 메모리 장치(18 devices)에 분산시켜 저장할 수 있다. 따라서, 18개의 메모리 장치(18 devices) 각각에 32비트의 데이터가 저장될 수 있다. 또한, 메모리 시스템(110)은, 호스트(102)에서 572비트를 2개의 코드워드 단위로 나눠서 관리하는 것에 따라 18개의 메모리 장치(18 devices) 각각에 2개의 코드워드 단위에 대응하는 데이터를 저장할 수 있다. 따라서, 18개의 메모리 장치(18 devices) 각각에 첫 번째 코드워드 단위(Codeword0)에 대응하는 16비트의 데이터와 두 번째 코드워드 단위(Codeword1)에 대응하는 16비트의 데이터가 저장될 수 있다. 즉, 메모리 시스템(110)은, 첫 번째 코드워드 단위(Codeword0)에 대응하는 288비트의 데이터 및 두 번째 코드워드 단위(Codeword1)에 대응하는 288비트의 데이터를 18개의 메모리 장치(18 devices)에 분산시켜 저장할 수 있다.
그리고, 메모리 시스템(110)은, 호스트(102)로부터 입력된 572비트의 데이터를 18개의 메모리 장치(18 devices) 각각에 저장할 때, 572비트의 데이터가 연속된 데이터라는 것을 인식하여 버스트 랭스(Burst Length, BL)를 설정하여 저장할 수 있다. 이때, 18개의 메모리 장치(18 devices) 각각이 4개의 데이터 입/출력단(x4)을 갖는 것을 가정할 수 있다. 따라서, 메모리 시스템(110)은, 첫 번째 코드워드 단위(Codeword0)에 대응하는 288비트의 데이터를 18개의 메모리 장치(18 devices)에 상위 버스트 랭스 4(BL4)로 지정하여 16비트씩 저장하고, 두 번째 코드워드 단위(Codeword1)에 대응하는 288비트의 데이터를 18개의 메모리 장치(18 devices)에 하위 버스트 랭스 4(BL4)로 지정하여 16비트씩 저장할 수 있다.
도 4를 참조하여 설명한 내용과 같이, 호스트(102)는, 적어도 하나 이상의 코드워드 단위로 관리되는 데이터를 메모리 시스템(110)으로 출력할 수 있다. 또한, 메모리 시스템(110)은, 호스트(102)로부터 입력된 데이터를 코드워드 단위에 대응하는 형태로 다수의 메모리 장치에 분산시켜 저장할 수 있다.
도 5a를 참조하면, 도 4에서 설명한 바와 같이 1개의 메모리 장치(Device)에 32비트의 데이터가 2개의 코드워드 단위(Codeword0, Codeword1) 각각에 대응하는 16비트씩의 데이터로 나눠진 뒤, 4개의 데이터 입/출력단(x4, DQ<0:3>)으로 리드되는 것을 알 수 있다. 이때, 도면에서는 특정 데이터 입/출력단, 예컨대, 1번 및 3번 데이터 입/출력단(DQ<1, 3>)을 통해 리드된 데이터에 에러가 발생(ERROR BIT)이 발생한 것을 알 수 있다. 즉, 에러의 발생원인까지 도면에 포함되어 있지는 않지만, 특정 데이터 입/출력단으로 리드된 데이터에 에러가 발생한 것으로 인해, 에러 비트(ERROR BIT)가 2개의 코드워드 단위(Codeword0, Codeword1)에 걸쳐 있는 상태(across)가 되는 것을 알 수 있다.
도 5b를 참조하면, 도 5a와 마찬가지로 1개의 메모리 장치(Device)에 32비트의 데이터가 2개의 코드워드 단위(Codeword0, Codeword1) 각각에 대응하는 16비트씩의 데이터로 나눠진 뒤, 4개의 데이터 입/출력단(x4, DQ<0:3>)으로 리드되는 것을 알 수 있다. 이때, 도면에서는 첫 번째 코드워드 단위(Codeword0)에 포함된 리드 데이터에는 에러가 발생(ERROR BIT)이 발생하지만, 두 번째 코드워드 단위(Codeword1)에 포함된 리드 데이터에서는 에러가 발생하지 않은 것을 알 수 있다. 즉, 에러의 발생원인까지 도면에 포함되어 있지는 않지만, 에러 비트(ERROR BIT)는 1개의 코드워드 단위(Codeword0)에만 포함되며, 2개의 코드워드 단위(Codeword0, Codeword1)에 걸쳐 있는 상태(across)가 아닌 것을 알 수 있다.
다시 도 1a와 도 2 및 도 3을 참조하면, 제2에러분석부(1024)에서 제1에러등급으로 결정된 ‘제2메모리 장치’에 대한 로그정보(LOG_INFO)를 추가로 분석하여 ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐(across)있는지 여부를 확인하는 동작(K30)은, 제3기준개수를 2개라고 가정할 때, ‘제2메모리 장치’에서 발생한 에러의 형태가 도 5a에서 예시한 것과 같이 2개의 코드워드 단위에 걸쳐진 형태인지 아니면 도 5b에서 예시한 것과 같이 1개의 코드워드 단위에만 포함된 형태인지를 확인하는 동작일 수 있다.
K30동작의 확인결과, ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐진 형태인 경우(K30의 YES), 제2에러분석부(1024)는, 제3기준개수 이상의 코드워드에 걸쳐진 에러개수의 합계가 제4기준개수 이상인지 여부를 확인할 수 있다(K40). 예컨대, 제4기준개수를 8개라고 가정할 때, 도 5a에서 예시한 것과 같이 2개의 코드워드 단위(Codeword0, Codeword1)에 걸쳐진 에러비트의 합계가 16개이므로 8개인 제4기준개수 이상일 수 있다.
K40동작의 확인결과, ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐진 형태(K30의 YES)이고, 제3기준개수 이상의 코드워드에 걸쳐진 에러개수의 합계가 제4기준개수 이상인 경우(K40의 YES), 제2에러분석부(1024)는, 해당하는 ‘제2메모리 장치’에 대해 제1에러가중치를 부가하여 ‘제4메모리 장치’로 구분할 수 있다(K50). 이때, 제1에러가중치가 부가되어 ‘제4메모리 장치’로 구분되는 메모리 장치에 대해서는 대응동작부(1025)에서 제1에러대응동작을 수행할 수 있다(K60).
K30동작의 확인결과, ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 미만의 코드워드 단위에만 포함된 형태인 경우(K30의 NO), 제2에러분석부(1024)는, 해당하는 ‘제2메모리 장치’에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70). 이때, 제2에러가중치가 부가되어 ‘제5메모리 장치’로 구분되는 메모리 자이에 대해서는 대응동작부(1025)에서 제2에러대응동작을 수행할 수 있다(K80).
제2에러분석부(1024)의 동작을 예를 들어 설명하면 다음과 같다.
먼저, 도 2에서 예를 들어 설명한 바와 같이 제1에러분석부(1023)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 첫 번째 메모리 장치(1501)를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분하고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대해서는 에러등급을 결정하지 않았으며, 제2에러등급으로 결정되어 ‘제3메모리 장치’로 구분된 메모리 장치는 없는 것을 가정한 바 있다.
이때, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 제1에러등급으로 결정되지 않은 메모리 장치의 경우(K10의 NO), 즉, 에러등급이 결정되지 않은 메모리 장치, 및 제2에러등급으로 결정된 ‘제3메모리 장치’에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70). 따라서, 제2에러분석부(1024)는, 에러등급이 결정되지 않은 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70).
그리고, 제2에러분석부(1024)는, 제1에러분석부(1023)에서 제1에러등급으로 결정된 메모리 장치의 경우(K10의 YES), 즉, 제1에러등급으로 결정된 ‘제2메모리 장치’의 경우, 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태 및 개수를 확인한 뒤, 에러가중치를 결정할 수 있다. 따라서, 제2에러분석부(1024)는, 제1에러등급으로 결정되어 ‘제2메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에 대해 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태 및 개수를 확인한 뒤, 에러가중치를 결정할 수 있다.
구체적으로, 제2에러분석부(1024)는, 첫 번째 메모리 장치(1501)에 대해 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐있는지 여부를 확인할 수 있다(K30). 그 결과, 첫 번째 메모리 장치(1501)에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐있는 것을 가정할 수 있다(K30의 YES). 따라서, 제2에러분석부(1024)는, 첫 번째 메모리 장치(1501)에서 제3기준개수 이상의 코드워드 단위에 걸쳐있는 에러에 포함된 에러비트 개수의 합계가 제4기준개수 이상인지 여부를 확인할 수 있다(K40). 확인결과, 첫 번째 메모리 장치(1501)에서 제3기준개수 이상의 코드워드 단위에 걸쳐있는 에러의 개수가 제4기준개수 이상인 것을 가정할 수 있다 (K40의 YES). 따라서, 제2에러분석부(1023)는, 첫 번째 메모리 장치(1501)에 대해 제1에러가중치를 부가하여 ‘제4메모리 장치’로 구분할 수 있다(K60).
한편, 호스트(102)에 포함된 대응동작부(1025)는, 제2에러분석부(1024)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 수행할 수 있다.
구체적으로, 대응동작부(1025)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 제2에러분석부(1024)에서 제1에러가중치를 부가하여 ‘제4메모리 장치’로 구분된 메모리 장치에 대해 제1에러대응동작을 수행할 수 있다. 또한, 대응동작부(1025)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 제2에러분석부(1024)에서 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분된 메모리 장치에 대해 제2에러대응동작을 수행할 수 있다.
여기서, 제1에러대응동작은, 다음과 같은 동작 중 적어도 어느 하나의 동작을 포함할 수 있다.
첫 번째 동작은, ‘제4메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작이다. 예컨대, 대응동작부(1025)는, ‘제4메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 선택하여 액세스를 차단할 수 있다. 이때, 대응동작부(1025)는, 액세스 차단 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 복사하여 ‘다른 영역’에 저장한 후, 액세스 차단 동작을 수행할 수 있다. 이때, ‘다른 영역’은, 첫 번째 메모리 장치(1501)의 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 또한, ‘다른 영역’은, 첫 번째 메모리 장치(1501)가 아닌 다른 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 포함된 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 참고로, 액세스 차단 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 ‘다른 영역’에 저장하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 액세스 차단 동작 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
두 번째 동작은, ‘제4메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작이다. 예컨대, 대응동작부(1025)는, ‘제4메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 다른 정상적인 리던던시 블록 또는 리던던시 워드라인 또는 리던던시 비트라인으로 리페어할 수 있다. 이때, 호스트(102)는, 리페어 대상이 되는 첫 번째 메모리 장치(1501)에서 리페어 동작이 완료될 때까지 첫 번째 메모리 장치(1501)에 대한 액세스가 중단되도록 할 수 있다. 그리고, 리페어 대상이 되는 첫 번째 메모리 장치(1501)는, 리페어 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 정보저장영역(PA1)에 복사한 후, 리페어 동작을 수행할 수 있다. 리페어 동작이 완료된 후, 첫 번째 메모리 장치(1501)는, 정보저장영역(PA1)에 복사된 데이터를 리페어 완료된 리던던시 블록 또는 리던던시 워드라인 또는 리던던시 비트라인으로 복구해줄 수 있다. 참고로, 리페어 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 정보저장영역(PA1)에 복사하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 리페어 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
세 번째 동작은, ‘제4메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작이다. 예컨대, 대응동작부(1025)는, ‘제4메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 디스에이블시킬 수 있다. 이때, 디스에이블 대상이 되는 첫 번째 메모리 장치(1501)는, 디스에이블 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 복사하여 ‘다른 영역’에 저장할 수 있으며, 데이터가 ‘다른 영역’으로 이동하였음을 호스트(102)에 통보할 수 있다. 이때, ‘다른 영역’은, 첫 번째 메모리 장치(1501)의 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 또한, ‘다른 영역’은, 첫 번째 메모리 장치(1501)가 아닌 다른 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 포함된 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 참고로, 디스에이블 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 ‘다른영역’에 저장하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 디스에이블 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
그리고, 제2에러대응동작은, ‘제5메모리 장치’로 구분된 메모리 장치에 대한 액세스 동작 중 에러가 발생하는 경우, 호스트 ECC(1026)를 통해 에러가 발생한 코드워드 단위의 데이터에 대해 에러정정코드를 사용한 에러복구동작을 포함할 수 있다.
그리고, 도 1b 및 도 2를 참조하면, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급이 어떤 방식으로 결정되는지 알 수 있다.
구체적으로, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작, 예컨대, 데이터의 리드/라이트 동작을 수행하는 과정에서 에러가 발생하여 내부에 포함된 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)의 동작을 통해 에러가 복구되는 경우, 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8)에 의해 에러가 복구된 데이터에 대한 로그정보(LOG_INFO)를 생성할 수 있다.
그리고, 컨트롤러(130)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 동작, 예컨대, 데이터의 리드 동작 중 내부에 포함된 시스템 ECC(1306)에 의해 에러가 복구되는 경우, 시스템 ECC(1306)에 의해 에러가 복구된 데이터에 대한 에러정정정보(ERR_CO_INFO)를 생성할 수 있다.
그리고, 컨트롤러(130)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 수집하여 분석할 수 있다. 즉, 컨트롤러(130)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급 및 에러가중치를 결정할 수 있다.
한편, 컨트롤러(130)에 포함된 제1에러분석부(1303)는, 에러수집부(1301)에서 수집된 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 에러발생 개수가 제1기준개수 이상인 메모리 장치를 확인하여, 해당하는 메모리 장치를 ‘제1메모리 장치’로 구분할 수 있다(S10).
예컨대, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 첫 번째 메모리 장치(1501)에 대한 액세스 과정에서 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8) 또는 시스템 ECC(1306)에 의해 복구된 에러의 개수가 12개이고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 과정에서 메모리 ECC(ECC1, ECC2, ECC3, ECC4, ECC5, ECC6, ECC7, ECC8) 또는 시스템 ECC(1306)에 의해 각각 복구된 에러의 개수가 10개 미만이라고 가정할 수 있다. 그리고, 제1기준개수는 10개라고 가정할 수 있다. 이와 같은 경우, 제1에러분석부(1303)는, 첫 번째 메모리 장치(1501)를 ‘제1메모리 장치’로 구분하고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해서는 에러등급을 결정하지 않을 수 있다.
구체적으로, 제1에러분석부(1303)는, 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인할 수 있다(S10의 YES). 이때, 제1에러분석부(1303)는, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 워드라인 단위에서 발생한 에러(S20)와, 싱글비트 단위에서 발생한 에러(S30)와, 비트라인 단위에서 발생한 에러(S40), 및 기타 에러(S50)로 구분할 수 있다.
여기서, 워드라인 단위에서 발생한 에러(S20)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 같은 뱅크 내 같은 워드 라인에서 발생하는 경우를 의미할 수 있다. 그리고, 싱글비트 단위에서 발생한 에러(S30)가 의미하는 것은, 같은 워드, 같은 비트 라인에서 1개 이하의 에러가 발생한 경우를 의미할 수 있다. 그리고, 비트라인 단위에서 발생한 에러(S40)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 같은 비트라인에서 발생하는 경우를 의미할 수 있다. 그리고, 기타 에러(S50)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 특정한 분포를 갖지 않는 경우, 예컨대, 워드라인 단위와, 싱글비트 단위, 및 비트라인 단위에서 발생한 것으로 판단되지 않는 경우를 의미할 수 있다.
그리고, 제1에러분석부(1303)에서 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인한 결과, 워드라인 단위에서 발생한 에러(S20)인 경우, ‘제1메모리 장치’로 구분된 메모리 장치에서 같은 워드라인에서 발생한 에러의 개수를 카운팅할 수 있다(S60). 카운팅 결과 에러의 개수가 제2기준개수 이상인 경우(S70의 YES), 해당 메모리 장치를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분할 수 있다(S90). 카운팅 결과 에러의 개수가 제2기준개수 미만인 경우(S70의 NO), 해당 메모리 장치를 제2에러등급으로 결정하여 ‘제3메모리 장치’로 구분할 수 있다(S80).
그리고, 제1에러분석부(1303)에서 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인한 결과, 싱글비트 단위에서 발생한 에러(S30의 YES)와, 비트라인 단위에서 발생한 에러(S40의 YES), 및 기타 에러(S50의 YES)만 존재하는 메모리 장치의 경우, 해당 메모리 장치를 제2에러등급으로 결정하여 ‘제3메모리 장치’로 구분할 수 있다(S80).
예를 들어 정리하면, ‘제1메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 발생한 에러가 워드라인 단위에서 발생한 에러이고, 같은 워드라인에서 발생한 에러의 개수가 제2기준개수 이상인 것으로 가정할 수 있다. 따라서, 제1에러분석부(1303)는, ‘제1메모리 장치’로 구분된 첫 번째 메모리 장치(1501)를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분할 수 있다.
도 1b와 도 2 및 도 3을 참조하면, 컨트롤러(130)에 포함된 제2에러분석부(1304)는, 제1에러분석부(1303)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 따라 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 일부 메모리 장치를 선택할 수 있다. 또한, 제2에러분석부(1304)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 선택된 일부 메모리 장치에 대해서는 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 일부 메모리 장치를 제외한 나머지 메모리 장치에 대해서는 제1에러분석부(1303)에서 결정된 에러등급에 대응하도록 에러가중치를 결정할 수 있다.
구체적으로, 제1에러분석부(1303)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508)를 에러등급이 결정되지 않은 메모리 장치와, 제1에러등급으로 결정된 ‘제2메모리 장치’, 및 제2에러등급으로 결정된 ‘제3메모리 장치’로 구분한 바 있다.
그리고, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 결정된 에러등급이 제1에러등급인지 여부를 확인(K10)할 수 있다.
K10동작의 확인결과, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 제1에러등급으로 결정되지 않은 메모리 장치의 경우(K10의 NO), 즉, 에러등급이 결정되지 않은 메모리 장치, 및 제2에러등급으로 결정된 ‘제3메모리 장치’에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70). 이때, 제2에러가중치가 부가되어 ‘제5메모리 장치’로 구분된 메모리 장치에 대해서는 대응동작부(1305)에서 제2에러대응동작을 수행할 수 있다(K80).
K10동작의 확인결과, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 제1에러등급으로 결정된 메모리 장치의 경우(K10의 YES), 즉, 제1에러등급으로 결정된 ‘제2메모리 장치’의 경우, 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태 및 개수를 확인한 뒤, 에러가중치를 결정할 수 있다. 구체적으로, 제2에러분석부(1304)는, 제1에러등급으로 결정된 ‘제2메모리 장치’에 대한 로그정보(LOG_INFO) 및 에러정정정보(ERRO_CO_INFO)를 추가로 분석하여 ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐(across)있는지 여부를 확인할 수 있다(K30).
여기서, 코드워드 단위에 ‘걸쳐(across)’있는 에러를 확인하는 동작이 어떠한 의미를 갖는지는, 도 1a 및 도 4 내지 도 5b에 관련된 설명에서 전술한 바 있다. 따라서, 여기서는 더 구체적으로 설명하지 않도록 하겠다.
그리고, 제2에러분석부(1304)에서 제1에러등급으로 결정된 ‘제2메모리 장치’에 대한 로그정보(LOG_INFO)를 추가로 분석하여 ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐(across)있는지 여부를 확인하는 동작(K30)은, 제3기준개수를 2개라고 가정할 때, ‘제2메모리 장치’에서 발생한 에러의 형태가 도 5a에서 예시한 것과 같이 2개의 코드워드 단위에 걸쳐진 형태인지 아니면 도 5b에서 예시한 것과 같이 1개의 코드워드 단위에만 포함된 형태인지를 확인하는 동작일 수 있다.
K30동작의 확인결과, ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐진 형태인 경우(K30의 YES), 제2에러분석부(1304)는, 제3기준개수 이상의 코드워드에 걸쳐진 에러개수의 합계가 제4기준개수 이상인지 여부를 확인할 수 있다(K40). 예컨대, 제4기준개수를 8개라고 가정할 때, 도 5a에서 예시한 것과 같이 2개의 코드워드 단위(Codeword0, Codeword1)에 걸쳐진 에러비트의 합계가 16개이므로 8개인 제4기준개수 이상일 수 있다.
K40동작의 확인결과, ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐진 형태(K30의 YES)이고, 제3기준개수 이상의 코드워드에 걸쳐진 에러개수의 합계가 제4기준개수 이상인 경우(K40의 YES), 제2에러분석부(1304)는, 해당하는 ‘제2메모리 장치’에 대해 제1에러가중치를 부가하여 ‘제4메모리 장치’로 구분할 수 있다(K50). 이때, 제1에러가중치가 부가되어 ‘제4메모리 장치’로 구분되는 메모리 장치에 대해서는 대응동작부(1305)에서 제1에러대응동작을 수행할 수 있다(K60).
K30동작의 확인결과, ‘제2메모리 장치’에서 발생한 에러의 형태가 제3기준개수 미만의 코드워드 단위에만 포함된 형태인 경우(K30의 NO), 제2에러분석부(1304)는, 해당하는 ‘제2메모리 장치’에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70). 이때, 제2에러가중치가 부가되어 ‘제5메모리 장치’로 구분되는 메모리 자이에 대해서는 대응동작부(1305)에서 제2에러대응동작을 수행할 수 있다(K80).
제2에러분석부(1304)의 동작을 예를 들어 설명하면 다음과 같다.
먼저, 도 2에서 예를 들어 설명한 바와 같이 제1에러분석부(1303)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 첫 번째 메모리 장치(1501)를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분하고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대해서는 에러등급을 결정하지 않았으며, 제2에러등급으로 결정되어 ‘제3메모리 장치’로 구분된 메모리 장치는 없는 것을 가정한 바 있다.
이때, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 제1에러등급으로 결정되지 않은 메모리 장치의 경우(K10의 NO), 즉, 에러등급이 결정되지 않은 메모리 장치, 및 제2에러등급으로 결정된 ‘제3메모리 장치’에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70). 따라서, 제2에러분석부(1304)는, 에러등급이 결정되지 않은 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 대해 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분할 수 있다(K70).
그리고, 제2에러분석부(1304)는, 제1에러분석부(1303)에서 제1에러등급으로 결정된 메모리 장치의 경우(K10의 YES), 즉, 제1에러등급으로 결정된 ‘제2메모리 장치’의 경우, 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태 및 개수를 확인한 뒤, 에러가중치를 결정할 수 있다. 따라서, 제2에러분석부(1304)는, 제1에러등급으로 결정되어 ‘제2메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에 대해 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태 및 개수를 확인한 뒤, 에러가중치를 결정할 수 있다.
구체적으로, 제2에러분석부(1304)는, 첫 번째 메모리 장치(1501)에 대해 추가로 로그정보(LOG_INFO) 및 에러정정정보(ERR_CO_INFO)를 분석하여 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐있는지 여부를 확인할 수 있다(K30). 그 결과, 첫 번째 메모리 장치(1501)에서 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐있는 것을 가정할 수 있다(K30의 YES). 따라서, 제2에러분석부(1304)는, 첫 번째 메모리 장치(1501)에서 제3기준개수 이상의 코드워드 단위에 걸쳐있는 에러에 포함된 에러비트 개수의 합계가 제4기준개수 이상인지 여부를 확인할 수 있다(K40). 확인결과, 첫 번째 메모리 장치(1501)에서 제3기준개수 이상의 코드워드 단위에 걸쳐있는 에러의 개수가 제4기준개수 이상인 것을 가정할 수 있다 (K40의 YES). 따라서, 제2에러분석부(1303)는, 첫 번째 메모리 장치(1501)에 대해 제1에러가중치를 부가하여 ‘제4메모리 장치’로 구분할 수 있다(K60).
한편, 컨트롤러(130)에 포함된 대응동작부(1305)는, 제2에러분석부(1304)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러가중치에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 수행할 수 있다.
구체적으로, 대응동작부(1305)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 제2에러분석부(1304)에서 제1에러가중치를 부가하여 ‘제4메모리 장치’로 구분된 메모리 장치에 대해 제1에러대응동작을 수행할 수 있다. 또한, 대응동작부(1305)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 제2에러분석부(1304)에서 제2에러가중치를 부가하여 ‘제5메모리 장치’로 구분된 메모리 장치에 대해 제2에러대응동작을 수행할 수 있다.
여기서, 제1에러대응동작은, 다음과 같은 동작 중 적어도 어느 하나의 동작을 포함할 수 있다.
첫 번째 동작은, ‘제4메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작이다. 예컨대, 대응동작부(1305)는, ‘제4메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 선택하여 액세스를 차단할 수 있다. 이때, 대응동작부(1305)는, 액세스 차단 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 복사하여 ‘다른 영역’에 저장한 후, 액세스 차단 동작을 수행할 수 있다. 이때, ‘다른 영역’은, 첫 번째 메모리 장치(1501)의 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 또한, ‘다른 영역’은, 첫 번째 메모리 장치(1501)가 아닌 다른 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 포함된 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 참고로, 액세스 차단 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 ‘다른 영역’에 저장하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 액세스 차단 동작 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
두 번째 동작은, ‘제4메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작이다. 예컨대, 대응동작부(1305)는, ‘제4메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 다른 정상적인 리던던시 블록 또는 리던던시 워드라인 또는 리던던시 비트라인으로 리페어할 수 있다. 이때, 컨트롤러(130)는, 리페어 대상이 되는 첫 번째 메모리 장치(1501)에서 리페어 동작이 완료될 때까지 액세스가 중단되도록 할 수 있다. 그리고, 리페어 대상이 되는 첫 번째 메모리 장치(1501)는, 리페어 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 정보저장영역(PA1)에 복사한 후, 리페어 동작을 수행할 수 있다. 리페어 동작이 완료된 후, 첫 번째 메모리 장치(1501)는, 정보저장영역(PA1)에 복사된 데이터를 리페어 완료된 리던던시 블록 또는 리던던시 워드라인 또는 리던던시 비트라인으로 복구해줄 수 있다. 참고로, 리페어 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 정보저장영역(PA1)에 복사하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 리페어 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
세 번째 동작은, ‘제4메모리 장치’로 구분된 메모리 장치 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작이다. 예컨대, 대응동작부(1305)는, ‘제4메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 디스에이블시킬 수 있다. 이때, 디스에이블 대상이 되는 첫 번째 메모리 장치(1501)는, 디스에이블 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 복사하여 ‘다른 영역’에 저장할 수 있으며, 데이터가 ‘다른 영역’으로 이동하였음을 컨트롤러(130)에 통보할 수 있다. 이때, ‘다른 영역’은, 첫 번째 메모리 장치(1501)의 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 또한, ‘다른 영역’은, 첫 번째 메모리 장치(1501)가 아닌 다른 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 포함된 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 참고로, 디스에이블 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 ‘다른영역’에 저장하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 디스에이블 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
그리고, 제2에러대응동작은, ‘제5메모리 장치’로 구분된 메모리 장치에 대한 액세스 동작 중 에러가 발생하는 경우, 시스템 ECC(1306)를 통해 에러가 발생한 코드워드 단위의 데이터에 대해 에러정정코드를 사용한 에러복구동작을 포함할 수 있다.
그리고, 도 1c 및 도 2를 참조하면, 로그정보(LOG_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급이 어떤 방식으로 결정되는지 알 수 있다.
구체적으로, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각은, 액세스 동작, 예컨대, 데이터의 리드/라이트 동작을 수행하는 과정에서 에러가 발생하여 내부에 포함된 메모리 ECC(1516)의 동작을 통해 에러가 복구되는 경우, 메모리 ECC(1516)에 의해 에러가 복구된 데이터에 대한 로그정보(LOG_INFO)를 생성할 수 있다.
그리고, 에러수집부(1511) 및 에러분석부(1513)는, 로그정보(LOG_INFO)를 수집하여 분석할 수 있다. 즉, 에러수집부(1511) 및 에러분석부(1513)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급 및 에러등급을 결정할 수 있다.
구체적으로, 에러분석부(1513)는, 에러수집부(1511)에서 수집된 로그정보(LOG_INFO)를 분석하여 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 에러발생 개수가 제1기준개수 이상인 메모리 장치를 확인하여, 해당하는 메모리 장치를 ‘제1메모리 장치’로 구분할 수 있다(S10).
예컨대, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 첫 번째 메모리 장치(1501)에 대한 액세스 과정에서 메모리 ECC(1516)에 의해 복구된 에러의 개수가 12개이고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 액세스 과정에서 메모리 ECC(1516)에 의해 각각 복구된 에러의 개수가 10개 미만이라고 가정할 수 있다. 그리고, 제1기준개수는 10개라고 가정할 수 있다. 이와 같은 경우, 에러분석부(1513)는, 첫 번째 메모리 장치(1501)를 ‘제1메모리 장치’로 구분하고, 나머지 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해서는 에러등급을 결정하지 않을 수 있다.
좀 더 구체적으로, 에러분석부(1513)는, 로그정보(LOG_INFO)를 분석하여 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인할 수 있다(S10의 YES). 이때, 에러분석부(1513)는, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 워드라인 단위에서 발생한 에러(S20)와, 싱글비트 단위에서 발생한 에러(S30)와, 비트라인 단위에서 발생한 에러(S40), 및 기타 에러(S50)로 구분할 수 있다.
여기서, 워드라인 단위에서 발생한 에러(S20)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 같은 뱅크 내 같은 워드 라인에서 발생하는 경우를 의미할 수 있다. 그리고, 싱글비트 단위에서 발생한 에러(S30)가 의미하는 것은, 같은 워드, 같은 비트 라인에서 1개 이하의 에러가 발생한 경우를 의미할 수 있다. 그리고, 비트라인 단위에서 발생한 에러(S40)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 같은 비트라인에서 발생하는 경우를 의미할 수 있다. 그리고, 기타 에러(S50)가 의미하는 것은, ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 적어도 2개 이상의 에러가 특정한 분포를 갖지 않는 경우, 예컨대, 워드라인 단위와, 싱글비트 단위, 및 비트라인 단위에서 발생한 것으로 판단되지 않는 경우를 의미할 수 있다.
그리고, 에러분석부(1513)에서 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인한 결과, 워드라인 단위에서 발생한 에러(S20)인 경우, ‘제1메모리 장치’로 구분된 메모리 장치에서 같은 워드라인에서 발생한 에러의 개수를 카운팅할 수 있다(S60). 카운팅 결과 에러의 개수가 제2기준개수 이상인 경우(S70의 YES), 해당 메모리 장치를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분할 수 있다(S90). 카운팅 결과 에러의 개수가 제2기준개수 미만인 경우(S70의 NO), 해당 메모리 장치를 제2에러등급으로 결정하여 ‘제3메모리 장치’로 구분할 수 있다(S80).
그리고, 에러분석부(1513)에서 ‘제1메모리 장치’로 구분된 메모리 장치에서 발생한 에러의 종류를 확인한 결과, 싱글비트 단위에서 발생한 에러(S30의 YES)와, 비트라인 단위에서 발생한 에러(S40의 YES), 및 기타 에러(S50의 YES)만 존재하는 메모리 장치의 경우, 해당 메모리 장치를 제2에러등급으로 결정하여 ‘제3메모리 장치’로 구분할 수 있다(S80).
예를 들어 정리하면, ‘제1메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 발생한 에러가 워드라인 단위에서 발생한 에러이고, 같은 워드라인에서 발생한 에러의 개수가 제2기준개수 이상인 것으로 가정할 수 있다. 따라서, 에러분석부(1513)는, ‘제1메모리 장치’로 구분된 첫 번째 메모리 장치(1501)를 제1에러등급으로 결정하여 ‘제2메모리 장치’로 구분할 수 있다.
그리고, 대응동작부(1515)는, 에러분석부(1513)에서 결정된 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대한 에러등급에 대응하는 에러대응동작을 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 각각에 대해 수행할 수 있다.
구체적으로, 대응동작부(1515)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 에러분석부(1513)에서 제1에러등급을 부가하여 ‘제2메모리 장치’로 구분된 메모리 장치에 대해 제1에러대응동작을 수행할 수 있다. 또한, 대응동작부(1515)는, 다수의 메모리 장치(1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508) 중 에러분석부(1513)에서 제2에러등급을 부가하여 ‘제3메모리 장치’로 구분된 메모리 장치에 대해 제2에러대응동작을 수행할 수 있다.
여기서, 제1에러대응동작은, 다음과 같은 동작 중 적어도 어느 하나의 동작을 포함할 수 있다.
첫 번째 동작은, ‘제2메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작이다. 예컨대, 대응동작부(1515)는, ‘제2메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 선택하여 액세스를 차단할 수 있다. 이때, 대응동작부(1515)는, 액세스 차단 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 복사하여 ‘다른 영역’에 저장한 후, 액세스 차단 동작을 수행할 수 있다. 이때, ‘다른 영역’은, 첫 번째 메모리 장치(1501)의 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 또한, ‘다른 영역’은, 첫 번째 메모리 장치(1501)이 아닌 다른 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 포함된 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 참고로, 액세스 차단 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 ‘다른 영역’에 저장하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 액세스 차단 동작 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
두 번째 동작은, ‘제2메모리 장치’로 구분된 메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작이다. 예컨대, 대응동작부(1515)는, ‘제2메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 다른 정상적인 리던던시 블록 또는 리던던시 워드라인 또는 리던던시 비트라인으로 리페어할 수 있다. 이때, 첫 번째 메모리 장치(1501)는, 리페어 동작이 수행되는 구간에서 액세스가 중단될 수 있다. 그리고, 리페어 대상이 되는 첫 번째 메모리 장치(1501)는, 리페어 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 정보저장영역(PA1)에 복사한 후, 리페어 동작을 수행할 수 있다. 리페어 동작이 완료된 후, 첫 번째 메모리 장치(1501)는, 정보저장영역(PA1)에 복사된 데이터를 리페어 완료된 리던던시 블록 또는 리던던시 워드라인 또는 리던던시 비트라인으로 복구해줄 수 있다. 참고로, 리페어 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 내부의 정보저장영역(PA1)에 복사하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상히여 리페어 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
세 번째 동작은, ‘제2메모리 장치’로 구분된 메모리 장치 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작이다. 예컨대, 대응동작부(1515)는, ‘제2메모리 장치’로 구분된 첫 번째 메모리 장치(1501)에서 특정 블록 또는 특정 워드라인 또는 특정 비트라인을 디스에이블시킬 수 있다. 이때, 대응동작부(1515)는, 디스에이블 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 복사하여 ‘다른 영역’에 저장할 수 있다. 이때, ‘다른 영역’은, 첫 번째 메모리 장치(1501)의 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 또한, ‘다른 영역’은, 첫 번째 메모리 장치(1501)이 아닌 다른 메모리 장치(1502, 1503, 1504, 1505, 1506, 1507, 1508)에 포함된 다른 정상적인 블록 또는 다른 정상적인 워드라인 또는 다른 정상적인 비트라인이 될 수 있다. 참고로, 디스에이블 대상인 특정 블록 또는 특정 워드라인 또는 특정 비트라인에 저장된 데이터를 ‘다른 영역’에 저장하는 동작이 정상적으로 수행될 수 있는 이유는, 특정 블록 또는 특정 워드라인 또는 특정 비트라인의 경우, 인접한 미래 시점에 복구 불가능한 에러가 발생할 가능성이 높다고 예상하여 디스에이블 대상으로 선택된 것일 뿐, 현재 시점에서는 정상 동작하는 상태 또는 복구 가능한 에러만 발생하는 상태이기 때문이다.
그리고, 제2에러대응동작은, ‘제3메모리 장치’로 구분된 메모리 장치에 대한 액세스 동작 중 에러가 발생하는 경우, 시스템 ECC(1516)를 통해 에러가 발생한 코드워드 단위의 데이터에 대해 에러정정코드를 사용한 에러복구동작을 포함할 수 있다.

Claims (20)

  1. 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역, 및 제1에러정정부를 각각 포함하는 다수의 메모리 장치를 포함하는 메모리 시스템; 및
    제2에러정정부를 포함하며, 상기 메모리 시스템으로부터 전달된 데이터의 에러를 상기 제2에러정정부가 정정하고, 상기 제2에러정정부의 에러 정정동작에 대한 에러정정정보를 생성하며, 상기 에러정정정보 및 상기 다수의 메모리 장치 각각에서 생성된 로그(log)정보를 이용하여 상기 다수의 메모리 장치 각각에 대해 에러가중치를 설정하고, 상기 에러가중치에 대응하는 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 호스트를 포함하며,
    상기 다수의 메모리 장치 각각은,
    상기 다수의 셀 어레이 영역에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 제1에러정정부가 정정하고, 상기 제1에러정정부의 에러 정정동작에 대한 상기 로그(log)정보를 생성하는 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 다수의 메모리 장치 각각은,
    리드/라이트 동작을 포함하는 액세스 동작의 수행 중 액세스 데이터에 에러가 발생하는 경우, 발생한 에러를 정정하기 위해 내부에 포함된 상기 제1에러정정부를 동작시키며, 상기 제1에러정정부에 의해 에러가 정정된 데이터의 로우데이터(raw data)를 내부의 정보저장영역에 누적-저장하여 상기 로그정보를 생성하고, 상기 호스트의 요청에 따라 상기 로그정보를 상기 메모리 시스템을 통해 상기 호스트로 출력하는 데이터 처리 시스템.
  3. 제2항에 있어서,
    상기 호스트는,
    상기 에러정정정보를 실시간 또는 설정된 시점에서 수집하고, 상기 설정된 시점에서 상기 메모리 시스템으로부터 상기 로그정보를 수집하는 에러수집부;
    상기 로그정보 및 상기 에러정정정보를 분석하여 상기 다수의 메모리 장치 각각에서 발생한 에러의 개수 및 종류를 확인하며, 확인결과에 따라 상기 다수의 메모리 장치 각각에 대한 에러등급을 결정하는 제1에러분석부;
    상기 제1에러분석부에서 결정된 에러등급에 따라 상기 다수의 메모리 장치 중 일부 메모리 장치에 대해서는 상기 로그정보 및 상기 에러정정정보의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 나머지 메모리 장치에 대해서는 상기 제1에러분석부에서 결정된 에러등급에 대응하도록 에러가중치를 결정하는 제2에러분석부; 및
    상기 제2에러분석부에서 결정된 에러가중치에 대응하는 상기 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 대응동작부를 포함하는 데이터 처리 시스템.
  4. 제3항에 있어서,
    상기 제1에러분석부는,
    상기 다수의 메모리 장치 중 내부에서 발생한 에러의 개수가 제1기준개수 이상인 메모리 장치를 제1메모리 장치로 구분하고,
    상기 제1메모리 장치 중 발생한 에러의 종류가 제2기준개수 이상의 워드라인에서 발생한 제1에러인 경우, 대응하는 상기 제1메모리 장치를 제1에러등급을 갖는 제2메모리 장치로 구분하고,
    상기 제1메모리 장치 중 발생한 에러의 종류가 상기 제1에러가 아닌 다른 종류의 에러인 경우, 대응하는 상기 제1메모리 장치를 제2에러등급을 갖는 제3메모리 장치로 구분하는 데이터 처리 시스템.
  5. 제4항에 있어서,
    상기 제1 및 제2에러정정부 각각은, 상기 다수의 메모리 장치 각각에서 입/출력되는 데이터에 대한 에러 정정동작을 에러정정코드(ECC, Error Correction Code)가 포함된 코드워드(code word) 단위로 수행하며,
    상기 제2에러분석부는,
    상기 제2메모리 장치 중 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐지고(across) 포함된 에러 개수의 합계가 제4기준개수 이상인 경우, 대응하는 상기 제2메모리 장치를 제1에러가중치를 갖는 제4메모리 장치로 구분하며,
    상기 제2메모리 장치 중 발생한 에러의 형태가, 상기 제3기준개수 이상의 코드워드에 걸쳐지고 포함된 에러 개수의 합계가 상기 제4기준개수 미만인 경우, 또는 상기 제3기준개수 미만의 코드워드에 걸쳐지는 경우, 대응하는 상기 제2메모리 장치를 제2에러가중치를 갖는 제5메모리 장치로 구분하며,
    상기 제3메모리 장치에 상기 제2에러가중치를 부여하여 상기 제5메모리 장치로 구분하는 데이터 처리 시스템.
  6. 제5항에 있어서,
    상기 대응동작부는,
    상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작과,
    상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작, 및
    상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작 중 어느 하나의 동작을 상기 제4메모리 장치의 상태에 따라 상기 에러대응동작으로서 선택하여 수행하는 데이터 처리 시스템.
  7. 제3항에 있어서,
    상기 호스트는,
    상기 메모리 시스템으로 전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 상기 설정된 시점으로 지정하는 동작과,
    상기 메모리 시스템에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러 개수를 카운팅하여 제5기준개수를 초과할 때마다, 초과하는 시점을 상기 설정된 시점으로 지정한 뒤, 에러 개수의 카운팅을 초기화하는 동작, 및
    상기 메모리 시스템에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러를 정정하기 위한 에러 정정동작에 특정시간 이상 소요되는 시점을 상기 설정된 시점으로 지정하는 동작 중 적어도 하나의 동작을 선택하여 수행하는 데이터 처리 시스템.
  8. 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역 및 제1에러정정부를 각각 포함하며, 상기 다수의 셀 어레이 영역에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 제1에러정정부가 정정하고, 상기 제1에러정정부의 에러 정정동작에 대한 로그(log)정보를 생성하는 다수의 메모리 장치; 및
    제2에러정정부를 포함하며, 상기 다수의 메모리 장치로부터 전달된 데이터의 에러를 상기 제2에러정정부가 정정하고, 상기 제2에러정정부의 에러 정정동작에 대한 에러정정정보를 생성하며, 상기 로그정보 및 상기 에러정정정보를 이용하여 상기 다수의 메모리 장치 각각에 대해 에러가중치를 설정하고, 상기 다수의 메모리 장치 각각에 대해 상기 에러가중치에 대응하는 에러대응동작을 수행하는 컨트롤러
    를 포함하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 다수의 메모리 장치 각각은,
    리드/라이트 동작을 포함하는 액세스 동작의 수행 중 액세스 데이터에 에러가 발생하는 경우, 발생한 에러를 정정하기 위해 내부에 포함된 상기 제1에러정정부를 동작시키며, 상기 제1에러정정부에 의해 에러가 정정된 데이터의 로우데이터(raw data)를 내부의 정보저장영역에 누적-저장하여 상기 로그정보를 생성하고, 상기 컨트롤러의 요청에 따라 상기 로그정보를 상기 컨트롤러로 출력하는 메모리 시스템.
  10. 제9항에 있어서,
    상기 컨트롤러는,
    상기 에러정정정보를 실시간 또는 설정된 시점에서 수집하고, 상기 설정된 시점에서 상기 다수의 메모리 장치 각각으로부터 상기 로그정보를 수집하는 에러수집부;
    상기 로그정보 및 상기 에러정정정보를 분석하여 상기 다수의 메모리 장치 각각에서 발생한 에러의 개수 및 종류를 확인하며, 확인결과에 따라 상기 다수의 메모리 장치 각각에 대한 에러등급을 결정하는 제1에러분석부;
    상기 제1에러분석부에서 결정된 에러등급에 따라 상기 다수의 메모리 장치 중 일부 메모리 장치에 대해서는 상기 로그정보 및 상기 에러정정정보의 추가 분석을 통해 에러의 형태 및 개수를 확인하여 에러가중치를 결정하고, 나머지 메모리 장치에 대해서는 상기 제1에러분석부에서 결정된 에러등급에 대응하도록 에러가중치를 결정하는 제2에러분석부; 및
    상기 제2에러분석부에서 결정된 에러가중치에 대응하는 상기 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 대응동작부를 포함하는 메모리 시스템.
  11. 제10항에 있어서,
    상기 제1에러분석부는,
    상기 다수의 메모리 장치 중 내부에서 발생한 에러의 개수가 제1기준개수 이상인 메모리 장치를 제1메모리 장치로 구분하고,
    상기 제1메모리 장치 중 발생한 에러의 종류가 제2기준개수 이상의 워드라인에서 발생한 제1에러인 경우, 대응하는 상기 제1메모리 장치를 제1에러등급을 갖는 제2메모리 장치로 구분하고,
    상기 제1메모리 장치 중 발생한 에러의 종류가 상기 제1에러가 아닌 다른 종류의 에러인 경우, 대응하는 상기 제1메모리 장치를 제2에러등급을 갖는 제3메모리 장치로 구분하는 메모리 시스템.
  12. 제11항에 있어서,
    상기 제1 및 제2에러정정부 각각은, 상기 다수의 메모리 장치 각각에서 입/출력되는 데이터에 대한 에러 정정동작을 에러정정코드(ECC, Error Correction Code)가 포함된 코드워드(code word) 단위로 수행하며,
    상기 제2에러분석부는,
    상기 제2메모리 장치 중 발생한 에러의 형태가 제3기준개수 이상의 코드워드 단위에 걸쳐지고(across) 포함된 에러 개수의 합계가 제4기준개수 이상인 경우, 대응하는 상기 제2메모리 장치를 제1에러가중치를 갖는 제4메모리 장치로 구분하며,
    상기 제2메모리 장치 중 발생한 에러의 형태가, 상기 제3기준개수 이상의 코드워드에 걸쳐지고 포함된 에러 개수의 합계가 상기 제4기준개수 미만인 경우, 또는 상기 제3기준개수 미만의 코드워드에 걸쳐지는 경우, 대응하는 상기 제2메모리 장치를 제2에러가중치를 갖는 제5메모리 장치로 구분하며,
    상기 제3메모리 장치에 상기 제2에러가중치를 부여하여 상기 제5메모리 장치로 구분하는 메모리 시스템.
  13. 제12항에 있어서,
    상기 대응동작부는,
    상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작과,
    상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작, 및
    상기 제4메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작 중 어느 하나의 동작을 상기 제4메모리 장치의 상태에 따라 상기 에러대응동작으로서 선택하여 수행하는 메모리 시스템.
  14. 제10항에 있어서,
    상기 컨트롤러는,
    전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 상기 설정된 시점으로 지정하는 동작과,
    상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러 개수를 카운팅하여 제5기준개수를 초과할 때마다, 초과하는 시점을 상기 설정된 시점으로 지정한 뒤, 에러 개수의 카운팅을 초기화하는 동작, 및
    상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러를 정정하기 위한 에러 정정동작에 특정시간 이상 소요되는 시점을 상기 설정된 시점으로 지정하는 동작 중 적어도 하나의 동작을 선택하여 수행하는 메모리 시스템.
  15. 다수의 워드라인 및 다수의 비트라인에 다수의 메모리 셀이 어레이 형태로 접속된 다수의 셀 어레이 영역, 및 에러정정부를 각각 포함하는 다수의 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어서,
    상기 다수의 메모리 장치 각각에 대한 액세스 동작 중 발생한 액세스 데이터의 에러를 상기 에러정정부가 정정하고, 상기 에러정정보의 에러 정정동작에 대한 로그(log)정보를 생성하는 생성단계;
    상기 로그정보를 이용하여 상기 다수의 메모리 장치 각각에 대한 에러가중치를 설정하는 분석단계; 및
    상기 에러가중치에 대응하는 에러대응동작을 상기 다수의 메모리 장치 각각에 대해 수행하는 대응단계
    를 포함하는 메모리 시스템의 동작방법.
  16. 제15항에 있어서,
    상기 생성단계는,
    상기 다수의 메모리 장치 각각에 대한 액세스 동작의 수행 중 액세스 데이터에 에러가 발생하는 경우, 발생한 에러를 정정하기 위해 상기 에러정정부를 동작시키는 동작단계; 및
    상기 동작단계에서 상기 에러정정부에 의해 에러가 정정된 데이터에 대한 로우데이터(raw data)를 상기 다수의 메모리 장치 각각에 포함된 정보저장영역에 누적-저장하여 상기 로그정보를 생성하는 단계를 포함하는 메모리 시스템의 동작방법.
  17. 제16항에 있어서,
    상기 분석단계는,
    설정된 시점마다 상기 정보저장영역에 저장된 상기 로그정보를 수집하는 수집단계; 및
    상기 수집단계에서 수집된 상기 로그정보를 분석하여 상기 다수의 메모리 장치 각각에서 발생한 에러의 개수 및 종류를 확인하며, 확인결과에 따라 상기 다수의 메모리 장치 각각에 대한 에러등급을 결정하는 에러분석단계를 포함하는 메모리 시스템의 동작방법.
  18. 제17항에 있어서,
    상기 에러분석단계는,
    상기 다수의 메모리 장치 중 내부에서 발생한 에러의 개수가 제1기준개수 이상인 메모리 장치를 제1메모리 장치로 구분하는 단계;
    상기 제1메모리 장치 중 발생한 에러의 종류가 제2기준개수 이상의 워드라인에서 발생한 제1에러인 경우, 대응하는 상기 제1메모리 장치를 제1에러등급을 갖는 제2메모리 장치로 구분하는 단계; 및
    상기 제1메모리 장치 중 발생한 에러의 종류가 상기 제1에러가 아닌 다른 종류의 에러인 경우, 대응하는 상기 제1메모리 장치를 제2에러등급을 갖는 제3메모리 장치로 구분하는 단계를 포함하는 메모리 시스템의 동작방법.
  19. 제18항에 있어서,
    상기 대응단계는,
    상기 제2메모리 장치에서 에러가 발생한 영역을 선택하여 액세스를 차단하는 동작과,
    상기 제2메모리 장치에서 에러가 발생한 영역을 선택하여 리페어(repair)하는 동작, 및
    상기 제2메모리 장치에서 에러가 발생한 영역을 선택하여 디스에이블(disable)시키는 동작 중 어느 하나의 동작을 상기 제2메모리 장치의 상태에 따라 선택하여 상기 에러대응동작으로서 수행하는 메모리 시스템의 동작방법.
  20. 제17항에 있어서,
    전원이 공급된 시점부터 특정 시간간격마다 반복되는 시점을 상기 설정된 시점으로 지정하는 단계;
    상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러 개수를 카운팅하여 제5기준개수를 초과할 때마다, 초과하는 시점을 상기 설정된 시점으로 지정한 뒤, 에러 개수의 카운팅을 초기화하는 단계; 및
    상기 다수의 메모리 장치에 대한 액세스 동작 중 액세스 데이터에서 발생한 에러를 정정하기 위한 에러 정정동작에 특정시간 이상 소요되는 시점을 상기 설정된 시점으로 지정하는 단계 중 적어도 하나의 단계를 더 포함하는 메모리 시스템의 동작방법.
KR1020200001998A 2020-01-07 2020-01-07 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템 KR20210088916A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200001998A KR20210088916A (ko) 2020-01-07 2020-01-07 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템
DE102020208450.5A DE102020208450A1 (de) 2020-01-07 2020-07-07 Speichersystem zum Auswählen eines Gegenfehlerbetriebs durch Fehleranalyse und Datenverarbeitungssystem mit demselben
US16/923,819 US11609813B2 (en) 2020-01-07 2020-07-08 Memory system for selecting counter-error operation through error analysis and data process system including the same
JP2020130222A JP2021111325A (ja) 2020-01-07 2020-07-31 以前に発生したエラー分析を介してエラー対応動作を選択するためのメモリシステム及びメモリシステムを含むデータ処理システム
CN202010809375.8A CN113157484A (zh) 2020-01-07 2020-08-12 通过错误分析应对错误的存储器系统和数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200001998A KR20210088916A (ko) 2020-01-07 2020-01-07 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템

Publications (1)

Publication Number Publication Date
KR20210088916A true KR20210088916A (ko) 2021-07-15

Family

ID=76432369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200001998A KR20210088916A (ko) 2020-01-07 2020-01-07 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템

Country Status (5)

Country Link
US (1) US11609813B2 (ko)
JP (1) JP2021111325A (ko)
KR (1) KR20210088916A (ko)
CN (1) CN113157484A (ko)
DE (1) DE102020208450A1 (ko)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
US9312885B2 (en) * 2012-08-15 2016-04-12 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory system error correction capability of which is improved
KR102143517B1 (ko) * 2013-02-26 2020-08-12 삼성전자 주식회사 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법
US8891303B1 (en) * 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
JP6396225B2 (ja) * 2015-01-23 2018-09-26 株式会社東芝 量子鍵配送装置、量子鍵配送システムおよびプログラム
KR20160144560A (ko) 2015-06-08 2016-12-19 삼성전자주식회사 호스트에 의해 접근되는 오류 정보를 생성하는 불휘발성 메모리 모듈, 스토리지 장치, 및 전자 장치
US20190019569A1 (en) * 2016-01-28 2019-01-17 Hewlett Packard Enterprise Development Lp Row repair of corrected memory address
US10055159B2 (en) 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
KR101941105B1 (ko) 2017-10-27 2019-01-22 주식회사 지음 컴퓨터 시스템에 포함된 하드웨어의 에러 발생 여부를 통합적으로 관리하여 백업 및 복구를 수행하여 외부 단말에 알리는 방법
US10997516B2 (en) * 2017-12-15 2021-05-04 Dell Products L.P. Systems and methods for predicting persistent memory device degradation based on operational parameters
KR102453437B1 (ko) * 2018-01-25 2022-10-12 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
US10496477B1 (en) * 2018-05-23 2019-12-03 Dell Products L.P. System and method of utilizing memory modules
KR20200001998A (ko) 2018-06-28 2020-01-07 서강대학교산학협력단 고분자 전해질 조성물 및 이를 포함하는 고분자 전해질막

Also Published As

Publication number Publication date
JP2021111325A (ja) 2021-08-02
CN113157484A (zh) 2021-07-23
US11609813B2 (en) 2023-03-21
DE102020208450A1 (de) 2021-07-08
US20210208966A1 (en) 2021-07-08

Similar Documents

Publication Publication Date Title
CN107391026B (zh) 闪存装置及闪存存储管理方法
CN107403646B (zh) 闪存装置及闪存存储管理方法
US6044483A (en) Error propagation operating mode for error correcting code retrofit apparatus
US20140372838A1 (en) Bad disk block self-detection method and apparatus, and computer storage medium
US6751769B2 (en) (146,130) error correction code utilizing address information
US20140317479A1 (en) Methods and apparatus for error detection and correction in data storage systems
US8566682B2 (en) Failing bus lane detection using syndrome analysis
KR20090028507A (ko) 비휘발성 메모리 에러 보정 시스템 및 방법
KR20120114366A (ko) 비트 값들의 저장된 총계를 이용하여 데이터 에러들을 보정하는 시스템 및 방법
KR20140013095A (ko) 데이터 무결성을 제공하기 위한 방법 및 장치
JP2001249854A (ja) メモリ設計のための共有式誤り訂正
JP2001005736A (ja) メモリ誤り訂正装置
TWI806649B (zh) 快閃記憶體裝置及快閃記憶體儲存管理方法
EP1116114B1 (en) Technique for detecting memory part failures and single, double, and triple bit errors
US5953265A (en) Memory having error detection and correction
US9690649B2 (en) Memory device error history bit
KR20210014473A (ko) 메모리 시스템 및 메모리 시스템의 라이트 방법
CN112612637B (zh) 内存数据存储方法、内存控制器、处理器芯片及电子设备
US20060075287A1 (en) Detecting data integrity
US20230214295A1 (en) Error rates for memory with built in error correction and detection
KR20210088916A (ko) 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템
US6519735B1 (en) Method and apparatus for detecting errors in data output from memory and a device failure in the memory
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法
US20050066254A1 (en) Error detection in redundant array of storage units
CN112256478A (zh) 一种单磁盘故障的修复方法、系统、设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination