KR20160139864A - 비휘발성 메모리 시스템 - Google Patents

비휘발성 메모리 시스템 Download PDF

Info

Publication number
KR20160139864A
KR20160139864A KR1020150075693A KR20150075693A KR20160139864A KR 20160139864 A KR20160139864 A KR 20160139864A KR 1020150075693 A KR1020150075693 A KR 1020150075693A KR 20150075693 A KR20150075693 A KR 20150075693A KR 20160139864 A KR20160139864 A KR 20160139864A
Authority
KR
South Korea
Prior art keywords
data
file system
memory device
logical address
nonvolatile memory
Prior art date
Application number
KR1020150075693A
Other languages
English (en)
Other versions
KR101718713B1 (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 KR1020150075693A priority Critical patent/KR101718713B1/ko
Priority to PCT/KR2016/004272 priority patent/WO2016195242A1/ko
Publication of KR20160139864A publication Critical patent/KR20160139864A/ko
Application granted granted Critical
Publication of KR101718713B1 publication Critical patent/KR101718713B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비휘발성 메모리 시스템은 낸드 플래시 메모리와 낸드 플래시 메모리를 제어하는 낸드 컨트롤러를 구비한 비휘발성 메모리 장치 및 파일 시스템과 파일 시스템으로부터 커맨드를 입력받아 비휘발성 메모리 장치에 제공하는 호스트 컨트롤러를 구비한 호스트 장치를 포함한다. 이 때, 파일 시스템은 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 유효 데이터들과 무효 데이터들로 구분하고 유효 데이터들을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행함으로써, 비휘발성 메모리 장치의 물리적 어드레스 상에서 유효 데이터들을 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 수행한다.

Description

비휘발성 메모리 시스템 {NON-VOLATILE MEMORY SYSTEM}
본 발명은 반도체 메모리 시스템에 관한 것이다. 보다 상세하게는, 본 발명은 비휘발성 메모리 장치(예를 들어, 낸드 플래시 메모리(NAND flash memory) 장치 등)를 포함하는 비휘발성 메모리 시스템에 관한 것이다.
반도체 메모리 장치는 전원이 공급되지 않는 상태에서 데이터를 보존할 수 있는지에 따라 휘발성 메모리 장치와 비휘발성 메모리 장치로 구분될 수 있다. 최근에는, 반도체 메모리 장치의 소형화, 대용량화 및 저비용화 추세에 따라, 비휘발성 메모리 장치 중에서 낸드 플래시 메모리 장치가 소형화, 대용량화 및 저비용화에 적합하여 널리 사용되고 있다. 일반적으로, 낸드 플래시 메모리 장치는 페이지(page) 단위로 기입(write) 동작과 독출(read) 동작을 수행하고, 블록(block) 단위로 소거(erase) 동작을 수행하기 때문에, 호스트 장치의 파일 시스템(file system)을 지원하기 위한 플래시 변환 레이어(flash translation layer; FTL)를 낸드 컨트롤러에 구비하고, 플래시 변환 레이어를 이용하여 기입 동작, 독출 동작, 소거 동작, 병합(merge) 동작, 카피백(copyback) 동작, 컴팩션(compaction) 동작, 가비지 콜렉션(garbage collection) 동작(또는, 리클레임(reclaim) 동작), 웨어 레벨링(wear leveling) 동작 등을 수행한다.
한편, 플래시 변환 레이어는 논리적 어드레스(logical address)와 물리적 어드레스(physical address) 사이의 맵핑 정보가 저장된 맵핑 테이블(mapping table)을 이용하여 어드레스 맵핑(address mapping) 동작을 수행한다. 그러나, 낸드 플래시 메모리 장치가 오랜 시간 동안 동작함에 따라 파일 시스템이 인식하는 데이터 정보(예를 들어, 유효 데이터들과 무효 데이터들에 대한 정보 등)가 맵핑 테이블에 정확하게 반영되지 않아서(즉, 플래시 변환 레이어가 인식하는 데이터 정보와 파일 시스템이 인식하는 데이터 정보가 불일치하게 됨) 가비지 콜렉션 동작 등을 위한 프리 블록(free block)이 부족해지는 더티 상태(dirty status)가 심화되고, 낸드 플래시 메모리 장치의 물리적 어드레스 상에서 사용 접근 빈도가 높은 핫(hot) 데이터들과 사용 접근 빈도가 낮은 콜드(cold) 데이터들이 혼재되어 기입됨에 따라 가비지 콜렉션 동작의 빈도가 증가하기 때문에, 낸드 플래시 메모리 장치의 동작 성능 저하(예를 들어, 기입 속도 저하 등)가 발생하고 있다.
본 발명의 일 목적은 호스트 장치의 파일 시스템으로 하여금 비휘발성 메모리 장치(예를 들어, 낸드 플래시 메모리 장치 등)의 더티 상태를 효과적으로 해소하고, 비휘발성 메모리 장치에서 수행되는 가비지 콜렉션 동작의 빈도를 감소시킴으로써 비휘발성 메모리 장치의 전반적인 동작 성능을 향상시키는 비휘발성 메모리 시스템을 제공하는 것이다. 다만, 본 발명의 목적은 상술한 목적으로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 비휘발성 메모리 시스템은 적어도 하나 이상의 낸드 플래시 메모리와 상기 낸드 플래시 메모리를 제어하는 낸드 컨트롤러를 구비한 비휘발성 메모리 장치 및 파일 시스템과 상기 파일 시스템으로부터 커맨드를 입력받아 상기 비휘발성 메모리 장치에 제공하는 호스트 컨트롤러를 구비한 호스트 장치를 포함할 수 있다. 이 때, 상기 파일 시스템은 상기 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 유효 데이터들과 무효 데이터들로 구분하고 상기 유효 데이터들을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입(rewrite) 동작을 수행함으로써, 상기 비휘발성 메모리 장치의 물리적 어드레스 상에서 상기 유효 데이터들을 인접하게 배치시키는 파일 시스템 주도 단편화(defragmentation) 동작을 수행할 수 있다.
일 실시예에 의하면, 상기 파일 시스템 주도 단편화 동작이 수행되면, 상기 파일 시스템은 맵핑 테이블에서 상기 무효 데이터들에 대한 언맵핑 상태를 보장하는 소거(erase) 커맨드 또는 트림(trim) 커맨드를 상기 호스트 컨트롤러를 통해 상기 비휘발성 메모리 장치에 제공할 수 있다.
일 실시예에 의하면, 상기 재기입 동작이 수행될 때, 상기 파일 시스템은 상기 논리적 어드레스 상에서 상기 유효 데이터들을 핫(hot) 데이터들과 콜드(cold) 데이터들로 구분한 후, 상기 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하고, 상기 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입할 수 있다.
일 실시예에 의하면, 상기 파일 시스템은 상기 유효 데이터들을 파일 종류에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분할 수 있다.
일 실시예에 의하면, 상기 파일 시스템은 상기 유효 데이터들을 사용 접근 빈도에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분할 수 있다.
일 실시예에 의하면, 상기 파일 시스템은 상기 유효 데이터들을 파일 용량에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분할 수 있다.
일 실시예에 의하면, 상기 파일 시스템 주도 단편화 동작은 기 설정된 주기마다 수행되거나, 사용자 지정 시간에 수행되거나, 또는 상기 비휘발성 메모리 장치에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때 수행될 수 있다.
본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 비휘발성 메모리 시스템은 적어도 하나 이상의 낸드 플래시 메모리와 상기 낸드 플래시 메모리를 제어하는 낸드 컨트롤러를 구비한 비휘발성 메모리 장치 및 파일 시스템과 상기 파일 시스템으로부터 커맨드를 입력받아 상기 비휘발성 메모리 장치에 제공하는 호스트 컨트롤러를 구비한 호스트 장치를 포함할 수 있다. 이 때, 상기 파일 시스템은 상기 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 핫(hot) 데이터들과 콜드(cold) 데이터들로 구분하고 상기 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하며 상기 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입(rewrite) 동작을 수행함으로써, 상기 비휘발성 메모리 장치의 물리적 어드레스 상에서 상기 핫 데이터들과 상기 콜드 데이터들을 각각 인접하게 배치시키는 파일 시스템 주도 단편화(defragmentation) 동작을 수행할 수 있다.
일 실시예에 의하면, 상기 재기입 동작이 수행될 때, 상기 파일 시스템은 상기 논리적 어드레스 상에서 상기 핫 데이터들을 유효 핫 데이터들과 무효 핫 데이터들로 구분한 후, 상기 유효 핫 데이터들만 상기 제1 새로운 논리적 어드레스 영역에 기입할 수 있다.
일 실시예에 의하면, 상기 재기입 동작을 수행할 때, 상기 파일 시스템은 상기 논리적 어드레스 상에서 상기 콜드 데이터들을 유효 콜드 데이터들과 무효 콜드 데이터들로 구분한 후, 상기 유효 콜드 데이터들만 상기 제2 새로운 논리적 어드레스 영역에 기입할 수 있다.
일 실시예에 의하면, 상기 파일 시스템 주도 단편화 동작이 수행되면, 상기 파일 시스템은 맵핑 테이블에서 상기 무효 핫 데이터들과 상기 무효 콜드 데이터들에 대한 언맵핑 상태를 보장하는 소거(erase) 커맨드 또는 트림(trim) 커맨드를 상기 호스트 컨트롤러를 통해 상기 비휘발성 메모리 장치에 제공할 수 있다.
일 실시예에 의하면, 상기 파일 시스템은 상기 데이터들을 파일 종류에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분할 수 있다.
일 실시예에 의하면, 상기 파일 시스템은 상기 데이터들을 사용 접근 빈도에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분할 수 있다.
일 실시예에 의하면, 상기 파일 시스템은 상기 데이터들을 파일 용량에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분할 수 있다.
일 실시예에 의하면, 상기 파일 시스템 주도 단편화 동작은 기 설정된 주기마다 수행되거나, 사용자 지정 시간에 수행되거나, 또는 상기 비휘발성 메모리 장치에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때 수행될 수 있다.
본 발명의 실시예들에 따른 비휘발성 메모리 시스템은 호스트 장치의 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 유효 데이터들과 무효 데이터들로 구분하고, 유효 데이터들을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행함으로써, 비휘발성 메모리 장치의 물리적 어드레스 상에서 유효 데이터들(즉, 호스트 장치의 파일 시스템에 의해 정확하게 판단된 실제 유효 데이터들)을 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 수행할 수 있다. 그 결과, 비휘발성 메모리 장치(예를 들어, 낸드 플래시 메모리 장치 등)의 더티 상태가 효과적으로 해소되어 비휘발성 메모리 장치의 전반적인 동작 성능이 향상될 수 있다.
본 발명의 실시예들에 따른 비휘발성 메모리 시스템은 호스트 장치의 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 핫 데이터들과 콜드 데이터들로 구분하고, 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하며, 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행함으로써, 비휘발성 메모리 장치의 물리적 어드레스 상에서 핫 데이터들과 콜드 데이터들을 각각 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 수행할 수 있다. 그 결과, 비휘발성 메모리 장치에서 수행되는 가비지 콜렉션 동작의 빈도가 감소되어 비휘발성 메모리 장치의 전반적인 동작 성능이 향상될 수 있다.
다만, 본 발명의 효과는 상술한 효과들로 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 시스템을 나타내는 블록도이다.
도 2는 도 1의 비휘발성 메모리 시스템에서 대상 데이터들이 호스트 장치의 파일 시스템에 의해 새로운 논리적 어드레스 영역에 연속적으로 기입되는 일 예를 나타내는 도면이다.
도 3은 도 1의 비휘발성 메모리 시스템에서 대상 데이터들이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라 비휘발성 메모리 장치의 물리적 어드레스 상에서 대상 데이터들이 인접하게 배치되는 일 예를 나타내는 도면이다.
도 4는 도 1의 비휘발성 메모리 시스템에서 호스트 장치의 파일 시스템이 비휘발성 메모리 장치의 물리적 어드레스 상에서 유효 데이터들을 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 나타내는 순서도이다.
도 5는 도 1의 비휘발성 메모리 시스템에서 유효 데이터들이 호스트 장치의 파일 시스템에 의해 새로운 논리적 어드레스 영역에 연속적으로 기입되는 일 예를 나타내는 도면이다.
도 6은 도 1의 비휘발성 메모리 시스템에서 유효 데이터들이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라 비휘발성 메모리 장치의 물리적 어드레스 상에서 유효 데이터들이 인접하게 배치되는 일 예를 나타내는 도면이다.
도 7은 도 1의 비휘발성 메모리 시스템에서 호스트 장치의 파일 시스템이 비휘발성 메모리 장치의 물리적 어드레스 상에서 핫 데이터들과 콜드 데이터들을 각각 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 나타내는 순서도이다.
도 8은 도 1의 비휘발성 메모리 시스템에서 핫 데이터들(또는, 콜드 데이터들)이 호스트 장치의 파일 시스템에 의해 새로운 논리적 어드레스 영역에 연속적으로 기입되는 일 예를 나타내는 도면이다.
도 9는 도 1의 비휘발성 메모리 시스템에서 핫 데이터들(또는, 콜드 데이터들)이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라 비휘발성 메모리 장치의 물리적 어드레스 상에서 핫 데이터들과 콜드 데이터들이 각각 인접하게 배치되는 일 예를 나타내는 도면이다.
도 10 및 도 11은 도 1의 비휘발성 메모리 시스템에 의해 수행되는 파일 시스템 주도 단편화 동작의 다른 예를 나타내는 도면들이다.
도 12는 도 1의 비휘발성 메모리 시스템이 파일 시스템 주도 단편화 동작의 수행 여부를 결정하는 과정을 나타내는 순서도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 시스템을 나타내는 블록도이고, 도 2는 도 1의 비휘발성 메모리 시스템에서 대상 데이터들이 호스트 장치의 파일 시스템에 의해 새로운 논리적 어드레스 영역에 연속적으로 기입되는 일 예를 나타내는 도면이며, 도 3은 도 1의 비휘발성 메모리 시스템에서 대상 데이터들이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라 비휘발성 메모리 장치의 물리적 어드레스 상에서 대상 데이터들이 인접하게 배치되는 일 예를 나타내는 도면이다.
도 1 내지 도 3을 참조하면, 비휘발성 메모리 시스템(100)은 비휘발성 메모리 장치(120) 및 호스트 장치(140)를 포함할 수 있다. 예를 들어, 비휘발성 메모리 장치(120)는 낸드 플래시 메모리 장치일 수 있다. 한편, 비휘발성 메모리 장치(120)는 솔리드 스테이트 드라이브(solid state drive; SSD), 시큐어 디지털 카드(secure digital card; SDCARD), 유니버셜 플래시 스토리지(universal flash storage; UFS), 임베디드 멀티미디어 카드(embedded multi media card; EMMC), CF 카드(compact flash card), 메모리 스틱(memory stick), XD 픽쳐 카드(XD picture card) 등으로 구현될 수 있으나 그에 한정되지는 않는다.
비휘발성 메모리 장치(120)는 낸드 플래시 메모리(122) 및 낸드 플래시 메모리(122)를 제어하는 낸드 컨트롤러를 포함할 수 있다. 도 1에서는 비휘발성 메모리 장치(120)가 1개의 낸드 플래시 메모리(122)를 포함하는 것으로 도시되어 있으나, 이것은 설명의 편의를 위한 것으로서, 비휘발성 메모리 장치(120)는 복수 개의 낸드 플래시 메모리(122)들을 포함할 수 있다. 호스트 장치(140)는 파일 시스템(142) 및 파일 시스템(142)로부터 커맨드를 입력받아 비휘발성 메모리 장치(120)에 제공하는 호스트 컨트롤러(144)를 구비할 수 있다. 일반적으로, 비휘발성 메모리 장치(120)(예를 들어, 낸드 플래시 메모리 장치)는 낸드 플래시 메모리들(122)의 물리적인 구조에 기인하여 독출 동작과 기입 동작은 페이지 단위로 수행하고 소거 동작은 블록 단위로 수행한다. 따라서, 비휘발성 메모리 장치(120)는 랜덤 액세스 메모리 장치(예를 들어, 디램(dynamic random access memory; DRAM) 장치 등)에 비해 기입 동작, 독출 동작 및 소거 동작을 수행함에 있어 많은 제약을 가지고 있다. 그러므로, 비휘발성 메모리 장치(120)는 파일 시스템을 지원하기 위해 플래시 변환 레이어(FTL)를 낸드 컨트롤러(124)에 구비하고, 플래시 변환 레이어(FTL)를 이용하여 독출 동작, 기입 동작, 소거 동작, 병합 동작, 카피백 동작, 컴팩션 동작, 가비지 콜렉션 동작(또는, 리클레임 동작), 웨어 레벨링 동작 등을 수행한다. 다시 말하면, 낸드 컨트롤러(124)는 소프트웨어적으로 구현된 플래시 변환 레이어(FTL)를 실행함으로써 상기 동작들을 수행한다. 이 때, 플래시 변환 레이어(FTL)는 논리적 어드레스(LOGICAL ADDRESS)와 물리적 어드레스(PHYSICAL ADDRESS) 사이의 맵핑 정보가 저장된 맵핑 테이블을 이용하여 호스트 장치(140)가 인식하는 논리적 어드레스(LOGICAL ADDRESS)를 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS)로 변환하는 어드레스 맵핑 동작을 수행한다.
일반적으로, 비휘발성 메모리 장치(120)가 오랜 시간 동안 동작함에 따라, 파일 시스템(142)이 인식하는 데이터 정보(예를 들어, 유효 데이터들과 무효 데이터들에 대한 정보 등)가 맵핑 테이블에 정확하게 반영되지 않기 때문에, 플래시 변환 레이어(FTL)가 인식하는 데이터 정보와 파일 시스템(142)이 인식하는 데이터 정보는 일치하지 않게 된다. 예를 들어, 디스카드(discard) 커맨드와 같은 일부 커맨드의 경우, 파일 시스템(142)의 소정의 조건 하에서 파일 시스템(142)이 디스카드 정보를 비휘발성 메모리 장치(120)에 전달하지 않을 수도 있고, 디스카드 정보가 필터링되어 비휘발성 메모리 장치(120)에 전달되지 않을 수도 있으며, 비휘발성 메모리 장치(120)에 전달된 디스카드 정보가 랜덤 액세스 메모리에 임시 저장되어 있는 도중에 파워 오프(power off) 등에 의해 유실될 수도 있다. 이러한 경우, 디스카드 정보가 맵핑 테이블에 반영되지 않기 때문에, 파일 시스템(142)이 인식하는 데이터 정보(예를 들어, 유효 데이터들과 무효 데이터들에 대한 정보 등)와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보(예를 들어, 유효 데이터들과 무효 데이터들에 대한 정보 등)는 서로 불일치할 수 있다. 또한, 비휘발성 메모리 장치(120)의 특성상 독출 동작이나 기입 동작에 비해 소거 동작이 매우 느리기 때문에, 사용자로 하여금 비휘발성 메모리 장치(120)의 데이터 갱신 동작 시에 성능 저하(예를 들어, 프리징 현상 등)를 느끼지 못하도록, 갱신된 데이터들은 프리 블록(예를 들어, 로그(log) 블록)에 기입하지만, 이전 데이터들(즉, 무효 데이터들)을 포함하고 있는 블록은 소거하지 않는 경우가 많다. 이러한 스킴(scheme)은 파일 시스템(142)이 인식하는 데이터 정보(예를 들어, 유효 데이터들과 무효 데이터들에 대한 정보 등)와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보(예를 들어, 유효 데이터들과 무효 데이터들에 대한 정보 등)의 불일치를 가중시킬 수 있다.
이러한 이유로, 비휘발성 메모리 장치(120)의 가비지 콜렉션 동작 등을 위한 프리 블록이 부족해지는 더티 상태가 심화될 수 있다. 특히, 파일 시스템(142)이 인식하는 데이터 정보와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보가 서로 불일치하기 때문에, 호스트 장치(140)(즉, 호스트 장치(140)의 파일 시스템(142))가 파악하고 있는 유효 데이터들과 무효 데이터들에 기초하여 비휘발성 메모리 장치(120)의 더티 상태를 해소하는 데에는 한계가 있다. 예를 들어, 파일 시스템(142)이 인식하는 데이터 정보에 의해서는 전체의 30% 정도만 유효 데이터들인데 반해, 플래시 변환 레이어(FTL)가 인식하는 데이터 정보에 의해서는 전체의 90%가 유효 데이터들인 상황이 발생할 수 있다. 이러한 경우, 전체의 30% 정도만 유효 데이터들이라고 파악하고 있는 호스트 장치(140)는 전체의 90%가 유효 데이터들이라고 파악하고 있는 비휘발성 메모리 장치(120)의 더티 상태를 효과적으로 해소할 수 없다. 그러나, 파일 시스템(142)이 인식하는 데이터 정보가 플래시 변환 레이어(FTL)가 인식하는 데이터 정보보다 정확하기 때문에, 파일 시스템(142)이 파악하고 있는 유효 데이터들이 실제 유효 데이터들(즉, 진짜 유효 데이터들)이고, 플래시 변환 레이어(FTL)가 파악하고 있는 유효 데이터들 중에서 상당 부분은 무효 데이터들이다. 특히, 플래시 변환 레이어(FTL)가 무효 데이터들을 유효 데이터들로 파악하는 경우, 가비지 콜렉션 동작뿐 만 아니라 비휘발성 메모리 장치(120)의 전반적인 동작에 있어 비효율을 야기시킬 수 있다. 예를 들어, 플래시 변환 레이어(FTL)가 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 무효 페이지들로만 구성된 무효 블록을 적어도 하나 이상의 유효 페이지를 포함하는 유효 블록으로 파악하고 있는 경우, 무효 페이지들로만 구성된 무효 블록에 대한 가비지 콜렉션 동작은 지연(심지어, 웨어 레벨링 동작을 수행할 때 무효 페이지들로만 구성된 무효 블록을 무의미하게 이동시킴)될 수밖에 없는데, 비휘발성 메모리 장치(120)가 빠르게 동작하기 위해서는 그 구조적인 특성상 프리 블록을 많이 확보해야 함을 고려하면, 비휘발성 메모리 장치(120)의 더티 상태는 심화될 수밖에 없는 것이다.
나아가, 독출 동작과 기입 동작은 페이지 단위로 수행하고 소거 동작은 블록 단위로 수행하는 비휘발성 메모리 장치(120)(예를 들어, 낸드 플래시 메모리 장치)의 특성을 고려할 때, 사용 접근 빈도가 높은 핫 데이터들(예를 들어, 시스템 파일 데이터 등)과 사용 접근 빈도가 낮은 콜드 데이터들(예를 들어, 동영상 파일 데이터, 사진 파일 데이터, 음악 파일 데이터 등)이 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 혼재되는 것은 비휘발성 메모리 장치(120)에 빈번한 가비지 콜렉션 동작을 야기시킬 수 있다. 다시 말하면, 콜드 데이터들은 갱신될 가능성이 상대적으로 낮기 때문에, 콜드 데이터들이 하나의 블록에 모여 있는 경우에는 해당 블록에 대한 가비지 콜렉션 동작은 자주 수행되지 않을 수 있다. 반면에, 핫 데이터들은 갱신될 가능성이 상대적으로 높기 때문에, 핫 데이터들과 콜드 데이터들이 하나의 블록에 혼재되어 있는 경우에는 해당 블록에 대한 가비지 콜렉션 동작은 핫 데이터들 때문에 자주 수행될 수 있다. 그러므로, 핫 데이터들과 콜드 데이터들이 하나의 블록에 혼재되어 있는 상황에서는 핫 데이터들과 콜드 데이터들이 서로 다른 블록에 각각 모여 있는 상황에 비해서 가비지 콜렉션 동작이 자주 수행될 수밖에 없다. 따라서, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 핫 데이터들과 콜드 데이터들을 각각 인접하게 배치시키는 것이 요구된다. 그러나, 상술한 바와 같이, 비휘발성 메모리 장치(120)의 데이터 갱신 동작이 반복됨에 따라 파일 시스템(142)이 인식하는 데이터 정보와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보 사이의 불일치가 심화되고, 플래시 변환 레이어(FTL)가 인식하는 데이터 정보는 파일 시스템(142)이 인식하는 데이터 정보보다 부정확하기 때문에, 플래시 변환 레이어(FTL)가 핫 데이터들과 콜드 데이터들을 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 각각 인접하게 배치시키는 데에는 한계가 있다.
이러한 문제점을 해결하기 위하여, 도 2 및 도 3에 도시된 바와 같이, 비휘발성 메모리 시스템(100)에서는 호스트 장치(140)의 파일 시스템(142)이 논리적 어드레스(LOGICAL ADDRESS) 상에서 대상 데이터들(즉, TLAB-1, ..., TLAB-m로 표시)을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 방식(즉, REWRITE로 표시)으로 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 대상 데이터들(즉, PAGE-1, ..., PAGE-n로 표시)을 인접하게 배치(이하, 파일 시스템 주도 단편화 동작으로 명명)시킬 수 있다. 이 때, 논리적 어드레스(LOGICAL ADDRESS) 상의 데이터 블록 사이즈와 물리적 어드레스(PHYSICAL ADDRESS) 상의 페이지 사이즈는 동일(즉, m과 n이 동일)하거나 상이(즉, m과 n이 상이)할 수 있다. 예를 들어, 논리적 어드레스(LOGICAL ADDRESS) 상의 데이터 블록 사이즈는 4KB일 수 있고, 물리적 어드레스(PHYSICAL ADDRESS) 상의 페이지 사이즈는 4KB 또는 8KB일 수 있으며, 물리적 어드레스(PHYSICAL ADDRESS) 상의 블록 사이즈는 512KB일 수 있다. 다만, 이것은 예시적인 것으로서, 논리적 어드레스(LOGICAL ADDRESS) 상의 데이터 블록 사이즈, 물리적 어드레스(PHYSICAL ADDRESS) 상의 페이지 사이즈 및 물리적 어드레스(PHYSICAL ADDRESS) 상의 블록 사이즈는 요구되는 조건에 따라 다양하게 결정될 수 있다. 한편, 파일 시스템 주도 단편화 동작은 상대적으로 많은 시간을 필요로 하기 때문에(즉, 레이턴시(latency)가 큼), 사용자의 의사와 상관없이 비휘발성 메모리 시스템(100)에서 수행되는 경우, 사용자로 하여금 비휘발성 메모리 장치(120)의 성능 저하를 경험하게 만든다. 따라서, 파일 시스템 주도 단편화 동작은 기 설정된 주기(예를 들어, 사용자가 비휘발성 메모리 시스템(100)을 사용하지 않는 주기)마다 수행되거나, 사용자 지정 시간(예를 들어, 사용자가 파일 시스템 주도 단편화 동작을 수행하고자 할 때)에 수행되거나, 또는 비휘발성 메모리 장치(120)에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때(예를 들어, 가비지 콜렉션 동작을 포함하는 백그라운드(background) 동작이 수행될 때) 수행될 수 있다. 다만, 이것은 예시적인 것으로서, 파일 시스템 주도 단편화 동작이 수행되는 시간은 요구되는 조건에 따라 다양하게 설정될 수 있다.
일 실시예에서, 파일 시스템(142)은 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 유효 데이터들과 무효 데이터들로 구분하고 유효 데이터들을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행(즉, REWRITE로 표시)함으로써, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 유효 데이터들을 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 수행할 수 있다. 상술한 바와 같이, 비휘발성 메모리 장치(120)가 오랜 시간 동안 동작함에 따라, 파일 시스템(142)이 인식하는 데이터 정보와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보는 일치하지 않게 되고, 파일 시스템(142)이 인식하는 데이터 정보가 플래시 변환 레이어(FTL)가 인식하는 데이터 정보보다 정확하다. 따라서, 파일 시스템(142)이 파악하고 있는 유효 데이터들이 실제 유효 데이터들이고, 플래시 변환 레이어(FTL)가 파악하고 있는 유효 데이터들 중에서 상당 부분은 무효 데이터들이다. 이에, 비휘발성 메모리 시스템(100)은 파일 시스템(142)이 인식하는 데이터 정보에 기초하여 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 유효 데이터들을 인접하게 배치시킬 수 있다. 즉, 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들만 새로운 논리적 어드레스 영역에 연속적으로 기입되면, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 프리 블록(예를 들어, 로그 블록)에 실제 유효 데이터들이 연속적으로 기입되는 것이다. 이것은 실질적으로 플래시 변환 레이어(FTL)이 수행하는 가비지 콜렉션 동작과 같은 효과를 달성할 수 있다. 이와 같이, 파일 시스템(142)이 플래시 변환 레이어(FTL)보다 유효 데이터들과 무효 데이터들을 보다 정확하게 파악하고 있으므로, 파일 시스템(142)은 파일 시스템 주도 단편화 동작을 통해 실제 유효 데이터들만 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 인접하게 배치시킬 수 있다.
한편, 상기 파일 시스템 주도 단편화 동작이 수행되면, 파일 시스템(142)은 무효 데이터들에 대한 소거 커맨드 또는 트림 커맨드를 호스트 컨트롤러(144)를 통해 비휘발성 메모리 장치(120)에 제공할 수 있다. 이 때, 소거 커맨드 또는 트림 커맨드는 디스카드 커맨드와는 달리 맵핑 테이블에서 무효 데이터들에 대한 언맵핑(unmapping) 상태를 보장할 수 있다. 그 결과, 플래시 변환 레이어(FTL)는 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 실제 유효 데이터들만 유효 데이터들로 인식하게 될 수 있다. 실시예에 따라, 파일 시스템(142)은 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 유효 데이터들과 무효 데이터들로 구분하고 유효 데이터들을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행(즉, REWRITE로 표시)할 때, 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들을 핫 데이터들과 콜드 데이터들로 구분한 후, 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하고, 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입할 수 있다. 이 경우, 실제 유효 데이터들만 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 인접하게 배치됨과 동시에, 핫 데이터들과 콜드 데이터들이 구분되어 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 각각 인접하게 배치될 수 있다. 예를 들어, 파일 시스템(142)은 유효 데이터들을 파일 종류에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 다른 예를 들어, 파일 시스템(142)은 유효 데이터들을 사용 접근 빈도에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 또 다른 예를 들어, 파일 시스템(142)은 유효 데이터들을 파일 용량에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 다만, 이것은 예시적인 것으로서, 핫 데이터들과 콜드 데이터들의 구분은 다양한 방식으로 이루어질 수 있다.
다른 실시예에서, 파일 시스템(142)은 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 핫 데이터들과 콜드 데이터들로 구분하고 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하며 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행(즉, REWRITE로 표시)함으로써, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 핫 데이터들과 콜드 데이터들을 각각 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 수행할 수 있다. 예를 들어, 파일 시스템(142)은 데이터들을 파일(file) 종류에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 다른 예를 들어, 파일 시스템(142)은 데이터들을 사용 접근 빈도에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 또 다른 예를 들어, 파일 시스템(142)은 데이터들을 파일 용량에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 다만, 이것은 예시적인 것으로서, 핫 데이터들과 콜드 데이터들의 구분은 다양한 방식으로 이루어질 수 있다. 상술한 바와 같이, 비휘발성 메모리 장치(120)가 오랜 시간 동안 동작함에 따라, 파일 시스템(142)이 인식하는 데이터 정보와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보는 일치하지 않게 되고, 파일 시스템(142)이 인식하는 데이터 정보가 플래시 변환 레이어(FTL)가 인식하는 데이터 정보보다 정확하다. 이에, 비휘발성 메모리 시스템(100)은 파일 시스템(142)이 인식하는 데이터 정보에 기초하여 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 핫 데이터들과 콜드 데이터들을 각각 인접하게 배치시킬 수 있다. 즉, 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 핫 데이터들이 제1 새로운 논리적 어드레스 영역에 연속적으로 기입되면, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 프리 블록(예를 들어, 로그 블록)에 핫 데이터들이 연속적으로 기입되고, 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 콜드 데이터들이 제2 새로운 논리적 어드레스 영역에 연속적으로 기입되면, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 프리 블록(예를 들어, 로그 블록)에 콜드 데이터들이 연속적으로 기입되는 것이다. 이와 같이, 파일 시스템(142)은 파일 시스템 주도 단편화 동작을 통해 핫 데이터들과 콜드 데이터들을 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 각각 인접하게 배치시킬 수 있다.
실시예에 따라, 파일 시스템(142)은 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 핫 데이터들과 콜드 데이터들로 구분하고 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하며 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행(즉, REWRITE로 표시)할 때, 논리적 어드레스(LOGICAL ADDRESS) 상에서 핫 데이터들을 유효 핫 데이터들과 무효 핫 데이터들로 구분한 후, 유효 핫 데이터들만 제1 새로운 논리적 어드레스 영역에 기입할 수 있다. 마찬가지로, 파일 시스템(142)은 상기 재기입 동작을 수행(즉, REWRITE)할 때, 논리적 어드레스(LOGICAL) 상에서 콜드 데이터들을 유효 콜드 데이터들과 무효 콜드 데이터들로 구분한 후, 유효 콜드 데이터들만 제2 새로운 논리적 어드레스 영역에 기입할 수 있다. 한편, 상기 파일 시스템 주도 단편화 동작이 수행되면, 파일 시스템(142)은 무효 핫 데이터들과 무효 콜드 데이터들에 대한 소거 커맨드 또는 트림 커맨드를 호스트 컨트롤러(144)를 통해 비휘발성 메모리 장치(120)에 제공할 수 있다. 이 때, 소거 커맨드 또는 트림 커맨드는 디스카드 커맨드와는 달리 맵핑 테이블에서 무효 핫 데이터들 및 무효 콜드 데이터들에 대한 언맵핑 상태를 보장할 수 있다. 따라서, 핫 데이터들과 콜드 데이터들이 구분되어 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 각각 인접하게 배치됨과 동시에, 실제 유효 데이터들만 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 인접하게 배치될 수 있다. 이와 같이, 비휘발성 메모리 시스템(100)은 핫 데이터들과 콜드 데이터들을 위한 파일 시스템 주도 단편화 동작을 수행함으로써 비휘발성 메모리 장치(120)에서 수행되는 가비지 콜렉션 동작의 빈도를 효과적으로 감소시킬 수 있다.
도 4는 도 1의 비휘발성 메모리 시스템에서 호스트 장치의 파일 시스템이 비휘발성 메모리 장치의 물리적 어드레스 상에서 유효 데이터들을 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 나타내는 순서도이고, 도 5는 도 1의 비휘발성 메모리 시스템에서 유효 데이터들이 호스트 장치의 파일 시스템에 의해 새로운 논리적 어드레스 영역에 연속적으로 기입되는 일 예를 나타내는 도면이며, 도 6은 도 1의 비휘발성 메모리 시스템에서 유효 데이터들이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라 비휘발성 메모리 장치의 물리적 어드레스 상에서 유효 데이터들이 인접하게 배치되는 일 예를 나타내는 도면이다.
도 4 내지 도 6을 참조하면, 호스트 장치(140)의 파일 시스템(142)은 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 유효 데이터들(VALID, V)과 무효 데이터들(INVALID, I)로 구분(Step S120)한 후, 유효 데이터들(VALID, V)을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입(Step S140)하고, 무효 데이터들(INVALID, I)에 대한 소거 커맨드 또는 트림 커맨드를 비휘발성 메모리 장치(120)에 제공(Step S160)할 수 있다.
상술한 바와 같이, 비휘발성 메모리 장치(120)가 오랜 시간 동안 동작함에 따라, 파일 시스템(142)이 인식하는 데이터 정보와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보는 일치하지 않게 되고, 파일 시스템(142)이 인식하는 데이터 정보가 플래시 변환 레이어(FTL)가 인식하는 데이터 정보보다 정확하다. 따라서, 파일 시스템(142)이 파악하고 있는 유효 데이터들(VALID, V)이 실제 유효 데이터들이고, 플래시 변환 레이어(FTL)가 파악하고 있는 유효 데이터들(VALID, V) 중에서 상당 부분은 무효 데이터들(INVALID, I)이므로, 파일 시스템(142)이 주도하여 단편화 동작을 수행하는 것이 효과적이다. 따라서, 도 5에 도시된 바와 같이, 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들(VALID, V)와 무효 데이터들(INVALID, I)이 혼재되어 있는 상태에서, 파일 시스템(142)은 유효 데이터들(VALID, V)만을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입(즉, REWRITE로 표시)함으로써, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 프리 블록(예를 들어, 로그 블록)에 유효 데이터들(VALID, V)이 연속적으로 기입되도록 할 수 있다. 그 결과, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 유효 데이터들(VALID, V)은 인접하게 배치될 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 논리적 어드레스(LOGICAL ADDRESS) 상의 데이터 블록 사이즈와 물리적 어드레스(PHYSICAL ADDRESS) 상의 페이지 사이즈가 동일하다고 가정하면, 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들(VALID, V)이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 여러 블록들에 분산되어 있던 유효 데이터들(VALID, V)이 프리 블록(예를 들어, 로그 블록)에 인접하여 배치될 수 있다. 그 결과, 실질적으로 플래시 변환 레이어(FTL)이 수행하는 가비지 콜렉션 동작과 같은 효과가 달성될 수 있고, 논리적 어드레스(LOGICAL ADDRESS) 상에서 뿐만 아니라 물리적 어드레스(PHYSICAL ADDRESS) 상에서도 데이터 관리가 용이해질 수 있다. 이후, 프리 블록에 유효 데이터들(VALID, V)이 인접하여 배치됨에 따라 프리 블록 내 프리 페이지(F)에는 추가적으로 다른 유효 페이지가 기입될 수 있다.
예를 들어, 논리적 어드레스(LOGICAL ADDRESS) 상에서 4KB 데이터 블록들(L0, ..., L100)이 연속적으로 기입되어 있고, 홀수 데이터 블록들(L1, L3, ..., L99)만 삭제(또는, 디스카드)되어 있다고 가정하면, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 해당 블록은 유효 데이터들(VALID, V)(예를 들어, 유효 페이지들)과 무효 데이터들(INVALID, I)(예를 들어, 무효 페이지들)이 번갈아 가면서 존재할 수 있다. 이 때, 파일 시스템(142)이 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들(VALID, V)만을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하면, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 새로운 로그 블록에 유효 데이터들(VALID, V)(예를 들어, 유효 페이지들)만 다시 기입되므로, 실질적으로 플래시 변환 레이어(FTL)이 수행하는 가비지 콜렉션 동작과 같은 효과가 달성되는 것이다. 이후, 맵핑 테이블에서 무효 데이터들(INVALID, I)에 대한 언맵핑 상태를 보장하는 무효 데이터들(INVALID, I)에 대한 소거 커맨드 또는 트림 커맨드가 비휘발성 메모리 장치(120)에 제공되면, 맵핑 테이블에서 무효 데이터들(INVALID, I)에 대한 언맵핑이 완료되고, 그에 따라, 비휘발성 메모리 장치(120)의 플래시 변환 레이어(FTL)는 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 실제 유효 데이터들(VALID, V)만 유효 데이터들(VALID, V)로 인식하게 될 수 있다. 한편, 실시예에 따라, 파일 시스템(142)은 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 유효 데이터들(VALID, V)과 무효 데이터들(INVALID, I)로 구분하고 유효 데이터들(VALID, V)을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행(즉, REWRITE로 표시)할 때, 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들(VALID, V)을 핫 데이터들과 콜드 데이터들로 구분한 후, 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하고, 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입할 수 있다. 이 경우, 실제 유효 데이터들(VALID, V)만 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 인접하게 배치됨과 동시에, 핫 데이터들과 콜드 데이터들이 구분되어 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 각각 인접하게 배치될 수 있다. 한편, 상기 파일 시스템 주도 단편화 동작은 동작적인 측면에서 비휘발성 메모리 시스템(100)에 상당한 부담(즉, 레이턴시가 상대적으로 큼)을 줄 수 있으므로, 비휘발성 메모리 시스템(100)은 상기 파일 시스템 주도 단편화 동작을 기 설정된 주기마다 수행하거나, 사용자 지정 시간에만 수행하거나, 또는 비휘발성 메모리 장치(120)에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때에만 수행할 수 있다.
도 7은 도 1의 비휘발성 메모리 시스템에서 호스트 장치의 파일 시스템이 비휘발성 메모리 장치의 물리적 어드레스 상에서 핫 데이터들과 콜드 데이터들을 각각 인접하게 배치시키는 파일 시스템 주도 단편화 동작을 나타내는 순서도이고, 도 8은 도 1의 비휘발성 메모리 시스템에서 핫 데이터들(또는, 콜드 데이터들)이 호스트 장치의 파일 시스템에 의해 새로운 논리적 어드레스 영역에 연속적으로 기입되는 일 예를 나타내는 도면이며, 도 9는 도 1의 비휘발성 메모리 시스템에서 핫 데이터들(또는, 콜드 데이터들)이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라 비휘발성 메모리 장치의 물리적 어드레스 상에서 핫 데이터들과 콜드 데이터들이 각각 인접하게 배치되는 일 예를 나타내는 도면이다.
도 7 내지 도 9를 참조하면, 호스트 장치(140)의 파일 시스템(142)은 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)로 구분(Step S220)한 후, 핫 데이터들(HOT, H)을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입(Step S240)하고, 콜드 데이터들(COLD, C)을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입(Step S260)할 수 있다.
상술한 바와 같이, 비휘발성 메모리 장치(120)가 오랜 시간 동안 동작함에 따라, 파일 시스템(142)이 인식하는 데이터 정보와 플래시 변환 레이어(FTL)가 인식하는 데이터 정보는 일치하지 않게 되고, 파일 시스템(142)이 인식하는 데이터 정보가 플래시 변환 레이어(FTL)가 인식하는 데이터 정보보다 정확하다. 따라서, 도 8에 도시된 바와 같이, 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 핫 데이터들(HOT, H)와 콜드 데이터들(COLD, C)이 혼재되어 있는 상태에서, 파일 시스템(142)은 핫 데이터들(HOT, H)만을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입(즉, REWRITE로 표시)함으로써, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 제1 프리 블록에 핫 데이터들(HOT, H)이 연속적으로 기입되도록 할 수 있다. 마찬가지로, 도시되지는 않았지만, 파일 시스템(142)은 콜드 데이터들(COLD, C)만을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입함으로써, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 제2 프리 블록에 콜드 데이터들(COLD, C)이 연속적으로 기입되도록 할 수 있다. 그 결과, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)은 각각 인접하게 배치될 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 논리적 어드레스(LOGICAL ADDRESS) 상의 데이터 블록 사이즈와 물리적 어드레스(PHYSICAL ADDRESS) 상의 페이지 사이즈가 동일하다고 가정하면, 논리적 어드레스(LOGICAL ADDRESS) 상에서 유효 데이터들(VALID, V)이 새로운 논리적 어드레스 영역에 연속적으로 기입됨에 따라, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 여러 블록들에 분산되어 있던 핫 데이터들(HOT, H)이 제1 프리 블록에 인접하여 배치될 수 있고, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 여러 블록들에 분산되어 있던 콜드 데이터들(COLD, C)이 제2 프리 블록에 인접하여 배치될 수 있다. 그 결과, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 사용 접근 빈도가 높은 핫 데이터들(HOT, H)과 사용 접근 빈도가 낮은 콜드 데이터들(COLD, C)이 분리되어 배치되기 때문에, 비휘발성 메모리 장치(120)에서 수행되는 가비지 콜렉션 동작의 빈도가 감소될 수 있다. 즉, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 사용 접근 빈도가 높은 핫 데이터들(HOT, H)과 사용 접근 빈도가 낮은 콜드 데이터들(COLD, C)이 혼재되어 있음에 따라 수행되었던 불필요한 가비지 콜렉션 동작이 방지되기 때문에 비휘발성 메모리 장치(120)의 전반적인 동작 성능은 향상될 수 있다.
한편, 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)의 구분은 다양한 방식으로 이루어질 수 있다. 일 실시예에서, 파일 시스템(142)은 데이터들을 파일 종류에 기초하여 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)로 구분할 수 있다. 예를 들어, 파일 시스템(142)은 mpeg, jpeg, mp3 등의 멀티미디어 파일 데이터는 콜드 데이터들(COLD, C)로 구분하고, 나머지 파일 데이터는 핫 데이터들(HOT, H)로 구분할 수 있다. 다른 실시예에서, 파일 시스템(142)은 데이터들을 사용 접근 빈도에 기초하여 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)로 구분할 수 있다. 예를 들어, 파일 시스템(142)은 모니터링을 통한 접근 통계에 기초하여 한번 기입되어 독출만이 반복되면 콜드 데이터들(COLD, C)로 구분하고, 나머지 파일 데이터는 핫 데이터들(HOT, H)로 구분할 수 있다. 또 다른 실시예에서, 파일 시스템(142)은 유효 데이터들을 파일 용량에 기초하여 핫 데이터들과 콜드 데이터들로 구분할 수 있다. 예를 들어, 파일 시스템(142)은 파일 사이즈가 1MB 이상이면 콜드 데이터들(COLD, C)로 구분하고, 나머지 파일 데이터는 핫 데이터들(HOT, H)로 구분할 수 있다. 실시예에 따라, 파일 시스템(142)은 논리적 어드레스(LOGICAL ADDRESS) 상에서 데이터들을 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)로 구분하고 핫 데이터들(HOT, H)을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하며 콜드 데이터들(COLD, C)을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입 동작을 수행(즉, REWRITE로 표시)할 때, 논리적 어드레스(LOGICAL ADDRESS) 상에서 핫 데이터들(HOT, H)을 유효 핫 데이터들과 무효 핫 데이터들로 구분한 후, 유효 핫 데이터들만 제1 새로운 논리적 어드레스 영역에 기입할 수 있다. 마찬가지로, 파일 시스템(142)은 상기 재기입 동작을 수행(즉, REWRITE)할 때, 논리적 어드레스(LOGICAL) 상에서 콜드 데이터들(COLD, C)을 유효 콜드 데이터들과 무효 콜드 데이터들로 구분한 후, 유효 콜드 데이터들만 제2 새로운 논리적 어드레스 영역에 기입할 수 있다. 한편, 파일 시스템(142)은 무효 핫 데이터들과 무효 콜드 데이터들에 대한 소거 커맨드 또는 트림 커맨드를 호스트 컨트롤러(144)를 통해 비휘발성 메모리 장치(120)에 제공할 수 있다. 이 때, 맵핑 테이블에서 무효 핫 데이터들 및 무효 콜드 데이터들에 대한 언맵핑 상태를 보장하는 무효 핫 데이터들 및 무효 콜드 데이터들에 대한 소거 커맨드 또는 트림 커맨드가 비휘발성 메모리 장치(120)에 제공되면, 맵핑 테이블에서 무효 핫 데이터들 및 무효 콜드 데이터들에 대한 언맵핑이 완료되고, 그에 따라, 비휘발성 메모리 장치(120)의 플래시 변환 레이어(FTL)는 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 실제 유효 핫 데이터들 및 실제 유효 콜드 데이터들만 유효 핫 데이터들과 유효 콜드 데이터들로 인식하게 될 수 있다.
이와 같이, 비휘발성 메모리 시스템(100)은 핫 데이터들(HOT, H)과 콜드 데이터들(COLD, C)을 위한 파일 시스템 주도 단편화 동작을 수행함으로써 비휘발성 메모리 장치(120)에서 수행되는 가비지 콜렉션 동작의 빈도를 감소시킬 수 있다. 예를 들어, 종래의 비휘발성 메모리 시스템에서는, 비휘발성 메모리 장치의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 하나의 블록에 하나의 핫 페이지(HOT, H)(즉, 핫 데이터)와 복수 개의 콜드 페이지들(COLD, C)(즉, 콜드 데이터)인 경우, 핫 페이지(HOT, H)가 덮어쓰기(overwrite)에 의해 무효 페이지가 되고 해당 블록이 가비지 콜렉션 동작의 대상 블록이 되면, 나머지 복수 개의 콜드 페이지들(COLD, C)에 대한 카피 동작을 수행해야 하는 극단적인 상황까지 발생하였다. 따라서, 비휘발성 메모리 시스템(100)은 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 사용 접근 빈도가 높은 핫 데이터들(HOT, H)과 사용 접근 빈도가 낮은 콜드 데이터들(COLD, C)을 분리하여 배치함으로써, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 사용 접근 빈도가 높은 핫 데이터들(HOT, H)과 사용 접근 빈도가 낮은 콜드 데이터들(COLD, C)이 혼재되어 배치됨에 따라 발생했던 더티 상태의 심화 문제를 효과적으로 해결할 수 있다. 뿐만 아니라, 비휘발성 메모리 시스템(100)은 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 사용 접근 빈도가 높은 핫 데이터들(HOT, H)과 사용 접근 빈도가 낮은 콜드 데이터들(COLD, C)을 분리하여 배치함으로써, 비휘발성 메모리 장치(120)에서 수행되는 가비지 콜렉션 동작의 빈도(즉, 가비지 콜렉션 동작의 수행 횟수, 카피 동작의 수행 횟수 등)를 감소시킬 수 있고, 그에 따라, 비휘발성 메모리 장치(120)의 전반적인 동작 성능, 수명 등을 개선할 수 있다. 한편, 상기 파일 시스템 주도 단편화 동작은 동작적인 측면에서 비휘발성 메모리 시스템(100)에 상당한 부담(즉, 레이턴시가 상대적으로 큼)을 줄 수 있으므로, 비휘발성 메모리 시스템(100)은 상기 파일 시스템 주도 단편화 동작을 기 설정된 주기마다 수행하거나, 사용자 지정 시간에만 수행하거나, 또는 비휘발성 메모리 장치(120)에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때에만 수행할 수 있다.
도 10 및 도 11은 도 1의 비휘발성 메모리 시스템에 의해 수행되는 파일 시스템 주도 단편화 동작의 다른 예를 나타내는 도면들이다.
도 10 및 도 11을 참조하면, 비휘발성 메모리 시스템(100)에 의해 수행되는 시스템 주도 단편화 동작의 다른 효과가 도시되어 있다. 예를 들어, 도 10에 도시된 바와 같이, 논리적 어드레스(LOGICAL ADDRESS) 상의 데이터 블록 사이즈는 4KB일 수 있고, 물리적 어드레스(PHYSICAL ADDRESS) 상의 페이지 사이즈는 8KB일 수 있다. 이 때, 파일 시스템(142)이 인식하는 논리적 어드레스(LOGICAL ADDRESS) 상에서 4KB 데이터 블록들(B1, ..., B16)에 대한 기입 동작이 수행될 때, 기입 요청 시퀀스가 B1, B3, B5, B7, B2, B4, B6, B8, B9, B11, B13, B15, B10, B12, B14, B16 순이라고 가정하면, 물리적 어드레스(PHYSICAL ADDRESS) 상에서 블록 내 8KB 페이지에 4KB 데이터 블록이 기입될 수 있다. 즉, 8KB 페이지 내에서 데이터가 4KB 영역만 채워지는 것이다. 이 때, 파일 시스템(142)이 논리적 어드레스(LOGICAL ADDRESS) 상에서 대상 데이터들(즉, B1, ..., B16으로 표시)을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하면, 도 11에 도시된 바와 같이, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 대상 데이터들(즉, B1, ..., B16으로 표시)이 인접하게 배치될 수 있다. 특히, 파일 시스템(142)이 논리적 어드레스(LOGICAL ADDRESS) 상에서 대상 데이터들(즉, B1, ..., B16으로 표시)이 순서대로 모아져 새로운 논리적 어드레스 영역에 연속적으로 기입되는 경우, 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 대상 데이터들(즉, B1, ..., B16으로 표시)이 순서대로 인접하게 배치될 수 있다. 이와 같이, 비휘발성 메모리 시스템(100)은 파일 시스템(142)로 하여금 비휘발성 메모리 장치(120)의 더티 상태를 효과적으로 해소하게 할 뿐만 아니라, 비휘발성 메모리 시스템(100)의 운용 상 비휘발성 메모리 장치(120)의 물리적 어드레스(PHYSICAL ADDRESS) 상에서 여러 곳에 흩어져 있는 데이터들이 순서대로 인접하게 배치되도록 할 수 있다. 그 결과, 비휘발성 메모리 시스템(100)은 비휘발성 메모리 장치(120)의 전반적인 동작 성능을 크게 향상(예를 들어, 동작 속도 향상, 공간 활용률 증대 등)시킬 수 있다.
도 12는 도 1의 비휘발성 메모리 시스템이 파일 시스템 주도 단편화 동작의 수행 여부를 결정하는 과정을 나타내는 순서도이다.
도 12를 참조하면, 비휘발성 메모리 시스템(100)이 파일 시스템 주도 단편화 동작의 수행 여부를 결정하는 과정이 도시되어 있다. 구체적으로, 비휘발성 메모리 시스템(100)은 비휘발성 메모리 장치(120)를 구동(Step S310)한 후, 파일 시스템 주도 단편화 동작을 수행하기 위한 기 설정된 조건이 만족되었는지 여부를 확인(Step S320)할 수 있다. 이 때, 파일 시스템 주도 단편화 동작을 수행하기 위한 기 설정된 조건이 만족되면, 비휘발성 메모리 시스템(100)은 파일 시스템 주도 단편화 동작을 수행(Step S330)할 수 있다. 반면에, 파일 시스템 주도 단편화 동작을 수행하기 위한 기 설정된 조건이 만족되지 않으면, 비휘발성 메모리 시스템(100)은 파일 시스템 주도 단편화 동작을 비수행(Step S340)할 수 있다. 이 때, 기 설정된 조건은 기 설정된 주기가 도래한 조건, 사용자 지정 시간이 도래한 조건, 비휘발성 메모리 장치(120)에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않는 조건 등을 포함할 수 있다. 상술한 바와 같이, 파일 시스템 주도 단편화 동작은 비휘발성 메모리 장치(120)에 기입 동작 및 소거 동작을 야기시키기 때문에, 상대적으로 많은 시간을 필요로 한다. 따라서, 파일 시스템 주도 단편화 동작이 사용자의 의사와 상관없이 비휘발성 메모리 시스템(100)에서 수행되는 경우, 사용자로 하여금 비휘발성 메모리 장치(120)의 성능 저하를 경험하게 만들 수 있다. 다시 말하면, 파일 시스템 주도 단편화 동작은 동작적인 측면에서 비휘발성 메모리 시스템(100)에 상당한 부담을 줄 수 있다. 이에, 비휘발성 메모리 시스템(100)은 상기 파일 시스템 주도 단편화 동작을 기 설정된 주기마다 수행하거나, 사용자 지정 시간에만 수행하거나, 또는 비휘발성 메모리 장치(120)에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때에만 수행하는 것이다. 다만, 상술한 조건들(즉, 기 설정된 주기가 도래한 조건, 사용자 지정 시간이 도래한 조건, 비휘발성 메모리 장치(120)에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않는 조건)은 예시적인 것으로서, 파일 시스템 주도 단편화 동작을 수행하기 위한 기 설정된 조건은 그에 한정되지는 않는다. 이상, 본 발명의 실시예들에 따른 비휘발성 메모리 시스템에 대해 도면을 참조하여 설명하였지만, 상기 설명은 예시적인 것으로서 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 해당 기술 분야에서 통상의 지식을 가진 자에 의해 수정 및 변경될 수 있을 것이다. 예를 들어, 본 발명은 낸드 플래시 메모리 장치와 유사한 구조적 특성 및/또는 동작적 특성을 갖는 반도체 메모리 장치를 구비하는 비휘발성 메모리 시스템에 다양하게 적용될 수 있다.
본 발명은 낸드 플래시 메모리 장치를 포함하는 비휘발성 메모리 시스템에 적용될 수 있다. 따라서, 본 발명은 솔리드 스테이트 드라이브(SSD), 시큐어 디지털 카드(SDCARD), 유니버셜 플래시 스토리지(UFS), 임베디드 멀티미디어 카드(EMMC), CF 카드, 메모리 스틱, XD 픽쳐 카드 등에 적용될 수 있다.
이상에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 비휘발성 메모리 시스템 120: 비휘발성 메모리 장치
122: 낸드 플래시 메모리 124: 낸드 컨트롤러
140: 호스트 장치 142: 파일 시스템
144: 호스트 컨트롤러

Claims (15)

  1. 적어도 하나 이상의 낸드 플래시 메모리 및 상기 낸드 플래시 메모리를 제어하는 낸드 컨트롤러를 구비한 비휘발성 메모리 장치; 및
    파일 시스템 및 상기 파일 시스템으로부터 커맨드를 입력받아 상기 비휘발성 메모리 장치에 제공하는 호스트 컨트롤러를 구비한 호스트 장치를 포함하고,
    상기 파일 시스템은 상기 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 유효 데이터들과 무효 데이터들로 구분하고 상기 유효 데이터들을 모아 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입(rewrite) 동작을 수행함으로써, 상기 비휘발성 메모리 장치의 물리적 어드레스 상에서 상기 유효 데이터들을 인접하게 배치시키는 파일 시스템 주도 단편화(defragmentation) 동작을 수행하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  2. 제 1 항에 있어서, 상기 파일 시스템 주도 단편화 동작이 수행되면, 상기 파일 시스템은 맵핑 테이블에서 상기 무효 데이터들에 대한 언맵핑 상태를 보장하는 소거(erase) 커맨드 또는 트림(trim) 커맨드를 상기 호스트 컨트롤러를 통해 상기 비휘발성 메모리 장치에 제공하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  3. 제 2 항에 있어서, 상기 재기입 동작이 수행될 때, 상기 파일 시스템은 상기 논리적 어드레스 상에서 상기 유효 데이터들을 핫(hot) 데이터들과 콜드(cold) 데이터들로 구분한 후, 상기 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하고, 상기 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  4. 제 3 항에 있어서, 상기 파일 시스템은 상기 유효 데이터들을 파일 종류에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  5. 제 3 항에 있어서, 상기 파일 시스템은 상기 유효 데이터들을 사용 접근 빈도에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  6. 제 3 항에 있어서, 상기 파일 시스템은 상기 유효 데이터들을 파일 용량에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  7. 제 1 항에 있어서, 상기 파일 시스템 주도 단편화 동작은 기 설정된 주기마다 수행되거나, 사용자 지정 시간에 수행되거나, 또는 상기 비휘발성 메모리 장치에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때 수행되는 것을 특징으로 하는 비휘발성 메모리 시스템.
  8. 적어도 하나 이상의 낸드 플래시 메모리 및 상기 낸드 플래시 메모리를 제어하는 낸드 컨트롤러를 구비한 비휘발성 메모리 장치; 및
    파일 시스템 및 상기 파일 시스템으로부터 커맨드를 입력받아 상기 비휘발성 메모리 장치에 제공하는 호스트 컨트롤러를 구비한 호스트 장치를 포함하고,
    상기 파일 시스템은 상기 파일 시스템이 인식하는 논리적 어드레스 상에서 데이터들을 핫(hot) 데이터들과 콜드(cold) 데이터들로 구분하고 상기 핫 데이터들을 모아 제1 새로운 논리적 어드레스 영역에 연속적으로 기입하며 상기 콜드 데이터들을 모아 제2 새로운 논리적 어드레스 영역에 연속적으로 기입하는 재기입(rewrite) 동작을 수행함으로써, 상기 비휘발성 메모리 장치의 물리적 어드레스 상에서 상기 핫 데이터들과 상기 콜드 데이터들을 각각 인접하게 배치시키는 파일 시스템 주도 단편화(defragmentation) 동작을 수행하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  9. 제 8 항에 있어서, 상기 재기입 동작이 수행될 때, 상기 파일 시스템은 상기 논리적 어드레스 상에서 상기 핫 데이터들을 유효 핫 데이터들과 무효 핫 데이터들로 구분한 후, 상기 유효 핫 데이터들만 상기 제1 새로운 논리적 어드레스 영역에 기입하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  10. 제 9 항에 있어서, 상기 재기입 동작이 수행될 때, 상기 파일 시스템은 상기 논리적 어드레스 상에서 상기 콜드 데이터들을 유효 콜드 데이터들과 무효 콜드 데이터들로 구분한 후, 상기 유효 콜드 데이터들만 상기 제2 새로운 논리적 어드레스 영역에 기입하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  11. 제 10 항에 있어서, 상기 파일 시스템 주도 단편화 동작이 수행되면, 상기 파일 시스템은 맵핑 테이블에서 상기 무효 핫 데이터들과 상기 무효 콜드 데이터들에 대한 언맵핑 상태를 보장하는 소거(erase) 커맨드 또는 트림(trim) 커맨드를 상기 호스트 컨트롤러를 통해 상기 비휘발성 메모리 장치에 제공하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  12. 제 8 항에 있어서, 상기 파일 시스템은 상기 데이터들을 파일 종류에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  13. 제 8 항에 있어서, 상기 파일 시스템은 상기 데이터들을 사용 접근 빈도에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  14. 제 8 항에 있어서, 상기 파일 시스템은 상기 데이터들을 파일 용량에 기초하여 상기 핫 데이터들과 상기 콜드 데이터들로 구분하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  15. 제 8 항에 있어서, 상기 파일 시스템 주도 단편화 동작은 기 설정된 주기마다 수행되거나, 사용자 지정 시간에 수행되거나, 또는 상기 비휘발성 메모리 장치에서 기입 동작, 독출 동작 및 소거 동작이 수행되지 않을 때 수행되는 것을 특징으로 하는 비휘발성 메모리 시스템.
KR1020150075693A 2015-05-29 2015-05-29 비휘발성 메모리 시스템 KR101718713B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150075693A KR101718713B1 (ko) 2015-05-29 2015-05-29 비휘발성 메모리 시스템
PCT/KR2016/004272 WO2016195242A1 (ko) 2015-05-29 2016-04-25 비휘발성 메모리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150075693A KR101718713B1 (ko) 2015-05-29 2015-05-29 비휘발성 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20160139864A true KR20160139864A (ko) 2016-12-07
KR101718713B1 KR101718713B1 (ko) 2017-03-22

Family

ID=57440645

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150075693A KR101718713B1 (ko) 2015-05-29 2015-05-29 비휘발성 메모리 시스템

Country Status (2)

Country Link
KR (1) KR101718713B1 (ko)
WO (1) WO2016195242A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061608B2 (en) 2018-04-23 2021-07-13 SK Hynix Inc. Memory controller and memory system having the same
US11294587B2 (en) 2019-04-26 2022-04-05 SK Hynix Inc. Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device
KR20230072365A (ko) * 2021-11-17 2023-05-24 삼성전자주식회사 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치
US12014772B2 (en) 2021-11-17 2024-06-18 Samsung Electronics Co., Ltd. Storage controller and storage device including the same

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643066B (zh) * 2018-01-15 2018-12-01 慧榮科技股份有限公司 用來於一記憶裝置中重新使用關於垃圾收集的一目的地區塊之方法、記憶裝置及其控制器以及電子裝置
CN109558075B (zh) * 2018-10-29 2023-03-24 珠海妙存科技有限公司 一种利用数据冷热属性存储数据的方法及装置
CN117539692B (zh) * 2024-01-09 2024-03-15 武汉麓谷科技有限公司 一种zns固态硬盘数据集管理命令实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080030756A (ko) * 2006-10-02 2008-04-07 삼성전자주식회사 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
KR20090117935A (ko) * 2008-03-01 2009-11-16 가부시끼가이샤 도시바 메모리 시스템
KR20140065856A (ko) * 2012-11-22 2014-05-30 주식회사 이에프텍 비휘발성 메모리 시스템 및 이를 위한 맵핑 테이블 관리 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101023013B1 (ko) * 2009-03-19 2011-03-24 주식회사 에이텍 낸드 플래시 메모리 기반 파일시스템에서 데이터 저장방법
KR101774496B1 (ko) * 2010-12-08 2017-09-05 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080030756A (ko) * 2006-10-02 2008-04-07 삼성전자주식회사 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
KR20090117935A (ko) * 2008-03-01 2009-11-16 가부시끼가이샤 도시바 메모리 시스템
KR20140065856A (ko) * 2012-11-22 2014-05-30 주식회사 이에프텍 비휘발성 메모리 시스템 및 이를 위한 맵핑 테이블 관리 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061608B2 (en) 2018-04-23 2021-07-13 SK Hynix Inc. Memory controller and memory system having the same
US11294587B2 (en) 2019-04-26 2022-04-05 SK Hynix Inc. Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device
KR20230072365A (ko) * 2021-11-17 2023-05-24 삼성전자주식회사 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치
US12014772B2 (en) 2021-11-17 2024-06-18 Samsung Electronics Co., Ltd. Storage controller and storage device including the same

Also Published As

Publication number Publication date
WO2016195242A1 (ko) 2016-12-08
KR101718713B1 (ko) 2017-03-22

Similar Documents

Publication Publication Date Title
US11593259B2 (en) Directed sanitization of memory
KR101718713B1 (ko) 비휘발성 메모리 시스템
US10949355B2 (en) Methods and apparatus for workload based dynamic cache control in SSD
US10657047B2 (en) Data storage device and method of performing partial garbage collection
US8489855B2 (en) NAND flash-based solid state drive and method of operation
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
US9753847B2 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9904490B2 (en) Solid-state mass storage device and method for persisting volatile data to non-volatile media
US20140089564A1 (en) Method of data collection in a non-volatile memory
US8452940B2 (en) Optimized memory management for random and sequential data writing
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
JP5728672B2 (ja) ハイブリッドメモリ管理
US7120729B2 (en) Automated wear leveling in non-volatile storage systems
US8635399B2 (en) Reducing a number of close operations on open blocks in a flash memory
EP2565792A1 (en) Block management schemes in hybrid SLC/MLC memory
CN105718530B (zh) 文件存储系统及其文件存储控制方法
US9507523B1 (en) Methods, devices and systems for variable size logical page management in a solid state drive
US8892816B1 (en) System and method for writing data to a memory
CN112130749B (zh) 数据储存装置以及非挥发式存储器控制方法
TWI718710B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
CN111796761A (zh) 存储器件、控制器以及用于操作控制器的方法
US20100318726A1 (en) Memory system and memory system managing method
TWI696916B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
WO2014185038A1 (ja) 半導体記憶装置およびその制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200217

Year of fee payment: 4