KR20240062319A - 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법 - Google Patents

플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법 Download PDF

Info

Publication number
KR20240062319A
KR20240062319A KR1020220142453A KR20220142453A KR20240062319A KR 20240062319 A KR20240062319 A KR 20240062319A KR 1020220142453 A KR1020220142453 A KR 1020220142453A KR 20220142453 A KR20220142453 A KR 20220142453A KR 20240062319 A KR20240062319 A KR 20240062319A
Authority
KR
South Korea
Prior art keywords
meta
page
pages
metadata
writing
Prior art date
Application number
KR1020220142453A
Other languages
English (en)
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 KR1020220142453A priority Critical patent/KR20240062319A/ko
Priority to US18/207,963 priority patent/US20240143500A1/en
Priority to CN202310966955.1A priority patent/CN117953942A/zh
Priority to EP23190543.1A priority patent/EP4361821A1/en
Publication of KR20240062319A publication Critical patent/KR20240062319A/ko

Links

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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7207Details relating to flash memory management management of metadata or control data
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

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

Abstract

본 발명의 실시 예에 따른 메모리 시스템은, 메타 블록과 데이터 블록을 갖는 플래시 메모리; 및 상기 메타 블록에 저장될 메타 데이터를 관리하는 메타 데이터 관리 모듈을 포함하는 메모리 컨트롤러를 포함한다. 상기 메타 데이터 관리 모듈은, 프리 페이지들의 수와 미리 설정된 프리 페이지 수(이하, '설정 프리 페이지 수'라 함)를 비교하고, 비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정할 수 있다.

Description

플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법 {MEMORY SYSTEM BASED ON A FLASH MEMORY AND METHOD FOR MANAGING META DATA THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로 더욱 상세하게는 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에, 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 반도체 메모리 장치는 전원의 공급 여부에 관계없이 보존되어야 할 내용을 저장하는 데 쓰인다.
불휘발성 메모리의 대표적인 예로 플래시 메모리가 있다. 플래시 메모리는 컴퓨터나 스마트폰 등과 같은 정보기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 최근, 스마트폰과 같은 모바일 장치들에 탑재하기 위하여 플래시 메모리의 고용량, 고속 입출력, 저전력화 기술들이 활발하게 연구되고 있다.
플래시 메모리는 읽기 속도에 비해 쓰기 속도와 소거 속도가 느리고, 사용할 수 있는 횟수가 제한되어 있고, 겹쳐쓰기(over-write)가 안되는 단점이 있다. 그래서 플래시 메모리는 쓰기 가능 공간이 부족할 때 공간 확보를 위한 가비지 컬렉션(garbage collection)을 따로 수행하여야 한다. 이러한 가비지 컬렉션 작업으로 인하여 진행 중인 프로세스가 지연될 수 있기 때문에 그 지연 시간을 줄이기 위한 방법이 필요하다.
본 발명은 상술한 과제를 해결하기 위한 것으로서, 본 발명의 목적은 쓰기 지역성을 활용하여 가비지 컬렉션 동작을 줄이고 저장 장치의 오픈 타임(open)을 줄이는 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 메모리 시스템은, 메타 블록과 데이터 블록을 갖는 플래시 메모리; 및 상기 메타 블록에 저장될 메타 데이터를 관리하는 메타 데이터 관리 모듈을 포함하는 메모리 컨트롤러를 포함한다. 상기 메타 데이터 관리 모듈은, 프리 페이지들의 수와 미리 설정된 프리 페이지 수(이하, '설정 프리 페이지 수'라 함)를 비교하고, 비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정할 수 있다.
본 발명은 플래시 메모리를 기반으로 하는 메모리 시스템의 메타 데이터 관리 방법에 관한 것으로, 프리 페이지들의 수와 미리 설정된 프리 페이지 수(이하, '설정 프리 페이지 수'라 함)를 비교하는 단계; 및 비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 단계를 포함한다. 상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 큰 경우에 상기 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정한다. 상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 적거나 같은 경우에 상기 연속적 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정한다.
본 발명은 플래시 메모리를 기반으로 하는 메모리 시스템의 메타 데이터 관리 방법에 관한 것으로, 프리 페이지들의 수와 미리 설정된 프리 페이지 수(이하, '설정 프리 페이지 수'라 함)를 비교하는 단계; 및 비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 단계를 포함한다. 상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 큰 경우에 상기 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정한다. 상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 적거나 같은 경우에 상기 연속적 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정한다.
본 발명의 실시 예에 따른 플래시 메모리를 기반으로 하는 메모리 시스템은 메타 데이터 관리 모듈을 이용하여 메타 가비지 컬렉션을 수행하지 않고, 지역성(locality)를 모두 고려한 메타 쓰기 선택 동작을 수행할 수 있다. 본 발명에 의하면, 지역성이 있는 쓰기 작업부하(write workload) 수행 시에 리플레이할 저널 수를 줄일 수 있다. 또한, 본 발명은 메모리 시스템의 오픈 타임(open time)을 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1에 도시된 버퍼 메모리에 저장되는 데이터의 예를 보여주는 블록도이다.
도 3은 도 1에 도시된 메모리 시스템이 파워 온 된 상태에서 파워 오프가 발생되기 전까지의 메타 데이터를 관리하는 방법을 보여주는 순서도이다.
도 4는 도 1에 도시된 메모리 시스템의 메타 데이터 복원 방법을 예시적으로 보여주는 순서도이다.
도 5는 도 1에 도시된 메타 데이터 관리 모듈을 설명하기 위한 블록도이다.
도 6은 도 3에 도시된 메타 데이터 관리 모듈의 연속적 메타 쓰기 방법을 예시적으로 설명하기 위한 타이밍도이다.
도 7은 도 6과 같이 플래시 메모리에 메타 데이터와 로그 데이터가 저장된 상태에서 Ta 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 순서도이다.
도 8은 도 3에 도시된 메타 데이터 관리 모듈의 연속적 메타 쓰기 방법을 예시적으로 설명하기 위한 타이밍도이다.
도 9는 도 8과 같이 메타 데이터와 로그 데이터가 저장된 상태에서 Tb 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 순서도이다.
도 10은 도 3에 도시된 메타 데이터 관리 모듈의 더티 메타 쓰기 방법을 예시적으로 설명하기 위한 타이밍도이다.
도 11은 도 10과 같이 메타 데이터와 로그 데이터가 저장된 상태에서 Tc 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 순서도이다.
도 12 내지 도 14는 도 1에 도시된 메타 데이터 관리 모듈의 내부 구성을 예시적으로 보여주는 블록도이다.
도 15는 도 12에 도시된 메타 데이터 관리 모듈의 동작 방법을 예시적으로 보여주는 순서도이다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템의 플래시 메모리와 메모리 컨트롤러를 SSD(solid state drive)로 구현한 예를 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
I. 메타 데이터 관리 모듈을 포함하는 메모리 시스템
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템은 플래시 메모리(1100), 메모리 컨트롤러(1200), 버퍼 메모리(1300), 그리고 호스트(1500)를 포함한다.
플래시 메모리(1100)는 플래시 인터페이스(flash interface, 1201)를 통해 메모리 컨트롤러(1200)와 연결될 수 있다. 플래시 메모리(1100)는 메모리 셀 어레이(memory cell array, 1110)와 주변 회로(peripheral circuit, 1115)를 포함할 수 있다. 주변 회로(1115)는 메모리 셀 어레이(1110)의 데이터를 저장하거나 읽는 데 필요한 아날로그 또는 디지털 회로들을 모두 포함할 수 있다.
메모리 셀 어레이(1110)는 복수의 메모리 블록으로 구성될 수 있다. 각각의 메모리 블록은 수직형(vertical) 3차원 구조를 가질 수 있다. 메모리 셀 어레이(1110)는 설계 배치 구조 상으로 주변 회로(1115) 옆이나 위에 위치할 수 있다. 메모리 셀 어레이(1110)가 주변 회로(1115) 위에 위치하는 구조를 COP(cell on peripheral) 구조라고 한다. 메모리 셀 어레이(1110)는 주변 회로(1115)와 별도의 칩으로 제작될 수 있다. 메모리 셀 어레이(1110)를 포함한 상부 칩과 주변 회로(1115)를 포함한 하부칩은 본딩(bonding) 방식에 의해 서로 연결될 수 있다. 이러한 구조를 C2C(chip to chip) 구조라고 한다.
메모리 셀 어레이(1110)는 메타 블록(1111)과 데이터 블록(1112)을 포함할 수 있다. 메타 블록(1111)은 메타 데이터를 저장할 수 있다. 메타 데이터(meta data)란 사용자 데이터 또는 플래시 메모리(1100)를 관리하기 위하여 생성된 데이터이다. 메타 데이터는 논리적 주소(Logical Address)를 플래시 메모리(1100)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 맵핑(mapping) 정보를 포함하고, 플래시 메모리(1100)의 메모리 공간을 관리하기 위한 정보들도 포함할 수 있다.
메모리 컨트롤러(1200)는 호스트 인터페이스(host interface, 1202)를 통해 호스트와 연결될 수 있다. 호스트 인터페이스(1202)에는 ATA, SATA, PATA, USB, SCSI, ESDI, IEEE 1394, IDE, 카드 인터페이스와 같은 표준 인터페이스가 포함될 수 있다. 메모리 컨트롤러(1200)는 메타 데이타 관리 모듈(1236)을 포함할 수 있다.
메타 데이터 관리 모듈(1236)은 메모리 시스템에 전원이 공급되면 플래시 메모리(1100)에 저장되어 있는 복수의 그룹(조각)으로 분할된 메타 데이터들을 순차적으로 읽어내어 버퍼 메모리(1300)에 저장하기 위한 커맨드 및 어드레스를 생성할 수 있다. 메타 데이터 관리 모듈(1236)은 플래시 메모리(1100)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 버퍼 메모리(1300)에 저장된 메타 데이터를 업데이트하고, 메타 데이터 변경에 상응하는 로그 엔트리(log entry) 정보를 생성시켜 버퍼 메모리(1300)에 저장할 수 있다.
로그 엔트리 정보에는 메타 데이터의 변경을 복원하는데 필요한 정보가 포함될 수 있다. 일 예로서, 로그 엔트리 정보는 메타 데이터의 변경이 발생한 동작을 나타내는 타입에 대한 정보 및 메타 데이터의 변경을 복원하기 위한 실질적인 데이터를 포함할 수 있다. 메타 데이터의 변경이 발생한 동작을 나타내는 타입에 대한 정보로는 쓰기 동작, 블록 할당 동작, 페이지 복사 동작 등의 메타 데이터를 변경시킬 수 있는 모든 동작(operation)에 대한 타입을 정의하는 정보들이 포함될 수 있다. 그리고 메타 데이터의 변경을 복원하기 위한 실질적인 데이터에는 논리적 주소, 이전 물리적 주소, 새로운 물리적 주소 등이 포함될 수 있다. 로그 데이터는 로그 엔트리 정보들로 구성된다.
메타 데이터 관리 모듈(1236)은 버퍼 메모리(1300)에 저장된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수에 도달될 때마다 버퍼 메모리(1300)에 저장된 복수의 그룹으로 분할된 메타 데이터들 중에서 선택된 하나의 그룹의 메타 데이터와 로그 데이터를 플래시 메모리(1100)에 저장하도록 메모리 컨트롤러(1200)를 제어할 수 있다.
일 예로서, 버퍼 메모리(1300)에 할당된 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워질 때 버퍼 메모리(1300)에 저장된 복수의 그룹으로 분할된 메타 데이터들을 라운드-로빈(round-robin) 방식으로 돌아가면서 하나의 그룹의 메타 데이터를 선택하고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터를 플래시 메모리(1100)에 저장할 수 있다.
예를 들면, 메타 데이터가 n개 그룹인 MD1~MDn으로 분할되어 저장되어 있는 경우에, MD1부터 MDn까지 라운드-로빈 방식으로 돌아가면서 순차적으로 한 그룹씩의 메타 데이터를 선택하여 로그 데이터와 함께 플래시 메모리(1100)에 저장할 수 있다. 플래시 메모리(1100)에 로그 데이터를 저장하고 나서, 메타 데이터 관리 모듈(1236)은 버퍼 메모리(1300)에 저장된 로그 엔트리 정보들을 삭제할 수 있다. 이에 따라서, 버퍼 메모리(1300)에 할당된 로그 엔트리 영역은 비워진다.
메타 데이터 관리 모듈(1236)는 비정상적인 파워 오프(power off) 상태가 발생되고 나서 파워 온(power on) 되는 경우에 플래시 메모리(1100)에 저장된 순서대로 유효한 로그 데이터 및 분할된 그룹 단위로 유효한 메타 데이터를 읽어내어 메타 데이터를 복원할 수 있다. 여기에서, 비정상적인 파워 오프 상태는 메모리 시스템으로 파워 오프 명령이 수신되지 않은 상태에서 공급 전원이 차단되는 상태를 의미한다.
버퍼 메모리(1300)에는 호스트(1500)로부터 전송된 데이터 및 메모리 컨트롤러(1200)에서 생성된 데이터가 임시로 저장되거나 호스트(1500)로 전송될 데이터를 임시로 저장된다. 또한, 버퍼 메모리(1300)에는 메타 데이터 및 로그 데이터를 저장할 수 있는 영역이 할당되어 있다. 버퍼 메모리(1300)는 DRAM, SRAM 등으로 구현될 수 있다.
도 2는 도 1에 도시된 버퍼 메모리에 저장되는 데이터의 예를 보여주는 블록도이다. 도 2를 참조하면, 버퍼 메모리(1300)에는 복수의 그룹으로 분할된 메타 데이터가 저장될 수 있다. 그리고 버퍼 메모리(1300)에 저장되는 로그 데이터는 제한된 개수의 로그 엔트리로 구성될 수 있다.
일 예로서, 메타 데이터를 플래시 메모리(1100)의 물리적인 페이지 저장 단위로 분할할 수 있다. 그리고 멀티 플레인(multi-plane)에 걸쳐있는 페이지를 내부에서 임의의 크기로 분할하여 로그 데이터와 메타 데이터의 일부를 저장할 수도 있다.
또한, 플래시 메모리(1100)의 하나의 물리적인 페이지에 하나의 그룹의 메타 데이터와 로그 데이터를 함께 저장할 수 있도록 메타 데이터의 분할 사이즈와 로그 데이터를 구성하는 로그 엔트리의 개수를 결정할 수도 있다. 메타 데이터는 논리적 어드레스를 기준으로 복수의 그룹으로 분할될 수 있다. 도 2에서는 메타 데이터가 (n+1)개로 분할되어 있는 것을 보여준다.
메타 데이터 관리 모듈(1236)은 분할된 그룹 단위로 메타 데이터를 관리할 수 있다. 구체적으로, 메타 데이터 관리 모듈(1236)은 업데이트된 메타 데이터 및 로그 데이터를 플래시 메모리(1100)에 저장하고, 또한 저장된 로그 데이터를 이용하여 메타 데이터를 복원 처리할 수 있다.
예를 들면, 메타 데이터 관리 모듈(1236)은 다음과 같이 방식으로 업데이트된 메타 데이터 및 로그 데이터를 플래시 메모리(1100)에 저장할 수 있다. 먼저, 메타 데이터를 일정한 사이즈로 나누고 각각을 MD_i라고 하자. 여기에서, i=0, 1, 2, ... , n 이고, (n+1)은 메타 데이터를 나눈 개수이다. 즉, 분할된 메타 데이터의 그룹 개수가 된다. 그리고, 분할된 하나의 그룹의 메타 데이터(MD_i)는 메타 데이터를 구성하는 하나의 메타 데이터 조각에 해당된다.
업데이트된 메타 데이터는 버퍼 메모리(1300) 상에 바로 반영하고, 업데이트 되기 이전의 메타 데이터로부터 복원할 수 있는 로그 데이터는 따로 저장한다. 로그 데이터가 할당된 사이즈에 모두 저장되면, 로그 데이터와 분할된 일부 그룹의 메타 데이터를 선택하여 로그 데이터와 같은 시점에 플래시 메모리(1100)에 쓴다.
어떤 시점(Tj)에 플래시 메모리(1100)에 쓴 i번째 메타 데이터의 일부분을 MD_i(Tj)라고 하자. 그리고, 같은 시점(Tj)에 쓴 로그 데이터를 Log(Tj)라고 하자. 이 경우에 MD_i(Tj)는 Log(Tk) k≤j인 로그 데이터를 모두 반영하고 있다. 반대로, MD_i(Tj)는 Log(Tk) j<k인 로그 데이터를 재생(replay)하여 복원할 수 있다. 그리고 MD_i(Tj)를 플래시 메모리(1100)에 쓸 경우, j<k인 MD_i(Tk)는 무효한 메타 데이터가 된다.
위와 같은 특징을 이용하여 분할된 메타 데이터 조각 MD_i를 라운드-로빈(round-robin) 방식으로 선택하여 순차적으로 저장한다. 이 경우 MD_i1을 선택하여 쓴 시점(Tj1) 부터 한 바퀴 돌아서 MD_i2를 쓴 시점(Tj2)이 지난 후, j<j1인 Log(Tj)는 무효한 로그 데이터가 된다. 또한, 시점 (Tj1)과 (Tj2) 사이에 쓴 MD_i(Tj)에 대해서 MD_i(Tk)인 메타 데이터는 무효화된다.
한편, 메타 데이터 관리 모듈(1236)은 다음과 같이 방식으로 저장된 로그 데이터를 이용하여 메타 데이터를 복원할 수 있다. 메타 데이터 조각을 플래시 메모리(1100)에 쓴 시점대로 읽어낸다. 다만, 유효한 조각만 읽어낸다. 그리고 해당 시점에 플래시 메모리(1100)에 쓰인 로그 데이터가 유효한 것이면 해당 로그 데이터도 읽어낸다. 로그 데이터를 읽어낸 후에, 로그 데이터를 쓴 시점 이전에 쓴 메타 데이터 조각에 대해서는 로그 데이터를 이용하여 복원 처리한다. 만약에 로그 데이터에 남아있는 복원 정보가 아직 읽어내지 않은 메타 데이터 조각인 경우에는 복원 처리를 하지 않는다. 마지막에 쓰인 메타 데이터 조각과 로그 데이터를 읽을 때까지 위의 과정을 반복한다.
예를 들어, MD_i0(Tj0)를 처음에 플래시 메모리(1100)로부터 읽어내고, 시점(Tj1) 이전의 로그 데이터는 모두 무효화된 것으로 가정하고, 시점(Tj2)까지 로그 데이터와 메타 데이터 조각이 쓰여졌다고 가정하자. 그러면, j0≤j≤j1를 만족하는 시점에 쓰인 메타 데이터 조각 MD_i(Tj)는 로그 데이터는 읽지 않고 메타 데이터만 읽는다.
또한, j1≤j≤j2를 만족하는 시점에 쓰인 메타 데이터 조각 MD_i(Tj)와 Log(Tj)를 같이 읽고, 읽어낸 Log(Tj)를 이용하여 MD_i(TK)(k<j)인 메타 데이터 조각에 대하여 복원 처리한다 그리고, 로그 데이터를 재생하여 메타 데이터를 복원하는 과정과 메타 데이터 조각과 로그 데이터를 읽는 시간을 중첩시킬 수도 있다.
도 3은 도 1에 도시된 메모리 시스템이 파워 온 된 상태에서 파워 오프가 발생되기 전까지의 메타 데이터를 관리하는 방법을 보여주는 순서도이다. 도 3은 분할된 메타 데이터와 로그 데이터를 플래시 메모리(1100)에 저장하는 방법을 보여준다.
S110 단계에서, 메모리 컨트롤러(1200)는 플래시 메모리(1100)로부터 분할된 메타 데이터 조각들을 읽어내어 버퍼 메모리(1300)에 저장한다. 즉, 메모리 시스템이 파워 온 상태로 되면, 메모리 컨트롤러(1200)는 플래시 메모리로부터 메타 데이터의 조각에 해당되는 각 그룹의 메타 데이터를 읽어내어 버퍼 메모리(1300)에 저장한다. 일 예로서 메타 데이터가 4개의 그룹(조각)으로 분할된 경우에, 버퍼 메모리(1300)에는 4개 그룹의 메타 데이터 MD_0, MD_1, MD_2, MD_3이 각각 저장될 수 있다.
S120 단계에서, 메모리 시스템에서 메타 데이터 변경을 발생시키는 동작을 수행하는 경우에 버퍼 메모리(1300)에 저장된 메타 데이터를 업데이트시키고 메타 데이터 변경에 상응하는 로그 엔트리 정보를 생성시켜 버퍼 메모리(1300)에 저장한다. 즉, 플래시 메모리(1100)에 데이터를 쓰는 동작과 같은 메타 데이터 변경을 발생시키는 동작을 수행하는 경우에, 메모리 컨트롤러(1200)는 변경되는 메타 데이터가 포함된 그룹의 메타 데이터를 버퍼 메모리(1300)로부터 찾아내어 해당 그룹의 메타 데이터를 업데이트시킨다.
이와 더불어, 메모리 컨트롤러(1200)는 로그 엔트리 정보를 생성시켜 버퍼 메모리(1300)에 저장한다. 로그 엔트리 정보에는 메타 데이터의 변경이 발생한 동작을 나타내는 타입에 대한 정보 및 메타 데이터의 변경을 복원하기 위한 실질적인 데이터를 포함할 수 있다.
S130 단계에서, 메모리 컨트롤러(1200)는 생성된 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Nth)에 도달되는지를 판단한다. 일 예로서, 버퍼 메모리(1300)에 할당된 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워졌는지 여부로 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Nth)에 도달되는지를 판단할 수도 있다.
S130 단계의 판단 결과, 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Nth)에 도달되지 않은 경우에는 S120 단계로 피드백 된다. 만일, S130 단계의 판단 결과 로그 엔트리 정보의 개수가 초기 설정된 임계 개수(Nth)에 도달된 경우에는 S140 단계가 수행된다.
S140 단계에서, 메모리 컨트롤러(1200)는 버퍼 메모리(1300)에 저장된 복수 그룹의 메타 데이터 중에서 하나의 그룹의 메타 데이터를 선택할 수 있다. 일 예로서, 모든 그룹의 메타 데이터에 대하여 라운드-로빈(round-robin) 방식으로 돌아가면서 순차적으로 선택할 수 있다. 연속적 메타 쓰기(consecution meta write)는 메타 쓰기 요청 시에, 변경된 메타 페이지들과 상관없이 모든 메타 페이지들을 라운드-로빈(round-robin) 방식으로 돌려쓰는 방식이다.
다른 예로서, 업데이트가 발생된 그룹의 메타 데이터에 대해서만 라운드-로빈(round-robin) 방식으로 돌아가면서 순차적으로 선택할 수도 있다. 더티 메타 쓰기(dirty meta write)는 메타 쓰기 요청 시에 업데이트가 발생된 메타 페이지들만 쓰는 방식이다.
S150 단계에서, S140 단계의 하나의 선택 그룹의 메타 데이터와 로그 데이터를 버퍼 메모리(1300)에서 읽어내어 플래시 메모리(1100)에 저장한다.
S160 단계에서, S150 단계의 저장된 메타 데이터에 관련된 루트 정보를 플래시 메모리(1100)에 저장하고, 버퍼 메모리(1300)에 저장된 로그 엔트리 정보를 삭제한다. 여기에서, 메타 데이터에 관련된 루트 정보에는 메타 데이터 및 로그 데이터가 저장된 플래시 메모리(1100)의 물리적 위치 정보 및 그룹별 메타 데이터의 저장 순서에 대한 정보가 포함될 수 있다.
S170 단계에서, 메모리 시스템에서 파워 오프가 발생되는지를 판단한다. 파워 오프가 발생된 경우에는 단계를 종료하고, 그렇지 않은 경우에는 S120 단계로 피드백 된다. 참고적으로, 정상적인 파워 오프 상태가 발생된 경우에는 버퍼 메모리(1300)에서 업데이트된 모든 그룹의 메타 데이터를 플래시 메모리(1100)에 저장하고 나서 메모리 시스템에 공급되는 전원을 차단시킬 수 있다.
도 4는 도 1에 도시된 메모리 시스템의 메타 데이터 복원 방법을 예시적으로 보여주는 순서도이다.
S210 단계에서, 메모리 컨트롤러(1200)는 메모리 시스템이 파워 온(power on) 되는지를 판단한다. 파워 온 되지 않은 경우에는 메타 데이터 복원 동작은 당연히 수행되지 않을 것이다. 메모리 시스템이 파워 온 된 경우에는 S220 단계가 수행된다.
S220 단계에서, 플래시 메모리(1100)에 저장된 순서에 따라서 그룹 단위로 유효한 메타 데이터 및 로그 데이터를 독출한다. 만일, 플래시 메모리(1100)에 유효한 로그 데이터가 저장되어 있지 않은 경우에는 유효한 메타 데이터만을 그룹별로 독출한다. 메타 데이터와 로그 데이터가 저장된 위치 정보 및 저장 순서에 대한 정보는 플래시 메모리(1100)의 루트 정보 영역으로부터 얻을 수 있다.
S230 단계에서, 메모리 컨트롤러(1200)는 독출된 로그 데이터를 이용하여 메타 데이터를 순차적으로 복원 처리한다. 일 예로서, 독출된 로그 데이터에 근거하여 로그 데이터보다 이전에 저장된 유효한 메타 데이터를 복원 처리할 수 있다. 그리고 로그 데이터 및 메타 데이터를 독출하는 프로세스와 로그 데이터를 재생하여 메타 데이터를 복원시키는 프로세스를 수행하는 시간을 중첩시킬 수 있다.
본 발명의 실시 예에 따른 메타 데이터 관리 모듈(1236)은 연속적 메타 쓰기와 더티 메타 쓰기 동작을 선택적으로 수행할 수 있다. 예를 들면, 메타 데이터 관리 모듈(1236)는 업데이트된 메타 페이지들에 상관없이 모든 메타 페이지들을 라운드-로빈(round-robin) 방식으로 돌려쓰다가, 특정 시점 이후에 업데이트가 발생된 메타 페이지들만 쓸 수 있다.
II. 연속적 메타 쓰기 및 더티 메타 쓰기 방법
도 5는 도 1에 도시된 메타 데이터 관리 모듈을 설명하기 위한 블록도이다. 도 5를 참조하면, 플래시 변환 계층(1230)은 호스트(1500)로부터 메타 쓰기 요청을 입력받고 메타 데이터 관리 동작을 수행할 수 있다. 이를 위해 플래시 변환 계층(1230)은 메타 데이터 관리 모듈(1236)을 포함할 수 있다.
메타 데이터 관리 모듈(1236)은 연속적 메타 쓰기와 더티 메타 쓰기 동작을 선택적으로 수행함으로 메타 데이터 관리 동작을 수행할 수 있다. 연속적 메타 쓰기는 메타 쓰기 요청 시에, 변경된 메타 페이지들과 상관없이 모든 메타 페이지들을 라운드-로빈(round-robin) 방식으로 돌려쓰는 방식이다. 더티 메타 쓰기는 메타 쓰기 요청 시에 변경된 메타 페이지들만 쓰는 방식이다.
도 6은 도 3에 도시된 메타 데이터 관리 모듈의 연속적 메타 쓰기 방법을 예시적으로 설명하기 위한 타이밍도이다. 도 6 은 4개 그룹의 메타 데이터 MD_0 ~ MD_3이 라운드-로빈 방식으로 돌아가면서 선택되고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터가 함께 플래시 메모리(1100)에 저장되는 예를 보여준다.
도 6을 참조하면, 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 첫 번째 시점(T1)의 로그 데이터를 Log_0라 하고, 이때 선택된 메타 데이터 조각이 0번 그룹의 메타 데이터 MD_0인 경우에 (MD_0, Log_0)가 첫 번째 시점(T1)에 플래시 메모리(1100)에 동시에 저장된다. 첫 번째 시점(T1)에 플래시 메모리에 MD_0이 저장되면 플래시 메모리(1100)에 이전에 저장되어 있던 MD_0은 무효화된다. 참고적으로, 무효화된 메타 데이터 조각에는 빗금을 쳤다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 두 번째 시점(T2)의 로그 데이터를 Log_1이라 하고, 이때 선택된 메타 데이터 조각이 1번 그룹의 메타 데이터 MD_1인 경우에 (MD_1, Log_1)가 두 번째 시점(T2)에 플래시 메모리(1100)에 동시에 저장된다. 두 번째 시점(T2)에 플래시 메모리에 MD_1이 저장되면 플래시 메모리(1100)에 이전에 저장되어 있던 MD_1은 무효화된다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 세 번째 시점(T3)의 로그 데이터를 Log_2라 하고, 이때 선택된 메타 데이터 조각이 2번 그룹의 메타 데이터 MD_2인 경우에 (MD_2, Log_2)가 세 번째 시점(T3)에 플래시 메모리(1100)에 동시에 저장된다. 세 번째 시점(T3)에 플래시 메모리(1100)에 MD_2가 저장되면 플래시 메모리(1100)에 이전에 저장되어 있던 MD_2는 무효화된다.
도 7은 도 6과 같이 플래시 메모리에 메타 데이터와 로그 데이터가 저장된 상태에서 Ta 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 순서도이다. 메모리 컨트롤러(1200)는 메모리 시스템이 파워 온 되는지를 판단한다(S310).
메모리 시스템이 파워 온 되는 경우에 메모리 컨트롤러(1200)는 플래시 메모리(1100)의 루트 정보 영역에 저장된 메타 데이터와 로그 데이터의 위치 정보 및 저장 순서에 대한 정보를 검색하고, 검색된 정보를 이용하여 플래시 메모리(1100)에 저장된 순서대로 유효한 그룹의 메타 데이터를 독출한다. 도 6을 참조하면 MD_3이 시간적으로 가장 먼저 플래시 메모리(1100)에 저장된 유효한 메타 데이터임을 알 수 있다. 이에 따라서, MD_3을 읽어내어 버퍼 메모리(1300)에 저장한다(S320).
MD_3 다음에 (MD_0, Log_0)가 플래시 메모리(1100)에 저장되었으므로, (MD_0, Log_0)를 읽어내어 버퍼 메모리(1300)에 저장한다(S330).
Log_0이 쓰여진 시점 이전에 MD_3이 플래시 메모리(1100)에 쓰여졌으므로, Log_0에 근거하여 버퍼 메모리(1300)에 저장된 MD_3을 복원 처리한다. (MD_0, Log_0) 다음에 플래시 메모리(1100)에 저장된 (MD_1, Log_1)을 읽어내어 버퍼 메모리(1300)에 저장한다(S340). 총 메타 복원 시간을 단축시키기 위하여 MD_3을 복원 처리하는 프로세스와 (MD_1, Log_1)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_1이 쓰여진 시점 이전에 MD_0 및 MD_3이 플래시 메모리(1100)에 쓰여졌으므로, Log_1에 근거하여 버퍼 메모리(1300)에 저장된 MD_0 및 MD_3을 각각 복원 처리한다. (MD_1, Log_1) 다음에 플래시 메모리(1100)에 저장된 (MD_2, Log_2)을 읽어내어 버퍼 메모리(1300)에 저장한다(S350). MD_0 및 MD_3을 복원 처리하는 프로세스와 (MD_2, Log_2)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_2가 쓰여진 시점 이전에 MD_1, MD_0 및 MD_3이 플래시 메모리(1100)에 쓰여졌으므로, Log_2에 근거하여 버퍼 메모리(1300)에 저장된 MD_1, MD_0 및 MD_3을 각각 복원 처리한다(S360). 도 6을 참조하면, (MD_2, Log_2) 이후에 플래시 메모리(1100)에 저장된 메타 데이터 및 로그 데이터가 없으므로 복원 과정을 종료한다.
도 8은 도 3에 도시된 메타 데이터 관리 모듈의 연속적 메타 쓰기 방법을 예시적으로 설명하기 위한 타이밍도이다. 도 8은 도 6에 도시된 연속적 메타 쓰기 동작이 Tb 시점까지 계속된 예를 보여준다.
도 8을 참조하면, 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 네 번째 시점(T4)의 로그 데이터를 Log_3라 하고, 이때 선택된 메타 데이터 조각이 3번 그룹의 메타 데이터 MD_3인 경우에 (MD_3, Log_3)가 네 번째 시점(T4)에 플래시 메모리(1100)에 동시에 저장된다. 네 번째 시점(T4)에 플래시 메모리(1100)에 MD_3이 저장되면 플래시 메모리(1100)에 이전에 저장되어 있던 MD_3은 무효화된다. 네 번째 시점(T4)에서 모든 그룹의 메타 데이터가 선택되어 플래시 메모리(1100)에 저장된다.
로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 다섯 번째 시점(T5)의 로그 데이터를 Log_0라 하고, 0번 그룹의 메타 데이터 MD_0이 선택되어 (MD_0, Log_0)가 다섯 번째 시점(T5)에 플래시 메모리(1100)에 동시에 저장된다. 다섯 번째 시점(T5)에 플래시 메모리(1100)에 (MD_0, Log_0)가 저장되면 플래시 메모리(1100)에 이전에 저장되어 있던 (MD_0, Log_0)은 무효화된다.
도 9는 도 8과 같이 메타 데이터와 로그 데이터가 저장된 상태에서 Tb 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 순서도이다. 메모리 컨트롤러(1200)는 메모리 시스템이 파워 온 되는지를 판단한다(S410).
메모리 시스템이 파워 온 되는 경우에 메모리 컨트롤러(1200)는 플래시 메모리(1100)의 루트 정보 영역에 저장된 메타 데이터와 로그 데이터의 위치 정보 및 저장 순서에 대한 정보를 검색하고, 검색된 정보를 이용하여 플래시 메모리(1100)에 저장된 순서대로 유효한 메타 데이터를 독출한다.
도 9를 참조하면 MD_1이 시간적으로 가장 먼저 플래시 메모리(1100)에 저장된 유효한 메타 데이터임을 알 수 있다. 이에 따라서, (MD_1, Log_1)를 읽어내어 버퍼 메모리(1300)에 저장한다(S420). 가장 먼저 플래시 메모리(1100)에 저장된 유효한 데이터를 읽어낼 때 로그 데이터는 읽어내지 않아도 상관이 없다. 이에 따라서, MD_1만을 읽어내어 버퍼 메모리(1300)에 저장할 수도 있다.
(MD_1, Log_1) 다음에 (MD_2, Log_2)가 플래시 메모리(1100)에 저장되었으므로, (MD_2, Log_2)를 읽어내어 버퍼 메모리(1300)에 저장한다(S430).
Log_2가 쓰여진 시점 이전에 MD_1이 플래시 메모리(1100)에 쓰여졌으므로, Log_2에 근거하여 버퍼 메모리(1300)에 저장된 MD_1을 복원 처리한다. (MD_2, Log_2) 다음에 플래시 메모리(1100)에 저장된 (MD_3, Log_3)을 읽어내어 버퍼 메모리(1300)에 저장한다(S440). MD_1을 복원 처리하는 프로세스와 (MD_3, Log_3)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_3이 쓰여진 시점 이전에 MD_2 및 MD_1이 플래시 메모리(1100)에 쓰여졌으므로, Log_3에 근거하여 버퍼 메모리(1300)에 저장된 MD_2 및 MD_1을 각각 복원 처리한다. (MD_3, Log_3) 다음에 플래시 메모리(1100)에 저장된 (MD_0, Log_0)을 읽어내어 버퍼 메모리(1300)에 저장한다(S450). MD_2 및 MD_1을 복원 처리하는 프로세스와 (MD_0, Log_0)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_0이 쓰여진 시점 이전에 MD_3, MD_2 및 MD_1이 플래시 메모리(1100)에 쓰여졌으므로, Log_0에 근거하여 버퍼 메모리(1300)에 저장된 MD_3, MD_2 및 MD_1을 각각 복원 처리한다(S460). 도 9를 참조하면, (MD_0, Log_0) 이후에 플래시 메모리(1100)에 저장된 메타 데이터 및 로그 데이터가 없으므로 복원 과정을 종료한다.
연속적 메타 쓰기는 변경된 메타 페이지들과 상관없이 모든 메타 페이지들을 라운드-로빈 방식으로 돌려쓴다. 따라서 연속적 메타 쓰기 방식은 메타 가비지 컬렉션 동작을 필요로 하지 않고 메타 공간을 최소화할 수 있다. 여기에서, 메타 가비지 컬렉션은 메타 블록의 프리 메타 페이지들의 수가 부족할 때, 유효 메타 페이지들을 옮기는 동작일 수 있다.
연속적 메타 쓰기 방식은 용량이 커질수록 오픈 타임이 늘어날 수 있다. 또한, 연속적 메타 쓰기 방식은 쓰기 지역성을 배제하고 모든 메타 페이지들을 순차적으로 기록할 수 있다. 메타 페이지들은 플래시 메모리(1100)의 용량에 비례한다. 따라서 연속적 메타 쓰기 방식은 SPOR(sudden power off recovery) 시에 리플레이할 저널 수가 증가할 수 있다.
도 10은 도 3에 도시된 메타 데이터 관리 모듈의 더티 메타 쓰기 방법을 예시적으로 설명하기 위한 타이밍도이다. 도 10은 업데이트된 그룹의 메타 데이터에 대해서만 라운드-로빈 방식으로 돌아가면서 선택하고, 선택된 하나의 그룹의 메타 데이터와 로그 데이터가 함께 플래시 메모리(1100)에 저장되는 경우의 예를 보여준다.
도 10을 참조하면, 로그 엔트리 영역에 로그 엔트리 정보가 모두 채워지는 시점에 업데이트된 그룹의 메타 데이터가 MD_1과 MD_3인 경우에 로그 엔트리 정보가 모두 채워질 때마다 MD_1과 MD_3이 라운드-로빈 방식으로 선택된다. 그리고 선택된 하나의 그룹의 메타 데이터와 로그 데이터가 순차적으로 플래시 메모리(1100)에 저장된다.
더티 메타 쓰기는 메타 쓰기 요청 시에 변경된 메타 페이지들만 반복해서 쓴다. 더티 메타 쓰기 방식은 지역성(locality)이 있는 쓰기 작업부하(write workload)에서는 리플레이할 저널 수를 줄여 SPOR 시간을 줄일 수 있다. 더티 메타 쓰기 방식은 메타 가비지 컬렉션 및 메타 웨어레벨링을 필요로 한다. 이러한 동작들로 인해 호스트(1500)의 입출력 레이턴시(I/O latency)가 증가할 수 있다.
도 11은 도 10과 같이 메타 데이터와 로그 데이터가 저장된 상태에서 Tc 시점에 비정상적인 파워 오프가 발생된 경우에 메타 데이터를 복원하는 동작을 보여주는 순서도이다. 메모리 컨트롤러(1200)는 메모리 시스템이 파워 온 되는지를 판단한다(S510).
메모리 시스템이 파워 온 되는 경우에 메모리 컨트롤러(1200)는 플래시 메모리(1100)의 루트 정보 영역에 저장된 메타 데이터와 로그 데이터의 위치 정보 및 저장 순서에 대한 정보를 검색하고, 검색된 정보를 이용하여 플래시 메모리(1100)에 저장된 순서대로 유효한 메타 데이터를 독출한다.
도 11을 참조하면, MD_0이 시간적으로 가장 먼저 플래시 메모리(1100)에 저장된 유효한 메타 데이터임을 알 수 있다. 이에 따라서, MD_0을 읽어내어 버퍼 메모리(1300)에 저장한다(S520).
MD_0 다음에 유효한 MD_2가 플래시 메모리(1100)에 저장되었으므로, MD_2를 읽어내어 버퍼 메모리(1300)에 저장한다(S530).
MD_2 다음에 유효한 (MD_3, Log_3)이 플래시 메모리(1100)에 저장되었으므로, (MD_3, Log_3)를 읽어내어 버퍼 메모리(1300)에 저장한다(S540). Log_3이 쓰여진 시점 이전에 MD_2 및 MD_0이 플래시 메모리(1100)에 쓰여졌으므로, Log_3에 근거하여 버퍼 메모리(1300)에 저장된 MD_2 및 MD_0을 각각 복원 처리한다. (MD_3, Log_3) 다음에 플래시 메모리(1100)에 저장된 (MD_1, Log_1)을 읽어내어 버퍼 메모리(1300)에 저장한다(S550). MD_2 및 MD_0을 복원 처리하는 프로세스와 (MD_1, Log_1)를 읽어내는 프로세스를 동시에 수행할 수 있다.
Log_1이 쓰여진 시점 이전에 MD_3, MD_2 및 MD_0이 플래시 메모리(1100)에 쓰여졌으므로, Log_1에 근거하여 버퍼 메모리(1300)에 저장된 MD_3, MD_2 및 MD_0을 각각 복원 처리한다(S560). 도 11을 참조하면, (MD_1, Log_1) 이후에 플래시 메모리(1100)에 저장된 메타 데이터 및 로그 데이터가 없으므로 복원 과정을 종료한다.
메모리 시스템에서 비정상적으로 파워 오프가 발생된 경우에 위에서 설명한 바와 같은 동작에 의하여 메타 데이터를 복원할 수 있게 된다. 본 발명에 따르면, 메모리 시스템에 일정한 데이터 패턴을 쓰기 위한 데이터와 커맨드를 호스트(1500)에서 메모리 시스템에 인가하고 나서, 메모리 시스템을 구성하는 플래시 메모리(1100)로 전송되어 쓰여지는 데이터를 확인할 때 메타 데이터가 특정 사이즈 단위로 일정하게 쓰여진다는 사실을 알 수 있다.
또한, 본 발명에 따르면 메타 데이터 복원 과정에서는 플래시 메모리(1100)로부터 분할된 각 그룹의 메타 데이터를 특정 시간 간격을 두고 순차적으로 읽어내어 버퍼 메모리(1300)에 저장된다는 사실을 알 수 있다. 특정 시간 간격은 복원 처리하는 데 쓰인 로그 양에 따라 달라지지만 메타 데이터를 읽은 순서대로 대체로 증가하는 추세를 보인다.
메타 데이터 관리 모듈(1236)은 연속적 메타 쓰기의 장점과 더티 메타 쓰기의 장점을 적절하게 사용함으로, 메타 데이터 관리 동작을 효과적으로 수행할 수 있다. 메타 데이터 관리 모듈(1236)은 프리 메타 페이지를 기준으로 쓰기 방식을 변경할 수 있다. 예를 들면, 메타 데이터 관리 모듈(1236)은 연속적 메타 쓰기 방식을 수행하다가, 프리 메타 페이지의 수가 초기 설정된 임계 개수에 도달하면 더티 메타 쓰기 방식을 수행할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 메타 데이터 관리 모듈(1236)을 이용하여 메타 가비지 컬렉션을 수행하지 않고, 지역성(locality)를 모두 고려한 메타 쓰기 선택 동작을 수행할 수 있다. 메타 데이터 관리 모듈(1236)은 지역성이 있는 쓰기 작업부하(write workload) 수행 시에, 리플레이할 저널 수를 줄일 수 있다. 본 발명에 의하면, 메모리 시스템의 오픈 타임(open time)을 줄일 수 있다.
III. 메타 데이터 관리 모듈의 내부 구성 및 동작 방법
도 12 내지 도 14는 도 1에 도시된 메타 데이터 관리 모듈의 내부 구성을 예시적으로 보여주는 블록도이다. 도 12를 참조하면, 메타 데이터 관리 모듈(1236)은 WOT(Write Order Table), DCS(Distance Check Selector), DS(Dirty Selector)를 포함한다.
WOT는 메타 가비지 컬렉션이 발생하지 않기 위한 페이지 선정 테이블 모듈이다. 이하에서는, 메타 가비지 컬렉션이 발생하지 않는 것을 No Meta GC라고도 한다. WOT는 메타 블록(1111)에서 가장 오래된 순으로 유효 메타 페이지를 관리할 수 있다.
WOT는 룩업(lookup), 진행(proceed), 재정렬(reorder)의 세가지 동작을 지원할 수 있다. lookup은 쓰기 위치(wp; write position)가 가리키는 페이지를 리턴하는 동작이다. proceed는 wp를 증가시켜, wp가 다음 유효 메타 페이지를 가리키도록 하는 동작이다. reorder (pageN)은 pageN을 wp의 뒤로 위치시키는 동작이다.
예를 들어 도 13을 참조하면, WOT가 DS로부터 reorder (page2) 커맨드를 받은 경우에, 메타 데이터 관리 모듈(1236)은 제2 페이지가 wp의 뒤에 위치하도록 할 수 있다. 마찬가지로, WOT가 DS로부터 reorder (page5) 커맨드를 받은 경우에, 메타 데이터 관리 모듈(1236)은 제5 페이지가 wp의 뒤에 위치하도록 순서를 재정렬할 수 있다.
DCS는 GFD(GC-free distance)를 정의하고 관리하기 위한 모듈이다. GFD는 메타 가비지 컬렉션을 발생하지 않을 최소 프리 메타 페이지 수를 의미한다. 즉, GFD는 No Meta GC를 위한 최소 프리 메타 페이지 수를 의미한다. 또한, GFD는 No Meta GC를 위한 최소 프리 메타 페이지 수에 추가 페이지 수를 더한 것일 수 있다. 여기에서, 추가 페이지 수는 설계 알고리즘에 따라 달라질 수 있다.
예를 들어 도 14를 참조하면, 초기 상태에서 메타 윈도우(meta window)는 제1 내지 제5 페이지라고 가정하고, GFD는 5라고 가정하자. 제1 페이지는 시작 페이지(START)이다. 여기에서 제1 페이지는 가장 오래된 유효 메타 페이지이다. 프리 메타 페이지들의 수는 메타 쓰기를 진행할 페이지(A)부터 가장 오래된 유효 메타 페이지까지의 페이지 수이다.
프리 메타 페이지들의 수(# of free meta pages)가 7로서, GFD(=5)보다 크기 때문에 더티 메타 쓰기 동작이 수행된다. 더티 메타 쓰기 동작 시에, WOT는 DS로부터 reorder (page2) 커맨드를 받고, 제2 페이지가 wp의 뒤에 위치하도록 할 수 있다. 또한, WOT가 DS로부터 reorder (page5) 커맨드를 받고, 제5 페이지가 wp의 뒤에 위치하도록 할 수 있다.
DCS는 프리 메타 페이지들의 수가 GFD(=5)에 도달하기 전까지는 더티 쓰기 방식을 수행할 수 있다. 즉, DCS는 더티 메타 페이지(dirty meta page)를 쓰기 대상 페이지로 선정할 수 있다. 이를 통해 DCS는 쓰기 지역성(write locality)를 반영할 수 있다.
도 14를 참조하면, 프리 메타 페이지들의 수는 메타 쓰기를 진행할 페이지(B)부터 가장 오래된 유효 메타 페이지까지 5 페이지일 수 있다. DCS는 프리 메타 페이지들의 수가 GFD에 도달하면, WOT의 wp가 가리키는 페이지를 쓰기 대상 페이지로 선정하고, 다음 페이지가 진행되도록 lookup 커맨드와 proceed 커맨드를 WOT로 제공할 수 있다.
메타 데이터 관리 모듈(1236)는 프리 메타 페이지들의 수가 GFD와 같기 때문에, 연속적 메타 쓰기 동작을 수행할 수 있다. 메타 데이터 관리 모듈(1236)은 메타 가비지 컬렉션이 발행하지 않도록 관리할 수 있다.
DS는 더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하기 위한 모듈이다. DS는 다양한 선택 알고리즘(selection algorithm)을 가질 수 있다. DS는 특정 선택 알고리즘에 따라, 더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하고, 이 페이지가 가장 마지막 쓰기 순서가 되도록 WOT를 갱신할 수 있다(reorder). 메타 쓰기 수행 시에 해당 페이지 이전 저널들은 무효화(invalidate)되어서 리플레이(replay)를 할 필요가 없어진다.
DS는 선택 알고리즘에 의해 메타 데이터를 선택하지 않은 경우에, WOT의 wp를 쓰기 페이지로 선택할 수 있다(lookup & proceed). 예를 들면, 더티 선택 알고리즘은 Round-robin, Random 또는 MFU(Most Frequently Updated)일 수 있다. Round-robin, Random은 더티 비트맵(dirty bitmap)처럼 더티 메타 페이지를 관리할 수 있다.
MFU는 메타 페이지별로 저널 수를 반영하여 선택할 수 있다. MFU는 저널의 수가 최대인 메타 페이지를 선택할 수 있다. 여기에서, 저널은 메타 데이터 변경 내용일 수 있다. 저널의 수는 일정 임계치(threshold)를 두어, 그 이상의 저널을 가진 메타 페이지들로 검사 대상을 선택할 수 있다. 저널 수 관리 방안은 저널 발생 시 해당 메타 페이지의 저널 카운트를 증가할 수 있다. 메타 쓰기 수행 시에, 해당 메타 페이지의 저널 수를 초기화할 수 있다.
이상에서 설명한 바와 같이, 메타 데이터 관리 모듈(1236)은 Write-Order Table (WOT), Distance-Check Selector (DCS) 및 Dirty Selector (DS)를 포함할 수 있다. 저널 풀(Journal full) 등에 의한 메타 쓰기 발생시, DCS는 WOT를 참고하여 플래시 메모리(1100)의 프리 메타 페이지 수(number of free meta pages)가 미리 정한 GDF(GC-free distance)에 도달했는지를 검사할 수 있다.
이 결과가 참이라면 WOT의 쓰기 위치(wp; write positon)를 쓰기 페이지로 선정하고 wp를 증가시킨다. 거짓이라면 DS에 페이지 선택을 요청한다. DS는 더티 메타(dirty meta)들 중에서 특정 선택 알고리즘을 통해 다음 쓰기 페이지를 선택할 수 있다. 이후, 선택된 페이지가 마지막 쓰기 순서가 되도록 WOT를 갱신한다. 메타 페이지가 선정되지 않은 경우, WOT의 wp를 쓰기 페이지로 선택할 수 있다.
도 15는 도 12에 도시된 메타 데이터 관리 모듈의 동작 방법을 예시적으로 보여주는 순서도이다. 도 15를 참조하면, 메타 데이터 관리 모듈(1236)은 호스트(1150)로부터 메타 페이지 선택을 위한 요청을 받을 수 있다(S610).
DCS는 프리 페이지 수가 GFD(GC-free distance)보다 작거나 같은지를 판단할 수 있다(S620). DCS는 프리 페이지 수가 GFD보다 크면(NO), 데티 메타 쓰기 동작을 수행할 수 있다(S630). DCS는 프리 페이지 사이즈가 GFD보다 작거나 같으면(YES), 연속적 메타 쓰기 동작을 수행할 수 있다(S635).
DCS는 연속적 메타 쓰기 동작 시에 WOT로 쓰기 위치(wp)가 가리키는 페이지를 리턴하도록 lookup 커맨드를 제공할 수 있다. 또한, DCS는 연속적 메타 쓰기 동작 시에 쓰기 위치(wp)를 증기시키고, wp가 다음 유효 메타 페이지를 가리키도록 proceed 커맨드를 제공할 수 있다.
DS는 더티 페이지가 발견되는지를 판단할 수 있다(S640). 더티 페이지가 발견되면(YES), DS는 페이지 N이 쓰기 위치(wp)의 뒤로 위치시키도록 reorder 커맨드를 WOT로 제공할 수 있다. 만약 더티 페이지가 발견되지 않으면(NO), DS는 lookup 및 proceed 커맨드를 WOT로 제공할 수 있다.
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템은 메타 데이터 관리 모듈(1236)을 이용하여 메타 가비지 컬렉션을 수행하지 않고, 지역성(locality)를 모두 고려한 메타 쓰기 선택 동작을 수행할 수 있다. 메타 데이터 관리 모듈(1236)은 지역성이 있는 쓰기 작업부하(write workload) 수행 시에, 리플레이할 저널 수를 줄일 수 있다. 본 발명에 의하면, 메모리 시스템의 오픈 타임(open time)을 줄일 수 있다.
IV. 적용 예
도 16은 본 발명의 실시 예에 따른 메모리 시스템의 플래시 메모리와 메모리 컨트롤러를 SSD(solid state drive)로 구현한 예를 보여주는 블록도이다. 도 16을 참조하면, SSD(4000)는 복수의 플래시 메모리(4101~4104)와 SSD 컨트롤러(4000)를 포함한다.
제1 및 제2 플래시 메모리(4101, 4102)는 제1 채널(CH1)을 통해 SSD 컨트롤러(4200)와 연결될 수 있다. 제3 및 제4 플래시 메모리(4103, 4104)는 제2 채널(CH2)을 통해 SSD 컨트롤러(4200)와 연결될 수 있다. SSD 컨트롤러(4200)에 연결되는 채널의 수는 2보다 많을 수 있다. 그리고 하나의 채널에 연결되는 플래시 메모리의 수는 2보다 많을 수 있다.
SSD 컨트롤러(4200)는 호스트 인터페이스(4201), 플래시 인터페이스(4202), 버퍼 인터페이스(4203), 제어 유닛(4210), 그리고 워크 메모리(4220)를 포함할 수 있다. 워크 메모리(4220)는 플래시 변환 계층(FTL, 4230)을 구동할 수 있다. 플래시 변환 계층(4230)은 앞에서 설명은 메타 데이터 관리 모듈(4236)을 포함할 수 있다.
SSD 컨트롤러(4200)는 호스트 인터페이스(4201)를 통해 호스트(1500)에 연결될 수 있다. SSD 컨트롤러(4200)는 호스트(1500)의 요청에 따라 해당 플래시 메모리에 데이터를 쓰거나 해당 플래시 메모리로부터 데이터를 읽어낼 수 있다.
SSD 컨트롤러(4200)는 플래시 인터페이스(4202)를 통해 복수의 플래시 메모리(4101~4104)와 연결되고, 버퍼 인터페이스(4203)를 통해 버퍼 메모리(1300)와 연결될 수 있다. 플래시 인터페이스(4202)는 버퍼 메모리(1300)에 임시로 저장된 데이터를 각각의 채널들(CH1, CH2)을 통해 플래시 메모리로 제공할 수 있다. 그리고 플래시 인터페이스(4202)는 플래시 메모리(4101~4104)로부터 읽은 데이터를 버퍼 메모리(1300)로 전달할 수 있다.
제어 유닛(4210)는 호스트(1500)로부터 입력된 신호를 분석하고 처리할 수 있다. 제어 유닛(4210)은 호스트 인터페이스(4201)나 플래시 인터페이스(4202)를 통해 호스트(1500)나 플래시 메모리(4101~4104)를 제어할 수 있다. 제어 유닛(4210)는 SSD(4000)을 구동하기 위한 펌웨어에 따라서 플래시 메모리(4101~4104)의 동작을 제어할 수 있다.
워크 메모리(4220)는 제어 유닛(4210)의 제어에 따라 플래시 변환 계층(4230)을 구동할 수 있다. 플래시 변환 계층(4230)은 SSD(4000)의 부팅 동작 시에 플래시 메모리(4101~4104)로부터 워크 메모리(4220)로 로드될 수 있다. 플래시 변환 계층(4230)은 펌웨어에 의해 구현되는 기능에 따라, 어드레스 맵핑 동작, 가비지 컬렉션 동작, 메타 데이타 관리 동작 등을 수행할 수 있다.
SSD 컨트롤러(4200)는 플래시 메모리(4101~4104)에 저장될 메타 데이터나 캐시 데이터를 관리할 수 있다. SSD 컨트롤러(4200)는 서든 파워 오프 동작 시에, 워크 메모리(4220)나 버퍼 메모리(1300)에 저장된 메타 데이터나 캐시 데이터를 플래시 메모리(4101~4104)에 백업할 수 있다.
상술한 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술한 실시 예들 이외에도, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술한 실시 예들에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 메타 블록과 데이터 블록을 갖는 플래시 메모리; 및
    상기 메타 블록에 저장될 메타 데이터를 관리하는 메타 데이터 관리 모듈을 포함하는 메모리 컨트롤러를 포함하되,
    상기 메타 데이터 관리 모듈은,
    프리 페이지들의 수와 미리 설정된 프리 페이지 수(이하, '설정 프리 페이지 수'라 함)를 비교하고,
    비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 메모리 시스템.
  2. 제1 항에 있어서,
    상기 프리 페이지들의 수는 메타 쓰기를 진행할 페이지부터 가장 오래된 유효 페이지까지의 페이지 수인 메모리 시스템.
  3. 제2 항에 있어서,
    상기 설정 프리 페이지 수는 메타 가비지 컬렉션을 발생하지 않을 최소 프리 페이지 수인 메모리 시스템.
  4. 제3 항에 있어서,
    상기 메타 데이터 관리 모듈은 상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 큰 경우에 상기 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 메모리 시스템.
  5. 제4 항에 있어서,
    상기 메타 데이터 관리 모듈은 상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 적거나 같은 경우에 상기 연속적 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 메모리 시스템.
  6. 제2 항에 있어서,
    상기 설정 프리 페이지 수는 메타 가비지 컬렉션을 발생하지 않을 최소 프리 페이지의 수와 추가 페이지 수를 더한 페이지 수인 메모리 시스템.
  7. 제1 항에 있어서,
    상기 메타 데이터 관리 모듈은,
    메타 가비지 컬렉션이 발생하지 않도록 관리하기 위한 페이지 선정 테이블 모듈(WOT);
    상기 설정 프리 페이지 수를 관리하고, 상기 프리 페이지들의 수와 상기 설정 프리 페이지 수를 비교하고, 비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 관리하기 위한 거리 체크 선택 모듈(DCS); 및
    더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하기 위한 더티 선택 모듈(DS)을 포함하는 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 페이지 선정 테이블 모듈(WOT)은 쓰기 위치(wp)가 가리키는 페이지를 리턴하기 위한 룩업 동작(lookup), 상기 쓰기 위치를 증가시켜 다음 유효 메타 페이지를 가리키도록 하는 진행 동작(proceed), 그리고 제 n 페이지를 상기 쓰기 위치의 뒤에 위치하도록 순서를 조절하는 재정렬 동작(reorder)을 수행하는 메모리 시스템.
  9. 제 7 항에 있어서,
    상기 거리 체크 선택 모듈(DCS)는 메타 쓰기를 진행할 페이지부터 가장 오래된 유효 페이지까지의 페이지 수를 계산하고, 상기 계산한 페이지 수가 상기 설정 프리 페이지 수에 도달했는지를 판단하는 메모리 시스템.
  10. 제 7 항에 있어서,
    상기 더티 선택 모듈(DS)은 특정 선택 알고리즘에 따라 더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하고, 상기 선택한 페이지가 가장 마지막 쓰기 순서가 되도록 상기 페이지 선정 테이블 모듈(WOT)를 갱신하는 메모리 시스템.
  11. 플래시 메모리를 기반으로 하는 메모리 시스템의 메타 데이터 관리 방법에 있어서,
    프리 페이지들의 수와 미리 설정된 프리 페이지 수(이하, '설정 프리 페이지 수'라 함)를 비교하는 단계; 및
    비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 단계를 포함하되,
    상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 큰 경우에 상기 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하고,
    상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 적거나 같은 경우에 상기 연속적 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하는 메모리 시스템의 메타 데이터 관리 방법.
  12. 제11 항에 있어서,
    상기 프리 페이지들의 수는 메타 쓰기를 진행할 페이지부터 가장 오래된 유효 페이지까지의 페이지 수이고,
    상기 설정 프리 페이지 수는 메타 가비지 컬렉션을 발생하지 않을 최소 프리 페이지 수인 메모리 시스템의 메타 데이터 관리 방법.
  13. 제12 항에 있어서,
    상기 프리 페이지들의 수와 상기 설정 프리 페이지 수를 비교하는 단계에서,
    메타 쓰기를 진행할 페이지부터 가장 오래된 유효 페이지까지의 페이지 수를 계산하고, 상기 계산한 페이지 수가 상기 설정 프리 페이지 수에 도달했는지를 판단하는 메모리 시스템의 메타 데이터 관리 방법.
  14. 제12 항에 있어서,
    상기 메타 데이터의 쓰기 대상 페이지를 선정하는 단계에서,
    페이지 선정 테이블 모듈(WOT)을 이용하여 쓰기 위치(wp)가 가리키는 페이지를 리턴하기 위한 룩업 동작(lookup), 상기 쓰기 위치를 증가시켜 다음 유효 메타 페이지를 가리키도록 하는 진행 동작(proceed), 그리고 제 n 페이지를 상기 쓰기 위치의 뒤에 위치하도록 순서를 조절하는 재정렬 동작(reorder)을 수행하는 메모리 시스템의 메타 데이터 관리 방법.
  15. 제12 항에 있어서,
    상기 메타 데이터의 쓰기 대상 페이지를 선정하는 단계에서,
    특정 선택 알고리즘에 따라 더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하고, 상기 선택한 페이지가 가장 마지막 쓰기 순서가 되도록 페이지 선정 테이블 모듈(WOT)를 갱신하는 메모리 시스템의 메타 데이터 관리 방법.
  16. 플래시 메모리와 연결되는 메모리 컨트롤러에 있어서,
    메타 가비지 컬렉션이 발생하지 않도록 관리하기 위한 페이지 선정 테이블 모듈(WOT);
    설정 프리 페이지 수를 관리하고, 프리 페이지들의 수와 상기 설정 프리 페이지 수를 비교하고, 비교 결과에 따라 연속적 메타 쓰기 방식 또는 더티 메타 쓰기 방식을 관리하기 위한 거리 체크 선택 모듈(DCS); 및
    더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하기 위한 더티 선택 모듈(DS)을 포함하되,
    상기 거리 체크 선택 모듈(DCS)는,
    상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 큰 경우에 상기 더티 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하도록 하고,
    상기 프리 페이지들의 수가 상기 설정 프리 페이지 수보다 적거나 같은 경우에 상기 연속적 메타 쓰기 방식을 이용하여 메타 데이터의 쓰기 대상 페이지를 선정하도록 하는 메모리 컨트롤러.
  17. 제16 항에 있어서,
    상기 페이지 선정 테이블 모듈(WOT)은 쓰기 위치(wp)가 가리키는 페이지를 리턴하기 위한 룩업 동작(lookup), 상기 쓰기 위치를 증가시켜 다음 유효 메타 페이지를 가리키도록 하는 진행 동작(proceed), 그리고 제 n 페이지를 상기 쓰기 위치의 뒤에 위치하도록 순서를 조절하는 재정렬 동작(reorder)을 수행하는 메모리 컨트롤러.
  18. 제16 항에 있어서,
    상기 거리 체크 선택 모듈(DCS)는 메타 쓰기를 진행할 페이지부터 가장 오래된 유효 페이지까지의 페이지 수를 계산하고, 상기 계산한 페이지 수가 상기 설정 프리 페이지 수에 도달했는지를 판단하는 메모리 컨트롤러.
  19. 제16 항에 있어서,
    상기 더티 선택 모듈(DS)은 특정 선택 알고리즘에 따라 더티 메타 페이지들 중에서 쓰기를 수행할 메타 페이지를 선택하고, 상기 선택한 페이지가 가장 마지막 쓰기 순서가 되도록 상기 페이지 선정 테이블 모듈(WOT)를 갱신하는 메모리 컨트롤러.
  20. 제16 항에 있어서,
    상기 설정 프리 페이지 수는 메타 가비지 컬렉션을 발생하지 않을 최소 프리 페이지 수인 메모리 컨트롤러.
KR1020220142453A 2022-10-31 2022-10-31 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법 KR20240062319A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220142453A KR20240062319A (ko) 2022-10-31 2022-10-31 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법
US18/207,963 US20240143500A1 (en) 2022-10-31 2023-06-09 Memory system based on flash memory and method for managing meta data thereof
CN202310966955.1A CN117953942A (zh) 2022-10-31 2023-08-02 基于闪存的存储器系统及其管理元数据方法
EP23190543.1A EP4361821A1 (en) 2022-10-31 2023-08-09 Memory system based on flash memory and method for managing meta data thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220142453A KR20240062319A (ko) 2022-10-31 2022-10-31 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법

Publications (1)

Publication Number Publication Date
KR20240062319A true KR20240062319A (ko) 2024-05-09

Family

ID=87567429

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220142453A KR20240062319A (ko) 2022-10-31 2022-10-31 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법

Country Status (4)

Country Link
US (1) US20240143500A1 (ko)
EP (1) EP4361821A1 (ko)
KR (1) KR20240062319A (ko)
CN (1) CN117953942A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101790165B1 (ko) * 2011-08-09 2017-11-20 삼성전자 주식회사 메모리 시스템 및 그것의 메타 데이터 관리 방법
US10261897B2 (en) * 2017-01-20 2019-04-16 Samsung Electronics Co., Ltd. Tail latency aware foreground garbage collection algorithm

Also Published As

Publication number Publication date
US20240143500A1 (en) 2024-05-02
EP4361821A1 (en) 2024-05-01
CN117953942A (zh) 2024-04-30

Similar Documents

Publication Publication Date Title
US7552311B2 (en) Memory device with preread data management
CN108572796B (zh) 具有异构nvm类型的ssd
CN102576293B (zh) 固态存储设备和分层存储系统中的数据管理
TWI474167B (zh) 以頁面為基礎管理快閃儲存裝置
US8386714B2 (en) Reducing write amplification in a cache with flash memory used as a write cache
KR101553532B1 (ko) 스토리지 장치
US8874826B2 (en) Programming method and device for a buffer cache in a solid-state disk system
US20120239853A1 (en) Solid state device with allocated flash cache
US8819350B2 (en) Memory system
JP2013242908A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
US9208101B2 (en) Virtual NAND capacity extension in a hybrid drive
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
US8892816B1 (en) System and method for writing data to a memory
CN103543955A (zh) 利用固态硬盘作为设备读缓存的方法、系统及固态硬盘
US11422930B2 (en) Controller, memory system and data processing system
KR20090107098A (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
JP5036078B2 (ja) 記憶装置
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
KR101191650B1 (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR20240062319A (ko) 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법
KR20220066402A (ko) 자가-적응형 웨어 레벨링 방법 및 알고리즘
CN110609817A (zh) 一种防止文件碎片化的文件存储系统
JP2009080926A (ja) 記憶装置