KR102602694B1 - 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 - Google Patents

스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 Download PDF

Info

Publication number
KR102602694B1
KR102602694B1 KR1020150179000A KR20150179000A KR102602694B1 KR 102602694 B1 KR102602694 B1 KR 102602694B1 KR 1020150179000 A KR1020150179000 A KR 1020150179000A KR 20150179000 A KR20150179000 A KR 20150179000A KR 102602694 B1 KR102602694 B1 KR 102602694B1
Authority
KR
South Korea
Prior art keywords
garbage collection
blocks
controller
collection operation
free
Prior art date
Application number
KR1020150179000A
Other languages
English (en)
Other versions
KR20170071085A (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 KR1020150179000A priority Critical patent/KR102602694B1/ko
Priority to US15/295,575 priority patent/US10229050B2/en
Publication of KR20170071085A publication Critical patent/KR20170071085A/ko
Application granted granted Critical
Publication of KR102602694B1 publication Critical patent/KR102602694B1/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
    • 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
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

본 발명은 불휘발성 메모리에 포함된 블록들이 재사용 제한 조건을 만족하도록 가비지 컬렉션 작동을 제어하는 스토리지 컨트롤러의 작동 방법에 관한 것으로, 블록들 중에서 프리 블록의 개수가 가비지 컬랙션 작동의 트리거를 위한 제1기준값보다 작은지를 판단하는 단계와, 상기 판단 결과에 따라, 상기 프리 블록의 개수가 상기 제1기준값보다 큰 제2기준값과 같아질 때까지, 상기 블록들에 대해 상기 가비지 컬렉션 작동을 수행하는 단계를 포함할 수 있다.

Description

스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법{METHOD FOR OPERATING STORAGE CONTROLLER AND METHOD FOR OPERATING STORAGE DEVICE INCLUDING SAME}
본 발명의 개념에 따른 실시 예는 스토리지 컨트롤러의 작동 방법에 관한 것으로, 특히 불휘발성 메모리에 포함된 프리 블록의 개수를 조절하여 데이터의 신뢰성을 개선시키기 위한 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법에 관한 것이다.
불휘발성 메모리(예컨대, 플래시 메모리)는 복수의 블록들을 포함할 수 있고, 블록들 각각은 복수의 페이지들을 포함할 수 있다.
블록들 각각은 이레이즈된 상태에서 데이터가 프로그램될 수 있고, 상기 블록들에 데이터를 다시 프로그램 될 때 상기 블록들은 다시 이레이즈되어야 한다. 이처럼 블록들은 스토리지 장치 내에서 프로그램과 이레이즈를 반복하는 순환 과정을 거치게 된다.
블록들이 빠른 시간 내에 재사용 될 경우(예컨대, 블록의 이레이즈 간격이 짧을 경우), 블록에 저장된 데이터가 오류 없이 유지될 수 있는 기간은 짧아질 수 있다. 따라서, 플래시 메모리의 신뢰성은 떨어질 수 있다.
본 발명이 이루고자 하는 기술적 과제는 불휘발성 메모리에 포함된 블록들이 재사용 제한 조건을 만족하도록 가비지 컬렉션 작동을 제어하는 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법을 제공하는 것이다.
본 발명의 실시 예들에 따른 스토리지 컨트롤러의 작동 방법은, 블록들 중에서 프리 블록의 개수가 가비지 컬랙션 작동의 트리거를 위한 제1기준값보다 작은지를 판단하는 단계와, 상기 판단 결과에 따라, 상기 프리 블록의 개수가 상기 제1기준값보다 큰 제2기준값과 같아질 때까지, 상기 블록들에 대해 상기 가비지 컬렉션 작동을 수행하는 단계를 포함할 수 있다.
상기 가비지 컬렉션 작동을 수행하는 단계는, 상기 프리 블록의 개수가 상기 제1기준값과 같을 때까지, 상기 블록들에 대해 제1가비지 컬렉션 작동을 수행하는 단계와, 상기 프리 블록의 개수가 상기 제1기준값보다 크고 상기 제2기준값과 같을 때까지, 상기 블록들에 대해 제2가비지 컬렉션 작동을 수행하는 단계를 포함할 수 있다. 상기 제1가비지 컬렉션 작동과 제2가비지 컬렉션 작동은 연속적으로 수행될 수 있다.
상기 스토리지 컨트롤러의 작동 방법은, 라이트 명령과 라이트 데이터를 수신하는 단계와, 상기 라이트 명령에 응답하여 상기 라이트 데이터를 상기 스토리지 장치에 라이트하는 동시에 상기 제2가비지 컬렉션 동작을 수행하는 단계를 더 포함할 수 있다.
상기 스토리지 컨트롤러는, 상기 제2가비지 컬렉션이 작동이 수행되는 동안, 상기 스토리지 장치에 대한 라이트 데이터 처리율을 일정하게 유지할 수 있다.
상기 스토리지 컨트롤러는, 상기 제1가비지 컬렉션 작동이 수행되는 동안, 상기 스토리지 장치에 대한 처리율을 제1값부터 제2값까지 순차적으로 증가시키고, 상기 제2가비지 컬렉션 작동이 수행되는 동안, 상기 처리율은 상기 제2값으로 유지하고, 상기 제2가비지 컬렉션 작동이 완료된 후, 상기 처리율을 상기 제2값보다 큰 제3값으로 변경할 수 있다.
상기 가비지 컬렉션 작동을 수행하는 단계는, 상기 제1가비지 컬렉션 작동에 의해 생성된 제1프리 블록이 재사용 될 때, 상기 제1프리 블록이 재사용 제한 조건을 만족하도록 상기 제2기준값을 결정하는 단계를 더 포함할 수 있다.
상기 결정하는 단계는, 상기 제1프리 블록의 재사용 기간과 상기 제1프리 블록의 재사용 지연 기간을 계산하는 단계를 포함할 수 있다.
상기 재사용 기간은 상기 제1프리 블록의 최근 이레이즈된 시간과 현재 시간의 차이일 수 있다.
상기 재사용 지연 기간은 상기 제1가비지 컬렉션 작동이 완료된 시점에 존재하는 프리 블록들 중에서 상기 제1프리 블록을 제외한 제2프리 블록들 각각에 대응되는 데이터가 순차적으로 프로그램되는데 소요되는 전체 기간일 수 있다.
본 발명의 실시 예에 따른 불휘발성 메모리와 상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치의 작동 방법은, 상기 컨트롤러가, 상기 불휘발성 메모리에 포함된 블록들 중에서 프리 블록의 개수가 기준값보다 작은지를 판단하는 단계와, 상기 기준값과 같을 때까지 제1가비지 컬렉션을 수행하는 단계와, 상기 제1가비지 컬렉션에 의해 생성된 제1프리 블록의 재사용 기간에 기초하여 제2가비지 컬렉션을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 스토리지 컨트롤러의 작동 방법은, 불휘발성 메모리에 포함된 블록들 중에서 프리 블록의 개수를 조절하여 블록들의 재사용 시간 간격을 확보함으로써, 스토리지 장치의 신뢰성을 향상시키는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 대략적인 구성을 나타내는 블록도이다.
도 2는 도 1의 불휘발성 메모리들에 포함된 블록들을 나타내는 블록도이다.
도 3은 도 2의 블록들의 P/E 순환 과정을 나타내는 개념도이다.
도 4는 도 2의 블록들의 이레이즈 시간을 기록한 테이블이고, 도 5는 도 2의 블록들의 재사용 제한 조건을 설명하기 위한 타임 라인이다.
도 6은 도 1의 컨트롤러에서 수행되는 가비지 컬렉션 작동을 설명하기 위한 개념도이다.
도 7은 도 6의 제2가비지 컬렉션 수행을 위한 제2기준값의 결정 과정을 설명하기 위한 타임 라인이다.
도 8은 도 1의 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 9는 도 8의 작동에 따른 스토리지 장치의 라이트 데이터 처리율을 나타내는 그래프이다.
도 10은 본 발명의 실시 예들에 따른 스토리지 장치의 작동 과정을 나타내는 플로우 차트이다.
도 11은 본 발명의 실시 예들에 따른 스토리지 장치의 작동 과정을 나타내는 플로우 차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 대략적인 구성을 나타내는 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(10)은 인터페이스(20)를 통해 접속된 호스트(30)와 스토리지 장치(40)를 포함할 수 있다.
데이터 처리 시스템(10)은 PC(personal computer), 데스크-탑 컴퓨터, 랩-탑 컴퓨터, 워크스테이션 컴퓨터, 또는 모바일 컴퓨팅 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
상기 모바일 컴퓨팅 장치는 이동 전화기, 스마트폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), 멀티미디어 장치 (multimedia device), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 장치(또는 웨어러블 컴퓨터), 사물 인터넷 (internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
인터페이스(20)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)), PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface), NAND-타입 플래시 메모리 인터페이스, 또는 멀티미디어 카드 (multimedia card(MMC)) 인터페이스로 구현될 수 있으나, 이에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(20)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(30)는 인터페이스(20)를 통해 스토리지 장치(40)의 데이터 처리 작동 (예컨대, 라이트 작동(또는 프로그램 작동) 또는 리드 작동)을 제어할 수 있다. 예컨대, 호스트(30)는 호스트 컨트롤러를 의미할 수 있다.
실시 예들에 따라, 호스트(30)는 집적 회로(IC), 마더보드(mother board), 애플리케이션 프로세서(application processor(AP)), 모바일 AP, 시스템 온 칩 (system on chip(SOC)) 또는 칩들의 집합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
호스트(30)는 버스(31)를 통해 신호들(또는 데이터)을 서로 주거나 받을 수 있는 CPU(32)와 인터페이스(33)를 포함할 수 있다. 도 1에 도시된 호스트(30)의 블록도는 예시적으로 도시된 것으로서 본 발명의 기술적 사상이 도 1에 도시된 블록도에 한정되는 것은 아니다.
버스(31)는 AMBA(advanced microcontroller bus architecture), AHB (advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus) 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(32)는 스토리지 장치(40)의 라이트 작동을 제어할 수 있는 라이트 요청 또는 스토리지 장치(40)의 리드 작동을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 상기 요청은 명령을 의미할 수 있다. 실시 예들에 따라, CPU(32)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
인터페이스(33)는 스토리지 장치(40)로 전송될 명령 및/또는 데이터의 포멧을 변경하고, 변경된 명령 및/또는 데이터를 인터페이스(20)를 통해 스토리지 장치 (40)로 전송할 수 있다. 또한, 호스트 인터페이스(33)는 스토리지 장치(40)로부터 전송된 응답 및/또는 데이터의 포맷을 변경하고, 변경된 응답 및/또는 데이터를 버스(31)를 통해 CPU(32)로 전송할 수 있다. 실시 예에 따라, 인터페이스(33)는 명령 또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 인터페이스(33)의 구조와 작동은 인터페이스(20)의 구조와 작동에 적합하게 구현될 수 있다.
스토리지 장치(40)는 플래시-기반 메모리 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 스토리지 장치(10)는 스마트카드, SD(secure digital) 카드, 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)), 임베디드 멀티-칩 패키지(embedded multi-chip package(eMCP)), PPN (perfect page NAND), 유니버셜 플래시 스토리지(universal flash storage(UFS)), USB 플래시 드라이브, 솔리드스테이트 드라이브(solid state drive(SSD)), 또는 임베디드 SSD(embedded SSD(eSSD))로 구현될 수 있다.
스토리지 장치(40)는 컨트롤러(100), 버퍼(200), 및 불휘발성 메모리들(300)을 포함할 수 있다. 스토리지 장치(40)는, 컨트롤러(100)의 제어에 따라, 호스트 (30)로부터 출력된 데이터를 불휘발성 메모리들(300) 중에서 적어도 하나에 저장할 수 있다.
컨트롤러(100)는 호스트(30)와 불휘발성 메모리들(300) 사이에서 주거나 받는 데이터를 제어할 수 있다. 실시 예들에 따라, 컨트롤러(100)는 IC 또는 SoC로 구현될 수 있다.
컨트롤러(100)는 버스(110), 호스트 인터페이스(120), CPU(130), 메모리 (140), 메모리 컨트롤러(150), 및 버퍼 매니저(160)를 포함할 수 있다.
버스(110) AMBA, AHB, APB, AXI, ASB, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
호스트 인터페이스(120) 호스트(30)로 전송될 응답 또는 데이터의 포맷을 변경하고, 변경된 응답 또는 데이터를 인터페이스(20)를 통해 호스트(30)로 전송할 수 있다. 또한, 호스트 인터페이스(120)는 호스트(30)로부터 전송된 명령 또는 데이터를 수신하고, 수신된 명령 또는 데이터의 포맷을 변경하고, 변경된 명령 또는 데이터를 CPU(130) 및/또는 버퍼 매니저(160)로 전송할 수 있다. 실시 예에 따라, 호스트 인터페이스(120)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 호스트 인터페이스(120)의 구조와 작동은 인터페이스(20)의 구조와 작동에 적합하게 구현될 수 있다.
CPU(130)는, 버스(110)를 통해, 호스트 인터페이스(120), 메모리(140), 메모리 컨트롤러(150), 및 버퍼 매니저(160)를 제어할 수 있다. CPU(130)는 스토리지 장치(40)의 작동을 제어할 수 있는 펌웨어(또는 컴퓨터 프로그램)를 실행할 수 있다. CPU(130)에서 실행되는 펌웨어의 작동은 도 5부터 도 11을 참조하여 상세히 설명될 것이다.
도 1에서는 설명의 편의를 위해 하나의 CPU(130)가 도시되어 있으나, 실시 예들에 따라 컨트롤러(100)는 호스트(30)로부터 출력된 명령 및/또는 데이터를 처리하는 제1CPU와 불휘발성 메모리들(300)에 대한 액세스 작동(예컨대, 라이트 작동, 리드 작동, 이레이즈 작동 및/또는 카피 백 작동)을 제어하는 제2CPU를 포함할 수 있다.
메모리(140)는 컨트롤러(100)의 작동에 필요한 데이터 또는 컨트롤러(100)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)에 의해 생성된 데이터를 저장할 수 있다. 실시 예들에 따라, 메모리(140)는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시 (cache), 또는 강하게 결합된 메모리(tightly coupled memory(TCM))으로 구현될 수 있으나 이에 한정되는 것은 아니다.
메모리(140)는 불휘발성 메모리들(300) 중에서 적어도 하나로부터 로드되는 플래시 변환 레이어(flash translation layer(FTL)); 145)를 저장할 수 있다. FTL(145)은 호스트(30)로부터 출력된 논리 주소(logical address)를 불휘발성 메모리들(300)의 물리 주소(physical address)로 맵핑하는 주소 맵핑(address mapping), 웨어-레벨링(wear-leveling), 및/또는 가비지 컬렉션(garbage collection)을 수행하기 위한 펨웨어를 의미할 수 있다.
메모리 컨트롤러(150)는, CPU(130)의 제어에 따라, 불휘발성 메모리들(300)에 대한 데이터 처리 작동들(예컨대, 라이트 작동, 리드 작동, 이레이즈 작동 및/또는 카피 백 작동)을 제어할 수 있다. 예컨대, 불휘발성 메모리들(300)이 플래시 메모리로 구현될 때, 메모리 컨트롤러(150)는 플래시 메모리 컨트롤러의 기능을 수행할 수 있다. 메모리 컨트롤러(150)와 불휘발성 메모리들(300)은 채널들을 통해 제어 신호 및/또는 데이터를 주거나 받을 수 있다.
메모리 컨트롤러(150)는 불휘발성 메모리들(300)에 포함된 블록들에 대한 가비지 컬렉션의 수행을 제어할 수 있다. 실시 예들에 따라, 메모리 컨트롤러(150)는 가비지 컬렉션 수행과 관련된 블록들의 맵핑 정보와 이레이즈 시간, 및 프리 블록들의 리스트를 관리할 수 있다.
실시 예들에 따라, 메모리 컨트롤러(150)는 SATA 인터페이스, SATAe 인터페이스, SAS, PCIe 인터페이스, NVMe 인터페이스, AHCI, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스를 지원할 수 있으나, 이에 한정되는 것은 아니다.
버퍼 매니저(160)는, CPU(130)의 제어에 따라, 버퍼(200)에 데이터를 라이트하거나 버퍼(200)로부터 데이터를 리드할 수 있다. 예컨대, 호스트(30)로부터 전송된 라이트 명령을 처리할 때, 버퍼 매니저(160)는, 상기 라이트 명령에 따라 호스트(30)로부터 전송되는 라이트 데이터를 버퍼(200)에 임시로 저장하고, 임시로 저장된 라이트 데이터를 메모리 컨트롤러(150)를 통해 불휘발성 메모리들(300)로 전송할 수 있다.
버퍼(200)는 불휘발성 메모리들(400)에 대한 논리 주소-물리 주소 변환을 위한 맵핑 테이블과, 불휘발성 메모리들(300)에 포함된 블록들 각각에 대한 최근 이레이즈 시간을 기록한 이레이즈 테이블과, 프리 블록들의 리스트를 저장할 수 있다. 상기 맵핑 테이블, 상기 이레이즈 테이블, 및 프리 블록의 리스트는 FTL(145)에 의해 업데이트될 수 있다.
버퍼(200)는 불휘발성 메모리들(300)로 전송될 라이트 데이터를 임시로 저장하는 캐시(cache)의 기능을 수행할 수도 있다. 버퍼(200)는 RAM, SRAM, 또는 DRAM으로 구현될 수 있으나, 이에 한정되는 것은 아니다.
컨트롤러(100)와 버퍼(200) 각각이 서로 다른 반도체 칩으로 구현될 때, 컨트롤러(100)와 버퍼(200)는 하나의 패키지, 예컨대, 패키지-온-패키지(package on package(PoP)), 멀티-칩 패키지(multi chip package(MCP)) 또는 시스템-인 패키지 (system in package(SiP))로 구현될 수 있으나 이에 한정되는 것은 아니다.
불휘발성 메모리들(300) 운영 체계(operation system(OS)), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 불휘발성 메모리들(300) 각각은 적어도 하나의 메모리 셀 어레이를 포함할 수 있다. 불휘발성 메모리들(300) 각각은 반도체 칩 또는 반도체 패키지로 구현될 수 있다.
불휘발성 메모리들(300)과 메모리 컨트롤러(150) 사이에는 적어도 하나의 채널이 배치(또는 형성)될 수 있다. 상기 채널은 명령 및/또는 데이터를 전송하는 전송 라인들을 포함할 수 있다. 실시 예들에 따라, 불휘발성 메모리들(300)은 A채널*B웨이로 구현될 수 있다. 여기서, A와 B 각각은 2이상의 자연수일 수 있다.
상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 상기 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic)이라는 용어는 어레이의 각 레벨의 레이어들이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착(directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
도 2는 도 1의 불휘발성 메모리들에 포함된 블록들을 나타내는 블록도이고, 도 3은 도 2의 블록들의 P/E 순환 과정을 나타내는 개념도이다. 도 1부터 도 3을 참조하면, 불휘발성 메모리들(300) 각각은 적어도 하나의 메모리 셀 어레이를 포함할 수 있고, 상기 메모리 셀 어레이는 복수의 블록들(BL1~BL20, 이하 BLs)을 포함할 수 있다. 비록, 도 2에서는 메모리 셀 어레이가 20개의 블록들(BLs)을 포함하는 것으로 도시하고 있으나, 본 발명의 기술적 사상이 도 2에 도시된 블록들의 개수에 한정되는 것은 아니다.
블록들(BLs) 각각은 복수의 페이지들을 포함할 수 있다. 스토리지 장치(40)에서 이레이즈 작동(E/O)은 블록 단위로 수행되고, 라이트 작동(W/O), 리드 작동 (R/O), 또는 카피 백(copy back) 작동(C/O)은 페이지 단위로 수행될 수 있다.
블록들(BLs) 각각은 도 3의 프로그램/이레이즈(program-erase(P/E)) 순환 과정에 따라 이레이즈 작동(E/O), 라이트 작동(W/O), 리드 작동(R/O), 및 카피 백 작동(C/O)을 반복할 수 있다. 즉, 이레이즈 작동(E/O)에 따라 블록에 저장된 데이터가 모두 삭제된 후, 다시 라이트 작동(W/O)에 따라 블록 내의 페이지들 중에서 적어도 하나에 데이터가 저장되고, 리드 작동(R/O)에 따라 각각의 페이지에 저장된 데이터가 리드될 수 있다. 이후, 카피 백 작동(C/O)에 따라 블록 내의 페이지들 중에서 유효 페이지는 다른 블록으로 이동되고, 다시 이레이즈 작동(E/O)에 따라 상기 블록 내에 저장된 데이터는 모두 삭제될 수 있다.
가비지 컬렉션 작동은 카피 백 작동(C/O) 및/또는 이레이즈 작동(E/O)를 포함할 수 있다. 블록들(BLs)은 도 3의 P/E 순환 과정에 따라 사용된 블록(UB)과 프리 블록 (FB)으로 구분될 수 있다. 예컨대, 사용된 블록들(UB)은 이레이즈 작동(E/O) 이후 첫 번째 라이트 작동(W/O) 시점부터 카피 백 작동(C/O) 이전까지의 구간에 존재하는 블록들(BL1~BL18)로 정의될 수 있고, 그 밖의 구간에 존재하는 블록들(BL19와 BL20)은 프리 블록들(FB)로 정의될 수 있다.
도 4는 도 2의 블록들의 이레이즈 시간을 기록한 테이블이고, 도 5는 도 2의 블록들의 재사용 제한 조건을 설명하기 위한 타임 라인이다. 도 1, 도 4, 및 도 5를 참조하면, 컨트롤러(100)는 불휘발성 메모리들(300)에 포함된 블록들에 대한 최근 이레이즈 시간(tE) 관리를 위해 이레이즈 테이블을 생성하고, 각각의 블록에 대한 이레이즈 시간(tE)을 기록할 수 있다. 이레이즈 시간(tE)은 해당 블록에 대한 이레이즈가 시작된 시간 또는 종료된 시간을 의미할 수 있다. 예컨대, 이레이즈 시간(tE)은 타임 스템프(time stamp)를 의미할 수 있다.
도 4에 도시된 바와 같이, 컨트롤러(100)는 블록들(BLs) 각각에 대한 최근 이레이즈 시간(tE1~tE20)을 상기 이레이즈 테이블에 기록할 수 있고, P/E 순환에 따라 블록(BL20)에 대한 제1이레이즈 시간(tE20)을 제2이레이즈 시간(tE`20)을 갱신할 수 있다.
상기 이레이즈 테이블은 스토리지 장치(40)의 버퍼(200) 또는 불휘발성 메모리(300)에 저장될 수 있고, 각각의 블록(BL1~BL20)에 대한 재사용 기간의 계산을 위해 사용될 수 있다.
해당 블록(BL1~BL20)에 대한 재사용 기간은 상기 해당 블록의 사용이 시작된 시간과 현재 시간(tC)과의 차이를 말한다. 여기서 사용이 시작된 시간은 해당 블록의 최근 이레이즈 시간(tE)을 의미할 수 있다.
P/E 순환 과정에 따라 현재 이레이즈 작동이 수행된 후 다음 이레이즈 작동이 수행될 때까지의 시간 간격이 짧은 경우, 해당 블록의 각 페이지에 저장된 데이터를 오류 없이 유지할 수 있는 기간은 짧아질 수 있다.
컨트롤러(100)는 블록에 대한 재사용 제한 조건을 설정하고 상기 블록의 재사용을 관리할 수 있다. 예컨대, 도 5에 도시된 바와 같이, 컨트롤러(100)는 각 블록에 대한 재사용 제한 기간(Tr)을 설정하고, 상기 각 블록에 대한 재사용 기간이 설정된 재사용 제한 기간(Tr)을 초과하는지를 판단할 수 있다.
도 5를 참조하면, 재사용 제한 기간(Tr)은 T초 (예컨대, T는 실수, 예컨대, 10초)로 설정된다고 가정한다. 제18블록(BL18)의 재사용 기간(Tu18)은 현재 시간 (tC)과 최근 이레이즈 시간(tE18)과의 차이, 즉 6초일 수 있다. 제19블록(BL19)의 재사용 기간(Tu19)은 현재 시간(tC)과 최근 이레이즈 시간(tE19)과의 차이, 즉 12초일 수 있다. 제20블록(BL20)의 재사용 기간(Tu20)은 현재 시간(tC)과 최근 이레이즈 시간(tE19)과의 차이, 즉 25초일 수 있다. 본 명세서에서 기재된 10초, 6초, 12초, 및 25초는 설명을 위한 실시 예에 불과하다.
이 경우, 제19블록(BL19)과 제20블록(BL20) 각각의 재사용 기간(Tu19 및 Tu20)은 재사용 제한 기간(Tr)보다 길기 때문에, 제19블록(BL19)과 제20블록(BL20) 각각은 현재 재사용 가능한 블록이 될 수 있다. 반면, 제18블록(BL18)의 재사용 기간(Tu18)은 재사용 제한 기간(Tr)보다 짧기 때문에, 제18블록(BL18)은 현재 재사용 가능한 블록이 될 수 없고, 일정 시간(예컨대, 4초)이 지난 뒤에 재사용 가능한 블록이 될 수 있다.
도 6은 도 1의 컨트롤러에서 수행되는 가비지 컬렉션 작동을 설명하기 위한 개념도이고, 도 7은 도 6의 제2가비지 컬렉션 수행을 위한 제2기준값의 결정 과정을 설명하기 위한 타임 라인이다.
도 1, 도 2, 도 6 및 도 7을 참조하면, 컨트롤러(100)는 불휘발성 메모리들(300)에 포함된 블록들(BLs) 중에서 적어도 하나의 프리 블록(FB)에 대한 리스트를 관리할 수 있다.
호스트(30)로부터 라이트 명령과 함께 데이터가 수신되면, 컨트롤러(100)는 프리 블록들 중 어느 하나를 데이터 블록으로 할당하고, 할당된 데이터 블록에 상기 데이터를 라이트할 수 있다. 프리 블록(FB)이 사용된 블록(UB)으로 변경됨에 따라, 블록들 중에서 프리 블록의 개수(Nc)는 줄어들 수 있다.
실시 예에 따라, 프리 블록들 중에 재사용 제한 기간(Tr)을 만족하는 프리 블록이 존재 하지 않을 때, 프리 블록의 할당은 제한될 수 있다. 즉, 컨트롤러(100)는 프리 블록들 중에서 적어도 하나의 프리 블록이 재사용 시간을 만족할 때까지 프리 블록의 할당을 멈추고, 라이트 작동을 보류할 수 있다.프리 블록의 개수(Nc)가 설정된 제1기준값(N1)과 같거나 작을 때, 컨트롤러 (100)는 블록들(BLs)에 대해 가비지 컬렉션 작동을 수행함으로써 새로운 프리 블록 (FB)을 생성할 수 있다.
제1기준값(N1)은 가비지 컬렉션 작동의 트리거(또는 시작)를 위한 최소값일 수 있고, 제1기준값(N1)은 컨트롤러(100)에서 실행되는 FTL(145)에 따라 다른 값으로 설정될 수 있다.
가비지 컬렉션 작동은 제1기준값(N1)과 관련된 제1가비지 컬렉션 작동(GC1)과 제2기준값(N2)과 관련된 제2가비지 컬렉션 작동(GC2)을 포함할 수 있다. 제1가비지 컬렉션 작동(GC1)과 제2가비지 컬렉션 작동(GC2)은 연속적으로 수행될 수 있다.
제1가비지 컬렉션 작동(GC1)은 프리 블록의 개수(Nc)가 제1기준값(N1)과 같을 때까지 수행될 수 있다. 제2가비지 컬렉션 작동(GC2)은 프리 블록의 개수(Nc)가 제1기준값(N1)보다 크고 제2기준값(N2)과 같을 때까지 수행될 수 있다.
제2기준값(N2)은 제1기준값(N1)보다 큰 값으로 설정될 수 있고, 제1가비지 컬렉션 작동에 따라 생성된 프리 블록들이 재사용될 때, 상기 프리 블록들이 재사용 제한 조건을 만족하도록 설정될 수 있다.
이하에서는 제1기준값(N1)은 3으로 가정하고, 제2기준값(N2)을 결정하는 과정을 설명한다.
제1가비지 컬렉션(GC1)이 시작되는 시점(T1)에서, 2개의 프리 블록들(BL19, BL20)이 존재할 수 있다. 프리 블록의 개수(Nc)는 제1기준값(N1)보다 작기 때문에, 컨트롤러(100)는 프리 블록의 개수(Nc)가 제1기준값(N1)과 같아지도록 블록들에 대한 제1가비지 컬렉션 작동(GC1)을 수행하고 1개의 제1프리 블록(BL18)을 생성할 수 있다.
제1가비지 컬렉션 작동(GC1)이 완료된 시점(T2)에서, 컨트롤러(100)는 제1프리 블록(BL18)이 재사용 제한 조건을 만족하는지를 판단할 수 있다. 예컨대, 도 7에 도시된 바와 같이, 프리 블록(BL18)의 재사용 기간(Tu18)이 6초라고 가정할 때, 컨트롤러(100)는, 제1프리 블록(BL18)의 재사용 기간(Tu18=6초)이 재사용 제한 기간(Tr=10초)보다 작으므로, 제1프리 블록(BL18)은 재사용 제한 조건을 만족하지 못하는 블록으로 판단할 수 있다.
제1가비지 컬렉션 작동(GC1)이 완료된 시점(T2)에서, 제1프리 블록(BL18)이 재사용 제한 조건을 만족하지 못하는 블록이므로, 컨트롤러(100)는 적어도 하나의 프리 블록을 생성해야 한다.
재사용 기간이 긴 블록일수록 먼저 재사용될 수 있다. 예컨대, 제1가비지 컬렉션 작동(GC1)이 완료된 시점(T2)에서, 25초의 재사용 기간(Tu20)을 갖는 제3프리 블록(BL20)이 가장 먼저 재사용되고, 12초의 재사용 기간(Tu19)을 갖는 제2프리 블록(BL19)이 그 다음으로 재사용 될 수 있다.
제3프리 블록(BL20)과 제2프리 블록(BL19)이 순차적으로 재사용됨에 따라, 제1프리 블록(BL18)의 재사용을 지연(또는 제1프리 블록(BL18)의 재사용 기간을 증가)시키는 재사용 지연 기간(Td)이 발생할 수 있다.
재사용 지연 기간(Td)은 제3프리 블록(BL20)과 제2프리 블록(BL19) 각각에 데이터가 프로그램되는데 소요되는 시간에 기초하여 계산될 수 있다.
예컨대, 제3프리 블록(BL20)이 포함된 페이지의 개수가 5개이고, 각 페이지에 해당 데이터가 프로그램되는데 소요되는 시간이 0.2초라고 가정할 때, 제2프리 블록(BL20)의 재사용에 의해 1초(=5*02.초)의 지연 기간(Tp)이 발생할 수 있다. 또한, 제2프리 블록(BL19)이 포함된 페이지의 개수가 5개이고, 각 페이지에 프로그램되는데 소요되는 시간이 0.2초라고 가정할 때, 제2프리 블록(BL19)의 재사용에 의해 1초(=5*0.2초)의 지연 기간(Tp)이 발생할 수 있다. 즉, 제3프리 블록(BL20)과 제2프리 블록(BL19) 모두의 재사용에 따라 2초의 재사용 지연 기간(Td)이 발생할 수 있다.
따라서, 제3프리 블록(BL20)과 제2프리 블록(BL19)이 재사용된 후 제1프리 블록(BL18)이 재사용 때, 제1프리 블록(BL18)의 재사용 기간은 재사용 지연 기간 (Td, 예컨대, 2초)만큼 연장될 수 있다. 제1프리 블록(BL18)의 연장된 재사용 기간(예컨대, 6초+2초=8초)은 재사용 제한 기간(Tr, 예컨대, 10초)보다 작을 수 있게 된다.
제1가비지 컬렉션 작동(GC1)이 완료된 시점(T2)에서, 프리 블록이 1개 생성될 때마다 1초의 재사용 지연 기간이 연장된다고 가정할 때, 제1프리 블록(BL18)이 재사용 제한 기간(Tr, 예컨대, 10초)을 만족하기 위해서는 제1프리 블록(BL18) 이외에 최소 4개의 프리 블록들을 필요로 한다.
4개의 프리 블록들이 재사용됨에 따라 4초(예컨대, 4*1초)의 재사용 지연 기간이 발생하기 때문에, 제1프리 블록(BL18)은 재사용 제한 조건을 만족한 상태로 재사용될 수 있다. 이에 따라, 제2기준값(N2)는 5(=1+4)로 결정될 수 있다.
컨트롤러(100)는, 결정된 제2기준값에 기초하여, 블록들에 대한 제2가비지 컬렉션 작동을 수행하고, 3개의 프리 블록들(BL18-BL20) 이외에 2개의 프리 블록들 (BL16과 BL17)을 추가로 생성할 수 있다.
도 8은 도 1의 데이터 처리 시스템의 작동을 설명하기 위한 개념도이고, 도 9는 도 8의 작동에 따른 스토리지 장치의 라이트 데이터 처리율(throughput)을 나타내는 그래프이고, 도 10은 본 발명의 실시 예들에 따른 스토리지 장치의 작동 과정을 나타내는 플로우 차트이다.
도 1, 도 2, 도 8, 도 9, 및 도 10을 참조하면, 스토리지 장치(40)는 호스트 (30)로부터 제1라이트 명령(WC1)과 제1라이트 데이터(WD1)를 수신할 수 있다. 스토리지 장치(40)의 컨트롤러(100)는 제1라이트 명령(WC1)에 응답하여 제1라이트 데이터(WD1)를 불휘발성 메모리들(300)에 라이트하고, 제1라이트 작동이 완료되었음을 알리는 제1응답(RES1)을 호스트(30)로 전송할 수 있다.
컨트롤러(100)는 불휘발성 메모리들(300) 각각에 포함된 블록들(BLs) 중에서 프리 블록의 개수(Nc)가 제1기준값(N1)보다 작은지를 판단할 수 있다(S110). 제1기준값(N1)은 가비지 컬렉션 작동을 트리거 하기 위한 최소값일 수 있고, 컨트롤러 (100)에서 실행되는 FTL(145)에 따라 다르게 설정될 수 있다.
프리 블록의 개수(Nc)가 제1기준값(N1)보다 작을 때, 컨트롤러(100)는 프리 블록의 개수(Nc)가 제1기준값(N1)과 같을 때까지 제1가비지 컬렉션 작동(GC1)을 수행할 수 있다(S120).
제1가비지 컬렉션 작동이 수행되는 동안, 컨트롤러(100)는 스토리지 장치 (40)에 대한 라이트 데이터 처리율을 제1값(TP1)부터 제2값(TP2)까지 순차적으로 증가시킬 수 있다. 즉, 제1가비지 컬렉션 작동이 수행되는 동안, 컨트롤러(100)는 프리 블록의 개수(Nc)에 비례하여 스토리지 장치(40)에 대한 라이트 데이터 처리율을 증가시킬 수 있다. 예컨대, 제1가비지 컬렉션 작동이 시작되는 시점(T1)에서 제1값(TP1)은 0 MB/sec 일 수 있고, 제1가비지 컬렉션 작동이 완료되는 시점(T2)에서 제2값(TP2)은 약 100 MB/sec 일 수 있다.
제1가비지 컬렉션 작동이 수행되는 동안, 컨트롤러(100)는 호스트(30)로부터 제2라이트 명령(WC2)과 제2라이트 데이터(WD2)를 수신할 수 있다. 컨트롤러(100)는 제1가비지 컬렉션 작동이 완료되는 시점(T2)에서 제2라이트 명령에 대한 제2응답 (RES2)을 호스트(30)로 전송할 수 있다. 즉, 제1가비지 컬렉션 작동이 수행되는 동안, 컨트롤러(100)는 라이트 작동을 수행하지 않는다.
제1가비지 컬렉션 작동(GC1)이 완료되면, 컨트롤러(100)는 제2가비지 컬렉션 작동(GC2)을 위한 제2기준값(N2)을 결정할 수 있다(S130). 제2기준값(N2)은 제1기준값(N1)보다 큰 값으로 설정될 수 있고, 제1가비지 컬렉션 작동(GC1)에 의해 생성된 제1프리 블록(BL18)이 재사용될 때, 제1프리 블록(BL18)이 재사용 제한 조건을 만족하도록 설정될 수 있다.
컨트롤러(100)는 프리 블록의 개수(Nc)가 제2기준값(N2)과 같은지를 판단하고, 프리 블록의 개수(Nc)가 제2기준값(N2)과 같을 때까지 제2가비지 컬렉션 작동 (GC2)을 수행할 수 있다(S140, S150).
제2가비지 컬렉션 작동(GC2)이 수행되는 동안, 컨트롤러(100)는 호스트(30)로부터 제3라이트 명령(WC3)과 제3라이트 데이터(WD3)를 수신할 수 있다. 컨트롤러 (100)는 제3라이트 명령(WC3)에 응답하여 라이트 데이터(WD3)를 불휘발성 메모리들 (300)에 라이트하고, 라이트 작동이 완료되었음을 알리는 제3응답(RES3)을 호스트 (30)로 전송할 수 있다. 컨트롤러(100)는 제3라이트 명령(WD3)에 대한 라이트 작동과 제2가비지 컬렉션 작동(GC2)은 동시에(또는 병렬적으로 시간적으로 오버랩되어) 수행할 수 있다.
제2가비지 컬렉션 작동(GC2)이 수행되는 동안, 컨트롤러(100)는 스토리지 장치(40)에 대한 라이트 데이터 처리율을 제2값(TP2)으로 일정하게 유지할 수 있다. 예컨대, 제2값(TP2)은 제1가비지 컬렉션(GC1)이 완료된 시점(T2)의 처리율인 약 100 MB/sec 일 수 있다.
제2가비지 컬렉션 작동(GC2)이 완료된 시점(T3)에서, 컨트롤러(100)는 스토리지 장치(40)에 대한 라이트 데이터 처리율을 제2값(TP2)보다 큰 제3값(TP3)으로 변경할 수 있다. 예컨대, 제3값(TP3)은 약 500 MB/sec 일 수 있다.
도 11은 본 발명의 실시 예들에 따른 스토리지 장치의 작동 과정을 나타내는 플로우 차트이다. 도 1, 도 2, 도 6 및 도 12를 참조하면, 컨트롤러(100)는 불휘발성 메모리들(300) 각각에 포함된 블록들(BLs) 중에서 프리 블록의 개수(Nc)를 확인하고, 프리 블록의 개수(Nc)를 제1기준값(N1)과 비교할 수 있다(S210).
프리 블록의 개수(Nc)가 제1기준값(N1)보다 작을 때, 컨트롤러(100)는 프리 블록의 개수(Nc)가 제1기준값(N1)과 같을 때까지 제1가비지 컬렉션 작동을 수행할 수 있다(S220).
제1가비지 컬렉션 작동이 완료된 후, 컨트롤러(100)는 제1가비지 컬렉션 작동에 의해 생성된 제1프리 블록의 재사용 기간(Tu)을 계산할 수 있다(S230). 재사용 기간(Tu)은 해당 블록의 사용이 시작된 시간과 현재 시간(tC)과의 시간 차이를 말한다. 여기서 사용이 시작된 시간은 해당 블록의 최근 이레이즈 시간(tE)을 의미할 수 있다.
컨트롤러(100)는 계산된 제1프리 블록의 재사용 기간(Tu)을 재사용 제한 기간(Tr)과 비교할 수 있다(S240). 제1프리 블록의 재사용 기간(Tu)이 재사용 제한 기간(Tr)보다 큰 경우, 컨트롤러(100)는 가비지 컬렉션 동작을 종료할 수 있다.
제1프리 블록의 재사용 기간(Tu)이 재사용 제한 기간(Tr)보다 작은 경우(예컨대, 제1프리 블록의 재사용 기간(Tu)이 6초이고 재사용 제한 기간(Tr)이 10초일 때), 컨트롤러(100)는 제1프리 블록의 재사용 지연 기간(Td)을 계산할 수 있다(S250).
제1프리 블록의 재사용 지연 기간(Td)은 제1가비지 컬렉션 작동이 완료된 후에 존재하는 프리 블록들 중에서 제1프리 블록(BL18)을 제외한 제4프리 블록들(예컨대, BL19과 BL20)에 데이터가 순차적으로 프로그램되는데 소요되는 전체 기간을 의미할 수 있다.
예컨대, 블록에 포함된 모든 페이지들 각각에서 대응되는 각각의 데이터가 프로그램되는데 소요되는 기간이 1초이고, 제4프리 블록들(예컨대, BL19과 BL20)의 개수가 2개라고 가정할 때, 제1프리 블록의 재사용 지연 기간(Td)은 2초가 될 수 있다.
컨트롤러(100)는 계산된 제1프리 블록의 재사용 기간(Tu)과 제1프리 블록의 재사용 지연 기간(Td)의 합을 재사용 제한 기간(Tr)과 비교할 수 있다(S260). 제1프리 블록의 재사용 기간(Tu)과 제1프리 블록의 재사용 지연 기간(Td)의 합이 재사용 제한 기간(Tr)보다 큰 경우, 컨트롤러(100)는 가비지 컬렉션 작동을 종료할 수 있다.
제1프리 블록의 재사용 기간(Tu)과 제1프리 블록의 재사용 지연 기간(Td)의 합이 재사용 제한 기간(Tr)보다 작은 경우(예컨대, 제1프리 블록(BL18)의 재사용 기간(Tu)이 6초이고, 제1프리 블록(BL18)의 재사용 지연 기간(Td)이 2초이고 재사용 제한 기간(Tr)이 10초일 때), 컨트롤러(100)는 추가적인 프리 블록을 생성하기 위해 제2가비지 컬렉션 작동을 수행할 수 있다(S230).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 데이터 처리 시스템
20 : 인터페이스
30 : 호스트
40 : 스토리지 장치
100 : 컨트롤러
110 : 버스 구조
120 : 스토리지 인터페이스
130 : CPU
140 : 메모리
145 : FTL
150 : 메모리 컨트롤러
160 : 버퍼 매니저
200 : 버퍼
300 : 불휘발성 메모리

Claims (10)

  1. 블록들을 포함하는 스토리지 장치의 작동을 제어할 수 있는 스토리지 컨트롤러의 작동 방법에 있어서,
    상기 블록들 중에서 프리 블록의 개수가 가비지 컬렉션 작동의 트리거를 위한 제1기준값보다 작은지를 판단하는 단계; 및
    상기 판단 결과에 따라, 상기 프리 블록의 개수가 상기 제1기준값보다 큰 제2기준값과 같아질 때까지, 상기 블록들에 대해 가비지 컬렉션 작동을 수행하는 단계를 포함하고,
    상기 가비지 컬렉션 작동을 수행하는 단계는,
    상기 프리 블록의 개수가 상기 제1기준값과 같을 때까지, 상기 블록들에 대해 제1가비지 컬렉션 작동을 수행하는 단계;
    상기 프리 블록의 개수가 상기 제1기준값보다 크고 상기 제2기준값과 같을 때까지, 상기 블록들에 대해 제2가비지 컬렉션 작동을 수행하는 단계;
    라이트 명령과 라이트 데이터를 수신하는 단계; 및
    상기 라이트 명령에 응답하여 상기 라이트 데이터를 상기 스토리지 장치에 라이트하는 동시에 상기 제2가비지 컬렉션 작동을 수행하는 단계를 포함하고,
    상기 제1가비지 컬렉션 작동에 의해 생성된 프리 블록은 이레이즈 시간으로부터 재사용 제한 기간 이후에 재사용 가능한 스토리지 컨트롤러의 작동 방법.
  2. 제1항에 있어서,
    상기 제1가비지 컬렉션 작동과 상기 제2가비지 컬렉션 작동은 연속적으로 수행되는 스토리지 컨트롤러의 작동 방법.
  3. 삭제
  4. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제2가비지 컬렉션이 작동이 수행되는 동안, 상기 스토리지 장치에 대한 라이트 데이터 처리율을 일정하게 유지하는 스토리지 컨트롤러의 작동 방법.
  5. 제1항에 있어서, 상기 스토리지 컨트롤러는,
    상기 제1가비지 컬렉션 작동이 수행되는 동안, 상기 스토리지 장치에 대한 처리율을 제1값부터 제2값까지 순차적으로 증가 시키고,
    상기 제2가비지 컬렉션 작동이 수행되는 동안, 상기 처리율은 상기 제2값으로 유지하고,
    상기 제2가비지 컬렉션 작동이 완료된 후, 상기 처리율을 상기 제2값보다 큰 제3값으로 변경하는 스토리지 컨트롤러의 작동 방법.
  6. 제1항에 있어서,
    상기 제1가비지 컬렉션 작동에 의해 생성된 제1프리 블록이 재사용 될 때, 상기 제1프리 블록이 재사용 제한 조건을 만족하도록 상기 제2기준값을 결정하는 단계를 더 포함하는 스토리지 컨트롤러의 작동 방법.
  7. 제6항에 있어서, 상기 결정하는 단계는,
    상기 제1프리 블록의 재사용 기간과 상기 제1프리 블록의 재사용 지연 기간을 계산하는 단계를 포함하는 스토리지 컨트롤러의 작동 방법.
  8. 제7항에 있어서,
    상기 재사용 기간은 상기 제1프리 블록의 최근 이레이즈된 시간과 현재 시간의 차이인 스토리지 컨트롤러의 작동 방법.
  9. 제8항에 있어서,
    상기 재사용 지연 기간은 상기 제1가비지 컬렉션 작동이 완료된 시점에 존재하는 프리 블록들 중에서 상기 제1프리 블록을 제외한 제2프리 블록들 각각에 대응되는 데이터가 순차적으로 프로그램되는데 소요되는 전체 기간인 스토리지 컨트롤러의 작동 방법.
  10. 불휘발성 메모리와 상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하는 스토리지 장치의 작동 방법에 있어서,
    상기 컨트롤러가 상기 불휘발성 메모리에 포함된 블록들 중에서 프리 블록의 개수가 제1기준값보다 작은지를 판단하는 단계;
    상기 컨트롤러가, 상기 프리 블록의 개수가 상기 제1기준값과 같을 때까지, 제1가비지 컬렉션을 수행하는 단계;
    상기 컨트롤러가, 상기 프리 블록의 개수가 상기 제1기준값보다 크고 제2기준값과 같을 때까지, 제2가비지 컬렉션을 수행하는 단계;
    상기 컨트롤러가, 라이트 명령과 라이트 데이터를 수신하는 단계; 및
    상기 컨트롤러가, 상기 라이트 명령에 응답하여 상기 라이트 데이터를 상기 스토리지 장치에 라이트하는 동시에 상기 제2가비지 컬렉션을 수행하는 단계를 포함하고,
    상기 제1가비지 컬렉션에 의해 생성된 프리 블록은 이레이즈 시간으로부터 재사용 제한 기간 이후에 재사용 가능한 스토리지 장치의 작동 방법.
KR1020150179000A 2015-12-15 2015-12-15 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 KR102602694B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150179000A KR102602694B1 (ko) 2015-12-15 2015-12-15 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법
US15/295,575 US10229050B2 (en) 2015-12-15 2016-10-17 Method for operating storage controller and method for operating storage device including the same wherein garbage collection is performed responsive to free block unavailable during reuse

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150179000A KR102602694B1 (ko) 2015-12-15 2015-12-15 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법

Publications (2)

Publication Number Publication Date
KR20170071085A KR20170071085A (ko) 2017-06-23
KR102602694B1 true KR102602694B1 (ko) 2023-11-15

Family

ID=59019801

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150179000A KR102602694B1 (ko) 2015-12-15 2015-12-15 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법

Country Status (2)

Country Link
US (1) US10229050B2 (ko)
KR (1) KR102602694B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102447602B1 (ko) * 2017-10-25 2022-09-26 삼성전자주식회사 메모리 장치 및 그 동적 가비지 컬렉션 방법
CN110058794B (zh) * 2018-01-19 2022-11-01 上海宝存信息科技有限公司 用于动态执行垃圾回收数据储存装置与操作方法
KR102620255B1 (ko) 2018-05-18 2024-01-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20200085513A (ko) 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20200110547A (ko) * 2019-03-14 2020-09-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치
KR20200114149A (ko) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20210004613A (ko) 2019-07-05 2021-01-13 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20210092988A (ko) * 2020-01-17 2021-07-27 에스케이하이닉스 주식회사 가비지 콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
US11809314B2 (en) * 2021-11-21 2023-11-07 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management
CN114281261A (zh) * 2021-12-24 2022-04-05 深圳忆联信息系统有限公司 固态硬盘空闲块的预擦除方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020097594A1 (en) * 2000-11-30 2002-07-25 Bruce Ricardo H. Parallel erase operations in memory systems
US20100057976A1 (en) * 2008-08-26 2010-03-04 Menahem Lasser Multiple performance mode memory system
US20120311232A1 (en) * 2011-05-31 2012-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods
US20150161034A1 (en) * 2013-12-09 2015-06-11 International Business Machines Corporation Recording dwell time in a non-volatile memory system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO324607B1 (no) * 2003-11-24 2007-11-26 Thin Film Electronics Asa Fremgangsmate for a betjene et datalagringsapparat som benytter passiv matriseadressering
US7707232B2 (en) 2005-05-13 2010-04-27 Microsoft Corporation Implementation for collecting unmanaged memory
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
KR101029704B1 (ko) 2008-06-17 2011-04-18 주식회사 셀픽 플래시 메모리 관리 방법
US8954654B2 (en) * 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US8032804B2 (en) * 2009-01-12 2011-10-04 Micron Technology, Inc. Systems and methods for monitoring a memory system
US8250324B2 (en) 2009-11-30 2012-08-21 International Business Machines Corporation Method to efficiently locate meta-data structures on a flash-based storage device
JP2012014400A (ja) 2010-06-30 2012-01-19 Toshiba Corp 半導体メモリ装置および半導体メモリシステム
JP5535128B2 (ja) * 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
WO2013030866A1 (en) 2011-08-29 2013-03-07 Hitachi, Ltd. Semiconductor storage device comprising electrically rewritable nonvolatile semiconductor memory
CN102981959B (zh) * 2011-09-05 2015-11-04 光宝科技股份有限公司 固态存储装置及其垃圾搜集动作的控制方法
KR101992940B1 (ko) 2012-08-08 2019-06-26 삼성전자주식회사 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
US9201786B2 (en) 2012-12-21 2015-12-01 Kabushiki Kaisha Toshiba Memory controller and memory system
US8949491B1 (en) 2013-07-11 2015-02-03 Sandisk Technologies Inc. Buffer memory reservation techniques for use with a NAND flash memory
US9639463B1 (en) * 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
KR102116258B1 (ko) 2013-12-24 2020-06-05 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
US9652382B1 (en) * 2014-09-04 2017-05-16 Sk Hynix Memory Solutions Inc. Look-ahead garbage collection for NAND flash based storage
US9875039B2 (en) * 2014-09-30 2018-01-23 Sandisk Technologies Llc Method and apparatus for wear-leveling non-volatile memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020097594A1 (en) * 2000-11-30 2002-07-25 Bruce Ricardo H. Parallel erase operations in memory systems
US20100057976A1 (en) * 2008-08-26 2010-03-04 Menahem Lasser Multiple performance mode memory system
US20120311232A1 (en) * 2011-05-31 2012-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods
US20150161034A1 (en) * 2013-12-09 2015-06-11 International Business Machines Corporation Recording dwell time in a non-volatile memory system

Also Published As

Publication number Publication date
KR20170071085A (ko) 2017-06-23
US20170168930A1 (en) 2017-06-15
US10229050B2 (en) 2019-03-12

Similar Documents

Publication Publication Date Title
KR102602694B1 (ko) 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법
CN107193486B (zh) 数据存储设备和包括该数据存储设备的数据处理系统
CN106294194B (zh) 数据存储装置和具有该数据存储装置的数据处理系统
US20210382864A1 (en) Key-value storage device and operating method thereof
US10304539B2 (en) Method of performing a write operation based on an idle time
US9158671B2 (en) Nonvolatile memory system with migration manager
KR102491624B1 (ko) 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
US9864526B2 (en) Wear leveling using multiple activity counters
US10782909B2 (en) Data storage device including shared memory area and dedicated memory area
US9799402B2 (en) Nonvolatile memory device and program method thereof
JP7274869B2 (ja) バリアーコマンドに基づいてデータを順に格納するストレージ装置
KR102253592B1 (ko) 초기 문턱 전압 분포 변화를 보상할 수 있는 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
US9778849B2 (en) Method of operating data storage device using size and write speed information and method of operating system including the same
US10416886B2 (en) Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same
US20170052901A1 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
KR20190099879A (ko) 메모리 컨트롤러 및 그 동작 방법
US20160291897A1 (en) Data storage device and devices having the same
US20220374174A1 (en) Storage device with reduced communication overhead using hardware logic
US11593023B2 (en) Memory controller and method of operating the same
US20210042052A1 (en) Storage device
KR102321478B1 (ko) 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)