KR20200122522A - 컨트롤러 및 그 동작 방법 - Google Patents

컨트롤러 및 그 동작 방법 Download PDF

Info

Publication number
KR20200122522A
KR20200122522A KR1020190045308A KR20190045308A KR20200122522A KR 20200122522 A KR20200122522 A KR 20200122522A KR 1020190045308 A KR1020190045308 A KR 1020190045308A KR 20190045308 A KR20190045308 A KR 20190045308A KR 20200122522 A KR20200122522 A KR 20200122522A
Authority
KR
South Korea
Prior art keywords
block
open
memory
reads
memory device
Prior art date
Application number
KR1020190045308A
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 KR1020190045308A priority Critical patent/KR20200122522A/ko
Priority to US16/778,322 priority patent/US11138109B2/en
Priority to CN202010148461.9A priority patent/CN111831218A/zh
Publication of KR20200122522A publication Critical patent/KR20200122522A/ko
Priority to US17/464,088 priority patent/US11681619B2/en

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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/04Addressing variable-length words or parts of words
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • 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
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; 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/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/26Sensing or reading circuits; Data output 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
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7202Allocation control and policies
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/143Detection of memory cassette insertion or removal; Continuity checks of supply or ground lines; Detection of supply variations, interruptions or levels ; Switching between alternative supplies
    • G11C5/144Detection of predetermined disconnection or reduction of power supply, e.g. power down or power standby
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/148Details of power up or power down circuits, standby circuits or recovery circuits
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 장치를 제어하는 컨트롤러의 서든 파워 오프 복구 동작 방법은, 상기 메모리 장치의 오픈 블록 정보 및 오픈 블록들의 리드 횟수들을 획득하는 단계; 상기 오픈 블록들의 리드 횟수들 각각에 소정 값을 더함으로써 상기 리드 횟수들을 각각 업데이트하는 단계; 상기 업데이트된 리드 횟수들을 상기 메모리 장치에 저장하는 단계; 상기 업데이트된 리드 횟수들을 저장하는 단계를 수행한 이후 상기 오픈 블록 정보에 기초하여 상기 오픈 블록들의 리드 횟수 업데이트 없이 상기 메모리 장치의 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드하여 경계 페이지를 탐색하는 단계; 및 상기 탐색된 경계 페이지에 더미 데이터를 프로그램하도록 상기 메모리 장치를 제어하고 서든 파워 오프 복구 동작을 종료하는 단계를 포함한다.

Description

컨트롤러 및 그 동작 방법{CONTROLLER AND OPERATION METHOD THEREOF}
본 발명은 메모리 장치를 제어하는 컨트롤러에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 서든 파워 오프(sudden power off) 복구 동작을 수행하는 컨트롤러에 저장된 데이터의 신뢰성이 향상되는 동작 방법 및 그 컨트롤러를 제공하고자 한다.
본 발명은 메모리 시스템, 데이터 처리 시스템, 및 그것의 동작 방법 및 동작을 확인하는 방법을 제공한다.
본 발명의 일 실시예에 따르면, 메모리 장치를 제어하는 컨트롤러의 서든 파워 오프 복구 동작 방법은, 상기 메모리 장치의 오픈 블록 정보 및 오픈 블록들의 리드 횟수들을 획득하는 단계; 상기 오픈 블록들의 리드 횟수들 각각에 소정 값을 더함으로써 상기 리드 횟수들을 각각 업데이트하는 단계; 상기 업데이트된 리드 횟수들을 상기 메모리 장치에 저장하는 단계; 상기 업데이트된 리드 횟수들을 저장하는 단계를 수행한 이후 상기 오픈 블록 정보에 기초하여 상기 오픈 블록들의 리드 횟수 업데이트 없이 상기 메모리 장치의 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드하여 경계 페이지를 탐색하는 단계; 및 상기 탐색된 경계 페이지에 더미 데이터를 프로그램하도록 상기 메모리 장치를 제어하고 서든 파워 오프 복구 동작을 종료하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 메모리 장치를 제어하는 컨트롤러는, 서든 파워 오프 이후 부팅 시 상기 메모리 장치의 오픈 블록 정보 및 오픈 블록들의 리드 횟수들을 획득하고, 상기 오픈 블록들의 리드 횟수들 각각에 소정 값을 더함으로써 상기 리드 횟수들을 각각 업데이트하는 블록 관리부; 및 상기 업데이트된 리드 횟수들을 저장하도록 상기 메모리 장치를 제어하는 메모리 인터페이스를 포함하되, 상기 블록 관리부는 상기 리드 횟수들이 저장된 이후 상기 오픈 블록 정보에 기초하여 상기 오픈 블록들의 리드 횟수 업데이트 없이 상기 메모리 장치의 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드하여 경계 페이지를 탐색하고, 상기 탐색된 경계 페이지에 더미 데이터를 프로그램하도록 상기 메모리 장치를 제어하고 서든 파워 오프 복구 동작을 종료하는 블록 관리부; 및 상기 서든 파워 오프 복구 동작을 수행하기 이전에 상기 업데이트된 리드 횟수를 저장하도록 메모리 장치를 제어하고 서든 파워 오프 복구 동작을 종료한다.
본 발명의 실시 예에 따르면 서든 파워 오프 복구 동작을 수행하는 컨트롤러에 저장된 데이터의 신뢰성이 향상될 수 있다.
본 발명의 실시 예에 따르면 메모리 장치를 제어하는 컨트롤러는 메모리 시스템의 전원 공급이 불안정한 경우라도 메모리 장치의 데이터 손실 정도를 보다 정확히 판단하여 신뢰성 유지를 위한 동작을 수행할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 종래기술에 따른 메모리 시스템의 동작의 일 예를 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템의 구조를 나타내는 블록도이다.
도 3은 메모리 장치에 포함된 메모리 셀들의 문턱 전압 분포를 나타내는 도면이다.
도 4는 메모리 장치에 포함된 메모리 블록을 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템의 서든 파워 오프 복구 동작을 나타내는 흐름도이다.
도 6은 메모리 장치에 포함된 메모리 셀들의 문턱 전압 분포를 나타내는 도면이다.
도 7은 메모리 시스템의 동작을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 메모리 시스템의 서든 파워 오프 복구 동작을 나타내는 도면이다.
도 9는 메모리 장치의 오픈 블록들을 예시하는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 종래기술에 따른 메모리 시스템의 동작의 일 예를 나타내는 도면이다.
도 1을 참조하면, 상기 메모리 시스템은 메모리 장치 및 상기 메모리 장치를 제어하는 컨트롤러)를 포함한다.
상기 메모리 장치는 복수의 비휘발성 메모리 셀을 포함한다. 복수의 비휘발성 메모리 셀은 스트링 구조(string structure)를 가진다. 스트링 구조를 갖는 메모리 셀들의 집합을 셀 어레이(cell array)라고 부른다. 상기 메모리 장치의 메모리 셀 어레이는 복수의 메모리 블록(memory block)으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 각각의 페이지는 하나의 워드라인을 공유하는 복수의 메모리 셀로 구성된다. 상기 메모리 장치는 메모리 블록 단위로 이레이즈 동작을 수행하고, 페이지 단위로 리드 및 프로그램 동작을 수행한다.
도 1을 참조하면, 상기 메모리 시스템에서 서든 파워 오프(sudden power off)가 발생한 이후 부트업되는 경우, 상기 메모리 시스템은 서든 파워 오프 복구 동작을 수행한다. 도 1에 도시된 점선 내의 동작들은 서든 파워 오프 복구 동작을 예시한다.
프로그램 동작이 수행되고 있던 메모리 블록에서 서든 파워 오프가 발생하면 상기 프로그램 동작이 중단된다. 상기 메모리 시스템은 마지막으로 프로그램된 페이지의 다음 페이지를 찾고, 상기 다음 페이지에 더미 데이터를 프로그램함으로써 서든 파워 오프 복구 동작을 수행한다.
도 1을 참조하면, 상기 메모리 시스템이 파워 온 되면 상기 컨트롤러는 메모리 장치(150)로부터 오픈 블록 정보(OPEN BLOCK INFO.)를 획득한다. 오픈 블록은 아직 모든 메모리 셀에 대한 프로그램 동작이 완료되지 않은 메모리 블록을 지칭한다. 오픈 블록 정보는 상기 메모리 장치에 포함된 메모리 블록들 중 어느 블록들이 오픈 블록인지를 나타낸다.
상기 컨트롤러는 상기 메모리 장치로부터 상기 오픈 블록 정보와 함께 각 오픈 블록들의 리드 횟수(READ COUNT)를 획득한다. 메모리 블록에 리드 동작이 여러 번 수행되면 리드 디스터번스(read disturbance)로 인해 메모리 블록에 저장된 데이터가 손상된다. 따라서, 리드 횟수는 메모리 블록들에 저장된 데이터의 신뢰성을 나타낸다. 상기 컨트롤러는 상기 메모리 장치의 리드 횟수에 기초하여 메모리 블록에 저장된 데이터의 신뢰성을 유지하기 위한 동작을 수행한다. 예를 들어, 상기 컨트롤러는 리드 횟수가 임계값 이상인 오픈 블록에 프로그램되는 데이터는 신뢰성이 떨어질 것으로 판단하여 해당 오픈 블록을 클로즈 블록으로 결정한다.
상기 메모리 시스템은 서든 파워 오프 복구 동작의 일환으로 오픈 블록들의 마지막으로 프로그램된 페이지의 다음 페이지를 탐색한다. 상기 마지막으로 프로그램된 페이지의 다음 페이지를 경계 페이지로 지칭한다.
오픈 블록들의 경계 페이지를 탐색할 때 상기 메모리 시스템은 오픈 블록들의 각 페이지들이 이레이즈되었는지 여부를 판단하기 위해 상기 각 페이지들의 리드 동작을 수행한다. 도 1을 참조하면, 상기 컨트롤러는 오픈 블록 정보를 참조하여 상기 메모리 장치로 오픈 블록의 리드 커맨드를 제공한다. 상기 메모리 장치는 상기 리드 커맨드에 응하여 리드 동작을 수행한다. 상기 컨트롤러는 상기 오픈 블록의 리드 횟수를 변경한다.
상기 컨트롤러는 변경된 리드 횟수를 컨트롤러(130)의 메모리에 저장한다. 상기 컨트롤러의 메모리는 휘발성 메모리로 구현된다. 상기 컨트롤러는 소정 주기로 상기 컨트롤러의 메모리에 저장된 리드 횟수를 비휘발성 메모리 셀을 포함하는 상기 메모리 장치에 저장한다. 상기 컨트롤러의 메모리에 저장된 리드 횟수가 상기 메모리 장치에 저장되기 전에 서든 파워 오프가 발생하면 상기 메모리 시스템은 상기 변경된 리드 횟수를 잃는다.
상기 메모리 시스템의 전원 공급이 불안정한 경우 서든 파워 오프가 반복하여 발생할 수 있다. 반복되는 서든 파워 오프로 인해 동일한 메모리 블록에 서든 파워 오프 복구 동작이 반복 수행될 수 있다. 따라서, 서든 파워 오프 복구 동작에 포함되는 리드 동작에 의한 리드 횟수가 상기 반복되는 서든 파워 오프로 인하여 상기 메모리 장치에 저장되지 않는다. 메모리 블록에 실제로 리드 동작이 임계값 이상 수행되었더라도, 상기 컨트롤러의 메모리에 저장된 리드 횟수가 임계값에 도달하지 않으면 상기 컨트롤러는 상기 메모리 블록을 클로즈 블록으로 결정하지 않을 수 있다. 리드 동작이 임계값 이상 수행된오픈 블록이 클로즈 블록으로 결정되지 않으면 리드 디스터번스로 인해 해당 데이터의 신뢰성이 보장될 수 없다.
본 발명의 일 실시예에 따르면, 컨트롤러는 메모리 시스템이 서든 파워 오프 이후 파워 온 되면 메모리 장치로부터 오픈 블록 정보 및 리드 횟수를 획득할 수 있다. 상기 컨트롤러는 상기 오픈 블록 정보 및 리드 횟수에 기초하여, 오픈 블록들의 리드 횟수를 각각 소정 값만큼 변경하고, 변경된 리드 횟수를 상기 메모리 장치에 저장한 이후 경계 페이지를 탐색할 수 있다. 서든 파워 오프가 반복하여 발생하는 경우라도 상기 컨트롤러는 경계 페이지를 탐색하는 동작에 의해 변경되는 오픈 블록의 리드 횟수를 상기 메모리 시스템에 저장할 수 있다. 상기 컨트롤러는 변경되는 리드 횟수에 기초하여 상기 메모리 장치의 메모리 블록들에 저장된 데이터의 신뢰성을 유지하기 위한 동작을 수행할 수 있다. 따라서, 상기 메모리 시스템의 신뢰성이 향상될 수 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 구조를 나타내는 블록도이다.
도 1을 참조하여 설명한 바와 같이, 메모리 시스템(110)은 컨트롤러(130) 및 메모리 장치(150)를 포함할 수 있다. 컨트롤러(130)는 서로 연동하는 호스트 인터페이스(132), FTL(40), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, 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) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
메모리 인터페이스(142)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응하여 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 메모리 장치(150)가 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 메모리 인터페이스(142)는 메모리 장치(150)를 위한 제어 신호를 생성하고, 프로세서(134)의 제어 하에 메모리 장치(150)로 제공되는 데이터를 처리할 수 있다. 메모리 인터페이스(142)는 컨트롤러(130)와 메모리 장치(150) 사이의 커맨드 및 데이터를 처리하기 위한 인터페이스, 예컨대 NAND 플래시 인터페이스로서 동작할 수 있다.
FTL(40)은 호스트 인터페이스(132)로부터 수신된 호스트 요청을 관리하는 호스트 요구 관리자(46), 맵 데이터를 관리하는 맵 관리자(44), 가비지 콜렉션 또는 웨어 레벨링을 수행하기 위한 상태 관리자(42), 메모리 블록을 관리하고, 메모리 장치 내 블록에 명령을 수행하기 위한 블록 관리자(48)를 포함할 수 있다.
예를 들면, 호스트 요구 관리자(46)는 맵 관리자(44) 및 블록 관리자(48)를 사용하여 호스트 인터페이스 유닛(132)으로부터 수신된 리드 요청, 라이트 요청 및 이벤트에 따른 요청을 처리할 수 있다. 호스트 요구 관리자(46)는 전달된 요청의 논리 주소에 해당하는 물리 주소를 파악하기 위해 맵 관리자(44)로 탐색 요청을 제공하고, 물리 주소에 대해 메모리 인터페이스 유닛(142)으로 리드 커맨드를 제공하여 리드 요청을 처리할 수 있다. 한편, 호스트 요구 관리자(46)는 먼저 블록 관리자(48)에 라이트 요청을 제공함으로써 미기록된(데이터가 없는) 메모리 장치의 특정 페이지에 데이터를 라이트한 다음, 맵 관리자(44)에 맵 갱신(update) 요청을 제공함으로써 논리 주소와 물리 주소 사이의 매핑 정보를 업데이트할 수 있다.
블록 관리자(48)는 호스트 요구 관리자(46), 맵 관리자(44), 및 상태 관리자(42)의 라이트 요청을 메모리 장치(150)를 위한 프로그램 커맨드로 변환할 수 있다. 메모리 시스템(110)의 라이트 성능을 극대화하기 위해 블록 관리자(48)는 라이트 요청을 수집하고 다중 플레인(plane) 및 원샷 프로그램 작동에 대한 프로그램 커맨드를 메모리 인터페이스 유닛(142)으로 제공할 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리를 최대화하기 위해 여러 가지 프로그램 커맨드를 메모리 인터페이스 유닛(142)으로 제공할 수도 있다.
한편, 블록 관리자(48)는 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택하여 이레이즈하고, 가비지 콜렉션(garbage collection)이 필요한 경우 유효한 페이지를 가장 적게 포함하고 있는 블록을 선택할 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 콜렉션을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 이레이즈할 수 있다. 블록 관리자(48)가 상태 관리자(42)로 이레이즈될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지가 유효한지 여부를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 블록 관리자(48)로 각 유효한 페이지의 프로그램 커맨드를 제공할 수 있다. 프로그램 동작이 완료되면 맵 관리자(44)가 매핑 테이블을 업데이트될 수 있다.
또한, 블록 관리자(48)는 메모리 블록에 저장된 데이터가 손상되지 않도록 메모리 블록들을 관리할 수 있다. 블록 관리자(48)는 서든 파워 오프로 인한 데이터의 신뢰성 저하를 방지하기 위해 서든 파워 오프 복구 동작을 수행할 수 있다. 블록 관리자(48)는 리드 디스터번스로 인한 데이터의 신뢰성 저하를 방지하기 위해 오픈 블록의 리드 횟수에 기초하여 해당 오픈 블록을 클로즈 블록으로 결정할 수 있다.
맵 관리자(44)는 논리 주소와 물리 주소 사이의 매핑 테이블을 관리하고, 호스트 요구 관리자(46) 및 상태 관리자(42)에 의해 생성된 조회, 갱신 등의 요청을 처리할 수 있다. 맵 관리자(44)는 전체 맵 데이터를 메모리 장치(150)의 맵 영역에 저장하고, 메모리(144) 용량에 따라 적어도 일부의 맵 데이터를 캐싱할 수도 있다. 탐색 및 갱신 커맨드를 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스 유닛(142)으로 리드 커맨드를 제공하여 메모리 장치(150)에 저장된 맵 데이터를 로드(load)할 수 있다. 맵 관리자(44)의 메모리(144)에 캐싱된 데이터 양이 임계값을 초과하면 맵 관리자(44)는 블록 관리자(48)로 라이트 커맨드를 제공함으로써 메모리(144)에 캐싱된 맵 데이터를 메모리 장치(150)에 저장할 수 있다.
한편, 가비지 콜렉션이 수행되는 경우, 상태 관리자(42)가 유효한 페이지를 복사하는 동안 호스트 요구 관리자(46)는 페이지의 동일한 논리 주소에 대한 데이터의 최신 버전을 라이트하고 갱신 요청을 동시에 제공할 수 있다. 유효한 페이지의 복사가 정상적으로 완료되지 않은 상태에서 상태 관리자(42)가 맵 데이터 갱신을 요청하면 맵 관리자(44)는 매핑 테이블 업데이트를 수행하지 않을 수도 있다. 맵 관리자(44)는 최신 맵 테이블이 여전히 이전 실제 주소를 가리키는 경우에만 맵 업데이트를 수행하여 정확성을 보장할 수 있다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 예를 들어, 메모리(144)는 호스트(102)와 메모리 장치(150) 사이의 데이터 입출력 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
실시예에 따라, 메모리 장치(150)는 플래시 메모리, 예컨대 NAND 플래시 메모리와 같은 비휘발성 메모리일 수 있다. 그러나, 메모리 장치(150)는 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 및 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리들 중 어느 하나의 메모리로 구현될 수도 있다.
메모리 장치(150)는 1비트 데이터를 저장하는 싱글 레벨 셀(SLC) 메모리 블록, 복수 비트 데이터를 저장하는 멀티 레벨 셀(MLC) 메모리 블록 등을 포함하는 복수의 메모리 블록들을 포함할 수 있다. SLC 메모리 블록들은 한 메모리 셀에 한 비트 데이터를 저장하는 메모리 셀들로 구현되는 복수의 페이지들을 포함할 수 있다. SLC 메모리 블록들은 높은 내구성과 빠른 데이터 동작 성능을 가질 수 있다. 반면에, MLC 메모리 블록들은 한 메모리 셀에 둘 이상의 비트와 같은 복수 비트의 데이터를 저장하는 메모리 셀들로 구현되는 복수의 페이지들을 포함할 수 있다. 상기 MLC 메모리 블록들은 상기 SLC 메모리 블록들보다 큰 데이터 저장 공간을 가질 수 있다. 즉, 상기 MLC 메모리 블록들은 고집적화될 수 있다.
메모리 장치(150)는 2차원 또는 3차원의 메모리 장치로 구현될 수 있다. 메모리 장치(150)에 포함된 각 메모리 블록(330)은 제2방향을 따라 신장된 복수의 낸드 스트링들을 포함할 수 있으며, 제1방향 및 제3방향들을 따라 복수의 낸드 스트링들이 제공될 수 있다. 여기서, 각 낸드 스트링은, 비트라인, 적어도 하나의 스트링 선택라인, 적어도 하나의 접지 선택라인, 복수의 워드라인들, 적어도 하나의 더미 워드라인, 그리고 공통 소스라인에 연결될 수 있으며, 복수의 트랜지스터 구조들을 포함할 수 있다.
도 3은 메모리 장치(150)에 포함된 메모리 셀들의 문턱 전압 분포를 예시하는 도면이다.
메모리 장치(150)는 라이트 커맨드에 응하여 프로그램하고자 하는 메모리 셀에 접속된 워드라인 및 비트라인에 전압을 인가함으로써 데이터를 프로그램할 수 있다. 프로그램되지 않은 메모리 셀들은 이레이즈 상태(E)의 문턱 전압을 가질 수 있다. 데이터를 프로그램하기 위해 메모리 셀에 접속된 워드라인 및 비트라인에 전압을 인가함에 따라 메모리 셀은 목표하는 문턱 전압을 가질 수 있다.
멀티 레벨 메모리 셀을 프로그램하면, 저장하고자 하는 데이터에 따라 제1 내지 제3 프로그램 상태(P1 to P3) 및 이레이즈 상태(E) 중 어느 하나의 문턱 전압을 가질 수 있다. 메모리 장치(150)가 상기 메모리 셀에 접속된 워드라인에 리드 전압(Vread)을 인가하면, 상기 메모리 셀의 문턱 전압에 따라 비트라인에 흐르는 전류의 양이 달라져서 각 문턱 전압 상태가 구분될 수 있다.
도 4는 메모리 장치(150)에 포함된 메모리 블록(152)을 예시하는 도면이다.
메모리 블록(152)은 여덟 개의 페이지(PAGE 1 to PAGE 8)를 포함할 수 있다. 도 4는 서든 파워 오프 발생 당시의 메모리 블록(152)을 예시한다. 도 4를 참조하면, 메모리 블록(152)은 모든 메모리 셀이 프로그램되지는 않은 오픈 블록이다. 메모리 블록(152)의 제1 내지 제4 페이지(PAGE 1 to PAGE 4)는 프로그램 동작이 완료된 페이지일 수 있다. 제6 내지 제8 페이지(PAGE 6 to PAGE 8)는 프로그램되지 않은 이레이즈 페이지일 수 있다. 제5 페이지(PAGE 5)는 마지막으로 프로그램된 페이지이다. 제5 페이지의 프로그램 동작은 서든 파워 오프가 발생되기 전에 완료되었을 수도 있고, 서든 파워 오프 발생 당시 수행 중이었을 수도 있다.
경우에 따라, 제5 페이지의 메모리 셀들이 목표하는 문턱 전압에 도달하지 못한 채로 프로그램 동작이 종료될 수 있다. 따라서 제5 페이지에 저장된 데이터의 신뢰성이 보장되지 않는다. 메모리 시스템(110)은 메모리 블록에 신뢰성이 보장되지 않는 페이지가 있더라도 경계 페이지에 더미 데이터를 프로그램하고 나머지 이레이즈 페이지들을 사용할 수 있다. 도 4의 예에서 메모리 시스템(110)은 메모리 블록(152)의 제5 페이지의 다음 페이지, 즉 경계 페이지인 제6 페이지에 더미 데이터를 프로그램할 수 있다. 구현에 따라, 메모리 시스템(110)은 제5 페이지의 데이터를 제7 페이지에 복사하는 동작을 더 수행할 수 있다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 서든 파워 오프 복구 동작을 나타내는 흐름도이다.
단계 S502에서 서든 파워 오프 이후 파워 온 되면, 단계 S504에서 블록 관리자(48)는 메모리 인터페이스(142)를 통해 메모리 장치(150)에 저장된 오픈 블록 정보 및 오픈 블록들의 리드 횟수를 획득할 수 있다.
단계 S506에서, 블록 관리자(48)는 상기 리드 횟수들 각각에 소정 값을 더함으로써 상기 리드 횟수들을 각각 업데이트하고, 상기 업데이트된 리드 횟수들을 메모리 장치(150)에 저장할 수 있다. 상기 소정 값은 후술되는 단계 S508에서 각 오픈 블록에 수행될 것으로 예상되는 리드 횟수일 수 있다.
단계 S508에서, 블록 관리자(48)는 상기 오픈 블록 정보에 기초하여 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드하여 경계 페이지를 탐색할 수 있다. 단계 S506에서 각 오픈 블록에 수행될 것으로 예상되는 리드 횟수를 미리 더함으로써 리드 횟수들을 업데이트했기 때문에 단계 S508에서 상기 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드할 때는 리드 횟수를 카운트하지 않을 수 있다.
페이지들을 리드하는 순서는 컨트롤러(130)의 구현에 따라 사전에 결정될 수 있다. 일 예로, 블록 관리자(48)는 페이지가 배열된 순서 또는 페이지가 배열된 순서의 역순으로 오픈 블록의 페이지들의 리드 동작을 수행함으로써 경계 페이지를 찾는 선형 탐색(linear search) 기법으로 경계 페이지를 탐색할 수 있다. 다른 예로, 컨트롤러(130)는 탐색할 페이지들 중 중간 위치의 페이지의 리드 동작을 수행한 결과에 따라 탐색할 페이지의 범위를 좁혀나감으로써 경계 페이지를 찾는 이진 탐색(binary search) 기법으로 경계 페이지를 탐색할 수 있다.
단계 S510에서 블록 관리자(48)는 오픈 블록들 각각의 경계 페이지에 더미 데이터를 프로그램하도록 메모리 장치(150)로 프로그램 커맨드를 제공할 수 있다.
도 6은 메모리 장치(150)에 포함된 이레이즈 상태의 메모리 셀들의 문턱 전압 분포를 나타내는 도면이다.
오픈 블록은 모든 메모리 셀에 대한 프로그램 동작이 완료되지 않은 메모리 블록으로서, 이레이즈 상태인 메모리 셀들을 포함할 수 있다. 오픈 블록의 메모리 셀들이 리드되는 경우 디스터번스로 인해 이레이즈 상태의 메모리 셀들의 문턱 전압 분포가 왜곡될 수 있다. 이레이즈 상태의 메모리 셀들의 문턱 전압이 상승하면 상기 이레이즈 상태의 메모리 셀들이 프로그램 상태로 인식될 수 있다. 도 6의 그래프에 점선으로 도시된 문턱 전압은 디스터번스로 인해 왜곡된 문턱 전압 분포를 나타낸다.
문턱 전압 분포가 왜곡된 이레이즈 상태의 메모리 셀들에 데이터를 프로그램하고, 상기 데이터를 리드하면 에러 정정 디코딩으로도 정정할 수 없는 에러가 발생할 수 있다.
컨트롤러(130)는 이레이즈 상태의 메모리 셀들의 디스터번스로 인한 데이터 손상을 막기 위해 메모리 장치(150)의 오픈 블록의 리드 횟수에 기초하여 상기 오픈 블록을 클로즈 블록으로 결정하고, 상기 결정된 클로즈 블록에 더 이상 프로그램 동작을 수행하지 않을 수 있다.
도 7은 메모리 시스템(110)의 동작을 나타내는 흐름도이다.
단계 S702에서 블록 관리자(48)는 메모리 블록의 리드 횟수를 업데이트할 수 있다. 일 예로, 단계 S702는 도 5를 참조하여 설명된 단계 S506을 포함할 수 있다. 일 예로, 블록 관리자(48)는 서든 파워 오프 복구 동작을 수행하지 않을 때는 상기 메모리 블록의 리드 커맨드에 응하여 리드 횟수를 업데이트할 수 있다.
단계 S704에서, 블록 관리자(48)는 오픈 블록의 리드 횟수가 임계값 이상인지 판단할 수 있다. 일 예로, 블록 관리자(48)는 도 5의 단계 S508 내지 단계 S510을 수행한 이후 단계 S704를 수행할 수 있다. 일 예로, 블록 관리자(48)는 서든 파워 오프 복구 동작을 수행하지 않을 때는 단계 S702에서 리드 횟수가 업데이트된 메모리 블록이 오픈 블록인 경우 단계 S704를 수행할 수 있다.
오픈 블록의 리드 횟수가 임계값 미만인 경우(단계 S704에서, “” 블록 관리자(48)는 동작을 종료할 수 있다.
오픈 블록의 리드 횟수가 임계값 이상인 경우(단계 S704에서, “” 단계 S706에서 블록 관리자(48)는 상기 오픈 블록을 클로즈 블록으로 결정함으로써 해당 오픈 블록에 더 이상 프로그램 동작이 수행되지 않도록 할 수 있다.
단계 S708에서, 블록 관리자(48)는 메모리 장치(150)에 프리 블록이 있는지 판단할 수 있다. 프리 블록은 모든 메모리 셀들이 아직 프로그램되지 않은 메모리 블록을 지칭한다.
메모리 장치(150)에 프리 블록이 있는 경우(단계 S708에서, “”단계 S712에서 블록 관리자(48)는 상기 클로즈 블록으로 결정된 오픈 블록을 대신해서 상기 프리 블록을 할당할 수 있다. 예를 들어, 유저 데이터를 프로그램하기 위한 오픈 블록의 리드 카운트가 임계값 이상이 되면 상기 오픈 블록을 클로즈 블록으로 결정하고, 프리 블록을 할당하여 상기 프리 블록에 유저 데이터를 프로그램할 수 있다.
메모리 장치(150)에 프리 블록이 없는 경우(단계 S708에서, “”단계 S710에서 블록 관리자(48)는 프리 블록을 생성할 수 있다. 일 예로, 블록 관리자(48)는 무효 데이터만이 저장된 메모리 블록을 이레이즈하도록 메모리 장치(150)를 제어할 수 있다. 그리고 블록 관리자(48)는 단계 S712를 수행할 수 있다.
도 8은 본 발명의 일 실시예에 따른 메모리 시스템(110)의 서든 파워 오프 복구 동작 방법을 나타내는 도면이다.
단계 S802에서 메모리 시스템(110)이 서든 파워 오프 이후 파워 온 되면, 단계 S804에서 블록 관리자(48)는 메모리 장치(150)로부터 오픈 블록 정보 및 리드 횟수를 획득할 수 있다.
단계 S806에서, 블록 관리자(48)는 오픈 블록 각각의 리드 횟수에 소정 값을 더함으로써 리드 횟수를 업데이트할 수 있다.
일 실시예에서, 상기 소정 값은 서든 파워 오프 복구 동작에서 하나의 오픈 블록에 수행될 수 있는 리드 동작의 최대 횟수일 수 있다. 상기 리드 동작의 최대 횟수는 상술한 경계 페이지를 탐색하는 탐색 기법에 따른 최대 횟수일 수 있다. 예를 들어, 블록 관리자(48)는 이진 탐색 기법으로 오픈 블록의 경계 페이지를 탐색할 수 있다. 이진 탐색 기법의 시간복잡도는
Figure pat00001
이다. 따라서 2n개의 페이지를 포함하는 메모리 블록에서 블록 관리자(48)는 최대 n회의 리드 동작을 수행함으로써 경계 페이지를 찾을 수 있다. 일 예로, 메모리 장치(150)가 2n개의 페이지를 포함하는 메모리 블록들을 포함하고 블록 관리자(48)가 이진 탐색 기법으로 경계 페이지를 탐색하는 경우 상기 소정 값은 n일 수 있다. 다른 예로, 블록 관리자(48)는 선형 탐색 기법으로 오픈 블록의 경계 페이지를 탐색할 수 있다. 메모리 장치(150)가 2n개의 페이지를 포함하는 메모리 블록들을 포함하고 블록 관리자(48)가 선형 탐색 기법으로 경계 페이지를 탐색하는 경우 상기 소정 값은 2n일 수 있다.
일 실시예에서, 상기 소정 값은 서든 파워 오프 복구 동작에서 하나의 오픈 블록에 수행되는 리드 동작의 평균 횟수로 결정될 수도 있다.
단계 S808에서, 블록 관리자(48)는 상기 업데이트된 리드 횟수를 저장하도록 하는 프로그램 커맨드를 메모리 인터페이스(142)를 통해 메모리 장치(150)로 제공할 수 있다. 단계 S810에서, 메모리 장치(150)는 상기 프로그램 커맨드에 응하여 상기 업데이트된 리드 횟수를 메모리 블록에 저장할 수 있다.
단계 S812에서, 블록 관리자(48)는 경계 페이지를 탐색할 수 있다. 블록 관리자(48)가 단계 S806 내지 단계 S810에서 오픈 블록들 각각의 리드 횟수를 미리 업데이트하였으므로, 단계 S812에서 블록 관리자(48)는 오픈 블록들 각각의 리드 횟수를 업데이트하지 않을 수 있다.
단계 S814에서, 블록 관리자(48)는 오픈 블록들 각각의 경계 페이지에 더미 데이터를 저장할 수 있다.
메모리 시스템(110)의 전원 공급이 불안정한 경우 단계 S812 내지 단계 S814의 동작이 수행되는 도중 메모리 시스템(110)에 서든 파워 오프가 발생할 수 있다. 본 발명의 일 실시예에 따르면 블록 관리자(48)는 단계 S812에서 경계 페이지를 탐색할 때 수행될 수 있는 리드 동작의 횟수를 단계 S806 내지 단계 S810에서 각 오픈 블록의 리드 횟수들에 미리 업데이트하여 메모리 장치(150)에 저장할 수 있다. 따라서 단계 S812 내지 단계 S814의 동작이 수행되는 도중 메모리 시스템(110)에서 서든 파워 오프가 발생하더라도 경계 페이지를 탐색할 때 수행되는 리드 동작의 횟수가 메모리 장치(150)에 저장될 수 있다. 메모리 시스템(110)에서 서든 파워 오프가 반복적으로 발생하더라도 블록 관리자(48)는 경계 페이지를 탐색할 때 수행되는 리드 동작의 횟수를 메모리 장치(150)에 저장할 수 있다.
메모리 시스템(110)에 서든 파워 오프가 반복하여 발생하더라도 블록 관리자(48)는 메모리 장치(150)에 저장된 오픈 블록별 리드 횟수들에 기초하여 오픈 블록에 저장된 데이터의 신뢰성을 보다 정확하게 판단할 수 있다. 블록 관리자(48)는 상기 리드 횟수에 기초하여 오픈 블록을 클로즈 블록으로 결정하는 메모리 블록 관리를 수행할 수 있다. 따라서, 메모리 시스템(110)의 신뢰성이 향상될 수 있다.
도 9는 메모리 장치(150)의 오픈 블록들을 예시하는 도면이다.
구현에 따라, 메모리 시스템(110)의 동작 중 복수의 오픈 블록이 동시에 있을 수 있다. 예를 들어, 메모리 장치(150)는 사용자(user) 데이터를 저장하는 사용자 블록들, 맵 데이터를 저장하는 맵 블록들 및 히스토리 데이터를 저장하는 히스토리 블록들을 포함할 수 있다. 컨트롤러(130)는 메모리 시스템(110)의 동작 중에 사용자 데이터, 맵 데이터 및 히스토리 데이터를 모두 저장할 수 있으므로 메모리 장치(150)는 사용자 블록들, 맵 블록들 및 히스토리 블록들 중 각각 하나씩을 오픈 블록으로 결정할 수 있다. 도 9는 메모리 장치(150)에 세 개의 오픈 블록(BLOCK1, BLOCK2, BLOCK3)이 포함되는 경우를 예시한다.
도 8을 참조하여 설명된 바에 따르면, 블록 관리자(48)는 서든 파워 오프 복구 동작을 수행하기 이전에 오픈 블록들 각각의 리드 횟수에 소정 값을 더함으로써 리드 횟수를 업데이트할 수 있다. 일 실시예에서, 상기 소정 값은 각 오픈 블록별로 결정되는 가변 값일 수 있다.
일 실시예에서, 블록 관리자(48)는 상기 소정 값을 오픈 블록별로, 매 서든 파워 오프 복구 동작시마다 랜덤(random)으로 결정할 수 있다.
일 실시예에서, 블록 관리자(48)는 상기 소정 값을 오픈 블록별로, 매 서든 파워 오프 복구 동작시마다 소정의 상한 및 하한 사이에서 랜덤으로 결정할 수 있다. 예를 들어, 상기 하한은 서든 파워 오프 복구 동작에서 하나의 오픈 블록에 수행될 수 있는 리드 동작의 최대 횟수 또는 평균 횟수일 수 있다. 상기 리드 동작의 최대 횟수는 상기 경계 페이지를 탐색하는 탐색 기법에 따른 최대 횟수일 수 있다.
일 실시예에서, 블록 관리자(48)는 오픈 블록별로 상기 소정 값에 차등을 둘 수 있다. 예를 들어, 블록 관리자(48)는 오픈 블록들 중 사용자 블록의 소정 값을 크게 결정할 수 있다. 다른 예로, 블록 관리자(48)는 오픈 블록별 식별자에 따라 결정된 순서로 상기 소정 값이 점진적으로 커지도록 상기 소정 값을 결정할 수 있다. 블록 관리자(48)는 제1 블록(BLOCK1), 제2 블록(BLOCK2), 제3 블록(BLOCK3) 순서로 상기 소정 값을 '10', '20', '30'과 같이 결정할 수 있다. 블록 관리자(48)는 상기 순서를 주기적으로 변경할 수 있다. 예를 들어, 연속적으로 소정 횟수 이상 서든 파워 오프가 발생하면 제2 블록(BLOCK2), 제3 블록(BLOCK3), 제1 블록(BLOCK1) 순서로 상기 소정 값을 '10', '20', '30'과 같이 결정할 수 있다.
블록 관리자(48)가 상기 소정 값을 각 오픈 블록에 따라 독립적으로 결정하는 경우, 서든 파워 오프 복구 동작시마다 오픈 블록별 리드 횟수에 서로 다른 값을 더하여 메모리 시스템(110)에 반영할 수 있다.
서든 파워 오프 복구 동작 중이라도 오픈 블록의 리드 횟수가 임계값 이상이면 블록 관리자(48)는 도 7을 참조하여 설명한 바와 같이 해당 오픈 블록을 클로즈 블록으로 결정하고, 해당 오픈 블록을 대신하여 프리 블록을 할당할 수 있다. 만약 메모리 장치(150)에 프리 블록이 없는 경우 블록 관리자(48)는 상기 복수의 오픈 블록들을 대신하기 위한 복수의 프리 블록을 생성하기 위해 복수의 메모리 블록에 이레이즈 동작을 수행할 수 있다. 서든 파워 오프 복구 동작 중에 리드 횟수가 동시에 임계값에 도달하는 복수의 오픈 블록들이 발생하면 메모리 시스템(110)은 복수의 메모리 블록에 이레이즈 동작을 수행하므로 서든 파워 오프 복구 동작에 소요되는 시간이 길어질 수 있다.
블록 관리자(48)가 상기 소정 값을 각 오픈 블록에 따라 독립적으로 결정하면 각 오픈 블록의 리드 횟수가 일률적으로 증가하여 서든 파워 오프 복구 동작 중 리드 횟수가 임계값에 도달하는 메모리 블록의 수가 많아지는 경우를 줄일 수 있다. 따라서 본 발명의 일 실시예에 따르면 메모리 시스템(110)의 서든 파워 오프 복구 동작 시간이 길어지지 않도록 함으로써 메모리 시스템(110)의 성능을 향상시킬 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110: 메모리 시스템
130: 컨트롤러
150: 메모리 장치

Claims (14)

  1. 메모리 장치를 제어하는 컨트롤러의 서든 파워 오프 복구 동작 방법에 있어서,
    상기 메모리 장치의 오픈 블록 정보 및 오픈 블록들의 리드 횟수들을 획득하는 단계;
    상기 오픈 블록들의 리드 횟수들 각각에 소정 값을 더함으로써 상기 리드 횟수들을 각각 업데이트하는 단계;
    상기 업데이트된 리드 횟수들을 상기 메모리 장치에 저장하는 단계;
    상기 업데이트된 리드 횟수들을 저장하는 단계를 수행한 이후 상기 오픈 블록 정보에 기초하여 상기 오픈 블록들의 리드 횟수 업데이트 없이 상기 메모리 장치의 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드하여 경계 페이지를 탐색하는 단계; 및
    상기 탐색된 경계 페이지에 더미 데이터를 프로그램하도록 상기 메모리 장치를 제어하고 서든 파워 오프 복구 동작을 종료하는 단계
    를 포함하는 동작 방법.
  2. 제1항에 있어서,
    상기 소정 값은
    상기 서든 파워 오프 복구 동작에서 상기 경계 페이지 탐색 기법에 따라 하나의 오픈 블록에 수행될 수 있는 리드 동작의 최대 횟수인
    동작 방법.
  3. 제1항에 있어서,
    상기 소정 값은
    상기 서든 파워 오프 복구 동작에서 하나의 오픈 블록에 수행되는 리드 동작의 평균 횟수인
    동작 방법.
  4. 제2항에 있어서,
    상기 탐색 기법은
    선형 탐색(linear search) 기법인
    동작 방법.
  5. 제2항에 있어서,
    상기 탐색 기법은
    이진 탐색(binary search) 기법인
    동작 방법.
  6. 제1항에 있어서,
    상기 업데이트된 리드 횟수에 기초하여 오픈 블록을 클로즈 블록으로 결정하는 단계; 및
    상기 클로즈 블록으로 결정된 오픈 블록을 대신하여 프리 블록을 할당하는 단계
    를 더 포함하는 동작 방법.
  7. 제6항에 있어서,
    무효 데이터만이 저장된 메모리 블록을 이레이즈함으로써 프리 블록을 생성하는 단계
    를 더 포함하는 동작 방법.
  8. 메모리 장치를 제어하는 컨트롤러에 있어서,
    서든 파워 오프 이후 부팅 시 상기 메모리 장치의 오픈 블록 정보 및 오픈 블록들의 리드 횟수들을 획득하고, 상기 오픈 블록들의 리드 횟수들 각각에 소정 값을 더함으로써 상기 리드 횟수들을 각각 업데이트하는 블록 관리부; 및
    상기 업데이트된 리드 횟수들을 저장하도록 상기 메모리 장치를 제어하는 메모리 인터페이스를 포함하되,
    상기 블록 관리부는
    상기 리드 횟수들이 저장된 이후 상기 오픈 블록 정보에 기초하여 상기 오픈 블록들의 리드 횟수 업데이트 없이 상기 메모리 장치의 오픈 블록들 각각에 포함된 페이지들을 순차적으로 리드하여 경계 페이지를 탐색하고, 상기 탐색된 경계 페이지에 더미 데이터를 프로그램하도록 상기 메모리 장치를 제어하고 서든 파워 오프 복구 동작을 종료하는
    컨트롤러.
  9. 제8항에 있어서,
    상기 소정 값은
    상기 서든 파워 오프 복구 동작에서 상기 경계 페이지 탐색 기법에 따라 하나의 오픈 블록에 수행될 수 있는 리드 동작의 최대 횟수인
    컨트롤러.
  10. 제8항에 있어서,
    상기 소정 값은
    상기 서든 파워 오프 복구 동작에서 하나의 오픈 블록에 수행되는 리드 동작의 평균 횟수인
    컨트롤러.
  11. 제9항에 있어서,
    상기 탐색 기법은
    선형 탐색 기법인
    컨트롤러.
  12. 제9항에 있어서,
    상기 탐색 기법은
    이진 탐색 기법인
    컨트롤러.
  13. 제8항에 있어서,
    상기 블록 관리부는
    상기 업데이트된 리드 횟수에 기초하여 오픈 블록을 클로즈 블록으로 결정하고, 상기 클로즈 블록으로 결정된 오픈 블록을 대신하여 프리 블록을 할당하는
    컨트롤러.
  14. 제13항에 있어서,
    상기 블록 관리부는
    무효 데이터만이 저장된 메모리 블록을 이레이즈함으로써 프리 블록을 생성하는
    컨트롤러.

KR1020190045308A 2019-04-18 2019-04-18 컨트롤러 및 그 동작 방법 KR20200122522A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190045308A KR20200122522A (ko) 2019-04-18 2019-04-18 컨트롤러 및 그 동작 방법
US16/778,322 US11138109B2 (en) 2019-04-18 2020-01-31 Controller and operation method thereof for managing read count information of memory block
CN202010148461.9A CN111831218A (zh) 2019-04-18 2020-03-05 控制器及其操作方法
US17/464,088 US11681619B2 (en) 2019-04-18 2021-09-01 Controller and operation method thereof for managing read count information of memory block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190045308A KR20200122522A (ko) 2019-04-18 2019-04-18 컨트롤러 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20200122522A true KR20200122522A (ko) 2020-10-28

Family

ID=72832456

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190045308A KR20200122522A (ko) 2019-04-18 2019-04-18 컨트롤러 및 그 동작 방법

Country Status (3)

Country Link
US (2) US11138109B2 (ko)
KR (1) KR20200122522A (ko)
CN (1) CN111831218A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366763B2 (en) * 2017-10-31 2019-07-30 Micron Technology, Inc. Block read count voltage adjustment
KR20230009991A (ko) 2021-03-11 2023-01-17 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 디바이스의 판독 동작에서의 개방 블록-기반 판독 오프셋 보상
CN113253943B (zh) 2021-07-06 2021-10-12 苏州浪潮智能科技有限公司 一种优化固态硬盘中open block的方法、装置、设备及可读介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2271987A4 (en) 2008-05-01 2011-04-20 Hewlett Packard Development Co STORING CONTROL POINT DATA IN NON-VOLATILE MEMORY
KR102102224B1 (ko) * 2013-10-01 2020-04-20 삼성전자주식회사 저장 장치 및 그것의 프로그램 방법
KR20150053092A (ko) * 2013-11-07 2015-05-15 에스케이하이닉스 주식회사 데이터 저장 시스템 및 그것의 동작 방법
US9552171B2 (en) * 2014-10-29 2017-01-24 Sandisk Technologies Llc Read scrub with adaptive counter management
US9978456B2 (en) * 2014-11-17 2018-05-22 Sandisk Technologies Llc Techniques for reducing read disturb in partially written blocks of non-volatile memory
US20170075593A1 (en) 2015-09-11 2017-03-16 Sandisk Technologies Inc. System and method for counter flush frequency
KR102435026B1 (ko) * 2015-12-15 2022-08-22 삼성전자주식회사 저장 장치의 동작 방법
KR20180076715A (ko) 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10949341B2 (en) * 2018-08-27 2021-03-16 Samsung Electronics Co., Ltd. Implementing snapshot and other functionality in KVSSD through garbage collection and FTL

Also Published As

Publication number Publication date
US11138109B2 (en) 2021-10-05
CN111831218A (zh) 2020-10-27
US20210397556A1 (en) 2021-12-23
US20200334148A1 (en) 2020-10-22
US11681619B2 (en) 2023-06-20

Similar Documents

Publication Publication Date Title
US20220254422A1 (en) Storage device and method of operating the same
US10884669B2 (en) Controller, operation method of the controller and memory system
US10732877B1 (en) Smart mapping table update post background operations
US11526438B2 (en) Memory system capable of increasing storage efficiency and operation method thereof
US11681619B2 (en) Controller and operation method thereof for managing read count information of memory block
US9619165B1 (en) Convertible leaf memory mapping
US10747676B2 (en) Memory-efficient object address mapping in a tiered data structure
CN110928805B (zh) 存储器系统及其操作方法
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US11922065B2 (en) Memory system and operating method thereof
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
KR20200132495A (ko) 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법
KR20200044461A (ko) 메모리 시스템 및 그것의 동작방법
CN112015329A (zh) 存储系统及其操作方法
KR20200116375A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11113202B2 (en) Operating method forcing the second operation to fail using a scatter-gather buffer and memory system thereof
US11662911B2 (en) Memory system and operating method thereof
KR20210157544A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11392322B2 (en) Memory system for read operation and operating method thereof
KR20220118004A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US11657000B2 (en) Controller and memory system including the same
KR20200113991A (ko) 컨트롤러 및 메모리 시스템
US11822800B2 (en) Storage system including host and storage device and operation method thereof
US11508448B2 (en) Memory system including memory device and operating method thereof
US11126545B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination