KR100801072B1 - 플래시 메모리, 이를 위한 맵핑 장치 및 방법 - Google Patents

플래시 메모리, 이를 위한 맵핑 장치 및 방법 Download PDF

Info

Publication number
KR100801072B1
KR100801072B1 KR1020050092212A KR20050092212A KR100801072B1 KR 100801072 B1 KR100801072 B1 KR 100801072B1 KR 1020050092212 A KR1020050092212 A KR 1020050092212A KR 20050092212 A KR20050092212 A KR 20050092212A KR 100801072 B1 KR100801072 B1 KR 100801072B1
Authority
KR
South Korea
Prior art keywords
data
mapping
flash memory
block
block area
Prior art date
Application number
KR1020050092212A
Other languages
English (en)
Other versions
KR20070037022A (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 KR1020050092212A priority Critical patent/KR100801072B1/ko
Publication of KR20070037022A publication Critical patent/KR20070037022A/ko
Application granted granted Critical
Publication of KR100801072B1 publication Critical patent/KR100801072B1/ko

Links

Images

Classifications

    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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)

Abstract

본 발명은 플래시 메모리, 이를 위한 맵핑 장치 및 방법에 관한 것으로서, 더욱 상세하게는 맵핑 단위에 따라 서로 다른 맵핑 방법을 사용하는 플래시 메모리, 이를 위한 맵핑 장치 및 방법에 관한 것이다.
본 발명의 실시예에 따른 플래시 메모리의 맵핑 장치는, 플래시 메모리, 및 상기 플래시 메모리에 저장된 데이터 및 상기 데이터의 속성 맵핑을 위한 맵핑 정보 및 사용자가 상기 저장된 데이터에 접근하기 위한 맵핑 정보를 생성하고, 상기 생성된 맵핑 정보를 상기 플래시 메모리에 저장하는 제어부를 포함한다.
플래시 메모리, 맵핑, 메타 데이터, 맵핑 테이블

Description

플래시 메모리, 이를 위한 맵핑 장치 및 방법{Flash memory device, mapping apparatus and method for the same}
도 1은 일반적인 플래시 메모리의 구조가 도시된 도면.
도 2a는 일반적인 데이터 업데이트시 블록의 데이터를 메모리 버퍼로 복사하는 과정이 도시된 도면.
도 2b는 도 2a의 메모리 버퍼로 복사된 데이터를 업데이트 하는 과정이 도시된 도면.
도 2c는 도 2b의 메모리 버퍼의 데이터를 블록으로 복사하는 과정이 도시된 도면.
도 3은 일반적인 플래시 메모리의 페이지 맵핑 방법이 도시된 도면.
도 4는 일반적인 플래시 메모리의 블록 맵핑 방법이 도시된 도면.
도 5는 본 발명의 실시예에 따른 플래시 메모리의 구조가 도시된 도면.
도 6은 본 발명의 실시예에 따른 플래시 메모리의 맵핑 장치가 도시된 도면.
도 7은 본 발명의 실시예에 따른 맵핑 블록 영역의 구조가 도시된 도면.
도 8은 본 발명의 실시예에 따른 상향식 디렉토리 표현 기법이 도시된 도면.
도 9는 본 발명의 실시예에 따른 플래시 메모리의 맵핑 방법이 도시된 도면.
도 10은 본 발명의 실시예에 따라 부모 디렉토리에 대하여 상향식으로 표현 된 디렉토리가 도시된 도면.
<도면의 주요 부분에 관한 부호의 설명>
100: 플래시 메모리 210: 제어부
220: 제어부 230: 디바이스 드라이버
본 발명은 플래시 메모리, 이를 위한 맵핑 장치 및 방법에 관한 것으로서, 더욱 상세하게는 맵핑 단위에 따라 서로 다른 맵핑 방법을 사용하는 플래시 메모리, 이를 위한 맵핑 장치 및 방법에 관한 것이다.
일반적으로 가전 기기, 통신 기기, 셋탑 박스 등의 내장형 시스템(Embedded System)에서는 데이터를 저장하고 처리하기 위한 저장 매체로 비휘발성 메모리가 많이 사용되고 있다.
비휘발성 메모리는 데이터의 기록 및 삭제가 자유로운 RAM(Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 ROM(Read Only Memory)의 장점을 동시에 지니고 있다. 또한, 비휘발성 메모리 중에서 주로 사용되는 플래시 메모리는 전기적으로 데이터를 삭제하거나 다시 기록할 수 있는 비휘발성 기억 소자로서, 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비해 전력 소모가 적으면서도 하드 디스크와 같은 빠른 액세스 타임(Access Time)을 가지며 크기가 작기 때문에 휴대 기기 등에 적합하다.
또한, 플래시 메모리는 데이터의 관리를 위해 소정의 파일 시스템을 사용하고 있다. 이때, 플래시 메모리는 하드웨어적 특성상 하드 디스크와 달리 기존의 하드 디스크용 파일 시스템을 사용하지 못한다. 이를 위해 플래시 메모리에서는 FTL(Flash Translation Layer)을 사용하고 있으며, 이러한 FTL을 통해 플래시 메모리를 하드 디스크처럼 사용할 수 있어 기존의 하드 디스크용 파일 시스템을 그대로 사용할 수 있게 된다. 이때, 플래시 메모리에서 보다 최적화된 성능을 얻기 위해서는 FTL이 아닌 플래시 메모리를 직접 관리하는 전용 파일 시스템을 사용하는 것이 유리하며, 이러한 전용 파일 시스템으로는 JFFS 및 YAFFS 등이 사용되고 있다.
한편, 플래시 메모리는 하드웨어적 특성상 기존의 RAM이나 비휘발성 저장 장치 및 마그네틱 등과 마찬가지로 특정 위치에 저장된 데이터를 임의로 접근할 수 있지만, 데이터를 수정하거나 삭제하는 방법에 있어서는 기존의 저장장치와 다르게 블록(block)을 기본 단위로 하여 액세스가 이루어진다. 다시 말해서, 이전의 데이터를 수정 또는 삭제하고자 하는 경우, 해당 데이터를 포함하는 블록을 삭제한 후 데이터를 다시 기록해야 한다.
도 1은 일반적인 플래시 메모리의 구조가 도시된 도면이다.
도시된 바와 같이, 일반적인 플래시 메모리는 다수개의 블록(11, 12, 13)으로 이루어지며, 각 블록(11, 12, 13)은 다수의 페이지(11a, 12a, 13a)로 이루어진다. 이때, 각 블록(11, 12, 13)에 포함되는 페이지의 수 및 크기는 플래시 메모리 타입에 따라 고정되어 있으며, 블록의 개수는 플래시 메모리의 용량에 따라 변경된다. 이때, 플래시 메모리에 데이터를 기록할 경우에는 페이지 단위로 기록이 되며, 소정 페이지에 기록된 데이터를 업데이트할 경우에는 해당 페이지가 포함된 블록을 삭제한 후 데이터의 업데이트가 이루어지게 된다.
도 2a 내지 도 2c는 일반적인 플래시 메모리에 저장된 데이터를 업데이트하는 과정이 도시된 도면이다. 이때, 도 2a 내지 도2c는 플래시 메모리에서 데이터가 저장되는 소정 블록(21)을 포함하고 있으며, 해당 블록은 4개의 페이지(21a, 21b, 21c, 21d)로 이루어진 경우를 예를 들어 설명하기로 하며, 각 페이지(21a, 21b, 21c, 21d)는 그 순서에 따라 페이지 0, 페이지 1. 페이지 2, 페이지 3이라 칭하기로 한다. 또한, 각 페이지(21a, 21b, 21c, 21d)에 저장된 데이터를 1, 2, 3, 4라 칭하기로 한다.
도시된 바와 같이, 먼저 도 2a와 같이 소정 블록(21)의 각 페이지(21a, 21b, 21c, 21d)에 데이터 중 페이지 2에 저장된 데이터를 업데이트하고자 하는 경우, 해당 블록(21)에 저장된 데이터를 소정의 메모리 버퍼(22)로 이동시킨 다음, 도 2b와 같이 해당 블록(21)을 삭제하고, 메모리 버퍼(22)에서 페이지 2의 데이터를 업데이트한다. 다시 말해서, 페이지 2의 데이터인 2가 2'로 업데이트된다. 이후, 도 2c와 같이 메모리 버퍼(22)의 데이터를 삭제된 블록(21)에 다시 이동시키는 과정을 통해 해당 블록(21)의 데이터를 업데이트하게 된다.
이와 같이 플래시 메모리에서는 도 2a 내지 도 2c와 같이 데이터의 기록 전 삭제(Erase Before Write)로 인해 플래시 메모리에 기록된 데이터의 물리 주소(Physical Address)가 변경되어도 동일한 논리 주소(Logical Address)를 통해 접근할 수 있도록 맵핑 테이블(Mapping Table)을 통해 데이터를 관리하게 된다. 이러한 맵핑 테이블은 논리 주소와 물리 주소의 맵핑 이외에도 소정 블록에 대한 삭제가 집중적으로 이루어질 경우, 해당 블록에 대한 기록 제한 횟수를 초과하여 불량이 발생할 수 있기 때문에 모든 블록의 고른 사용을 위해서도 사용된다. 이때, 맵핑 테이블을 통해 맵핑 방법은 다시 맵핑 단위에 따라 페이지 맵핑과 블록 맵핑으로 나뉜다.
도 3은 일반적인 페이지 맵핑 방법이 도시된 도면이다.
도시된 바와 같이, 페이지 맵핑 방법은 플래시 메모리의 페이지 단위로 맵핑 테이블을 유지하여 논리 페이지 정보를 통해 물리 페이지의 접근을 가능하도록 하는 것이다. 예를 들어, 소정의 데이터에 대한 기록 요청과 함께 논리 페이지 번호가 9로 지정되면, 맵핑 테이블에서 논리 페이지 번호 9에 대응하는 물리 페이지 번호 6을 검색한다. 이후, 검색된 물리 페이지 번호6에 데이터를 기록하는 것이다. 이러한 페이지 맵핑 방법은 맵핑 테이블에서 데이터가 업데이트된 해당 페이지만을 업데이트하기 때문에 빠른 업데이트가 가능하다.
도 4는 일반적인 블록 맵핑 방법이 도시된 도면이다.
도시된 바와 같이, 블록 맵핑 방법은 플래시 메모리에서 블록 단위로 맵핑 테이블을 유지하여 논리 페이지 번호를 물리 페이지 번호로 변환시킨 후 논리 블록 정보와 오프셋 정보를 통해 물리 페이지에 접근을 가능하도록 하는 것이다. 예를 들어, 소정 데이터에 대한 기록 요청과 함께 논리 페이지 번호가 9로 지정되면, 논리 페이지 번호 9의 논리 블록 번호9/4=2를 구한 경우, 맵핑 테이블에서 논리 블록 번호를 구한다. 이후, 오프셋 1에 해당하는 페이지에 데이터를 기록하게 된다. 이 러한 블록 맵핑 방법은 블록 개수만큼의 맵핑 테이블만 있으면 되기 때문에 맵핑 테이블의 크기가 작기 때문에 작은 크기의 메모리로도 운용이 가능하게 된다.
그러나, 페이지 맵핑 방법은 전체 페이지 수만큼의 맵핑 테이블이 필요하며 파일 시스템을 사용하기 위한 메모리 소모가 커지게 되고, 블록 맵핑 방법은 필요한 메모리의 크기가 작은 반면, 빈번한 업데이트가 이루어질 경우 업데이트에 대한 효율성은 문제점이 있다.
한국 공개 특허 2002-0092487에서는 소정의 로그 블록을 할당하여 데이터 갱신 과정에서의 기록 연산이 요구되는 데이터를 로그 블록에 기록하도록 함으로써 데이터 갱신이 잦은 환경에서도 시스템의 성능이 저하되지 않도록 하는 플래시 메모리 관리 방법을 개시하고 있으나, 이는 데이터 블록에 기록된 데이터의 갱신시 로그 블록에 데이터를 기록하고 기록된 데이터를 데이터 블록에 이동시키는 것에 관한 것으로, 맵핑 테이블의 크기를 최소화하는 동시에 파일 시스템의 성능을 극대화하는 방안은 개시되고 있지 않다.
본 발명은 업데이트되는 빈도에 따라 서로 다른 맵핑 방법을 사용하여 파일 시스템의 성능을 극대화하고 맵핑 테이블의 크기를 최소화할 수 있는 플래시 메모리, 이를 위한 맵핑 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 플래시 메모리는, 소정의 데이터가 저장되는 데이터 블록 영역, 및 상기 데이터와 상기 데이터의 속성의 맵핑 및 사용자가 상기 저장된 데이터에 접근하기 위한 맵핑 정보를 저장하는 맵핑 블록 영역을 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 플래시 메모리의 맵핑 장치는, 플래시 메모리, 및 상기 플래시 메모리에 저장된 데이터 및 상기 데이터의 속성 맵핑을 위한 맵핑 정보 및 사용자가 상기 저장된 데이터에 접근하기 위한 맵핑 정보를 생성하고, 상기 생성된 맵핑 정보를 상기 플래시 메모리에 저장하는 제어부를 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 플래시 메모리의 맵핑 방법은, 플래시 메모리에 소정의 데이터가 저장되는 단계, 상기 저장된 데이터 및 상기 저장된 데이터의 속성 맵핑을 위한 맵핑 정보와 사용자가 상기 저장된 접근하기 위한 맵핑 정보를 생성하는 단계, 및 상기 생성된 맵핑 정보들을 상기 플래시 메모리에 저장하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태 로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범수를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 플래시 메모리, 이를 위한 맵핑 장치 및 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되 어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
일반적으로 플래시 메모리는 크게 소블록 플래시 메모리와 대블록 플래시 메모리로 나뉘어질 수 있다.
소블록 플래시 메모리는 논리적인 연산 단위와 물리적인 연산 단위가 동일한 반면, 대블록 플래시 메모리는 논리적인 연산 단위에 비하여 물리적인 연산 단위가 큰 특성을 가진다.
여기서, 논리적인 연산 단위는 흔히 섹터라 칭하며, 물리적인 연산 단위는 페이지라 칭한다. 논리적인 연산 단위는 사용자가 소정의 사용자 프로그램을 통해 데이터 연산을 요청하는 단위이고, 물리적인 연산 단위는 플래시 메모리에서 데이터 연산이 수행되는 단위이다.
또한, 소블록 플래시 메모리에서는 섹터와 페이지가 동일한 개념으로 사용될 수 있으며, 대블록 플래시 메모리에서는 다수의 섹터가 모여 하나의 페이지를 이룰 수 있다.
도 5는 본 발명의 실시예에 따른 플래시 메모리의 구조가 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 플래시 메모리는, 맵핑 블록 영역(110), 데이터 블록 영역(120) 및 프리 블록 영역(130)을 포함할 수 있으며, 각 영역(110, 120, 130)은 적어도 하나의 페이지를 포함하는 다수의 블록으로 이루어질 수 있다.
맵핑 블록 영역(110)은 데이터 블록 영역(120)에 존재하는 소정 데이터에 대한 데이터 속성, 예를 들어 해당 데이터의 데이터명, 데이터 크기 및 데이터 생성 날짜 등을 관리하기 위한 제 1맵핑 테이블을 포함하는 제 1맵핑 블록 영역(111) 및 사용자가 데이터 블록 영역(120)에 존재하는 소정 데이터에 접근하기 위한 제 2맵핑 테이블을 포함하는 제 2맵핑 블록 영역(112)을 포함할 수 있다. 이때, 본 발명의 실시예에서 맵핑 블록 영역(110)이 제 1맵핑 블록 영역(111) 및 제 2맵핑 블록 영역(112)로 나뉘어진 경우를 예를 들어 설명하고 있으나, 이는 본 발명의 이해를 돕기 위한 일 예에 불과한 것으로 이러한 제 1맵핑 블록 영역(111) 및 제 2맵핑 블록 영역(112)은 하드웨어적으로 통합되어 구성되거나 하드웨어적으로 별도로 구성될 수 있다.
본 발명의 실시예에서 데이터 블록 영역(120)에 존재하는 데이터는 소정 파일인 경우를 예를 들어 설명하기로 하며, 데이터 속성은 해당 파일에 대한 파일 속성, 예를 들어 파일명, 파일 크기 및 파일 생성 날짜 등을 포함할 수 있다.
또한, 본 발명의 실시예에서는 전술한 데이터 속성을 메타 데이터라 칭하기 로 한다. 이때, 메타 데이터는 데이터 속성 이외에도 해당 데이터에 대한 디렉토리 정보를 포함할 수 있다. 이러한 디렉토리 정보는 해당 데이터의 디렉토리 정보, 디렉토리 ID 및 해당 데이터의 부모 디렉토리 정보 등를 포함할 수 있으며, 디렉토리 정보는 후술할 상향식 디렉토리 표현 기법에서 보다 상세하게 살펴보기로 한다.
제 1맵핑 블록 영역(111)에 포함되는 제 1맵핑 테이블은 메타 데이터와 데이터 블록 영역(120)에 존재하는 데이터를 맵핑시키기 위한 맵핑 정보이고, 제 2맵핑 블록 영역(112)에 포함되는 제 2맵핑 테이블은 데이터 블록 영역(120)에 존재하는 데이터에 접근하기 위한 맵핑 정보로 이해될 수 있다.
제 1맵핑 테이블은 데이터 블록 영역(120)에 존재하는 데이터에 대한 메타 데이터와 해당 데이터의 맵핑을 위한 것으로 데이터 블록 영역(120)에 존재하는 데이터들에 비하여 잦은 업데이트가 필요하게 된다. 예를 들어, 동일한 데이터인 경우에도 해당 데이터의 데이터 명 및 생성 날짜 등은 빈번하게 달라질 수 있다. 따라서, 메타 데이터는 데이터 블록 영역(120)에 존재하는 데이터의 업데이트에 비하여 잦은 업데이트를 하게 된다. 따라서, 제 1맵핑 테이블은 전술한 페이지 맵핑 방법 및 블록 맵핑 방법 중 잦은 업데이트에 유리한 페이지 맵핑 방법을 사용하게 된다. 이러한 페이지 맵핑 방법은 맵핑 단위과 데이터의 읽기/쓰기 단위가 동일하기 때문에 빠른 업데이트가 가능한 반면, 페이지 단위로 맵핑이 이루어지기 때문에 맵핑 테이블의 크기가 커지는 경우가 발생하게 되는데, 본 발명의 실시예에 따른 제 1맵핑 테이블은 데이터 블록 영역(120)에 존재하는 데이터의 메타 데이터의 맵핑을 위해 사용되기 때문에 페이지 맵핑 방법을 사용하는 경우에도 맵핑 테이블의 크기 가 크게 증가되지 않으므로 페이지 맵핑 방법을 사용할 수 있는 것이다.
한편, 제 2맵핑 테이블은 사용자가 데이터 블록 영역(120)에 존재하는 소정의 데이터에 접근하기 위해 논리 주소와 물리 주소를 맵핑하는 맵핑 정보로 데이터 블록 영역(120)에 존재하는 데이터는 메타 데이터에 비하여 상대적으로 업데이트가 적기 때문에 제 2맵핑 테이블은 페이지 맵핑 방법 및 블록 맵핑 방법 중 맵핑 테이블의 크기를 줄일 수 있는 블록 맵핑 방법이 사용될 수 있다.
이와 같이, 잦은 업데이트가 필요한 제 1맵핑 테이블을 페이지 맵핑 방법을 통해 관리하고, 블록 크기의 감소가 필요한 제 2맵핑 테이블을 블록 맵핑 방법을 통해 관리하기 때문에 전체적으로 업데이트 속도와 맵핑 테이블의 크기를 감소시킬 수 있다.
데이터 블록 영역(120)은 소정의 데이터가 저장될 수 있는 적어도 하나 이상의 페이지를 포함하는 다수의 블록을 포함할 수 있으며, 이러한 데이터 블록 영역(120)에 존재하는 데이터는 제 2맵핑 테이블에 의해 관리될 수 있다.
프리 블록 영역(130)은 블록 맵핑 방법 등에서 데이터 업데이트시, 업데이트될 데이터가 복사되는 빈 영역으로 이해될 수 있다.
도 6은 본 발명의 실시예에 따른 플래시 메모리의 맵핑 장치가 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 플래시 메모리의 맵핑 장치는, 사용자가 소정의 데이터 연산 요청을 입력하는 사용자 입력부(210), 입력된 데이터 연산 요청에 따른 데이터 연산을 플래시 메모리(100)에서 수행하는 제어부(220) 및 제어부(220)의 제어에 따라 플래시 메모리(100)에서의 데이터 연산을 실제로 수행하는 디바이스 드라이버(230)를 포함할 수 있다. 이때, 도 6의 플래시 메모리(110)의 구조는 전술한 도 5의 플래시 메모리의 구조와 동일하다.
이때, 제어부(220)는 전술한 FTL 및 플래시 메모리를 위한 전용 파일 시스템을 포함할 수 있으며, 전술한 메타 데이터, 제 1맵핑 테이블 및 제 2맵핑 테이블을 생성하여 플래시 메모리(100)의 맵핑 블록 영역(110)에서 제 1맵핑 블록 영역(111) 및 제 2맵핑 블록 영역(112)에 각각 생성된 제 1맵핑 테이블 및 제 2맵핑 테이블을 저장할 수 있다. 또한, 생성된 메타 데이터 또한 제 1맵핑 블록 영역(111) 및 제 2맵핑 블록 영역(112) 등에 저장되거나 별도의 블록에 저장될 수 있으나, 이에 한정되지 않고 플래시 메모리(100) 타입에 따라 메타 데이터가 저장되는 블록은 변경될 수 있다.
도 7은 본 발명의 실시예에 따른 제 1맵핑 블록 영역(111)의 구조가 도시된 도면이다. 이때, 도 7에 도시된 제 1맵핑 블록 영역(111)은 제 1맵핑 블록 영역(111)에 포함된 다수의 블록 중 소정 블록이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 제 1맵핑 블록 영역(111)은 블록 헤더(111a), 블록 번호(111b), 각 데이터에 대한 디렉토리 정보(111c) 및 해당 디렉토리 정보에게 부여된 고유의 ID(111d)를 포함할 수 있다.
이때, 디렉토리 정보(111c)는 소정 데이터에 대한 디렉토리 정보 및 소정 데이터의 부모 디렉토리 정보를 포함할 수 있다. 구체적으로, 표 1에 도시된 바와 같이, 디렉토리 정보(111c)는 소정 데이터의 디렉토리 엔트리 번호, 이름 및 부모 디 렉토리 엔트리 번호를 포함할 수 있다.
디렉토리 엔트리 번호 이름 부모 디렉토리 엔트리 번호
0 MNFS Volume 0
1 Animals 0
2 Birds 1
3 Tiger 1
4 Eagle 2
이때, 부모 디렉토리 엔트리 번호는 소정 데이터의 상위 계층의 디렉토리로서, 도 8에 도시된 바와 같이, Tiger의 경우에는 Animal 디렉토리에 존재하므로 부모 디렉토리 엔트리 번호는 Animal의 디렉토리 엔트리 번호인 1이 되고, Eagle의 경우에는 Birds의 디렉토리에 존재하므로 부모 디렉토리 엔트리 번호는 Birds의 디렉토리 엔트리 번호인 2가 될 수 있다.
이와 같이, 소정 데이터에 대한 디렉토리 정보에 부모 디렉토리 정보가 포함되는 것은 일반적인 디렉토리 표현 기법인 부모 디렉토리로부터 자식 디렉토리로 표현하는 하향식 디렉토리 표현 기법을 본 발명의 실시예와 같이 페이지 맵핑 방법 및 블록 맵핑 방법과 같이 서로 다른 맵핑 방법을 혼용할 경우 본 발명의 실시예의 제 1맵핑 테이블 및 제 2맵핑 테이블을 사용하는 것과 같이 제 1맵핑 테이블의 업데이트는 잦고 그에 비해 제 2맵핑 테이블의 업데이트는 적다는 경우에 위반될 수 있다.
따라서, 일반적인 디렉토리 표현 기법인 하향식 디렉토리 표현 기법이 아닌 상향식 디렉토리 표현 기법, 다시 말해서 소정 데이터에 대한 디렉토리 정보에 부모 디렉토리 정보를 포함시켜 부모 디렉토리부터 계층적인 구조인 것과 반대로 자식 디렉토리부터 계층적인 상향식 디렉토리 표현 기법을 사용할 수 있다. 이는 메타 데이터에 비해 데이터의 업데이트가 적다는 것에 기반한 것으로 단순히 소정 데이터의 디렉토리 정보에 부모 디렉토리 정보만을 포함시켜 계층적 구조로 표현할 수 있게 된다.
또한, 제어부(220)는 제 1맵핑 테이블의 경우에는 페이지 맵핑 방법을 통해 관리하게 되며, 제 2맵핑 테이블은 블록 맵핑 방법을 통해 관리할 수 있다.
이는 제 1맵핑 테이블의 경우에는 데이터 블록 영역(120)에 존재하는 데이터와 해당 데이터에 대한 메타 데이터 맵핑을 위해 사용되기 때문에 잦은 업데이트가 필요하게 된다. 따라서, 잦은 업데이트에 유리한 페이지 맵핑 방법을 통해 제 1맵핑 테이블을 통해 관리하게 된다. 이러한 페이지 맵핑 방법은 빠른 업데이트에 비해 큰 크기를 가지게 되는데, 메타 데이터의 경우 소정 데이터에 대한 데이터 속성에 관한 정보인 메타 데이터를 포함하고 있기 때문에 상대적으로 데이터 비하여 작은 크기를 가지게 되므로 페이지 맵핑 방법을 사용하는 경우에도 크기의 증가가 방지될 수 있다.
한편, 제 2맵핑 테이블의 경우 데이터 블록 영역(120)에 존재하는 데이터의 경우 메타 데이터에 비해 업데이트가 적기 때문에 맵핑 테이블의 크기를 줄일 수 있는 블록 맵핑 방법을 통해 관리를 하게 되는 것이다.
도 9는 본 발명의 실시예에 따른 플래시 메모리의 맵핑 방법이 도시된 도면이다.
도시된 바와 같이, 사용자가 사용자 입력부(210)를 통해 플래시 메모리에서의 데이터 연산을 요청한다(S110).
제어부(220)는 사용자의 요청에 따라 데이터 연산을 수행하게 되며, 데이터 연산 수행시 데이터에 대한 데이터 속성을 나타내는 메타 데이터와 메타 데이터와 데이터의 맵핑을 위한 제 1맵핑 테이블 및 데이터로의 접근을 위해 논리 주소와 물리 주소의 맵핑을 위한 제 2맵핑 테이블을 생성한다(S120).
이후, 제어부(220)는 생성된 메타 데이터, 제 1맵핑 테이블 및 제 2맵핑 테이블을 플래시 메모리(100)에 저장하게 된다(S130). 이때, 제 1맵핑 테이블은 제 1맵핑 블록 영역(111)에 저장되고, 제 2맵핑 테이블은 제 2맵핑 블록 영역(112)에 저장되며, 메타 데이터는 제 1맵핑 블록 영역(111)에 저장되거나 제 2맵핑 블록 영역(112)에 저장될 수도 있고, 별도로 할당된 블록에 저장될 수도 있다.
또한, 제어부(220)는 메타 데이터 및 데이터 중 업데이트된 것을 판단하게 되며, 본 발명의 실시예에서는 우선 메타 데이터가 업데이트되었는지를 판단하는 경우를 예를 들어 설명하기로 한다. 따라서, 제어부(220)는 메타 데이터가 업데이트되었는지를 판단하게 된다(S140).
판단 결과 메타 데이터가 업데이트된 경우에는 제어부(220)는 페이지 맵핑 방법을 통해 제 1맵핑 테이블을 업데이트한다(S150).
만일, 메타 데이터가 아닌 데이터 블록 영역(120)에 저장된 데이터가 업데이트된 경우 제어부(220)는 블록 맵핑 방법을 통해 제 2맵핑 테이블을 업데이트한다(S160).
이후, 제어부(220)는 메타 데이터 및 데이터가 업데이트된 경우, 전술한 S140, S150 및 S160 단계를 반복적으로 수행할 수 있다.
한편, 본 발명의 실시예에서 메타 데이터에는 데이터 속성 이외에도 해당하는 데이터의 디렉토리 정보, 예를 들어 디렉토리 엔트리 번호, 이름 및 부모 디렉토리 엔트리 번호 등을 포함할 수 있기 때문에 데이터를 전술한 상향식 디렉토리 기법을 사용할 수 있다. 다시 말해서, 전술한 표 1과 같은 디렉토리 정보를 메타 데이터가 포함하고 있기 때문에 전술한 도 8의 디렉토리 구조에서 도 10과 같은 상향식 디렉토리 표현 기법이 가능한 것이다.
상기 '부'는 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 부는 어떤 역할들을 수행한다. 그렇지만 부는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 부는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 부는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 부들에서 제공되는 기능은 더 작은 수의 구성요소들 및 부들로 결합되거나 추가적인 구성요소들과 부들로 더 분리될 수 있다.이상과 같이 본 발명에 따른 플래시 메모리, 이를 위한 맵핑 장치 및 방법을 예시된 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않으며 그 발명의 기술사상 범위 내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.
상기한 바와 같은 본 발명의 플래시 메모리, 이를 위한 맵핑 장치 및 방법에 따르면, 플래시 메모리에서 업데이트의 빈도에 따라 메타 데이터와 데이터를 맵핑시키기 위한 맵핑 테이블을 서로 다른 맵핑 방법을 통해 업데이트하기 때문에 플래시 메모리를 위한 파일 시스템의 성능은 유지하는 동시에 맵핑 테이블을 크기가 감소되기 때문에 필요한 메모리의 크기 등이 감소여 시스템 자원을 효율적으로 사용할 수 있는 효과가 있다.

Claims (20)

  1. 소정의 데이터가 저장되는 데이터 블록 영역; 및
    서로 다른 맵핑 방법에 의해 관리되는 상기 데이터와 상기 데이터의 속성간의 맵핑 정보 및 사용자가 상기 데이터에 접근하기 위한 맵핑 정보를 저장하는 맵핑 블록 영역을 포함하는 플래시 메모리.
  2. 제 1 항에 있어서,
    상기 맵핑 블록 영역은, 상기 데이터와 상기 데이터의 속성의 맵핑을 위한 제 1맵핑 테이블을 포함하는 제 1맵핑 블록 영역; 및
    상기 사용자가 상기 저장된 데이터에 접근하기 위한 제 2맵핑 테이블을 포함하는 제 2맵핑 블록 영역을 포함하는 플래시 메모리.
  3. 제 2 항에 있어서,
    상기 제 1맵핑 테이블은, 페이지 맵핑 방법에 의해 관리되는 플래시 메모리.
  4. 제 2 항에 있어서,
    상기 제 2맵핑 테이블은, 블록 맵핑 방법에 의해 관리되는 플래시 메모리.
  5. 제 1 항에 있어서,
    상기 데이터 속성은, 상기 데이터의 데이터명, 데이터 크기 및 데이터 생성 날짜 중 적어도 하나를 포함하는 플래시 메모리.
  6. 제 1 항에 있어서,
    상기 데이터의 속성은, 해당 데이터의 디렉토리 정보 및 해당 데이터의 부모 디렉토리 정보를 포함하는 플래시 메모리.
  7. 플래시 메모리; 및
    서로 다른 맵핑 방법에 의해 관리되는 상기 플래시 메모리에 저장된 데이터와 상기 데이터의 속성 맵핑을 위한 맵핑 정보 및 사용자가 상기 데이터에 접근하기 위한 맵핑 정보를 생성하고, 상기 생성된 맵핑 정보를 상기 플래시 메모리에 저장하는 제어부를 포함하는 플래시 메모리의 맵핑 장치.
  8. 제 7 항에 있어서,
    상기 플래시 메모리는, 소정의 데이터가 저장되는 데이터 블록 영역; 및
    상기 맵핑 정보들을 저장하는 맵핑 블록 영역을 포함하는 플래시 메모리의 맵핑 장치.
  9. 제 8 항에 있어서,
    상기 맵핑 블록 영역은, 상기 데이터와 상기 데이터의 속성의 맵핑을 위한 제 1맵핑 테이블을 포함하는 제 1맵핑 블록 영역; 및
    상기 사용자가 상기 저장된 데이터에 접근하기 위한 제 2맵핑 테이블을 포함하는 제 2맵핑 블록 영역을 포함하는 플래시 메모리의 맵핑 장치.
  10. 제 9 항에 있어서,
    상기 제어부는, 상기 제 1맵핑 테이블을 페이지 맵핑 방법으로 관리하는 플래시 메모리의 맵핑 장치.
  11. 제 9 항에 있어서,
    상기 제어부는, 상기 제 2맵핑 테이블을 블록 맵핑 방법으로 관리하는 플래시 메모리의 맵핑 장치.
  12. 제 7 항에 있어서,
    상기 데이터 속성은, 상기 데이터의 데이터명, 데이터 크기 및 데이터 생성 날짜 중 적어도 하나를 포함하는 플래시 메모리의 맵핑 장치.
  13. 제 7 항에 있어서,
    상기 데이터의 속성은, 해당 데이터의 디렉토리 정보 및 해당 데이터의 부모 디렉토리 정보를 포함하는 플래시 메모리의 맵핑 장치.
  14. 플래시 메모리에 소정의 데이터가 저장되는 단계;
    서로 다른 맵핑 방법에 의해 관리되는 상기 저장된 데이터와 상기 저장된 데이터의 속성 맵핑을 위한 맵핑 정보 및 사용자가 상기 저장된 데이터에 접근하기 위한 맵핑 정보를 생성하는 단계; 및
    상기 생성된 맵핑 정보들을 상기 플래시 메모리에 저장하는 단계를 포함하는 플래시 메모리의 맵핑 방법.
  15. 제 14 항에 있어서,
    상기 플래시 메모리는, 소정의 데이터가 저장되는 데이터 블록 영역; 및
    상기 맵핑 정보들을 저장하는 맵핑 블록 영역을 포함하는 플래시 메모리의 맵핑 방법.
  16. 제 15 항에 있어서,
    상기 맵핑 블록 영역은, 상기 데이터와 상기 데이터의 속성의 맵핑을 위한 제 1맵핑 테이블을 포함하는 제 1맵핑 블록 영역; 및
    상기 사용자가 상기 저장된 데이터에 접근하기 위한 제 2맵핑 테이블을 포함하는 제 2맵핑 블록 영역을 포함하는 플래시 메모리의 맵핑 방법.
  17. 제 16 항에 있어서,
    상기 제 1맵핑 테이블을 페이지 맵핑 방법으로 관리하는 단계를 더 포함하는 플래시 메모리의 맵핑 방법.
  18. 제 16 항에 있어서,
    상기 제 2맵핑 테이블을 블록 맵핑 방법으로 관리하는 단계를 더 포함하는 플래시 메모리의 맵핑 방법.
  19. 제 14 항에 있어서,
    상기 데이터 속성은, 상기 데이터의 데이터명, 데이터 크기 및 데이터 생성 날짜 중 적어도 하나를 포함하는 플래시 메모리의 맵핑 방법.
  20. 제 14 항에 있어서,
    상기 데이터 속성은, 해당 데이터의 디렉토리 정보 및 해당 데이터의 부모 디렉토리 정보를 포함하는 플래시 메모리의 맵핑 방법.
KR1020050092212A 2005-09-30 2005-09-30 플래시 메모리, 이를 위한 맵핑 장치 및 방법 KR100801072B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050092212A KR100801072B1 (ko) 2005-09-30 2005-09-30 플래시 메모리, 이를 위한 맵핑 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050092212A KR100801072B1 (ko) 2005-09-30 2005-09-30 플래시 메모리, 이를 위한 맵핑 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20070037022A KR20070037022A (ko) 2007-04-04
KR100801072B1 true KR100801072B1 (ko) 2008-02-11

Family

ID=38158995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050092212A KR100801072B1 (ko) 2005-09-30 2005-09-30 플래시 메모리, 이를 위한 맵핑 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100801072B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170130180A (ko) * 2016-05-18 2017-11-28 에스케이텔레콤 주식회사 비휘발성 메모리를 이용한 데이터처리 장치 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155566B1 (ko) * 2008-12-01 2012-06-19 한국전자통신연구원 공간 데이터의 페이지 매핑 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020092487A (ko) * 2001-06-04 2002-12-12 삼성전자 주식회사 플래시 메모리 관리방법
KR20030040817A (ko) * 2001-11-16 2003-05-23 삼성전자주식회사 플래시 메모리 관리방법
KR20050011869A (ko) * 2003-07-24 2005-01-31 주식회사 레인콤 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP2005174279A (ja) * 2003-12-10 2005-06-30 Samsung Electronics Co Ltd フラッシュメモリ、そのためのマッピング制御装置及び方法
JP2005209058A (ja) * 2004-01-26 2005-08-04 Megawin Technology Co Ltd フラッシュメモリの読み書きの制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020092487A (ko) * 2001-06-04 2002-12-12 삼성전자 주식회사 플래시 메모리 관리방법
KR20030040817A (ko) * 2001-11-16 2003-05-23 삼성전자주식회사 플래시 메모리 관리방법
KR20050011869A (ko) * 2003-07-24 2005-01-31 주식회사 레인콤 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP2005174279A (ja) * 2003-12-10 2005-06-30 Samsung Electronics Co Ltd フラッシュメモリ、そのためのマッピング制御装置及び方法
JP2005209058A (ja) * 2004-01-26 2005-08-04 Megawin Technology Co Ltd フラッシュメモリの読み書きの制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170130180A (ko) * 2016-05-18 2017-11-28 에스케이텔레콤 주식회사 비휘발성 메모리를 이용한 데이터처리 장치 및 방법
KR102134905B1 (ko) 2016-05-18 2020-08-26 에스케이 텔레콤주식회사 비휘발성 메모리를 이용한 데이터처리 장치 및 방법

Also Published As

Publication number Publication date
KR20070037022A (ko) 2007-04-04

Similar Documents

Publication Publication Date Title
KR101473344B1 (ko) 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
EP1906311B1 (en) Mapping apparatus and method for non-volatile memory supporting different cell types
US7761652B2 (en) Mapping information managing apparatus and method for non-volatile memory supporting different cell types
US20170249219A1 (en) Data storage device and flash memory control method
US8386746B2 (en) Storage unit management methods and systems
US8402202B2 (en) Input/output control method and apparatus optimized for flash memory
KR20080085574A (ko) 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US7971022B2 (en) Apparatus and method of processing data of non-volatile memory using transaction block
JP2005222550A (ja) フラッシュメモリのリマッピング方法
US20130227198A1 (en) Flash memory device and electronic device employing thereof
TW200417856A (en) Method and apparatus for splitting a logical block
CN1822217A (zh) 将数据存储在非易失性高速缓冲存储器中的设备和方法
US20050246480A1 (en) System and method capable of sequentially writing data to a flash memory
KR20160105624A (ko) 데이터 처리 시스템 및 그것의 동작 방법
KR100781517B1 (ko) 비휘발성 메모리의 맵핑 정보 관리 장치 및 방법
JP2005222534A (ja) フラッシュメモリのデータ管理装置及び方法
US20070162707A1 (en) Information recording medium data processing apparatus and data recording method
KR100801072B1 (ko) 플래시 메모리, 이를 위한 맵핑 장치 및 방법
JP5452735B2 (ja) メモリコントローラ及びメモリアクセス方法
KR100703727B1 (ko) 비휘발성 메모리, 이를 위한 사상 제어 장치 및 방법
JP2008181381A (ja) 半導体メモリカード、半導体メモリカードのデータ管理方法、データベースエンジン、及び半導体メモリシステム
KR100862237B1 (ko) 낸드 플래시 메모리 기반 파일 시스템 및 이를 이용한파일 검색 방법
KR20240058637A (ko) 데이터 및 대응되는 맵을 선택적으로 저장하는 메모리 시스템 및 그 동작 방법
JP2023044994A (ja) メモリシステム

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
LAPS Lapse due to unpaid annual fee