KR20090124257A - 플래시메모리의 데이터 연산 및 매핑방법 - Google Patents

플래시메모리의 데이터 연산 및 매핑방법 Download PDF

Info

Publication number
KR20090124257A
KR20090124257A KR1020080050356A KR20080050356A KR20090124257A KR 20090124257 A KR20090124257 A KR 20090124257A KR 1020080050356 A KR1020080050356 A KR 1020080050356A KR 20080050356 A KR20080050356 A KR 20080050356A KR 20090124257 A KR20090124257 A KR 20090124257A
Authority
KR
South Korea
Prior art keywords
block
physical
data
logical
sector
Prior art date
Application number
KR1020080050356A
Other languages
English (en)
Other versions
KR101004102B1 (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 KR1020080050356A priority Critical patent/KR101004102B1/ko
Publication of KR20090124257A publication Critical patent/KR20090124257A/ko
Application granted granted Critical
Publication of KR101004102B1 publication Critical patent/KR101004102B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

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

Abstract

본 발명은 플래시메모리의 데이터 연산 및 매핑방법에 관한 것으로, 본 발명에 따른 플래시 메모리에서의 데이터 쓰기연산방법은, 논리블록정보, 논리섹터정보, 및 데이터가 제공되는 단계와; 상기 논리블록정보에 대응하여 적어도 하나의 물리블록이 매핑되되, 상기 적어도 하나의 물리블록은 현재상태의 지우기 연산정보를 토대로 하여 복수의 프리블록들 중에서 선택되어 동적으로 매핑되는 단계와; 우선적으로는 상기 적어도 하나의 물리블록 내의 논리오프셋과 물리오프셋이 일치되는 영역인 제1위치에 상기 데이터를 저장하고, 상기 제1위치에 데이터가 이미 저장되어 있는 경우에는 상기 논리오프셋과 상기 물리오프셋이 일치되지 않는 임의의 빈 영역인 제2위치에 상기 데이터를 저장하는 단계를 구비한다. 본 발명에 따르면, 플래시 메모리의 지우기 연산을 효과적으로 줄일 수 있으며, 고성능의 플래시 메모리 시스템을 구현할 수 있게 된다.
플래시메모리, 매핑, 동적, 사상, 데이터 블록, 로그블록

Description

플래시메모리의 데이터 연산 및 매핑방법{Method for data operation and mapping of flash memory}
본 발명은 플래시 메모리에서의 데이터 연산 및 매핑방법에 관한 것으로, 보다 구체적으로는, 플래시 메모리의 용량과 블록의 활용성 면에서 효율적인 플래시 메모리에서의 데이터 연산 및 매핑방법에 관한 것이다.
플래시 메모리는 데이터의 기록 및 삭제가 자유로운 램(RAM: Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 롬(ROM: Read Only Memory)의 장점을 동시에 지니고 있다. 또한, 마그네틱 디스크 메모리를 기반으로 하는 저장매체에 비하여 전력소모가 적으면서도 하드디스크와 같은 빠른 액세스 타임을 가지며 크기가 작기 때문에 최근 디지털 카메라, PDA, MP3 플레이어와 같은 휴대용 전자기기 등의 내장형 시스템(Embedded System)이나 이동식 시스템(Mobile System) 등의 응용에서 많이 사용되고 있다.
플래시 메모리는 하드웨어 특성상 전원 공급이 중단된 이후에도 영구적으로 데이터를 저장하는 비휘발성 특성을 가진다. 또한 하드디스크와 달리 이미 데이터 가 있는 섹터에 중첩해서 쓰기(Overwrite)를 할 수 없는 특성을 가진다. 이 특성으로 인하여, 데이터를 쓰기 전에 해당 섹터가 포함된 전체 블록을 지워야 하는 쓰기 전 지우기(Erase Before Write) 연산을 필요로 한다. 그리고 쓰기 데이터의 단위보다 삭제되는 데이터의 단위가 큰 특징을 가지고 있다.
이러한 특징은 플래시 메모리를 주메모리로 사용하는 것을 어렵게 할 뿐 아니라 플래시 메모리가 보조기억장치로 이용되는 경우에도 일반 하드디스크용 파일 시스템(file system)을 그대로 활용하는 것을 저해하는 요인이 된다.
따라서 플래시 메모리 기반의 시스템은 플래시 메모리의 본질적인 하드웨어 적인 한계점을 극복하기 위하여 상기 파일시스템과 플래시 메모리 사이에 플래시 변환계층(FTL: Flash Translation Layer)이 사용된다.
도 1에 일반적인 플래시 메모리 시스템의 블록도가 나타나 있다.
도 1에 도시된 바와 같이, 일반적인 플래시 메모리 시스템은, 가장 상위레벨에 응용프로그램(12)이 있으며, 그 아래에 사용자 프로그램을 탑재하는 파일 시스템(12)과, 사용자의 요청에 따른 소정의 데이터 연산 즉, 플래시 메모리(18)의 읽기 및 쓰기 연산 동작을 상기 플래시 메모리(18)에 전달하는 플래시 변환 계층(16)을 포함한다.
상기 파일 시스템(14)은 플래시 메모리(18)에 저장되어 있는 데이터를 읽거나 플래시 메모리(18)에 데이터를 저장하기 위하여 논리 섹터 어드레스에 대한 읽기 또는 쓰기 연산 요청을 연속적으로 하게 되며, 상기 플래시 변환계층(16)의 알고리즘에 의하여 이러한 논리 섹터 어드레스는 실제 플래시 메모리(18)의 물리 섹 터 어드레스로 변경된다.
상기 플래시 변환계층(16)은, 플래시 메모리(18)의 데이터 연산 동작시, 파일 시스템이 생성한 논리어드레스를 삭제 연산이 수행된 플래시 메모리(18)의 물리 어드레스로 매핑시켜 주는 역할을 수행한다.
상기 플래시 변환계층(16)의 어드레스 매핑 기능으로 인해, 호스트는 상기 플래시 메모리(30)를 하드디스크 드라이버로 인식하고, 하드디스크 드라이버와 동일한 방식으로 플래시 메모리 장치를 액세스할 수 있게 된다.
종래의 플래시 변환계층(16)은 상기 파일 시스템(14)을 확장하여 플래시 메모리의 기능을 추가한 기법과 플래시 메모리를 위한 디바이스 드라이버를 제공하는 기법이 있다. 파일 시스템에 플래시 메모리를 위한 모듈을 첨가하는 기법은 최근 파일 시스템과의 호환성 문제로 인해 플래시 메모리를 위한 디바이스 드라이버를 제공하는 기법이 사용되는 추세이다.
상기 플래시 메모리(18)는 최근 삼성전자 낸드플래시 메모리(Nand flash memory)를 예로 들면, 읽기 연산과 쓰기 연산은 모두 섹터(Sector) 단위이며 지우기 연산은 블록(block) 단위이다. 한 블록이 32개의 섹터로 이루어져 있으며, 한 섹터의 크기는 528바이트이다.
한 섹터를 구성하는 528바이트 중 512바이트는 데이터를 적을 수 있는 영역이며, 나머지 16바이트는 섹터나 한 블록에 대한 정보(meta data)를 저장하는 여분 영역(spare area)이다. 읽기 연산은 15㎲가 소요되고 쓰기 연산은 200㎲이 소요된다. 지우기 연산은 블록(block) 단위로써 2㎳이 걸리기 때문에 많은 지우기 연산은 성능에 지대한 영향을 줄 수 있다. 또한 한 블록에 대한 지우기 연산이 일정 횟수를 넘어가면 그 블록이 손상되어 플래시 메모리가 손상될 경우가 있다. 이를 위해 블록의 지우는 횟수를 평준화 시키는 마모도 평준화 기법(wear-leveling technique)이 요구된다. 이와 같은 성질들을 고려하여 플래시 메모리의 성능을 극대화시키는 것이 상술한 플래시 변환계층(FTL)(16)의 역할이다.
플래시 메모리의 성능을 극대화시키기 위해서는 "쓰기 전 지우기"성질이 중요하다. 읽기와 쓰기의 횟수를 줄이는 것도 중요하지만 지우기 연산은 2㎳이나 되기 때문에 지우기 연산을 줄이는 것이 플래시 메모리 성능 향상에 가장 중요한 요소이다.
그리고, 지우기 연산의 횟수 외에도 플래시 메모리에서 중요한 사항은 램(RAM)의 사용량이다. 램(RAM)은 휘발성 메모리로써 고가격대의 메모리로써 각 플래시 변환계층 알고리즘에 필요한 매핑(또는 사상)(mapping) 정보 테이블을 저장하고 사용한다. 매핑정보 테이블이란 논리 주소와 물리 주소를 섹터 또는 블록 단위로 매핑한 정보를 담는 테이블이다.
따라서 플래시 메모리에 요구되는 플래시 변환계층(FTL)의 최종목표는 최소한의 메모리(예를 들면, 램(RAM))를 사용하면서 최소한의 연산 시간을 소요하여 연산을 수행하는 것이다.
일반적으로 사용되는 종래의 매핑방법으로는 섹터매핑, 블록매핑, 혼합매핑방법이 있다. 이는 도 2 내지 도 4를 통해 설명한다. 도 2는 섹터매핑방법을, 도 3은 블록매핑방법을, 도 4는 혼합매핑방법을 설명하기 위한 도면이다.
도 2에 도시된 바와 같이, 상기 섹터 매핑 방법은 읽기 및 쓰기 단위인 섹터 단위로 논리-물리 매핑 테이블이 존재하는 방법이다. 즉, 파일 시스템 관점에서 m개의 논리 섹터가 존재한다고 하면 논리-물리 매핑 테이블의 행의 크기가 m이 된다.
도 2에서 플래시 메모리는 총 4개의 블록으로 구성되며 한 블록은 4 개의 섹터로 구성된다고 가정한다. 이 경우, 도 2(a)에 도시된 바와 같이, 플래시 메모리에 존재하는 물리 섹터의 개수는 총 16개이고, 상기 섹터 매핑 방법에 따르면, 16개의 물리섹터의 엔트리에 대한 매핑 테이블(a)을 가진다. 예를 들어, 논리섹터번호(LSN;Logical Sector Number) 9번에 대한 쓰기 요청을 수행한다고 하면, 도 2(a)의 매핑 테이블은 물리 섹터 번호(PSN;Physical Sector Number) 3번을 리턴하게 되고, 도 2(b)에 도시된 바와 같이, 물리섹터번호(PSN) 3번에 데이터를 쓰게 되는 방식이다.
상술한 섹터매핑방법은 동일한 논리 섹터에 대한 갱신 연산이 요청되면 매핑 테이블의 정보만 변경한 후 플래시 메모리의 비어있는 물리섹터에 데이터를 쓸 수 있으므로 삭제 연산을 최소화 할 수 있다는 장점이 있으나, 매핑테이블의 크기가 커지는 단점이 있다.
도 3에 도시된 바와 같이, 상기 블록매핑방법은 상기 섹터매핑방법 매핑 테이블의 크기가 커지는 단점을 극복하기 위하여 제안된 방법으로 플래시 메모리의 삭제 단위인 블록 단위로 논리-물리 매핑 테이블이 존재하는 방법이다.
플래시 메모리는 총 4개의 블록으로 구성되며 한 블록은 4 개의 섹터로 구성 된다고 가정하는 경우에, 매핑테이블의 엔트리는 도 3(a)의 매핑테이블과 같이 4개가 된다. 여기서 플래시 메모리의 읽기 쓰기 연산은 섹터 단위로 이루어짐으로 논리 주소의 섹터 오프셋과 물리 주소의 섹터 오프셋을 일치시키는 방법으로 연산이 이루어진다.
예를 들어, 논리섹터번호(LSN) 9번에 대한 쓰기 연산이 요청되면, 먼저 논리 섹터 번호 9번의 논리블록번호(LBN;Logical Block Number)를 계산한다. 상기 논리블록번호(LBN)의 계산은 상기 논리섹터번호(LSN)을 블록당 섹터수(예를 들면, 4)로 나눈 몫의 값으로 정해지게 된다. 따라서, 논리블록번호(LBN)은 '9/4'의 몫인 '2'가 되고 섹터 오프셋은 나머지인 '1'이 된다. 도 3(a)의 블록 매핑 테이블을 참조하면 물리블록번호 '1'을 얻을 수 있고 오프셋이 1이므로 도 3(b)에 도시된 바와 같이, 해당 물리블록(Block 1)의 해당 섹터 위치에 데이터를 쓸 수 있다.
상기 블록 매핑방법은 도 2의 섹터매핑방법에 비해 매핑 테이블의 크기가 현격히 줄어들었지만 블록 단위로 매핑 정보를 일치시켜야 하기 때문에, 동일한 논리 주소에 쓰기 연산이 많이 요청되는 경우 성능 저하를 발생시킨다. 예를 들어 논리 섹터번호(LSN) 9번의 쓰기 연산 요청 후 다시 논리섹터번호(LSN) 9번에 쓰기 연산이 요청되면 매핑 테이블을 변경하여 다른 위치의 물리블록에 데이터를 쓴다고 할지라도 인접 섹터의 모든 정보가 옮겨지는 물리블록으로 복사되어야 하는 문제점이 있다.
도 4에 도시된 바와 같이, 상기 혼합매핑방법은 상기 섹터매핑방법과 상기 블록매핑방법을 혼합한 방법이다. 다시 말하면, 일단 도 3의 상기 블록매핑방법과 같이 블록 단위의 매핑 테이블이 존재하고, 블록 내에서는 섹터 매핑을 하는 방법이다.
예를 들어, 논리섹터번호(LSN) 9에 쓰기 연산이 요청되면, 도 3의 블록매핑방법에서 설명된 바와 같이 도 4(a)의 매핑 테이블을 참조하여 물리블록번호(PBN) 1을 구한다. 다음으로 해당 블록에 대한 논리블록과 물리블록의 섹터오프셋을 일치 시킬 필요 없이 해당블록의 섹터영역에 데이터를 저장하고, 데이터 저장정보로써 논리섹터번호(LSN) 9를 플래시 메모리에 저장한다. 상기 데이터 저장정보는 해당 섹터의 여분영역에 저장된다.
플래시 메모리로부터 데이터를 읽을 때는 먼저 해당 논리 블록에 대한 물리 블록을 도 4(a)의 매핑 테이블로부터 구한다. 다음으로 그 블록에 존재하는 논리 섹터번호(LSN)를 탐색함으로써 해당 데이터를 읽을 수 있게 된다.
상술한 바와 같은 종래의 매핑방법들 중, 블록 매핑(도 2)과 혼합 매핑(도 3)은 플래시 메모리가 빈 상태에서부터 물리 블록과 논리 블록을 미리 매핑하게 된다. 또한 도 1의 섹터 매핑의 경우는 물리 섹터와 논리 섹터를 미리 매핑한다.
물리 블록과 논리 블록을 처음부터 매핑하는 종래의 방법은 공간 활용에 있어서 비효율적인 면을 보여준다. 논리 섹터를 극히 일부분만 사용하는 쓰기 연산의 유형을 수행할 때 사용했던 물리 블록들은 많이 사용함에도 불구하고 아무 관여를 하지 않는 수많은 빈 데이터 블록들이 존재할 수 있다.
상술한 종래의 매핑방법 및 데이터 연산방법은, 상술한 단점들 이외에도 블록의 지우는 횟수를 평준화 시키는 마모도 평준화 기법(wear-leveling technique) 에 효율적으로 대응할 수 없다. 또한, 플래시 메모리의 성능을 극대화시키기 위해서 필요한 지우기 연산을 효과적으로 줄이는 데에 한계가 있다.
따라서, 본 발명의 목적은 상기한 종래의 문제점을 극복할 수 있는 플래시메모리의 데이터연산 및 매핑방법을 제공하는 데 있다.
본 발명의 다른 목적은 플래시 메모리의 지우기 연산을 효과적으로 줄일 수 있는 플래시메모리의 데이터연산 및 매핑방법을 제공하는 데 있다.
본 발명의 또 다른 목적은, 고성능의 플래시 메모리 시스템을 구현할 수 있는 플래시메모리의 데이터연산 및 매핑방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 플래시 메모리의 효율성을 높일 수 있는 플래시메모리의 데이터연산 및 매핑방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 플래시 메모리의 저장공간을 효율적으로 관리할 수 있는 플래시메모리의 데이터연산 및 매핑방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 데이터 쓰기 연산을 수행하면서 동적으로 매핑테이블을 작성하는 플래시메모리의 데이터연산 및 매핑방법을 제공하는 데 있다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 구체화에 따라, 본 발명에 따른 플래시 메모리에서의 데이터 쓰기연산방법은, 논리블록정보, 논리섹터정보, 및 데이터가 제공되는 단계와; 상기 논리블록정보에 대응하여 적어도 하나의 물리블록이 매핑되되, 상기 적어도 하나의 물리블록은 현재상태의 지우기 연산정보를 토대로 하여 복수의 프리블록들 중에서 선택되어 동적으로 매핑되는 단계와; 우선적으로는 상기 적어도 하나의 물리블록 내의 논리오프셋과 물리오프셋이 일치되는 영역인 제1위치에 상기 데이터를 저장하고, 상기 제1위치에 데이터가 이미 저장되어 있는 경우에는 상기 논리오프셋과 상기 물리오프셋이 일치되지 않는 임의의 빈 영역인 제2위치에 상기 데이터를 저장하는 단계를 구비한다.
상기 지우기 연상정보는 해당블록에 대한 지우기 연산횟수정보를 포함하며, 상기 적어도 하나의 물리블록의 선택은 지우기 연산횟수가 가장 적은 프리블록 순으로 수행될 수 있다.
상기 지우기 연산정보는 상기 적어도 하나의 물리블록의 여분섹터영역, 메타블록영역, 및 별도의 메모리 영역 중에서 선택된 적어도 하나의 영역에 저장될 수 있다.
상기 논리블록정보에 대응하여 하나의 논리블록에 대하여 매핑되는 상기 물리블록의 수는 연산식"지우기 연산 시간(㎳)/읽기 연산시간(㎲)/블록당 섹터수"의 연산을 통해 얻어진 몫의 값을 초과하지 않도록 할 수 있다.
상기 논리블록정보 및 논리섹터정보는 논리섹터번호(LSN)를 통해 제공되며, 상기 제2위치에 데이터가 저장된 경우에는, 상기 제2위치에 저장된 데이터에 대응되는 논리섹터번호를 데이터 저장정보로써 상기 제2위치의 여분영역에 저장하여 읽 기연산시 검색되도록 하는 단계를 더 포함할 수 있다.
상기 논리오프셋은 논리섹터오프셋 또는 논리 페이지 오프셋이며, 상기 물리오프셋은 물리섹터오프셋 또는 물리페이지오프셋일 수 있다.
상기 적어도 하나의 물리블록은 데이터가 모두 제1위치에 저장되는 데이터블록과, 제2위치에 저장된 데이터가 적어도 하나 존재하는 로그블록으로 구분되며, 상기 적어도 하나의 물리블록의 여분영역에는 상기 적어도 하나의 물리블록이 상기 데이터 블록인지 상기 로그블록인지 여부를 표시하는 블록상태정보가 저장될 수 있다.
상기 제1위치 또는 상기 제2위치에 데이터를 저장하는 단계이후에, 한 개의 논리블록에 대하여 매핑된 물리블록의 수가 상기 연산식에 의한 물리블록의 수를 초과하는 경우 또는 프리블록의 부족이 예상되는 경우에 합병연산을 수행하는 단계를 더 구비할 수 있다.
상기 프리블록의 부족이 예상되는 경우는, 프리블록이 한 개 존재하고 로그블록을 추가적으로 매핑해야하는 경우, 또는 프리블록이 한 개 존재하고 데이터 블록이 추가로 필요한 경우를 포함할 수 있다.
상기 합병연산은, 하나의 논리블록에 대응하여 매핑된 적어도 두 개의 물리블록들의 유효데이터를 임의의 프리블록을 선택하여 저장하고, 상기 적어도 두 개의 물리블록들은 프리블록이 되도록 지우기 연산을 수행할 수 있다.
상기 합병연산시 프리블록의 선택은 지우기 연산횟수가 가장 작은 프리블록이 선택될 수 있다.
상기 합병연산의 대상이 되는 적어도 두 개의 물리블록들의 선택은, 하나의 논리블록에 대하여 매핑된 물리블록의 수가 가장 많은 순서 또는 해당물리블록들의 지우기 연산횟수의 합이 가장 작은 순서로 선택될 수 있다.
상기 플래시 메모리는, 논리적 연산 단위와 물리적 연산 단위가 동일한 소블록 플래시 메모리 또는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 저장용량을 가지는 대블록(large block) 플래시 메모리일 수 있다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 다른 구체화에 따라, 본 발명에 따른 플래시 메모리에서의 데이터 쓰기연산방법은, 논리섹터번호 및 데이터가 제공되는 단계와; 제공되는 논리섹터번호를 통해 논리블록번호를 확인하고, 상기 논리블록번호에 대응하여 매핑된 물리블록의 존재여부를 확인하는 단계와; 매핑된 물리블록이 존재하는 경우에는, 우선적으로는 해당 물리블록의 논리오프셋과 물리오프셋이 일치되는 영역인 제1위치에 상기 데이터를 저장하고, 상기 제1위치에 데이터가 이미 저장되어 있는 경우에는 상기 논리오프셋과 상기 물리오프셋이 일치되지 않는 임의의 빈 영역인 제2위치에 상기 데이터를 저장하며, 매핑된 물리블록이 존재하지 않는 경우에는, 현재상태의 지우기 연산정보를 토대로 하여 복수의 프리블록들 중에서 하나의 물리블록을 선택하여 동적으로 매핑하고, 상기 제1위치 또는 상기 제2위치에 상기 데이터를 저장하는 단계를 구비한다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 또 다른 구체화에 따라, 본 발명에 따른 플래시메모리에서의 블록매핑방법은, 하나의 논리블록에 대하여 적어도 하나의 물리블록을 대응시켜 매핑함에 있어, 상기 적어도 하나의 물리 블록은 데이터 쓰기연산을 수행할 때, 현재상태의 지우기연산정보를 토대로 하여 복수의 프리블록들 중에서 선택되어 동적으로 매핑됨을 특징으로 한다.
상기 지우기 연상정보는 해당블록에 대한 지우기 연산횟수정보를 포함하며,상기 적어도 하나의 물리블록의 선택은 지우기 연산이 가장 적은 프리블록 순으로 수행될 수 있다.
상기 지우기 연산정보는 블록의 여분섹터영역, 메타블록영역, 및 별도의 메모리 영역 중에서 선택된 어느 하나의 영역에 저장될 수 있다.
상기 하나의 논리블록에 대응하여 매핑되는 상기 적어도 하나의 물리블록의 수는 "지우기 연산 시간(㎳)/읽기연산시간(㎲)/블록당 섹터수"의 연산을 통해 얻어진 몫의 값을 초과하지 않도록 할 수 있다.
상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 또 다른 구체화에 따라, 본 발명에 따른 플래시 메모리에서의 데이터 읽기연산방법은, 제공되는 논리섹터번호를 통해 논리블록번호를 확인하고, 상기 논리블록번호에 대응하여 매핑된 적어도 하나의 물리블록을 확인하고, 상기 적어도 하나의 물리블록의 여분영역에 저장된 플래그 정보를 통해 상기 적어도 하나의 물리블록이 로그블록인지 데이터 블록인지 확인하는 단계와; 상기 적어도 하나의 물리블록이 상기 데이터 블록인 경우에는 상기 논리섹터번호를 통해 제공되는 논리오프셋과 일치되는 물리오프셋 영역의 데이터를 읽어오고, 상기 적어도 하나의 물리블록이 상기 로그블록이고 섹터매핑테이블이 존재하는 경우에는 상기 섹터매핑테이블에 따라 해당되는 섹터의 데이터를 읽어오고, 상기 적어도 하나의 물리블록이 상기 로그블록이고 섹터매핑테이 블이 존재하지 않는 경우에는, 데이터가 저장된 섹터의 여분영역에 저장된 논리섹터번호를 검색하여 해당섹터의 데이터를 읽어오는 단계를 구비한다.
상기 데이터 블록은 논리오프셋과 물리오프셋이 일치하는 영역에 모든 데이터가 저장된 물리블록이며, 상기 로그블록은 적어도 하나의 데이터가 논리오프셋과 물리오프셋이 일치하지 않는 영역에 저장된 물리블록일 수 있다.
상기 적어도 하나의 물리블록이 상기 로그블록이고 섹터매핑테이블이 존재하지 않는 경우에의 데이터의 읽기연산을 검색은, 시간적으로 가장 나중에 매핑된 물리블록의 섹터들부터 수행될 수 있다.
본 발명에 따르면, 플래시 메모리의 지우기 연산을 효과적으로 줄일 수 있으며, 고성능의 플래시 메모리 시스템을 구현할 수 있게 된다. 또한, 플래시 메모리의 저장공간을 효율적으로 관리하여 플래시 메모리 효율성을 높일 수 있으며, 마모도 평준화 기법에 효율적으로 대응할 수 있게 된다.
이하에서는 본 발명의 바람직한 실시예가, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 철저한 이해를 제공할 의도 외에는 다른 의도 없이, 첨부한 도면들을 참조로 하여 상세히 설명될 것이다.
도 5 내지 도 8은 본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 연산방법 및 매핑방법을 설명하기 위한 도면들이다.
도 5는 본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 쓰기 연산방법 및 매핑방법의 동작 순서도이다.
본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 쓰기 연산 및 매핑방법은, 별도의 매핑테이블이 구비됨이 없이 동적으로 할당하는 동적할당(dynamic allocation)으로 블록매핑을 수행하면서 쓰기연산을 수행한다. 여기서 동적 할당이란 논리 주소와 물리 주소를 매핑한 테이블을 처음부터 만들지 않고, 쓰기 연산이 수행되면서 동적으로 테이블을 만드는 것이다.
도 5에 도시된 바와 같이, 본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 쓰기 연산 및 매핑을 위해, 우선 논리섹터번호(LSN) 및 데이터가 입력된다(S50). 상기 논리섹터번호(LSN)은 논리블록정보 및 논리섹터정보를 담고 있다. 즉 상기 논리섹터번호(LSN)을 블록당 섹터수로 나누어 몫은 논리블록번호(LBN)가 되고 나머지는 논리섹터오프셋(LSO)이 된다.
다음으로 상기 논리블록번호(LBN)에 대응하여 매핑된 물리블록이 존재하는지 판단한다(S51). 쓰기연산이 최초로 수행되는 경우나 매핑된 물리블록이 존재하지 않는 경우에는(No), 복수의 프리블록들 중 하나의 프리블록을 선택하여 쓰기연산을 위한 물리블록으로 매핑한다. 상기 프리블록의 선택은 복수의 프리블록들 중 지우기 연산횟수가 가장 작은 블록을 선택한다. 지우기 연산의 횟수는 블록의 한 섹터 영역에 저장될 수 있다. 상기 프리블록은 데이터가 전혀 저장되지 않은 빈 블록을 의미할 수 있다. 이에 대한 자세한 설명은 단계(S59 내지 S62)를 통해 하기로 한 다.
상기 논리블록번호(LBN)에 대응하여 매핑된 물리블록이 이미 존재하는 경우에는, 상기 매핑된 물리블록이 데이터 블록인지 로그블록인지 판단한다(S52). 여기서 상기 데이터 블록은, 데이터 모두가 논리오프셋(예를 들면, 논리섹터오프셋)과 물리오프셋(예를들면, 물리섹터오프셋)이 일치하는 제위치(in-place)(이하 '제1위치'라 함)에 저장되는 물리블록을 의미할 수 있다. 또한 상기 로그블록은, 저장되는 데이터 중 적어도 하나가 논리오프셋(예를 들면, 논리섹터오프셋)과 물리오프셋(예를들면, 물리섹터오프셋)이 일치하지 않는 다른 위치(out of place)(이하 '제2위치'라 함)에 저장되어 있는 물리블록을 의미할 수 있다.
상기 매핑된 물리블록이 데이터 블록인 경우에는(데이터블록), 상기 데이터 블록의 제1위치가 빈 섹터인지를 판단한다(S56). 여기서 제1위치란, 상기 논리섹터번호(LSN)를 통해 얻어지는 논리섹터오프셋과 상기 데이터 블록의 물리섹터오프셋이 동일한 섹터를 의미할 수 있다.
상기 제1위치가 빈 섹터이면(Yes), 상기 제1위치에 입력된 데이터를 저장하게 된다. 즉 데이터 쓰기 연산을 수행한다.
만일 상기 제1위치가 빈 섹터가 아니고 이미 다른 데이터가 저장되어 있다면(No), 상기 매핑된 물리블록의 블록상태를 로그블록으로 변경하고 해당 블록의 블록상태정보를 저장하게된다(S58).
상기 매핑된 물리블록이 로그블록인 경우(로그블록) 및 상기 데이터 블록이 로그블록으로 변경되는 경우에는(S58), 상기 로그블록에 빈섹터가 존재하는지 여부 를 판단한다(S53). 상기 로그블록에 빈섹터가 존재하는 경우에는(Yes), 임의의 빈섹터에 상기 입력된 데이터를 저장하게 된다(S54). 이때 상기 입력된 데이터는 논리오프셋과 물리오프셋이 일치하지 않는 제2위치에 데이터가 저장되게 된다. 상기 제2위치에 데이터를 저장하게 되면, 데이터 저장정보(예를 들면, 논리섹터번호(LSN))를 해당 섹터의 여분(spare)영역에 저장하여 읽기 연산시 검색되도록 한다(S55).
상기 로그블록에 빈섹터가 존재하지 않는 경우(No) 및 단계(S51)에서 매핑된 물리블록이 존재하지 않는 경우(No)에는 복수의 프리블록들 중에서 하나의 프리블록을 선택하여 매핑하는 과정이 수행된다.
이를 위해 우선적으로 프리블록의 개수가 2개 이상인지 판단한다(S59). 이는 시스템적으로 적어도 하나의 프리블록이 항상 존재하도록 하기 위한 것으로, 적어도 하나의 프리블록이 항상 존재할 필요가 없다면, 프리블록의 개수가 1개이어도 매핑동작이 수행될 수 있을 것이다.
상기 프리블록의 개수가 1개 인 경우에는(No), 합병연산을 수행하게 된다(S62). 상기 합병연산에 대해서는 추후 설명한다. 여기서 합병연산은 도면상에서 표시되지 않았지만, 하나의 논리블록에 대하여 매핑된 물리블록의 수가 미리 정해진 값보다 많아질 경우에도 합병연산이 수행되게 된다.
상기 프리블록의 개수가 2개 이상인 경우에는(Yes), 복수의 프리블록들 중 하나의 프리블록을 선택하여 데이터 블록 또는 로그블록으로 매핑한다(S60). 이때 상기 프리블록의 선택은 복수의 프리블록들 중 지우기 연산횟수(ECN;Erase Count Number)가 가장 작은 블록을 선택한다. 지우기 연산의 횟수는 블록의 한 섹터 여분영역에 저장될 수 있다.
단계(S51)의 매핑된 물리블록이 존재하지 아니하여 처음으로 물리블록을 선택하는 경우에 선택된 프리블록은 데이터 블록이 되어 제1위치에 데이터를 저장하는 것이 가능하고, 이후 추가적인 데이터 쓰기연산에 의해 제1위치에 데이터를 저장할 수 없는 경우에는 제2위치에 데이터를 저장하게 된다(S61). 그러나 단계(S53)에서의 빈섹터가 존재하지 아니하여 추가로 물리블록이 매핑되는 경우에는, 선택된 프리블록은 로그블록이 되어 제2위치에 데이터를 저장하게 된다(S61). 데이터 연산 과정은 이미 설명한 단계(S52) 내지 단계(S58)에서의 과정과 동일할 수 있다.
상술한 동적 매핑에 있어서, 블록 매핑은 한 개의 논리 블록에 한 개의 물리 블록을 매핑하는 방법이 일반적이다. 그러나, 이 경우에는 지우기 연산이 자주 일어날 수 있으므로, 이미 한 개의 물리 블록이 매핑된 논리 블록에 또 하나의 물리 블록을 할당하여 성능을 발전시키는 알고리즘이 존재하게 된다.
이때 추가로 매핑되는 물리블록은 대부분이 로그블록이고, 읽기 연산시에 로그 블록에서 필요한 섹터 정보를 읽기 위해서 가장 마지막으로 할당된 로그 블록의 마지막 섹터부터 논리 섹터 번호를 검색하는 것이 필요하게된다. 이와 같은 검색을 배제하려면, 로그 블록들에 대한 섹터 매핑 테이블을 램(RAM)에 지니면 된다. 이 때 하나의 논리블록에 대하여 복수의 물리블록을 매핑하는 경우에는, 하지만 매핑되는 물리블록의 숫자가 많아질수록 램(RAM)의 용량이 커진다는 단점이 있기 때문에 오직 성능만을 위해 매핑되는 물리블록의 수를 무한정 늘릴 수는 없다.
또한 하나의 물리블록에 대하여 매핑되는 물리블록의 수가 많아지면, 읽기연산 시간이 길어질 수 있다. 지우기 연산은 플래시 메모리의 성능을 좌우하는 가장 큰 요소이므로, 데이터를 읽기 위해 수행되어야 하는 읽기연산의 시간이 지우기 연산보다 작아야한다.
따라서 본 발명에서는 로그블록의 섹터매핑 테이블을 사용하는 경우를 포함하여 로그 블록의 섹터 매핑 테이블을 사용하지 않는 경우에, 로그블록들의 검색 등을 통한 데이터 읽기 연산이 지우기 연산이 소요하는 시간을 넘지 않도록 하기 위해 다음 식에 의해 추가되는 물리블록의 개수를 결정할 수 있다.
하나의 논리블록에 매핑되는 물리블록의 개수 = 지우기 연산시간은(㎳)/읽기연산시간(㎲)/블록당 섹터수'
여기서, 상기 지우기 연산시간을 읽기 연산시간으로 나눈 결과의 몫은 한 번의 지우기 연산이 소요되는 시간에 읽기 연산이 수행될 수 있는 섹터의 수를 의미한다. 이 섹터의 수를 한 개의 블록이 지닌 섹터의 수로 나누면, 그 결과의 몫은 매핑되는 물리블록의 개수가 된다. 상기 매핑되는 물리블록의 개수는 한 개의 논리 블록에 매핑될 수 있는 모든 물리 블록의 수를 의미한다. 상기 수학식에 의해 정해지는 물리블록의 개수는 하나의 논리블록에 대응하여 매핑되는 물리블록의 최대개수를 나타낸 것이다. 따라서, 상기 수학식에 의해 정해지는 물리블록의 개수를 초과하지 않은 범위 내에서 하나의 논리블록에 대응하여 적어도 하나의 물리블록이 매핑될 수 있다.
한편, 상술한 바 있는 합병연산은, 한 개의 논리 블록에 매핑된 물리 블록의 수가 상기 수학식에 의한 개수를 초과할 경우, 프리 블록이 한 개 존재하고 추가로 로그 블록을 추가적으로 매핑해야 할 경우, 그리고 프리 블록이 한 개 존재하고 데이터 블록이 필요할 경우에 발생한다. 다시 말하면, 프리블록이 한 개 존재하는 경우에 추가로 물리블록을 추가해야 하는 경우는 물리블록을 추가하게 되면 프리블록이 전혀 존재하지 않게 되어 프리블록의 부족이 예상되기 때문이다.
한 개의 논리 블록에 매핑된 물리 블록의 수가 상기 수학식에 의한 개수를 초과할 경우에는, 지우기 연산 횟수가 가장 작은 프리 블록을 선택하여 새로운 데이터 블록으로 매핑하고, 종래의 매핑된 물리블록들의 유효 데이터를 상기 새로운 데이터 블록의 제1위치에 대한 쓰기 연산을 수행하는 방법으로 합병연산이 수행된다. 이는 도 7에서 예를 들어 설명한다.
프리 블록이 한 개 존재하고 로그 블록을 추가적으로 매핑해야 할 경우에는 물리 블록이 2개 이상 매핑된 논리 블록 중에서 희생될 블록을 선택한다. 희생될 블록을 선택하는 방법은 두 가지가 존재한다. 만약 오직 성능만을 생각한다면, 논리 블록에 매핑된 물리 블록의 수가 가장 많은 것을 선택하면 된다.
만약 마모도 평준화(wear leveling)를 고려했을 때는 각 논리 블록에 매핑된 물리 블록들의 지우기 연산 횟수의 합을 구하여 이 값이 가장 작은 논리 블록을 선택하게 된다. 논리 블록에 매핑된 물리 블록들의 지우기 연산 횟수의 합은 플래시 메모리 시스템의 램(RAM)에 유지 될 수 있다.
프리 블록이 한 개밖에 존재하지 않지만 새로운 데이터 블록을 할당해야 될 경우는 프리 블록이 한 개 존재하고 로그 블록을 추가적으로 매핑해야 할 경우와 같은 방법으로 합병 연산을 수행하면 된다.
상술한 바와 같이, 본 발명은 블록 매핑 테이블을 동적으로 할당하여 플래시 메모리의 저장공간을 효율적으로 사용하게 된다. 여기서 동적으로 할당한다는 것은 블록 매핑 테이블에 처음부터 논리 블록과 물리 블록을 매핑해놓지 않고 쓰기 연산이 들어오는 순서대로 논리 블록과 물리 블록을 매핑한다는 것을 의미한다.
이하 도 6 내지 도 7의 예를 통해, 본 발명에 따른 데이터 쓰기연산방법 및 매핑방법을 설명한다. 이하에서는 이해의 편의 및 설명의 편의를 위해 블록당 섹터수가 4 인 것으로 가정한다. 또한 하나의 논리블록에 대하여 매핑될 수 있는 물리블록의 개수는 2개라고 가정한다. 도 6은 데이터 쓰기연산방법 및 매핑방법을 예로 들어 나타낸 것이고, 도 7은 합병연산의 예를 나타낸 것이다.
도 6(i)에 도시된 바와 같이, 데이터 쓰기 연산을 위해, 쓰기연산요청으로 논리섹터번호(LSN) 및 데이터가 입력된다. 도 6(i)에서 'w'는 쓰기연산을, 숫자 는 상기 논리섹터번호(LSN)를, 'D'는 데이터를 의미한다.
상기 논리섹터번호(LSN)가 입력되면, 상기 논리섹터번호(LSN)를 한 블록이 지니고 있는 섹터의 수(4)로 나눈다. 나눈 결과의 몫은 논리블록번호(LBN)를 의미하고, 나머지는 논리섹터오프셋(LSO)을 의미한다.
쓰기 연산이 한 번도 수행되지 않은 경우 플래시 메모리의 물리블록들은 도 6(a)에 도시된 바와 같이 모두 빈 블록으로 나타난다.
①의 쓰기연산(W5,D6)에서는 먼저 논리섹터번호(LSN) 5를 한개의 블록이 지닌 섹터수인 4로 나눈다. 이때 몫은 1이며 나머지 값은 1이다. 즉 논리블록번호(LBN)은 1이 되고 논리섹터오프셋(LSO)는 1이 된다.
이 경우 논리블록 1번과 매핑된 물리블록이 없으므로, 프리블록들 중에서 새로운 물리블록을 매핑한다. 이때 새로운 물리블록의 매핑은 지우기 연산횟수(ECN)가 가장 작은 프리블록을 선택한다. 상기 지우기 연산의 횟수(ECN)는 블록의 한 섹터 영역에 저장될 수 있다. 도 6(a)의 경우에는, 지우기 연산횟수(ECN)가 모두 동일하므로, 임의의 프리블록(예를 들면, 물리블록 0번(PBN 0))을 선택하여 도 6(b)와 같이 매핑테이블을 작성하게 된다.
그리고, ①의 논리섹터오프셋(LSO)와 동일한 물리블록 0번(PBN 0)에 물리섹터오프셋(PSO)에 미리 저장된 데이터가 없으므로, 물리블록0번(PBN 0)의 물리섹터오프셋 1번의 위치에 데이터(D5)의 쓰기 연산을 수행한다. 이때는 데이터(D5)가 제1위치에 쓰여진 것이므로 상기 물리블록 0번은 데이터 블록이 되고 이를 표시하는 플래그인 블록상태정보가 상기 물리블록의 여분영역, 별도의 메모리(RAM)영역, 또는 메타(meta)영역에 저장되게 된다. 이때의 블록상태정보를 데이터가 제위치(in-place)에 쓰여졌다는 의미의 'I'로 표시하기로 한다. 도 6(b)에서는 블록의 여분영역에 저장된 것으로 표시하고있다.
도 6(b)에 도시된 바와 같이, 상술한 동일한 방식에 의해, ②번의 경우는 물리블록 0번(PBN0)의 물리섹터오프셋 3의 위치에 데이터(D7)가 저장되고, ③번의 경 우는 물리블록 1번(PBN1)의 물리섹터오프셋 0의 위치에 데이터(D12)가 저장되고, ④번의 경우는 물리블록 1번(PBN1)의 물리섹터오프셋 1의 위치에 데이터(D13)이 저장되게 된다. 이때 도 6(d)에 도시된 바와 같이, 물리블록 1번(PBN1)은 논리블록 3번(LBN3)에 대응하여 매핑된 것이며, 상기 물리블록 1번(PBN1)은 모든 데이터가 제1위치에 저장되어 있으므로 데이터 블록으로써 블록상태정보 'I'가 여분영역에 저장되게 된다.
이후 ⑤번의 시점에서는, 논리섹터번호(LSN) 5번을 한 개의 블록이 지닌 섹터수인 4로 나누면 ①의 경우와 같이 몫이 1이며, 나머지가 1이다. 논리블록 1번(PBN1)과 매핑된 물리블록 0번(PBN0)의 물리섹터오프셋 1의 위치에 데이터가 이미 존재한다. 따라서 논리블록 1번(PBN1)과 매핑된 물리블록 0번(PBN0)을 로그블록으로 사용한다는 의미 즉 제2위치에 데이터를 저장한다는 의미의 블록상태정보를 변경 저장한다. 이때는 다른 위치(out of place)에 저장된다는 의미로 'O'로써 표시하기로 한다. 그리고, 상기 물리블록 0번(PBN0)의 임의의 빈 섹터에 상기 데이터(D5)를 저장하게 된다. 이때는 해당섹터의 여분영역에 해당 논리섹터번호(LSN)인 '5'를 저장하여 데이터 읽기 연산시 검색이 가능하도록 한다. 이때 빈 섹터들 중 데이터를 저장한 섹터의 선택은 순차적으로 수행될 수 있다. 여기서는 물리블록0번(PBN0)의 첫 번째 빈섹터인 물리섹터오프셋 0의 위치헤 데이터(D5)를 저장하게 된다.
도 6(e)에 도시된 바와 같이, ⑥번의 경우는 ⑤번의 경우와 동일하게 제2위 치인 물리블록 0번(PBN0)의 물리섹터오프셋 2의 위치에 데이터(D7)가 저장되고, ⑦번의 경우는 물리블록 1번(PBN1)의 물리섹터오프셋 2의 위치에 데이터(D14)가 저장되고, ⑧번의 경우는 물리블록 1번(PBN1)의 물리섹터오프셋 3의 위치에 데이터(D15)가 저장되게 된다. 상기 ⑦번 및 ⑧번의 경우는 제1위치에 데이터가 저장된다.
⑨번의 경우에는, 물리 블록 0번(PBN0)이 로그블록으로써 모든 섹터에 데이터가 저장되어 있다. 이때는 논리블록 1번(LBN0)과 매핑된 물리블록의 수가 1개이므로, 가장 지우기 연산횟수(ECN)가 작은 프리블록을 선택하여 로그블록으로 추가적으로 할당한다. 도 6의 경우에는 지우기 연산 횟수(ECN)이 모두 동일하므로 임의의 프리블록인 물리블록 2번(PBN2)를 상기 논리블록 1번(LBN0)에 대응되는 물리블록으로 매핑하고 도 6(f)에 도시된 바와 같이 매핑테이블에 저장한다. 그리고 물리블록2번(PBN2)의 빈 섹터인 논리섹터 오프셋 0의 위치인 제2위치에 데이터(D5)를 저장한다. 물론 이 경우도 상기 물리블록 2번(PBN2)의 논리섹터 오프셋 0의 섹터 여분영역에 논리섹터번호(LSN) 5를 데이터 저장정보로써 저장하게 된다.
도 6(g)에 도시된 바와 같이, ⑩번의 경우는 ⑨번의 경우와 같이 제2위치인 물리블록 2번(PBN2)의 물리섹터오프셋 1의 위치에 데이터(D7)가 저장되고, ⑪번의 경우는 물리블록 2번(PBN2)의 물리섹터오프셋 2의 위치에 데이터(D5)가 저장된다. 상기 ⑩번 및 ⑪번의 경우 모두 제2위치에 데이터가 저장된다.
⑫번의 시점은 논리블록 1번(LBN1)과 매핑된 두 개의 물리블록(PBN0,PBN2)이 데이터로 꽉 찬 상태이다. 이 때 논리블록 1번(LBN1)에 대한 또 한번의 쓰기 연산요청이 발생하면, 한 개의 논리 블록이 지닐 수 있는 물리블록의 수가 수학식에 의해 2개로 가정하였으므로, 도 7과 같이 합병 연산이 수행되게 된다.
도 7(a)에 도시된 바와 같이, ⑬번에 의해 논리블록1번(LBN1)에 대한 쓰기연산이 발생되면, 합병연산이 필요하게 된다. 이때 논리블록 1번(LBN1)에 매핑된 물리 블록은 물리블록 0번(PBN0)과 물리블록 2번(PBN2)이다.
합병연산을 위해서 우선적으로 지우기 연산횟수(ECN)가 가장 작은 프리 블록을 선택하여 새로운 데이터 블록으로 매핑한다. 그리고, 물리블록 0번(PBN0)과 물리블록 2번(PBN2)에 저장된 데이터 중에서 유효한 데이터를 상기 새로운 데이터 블록에 저장한다. 도 7(a)에서 물리 블록 0번(PBN0)과 2번(PBN2)의 유효 데이터가 저장된 섹터는 ⑫번의 쓰기연산에 의해 물리블록 2번(PBN2)의 논리섹터 오프셋 3의 위치에 저장된 데이터(D7) 뿐이다.
상기 새로운 데이터 블록을 물리블록 3번(PBN3)로 할 경우에, ⑫번 데이터(D7)의 제1위치인 상기 물리블록 3번(PBN3)의 물리섹터오프셋 3의 위치에 상기 ⑫번 데이터(D7)가 저장되게 된다. 또한 ⑬번에 따른 데이터(D5)가 제1위치인 물리블록 3번(PBN3)의 물리섹터오프셋 1의 위치에 저장되게 된다.
이때 도 7(c)에 도시된 바와 같이, 합병연산이 수행된 물리 블록 0번(PBN0)과 2번(PBN2)은 지우기 연산이 수행되어 프리블록이 된다. 또한 도 7(d)에 도시된 바와 같이, 매핑테이블에서 논리블록1번(LBN1)에 매핑되는 물리블록은 물리블록3 번(PBN3)으로 변경되게 된다. 또한 물리블록 3번은 데이터 블록이므로 블록상태정보 또한 'I'로 변경되게 된다.
도 8은 본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 읽기 연산의 동작순서도이다.
도 8에 도시된 바와 같이, 데이터 읽기 연산을 위해서는 논리섹터번호(LSN)이 입력된다(S90). 상기 논리섹터번호(LSN)을 통해 논리블록번호(LBN)을 구한다. 다음으로, 상기 논리블록번호(LBN)에 매핑된 물리블록번호(PBN)를 매핑테이블을 통해 확인하고, 해당 물리블록의 블록상태정보를 확인한다(S91). 상기 블록상태정보를 통해 해당 물리블록이 데이터 블록인지 로그 블록인지 확인한다(S92).
상기 물리블록이 데이터 블록인 경우(데이터 블록)에는 제1위치 즉 논리섹터오프셋과 물리섹터오프셋이 일치하는 위치의 데이터를 읽는다(S97).
그러나 상기 물리블록이 로그블록인 경우에는(로그블록), 섹터매핑테이블이 존재하는 지 판단한다(S93). 섹터매핑테이블이 존재하는 경우에는 섹터매핑테이블을 통해 해당 섹터의 데이터를 읽는다(S96).
처음부터 섹터매핑테이블이 존재하지 않거나 섹터매핑 테이블이 작성되지 않은 경우, 또는 섹터매핑테이블을 활용할 수 없는 경우에는(No), 상기 논리블록에 대응하여 매핑된 물리블록 중 가장나중에 매핑된 물리블록의 섹터들부터 순차적으로 검색을 수행한다(S94). 상기 검색은 섹터 여분영역에 저장된 데이터 저장정보(예를 들면, 논리섹터번호)를 검색하게 된다(S95). 상기 섹터 여분영역에 저장된 데이터 저장정보를 통해 해당 논리섹터번호와 동일한 논리섹터번호가 검색되면, 해 당 섹터의 데이터를 읽게 된다(S98).
상기 검색을 통한 읽기 연산은 지우기 연산시간을 초과하지 않는 범위내에서 일어나기 때문에 플래시 메모리의 성능에 크게 영향을 주지 않는다.
상술한 설명에서 지우기 연산횟수, 블록상태정보, 및 데이터저장정보는 해당 플래시 메모리의 메타(meta)영역, 섹터의 여분영역, 기타 여분영역 및 별도의 메모리 영역(예를 들면 RAM) 중에서 선택된 적어도 하나의 영역에 저장될 수 있다.
상술한 본 발명의 실시예는 소블록 플래시 메모리의 경우를 예로 하여 설명하고 있지만, 블록의 크기와 한 섹터의 크기에 따른 영향을 받지 않으므로, 소블록 플래시메모리 뿐 아니라 대블록 플래시 메모리에도 당연히 적용됨은 본 발명이 속하는 기술분야의 통상의 지식을 가진 자에게 명백하다. 본 발명이 속하는 기술분야의 통상의 지식을 가진 자에게 잘 알려진 바와 같이, 상기 소블록 플래시 메모리는 논리적 연산 단위와 물리적 연산 단위가 동일한 반면, 대블록 플래시 메모리는 논리적 연산 단위에 비하여 물리적 연산 단위가 큰 특징을 가진다.
본 발명에 따르면, 플래시 메모리의 지우기 연산을 효과적으로 줄일 수 있으며, 고성능의 플래시 메모리 시스템을 구현할 수 있게 된다. 또한, 플래시 메모리의 저장공간을 효율적으로 관리하여 플래시 메모리 효율성을 높일 수 있으며, 마모도 평준화 기법에 효율적으로 대응할 수 있게 된다.
상기한 실시예의 설명은 본 발명의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 발명을 한정하는 의미로 해석되어서는 안될 것이 다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다.
도 1은 도 1에 일반적인 플래시 메모리 시스템의 블록도이고,
도 2 내지 도 4는 종래의 매핑방법 및 연산방법을 나타낸 도면들이고,
도 5는 본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 쓰기연산 및 매핑방법을 나타낸 동작순서도이고,
도 6 내지 도 7은 도 5의 예인 데이터 쓰기연산, 매핑방법, 합병연산을 나타낸 도면들이고,
도 8은 본 발명의 일 실시예에 따른 플래시 메모리에서의 데이터 읽기 연산의 동작순서도이다.
*도면의 주요 부분에 대한 부호의 설명*
LSN : 논리섹터번호 LBN : 논리블록번호
PBN : 물리블록번호 ECN : 지우기 연산 횟수

Claims (22)

  1. 플래시 메모리에서의 데이터 쓰기연산방법에 있어서:
    논리블록정보, 논리섹터정보, 및 데이터가 제공되는 단계와;
    상기 논리블록정보에 대응하여 적어도 하나의 물리블록이 매핑되되, 상기 적어도 하나의 물리블록은 현재상태의 지우기 연산정보를 토대로 하여 복수의 프리블록들 중에서 선택되어 동적으로 매핑되는 단계와;
    우선적으로는 상기 적어도 하나의 물리블록 내의 논리오프셋과 물리오프셋이 일치되는 영역인 제1위치에 상기 데이터를 저장하고, 상기 제1위치에 데이터가 이미 저장되어 있는 경우에는 상기 논리오프셋과 상기 물리오프셋이 일치되지 않는 임의의 빈 영역인 제2위치에 상기 데이터를 저장하는 단계를 구비함을 특징으로 하는 데이터 쓰기연산방법.
  2. 청구항 1에 있어서,
    상기 지우기 연상정보는 해당블록에 대한 지우기 연산횟수정보를 포함하며, 상기 적어도 하나의 물리블록의 선택은 지우기 연산횟수가 가장 적은 프리블록 순으로 수행됨을 특징으로 하는 데이터 쓰기연산방법.
  3. 청구항 2에 있어서,
    상기 지우기 연산정보는 상기 적어도 하나의 물리블록의 여분섹터영역, 메타블록영역, 및 별도의 메모리 영역 중에서 선택된 적어도 하나의 영역에 저장됨을 특징으로 하는 데이터 쓰기연산방법.
  4. 청구항 1 또는 청구항 3에 있어서,
    상기 논리블록정보에 대응하여 하나의 논리블록에 대하여 매핑되는 상기 물리블록의 수는 연산식"지우기 연산 시간(㎳)/읽기 연산시간(㎲)/블록당 섹터수"의 연산을 통해 얻어진 몫의 값을 초과하지 않음을 특징으로 하는 데이터 쓰기연산방법.
  5. 청구항 4에 있어서,
    상기 논리블록정보 및 논리섹터정보는 논리섹터번호(LSN)를 통해 제공되며, 상기 제2위치에 데이터가 저장된 경우에는, 상기 제2위치에 저장된 데이터에 대응되는 논리섹터번호를 데이터 저장정보로써 상기 제2위치의 여분영역에 저장하여 읽기연산시 검색되도록 하는 단계를 더 포함함을 특징으로 하는 데이터 쓰기연산방법.
  6. 청구항 4에 있어서,
    상기 논리오프셋은 논리섹터오프셋 또는 논리 페이지 오프셋이며, 상기 물리오프셋은 물리섹터오프셋 또는 물리페이지오프셋임을 특징으로 하는 데이터 쓰기연산 방법.
  7. 청구항 6에 있어서,
    상기 적어도 하나의 물리블록은 데이터가 모두 제1위치에 저장되는 데이터블록과, 제2위치에 저장된 데이터가 적어도 하나 존재하는 로그블록으로 구분되며, 상기 적어도 하나의 물리블록의 여분영역에는 상기 적어도 하나의 물리블록이 상기 데이터 블록인지 상기 로그블록인지 여부를 표시하는 블록상태정보가 저장됨을 특징으로 하는 데이터 쓰기 연산방법.
  8. 청구항 7에 있어서,
    상기 제1위치 또는 상기 제2위치에 데이터를 저장하는 단계이후에, 한 개의 논리블록에 대하여 매핑된 물리블록의 수가 상기 연산식에 의한 물리블록의 수를 초과하는 경우 또는 프리블록의 부족이 예상되는 경우에 합병연산을 수행하는 단계를 더 구비함을 특징으로 하는 데이터 쓰기연산방법.
  9. 청구항 8에 있어서,
    상기 프리블록의 부족이 예상되는 경우는, 프리블록이 한 개 존재하고 로그블록을 추가적으로 매핑해야하는 경우, 또는 프리블록이 한 개 존재하고 데이터 블록이 추가로 필요한 경우를 포함함을 특징으로 하는 데이터 쓰기 연산방법.
  10. 청구항 8에 있어서,
    상기 합병연산은, 하나의 논리블록에 대응하여 매핑된 적어도 두 개의 물리블록들의 유효데이터를 임의의 프리블록을 선택하여 저장하고, 상기 적어도 두 개의 물리블록들은 프리블록이 되도록 지우기 연산을 수행함을 특징으로 하는 데이터 쓰기 연산방법.
  11. 청구항 10에 있어서,
    상기 합병연산시 프리블록의 선택은 지우기 연산횟수가 가장 작은 프리블록이 선택됨을 특징으로 하는 데이터 쓰기 연산방법.
  12. 청구항 10에 있어서,
    상기 합병연산의 대상이 되는 적어도 두 개의 물리블록들의 선택은, 하나의 논리블록에 대하여 매핑된 물리블록의 수가 가장 많은 순서 또는 해당물리블록들의 지우기 연산횟수의 합이 가장 작은 순서로 선택됨을 특징으로 하는 데이터 쓰기 연산방법.
  13. 청구항 1에 있어서,
    상기 플래시 메모리는, 논리적 연산 단위와 물리적 연산 단위가 동일한 소블록 플래시 메모리 또는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 저장용량을 가지는 대블록(large block) 플래시 메모리임을 특징으로 하는 데이터 쓰기 연산방법.
  14. 플래시 메모리에서의 데이터 쓰기연산방법에 있어서:
    논리섹터번호 및 데이터가 제공되는 단계와;
    제공되는 논리섹터번호를 통해 논리블록번호를 확인하고, 상기 논리블록번호에 대응하여 매핑된 물리블록의 존재여부를 확인하는 단계와;
    매핑된 물리블록이 존재하는 경우에는, 우선적으로는 해당 물리블록의 논리오프셋과 물리오프셋이 일치되는 영역인 제1위치에 상기 데이터를 저장하고, 상기 제1위치에 데이터가 이미 저장되어 있는 경우에는 상기 논리오프셋과 상기 물리오프셋이 일치되지 않는 임의의 빈 영역인 제2위치에 상기 데이터를 저장하며,
    매핑된 물리블록이 존재하지 않는 경우에는, 현재상태의 지우기 연산정보를 토대로 하여 복수의 프리블록들 중에서 하나의 물리블록을 선택하여 동적으로 매핑하고, 상기 제1위치 또는 상기 제2위치에 상기 데이터를 저장하는 단계를 구비함을 특징으로 하는 데이터 쓰기연산방법.
  15. 플래시메모리에서의 블록매핑방법에 있어서:
    하나의 논리블록에 대하여 적어도 하나의 물리블록을 대응시켜 매핑함에 있어, 상기 적어도 하나의 물리블록은 데이터 쓰기연산을 수행할 때, 현재상태의 지우기연산정보를 토대로 하여 복수의 프리블록들 중에서 선택되어 동적으로 매핑됨을 특징으로 하는 플래시 메모리에서의 블록매핑방법.
  16. 청구항 15에 있어서,
    상기 지우기 연상정보는 해당블록에 대한 지우기 연산횟수정보를 포함하며,상기 적어도 하나의 물리블록의 선택은 지우기 연산이 가장 적은 프리블록 순으로 수행됨을 특징으로 하는 플래시 메모리에서의 블록매핑방법.
  17. 청구항 16에 있어서,
    상기 지우기 연산정보는 블록의 여분섹터영역, 메타블록영역, 및 별도의 메모리 영역 중에서 선택된 어느 하나의 영역에 저장됨을 특징으로 하는 플래시 메모리에서의 블록매핑방법.
  18. 청구항 15 또는 청구항 17에 있어서,
    상기 하나의 논리블록에 대응하여 매핑되는 상기 적어도 하나의 물리블록의 수는 "지우기 연산 시간(㎳)/읽기연산시간(㎲)/블록당 섹터수"의 연산을 통해 얻어진 몫의 값을 초과하지 않음을 특징으로 하는 플래시 메모리에서의 블록매핑방법.
  19. 플래시 메모리에서의 데이터 읽기연산방법에 있어서:
    제공되는 논리섹터번호를 통해 논리블록번호를 확인하고, 상기 논리블록번호에 대응하여 매핑된 적어도 하나의 물리블록을 확인하고, 상기 적어도 하나의 물리블록의 여분영역에 저장된 플래그 정보를 통해 상기 적어도 하나의 물리블록이 로그블록인지 데이터 블록인지 확인하는 단계와;
    상기 적어도 하나의 물리블록이 상기 데이터 블록인 경우에는 상기 논리섹터번호를 통해 제공되는 논리오프셋과 일치되는 물리오프셋 영역의 데이터를 읽어오 고,
    상기 적어도 하나의 물리블록이 상기 로그블록이고 섹터매핑테이블이 존재하는 경우에는 상기 섹터매핑테이블에 따라 해당되는 섹터의 데이터를 읽어오고,
    상기 적어도 하나의 물리블록이 상기 로그블록이고 섹터매핑테이블이 존재하지 않는 경우에는, 데이터가 저장된 섹터의 여분영역에 저장된 논리섹터번호를 검색하여 해당섹터의 데이터를 읽어오는 단계를 구비함을 특징으로 하는 데이터 읽기 연산방법.
  20. 청구항 19에 있어서,
    상기 데이터 블록은 논리오프셋과 물리오프셋이 일치하는 영역에 모든 데이터가 저장된 물리블록이며, 상기 로그블록은 적어도 하나의 데이터가 논리오프셋과 물리오프셋이 일치하지 않는 영역에 저장된 물리블록임을 특징으로 하는 데이터 읽기 연산방법.
  21. 청구항 20에 있어서,
    상기 적어도 하나의 물리블록이 상기 로그블록이고 섹터매핑테이블이 존재하지 않는 경우에의 데이터의 읽기연산을 검색은, 시간적으로 가장 나중에 매핑된 물리블록의 섹터들부터 수행됨을 특징으로 하는 데이터 읽기 연산방법.
  22. 플래시메모리에서의 블록매핑방법에 있어서:
    하나의 논리블록에 대응하여 적어도 하나의 물리블록을 매핑하되, 상기 적어도 하나의 물리블록의 수는 "지우기 연산 시간(㎳)/읽기연산시간(㎲)/블록당 섹터수"의 연산을 통해 얻어진 몫의 값을 초과하지 않음을 특징으로 하는 플래시 메모리에서의 블록매핑방법.
KR1020080050356A 2008-05-29 2008-05-29 플래시메모리의 데이터 연산 및 매핑방법 KR101004102B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080050356A KR101004102B1 (ko) 2008-05-29 2008-05-29 플래시메모리의 데이터 연산 및 매핑방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080050356A KR101004102B1 (ko) 2008-05-29 2008-05-29 플래시메모리의 데이터 연산 및 매핑방법

Publications (2)

Publication Number Publication Date
KR20090124257A true KR20090124257A (ko) 2009-12-03
KR101004102B1 KR101004102B1 (ko) 2010-12-27

Family

ID=41686211

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080050356A KR101004102B1 (ko) 2008-05-29 2008-05-29 플래시메모리의 데이터 연산 및 매핑방법

Country Status (1)

Country Link
KR (1) KR101004102B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101626218B1 (ko) * 2014-11-21 2016-06-13 한양대학교 산학협력단 블록 기반의 페이지 매핑 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101626218B1 (ko) * 2014-11-21 2016-06-13 한양대학교 산학협력단 블록 기반의 페이지 매핑 방법

Also Published As

Publication number Publication date
KR101004102B1 (ko) 2010-12-27

Similar Documents

Publication Publication Date Title
US10545863B2 (en) Memory system and method for controlling nonvolatile memory
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US9471500B2 (en) Bucketized multi-index low-memory data structures
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
KR100857761B1 (ko) 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US7516295B2 (en) Method of remapping flash memory
US20080189490A1 (en) Memory mapping
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
JP2019057172A (ja) メモリシステムおよび制御方法
US9436615B2 (en) Optimistic data read
US9892034B2 (en) Semiconductor device and operating method thereof
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
CN104102591A (zh) 计算机子系统及在其中实现闪存转换层的方法
US8521947B2 (en) Method for writing data into flash memory
TW201301030A (zh) 在一記憶體裝置中減少次要位址表檢查之快速轉譯指示器
KR20070046864A (ko) 플래쉬 화일 시스템에서 가상-물리 주소 변환 방법 및시스템
CN107817945B (zh) 一种混合内存结构的数据读取方法和系统
KR20150142583A (ko) 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
US20150220433A1 (en) Method for managing flash memories having mixed memory types using a finely granulated allocation of logical memory addresses to physical memory addresses
CN108073359B (zh) 数据储存装置的操作方法
KR20120074707A (ko) 플래시 메모리를 사용하는 저장장치 및 주소 사상과 데이터 페이지 할당 방법
Kwon et al. An efficient and advanced space-management technique for flash memory using reallocation blocks
KR101004102B1 (ko) 플래시메모리의 데이터 연산 및 매핑방법
KR20100022811A (ko) 플래시메모리 저장장치 및 그에 따른 관리 방법
Ryu A flash translation layer for NAND flash-based multimedia storage devices

Legal Events

Date Code Title Description
A201 Request for examination
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: 20131004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140918

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 7