KR20200015999A - 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 - Google Patents

예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 Download PDF

Info

Publication number
KR20200015999A
KR20200015999A KR1020180091148A KR20180091148A KR20200015999A KR 20200015999 A KR20200015999 A KR 20200015999A KR 1020180091148 A KR1020180091148 A KR 1020180091148A KR 20180091148 A KR20180091148 A KR 20180091148A KR 20200015999 A KR20200015999 A KR 20200015999A
Authority
KR
South Korea
Prior art keywords
data
parity
memory device
prediction error
determining
Prior art date
Application number
KR1020180091148A
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 KR1020180091148A priority Critical patent/KR20200015999A/ko
Priority to US16/384,193 priority patent/US11119853B2/en
Priority to CN201910506044.4A priority patent/CN110806947B/zh
Publication of KR20200015999A publication Critical patent/KR20200015999A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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/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/0727Error 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 storage system, e.g. in a DASD or network based storage system
    • 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
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/52Protection of memory contents; Detection of errors in memory contents
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 에 관한 것으로서, 구체적으로는 메모리 시스템에 저장된 데이터에 읽기 동작시 발생하는 오류를 정정하는 기술에 관한 것이다. 본 발명의 일 측면에 따르면, 적어도 하나의 다이(die)를 포함하며, 다이에 대하여 데이터의 쓰기, 읽기 및 소거 중 적어도 하나의 동작을 수행하는 메모리 장치 및 오류 관리 명령어를 실행하고, 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되, 오류 관리 명령어는 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하고, 예측 오류 패리티를 생성하는데 이용되는 데이터인 제2 데이터를 적어도 하나 결정하며, 결정된 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성하도록 구성되며, 메모리 장치는 상기 컨트롤러의 제어에 따라, 상기 제1 데이터 및 제2 데이터의 인덱스, 및 예측 오류 패리티를 다이에 저장하기 위해 쓰기 동작을 수행하는 메모리 시스템이 제공된다

Description

예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템{PREDICTED ERROR CORRECTION APPARATUS, ITS OPERATION METHOD AND MEMORY SYSTEM USING THE SAME}
본 발명은 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템에 관한 것으로서, 구체적으로는 메모리 시스템에 저장된 데이터에 대한 읽기 동작시 발생하는 오류를 정정하는 기술에 관한 것이다.
일반적으로 메모리 장치는 전원이 차단될 때 저장된 데이터가 손실되는 휘발성 메모리와 전원이 차단되더라도 저장된 데이터가 보존되는 비휘발성 메모리로 구분될 수 있다. 이러한 메모리 장치를 포함하는 데이터 처리 시스템은 외부 호스트 장치로부터 쓰기, 읽기, 소거 등의 요청에 따라 메모리 장치를 제어하기 위한 컨트롤러가 요구된다. 또한, 컨트롤러는 반도체 메모리 장치로부터 저장된 데이터를 리드하는 과정에 발생할 수 있는 오류를 정정할 수 있다. 하지만, 이러한 컨트롤러의 오류 정정 능력은 데이터 처리 시스템의 성능과 트레이드 오프 관계를 가질 수 있어 제한이 따른다.
본 발명의 목적은 데이터의 신뢰성, 오류 정정의 효율성 등을 향상시키는 오류 정정 기술을 제공하는 데 있다.
본 발명의 일 측면에 따르면, 적어도 하나의 다이(die)를 포함하며, 다이에 대하여 데이터의 쓰기, 읽기 및 소거 중 적어도 하나의 동작을 수행하는 메모리 장치 및 오류 관리 명령어를 실행하고, 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되, 오류 관리 명령어는 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하고, 예측 오류 패리티를 생성하는데 이용되는 데이터인 제2 데이터를 적어도 하나 결정하며, 결정된 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성하도록 구성되며, 메모리 장치는 상기 컨트롤러의 제어에 따라, 상기 제1 데이터 및 제2 데이터의 인덱스, 및 예측 오류 패리티를 다이에 저장하기 위해 쓰기 동작을 수행하는 메모리 시스템이 제공된다.
또한, 본 발명의 다른 측면에 따르면, 데이터가 저장되는 메모리 장치 및 상기 메모리 장치의 동작을 제어하는 컨트롤러를 포함하는 메모리 시스템의 동작 방법에 있어서, 컨트롤러가 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하는 단계, 컨트롤러가 제1 데이터에 대응하는 패리티인 예측 오류 패리티를 생성하는데 이용되는 데이터인 적어도 하나의 제2 데이터를 결정하는 단계, 컨트롤러가 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성하는 단계 및 메모리 장치가, 컨트롤러의 제어에 따라, 제1 데이터 및 제2 데이터의 인덱스와 예측 오류 패리티를 저장하기 위해 쓰기 동작을 수행하는 단계를 포함하는 메모리 시스템의 동작 방법이 제공된다.
또한, 본 발명의 다른 측면에 따르면, 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하는 제1 데이터 결정부, 상기 제1 데이터에 대응하는 패리티인 예측 오류 패리티를 생성하는데 이용되는 데이터인 제2 데이터를 적어도 하나 결정하는 제2 데이터 결정부 및 제1 데이터 및 제2 데이터를 기반으로 상기 예측 오류 패리티를 생성하는 예측 오류 패리티 생성부를 포함하는 예측 오류 정정 장치가 제공된다.
여기서, 제1 데이터는 페일 비트 및 연판정 수행 여부 중 적어도 하나를 기반으로 결정될 수 있다.
여기서, 제2 데이터는 데이터의 안정성 및 집약성 중 적어도 하나를 기반으로 결정될 수 있다.
또한, 제2 데이터는 소거 횟수, 연판정 수행 여부 및 페일 비트 중 적어도 하나를 기반으로 판단되는 안정성에 따라 결정될 수 있다.
또한, 제2 데이터는 시간적 집약성 및 제1 데이터에 대한 공간적 집약성 중 적어도 하나를 기반으로 결정될 수 있다.
여기서, 읽기 동작시 제1 데이터 및 제2 데이터 중 어느 하나에 발생한 페일 비트는 예측 오류 패리티를 기반으로 정정될 수 있다.
여기서, 페일 비트가 발생한 데이터는 ECC 디코딩 과정에서 정정되지 않으면, 예측 오류 패리티를 기반으로 정정될 수 있다.
또한, 제2 데이터의 전부 또는 일부는 메모리 장치에 저장된 데이터 중에서 결정될 수 있다.
또한, 제2 데이터의 수는 그룹 패리티를 구성하는 데이트의 크기를 기반으로 결정될 수 있다.
또한, 제2 데이터의 전부 또는 일부는 제1 데이터가 포함된 데이터 그룹 중에서 결정될 수 있다.
본 발명의 실시예에 따르면 데이터의 신뢰성, 오류 정정의 효율성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 구성도.
도 2는 본 발명의 일 실시예에 따른 컨트롤러의 블록도.
도 3은 본 발명의 일 실시예에 따른 예측 오류 정정 장치의 블록도.
도 4는 본 발명의 일 실시예에 따른 예측 오류 생성 방법의 흐름도.
도 5는 본 발명의 일 실시예에 따른 예측 오류 정정 방법의 흐름도.
도 6은 본 발명의 다른 실시예에 따른 예측 오류 정정 방법의 흐름도.
도 7은 본 발명의 일 실시예에 따른 메모리 장치를 개략적으로 도시한 도면.
도 8은 본 발명의 일 실시예에 따른 메모리 장치의 셀 어레이 회로를 개략적으로 도시한 도면.
도 9는 본 발명의 일 실시예에 따른 메모리 장치의 3차원 입체 스택 구조의 예를 설명하기 위한 도면.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서 및 청구항에서 사용되는 단수 표현은, 달리 언급하지 않는 한 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다.
이하, 본 발명의 바람직한 실시예를 첨부도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 데이터 처리 시스템(100)은 호스트(host, 110) 및 메모리 시스템(memory system, 120)을 포함할 수 있다.
호스트(110)는 데이터의 쓰기, 읽기, 소거 등 데이터 처리를 위해 필요한 일체의 동작을 메모리 시스템(120)에 요청할 수 있으며, 그에 따른 결과를 메모리 시스템(120)으로부터 수신할 수 있다.
또한, 호스트(110)는 휴대용 전자 장치(예, 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등), 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등 유무선 전자 장치들을 포함할 수 있다. 또한, 호스트(110)는 데이터 처리 시스템을 사용하는 사용자의 사용 목적 및 용도에 상응하는 기능 및 동작을 제공하기 위해, 윈도우, 크롬, 리룩스 등 적어도 하나의 운영 시스템 운영 시스템(OS: operating system)을 포함할 수 있다. 상술한 내용은 데이터 처리 시스템의 이해를 돕기 위한 호스트(110)의 일 예에 불과하므로, 본 발명의 호스트(110)가 상술한 내용에 한정되는 것이 아님은 자명하다.
메모리 시스템(120)은 호스트(110)의 요청에 따른 동작, 기타 메모리 시스템(120)을 유지하기 위해 필요한 일체의 동작을 수행할 수 있다. 이를 위해, 메모리 시스템(120)은 메모리 시스템(120)의 전반적인 동작을 제어하는 컨트롤러(controller, 121), 컨트롤러(121)의 제어 명령에 따른 동작, 기타 메모리 시스템(120)을 유지하기 위해 필요한 일체의 동작을 수행하는 메모리 장치(memory device, 122)를 포함할 수 있으며, 컨트롤러(121) 및 메모리 장치(122)는 채널(CH)를 통해 연결될 수 있다. 컨트롤러(121) 및 메모리 장치(122)에 대한 상세한 설명은 도 2 내지 9를 참조하여 후술한다.
또한, 메모리 시스템(120)은 메모리 장치(122)에 저장된 데이터를 읽는 동작 중 발생할 수 있는 오류를 예측하고, 예측된 오류(이하, 예측 오류)가 발생하면 예측 오류 패리티를 기반으로 예측 오류를 정정할 수 있다. 구체적 예로, 메모리 시스템(120)은 읽기 동작을 모니터링하고, 모니터링 결과를 기반으로 리드 페일 가능성이 높은 데이터(이하, 제1 데이터)를 결정할 수 있다. 메모리 시스템(120)은 제1 데이터에 대응하는 예측 오류 패리티를 생성하는데 이용되는 데이터(이하, 제2 데이터)를 결정할 수 있다. 메모리 시스템(120)은 제1 데이터 및 제2 데이터가 결정되면, 결정된 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성하고 관리할 수 있다. 이후, 메모리 시스템(120)은 제1 데이터에 대한 읽기 동작시 오류 즉, 예측 오류가 발생하면 예측 오류 패리티를 기반으로 제1 데이터의 오류를 정정할 수 있다.
또한, 메모리 시스템(120)은 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
상술한 내용은 메모리 시스템(120)의 이해를 돕기 위한 일 예에 불과하므로, 본 발명의 메모리 시스템(120)이 상술한 내용에 한정되는 것이 아님은 자명하다.
도 2는 본 발명의 일 실시예에 따른 컨트롤러의 블록도이다.
도 2를 참조하면, 일 실시예에 따른 컨트롤러(121)는 프로세서(processor, 210), 메모리(memory, 220), 오류 정정부(ECC, 230), 호스트 인터페이스(Host I/F, 240), 메모리 인터페이스(Memory I/F, 250), 전원 관리부(PMU, 260) 및 예측 오류 장치(P-ECC, 270)를 포함할 수 있다.
프로세서(210)는 메모리 시스템(120)의 전반적인 동작을 제어할 수 있다. 구체적 예로, 프로세서(210)는 호스트(110)로부터 쓰기, 읽기, 소거 등의 요청이 수신되면, 수신된 요청에 대응하는 동작을 수행하기 위해 컨트롤러(121)의 구성, 메모리 장치(122) 등의 동작을 제어할 수 있다.
일 실시예에서, 프로세서(210)는, 메모리 시스템(120)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 실행할 수 있다. 플래시 변환 계층은 메모리(220)에 로드 되며, 프로세서(210)는 로드된 플래시 변환 계층을 실행할 수 있다.
일 실시예에서, 플래시 변환 계층은 메모리 장치(122)에 저장된 데이터를 읽는 동작 중 발생할 수 있는 오류를 예측하고, 예측된 오류(이하, 예측 오류)가 발생하면 예측 오류 패리티를 기반으로 예측 오류를 정정하도록 구성된 오류 관리 명령어를 포함할 수 있다. 구체적 예로, 오류 관리 명령어는 읽기 동작을 모니터링하고, 모니터링 결과를 기반으로 리드 페일 가능성이 높은 데이터(이하, 제1 데이터)를 결정하도록 구성될 수 있다. 오류 관리 명령어는, 제1 데이터에 대응하는 예측 오류 패리티를 생성하는데 이용되는 데이터(이하, 제2 데이터)를 결정하도록 구성될 수 있다. 오류 관리 명령어는 제1 데이터 및 제2 데이터가 결정되면, 결정된 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성하고 관리하도록 구성될 수 있다. 이후, 오류 관리 명령어는 제1 데이터에 대한 읽기 동작시 오류 즉, 예측 오류가 발생하면 예측 오류 패리티를 기반으로 제1 데이터의 오류를 정정할 수 있다.
일 실시예에서, 프로세서(210)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
메모리(220)는 컨트롤러(121), 메모리 장치(122) 등의 동작 메모리일 수 있다. 이때, 메모리(220)는 컨트롤러(121) 및 메모리 장치(122)의 구동에 필요한 펌웨어 등의 데이터를 저장할 수 있다. 즉, 메모리(220)는 메모리 시스템(120), 컨트롤러(121) 등의 구동에 필요한 데이터를 저장하는 동작 메모리일 수 있다. 구체적 예로, 메모리(220)는 쓰기, 읽기, 소거 등 호스트(110)로부터 요청된 동작을 수행하기 위해, 호스트(110)로, 메모리 장치(122)로부터 수신되는 데이터를 저장할 수 있다. 이를 위해, 메모리(220)는 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등일 수 있다.
일 실시예에서, 메모리(220)는 휘발성 메모리로 구현될 수 있다. 예를 들어, 메모리(220)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다.
오류 정정부(230)는 메모리 시스템(120)에서 처리되는 데이터의 오류를 정정할 수 있다.
일 실시예에서, 오류 정정부(230)는 쓰기 동작시 메모리 장치(122)에 저장될 데이터에 대한 에러 정정 인코딩 error correction encoding)을 수행하는 ECC 인코더(미도시) 및 읽기 동작시 메모리 장치(122)로부터 수신되는 데이터에 대한 에러 정정 디코딩(error correction decoding)을 수행하는 ECC 디코더(미도시)를 포함할 수 있다. ECC 인코더는 메모리 장치(122)에 저장될 데이터에 대한 에러 정정 인코딩을 수행하여 패리티 비트를 생성하고, 생성된 데이터를 메모리 장치(122)에 저장될 데이터에 부가할 수 있다. 이때, 메모리 장치(122)는 패리티 비트가 부가된 데이터를 저장할 수 있다. ECC 디코더는 패리티 비트를 기반으로 메모리 장치(122)로부터 수신된 데이터에 대한 에러 정정 디코딩을 수행하여 오류를 검출하고, 검출된 오류를 정정할 수 있다. 이때, ECC 디코더는 검출된 오류가 ECC 디코더의 오류 정정 능력의 한계치를 벗어난 수의 오류 비트가 발생하면, 검출된 오류를 정정할 수 없어 에러 정정 실패 신호를 출력할 수 있다.
일 실시예에서, 오류 정정부(230)는 메모리 장치(122)로부터 수신되는 데이터에 대한 경판정(hard decision) 및 연판정(soft decision) 을 수행할 수 있다. 여기서, 경판정은 소정의 기준 읽기 전압을 인가하였을 때의 메모리 셀의 온/오프 특성에 따라 읽혀진 데이터(이하, 경판정 데이터라 칭함)와 에러 정정 부호(Error Correction Codes)만을 이용하여 메모리 장치(122)로부터 수신된 데이터의 에러를 정정하는 방법을 의미할 수 있다. 연판정 방식은 경판정 데이터 및 에러 정정 부호 이외에 경판정 데이터의 신뢰성에 대한 부가 정보(이하, 신뢰성 데이터라 칭함)를 추가적으로 이용하여 메모리 장치(122)로부터 수신된 데이터의 에러를 정정하는 방법을 의미할 수 있다. 오류 정정부(230)는 메모리 장치(122)로부터 수신되는 데이터에 대한 경판정 및 연판정을 모두 수행하거나 어느 하나를 수행할 수 있다. 또한, 오류 정정부(230)는 메모리 장치(122)로부터 수신되는 데이터에 대한 경판정을 수행하여 오류가 정정되지 않으면, 연판정을 수행할 수 있다.
일 실시예에서, 오류 정정부(230)는 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) 등을 이용하여, 메모리 장치(122)로부터 수신되는 데이터의 오류를 정정할 수 있다.
또한, 오류 정정부(230)는 그룹 패리티를 기반으로 메모리 장치(122)로부터 수신되는 데이터의 오류를 정정할 수 있다. 구체적 예로, 오류 정정부(230)는 쓰기 동작시 미리 설정된 기준에 따라 데이터 그룹을 설정하고, 설정된 데이터 그룹에 포함된 데이터를 기반으로 오류 정정을 위한 그룹 패리티를 생성할 수 있다. 이때, 그룹 패리티는 데이터 그룹과 함께 메모리 장치(122)에 저장될 수 있다. 또한, 그룹 패리티에 대한 읽기 동작은 이에 대응하는 그룹 데이터에 대한 읽기 동작과 동시 또는 선후하여 수행될 수 있다. 오류 정정부(230)는 데이터 그룹에 대한 읽기 동작시 데이터 그룹에 속한 데이터에 오류가 발생하면, 그룹 패리티를 기반으로 그룹 데이터에 발생한 오류를 정정할 수 있다. 여기서, 미리 설정된 기준은 블록, 워드라인 등을 기반을 설정될 수 있으며 예를 들면, 읽기 동작이 동시에 수행되는 복수의 블록인 슈퍼 블록, 적어도 하나의 워드 라인에 연결된 페이지 등으로 설정될 수 있다.
일 실시예에서, 오류 정정부(230)는 동일한 데이터 그룹에 속한 데이터들에 대한 논리적 배타합(XOR) 연산을 수행하여, 그룹 패리티를 생성할 수 있다.
일 실시예에서, 오류 정정부(230)는 그룹 패리티에 기반한 오류 정정을 다른 오류 정정 방법(예, ECC 디코딩, 예측 오류 패리티)과 동시에 수행하거나 선후하여 수행될 수 있다. 또한, 오류 정정부(230)는 다른 오류 정정 방법을 통한 오류 정정이 불가능하면, 그룹 패리티에 기반한 오류 정정을 수행할 수 있다.
호스트 인터페이스(240)는 메모리 시스템(120)과 호스트(110)간의 데이터 통신을 가능하게 할 수 있다. 구체적 예로, 호스트 인터페이스(240)는 호스트(110)로부터 쓰기, 읽기, 소거 등의 요청을 수신하고, 수신된 요청에 대응하는 데이터를 호스트(110)에 전송할 수 있다. 이를 위해, 호스트(110)는 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 기반으로 구동될 수 있다.
일 실시예에서, 호스트 인터페이스(240)는 호스트(110)에 데이터를 전송하거나 호스트(110)로부터 데이터를 수신하기 위해 규정된 통신 프로토콜에 따라, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등으로 구현될 수 있다.
메모리 인터페이스(250)는 컨트롤러(121)와 메모리 장치(122)간의 데이터 통신을 가능하게 할 수 있다. 구체적 예로, 메모리 인터페이스(250)는 호스트(110)로부터 수신된 쓰기, 읽기 소거 등의 요청을 수행하기 위해 필요한 데이터, 기타 메모리 시스템(120)의 유지를 위해 필요한 데이터 등을 메모리 장치(122)에 전송하고, 이에 대응하는 데이터를 메모리 장치(122)로부터 수신할 수 있다. 이를 위해, 메모리 인터페이스(250)는 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
전원 관리부(260)는 메모리 시스템(120)을 구동하기 위한 전력을 관리할 수 있다. 구체적 예로, 전원 관리부(260)는 호스트(110) 등의 외부 장치, 배터리 등으로부터 전력을 공급 받을 수 있으며, 공급된 전력을 메모리 시스템(120)의 각 구성이 동작할 수 있도록 전력을 분배할 수 있다. 또한, 전원 관리부(260)는 갑작스런 전력 차단에도 메모리 시스템(120)이 정상적으로 동작할 수 있도록 전력을 저장하는 커패시터, 배터리 등을 포함할 수 있다.
예측 오류 정정 장치(270)는 읽기 동작시 리드 페일 가능성이 높은 데이터를 예측하고, 이를 정정할 수 있다. 이에 대한 상세한 설명은 도 3을 참조하여 후술한다.
또한, 예측 오류 정정 장치(270)가 수행하는 기능은 펌웨어의 형태로 플래시 변환 계층의 일부로 구현될 수 있다.
도 3은 본 발명의 일 실시예에 따른 예측 오류 정정 장치의 블록도이다.
도 3을 참조하면, 일 실시예에 따른 예측 오류 정정 장치(270)는 오류의 발생을 예측하여 정정할 수 있으며 이를 위해, 읽기 동작 모니터링부(310), 제1 데이터 결정부(320), 제2 데이터 결정부(330), 예측 오류 패리티 생성부(340), 예측 오류 패리티 관리부(350) 및 예측 오류 정정부(360)를 포함할 수 있다.
읽기 동작 모니터링부(310)는 메모리 시스템(120)의 읽기 동작을 모니터링한다. 구체적 예로, 읽기 동작 모니터링부(310)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시, 페일 비트, 연판정 수행 여부, 오류 정정 수행 여부 등을 모니터링할 수 있다. 또한, 읽기 동작 모니터링부(310)는 읽기 동작시 오류 발생을 검출하거나 오류 정정부(230) 등으로부터 오류 검출 결과를 수신할 수 있다.
일 실시예에서, 읽기 동작 모니터링부(310)는 메모리 장치(122)에 저장된 데이터에 대한 접근 횟수 즉, 소거, 읽기, 쓰기 등의 횟수를 모니터링할 수 있다.
제1 데이터 결정부(320)는 안정성이 낮은 데이터를 결정한다. 구체적으로, 제1 데이터 결정부(320)는 읽기 동작 모니터링부(310)의 모니터링 결과를 기반으로 안정성이 낮은 데이터 즉, 추후 읽기 동작이 수행될 경우 리드 페일이 발생할 가능성이 높은 데이터인 제1 데이터를 결정할 수 있다.
일 실시예에서, 제1 데이터 결정부(320)는 페일 비트를 기반으로 제1 데이터를 결정할 수 있다. 예를 들어, 제1 데이터 결정부(320)는 미리 설정된 제1 임계값(예, 2 이상) 이상의 페일 비트가 발생하면, 해당 데이터를 제1 데이터로 결정할 수 있다. 여기서, 제1 임계값은 오류 정정부(230)의 오류 정정 능력에 따라 결정될 수 있다. 또한, 제1 임계값은 메모리 시스템(120)의 제조 또는 사용 단계에서 임의로 설정될 수 있다.
일 실시예에서, 제1 데이터 결정부(320)는 연판정 수행 여부를 기반으로 제1 데이터를 결정할 수 있다. 예를 들어, 제1 데이터 결정부(320)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시, 연판정이 수행된 데이터를 제1 데이터로 결정할 수 있다.
일 실시예에서, 제1 데이터 결정부(320)는 페일 비트 및 연판정 수행 여부를 기반으로 제1 데이터를 결정할 수 있다. 예를 들어, 제1 데이터 결정부(320)는 연판정이 수행된 데이터 중에서 페일 비트의 수가 미리 설정된 페일 비트의 수 이상 발생한 데이터를 제1 데이터로 결정할 수 있다.
제2 데이터 결정부(330)는 예측 오류 패리티를 생성하는데 이용되는 데이터인 제2 데이터를 결정할 수 있다. 구체적 예로, 제2 데이터 결정부(330)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시 예측된 오류 즉, 제1 데이터의 오류 발생시 이를 정정하는데 이용되는 패리티인 예측 오류 패리티를 생성하는데 이용되는 제2 데이터를 적어도 하나 결정할 수 있다.
또한, 제2 데이터 결정부(330)는 안정성을 기반으로 제2 데이터를 결정할 수 있다. 구체적으로, 제2 데이터 결정부(330)는 읽기 동작 모니터링부(310)의 모니터링 결과를 기반으로 안정성이 높은 데이터를 제2 데이터로 결정할 수 있다. 이는 상대적으로 안정성이 높은 데이터를 기반으로 예측 오류 패리티를 생성함으로써, 예측 오류 정정의 성능을 향상시키기 위함이다.
일 실시예에서, 제2 데이터 결정부(330)는 페일 비트를 기반으로 안정성을 판단하여 제2 데이터를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 읽기 동작시 페일 비트가 발생하지 않거나 미리 설정된 제2 임계값(예, 1) 이하의 페일 비트가 발생하는 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 제2 데이터 결정부(330)는 연판정 수행 여부를 기반으로 안정성을 판단하여 제2 데이터를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 읽기 동작시 연판정을 수행하지 않은 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 제2 데이터 결정부(330)는 접근 횟수를 기반으로 안정성을 판단하여 제2 데이터를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 읽기, 쓰기 또는 소거 횟수가 미리 설정된 제3 임계값(예, 100) 이상인 블록, 페이지 또는 셀에 저장된 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 제2 데이터 결정부(330)는 페일 비트, 연판정 수행 여부 및 접근 횟수 중 적어도 2이상을 기반으로 안정성을 판단하여, 제2 데이터를 결정할 수 있다.
또한, 제2 데이터 결정부(330)는 집약성(locality)을 기반으로 제2 데이터를 판단할 수 있다. 이는 제1 데이터의 오류를 정정하기 위해 메모리 장치(122)에 저장된 데이트를 읽어 들이는 과정에서 발생하는 시간 지연을 경감하기 위함이다.
일 실시예에서, 제2 데이터 결정부(330)는 공간적 집약성(Spatial Locality )을 기반으로 제2 데이터를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 제1 데이터의 논리 주소 또는 물리 주소와 인접하는 주소를 갖는 데이터를 제2 데이터로 결정할 수 있다. 즉, 제2 데이터 결정부(330)는 읽기 동작시 제1 데이터와 동시 또는 선후하여 읽기 동작이 이루어지는 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 제2 데이터 결정부(330)는 시간적 집약성(Temporary Locality)을 기반으로 제2 데이터를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 메모리 장치(122)에 저장된 데이터 중 읽기 동작의 빈도가 높은 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 제2 데이터 결정부(330)는 공간적 집약성 및 시간적 집약성을 기반으로 제2 데이터를 결정할 수 있다.
또한, 제2 데이터 결정부(330)는 안정성 및 집약성을 기반으로 제2 데이터를 결정할 수 있음은 자명하다.
또한, 제2 데이터 결정부(330)는 예측 오류 정정의 효율을 기반으로 제2 데이터의 수를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 제1 데이터의 오류를 정정하기 위한 별도의 수단(예, 그룹 패리티)가 존재하는 경우, 데이터 그룹을 구성하는 데이터의 크기 보다 작은 크기가 되도록 제2 데이터의 수를 결정할 수 있다. 즉, 제2 데이터 결정부(330)는 제1 데이터가 포함된 데이터 그룹이 4개의 페이지로 구성된 경우, 3개 이하의 페이지가 되도록 제2 데이터의 수를 결정할 수 있다. 즉, 제2 데이터 결정부(330)는 예측 오류 패리티를 기반으로 데이터의 오류를 정정하는 연산량이 다른 오류 정정 방법에 의한 연산량 보다 적도록, 제2 데이터의 수를 결정할 수 있다.
또한, 제2 데이터 결정부(330)는 메모리 장치(122)에 저장된 데이터 중에서 제2 데이터 중 일부 또는 전부를 결정할 수 있다. 이때, 제2 데이터 결정부(330)는 제2 데이터의 일부만 메모리 장치(122) 저장된 데이터 중에서 결정된 경우, 메모리(220)에 저장된 데이터나 예측 오류 패리티 생성을 위해 미리 설정된 데이터를 제2 데이터로 결정할 수 있다.
또한, 제2 데이터 결정부(330)는 별도의 오류 정정 수단을 고려하여 제2 데이터 일부 또는 전부를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 제1 데이터에 대한 그룹 패리티가 존재하는 경우, 제1 데이터가 속한 데이터 그룹 중에서 제2 데이터 일부 또는 전부를 결정할 수 있다.
예측 오류 패리티 생성부(340)는 예측 오류를 정정하기 위한 예측 오류 패리티를 생성한다. 구체적으로, 예측 오류 패리티 생성부(340)는 제1 데이터 및 제2 데이터가 결정되면, 결정된 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성할 수 있다. 여기서, 예측 오류 패리티는 제1 데이터 오류가 발생한 경우뿐만 아니라 제2 데이터에 오류가 발생한 경우에도, 이를 정정하기 위해 이용될 수 있음은 자명하다.
일 실시예에서, 예측 오류 패리티 생성부(340)는 제1 데이터 및 제2 데이터에 대한 배타적 논리합(XOR) 연산을 수행하여, 예측 오류 패리티를 생성할 수 있다.
예측 오류 패리티 관리부(350)는 예측 오류 패리티를 관리한다. 구체적으로, 예측 오류 패리티 관리부(350)는 제1 데이터의 인덱스(예, 논리 주소, 물리 주소, 페이지 넘버 등), 제2 데이터의 인덱스(예, 논리 주소, 물리 주소, 페이지 넘버 등) 및 예측 오류 패리티 중 적어도 하나를 메모리 장치(122)에 저장하거나 메모리 등의 별도의 저장 공간에 저장할 수 있다.
예측 오류 정정부(360)는 예측된 오류를 정정한다. 구체적으로, 예측 오류 정정부(360)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시 페일 비트가 발생하면, 예측 오류 패리티 관리부(350)에 의해 관리되는 제1 데이터 또는 제2 데이터의 인덱스를 기반으로 페일 비트가 발생한 데이터에 대응하는 예측 오류 패리티가 존재하는지 확인할 수 있다. 예측 오류 정정부(360)는 페일 비트가 발생한 데이터에 대응하는 예측 오류 패리티가 존재하는 경우, 제1 데이터 또는 제2 데이터와 예측 오류 패리티를 기반으로 페일 비트가 발생한 데이터의 오류를 정정할 수 있다.
일 실시예에서, 예측 오류 정정부(360)는 다른 오류 정정 수단에 우선하여 또는 예비적으로 수행될 수 있다. 예를 들어, 예측 오류 정정부(360)는 오류 정정부(230)에 의해 오류가 정정되지 않는 경우에, 예측 오류 패리티를 기반으로 오류를 정정할 수 있다. 또한, 예측 오류 정정부(360)는 오류 정정부(230)에 우선하여 예측 오류 패리티를 기반으로 오류를 정정할 수 있다.
또한, 상기 오류 정정 장치(270)에 관한 설명이 컨트롤러(121), 플래시변환 계층, 오류 관리 명령어, 메모리 시스템(100) 등에 확장될 수 있음은 자명하다.
도 4는 본 발명의 일 실시예에 따른 예측 오류 생성 방법의 흐름도이다.
상기 방법은 예측 오류 정정 장치(270), 컨트롤러(121), 플래시 변환 계층, 메모리 시스템(100) 등에 의해 수행될 수 있으나 이하, 컨트롤러(121)에 의해 수행되는 것을 예시로 설명한다.
도 4를 참조하면, 단계 S410에서 읽기 동작이 모니터링된다. 구체적 예로, 컨트롤러(121)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시, 페일 비트, 연판정 수행 여부, 오류 정정 수행 여부 등을 모니터링할 수 있다.
일 실시예에서, 컨트롤러(121)는 메모리 장치(122)에 저장된 데이터에 대한 접근 횟수 즉, 소거, 읽기, 쓰기 등의 횟수를 모니터링할 수 있다.
단계 S420에서, 리드 페일 가능성이 판단된다. 구체적 예로, 컨트롤러(121)는 페일 비트 및 연판정 수행 여부 등을 기반으로, 추후 읽기 동작시 리드 페일이 발생할 가능성이 존재하는지 판단할 수 있다. 또한, 컨트롤러(121)는 리드 페일이 발생하지 않을 것으로 판단되면, 단계 S410를 다시 수행할 수 있다.
단계 S430에서, 제1 데이터가 결정된다. 구체적 예로, 컨트롤러(121)는 리드 페일 가능성이 높은 데이터를 제1 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 페일 비트를 기반으로 제1 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 미리 설정된 제1 임계값(예, 2 이상) 이상의 페일 비트가 발생하면, 해당 데이터를 제1 데이터로 결정할 수 있다. 여기서, 제1 임계값은 오류 정정부(230)의 오류 정정 능력에 따라 결정될 수 있다. 또한, 제1 임계값은 메모리 시스템(120)의 제조 또는 사용 단계에서 임의로 설정될 수 있다.
일 실시예에서, 컨트롤러(121)는 연판정 수행 여부를 기반으로 제1 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시, 연판정이 수행된 데이터를 제1 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 페일 비트 및 연판정 수행 여부를 기반으로 제1 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 연판정이 수행된 데이터 중에서 페일 비트의 수가 미리 설정된 페일 비트의 수 이상 발생한 데이터를 제1 데이터로 결정할 수 있다.
단계 S440에서, 제2 데이터가 결정된다. 구체적 예로, 컨트롤러(121)는 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시 예측된 오류 즉, 제1 데이터의 오류 발생시 이를 정정하는데 이용되는 패리티인 예측 오류 패리티를 생성하는데 이용되는 제2 데이터를 적어도 하나 결정할 수 있다.
또한, 컨트롤러(121)는 안정성을 기반으로 제2 데이터를 결정할 수 있다. 구체적 예로, 컨트롤러(121)는 읽기 동작 모니터링부(310)의 모니터링 결과를 기반으로 안정성이 높은 데이터를 제2 데이터로 결정할 수 있다. 이는 상대적으로 안정성이 높은 데이터를 기반으로 예측 오류 패리티를 생성함으로써, 예측 오류 정정의 성능을 향상시키기 위함이다.
일 실시예에서, 컨트롤러(121)는 페일 비트를 기반으로 안정성을 판단하여 제2 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 읽기 동작시 페일 비트가 발생하지 않거나 미리 설정된 제2 임계값(예, 1) 이하의 페일 비트가 발생하는 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 연판정 수행 여부를 기반으로 안정성을 판단하여 제2 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 읽기 동작시 연판정을 수행하지 않은 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 접근 횟수를 기반으로 안정성을 판단하여 제2 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 읽기, 쓰기 또는 소거 횟수가 미리 설정된 제3 임계값(예, 100) 이상인 블록, 페이지 또는 셀에 저장된 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 페일 비트, 연판정 수행 여부 및 접근 횟수 중 적어도 2이상을 기반으로 안정성을 판단하여, 제2 데이터를 결정할 수 있다.
또한, 컨트롤러(121)는 집약성을 기반으로 제2 데이터를 판단할 수 있다. 이는 제1 데이터의 오류를 정정하기 위해 메모리 장치(122)에 저장된 데이트를 읽어 들이는 과정에서 발생하는 시간 지연을 경감하기 위함이다.
일 실시예에서, 컨트롤러(121)는 공간적 집약성(Spatial Locality )을 기반으로 제2 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 제1 데이터의 논리 주소 또는 물리 주소와 인접하는 주소를 갖는 데이터를 제2 데이터로 결정할 수 있다. 즉, 컨트롤러(121)는 읽기 동작시 제1 데이터와 동시에 또는 선후하여 읽기 동작이 수행되는 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 시간적 집약성(Temporary Locality)을 기반으로 제2 데이터를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 메모리 장치(122)에 저장된 데이터 중 읽기 동작의 빈도가 높은 데이터를 제2 데이터로 결정할 수 있다.
일 실시예에서, 컨트롤러(121)는 공간적 집약성 및 시간적 집약성을 기반으로 제2 데이터를 결정할 수 있다.
또한, 컨트롤러(121)는 안정성 및 집약성을 기반으로 제2 데이터를 결정할 수 있음은 자명하다.
또한, 컨트롤러(121)는 예측 오류 정정의 효율을 기반으로 제2 데이터의 수를 결정할 수 있다. 예를 들어, 컨트롤러(121)는 제1 데이터의 오류를 정정하기 위한 별도의 수단(예, 그룹 패리티)가 존재하는 경우, 데이터 그룹을 구성하는 데이터의 크기 보다 작은 크기가 되도록 제2 데이터의 수를 결정할 수 있다. 즉, 컨트롤러(121)는 제1 데이터가 포함된 데이터 그룹이 4개의 페이지로 구성된 경우, 3개 이하의 페이지가 되도록 제2 데이터의 수를 결정할 수 있다.
또한, 컨트롤러(121)는 메모리 장치(122)에 저장된 데이터 중에서 제2 데이터 중 일부 또는 전부를 결정할 수 있다. 이때, 컨트롤러(121)는 제2 데이터의 일부만 메모리 장치(122) 저장된 데이터 중에서 결정된 경우, 메모리에 저장된 데이터나 예측 오류 패리티 생성을 위해 미리 설정된 데이터를 제2 데이터로 결정할 수 있다.
또한, 컨트롤러(121)는 별도의 오류 정정 수단을 고려하여 제2 데이터 일부 또는 전부를 결정할 수 있다. 예를 들어, 제2 데이터 결정부(330)는 제1 데이터에 대한 그룹 패리티가 존재하는 경우, 제1 데이터가 속한 데이터 그룹 중에서 제2 데이터 일부 또는 전부를 결정할 수 있다.
단계 S450에서, 예측 오류 패리티가 생성된다. 구체적 예로, 컨트롤러(121)는 제1 데이터 및 제2 데이터가 결정되면, 결정된 제1 데이터 및 제2 데이터를 기반으로 예측 오류 패리티를 생성할 수 있다. 여기서, 예측 오류 패리티는 제1 데이터 오류가 발생한 경우뿐만 아니라 제2 데이터에 오류가 발생한 경우에도, 이를 정정하기 위해 이용될 수 있음은 자명하다.
일 실시예에서, 컨트롤러(121)는 제1 데이터 및 제2 데이터에 대한 배타적 논리합(XOR) 연산을 수행하여, 예측 오류 패리티를 생성할 수 있다.
단계 S460에서, 예측 오류 패리티가 관리된다. 구체적 예로, 컨트롤러(121)는 제1 데이터의 인덱스(예, 주소, 페이지 넘버 등), 제2 데이터의 인덱스(예, 주소, 페이지 넘버 등) 및 예측 오류 패리티 중 적어도 하나를 메모리 장치(122)에 저장하거나 메모리 등의 별도의 저장 공간에 저장할 수 있다.
도 5는 본 발명의 일 실시예에 따른 예측 오류 정정 방법의 흐름도이다.
상기 방법은 예측 오류 정정 장치(270), 컨트롤러(121) 등에 의해 수행될 수 있으나 이하, 컨트롤러(121)에 의해 수행되는 것을 예시로 설명한다.
단계 S510에서, 읽기 동작이 모니터링된다. 구체적 예로, 컨트롤러(121)는 메모 장치에 저장된 데이터에 대한 읽기 동작을 모니터링하여, 페일 비트 등의 오류 발생 여부를 확인할 수 있다. 컨트롤러(121)는 오류가 발생하지 않으면 단계 S
단계 S520에서, 예측 오류 발생 여부가 확인된다. 구체적 예로, 컨트롤러(121)는 읽기 동작시 제1 데이터의 인덱스를 기반으로 오류가 발생한 데이터가 제1 데이터인지 여부를 확인하여, 오류가 발생한 데이터 제1 데이터로 확인되면 예측 오류가 발생한 것으로 판단할 수 있다. 컨트롤러(121)는 오류가 발생하지 않으면 단계 S510을 다시 수행할 수 있다.
단계 S530에서, 예측 오류가 정정된다. 구체적 예로, 컨트롤러(121)는 제2 데이터 및 예측 오류 패리티를 기반으로, 오류가 발생한 제1 데이터를 정정할 수 있다.
오류가 발생한 데이터가 제1 데이터에 해당하는지 여부를 확인할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 예측 오류 정정 방법의 흐름도이다.
상기 방법은 예측 오류 정정 장치(270), 컨트롤러(121) 등에 의해 수행될 수 있으나 이하, 컨트롤러(121)에 의해 수행되는 것을 예시로 설명한다.
단계 S610에서, 읽기 동작이 모니터링된다. 구체적 예로, 컨트롤러(121)는 메모 장치에 저장된 데이터에 대한 읽기 동작을 모니터링하여, 페일 비트 등의 오류 발생 여부를 확인할 수 있다.
단계 S620에서, 오류 발생 여부가 확인된다. 구체적 예로, 컨트롤러(121)는 ECC 디코딩 등을 통해, 메모리 장치(122)에 저장된 데이터에 대한 읽기 동작시 오류 발생 여부를 확인할 수 있다. 컨트롤러(121)는 오류가 확인되지 않으면 단계 S610을 다시 수행할 수 있다.
단계 S630에서, ECC 정정이 수행된다. 구체적 예로, 컨트롤러(121)는 데이터의 오류가 확인되면, ECC 디코딩을 수행하여 오류를 정정할 수 있다.
단계 S640에서, 그룹 패리티에 기반한 오류 정정이 수행된다. 구체적 예로, 컨트롤러(121)는 읽기 동작시 확인된 오류가 ECC 디코딩을 통해 정정되지 않으면, 오류가 발생한 데이터에 대응하는 그룹 패리티의 존재 여부를 확인할 수 있다. 컨트롤러(121)는 그룹 패리티가 확인되면, 그룹 패리티 및 해당 데이터 그룹을 구성하는 데이터를 기반으로 오류가 확인된 데이터를 정정할 수 있다.
단계 S650에서, 예측 오류 패리티에 기반한 오류 정정이 수행된다. 구체적 예로, 컨트롤러(121)는 읽기 동작시 확인된 오류를 ECC 디코딩 및 그룹 패리티를 통한 정정이 불가능한 경우, 오류가 발생한 데이터가 제1 데이터에 해당하는 여부를 확인할 수 있다. 컨트롤러(121)는 오류가 발생한 데이터가 제1 데이터에 해당하는 것으로 확인되면, 제2 데이터 및 예측 오류 패리티를 기반으로 오류가 확인된 데이터를 정정할 수 있다.
다시, 도 1을 참조하면, 메모리 장치(122)는, 복수의 메모리 블록(memory block)들(120a, 120b, 120c)을 포함할 수 있다. 여기서, 각각의 메모리 블록들(120a, 120b, 120c)은 복수의 페이지들(pages)을 포함할 수 있다. 또한, 각각의 페이지들은 복수의 워드라인(WL: Word Line)들이 연결된 복수의 메모리 셀들을 포함할 수 있다. 또한, 메모리 장치(122)는, 복수의 메모리 블록들(120a, 120b, 120c)이 각각 포함된 복수의 플래인들(plane)을 포함할 수 있으며, 특히 복수의 플래인들이 각각 포함된 복수의 메모리 다이(memory die)들을 포함할 수 있다. 실시예에 따라서, 메모리 장치(122)는 플래시 메모리 등의 비휘발성 메모리 장치로 구현될 수 있다. 이때, 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다. 이하, 메모리 장치(122)에 대한 구체적인 설명을 도 7 내지 도 9을 참조하여 후술한다.
도 7은 본 발명의 일 실시예에 따른 메모리 장치를 개략적으로 도시한 도면이다.
도 7을 참조하면, 메모리 장치(122)는, 복수의 메모리 블록들, 예컨대 블록0(BLK(Block)0)(710), 블록1(BLK1)(720), 블록2(BLK2)(730), 및 블록N-1(BLKN-1)(740)을 포함하며, 각각의 블록들(710, 720, 730, 740)은, 복수의 페이지들(Pages), 예컨대 2M개의 페이지들(2MPages)을 포함한다. 여기서, 설명의 편의를 위해, 복수의 메모리 블록들이 각각 2M개의 페이지들을 포함하는 것을 일 예로 하여 설명하지만, 복수의 메모리들은, 각각 M개의 페이지들을 포함할 수도 있다. 그리고, 각각의 페이지들은, 복수의 워드라인(WL: Word Line)들이 연결된 복수의 메모리 셀들을 포함한다.
또한, 메모리 장치(122)는, 복수의 메모리 블록들을, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(SLC: Single Level Cell) 메모리 블록 및 멀티 레벨 셀(MLC: Multi Level Cell) 메모리 블록 등으로 포함할 수 있다. 여기서, SLC 메모리 블록은, 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, 데이터 연산 성능이 빠르며 내구성이 높다. 그리고, MLC 메모리 블록은, 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 또는 그 이상의 비트)를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, SLC 메모리 블록보다 큰 데이터 저장 공간을 가짐, 다시 말해 고집적화할 수 있다. 특히, 메모리 장치(122)는, MLC 메모리 블록으로, 하나의 메모리 셀에 2 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 MLC 메모리 블록뿐만 아니라, 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 트리플 레벨 셀(TLC: Triple Level Cell) 메모리 블록, 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 쿼드러플 레벨 셀(QLC: Quadruple Level Cell) 메모리 블록, 또는 하나의 메모리 셀에 5 비트 또는 그 이상의 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 다중 레벨 셀(multiple level cell) 메모리 블록 등을 포함할 수 있다.
그리고, 각각의 블록들(710, 720, 730, 740)은, 쓰기 동작을 통해 호스트(110)로부터 제공된 데이터를 저장하고, 읽기 동작을 통해 저장된 데이터를 호스트(110)에게 제공한다.
도 8은 본 발명의 일 실시예에 따른 메모리 장치의 셀 어레이 회로를 개략적으로 도시한 도면이다.
도 8을 참조하면, 메모리 시스템(120)의 메모리 장치(122)에 포함된 복수의 메모리 블록들(120a, 120b, 120c)에서 각 메모리 블록(830), 메모리 셀 어레이로 구현되어 비트라인들(BL0 to BLm-1)에 각각 연결된 복수의 셀 스트링들(840)을 포함할 수 있다. 각 열(column)의 셀 스트링(840)은, 적어도 하나의 드레인 선택 트랜지스터(DST)와, 적어도 하나의 소스 선택 트랜지스터(SST)를 포함할 수 있다. 선택 트랜지스터들(DST, SST) 사이에는, 복수 개의 메모리 셀들, 또는 메모리 셀 트랜지스터들(MC0 to MCn-1)이 직렬로 연결될 수 있다. 각각의 메모리 셀(MC0 to MCn-1)은, 셀 당 복수의 비트들의 데이터 정보를 저장하는 MLC로 구성될 수 있다. 셀 스트링들(840)은 대응하는 비트라인들(BL0 to BLm-1)에 각각 전기적으로 연결될 수 있다.
여기서, 도 8은, 낸드 플래시 메모리 셀로 구성된 각 메모리 블록(830)을 일 예로 도시하고 있으나, 본 발명의 실시 예에 따른 메모리 장치(122)에 포함된 복수의 메모리 블록(120a, 120b, 120c)은, 낸드 플래시 메모리에만 국한되는 것은 아니라 노어 플래시 메모리(NOR-type Flash memory), 적어도 두 종류 이상의 메모리 셀들이 혼합된 하이브리드 플래시 메모리, 메모리 칩 내에 컨트롤러가 내장된 One-NAND 플래시 메모리 등으로도 구현될 수 있다. 아울러, 본 발명의 실시 예에 따른 메모리 장치(122)는, 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(Charge Trap Flash; CTF) 메모리 장치 등으로도 구현될 수 있다.
그리고, 메모리 장치(122)의 전압 공급부(810)는, 동작 모드에 따라서 각각의 워드라인들로 공급될 워드라인 전압들(예를 들면, 쓰기 전압, 읽기 전압, 패스 전압 등)과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 전압을 제공할 수 있으며, 이때 전압 공급 회로(810)의 전압 발생 동작은 제어 회로(도시하지 않음)의 제어에 의해 수행될 수 있다. 또한, 전압 공급부(810)는, 다수의 읽기 데이터를 생성하기 위해 복수의 가변 읽기 전압들을 생성할 수 있으며, 제어 회로의 제어에 응답하여 메모리 셀 어레이의 메모리 블록들(또는 섹터들) 중 하나를 선택하고, 선택된 메모리 블록의 워드라인들 중 하나를 선택할 수 있으며, 워드라인 전압을 선택된 워드라인 및 비선택된 워드라인들로 각각 제공할 수 있다.
아울러, 메모리 장치(122)의 읽기/쓰기(read/write) 회로(820)는, 제어 회로에 의해서 제어되며, 동작 모드에 따라 감지 증폭기(sense amplifier)로서 또는 라이트 드라이버(write driver)로서 동작할 수 있다. 예를 들면, 검증/정상 읽기 동작의 경우 읽기/쓰기 회로(820)는, 메모리 셀 어레이로부터 데이터를 읽기 위한 감지 증폭기로서 동작할 수 있다. 또한, 쓰기 동작의 경우 읽기/쓰기 회로(820)는, 메모리 셀 어레이에 저장될 데이터에 따라 비트라인들을 구동하는 라이트 드라이버로서 동작할 수 있다. 읽기/쓰기 회로(820)는, 쓰기 동작 시 셀 어레이에 저장될 데이터를 버퍼(미도시)로부터 수신하고, 입력된 데이터에 따라 비트라인들을 구동할 수 있다. 이를 위해, 읽기/쓰기 회로(820)는, 열(column)들(또는 비트라인들) 또는 열쌍(column pair)(또는 비트라인 쌍들)에 각각 대응되는 복수 개의 페이지 버퍼들(PB)(822,824,826)을 포함할 수 있으며, 각각의 페이지 버퍼(page buffer)(822,324,826)에는 복수의 래치들(도시하지 않음)이 포함될 수 있다.
도 9는 일 실시예에 따른 메모리 장치의 3차원 입체 스택 구조를 설명하기 위한 도면이다.
도 9를 참조하면, 메모리 장치(122)는, 2차원 또는 3차원의 메모리 장치로 구현될 수 있으며, 특히 도 9에 도시한 바와 같이, 3차원 입체 스택 구조의 비휘발성 메모리 장치로 구현될 수 있으며, 3차원 구조로 구현될 경우, 복수의 메모리 블록들(BLK0 to BLKN-1)을 포함할 수 있다. 여기서, 도 9는, 도 1에 도시한 메모리 장치(122)의 메모리 블록들(120a, 120b, 120c)을 보여주는 블록도로서, 각각의 메모리 블록들(120a, 120b, 120c)은, 3차원 구조(또는 수직 구조)로 구현될 수 있다. 예를 들면, 각각의 메모리 블록들(120a, 120b, 120c)은 제1방향 내지 제3방향들, 예컨대 x-축 방향, y-축 방향, 및 z-축 방향을 따라 신장된 구조물들을 포함하여, 3차원 구조로 구현될 수 있다.
다시 도 8을 참조하면, 메모리 장치(122)에 포함된 각 메모리 블록(830)은, 제2방향을 따라 신장된 복수의 낸드 스트링들(NS)을 포함할 수 있으며, 제1방향 및 제3방향들을 따라 복수의 낸드 스트링들(NS)이 제공될 수 있다. 여기서, 각 낸드 스트링(NS)은, 비트라인(BL), 적어도 하나의 스트링 선택라인(SSL), 적어도 하나의 접지 선택라인(GSL), 복수의 워드라인들(WL), 적어도 하나의 더미 워드라인(DWL), 그리고 공통 소스라인(CSL)에 연결될 수 있으며, 복수의 트랜지스터 구조들(TS)을 포함할 수 있다.
즉, 메모리 장치(122)의 복수의 메모리 블록들(120a, 120b, 120c)에서 각 메모리 블록(830)은, 복수의 비트라인들(BL), 복수의 스트링 선택라인들(SSL), 복수의 접지 선택라인들(GSL), 복수의 워드라인들(WL), 복수의 더미 워드라인들(DWL), 그리고 복수의 공통 소스라인(CSL)에 연결될 수 있으며, 그에 따라 복수의 낸드 스트링들(NS)을 포함할 수 있다. 또한, 각 메모리 블록(330)에서, 하나의 비트라인(BL)에 복수의 낸드 스트링들(NS)이 연결되어, 하나의 낸드 스트링(NS)에 복수의 트랜지스터들이 구현될 수 있다. 아울러, 각 낸드 스트링(NS)의 스트링 선택 트랜지스터(SST)는, 대응하는 비트라인(BL)과 연결될 수 있으며, 각 낸드 스트링(NS)의 접지 선택 트랜지스터(GST)는, 공통 소스라인(CSL)과 연결될 수 있다. 여기서, 각 낸드 스트링(NS)의 스트링 선택 트랜지스터(SST) 및 접지 선택 트랜지스터(GST) 사이에 메모리 셀들(MC)이 제공, 즉 메모리 장치(122)의 복수의 메모리 블록들(120a, 120b, 120c)에서 각 메모리 블록(830)에는 복수의 메모리 셀들이 구현될 수 있다.
이제까지 본 발명에 대하여 그 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (31)

  1. 적어도 하나의 다이(die)를 포함하며, 상기 다이에 대하여 데이터의 쓰기, 읽기 및 소거 중 적어도 하나의 동작을 수행하는 메모리 장치 및
    오류 관리 명령어를 실행하고, 상기 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되,
    상기 오류 관리 명령어는,
    상기 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하고, 예측 오류 패리티를 생성하는데 이용되는 데이터인 제2 데이터를 적어도 하나 결정하며, 결정된 제1 데이터 및 제2 데이터를 기반으로 상기 예측 오류 패리티를 생성하도록 구성되며,
    상기 메모리 장치는,
    상기 컨트롤러의 제어에 따라, 상기 제1 데이터 및 제2 데이터의 인덱스, 및 예측 오류 패리티를 상기 다이에 저장하기 위해 상기 쓰기 동작을 수행하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 오류 관리 명령어는,
    페일 비트 및 연판정 수행 여부 중 적어도 하나를 기반으로 상기 리드 페일 가능성을 판단하여 상기 제1 데이터가 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 오류 관리 명령어는,
    데이터의 안정성 및 집약성 중 적어도 하나를 기반으로 상기 제2 데이터가 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 오류 관리 명령어는,
    소거 횟수, 연판정 수행 여부 및 페일 비트 중 적어도 하나를 기반으로 상기 안정성을 판단하여 상기 제2 데이터가 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  5. 제 3 항에 있어서,
    상기 오류 관리 명령어는,
    시간적 집약성 및 상기 제1 데이터에 대한 공간적 집약성 중 적어도 하나를 기반으로 상기 집약성을 판단하여 상기 제2 데이터가 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  6. 제 3 항에 있어서,
    상기 오류 관리 명령어는,
    상기 제1 데이터 및 제2 데이터 중 어느 하나에 페일 비트가 발생하면, 상기 예측 오류 패리티를 기반으로 상기 페일 비트가 발생한 데이터가 정정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  7. 제 6 항에 있어서,
    상기 오류 관리 명령어는,
    상기 페일 비트가 발생한 데이터가 ECC 디코딩 과정에서 정정되지 않으면, 상기 예측 오류 패리티를 기반으로 상기 페일 비트가 발생한 데이터가 정정되도록 구성되는 것을 특징으로 하는 메모리 시스템
  8. 제 1 항에 있어서,
    상기 오류 관리 명령어는,
    상기 제2 데이터 중 전부 또는 일부가 상기 메모리 장치에 저장된 데이터 중에서 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  9. 제 1 항에 있어서,
    상기 오류 관리 명령어는,
    데이터 그룹 - 데이터 그룹은 미리 설정된 기준에 따라 상기 메모리 장치에 저장된 데이터 전부 또는 일부를 포함함 - 의 패리티인 그룹 패리티가 존재하고, 상기 제1 데이터가 상기 데이터 그룹에 포함되면,
    상기 데이터 그룹을 구성하는 데이터의 크기 보다 작은 크기가 되도록, 상기 제2 데이터의 수가 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 오류 관리 명령어는,
    상기 데이터 그룹에 포함된 데이터 중에서 상기 제2 데이터 전부 또는 일부가 결정되도록 구성되는 것을 특징으로 하는 메모리 시스템.
  11. 데이터가 저장되는 메모리 장치 및 상기 메모리 장치의 동작을 제어하는 컨트롤러를 포함하는 메모리 시스템의 동작 방법에 있어서,
    상기 컨트롤러가, 상기 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하는 단계;
    상기 컨트롤러가, 상기 제1 데이터에 대응하는 패리티인 예측 오류 패리티를 생성하는데 이용되는 데이터인 적어도 하나의 제2 데이터를 결정하는 단계;
    상기 컨트롤러가, 제1 데이터 및 제2 데이터를 기반으로 상기 예측 오류 패리티를 생성하는 단계 및
    상기 메모리 장치가, 상기 컨트롤러의 제어에 따라, 상기 제1 데이터 및 제2 데이터의 인덱스와 예측 오류 패리티를 저장하기 위해 쓰기 동작을 수행하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  12. 제 11 항에 있어서,
    상기 제1 데이터를 결정하는 단계는,
    페일 비트 및 연판정 수행 여부 중 적어도 하나를 기반으로 상기 리드 페일 가능성을 판단하여 상기 제1 데이터를 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  13. 제 11 항에 있어서,
    상기 제2 데이터를 결정하는 단계는,
    데이터의 안정성 및 집약성 중 적어도 하나를 기반으로 상기 제2 데이터를 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  14. 제 13 항에 있어서,
    상기 제2 데이터를 결정하는 단계는,
    소거 횟수, 연판정 수행 여부 및 페일 비트 중 적어도 하나를 기반으로 상기 안정성을 판단하여 상기 제2 데이터를 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  15. 제 13 항에 있어서,
    상기 제2 데이터를 결정하는 단계는,
    시간적 집약성 및 상기 제1 데이터에 대한 공간적 집약성 중 적어도 하나를 기반으로 상기 집약성을 판단하여 상기 제2 데이터를 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  16. 제 11 항에 있어서,
    상기 메모리 장치에 저장된 데이터에 대한 읽기 동작시 상기 제1 데이터 및 제2 데이터 중 어느 하나에 페일 비트가 발생하면, 상기 예측 오류 패리티를 기반으로 상기 페일 비트가 발생한 데이터를 정정하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  17. 제 16 항에 있어서,
    상기 페일 비트가 발생한 데이터를 정정하는 단계는,
    상기 페일 비트가 발생한 데이터가 ECC 디코딩 과정에서 정정되지 않으면, 상기 예측 오류 패리티를 기반으로 상기 페일 비트가 발생한 데이터를 정정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  18. 제 11 항에 있어서,
    상기 제2 데이터를 결정하는 단계는,
    상기 제2 데이터 중 전부 또는 일부를 상기 메모리 장치에 저장된 데이터 중에서 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  19. 제 11 항에 있어서,
    상기 제2 데이터를 결정하는 단계는,
    데이터 그룹 - 데이터 그룹은 미리 설정된 기준에 따라 상기 메모리 장치에 저장된 데이터 전부 또는 일부를 포함함 - 의 패리티인 그룹 패리티가 존재하고, 상기 제1 데이터가 상기 데이터 그룹에 포함되면,
    상기 데이터 그룹을 구성하는 데이터의 크기 보다 작은 크기가 되도록, 상기 제2 데이터의 수를 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  20. 제 19 항에 있어서,
    상기 제2 데이터를 결정하는 단계는,
    상기 데이터 그룹에 포함된 데이터 중에서 상기 제2 데이터 전부 또는 일부를 결정하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  21. 메모리 장치에 저장된 데이터 중 리드 페일 가능성이 높은 데이터인 제1 데이터를 결정하는 제1 데이터 결정부;
    상기 제1 데이터에 대응하는 패리티인 예측 오류 패리티를 생성하는데 이용되는 데이터인 제2 데이터를 적어도 하나 결정하는 제2 데이터 결정부; 및
    상기 제1 데이터 및 제2 데이터를 기반으로 상기 예측 오류 패리티를 생성하는 예측 오류 패리티 생성부
    를 포함하는 예측 오류 정정 장치.
  22. 제 21 항에 있어서,
    상기 제1 데이터 결정부는,
    페일 비트 및 연판정 수행 여부 중 적어도 하나를 기반으로 상기 리드 페일 가능성을 판단하여 상기 제1 데이터를 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
  23. 제 21 항에 있어서,
    상기 제2 데이터 결정부는,
    데이터의 안정성 및 집약성 중 적어도 하나를 기반으로 상기 제2 데이터를 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
  24. 제 23 항에 있어서,
    상기 제2 데이터 결정부는,
    소거 횟수, 연판정 수행 여부 및 페일 비트 중 적어도 하나를 기반으로 상기 안정성을 판단하여 상기 제2 데이터를 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
  25. 제 23 항에 있어서,
    상기 제2 데이터 결정부는,
    시간적 집약성 및 상기 제1 데이터에 대한 공간적 집약성 중 적어도 하나를 기반으로 상기 집약성을 판단하여 상기 제2 데이터를 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
  26. 제 21 항에 있어서,
    상기 제1 데이터의 인덱스, 제2 데이터의 인덱스 및 예측 오류 패리티를 관리하는 예측 오류 패리티 관리부를 더 포함하는 예측 오류 정정 장치.
  27. 제 21 항에 있어서,
    읽기 동작시 상기 제1 데이터 및 제2 데이터 중 어느 하나에 페일 비트가 발생하면, 상기 예측 오류 패리티를 기반으로 상기 페일 비트가 발생한 데이터를 정정하는 예측 오류 정정부를 더 포함하는 예측 오류 정정 장치.
  28. 제 27 항에 있어서,
    상기 예측 오류 정정부는,
    상기 페일 비트가 발생한 데이터가 ECC 디코딩 과정에서 정정되지 않으면, 상기 예측 오류 패리티를 기반으로 상기 페일 비트가 발생한 데이터를 정정하는 것을 특징으로 하는 예측 오류 정정 장치.
  29. 제 21 항에 있어서,
    상기 제2 데이터 결정부는,
    상기 제2 데이터 중 전부 또는 일부를 상기 메모리 장치에 저장된 데이터 중에서 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
  30. 제 21 항에 있어서,
    상기 제2 데이터 결정부는,
    데이터 그룹 - 데이터 그룹은 미리 설정된 기준에 따라 상기 메모리 장치에 저장된 데이터 전부 또는 일부를 포함함 - 의 패리티인 그룹 패리티가 존재하고, 상기 제1 데이터가 상기 데이터 그룹에 포함되면,
    상기 데이터 그룹을 구성하는 데이터의 크기 보다 작은 크기가 되도록, 상기 제2 데이터의 수를 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
  31. 제 30 항에 있어서,
    상기 제2 데이터 결정부는,
    상기 데이터 그룹에 포함된 데이터 중에서 상기 제2 데이터 전부 또는 일부를 결정하는 것을 특징으로 하는 예측 오류 정정 장치.
KR1020180091148A 2018-08-06 2018-08-06 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 KR20200015999A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180091148A KR20200015999A (ko) 2018-08-06 2018-08-06 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템
US16/384,193 US11119853B2 (en) 2018-08-06 2019-04-15 Predicted error correction apparatus, operation method thereof and memory system using the same
CN201910506044.4A CN110806947B (zh) 2018-08-06 2019-06-12 预测错误校正装置、其操作方法和用该装置的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180091148A KR20200015999A (ko) 2018-08-06 2018-08-06 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20200015999A true KR20200015999A (ko) 2020-02-14

Family

ID=69228699

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180091148A KR20200015999A (ko) 2018-08-06 2018-08-06 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템

Country Status (3)

Country Link
US (1) US11119853B2 (ko)
KR (1) KR20200015999A (ko)
CN (1) CN110806947B (ko)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100763324B1 (ko) * 2003-05-30 2007-10-05 인터내셔널 비지네스 머신즈 코포레이션 데이터 저장 시스템
US7409594B2 (en) * 2004-07-06 2008-08-05 Intel Corporation System and method to detect errors and predict potential failures
US7496796B2 (en) * 2006-01-23 2009-02-24 International Business Machines Corporation Apparatus, system, and method for predicting storage device failure
KR101623119B1 (ko) 2010-02-01 2016-05-20 삼성전자주식회사 솔리드 스테이트 드라이브의 에러 제어 방법
US8499116B2 (en) * 2010-06-11 2013-07-30 Hewlett-Packard Development Company, L.P. Managing wear on independent storage devices
JP2012103826A (ja) * 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム
GB201114831D0 (en) * 2011-08-26 2011-10-12 Univ Oxford Brookes Circuit with error correction
US8694855B1 (en) * 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US9195536B2 (en) * 2013-07-05 2015-11-24 Kabushiki Kaisha Toshiba Error correction decoder and error correction decoding method
CN104575617B (zh) * 2015-01-06 2017-06-27 北京大学 赛道存储位置错误纠正码的编码方法和纠错方法
US10452302B2 (en) * 2015-04-09 2019-10-22 Hitachi, Ltd. Storage system and data control method
US9563505B2 (en) * 2015-05-26 2017-02-07 Winbond Electronics Corp. Methods and systems for nonvolatile memory data management
US20170171176A1 (en) * 2015-12-11 2017-06-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Maintenance credential permitting performance of just maintenance-related actions when computing device requires repair and/or maintenance
KR102572357B1 (ko) * 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20190038049A (ko) * 2017-09-29 2019-04-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
CN110806947B (zh) 2023-10-31
CN110806947A (zh) 2020-02-18
US20200042383A1 (en) 2020-02-06
US11119853B2 (en) 2021-09-14

Similar Documents

Publication Publication Date Title
KR102224564B1 (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20190123502A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102707003B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200084201A (ko) 컨트롤러 및 컨트롤러의 동작방법
KR102468751B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180131023A (ko) 반도체 메모리 시스템 및 그것의 동작 방법
KR102671727B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20180039785A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190118030A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102553170B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US11494307B2 (en) Host, storage device, and computing system having the same
KR20190115310A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20160124805A1 (en) Nonvolatile memory system and data recovery method thereof
KR20160075174A (ko) 메모리 시스템 및 그 동작방법
KR20190128392A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20220008058A (ko) 컨트롤러 및 컨트롤러의 동작방법
KR102340094B1 (ko) 메모리 시스템 및 그의 동작 방법
KR20190133483A (ko) 메모리 시스템, 컨트롤러 및 그 동작방법
KR20200001310A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102671760B1 (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20200008273A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20180111157A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20200012494A (ko) 컨트롤러 및 컨트롤러의 동작방법
KR20190128283A (ko) 컨트롤러, 메모리 시스템 및 그 동작방법
KR20180017608A (ko) 메모리 시스템 및 그의 동작 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal