KR20190056211A - 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 - Google Patents

가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20190056211A
KR20190056211A KR1020170153405A KR20170153405A KR20190056211A KR 20190056211 A KR20190056211 A KR 20190056211A KR 1020170153405 A KR1020170153405 A KR 1020170153405A KR 20170153405 A KR20170153405 A KR 20170153405A KR 20190056211 A KR20190056211 A KR 20190056211A
Authority
KR
South Korea
Prior art keywords
memory blocks
stream
garbage collection
memory
data
Prior art date
Application number
KR1020170153405A
Other languages
English (en)
Other versions
KR102457400B1 (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 KR1020170153405A priority Critical patent/KR102457400B1/ko
Priority to US16/110,088 priority patent/US10671287B2/en
Priority to CN201811358058.8A priority patent/CN109800177B/zh
Publication of KR20190056211A publication Critical patent/KR20190056211A/ko
Application granted granted Critical
Publication of KR102457400B1 publication Critical patent/KR102457400B1/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/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/0608Saving storage space on 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/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/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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/7205Cleaning, compaction, garbage collection, erase control

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

가비지 컬렉션 방법에서, 저장 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하며, 복수의 메모리 블록들에 기입되는 복수의 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입하는 멀티 스트림(multi-stream) 방식으로 동작한다. 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정한다. 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행한다.

Description

가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템{METHOD OF PERFORMING GARBAGE COLLECTION, STORAGE DEVICE PERFORMING THE SAME AND COMPUTING SYSTEM INCLUDING THE SAME}
본 발명은 저장 장치에 관한 것으로서, 더욱 상세하게는 가비지 컬렉션 방법, 상기 가비지 컬렉션 방법을 수행하는 저장 장치 및 상기 저장 장치를 포함하는 컴퓨팅 시스템에 관한 것이다.
최근에는 메모리 장치를 이용하는 솔리드 스테이트 드라이브(solid state drive; SSD)와 같은 저장 장치가 널리 사용되고 있다. 상기와 같은 저장 장치는 기계적인 구동부가 없어 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 상기와 같은 저장 장치는 비휘발성 메모리 장치를 포함할 수 있다. 플래시 메모리와 같은 비휘발성 메모리 장치는, 데이터가 이미 기입된 위치에 다른 데이터를 기입하기 위해서는 해당 영역에 대한 소거 동작이 반드시 선행되어야 하며, 데이터 기입은 페이지 단위로 수행되나, 소거 동작은 이보다 큰 블록 단위로 수행되는 특징이 있다. 플래시 메모리에 데이터가 계속적으로 기입됨에 따라, 유효한 데이터가 플래시 메모리의 전체에 걸쳐서 산재할 수 있고, 데이터 기입이 가능한 저장 공간, 즉 프리(free) 메모리 블록을 확보하기 위해서는, 적어도 하나의 메모리 블록의 유효한 페이지를 다른 메모리 블록으로 이동하고 상기 메모리 블록에 대한 소거 동작을 수행하는 가비지 컬렉션(garbage collection)을 수행할 필요가 있다.
본 발명의 일 목적은 데이터를 효율적으로 구분/관리할 수 있는 가비지 컬렉션 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 가비지 컬렉션 방법을 수행하여 데이터를 효율적으로 구분/관리할 수 있는 저장 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 상기 저장 장치를 포함하는 컴퓨팅 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가비지 컬렉션 방법에서, 저장 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하며, 상기 복수의 메모리 블록들에 기입되는 복수의 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입하는 멀티 스트림(multi-stream) 방식으로 동작한다. 상기 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정한다. 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저장 장치는 비휘발성 메모리 장치 및 스토리지 컨트롤러를 포함한다. 상기 비휘발성 메모리 장치는 복수의 메모리 블록들을 포함한다. 상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들에 기입되는 복수의 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입하는 멀티 스트림(multi-stream) 방식으로 동작하도록 상기 비휘발성 메모리 장치를 제어한다. 상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정하며, 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행한다.
상기 또 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 컴퓨팅 시스템은 호스트 및 저장 장치를 포함한다. 상기 호스트는 데이터 기입을 요청하는 기입 커맨드 및 기입하고자 하는 기입 데이터들을 발생한다. 상기 저장 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하고, 상기 호스트로부터 상기 기입 커맨드 및 상기 기입 데이터들을 수신하여 상기 기입 데이터들을 상기 복수의 메모리 블록들 중 적어도 하나에 저장하고, 상기 기입 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 기입 데이터들을 저장하는 멀티 스트림(multi-stream) 방식으로 동작하며, 상기 복수의 메모리 블록들 중 동일한 스트림의 기입 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정하고, 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행한다.
상기와 같은 본 발명의 실시예들에 따른 가비지 컬렉션 방법 및 이를 수행하는 저장 장치는, 스트림을 고려하여, 즉 동일한 스트림의 데이터들을 저장하고 있는 메모리 블록들을 대상으로 하여 가비지 컬렉션 동작을 수행할 수 있다. 예를 들어, 동일한 스트림의 데이터들만을 저장하는 메모리 블록들을 희생 메모리 블록들로 선정하여 가비지 컬렉션 동작을 수행하며, 이와 다른 스트림의 데이터들을 저장하는 메모리 블록은 유효 페이지들의 개수가 상대적으로 적더라도 희생 메모리 블록으로 선정되지 않고 제외될 수 있다. 따라서, 가비지 컬렉션 동작이 수행된 이후에도 메모리 블록 단위로 동일한 스트림의 데이터들을 구분하여 저장할 수 있으며, 저장 장치의 성능 및 내구성을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 가비지 컬렉션 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 가비지 컬렉션 방법의 일 예를 설명하기 위한 도면이다.
도 3은 도 1의 희생 메모리 블록들을 선정하는 단계의 일 예를 나타내는 순서도이다.
도 4는 본 발명의 실시예들에 따른 가비지 컬렉션 방법의 다른 예를 설명하기 위한 도면이다.
도 5는 본 발명의 실시예들에 따른 가비지 컬렉션 방법을 나타내는 순서도이다.
도 6은 도 5의 복수의 메모리 블록들과 복수의 스트림 ID들의 관계를 스트림 맵핑 테이블에 기록하는 단계의 일 예를 나타내는 순서도이다.
도 7은 도 5의 스트림 맵핑 테이블의 일 예를 나타내는 표이다.
도 8은 도 5의 스트림별 가비지 컬렉션 기대 비용 테이블을 관리하는 단계의 일 예를 나타내는 순서도이다.
도 9는 도 5의 스트림별 가비지 컬렉션 기대 비용 테이블의 일 예를 나타내는 표이다.
도 10은 본 발명의 실시예들에 따른 저장 장치를 나타내는 블록도이다.
도 11은 도 10의 저장 장치에 포함되는 비휘발성 메모리 장치의 일 예를 나타내는 블록도이다.
도 12a 및 12b는 도 10의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이의 예를 나타내는 회로도들이다.
도 13은 도 1의 저장 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 14는 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 가비지 컬렉션 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 가비지 컬렉션(garbage collection) 방법은, 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하고 멀티 스트림(multi-stream) 방식으로 동작하는 저장 장치에 의해 수행된다. 상기 멀티 스트림 방식은 상기 복수의 메모리 블록들에 기입되는 복수의 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입하는 방식을 나타낸다. 다시 말하면, 상기 저장 장치에 포함되는 상기 하나의 메모리 블록은 동일한 스트림의 데이터들만을 저장한다.
상기 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정하고(단계 S100), 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행한다(단계 S200). 상기 가비지 컬렉션 동작은 상기 저장 장치 내에서 프리(free) 메모리 블록을 확보하기 위한 동작을 나타낼 수 있다. 상기 희생 메모리 블록은 상기 가비지 컬렉션 동작의 대상이 되는 메모리 블록이며, 소스(source) 메모리 블록으로 부를 수도 있다.
본 발명의 실시예들에 따른 가비지 컬렉션 방법에서는, 상기 멀티 스트림 방식으로 동작하는 저장 장치에서 동일한 스트림의 데이터들을 저장하고 있는 메모리 블록들을 대상으로 하여 상기 가비지 컬렉션 동작을 수행할 수 있으며, 따라서 상기 가비지 컬렉션 동작이 수행된 이후에도 메모리 블록 단위로 동일한 스트림의 데이터들을 구분하여 저장할 수 있다.
도 2는 본 발명의 실시예들에 따른 가비지 컬렉션 방법의 일 예를 설명하기 위한 도면이다.
도 2 및 이후의 도면에서, "BEFORE_GC"는 상기 가비지 컬렉션 동작이 수행되기 이전에 메모리 블록들의 데이터 저장 상태를 나타내며, "AFTER_GC"는 상기 가비지 컬렉션 동작이 수행된 이후에 메모리 블록들의 데이터 저장 상태를 나타낸다.
도 1 및 2를 참조하면, 상기 저장 장치에 포함되는 상기 비휘발성 메모리 장치는 복수의 메모리 블록들(DST_BLK1, BLK11, BLK12, BLK13, BLK14)을 포함하고, 각 메모리 블록은 복수의 페이지들을 포함한다. 복수의 메모리 블록들(DST_BLK1, BLK11, BLK12, BLK13, BLK14)은 서로 동일한 크기를 가지고 동일한 개수의 페이지들을 포함하며, 상기 복수의 페이지들은 서로 동일한 크기를 가지고 동일한 개수의 비휘발성 메모리 셀들을 포함할 수 있다. 상기 비휘발성 메모리 장치는 페이지 단위로 데이터 기입 및 독출 동작을 수행하고, 메모리 블록 단위로 데이터 소거 동작을 수행할 수 있다.
상기 가비지 컬렉션 동작이 수행되기 이전에, 메모리 블록(DST_BLK1)은 프리 페이지들(FP11, FP12, FP13, FP14)을 포함하고, 메모리 블록(BLK11)은 유효 페이지들(VP11, VP12) 및 무효 페이지들(IVP11, IVP12)을 포함하고, 메모리 블록(BLK12)은 유효 페이지들(VP13, VP14) 및 무효 페이지들(IVP13, IVP14)을 포함하고, 메모리 블록(BLK13)은 유효 페이지들(VP15, VP16, VP17) 및 무효 페이지(IVP15)를 포함하며, 메모리 블록(BLK14)은 유효 페이지들(VP18, VP19, VP1A) 및 무효 페이지(IVP16)를 포함할 수 있다. 다시 말하면, 메모리 블록(DST_BLK1)은 프리 메모리 블록이고, 메모리 블록들(BLK11, BLK12, BLK13, BLK14)은 사용된(즉, 이미 데이터가 기입 또는 저장되어 있는) 메모리 블록일 수 있다.
또한, 상기 멀티 스트림 방식에 기초하여, 각 메모리 블록은 동일한 스트림의 데이터들을 저장할 수 있다. 예를 들어, 메모리 블록들(BLK11, BLK13, BLK14)에 포함되는 유효 페이지들(VP11, VP12, VP15, VP16, VP17, VP18, VP19, VP1A)은 제1 스트림의 데이터들을 저장하고, 메모리 블록(BLK12)에 포함되는 유효 페이지들(VP13, VP14)은 상기 제1 스트림과 다른 제2 스트림의 데이터들을 저장할 수 있다. 도 2에서, 상기 제1 스트림의 데이터들을 저장하고 있는 유효 페이지들(VP11, VP12, VP15, VP16, VP17, VP18, VP19, VP1A)과 상기 제2 스트림의 데이터들을 저장하고 있는 유효 페이지들(VP13, VP14)을 서로 다른 빗금으로 구분하였다.
일 실시예에서, 액세스 및 업데이트 빈도에 따라 데이터의 스트림들이 구분될 수 있다. 예를 들어, 상기 제1 스트림의 데이터들은 상대적으로 자주 액세스 및 업데이트되는 핫 데이터(hot data) 또는 다이나믹 데이터(dynamic data)일 수 있고, 상기 제2 스트림의 데이터들은 상대적으로 드물게 액세스 및 업데이트되는 콜드 데이터(cold data) 또는 스태틱 데이터(static data)일 수 있다. 다른 실시예에서, 그 밖에 다양한 기준에 따라 데이터의 스트림들이 구분될 수 있다.
상기 가비지 컬렉션 동작을 수행하고자 하는 경우에, 동일한 스트림의 데이터들을 저장하고 있는 메모리 블록들을 상기 희생 메모리 블록들로 선정한다(단계 S100). 예를 들어, 메모리 블록들(BLK11, BLK12)이 상기 희생 메모리 블록들로 선정되지 않으며, 메모리 블록들(BLK11, BLK13, BLK14)이 상기 희생 메모리 블록들로 선정될 수 있다.
상기 희생 메모리 블록들로 선정된 메모리 블록들(BLK11, BLK13, BLK14)에 대해 상기 가비지 컬렉션 동작을 수행한다(단계 S200). 예를 들어, 메모리 블록(DST_BLK1)이 상기 가비지 컬렉션 동작을 위한 목적지(destination) 메모리 블록으로 사용될 수 있다.
구체적으로, 메모리 블록(BLK11)에 포함되는 유효 페이지들(VP11, VP12)을 메모리 블록(DST_BLK1)에 복사하고, 메모리 블록(BLK11)에 대한 데이터 소거 동작을 수행하여 메모리 블록(BLK11)을 프리 메모리 블록으로 변경할 수 있다. 메모리 블록들(BLK13, BLK14)에 대해서도 유사한 동작을 수행하며, 이 때 메모리 블록(BLK11)이 추가적인 목적지 메모리 블록으로 사용될 수 있다. 메모리 블록(BLK13)에 포함되는 유효 페이지들(VP15, VP16)을 메모리 블록(DST_BLK1)에 복사하고, 메모리 블록(BLK13)에 포함되는 유효 페이지(VP17)를 메모리 블록(BLK11)에 복사하며, 메모리 블록(BLK14)에 포함되는 유효 페이지들(VP18, VP19, VP1A)을 메모리 블록(BLK11)에 복사할 수 있다. 메모리 블록들(BLK13, BLK14)에 대한 데이터 소거 동작을 수행하여 메모리 블록들(BLK13, BLK14)을 프리 메모리 블록들로 변경할 수 있다.
결과적으로, 상기 가비지 컬렉션 동작이 수행된 이후에, 메모리 블록(DST_BLK1)은 유효 페이지들(VP11, VP12, VP15, VP16)을 포함하고, 메모리 블록(BLK11)은 유효 페이지들(VP17, VP18, VP19, VP1A)을 포함하고, 메모리 블록(BLK13)은 프리 페이지들(FP15, FP16, FP17, FP18)을 포함하며, 메모리 블록(BLK14)은 프리 페이지들(FP19, FP1A, FP1B, FP1C)을 포함할 수 있다. 한편, 도시하지는 않았으나, 메모리 블록(BLK12)의 데이터 저장 상태는 상기 가비지 컬렉션 동작이 수행되기 이전과 이후에 동일할 수 있다. 상기 가비지 컬렉션 동작이 수행되기 이전과 비교하였을 때, 상기 가비지 컬렉션 동작이 수행된 이후에는 하나의 프리 메모리 블록이 추가될 수 있다.
또한, 상기 가비지 컬렉션 동작이 수행되기 이전과 동일하게, 상기 가비지 컬렉션 동작이 수행된 이후에도 각 메모리 블록은 동일한 스트림의 데이터들을 저장할 수 있다. 예를 들어, 메모리 블록들(DST_BLK1, BLK11)에 포함되는 유효 페이지들(VP11, VP12, VP15, VP16, VP17, VP18, VP19, VP1A)은 상기 제1 스트림의 데이터들을 저장할 수 있다.
일반적으로, 특정한 종류의 데이터들은 동일 또는 유사한 수명(lifetime 또는 lifecycle)을 가지는 경향이 있고, 동일 또는 유사한 시점에서 무효화(invalidate)되는 경향이 있다. 이 때, 상기 멀티 스트림 방식을 활용하는 경우에, 동일 또는 유사한 수명 및 무효화 경향을 가지는 데이터들을 동일한 스트림으로 설정하고 물리적으로 동일한 메모리 블록에 저장하여, 동일 시간 대에 유효화 되었다가 한 번에 무효화 되도록 유도함으로써, 저장 장치의 성능 및 내구성을 향상시킬 수 있다. 이러한 멀티 스트림 방식은 스트림 지시(stream directives) 방식으로 부를 수도 있으며, 표준화되어 있다.
상기 멀티 스트림 방식으로 동작하는 종래의 저장 장치는, 가비지 컬렉션 동작이 발생하는 상황을 고려하지 않고 있어, 만약 상기 가비지 컬렉션 동작이 수행된다면 서로 다른 스트림의 데이터들이 동일한 메모리 블록에 혼재하는 상황을 초래하는 문제점이 있었다. 예를 들어, 종래의 저장 장치는 상기 가비지 컬렉션 동작의 대상이 되는 희생 메모리 블록들을 선정할 때, 유효 페이지들의 개수가 가장 적은 메모리 블록들을 상기 희생 메모리 블록들로 선정하는 탐욕(greedy) 알고리즘을 사용하였다. 예를 들어, 도 2에 도시된 상기 가비지 컬렉션 동작이 수행되기 이전의 상태에서, 종래의 저장 장치는 스트림을 고려하지 않고 유효 페이지들의 개수가 가장 적은 메모리 블록들(BLK11, BLK12)을 희생 메모리 블록들로 선정하여 상기 가비지 컬렉션 동작을 수행하였으며, 메모리 블록들(BLK11, BLK12)에 대해 상기 가비지 컬렉션 동작이 수행되면 서로 다른 스트림(예를 들어, 상기 제1 및 제2 스트림들)의 데이터들이 하나의 메모리 블록(예를 들어, DST_BLK1)에 포함될 수 있다.
본 발명의 실시예들에 따른 가비지 컬렉션 방법에서는, 스트림을 고려하여, 즉 동일한 스트림의 데이터들을 저장하고 있는 메모리 블록들을 대상으로 하여 상기 가비지 컬렉션 동작을 수행할 수 있다. 예를 들어, 도 2에 도시된 것처럼, 상기 제1 스트림의 데이터들만을 저장하는 메모리 블록들(BLK11, BLK13, BLK14)을 상기 희생 메모리 블록들로 선정하여 상기 가비지 컬렉션 동작을 수행하며, 상기 제1 스트림과 다른 상기 제2 스트림의 데이터들을 저장하는 메모리 블록(BLK12)은 유효 페이지들의 개수가 상대적으로 적더라도 상기 희생 메모리 블록으로 선정되지 않고 제외될 수 있다. 따라서, 상기 가비지 컬렉션 동작이 수행된 이후에도 메모리 블록 단위로 동일한 스트림의 데이터들을 구분하여 저장할 수 있으며, 저장 장치의 성능 및 내구성을 더욱 향상시킬 수 있다.
도 3은 도 1의 희생 메모리 블록들을 선정하는 단계의 일 예를 나타내는 순서도이다.
도 1 및 3을 참조하면, 상기 동일한 스트림의 데이터들을 저장하고 있는 상기 적어도 두 개의 메모리 블록들을 상기 희생 메모리 블록들로 선정하는데 있어서(단계 S100), 가비지 컬렉션 기대 비용을 산출하고 상기 산출된 가비지 컬렉션 기대 비용에 기초하여 상기 희생 메모리 블록들을 선정할 수 있다.
구체적으로, 제1 메모리 블록들에 저장된 제1 스트림의 데이터들에 대한 제1 가비지 컬렉션 기대 비용을 산출할 수 있고(단계 S110), 제2 메모리 블록들에 저장되고 상기 제1 스트림과 다른 제2 스트림의 데이터들에 대한 제2 가비지 컬렉션 기대 비용을 산출할 수 있다(단계 S120). 상기 제1 가비지 컬렉션 기대 비용 및 상기 제2 가비지 컬렉션 기대 비용에 기초하여 상기 제1 메모리 블록들 및 상기 제2 메모리 블록들 중 하나를 상기 희생 메모리 블록들로 결정할 수 있다(단계 S130).
일 실시예에서, 상기 제1 가비지 컬렉션 기대 비용이 상기 제2 가비지 컬렉션 기대 비용보다 낮은 경우에, 상기 제1 메모리 블록들이 상기 희생 메모리 블록들로 결정되고, 상기 제2 가비지 컬렉션 기대 비용이 상기 제1 가비지 컬렉션 기대 비용보다 낮은 경우에, 상기 제2 메모리 블록들이 상기 희생 메모리 블록들로 결정될 수 있다. 다시 말하면, 가비지 컬렉션 기대 비용이 상대적으로 낮은 스트림에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정할 수 있다.
도 4는 본 발명의 실시예들에 따른 가비지 컬렉션 방법의 다른 예를 설명하기 위한 도면이다.
도 1, 3 및 4를 참조하면, 상기 저장 장치에 포함되는 상기 비휘발성 메모리 장치는 복수의 메모리 블록들(DST_BLK2, BLK21, BLK22, BLK23, BLK24, BLK25)을 포함하고, 각 메모리 블록은 복수의 페이지들을 포함한다.
상기 가비지 컬렉션 동작이 수행되기 이전에, 메모리 블록(DST_BLK2)은 프리 페이지들(FP21, FP22, FP23, FP24)을 포함하고, 메모리 블록(BLK21)은 유효 페이지들(VP21, VP22) 및 무효 페이지들(IVP21, IVP22)을 포함하고, 메모리 블록(BLK22)은 유효 페이지들(VP23, VP24) 및 무효 페이지들(IVP23, IVP24)을 포함하고, 메모리 블록(BLK23)은 유효 페이지들(VP25, VP26, VP27) 및 무효 페이지(IVP25)를 포함하고, 메모리 블록(BLK24)은 유효 페이지들(VP28, VP29, VP2A) 및 무효 페이지(IVP26)를 포함하며, 메모리 블록(BLK25)은 유효 페이지들(VP2B, VP2C) 및 무효 페이지들(IVP27, IVP28)을 포함할 수 있다. 또한, 상기 멀티 스트림 방식에 기초하여, 메모리 블록들(BLK21, BLK23, BLK24)에 포함되는 유효 페이지들(VP21, VP22, VP25, VP26, VP27, VP28, VP29, VP2A)은 제1 스트림의 데이터들을 저장하고, 메모리 블록들(BLK22, BLK25)에 포함되는 유효 페이지들(VP23, VP24, VP2B, VP2C)은 상기 제1 스트림과 다른 제2 스트림의 데이터들을 저장할 수 있다.
도 2의 실시예와 다르게, 도 4의 실시예에서는 상기 제1 스트림의 데이터들을 저장하고 있는 메모리 블록들(BLK21, BLK23, BLK24)에 대해 상기 가비지 컬렉션 동작이 수행될 수도 있고, 상기 제2 스트림의 데이터들을 저장하고 있는 메모리 블록들(BLK22, BLK25)에 대해 상기 가비지 컬렉션 동작이 수행될 수도 있는 상황이다. 이 경우, 도 3을 참조하여 상술한 상기 가비지 컬렉션 기대 비용에 기초하여, 제1 그룹의 메모리 블록들(BLK21, BLK23, BLK24) 및 제2 그룹의 메모리 블록들(BLK22, BLK25) 중 하나를 상기 희생 메모리 블록들로 선정할 수 있다.
상기 가비지 컬렉션 기대 비용은 동일한 그룹의 메모리 블록들에 포함되는 유효 페이지들의 개수에 기초하여 산출될 수 있다. 일 실시예에서, 상기 가비지 컬렉션 기대 비용은 상기 유효 페이지들의 개수의 총합일 수 있다. 다른 실시예에서, 상기 가비지 컬렉션 기대 비용은 상기 유효 페이지들의 비율의 총합, 즉 유효 페이지들의 개수의 총합을 하나의 메모리 블록에 포함되는 페이지들의 개수로 나눈 값일 수 있다.
구체적으로, 상기 제1 그룹의 메모리 블록들(BLK21, BLK23, BLK24)에 저장된 상기 제1 스트림의 데이터들에 대한 상기 제1 가비지 컬렉션 기대 비용을 연산할 수 있다(단계 S110). 예를 들어, 상기 가비지 컬렉션 기대 비용이 상기 유효 페이지들의 개수의 총합으로 표현되는 경우에, 상기 제1 가비지 컬렉션 기대 비용은 유효 페이지들(VP21, VP22, VP25, VP26, VP27, VP28, VP29, VP2A)의 개수의 총합인 8일 수 있다. 다른 예에서, 상기 가비지 컬렉션 기대 비용이 상기 유효 페이지들의 비율의 총합으로 표현되는 경우에, 하나의 메모리 블록이 네 개의 페이지들을 포함하고 있으므로, 상기 제1 가비지 컬렉션 기대 비용은 유효 페이지들(VP21, VP22, VP25, VP26, VP27, VP28, VP29, VP2A)의 개수의 총합을 하나의 메모리 블록에 포함되는 페이지들의 개수로 나눈 2 또는 200%일 수 있다.
이와 유사하게, 상기 제2 그룹의 메모리 블록들(BLK22, BLK25)에 저장된 상기 제2 스트림의 데이터들에 대한 상기 제2 가비지 컬렉션 기대 비용을 연산할 수 있다(단계 S120). 예를 들어, 상기 제2 가비지 컬렉션 기대 비용은 유효 페이지들(VP23, VP24, VP2B, VP2C)의 개수의 총합인 4일 수 있다. 다른 예에서, 상기 제2 가비지 컬렉션 기대 비용은 유효 페이지들(VP23, VP24, VP2B, VP2C)의 개수의 총합을 하나의 메모리 블록에 포함되는 페이지들의 개수로 나눈 1 또는 100%일 수 있다.
상기 제1 및 제2 가비지 컬렉션 기대 비용들에 기초하여 상기 희생 메모리 블록들을 결정할 수 있다(단계 S130). 도 4의 예에서는 상기 제2 가비지 컬렉션 기대 비용이 상기 제1 가비지 컬렉션 기대 비용보다 낮으며, 따라서 상기 제2 스트림의 데이터들을 저장하고 있는 상기 제2 그룹의 메모리 블록들(BLK22, BLK25)이 상기 희생 메모리 블록들로 결정될 수 있다.
상기 가비지 컬렉션 기대 비용은 하나의 프리 메모리 블록을 만들어내기 위해 복사되는 유효 페이지들의 개수의 총합을 나타낼 수 있으며, 하나의 프리 메모리 블록을 만들어내기 위해 복사되는 유효 페이지들의 개수가 적을수록 상기 가비지 컬렉션 동작의 효율이 증가하므로, 상기 가비지 컬렉션 기대 비용이 상대적으로 낮은 메모리 블록들을 선정하여 상기 가비지 컬렉션 동작을 수행할 수 있다.
상기 희생 메모리 블록들로 선정된 메모리 블록들(BLK22, BLK25)에 대해 상기 가비지 컬렉션 동작을 수행한다(단계 S200). 예를 들어, 메모리 블록(DST_BLK2)이 상기 가비지 컬렉션 동작을 위한 목적지 메모리 블록으로 사용될 수 있다.
구체적으로, 메모리 블록(BLK22)에 포함되는 유효 페이지들(VP23, VP24)을 메모리 블록(DST_BLK2)에 복사하고, 메모리 블록(BLK22)에 대한 데이터 소거 동작을 수행하여 메모리 블록(BLK22)을 프리 메모리 블록으로 변경할 수 있다. 이와 유사하게, 메모리 블록(BLK25)에 포함되는 유효 페이지들(VP2B, VP2C)을 메모리 블록(DST_BLK2)에 복사하고, 메모리 블록(BLK25)에 대한 데이터 소거 동작을 수행하여 메모리 블록(BLK25)을 프리 메모리 블록으로 변경할 수 있다.
결과적으로, 상기 가비지 컬렉션 동작이 수행된 이후에, 메모리 블록(DST_BLK2)은 유효 페이지들(VP23, VP24, VP2B, VP2C)을 포함하고, 메모리 블록(BLK22)은 프리 페이지들(FP25, FP26, FP27, FP28)을 포함하며, 메모리 블록(BLK25)은 프리 페이지들(FP29, FP2A, FP2B, FP2C)을 포함할 수 있다. 한편, 도시하지는 않았으나, 메모리 블록들(BLK21, BLK23, BLK24)의 데이터 저장 상태는 상기 가비지 컬렉션 동작이 수행되기 이전과 이후에 동일할 수 있다.
한편, 도 3 및 4를 참조하여 상기 희생 메모리 블록들로 선정 가능한 두 개의 후보 메모리 블록 그룹들이 존재하는 경우를 설명하였으나, 본 발명은 이에 한정되지 않으며, 세 개 이상의 후보 메모리 블록 그룹들이 존재하는 경우에도 본 발명이 적용될 수 있다. 예를 들어, 세 개 이상의 후보 메모리 블록 그룹들 각각에 대해 가비지 컬렉션 기대 비용을 산출하고, 상기 가비지 컬렉션 기대 비용이 가장 낮은 그룹의 메모리 블록들을 상기 희생 메모리 블록들로 결정할 수 있다.
한편, 도 2 및 4를 참조하여 특정 개수의 메모리 블록들 및 각 메모리 블록이 네 개의 페이지들을 포함하는 경우를 설명하였으나, 본 발명은 이에 한정되지 않으며, 임의의 개수의 메모리 블록들 및/또는 페이지들을 포함하는 경우에도 본 발명이 적용될 수 있다.
도 5는 본 발명의 실시예들에 따른 가비지 컬렉션 방법을 나타내는 순서도이다.
도 5를 참조하면, 본 발명의 실시예들에 따른 가비지 컬렉션 방법은, 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하고 멀티 스트림 방식으로 동작하는 저장 장치에 의해 수행된다.
복수의 스트림들을 나타내는 복수의 스트림 ID(identifier)들 중 하나를 상기 복수의 메모리 블록들 중 하나에 대응시키고, 상기 복수의 메모리 블록들과 상기 복수의 스트림 ID들의 관계를 스트림 맵핑 테이블에 기록하며(단계 S300), 상기 복수의 스트림들 각각에 대한 가비지 컬렉션 기대 비용을 나타내는 스트림별 가비지 컬렉션 기대 비용 테이블을 관리한다(단계 S400). 상기 스트림 맵핑 테이블에 대해서는 도 6 및 7을 참조하여 상세하게 후술하도록 하고, 상기 스트림별 가비지 컬렉션 기대 비용 테이블에 대해서는 도 8 및 9를 참조하여 상세하게 후술하도록 한다.
일 실시예에서, 상기 스트림 맵핑 테이블 및 상기 스트림별 가비지 컬렉션 기대 비용 테이블은 상기 복수의 메모리 블록들 중 적어도 하나가 데이터 기입을 위해 할당되거나 프리 메모리 블록이 될 때마다 업데이트될 수 있다. 다시 말하면, 상기 스트림 맵핑 테이블 및 상기 스트림별 가비지 컬렉션 기대 비용 테이블은 상기 저장 장치가 파워 온 되어 구동되는 동안에 실시간으로(real time 또는 runtime) 업데이트될 수 있다.
상기 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생 메모리 블록들로 선정하고(단계 S100a), 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행한다(단계 S200).
도 5의 단계 S100a는 도 1의 단계 S100과 유사할 수 있으며, 다만 도 1의 단계 S100에서는 도 3 및 4를 참조하여 상술한 것처럼 상기 가비지 컬렉션 동작이 요구될 때마다 가비지 컬렉션 기대 비용을 산출하는데 비하여, 도 5의 단계 S100a에서는 단계 S400에서 관리 및 업데이트되는 상기 스트림별 가비지 컬렉션 기대 비용 테이블에 기초하여 상기 희생 메모리 블록들을 선정함으로써, 상기 가비지 컬렉션 동작이 보다 빠르게 수행될 수 있다. 도 5의 단계 S200은 도 1의 단계 S200과 실질적으로 동일할 수 있다.
도 6은 도 5의 복수의 메모리 블록들과 복수의 스트림 ID들의 관계를 스트림 맵핑 테이블에 기록하는 단계의 일 예를 나타내는 순서도이다. 도 7은 도 5의 스트림 맵핑 테이블의 일 예를 나타내는 표이다.
도 5, 6 및 7을 참조하면, 스트림 맵핑 테이블(stream mapping table; SMT)은 상기 복수의 메모리 블록들 중 사용된 메모리 블록(BLOCK) 및 사용된 메모리 블록(BLOCK)에 기입된 데이터들의 스트림을 나타내는 스트림 ID(STREAM_ID)를 포함할 수 있다. 다시 말하면, 스트림 맵핑 테이블(SMT)은 사용된 메모리 블록(BLOCK) 및 스트림 ID(STREAM_ID)의 일대일 대응 관계를 포함할 수 있다. 스트림 ID(STREAM_ID)와 유사하게, 사용된 메모리 블록(BLOCK)도 블록 ID의 형태로 기록될 수 있다.
상기 복수의 메모리 블록들과 상기 복수의 스트림 ID들의 관계를 상기 스트림 맵핑 테이블에 기록하는데 있어서(단계 S300), 어느 한 메모리 블록이 데이터 기입을 위해 할당되는 경우에, 해당 메모리 블록 및 상기 해당 메모리 블록에 저장하고자 하는 데이터의 스트림 ID를 스트림 맵핑 테이블(SMT)에 기록할 수 있다(단계 S310). 단계 S310은 상기 해당 메모리 블록에 대해 상기 데이터 기입이 최초로 요청되는 시점에 수행될 수 있다.
예를 들어, 상기 복수의 메모리 블록들 중 제1 메모리 블록(BLK1)에 상기 데이터 기입이 최초로 요청되는 시점에, 제1 스트림의 데이터를 기입하도록 제1 메모리 블록(BLK1)이 할당될 수 있으며, 이에 따라 제1 메모리 블록(BLK1) 및 이에 대응하는 상기 제1 스트림을 나타내는 제1 스트림 ID(STR1)를 스트림 맵핑 테이블(SMT)에 기록할 수 있다. 이와 유사하게, 상기 복수의 메모리 블록들 중 제2 메모리 블록(BLK2)에 상기 데이터 기입이 최초로 요청되는 시점에, 제2 메모리 블록(BLK2) 및 이에 대응하는 제2 스트림을 나타내는 제2 스트림 ID(STR2)를 스트림 맵핑 테이블(SMT)에 기록하고, 제3 메모리 블록(BLK3)에 상기 데이터 기입이 최초로 요청되는 시점에, 제3 메모리 블록(BLK3) 및 이에 대응하는 제1 스트림 ID(STR1)를 스트림 맵핑 테이블(SMT)에 기록하며, 제4 메모리 블록(BLK4)에 상기 데이터 기입이 최초로 요청되는 시점에, 제4 메모리 블록(BLK4) 및 이에 대응하는 제3 스트림을 나타내는 제3 스트림 ID(STR3)를 스트림 맵핑 테이블(SMT)에 기록할 수 있다. 도 7의 예에서, 제1 및 제3 메모리 블록들(BLK1, BLK3)은 동일한 스트림(즉, 상기 제1 스트림)의 데이터를 저장할 수 있다.
또한, 어느 한 메모리 블록이 프리 메모리 블록이 되는 경우에, 해당 메모리 블록 및 상기 해당 메모리 블록에 대응하는 스트림 ID를 스트림 맵핑 테이블(SMT)에서 삭제할 수 있다(단계 S320). 단계 S320은 상기 해당 메모리 블록이 사용된 이후에 상기 해당 메모리 블록에 대해 데이터 소거 동작이 완료되는 시점에 수행될 수 있다.
예를 들어, 제1 메모리 블록(BLK1)에 대한 상기 데이터 소거 동작이 완료되는 시점에, 제1 메모리 블록(BLK1) 및 이에 대응하는 제1 스트림 ID(STR1)를 스트림 맵핑 테이블(SMT)에서 삭제할 수 있다. 이와 유사하게, 제2 메모리 블록(BLK2)에 대한 상기 데이터 소거 동작이 완료되는 시점에, 제2 메모리 블록(BLK2) 및 이에 대응하는 제2 스트림 ID(STR2)를 스트림 맵핑 테이블(SMT)에서 삭제하고, 제3 메모리 블록(BLK3)에 대한 상기 데이터 소거 동작이 완료되는 시점에, 제3 메모리 블록(BLK3) 및 이에 대응하는 제1 스트림 ID(STR1)를 스트림 맵핑 테이블(SMT)에서 삭제하며, 제4 메모리 블록(BLK4)에 대한 상기 데이터 소거 동작이 완료되는 시점에, 제4 메모리 블록(BLK4) 및 이에 대응하는 제3 스트림 ID(STR3)를 스트림 맵핑 테이블(SMT)에서 삭제할 수 있다.
일 실시예에서, 스트림 맵핑 테이블(SMT)은 메타(meta) 데이터의 형태로 제공될 수 있다.
도 8은 도 5의 스트림별 가비지 컬렉션 기대 비용 테이블을 관리하는 단계의 일 예를 나타내는 순서도이다. 도 9는 도 5의 스트림별 가비지 컬렉션 기대 비용 테이블의 일 예를 나타내는 표이다.
도 5, 8 및 9를 참조하면, 스트림별 가비지 컬렉션 기대 비용 테이블(garbage collection expected cost table; GCECT)은 상기 복수의 메모리 블록들 중 실제로 사용되어 상기 가비지 컬렉션 동작의 대상으로 선정 가능하고 유효 페이지들의 개수에 따라 정렬된 후보 메모리 블록들(BLK31, BLK32, BLK33, BLK34, BLK35, BLK36, BLK37, BLK38, BLK39, BLK3A, BLK3B, BLK3C), 동일한 스트림 ID에 대응하는 메모리 블록들의 연결 관계(예를 들어, 점선으로 도시된 화살표들), 및 각 스트림 ID(STREAM_ID)에 대한 가비지 컬렉션 기대 비용(garbage collection expected cost; GC_EC)을 포함할 수 있다.
도 9에서, "VP_RATE"는 하나의 메모리 블록에 포함되는 페이지들의 전체 개수 대비 유효 페이지들의 개수의 비율을 나타낸다. 저장 장치의 구현 방식에 따라 하나의 메모리 블록에 포함되는 페이지들의 전체 개수는 달라질 수 있으므로, 설명의 편의상 유효 페이지들의 비율을 도시하였다. "VP_RATE"에서, "LEVEL5"는 유효 페이지들의 비율이 50% 이상 60% 미만인 후보 메모리 블록을 나타내고, "LEVEL6"은 유효 페이지들의 비율이 60% 이상 70% 미만인 후보 메모리 블록을 나타내고, "LEVEL7"은 유효 페이지들의 비율이 70% 이상 80% 미만인 후보 메모리 블록을 나타내며, "LEVEL8"은 유효 페이지들의 비율이 80% 이상 90% 미만인 후보 메모리 블록을 나타낸다. 도시하지는 않았지만, "VP_RATE"에서 "LEVEL0", "LEVEL1", "LEVEL2", "LEVEL3", "LEVEL4", "LEVEL9"가 추가적으로 존재할 수 있다.
상기 스트림별 가비지 컬렉션 기대 비용 테이블을 관리하는데 있어서(단계 S400), 상기 복수의 메모리 블록들 중 상기 가비지 컬렉션 동작의 대상으로 선정 가능한 후보 메모리 블록들(BLK31, BLK32, BLK33, BLK34, BLK35, BLK36, BLK37, BLK38, BLK39, BLK3A, BLK3B, BLK3C)을 유효 페이지들의 개수에 따라 정렬할 수 있다(단계 S410). 예를 들어, 유효 페이지들의 비율이 50%인 후보 메모리 블록들(BLK31, BLK32, BLK33)을 "LEVEL5" 섹션에 배치하고, 유효 페이지들의 비율이 60%인 후보 메모리 블록들(BLK34, BLK35, BLK36) 및 65%인 후보 메모리 블록(BLK37)을 "LEVEL6" 섹션에 배치하고, 유효 페이지들의 비율이 70%인 후보 메모리 블록(BLK38) 및 75%인 후보 메모리 블록들(BLK39, BLK3A)을 "LEVEL7" 섹션에 배치하며, 유효 페이지들의 비율이 80%인 후보 메모리 블록들(BLK3B, BLK3C)을 "LEVEL8" 섹션에 배치할 수 있다.
스트림 맵핑 테이블(예를 들어, 도 7의 SMT)에 기초하여, 동일한 스트림 ID에 대응하는 메모리 블록들을 서로 연결할 수 있다(단계 S420). 예를 들어, 후보 메모리 블록들(BLK31, BLK39, BLK3A)이 제1 스트림을 나타내는 제1 스트림 ID(STR1)에 대응할 수 있으며, 따라서 도 9에 도시된 것처럼 제1 스트림 ID(STR1)와 후보 메모리 블록들(BLK31, BLK39, BLK3A)을 서로 연결할 수 있다. 이와 유사하게, 후보 메모리 블록들(BLK32, BLK33)이 제2 스트림을 나타내는 제2 스트림 ID(STR2)에 대응할 수 있으며, 따라서 도 9에 도시된 것처럼 제2 스트림 ID(STR2)와 후보 메모리 블록들(BLK32, BLK33)을 서로 연결할 수 있다.
각 스트림 ID(STREAM_ID)에 대한 가비지 컬렉션 기대 비용(GC_EC)을 산출할 수 있다(단계 S430). 도 4를 참조하여 상술한 것처럼, 가비지 컬렉션 기대 비용(GC_EC)은 유효 페이지들의 개수의 총합 또는 비율의 총합일 수 있다. 예를 들어, 가비지 컬렉션 기대 비용(GC_EC)이 유효 페이지들의 비율의 총합으로 표현되는 경우에, 도 9에 도시된 것처럼 제1 스트림 ID(STR1)에 대한 제1 가비지 컬렉션 기대 비용은 200%이고, 제2 스트림 ID(STR2)에 대한 제2 가비지 컬렉션 기대 비용은 100%일 수 있다. 다른 예에서, 가비지 컬렉션 기대 비용(GC_EC)이 유효 페이지들의 개수의 총합으로 표현되고 하나의 메모리 블록이 K(K는 자연수)개의 페이지들을 포함하는 경우에, 제1 스트림 ID(STR1)에 대한 제1 가비지 컬렉션 기대 비용은 2*K이고, 제2 스트림 ID(STR2)에 대한 제2 가비지 컬렉션 기대 비용은 K일 수 있다.
상기 희생 메모리 블록들을 선정하는데 있어서(단계 S100a), 스트림별 가비지 컬렉션 기대 비용 테이블(GCECT)을 탐색하여, 무효 페이지들의 개수 또는 비율의 합이 기준 값보다 크거나 같은 제1 조건을 만족하는 스트림 ID들이 존재하는지 판단할 수 있고, 상기 제1 조건을 만족하는 스트림 ID들 중 하나에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정할 수 있다. 예를 들어, 상기 제1 조건을 만족하는 스트림 ID들 중 상기 가비지 컬렉션 기대 비용이 가장 낮은 스트림 ID에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정할 수 있다.
일 실시예에서, 상기 기준 값은 하나의 프리 메모리 블록을 만들기 위한 값일 수 있다. 예를 들어, 가비지 컬렉션 기대 비용(GC_EC)이 유효 페이지들의 비율의 총합으로 표현되는 경우에, 상기 기준 값은 100%일 수 있다. 다른 예에서, 가비지 컬렉션 기대 비용(GC_EC)이 유효 페이지들의 개수의 총합으로 표현되고 하나의 메모리 블록이 K개의 페이지들을 포함하는 경우에, 상기 기준 값은 K일 수 있다. 다시 말하면, 상기 희생 메모리 블록들로 선정 가능한 두 개의 후보 메모리 블록 그룹들 중 하나의 프리 메모리 블록을 만들어낼 수 있는 후보 메모리 블록 그룹이 존재하는지 판단할 수 있다.
도 9의 예에서, 제1 스트림 ID(STR1)에 대응하는 후보 메모리 블록들(BLK31, BLK39, BLK3A)이 각각 50%, 25%, 25%의 무효 페이지들을 포함하여 상기 제1 조건을 만족하며, 제2 스트림 ID(STR2)에 대응하는 후보 메모리 블록들(BLK32, BLK33)이 각각 50%, 50%의 무효 페이지들을 포함하여 상기 제1 조건을 만족할 수 있다. 이 중 가비지 컬렉션 기대 비용(GC_EC)이 상대적으로 낮은 제2 스트림 ID(STR2)에 대응하는 후보 메모리 블록들(BLK32, BLK33)을 상기 희생 메모리 블록들로 결정하고, 후보 메모리 블록들(BLK32, BLK33)에 대해 상기 가비지 컬렉션 동작을 수행할 수 있다.
도시하지는 않았지만, 상기 제1 조건을 만족하는 하나의 스트림 ID가 존재하는 경우에, 가비지 컬렉션 기대 비용(GC_EC)의 비교 없이 해당 스트림 ID에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정할 수 있다. 상기 제1 조건을 만족하는 스트림 ID가 존재하지 않는 경우에, 상기 희생 메모리 블록들을 선정할 수 없으며, 따라서 상기 가비지 컬렉션 동작이 수행되지 않을 수 있다.
일 실시예에서, 스트림별 가비지 컬렉션 기대 비용 테이블(GCECT)은 메타 데이터의 형태로 제공될 수 있다.
도 10은 본 발명의 실시예들에 따른 저장 장치를 나타내는 블록도이다.
도 10을 참조하면, 본 발명의 실시예들에 따른 저장 장치(100)는 각각이 복수의 비휘발성 메모리 셀들을 구비하는 복수의 메모리 블록들(BLOCK1, BLOCK2, ..., BLOCKN)(130)을 포함하는 적어도 하나의 비휘발성 메모리 장치(120), 및 비휘발성 메모리 장치(120)를 제어하는 스토리지 컨트롤러(140)를 포함한다.
일 실시예에서, 저장 장치(100)는 SSD(solid state drive), MMC(multi media card), eMMC(embedded multi media card) 및 UFS(universal flash storage) 중 하나일 수 있다. 다른 실시예에서, 저장 장치(100)는 SD 카드(secure digital card), 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(universal serial bus) 카드, 스마트 카드(smart card), CF 카드(compact flash card) 중 하나일 수 있다.
스토리지 컨트롤러(140)는 호스트로부터 수신된 커맨드 및 데이터에 기초하여 비휘발성 메모리 장치(120)의 동작, 예를 들어 데이터 기입 또는 독출 동작을 제어한다. 예를 들어, 스토리지 컨트롤러(140)는 상기 호스트로부터 데이터 기입을 요청하는 기입 커맨드(WCMD) 및 기입하고자 하는 기입 데이터(WDAT)를 수신하고, 기입 데이터(WDAT)를 복수의 메모리 블록들(130) 중 적어도 하나에 저장할 수 있다.
일 실시예에서, 상기 호스트는 PC(personal computer), 노트북(laptop), 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC, MP3 플레이어, PDA(personal digital assistant), EDA(enterprise digital assistant), PMP(portable multimedia player), 디지털 카메라(digital camera), 음악 재생기(music player), 휴대용 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등의 임의의 전자 기기일 수 있다.
스토리지 컨트롤러(140)는 멀티 스트림 방식으로 동작하도록 비휘발성 메모리 장치(120)를 제어한다. 예를 들어, 스토리지 컨트롤러(140)는 상기 멀티 스트림 방식에 기초하여, 복수의 메모리 블록들(300)에 기입되는 데이터(WDAT)를 복수의 스트림들로 구분하여 관리하고, 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입할 수 있다. 이를 위해, 도 14를 참조하여 후술하는 것처럼, 상기 호스트는 기입 데이터(WDAT)의 스트림을 나타내는 스트림 ID를 기입 데이터(WDAT)와 함께 제공할 수 있다. 또는, 스토리지 컨트롤러(140)가 자체적으로 기입 데이터(WDAT)의 스트림을 설정할 수도 있다.
또한, 스토리지 컨트롤러(140)는 가비지 컬렉션 동작을 수행하도록 비휘발성 메모리 장치(120)를 제어한다. 상기 가비지 컬렉션 동작은 도 1 내지 9를 참조하여 상술한 가비지 컬렉션 방법에 기초하여 수행될 수 있다. 예를 들어, 복수의 메모리 블록들(130) 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생 메모리 블록들로 선정하고, 상기 희생 메모리 블록들에 대한 상기 가비지 컬렉션 동작을 수행한다. 상기 희생 메모리 블록들로 선정 가능한 두 개 이상의 후보 메모리 블록 그룹들이 존재하는 경우에는, 가비지 컬렉션 기대 비용을 산출하여 상기 희생 메모리 블록들을 결정할 수 있고, 이를 위해 스트림 맵핑 테이블(150) 및 스트림별 가비지 컬렉션 기대 비용 테이블(160)이 이용될 수 있다. 따라서, 상기 가비지 컬렉션 동작이 수행된 이후에도 메모리 블록 단위로 동일한 스트림의 데이터들을 구분하여 저장할 수 있으며, 저장 장치(100)의 성능 및 내구성을 향상시킬 수 있다.
도시하지는 않았으나, 스트림별 가비지 컬렉션 기대 비용 테이블(160)은 가비지 컬렉션 기대 비용 연산부로 대체될 수 있다.
도 11은 도 10의 저장 장치에 포함되는 비휘발성 메모리 장치의 일 예를 나타내는 블록도이다.
도 11을 참조하면, 비휘발성 메모리 장치(200)는 메모리 셀 어레이(210), 로우 디코더(220), 페이지 버퍼 회로(230), 데이터 입출력 회로(240), 전압 발생기(250) 및 제어 회로(260)를 포함할 수 있다.
메모리 셀 어레이(210)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 로우 디코더(220)와 연결될 수 있다. 또한, 메모리 셀 어레이(210)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다.
메모리 셀 어레이(210)는 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 비휘발성 메모리 셀들을 포함할 수 있다. 도 12a 및 12b를 참조하여 후술하는 바와 같이, 상기 복수의 비휘발성 메모리 셀들은 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 형성될 수 있다.
제어 회로(260)는 스토리지 컨트롤러(도 10의 140)로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 메모리 셀 어레이(210)에 대한 데이터 기입(또는 프로그램)/독출/소거 동작을 수행하도록 로우 디코더(220), 페이지 버퍼 회로(230), 데이터 입출력 회로(240) 및 전압 발생기(250)를 제어할 수 있다.
예를 들어, 제어 회로(260)는 커맨드 신호(CMD)에 기초하여 전압 발생기(250)를 제어하기 위한 제어 신호들(CONs)을 발생하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 발생할 수 있다. 제어 회로(260)는 로우 어드레스(R_ADDR)를 로우 디코더(220)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(240)에 제공할 수 있다.
로우 디코더(220)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(210)와 연결될 수 있다. 로우 디코더(120)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 워드 라인들(WLs) 중 적어도 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WLs) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
전압 발생기(250)는 전원 전압 및 제어 신호들(CONs)에 기초하여 비휘발성 메모리 장치(200)의 동작에 필요한 워드 라인 전압들(VWLs)을 발생할 수 있다. 워드 라인 전압들(VWLs)은 로우 디코더(220)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다.
예를 들어, 데이터 소거 동작 시에, 전압 발생기(250)는 메모리 블록의 웰에 소거 전압을 인가하고 메모리 블록의 모든 워드 라인들에 접지 전압을 인가할 수 있다. 소거 검증 동작 시에, 전압 발생기(250)는 하나의 메모리 블록의 모든 워드 라인들에 소거 검증 전압을 인가하거나 워드 라인 단위로 소거 검증 전압을 인가할 수 있다. 다른 예에서, 데이터 프로그램 동작 시, 전압 발생기(250)는 상기 선택 워드 라인에 프로그램 전압을 인가하고, 상기 비선택 워드 라인들에는 프로그램 패스 전압을 인가할 수 있다. 프로그램 검증 동작 시에, 전압 발생기(250)는 상기 선택 워드 라인에 프로그램 검증 전압을 인가하고, 상기 비선택 워드 라인들에는 검증 패스 전압을 인가할 수 있다. 또한, 데이터 독출 동작 시에, 전압 발생기(250)는 상기 선택 워드 라인에 독출 전압을 인가하고, 상기 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다.
페이지 버퍼 회로(230)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(210)와 연결될 수 있다. 페이지 버퍼 회로(230)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(230)는 메모리 셀 어레이(210)에 프로그램 될 기입 데이터(DAT)를 저장하거나 혹은 메모리 셀 어레이(210)로부터 감지된 독출 데이터(DAT)를 저장할 수 있다. 즉, 페이지 버퍼 회로(230)는 비휘발성 메모리 장치(200)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다.
데이터 입출력 회로(240)는 데이터 라인(DL)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다. 데이터 입출력 회로(240)는 컬럼 어드레스(C_ADDR)에 응답하여, 기입 데이터(DAT)를 페이지 버퍼 회로(230)를 거쳐서 메모리 셀 어레이(210)에 제공하거나 혹은 메모리 셀 어레이(210)로부터 페이지 버퍼 회로(230)를 거쳐서 출력되는 독출 데이터(DAT)를 외부(예를 들어, 도 10의 스토리지 컨트롤러(140))에 제공할 수 있다.
도 12a 및 12b는 도 10의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이의 예를 나타내는 회로도들이다. 도 12a는 NAND 플래시 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내며, 도 12b는 수직형 NAND 플래시 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타낸다.
도 12a를 참조하면, 메모리 셀 어레이(210a)는 스트링 선택 트랜지스터(SST)들, 접지 선택 트랜지스터(GST)들 및 메모리 셀(MC)들을 포함할 수 있다. 스트링 선택 트랜지스터(SST)들은 비트 라인들(BL(1), ..., BL(m))에 연결되고, 접지 선택 트랜지스터(GST)들은 공통 소스 라인(CSL)에 연결될 수 있다. 동일한 열에 배열된 메모리 셀(MC)들은 비트 라인들(BL(1)~BL(m)) 중 하나와 공통 소스 라인(CSL) 사이에 직렬로 배치될 수 있으며, 동일한 행에 배열된 메모리 셀(MC)들은 워드 라인들(WL(1), WL(2), WL(3), ..., WL(n-1), WL(n)) 중 하나에 공통으로 연결될 수 있다. 즉, 스트링 선택 트랜지스터(SST)들과 접지 선택 트랜지스터(GST)들 사이에 메모리 셀(MC)들이 직렬로 연결될 수 있으며, 스트링 선택 라인(SSL)과 접지 선택 라인(GSL) 사이에는 16개, 32개 또는 64개의 복수의 워드 라인들이 배열될 수 있다.
스트링 선택 트랜지스터(SST)들은 스트링 선택 라인(SSL)에 연결되어, 스트링 선택 라인(SSL)으로부터 인가되는 전압의 레벨에 따라 제어될 수 있고, 접지 선택 트랜지스터(GST)들은 접지 선택 라인(GSL)에 연결되어, 접지 선택 라인(GSL)으로부터 인가되는 전압의 레벨에 따라 제어될 수 있다. 메모리 셀(MC)들은 워드 라인들(WL(1)~WL(n))에 인가되는 전압의 레벨에 따라 제어될 수 있다.
메모리 셀 어레이(210a)를 포함하는 비휘발성 메모리 장치는 페이지(212) 단위로 데이터 기입 및 독출 동작을 수행하며, 메모리 블록(213) 단위로 소거 동작을 수행할 수 있다.
도 12b를 참조하면, 메모리 셀 어레이(210b)는 수직 구조를 가지는 복수의 스트링(216)들을 포함할 수 있다. 스트링(216)은 제2 방향(D2)을 따라 복수 개로 형성되어 스트링 열을 형성할 수 있으며, 상기 스트링 열은 제3 방향(D3)을 따라 복수 개로 형성되어 스트링 어레이를 형성할 수 있다. 복수의 스트링(216)들은 비트 라인들(BL(1), ..., BL(m))과 공통 소스 라인(CSL) 사이에 제1 방향(D1)을 따라 직렬로 배치되는 접지 선택 트랜지스터(GSTV)들, 메모리 셀(MC)들 및 스트링 선택 트랜지스터(SSTV)들을 각각 포함할 수 있다.
접지 선택 트랜지스터(GSTV)들은 접지 선택 라인들(GSL11, GSL12, ..., GSLi1, GSLi2)에 각각 연결되고, 스트링 선택 트랜지스터(SSTV)들은 스트링 선택 라인들(SSL11, SSL12, ..., SSLi1, SSLi2)에 각각 연결될 수 있다. 동일한 층에 배열되는 메모리 셀(MC)들은 워드 라인들(WL(1), WL(2), ..., WL(n-1), WL(n)) 중 하나에 공통으로 연결될 수 있다. 접지 선택 라인들(GSL11~GSLi2) 및 스트링 선택 라인들(SSL11~SSLi2)은 제2 방향(D2)으로 연장되며 제3 방향(D3)을 따라 복수 개로 형성될 수 있다. 워드 라인들(WL(1)~WL(n))은 제2 방향(D2)으로 연장되며 제1 방향(D1) 및 제3 방향(D3)을 따라 복수 개로 형성될 수 있다. 비트 라인들(BL(1)~BL(m))은 제3 방향(D3)으로 연장되며 제2 방향(D2)을 따라 복수 개로 형성될 수 있다. 메모리 셀(MC)들은 워드 라인들(WL(1)~WL(n))에 인가되는 전압의 레벨에 따라 제어될 수 있다.
수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
한편, NAND 플래시 메모리 장치에 기초하여 본 발명의 실시예들에 따른 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이를 설명하였으나, 본 발명의 실시예들에 따른 비휘발성 메모리 장치는 PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 임의의 비휘발성 메모리 장치일 수 있다.
도 13은 도 1의 저장 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 13을 참조하면, 스토리지 컨트롤러(300)는 적어도 하나의 프로세서(310), 버퍼 메모리(320), ECC(error correction code) 블록(330), 호스트 인터페이스(340) 및 메모리 인터페이스(350)를 포함할 수 있다.
프로세서(310)는 상기 호스트로부터 호스트 인터페이스(340)를 통하여 수신된 커맨드에 응답하여 스토리지 컨트롤러(300)의 동작을 제어할 수 있다. 일 실시예에서, 프로세서(310)는 저장 장치(100)를 구동하기 위한 펌웨어(Firm ware)를 채용하여 각각의 구성들을 제어할 수 있다.
버퍼 메모리(320)는 프로세서(310)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어, 버퍼 메모리(320)는 SRAM(static random access memory), DRAM(dynamic random access memory) 등과 같은 휘발성 메모리로 구현될 수 있다. 버퍼 메모리(320)는 스트림 맵핑 테이블(322) 및 스트림별 가비지 컬렉션 기대 비용 테이블(324)을 포함할 수 있다. 일 실시예에서, 버퍼 메모리(320)는 프로세서(310)의 캐시 메모리(cache memory)일 수 있다.
에러 정정을 위한 ECC 블록(330)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(340)는 상기 호스트와 저장 장치(100) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(340)는 상기 호스트의 버스 포맷(bus format)에 대응하여 저장 장치(100)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 상기 호스트의 버스 포맷은 SCSI(small computer system interface) 또는 SAS(serial attached SCSI)일 수 있다. 다른 실시예에서, 상기 호스트의 버스 포맷은 USB, PCIe(peripheral component interconnect express), ATA(advanced technology attachment), PATA(parallel ATA), SATA(serial ATA), NVMe 등일 수 있다.
메모리 인터페이스(350)는 비휘발성 메모리 장치(도 10의 120)와 데이터를 교환할 수 있다. 메모리 인터페이스(350)는 데이터를 비휘발성 메모리 장치(120)에 전송할 수 있고, 비휘발성 메모리 장치(120)로부터 독출된 데이터를 수신할 수 있다. 일 실시예에서, 메모리 인터페이스(350)는 비휘발성 메모리 장치(120)와 하나의 채널을 통하여 연결될 수 있다. 다른 실시예에서, 메모리 인터페이스(350)는 비휘발성 메모리 장치(120)와 2 이상의 채널들을 통하여 연결될 수 있다.
도 14는 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 14를 참조하면, 컴퓨팅 시스템(500)은 호스트(600) 및 호스트(600)에 장착되는 저장 장치(700)를 포함할 수 있다.
호스트(600)는 운영 체제(operating system; OS)(610)를 실행하여 구동될 수 있다. 운영 체제(610)는 파일 관리를 위한 파일 시스템(620) 및 데이터 저장 장치(700)를 포함하는 주변 기기를 운영 체제(610) 레벨에서 제어하기 위한 장치 드라이버(630)를 포함할 수 있다. 파일 시스템(620)은 호스트(600)의 요청에 따라 액세스되는 파일들에 대한 파일명, 확장자, 파일 속성, 파일 크기, 클러스터 정보 등을 관리할 수 있다. 또한, 파일 시스템(620)에 의해 파일 단위의 데이터가 생성, 삭제 및 관리될 수 있다. 장치 드라이버(630)는 데이터 저장 장치(700)를 제어하기 위한 커널(Kernel)의 소프트웨어 모듈일 수 있다. 호스트(600)는 장치 드라이버(630)를 통하여 데이터 저장 장치(700)에 대한 기입 동작 및 독출 동작을 요청할 수 있다. 또한, 호스트(610)는 다양한 서비스를 제공하기 위하여 동영상 어플리케이션, 게임 어플리케이션, 웹 브라우저 어플리케이션 등을 실행할 수 있다.
호스트(600)는 데이터 기입을 요청하는 기입 커맨드(예를 들어, 도 10의 WCMD) 및 기입하고자 하는 기입 데이터들(WD1, WD2, WD3, WD4)을 발생할 수 있고, 스트림 ID들(STR1, STR2)을 기입 데이터들(WD1, WD2, WD3, WD4)과 함께 제공할 수 있다. 예를 들어, 호스트(600)는 저장 장치(700)에 기입 데이터들(WD1, WD2, WD3, WD4)이 기입되는 것을 요청하며, 기입 데이터들(WD1, WD3)에 스트림 ID(STR1)를 부가하여 데이터 블록들(DB1, DB3)(651, 655)을 발생하고, 기입 데이터들(WD2, WD4)에 스트림 ID(STR2)를 부가하여 데이터 블록들(DB2, DB4)(653, 657)을 발생할 수 있다.
저장 장치(700)는 복수의 메모리 블록들(731, 732, 733)을 포함하는 적어도 하나의 비휘발성 메모리 장치(720)와, 스트림 맵핑 테이블(750) 및 스트림별 가비지 컬렉션 기대 비용 테이블(760)을 포함하는 스토리지 컨트롤러(740)를 포함한다. 도 14의 비휘발성 메모리 장치(720), 메모리 블록들(731, 732, 733), 스토리지 컨트롤러(740), 스트림 맵핑 테이블(750) 및 스트림별 가비지 컬렉션 기대 비용 테이블(760)은 도 10의 비휘발성 메모리 장치(120), 메모리 블록들(130), 스토리지 컨트롤러(140), 스트림 맵핑 테이블(150) 및 스트림별 가비지 컬렉션 기대 비용 테이블(160)과 각각 실질적으로 동일할 수 있다. 동일한 스트림 ID(예를 들어, STR1)에 대응하는 기입 데이터들(예를 들어, WD1, WD3)이 동일한 메모리 블록(예를 들어, 731)에 기입되는 멀티 스트림 방식으로 동작하며, 동일한 스트림 ID에 대응하는 메모리 블록들을 대상으로 하여 가비지 컬렉션 동작을 수행함으로써, 저장 장치(700)의 성능 및 내구성이 향상될 수 있다.
본 발명은 비휘발성 메모리를 사용하여 데이터를 저장하는 저장 장치에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 플래시 메모리를 사용하여 구현되는 SSD, MMC, eMMC, UFS 등에 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하며, 상기 복수의 메모리 블록들에 기입되는 복수의 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입하는 멀티 스트림(multi-stream) 방식으로 동작하는 저장 장치의 가비지 컬렉션(garbage collection) 방법으로서,
    상기 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정하는 단계; 및
    상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행하는 단계를 포함하는 가비지 컬렉션 방법.
  2. 제 1 항에 있어서, 상기 동일한 스트림의 데이터들을 저장하고 있는 상기 적어도 두 개의 메모리 블록들을 상기 희생 메모리 블록들로 선정하는 단계는,
    제1 메모리 블록들에 저장된 제1 스트림의 데이터들에 대한 제1 가비지 컬렉션 기대 비용을 산출하는 단계;
    제2 메모리 블록들에 저장되고 상기 제1 스트림과 다른 제2 스트림의 데이터들에 대한 제2 가비지 컬렉션 기대 비용을 산출하는 단계; 및
    상기 제1 가비지 컬렉션 기대 비용 및 상기 제2 가비지 컬렉션 기대 비용에 기초하여 상기 제1 메모리 블록들 및 상기 제2 메모리 블록들 중 하나를 상기 희생 메모리 블록들로 결정하는 단계를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
  3. 제 2 항에 있어서,
    상기 제1 가비지 컬렉션 기대 비용이 상기 제2 가비지 컬렉션 기대 비용보다 낮은 경우에, 상기 제1 메모리 블록들이 상기 희생 메모리 블록들로 결정되고,
    상기 제2 가비지 컬렉션 기대 비용이 상기 제1 가비지 컬렉션 기대 비용보다 낮은 경우에, 상기 제2 메모리 블록들이 상기 희생 메모리 블록들로 결정되는 것을 특징으로 하는 가비지 컬렉션 방법.
  4. 제 2 항에 있어서,
    상기 제1 가비지 컬렉션 기대 비용은 제1 메모리 블록들에 포함되는 제1 유효 페이지들의 개수에 기초하여 산출되는 것을 특징으로 하는 가비지 컬렉션 방법.
  5. 제 4 항에 있어서,
    상기 제1 가비지 컬렉션 기대 비용은 상기 제1 유효 페이지들의 개수의 총합인 것을 특징으로 하는 가비지 컬렉션 방법.
  6. 제 4 항에 있어서,
    상기 제1 가비지 컬렉션 기대 비용은 상기 제1 유효 페이지들의 개수의 총합을 하나의 메모리 블록에 포함되는 페이지들의 개수로 나눈 값인 것을 특징으로 하는 가비지 컬렉션 방법.
  7. 제 1 항에 있어서,
    상기 복수의 스트림들을 나타내는 복수의 스트림 ID(identifier)들 중 하나를 상기 복수의 메모리 블록들 중 하나에 대응시키고, 상기 복수의 메모리 블록들과 상기 복수의 스트림 ID들의 관계를 스트림 맵핑 테이블에 기록하는 단계; 및
    상기 복수의 스트림들 각각에 대한 가비지 컬렉션 기대 비용을 나타내는 스트림별 가비지 컬렉션 기대 비용 테이블을 관리하는 단계를 포함하고,
    상기 스트림별 가비지 컬렉션 기대 비용 테이블에 기초하여 상기 희생 메모리 블록들이 선정되는 것을 특징으로 하는 가비지 컬렉션 방법.
  8. 제 7 항에 있어서, 상기 스트림별 가비지 컬렉션 기대 비용 테이블을 관리하는 단계는,
    상기 복수의 메모리 블록들 중 상기 가비지 컬렉션 동작의 대상으로 선정 가능한 후보 메모리 블록들을 유효 페이지들의 개수에 따라 정렬하는 단계;
    상기 스트림 맵핑 테이블에 기초하여, 동일한 스트림 ID에 대응하는 메모리 블록들을 서로 연결하는 단계; 및
    상기 복수의 스트림 ID들 각각에 대한 상기 가비지 컬렉션 기대 비용을 산출하는 단계를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
  9. 제 8 항에 있어서, 상기 동일한 스트림의 데이터들을 저장하고 있는 상기 적어도 두 개의 메모리 블록들을 상기 희생 메모리 블록들로 선정하는 단계는,
    상기 스트림별 가비지 컬렉션 기대 비용 테이블을 탐색하여, 무효 페이지들의 개수의 합이 기준 값보다 크거나 같은 제1 조건을 만족하는 스트림 ID들이 존재하는지 판단하는 단계;
    상기 제1 조건을 만족하는 스트림 ID들 중 하나에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정하는 단계를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
  10. 제 9 항에 있어서,
    상기 제1 조건을 만족하는 스트림 ID들 중 상기 가비지 컬렉션 기대 비용이 가장 낮은 스트림 ID에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정하는 것을 특징으로 하는 가비지 컬렉션 방법.
  11. 제 7 항에 있어서,
    상기 스트림 맵핑 테이블 및 상기 스트림별 가비지 컬렉션 기대 비용 테이블은 상기 복수의 메모리 블록들 중 적어도 하나가 데이터 기입을 위해 할당되거나 프리(free) 메모리 블록이 될 때마다 업데이트되는 것을 특징으로 하는 가비지 컬렉션 방법.
  12. 제 7 항에 있어서, 상기 복수의 메모리 블록들과 상기 복수의 스트림 ID들의 관계를 상기 스트림 맵핑 테이블에 기록하는 단계는,
    상기 복수의 메모리 블록들 중 제1 메모리 블록이 데이터 기입을 위해 할당되는 경우에, 상기 제1 메모리 블록 및 상기 제1 메모리 블록에 저장하고자 하는 제1 데이터의 제1 스트림 ID를 상기 스트림 맵핑 테이블에 기록하는 단계; 및
    상기 복수의 메모리 블록들 중 제2 메모리 블록이 프리 메모리 블록이 되는 경우에, 상기 제2 메모리 블록 및 상기 제2 메모리 블록에 대응하는 제2 스트림 ID를 상기 스트림 맵핑 테이블에서 삭제하는 단계를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
  13. 제 1 항에 있어서, 상기 가비지 컬렉션 동작을 수행하는 단계는,
    상기 희생 메모리 블록들 중 제1 희생 메모리 블록에 포함되는 제1 유효 페이지들을 목적지(destination) 메모리 블록에 복사하는 단계;
    상기 희생 메모리 블록들 중 제2 희생 메모리 블록에 포함되는 제2 유효 페이지들을 상기 목적지 메모리 블록에 복사하는 단계; 및
    상기 제1 및 제2 희생 메모리 블록들에 대한 데이터 소거 동작을 수행하여, 상기 제1 및 제2 희생 메모리 블록들을 프리 메모리 블록으로 변경하는 단계를 포함하는 것을 특징으로 하는 가비지 컬렉션 방법.
  14. 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치; 및
    상기 복수의 메모리 블록들에 기입되는 복수의 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 데이터들을 기입하는 멀티 스트림(multi-stream) 방식으로 동작하도록 상기 비휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들 중 동일한 스트림의 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정하며, 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행하는 저장 장치.
  15. 제 14 항에 있어서,
    상기 복수의 메모리 블록들은 제1 스트림의 데이터들을 저장하는 제1 메모리 블록들 및 상기 제1 스트림과 다른 제2 스트림의 데이터들을 저장하는 제2 메모리 블록들을 포함하고,
    상기 스토리지 컨트롤러는 상기 제1 스트림의 데이터들에 대한 제1 가비지 컬렉션 기대 비용 및 상기 제2 스트림의 데이터들에 대한 제2 가비지 컬렉션 기대 비용을 산출하고, 상기 제1 가비지 컬렉션 기대 비용 및 상기 제2 가비지 컬렉션 기대 비용에 기초하여 상기 제1 메모리 블록들 및 상기 제2 메모리 블록들 중 하나를 상기 희생 메모리 블록들로 결정하는 것을 특징으로 하는 저장 장치.
  16. 제 14 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 메모리 블록들과 상기 복수의 스트림들을 나타내는 복수의 스트림 ID(identifier)들의 관계를 기록하는 스트림 맵핑 테이블, 및 상기 복수의 스트림들 각각에 대한 가비지 컬렉션 기대 비용을 나타내는 스트림별 가비지 컬렉션 기대 비용 테이블을 포함하는 것을 특징으로 하는 저장 장치.
  17. 제 16 항에 있어서, 상기 스트림별 가비지 컬렉션 기대 비용 테이블은,
    상기 복수의 메모리 블록들 중 상기 가비지 컬렉션 동작의 대상으로 선정 가능하고 유효 페이지들의 개수에 따라 정렬된 후보 메모리 블록들, 동일한 스트림 ID에 대응하는 메모리 블록들의 연결 관계, 및 상기 복수의 스트림 ID들 각각에 대한 상기 가비지 컬렉션 기대 비용을 포함하는 것을 특징으로 하는 저장 장치.
  18. 제 17 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 스트림별 가비지 컬렉션 기대 비용 테이블을 탐색하여, 무효 페이지들의 개수의 합이 기준 값보다 크거나 같은 제1 조건을 만족하는 스트림 ID들이 존재하는지 판단하고, 상기 제1 조건을 만족하는 스트림 ID들 중 상기 가비지 컬렉션 기대 비용이 가장 낮은 스트림 ID에 대응하는 메모리 블록들을 상기 희생 메모리 블록들로 결정하는 것을 특징으로 하는 저장 장치.
  19. 제 14 항에 있어서,
    상기 저장 장치는 SSD(solid state drive), MMC(multi media card), eMMC(embedded multi media card) 및 UFS(universal flash storage) 중 하나인 것을 특징으로 하는 저장 장치.
  20. 데이터 기입을 요청하는 기입 커맨드 및 기입하고자 하는 기입 데이터들을 발생하는 호스트; 및
    복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치를 포함하고, 상기 호스트로부터 상기 기입 커맨드 및 상기 기입 데이터들을 수신하여 상기 기입 데이터들을 상기 복수의 메모리 블록들 중 적어도 하나에 저장하고, 상기 기입 데이터들을 복수의 스트림들로 구분하여 관리하고 하나의 메모리 블록에 하나의 스트림의 기입 데이터들을 저장하는 멀티 스트림(multi-stream) 방식으로 동작하며, 상기 복수의 메모리 블록들 중 동일한 스트림의 기입 데이터들을 저장하고 있는 적어도 두 개의 메모리 블록들을 희생(victim) 메모리 블록들로 선정하고, 상기 희생 메모리 블록들에 대한 가비지 컬렉션 동작을 수행하는 저장 장치를 포함하는 컴퓨팅 시스템.

KR1020170153405A 2017-11-16 2017-11-16 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 KR102457400B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170153405A KR102457400B1 (ko) 2017-11-16 2017-11-16 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
US16/110,088 US10671287B2 (en) 2017-11-16 2018-08-23 Method of performing garbage collection, storage device performing the same and computing system including the same
CN201811358058.8A CN109800177B (zh) 2017-11-16 2018-11-15 垃圾收集方法、执行方法的存储设备和含设备的计算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170153405A KR102457400B1 (ko) 2017-11-16 2017-11-16 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20190056211A true KR20190056211A (ko) 2019-05-24
KR102457400B1 KR102457400B1 (ko) 2022-10-21

Family

ID=66433332

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170153405A KR102457400B1 (ko) 2017-11-16 2017-11-16 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템

Country Status (3)

Country Link
US (1) US10671287B2 (ko)
KR (1) KR102457400B1 (ko)
CN (1) CN109800177B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200140534A (ko) * 2019-06-07 2020-12-16 성균관대학교산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
US11467745B2 (en) 2019-11-05 2022-10-11 SK Hynix Inc. Storage device and method of operating the same
KR20220161895A (ko) * 2021-05-31 2022-12-07 한국항공대학교산학협력단 멀티스트림을 활용한 분산 병렬 시스템의 데이터 분리 저장 장치 및 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102596407B1 (ko) * 2018-03-13 2023-11-01 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20200142393A (ko) * 2019-06-12 2020-12-22 에스케이하이닉스 주식회사 저장 장치, 호스트 장치 및 그들의 동작 방법
KR20200142724A (ko) * 2019-06-13 2020-12-23 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법
CN111159059B (zh) * 2019-12-27 2022-03-04 深圳大普微电子科技有限公司 一种垃圾回收方法、装置及非易失性的存储设备
KR20210158043A (ko) * 2020-06-23 2021-12-30 삼성전자주식회사 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
CN114996173B (zh) * 2022-08-04 2022-11-18 合肥康芯威存储技术有限公司 一种管理存储设备写操作的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890550B2 (en) * 2006-11-03 2011-02-15 Samsung Electronics Co., Ltd. Flash memory system and garbage collection method thereof
US20130173875A1 (en) * 2011-12-28 2013-07-04 Samsung Electronics Co., Ltd. Method of managing storage region of memory device, and storage apparatus using the method
US20140006693A1 (en) * 2012-07-02 2014-01-02 SK Hynix Inc. Semiconductor device and operating method thereof
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255373B2 (en) 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US8521948B2 (en) 2011-01-03 2013-08-27 Apple Inc. Handling dynamic and static data for a system having non-volatile memory
US9466383B2 (en) 2013-12-30 2016-10-11 Sandisk Technologies Llc Non-volatile memory and method with adaptive logical groups
US9519429B2 (en) 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
IN2015CH01601A (ko) 2015-03-28 2015-05-01 Wipro Ltd
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
KR102509540B1 (ko) * 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
JP6403164B2 (ja) 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
KR20170044781A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9971681B2 (en) * 2016-06-01 2018-05-15 Nanjing University Lazy real time garbage collection method
JP2018160195A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法
KR102544162B1 (ko) * 2017-07-11 2023-06-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890550B2 (en) * 2006-11-03 2011-02-15 Samsung Electronics Co., Ltd. Flash memory system and garbage collection method thereof
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US20130173875A1 (en) * 2011-12-28 2013-07-04 Samsung Electronics Co., Ltd. Method of managing storage region of memory device, and storage apparatus using the method
US20140006693A1 (en) * 2012-07-02 2014-01-02 SK Hynix Inc. Semiconductor device and operating method thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200140534A (ko) * 2019-06-07 2020-12-16 성균관대학교산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
US11467745B2 (en) 2019-11-05 2022-10-11 SK Hynix Inc. Storage device and method of operating the same
KR20220161895A (ko) * 2021-05-31 2022-12-07 한국항공대학교산학협력단 멀티스트림을 활용한 분산 병렬 시스템의 데이터 분리 저장 장치 및 방법

Also Published As

Publication number Publication date
US20190146679A1 (en) 2019-05-16
CN109800177B (zh) 2024-03-08
KR102457400B1 (ko) 2022-10-21
US10671287B2 (en) 2020-06-02
CN109800177A (zh) 2019-05-24

Similar Documents

Publication Publication Date Title
KR102567140B1 (ko) 데이터 관리 방법 및 이를 수행하는 저장 장치
KR102457400B1 (ko) 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
CN107391027B (zh) 廉价磁盘冗余阵列存储设备及其管理方法
US9817717B2 (en) Stripe reconstituting method performed in storage system, method of performing garbage collection by using the stripe reconstituting method, and storage system performing the stripe reconstituting method
KR102570367B1 (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
CN110968522B (zh) 存储器系统及其操作方法、包括存储器系统的数据库系统
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
KR20220085826A (ko) 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원
KR20160050394A (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR102646252B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200132495A (ko) 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법
US10942678B2 (en) Method of accessing data in storage device, method of managing data in storage device and storage device performing the same
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
KR20210097353A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20210019577A (ko) 비-휘발성 메모리에서 데이터 유효성 추적
KR20200033459A (ko) 메모리 시스템 및 그것의 동작방법
US20230315646A1 (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
CN115543860A (zh) 数据处理系统及其操作方法
US11693574B2 (en) Method of writing data in storage device and storage device performing the same
CN117931055A (zh) 在多个存储器区域中分配和存储写入数据的设备和方法
KR20240065774A (ko) 네임스페이스의 순차성을 기초로 논리 주소를 변환하는 스토리지 장치 및 그 동작 방법
CN112068983A (zh) 存储器系统及其操作方法
CN112131143A (zh) 存储器系统、存储器控制器及元信息存储装置

Legal Events

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