KR102289919B1 - 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 - Google Patents

스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR102289919B1
KR102289919B1 KR1020140044809A KR20140044809A KR102289919B1 KR 102289919 B1 KR102289919 B1 KR 102289919B1 KR 1020140044809 A KR1020140044809 A KR 1020140044809A KR 20140044809 A KR20140044809 A KR 20140044809A KR 102289919 B1 KR102289919 B1 KR 102289919B1
Authority
KR
South Korea
Prior art keywords
data
lifetime
storage
stored
memory
Prior art date
Application number
KR1020140044809A
Other languages
English (en)
Other versions
KR20150118778A (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 KR1020140044809A priority Critical patent/KR102289919B1/ko
Priority to US14/682,200 priority patent/US9846542B2/en
Priority to CN201510178460.8A priority patent/CN105045523B/zh
Priority to EP15163662.8A priority patent/EP2940691B1/en
Priority to JP2015083681A priority patent/JP6568387B2/ja
Publication of KR20150118778A publication Critical patent/KR20150118778A/ko
Application granted granted Critical
Publication of KR102289919B1 publication Critical patent/KR102289919B1/ko

Links

Images

Classifications

    • 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
    • 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/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

스토리지 컨트롤러가 제공된다. 스토리지 컨트롤러는 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및 상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함한다.

Description

스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법{STORAGE CONTROLLER, STORAGE DEVICE, STORAGE SYSTEM AND METHOD OF OPERATION OF THE STORAGE CONTROLLER}
본 발명은 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법에 관한 것이다.
플래시 메모리 장치, 예를 들어 SSD(Solid State Drive)는 데이터 입출력 요청에 따라 LBA(Logical Block Address)를 PBA(Physical Block Address)로 상호 변환하거나 라이트(write), 리드(read), 이레이즈(erase) 동작을 하는 콘트롤러 로직을 구비하며, 상기 콘트롤러 로직은 FTL(Flash Translation Layer)을 이용하여 상술한 작업들을 수행한다. SSD는 데이터를 저장하기 위한 집적 회로로서 반도체 메모리 셀 어레이를 가지며, 이에 따라 디스크 형태의 플래터가 회전하는 방식의 HDD(Hard Disk Drive)와 동작 방식이 상이하다. 예를 들어, SSD에서 이레이즈 동작은 플래시 메모리 블록 단위로 수행된다. 그런데, 이레이즈 동작의 횟수는 플래시 메모리 블록의 수명에 직결되어 결국 SSD의 수명에 영향을 미친다. 다시 말해서, SSD에서 플래시 메모리 블록에 대한 이레이즈 횟수, 즉, I/O 동작 횟수는 한정되어 있다. 이에 따라, SSD의 수명을 연장시키기 위한 다양한 방안이 요구된다.
등록특허 제10-0365725호는 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법을 개시하고 있다.
본 발명이 해결하려는 과제는 데이터 I/O 횟수를 최소화하여 스토리지 장치의 성능을 향상시키기 위한 스토리지 컨트롤러를 제공하는 것이다.
본 발명이 해결하려는 다른 과제는 데이터 I/O 횟수를 최소화하여 스토리지 장치의 성능을 향상시키기 위한 스토리지 장치를 제공하는 것이다.
본 발명이 해결하려는 또 다른 과제는 데이터 I/O 횟수를 최소화하여 스토리지 장치의 성능을 향상시키기 위한 스토리지 시스템를 제공하는 것이다.
본 발명이 해결하려는 또 다른 과제는 데이터 I/O 횟수를 최소화하여 스토리지 장치의 성능을 향상시키기 위한 스토리지 컨트롤러의 동작 방법을 제공하는 것이다.
본 발명이 해결하려는 과제는 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 스토리지 컨트롤러의 일 실시예는, 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및 상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함한다.
상기 라이프타임 정보는 상기 데이터의 변경 주기를 그 길이에 따라 N(단, N은 자연수)개의 등급으로 분류한 라이프타임 등급을 포함하고, 상기 데이터 배치 유닛은 하나의 메모리 블록에 서로 같은 등급의 라이프타임을 갖는 데이터만을 저장할 수 있다.
상기 라이프타임 등급은 1 내지 N의 절대 등급으로 정해질 수 있다.
상기 라이프타임 등급은 상기 데이터의 라이프타임이 길 수록 높은 등급으로 정해질 수 있다.
상기 라이프타임 등급은 상기 플래시 메모리 내에 영속적으로 존재하는 데이터에 대한 영속적 라이프타임 등급을 더 포함할 수 있다.
상기 라이프타임 등급은 다른 데이터의 라이프타임 등급을 기준으로 상대적으로 정해질 수 있다.
상기 데이터 배치 유닛은 상기 데이터의 라이프타임이 짧은 데이터일수록, 상기 플래시 메모리 내에서 웨어 레벨링 카운트(wear-leveling count)의 값이 작은 위치를 상기 저장 위치로 결정할 수 있다.
상기 플래시 메모리는 제1 저장 위치 및 제2 저장 위치를 포함하고, 상기 제1 저장 위치의 라이프타임이 상기 제2 저장 위치의 라이프타임보다 짧은 경우, 가비지 컬렉션(gabage collection) 동작은 상기 제1 저장 위치에 대해 우선적으로 수행될 수 있다.
상기 데이터 배치 유닛은 상기 플래시 메모리에 저장된 데이터의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 상기 데이터의 저장 위치를 다시 결정할 수 있다.
상기 플래시 메모리는 제1 메모리 블록 및 제2 메모리 블록을 포함하고,
상기 제1 메모리 블록에 저장된 데이터의 라이프타임 정보가 변경된 경우, 상기 데이터를 상기 제2 메모리 블록으로 이전(migrate)할 수 있다.
상기 변경된 라이프타임 정보는 상기 호스트로부터 수신될 수 있다.
상기 스토리지 컨트롤러는 상기 호스트 인터페이스를 통해 수신된 데이터의 라이프타임을 직접 평가하여, 상기 데이터 배치 유닛에 송신하는 라이프타임 평가 유닛을 더 포함할 수 있다.
상기 라이프타임 평가 유닛은 스냅샷(snapshot), 클론(clone) 또는 중복제거(deduplication) 작업에 따라 상기 데이터의 라이프타임을 재평가할 수 있다.
상기 라이프타임 평가 유닛은 상기 데이터의 라이프타임 평가시 휴리스틱 기법(Heuristic method)을 이용할 수 있다.
상기 스토리지 컨트롤러는 상기 데이터와 상기 라이프타임 정보의 연관 관계(relationship)를 나타내는 메타 데이터를 관리하는 메타 데이터 관리 유닛을 더 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 스토리지 장치의 일 실시예는, SLC(Single Level Cell) 메모리 모듈 및 MLC(Multiple Level Cell) 메모리 모듈을 포함하는 플래시 메모리; 상기 플래시 메모리와 인터페이스하는 플래시 메모리 인터페이스; 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및 상기 데이터의 라이프타임 정보에 기초하여, 상기 SLC 메모리 모듈 및 상기 MLC 메모리 모듈 중에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함한다.
상기 데이터 배치 유닛은 상기 데이터의 라이프타임이 미리 정해진 임계값을 초과하는 경우 상기 MLC 메모리 모듈을 상기 데이터의 저장 위치로 결정할 수 있다.
상기 플래시 메모리는 제1 타입의 메모리 셀을 포함하는 제1 메모리 모듈 및 상기 제1 타입과 상이한 제2 타입의 메모리 셀을 포함하는 제2 메모리 모듈을 포함하고, 상기 제1 메모리 모듈은 상기 제2 메모리 모듈보다 높은 내구성(endurance)를 가질 수 있다.
상기 메모리 모듈의 내구성은 상기 메모리 셀의 최대 데이터 입출력 횟수를 기준으로 측정될 수 있다.
상기 제1 메모리 모듈에 저장되는 데이터의 라이프타임은 상기 제2 메모리 모듈에 저장되는 라이프타임보다 짧을 수 있다.
상기 MLC는 TLC(Triple Level Cell) 또는 QLC(Quad Level Cell)를 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 스토리지 시스템의 일 실시예는, 복수의 스토리지 장치; 및 상기 복수의 스토리지 장치를 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는, 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및 상기 데이터의 라이프타임 정보에 기초하여, 상기 복수의 스토리지 장치 중에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함한다.
상기 스토리지 장치는 제1 타입의 메모리 셀을 포함하는 제1 스토리지 장치 및 상기 제1 타입과 상이한 제2 타입의 메모리 셀을 포함하는 제2 스토리지 장치를 포함하고, 상기 제1 스토리지 장치는 상기 제2 스토리지 장치보다 높은 내구성(endurance)를 가질 수 있다.
상기 제1 스토리지 장치에 저장되는 데이터의 라이프타임은 상기 제2 스토리지 장치에 저장되는 라이프타임보다 짧을 수 있다.
상기 스토리지 시스템은, 상기 복수의 스토리지 장치에 저장된 데이터를 캐싱하기 위한 캐시 메모리를 더 포함하고, 상기 컨트롤러는 상기 복수의 스토리지 장치에 저장된 데이터를 상기 캐시 메모리에 로드할 수 있다.
상기 스토리지 장치는 제1 스토리지 장치 및 상기 제1 스토리지 장치보다 낮은 데이터 입출력 레이트를 갖는 제2 스토리지 장치를 포함하고, 상기 제1 스토리지 장치에 저장되는 데이터의 라이프타임은 상기 제2 스토리지 장치에 저장되는 라이프타임보다 짧을 수 있다.
상기 컨트롤러는 상기 제2 스토리지 장치에 저장된 데이터 중 단위 시간 당 데이터 액세스 빈도수가 미리 정해진 임계값을 초과한 경우, 상기 임계값을 초과한 데이터 액세스 빈도수를 갖는 데이터를 상기 캐시 메모리에 로드할 수 있다.
상기 과제를 해결하기 위한 본 발명의 스토리지 컨트롤러의 동작 방법의 일 실시예는, 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하고, 상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것을 포함할 수 있다.
상기 라이프타임 정보는 상기 데이터의 변경 주기를 그 길이에 따라 N(단, N은 자연수)개의 등급으로 분류한 라이프타임 등급을 포함하고, 상기 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것은 하나의 메모리 블록에 서로 같은 등급의 라이프타임을 갖는 데이터만을 저장하는 것을 포함할 수 있다.
상기 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것은 상기 플래시 메모리에 저장된 데이터의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 상기 데이터의 저장 위치를 다시 결정하는 것을 더 포함할 수 있다.
상기 스토리지 컨트롤러의 동작 방법은, 상기 호스트 인터페이스를 통해 수신된 데이터의 라이프타임을 직접 평가하여, 상기 데이터 배치 유닛에 송신하는 것을 더 포함할 수 있다.
상기 스토리지 컨트롤러의 동작 방법은, 상기 데이터와 상기 라이프타임 정보의 연관 관계(relationship)를 나타내는 메타 데이터를 관리하는 것을 더 포함할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 2는 본 발명의 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 3은 도 2의 컨트롤러를 설명하기 위한 개략도이다.
도 4는 데이터의 라이프타임을 개념적으로 설명하기 위한 도면이다.
도 5는 서로 다른 라이프타임을 갖는 데이터를 스토리지 장치에 배치하는 것을 개념적으로 설명하기 위한 도면이다.
도 6 및 7은 서로 다른 라이프타임을 갖는 데이터를 플래시 메모리 블록에 배치하는 것을 개념적으로 설명하기 위한 도면이다.
도 8은 및 도 9는 데이터의 라이프타임을 메타 데이터로 관리하는 것을 설명하기 위한 도면이다.
도 10은 동일하거나 유사한 범위의 라이프타임에 따라 데이터를 플래시 메모리 블록에 배치한 것을 나타낸 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 12는 도 11에 도시된 데이터 저장 시스템에서 서로 다른 라이프타임을 갖는 데이터를 스토리지 장치에 배치하는 것을 개념적으로 설명하기 위한 도면이다.
도 13은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 14는 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 15은 도 14의 컨트롤러를 설명하기 위한 개략도이다.
도 16은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 17은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 18은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 19는 본 발명의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 20은 본 발명의 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 21은 본 발명의 또 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 22는 스토리지 장치에 저장된 데이터를 캐싱하는 것을 개념적으로 설명하기 위한 도면이다.
도 23은 본 발명의 또 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다. 제1 소자가 제2 소자에 "직접 연결" 또는 "직접 접속"된다는 것은, 제1 소자와 제2 소자 사이에 다른 소자가 개재되지 않음을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 1을 참조하면, 데이터 저장 시스템(1)은 호스트(100)와 스토리지 장치(200)를 포함한다.
호스트(100)는 데이터 입출력 요청을 스토리지 장치(200)에 송신한다. 상기 데이터 입출력 요청은 데이터의 라이트(write), 리드(read), 이레이즈(erase) 등의 데이터 입출력 명령을 포함할 수 있다. 호스트(100)는 스토리지 장치(200)에 대한 상기 데이터 입출력 명령을 사용자로부터 입력받거나, 상기 호스트(100)에서 실행되는 소프트웨어로부터 수신할 수 있다. 본 발명의 몇몇의 실시예에서, 호스트(100)는 예를 들면 데스크탑을 비롯한 개인용 컴퓨터, 서버 컴퓨터, 노트북을 비롯한 휴대용 컴퓨터 및 셀룰러폰, 스마트폰, 태블릿, MP3, PMP(portable multimedia player), PDA(Personal Digital Assistant), 디지털 카메라, 캠코더 등을 비롯한 휴대용 장치를 포함할 수 있다.
스토리지 장치(200)는 컨트롤러(210) 및 플래시 메모리(220)를 포함한다. 본 발명의 몇몇의 실시예에서, 스토리지 장치(200)는 SSD(Solid State Disk)일 수 있다. 컨트롤러(210)는 플래시 메모리(220)를 전반적으로 제어한다. 플래시 메모리(220)는 컨트롤러(210)의 제어에 따라, 데이터 입출력 동작, 예컨대, 라이트, 리드, 이레이즈 동작 등을 수행할 수 있다.
플래시 메모리(220)는 컨트롤러(210)로부터 제공받은 데이터를 메모리 셀에 저장할 수 있다. 구체적으로, 플래시 메모리(220)는 데이터를 저장하는 복수개의 셀 어레이를 포함할 수 있다. 셀 어레이는 복수개의 플레인(PL1~PLi)(단, i는 자연수)을 포함할 수 있다. 플레인(PL1~PLi)은 복수개의 블록(BLK11~BLnm)(단, n, m은 자연수)을 포함하며, 블록(BLK11~BLKnm)은 복수개의 페이지(PAGE1~PAGEk)(단, k는 자연수)를 포함한다. 블록(BLK11~BLKnm)은 이레이즈 명령어를 수행하는 단위, 즉 이레이즈 동작이 동시에 이루어지는 단위일 수 있다. 페이지(PAGE1~PAGEk)는 프로그램 및 리드 명령어를 수행하는 단위, 즉, 프로그램 및 리드 동작이 동시에 이루어지는 단위일 수 있다. 본 발명의 몇몇의 실시예에서, 플래시 메모리(220)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), FRAM(Ferroelectrics Random Access Memory), PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory)를 포함하는 비휘발성 메모리 장치일 수 있다. 도 1에서는 예시적으로 낸드(NAND) 플래시 메모리 장치를 도시하였으나, 이에 한정된 것은 아니다.
도 2는 본 발명의 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이고, 도 3은 도 2의 컨트롤러를 설명하기 위한 개략도이다.
도 2를 참조하면, 데이터 저장 시스템(2)에서 호스트(100)는 호스트 메모리(110) 및 라이프타임(lifetime) 평가 유닛(120)을 포함할 수 있다. 호스트 메모리(110)는 스토리지 장치(200)에 입출력 요청을 하기 위한 데이터를 저장하기 위한 메모리 장치로서, 예를 들어, DRAM(Dynamic Ramdom Access Memory), SRAM(Static Random Access Memory) 또는 DDR SDRAM (Double Data Rate Synchronous DRAM)일 수 있다. 라이프타임 평가 유닛(120)은 호스트 메모리(110)로부터 입출력 요청된 데이터를 수신하여, 수신된 데이터의 라이프타임을 평가한다. 여기서, 라이프타임이란 데이터의 변경 주기를 나타내는 것으로서, 구체적으로, 데이터의 생성 시점을 기준으로 데이터가 소멸되거나 제거(삭제)되거나 무효화되는 시점까지의 시간 간격을 말하는데, 이에 대해서는 도 4를 참조하여 자세하게 후술하도록 한다. 호스트(100)는 입출력 요청된 데이터와 상기 데이터의 라이프타임 정보를 스토리지 장치(200)에 송신한다. 이하에서는 설명의 편의를 위해 입출력 요청을 데이터를 스토리지 장치(200)에 저장하기 위한 저장 요청으로 설명하지만, 본 발명에서 데이터 입출력 요청은 이에 한정되지 않는다.
스토리지 장치(200)의 컨트롤러(210)는 호스트(100)로부터 저장 요청된 데이터와, 상기 데이터의 라이프타임 정보를 수신하고, 수신된 라이프타임 정보에 기초하여, 플래시 메모리(220) 내에서 데이터를 저장할 저장 위치를 결정한다. 도 3을 같이 참조하면, 컨트롤러(210)는 프로세서(211), 호스트 인터페이스(212), 데이터 배치 유닛(214), 로컬 메모리(215), 플래시 메모리 인터페이스(216)를 포함한다. 컨트롤러(210)의 구성요소들(211, 212, 214, 215, 216)은 버스(bus)를 통해서 서로 전기적으로 연결될 수 있다.
호스트 인터페이스(212)는 컨트롤러(210)를 포함한 스토리지 장치(200)와 호스트(100) 사이의 인터페이스를 수행할 수 있다. 특히, 호스트 인터페이스(212)는 호스트(100)로부터 저장 요청된 데이터 및 상기 데이터의 라이프타임 정보를 컨트롤러(210)에 제공해 줄 수 있다. 그 외, 호스트 인터페이스(212)는 예를 들어, 호스트(100)로부터 로지컬 어드레스(logical address), 커맨드 래치 인에이블(CLE) 시그널, 어드레스 래치 인에이블(ALE), 레디 및 비지(R/B) 시그널, 칩 인에이블(CE) 시그널 등도 컨트롤러로 제공해 줄 수 있다. 또한, 호스트 인터페이스(212)는 미리 결정된 프로토콜에 의해서 호스트와 통신할 수 있다. 예를 들어, 미리 결정된 프로토콜은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등일 수 있으나, 이에 한정되지 않는다.
로컬 메모리(215)는 롬(ROM) 또는 램(RAM)을 포함할 수 있다. 롬(ROM)은 스토리지 장치(200)의 구동 펌웨어 코드를 저장할 수 있으며, 본 발명의 범위가 이에 한정되는 것은 아니다. 펌웨어 코드는 롬 이외에 비휘발성 메모리, 예를 들면, 플래시 메모리(220)에 저장될 수도 있다. 한편, 램은 버퍼(buffer)역할을 하는 메모리로, 호스트 인터페이스(212)를 통하여 입력되는 각종 명령어 또는 변수들을 저장할 수 있다. 그리고 플래시 메모리(220)로 입력 또는 플래시 메모리(220)로부터 출력되는 데이터들을 저장할 수 있다. 그리고, 플래시 메모리(220)로 입력되고 출력되는 데이터, 각종 파라미터 및 변수들을 저장할 수 있다.
프로세서(211)는 회로, 로직, 코드 또는 이들의 조합으로 구현가능하며, 컨트롤러(210)를 포함한 스토리지 장치(200)의 동작을 전반적으로 제어한다. 스토리지 장치(200)에 전원이 인가되면, 프로세서(211)는 롬에 저장된 스토리지 장치(200) 동작을 위한 펌웨어를 램 상에서 구동시킴으로써 스토리지 장치(200)의 전반적인 동작을 제어할 수 있다. 또한, 프로세서(211)는 호스트 인터페이스(212)를 통해 수신되는 명령어를 해석하고, 해석 결과에 따라 플래시 메모리(220)의 전반적인 동작을 제어할 수 있다. 또한, 프로세서(211)는 어드레스 맵핑 테이블을 사용하여 호스트(100)로부터 제공된 논리 주소를 플래시 메모리(220)에 대응되는 물리적 주소로 매핑할 수 있다.
플래시 메모리 인터페이스(216)는 컨트롤러(210)와 플래시 메모리(220) 사이에 신호를 교신할 수 있다. 플래시 메모리 인터페이스(216)를 통해서 프로세서(211)가 요구하는 명령어가 플래시 메모리(220)로 제공될 수 있으며, 또한 컨트롤러(210)로부터 플래시 메모리(220)로 데이터가 전송될 수 있다. 또한, 플래시 메모리(220)로부터 출력되는 데이터는 플래시 메모리 인터페이스(216)를 통해서 컨트롤러(210)로 제공된다.
데이터 배치 유닛(214)은 호스트 인터페이스(212)를 통해 수신된 데이터 및 상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리(220) 내에서 상기 데이터의 저장 위치를 결정한다. 데이터 배치 유닛(214)의 자세한 내용은 도 6 및 도 7과 관련하여 후술하도록 한다.
도 4는 데이터의 라이프타임을 개념적으로 설명하기 위한 도면이다.
도 4를 참조하면, 시간 흐름에 따라 서로 다른 세 가지 라이프타임을 갖는 데이터의 변경 주기가 도시되어 있다. 먼저, 제1 라이프타임 등급(GRADE 1)에 해당하는 데이터는 생성된(CREATED) 후 삭제되거나(DELETED) 수정되기까지의(MODIFIED) 시간 간격이 t1, t2, t3, t4이다. 그리고, 제2 라이프타임 등급(GRADE 2)에 해당하는 데이터는 생성된 후 삭제되거나 수정되기까지의 시간 간격이 t5, t7이며, 이들 t5, t7은 시간 간격 t1, t2, t3, t4보다 길다. 이로부터, 제2 라이프타임 등급에 해당하는 데이터는 제1 라이프타임 등급에 해당하는 데이터보다 변경 주기가 길다는 점을 알 수 있다. 즉, 제2 라이프타임 등급에 해당하는 데이터의 라이프타임은 제1 라이프타임 등급에 해당하는 데이터의 라이프타임보다 길다. 데이터가 수정된 후 삭제되기까지의 시간 간격 t6 역시 라이프타임의 예로서 시간 간격 t1, t2, t3, t4보다 길다는 점을 알 수 있다. 마찬가지로, 제3 라이프등급(GRADE 3)에 해당하는 데이터는 생성된후 삭제되기따지의 시간 간격이 t8이며, t8은 시간 간격 t5, t6, t7보다도 길다. 이로부터, 제3 라이프타임 등급에 해당하는 데이터는 제2 라이프타임 등급에 해당하는 데이터보다 변경 주기가 길다는 점을 알 수 있다. 즉, 제3 라이프타임 등급에 해당하는 데이터의 라이프타임은 제2 라이프타임 등급에 해당하는 데이터의 라이프타임보다 길다.
데이터의 변경 주기를 나타내는 라이프타임은, 변경 주기를 그 길이에 따라 N(단, N은 자연수)개의 등급으로 분류하여 라이프타임 등급으로서 표현할 수 있다. 이에 따라, 데이터의 변경 주기가 완전히 동일하지는 않지만 어느 정도 유사한 길이의 라이프타임을 갖는 데이터들을 하나의 그룹으로 묶을 수 있다. 예를 들어, 약 1 시간마다 변경되는 데이터와 약 1시간 10분마다 변경되는 데이터의 라이프타임을 제1 등급으로, 약 4 시간마다 변경되는 데이터와 약 4시간 40분마다 변경되는 데이터의 라이프타임을 제2 등급으로, 약 10 시간마다 변경되는 데이터의 라이프타임을 제3 등급으로 분류할 수 있다. 이와 같이 분류함으로써, 제1 등급의 라이프타임은 제2 등급의 라이프타임보다 짧고, 제3 등급의 라이프타임은 제1 등급의 라이프타임보다 길다는 등의 비교를 할 수 있다.
본 발명의 몇몇의 실시예에서, 라이프타임 등급은 1 내지 N의 절대 등급으로 정해질 수 있다. 예를 들어, 제1 등급의 라이프타임은 데이터의 변경 주기가 0 초 내지 1 분인 경우, 제2 등급의 라이프타임은 데이터의 변경 주기가 1 분 내지 10 분인 경우, 제3 등급의 라이프타임은 데이터의 변경 주기가 10 분 내지 1 시간인 경우로 정해질 수 있다. 본 발명의 몇몇의 실시예에서, 이러한 라이프타임 등급은 데이터의 라이프타임이 길 수록 높은 등급으로 정해질 수 있으나, 이에 한정되는 것은 아니다. 또한, 라이프타임 등급은 플래시 메모리 내에 영속적으로 존재하는 데이터에 대한 영속적 라이프타임 등급을 더 포함할 수 있고, 변경 주기를 측정할 수 없는 데이터에 대한 측정 불가 등급도 더 포함할 수 있다. 한편, 본 발명의 몇몇의 실시예에서, 라이프타임 등급은 다른 데이터의 라이프타임 등급을 기준으로 상대적으로 정해질 수도 있다. 예를 들어, 특정 값, 예컨대 3 등급으로 정해진 제1 데이터에 대해, "제1 데이터보다 높은 등급", "제1 데이터와 동일한 등급" 또는 "제1 데이터보다 낮은 등급"으로 정해질 수 있다. 절대 등급이든 상대 등급이든 라이프타임의 값은 숫자, 문자, 도형 또는 이들의 조합으로 다양하게 표현될 수 있으며, 이에 한정되지 않는다.
도 5는 서로 다른 라이프타임을 갖는 데이터를 스토리지 장치에 배치하는 것을 개념적으로 설명하기 위한 도면이다.
도 5를 참조하면, 복수의 데이터들은 예를 들어, 고 내구성 스토리지(HIGH ENDURANCE STORAGE)(20), 중 내구성 스토리지(MID ENDURANCE STORAGE)(22) 및 저 내구성 스토리지(LOW ENDURANCE STORAGE)(24)에 저장될 수 있다. 여기서, 고 내구성 스토리지(20)는 중 내구성 스토리지(22) 및 저 내구성 스토리지(24)에 비해 그 수명이 길다. 그리고 중 내구성 스토리지(22)는 고 내구성 스토리지(20)보다 수명이 짧지만, 저 내구성 스토리지(24)에 비해 수명이 길다. 스토리지 장치의 수명에 영향을 미치는 요인은 여러가지가 있을 수 있으나, 예를 들면, 스토리지 장치에 포함되는 메모리 셀의 수명에 영향을 받을 수 있다. 이 경우, 메모리 셀의 수명, 즉, 메모리 셀의 내구성(endurance)은 메모리 셀의 최대 데이터 입출력 횟수, 예컨대, 최대 이레이즈 가능 횟수를 기준으로 측정될 수 있다. 이러한 통계적 수치에 근거하여, 메모리 셀 간, 메모리 셀을 포함하는 메모리 모듈 간, 그리고 메모리 모듈을 포함하는 플래시 메모리 또는 스토리지 장치 간 내구성을 객관적으로 비교할 수 있다.
이로부터, 제1 그룹(GROUP I) 데이터들의 라이프타임이 제2 그룹(GROUP II) 데이터들의 라이프타임보다 짧고, 제2 그룹 데이터들의 라이프타임이 제3 그룹(GROUP III) 데이터들의 라이프타임보다 짧은 경우, 제1 그룹 데이터들은 고 내구성 스토리지(20)에 저장되고, 제2 그룹 데이터들은 중 내구성 스토리지(22)에 저장되고, 제3 그룹 데이터들을 저 내구성 스토리지(24)에 저장될 수 있다. 이와 같이, 라이프타임을 고려하여 데이터들을 여러 스토리지 장치에 분산 저장함으로써, 라이프타임이 짧아 자주 변경되어 I/O 횟수를 현저하게 증가시키는 데이터들은 내구성이 높은 스토리지 장치에, 라이프타임이 길어 자주 변경되지 않아 I/O 횟수를 크게 증가시키지 않는 데이터들은 내구성이 낮은 스토리지 장치로 배치할 수 있다. 이러한 데이터 배치로 인해, I/O 횟수가 스토리지 장치의 내구성에 따라 분산되어 스토리지 장치의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 6 및 7은 서로 다른 라이프타임을 갖는 데이터를 플래시 메모리 블록에 배치하는 것을 개념적으로 설명하기 위한 도면이다.
데이터 배치 유닛(214)은 호스트 인터페이스(212)를 통해 수신된 데이터 및 상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리(220) 내에서 상기 데이터의 저장 위치를 결정한다. 앞서 설명한 바와 같이, 라이프타임 정보는 데이터의 변경 주기를 그 길이에 따라 여러 등급으로 분류된 라이프타임 등급을 포함할 수 있는데, 데이터 배치 유닛(214)은 플래시 메모리(220)의 하나의 메모리 블록에 서로 같은 등급의 라이프타임을 갖는 데이터만을 저장할 수 있다. 도 4를 참조하면, 예를 들어 블록(BLK42)에는 'G12'의 라이프타임을 갖는 데이터(D5), 'G7'의 라이프타임을 갖는 데이터(D6), 'G3'의 라이프타임을 갖는 데이터(D7), 'G2'의 라이프타임을 갖는 데이터(D8)가 저장되어 있다. 이 경우, 라이프타임이 짧은 데이터(D7, D8)가 무효 데이터가 되었다고 가정하면, 블록(BLK42)에는 아직 유효한 데이터(D5, D6)가 존재하기 때문에 바로 블록(BLK42)을 이레이즈하거나 블록(BLK42)에 대해 가비지 컬렉션(garbage collection)을 수행할 수 없고, 이를 수행하기 위해서는 잔존하는 데이터(D5, D6)를 다른 블록으로 이동시켜야 한다. 즉, 추가적인 I/O가 필요하게 된다.
이와 대조적으로, 도 5를 참조하면, 예를 들어 블록(BLK54)에는 'G1'의 라이프타임을 갖는 데이터(D4), 'G2'의 라이프타임을 갖는 데이터(D8), 'G1'의 라이프타임을 갖는 데이터(D12), 'G2'의 라이프타임을 갖는 데이터(D16)가 저장되어 있다. 즉, 데이터 배치 유닛(214)이 'G1'과 'G2'를 동일한 등급으로 취급하여 하나의 메모리 블록(BLK54)에 배치한 결과이다. 이 경우, 비슷한 시기에 모든 데이터(D4, D8, D12, D16)가 무효 데이터로 되면, 바로 블록(BLK54)을 이레이즈하거나 블록(BLK54)에 대해 가비지 컬렉션(garbage collection)을 수행할 수 있다. 본 발명의 몇몇의 실시예에서, 가비지 컬렉션은 라이프타임이 짧은 블록에 대해 우선적으로 수행될 수 있다. 따라서, I/O 횟수를 감소시켜 스토리지 장치의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 8은 및 도 9는 데이터의 라이프타임을 메타 데이터로 관리하는 것을 설명하기 위한 도면이다.
도 8 및 도 9를 참조하면, 컨트롤러(210)는 데이터와 상기 라이프타임 정보의 연관 관계(relationship)를 나타내는 메타 데이터를 관리하는 메타 데이터 관리 유닛을 더 포함할 수 있다. 예를 들어, 논리 어드레스가 '1'로 식별되고, 물리적 어드레스가 '19'로 식별되는 데이터 블록에는 데이터 '00101110'이 저장되며, 그 라이프타임은 '7'인 경우를 가정하자. 본 발명의 몇몇의 실시예에서, 라이프타임은 플래시 메모리(220)의 논리 어드레스 및 물리적 어드레스를 매핑하는 매핑 테이블(218)의 레코드로부터 링크로 연결된 (라이프타임, 데이터) 레코드로서 저장될 수 있다. 한편, 본 발명의 몇몇의 실시예에서, 라이프타임은 플래시 메모리(220)의 논리 어드레스 및 물리적 어드레스를 매핑하는 매핑 테이블(219)의 레코드의 일부로서 저장될 수 있고, 상기 레코드는 상기 라이프타임에 대응하는 데이터를 지시하는 링크를 포함할 수 있다. 메타 데이터 관리 유닛은 이러한 자료 구조 또는 데이터베이스를 이용하여 메타 데이터를 관리할 수 있다.
도 10은 동일하거나 유사한 범위의 라이프타임에 따라 데이터를 플래시 메모리 블록에 배치한 것을 나타낸 도면이다.
도 10을 참조하면, '1'로 식별되는 블록에는 라이프타임이 '1'인 4 개의 데이터가 저장되어 있고, '3'으로 식별되는 블록에는 라이프타임이 '0'인 4 개의 데이터가 저장되어 있다. 한편, '2'로 식별되는 블록에는 라이프타임이 '3' 또는 '4'인 4 개의 데이터가 저장되어 있고, '4'으로 식별되는 블록에는 라이프타임이 '8' 또는 '9'인 4 개의 데이터가 저장되어 있다. 본 발명의 몇몇의 실시예에서, 데이터 배치 유닛(214)은 데이터의 라이프타임이 짧을수록, 상기 플래시 메모리 내에서 웨어 레벨링 카운트(wear-leveling count)의 값이 작은 위치를 저장 위치로 결정할 수 있다. 즉, 웨어 레벨, 다시 말해서 마모 정도가 적은 위치에 라이프타임이 짧아 I/O가 빈번하게 발생하는 데이터를 배치하여 마모의 진행 속도를 늦출 수 있다.
한편, 데이터 배치 유닛(214)은 플래시 메모리(220)에 저장된 데이터의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 데이터의 저장 위치를 다시 결정할 수 있다. 구체적으로, 플래시 메모리(220)가 제1 메모리 블록 및 제2 메모리 블록을 포함하고, 제1 메모리 블록에 저장된 데이터의 라이프타임 정보가 변경된 경우, 이 데이터를 제2 메모리 블록으로 이전(migrate)할 수 있다. 본 발명의 몇몇의 실시예에서, 상기 변경된 라이프타임 정보는 호스트(100)로부터 수신될 수 있다. 이와 같이 데이터를 배치함으로써, 데이터에 대한 I/O 횟수를 감소시켜 플래시 메모리 셀 또는 플래시 메모리의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 11은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이고, 도 12는 도 11에 도시된 데이터 저장 시스템에서 서로 다른 라이프타임을 갖는 데이터를 스토리지 장치에 배치하는 것을 개념적으로 설명하기 위한 도면이다.
도 11에 도시된 데이터 저장 시스템(3)이 도 2의 데이터 저장 시스템(2)과 다른 점은 플래시 메모리(220)가 복수의 메모리 모듈(221, 222, 223)을 포함한다는 점이다. 본 발명의 몇몇의 실시예에서, 제1 메모리 모듈(221)은 SLC(Single Level Cell) 메모리 모듈일 수 있고, 제2 메모리 모듈(222)은 MLC(Multiple Level Cell) 메모리 모듈일 수 있다. 여기서, MLC는 TLC(Triple Level Cell) 또는 QLC(Quad Level Cell)를 포함할 수 있다. SLC와 MLC 간에는 내구성의 차이가 존재하는데, 일반적으로 SLC 메모리가 MLC 메모리보다 내구성이 높아 수명이 길다. 이러한 메모리 모듈의 내구성은 메모리 셀의 최대 데이터 입출력 횟수를 기준으로 측정될 수 있다.
데이터 배치 유닛(214)은 호스트(100)로부터 수신한 라이프정보에 기초하여, 제1 메모리 모듈(221) 및 제2 메모리 모듈(222) 중에서 데이터의 저장 위치를 결정할 수 있다. 이 때, 데이터 배치 유닛(214)은 상기 데이터의 라이프타임이 미리 정해진 임계값을 초과하는 경우 제2 메모리 모듈(222) 즉, MLC 메모리 모듈을 상기 데이터의 저장 위치로 결정하고, 상기 데이터의 라이프타임이 미리 정해진 임계값 이하인 경우 제1 메모리 모듈(221) 즉, SLC 메모리 모듈을 상기 데이터의 저장 위치로 결정할 수 있다. 이와 같이 라이프타임이 짧은 데이터들을 내구성이 상대적으로 높은 SLC 메모리 모듈에 저장하고, 라이프타임이 긴 데이터들을 내구성이 상대적으로 낮은 MLC 메모리 모듈에 저장함으로써, 플래시 메모리에서 발생되는 I/O를 메모리 모듈의 특성에 따라 분배할 수 있다. 이와 같이 데이터를 배치함으로써, 데이터에 대한 I/O 횟수를 감소시켜 플래시 메모리 셀 또는 플래시 메모리의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 12를 참조하면, 라이프타임이 상대적으로 짧은 데이터는 MLC 메모리를 채용한 제1 타입 스토리지 장치(26)에 저장되고, 라이프타임이 상대적으로 긴 데이터는 TLC 메모리를 채용한 제2 타입 스토리지 장치(28)에 저장될 수 있다. MLC와 TLC 간에는 내구성의 차이가 존재하는데, 일반적으로 MLC 메모리가 TLC 메모리보다 내구성이 높아 수명이 길다. 이러한 메모리 모듈의 내구성은 메모리 셀의 최대 데이터 입출력 횟수를 기준으로 측정될 수 있다. 이와 같이 라이프타임이 짧은 데이터들을 내구성이 상대적으로 높은 MLC 메모리를 채용한 스토리지 장치에 저장하고, 라이프타임이 긴 데이터들을 내구성이 상대적으로 낮은 TLC 메모리를 채용한 스토리지 장치에 저장함으로써, 플래시 메모리에서 발생되는 I/O를 스토리지 장치의 특성에 따라 분배할 수 있다. 이와 같이 데이터를 배치함으로써, 데이터에 대한 I/O 횟수를 감소시켜 스토리지 장치의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 13은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 13에 도시된 데이터 저장 시스템(4)이 도 2의 데이터 저장 시스템(2)과 다른 점은, 데이터 저장 시스템(4)은 스토리지 장치(200) 대신 복수의 스토리지 장치(321, 322, 323, 324)를 포함하는 스토리지 시스템(300)을 채용하고 있다는 점이다.
도 13의 데이터 저장 시스템(4)에서, 스토리지 시스템(300)은 컨트롤러(310) 및 복수의 스토리지 장치(321, 322, 323, 324)를 포함한다. 컨트롤러(310)는 복수의 스토리지 장치(321, 322, 323, 324)를 제어하며, 호스트(100)로부터 저장 요청된 데이터를 복수의 스토리지 장치(321, 322, 323, 324)에 배치시키는 데이터 배치 유닛(314)을 포함한다.
여기서, 복수의 스토리지 장치(321, 322, 323, 324)의 내구성은 서로 차이가 있을 수 있다. 본 발명의 몇몇의 실시예에서, 제1 스토리지 장치(321)는 제1 타입의 메모리 셀을 포함하고, 상기 제1 타입의 메모리 셀은 SLC일 수 있다. 그리고 제2 스토리지 장치(322)는 제2 타입의 메모리 셀을 포함하고, 상기 제2 타입의 메모리 셀은 MLC일 수 있다. 이에 따라, 스토리지 노드에 사용되는 메모리 셀의 수명을 고려할 때, 제1 스토리지 장치(321)는 제2 스토리지 장치(322)보다 높은 내구성을 가질 수 있다. 본 발명의 다양한 실시예에서, 복수의 스토리지 장치(321, 322, 323, 324) 사이의 내구성의 차이는 메모리 셀 이외의 여러가지 요인에 의해 결정될 수도 있다.
데이터 배치 유닛(314)은 호스트(100)로부터 저장 요청된 데이터 및 상기 데이터의 라이프타임 정보에 기초하여, 복수의 스토리지 장치(321, 322, 323, 324) 중에서 상기 데이터의 저장 위치를 결정한다. 이 경우, 데이터 배치 유닛(314)은 제1 스토리지 장치(321)에 저장되는 데이터의 라이프타임은 제2 스토리지 장치(322)에 저장되는 라이프타임보다 짧도록 데이터를 배치할 수 있다. 예를 들어, 스토리지 장치(321)에는 라이프타임이 제1 등급에 해당하는 데이터들을 배치하고, 스토리지 장치(322)에는 라이프타임이 제2 등급에 해당하는 데이터들을 배치하고, 스토리지 장치(323)에는 라이프타임이 제3 등급에 해당하는 데이터들을 배치하고, 스토리지 장치(324)에는 라이프타임이 제4 등급에 해당하는 데이터들을 배치할 수 있다. 이와 같이 라이프타임이 짧은 데이터들을 내구성이 상대적으로 높은 스토리지 장치에 저장하고, 라이프타임이 긴 데이터들을 내구성이 상대적으로 낮은 스토리지 장치에 저장함으로써, 플래시 메모리에서 발생되는 I/O를 스토리지 장치의 특성에 따라 분배할 수 있다. 이와 같이 데이터를 배치함으로써, 데이터에 대한 I/O 횟수를 감소시켜 스토리지 장치의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 14는 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이고, 도 15은 도 14의 컨트롤러를 설명하기 위한 개략도이다.
도 14에 도시된 데이터 저장 시스템(5)이 도 2의 데이터 저장 시스템(2)과 다른 점은, 호스트(400)가 저장 요청된 데이터를 스토리지 장치(500)에 전송하고, 스토리지 장치(500)가 자체적으로 상기 데이터의 라이프타임을 평가하여 데이터를 배치한다는 점이다.
데이터 저장 시스템(5)에서 호스트(400)는 스토리지 장치(500)에 입출력 요청을 하기 위한 데이터를 저장하는 호스트 메모리(410)를 포함할 수 있다. 한편, 스토리지 장치(500)는 컨트롤러(510) 및 플래시 메모리(520)를 포함할 수 있고, 컨트롤러(510)는 라이프타임 평가 유닛(513)을 포함할 수 있다. 도 15를 같이 참조하면, 라이프타임 평가 유닛(513)은 컨트롤러(510)의 다른 구성요소, 즉, 프로세서(511), 호스트 인터페이스(512), 데이터 배치 유닛(514), 로컬 메모리(515) 및 플래시 메모리 인터페이스(516)와 버스를 통해서 서로 전기적으로 연결될 수 있다. 라이프타임 평가 유닛(513)은 호스트 인터페이스(512)를 통해 수신된 데이터의 라이프타임을 직접 평가하고, 평가된 라이프타임을 데이터 배치 유닛(514)에 송신한다. 라이프타임의 평가는 호스트(100)의 라이프타임 평가 유닛(213)과 관련하여 상술한 바와 같이 수행될 수 있다. 본 발명의 몇몇의 실시예에서, 라이프타임 평가 유닛(513)은 스냅샷(snapshot), 클론(clone) 또는 중복제거(deduplication) 작업에 따라 데이터의 라이프타임을 재평가할 수 있다. 또한, 본 발명의 몇몇의 실시예에서, 라이프타임 평가 유닛(513)은 데이터의 라이프타임 평가시 휴리스틱 기법(Heuristic method)을 이용할 수 있다.
도 16은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 16에 도시된 데이터 저장 시스템(6)이 도 14의 데이터 저장 시스템(5)과 다른 점은 플래시 메모리(520)가 복수의 메모리 모듈(521, 522, 523)을 포함한다는 점이다. 본 발명의 몇몇의 실시예에서, 제1 메모리 모듈(521)은 SLC(Single Level Cell) 메모리 모듈일 수 있고, 제2 메모리 모듈(522)은 MLC(Multiple Level Cell) 메모리 모듈일 수 있다. 여기서, MLC는 TLC(Triple Level Cell) 또는 QLC(Quad Level Cell)를 포함할 수 있다.
데이터 배치 유닛(514)은 라이프타임 평가 유닛(513)으로부터 수신한 라이프정보에 기초하여, 제1 메모리 모듈(521) 및 제2 메모리 모듈(522) 중에서 데이터의 저장 위치를 결정할 수 있다. 이 때, 데이터 배치 유닛(514)은 상기 데이터의 라이프타임이 미리 정해진 임계값을 초과하는 경우 제2 메모리 모듈(522) 즉, MLC 메모리 모듈을 상기 데이터의 저장 위치로 결정하고, 상기 데이터의 라이프타임이 미리 정해진 임계값 이하인 경우 제1 메모리 모듈(521) 즉, SLC 메모리 모듈을 상기 데이터의 저장 위치로 결정할 수 있다. 이와 같이 라이프타임이 짧은 데이터들을 내구성이 상대적으로 높은 SLC 메모리 모듈에 저장하고, 라이프타임이 긴 데이터들을 내구성이 상대적으로 낮은 MLC 메모리 모듈에 저장함으로써, 플래시 메모리에서 발생되는 I/O를 메모리 모듈의 특성에 따라 분배할 수 있다. 이와 같이 데이터를 배치함으로써, 데이터에 대한 I/O 횟수를 감소시켜 플래시 메모리 셀 또는 플래시 메모리의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 17은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 17에 도시된 데이터 저장 시스템(7)이 도 14의 데이터 저장 시스템(5)과 다른 점은, 데이터 저장 시스템(7)은 스토리지 장치(500) 대신 복수의 스토리지 장치(621, 622, 623, 624)를 포함하는 스토리지 시스템(600)을 채용하고 있다는 점이다.
도 17의 데이터 저장 시스템(7)에서, 스토리지 시스템(600)은 컨트롤러(610) 및 복수의 스토리지 장치(621, 622, 623, 624)를 포함한다. 컨트롤러(610)는 복수의 스토리지 장치(621, 622, 623, 624)를 제어하며, 호스트(400)로부터 저장 요청된 데이터의 라이프타임을 평가하는 라이프타임 평가 유닛(613) 및 상기 라이프타임에 기초하여 데이터를 복수의 스토리지 장치(621, 622, 623, 624)에 배치시키는 데이터 배치 유닛(314)을 포함한다.
상술한 바와 같이, 여기서, 복수의 스토리지 장치(521, 522, 523, 524)의 내구성은, 스토리지 장치에 사용된 메모리 셀 타입 및 기타 여러가지 요인에 의해 서로 차이가 있을 수 있다. 데이터 배치 유닛(614)은 호스트(400)로부터 저장 요청된 데이터 및 라이프타임 평가 유닛(613)에 의해 평가된 상기 데이터의 라이프타임 정보에 기초하여, 복수의 스토리지 장치(621, 622, 623, 624) 중에서 상기 데이터의 저장 위치를 결정한다. 라이프타임이 짧은 데이터들을 내구성이 상대적으로 높은 스토리지 장치에 저장하고, 라이프타임이 긴 데이터들을 내구성이 상대적으로 낮은 스토리지 장치에 저장함으로써, 플래시 메모리에서 발생되는 I/O를 스토리지 장치의 특성에 따라 분배할 수 있다. 이와 같이 데이터를 배치함으로써, 데이터에 대한 I/O 횟수를 감소시켜 스토리지 장치의 성능을 향상시키고 그 수명을 연장할 수 있다.
도 18은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템을 설명하기 위한 개략도이다.
도 18을 참조하면, 데이터 저장 시스템(8)은 호스트(700) 및 스토리지 시스템(800)을 포함한다.
데이터 저장 시스템(8)이 앞선 실시예들의 데이터 저장 시스템과 다른 점은 호스트(700)가 호스트 메모리(710), 라이프타임 평가 유닛(720) 뿐만 아니라 데이터 배치 유닛(730)을 더 포함한다는 점이다. 즉, 호스트(700)가 데이터와 상기 데이터의 저장 위치를 스토리지 시스템(800)으로 전송하여, 스토리지 시스템(800)으로 하여금 데이터를 특정 위치에 저장하도록 한다.
도 2와 관련하여 앞서 설명한 바와 같이, 호스트 메모리(710)는 스토리지 시스템(800)에 입출력 요청을 하기 위한 데이터를 저장하기 위한 메모리 장치이고, 라이프타임 평가 유닛(720)은 호스트 메모리(710)로부터 입출력 요청된 데이터를 수신하여, 수신된 데이터의 라이프타임을 평가한다. 데이터 배치 유닛(730)은 라이프타임 평가 유닛(720)으로부터 수신된 라이프타임 정보에 기초하여, 스토리지 시스템(800) 내에서 상기 데이터의 저장 위치를 결정한다. 본 실시예에서, 스토리지 시스템(800)은 앞서 설명한 스토리지 장치이거나, 복수의 스토리지 장치가 포함된 스토리지 시스템일 수 있다.
도 19는 본 발명의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 19를 참조하면, 본 발명의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법은 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임 정보를 수신하고(S900), 상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것(S910)을 포함한다. 또한, 상기 방법은, 상기 데이터를 결정된 저장 위치에 저장하거나, 상기 저장 위치에 저장되어 있는 데이터를 갱신하고(S920), 라이프타임 정보 및 어드레스 매핑 정보와 같은 메타 데이터를 갱신하는 것(S930)을 더 포함할 수 있다.
도 20은 본 발명의 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 20을 참조하면, 본 발명의 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법은 플래시 메모리에 저장된 데이터의 라이프타임 갱신 요청을 수신하고(S1000), 새로운 라이프타임 정보에 따라 기존의 라이프타임 정보를 갱신하는 것(S1010)을 포함할 수 있다. 상기 방법은, 라이프타임 정보를 갱신한 결과, 상기 데이터의 라이프타임 등급이 변경되어 다른 저장 위치로 이전되어야 하는지 판단하고(S1020), 데이터의 이전이 필요한 경우 플래시 메모리 내에서 새로운 저장 위치를 선정하고(S1030), 새로운 저장 위치로 데이터를 이전하고(S1040), 라이프타임 정보 및 어드레스 매핑 정보와 같은 메타 데이터를 갱신하는 것(S1050)을 더 포함할 수 있다.
도 21은 본 발명의 또 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 21을 참조하면, 본 발명의 또 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법은 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임 정보를 수신하고(S1100), 라이프타임 값을 미리 정해진 임계값과 비교하고(S1110), 라이프타임 값이 임계값을 초과하지 않는 경우 해당 데이터를 고내구성 스토리지에 저장하고(S1120), 라이프타임 값이 임계값을 초과하는 경우 해당 데이터를 저내구성 스토리지에 저장하는 것(S1130)을 포함한다.
도 22는 스토리지 장치에 저장된 데이터를 캐싱하는 것을 개념적으로 설명하기 위한 도면이고, 도 23은 본 발명의 또 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법을 설명하기 위한 흐름도이다.
도 22를 참조하면, 앞서 설명한 본 발명의 다양한 실시예의 스토리지 시스템은 복수의 스토리지 장치에 저장된 데이터를 캐싱하기 위한 캐시 메모리(30)를 더 포함할 수 있고, 스토리지 시스템의 컨트롤러는 상기 복수의 스토리지 장치에 저장된 데이터를 캐시 메모리(30)에 로드할 수 있다.
복수의 스토리지 장치는 고속 스토리지 장치(32) 및 저속 스토리지 장치(34)를 포함할 수 있다. 예를 들어, 저속 스토리지 장치(34)는 고속 스토리지 장치(32)보다 낮은 데이터 입출력 레이트를 가길 수 있고, 저속 스토리지 장치(34)에 저장되는 라이프타임은 고속 스토리지 장치(32)에 저장되는 라이프타임보다 짧을 수 있다. 컨트롤러는 저속 스토리지 장치(34)에 저장된 데이터 중 단위 시간 당 데이터 액세스 빈도수가 미리 정해진 임계값을 초과한 경우, 상기 임계값을 초과한 데이터 액세스 빈도수를 갖는 데이터를 상기 캐시 메모리에 로드하여 캐싱을 수행할 수 있다.
도 23을 참조하면, 본 발명의 또 다른 실시예에 따른 스토리지 컨트롤러의 동작 방법은 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임 정보를 수신하고(S1200), 라이프타임 값을 미리 정해진 제1 임계값과 비교하고(S1210), 라이프타임 값이 제1 임계값을 초과하지 않는 경우 해당 데이터를 고내구성 스토리지에 저장하고(S1220), 라이프타임 값이 제1 임계값을 초과하는 경우 해당 데이터를 저내구성 스토리지에 저장하는 것(S1230)을 포함한다. 다음으로, 저내구성 스토리지에 저장된 데이터의 액세스 빈도수를 미리 정해진 제2 임계값과 비교하고(S1240), 상기 액세스 빈도수가 제2 임계값을 초과하는 경우 해당 데이터를 캐시에 추가 저장하는 것(S1250)을 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1-8: 데이터 저장 시스템 100, 400, 700: 호스트
110, 410, 710: 호스트 메모리 120, 720: 라이프타임 평가 유닛
730: 데이터 배치 유닛 20: 고 내구성 스토리지
22: 중 내구성 스토리지 24: 저 내구성 스토리지
26: 제1 타입 스토리지 장치 28: 제2 타입 스토리지 장치
200, 500: 스토리지 장치 210, 310, 510, 610: 컨트롤러
211, 511: 프로세서 212, 512: 호스트 인터페이스
213, 513, 613: 라이프타임 평가 유닛
214, 314, 514, 614: 데이터 배치 유닛
215, 515: 로컬 메모리 216, 516: 플래시 메모리 인터페이스
218, 219: 메타 데이터 관리 테이블
220, 520: 플래시 메모리 221, 521: 제1 메모리 모듈
222, 522: 제2 메모리 모듈 223, 523: 제3 메모리 모듈
30: 캐시 메모리 32: 고속 스토리지 장치
34: 저속 스토리지 장치 300, 600, 800: 스토리지 시스템
321, 621: 제1 스토리지 장치 322, 622: 제2 스토리지 장치
323, 623: 제3 스토리지 장치 324, 624: 제4 스토리지 장치

Claims (20)

  1. 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및
    상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함하고,
    상기 데이터 배치 유닛은 상기 플래시 메모리에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 상기 플래시 메모리에 저장된 데이터 조각의 저장 위치를 다시 결정하고,
    상기 플래시 메모리는 제1 메모리 블록 및 제2 메모리 블록을 포함하고,
    상기 제1 메모리 블록에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 제1 메모리 블록에 저장된 데이터 조각을 상기 제2 메모리 블록으로 이전(migrate)하는 스토리지 컨트롤러.
  2. 제1항에 있어서,
    상기 라이프타임 정보는 상기 데이터의 변경 주기를 그 길이에 따라 N(단, N은 자연수)개의 등급으로 분류한 라이프타임 등급을 포함하고,
    상기 데이터 배치 유닛은, 상기 데이터 중 서로 같은 등급의 라이프타임을 갖는 데이터 조각만을 하나의 메모리 블록에 저장하도록 결정하는 스토리지 컨트롤러.
  3. 제1항에 있어서,
    상기 데이터 배치 유닛은, 상기 데이터 중 라이프타임이 짧은 데이터 조각일수록, 상기 플래시 메모리 내에서 웨어 레벨링 카운트(wear-leveling count)의 값이 상대적으로 작은 위치를 상기 저장 위치로 결정하는 스토리지 컨트롤러.
  4. 제1항에 있어서,
    상기 플래시 메모리는 제1 저장 위치 및 제2 저장 위치를 포함하고,
    상기 제1 저장 위치의 라이프타임이 상기 제2 저장 위치의 라이프타임보다 짧은 경우, 가비지 컬렉션(garbage collection) 동작은 상기 제1 저장 위치에 대해 우선적으로 수행되는 스토리지 컨트롤러.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 호스트를 통해 수신된 데이터의 라이프타임을 평가하여, 상기 데이터 배치 유닛에 송신하는 라이프타임 평가 유닛을 더 포함하는 스토리지 컨트롤러.
  8. SLC(Single Level Cell) 메모리 모듈 및 MLC(Multiple Level Cell) 메모리 모듈을 포함하는 플래시 메모리;
    상기 플래시 메모리와 인터페이스하는 플래시 메모리 인터페이스;
    호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및
    상기 데이터의 라이프타임 정보에 기초하여, 상기 SLC 메모리 모듈 및 상기 MLC 메모리 모듈 중에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함하고,
    상기 데이터 배치 유닛은 상기 플래시 메모리에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 상기 플래시 메모리에 저장된 데이터 조각의 저장 위치를 다시 결정하고,
    상기 플래시 메모리의 제1 메모리 블록에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 제1 메모리 블록에 저장된 데이터 조각을 상기 플래시 메모리의 제2 메모리 블록으로 이전(migrate)하는 스토리지 장치.
  9. 제8항에 있어서,
    상기 데이터 배치 유닛은 상기 데이터 중 제1 데이터 조각의 라이프타임이 미리 정해진 임계값을 초과하는 경우 상기 MLC 메모리 모듈을 상기 제1 데이터 조각의 저장 위치로 결정하는 스토리지 장치.
  10. 제8항에 있어서,
    상기 MLC 메모리 모듈의 내구성(endurance)은 상기 SLC 메모리 모듈의 내구성보다 높은 스토리지 장치.
  11. 제10항에 있어서,
    상기 MLC 메모리 모듈에 저장되는 데이터의 라이프타임은 상기 SLC 메모리 모듈에 저장되는 라이프타임보다 짧은 스토리지 장치.
  12. 복수의 스토리지 장치; 및
    상기 복수의 스토리지 장치를 제어하는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하는 호스트 인터페이스; 및
    상기 데이터의 라이프타임 정보에 기초하여, 상기 복수의 스토리지 장치 중에서 상기 데이터의 저장 위치를 결정하는 데이터 배치 유닛을 포함하고,
    상기 데이터 배치 유닛은 상기 스토리지 장치에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 상기 스토리지 장치에 저장된 데이터 조각의 저장 위치를 다시 결정하고,
    상기 스토리지 장치는 제1 메모리 블록 및 제2 메모리 블록을 포함하고,
    상기 제1 메모리 블록에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 제1 메모리 블록에 저장된 데이터 조각을 상기 제2 메모리 블록으로 이전(migrate)하는 스토리지 시스템.
  13. 제12항에 있어서,
    상기 복수의 스토리지 장치에 저장된 데이터를 캐싱하기 위한 캐시 메모리를 더 포함하고,
    상기 컨트롤러는 상기 복수의 스토리지 장치에 저장된 데이터를 상기 캐시 메모리에 로드하는 스토리지 시스템.
  14. 제13항에 있어서,
    상기 복수의 스토리지 장치는 제1 스토리지 장치 및 상기 제1 스토리지 장치보다 낮은 데이터 입출력 레이트를 갖는 제2 스토리지 장치를 포함하고,
    상기 데이터 중 상기 제1 스토리지 장치에 저장되는 데이터 조각의 라이프타임은 상기 데이터 중 상기 제2 스토리지 장치에 저장되는 데이터 조각의 라이프타임보다 짧은 스토리지 시스템.
  15. 제14항에 있어서,
    상기 컨트롤러는 상기 제2 스토리지 장치에 저장된 데이터 조각이 단위 시간 당 데이터 액세스 빈도수가 미리 정해진 임계값을 초과한 경우, 상기 임계값을 초과한 데이터 액세스 빈도수를 갖는 데이터 조각을 상기 캐시 메모리에 로드하는 스토리지 시스템.
  16. 호스트로부터 저장 요청된 데이터 및 상기 데이터의 변경 주기를 나타내는 라이프타임(lifetime) 정보를 수신하고,
    상기 데이터의 라이프타임 정보에 기초하여, 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것을 포함하고,
    상기 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것은 상기 플래시 메모리에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 변경된 라이프타임 정보에 기초하여, 상기 플래시 메모리에 저장된 데이터의 저장 위치를 다시 결정하는 것을 더 포함하고,
    상기 변경된 라이프타임 정보에 기초하여, 상기 플래시 메모리에 저장된 데이터의 저장 위치를 다시 결정하는 것은, 상기 플래시 메모리의 제1 메모리 블록에 저장된 데이터 조각의 라이프타임 정보가 변경된 경우, 상기 제1 메모리 블록에 저장된 데이터 조각을 상기 플래시 메모리의 제2 메모리 블록으로 이전(migrate)하는 것을 포함하는 스토리지 컨트롤러의 동작 방법.
  17. 제16항에 있어서,
    상기 라이프타임 정보는 상기 데이터의 변경 주기를 그 길이에 따라 N(단, N은 자연수)개의 등급으로 분류한 라이프타임 등급을 포함하고,
    상기 플래시 메모리 내에서 상기 데이터의 저장 위치를 결정하는 것은, 상기 데이터 중 서로 같은 등급의 라이프타임을 갖는 데이터 조각만을 하나의 메모리 블록에 저장하는 것을 포함하는 스토리지 컨트롤러의 동작 방법.
  18. 삭제
  19. 제16항에 있어서,
    상기 수신된 데이터의 라이프타임을 평가하는 것을 더 포함하는 스토리지 컨트롤러의 동작 방법.
  20. 제16항에 있어서,
    상기 데이터와 상기 라이프타임 정보의 연관 관계(relationship)를 나타내는 메타 데이터를 관리하는 것을 더 포함하는 스토리지 컨트롤러의 동작 방법.
KR1020140044809A 2014-04-15 2014-04-15 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 KR102289919B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020140044809A KR102289919B1 (ko) 2014-04-15 2014-04-15 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US14/682,200 US9846542B2 (en) 2014-04-15 2015-04-09 Storage controller, storage device, storage system and method of operating the storage controller
CN201510178460.8A CN105045523B (zh) 2014-04-15 2015-04-15 存储控制器、存储装置和系统及操作存储控制器的方法
EP15163662.8A EP2940691B1 (en) 2014-04-15 2015-04-15 Storage controller, storage device, storage system and method of operating the storage controller
JP2015083681A JP6568387B2 (ja) 2014-04-15 2015-04-15 ストレージコントローラ及びストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140044809A KR102289919B1 (ko) 2014-04-15 2014-04-15 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150118778A KR20150118778A (ko) 2015-10-23
KR102289919B1 true KR102289919B1 (ko) 2021-08-12

Family

ID=52997243

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140044809A KR102289919B1 (ko) 2014-04-15 2014-04-15 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법

Country Status (5)

Country Link
US (1) US9846542B2 (ko)
EP (1) EP2940691B1 (ko)
JP (1) JP6568387B2 (ko)
KR (1) KR102289919B1 (ko)
CN (1) CN105045523B (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880780B2 (en) * 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
KR20170091832A (ko) * 2016-02-01 2017-08-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
JP6805501B2 (ja) * 2016-02-16 2020-12-23 日本電気株式会社 ストレージ装置
US10110255B2 (en) 2016-04-27 2018-10-23 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
US9910772B2 (en) * 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN107391296B (zh) 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
JP6870246B2 (ja) 2016-09-07 2021-05-12 富士通株式会社 ストレージ装置、及びストレージ制御装置
KR102545698B1 (ko) * 2016-09-27 2023-06-19 삼성전자주식회사 데이터 저장 시스템
CN106713440B (zh) * 2016-12-16 2019-12-13 东软集团股份有限公司 一种数据传输方法及设备
US10430308B2 (en) * 2016-12-20 2019-10-01 Samsung Electronics Co., Ltd. Method of estimating remaining life of solid state drive device
WO2018189858A1 (ja) * 2017-04-13 2018-10-18 株式会社日立製作所 ストレージシステム
WO2019021415A1 (ja) * 2017-07-27 2019-01-31 株式会社日立製作所 ストレージシステム及びデータ格納制御方法
JP7030463B2 (ja) 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
TWI655541B (zh) * 2017-10-24 2019-04-01 宇瞻科技股份有限公司 延長固態硬碟壽命之方法
JP6805110B2 (ja) * 2017-11-06 2020-12-23 株式会社日立製作所 ストレージシステム及びその制御方法
US10776090B2 (en) * 2018-01-16 2020-09-15 International Business Machines Corporation Reducing overhead of data conversation between Java and non-Java representations
KR102656172B1 (ko) * 2018-03-28 2024-04-12 삼성전자주식회사 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법
JP6761002B2 (ja) * 2018-07-23 2020-09-23 ファナック株式会社 データ管理装置、データ管理プログラム及びデータ管理方法
CN109445681B (zh) * 2018-08-27 2021-05-11 华为技术有限公司 数据的存储方法、装置和存储系统
US10802726B2 (en) 2018-10-29 2020-10-13 Microsoft Technology Licensing, Llc Optimized placement of data contained in a garbage collected storage system
KR20200052150A (ko) 2018-11-06 2020-05-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10963185B2 (en) * 2018-11-20 2021-03-30 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
US11237742B2 (en) * 2018-12-06 2022-02-01 SK Hynix Inc. Apparatus and method for controlling data stored in memory system
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
US20210011623A1 (en) * 2019-07-10 2021-01-14 Pure Storage, Inc. Generating tags for data allocation
JP2021033945A (ja) 2019-08-29 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
JP2021043678A (ja) 2019-09-10 2021-03-18 キオクシア株式会社 メモリシステム及び方法
WO2021150952A1 (en) * 2020-01-23 2021-07-29 Spero Devices, Inc. Data flow architecture for processing with memory computation modules
CN111506262B (zh) * 2020-03-25 2021-12-28 华为技术有限公司 一种存储系统、文件存储和读取方法及终端设备
CN113934360B (zh) * 2020-06-29 2024-04-12 戴尔产品有限公司 多存储设备生命周期管理系统
JP2022030146A (ja) 2020-08-06 2022-02-18 キオクシア株式会社 メモリシステムおよび書き込み制御方法
KR20220060385A (ko) 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
TWI811674B (zh) * 2021-05-06 2023-08-11 大陸商北京集創北方科技股份有限公司 快閃記憶體的操作方法、系統單晶片及資訊處理裝置
US20230054002A1 (en) * 2021-08-18 2023-02-23 Samsung Electronics Co., Ltd. Lifecycle-aware persistent storage
KR20230068197A (ko) * 2021-11-10 2023-05-17 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
US20240012580A1 (en) * 2022-07-06 2024-01-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for reclaim unit formation and selection in a storage device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
US20080215800A1 (en) * 2000-01-06 2008-09-04 Super Talent Electronics, Inc. Hybrid SSD Using A Combination of SLC and MLC Flash Memory Arrays
JP2009048613A (ja) 2007-08-14 2009-03-05 Samsung Electronics Co Ltd ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
JP2011186563A (ja) 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP2011203916A (ja) 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
US20120317337A1 (en) 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6903972B2 (en) * 2003-07-30 2005-06-07 M-Systems Flash Disk Pioneers Ltd. Different methods applied for archiving data according to their desired lifetime
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US9052826B2 (en) * 2006-07-28 2015-06-09 Condusiv Technologies Corporation Selecting storage locations for storing data based on storage location attributes and data usage statistics
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
CN101430634A (zh) * 2007-11-06 2009-05-13 孙国仲 存储装置
CN101625902B (zh) * 2008-07-10 2013-07-10 深圳市朗科科技股份有限公司 半导体存储介质的寿命获取方法、系统及装置
KR20100012938A (ko) 2008-07-30 2010-02-09 주식회사 하이닉스반도체 웨어 레벨링을 수행하는 반도체 스토리지 시스템 및 그제어 방법
CN101398749B (zh) * 2008-11-13 2011-04-13 成都市华为赛门铁克科技有限公司 一种静态损耗均衡的方法、装置和系统
TWI410976B (zh) 2008-11-18 2013-10-01 Lite On It Corp 固態儲存媒體可靠度的測試方法
US8095765B2 (en) 2009-03-04 2012-01-10 Micron Technology, Inc. Memory block management
US8090905B2 (en) 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
CN102473140B (zh) * 2009-07-17 2015-05-13 株式会社东芝 存储器管理装置
JP5322978B2 (ja) * 2010-03-04 2013-10-23 株式会社東芝 情報処理装置及び方法
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
KR101180288B1 (ko) 2010-05-11 2012-09-07 한국과학기술원 하이브리드 메모리와 ssd 로 구성된 시스템에서의 읽기 캐시 및 쓰기 캐시 관리 방법
KR101418457B1 (ko) 2010-06-10 2014-07-10 에스티에스반도체통신 주식회사 고체 상태 디스크
US8737136B2 (en) * 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
US9348696B2 (en) * 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US20120084504A1 (en) * 2010-10-01 2012-04-05 John Colgrove Dynamic raid geometries in an ssd environment
US11232022B2 (en) 2010-10-29 2022-01-25 Samsung Electronics Co., Ltd. Memory system, data storage device, user device and data management method thereof having a data management information matching determination
KR101747791B1 (ko) 2010-10-29 2017-06-16 삼성전자주식회사 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법
KR101861184B1 (ko) * 2011-11-02 2018-05-28 삼성전자주식회사 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치
US9176862B2 (en) 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
US8935203B1 (en) * 2012-03-29 2015-01-13 Amazon Technologies, Inc. Environment-sensitive distributed data management
US8832234B1 (en) * 2012-03-29 2014-09-09 Amazon Technologies, Inc. Distributed data storage controller
US8930364B1 (en) * 2012-03-29 2015-01-06 Amazon Technologies, Inc. Intelligent data integration
US8918392B1 (en) * 2012-03-29 2014-12-23 Amazon Technologies, Inc. Data storage mapping and management
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
CN103677654B (zh) * 2012-09-24 2018-03-23 联想(北京)有限公司 一种存储数据的方法及电子设备
WO2015011825A1 (ja) * 2013-07-26 2015-01-29 株式会社日立製作所 ストレージシステムおよびストレージシステムの制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215800A1 (en) * 2000-01-06 2008-09-04 Super Talent Electronics, Inc. Hybrid SSD Using A Combination of SLC and MLC Flash Memory Arrays
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP2009048613A (ja) 2007-08-14 2009-03-05 Samsung Electronics Co Ltd ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
JP2011186563A (ja) 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP2011203916A (ja) 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
US20120317337A1 (en) 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use

Also Published As

Publication number Publication date
JP6568387B2 (ja) 2019-08-28
US20150293713A1 (en) 2015-10-15
CN105045523A (zh) 2015-11-11
EP2940691B1 (en) 2020-08-12
EP2940691A1 (en) 2015-11-04
CN105045523B (zh) 2020-11-24
US9846542B2 (en) 2017-12-19
KR20150118778A (ko) 2015-10-23
JP2015204118A (ja) 2015-11-16

Similar Documents

Publication Publication Date Title
KR102289919B1 (ko) 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US11086537B2 (en) Method and system to perform urgency level garbage collection based on write history of memory blocks
KR102114256B1 (ko) 플래시 메모리 디바이스 액세스 방법 및 장치
KR102254392B1 (ko) 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
KR102211865B1 (ko) 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
KR102533072B1 (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US20180089074A1 (en) Techniques to Manage Key-Value Storage at a Memory or Storage Device
US20130073798A1 (en) Flash memory device and data management method
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
US20140281173A1 (en) Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same
US20100030948A1 (en) Solid state storage system with data attribute wear leveling and method of controlling the solid state storage system
US11157402B2 (en) Apparatus and method for managing valid data in memory system
KR20120081351A (ko) Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
JP2021528783A (ja) Nand動作レイテンシの制御
US9384124B2 (en) Data storage device, memory control method, and electronic device with data storage device
US20230273878A1 (en) Storage device for classifying data based on stream class number, storage system, and operating method thereof
KR20160119607A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN115390747A (zh) 存储设备及其操作方法
CN111309642B (zh) 一种存储器及其控制方法与存储系统
KR20220111566A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN114115709A (zh) 存储器控制器及其操作方法
US20230195648A1 (en) Methods of operating host device and storage device, and electronic device
CN111143230B (zh) 数据整并方法、存储器存储装置及存储器控制电路单元

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