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 PDF

Info

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
Application number
KR1020070104215A
Other languages
Korean (ko)
Other versions
KR20080112069A (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 US12/142,093 priority Critical patent/US8332575B2/en
Priority to TW097123180A priority patent/TW200900929A/en
Priority to JP2008162069A priority patent/JP2009003934A/en
Publication of KR20080112069A publication Critical patent/KR20080112069A/en
Application granted granted Critical
Publication of KR101270777B1 publication Critical patent/KR101270777B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital 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/0004Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital 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/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory

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

블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템 및 방법{System and method for writing data using a PRAM in a device based on input-output of block unit}System and method for writing data using a PRAM in a device based on input-output of block unit}

본 발명은 피램을 이용한 데이터 기록 시스템 및 방법에 관한 것으로서, 더욱 상세하게는 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템 및 방법에 관한 것이다.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 data recording system 100 using a PRAM in a block unit input / output device according to an embodiment of the present invention may include an application execution unit 110, an operating system unit 120, a file system 130, and a filter layer. 140, the FTL 170, the PRAM 150, and the flash memory 180 may be included.

어플리케이션 실행부(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 filter layer 140 acts as an intermediary for the file system 130 or the FTL 170 to perform a write operation on the pram 150. The filter layer 140 performs a write operation on the pram 150 in units of sub blocks that are smaller in size than blocks. Here, the sub-block means a data size unit that is relatively smaller than the data size of the block, and means a small data size in multiples of the size of the data of the block. For example, if the data size of the block is 1024 bytes, the sub block may be 512 bytes, 256 bytes, ..., 1 byte. For example, if I / O is controlled by byte unit, the byte unit may be a sub block unit.

블록 단위로 입출력을 지원하는 파일 시스템(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 filter layer 140, an operation of writing only changed data may be performed on the PRAM 150 storing data in a file system that performs input and output in units of blocks. The filter layer 140 receives a write command for a predetermined block from the file system 130 or the FTL 170, and allows the pram 150 to perform a write operation on a subblock basis only for the changed part of the block. .

필터 레이어(140)는 일종의 필터링 레이어이다. 필터 레이어(140)는 블록 단위로 입출력을 수행하는 파일 시스템(130) 또는 FTL(170)을 수정하지 아니하면서 블록 단위보다 작은 데이터 단위인 서브 블록 단위로 메모리에 쓰기 연산을 수행할 수 있게 한다. 필터 레이어(140)는 파일 시스템(130) 또는 FTL(170)의 블록 쓰기 연산 명령에 대하여 블록을 필터링 하여 서브 블록 단위로 쓰기 연산을 수행할 수 있다. The filter layer 140 is a kind of filtering layer. The filter layer 140 may perform a write operation to the memory in a sub-block unit, which is a data unit smaller than the block unit, without modifying the file system 130 or the FTL 170 that performs input / output in block units. The filter layer 140 may filter a block with respect to a block write operation command of the file system 130 or the FTL 170 to perform a write operation in units of sub-blocks.

피램(150)은 상변화 메모리, 상태변화 메모리 또는 상전이 메모리라고도 한다. 전원이 끊겨도 저장된 정보가 지워지지 않는 플래시 메모리의 장점과 빠른 처리 속도를 자랑하는 디램의 장점을 모두 가지고 있다. 다만, 쓰기 속도가 읽기 속도보다 상대적으로 느림으로써 쓰기 연산을 수행하는 경우에 속도가 느려질 수 있다.The PRAM 150 may also be referred to as a phase change memory, a state change memory, or a phase change memory. It has both the advantages of flash memory, which does not erase stored information even when the power is cut off, and the advantages of DRAM, which has a high processing speed. However, since the write speed is relatively slower than the read speed, the write speed may be slow.

플래시 메모리(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 PRAM 150 or the flash memory 180. For example, assume that user data is stored in the flash memory 180, and metadata of the file system 130 and / or the FTL 170 is stored in the piram 150. Here, the metadata of the file system is data representing information about the user data file, and the metadata of the FTL 170 is data representing mapping information between logical addresses and physical addresses, state information of a physical device, and the like. The metadata is smaller in capacity than user data and can be changed frequently.

파일 시스템(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 FTL 170 retrieves the physical sector address of the flash memory mapped to the logical sector address of the file system, and reads and writes block by block to a specific sector of the flash memory.

한편, 피램(150)에 저장된 데이터를 읽기 위하여는 파일 시스템(130) 또는 FTL(170)은 블록 단위로 액세스한다. 따라서, 피램(150)에 저장된 데이터에 대하여도 블록 단위로 액세스함으로써 기존의 블록 단위의 입출력을 수행하는 파일 시스템(130) 및 FTL(170)을 수정 없이 사용할 수 있다.On the other hand, in order to read the data stored in the FRAM 150, the file system 130 or the FTL 170 is accessed in units of blocks. Accordingly, by accessing data stored in the PRAM 150 in units of blocks, the file system 130 and the FTL 170 that perform input / output of the existing blocks can be used without modification.

다만, 피램(150)에 데이터를 쓰기 위하여는 서브 블록 단위를 이용한다. 파 일 시스템(130)과 FTL(170)은 서브 블록 단위의 입출력을 지원하지 아니하므로, 필터 레이어(140)를 통하여 서브 블록 단위의 쓰기를 지원하도록 한다.However, in order to write data to the PRAM 150, a sub block unit is used. Since the file system 130 and the FTL 170 do not support the input / output of the sub block unit, the file system 130 supports the writing of the sub block unit through the filter layer 140.

파일 시스템(130) 또는 FTL(170)은 피램(150)의 소정 블록에 데이터를 쓰기 위하여 저장할 논리 블록의 주소, 논리 블록 개수, 데이터 등의 정보를 필터 레이어에게 전달한다. 피램(150)이 소정 블록에 써야 할 데이터를 제2 데이터라고 하자. 제2 데이터는 블록 단위로 이루어진다. 따라서 제2 데이터는 적어도 하나 이상의 블록으로 이루어진다.The file system 130 or the FTL 170 transmits information, such as an address, a logical block number, and data, of a logical block to be stored in order to write data to a predetermined block of the FRAM 150 to the filter layer. Assume that data to be written by the PRAM 150 in a predetermined block is second data. The second data is made in blocks. Thus, the second data consists of at least one block.

필터 레이어(140)는 맵핑 정보에 의하여 파일 시스템(130) 또는 FTL(170)의 논리 블록에 대응되는 피램(150)의 블록을 검색한다. 다만, 피램(150)의 블록은 피램에 실질적으로 데이터가 저장되는 물리적 매체를 의미한다.The filter layer 140 searches for a block of the PRAM 150 corresponding to the logical block of the file system 130 or the FTL 170 based on the mapping information. However, the block of the pram 150 refers to a physical medium in which data is substantially stored in the pram 150.

필터 레이어(140)는 검색된 피램(150)의 블록을 읽어 들인다. 읽어 들인 데이터를 제3 데이터라고 하자. 제3 데이터는 제2 데이터와 동일한 개수의 블록을 가짐으로써, 제2 데이터와 제3 데이터는 동일한 크기를 가진다. 상기 제3 데이터는 필터 레이어(140)의 버퍼부(미도시됨)에 임시로 저장될 수 있다.The filter layer 140 reads a block of the retrieved param 150. Let the read data be the third data. The third data has the same number of blocks as the second data, so that the second data and the third data have the same size. The third data may be temporarily stored in a buffer unit (not shown) of the filter layer 140.

필터 레이어(140)는 제2 데이터를 기준으로 제3 데이터와의 비교하여 변동 데이터를 검출한다. 제2 데이터를 기준으로 제3 데이터와의 차이를 변동 데이터라고 한다. 예를 들어, 제2 데이터와 제3 데이터가 전혀 다른 데이터라면, 변동 데이터는 제2 데이터가 된다. 또는 제2 데이터와 제3 데이터가 블록의 전반부만 동일하다면, 변동 데이터는 제2 데이터의 후반부가 된다. 변동 데이터의 단위는 서브 블록 단위로 이루어진다.The filter layer 140 detects the variation data by comparing with the third data based on the second data. The difference from the third data on the basis of the second data is called variation data. For example, if the second data and the third data are completely different data, the change data becomes the second data. Or if the second data and the third data are the same only in the first half of the block, the variation data becomes the second half of the second data. The unit of the variation data is made in sub-block units.

필터 레이어(140)는 검출된 변동 데이터를 이용하여 피램(150)의 블록에 쓰기를 수행한다. 파일 시스템(130) 또는 FTL(170)은 피램(150)에 블록 단위의 제2 데이터의 쓰기를 명령하였지만, 필터 레이어(140)를 통하여 서브 블록 단위의 변동 데이터를 피램(150)의 블록에 쓴다. 따라서, 외부적으로 블록 단위로 쓰기를 수행하지만, 내부적으로는 피램(150)에 서브 블록 단위로 쓰기를 수행한다. 이와 함께, 변경된 부분에 대하여만 데이터를 씀으로 인하여 데이터의 갱신에 효율을 높일 수 있고, 블록 단위의 입출력을 수행하는 파일 시스템(130) 및/또는 FTL(170)의 변경 없이 데이터의 읽고 쓰기를 할 수 있다.The filter layer 140 writes the block of the PRAM 150 using the detected variation data. The file system 130 or the FTL 170 instructs the FRAM 150 to write the second data in block units, but writes the fluctuation data in the sub-block units to the blocks of the FRAM 150 through the filter layer 140. . Therefore, writes are performed externally in units of blocks, but internally, writes to the PRAM 150 in units of subblocks. In addition, since the data is written only in the changed part, the data can be efficiently updated, and the data can be read and written without changing the file system 130 and / or the FTL 170 that perform I / O in blocks. can do.

상기와 같이, 플래시 메모리(180)는 블록 단위로 입출력을 수행하고, 피램(150)은 외부적으로 블록 단위로 입출력을 수행하나, 내부적으로는 서브 블록 단위로 피램(150)에 데이터를 쓸 수 있다(write). 이는, 용량이 크고 내용상의 변경이 자주 일어나지 않는 사용자 데이터는 플래시 메모리(180)에 저장하고, 용량이 작고 내용상의 변경이 자주 일어나는 메타 데이터 등에 대하여는 피램(150)에 저장함으로써 효율적인 데이터 관리를 수행할 수 있다.As described above, the flash memory 180 performs input / output in block units, and the pram 150 performs input / output in block units externally, but internally writes data to the pyram 150 in sub-block units. Write This means that user data having a large capacity and infrequently changed in the content is stored in the flash memory 180, and meta data having a small capacity and frequently changed in the content is stored in the pram 150 to perform efficient data management. Can be.

이와 함께, 서브 블록 단위로 입출력을 수행하는 피램(150)에 대하여 필터 레이어(140)를 도입함으로써 블록 단위의 입출력을 수행하는 파일 시스템(130) 및/또는 FTL(170)의 변경 없이 데이터의 읽고 쓰기를 할 수 있다.In addition, by introducing the filter layer 140 to the PRAM 150 performing I / O in sub-block units, data is read without changing the file system 130 and / or the FTL 170 which performs I / O in units of blocks. You can write.

또한, 읽는 속도에 비하여 쓰는 속도가 느리고, 블록 단위가 아닌 서브 블록 단위(예를 들어, 바이트 단위)로 데이터를 쓸 수 있는 피램의 특성을 이용하여 변경된 부분의 데이터만을 추출하여 서브 블록 단위로 쓰게 함으로써 플래시 메모 리(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 fram 150 may be effectively used together.

도 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 pyram 150 may be included.

어플리케이션 실행부(110), 운영체제부(120), 파일 시스템(130), 필터 레이어(140) 및 피램(150)에 대해서는 이미 전술한 실시예에서 상세히 설명하였기에 생략하며, 다만 필터 레이어(140)을 통한 본 발명의 다른 실시예에 따른 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템의 동작을 설명하기로 한다.The application executor 110, the operating system 120, the file system 130, the filter layer 140, and the pram 150 have been described in detail in the above-described embodiments, and thus, the filter layer 140 is omitted. 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 will be described.

필터 레이어(140)는 맵핑 정보 제공부(210), 데이터 리딩부(220) 및 변동 데이터 추출부(230)를 포함할 수 있다.The filter layer 140 may include a mapping information providing unit 210, a data reading unit 220, and a variation data extraction unit 230.

맵핑 정보 제공부(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 PRAM 150. The mapping information providing unit 210 provides mapping information corresponding to the physical block of the PRAM in the logical block of the file system. In response to the command to write the first data in the predetermined logical block from the file system 130, the block of the PRAM 150 corresponding to the mapping information 210 is searched. Here, the first data refers to data made in units of blocks by a file system managing input / output in units of blocks. For example, even though the data to be written to the PRAM 150 is smaller than a block unit, the first data is loaded in one block. Alternatively, when the data to be written to the pram 150 is larger than one block unit, the first data is loaded in two blocks. However, the mapping information providing unit 210 may be located in the file system 130 or another component or may be an independent component.

데이터 리딩부(220)는 상기 검색된 피램(150)의 블록을 읽어 들인다. 데이터 리딩부(220)는 피램의 블록을 서브 블록 단위로 읽을 수 있다. 예를 들어, 서브 블록이 바이트 단위라면, 데이터 리딩부(220)는 바이트 단위로 상기 검색된 피램의 블록을 읽어 들여 버퍼부(미도시됨)에 임시로 저장할 수 있다. 데이터 리딩부(220)에 의하여 읽혀진 데이터를 제2 데이터로 칭하기로 한다.The data reading unit 220 reads the retrieved block of the PRAM 150. The data reading unit 220 may read a block of the PRAM in sub-block units. For example, if the sub block is in bytes, the data reading unit 220 may read the blocks of the retrieved params in bytes and temporarily store them in a buffer unit (not shown). Data read by the data reading unit 220 will be referred to as second data.

변동 데이터 추출부(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 first data 430 in the memory. The file system 130 transmits information, such as an address of the logical block, the number of logical blocks, and data, to store the first data 430 to the filter layer 140.

필터 레이어(140)는 논리 블록에 대응되는 피램의 블록(400)을 검색한다. 피램의 블록(400)은 복수개의 서브 블록(410)으로 이루어진다. 필터 레이어(140)는 검색된 피램의 블록(400)을 읽어 들여 제2 데이터(450)로 임시로 저장한다. 따라서, 제1 데이터(430)와 제2 데이터(450)를 비교하여 변동 데이터(420)를 추출한다. 필터 레이어(140)는 추출된 변동 데이터(420)를 서브 블록 단위로 피램에 쓰게 한다. The filter layer 140 searches for the block 400 of the PRAM corresponding to the logic block. The block 400 of the PRAM consists of a plurality of sub blocks 410. The filter layer 140 reads the block 400 of the retrieved param and temporarily stores it as the second data 450. Accordingly, the variation data 420 is extracted by comparing the first data 430 and the second data 450. The filter layer 140 allows the extracted variation data 420 to be written to the pyram in sub-block units.

예를 들어, 변동 데이터(420)가 하나의 서브 블록이(410)이라면 하나의 서브 블록만을 쓰는 연산을 수행함으로써 제1 데이터(430)를 피램(150)에 쓰는 효과를 가질 수 있다. 따라서, 데이터의 변경이 작으면서 빈번히 데이터 변경이 일어나는 경우에 효과적으로 데이터를 갱신할 수 있다.For example, if the variation data 420 is one subblock 410, an operation of writing only one subblock may have the effect of writing the first data 430 to the pram 150. Therefore, the data can be updated effectively when the data change is small and the data change frequently occurs.

예를 들어, 사용자 데이터에 대한 정보를 포함하는 메타 데이터 또는 플래시 메모리에 저장되어 있는 데이터에 대한 정보를 포함하는 메타 데이터는 크기는 상대적으로 작지만, 상대적으로 자주 변경된다. 왜냐하면, 메타 데이터는 사용자 데이터의 크기, 사용자 데이터의 속성 등 사용자 데이터의 고유 정보뿐만 아니라 사용자 데이터의 저장 시간, 최근 액세스 시간 및 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 FRAM 150, without modifying the file system for the input and output of the block unit Data can be recorded in sub-block units.

이와 함께, 변경된 데이터 부분만을 기록함으로써 블록을 다시 써야 하는 부담을 줄이고, 데이터를 기록하는 시간을 줄일 수 있다.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 filter layer 140.

도 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 PRAM 150 is formatted and initialized in units of blocks that are the same input / output units as the file system 130 or the FTL 170. The PRAM 150 may be physically initialized with a plurality of blocks, and may be configured as, for example, P-Block 1, P-Block 2, ..., P-Block n in order.

피램의 각 블록(400)은 맵핑 정보를 가지는 맵핑 테이블(500)에 의하여 액세스 될 수 있다. 맵핑 테이블(500)은 맵핑 정보 제공부(210)에 의하며 형성되며, 파일 시스템(130) 또는 FTL(170)의 논리 블록에 대응하는 피램의 블록(400) 주소를 가진다. 따라서, 맵핑 정보 제공부(210)는 맵핑 테이블(500)을 이용하여 파일 시스템(130), FTL(170) 또는 필터 레이어(140) 등에 맵핑 정보를 제공하며, 파일 시스템(130), FTL(170) 또는 필터 레이어(140) 등은 피램의 블록(400)에 액세스할 수 있다.Each block 400 of the PRAM may be accessed by a mapping table 500 having mapping information. The mapping table 500 is formed by the mapping information providing unit 210 and has an address of the block 400 of the PRAM corresponding to the logical block of the file system 130 or the FTL 170. Accordingly, the mapping information provider 210 provides the mapping information to the file system 130, the FTL 170, the filter layer 140, or the like by using the mapping table 500, and the file system 130 and the FTL 170. ) Or the filter layer 140 may access the block 400 of the Pram.

도 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 FRAM 150 to the file system 130 or the FTL 170. Here, the first data is data made in units of blocks and is data to be updated. The file system 130 or the FTL 170 transmits a first data write command to the filter layer (S600). At this time, while transmitting the first data write command, the address of the logical block to perform the first data write and the first data are also delivered. In addition, the file system 130, the FTL 170, or the filter layer 140 search for the block 400 of the PRAM corresponding to the logic block using the mapping information (S610). After retrieving the block 400 of the fram using mapping information, the second data stored in the block 400 of the fram is read. Here, the size of the first data and the second data is the same, so the number of blocks is also the same so that the first data and the second data can be compared one-to-one.

제2 데이터를 읽은 후에, 제1 데이터를 기준으로 제2 데이터와 비교하여 변동 데이터(420)를 검출한다(S630). 상기 검출된 변동 데이터(420)는 서브 블록 단위로 이루어진다. 변동 데이터(420)는 기존의 피램에 저장된 제2 데이터에서 제1 데이터에서 변동된 부분을 서브 블록 단위로 추출한 데이터이다.After reading the second data, the variation data 420 is detected by comparing the second data with the second data (S630). The detected variation data 420 is formed in sub-block units. The variation data 420 is data obtained by extracting, in sub-block units, a portion that is changed in the first data from the second data stored in the existing PRAM.

변동 데이터(420)가 검출되면, 제2 데이터가 위치하는 피램의 블록에 변동 데이터(420)를 서브 블록 단위로 쓴다(S640). 예를 들어, 서브 블록 단위가 바이트 단위이고, 블록 단위가 1024 바이트라고 하자. 제1 데이터가 제2 데이터에서 10 바이트가 변동된다면, 추출되는 변동 데이터(420)는 10바이트가 된다. 따라서, 피램에 1024 바이트를 모두 쓰는 게 아니라, 변동 데이터 10바이트만 쓰면 되므로 쓰기 속도를 향상 시킬 수 있다.When the variation data 420 is detected, the variation data 420 is written in sub-block units in the block of the PRAM where the second data is located (S640). For example, suppose a subblock unit is a byte unit and a block unit is 1024 bytes. If the first data varies by 10 bytes from the second data, the extracted change data 420 becomes 10 bytes. Therefore, instead of writing all 1024 bytes to the PRAM, only 10 bytes of variable data can be written to improve the write speed.

이와 같이, 용량이 작으면서 데이터가 빈번히 변동되는 경우에는 변동 데이터만을 다시 씀으로써 피램의 특성이 읽는 속도에 비하여 쓰는 속도가 느린 특성을 효율적으로 이용할 수 있다.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 FRAM 150 in sub-block units without changing the file system 130 or the FTL 170 of the device that performs input / output in units of blocks.

도 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 FTL 170 receives a read command for the data of the PRAM 150 from the operating system 120 or the application execution unit 110. The file system 130 or the FTL 170 receives the information of the logical block address to be read and the number of logical blocks to be read and transmits a read request to the filter layer 140 (S700).

필터 레이어(140)는 읽고자 하는 논리 블록에 대응되는 피램의 블록(400)을 맵핑 정보를 이용하여 검색한다(S710). 필터 레이어(140)는 맵핑 정보 제공부(210)에 요청하여 피램의 블록(400)을 검색할 수도 있다.The filter layer 140 searches for the block 400 of the PRAM corresponding to the logical block to be read using the mapping information (S710). The filter layer 140 may request the mapping information provider 210 to search for the block 400 of the PRAM.

피램의 블록(400)을 찾은 후에 상기 피램의 블록(400)에 저장된 데이터를 읽어 들인다(S720). 이 때, 상기 피램의 블록(400)을 서브 블록 단위로 읽어 들이면서, 블록의 끝까지 읽는다. After finding the block 400 of the pram, the data stored in the block 400 of the pram is read (S720). At this time, the block 400 of the PRAM is read in sub-block units, and read to the end of the block.

상기와 같이, 필터 레이어(140)를 통하여 피램(150)의 데이터를 읽어 들이고, 이를 쓰고자 하는 데이터와 비교하여 변동 데이터(420)를 추출할 수 있다. 피램의 특성인 읽는 속도가 쓰는 속도에 비하여 빠른 점을 이용함으로써 블록 전체를 쓰는 대신 블록 전체를 읽고 변동된 부분만을 씀으로써 피램의 데이터 액세스를 필터 레이어를 통하여 빠르게 할 수 있다.As described above, the data of the PRAM 150 may be read through the filter layer 140, and the variation data 420 may be extracted by comparing the data of the PRAM 150 with the data to be written. By using the faster reading speed than the writing speed, which is a characteristic of the FRAM, the FRAM data access can be faster through the filter layer by reading the entire block and writing only the changed part.

이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이 해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.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)

블록 단위로 데이터의 입출력을 관리하는 파일 시스템;A file system managing input / output of data in block units; 상기 데이터 중에서 제1 데이터를 플래시 메모리에 상기 블록 단위로 쓰는 FTL(Flash Translation Layer);A flash translation layer (FTL) for writing first data among the data into a flash memory in units of blocks; 상기 데이터 중에서 제2 데이터를 서브 블록 단위로 쓰는 피램(PRAM); 및A PRAM for writing second data among the data in sub-block units; And 상기 파일 시스템으로부터 상기 피램의 소정 블록에 상기 제2 데이터에 대한 쓰기 명령을 전달받아 상기 피램의 블록에 저장되어 있는 제3 데이터와의 차이 부분을 상기 피램의 블록에 서브 블록 단위로 쓰는 필터 레이어(Filter layer)를 포함하되,A filter layer for receiving a write command for the second data from the file system to a predetermined block of the FRAM and writing a difference portion from the third data stored in the FRAM block to the blocks of the FRAM in sub-block units; Filter layer) 상기 파일 시스템과 상기 FTL 중 적어도 하나는 상기 제3 데이터를 상기 블록 단위로 읽는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. And at least one of the file system and the FTL reads the third data in the block unit. 제 1항에 있어서, 상기 필터 레이어는The method of claim 1, wherein the filter layer 상기 제3 데이터를 상기 피램의 블록에서 읽어 들여 상기 제2 데이터와 비교하여 변동 데이터를 추출하는 변동 데이터 추출부를 포함하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템.And a variation data extracting unit configured to extract the variation data by reading the third data from the block of the pram and comparing the second data with the second data. 제 1항에 있어서, The method of claim 1, 상기 제1 데이터는 사용자 데이터이고, 상기 제2 데이터는 메타 데이터인, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템.And the first data is user data, and the second data is meta data. 제 1항에 있어서, 상기 서브 블록 단위는The method of claim 1, wherein the sub-block unit 바이트 단위인, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. A data recording system using a PRAM in a block unit input / output device, which is a byte unit. 제 1항에 있어서, The method of claim 1, 상기 피램의 블록과 상기 파일 시스템의 논리 블록 사이의 맵핑 정보를 상기 파일 시스템 또는 상기 필터 레이어에 제공하는 맵핑 정보 제공부를 더 포함하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. And a mapping information providing unit configured to provide mapping information between the block of the FRAM and a logical block of the file system to the file system or the filter layer. 제 5항에 있어서, 상기 맵핑 정보 제공부는The method of claim 5, wherein the mapping information providing unit 상기 맵핑 정보를 이용하여 상기 파일 시스템의 논리 블록에 대응하는 상기 피램의 블록을 검색하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템.And retrieving a block of the PRAM corresponding to the logical block of the file system using the mapping information. 블록 단위로 데이터의 입출력을 관리하는 파일 시스템;A file system managing input / output of data in block units; 상기 데이터를 저장하는 피램; 및A pram for storing the data; And 상기 파일 시스템으로부터 상기 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달받고, 상기 제1 데이터 중에서 상기 피램의 블록에 저장되어 있는 제2 데이터와 차이가 있는 변동 데이터를 서브 블록 단위로 상기 피램의 블록에 쓰기 명령을 상기 피램에 전달하는 필터 레이어를 포함하되,Receiving a write command for the first data from the file system to a predetermined block of the FRAM, the variable data that is different from the second data stored in the block of the FRAM among the first data in the sub-block unit A filter layer for passing a write command to the block of 상기 파일 시스템은 상기 피램의 블록에 저장되어 있는 상기 제2 데이터를 상기 블록 단위로 읽는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. And the file system reads the second data stored in the block of the FRAM in the block unit, and uses the FRAM in the block unit input / output device. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.Claim 8 was abandoned when the registration fee was paid. 제 7항에 있어서, 상기 서브 블록 단위는The method of claim 7, wherein the sub-block unit 바이트 단위인, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. A data recording system using a PRAM in a block unit input / output device, which is a byte unit. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.Claim 9 has been abandoned due to the setting registration fee. 제 7항에 있어서, 상기 피램은 The method of claim 7, wherein the pram 상기 필터 레이어에서 지시하는 상기 피램의 블록에 상기 변동 데이터를 서브 블록 단위로 쓰는 연산을 수행하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. And an operation of writing the variation data in sub-block units to the block of the pram indicated by the filter layer. 제 7항에 있어서, 상기 피램은The method of claim 7, wherein the pram 상기 블록 단위로 포맷(Format)되어 초기화되는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. And a data recording system using a PRAM in a block unit input / output device which is formatted and initialized in the block unit. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.Claim 11 was abandoned when the registration fee was paid. 제 7항에 있어서, 8. The method of claim 7, 상기 파일 시스템의 논리 블록과 상기 피램의 블록 사이의 맵핑 정보를 이용하여 상기 파일 시스템의 논리 블록에 대응하는 상기 피램의 블록을 검색하는 맵핑 정보 제공부를 더 포함하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 시스템. And a mapping information providing unit for retrieving a block of the FRAM corresponding to the logical block of the file system using the mapping information between the logical block of the file system and the block of the FRAM. Data recording system. 파일 시스템으로부터 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달 받는 단계;Receiving a write command for the first data from a file system to a predetermined block of the FRAM; 상기 제1 데이터 중에서 상기 피램의 블록에 저장되어 있는 제2 데이터와 차이가 나는 변동 데이터를 검출하되, 상기 제2 데이터를 블록 단위로 읽는 단계; 및Detecting variation data different from the second data stored in the block of the PRAM among the first data, and reading the second data in block units; And 상기 변동 데이터를 서브 블록 단위로 상기 피램의 블록에 쓰는 단계를 포함하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법. And writing the variation data in the block of the PRAM in sub-block units. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.Claim 13 was abandoned upon payment of a registration fee. 제 12항에 있어서, 상기 서브 블록 단위는The method of claim 12, wherein the sub-block unit 바이트 단위인, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법. A data writing method using a PRAM in a block unit input / output device, which is a byte unit. 삭제delete 청구항 15은(는) 설정등록료 납부시 포기되었습니다.Claim 15 is abandoned in the setting registration fee payment. 제 12항에 있어서, 상기 피램은The method of claim 12, wherein the pram 상기 블록 단위로 포맷(Format)되어 초기화되는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법. The data recording method using the PRAM in a block unit input and output device is formatted and initialized in the block unit. 파일 시스템으로부터 피램의 소정 블록에 제1 데이터에 대한 쓰기 명령을 전달 받는 단계;Receiving a write command for the first data from a file system to a predetermined block of the FRAM; 상기 피램의 소정 블록에 저장되어 있는 제2 데이터를 블록 단위로 읽는 단계;Reading second data stored in a predetermined block of the PRAM in block units; 상기 제1 데이터와 제2 데이터를 비교하여 변동 데이터를 검출하는 단계; 및Comparing the first data with the second data to detect variation data; And 상기 변동 데이터가 위치하는 상기 피램의 소정 블록 내의 서브 블록에 상기 변동 데이터를 서브 블록 단위로 쓰는 단계를 포함하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법. And writing the variation data in sub-block units in a sub-block in a predetermined block of the piram in which the variation data is located. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.Claim 17 has been abandoned due to the setting registration fee. 제 16항에 있어서, 상기 제1 데이터에 대한 쓰기 명령을 전달하는 단계는The method of claim 16, wherein the step of transmitting a write command to the first data comprises: 맵핑 정보를 이용하여 상기 파일 시스템의 논리 블록에 대응하는 상기 피램의 블록을 검색하는 단계를 포함하는, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법. And retrieving a block of the FRAM corresponding to a logical block of the file system using mapping information. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.Claim 18 has been abandoned due to the setting registration fee. 제 16항에 있어서, 제1 데이터는 The method of claim 16, wherein the first data is 메타 데이터인, 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록 방법. A data writing method using a PRAM in a block unit input / output device which is metadata.
KR1020070104215A 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 KR101270777B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100484147B1 (en) 2002-07-26 2005-04-18 삼성전자주식회사 Flash memory management method

Patent Citations (1)

* Cited by examiner, † Cited by third party
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
JP2019020788A (en) Memory system and control method
EP2665065A2 (en) Electronic device employing flash memory
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
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
US20170357462A1 (en) Method and apparatus for improving performance of sequential logging in a storage device
KR20170038853A (en) Host-managed non-volatile memory
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
WO2018063479A1 (en) Storage device with fine grained search capability
US20210026763A1 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the 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