KR102467032B1 - 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 - Google Patents

메모리 스케줄링 방법 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR102467032B1
KR102467032B1 KR1020150141692A KR20150141692A KR102467032B1 KR 102467032 B1 KR102467032 B1 KR 102467032B1 KR 1020150141692 A KR1020150141692 A KR 1020150141692A KR 20150141692 A KR20150141692 A KR 20150141692A KR 102467032 B1 KR102467032 B1 KR 102467032B1
Authority
KR
South Korea
Prior art keywords
command
memory
data
trim
write
Prior art date
Application number
KR1020150141692A
Other languages
English (en)
Other versions
KR20170042135A (ko
Inventor
김병국
김영봉
유상훈
하승환
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150141692A priority Critical patent/KR102467032B1/ko
Priority to US15/222,209 priority patent/US10114552B2/en
Publication of KR20170042135A publication Critical patent/KR20170042135A/ko
Priority to US16/157,300 priority patent/US10430083B2/en
Application granted granted Critical
Publication of KR102467032B1 publication Critical patent/KR102467032B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명에 따른 메모리 시스템의 동작방법에 있어서, 상기 메모리 시스템은 기록 커맨드 및 트림 커맨드를 포함하는 복수의 커맨드들을 수행하고, 복수의 블록들을 포함하는 메모리 장치를 구비하며, 프리 블록을 생성하기 위해 가비지 콜렉션을 수행하는 단계, 상기 가비지 콜렉션을 수행시에 워크로드 레벨(Work load level)을 산출하는 단계 및 상기 워크로드 레벨을 기반으로 커맨드 스케줄링 방식을 변경하는 단계를 포함하는 것을 특징으로 한다.

Description

메모리 스케줄링 방법 및 메모리 시스템의 동작방법{Memory scheduling method and Memory system operating method}
본 발명의 기술적 사상은 메모리 스케줄링 방법 및 메모리 시스템의 동작방법에 관한 것으로서, 상세하게는 효율적인 가비지 콜렉션을 수행하기 위한 메모리 스케줄링 방법 및 메모리 시스템의 동작방법에 관한 것이다.
메모리 시스템, 예컨대 플래시 메모리 시스템은 비휘발성 메모리 장치로서 USB(universal serial bus) 드라이브, 디지털 카메라, 이동 전화기, 스마트폰, 태블릿(tablet) PC, 메모리 카드 및 SSD(solid state drive)에서 널리 사용되고 있다. 플래시 메모리 장치에서 기록/독출 단위와 소거 단위는 서로 상이하고, 따라서 펌웨어를 포함할 수 있는 플래시 변환 레이어(FTL)에 의해 메모리 동작이 관리될 수 있다.
한편, 플래시 메모리 시스템에서 소거 상태의 블록(예컨대, 프리 블록)에 데이터가 기록되며, 데이터를 기록할 때에 프리 블록이 없거나 적은 경우에 하나 이상의 프리 블록을 확보하기 위하여 가비지 콜렉션(garbage collection)이 수행될 수 있다. 다만, 가비지 콜렉션의 대상이 되는 적어도 하나의 희생 블록의 유효 페이지의 개수가 많을수록 가비지 콜렉션의 효율이 떨어지는 문제를 초래할 수 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 가비지 콜렉션을 효율적으로 수행할 수 있는 메모리 스케줄링 방법 및 메모리 시스템의 동작방법을 제공하는 데에 있다.
본 발명에 따른 메모리 시스템의 동작방법에서, 상기 메모리 시스템은 기록 커맨드 및 트림 커맨드를 포함하는 복수의 커맨드들을 수행하고, 복수의 블록들을 포함하는 메모리 장치를 구비하며, 프리 블록을 생성하기 위해 가비지 콜렉션을 수행하는 단계, 상기 가비지 콜렉션을 수행시에 워크로드 레벨(Work load level)을 산출하는 단계 및 상기 워크로드 레벨을 기반으로 커맨드 스케줄링 방식을 변경하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 워크로드 레벨을 산출하는 단계는, 상기 복수의 블록들 중 상기 가비지 콜렉션의 수행 대상이 되는 적어도 하나의 희생 블록을 선택하기 위한 희생 블록 리스트(Victim Block List)를 생성하는 단계를 포함하고, 상기 희생 블록 리스트의 블록들의 유효 페이지 비율 또는 개수를 기반으로 상기 워크로드 레벨을 산출하는 것을 특징으로 한다.
또한, 상기 워크로드 레벨을 산출하는 단계는, 상기 복수의 블록들 중 논-프리 블록의 비율을 산출하는 단계를 포함하고, 상기 산출된 논-프리 블록 개수를 기반으로 상기 워크로드 레벨을 산출하는 것을 특징으로 한다.
또한, 상기 메모리 시스템은, 상기 복수의 커맨드를 커맨드 수행의 우선순위를 기반으로 순서대로 수행하고, 상기 커맨드 스케줄링 방식을 변경하는 단계는, 상기 워크로드 레벨이 기준 레벨의 이상인 때에, 상기 커맨드 수행의 우선순위를 변경하는 것을 특징으로 한다.
또한, 상기 메모리 시스템은, 커맨드 처리량(Quota)을 기반으로 상기 복수의 커맨드들을 수행하고, 상기 커맨드 스케줄링 방식을 변경하는 단계는, 상기 워크로드 레벨이 기준 레벨을 이상인 때에, 상기 커맨드 처리량을 변경하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따른 메모리 스케줄링 방법은, 복수의 블록을 포함하는 메모리 장치를 제어하기 위한 적어도 하나의 트림 커맨드를 포함하는 복수의 커맨드들을 수행하고, 제 1가비지 콜렉션 수행시에 산출된 워크로드 레벨을 기반으로 상기 제 1 커맨드 스케줄링 방식을 제 2 커맨드 스케줄링 방식으로 변경하는 단계 및 상기 제 2 커맨드 스케줄링 방식에 따라 상기 복수의 커맨드들의 수행을 스케줄링하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 복수의 커맨드는 트림 커맨드 및 기록 커맨드를 포함하고, 상기 메모리 스케줄링 방법은, 상기 기록 커맨드를 수행을 위한 가비지 콜렉션을 수행하기 이전에, 상기 제 2 커맨드 스케줄링 방식에 따라 상기 트림 커맨드를 먼저 수행하도록 스케줄링 하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 제 1 커맨드 스케줄링 방식을 상기 제 2 커맨드 스케줄링 방식으로 변경하는 단계는, 상기 트림 커맨드 수행의 우선순위 변경, 상기 트림 커맨드 수행의 처리량(Quota) 변경 중 적어도 하나를 변경하는 것을 특징으로 한다.
본 발명의 기술적 사상에 따른 메모리 스케줄링 방법 및 메모리 시스템의 동작방법은 커맨드 스케줄링 방식을 변경하여 가비지 콜렉션을 수행하기 이전에 희생 블록의 유효 페이지의 개수를 줄임으로써, 가비지 콜렉션을 효율적으로 수행할 수 있다. 또한, 가비지 콜렉션을 효율적으로 수행한 결과 향후 불필요한 추가 가비지 콜렉션을 방지하여 궁극적으로 메모리 시스템의 성능을 향상시키는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 메모리 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 3은 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 워크로드 산출 모듈을 나타내는 블록도이다.
도 5a 내지 도 5c 는 워크로드 산출 모듈이 워크로드 레벨을 산출하는 동작을 설명하기 위한 도면이다.
도 6 은 본 발명의 일 실시예에 따른 커맨드 스케줄링 모듈을 나타내는 블록도이다.
도 7a 내지 도 7f는 커맨드 수행의 우선순위를 변경하는 동작에 대해 설명하기 위한 도면이다.
도 8a 내지 도 8d, 도 9a 내지 도 9d는 커맨드 수행의 처리량을 변경하는 동작에 대해 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 메모리 시스템 동작방법을 나타내는 플로우 차트이다.
도 11 은 본 발명의 일 실시예에 따른 워크로드 레벨을 산출하는 방법을 나타내는 플로우 차트이다.
도 13은 본 발명의 일 실시예로서 변경된 커맨드 스케줄링 방식을 따르는 메모리 시스템 동작방법을 나타내는 플로우 차트이다.
도 14는 도 1 의 메모리 장치의 메모리 셀 어레이의 일 구현 예를 나타내는 구조도이다.
도 15는 본 발명의 실시예에 따른 메모리 시스템이 메모리 카드 시스템에 적용된 예를 나타내는 블록도이다.
도 16은 본 발명의 실시예들에 따른 메모리 장치를 SSD 시스템에 적용한 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 벗어나지 않으면서, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다. 메모리 시스템(10)은 호스트(100), 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있다. 본 발명의 실시예에서, 상기 메모리 장치(120)는 데이터를 비휘발성하게 저장하는 비휘발성 메모리 장치일 수 있다. 예컨대, 상기 메모리 장치(120)는 플래시 메모리 셀들을 포함하는 플래시 메모리 장치일 수 있다. 또는, 상기 메모리 장치(120)는 저항성 메모리 셀들을 포함하는 ReRAM, MRAM 및 PRAM 등의 메모리 장치일 수 있다. 이하에서 본 발명의 실시예들이 설명됨에 있어서, 상기 메모리 장치(120)가 낸드(NAND) 또는 노어(NOR) 플래시 메모리 셀들을 포함하는 플래시 메모리 장치인 것으로 가정된다.
메모리 컨트롤러(110)는 호스트(100)로부터의 기록, 독출, 트림 요청에 응답하여 메모리 장치(120)에 데이터를 기록, 또는 메모리 장치(120)에 저장된 데이터를 독출하거나 메모리 장치(120)에 저장된 유효 데이터를 무효 데이터로 변경하도록 메모리 장치(120)를 제어할 수 있다. 구체적으로, 메모리 컨트롤러(110)는 메모리 장치(120)에 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(120)에 대한 프로그램(program)(또는 기록), 독출(read), 소거(erase) 동작 및 트림(Trim) 동작을 제어할 수 있다. 또한, 기록될 데이터(DATA)와 독출된 데이터(DATA)가 메모리 컨트롤러(110)와 메모리 장치(120) 사이에서 송수신될 수 있다.
이하, 트림 동작에 대해서 설명하면, 호스트(100)의 응용 프로그램을 통해 임의의 파일이 상위 레벨(즉, 호스트측)에서 소거된 때에, 상기 임의의 파일은 호스트(100)의 파일 시스템에 의해 소거된 파일로 처리될 것이다. 이 때, 호스트(100)는 상기 임의의 파일에 대응되는 데이터를 소거하기 위하여, 트림 요청 및 소거하려는 데이터의 어드레스 정보를 메모리 컨트롤러(110)에 제공할 수 있다. 메모리 컨트롤러(110)는 트림 요청에 응답하여 트림 동작을 수행하기 위하여 생성된 트림 커맨드를 다른 커맨드(기록 커맨드 또는 독출 커맨드)보다 차순위로 백그라운드 방식(Background Trim)으로써 수행할 수 있다. 메모리 컨트롤러(110)는 트림 커맨드를 수행하는 때에, 상기 임의의 파일에 대응되는 데이터를 무효 데이터로 변경할 수 있다. 상기 변경된 무효 데이터는 향후 수행될 가비지 콜렉션 수행에 의하여, 소거될 수 있다.
메모리 컨트롤러(110)는 플래시 변환 레이어(FTL, 115)를 포함할 수 있다. FTL(115)은 플래시 메모리 장치의 기록, 독출, 소거 및 트림 동작 등에 대한 관리를 수행하는 시스템 소프트웨어(또는, 펌웨어)를 포함하고, 메모리 컨트롤러(110) 내의 동작 메모리(미도시)에 로딩될 수 있다. 상기 FTL(115)에 포함되는 펌웨어는 메모리 컨트롤러(110) 내에 구비되는 프로세싱 유닛(미도시)에 의해 구동될 수 있다.
FTL(115)은 호스트로부터의 데이터 억세스 요청에 따라, 논리적 어드레스를 물리적 어드레스로 변환하여 메모리 장치(120)로 제공할 수 있다. 또한, FTL(115)은 메모리 셀 어레이(120)에 구비되는 다양한 셀 영역들(예컨대, 칩 단위, 블록 단위 및 페이지 단위 등)에 대한 관리 동작을 수행하며, 예컨대 메모리 장치(120)에 구비되는 메모리 셀 어레이(121)의 다수의 블록들에 대한 가비지 콜렉션 및 배드 블록 관리 동작을 수행할 수 있다.
또한, FTL(115)은 커맨드 스케줄링 모듈(115a) 및 워크로드 산출 모듈(115b)을 포함할 수 있다. 메모리 컨트롤러(110)는 호스트(100)로부터 기록, 독출 및 트림 요청 등을 수신하여, 각각의 요청에 대응되는 복수의 커맨드들을 메모리 장치(120)에 제공할 수 있다. 이 때, 커맨드 스케줄링 모듈(115a)은 상기 복수의 커맨드들을 효율적으로 수행할 수 있도록 소정의 커맨드 스케줄링 방식에 따라 복수의 커맨드들을 스케줄링할 수 있다. 커맨드 스케줄링 방식은 커맨드 수행의 우선순위 및 커맨드 수행의 처리량(Quota) 중 적어도 하나를 기준으로 커맨드를 스케줄링하는 것을 지칭할 수 있다. 커맨드 수행의 처리량은 하나의 커맨드 수행시에 처리될 수 있는 데이터양 및 복수의 커맨드들 중에서 동일 커맨드가 연속으로 수행될 수 있는 동일 커맨드의 연속 수행 개수 중 적어도 하나를 지칭할 수 있다. 커맨드 스케줄링 모듈(115a)은 향후 설명할 워크로드 레벨에 기반하여 커맨드 스케줄링 방식을 변경할 수 있다. 즉, 커맨드 스케줄링 모듈(115a)은 커맨드를 스케줄링할 때 기준이 되는 커맨드 수행의 우선순위 및 커맨드 수행의 처리량 중 적어도 하나를 변경할 수 있다. 커맨드 수행의 처리량을 변경하는 것은 하나의 커맨드 수행시에 처리될 수 있는 데이터양 및 복수의 커맨드들 중에서 동일 커맨드가 연속으로 수행될 수 있는 동일 커맨드의 연속 수행 개수 중 적어도 하나에 관한 것을 변경하는 것을 의미할 수 있다.
워크로드 산출 모듈(115b)은 가비지 콜렉션을 수행시에 워크로드 레벨을 산출할 수 있다. 다만, 워크로드 산출 모듈(115b)은 가비지 콜렉션을 수행시뿐만 아니라 소정의 주기로 워크로드 레벨을 산출할 수 있다. 일 실시예로, 워크로드 산출 모듈(115b)은 가비지 콜렉션의 수행 대상이 되는 적어도 하나의 희생 블록(Victim Block)을 선택하기 위해 생성된 희생 블록 리스트(Victim Block List)의 블록들의 유효 페이지 비율 또는 개수를 산출할 수 있다. 워크로드 산출 모듈(115b)은 산출된 유효 페이지 비율 또는 개수를 기반으로 워크로드 레벨을 산출하거나, 산출된 유효 페이지 비율 또는 개수를 워크로드 레벨로 삼을 수 있다. 또 다른 실시예로, 워크로드 산출 모듈(115b)은 메모리 장치(120)가 포함하는 복수의 블록들 중 프리 블록이 아닌 논-프리 블록들의 비율 또는 개수를 산출할 수 있다. 워크로드 산출 모듈(115b)은 산출된 논-프리 블록의 비율 또는 개수를 기반으로 워크로드 레벨을 산출하거나, 산출된 논-프리 블록의 비율 또는 개수를 워크로드 레벨로 삼을 수 있다.
다만, 이는 예시적 실시예에 불과하며, 이에 국한되지 않고 워크로드 산출 모듈(115b)은 상기 생성된 희생 블록 리스트의 블록들의 무효 페이지 비율 또는 개수를 기반으로 워크로드 레벨을 산출할 수 있으며, 더 나아가 메모리 장치(120)가 포함하는 복수의 블록들 중 프리 블록의 비율 또는 개수를 기반으로 워크로드 레벨을 산출할 수 있다. 또 다른 일 실시예로, 워크로드 산출 모듈(115b)은 상기 유효 페이지 비율 및 상기 논-프리 블록 비율을 산출할 수 있으며, 산출된 유효 페이지 비율 및 산출된 논-프리 블록 비율을 기반으로 워크로드 레벨을 산출할 수 있다.
이하에서는, 서술의 편의상 워크로드 레벨은 산출된 유효 페이지 비율 또는 산출된 논-프리 블록 비율에 해당하는 것을 가정하도록 한다.
커맨드 스케줄링 모듈(115a)은 워크로드 산출 모듈(115b)에서 산출한 워크로드 레벨을 기반으로 커맨드 스케줄링 방식을 변경함으로써, 가비지 콜렉션 수행시에 희생 블록의 유효 페이지 비율을 감소시킬 수 있다. 본 발명의 일 실시예로, 커맨드 스케줄링 모듈(115a)은 트림 커맨드에 대한 커맨드 스케줄링 방식을 변경하여, 가비지 콜렉션 수행전에 유효 데이터를 무효 데이터로 변경함으로써, 상기 유효 페이지 비율을 감소시킬 수 있다. 이를 통해, 가비지 콜렉션을 효율적으로 수행할 수 있으며, 메모리 시스템(10)의 성능을 향상시킬 수 있는 효과가 있다. 이에 대한 자세한 설명은 후술하기로 한다.
한편, 메모리 장치(120)에 구비되는 메모리 셀 어레이(121)는 메타 데이터가 저장되는 메타 영역과, 유저 데이터 등의 노멀한 데이터가 저장되는 스토리지 영역을 포함할 수 있다. 메타 영역은 스토리지 영역에 저장되는 데이터를 관리하기 위한 각종 정보들을 저장할 수 있으며, 일 예로서 논리적 어드레스와 물리적 어드레스의 맵핑 정보가 메타 영역에 비휘발성하게 저장될 수 있다.
한편, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들어, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM/SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 수 있다. 다른 예를 들면, 메모리 컨트롤러(110) 및 메모리 장치(120)는 하나의 반도체 장치로 집적되어 SSD(Solid State Disk/Drive)를 구성할 수 있다.
도 2는 메모리 컨트롤러의 일 구현 예를 나타내는 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(200)는 프로세싱 유닛(processing unit, 210), 동작 메모리(working memory, 220), 호스트 인터페이스(230), 메모리 인터페이스(240) 및 ROM(250)을 포함할 수 있다. 전술한 FTL은 동작 메모리(220)에 로딩될 수 있다. FTL은 펌웨어를 포함할 수 있으며, 상기 펌웨어에 의해 구현되는 기능에 따라, FTL은 커맨드 스케줄링 모듈(221), 워크로드 산출 모듈(222), 가비지 콜렉션 모듈(223) 및 어드레스 맵핑 테이블(224)을 포함할 수 있다.
도 2에 도시되지는 않았으나, 메모리 컨트롤러(200)는 이외에도 다양한 구성들을 더 포함할 수 있으며, 예컨대 기록/독출에 따른 데이터를 임시적으로 저장하는 버퍼 메모리나, 버퍼 메모리를 제어하기 위한 버퍼 제어 모듈, 호스트로부터의 요청에 따른 메모리 동작을 제어하기 위한 커맨드(CMD)를 생성하는 커맨드 생성 모듈(미도시) 및 생성된 복수의 커맨드들을 저장하는 커맨드 큐(Queue) 등을 더 포함할 수 있다.
프로세싱 유닛(210)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 메모리 컨트롤러(200)의 전반적인 동작을 제어할 수 있다. 프로세싱 유닛(210)은 메모리 컨트롤러(200)를 제어하기 위하여 동작 메모리(220)에 로딩된 펌웨어(firmware)를 구동할 수 있다. 메모리 컨트롤러(200)는 외부의 호스트와 다양한 표준 인터페이스들을 통해 통신할 수 있으며, 호스트 인터페이스(230)는 호스트와 메모리 컨트롤러(200) 사이의 인터페이스를 제공한다. 상기 표준 인터페이스는, ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi media card), eMMC(embedded multi media card), 유니버설 플래시 기억장치(UFS), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함할 수 있다.
한편, 메모리 인터페이스(240)는 메모리 장치에 대한 인터페이스를 제공할 수 있으며, 예컨대 기록 데이터 및 독출 데이터가 메모리 인터페이스(240)를 통해 메모리 장치와 송수신될 수 있다. 또한, 메모리 인터페이스(240)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치로 제공할 수 있으며, 또한 메모리 장치로부터 각종 정보들을 수신하여 이를 메모리 컨트롤러(200) 내부로 제공할 수 있다.
한편, 동작 메모리(220)는 각종 메모리로 구현될 수 있으며, 예컨대 캐시(cache) 메모리, DRAM, SRAM, PRAM, 플래시 메모리 장치들 중 적어도 하나로 구현될 수 있다. 커맨드 스케줄링 모듈(221) 및 워크로드 산출 모듈(222)은 전술한 바 자세한 설명은 생략한다.
한편, 가비지 콜렉션 모듈(223)은 하나 이상의 프리 블록을 확보하기 위하여, 희생 블록의 하나 이상의 유효 페이지를 임의의 블록에 기록하고, 유효 페이지들이 모두 이동된 희생 블록을 소거함으로써 프리 블록이 확보될 수 있다. 한편, 어드레스 맵핑 테이블(224)은 호스트로부터의 논리적 어드레스와, 이에 대응하여 실제 데이터가 억세스될 물리적 위치를 나타내는 물리적 어드레스 사이의 맵핑 정보를 저장할 수 있다. 맵핑 정보를 참조함에 의해, 호스트로부터 제공된 논리적 어드레스는 실제 억세스될 메모리 셀의 물리적 위치를 나타내는 물리적 어드레스로 변환될 수 있다. 어드레스 맵핑 테이블(224)은 메모리 장치의 메타 영역에 불휘발성하게 저장된 맵핑 정보에 상응할 수 있으며, 메모리 시스템 구동시 메모리 장치의 메타 영역에 저장된 맵핑 정보가 어드레스 맵핑 테이블(224)에 로딩될 수 있다. 한편, ROM(read only memory, 250)은 메모리 시스템이 채용된 장치의 초기 부팅에 필요한 코드 데이터(code)를 저장할 수 있다.
도 3은 메모리 장치의 일 구현 예를 나타내는 블록도이다. 도 3을 참조하면, 메모리 장치(300)는 메모리 셀 어레이(310), 제어 로직(320), 전압 생성부(330), 로우 디코더(340) 및 페이지 버퍼(350)를 포함할 수 있다. 도시되지는 않았으나, 메모리 장치(300)는 데이터 입출력 회로 또는 입출력 인터페이스 등을 더 포함할 수 있다.
메모리 셀 어레이(310)는 메타 데이터를 저장하는 메타 영역(311)과 노멀 데이터를 저장하는 스토리지 영역(312)을 포함할 수 있다. 메타 영역(311)과 스토리지 영역(312) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(310)가 플래시 메모리 셀들을 포함하는 경우, 메모리 셀 어레이(310)는 워드 라인들(WL), 스트링 선택 라인(SSL), 접지 선택 라인(GSL) 및 비트 라인들(BL)에 연결될 수 있다. 구체적으로, 메모리 셀 어레이(310)는 워드 라인들(WL), 스트링 선택 라인(SSL) 및 접지 선택 라인(GSL)을 통해 로우 디코더(340)에 연결되고, 비트 라인들(BL)을 통해 페이지 버퍼(350)에 연결될 수 있다.
제어 로직(320)은 메모리 컨트롤러로부터 수신한 커맨드(CMD), 어드레스(ADD) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(310)에 데이터를 기록하거나, 메모리 셀 어레이(310)로부터 데이터를 독출하거나, 메모리 셀 어레이(310)에 저장된 데이터를 소거, 또는 메모리 셀 어레이(310)에 저장된 유효 데이터를 무효 데이터로 변환하는 트림 동작을 수행하기 위한 각종 내부 제어 신호를 출력할 수 있다.
제어 로직(320)에서 출력된 각종 제어 신호는 전압 생성부(330), 로우 디코더(340) 및 페이지 버퍼(350)에 제공될 수 있다. 구체적으로, 제어 로직(320)은 전압 생성부(330)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(340)에 로우 어드레스(X-ADD)를 제공할 수 있으며, 페이지 버퍼(350)에 칼럼 어드레스(Y-ADD)를 제공할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 제어 로직(320)은 전압 생성부(330), 로우 디코더(340) 및 페이지 버퍼(350)에 다른 제어 신호들을 더 제공할 수 있다.
본 발명의 실시예에 따라, 메타 영역(311)은 다수 개의 맵핑 테이블들을 포함할 수 있다. 메모리 장치(300)는 메모리 콘트롤러의 제어에 기반하여 가비지 콜렉션을 수행하는 동안 스토리지 영역(312)의 희생 블록에 포함된 유효 페이지들을 프리 블록에 복사(Copy)할 수 있다. 또한, 메타 영역(311)에 구비되는 다수 개의 맵핑 테이블들은, 메모리 컨트롤러의 제어에 기반하여 가비지 콜렉션 결과에 따라 업데이트될 수 있다. 가비지 콜렉션 과정에서 다수 회에 걸쳐서 메타 영역(311)에 대한 업데이트 동작이 수행될 수 있다. 본 발명의 실시예에 따라 가비지 콜렉션 수행 전에 희생 블록들의 유효 페이지 비율을 낮춤으로써, 효율적인 가비지 콜렉션을 수행하고, 향후 불필요한 가비지 콜렉션 수행을 방지할 수 있다.
도 4는 본 발명의 일 실시예에 따른 워크로드 산출 모듈을 나타내는 블록도이다. 도 5a 내지 도 5c 는 워크로드 산출 모듈이 워크로드 레벨을 산출하는 동작을 설명하기 위한 도면이다.
도 4에 도시된 바와 같이, 워크로드 산출 모듈(400)은 유효 페이지 비율 산출부(420) 및 논-프리 블록 비율 산출부(440)을 포함할 수 있다. 유효 페이지 비율 산출부(420)는 전술하였듯이, 희생 블록 리스트(Victim Block List)의 블록들의 유효 페이지 비율을 산출할 수 있다. 희생 블록 리스트(Victim Block List)는 가비지 콜렉션을 수행할 대상이 되는 적어도 하나의 희생 블록을 선택하기 위하여, 각각의 블록들의 가비지 콜렉션 코스트가 작은 순으로 N개(N은 자연수)의 블록들을 검출한 결과 생성된 것이다. 일 실시예로, 상기 가비지 콜렉션 코스트는 각각에 블록의 유효 데이터 비율을 기준으로 계산될 수 있다. 다만, 이는 일 실시예로써 이에 국한되지 않으며, 전술하였듯이, 유효 페이지 비율 산출부(420)에서 카운팅한 유효 페이지의 개수가 워크로드 레벨에 해당될 수 있다.
이하 설명할 도 5a 및 5b 에서 메모리 장치는 제 1 내지 제 4 블록을 포함하고, 각각의 블록은 제 1 내지 제 4 페이지를 포함하며, 각각의 4개의 페이지에 데이터가 저장된 것을 가정한다. 이는 예시적 실시예에 불과하며, 이에 국한되지 않고, 메모리 장치는 다양한 개수의 블록을 포함하고, 각각의 블록은 다양한 개수의 페이지 단위 데이터를 저장할 수 있음은 자명하다.
도 4 및 도 5a를 참고하면, 먼저 호스트로부터 데이터A(DATA A), 데이터B(DATA B) 및 데이터C(DATA C)를 메모리 장치에 기록 요청에 응답하여 생성된 기록 커맨드를 수행하는 경우를 이하 설명한다. 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)에서는 데이터A(DATA A), 데이터B(DATA B) 및 데이터C(DATA C)를 블록들에 기록하기 전에, 프리 블록을 확보하기 위하여 가비지 콜렉션을 수행될 수 있다. 즉, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)를 생성되고, 그 중 무효 페이지들을 가장 많이 저장하여 가비지 콜렉션 코스트가 가장 낮은 제 1 블록(B1)이 희생 블록(VB)으로 선택될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지(Page4)에 저장된 유효 데이터(DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다. 이후, 제 1 블록(B1)은 블록 단위로 소거되어, 프리 블록(FB)이 될 수 있다. 제 3 스텝(Step 3)에서는 데이터A(DATA A), 데이터B(DATA B) 및 데이터C(DATA C)를 제 4 블록(B4)에 기록함으로써, 기록 커맨드를 수행할 수 있다. 유효 페이지 비율 산출 모듈(420)은 상기 가비지 콜렉션 수행시 희생 블록 리스트(Victim Block List)의 블록들(B1~B3)의 유효 페이지 비율을 산출할 수 있다. 예를 들면, 블록들(B1~B3)의 총 페이지 개수는 12개이고, 유효 페이지 개수는 6개이므로 유효 페이지 비율은 0.5로 산출될 수 있다. 상기 산출된 유효 페이지 비율인 0.5 는 워크로드 레벨에 해당될 수 있다.
도 4 및 도 5b를 참고하면, 도 5a와 마찬가지로 호스트로부터 데이터A(DATA A), 데이터B(DATA B) 및 데이터C(DATA C)를 메모리 장치에 기록 요청에 응답하여 생성된 기록 커맨드를 수행하는 경우를 이하 설명한다. 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)에서는 데이터A(DATA A), 데이터B(DATA B) 및 데이터C(DATA C)를 블록들에 기록되기 전에, 적어도 하나의 프리 블록을 확보하기 위하여 가비지 콜렉션이 수행될 수 있다. 즉, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)를 생성되고, 그 중 무효 페이지들을 가장 많이 저장하여 가비지 콜렉션 코스트가 가장 낮은 제 1 블록(B1)을 희생 블록(VB)으로 선택될 수 있다.
제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지들(Page 3, Page4)에 저장된 유효 데이터(DATA 3, DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사 될 수 있다. 이후, 제 1 블록(B1)은 블록 단위로 소거되어, 프리 블록(FB)이 될 수 있다. 다만, 제 3 스텝(Step 3)에서는 데이터A(DATA A), 데이터B(DATA B) 및 데이터C(DATA C)를 제 4 블록(B4)에 기록함으로써, 기록 커맨드를 수행하여야 하나, 제 4 블록(B4)의 남은 메모리 공간이 부족하여, 데이터 C(DATA C)가 제 4 블록(B4)에 기록될 수 없게 된다. 결국, 데이터 C(DATA C)가 기록되기 전에 적어도 하나의 프리 블록을 확보하기 위하여 제 3 스텝(Step 3) 및 제 4 스텝(Step 4)에서 또 한번의 가비지 콜렉션이 수행될 수 있다.
제3 스텝(Step 3)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 제 2 블록(B2)을 희생 블록(VB)로 선택될 수 있다. 제 4 스텝(Step 4)에서는 제 2 블록(B2)의 유효 페이지들(Page 1, Page 2, Page 4)의 유효 데이터(DATA 5, DATA 6, DATA 8)는 프리 블록(FB)인 제 1 블록(B1)에 복사될 수 있다. 또한, 데이터C(DATA C)를 제 1 블록(B1)에 기록함으로써, 기록 커맨드를 수행할 수 있다. 유효 페이지 비율 산출 모듈(420)은 상기 가비지 콜렉션 수행시 희생 블록 리스트(Victim Block List)의 블록들(B1~B3)의 유효 페이지 비율을 산출할 수 있다. 예를 들면, 블록들(B1~B3)의 총 페이지 개수는 12개이고, 유효 페이지 개수는 7개이므로 유효 페이지 비율은 0.583로 산출될 수 있다. 상기 산출된 유효 페이지 비율인 0.583 은 워크로드 레벨에 해당될 수 있다.
도 5b에서와 같이, 워크로드 레벨에 따라서 부가적인 가비지 콜렉션을 수행하는 문제가 발생할 수 있다. 즉, 워크로드 레벨이 기준 레벨이상에 해당하는 경우, 예를 들어, 워크로드 레벨인 유효 페이지 비율이 기준 레벨인 0.583 이상인 경우에는 부가적인 가비지 콜렉션을 수행하여, 메모리 시스템의 성능이 저하될 수 있다. 따라서, 본 발명에 따른 워크로드 산출 모듈(400)은 상기 유효 페이지 비율에 해당하는 워크로드 레벨을 산출함으로써, 산출된 워크로드 레벨을 기반으로 향후 메모리 시스템의 커맨드 스케줄링 방식을 변경하여 부가적인 가비지 콜렉션 수행을 방지할 수 있다. 다만, 상기 기준 레벨은 예시적인 값을 나타내는 것으로 메모리 시스템의 동작 환경에 따라 다른 기준 레벨이 설정될 수 있다.
도 4 및 도 5c를 참고하면, 논-프리블록 비율 산출부(440)는 도 1 의 메모리 장치(120)가 포함하는 블록들(B1~Bn+m) 중 논-프리 블록(NFB)의 개수(n)를 카운팅하여, 논-프리 블록의 비율을 산출할 수 있다. 논-프리 블록(NFB)의 비율은 워크로드 레벨에 해당될 수 있다. 논-프리 블록(NFB)의 비율이 기준 레벨 이상인 때에는 전술한 바와 같이 부가적인 가비지 콜렉션을 수행하게 될 가능성이 높다. 따라서, 본 발명에 따른 워크로드 산출 모듈(400)은 논-프리 블록(NFB)의 비율과 같은 워크로드 레벨을 산출함으로써, 산출된 워크로드 레벨을 기반으로 향후 메모리 시스템의 커맨드 스케줄링 방식을 변경하여 부가적인 가비지 콜렉션 수행을 방지할 수 있다. 다만, 이는 일 실시예로써 이에 국한되지 않으며, 논-프리 블록 비율 산출부(440)에서 카운팅한 논-프리 블록(NFB)의 개수가 워크로드 레벨에 해당될 수 있다.
또한, 본 발명의 또 다른 실시예로써 워크로드 산출 모듈(400)은 유효 페이지 비율 산출부(420)에서 산출된 유효 페이지 비율 및 논-프리블록 비율 산출부(440)에서 산출된 논-프리 블록의 비율을 조합 및 연산함으로써 유효 페이지 비율 및 논-프리 블록 비율을 고려한 워크로드 레벨을 산출할 수 있다.
도 6 은 본 발명의 일 실시예에 따른 커맨드 스케줄링 모듈을 나타내는 블록도이고, 도 7a 내지 도 7f는 커맨드 수행의 우선순위를 변경하는 동작에 대해 설명하기 위한 도면이고, 도 8a 내지 도 8d, 도 9a 내지 도 9d는 커맨드 수행의 처리량을 변경하는 동작에 대해 설명하기 위한 도면이다.
도 6에 도시된 바와 같이, 커맨드 스케줄링 모듈(500)은 커맨드 우선순위 관리부(520) 및 커맨드 처리량 관리부(540)를 포함할 수 있다. 커맨드 스케줄링 모듈(500)은 상기 복수의 커맨드들을 효율적으로 수행할 수 있도록 소정의 커맨드 스케줄링 방식에 따라 복수의 커맨드들을 스케줄링할 수 있다. 커맨드 우선순위 관리부(520)는 커맨드 스케줄링 방식 중 하나인 커맨드 수행의 우선순위를 관리할 수 있다. 예를 들면, 커맨드 우선순위 관리부(520)는 기록 및 독출 커맨드는 제 1 커맨드 수행 우선순위, 트림 커맨드는 제 2 커맨드 수행 우선순위로 설정하여 기록 및 독출 커맨드를 트림 커맨드보다 우선적으로 수행하도록 할 수 있다. 또한, 커맨드 우선순위 관리부(520)는 워크로드 레벨을 기반으로 커맨드 수행의 우선순위를 변경할 수 있다. 이에 자세한 설명은 도 7a 내지 도 7f에 걸쳐 서술하도록 한다.
또한, 커맨드 처리량 관리부(540)는 커맨드 스케줄링 방식 중 하나인 커맨드 수행의 처리량(Quota)을 관리할 수 있다. 커맨드 처리량 관리부(540)는 워크로드 레벨을 기반으로 커맨드 수행의 처리량을 변경할 수 있다. 커맨드 처리량 관리부(540)가 커맨드 수행의 처리량 중 하나의 커맨드 수행시에 처리될 수 있는 데이터양을 변경하는 것에 대하여, 도 8a 내지 도 8d에서 자세하게 서술하도록 한다. 또한, 커맨드 처리량 관리부(540)가 커맨드 수행의 처리량 중 복수의 커맨드들중에서 동일 커맨드가 연속으로 수행될 수 있는 동일 커맨드의 연속 수행 개수를 변경하는 것에 대하여, 도 9a 내지 도 9d에서 자세하게 서술하도록 한다.
먼저, 커맨드 우선순위 관리부(520)에 대하여 설명하도록 한다. 도 1 및 도 7a를 참고하면, 메모리 컨트롤러(110)는 호스트(100)로부터 요청 스트림(Req Stream)의 순서로 복수의 요청들을 수신할 수 있다. 일 실시예로, 제 1 기록 요청(Write 1), 독출 요청(Read), 제 1 트림 요청(Trim 1), 제 2 기록 요청(Write 2), 제 2 트림 요청(Trim 2), 제 3 기록 요청(Write 3)을 순서대로 수신할 수 있다. 상기 복수의 요청들에 대응하는 복수의 커맨드들은 생성되어 커맨드 큐에 저장될 수 있다. 커맨드 스케줄링 모듈(500)은 소정의 커맨드 스케줄링 방식에 따라 상기 복수의 커맨드들을 스케줄링하여 커맨드 스트림(CMD Stream)의 순서대로 메모리 장치(120)에 제공할 수 있다. 일 실시예로, 커맨드 스케줄링 모듈(500)은 제 1 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다. 상기 제 1 커맨드 스케줄링 방식의 커맨드 수행 우선순위(CMD Priority)는 도 7a에 도시된 바와 같이, 기록 및 독출 커맨드는 제 1 커맨드 수행 우선순위(1st CMD priority)이고, 트림 커맨드는 제 2 커맨드 수행 우선순위(2nd CMD priority)일 수 있다. 이와 같은 제 1 커맨드 스케줄링 방식은 백 그라운드 트림 방식에 해당할 수 있다. 따라서, 커맨드 스케줄링 모듈(500)은 커맨드 흐름(CMD Stream)와 같이 제 1 기록 커맨드(Write 1), 독출 커맨드(Read), 제 2 기록 커맨드(Write 2), 제 3 기록 커맨드(Write 3), 제 1 트림 커맨드(Trim 1), 제 2 트림 커맨드(Trim 2) 순서로 커맨드 수행을 할 수 있도록 스케줄링할 수 있다.
도 7b를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)에서는 제 2 기록 커맨드(Write 2)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행될 수 있다. 즉, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 그 중 제 1 블록(B1)이 희생 블록(VB)으로 선택될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지들(Page 2, Page 3, Page 4)에 저장된 유효 데이터(DATA 2, DATA 3, DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다.
도 1, 도 6 및 도 7c 를 참고하면, 커맨드 스케줄링 모듈(500)은 전술한 워크로드 레벨을 기반으로, 상기 제 1 커맨드 스케줄링 방식을 제 2 커맨드 스케줄링 방식으로 변경할 수 있다. 커맨드 우선순위 관리부(520)는 트림 커맨드(Trim) 수행 우선순위를 제 1 커맨드 수행우선순위(1st CMD priority)로 변경할 수 있다. 즉, 트림 커맨드(Trim)와 기록 커맨드(Write)의 수행 우선순위를 동등하게 될 수 있다. 일 실시예로, 커맨드 스케줄링 모듈(500)은 제 2 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다. 상기 제 2 커맨드 스케줄링 방식의 커맨드 수행 우선순위(CMD Priority)는 도 7c에 도시된 바와 같이, 기록 커맨드(Write), 독출 커맨드(Read), 트림 커맨드(Trim)는 제 1 커맨드 수행 우선순위(1st CMD priority)일 수 있다. 따라서, 커맨드 스케줄링 모듈(500)은 커맨드 흐름(CMD Stream)과 같이 제 1 기록 커맨드(Write 1), 독출 커맨드(Read), 제 1 트림 커맨드(Trim 1), 제 2 기록 커맨드(Write 2), 제 2 트림 커맨드(Trim 2), 제 3 기록 커맨드(Write 3) 순서로 커맨드 수행을 할 수 있도록 스케줄링할 수 있다.
도 7d를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)은 제 2 기록 커맨드(Write 2)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행되는 것을 나타내는 도면이다. 도 7b와 다르게 도 7d의 제 2 블록(B2)의 제3 페이지(Page 3)는 제 1 트림 커맨드(Trim 1)의 수행 결과 무효 페이지로 변경된 상태일 수 있다. 따라서, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 그 중 제 2 블록(B2)이 희생 블록(VB)으로 선택될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 2 블록(B2)의 유효 페이지들(Page 1, Page 4)에 저장된 유효 데이터(DATA 5, DATA 8)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다. 이와 같이, 도 7b의 가비지 콜렉션 수행할 때에는 세 개의 유효 페이지들에 저장된 유효 데이터를 프리 블록에 저장하나, 도 7d의 가비지 콜렉션 수행할 때에는 제 1 트림 커맨드(Trim 1)가 제 2 기록 커맨드(Write 2)보다 먼저 수행되어, 두 개의 유효 페이지들에 저장된 유효 데이터만을 프리 블록에 저장할 수 있어 좀더 효율적인 가비지 콜렉션 수행이 가능하다.
도 1, 도 6 및 도 7e 를 참고하면, 커맨드 스케줄링 모듈(500)은 전술한 워크로드 레벨을 기반으로, 도 7c 에서 서술한 바와 같이, 상기 제 1 커맨드 스케줄링 방식을 제 2 커맨드 스케줄링 방식으로 변경할 수 있다. 다만, 도 7c와는 다르게 커맨드 우선순위 관리부(520)는 트림 커맨드(Trim) 수행 우선순위를 제 1 커맨드 수행우선순위(1st CMD priority)로 변경하고, 기록 커맨드(Write) 및 독출 커맨드(Read) 수행 우선순위를 제 2 커맨드 수행우선순위(2nd CMD priority)로 변경할 수 있다. 커맨드 스케줄링 모듈(500)은 위와 같이 변경된 제 2 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다. 상기 제 2 커맨드 스케줄링 방식의 커맨드 수행 우선순위(CMD Priority)는 도 7e에 도시된 바와 같이, 트림 커맨드(Trim)는 제 1 커맨드 수행 우선순위(1st CMD priority)일 수 있고, 기록 커맨드(Write) 및 독출 커맨드(Read)는 제 2 커맨드 수행 우선순위(2nd CMD priority)일 수 있다. 즉, 트림 커맨드(Trim)는 기록 커맨드(Write) 및 독출 커맨드(Read)보다 우선적으로 수행될 수 있도록 스케줄링 될 수 있다. 따라서, 커맨드 스케줄링 모듈(500)은 커맨드 흐름(CMD Stream)과 같이 제 1 트림 커맨드(Trim 1), 제 2 트림 커맨드(Trim 2), 제 1 기록 커맨드(Write 1), 독출 커맨드(Read), 제 2 기록 커맨드(Write 2), 제 3 기록 커맨드(Write 3) 순서로 커맨드 수행을 할 수 있도록 의 순서로 스케줄링할 수 있다.
도 7f를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)에서는 제 2 기록 커맨드(Write 2)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행될 수 있다. 도 7b와 다르게 도 7f의 제 2 블록(B2)의 제3 페이지(Page 3)는 제 1 트림 커맨드(Trim 1)의 수행 결과 무효 페이지로 변경된 상태일 수 있으며, 제 4 페이지(Page 4)는 제 2 트림 커맨드(Trim 2)의 수행 결과 무효 페이지로 변경될 상태일 수 있다. 따라서, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 그 중 제 2 블록(B2)이 희생 블록(VB)으로 선택될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 2 블록(B2)의 유효 페이지(Page 1)에 저장된 유효 데이터(DATA 5)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다. 이와 같이, 도 7b의 가비지 콜렉션 수행할 때에는 세 개의 유효 페이지들에 저장된 유효 데이터를 프리 블록에 저장하나, 도 7e의 가비지 콜렉션 수행할 때에는 제 1 트림 커맨드(Trim 1) 및 제 2 트림 커맨드(Trim 2)가 제 2 기록 커맨드(Write 2)보다 먼저 수행되어, 한 개의 유효 페이지에 저장된 유효 데이터만을 프리 블록에 저장할 수 있어 좀더 효율적인 가비지 콜렉션 수행이 가능하다.
이하, 커맨드 처리량 관리부(540)에 대해서 설명하도록 한다. 도 1 및 도 8a를 참고하면, 메모리 컨트롤러(110)는 호스트(100)로부터 요청 스트림(Req Stream)의 순서로 복수의 요청들을 수신할 수 있다. 일 실시예로, 제 1 기록 요청(Write 1), 제 2 기록 요청(Write 2), 제 1 트림 요청(Trim 1), 제 3 기록 요청(Write 3), 제 2 트림 요청(Trim 2), 제 4 기록 요청(Write 4), 제 5 기록 요청(Write 5)을 순서대로 수신할 수 있다. 상기 복수의 요청들에 대응하는 복수의 커맨드들은 생성되어 커맨드 큐에 저장될 수 있다. 즉, 커맨드 수행의 우선순위에 따라, 기록 커맨드들(Write 1 ~ Write 5)은 제1 커맨드 수행우선순위 큐(1st CMD priority Queue)에 순서대로 저장될 수 있으며, 트림 커맨드들(Trim 1 ~ Trim 2)은 제 2 커맨드 수행우선순위 큐(2nd CMD priority Queue)에 저장될 수 있다.
커맨드 스케줄링 모듈(500)은 소정의 커맨드 스케줄링 방식에 따라 상기 복수의 커맨드들을 스케줄링하여 커맨드 스트림(CMD Stream)의 순서대로 메모리 장치(120)에 제공할 수 있다. 일 실시예로, 커맨드 스케줄링 모듈(500)은 제 1 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다. 상기 제 1 커맨드 스케줄링 방식에서 커맨드 수행의 처리량(CMD Quota A)은 복수의 커맨드들 중 동일 커맨드가 연속으로 수행될 수 있는 동일 커맨드 연속 수행 개수에 해당하는 것을 전제한다. 즉, 커맨드 수행의 처리량(CMD Quota A)에 따라서, 기입 커맨드(Write)는 두 개의 기입 커맨드가 연속으로 수행될 수 있으며, 트림 커맨드(Trim)는 한 개의 트림 커맨드만 수행될 수 있다.
위와 같은 커맨드 수행의 처리량(CMD Quota A)과 커맨드 수행 우선순위(CMD priority)를 기반으로 커맨드 스케줄링 모듈(500)은 커맨드 흐름(CMD Stream)과 같이 제 1 기록 커맨드(Write 1), 제 2 기록 커맨드(Write 2), 제 1 트림 커맨드(Trim 1), 제 3 기록 커맨드(Write 3), 제 4 기록 커맨드(Write 4), 제 2 트림 커맨드(Trim 2), 제 5 기록 커맨드(Write 5) 순서로 커맨드 수행을 할 수 있도록 스케줄링할 수 있다.
도 8b를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)은 제 3 기록 커맨드(Write 3)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행되는 것을 나타내는 도면이다. 즉, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 그 중 제 1 블록(B1)이 희생 블록(VB)으로 선택될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지들(Page 3, Page 4)에 저장된 유효 데이터(DATA 3, DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다.
도 1, 도 6 및 도 8c 를 참고하면, 커맨드 스케줄링 모듈(500)은 전술한 워크로드 레벨을 기반으로, 상기 제 1 커맨드 스케줄링 방식을 제 2 커맨드 스케줄링 방식으로 변경할 수 있다. 커맨드 처리량 관리부(540)는 커맨드 수행의 처리량(CMD Quota A)를 변경할 수 있다. 예를 들면, 트림 커맨드(Trim)의 동일 커맨드 연속 수행 개수를 2개로 변경할 수 있다. 일 실시예로, 커맨드 스케줄링 모듈(500)은 제 2 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다. 상기 제 2 커맨드 스케줄링 방식의 커맨드 수행 따라서, 커맨드 스케줄링 모듈(500)은 커맨드 흐름(CMD Stream)과 같이 제 1 기록 커맨드(Write 1), 제 2 기록 커맨드(Write 2), 제 1 트림 커맨드(Trim 1), 제 2 트림 커맨드(Trim 2), 제 3 기록 커맨드(Write 3), 제 4 기록 커맨드(Write 4), 제 5 기록 커맨드(Write 5) 순서로 커맨드 수행을 할 수 있도록 스케줄링할 수 있다.
도 8d를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)에서는 제 3 기록 커맨드(Write 3)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행될 수 있다. 도 8b와 다르게 도 8d의 제 1 블록(B1)의 제3 페이지(Page 3)는 제 2 트림 커맨드(Trim 2)의 수행 결과 무효 페이지로 변경된 상태일 수 있다. 따라서, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 그 중 제 2 블록(B2)이 희생 블록(VB)으로 선택될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지들(Page 4)에 저장된 유효 데이터(DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다. 이와 같이, 도 8b의 가비지 콜렉션 수행할 때에는 두 개의 유효 페이지들에 저장된 유효 데이터를 프리 블록에 저장하나, 도 8d의 가비지 콜렉션 수행할 때에는 제 2 트림 커맨드(Trim 2)가 먼저 수행되어, 한 개의 유효 페이지에 저장된 유효 데이터만을 프리 블록에 저장할 수 있어 좀더 효율적인 가비지 콜렉션 수행이 가능하다.
도 1 및 도 9a를 참고하면, 메모리 컨트롤러(110)는 호스트(100)로부터 요청 스트림(Req Stream)의 순서로 복수의 요청들을 수신할 수 있다. 일 실시예로, 제 1 기록 요청(Write 1), 독출 요청(Read), 제 1 트림 요청(Trim 1), 제 2 기록 요청(Write 2), 제 2 트림 요청(Trim 2), 제 3 기록 요청(Write 3)을 순서대로 수신할 수 있다. 상기 복수의 요청들에 대응하는 복수의 커맨드들은 생성되어 커맨드 큐에 저장될 수 있다.
커맨드 스케줄링 모듈(500)은 소정의 커맨드 스케줄링 방식에 따라 상기 복수의 커맨드들을 스케줄링하여 커맨드 스트림(CMD Stream)의 순서대로 메모리 장치(120)에 제공할 수 있다. 일 실시예로, 커맨드 스케줄링 모듈(500)은 제 1 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다. 상기 제 1 커맨드 스케줄링 방식에서 커맨드 수행의 처리량(CMD Quota B)은 하나의 커맨드 수행시에 처리되는 데이터양에 해당하는 것을 전제한다. 즉, 커맨드 수행의 처리량(CMD Quota B)에 따라서, 기입 커맨드(Write), 독출 커맨드(Read)는 하나의 커맨드 수행시 처리되는 데이터양이 8 (LBA; Logical Block Address)에 해당하고, 트림 커맨드(Trim)는 하나의 커맨드 수행시 처리되는 데이터양이 7(LBA)에 해당할 수 있다. 데이터양의 단위인 LBA는 예시적 실시예에 불과하며, 다양한 단위에 해당할 수 있다. 이하는 8 (LBA)는 하나의 페이지에 저장될 수 있는 데이터양에 해당할 수 있음을 가정하도록 한다.
위와 같은 커맨드 수행의 처리량(CMD Quota B)과 커맨드 수행 우선순위(CMD priority)를 기반으로 커맨드 스케줄링 모듈(500)은 커맨드 흐름(CMD Stream)과 같이 제 1 기록 요청(Write 1), 독출 요청(Read), 제 1 트림 요청(Trim 1), 제 2 기록 요청(Write 2), 제 2 트림 요청(Trim 2), 제 3 기록 요청(Write 3) 순서로 커맨드 수행을 할 수 있도록 스케줄링할 수 있다.
도 9b를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)은 제 2 기록 커맨드(Write 2)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행되는 것을 나타내는 도면이다. 즉, 제 1 스텝(Step 1)에서는 희생 블록 리스트(Victim Block List)가 생성되고, 그 중 제 1 블록(B1)이 희생 블록(VB)으로 선택될 수 있다. 다만, 제 1 트림 커맨드(Trim 1) 수행한 결과, 제 1 블록(B1)의 제 1 페이지(Page 1)에 저장된 제 1 데이터(DATA 1) 중 7(LBA)만큼의 데이터만이 무효 데이터로 변경될 수 있다. 제 1페이지(Page 1) 전체의 데이터가 무효 데이터로 변경되지 않았으므로, 가비지 콜렉션 수행시에는 제 1 페이지(Page 1)는 유효 페이지에 해당되어 제 1 데이터(DATA 1)를 복사하는 동작이 수행될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지들(Page 1, Page 3, Page 4)에 저장된 유효 데이터(DATA 1, DATA 3, DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다. 이와 같이, 제 1 데이터(DATA 1) 중 무효 데이터로 변경된 데이터까지 제 4 블록(B4)에 불필요하게 복사될 수 있다.
도 1, 도 6 및 도 9c 를 참고하면, 커맨드 스케줄링 모듈(500)은 전술한 워크로드 레벨을 기반으로, 상기 제 1 커맨드 스케줄링 방식을 제 2 커맨드 스케줄링 방식으로 변경할 수 있다. 커맨드 처리량 관리부(540)는 커맨드 수행의 처리량(CMD Quota B)를 변경할 수 있다. 예를 들면, 트림 커맨드(Trim)의 하나의 커맨드 수행시 처리되는 데이터양을 8(LBA)로 변경할 수 있다. 일 실시예로, 커맨드 스케줄링 모듈(500)은 제 2 커맨드 스케줄링 방식에 따라 상기 커맨드들을 스케줄링할 수 있다.
도 9d를 참고하면, 제 1 스텝(Step 1) 및 제 2 스텝(Step 2)은 제 2 기록 커맨드(Write 2)를 수행하기 전에 적어도 하나의 프리 블록을 확보하기 위하여, 가비지 콜렉션이 수행되는 것을 나타내는 도면이다. 도 9b와 다르게 제 1 트림 커맨드(Trim 1) 수행한 결과, 제 1 블록(B1)의 제 1 페이지(Page1)에 저장된 제 1 데이터(DATA 1) 중 8(LBA)만큼의 데이터를 무효 데이터로 변경될 수 있다. 따라서, 제 1 페이지(Page 1)는 무효 페이지로 변경될 수 있다. 제 2 스텝(Step 2)에서는 희생 블록(VB)으로 선택된 제 1 블록(B1)의 유효 페이지들(Page 3, Page 4)에 저장된 유효 데이터(DATA 3, DATA 4)는 프리 블록(FB)인 제 4 블록(B4)에 복사될 수 있다. 이와 같이, 도 9b와 달리 도 9d에서는 불필요한 무효 데이터를 복사하지 않고 효율적인 가비지 콜렉션을 수행할 수 있다.
도 10은 본 발명의 일 실시예에 따른 메모리 시스템 동작방법을 나타내는 플로우 차트(S100)이다. 도 10에 도시된 바와 같이, 먼저 메모리 시스템의 유휴 시간(idle time) 또는 기록 커맨드를 수행할 때에 적어도 하나의 프리 블록을 확보하기 위하여 가비지 콜렉션 수행한다(S110). 가비지 콜렉션 수행시에 워크로드 레벨 산출부는 워크로드 레벨을 산출한다(S120). 다만, 워크로드 레벨을 산출하는 것은 가비지 콜렉션 수행시뿐만 아니라 소정의 주기로 워크로드 레벨을 산출할 수 있다. 커맨드 스케줄링 모듈은 산출된 워크로드 레벨을 기반으로 커맨드 스케줄링 방식을 변경한다(S130). 일 예로서, 워크로드 레벨이 기준 레벨 이상에 해당하는 때에 커맨드 스케줄링 방식을 변경할 수 있다. 이 후, 변경된 커맨드 스케줄링 방식에 따라 메모리 시스템 동작을 수행한다(S140).
도 11 은 본 발명의 일 실시예에 따른 워크로드 레벨을 산출하는 방법을 나타내는 플로우 차트(S200)이다. 먼저, 가비지 코스트가 낮은 N개의 블록들을 검출하고 이를 이용하여 희생 블록 리스트를 생성한다(S210). 워크로드 레벨 산출부는 희생 블록 리스트의 블록들의 유효 페이지 비율 또는 총 개수를 산출한다(S220). 워크로드 레벨 산출부는 산출된 희생 블록 리스트의 블록들의 유효 페이지 비율 또는 개수를 기반으로 워크로드 레벨을 산출한다(S230). 다만, 별도의 산출과정 없이 산출된 희생 블록 리스트의 블록들의 유효 페이지 비율 또는 개수를 워크로드 레벨로 삼을 수 있다. 또 다른 실시예로, 워크로드 레벨 산출부는 논-프리 블록의 비율 또는 개수을 산출하여 이를 이용하여 워크로드 레벨을 산출할 수 있다.
도 12는 본 발명의 일 실시예에 따른 커맨드 스케줄링 방식을 변경하는 방법을 나타내는 플로우 차트(S300)이다. 도 12 에 도시된 바와 같이, 먼저, 커맨드 스케줄링 모듈은 산출된 워크로드 레벨과 기준 레벨을 비교한다(S310). 워크로드 레벨이 기준 레벨 이상에 해당하는 경우(S320, YES), 제 1 커맨드 스케줄링 방식을 제 2 커맨드 스케줄링 방식으로 변경한다(S330). 메모리 시스템은 제 2 커맨드 스케줄링 방식에 따라 동작을 수행함으로써(S340), 제 1 커맨드 스케줄링 방식을 따를 때보다 효율적인 가비지 콜렉션을 수행할 수 있다. 다만, 워크로드 레벨이 기준 레벨 이상에 해당하지 않는 경우(S320, NO)는 메모리 시스템은 제 1 커맨드 스케줄링 방식에 따라 메모리 시스템 동작을 수행할 수 있다(S340). 커맨드 스케줄링 방식은 전술한 바와 같이, 커맨드 수행의 우선순위 및 커맨드 수행의 처리량(Quota) 중 적어도 하나를 기준으로 커맨드를 스케줄링하는 것을 지칭할 수 있다. 제 2 커맨드 스케줄링 방식은 제 1 커맨드 스케줄링 방식의 커맨드 수행의 우선순위 및 커맨드 수행의 처리량 중 적어도 하나가 변경된 것일 수 있다.
도 13은 본 발명의 일 실시예로서 변경된 커맨드 스케줄링 방식을 따르는 메모리 시스템 동작방법을 나타내는 플로우 차트(S400)이다.
도 13에 도시된 바와 같이, 먼저 메모리 시스템은 호스트로부터 받은 복수의 요청들에 응답하여 생성된 트림 커맨드 및 기록 커맨드를 포함하는 복수의 커맨드들을 커맨드 큐에 저장한다(S410). 메모리 시스템은 제 1 커맨드 스케줄링 방식에서 변경된 제 2 커맨드 스케줄링 방식에 따라 동작을 하는 경우(S420, YES), 일 예로써, 메모리 시스템은 상기 트림 커맨드를 상기 기록 커맨드보다 먼저 수행한다(S430). 즉, 트림 커맨드 수행을 통하여, 메모리 장치에 저장된 유효 데이터를 무효 데이터로 변경한다. 이후, 적어도 하나의 프리 블록을 확보하기 위한 가비지 콜렉션 수행 및 기록 커맨드를 수행한다(S440). 메모리 시스템은 제 1 커맨드 스케줄링 방식에 따라 동작을 하는 경우(S420, NO), 적어도 하나의 프리 블록을 확보하기 위한 가비지 콜렉션 수행 및 기록 커맨드를 수행한다(S450). 이후, 메모리 시스템은 상기 트림 커맨드를 수행한다(S460). 이와 같이, 메모리 시스템가 제 2 커맨드 스케줄링 방식을 따르는 때에는 트림 커맨드를 우선적으로 수행하여, 유효 데이터를 무효 데이터로 미리 변경할 수 있고, 결과적으로 이후 가비지 콜렉션은 향후 무효 데이터로 변경되지 않는 유효 데이터만을 프리 블록에 복사할 수 있어 효율적인 수행이 가능하다.
도 14는 도 1 의 메모리 장치의 메모리 셀 어레이의 일 구현 예를 나타내는 구조도이다.
메모리 셀 어레이는 복수의 블록들을 포함하고, 각각의 블록은 3차원 구조(또는 수직 구조)를 가질 수 있다. 구체적으로, 각각의 블록은 제1 내지 제3 방향들을 따라 신장된 구조물들을 포함한다. 플래시 메모리 장치를 예로 들면, 각각의 셀 블록은 제3 방향을 따라 신장된 복수의 낸드 스트링들을 포함할 수 있다. 이 때, 복수의 낸드 스트링들은 제1 및 제2 방향들을 따라 특정 거리만큼 이격되어 제공될 수 있다. 도 14는 하나의 블록(BLK1)에 해당하는 구조도를 나타낼 수 있다. 또한, 상기 블록(BLK1)은 메타 영역에 포함되는 블록일 수도 있으며, 또는 스토리지 영역에 포함되는 블록일 수도 있다.
도 14를 참조하면, 셀 블록(BLK1)은 기판(SUB)에 대해 수직 방향으로 형성되어 있다. 도 14에서는, 셀 블록(BLK1)이 2 개의 선택 라인들(GSL, SSL)과, 8 개의 워드 라인들(WL1 ~ WL8), 및 3 개의 비트 라인들(BL1 ~ BL3)을 포함하는 것으로 도시되어 있으나, 상기 라인들의 개수는 다양하게 변동될 수 있다.
기판(SUB)은 제1 도전형(예를 들어, p 타입)을 가지며, 기판(SUB) 상에 제1 방향(예를 들어, Y 방향)을 따라 신장되고, 제2 도전형(예를 들어, n 타입)의 불순물들이 도핑된 공통 소스 라인(CSL)이 제공된다. 인접한 두 공통 소스 라인(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 신장되는 복수의 절연막들(IL)이 제3 방향(예를 들어, Z 방향)을 따라 순차적으로 제공되며, 복수의 절연막들(IL)은 제3 방향을 따라 특정 거리만큼 이격된다. 예를 들어, 복수의 절연막들(IL)은 실리콘 산화물과 같은 절연 물질을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 순차적으로 배치되며, 제3 방향을 따라 복수의 절연막들(IL)을 관통하는 복수의 필라들(pillars, P)이 제공된다. 예를 들어, 복수의 필라들(P)은 복수의 절연막들(IL)을 관통하여 기판(SUB)과 컨택할 것이다. 구체적으로, 각 필라(P)의 표면층(surface layer)(S)은 제1 타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(charge storage layer, CS)이 제공된다. 전하 저장층(CS)은 게이트 절연층(또는 '터널링 절연층'이라고 지칭함), 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 예를 들어, 전하 저장층(CS)은 ONO(oxide-nitride-oxide) 구조를 가질 수 있다. 또한, 인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 전하 저장층(CS)의 노출된 표면 상에, 선택 라인들(GSL, SSL) 및 워드 라인들(WL1 ~ WL8)과 같은 게이트 전극(GE)이 제공된다.
복수의 필라들(P) 상에는 드레인들 또는 드레인 컨택들(DR)이 각각 제공된다. 예를 들어, 드레인들 또는 드레인 컨택들(DR)은 제2 도전형을 갖는 불순물들이 도핑된 실리콘 물질을 포함할 수 있다. 드레인들(DR) 상에, 제2 방향(예를 들어, X 방향)으로 신장되고 제1 방향을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 ~ BL3)이 제공된다.
한편, 미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
도 15는 본 발명의 실시예에 따른 메모리 시스템이 메모리 카드 시스템(600)에 적용된 예를 나타내는 블록도이다. 일 예로서, 메모리 시스템은 플래시 메모리 시스템인 것으로 가정한다.
도 15를 참조하면, 메모리 카드 시스템(600)은 호스트(610) 및 메모리 카드(620)를 포함할 수 있다. 호스트(610)는 호스트 컨트롤러(611) 및 호스트 접속부(612)를 포함할 수 있다. 메모리 카드(620)는 카드 접속부(621), 카드 컨트롤러(622) 및 메모리 시스템(623)을 포함할 수 있다. 이 때, 메모리 시스템(623)은 도 1 내지 도 13에 도시된 실시예들을 이용하여 구현될 수 있다. 이에 따라 메모리 시스템(623)은 전술한 실시예에 따라 워크로드 레벨에 기반하여, 커맨드 스케줄링 방식을 변경하여 효율적인 가비지 콜렉션을 수행할 수 있다.
호스트(610)는 메모리 카드(620)에 데이터를 기록하거나, 메모리 카드(620)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(611)는 커맨드(CMD), 호스트(610) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(612)를 통해 메모리 카드(620)로 전송할 수 있다.
카드 컨트롤러(622)는 카드 접속부(621)를 통해 수신된 요청에 응답하여, 카드 컨트롤러(622) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 시스템(623)에 제공할 수 있다. 메모리 시스템(623)은 호스트(610)로부터 전송된 데이터를 저장할 수 있다.
메모리 카드(620)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 유니버설 플래시 기억장치(UFS), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 16은 본 발명의 실시예들에 따른 메모리 장치를 SSD 시스템(700)에 적용한 예를 나타내는 블록도이다.
도 16을 참조하면, SSD 시스템(700)은 호스트(710) 및 SSD(720)를 포함할 수 있다. SSD(720)는 신호 커넥터(signal connector)를 통해 호스트(710)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(720)는 SSD 컨트롤러(721), 보조 전원 장치(722) 및 복수의 불휘발성 메모리 시스템들(723, 724, 725)을 포함할 수 있다. 복수의 불휘발성 메모리 시스템들(723, 724, 725) 각각은 본 발명의 실시예들에 따른 메모리 장치를 포함할 수 있다. 본 발명의 실시예에 따라, 이에 따라 불휘발성 메모리 시스템들(723, 724, 725) 각각은 전술한 실시예에 따라 워크로드 레벨에 기반하여, 커맨드 스케줄링 방식을 변경하여 효율적인 가비지 콜렉션을 수행할 수 있다.
상기한 실시예의 설명은 본 발명의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 발명을 한정하는 의미로 해석되어서는 안될 것이다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다.

Claims (10)

  1. 복수의 메모리 블록들을 포함하도록 구성된 메모리 장치; 및
    상기 메모리 블록들에 대한 가비지 콜렉션을 수행하기 전에 워크로드 레벨을 기반으로 상기 블록들의 유효 데이터를 무효 데이터로 변경하는 커맨드를 우선적으로 처리하여 상기 블록들의 유효 페이지의 개수를 줄이도록 구성된 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는, 상기 가비지 콜렉션을 수행하기 위해 상기 워크로드 레벨을 기반으로 커맨드 처리 스케줄(execution of a command schedule)을 변경하도록 구성되고,
    상기 커맨드 처리 스케줄은, 상기 커맨드에 대한 커맨드 처리량을 포함하고,
    상기 메모리 컨트롤러는, 상기 커맨드에 대한 상기 커맨드 처리량(command quota)을 변경하도록 구성된 것을 특징으로 하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 커맨드는, 트림 커맨드를 포함하는 것을 특징으로 하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 커맨드 처리 스케줄은, 상기 커맨드에 대한 수행 우선 순위를 포함하고,
    상기 메모리 컨트롤러는, 상기 워크로드 레벨이 기준 레벨을 초과하는 때에, 상기 커맨드에 대한 수행 우선 순위를 종전보다 높게 변경하도록 구성된 것을 특징으로 하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 커맨드 처리량은, 하나의 상기 커맨드 처리 시에 처리 가능한 데이터 양에 해당하고,
    상기 메모리 컨트롤러는, 상기 워크로드 레벨이 기준 레벨을 초과하는 때에, 하나의 상기 커맨드 처리 시에 처리되는 데이터 양을 종전보다 크게 변경하도록 구성된 것을 특징으로 하는 메모리 시스템.
  5. 제1항에 있어서,
    상기 커맨드 처리량은, 동일 커맨드가 연속으로 수행될 수 있는 연속 수행 개수에 해당하고,
    상기 메모리 컨트롤러는, 상기 워크로드 레벨이 기준 레벨을 초과하는 때에, 상기 연속 수행 개수를 종전보다 크게 변경하도록 구성된 것을 특징으로 하는 메모리 시스템.
  6. 제 1항에 있어서,
    상기 메모리 컨트롤러는, 복수의 블록들과 관련된 유효 페이지 비율을 기반으로 상기 워크로드 레벨을 계산하도록 구성된 것을 특징으로 하는 메모리 시스템.
  7. 반도체 장치에 있어서,
    복수의 메모리 블록들을 포함하는 메모리 장치; 및
    상기 메모리 장치를 제어하는 복수의 커맨드들의 실행을 스케줄링하도록 구성된 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    가비지 콜렉션을 수행하기 전에 워크로드 레벨에 따라 상기 복수의 메모리 블록들의 유효 데이터를 무효 데이터로 변경하는 트림 커맨드가 우선적으로 처리되도록 커맨드 스케줄링 방식을 변경하도록 구성되고,
    상기 복수의 커맨드들은, 기록 커맨드를 포함하고,
    상기 메모리 컨트롤러는, 상기 워크로드 레벨이 기준 레벨을 초과할 때, 상기 기록 커맨드 이전에 상기 트림 커맨드가 실행되도록 상기 커맨드 스케줄링 방식을 변경하도록 구성된 것을 특징으로 하는 반도체 장치.
  8. 제 7항에 있어서,
    상기 워크로드 레벨은,
    상기 복수의 블록들 중 상기 가비지 콜렉션의 수행 대상이 되는 적어도 하나의 희생 블록을 선택하기 위해 생성된 희생 블록 리스트의 블록들의 유효 페이지 비율 또는 개수를 기반으로 산출된 것을 특징으로 하는 반도체 장치.
  9. 제7항에 있어서,
    상기 메모리 컨트롤러는,
    상기 워크로드 레벨이 기준 레벨을 초과하는 때에, 상기 트림 커맨드에 대한 커맨드 처리량이 변경되도록 상기 커맨드 스케줄링 방식을 변경하는 것을 특징으로 하는 반도체 장치.
  10. 제7항에 있어서,
    상기 메모리 컨트롤러는,
    상기 가비지 콜렉션 수행을 완료한 때에, 변경된 상기 커맨드 스케줄링 방식을 원래의 커맨드 스케줄링 방식으로 복원하는 것을 특징으로 하는 반도체 장치.
KR1020150141692A 2015-10-08 2015-10-08 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 KR102467032B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150141692A KR102467032B1 (ko) 2015-10-08 2015-10-08 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
US15/222,209 US10114552B2 (en) 2015-10-08 2016-07-28 Memory scheduling method for changing command order and method of operating memory system
US16/157,300 US10430083B2 (en) 2015-10-08 2018-10-11 Memory scheduling method for changing command order and method of operating memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150141692A KR102467032B1 (ko) 2015-10-08 2015-10-08 메모리 스케줄링 방법 및 메모리 시스템의 동작방법

Publications (2)

Publication Number Publication Date
KR20170042135A KR20170042135A (ko) 2017-04-18
KR102467032B1 true KR102467032B1 (ko) 2022-11-14

Family

ID=58498665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150141692A KR102467032B1 (ko) 2015-10-08 2015-10-08 메모리 스케줄링 방법 및 메모리 시스템의 동작방법

Country Status (2)

Country Link
US (2) US10114552B2 (ko)
KR (1) KR102467032B1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10101925B2 (en) * 2015-12-23 2018-10-16 Toshiba Memory Corporation Data invalidation acceleration through approximation of valid data counts
US10241716B2 (en) 2017-06-30 2019-03-26 Microsoft Technology Licensing, Llc Global occupancy aggregator for global garbage collection scheduling
US10248562B2 (en) 2017-06-30 2019-04-02 Microsoft Technology Licensing, Llc Cost-based garbage collection scheduling in a distributed storage environment
US10089235B1 (en) * 2017-07-28 2018-10-02 Citrix Systems, Inc. Dynamic trim processing with disk caching
CN107544754B (zh) * 2017-07-28 2021-05-25 新华三信息技术有限公司 一种垃圾回收方法及装置
KR102447602B1 (ko) * 2017-10-25 2022-09-26 삼성전자주식회사 메모리 장치 및 그 동적 가비지 컬렉션 방법
KR20190047451A (ko) * 2017-10-27 2019-05-08 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 구비한 반도체 메모리 시스템 및 그 구동 방법
US20210232343A1 (en) * 2017-10-27 2021-07-29 SK Hynix Inc. Memory controller, memory system, and operating method thereof
KR102327878B1 (ko) * 2017-11-07 2021-11-17 삼성전자주식회사 반도체 장치 및 반도체 시스템
KR102491068B1 (ko) 2017-11-17 2023-01-19 에스케이하이닉스 주식회사 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템
KR102596407B1 (ko) * 2018-03-13 2023-11-01 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10909030B2 (en) * 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives
US10802725B2 (en) * 2019-03-07 2020-10-13 Vmware, Inc. Management of unmap processing rates in distributed and shared data storage volumes
US11119912B2 (en) * 2019-03-25 2021-09-14 International Business Machines Corporation Ordering data updates for improving garbage collection being performed while performing the set of data updates
CN112925728A (zh) * 2019-05-05 2021-06-08 长江存储科技有限责任公司 具有序列处理单元的存储器控制系统
KR20210051873A (ko) * 2019-10-31 2021-05-10 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템
US20210223987A1 (en) * 2020-01-20 2021-07-22 SK Hynix Inc. Controller with smart scheduling and method of operating the controller
KR20220020008A (ko) 2020-08-11 2022-02-18 삼성전자주식회사 비휘발성 메모리를 포함하는 메모리 저장 장치 및 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140108721A1 (en) 2012-10-11 2014-04-17 SK Hynix Inc. Data storage device and operating method thereof
US20140344507A1 (en) 2013-04-16 2014-11-20 Fusion-Io, Inc. Systems and methods for storage metadata management
US20160313943A1 (en) 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624137B2 (en) 2004-01-05 2009-11-24 International Business Machines Corporation Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds
KR100876084B1 (ko) 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7647458B1 (en) 2004-12-30 2010-01-12 Azul Systems, Inc. Garbage collection
KR100789406B1 (ko) 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US9519540B2 (en) * 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8417878B2 (en) 2010-09-20 2013-04-09 Seagate Technology Llc Selection of units for garbage collection in flash memory
US10049040B2 (en) 2011-01-21 2018-08-14 Seagate Technology Llc Just in time garbage collection
KR101392174B1 (ko) 2011-11-09 2014-05-09 한양대학교 산학협력단 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법
US8799561B2 (en) 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US20140059279A1 (en) * 2012-08-27 2014-02-27 Virginia Commonwealth University SSD Lifetime Via Exploiting Content Locality
KR20140078893A (ko) * 2012-12-18 2014-06-26 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
KR101549569B1 (ko) * 2014-02-14 2015-09-03 고려대학교 산학협력단 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
US20160007774A1 (en) * 2014-05-19 2016-01-14 Joy Kakabeeke Adjustable mattress cover
US9778881B2 (en) * 2014-06-27 2017-10-03 EMC IP Holding Company LLC Techniques for automatically freeing space in a log-structured storage system based on segment fragmentation
KR102282006B1 (ko) * 2014-08-19 2021-07-28 삼성전자주식회사 컴퓨터 장치 및 저장 장치
US9671960B2 (en) * 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
KR102368071B1 (ko) * 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US20160350214A1 (en) * 2015-05-29 2016-12-01 Google Inc. Idle time software garbage collection
US9870149B2 (en) * 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
JP2017027388A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US9971681B2 (en) * 2016-06-01 2018-05-15 Nanjing University Lazy real time garbage collection method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140108721A1 (en) 2012-10-11 2014-04-17 SK Hynix Inc. Data storage device and operating method thereof
US20140344507A1 (en) 2013-04-16 2014-11-20 Fusion-Io, Inc. Systems and methods for storage metadata management
US20160313943A1 (en) 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device

Also Published As

Publication number Publication date
US10114552B2 (en) 2018-10-30
US20170102884A1 (en) 2017-04-13
KR20170042135A (ko) 2017-04-18
US20190042102A1 (en) 2019-02-07
US10430083B2 (en) 2019-10-01

Similar Documents

Publication Publication Date Title
KR102467032B1 (ko) 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
US11243878B2 (en) Simultaneous garbage collection of multiple source blocks
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
KR102094334B1 (ko) 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법
KR102190670B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
US8606987B2 (en) Data writing method for flash memory and controller using the same
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US20160062885A1 (en) Garbage collection method for nonvolatile memory device
US11226895B2 (en) Controller and operation method thereof
US10802733B2 (en) Methods and apparatus for configuring storage tiers within SSDs
US9423960B2 (en) Methods of operating memory devices within a communication protocol standard timeout requirement
KR102233400B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
JP2013114679A (ja) ウェアレベル制御ロジックを含むメモリシステム
US20100211820A1 (en) Method of managing non-volatile memory device and memory system including the same
KR20120037786A (ko) 저장 장치, 그것의 락 모드 관리 방법, 및 그것을 포함하는 메모리 시스템
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
CN110781023A (zh) 用于在存储器系统中处理数据的设备和方法
US20220269602A1 (en) Storage device and storage system including the same
KR20190006677A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20160132251A1 (en) Operating method of storage device and data writing method for writing data into storage device
CN109918315B (zh) 存储器系统及存储器系统的操作方法
KR20130019999A (ko) 비휘발성 메모리 시스템
US20140281160A1 (en) Non-volatile semiconductor storage apparatus
US11640263B2 (en) Memory system and operating method thereof

Legal Events

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