KR100941423B1 - Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof - Google Patents

Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof Download PDF

Info

Publication number
KR100941423B1
KR100941423B1 KR1020080015857A KR20080015857A KR100941423B1 KR 100941423 B1 KR100941423 B1 KR 100941423B1 KR 1020080015857 A KR1020080015857 A KR 1020080015857A KR 20080015857 A KR20080015857 A KR 20080015857A KR 100941423 B1 KR100941423 B1 KR 100941423B1
Authority
KR
South Korea
Prior art keywords
page
block
window
logical page
update
Prior art date
Application number
KR1020080015857A
Other languages
Korean (ko)
Other versions
KR20090090570A (en
Inventor
유태경
김기창
Original Assignee
인하대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인하대학교 산학협력단 filed Critical 인하대학교 산학협력단
Priority to KR1020080015857A priority Critical patent/KR100941423B1/en
Publication of KR20090090570A publication Critical patent/KR20090090570A/en
Application granted granted Critical
Publication of KR100941423B1 publication Critical patent/KR100941423B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Abstract

논리 페이지에 대한 업데이트 정보를 가지는 윈도우 정보로써 메모리의 페이지를 할당하는 본 발명의 일 실시예에 따른 메모리의 페이지 할당 방법은, 물리 페이지(Physical Page)로써 구성되는 복수의 블록(Block)을 포함하는 메모리의 페이지 할당 방법에 있어서, 상기 복수의 블록을 제1 블록 및 제2 블록으로 구분하는 단계; 특정 논리 페이지에 대한 업데이트 요청을 수신하면, 상기 특정 논리 페이지의 업데이트 횟수를 산출하는 단계; 및 상기 업데이트 요청에 상응하여 업데이트되는 특정 논리 페이지에 대해, 상기 산출된 업데이트 횟수에 따라 상기 제2 블록의 물리 페이지 할당 여부를 결정하는 단계를 포함하는 것을 특징으로 한다.A page allocation method of a memory according to an embodiment of the present invention, which allocates a page of memory as window information having update information on a logical page, includes a plurality of blocks configured as physical pages. A page allocation method of a memory, the method comprising: dividing the plurality of blocks into a first block and a second block; Calculating an update number of the specific logical page when receiving a request for updating a specific logical page; And for a specific logical page updated according to the update request, determining whether to allocate a physical page of the second block according to the calculated update number.

논리 페이지, 물리 페이지, 업데이트 Logical page, physical page, update

Description

메모리의 페이지 할당 방법 및 이를 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체{Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof}Method for Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof}

본 발명은 메모리의 페이지 할당 방법 및 이를 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체에 관한 것으로서 보다 상세하게는 논리 페이지에 대한 업데이트 정보를 가지는 윈도우 정보로써 메모리의 페이지를 할당하는 방법 및 이를 위한 프로그램이 기록된 기록 매체에 관한 것이다.The present invention relates to a method of allocating a page of a memory and a computer-readable recording medium having a program for performing the same. More specifically, the method of allocating a page of a memory as window information having update information on a logical page and the same And a recording medium having recorded thereon a program.

일반적으로 낸드 플래시 메모리는 복수의 블록(Block)과 블록을 구성하는 복수의 페이지(Page)로서 구분된다. 파일(File)은 복수의 페이지에 저장될 수 있고, 하나의 파일이 복수의 블록에 존재하거나 한 블록에 복수의 파일이 저장될 수 있다.In general, NAND flash memories are divided into a plurality of blocks and a plurality of pages constituting the blocks. The file may be stored in a plurality of pages, one file may exist in a plurality of blocks, or a plurality of files may be stored in one block.

도 1의 일반적인 낸드 플래시 메모리(102)의 구조를 나타낸 도면으로서, 한 블록(106)이 32개의 페이지(104)로 구성되고, 각 페이지(104)는 512바이트의 데이터 영역과 16바이트의 스페어 영역을 가진다. 전체 낸드 플래시 메모리(102)는 4096개의 블록(106)으로 이루어 지고, 각 블록(106)은 32개의 528바이트 크기의 페 이지(104)로 이루어지므로 66메가 바이트(528메가 비트)의 크기를 가진다.1 is a block 106 composed of 32 pages 104, each page 104 having a 512 byte data area and a 16 byte spare area. Has The entire NAND flash memory 102 is made up of 4096 blocks 106 and each block 106 is made up of 32 528-byte pages 104 and thus has a size of 66 megabytes (528 megabits). .

그런데, 낸드 플래시 메모리는 기존 저장 매체와 구별되는 다음의 제한 사항들을 가진다. 첫째, 덮어 쓰기를 하기 위해서는 삭제 연산이 선행 되어야 하고, 둘째, 삭제 연산과 읽기, 쓰기 연산의 단위가 다르다. 셋째, 삭제 연산이 다른 연산에 비해 느리고 전력 소비가 크며, 넷째, 각 블록마다 삭제 연산의 횟수가 제한된다.However, NAND flash memory has the following limitations that are distinguished from existing storage media. First, in order to overwrite, delete operation must be preceded. Second, delete operations are different from read and write operations. Third, the erase operation is slower and consumes more power than other operations. Fourth, the number of erase operations is limited for each block.

상술한 제한 사항을 극복하기 위해 LFS(Log-structured File System)에서는 덮어 쓰기 연산을 추가 연산으로 변형하여 처리하는 외부 갱신 기법을 사용한다. 이것은 수정된 데이터를 다른 빈 영역에 쓰고, 기존 데이터를 무효화시킴으로써, 덮어 쓰기 시에 선행되어야 할 삭제 연산을 제거한다. 그러나 그 과정에서 생긴 무효화 데이터들을 회수하여 다시 쓰기 가능한 상태로 전환하는 블록 클리닝이 요구되고, 그 블록 클리닝 비용 및 횟수를 줄이는 것이 파일 시스템의 성능에 큰 영향을 미친다.To overcome the above limitations, the Log-structured File System (LFS) uses an external update technique that transforms the overwrite operation into an additional operation. This writes the modified data to another free area and invalidates the existing data, eliminating the delete operation that must be preceded by the overwrite. However, block cleaning is required to recover invalidated data generated in the process and convert the data into a rewritable state. Reducing the cost and the number of block cleaning greatly affects the performance of the file system.

블록 클리닝은 먼저 삭제할 희생 블록을 선택하고, 그 블록의 유효 데이터들을 다른 블록에 재복사한 후, 그 블록을 삭제하는 순서로 이루어 진다.Block cleaning is performed by first selecting a victim block to be deleted, copying valid data of the block to another block, and then deleting the block.

그런데, 업데이트된 논리 페이지를 위해 다른 물리 페이지를 할당하고, 기존 물리 페이지를 무효화는 과정에서 일반적인 방법은 물리 페이지를 순차적으로 할당하여, 유효 페이지와 무효 페이지가 메모리의 전 영에 걸쳐 퍼져 있게 된다. 따라서, 블록 클리닝 시에 무효 페이지들이 존재하는 블록을 희생 블록으로 선택한다면 블록 클리닝을 위한 읽고, 쓰는 시간이 크다는 문제점이 있었다.However, in the process of allocating another physical page for the updated logical page and invalidating the existing physical page, the general method allocates the physical pages sequentially so that the valid and invalid pages are spread over the entire memory. Therefore, if a block containing invalid pages is selected as a victim block during block cleaning, there is a problem in that a read and write time for block cleaning is large.

또한, 블록 클리닝 시에 유효 페이지가 많은 블록을 희생 블록으로 선택한다면, 블록 클리닝으로 회수되어 사용할 수 있는 물리 페이지가 적어, 블록 삭제 횟수가 많아 진다는 문제점이 있었다. In addition, if a block having a large number of valid pages is selected as a victim block during block cleaning, there is a problem that fewer physical pages can be recovered and used by block cleaning, thereby increasing the number of block deletions.

본 발명은 상술한 문제점을 해결하기 위한 것으로서, 업데이트된 논리 페이지에 대해 효율적으로 물리 페이지를 할당하여 블록 클리닝을 위한 비용이 적은 메모리의 페이지 할당 방법을 제공하는 것을 기술적 과제로 한다.SUMMARY OF THE INVENTION The present invention has been made in view of the above-described problem, and an object of the present invention is to provide a method of allocating a physical page to an updated logical page so as to provide a low cost memory page allocation method for block cleaning.

또한, 본 발명은 블록 클리닝 이후에 회수되는 물리 페이지가 많아 블록 삭제 횟수가 적은 메모리의 페이지 할당 방법을 제공하는 것을 다른 기술적 과제로 한다.Another object of the present invention is to provide a method of allocating a page of a memory having a large number of physical pages recovered after block cleaning and having a low number of block deletions.

상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 메모리의 페이지 할당 방법은 물리 페이지(Physical Page)로써 구성되는 복수의 블록(Block)을 포함하는 메모리의 페이지 할당 방법에 있어서, 상기 복수의 블록을 제1 블록 및 제2 블록으로 구분하는 단계; 특정 논리 페이지에 대한 업데이트 요청을 수신하면, 상기 특정 논리 페이지의 업데이트 횟수를 산출하는 단계; 및 상기 업데이트 요청에 상응하여 업데이트되는 특정 논리 페이지에 대해, 상기 산출된 업데이트 횟수에 따라 상기 제2 블록의 물리 페이지 할당 여부를 결정하는 단계를 포함하는 것을 특징으로 한다.According to an aspect of the present invention, there is provided a method of allocating a page of a memory, the method comprising: a plurality of blocks configured as physical pages, wherein the plurality of blocks are allocated. Dividing the into a first block and a second block; Calculating an update number of the specific logical page when receiving a request for updating a specific logical page; And for a specific logical page updated according to the update request, determining whether to allocate a physical page of the second block according to the calculated update number.

상술한 바와 같이 본 발명에 따르면, 자주 업데이트 되는 핫 페이지(Hot Page)를 다른 블록에 위치시킴으로써 블록 클리닝 시에 삭제할 블록의 유효 페이지를 최대한 감소시켜 전체적인 블록 클리닝 비용을 감소시킬 수 있는 메모리의 페이지 할당 방법을 구현하는 효과가 있다.As described above, according to the present invention, by allocating hot pages that are frequently updated to other blocks, page allocation of a memory capable of reducing the overall block cleaning cost by reducing the effective pages of blocks to be deleted at the time of block cleaning as much as possible. It is effective to implement the method.

또한, 본 발명에 따르면, 블록 클리닝 시 많은 무효 페이지가 회수되어 사용할 수 있는 물리 페이지를 증가시킴으로써, 블록 삭제 횟수가 적고 가비지 콜렉션(Garbage Collection)이 적게 수행되게 하는 메모리의 페이지 할당 방법을 구현하는 다른 효과가 있다.In addition, according to the present invention, by increasing the number of physical pages that can be used to recover a large number of invalid pages when cleaning the block, another method for implementing a page allocation method of the memory to reduce the number of block deletions and to reduce garbage collection (Garbage Collection) It works.

본 발명의 실시예에 대한 상세한 설명을 하기 이전에 도 2를 참조하여 파일의 수정에 따른 플래시 메모리의 일반적인 페이지(Page) 할당 방법, 가비지 콜렉션(Garbage Collection), 및 블록 클리닝(Block Cleaning)에 대해 간략히 설명한다.Before describing the embodiments of the present invention, a general page allocation method, garbage collection, and block cleaning of a flash memory according to modification of a file will be described with reference to FIG. 2. Briefly explain.

도 2는 파일 수정 후, 일반적인 페이지 할당 방법에 따른 메모리의 상태를 나타낸 도면이다. 일 예를 낸드 플래시 전용 파일 시스템인 YAFFS(Yet Another Flash File System)으로써 설명한다.2 is a diagram illustrating a state of a memory according to a general page allocation method after file modification. An example is described as a YETFS (Yet Another Flash File System), which is a NAND flash-only file system.

YAFFS에서는 파일 시스템이 마운트된 이후 파일이 처음 생성되면, 메모리에서 파일의 정보를 저장할 yaffs_Object와 파일의 위치를 저장할 yaffs_Tnode를 할당 받는다. 그리고, 페이지 할당 정책에 의해 자유 페이지를 할당 받아 실제 데이 터를 쓰고, 그 페이지의 물리 주소를 yaffs_Tnode에 기록한다. 따라서, yaffs_Object에 파일의 논리 페이지 주소가 저장되고 yaffs_Tnode 트리(Tree)를 사용하여 물리 페이지 주소를 찾게 된다. In YAFFS, when a file is first created after the file system is mounted, it is assigned a yaffs_Object to store the file's information in memory and a yaffs_Tnode to store the file's location. The free page is allocated according to the page allocation policy, the actual data is written, and the physical address of the page is recorded in yaffs_Tnode. Therefore, the logical page address of the file is stored in yaffs_Object, and the physical page address is found using the yaffs_Tnode tree.

또한, 파일의 크기, 데이터 페이지 개수, 파일의 생성 및 수정 시간들의 파일의 정보를 yaffs_Object에 업데이트하고, 그것을 바탕으로 yaffs_ObjectHeader의 내용을 구성하여 자유 페이지를 할당 받아 플래시 메모리에 기록한다.In addition, the file information of the file size, number of data pages, file creation and modification times is updated to yaffs_Object, and based on the content of the yaffs_ObjectHeader, the free pages are allocated and recorded in the flash memory.

파일의 데이터 중 일부가 수정되면, 먼저 자유 페이지가 할당되고, 수정된 데이터는 할당된 자유 페이지에 기록된다. 그 다음 이전 데이터가 저장된 페이지를 무효 페이지로 만든다. 그리고 논리 주소로 Tnode 트리를 검색하여 수정된 데이터가 저장된 페이지의 물리 주소를 업데이트 한다. 따라서, 파일의 데이터 중 일부가 수정된다는 것은 파일을 구성하는 페이지들 중 업데이트 대상인 페이지가 무효 페이지로 바뀌고, 새롭게 할당된 자유 페이지에 업데이트된 데이터가 저장됨을 의미한다.When some of the data in the file is modified, a free page is first allocated, and the modified data is written to the allocated free page. It then makes the page that stored the old data invalid. It searches the Tnode tree by the logical address and updates the physical address of the page where the modified data is stored. Therefore, when some of the data of the file is modified, the page to be updated among the pages constituting the file is changed to an invalid page, and the updated data is stored in the newly allocated free page.

도 2의 메모리 구조에는 5개의 페이지를 구성 요소로 포함하는 블록이 5개 존재하고, A파일, B파일, C파일, 및 D파일이 저장되어 있다. 페이지 A1, A2 및 A3은 A파일을 구성하고, 마찬가지 방식으로 나머지 파일이 구성된다. A1(202), A2, A3, B1(206) 및 B2가 첫 번째 블록을 구성하며, 마찬가지 방식으로 한 페이지 열(Column)이 한 블록이 되어, 나머지 블록이 구성된다.In the memory structure of FIG. 2, there are five blocks including five pages as components, and A files, B files, C files, and D files are stored. Pages A1, A2, and A3 constitute an A file, and in the same manner, the remaining files are organized. A1 202, A2, A3, B1 206, and B2 constitute the first block, and in the same manner, one page column becomes one block, and the remaining blocks are constituted.

A파일의 A1에 대한 업데이트 요청이 수신되면, 기존의 A1은 무효 페이지 A1(202)로 변환되고, 새로운 자유 페이지가 할당되어 업데이트된 데이터는 유효 페 이지 A1(204)에 저장된다. 마찬가지 방식으로 무효 페이지 B1(206) 및 유효 페이지 B1(208)이 생성된다.When an update request for A1 of the A file is received, the existing A1 is converted into an invalid page A1 202, a new free page is allocated, and the updated data is stored in the valid page A1 204. Similarly, invalid page B1 206 and valid page B1 208 are generated.

그런데, 도 2에서는 A1, B1 및 C1의 업데이트를 위해 세 번째 블록에서 D3의 다음에 위치하는 자유 페이지들이 순차적으로 할당된 것을 확인할 수 있다. 따라서, 페이지들에 대한 업데이트가 계속 진행됨에 따라 A1(202) 및 B1(206)과 같은 무효 페이지들이 플래시 메모리의 전 영역에 흩어져 존재하게 된다.However, in FIG. 2, it can be seen that free pages located after D3 are sequentially allocated in the third block for updating A1, B1, and C1. Thus, as the updates to the pages continue, invalid pages such as A1 202 and B1 206 are scattered over the entire area of the flash memory.

이로 인해, 사용할 수 있는 자유 블록의 개수가 점점 줄어 들게 된다. 그래서 데이터를 저장할 공간이 부족하게 되면, 가비지 콜렉션을 수행하여, 지움 정책에 의해 희생 블록을 선택하여 그것을 지움으로써 공간을 확보한다As a result, the number of free blocks that can be used decreases. Thus, when there is not enough space to store data, garbage collection is performed to free up space by selecting victim blocks and erasing them by the erase policy.

상기 희생 블록을 선택하여 지움으로써 공간을 확보하는 것을 블록 클리닝이라 하며, 일 예로 도 2에서는 블록 클리닝을 위한 희생 블록으로서 두 번째 블록(210)이 선택되었다. 이하, 도 3을 참조하여, 일반적인 블록 클리닝 이후의 메모리의 상태를 설명하겠다.Securing space by selecting and deleting the sacrificial block is called block cleaning. In FIG. 2, the second block 210 is selected as the sacrificial block for the block cleaning. Hereinafter, referring to FIG. 3, a state of a memory after general block cleaning will be described.

도 3를 참조하면, 두 번째 블록(302)의 페이지들은 클리닝되어 자유 페이지들로 변환되었고, 네 번째 블록의 B3(304), B4(306) 및 C2(308)는 이전의 두 번째 블록(210)에 포함된 B3, B4, 및 C2의 데이터가 블록 클리닝에 의해 새롭게 할당된 자유 페이지에 쓰여 져 생성된 것이다. Referring to FIG. 3, the pages of the second block 302 have been cleaned and converted into free pages, and B3 304, B4 306 and C2 308 of the fourth block are the previous second block 210. The data of B3, B4, and C2 included in the) are written and created on the newly allocated free page by block cleaning.

도 2 및 도 3에 나타난 일반적인 페이지 할당 방법은 블록 클리닝 시에 많은 비용을 요구한다. 즉, 두 번째 블록(302)의 블록 클리닝 시에 B3(304), B4(306) 및 C2(308)를 생성하기 위해 세 번의 읽기와 세 번의 쓰기를 수행하고, 한 번의 블록 삭제 시간이 필요하게 된다.The general page allocation method shown in FIGS. 2 and 3 requires a large cost in block cleaning. That is, three reads and three writes are performed to generate B3 304, B4 306, and C2 308 during the block cleaning of the second block 302, and one block erase time is required. do.

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

도 4는 본 발명의 일 실시예에 따른 페이지 할당 방법으로써 파일이 수정된 후, 메모리의 상태를 나타낸 도면이다.4 is a diagram illustrating a state of a memory after a file is modified by the page allocation method according to an exemplary embodiment of the present invention.

도시된 바와 같이, 본 발명의 일 실시예에 따른 할당 방법에서는 유효, 무효 페이지가 분리되어 존재 한다. 그 분리 방법은 논리 페이지가 업데이트 횟수가 많은 핫 페이지(Hot Page: A1,A2,A3,A4)인 경우, 해당 물리 페이지들을 핫 페이지를 위한 블록(402)에 할당하는 것이다.As shown, in the allocation method according to an embodiment of the present invention, valid and invalid pages are separated. The separation method is to allocate the corresponding physical pages to the block 402 for the hot page when the logical page is a hot page (H1, A2, A3, A4) with a large number of updates.

도 4를 참조하면, 파일 A, B, C 및 D의 논리 페이지인 A1, B1, C1 및 D1이 자주 업데이트 되는 핫 페이지인 경우, 업데이트 시 A1, B1, C1, 및 D1의 물리 페이지인 유효 페이지 A1(404), B1(406), C1(408) 및 D1(410)은 핫 페이지를 위한 블록(402)에 저장된다. 이 경우, 업데이트되기 이전의 A1, B1, C1, 및 D1의 물리 페이지들은 무효 페이지 A1, B1, C1 및 D1으로 변환된다.Referring to FIG. 4, when the logical pages A1, B1, C1, and D1 of the files A, B, C, and D are frequently updated hot pages, a valid page that is a physical page of A1, B1, C1, and D1 at the time of updating A1 404, B1 406, C1 408 and D1 410 are stored in block 402 for hot pages. In this case, the physical pages of A1, B1, C1, and D1 before being updated are converted to invalid pages A1, B1, C1, and D1.

이 경우, 무효 페이지들이 존재하는 영역의 블록(412)을 희생 블록(412)으로 선택한다면 상대적으로 희생 블록(412)에 포함된 유효 페이지가 적고, 무효 페이지는 많기 때문에 도 2 및 도 3을 통해 전술한 일반적인 경우보다 더 적은 비용으로 더 많은 페이지를 회수할 수 있다. 블록 클리닝 시에 기존 방식은 [3*(페이지 읽기 시간+페이지 쓰기 시간)+블록 삭제 시간]의 비용이 드는 반면, 본 발명의 일 실시예에 따른 방식은 [1*(페이지 읽기 시간 +페이지 쓰기 시간)+ 블록 삭제 시간]의 상대적으로 적은 비용이 든다. In this case, if the block 412 of the area where the invalid pages exist is selected as the victim block 412, since the valid pages included in the victim block 412 are relatively few and the invalid pages are many, the same is true through FIGS. 2 and 3. More pages can be retrieved at less cost than in the general case described above. The conventional method at the time of block cleaning has a cost of [3 * (page read time + page write time) + block erase time], while the method according to an embodiment of the present invention is [1 * (page read time + page write). Time) + block deletion time].

도 5는 본 발명의 일 실시에 따른 페이지 할당 방법으로써 파일이 수정된 후, 블록 클리닝이 끝난 메모리의 상태를 나타낸 도면이다.FIG. 5 is a diagram illustrating a state of a block cleaning finished after a file is modified using the page allocation method according to an exemplary embodiment of the present invention.

도 5를 참조하면, 블록 클리닝이 끝난 블록(502)의 페이지들이 모두 자유 페이지로 전환되어 있다. 또한, 블록 클리닝 시 선택된 블록(412)의 A1은 핫 페이지를 위한 블록(402)의 물리 페이지를 할당 받고, 해당 물리 페이지에 저장된다. 따라서, 다섯 번째 블록의 유효 페이지 A1(504)가 생성되게 된다.Referring to FIG. 5, all pages of the block cleaning block 502 that have been cleaned are converted to free pages. In addition, A1 of the block 412 selected during block cleaning is allocated the physical page of the block 402 for the hot page, and is stored in the corresponding physical page. Thus, the valid page A1 504 of the fifth block is generated.

결국, 도 2 및 도 3의 일반적인 경우와는 다르게, 블록 클리닝 시 유효 페이지 A1(504)만이 생성되므로, 블록 삭제 시간 외에 1번의 읽기와 1번의 쓰기 시간만이 소요됨을 알 수 있다.As a result, unlike the general case of FIGS. 2 and 3, since only the valid page A1 504 is generated during block cleaning, it can be seen that only one read and one write time are required in addition to the block erase time.

도 4 및 도 5에 의하면, 현재 사용할 수 있는 자유 페이지의 개수가 일반적인 방법에서는 11이고, 본 발명에 따른 일 실시예에서는 13이다. 왜냐하면 제안된 기법이 블록 클리닝 이후에 회수된 페이지가 많기 때문이다. 4 and 5, the number of free pages currently available is 11 in the general method and 13 in one embodiment according to the present invention. This is because the proposed scheme has many pages recovered after block cleaning.

가비지 콜렉션은 사용할 수 있는 영역이 미리 정의된 임계값 이하로 내려 갈 경우에 실행되어 자유 페이지 영역이 확보된다. 그러므로 본 발명의 일 실시예에서는 상대적으로 많은 무효 페이지가 회수되어 사용할 수 있는 영역이 더 많으므로, 가비지 콜렉션이 덜 수행되게 된고, 그로 인해 블록 삭제 횟수가 적어 진다.Garbage collection is executed when the available area falls below a predefined threshold to ensure free page area. Therefore, in one embodiment of the present invention, since a relatively large number of invalid pages are retrieved and have more areas available, less garbage collection is performed, thereby reducing the number of block deletions.

따라서 본 발명에서는 자주 업데이트 되는 핫 페이지를 다른 블록에 위치시킴으로써 블록 클리닝 시에 삭제할 블록의 유효 페이지를 최대한 감소시켜 전체적인 블록 클리닝 비용을 감소 시키고 블록 삭제 횟수를 감소시키는 효과가 있다.Therefore, in the present invention, by placing hot pages that are frequently updated in other blocks, the effective pages of blocks to be deleted during block cleaning are reduced as much as possible, thereby reducing the overall block cleaning cost and reducing the number of block deletions.

한편, 본 발명의 일 실시예에서는 업데이트 되는 논리 페이지가 핫 페이지인 지 판단하기 위해, 논리 페이지의 업데이트 정보를 가지는 윈도우 및 윈도우들의 집합인 윈도우 리스트를 사용한다. 일 실시예에 있어서, 윈도우는 RAM에 생성되거나 플래시 메모리에 생성될 수 있다.Meanwhile, in an embodiment of the present invention, in order to determine whether a logical page to be updated is a hot page, a window having a window and a list of windows having update information of the logical page is used. In one embodiment, the window may be created in RAM or in flash memory.

도 6a는 본 발명의 일 실시예에 따른 논리 페이지의 업데이트 정보를 저장하기 위해 사용되는 윈도우 구조체를 나타내는 도면이다.FIG. 6A is a diagram illustrating a window structure used to store update information of a logical page according to an embodiment of the present invention. FIG.

도 6a를 참조하면, chunkInInode는 업데이트 되는 논리 페이지 번호를 저장하며, update_cnt는 업데이트 된 횟수를 저장하고, Link는 윈도우 리스트를 만들기 위한 링크로서 사용된다.Referring to FIG. 6A, chunkInInode stores a logical page number to be updated, update_cnt stores the number of updates, and Link is used as a link for creating a window list.

도 6b는 본 발명의 일 실시예에 따른 윈도우 리스트를 나타내는 도면으로서, 특정 파일의 논리 페이지가 논리 페이지 번호 3, 4, 6, 8, 1, 18, 14, 15의 순서로 업데이트 되면서 생성된 윈도우 리스트를 나타낸다.FIG. 6B is a diagram illustrating a window list according to an embodiment of the present invention, wherein a window generated while a logical page of a specific file is updated in the order of logical page numbers 3, 4, 6, 8, 1, 18, 14, and 15 Represents a list.

윈도우 리스트는 미리 정의된 최대 개수(MAX_WINDOW_SIZE)이하의 윈도우로 구성되며, 파일 당 하나이다. 윈도우의 개수(윈도우 사이즈)가 최대일 경우 새로운 논리 페이지를 위한 윈도우를 할당하기 위해 업데이트 카운트가 가장 적은 윈도우 중에, 가장 오래된 윈도우를 희생 윈도우로 선택하여 삭제한 후에 새로운 윈도우를 추가 시킨다. 그리고 윈도우들의 업데이트 횟수의 총합이 미리 정의된 최대 횟수(MAX_TOTAL_UPDATE _CNT)이상이 되면 윈도우 리스트를 초기화 시킨다.The window list consists of windows less than or equal to the predefined maximum number (MAX_WINDOW_SIZE), one per file. If the number of windows (window size) is the maximum, in order to allocate a window for a new logical page, among the windows with the least update count, the oldest window is selected as the victim window and the new window is added. The window list is initialized when the total sum of the update counts of the windows exceeds the predefined maximum number of times (MAX_TOTAL_UPDATE_CNT).

도 6b를 참조하면, 윈도우는 파일 생성과 동시에 생성되는 메인 윈도우(602)와 페이지가 업데이트되는 경우 생성되어 윈도우 리스트에 추가되는 서브 윈도우들(604,606)로 구분될 수 있다.Referring to FIG. 6B, a window may be divided into a main window 602 generated at the same time as file generation and sub windows 604 and 606 generated when a page is updated and added to the window list.

메인 윈도우(602)의 windows_head를 통해 서브 윈도우들이 연결되고, windows_size에는 서브 윈도우의 수를, total_update_cnt에는 윈도우 리스트를 구성하고 있는 서브 윈도우들의 업데이트 횟수의 합을 저장하며, 각각 윈도우 리스트의 평균 업데이트 횟수를 계산할 때 사용된다.The subwindows are connected through the windows_head of the main window 602, the number of subwindows is stored in windows_size, and the total number of updates of the sub windows constituting the window list is stored in total_update_cnt. It is used when calculating.

도시된 바와 같이, 논리 페이지 번호 3에 해당하는 페이지가 업데이트 되면, 해당 서브 윈도우(604)가 생성되고, 메인 윈도우(602)에 링크된다. 상기 서브 윈도우(604)의 chunkInInode(608)에는 논리 페이지 번호인 3이 저장되고, update_cnt(610)에는 1번 업데이트되는 것이므로 1이 저장된다.As shown, when a page corresponding to logical page number 3 is updated, a corresponding subwindow 604 is created and linked to the main window 602. The logical page number 3 is stored in the chunkInInode 608 of the sub-window 604, and 1 is stored in the update_cnt 610 because it is updated once.

다음으로, 논리 페이지 주소 4에 해당하는 페이지가 업데이트 되면, 해당 서브 윈도우(606)가 생성되고, 논리 페이지 번호 3의 서브 윈도우(604)에 링크된다.Next, when the page corresponding to logical page address 4 is updated, a corresponding sub window 606 is generated and linked to the sub window 604 of logical page number 3.

마찬가지로, 논리 페이지 번호 6, 7, 1, 18에 대해서도 업데이트 시마다 해당 윈도우가 생성된다.Similarly, the corresponding window is generated for each logical page number 6, 7, 1, and 18 at each update.

도 6b의 윈도우 리스트에서는 메인 윈도우(602)의 windows_size는 6이고, total_update_cnt는 6이다.In the window list of FIG. 6B, windows_size of the main window 602 is 6, and total_update_cnt is 6.

또한, 윈도우 리스트의 평균 업데이트 횟수(avg_update_cnt)는 1(=total_update_cnt/windows_size)이다.In addition, the average update count (avg_update_cnt) of the window list is 1 (= total_update_cnt / windows_size).

본 발명의 일 실시예에서는 업데이트되는 논리 페이지가 핫 페이지인지 판단하기 위해 상기 윈도우 리스트를 사용한다. 그리고, 핫 페이지로 판단되면 업데이트될 핫 페이지를 위해, 핫 페이지를 위한 블록(이하 ‘핫 블록’한다)의 물리 페이지를 할당한다. 반대의 경우에 일반 블록의 물리 페이지를 할당한다.In one embodiment of the present invention, the window list is used to determine whether the updated logical page is a hot page. If it is determined as a hot page, a physical page of a block for the hot page (hereinafter referred to as a 'hot block') is allocated to the hot page to be updated. In the opposite case, the physical page of the general block is allocated.

일 예로, 업데이트되는 논리 페이지가 번호 3에 해당하고, 이미 윈도우 리스트에 해당 윈도우가 존재하면, 핫 페이지인지 판단하는 방법은 업데이트 대상인 논리 페이지의 update_cnt(610)에서 획득한 논리 페이지의 업데이트 횟수가 메인 윈도우(602)의 windows_size 및 total_update_cnt로부터 계산된 평균 업데이트 횟수(avg_update_cnt) 이상인지 비교하는 것이다. 여기서, 비교 결과, 평균 업데이트 횟수 이상이면, 핫 페이지로 판단한다.For example, if the updated logical page corresponds to the number 3 and the window is already present in the window list, the method of determining whether the page is a hot page is that the update count of the logical page acquired by update_cnt 610 of the logical page to be updated is main. It is compared with the average update count (avg_update_cnt) calculated from the windows_size and total_update_cnt of the window 602. Here, if the comparison result is equal to or greater than the average update count, it is determined as a hot page.

도 7은 본 발명의 일 실시예에 따라 업데이트하려는 논리 페이지의 윈도우가 이미 윈도우 리스트에 존재하는 경우, 해당 윈도우의 이동을 나타내는 도면이다.7 is a diagram illustrating movement of a window when a window of a logical page to be updated already exists in the window list according to an embodiment of the present invention.

도 6의 윈도우 리스트가 존재하는 경우, 특정 페이지에 대한 업데이트 요청이 수신되면, 먼저 특정 페이지의 서브 윈도우가 윈도우 리스트에 존재하는 지 판단한다. 도 7에서는 논리 페이지 번호 3에 해당하는 페이지의 업데이트 요청이 수신되었으므로, 이미 업데이트 대상이 되는 페이지의 서브 윈도우(702)가 존재하는 경우이다.When the window list of FIG. 6 exists, when an update request for a specific page is received, it is first determined whether a sub-window of the specific page exists in the window list. In FIG. 7, since a request for updating a page corresponding to logical page number 3 is received, a sub window 702 of a page to be updated already exists.

그리고, 업데이트될 논리 페이지가 핫 페이지인지 판단하여, 핫 블록의 물리 페이지를 할당할 것인지 판단한다. 그런데, 도 6에서 상술한 바와 같이 평균 업데이트 횟수가 1이고, 현재 해당 서브 윈도우(702)의 update_cnt는 1이므로, 해당 페이지는 핫 페이지로 판단된다. 따라서, 핫 블록의 물리 페이지가 할당된다.Then, it is determined whether the logical page to be updated is a hot page, and it is determined whether to allocate a physical page of the hot block. However, as described above with reference to FIG. 6, since the average number of updates is 1 and update_cnt of the corresponding sub window 702 is 1, the corresponding page is determined to be a hot page. Thus, the physical page of the hot block is allocated.

이후, 해당 서브 윈도우(702)의 update_cnt를 1증가 시켜 2(704)를 기록한다. 그리고, 해당 서브 윈도우(702)를 최신 위치(706)로 이동 시킨다.Thereafter, update_cnt of the corresponding subwindow 702 is increased by 1 to record 2 (704). The sub window 702 is moved to the latest position 706.

도 8은 본 발명의 일 실시예에 따라 윈도우 리스트에서 존재 가능한 윈도우 개수가 최대치인 경우, 업데이트 요청에 의해 새로운 윈도우를 추가하는 방법을 나타내는 도면이다.8 is a diagram illustrating a method of adding a new window by an update request when the number of windows that can exist in the window list is the maximum according to an embodiment of the present invention.

도 8은 도 7에서 업데이트된 윈도우 리스트에서 새롭게 논리 페이지 번호 5, 8, 9, 2, 15에 해당하는 페이지가 순차적으로 업데이트 되는 경우 변화되는 윈도우 리스트 구조를 나타낸다. 이하, 기 설정된 존재 가능한 서브 윈도우의 개수의 최대치(MAX_WINDOW_SIZE)가 10이라 가정하고 설명한다.FIG. 8 illustrates a window list structure that is changed when pages corresponding to logical page numbers 5, 8, 9, 2, and 15 are sequentially updated in the window list updated in FIG. Hereinafter, it is assumed that the maximum value MAX_WINDOW_SIZE of the preset number of subwindows that can exist is 10.

논리 페이지 번호 5, 8, 9, 2에 해당하는 페이지가 순차적으로 업데이트되면, 해당 논리 페이지의 윈도우는 도 7의 윈도우 리스트에 존재하지 않으므로, 새롭게 해당 서브 윈도우들(802,804,806,808)이 순차적으로 최신 위치에 추가된다.When the pages corresponding to the logical page numbers 5, 8, 9, and 2 are sequentially updated, the windows of the logical page do not exist in the window list of FIG. 7, so that the corresponding sub-windows 802, 804, 806, and 808 are sequentially placed in the latest positions. Is added.

그런데, 논리 페이지 번호 2에 해당하는 서브 윈도우(808)가 추가되는 시점에서 윈도우 리스트의 총 서브 윈도우 개수는 MAX_WINDOW_SIZE(=10)와 동일하게 된다. 따라서, 추가로 업데이트를 위해 논리 페이지 번호 15에 해당하는 서브 윈도우(812)를 추가하려면, 윈도우 리스트에서 하나의 서브 윈도우를 제거해야 한다.However, when the sub window 808 corresponding to logical page number 2 is added, the total number of sub windows in the window list is equal to MAX_WINDOW_SIZE (= 10). Therefore, to add a sub window 812 corresponding to logical page number 15 for updating, one sub window must be removed from the window list.

여기서, 업데이트 횟수가 가장 작고, 그 중에 가장 오래 전에 업데이트된 논리 페이지의 정보가 기록된 윈도우(810)를 제거한다. 그리고, 윈도우 전체 업데이트 횟수에서 그 윈도우(810)의 업데이트 횟수를 뺀 후, 논리 페이지 번호 15를 위한 새로운 윈도우(812)를 할당하고, 윈도우 리스트에 포함 시킨다.Here, the window 810 in which the update number is the smallest and the information of the logical page updated the longest before is recorded is removed. After subtracting the update count of the window 810 from the total update count of the window, a new window 812 for logical page number 15 is allocated and included in the window list.

도 9는 본 발명의 일 실시예에 따른 메모리의 페이지 할당 방법을 나타낸 순서도이다.9 is a flowchart illustrating a page allocation method of a memory according to an embodiment of the present invention.

먼저, 메모리의 블록을 일반 블록과 핫 블록으로 구분한다(S902).First, a block of memory is divided into a general block and a hot block (S902).

다음으로, 특정 논리 페이지에 대한 업데이트 요청을 수신한 경우, 윈도우 리스트의 전체 업데이트 횟수가 기 설정된 최대치 이상인지 판단한다(S904). 여기서, 윈도우는 업데이트되는 논리 페이지에 대한 정보를 포함하는 구조체이며 윈도우 리스트는 파일 당 생성되며, 업데이트 순서에 따라 링크된 윈도우들의 집합이다.Next, when receiving an update request for a specific logical page, it is determined whether the total number of updates of the window list is greater than or equal to a preset maximum value (S904). Here, the window is a structure containing information about the logical page to be updated and the window list is generated per file, and is a set of linked windows according to the update order.

다음으로, 전체 업데이트 횟수가 기 설정된 최대치 이상이면, 윈도우 리스트를 초기화 하고(S906), 현재 존재하는 윈도우 리스트에 상기 특정 논리 페이지에 해당하는 윈도우가 존재하는지 판단한다(S908). 만약, 업데이트 횟수가 기 설정된 최대치 미만이면, S906 단계를 거치지 않고 S908 단계를 수행한다.Next, if the total number of updates is greater than or equal to the preset maximum, the window list is initialized (S906), and it is determined whether a window corresponding to the specific logical page exists in the currently existing window list (S908). If the number of updates is less than the preset maximum, step S908 is performed without going through step S906.

이하, S908 단계에서 윈도우 리스트에 업데이트 대상인 논리 페이지에 대한 윈도우가 존재하지 않는 경우를 설명하겠다. Hereinafter, a case in which the window for the logical page to be updated in the window list does not exist in step S908 will be described.

논리 페이지에 대한 윈도우가 존재하지 않는 경우 윈도우 리스트의 윈도우 사이즈(윈도우의 수)가 허용 가능한 최대치인지 판단한다(S910).If there is no window for the logical page, it is determined whether the window size (number of windows) of the window list is the maximum allowable value (S910).

만약, 윈도우 사이즈가 허용 가능한 최대치이면, 업데이트 횟수가 가장 적고, 오래된 윈도우를 삭제한다(S912). 그리고, 업데이트 대상 논리 페이지를 위한 윈도우를 할당하고, 그 윈도우에 논리 페이지 번호를 기록한다(S914). 그 후, 윈도우의 업데이트 카운트를 1로 하고 윈도우 리스트에 연결한다(S916).If the window size is the maximum allowable value, the smallest number of updates is deleted and the old window is deleted (S912). Then, a window for the logical page to be updated is allocated, and the logical page number is recorded in the window (S914). Thereafter, the update count of the window is set to 1, and the window is linked to the window list (S916).

다음으로, 업데이트 요청에 상응하여 업데이트 되는 논리 페이지를 위해 일반 블록의 물리 페이지를 할당한다(S918).Next, the physical page of the general block is allocated for the logical page updated according to the update request (S918).

만약, S910 단계에서 윈도우 사이즈가 허용 가능한 최대치가 아니면, S912 단계를 수행하지 않고, 업데이트 되는 논리 페이지를 위해 S914, S916, 및 S918 단계를 순차적으로 수행한다.If the window size is not the maximum allowable value in step S910, steps S914, S916, and S918 are sequentially performed for the updated logical page without performing step S912.

이하, S908 단계에서 윈도우 리스트에 업데이트 대상인 논리 페이지에 대한 윈도우가 존재하는 경우를 설명하겠다. Hereinafter, the case in which the window for the logical page to be updated is present in the window list in step S908 will be described.

논리 페이지에 대한 윈도우가 존재하는 경우 해당 윈도우의 업데이트 카운트가 윈도우 리스트의 평균 업데이트 카운트 이상인지 판단한다(S920).If there is a window for the logical page, it is determined whether the update count of the corresponding window is equal to or greater than the average update count of the window list (S920).

만약, 해당 윈도우의 업데이트 카운트가 평균 업데이트 카운트 이상이면, 해당 윈도우의 업데이트 카운트를 증가시키고, 윈도우 리스트의 링크 구조에서 해당 윈도우를 최신 위치로 이동시킨다(S922).If the update count of the window is equal to or greater than the average update count, the update count of the window is increased and the window is moved to the latest position in the link structure of the window list (S922).

이어, 업데이트 요청에 상응하여 업데이트 되는 논리 페이지를 위해 핫 블록의 물리 페이지를 할당한다(S924).Subsequently, the physical page of the hot block is allocated for the logical page updated according to the update request (S924).

만약, 해당 윈도우의 업데이트 카운트가 평균 업데이트 카운트 미만이면, 해당 윈도우의 업데이트 카운트를 증가시키고, 윈도우 리스트의 링크 구조에서 해당 윈도우를 최신 위치로 이동시킨다(S926).If the update count of the window is less than the average update count, the update count of the window is increased and the window is moved to the latest position in the link structure of the window list (S926).

이어, 업데이트 요청에 상응하여 업데이트 되는 논리 페이지를 위해 일반 블록의 물리 페이지를 할당한다(S928).Subsequently, a physical page of a general block is allocated for a logical page updated according to the update request (S928).

상술한 메모리의 페이지 할당 방법은 다양한 컴퓨터 수단을 이용하여 수행될 수 있는 프로그램 형태로도 구현될 수 있는데, 이때 메모리의 페이지 할당 방법을 수행하기 위한 프로그램은 하드 디스크, CD-ROM, DVD, 롬(ROM), 램, 또는 플래시 메모리와 같은 컴퓨터로 판독할 수 있는 기록 매체에 저장된다.The above page allocation method of the memory may be implemented in the form of a program that can be executed using various computer means. In this case, the program for performing the page allocation method of the memory may be a hard disk, a CD-ROM, a DVD, a ROM ( ROM), a RAM, or a flash memory, such as a computer readable recording medium.

본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.Those skilled in the art to which the present invention pertains will understand that the present invention can be implemented in other specific forms without changing the technical spirit or essential features.

그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Therefore, it is to be understood that the embodiments described above are exemplary in all respects and not restrictive. The scope of the present invention is shown by the following claims rather than the detailed description, and all changes or modifications derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention. do.

도 1의 일반적인 낸드 플래시 메모리의 구조를 나타낸 도면.Fig. 1 shows the structure of a typical NAND flash memory of Fig. 1;

도 2는 파일 수정 후, 일반적인 페이지 할당 방법에 따른 메모리의 상태를 나타낸 도면.2 is a diagram illustrating a state of a memory according to a general page allocation method after file modification.

도 3은 일반적인 블록 클리닝 이후의 메모리의 상태를 나타낸 도면.3 is a diagram illustrating a state of a memory after general block cleaning.

도 4는 본 발명의 일 실시예에 따른 페이지 할당 방법으로써 파일이 수정된 후, 메모리의 상태를 나타낸 도면.4 is a diagram illustrating a state of a memory after a file is modified by the page allocation method according to an exemplary embodiment of the present invention.

도 5는 본 발명의 일 실시에 따른 페이지 할당 방법으로써 파일이 수정된 후, 블록 클리닝이 끝난 메모리의 상태를 나타낸 도면.5 is a diagram illustrating a state of a block cleaning finished after a file is modified by the page allocation method according to an exemplary embodiment of the present invention.

도 6a는 본 발명의 일 실시예에 따른 논리 페이지의 업데이트 정보를 저장하기 위해 사용되는 윈도우 구조체를 나타내는 도면.FIG. 6A illustrates a window structure used to store update information of a logical page according to an embodiment of the present invention. FIG.

도 6b는 본 발명의 일 실시예에 따른 윈도우 리스트를 나타내는 도면.6B illustrates a window list in accordance with one embodiment of the present invention.

도 7은 본 발명의 일 실시예에 따라 업데이트하려는 논리 페이지의 윈도우가 이미 윈도우 리스트에 존재하는 경우, 해당 윈도우의 이동을 나타내는 도면.7 is a diagram illustrating movement of a window when a window of a logical page to be updated already exists in the window list according to an embodiment of the present invention.

도 8은 본 발명의 일 실시예에 따라 윈도우 리스트에서 존재 가능한 윈도우 개수가 최대치인 경우, 업데이트 요청에 의해 새로운 윈도우를 추가하는 방법을 나타내는 도면.8 is a diagram illustrating a method of adding a new window by an update request when the number of windows that can exist in the window list is the maximum according to one embodiment of the present invention;

도 9는 본 발명의 일 실시예에 다른 메모리의 페이지 할당 방법을 나타낸 순서도.9 is a flowchart illustrating a method of allocating a page of a memory in accordance with an embodiment of the present invention.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

402: 핫 페이지를 위한 블록 404: 유효 페이지 A1402: Block for hot page 404: Valid page A1

406: 유효 페이지 B1 308: 유효 페이지 C1406: Valid Page B1 308: Valid Page C1

410: 유효 페이지 D1 410: Valid Page D1

412: 무효 페이지들이 존재하는 영역의 블록412: Block of area where invalid pages exist

Claims (5)

물리 페이지(Physical Page)로써 구성되는 복수의 블록(Block)을 포함하는 메모리의 페이지 할당 방법에 있어서,In the page allocation method of a memory including a plurality of blocks (blocks) composed of physical pages, 상기 복수의 블록을 제1 블록 및 제2 블록으로 구분하는 단계;Dividing the plurality of blocks into a first block and a second block; 특정 논리 페이지에 대한 업데이트 요청을 수신하면, 상기 특정 논리 페이지의 업데이트 횟수를 산출하는 단계; 및Calculating an update number of the specific logical page when receiving a request for updating a specific logical page; And 상기 업데이트 요청에 상응하여 업데이트되는 특정 논리 페이지에 대해, 상기 산출된 업데이트 횟수에 기초하여 상기 제1 블록 또는 제2 블록의 물리 페이지 할당 여부를 결정하는 단계;를 포함하고,Determining whether to allocate a physical page of the first block or the second block based on the calculated number of updates, for a specific logical page updated according to the update request; 상기 물리 페이지 할당 여부를 결정 단계에서,In the step of determining whether to allocate the physical page, 상기 특정 논리 페이지를 포함하는 파일은 복수의 논리 페이지로 구성되고,The file including the specific logical page is composed of a plurality of logical pages, 상기 업데이트 횟수가 총 업데이트 횟수를 윈도우 개수로 나누어 산출되는 상기 복수의 논리 페이지의 평균 업데이트 횟수 이상이면, 상기 특정 논리 페이지에 대해 상기 제2 블록의 물리 페이지를 할당하는 것으로 결정하는 것을 특징으로 하는 메모리의 페이지 할당 방법.If the update count is equal to or greater than the average update count of the plurality of logical pages calculated by dividing the total update count by the number of windows, determining that the physical page of the second block is allocated to the specific logical page. How to allocate pages 삭제delete 제1항에 있어서,The method of claim 1, 상기 파일을 구성하는 논리 페이지 각각에 대해 업데이트 횟수, 논리 페이지 번호, 및 상기 파일에 대한 링크 정보 중 적어도 하나를 포함하는 윈도우 정보를 생성하는 단계를 더 포함하고,Generating window information including at least one of an update count, a logical page number, and link information for the file, for each logical page constituting the file, 상기 특정 논리 페이지에 대해 상기 제1 블록 또는 제2 블록의 물리 페이지의 할당은 상기 윈도우 정보에 기초하여 이루어지는 것을 특징으로 하는 메모리의 페이지 할당 방법.And allocating a physical page of the first block or the second block with respect to the specific logical page is performed based on the window information. 제3항에 있어서,The method of claim 3, 상기 업데이트 요청 수신 시, 기 생성된 상기 윈도우 정보의 수가 기 설정된 생성 가능한 윈도우 정보의 최대치와 동일하고 상기 특정 논리 페이지에 해당하는 윈도우 정보가 존재하지 않는 경우, 상기 기 생성된 상기 윈도우 정보 중에서 업데이트 횟수가 최소이거나 가장 먼저 생성된 윈도우 정보를 삭제하고, 상기 특정 논리 페이지에 해당하는 윈도우 정보를 생성하는 단계를 더 포함하는 것을 특징으로 하는 메모리의 페이지 할당 방법.When the update request is received, when the number of previously generated window information is the same as the maximum value of the preset createable window information and there is no window information corresponding to the specific logical page, the number of updates among the previously generated window information The method of claim 1, further comprising deleting the minimum or first generated window information and generating window information corresponding to the specific logical page. 제1항, 제3항, 제4항 중 어느 하나의 항에 기재된 메모리 페이지 할당 방법을 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.A computer-readable recording medium having recorded thereon a program for performing the memory page allocation method according to any one of claims 1, 3, and 4.
KR1020080015857A 2008-02-21 2008-02-21 Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof KR100941423B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080015857A KR100941423B1 (en) 2008-02-21 2008-02-21 Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080015857A KR100941423B1 (en) 2008-02-21 2008-02-21 Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof

Publications (2)

Publication Number Publication Date
KR20090090570A KR20090090570A (en) 2009-08-26
KR100941423B1 true KR100941423B1 (en) 2010-02-11

Family

ID=41208338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080015857A KR100941423B1 (en) 2008-02-21 2008-02-21 Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof

Country Status (1)

Country Link
KR (1) KR100941423B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304905B2 (en) 2011-08-12 2016-04-05 Ajou University Industry-Academic Cooperation Foundation Memory controller and data management method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101861545B1 (en) 2012-01-02 2018-05-29 삼성전자주식회사 Method for managing data in storage device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980069939A (en) * 1997-02-07 1998-10-26 제프리엘.포맨 Computer systems and methods for sorting array elements to optimize array changes
KR20060115397A (en) * 2003-10-28 2006-11-08 샌디스크 코포레이션 Internal maintenance schedule request for non-volatile memory system
KR20080056491A (en) * 2006-12-18 2008-06-23 (재)대구경북과학기술연구원 Method for address mapping in flash translation layer(ftl)

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980069939A (en) * 1997-02-07 1998-10-26 제프리엘.포맨 Computer systems and methods for sorting array elements to optimize array changes
KR20060115397A (en) * 2003-10-28 2006-11-08 샌디스크 코포레이션 Internal maintenance schedule request for non-volatile memory system
KR20080056491A (en) * 2006-12-18 2008-06-23 (재)대구경북과학기술연구원 Method for address mapping in flash translation layer(ftl)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Hot Data 검출기를 이용한 적응형 플래시 전환 계층의 설계 및 구현(윤현식 외 2인. 한국정보과학회 2007 한국컴퓨터종합학술대회 논문집 제34권 제1호(A), pages 248-249. 2007.6.)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304905B2 (en) 2011-08-12 2016-04-05 Ajou University Industry-Academic Cooperation Foundation Memory controller and data management method thereof

Also Published As

Publication number Publication date
KR20090090570A (en) 2009-08-26

Similar Documents

Publication Publication Date Title
US10007468B2 (en) Method and apparatus for erasing data in data section in flash memory
US11301379B2 (en) Access request processing method and apparatus, and computer device
KR100484147B1 (en) Flash memory management method
KR100929371B1 (en) A method to store data into flash memory in a dbms-independent manner using the page-differential
CN108319602B (en) Database management method and database system
US20070043900A1 (en) Flash memory management method and flash memory system
KR20070060070A (en) Fat analysis for optimized sequential cluster management
CN108763473A (en) A kind of the native object storage method and device of distributed storage
JP2004013895A (en) File system for flash memory
CN106886370B (en) data safe deletion method and system based on SSD (solid State disk) deduplication technology
US11030092B2 (en) Access request processing method and apparatus, and computer system
CN108399047B (en) Flash memory file system and data management method thereof
KR100907477B1 (en) Apparatus and method for managing index of data stored in flash memory
KR101077901B1 (en) Apparatus and method for managing flash memory using log block level mapping algorithm
KR100941423B1 (en) Method For Allocating a Page of a Memory and a Computer-readable Recording Medium For Program Which Accomplishes Thereof
KR101179027B1 (en) Nand flash memory system and method for performing garbage collection based on locality of buffer
KR101153688B1 (en) Nand flash memory system and method for providing invalidation chance to data pages
KR101020781B1 (en) A method for log management in flash memory-based database systems
KR101102754B1 (en) Nand flash memory file system and method for accessing file thereof
KR101970874B1 (en) Hybrid hash index for non-volatile memory storage device
CN114661238B (en) Method for recovering storage system space with cache and application
US10740015B2 (en) Optimized management of file system metadata within solid state storage devices (SSDs)
JP3904182B2 (en) Data management system and data management method using the same
CN117891415A (en) P2L data management method and device of storage device
CN116860170A (en) Data processing method, device, equipment, medium and solid state disk

Legal Events

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

Payment date: 20130123

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131217

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141204

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160113

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee