KR100994052B1 - 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치 - Google Patents

플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치 Download PDF

Info

Publication number
KR100994052B1
KR100994052B1 KR1020090039142A KR20090039142A KR100994052B1 KR 100994052 B1 KR100994052 B1 KR 100994052B1 KR 1020090039142 A KR1020090039142 A KR 1020090039142A KR 20090039142 A KR20090039142 A KR 20090039142A KR 100994052 B1 KR100994052 B1 KR 100994052B1
Authority
KR
South Korea
Prior art keywords
log
block
block group
log block
data
Prior art date
Application number
KR1020090039142A
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 KR1020090039142A priority Critical patent/KR100994052B1/ko
Application granted granted Critical
Publication of KR100994052B1 publication Critical patent/KR100994052B1/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/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

적응적 로그 블록 할당 기법 및 다중 플레인 플래시 메모리 상에서의 카피백 기법을 이용한 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치가 개시된다. 플래시 변환 계층에서 수행되는 데이터 관리 방법은, (a) 로그 블록 할당 요청이 발생하고, 플래시 메모리의 모든 로그 블록이 사용 중이거나 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 희생 로그 블록을 선택하는 단계 및 (b) 선택된 희생 로그 블록을 포함하는 제1 로그 블록 그룹 및 제1 로그 블록 그룹에 대응되는 제1 데이터 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하고, 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹 및 제2 데이터 블록 그룹에 대응되는 제2 로그 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하는 경우, 제1 데이터 블록 그룹과 제2 데이터 블록 그룹을 병합하고, 제1 로그 블록 그룹과 제2 로그 블록 그룹을 병합하는 단계를 포함한다.
플래시 메모리, 플래시 변환 계층, FTL, 데이터, 관리

Description

플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치{DATA MANAGEMENT METHOD IN FLASH TRANSLATION LAYER AND FLASH MEMORY APPARATUS PERFORMING THE SAME}
본 발명은 플래시 메모리에 관한 것으로, 더욱 상세하게는 플래시 메모리를 위한 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치에 관한 것이다.
낸드 플래시 메모리(NAND Flash Memory)는 저전력, 비휘발성, 신뢰성, 충격 내구성의 특성 때문에 MP3 플레이어, 디지털 카메라, PDA와 같은 모바일 임베디드 시스템에서 저장장치로 사용된다. 또한 낸드 플래시 메모리의 가격이 낮아지고 용량이 늘어남에 따라 저장장치로서 범용 컴퓨터 시장에 침투하고 있고, 낸드 플래시 메모리 기반의 SSD(Solid-State Disk)는 에너지 효율성이 중요한 엔터프라이즈 서버 시스템에서도 2차적인 대용량 저장 장치로써 채택되고 있다.
하드 디스크(Hard Disk)와는 달리 낸드 플래시 메모리는 쓰기(Write) 작업을 하기 전에 삭제(Erase) 작업을 먼저 해야 되는 특성이 있어서 덮어쓰기(Overwrite) 작업을 지원하지 않는다. 따라서 특정 페이지(Page)의 데이터가 수정(업데이트)되었을 때, 새로운 데이터는 다른 빈 페이지에 쓰여지고 이전 데이터 는 무효화되어야 한다.
낸드 플래시 메모리의 상술한 특징은 두 가지의 저장장치 관리 기법을 요구한다. 첫번째는 주소 매핑 테이블(Address Mapping Table)을 유지함으로써 파일 시스템(File System)상의 논리적 주소(Logical Address)를 낸드 플래시 메모리상의 물리적 주소(Physical Address)로 연결시키는 주소 매핑 기법(Address Mapping Scheme)이고, 두번째는 무효화된 페이지들을 재사용하기 위한 가비지 컬렉션 기법(Garbage Collection Scheme)이다. 이 두 가지 관리 기법을 제공하기 위해 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(Flash Translation Layer; FTL)이라 불리는 소프트웨어 계층이 일반적으로 사용된다.
FTL에서 페이지 단위 매핑과 블록 단위 매핑을 함께 사용하는 하이브리드 주소 매핑 기법이 사용되는 경우 작은 주소 매핑 테이블 크기와 함께 효율적인 가비지 컬렉션을 수행할 수 있다는 장점을 가진다. 하지만 로그 블록(Log Block) 공간이 고갈될 경우 FTL은 값 비싼 로그 블록 병합(Merge) 연산을 통해 새로운 빈 공간을 확보해야만 한다. 따라서 로그 블록 병합을 최소화하여 성능 향상을 얻을 수 있는 방법이 요구되고 있다.
한편, 최근 낸드 플래시 메모리의 용량이 늘어남으로써 이런 대용량 저장장치를 더욱 효율적으로 사용하기 위해 다중 플레인(Multiple Plane)으로 구성된 낸드 플래시 메모리가 사용되고 있다. 플레인은 하나의 칩 안의 블록들을 특정 개수로 묶은 하나의 그룹이다. 하나의 플래시 메모리 칩은 다수의 플레인들로 분할될 수 있고 각각의 플레인에는 페이지 레지스터(Page Register)가 각각 존재한다. 따 라서 다중 플레인 플래시 메모리의 이러한 구조적 특성을 이용하여 성능을 최적화할 수 있는 방법이 요구되고 있다.
따라서 본 발명의 제1 목적은 로그 블록 병합을 최소화하거나 로그 블록 병합 비용을 최소화함으로써 성능 향상을 기하고 다중 플레인을 고려하여 성능을 최적화할 수 있는 플래시 변환 계층에서 수행되는 데이터 관리 방법을 제공하는 것이다.
그리고 본 발명의 제2 목적은 상기와 같은 방법을 수행하는 플래시 메모리 장치를 제공하는 것이다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법은, 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서, (a) 로그 블록 할당 요청이 발생하고, 상기 플래시 메모리의 모든 로그 블록이 사용 중이거나 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 희생 로그 블록을 선택하는 단계; 및 (b) 선택된 상기 희생 로그 블록을 포함하는 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 제1 데이터 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는 경우, 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고, 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합하는 단계를 포함한다.
상기 미리 정해진 그룹 병합 조건은, 특정 로그 블록 그룹에 대응되는 데이터 블록 그룹에 할당된 전체 페이지 개수 대비 상기 특정 로그 블록 그룹의 사용 중인 페이지 개수 비율이 미리 정하여진 값보다 작은 조건일 수 있다.
상기 미리 정해진 그룹 병합 조건은, 특정 로그 블록 그룹에 속하는 적어도 어느 하나의 로그 블록과 연관된 데이터 블록 개수가 미리 정하여진 값보다 작은 조건일 수 있다.
상기 (a) 단계는, 상기 플래시 메모리의 모든 로그 블록이 사용 중인 경우 상기 플래시 메모리의 할당된 모든 로그 블록 중 적어도 하나를 상기 희생 로그 블록으로 선택하고, 상기 플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아니고 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택할 수 있다.
상기 플래시 변환 계층에서 수행되는 데이터 관리 방법은, (c) 선택된 상기 희생 로그 블록에 대한 로그 블록 병합에 의하여 사용 가능한 블록을 생성하는 단계를 더 포함할 수 있다.
상기 플래시 메모리는 다중 플레인 플래시 메모리이고, 상기 (b) 단계는, 선택된 상기 희생 로그 블록을 포함하는 상기 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 상기 제1 데이터 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹을 포함하는 플레인에서 상기 제1 데이터 블록 그룹에 인접하는 상기 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 상기 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는 경우, 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고, 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합할 수 있다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법은, 각각 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서, (a) 제1 로그 블록을 새로 할당 받는 로그 블록 그룹에서 제2 로그 블록을 결정하는 단계; 및 (b) 상기 제2 로그 블록 및 상기 제2 로그 블록에 대응되는 데이터 블록 그룹이 미리 정해진 그룹 분할 조건을 만족하는 경우, 상기 제2 로그 블록에 대응되는 데이터 블록 그룹을 복수의 데이터 블록 그룹으로 분할하고, 상기 제2 로그 블록을 포함하는 로그 블록 그룹을 각각 상기 복수의 데이터 블록 그룹에 일대일 대응되는 복수의 로그 블록 그룹으로 분할하는 단계를 포함한다.
상기 미리 정해진 그룹 분할 조건은, 특정 로그 블록과 연관된 데이터 블록 개수가 미리 정하여진 값보다 큰 조건일 수 있다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법은, 각각 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서, (a) 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 상기 플래시 메모리의 모든 로그 블록이 사용 중인지 여부를 판단하는 단계; 및 (b) 판단 결과 상기 플래시 메모리의 모든 로그 블록이 사용 중인 경우 로그 블록 LRU 테이블(Log Block Least Recently Used Table)에서 미리 정해진 수의 희생 로그 블록 후보 중 병합 비용이 가장 낮은 것을 희생 로그 블록으로 선택하고 로그 블록 병합에 의하여 사용 가능한 블록을 생성하는 단계를 포함한다.
상기 (a) 단계는, 페이지 쓰기 연산이 발생하였으나 로그 블록 할당 요청이 발생하지 않은 경우 상기 페이지를 포함하는 로그 블록에 대하여 상기 로그 블록 LRU 테이블을 갱신할 수 있다.
상기 (b) 단계는, 판단 결과 상기 플래시 메모리의 적어도 하나의 로그 블록이 사용 가능한 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인지 여부를 판단하되, 상기 플래시 변환 계층에서 수행되는 데이터 관리 방법은, (c) 판단 결과 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택하고 로그 블록 병합에 의하여 사용 가능한 블록을 생성하는 단계를 더 포함할 수 있다.
상기 (c) 단계는, 판단 결과 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K가 아닌 경우 새로 할당되는 로그 블록에 대하여 상기 로그 블록 LRU 테이블을 갱신할 수 있다.
상기 병합 비용은 로그 블록 병합 수행 시에 로그 블록으로부터 복사되는 페이지를 포함하는 서로 다른 데이터 블록의 개수에 기초하여 산출될 수 있다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법은, 각각 적어도 하나의 데이터 블록을 포함하는 적어도 하나의 데이터 블록 그룹 및 각각 적어도 하나의 로그 블록을 포함하고 상기 적어도 하나의 데이터 블록 그룹에 일대일 대응되는 적어도 하나의 로그 블록 그룹을 포함하는 다중 플레인 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서, (a) 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 쓰기 연산이 발생한 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는지 판단하는 단계; 및 (b) 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 존재하지 않는 경우 새로운 데이터 블록 그룹 및 대응되는 새로운 로그 블록 그룹을 동일한 플레인으로부터 할당하고, 상기 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는 경우 이미 존재하는 상기 데이터 블록 그룹을 포함하는 플레인으로부터 이미 존재하는 상기 데이터 블록 그룹에 대응되는 로그 블록 그룹에 새로운 로그 블록을 할당하는 단계를 포함한다.
상기 플래시 변환 계층에서 수행되는 데이터 관리 방법은, (c) 카피백에 의하여 데이터 블록 병합 및 로그 블록 병합 중 적어도 하나를 수행하는 단계를 더 포함할 수 있다.
상기 (c) 단계는 복수개의 플레인에 각각 포함되는 복수개의 블록에 각각 포함되는 복수개의 페이지 단위로 수행되는 카피백에 의하여 데이터 블록 병합 및 로그 블록 병합 중 적어도 하나를 수행할 수 있다.
상술한 본 발명의 제2 목적을 달성하기 위한 본 발명의 일 실시예에 따른 플래시 메모리 장치는, 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리; 및 주소 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 플래시 메모리의 물리적인 주소에 매핑시키는 플래시 변환 계층을 포함하되, 상기 플래시 변환 계층은, 로그 블록 할당 요청이 발생하고, 상기 플래시 메모리의 모든 로그 블록이 사용 중이거나 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 희생 로그 블록을 선택하고, 선택된 상기 희생 로그 블록을 포함하는 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 제1 데이터 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는 경우, 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고, 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합한다.
상술한 본 발명의 제2 목적을 달성하기 위한 본 발명의 다른 일 실시예에 따른 플래시 메모리 장치는, 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리; 및 주소 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 플래시 메모리의 물리적인 주소에 매핑시키는 플래시 변환 계층을 포함하되, 상기 플래시 변환 계층은, 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 상기 플래시 메모리의 모든 로그 블록이 사용 중인지 여부를 판단하고, 판단 결과 상기 플래시 메모리의 모든 로그 블록이 사용 중인 경우 로그 블록 LRU 테이블(Log Block Least Recently Used Table)에서 미리 정해진 수의 희생 로그 블록 후보 중 병합 비용이 가장 낮은 것을 희생 로그 블록으로 선택하고 로그 블록 병합에 의하여 사용 가능한 블록을 생성한다.
상술한 본 발명의 제2 목적을 달성하기 위한 본 발명의 또 다른 일 실시예에 따른 플래시 메모리 장치는, 각각 적어도 하나의 데이터 블록을 포함하는 적어도 하나의 데이터 블록 그룹 및 각각 적어도 하나의 로그 블록을 포함하고 상기 적어도 하나의 데이터 블록 그룹에 일대일 대응되는 적어도 하나의 로그 블록 그룹을 포함하는 다중 플레인 플래시 메모리; 및 주소 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 다중 플레인 플래시 메모리의 물리적인 주소에 매핑시키는 플래시 변환 계층을 포함하되, 상기 플래시 변환 계층은, 페이 지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 쓰기 연산이 발생한 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는지 판단하고, 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 존재하지 않는 경우 새로운 데이터 블록 그룹 및 대응되는 새로운 로그 블록 그룹을 동일한 플레인으로부터 할당하고, 상기 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는 경우 이미 존재하는 상기 데이터 블록 그룹을 포함하는 플레인으로부터 이미 존재하는 상기 데이터 블록 그룹에 대응되는 로그 블록 그룹에 새로운 로그 블록을 할당한다.
상기와 같은 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치에 따르면, 낸드 플래시 애플리케이션 가동에 따라 로그 블록 할당 및 로그 블록 병합에 관한 FTL 동작을 유연하게 조정하여 플래시 메모리의 입출력 동작 성능을 향상시킬 수 있다.
그리고 다중 플레인으로 구성된 낸드 플래시 메모리 환경에서 다중 플레인을 고려하여 복수 플레인 단위로 카피백 등의 플래시 연산 동작이 수행되도록 하여 다중 플레인 플래시 메모리의 입출력 동작 성능을 최적화할 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것 으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특 징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
일반적으로 플래시 변환 계층(Flash Translation Layer; FTL)은 주소 매핑(Address Mapping) 기법에 따라 페이지 기반 FTL, 블록 기반 FTL 및 하이브리드 기반 FTL로 분류된다.
페이지 기반 FTL 기법 및 블록 기반 FTL 기법에 대한 상세한 사항은 관련 공지기술 및 기술문헌으로부터 용이하게 파악될 수 있으므로 이하 설명은 생략한다(A. Ban. Flash file system. US Patent 5,404,485, Apr 4, 1995., A. Ban. Flash file system optimized for page-mode flash technologies. US Patent 5,937,425, Aug 10, 1999.).
하이브리드 기반 FTL 기법은 페이지 기반 FTL 기법과 블록 기반 FTL 기법의 단점을 보완하기 위해 페이지 단위 매핑과 블록 단위 매핑을 함께 사용하는 방법이다. 구체적으로 하이브리드 기법은 플래시 메모리 블록들을 데이터 블록과 로그 버퍼로 나누어 관리하는데, 데이터 블록들은 일반적인 저장공간으로 사용되고 그보다 적은 수의 로그 블록들로 구성되는 로그 버퍼는 덮어쓰기 작업을 위한 임시 저장 공간으로 사용된다. 그리고 데이터 블록들은 블록 단위의 매핑 기법에 의해 관리되고, 로그 블록들은 페이지 단위의 매핑 기법에 의해 관리된다. 따라서 하이브리드 기법에서는 작은 매핑 테이블 크기와 함께 효율적인 가비지 컬렉션을 수행할 수 있다는 장점을 가진다.
로그 버퍼 공간이 고갈될 경우 FTL은 값 비싼 로그 블록 병합 연산을 통해 새로운 빈 공간을 확보해야만 한다. 병합 연산은 교체될 로그 블록을 선택하여 교체될 로그 블록과 연관된 데이터 블록 내의 유효한 페이지들을 빈 블록에 복사한 후 이전 블록들을 삭제하고 주소 매핑 테이블을 수정하는 과정으로 이루어진다. 일반적으로 복사 및 삭제 연산이 전반적인 병합 연산의 비용을 결정한다.
로그 블록 병합에 대한 상세한 사항은 관련 공지기술 및 기술문헌으로부터 용이하게 파악될 수 있으므로 이하 설명은 생략한다(J. Kim, J. M. Kim, S. H. Noh, S. L. Min, and Y. Cho. "A space-efficient flash translation layer for compact flash systems," IEEE Transactions on Consumer Electronics, vol. 48, no. 2, pp. 366-375, 2002.).
도 1은 일반적인 낸드 플래시 메모리의 구조를 설명하기 위한 개념도이다.
도 1을 참조하면, 낸드 플래시 메모리의 내부 구조는 복수의 블록(Block)으로 구성되며, 각 블록은 복수의 페이지로 이루어져 있다. 예를 들어, 하나의 블록은 64개 또는 128개의 페이지로 구성될 수 있다. 낸드 플래시 메모리에서, 읽기(Read) 및 쓰기(Write) 연산은 페이지(Page) 단위로 수행되고, 지우기(Erase) 연산은 블록(Block) 단위로 수행된다.
도 2는 하이브리드 기반 FTL 기법 중의 하나인 SAST 기법을 설명하기 위한 개념도이다.
SAST(Set-Associative Sector Translation; SAST) 기법은, 하이브리드 기반 FTL 기법 중 하나로서, 데이터 블록 그룹(Data Block Group; DBG)과 이에 대응되는 로그 블록 그룹(Log Block Group; LBG)으로 구성되는 N:K 매핑 기법이다.
데이터 블록 그룹은, 연속적인 N개의 논리적 블록들에 대응되는, 비연속적일 수 있는 물리적 블록들의 집합이고, N은 하나의 데이터 블록 그룹에 포함되는(또는 할당될 수 있는) 데이터 블록들의 개수를 의미한다. 로그 블록 그룹은 특정 데이터 블록 그룹에 대응되는 로그 블록들의 집합이고, K는 하나의 로그 블록 그룹에 최대 할당될 수 있는 로그 블록 개수를 의미한다. 하나의 데이터 블록 그룹에는 오직 하나의 로그 블록 그룹이 대응되고 데이터 블록에 대한 업데이트는 대응되는 로그 블록 그룹의 로그 블록에 순차적으로 기록된다.
SAST 기법에서 N 및 K로 표현되는 데이터 블록 그룹 및 로그 블록 그룹의 크기는 모든 주소공간에서 동일하게 적용되며 FTL이 플래시 메모리 연산을 수행하 는 동안 그 크기가 변하지 않고 고정된다. 그런데 특정 시점에서 어떤 데이터 블록 그룹은 K개 초과의 로그 블록을 필요로 할 수 있고, 어떤 데이터 블록 그룹은 하나의 로그 블록도 사용하지 않을 수도 있으며, 특정 시점에서 최적인 N의 개수도 변동될 수 있다. 즉 상황에 따라 변하는 쓰기 패턴에 대해 SAST 기법은 FTL의 성능을 최적화할 수 없다.
도 2를 참조하면, 4:2 매핑으로 구성된 SAST 구조가 나타나 있다. 각 데이터 블록 그룹은 연속적인 4개의 논리적 블록들에 대응되는 4개의 물리적 블록들을 포함하고, 각 데이터 블록 그룹에 대응되는 로그 블록 그룹이 존재하며, 로그 블록 그룹에 최대 할당될 수 있는 로그 블록의 수는 2개이다.
도 2를 참조하면, Log Block Group 0과 Log Block Group 1은 사용하지 않는 페이지를 많이 가지고 있고, 이것은 로그 블록의 활용도가 떨어짐을 의미한다. 따라서 도 2의 Log Block Group 0와 Log Block Group 1과 같이 업데이트가 적게 발생하고 비교적 순차적이어서 병합 비용이 작은 블록들로 이루어진 데이터 블록 그룹들을 하나로 합치면 병합 비용은 크게 변화가 없는 반면 로그 블록의 활용도는 높아진다.
반면에 Log Block Group 2는 각 로그 블록마다 병합 비용이 너무 크다. 로그 블록의 각 페이지들은 모두 서로 다른 데이터 블록과 병합을 하기 때문에 블록 병합을 통하여 사용 가능한 블록을 생성할 때마다 최대 페이지 개수만큼의 병합이 필요하다. 이렇게 병합 비용이 큰 블록들로 이루어진 데이터 블록 그룹들을 분할하여 관리하면 병합 비용을 줄일 수 있다.
적응적 SAST(Adaptive Set-Associative Sector Translation; A-SAST) 기법은 쓰기 패턴이 변화함에 따라 N 및 K를 동적으로 조절하거나 로그 블록 병합 시의 희생 로그 블록을 보다 정밀하게 선택함으로써 FTL의 성능을 최적화하는 기법이다.
도 3은 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법을 설명하기 위한 개념도이다.
도 3을 참조하면, 도 2에 나타난 Data Block Group 0과 Data Block Group 1을 병합한 결과가 나타나 있다. 각각 4개의 블록을 포함하는 두개의 데이터 블록 그룹이 병합되어 8개의 블록으로 구성된 데이터 블록 그룹이 되었고, 이 데이터 블록 그룹에 대응되는 로그 블록 그룹은 최대 4개의 로그 블록을 할당 받을 수 있으며, 현재 2개의 로그 블록이 할당된 상태이다. 도 2와 비교해 보면, 데이터 블록 그룹 및 로그 블록 그룹의 병합 결과 로그 블록을 1개 절약할 수 있어 로그 블록의 활용도를 높였음을 알 수 있다.
도 4는 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법을 설명하기 위한 흐름도이다.
도 4를 참조하면, 우선 특정 페이지에 대한 덮어쓰기 또는 업데이트로 인하여 로그 블록 할당 요청이 발생하였는지를 판단하는데, 이를 위하여 먼저 페이지 쓰기 연산이 발생하였는지를 판단하고(S110), 페이지 쓰기 연산이 발생한 경우 로 그 블록 할당 요청이 발생하였는지를 판단한다(S120). 페이지 쓰기 연산이 발생하였으나 로그 블록 할당 요청이 발생하지 않은 경우는 이미 할당된 로그 블록 내에 아직 빈 페이지가 남아 있는 경우를 의미한다.
페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우(S110, S120) 플래시 메모리의 모든 로그 블록이 사용 중인지 판단한다(S130). 플래시 메모리의 모든 로그 블록이 사용 중인 경우 플래시 메모리의 할당된 모든 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택한다(S140). 희생 로그 블록이란 새로 할당 가능한 로그 블록이 없는 경우 대응되는 데이터 블록과 함께 새로운 데이터 블록으로 복사된 후 삭제되는 로그 블록을 의미한다.
플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아닌 경우, 즉 로그 블록 병합 없이 할당이 가능한 경우 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인지 판단한다(S150). 다시 말해서, 쓰기 연산에 의하여 로그 블록 할당 요청을 발생시킨 페이지를 포함하는 로그 블록 그룹에 대하여, 허용된 최대 개수의 로그 블록이 이미 할당되어 사용 중인지를 판단한다.
플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아니고 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K가 아닌 경우, 보다 구체적으로 K보다 적은 경우에는, 로그 블록을 새로 할당 받아 페이지 쓰기 연산을 수행할 수 있다(미도시).
플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아니고 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우, 상기 로 그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택한다(S160).
다음으로 선택된 희생 로그 블록을 포함하는 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 제1 데이터 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는지를 판단하고(S170), 만족하는 경우에는 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합한다(S180).
상기 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹이란 일련의 데이터 블록 그룹의 순번 상에서 상기 제1 데이터 블록 그룹의 전후에 위치하는 데이터 블록 그룹을 의미한다. 예를 들어, 도 2를 다시 참조하면, Data Block Group 0에 인접하는 데이터 블록 그룹은 Data Block Group 1이고, Data Block Group 1에 인접하는 데이터 블록 그룹은 Data Block Group 0 및 Data Block Group 2이다.
다시 도 4를 참조하면, 상기 미리 정해진 그룹 병합 조건은 아래의 수학식 1 또는 수학식 2와 같이 정의될 수 있다. 상기 미리 정해진 그룹 병합 조건은, 수학식 1에 따라 정의되는 그룹 병합 조건과 수학식 2에 따라 정의되는 그룹 병합 조건 중 어느 하나를 만족하는 경우, 또는 수학식 1에 따라 정의되는 그룹 병합 조건과 수학식 2에 따라 정의되는 그룹 병합 조건을 모두 만족하는 경우일 수 있다. 즉, 업데이터가 적게 발생하고 쓰기 패턴이 비교적 순차적인 데이터 블록 그룹들에 대해서는 블록 그룹 병합을 수행하여 로그 블록 활용도를 높이는 것이다.
Figure 112009027038777-pat00001
Figure 112009027038777-pat00002
여기서 LBG는 로그 블록 그룹, DBG는 LBG에 대응되는 데이터 블록 그룹, U(LBG)는 LBG의 사용 중인 페이지 개수, P(DBG)는 DBG에 할당된 전체 페이지 개수, L은 해당 로그 블록 그룹에 속하는 적어도 어느 하나의 로그 블록, A(L)은 L과 연관된 데이터 블록 개수, α 및 β는 사용자 파라미터이다. A(L)의 정의에 있어서 L과 연관된 데이터 블록 개수란 L에 포함되는 페이지와 동일한 번호의 페이지를 포함하는 서로 다른 데이터 블록 개수를 의미한다. 특히, 실험에 의한 최적값에 따라 α는 10%, β는 6으로 결정될 수 있다.
상기 A(L)의 정의에 한정되지 아니하고, 수학식 2의 조건은 해당 로그 블록 그룹에 할당된 임의의 로그 블록과 연관된 데이터 블록 개수의 적절한 산술적 조합으로서 정의될 수도 있다. 예를 들어, 수학식 2는 해당 로그 블록 그룹에 할당된 각 로그 블록과 연관된 데이터 블록 개수의 최대치, 최소치, 합산 결과에 대한 수학식 등으로 수정될 수 있다.
특히, 상기 L은 해당 로그 블록 그룹에서 최근 마지막으로 할당된 로그 블록(이하 설명의 편의를 위하여 Lr이라고 한다)이거나, 상기 Lr이 사용 중이 아닌 페이지를 포함하고 있는 경우에는 상기 Lr에 앞선 직전에 할당된 로그 블록으로서 모든 페이지를 사용 중인 로그 블록일 수 있다. 해당 로그 블록 그룹에 할당된 로그 블록이 오직 하나뿐인 경우에는 그 하나뿐인 로그 블록이 상기 L이 될 수 있다.
도 2 및 도 3에 나타난 예를 들어 그룹 병합 조건이 판단되는 과정을 이하에서 구체적으로 설명한다. 여기서 그룹 병합 조건은 수학식 1 및 수학식 2 모두를 만족하는 것으로 하고, L은 상기 Lr 로 정의하되, 상기 Lr이 사용 중이 아닌 페이지를 포함하고 있는 경우에는 상기 Lr에 앞선 직전에 할당된 로그 블록으로서 모든 페이지를 사용 중인 로그 블록으로 정의하며, α는 50%, β는 6으로 가정한다.
도 2에서 희생 로그 블록으로 선택된 블록이 PBN 600인 경우 Log Block Group 1 및 Data Block Group 1에 대하여 그룹 병합 조건을 확인한다. 이 경우 2 / 16 < α 이고 A(PBN 600) = 1 < β 이므로 그룹 병합 조건을 만족한다.
다음으로 인접한 데이터 블록 그룹 및 로그 블록 그룹에 대하여 그룹 병합 조건을 확인한다. 순번상 이전 것과 먼저 비교한다고 정하는 경우, Data Block Group 0 및 Log Block Group 0부터 확인하게 된다. 이 경우 6 / 16 < α 이고 A(PBN 400) = 2 < β 이므로 그룹 병합 조건을 만족한다. 따라서 Data Block Group 0과 Data Block Group 1을 병합하고, Log Block Group 0과 Log Block Group 1을 병합한다. 도 3에 병합 결과가 나타나 있으며, 상술한 바와 같이 로그 블록 그룹의 병합을 통해 로그 블록 그룹 하나를 줄일 수 있게 된다.
만약 Log Block Group 0가 그룹 병합 조건을 만족하지 않았다면 Log Block Group 2에 대해서 그룹 병합 조건을 확인하여, 만족하는 경우 병합하고 만족하지 않는다면 병합을 하지 않는다. Log Block Group 0가 그룹 병합 조건을 만족하여 병합된 경우라면 Log Block Group 2에 대해서는 선택적으로 그룹 병합 조건을 확인할 수도, 확인하지 않을 수도 있다.
다음으로 선택된 희생 로그 블록에 대한 로그 블록 병합에 의하여 사용 가능한 블록을 생성하고(S190), 생성된 블록을 새로운 로그 블록으로 할당할 수 있다(미도시).
이상에서 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법을 설명하였다. 이하에서는 다중 플레인 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법을 설명한다. 우선 다중 플레인 플래시 메모리의 구조 및 카피백을 설명하고, 도 2 내지 도 4를 참조하여 설명한 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법의 일부 변경으로서 다중 플레이 플래시 메모리를 위한 방법을 설명한다.
도 5는 다중 플레인 플래시 메모리의 구조 및 카피백을 설명하기 위한 개념도이다.
도 5를 참조하면, 4개의 플레인(Plane)으로 구성된 낸드 플래시 메모리가 나타나 있다. 상기 낸드 플래시 메모리는 총 8192개의 블록으로 구성되어 있고 각 블록은 64개의 페이지로 구성되어 있다. 각각의 플레인은 2048개의 블록으로 구성되어 있으며 페이지와 동일한 크기의 페이지 레지스터(Page Register)를 가진다.
카피백(Copy-Back)은 낸드 플래시 메모리의 한 페이지에 저장되어 있는 데이터를 외부 메모리에 대한 접근 없이 내부의 페이지 레지스터만을 이용하여 다른 페이지로 옮기는 과정을 말한다. 카피백을 이용하여 낸드 플래시 메모리의 한 페이지를 다른 페이지로 옮길 경우 페이지 레지스터로부터 외부 메모리로 페이지를 읽어 들이는 시간과 다시 페이지 레지스터로 페이지를 쓰는데 걸리는 시간을 절약할 수 있으므로 성능에 많은 영향을 미치게 된다. 다중 플레인으로 구성된 낸드 플래시 메모리에서는 다중 플레인을 고려하여 카피백을 효율적으로 사용하는 것이 성능에 많은 영향을 미치게 된다.
도 5를 참조하여 예를 들어 설명하면, 플레인 0에 있는 블록 4094의 페이지 63에 있는 데이터를 같은 플레인에 있는 블록 0의 페이지 63으로 옮기는 경우 플레인 0의 페이지 레지스터로 데이터를 옮긴 후 블록 0의 페이지 63으로 데이터를 복사할 수 있다. 만약 플레인 0에 있는 블록 4094의 페이지 63에 있는 데이터를 플레인 2의 블록 4096의 페이지 63으로 옮기려 한다면 카피백을 사용할 수 없다. 이 경우 블록 4094의 페이지 63의 데이터를 플레인 0의 페이지 레지스터로 옮긴 후 이 데이터를 외부 메모리로 읽은 후에 다시 외부 메모리로부터 플레인 2의 페이지 레지스터로 데이터를 쓴다. 그리고 플레인 2의 페이지 레지스터에 쓰여진 데이터를 블록 4096의 페이지 63으로 복사하게 된다.
한편, 다중 플레인으로 구성된 낸드 플래시 메모리에서는 복수 플레인 단위로 연산을 수행하여 성능을 더욱 향상시킬 수 있다. 이하에서는 2-Plane 단위로 가정하여 설명한다. 도 5를 참조하면, 2-Plane 단위 연산이란, 플레인 0과 플레인 1, 또는 플레인 2와 플레인 3에 대해서만 수행될 수 있고 두 플레인에서 인접한 두개의 블록을 묶어서 두개의 페이지 단위로 읽기, 쓰기, 카피백을 수행하고 두개의 블록 단위로 삭제 작업이 수행되는 것을 말한다. 플레인 0과 플레인 2, 또는 플레인 1과 플레인 3과 같은 조합으로는 2-Plane 단위 연산을 수행할 수 없다.
멀티 플레인 플래시 메모리에서 카피백 및 복수 플레인 단위 연산을 활용하는 경우, 도 4를 참조하여 설명한 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법에 있어서, 상기 제1 로그 블록 그룹 및 상기 제1 데이터 블록 그룹이 그룹 병합 조건을 만족하고 상기 제2 데이터 블록 그룹 및 상기 제2 로그 블록 그룹이 그룹 병합 조건을 만족하는지 판단하는 단계(S170)는 후자의 판단에 있어서 상기 제1 데이터 블록 그룹을 포함하는 플레인에서 상기 제1 데이터 블록 그룹에 인접하는 상기 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 상기 제2 로그 블록 그룹이 그룹 병합 조건을 만족하는지 판단하는 것으로 수정될 수 있다(미도시). 즉, 데이터 블록 그룹 및 로그 블록 그룹의 병합은 동일 플레인 내에서만 수행되는 것이다.
도 6은 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 분할 방법을 설명하기 위한 개념도이다.
도 6을 참조하면, 도 2에 나타난 Data Block Group 2를 분할한 결과가 나타나 있다. 4개의 블록을 포함하는 데이터 블록 그룹이 분할되어 각각 2개의 블록으로 구성된 2개의 데이터 블록 그룹이 되었고, 로그 블록 그룹은 최대 1개의 로그 블록을 할당 받을 수 있는 2개의 로그 블록 그룹이 되었다. 이 과정에서 쓰기 패턴이 순차적인 경우를 고려하여 페이지 번호 순으로 페이지를 각 로그 블록 그룹에 배치함으로써 성능 향상을 기할 수 있다.
분할 전의 도 2에 나타난 PBN 300의 경우 A(PBN 300) = 4 이고, 분할 후의 도 6에 나타난 PBN 300의 경우 A(PBN 300) = 2 이다. 따라서 각 페이지에 대한 쓰기 요청이 (32, 36, 40, 44) 순서로 발생하였다면, Data Log Block 2 및 Log Block Group 2를 각각 2개로 분할함으로써 로그 블록의 최대 병합 비용이 절반으로 줄어든 것을 알 수 있다.
도 7은 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 분할 방법을 설명하기 위한 흐름도이다.
도 7을 참조하면, 먼저 제1 로그 블록을 새로 할당 받는 로그 블록 그룹에서 제2 로그 블록을 결정한다(S210). 상기 제2 로그 블록은 상기 제1 로그 블록을 새로 할당 받는 로그 블록 그룹에 속하는 적어도 어느 하나의 로그 블록이다.
특히, 상기 제2 로그 블록은 해당 로그 블록 그룹에서 최근 마지막으로 할 당된 로그 블록(이하 설명의 편의를 위하여 Lr2라고 한다)이거나, 상기 Lr2가 사용 중이 아닌 페이지를 포함하고 있는 경우에는 상기 Lr2에 앞선 직전에 할당된 로그 블록으로서 모든 페이지를 사용 중인 로그 블록일 수 있다. 해당 로그 블록 그룹에 할당된 로그 블록이 오직 하나뿐인 경우에는 그 하나뿐인 로그 블록이 상기 제2 로그 블록이 될 수 있다.
다음으로 제2 로그 블록 및 제2 로그 블록에 대응되는 데이터 블록 그룹이 미리 정해진 그룹 분할 조건을 만족하는지 판단한다(S220).
상기 미리 정해진 그룹 분할 조건은 아래의 수학식 3과 같이 정의될 수 있다. 즉, 특정 시점에 무작위의 데이터 업데이트가 많이 발생하는 로그 블록 그룹에 대해서는 블록 그룹 분할을 수행하여 로그 블록 병합 비용을 줄이는 것이다.
Figure 112009027038777-pat00003
여기서 L은 로그 블록, A(L)은 L과 연관된 데이터 블록 개수, γ는 사용자 파라미터이다. 특히, 실험에 의한 최적값에 따라 γ는 16으로 결정될 수 있다.
상기 A(L)의 정의에 한정되지 아니하고, 수학식 2의 조건은 해당 로그 블록 그룹에 할당된 임의의 로그 블록과 연관된 데이터 블록 개수의 적절한 산술적 조합으로서 정의될 수도 있다. 예를 들어, 수학식 3은 해당 로그 블록 그룹에 할당된 각 로그 블록과 연관된 데이터 블록 개수의 최대치, 최소치, 합산 결과에 대한 수학식 등으로 수정될 수 있다.
다음으로, 제2 로그 블록에 대응되는 데이터 블록 그룹을 복수의 데이터 블록 그룹으로 분할하고, 제2 로그 블록을 포함하는 로그 블록 그룹을 각각 상기 복수의 데이터 블록 그룹에 일대일 대응되는 복수의 로그 블록 그룹으로 분할한다(S230).
다중 플레인 플래시 메모리의 경우, 상술한 적응적 SAST 기법 중 블록 그룹 병합 방법과 유사하게, 동일한 플레인에서 분할되는 데이터 블록 그룹 및 로그 블록 그룹을 생성할 수 있다.
도 2 및 도 6에 나타난 예를 들어 그룹 분할 조건이 판단되는 과정을 이하에서 구체적으로 설명한다. 여기서 L은 상기 Lr2로 정의하되, 상기 Lr2가 사용 중이 아닌 페이지를 포함하고 있는 경우에는 상기 Lr2에 앞선 직전에 할당된 로그 블록으로서 모든 페이지를 사용 중인 로그 블록으로 정의하며, γ는 2로 가정한다.
도 2를 참조하면 Log Block Group 2가 로그 블록을 새로 할당 받을 때 그룹 분할 조건을 판단한다. 최근 마지막으로 Log Block Group 2에 할당된 로그 블록이 PBN 301라면 A(PBN 301) = 4 > γ 이므로 Log Block Group 2 및 Data Block Group 2를 각각 분할한다. 도 6에 분할 결과가 나타나 있으며, 상술한 바와 같이 로그 블록 그룹의 분할을 통해 이후의 로그 블록 병합 시 최대 로그 블록 병합 비용을 절반으로 줄일 수 있게 되었다.
도 8은 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 희생 로그 블록 선택 방법을 설명하기 위한 개념도이다.
도 8에 도시되지 않았지만, 로그 블록 그룹 LRU 테이블(Log Block Group Least Recently Used Table)을 사용하는 경우, 로그 블록 그룹 단위로 LRU 테이블을 갱신하는데, 로그 블록 한 개에 대한 쓰기가 발생할 때마다 로그 블록 그룹에 대해 갱신되기 때문에 정확성이 떨어질 수 있다.
도 8를 참조하면, 예를 들어, 각 페이지에 대한 쓰기 요청이 (22, 23, 24, 25, 2, 3, 4, 5, 8, 9, 10, 11, 26, 27, 28, 29) 순서로 발생할 때, 실제로 페이지 (22, 23, 24, 25)를 포함하는 로그 블록(PBN 600)이 가장 오래된 로그 블록이지만 로그 블록 그룹 LRU 테이블의 특성으로 인해 가장 오래된 로그 블록 그룹인 Log Block Group 0에 속하는 페이지 (2, 3, 4, 5)를 포함하는 로그 블록(PBN 400)이 희생될 로그 블록으로 선택된다.
상술한 바와 같은 문제점을 극복할 수 있는 방법이 로그 블록 LRU 테이블(Log Block Least Recently Used Table)을 사용하는 방법이다. 즉 로그 블록 그룹 단위가 아니라 로그 블록 단위로 LRU 테이블을 갱신함으로써 쓰기 패턴의 변동에 보다 정밀하게 대응할 수 있다. 나아가 희생 로그 블록을 선택할 때 병합 비용을 고려하여 병합 비용이 낮은 희생 로그 블록을 선택하는 것이 성능 향상을 더 높일 수 있다.
도 8에 나타난 바와 같이 로그 블록 LRU 테이블을 유지하고, 희생 로그 블 록 영역(Victim Log Block Region)을 두어서 희생 로그 블록 영역에 포함된 희생 로그 블록 후보들 중 병합 비용이 가장 낮은 블록을 희생 로그 블록으로 선택한다. 이 경우 로그 블록 병합 비용은 병합 수행 시에 복사해야할 페이지와 동일한 번호의 페이지를 포함하는 데이터 블록 개수, 즉 상술한 A(L)을 사용할 수 있다(L은 로그 블록). 희생 로그 블록 영역은 로그 블록 LRU 테이블에서 LRU 근처의 미리 정해진 수의 로그 블록들을 포함한다.
도 8에 있어서, 로그 블록 LRU 테이블 및 희생 로그 블록 영역을 사용하는 경우, 각 페이지에 대한 쓰기 요청이 상술한 예와 동일하게 (22, 23, 24, 25, 2, 3, 4, 5, 8, 9, 10, 11, 26, 27, 28, 29) 순서로 발생할 때, PBN 600이 가장 오래된 로그 블록이지만 희생 로그 블록 영역에서 병합 비용이 가장 적은 로그 블록은 PBN 500이므로 PBN 500이 희생 로그 블록으로 선택된다. PBN 600의 경우 A(L)이 2 이므로 전체 8개의 페이지에 대한 복사가 필요하지만, PBN 500의 경우 A(L)이 1 이므로 4개의 페이지에 대한 복사만이 요구된다. 특히, PBN 500의 경우 교체 병합을 사용하므로 병합 비용은 더 적게 든다.
상술한 바와 같이 로그 블록 LRU 테이블을 사용하고, 가장 오래된 몇 개의 로그 블록들 중에서 병합 비용이 가장 적은 로그 블록을 희생 로그 블록으로 선택함으로써 FTL의 성능을 더 향상시킬 수 있다.
도 9는 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 희생 로그 블록 선택 방법을 설명하기 위한 흐름도이다.
도 9를 참조하면, 우선 특정 페이지에 대한 덮어쓰기 또는 업데이트로 인하여 로그 블록 할당 요청이 발생하였는지를 판단하는데, 이를 위하여 먼저 페이지 쓰기 연산이 발생하였는지를 판단하고(S310), 페이지 쓰기 연산이 발생한 경우 로그 블록 할당 요청이 발생하였는지를 판단한다(S320).
페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우(S310, S320) 플래시 메모리의 모든 로그 블록이 사용 중인지 판단한다(S330). 플래시 메모리의 모든 로그 블록이 사용 중인 경우 로그 블록 LRU 테이블에서 미리 정해진 수의 희생 로그 블록 후보 중 병합 비용이 가장 낮은 것을 희생 로그 블록으로 선택한다(S340).
희생 로그 블록 후보의 수는 상술한 희생 로그 블록 영역의 크기에 해당되며, 특히 실험에 의한 최적값에 따라 상기 희생 로그 블록 후부의 수는 로그 블록 LRU 테이블 크기의 30%로 결정될 수 있다.
상기 병합 비용은 로그 블록 병합 수행 시에 로그 블록으로부터 복사되는 페이지를 포함하는 서로 다른 데이터 블록의 개수에 기초하여 산출될 수 있다. 예를 들어, 상술한 A(L)의 값을 병합 비용으로 정의할 수 있다.
페이지 쓰기 연산이 발생하였으나 로그 블록 할당 요청이 발생하지 않은 경우(S110, S120) 상기 페이지를 포함하는 로그 블록에 대하여 상기 로그 블록 LRU 테이블을 갱신한다(S390). 즉, 상기 페이지를 포함하는 로그 블록을 로그 블록 LRU 테이블 상에서 MRU(Most Recently Used)에 가까운 항목에 기록한다.
플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아닌 경우, 즉 로 그 블록 병합 없이 할당이 가능한 경우 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인지 판단한다(S350).
플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아니고 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K가 아닌 경우, 보다 구체적으로 K보다 적은 경우에는, 새로 할당되는 로그 블록에 대하여 상기 로그 블록 LRU 테이블을 갱신한다(S380). 즉, 상기 새로 할당되는 로그 블록을 로그 블록 LRU 테이블 상에서 MRU에 가까운 항목에 기록한다.
플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아니고 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택한다(S360).
이전 단계(S340, S360)에서 희생 로그 블록이 선택된 경우, 선택된 희생 로그 블록에 대한 로그 블록 병합에 의하여 사용 가능한 블록을 생성한다(S370).
도 10은 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 다중 플레인 플래시 메모리 상에서의 카피백을 위한 블록 할당 방법을 설명하기 위한 흐름도이다.
도 5를 참조하면, 다중 플레인으로 구성된 낸드 플래시 메모리에서 카피백은 같은 플레인에서만 사용 가능하므로 로그 블록 병합 작업을 카피백을 사용하여 수행을 하려면 데이터 블록과 로그 블록이 같은 플레인에 속해 있도록 관리를 해줘 야 한다. 또한 복수 플레인 단위로 연산을 수행하기 위해서는 FTL에서 복수 페이지 단위로 데이터를 모아서 처리해야 한다.
다시 도 10을 참조하면, 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생하였는지 판단하여(S410), 그러한 경우 쓰기 연산이 발생한 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는지 판단한다(S420).
판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는 경우, 이미 존재하는 상기 데이터 블록 그룹을 포함하는 플레인의 사용 가능한 로그 블록을, 이미 존재하는 상기 데이터 블록 그룹에 대응되는 로그 블록 그룹에, 새로운 로그 블록으로서 할당한다(S430).
판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 존재하지 않는 경우, 새로운 데이터 블록 그룹 및 대응되는 새로운 로그 블록 그룹을 동일한 플레인으로부터 할당한다(S440).
다음으로 카피백에 의하여 데이터 블록 병합, 로그 블록 병합, 데이터 블록 그룹 병합, 로그 블록 그룹 병합 중 적어도 하나를 수행한다(S450). 이 경우 복수 플레인 단위 연산을 수행할 수 있는데, 복수개의 플레인에 각각 포함되는 복수개의 블록이 있고, 상기 복수개의 블록에 각각 포함되는 복수개의 페이지에 대하여, 상기 복수개의 페이지 단위로 수행되는 카피백에 의하여 데이터 블록 병합, 로그 블록 병합, 데이터 블록 그룹 병합, 로그 블록 그룹 병합 중 적어도 하나를 수행할 수 있다.
도 11은 본 발명의 일 실시예에 따른 플래시 메모리 장치의 구성을 나타내는 블록도이다.
도 11을 참조하면, 본 발명의 일 실시예에 따른 플래시 메모리 장치는 플래시 변환 계층(FTL, 520) 및 플래시 메모리(540)를 포함한다.
플래시 메모리(540)는, 도 1을 참조하여 설명한 바와 같이, 복수의 블록으로 구성되며, 각 블록은 복수의 페이지로 이루어져 있다. 구체적으로, 플래시 메모리(540)는 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함할 수 있다. 이와 같은 플래시 메모리의 구조에 대하여는 상기 하이브리드 기반 FTL 기법 중의 하나인 SAST 기법 및 상기 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법에서 도 2 및 도 3 을 참조하여 설명한 바와 동일하게 이해될 수 있으므로 이하 설명을 생략한다.
FTL(520)은 호스트 시스템의 파일 시스템(File System, 510)과 디바이스 드라이버(Device Driver, 530) 및 플래시 메모리(540) 사이에 존재한다.
FTL(520)은 상위의 파일 시스템(510)에게 플래시 메모리(540)가 가지고 있는 고유의 특성들을 감추며, 호스트 시스템으로 하여금 FAT(File Allocation Table)와 같은 파일 시스템(510)을 사용하여 플래시 메모리(540)를 효율적으로 제어하여 하드 디스크와 동일한 입출력 연산을 수행할 수 있도록 한다.
FTL(520)은 주소 맵핑 테이블을 이용하여 파일 시스템(510)으로부터 전달 되는 논리적인 주소를 낸드 플래시 메모리의 물리적인 주소에 매핑(Mapping)한다. FTL은 그 기능의 일부가 하드웨어로 구현될 수도 있다.
FTL(510)은 특정 블록을 지우고 새로운 블록을 할당 받을 때 파일 시스템(510)의 입장에서 논리적인 주소의 변경 없이 해당 물리적인 블록만 변경되도록 한다. FTL(510)은 가비지 콜렉션, 닳기 균등화(Wear Leveling), 배경 지우기(Background Erase), 배드 블록 관리(Bad Block Management) 등의 기능을 수행한다.
FTL(510)은 상기 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법, 상기 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 분할 방법, 상기 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 희생 로그 블록 선택 방법 및 상기 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 다중 플레인 플래시 메모리 상에서의 카피백을 위한 블록 할당 방법 중 적어도 하나의 방법을 수행한다.
FTL(510)이 상기 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법, 상기 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 분할 방법, 상기 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 희생 로그 블록 선택 방법 및 상기 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 다중 플레인 플래시 메모리 상에서의 카피백을 위한 블록 할당 방법 중 적어도 하나의 방법을 수행하는 동작에 대하여는 도 1 내지 도 10을 참조하여 설명한 바와 동일하게 이해될 수 있으므로 이하 설명을 생략한다.
마이크로소프트 윈도우 XP를 기반으로 한 데스크탑 컴퓨터에서 Postmark 벤치마크 및 Explorer를 사용하여 불규칙적으로 다수의 파일에 접근하는 입출력 정보를 수집하고 인터넷을 사용하는 동안 작은 크기의 불규칙적인 입출력 정보를 수집하여 성능 측정 결과를 얻었다.
성능 측정에 있어서 낸드 플래시 메모리는 4개의 플레인으로 구성되어 있고 한 블록은 64개의 페이지로 구성되어 있으며 각 페이지의 크기는 2 Kbyte로 구성되었다고 가정하였다.
성능 측정은 크게 SAST 기법과 적응적 SAST(A-SAST) 기법으로 나누고, 다시 각 기법에서 다중 플레인을 고려한 방법과 고려하지 않는 방법, 그리고 한 플레인 단위(2 Kbyte)로 동작하는 방법과 두 개의 플레인(2-Plane) 단위(4 Kbyte)로 동작하는 방법으로 나누어 총 8가지 경우에 대한 실험 결과를 비교 하였다. 성능 측정시 사용된 전체 로그 블록의 개수는 256개이며 초기에 할당되는 매개변수 K(각각의 데이터 블록 그룹에 대응되어 할당될 수 있는 최대 로그 블록 개수)값은 64이다.
도 12 내지 도 14는 본 발명에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에 대한 Postmark 벤치마크 성능 측정 결과를 나타내는 그래프이다. Postmark 벤치마크의 경우 특정 위치에 대한 작은 크기의 업데이트가 많이 발생한다.
도 12 및 도 13을 참조하면, Postmark 벤치마크의 입출력 소요시간 테스트 결과에 있어서, 대체적으로 플레인을 고려하여 카피백을 활용하는 경우가 그렇지 않은 경우보다 더 좋은 성능을 보이고, 플레인을 고려하는 경우 두 개 플레인 단위로 동작하는 경우가 한 개 플레인 단위로 동작하는 경우보다 더 좋은 성능을 보이며, A-SAST 기법을 사용하는 경우가 SAST 기법을 사용하는 경우보다 더 좋은 성능을 보인다는 것을 알 수 있다.
도 14를 참조하면, SAST 기법의 성능 측정 결과를 1로 정규화하였을 때 대응되는 4가지 경우의 A-SAST 기법의 상대적 성능 측정 결과가 나타나 있다. 전체적으로 소요시간이 감소하여 성능이 개선된 것을 볼 수 있다. 두 개 플레인(4 Kbyte) 단위로 동작하는 경우 최대 38%의 성능 개선을 볼 수 있고, 한 개 플레인(2 Kbyte) 단위로 동작하는 경우 최대 22%의 성능 개선을 볼 수 있다. 평균적으로 A-SAST 기법이 SAST 기법에 비해 15% ~ 22% 정도 성능이 개선된 것을 볼 수 있다.
도 15는 본 발명에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에 대한 Explorer 벤치마크 성능 측정 결과를 나타내는 그래프이다. Explorer 벤치마크의 경우 작은 크기의 불규칙한 접근 패턴을 가지고 있다.
도 15를 참조하면, 플레인을 고려하지 않고 한 개 플레인 단위(2 Kbyte)로 A-SAST 기법을 테스트한 경우 N값(데이터 블록 그룹이 포함할 수 있는 최대 데이터 블록 개수)에 따른 데이터 블록 그룹의 병합 및 분할 횟수가 나타나 있다. N이 작을 때는 데이터 블록 그룹 병합이 발생되어 로그 블록의 사용률을 높여서 로그 블록 병합 횟수를 줄이게 되고, N값이 큰 경우에는 데이터 그룹 분할을 수행하여 로그 블록 병합 비용을 줄임으로써 수행 시간을 단축시키는 것을 알 수 있다. 실험적으로 N값이 16에서 128 사이의 값인 경우 SAST기법에서 성능이 가장 좋은 경우인 것으로 나타나 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 일반적인 낸드 플래시 메모리의 구조를 설명하기 위한 개념도이다.
도 2는 하이브리드 기반 FTL 기법 중의 하나인 SAST 기법을 설명하기 위한 개념도이다.
도 3은 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 병합 방법을 설명하기 위한 흐름도이다.
도 5는 다중 플레인 플래시 메모리의 구조 및 카피백을 설명하기 위한 개념도이다.
도 6은 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 분할 방법을 설명하기 위한 개념도이다.
도 7은 본 발명의 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 블록 그룹 분할 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 희생 로그 블록 선택 방법을 설명하 기 위한 개념도이다.
도 9는 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 적응적 SAST 기법 중 희생 로그 블록 선택 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 또 다른 일 실시예에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에서 다중 플레인 플래시 메모리 상에서의 카피백을 위한 블록 할당 방법을 설명하기 위한 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 플래시 메모리 장치의 구성을 나타내는 블록도이다.
도 12 내지 도 14는 본 발명에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에 대한 Postmark 벤치마크 성능 측정 결과를 나타내는 그래프이다.
도 15는 본 발명에 따른 플래시 변환 계층에서 수행되는 데이터 관리 방법에 대한 Explorer 벤치마크 성능 측정 결과를 나타내는 그래프이다.
* 도면의 주요부분에 대한 부호의 설명 *
510 : 파일 시스템 520 : 플래시 변환 계층
530 : 디바이스 드라이버 540 : 플래시 메모리

Claims (19)

  1. 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서,
    (a) 로그 블록 할당 요청이 발생하고, 상기 플래시 메모리의 모든 로그 블록이 사용 중이거나 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 희생 로그 블록을 선택하는 단계; 및
    (b) 선택된 상기 희생 로그 블록을 포함하는 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 제1 데이터 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는 경우, 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고, 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합하는 단계를 포함하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  2. 제1항에 있어서,
    상기 미리 정해진 그룹 병합 조건은, 특정 로그 블록 그룹에 대응되는 데이터 블록 그룹에 할당된 전체 페이지 개수 대비 상기 특정 로그 블록 그룹의 사용 중인 페이지 개수 비율이 미리 정하여진 값보다 작은 조건인 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  3. 제1항에 있어서,
    상기 미리 정해진 그룹 병합 조건은, 특정 로그 블록 그룹에 속하는 적어도 어느 하나의 로그 블록과 연관된 데이터 블록 개수가 미리 정하여진 값보다 작은 조건인 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  4. 제1항에 있어서,
    상기 (a) 단계는,
    상기 플래시 메모리의 모든 로그 블록이 사용 중인 경우 상기 플래시 메모리의 할당된 모든 로그 블록 중 적어도 하나를 상기 희생 로그 블록으로 선택하고,
    상기 플래시 메모리의 적어도 하나의 로그 블록이 사용 중이 아니고 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  5. 제1항에 있어서,
    (c) 선택된 상기 희생 로그 블록에 대한 로그 블록 병합에 의하여 사용 가 능한 블록을 생성하는 단계를 더 포함하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  6. 제1항에 있어서,
    상기 플래시 메모리는 다중 플레인 플래시 메모리이고,
    상기 (b) 단계는, 선택된 상기 희생 로그 블록을 포함하는 상기 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 상기 제1 데이터 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹을 포함하는 플레인에서 상기 제1 데이터 블록 그룹에 인접하는 상기 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 상기 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는 경우, 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고, 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  7. 각각 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서,
    (a) 제1 로그 블록을 새로 할당 받는 로그 블록 그룹에서 제2 로그 블록을 결정하는 단계; 및
    (b) 상기 제2 로그 블록 및 상기 제2 로그 블록에 대응되는 데이터 블록 그룹이 미리 정해진 그룹 분할 조건을 만족하는 경우, 상기 제2 로그 블록에 대응되는 데이터 블록 그룹을 복수의 데이터 블록 그룹으로 분할하고, 상기 제2 로그 블록을 포함하는 로그 블록 그룹을 각각 상기 복수의 데이터 블록 그룹에 일대일 대응되는 복수의 로그 블록 그룹으로 분할하는 단계를 포함하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  8. 제7항에 있어서,
    상기 미리 정해진 그룹 분할 조건은, 특정 로그 블록과 연관된 데이터 블록 개수가 미리 정하여진 값보다 큰 조건인 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  9. 각각 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서,
    (a) 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 상기 플래시 메모리의 모든 로그 블록이 사용 중인지 여부를 판단하는 단계; 및
    (b) 판단 결과 상기 플래시 메모리의 모든 로그 블록이 사용 중인 경우 로 그 블록 LRU 테이블(Log Block Least Recently Used Table)에서 미리 정해진 수의 희생 로그 블록 후보 중 병합 비용이 가장 낮은 것을 희생 로그 블록으로 선택하고 로그 블록 병합에 의하여 사용 가능한 블록을 생성하는 단계를 포함하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  10. 제9항에 있어서,
    상기 (a) 단계는, 페이지 쓰기 연산이 발생하였으나 로그 블록 할당 요청이 발생하지 않은 경우 상기 페이지를 포함하는 로그 블록에 대하여 상기 로그 블록 LRU 테이블을 갱신하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  11. 제9항에 있어서,
    상기 (b) 단계는, 판단 결과 상기 플래시 메모리의 적어도 하나의 로그 블록이 사용 가능한 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인지 여부를 판단하되,
    상기 플래시 변환 계층에서 수행되는 데이터 관리 방법은,
    (c) 판단 결과 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 중 적어도 하나를 희생 로그 블록으로 선택하고 로그 블록 병합에 의하여 사용 가능한 블록을 생성하는 단계를 더 포함하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  12. 제11항에 있어서,
    상기 (c) 단계는, 판단 결과 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K가 아닌 경우 새로 할당되는 로그 블록에 대하여 상기 로그 블록 LRU 테이블을 갱신하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  13. 제9항에 있어서,
    상기 병합 비용은 로그 블록 병합 수행 시에 로그 블록으로부터 복사되는 페이지를 포함하는 서로 다른 데이터 블록의 개수에 기초하여 산출되는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  14. 각각 적어도 하나의 데이터 블록을 포함하는 적어도 하나의 데이터 블록 그룹 및 각각 적어도 하나의 로그 블록을 포함하고 상기 적어도 하나의 데이터 블록 그룹에 일대일 대응되는 적어도 하나의 로그 블록 그룹을 포함하는 다중 플레인 플래시 메모리를 위한 로그 버퍼 기반 플래시 변환 계층에서 수행되는 데이터 관리 방법에 있어서,
    (a) 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 쓰기 연산이 발생한 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는지 판단하 는 단계; 및
    (b) 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 존재하지 않는 경우 새로운 데이터 블록 그룹 및 대응되는 새로운 로그 블록 그룹을 동일한 플레인으로부터 할당하고, 상기 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는 경우 이미 존재하는 상기 데이터 블록 그룹을 포함하는 플레인으로부터 이미 존재하는 상기 데이터 블록 그룹에 대응되는 로그 블록 그룹에 새로운 로그 블록을 할당하는 단계를 포함하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  15. 제14항에 있어서,
    (c) 카피백에 의하여 데이터 블록 병합 및 로그 블록 병합 중 적어도 하나를 수행하는 단계를 더 포함하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  16. 제15항에 있어서,
    상기 (c) 단계는 복수개의 플레인에 각각 포함되는 복수개의 블록에 각각 포함되는 복수개의 페이지 단위로 수행되는 카피백에 의하여 데이터 블록 병합 및 로그 블록 병합 중 적어도 하나를 수행하는 것을 특징으로 하는 플래시 변환 계층에서 수행되는 데이터 관리 방법.
  17. 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리; 및
    주소 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 플래시 메모리의 물리적인 주소에 매핑시키는 플래시 변환 계층을 포함하되,
    상기 플래시 변환 계층은, 로그 블록 할당 요청이 발생하고, 상기 플래시 메모리의 모든 로그 블록이 사용 중이거나 상기 로그 블록 할당 요청이 발생한 로그 블록 그룹에 할당된 로그 블록 개수가 K인 경우 희생 로그 블록을 선택하고, 선택된 상기 희생 로그 블록을 포함하는 제1 로그 블록 그룹 및 상기 제1 로그 블록 그룹에 대응되는 제1 데이터 블록 그룹이 미리 정해진 그룹 병합 조건을 만족하고, 상기 제1 데이터 블록 그룹에 인접하는 제2 데이터 블록 그룹 및 상기 제2 데이터 블록 그룹에 대응되는 제2 로그 블록 그룹이 상기 미리 정해진 그룹 병합 조건을 만족하는 경우, 상기 제1 데이터 블록 그룹과 상기 제2 데이터 블록 그룹을 병합하고, 상기 제1 로그 블록 그룹과 상기 제2 로그 블록 그룹을 병합하는 것을 특징으로 하는 플래시 메모리 장치.
  18. 각각 최대 N개의 데이터 블록을 포함하는 G개의 데이터 블록 그룹 및 각각 최대 K개의 로그 블록을 포함하고 상기 G개의 데이터 블록 그룹에 일대일 대응되는 G개의 로그 블록 그룹을 포함하는 플래시 메모리; 및
    주소 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 플래시 메모리의 물리적인 주소에 매핑시키는 플래시 변환 계층을 포함하되,
    상기 플래시 변환 계층은, 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 상기 플래시 메모리의 모든 로그 블록이 사용 중인지 여부를 판단하고, 판단 결과 상기 플래시 메모리의 모든 로그 블록이 사용 중인 경우 로그 블록 LRU 테이블(Log Block Least Recently Used Table)에서 미리 정해진 수의 희생 로그 블록 후보 중 병합 비용이 가장 낮은 것을 희생 로그 블록으로 선택하고 로그 블록 병합에 의하여 사용 가능한 블록을 생성하는 것을 특징으로 하는 플래시 메모리 장치.
  19. 각각 적어도 하나의 데이터 블록을 포함하는 적어도 하나의 데이터 블록 그룹 및 각각 적어도 하나의 로그 블록을 포함하고 상기 적어도 하나의 데이터 블록 그룹에 일대일 대응되는 적어도 하나의 로그 블록 그룹을 포함하는 다중 플레인 플래시 메모리; 및
    주소 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 다중 플레인 플래시 메모리의 물리적인 주소에 매핑시키는 플래시 변환 계층을 포함하되,
    상기 플래시 변환 계층은, 페이지 쓰기 연산으로 인하여 로그 블록 할당 요청이 발생한 경우 쓰기 연산이 발생한 페이지를 포함하는 데이터 블록 그룹이 이 미 존재하는지 판단하고, 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 존재하지 않는 경우 새로운 데이터 블록 그룹 및 대응되는 새로운 로그 블록 그룹을 동일한 플레인으로부터 할당하고, 상기 판단 결과 상기 페이지를 포함하는 데이터 블록 그룹이 이미 존재하는 경우 이미 존재하는 상기 데이터 블록 그룹을 포함하는 플레인으로부터 이미 존재하는 상기 데이터 블록 그룹에 대응되는 로그 블록 그룹에 새로운 로그 블록을 할당하는 것을 특징으로 하는 다중 플레인 플래시 메모리 장치.
KR1020090039142A 2009-05-06 2009-05-06 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치 KR100994052B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090039142A KR100994052B1 (ko) 2009-05-06 2009-05-06 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090039142A KR100994052B1 (ko) 2009-05-06 2009-05-06 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치

Publications (1)

Publication Number Publication Date
KR100994052B1 true KR100994052B1 (ko) 2010-11-11

Family

ID=43409645

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090039142A KR100994052B1 (ko) 2009-05-06 2009-05-06 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치

Country Status (1)

Country Link
KR (1) KR100994052B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101430552B1 (ko) 2013-04-08 2014-08-18 인하대학교 산학협력단 Ssd 기반 스토리지 시스템에서 중복률과 입출력 성능 향상을 위한 ssd 스토리지의 데이터 중복제거 및 재활용 시스템
US9805799B2 (en) 2012-06-29 2017-10-31 Samsung Electronics Co., Ltd. Devices and methods of managing nonvolatile memory device having single-level cell and multi-level cell areas

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
KR100885181B1 (ko) 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
KR100885181B1 (ko) 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805799B2 (en) 2012-06-29 2017-10-31 Samsung Electronics Co., Ltd. Devices and methods of managing nonvolatile memory device having single-level cell and multi-level cell areas
KR101430552B1 (ko) 2013-04-08 2014-08-18 인하대학교 산학협력단 Ssd 기반 스토리지 시스템에서 중복률과 입출력 성능 향상을 위한 ssd 스토리지의 데이터 중복제거 및 재활용 시스템

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
CN109542333B (zh) 存储器系统及控制非易失性存储器的控制方法
US10761731B2 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
US10275162B2 (en) Methods and systems for managing data migration in solid state non-volatile memory
CN108021510B (zh) 操作对多重名称空间进行管理的存储装置的方法
CN102419735B (zh) 存储器系统
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
KR101038167B1 (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US8024545B2 (en) Efficient prefetching and asynchronous writing for flash memory
KR102170539B1 (ko) 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
KR101067018B1 (ko) 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치
US20130166828A1 (en) Data update apparatus and method for flash memory file system
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
WO2012020544A1 (ja) データ処理システム、データ処理方法、およびプログラム
KR20140006299A (ko) 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치
JP2023000085A (ja) メモリシステム及び情報処理システム
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
Park et al. A pattern adaptive NAND flash memory storage structure
JP6139711B2 (ja) 情報処理装置
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
CN110377233A (zh) Ssd读性能优化方法、装置、计算机设备及存储介质
EP2570928A1 (en) Efficient non-volatile read cache for storage system
KR20160106240A (ko) 반도체 장치 및 그 동작 방법
Ramasamy et al. RFFE: A buffer cache management algorithm for flash-memory-based SSD to improve write performance
KR100988388B1 (ko) 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131007

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee