[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20200132495A - 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법 - Google Patents

메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20200132495A
KR20200132495A KR1020190058121A KR20190058121A KR20200132495A KR 20200132495 A KR20200132495 A KR 20200132495A KR 1020190058121 A KR1020190058121 A KR 1020190058121A KR 20190058121 A KR20190058121 A KR 20190058121A KR 20200132495 A KR20200132495 A KR 20200132495A
Authority
KR
South Korea
Prior art keywords
memory
block
area
map
blocks
Prior art date
Application number
KR1020190058121A
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 KR1020190058121A priority Critical patent/KR20200132495A/ko
Priority to CN201911355961.3A priority patent/CN111949206A/zh
Priority to US16/730,579 priority patent/US11150819B2/en
Publication of KR20200132495A publication Critical patent/KR20200132495A/ko

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/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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • 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/7211Wear leveling

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 시스템은, 복수의 메모리 블록을 포함하는 메모리 장치; 및 상기 메모리 장치의 동작을 제어하고, 상기 복수의 메모리 블록을 노멀 영역 및 여분 영역에 각각 할당하는 컨트롤러를 포함하고, 상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하고, 상기 여분 영역을 노멀 영역에 할당되는 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하여 상기 복수의 메모리 블록을 관리하는 컨트롤러를 포함한다.

Description

메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법{MEMORY SYSTEM, CONTROLLER AND OPERATION METHOD OF THE CONTROLLER}
본 발명은 메모리 시스템에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 메모리 장치의 여분 영역의 적어도 일부를 활용하여 성능이 향상된 메모리 시스템을 제공하고자 한다.
본 발명은 메모리 장치가 노후화되는 경우라도 성능 및 신뢰성이 보장되는 메모리 시스템을 제공하고자 한다.
본 발명은 메모리 시스템, 컨트롤러 및 그것의 동작 방법을 제공한다.
본 발명의 일 실시예에 따른 메모리 시스템은, 복수의 메모리 블록을 포함하는 메모리 장치; 및 상기 메모리 장치의 동작을 제어하고, 상기 복수의 메모리 블록을 상기 노멀 및 여분 영역에 각각 할당하는 컨트롤러를 포함하고, 상기 컨트롤러는 상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하고, 상기 여분 영역을 상기 노멀 영역에 할당되는 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하여 상기 복수의 메모리 블록을 관리한다.
본 발명의 일 실시예에 따르면, 복수의 메모리 블록을 포함하는 메모리 장치를 제어하는 컨트롤러는, 논리 주소와 물리 주소 사이의 매핑을 수행하는 맵 관리자; 및 상기 복수의 메모리 블록 전체의 수와 최대 배드 블록 수의 차에 해당하는 수의 메모리 블록을 노멀 영역으로 할당하고, 상기 최대 배드 블록 수와 초기 배드 블록 수의 차에 해당하는 수의 메모리 블록을 여분 영역으로 할당하고, 상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하고, 상기 여분 영역을 상기 노멀 영역에 할당된 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하여 상기 복수의 메모리 블록을 관리하는 블록 관리자를 포함한다.
본 발명의 일 실시예에 따르면, 복수의 메모리 블록을 포함하는 메모리 장치를 제어하는 컨트롤러의 동작 방법은, 상기 복수의 메모리 블록 전체의 수와 최대 배드 블록 수의 차에 해당하는 수의 메모리 블록을 노멀 영역으로 할당하고, 상기 최대 배드 블록 수와 초기 배드 블록 수의 차에 해당하는 수의 메모리 블록을 여분 영역으로 할당하는 단계; 상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하는 단계; 및 상기 여분 영역을 상기 노멀 영역에 할당된 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하는 단계를 포함한다.
본 발명에 따른 장치에 대한 효과에 대해 설명하면 다음과 같다.
본 발명의 일 실시예에 따른 컨트롤러는 메모리 장치의 여분 영역의 적어도 일부를 맵 데이터를 저장하기 위한 맵 오버프로비저닝 영역으로 사용할 수 있다. 맵 데이터를 저장하기 위한 메모리 공간이 충분하면, 메모리 공간을 확보하기 위한 이레이즈 동작이 감소할 수 있다. 따라서 컨트롤러 및 메모리 장치를 포함하는 메모리 시스템의 성능이 향상될 수 있다.
본 발명의 일 실시예에 따른 컨트롤러는 메모리 장치의 여분 영역의 나머지 일부를 배드 블록 교체를 위한 예비 영역으로 할당할 수 있다. 상기 컨트롤러는 배드 브록 교체로 인해 예비 영역이 감소하지 않도록 맵 오버프로비저닝 영역의 크기를 유연하게 조정할 수 있다. 따라서 메모리 장치가 노후화되는 경우라도 메모리 시스템의 성능 및 신뢰성을 보장할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 메모리 시스템을 포함하는 데이터 처리 시스템의 계층 구조를 보여주는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 메모리 시스템의 구조를 나타내는 블록도이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 메모리 장치를 개략적으로 도시한 도면이다.
도 5a 내지 도 5c는 본 발명의 일 실시예에 따른 메모리 장치를 자세히 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 메모리 시스템에 포함된 블록 관리 정보(146)를 예시한다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템(110)을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(110)은 메모리 장치(150) 및 메모리 장치(150)를 제어하는 컨트롤러(130)를 포함할 수 있다.
메모리 장치(150)는 복수의 비휘발성 메모리 셀을 포함할 수 있다. 복수의 비휘발성 메모리 셀은 스트링 구조(string structure)를 가질 수 있다. 스트링 구조를 갖는 메모리 셀들의 집합을 셀 어레이(cell array)라고 부른다. 메모리 장치(150)의 메모리 셀 어레이는 복수의 메모리 블록(memory block)으로 구성될 수 있다. 각각의 메모리 블록은 복수의 페이지(page)로 구성될 수 있다. 각각의 페이지는 하나의 워드라인을 공유하는 복수의 메모리 셀로 구성될 수 있다. 메모리 장치(150)는 리드 및 라이트 동작의 단위와 이레이즈 동작의 단위가 다르다. 즉, 메모리 장치(150)는 메모리 블록 단위로 이레이즈 동작을 수행하고, 페이지 단위로 리드 및 라이트 동작을 수행할 수 있다. 또한, 메모리 장치(150)는 덮어쓰기(overwrite) 동작을 지원하지 않는다. 따라서, 메모리 장치(150)는 라이트 동작 전에 이레이즈 동작을 수행할 수 있다.
리드 및 라이트 동작의 단위와 이레이즈 동작의 단위가 다르고, 덮어쓰기 동작을 지원하지 않는 메모리 장치(150)의 특성을 보완하기 위해, 컨트롤러(130)는 메모리 장치(150)의 저장 공간을 효율적으로 관리하기 위한 플래시 변환 계층(Flash Translation Layer; FTL)을 포함할 수 있다. 도 1은 FTL에 포함될 수 있는 블록 관리자(48)를 도시하고 있다.
도 2는 메모리 시스템(110)을 포함하는 데이터 처리 시스템(100)의 계층 구조를 보여주는 블록도이다. 도 2를 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함할 수 있다.
호스트(102)는 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터와 같은 휴대용 전자 장치들 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터와 같은 전자 장치들을 포함할 수 있다. 호스트(102)는 애플리케이션(104) 및 파일 시스템(106)을 포함할 수 있다. 메모리 시스템(110)은 호스트(102)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다.
데이터 처리 시스템(100)은 애플리케이션(104), 파일 시스템(106), 컨트롤러(130), 메모리 장치(150) 순의 계층 구조를 가질 수 있다.
컨트롤러(130)는 애플리케이션(102) 또는 파일 시스템(104)으로부터 논리 주소를 입력받을 수 있다. 컨트롤러(130)는 논리 주소를 입력받고, 이를 물리 주소로 변환할 수 있다. 물리 주소는 메모리 장치(150)로 제공될 수 있다. 컨트롤러(150)는 논리 주소와 물리 주소 사이의 어드레스 매핑 관계를 저장하는 매핑 테이블을 가질 수 있다.
다시 도 1을 참조하면, 메모리 장치(150)는 결함이 있는 메모리 블록들을 포함할 수 있다. 블록 관리자(48)는 결함으로 인해 내부에 저장된 데이터의 신뢰성을 보장할 수 없는 메모리 블록을 배드 블록으로 결정하고, 배드 블록에 액세스하지 않도록 컨트롤러(130)를 제어할 수 있다.
배드 블록은 메모리 장치(150)의 초기 불량으로 인해 메모리 시스템(110)의 최초 동작시부터 있을 수 있다. 본 명세서에서는 메모리 시스템(110)의 최초 동작시부터 있는 배드 블록을 초기 배드 블록(BAD_INIT)으로 지칭한다. 메모리 시스템(110)이 사용자에게 약속된 성능을 제공하기 위해 메모리 장치(150)에 요구하는 최소 정상 블록(NORMAL_MIN) 수가 사전에 결정될 수 있다. 메모리 장치(150)가 최소한의 정상 메모리 블록 수를 갖도록 하는 최대 배드 블록(BAD_MAX) 수가 사전에 결정될 수 있다. 내부의 초기 배드 블록 수가 최대 배드 블록 수 이상인 메모리 장치(150)는 불량으로 간주되어 메모리 시스템(110)에 사용되지 않을 수 있다. 따라서, 메모리 시스템(110)에 포함된 메모리 장치(150)의 초기 배드 블록 수는 최대 배드 블록 수 미만인 것으로 간주할 수 있다.
블록 관리자(48)는 메모리 장치(150)의 복수의 메모리 블록들을 노멀 영역 및 여분 영역에 할당할 수 있다. 블록 관리자(48)는 최소 정상 블록 수의 메모리 블록들을 포함하는 메모리 영역을 노멀 영역으로 결정할 수 있다. 블록 관리자(48)는 노멀 영역의 메모리 블록들을 사용자 영역(USER), 사용자 오버프로비저닝 영역(USER_OP), 맵 영역(MAP) 및 맵 오버프로비저닝 영역(MAP_OP)으로 구분하여 할당할 수 있다. 컨트롤러(130)는 사용자 영역에 사용자 데이터를 저장하고, 맵 영역에 맵 데이터를 저장하도록 메모리 장치(150)를 제어할 수 있다. 컨트롤러(130)는 사용자 데이터를 관리하기 위해 사용자 오버프로비저닝 영역을 사용하고, 맵 데이터를 관리하기 위해 맵 오버프로비저닝 영역을 사용할 수 있다. 예를 들어, 컨트롤러(130)는 사용자 오버프로비저닝 영역을 사용하면 사용자 영역의 여유 메모리 공간이 부족할 때도 높은 성능으로 가비지 콜렉션 동작을 수행할 수 있다.
정상 블록들 중 사용자 영역 및 맵 영역으로 결정되지 않은 블록들은 여분 블록이 될 수 있다. 즉, 여분 블록의 수는 최대 배드 블록 수와 초기 배드 블록 수의 차(difference)로 결정될 수 있다. 도 1은 복수의 메모리 블록들로 구성된 사용자 영역, 사용자 오버프로비저닝 영역, 맵 영역, 맵 오버프로비저닝 영역, 여분 영역 및 초기 배드 영역을 예시한다. 도 1은 각 영역들을 각각 하나의 구역으로 나타내고 있지만 각 영역들은 반드시 서로 연속하는 메모리 블록들로 구성되는 것은 아니다.
배드 블록은 메모리 시스템(110)의 동작 중에 디스터번스(disturbance), 마모(wear-out) 등의 다양한 원인으로 발생할 수도 있다. 블록 관리자(48)는 메모리 시스템(110)의 동작 중 사용자 영역 또는 맵 영역에서 배드 블록이 발생하면 해당 배드 블록을 여분 영역의 메모리 블록으로 교체할 수 있다. 컨트롤러(130)는 배드 블록에 저장된 데이터의 소실을 방지하기 위해 배드 블록에 저장된 데이터를 교체된 메모리 블록에 저장할 수 있다. 컨트롤러(130)는 배드 블록에 대응되었던 논리 주소가 교체된 메모리 블록에 대응되도록 논리 주소와 물리 주소 사이의 대응 관계를 갱신할 수 있다. 컨트롤러(130)는 갱신된 대응 관계를 메모리 시스템(110) 내부의 매핑 테이블(mapping table)에 반영할 수 있다. 외부로부터 액세스 요청이 있으면 컨트롤러(130)는 매핑 테이블을 참조하여, 요청된 논리 블록 주소에 대응하는 결함 없는 물리 블록 주소를 메모리 장치(150)로 제공할 수 있다.
여분 영역의 메모리 블록들이 배드 블록을 교체하기 위해 사용되기 전까지 빈 블록들로 남아있고 메모리 시스템(110)의 동작 중 상기 빈 블록들을 사용할 수 없다면 메모리 시스템(110)의 활용성이 저하될 수 있다.
본 발명의 일 실시예에 따른 메모리 시스템(110)의 컨트롤러(130)는 메모리 장치(150)의 여분 영역의 일부를 배드 블록을 교체하기 위한 예비 영역으로 결정하고, 나머지를 추가 맵 오버프로비저닝 영역으로 결정할 수 있다. 상기 여분 영역의 빈 블록들을 추가 맵 오버프로비저닝 영역으로 결정함으로써 맵 데이터를 관리하기 위한 여유 공간을 크게 확보할 수 있다. 따라서, 컨트롤러(130)는 여분 영역의 일부를 맵 오버프로비저닝 영역으로 결정함으로써 메모리 시스템(110)의 성능을 향상시킬 수 있다.
도 3은 본 발명의 일 실시예에 따른 메모리 시스템(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)는 배드 블록의 액세스를 제한하고, 정상 메모리 블록을 복수의 영역으로 나누어 영역별로 다른 데이터가 저장되도록 메모리 장치(150)를 제어할 수 있다. 본 발명의 일 실시예에 따른 블록 관리자(48)의 동작은 도 4a 내지 도 7을 참조하여 상세히 설명된다.
맵 관리자(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) 사이의 데이터 입출력 동작을 수행하는 데 필요한 데이터를 저장할 수 있다. 그리고 메모리(144)는 각 메모리 블록들의 속성 정보를 포함하는 블록 관리 정보(146)를 저장할 수 있다.
실시예에 따라, 메모리 장치(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방향들을 따라 복수의 낸드 스트링들이 제공될 수 있다. 여기서, 각 낸드 스트링은, 비트라인, 적어도 하나의 스트링 선택라인, 적어도 하나의 접지 선택라인, 복수의 워드라인들, 적어도 하나의 더미 워드라인, 그리고 공통 소스라인에 연결될 수 있으며, 복수의 트랜지스터 구조들을 포함할 수 있다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 메모리 장치(150)를 개략적으로 도시한 도면이다. 도 4a는 메모리 장치(150)에 포함되는 메모리 블록들로 구성되는 각 영역들을 예시한다. 도 4b는 메모리 장치(150)에 배드 블록이 발생할 때 여분 영역의 사용 예를 나타낸다.
도 4a를 참조하면, 메모리 장치(150)에 포함되는 메모리 블록들은 사용자 영역(USER), 사용자 오버프로비저닝 영역(USER_OP), 맵 영역(MAP), 맵 오버프로비저닝 영역(MAP_OP) 및 여분 영역(REDUNDANCY)을 구성할 수 있다. 메모리 장치(150)의 여분 영역은 추가 맵 오버프로비저닝 영역(MAP_OP_ADD) 및 예비 영역(RSV_BAD)을 포함할 수 있다. 본 명세서에서, 각 영역을 구성하는 메모리 블록을 각각 사용자 블록, 사용자 오버프로비저닝 블록, 맵 블록, 맵 오버프로비저닝 블록, 추가 맵 오버프로비저닝 블록 및 예비 블록으로 지칭한다. 노멀 영역의 맵 오버프로비저닝 블록 및 여분 영역의 추가 맵 오버프로비저닝 블록 모두 맵 오버프로비저닝 블록으로서, 맵 데이터를 관리하기 위해 사용될 수 있다. 블록 관리자(48)는 여분 블록들 중 소정 개수의 메모리 블록들을 예비 블록으로서 할당하고, 나머지 블록들을 추가 맵 오버프로비저닝 블록으로서 할당할 수 있다.
도 4a를 참조하면, 맵 데이터도 유저 데이터와 마찬가지로 메모리 장치(150)에 저장될 수 있다. 메모리 장치(150)는 덮어쓰기 동작을 지원하지 않으므로 맵 데이터를 갱신하기 위해 기존 맵 데이터를 무효화하고 갱신된 맵 데이터를 맵 영역의 다른 메모리 블록에 라이트할 수 있다. 무효화된 맵 영역이 증가하면 메모리 시스템(110)의 효율이 떨어지므로 컨트롤러(130)는 맵 데이터의 가비지 콜렉션 동작을 수행함으로써 맵 영역의 저장 공간을 확보할 수 있다.
가비지 콜렉션 동작은 유효 데이터의 리드 동작, 리드된 유효 데이터의 라이트 동작 및 이레이즈 동작을 수반할 수 있다. 오버프로비저닝 영역이 클수록 메모리 장치의 여유 공간이 많아져서 가비지 콜렉션 성능이 향상될 수 있으며, 메모리 장치의 여유 공간을 확보할 필요성이 감소하여 가비지 콜렉션 동작의 수행 빈도가 감소할 수 있다. 따라서 오버프로비저닝 영역이 클수록 사용자에게 쾌적한 성능을 제공할 수 있다.
맵 데이터는 사용자 데이터보다 양이 적을 수 있다. 맵 오버프로비저닝 영역을 구성하는 메모리 블록의 수는 사용자 오버프로비저닝 영역을 구성하는 메모리 블록의 수보다 적을 수 있다. 여분 영역의 메모리 블록들을 맵 오버프로비저닝 영역으로 사용하는 경우 맵 오버프로비저닝 영역의 크기의 증가율은 상기 여분 영역의 메모리 블록들을 사용자 오버프로비저닝 영역으로 사용하는 경우 사용자 오버프로비저닝 영역의 크기의 증가율보다 클 수 있다. 따라서, 예비 영역의 메모리 블록을 맵 오버프로비저닝 영역에 더하여 사용하면, 사용자 오버프로비저닝 영역에 더하여 사용하는 것보다 가비지 콜렉션 동작의 수행 빈도가 더욱 감소할 수 있다. 즉, 예비 영역의 적어도 일부의 메모리 블록들을 추가 맵 오버프로비저닝 블록으로 결정함으로써 가비지 콜렉션 동작의 수행 빈도를 크게 감소시켜 사용자에게 메모리 시스템(110)의 쾌적한 성능을 제공할 수 있다.
도 4b를 참조하면, 메모리 시스템(110)의 동작 중 도 4a의 메모리 장치(150)의 노멀 영역의 메모리 블록에 배드 블록이 발생할 수 있다. 도 4b는 사용자 영역에 발생한 배드 블록(BAD)을 예시한다. 블록 관리자(48)는 상기 배드 블록을 예비 영역에 포함된 메모리 블록으로 교체할 수 있다. 도 4b는 교체된 메모리 블록(REPAIR)을 예시한다.
블록 관리자(48)는 교체된 메모리 블록으로 인해 예비 블록의 수가 감소하면, 예비 블록 수를 보충하기 위해 이레이즈 상태의 추가 맵 오버프로비저닝 블록을 예비 영역으로 변경할 수 있다.
일 예로, 블록 관리자(48)는 배드 블록이 발생하여 사용할 수 있는 노멀 블록이 감소하는 것을 방지하고 사용자에게 배드 블록이 발생하기 전과 동일한 메모리 용량 및 성능을 제공하기 위해 발생한 배드 블록 수와 동일한 수의 예비 블록을 상기 발생한 배드 블록과 교체할 수 있다. 블록 관리자(48)는 감소한 예비 블록 수와 동일한 수의 추가 맵 오버프로비저닝 블록을 예비 영역으로 교체할 수 있다.
구현에 따라, 모든 추가 맵 오버프로비저닝 블록이 예비 블록으로 변경된 경우, 블록 관리자(48)는 예비 블록의 수가 감소하더라도 예비 블록을 보충하지 않을 수 있다.
도 5a 내지 도 5c는 본 발명의 일 실시예에 따른 메모리 장치(150)를 자세히 도시한 도면이다. 도 5a 내지 도 5c를 참조하여 본 발명의 일 실시예에 따른 블록 관리자(48)의 동작을 자세히 설명한다. 도 5a 내지 도 5c는 메모리 시스템(110)의 동작에 따른 메모리 장치(150)의 상태를 시계열적으로 도시한다. 도 5a 내지 도 5c는 메모리 장치(150)에서 노멀 영역이 12개의 메모리 블록을 포함하고, 여분 영역이 8개의 메모리 블록을 포함하는 경우를 예시한다. 도 5a 내지 도 5c에서 초기 배드 블록은 생략되었다.
도 5a는 메모리 장치(150)가 6개의 사용자 블록(USER_BLOCK1 to USER_BLOCK6), 2개의 사용자 오버프로비저닝 블록(USER_OP_BLOCK1 to USER_OP_BLOCK2), 3개의 맵 블록(MAP_BLOCK1 to MAP_BLOCK3), 1개의 맵 오버프로비저닝 블록(MAP_OP_BLOCK1) 4개의 추가 맵 오버프로비저닝 블록 (MAP_OP_BLOCK2 to MAP_OP_BLOCK5) 및 4개의 예비 블록(RSV_BAD_BLOCK1 to RSV_BAD_BLOCK4)을 포함하는 경우를 예시한다.
도 5b는 메모리 시스템(110)의 동작 중 도 5a의 메모리 장치(150)에서 배드 블록이 발생한 경우를 예시한다. 만약 제6 사용자 블록(USER_BLOCK6)에 기준치 이상이 결함이 발생하면, 블록 관리자(48)는 제6 사용자 블록(USER_BLOCK6)을 배드 블록으로 결정하고, 상기 배드 블록을 제1 예비 블록(RSV_BAD_BLOCK1)으로 교체할 수 있다. 수 있다. 블록 관리자(48)는 제5 맵 오버프로비저닝 블록(MAP_OP_BLOCK5)을 제1 예비 블록(RSV_BAD_BLOCK1)으로 결정함으로써 예비 블록의 수를 유지할 수 있다.
도 5c는 도 5b의 메모리 장치(150)에서 배드 블록이 추가적으로 발생한 경우를 예시한다. 만약 제2 사용자 블록(USER_BLOCK2), 제4 사용자 블록(USER_BLOCK4), 제1 사용자 오버프로비저닝 블록(USER_OP_BLOCK1) 및 제2 맵 블록(MAP_BLOCK2)에 추가적인 결함이 발생하면, 각 배드 블록들이 예비 블록으로 교체될 수 있다. 맵 오버프로비저닝 블록이 예비 블록으로 변경되면서 모든 맵 오버프로비저닝 블록이 배드 블록을 교체하는 데 사용될 수 있다. 모든 맵 오버프로비저닝 블록이 배드 블록을 교체하는 데 사용된 경우, 블록 관리자(48)는 더 이상 예비 블록의 수를 유지하지 않을 수 있다.
도 6은 본 발명의 일 실시예에 따른 메모리 시스템(110)에 포함된 블록 관리 정보(146)를 예시한다.
도 6을 참조하면, 블록 관리 정보(146)는 메모리(144)에 테이블 포맷(format)으로 저장될 수 있다. 블록 관리 정보(146)는 각 블록의 식별자(BLOCK)를 인덱스로 포함할 수 있다. 블록 관리 정보(146)는 각 블록별로 배드 블록(BAD)인지 여부, 추가 맵 오버프로비저닝 블록(MAP_OP_ADD)인지 여부 및 예비 블록(RSV_BAD)인지 여부를 나타내는 필드를 포함할 수 있다. 블록 관리 정보(146)는 총 배드 블록 수, 추가 맵 오버프로비저닝 블록 수 및 예비 블록 수 정보를 더 포함할 수 있다. 블록 관리자(48)는 블록 관리 정보(146)에 기초하여 맵 오버프로비저닝 블록들이 모두 예비 블록으로 변경되기 전까지는 예비 블록 수가 유지되도록 제어할 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템(110)의 동작 방법을 나타내는 흐름도이다.
메모리 시스템(110)의 최초 동작 시, 단계 S702에서 블록 관리자(48)는 메모리 장치(150)의 노멀 영역 및 여분 영역을 결정할 수 있다. 노멀 영역은 사용자 블록, 사용자 오버프로비저닝 블록, 맵 블록 및 맵 오버프로비저닝 블록을 포함할 수 있다. 블록 관리자(48)는 복수의 메모리 블록들 중 최대 배드 블록의 수와 초기 배드 블록의 수의 차에 해당하는 수의 메모리 블록들을 여분 영역으로 사용할 수 있다.
단계 S704에서, 블록 관리자(48)는 여분 영역을 추가 맵 오버프로비저닝 블록 및 예비 블록으로 나눌 수 있다. 일 실시예에서, 블록 관리자(48)는 여분 블록들 중 소정 개수의 블록들을 예비 블록으로 결정하고, 나머지 블록들을 추가 맵 오버프로비저닝 블록으로 결정할 수 있다. 블록 관리자(48)는 블록 관리 정보(146)를 갱신함으로써 복수의 메모리 블록들 중 배드 블록, 예비 블록 및 추가 맵 오버프로비저닝 블록이 각각 어느 블록들인지 나타내는 정보를 저장할 수 있다.
단계 S706에서, 블록 관리자(48)는 배드 블록이 발생하는지 여부를 감지할 수 있다. 실시예에 따라, 블록 관리자(48)는 리드 동작 또는 라이트 동작의 페일(fail)이 발생한 메모리 블록을 배드 블록으로 감지할 수 있다.
배드 블록이 발생하지 않으면(단계 S706에서, "NO"), 블록 관리자(48)는 배드 블록이 발생하는지 여부를 계속 감지할 수 있다.
배드 블록이 발생하면(단계 S706에서, "YES"), 단계 S708에서 블록 관리자(48)는 배드 블록을 예비 블록으로 교체할 수 있다. 블록 관리자(48)는 블록 관리 정보(146)를 갱신함으로써 새로 발생한 배드 블록이 어느 블록인지 나타낼 수 있다.
블록 관리자(48)는 발생한 배드 블록에 저장된 데이터의 논리 주소와 상기 예비 영역의 물리 주소 사이의 매핑을 수행할 수 있다. 블록 관리자(48)는 발생한 배드 블록에 저장된 데이터를 예비 블록으로 옮겨 저장할 수 있다. 맵 관리자(44)는 상기 매핑을 반영하는 맵 데이터를 맵 블록에 라이트하도록 블록 관리자(48)로 요청을 제공할 수 있다. 블록 관리자(48)는 맵 데이터를 관리하기 위해 노멀 영역의 맵 오버프로비저닝 영역 및 여분 영역의 추가 맵 오버프로비저닝 영역을 사용하여 맵 데이터의 가비지 콜렉션 동작을 수행할 수 있다.
단계 S710에서 블록 관리자(48)는 추가 맵 오버프로비저닝 영역에 빈 블록이 있는지 판단할 수 있다.
맵 오버프로비저닝 영역에 빈 블록이 있으면(단계 S710에서, "YES"), 단계 S714에서 블록 관리자(48)는 추가 맵 오버프로비저닝 영역의 빈 블록을 예비 블록으로 결정할 수 있다. 블록 관리자(48)는 블록 관리 정보(146)를 갱신할 수 있다.
맵 오버프로비저닝 영역에 빈 블록이 없으면(단계 S710에서, "NO"), 단계 S712에서 상태 관리자(42)는 유효 데이터가 저장되어있지 않은 추가 맵 오버프로비저닝 블록의 이레이즈 동작을 제어함으로써 추가 맵 오버프로비저닝 영역의 빈 블록을 생성할 수 있다. 단계 S714에서 블록 관리자(48)는 가비지 콜렉션 동작에 의해 생성된 빈 블록을 예비 블록으로 결정할 수 있다. 블록 관리자(48)는 블록 관리 정보(146)를 갱신함으로써 추가 맵 오버프로비저닝 블록 중 어느 블록이 예비 블록으로 변경되었는지 나타낼 수 있다.
본 발명의 일 실시예에 따른 메모리 시스템(110)은 여분 영역을 맵 데이터의 관리를 위한 추가 맵 오버프로비저닝 영역으로 사용함으로써 메모리 시스템(110)의 성능을 향상시킬 수 있다. 메모리 시스템(110)은 메모리 시스템(110)의 동작 중 발생하는 배드 블록을 예비 블록들 중 어느 하나로 교체함으로써 메모리 시스템(110)의 성능 및 신뢰성을 향상시킬 수 있다. 메모리 시스템(110)은 추가 맵 오버프로비저닝 영역을 예비 블록으로 결정함으로써 예비 블록의 수를 유지할 수 있다. 메모리 시스템(110)은 추가 맵 오버프로비저닝 영역을 예비 블록으로 결정함으로써 예비 블록의 수를 유지할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110: 메모리 시스템
130: 컨트롤러
150: 메모리 장치

Claims (20)

  1. 메모리 시스템에 있어서,
    복수의 메모리 블록을 포함하는 메모리 장치; 및
    상기 메모리 장치의 동작을 제어하고, 상기 복수의 메모리 블록을 노멀 영역 및 여분 영역에 각각 할당하는 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하고, 상기 여분 영역을 상기 노멀 영역에 할당되는 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하여 상기 복수의 메모리 블록을 관리하는
    메모리 시스템.
  2. 제1항에 있어서,
    상기 컨트롤러는
    상기 발생된 배드 블록을 상기 예비 영역에 할당된 메모리 블록 중 특정 메모리 블록으로 교체하고, 상기 추가 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 어느 하나 이상의 메모리 블록을 상기 예비 영역에 할당되도록 변경하는
    메모리 시스템.
  3. 제2항에 있어서,
    상기 컨트롤러는
    상기 특정 메모리 블록의 개수를 상기 발생된 배드 블록의 개수와 동일하게 상기 교체하는
    메모리 시스템.
  4. 제3항에 있어서,
    상기 컨트롤러는
    상기 어느 하나 이상의 메모리 블록의 개수를 상기 특정 메모리 블록의 개수와 동일하게 상기 변경하는
    메모리 시스템.
  5. 제1항에 있어서,
    상기 메모리 장치는 초기 배드 블록을 더 포함하고,
    상기 컨트롤러는
    상기 여분 영역에 할당된 메모리 블록의 개수를 상기 메모리 장치의 최대 배드 블록 수와 상기 초기 배드 블록 수의 차(difference)에 해당하도록 상기 할당하는
    메모리 시스템.
  6. 제1항에 있어서,
    상기 컨트롤러는
    상기 추가 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 빈 메모리 블록이 없는 경우, 상기 추가 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 유효 데이터가 저장되어있지 않은 메모리 블록에 이레이즈 동작을 수행하도록 상기 메모리 장치를 제어하여 상기 빈 메모리 블록을 확보하는
    메모리 시스템.
  7. 제1항에 있어서,
    상기 컨트롤러는
    상기 맵 데이터를 관리하기 위해 상기 맵 영역에 할당된 메모리 블록 중 희생 메모리 블록의 유효 맵 데이터를 내부 메모리로 로드하고, 상기 로드된 맵 데이터를 상기 맵 영역에 할당된 메모리 블록 중 타겟 메모리 블록에 라이트하며, 상기 희생 메모리 블록을 이레이즈함으로써 상기 맵 데이터의 가비지 콜렉션 동작을 수행하도록 상기 메모리 장치를 제어하는
    메모리 시스템.
  8. 제2항에 있어서,
    상기 컨트롤러는
    상기 발생된 배드 블록에 저장된 데이터의 논리 주소와 상기 특정 메모리 블록의 물리 주소를 제1 매핑하고, 상기 발생된 배드 블록에 저장된 데이터를 상기 특정 메모리 블록으로 옮겨 저장하도록 상기 메모리 장치를 제어하여 상기 발생된 배드 블록을 상기 특정 메모리 블록으로 교체하는
    메모리 시스템.
  9. 제2항에 있어서,
    상기 컨트롤러는
    상기 복수의 메모리 블록 각각이 상기 발생된 배드 블록인지 여부, 상기 복수의 메모리 블록 중 어느 메모리 블록이 상기 예비 영역 또는 상기 추가 맵 오버프로비저닝 영역에 할당되는지 여부를 나타내는 블록 관리 정보를 저장하는 메모리를 포함하는
    메모리 시스템.
  10. 제9항에 있어서,
    상기 컨트롤러는
    상기 발생된 배드 블록을 상기 특정 메모리 블록으로 교체하고 상기 추가 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 어느 하나 이상의 메모리 블록을 상기 예비 영역에 할당되도록 변경하는 경우, 상기 복수의 메모리 블록 중 상기 발생된 배드 블록, 상기 특정 메모리 블록 및 상기 어느 하나의 메모리 블록에 대한 상기 블록 관리 정보를 갱신하는
    메모리 시스템.
  11. 제1항에 있어서,
    상기 컨트롤러는
    상기 노멀 영역에 할당된 메모리 블록 중 리드 동작 또는 라이트 동작이 실패하는 메모리 블록을 상기 발생된 배드 블록으로 지정하는
    메모리 시스템.
  12. 복수의 메모리 블록을 포함하는 메모리 장치를 제어하는 컨트롤러에 있어서,
    논리 주소와 물리 주소 사이의 매핑을 수행하는 맵 관리자; 및
    상기 복수의 메모리 블록 전체의 수와 최대 배드 블록 수의 차에 해당하는 수의 메모리 블록을 노멀 영역으로 할당하고, 상기 최대 배드 블록 수와 초기 배드 블록 수의 차에 해당하는 수의 메모리 블록을 여분 영역으로 할당하고, 상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하고, 상기 여분 영역을 상기 노멀 영역에 할당된 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하여 상기 복수의 메모리 블록을 관리하는 블록 관리자
    를 포함하는 컨트롤러.
  13. 제12항에 있어서,
    상기 블록 관리자는
    상기 발생된 배드 블록을 상기 예비 영역에 할당된 하나의 메모리 블록 중 특정 메모리 블록으로 교체하고, 상기 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 어느 하나 이상의 메모리 블록을 상기 예비 영역에 할당되도록 변경하는
    컨트롤러.
  14. 제12항에 있어서,
    상기 추가 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 유효 데이터를 포함하지 않는 메모리 블록에 이레이즈 동작을 더 수행하도록 상기 메모리 장치를 제어하여 상기 추가 맵 오버프로비저닝 영역의 빈 메모리 블록을 확보하는 상태 관리자를 더 포함하고,
    상기 블록 관리자는
    상기 빈 메모리 블록 하나를 예비 영역의 메모리 블록으로 변경하는
    컨트롤러.
  15. 제14항에 있어서,
    상기 상태 관리자는
    맵 데이터를 관리하기 위해 상기 맵 영역에 할당된 메모리 블록 중 희생 메모리 블록의 유효 맵 데이터를 내부 메모리로 로드하고, 상기 로드된 맵 데이터를 상기 맵 영역에 할당된 메모리 블록 중 타겟 메모리 블록에 라이트하며, 상기 희생 메모리 블록을 이레이즈함으로써 상기 맵 데이터의 가비지 콜렉션 동작을 수행하도록 상기 메모리 장치를 제어하는
    컨트롤러.
  16. 제13항에 있어서,
    상기 블록 관리자는
    상기 발생된 배드 블록에 저장된 데이터의 논리 주소와 상기 특정 메모리 블록의 물리 주소를 제1 매핑하도록 상기 맵 관리자를 제어하고, 상기 발생된 배드 블록에 저장된 데이터를 상기 특정 메모리 블록으로 옮겨 저장하도록 상기 메모리 장치를 제어하여 상기 발생된 배드 블록을 상기 특정 메모리 블록으로 교체하는
    컨트롤러.
  17. 제13항에 있어서,
    상기 복수의 메모리 블록 각각이 상기 발생된 배드 블록인지, 상기 복수의 메모리 블록 중 어느 메모리 블록이 상기 예비 영역 또는 상기 추가 맵 오버프로비저닝 영역에 할당되는지 여부를 나타내는 블록 관리 정보를 저장하는 메모리를 포함하는
    컨트롤러.
  18. 제17항에 있어서,
    상기 블록 관리자는
    상기 발생된 배드 블록을 상기 특정 메모리 블록으로 교체하고 상기 추가 맵 오버프로비저닝 영역에 할당된 메모리 블록 중 어느 하나 이상의 메모리 블록을 상기 예비 영역에 할당되도록 변경하는 경우, 상기 복수의 메모리 블록 중 상기 발생된 배드 블록, 상기 특정 메모리 블록 및 상기 어느 하나의 메모리 블록에 대한 상기 블록 관리 정보를 갱신하는
    컨트롤러.
  19. 제12항에 있어서,
    상기 블록 관리자는
    상기 노멀 영역에 할당된 메모리 블록 중 리드 동작 또는 라이트 동작이 실패하는 메모리 블록을 상기 발생된 배드 블록으로 지정하는
    컨트롤러.
  20. 복수의 메모리 블록을 포함하는 메모리 장치를 제어하는 컨트롤러의 동작 방법에 있어서,
    상기 복수의 메모리 블록 전체의 수와 최대 배드 블록 수의 차에 해당하는 수의 메모리 블록을 노멀 영역으로 할당하고, 상기 최대 배드 블록 수와 초기 배드 블록 수의 차에 해당하는 수의 메모리 블록을 여분 영역으로 할당하는 단계;
    상기 노멀 영역을 사용자 데이터가 저장되는 사용자 영역, 사용자 데이터 관리를 위한 사용자 오버프로비저닝 영역, 맵 데이터가 저장되는 맵 영역 및 상기 맵 데이터 관리를 위한 맵 오버프로비저닝 영역으로 구분하는 단계; 및
    상기 여분 영역을 상기 노멀 영역에 할당된 메모리 블록 중 배드 블록이 발생할 때마다 상기 발생된 배드 블록을 교체하기 위한 예비 영역 및 추가 맵 오버프로비저닝 영역으로 구분하는 단계
    를 포함하는 동작 방법.

KR1020190058121A 2019-05-17 2019-05-17 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법 KR20200132495A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190058121A KR20200132495A (ko) 2019-05-17 2019-05-17 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법
CN201911355961.3A CN111949206A (zh) 2019-05-17 2019-12-25 存储器系统、控制器以及控制器的操作方法
US16/730,579 US11150819B2 (en) 2019-05-17 2019-12-30 Controller for allocating memory blocks, operation method of the controller, and memory system including the controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190058121A KR20200132495A (ko) 2019-05-17 2019-05-17 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200132495A true KR20200132495A (ko) 2020-11-25

Family

ID=73228420

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190058121A KR20200132495A (ko) 2019-05-17 2019-05-17 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법

Country Status (3)

Country Link
US (1) US11150819B2 (ko)
KR (1) KR20200132495A (ko)
CN (1) CN111949206A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220043588A1 (en) * 2020-08-06 2022-02-10 Micron Technology, Inc. Localized memory traffic control for high-speed memory devices
CN113093993B (zh) * 2021-03-25 2023-08-22 深圳大普微电子科技有限公司 一种闪存空间动态分配方法及固态硬盘
KR20230032610A (ko) * 2021-08-31 2023-03-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN117785021A (zh) * 2022-09-29 2024-03-29 成都华为技术有限公司 一种硬盘管理方法、硬盘控制方法及相关设备
KR20240114927A (ko) * 2023-01-18 2024-07-25 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN118170328B (zh) * 2024-05-15 2024-07-26 四川云海芯科微电子科技有限公司 一种固态硬盘的坏块管理方法、装置及计算机程序产品

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5373382B2 (ja) * 2008-12-22 2013-12-18 株式会社メガチップス メモリシステムおよびコンピュータシステム
KR101280181B1 (ko) 2010-05-18 2013-07-05 삼성전자주식회사 메모리 시스템 및 메모리 시스템에서 플래쉬 변환 레이어의 예비 영역 관리 방법
KR101467939B1 (ko) * 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
KR102365269B1 (ko) 2015-04-13 2022-02-22 삼성전자주식회사 데이터 스토리지 및 그것의 동작 방법
KR102060736B1 (ko) * 2015-11-27 2020-02-11 후아웨이 테크놀러지 컴퍼니 리미티드 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
US9646721B1 (en) * 2016-03-31 2017-05-09 EMC IP Holding Company LLC Solid state drive bad block management
KR102469539B1 (ko) * 2017-12-22 2022-11-22 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 저장 장치

Also Published As

Publication number Publication date
US11150819B2 (en) 2021-10-19
US20200363965A1 (en) 2020-11-19
CN111949206A (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
US11221914B2 (en) Memory system for controlling nonvolatile memory
US11086537B2 (en) Method and system to perform urgency level garbage collection based on write history of memory blocks
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
KR102533072B1 (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
US10817418B2 (en) Apparatus and method for checking valid data in memory system
US10963160B2 (en) Apparatus and method for checking valid data in block capable of storing large volume data in memory system
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
CN110968522B (zh) 存储器系统及其操作方法、包括存储器系统的数据库系统
KR20200122875A (ko) 컨트롤러 및 그 동작 방법
KR20190040614A (ko) 메모리 시스템 및 그의 동작방법
KR20200122522A (ko) 컨트롤러 및 그 동작 방법
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200122685A (ko) 메모리 시스템 내에서 서로 다른 종류의 데이터를 처리하기 위한 장치 및 방법
US10942848B2 (en) Apparatus and method for checking valid data in memory system
CN113220216A (zh) 数据存储设备及其操作方法
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
CN115458013A (zh) 存储装置及其操作方法
KR20190102790A (ko) 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
US11709781B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
KR20220130526A (ko) 메모리 시스템 및 그 동작 방법
US11657000B2 (en) Controller and memory system including the same
US12141074B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
KR20200125262A (ko) 메모리 시스템, 데이터 시스템 및 그 동작방법
US20220164119A1 (en) Controller, and memory system and data processing system including the same