KR20090107309A - Data Writing On a Flash Memory - Google Patents
Data Writing On a Flash Memory Download PDFInfo
- Publication number
- KR20090107309A KR20090107309A KR1020080032750A KR20080032750A KR20090107309A KR 20090107309 A KR20090107309 A KR 20090107309A KR 1020080032750 A KR1020080032750 A KR 1020080032750A KR 20080032750 A KR20080032750 A KR 20080032750A KR 20090107309 A KR20090107309 A KR 20090107309A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- data block
- recorded
- block
- auxiliary
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
Description
본 발명은 플래시 메모리에 기록된 데이터의 유효여부에 관한 데이터를 플래시 메모리 내부에 기록할 수 있는 플래시 메모리 데이터 기록방법 및 플래시 메모리에 관한 것이다. 플래시 메모리 내부 블록을 데이터 기록 영역과 기록된 데이터의 유효여부에 관한 데이터가 저장되는 영역으로 나누어 설정한다. 따라서, 본 발명은 플래시 메모리 외에 별도의 메모리를 구비하지 않아도 플래시 메모리에 기록된 데이터의 유효여부를 확인할 수 있는 플래시 메모리 데이터 기록방법 및 플래시 메모리에 관한 것이다.The present invention relates to a flash memory data recording method and a flash memory capable of recording data on whether data written in a flash memory is valid in a flash memory. The internal block of the flash memory is divided into a data recording area and an area in which data relating to validity of recorded data is stored. Accordingly, the present invention relates to a flash memory data recording method and a flash memory capable of confirming whether data written in the flash memory is valid even without a separate memory in addition to the flash memory.
플래시 메모리는 하드 디스크와 같이 비휘발성을 가지면서도 빠른 접근속도를 가지고, 전력을 적게 소비하기 때문에 내장형 시스템이나 이동 디바이스 등에서 많이 사용되고 있다. Flash memory is widely used in embedded systems and mobile devices because it has a non-volatile, fast access speed and consumes less power like a hard disk.
플래시 메모리는 그 하드웨어 특성을 고려할 때, 이미 쓰여진 메모리 섹터에 기록연산을 수행하기 위하여 그 섹터가 포함된 블록 전체를 지우는 연산을 먼저 수행하여야 한다. 그러나, 하나의 플래시 메모리에 데이터를 기록하고 소거할 수 있 는 횟수는 제한되어 있다. In consideration of its hardware characteristics, the flash memory must first perform an operation of erasing the entire block containing the sector in order to perform a write operation on an already written memory sector. However, the number of times that data can be written and erased in one flash memory is limited.
플래시 메모리 블록을 구성하는 페이지 일부에만 데이터를 기록하는 일부 기록(Partial Programming)도 가능하다. 그러나, 단층셀(SLC) 구조의 플래시 메모리는 일부 기록 가능 횟수가 4회, 8회 등 복수 회인 반면, 다층셀(MLC) 구조의 플래시 메모리는 일부 기록 가능 횟수가 1회로 제한되어 있다.Partial programming is also possible, where data is written to only part of the pages that make up a flash memory block. However, the flash memory of a single-layer cell (SLC) structure has a plurality of write times, such as four or eight times, whereas the flash memory of a multi-layer cell (MLC) structure is limited to one write number.
도 1은 일반적인 방법에 따라 플래시 메모리로 데이터를 기록하는 방법의 흐름이 도시된 도이다. 특정 페이지에 데이터 기록 시도를 하게 되면(S11), 상기 특정 페이지가 이미 데이터가 기록된 페이지인지 여부가 확인된다(S12). 만일 데이터가 기록된 적이 없거나, 혹은 기록되었어도 소거된 페이지인 경우 기록 기도된 페이지에 데이터기 기록된다(S13). 1 is a flowchart illustrating a method of writing data to a flash memory according to a general method. When an attempt is made to write data on a specific page (S11), it is checked whether the specific page is a page in which data is already recorded (S12). If no data has been recorded or if the page is erased even if it has been recorded, the data is also recorded on the recorded page (S13).
그러나 이미 기록된 페이지인 경우 신규 페이지를 할당하여(S14) 신규 페이지에 데이터를 기록한다(S15). 또한, 기록된 데이터 연산 시 호출되는 논리 주소 등의 정보를 신규 페이지에 기록한다. 이때, 할당된 신규 페이지와 기존에 기록된 페이지를 구분하기 위하여 기존 기록된 페이지에 그 페이지 무효화(obsolete) 선언을 해야한다. However, if the page has already been recorded, a new page is allocated (S14) and data is recorded in the new page (S15). In addition, information such as a logical address which is called during the operation of the recorded data is recorded in a new page. At this time, in order to distinguish the allocated new page from the previously recorded page, the page obsolete declaration should be made on the previously recorded page.
단층셀의 경우 페이지의 보조 영역에 상기 무효화 선언과 같은 데이터의 유효여부에 관한 데이터를 기록할 수 있다. 그러나 다층셀의 경우 일부 기록 횟수가 1회로 제한되어 있어서 유효여부에 관한 데이터를 다시 기록할 수 없다.In the case of a tomographic cell, data relating to the validity of data such as the declaration of invalidation can be recorded in the auxiliary area of the page. However, in the case of the multi-layer cell, the number of times of writing is limited to one, so data regarding validity cannot be recorded again.
이러한 문제점 때문에 외부에 비휘발성 메모리를 추가로 장착하여 플래시 메모리에 기록된 데이터의 유효여부에 관한 정보를 따로 관리하기도 한다. 플래시 메모리로 데이터 읽기연산이 요청되면, 플래시 컨트롤러는 비휘발성 메모리에 저장된 유효여부에 관한 정보에 엑세스한다. 플래시 컨트롤러는 엑세스된 정보를 바탕으로 유효하다고 기록된 페이지의 데이터를 읽는다. Due to this problem, an external nonvolatile memory is additionally installed to manage information on whether data written to the flash memory is valid. When a data read operation is requested to the flash memory, the flash controller accesses information regarding validity stored in the nonvolatile memory. The flash controller reads the data of the page that is recorded as valid based on the accessed information.
그러나, 별도의 비휘발성 메모리를 추가할 경우 플래시 메모리 시스템의 제조 시 크기나 비용이 증가된다는 문제점이 있다. However, there is a problem in that the size or cost of manufacturing a flash memory system is increased when a separate nonvolatile memory is added.
본 발명은 플래시 메모리 중 데이터가 기록된 페이지나 블록의 유효여부에 관한 정보를 외부 비휘발성 메모리를 추가하지 않고 플래시 메모리 내부에 저장한다. 본 발명은 플래시 메모리 내부 블록 중 소정 영역을 타 페이지나 블록의 유효여부에 관한 정보가 저장되는 영역으로 설정하여 플래시 메모리만으로 소정 페이지나 블록의 유효여부를 확인할 수 있도록 한다. According to the present invention, information on the validity of a page or a block in which data is written in the flash memory is stored in the flash memory without adding an external nonvolatile memory. According to the present invention, a predetermined area of an internal block of a flash memory is set as an area in which information on validity of another page or block is stored so that the validity of a predetermined page or block can be confirmed only by the flash memory.
상기한 과제를 해결하기 위한 본 발명에 의한 플래시 메모리 데이터 기록방법은, 소정의 수의 섹터로 구성되는 페이지를 갖는 블록을 하나 이상 가지며, 상기 섹터 또는 페이지 단위로 데이터를 기록하고, 상기 블록단위로 데이터를 소거하는 플래시 메모리로 데이터를 기록하는 방법에 있어서, 상기 블록에 호스트가 기록하고자 하는 데이터가 기록되는 데이터 블록 영역과, 상기 데이터가 기록된 데이터 블록의 유효여부에 관한 로그 데이터가 페이지 단위로 기록되는 로그 블록 영역을 설정하는 단계; 및 상기 데이터 블록 영역에 데이터를 기록하고 데이터가 기록된 데이터 블록의 유효여부에 관한 로그 데이터를 대응되는 로그 블록 페이지에 기록하는 단계를 포함하는 것을 특징으로 한다.The flash memory data recording method according to the present invention for solving the above problems has at least one block having pages composed of a predetermined number of sectors, and writes data in units of sectors or pages, and in units of blocks. A method of writing data into a flash memory for erasing data, the method comprising: a data block area in which data to be written by a host is written in the block, and log data on whether data blocks in which the data is written are valid are stored in units of pages; Setting a log block area to be recorded; And recording the data in the data block area and recording log data on whether the data block in which the data is recorded is valid in a corresponding log block page.
상기한 과제를 해결하기 위한 본 발명에 의한 플래시 메모리 데이터 읽는 방법은, 상기한 기록방법에 따라 데이터가 기록된 플래시 메모리의 데이터 읽는 방법에 있어서, 상기 로그 블록에 저장된 로그 데이터에 따라 각 데이터 블록에 기록된 데이터의 유효여부를 판단하는 단계; 및 상기 판단단계에서 유효하다고 판단된 데이터 블록의 데이터를 읽는 단계를 포함하는 것을 특징으로 한다. In the flash memory data reading method according to the present invention for solving the above problems, in the data reading method of the flash memory in which data is recorded according to the above-described writing method, the data is read in each data block according to the log data stored in the log block. Determining whether the recorded data is valid; And reading the data of the data block determined to be valid in the determining step.
상기한 과제를 해결하기 위한 본 발명에 의한 플래시 메모리는 소정의 수의 섹터로 구성되는 페이지를 갖는 블록을 하나 이상 가지며, 상기 섹터 또는 페이지 단위로 데이터를 기록하고, 상기 블록단위로 데이터를 소거하는 플래시 메모리에 있어서, 상기 블록에 호스트가 기록하고자 하는 데이터가 기록되는 데이터 블록 영역과, 상기 데이터가 기록된 데이터 블록의 유효여부에 관한 로그 데이터가 페이지 단위로 기록되는 로그 블록 영역을 설정하고, 상기 데이터 블록 영역에 데이터를 기록하고 데이터가 기록된 데이터 블록의 유효여부에 관한 로그 데이터를 대응되는 로그 블록 페이지에 기록하는 것을 특징으로 한다.The flash memory according to the present invention for solving the above problems has at least one block having a page composed of a predetermined number of sectors, writes data in units of sectors or pages, and erases data in units of blocks. In the flash memory, a data block area in which data to be written by the host is written, and a log block area in which log data about whether the data block in which the data is written is valid is written in units of pages, is set. Data is recorded in the data block area, and log data relating to whether or not the data block in which the data is recorded is valid is recorded in a corresponding log block page.
본 발명에 의하면, 플래시 메모리에 데이터가 기록된 블록이나 페이지의 유효여부에 관한 데이터가 플래시 메모리 내부에 기록된다. 따라서, 외부에 비휘발성 메모리를 추가할 필요가 없다. 또한, 플래시 메모리에 데이터가 기록되는 블록이나 페이지를 하나의 블록으로 그룹화하여 데이터를 기록하거나 그 유효여부에 관 한 데이터를 관리한다. 따라서, 데이터 기록 시 블록이나 페이지 낭비를 최소화할 수 있다. According to the present invention, data relating to whether a block or page in which data is written to the flash memory is valid is written into the flash memory. Therefore, there is no need to add a nonvolatile memory to the outside. In addition, a block or page in which data is written to the flash memory is grouped into one block to record the data or to manage data regarding its validity. Therefore, it is possible to minimize block or page waste when writing data.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 결쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. 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. However, the present invention is not limited to the embodiments disclosed below, but will be implemented in various forms, and only the present embodiments are intended to complete the disclosure of the present invention, and the general knowledge in the art to which the present invention pertains. It is provided to fully convey the scope of the invention to those skilled in the art, and the present invention is defined only by the scope of the claims. Like reference numerals refer to like elements throughout the specification.
도 2는 플래시 메모리가 동작하는 시스템의 전체 구조를 나타낸다. 플래시 컨트롤러(100)는 외부 호스트(200)에서 전달된 기록/읽기/소거 등의 연산요구에 따라 플래시 메모리(400)에 데이터를 기록/읽기/소거한다. 프로그램 코드 메모리(300)는 플래시 컨트롤러(100)가 플래시 메모리(400)에 엑세스하여 데이터를 기록/읽기/소거할 수 있도록 메모리 접근 코드 등의 프로그램 코드를 제공한다.2 shows the overall structure of a system in which a flash memory operates. The
도 3은 실제 플래시 메모리의 구조를 도시한다. 도시된 바와 같이, 하나의 플래시 메모리는 8192개의 블록으로 구성된다. 블록은 32개의 페이지로 구성되며, 한 페이지는 512B의 주영역과, 16B의 보조영역으로 구분될 수 있다. 주영역에는 보통 유저 데이터가 기록되며 섹터들의 집합으로 볼 수 있다. 보조영역에는 주영 역에 기록된 데이터의 유효여부나, ECC, LBA(Logical Block Address), LPN(Logical Page Number), LSN(Logical Sector Number), 소거횟수 등에 관한 정보가 기록된다.3 shows the structure of an actual flash memory. As shown, one flash memory consists of 8192 blocks. The block is composed of 32 pages, and one page may be divided into a main region of 512B and an auxiliary region of 16B. In the main area, user data is usually recorded and can be viewed as a set of sectors. In the auxiliary area, information on the validity of data recorded in the main area, ECC, Logical Block Address (LBA), Logical Page Number (LPN), Logical Sector Number (LSN), and erase count are recorded.
도 3은 플래시 메모리의 기록/읽기 단위와 외부 호스트에서 요청한 기록/읽기 단위가 일치하는 소블록 플래시 메모리를 도시하고 있다. 그러나, 본 발명은 플래시 메모리의 기록/읽기 단위가 외부 호스트에서 요청한 기록/읽기 단위보다 큰 대블록 플래시 메모리의 경우에도 적용될 수 있다. 대블록 플래시 메모리의 경우 주영역은 4개의 섹터로 이루어진다. 대블록 플래시 메모리에 데이터는 섹터 단위 혹은 페이지 단위로 기록된다.FIG. 3 illustrates a small block flash memory in which write / read units of a flash memory and write / read units requested by an external host match. However, the present invention can also be applied to a large block flash memory in which the write / read unit of the flash memory is larger than the write / read unit requested by the external host. In the case of large block flash memory, the main area is composed of four sectors. In large block flash memory, data is recorded in sector units or page units.
도 4의 (a)는 본 발명에 따라 플래시 메모리 내부 블록을 데이터가 기록되는 데이터 블록 영역(310)과, 데이터 블록(310)의 유효여부에 관한 데이터가 기록되는 로그 블록 영역(320)으로 설정한 한 예가 도시된 도이다. 한 플래시 메모리 블록 내부에 64개의 페이지가 있는 경우 8개 페이지 단위로 이루어진 데이터 블록 7개가 데이터 블록 영역(310) 내부에 존재한다. 로그 블록 영역(320)에는 데이터 블록 7개의 유효여부에 관한 데이터가 기록되는 페이지가 8개 존재한다. Referring to FIG. 4A, the internal block of the flash memory is set to a
데이터 블록은 로그 블록 내부의 페이지에 각각 연결된다. 로그 블록 페이지는 대응되는 데이터 블록이 무효선언될 경우 'Obsolete Flag'가 기록된다. 만일, 데이터 블록 내부의 한 페이지라도 무효화되면 전체 데이터 블록이 무효화된다. Data blocks are each linked to pages within a log block. When the corresponding block of data is declared invalid in the log block page, an 'Obsolete Flag' is recorded. If any page in the data block is invalidated, the entire data block is invalidated.
데이터 블록 내부의 페이지는 순차적으로 페이지 오프셋 번호가 부여된다. 본 실시예에서는 데이터가 페이지 단위로 기록된다고 가정한다. 그러나, 데이터 기록 단위가 섹터인 경우에도 본 발명이 응용될 수 있다. 이는 모두 본원발명의 권리범위에 속한다. Pages within a data block are sequentially assigned page offset numbers. In this embodiment, it is assumed that data is recorded in units of pages. However, the present invention can be applied even when the data recording unit is a sector. All of these belong to the scope of the present invention.
데이터 블록의 유효여부를 선언하기 위하여 (a)와 같이 플래시 메모리 블록에 데이터 블록 영역와 로그 블록 영역을 설정하면, 로그 블록 영역만큼 메모리 손해를 본다. 즉, 로그 블록 영역만큼 호스트에서 기록하고자 하는 데이터가 기록될 공간이 감소한다. 8개의 페이지를 하나의 로그 블록으로 설정할 경우 64개의 페이지 중 8개의 페이지가 손실된다.If the data block area and the log block area are set in the flash memory block as shown in (a) to declare the validity of the data block, the memory loss is as much as the log block area. That is, the space in which data to be recorded in the host is recorded by the log block area is reduced. If eight pages are set to one log block, eight of the 64 pages are lost.
(b)는 4개의 페이지를 하나의 데이터 블록과 하나의 로그 블록으로 설정한 경우이다. 하나의 플래시 메모리 블록 중 데이터 블록 영역(330)에는 12개의 데이터 블록이 존재한다. 로그 블록 영역(340)에는 4개의 로그 블록이 존재한다. 각 데이터 블록은 로그 블록 내부의 페이지에 연결된다. 로그 블록 페이지는 대응되는 데이터 블록의 유효여부에 관한 데이터가 기록된다. (b) shows four pages configured as one data block and one log block. Twelve data blocks exist in the
(b)와 같은 구조를 취하면, 하나의 페이지가 무효화되면 같은 데이터 블록 내부에 잔존하는 3개의 페이지가 무효화된다. 즉, (a)와 비교하면, 하나의 페이지가 무효화된 경우 그로 인하여 해당 페이지를 포함하는 데이터 블록이 전부 무효화되더라도 낭비되는 페이지 수가 감소한다. With the structure as shown in (b), if one page is invalidated, three pages remaining in the same data block are invalidated. That is, compared to (a), when one page is invalidated, the number of pages wasted is reduced even if all the data blocks including the page are invalidated.
그러나, (b)와 같은 구조를 취하면, 하나의 플래시 메모리 블록 중 16개의 페이지는 처음부터 데이터가 기록될 수 없는 로그 블록으로 할당된다. 따라서, 64개의 페이지 중 16개의 페이지가 손실된다. However, taking the structure as shown in (b), 16 pages of one flash memory block are allocated as log blocks from which data cannot be written from the beginning. Therefore, 16 pages of 64 pages are lost.
따라서, 로그 블록 할당으로 인한 메모시 손실을 감소시키기 위하여, 적어도 2개의 블록에 해당하는 소정 갯수의 페이지를 하나의 데이터 블록으로 설정한 경우이다. 이하, 도 5를 참고로 설명한다.Therefore, in order to reduce the loss in the memo due to log block allocation, a predetermined number of pages corresponding to at least two blocks are set to one data block. A description with reference to FIG. 5 is as follows.
버스라인(bus 0)에 여러 개의 플래시 메모리(FM0~FM3)가 연결되면, 각 플래시 메모리의 임의의 블록을 구성하는 페이지 4개를 그룹화하여 하나의 데이터 블록(350)으로 설정할 수 있다. 데이터 블록은 16개의 페이지를 가지며 '4*4' 구조를 가진다. When several flash memories FM0 to FM3 are connected to the
적어도 2개 블록에 해당하는 페이지들을 그룹화한 데이터 블록의 유효여부에 관한 데이터는 그 중 하나의 블록에 설정한 로그 블록 영역(360) 내부의 페이지(P1)에 기록된다. Data regarding the validity of the data block grouping the pages corresponding to at least two blocks is recorded in the page P1 in the
이 경우, 하나의 플래시 메모리 블록 내부에 각각 4개의 페이지로 이루어지는 15개의 데이터 블록이 설정된다. 그리고 4개의 페이지로 이루어지는 1개의 로그 블록이 설정된다. In this case, fifteen data blocks each consisting of four pages are set in one flash memory block. One log block consisting of four pages is set.
따라서, 로그 블록을 설정함으로 인하여 발생하는 메모리 손실이 감소한다. 도 4의 (a)에서 8개의 페이지가 손실되고, (b)에서 16개의 페이지가 손실됨에 반해, 도 5와 같은 구조하에서는 4개의 페이지가 손실된다. Thus, memory loss caused by setting log blocks is reduced. While eight pages are lost in FIG. 4A and 16 pages are lost in FIG. 4B, four pages are lost under the structure shown in FIG.
로그 블록을 설정함으로 인하여 발생하는 메모리 손실 비율은 버스라인에 플래시 메모리를 추가로 병렬 연결할수록 낮아진다. '2*16' 또는 '1*64'의 구조를 가지도록 데이터 블록을 설정할 수도 있다.The rate of memory loss caused by setting up log blocks is lower as more flash memory is connected in parallel to the busline. The data block may be configured to have a structure of '2 * 16' or '1 * 64'.
데이터 블록은 로그 블록 영역을 구성하는 페이지와 각각 연결된다. 본 실시예에서는 도시된 바와 같이 로그 블록 영역을 구성하는 페이지에 각각 페이지 오 프셋이 부여된다. 각 페이지는 부여된 페이지 오프셋 번호에 해당하는 데이터 블록의 데이터 유효여부에 관한 데이터를 기록한다. The data block is connected to each page constituting the log block area. In this embodiment, page offsets are assigned to pages constituting the log block area as shown. Each page records data regarding whether data of a data block corresponding to a given page offset number is valid.
도 5에서와 같이 데이터 블록을 병렬 연결된 적어도 2개의 플래시 메모리에 설정할 경우 메모리를 하나의 데이터 블록에 기록 시 데이터가 분산되는 효과가 있다. 따라서 하나의 플래시 메모리가 집중적으로 엑세스되어 열화되는 것을 방지할 수 있다.As shown in FIG. 5, when data blocks are set in at least two flash memories connected in parallel, data is distributed when the memory is written in one data block. Therefore, it is possible to prevent one flash memory from being intensively accessed and degraded.
도 6은 도 5에서와 같이 병렬 연결된 플래시 메모리에 데이터 블록을 설정한 경우, 데이터 블록을 구성하는 페이지로 페이지 오프셋을 부여하는 순서가 도시된 도이다.FIG. 6 is a diagram illustrating a procedure of giving a page offset to a page constituting a data block when a data block is set in a parallel connected flash memory as shown in FIG. 5.
하나의 플래시 메모리를 구성하는 페이지로 페이지 오프셋을 순차적으로 부여한 후 다음 플래시 메모리를 구성하는 페이지 오프셋을 연이어 부여하는 방식이 아니라, 병렬 연결된 플래시 메모리를 구성하는 페이지로 데이터가 분산되어 기록될 수 있도록 도 6에 도시된 것처럼 페이지 오프셋을 부여한다. Rather than sequentially assigning page offsets to pages constituting one flash memory and subsequently assigning page offsets constituting the next flash memory, data is distributed and written to pages constituting parallel-connected flash memory. Give the page offset as shown in 6.
그러나, 도 6에 도시된 것처럼 페이지 오프셋을 부여한 후 호스트에서 기록하고자 하는 페이지를 할당하여 데이터를 기록하면, 전체 페이지를 다 채우기 전에 특정 페이지만 계속 기록하는 경우가 발생할 수 있다. However, as shown in FIG. 6, when a page offset is assigned and a page to be recorded by the host is recorded and data is recorded, only a specific page may be continuously recorded before the entire page is filled.
이 경우, 특정 페이지로 인하여 데이터 블록 전체가 무효화되고 결국 메모리가 손실되는 비율이 매우 높아지게 될 수 있다. 이하, 도 7 및 도 8을 참고하여 설명한다. In this case, a specific page may invalidate the entire data block and eventually increase the rate at which memory is lost. Hereinafter, a description will be given with reference to FIGS. 7 and 8.
도 7은 호스트에서 데이터를 기록하고자 논리 주소를 호출하는 경우 엑세스 되는 페이지 오프셋이 기록순서에 따라 나열된 바를 도시하고 있다. 즉, 호스트에서는 데이터를 기록하고자 하는 경우 호출되는 페이지 오프셋은 '1 -> 2 -> 3 -> 4 -> 4 -> 3 -> 4'이다. FIG. 7 illustrates a page offset accessed when a logical address is called to record data in a host, in the recording order. That is, the page offset called when the host wants to record data is '1-> 2-> 3-> 4-> 4-> 3-> 4'.
도 8은 도 7에서 페이지 오프셋이 호출됨에 따라 데이터가 페이지에 기록되는 바를 도시한다. (a)에 도시된 바와 같이, 하나의 데이터 블록을 구성하는 페이지는 각각 페이지 오프셋에 따라 호출되어 '1 -> 2 -> 3 -> 4'까지 데이터가 기록된다. FIG. 8 illustrates how data is written to a page as the page offset is called in FIG. 7. As shown in (a), pages constituting one data block are called according to the page offset, respectively, and data is recorded from '1-> 2-> 3-> 4'.
다시 '4'를 기록하고자 하면 (a)에서 데이터가 기록된 데이터 블록은 무효화된다. 그리고, 다른 신규 데이터 블록에 (b)에 도시된 바와 같이 1, 2, 3 및 갱신 데이터 '4'가 기록된다.If one attempts to record '4' again, the data block in which data is written in (a) is invalidated. Then, 1, 2, 3 and update data '4' are recorded in another new data block as shown in (b).
다시 '3'을 기록하고자 하면 (b)에서 데이터가 기록된 데이터 블록은 무효화된다. 그리고 다른 신규 데이터 블록에 (c)에 도시된 바와 같이 1, 2 및 갱신 데이터 '3' 및 기존 데이터 '4'가 기록된다. If one attempts to record '3' again, the data block in which data is written in (b) is invalidated. Then, 1, 2 and update data '3' and existing data '4' are recorded in another new data block as shown in (c).
이 상태에서 다시 '4'를 기록하고자 하면, (c)에서 데이터가 기록된 데이터 블록은 무효화되고, (d)에서와 같이 1, 2, 3 및 갱신 데이터 '4'가 기록된다. 즉, 이미 데이터가 기록된 페이지 오프셋을 가지는 페이지에 다시 데이터를 기록하려고 하면 무효화되는 데이터 블록의 개수가 증가한다.If it is desired to record '4' again in this state, the data block in which data is recorded in (c) is invalidated, and 1, 2, 3 and update data '4' are recorded as in (d). That is, if data is to be written again to a page having a page offset in which data is already recorded, the number of invalidated data blocks increases.
따라서, 데이터가 페이지 오프셋 번호에 따라 순차적으로 기록되지 않은 경우 데이터 블록이 손실되는 것을 방지하고자, 페이지 오프셋 순서와 상관없이 데이터가 기록되는 데이터 블록을 설정할 수 있다. 이하, 도 9를 참고로 설명한다. Therefore, in order to prevent the data block from being lost when data is not sequentially recorded according to the page offset number, a data block in which data is written may be set regardless of the page offset order. A description with reference to FIG. 9 is as follows.
먼저, 데이터 블록을 설정할 때, 호스트가 기록하고자 하는 데이터가 데이터 블록으로 부여된 페이지 오프셋 번호에 따라 순차적으로 기록되는 주 데이터 블록과, 호스트에서 기록하고자 하는 데이터가 순차적이지 않은 경우 기록되는 보조 데이터 블록의 두 종류의 데이터 블록을 설정한다. First, when setting a data block, the main data block in which data to be written by the host is sequentially recorded according to the page offset number assigned to the data block, and the auxiliary data block to be recorded when the data to be recorded in the host is not sequential. Set two types of data blocks.
호스트에서 데이터를 기록하고자 할 때 1차로 보조 데이터 블록에 데이터를 기록한 후, 기록한 데이터가 소정 데이터량에 도달하면 데이터가 순차적으로 기록되었는지 확인한다. 만일 순차적으로 기록되었으면 데이터가 기록된 보조 데이터 블록을 주 데이터 블록으로 변환한다. When data is to be recorded in the host, data is first recorded in the auxiliary data block. When the recorded data reaches a predetermined amount of data, the data is sequentially recorded. If sequentially recorded, the auxiliary data block in which data is recorded is converted into the main data block.
그 후, 호스트에서 데이터를 기록하고자 할 때, 1차로 보조 데이터 블록에 데이터를 기록한다. 그러나, 기록한 데이터가 순차적이지 않은 경우, 보조 데이터 블록을 주 데이터 블록에 링크시켜 놓는다. 따라서, 갱신된 데이터는 보조 데이터 블록에 저장되며, 주 데이터 블록에 엑세스하게 되면 링크된 바에 따라 보조 데이터 블록에 저장된 갱신된 데이터에 엑세스할 수 있다. Then, when data is to be recorded in the host, the data is primarily written to the auxiliary data block. However, if the recorded data is not sequential, the auxiliary data block is linked to the main data block. Thus, the updated data is stored in the auxiliary data block, and accessing the main data block can access the updated data stored in the auxiliary data block as linked.
만일, 보조 데이터 블록에 기록된 데이터가 소정 데이터량에 도달하면 데이터를 신규 주 데이터 블록에 옮겨 기록한다. If the data recorded in the auxiliary data block reaches the predetermined data amount, the data is transferred to the new main data block and recorded.
도 9는 상기에서 설명한 주 데이터 블록과 보조 데이터 블록을 사용하여 데이터를 기록하는 방식에 도시된 도이다.9 is a diagram illustrating a method of recording data using the above-described main data block and auxiliary data block.
도시된 바와 같이, 호스트에서 데이터를 기록하고자 하는 경우, (a)에 도시된 바와 같이 1차로 보조 데이터 블록(B11)에 데이터를 기록한다. 데이터가 4개의 페이지에 기입된 경우 보조 데이터 블록(B11)에 기록된 데이터가 주 데이터 블록의 페이지 오프셋 순서와 일치하는지 확인한다. As shown in the figure, when data is to be recorded in the host, the data is first recorded in the auxiliary data block B11 as shown in (a). When data is written in four pages, it is checked whether the data written in the auxiliary data block B11 matches the page offset order of the main data block.
본 실시예에서 보조 데이터 블록에 기록된 데이터는 '1,2,3,4'로 주 데이터 블록의 페이지 오프셋 순서와 일치한다. 따라서, 보조 데이터 블록(B11)을 주 데이터 블록(B21)으로 치환한다. In the present embodiment, the data recorded in the auxiliary data block is '1, 2, 3, 4', which corresponds to the page offset order of the main data block. Therefore, the auxiliary data block B11 is replaced with the main data block B21.
(b)에서는 그 후 기록하고자 하는 데이터가 보조 데이터 블록(B12)에 기록되고, 보조 데이터 블록(B12)이 주 데이터 블록(B22)의 자식 블록으로 링크된 바를 도시하고 있다. In (b), thereafter, the data to be written is recorded in the auxiliary data block B12, and the auxiliary data block B12 is linked to the child blocks of the main data block B22.
(b)에서 보조 데이터 블록(B12)에 기록된 데이터가 소정 데이터량(본 실시예에서는 4개의 페이지에 기입될 양)에 도달하면, (c)에 도시된 바와 같이 신규 주 데이터 블록(B23)을 할당하여 데이터 옮겨 적는다. When the data recorded in the auxiliary data block B12 in (b) reaches a predetermined amount of data (amount to be written into four pages in this embodiment), the new main data block B23 as shown in (c). Transfer the data by allocating.
도 10은 플래시 메모리에 주 데이터 블록과 보조 데이터 블록을 설정한 예가 도시된 도이다. 10 is a diagram illustrating an example of setting a main data block and an auxiliary data block in a flash memory.
도시된 바와 같이, 플래시 메모리의 소정 개의 페이지를 모아서 하나의 주 데이터 블록(370)으로 설정하고, 주 데이터 블록(370)에 링크된 보조 데이터 블록(380)을 설정하고, 주 데이터 블록(370)의 유효여부에 관한 데이터가 저장되는 페이지로 이루어지는 로그 블록(390)을 설정할 수 있다. As shown, a predetermined number of pages of the flash memory are collected and set as one main data block 370, an auxiliary data block 380 linked to the main data block 370 is set, and the main data block 370 A
여기서 점선을 보조 데이터 블록의 페이지에 데이터가 기록되는 순서를 나타낸다. 보조 데이터 블록은 총 16개의 페이지로 구성된다. 보조 데이터 블록이 모두 차면 주 데이터 블록으로 치환하거나, 데이터를 신규 주 데이터 블록으로 옮겨 기록한 후 보조 데이터 블록에 기록되었던 데이터를 소거한다. Here, the dotted line indicates the order in which data is written to the page of the auxiliary data block. The auxiliary data block consists of 16 pages in total. When the auxiliary data block is full, the data is replaced with the main data block, or the data is moved to the new main data block, and the data is erased.
주 데이터 블록(370)과 보조 데이터 블록(380)은 화살표로 표시한 바와 같이 링크되어 있다. 또한, 주 데이터 블록(370)의 유효여부에 관한 데이터는 로그 블록(390) 중 첫번째 페이지에 기록된다. The primary data block 370 and the auxiliary data block 380 are linked as indicated by arrows. In addition, data regarding whether the main data block 370 is valid is recorded in the first page of the
도 11은 본 발명에 따른 주 데이터 블록과 보조 데이터 블록의 물리 페이지에 기록되는 데이터가 도시된 도이다. 11 is a diagram illustrating data recorded on a physical page of a main data block and an auxiliary data block according to the present invention.
(a)는 주 데이터 블록의 물리 페이지에 기록되는 데이터를 나타낸다. 물리 페이지의 주 영역에는 호스트가 기록하고자 하는 데이터인 유저 데이터가 기록된다. 물리 페이지의 보조 영역에는 유저 데이터의 ECC, 주 데이터 블록의 논리 주소(LBA), 링크된 보조 데이터 물리 주소(보조 PA)에 관한 데이터가 저장된다. 또한, 해당 페이지가 주 데이터 블록에 해당하는 페이지임을 알 수 있도록 주블록 ID 데이터(ID)가 저장된다. (a) shows data recorded in the physical page of the main data block. In the main area of the physical page, user data, which is data to be recorded by the host, is recorded. In the auxiliary area of the physical page, data relating to the ECC of the user data, the logical address (LBA) of the main data block, and the linked auxiliary data physical address (secondary PA) are stored. In addition, main block ID data ID is stored so that the corresponding page is a page corresponding to the main data block.
(b)는 보조 데이터 블록의 물리 페이지에 기록되는 데이터를 나타낸다. 물리 페이지의 주 영역에는 호스트가 기록하고자 하는 데이터인 유저 데이터가 기록된다. 물리 페이지의 보조 영역에는 유저 데이터의 ECC, 링크된 주 데이터 블록의 물리 주소(주 PA), 상기 유저 데이터가 기록되어야 할 주 데이터 블록의 페이지 오프셋(주 PO), 해당 보조 데이터 블록의 물리 주소(보조 PA), 보조 데이터 블록의 페이지 오프셋(보조 PO)가 저장된다. 또한, 해당 페이지가 보조 데이터 블록에 해당하는 페이지임을 알 수 있도록 보조블록 ID 데이터(ID)가 저장된다. (b) shows data recorded in the physical page of the auxiliary data block. In the main area of the physical page, user data, which is data to be recorded by the host, is recorded. In the auxiliary area of the physical page, an ECC of user data, a physical address (main PA) of a linked main data block, a page offset (main PO) of a main data block in which the user data is to be recorded, and a physical address of the corresponding auxiliary data block ( Auxiliary PA), and the page offset (secondary PO) of the auxiliary data block. In addition, the auxiliary block ID data ID is stored so that the corresponding page is a page corresponding to the auxiliary data block.
여기서, 보조 데이터 블록의 페이지에 기록되는 보조 데이터 블록의 페이지 오프셋은 해당 페이지에 데이터가 기록된 순서이다. Here, the page offset of the auxiliary data block written in the page of the auxiliary data block is the order in which data is written in the corresponding page.
한편, 호스트에서 플래시 메모리로 연산요청을 한 경우 호스트에서 호출하는 논리 주소와 주 데이터 블록으로 부여된 물리 주소를 사상하는 주 관리테이블과, 보조 데이터 블록으로 부여된 물리 주소 및 링크된 주 데이터 블록의 물리 주소를 사상하는 보조 관리테이블이 필요하다.On the other hand, when an operation request is made from the host to the flash memory, the main management table that maps the logical address called by the host and the physical address assigned to the primary data block, the physical address assigned to the auxiliary data block, and the linked primary data block You need an auxiliary management table that maps physical addresses.
주 관리테이블과 보조 관리테이블은 주 데이터 블록과 보조 데이터 블록에 기록된 데이터를 바탕으로 생성 가능해야 한다. The primary management table and the secondary management table should be able to be generated based on the data recorded in the primary data block and the auxiliary data block.
도 12는 본 발명에서 사용되는 주 관리테이블(a)과 보조 관리테이블(b)의 예가 도시된 도이다. 도시된 바와 같이, 주 관리테이블(a)에는 호스트에서 호출 시 사용되는 논리 주소(LBA), 주 데이터 블록으로 부여된 물리 주소(주 Physical Address), 링크된 보조 데이터 블록으로 부여된 물리 주소(보조 Physical Address)에 관한 정보가 저장된다. 12 shows an example of the main management table (a) and the auxiliary management table (b) used in the present invention. As shown, the primary management table (a) contains a logical address (LBA) used when called by the host, a physical address given to the primary data block (primary physical address), and a physical address assigned to the linked secondary data block (auxiliary). Information about the physical address is stored.
보조 관리테이블(b)에는 보조 데이터 블록으로 부여된 물리 주소(보조 Physical Address), 보조 페이지 오프셋(보조 Page Offset), 링크된 주 데이터 블록으로 부여된 물리 주소(주 Physical Address), 및 보조 데이터 블록 페이지의 주 영역에 기록되어야 할 주 데이터 블록의 페이지 오프셋인 주 페이지 오프셋(주 Page Offset)에 관한 정보가 저장된다. The auxiliary management table (b) includes a physical address (secondary physical address) assigned to an auxiliary data block, an auxiliary page offset (secondary page offset), a physical address assigned to a linked primary data block (primary physical address), and an auxiliary data block. Information about a main page offset, which is a page offset of a main data block to be recorded in the main area of the page, is stored.
이때, 하나의 버스라인에 적어도 2개의 플래시 메모리가 연결된 경우 Chip Enable 번호(CE #)도 보조 관리테이블(b)에 저장된다. In this case, when at least two flash memories are connected to one bus line, the chip enable number CE # is also stored in the auxiliary management table b.
도 13은 본 발명에 따라 데이터 블록에 데이터를 기록하고 로그 블록에 로그 데이터를 기록하는 방법의 흐름이 도시된 도이다. 먼저 플래시 메모리에 호스트에 서 기록하고자 하는 데이터가 기록될 데이터 블록 영역과, 데이터 블록 영역에 저장된 데이터의 유효여부에 관한 로그 데이터가 기록될 로그 블록 영역을 설정한다(S21).13 is a flow diagram illustrating a method of writing data in a data block and log data in a log block in accordance with the present invention. First, a data block area in which data to be written by the host is to be written in the flash memory, and a log block area in which log data about whether data stored in the data block area is valid is written is set (S21).
호스트에서 데이터를 기록하고자 하면 호출된 논리 주소에 대응되는 물리 주소를 가지는 데이터 블록 영역에 데이터가 기록된다(S22). 해당 데이터 블록의 유효여부에 관한 로그 데이터가 해당 데이터 블록에 대응되는 로그 블록 페이지에 기록된다(S23).If the host wants to record data, the data is recorded in the data block area having a physical address corresponding to the called logical address (S22). Log data on whether the data block is valid is recorded in the log block page corresponding to the data block (S23).
도 14는 데이터 블록을 주 데이터 블록과 보조 데이터 블록의 2 종류로 설정한 경우 데이터를 기록하는 방법의 흐름이 도시된 도이다. 14 is a diagram illustrating a flow of a method of recording data when the data block is set to two types of main data block and auxiliary data block.
도시된 바와 같이, 호스트에서 데이터를 기록하고자 논리주소를 호출하면(S31), 보조 데이터 블록에 데이터가 기록된다(S32). 보조 데이터 블록은 앞서 데이터가 기록된 주 데이터 블록이 존재할 경우 주 데이터 블록에 링크된다.As shown, when a logical address is called to record data in the host (S31), the data is recorded in the auxiliary data block (S32). The auxiliary data block is linked to the main data block if there is a main data block to which data has been previously recorded.
한편, 보조 데이터 블록에 기록된 데이터가 소정 데이터량에 도달했는지 확인하고(S33), 만일 도달하지 않은 경우 논리주소가 호출됨에 따라 보조 데이터 블록에 데이터를 계속 기록한다.On the other hand, it is checked whether the data recorded in the auxiliary data block has reached a predetermined amount of data (S33), and if not, the data is continuously recorded in the auxiliary data block as the logical address is called.
그러나, 도달한 경우 보조 데이터 블록에 기록된 데이터가 순차적인지 확인한다(S34). 기록된 데이터가 순차적인 경우 보조 데이터 블록을 주 데이터 블록으로 치환한다(S35). 주 데이터 블록으로 치환은 보조 데이터 블록을 이루는 페이지의 보조 영역에 저장되는 ID 데이터를 주블록 ID 데이터로 기입함으로서 이루어진다. 보조 데이터 블록 페이지의 ID 데이터 기입은 보조 데이터 블록에 기록된 데 이터가 소정 데이터량에 도달한 경우 이루어진다. However, if it reaches, it is checked whether the data recorded in the auxiliary data block is sequential (S34). If the recorded data is sequential, the auxiliary data block is replaced with the main data block (S35). Substitution with the main data block is performed by writing ID data stored in the auxiliary area of the page constituting the auxiliary data block as the main block ID data. Writing of ID data of the auxiliary data block page is performed when the data recorded in the auxiliary data block reaches a predetermined amount of data.
주 데이터 블록으로 보조 데이터 블록을 치환한 후 데이터 블록에 저장된 데이터의 유효여부에 관한 로그 데이터가 대응되는 로그 블록 페이지에 기록된다(S36). After replacing the auxiliary data block with the primary data block, log data regarding whether the data stored in the data block is valid is recorded in the corresponding log block page (S36).
만일, 소정 데이터량에 도달한 보조 데이터 블록 기록 데이터가 순차적이 아닌 경우, 보조 데이터 블록에 기재된 데이터는 신규 주 데이터 블록으로 복사되고, 보조 데이터 블록 데이터는 소거된다(S37). 신규 주 데이터 블록의 로그 데이터는 대응되는 로그 블록 페이지에 기록된다(S36). If the auxiliary data block write data that has reached the predetermined data amount is not sequential, the data described in the auxiliary data block is copied to the new main data block, and the auxiliary data block data is erased (S37). Log data of the new main data block is recorded in the corresponding log block page (S36).
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 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. I can understand that. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.
도 1은 플래시 메모리로 데이터를 기록하는 방법이 도시된 순서도,1 is a flowchart showing a method of writing data into a flash memory;
도 2는 본 발명의 플래시 메모리 시스템의 구조가 도시된 블록도,2 is a block diagram showing the structure of a flash memory system of the present invention;
도 3은 본 발명이 적용되는 플래시 메모리의 구조가 도시된 도,3 is a diagram illustrating a structure of a flash memory to which the present invention is applied;
도 4와 도 5는 본 발명에 따라 플래시 메모리 블록을 데이터 블록 영역과 로그 블록 영역으로 설정한 예가 도시된 도,4 and 5 illustrate examples of setting a flash memory block as a data block area and a log block area according to the present invention;
도 6은 도 5의 데이터 블록 영역에 페이지 오프셋을 부여한 도,FIG. 6 is a diagram illustrating a page offset in a data block area of FIG. 5;
도 7, 도 8 및 도 9는 본 발명에 따라 보조 데이터 블록으로 데이터를 기록한 후, 주 데이터 블록으로 치환 또는 복사하는 방법이 도시된 도,7, 8, and 9 illustrate a method of replacing or copying a main data block after writing data to an auxiliary data block according to the present invention;
도 10은 본 발명에 따라 플래시 메모리 블록에 주 데이터 블록, 보조 데이터 블록 및 로그 블록으로 설정한 예가 도시된 도,10 is a diagram illustrating an example of setting a main data block, an auxiliary data block, and a log block in a flash memory block according to the present invention;
도 11은 주 데이터 블록, 보조 데이터 블록에 기록되는 페이지가 도시된 도,11 is a diagram showing a page written in a main data block and an auxiliary data block;
도 12는 본 발명에서 주소 사상 시 사용되는 주 관리테이블, 보조 관리테이블이 도시된 도,12 is a diagram illustrating a primary management table and an auxiliary management table used in address mapping according to the present invention;
도 13과 도 14는 본 발명에 따라 플래시 메모리로 데이터를 기록하는 방법의 흐름이 도시된 순서도이다. 13 and 14 are flow charts showing the flow of a method of writing data to a flash memory according to the present invention.
Claims (29)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080032750A KR20090107309A (en) | 2008-04-08 | 2008-04-08 | Data Writing On a Flash Memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080032750A KR20090107309A (en) | 2008-04-08 | 2008-04-08 | Data Writing On a Flash Memory |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090107309A true KR20090107309A (en) | 2009-10-13 |
Family
ID=41537133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080032750A KR20090107309A (en) | 2008-04-08 | 2008-04-08 | Data Writing On a Flash Memory |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20090107309A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924628B2 (en) | 2010-04-20 | 2014-12-30 | Samsung Electronics Co., Ltd. | Memory system and operating method thereof |
-
2008
- 2008-04-08 KR KR1020080032750A patent/KR20090107309A/en not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924628B2 (en) | 2010-04-20 | 2014-12-30 | Samsung Electronics Co., Ltd. | Memory system and operating method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US8180955B2 (en) | Computing systems and methods for managing flash memory device | |
USRE45222E1 (en) | Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table | |
US8041884B2 (en) | Controller for non-volatile memories and methods of operating the memory controller | |
Chung et al. | System software for flash memory: A survey | |
US8291155B2 (en) | Data access method, memory controller and memory storage system | |
US20080120488A1 (en) | Apparatus and method of managing nonvolatile memory | |
US8356136B2 (en) | Block management method of a non-volatile memory | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
JP5480913B2 (en) | Storage device and memory controller | |
JP2014116031A (en) | Electronic system with memory device | |
KR20110107856A (en) | Logical address offset | |
EP2389631A2 (en) | Solid state memory formatting | |
KR20070096429A (en) | Fast mounting for a file system on nand flash memory | |
US20100306447A1 (en) | Data updating and recovering methods for a non-volatile memory array | |
US8037236B2 (en) | Flash memory writing method and storage system and controller using the same | |
KR101403922B1 (en) | Apparatus and method for data storing according to an access degree | |
KR20100115090A (en) | Buffer-aware garbage collection technique for nand flash memory-based storage systems | |
KR20090024971A (en) | Method and apparatus for cache using sector set | |
JP4242245B2 (en) | Flash ROM control device | |
JP2012058770A (en) | Memory controller, flash memory system equipped with memory controller and control method of flash memory | |
JP2007334413A (en) | Storage device | |
JP4737223B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
KR100932801B1 (en) | Memory management methods, memory devices, and computer readable storage media | |
JP2005115562A (en) | Flash rom controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |