KR20140113212A - 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 - Google Patents
호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 Download PDFInfo
- Publication number
- KR20140113212A KR20140113212A KR1020130028312A KR20130028312A KR20140113212A KR 20140113212 A KR20140113212 A KR 20140113212A KR 1020130028312 A KR1020130028312 A KR 1020130028312A KR 20130028312 A KR20130028312 A KR 20130028312A KR 20140113212 A KR20140113212 A KR 20140113212A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- storage device
- host
- free space
- size information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, 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)
Abstract
메모리-기반 저장 장치와 호스트를 포함하는 시스템의 동작 방법은 상기 호스트가 상기 메모리-기반 저장 장치로부터 프로그램가능한 자유 공간 크기 정보를 수신하는 단계와, 상기 호스트가 상기 자유 공간 크기 정보에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하기 위한 파라미터를 생성하고 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송하는 단계를 포함한다. 상기 방법은 상기 메모리-기반 저장 장치가 상기 제1파라미터에 기초하여 가비지 컬렉션을 실행하는 단계를 더 포함한다.
Description
본 발명의 개념에 따른 실시 예는 호스트-주도 가비지 컬렉션에 관한 것으로, 특히 메모리-기반 저장 장치의 프로그램가능한 자유 공간 크기 정보에 기초하여 가비지 컬렉션의 실행 여부를 제어할 수 있는 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템에 관한 것이다.
메모리 장치, 예컨대 플래시 메모리 장치는 불-휘발성 메모리 장치로서 USB (universal serial bus) 드라이브, 디지털 카메라, 이동 전화기, 스마트폰, 태블릿(tablet) PC, 메모리 카드, 및 SSD(solid state drive)에서 널리 사용된다.
플래시 메모리 장치는 복수의 블록들을 포함하고, 상기 복수의 블록들 각각은 복수의 페이지들을 포함하고, 상기 복수의 페이지들 각각은 복수의 메모리 셀들을 포함한다.
상기 복수의 메모리 셀들 각각은 싱글-레벨 셀(single-level cell(SLC)) 또는 멀티-레벨 셀(multi-level cell(MLC))로 구현될 수 있다. 상기 SLC는 1-비트에 상응하는 정보를 저장할 수 있고, 상기 MLC는 적어도 2-비트의 상응하는 정보를 저장할 수 있다.
프로그램(program) 동작은 페이지(page) 단위로 수행되고, 이레이즈(erase) 동작은 블록(block) 단위로 수행된다.
플래시 메모리 장치의 모든 블록 또는 거의 모든 블록에 데이터가 저장될 때, 오래된(stale) 데이터를 이동(move)시키고 남아있는 유효(valid) 데이터를 적절히 싸는(pack) 과정이 필요하다. 이러한 과정을 가비지 컬렉션(garbage collection)이라 한다. 상기 가비지 컬렉션은 자동 메모리 관리(automatic memory management)의 일 예이다.
본 발명이 이루고자 하는 기술적인 과제는 메모리-기반 저장 장치의 프로그램가능한 자유 공간 크기 정보를 이용하여 상기 메모리-기반 저장 장치에 대한 가비지 컬렉션의 실행 여부를 제어할 수 있는 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리-기반 제1저장 장치와 호스트를 포함하는 시스템의 동작 방법은 상기 호스트가 상기 메모리-기반 제1저장 장치로부터 프로그램가능한 제1자유 공간 크기 정보를 수신하는 단계와, 상기 호스트가 상기 제1자유 공간 크기 정보에 기초하여 상기 메모리-기반 제1저장 장치의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터를 생성하고, 생성된 제1파라미터를 상기 메모리-기반 제1저장 장치로 전송하는 단계를 포함한다.
상기 방법은 상기 메모리-기반 제1저장 장치가 상기 제1파라미터에 기초하여 가비지 컬렉션을 실행하는 단계를 더 포함한다.
상기 방법은 상기 메모리-기반 제1저장 장치가 상기 제1파라미터에 기초하여 상기 메모리-기반 제1저장 장치의 프로그램가능한 자유 공간 크기를 조절하는 단계를 더 포함한다.
상기 방법은 상기 메모리-기반 제1저장 장치가 상기 제1파라미터에 기초하여 가비지 컬렉션 실행 시간을 제어하는 단계를 더 포함한다.
실시 예에 따라 상기 호스트는 상기 메모리-기반 제1저장 장치로 전송될 데이터 패턴과 상기 제1자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성한다.
다른 실시 예에 따라, 상기 호스트는 상기 메모리-기반 제1저장 장치로 전송될 데이터의 양과 상기 제1자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성한다. 상기 호스트는 파일 서버의 입출력 데이터를 모니터링하여 상기 데이터의 양을 결정한다.
또 다른 실시 예에 따라, 상기 호스트는 상기 메모리-기반 제1저장 장치에 저장될 데이터의 시작 위치와 상기 제1자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성한다.
또 다른 실시 예에 따라, 상기 호스트는 상기 호스트에서 실행중인 적어도 하나의 프로세스의 상태와 상기 자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성한다.
상기 방법은 상기 메모리-기반 제1저장 장치가 상기 호스트의 요청에 응답하여 상기 제1자유 공간 크기 정보를 상기 호스트로 전송하는 단계를 더 포함한다.
상기 방법은 상기 호스트가 메모리-기반 제2저장 장치로부터 프로그램가능한 제2자유 공간 크기 정보를 수신하는 단계와, 상기 호스트가 상기 제2자유 공간 크기 정보에 기초하여 상기 메모리-기반 제2저장 장치의 제2가비지 컬렉션의 실행 여부를 제어하는 제2파라미터를 생성하고, 생성된 제2파라미터를 상기 메모리-기반 제2저장 장치로 전송하는 단계를 더 포함하며, 상기 제1파라미터와 상기 제2파라미터는 서로 다르다.
상기 메모리-기반 제1저장 장치는 eMMC(embedded multimedia card) UFS (universal flash storage) 또는 SSD(solid state drive)로 구현될 수 있다.
본 발명의 다른 실시 예에 따른 복수의 메모리-기반 저장 장치들과 호스트를 포함하는 시스템의 동작 방법은 상기 호스트가 상기 복수의 메모리-기반 저장 장치들 각각에 대한 프로그램가능한 자유 공간 크기 정보를 수신하는 단계와, 상기 호스트가, 상기 각각에 대한 프로그램가능한 자유 공간 크기 정보에 기초하여, 상기 복수의 메모리-기반 저장 장치들 각각의 가비지 컬렉션의 실행 여부를 독립적으로 제어하는 단계를 포함한다.
실시 예에 따라 상기 제어하는 단계는 상기 시스템의 초기화 동작 동안 수행될 수 있다.
다른 실시 예에 따라, 상기 수신하는 단계와 상기 제어하는 단계는 실시간으로 수행될 수 있다.
본 발명의 실시 예에 따른 호스트는 프로그램을 저장하는 메모리와, 상기 프로그램을 실행시키는 프로세서를 포함한다. 상기 프로그램이 실행됨에 따라 상기 프로세서는 메모리-기반 저장 장치로부터 프로그램가능한 자유 공간 크기 정보를 수신하고, 상기 프로그램가능한 자유 공간 크기 정보에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하는 파라미터를 생성하고, 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송한다.
상기 프로세서는 상기 메모리-기반 저장 장치로 전송될 데이터 패턴, 데이터의 양, 또는 데이터의 시작 어드레스 중에서 적어도 하나를 분석하고, 분석 결과와 상기 자유 공간 크기 정보에 기초하여 상기 파라미터를 생성한다.
상기 프로세서는 상기 호스트에서 실행중인 적어도 하나의 프로세스의 상태와 상기 자유 공간 크기 정보에 기초하여 상기 파라미터를 생성하다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 호스트와, 데이터 저장 영역을 포함하며, 상기 데이터 저장 영역 중에서 프로그램가능한 자유 공간의 크기를 나타내는 크기 정보를 상기 호스트로 전송하는 메모리-기반 저장 장치를 포함하며, 상기 호스트는 상기 크기 정보에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하는 파라미터를 생성하고, 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송한다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 파일 서버의 입출력 데이터를 모니터링하는 호스트와, 데이터 저장 영역을 포함하며 상기 데이터 저장 영역 중에서 프로그램가능한 자유 공간의 크기를 나타내는 크기 정보를 상기 호스트로 전송하는 메모리-기반 저장 장치를 포함하며, 상기 호스트는 모니터링 결과와 상기 크기 정보 중에서 적어도 하나에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하는 파라미터를 생성하고, 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송한다.
본 발명의 실시 예에 따른 호스트는 메모리-기반 저장 장치의 프로그램가능한 자유 공간 크기 정보를 이용하여 상기 메모리-기반 저장 장치에 대한 가비지 컬렉션의 실행 여부를 제어할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 호스트는 메모리-기반 저장 장치의 프로그램가능한 자유 공간의 크기를 조절할 수 있으므로, 상기 메모리-기반 저장 장치의 성능 (performance) 저하와 내구력(endurance) 저하를 방지할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 본 발명의 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 3은 도 1의 메모리 셀 어레이에 대응되는 메모리 맵을 나타낸다.
도 4부터 도 8은 도 1 또는 도 2의 시스템의 동작들을 설명하기 위한 플로우차트들이다.
도 9는 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 위해 가비지 컬렉션 문턱 값을 변경하는 방법을 설명하는 개념도이다.
도 10은 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 위해 가비지 컬렉션 문턱 값을 변경하는 다른 방법을 설명하는 개념도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 12는 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 13은 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 수행할 수 있는 시스템을 나타낸다.
도 14는 본 발명의 실시 예에 따른 컴퓨터 네트워크의 실시 예를 나타낸다.
도 15는 도 14의 컴퓨터 네트워크에 포함된 호스트가 메모리 기반-저장 장치의 가비지 컬렉션 실행 여부를 제어하는 파라미터를 생성하는 방법을 설명하기 위한 플로우차트이다.
도 1은 본 발명의 일 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 본 발명의 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 3은 도 1의 메모리 셀 어레이에 대응되는 메모리 맵을 나타낸다.
도 4부터 도 8은 도 1 또는 도 2의 시스템의 동작들을 설명하기 위한 플로우차트들이다.
도 9는 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 위해 가비지 컬렉션 문턱 값을 변경하는 방법을 설명하는 개념도이다.
도 10은 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 위해 가비지 컬렉션 문턱 값을 변경하는 다른 방법을 설명하는 개념도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 12는 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 13은 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 수행할 수 있는 시스템을 나타낸다.
도 14는 본 발명의 실시 예에 따른 컴퓨터 네트워크의 실시 예를 나타낸다.
도 15는 도 14의 컴퓨터 네트워크에 포함된 호스트가 메모리 기반-저장 장치의 가비지 컬렉션 실행 여부를 제어하는 파라미터를 생성하는 방법을 설명하기 위한 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 시스템의 블록도를 나타낸다.
도 1을 참조하면, 시스템(100A)은 호스트(200A)와 적어도 하나의 메모리-기반 저장 장치(310A와 320A)를 포함한다.
시스템(100A)은 PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage(NAS)), 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
호스트(200A)는 메모리-기반 제1저장 장치(310A)로부터 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 수신하고, 수신된 프로그램가능한 제1자유 공간 크기 정보(FSSI1)에 기초하여 메모리-기반 제1저장 장치(310A)의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터(PARA1)를 생성하고, 생성된 제1파라미터 (PARA1)를 메모리-기반 제1저장 장치(310A)로 전송한다.
메모리-기반 제1저장 장치(310A)는 제1파라미터(PARA1)에 기초하여 가비지 컬렉션을 실행할 수 있다.
예컨대, 메모리-기반 제1저장 장치(310A)는 제1파라미터(PARA1)에 기초하여 메모리-기반 제1저장 장치(310A)의 프로그램가능한 제1자유 공간 크기를 조절하거나 메모리-기반 제1저장 장치(310A)에서 실행되는 가비지 컬렉션 실행 시간을 조절할 수 있다.
호스트(200A)는 메모리-기반 제2저장 장치(320A)로부터 프로그램가능한 제2자유 공간 크기 정보(FSSI2)를 수신하고, 수신된 프로그램가능한 제2자유 공간 크기 정보(FSSI2)에 기초하여 메모리-기반 제2저장 장치(320A)의 제2가비지 컬렉션의 실행 여부를 제어하는 제2파라미터(PARA2)를 생성하고, 생성된 제2파라미터 (PARA2)를 메모리-기반 제2저장 장치(320A)로 전송한다.
메모리-기반 제2저장 장치(320A)는 제2파라미터(PARA2)에 기초하여 가비지 컬렉션을 실행할 수 있다. 제1파라미터(PARA1)와 제2파라미터(PARA2)는 서로 동일할 수도 있고 서로 다를 수도 있다.
예컨대, 메모리-기반 제2저장 장치(320A)는 제2파라미터(PARA2)에 기초하여 메모리-기반 제2저장 장치(320A)의 프로그램가능한 제2자유 공간 크기를 조절하거나 메모리-기반 제2저장 장치(320A)에서 실행되는 가비지 컬렉션 실행 시간을 조절할 수 있다.
각 메모리-기반 저장 장치(310A와 320A)는 플래시 메모리 장치, 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)), 유니버설 플래시 스토리지 (universal flash storage(UFS)), 솔리드 스테이트 드라이브(solid state drive(SSD)), 또는 레이드(Redundant Array of Independent Disks(RAID) 혹은 Redundant Array of Inexpensive Disks(RAID))일 수 있다.
각 메모리-기반 저장 장치(310A와 320A)는 플래시-기반 메모리 장치 이외에 가비지 컬렉션이 필요한 불휘발성 메모리-기반 저장 장치도 구현될 수 있다.
예컨대, 상기 불휘발성 메모리-기반 저장 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노튜브 RRAM (Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)를 의미할 수 있다.
호스트(200A)는 프로세서(210), 메모리(230), 및 인터페이스 컨트롤러(250A)를 포함할 수 있다. 프로세서(210)는 버스(201)를 통해 메모리(230) 또는 인터페이스 컨트롤러(250A)의 동작을 제어할 수 있다.
실시 예에 따라, 호스트(200A)는 애플리케이션 프로세서 또는 모바일 애플리케이션 프로세서를 의미할 수도 있다.
프로세서(210)는 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션에 관련된 동작(operation) 또는 기능(function)을 수행할 수 있는 프로그램, 예컨대 운영 체제(operating system(OS)), 애플리케이션 프로그램(application program), 또는 API(application programming interface)를 실행시킬 수 있다.
메모리(230)는 호스트-주도 가비지 컬렉션에 관련된 프로그램을 저장할 수 있는 동작 메모리(operation memory)를 의미할 수 있고, 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
인터페이스 컨트롤러(250A)는 호스트(200A)와 적어도 하나의 메모리-기반 저장 장치(310A와 320A) 사이에서 주고받는 신호(또는 데이터)를 인터페이싱할 수 있는 하드웨어 또는 소프트웨어를 의미할 수 있다.
예컨대, 인터페이스 컨트롤러(250A)는 SATA(Serial Advanced Technology Attachment) 인터페이스(또는 프로토콜) 또는 SAS(serial attached SCSI) 인터페이스(또는 프로토콜)에 적합한 컨트롤러일 수 있다.
메모리-기반 제1저장 장치(310A)는 메모리 셀 어레이(311-1)와 가비지 컬렉션 제어 모듈(313-1)을 포함한다.
도 3은 도 1의 메모리 셀 어레이에 대응되는 메모리 맵을 나타낸다.
도 1과 도 3을 참조하면, 메모리 셀 어레이(311-1)는 데이터를 저장할 수 있는 저장 공간(SS) 또는 데이터 저장 영역(SS)을 제공하고, 저장 공간(SS)은 특정 데이터가 이미 저장된 사용된 저장 공간(used storage space(USS))과, 프로그램가능한 자유 공간(programmable free space(PFS))을 포함한다.
예컨대, 프로그램가능한 제1자유 공간(PFS)의 크기는 제1파라미터(PARA1)에 따라 증가하거나 감소할 수 있다.
가비지 컬렉션 제어 모듈(313-1)은 제1파라미터(PARA1)에 기초하여 메모리-기반 제1저장 장치(310A)의 프로그램가능한 제1자유 공간(PFS)의 크기를 조절하거나 메모리-기반 제1저장 장치(310A)에서 실행되는 가비지 컬렉션 실행 시간을 조절할 수 있다.
예컨대, 가비지 컬렉션 실행 시간이 증가함에 따라 메모리-기반 제1저장 장치(310A)의 프로그램가능한 제1자유 공간(PFS)의 크기는 증가할 수 있다.
메모리-기반 제2저장 장치(320A)는 메모리 셀 어레이(321-1)와 가비지 컬렉션 제어 모듈(323-1)을 포함한다.
메모리 셀 어레이(311-1)와 유사하게 메모리 셀 어레이(321-1)는 데이터를 저장할 수 있는 저장 공간 또는 데이터 저장 영역을 제공하고, 상기 저장 공간은 특정 데이터가 이미 저장된 사용된 저장 공간과, 프로그램가능한 자유 공간을 포함한다.
가비지 컬렉션 제어 모듈(323-1)은 제2파라미터(PARA2)에 기초하여 메모리-기반 제2저장 장치(320A)의 프로그램가능한 자유 공간의 크기를 조절하거나 메모리-기반 제2저장 장치(320A)에서 실행되는 가비지 컬렉션 실행 시간을 조절할 수 있다.
본 명세서에서의 모듈(module)이라 함은 본 명세서에서 설명되는 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 또는 특정한 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있다.
도 2는 본 발명의 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 1의 시스템(100A)과 달리, 도 2의 시스템(100B)의 호스트(200B)의 인터페이스 컨트롤러(250B)는 프로세서(210)의 제어에 따라 제1요청(CMD1)을 메모리-기반 제1저장 장치(310B)로 전송하고, 메모리-기반 제1저장 장치(310B)의 가비지 컬렉션 제어 모듈(314-1)은 제1요청(CMD1)에 응답하여 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 인터페이스 컨트롤러(250B)로 전송한다.
또한, 인터페이스 컨트롤러(250B)는 프로세서(210)의 제어에 따라 제2요청 (CMD2)을 메모리-기반 제2저장 장치(320B)로 전송하고, 메모리-기반 제2저장 장치 (320B)의 가비지 컬렉션 제어 모듈(324-1)은 제2요청(CMD2)에 응답하여 프로그램가능한 제2자유 공간 크기 정보(FSSI2)를 인터페이스 컨트롤러(250B)로 전송한다.
각 요청(CMD1과 CMD2)은 시스템(100B)의 초기화 동작 동안 생성될 수도 있고 동작 중에 실시간으로 생성될 수 있다. 각 요청(CMD1과 CMD2)은 명령(command)의 기능을 수행할 수 있다.
각 메모리-기반 저장 장치(320A, 310B, 및 320B)의 메모리 맵은 도 3의 메모리-기반 저장 장치(310A)의 매모리 맵과 유사하다.
도 4부터 도 8은 도 1 또는 도 2의 시스템의 동작들을 설명하기 위한 플로우차트들이다.
도 1부터 도 4를 참조하면, 호스트(200A 또는 200B, 집합적으로 "200")는 메모리-기반 제1저장 장치(310A)로부터 프로그램가능한 제1자유 공간 크기 정보 (FSSI1)를 수신한다(S110).
도 2를 참조하여 설명한 바와 같이, 메모리-기반 제1저장 장치(310B)는 제1요청(CMD1)에 응답하여 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 호스트 (200B)로 전송할 수 있다.
호스트(200)는 프로그램가능한 제1자유 공간 크기 정보(FSSI1)에 기초하여 메모리-기반 제1저장 장치(310A 또는 310B, 집합적으로 "310")의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터(PARA1)를 생성하고 생성된 제1파라미터(PARA1)를 메모리-기반 제1저장 장치(310)로 전송한다(S120).
메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 프로그램가능한 제1자유 공간(PFS)의 크기를 증가시키거나 감소시킬 수 있다. 또한, 메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 메모리-기반 제1저장 장치(310)에서 수행되는 가비지 컬렉션 실행 시간을 증가시키거나 감소시킬 수 있다(S130).
즉, 메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 가비지 컬렉션 실행 타이밍을 제어할 수 있다.
도 1부터 도 3, 및 도 5를 참조하면, 호스트(200)는 메모리-기반 제1저장 장치(310)로부터 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 수신한다(S110).
도 2를 참조하여 설명한 바와 같이, 메모리-기반 제1저장 장치(310B)는 제1요청(CMD1)에 응답하여 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 호스트 (200B)로 전송할 수 있다.
호스트(200)는 메모리-기반 제1저장 장치(310)로 전송될 데이터 패턴을 분석한다(S111). 호스트(200), 예컨대 프로세서(210)는 메모리-기반 제1저장 장치(310)로 전송될 데이터가 연속(sequential) 데이터인지 또는 랜덤(random) 데이터인지를 분석한다(S111).
동영상은 연속적인 데이터의 일 예이고, 텍스트 데이터는 랜덤 데이터의 일 예이다.
호스트(200)는 분석된 데이터 패턴과 프로그램가능한 제1자유 공간 크기 정보(FSSI1)에 기초하여 메모리-기반 제1저장 장치(310)의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터(PARA1)를 생성하고 생성된 제1파라미터(PARA1)를 메모리-기반 제1저장 장치(310)로 전송한다(S121).
메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 가비지 컬렉션 실행 타이밍을 제어할 수 있다(S130).
도 1부터 도 3, 및 도 6을 참조하면, 호스트(200)는 메모리-기반 제1저장 장치(310)로부터 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 수신한다(S110).
도 2를 참조하여 설명한 바와 같이, 메모리-기반 제1저장 장치(310B)는 제1요청(CMD1)에 응답하여 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 호스트 (200B)로 전송할 수 있다.
호스트(200)는 메모리-기반 제1저장 장치(310)로 전송될 데이터의 양을 분석한다(S112). 예컨대, 전송될 데이터의 양이 많으면 많을수록 프로그램가능한 제1자유 공간의 크기는 증가되어야 한다.
호스트(200)는 분석된 데이터의 양과 프로그램가능한 제1자유 공간 크기 정보(FSSI1)에 기초하여 메모리-기반 제1저장 장치(310)의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터(PARA1)를 생성하고 생성된 제1파라미터(PARA1)를 메모리-기반 제1저장 장치(310)로 전송한다(S122).
메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 가비지 컬렉션 실행 타이밍을 제어할 수 있다(S130).
도 1부터 도 3, 및 도 7을 참조하면, 호스트(200)는 메모리-기반 제1저장 장치(310)로부터 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 수신한다(S110).
도 2를 참조하여 설명한 바와 같이, 메모리-기반 제1저장 장치(310B)는 제1요청(CMD1)에 응답하여 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 호스트 (200B)로 전송할 수 있다.
호스트(200)는 메모리-기반 제1저장 장치(310)로 전송될 데이터의 시작 어드레스를 분석한다(S113).
호스트(200)는 전송될 데이터의 시작 어드레스와 프로그램가능한 제1자유 공간 크기 정보(FSSI1)에 기초하여 메모리-기반 제1저장 장치(310)의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터(PARA1)를 생성하고 생성된 제1파라미터 (PARA1)를 메모리-기반 제1저장 장치(310)로 전송한다(S123).
메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 가비지 컬렉션 실행 타이밍을 제어할 수 있다(S130).
도 1부터 도 3, 및 도 8을 참조하면, 호스트(200)는 메모리-기반 제1저장 장치(310)로부터 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 수신한다(S110).
도 2를 참조하여 설명한 바와 같이, 메모리-기반 제1저장 장치(310B)는 제1요청(CMD1)에 응답하여 프로그램가능한 제1자유 공간 크기 정보(FSSI1)를 호스트 (200B)로 전송할 수 있다.
호스트(200), 예컨대 프로세서(210)는 호스트(200)에서 실행중인 적어도 하나의 프로세스(또는 애플리케이션 프로그램 또는 프로세서)의 상태, 예컨대 실행 상태 또는 유휴 상태(idle state)를 판단한다(S114). 예컨대, 호스트(200)에서 실행중인 프로세스의 개수가 많으면, 메모리-기반 제1저장 장치(310)로 전송될 데이터의 양이 증가할 수 있다.
호스트(200)는 실행중인 적어도 하나의 프로세스의 상태와 프로그램가능한 제1자유 공간 크기 정보(FSSI1)에 기초하여 메모리-기반 제1저장 장치(310)의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터(PARA1)를 생성하고 생성된 제1파라미터(PARA1)를 메모리-기반 제1저장 장치(310)로 전송한다(S124).
메모리-기반 제1저장 장치(310)는 제1파라미터(PARA)에 기초하여 가비지 컬렉션 실행 타이밍을 제어할 수 있다(S130).
메모리-기반 제2저장 장치(320A 또는 320B, 집합적으로 "320")와 호스트 (200)의 동작은 메모리-기반 제1저장 장치(310)와 호스트(200)의 동작과 실질적으로 동일하거나 유사하다.
도 9는 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 위해 가비지 컬렉션 문턱 값을 변경하는 방법을 설명하는 개념도이다.
도 1부터 도 9를 참조하면, 강제 가비지 컬렉션(forced garbage collection)을 위한 프로그램가능한 자유 공간의 크기, 즉 자유 블록 문턱 값(free block threshold value)은 2이고, 증가 가비지 컬렉션(incremental garbage collection)을 위한 프로그램가능한 자유 공간의 크기, 즉 자유 블록 문턱 값은 6이고, 호스트(200)로부터 출력된 파라미터(PARA1)에 기초하여 조절된 증가 가비지 컬렉션을 위한 프로그램가능한 자유 공간의 크기, 즉 자유 블록 문턱 값은 8이라고 가정한다.
숫자 "2", "6", 및 "8"은 프로그램가능한 자유 공간의 크기를 나타내는 상대적인 값 또는 자유 블록(free block)의 카운트 값(FB Count)이라고 정의한다.
강제 가비지 컬렉션은 호스트(200)로부터 메모리-기반 제1저장 장치(310)로 데이터가 전송되는 도중에 메모리-기반 제1저장 장치(310)에 상기 데이터를 프로그램할 자유 공간이 없거나 거의 없는 상태에서 수행되는 가비지 컬렉션을 의미한다.
따라서, 강제 가비지 컬렉션은 데이터를 처리, 예컨대 프로그램하기 직전에 수행되므로 상기 데이터를 처리하는데 많은 시간이 소요된다. 강제 가비지 컬렉션에서 처리되는 데이터의 I/O 레이턴시(latency)는 매우 낮다.
증가 가비지 컬렉션은 프로그램가능한 자유 공간의 크기가 문턱 값 이하일 때 메모리-기반 제1저장 장치(310)에 부분적으로 수행되는 가비지 컬렉션을 의미한다. 증가 가비지 컬렉션에서 처리되는 데이터의 I/O 레이턴시는 낮다.
증가 가비지 컬렉션을 위한 프로그램가능한 자유 공간의 크기 또는 문턱 값이 "6"으로부터 "8"로 증가하면, 증가 가비지 컬렉션의 시작 시점(또는 실행 시점)이 빨라진다. 따라서, 증가 가비지 컬렉션으로부터 강제 가비지 컬렉션으로 전이 (transition)하기 위해서는 많은 양의 데이터가 메모리 셀 어레이(311-1)에 프로그램되어야 한다.
즉, 증가 가비지 컬렉션을 위한 프로그램가능한 자유 공간의 크기가 증가할수록 증가 가비지 컬렉션의 시작 시점이 빨라지고, 메모리-기반 제1저장 장치(310)에서 수행되는 이레이즈(erase) 회수가 증가하고, 이에 따라 메모리-기반 제1저장 장치(310)의 내구성(endurance)과 수명이 짧아진다.
호스트(200)는, 메모리-기반 제1저장 장치(310)의 성능을 최적화하기 위해, 메모리-기반 제1저장 장치(310)로 전송될 데이터 패턴, 데이터의 양, 또는 데이터의 시작 어드레스 중에서 적어도 하나를 분석하고, 분석 결과와 프로그램가능한 자유 공간 크기 정보에 기초하여 최적의 제1파라미터(PARA1)를 생성할 수 있다.
또한, 호스트(200)는, 메모리-기반 제1저장 장치(310)의 성능을 최적화하기 위해, 호스트(200)에서 실행중인 적어도 하나의 프로세스의 상태와 상기 크기 정보에 기초하여 최적의 제1파라미터(PARA1)를 생성할 수 있다.
메모리-기반 제2저장 장치(320)에 대한 문턱 값과 가비지 컬렉션의 관계는 메모리-기반 제1저장 장치(310)에 대한 문턱 값과 가비지 컬렉션의 관계와 실질적으로 동일하다.
도 10은 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 위해 가비지 컬렉션 문턱 값을 변경하는 방법을 설명하는 개념도이다.
도 1부터 도 10을 참조하면, 호스트(200)는 프로그램가능한 자유 공간 크기 정보(FSSI1)에 응답하여 프로그램가능한 자유 공간의 크기를 적응적으로 조절할 수 있다.
도 10에 도시된 바와 같이, 호스트(200)는 제1파라미터(PARA1)를 이용하여 증가 가비지 컬렉션을 위한 메모리-기반 제1저장 장치(310)의 프로그램가능한 제1자유 공간의 크기를 "6"으로부터 "10"으로 증가시킨 후, 새로운 제1파라미터 (PARA1)를 이용하여 증가 가비지 컬렉션을 위한 메모리-기반 제1저장 장치(310)의 프로그램가능한 자유 공간의 크기를 "10"으로부터 "8"로 감소시킬 수 있다.
즉, 메모리-기반 제1저장 장치(310)의 프로그램가능한 제1자유 공간의 크기는 호스트(200)에 의해 주도적으로 제어될 수 있다.
도 11은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 11을 참조하면, 시스템(100C)은 호스트(200C)와 메모리 카드(310C)를 포함할 수 있다.
호스트(200C)는 프로세서(210), 메모리(230), 및 호스트 인터페이스(250)를 포함할 수 있다. 호스트(200C)는 PC, 데이터 서버, 네트워크-결합 스토리지 (network-attached storage(NAS)), 또는 휴대용 전자 장치일 수 있다.
호스트 인터페이스(250)는 도 1의 인터페이스 컨트롤러(250A) 또는 도 2의 인터페이스 컨트롤러(250B)로 구현될 수 있다.
메모리 카드(310C)는 호스트 인터페이스(250)와 통신하는 카드 인터페이스 (301), 메모리-기반 저장 장치(312), 및 카드 인터페이스(301)와 메모리-기반 저장 장치(312) 사이에서 데이터 통신을 제어하는 메모리 컨트롤러(303)를 포함한다.
메모리-기반 저장 장치(312)는 메모리 셀 어레이(311-1)와 가비지 컬렉션 제어 모듈(313)을 포함한다. 가비지 컬렉션 제어 모듈(313)은 도 1의 가비지 컬렉션 제어 모듈(313-1) 또는 도 2의 가비지 컬렉션 제어 모듈(314-1)로 구현될 수 있다.
메모리-기반 저장 장치(312)는 플래시-기반 저장 장치일 수 있다.
도 12는 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 12를 참조하면, 시스템(100D)은 호스트(200), 버퍼 매니저(410), DRAM (420), 메모리 컨트롤러(430), 및 복수의 플래시-기반 저장 장치들, 예컨대 NAND 플래시 메모리 장치들을 포함한다. 시스템(100D)은 SSD(400)를 포함하는 시스템일 수 있고, SSD(400)는 버퍼 매니저(410), DRAM(420), 메모리 컨트롤러(430), 및 복수의 플래시-기반 저장 장치들(NAND)을 포함한다.
메모리 컨트롤러(430)는 복수의 플래시-기반 저장 장치들(NAND) 각각의 데이터 처리 동작, 예컨대 프로그램 동작, 리드 동작, 또는 이레이즈 동작을 제어할 수 있다.
버퍼 매니저(410)는 호스트(200)와 메모리 컨트롤러(430) 사이에서 주고받는 데이터를 DRAM(420)에 저장하는 것을 제어할 수 있다.
도 13은 본 발명의 실시 예에 따른 호스트-주도 가비지 컬렉션을 수행할 수 있는 시스템을 나타낸다.
시스템(100E)은 RAID(redundant array of independent disks)로 구현될 수 있다. 시스템(100E)은 호스트(200), RAID 컨트롤러(510), 및 복수의 메모리-기반 저장 장치들(310-1~310-n; n은 자연수)을 포함할 수 있다.
복수의 메모리-기반 저장 장치들(310-1~310-n) 각각은 도 1에 도시된 메모리-기반 저장 장치(310A) 또는 도 2에 도시된 메모리-기반 저장 장치(310B)일 수 있다. 복수의 메모리-기반 저장 장치들(310-1~310-n)은 RAID 어레이를 구성할 수 있다.
프로그램 동작 동안, RAID 컨트롤러(510)는 호스트(200)로부터 출력된 프로그램 데이터를 RAID 레벨에 기초하여 복수의 메모리-기반 저장 장치들(310-1~310-n) 중에서 적어도 하나로 출력할 수 있다.
리드 동작 동안, RAID 컨트롤러(510)는 RAID 레벨에 기초하여 복수의 메모리-기반 저장 장치들(310-1~310-n) 중에서 적어도 어느 하나로부터 출력된 데이터를 호스트(200)로 전송할 수 있다.
각 시스템(100A~100E)은 컴퓨팅 시스템일 수 있다.
도 14는 본 발명의 실시 예에 따른 컴퓨터 네트워크의 실시 예를 나타낸다.
도 1부터 도 14를 참조하면, 컴퓨팅 시스템, 데이터 통신 네트워크, 또는 컴퓨터 네트워크 (100F)는 호스트(200-1), 적어도 하나의 메모리-기반 저장 장치(310과 320), 파일 서버(610), 및 복수의 클라이언트들(631-1~631-k, k는 자연수)을 포함한다.
모니터링 모듈(270)을 제외하면 호스트(200-1)의 기능과 구조는 도 1의 호스트(200A)의 구조와 기능 또는 도 2의 호스트(200B)의 구조와 기능과 실질적으로 동일하다.
메모리-기반 저장 장치(310)의 구조와 기능은 도 1의 메모리-기반 저장 장치 (310A)의 구조와 기능 또는 도 2의 메모리-기반 저장 장치(310B)의 구조와 기능과 실질적으로 동일하다. 또한, 메모리-기반 저장 장치(320)의 구조와 기능은 도 1의 메모리-기반 저장 장치(320A)의 구조와 기능 또는 도 2의 메모리-기반 저장 장치 (320B)의 구조와 기능과 실질적으로 동일하다.
파일 서버(610)와 복수의 클라이언트들(631-1~631-k)은 유선 네트워크 또는 무선 네트워크를 통해 데이터 통신을 수행할 수 있다. 상기 유선 네트워크 또는 상기 무선 네트워크는 인터넷, NFC(near field communication) 네트워크, 또는 이동 통신 네트워크일 수 있다.
데이터 서버 또는 데이터 센터(data center)의 기능을 수행하는 파일 서버 (610)는 호스트(200-1)로 데이터를 공급하는 데이터 소스(data source)의 기능을 수행할 수 있다.
도 15는 도 14의 컴퓨터 네트워크에 포함된 호스트가 메모리 기반-저장 장치의 가비지 컬렉션 실행 여부를 제어하는 파라미터를 생성하는 방법을 설명하기 위한 플로우차트이다.
도 1부터 도 15를 참조하면, 호스트(200-1)의 모니터링 모듈(270)은 파일 서버(610)와 복수의 클라이언트들(631-1~631-k) 각각이 주고받는 데이터의 양, 데이터 트래픽 또는 인터넷 데이터 트래픽을 모니터링할 수 있다(S210).
또한, 호스트(200-1)의 모니터링 모듈(270)은 파일 서버(610)의 워크로드 (workload) 또는 QoS(Quality of Service)를 모니터링할 수 있다(S210).
모니터링 모듈(270)이 모니터링 결과를 프로세서(210)로 전송하면, 프로세서 (210)는 상기 모니터링 결과에 기초하여 메모리-기반 저장 장치(310 및/또는 320)로 전송될 데이터의 양 또는 데이터 패턴을 예측하고(S220), 예측 결과에 기초하여 파라미터(PARA1 및/또는 PARA2)를 생성하고 생성된 파라미터(PARA1 및/또는 PARA2)를 메모리-기반 저장 장치(310 및/또는 320)로 전송할 수 있다(S230).
도 1부터 도 15를 참조하여 설명한 바와 같이, 호스트(200-1)는 예측 결과 및/또는 자유 공간 크기 정보(FSSI1 및/또는 FSSI2)에 기초하여 파라미터(PARA1 및/또는 PARA2)를 생성할 수 있다.
또한, 호스트(200-1)는 메모리-기반 저장 장치(310 및/또는 320)로 전송될 데이터 패턴, 데이터의 양, 데이터의 시작 어드레스, 또는 예측 결과 중에서 적어도 하나를 분석하고, 분석 결과와 자유 공간 크기 정보(FSSI1 및/또는 FSSI2)에 기초하여 파라미터(PARA1 및/또는 PARA2)를 생성할 수 있다.
따라서, 메모리-기반 저장 장치(310 및/또는 320)는 파라미터(PARA1 및/또는 PARA2)에 기초하여 가비지 컬렉션을 수행할 수 있다(S240). 즉, 메모리-기반 저장 장치(310 및/또는 320)는 파라미터(PARA1 및/또는 PARA2)에 기초하여 가비지 컬렉션 실행 타이밍을 제어할 수 있다.
모듈은 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 100B, 100C, 100D, 및 100E; 시스템
100F; 컴퓨터 네트워크
200, 200-1, 200A, 200B, 및 200C; 호스트
210; 프로세서
230; 메모리
250; 호스트 인터페이스
250A, 250B; 인터페이스 컨트롤러
310, 310A, 310B; 메모리-기반 제1저장 장치
320, 320A, 320B; 메모리-기반 제2저장 장치
311-1, 321-1; 메모리 셀 어레이
313-1, 323-1, 314-1, 324-1; 가비지 컬렉션 제어 모듈
270; 모니터링 모듈
100F; 컴퓨터 네트워크
200, 200-1, 200A, 200B, 및 200C; 호스트
210; 프로세서
230; 메모리
250; 호스트 인터페이스
250A, 250B; 인터페이스 컨트롤러
310, 310A, 310B; 메모리-기반 제1저장 장치
320, 320A, 320B; 메모리-기반 제2저장 장치
311-1, 321-1; 메모리 셀 어레이
313-1, 323-1, 314-1, 324-1; 가비지 컬렉션 제어 모듈
270; 모니터링 모듈
Claims (23)
- 메모리-기반 제1저장 장치와 호스트를 포함하는 시스템의 동작 방법에 있어서,
상기 호스트가 상기 메모리-기반 제1저장 장치로부터 프로그램가능한 제1자유 공간 크기 정보를 수신하는 단계; 및
상기 호스트가 상기 제1자유 공간 크기 정보에 기초하여 상기 메모리-기반 제1저장 장치의 제1가비지 컬렉션의 실행 여부를 제어하는 제1파라미터를 생성하고, 생성된 제1파라미터를 상기 메모리-기반 제1저장 장치로 전송하는 단계를 포함하는 시스템의 동작 방법. - 제1항에 있어서,
상기 메모리-기반 제1저장 장치가 상기 제1파라미터에 기초하여 가비지 컬렉션을 실행하는 단계를 더 포함하는 시스템의 동작 방법. - 제1항에 있어서,
상기 메모리-기반 제1저장 장치가 상기 제1파라미터에 기초하여 상기 메모리-기반 제1저장 장치의 프로그램가능한 자유 공간 크기를 조절하는 단계를 더 포함하는 시스템의 동작 방법. - 제1항에 있어서,
상기 메모리-기반 제1저장 장치가 상기 제1파라미터에 기초하여 가비지 컬렉션 실행 시간을 제어하는 단계를 더 포함하는 시스템의 동작 방법. - 제1항에 있어서,
상기 호스트는 상기 메모리-기반 제1저장 장치로 전송될 데이터 패턴과 상기 제1자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성하는 시스템의 동작 방법. - 제1항에 있어서,
상기 호스트는 상기 메모리-기반 제1저장 장치로 전송될 데이터의 양과 상기 제1자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성하는 시스템의 동작 방법. - 제6항에 있어서,
상기 호스트는 파일 서버의 입출력 데이터를 모니터링하여 상기 데이터의 양을 결정하는 시스템의 동작 방법. - 제1항에 있어서,
상기 호스트는 상기 메모리-기반 제1저장 장치에 저장될 데이터의 시작 위치와 상기 제1자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성하는 시스템의 동작 방법. - 제1항에 있어서,
상기 호스트는 상기 호스트에서 실행중인 적어도 하나의 프로세스의 상태와 상기 자유 공간 크기 정보에 기초하여 상기 제1파라미터를 생성하는 시스템의 동작 방법. - 제1항에 있어서,
상기 메모리-기반 제1저장 장치가 상기 호스트의 요청에 응답하여 상기 제1자유 공간 크기 정보를 상기 호스트로 전송하는 단계를 더 포함하는 시스템의 동작 방법. - 제1항에 있어서,
상기 호스트가 메모리-기반 제2저장 장치로부터 프로그램가능한 제2자유 공간 크기 정보를 수신하는 단계; 및
상기 호스트가 상기 제2자유 공간 크기 정보에 기초하여 상기 메모리-기반 제2저장 장치의 제2가비지 컬렉션의 실행 여부를 제어하는 제2파라미터를 생성하고, 생성된 제2파라미터를 상기 메모리-기반 제2저장 장치로 전송하는 단계를 더 포함하며,
상기 제1파라미터와 상기 제2파라미터는 서로 다른 시스템의 동작 방법. - 제1항에 있어서,
상기 메모리-기반 제1저장 장치는 eMMC(embedded multimedia card) UFS (universal flash storage) 또는 SSD(solid state drive)인 시스템의 동작 방법. - 복수의 메모리-기반 저장 장치들과 호스트를 포함하는 시스템의 동작 방법에 있어서,
상기 호스트가 상기 복수의 메모리-기반 저장 장치들 각각에 대한 프로그램가능한 자유 공간 크기 정보를 수신하는 단계; 및
상기 호스트가, 상기 각각에 대한 프로그램가능한 자유 공간 크기 정보에 기초하여, 상기 복수의 메모리-기반 저장 장치들 각각의 가비지 컬렉션의 실행 여부를 독립적으로 제어하는 단계를 포함하는 시스템의 동작 방법. - 제13항에 있어서, 상기 제어하는 단계는,
상기 시스템의 초기화 동작 동안 수행되는 시스템의 동작 방법. - 제13항에 있어서, 상기 수신하는 단계와 상기 제어하는 단계는,
실시간으로 수행되는 시스템의 동작 방법. - 프로그램을 저장하는 메모리; 및
상기 프로그램을 실행시키는 프로세서를 포함하며,
상기 프로그램이 실행됨에 따라 상기 프로세서는,
메모리-기반 저장 장치로부터 프로그램가능한 자유 공간 크기 정보를 수신하고,
상기 프로그램가능한 자유 공간 크기 정보에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하는 파라미터를 생성하고, 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송하는 호스트. - 제16항에 있어서,
상기 프로세서는 상기 메모리-기반 저장 장치로 전송될 데이터 패턴, 데이터의 양, 또는 데이터의 시작 어드레스 중에서 적어도 하나를 분석하고, 분석 결과와 상기 자유 공간 크기 정보에 기초하여 상기 파라미터를 생성하는 호스트. - 제16항에 있어서,
상기 프로세서는 상기 호스트에서 실행중인 적어도 하나의 프로세스의 상태와 상기 자유 공간 크기 정보에 기초하여 상기 파라미터를 생성하는 호스트. - 호스트; 및
데이터 저장 영역을 포함하며, 상기 데이터 저장 영역 중에서 프로그램가능한 자유 공간의 크기를 나타내는 크기 정보를 상기 호스트로 전송하는 메모리-기반 저장 장치를 포함하며,
상기 호스트는 상기 크기 정보에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하는 파라미터를 생성하고, 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송하는 컴퓨팅 시스템. - 제19항에 있어서,
상기 호스트는 상기 메모리-기반 저장 장치로 전송될 데이터 패턴, 데이터의 양, 또는 데이터의 시작 어드레스 중에서 적어도 하나를 분석하고, 분석 결과와 상기 크기 정보에 기초하여 상기 파라미터를 생성하는 컴퓨팅 시스템. - 제19항에 있어서,
상기 호스트는 상기 호스트에서 실행중인 적어도 하나의 프로세스의 상태와 상기 크기 정보에 기초하여 상기 파라미터를 생성하는 컴퓨팅 시스템. - 제19항에 있어서,
상기 메모리-기반 저장 장치는 상기 파라미터에 기초하여 상기 자유 공간의 상기 크기를 제어하거나 상기 메모리-기반 저장 장치의 가비지 컬렉션 실행 시간을 제어하는 컴퓨팅 시스템. - 파일 서버의 입출력 데이터를 모니터링하는 호스트; 및
데이터 저장 영역을 포함하며, 상기 데이터 저장 영역 중에서 프로그램가능한 자유 공간의 크기를 나타내는 크기 정보를 상기 호스트로 전송하는 메모리-기반 저장 장치를 포함하며,
상기 호스트는 모니터링 결과와 상기 크기 정보 중에서 적어도 하나에 기초하여 상기 메모리-기반 저장 장치의 가비지 컬렉션의 실행 여부를 제어하는 파라미터를 생성하고, 생성된 파라미터를 상기 메모리-기반 저장 장치로 전송하는 컴퓨팅 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028312A KR102053865B1 (ko) | 2013-03-15 | 2013-03-15 | 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 |
US14/212,297 US9348749B2 (en) | 2013-03-15 | 2014-03-14 | Host-driven garbage collection |
US15/146,634 US9690700B2 (en) | 2013-03-15 | 2016-05-04 | Host-driven garbage collection |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028312A KR102053865B1 (ko) | 2013-03-15 | 2013-03-15 | 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140113212A true KR20140113212A (ko) | 2014-09-24 |
KR102053865B1 KR102053865B1 (ko) | 2019-12-09 |
Family
ID=51533955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130028312A KR102053865B1 (ko) | 2013-03-15 | 2013-03-15 | 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9348749B2 (ko) |
KR (1) | KR102053865B1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170014874A (ko) * | 2015-07-31 | 2017-02-08 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법 |
US9996277B2 (en) | 2015-11-23 | 2018-06-12 | SK Hynix Inc. | Memory system and operating method of memory system |
CN109901794A (zh) * | 2017-12-11 | 2019-06-18 | 爱思开海力士有限公司 | 使用主机空闲来操作垃圾收集的设备和方法 |
WO2020092434A1 (en) * | 2018-10-30 | 2020-05-07 | Micron Technology, Inc. | Periodic flush in memory component that is using greedy garbage collection |
KR20200068275A (ko) * | 2018-12-05 | 2020-06-15 | 삼성전자주식회사 | 저장 장치를 초기화하는 방법 및 전자 장치 |
US11182290B2 (en) | 2017-02-09 | 2021-11-23 | SK Hynix Inc. | Data storage device and operating method thereof for performing a garbage collection operation in consideration of a lifetime of a nonvolatile memory device |
Families Citing this family (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9727456B2 (en) * | 2014-11-03 | 2017-08-08 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
JP6482322B2 (ja) * | 2014-12-29 | 2019-03-13 | 東芝メモリ株式会社 | メモリ装置及びプログラム |
JP6320318B2 (ja) * | 2015-02-17 | 2018-05-09 | 東芝メモリ株式会社 | 記憶装置及び記憶装置を含む情報処理システム |
WO2017052571A1 (en) * | 2015-09-25 | 2017-03-30 | Hitachi Data Systems Corporation | Adaptive storage reclamation |
CN106802867B (zh) * | 2015-11-25 | 2020-12-01 | 建兴储存科技(广州)有限公司 | 固态储存装置及其数据编程方法 |
KR20170070900A (ko) * | 2015-12-14 | 2017-06-23 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10229049B2 (en) * | 2015-12-17 | 2019-03-12 | Toshiba Memory Corporation | Storage system that performs host-initiated garbage collection |
US20170212711A1 (en) * | 2016-01-21 | 2017-07-27 | Kabushiki Kaisha Toshiba | Disk apparatus and control method |
KR20180045087A (ko) | 2016-10-24 | 2018-05-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
JP2018181281A (ja) * | 2017-04-21 | 2018-11-15 | 富士通株式会社 | ストレージシステム、制御装置及びストレージ装置 |
US11893265B2 (en) * | 2017-05-02 | 2024-02-06 | Google Llc | Garbage collection for data storage |
KR20180138398A (ko) * | 2017-06-21 | 2018-12-31 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
CN114546293A (zh) * | 2017-09-22 | 2022-05-27 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
EP3680786B1 (en) | 2017-10-09 | 2022-08-10 | Huawei Technologies Co., Ltd. | Garbage data cleaning method and equipment |
KR20190102390A (ko) * | 2018-02-26 | 2019-09-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US11422726B1 (en) * | 2018-05-01 | 2022-08-23 | Amazon Technologies, Inc. | Efficient storage device data move operation based on priority of garbage collection command |
US11074007B2 (en) | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
US10969994B2 (en) * | 2018-08-08 | 2021-04-06 | Micron Technology, Inc. | Throttle response signals from a memory system |
EP3866016A4 (en) * | 2018-11-20 | 2021-11-10 | Huawei Technologies Co., Ltd. | METHOD AND APPARATUS FOR DELETING INDEX ENTRY IN MEMORY |
US10976950B1 (en) * | 2019-01-15 | 2021-04-13 | Twitter, Inc. | Distributed dataset modification, retention, and replication |
US11113270B2 (en) | 2019-01-24 | 2021-09-07 | EMC IP Holding Company LLC | Storing a non-ordered associative array of pairs using an append-only storage medium |
CN112544038B (zh) * | 2019-07-22 | 2024-07-05 | 华为技术有限公司 | 存储系统数据压缩的方法、装置、设备及可读存储介质 |
US11580016B2 (en) * | 2019-08-30 | 2023-02-14 | Micron Technology, Inc. | Adjustable garbage collection suspension interval |
JP2021099642A (ja) * | 2019-12-20 | 2021-07-01 | キヤノン株式会社 | 情報処理装置および情報処理装置の制御方法 |
US11604759B2 (en) | 2020-05-01 | 2023-03-14 | EMC IP Holding Company LLC | Retention management for data streams |
US11599546B2 (en) | 2020-05-01 | 2023-03-07 | EMC IP Holding Company LLC | Stream browser for data streams |
KR20210157157A (ko) | 2020-06-19 | 2021-12-28 | 삼성전자주식회사 | 메모리 컨트롤러의 구동방법, 호스트의 구동방법 및 스토리지 장치 |
US11599420B2 (en) | 2020-07-30 | 2023-03-07 | EMC IP Holding Company LLC | Ordered event stream event retention |
KR20220020008A (ko) | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 메모리 저장 장치 및 전자 장치 |
KR20220022332A (ko) | 2020-08-18 | 2022-02-25 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11567665B2 (en) * | 2020-08-31 | 2023-01-31 | Micron Technology, Inc. | Data dispersion-based memory management |
KR20220041593A (ko) | 2020-09-25 | 2022-04-01 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11513871B2 (en) | 2020-09-30 | 2022-11-29 | EMC IP Holding Company LLC | Employing triggered retention in an ordered event stream storage system |
US11755555B2 (en) | 2020-10-06 | 2023-09-12 | EMC IP Holding Company LLC | Storing an ordered associative array of pairs using an append-only storage medium |
US11599293B2 (en) | 2020-10-14 | 2023-03-07 | EMC IP Holding Company LLC | Consistent data stream replication and reconstruction in a streaming data storage platform |
KR20220060385A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11494111B2 (en) * | 2020-12-17 | 2022-11-08 | Micron Technology, Inc. | Data operation based on valid memory unit count |
US11556270B2 (en) * | 2021-01-07 | 2023-01-17 | EMC IP Holding Company LLC | Leveraging garbage collection for raid transformation |
US11816065B2 (en) | 2021-01-11 | 2023-11-14 | EMC IP Holding Company LLC | Event level retention management for data streams |
US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
TWI766582B (zh) * | 2021-02-17 | 2022-06-01 | 群聯電子股份有限公司 | 有效資料合併方法、記憶體儲存裝置及記憶體控制電路單元 |
US20220291858A1 (en) * | 2021-03-15 | 2022-09-15 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
JP2022143231A (ja) * | 2021-03-17 | 2022-10-03 | キオクシア株式会社 | ストレージデバイス、ストレージシステム、及び制御方法 |
WO2022193233A1 (en) * | 2021-03-18 | 2022-09-22 | Micron Technology, Inc. | Memory write performance techniques |
US11775197B2 (en) * | 2021-03-25 | 2023-10-03 | Kyocera Document Solutions Inc. | Single command for reading then clearing dynamic random access memory |
US11740828B2 (en) * | 2021-04-06 | 2023-08-29 | EMC IP Holding Company LLC | Data expiration for stream storages |
US12001881B2 (en) | 2021-04-12 | 2024-06-04 | EMC IP Holding Company LLC | Event prioritization for an ordered event stream |
US11740821B2 (en) * | 2021-04-12 | 2023-08-29 | EMC IP Holding Company LLC | Cost-aware garbage collection for cloud storage |
US11954537B2 (en) | 2021-04-22 | 2024-04-09 | EMC IP Holding Company LLC | Information-unit based scaling of an ordered event stream |
US11681460B2 (en) | 2021-06-03 | 2023-06-20 | EMC IP Holding Company LLC | Scaling of an ordered event stream based on a writer group characteristic |
US11513720B1 (en) * | 2021-06-11 | 2022-11-29 | Western Digital Technologies, Inc. | Data storage device having predictive analytics |
US11543993B1 (en) * | 2021-06-17 | 2023-01-03 | Western Digital Technologies, Inc. | Fast garbage collection in zoned namespaces SSDs |
KR20230004075A (ko) * | 2021-06-30 | 2023-01-06 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그 동작 방법 |
US11735282B2 (en) | 2021-07-22 | 2023-08-22 | EMC IP Holding Company LLC | Test data verification for an ordered event stream storage system |
US11733893B2 (en) * | 2021-07-28 | 2023-08-22 | International Business Machines Corporation | Management of flash storage media |
EP4283473A1 (en) * | 2021-08-02 | 2023-11-29 | Samsung Electronics Co., Ltd. | Device and method for reduction of garbage collection operations |
US11907564B2 (en) * | 2021-08-03 | 2024-02-20 | Yadro International Ltd. | Method of and system for initiating garbage collection requests |
US11755237B2 (en) * | 2021-08-31 | 2023-09-12 | Micron Technology, Inc. | Overwriting at a memory system |
US11922047B2 (en) * | 2021-09-16 | 2024-03-05 | EMC IP Holding Company LLC | Using RPO as an optimization target for DataDomain garbage collection |
JP2023044330A (ja) * | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11847334B2 (en) * | 2021-09-23 | 2023-12-19 | EMC IP Holding Company LLC | Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments |
US11971850B2 (en) | 2021-10-15 | 2024-04-30 | EMC IP Holding Company LLC | Demoted data retention via a tiered ordered event stream data storage system |
US20230136274A1 (en) * | 2021-11-04 | 2023-05-04 | Softiron Limited | Ceph Media Failure and Remediation |
US20220083280A1 (en) * | 2021-11-29 | 2022-03-17 | Intel Corporation | Method and apparatus to reduce latency for random read workloads in a solid state drive |
US20230195351A1 (en) * | 2021-12-17 | 2023-06-22 | Samsung Electronics Co., Ltd. | Automatic deletion in a persistent storage device |
US12019899B2 (en) * | 2022-03-03 | 2024-06-25 | Western Digital Technologies, Inc. | Data relocation with protection for open relocation destination blocks |
US11886735B2 (en) * | 2022-03-22 | 2024-01-30 | Micron Technology, Inc. | Data movement based on address table activity |
US11934656B2 (en) * | 2022-04-11 | 2024-03-19 | Netapp, Inc. | Garbage collection and bin synchronization for distributed storage architecture |
US11941297B2 (en) | 2022-04-11 | 2024-03-26 | Netapp, Inc. | Garbage collection and bin synchronization for distributed storage architecture |
US11977779B2 (en) * | 2022-05-11 | 2024-05-07 | Bank Of America Corporation | Smart queue for distributing user requests to automated response generating systems |
US11947452B2 (en) * | 2022-06-01 | 2024-04-02 | Micron Technology, Inc. | Controlling variation of valid data counts in garbage collection source blocks |
US20240012579A1 (en) * | 2022-07-06 | 2024-01-11 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for data placement in a storage device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340494B1 (en) * | 2004-03-12 | 2008-03-04 | Sun Microsystems, Inc. | Garbage-first garbage collection |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US20110107050A1 (en) * | 2009-11-05 | 2011-05-05 | Sun Microsystems, Inc. | Adaptive triggering of garbage collection |
US20120005406A1 (en) * | 2010-06-30 | 2012-01-05 | Neil David Hutchison | Garbage Collection of Memory Blocks Using Volatile Memory |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065020A (en) | 1998-05-27 | 2000-05-16 | Microsoft Corporation | Dynamic adjustment of garbage collection |
US6611858B1 (en) * | 1999-11-05 | 2003-08-26 | Lucent Technologies Inc. | Garbage collection method for time-constrained distributed applications |
KR20050017869A (ko) | 2003-08-11 | 2005-02-23 | (주)비아 글로벌 | 기획과 연구를 위한 전략적 지식관리 시스템 및 서비스 |
KR100789406B1 (ko) | 2006-11-03 | 2007-12-28 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
US8032724B1 (en) * | 2007-04-04 | 2011-10-04 | Marvell International Ltd. | Demand-driven opportunistic garbage collection in memory components |
JP5221157B2 (ja) | 2008-02-04 | 2013-06-26 | 株式会社日立製作所 | コンピュータシステム及び物理ディスク回収方法 |
KR101449524B1 (ko) | 2008-03-12 | 2014-10-14 | 삼성전자주식회사 | 스토리지 장치 및 컴퓨팅 시스템 |
KR101026634B1 (ko) | 2009-12-18 | 2011-04-04 | 성균관대학교산학협력단 | 하이브리드 플래시 메모리의 데이터 저장 방법 |
KR20120049604A (ko) | 2010-11-09 | 2012-05-17 | 삼성전자주식회사 | 모바일 디바이스의 메모리 관리 방법 및 장치 |
US9384129B2 (en) | 2011-06-16 | 2016-07-05 | Microsoft Technology Licensing Llc | Garbage collection based on total resource usage and managed object metrics |
US9158674B2 (en) * | 2012-12-07 | 2015-10-13 | Sandisk Technologies Inc. | Storage device with health status check feature |
-
2013
- 2013-03-15 KR KR1020130028312A patent/KR102053865B1/ko active IP Right Grant
-
2014
- 2014-03-14 US US14/212,297 patent/US9348749B2/en active Active
-
2016
- 2016-05-04 US US15/146,634 patent/US9690700B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340494B1 (en) * | 2004-03-12 | 2008-03-04 | Sun Microsystems, Inc. | Garbage-first garbage collection |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US20110107050A1 (en) * | 2009-11-05 | 2011-05-05 | Sun Microsystems, Inc. | Adaptive triggering of garbage collection |
US20120005406A1 (en) * | 2010-06-30 | 2012-01-05 | Neil David Hutchison | Garbage Collection of Memory Blocks Using Volatile Memory |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170014874A (ko) * | 2015-07-31 | 2017-02-08 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법 |
US9996277B2 (en) | 2015-11-23 | 2018-06-12 | SK Hynix Inc. | Memory system and operating method of memory system |
US11182290B2 (en) | 2017-02-09 | 2021-11-23 | SK Hynix Inc. | Data storage device and operating method thereof for performing a garbage collection operation in consideration of a lifetime of a nonvolatile memory device |
CN109901794A (zh) * | 2017-12-11 | 2019-06-18 | 爱思开海力士有限公司 | 使用主机空闲来操作垃圾收集的设备和方法 |
US11537513B2 (en) | 2017-12-11 | 2022-12-27 | SK Hynix Inc. | Apparatus and method for operating garbage collection using host idle |
WO2020092434A1 (en) * | 2018-10-30 | 2020-05-07 | Micron Technology, Inc. | Periodic flush in memory component that is using greedy garbage collection |
US11106577B2 (en) | 2018-10-30 | 2021-08-31 | Micron Technology, Inc. | Periodic flush in memory component that is using greedy garbage collection |
US11755472B2 (en) | 2018-10-30 | 2023-09-12 | Micron Technology, Inc. | Periodic flush in memory component that is using greedy garbage collection |
KR20200068275A (ko) * | 2018-12-05 | 2020-06-15 | 삼성전자주식회사 | 저장 장치를 초기화하는 방법 및 전자 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20140281338A1 (en) | 2014-09-18 |
US9690700B2 (en) | 2017-06-27 |
US9348749B2 (en) | 2016-05-24 |
KR102053865B1 (ko) | 2019-12-09 |
US20160246713A1 (en) | 2016-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102053865B1 (ko) | 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 | |
KR102098246B1 (ko) | 호스트, 저장 장치, 및 이를 포함하는 시스템의 동작 방법 | |
KR102098697B1 (ko) | 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법 | |
US11650755B2 (en) | Proactive return of write credits in a memory system | |
US9037778B2 (en) | Method and apparatus to interface semiconductor storage device and host to provide performance throttling of semiconductor storage device | |
US20140032939A1 (en) | Apparatus power control | |
TWI789817B (zh) | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 | |
US10969994B2 (en) | Throttle response signals from a memory system | |
US9898199B2 (en) | Data storage device and operating method thereof | |
CN111381777A (zh) | 用于受管理存储器的仲裁技术 | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
CN111383679A (zh) | 用于管理存储器的仲裁技术 | |
CN111382097A (zh) | 用于受管理存储器的仲裁技术 | |
KR20160025292A (ko) | 데이터 저장 장치, 그것을 포함하는 데이터 처리 시스템 및 그것의 동작 방법 | |
US20220147281A1 (en) | Large data read techniques | |
KR20170110810A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
CN111290564A (zh) | 存储系统及其操作方法 | |
US20200057581A1 (en) | Memory system and operating method thereof | |
US11687363B2 (en) | Internal management traffic regulation for memory sub-systems | |
US20210303172A1 (en) | Monitoring flash memory erase progress using erase credits | |
US20230229352A1 (en) | Host training indication for memory artificial intelligence | |
US11334259B2 (en) | Power management based on detected voltage parameter levels in a memory sub-system | |
CN112231252B (zh) | 用于存储器子系统的内部管理业务调节 | |
CN113939797B (zh) | 用于存储器子系统的锁定管理 | |
US20230064781A1 (en) | Dynamic buffer limit for at-risk data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |