KR20120138566A - Method for managing buffer in multi layer cell flash memory and apparatus thereof - Google Patents

Method for managing buffer in multi layer cell flash memory and apparatus thereof Download PDF

Info

Publication number
KR20120138566A
KR20120138566A KR1020110058135A KR20110058135A KR20120138566A KR 20120138566 A KR20120138566 A KR 20120138566A KR 1020110058135 A KR1020110058135 A KR 1020110058135A KR 20110058135 A KR20110058135 A KR 20110058135A KR 20120138566 A KR20120138566 A KR 20120138566A
Authority
KR
South Korea
Prior art keywords
data
flash memory
sibling
page
buffer
Prior art date
Application number
KR1020110058135A
Other languages
Korean (ko)
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 KR1020110058135A priority Critical patent/KR20120138566A/en
Publication of KR20120138566A publication Critical patent/KR20120138566A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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]

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

PURPOSE: A buffer managing method of a multiple layer flash memory and an apparatus thereof are provided to manage a buffer b using a valid data pointer and to define the valid data pointer. CONSTITUTION: A flash memory controller(20) sets up a valid data point in order for data of a sibling page not to be overlapped. When data of the sibling page is stored in the flash memory, the flash memory controller detects whether there is data damage of the sibling page. In case there is data damage of the sibling page, the flash memory controller recovers data of the sibling page in a flash memory from a buffer. [Reference numerals] (10) Host; (20) Flash memory Controller; (21) Host interface; (22) Flash controller; (30) Buffer memory; (40) Flash memory; (AA) Effective data pointer; (BB) Host writing motion; (CC) Flash pointer; (DD) Host writing pointer; (EE) Flush operation

Description

Buffer management method and device of multi-layer flash memory TECHNICAL FIELD

The present invention relates to a solid state disk (SSD) storage, and more particularly, to a method of managing a buffer in a multi-layer cell (MLC) flash memory and a storage device thereof.

Recently, new storage markets are increasingly being utilized with flash memory. Solid state disk (SSD) storage is a storage device that increases the capacity and data transfer speed of a disk by connecting a plurality of flash memory chips to a single SSD controller. The SSD storage device is expected to replace the existing HDD storage device due to its price and speed advantages. In addition, SSD storage devices are devices in which a plurality of flash memories are attached to a parallel flash bus to increase capacity and data access speed.

The SSD storage device has a FTL (Flash Translation Layer) layer therein, and converts a logical block address (LBA) of user data sent from a host into a physical address of a flash memory. This conversion process is called address mapping. In order to perform the address mapping, the FTL stores user data and logical block addresses simultaneously in a physical page of a flash memory.

The flash memory device may be classified into a single level cell (SLC) flash memory and a multi level cell (MLC) flash memory. Single cell flash memory devices store, for example, one bit per memory cell. Multi-cell (MLC) flash memory devices, on the other hand, store more than one bit per memory cell (ie, each cell has four or more programmable states). In a multi-cell flash memory device, the amount of current or voltage is detected instead of merely detecting the presence or absence of current or voltage. In a multi-cell flash memory device, at least three threshold levels are used to define four or more different threshold states.

On the other hand, the multi-layer cell (MLC) flash memory mainly used in SSD storage device can store more than two bits of data in one cell, it can store a large amount of data at a low price. The two bits of data stored in one cell are paired with each other and are called a sibling page. This sibling page is stored in the logical block address (LSB), and then the least significant bit (LSB) is first stored in the flash memory, and then the most significant bit (MSB) is stored. However, when the most significant bit (MSB) is stored, if a power failure or a program fail occurs, not only the MSB but also the data of the previously stored LSB may be damaged.

The present invention provides a method of managing a buffer to prevent corruption and recover damaged data when data corruption occurs in a sibling page in a multi-cell flash memory. That is, the present invention is a multi-layer cells that store more than two bits of data in one memory (MLC: Multi-level Cell) in the SSD storage device using a flash memory, when data is written to the flash memory program fail (program fail), the power Data corruption may occur due to a phenomenon such as power fail or reset. At this time, not only the page currently written to the flash memory but also the data of the sibling page using a cell shared may cause loss (or damage). The present invention is to solve this technical problem, and relates to a buffer management method considering data corruption of a sibling page and a method for recovering data of a sibling page.

In order to achieve the above object, the buffer management method of a multi-layer cell flash memory according to the present invention,

As a buffer management method of a multi-layer cell (MLC) flash memory,

Store the data stored in the buffer into the flash memory;

When storing the data into a flash memory, setting a valid data pointer using a sibling distance;

Detecting whether data of the sibling page is damaged due to corruption in data stored in the flash memory;

When it is detected that the data of the sibling page is damaged due to the corruption of the data, the corrupted data and the data of the sibling page are recovered using the set valid data pointer.

Preferably, the valid data pointer is

Calculate using the formula "Vaild Data Pointer (VP) = Flush Pointer (FP)-Sibling Distance (SD)". At this time,

The flush pointer has a value of the first address indicating the data to be written to the flash memory among the valid data stored in the buffer,

The sibling distance is a distance between sibling pages in a flash memory structure of a multi-layer cell.

Preferably, when the multi-layer cell (MLC) flash memory has a parallel structure composed of a plurality of chips,

The valid data pointer is

Calculated using the formula "Vaild Data Pointer (VP) = Flush Pointer (FP)-Sibling Distance * Number of Chips".

Preferably, in the step of recovering data of the sibling page

Copy data of pages stored before the sibling page to another block of the flash memory;

The data of the sibling page stored in the buffer indicated by the valid data pointer is copied to the other block.

In addition, in order to achieve the above object, the buffer management method of a multi-layer cell flash memory according to the present invention,

As a buffer management method of a multi-layer cell (MLC) flash memory,

Storing the first data of the sibling page from the buffer to the flash memory;

Calculate a sibling distance from the sibling page;

Setting a valid data pointer to differ by the calculated sibling distance to prevent the first data of the sibling page stored in the buffer from being overwritten with other data;

When the second data of the sibling page is stored in the buffer to the flash memory, detecting whether the second data of the sibling page has been damaged;

When it is detected that the first data of the sibling page is also damaged due to the corruption of the second data of the sibling page, the set valid data pointer indicates first data of the sibling page and the sibling page of the sibling page. And recovering second data from the buffer to the flash memory.

In addition, in order to achieve the above object, the multi-layer cell flash memory storage device according to the present invention,

In the multi-layer cell (MLC) flash memory storage device comprising a host, a buffer, and a flash memory,

Set a valid data point to differ by a sibling distance such that data of the sibling page is not overwritten;

Detecting whether data corruption of the sibling page occurs when data of the sibling page is stored in the flash memory;

And detecting a corruption of data of the sibling page when the data corruption of the sibling page is detected, using the valid data point to restore the data of the sibling page from the buffer to the flash memory.

According to the present invention, in an SSD storage device using a multi-cell (MLC) flash memory, an effective data pointer differs by a sibling distance in order to prevent data corruption of a sibling page and to recover data of a damaged sibling page. By defining and managing the buffer using the same, there is an effect of preventing data loss due to a host write operation to the data of the sibling page, and an effect of increasing the reliability of the flash memory device.

1 is an example of a structure of a multilayer cell (MLC) flash memory.
FIG. 2 is a diagram illustrating a relationship between sibling pages of an MLC flash memory K9LBG08U0M in which two bits are stored in one cell.
3 is a diagram illustrating a conventional buffer management method of an SSD storage device.
4 is a block diagram illustrating a method of managing a buffer without data corruption of a sibling page in an SSD storage device according to an embodiment of the present invention.
5 is a flowchart illustrating a method of managing a buffer in an SSD storage device according to an embodiment of the present invention.
6 is a block diagram illustrating a method of recovering data in case of data corruption, according to an embodiment of the present invention.
FIG. 7 is a block diagram illustrating a buffer management policy considering a parallel bus structure in an SSD storage device having a flash memory structure of a multi-layer cell according to an embodiment of the present invention.

The present invention is applied to a memory storage device. However, the present invention is not limited thereto and may be applied to a technical field to which the technical spirit of the present invention may be applied.

As the inventive concept allows for various changes and numerous embodiments, particular embodiments will be illustrated in the drawings and described in detail in the written description. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

Terms including ordinal numbers such as first and second may be used to describe various components, but the components are not limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. The term " and / or " includes any combination of a plurality of related listed items or any of a plurality of related listed yields.

When an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, but other elements may be present in between. On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.

The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the terms "comprise" or "have" are intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described on the specification, and one or more other features. It is to be understood that the present disclosure does not exclude the possibility of the presence or the addition of numbers, steps, operations, components, components, or a combination thereof.

Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art and shall not be construed in ideal or excessively formal meanings unless expressly defined in this application. Do not.

The terminal according to the present invention refers to all devices capable of performing the technical features of the present invention. That is, a mobile communication terminal (for example, a pacemaker, a vending machine, a power meter, an air pollution meter, etc.) capable of performing an MTC service function according to the present invention is a user equipment (UE), and other human-oriented devices. (E.g. mermaids, cell phones, cell phones, DMB phones, game phones, camera phones, smartphones, etc.), and other notebooks, desktop computers, laptop computers, palmtop computers, PDAs (personal digital assistant), white goods, etc., is a comprehensive meaning.

Hereinafter, technical terms used in the description of the present invention will be described.

Flash memory may be classified into a single level cell (SLC) and a single level cell (SLC) according to its structure.

Single cell flash memory is a structure that stores one bit in one cell, and multi-level cell (MLC) flash memory has two or more bits in one cell (for example, Most Significant Bit (MSB)). ) And the least significant bit (LSB).

In the sibling page, two bits of data stored in one cell of a multi-cell (MLC) flash memory device are paired with each other. It is called a sibling page.

The sibling distance refers to the interval between sibling pages.

The host write pointer points to the first address of the free space in the buffer.

The flush pointer points to the first address of valid data stored in the buffer that must be written to flash memory.

The valid data pointer points to the address of valid data among the data stored in the buffer.

"Host write operation" refers to temporarily storing data in a buffer.

The "flush operation" refers to storing data temporarily stored in a buffer in flash memory.

A ring buffer, also known as a circular buffer, refers to a buffer whose structure is to overwrite the data at the address of the first buffer when sequentially filled with data in the buffer. Pointers are required. Pointer to the beginning of the data, a pointer to the end of the data, and a pointer to the data.

The basic concept of the present invention is to recover the corrupted data when the data of the sibling page, which may occur due to a program failure (or a power failure), etc. in the multilayer cell memory structure is damaged; Set a valid data pointer to differ by a sibling distance; By setting the valid data pointer to be different by the bling distance, the overwrite operation is prevented from occurring by the host write operation in the corresponding region of the buffer where the data of the sibling page is stored; In addition, when flushing the data stored in the buffer into the flash memory, to monitor whether the data of the sibling page is damaged due to a program failure; When the data of the sibling page is corrupted, recover the data of the damaged sibling page by using a valid data pointer that points to the address of the buffer (that is, the address of the buffer where the data of the sibling page is stored) so that it differs by the sibling distance. It is.

In order to implement the basic concept of the present invention, the present invention newly defines the following equations (1) and (2) to obtain a "valid data pointer".

Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings, and in describing the present invention with reference to the accompanying drawings, the same or corresponding elements are denoted by the same reference numerals and duplicated thereto. The description will be omitted.

1 is an example of a structure of a multilayer cell (MLC) flash memory.

As shown in FIG. 1, a flash memory generally consists of hundreds of pages and thousands of blocks. The block is composed of a plurality of pages. The data is written in the flash memory in units of pages, but the data is deleted in blocks.

In addition, the flash memory of FIG. 1 has a ring buffer structure and sequentially writes them. That is, a data write operation is performed in increments of pages such as Page0, Page1, and Page2.

The multi-layer cell (MLC) flash memory of FIG. 1 stores two or more bits (eg, Most Significant Bit (MSB) and Least Significant Bit (LSB)) in one cell. In this case, one cell is, for example, 'Page 0' and 'Page4', and as another example, 'Page 2' and 'Page 6' correspond to the same cell.

That is, as shown in FIG. 1, the LSB of two bits (that is, data consisting of two bits) is first written to 'Page 0', and then the MSB of two bits is written to 'Page 4'. Therefore, 'Page 0' and 'Page4' corresponding to the same cell are called a sibling page or a paired page. In addition, 'Page 2' and 'Page 6' also correspond to the same cell, and thus, a sibling page.

FIG. 2 is a diagram illustrating a relationship between sibling pages of an MLC flash memory K9LBG08U0M in which two bits are stored in one cell.

2 shows the address of a sibling page (or paired page) of data stored in the same cell in hexadecimal. In addition, a sibling distance may be obtained through the sibling page. For example, in FIG. 2, the '00h' page and the '04h' page are sibling pages, and the sibling distance between '00h' and '04h' is four. In addition, the sibling distance between the '02h' page and the '08h' page is 6.

As shown in Figs. 1 and 2, the MLC flash memory stores two or more bits of data in one cell. In addition, data is written in the MLC flash memory according to sequential writes, in which data is first written to the LSB page, and then to the MSB page.

3 is a diagram illustrating a conventional buffer management method of an SSD storage device. In FIG. 3, "host write operation" refers to temporarily storing data in a buffer, and "flush operation" refers to storing data temporarily stored in a buffer into a flash memory.

A description with reference to FIG. 3 is as follows. When the host 10 performs a write operation to the buffer memory, the SSD storage device 100 temporarily stores the data in the buffer memory 30 and then writes (stores) the data to the flash memory again.

When a "host write operation" is performed, the host write pointer points to the first address of the free space in the buffer 30 (ie, the host write pointer in Figure 3 points to 'buffer page 9') and also the host write pointer. Increases by the amount of data recorded by the host 10. For example, if data has been written up to 'buffer page 9', 'buffer page 0' and 'buffer page 1' at host 10, the "host write pointer" will point to "buffer page 3" and the "host write" The value of "pointer" is incremented to point to "buffer page 3."

The 'flush pointer' indicates the first address of data to be written to the flash memory among the valid data stored in the buffer 30. That is, in FIG. 3, the 'flush pointer' points to the 'buffer page 6' in the buffer 30. because,

The valid data pointer indicates an address of valid data among the data stored in the buffer 30. That is, in FIG. 3, if it is assumed that 'buffer page 9' to 'buffer page 5' of the buffer 30 is empty, the 'valid data pointer' indicates 'buffer page 6' in the buffer 30.

Meanwhile, the SSD storage device 100 simultaneously performs a "write operation of a host" and a "flush operation" under the control of the flash memory controller 20. That is, a "host write operation" means a page of the buffer 30 pointed to by a valid data pointer (i.e., in Figure 3, a buffer) on a page of buffer 30 pointed to by a host write pointer (ie, buffer page 9 in FIG. 3). The data written by the host 10 is stored in the buffer 30 in an empty space of the buffer 30 up to page 5 (ie, empty pages in the buffer).

"Flush operation" is a page of buffer 30 pointed to by the flush write pointer (ie, buffer page 6 in FIG. 3) from a page of buffer 30 pointed to by the host write pointer (ie, buffer page 8 in FIG. 3). This operation writes the data up to the flash memory 40.

As shown in FIG. 3, "Data K-1" to "Data K + 4" stored in "Buffer Page 0" through "Buffer Page 5" of the buffer 30 are controlled by the flash memory controller 20. The buffer data was flushed from 'Page0' to 'Page5' of the flash memory 40, and at the same time, the "write operation of the host" occurred, and the data of "Data K + 5" to "Data K + 7" was buffered. As stored at 30, the 'host write pointer' will point to 'buffer page 9'. At this time, the "valid data pointer" and the "flush pointer" points to the "buffer page 6." In this state, if the "host write operation" is continued, the buffer space between the "buffer page 9" of the buffer 30 pointed to by the "host write pointer" and the "buffer page 5" pointed to by the "effective data pointer" is determined by the host. OverWrite will be overwritten with the other data stored in (10), so that the data previously written and flushed to flash memory, i.e., 'Data K-1' to 'Data K + 4' will all disappear (i.e. Will be erased).

On the other hand, in this situation, while a series of valid data currently stored in the buffer, that is, 'DataK + 5' to 'DataK + 7' is being written to 'page 6' to 'page 8' of the flash memory 40, For example, suppose that the SSD storage device 100 has an abnormal operation such as a program failure, reset, or power failure while writing data to page 8 of the flash memory 40. . At this time, the data of 'Data K + 7' stored in 'Page 8' is not only damaged, but the data of 'Data K + 1' stored in 'Page 2' is also damaged. This is because 'page 2' and 'page 8' of the flash memory 40 are sibling pages, so they share the same physical cells. Therefore, data (i.e., Data K + 7) corruption of 'page 8' causes data (i.e., Data K + 1) corruption of 'page 2'.

At this time, it is described whether the damaged data (that is, Data K + 1 and Data K + 7) during the writing to the flash memory 40 can be recovered from the data stored in the buffer 30. Among the data currently recorded in the buffer 30, 'Data K + 7' exists in the 'buffer page 8' of the buffer 30. However, 'Data K + 1' stored in the 'buffer page 2' in the buffer 30 no longer exists in the 'buffer page 2' due to the "overwrite operation" of the host 10. Therefore, the data 'Data K + 1' recorded in the sibling page of the data 'Data K + 7' in the flash memory 40 may be lost forever because there is no recoverable method.

The present invention addresses these technical problems. That is, the present invention proposes a buffer management policy (method) for preventing data corruption of sibling pages in a multi-layer cell (MTC) flash memory. The basic idea of the present invention is to: define a new address (location) to which a 'valid data pointer' points when flushing data in a buffer to flash memory; Data of the sibling page corresponding to data flushed from the buffer to the flash memory is overwritten by the host; Prevent the corresponding data of the sibling page from being deleted; During the flush operation from the buffer to the flash memory, the buffer of the SSD storage device having a multi-layer cell capable of recovering data deleted due to program failure or the like from the buffer is managed.

In order to implement the present invention, the 'valid data pointer' according to the present invention is defined as Equation 1:

Figure pat00001

In addition, by managing the buffer 30 of the SSD storage device 100 using the multi-cell flash memory with the "valid data pointer" defined above, data corruption of the sibling page is prevented.

Hereinafter, specific embodiments of the present invention will be described with reference to FIGS. 4 to 7.

4 is a block diagram illustrating a method of managing a buffer without data corruption of a sibling page in an SSD storage device according to an embodiment of the present invention.

5 is a flowchart illustrating a method of managing a buffer in an SSD storage device according to an embodiment of the present invention.

In FIG. 4, the SSD storage device 100 includes a host interface 21 for receiving data from the host 10 and storing the buffer 30, a buffer 30 for temporarily storing data received from the host 10, and A flash memory 40 and a flash memory controller 20 which writes data stored in the buffer 30 to the flash memory 40. Meanwhile, the buffer of Fig. 4 has a ring buffer structure. That is, since the buffer 30 of Fig. 4 is a ring buffer structure, the data first received from the host 10 is written (ie, stored or written) to the buffer 30 by the control of the host interface. The data first written to the buffer 30 are sequentially stored in the flash memory 40 in the order of writing.

In FIG. 4, in the buffer 30, data stored in 'buffer page 0' and 'buffer page 1' (that is, 'Data K-1' and 'Data K') is assumed to be in a state in which a flush operation is completed in the flash memory. do. In the buffer 30, data received from the host 10 is stored in the buffer page 2 to the buffer page 8, and the buffer page 2 is stored by the flash memory controller 20. It is assumed that data stored in the buffer page 5 'is flushed to the flash memory 40.

In this premise state, the "host write pointer" points to the first address (i.e., buffer page) at which data can be written, and therefore to "buffer page 9" of the buffer 30.

In the precondition as described above, an embodiment of the present invention will be described with reference to FIGS. 4 and 5. In FIG. 4, under the control of the flash memory controller 20, data stored up to 'buffer page 2' to 'buffer page 5' are already flushed into the flash memory 40, and thus, 'page 2' of the flash memory 40 is controlled. ~ 'Page 5'.

Thereafter, under the control of the flash memory controller 20, data stored up to 'buffer page 6' to 'buffer page 8' is currently flushed into the flash memory 40, and thus, 'page 6' to It is stored in 'page 8' (S51).

Meanwhile, when the flush operation of the S51 process is performed, the flash memory controller 20 causes the "flush pointer" to point to the "buffer page 6". The flash memory controller 20 keeps the "host write pointer" pointing to the "buffer page 9". On the other hand, the flash memory controller 20 does not increase the "valid data pointer" to immediately point to the "buffer page 6", and the "valid data pointer" is a sibling distance at the "flush pointer", where the sibling distance is 6 Control to point to the address of the buffer (that is, the buffer page). At this time, the sibling distance becomes 6 according to the difference between the sibling page being the "buffer page 8" and the "buffer page 2".

That is, after the flush operation of the S51 process is performed, the flash memory controller 20 does not increase the "effective data point" to point to the "buffer page 6", but to point to the previous data by the sibling distance. do. For example, when data from buffer page 6 (i.e. Data K + 5) to data in buffer page 8 (i.e. Data K + 7) is stored in flash memory 'page 6' to 'page 8' The flash memory controller 20 points the "valid data pointer" to the "buffer page 2" spaced apart by the sibling distance from the "buffer page 8". Here, the "buffer page 8" and the "buffer page 2" are sibling pages, and the sibling distance is 6, i.e., the difference. Meanwhile, as shown in FIG. 2, in a multi-cell flash memory in which two bits are written in one cell, the sibling page of 'buffer page 0' is 'buffer page 4', and 'buffer page 1' is 'buffer'. 'Page 5', 'Buffer Page 2' are 'Buffer Page 8', and 'Buffer Page 3' are 'Buffer Page 9' respectively corresponding sibling pages.

Thus, when data of 'buffer page 8' (i.e., Data K + 7) is flushed to 'page 8' of flash memory 40, the flash memory controller 20 sets the " valid data pointer " Control to point to the previous address (ie page), 'buffer page 2' by the sibling distance (ie, 6) of (S52). On the other hand, when the data of 'buffer page 6' and 'buffer page 7' are both flushed into the flash memory 40, the "flush pointer" is valid data of the buffer 30 to be stored in the flash memory. Will point.

As in S52, when data of each buffer page written in the buffer 30 is stored in the flash memory 40, the flash memory controller 20 stores the previous buffer page as much as the sibling distance of the stored buffer page. Control the "valid data pointer" to point to (ie, the sibling page of the buffer page being flushed). This is to prevent data from being overwritten on the sibling page by the "host write operation" by the host interface 21.

The flash memory controller 20 monitors (detects, detects, or retrieves) whether a situation occurs, such as a program failure or a reset (S53). If, for example, a program failure occurs while storing data of 'buffer page 8' (ie, Data K + 7) in 'page 8' of the flash memory 40, the data during flushing, that is, 'Data K' +7 'is damaged. In addition, since it is a multi-cell flash memory that stores two bits in one cell, the data of sibling pages (ie, 'Page 2' and 'Page 8') in the flash memory is also damaged (ie, 'Data K + 1'). Becomes

If the flash memory controller 20 detects data corruption in the process of S53 due to a program failure or the like, the damaged memory 20 recovers the damaged data using the "valid data pointer" (S54).

6 is a block diagram illustrating a method of recovering data in case of data corruption, according to an embodiment of the present invention. Hereinafter, an embodiment of the present invention will be described with reference to FIG. 6.

When data corruption occurs at 'block 0' of the flash memory 40, the data is recovered to another block (for example, block 1). In other words, intact data (i.e., Data K-1 and Data K) in 'block 0' is copied to 'page 0' and 'page 1' of 'block 1', respectively. In addition, since the "effective data pointer" currently points to "buffer page 2", the flash memory control 20 uses the data of the "buffer page 2" (that is, Data K + 1 "to" buffer page 8 "). Flushes data (ie, Data K + 7) from page 2 to page 8 of block 1 of flash memory 40. Data K stored in buffer 30 is thus flushed. +1 'to' Data K + 7 'can be recovered because data corresponding to the sibling page is managed as valid data by the "valid data pointer", and is not overwritten by the host write operation.

FIG. 7 is a block diagram illustrating a buffer management policy considering a parallel bus structure in an SSD storage device having a flash memory structure of a multi-layer cell according to an embodiment of the present invention.

FIG. 7 illustrates a buffer management policy in a structure in which data of the buffer 30 is distributed and stored in a plurality of chips in the SSD storage device 100 having a parallel structure. However, in the example of FIG. 7, data is distributed and stored on two chips. As illustrated in FIG. 7, data of 'buffer page 2' (ie, data K + 1) to 'buffer page 10' (ie, data K + 9) of the buffer 30 are stored in the flash memory 40. The current state is distributed and stored in 'Page 2' to 'Page 5' of 'Chip 0' and 'Page 1' to 'Page 5' of 'Chip 1'. In this state, the data written in the buffer page 11 of the buffer 30 (ie, Data K + 10) to the data written in the buffer page 16 (ie, Data K + 15) is stored in the flash memory 40. When flushing to chip 0 and chip 1, 'Data K + 10' is stored in page 6 of 'chip 0', and 'page 8' and 'Data K + 15' of 'chip 1' are shown in FIG. Similarly, it is distributed and stored in 'chip 0' and 'chip 1'. At this time, if data (i.e., Data K + 15) is corrupted in 'page 8' of 'chip 1' of the flash memory 40, the chip 0 and the chip corresponding to the sibling page (i.e., the sibling page of page 8) are damaged. The data of 'Page 2' of 'Chip 1' corresponding to page 2 of 1) (i.e., Data K + 3) may be damaged. In this case, in order to recover the data of the damaged page, in the SSD storage device of the multi-cell flash memory structure having the parallel structure, the flash memory controller 20 defines an "effective data pointer" as shown in Equation 2:

Figure pat00002

For example, data of 'buffer page 16' (that is, Data K + 15) is damaged due to a program failure or the like during chip 1 flush of the flash memory 40. The current "flush pointer" points to "buffer page 11", the sibling distance is 4 (where sibling distance is fixed for convenience), and the number of chips is 2, as shown in FIG. Thus, applying Equation 2, the value (or address) pointed to by the "effective data pointer" is: 11 (ie, the value (or address) of the buffer page pointed to by the flush pointer)-sibling distance (4) * 2. .

Thus, the " effective data pointer " points to 'buffer page 3' in the buffer 30. Here, the data of 'buffer page 3' (i.e., Data K + 2) stores corrupted data (i.e., 'Data K + 2') of 'page 2' of 'chip 0' of flash memory 40 have. Therefore, through the above Equation 2, the flash memory controller 20 manages the " valid data pointer ", thereby keeping the host write operation from being overwritten on the sibling page of the damaged data. Data of the sibling page (ie, 'Data K + 2' in FIG. 7) may be recovered.

Meanwhile, the sibling distance may be set to a case of 4 and a case of 6 as shown in FIG. 2, but for convenience, the sibling distance may be changed according to a page or may be fixed to a maximum value.

In the above-described embodiment of the present invention, the structure of the multi-layer cell flash memory has been described based on a case in which two bits are stored in one cell. This applies as is.

On the other hand, the method according to the invention described so far may be implemented in software, hardware, or a combination thereof. For example, a method in accordance with the present invention may be stored in a storage medium (e.g., mobile terminal internal memory, flash memory, hard disk, etc.) ≪ / RTI > in a software program that can be executed by a computer.

In the above, the present invention has been described with reference to the embodiments shown in the drawings, but this is merely exemplary, and those skilled in the art may realize various modifications and other equivalent embodiments therefrom. I will understand. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.

Claims (8)

As a buffer management method of a multi-layer cell (MLC) flash memory,
Storing the data stored in the buffer into the flash memory;
Setting a valid data pointer using a sibling distance when storing the data to a flash memory;
Detecting whether data of the sibling page is damaged due to corruption of data stored in the flash memory;
And recovering the corrupted data and the data of the sibling page using the set valid data pointer when it is detected that the data of the sibling page is damaged due to the corruption of the data. Buffer management method of cell flash memory.
The method of claim 1, wherein the valid data pointer is
Equation
Valid Data Pointer (VP) = Flush Pointer (FP)-Sibling Distance (SD)
Is calculated using, where
The flush pointer has a value of the first address indicating the data to be written to the flash memory among the valid data stored in the buffer,
The sibling distance is a distance between sibling pages in a flash memory structure of the multi-layer cell.
The method of claim 1, wherein the multi-layer cell (MLC) flash memory has a parallel structure composed of a plurality of chips.
The valid data pointer is
Equation
Valid Data Pointer (VP) = Flush Pointer (FP)-Sibling Distance (SD) * Number of Chips
Is calculated using, where
The flush pointer has a value of the first address indicating the data to be written to the flash memory among the valid data stored in the buffer,
The sibling distance is a distance between sibling pages in a flash memory structure of a multi-cell,
And the number of chips is the number of chips included in the flash memory of the multi-layer cell.
The method of claim 1, wherein recovering data of the sibling page
Copying data of pages stored before the sibling page to another block of the flash memory;
And copying the corresponding data of the sibling page stored in the buffer indicated by the valid data pointer to the another block.
As a buffer management method of a multi-layer cell (MLC) flash memory,
Storing the first data of the sibling page from the buffer to the flash memory;
Calculating a sibling distance from the sibling page;
Setting a valid data pointer to differ by the calculated sibling distance to prevent the first data of the sibling page stored in the buffer from being overwritten with other data;
When the second data of the sibling page is stored from the buffer to the flash memory, detecting whether the second data of the sibling page has been damaged;
When it is detected that the first data of the sibling page is also damaged due to the corruption of the second data of the sibling page, the set valid data pointer indicates first data of the sibling page and the sibling page of the sibling page. Restoring second data from the buffer to the flash memory.
The method of claim 5, wherein the valid data pointer is
Equation
Valid Data Pointer (VP) = Flush Pointer (FP)-Sibling Distance (SD)
Is calculated using, where
The flush pointer has a value of the first address indicating the data to be written to the flash memory among the valid data stored in the buffer,
The sibling distance is a distance between sibling pages in a flash memory structure of the multi-layer cell.
In the multi-layer cell (MLC) flash memory storage device comprising a host, a buffer, and a flash memory,
Set a valid data point to differ by a sibling distance such that data of the sibling page is not overwritten;
Detecting whether data corruption of the sibling page occurs when data of the sibling page is stored in the flash memory;
And a flash memory controller that controls to recover the data of the sibling page from the buffer to the flash memory using the valid data point when a data corruption of the sibling page is detected. Cell flash memory storage device.
The method of claim 7, wherein the flash memory controller
Equation
Valid Data Pointer (VP) = Flush Pointer (FP)-Sibling Distance (SD)
Compute the valid data pointer using
The flush pointer has a value of the first address indicating the data to be written to the flash memory among the valid data stored in the buffer,
And the sibling distance is a distance between sibling pages in the flash memory structure of the multi-layer cell.
KR1020110058135A 2011-06-15 2011-06-15 Method for managing buffer in multi layer cell flash memory and apparatus thereof KR20120138566A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110058135A KR20120138566A (en) 2011-06-15 2011-06-15 Method for managing buffer in multi layer cell flash memory and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110058135A KR20120138566A (en) 2011-06-15 2011-06-15 Method for managing buffer in multi layer cell flash memory and apparatus thereof

Publications (1)

Publication Number Publication Date
KR20120138566A true KR20120138566A (en) 2012-12-26

Family

ID=47905344

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110058135A KR20120138566A (en) 2011-06-15 2011-06-15 Method for managing buffer in multi layer cell flash memory and apparatus thereof

Country Status (1)

Country Link
KR (1) KR20120138566A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9728279B2 (en) 2013-08-14 2017-08-08 Samsung Electronics Co., Ltd. Memory system including a memory device, and methods of operating the memory system and the memory device
US9886379B2 (en) 2014-06-27 2018-02-06 Samsung Electronics Co., Ltd. Solid state driving including nonvolatile memory, random access memory and memory controller

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9728279B2 (en) 2013-08-14 2017-08-08 Samsung Electronics Co., Ltd. Memory system including a memory device, and methods of operating the memory system and the memory device
US10217517B2 (en) 2013-08-14 2019-02-26 Samsung Electronics Co., Ltd. Memory system including a memory device, and methods of operating the memory system and the memory device
US10714194B2 (en) 2013-08-14 2020-07-14 Samsung Electronics Co., Ltd. Memory system including a memory device, and methods of operating the memory system and memory device
US9886379B2 (en) 2014-06-27 2018-02-06 Samsung Electronics Co., Ltd. Solid state driving including nonvolatile memory, random access memory and memory controller

Similar Documents

Publication Publication Date Title
US10296224B2 (en) Apparatus, system and method for increasing the capacity of a storage device available to store user data
TWI506431B (en) Virtual memory device (vmd) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US9298534B2 (en) Memory system and constructing method of logical block
US10503606B2 (en) Data backup method, data recovery method and storage controller
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
JP6112595B2 (en) Erase management in memory systems
US20130238833A1 (en) Heuristics for programming data in a non-volatile memory
US20120317334A1 (en) Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
US20190087348A1 (en) Data backup method, data recovery method and storage controller
TWI451249B (en) Data merging method for non-volatile memory and controller and stoarge apparatus using the same
US20150170747A1 (en) Method and system for programming a multi-bit per cell non-volatile memory
KR20200001158A (en) Power supply device and electronic device including the same
US20150143185A1 (en) Data storage and variable length error correction information
CN105573681A (en) Method and system for establishing RAID in SSD
WO2009149059A1 (en) Ssd with a controller accelerator
US8352807B2 (en) Semiconductor memory device, host device and semiconductor memory system
TWI540428B (en) Data writing method, memory controller and memory storage apparatus
US9223688B2 (en) Data storing method and memory controller and memory storage device using the same
CN112673356A (en) Fast non-volatile storage recovery techniques
US10346040B2 (en) Data merging management method based on data type, memory storage device and memory control circuit unit
TWI521346B (en) Data merging method for non-volatile memory and controller and stoarge apparatus using the same
WO2014142427A1 (en) Storage system and data transmitting method thereof
KR20120138566A (en) Method for managing buffer in multi layer cell flash memory and apparatus thereof
US20200042440A1 (en) Memory management method and storage controller
US10452312B2 (en) Apparatus, system, and method to determine a demarcation voltage to use to read a non-volatile memory

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination