KR101270777B1 - System and method for writing data using a PRAM in a device based on input-output of block unit - Google Patents
System and method for writing data using a PRAM in a device based on input-output of block unit Download PDFInfo
- Publication number
- KR101270777B1 KR101270777B1 KR1020070104215A KR20070104215A KR101270777B1 KR 101270777 B1 KR101270777 B1 KR 101270777B1 KR 1020070104215 A KR1020070104215 A KR 1020070104215A KR 20070104215 A KR20070104215 A KR 20070104215A KR 101270777 B1 KR101270777 B1 KR 101270777B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- block
- pram
- file system
- unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Crystallography & Structural Chemistry (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템 및 방법에 관한 것이다.The present invention relates to a data recording system and method using a PRAM in a block unit input and output device.
본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템은 블록 단위로 데이터의 입출력을 관리하는 파일 시스템, 상기 데이터를 저장하는 피램 및 상기 파일 시스템으로부터 상기 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달받고, 상기 제1 데이터 중에서 상기 피램의 블록에 저장되어 있는 제2 데이터와 차이가 있는 변동 데이터를 서브 블록 단위로 상기 피램의 블록에 쓰기 명령을 상기 피램에 전달하는 필터 레이어를 포함한다.A data recording system using a pram in a block unit input / output device according to another embodiment of the present invention is a file system for managing input and output of data in block units, a file system for storing the data and a predetermined block of the file system from the file system. Receiving a write command for one data, and transmits a write command to the block of the FRAM in the sub-block unit of the variation data that is different from the second data stored in the block of the FRAM among the first data It includes a filter layer.
플래시 메모리, 피램(PRAM), 블록 단위 Flash Memory, PRAM, Block Units
Description
본 발명은 피램을 이용한 데이터 기록 시스템 및 방법에 관한 것으로서, 더욱 상세하게는 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템 및 방법에 관한 것이다.The present invention relates to a data recording system and method using a pram, and more particularly, to a data recording system and method using a pram in a block unit input and output device.
최근 디지털 카메라, MP3 플레이어, 핸드폰, 개인 휴대 정보 단말기(PDA)와 같은 디지털 기기들이 많이 사용되고 있다. 이러한 디지털 기기에서는 대용량의 데이터를 저장할 수 있는 플래시 메모리가 적용되고 있다.Recently, digital devices such as digital cameras, MP3 players, mobile phones, personal digital assistants (PDAs) have been used a lot. In such digital devices, a flash memory capable of storing a large amount of data is applied.
플래시 메모리는 저전력, 비휘발성, 고성능, 물리적 안정성, 휴대성 등의 특징으로 인해 상술한 휴대용 디지털 기기의 저장 장치로 많이 사용되고 있으며, 특히 플래시 메모리의 용량이 크게 늘어나면서 디스크를 플래시 메모리로 대체되고 있다.Flash memory is widely used as a storage device of the above-mentioned portable digital devices because of low power, non-volatile, high performance, physical stability, portability, etc. In particular, as the capacity of the flash memory is greatly increased, the disk is replaced by the flash memory. .
하지만, 플래시 메모리는 SRAM, DRAM, PRAM, MRAM, FeRAM 들과 같은 메모리 등이 지원하는 바이트(Byte) 단위의 랜덤 액세스(Random Access)를 지원하지 못한 다. 이와 함께, 플래시 메모리는 데이터 읽기를 페이지(Page) 단위로 수행한다.However, flash memory does not support random access in units of bytes supported by memories such as SRAM, DRAM, PRAM, MRAM, and FeRAM. In addition, the flash memory reads data in units of pages.
플래시 메모리는 물리적은 특성으로 인하여 쓰기 전 소거(Erase-Before-Write)연산을 수행한다. 이는 플래시 메모리의 섹터(Sector)에 쓰기 연산을 할 경우, 그 섹터가 속한 블록(Block)의 소거 연산을 수행한 후 쓰기 연산을 수행하는 것이다. 그러므로, 섹터에 덮어쓰기 연산을 수행할 수 있는 하드 디스크에 비하여 입출력(I/O)에 대하여 더 많은 시간이 소요될 수 있다.Flash memory performs erase-before-write operations because of its physical characteristics. When a write operation is performed on a sector of a flash memory, the write operation is performed after an erase operation of a block to which the sector belongs. Therefore, it may take more time for input / output (I / O) than a hard disk capable of performing an overwrite operation on a sector.
이와 함께, 플래시 메모리의 블록은 10만 번 정도의 소거 연산을 수행하면 블록 상의 메모리 소자들이 고장날 확률이 현저히 높아진다. 이러한 특성으로 인하여, 플래시 메모리의 특정 섹터에 대한 쓰기 연산을 수행하는 경우에는 플래시 메모리는 현재 할당된 블록에서 비어있는 영역을 찾거나 혹은 소거 연산의 횟수가 적은 블록을 할당하여 쓰기 연산을 수행하는데, 이러한 연산을 수행하는 레이어를 플래시 트랜스레이션 레이어(Flash Translation Layer, 이하 FTL이라 칭한다)라 불린다. FTL은 파일 시스템의 논리적 섹터 주소를 플래시 메모리의 물리적 섹터 주소로 맵핑하는 기능을 수행한다.In addition, when the block of the flash memory performs about 100,000 erase operations, the probability that the memory elements on the block fail is significantly increased. Due to this characteristic, when performing a write operation on a specific sector of the flash memory, the flash memory searches for an empty area in the currently allocated block or allocates a block with a small number of erase operations. The layer that performs this operation is called a Flash Translation Layer (hereinafter referred to as FTL). The FTL performs the function of mapping the logical sector address of the file system to the physical sector address of the flash memory.
플래시 메모리의 성능은 FTL을 이용하는 파일 시스템의 액세스 패턴 및 FTL 알고리즘에 영향을 받는다. 파일 시스템에 대한 랜덤 액세스가 많을수록 FTL의 오버헤드(Overhead)가 증가하여 플래시 메모리의 성능 저하 및 쓰기/지우기(Write/Erase) 사이클의 증가로 플래시 메모리의 수명이 빠르게 낮아질 수 있다.The performance of flash memory is affected by the FTL algorithm and the access pattern of the file system using FTL. More random accesses to the file system can increase the overhead of the FTL, leading to faster flash memory life due to slower flash memory performance and increased write / erase cycles.
파일 시스템의 부하(Workload)는 크게 파일 시스템의 사용자 데이터를 처리하는 액세스와 파일 시스템 자체의 메타 데이터(Meta data)를 처리하는 액세스로 나눌 수 있다. 여기서, 파일 시스템의 메타 데이터의 데이터 변경이 플래시 메모리에 빈번히 램덤 액세스(Random Access)를 일으킬 수 있다.The workload of a file system can be largely divided into an access for processing user data of the file system and an access for processing meta data of the file system itself. Here, data change of metadata of the file system may frequently cause random access to the flash memory.
하지만, 블록 단위로 쓰기 연산을 수행하는 플래시 메모리와 FTL 알고리즘에서는 사용자 데이터 또는 메타 데이터의 미세한 변동 사항이 있는 경우에도 이를 블록 단위로 다시 쓰기 연산을 수행하게 되므로, 실제 변경되어 기록해야 할 데이터보다 많은 양의 데이터를 변경해야 하므로, 디바이스에 과도한 부하를 줄 수 있다.However, Flash memory and FTL algorithms that perform write operations on a block basis perform rewrite operations on a block basis even if there is a slight change in user data or metadata. The amount of data must be changed, which can overload the device.
이러한 문제의 임시 방편으로, 블록 단위의 입출력을 지원하는 파일 시스템을 바이트 단위로 입출력을 지원하도록 변경하는 경우에는 파일 시스템을 대규모로 변경하여야 한다.As a temporary solution to this problem, if the file system supporting block I / O is changed to support I / O by byte, the file system must be changed in a large scale.
따라서, 파일 시스템 또는 FTL 등을 수정하지 않으면서 블록 단위의 입출력을 지원하는 파일 시스템의 블록 단위 입출력 요청을 받아서 디바이스에서 상기 블록 단위보다 작은 단위로 데이터를 제어할 수 있는 시스템 및 방법이 필요하다.Accordingly, there is a need for a system and method capable of receiving data in a block unit I / O request of a file system supporting block unit I / O without modifying a file system or FTL, and controlling data in a unit smaller than the block unit.
본 발명은 블록 단위로 데이터 입출력을 지원하는 디바이스에서 블록 단위보다 작은 단위인 서브 블록 단위로 데이터를 기록하는 시스템 및 방법을 제공하는데 그 목적이 있다.An object of the present invention is to provide a system and method for recording data in sub-block units, which are smaller units than block units, in a device supporting data input / output in block units.
이와 함께, 블록 단위로 데이터 입출력을 지원하는 디바이스에서 파일 시스템의 변경 없이 피램을 이용하여 서브 블록 단위로 데이터 쓰기를 할 수 있는 시스템 및 방법을 제공하는데 그 목적이 있다.In addition, an object of the present invention is to provide a system and a method for writing data in sub-block units using a PRAM without changing a file system in a device supporting data input / output in a block unit.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.
상기 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템은 블록 단위로 데이터의 입출력을 관리하는 파일 시스템; 상기 데이터 중에서 제1 데이터를 상기 블록 단위로 쓰는 플래시 메모리(Flash memory); 상기 데이터 중에서 제2 데이터를 서브 블록 단위로 쓰는 피램(PRAM); 및 상기 파일 시스템으로부터 상기 피램의 소정 블록에 상기 제2 데이터에 대한 쓰기 명령을 전달받아 상기 피램의 블록에 저장되어 있는 제3 데이터와의 차이 부분을 상기 피램의 블록에 서브 블록 단위로 쓰는 필터 레이어(Filter layer)를 포함한다.In order to achieve the above object, a data recording system using a PRAM in a block unit input / output device according to an embodiment of the present invention includes a file system for managing input and output of data in units of blocks; A flash memory for writing first data among the data in units of blocks; A PRAM for writing second data among the data in sub-block units; And a filter layer that receives a write command for the second data from the file system to a predetermined block of the FRAM and writes a difference portion from the third data stored in the FRAM block to the blocks of the FRAM in sub-block units. (Filter layer) is included.
상기 목적을 달성하기 위하여 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템은 블록 단위로 데이터의 입출력을 관리하는 파일 시스템; 상기 데이터를 저장하는 피램; 및 상기 파일 시스템으로부터 상기 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달받고, 상기 제1 데이터 중에서 상기 피램의 블록에 저장되어 있는 제2 데이터와 차이가 있는 변동 데이터를 서브 블록 단위로 상기 피램의 블록에 쓰기 명령을 상기 피램에 전달하는 필터 레이어를 포함한다.In order to achieve the above object, a data recording system using a PRAM in a block unit input / output device according to another embodiment of the present invention includes a file system for managing input and output of data in units of blocks; A pram for storing the data; And receiving the write command for the first data from the file system to a predetermined block of the FRAM, and converting the variation data that is different from the second data stored in the FRAM block among the first data in sub-block units. And a filter layer for transmitting a write command to the block of the fram.
상기 목적을 달성하기 위하여 본 발명의 또 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법은 파일 시스템으로부터 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달받는 단계; 상기 제1 데이터 중에서 상기 피램의 블록에 저장되어 있는 제2 데이터와 차이가 나는 변동 데이터를 검출하는 단계; 및 상기 변동 데이터를 서브 블록 단위로 상기 피램의 블록에 쓰는 단계를 포함한다.According to another aspect of the present invention, there is provided a data writing method using a pram in a block unit input / output device, the method comprising: receiving a write command for first data from a file system to a predetermined block of the pram; Detecting variation data among the first data that is different from the second data stored in the block of the PRAM; And writing the variation data in the block of the PRAM in sub-block units.
상기 목적을 달성하기 위하여 본 발명의 또 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법은 파일 시스템으로부터 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달받는 단계; 상기 피램의 소정 블록에 저장되어 있는 제2 데이터를 블록 단위로 읽는 단계; 상기 제1 데이터와 제2 데이터를 비교하여 변동 데이터를 검출하는 단계; 및 상기 변동 데이터가 위치하는 상기 피램의 소정 블록 내의 서브 블록에 상기 변동 데이터를 쓰는 단계를 포함한다.According to another aspect of the present invention, there is provided a data writing method using a pram in a block unit input / output device, the method comprising: receiving a write command for first data from a file system to a predetermined block of the pram; Reading second data stored in a predetermined block of the PRAM in block units; Comparing the first data with the second data to detect variation data; And writing the variation data in a sub-block within a predetermined block of the piram in which the variation data is located.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. Specific details of other embodiments are included in the detailed description and the drawings.
상기한 바와 같은 본 발명의 일 실시예에 따르면 블록 단위로 입출력을 지원하는 디바이스에서 서브 블록 단위로 데이터의 입출력을 지원할 수 있다.According to an embodiment of the present invention as described above, a device supporting input / output in block units may support input / output of data in sub-block units.
이와 함께, 블록 단위를 데이터 입출력을 지원하는 디바이스에서 피램을 이용하여 서브 블록 단위로 데이터의 쓰기 기능을 지원할 수 있다.In addition, a device supporting data input / output may support a function of writing data in sub-block units using a PRAM.
또한, 블록 단위의 데이터 입출력을 지원하는 파일 시스템을 변경하지 아니하고 서브 블록 단위의 데이터 입력을 지원할 수 있다.In addition, it is possible to support data input in sub-block units without changing the file system supporting data input / output in block units.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.Advantages and features of the present invention and methods for achieving them will be apparent with reference to the embodiments described below in detail with the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. To fully disclose the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims.
이하, 본 발명의 실시예들에 의하여 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템 및 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다. Hereinafter, the present invention will be described with reference to a block diagram or a flowchart illustrating a data recording system and method using a PRAM in a block unit input / output device according to embodiments of the present invention. At this point, it will be understood that each block of the flowchart illustrations and combinations of flowchart illustrations may be performed by computer program instructions. Since these computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, those instructions executed through the processor of the computer or other programmable data processing equipment may be described in flow chart block (s). It creates a means to perform the functions. These computer program instructions may also be stored in a computer usable or computer readable memory capable of directing a computer or other programmable data processing apparatus to implement the functionality in a particular manner so that the computer usable or computer readable memory The instructions stored in the block diagram (s) are also capable of producing manufacturing items containing instruction means for performing the functions described in the flowchart block (s). Computer program instructions may also be stored on a computer or other programmable data processing equipment so that a series of operating steps may be performed on a computer or other programmable data processing equipment to create a computer- It is also possible for the instructions to perform the processing equipment to provide steps for executing the functions described in the flowchart block (s).
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때 로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.In addition, each block may represent a portion of a module, segment, or code that includes one or more executable instructions for executing a specified logical function (s). It should also be noted that in some alternative implementations, the functions mentioned in the blocks may occur out of order. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or they may sometimes be executed in the reverse order, depending on the functionality involved.
본 실시예에서 사용되는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. As used herein, the term 'module' refers to software or a hardware component such as an FPGA or an ASIC, and a module plays a role. However, a module is not limited to software or hardware. A module may be configured to reside on an addressable storage medium and configured to play back one or more processors. Thus, by way of example, a module may include components such as software components, object-oriented software components, class components and task components, and processes, functions, attributes, procedures, Microcode, circuitry, data, databases, data structures, tables, arrays, and variables, as will be appreciated by those skilled in the art. The functionality provided within the components and modules may be combined into a smaller number of components and modules or further separated into additional components and modules.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 블록도를 보여준다.1 is a block diagram of a data recording system using a PRAM in a block unit input / output device according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템(100)은 어플리케이션 실행부(110), 운영체제부(120), 파일 시스템(130), 필터 레이어(140), FTL(170), 피램(150) 및 플래시 메모리(180)를 포함할 수 있다.Referring to FIG. 1, a
어플리케이션 실행부(110)는 운영체제부(120)에 의해 구동되는 일반적인 사용자 프로그램을 실행시키는 역할을 한다. 예를 들어, MP3 파일을 플레이 시키는 실행부, 동영상 파일을 플레이 시키는 실행부, 게임을 실행시키는 실행부, 컨텐츠를 검색하는 실행부 등 다양한 어플리케이션 실행부(110)가 포함될 수 있다.The application executor 110 executes a general user program driven by the operating system 120. For example, various application execution units 110 may be included, such as an execution unit for playing an MP3 file, an execution unit for playing a video file, an execution unit for executing a game, and an execution unit for searching for content.
운영체제부(120)는 파일 시스템(130)을 관리하고, 사용자가 하드웨어를 보다 용이하게 사용할 수 있도록 인터페이스를 제공해 주는 프로그램들의 집합으로서, 프로세서, 기억 장치, 입출력 장치, 통신 장치, 데이터 등의 자원을 관리한다. The operating system 120 is a set of programs that manages the file system 130 and provides an interface for a user to easily use hardware. The operating system 120 includes resources such as a processor, a memory device, an input / output device, a communication device, and data. Manage.
파일 시스템(130)은 데이터를 쓰고, 읽고, 사용하기 위한 방법과 기능을 제공한다. 파일시스템(130)은 데이터의 집합인 파일의 효율적인 관리를 위한 기능을 수행하며, 데이터의 빠른 검색, 복구, 대용량 데이터의 지원 등을 제공하고 있다. 파일시스템(130)은 CPU와 같은 프로세서에 비해 상대적으로 느린 처리 속도를 가진 저장 매체가 시스템에 가져다주는 병목 현상을 줄이고, 파일의 처리를 원활하게 하여, 전체 시스템의 성능 향상을 목적으로 한다. File system 130 provides methods and functions for writing, reading, and using data. The file system 130 performs a function for efficient management of a file, which is a collection of data, and provides fast search, recovery, and support of large data. The file system 130 reduces the bottleneck caused by a storage medium having a relatively slow processing speed compared to a processor such as a CPU to the system, facilitates file processing, and improves the performance of the entire system.
FTL(Flash Translation Layer; 170)은 파일 시스템(130)의 논리적 섹터 주소를 플래시 메모리의 물리적 섹터 주소로 맵핑하는 기능을 수행한다. FTL은 플래시 메모리의 특정 섹터에 대한 쓰기 연산을 수행하는 경우에는 플래시 메모리는 현재 할당된 블록에서 비어있는 영역을 찾거나 혹은 소거 연산의 횟수가 적은 블록을 할당하여 쓰기 연산을 수행하도록 소프트웨어적으로 제어하는 기능을 수행한다.The Flash Translation Layer (FTL) 170 performs a function of mapping a logical sector address of the file system 130 to a physical sector address of the flash memory. When the FTL performs a write operation on a specific sector of the flash memory, the flash memory software controls to find an empty area in the currently allocated block or to perform a write operation by allocating a block with a low number of erase operations. It performs the function.
본 발명의 일 실시예에 따른 파일 시스템(130)은 데이터를 복수의 바이트 집합체로 이루어지는 블록(Block) 단위로 데이터 입출력을 수행한다. 여기서, 블 록(Block)이란 파일 시스템 또는 FTL의 기본 입출력 단위를 의미한다. 예를 들어, 블록은 512 바이트 혹은 512 바이트의 배수 단위의 크기가 될 수 있다. 하지만, 블록의 크기는 512, 128 등의 수에 제한되지 아니하며 본 발명에 속하는 기술분야에서 통상의 지식을 가진 자에 의하여 변경할 수 있는 바이트 단위를 복수 개로 모인 집합체를 블록으로 명할 수 있다. 다만, 데이터 블록(Block)은 클러스터, 섹터, 페이지 등의 데이터의 입출력 단위를 의미하는 다른 용어로 사용될 수도 있다.The file system 130 according to an exemplary embodiment of the present invention performs data input / output in units of blocks formed of a plurality of byte aggregates. Here, a block means a basic input / output unit of a file system or an FTL. For example, a block can be 512 bytes or multiples of 512 bytes in size. However, the size of the block is not limited to the number of 512, 128, and the like, and may be referred to as a block, a collection of a plurality of byte units that can be changed by those skilled in the art. However, the data block may be used as another term meaning an input / output unit of data such as a cluster, a sector, and a page.
필터 레이어(140)는 파일 시스템(130) 또는 FTL(170)이 피램(150)에 쓰기 연산을 수행하도록 중개 역할을 한다. 필터 레이어(140)는 블록 단위보다 크기가 작은 단위인 서브 블록 단위로 피램(150)에 쓰기 연산을 수행한다. 여기서, 서브 블록은 블록의 데이터 크기보다 상대적으로 작은 데이터 크기 단위를 의미하는 것으로서, 블록의 데이터의 크기의 배수 단위로 작은 데이터 크기를 의미한다. 예를 들어, 블록의 데이터 크기가 1024 바이트라면, 서브 블록은 512 바이트, 256 바이트, ..., 1 바이트가 될 수 있다. 예를 들어, 바이트(Byte) 단위로 입출력을 제어한다면 바이트 단위가 서브 블록 단위가 될 수 있다.The
블록 단위로 입출력을 지원하는 파일 시스템(130)에서는 일반적으로 플래시 메모리(180)에 대하여 블록 단위로 쓰기 연산을 수행한다. 블록 단위 중의 일부 데이터에 대해서만 데이터 변경이 있는 경우에는 해당 블록 전체를 다시 써야 한다. 하지만, 피램의 특성상 쓰기 연산의 속도가 읽기 연산의 속도보다 느리므로, 해당 블록 전체를 쓰는 것은 전체 시스템의 속도를 상당히 떨어뜨릴 수 있다. In the file system 130 that supports input and output in block units, a write operation is generally performed in block units with respect to the flash memory 180. If there is a data change for only some data in the block unit, the entire block must be rewritten. However, because of the nature of the program, the write operation is slower than the read operation, so writing the entire block can significantly slow down the overall system.
따라서, 필터 레이어(140)를 도입함으로써 블록 단위로 입출력을 수행하는 파일 시스템에서 데이터를 저장하는 피램(150)에는 변경된 데이터만을 쓰는 연산을 수행할 수 있다. 필터 레이어(140)는 파일 시스템(130) 또는 FTL(170)로부터 일정 블록에 대한 쓰기 명령을 전달 받아, 피램(150)에는 해당 블록 중에 변경된 부분에 대하여만 서브 블록 단위로 쓰기 연산을 수행하도록 한다. Therefore, by introducing the
필터 레이어(140)는 일종의 필터링 레이어이다. 필터 레이어(140)는 블록 단위로 입출력을 수행하는 파일 시스템(130) 또는 FTL(170)을 수정하지 아니하면서 블록 단위보다 작은 데이터 단위인 서브 블록 단위로 메모리에 쓰기 연산을 수행할 수 있게 한다. 필터 레이어(140)는 파일 시스템(130) 또는 FTL(170)의 블록 쓰기 연산 명령에 대하여 블록을 필터링 하여 서브 블록 단위로 쓰기 연산을 수행할 수 있다. The
피램(150)은 상변화 메모리, 상태변화 메모리 또는 상전이 메모리라고도 한다. 전원이 끊겨도 저장된 정보가 지워지지 않는 플래시 메모리의 장점과 빠른 처리 속도를 자랑하는 디램의 장점을 모두 가지고 있다. 다만, 쓰기 속도가 읽기 속도보다 상대적으로 느림으로써 쓰기 연산을 수행하는 경우에 속도가 느려질 수 있다.The
플래시 메모리(180)는 전원이 꺼지더라도 저장된 정보가 유지되는 특성을 가지는 비휘발성 메모리이다. 플래시 메모리(180)는 데이터의 입출력도 자유로워 디지털 캠코더, 휴대전화, 디지털 카메라, 개인휴대 단말기, MP3 플레이어 등에 널리 이용된다. 플래시 메모리(180)는 FTL을 통하여 블록 단위로 입출력이 이루어져, 대용량의 데이터의 읽기 및 쓰기에 적합할 수 있다.The flash memory 180 is a nonvolatile memory having a characteristic that stored information is maintained even when the power is turned off. The flash memory 180 also freely inputs and outputs data and is widely used in digital camcorders, mobile phones, digital cameras, personal digital assistants, MP3 players, and the like. The flash memory 180 is inputted and outputted in units of blocks through an FTL, and may be suitable for reading and writing a large amount of data.
도 2는 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작을 보여준다.2 illustrates an operation of a data recording system using a PRAM in a block unit input / output device according to an embodiment of the present invention.
도 2를 참조하면, 어플리케이션 실행부(110) 또는 운영체제부(120)에 의하여 피램(150) 또는 플래시 메모리(180)에 저장된 데이터에 액세스를 시도할 수 있다. 예를 들어, 플래시 메모리(180)에는 사용자 데이터가 저장되고, 피램(150)에는 파일 시스템(130) 및/또는 FTL(170)의 메타 데이터가 저장된다고 가정하자. 여기서, 파일 시스템의 메타 데이터는 사용자 데이터 파일에 대한 정보를 나타내는 데이터이며, FTL(170)의 메타 데이터는 논리 주소와 물리 주소 간의 맵핑 정보, 물리적 디바이스의 상태 정보 등을 나타내는 데이터이다. 상기 메타 데이터는 사용자 데이터에 비하여 용량이 작고 빈번하게 변경될 수 있다.Referring to FIG. 2, an application execution unit 110 or an operating system unit 120 may attempt to access data stored in the
파일 시스템(130)은 플래시 메모리(180)에 저장되어 있는 사용자 데이터에는 블록 단위로 읽고 쓰기를 수행한다. 사용자 데이터를 제1 데이터라고 칭하기로 하자. FTL(170)은 파일 시스템의 논리적 섹터 주소를 맵핑된 플래시 메모리의 물리적 섹터 주소를 검색하여, 플래시 메모리의 특정 섹터에 블록 단위로 읽기 쓰기를 수행한다.The file system 130 reads and writes the user data stored in the flash memory 180 in block units. Let user data be referred to as first data. The
한편, 피램(150)에 저장된 데이터를 읽기 위하여는 파일 시스템(130) 또는 FTL(170)은 블록 단위로 액세스한다. 따라서, 피램(150)에 저장된 데이터에 대하여도 블록 단위로 액세스함으로써 기존의 블록 단위의 입출력을 수행하는 파일 시스템(130) 및 FTL(170)을 수정 없이 사용할 수 있다.On the other hand, in order to read the data stored in the
다만, 피램(150)에 데이터를 쓰기 위하여는 서브 블록 단위를 이용한다. 파 일 시스템(130)과 FTL(170)은 서브 블록 단위의 입출력을 지원하지 아니하므로, 필터 레이어(140)를 통하여 서브 블록 단위의 쓰기를 지원하도록 한다.However, in order to write data to the
파일 시스템(130) 또는 FTL(170)은 피램(150)의 소정 블록에 데이터를 쓰기 위하여 저장할 논리 블록의 주소, 논리 블록 개수, 데이터 등의 정보를 필터 레이어에게 전달한다. 피램(150)이 소정 블록에 써야 할 데이터를 제2 데이터라고 하자. 제2 데이터는 블록 단위로 이루어진다. 따라서 제2 데이터는 적어도 하나 이상의 블록으로 이루어진다.The file system 130 or the
필터 레이어(140)는 맵핑 정보에 의하여 파일 시스템(130) 또는 FTL(170)의 논리 블록에 대응되는 피램(150)의 블록을 검색한다. 다만, 피램(150)의 블록은 피램에 실질적으로 데이터가 저장되는 물리적 매체를 의미한다.The
필터 레이어(140)는 검색된 피램(150)의 블록을 읽어 들인다. 읽어 들인 데이터를 제3 데이터라고 하자. 제3 데이터는 제2 데이터와 동일한 개수의 블록을 가짐으로써, 제2 데이터와 제3 데이터는 동일한 크기를 가진다. 상기 제3 데이터는 필터 레이어(140)의 버퍼부(미도시됨)에 임시로 저장될 수 있다.The
필터 레이어(140)는 제2 데이터를 기준으로 제3 데이터와의 비교하여 변동 데이터를 검출한다. 제2 데이터를 기준으로 제3 데이터와의 차이를 변동 데이터라고 한다. 예를 들어, 제2 데이터와 제3 데이터가 전혀 다른 데이터라면, 변동 데이터는 제2 데이터가 된다. 또는 제2 데이터와 제3 데이터가 블록의 전반부만 동일하다면, 변동 데이터는 제2 데이터의 후반부가 된다. 변동 데이터의 단위는 서브 블록 단위로 이루어진다.The
필터 레이어(140)는 검출된 변동 데이터를 이용하여 피램(150)의 블록에 쓰기를 수행한다. 파일 시스템(130) 또는 FTL(170)은 피램(150)에 블록 단위의 제2 데이터의 쓰기를 명령하였지만, 필터 레이어(140)를 통하여 서브 블록 단위의 변동 데이터를 피램(150)의 블록에 쓴다. 따라서, 외부적으로 블록 단위로 쓰기를 수행하지만, 내부적으로는 피램(150)에 서브 블록 단위로 쓰기를 수행한다. 이와 함께, 변경된 부분에 대하여만 데이터를 씀으로 인하여 데이터의 갱신에 효율을 높일 수 있고, 블록 단위의 입출력을 수행하는 파일 시스템(130) 및/또는 FTL(170)의 변경 없이 데이터의 읽고 쓰기를 할 수 있다.The
상기와 같이, 플래시 메모리(180)는 블록 단위로 입출력을 수행하고, 피램(150)은 외부적으로 블록 단위로 입출력을 수행하나, 내부적으로는 서브 블록 단위로 피램(150)에 데이터를 쓸 수 있다(write). 이는, 용량이 크고 내용상의 변경이 자주 일어나지 않는 사용자 데이터는 플래시 메모리(180)에 저장하고, 용량이 작고 내용상의 변경이 자주 일어나는 메타 데이터 등에 대하여는 피램(150)에 저장함으로써 효율적인 데이터 관리를 수행할 수 있다.As described above, the flash memory 180 performs input / output in block units, and the
이와 함께, 서브 블록 단위로 입출력을 수행하는 피램(150)에 대하여 필터 레이어(140)를 도입함으로써 블록 단위의 입출력을 수행하는 파일 시스템(130) 및/또는 FTL(170)의 변경 없이 데이터의 읽고 쓰기를 할 수 있다.In addition, by introducing the
또한, 읽는 속도에 비하여 쓰는 속도가 느리고, 블록 단위가 아닌 서브 블록 단위(예를 들어, 바이트 단위)로 데이터를 쓸 수 있는 피램의 특성을 이용하여 변경된 부분의 데이터만을 추출하여 서브 블록 단위로 쓰게 함으로써 플래시 메모 리(180)와 피램(150)을 효과적으로 병용할 수 있다.In addition, the writing speed is slower than the reading speed, and only the data of the changed part is extracted and written in sub-block units by using the characteristic of PRAM that can write data in sub-block units (for example, byte units) instead of block units. As a result, the flash memory 180 and the
도 3은 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 블록도를 보여주며, 도 4는 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작을 보여준다.3 is a block diagram of a data recording system using a pram in a block unit input and output device according to another embodiment of the present invention, Figure 4 is a data recording using a pram in a block unit input and output device according to another embodiment of the present invention Show the operation of the system.
도 3을 참조하면, 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 블록도는 어플리케이션 실행부(110), 운영체제부(120), 파일 시스템(130), 필터 레이어(140) 및 피램(150)을 포함할 수 있다.Referring to FIG. 3, a block diagram of a data recording system using a PRAM in a block unit input / output device according to another embodiment of the present invention is an application execution unit 110, an operating system unit 120, a file system 130, and a filter layer. 140 and
어플리케이션 실행부(110), 운영체제부(120), 파일 시스템(130), 필터 레이어(140) 및 피램(150)에 대해서는 이미 전술한 실시예에서 상세히 설명하였기에 생략하며, 다만 필터 레이어(140)을 통한 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작을 설명하기로 한다.The application executor 110, the operating system 120, the file system 130, the
필터 레이어(140)는 맵핑 정보 제공부(210), 데이터 리딩부(220) 및 변동 데이터 추출부(230)를 포함할 수 있다.The
맵핑 정보 제공부(210)는 파일 시스템(130)의 논리 블록을 피램(150)의 블록에 맵핑 시키는 정보를 제공한다. 맵핑 정보 제공부(210)는 파일 시스템의 논리 블록을 피램의 물리적인 블록에 대응되는 맵핑 정보를 제공한다. 파일 시스템(130)으로부터 소정의 논리 블록에 제1 데이터를 기록하라는 명령에 대하여 맵핑 정보 제 공부(210)에 의하여 대응되는 피램(150)의 블록을 검색한다. 여기서, 제1 데이터는 블록 단위로 입출력을 관리하는 파일 시스템에 의하여 블록 단위로 이루어지는 데이터를 말한다. 예를 들어, 피램(150)에 쓰기를 수행할 데이터가 블록 단위보다 작은 크기라도 제1 데이터는 하나의 블록에 실어진다. 또는 피램(150)에 쓰기를 수행할 데이터가 하나의 블록 단위보다 큰 경우라면 제1 데이터는 두 개의 블록에 실어진다. 다만, 맵핑 정보 제공부(210)는 파일 시스템(130) 또는 다른 구성요소에 위치하거나 독립된 구성 요소로 될 수 있다.The mapping information provider 210 provides information for mapping a logical block of the file system 130 to a block of the
데이터 리딩부(220)는 상기 검색된 피램(150)의 블록을 읽어 들인다. 데이터 리딩부(220)는 피램의 블록을 서브 블록 단위로 읽을 수 있다. 예를 들어, 서브 블록이 바이트 단위라면, 데이터 리딩부(220)는 바이트 단위로 상기 검색된 피램의 블록을 읽어 들여 버퍼부(미도시됨)에 임시로 저장할 수 있다. 데이터 리딩부(220)에 의하여 읽혀진 데이터를 제2 데이터로 칭하기로 한다.The data reading unit 220 reads the retrieved block of the
변동 데이터 추출부(230)는 제1 데이터와 제2 데이터를 비교하여 변동 데이터를 추출한다. 여기서, 변동 데이터는 제1 데이터를 기준으로 제2 데이터와의 차이가 있는 데이터를 의미한다. 예를 들어, 제1 데이터와 제2 데이터가 전혀 다른 데이터라면, 변동 데이터는 제1 데이터와 동일하다. 또는 제1 데이터와 제2 데이터가 블록의 전반부만 동일하다면, 변동 데이터는 제1 데이터의 후반부가 된다. 다만, 변동 데이터의 단위는 서브 블록 단위로 이루어진다.The variation data extractor 230 compares the first data and the second data to extract the variation data. Here, the variation data refers to data having a difference from the second data based on the first data. For example, if the first data and the second data are completely different data, the variation data is the same as the first data. Or if the first data and the second data are the same as the first half of the block, the variation data becomes the second half of the first data. However, the variation data unit is composed of sub-block units.
따라서, 추출된 변동 데이터의 크기가 블록의 크기에 비하여 작다면, 블록을 전체적으로 다시 쓰기 보다는 변동 데이터 부분만 다시 쓰는 연산을 수행함으로써 디바이스 자체의 오버헤드 및 쓰는 속도를 상당히 향상시킬 수 있다. 피램과 같이 쓰는 속도가 읽는 속도에 비하여 느린 경우에는 쓰는 연산을 줄임에 의하여 블록 단위의 데이터의 쓰기를 효율적으로 수행할 수 있다.Therefore, if the size of the extracted variation data is smaller than the size of the block, the overhead and the writing speed of the device itself can be significantly improved by performing an operation of rewriting only the variation data portion rather than rewriting the block as a whole. When the writing speed such as PRAM is slower than the reading speed, writing of data in block units can be efficiently performed by reducing the writing operation.
도 4를 참조하면, 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작은 다음과 같다.Referring to FIG. 4, an operation of a data recording system using a PRAM in a block unit input / output device according to another embodiment of the present invention is as follows.
파일 시스템(130)은 제1 데이터(430)를 메모리에 저장하라는 명령을 운영체제부(120) 또는 어플리케이션 실행부(110)로부터 전달받는다. 파일 시스템(130)은 상기 제1 데이터(430)를 저장할 논리 블록의 주소, 논리 블록 개수, 데이터 등의 정보를 필터 레이어(140)에게 전달한다.The file system 130 receives a command from the operating system 120 or the application execution unit 110 to store the
필터 레이어(140)는 논리 블록에 대응되는 피램의 블록(400)을 검색한다. 피램의 블록(400)은 복수개의 서브 블록(410)으로 이루어진다. 필터 레이어(140)는 검색된 피램의 블록(400)을 읽어 들여 제2 데이터(450)로 임시로 저장한다. 따라서, 제1 데이터(430)와 제2 데이터(450)를 비교하여 변동 데이터(420)를 추출한다. 필터 레이어(140)는 추출된 변동 데이터(420)를 서브 블록 단위로 피램에 쓰게 한다. The
예를 들어, 변동 데이터(420)가 하나의 서브 블록이(410)이라면 하나의 서브 블록만을 쓰는 연산을 수행함으로써 제1 데이터(430)를 피램(150)에 쓰는 효과를 가질 수 있다. 따라서, 데이터의 변경이 작으면서 빈번히 데이터 변경이 일어나는 경우에 효과적으로 데이터를 갱신할 수 있다.For example, if the
예를 들어, 사용자 데이터에 대한 정보를 포함하는 메타 데이터 또는 플래시 메모리에 저장되어 있는 데이터에 대한 정보를 포함하는 메타 데이터는 크기는 상대적으로 작지만, 상대적으로 자주 변경된다. 왜냐하면, 메타 데이터는 사용자 데이터의 크기, 사용자 데이터의 속성 등 사용자 데이터의 고유 정보뿐만 아니라 사용자 데이터의 저장 시간, 최근 액세스 시간 및 FTL의 맵핑 정보 등 가변하는 정보를 포함하기 때문이다.For example, metadata including information about user data or metadata including information about data stored in a flash memory is relatively small in size but changes relatively frequently. This is because the meta data includes not only unique information of the user data such as the size of the user data, attributes of the user data, but also variable information such as a storage time of the user data, recent access time, and mapping information of the FTL.
따라서, 데이터 쓰기 요청의 단위가 작은 메타 데이터의 변경이 자주 이루어짐으로 인하여 블록 단위로 데이터의 입출력하는 디바이스에 과도한 오버헤드가 가해질 수 있다. 이와 함께, 블록 단위의 입출력으로 인하여 미세한 데이터 변경에도 블록 전체를 다시 씀으로 인하여 시스템의 낭비가 과도할 수 있다. Therefore, since metadata of small data write requests is frequently changed, excessive overhead may be applied to a device that inputs / outputs data in block units. In addition, waste of the system may be excessive because the entire block is rewritten even with a small data change due to the input / output of each block.
본 발명의 일 실시예에 따르면, 외부적으로는 블록 단위의 입출력을 유지하면서도 내부적으로 피램(150)에 서브 블록(410) 단위로 기록하게 함으로써 블록 단위의 입출력을 하는 파일 시스템을 수정하지 아니하면서 서브 블록 단위로 데이터를 기록할 수 있다.According to an embodiment of the present invention, while maintaining the input and output of the block unit externally while the internally recorded in the sub-block 410 unit in the
이와 함께, 변경된 데이터 부분만을 기록함으로써 블록을 다시 써야 하는 부담을 줄이고, 데이터를 기록하는 시간을 줄일 수 있다.At the same time, by recording only the changed data portion, the burden of rewriting blocks can be reduced, and the time for writing data can be reduced.
다만, 데이터의 변경이 없이 데이터를 읽는 경우에는 필터 레이어(140)를 통하지 아니하고 블록 단위로 데이터를 읽을 수 있다. However, when reading data without changing the data, the data may be read in units of blocks instead of through the
도 5는 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템에서 피램의 구조 및 맵핑 테이블을 보여준다.5 is a diagram illustrating a structure and a mapping table of a FRAM in a data recording system using a FRAM in a block unit input / output device according to an embodiment of the present invention.
도 5를 참조하면, 피램(150)은 파일 시스템(130) 또는 FTL(170)과 동일한 입 출력 단위인 블록 단위로 포맷(Format)되어 초기화된다. 피램(150)은 물리적으로 복수의 블록으로 초기화되고, 예를 들어 순서대로 P-Block 1, P-Block 2, ..., P-Block n 으로 구성될 수 있다.Referring to FIG. 5, the
피램의 각 블록(400)은 맵핑 정보를 가지는 맵핑 테이블(500)에 의하여 액세스 될 수 있다. 맵핑 테이블(500)은 맵핑 정보 제공부(210)에 의하며 형성되며, 파일 시스템(130) 또는 FTL(170)의 논리 블록에 대응하는 피램의 블록(400) 주소를 가진다. 따라서, 맵핑 정보 제공부(210)는 맵핑 테이블(500)을 이용하여 파일 시스템(130), FTL(170) 또는 필터 레이어(140) 등에 맵핑 정보를 제공하며, 파일 시스템(130), FTL(170) 또는 필터 레이어(140) 등은 피램의 블록(400)에 액세스할 수 있다.Each
도 6은 본 발명의 또 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법을 보여준다.6 illustrates a data writing method using a PRAM in a block unit input / output device according to another embodiment of the present invention.
도 6을 참조하면, 먼저 운영체제부(120) 또는 어플리케이션 실행부(110)는 파일 시스템(130) 또는 FTL(170)에 피램(150)에 제1 데이터 쓰기 명령을 전달한다. 여기서, 제1 데이터는 블록 단위로 이루어지는 데이터이며, 갱신되어야 할 데이터이다. 파일 시스템(130) 또는 FTL(170)은 필터 레이어에 제1 데이터 쓰기 명령을 전달한다(S600). 이 때, 제1 데이터 쓰기 명령을 전달하면서, 제1 데이터 쓰기를 수행할 논리 블록의 주소, 제1 데이터를 함께 전달한다. 이와 함께, 파일 시스템(130), FTL(170) 또는 필터 레이어(140)는 논리 블록에 대응되는 피램의 블록(400)을 맵핑 정보를 이용하여 검색한다(S610). 맵핑 정보를 이용하여 피램의 블 록(400)을 검색한 후에, 상기 피램의 블록(400)에 저장된 제2 데이터를 읽는다. 여기서, 제1 데이터와 제2 데이터의 크기는 동일하며, 따라서 블록의 개수도 동일하여 제1 데이터와 제2 데이터를 일대일로 비교할 수 있다.Referring to FIG. 6, first, the OS 120 or the application execution unit 110 transmits a first data write command to the
제2 데이터를 읽은 후에, 제1 데이터를 기준으로 제2 데이터와 비교하여 변동 데이터(420)를 검출한다(S630). 상기 검출된 변동 데이터(420)는 서브 블록 단위로 이루어진다. 변동 데이터(420)는 기존의 피램에 저장된 제2 데이터에서 제1 데이터에서 변동된 부분을 서브 블록 단위로 추출한 데이터이다.After reading the second data, the
변동 데이터(420)가 검출되면, 제2 데이터가 위치하는 피램의 블록에 변동 데이터(420)를 서브 블록 단위로 쓴다(S640). 예를 들어, 서브 블록 단위가 바이트 단위이고, 블록 단위가 1024 바이트라고 하자. 제1 데이터가 제2 데이터에서 10 바이트가 변동된다면, 추출되는 변동 데이터(420)는 10바이트가 된다. 따라서, 피램에 1024 바이트를 모두 쓰는 게 아니라, 변동 데이터 10바이트만 쓰면 되므로 쓰기 속도를 향상 시킬 수 있다.When the
이와 같이, 용량이 작으면서 데이터가 빈번히 변동되는 경우에는 변동 데이터만을 다시 씀으로써 피램의 특성이 읽는 속도에 비하여 쓰는 속도가 느린 특성을 효율적으로 이용할 수 있다.As described above, when the data is frequently changed while the capacity is small, only the changed data can be rewritten, so that the characteristic of the writing speed slower than the reading speed of the PRAM can be efficiently used.
또한, 블록 단위로 입출력을 수행하는 디바이스의 파일 시스템(130) 또는 FTL(170)을 변경시키지 않으면서 피램(150)에 대하여 서브 블록 단위로 쓰기를 수행함으로써 데이터의 갱신을 효과적으로 수행할 수 있다.In addition, data can be efficiently updated by writing to the
도 7은 본 발명의 또 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피 램을 이용한 데이터 기록 방법에서 필터 레이어를 통한 피램의 데이터를 읽는 방법을 보여준다.FIG. 7 illustrates a method of reading data of a PRAM through a filter layer in a data writing method using a PRAM in a block unit input / output device according to another embodiment of the present invention.
도 7을 참조하면, 파일 시스템(130) 또는 FTL(170)은 피램(150)의 데이터에 대한 읽기 명령을 운영체제부(120) 또는 어플리케이션 실행부(110)로부터 전달받는다. 파일 시스템(130) 또는 FTL(170)은 읽고자 하는 논리 블록 주소, 읽을 논리 블록 개수의 정보를 전달받아 필터 레이어(140)에 읽기 요청을 전달한다(S700).Referring to FIG. 7, the file system 130 or the
필터 레이어(140)는 읽고자 하는 논리 블록에 대응되는 피램의 블록(400)을 맵핑 정보를 이용하여 검색한다(S710). 필터 레이어(140)는 맵핑 정보 제공부(210)에 요청하여 피램의 블록(400)을 검색할 수도 있다.The
피램의 블록(400)을 찾은 후에 상기 피램의 블록(400)에 저장된 데이터를 읽어 들인다(S720). 이 때, 상기 피램의 블록(400)을 서브 블록 단위로 읽어 들이면서, 블록의 끝까지 읽는다. After finding the
상기와 같이, 필터 레이어(140)를 통하여 피램(150)의 데이터를 읽어 들이고, 이를 쓰고자 하는 데이터와 비교하여 변동 데이터(420)를 추출할 수 있다. 피램의 특성인 읽는 속도가 쓰는 속도에 비하여 빠른 점을 이용함으로써 블록 전체를 쓰는 대신 블록 전체를 읽고 변동된 부분만을 씀으로써 피램의 데이터 액세스를 필터 레이어를 통하여 빠르게 할 수 있다.As described above, the data of the
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이 해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although embodiments of the present invention have been described above with reference to the accompanying drawings, those skilled in the art to which the present invention pertains may implement the present invention in other specific forms without changing the technical spirit or essential features thereof. You can understand that there is. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive.
도 1은 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 블록도이다.1 is a block diagram of a data recording system using a PRAM in a block unit input / output device according to an embodiment of the present invention.
도 2는 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작을 보여주는 도면이다.2 is a diagram illustrating an operation of a data recording system using a PRAM in a block unit input / output device according to an embodiment of the present invention.
도 3은 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 블록도이다.3 is a block diagram of a data recording system using a PRAM in a block unit input / output device according to another embodiment of the present invention.
도 4는 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작을 보여주는 도면이다.4 is a diagram illustrating an operation of a data recording system using a PRAM in a block unit input / output device according to another embodiment of the present invention.
도 5는 본 발명의 일 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템에서 피램의 구조 및 맵핑 테이블을 보여주는 도면이다.FIG. 5 is a diagram illustrating a structure and a mapping table of a FRAM in a data recording system using a FRAM in a block unit input / output device according to an embodiment of the present invention.
도 6은 본 발명의 또 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법의 흐름도이다.6 is a flowchart illustrating a data writing method using a PRAM in a block unit input / output device according to another embodiment of the present invention.
도 7은 본 발명의 또 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법에서 필터 레이어를 통한 피램의 데이터를 읽는 방법의 흐름도이다.FIG. 7 is a flowchart illustrating a method of reading data of a PRAM through a filter layer in a data writing method using a PRAM in a block unit input / output device according to another embodiment of the present invention.
<도면의 주요 부분에 관한 부호의 설명>DESCRIPTION OF THE REFERENCE NUMERALS
100: 피램을 이용한 데이터 기록 시스템100: data recording system using pyram
110: 어플리케이션 실행부110: application execution unit
120: 운영체제부120: operating system
130: 파일 시스템130: file system
140: 필터 레이어140: filter layer
150: 피램150: piram
170: FTL(Flash Translation Layer)170: Flash Translation Layer (FTL)
180: 플래시 메모리 180: flash memory
Claims (18)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/142,093 US8332575B2 (en) | 2007-06-20 | 2008-06-19 | Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance |
TW097123180A TW200900929A (en) | 2007-06-20 | 2008-06-20 | Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance |
JP2008162069A JP2009003934A (en) | 2007-06-20 | 2008-06-20 | Data management system, data management method, and computer-readable recording medium in which program for performing data management method is recorded |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US94512807P | 2007-06-20 | 2007-06-20 | |
US60/945,128 | 2007-06-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080112069A KR20080112069A (en) | 2008-12-24 |
KR101270777B1 true KR101270777B1 (en) | 2013-05-31 |
Family
ID=40370096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070104215A KR101270777B1 (en) | 2007-06-20 | 2007-10-16 | System and method for writing data using a PRAM in a device based on input-output of block unit |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101270777B1 (en) |
TW (1) | TW200900929A (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8180995B2 (en) | 2009-01-21 | 2012-05-15 | Micron Technology, Inc. | Logical address offset in response to detecting a memory formatting operation |
KR20110048304A (en) | 2009-11-02 | 2011-05-11 | 삼성전자주식회사 | Method for prevention of losing code data in solder reflow and devices using same |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100484147B1 (en) | 2002-07-26 | 2005-04-18 | 삼성전자주식회사 | Flash memory management method |
-
2007
- 2007-10-16 KR KR1020070104215A patent/KR101270777B1/en active IP Right Grant
-
2008
- 2008-06-20 TW TW097123180A patent/TW200900929A/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100484147B1 (en) | 2002-07-26 | 2005-04-18 | 삼성전자주식회사 | Flash memory management method |
Also Published As
Publication number | Publication date |
---|---|
TW200900929A (en) | 2009-01-01 |
KR20080112069A (en) | 2008-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8037112B2 (en) | Efficient access of flash databases | |
US10678768B2 (en) | Logical band-based key-value storage structure | |
EP2605142B1 (en) | Lba bitmap usage | |
JP4044067B2 (en) | Priority-based flash memory control device for XIP in serial flash memory, memory management method using the same, and flash memory chip using the same | |
US8612719B2 (en) | Methods for optimizing data movement in solid state devices | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
US8332575B2 (en) | Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance | |
US20110145489A1 (en) | Hybrid storage device | |
JP2017021804A (en) | Interface providing method for utilizing data characteristic base data arrangement in nonvolatile memory device, system and nonvolatile memory device, and data characteristic base data arrangement method | |
JP5709814B2 (en) | Fast tree flattening for systems with non-volatile memory | |
EP2665065A2 (en) | Electronic device employing flash memory | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
KR102649131B1 (en) | Apparatus and method for checking valid data in block capable of large volume data in memory system | |
US7870122B2 (en) | Self-tuning index for flash-based databases | |
KR20200122994A (en) | Key Value Append | |
KR20170038853A (en) | Host-managed non-volatile memory | |
US20200225882A1 (en) | System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance | |
KR20200016075A (en) | Apparatus and method for searching valid data in memory system | |
US20180095720A1 (en) | Storage device with fine grained search capability | |
US8433847B2 (en) | Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive | |
Park et al. | A pattern adaptive NAND flash memory storage structure | |
CN110647288A (en) | Data storage device and cache shunting method thereof | |
KR20180011665A (en) | Data storage device and computing system including the same | |
US20210026763A1 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
JP5036078B2 (en) | Storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160429 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170427 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180430 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190429 Year of fee payment: 7 |