KR101482013B1 - 플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치 - Google Patents

플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치 Download PDF

Info

Publication number
KR101482013B1
KR101482013B1 KR20120057618A KR20120057618A KR101482013B1 KR 101482013 B1 KR101482013 B1 KR 101482013B1 KR 20120057618 A KR20120057618 A KR 20120057618A KR 20120057618 A KR20120057618 A KR 20120057618A KR 101482013 B1 KR101482013 B1 KR 101482013B1
Authority
KR
South Korea
Prior art keywords
block
page
data
log
information
Prior art date
Application number
KR20120057618A
Other languages
English (en)
Other versions
KR20130134235A (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 KR20120057618A priority Critical patent/KR101482013B1/ko
Publication of KR20130134235A publication Critical patent/KR20130134235A/ko
Application granted granted Critical
Publication of KR101482013B1 publication Critical patent/KR101482013B1/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/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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시예는, 플래시 메모리 기반 저장 시스템의 플래시 변환계층의 메타데이터인 변환테이블의 업데이트에 있어서, 저장장치의 데이터 블록 내의 데이터 페이지 업데이트 시 변경되는 논리주소에 대응하는 물리주소값을 로그블록 및 로그페이지에 저장하는 로그정보 저장단계; 및 상기 로그블록을 스캔하여 상기 데이터 페이지의 업데이트를 반영한 상기 데이터 페이지에 대한 물리적인 위치정보를 포함하고 있는 메타 데이터를 갱신하는 데이터 갱신단계를 포함하는 것을 특징으로 하는 데이터 업데이트 방법 및 장치를 제공한다.

Description

플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치{Method and Apparatus for Updating MetaData of Flash-Memory Based Data System}
본 발명의 실시예는 플래시 메모리 기반 저장 시스템의 데이터 업데이트 방법 및 장치에 관한 것이다. 더욱 상세하게는, 일반적으로 낸드 플래시 메모리와 같은 플래시 메모리 기반의 저장 시스템에서 데이터의 업데이트가 발생할 때마다 페이지 매핑 테이블을 변화시키는 경우 발생하는 오버헤드 문제에 대응하고자 하는 플래시 메모리 기반 저장 시스템의 데이터 업데이트 방법 및 장치에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 발명의 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
일반적으로 낸드 플래시 메모리는 그 특성상 한번 쓴 영역에 대해서, 재차 쓰기 연산을 수행하기 위해서는 지우기 연산이 먼저 이루어져야 한다. 그러나 쓰기 연산과 지우기 연산 단위의 크기에 차이가 있는 경우 복잡한 관리 방법이 필요하게 된다.
본 발명의 실시예는 낸드 플래시 메모리와 같은 플래시 메모리 기반의 저장 시스템에서 데이터의 업데이트가 발생할 때마다 페이지 매핑 테이블을 변화시키는 경우 발생하는 오버헤드 문제에 대응하고자 하는 데 주된 목적이 있다.
본 발명의 일 실시예에 따르면, 플래시 메모리 기반 저장 시스템의 데이터 업데이트 장치에 있어서, 저장장치의 데이터 블록 내의 데이터 페이지에 대한 쓰기 연산이 발생할 때마다 상기 데이터 페이지의 쓰기 연산에 대한 로그블록을 저장하는 로그정보 저장부; 및 복수의 쓰기 연산에 대한 상기 로그블록을 특정 시점에 스캔하여 스캔된 로그 블록의 정보를 기초로 상기 복수의 쓰기 연산에 대응되는 데이터 페이지를 업데이트 하고 상기 데이터 페이지의 업데이트를 반영하여 상기 데이터 페이지에 대한 물리적인 위치정보 및 상기 로그블록에 대한 위치정보를 포함하고 있는 메타 데이터를 갱신하는 데이터 갱신부를 포함하는 것을 특징으로 하는 데이터 업데이트 장치를 제공한다.
상기 데이터 갱신부는, 상기 데이터 페이지를 페이지 단위로 업데이트하고 상기 메타데이터를 데이터 블록 단위로 업데이트하되, 상기 데이터 블록 단위는 상기 페이지 단위의 복수배일 수 있다.
상기 메타 데이터는, 상기 저장장치의 데이터 블록 내의 논리 페이지와 물리 페이지 사이를 매핑하는 페이지맵 블록 및 상기 데이터 블록의 특성에 따라 그룹화하는 메타블록을 포함할 수 있다.
상기 데이터 갱신부는 상기 메타블록에 대한 정보 및 상기 페이지맵 블록에 대한 정보를 저장하는 루트블록을 액세스하는 기능을 더 포함하고,
상기 루트 블록은 상기 메타블록에 대한 정보인 루트인포를 페이지 단위로 저장하되 상기 메타블록이 갱신될 때마다 이전 갱신된 페이지와는 다른 페이지에 저장할 수 있다.
상기 루트인포에는 최신의 루트인포에 대한 정보가 저장될 수 있다.
상기 루트 블록은 두 개의 물리 영역에 저장되고, 상기 메타 블록이 갱신될 때 하나의 물리 영역이 다 소모된 경우에는 상기 하나의 물리 영역을 제외한 다른 물리 영역에 상기 갱신되는 메타블록에 대한 정보가 저장되고 상기 하나의 물리 영역에 저장된 루트 블록은 삭제한다.
상기 로그블록은 사용자 데이터 업데이트인지 가비지 콜렉션인지 여부를 나타내는 로그타입정보를 포함할 수 있다.
상기 로그타입정보가 사용자 데이터 업데이트임을 의미하는 경우에는 상기 로그블록은 현재 블록의 페이지맵 위치와, 상기 페이지맵 내에 저장될 논리주소 및 물리 주소를 포함할 수 있다.
상기 로그타입정보가 가비지 콜렉션임을 의미하는 경우에는 상기 로그블록은 소스블록의 위치와 목적블록의 위치를 포함할 수 있다.
상기 메타블록은 데이터 블록 내에서 유효한 페이지 갯수가 같은 블록끼리 그룹화한 데이터를 저장할 수 있다.
상기 메타블록은 데이터 블록 내에서 유효한 페이지 갯수가 같은 블록끼리 연결 리스트로 그룹화한 데이터를 저장할 수 있다.
상기 루트블록은 로그블록의 위치를 나타내는 정보를 포함하고, 상기 데이터 갱신부는 상기 로그블록의 위치를 참조하여 로그블록을 스캔할 수 있다.
상기 로그블록을 위한 공간은, 상기 메타블록을 참조하여 사용되지 않는 블록으로 그룹화된 블록이 할당될 수 있다.
상기 데이터 업데이트 장치는, 상기 로그블록을 위한 공간을 위한 빈 공간이 충분치 않은 경우 가비지 콜렉션을 수행하여 상기 로그블록을 위한 공간을 위한 빈 공간을 할당할 수 있다.
본 발명의 일 실시예에 따르면, 플래시 메모리 기반 저장 시스템의 데이터 업데이트 방법에 있어서, 저장장치의 데이터 블록 내의 데이터 페이지에 대한 업데이트가 발생할 때마다 상기 데이터 페이지의 쓰기 연산에 대한 로그블록을 저장하는 로그정보 저장단계; 및 복수의 쓰기 연산에 대한 상기 로그블록을 특정 시점에 스캔하여 스캔된 로그 블록의 정보를 기초로 상기 복수의 쓰기 연산에 대응되는 데이터 페이지를 업데이트하고 상기 데이터 페이지의 업데이트를 반영하여 상기 데이터 페이지에 대한 물리적인 위치정보 및 상기 로그블록에 대한 위치정보를 포함하고 있는 메타 데이터를 갱신하는 데이터 갱신단계를 포함하는 것을 특징으로 하는 데이터 업데이트 방법을 제공한다.
본 발명의 실시예에 따르면, 낸드 플래시 메모리와 같은 플래시 메모리 기반의 저장 시스템에서 데이터의 업데이트가 발생할 때마다 페이지 매핑 테이블을 변화시키는 경우 발생하는 오버헤드 문제에 대응할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 업데이트 장치의 구조를 개략적으로 나타낸 블럭 구성도이다.
도 2는 낸드 플래시 메모리의 기본 구조를 예시한 도면이다.
도 3은 낸드 플래시 메모리에 저장된 FTL 구조를 상세히 도시한 도면이다.
도 4는 RootInfo의 업데이트 방법을 도시한 도면이다.
도 5는 메타블록의 데이터구조를 나타낸 도면이다.
도 6은 페이지맵블록의 구조를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터 전송 방법을 설명하기 위한 순서도이다.
도 8은 FTL Format 순서를 나타낸 도면이다.
도 9는 FTL의 Open의 순서도를 나타낸 도면이다.
도 10은 FTL Open이 완료된 후, 정상 상태에서의 플래시 메모리와 메인 메모리에 구성된 FTL의 구조도를 나타낸 도면이다.
도 11은 FTL리드부(미도시)에서 수행하는 FTL read 연산을 나타낸 순서도이다.
도 12는 FTL의 Write 연산을 순서도로 도식화한 도면이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 데이터 업데이트 장치의 구조를 개략적으로 나타낸 블럭 구성도이다.
도 1에 도시하듯이 본 발명의 일 실시예에 따른 데이터 업데이트 장치(100)는 로그정보 저장부(110) 및 데이터 갱신부(120)를 포함한다. 도 1은 본 발명의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명의 일 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 일 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 자료검색 장치에 포함되는 구성 요소에 대하여 다양하게 수정 및 변형하여 적용 가능할 것이다.
로그정보 저장부(110)는 저장장치(즉, 플래시 메모리 기반 저장 시스템)의 데이터 블록 내의 데이터 페이지 업데이트 시에 페이지 업데이트에 대한 로그블록을 저장한다.
데이터 갱신부(120)는 로그정보 저장부(110)에 의해 저장된 로그블록을 스캔하여 데이터 페이지를 업데이트 하고 데이터 페이지의 업데이트를 반영하여 업데이트되는 데이터 페이지에 대한 물리적인 위치정보 및 로그블록에 대한 위치정보를 포함하고 있는 메타 데이터를 갱신한다.
데이터 갱신부(120)는 데이터 페이지를 페이지 단위로 업데이트하고 메타데이터를 데이터 블록 단위로 업데이트하되, 데이터 블록 단위는 페이지 단위의 복수배를 사용할 수 있다. 여기서 메타 데이터는, 저장장치의 데이터 블록 내의 논리 페이지와 물리 페이지 사이를 매핑하는 페이지맵 블록 및 데이터 블록의 특성에 따라 그룹화하는 메타블록을 포함한다. 또한, 데이터 갱신부(120)는 메타블록에 대한 정보 및 페이지맵 블록에 대한 정보를 저장하는 루트블록을 엑세스하는 기능을 더 포함한다.
도 2는 낸드 플래시 메모리의 기본 구조를 예시한 도면이다.
도 2에서와 같이 낸드 플래시 메모리는 다수 개의 블록으로 구성되고, 블록은 다수 개의 페이지로 구성된다. 낸드 플래시 메모리에서 데이터의 읽기 쓰기 연산은 페이지 단위로 이루어지며, 지우기 연산은 블록 단위로 이루어진다. 낸드 플래시 메모리는 그 특성상 한번 쓴 영역에 대해서, 재차 쓰기 연산을 수행하기 위해서는 지우기 연산이 먼저 이루어져야 한다. 그러나 쓰기 연산과 지우기 연산 단위의 크기 차이로 인해서 복잡한 관리 방법이 필요하게 된다. 이러한 낸드 플래시 메모리의 물리적인 제약을 극복하고, 효율적인 저장장치로서의 사용을 위해서, 논리 페이지 주소와 물리 페이지 주소를 관리하는 FTL(Flash Translation Layer, 플래시 변환 계층)이라고 하는 소프트웨어를 주로 사용하게 된다. 이 때 FTL의 주소 관리 방법 및 단위는 블록 단위의 주소를 사용할 수도 있고, 페이지 단위의 주소를 사용할 수도 있다. 본 발명에서는 페이지 단위의 매핑을 관리하는 FTL에 관하여 다룬다.
페이지 단위의 매핑을 관리하는 FTL은 메모리 상에 페이지 변환 테이블(Page Mapping Table, 페이지 매핑 테이블)을 구성하고, 상위 레벨의 논리 주소를 실제 물리 주소로 변환하여 낸드 플래시 메모리에 읽기/쓰기 연산을 수행한다. 이러한 매핑을 관리하는 페이지매핑 테이블을 포함한 FTL의 데이터 관리를 위한 구조를 FTL의 메타데이터라 지칭한다. FTL의 메타데이터는 낸드 플래시 메모리의 일정 영역에 저장되어 있다가. 시스템 사용시에 메모리에 로딩된다.
FTL의 메타데이터는 데이터의 쓰기 연산이 발생할 때마다 그것을 반영하기 위해서 매번 업데이트가 발생한다. 이러한 메타데이터 업데이트는 FTL의 사용에 많은 오버헤드로 작용한다. 본 발명의 실시예에서는 FTL의 데이터 업데이트시 발생하는 메타데이터 업데이트의 오베헤드를 줄여줄 수 있는 방안에 대해서 다룬다. 본 발명의 실시예에서는 데이터의 업데이트 발생시, 이에 해당하는 매핑 정보를 로그 영역에 기록하는 방식을 사용한다. 또한 로그에 기록된 업데이트 정보를 특정 시점에서 낸드 플래시 메모리에 한꺼번에 기록함으로써 한꺼번에 데이터에 대한 업데이트를 수행할 수 있다. 따라서 본 발명의 실시예에서 사용자 데이터 및 메타데이터의 업데이트 방법은 페이지 매핑을 관리하는 플래시 메모리 관리 방법에서 페이지 매핑 테이블의 업데이트 횟수를 감소시킬 수 있다.
이하, 본 발명의 실시예에서 FTL를 예를 들어 설명한다.
도 3은 낸드 플래시 메모리에 저장된 FTL 구조를 상세히 도시한 도면이다.
낸드 플래시 메모리에 저장된 FTL 구조는 도 3과 같이 크게 메타데이터 영역과 데이터 영역으로 구성된다. 메타데이터 영역은 루트블록(Root Block), 메타블록(Meta Block), 페이지맵블록(PageMap Block), 그리고 맵로그블록(Map Log Block)으로 구성된다. 여기서 맵로그블록이 본 발명에서 설명하는 로그블록을 의미한다. FTL을 맨 처음 포맷하게 되면, 메타데이터는 낸드 플래시 메모리의 물리 영역 Block 0~12에 저장된다. 루트블록은 저장장치의 물리영역 0,1에 저장되며, 루트블록을 제외한 다른 메타데이터 블록들은 FTL이 사용되어감에 따라 0~12 이외의 물리블록에 저장될 수 있으며, 그 정보가 루트블록에 저장된다. 메타데이터 크기는 낸드 플래시 메모리 칩의 크기에 따라 달라진다. 이외의 블록은 모두 실제적인 사용자 데이터를 저장하는 데이터 블록이다.
데이터 갱신부(120)는 메타블록에 대한 정보 및 페이지맵 블록에 대한 정보를 저장하는 루트블록을 액세스하는 기능을 더 포함하고, 루트 블록은 메타블록에 대한 정보인 루트인포(RootInfo)를 페이지 단위로 저장하되 메타블록이 갱신될 때마다 이전 갱신된 페이지와는 다른 페이지에 저장될 수 있다. 또한, 루트인포에는 최신의 루트인포에 대한 정보가 저장된다.
또한, 루트 블록은 메타블록에 대한 정보를 하나의 페이지로 저장하되 메타블록이 갱신될 때마다 순차적으로 인접한 페이지에 메타블록에 대한 정보가 저장될 수 있다.
루트블록은 메타데이터 영역의 정보를 저장한다. 메타데이터에 저장되는 데이터 구조의 이름은 루트인포(RootInfo)이며 루트블록 내의 한 페이지(page)에 저장되는 크기이며 다음과 같이 구성된다. Magic_Number는 FTL의 고유 정보를 나타내는 Signature값이며, Sequence_Number는 RootInfo의 업데이트 횟수를 나타낸다. RootPageOffset은 루트블록내에서 가장 최신의 RootInfo가 저장된 Page Offset을 가리키며, 매번 업데이트마다 Sequence_Number의 값은 갱신된다. MetaBlocks[]은 메타블록(Metablock)의 물리주소를 저장하며, PageMap[]은 페이지맵 블록의 물리주소를 저장한다. MapLogBlocks[]는 맵로그블록의 물리주소를 저장한다.
도 4는 RootInfo의 업데이트 방법을 도시한 도면이다.
RootInfo정보는 메타데이터 블록들의 정보가 갱신되면 업데이트된다. RootInfo의 업데이트 방법이 나타난 도 3과 같이, RootInfo는 플래시 메모리의 한 페이지(page)에 저장될 수 있는 내용이기 때문에, 매 업데이트마다 루트블록에 로깅하는 방식으로 업데이트된다. 그러므로, 루트블록내에서 유효한 RootInfo를 저장하는 page는 가장 최근에 업데이트된 RootInfo를 저장하고 있는 page가 되며, 이외의 page들은 유효하지 않은 정보를 가지고 있게 된다. 루트블록은 물리영역 0과 1을 사용한다. 두 개의 물리 블록을 사용하는 이유는 하나의 물리 블록에 업데이트가 끝나면, 다음 블록에 업데이트를 진행하기 위해이다. RootInfo를 업데이트 해나가다 보면, 루트블록의 page를 다 소모해버릴 수가 있는데, 이 경우에는 다른 루트블록에 업데이트를 진행하고, 기존의 루트블록은 지우도록 한다.
도 5는 메타블록의 데이터구조를 나타낸 도면이다.
메타블록에는 FTL의 사용에 있어서 중요한 메타데이터 정보인 각 데이터 블록들의 정보를 저장하고 있다.
데이터 블록의 정보는 BlockInfoList, BlockInfo의 두 개의 데이터 구조로 관리된다. 먼저, BlockInfo 데이터 구조는 각 데이터 블록의 정보를 관리하기 위해서 사용되는데, 도 5에 나타난 바와 같이 다음의 정보를 포함한다. nBlk는 블록 넘버를 저장하며, CurPageOffset은 데이터 블록 내에서 다음에 쓸 Page의 Offset 넘버를 저장한다. nValidPageCnt는 블록 내에 유효한 데이터를 저장하고 있는 Page의 개수를 가리키며, ValidPageBitmap은 블록 내의 유효한 데이터를 저장하고 있는 Page의 Bitmap을 저장한다. nPrevBlk과 nNextBlk은 유효한 페이지의 개수가 같은 블록들을 이중 연결 리스트(Double Linked List)로 묶어주는 포인터로 사용된다. 즉, 메타블록은 데이터 블록 내에서 유효한 페이지 갯수가 같은 블록끼리 그룹화한 데이터를 저장한다. BlockInfoList는 유효한 페이지의 개수가 같은 블록끼리 ㅇ이이중 연결 리스트로 묶어주기 위한 용도로 사용한다. 블록 내의 유효한 데이터를 저장하는 페이지의 개수는 0부터 한 블록 내의 페이지 개수까지 있을 수 가 있다. 유효한 페이지 개수가 같은 블록끼리 묶은 BlockInfoList 정보를 이용하여 Free Block관리, 가비지 콜렉션 등에 사용한다. BlockInfoList와 BlockInfo는 그림 4에서와 같이 메타블록에 저장되는데, 메타블록의 0번째 페이지에는 BlockInfoList가 저장되며, 그 이외의 페이지에는 BlockInfo 정보가 저장된다.
도 6은 페이지맵블록의 구조를 도시한 도면이다.
페이지맵 블록에는 실제적인 데이터 블록의 각 페이지의 논리 주소에 대한 물리 주소 영역이 저장된 실제 페이지매핑 테이블의 정보가 저장된다. 페이지 매핑 테이블은 하나의 논리 페이지가 하나의 물리 페이지에 해당되기 때문에 매 논리 페이지와 1:1 대응되는 물리 페이지 주소가 매핑된다. 페이지맵 블록은 논리 페이지를 순차적인 Index로 생각하고, 이에 대한 물리 주소를 페이지맵 블록의 전 영역에 순차적으로 기록해 놓은 정보이다. 페이지맵 블록의 개수는 낸드 플래시 메모리가 저장가능한 데이터 용량에 따라 결정된다. 도 6은 페이지매핑 테이블을 저장하기 위해서 4개의 페이지맵 블록을 사용한 경우를 나타낸 그림이다. 각 페이지맵 블록의 페이지들은 4 byte의 물리 페이지 주소를 가리키는 nPPN값을 저장하고 있다.
도 7은 맵로그블록의 구성도와 맵로그블록의 로깅되는 정보인 MapLogInfo의 구조를 도시한 도면이다.
맵로그블록은 페이지 매핑 테이블의 업데이트를 로그 형식으로 모아서 저장하는데 사용한다. FTL은 매번 데이터 쓰기가 발생할 때마다, 메타데이터의 업데이트가 발생하기 때문에 메타데이터 역시 업데이트를 해주어야 하는 오버헤드가 발생한다. 본 연구개발에서 개발한 FTL은 이를 없애주기 위해서 맵로그블록를 사용한다. 즉, 메타데이터의 업데이트가 발생할 때마다 맵로그블록에 이를 로깅(Logging)하도록 한다.
로그블록은 사용자 데이터 업데이트인지 가비지 콜렉션인지 여부를 나타내는 로그타입정보를 포함한다.
즉, 도 7에 도시한 바와 같이, MapLogInfo는 현재 로깅하는 로그(Log)의 타입(type)을 지정하는 로그타입정보(Logtype)을 지정하도록 되어 있다. FTL에 데이터의 이동이 발생하는 경우는, 실제적인 유저 데이터를 쓰는 경우와 가비지 콜렉션시의 데이터가 이동하는 두 가지 경우가 있다. 두 가지 경우에 실제로 사용되는 데이터 블록들이 다르기 때문에 이를 구분해 줄 필요가 있다.
로그타입정보가 사용자 데이터 업데이트임을 의미하는 경우에는 로그블록은 현재 블록의 페이지맵 위치와, 페이지맵 내에 저장될 논리주소 및 물리 주소를 포함한다. 즉, Log Type이 0인 경우, 즉, 실제 유저의 데이터 쓰기로 인해서 메타데이터의 쓰기가 발생하는 경우는, CurBlk에 현재 쓰기가 발생하고 있는 Block의 데이터 로깅 정보를 MapLogInfo에 기록한다. 즉, CurBlk에 현재 쓰기 데이터 블록으로 사용되는 블록의 Number를 저장하고, MFTL_Log_Page[]에는 CurBlk의 각 페이지에 업데이트 되는 논리 페이지 주소와 물리페이지 주소의 쌍인 {nLPN,nPPN}의 값을 기록한다. 이 로그 기록은 CurBlk이 이 다 사용될 때까지 기록된다.
로그타입정보가 가비지 콜렉션임을 의미하는 경우에는 로그블록은 소스블록의 위치와 목적블록의 위치를 포함한다. 즉, Log Type이 1인 경우는, 가비지 콜렉션에 의해서 데이터 이동이 일어나는 경우이다. 이 경우는 Log Type을 1로 설정하고, 가비지 콜렉션에 사용되는 두 블록, 즉, Source Block의 넘버는 SrcBlk에 Destination Block의 넘버는 DstBlk에 저장한다. 그리고, 가비지 콜렉션 시 실제 데이터의 이동이 발생한 페이지의 논리 페이지 주소와 물리페이지 주소의 쌍인 {nLPN, nPPN}의 정보를 MFTL_Log_Page[]에 기록하도록 한다.
맵로그블록에 기록된 Log정보는 시스템의 갑작스런 문제로 인해서 FTL이 제대로 Close되지 않은 경우, 다음번 FTL Open시에 데이터 및 메타데이터 복원을 위해서 사용될 수 있다.
- FTL Format
초기에 낸드 플래시 메모리 저장장치를 사용하기 위해서는 FTL을 Format 해주어야 한다. FTL Format은 낸드 플래시 메모리에 FTL 구조를 생성해 내는 일을 하며, 주로 메타데이터를 생성하여, 낸드 플래시 메모리에 저장하는 일을 한다.
도 8은 FTL Format 순서를 나타낸 도면이다. 도 8에 도시한 바와 같이, 먼저 FTL Format을 수행하는 FTL포맷부(미도시)는 RootInfo 정보를 메인 메모리에 생성하고, 메타블록, 페이지맵 블록의 개수등을 낸드 플래시 메모리 크기를 고려하여 계산한다(S810). 그 후, BlockInfoList[] 데이터구조와 BlockInfo[] 데이터 구조를 메모리에 생성하고, BlockInfo 정보들을 BlockInfoList[0]에 모두 연결 리스트(linked list)로 연결한다. 처음 생성될 때는 블록에 데이터가 없는 상태이므로 모든 블록이 유효 데이터가 없으므로 BlockInfoList[0]에 연결시켜 둔다(S820). 마지막으로, 페이지매핑 테이블을 메인 메모리에 생성하고, 모든 테이블 entry를 0xFFFFFFFF로 초기화한다(S830). 이렇게 생성된 각 메타데이터를 낸드 플래시 메모리에 저장한다. 즉, RootInfo는 루트블록의 첫 페이지에(S840), BlockInfoList와 BlockInfo 정보는 메타블록에(S850), 그리고, 페이지매핑 테이블은 페이지맵 블록에 저장한다(S860). 이렇게 낸드 플래시 메모리를 FTL로 Format을 하면, 이제 FTL이 낸드 플래시 메모리에 생성되었으므로, 향후 시스템 사용시에는 생성된 FTL을 Open하는 방식으로 FTL을 구성하고 사용할 수 있다. 쓰기 준비를 위해서, MapLogInfo 데이터 구조를 메모리에 생성한 후, BlockInfoList[0]으로부터 Block 을 가져와서 CurBlk으로 할당한다(S870).
- FTL open
도 9는 FTL의 Open의 순서도를 나타낸 도면이다.
저장장치가 포함된 시스템에 전원이 인가되면, FTL open을 수행하는 FTL오픈부(미도시)는 Open 함수를 통해서 정상적으로 동작할 수 있는 환경을 구성한다. 도 9에 도시한 바와 같이, 먼저 FTL Open함수는 RootBlock으로부터 최신의 RootInfo를 찾아내어 이를 메모리에 로딩한다(S910). 그 후, RootInfo로부터 메타블록의 넘버를 알아내어, 메타블록을 읽는다. 이 메타블록의 내용을 이용하여 BlockInfoList 정보와 BlockInfo정보를 구성한다. 마지막 메타데이터 정보인 페이지매핑 테이블을 구성하기 위해서, RootInfo로부터 페이지맵 블록 넘버를 알아내어, 페이지맵 블록을 Scan한다. 이 PageMap의 데이터를 이용하여 메모리에 페이지매핑 테이블을 구성한다(S920).
여기까지 진행되면, 1단계로 메타데이터 정보인 BlockInfoList, BlockInfo, 페이지매핑 테이블을 구성한다. 현재까지 구성된 메타데이터 정보는 이후 맵로그블록에 로깅된 데이터의 메타데이터가 적용되지 않은 메타데이터이다. 마지막으로 해주어야 할 일은, 맵로그블록을 Scan하는 것이다.
루트블록은 로그블록의 위치를 나타내는 정보(즉, MapLogBlocks[])를 포함하고, 데이터 갱신부(120)는 로그블록의 위치를 나타내는 정보를 참조하여 로그블록을 스캔한다. 즉, 맵로그블록을 Scan하여, 맵로그블록에 로깅(logging) 된 메타데이터 값을 현재까지 구성된 메타데이터인 BlockInfoList, BlockInfo, 페이지매핑 테이블에 업데이트 시켜주는 작업을 수행해주도록 한다(S930). 이 작업은 다음과 같다. RootInfo로부터 맵로그블록의 넘버를 알아내어(S940), 맵로그블록의 첫 번째 page부터 순차적으로 읽어나간다(S950). 읽어들인 Page 정보는 MapLogInfo 값이므로, 이 MapLogInfo에 들어있는 Log_Page[] 값들을 하나하나씩 읽어들인다. 즉, Log Page의 (nLPN, nPPN) 값을 이용하여, 이에 해당하는 BlockInfoList, BlockInfo, 페이지매핑 테이블을 수정한다. 맵로그블록 내의 하나의 Page scan이 완료되면, 다음 Page로 넘어간다(S960). 이러한 맵로그블록의 Scan은 Page에 MapLogInfo 값이 없을 때까지 수행한다. 이 작업을 완성하면, 맵로그블록에 로깅된 데이터에 대한 메타데이터 업데이트 작업이 완료되어 최신의 FTL 상태를 완성할 수 있게 된다(S970). 이제 FTL이 낸드 플래시를 사용할 수 있는 상태가 되었으므로, 다음 쓰기 준비를 위해서, MapLogInfo 정보를 초기화한 후, BlockInfoList[0]으로부터 Block 을 가져와서 CurBlk으로 할당한다(S980).
도 10은 FTL Open이 완료된 후, 정상 상태에서의 플래시 메모리와 메인 메모리에 구성된 FTL의 구조도를 나타낸 도면이다. 도 10에서와 같이, Open이 완료되면, 메인 메모리에는 논리 페이지 주소에 대한 물리 페이지 주소를 매핑시키는 역할을 하는 페이지매핑 테이블, 각 블록의 상태를 기록하고 있는 BlockInfo[], 그리고, 유효한 페이지 개수를 가지는 블록을 연결 리스트로 연결시켜놓은 BlockInfoList[] 데이터 구조로 이루어지게 된다. 또한 Runtime 메타데이터 업데이트 기록을 로깅하기 위한 MapLogInfo 데이터 구조도 존재하게 된다.
- FTL read
도 11은 FTL리드부(미도시)에서 수행하는 FTL read 연산을 나타낸 순서도이다. 도 11에 도시한 바와 같이, 파일 시스템과 같은 상위 레벨로부터 읽기 요청이 오면, 읽기 요청된 논리 주소 값인 LPN이 상위 레벨로부터 전달된다. FTL은 페이지매핑 테이블을 이용하여 상위 레벨로부터 전달받은 LPN에 해당하는 물리 주소 값인 PPN을 알아낼 수 있다(S1110). FTL은 알아낸 PPN을 이용하여 낸드 플래시 메모리에 저장된 실제 물리 블록 넘버와 물리 페이지 넘버로 변환한다. FTL 은 물리 블록 넘버와 물리 페이지 넘버를 이용하여 하위 레벨에 실제 읽기 연산을 요청하여 데이터를 읽어들인다(S1120). 읽은 데이터를 상위 레벨로 전달함으로써 FTL 읽기 연산을 마친다(S1130).
- FTL write
도 12는 FTL의 Write 연산을 순서도로 도식화한 도면이다. FTL라이트부(미도시)가 수행하는 FTL의 쓰기 연산은 읽기 연산보다 복잡한 연산 작업을 수행한다. 먼저, 상위 레벨로부터 읽기 연산이 요청되면, 요청된 논리 주소 값인 LPN을 전달받는다. FTL은 먼저, 현재 쓰기 연산을 위해서 사용 중인 블록인 CurBlk에 쓸 공간이 있는지 확인한다(S1210). CurBlk에 쓸 공간이 있는지 여부를 확인하고(S1220), CurBlk에 쓸 공간이 없는 경우는 다음과 같은 작업을 먼저 수행하여 CurBlk을 할당받아야 한다.
만약 CurBlk에 쓸 공간이 없을 경우, CurBlk의 모든 페이지를 다 사용하였다는 것을 의미하므로, CurBlk에 쓰기가 기록된 내용에 해당하는 메타데이터 로그 기록인 MapLogInfo를 플래시 메모리의 맵로그블록에 로깅한다(S1210). 그 후, 로그블록을 위한 공간은, 메타블록을 참조하여 사용되지 않는 블록으로 그룹화된 블록이 할당된다. 즉, Free Block List(가용 블록 리스트)를 나타내는 BlockInfoList[0]으로부터 Free Block(즉, 가용 블록)을 할당받을 수 있는지 확인한다(S1211). 가용 블록이 충분한지 여부를 확인하고(S1212), 만약 가용 블록이 충분하지 않으면, 가비지 콜렉션을 수행하여(S1213), 가용 블록을 생성해낸 후 다시 가용 블록을 할당 받도록 한다. 가용 블록을 할당 받았으면, 할당받은 가용 블록을 CurBlk으로 설정한다(S1214). 그리고, 쓰기 연산을 수행할 CurBlk의 메타데이터 로깅을 위한 MapLogInfo를 생성한 후, 나머지 쓰기 연산 작업을 진행한다(S1215).
CurBlk에 쓰기 공간을 마련한 후, FTL은 페이지매핑 테이블을 이용하여 해당 LPN에 대한 PPN(OldPPN)을 알아낸다(S1203). OldPPN이 유효한지 여부를 확인하고(S1204), 만약 OldPPN이 유효하지 않은 경우, 즉, OldPPN이 존재하지 않는 경우에는, 즉, 해당 LPN에 쓰기 연산이 수행된 적이 없는 경우에는 기존의 OldPPN이 존재하지 않고, 따라서 OldPPN을 포함하는 Block과 이를 관리하는 BlockInfo가 없으므로 해당 BlockInfo 정보를 수정할 필요가 없다. 만약 OldPPN이 존재할 경우에는, 해당 Block을 관리하는 BlockInfo를 업데이트한다(S1205). 즉, 유효 페이지 개수를 감소시키고, ValidPageBitmap에 해당 페이지 넘버를 clear시키는 작업 등을 수행한다. 그 후, BlockInfoList 위치를 조정해준다.
그 후, CurBlk의 현재 쓰기를 수행할 Page를 이용하여 NewPPN값을 계산하고, 여기에 실제 쓰기 연산을 수행해준다(S1206). 쓰기 연산 수행이 끝나면, NewPPN에 해당하는 BlockInfo 정보를 수정해주고, 적절한 BlockInfoList에 BlockInfo의 위치를 이동시킨다(S1207). 페이지매핑 테이블의 해당 LPN에 PPN 값을 NewPPN으로 업데이트한다(S1208).
마지막으로, 수행해 주어야 할 작업은 MapLogInfo의 Log_Page에 쓰기 연산이 수행된 (LPN, NewPPN) 정보를 기록함으로써 FTL의 쓰기 연산을 마치게 된다(S1209).
도 13은 본 발명의 일 실시예에 따른 데이터 업데이트 방법을 나타낸 순서도이다.
도 13에 도시하듯이, 본 발명의 일 실시예에 따른 데이터 업데이트 방법에서는 먼저 저장장치의 데이터 블록 내의 데이터 페이지 업데이트 시에 페이지 업데이트에 대한 로그블록을 저장하는 로그정보 저장단계(S1310) 및 상기 로그블록을 스캔하여 데이터 페이지를 업데이트 하고 상기 데이터 페이지의 업데이트를 반영하여 상기 데이터 페이지에 대한 물리적인 위치정보 및 상기 로그블록에 대한 위치정보를 포함하고 있는 메타 데이터를 갱신하는 데이터 갱신단계(S1320)를 포함한다.
여기서 로그정보 저장단계(S1310)는 로그정보 저장부(110)의 동작에, 데이터 갱신단계(S1320)는 데이터 갱신부(120)의 동작에 각각 대응되므로 상세한 설명은 생략한다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같이, 본 발명의 실시예는 낸드 플래시 메모리와 같은 플래시 메모리 기반의 저장 시스템에서 데이터의 업데이트가 발생할 때마다 페이지 매핑 테이블을 변화시키는 경우 발생하는 오버헤드 문제에 대응할 수 있는 효과가 있어 유용한 발명이다.

Claims (15)

  1. 지우기 연산을 수행한 후의 쓰기 연산에 의하여 업데이트 동작을 수행하는 플래시 메모리 기반 저장장치에서 플래시 변환계층의 변환테이블인 메타데이터를 업데이트하기 위한 장치에 있어서,
    상기 저장장치의 데이터 블록 내의 데이터 페이지에 대한 쓰기 연산이 발생할 때마다 상기 데이터 페이지의 쓰기 연산시 변경되는 논리주소에 대응하는 물리주소값을 저장하는 메타데이터인 변환테이블에 대한 로그정보를 로그블록 및 로그페이지에 저장하는 로그정보 저장부; 및
    상기 로그블록을 특정 시점에 스캔하여 스캔된 로그블록의 정보에 저장된 쓰기 연산에 대응되는 데이터 페이지의 논리주소에 대응하는 물리주소값의 업데이트를 반영하여 상기 데이터 페이지에 대한 물리적인 위치정보 및 상기 로그블록에 대한 위치정보를 포함하고 있는 상기 저장장치 내의 메타 데이터를 갱신하는 데이터 갱신부
    를 포함하고,
    상기 메타 데이터는, 상기 저장장치의 물리 영역을 구분하는 블록의 인덱스 번호 0 내지 12의 위치에 저장되며,
    상기 메타 데이터 중에서 상기 저장장치의 물리 영역을 구분하는 블록의 인덱스 번호 0 내지 1의 위치에 루트 블록이 저장되며, 두 개의 루트 블록 물리 영역 중에서 하나의 영역에 존재하는 블록의 페이지를 다 소모하는 경우에는 상기 하나의 영역의 루트 블록 데이터는 지우고 나머지 다른 하나의 루트 블록 물리 영역에 업데이트를 진행하며,
    상기 메타 데이터는, 상기 저장장치의 데이터 블록 내의 논리 페이지와 물리 페이지 사이를 매핑하는 페이지맵 블록 및 상기 데이터 블록의 특성에 따라 그룹화하는 메타블록을 포함하며,
    상기 루트 블록은, 상기 메타블록에 대한 정보인 루트인포를 페이지 단위로 저장하되 상기 메타블록이 갱신될 때마다 이전 갱신된 페이지와는 다른 페이지에 저장되며,
    상기 메타블록은 데이터 블록 내에서 유효한 페이지 갯수가 같은 블록끼리 그룹화한 데이터를 저장하며, 상기 그룹화한 데이터를 이용하여 가비지 콜렉션을 수행하는 것을 특징으로 하는 데이터 업데이트 장치.
  2. 제 1항에 있어서,
    상기 데이터 갱신부는,
    상기 데이터 페이지를 페이지 단위로 업데이트하고 상기 메타데이터를 데이터 블록 단위로 업데이트하되, 상기 데이터 블록 단위는 상기 페이지 단위의 복수배인 것을 특징으로 하는 데이터 업데이트 장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 루트인포에는 최신의 루트인포에 대한 정보가 저장되는 것을 특징으로 하는 데이터 업데이트 장치.
  6. 삭제
  7. 제1항에 있어서,
    상기 로그블록의 로그페이지는 사용자 데이터 업데이트인지 가비지 콜렉션인지 여부를 나타내는 로그타입정보를 포함하는 것을 특징으로 하는 데이터 업데이트 장치.
  8. 제7항에 있어서,
    상기 로그타입정보가 사용자 데이터 업데이트임을 의미하는 경우에는 상기 로그블록은 현재 블록의 페이지맵 위치와, 상기 페이지맵 내에 저장될 논리주소 및 물리 주소를 포함하는 것을 특징으로 하는 데이터 업데이트 장치.
  9. 제7항에 있어서,
    상기 로그타입정보가 가비지 콜렉션임을 의미하는 경우에는 상기 로그블록은 소스블록의 위치와 목적블록의 위치를 포함하는 것을 특징으로 하는 데이터 업데이트 장치.
  10. 삭제
  11. 삭제
  12. 제1항에 있어서,
    상기 루트블록은 로그블록의 위치를 나타내는 정보를 포함하고,
    상기 데이터 갱신부는 상기 로그블록의 위치를 참조하여 로그블록을 스캔하는 것을 특징으로 하는 데이터 업데이트 장치.
  13. 제1항에 있어서,
    상기 로그블록을 위한 공간은,
    상기 메타블록을 참조하여 사용되지 않는 블록으로 그룹화된 블록이 할당되는 것을 특징으로 하는 데이터 업데이트 장치.
  14. 삭제
  15. 삭제
KR20120057618A 2012-05-30 2012-05-30 플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치 KR101482013B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20120057618A KR101482013B1 (ko) 2012-05-30 2012-05-30 플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120057618A KR101482013B1 (ko) 2012-05-30 2012-05-30 플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130134235A KR20130134235A (ko) 2013-12-10
KR101482013B1 true KR101482013B1 (ko) 2015-01-14

Family

ID=49981878

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120057618A KR101482013B1 (ko) 2012-05-30 2012-05-30 플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101482013B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10203900B2 (en) 2016-05-04 2019-02-12 SK Hynix Inc. Memory system for selecting blocks for garbage selection and operating method thereof
US10956320B2 (en) 2018-04-02 2021-03-23 SK Hynix Inc. Memory system and operating method thereof
US10997065B2 (en) 2017-11-13 2021-05-04 SK Hynix Inc. Memory system and operating method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR100995546B1 (ko) * 2008-12-02 2010-11-22 한국과학기술원 낸드 플래시 메모리와 비휘발성 램을 사용하는 하이브리드 저장 장치 기반의 데이터베이스 시스템 및 데이터베이스 시스템에서 데이터를 업데이트하는 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR100995546B1 (ko) * 2008-12-02 2010-11-22 한국과학기술원 낸드 플래시 메모리와 비휘발성 램을 사용하는 하이브리드 저장 장치 기반의 데이터베이스 시스템 및 데이터베이스 시스템에서 데이터를 업데이트하는 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10203900B2 (en) 2016-05-04 2019-02-12 SK Hynix Inc. Memory system for selecting blocks for garbage selection and operating method thereof
US10997065B2 (en) 2017-11-13 2021-05-04 SK Hynix Inc. Memory system and operating method thereof
US10956320B2 (en) 2018-04-02 2021-03-23 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
KR20130134235A (ko) 2013-12-10

Similar Documents

Publication Publication Date Title
JP5603997B2 (ja) ストレージ装置及びデータ制御方法
JP5597666B2 (ja) 半導体記憶装置、情報処理システムおよび制御方法
US9298384B2 (en) Method and device for storing data in a flash memory using address mapping for supporting various block sizes
KR100874702B1 (ko) 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US11782632B2 (en) Selective erasure of data in a SSD
US10503424B2 (en) Storage system
JP2006221636A (ja) Run単位アドレスマッピングテーブル及びそれの構成方法
JP6608468B2 (ja) ストレージ装置及びその制御方法
US20190332329A1 (en) Optimization of log-structured merge (lsm) tree-based databases using object solid state drive (ssd) devices
KR101615659B1 (ko) 스크래치 패드 메모리 관리 장치 및 방법
JP2023000085A (ja) メモリシステム及び情報処理システム
KR101482013B1 (ko) 플래시 메모리 기반 저장 시스템의 변환 테이블인 메타데이터 데이터 업데이트 방법 및 장치
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
KR101936364B1 (ko) 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
JP2014225297A (ja) フラッシュメモリモジュール及びストレージ装置
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
US11461225B2 (en) Storage device, control method of storage device, and storage medium
JP2019144921A (ja) 情報処理装置及び情報処理方法
CN108304331B (zh) 基于NorFlash的环形队列式数据存储方法及装置
JP6805501B2 (ja) ストレージ装置
KR101608623B1 (ko) 전원 손실 이후 효과적인 데이터 복구를 위한 메모리 복구 장치 및 방법
CN117891415B (zh) 一种存储装置的p2l数据管理方法及装置
JP2013109404A (ja) 情報処理装置
CN108073362B (zh) 一种延长PairBlock使用寿命的方法及装置

Legal Events

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

Payment date: 20171226

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181218

Year of fee payment: 5