KR101107288B1 - multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory - Google Patents

multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory Download PDF

Info

Publication number
KR101107288B1
KR101107288B1 KR1020030092533A KR20030092533A KR101107288B1 KR 101107288 B1 KR101107288 B1 KR 101107288B1 KR 1020030092533 A KR1020030092533 A KR 1020030092533A KR 20030092533 A KR20030092533 A KR 20030092533A KR 101107288 B1 KR101107288 B1 KR 101107288B1
Authority
KR
South Korea
Prior art keywords
data
journaling
stored
partition
center point
Prior art date
Application number
KR1020030092533A
Other languages
Korean (ko)
Other versions
KR20050060809A (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
Priority to KR1020030092533A priority Critical patent/KR101107288B1/en
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to JP2004562995A priority patent/JP4415356B2/en
Priority to US10/539,751 priority patent/US7610442B2/en
Priority to EP03777471.8A priority patent/EP1576593B1/en
Priority to CN200380107607XA priority patent/CN1732516B/en
Priority to RU2005119971/28A priority patent/RU2319227C2/en
Priority to CA2511304A priority patent/CA2511304C/en
Priority to AU2003286967A priority patent/AU2003286967B2/en
Priority to PCT/KR2003/002783 priority patent/WO2004059624A1/en
Publication of KR20050060809A publication Critical patent/KR20050060809A/en
Application granted granted Critical
Publication of KR101107288B1 publication Critical patent/KR101107288B1/en

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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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]

Abstract

본 발명은 다수의 파티션으로 분할되어 각 파티션 별로 데이터가 각각 기록, 판독 또는 삭제될 수 있는 플래시 메모리의 각 파티션에 데이터를 저장하는 방법에 있어서, The present invention relates to a method of storing data in each partition of a flash memory in which partitions are divided into a plurality of partitions, and data can be written, read or deleted for each partition.

한 종류의 데이터는 저장 매체의 처음 위치부터 저널링 방식으로 저장하고, 다른 종류의 데이터는 저장 매체의 끝 위치부터 처음 방향으로 저널링 방식으로 저장하는 것을 특징으로 한다.One type of data is stored in a journaling manner from the first position of the storage medium, and the other type of data is stored in a journaling manner from the end position of the storage medium in the first direction.

이와 같은 본 발명에 의하면, 종류가 같은 데이터를 일정 영역에 유지하기 때문에 빠른 데이터 접근 시간을 이룰 수 있으며, 또한 저널링 저장 방식의 특징에 따라 전원 오류 등에 의해 데이터 오류가 발생한 경우, 이전 버전으로의 데이터 복구가 용이함으로 데이터에 대한 신뢰성을 보장하는 효과가 있다. According to the present invention, since the same type of data is kept in a certain area, it is possible to achieve fast data access time, and also, when a data error occurs due to a power failure according to the characteristics of the journaling storage method, the data to the previous version Ease of recovery has the effect of ensuring the reliability of the data.

Description

다중 분할된 플래시 메모리 장치 및 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법{multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory}Multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory}

도 1은 종래의 플래시 메모리 장치를 나타내는 도면.1 illustrates a conventional flash memory device.

도 2는 일반적인 플래시 메모리에 파일 시스템을 구성하는 JFFS2에서 저장방법의 일 예를 보인 도면. 2 is a view showing an example of a storage method in JFFS2 constituting a file system in a general flash memory.

도 3은 본 발명에 의해 다중 분할된 플래시 메모리 장치를 도시한 도면.3 illustrates a flash memory device multi-divided by the present invention.

도 4는 본 발명에 따른 이중 저널링 저장방법에서 전반부 저널링과 후반부 저널링의 헤드가 서로 만나서 중앙점이 정해지는 실시 예를 보인 도면.4 is a diagram illustrating an embodiment in which the heads of the first half journaling and the second half journaling meet each other to determine a center point in a dual journaling storage method according to the present invention.

도 5는 본 발명에 따른 이중 저널링 저장방법에서 중앙점이 정해진 뒤 후반부 저널링의 헤드가 먼저 증가하여 중앙점과 만나고 중앙점을 전반부 저널링 쪽으로 이동함으로써 새로이 중앙점이 정해지는 과정의 실시 예를 보인 도면.5 is a view illustrating an embodiment of a process of determining a new center point by first increasing the head of the rear half journaling and then meeting the center point and moving the center point toward the front half journaling in the dual journaling storage method according to the present invention.

도 6은 본 발명의 이중 저널링 저장방법의 전반적인 수행과정을 보여주는 흐름도.Figure 6 is a flow chart showing the overall performance of the dual journaling storage method of the present invention.

도 7은 본 발명의 이중 저널링 저장방법의 일부분으로 garbage collection(GC) 수행을 보여주는 흐름도.7 is a flow chart illustrating garbage collection (GC) performance as part of the dual journaling storage method of the present invention.

도 8은 본 발명의 이중 저널링 저장방법의 GC에서 지움 블록의 개수를 결정 하는 그래프.8 is a graph for determining the number of blocks erased in the GC of the dual journaling storage method of the present invention.

도 9는 본 발명에 의한 3중분할 플래시 메모리 장치의 일 실시예를 도시한 도면.9 is a diagram illustrating an embodiment of a triple segment flash memory device according to the present invention;

도 10은 본 발명에 의한 플래시 메모리 장치를 사용하는 휴대 단말기의 예를 도시한 도면. 10 is a diagram showing an example of a mobile terminal using the flash memory device according to the present invention.

* 도면의 주요부분에 대한 부호의 설명 *Explanation of symbols on the main parts of the drawings

H1 : 전반부 헤드 H2 : 후반부 헤드H1: First half head H2: Second half head

T1 : 전반부 테일 T2 : 후반부 테일T1: first half tail T2: second half tail

C : 중앙점C: center point

본 발명은 데이터를 저장하고 관리하고 처리하기 위한 저장 매체로 플래시 메모리(flash memory)와 하드디스크(hard disk)를 이용할 때, 이를 운영하는 파일 시스템(file system)이 각 파티션 별로 채용되는 다중 분할된 플래시 메모리 장치 및 휴대 단말기와 상기 각 파티션에 데이터를 저장하기 위한 이중 저널링 저장방법에 관한 것이다. In the present invention, when a flash memory and a hard disk are used as storage media for storing, managing, and processing data, a multi-partitioned file system that employs the file system is employed for each partition. The present invention relates to a flash memory device, a portable terminal, and a dual journaling storage method for storing data in each partition.

최근에 정보 산업과 이동 컴퓨팅 기술이 발전함에 따라 PDA (personal digital assistants), HPC(hand-held PC), 휴대폰, 전자책(e-book) 등이 많이 개발되고 여기에서 데이터를 저장하기 위한 목적으로 휴대가 용이하고 접근시간이 빠르 며, 저전력이 요구되는 플래시 메모리를 많이 사용하고 있다.With the recent development of the information industry and mobile computing technology, many personal digital assistants (PDAs), hand-held PCs (HPCs), mobile phones, e-books, etc. have been developed for the purpose of storing data therein. It uses a lot of flash memory that is easy to carry, has fast access time, and requires low power.

플래시 메모리는 일반적인 RAM(random access memory)과는 다른 특성을 가지고 있다. 플래시 메모리는 비 휘발성의 특성을 갖고 있으며, 하드디스크에 비해 견고하다. 저 전력으로 동작이 가능하며 접근 시간이 RAM과 유사할 만큼 빠르다. 또한 크기가 작아 휴대 기기에 적합하다. Flash memory has different characteristics from normal random access memory (RAM). Flash memory is non-volatile and robust compared to hard disks. It can operate at low power and has fast access times similar to RAM. Its small size makes it ideal for mobile devices.

그러나, 하드디스크에 비해 가격이 5-10배 정도 비싸며, 이미 데이터가 있는 공간에 새로운 데이터를 쓰고자 할 때는 지움(cleaning) 과정을 수행한 다음에서야 다시 저장할 수 있는 단점이 있다.However, it is 5-10 times more expensive than a hard disk, and there is a disadvantage in that when a new data is written to an already existing space, it can be stored again after a cleaning process.

인텔(Intel co.) 회사에서 개발한 28F640J3A 모델(model) 플래시 메모리를 기준으로 할 때, 판독 속도는 100~150 nsec(나노초)로 RAM과 유사할 정도로 빠르지만, 기록 속도와 삭제 속도가 상대적으로 느리다. 버퍼(buffer)를 이용한 쓰기 시간은 32bytes 버퍼를 이용할 경우 218 ??sec(마이크로초) 정도가 걸리며, 지움 블록(erase block) 단위의 쓰기 시간은 블록 당 0.8 sec 정도가 걸린다. 또한, 한번에 삭제할 수 있는 지움 블록의 크기가 128 Kbytes로 일정하며, 상온에서 지운 다음 재 사용할 수 있는 회수가 약 10만 번으로 정해져 있다. 이렇게 한번에 지울 수 있는 플래시 메모리의 공간을 지움 블록(erase block) 또는 세그먼트(segment)라 한다. Based on 28F640J3A model flash memory developed by Intel co., Ltd., the read speed is 100 ~ 150 nsec (nanosecond), which is similar to RAM, but the write speed and erase speed are relatively slow. The write time using a buffer takes about 218 μsec (microseconds) when using a 32byte buffer, and the write time in an erase block takes about 0.8 sec per block. In addition, the size of the erase block that can be deleted at one time is constant at 128 Kbytes, and the number of times that can be erased and reused at room temperature is set to about 100,000 times. The space in the flash memory that can be erased at one time is called an erase block or segment.

플래시 메모리는 셀(cell)을 구성하는 구조에 따라, NOR, NAND, AND 타입(type) 등으로 구분할 수 있으나, 주로 NOR나 NAND 플래시 메모리를 주로 사용한다. NOR 플래시는 임의 접근(random access)의 판독 속도가 빠르고 비트 당 접근 이 용이함으로 메모리 주소 공간에 직접 연결되어 CPU가 수행하는 코드(code)를 저장하는 목적으로 주로 사용되며, NAND 플래시는 상대적으로 느린 임의 접근시간 때문에 음악 파일이나 이미지 파일 등 상대적으로 큰 용량의 데이터를 한번에 저장하는 용도로 주로 이용된다. Flash memory can be classified into NOR, NAND, AND type according to the structure of a cell, but mainly NOR or NAND flash memory is used. NOR flash is used primarily for the purpose of storing code executed by the CPU directly connected to the memory address space due to the fast read speed and random access of random access, while NAND flash is relatively slow. Because of random access time, it is mainly used for storing relatively large data such as music file or image file at once.

즉, 상기 플래시 메모리는, 한 번에 한 바이트 대신 블록들에 기록되고 삭제될 수 있는, 전기적으로 소거 가능한 프로그램 가능 판독 전용 기억 장치(EEPROM, Electrically Erasable Programmable Read Only Memory)의 특별한 형태이다. That is, the flash memory is a special form of Electrically Erasable Programmable Read Only Memory (EEPROM) that can be written and erased in blocks instead of one byte at a time.

플래시 메모리의 몇몇 응용 분야들은 이동 전화의 내장된 컨트롤 코드 및 데이터를 포함하여 필요한 경우 플래시 메모리가 용이하게 갱신될 수 있도록 한다. 또한, 플래시 메모리는 모뎀에도 사용되는데, 이는 새로운 프로토콜이 표준화됨에 따라 모뎀 생산자들은 플래시 메모리로 새로운 프로토콜을 지원 할 수 있기 때문이다. Some application areas of flash memory include the embedded control code and data of the mobile phone so that the flash memory can be easily updated if necessary. Flash memory is also used in modems because modem manufacturers can support new protocols with flash memory as new protocols become standardized.

나아가 플래시 메모리는 업그레이드가 가능한 기본 입/출력 시스템(BIOS, Basic Input/Output System)을 제공할 수 있도록 컴퓨터에도 사용된다. Flash memory is also used in computers to provide upgradeable basic input / output systems (BIOS).

도 1은 종래의 플래시 메모리 장치(100)를 나타내는 도면이다. 1 is a diagram illustrating a conventional flash memory device 100.

도 1을 참조하면, 데이터가 기록되는 메모리(110)는 X-디코더(160) 및 이와 관련을 맺는 Y-디코더(180)를 갖는다. X-디코더(160) 및 Y-디코더(180)는 메모리의 행과 열의 주소 할당을 허용한다. Referring to FIG. 1, the memory 110 in which data is written has an X-decoder 160 and a Y-decoder 180 associated therewith. X-decoder 160 and Y-decoder 180 allow address allocation of rows and columns of memory.

또한, 사용자 인터페이스(120)는 플래시 메모리 장치(100)를 제어한다. 사용자 인터페이스(120)는 메모리(110)로의 액세스를 제어하는 프로세서와 연결되어 있 고, 상태 레지스터(status register)(130)는 현재 메모리(110)의 상태(기록, 판독 또는 삭제)를 저장한다. 프로세서는 사용자 인터페이스(120)로부터 플래시 메모리의 상태를 안다. In addition, the user interface 120 controls the flash memory device 100. The user interface 120 is connected with a processor that controls access to the memory 110, and a status register 130 stores the state (write, read or delete) of the current memory 110. The processor knows the state of the flash memory from the user interface 120.

또한, 감지 증폭기들(sense amplifiers)(140)은 메모리(110)와 연관되어 있는 것으로, 상기 감지 증폭기(140)는 메모리(110)로의 기록 또는 판독을 위한 신호를 증폭하는데 사용된다. 예를 들어 16개의 입/출력들(I/Os)로 분할된 열에 대해서는 각 I/O에 하나씩 사용되어 16개의 감지 증폭기들(140)이 기록 및 판독을 위해 사용된다. Also, sense amplifiers 140 are associated with memory 110, which is used to amplify a signal for writing or reading to memory 110. For example, for a column divided into sixteen inputs / outputs (I / Os), one for each I / O is used so sixteen sense amplifiers 140 are used for writing and reading.

또한, 충전 펌프(charge pump)(150)가 플래시 메모리(100)에 더 포함되는데, 상기 충전 펌프(charge pump)(150)는 메모리(110)의 기록, 판독 및 삭제에 필요한 전압 레벨을 제공하는데 사용된다. In addition, a charge pump 150 is further included in the flash memory 100, which provides a voltage level necessary for writing, reading, and erasing the memory 110. Used.

일반적으로 종래의 플래시 메모리 장치는 하나의 메모리(110) 서브 세트로 구성되어 하나의 블록으로 기록되고 삭제되는 것으로, 사용자는 메모리의 다른 블록을 삭제하거나 판독하는 동시에 플래시 메모리의 블록에 기록을 할 수 없다. In general, a conventional flash memory device is composed of one subset of memory 110 to be written and erased in one block. A user can write to a block of flash memory while simultaneously deleting or reading another block of memory. none.

그러나, 동시 동작(simultaneous operation)은 플래시 메모리 블록의 삭제 시간(통상 250-500 ms)에 의해 제한되는 몇몇 응용 기술들에서 요구된다. 예를 들어 설명하면, 이동 전화는 플래시 메모리로부터 직접 코드를 실행한다. 이는 동시에 데이터 저장을 위한 공간을 이용하도록 분리된 메모리 블록을 삭제할 수 있도록 하는데 장점이 있다. However, simultaneous operation is required in some application techniques that are limited by the erase time of the flash memory block (typically 250-500 ms). For example, the mobile phone executes code directly from flash memory. This has the advantage that at the same time it is possible to delete a separate block of memory to use space for data storage.

이러한 문제점을 해결하는 종래 기술 중 하나는 복수의 플래시 메모리 장치들 을 갖는 것으로, 이 경우 다른 장치가 삭제되고 있는 동안 한 장치에는 기록될 수 있다. One prior art solution to this problem is to have a plurality of flash memory devices, which can be written to one device while the other device is being deleted.

그러나, 이는 많은 면적을 차지한다는 단점이 있다. 즉, 복수의 장치가 존재하기 때문에 하드웨어가 중복된다. 게다가, 복수의 플래시 메모리 장치를 사용하게 되면 비용이 많이 들고 전력 사용이 늘어나며, 전체적인 시스템 신뢰도가 떨어진다는 단점도 있다. However, this has the disadvantage of taking up a large area. In other words, since a plurality of devices exist, hardware is duplicated. In addition, the use of multiple flash memory devices is expensive, increases power usage, and lowers overall system reliability.

다음으로 이러한 플래시 메모리를 이용하여 파일 시스템을 구성한 종래 기술로는 미국 특허 번호 5,404,485의 Flash File System이란 제목의 특허가 있으며, 1995년도 USENIX 컨퍼런스(conference)의 페이지 155에서 164에 발표된 A Flash Memory Based File System란 제목의 논문이 있다. Next, the prior art of constructing a file system using such a flash memory is a patent entitled Flash File System of US Patent No. 5,404,485, and A Flash Memory Based published on page 155 to 164 of the 1995 USENIX conference. There is a paper titled File System.

또한, 미국 특허 번호 6,128,630의 Journal space release for log-structured storage systems와 미국 특허 번호 6,128,630의 Data storage library array with log-structured file system which allows simultaneous write and garbage collection 등에서 발명한 로그 구조의 파일 시스템(log-structured file system)를 플래시 메모리에 적용시킨 저널링 플래시 파일 시스템(JFFS, journaling flash file system)의 종래 기술이 있다. 로그 구조의 파일 시스템은 하드디스크에 파일 시스템을 구성하고 저장할 때, 발생한 데이터를 순차적으로 저장하는 방식이다. 이렇게 함으로써, 이전에 데이터와 새로 수정된 데이터에 대한 버전(version)을 로그 형식으로 유지할 수 있다는 것이고, 현재 문제가 발생한 데이터에 대해 이전의 데이터로 되돌아 감으로써 복구할 수 있다는 장점을 갖는다. In addition, the log space file system invented in Journal space release for log-structured storage systems of US Pat. No. 6,128,630 and Data storage library array with log-structured file system which allows simultaneous write and garbage collection of US Pat. No. 6,128,630. There is a prior art of a journaling flash file system (JFFS) that applies a structured file system to a flash memory. A log system file system sequentially stores data generated when a file system is configured and stored on a hard disk. By doing so, you can maintain versions of old and newly modified data in log format, and you can recover by returning to the previous data for the current problem.                         

JFFS는 로그 구조의 파일 시스템을 이용하여 플래시 메모리에 대해 파일 시스템을 구성하고 발생한 데이터를 순차적으로 저장하도록 했다. JFFS uses a log-structured file system to configure the file system for flash memory and to store the data in sequence.

JFFS는 미국의 Axis Communications 회사(http://developer.axis.com/ software/jffs/)에서 개발 했으며, 버전(version) 2는 미국의 RedHat 회사(http://sources.redhat.com/jffs2/)에서 FSF(free software foundation)의 GPL(GNU public licenses)를 따라 개발하고 있다. 도 2는 플래시 메모리에 파일 시스템을 구성하는 JFFS2에서 저장방법의 한 실시 예를 보인 도면이다. JFFS was developed by Axis Communications, Inc. (http://developer.axis.com/software/jffs/) in the United States, and version 2 was developed by RedHat, Inc. (http://sources.redhat.com/jffs2/). Is being developed under the GNU Public Licenses (GPL) of the Free Software Foundation (FSF). 2 is a view illustrating an embodiment of a storage method in JFFS2 constituting a file system in a flash memory.

도 2를 참조하면, 이는 JFFS에서 플래시 메모리에 데이터가 저장되는 한가지 예를 보이고 있다. 어떤 파일 시스템에서, 예를 들어 리눅스(Linux)의 EXT2 파일 시스템에서 디렉토리(directory) 구조가 있을 때, JFFS에 저장되는 방식은 먼저 한 디렉토리의 일반적인 특성을 담기 위해 도 2의 (a)에서처럼, 디렉토리 엔트리(Dir 1 entry)를 저장한다. 여기에 저장되는 정보는 디렉토리 노드(node)의 타입, 노드의 총길이, 헤드의 CRC(cyclic redundancy check), 부모 inode 번호, 버전 값, 노드 CRC, 이름 CRC, 디렉토리 이름 등이다. Referring to FIG. 2, this shows one example in which data is stored in a flash memory in the JFFS. In some file systems, for example when there is a directory structure in the EXT2 file system on Linux, the way it is stored in the JFFS is a directory, as in (a) of FIG. 2 to capture the general characteristics of a directory first. Save the entry (Dir 1 entry). The information stored therein is the type of the directory node, the total length of the node, the cyclic redundancy check (CRC) of the head, the parent inode number, the version value, the node CRC, the name CRC, and the directory name.

바로 다음에 상기 디렉토리에 대한 inode를 저장한다. 도 1에서는 Dir 1 inode가 도시되어 있으며, 여기에 저장되는 정보는 노드 타입, 총길이, 여러 종류의 CRC, 버전 값, 사용자 ID, 그룹 ID, 생성시간, 접근시간, 수정시간 등이다. Immediately afterwards we store the inode for that directory. In FIG. 1, a Dir 1 inode is illustrated, and information stored therein is node type, total length, various types of CRC, version value, user ID, group ID, creation time, access time, modification time, and the like.

위와 같은 디렉토리 엔트리와 inode는 사용자에게 보이는 정보가 아니라 파일시스템에서만 사용되는 부가 정보이며, 이를 메타 데이터(meta data)라 한다. 디렉토리 안에 있는 파일을 저장할 때도 디렉토리와 마찬가지로 파일 엔트리(File 1 entry)를 저장하고 파일 inode(File 1 inode)를 저장한다. The above directory entries and inodes are additional information that is used only by the file system, not the information that is visible to the user. This is called metadata. When you save a file in a directory, you save a file entry (File 1 entry) and a file inode (File 1 inode), just like a directory.

상기 디렉토리와 파일은 파일 시스템에서 같은 형식으로 보는데, 단 디렉토리는 실제적인 데이터가 없고, 파일의 경우 파일의 데이터(File 1 data)가 inode 다음에 저장된다. The directories and files are viewed in the same format in the file system, except that the directory has no actual data, and in the case of a file, the file data (File 1 data) is stored after the inode.

이런 식으로 JFFS는 플래시 메모리에 대해 디렉토리와 파일을 순차적으로(journaling) 저장하는 방식을 사용한다. In this way, JFFS uses a method of journaling directories and files for flash memory.

도 2의 (b)에서처럼, Dir 1 inode와 File 1 inode가 변경되어 새로운 값으로 갱신되면, 원래의 메타 데이터는 무효화(Invalid) 상태로 만들고, 새로운 데이터는 저장위치에 순차적으로 저장한다. 이 때, 상기 무효화 상태는 실제로 데이터가 삭제되는 것이 아니라, 불필요한 데이터라고 표시 만 할 뿐이고, 새로운 데이터의 버전 값은 한 단계만큼 증가한다. 그러므로 새로운 데이터에 문제가 생기면, 이전 버전의 데이터가 있는 한 복구하는 것이 용이하다. As shown in (b) of FIG. 2, when the Dir 1 inode and the File 1 inode are changed and updated to a new value, the original metadata is invalidated, and the new data is sequentially stored in the storage location. At this time, the invalidation state does not actually delete the data, but merely marks it as unnecessary data, and the version value of the new data is increased by one step. Therefore, if there is a problem with the new data, it is easy to recover as long as there is data from the previous version.

이렇게 갱신이 되고 새로운 데이터가 저장되다 보면, 플래시의 저장 공간이 한계에 이르게 되고 저장할 공간을 확보하기 위해 플래시 메모리를 삭제해야 하는데, 플래시 특성 상 지움 블록(erase block) 단위로만 삭제해야 하기 때문에 도 2의 (c)에서처럼 유용한(valid) 데이터(Dir 1 entry)를 옮기고, 무효한 공간들로 지움 블록이 채워지면, 도 2의 (d)에서처럼 지움 과정을 수행하여 하나의 지움 블록을 지운다.When the data is updated and new data is stored, the flash storage space reaches its limit and the flash memory must be deleted to secure the storage space. However, the flash memory must be deleted only in erase blocks. As shown in (c) of FIG. 2, when the valid data (Dir 1 entry) is moved and the erase block is filled with invalid spaces, the erase process is performed as shown in (d) of FIG. 2 to erase one erase block.

이렇게 저장공간이 부족하여 무효한 공간을 모은 다음, 지움 블록 단위로 지워서 새로운 공간을 확보하는 과정을 Garbage Collection(GC)라 한다. 또한, 지움 과정을 수행하여 만들어진 새로운 데이터를 저장할 수 있는 공간을 자유(Free) 공간이라 한다. 이제 자유공간이 많이 확보되었으므로 계속 데이터를 저장할 수 있다. Garbage Collection (GC) is a process in which invalid space is collected due to lack of storage space, and then new blocks are deleted by erasing blocks. In addition, a space for storing new data created by the erasing process is called a free space. Now that you have a lot of free space, you can continue to store your data.

저장 매체로 하드디스크를 이용할 때도 비슷한 방식으로 저장이 된다. 다만, 하드디스크는 공간을 확보하기 위하여, 유효한 데이터를 이동하고 지움 블록 크기로 무효화 블록을 만드는 경우는 없다. When using a hard disk as a storage medium, it is stored in a similar manner. However, in order to secure space, the hard disk does not move invalid data and make an invalidation block with an erase block size.

그러나, 하드디스크에서 파일에 대한 접근을 빠르게 하기 위해 같은 파일의 여러 조각을 모아 물리적으로 이웃한 위치에 두도록 이동하는 경우는 있다. 하드디스크는 지움 과정을 따로 수행할 필요가 없으므로 새로운 데이터를 저장할 공간이 무효화 상태이면 바로 저장하면 된다. 이와 같은 상기 JFFS의 저장 방식으로 진행하다 보면, 엔트리와 inode의 위치가 파일의 데이터와 복잡하게 섞이기 때문에, 플래시 메모리를 운영체제와 연결하여 마운트(mount)하여 파일 시스템을 형성할 때, 트리(tree) 형태의 디렉토리 구조를 메모리에 만들기 위해서는 플래시 메모리의 전체 공간을 모두 읽고 메타 데이터를 찾아야 디렉토리 구조를 구성할 수 있다는 문제점이 있다. However, in order to speed up access to a file on a hard disk, there are cases where multiple pieces of the same file are collected and moved to physically neighboring locations. The hard disk does not need to be erased, so if the space to store new data is invalid, save it immediately. As the JFFS storage method proceeds, the entry and inode locations are mixed with the data of the file, and thus, when the flash memory is connected to the operating system and mounted to form a file system, the tree In order to create a directory structure in memory, there is a problem in that the directory structure can be configured by reading all the space of the flash memory and finding metadata.

저장 매체를 플래시 메모리 대신 하드디스크를 이용하여 로그 구조의 파일 시스템이나 저널링 파일 시스템을 구성할 때도 같은 문제점이 발생한다. 즉, 플래시 메모리처럼 지움 블록을 맞추기 위해 데이터를 이동할 필요는 없지만, 메타 데이터들이 파일 데이터와 섞여서 전체 공간에 흩어져 있으면, 접근 속도가 플래시에 비해 40-50배 느리고, 용량이 기가 바이트(gigabyte)를 넘는 크기에서 디스크 전체를 읽어 서 파일 시스템을 구성하는 것은 매우 많은 시간을 요구하게 된다. 그리고, 하드디스크에 대해 로그 구조의 파일 시스템이나 저널링 파일 시스템을 이용하는 것은 주로 대용량의 멀티미디어 데이터를 저장하고 재생하기 위해서 사용되는데, 메타 데이터들이 섞임으로 인하여 일정 시간 당 균일한 속도의 데이터를 전송하지 못하면, 멀티미디어 용 파일 시스템으로써의 효용성이 떨어진다는 단점이 있다.The same problem occurs when configuring a log file system or a journaling file system using a hard disk instead of a flash memory. In other words, you don't need to move data to fit erase blocks like flash memory, but if metadata is mixed with file data and scattered throughout the space, access speeds are 40-50 times slower than flash, and gigabytes of capacity. Configuring a file system by reading the entire disk at an oversized size can be very time consuming. In addition, using a log file system or a journaling file system for a hard disk is mainly used to store and play a large amount of multimedia data. However, there is a disadvantage that the utility as a file system for multimedia is inferior.

본 발명은 이러한 문제점을 해결하기 위해 기록 중 판독 동작을 허용하도록 플래시 메모리 장치에 복수의 파티션(partition)이 포함되고, 각 파티션은 다른 파티션들과 함께 판독, 기록 및 삭제가 가능토록 하며, 또한 상기 플래시 메모리의 각 파티션에 저장되는 데이터에 대해 이를 메타 데이터와 일반 파일 데이터를 분리하여, 파일 데이터는 저장 매체 즉, 각 파티션의 처음 위치부터 저장하고, 메타 데이터는 상기 각 파티션의 끝 위치부터 처음 방향으로 저장하는 이중의 저널링 저장방법을 제공하는데 그 목적이 있다.In order to solve this problem, the present invention includes a plurality of partitions in a flash memory device to allow a read operation during writing, and each partition can be read, written, and deleted along with other partitions. For data stored in each partition of flash memory, it is separated from the metadata and general file data so that the file data is stored from the storage medium, i. The purpose of the present invention is to provide a dual journaling storage method.

상기 목적을 달성하기 위한 본 발명에 따른 플래시 메모리 장치는, Flash memory device according to the present invention for achieving the above object,

다중 분할된 메모리와; 상기 메모리의 다중 분할에 의해 구분되는 것으로, 저장되는 데이터가 독립적으로 기록, 판독 또는 삭제될 수 있는 다수의 파티션과; 상기 기록, 판독 및 삭제를 위한 전압을 출력하기 위한 다수의 전압 출력을 제공하는 충전 펌프와; 상기 각 파티션이 동시에 실행 가능한 판독 동작을 위한 다수의 제 1감지 증폭기 및 상기 각 파티션이 동시에 실행 가능한 삭제, 기록 동작을 위한 적어도 하나 이상의 감지 증폭기를 포함하는 다수의 제 2감지 증폭기가 포함되며, Multiple partitioned memory; A plurality of partitions separated by multiple divisions of the memory, in which data to be stored can be written, read or deleted independently; A charge pump providing a plurality of voltage outputs for outputting voltages for writing, reading and erasing; A plurality of first sense amplifiers comprising a plurality of first sense amplifiers for read operations in which each partition is executable at the same time and at least one sense amplifier for erase and write operations in which each partition is executable simultaneously;                         

상기 각 파티션에 저장되는 데이터가 상기 각 파티션의 저장공간 처음 위치와 끝 위치로부터 각각 중앙쪽으로 저장됨을 특징으로 한다. The data stored in each partition is stored toward the center from the first position and the end position of the storage space of each partition.

또한, 본 발명에 의한 휴대 단말기는 상기 다중 분할된 플래시 메모리 장치가 포함되고, 다양한 버스(bus) 및 상기 버스에 연결된 프로세서(processor)가 구비된다. 이 때, 상기 다중 분할된 플래시 메모리는 상기 버스에 연결되고, 상기 프로세서에 의해 액세스가 가능하다In addition, the portable terminal according to the present invention includes the multi-divided flash memory device, and includes various buses and a processor connected to the buses. In this case, the multi-divided flash memory is connected to the bus and accessible by the processor.

또한, 상기한 목적을 달성하기 위한 본 발명에 따른 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법은 메타 데이터를 저장 매체 즉, 플래시 메모리 장치의 각 파티션의 처음 위치부터 끝 방향으로 저장하고, 파일 데이터를 끝 위치부터 처음 방향으로 저장하는 방식도 포함한다. In addition, the dual journaling storage method for storing data in the divided memory according to the present invention for achieving the above object stores the metadata in the storage medium, that is, from the first position to the end direction of each partition of the flash memory device, This includes storing the file data in the first direction from the end position.

여기서, 각 파티션의 처음부터 저장되는 데이터와, 끝에서 처음 방향으로 저장되는 데이터가 메타 데이터나 파일 데이터가 아닌 다른 정보의 데이터일 수도 있다. Here, the data stored from the beginning of each partition and the data stored from the end to the first direction may be data of information other than metadata or file data.

본 발명에서 제시하는 이중의 저널링 형식으로 데이터를 저장하는 방법은 한 종류의 데이터는 플래시 메모리 장치의 각 파티션에 대해 처음부터 저장하고, 다른 한 종류는 끝에서 앞쪽으로 저장하는 방식이다. In the dual journaling method of the present invention, one type of data is stored from the beginning for each partition of the flash memory device, and the other type is stored from the end to the front.

처음부터 저장되는 데이터들을 전반부 저널링(front journaling) 데이터라 하고, 끝에서 앞쪽으로 저장되는 데이터들은 후반부 저널링(rear journaling) 데이터라 한다. 저장이 발생하는 위치는 헤드(head)라 하며, 저널링의 뒤 부분에서 삭제 과정을 수행하는 위치를 테일(tail)이라 한다. 즉, 전반부 저널링의 헤드와 테 일이 존재하고 후반부 저널링의 헤드와 테일이 존재한다. 또한 전반부와 후반부의 양쪽에서 헤드가 증가하여 만나게 되는 지점을 중앙점이라 한다. Data stored from the beginning is called front journaling data, and data stored from the end to the front is called rear journaling data. The location where the storage occurs is called the head, and the location where the deletion process is performed at the back of the journaling is called the tail. That is, the head and tail of the first half journaling and the head and tail of the second half journaling. In addition, the point where the head meets in the first half and the second half is called the center point.

저장할 데이터가 플래시 메모리 장치 각 파티션의 파일 시스템에 들어오면, 저장 매체에는 상기 데이터를 물리적으로 저장할 공간과 이 데이터에 대한 파일을 형성하기 위해 필요한 파일 엔트리와 inode 등의 메타 데이터를 저장할 공간이 필요하다. When data to be stored enters the file system of each partition of the flash memory device, the storage medium needs space to physically store the data and space to store metadata such as file entries and inodes necessary to form a file for the data. .

이런 경우 파일의 데이터는 전반부 저널링에 저장하고, 메타 데이터는 후반부 저널링에 저장할 수 있다. 반대의 경우로도 할 수 있다. 즉, 파일의 데이터는 저장장치의 전반부에서부터 저장되고, 메타 데이터는 저장장치의 후반부에서부터 저장되는 것이다. 단, 이는 반대의 경우로도 할 수 있다.In this case, the data in the file can be stored in the first half journaling, and the metadata can be stored in the second half journaling. The opposite is also true. That is, the data of the file is stored from the first half of the storage device, and the metadata is stored from the second half of the storage device. However, this may be the opposite.

이처럼 임의의 데이터를 저장 매체에 저장하고자 할 때, 본 발명의 이중의 저널링 저장방법에서는 데이터를 어느 쪽에 저장할지를 판단하고 저장을 시작한다. 그리고, 데이터가 갱신될 때는 이전의 데이터는 무효화시키고, 새로운 데이터를 헤드의 위치에 저장한다. 데이터에 대한 삭제가 일어날 때는 데이터를 무효화 표시만 하면 된다. 이러한 저장과 갱신과 삭제가 반복되다 보면, 저장 매체에 대해 전반부 저널링과 후반부 저널링이 만나게 되고 중앙점이 정해진다. As described above, when the arbitrary data is to be stored in the storage medium, the dual journaling storage method of the present invention determines which data to store and starts storing. When the data is updated, the old data is invalidated and the new data is stored at the head position. When the deletion of data occurs, it is only necessary to invalidate the data. If this storage, update, and deletion is repeated, the first and second journaling meet and center points for the storage medium.

다시 전반부와 후반부 모두 처음 위치로 돌아가 데이터 처리를 계속하게 되면 그 다음에서는 전반부의 헤드 또는 후반부의 헤드 중에서 한쪽이 먼저 중앙점과 만나게 되는데, 이 때는 먼저 만나는 저널링에 저장할 데이터가 많다고 판단할 수 있으므로 중앙점을 상대편 쪽으로 밀어 데이터가 많은 쪽에 더 많은 저널링을 확보 하도록 한다. If both the first half and the second half return to the initial position and continue processing the data, then either the head of the first half or the head of the second half meets the center point first, in which case there is a lot of data to store in the first journaling. Push the points to the other side to get more journaling on the data-rich side.

플래시 메모리의 경우는 저널링 저장 방식을 이용하는 목적 중의 하나가 지움 블록에 대한 지움 회수를 고르게 안배하는 효과가 있다는 것인데, 중앙점을 이동하면 데이터가 많은 쪽의 저널링이 커짐으로써 전반부와 후반부에 대한 지움 회수를 고르게 안배할 수 있다.In the case of flash memory, one of the purposes of using the journaling storage method is to distribute the erase count of erased blocks evenly. Moving the center point increases the journaling of the data-rich side, and thus the erase count of the first half and the second half. You can arrange evenly.

이하, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 3은 본 발명에 의해 다중 분할된 플래시 메모리 장치를 도시한 것이다.Figure 3 shows a flash memory device multi-divided by the present invention.

도 3을 참조하면, 파티션(partition) A 210, B 215, C 225, D 220, E 230,....n-1 235, n 235가 도시되어 있다. Referring to FIG. 3, partitions A 210, B 215, C 225, D 220, E 230,... N-1 235, n 235 are shown.

각 파티션(partition)은 플래시 메모리 장치에 물리적으로 분할된 장치로서 구현된다. 일 실시로서, 각 파티션(partition)은 상이한 물리층에 구현된다. 각 파티션(partition)들 210, 215, 220, 225, 225, 230, 235, 및 240은 X 디코더 및 Y 셀렉터와 관련되어 있다. Each partition is implemented as a device physically partitioned into a flash memory device. In one embodiment, each partition is implemented in a different physical layer. Each partition 210, 215, 220, 225, 225, 230, 235, and 240 is associated with an X decoder and a Y selector.

각 Y 셀렉터는 Y 셀렉터를 제어하는 Y 디코더(240)와 연결되어 있다. 다른 실시 예로서, 복수의 Y 디코더들(240)이 시스템 내에 존재할 수 있다. Each Y selector is connected to a Y decoder 240 that controls the Y selector. As another example, a plurality of Y decoders 240 may be present in the system.

X 디코더 및 Y 셀렉터는, 판독, 기록 및 삭제를 포함하는 액세스를 위한 플래시 메모리(200) 내의 특정 영역의 선택을 가능하게 한다. 복수의 X 셀렉터 및 Y 셀렉터를 구성함으로써 플래시 메모리의 하나 이상의 서브 섹션에 동시에 액세스하 는 것을 허용한다. The X decoder and Y selector allow selection of a particular area within flash memory 200 for access including reading, writing and erasing. By configuring multiple X selectors and Y selectors, one or more subsections of flash memory can be accessed simultaneously.

예를 들어, 파티션(partition) A가 삭제되는 동안 파티션(partition) B의 판독 및 파티션(partition) C의 기록이 동시에 이루어진다. 각 파티션(partition)은 따로 삭제될 수 있는 블록을 하나 또는 그 이상 포함할 수 있다. 따라서, 예를 들면, 파티션(partition) B의 메모리 블록이 삭제되는 동안, 파티션(partition) A 내의 메모리에 기록될 수 있다. For example, reading of partition B and writing of partition C are performed simultaneously while partition A is deleted. Each partition can contain one or more blocks that can be deleted separately. Thus, for example, while the memory block of partition B is deleted, it can be written to the memory in partition A.

사용자는 사용자 인터페이스(250)를 통해 플래시 메모리(200)로의 액세스를 제어할 수 있다. 일 실시 예로서, 사용자 인터페이스(250)는 플래시 메모리 자체의 일부이다. 다른 실시 예로서, 사용자 인터페이스(250)는 분리된 칩에 위치한다. 인터페이스는 각각의 병렬 기록 동작을 제어하기 위해 사용되는 복수의 상태기들(state machines)을 포함한다. The user may control access to the flash memory 200 through the user interface 250. In one embodiment, the user interface 250 is part of the flash memory itself. In another embodiment, the user interface 250 is located on a separate chip. The interface includes a plurality of state machines used to control each parallel write operation.

따라서, 2개의 병렬 기록 동작(예를 들어, 코드를 갱신하는 동안 데이터 블록에 기록하는 것)이 있는 경우, 2개의 상태기들(state machines)이 존재한다. 3개의 병렬 기록 동작이 있는 경우, 3개의 상태기들(state machines)이 존재한다. Thus, if there are two parallel write operations (eg, writing to a data block while updating code), there are two state machines. If there are three parallel write operations, there are three state machines.

상태 레지스터들(state registers) 은 사용자 인터페이스(250)에 연결되어 있다. 상태 레지스터(260)는 각 파티션(partition)의 상태를 나타낸다. n개의 파티션(partition)이 있으면, 일 실시예로서 n개의 상태 레지스터(state register)(260)들이 존재한다. 각 파티션(partition)의 상태는 다음 중의 하나이다: 유휴 상태(idle), 판독 중(being read), 기록 중(being written), 또는 삭제 중(being erased). State registers are coupled to the user interface 250. Status register 260 indicates the status of each partition. If there are n partitions, there are n state registers 260 as one embodiment. The state of each partition can be one of the following: idle, being read, being written, or being erased.                     

또한, 감지 증폭기(sense amplifier)(270)들은 사용자 인터페이스(250)에 연결되어 있다. 감지 증폭기(sense amplifier)들은 판독, 기록 및 삭제 동작에 사용된다. In addition, sense amplifiers 270 are connected to the user interface 250. Sense amplifiers are used for read, write and erase operations.

일 실시예로서, 감지 증폭기들(sense amplifiers)(270)의 개수는 다음과 같이 결정된다. 즉, 16 비트 와이드 플래시 메모리에 있어서, 실행 가능한 각 병렬 동작을 위해 16개의 감지 증폭기들(sense amplifiers)(270)이 필요하다. 따라서, 예를 들어 두 번째 파티션(partition)이 기록되는 동안 첫 번째 파티션(partition)이 판독되는 경우, 32개의 감지 증폭기들(sense amplifiers)(270)이 필요하다. In one embodiment, the number of sense amplifiers 270 is determined as follows. That is, in a 16-bit wide flash memory, 16 sense amplifiers 270 are required for each executable parallel operation. Thus, for example, if the first partition is read while the second partition is being written, 32 sense amplifiers 270 are needed.

또한, 2개의 파티션(partition)이 병렬 적으로 판독되는 경우 32개의 감지 증폭기들(sense amplifiers)(270)이 판독에 필요하다. 감지 증폭기들(sense amplifiers)(270)의 개수는 플래시 메모리의 출력 열의 폭(width)(X)과 실행 가능한 병렬 동작의 개수(Y)의 곱의 요소이다. In addition, 32 sense amplifiers 270 are required for reading when two partitions are read in parallel. The number of sense amplifiers 270 is an element of the product of the width X of the output column of the flash memory and the number Y of parallel operations that can be performed.

일 실시예로서, 3중분할 플래시 메모리의 경우, 첫 번째 파티션(partition)은 판독되고, 두 번째 파티션(partition)은 기록되며, 세 번째 파티션(partition)은 삭제될 수 있으며, 이 경우 3X개의 감지 증폭기들(sense amplifiers)(270)을 사용한다. 삭제에 사용되는 감지 증폭기들(sense amplifiers)(270)은 총 삭제 시간에서 매우 낮은 비율을 사용한다. As an example, in the case of triple partition flash memory, the first partition can be read, the second partition can be written, and the third partition can be deleted, in which case 3X detections. Sense amplifiers 270 are used. Sense amplifiers 270 used for erasure use a very low rate in total erase time.

유사하게, 기록에 사용되는 감지 증폭기들(sense amplifiers)(270)은 총 기록 시간에서 낮은 비율을 사용한다. 따라서, 일 실시 예로서, 하나의 감지 증폭기(sense amplifier)(270)가 각 실행 가능한 병렬 기록 동작 및 각 실행 가능 한 병렬 삭제 동작에 사용된다. Similarly, sense amplifiers 270 used for writing use a low rate in the total writing time. Thus, as an example, one sense amplifier 270 is used for each executable parallel write operation and each executable parallel erase operation.

감지 증폭기(sense amplifier)(270)는 각 비트가 기록되는 경우 각 비트를 검증할 때 사용된다. 또한, 중복 감지 증폭기들(sense amplifiers)(270)이 중복 행(redundant column) 액세스와 같은 다른 동작을 위해 포함될 수 있다. Sense amplifier 270 is used to verify each bit as it is written. In addition, sense amplifiers 270 may be included for other operations, such as redundant column access.

일 실시예로서, 각 병렬 판독 및/또는 기록에 있어서, 2개의 중복 감지 증폭기들(sense amplifiers)(270)이 감지 증폭기(sense amplifier) 블록(270)에 포함된다.In one embodiment, for each parallel read and / or write, two redundant sense amplifiers 270 are included in the sense amplifier block 270.

나아가, 충전 펌프들(charge pumps)(280)이 회로에 포함된다. 충전 펌프들(charge pumps)(280)은 판독, 기록, 및 삭제를 위한 전압 레벨을 조절하는데 사용된다. 일 실시 예로서, 삭제에 필요한 전압 레벨은 약 -10 볼트이다. Furthermore, charge pumps 280 are included in the circuit. Charge pumps 280 are used to adjust voltage levels for reading, writing, and erasing. In one embodiment, the voltage level required for deletion is about -10 volts.

일 실시 예로서, 판독 및 기록에 필요한 전압 레벨은 약 7 볼트이다. 일 실시 예로서, 파티션(partition)들로의 병렬 액세스를 허용하기 위해 복수의 리드 선을 갖는 하나의 충전 펌프(charge pump)(280)가 사용된다. In one embodiment, the voltage level required for reading and writing is about 7 volts. In one embodiment, one charge pump 280 having a plurality of leads is used to allow parallel access to partitions.

다른 실시 예로서, 동시에 서로 다른 파티션(partition)들에 액세스하기 위해 필요한 전압 레벨을 제공하기 위해 복수의 분리된 충전 펌프들(charge pumps)(280)이 사용될 수 있다. As another example, a plurality of separate charge pumps 280 may be used to provide the voltage levels needed to access different partitions at the same time.

충전 펌프들(charge pumps)(280)은 전압 레벨을 판독, 기록 및 삭제하는데 적합한 레벨까지 상승시키기 위해, 각 파티션(partition)들의 Y 셀렉터들에 연결되어 있다.Charge pumps 280 are connected to the Y selectors of each partition to raise the voltage level to a level suitable for reading, writing, and deleting.

상기와 같이 플래쉬 메모리 장치의 메모리 즉, 플래시 메모리가 다중 분할되 면, 분할된 각각의 파티션들은 독자적으로 기록, 판독 및 삭제를 수행할 수 있게 되며, 그에 따라 상기 파티션에 저장되는 데이터 역시 각 파티션 별로 독립적으로 저장되게 된다. When the memory of the flash memory device, that is, the flash memory is multi-divided as described above, each divided partition can independently write, read, and delete, and accordingly, the data stored in the partition is also for each partition. It will be stored independently.

본 발명은 상기 각각의 파티션에 데이터를 저장함에 있어 이중 저널링 저장방법을 사용하며, 아와 같은 데이터의 이중 저널링 저장방법을 설명하면 다음과 같다.The present invention uses a dual journaling storage method in storing data in each partition, and describes a dual journaling storage method of the data as follows.

도 4는 본 발명에 따른 이중 저널링 저장방법에서 전반부 저널링과 후반부 저널링의 헤드가 서로 만나서 중앙점이 정해지는 한 실시 예를 보인 도면이다.FIG. 4 is a diagram illustrating an embodiment in which the heads of the first half journaling and the second half journaling meet each other to determine a center point in the dual journaling storage method according to the present invention.

도 4의 (a)를 참조하면, 도면중 전반부 헤드는 H1으로 표시하고, 전반부 테일은 T1으로 표시하였다. 또한 후반부 저널링의 헤드는 H2, 테일을 T2라 표시하였으며, 중앙점을 C로 표시하였다. 상기 각 파티션에 있어서의 이러한 파일 시스템에 데이터 Data1가 들어오면, 데이터의 종류에 따라 이를 전반부에서 저널링 할 것인지 후반부에서 저널링 할 것인지 판단하여 헤드부분에 저장하게 된다. 도 4의 (a)에서 Data1은 전반부에서부터 저널링되는 데이터이며, 그에 따라 Data1은 저장 장치에 대해 처음위치부터 저장된다.Referring to FIG. 4A, the first half head is denoted by H1, and the first half tail is denoted by T1. In addition, the head of the second half journaling was marked with H2 and tail as T2, and the center point was marked with C. When data Data1 enters such a file system in each partition, it is determined whether to journal in the first half or journal in the second half according to the data type, and stored in the head portion. In FIG. 4A, Data1 is data that is journaled from the first half, and therefore Data1 is stored from the first position with respect to the storage device.

도 4의 (b)는 데이터가 6개 저장될 때의 상태를 보이고 있다. Data1에서 Data4까지는 전반부 저널링의 데이터이고 Data5와 Data6은 후반부 저널링의 데이터이다. FIG. 4B shows a state when six data are stored. Data1 through Data4 are data for the first half journaling, and Data5 and Data6 are data for the second half journaling.

그 다음 수행으로, Data2와 Data6이 지워졌다. 단, 저널링 저장 방식의 특성 상 데이터가 실제로 지워진 것이 아니라, 무효화(invalid) 상태로 표시된 것 뿐 이다. In the next run, Data2 and Data6 were cleared. However, due to the nature of the journaling storage method, the data is not actually erased, but only marked as invalid.

도 4의 (c)에서는 저장 매체에 대해 저장공간이 부족하여 Garbage collection(GC)이 발생한 상태를 보이고 있다. 즉, Data1은 유효한(valid) 데이터이므로 헤드부분으로 옮긴 다음 이전의 Data1을 무효화시키고, 이전에 무효화된 Data2와 함께 지움 블록의 크기를 넘어서면, 실제로 삭제 과정을 수행함으로써 자유 공간을 확보한다. 이렇게 실제로 삭제하는 과정을 수행하는 것은 플래시 메모리의 각 파티션에서 수행할 때이고, 디스크를 사용할 때는 이와 같은 삭제 과정이 따로 필요하지 않다. In FIG. 4C, a garbage collection (GC) is generated due to insufficient storage space for the storage medium. That is, since Data1 is valid data, the data is moved to the head and the previous Data1 is invalidated, and when the size of the erase block is exceeded along with the previously invalidated Data2, the free space is secured by actually deleting the data. The actual deletion process is performed on each partition of flash memory, and when the disk is used, such deletion process is not necessary.

이렇게 자유공간이 확보되면, 전반부 저널링의 끝부분인 테일(T1)은 Data3의 위치로 이동된다. 마찬가지로 Data6도 무효화되고 지움 블록 크기가 되어 지워지면, 후반부의 저널링의 테일 (T2)도 이동된다. 이 상태에서 새로운 데이터 Data7을 저장하고자 한다. 이 데이터는 전반부 저널링의 데이터로 전반부 헤드(H1)에 저장하고자 하지만, 공간이 부족하다. 그러므로, 도 4의 (d)에서처럼, 저장할 수 있는 만큼인 D7-1만 저장하고 전반부 헤드 (H1)이 처음으로 돌아와서 나머지 D7-2를 저장한다. When free space is secured, the tail T1, which is the end of the first half journaling, is moved to the position of Data3. Similarly, when Data6 is invalidated and erased to the erase block size, the tail T2 of the second half of journaling is also moved. In this state, we want to store new data Data7. This data is intended to be stored in the first half head H1 as data of first half journaling, but there is insufficient space. Therefore, as shown in (d) of FIG. 4, only D7-1, which can be stored, is stored, and the first half head H1 returns to the beginning to store the remaining D7-2.

이런 방식으로 전반부 저널링이 후반부 저널링과 만나면, 원형으로 처음 위치로 돌아와서 저장을 하게 된다. 또한 전반부의 헤드(H1)와 후반부의 헤드(H2)가 만났던 지점이 중앙점(C)으로 설정된다. 후반부 헤드(H2)도 끝 위치로 돌아가서 저장을 기다린다. 이런 방식으로 전반부 저널링과 후반부 저널링에 데이터가 저장되며, 중앙점(C)이 정해진다. In this way, when the first half journaling encounters the second half journaling, it returns to the original position in a circular manner and saves it. In addition, the point where the head H1 of the first half and the head H2 of the second half met is set as the center point C. FIG. The latter head H2 also returns to the end position and waits for storage. In this way, data is stored in the first half journaling and the second half journaling, and the center point (C) is defined.                     

이런 방법으로 계속 데이터를 저장하다 보면, 전반부 헤드(H1)나 후반부 헤드(H2) 중에서 하나가 먼저 다시 중앙점(C)의 위치에 도달하게 되는데, 이 경우 먼저 도달하는 저널링 부분이 저장할 데이터가 많다고 판단할 수 있다. If you keep storing data in this way, one of the first half head H1 or the second half head H2 reaches the position of the center point C first, in which case the first journaling part has a lot of data to store. You can judge.

그러므로 중앙점을 상대방 쪽으로 옮겨 먼저 중앙점(C)에 도착하는 저널링의 공간을 증가시켜주도록 한다. Therefore, the center point is moved to the other side to increase the space of journaling first arriving at the center point (C).

도 5은 이중 저널링 저장방법에서 중앙점이 정해진 뒤 후반부 저널링의 헤드가 먼저 증가하여 중앙점과 만나고 중앙점을 전반부 저널링 쪽으로 이동함으로써 새로이 중앙점이 정해지는 과정의 하나의 실시 예를 보인 도면이다.FIG. 5 illustrates an embodiment of a process of determining a new center point by determining a center point in the dual journaling storage method, and then increasing the head of the rear half journaling to meet the center point and moving the center point toward the front half journaling.

도면을 참조하면, 도 5의 (a)에서 보면 이는 Data3과 Data5가 무효화되고, 후반부 저널링의 데이터 저장이 활발하여 Data8과 Data9가 저장되고, Data10을 저장하려고 하지만 공간이 부족한 경우를 나타내고 있다.Referring to FIG. 5A, this shows a case where Data3 and Data5 are invalidated, data storage in the second half of the journaling is actively stored, Data8 and Data9 are stored, and data10 is about to be stored, but there is insufficient space.

즉, 후반부에서 먼저 중앙점(C)에 도달한 것이다. 여기서, 후반부의 헤드(H2)가 전반부의 헤드(H1)를 만나지 않았으므로, 전반부에 저장할 공간이 충분히 있는 한 중앙점(C)을 전반부 쪽으로 이동시킨다. In other words, in the second half, the center point C is first reached. Here, since the head H2 of the latter half does not meet the head H1 of the first half, the center point C is moved toward the first half as long as there is enough space to store in the first half.

전반부에 데이터가 충분히 있다는 판단은 후술하는 도 7의 GC 수행에서 하게 된다.Determination that there is enough data in the first half is made by performing GC of FIG.

이렇게 하기 위해 도 5의 (b)에서처럼 전반부의 데이터인 D7-1을 전반부 헤드(H1)로 이동시키고, 중앙점(C)도 이동시킨다. 이 때, 전반부에서 이동하는 데이터의 단위는 플래시 메모리의 경우 지움 블록 단위이다. To do this, as shown in FIG. 5 (b), the data of the first half portion D7-1 is moved to the first half head H1, and the center point C is also moved. At this time, the unit of data moving in the first half is the erase block unit in the case of flash memory.

왜냐하면, 이동한 뒤 지움 과정을 수행하여 자유 공간을 만든 다음에 새로운 데이터를 저장할 수 있기 때문이다. Because you can move and erase to create a free space and then save new data.

여기서, 상기 지움 블록(erase block)은 플래시 메모리에서 한 번에 지울 수 있는 메모리 단위를 의미하는 것으로, 보통 128Kbyte 또는 256Kbyte의 크기로 형성된다. 이 때 상기 지움 블록에 대한 지움 과정이 수행되면 이는 자유 블록(free block) 즉, 데이터를 저장할 수 있는 공간이 형성되며, 상기 자유 공간 은 일정 크기의 자유 블록을 의미하는 것이다. Herein, the erase block refers to a memory unit that can be erased at one time in a flash memory, and is usually formed in a size of 128 Kbytes or 256 Kbytes. At this time, if the erase process is performed on the erase block, a free block, that is, a space for storing data is formed, and the free space means a free block having a predetermined size.

이와 같은 자유 공간이 만들어지면, 새로운 데이터 Data10을 저장한다. When such free space is created, new data Data10 is stored.

이러한 중앙점(C)의 이동은 전반부의 헤드(H1)를 만날 때까지 또는 전반부의 여유 데이터 저장 공간이 충분히 있을 때까지 이동된다. The movement of the center point C is moved until it meets the head H1 of the first half or until there is enough free data storage space in the first half.

도 6은 본 발명에 따른 이중 저널링 저장방법의 전반적인 수행과정을 보인 흐름도이다.6 is a flowchart illustrating an overall process of performing a dual journaling storage method according to the present invention.

즉, 도 6은 앞서 도 4 및 도 5를 통해 설명한 본 발명에 따른 이중 저널링 저장방법의 수행과정을 흐름도를 이용하여 표현한 것으로, 본 발명에 의해 데이터가 저장되는 과정과 중앙점이 결정되는 과정, 중앙점이 이동되는 과정을 설명하고 있다.That is, FIG. 6 is a flowchart illustrating a method of performing a dual journaling storage method according to the present invention described above with reference to FIGS. 4 and 5 by using a flow chart. Describes the process of moving a point.

도4 내지 도 6을 참조하면, 본 발명은 데이터가 저장되는 과정과 중앙점이 결정되는 과정, 중앙점이 이동되는 과정을 흐름도를 통해 보이고 있다. 이는 저장장치 먼저 기본적으로 전반부의 헤드(H1), 후반부의 헤드(H2), 전반부의 테일(T1), 후반부의 테일(T2) 및 중앙점(C)의 초기값은 0이다.(S101) 즉, 파일 시스템에 전반부 저널링 데이터 및 후반부 저널링 데이터가 저장되는 초기 상태를 의미하는 것이 다.4 to 6, the present invention illustrates a process of storing data, a process of determining a center point, and a process of moving a center point through a flowchart. The initial value of the head H1 in the first half of the storage device, the head H2 in the second half, the tail T1 of the first half, the tail T2 of the second half, and the center point C are basically zero (S101). This refers to the initial state in which the first half journaling data and the second half journaling data are stored in the file system.

파일 시스템에 대한 데이터 저장 요구는 버퍼를 통해 이루어지는데, 이러한 상태에서 저장 매체 즉, 각 파티션에 저장 요구(S102)가 이루어지면, 후술되는 도 7의 GC를 통해 저장 공간이 충분한지 확인하게 된다.(S103) 만약, 상기 GC에 의해 각 파티션의 공간을 확인한 결과 상기 각 파티션의 저장 공간이 충분하면 도 6의 흐름도로 바로 돌아와 수행을 계속하고, 충분하지 않으면 저장공간을 확보하고 난 다음 도 6의 흐름도로 바로 돌아와 수행을 계속한다. 여기서, H1,H2 등의 위치는 플래시 메모리에서 예를 들면, Byte 단위로 증가하는 주소이고,데이터 크기 S는 Byte 단위의 크기이므로 단위는 동일하게 연산 가능하다. The data storage request for the file system is made through a buffer. In this state, when a storage request (S102) is made in a storage medium, that is, each partition, it is checked whether there is enough storage space through the GC of FIG. (S103) If the GC checks the space of each partition and the storage space of each partition is sufficient, the flow returns to the flowchart of FIG. 6 and continues. If not, the storage space is secured. Return directly to the flowchart to continue execution. Here, the positions of H1, H2 and the like are addresses that increase in the unit of byte in the flash memory, for example, and the data size S is the size of the byte unit, so the unit can be calculated in the same way.

이러한 상태에서 중앙점(C)이 0인지 확인(S104)하게 되는데, 이것은 중앙점이 처음 결정되는지를 확인하기 위해서이며, 이는 상기 중앙점(C)이 결정되기 전의 초기상태와 결정된 후의 처리 과정이 상이하기 때문이다.In this state, it is checked whether the center point C is 0 (S104), which is to confirm whether the center point is first determined, which is different from the initial state before the center point C is determined and the processing after the determination. Because.

즉, 중앙점(C)이 처음 결정되는 경우는 헤드가 상대편 헤드와 만나는 것을 확인해야 하지만, 이미 중앙점이 형성된 경우는 헤드가 중앙점을 먼저 만나는지 확인해야 하기 때문이다. That is, when the center point C is first determined, it is necessary to confirm that the head meets the head of the other side, but when the center point is already formed, it is necessary to check whether the head meets the center point first.

본 발명은 단계 104의 판단 결과 중앙점(C)이 0일 경우 또는 O이 아닐 경우 각각의 경우에 대해 데이터가 전반부 저널링 데이터인지 확인(S105)하고, 그에 따라 데이터를 저장하게 된다.When the center point C is 0 or non-O as a result of the determination of step 104, the present invention checks whether the data is the first half journaling data (S105), and stores the data accordingly.

먼저 중앙점(C)이 0이고, 새로 저장되는 데이터가 전반부 저널링 데이터 즉, 저장장치의 전반부부터 저장되는 데이터이고, 그 크기가 S인 경우를 가정한다. First, it is assumed that the center point C is 0, and the newly stored data is the first half journaling data, that is, the first half of the storage device, and the size is S.                     

이 경우 상기 전반부 저널링 데이터의 헤드는 H1+S에 위치하게 되고, 상기 S 크기의 데이터를 저장할 수 있는 공간이 되는지 확인하기 위해 단계 106이 수행된다. In this case, the head of the first half journaling data is located at H1 + S, and step 106 is performed to check whether the space for storing the S size data is available.

즉, 이는 상기 저장되는 전반부 저널링 데이터의 헤드(H1+S)가 후반부 저널링 데이터의 헤드(H2)와 만나게 되는지를 확인(S106)하는 것이다. 만약, 저장되는 전반부 저널링 데이터 헤드(H1+S)가 후반부 저널링 데이터 헤드(H2)가 만나지 않으면, 즉, 단계 106에 도시된 H1+S ≤H2를 만족하는 경우에는 그 저장공간 즉, 각 파티션의 저장공간이 충분하다는 의미이므로 H1의 위치부터 전반부 저널링 데이터가 저장되어, 상기 데이터의 헤드는 기존의 H1위치에서 H1+S의 위치로 증가한다.(S108) 이는 도 4의 (a) 및 (b)에 해당하는 내용이다.In other words, this is to confirm (S106) whether the head H1 + S of the stored first half journaling data meets the head H2 of the second half journaling data. If the first half journaling data head H1 + S to be stored does not meet the second half journaling data head H2, i.e., satisfies H1 + S < Since the storage space is sufficient, the first half journaling data is stored from the position of H1, so that the head of the data increases from the existing position of H1 to the position of H1 + S (S108). )

그러나, 단계 106에서 H1+S ≤H2를 만족하지 못하는 경우 즉, 저장되는 전반부 저널링 데이터 헤드(H1+S)가 후반부 저널링 데이터 헤드(H2)가 만나게 되면, 이는 단계 109에 의해 상기 데이터의 크기(S) 중 저장이 가능한 크기인 (H2-H1)만큼만 상기 H1의 위치부터 저장된다.However, if H1 + S ≤ H2 is not satisfied in step 106, that is, if the stored front half journaling data head H1 + S meets the second half journaling data head H2, this means that the size of the data is determined by step 109. Only SH (H2-H1), the size of which can be stored, is stored from the position of H1.

또한, 이 경우 중앙점은 H2의 위치로 정해지고, 상기 데이터의 나머지 부분(S-(H2-H1))은 전반부 저널링의 처음부터 다시 저장된다.In this case, the center point is also set to the position of H2, and the rest of the data (S- (H2-H1)) is stored again from the beginning of the first half journaling.

즉, 단계 109에 나타난 바와 같이 중앙점(C) 값은 더 이상 0이 아니게 되며, H1은 0으로 되고, 데이터의 나머지 부분(S-(H2-H1))이 0부터 저장되며, 이에 다시 상기 H1은 (S-(H2-H1))의 크기만큼 증가하게 되는 것이다. 이는 도 4의 (c), (d)에 해당하는 내용이다. 즉, 도2의 (d)에서의 H1이 (S-(H2-H1))에 해당되고, 새로운 저 장 위치가 된다.That is, as shown in step 109, the center point C value is no longer 0, H1 becomes 0, and the rest of the data (S- (H2-H1)) is stored from 0, and thus again. H1 is to increase by the size of (S- (H2-H1)). This is the content corresponding to (c) and (d) of FIG. That is, H1 in FIG. 2 (d) corresponds to (S- (H2-H1)), and becomes a new storage position.

만약 저장되는 데이터가 후반부 저널링 데이터인 경우에는 상기 설명과 대칭적으로 저장된다.(S107)If the stored data is the latter half journaling data, it is stored symmetrically with the above description (S107).

또한, 단계 104에서 중앙점(C)이 0이 아닐 경우에도 0인 경우와 마찬가지로 저장되는 데이터가 전반부 저널링 데이터인지 확인(S110)한다. In addition, in step 104, even when the center point C is not 0, it is checked whether the stored data is the first half journaling data as in the case of 0 (S110).

단, 단계 104에서 중앙점(C)가 0이 아닌 경우는 전반부 저널링 데이터의 헤드와 후반부 저널링 데이터의 헤드가 이미 만나서 중앙점이 결정되었다는 의미이므로, 상기 저장되는 데이터가 전반부 저널링 데이터인 경우 H1+S가 중앙점(C)를 넘는지 확인해야 한다는 점에서 앞서 설명한 바와 구별된다. However, if the center point C is not 0 in step 104, it means that the head of the first half journaling data and the head of the second half journaling data have already met and the center point has been determined. Therefore, when the stored data is the first half journaling data, H1 + S It is distinguished from the above description in that it must be checked that the center point exceeds the center point (C).

이 때, 저장되는 전반부 저널링 데이터 헤드(H1+S)가 중앙점(C)을 만나지 않으면, 즉, 단계 111에 도시된 H1+S ≤C를 만족하는 경우에는 그 저장공간이 충분하다는 의미이므로 H1의 위치부터 전반부 저널링 데이터가 저장되어, 상기 데이터의 헤드는 기존의 H1위치에서 H1+S의 위치로 증가한다.(S112) At this time, if the stored front half journaling data head H1 + S does not meet the center point C, i.e., satisfies H1 + S < The first half journaling data is stored from the position of, so that the head of the data increases from the existing H1 position to the position of H1 + S. (S112)

그러나, 단계 111에서 H1+S ≤S를 만족하지 못하는 경우 즉, 저장되는 전반부 저널링 데이터 헤드(H1+S)가 중앙점(C)과 만나게 되면, 이는 단계 114에 의해 일단 상기 데이터의 크기(S) 중 저장이 가능한 크기인 (C-H1)만큼만 상기 H1의 위치부터 저장된다. However, if in step 111 the H1 + S? S is not satisfied, i.e., the stored front half journaling data head H1 + S meets the center point C, it is determined by step 114 that the size of the data S ) Is stored from the position of H1 as much as (C-H1), which is a size that can be stored.

이는 상기 전반부 저널링 데이터가 많다고 판단하여 그 공간을 충분히 확보하기 위한 것이며, 이를 통해 플래시 메모리에 대해 저장 회수를 고르게 안배할 수 있게 되는 것이다. This is to ensure that the first half of the journaling data is large enough to secure the space, through which it is possible to evenly distribute the number of times of storage for the flash memory.                     

단, 후반부 쪽으로 중앙점(C)을 밀어내는 경우 후반부 저널링 데이터의 유용한 데이터는 H2로 이동하게 되는데, 이 때 상기 후반부측에 저장 가능한 공간이 있는지 먼저 확인해야 한다.(S115) 즉, S의 나머지 부분(S-(C-H1)) 크기를 저장할 공간이 되는지 확인한다. 이는 도 5(b)에 해당하는 내용이다.However, if the center point (C) is pushed toward the second half, the useful data of the second half journaling data is moved to H2. At this time, it is necessary to check whether there is a storage space available on the second half (S115). Check if there is space to store the part (S- (C-H1)) size. This is the content corresponding to Figure 5 (b).

상기 후반부측에 저장 가능한 공간이 있으면 단계 116에서 처럼 후반부에서 (S-(C-H1)) 크기 만큼의 데이터를 H2위치로 옮기고, 그 자리에 새로운 데이터(S-(C-H1))를 저장한다. 이는 도 5(b)에서 D7-1이 H1으로 옮겨진 것을 통해 이해될 수 있다.If there is a storage space on the second half side, as in step 116, the data of the size (S- (C-H1)) is moved to the H2 position in the second half, and the new data S- (C-H1) is stored there. do. This can be understood through the transfer of D7-1 to H1 in FIG. 5 (b).

도 5는 전반부 쪽으로 중앙점을 밀어내는 경우로 서로 위의 설명과 반대이지만 그 원리는 같다.5 is a case in which the center point is pushed toward the first half and the opposite of the above description, but the principle is the same.

그러나, 상기 후반부측에 저장 가능한 공간이 없으면, 이는 후반부가 데이터로 가득 찬 경우를 의미하는 것으로 단계 118에서와 같이 가능한 만큼만 중앙점을 후반부로 밀어내고 나머지는 0의 위치로 와서(즉, H1=0) 저장하고 끝낸다.However, if there is no storage space on the latter half, this means that the latter half is full of data, pushing the midpoint to the second half as much as possible, as in step 118, and the rest comes to the zero position (i.e., H1 =). 0) Save and finish.

만약 저장되는 데이터가 후반부 저널링 데이터인 경우에는 상기 설명과 대칭적으로 저장된다.(S113)If the stored data is the latter half journaling data, it is stored symmetrically with the above description (S113).

상기와 같은 데이터의 저장 과정이 끝나면, 다시 도 7을 통해 설명하는 바와 같이 GC 수행과정을 부른다. 도 7은 이중 저널링 저장방법의 일부분으로 가비지 컬레션(GC; garbage collection) 수행 과정을 보인 흐름도이다.When the above data storage process is completed, the GC process is called again as described with reference to FIG. 7. 7 is a flowchart illustrating a process of performing garbage collection (GC) as part of a dual journaling storage method.

도 7의 GC 수행 과정에서는 일단, 데이터 저장에 대한 요구가 들어오면, GC수행되어 데이터를 저장할 만큼 자유공간이 있는지 확인한다. In the process of performing GC of FIG. 7, once a request for data storage is received, GC is performed to check whether there is enough free space to store data.                     

저장할 데이터는 일단 저장 버퍼(buffer)에 존재한다. 저장할 데이터 크기의 자유공간이 없으면, 저널링 방법에 의해 데이터를 옮기고 무효화 공간을 지움 블록만큼 모아 지움 과정을 수행한 다음, 새로운 데이터에 대한 최소한의 공간이 확보되면, 먼저 저장을 수행한다. 여기까지가 도 6에서 처음 부분 GC를 부른 경우이다.(도 6의 S101-S103) The data to be stored once exists in the storage buffer. If there is no free space of the data size to be stored, the data is moved by the journaling method and the invalidation space is erased as much as the erased block. After the minimum space for new data is secured, the storage is performed first. This is the case where the first partial GC is called in Fig. 6 (S101-S103 in Fig. 6).

그리고, 일정한 데이터 크기에 대해 자유 블록(free block)이 존재한 상태(S201)에서 버퍼에 데이터가 있는지 확인(S202)한 후, 만약 버퍼에 데이터가 있을 경우 그 데이터가 전반부 저널링인가 확인(S203)한다. After checking whether there is data in the buffer (S202) in a state in which a free block exists for a certain data size (S201), and if there is data in the buffer, it is checked whether the data is the first half journaling (S203). do.

이 때, 상기 자유 블록은 지움 블록에 대한 지움 과정이 수행된 후 형성되는 것으로, 데이터를 저장할 수 있는 공간을 의미한다. 또한, 일정 크기의 자유 블록은 자유 공간을 형성한다.At this time, the free block is formed after the erase process is performed on the erase block, and means a space for storing data. In addition, free blocks of a certain size form a free space.

단계 203에서 데이터가 전반부 저널링이 아닐 경우 후반부도 전반부와 같은 방식으로 수행(S204)하고, 반대로 데이터가 전반부 저널링일 경우 자유공간이 충분한지 확인(S205)한다.In step 203, if the data is not the first half journaling, the second half is also performed in the same manner as the first half (S204). On the contrary, if the data is the first half journaling, it is checked whether there is enough free space (S205).

단계 205에서 자유공간이 충분하면 GC 수행을 종료하고, 반대로 자유공간이 충분하지 않으면 전반부 테일(T1)에서 유효한 공간을 전반부 헤드(H1)으로 옮기고 지움 블록에 무효화 공간을 확보하고 지운다.(S206)In step 205, if the free space is sufficient, the GC ends. If the free space is not sufficient, the effective space is moved from the first half tail T1 to the first half head H1, and the invalidation space is secured and erased in the erase block (S206).

한편, 삽입 데이터에 대한 저장이 수행된 뒤 저장 공간 즉, 각 파티션의 저장공간 내에 충분한 공간을 확보하기 위해 다시 한번 GC가 불러지는데, 이 때는 도 8의 그래프에 의해 지워야 할 지움 블록의 개수를 결정한다. 이는 저장 버퍼에 저 장할 데이터가 없을 경우 수행된다. On the other hand, after the storage of the inserted data is performed, the GC is once again called to secure enough space in the storage space, that is, the storage space of each partition, in which case the number of erased blocks to be erased is determined by the graph of FIG. do. This is done when there is no data to store in the save buffer.

이러한 상태에서 도 8과 같이, 결정 그래프에서 N2 이상의 자유(free) 블록을 확보하고 있으면, 더 이상 지움 블록에 대한 지움 과정이 발생하지 않는다. N2는 보통 전체 저장 공간에 대해 약 10% 정도로 설정한다.현재 자유 블록의 개수가 N1에서 N2 사이에 있을 때는 최대한 N2 이상의 자유 블록을 확보하기 위하여 소정의 지움 블록 개수만큼 지운다.(S207, 208, 210, 211)이 때, 상기 N1값은 상기 자유 블록이 고갈되는 한계값을 의미하는 것으로, 그 설정에 따라 2 또는 3으로 잡을 수 있다. 즉, 2개나 3개의 자유 블록만 현 시스템 내에 남게 되면, 시스템은 가장 우선적으로 무효화 데이터 및 유효 데이터가 섞여 있는 지움 블록 중에서 유효 데이터를 다른 자유 블록으로 옮기고, 그에 따라 상기 지움 블록이 무효화 블록이 되면 지움 과정을 수행하여 자유 공간을 확보하게 된다. In this state, as shown in FIG. 8, if N 2 or more free blocks are secured in the decision graph, the erase process for the erased block no longer occurs. N 2 is usually set to about 10% of the total storage space. When the current number of free blocks is between N 1 and N 2 , the number of free blocks is deleted as much as the number of erased blocks to secure N 2 or more free blocks. In this case, the N 1 value means a limit value at which the free block is depleted, and may be set to 2 or 3 depending on the setting. That is, if only two or three free blocks remain in the current system, the system first moves valid data to another free block among the erased blocks containing invalid data and valid data, and thus the erased block becomes an invalidated block. Clearing process is performed to free up space.

또한, 상기 N2값은 전체 플래시 메모리의 지움 블록 개수의 약 10% 정도를 설정한다.In addition, the N 2 value sets about 10% of the number of erase blocks of the entire flash memory.

이는 플래시 메모리의 지움 블록을 지우는 시간은 저장하는 시간의 2 ~ 10배, 데이터 읽는 시간의 100 ~ 1000배 정도로 매우 길기 때문에 자주 지움 과정을 시행하는 것은 시스템이 전체적으로 느려지는 결과를 초래한다. Since the erase time of the flash memory block is very long, about 2 to 10 times the storage time and 100 to 1000 times the data reading time, the frequent erase process causes the system to slow down overall.

그에 따라 플래시 메모리의 공간이 상당히 있다고 여겨질 때는 필요 없이 지움 과정을 수행하지 않는데, 상기 플래시 메모리의 자유 공간이 상당히 있다고 판 단하는 정도가 일반적으로 상기 10% 정도이다.단계 207에서 현재 자유 블록의 개수가 N1 미만이면, 어떤 연산보다 우선하여 지움 블록을 확보한다. 지움(삭제) 연산을 수행한 뒤로도 자유 지움 블록의 개수가 N1 이하이면 더 이상의 저장공간이 없다는 뜻이다.Thus, when it is considered that the space of the flash memory is considered to be considerable, the erase process is not performed without necessity, and it is generally about 10% that the free space of the flash memory is considered to be significant. If the number is less than N 1 , the erased block is secured in advance of any operation. If the number of free erased blocks is less than or equal to N 1 even after the delete operation is performed, there is no more storage space.

또한, 단계 210에서 현재 자유 블록의 개수가 N2 이하이면 그에 따라 지움 블록에 무효화 공간을 확보하고 이를 지운다.(S210, 211)In addition, if the current number of free blocks is equal to or less than N 2 in step 210, an invalidation space is secured in the erased block and erased accordingly (S210, 211).

처음 GC에서부터 충분한 자유 공간을 확보하지 않는 이유는 지움 과정이 읽기(판독)나 쓰기(기록)에 비해 시간을 많이 소모하는데, 데이터 저장에 대한 요구가 들어 왔을 때, 자유 공간을 충분히 확보하기 위해서는 데이터 저장에 대한 수행 시간(latency time)이 길어지기 때문이다. 또한, 대부분의 플래시 메모리는 지움 과정을 수행하다가 읽기 및 쓰기 연산의 요구가 들어오면, 지움 과정을 보류하고(suspend) 우선 순위가 높은 연산을 수행하도록 하는 기능이 있기 때문에 이를 활용할 수 있다.The reason for not having enough free space from the first GC is that the erase process is more time consuming than read (read) or write (write). When the demand for data storage comes in, This is because the latency time for storage becomes long. In addition, since most flash memories perform a erase process and a read and write operation is required, the flash memory may suspend the erase process and perform a high priority operation.

또한, 도 3 내지 도 8을 통해 설명한 다중 분할된 플래시 메모리 및 데이터의 이중 저널링 저장방법은 다양한 목적으로 사용될 수 있다.In addition, the multi-division flash memory and the dual journaling storage method of data described with reference to FIGS. 3 to 8 may be used for various purposes.

여기서, 파티션들의 개수는 플래시 메모리의 기능에 의존하는데, 도 8은 하나의 실시예로 3중 분할된 플레시 메모리를 도시한 것이다. Here, the number of partitions depends on the function of the flash memory. FIG. 8 illustrates a triple memory flash memory in one embodiment.

상기 3중분할 플래시 메모리 장치의 사용 례는 다음과 같다. 첫 번째 파티션(partition)은 데이터를 저장하기 위해 사용될 수 있다. 두 번째 파티션(partition)은 플래시 메모리를 포함하는 장치에 의해 실행되는 코드를 저장하기 위해 사용될 수 있다. 세 번째 파티션(partition)은 코드의 갱신을 허용하기 위해 사용될 수 있다. An example of using the triple split flash memory device is as follows. The first partition can be used to store data. The second partition can be used to store code executed by a device containing flash memory. The third partition can be used to allow code updates.

예를 들어, 갱신 결과 코드가 바뀌는 경우, 두 번째 파티션(partition)에 저장되어 있는 원 코드가 실행되는 동시에 새로운 코드는 세 번째 파티션(partition)에 기록된다. For example, if the update code changes, the original code stored in the second partition is executed while the new code is written to the third partition.

새로운 코드가 기록되고 검증되면, 세 번째 파티션(partition)은 코드를 위해 사용되는 파티션(partition)이 된다. 따라서, 플래시 메모리의 이음새 없는(seamless) 갱신이 가능하다. Once the new code is written and verified, the third partition is the partition used for the code. Thus, seamless update of the flash memory is possible.

3중분할 플래시 메모리 장치의 다른 실시 예로서, 코드는 첫 번째 파티션(partition)으로부터 실행되도록 하고, 데이터 갱신은 두 번째 파티션(partition)에서 이루어지도록 한다. 따라서, 코드 실행의 결과 데이터 갱신이 필요한 경우, 이음새 없이 데이터 갱신이 이루어 질 수 있다. In another embodiment of a triple segment flash memory device, code is executed from the first partition and data updates are made from the second partition. Therefore, when data update is required as a result of code execution, data update can be performed seamlessly.

도 9는 본 발명에 의한 3중분할 플래시 메모리 장치의 일 실시예를 도시한 것이다. 9 illustrates an embodiment of a triple segment flash memory device according to the present invention.

도 9를 참조하면, 파티션(partition) A 310, 파티션(partition) B 315, 및 파티션(partition) C 320은 각각 X 디코더 및 Y 셀렉터와 관련되어 있고, 독립적으로 액세스될 수 있다. Referring to FIG. 9, partition A 310, partition B 315, and partition C 320 are associated with an X decoder and a Y selector, respectively, and may be independently accessed.

도 9에 도시된 레이아웃은 플래시 메모리 장치의 실제 레이아웃의 일 실시예에 대응한다. The layout shown in FIG. 9 corresponds to one embodiment of the actual layout of the flash memory device.                     

X 디코더(307) 및 Y 셀렉터들(309, 312)은 파티션(partition) A(305, 310)와 관련되어 있다. 일 실시예로서, 파티션(partition) A(310)는 Y 셀렉터들(309, 312)에 의해 반으로 분할되어 있다. 파티션(partition) A(310)의 분할은, 파티션(partition) A의 첫 번째 부분(310)은 파티션(partition) B와 정렬되도록 하는 한편, 파티션(partition) A의 나머지 부분(305)은 파티션(partition) C와 정렬되도록 하는 것과 같이 레이아웃의 목적 때문이다. X decoder 307 and Y selectors 309 and 312 are associated with partition A 305 and 310. In one embodiment, partition A 310 is divided in half by Y selectors 309 and 312. Partitioning of partition A 310 allows the first portion 310 of partition A to align with partition B, while the remaining portion 305 of partition A is partition ( partition) because of the purpose of the layout, such as to align with C.

이 때, 하나의 실시예로 상기 파티션(partition) A(310)의 분할은 판독 속도 성능을 최적화시킬 수 있으며, Y 셀렉터들(309, 312)은 Y 디코더(325)와 연결되어 있다. At this time, in one embodiment, partitioning of partition A 310 may optimize read speed performance, and Y selectors 309 and 312 are connected to Y decoder 325.

또한, 상태 레지스터(status register)(335)는 파티션(partition) A와 관련되어 있다. 상태 레지스터(status register)(335)는 파티션(partition) A의 상태--유휴 상태(idle), 판독 중(being read), 기록 중(being written), 또는 삭제 중(being erased)--를 나타낸다. Status register 335 is also associated with partition A. Status register 335 indicates the state of partition A--idle, being read, being written, or being erased. .

유사하게, 파티션(partition) B에 있어서, X 디코더(317), Y 셀렉터(319) 및 상태 레지스터(status register)(340)가 있다. 파티션(partition) C 또한 X 디코더(323), Y 셀렉터(322) 및 상태 레지스터(status register)(345)를 포함한다. Similarly, for partition B, there is an X decoder 317, a Y selector 319, and a status register 340. Partition C also includes an X decoder 323, a Y selector 322, and a status register 345.

일 실시예로서, 단일 사용자 인터페이스(330)는 각 파티션(partition)에 대하여, 상태 레지스터(status register)(335, 340, 345)가 연결되어 있다.In one embodiment, a single user interface 330 is associated with status registers 335, 340, and 345 for each partition.

감지 증폭기들(sense amplifiers)(350)은 모든 파티션(partition)들을 지원한다. 일 실시 예로서, 감지 증폭기들(sense amplifiers)의 수는 18개이다. Sense amplifiers 350 support all partitions. In one embodiment, the number of sense amplifiers is eighteen.                     

여기서, 16개의 감지 증폭기들(sense amplifiers)(350)은 파티션(partition)들 중 하나에 대한 판독 동작에 사용된다. 하나의 감지 증폭기(sense amplifier)는 파티션(partition)들 중 하나로부터의 병렬 기록 동작에 사용된다. Here, sixteen sense amplifiers 350 are used for a read operation on one of the partitions. One sense amplifier is used for parallel write operations from one of the partitions.

인터페이스는 각 병렬 기록 동작을 제어하는 복수의 상태기들(state machines)을 포함한다. 따라서, 2개의 병렬 기록 동작(2개의 파티션(partition)에 동시에 기록)이 있는 경우, 2개의 상태기들(state machines)이 존재한다.The interface includes a plurality of state machines that control each parallel write operation. Thus, if there are two parallel write operations (write to two partitions at the same time), there are two state machines.

또한, 충전 펌프들(charge pumps)(360)의 개수는 또한 병렬 동작의 개수에 대응한다. 다른 실시 예로서, 하나의 충전 펌프(charge pump)(360)에 대한 결선의 수는 병렬 동작의 개수와 동일하다. In addition, the number of charge pumps 360 also corresponds to the number of parallel operations. In another embodiment, the number of connections for one charge pump 360 is equal to the number of parallel operations.

각 결선은 상이한 전압 레벨을 유지하여, 상이한 전압 레벨을 사용하는 다중 동작을 허용한다. 일 실시 예로서, 독립된 결선이 각 파티션(partition)과 관련된 디코더들과 연결된다. Each connection maintains a different voltage level, allowing multiple operations using different voltage levels. In one embodiment, independent wiring is connected with decoders associated with each partition.

따라서, 첫 번째 결선은 첫 번째 파티션(partition)에, 두 번째 결선은 두 번째 파티션(partition)에 연결된다. 다른 결선도 마찬가지이다. 따라서, 각 결선은 파티션(partition)에서 실행될 수 있는 각각의 동작에 대응하는 다양한 전압 레벨을 출력한다. Thus, the first connection connects to the first partition and the second connection connects to the second partition. The same is true for other connections. Thus, each connection outputs a variety of voltage levels corresponding to each operation that can be executed in the partition.

다른 실시 예로서, 첫 번째 결선은 기록에 필요한 전압 레벨, 두 번째 결선은 판독에 필요한 전압 레벨, 세 번째 결선은 삭제에 필요한 전압 레벨을 출력한다. 이 경우, 스위치들은 수행되려고 하는 동작에 필요한 적합한 결선을 적합한 파티션(partition)에 연결시킨다. In another embodiment, the first connection outputs the voltage level required for writing, the second connection outputs the voltage level required for reading, and the third connection outputs the voltage level required for deletion. In this case, the switches connect the appropriate wiring to the appropriate partition, which is necessary for the operation to be performed.                     

도 10은 본 발명에 의한 플래시 메모리 장치를 사용하는 휴대 단말기의 예를 도시한 것이다. 10 shows an example of a portable terminal using the flash memory device according to the present invention.

휴대 단말기(410)는 본 발명의 일 실시예에 의한 플래시 메모리 장치(430)를 포함한다. The mobile terminal 410 includes a flash memory device 430 according to an embodiment of the present invention.

단, 상기 플래시 메모리(430)가 휴대 단말기(410)에 도시되어 있기는 하나, 일반적으로 플래시 메모리(430)는 휴대 단말기(410)의 본체 내 저장소(receptacle)에 수용되어 있는 것으로 이해되어야 한다. However, although the flash memory 430 is shown in the portable terminal 410, it should be understood that the flash memory 430 is generally accommodated in a receptacle in the main body of the portable terminal 410.

또한, 상기 휴대 단말기에는 다양한 버스(bus) 및 상기 버스에 연결된 프로세서(processor)가 구비되고, 상기 본 발명에 의한 플래시 메모리(430)는 상기 버스에 연결되고, 상기 프로세서에 의해 액세스가 가능하다. In addition, the portable terminal is provided with various buses and a processor connected to the bus, and the flash memory 430 according to the present invention is connected to the bus and accessible by the processor.

도시된 휴대 단말기(410)는 작동 중으로, 코드를 실행하고 있으며, 현재 활성화된 코드를 포함하는 파티션(partition)(460)이 실행되고 있다. The illustrated mobile terminal 410 is running, executing code, and executing a partition 460 including currently activated code.

이러한 코드의 사용은 본 기술 분야에서 알려져 있다. 또 다른 파티션(partition)(450)은 호출 또는 음성 데이터를 포함하고 있다. 예를 들어, 휴대 단말기(410)는 호출 디렉터(dialing director) 또는 유사한 데이터를 데이터 파티션(partition)(450)에 포함할 수 있다. The use of such codes is known in the art. Another partition 450 contains call or voice data. For example, the mobile terminal 410 may include a calling director or similar data in the data partition 450.

세 번째 파티션(partition)(470)은 외부에서 새로운 코드(440)를 수용한다. 일 실시 예로서, 세 번째 파티션(partition)은 원격 적으로 갱신될 수 있다. 따라서, 휴대 단말기가 작동 중인 동안, 새로운 코드(440)가 새로운 코드 파티션(partition)(470)에 기록되고 데이터 파티션(partition)(450)이 호출 데이터 를 재생하기 위해 사용되는 동시에, 파티션(partition)(460)에 저장되어 있는 코드가 실행될 수 있다. The third partition 470 accepts the new code 440 from the outside. In one embodiment, the third partition can be updated remotely. Thus, while the mobile terminal is in operation, a new code 440 is written to a new code partition 470 and a data partition 450 is used to reproduce the calling data, while at the same time a partition. Code stored at 460 may be executed.

이러한 방식으로, 상기 휴대 단말기는 이음새 없는 이동 전화 코드의 갱신과, 동시적인 갱신 및 휴대 단말기의 사용을 허용한다. 이러한 이음새 없는 코드 갱신과 같은 다른 응용 분야들은 유사하게 구현될 수 있다.In this manner, the portable terminal allows for the update of seamless mobile phone codes, simultaneous updates and the use of the portable terminal. Other application areas, such as seamless code updates, can be implemented similarly.

또한, 상기 각각의 파티션에서의 데이터 저장은 도 4 내지 도 8을 통해 설명한 본 발명에 의한 이중 저널링 저장방법에 의함을 그 특징으로 한다. In addition, the data storage in each partition is characterized by the dual journaling storage method according to the present invention described with reference to FIGS.

이상에서 설명한 바와 같이 본 발명의 실시예에서는 기록 중 판독 동작을 허용하도록 플래시 메모리 장치에 복수의 파티션(partition)이 포함되고, 각 파티션은 다른 파티션들과 함께 판독, 기록 및 삭제가 가능토록 하며, 또한 상기 플래시 메모리의 각 파티션에 저장되는 데이터에 대해 이를 메타 데이터와 일반 파일 데이터를 분리하여, 파일 데이터는 저장 매체 즉, 각 파티션의 처음 위치부터 저장하고, 메타 데이터는 상기 각 파티션의 끝 위치부터 처음 방향으로 저장하는 이중의 저널링 저장방법을 기술하고 있다.As described above, in the embodiment of the present invention, a plurality of partitions are included in the flash memory device to allow a read operation during writing, and each partition can be read, written, and deleted along with other partitions. In addition, for the data stored in each partition of the flash memory to separate the metadata and the normal file data, the file data is stored from the storage medium, that is, from the beginning of each partition, the metadata from the end of each partition It describes a dual journaling storage method for storing in the first direction.

실시예에서와 같이 이중 저널링 저장방법을 이용할 경우, 종류가 같은 데이터를 일정 영역에 유지하기 때문에 빠른 데이터 접근 시간을 이룰 수 있으며, 플래시 메모리에서 지움 회수를 플래시 메모리 공간에 고르게 안배할 수 있다. When using the dual journaling storage method as in the embodiment, it is possible to achieve fast data access time because the same type of data is kept in a certain area, and the number of erases from the flash memory can be evenly distributed in the flash memory space.

또한 저널링 저장 방식의 특징에 따라 전원 오류 등에 의해 데이터 오류가 발생한 경우, 이전 버전으로의 데이터 복구가 용이함으로 데이터에 대한 신뢰성을 보장하는 효과가 있다. In addition, according to the characteristics of the journaling storage method, if a data error occurs due to a power failure, data recovery to the previous version is easy, thereby ensuring the reliability of the data.

이상에서 설명한 것은 본 발명에 따른 저장 매체에 데이터를 저장하기 위한 이중 저널링 저장방법을 설명한 하나의 실시 예에 불과한 것으로써, 본 발명은 상기한 실시 예에 한정되지 않고, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 사상이 미친다고 할 것이다.
What has been described above is only one embodiment that describes a dual journaling storage method for storing data in a storage medium according to the present invention, and the present invention is not limited to the above-described embodiment, and is claimed in the following claims. Without departing from the gist of the present invention, any person having ordinary knowledge in the field of the present invention will have the technical idea of the present invention to the extent that various modifications can be made.

Claims (22)

플래시 메모리 장치에 있어서,In a flash memory device, 다중 분할된 메모리와,Multiple partitioned memory, 상기 메모리의 다중 분할에 의해 구분되는 것으로, 저장되는 데이터가 독립적으로 기록, 판독 또는 삭제될 수 있는 다수의 파티션과,A plurality of partitions separated by multiple divisions of the memory, in which data to be stored can be independently written, read or deleted; 상기 기록, 판독 및 삭제를 위한 전압을 출력하기 위한 다수의 전압 출력을 제공하는 충전 펌프와,A charge pump providing a plurality of voltage outputs for outputting voltages for writing, reading and erasing; 상기 각 파티션이 동시에 실행 가능한 판독 동작을 위한 다수의 제 1감지 증폭기 및 상기 각 파티션이 동시에 실행 가능한 삭제, 기록 동작을 위한 적어도 하나 이상의 감지 증폭기를 포함하는 다수의 제 2감지 증폭기가 포함되며,A plurality of first sense amplifiers comprising a plurality of first sense amplifiers for read operations in which each partition is executable at the same time and at least one sense amplifier for erase and write operations in which each partition is executable simultaneously; 상기 각 파티션에 저장되는 데이터가 상기 각 파티션의 저장공간 처음 위치와 끝 위치로부터 각각 중앙쪽으로 저장되는데 있어서, 상기 저장공간의 처음 위치에서 저장되는 전반부 저널링의 헤드와 상기 저장 공간의 끝 위치로부터 저장되는 후반부 저널링의 헤드가 만나 중앙점이 처음으로 형성된 후, 전반부 또는 후반부 저널링 헤드가 상기 중앙점을 다시 만나게 되면, 상기 중앙점이 상대편 저널링 쪽으로 이동되는 것을, 특징으로 하는 다중 분할된 플래시 메모리 장치. The data stored in each partition is stored toward the center from each of the first and last positions of the storage space of each partition, and is stored from the head of the first half journaling stored at the first position of the storage space and the end position of the storage space. And after the head of the second half journaling meets the center point for the first time, and when the first half or the second half journaling head meets the center point again, the center point is moved toward the opposite journaling. 청구항 2은(는) 설정등록료 납부시 포기되었습니다.Claim 2 has been abandoned due to the setting registration fee. 제 1항에 있어서,The method of claim 1, 상기 각 파티션에 저장되는 데이터의 종류 또는 성격이 서로 다른 경우, 전반부 저널링과 후반부 저널링으로 각각 구분되어 저장되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치.When the type or the nature of the data stored in each partition is different, the multi-partitioned flash memory device, characterized in that divided into the first half journaling and the second half journaling. 청구항 3은(는) 설정등록료 납부시 포기되었습니다.Claim 3 was abandoned when the setup registration fee was paid. 제 2항에 있어서,3. The method of claim 2, 상기 전반부 저널링과 후반부 저널링으로 각각 구분되어 저장되는 데이터가 중앙점에서 만나는 경우, 처음 위치에서 다시 데이터가 저장되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치.And when data stored separately divided into the first half journaling and the second half journaling are met at a center point, the data is stored again at an initial position. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.Claim 4 was abandoned when the registration fee was paid. 제 2항에 있어서,3. The method of claim 2, 상기 전반부 저널링의 헤드와 상기 후반부 저널링의 헤드가 만나 중앙점이 처음으로 형성된 후, 상기 중앙점이 두 번째 이상 형성되는 경우에 대해, 전반부 또는 후반부 헤드가 상기 중앙점을 다시 만나게 되면, 상기 중앙점이 상대편 저널링 쪽으로 이동되며, 상기에서 헤드는 데이터를 저장하는 위치를 나타내는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치.After the head of the first half journaling and the head of the second half journaling meet and the center point is formed for the first time, for the case where the center point is formed a second time or more, when the first half or the second half head meets the center point again, the center point is the opposite journaling. Move toward to the head, wherein the head indicates a location for storing data. 청구항 5은(는) 설정등록료 납부시 포기되었습니다.Claim 5 was abandoned upon payment of a set-up fee. 제 1항에 있어서,The method of claim 1, 상기 각 파티션에 저장되는 데이터는 메타 데이터와 일반 파일 데이터로 분리되고, 상기 파일 데이터는 각 파티션의 처음 위치부터 저장되며, 상기 메타 데이터는 상기 각 파티션의 끝 위치부터 처음 방향으로 저장되는데 있어서, 상기 저장공간의 처음 위치 및 끝 위치에서 저장되는 한쪽의 데이터 양 및 이용 가능한 각각의 저장공간의 양 중에서 적어도 하나이상에 근거하여, 상기 중앙점의 위치가, 보다 많은 데이터를 저장하는 방향으로 이동하도록 형성되는것을 특징으로 하는 다중 분할된 플래시 메모리 장치.The data stored in each partition is divided into metadata and general file data, the file data is stored from the beginning of each partition, and the metadata is stored in the first direction from the end of each partition. Based on at least one of the amount of one data stored at the start position and the end position of the storage space and the amount of each available storage space, the position of the center point is configured to move in the direction of storing more data And a multiple partitioned flash memory device. 버스와,Bus, 상기 버스에 연결된 프로세서와,A processor connected to the bus, 상기 버스에 연결되고, 상기 프로세서에 의해 액세스가 가능하며, 다수의 파티션으로 분할되어 각 파티션 별로 저장되는 데이터가 독립적으로 기록, 판독 또는 삭제될 수 있는 플래시 메모리와,A flash memory connected to the bus, accessible by the processor, and divided into a plurality of partitions, in which data stored in each partition can be independently written, read or deleted; 상기 각 파티션이 동시에 실행 가능한 판독 동작을 위한 다수의 제 1감지 증폭기 및 상기 각 파티션이 동시에 실행 가능한 삭제, 기록 동작을 위한 적어도 하나 이상의 감지 증폭기를 포함하는 다수의 제 2감지 증폭기가 포함되며,A plurality of first sense amplifiers comprising a plurality of first sense amplifiers for read operations in which each partition is executable at the same time and at least one sense amplifier for erase and write operations in which each partition is executable simultaneously; 상기 각 파티션에 저장되는 데이터가 상기 각 파티션의 저장공간 처음 위치와 끝 위치로부터 각각 중앙쪽으로 저장되는데 있어서, 상기 각 파티션에 저장되는 데이터의 종류 또는 성격이 서로 다른 경우, 전반부 저널링과 후반부 저널링으로 각각 구분되어 저장되며, 상기 전반부 저널링의 헤드와 상기 후반부 저널링의 헤드가 만나 중앙점이 처음으로 형성된 후, 상기 중앙점이 두 번째 이상 형성되는 경우에 대해, 전반부 또는 후반부 헤드가 상기 중앙점을 다시 만나게 되면, 상기 중앙점이 상대편 저널링 쪽으로 이동되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치가 채용된 휴대 단말기.The data stored in each partition is stored toward the center from the start position and the end position of the storage space of each partition. When the type or the nature of the data stored in each partition is different, the first half journaling and the second half journaling are respectively used. When the head of the first half journaling and the head of the second half journaling meet each other and the center point is first formed, and the center point is formed second or more, when the first half or the second half head meets the center point again, And the center point is moved to the opposite journaling side. 삭제delete 청구항 8은(는) 설정등록료 납부시 포기되었습니다.Claim 8 was abandoned when the registration fee was paid. 제 6항에 있어서,The method of claim 6, 상기 전반부 저널링과 후반부 저널링으로 각각 구분되어 저장되는 데이터가 중앙점에서 만나는 경우, 처음 위치에서 다시 데이터가 저장되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치가 채용된 휴대 단말기.And when data stored separately divided into the first half journaling and the second half journaling are met at a central point, the data is stored at the first position again. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.Claim 9 was abandoned upon payment of a set-up fee. 제 6항에 있어서,The method of claim 6, 상기 전반부 저널링의 헤드와 상기 후반부 저널링의 헤드가 만나 중앙점이 처음으로 형성된 후, 상기 중앙점이 두 번째 이상 형성되는 경우에 대해, 전반부 또는 후반부 헤드가 상기 중앙점을 다시 만나게 되면, 상기 중앙점이 상대편 저널링 쪽으로 이동되며, 상기에서 헤드는 데이터를 저장하는 위치를 나타내는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치가 채용된 휴대 단말기.After the head of the first half journaling and the head of the second half journaling meet and the center point is formed for the first time, for the case where the center point is formed a second time or more, when the first half or the second half head meets the center point again, the center point is the opposite journaling. And a head indicates a location for storing data, wherein the head is a multi-divided flash memory device. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.Claim 10 was abandoned upon payment of a setup registration fee. 제 6항에 있어서,The method of claim 6, 상기 각 파티션에 저장되는 데이터는 메타 데이터와 일반 파일 데이터로 분리되고, 상기 파일 데이터는 각 파티션의 처음 위치부터 저장되고, 상기 메타 데이터는 상기 각 파티션의 끝 위치부터 처음 방향으로 저장되는데 있어서, 상기 저장공간의 처음 위치 및 끝 위치에서 저장되는 한쪽의 데이터 양 및 이용 가능한 각각의 저장공간의 양 중에서 적어도 하나이상에 근거하여, 상기 중앙점의 위치가, 보다 많은 데이터를 저장하는 방향으로 이동하도록 형성되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치가 채용된 휴대 단말기.The data stored in each partition is divided into metadata and general file data, the file data is stored from the beginning of each partition, and the metadata is stored in the first direction from the end of each partition. Based on at least one of the amount of one data stored at the start position and the end position of the storage space and the amount of each available storage space, the position of the center point is configured to move in the direction of storing more data A portable terminal employing a multi-divided flash memory device, characterized in that. 다수의 파티션으로 분할되어 각 파티션 별로 데이터가 각각 기록, 판독 또는 삭제될 수 있는 플래시 메모리의 각 파티션에 데이터를 저장하는 방법에 있어서, In the method for storing data in each partition of the flash memory divided into a plurality of partitions, each data can be written, read or deleted for each partition, 상기 각 파티션의 저장공간 처음 위치와 끝 위치로부터 각각 중앙쪽으로 데이터를 저장해 가는데 있어서, 상기 저장 매체에 종류나 성격이 서로 다른 종류의 데이터가 저장될 때, 전반부 저널링과 후반부 저널링으로 각각 구분되어 저장되며, 상기 전반부 저널링의 헤드와 상기 후반부 저널링의 헤드가 만나 중앙점이 처음으로 형성되고, 이후, 중앙점이 두 번째 이상 형성되는 경우에 대해 전반부 또는 후반부 헤드가 중앙점을 다시 만날 경우, 중앙점이 상대편 저널링 쪽으로 이동되며, 상기에서 헤드는 데이터를 저장하는 위치를 나타내는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.In storing data from the first position and the end position of the storage space of each partition toward the center, when data of different types or characteristics are stored in the storage medium, the data is divided into first half journaling and second half journaling. When the head of the first half journaling and the head of the second half journaling meet and the center point is formed first, and then, when the first half or the second half head meets the center point for the case where the center point is formed more than a second time, the center point is directed toward the opposite journaling. The method of claim 2, wherein the head represents a location for storing data. 삭제delete 청구항 13은(는) 설정등록료 납부시 포기되었습니다.Claim 13 was abandoned upon payment of a registration fee. 제 11항에 있어서,The method of claim 11, 상기 데이터가 저장되어 전반부 저널링과 후반부 저널링이 중앙점에서 만날 경우 처음 위치에서 다시 데이터가 저장되는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.And storing the data in the divided memory, wherein the data is stored so that the first half journaling and the second half journaling are met at the center point. 삭제delete 청구항 15은(는) 설정등록료 납부시 포기되었습니다.Claim 15 was abandoned upon payment of a registration fee. 제 11항에 있어서,The method of claim 11, 상기 각 파티션에 저장되는 데이터는 메타 데이터와 일반 파일 데이터로 분리되고, 상기 파일 데이터는 각 파티션의 처음 위치부터 저장되고, 상기 메타 데이터는 상기 각 파티션의 끝 위치부터 처음 방향으로 저장되는데 있어서, 상기 저장공간의 처음 위치 및 끝 위치에서 저장되는 한쪽의 데이터 양 및 이용 가능한 각각의 저장공간의 양 중에서 적어도 하나이상에 근거하여, 상기 중앙점의 위치가, 보다 많은 데이터를 저장하는 방향으로 이동하도록 형성되는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.The data stored in each partition is divided into metadata and general file data, the file data is stored from the beginning of each partition, and the metadata is stored in the first direction from the end of each partition. Based on at least one of the amount of one data stored at the start position and the end position of the storage space and the amount of each available storage space, the position of the center point is configured to move in the direction of storing more data Dual journaling storage method for storing data in the divided memory, characterized in that. 다수의 파티션으로 분할되어 각 파티션 별로 데이터가 각각 기록, 판독 또는 삭제될 수 있는 플래시 메모리의 각 파티션에 데이터 삽입시 저널링 저장방법에 있어서, In the journaling storage method when inserting data into each partition of the flash memory which is divided into a plurality of partitions and data can be recorded, read or deleted for each partition, 상기 각 파티션에 데이터 삽입에 대한 요구가 들어왔을 때 GC (Garbage collection) 를 수행하여 저장공간이 충분하지 않을 경우 데이터를 이동하여 지움 과정을 수행하는 단계; 및Performing a GC (Garbage collection) when a request for data insertion is input to each partition, and moving and erasing data when there is not enough storage space; And 데이터 저장이 완료된 후 상기 각 파티션에 충분한 공간이 있는지 확인하여 다음 삽입 데이터를 저장하기 위한 공간을 확보하는 단계;를 포함하며, 상기 각 파티션에 저장되는 데이터의 종류 또는 성격이 서로 다른 경우, 전반부 저널링과 후반부 저널링으로 각각 구분되어 저장되며, 상기 전반부 저널링의 헤드와 상기 후반부 저널링의 헤드가 만나 중앙점이 처음으로 형성된 후, 상기 중앙점이 두 번째 이상 형성되는 경우에 대해, 전반부 또는 후반부 헤드가 상기 중앙점을 다시 만나게 되면, 상기 중앙점이 상대편 저널링 쪽으로 이동되는데 있어, 상기 저장공간의 처음 위치 및 끝 위치에서 저장되는 한쪽의 데이터 양 및 이용 가능한 각각의 저장공간의 양 중에서 적어도 하나이상에 근거하여, 상기 중앙점의 위치가, 보다 많은 데이터를 저장하는 방향으로 이동하도록 형성되는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.Checking whether there is enough space in each partition after data storage is completed to secure a space for storing the next inserted data; and if the type or nature of data stored in each partition is different, first half journaling And the second half journaling and the second half journaling, respectively, are stored in the front half journaling head and the second half journaling head, and the center point is formed for the first time after the center point is formed. Is again encountered, the center point is moved toward the opposite journaling, based on at least one of the amount of data stored in the first position and the end position of the storage space and the amount of available storage space, The location of the point to store more data A dual journaling storing method for storing data in the divided memory, characterized in that formed for movement. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.Claim 17 has been abandoned due to the setting registration fee. 제 4항에 있어서, 상기 중앙점은 저장될 각각의 데이터 양 또는 데이터가 저장되는 각각의 저장 영역 크기에 의거 가변적으로 형성되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치.The multi-partitioned flash memory device of claim 4, wherein the center point is variably formed based on an amount of data to be stored or a size of each storage area in which data is stored. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.Claim 18 was abandoned upon payment of a set-up fee. 제 1항 또는 17항에 있어서, 다중 분할된 메모리의 파티션 영역에서 전반부 저널링과 후반부 저널링의 각 영역은 저장될 각각의 데이터 양 또는 데이터가 저장되는 각각의 저장 영역 크기에 의거 가변적으로 형성되는 것을 특징으로 하는 다중 분할된 플래시 메모리 장치.18. The method of claim 1 or 17, wherein each region of the first half journaling and the second half journaling in the partition area of the multi-partitioned memory is variably formed based on the amount of data to be stored or the size of each storage area in which data is stored. Multi-partitioned flash memory device. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.Claim 19 was abandoned upon payment of a registration fee. 제 11항에 있어서, 상기 각 파티션의 저장공간 처음 위치와 끝 위치로부터 각각 중앙쪽으로 데이터를 저장해 가는데 있어서, 상기 중앙점은 저장될 각각의 데이터 양 또는 데이터가 저장되는 각각의 저장 영역 크기에 의거 가변적으로 형성되는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.12. The method of claim 11, wherein in storing data from the start position and the end position of the storage space of each partition toward the center, the center point is variable based on the amount of data to be stored or the size of each storage area in which the data is stored. Dual journaling storage method for storing data in the divided memory, characterized in that formed as. 제 11항에 있어서, 저장매체의 처음위치 또는 끝 위치의 어느 하나의 위치로부터 저장된 데이터가 저장매체 저장공간 중앙점의 어느 위치에서 서로 만나게 될 때, 저장될 데이터는 상기 처음 위치의 헤드 또는 끝 위치의 헤드의 적어도 어느 하나 부분에서 다시 저장되는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.12. The data to be stored according to claim 11, wherein when data stored from either the first position or the end position of the storage medium meet with each other at any position of the storage medium storage center point, the data to be stored is the head or end position of the initial position. A dual journaling storage method for storing data in a partitioned memory, characterized in that the data is stored again in at least one portion of the head. 제 16항에 있어서, 상기 GC 및 지움동작이 발생하는 경우, 테일은 전반부 또는 후반부 저널링의 메모리 중심부 부분으로 옮겨지는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.17. The method of claim 16, wherein when the GC and erase operations occur, the tail is moved to a central portion of the memory of the first half or second half journaling. 제 16항에 있어서, 상기 GC 및 지움동작이 발생하는 경우, 유효한 데이터(Valid data)는 전반부 또는 후반부 저널링의 헤드의 위치로 옮겨는 것을 특징으로 하는 분할된 메모리에 데이터를 저장하기 위한 이중 저널링 저장방법.17. The dual journaling storage of claim 16, wherein, when the GC and erase operations occur, valid data is moved to the location of the head of the first half or second half journaling. Way.
KR1020030092533A 2002-12-24 2003-12-17 multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory KR101107288B1 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020030092533A KR101107288B1 (en) 2003-12-17 2003-12-17 multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory
US10/539,751 US7610442B2 (en) 2002-12-24 2003-12-19 Dual journaling store method and storage medium thereof
EP03777471.8A EP1576593B1 (en) 2002-12-24 2003-12-19 Dual journaling store method and storage medium thereof
CN200380107607XA CN1732516B (en) 2002-12-24 2003-12-19 Dual journaling store method and storage medium thereof
JP2004562995A JP4415356B2 (en) 2002-12-24 2003-12-19 Double journaling storage method and storage medium thereof
RU2005119971/28A RU2319227C2 (en) 2002-12-24 2003-12-19 Recording method with double logging and data carrier for use with the method
CA2511304A CA2511304C (en) 2002-12-24 2003-12-19 Dual journaling store method and storage medium thereof
AU2003286967A AU2003286967B2 (en) 2002-12-24 2003-12-19 Dual journaling store method and storage medium thereof
PCT/KR2003/002783 WO2004059624A1 (en) 2002-12-24 2003-12-19 Dual journaling store method and storage medium thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030092533A KR101107288B1 (en) 2003-12-17 2003-12-17 multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory

Publications (2)

Publication Number Publication Date
KR20050060809A KR20050060809A (en) 2005-06-22
KR101107288B1 true KR101107288B1 (en) 2012-01-20

Family

ID=37253475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030092533A KR101107288B1 (en) 2002-12-24 2003-12-17 multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory

Country Status (1)

Country Link
KR (1) KR101107288B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100755702B1 (en) * 2005-12-27 2007-09-05 삼성전자주식회사 Storage apparatus using non volatile memory as cache and method for operating the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04153792A (en) * 1990-10-17 1992-05-27 Dainippon Printing Co Ltd Ic card
JPH04213129A (en) * 1990-01-31 1992-08-04 Hewlett Packard Co <Hp> Memory control system and memory control method
KR20010024835A (en) * 1998-01-05 2001-03-26 피터 엔. 데트킨 Flash Memory Partitioning for Read-While-Write Operation
JP2001216765A (en) 2000-02-01 2001-08-10 Yamaha Corp Method for preserving audio data and device for recording and reproducing audio data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04213129A (en) * 1990-01-31 1992-08-04 Hewlett Packard Co <Hp> Memory control system and memory control method
JPH04153792A (en) * 1990-10-17 1992-05-27 Dainippon Printing Co Ltd Ic card
KR20010024835A (en) * 1998-01-05 2001-03-26 피터 엔. 데트킨 Flash Memory Partitioning for Read-While-Write Operation
JP2001216765A (en) 2000-02-01 2001-08-10 Yamaha Corp Method for preserving audio data and device for recording and reproducing audio data

Also Published As

Publication number Publication date
KR20050060809A (en) 2005-06-22

Similar Documents

Publication Publication Date Title
EP1576593B1 (en) Dual journaling store method and storage medium thereof
US10126959B2 (en) Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
KR101002978B1 (en) Method for flash­memory management
CN101288054B (en) Virtual-to-physical address translation in a flash file system
US8825942B2 (en) Apparatus and method of rearranging data and nonvolatile data storage apparatus
JP5649742B2 (en) Transaction log restore
JP5001011B2 (en) Adaptive mode switching of flash memory address mapping based on host usage characteristics
KR100389867B1 (en) Flash memory management method
CN1307555C (en) Data storage device
US20140095556A1 (en) Computing system, host system and method for managing data
CN111459844B (en) Data storage device and method for accessing logical-to-physical address mapping table
WO1999035650A1 (en) Flash memory partitioning for read-while-write operation
JP2008527586A (en) Group and align on-chip data
KR20090042035A (en) Data storage device, memory system, and computing system using nonvolatile memory device
US20140095772A1 (en) Computing system and method of managing data in the computing system
US20220269613A1 (en) Memory system and operating method thereof
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
US20080005450A1 (en) Read-only optimized flash file system architecture
KR20080038368A (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
CN100431051C (en) Method for configuring parameter in NOR FLASH
KR100483490B1 (en) Doubly Journaling Store Method For Storing Data in Storage Medium
KR101107288B1 (en) multi-partitioned flash memory device and dual journaling store method for storing data in partitioned memory
JP2008084184A (en) Memory controller
KR100982440B1 (en) System for managing data in single flash memory
JP4334331B2 (en) Flash memory access control method

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: 20141224

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151224

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161223

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171222

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191224

Year of fee payment: 9