KR20200141212A - 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 - Google Patents

가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR20200141212A
KR20200141212A KR1020190067907A KR20190067907A KR20200141212A KR 20200141212 A KR20200141212 A KR 20200141212A KR 1020190067907 A KR1020190067907 A KR 1020190067907A KR 20190067907 A KR20190067907 A KR 20190067907A KR 20200141212 A KR20200141212 A KR 20200141212A
Authority
KR
South Korea
Prior art keywords
garbage collection
memory
block
command queue
collection information
Prior art date
Application number
KR1020190067907A
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 KR1020190067907A priority Critical patent/KR20200141212A/ko
Priority to US16/782,880 priority patent/US11249903B2/en
Priority to CN202010245074.7A priority patent/CN112069086A/zh
Publication of KR20200141212A publication Critical patent/KR20200141212A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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
    • 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/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/061Improving I/O performance
    • 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/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
    • 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)

Abstract

본 기술은 복수의 메모리 블록을 갖는 복수의 다이를 포함하는 메모리 장치; 및 복수의 데이터 경로 중 적어도 하나를 통해 메모리 장치에 데이터를 전달하여 가비지콜렉션 동작을 수행하는 가비지콜렉션 모듈 및 메모리를 포함하는 컨트롤러를 포함하고, 상기 가비지 콜렉션 모듈은 상기 가비지콜렉션 동작의 타켓 블록이 상기 복수의 다이 중 어디에 포함되는 지에 대응하여 병렬 수행 가능 여부에 따라 호스트 태스크 동작과 디바이스 태스크 동작으로 구분하고 상기 가비지콜렉션 동작과 호스트로부터 수신된 명령에 대응하는 커맨드 동작을 병렬 수행할 지를 결정할 수 있다.

Description

가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법{MEMORY SYSTEM FOR GARBAGE COLLECTION OPERATION AND OPERATING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로서, 구체적으로 비휘발성 메모리 셀을 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명의 실시예에 따른 메모리 시스템은 호스트 커맨드 및 디바이스 커맨드를 병렬 또는 교번으로 수행할 수 있는 장치 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시예에 따른 메모리 시스템은 병렬 동작 가능여부에 따라 디바이스 커맨드를 분류하여 저장해 놓은 제1 및 제2 커맨드큐에서, 트리거 시점에 따라 디바이스 태스크를 선택하여 동작할 수 있는 메모리 시스템 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시예에 따른 메모리 시스템은 호스트 태스크와 병렬로 동작가능한 디바이스 태스크가 저장된 제1커맨드큐 및 호스트 태스크와 교번으로 동작할 수 있는 디바이스 태스크가 저장된 제2커맨드큐를 구분하여 제어함으로써, 트리거 시점에 따라 선택적으로 디바이스 태스크를 선택하여 수행할 수 있는 메모리 시스템 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시 예는 채널, 웨이 등의 데이터 통신 라인을 통해 구분되어지는 메모리 장치 내 복수의 영역 중 적어도 하나에 포함된 블록에 대해 가비지콜렉션을 수행하기 위해, 해당 블록(또는 오픈블록)이 위치하지 않는 다른 영역의 블록을 이용하여 가비지콜렉션을 위해 소요되는 시간을 줄이거나, 메모리 장치와 컨트롤러 사이의 데이터 이동에 있어 병목 현상을 줄일 수 있는 메모리 시스템 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시예에 따른 메모리 시스템은, 복수의 메모리 블록을 갖는 복수의 다이를 포함하는 메모리 장치; 및 복수의 데이터 경로 중 적어도 하나를 통해 메모리 장치에 데이터를 전달하여 가비지콜렉션 동작을 수행하는 가비지콜렉션 모듈 및 메모리를 포함하는 컨트롤러를 포함하고, 상기 가비지 콜렉션 모듈은 상기 가비지콜렉션 동작의 타켓 블록이 상기 복수의 다이 중 어디에 포함되는 지에 대응하여 병렬 수행 가능 여부에 따라 호스트 태스크 동작과 디바이스 태스크 동작으로 구분하고 상기 가비지콜렉션 동작과 호스트로부터 수신된 명령에 대응하는 커맨드 동작을 병렬 수행할 지를 결정할 수 있다.
본 발명의 실시예에 따른 메모리 시스템 동작 방법은, 복수의 메모리 블록을 갖는 복수의 다이를 포함하는 메모리 장치 및 메모리를 포함하고 상기 메모리 장치에 복수의 데이터 경로를 통해 데이터를 전달하여 호스트 태스크 동작과 디바이스 태스크 동작을 수행하는 컨트롤러에 있어서, 상기 호스트 태스크 동작과 디바이스 태스크 동작의 병렬 동작 가능 여부를 판단하여 희생블록을 검출한 후, 상기 희생 블록에 대응하는 가비지콜렉션 정보 및 상태정보를 상기 메모리에 저장하는 단계; 상기 상태정보에 따라 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐 중 어느 하나에 대응하여 순차적으로 큐잉하는 단계; 및 트리거 시점에 따라 가비지콜렉션 타입을 판단하며, 이에 대응하는 제1 또는 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 병렬(parallel) 혹은 교번(alternative)으로 가비지콜렉션 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 다양한 실시 예들에 따른 메모리 제어 장치 및 방법은 메모리 장치를 제어하여 호스트의 커맨드를 처리하는 호스트 태스크 및 메모리 장치의 자체적인 동작을 수행하는 디바이스 태스크를 병렬 또는 교번으로 동작할 수 있다.
본 기술은 프로그램 동작을 수행하기 위한 오픈블록이 포함되지 않은 다이에서 가비지콜렉션을 수행하기 위한 제1디바이스 태스크 및 오픈블록이 포함된 다이에서 가비지콜렉션을 수행하기 위한 제2디바이스 태스크를 구분하여 관리함으로써, 가비지콜렉션 수행 조건에 따라 선택적으로 가비지콜렉션 동작과 프로그램 동작을 병렬 또는 교번으로 수행할 수 있어 가비지콜렉션 동작에 따른 성능 저하를 줄일 수 있는 효과가 있다.
본 발명의 실시 예에 따른 메모리 시스템은 상태정보에 따라 희생블록에 대응하는 가비지콜렉션 정보를 별개의 큐에 큐잉함으로써 메모리 공간을 효율적으로 사용하고, 신속하게 가비지콜렉션 동작을 수행할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템 내 컨트롤러를 설명한다.
도 2는 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 슈퍼 메모리블록의 개념을 설명하기 위해 도시한 도면이다.
도 3은 가비지콜렉션의 예를 설명한다.
도 4는 본 발명의 실시예에 따른 메모리 시스템의 데이터 처리 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템의 동작 과정을 나타낸 흐름도이다.
도 6은 본 발명의 일실시예에 따른 희생블록관리부의 세부 구성을 나타내는 도면이다.
도 7 및 도 8은 본 발명의 일실시예에 따른 희생블록관리부의 동작 과정을 나타낸 흐름도이다.
도 9는 본 발명의 일실시예에 따른 큐 관리부의 세부 구성을 나타내는 도면이다.
도 10은 본 발명의 일실시예에 따른 큐 관리부의 동작 과정을 나타낸 흐름도이다.
도 11은 본 발명의 일실시예에 따른 가비지콜렉션관리부의 구성 요소를 나타내는 도면이다.
도 12는 본 발명의 일실시예에 따른 가비지콜렉션관리부의 동작 과정을 나타낸 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 본 발명의 실시예에 따른 메모리 시스템 내 컨트롤러를 설명한다.
도 1을 참조하면, 호스트(102) 및 메모리 장치(150)와 연동하는 컨트롤러(130)는 호스트 인터페이스 유닛(132), 플래시 변환 계층(FTL) 유닛(40), 메모리 인터페이스 유닛(142) 및 메모리(144)를 포함할 수 있다.
호스트 인터페이스 유닛(132)은 호스트(102)로부터 전달되는 커맨드, 데이터 등을 주고받기 위한 것이다. 예를 들어, 호스트 인터페이스 유닛(132)은 호스트(102)로부터 전달되는 커맨드, 데이터 등을 포함하는 호스트 태스크를 순차적으로 저장한 뒤, 저장된 순서에 따라 출력할 수 있는 호스트 커맨드큐(56), 호스트 커맨드큐(56)로부터 전달되는 호스트 태스크를 분류하거나 처리 순서를 조정할 수 있는 버퍼관리자(52), 및 버퍼관리자(52)로부터 전달된 호스트 태스크 등의 처리를 위한 이벤트를 순차적으로 전달하기 위한 이벤트큐(54)를 포함할 수 있다. 이하의 설명에서, 호스트 태스크는 호스트(102)로부터 전송되는 커맨드에 기반하여 컨트롤러(130)가 메모리 장치(150)에 데이터를 라이트하거나 또는 메모리 장치(150)에 라이트된 데이터를 리드하는 동작을 의미하는 용어로 사용될 것이다.
호스트(102)로부터 커맨드, 데이터는 동일한 특성의 복수개가 연속적으로 전달될 수도 있고, 서로 다른 특성의 커맨드, 데이터가 뒤 섞여 전달될 수도 있다. 예를 들어, 데이터를 읽기 위한 커맨드어가 복수 개 전달되거나, 읽기 및 프로그램 커맨드가 교번적으로 전달될 수도 있다. 호스트 인터페이스 유닛(132)은 호스트(102)로부터 전달된 커맨드, 데이터 등을 호스트 커맨드큐(56)에 먼저 순차적으로 저장한다. 이후, 호스트(102)로부터 전달된 커맨드, 데이터 등의 특성에 따라 컨트롤러(130)가 어떠한 동작을 수행할 지를 예측할 수 있으며, 이를 근거로 커맨드, 데이터 등의 처리 순서나 우선 순위를 결정할 수도 있다. 또한, 호스트(102)로부터 전달된 커맨드, 데이터 등의 특성에 따라, 호스트 인터페이스 유닛(132) 내 버퍼관리자(52)는 커맨드, 데이터 등을 메모리(144)에 저장할 지, 플래시 변환 계층(FTL) 유닛(40)으로 전달할 지도 결정할 수도 있다. 이벤트큐(54)는 호스트(102)로부터 전달된 커맨드, 데이터 등에 따라 메모리 시스템 혹은 컨트롤러(130)가 내부적으로 수행, 처리해야 하는 이벤트를 버퍼관리자(52)로부터 수신한 후, 수신된 순서대로 플래시 변환 계층(FTL) 유닛(40)에 전달할 수 있다.
실시예에 따라, 플래시 변환 계층(FTL) 유닛(40)은 이벤트큐(54)로부터 수신된 이벤트를 관리하기 위한 호스트 요구 관리자(Host Request Manager(HRM), 46), 맵 데이터를 관리하는 맵데이터 관리자(Map Manger(MM), 44), 가비지콜렉션 또는 웨어 레벨링을 수행하기 위한 상태 관리자(42), 메모리 장치 내 블록에 커맨드를 수행하기 위한 블록 관리자(48)를 포함할 수 있다.
예를 들면, 호스트 요구 관리자(HRM, 46)는 맵데이터 관리자(MM, 44) 및 블록 관리자(48)를 사용하여 호스트 인터페이스 유닛(132)으로부터 수신된 읽기 및 프로그램 커맨드, 이벤트에 따른 요청을 처리할 수 있다. 호스트 요구 관리자(HRM, 46)는 전달된 요청의 논리적 주소에 해당하는 물리적 주소를 파악하기 위해 맵데이터 관리자(MM, 44)에 조회 요청을 보내고 물리적 주소에 대해 메모리 인터페이스 유닛(142)에 플래시 읽기 요청을 전송하여 읽기 요청을 처리할 수 있다. 한편, 호스트 요구 관리자(HRM, 46)는 먼저 블록 관리자(48)에 프로그램 요청을 전송함으로써 미기록된(데이터가 없는) 메모리 장치의 특정 페이지에 데이터를 프로그램한 다음, 맵데이터 관리자(MM, 44)에 프로그램 요청에 대한 맵 갱신(update) 요청을 전송함으로써 논리적-물리적 주소의 매핑 정보에 프로그램한 데이터에 대한 내용을 업데이트할 수 있다.
여기서, 블록 관리자(48)는 호스트 요구 관리자(HRM, 46), 맵데이터 관리자(MM, 44), 및 상태 관리자(42)가 요청한 프로그램 요청을 메모리 장치(150)를 위한 프로그램 요청으로 변환하여 메모리 장치(150) 내 블록을 관리할 수 있다. 메모리 시스템(110)의 프로그램 혹은 쓰기 성능을 극대화하기 위해 블록 관리자(48)는 프로그램 요청을 수집하고 다중 평면 및 원샷 프로그램 작동에 대한 플래시 프로그램 요청을 메모리 인터페이스 유닛(142)으로 보낼 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리를 최대화하기 위해 여러 가지 뛰어난 플래시 프로그램 요청을 메모리 인터페이스 유닛(142)으로 전송할 수도 있다.
한편, 블록 관리자(48)는 유효 페이지 수에 따라 플래시 블록을 관리하고 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택 및 지우고, 쓰레기(garbage) 수집이 필요한 경우 가장 적게 유효한 페이지를 포함하고 있는 블록을 선택할 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 수집을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 삭제할 수 있다. 블록 관리자(48)가 상태 관리자(42)에게 삭제될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지가 유효한지 여부를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 각 유효한 페이지에 대해 블록 관리자(48)에 프로그램 요청을 전송하고, 프로그램 작업이 완료되면 맵 관리자(44)의 갱신을 통해 매핑 테이블이 업데이트될 수 있다.
맵 관리자(44)는 논리적-물리적 매핑 테이블을 관리하고, 호스트 요구 관리자(HRM, 46) 및 상태 관리자(42)에 의해 생성된 조회, 업데이트 등의 요청을 처리할 수 있다. 맵 관리자(44)는 전체 매핑 테이블을 플래시 메모리에 저장하고, 메모리 소자(144) 용량에 따라 매핑 항목을 캐시할 수도 있다. 조회 및 업데이트 요청을 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스 유닛(142)에 읽기 요청을 전송하여 메모리 장치(150)에 저장된 매핑 테이블을 로드(load)할 수 있다. 맵 관리자(44)의 더티 캐시 블록 수가 특정 임계 값을 초과하면 블록 관리자(48)에 프로그램 요청을 보내서 깨끗한 캐시 블록을 만들고 더티 맵 테이블이 메모리 장치(150)에 저장될 수 있다.
한편, 가비지콜렉션이 수행되는 경우, 상태 관리자(42)가 유효한 페이지를 복사하는 동안 호스트 요구 관리자(HRM, 46)는 페이지의 동일한 논리 주소에 대한 데이터의 최신 버전을 프로그래밍하고 업데이트 요청을 동시에 발행할 수 있다. 유효한 페이지의 복사가 정상적으로 완료되지 않은 상태에서 상태 관리자(42)가 맵 업데이트를 요청하면 맵 관리자(44)는 매핑 테이블 업데이트를 수행하지 않을 수도 있다. 맵 관리자(44)는 최신 맵 테이블이 여전히 이전 실제 주소를 가리키는 경우에만 맵 업데이트를 수행하여 정확성을 보장할 수 있다.
실시예에 따라, 상태 관리자(42), 맵 관리자(44) 혹은 블록 관리자(48) 중 적어도 하나는 도 3에서 설명될 가비지콜렉션모듈(Garbage Collection Module, GCM)(196)를 포함할 수 있다. 예를 들어, 상태 관리자(42), 맵 관리자(44) 혹은 블록 관리자(48) 중 적어도 하나는 호스트 인터페이스 유닛(132)로부터 전달되는 커맨드가 없더라도 백그라운드 동작을 수행할 수 있다. 가비지콜렉션모듈(196)은 도 4에서 후술할 희생블록 관리부(1961), 큐관리부(1962) 및 가비지콜렉션수행부(1963)을 포함할 수 있다. 가비지콜렉션모듈의 구성요소에 대해서는 도 4에서 상세히 설명하기로 한다.
메모리 인터페이스 유닛(142)은, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 수행하는 메모리/스토리지(storage) 인터페이스가 된다.
또한, 메모리 인터페이스 유닛(142)는 서로 다른 성질의 태스크를 수행하기 위한 커맨드들을 저장할 수 있는 복수의 디바이스 커맨드 큐로서 제1디바이스커맨드큐(PQ) 및 제2디바이스커맨드큐(SQ)를 포함할 수 있다. 제1디바이스커맨드큐(PQ) 및 제2디바이스커맨드큐(SQ) 각각에는 하나 이상의 디바이스 태스크(DEVICE TASK, DT)가 저장될 수 있다. 디바이스 태스크는 호스트(102)와 독립적으로 컨트롤러(130)가 특정 상태에서 메모리 장치(150)의 백그라운드 동작을 수행하는 태스크를 의미하는 용어로써. 가비지콜렉션(garbage collection), 웨어레벨링(wearleveling), 맵 테이블 갱신(map table update), SPO에 의한 리빌드 동작, 리드 리클레임 등과 같은 백그라운드 동작(background operation)을 포함할 수 있다. 일례로, 디바이스 태스크(DT)는 가비지콜렉션 동작을 위해 요구되는 커맨드 또는 정보를 포함할 수 있다. 제1디바이스커맨드큐(PQ)에는 호스트 태스크와 병렬로 수행할 수 있는 적어도 하나의 가비지콜렉션 동작을 위한 커맨드 또는 정보를 포함할 수 있다. 반면, 제2다비이스커맨드큐(SQ)에는 호스트 태스크와 교번으로 수행할 수 있는 즉, 유휴 구간에 동작할 수 있는 적어도 하나의 가비지콜렉션 동작을 위한 커맨드 또는 정보를 포함할 수 있다.
메모리 장치(150)는, 복수의 메모리블록들을, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(SLC: Single Level Cell) 메모리블록 및 멀티 레벨 셀(MLC: Multi Level Cell) 메모리블록 등으로 포함할 수 있다. 여기서, SLC 메모리블록은, 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, 데이터 연산 성능이 빠르며 내구성이 높다. 그리고, MLC 메모리블록은, 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 또는 그 이상의 비트)를 저장하는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하며, SLC 메모리블록보다 큰 데이터 저장 공간을 가짐, 다시 말해 고집적화할 수 있다. 특히, 메모리 장치(150)는, MLC 메모리블록으로, 하나의 메모리 셀에 2 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 MLC 메모리블록뿐만 아니라, 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 트리플 레벨 셀(TLC: Triple Level Cell) 메모리블록, 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 쿼드러플 레벨 셀(QLC: Quadruple Level Cell) 메모리블록, 또는 하나의 메모리 셀에 5 비트 또는 그 이상의 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 다중 레벨 셀(multiple level cell) 메모리블록 등을 포함할 수 있다.
여기서, 본 발명의 실시 예에서는, 설명의 편의를 위해, 메모리 장치(150)가, 플래시 메모리, 예컨대 NAND 플래시 메모리 등과 같은 비휘발성 메모리 등으로 구현되는 것을 일 예로 설명하지만, 상변환 메모리(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) 등과 같은 메모리들 중 어느 하나의 메모리로 구현될 수도 있다.
도 2는 본 발명의 실시예에 따른 메모리 시스템에서 사용되는 슈퍼 메모리블록의 개념을 설명하기 위해 도시한 도면이다. 여기서, 슈퍼 메모리 블록은 메모리 장치(150) 내 데이터 입출력과 관련한 동작이 병렬 수행될 수 있는 예(예, 인터리빙 동작 등)로서 설명된다.
도 2를 참조하면, 도 1을 참조하여 본 발명의 실시예에 따른 메모리 시스템(110)의 구성요소 중 메모리 장치(150)에 포함된 구성요소가 구체적으로 도시된 것을 알 수 있다.
메모리 장치(150)는, 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 포함한다.
또한, 메모리 장치(150)는, 제0 채널(CH0)을 통해 데이터를 입/출력할 수 있는 제1다이(1501)과 제1 채널(CH1)을 통해 데이터를 입/출력할 수 있는 제2다이(1502)을 포함한다. 이때, 제0 채널(CH0)과 제1 채널(CH1)은, 인터리빙(interleaving) 방식으로 데이터를 입/출력할 수 있다.
또한, 제1다이(1501)는, 제0 채널(CH0)을 공유하여 인터리빙 방식으로 데이터를 입/출력할 수 있는 다수의 경로(WAY0, WAY1)들에 각각 대응하는 다수의 플래인(PLANE00, PLANE01)들을 포함한다.
또한, 제2다이(1502)는, 제1 채널(CH1)을 공유하여 인터리빙 방식으로 데이터를 입/출력할 수 있는 다수의 경로(WAY2, WAY3)들에 각각 대응하는 다수의 플래인(PLANE10, PLANE11)들을 포함한다.
또한, 제1다이(1501)의 첫 번째 플래인(PLANE00)은, 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) 중 예정된 개수의 메모리블록(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N)을 포함한다.
또한, 제1다이(1501)의 두 번째 플래인(PLANE01)은, 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) 중 예정된 개수의 메모리블록(BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N)을 포함한다.
또한, 제2다이(1502)의 첫 번째 플래인(PLANE10)은, 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)중 예정된 개수의 메모리블록(BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N)을 포함한다.
또한, 제2다이(1502)의 두 번째 플래인(PLANE11)은, 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N) 중 예정된 개수의 메모리블록(BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 포함한다.
이와 같이. 메모리 장치(150)에 포함된 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)은, 같은 경로 또는 같은 채널을 사용하는 것과 같은 '물리적인 위치'에 따라 구분될 수 있다.
참고로, 도 2에서는 메모리 장치(150)에 2개의 메모리 다이(1501, 1502)가 포함되고, 각각의 메모리 다이(1501, 1502)마다 2개의 플래인(PLANE00, PLANE01 / PLANE10, PLANE11)이 포함되며, 각각의 플래인(PLANE00, PLANE01 / PLANE10, PLANE11)마다 예정된 개수의 메모리블록(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N / BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N / BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N / BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)이 포함되는 것으로 예시되어 있는데, 이는 어디까지나 하나의 실시예일 뿐이다. 실제로는, 설계자의 선택에 따라 메모리 장치(150)에 2개보다 더 많거나 더 적은 개수의 메모리 다이가 포함될 수 있고, 각각의 메모리 다이에도 2개보다 더 많거나 더 적은 개수의 플래인이 포함될 수 있다. 물론, 각각의 플래인에 포함되는 메모리블록의 개수인 '예정된 개수'도 설계자의 선택에 따라 얼마든지 조정가능하다.
한편, 메모리 장치(150)에 포함된 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 다수의 메모리 다이(1501, 1502) 또는 다수의 플래인(PLANE00, PLANE01 / PLANE10, PLANE11)과 같은 '물리적인 위치'로 구분하는 방식과는 별개로 컨트롤러(130)는, 다수의 메모리블록들 중 동시에 선택되어 동작하는 것을 기준으로 구분하는 방식을 사용할 수 있다. 즉, 컨트롤러(130)는, '물리적인 위치'의 구분방식을 통해 서로 다른 다이 또는 서로 다른 플래인으로 구분되었던 다수의 메모리블록들을 동시에 선택 가능한 블록들끼리 그룹화하여 슈퍼 메모리블록(super memory block)들로 구분하여 관리할 수 있다.
이렇게, 컨트롤러(130)에서 다수의 메모리블록들(BLOCK000, BLOCK001, BLOCK002, ..., BLCOK00N, BLOCK010, BLOCK011, BLOCK012, ..., BLCOK01N, BLOCK100, BLOCK101, BLOCK102, ..., BLCOK10N, BLOCK110, BLOCK111, BLOCK112, ..., BLCOK11N)을 슈퍼 메모리블록들로 구분하여 관리하는 방식은, 설계자의 선택에 따라 여러 가지 방식이 존재할 수 있는데, 여기에서는 세 가지 방식을 예시하도록 하겠다.
첫 번째 방식은, 컨트롤러(130)에서 메모리 장치(150)에 포함된 다수의 메모리 다이들(1501, 1502) 중 제1다이(1501)의 첫 번째 플래인(PLANE00)에서 임의의 하나의 메모리블록(BLOCK000)과, 두 번째 플래인(PLANE01)에서 임의의 하나의 메모리블록(BLOCK010)을 그룹화하여 하나의 슈퍼 메모리블록(A1)으로 관리하는 방식이다. 첫 번째 방식을 메모리 장치(150)에 포함된 다수의 메모리 다이들(1501, 1502) 중 제2다이(1502)에 적용하면, 컨트롤러(130)는, 제2다이(1502)의 첫 번째 플래인(PLANE10)에서 임의의 하나의 메모리블록(BLOCK100)과, 두 번째 플래인(PLANE11)에서 임의의 하나의 메모리블록(BLOCK110)을 그룹화하여 하나의 슈퍼 메모리블록(A2)으로 관리할 수 있다.
두 번째 방식은, 컨트롤러(130)에서 메모리 장치(150)에 포함된 다수의 메모리 다이들(1501, 1502) 중 제1다이(1501)의 첫 번째 플래인(PLANE00)에 포함된 임의의 하나의 메모리블록(BLOCK002)과, 제2다이(1502)의 첫 번째 플래인(PLANE10)에 포함된 임의의 하나의 메모리블록(BLOCK102)를 그룹화하여 하나의 슈퍼 메모리블록(B1)으로 관리하는 방식이다. 두 번째 방식을 다시 적용하면, 컨트롤러(130)는, 메모리 장치(150)에 포함된 다수의 메모리 다이들(1501, 1502) 중 제1다이(1501)의 두 번째 플래인(PLANE01)에 포함된 임의의 하나의 메모리블록(BLOCK012)과, 제2다이(1502)의 두 번째 플래인(PLANE11)에 포함된 임의의 하나의 메모리블록(BLOCK112)를 그룹화하여 하나의 슈퍼 메모리블록(B2)으로 관리할 수 있다.
세 번째 방식은, 컨트롤러(130)에서 메모리 장치(150)에 포함된 다수의 메모리 다이들(1501, 1502) 중 제1다이(1501)의 첫 번째 플래인(PLANE00)에 포함된 임의의 하나의 메모리블록(BLOCK001)과, 제1다이(1501)의 두 번째 플래인(PLANE01)에 포함된 임의의 하나의 메모리블록(BLOCK011)과, 제2다이(1502)의 첫 번째 플래인(PLANE10)에 포함된 임의의 하나의 메모리블록(BLOCK101), 및 제2다이(1502)의 두 번째 플래인(PLANE11)에 포함된 임의의 하나의 메모리블록(BLOCK111)을 그룹화하여 하나의 슈퍼 메모리블록(C)으로 관리하는 방식이다.
참고로, 슈퍼 메모리블록에 포함되는 동시에 선택 가능한 메모리블록들은, 인터리빙 방식, 예컨대, 채널 인터리빙(channel interleaving) 방식 또는 메모리 다이 인터리빙(memory 150 interleaving) 방식 또는 메모리 칩 인터리빙(memory chip interleaving) 방식 또는 경로 인터리빙(way interleaving) 방식 등을 통해 실질적으로 동시에 선택될 수 있다.
도 2에서 설명한 다이, 플래인, 블록은 비휘발성 메모리 셀이 포함되어 데이터를 저장할 수 있는 영역을 구분하기 위한 것일 수 있다. 예를 들어, 컨트롤러(130, 도1 참조)와 메모리 장치(150) 사이의 채널을 기준으로는 데이터를 저장할 수 있는 영역은 다이(150)로 구분될 수 있다. 컨트롤러(130, 도1 참조)와 메모리 장치(150) 사이의 웨이를 기준으로는 데이터를 저장할 수 있는 영역은 플래인(Plane)으로 구분될 수 있다. 메모리 장치(150) 내에서 수행되는 동작을 기준으로 하는 경우, 데이터를 저장할 수 있는 영역은 블록, 페이지 등으로 구분될 수 있다.
도 3은 가비지콜렉션의 예를 설명한다.
도 3을 참조하면, 컨트롤러(130)는 반복되는 프로그램 커맨드에 기인하여 메모리 장치(150)에 포함된 복수의 데이터 블록(40_1)에 저장된 무효(Invalid) 데이터의 양이 증가할 수 있다. 이러한 무효 데이터가 저장된 데이터 블록(40_1)을 재사용하기 위해 내부동작(ex, 가비지콜렉션, 웨어 레벨링 등)을 수행할 수 있다. 일례로, 컨트롤러(130)에 포함된 가비지콜렉션모듈(Garbage Collection Module, GCM)(196)는 무효 데이터가 저장된 데이터 블록(40_1)을 프리블록으로 변경하기 위해 가비지콜렉션(Garbage Collection)을 수행할 수 있다. 즉, 가비지콜렉션 수행 시점이 되면(예, 잔여 프리블록 개수가 임계값 이하인 경우 수행), 가비지콜렉션제어부(196)는 메모리 장치(150) 내 복수의 데이터 블록(40_1) 중에서 클로즈 상태를 갖는 데이터 블록(이하, 소스 블록(source block))을 확인한다. 확인된 소스블록들 중에서 유효 페이지 개수가 임의로 설정된 임계값보다 적은 유효페이지를 갖는 소스블록을 희생블록(victim block)으로 선택한다. 유효 페이지가 적은 소스블록을 선택하는 이유는, 유효페이지의 개수가 많은 소스 블록에 대해 가비지콜렉션을 수행하면 가비지콜렉션 수행 시간 및 비용(메모리 시스템 내 자원(resources)의 사용)이 늘어나고, 메모리 장치의 라이프 타임(Life Time)을 더 줄일 수 있기 때문이다. 다음으로, 가비지콜렉션제어부(196)는 희생블록에 포함된 유효 데이터를 프로그램 동작이 진행되지 않은 프리블록(40_2)인 대상블록(Destination Block)으로 복사하여 저장한다. 그리고, 가비지콜렉션제어부(196)는 유효 데이터가 복사되어 대상블록에 저장되면, 희생블록에 저장된 데이터를 모두 삭제(erase) 할 수 있다.
전술한 가비지콜렉션의 동작 중 메모리 장치(150)의 소스블록에서 프리블록으로 데이터를 이동시키기 위해, 컨트롤러(130)는 메모리 장치(150)의 소스블록으로부터 데이터를 읽고 메모리(144)에 로딩(loading)한 후, 메모리(144)에 저장된 데이터를 프리블록으로 프로그램할 수 있다. 컨트롤러(130)가 메모리 장치(150)에 읽기 동작 및 프로그램 동작을 수행하기 때문에, 가비지콜렉션이 수행되는 동안 외부(예, 도 1에서 호스트(102))로부터 읽기 커맨드 또는 프로그램 커맨드를 포함하는 호스트 태스크를 처리하기 위해 가비지콜렉션을 포함하는 디바이스 태스크를 중단할 수 있다.
여기서, 가비지콜렉션 수행 시간 및 비용을 줄이기 위해서, 커맨드 동작과 가비지콜렉션을 병렬로 수행하는 경우. 가비지콜렉션을 중단하지 않을 수 있다. 다시 말해, 프로그램 동작을 수행할 수 있는 오픈블록이 포함된 다이와 별개의 다이로부터 희생블록을 선택하여 희생 블록의 유효데이터를 대상블록으로 옮기므로써, 프로그램 동작과 가비지콜렉션 동작을 병렬로 수행할 수 있다. 이와 관련하여 도 4 내지 도 10을 통해 자세히 설명하기로 한다. 이때, 본 발명에서 메모리 장치에 포함된 복수의 다이는 하나 이상의 채널(CHANNEL)과 웨이(WAY)의해 개별적으로 관리될 수 있다. 그리고 본 발명의 실시예 중 적어도 하나는 슈퍼블록으로 구성되지 않은 형태 또는 슈퍼블록으로 구성된 형태의 메모리 장치(150)에 모두 적용 가능하다.
도 4는 본 발명의 실시예에 따른 메모리 시스템의 데이터 처리 동작을 설명하기 위한 도면이다. 도 4는 도 1의 데이터 처리 시스템(100)에서 본 발명과 관련된 구성만을 간략히 도시하고 있다.
도 1에서 설명한 가비지콜렉션모듈(196)은 희생 블록 관리부(1961), 큐 관리부(1962) 및 가비지콜렉션부(1963)를 포함할 수 있다. 또한 도 1에서 설명한 메모리 인터페이스 유닛(142)은 제1 및 2 디바이스커맨드큐들(PQ 및 SQ)을 포함할 수 있다. 그리고 메모리 장치(150)는 복수의 다이를 포함할 수 있다.
희생 블록 관리부(1961)는 병렬 동작 가능 여부를 판별하여 희생 블록을 검출한 후 희생 블록에 대한 가비지콜렉션 정보(
Figure pat00001
) 및 가비지콜렉션 정보에 대응하는 상태정보를 메모리(144)에 저장할 수 있다. 희생블록관리부(1961)는 오픈블록이 포함된 제N다이를 제외한 나머지 다이에 소스블록 존재여부에 따라 병렬 동작 가능 여부를 판별할 수 있다. 예를 들면, 오픈블록이 포함된 제N다이의 경우 호스트로부터 메모리 시스템으로 전달되는 데이터를 프로그램하기 위해, 메모리 시스템 내부에서 데이터를 이동시키는 가비지 컬렉션 동작을 수행하기 어렵다. 하지만, 오픈블록이 포함되지 않은 다른 다이의 경우, 채널/웨이 등을 통해 데이터가 전달될 수 있는 경로들이 사용되지 않고 있으므로, 사용되지 않는 채널/웨이 등을 통해 가비지 컬렉션 동작을 수행할 수 있다. 가비지콜렉션 정보(
Figure pat00002
)는 희생 블록의 주소 정보를 포함할 수 있다. 희생 블록 관리부(1961)는 복수의 소스블록 중 유효 페이지의 비율(Valid Page RATIO,VPR) 또는 유효페이지 개수(Valid Page Count,VPC)가 소정의 임계값(TH) 미만인 소스블록을 희생 블록으로 검출할 수 있다. 이와 관련하여 도 6에서 상세히 후술하기로 한다.
큐 관리부(1962)는 메모리(144)에 저장된 가비지콜렉션 정보(
Figure pat00003
)에 대응하는 상태 정보에 따라 가비지콜렉션 타입을 결정할 수 있다. 큐 관리부(1962)는 가비지콜렉션 정보에 대응하는 상태 정보에 따라 가비지콜렉션 정보를 제1 및 제2가비지콜렉션그룹으로 분류할 수 있다. 제1가비지콜렉션그룹은 호스트 태스크와 병렬로 가비지콜렉션을 수행할 수 있는 그룹이며, 제2가비지콜렉션그룹은 유휴(Idle)구간(호스트태스크를 처리하지 않는 구간) 동안 가비지콜렉션을 수행할 수 있는 그룹을 나타낼 수 있다. 그리고, 큐 관리부(1962)는 제1 또는 제2가비지콜렉션그룹으로 분류된 가비지콜렉션 정보를 제1 또는 제2가비지콜렉션 그룹에 대응하는 제1디바이스커맨드큐(PQ) 또는 제2디바이스커맨드큐(SQ)에 각각 큐잉할 수 있다. 이와 관련하여 도 8에서 상세히 후술하기로 한다.
가비지콜렉션 수행부(1963)는 트리거 시점에 따라서 수행될 가비지콜렉션의 타입을 판단한다. 가비지콜렉션수행부(1963)는 판단된 가비지콜렉션의 타입에 따라 메모리 인터페이스(142)에 포함된 제1 및 제2디바이스커맨드큐들(PQ 및 SQ)에 큐잉된 가비지콜렉션 정보를 확인다. 그리고, 가비지콜렉션 수행부(1963)는 가비지콜렉션 정보에 따라 희생 블록의 모든 유효 페이지가 대상 블록으로 복사한 후, 수행된 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐로부터 삭제할 수 있다. 이와 관련하여 도 10에서 상세히 후술하기로 한다.
메모리(144)는 가비지콜렉션정보리스트(144A) 및 가비지콜렉션버퍼(144B)를 포함할 수 있다. 가비지콜렉션정보리스트(144A)는 희생블록에 대한 가비지콜렉션정보 및 이에 대응하는 상태정보를 포함할 수 있다. 상태 정보는 플래그 정보로써, 1비트로 저장될 수 있으며, 1' 또는 0'으로 표현할 수 있다. 일례로, 검출된 희생블록이 오픈블록이 포함되지 않은 다이로부터 검출된 경우는 1로 표현하기로 한다. 반면에, 검출된 희생블록이 오픈블록이 포함된 다이로부터 검출된 경우는 0으로 표현하기로 한다. 가비지콜렉션버퍼(144B)는 가비지콜렉션 수행 시, 대상블록으로 옮겨질 희생블록의 유효데이터를 임시로 저장하기 위해 사용될 수 있는 버퍼이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 동작 과정을 나타낸 흐름도이다.
도 5를 참조하면, 단계 S510에서, 가비지콜렉션모듈(196)은 병렬 동작 가능 여부를 판별한 후 유효페이지 개수에 따라 희생 블록을 검출할 수 있다. 즉, 가비지콜렉션모듈(196)은 오픈블록이 포함된 제N다이를 제외한 나머지 다이에 소스블록 존재여부를 판별하여 병렬 동작 가능 여부를 판별할 수 있다. 그리고, 가비지콜렉션모듈(196)은 유효 페이지가 소정의 임계값 이상인 블록, 리드 카운트가 소정의 임계치 이상인 블록, 이레이즈 카운트가 소정의 임계치 미만인 블록 및 프로그램 페일이 발생한 블록을 희생 블록으로 검출할 수 있다. 일례로, 가비지콜렉션모듈(196)은 복수의 소스블록 중 유효 페이지의 개수(Valid Page Count, VPC) 또는 유효 페이지 비율(Valid Page RATIO, VPR)이 소정의 임계치(TH) 미만인 소스블록을 희생 블록으로 검출할 수 있다.
단계 S520에서, 가비지콜렉션모듈(196)은 검출된 희생블록에 대한 가비지콜렉션 정보(
Figure pat00004
)를 생성하여 메모리(144)에 저장할 수 있다. 가비지콜렉션 정보(
Figure pat00005
)는 희생 블록의 주소 정보를 포함할 수 있다.
단계 S530에서, 가비지콜렉션모듈(196)은 메모리(144)에 저장된 가비지콜렉션 정보(
Figure pat00006
)의 상태 정보에 따라 가비지콜렉션 타입을 결정할 수 있다. 본 발명의 일 실시예에 따르면, 가비지콜렉션 타입은 희생 블록의 주소 정보(예, 위치 정보)를 이용하여 결정될 수 있다. 가비지콜렉션모듈(196)는 결정된 가비지콜렉션 타입에 따라 가비지콜렉션 정보(
Figure pat00007
)를 제1디바이그커맨드큐 또는 제2커맨드큐에 각각 큐잉할 수 있다.
단계 S540에서, 가비지콜렉션모듈(196)은 트리거 시점에 따라서 수행될 가비지콜렉션의 타입을 판단한다. 일례로, 트리거 시점은 호스트 태스크 동작 또는 백그라운드 동작으로 설정할 수 있다. 가비지콜렉션모듈(196)은 호스트 태스크 동작이 수행되는 경우, 호스트 태스크를 수행하면서 가비지콜렉션을 수행하기 위해 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보를 확인한다. 반면에, 가비지콜렉션모듈(196)은 디바이스 태스크 동작을 수행할 수 있는 경우, 즉, 유휴 구간이 발생한 경우, 디바이스 태스크(백그라운드 동작) 동작을 수행하기 위해, 제2 디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보를 확인한다. 그리고, 가비지콜렉션모듈(196)은 가비지콜렉션 정보에 따라 희생 블록의 모든 유효 페이지를 대상 블록으로 복사한다. 가비지콜렉션모듈(196)은 가비지콜렉션 동작이 완료된 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐로부터 삭제할 수 있다.
도 6은 본 발명의 일실시예에 따른 희생블록관리부의 세부 구성을 나타내는 도면이다.
도 6을 참조하면, 희생 블록 관리부(1961)는 병렬동작판단부(1961A) 및 희생블록검출부(1961B)를 포함할 수 있다. 그리고 희생 블록 관리부(1961)는 메모리 장치(150)에 포함된 복수의 소스 블록으로부터 희생블록을 검출할 수 있다.
메모리 장치(150)는 복수의 다이를 포함할 수 있다. 일례로, 복수의 다이는 제1다이(1501), 제2다이(1502), 제3다이(1503) 및 제4다이(1504)를 포함할 수 있다. 복수의 다이 각각은 복수의 메모리블록을 포함할 수 있다. 복수의 메모리블록은 제1메모리블록(BLK1), 제2메모리블록(BLK2), 제3메모리블록(BLK3) 및 제4메모리블록(BLK4)을 포함할 수 있다. 본 발명의 범위가 이에 한정되는 것은 아니다. 복수의 메모리블록(BLK1~BLK4)은 프리블록, 오픈 또는 액티브 블록 및 소스블록으로 구분될 수 있다. 여기에서, 프리블록(FB)은 데이터가 저장되어 있지 않은 블록을 나타낸다. 일례로, 프리블록은 제1다이(1501)의 제2메모리블록(BLK2), 제2다이(1502)의 제2메모리블록(BLK2) 및 제4메모리블록(BLK4), 제3다이(1503)의 제1메모리블록(BLK1) 및 제4메모리블록(BLK4) 및 제4다이(1504)의 제2메모리블록(BLK2) 및 제3메모리블록(BLK3)을 포함할 수 있다. 오픈블록(OB)은 데이터가 저장되어 있는 블록으로서 데이터를 프로그램 할 수 있는 페이지가 남아 있는 블록을 나타낸다. 일례로, 오픈 블록은 제1다이(1501)의 제1메모리블록(BLK1)을 포함할 수 있다. 소스블록은 데이터가 저장되어 있는 블록으로서 데이터를 프로그램할 수 있는 페이지가 소진된 클로즈(close) 상태의 블록이다. 즉, 소스블록에는 프로그램할 수 있는 빈 페이지가 없다는 것을 의미한다. 일례로, 소스블록은 제1다이(1501)의 제3메모리블록(BLK3) 및 제4메모리블록(BLK4), 제2다이(1502)의 제1메모리블록(BLK1) 및 제3메모리블로(BLK3), 제3다이(1503)의 제2메모리블록(BLK2) 및 제3메모리블록(BLK3) 및 제4다이(1504)의 제1메모리블로(BLK1) 및 제4메모리블록(BLK4)을 포함할 수 있다.
가비지콜렉션모듈은 가비지콜렉션 동작과 호스트 태스크의 병렬 동작을 레이턴시 영향 없이 효과적으로 수행하기 위해, 가비지콜렉션 정보에 대응하는 상태 정보에 따라 분류하여 제1 및 제2디바이스 커맨드 큐에 큐잉하여 관리할 수 있다. 즉, 호스트 태스크 동작을 수행하면서 가비지콜렉션 동작을 수행하기 위한 제1디바이스 커맨드 큐와 호스트 태스크 동작이 수행되지 않는 경우(유휴구간인 경우), 일례로 가비지콜렉션 동작만 수행하기 위한 제2디바이스 커맨드 큐로 분류하여 관리할 수 있다. 이를 위해, 호스트 태스크 동작이 수행될 수 있는 오픈 블록이 포함하는 다이에서 검출된 희생 블록과 오픈 블록이 포함되지 않은 다이에서 검출된 희생블록으로 분류하여 선택적으로 수행될 수 있도록 함으로써 가비지콜렉션 동작에 따른 성능 저하를 개선할 수 있다. 이와 관련하여 병렬동작 판단부(1961A) 및 희생블록 검출부(1961B)를 통해 자세히 설명하기로 한다.
먼저, 병렬동작판단부(1961A)는 가비지콜렉션 이벤트가 발생하면, 디바이스 태스크(ex, 가비지콜렉션 동작) 및 호스트 태스크의 병렬 동작 가능 여부를 확인한다. 가비지콜렉션 동작과 호스트 태스크 동작의 병렬 동작 가능 여부(즉, 병렬 수행 가능 여부) 확인 결과에 따라, 후술에서 설명될 제1가비지콜렉션동작 또는 제2가비지콜렉션 동작 중 어느 하나를 결정하여 가비지콜렉션을 수행할 수 있다.
디바이스 태스크 및 호스트 태스크의 병렬 동작 가능 여부를 확인하기 위해, 병렬동작판단부(1961A)는 복수의 다이 중 오픈블록이 포함된 제n다이를 제외한 나머지 다이를 확인한다. 일례로, 복수의 다이 중 오픈블록이 포함된 다이는 제1다이(1501)이고, 제1다이(1501)에 포함된 복수의 블록 중 제1메모리블록(BLK1)이 오픈블록임을 알 수 있다. 그리고, 제1다이(1501)를 제외한 나머지 다이는 제2다이(1502), 제3다이(1503) 및 제4다이(1504))이다.
병렬동작판단부(1961A)는 나머지 다이에 소스블록이 존재하는지 확인한다.
확인 결과, 나머지 다이에 복수의 소스블록이 존재하는 경우, 병렬동작판단부(1961A)는 호스트 태스크 동작과 디바이스 태스크를 병렬로 동작시킬 수 있다고 판단한다. 일례로, 제2다이(1502)에는 소스블록인 제1메모리 블록(이하, 제1소스블록) 및 제3메모리 블록(이하, 제3소스블록)이 포함되어 있으며, 제3다이(1503)에는 소스블록인 제2메모리블록(이하, 제2소스블록) 및 제3메모리블록(이하, 제3소스블록)이 포함되어 있으며, 제4다이(1501)에는 소스블록인 제1메모리블록(이하, 제1소스블록) 및 제4메모리 블록(이하, 제4소스블록)이 포함되어 있다.
반면에, 나머지 다이에 복수의 소스블록이 존재하지 않고, 오픈블록이 포함된 제n다이에 복수의 소스블록이 존재하는 경우, 나머지 다이 중에서 희생블록으로 선택될 수 있는 소스블록이 존재하지 않기 때문에 호스트 태스크 동작과 디바이스 태스크가 병렬로 수행될 수 없다고 판단한다.
희생블록검출부(1961B)는 복수의 다이에 포함된 복수의 소스블록 중에서 하나 이상의 희생블록을 검출할 수 있다. 희생블록을 검출하는 방식을 두가지로 나눌 수 있다. 첫번째는 소정의 임계값의 기준을 유효페이지 비율로 설정했을 경우이고, 두번째는 소정의 임계값(TH)의 기준을 평균 유효페이지개수로 설정했을 경우로 나뉠 수 있다.
먼저, 소정의 임계값(TH)이 유효페이지비율로 설정된 경우에 대해 설명하기로 한다. 희생블록검출부(1961B)는 나머지 다이에 포함된 복수의 소스블록 중에서 유효페이지비율 이하인 소스블록을 희생블록으로 검출할 수 있다. 일례로, 각각의 메모리 블록에 100개의 페이지를 포함하고 있다고 가정하여 설명하기로 한다. 희생블록검출부(1961B)는 복수의 소스블록 중에서 유효페이지비율인 25% 이하의 유효페이지 개수를 갖는 소스블록을 희생블록으로 선택할 수 있다. 유효페이지비율은 임의로 설정될 수 있다. 제2다이(1502)에 포함된 제1소스블록의 유효페이지개수(VPC)는 10개이고, 유효페이지비율은 10%이며, 제3소스블록의 유효페이지개수(VPC)는 25개이며, 유효페이지비율은 25%이다. 제3다이(1503)에 포함된 제2소스블록의 유효페이지개수(VPC)는 40개이고, 유효페이지비율은 40%이며, 제3소스블록의 유효페이지개수(VPC)는 30개이며, 유효페이지비율은 30%이다. 제4다이(1504)에 포함된 제1소스블록의 유효페이지개수(VPC)는 45개이고, 유효페이지비율은 45%이며, 제4소스블록의 유효페이지개수(VPC)는 15개이며, 유효페이지비율은 15%이다. 여기서, 유효페이지비율이 25%이하인 소스블록은 제2다이(1502)에 포함된 제1소스블록 및 제3소스블록과 제4다이(1504)에 포함된 제4소스블록이며, 소스블록이 희생블록으로 검출될 수 있다.
두번째로, 제2임계값이 평균유효페이지개수로 설정된 경우부터 설명하기로 한다. 희생블록검출부(1961B)는 소정의 임계값(TH)을 설정하기 위해, 나머지 다이에 포함된 복수의 소스블록에 포함된 전체 페이지개수를 이용하여 평균유효페이지개수를 산출할 수 있다. 일례로, 산출된 평균유효페이지개수는 28이다. 희생블록검출부(1961B)는 유효페이지 개수가 28개 이하인 소스블록을 희생블록으로 선택할 수 있다. 유효페이지 개수가 28개 이하인 소스블록은 제2다이(1502)에 포함된 제1소스블록 및 제3소스블록과 제4다이(1504)에 포함된 제4소스블록이며, 소스블록이 희생블록으로 검출될 수 있다. 희생블록검출부(1961B)는 이와 같은 방식으로 희생 블록을 검출할 수 있다.
희생블록검출부(1961B)는 검출된 희생블록에 대한 가비지콜렉션정보 및 가비지콜렉션 정보에 대응하는 상태정보를 메모리(144)에 포함된 가비지콜렉션정보리스트(144A)에 임시로 저장한다. 즉, 희생블록검출부(1961B)는 검출된 희생블록이 오픈블록이 포함되지 않은 나머지 다이로부터 검출된 경우, 가비지콜렉션정보리스트(144A)에 검출된 희생블록에 대한 가비지콜렉션 정보 및 상태정보인'1'의 값으로 기록할 수 있다. 반면에, 검출된 희생블록이 오픈블록이 포함된 제N다이로부터 검출된 경우, 가비지콜렉션정보리스트(144A)에 검출된 희생블록에 대한 가비지콜렉션 정보 및 상태정보인'0'의 값으로 기록할 수 있다.
도 7 및 도 8은 본 발명의 일실시예에 따른 희생블록관리부의 동작 과정을 나타낸 흐름도이다.
도 7을 참조하면, 단계 S710 및 단계 S720에서, 희생블록관리부(1961)는 가비지콜렉션 동작과 호스트 태스크 동작의 병렬 동작 가능 여부를 확인한다. 가비지콜렉션 동작과 호스트 태스크 동작의 병렬 동작 가능 여부 결과에 따라, 후술에서 설명될 제1가비지콜렉션동작 또는 제2가비지콜렉션 동작 중 어느 하나를 결정하여 가비지콜렉션을 수행할 수 있다. 가비지콜렉션 동작과 호스트 태스크 동작의 병렬 동작 가능 여부를 확인하는 방법은, 도 8을 통해 설명하기로 한다.
단계 S810에서, 희생블록관리부(1961)는 복수의 다이 중 오픈블록이 포함된 하나 이상의 제n다이를 확인한 후, 상기 복수의 다이 중 상기 제n다이를 제외한 나머지 다이를 확인한다.
단계 S820에서, 희생블록관리부(1961)는 오픈블록이 포함된 제n다이를 제외한 나머지 다이에 소스블록이 존재하는지 확인한다. 확인 결과, 상기 나머지 다이에 소스블록이 존재하는 경우(단계 S820에서 "YES"), 희생블록관리부(1961)는 가비지콜렉션 동작 수행 시, 라이트 동작과 병렬로 동작시킬 수 있다고 판단한다(단계 S830).
반면에, 상기 나머지 다이에 복수의 소스블록이 존재하지 않고, 오픈블록이 포함된 제n다이에 복수의 소스블록이 존재하는 경우(단계 S820에서 "NO"), 나머지 다이 중에서 희생블록으로 선택될 수 있는 소스블록이 존재하지 않기 때문에 가비지콜렉션 동작과 라이트 동작이 병렬로 수행될 수 없다고 판단한다(단계 S840).
도 7로 돌아와서, 희생블록관리부(1961)는 도 8을 통해 판단된 결과에 따라, 상기 가비지콜렉션 동작 수행 시, 호스트 태스크 동작과 병렬로 동작시킬 수 있다고 판단된 경우(단계 720에서 "Yes"), 나머지 다이에 포함된 복수의 소스블록 중 희생 블록을 검출한다(단계 S730). 반면에, 가비지콜렉션동작과 호스트 태스크 동작을 병렬로 동작시킬 수 없는 경우(No), 제n다이에 포함된 소스블록 중 희생 블록을 검출한다(단계 S750). 도 6에서 희생블록을 검출하는 방법에 대해 설명하였기에 생략하기로 한다.
그리고, 단계 S740에서, 희생블록관리부(1961)는 단계 S730 및 단계 S750에서 검출된 희생블록에 대한 가비지콜렉션 정보 및 상태정보를 생성하여 메모리(144)에 포함된 가비지콜렉션정보리스트(144A)에 저장할 수 있다.
도 9는 본 발명의 일실시예에 따른 큐 관리부의 세부 구성을 나타내는 도면이다.
도 9를 참조하면, 큐관리부(1962)는 희생블록타입검출부(1962A), 분류부(1962B) 및 큐잉부(1962C)를 포함할 수 있다.
희생블록타입검출부(1962A)는 가비지콜렉션정보리스트(144A)에 저장된 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보를 이용하여 희생블록의 타입 정보(InfoVT)을 검출할 수 있다. 즉, 희생블록타입검출부(1962A)는 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보에 따라 희생블록의 타입이 병렬타입인지 직렬(또는 교번)타입인지 검출할 수 있다. 희생블록타입검출부(1962A)는 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보가 '1'인 경우, 희생블록의 타입 정보(InfoVT)를 병렬타입으로 검출한다. 반면에. 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보가 '0'인 경우, 희생블록의 타입 정보(InfoVT)를 직렬타입으로 검출한다. 희생블록타입검출부(1962A)는 희생 블록 별로 검출된 희생블록의 타입 정보(InfoVT)를 분류부(1962B)로 제공할 수 있다.
분류부(1962B)는 희생블록타입검출부(1962A)로부터 전달받은 희생블록의 타입 정보(InfoVT)에 따라 가비지콜렉션 정보(InfoGC)를 제1 또는 제2가비지콜렉션그룹 중 어느 하나로 분류할 수 있다. 분류부(1962B)는 희생블록의 타입 정보(InfoVT)가 병렬타입인 경우, 제1가비지콜렉션그룹으로 분류하고, 희생블록의 타입 정보(InfoVT)가 직렬타입인 경우, 제2가비지콜렉션그룹으로 분류할 수 있다. 분류부(1962B)는 제1 및 제2가비지콜렉션그룹으로 분류된 가비지콜렉션 정보(InfoGC)를 큐잉부(1962C)에 전달한다.
큐잉부(1962C)는 제1 또는 제2가비지콜렉션그룹(InfoPQG 또는 InfoSQG)으로 분류된 가비지콜렉션 정보(InfoGC)를 제1디바이스커맨드큐(PQ) 또는 제2디바이스커맨드큐(SQ) 중 대응되는 디바이스커맨드큐에 순차적으로 큐잉할 수 있다. 큐잉부(1962C)는 제1가비지콜렉션그룹(InfoPQG)으로 분류된 가비지콜렉션 정보(InfoGC)는 제1디바이스커맨드큐(PQ)에 큐잉할 수 있고, 제2가비지콜렉션그룹(InfoSQG)으로 분류된 가비지콜렉션 정보(InfoGC)는 제2디바이스커맨드큐(SQ)에 큐잉할 수 있다.
도 10은 본 발명의 일실시예에 따른 큐 관리부의 동작 과정을 나타낸 흐름도이다.
도 10을 참조하면, 단계 S1010에서, 큐 관리부(1962)는 가비지콜렉션정보리스트(144A)에 저장된 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보를 이용하여 희생블록의 타입 정보(InfoVT)을 검출할 수 있다.
단계 S1020에서 큐 관리부(1962)는 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보에 따라 희생블록의 타입(즉, 해당 희생블록에 대한 가비지콜렉션 동작이 병렬/교번 수행되는 종류)이 병렬타입(Parallel Type)인지 직렬(또는 교번)타입(Serial Type)인지 검출할 수 있다. 큐 관리부(1962)는 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보가 '1'인 경우, 희생블록의 타입 정보(InfoVT)를 병렬타입으로 검출한다. 반면에, 가비지콜렉션 정보(InfoGC)에 대응하는 상태정보가 '0'인 경우, 희생블록의 타입 정보(InfoVT)를 직렬타입으로 검출한다.
단계 S1030에서, 큐 관리부(1962)는 희생블록의 타입 정보(InfoVT)가 병렬타입인 경우, 제1가비지콜렉션그룹으로 분류한다. 그리고 제1가비지콜렉션그룹(InfoPQG)으로 분류된 가비지콜렉션 정보(InfoGC)를 제1디바이스커맨드큐(PQ)에 큐잉한다.
단계 S1040에서, 큐 관리부(1962)는 희생블록의 타입 정보(InfoVT)가 직렬타입인 경우, 제2가비지콜렉션그룹으로 분류할 수 있다. 그리고 제2가비지콜렉션그룹(InfoSQG)으로 분류된 가비지콜렉션 정보(InfoGC)를 제2디바이스커맨드큐(SQ)에 큐잉한다.
희생블록검출부(1961B)는 복수의 다이에 포함된 복수의 소스블록 중에서 하나 이상의 희생블록을 검출할 수 있다. 희생블록을 검출하는 방식을 두가지로 나눌 수 있다. 첫번째는 소정의 임계값의 기준을 유효페이지 비율로 설정했을 경우이고, 두번째는 소정의 임계값(TH)의 기준을 평균 유효페이지개수로 설정했을 경우로 나뉠 수 있다.
도 11은 본 발명의 일실시예에 따른 가비지콜렉션관리부의 구성 요소를 나타내는 도면이다.
도 11을 참조하면, 가비지콜렉션관리부(1963)는 가비지콜렉션타입판단부(1963A), 가비지콜렉션수행부(1963B)를 포함할 수 있다.
가비지콜렉션타입판단부(1963A)는 트리거 시점에 따라서 수행될 가비지콜렉션의 타입을 판단한다. 일례로, 트리거 시점은 호스트 태스크 동작 또는 디바이스 태스크 동작으로 설정할 수 있다. 가비지콜렉션타입판단부(1963A)는 호스트 태스크 동작이 수행되는 경우, 호스트 태스크를 수행하면서 가비지콜렉션을 수행하기 위해 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보가 존재하는지 확인한다. 확인 결과, 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보가 존재하는 경우, 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보를 가비지콜렉션수행부(1963B)에 제공한다. 반면에, 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우, 호스트 태스크와 병렬로 가비지콜렉션 동작을 수행할 수 없기 때문에 호스트 태스크 동작이 완료된 후, 유휴구간에서 가비지콜렉션 동작을 수행하기 위해 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보를 가비지콜렉션수행부(1963B)에 제공한다.
한편, 가비지콜렉션타입판단부(1963A)는 디바이스 태스크 동작이 수행될 수 있는 경우, 즉, 유휴 구간인 경우, 호스트 태스크를 수행하면서 가비지콜렉션을 우선 수행할 필요가 없다. 따라서, 가비지콜렉션타입판단부(1963A)는 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보가 존재하는지 확인한다. 확인 결과, 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보가 존재하는 경우, 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보를 가비지콜렉션수행부(1963B)에 제공한다. 반면에, 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우, 유휴구간동안, 가비지콜렉션 동작을 수행하기 위해 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보를 가비지콜렉션수행부(1963B)에 제공할 수 있다.
가비지콜렉션수행부(1963B)는 가비지콜렉션타입판단부(1963A)로부터 전달받은 가비지콜렉션 정보에 따라 희생 블록의 모든 유효 페이지를 가비지콜렉션버퍼(144B)에 임시로 저장한다. 가비지콜렉션수행부(1963B)는 가비지콜렉션버퍼(144B)에 저장된 모든 유효 페이지를 대상 블록으로 복사한다. 가비지콜렉션수행부(1963B)는 가비지콜렉션 동작이 수행된 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐로부터 삭제할 수 있다.
도 12는 본 발명의 일실시예에 따른 가비지콜렉션관리부의 동작 과정을 나타낸 흐름도이다.
도 12를 참조하면, 단계 S1210에서, 가비지콜렉션관리부(1963)는 트리거 시점에 따라서 수행될 가비지콜렉션의 타입을 판단한다. 일례로, 트리거 시점은 호스트 태스크 동작 또는 디바이스 태스크 동작으로 설정할 수 있다.
단계 S1220에서, 가비지콜렉션관리부(1963)는 트리거 시점이 호스트 태스크 동작이 수행되는 경우, 단계 S1230에서, 호스트 태스크를 수행하면서 가비지콜렉션 동작을 수행하기 위해 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보가 존재하는지 확인한다.
제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보가 존재하는 경우(단계 S1230에서, "YES"), 가비지콜렉션관리부(1963)는 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션동작을 수행한다.
반면에, 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우(단계 S1230에서, "NO"), 가비지콜렉션관리부(1963)는 호스트 태스크와 병렬로 가비지콜렉션 동작을 수행할 수 없기 때문에 호스트 태스크 동작이 완료된 후, 유휴구간에서 가비지콜렉션 동작을 수행하기 위해 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션 동작을 수행한다.
한편, 단계 S1220에서 가비지콜렉션관리부(1963)는 디바이스 태스크 동작이 수행될 수 있는 경우, 즉, 유휴 구간인 경우, 호스트 태스크를 수행하면서 가비지콜렉션을 우선 수행할 필요가 없기 때문에, 가비지콜렉션타입판단부(1963A)는 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보가 존재하는지 확인한다(단계 S1260).
제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보가 존재하는 경우(단계 S1260, "YES"), 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보에 따라 가비지 콜레션 동작을 수행한다(단계 S1270).
반면에, 제2디바이스커맨드큐들(SQ)에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우(단계 S1260, "NO"), 유휴구간동안, 가비지콜렉션 동작을 수행하기 위해 제1디바이스커맨드큐들(PQ)에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션 동작을 수행한다(단계 S1240).
단계 S1240 및 S1270에서 수행된 가비지콜렉션 수행 방법은, 가비지콜렉션관리부(1963)는 가비지콜렉션 정보에 따라 희생 블록의 모든 유효 페이지를 가비지콜렉션버퍼(144B)에 임시로 저장한다. 가비지콜렉션관리부(1963)는 가비지콜렉션버퍼(144B)에 저장된 모든 유효 페이지를 대상 블록으로 복사한다.
단계 S1250에서, 가비지콜렉션관리부(1963)는 가비지콜렉션 동작이 수행된 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐로부터 삭제할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (29)

  1. 복수의 메모리 블록을 갖는 복수의 다이를 포함하는 메모리 장치; 및
    복수의 데이터 경로 중 적어도 하나를 통해 메모리 장치에 데이터를 전달하여 가비지콜렉션 동작을 수행하는 가비지콜렉션 모듈 및 메모리를 포함하는 컨트롤러
    를 포함하고,
    상기 가비지 콜렉션 모듈은 상기 가비지콜렉션 동작의 타켓 블록이 상기 복수의 다이 중 어디에 포함되는 지에 대응하여 병렬 수행 가능 여부에 따라 호스트 태스크 동작과 디바이스 태스크 동작으로 구분하고 상기 가비지콜렉션 동작과 호스트로부터 수신된 명령에 대응하는 커맨드 동작을 병렬 수행할 지를 결정하는,
    메모리 시스템.
  2. 제1 항에 있어서,
    상기 가비지콜렉션 모듈은,
    상기 호스트 태스크 동작과 디바이스 태스크 동작의 병렬 수행 가능 여부를 판단하여 희생블록을 검출한 후, 상기 희생 블록에 대응하는 가비지콜렉션 정보 및 상태정보를 상기 메모리에 저장하는 희생 블록 관리부;
    상기 상태정보에 따라 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐 중 어느 하나에 대응하여 순차적으로 큐잉하는 큐 관리부; 및
    트리거 시점에 따라 가비지콜렉션 타입을 판단하며, 이에 대응하는 제1 또는 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 병렬(parallel) 혹은 교번(alternative)으로 가비지콜렉션 동작을 수행하는 가비지콜렉션 관리부
    를 포함하는 메모리 시스템.
  3. 제2항에 있어서,
    상기 희생 블록 관리부는,
    상기 호스트 태스크 동작과 디바이스 태스크 동작의 병렬 가능 여부를 판단하기 위해, 상기 복수의 다이 중 오픈블록이 포함된 제n다이를 제외한 나머지 다이에 소스블록 존재 여부를 확인하며, 나머지 다이에 소스블록이 존재하는 경우 호스트 태스크 동작과 디바이스 태스크 동작을 병렬로 동작시킬 수 있다고 판단하고, 상기 나머지 다이에 복수의 소스블록이 존재하지 않으면, 상기 호스트 태스크 동작과 디바이스 태스크 동작을 교번으로 수행할 수 있다고 판단하는
    메모리 시스템.
  4. 제2항에 있어서,
    상기 희생 블록 관리부는,
    상기 호스트 태스크 동작과 디바이스 태스크 동작이 병렬로 수행할 수 있다고 판단한 경우, 상기 나머지 다이에 포함된 복수의 소스블록 중에서 희생블록을 검출하고, 상기 호스트 태스크 동작과 디바이스 태스크 동작이 병렬로 수행할 수 없다고 판단한 경우, 상기 제n다이에 포함된 복수의 소스블록 중에서 희생블록을 검출하는
    메모리 시스템.
  5. 제4항에 있어서,
    상기 희생 블록 관리부는,
    상기 검출된 희생블록에 대한 가비지콜렉션 정보 및 병렬가능 여부를 나타내는 상태정보를 상기 메모리 저장하는 메모리 시스템.
  6. 제2항에 있어서,
    상기 큐 관리부는,
    상기 메모리에 저장된 가비지콜렉션 정보에 대응하는 상태정보를 이용하여 희생블록의 타입 정보를 검출하고,
    검출된 희생블록의 타입 정보에 따라 가비지콜렉션 정보를 제1 또는 제2가비지콜렉션그룹 중 어느 하나로 분류하며,
    분류된 가비지콜렉션 정보를 제1디바이스커맨드큐 또는 제2디바이스커맨드큐 중 대응되는 디바이스커맨드큐에 순차적으로 큐잉하는
    메모리 시스템.
  7. 제2항에 있어서,
    상기 제1디바이스커맨드큐는,
    상기 호스트 태스크 동작을 수행할 때 병렬로 디바이스 태스크 동작을 수행할 수 있는 가비지콜렉션 정보가 큐잉된
    메모리 시스템.
  8. 제2항에 있어서,
    상기 제2디바이스커맨드큐는,
    상기 호스트 태스크 동작이 수행되지 않는 유휴구간이 발생하여 디바이스 태스크 동작만 수행할 수 있는 가비지콜렉션 정보가 큐잉된
    메모리 시스템.
  9. 제2항에 있어서,
    상기 트리거 시점은,
    상기 호스트 태스크 동작 또는 디바이스 태스크 동작으로 분류하는 메모리 시스템.
  10. 제9항에 있어서,
    상기 가비지콜렉션관리부는
    상기 트리거 시점이 상기 호스트 태스크 동작이 수행되는 경우일 때,
    상기 호스트 태스크와 디바이스 태스크 동작을 병렬로 수행하기 위해 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재를 확인하여 가비지콜렉션 동작을 수행하는
    메모리 시스템.
  11. 제10항에 있어서,
    상기 가비지콜렉션관리부는,
    상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재를 확인한 결과,
    상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하는 경우, 상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하며,
    상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우, 상기 유휴구간에서 가비지콜렉션 동작을 수행할 수 있는 상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하는
    메모리 시스템.
  12. 제9항에 있어서,
    상기 가비지콜렉션관리부는
    상기 트리거 시점이 상기 디바이스 태스크 동작이 수행되는 경우일 때,
    상기 호스트 태스크와 디바이스 태스크 동작을 교번으로 수행하기 위해, 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재를 확인하여 가비지콜렉션 동작을 수행하는
    메모리 시스템.
  13. 제11항에 있어서,
    상기 가비지콜렉션관리부는,
    상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재를 확인한 결과,
    상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하는 경우, 상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하며,
    상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우, 상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하는
    메모리 시스템.
  14. 제2항에 있어서,
    상기 가비지콜렉션관리부는,
    상기 가비지콜렉션 정보에 따라 희생 블록의 모든 유효 페이지를 메모리에 임시로 저장하며, 저장된 모든 유효 페이지를 대상 블록으로 복사하는
    메모리 시스템.
  15. 제14항에 있어서,
    상기 가비지콜렉션관리부는,
    상기 가비지콜렉션 동작이 수행된 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐로부터 삭제하는
    메모리 시스템.
  16. 복수의 메모리 블록을 갖는 복수의 다이를 포함하는 메모리 장치 및 메모리를 포함하고 복수의 데이터 경로 중 적어도 하나를 통해 상기 메모리 장치에 데이터를 전달하여 호스트 태스크 동작과 디바이스 태스크 동작을 수행하는 컨트롤러에 있어서,
    상기 호스트 태스크 동작과 디바이스 태스크 동작의 병렬 수행 가능 여부를 판단하여 희생블록을 검출한 후, 상기 희생 블록에 대응하는 가비지콜렉션 정보 및 상태정보를 상기 메모리에 저장하는 단계;
    상기 상태정보에 따라 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐 중 어느 하나에 순차적으로 큐잉하는 단계; 및
    트리거 시점에 따라 가비지콜렉션 타입을 판단하며, 이에 대응하는 제1 또는 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 병렬(parallel)로 가비지콜렉션 동작을 수행하는 단계
    를 포함하는 메모리 시스템 동작 방법
  17. 제16항에 있어서,
    상기 호스트 태스크 동작과 디바이스 태스크 동작의 병렬 동작 가능 여부를 판단하는 단계는,
    상기 복수의 다이 중 오픈블록이 포함된 제n다이를 제외한 나머지 다이에 소스블록 존재 여부를 확인하는 단계;
    상기 나머지 다이에 소스블록이 존재하는 경우 상기 호스트 태스크 동작과 디바이스 태스크 동작을 병렬로 동작시킬 수 있다고 판단하는 단계; 및
    상기 나머지 다이에 복수의 소스블록이 존재하지 않으면 상기 호스트 태스크 동작과 디바이스 태스크 동작을 교번으로 동작시킬 수 있다고 판단하는 단계
    를 더 포함하는 메모리 시스템 동작 방법.
  18. 제16항에 있어서,
    상기 호스트 태스크 동작과 디바이스 태스크 동작이 병렬로 수행할 수 있다고 판단한 경우,
    상기 나머지 다이에 포함된 복수의 소스블록 중에서 희생블록을 검출하는
    메모리 시스템 동작 방법.
  19. 제16항에 있어서,
    상기 호스트 태스크 동작과 디바이스 태스크 동작이 병렬로 수행할 수 없다고 판단한 경우,
    상기 제n다이에 포함된 복수의 소스블록 중에서 희생블록을 검출하는
    메모리 시스템 동작 방법.
  20. 제16항에 있어서,
    상기 검출된 희생블록에 대한 가비지콜렉션 정보 및 병렬가능 여부를 나타내는 상태정보를 상기 메모리 저장하는 메모리 시스템.
  21. 제16항에 있어서,
    상기 상태정보에 따라 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐 중 어느 하나에 대응하여 순차적으로 큐잉하는 단계는,
    상기 메모리에 저장된 가비지콜렉션 정보에 대응하는 상태정보를 이용하여 희생블록의 타입 정보를 검출하는 단계;
    검출된 희생블록의 타입 정보에 따라 가비지콜렉션 정보를 제1 또는 제2가비지콜렉션그룹 중 어느 하나로 분류는 단계; 및
    분류된 가비지콜렉션 정보를 제1디바이스커맨드큐 또는 제2디바이스커맨드큐 중 대응되는 디바이스커맨드큐에 순차적으로 큐잉하는 단계
    를 포함하는 메모리 시스템 동작 방법.
  22. 제16항에 있어서,
    상기 제1디바이스커맨드큐는,
    상기 호스트 태스크 동작을 수행할 때 병렬로 디바이스 태스크 동작을 수행할 수 있는 가비지콜렉션 정보가 큐잉된
    메모리 시스템 동작 방법.
  23. 제16항에 있어서,
    상기 제2디바이스커맨드큐는,
    상기 호스트 태스크 동작이 수행되지 않는 유휴구간이 발생하여 디바이스 태스크 동작만 수행할 수 있는 가비지콜렉션 정보가 큐잉된
    메모리 시스템 동작 방법.
  24. 제16항에 있어서,
    상기 트리거 시점은,
    상기 호스트 태스크 동작 또는 디바이스 태스크 동작으로 분류하는 메모리 시스템 동작 방법.
  25. 제24항에 있어서,
    상기 트리거 시점이 상기 호스트 태스크 동작이 수행되는 경우일 때,
    상기 호스트 태스크와 디바이스 태스크 동작을 병렬로 수행하기 위해 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재를 확인하고, 상기 가비지콜렉션 정보에 따라 가비지콜렉션 동작을 수행하는
    메모리 시스템 동작 방법.
  26. 제25항에 있어서,
    상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재 확인 결과,
    상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하는 경우, 상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하며,
    상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우, 상기 유휴구간에서 가비지콜렉션 동작을 수행할 수 있는 상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하는
    메모리 시스템 동작 방법.
  27. 제24항에 있어서,
    상기 트리거 시점이 상기 디바이스 태스크 동작이 수행되는 경우일 때,
    상기 호스트 태스크와 디바이스 태스크 동작을 교번으로 수행하기 위해, 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재를 확인하여 가비지콜렉션 동작을 수행하는
    메모리 시스템 동작 방법.
  28. 제27항에 있어서,
    상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보의 존재 확인 결과,
    상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하는 경우, 상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하며,
    상기 제2디바이스커맨드큐에 큐잉된 가비지콜렉션 정보가 존재하지 않는 경우, 상기 제1디바이스커맨드큐에 큐잉된 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하는
    메모리 시스템 동작 방법.
  29. 제16항에 있어서,
    상기 가비지콜렉션 정보에 따라 가비지콜렉션을 수행하는 단계는,
    상기 가비지콜렉션 정보에 따라 희생 블록의 모든 유효 페이지를 메모리에 임시로 저장하며, 저장된 모든 유효 페이지를 대상 블록으로 복사하는 단계; 및
    상기 가비지콜렉션 동작이 수행된 가비지콜렉션 정보를 제1 또는 제2디바이스커맨드큐로부터 삭제하는
    메모리 시스템 동작 방법.
KR1020190067907A 2019-06-10 2019-06-10 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 KR20200141212A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190067907A KR20200141212A (ko) 2019-06-10 2019-06-10 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
US16/782,880 US11249903B2 (en) 2019-06-10 2020-02-05 Memory system for garbage collection operation and operating method thereof
CN202010245074.7A CN112069086A (zh) 2019-06-10 2020-03-31 用于垃圾收集操作的存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190067907A KR20200141212A (ko) 2019-06-10 2019-06-10 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20200141212A true KR20200141212A (ko) 2020-12-18

Family

ID=73650907

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190067907A KR20200141212A (ko) 2019-06-10 2019-06-10 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법

Country Status (3)

Country Link
US (1) US11249903B2 (ko)
KR (1) KR20200141212A (ko)
CN (1) CN112069086A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023014483A1 (en) * 2021-08-06 2023-02-09 Micron Technology, Inc. Memory status command aggregation

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210158043A (ko) * 2020-06-23 2021-12-30 삼성전자주식회사 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법
KR20220030090A (ko) * 2020-09-02 2022-03-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11868643B2 (en) * 2020-12-16 2024-01-09 Micron Technology, Inc. Background memory scan block selection
US11797228B2 (en) 2021-06-24 2023-10-24 Western Digital Technologies, Inc. Efficient handling of background operations for improving sustained performance of host reads and writes
US20230176778A1 (en) * 2021-12-06 2023-06-08 Micron Technology, Inc. Managing single-level and multi-level programming operations

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US9009436B2 (en) * 2011-08-09 2015-04-14 SanDisk Technologies, Inc. Flushed data alignment with physical structures
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US10254998B2 (en) 2015-11-03 2019-04-09 Samsung Electronics Co., Ltd. Coordinated garbage collection of flash devices in a distributed storage system
CN106506393A (zh) * 2016-02-05 2017-03-15 华为技术有限公司 一种数据流处理方法、装置和系统
KR20180053027A (ko) * 2016-11-11 2018-05-21 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US20180275922A1 (en) * 2017-03-27 2018-09-27 Siamack Nemazie Solid State Disk with Consistent Latency

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023014483A1 (en) * 2021-08-06 2023-02-09 Micron Technology, Inc. Memory status command aggregation
US11861228B2 (en) 2021-08-06 2024-01-02 Micron Technology, Inc. Memory status command aggregation

Also Published As

Publication number Publication date
US20200387447A1 (en) 2020-12-10
CN112069086A (zh) 2020-12-11
US11249903B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
US11106393B2 (en) Latency-based scheduling of command processing in data storage devices
KR20200141212A (ko) 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
US11868653B2 (en) Memory system and method for controlling nonvolatile memory
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
US11216368B2 (en) Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction
US11669272B2 (en) Predictive data transfer based on availability of media units in memory sub-systems
CN111831583A (zh) 用于传送存储器系统中的映射段的设备和方法
US11269552B2 (en) Multi-pass data programming in a memory sub-system having multiple dies and planes
US11782841B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US20180335943A1 (en) Memory system and operating method thereof
US11487658B2 (en) Memory system including plural regions storing data and operating method thereof
US20240036768A1 (en) Partial Execution of a Write Command from a Host System
US20240037027A1 (en) Method and device for storing data
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
US20220300185A1 (en) Storage device, storage system, and control method

Legal Events

Date Code Title Description
A201 Request for examination