KR20200091121A - 비휘발성 메모리 장치를 포함하는 메모리 시스템 - Google Patents

비휘발성 메모리 장치를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20200091121A
KR20200091121A KR1020190007946A KR20190007946A KR20200091121A KR 20200091121 A KR20200091121 A KR 20200091121A KR 1020190007946 A KR1020190007946 A KR 1020190007946A KR 20190007946 A KR20190007946 A KR 20190007946A KR 20200091121 A KR20200091121 A KR 20200091121A
Authority
KR
South Korea
Prior art keywords
group
page
memory
memory device
program
Prior art date
Application number
KR1020190007946A
Other languages
English (en)
Other versions
KR102610395B1 (ko
Inventor
오희태
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020190007946A priority Critical patent/KR102610395B1/ko
Priority to US16/558,866 priority patent/US11449382B2/en
Priority to CN202010064644.2A priority patent/CN111459401A/zh
Publication of KR20200091121A publication Critical patent/KR20200091121A/ko
Application granted granted Critical
Publication of KR102610395B1 publication Critical patent/KR102610395B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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/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/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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

비휘발성 메모리 장치를 포함하는 메모리 시스템이 제공된다. 본 발명의 실시 예에 따른 메모리 시스템은, 복수의 메모리 블록들 및 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되, 컨트롤러는, 비휘발성 메모리 장치의 프로그램 동작 중에 특정 이벤트가 발생한 경우, 비휘발성 메모리 장치에 대한 리커버리 동작을 수행하는 리커버리 모듈을 포함하고, 리커버리 모듈은, 적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 제1 그룹의 상태 정보에 기초하여 제2 그룹에 포함되는 페이지 수를 결정하고, 제2 그룹에 포함되는 페이지에 대하여 더미(dummy) 데이터를 프로그램할 수 있다.

Description

비휘발성 메모리 장치를 포함하는 메모리 시스템{MEMORY SYSTEM COMPRISING NON-VOLATILE MEMORY DEVICE}
본 발명은 메모리 시스템에 관한 것으로, 더욱 구체적으로 비휘발성 메모리 장치를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템은 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템은 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 메모리 시스템은 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
메모리 장치를 이용한 메모리 시스템은 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템은 USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, UFS(Universal Flash Storage) 장치, 솔리드 스테이트 드라이브(Solid State Drive, 이하, SSD라 칭함)를 포함한다.
본 발명이 해결하고자 하는 기술적 과제는 데이터 신뢰성 향상시키고 수명을 연장시키는 메모리 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시 예에 따른 메모리 시스템은, 복수의 메모리 블록들 및 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되, 컨트롤러는, 비휘발성 메모리 장치의 프로그램 동작 중에 특정 이벤트가 발생한 경우, 비휘발성 메모리 장치에 대한 리커버리 동작을 수행하는 리커버리 모듈을 포함하고, 리커버리 모듈은, 적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 제1 그룹의 상태 정보에 기초하여 제2 그룹에 포함되는 페이지 수를 결정하고, 제2 그룹에 포함되는 페이지에 대하여 더미(dummy) 데이터를 프로그램할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시 예에 따른 메모리 시스템은, 복수의 메모리 블록들 및 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되, 컨트롤러는, 비휘발성 메모리 장치의 프로그램 동작 중에 서든 파워 오프가 발생한 경우, 비휘발성 메모리 장치에 대한 리커버리 동작을 수행하는 리커버리 모듈을 포함하고, 리커버리 모듈은, 적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 제1 그룹의 상태 정보에 기초하여 제2 그룹에 프로그램될 더미 데이터의 프로그램 조건을 결정하고, 프로그램 조건에 기초하여 제2 그룹에 포함되는 각각의 페이지에 더미 데이터를 프로그램할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 실시 예에 따른 메모리 시스템은, 복수의 메모리 블록들 및 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되, 컨트롤러는, 비휘발성 메모리 장치의 프로그램 동작 중에 서든 파워 오프가 발생한 경우, 타겟 그룹의 상태 정보에 기초하여 상기 복수의 페이지들 중 적어도 하나의 페이지를 포함하는 제3 그룹에 더미 데이터를 프로그램하여 리커버리 동작을 수행하는 리커버리 모듈을 포함하고, 리커버리 모듈은, 복수의 페이지들 각각이 반도체 칩 상에 배치되는 배치 정보에 기초하여 타겟 그룹 또는 제3 그룹을 결정할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템의 구성을 간략히 도시한 블록도이다.
도 2는 비휘발성 메모리 장치에 서든 파워 오프(Sudden Power Off, SPO)가 발생한 케이스를 설명하기 위한 도면이다.
도 3은 상태 정보에 기초하여 더미 데이터가 프로그램될 페이지 수를 결정하는 실시 예를 설명하기 위한 도면이다.
도 4a 및 도 4b는 복수의 리드 전압에 따라 획득되는 메모리 셀의 수에 기초하여 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이다.
도 5a는 이레이즈 카운트에 따라 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이고, 도 5b는 리드 카운트에 따라 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이다.
도 6a는 비휘발성 메모리 장치의 메모리 블록에 SPO가 발생한 케이스를 설명하기 위한 도면이다.
도 6b는 도 6a의 케이스에서 유효 데이터를 포함하는 페이지 수에 따라 상태 정보를 판단하는 실시 예를 설명하기 위한 예시적인 맵핑 테이블(mapping table)을 도시한다.
도 7a는 ECC 엔진을 포함하는 메모리 시스템의 개략적인 블록도이고, 도 7b는 ECC에 기초하여 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이다.
도 8은 상태 정보에 기초하여 더미 데이터가 프로그램될 페이지 수를 결정하는 실시 예를 설명하기 위한 순서도이다.
도 9는 상태 정보에 기초하여 더미 데이터 프로그램의 검증 전압 레벨을 결정하는 실시 예를 설명하기 위한 도면이다.
도 10a 및 도 10b는 상태 정보에 기초하여 검증 전압이의 레벨이 가변적으로 적용되는 실시 예를 설명하기 위한 메모리 셀의 예시적인 문턱 전압 분포를 도시한다.
도 11은 상태 정보에 기초하여 더미 데이터 프로그램의 검증 전압 레벨을 결정하는 실시 예를 설명하기 위한 순서도이다.
도 12는 상태 정보에 기초하여, 더미 데이터가 프로그램될 페이지 수 및 더미 데이터 프로그램의 검증 전압 레벨을 결정하는 실시 예를 설명하기 위한 순서도이다.
도 13은 워드라인의 배치 정보에 기초하여 타겟 그룹을 결정하는 실시 예를 설명하기 위한 도면이다.
도 14는 기준 워드라인의 배치 정보에 기초하여, 상태 정보가 판단될 제1 그룹을 선택하는 실시 예를 설명하기 위한 순서도이다.
도 15는 비휘발성 메모리 장치에 포함되는 페이지들의 배치 정보에 기초하여 타겟 그룹을 선택하는 실시 예를 설명하기 위한 순서도이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템의 구성을 간략히 도시한 블록도이다.
메모리 시스템(10)은 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 디바이스(도 7b의300)에 의해서 액세스되는 데이터를 저장할 수 있다.
메모리 시스템(10)은 호스트 디바이스(300)와의 전송 프로토콜을 의미하는 호스트 인터페이스에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 메모리 시스템(10)은 SSD, MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
메모리 시스템(10)은 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 메모리 시스템(10)은 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
도 1을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(10)은 컨트롤러(100) 및 비휘발성 메모리 장치(200)를 포함할 수 있다. 컨트롤러(100)는 호스트 디바이스(300)의 리퀘스트에 근거하여 동작을 수행할 수 있다. 예를 들어, 호스트 디바이스(300)로부터 라이트 리퀘스트를 수신하고, 요청된 데이터를 비휘발성 메모리 장치(200)에 저장할 수 있다. 다른 예로, 호스트 디바이스(300)로부터 리드 리퀘스트를 수신하고, 요청된 데이터를 비휘발성 메모리 장치(200)로부터 독출하여 호스트 디바이스(300)로 전송할 수 있다. 이때, 컨트롤러(100)는 호스트 디바이스(300)의 논리 어드레스와 비휘발성 메모리 장치(200)의 물리 어드레스간의 맵핑을 수행하고, 맵핑 정보가 저장된 어드레스 맵핑 테이블을 관리한다.
몇몇 실시 예에 따라, 컨트롤러(100)는 프로세서(110), 캐시 메모리(130) 및 메모리 인터페이스 유닛(150)을 포함할 수 있다.
프로세서(110)는 마이크로 컨트롤 유닛(micro control unit)(MCU), 중앙 처리 장치(central processing unit)(CPU)로 구성될 수 있다. 프로세서(110)는 호스트 디바이스(300)로부터 전송된 리퀘스트를 처리할 수 있다. 프로세서(110)는, 리퀘스트를 처리하기 위해서, 캐시 메모리(130)에 로딩된 코드 형태의 명령(instruction) 또는 알고리즘, 즉, 펌웨어(FW)를 구동하고, 내부의 기능 블록들 및 비휘발성 메모리 장치(200)를 제어할 수 있다.
몇몇 실시 예에 따라, 프로세서(110)는 리커버리 모듈(111)을 포함할 수 있다. 리커버리 모듈(111)은, 특정 이벤트(예를 들어, SPO) 발생 시에 비휘발성 메모리 장치(200)에서 데이터의 프로그램 동작이 수행 중이었던 경우, 프로그램 동작이 수행되던 기준 페이지를 기준으로 소정의 조건에 따라 제1 그룹을 선택하고, 제1 그룹의 상태 정보를 판단하고, 판단된 제1 그룹의 상태 정보에 기초하여 제2 그룹을 선택하고, 선택된 제2 그룹에 포함되는 페이지들에 대하여 더미 데이터(dummy data)의 프로그램 동작을 수행할 수 있다. 본 명세서에서, "더미 데이터 프로그램"은 페이지에 더미 데이터를 프로그램하는 동작을 의미하고, "노멀 데이터 프로그램"은 페이지에 유저 데이터, 즉 호스트 디바이스(300)로부터 프로그램 요청된 데이터를 비휘발성 메모리 장치(200)의 페이지에 프로그램하는 동작을 의미한다. 이 때, 더미 데이터는 무의미한 데이터(meaningless data)를 의미할 수 있다.
캐시 메모리(130)는 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리로 구성될 수 있다. 캐시 메모리(130)는 프로세서(110)에 의해서 구동되는 펌웨어를 저장할 수 있다. 또한, 캐시 메모리(130)는 펌웨어의 구동에 필요한 데이터, 예를 들면, 메타 데이터를 저장할 수 있다. 즉, 캐시 메모리(130)는 프로세서(110)의 동작 메모리(working memory)로서 동작할 수 있다.
메모리 인터페이스 유닛(150)은 프로세서(110)의 제어에 따라서 비휘발성 메모리 장치(200)를 제어할 수 있다. 메모리 인터페이스 유닛(150)은 제어 신호들을 비휘발성 메모리 장치(200)로 제공할 수 있다. 제어 신호들은 비휘발성 메모리 장치(200)들을 제어하기 위한 커맨드, 어드레스, 제어 신호 등을 포함할 수 있다. 메모리 인터페이스 유닛(150)은 데이터를 비휘발성 메모리 장치(200)로 제공하거나, 비휘발성 메모리 장치(200)로부터 데이터를 제공 받을 수 있다.
실시 예에 따라, 컨트롤러(100)는 호스트 인터페이스 유닛을 더 포함할 수 있다. 호스트 인터페이스 유닛은 호스트 디바이스(300)와 메모리 시스템(10)을 인터페이싱할 수 있다. 예시적으로, 호스트 인터페이스 유닛은 시큐어 디지털(secure digital), USB(universal serial bus), MMC(multi-media card), eMMC(embedded MMC), PCMCIA(personal computer memory card international association), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Express), UFS(universal flash storage)와 같은 표준 전송 프로토콜들 중 어느 하나, 즉, 호스트 인터페이스를 이용해서 호스트 디바이스(300)와 통신할 수 있다.
비휘발성 메모리 장치(200)는 복수의 메모리 블록들(BLK0 내지 Blk(n-1))을 포함할 수 있고, 메모리 블록들(BLK0 내지 Blk(n-1)) 각각은 복수의 페이지들(PG0 내지 PG(k-1))을 포함할 수 있다. 메모리 셀 영역에 포함된 메모리 셀들은 동작의 관점에서 또는 물리적(또는 구조적) 관점에서 계층적인 메모리 셀 집합 또는 메모리 셀 단위로 구성될 수 있다. 예를 들면, 동일한 워드 라인에 연결되며, 동시에 리드(read)되고, 프로그램(program)되는 메모리 셀들은 페이지로 구성될 수 있다. 이하에서, 설명의 편의를 위해서, 페이지로 구성되는 메모리 셀들을 "페이지"라고 칭할 것이다. 또한, 동시에 소거(erase)되는 메모리 셀들은 메모리 블록으로 구성될 수 있다.
도 2는 비휘발성 메모리 장치에 서든 파워 오프(Sudden Power Off, SPO)가 발생한 케이스를 설명하기 위한 도면이다. 설명의 편의를 위하여, 비휘발성 메모리 장치(200)의 메모리 블록들 각각은 8개의 페이지들(PG0 내지 PG7)로 구성되고, 제1 페이지(PG0)에서 제8 페이지(PG7)의 순서로 프로그램 동작의 순서가 설정되어 있다고 가정한다.
메모리 시스템(10)의 동작 중, 예상치 못한 전원 오류로 인해 갑작스런 전력 손실인 SPO가 발생할 수 있다. SPO가 발생하면, 외부 전력의 공급은 중단(external power off) 되지만, 메모리 시스템(10)은 예컨대, 슈퍼 커패시터(super capacitor)와 같은 보조 전력 장치에 저장된 보조 전력에 의해 구동될 수 있다. 보조 전력에 의해 구동되는 기간에, 메모리 시스템(10)은, 비휘발성 메모리 장치(200)에서 수행 중인 오퍼레이션(operation)을 수행 완료하고, 필요한 데이터를 플래시 메모리 장치에 덤프(dump) 시킬 수 있다. 덤프 오퍼레이션이 완료되면, 메모리 시스템(10)은 내부 전력의 공급도 중단(internal power off)시키고, 모든 동작을 종료할 수 있다.
도 1 및 도 2를 참조하면, 제1 메모리 블록의 제4 페이지(PG3)에서 데이터(DT_3)에 대한 프로그램 동작이 수행되는 도중에 SPO가 발생되었다고 가정한다. 일반적인 저장 장치(예를 들어, 비휘발성 메모리 장치(200))는 프로그램 동작 중에 특정 이벤트 발생시 해당 메모리 블록을 더 이상 사용하지 않고 새로운 메모리 블록을 할당하고, 새롭게 할당된 메모리 블록에 사용자 데이터를 저장시키고, 이전 메모리 블록에 소거 동작을 수행한다. 이로 인하여 특정 이벤트 발생에 따른 불필요한 소거 횟수가 증가되고 있다. 또한, SPO에 의해 프로그램 동작이 중단된 메모리 블록에 포함되는 복수의 페이지들 중 데이터가 저장되지 않은 페이지에 더미 데이터를 저장하거나, SPO가 발생한 메모리 블록을 차단 블록(closed block)으로 설정하여 나머지 페이지들로의 프로그램 동작을 차단한다. 이에 따라, 빈(empty) 페이지가 존재함에도 불구하고 SPO가 발생하였다는 이유로 빈 페이지의 상태 판단 없이 프로그램 동작을 차단함으로써, 유저 데이터가 저장되는 메모리 공간의 효율성이 저하된다.
반면에, 본 발명의 실시 예에 따른 메모리 시스템(10)은 프로그램 동작 중에 특정 이벤트(예를 들어, SPO)가 발생하더라도 특정 이벤트가 발생한 메모리 블록을 차단 블록으로 설정하거나, 모든 빈 페이지에 더미 데이터를 프로그램한 후 새로운 메모리 블록을 할당하지 않고, 더미 데이터 프로그램 동작을 수행한 뒤 현재의 메모리 블록(예를 들어, SPO 발생 시에 프로그램 중이던 메모리 블록)을 계속해서 사용할 수 있다. 즉, 이벤트 발생 이후 선택되는 그룹의 상태 정보에 기초하여 더미 데이터가 프로그램될 페이지를 동적으로 결정함으로써, 이벤트 발생 이전에서 수행되던 프로그램 동작이 이벤트 발생 이후에도 해당 메모리 블록에 이어 쓰기가 진행될 수 있고, 메모리 셀의 손상 정도에 따라 더미 데이터의 프로그램 조건을 달리 적용함으로써 더욱 효율적인 저장 공간의 활용이 가능하다. 본 발명은 이러한 이어 쓰기를 통하여 불필요한 소거 횟수를 줄이고, 낭비되는 페이지를 최소화함으로써, 비휘발성 메모리 장치(200)의 수명(life time)을 연장시킬 수 있다.
도 3은 상태 정보에 기초하여 더미 데이터가 프로그램될 페이지 수를 결정하는 실시 예를 설명하기 위한 도면이다.
도 1 내지 도 3을 참조하면, 본 발명의 실시 예에 따른 리커버리 모듈(111)은, 적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 제1 그룹의 상태 정보에 기초하여 제2 그룹에 포함되는 페이지 수를 결정하고, 제2 그룹에 포함되는 페이지에 대한 더미 데이터 프로그램 동작을 수행할 수 있다. 제1 그룹에 포함되는 페이지는 상태 정보의 판단 대상이 되는 페이지이고, 제2 그룹에 포함되는 페이지는 더미 프로그램 동작이 수행되는 페이지일 수 있다.
몇몇 실시 예에 따라, 제1 그룹은 SPO가 발생한 때 프로그램 동작이 수행되던 기준 페이지 이후에 프로그램 동작이 수행될 페이지일 수 있다. 즉, 제4 페이지(PG3)에서 데이터(DT_3)에 대한 프로그램 동작 중에 SPO가 발생한 경우, 제4 페이지(PG3)가 기준 페이지가 되고, 제5 내지 제8 페이지(PG4 내지 PG7) 중에서 적어도 하나의 페이지가 제1 그룹으로 선택될 수 있다. 다른 실시 예에 따라, 기준 페이지보다 프로그램 순서가 빠른 페이지를 포함하여 제1 그룹이 선택될 수 있다. 즉, 제1 내지 제3 페이지(PG0 내지 PG2) 중 적어도 하나의 페이지가 제1 그룹으로 선택될 수 있다. 또한, 기준 페이지 이후의 페이지 및 기준 페이지 이전의 페이지가 모두 제1 그룹으로 선택될 수 있음은 물론이다.
몇몇 실시 예에 따라, 기준 페이지의 논리 어드레스를 기준으로 기정의된 범위 내의 논리 어드레스에 대응하는 페이지를 제1 그룹으로 선택할 수 있다. 통상적으로 연속적인 논리 어드레스를 갖는 페이지들은 서로 인접하여 배치되는 경우가 많고, 이에 따라 각각의 페이지에서 발생하는 특정 이벤트(예를 들어, SPO)의 영향을 서로 받을 가능성이 높다. 따라서, 상태 정보 판단의 대상이 되는 제1 그룹을 기준 페이지를 기준으로 소정의 어드레스 범위로 설정할 수 있다.
도시된 바와 같이, 복수의 상태 정보들 각각에 대응하는 페이지 수가 설정되고, 이에 따라 제2 그룹의 페이지 수가 결정될 수 있다. 이 때, 상태 정보는 제1 그룹의 상태 정보를 의미하고, 페이지 수는 제2 그룹에 포함되는 페이지의 수를 의미한다. 또한, 결정된 수의 페이지가 선택되는 순서는 미리 설정되어 있을 수 있다. 실시 예에 따라, 제1 그룹에 포함되는 페이지와 제2 그룹에 포함되는 페이지가 중복될 수 있음은 물론이다.
제1 그룹이 제1 상태 정보(INF_Status(1))를 가진다고 판단되는 경우, 더미 프로그램 동작이 수행될 제2 그룹에 포함되는 페이지를 하나의 페이지로 선택할 수 있다. 또한, 제1 그룹이 제2 내지 제4 상태 정보(INF_Status(1), INF_Status(3), INF_Status(4))를 가진다고 판단되는 경우, 각각 3개, 5개 및 7개의 페이지가 제2 그룹으로 선택될 수 있다. 제1 상태 정보(INF_Status(1))에서 제4 상태 정보(INF_Status(4))로 갈수록 제1 그룹의 손상 정도가 악화됨을 의미할 수 있다. 따라서, 손상 정도가 심하지 않은 경우(예를 들어, 제1 그룹의 상태 정보가 제1 상태 정보(INF_Status(1))로 판단되는 경우) 더미 데이터가 프로그램될 제2 그룹의 페이지 수를 상대적으로 작은 값으로 결정하고, 손상 정도가 심하다고 판단되는 경우(예를 들어, 제1 그룹의 상태 정보가 제4 상태 정보(INF_Status(4))로 판단되는 경우) 더미 데이터가 프로그램될 제2 그룹의 페이지 수를 상대적으로 많은 값으로 결정함으로써, 메모리의 셀의 상태에 따라 이어쓰기가 적용되는 페이지를 유연하게 적용할 수 있고, 메모리 사용의 효율성이 증대될 수 있다.
실시 예에 따라, 제1 그룹의 손상 정도가 소정의 범위를 넘는 경우, 제2 그룹에 대한 더미 데이터 프로그램 동작을 수행하지 않고, 기준 페이지가 포함되는 기준 메모리 블록을 배드 블록으로 설정하고, 기준 메모리 블록의 나머지 페이지들에 대한 데이터의 프로그램 동작을 차단할 수 있다. 예를 들어, 제1 그룹의 상태 정보가 제5 상태 정보(INF_Status(5))로 판단되는 경우, 리커버리 모듈(111)은 제2 그룹을 선택하지 않고, SPO가 발생한 기준 페이지가 포함되는 기준 메모리 블록을 배드 블록(또는, 차단 블록)으로 설정할 수 있다.
다른 실시 예에 따라, 제1 그룹의 손상 정도가 소정의 범위를 넘는 경우, 기준 페이지가 포함되는 기준 메모리 블록의 모든 빈 페이지에 대하여 더미 데이터 프로그램 동작을 수행할 수 있다. 예를 들어, 도 2의 제4 페이지(PG3)에 대한 프로그램 동작 중 SPO가 발생하고, 선택된 제1 그룹의 상태 정보가 제5 상태 정보(INF_Status(5))인 경우, 리커버리 모듈(111)은 제5 내지 제8 페이지(PG4 내지 PG7)에 대하여 더미 데이터 프로그램 동작을 수행하고, 메모리 블록(Blk0)을 배드 블록으로 설정할 수 있다.
도 4a 내지 도 8을 참조하여 설명되는 실시 예는 상술한 도 1 내지 도 3를 참조하여 설명된 구성 및 동작이 동일하게 적용될 수 있다.
도 4a 및 도 4b는 적어도 하나의 리드 전압(read voltage)를 인가하여 획득하는 정보에 기초하여 제1 그룹의 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이다.
도 4a를 참조하면, 본 발명의 실시 예에 따른 비휘발성 메모리 장치(200)는 메모리 셀 당 1비트를 저장하는 SLC(Single Level Cell)로 구현될 수 있다. 따라서, 도시된 바와 같은 메모리 셀의 문턱 전압 분포가 나타날 수 있다. 즉, 메모리 셀에 "1"의 비트가 저장되는 이레이즈 상태(E0) 및 메모리 셀에 "0"의 비트가 저장되는 프로그램 상태(P0)로 구분된다. 데이터의 리드 동작은 리드 전압을 인가하여 획득한 비트를 판단하여 수행될 수 있다. 예를 들어, 기정의된 리드 전압이 리드 전압(Vrd_03)인 경우, 대상 페이지의 메모리 셀들에 리드 전압(Vrd_03)을 인가하고, 리드 전압(Vrd_03)이 인가되면 이레이즈 상태(E0)을 갖는 메모리 셀들은 턴-온(turn-on)되고, 프로그램 상태(P0)을 갖는 메모리 셀들은 턴-오프(turn-off)된다. 이를 감지함으로써, 대상 페이지의 메모리 셀들에 저장된 비트 값이 0인지 또는 1인지를 판단할 수 있다. 즉, 리드 전압(Vrd_03)을 인가할 때, 메모리 셀이 턴-온된다면 상기 메모리 셀에 저장된 비트는 1이고, 메모리 셀이 턴-오프된다면 상기 메모리 셀에 저장된 비트는 0이 된다.
본 발명의 실시 예에 따른 리커버리 모듈(111)은, 각각이 상이한 전압 레벨을 갖는 복수의 리드 전압을 이용하여 제1 그룹의 상태 정보를 판단할 수 있다. 실시 예에 따라, 리드 전압(Vrd_01)을 인가하여 제1 셀 정보를 획득하고, 리드 전압(Vrd_02)을 인가하여 제2 셀 정보를 획득하고, 마찬가지로 리드 전압(Vrd_03), 리드 전압(Vrd_04) 및 리드 전압(Vrd_05)를 인가하여 각각 제3 셀 정보, 제4 셀 정보 및 제5 셀 정보를 획득할 수 있다. 리커버리 모듈(111)은, 제1 내지 제5 셀 정보에 기초하여, 제1 그룹의 페이지들에 포함되는 메모리 셀들의 문턱 전압 분포를 판단하고, 이에 기초하여 제1 그룹의 상태 정보를 결정할 수 있다.
도 4b를 참조하면, 본 발명의 실시 예에 따른 비휘발성 메모리 장치(200)는 메모리 셀 당 2비트 이상을 저장하는 MLC(Multi Level Cell)로 구현될 수 있다. 설명의 편의를 위하여 메모리 셀 당 2비트가 저장되는 경우를 도시하였으나, 이에 한정되지는 않고 메모리 셀 당 3비트 이상이 저장되는 비휘발성 메모리 장치(200)에도 적용될 수 있음은 물론이다. 메모리
셀 당 2비트가 저장되는 경우, 각각의 메모리 셀 당 하위 비트 및 상위 비트를 저장할 수 있고, 메모리 셀에 하위 비트 및 상위 비트의 순서로 "1, 1"의 비트가 저장되는 이레이즈 상태(E1), 메모리 셀에 "1, 0"이 저장되는 제1 프로그램 상태(P1), 메모리 셀에 "0, 0"이 저장되는 제2 프로그램 상태(P2) 및 메모리 셀에 "0, 1"의 비트가 저장되는 프로그램 상태(P3)로 구분된다. 메모리 셀 당 2비트를 저장하는 경우, 하위 비트의 값을 알기 위해 리드 전압(Vrd_2)가 이용되고, 상위 비트의 값을 알기 위해 리드 전압(Vrd_1) 및 리드 전압(Vrd_3)이 이용될 수 있다.
리드 전압(Vrd_2)을 인가하면, 이레이즈 상태(E1)와 프로그램 상태(P1)를 갖는 메모리 셀들을 턴-온되고, 프로그램 상태(P2) 및 프로그램 상태(P3)를 갖는 메모리 셀들을 턴-오프된다. 이를 감지함으로써, 해당 메모리 셀의 하위 비트 값이 0인지 또는 1인지 여부를 판단할 수 있다. 즉, 리드 전압(Vrd_2)을 인가할 때, 메모리 셀이 턴-온된다면 상기 메모리 셀의 하위 비트 값은 1이고, 메모리 셀이 턴-오프 된다면 상기 메모리 셀의 하위 비트 값은 0이 된다. 상위 비트의 값을 알기 위해 리드 전압(Vrd_1) 및 리드 전압(Vrd_3)이 이용될 수 있다. 리드 전압(Vrd_1)을 인가할 때의 메모리 셀의 턴-온/턴-오프 상태와 리드 전압(Vrd_3)을 인가할 때의 메모리 셀의 턴-온/턴-오프 상태가 동일하면, 상기 메모리 셀에 저장된 데이터의 상위 비트는 1이고, 턴-온/턴-오프 상태가 서로 다르면 상기 메모리 셀에 저장된 상위 비트는 0이 된다.
도 4a를 참조하여 상술한, 각각이 상이한 전압 레벨을 갖는 복수의 리드 전압을 이용하여 제1 그룹의 상태 정보를 판단하는 동작은 메모리 셀 당 2비트 이상이 저장되는 경우에도 적용될 수 있다. 즉, 도 4b에 도시된 리드 전압(Vrd_1), 리드 전압(Vrd_2) 및 리드 전압(Vrd_3) 각각을 복수의 서로 다른 레벨을 갖는 전압들로 분할하고, 각각의 분할된 리드 전압들을 적용하여 제1 그룹의 상태 정보를 결정할 수 있다.
정리하면, 본 발명의 실시 예에 따른 리커버리 모듈(111)은, 제1 그룹에 포함되는 각각의 워드라인에 복수의 리드 전압을 인가하고, 각각의 리드 전압에 따라 획득되는 정보에 기초하여 제1 그룹에 대한 문턱 전압 분포를 결정하고, 결정된 문턱 전압 분포에 기초하여 제1 그룹의 상태 정보를 결정할 수 있다.
도 5a는 이레이즈 카운트에 따라 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이고, 도 5b는 리드 카운트에 따라 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이다.
본 발명의 실시 예에 따른 리커버리 모듈(111)은, 제1 그룹의 이레이즈 카운트 및 리드 카운트 중 적어도 하나에 기초하여 제1 그룹의 상태 정보를 결정할 수 있다. 비휘발성 메모리 장치(200)는 유한한 수명을 가지고, 사용 빈도 및 사용 횟수에 따라 메모리 셀의 저장 성능이 감소할 수 있다. 메모리 셀의 저장 성능이 감소됨에 따라 메모리 셀의 문턱 전압 분포가 변형될 수 있고, 이러한 경우 SPO 등의 이벤트의 영향을 많이 받을 수 있다.
도 5a를 참조하면, 제1 그룹의 상태 정보는 제1 그룹을 포함하는 메모리 블록의 이레이즈 카운트에 기초하여 결정될 수 있다. 도시된 바와 같이, 제1 그룹을 포함하는 메모리 블록의 이레이즈 카운트가 1000 이하인 경우 제1 상태 정보(INF_Status(1))로 결정되고, 이레이즈 카운트가 1000에서 2000 사이인 경우 제2 상태 정보(INF_Status(2))로 결정되고, 이레이즈 카운트가 2000에서 3000 사이인 경우 제3 상태 정보(INF_Status(3))로 결정되고, 이레이즈 카운트가 3000에서 4000 사이인 경우 제4 상태 정보(INF_Status(4))로 결정되고, 이레이즈 카운트가 4000 이상인 경우 제5 상태 정보(INF_Status(5))로 결정될 수 있다. 결정된 상태 정보에 따라, 도 3을 참조하여 설명한 바와 같이 제2 그룹의 페이지 수가 결정될 수 있다.
도 5b를 참조하면, 제1 그룹의 상태 정보는 제1 그룹을 포함하는 메모리 블록의 리드 카운트에 기초하여 결정될 수 있다. 다른 예로서, 제1 그룹의 상태 정보는 제1 그룹에 포함되는 페이지들의 리드 카운트에 기초하여 결정될 수 있다. 이하에서는 제1 그룹을 포함하는 메모리 블록의 리드 카운트에 기초하여 제1 그룹의 상태 정보가 결정되는 실시 예를 설명한다. 도시된 바와 같이, 제1 그룹을 포함하는 메모리 블록의 리드 카운트가 5000 이하인 경우 제1 상태 정보(INF_Status(1))로 결정되고, 리드 카운트가 5000에서 8000 사이인 경우 제2 상태 정보(INF_Status(2))로 결정되고, 리드 카운트가 8000에 11000 사이인 경우 제3 상태 정보(INF_Status(3))로 결정되고, 리드 카운트가 11000에서 14000인 경우 제4 상태 정보(INF_Status(4))로 결정되고, 리드 카운트가 14000 이상인 경우 제5 상태 정보(INF_Status(5))로 결정될 수 있다. 또한, 결정된 제1 그룹의 상태 정보에 따라 제2 그룹의 페이지 수가 결정될 수 있다.
몇몇 실시 예에 따라, 제1 그룹의 이레이즈 카운트 또는 리드 카운트에 대한 정보는 비휘발성 메모리에 저장될 수 있다. 비휘발성 메모리 장치(200)는 메인 영역 및 메타 영역을 포함할 수 있고, 이레이즈 카운트 또는 리드 카운트에 대한 정보를 메타 영역에 저장될 수 있다. 컨트롤러(100)는 메모리 인터페이스 유닛(150)을 통해, 비휘발성 메모리 장치(200)의 메타 영역에 저장된 이레이즈 카운트 또는 리드 카운트에 대한 정보를 리드하고, 리커버리 모듈(111)은 이에 기초하여 제1 그룹에 대한 상태 정보를 결정할 수 있다.
다른 실시 예에 따라, 제1 그룹의 이레이즈 카운트 또는 리드 카운트에 대한 정보는 컨트롤러(100) 내의 캐시 메모리(130)에 저장될 수 있다. 이 때, 캐시 메모리(130)에 저장된 정보는 비휘발성 메모리로부터 리드한 데이터일 수 있다. 리커버리 모듈(111)은 캐시 메모리(130)에 저장된 이레이즈 카운트 또는 리드 카운트에 기초하여 제1 그룹에 대한 상태 정보를 결정할 수 있다.
도 6a는 비휘발성 메모리 장치의 메모리 블록에 SPO가 발생한 케이스를 설명하기 위한 도면이고, 도 6b는 도 6a의 케이스에서 유효 데이터를 포함하는 페이지 수에 따라 상태 정보를 판단하는 실시 예를 설명하기 위한 예시적인 맵핑 테이블(mapping table)을 도시한다. 메모리 블록(Blk0)은 8개의 페이지들(PG0 내지 PG7)을 포함하고, 제1 페이지(PG0)에서 제8 페이지(PG7)의 순서로 데이터의 프로그램 동작이 수행되고, 제6 페이지(PG5)에 대한 프로그램 동작이 수행되는 과정에서 SPO가 발생하였다고 가정한다.
도 6a 및 도 6b를 참조하면, 본 발명의 실시 예에 따른 리커버리 모듈(111)은, SPO로 인해 프로그램 동작이 중단된 기준 페이지와 동일한 메모리 블록에 포함되는 페이지들 중 유효 데이터를 포함하는 페이지의 수에 기초하여 제1 그룹의 상태 정보를 결정할 수 있다. 예를 들어, 기준 페이지는 제6 페이지(PG5)이고, 제6 페이지(PG5)와 동일한 메모리 블록인 메모리 블록(Blk0)에 포함되는 페이지들(PG0 내지 PG7) 중 유효 데이터를 포함하는 페이지의 수에 기초하여 상태 정보를 결정할 수 있고, 유효 데이터를 포함하는지 여부를 맵핑 테이블을 참조하여 판단할 수 있다. 이 때, 비휘발성 메모리 장치(200)의 각각의 페이지에 대응하는 물리 어드레스(Physical Address)와 논리 어드레스(Logical Address)의 맵핑 관계에 대한 맵핑 테이블은 컨트롤러(100)의 캐시 메모리(130)에 저장되어 있을 수 있고, 리커버리 모듈(111)은 캐시 메모리(130)에 저장된 맵핑 테이블을 참조하여 유효 데이터를 포함하는 페이지의 수를 판단할 수 있다. 실시 예에 따라, 컨트롤러(100)는 비휘발성 메모리 장치(200)의 메타 영역에 저장된 맵핑 테이블을 리드하여 캐시 메모리(130)에 저장할 수 있고, 리커버리 모듈(111)은 캐시 메모리(130)에 저장된 맵핑 테이블을 참조하여 제1 그룹의 상태 정보를 판단할 수 있다.
몇몇 실시 예에 따라, 맵핑 테이블은 메모리의 특정 어드레스에 저장된 데이터가 유효 데이터(valid data, VD)인지 또는 무효(invalid data, IVD)인지 여부에 대한 정보를 포함할 수 있다. 메모리 블록(Blk0)의 제1 내지 제8 페이지(PG0 내지 PG7)는 각각 논리 페이지 어드레스(LPA_100) 내지 논리 페이지 어드레스(LPA_107)에 대응한다고 가정한다. 또한, 논리 페이지 어드레스(LPA_100) 내지 논리 페이지 어드레스(LPA_107)은 각각 물리 페이지 어드레스(PPA_200) 내지 물리 페이지 어드레스(PPA_207)에 대응한다고 가정한다. 또한, 제1 페이지(PG0), 제2 페이지(PG1) 및 제3 페이지(PG2)에는 각각 데이터(DT_100), 데이터(DT_101) 및 데이터(DT_102)가 저장되어 있고, 제4 페이지(PG3) 및 제5 페이지(PG4)에는 각각 데이터(DT_44) 및 데이터(DT_45)가 저장되어 있다.
도 6b에 도시된 바와 같이, 맵핑 테이블에는 제1 페이지(PG0), 제2 페이지(PG1) 및 제3 페이지(PG2)에 각각 저장된 데이터(DT_100), 데이터(DT_101) 및 데이터(DT_102)는 유효 데이터(VD)이고, 제4 페이지(PG3) 및 제5 페이지(PG4)에 각각 저장된 데이터(DT_44) 및 데이터(DT_45)는 무효 데이터(IVD)라는 정보가 포함될 수 있다. 즉, 데이터(DT_44) 및 데이터(DT_45)는 새로운 위치에 업데이트되었음을 의미할 수 있다. 동일한 페이지에 대한 덮어쓰기(overwrite)가 불가능한 비휘발성 메모리 장치(200)의 특성 상, 업데이트된 데이터는 기존 데이터가 저장된 위치가 아닌 다른 위치에 저장되고, 대신에 기존 데이터는 무효 데이터(IVD)로 표현될 수 있다.
본 발명의 실시 예에 따른 리커버리 모듈(111)은, 유효 데이터(VD)를 포함하는 페이지의 수에 기초하여 상태 정보를 판단함으로써, 메모리 블록을 더욱 효율적으로 사용할 수 있다. 예를 들어, 무효 데이터(IVD)가 저장된 페이지의 수가 소정의 기준보다 많은 경우, 가비지 컬렉션(garbage collection) 동작이 수행될 가능성이 높으므로, 새로운 데이터가 저장되지 않도록 더미 프로그램이 수행될 페이지 수를 높은 값으로 설정할 수 있다.
도 6b에서는 논리 어드레스들이 인덱스로 설정되고, 논리 어드레스들에 맵핑된 물리 어드레스들이 엔트리로 설정되는 L2P 맵핑 테이블을 도시하였으나, 본 발명의 실시 예는 이에 한정되지 않고 물리 어드레스들이 인덱스로 설정되고, 물리 어드레스들에 맵핑된 논리 어드레스들이 엔트리로 설정되는 P2L 맵핑 테이블이 적용될 수 있음은 물론이다.
도 7a는 ECC 엔진을 포함하는 메모리 시스템의 개략적인 블록도이고, 도 7b는 ECC에 기초하여 상태 정보를 판단하는 실시 예를 설명하기 위한 도면이다.
도 7a를 참조하면, 본 발명의 실시 예에 따른 컨트롤러(100)는 ECC(Error Correction Code) 엔진(170)을 더 포함할 수 있다. ECC 엔진(170)은 비휘발성 메모리 장치(200)로 전송될 데이터에 대한 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 비휘발성 메모리 장치(200)에 저장될 수 있다. ECC 엔진(170)은 패리티 데이터에 근거하여 비휘발성 메모리 장치(200)로부터 리드된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내라면, ECC 엔진(170)은 검출된 에러를 정정할 수 있다.
도 7b를 참조하면, 호스트 디바이스(300)로부터 유저 데이터에 대한 프로그램 리퀘스트(Request(PGM(DT_USER)))를 수신하면(①), 컨트롤러(100)의 ECC 엔진(170)은 유저 데이터(DT_USER)에 대한 패리티 데이터(PRT_1)를 생성하고(②), 유저 데이터(DT_USER) 및 패리티 데이터(PRT_1)을 결합한 데이터(DT_1)를 포함하여 데이터(DT_1)에 대한 프로그램 커맨드(CMD(PGM(DT_1)))를 비휘발성 메모리 장치(200)로 전송한다(③). 비휘발성 메모리 장치(200)는 프로그램 커맨드(CMD(PGM(DT_1)))에 대응하여 데이터(DT_1)을 저장한다(④). 이후 컨트롤러(100)가 데이터(DT_1)에 대한 리드 커맨드(CMD(READ(DT_1)))를 비휘발성 메모리 장치(200)로 전송하면(⑤), 비휘발성 메모리 장치(200)는 리드 커맨드(CMD(READ(DT_1)))에 대한 응답으로 데이터(DT_1)을 컨트롤러(100)로 전송하고(⑥), ECC 엔진(170)은 데이터(DT_1)에 포함되는 유저 데이터(DT_USER)에 기초하여 패리티 데이터(PRT_1')을 생성하고(⑦), 기존에 생성된 패리티 데이터(PRT_1)과 새로이 생성된 패리티 데이터(PRT_1')을 비교함으로써 ECC 동작을 수행한다(⑧).
본 발명의 실시 예에 따른 리커버리 모듈(111)은, 제1 그룹의 ECC에 기초하여 상태 정보를 결정할 수 있다. 몇몇 실시 예에 따라, 제1 그룹에 포함되는 데이터에 대한 리드 동작을 수행하고, 비휘발성 메모리 장치(200)로부터 수신한 데이터에 기초하여 생성된 패리티 데이터를 이용하여 ECC 동작을 수행하고, 에러 비트의 개수에 기초하여 상태 정보를 판단할 수 있다. 예를 들어, 에러 비트의 수가 많은 경우 SPO의 영향을 많이 받았다고 판단하여 더미 데이터 프로그램이 수행되는 페이지 수를 많이 설정하고, 에러 비트의 수가 적은 경우 더미 데이터 프로그램이 수행되는 페이지 수를 적게 설정할 수 있다.
도 8은 상태 정보에 기초하여 더미 데이터가 프로그램될 페이지 수를 결정하는 실시 예를 설명하기 위한 순서도이다.
S1000 단계에서, SPO가 발생했는지 여부를 판단한다. 실시 예에 따라, 비휘발성 메모리 장치(200)의 메타 영역을 참조하여 SPO 발생 여부를 판단할 수 있다. 예를 들어, 메타 영역은 노멀 파워 오프(normal power off, NPO)를 지시하는 전원 정보를 저장할 수 있고, 전원 정보는 호스트로부터 발행되는 파워 오프 공지(power off notification)에 응답하여 메타 영역의 특정 위치에 저장될 수 있다. 비휘발성 메모리 장치(200)가 파워 오프되었는데, 메타 영역에 저장된 전원 정보가 NPO를 지시하지 않는 경우, 컨트롤러(100)는 비휘발성 메모리 장치(200)에 SPO가 발생되었다고 판단할 수 있다. 본 명세서에서, 비휘발성 메모리 장치(200)에 SPO가 발생되었다는 것은, 비휘발성 메모리 장치(200)의 특정 페이지에 대한 프로그램 동작 수행 과정에서 SPO가 발생한 경우를 의미할 수 있다.
비휘발성 메모리 장치(200)에 SPO가 발생되었다고 판단되는 경우, S2000 단계에서, 컨트롤러(100)의 리커버리 모듈(111)은, 비휘발성 메모리 장치(200)의 기준 페이지에 기초하여 제1 그룹을 선택할 수 있다. 실시 예에 따라, 기준 페이지는 SPO가 발생되는 시점에 데이터가 프로그램되는 과정이었던 페이지를 의미한다. 몇몇 실시 예에 따라, 리커버리 모듈(111)은 기준 페이지의 논리 어드레스를 기준으로, 기정의된 범위 내의 논리 어드레스에 대응하는 페이지를 제1 그룹으로 선택할 수 있다.
S3000 단계에서, 선택된 제1 그룹의 상태 정보를 판단할 수 있다. 상태 정보는, 도 3 내지 도 7b를 참조하여 설명한 실시 예에 따른 상태 정보가 적용될 수 있다. 실시 예에 따라, 기준 페이지의 온도 정보에 기초하여 상태 정보를 결정할 수 있다. 이 때, 온도 정보는 SPO가 발생한 시점의 기준 페이지의 온도를 포함할 수 있다.
몇몇 실시 예에 따라, 상태 정보는 복수의 판단 조건의 조합으로 구성될 수 있다. 예를 들어, 제1 그룹에 포함되는 메모리 셀들의 문턱 전압 분포, 제1 그룹에 포함되는 메모리 블록의 이레이즈 카운트, 제1 그룹에 포함되는 메모리 블록의 리드 카운트, 프로그램 동작이 중단된 기준 페이지를 포함하는 메모리 블록의 유효 페이지 수 및 제1 그룹의 온도 정보 중 하나 이상의 판단 조건을 조합하여 복수의 레벨을 설정하고, 각각에 레벨에 대응하는 상태 정보를 정의하고, 각각의 상태 정보에 대응하는 제2 그룹의 페이지 수를 결정할 수 있다.
S4000 단계에서, 제1 그룹의 상태 정보에 기초하여 제2 그룹의 페이지 수를 결정할 수 있다. 이 때, 제2 그룹은 더미 데이터 프로그램이 수행될 페이지들을 의미할 수 있다. S5000 단계에서, 제2 그룹에 포함되는 페이지에 대한 더미 데이터 프로그램 동작을 수행할 수 있다. S6000 단계에서, 제2 그룹에 포함되는 페이지 이후의 페이지에 대한 유저 데이터 프로그램 동작을 수행할 수 있다. 이 때, 유저 데이터 프로그램은 호스트 디바이스(300)의 프로그램 요청에 대응한 유저 데이터를 비휘발성 메모리 장치(200)에 저장하는 동작을 의미할 수 있다.
본 발명의 실시 예에 따라, SPO가 발생한 경우 기준 페이지에 기초하여 제1 그룹을 설정하고, 제1 그룹의 상태 정보에 기초하여 제2 그룹을 선택하고, 선택된 제2 그룹에 대한 더미 데이터 프로그램 동작을 수행함에 따라, SPO가 발생한 메모리 블록에 대한 재사용율을 높일 수 있고, 인접 페이지 또는 기정의된 페이지에 대한 상태 정보에 따라 더미 데이터 프로그램의 조건을 동적으로 적용함으로써, 비휘발성 메모리 장치(200)의 활용성을 향상시킬 수 있다.
도 9는 상태 정보에 기초하여 더미 데이터 프로그램의 검증 전압 레벨을 결정하는 실시 예를 설명하기 위한 도면이다.
도 1, 도 2 및 도 9를 참조하면, 본 발명의 실시 예에 따른 리커버리 모듈(111)은, 적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 제1 그룹의 상태 정보에 기초하여 제2 그룹에 프로그램될 더미 데이터의 프로그램 조건을 결정하고, 결정된 더미 데이터 프로그램 조건에 따라 제2 그룹에 포함되는 페이지에 대한 더미 데이터 프로그램 동작을 수행할 수 있다. 제1 그룹의 페이지는 상태 정보의 판단 대상이 되는 페이지이고, 제2 그룹의 페이지는 더미 프로그램 동작이 수행되는 페이지일 수 있다. 설명의 편의를 위하여, 도 1 내지 도 3에서 상술된 설명과 중복되는 내용은 생략한다.
몇몇 실시 예에 따라, 더미 데이터 프로그램 조건은, 더미 데이터 프로그램에 적용되는 검증 전압(verify voltage)의 레벨을 의미할 수 있다. 도시된 바와 같이, 복수의 상태 정보들 각각에 대응하는 더미 데이터 프로그램의 검증 전압 레벨이 설정되고, 이에 따라 더미 데이터 프로그램 조건이 결정될 수 있다. 이 때, 상태 정보는 제1 그룹의 상태 정보를 의미하고, 검증 전압 레벨은 더미 데이터 프로그램 동작에 적용되는 검증 전압의 전압 레벨을 의미한다.
예를 들어, 제1 그룹이 제1 상태 정보(INF_Status(1))를 가진다고 판단되는 경우, 더미 프로그램 동작이 수행될 제2 그룹에 대한 더미 데이터 프로그램의 검증 전압 레벨을 검증 전압(Vvrf_1)로 결정할 수 있다. 또한, 제1 그룹이 제2 내지 제4 상태 정보(INF_Status(2), INF_Status(3), INF_Status(4))를 가진다고 판단되는 경우, 각각 검증 전압 레벨(Vvrf_2), 검증 전압 레벨(Vvrf_3) 및 검증 전압 레벨(Vvrf_4)가 더미 데이터 프로그램의 검증 전압 레벨로 결정될 수 있다.
도 10a 및 도 10b는 상태 정보에 기초하여 검증 전압이의 레벨이 가변적으로 적용되는 실시 예를 설명하기 위한 메모리 셀의 예시적인 문턱 전압 분포를 도시한다.
SPO가 발생하면 전원 공급이 갑자기 중단되어 진행 중인 프로그램은 완료되지 못하고 중단된다. SPO가 발생한 페이지(또는, 워드라인)에 연결된 셀들의 문턱 전압 분포는 소거 상태도 아니고 프로그램 상태도 아닌 소프트 프로그램(Soft Program)된 상태로 남게 된다. 또한, SPO 시 프로그램이 중단된 기준 페이지와 인접한 페이지도 기준 페이지의 영향을 받아 문턱 전압 분포가 변경될 수 있다. 도 10a는 기준 페이지와 인접한 페이지의 SPO 발생 전후의 문턱 전압 분포를 나타낸 것으로, 프로그램 상태(P0)에서 프로그램 상태(P0')로 변경될 수 있다. 이에 따라, 프로그램 상태(P0)에 적용되는 검증 전압을 적용하는 경우, 에러 비트의 수가 증가할 수 있고, 이에 따라 프로그램 시간이 증가하거나, 프로그램 실패로 판단되는 경우가 증가한다.
도 9 및 도 10b를 참조하면, 제1 상태 정보(INF_Status(1))에서 제4 상태 정보(INF_Status(4))로 갈수록 제1 그룹의 손상 정도가 악화됨을 의미할 수 있다. SPO가 발생하기 전의 프로그램 검증 전압을 검증 전압(Vvrf)이라고 할 때, 손상 정도가 심하지 않은 경우(예를 들어, 제1 그룹의 상태 정보가 제1 상태 정보(INF_Status(1))로 판단되는 경우) 더미 데이터 프로그램에 적용되는 검증 전압 레벨을 상대적으로 높은 전압 레벨의 값(예를 들어, 검증 전압(Vvrf_1))으로 결정하고, 손상 정도가 심하다고 판단되는 경우(예를 들어, 제1 그룹의 상태 정보가 제4 상태 정보(INF_Status(4))로 판단되는 경우) 더미 데이터 프로그램에 적용되는 검증 전압 레벨을 상대적으로 낮은 전압 레벨의 값(예를 들어, 검증 전압(Vvrf_4))으로 결정함으로써, 메모리의 셀의 상태에 따라 사용하는 페이지를 유연하게 적용할 수 있고, 메모리 사용의 효율성이 증대될 수 있다.
실시 예에 따라, 제1 그룹의 손상 정도가 소정의 범위를 넘는 경우, 제2 그룹에 대한 더미 데이터 프로그램 동작을 수행하지 않고, 기준 페이지가 포함되는 기준 메모리 블록을 배드 블록으로 설정하고, 기준 메모리 블록의 나머지 페이지들에 대한 데이터의 프로그램 동작을 차단할 수 있다. 예를 들어, 제1 그룹의 상태 정보가 제5 상태 정보(INF_Status(5))로 판단되는 경우, 리커버리 모듈(111)은 더미 데이터 프로그램에 적용되는 검증 전압 레벨을 선택하지 않고, SPO가 발생한 기준 페이지가 포함되는 기준 메모리 블록을 배드 블록으로 설정할 수 있다.
도 11은 상태 정보에 기초하여 더미 데이터 프로그램의 검증 전압 레벨을 결정하는 실시 예를 설명하기 위한 순서도이다. S1000 단계 내지 S3000 단계는, 도 8을 참조하여 설명한 S1000 단계 내지 S3000 단계가 동일하게 적용될 수 있다.
S4100 단계에서, 리커버리 모듈(111)은, 제1 그룹의 상태 정보에 기초하여 더미 데이터 프로그램의 검증 전압 레벨을 결정할 수 있다. S5100 단계에서, SPO 발생으로 인해 프로그램 동작이 중단된 기준 페이지에 인접하는 페이지에 대해, S4100 단계에서 결정된 검증 전압 레벨을 적용한 더미 프로그램 동작이 수행될 수 있다. 이 때, 인접하는 페이지의 판단 조건 및 페이지 수는 SPO 발생 이전에 설정될 수 있다. S6100 단계에서, 더미 데이터 프로그램이 수행된 페이지 이후의 페이지에 대한 유저 데이터 프로그램 동작이 수행될 수 있다.
도 12는 상태 정보에 기초하여, 더미 데이터가 프로그램될 페이지 수 및 더미 데이터 프로그램의 검증 전압 레벨을 결정하는 실시 예를 설명하기 위한 순서도이다. S1000 단계 내지 S3000 단계는, 도 11을 참조하여 설명한 S1000 단계 내지 S3000 단계가 동일하게 적용될 수 있다.
S4200 단계에서, 제1 그룹의 상태 정보에 기초하여, 제2 그룹의 페이지 수 및 더미 데이터 프로그램의 검증 전압 레벨을 결정할 수 있다. 즉, 상태 정보에 기초하여 제2 그룹의 페이지 수를 결정하는 동작 및 상태 정보에 기초하여 더리 데이터 프로그램의 검증 전압 레벨을 결정하는 동작이 동시에 적용될 수 있다. S5200 단계에서, 제2 그룹에 포함되는 페이지에 대하여, 결정된 검증 전압 레벨을 적용한 더미 데이터 프로그램 동작이 수행된다. S6200 단계에서, 제2 그룹에 포함되는 페이지 이후의 페이지에 대한 유저 데이터 프로그램 동작이 수행될 수 있다.
도 13은 워드라인의 배치 정보에 기초하여 타겟 그룹을 결정하는 실시 예를 설명하기 위한 도면이다.
도 13을 참조하면, 메모리 블록(예를 들어, 도 1의 Blk0)은 복수의 비트라인들(BL1 내지 BLn, n는 2 이상의 정수)에 연결된 스트링(String)들을 포함한다. 여기서 스트링들 각각은 비트라인과 공통 소스 라인(common source line; CSL) 사이에 직렬 연결된 적어도 하나의 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1 내지 MCm, m은 2 이상의 정수), 적어도 하나의 접지 선택 트랜지스터(GST)를 포함한다. 메모리 셀들(MC1 내지 MCm) 각각은 적어도 하나의 비트 이상의 데이터를 저장할 수 있다.
워드라인들(WL1 내지 WLm) 각각에는 복수의 메모리 셀들이 연결될 수 있다. 워드라인들(WL1 내지 WLm) 각각에 연결된 복수의 메모리 셀들을 통칭하여 페이지라 부른다. 워드라인들(WL1 내지 WLm) 각각에는 구동에 필요한 워드라인 전압들(프로그램 전압, 패스 전압, 리드 전압, 리드 패스 전압 등)이 인가될 수 있다. 스트링 선택 라인(SSL)에는 스트링 선택 트랜지스터(SST)를 제어하기 위한 스트링 선택 전압이 인가될 수 있다. 접지 선택 라인(GSL)에는 접지 선택 트랜지스터(GST)를 제어하기 위한 접지 선택 전압이 인가될 수 있다.
이하에서, WLm-3에 연결된 페이지(기준 페이지)에 대한 프로그램 동작 중에 SPO가 발생되었다고 가정한다.
도 14는 기준 워드라인의 배치 정보에 기초하여, 상태 정보가 판단될 제1 그룹을 선택하는 실시 예를 설명하기 위한 순서도이다. S1000 단계는 도 8의 S1000 단계와 동일한 동작이 수행될 수 있다.
도 13 및 도 14를 참조하면, S2300 단계에서, 본 발명의 실시 예에 따른 리커버리 모듈(111)은, 기준 워드라인의 배치 정보에 기초하여 제1 그룹을 선택할 수 있다. 기준 워드라인의 배치 정보는, 기준 워드라인이 반도체 칩 상에 배치되는 물리적인 위치 정보를 의미할 수 있다. 즉, 리커버리 모듈(111)은, 기설정된 수의 인접 워드라인에 대응하는 페이지를 제1 그룹으로 선택할 수 있다. 예를 들어, 1개의 인접 워드라인으로 제1 그룹을 구성하는 것으로 설정된 경우, WLm-2에 대응하는 페이지 및 WLm-4에 대응하는 페이지가 제1 그룹으로 선택될 것이다.
S4300 단계, S5300 단계 및 S6300 단계는 각각 도 12의 S4200 단계, S5200 단계 및 S6200 단계와 동일한 동작이 수행될 수 있다.
도 15는 비휘발성 메모리 장치(200)에 포함되는 페이지들의 배치 정보에 기초하여 타겟 그룹을 선택하는 실시 예를 설명하기 위한 순서도이다. S1000 단계는 도 8의 S1000 단계와 동일한 동작이 수행될 수 있다.
S2400 단계에서, 본 발명의 실시 예에 따른 리커버리 모듈(111)은, 비휘발성 메모리 장치(200)에 포함되는 페이지들의 배치 정보에 기초하여 타겟 그룹을 선택할 수 있다. 이 때, 타겟 그룹은 상태 정보가 판단되는 대상을 의미한다. 리커버리 모듈(111)은, SPO 과정에서 프로그램 동작이 중단된 기준 페이지와 관계없이, 비휘발성 메모리 장치(200)의 워드라인의 물리적인 배치에 기초하여 타겟 그룹을 선택할 수 있다. 반도체 칩에 실장되는 많은 수의 메모리 셀들은 셀 자체의 특성뿐만 아니라, 반도체 칩 상에 배치되는 위치에 따라, 메모리 셀의 수명 등의 특성이 결정될 수 있다. 예를 들어, 배치 상으로 많은 수의 워드라인에 인접한 메모리 셀은 인접한 셀들에 인가되는 전압 등의 영향을 많이 받을 수 있고, 이에 따라 리드 디스터브(read disturb) 등이 과도하게 일어날 수 있다. 다른 예로서, 반도체 칩의 가장자리에 위치하는 워드라인의 경우 온도 등의 환경적인 요인에 영향을 많이 받을 수 있다. 따라서, 비휘발성 메모리 장치(200)에 SPO가 발생하면 기준 페이지에 대응하는 워드라인뿐만 아니라, 물리적인 배치 특성 상 주변의 영향을 많이 받을 수 있는 워드라인에 대한 리스트를 미리 생성하고, SPO가 발생시에는 기생성된 리스트에 기초하여 타겟 그룹을 결정할 수 있다.
S3400 단계에서, 선택된 타겟 그룹의 상태 정보를 판단할 수 있다. 실시 예에 따라, 판단되는 상태 정보는 도 3 내지 도 8에서 설명한 상태 정보와 동일할 수 있다.
S4400 단계에서, 타겟 그룹의 상태 정보에 기초하여 더미 데이터 프로그램이 수행될 제3 그룹을 결정할 수 있다. 몇몇 실시 예에 따라, 제3 그룹은 도 3 내지 도 8에서 설명한 제2 그룹과 동일할 수 있다. 즉, 제 3 그룹은 기준 페이지에 기초하여 결정될 수 있다. 다른 실시 예에 따라, 제3 그룹은 타겟 그룹에 기초하여 결정될 수 있다. 예를 들어, 타겟 그룹에 포함되는 워드라인에 인접한 워드라인에 대응하는 페이지가 제3 그룹으로 결정될 수 있다. S5400 단계에서, 제3 그룹에 포함되는 페이지에 대한 더미 데이터 프로그램 동작이 수행될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 메모리 시스템 100: 컨트롤러
110: 프로세서 111: 리커버리 모듈
130: 캐시 메모리 150: 메모리 인터페이스 유닛
200: 비휘발성 메모리 장치

Claims (10)

  1. 복수의 메모리 블록들 및 상기 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는, 상기 비휘발성 메모리 장치의 프로그램 동작 중에 특정 이벤트가 발생한 경우, 상기 비휘발성 메모리 장치에 대한 리커버리 동작을 수행하는 리커버리 모듈을 포함하고,
    상기 리커버리 모듈은,
    적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 상기 제1 그룹의 상태 정보에 기초하여 제2 그룹에 포함되는 페이지 수를 결정하고, 상기 제2 그룹에 포함되는 페이지에 대하여 더미(dummy) 데이터를 프로그램하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 리커버리 모듈은, 상기 특정 이벤트로 인하여 프로그램 동작이 중단된 기준 페이지의 논리 어드레스를 기준으로, 기정의된 범위 내의 논리 어드레스에 대응하는 페이지를 상기 제1 그룹으로 선택하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 리커버리 모듈은,
    상기 제1 그룹에 포함되는 각각의 페이지에 적어도 하나의 리드 전압(read voltage)을 인가하고, 상기 리드 전압을 인가하여 획득하는 정보에 기초하여 상기 제1 그룹에 포함되는 메모리 셀에 대한 문턱 전압 분포를 결정하고, 상기 메모리 셀에 대한 문턱 전압 분포에 기초하여 상기 상태 정보를 결정하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 리커버리 모듈은, 상기 제1 그룹에 포함되는 메모리 셀들의 문턱 전압 분포, 상기 제1 그룹에 포함되는 메모리 블록의 이레이즈 카운트, 상기 제1 그룹에 포함되는 메모리 블록의 리드 카운트, 프로그램 동작이 중단된 기준 페이지를 포함하는 메모리 블록의 유효 페이지 수 및 상기 제1 그룹의 온도 정보 중 적어도 하나에 기초하여 상기 상태 정보를 결정하는 메모리 시스템.
  5. 복수의 메모리 블록들 및 상기 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는, 상기 비휘발성 메모리 장치의 프로그램 동작 중에 서든 파워 오프가 발생한 경우, 상기 비휘발성 메모리 장치에 대한 리커버리 동작을 수행하는 리커버리 모듈을 포함하고,
    상기 리커버리 모듈은,
    적어도 하나의 페이지를 포함하는 제1 그룹의 상태 정보를 판단하고, 상기 제1 그룹의 상태 정보에 기초하여 제2 그룹에 프로그램될 더미 데이터의 프로그램 조건을 결정하고, 상기 프로그램 조건에 기초하여 상기 제2 그룹에 포함되는 각각의 페이지에 상기 더미 데이터를 프로그램하는 메모리 시스템.
  6. 제5항에 있어서,
    상기 리커버리 모듈은,
    상기 상태 정보에 기초하여, 상기 더미 데이터의 프로그램 동작에 적용되는 프로그램 동작 전압의 레벨, 상기 프로그램 동작 전압이 인가되는 시간 및 검증 전압의 레벨 중 적어도 하나를 가변적으로 적용하는 메모리 시스템.
  7. 제6항에 있어서,
    상기 리커버리 모듈은,
    상기 제2 그룹에 포함되는 페이지가 메모리 셀 당 2 이상의 비트를 저장하는 경우, 상기 더미 데이터의 프로그램 동작에 적용되는 복수의 프로그램 동작 전압의 레벨, 상기 복수의 프로그램 동작 전압이 각각 인가되는 시간 및 복수의 검증 전압의 레벨 중 적어도 하나를 선택하고, 선택된 복수의 전압 레벨 또는 복수의 시간을 각각 가변적으로 적용하는 메모리 시스템.
  8. 복수의 메모리 블록들 및 상기 복수의 메모리 블록들 각각에 포함되는 복수의 페이지들을 포함하는 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치의 동작을 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는, 상기 비휘발성 메모리 장치의 프로그램 동작 중에 서든 파워 오프가 발생한 경우, 타겟 그룹의 상태 정보에 기초하여 상기 복수의 페이지들 중 적어도 하나의 페이지를 포함하는 제3 그룹에 더미 데이터를 프로그램하여 리커버리 동작을 수행하는 리커버리 모듈을 포함하고,
    상기 리커버리 모듈은,
    상기 복수의 페이지들 각각이 반도체 칩 상에 배치되는 배치 정보에 기초하여 상기 타겟 그룹 또는 상기 제3 그룹을 결정하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 리커버리 모듈은, 상기 서든 파워 오프로 인하여 프로그램 동작이 중단된 기준 워드라인의 배치 정보에 기초하여 상기 타겟 그룹을 결정하는 메모리 시스템.
  10. 제8항에 있어서,
    상기 컨트롤러는, 상기 배치 정보가 저장된 캐시 메모리를 더 포함하되,
    상기 리커버리 모듈은, 상기 캐시 메모리에 액세스하여 획득한 상기 배치 정보에 기초하여 상기 타겟 그룹을 결정하는 메모리 시스템.
KR1020190007946A 2019-01-22 2019-01-22 비휘발성 메모리 장치를 포함하는 메모리 시스템 KR102610395B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190007946A KR102610395B1 (ko) 2019-01-22 2019-01-22 비휘발성 메모리 장치를 포함하는 메모리 시스템
US16/558,866 US11449382B2 (en) 2019-01-22 2019-09-03 Memory systems comprising non-volatile memory devices
CN202010064644.2A CN111459401A (zh) 2019-01-22 2020-01-20 包括非易失性存储器设备的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190007946A KR102610395B1 (ko) 2019-01-22 2019-01-22 비휘발성 메모리 장치를 포함하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20200091121A true KR20200091121A (ko) 2020-07-30
KR102610395B1 KR102610395B1 (ko) 2023-12-05

Family

ID=71609920

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190007946A KR102610395B1 (ko) 2019-01-22 2019-01-22 비휘발성 메모리 장치를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US11449382B2 (ko)
KR (1) KR102610395B1 (ko)
CN (1) CN111459401A (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102554418B1 (ko) * 2018-10-01 2023-07-11 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 스토리지 장치
KR20200113992A (ko) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
CN114072771A (zh) * 2019-06-24 2022-02-18 美光科技公司 具有奇偶校验数据系统的存储器装置和方法
KR20210081641A (ko) * 2019-12-24 2021-07-02 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20210149521A (ko) * 2020-06-02 2021-12-09 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US11392312B2 (en) * 2020-08-25 2022-07-19 Micron Technology, Inc. Read calibration based on ranges of program/erase cycles
KR20220033368A (ko) * 2020-09-09 2022-03-16 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20220048377A (ko) * 2020-10-12 2022-04-19 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220053374A (ko) * 2020-10-22 2022-04-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11699498B2 (en) 2020-12-04 2023-07-11 Micron Technology, Inc. Managing probabilistic data integrity scan intervals
US11609857B2 (en) * 2020-12-04 2023-03-21 Micron Technology, Inc. Identification and caching of frequent read disturb aggressors
US11409599B2 (en) 2020-12-04 2022-08-09 Micron Technology, Inc. Managing probabilistic data integrity scans in workloads with localized read patterns
US11467737B2 (en) 2020-12-04 2022-10-11 Micron Technology, Inc. Reducing probabilistic data integrity scan collisions
US11875864B2 (en) * 2021-10-12 2024-01-16 PetaIO Inc. Mitigating edge layer effect in partially written blocks
US20240061744A1 (en) * 2022-08-16 2024-02-22 Micron Technology, Inc. Command address fault detection

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008022330A (ja) * 2006-07-13 2008-01-31 Seiko Epson Corp 情報再生装置及び電子機器
JP2008511082A (ja) * 2004-08-24 2008-04-10 レヴィヴィオ,インク. チェックポイントを使用して記憶処理のi/oエラーを復旧させる方法
JP2012128545A (ja) * 2010-12-14 2012-07-05 Hitachi Ltd メモリコントローラ、及びデータ記録装置
KR20150053092A (ko) * 2013-11-07 2015-05-15 에스케이하이닉스 주식회사 데이터 저장 시스템 및 그것의 동작 방법
KR20170059339A (ko) * 2015-11-20 2017-05-30 삼성전자주식회사 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법
KR20170118284A (ko) * 2016-04-14 2017-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180031853A (ko) * 2016-09-19 2018-03-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180040288A (ko) * 2016-10-12 2018-04-20 삼성전자주식회사 비휘발성 메모리 장치의 리클레임 제어 방법, 상기 비휘발성 메모리 장치를 포함하는 저장 장치의 동작 방법 및 저장 장치
KR20180094391A (ko) * 2017-02-15 2018-08-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180110473A (ko) * 2017-03-29 2018-10-10 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8737141B2 (en) * 2010-07-07 2014-05-27 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8661301B1 (en) 2012-09-07 2014-02-25 Storart Technology Co. Ltd. Method for dodging bad page and bad block caused by suddenly power off
US9478271B2 (en) 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR102127284B1 (ko) 2013-07-01 2020-06-26 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 관리 방법
KR102102224B1 (ko) * 2013-10-01 2020-04-20 삼성전자주식회사 저장 장치 및 그것의 프로그램 방법
KR20150072485A (ko) * 2013-12-19 2015-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9728278B2 (en) 2014-10-24 2017-08-08 Micron Technology, Inc. Threshold voltage margin analysis
KR102277521B1 (ko) * 2015-01-23 2021-07-16 삼성전자주식회사 저장 장치 및 그것의 리드 리클레임 및 읽기 방법
KR20170059658A (ko) * 2015-11-23 2017-05-31 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102435026B1 (ko) * 2015-12-15 2022-08-22 삼성전자주식회사 저장 장치의 동작 방법
KR102512448B1 (ko) * 2016-03-28 2023-03-22 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR20180031851A (ko) * 2016-09-19 2018-03-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI607312B (zh) 2016-10-07 2017-12-01 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
KR20180041428A (ko) * 2016-10-14 2018-04-24 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법
KR20180092422A (ko) 2017-02-09 2018-08-20 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190006680A (ko) * 2017-07-11 2019-01-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190075563A (ko) * 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI645404B (zh) * 2017-12-28 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體操作方法
KR102532547B1 (ko) * 2018-04-20 2023-05-17 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102583810B1 (ko) * 2018-05-15 2023-10-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008511082A (ja) * 2004-08-24 2008-04-10 レヴィヴィオ,インク. チェックポイントを使用して記憶処理のi/oエラーを復旧させる方法
JP2008022330A (ja) * 2006-07-13 2008-01-31 Seiko Epson Corp 情報再生装置及び電子機器
JP2012128545A (ja) * 2010-12-14 2012-07-05 Hitachi Ltd メモリコントローラ、及びデータ記録装置
KR20150053092A (ko) * 2013-11-07 2015-05-15 에스케이하이닉스 주식회사 데이터 저장 시스템 및 그것의 동작 방법
KR20170059339A (ko) * 2015-11-20 2017-05-30 삼성전자주식회사 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법
KR20170118284A (ko) * 2016-04-14 2017-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180031853A (ko) * 2016-09-19 2018-03-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180040288A (ko) * 2016-10-12 2018-04-20 삼성전자주식회사 비휘발성 메모리 장치의 리클레임 제어 방법, 상기 비휘발성 메모리 장치를 포함하는 저장 장치의 동작 방법 및 저장 장치
KR20180094391A (ko) * 2017-02-15 2018-08-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180110473A (ko) * 2017-03-29 2018-10-10 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
KR102610395B1 (ko) 2023-12-05
US11449382B2 (en) 2022-09-20
US20200233739A1 (en) 2020-07-23
CN111459401A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
KR102610395B1 (ko) 비휘발성 메모리 장치를 포함하는 메모리 시스템
US9298603B2 (en) NAND flash-based storage device and methods of using
US11249897B2 (en) Data storage device and operating method thereof
US11301150B2 (en) Memory controller and method for updating address mapping information
US11194736B2 (en) Memory controller having improved map data access performance and method of operating the same
CN110502449B (zh) 存储装置及其操作方法
US11693583B2 (en) Memory controller and operating method thereof
US11543986B2 (en) Electronic system including host, memory controller and memory device and method of operating the same
US11360707B2 (en) Memory controller for replacing bad blocks with reserved blocks and operating method thereof
US11687450B2 (en) Storage device for translating address and operating method thereof
KR20210113905A (ko) 메모리 컨트롤러 및 그 동작 방법
US11360886B2 (en) Storage device and operating method thereof
KR20220030090A (ko) 저장 장치 및 그 동작 방법
KR20210128780A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
KR20220064101A (ko) 저장 장치 및 그 동작 방법
KR20220028332A (ko) 저장 장치 및 그 동작 방법
US11836370B2 (en) Storage device and operating method thereof
US11687270B2 (en) Storage device and operating method performing garbage collection of cyclical data
US11625324B2 (en) Storage device for moving valid data to an open memory block based on a valid page list and operating method thereof
KR20220077689A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20220120016A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20220053973A (ko) 메모리 컨트롤러 및 그 동작 방법
US20220147261A1 (en) Storage device and operating method thereof
US11210223B2 (en) Storage device and operating method thereof
US20220292029A1 (en) Storage device and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant