KR20090047880A - 비휘발성 메모리의 관리 방법 및 관리 시스템 - Google Patents

비휘발성 메모리의 관리 방법 및 관리 시스템 Download PDF

Info

Publication number
KR20090047880A
KR20090047880A KR1020070113959A KR20070113959A KR20090047880A KR 20090047880 A KR20090047880 A KR 20090047880A KR 1020070113959 A KR1020070113959 A KR 1020070113959A KR 20070113959 A KR20070113959 A KR 20070113959A KR 20090047880 A KR20090047880 A KR 20090047880A
Authority
KR
South Korea
Prior art keywords
data
block
log
blocks
storing
Prior art date
Application number
KR1020070113959A
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 KR1020070113959A priority Critical patent/KR20090047880A/ko
Publication of KR20090047880A publication Critical patent/KR20090047880A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 관리 시스템 및 메모리 관리 방법이 제공된다. 본 발명의 메모리 관리 시스템은 제1 데이터를 저장하는 복수의 데이터 블록들, 제2 데이터를 저장하는 복수의 로그 블록들, 및 상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하고, 생성된 상기 제2 데이터를 상기 로그 블록들에 저장하는 관리부를 포함하고, 상기 데이터 블록들 각각은 상기 로그 블록들 각각의 N배의 크기(N은 2 이상의 자연수)를 가지는 것을 특징으로 하며, 이를 통해 데이터 블록을 효과적으로 관리할 수 있다.
데이터 블록, 로그 블록, shadow data block, small log block

Description

비휘발성 메모리의 관리 방법 및 관리 시스템 {MANAGEMENT METHOD AND SYSTEM OF NON-VOLATILE MEMORY}
본 발명은 비휘발성(non-volatile) 메모리의 관리 방법 및 시스템에 관한 것으로서, 특히 비휘발성(non-volatile) 메모리에 기반한 데이터 블록 관리 시스템 및 방법에 관한 것이다.
데이터를 저장하는 장치(data storage)로는 자기 디스크(magnetic disk), 반도체 메모리 등이 있을 수 있고, 데이터 저장 장치는 종류 별로 서로 다른 물리적 특성을 가지기 때문에 상기 물리적 특성에 상응하는 관리 시스템이 필요하다.
종래의 데이터 스토리지로는 자기 디스크가 널리 사용되어 왔다. 자기 디스크는 평균적으로 킬로바이트(kilobyte) 당 수 밀리초(millisecond)의 읽기/쓰기 시간을 특성으로 가진다. 또한, 자기 디스크는 데이터가 저장된 물리적 위치에 따라 암(arm)이 도달하는 시간이 다르기 때문에 읽기/쓰기 시간이 달라지는 특성을 가진다.
최근에는 자기 디스크에 비하여 읽기/쓰기 시간이 짧고 작은 전력을 소모하며 작은 부피를 차지하는 비휘발성 메모리 장치가 급속하게 자기 디스크를 대체하 고 있다. 이는 비휘발성 메모리 장치의 대용량화가 이루어졌기 때문에 가능한 결과이다.
비휘발성 메모리 장치는 전기적으로 읽기(reading), 쓰기(writing) 및 소거(erase)가 가능하며, 공급 전원이 없는 상태에서도 프로그래밍된 데이터를 유지할 수 있는 반도체 메모리 장치이다. 비휘발성 메모리 장치에 대한 데이터의 저장 과정은 쓰기 외에도 프로그래밍(programming)이라고 불리기도 한다.
비휘발성 메모리 장치는 디지털 카메라, 셀룰라 폰(cellular phone), 개인용 데이터 단말기(Personal Data Assistants, PDA), 랩탑 컴퓨터(lap-top computer) 등에 널리 이용되며, 반도체 칩 상의 작은 면적에 많은 양의 데이터를 저장할 수 있다.
비휘발성 메모리 장치 가운데 최근 대용량 저장 장치로 널리 사용되는 것으로 낸드(NAND) 플래시 메모리가 있다. 낸드 플래시 메모리는 킬로바이트 당 수십 마이크로초(microsecond)의 읽기 시간 및 수백 마이크로초의 쓰기 시간을 특성으로 가진다. 또한, 낸드 플래시 메모리는 쓰기 시간과 다른 소거 시간을 가지는 것이 일반적인데, 소거 시간은 수 밀리초에 이르기 때문에 전체 데이터에 대한 소거 시간을 단축하기 위해 복수의 메모리 셀들을 동시에 소거하는 방법이 널리 사용된다. 이 때, 동시에 소거되는 복수의 메모리 셀들의 단위를 소거 유닛(erase unit)이라 한다.
이처럼 낸드 플래시 메모리를 포함한 비휘발성 메모리는 읽기/쓰기/소거에 필요한 시간이 모두 다른 비대칭적 읽기/쓰기/소거 특성을 가지는 점이 종래의 자 기 디스크와 크게 다른 점이다. 또한, 비휘발성 메모리는 전기적으로 데이터에 억세스하므로 데이터가 저장된 위치는 읽기/쓰기/소거 특성에 거의 영향을 미치지 않는 점도 종래의 자기 디스크와 크게 다른 점이다.
종래의 자기 디스크에서는 데이터를 소거하는 과정이 데이터 쓰기 과정에 포함되어 별도의 시간이 필요하지 않았으므로 데이터를 업데이트할 필요가 있으면 업데이트된 데이터를 이전의 데이터의 위치에 오버라이트(overwrite)하면 되었다.
그러나, 비휘발성 메모리에서는 데이터를 소거하는 과정과 데이터 쓰기 과정이 분리되어 데이터를 소거하는 과정에 별도의 긴 시간이 필요하므로, 종래의 자기 디스크에 적용되었던 방법을 비휘발성 메모리에 적용하면 데이터를 업데이트할 때에 긴 시간이 소요된다. 특히, 랜덤하게 데이터에 억세스하고 랜덤하게 데이터를 업데이트하는 경우에는 더욱 업데이트 시간이 길어진다는 점이 알려져 있다.
이에 따라, 비휘발성 메모리를 억세스하는 콘트롤러 또는 시스템이 이용하는 논리적 메모리 어드레스를 비휘발성 메모리 내의 물리적 메모리 어드레스와 독립적으로 설정하고, 논리적 메모리 어드레스와 물리적 메모리 어드레스를 매핑시키는 인터페이스가 이용되고 있다.
이러한 인터페이스 중 플래시 메모리에 적용되는 인터페이스를 플래시 변환 계층(flash translation layer, FTL)이라 한다.
본 명세서에서는, FTL에 있어서, 보다 효율적인 비휘발성 메모리 관리 시스템 및 방법이 제안된다.
본 발명은 상술한 바와 같은 종래기술의 문제점을 해결하기 위해 안출된 것으로서, 새로운 로그 블록(log block)의 구성을 제안함으로써 로그 블록 간의 컴팩션(compaction) 시간을 줄인다.
또한, 본 발명은 새로운 로그 블록의 구성을 제안함으로써 소거 시간(erase time)을 줄인다.
또한, 본 발명은 새로운 데이터 블록의 구성을 제안함으로써 병합(merge) 동작의 데이터 카피 오버헤드(data copy overhead)를 줄인다.
본 발명의 일 측면에 따른 메모리 관리 시스템은 제1 데이터를 저장하는 복수의 데이터 블록들, 제2 데이터를 저장하는 복수의 로그 블록들, 및 상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하고, 생성된 상기 제2 데이터를 상기 로그 블록들에 저장하는 관리부를 포함하고, 상기 데이터 블록들 각각은 상기 로그 블록들 각각의 N배의 크기(N은 2 이상의 자연수)를 가지는 것을 특징으로 한다.
또한, 본 발명의 다른 측면에 따른 메모리 관리 시스템은 제1 데이터를 저장하는 제1 데이터 블록, 제2 데이터를 저장하는 제2 데이터 블록, 및 상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하고, 상기 생성된 제2 데이터를 상기 제2 데이터 블록에 저장하는 관리부를 포함하고, 상기 관리부는 상기 제1 데이터에 대한 부분적 순차적 업데이트 동작이 검출되면, 상기 생성된 제2 데이터를 상기 제1 데이터의 어드레스에 따라 상기 제2 데이터 블록에 저장하는 것을 특징으로 한다.
또한, 본 발명의 또 다른 측면에 따른 메모리 관리 방법은 제1 데이터를 저장하는 복수의 데이터 블록들에 대하여 제2 데이터를 저장하는 제1 로그 블록을 할당하는 단계; 상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하는 단계; 상기 생성된 제2 데이터를 상기 제1 로그 블록에 저장하는 단계를 포함하고, 상기 데이터 블록들 각각은 상기 제1 로그 블록의 N배의 크기(N은 2 이상의 자연수)를 가지는 것을 특징으로 한다.
또한, 본 발명의 또 다른 측면에 따른 메모리 관리 방법은 제1 데이터 블록에 저장된 제1 데이터에 대한 부분적 순차적 업데이트의 요청을 검출하는 단계; 상기 요청이 검출되면, 상기 제1 데이터를 업데이트하여 제2 데이터를 생성하는 단계; 상기 생성된 제2 데이터를 상기 제1 데이터의 어드레스에 따라 제2 데이터 블록에 저장하는 단계를 포함하는 것을 특징으로 한다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
플래시 메모리(Flash memory)는 컴퓨터, 디지털 카메라(digital camera) 또는 휴대폰과 같은 임베디드 시스템(embedded system) 환경에서 많이 사용된다. 플래시 메모리를 이러한 임베디드 시스템 환경에 사용하기 위해서는 시스템이 사용하는 논리적 메모리 주소(logical memory address)와 플래시 메모리 상의 물리적 메모리 주소(physical memory address) 간의 변환(translation)이 필요하다. 이러한 변환에 관련된 interface를 플래시 변환 계층(Flash Translation Layer, FTL)이라고 한다.
FTL 중에서 데이터 블록과 로그 블록을 구별하여 사용하는 기법을 log-based FTL이라 한다. 일반적으로 log-based FTL에서는 로그 블록과 데이터 블록의 크기가 동일하다. 로그 블록과 데이터 블록의 크기가 동일하면, 로그 블록과 데이터 블록을 병합하는 경우에 쉽게 merge operation을 실행할 수 있다. 한편, 일반적인 log-based FTL은, free space가 없고 random write가 빈번한 경우에는 data throughput이 매우 낮다. 또한 일반적인 log-based FTL은, 데이터 블록의 크기와 동일한 크기의 long sequential write가 발생하는 경우에만 로그 블록이 데이터 블록으로 copy overhead 없이 전환(convert)될 수 있다. 실제로는 long sequential write는 빈번하지 않으므로, 일반적인 log-based FTL에서, 데이터 블록 크기의 long sequential write가 아닌 부분적 순차적 쓰기(partial sequential write)의 경우에는 로그 블록과 데이터 블록 간의 merge operation 시에 로그 블록에 쓰여진 partial sequential write 동작의 데이터도 새로운 free 데이터 블록에 카피해야 하는 오버헤드가 발생하는 문제점이 있다.
이들 문제를 해결하기 위해 본 명세서에서는 다음과 같은 새로운 두 가지의 메모리 관리 시스템을 제안한다. 첫 번째는 데이터 블록과 로그 블록의 크기가 다르게 설정되는 메모리 관리 시스템이다. 데이터 블록의 크기는 현재와 같이 유지하면서, 로그 블록의 크기를 데이터 블록의 크기보다 작게 줄이는 것이다. 로그 블록의 크기를 줄이면, 다음과 같은 효과를 기대할 수 있다. 첫째로, 로그 블록 간의 compaction을 할 경우에 컴팩션(compaction) 시간을 줄일 수 있다. 둘째로, 소거(erase) 시간을 일반적인 log-based FTL 기법보다 줄일 수 있다.
본 명세서에서 제안되는 두 번째 메모리 관리 시스템은 부분적 순차적 쓰기를 위한 shadow 데이터 블록을 할당한다. 데이터 블록에 대하여 부분적 순차적 쓰기가 발생했을 경우에, 로그 블록에 write하는 대신에 shadow 데이터 블록에 in-order로 write한다. shadow 데이터 블록과 데이터 블록을 병합할 때에는, shadow 데이터 블록이 새로운 데이터 블록으로 전환되고, 이전의 데이터 블록의 valid한 데이터는 새로운 데이터 블록으로 카피된다. 이후 이전의 데이터 블록은 소거되어 free 블록이 된다. shadow 데이터 블록을 포함하는 메모리 관리 시스템은 종래의 FTL에 비해 병합 동작의 데이터 카피 오버헤드(data copy overhead)를 줄일 수 있다.
도 1은 페이지 매핑 기법의 일 예를 도시하는 도면이다.
도 1을 참조하면, 논리적 페이지 주소 "5"에 대응하는 물리적 페이지 억세스 과정이 도시된다.
플래시 메모리 시스템에서는 논리적 주소를 물리적 주소로 변환하는 인터페이스인 플래시 변환 계층(FTL)이 필요하다. 페이지 매핑 기법(page mapping scheme)은 매핑 테이블(mapping table)을 이용하여 논리적 페이지(logical page)를 물리적 페이지(physical page)로 변환하는 것이다. 이 기법은 이미 쓰여진 페이지에 대한 업데이트가 발생할 경우에 새로운 페이지에 업데이트될 내용을 쓰고, 매핑 테이블에서 업데이트된 페이지에 대응하는 항목을 수정한다.
시스템이 논리적 페이지 주소 "5"에 대하여 억세스(110)하면, 매핑 테이블은 논리적 페이지 주소 "5"를 저장하는 엔트리(120)에 대응하는 엔트리(130)를 검색하고, 엔트리(130)에 저장된 물리적 페이지 주소 "2"를 출력한다. 플래시 메모리는 검색된 물리적 페이지 주소 "2"가 가리키는 물리적 페이지(140)에 억세스한다.
시스템이 논리적 페이지 주소 "5"의 데이터를 업데이트하면, 시스템은 임의 의 free한 물리적 페이지 중에서 하나를 선택하여 논리적 페이지 주소 "5"에 할당한다. 이 때, 할당된 물리적 페이지가 물리적 페이지(150)라 하면, 매핑 테이블은 엔트리(130)의 내용을 물리적 페이지 주소 "2"로부터 물리적 페이지 주소 "5"로 수정하고, 플래시 메모리는 논리적 페이지 주소 "5"에 업데이트할 데이터를 물리적 페이지 주소 "5"가 가리키는 물리적 페이지(150)에 저장한다.
도 1에서 점선 화살표는 업데이트되기 전의 논리적 페이지 주소 "5"에 대한 억세스 과정을 나타내며, 실선 화살표는 업데이트된 후의 논리적 페이지 주소 "5"에 대한 억세스 과정을 나타낸다.
이 기법에서 사용되는 매핑 테이블의 크기는 플래시 메모리 시스템의 크기가 커짐에 따라서 커지게 된다. 예를 들어, 512MByte 크기의 플래시 메모리에는 약 1Mbyte의 매핑 테이블이 필요하다. 플래시 메모리의 제조 기술이 발전함에 따라, 수십 GByte의 플래시 메모리 시스템이 사용되면, 매핑 테이블의 크기가 커질 것이므로, 새로운 메모리 관리 시스템 기법이 필요하게 된다.
도 2는 블록 매핑 기법의 일 예를 도시하는 도면이다.
도 2를 참조하면, 논리적 페이지 주소 "5"에 대한 억세스 과정이 도시된다.
블록 매핑 기법(block mapping scheme)은 매핑 과정에서 블록 및 페이지의 2 레벨 매핑을 이용한다.
플래시 메모리는 복수의 블록들로 구성되고, 블록들 각각은 복수의 페이지들로 구성된다. 본 실시예에서는, 블록들 각각은 4개의 페이지들로 구성된다고 가정한다.
2 레벨 매핑은 하나의 논리적 블록에 대응하는 물리적 블록은 동적으로 변하는 반면, 각각의 블록 내에서의 페이지의 위치, 즉, 페이지 오프셋은 변하지 않도록 매핑한다.
도 2를 참조하면, 논리적 페이지 주소 "5"는 논리적 블록 번호 "1" 및 페이지 오프셋 "1"에 대응(210)한다.
시스템이 논리적 페이지 주소 "5"에 억세스하면, 블록 맵 테이블은 논리적 블록 번호 "1"을 저장하는 엔트리(220)에 대응하는 엔트리(230)를 검색한다. 블록 맵 테이블은 엔트리(230)에 저장된 물리적 블록 번호 "0"를 출력한다.
플래시 메모리는 물리적 블록 번호 "0"가 가리키는 물리적 블록을 선택하고, 선택된 물리적 블록 내에서 페이지 오프셋 "1"이 가리키는 물리적 페이지(240)에 억세스한다.
시스템이 논리적 페이지 주소 "5"의 데이터를 업데이트하면, 플래시 메모리는 free한 물리적 블록을 검색하여 선택한다. 플래시 메모리는 선택된 물리적 블록(물리적 블록 번호 "2"에 대응한다)에 이전 물리적 블록(물리적 블록 번호 "0"에 대응한다)의 데이터를 카피한다. 이 때, 페이지 오프셋 "1"에 대응하는 물리적 페 이지(250)에는 업데이트된 데이터를 저장하고, 물리적 블록 번호 "2"에 대응하는 선택된 물리적 블록의 나머지 페이지들에는 물리적 블록 번호 "0"에 대응하는 이전 물리적 블록의 데이터를 카피한다.
블록 맵 테이블은 엔트리(230)의 내용을 물리적 블록 번호 "0"에서 물리적 블록 번호 "2"로 수정한다.
도 2의 점선 화살표는 업데이트되기 전의 논리적 페이지 주소 "5"에 대한 억세스 과정을 나타내고, 실선 화살표는 업데이트된 후의 논리적 페이지 주소 "5"에 대한 억세스 과정을 나타낸다.
블록 매핑 기법에 이용되는 매핑 테이블의 크기는 페이지 매핑 기법의 매핑 테이블의 크기보다 작을 수 있어 메모리 관리의 오버헤드를 줄일 수 있다. 그러나, 블록 매핑 기법에서는, 이미 쓰여진 페이지에 대하여 업데이트하기 위하여 블록 내의 억세스되지 않은 나머지 페이지들의 데이터도 새로운 블록에 카피해야 하는 data copy 오버헤드가 있는 점이 문제이다.
도 3은 하이브리드 매핑 기법의 일 예를 도시하는 도면이다.
도 3을 참조하면, 하이브리드 매핑 기법은 논리적 페이지 주소 "5", "7", "7", "5"에 대한 순차적 억세스 과정(310)을 도시한다.
하이브리드 매핑 기법은 데이터 블록 및 로그 블록을 설정하고, 시스템이 데이터 블록에 쓰여진 데이터를 업데이트할 때, 업데이트되는 데이터를 데이터 블록 대신 로그 블록에 저장하는 기법이다. 하이브리드 매핑 기법은 블록 매핑 기법보다 데이터 카피 오버헤드(data copy overhead)를 줄일 수 있는 반면, management overhead를 증가시킨다.
하이브리드 매핑 기법은 데이터 블록 맵 테이블 및 로그 블록 맵 테이블을 이용하여 플래시 메모리의 데이터 블록 및 로그 블록을 관리한다. 하이브리드 매핑 기법은 데이터 블록에 데이터를 저장할 때에는 in-order로 저장하고, 로그 블록에 데이터를 저장할 때에는 out of order로 저장한다.
시스템이 논리적 페이지 주소 "5"에 데이터를 저장하는 경우에, 하이브리드 매핑 기법은 논리적 블록 번호 "1" 및 페이지 오프셋 "1"을 생성한다. 블록 맵 테이블은 논리적 블록 번호 "1"에 대응하여 엔트리(330)에 물리적 블록 번호 "0"을 저장한다. 플래시 메모리는 엔트리(330)에 저장된 물리적 블록 번호 "0" 및 페이지 오프셋 "1"에 기초하여 물리적 페이지(351)를 선택하고, 선택된 물리적 페이지(351)에 논리적 페이지 주소 "5"의 데이터를 저장한다.
시스템이 논리적 페이지 주소 "7"에 데이터를 저장하는 경우에, 하이브리드 매핑 기법은 논리적 블록 번호 "1" 및 페이지 오프셋 "3"을 생성한다. 블록 맵 테이블은 논리적 블록 번호 "1"에 대응하는 엔트리(330)에 저장된 물리적 블록 번호 "0"을 플래시 메모리로 전달한다. 플래시 메모리는 물리적 블록 번호 "0" 및 페이지 오프셋 "3"에 기초하여 물리적 페이지(352)를 선택하고, 선택된 물리적 페이지(352)에 논리적 페이지 주소 "7"의 데이터를 저장한다.
로그 블록은 데이터가 업데이트되는 순서대로 데이터를 저장한다. 로그 블록에 저장되는 데이터는 페이지 오프셋의 값과는 무관하게 저장되므로, 이 같은 저장 기법을 out of order라고 한다.
시스템이 논리적 페이지 주소 "5"에 저장된 데이터를 업데이트하는 경우에, 플래시 메모리는 로그 블록의 페이지(361)에 업데이트된 데이터를 저장한다. 로그 블록 맵 테이블은 페이지 오프셋 "1"에 대응하는 엔트리(341)에 페이지(361)의 오프셋인 "0"을 저장한다. 이 때, 플래시 메모리는 물리적 페이지(351)에 저장된 데이터를 invalid한 데이터로 표시한다.
시스템이 논리적 페이지 주소 "7"에 저장된 데이터를 업데이트하는 경우에, 플래시 메모리는 로그 블록의 페이지(362)에 업데이트된 데이터를 저장한다. 로그 블록 맵 테이블은 페이지 오프셋 "3"에 대응하는 엔트리(342)에 페이지(362)의 오프셋인 "1"을 저장한다. 이 때, 플래시 메모리는 물리적 페이지(352)에 저장된 데이터를 invalid한 데이터로 표시한다.
시스템이 논리적 페이지 주소 "7"에 저장된 데이터를 업데이트하는 경우에, 플래시 메모리는 로그 블록의 페이지(363)에 업데이트된 데이터를 저장한다. 로그 블록 맵 테이블은 페이지 오프셋 "3"에 대응하는 엔트리(342)에 페이지(363)의 오프셋인 "2"을 저장한다. 이 때, 플래시 메모리는 페이지(362)에 저장된 데이터를 invalid한 데이터로 표시한다.
시스템이 논리적 페이지 주소 "5"에 저장된 데이터를 업데이트하는 경우에, 플래시 메모리는 로그 블록의 페이지(364)에 업데이트된 데이터를 저장한다. 로그 블록 맵 테이블은 페이지 오프셋 "1"에 대응하는 엔트리(341)에 페이지(364)의 오프셋인 "3"을 저장한다. 이 때, 플래시 메모리는 페이지(361)에 저장된 데이터를 invalid한 데이터로 표시한다.
시스템이 논리적 페이지 주소 "5" 또는 "7"에 저장된 데이터를 업데이트하면, 로그 블록에 더 이상의 free page가 없으므로 플래시 메모리는 데이터 블록 및 로그 블록을 병합(merge)하여 free space를 얻는다.
플래시 메모리는 free block 중 물리적 블록 번호 "80"에 대응하는 데이터 블록을 선택할 수 있다. 블록 맵 테이블은 선택된 데이터 블록의 물리적 블록 번호 "80"을 엔트리(330)에 저장한다. 플래시 메모리는 물리적 블록 번호 "80" 및 페이지 오프셋 "1"에 기초하여 물리적 페이지(371)를 선택하고, 선택된 물리적 페이지(371)에, 논리적 페이지 주소 "5"에 대응하는 valid한 데이터를 저장한다.
플래시 메모리는 물리적 블록 번호 "80" 및 페이지 오프셋 "3"에 기초하여 물리적 페이지(372)를 선택하고, 선택된 물리적 페이지(372)에, 논리적 페이지 주소 "7"에 대응하는 valid한 데이터를 저장한다.
플래시 메모리는 로그 블록을 소거하고, 물리적 블록 번호 "0"에 대응하는 데이터 블록을 소거함으로써 free space를 얻는다. 이 같은 과정을 로그 블록 및 물리적 블록 번호 "0"에 대응하는 데이터 블록을 병합한다고 한다.
본 발명의 일 실시예에 따른 메모리 관리 시스템은 데이터 블록 및 로그 블록의 크기를 다르게 설정한다. 예를 들어, 메모리 관리 시스템은 데이터 블록의 크기는 4Mbytes이고, 로그 블록의 크기는 256kbytes로 설정할 수 있다.
메모리 관리 시스템은 로그 블록 상호간의 compaction을 수행하는 데 소요되는 시간을 단축할 수 있다. 메모리 관리 시스템은 새로운 로그 블록을 선택한 후 선택된 로그 블록을 소거한다. 메모리 관리 시스템은 선택된 로그 블록을 소거하 는 데 소요되는 시간을 단축할 수 있다.
메모리 관리 시스템은 로그 블록 상호간의 컴팩션(compaction) 시간 및 선택된 로그 블록의 소거 시간을 단축하므로, random하게 발생하는 쓰기 동작에 소요되는 시간을 단축할 수 있다.
로그 블록의 크기가 데이터 블록의 크기와 같은 경우, 플래시 메모리는 새로운 로그 블록이 필요할 때 하나의 super block을 선택하고, 선택된 block을 특정한 데이터 블록에만 사용한다. random write가 특정한 영역에 집중되는 경우 super block의 선택 빈도를 줄일 수 있다. 로그 블록의 크기가 데이터 블록의 크기보다 작은 경우, random write가 특정한 영역에 집중되면 새로운 로그 블록을 선택해야 하는 빈도가 증가하여 컴팩션(compaction) 또는 병합 동작의 빈도가 증가할 가능성이 있다.
이러한 가능성에 대하여 본 발명의 또 다른 실시예에 따른 메모리 관리 시스템이 제안된다.
메모리 관리 시스템은 소거되는 블록의 최소 크기를 데이터 블록의 크기와 같도록 설정한다. 메모리 관리 시스템은 소거되는 super block 내의 복수의 물리적 블록들 중에서 clean 물리적 블록을 선택하여 사용한다. 메모리 관리 시스템은 random write가 특정한 영역에 집중되는 경우에도, 새로운 로그 블록의 선택에 소요되는 시간을 단축한다.
도 4는 본 발명의 또 다른 실시예에 따른 메모리 관리 기법을 도시하는 도면이다.
도 4를 참조하면, 논리적 페이지 주소 "5", "6", "7"에 대한 순차적인 억세스(업데이트) 과정(410)이 도시된다.
본 명세서에서는 도 4의 메모리 관리 기법을 섀도우 데이터 블록 기법(shadow data block scheme)이라고 명명한다.
shadow 데이터 블록 기법은 부분적 순차적 업데이트(partial sequential update)를 검출하고, 부분적 순차적 업데이트가 검출되면 로그 블록 대신 새로운 데이터 블록을 선택하고, 선택된 새로운 데이터 블록에 페이지 오프셋에 따라 in order로 데이터를 저장한다.
하나의 블록 내의 모든 페이지에 저장된 데이터를 업데이트하는 과정을 전부 순차적 쓰기(full sequential write) 또는 전부 순차적 업데이트(full sequential update)라고 한다. 일반적인 log-based FTL 기법은 전부 순차적 쓰기일 때는 로그 블록을 데이터 블록으로 변환하고, 이 때 변환 과정에서 별도의 부가적인 카피 동작을 필요로 하지 않는다.
그러나 일반적인 플래시 메모리의 동작 중에 전부 순차적 쓰기 동작은 빈번하게 일어나지 않는다. 하나의 블록 내의 몇몇 페이지들에 저장된 데이터를 업데이트하는 과정을 부분적 순차적 쓰기(partial sequential write) 또는 부분적 순차적 업데이트(partial sequential update)라고 한다. shadow 데이터 블록 기법은 이러한 부분적 순차적 쓰기 동작에 최적화된 메모리 관리 기법을 제공한다.
도 4의 실시예에서는, 논리적 페이지 주소 "5", "6", "7"에 대응하는 데이터가 각각 물리적 페이지(451), 물리적 페이지(452), 물리적 페이지(453)에 저장되어 있다고 가정한다.
shadow 데이터 블록 기법은 논리적 페이지 주소 "5", "6", "7"에 대하여 모두 논리적 블록 번호 "1"를 생성한다. shadow 데이터 블록 기법은 논리적 페이지 주소 "5", "6", "7"에 대하여 각각 페이지 오프셋 "1", "2", "3"을 생성한다.
블록 맵 테이블의 엔트리(430)에는 논리적 블록 번호 "1"에 대응하는 물리적 블록 번호가 저장되어 있다. 엔트리(430)에 저장되어 있는 물리적 블록 번호는 "0"이라고 가정한다. 논리적 페이지 주소 "5"의 데이터는 물리적 블록 번호 "0" 및 페이지 오프셋 "1"에 대응하는 물리적 페이지(451)에 저장된다.
마찬가지로, 논리적 페이지 주소 "6"의 데이터는 물리적 블록 번호 "0" 및 페이지 오프셋 "2"에 대응하는 물리적 페이지(452)에 저장되고, 논리적 페이지 주소 "7"의 데이터는 물리적 블록 번호 "0" 및 페이지 오프셋 "3"에 대응하는 물리적 페이지(453)에 저장된다.
논리적 페이지 주소 "5, "6", "7"에 저장된 데이터를 업데이트하는 과정(410)은 하나의 블록 내의 3개의 페이지들에 대한 순차적 억세스이므로, 과정(410)은 부분적 순차적 쓰기 동작이다.
shadow 데이터 블록 기법은 부분적 순차적 쓰기 동작을 검출하고, 과정(410)과 같은 부분적 순차적 쓰기 동작이 검출되면, shadow 데이터 블록을 선택한다. shadow 데이터 블록 기법은 선택된 shadow 데이터 블록에 업데이트되는 데이터를 저장한다.
shadow 데이터 블록 맵 테이블은 논리적 블록 번호 "1"에 대응하는 엔트 리(440)에 선택된 shadow 데이터 블록의 물리적 블록 번호 "100"을 저장한다.
shadow 데이터 블록 기법은 선택된 shadow 데이터 블록에 업데이트되는 데이터를 저장함에 있어서, 각 페이지의 페이지 오프셋에 따라 데이터를 저장한다.
논리적 페이지 주소 "5"에 업데이트되는 데이터는 페이지 오프셋 "1"에 따라 물리적 페이지(461)에 저장된다.
마찬가지로, 논리적 페이지 주소 "6"에 업데이트되는 데이터는 페이지 오프셋 "2"에 따라 물리적 페이지(462)에 저장되고, 논리적 페이지 주소 "7"에 업데이트되는 데이터는 페이지 오프셋 "3"에 따라 물리적 페이지(463)에 저장된다.
이후에, 플래시 메모리 내의 free 블록의 수가 부족하면, shadow 데이터 블록 기법은 데이터 블록 및 shadow 데이터 블록을 병합하여 free 블록을 얻는다.
이 때, shadow 데이터 블록 기법은 shadow 데이터 블록을 새로운 데이터 블록으로 변환하고, 블록 맵 테이블의 엔트리(430)에는 shadow 데이터 블록의 물리적 블록 번호 "100"가 저장된다. shadow 데이터 블록 기법은, 물리적 블록 번호 "0"에 대응하는 이전 데이터 블록 내의 페이지들 중, shadow 데이터 블록에 저장되지 않은 페이지의 데이터를 shadow 데이터 블록에 저장한다.
이후에, shadow 데이터 블록 기법은 물리적 블록 번호 "0"에 대응하는 이전 데이터 블록의 데이터를 소거하여 이전 데이터 블록을 free 블록으로 변환한다.
shadow 데이터 블록 기법은 부분적 순차적 쓰기 동작을 검출하고, shadow 데이터 블록을 선택하여 부분적 순차적 쓰기 동작의 데이터를 선택된 shadow 데이터 블록에 in order로 저장한다. 이러한 shadow 데이터 블록 기법은 shadow 데이터 블록 및 이전의 데이터 블록을 병합할 때 데이터 카피 오버헤드(data copy overhead)를 최소화한다.
본 발명의 또 다른 실시예에 따른 메모리 관리 기법은 순차적 쓰기 동작과 random 쓰기 동작을 구분한다. 메모리 관리 기법은 random 쓰기 동작에 대하여는 데이터 블록의 크기보다 작은 크기의 로그 블록을 선택하고, 선택된 로그 블록에 random 쓰기 동작의 데이터를 out of order로 저장한다.
메모리 관리 기법이 데이터 블록의 크기보다 작은 크기의 로그 블록을 선택함으로써 로그 블록의 선택에 소요되는 시간을 단축할 수 있다.
메모리 관리 기법은 데이터 블록의 크기보다 작은 크기의 로그 블록에 데이터를 저장함에 있어서, 복수의 로그 블록들에 대한 병렬적인 쓰기 동작을 수행할 수 있다. 메모리 관리 기법은 데이터 저장 시의 병렬성을 증가시킬 수 있다.
메모리 관리 기법은 선택된 로그 블록 내에 더 이상의 free 페이지가 없을 경우에, 새로운 로그 블록을 선택하고, 선택된 새로운 로그 블록에 데이터를 out of order로 저장한다.
메모리 관리 기법은 더 이상 선택할 수 있는 로그 블록이 없을 때, 로그 블록 및 이전의 로그 블록에 대한 컴팩션(compaction) 동작을 수행하여 available한 로그 블록을 얻는다. 메모리 관리 기법이 데이터 블록의 크기보다 작은 크기의 로그 블록을 선택함으로써 로그 블록 및 이전의 로그 블록에 대한 컴팩션 동작 수행에 소요되는 시간을 단축할 수 있다.
메모리 관리 기법은 복수의 데이터 블록들에 대한 random 쓰기 동작에 대하 여 하나의 로그 블록을 선택할 수 있다. 메모리 관리 기법은 복수의 데이터 블록들이 하나의 로그 블록을 공유하도록 함으로써 플래시 메모리 내의 공간을 더욱 효율적으로 이용할 수 있다.
메모리 관리 기법은 순차적 쓰기 동작에 대하여는 데이터 블록과 동일한 크기의 shadow 데이터 블록을 선택하고, 선택된 shadow 데이터 블록에 순차적 쓰기 동작의 데이터를 in order로 저장한다. 즉, 메모리 관리 기법은 선택된 shadow 데이터 블록에 페이지 오프셋에 따라 순차적 쓰기 동작의 데이터를 저장한다.
메모리 관리 기법은 플래시 메모리 내에 더 이상 선택할 수 있는 free 블록이 없는 경우, shadow 데이터 블록 및 이전의 데이터 블록을 병합하여 free 데이터 블록을 얻는다. 메모리 관리 기법은 이전의 데이터 블록 내의 valid한 데이터를 shadow 데이터 블록에 카피함으로써 shadow 데이터 블록 및 이전의 데이터 블록을 병합할 수 있다.
메모리 관리 기법은 부분적 순차적 쓰기 또는 순차적 쓰기 동작의 데이터를 shadow 데이터 블록에 저장함으로써, shadow 데이터 블록 및 이전의 데이터 블록을 병합할 때 소요되는 시간을 단축하고, 데이터 카피 오버헤드(data copy overhead)를 줄일 수 있다.
도 5는 본 발명의 또 다른 실시예에 따른 메모리 관리 방법을 도시하는 동작 흐름도이다.
도 5를 참조하면, 메모리 관리 방법은 제1 데이터를 저장하는 복수의 데이터 블록들에 대하여 제2 데이터를 저장하는 제1 로그 블록을 할당한다(S510).
메모리 관리 방법은 제1 데이터를 업데이트하여 제2 데이터를 생성한다(S520).
메모리 관리 방법은 생성된 제2 데이터를 제1 로그 블록에 저장한다(S530).
이 때, 데이터 블록들 각각의 크기는 제1 로그 블록의 크기보다 크다.
실시예에 따라서는, 데이터 블록들 각각의 크기는 제1 로그 블록의 크기의 N배일 수 있다(N은 2 이상의 자연수).
실시예에 따라서는, 단계(S530)는 제1 데이터에 대응하는 어드레스에 관계 없이 제2 데이터가 생성되는 순서대로 제2 데이터를 제1 로그 블록에 저장할 수 있다.
실시예에 따라서는, 메모리 관리 방법은 메모리 내에 빈 공간의 비율이 임계치 미만일 때, 제1 로그 블록 및 데이터 블록들을 병합하여 빈 공간을 얻을 수 있다.
이 때, 메모리 관리 방법은 제1 로그 블록에 저장된 제2 데이터를 새로운 데이터 블록에 카피할 수 있다.
이 때, 메모리 관리 방법은 제1 로그 블록을 소거할 수 있다.
이 때, 메모리 관리 방법은 제1 데이터 중 유효한 데이터를 새로운 데이터 블록에 카피할 수 있다.
이 때, 메모리 관리 방법은 데이터 블록들을 소거할 수 있다.
실시예에 따라서는, 메모리 관리 방법은 메모리 내에 빈 공간의 비율이 임계치 미만일 때, 제1 로그 블록 및 제2 로그 블록을 병합하여 빈 공간을 얻을 수 있 다.
이 때, 메모리 관리 방법은 제1 로그 블록 및 제2 로그 블록에 저장된 제2 데이터 중 유효한 데이터만을 새로운 제3 로그 블록에 카피할 수 있다.
이 때, 메모리 관리 방법은 제1 로그 블록 및 제2 로그 블록을 소거할 수 있다.
도 6은 본 발명의 또 다른 실시예에 따른 메모리 관리 방법을 도시하는 동작 흐름도이다.
도 6을 참조하면, 메모리 관리 방법은 제1 데이터 블록에 저장된 제1 데이터에 대한 부분적 순차적 업데이트의 요청을 검출한다(S610).
메모리 관리 방법은 요청이 검출되면, 제1 데이터를 업데이트하여 제2 데이터를 생성한다(S620).
메모리 관리 방법은 생성된 제2 데이터를 제1 데이터에 대응하는 어드레스에 따라 제2 데이터 블록에 저장한다(S630).
메모리 관리 방법은 메모리 내에 빈 공간이 임계치 미만일 때, 제2 데이터 블록 및 제1 데이터 블록을 병합하여 빈 공간을 얻을 수 있다.
이 때, 메모리 관리 방법은 제1 데이터 중 유효한 데이터만을 유효한 데이터의 어드레스에 따라 제2 데이터 블록에 카피할 수 있다.
이 때, 메모리 관리 방법은 제1 데이터 블록을 소거하여 빈 공간을 얻을 수 있다.
본 발명에 따른 메모리 관리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 페이지 매핑 기법의 일 예를 도시하는 도면이다.
도 2는 블록 매핑 기법의 일 예를 도시하는 도면이다.
도 3은 하이브리드 매핑 기법의 일 예를 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른 메모리 관리 기법을 도시하는 도면이다.
도 5는 본 발명의 또 다른 실시예에 따른 메모리 관리 방법을 도시하는 동작 흐름도이다.
도 6은 본 발명의 또 다른 실시예에 따른 메모리 관리 방법을 도시하는 동작 흐름도이다.

Claims (16)

  1. 제1 데이터를 저장하는 복수의 데이터 블록들;
    제2 데이터를 저장하는 복수의 로그 블록들; 및
    상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하고, 생성된 상기 제2 데이터를 상기 로그 블록들에 저장하는 관리부
    를 포함하고,
    상기 데이터 블록들 각각은 상기 로그 블록들 각각의 N배의 크기(N은 2 이상의 자연수)를 가지는 것을 특징으로 하는 메모리 관리 시스템.
  2. 제1항에 있어서,
    상기 관리부는
    상기 복수의 데이터 블록들 중 일부의 데이터 블록들에 저장된 제1 데이터가 업데이트된 제2 데이터를 하나의 로그 블록에 저장하는 것을 특징으로 하는 메모리 관리 시스템.
  3. 제1항에 있어서,
    상기 로그 블록들 각각은
    상기 제1 데이터의 어드레스에 관계 없이 상기 제2 데이터가 생성되는 순서대로 상기 제2 데이터를 저장하는 것을 특징으로 하는 메모리 관리 시스템.
  4. 제1항에 있어서,
    상기 관리부는
    상기 데이터 블록들 또는 상기 로그 블록들에 빈 공간이 없을 때, 상기 로그 블록들에 저장된 제2 데이터를 새로운 데이터 블록에 카피함으로써 상기 로그 블록들 및 상기 데이터 블록들을 병합하는 것을 특징으로 하는 메모리 관리 시스템.
  5. 제1항에 있어서,
    상기 관리부는
    상기 데이터 블록들 또는 상기 로그 블록들에 빈 공간이 없을 때, 상기 로그 블록들에 저장된 제2 데이터 중 유효한 제2 데이터만을 하나의 로그 블록에 저장하고, 나머지 로그 블록들을 소거함으로써 상기 로그 블록들을 압축하는 것을 특징으로 하는 메모리 관리 시스템.
  6. 제1항에 있어서,
    상기 관리부는
    상기 로그 블록들에 빈 공간이 없을 때, 상기 데이터 블록들 중 일부를 분할하여 새로운 로그 블록들을 생성하는 것을 특징으로 하는 메모리 관리 시스템.
  7. 제6항에 있어서,
    상기 관리부는
    상기 데이터 블록들 중 일부를 분할한 후, 상기 분할된 데이터 블록들을 소거함으로써 상기 새로운 로그 블록들을 생성하는 것을 특징으로 하는 메모리 관리 시스템.
  8. 제1 데이터를 저장하는 제1 데이터 블록;
    제2 데이터를 저장하는 제2 데이터 블록; 및
    상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하고, 상기 생성된 제2 데이터를 상기 제2 데이터 블록에 저장하는 관리부
    를 포함하고,
    상기 관리부는
    상기 제1 데이터에 대한 부분적 순차적 업데이트 동작이 검출되면, 상기 생성된 제2 데이터를 상기 제1 데이터의 어드레스에 따라 상기 제2 데이터 블록에 저장하는 것을 특징으로 하는 메모리 관리 시스템.
  9. 제8항에 있어서,
    상기 관리부는
    상기 제1 데이터 중 유효한 데이터만을 상기 유효한 데이터의 어드레스에 따라 상기 제2 데이터 블록에 카피하여 상기 제1 데이터 블록 및 상기 제2 데이터 블록을 병합하는 것을 특징으로 하는 메모리 관리 시스템.
  10. 제1 데이터를 저장하는 복수의 데이터 블록들에 대하여 제2 데이터를 저장하는 제1 로그 블록을 할당하는 단계;
    상기 제1 데이터를 업데이트하여 상기 제2 데이터를 생성하는 단계;
    상기 생성된 제2 데이터를 상기 제1 로그 블록에 저장하는 단계
    를 포함하고,
    상기 데이터 블록들 각각은 상기 제1 로그 블록의 N배의 크기(N은 2 이상의 자연수)를 가지는 것을 특징으로 하는 메모리 관리 방법.
  11. 제10항에 있어서,
    상기 생성된 제2 데이터를 상기 제1 로그 블록에 저장하는 단계는
    상기 제1 데이터의 어드레스에 관계 없이 상기 제2 데이터가 생성되는 순서대로 상기 제2 데이터를 저장하는 것을 특징으로 하는 메모리 관리 방법.
  12. 제10항에 있어서,
    상기 제1 로그 블록에 저장된 제2 데이터를 새로운 데이터 블록에 카피하는 단계;
    상기 제1 로그 블록을 소거하는 단계;
    상기 제1 데이터 중 유효한 데이터를 상기 새로운 데이터 블록에 카피하는 단계; 및
    상기 데이터 블록들을 소거하는 단계
    를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  13. 제10항에 있어서,
    상기 제1 로그 블록 및 제2 로그 블록에 저장된 제2 데이터 중 유효한 제2 데이터만을 제3 로그 블록에 저장하는 단계; 및
    상기 제1 로그 블록 및 제2 로그 블록을 소거하는 단계
    를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  14. 제1 데이터 블록에 저장된 제1 데이터에 대한 부분적 순차적 업데이트의 요청을 검출하는 단계;
    상기 요청이 검출되면, 상기 제1 데이터를 업데이트하여 제2 데이터를 생성하는 단계;
    상기 생성된 제2 데이터를 상기 제1 데이터의 어드레스에 따라 제2 데이터 블록에 저장하는 단계
    를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  15. 제14항에 있어서,
    상기 제1 데이터 중 유효한 데이터만을 상기 유효한 데이터의 어드레스에 따라 상기 제2 데이터 블록에 카피하여 상기 제1 데이터 블록 및 상기 제2 데이터 블 록을 병합하는 단계
    를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  16. 제10항 내지 제15항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020070113959A 2007-11-08 2007-11-08 비휘발성 메모리의 관리 방법 및 관리 시스템 KR20090047880A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070113959A KR20090047880A (ko) 2007-11-08 2007-11-08 비휘발성 메모리의 관리 방법 및 관리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070113959A KR20090047880A (ko) 2007-11-08 2007-11-08 비휘발성 메모리의 관리 방법 및 관리 시스템

Publications (1)

Publication Number Publication Date
KR20090047880A true KR20090047880A (ko) 2009-05-13

Family

ID=40857156

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070113959A KR20090047880A (ko) 2007-11-08 2007-11-08 비휘발성 메모리의 관리 방법 및 관리 시스템

Country Status (1)

Country Link
KR (1) KR20090047880A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101400506B1 (ko) * 2012-07-13 2014-05-27 주식회사 이에프텍 비휘발성 메모리 제어기 및 그 제어 방법
KR101419004B1 (ko) * 2012-05-03 2014-07-11 주식회사 디에이아이오 비휘발성 메모리 시스템
KR20150083264A (ko) * 2014-01-09 2015-07-17 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101419004B1 (ko) * 2012-05-03 2014-07-11 주식회사 디에이아이오 비휘발성 메모리 시스템
KR101400506B1 (ko) * 2012-07-13 2014-05-27 주식회사 이에프텍 비휘발성 메모리 제어기 및 그 제어 방법
KR20150083264A (ko) * 2014-01-09 2015-07-17 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법

Similar Documents

Publication Publication Date Title
US8117374B2 (en) Flash memory control devices that support multiple memory mapping schemes and methods of operating same
KR100771519B1 (ko) 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7594067B2 (en) Enhanced data access in a storage device
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US7882299B2 (en) System and method for use of on-chip non-volatile memory write cache
JP5728672B2 (ja) ハイブリッドメモリ管理
KR100389867B1 (ko) 플래시 메모리 관리방법
KR101391270B1 (ko) Mram을 이용하는 비휘발성 메모리 시스템
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
US20080082729A1 (en) Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
US20100312955A1 (en) Memory system and method of managing the same
US9122586B2 (en) Physical-to-logical address map to speed up a recycle operation in a solid state drive
US9176866B2 (en) Active recycling for solid state drive
JP2018101411A (ja) データストレージデバイスおよびその操作方法
JP5300496B2 (ja) 半導体記憶装置、ホスト機器及び半導体記憶システム
US20050169058A1 (en) Data management apparatus and method used for flash memory
KR20090042077A (ko) 파일 관리 시스템 및 방법
KR20090047880A (ko) 비휘발성 메모리의 관리 방법 및 관리 시스템
KR101027687B1 (ko) 라이트 동작을 제어하는 반도체 스토리지 시스템 및 그 제어 방법
KR101430762B1 (ko) 비휘발성 랜덤 액세스 메모리를 이용한 스토리지 시스템,파일 시스템 및 데이터 관리 방법 그리고 기억장치
KR100780963B1 (ko) 메모리 카드 및 메모리 카드의 구동 방법
CN108255437B (zh) 数据贮存装置及方法
KR101103201B1 (ko) 메모리 시스템
KR100982440B1 (ko) 단일 플래시 메모리의 데이터 관리시스템
JP2009211202A (ja) メモリシステム

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination